diff --git a/ENDSWWM.bin b/ENDSWWM.bin index 7dc097d97..9107e99a2 100644 Binary files a/ENDSWWM.bin and b/ENDSWWM.bin differ diff --git a/FuturePlans.md b/FuturePlans.md index eb36efda7..2bf99b417 100644 --- a/FuturePlans.md +++ b/FuturePlans.md @@ -2,106 +2,144 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add later ## 1.3 update *(The Second Batch)*: -More weapons, because we need 'em. In addition, all the "easy to implement" minigames, because the rest can wait until 1.5. +#### Currently in progress -* **DLC Weaponset:** - - [1] Itamex Reinforced Hammer *(UnSX 5)* - - HAHA DAB *(Gib 200 enemies with the Itamex Hammer)* - - [2] Plasma Blaster *(SWWM)* - - Blastin' Plasma *(Kill an enemy at full health with a Plasma Blaster charged shot 50 times)* - - [3] Puntzer Beta *(SWWM Iridium)* - - High Noon *(Land 6 killing shots in a single Puntzer Beta reload)* - - [4] Puntzer Gamma *(Ultra Suite 2)* - - You Gained Brouzouf *(Unload an entire mag in fuller auto with the Puntzer Gamma without missing a single shot)* - - [5] Sheen HMG *(SWWM Platinum Ep2)* - - Dakka *(Fire the Sheen HMG for one minute straight)* - - [6] Quadravol *(UnSX)* - - Gravely Roast *(Perform 50 bayonet combos with the Quadravol)* - - [7] Sparkster x3 *(UnSX 2)* - - A Fine Sparking *(Kill 30 enemies at once with a Sparkster Rifle combo shot)* - - [8] Mortal Rifle *(UnSX 2)* - - Railed Hard *(Shoot through 16 enemies with a single Mortal Rifle overpressure shot)* - - [9] Ray-Khom *(UnSX)* - - The Most Silent Takedown *(Kill 30 enemies with the Ray-Khom primary without alerting them)* - - John Romero's Curse *(Fry yourself by discharging an electric weapon in water)* - - [0] Rafan-Kos *(UnSX 4)* - - Blasting Ropes *(Melt a grand total of 1000 enemies with the Rafan-Kos)* -* **Minigames:** - - Tetris - - Breakout - - Snake - - Minesweeper - - Solitaire -* **Additional Voice Acting:** - - Extra lines for item pickups/usage - - Additional taunts and others - - Reactions to hurtfloor damage - - Caco petting - - Explosion lines - - Lead ball crit lines - - Buttslam lines -* **Additional Collectibles:** - - Saya's Mug +More weapons, because we need 'em. In addition, a bunch of cleanup in base weapons to avoid redundancy. + +* [ ] **DLC Weaponset:** + - [x] ➊ Itamex Reinforced Hammer *(UnSX 5)* + - [x] HAHA DAB *(Gib 300 enemies with the Itamex Hammer)* + - [ ] ➋ Plasma Blaster *(SWWM)* + - [ ] Blastin' Plasma *(Kill an enemy at full health with a Plasma Blaster charged shot 50 times)* + - [ ] ➌ Puntzer Beta *(SWWM Iridium)* + - [ ] High Noon *(Land 6 killing shots in a single Puntzer Beta reload)* + - [ ] ➍ Puntzer Gamma *(Ultra Suite 2)* + - [ ] You Gained Brouzouf *(Unload an entire mag in fuller auto with the Puntzer Gamma without missing a single shot)* + - [x] ➎ Sheen HMG *(SWWM Platinum Ep2)* + - [x] Dakka *(Fire the Sheen HMG at 700 RPM for 30 seconds straight)* + - [x] ➏ Quadravol *(UnSX)* + - [x] Gravely Roast *(Perform 200 bayonet combos with the Quadravol)* + - [ ] ➐ Sparkster x3 *(UnSX 2)* + - [ ] A Fine Sparking *(Kill 30 enemies at once with a Sparkster Rifle combo shot)* + - [ ] ➑ Ray-Khom *(UnSX)* + - [ ] The Most Silent Takedown *(Kill 40 enemies with the Ray-Khom primary without alerting them)* + - [ ] John Romero's Curse *(Fry yourself by discharging an electric weapon in water)* + - [x] ➒ Mortal Rifle *(UnSX 2)* + - [x] Railed Hard *(Kill 44 enemies with a single Mortal Rifle overpressure shot)* + - [ ] ➓ Rafan-Kos *(UnSX 4)* + - [ ] Super Laser Piss *(Melt a grand total of 5000 enemies with the Rafan-Kos)* +* [x] **Additional Voice Acting:** + - [x] Extra lines for item pickups/usage + - [x] Additional taunts and others + - [x] Caco petting + - [x] Explosion lines + - [x] Lead ball crit lines + - [x] Buttslam lines + - [x] Mirror interaction lines +* [x] **Additional Collectibles:** + - [x] Saya's Mug +* [x] ***"Trimming the fat"*:** + - [x] Remove all shell types except buckshot and golden shells + - [x] Spreadgun loads golden shells with altfire, like in IA3 + - [x] Wallbuster tops up buckshot one cylinder at a time until stopped + - [x] Remove all missile types except blazers, and rewrite the absolute mess of code the Hellblazer currently is + - [x] Remove FCB rounds, and simplify Silver Bullet JET inputs +* [x] **Additional WAD Compatibility:** + - [x] SIGIL 2 + - [x] Eviternity 2 + - [ ] Legacy of Rust +* [ ] **GZDoom 4.12+ Features:** + - [x] Lesser code cleanup/refactor *(new variables, functions, flags, etc.)* + - [ ] Visual Thinker migration where needed *(more lightweight sprite explosions and the like)* +* [ ] **UZDoom Features:** + - [x] Use uniforms in material shaders whenever possible *(reduces the need to compile multiple versions of the same shader)* + - [x] Implement self-obituaries for all weapons as well as other self-damaging player actions + - [ ] Use client-side thinkers/actors where needed for even lower overhead + - [ ] Better handling of cross-level traveling + - [ ] Make use of `unsafe(clearscope)` where needed to intentionally forgo scoping rules, for simplicity's sake + - [ ] Use `INTERPOLATESCALE` and `INTERPOLATEALPHA` where needed for certain effects + - [ ] Make use of other new virtuals such as `OnSelect`/`OnDeselect` in weapons, for more simplification + - [ ] Haptics support + - [ ] ... And much, much more ## 1.4 update *(Fine Refinements)*: -Re-animation of old FK models. Plus extra score incentives and achievements. +Re-animation of old FK models. Some more items. Plus extra score incentives and achievements. Finishing touches for the mod to be considered truly done, really. -* **Re-animate all base models with IK *(important for consistency)*** -* **Additional Score Bonuses:** - - Double-Cheeked *(Buttslam kill, 1.5x)* - - Mixup *(Different weapon between kills, +200, add +50 with each switch, 10 second cooldown)* - - Unseen *(Kill an enemy without a line of sight to yourself, +300)* - - Aerial *(Kill an enemy while in mid-air, +500)* - - YEET *(Kill a non-flying enemy while it's in the air, AFTER you sent it flying, +1000)* - - OVERWRITE *(Telefrag an enemy, overrides OVERKILL bonus, 4x)* - - Revenge *(Kill the enemy that killed you within 30 seconds of reviving, 3x)* - - Longshot *(Kill an enemy from over 2000 map units away, +600, add +100 for each extra 1000 map units)* - - Redirect *(Kill an enemy with another enemy's projectile, +900)* -* **Additional Achievements:** - - Spicy Tennis *(Parry a thrown Explodium Mag)* - - Pachinko Code *(Find the Secret Menu)* - - Double Succ *(Merge two Ynykron singularities)* - - The Ultimate Combo *(Hit a Ynykron singularity with a Ynykron beam)* - - Author Appeal *(Smooch a boss brain)* - - Power of Love *(Recover a total of 500 health by kissing the Kirin Plush)* - - Arsenal of Olden Times *(Find all classic UnSX weapons)*
+* [ ] **Re-animate all base models with IK *(important for consistency)*** + - [ ] Re-animate base weapon set and gestures *(won't be hard)* + - [ ] Re-animate player model *(this might be harder)* + - [ ] Ragekit overhaul *(becomes its own separate "melee weapon" as a gesture)* +* [ ] **Combo Collectible Animations *(as part of the above, really)*:** + - [ ] Saya + Demo + - [ ] Saya + Kirin + - [ ] Demo + Kirin +* [ ] **Additional Items:** + - [ ] Ballsy™ Bomb *(re-purposes lead ball)* + - [ ] Battle-Boi™ Deployable Sentry *(re-purposes saltshot)* +* [ ] **Additional Collectibles:** + - [ ] Blåhaj *("Dr. Shorky")* +* [ ] **Mothgirl summon for Lämp easter egg** + - [ ] A Mothly Contract *(Summon the White Lady)* + - [ ] Fluffy Moth *(Pet the White Lady 50 times)* + - [ ] Ara Ara *(Have the White Lady kill a total of 100 enemies)* +* [ ] **Additional Score Bonuses:** + - [ ] Double-Cheeked *(Buttslam kill, 1.5x)* + - [ ] Unseen *(Kill an enemy without a line of sight to yourself, +300)* + - [ ] Aerial *(Kill an enemy while in mid-air, +500)* + - [ ] YEET *(Kill a non-flying enemy while it's in the air, AFTER you sent it flying, +1000)* + - [ ] OVERWRITE *(Telefrag an enemy, overrides OVERKILL bonus, 4x)* + - [ ] Revenge *(Kill the enemy that killed you within 30 seconds of reviving, 3x)* + - [ ] Longshot *(Kill an enemy from over 2000 map units away, +600, add +100 for each extra 1000 map units)* + - [ ] Redirect *(Kill an enemy with another enemy's projectile, +900)* +* [ ] **Additional Achievements:** + - [ ] Pachinko Code *(Find the Secret Menu)* + - [ ] Double Succ *(Merge two Ynykron singularities)* + - [ ] The Ultimate Combo *(Hit a Ynykron singularity with a Ynykron beam)* + - [ ] Power of Love *(Recover a total of 500 health by kissing the Kirin Plush)* + - [ ] Arsenal of Olden Times *(Find all classic UnSX weapons)*
*(Quadravol, Biospark Carbine, Sparkster Rifle, Ray-Khom, Mortal Rifle, Ynykron, Rafan-Kos and K79-D)*
*(The K79-D was turned into the generic cube, so it still counts)* - - Know Thy Armaments *(Find all weapons)* - - Assortment of Thingamajigs *(Find all items)* - - Words Words Words *(Read 100 library entries)* - - Oops I Pressed It *(Turn the engine off)* - - Dangerous Ball Action *(Knock yourself out with your own lead ball)* - - Total Ball Destruction *(Kill the Icon of Sin with a lead ball)* - - Say The Line Vinny *(Spin attack with the Itamex Hammer for 60 seconds)* - - Whateverbuster *(Use the Wallbuster shuffle function 100 times)* - -## 1.5 update *(The Final Stage)*: - -All the hard stuff *(some of these aren't guaranteed)*. - -* **DLC Gameset:** - - **[Doom]** Demo Land Adventure *(platformer with shooty gameplay)* - - **[Heretic]** Interstellar Demolitionist *(a somewhat simple vertical SHMUP, kinda Touhou styled)* - - **[Hexen]** Demolition Quest *(a JRPG, kinda like early FF / BoF)* -* **Mothgirl summon for Lämp easter egg** - - Layers of White *(Summon the White Lady)* - - Fluffy Moth *(Pet the White Lady 50 times)* - - Ara Ara *(Have the White Lady kill a total of 100 enemies)* -* **Photo Mode** - - Dedicated poses - - Stickers -* ***(Maybe)* Virtual Training Map** - - Featuring Maidbot as assistant + - [ ] Words Words Words *(Read 50 library entries)* + - [ ] Oops I Pressed It *(Turn the engine off)* + - [ ] Dangerous Ball Action *(Land a lead ball crit on yourself)* + - [ ] Total Ball Destruction *(Deploy 30 Ballsy Bombs)* + - [ ] Say The Line Vinny *(Spin attack with the Itamex Hammer for 60 seconds)* + - [ ] Grand Slam *(Kill a boss using the Itamex Hammer altfire from at least 500 map units of height)* + - [ ] Burnination *(Kill 100 enemies with a single Hellblazer drum)* *[replaces I Am Become Death]* + - [ ] Engineer's Best Friend *(Score 1000 kills using sentries)* + - [ ] Demo-chan's Dubious Detour *(Beat all original episodes of Ultimate Doom)* + - [ ] Baphomet's Chosen *(Beat SIGIL)* + - [ ] Satanic Surprise *(Beat SIGIL 2)* + - [ ] Explosive Headache *(Beat Doom 2)* + - [ ] Rude Awakening *(Beat No Rest For The Living)* + - [ ] Two Birds With One Nuke *(Beat Legacy of Rust)* + - [ ] Doom Eviternal *(Beat all episodes of Eviternity)* + - [ ] Doom Sempiternal *(Beat all episodes of Eviternity 2)* + - [ ] Ding Dong The Wizard's Dead *(Beat the first three episodes of Heretic)* + - [ ] Additional Heresy *(Beat episodes four and five of Heretic)* + - [ ] Puzzle Extravaganza *(Beat Hexen)* + - [ ] The Plutonia of Hexen *(Beat Deathkings of the Dark Citadel)* +* [ ] **Additional Models *(for the sake of completeness)*:** + - [ ] Gibs *(incl. fun option for silly gibs)* + - [ ] Hexen keys + - [ ] Hexen puzzle items ## Unspecified Things that I'm unsure when will be added *(or if they can be added)*. -* **Customized cluster text stuff if that ever gets scriptified** -* **Official Sunder support *(when the WAD is complete)*** -* **Gib models *(May happen by 1.3, hopefully)*** +* [ ] **Fix handling of conveyor physics *(if scrollers ever get exposed to ZScript)*** +* [ ] **Per-weapon player models *(could be very time-consuming)*** +* [ ] **Model animations decoupled from actor states *(may be needed for the previous one, and would allow even more flexibility in player animation)*** +* [ ] **Fully custom cluster text screens, with special handling for many WADs *(if that ever gets scriptified)*** +* [ ] **Official Sunder support *(when the WAD is complete)*** + - [ ] Deaf to The Siren's Song *(Beat Sunder)* +* [ ] **Official HELLION support *(when it comes out)*** + - [ ] Romerotown Rampage *(Beat HELLION)* +* [ ] **Official Heretic + Hexen re-release support *(if heavy lifting is handled by the port)*** + - [ ] Absolutely Heretical *(Beat Faith Renewed)* + - [ ] Absolutely Washed *(Beat Vestiges of Grandeur)* ## Other Projects @@ -113,21 +151,27 @@ Add-ons and other related stuff. - Unique bosses - Some extra enemy variants - Coverage for all supported WADs *(oof)* +* **Standalone mini-games *(for learning Godot)*:** + - Demo Land Adventure *(shooty platformer)* + - Interstellar Demolitionist *(horizontal SHMUP)* + - Demolition Quest *(classic turn-based RPG)* + - Cutie Squad *(bullet heaven a la 20 Minutes Till Dawn)* * **Ibuki side mod *(Red Oni)*:** - A more *"mundane"* arsenal - - Featuring a very big girl with very big... Assets + - Featuring the big strong gal herself - Slightly more *"grounded"*, but still powerful - - See, I got tired of playing modded Fallout 4 so... + - See, I wanna stop playing modded Fallout 4, so... * **Saya side mod *(Red-Eyed Rampage)*:** - The first mod where you play as a mere squishy person - Even more fun weapons, including one made by a god! - Spellcards! - A more interesting take on *"infinite lives"* + - Ludicrous movement mechanics from the most agile gremlin ever - Featuring the Pancor Jackhammer *(lol)* * **Kirin side mod *(Red Star of Innocence)*:** - - Finally, you get to play as the precious femboy emperor + - Finally, you get to play as the precious emperor - Anarukon firearms? Anarukon firearms - - Designed entirely for Hexen's funky gameplay™ + - Designed primarily for Hexen's funky gameplay™ - Watch as our boy complains about *"puzzles"* - Some unique touches to spice things up - Basically a lite version of what you could expect in **UNDEATH** @@ -137,6 +181,25 @@ Add-ons and other related stuff. - Big focus on melee, as well as quick spellcasting - Featuring a summonable AI companion - Basically even more of what **UNDEATH** will feature +* ***"Hardcore Mode"* side mod *(Maid for Combat)*:** + - Demo-chan enters the fray in full military maidbot gear + - Things get quite a lot more challenging + - No jetpack, just standard humanoid mobility + - Simplified mechanics and controls + - Exploring a more conventional arsenal + - Demo can use **MAGIC**??? *(yes, they can)* +* **Dana side mod *(Tactical Gremlin Action)*:** + - A more tactical experience with this sassy merc + - Relatively the most grounded arsenal in all side mods + - A certain appeal to MRE enthusiasts will be present + - Just an extra idea for a mod, because I sure have a lot of mod ideas +* **Ellen side mod *(Little Mischief)*:** + - The glass cannon experience: Big guns, smol gal + - More fun times with the powers of the Yanikov bloodline + - There could be more side mods, as a treat +* **Doomguy side mod *(The Lone Soldier)*:** + - The idea is to do the classic Doom arsenal, but in my style + - I swear this is the last side mod * **Official Game *(VOID - The Dark Alliance)*:** - Retell the events of UnSX 2 *(but with the Demolitionist's participation)* - Basically give the Demolitionist their own standalone game diff --git a/LICENSE.code b/LICENSE.code index 4190e6460..e60fff95b 100644 --- a/LICENSE.code +++ b/LICENSE.code @@ -1,4 +1,4 @@ -Copyright (c) 2020-2022 Marisa Kirisame, UnSX Team +Copyright (c) 2020-2026 Mari the Deer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/LOCALIZATION.md b/LOCALIZATION.md index e0a6c903f..27fa5f805 100644 --- a/LOCALIZATION.md +++ b/LOCALIZATION.md @@ -2,7 +2,7 @@ There are two parts to this: -## Basic language files *(base/menu/mission/voice)* +## Basic language files *(base/dlg/menu/mission/voice)* Just make a copy and change the language code at the top *(the string between brackets)* to whatever language you're translating it to *(don't forget to also set it in the file extension too, for the sake of easier organization)*. @@ -18,7 +18,7 @@ Each entry must have only one of each TAG, TAB and REL section, and at least one ## Font support -Both fonts in use fully support Latin, Greek and Cyrillic scripts. +All common fonts fully support Latin, Greek and Cyrillic scripts. ## Language codes diff --git a/MAPPING.md b/MAPPING.md new file mode 100644 index 000000000..2b7c20468 --- /dev/null +++ b/MAPPING.md @@ -0,0 +1,161 @@ +# Notes for mappers + +There's some useful functions that can be called from ACS using ScriptCall, these are documented below. *(And, since they're static functions, they can be also called from ZScript as-is)*. + +### Toggling features + +- **Store:**
`ScriptCall("SWWMHandler","ToggleStore",#)`
Passing **0** disables the store, any other number will enable it again. +- **Reviving:**
`ScriptCall("SWWMHandler","ToggleRevive",#)`
Passing **0** disables reviving, any other number will enable it again. + +**Note:** These settings will persist between level changes. + +### Mission log + +- **Adding a new entry:**
`ScriptCall("SWWMMissionLog","AddLog","YOUR TEXT HERE")`
Prefixed LANGUAGE entries are supported. +- **Setting the date and time:**
`ScriptCall("SWWMMissionLog","SetClock",year,month,day,hour,minute,"timezone")`
Note that month and day start counting from zero, not one *(for programming-related reasons)*.
Please use abbreviations for timezones *(e.g.: EST, CET)*. + +### Dialogue sequences + +It is now possible to create entirely new dialogue sequences. I have yet to document how this stuff works, as well as adding a proper interface for mappers, but if you're curious, all of the code is in the `SWWMDialogues` class. + +### Custom boss healthbars + +Using `ScriptCall("SWWMHandler","AddBoss",tid,"YOUR TAG HERE")` you can assign a group of monsters that will be treated as a boss fight, with a collective healthbar. Note that each call to this function will clear any active boss encounters. Prefixed LANGUAGE entries can be set as a tag, and the mod can automatically look up an alternative with the *"_FUN"* suffix if *"Fun Tags"* are enabled, should there be one defined. + +An optional boolean argument can be passed that flags the boss fight as an *"end game"* boss. This serves little purpose other than allowing one specific achievement *("Kill an end-game boss with the Ynykron")* to work properly. + +The tag argument is used for the name above the healthbar, so you can give the boss a custom title *(e.g.: "Woobie, Destroyer of Worlds")*. Passing an empty string will use whatever tag the first monster in the list has. + +If the assigned boss is a *"BossBrain"* or a subclass of it, it will look for *"BossEye"* actors as well. This is so the healthbar appears only when the eye *"sees"* a player. Do note that if you have multiple boss eyes in the map *(does anyone do that???)*, this may break as it will always use the first one. + +### UDMF properties + +In order to make non-door sectors bustable, or to make some sectors non-bustable, you can give that sector a custom integer property named either BUSTABLE or UNBUSTABLE with a value of 1. Note that the latter takes priority over the former, so don't use both at once. + +### Placing items + +**DEMOLITIONIST** does not have standard DoomEdNums assigned to any of its items by default, in order to avoid potential collisions with other custom maps, so you will have to set them yourself. + +Copy the following to your MAPINFO: + +``` +DoomEdNums +{ + // Weapons + 29001 = "DeepImpact" + 29002 = "ExplodiumGun" + 29003 = "Spreadgun" + 29004 = "Wallbuster" + 29005 = "Eviscerator" + 29006 = "Hellblazer" + 29007 = "Sparkster" + 29008 = "SilverBullet" + 29009 = "CandyGun" + 29010 = "Ynykron" + // DLC Weapons + 29011 = "ItamexHammer" + 29012 = "PlasmaBlast" + 29013 = "PuntzerBeta" + 29014 = "PuntzerGamma" + 29015 = "HeavyMahSheenGun" + 29016 = "Quadravol" + 29017 = "ModernSparkster" + 29018 = "RayKhom" + 29019 = "MisterRifle" + 29020 = "RafanKos" + // Ammo + 29021 = "RedShell" + 29022 = "RedShell2" + 29023 = "RedShell4" + 29024 = "RedShell6" + 29025 = "GoldShell" + 29026 = "EvisceratorShell" + 29027 = "EvisceratorShell2" + 29028 = "EvisceratorShell3" + 29029 = "EvisceratorSixPack" + 29030 = "HellblazerMissiles" + 29031 = "HellblazerMissiles2" + 29032 = "HellblazerMissiles3" + 29033 = "HellblazerMissileMag" + 29034 = "SparkUnit" + 29035 = "SparkUnit2" + 29036 = "SilverBulletAmmo" + 29037 = "SilverBullets" + 29038 = "SilverBullets2" + 29039 = "SilverBullets3" + 29040 = "CandyGunAmmo" + 29041 = "CandyGunBullets" + 29042 = "CandyGunBullets2" + 29043 = "CandyGunBullets3" + 29044 = "YnykronAmmo" + // DLC Ammo + 29045 = "SMW05Ammo" + 29046 = "SMW05Ammo2" + 29047 = "SMW05Ammo3" + 29048 = "SMW05SmallAmmo" + 29049 = "SMW05BigAmmo" + 29050 = "SheenAmmo" + 29051 = "SheenAmmo2" + 29052 = "SheenAmmo3" + 29053 = "SheenSmallAmmo" + 29054 = "SheenBigAmmo" + 29055 = "QuadravolAmmo" + 29056 = "QuadravolAmmo2" + 29057 = "QuadravolAmmo3" + 29058 = "SparksterBAmmo" + 29059 = "SparksterBAmmo2" + 29060 = "SparksterBAmmo3" + 29061 = "SparksterRAmmo" + 29062 = "SparksterRAmmo2" + 29063 = "SparksterRAmmo3" + 29064 = "RayBolt" + 29065 = "RayBolt2" + 29066 = "RayBolt5" + 29067 = "RayAmmo" + 29068 = "MisterRound" + 29069 = "MisterRound2" + 29070 = "MisterRound3" + 29071 = "MisterRound5" + 29072 = "MisterAmmo" + 29073 = "MisterGAmmo" + 29074 = "UltimatePod" + 29075 = "UltimateAmmo" + // For Hexen + 29076 = "FabricatorTier1" + 29077 = "FabricatorTier2" + 29078 = "FabricatorTier3" + 29079 = "FabricatorTier4" + // Backpack + 29080 = "HammerspaceEmbiggener" + // Health + 29081 = "HealthNuggetItem" + 29082 = "TetraHealthItem" + 29083 = "CubeHealthItem" + 29084 = "RefresherItem" + // Armor + 29085 = "ArmorNuggetItem" + 29086 = "BlastSuitItem" + 29087 = "WarArmorItem" + // Powerups + 29088 = "GrilledCheeseSandwich" + 29089 = "GhostArtifact" + 29090 = "GravitySuppressor" + 29091 = "FuckingInvinciball" + 29092 = "Ragekit" + 29093 = "SWWMLamp" + 29094 = "EBarrier" + 29095 = "Mykradvo" + 29096 = "DivineSprite" + 29097 = "AngerySigil" + //29098 = "BallsyBomb" + //29099 = "SWWMSentryItem" +} +``` + +**Notes:** + - Embiggeners can be *"merged"* by placing them all in the same exact position. This works for groups of 2, 4, 6 and 8. + - Chanceboxes auto-spawn inside secret sectors as long as there's an unobstructed 32x32x60 space inside them. + - It's possible to manually spawn chanceboxes and even collectibles, but this will have to be done through ZScript in a level postprocessor, as internally they already have DoomEdNums assigned *(in the format 42069xx)*, but they're larger than 16 bits, so *(most?)* map editors can't use it. + - Items have no *"fallback sprites"*, so they're only visible as models in UDB. + - Items with *"shiny"* materials *(e.g. nuggets and health geodesics)* will look dull since UDB can't use their shaders. + - Some multi-skinned models may render incorrectly or have missing parts in UDB due to MODELDEF parsing quirks. This can be noticed from the warnings that will be logged on load. diff --git a/NETNOTCH.dat b/NETNOTCH.dat deleted file mode 100644 index cda7970ea..000000000 --- a/NETNOTCH.dat +++ /dev/null @@ -1 +0,0 @@ -ww \ No newline at end of file diff --git a/NOTCH.dat b/NOTCH.dat deleted file mode 100644 index da9281ae2..000000000 --- a/NOTCH.dat +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/PYWHEEL.txt b/PYWHEEL.txt deleted file mode 100644 index f8a79453a..000000000 --- a/PYWHEEL.txt +++ /dev/null @@ -1,24 +0,0 @@ -Demolitionist -{ - include "PusherWeapon"; - //include "ItamexHammer"; - include "DeepImpact"; - include "ExplodiumGun"; - //include "PlasmaBlast"; - include "Spreadgun"; - //include "PuntzerBeta"; - include "Wallbuster"; - //include "PuntzerGamma"; - include "Eviscerator"; - //include "HeavyMahSheenGun"; - include "Hellblazer"; - //include "Quadravol"; - include "Sparkster"; - //include "BlackfireIgniter"; - include "SilverBullet"; - //include "EMPCarbine"; - include "CandyGun"; - //include "RayKhom"; - include "Ynykron"; - //include "GrandLance"; -} diff --git a/README.md b/README.md index 0a3975544..2f807e040 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## The Introduction -**Codename: Demolitionist** is an all-original gameplay mod for **GZDoom** with a basis on rapid, fluid movement mechanics as well as very satisfying, punchy, strong weaponry. In it, you play as the titular **Demolitionist**, a robot with quite a personality, who's destined to save the day, as explosively as necessary. +**Codename: Demolitionist** is an all-original gameplay mod for **UZDoom** with a basis on rapid, fluid movement mechanics as well as very satisfying, punchy, strong weaponry. In it, you play as the titular **Demolitionist**, a robot with quite a personality, who's destined to save the day, as explosively as necessary. The mod's arsenal could be seen as a *"best of"* collection of custom weapons I've made for **Unreal Tournament**, plus many new things that didn't make the cut there. It is also effectively a reboot of the entire **Some Weird Weapons Mod *(SWWM)*** series, which unfortunately ended with the cancelled **SWWM Z**, this mod's direct predecessor *(hence this project originally starting its days under the name of **SWWM GZ**)*. @@ -12,36 +12,80 @@ It contains weapons and items remastered and revived from old projects such as t It also features ***A LOT*** of lore from the **UnSX multiverse**. I pretty much went wild here with all the stuff you can read, and I hope you enjoy immersing yourself into this vast world full of its many characters and their tales. -This is the first fully original mod I'm making since my work on **Doom Tournament** and **Doomreal**, and it is effectively built on the skills I've gained working on them, and some of their code also serves as a sort of foundation for it. +This is the first fully original mod I've made since my work on **Doom Tournament** and **Doomreal**, and it is effectively built on the skills I've gained working on them, and some of their code also serves as a sort of foundation for it. Hope you have fun exploding demon knees. — *Marisa* +--- + ## The Disclaimers -This mod features loud sounds and flashing lights, which may be harmful to certain people. There are options to dampen some of these effects, but it may still be unsafe nonetheless. +**This mod contains strong language and mature themes.** There is frequent swearing, along with discussions of war, economy, social rights and other political topics, AND various jokes that shamelessly lean into innuendo. Should any of these discomfort you, please avoid playing. -The UI design and color schemes of the mod may be problematic to people with color blindness. Certain elements such as healthbars and various numbers could potentially become hard to see under some conditions. GZDoom has sliders for controlling not just brightness, contrast and gamma, but also color saturation, which may be of some help. +**This mod features loud sounds and flashing lights**, which may be harmful to certain people. There are options to dampen some of these effects, but it may still be unsafe nonetheless. -The characters and stories featured in this mod are part of my own personal lore. Any similarities to real world individuals or events are entirely coincidental or, in some cases, loosely referential. +**The UI design and color schemes of the mod may be problematic to people with color blindness**. Certain elements such as healthbars and various numbers could potentially become hard to see under some conditions. UZDoom has sliders for controlling not just brightness, contrast and gamma, but also color saturation, which may be of some help. -The mod's overarching story and themes often tackle topics of world politics, economy, human rights and others. No work of fiction is free of politics, especially those that reflect the author's own beliefs. If you feel discomfort from political views opposite to your own, this may not be for you *(especially if you're right-leaning/conservative)*. +**The characters and stories featured in this mod are part of my own personal fiction**. Any similarities to real world individuals or events are entirely coincidental or, in some cases, loosely referential. -The mod contains certain sexual undertones *(or overtones in the story itself)*. Some parts could be considered explicit in nature, so please take this with a grain of salt. You've been warned: The mod *IS* horny *(and so am I, as its author)*. +--- -This mod is not compatible with **Brutal Doom** for obvious reasons. If you want to combine both, use the "Monsters Only" version of it, but do note that some glitches may still happen. +## Software and Hardware Requirements -This mod is, funny enough, readily compatible with **H-Doom**. You will not be able to engage in erotic acts with the demon girls, however, but they will be very vulnerable to kisses and headpats. +**Codename: Demolitionist** requires a version of **UZDoom** that currently doesn't exist or later. + +Recommended desktop hardware specs are as follows: + + - **CPU:** 3GHz or faster x86_64 processor *(core count irrelevant, single-threaded performance is what matters)*. + - **Intel:** Core i5-6400 or later. + - **AMD:** Ryzen 5 1500X or later. + - **GPU:** Vulkan 1.2 compatible GPU with at least 3GB of VRAM. + - **NVIDIA:** GTX 1060 or later. + - **AMD:** RX 480 or later. + - **Intel:** Iris Pro Graphics 580 or later. + - **RAM:** 4GB minimum (8GB if using integrated graphics). + - **Display:** A 720p or larger display should do the job. Please note that on Ultrawide displays the HUD will be constrained to a 16:9 area. + +Recommended settings are as follows: + + - **Renderer:** Hardware only, Vulkan. This uses 3D models, shaders, all that good stuff. + - **Textures:** Filtering set to "`None (Trilinear)`". Textures are meant to be chunky, but not *"crusty"*. + - **Post-processing:** + - Bloom is recommended at minimum, FXAA should be fine as well. + - Only enable SSAO if you have *REALLY* beefy hardware, it's expensive *(though it doesn't look that great)*. + - It is not advised to use the engine built-in tonemap filters, as they can cause glitches with some visual effects. + - For other post-processing, use [MariFX](https://git.sayachan.org/OrdinaryMagician/marifx_m) *(shameless self-plug)*. + - **Lighting:** + - Dynamic lights must be enabled, or you'll be missing out on a lot. + - Make sure dynamic lights are set to affect just about everything including particles. + - Dynamic light shadows are recommended to be enabled, at the highest possible quality and resolution. + - It's advised to use "`Classic`" sector lighting, as other modes may over-brighten weapon models. + - **Audio:** + - Increasing sound channels to their maximum limit *(or beyond, by changing `snd_channels` in the console)* is advised. + - HRTF is not recommended, it may result in excessive CPU usage and lower quality full-stereo SFX. + +For reference, I've been able to play this comfortably on a cheap Acer Aspire 3 laptop *(it has a Ryzen 7 5700U, not top of the line or anything)*. On the desktop I can even play through slaughterwads with it, even though most of my hardware is two or more generations old at the time of writing. + +Seriously, most of the people out there who complain about bad performance with the GZDoom family of ports are definitely doing something wrong. This isn't the same Doom from 1993, dude, the ZDoom family has been receiving incremental updates for more than 25 years now, needing newer and better hardware is just a fact of life when software complexity keeps increasing. + +In addition, this was verified to run smoothly on the Steam Deck. However, because the mod has been designed with keyboard and mouse in mind, it is not really possible to bind *ALL* controls beyond the bare essentials, *(this might be addressed in the future)*. + +*(Testers are welcome for narrowing down more precise hardware requirements, I can't afford extra testing hardware)* + +*(Once again, if you're going to be playing slaughtermaps with this, the recommended specs may not be enough, duh)* + +--- ## The Demolitionist ![](docimg/demolitionist_actionshot.png) -You are an **Akari Labs Demolitionist Bot**, one of the very first units, fresh off the factory. You are the company's greatest achievement in AI-controlled combat units, trained to efficiently use all sorts of weaponry, built with premium quality armor plating and robust but flexible joints. In order to show off your capabilities, your creator has decided to send you out to fight the demonic invasion brought upon by *"those big stinkin' idiots at the **UAC**"*. Your time has come to kick ass and blow 'em up. +You are an **Akari Labs Demolitionist Bot**, one of the very first units, fresh off the factory. You are the company's greatest achievement in autonomous combat units, trained to efficiently use all sorts of weaponry, built with premium quality armor plating and robust but flexible joints. In order to show off your capabilities, your creator has decided to send you out to fight the demonic invasion brought upon by *"those big stinkin' idiots at the **UAC**"*. Your time has come to kick ass and blow 'em up. Additional features: - - **Glowing color tags:** Located around various parts of your body, allows easy signaling and identification of the unit's presence in darker areas. + - **Glowing color tags:** Located around various parts of your body, allows easy signaling and identification of the unit's presence in darker areas. The colors can be customized to easily tell apart multiple units. - **Lucky Collar:** A little gift from your creator, to keep you safe. Reduces incoming damage by 75% when you're below 25% health. Plus an additional 50% reduction to any damage from your own weapons. - **High-Resonant Almasteel Plating:** Your chassis is built from one of the hardest alloys known across the universe. Thus, your body is practically indestructible, but not impervious to damage. All splash damage is reduced by 80%, and you only take half damage from crushers *(and may cause them to break, permanently)*. - **User Menu:** With the press of a button, open a dedicated menu to see all your stats in detail, info on carried items and weapons, check out a grand library of information on things you come across, and access the store for buying extra items with your score points. @@ -53,24 +97,26 @@ Additional features: - **Targetting Array:** Tracks nearby foes and provides basic information on their health. Compatible with **Omnisight™** mapping modules for tracking key items and nearby exits. Can also highlight nearby pickups by holding a dedicated button. - **Akari Labs CuteEmotion™ Display:** Equipped onto your visor to show a wide range of predefined facial expressions in order to convey simple emotions to others. - **Akari Labs LoudBoi™ Voicebox:** Allows you to **EMIT**. Easily moddable to allow alternate voicepack add-ons *(If someone were to make them)*. Your usual voice is quite robotty, due to a built-in filter. - - **On-demand Item Obtainers:** AKA "hands". You can pick up the mod's items from a distance by pressing Use *(this is mainly a workaround for any quirks that might come from them having modified collision)*. + - **On-demand Item Obtainers:** AKA "hands". You can pick up the mod's items from a distance by pressing Use *(Note that any trigger lines between you and the item still get activated, so you can't skip traps by doing this)*. Furthermore, if you hold Use for a while, you will also attract nearby dropped items towards you as well. -**Note:** Since you're a robutt you pretty much can swim indefinitely and are also immune to poison. +**Note:** Since you're a robutt you pretty much can't drown and are also immune to poison. + +--- ## The Weapons ![](docimg/demolitionist_wallbuster.png) The arsenal this mod brings to the table is composed mainly of stupidly overpowered weapons, which has been my specialty for years. -Some weapons may have extra functions attached to the **Reload** or **Zoom** buttons, so don't forget to bind those too. +Some weapons may have extra functions attached to the **Reload** or **Zoom** *(referred to as tertiary fire)* buttons, so don't forget to bind those too. -All weapons also have a quick melee attack using the **Weapon State 1** button, this is optional but may help to have it bound too. +All weapons also have a quick melee attack through an extra button. It's not strictly required, but can help a lot if enemies get too close, as most weapons are dangerous to use at point blank. If a weapon has no actions on either the reload or zoom buttons, it may be replaced with some special idle action, such as spinning or fiddling around with it. -For now, the following are all weapons available. More will be added afterwards, in future updates *(oh boy)*. +Keep in mind you can only have one of each weapon per slot *(with the exception of slot 1)*, so make sure you think things through with how to set up your loadout, 'cause you can't carry everything *(that is, unless you toggle the option to do so, which completely defeats this attempt at balance)*. -### Deep Impact (slot 1) ~ Replaces Fist, Staff, Hexen starting weapons +### Deep Impact *(slot 1)* ![](docimg/deepimpact.png) The signature **SWWM** melee weapon, an **Impact Hammer** on steroids. @@ -83,16 +129,20 @@ The signature **SWWM** melee weapon, an **Impact Hammer** on steroids. Equipped by default on spawned players. -### Pusher (slot 1) ~ Replaces Chainsaw, Gauntlets, Timon's Axe -![](docimg/pusher.png) +### Combat Hammer *(slot 1)* +![](docimg/hammer.png) -What was going to be the new melee weapon in **Ultra Suite 2**, but it never happened. A pimped up jackhammer. +A hefty sledgehammer, built to smash things with extreme prejudice. -**Primary fire:** Drill at whatever you're facing. +**Primary fire:** Swift strikes. -**Secondary fire:** Pull the drill bit back all the way in, then on button release push it back out with immense force. This will pretty much pierce a hole through anything, but if you miss there's a chance you'll lose grip on the weapon and it'll go flying until it hits something. +**Secondary fire:** Hold to lift it up, release to let it drop. -### Explodium Gun (slot 2) ~ Replaces Pistol, Elven Wand, Hexen starting weapons +**Tertiary Fire:** Spin the damn thing, hitting all targets around you. Note that you have to keep tapping the button whenever the speed starts to drop so you can keep going, for as long as you want *(be wary of motion sickness)*. + +Do note one important thing: This weapon benefits from the effects of the **Ragekit**. Yeah, have fun dealing *8X THE DAMAGE PLUS IMPACT SHOCKWAVES* swingin' it. + +### Explodium Gun *(slot 2)* ![](docimg/explodiumgun.png) Primary firearm, another staple of the series, but more volatile than ever. A pocket rocket, a trusty ol' gun that uses **Explodium**-filled bullets to wreak some havoc. @@ -107,54 +157,113 @@ Equipped by default on spawned players. Has infinite ammo. If you manage to get a second one, you can dual wield them, in which case secondary fire instead shoots your off-hand gun. -### Spreadgun (slot 3) ~ Replaces Shotgun, Ethereal Crossbow, Serpent Staff +#### Explodium Bullets +![](docimg/explodiumbullet.png) + +Custom-crafted .387 caliber rounds with a high-explosive charge. They hit real hard, especially when shooting foes head-on. As mentioned above, you do have an endless supply of them, so they're handy as a fallback to save on ammo for the stronger guns. + +#### Explodium Magazine +![](docimg/explodiumammo.png) + +Just an ordinary single-stack 7 round magazine... Or is it? As you may see, it's equipped with a latch that arms it as a shock-sensitive grenade, which will automatically cook off all loaded rounds in response to strong impact or crushing force. + +Keep in mind that it's also possible to use these by themselves, regardless of weapon held, through the ***"Quick Grenade"*** button. If thrown in this way, however, they will not bounce, but you do gain the ability to, if you are close to a wall, attach them to it, allowing you to set up explosive traps. + +### Plasma Blaster *(slot 2)* +##### ⚠️ NOT YET IMPLEMENTED ⚠️ +![](docimg/plasmablast.png) + +Energy sidearm, for those times when you just want to let 'em burn. What it lacks in explosive potential compared to the **Explodium Gun**, it compensates by packing one hell of a scorching bite on direct hits. + +**Primary fire:** Let loose some pew-pews. The projectiles aren't very fast, nor get very far. + +**Secondary fire:** Hold firmly with both hands and charge up a potent shot. This one is a lot more lethal, as you may imagine, and consumes all loaded ammo. + +**Reload:** Swaps the loaded plasma cell for a fresher one, as you'd expect. + +Likewise, also has infinite ammo, so go wild. And yeah, it can also be dual wielded, working the same way. + +#### Plasma Cell +![](docimg/plasmaammo.png) + +Yet another ammo type you have unlimited free access to. **Nokorokinylum** is one of the cheapest and most readily available fusion fuels in existence... At least outside of the Milky Way. Each cell has enough material for 8 shots, same exact capacity as the Explodium Gun with one round in the chamber included, in fact. + +### Spreadgun *(slot 3)* ![](docimg/spreadgun.png) Coming from the **Doom** modding side of things, this gun really packs a punch, but is kind of unwieldy to use. **Primary fire:** Fires, duh. Depending on the loaded ammo the effects may vary. -**Secondary fire:** On tap, switches ammo type for the next shot to be loaded. On hold, also tap primary fire to unload the current shell, but leave the gun empty. +**Secondary fire:** Loads a special golden shell *(if you've got any)*. -**Reload:** Unload the current shell and load a new one. Unspent shells are re-added to their respective ammo type pool (or dropped if you can't hold more). +**Reload:** Reloads the gun, obviously. -The **Spreadgun** uses 6 gauge ammunition, apparently just for the sake of making it feel more powerful due to the increased recoil. +The ***"Rhino Stopper"* Spreadgun** uses 6 gauge ammunition, apparently just for the sake of making it feel more powerful due to the increased recoil. A single shot from this thing is about as powerful as your typical *"super shotgun"*, enough to topple one **Pinky** demon that gets too close for comfort. -### 6ga shells ~ Replaces Clip / Shells, Wand Crystal / Ethereal Arrows -![](docimg/shells.png) - -Available in the following types, with varying chances of appearing depending -on replaced item, may also come in bundles: - - - **Standard buckshot (red):** Lots of tiny pellets ready to tear enemies to shreds. Most common. - - **Slug (green):** Concentrated damage in a single, large projectile. Common. - - **Dragon's breath (white):** Fiery pain in one shot for everything in front of you. Not very effective underwater, but still deals some small heat damage. Somewhat rare. - - **Kinylum saltshot (blue):** Highly volatile shards of **Kinylum** that leave behind a trail of burning plasma. Rare. - - **Telebrium flechette (black):** A discharge of puncturing darts tipped with pure Telebrium, highly corrosive, effects may spread through emitted fumes. Very rare. - - ***"The ball"* (purple):** A big lead ball, 'nuff said. Somewhat rare. - - **Golden shell (self-explanatory color):** An extremely rare, but very valuable type. Fires a sabot packed with a very dense, high-grade **Explodium** charge, the shell also contains some gold glitter, but it's just for show. Clearly designed by someone completely insane, and definitely guaranteed to not fail catastrophically and blow up your gun, your hands, your arms, and the rest of your upper body. Unlike the others, this one is only available as a rare drop from powerful monsters (over 1000HP) and bosses. They may also appear in **Chanceboxes**. - -### Wallbuster (slot 4) ~ Replaces SSG, Ethereal Crossbow, Frost Shards +### Wallbuster *(slot 4)* ![](docimg/wallbuster.png) -A ludicrously overkill weapon, courtesy of the always-overkill **Blackmann Arms**. Sporting a pentagonal array of 5-barrel cylinders, for a grand total of 25 barrels. Everything in front of you is pretty much dead. Cannot use dragon's breath, flechettes or golden shells. +A ludicrously overkill weapon, courtesy of the always-overkill **Blackmann Arms**. Sporting a pentagonal array of 5-barrel cylinders, for a grand total of 25 barrels. Everything in front of you is pretty much dead. **Primary fire:** Shoot one barrel at a time. **Secondary fire:** Shoot five barrels at once, watch out for the recoil. -**Tertiary fire (Zoom):** Fire all barrels at the same time, but this time REALLY watch out for the recoil. +**Tertiary fire:** Fire all barrels at the same time, but this time REALLY watch out for the recoil. -**Reload:** Reload (obviously). The process is very complicated so I'll explain it better as a list: +**Reload:** Reload *(obviously)*. One cylinder at a time, until you either run out of ammo, or tap the reload button again. - - A menu will open after the side lever is pulled. Here you can queue ammo to load up. Controls are displayed at all times. - - In single player, the game is paused when you're in the queueing process, so you can take your time, but in coop you better have someone to cover you while you micromanage this beast. - - While loading shells, you can cancel by holding the reload button. - - For a skilled combat robot like you, reloading this should be very fast. 10 seconds tops, for all 25 barrels. +While it has the same potency per shot as the **Spreadgun**, the longer barrels do offer the advantage of a tighter cone of fire, so it's more useful at longer distances. Should you make use of its multi-fire functionality, you will soon learn why it bears the name of ***"Wallbuster"***. -### Eviscerator (slot 5) ~ Replaces Chaingun, Dragon Claw, Quietus (hilt) +#### 6ga Shells +![](docimg/shells.png) + +A potent dosage of #00 buckshot, ready to tear enemies to shreds, comes packed into each of these. Shells will pop up by themselves or in bunches of various sizes. They're perhaps one of the most common ammo types you may encounter. + +#### Golden Shell +![](docimg/goldenshell.png) + +Be on the lookout for this shiny and sparkly special kind of shell, **Spreadgun**-exclusive, that rarely drops from certain foes *(bosses and/or monsters with over 1000HP)*. Loaded into your gun, it will fire a sabot packed with a very dense, high-grade **Explodium** charge, as well as some gold glitter *(which is just for show)*. + +Golden shells are clearly designed by someone completely insane, and definitely guaranteed to not fail catastrophically and blow up your gun, your hands, your arms, and the rest of your upper body. + +### Puntzer Beta *(slot 3)* +##### ⚠️ NOT YET IMPLEMENTED ⚠️ +![](docimg/puntzerbeta.png) + +A fine six-shooter for the gunslinger at heart. Particularly, it's a semi-auto revolver, and one that in addition is top-break as well. Ain't that a rarity... + +**Primary fire:** It do the shoot, at moderate speed. + +**Secondary fire:** Prime the six-shot mode, after which a tap of primary fire will make the gun unload all six barrels in quick succession. + +**Reload:** You can guess what it does. Speedloaders aren't needed as rounds can be quickly replaced from **Hammerspace**. + +The Beta boasts pinpoint accuracy at any distance, mainly because Doom maps never get large enough that you'd need to account for the Coriolis force on these rapidly spinning bullets. + +### Puntzer Gamma *(slot 4)* +##### ⚠️ NOT YET IMPLEMENTED ⚠️ +![](docimg/puntzergamma.png) + +Just your friendly neighborhood SMG, with a somewhat unconventional feeding system. + +**Primary fire:** It shoots, what else. Note that you'll gradually lose accuracy the longer you keep firing. The gun fires faster than your body can counter its recoil. + +**Secondary fire:** Toggles between full auto and... Fuller auto? + +**Reload:** Ah yes, it reloads. + +As its ammunition is interchangeable with the **Beta**, you won't be missing much *(other than the SPEED and the mag capacity)* if you decide to keep a **Wallbuster** in this slot. + +#### SMW.05 Rounds +![](docimg/smwammo.png) + +These 6.9mm ***(nice)*** corkscrew-shaped bullets have some fine drilling power, being capable of piercing nicely through many things, including walls. You may find them in various forms, sometimes as speedloaders for the **Beta**, and other times as magazines for the **Gamma**. + +### Eviscerator *(slot 5)* ![](docimg/eviscerator.png) The pleasure of shrapnel spamming. Make hot steaming pain rain upon your enemies. @@ -163,16 +272,36 @@ The pleasure of shrapnel spamming. Make hot steaming pain rain upon your enemies **Secondary fire:** Launch the entire shell. Hot lead will be deployed wherever it hits. -**Tertiary fire (Zoom):** Toggle between wide spread *(default)* and tight spread for primary. With a tighter spread, chunks will be closer together and reach higher speeds, but bounce more erratically. In addition, lobbed shells will also go much farther. +**Tertiary fire:** Toggle between wide spread *(default)* and tight spread for primary. With a tighter spread, chunks will be closer together and reach higher speeds, but bounce more erratically. In addition, lobbed shells will also go much farther. -This weapon made the **Unreal Engine** cry, so **GZDoom** may suffer a lot too. +This weapon made the **Unreal Engine** cry, so **UZDoom** may suffer a lot too. -### Eviscerator shells ~ Replaces Ammo Box, Claw Orb +#### Eviscerator Shells ![](docimg/evisceratorammo.png) -Little bundles of fun (in hot lead form) found either as single units *(sometimes bunched up)* or six-packs. There is no explanation for why they have an **OwO** face scribbled on. +Little bundles of fun *(in hot lead form)* found either as single units, in duos, or in trios. There is no explanation for why they have an **OwO** face scribbled on. -### Hellblazer (slot 6) ~ Replaces Rocket Launcher, Phoenix Rod, Hammer of Retribution +### Sheen HMG *(slot 5)* +![](docimg/sheenhmg.png) + +**HEAVY MAH-SHEEN GUN!** The **Sheen** is one big bad son of a gun, letting you unload lead uninterrupted thanks to also feeding directly from **Hammerspace**. The weapon can operate at three speeds: 300RPM *(slow)*, 700RPM *(the default)* and 2100RPM *(oh my)*. + +**Primary fire:** It shoots, obviously. Keep in mind there is no *"spin up"* or *"spin down"*, so firing is as immediate as it gets. + +**Secondary fire:** Increase the firing speed. + +**Tertiary fire:** Decrease the firing speed. + +As you may guess, there is heat buildup to worry about with this thing. Despite its efficient liquid cooling, there's nothing that can be done against the sheer density of dakka you can deliver. At the maximum of 2100 RPM, the heat buildup can push the weapon into temporary lockdown until it fully cools off. While the added heat may make your shots more damaging, it will also negatively affect accuracy. + +#### 14.5mmMT Bullets +![](docimg/sheenammo.png) + +Things get intense when even your bullets have to be built with special, exotic materials made to resist extreme heat. You can find 'em in small handfuls, packs of ten, or crates containing a whopping 50 rounds each. + +By the way, they're not tracer rounds, they just get so hot they literally set the air on fire. Ain't that metal... + +### Hellblazer *(slot 6)* ![](docimg/hellblazer.png) Another signature weapon of the **SWWM** series. This time in its third and far more improved revision. @@ -181,23 +310,38 @@ Another signature weapon of the **SWWM** series. This time in its third and far **Secondary fire:** Lob the rocket as a grenade that will bounce around. Hold to load up to 2 additional grenades, then release for burst fire. You can tap the primary fire button at any time to cancel the preload and go straight to holding. -**Tertiary fire (Zoom):** Change the ammo type, there are four options *(see ammo section below)*. While holding rockets, tap to select seek targets. +**Tertiary fire:** While holding rockets, tap to select seek targets. Otherwise, doesn't do much at all. **Reload:** Obviously does what you'd expect. If you're holding rockets and have targets locked on, tap to clear. This thing is more explosive than it looks, so if you're reading this, Icarus, ***DO NOT*** use it at close range. -### Hellblazers ~ Replaces Rockets, Flame Orb +#### Blazer Missiles ![](docimg/hellblazerammo.png) -Ammo for the **Hellblazer**, found either as single units or packs. There are four types: +Ammo for the **Hellblazer**, found either as single units or in bunches. The **"Blazer"** 25mm micro-missile packs one hell of a punch with its highly explosive charge, with not just one mighty immediate blast, but also a short-lived lingering aura of big blazing hurt around itself too. - - ***"Blazer"* missiles:** The standard ammunition, highly explosive. - - ***"Crackshot"* cluster bombs:** All sorts of little bits that fly around after the initial blast. - - ***"Ravager"* incendiary bombs:** Wide range, the flames will engulf pretty much everything around itself. - - ***"Slayer"* warheads:** Frickin' nukes, you better keep your distance, because they are ***STRONG***. +### Quadravol *(slot 6)* +![](docimg/quadravol.png) -### Biospark Carbine (slot 7) ~ Replaces Plasma Rifle, Hellstaff, Firestorm +One mighty relic of the beginnings of **UnSX**. This beefy handcannon spews potent fireballs that burn stuff up good, while also blasting it all into the air. And what's even better, it's lever-action! *(oh yeah~)* + +**Primary fire:** Shoot 'em. + +**Secondary fire:** Pumps more rounds into the gun's crucible, for extra potency *(up to 5x)*. Do note that the shot not only will become stronger, but also more unstable. If at max charge, you can hold one more live round in the chamber to further boost the resulting damage. + +**Tertiary fire:** Switch the weapon stance, from two-handing to one-handing. You know, so you can give it a full-on spin like in the action movies. + +**Reload:** Loads more rounds in reserve, until it's full, there's no more ammo, or you tap reload again. + +When using the weapon's quick melee, as the four pile bunkers plunge themselves into an enemy, if at that very instant you also pull the trigger, you'll release a potent point-blank blast for added damage and knockback. Smite those fools, smite them good. + +#### Quadravol Cells +![](docimg/quadammo.png) + +Each of these lil' things contains a mixture of high-incendiary exotic elements. The stuff's so powerful it even burns underwater, somehow. + +### Biospark Carbine *(slot 7)* ![](docimg/biospark.png) A relic from the olden days of **UnSX**. A potent energy weapon that uses what's best described as *"sentient lightning"*. @@ -206,49 +350,91 @@ A relic from the olden days of **UnSX**. A potent energy weapon that uses what's **Secondary fire:** Concentrated beam shot. A very old thing from the original **UnSX I** incarnation. Can penetrate multiple solid targets. Can also be held for rapid fire. -**Tertiary fire (Zoom):** Deploy a capsule that releases a massive sphere of pure energy, which will track down any hostile targets. It will rip through everything and even bounce off surfaces, but it has a rather limited lifespan. +**Tertiary fire:** Deploy a capsule that releases a massive sphere of pure energy, which will track down any hostile targets. It will rip through everything and even bounce off surfaces, but it has a rather limited lifespan. -**Reload:** If all energy is depleted, loads in another charge, otherwise, if there's one Biospark Unit already connected, a second one will be attached, allowing for 8 shots instead of 4, at the cost of stability and potential self-damage. +**Reload:** If all energy is depleted, loads in another charge, otherwise, if there's one already connected, a second will be attached, allowing for 8 shots instead of 4, at the cost of stability and potential self-damage. If the beam hits either of the other energy blobs, they will detonate with highly amplified damage and range. Note that it is possible to alternate between primary and secondary modes while rapid firing, making this combo just a matter of precise timing. -### Biospark Unit ~ Replaces Cells, Runes +#### Biospark Unit ![](docimg/biosparkammo.png) -Ammunition for the Biospark Carbine. They contain a lot of energy, despite the small size. +Contains a lot of energy, despite the small size. -### Silver Bullet JET (slot 8) ~ Replaces Plasma Rifle, Hellstaff, Arc of Death +### Sparkster Rifle *(slot 7)* +##### ⚠️ NOT YET IMPLEMENTED ⚠️ +![](docimg/sparkster.png) + +You've seen the granddaddy, now meet its young and promising descendant. The **Sparkster** is yet another signature weapon of the **UnSX** series, and you will not be disappointed with the mighty power you'll wield in your hands. + +**Primary fire:** **Kinylum** plasma shots. Stable, steady, and quite explosive. + +**Secondary fire:** **Nokron** plasma shots. A chaotic, scorching cloud of burnination. + +**Primary fire + Secondary fire:** Holding both buttons at once will mix both compounds to produce a lethal orb of violet plasma. + +**Primary reload:** Load in more **Kinylum** cells, as usual, until topped up, no more ammo, or a second tap of the button. + +**Secondary reload:** Ditto for **Nokron** cells. + +Yes, this portable plasma artillery has two ammo types, handled separately. And yes also, they can be combined. Ain't that neat. + +#### Kinylum Cells +![](docimg/sparksterammoblue.png) + +Neatly packaged single-shot charges of **Kinylum**. Recognizable by its cyan glow and fresh mint scent. + +#### Nokron Cells +![](docimg/sparksterammored.png) + +Neatly packaged single-shot charges of **Nokron**. Recognizable by its magenta glow and delicious cheese aroma. + +### Silver Bullet JET *(slot 8)* ![](docimg/silverbullet.png) The definitive model of **Blackmann Arms**'s legendary **Silver Bullet** series. A lighter *(43kg)*, lower caliber *(1.150)* variant of the former 1.350 **BEHEMOTH** model, discontinued due to being seen as too impractical *(it was full auto, no, really)*. -**Primary fire:** Shoot the bullet. A second press chambers another round. +**Primary fire:** Shoot the bullet. -**Secondary fire:** On tap, picks the ammo for the next reload. On hold, also tap primary to manually cock *(in case you want to eject unfired rounds)*. +**Secondary fire:** Cocks the gun, loading a new round if available. Note that you can eject live rounds in the process *(if you somehow want to)*. -**Reload:** Reload *(what else is new)* or switch ammo types. +**Tertiary fire:** Press and hold to enter scoped mode. Release to pick the desired zoom level *(can go up to 16x)*. Press again to exit scoped mode. -**Zoom:** Press and hold to enter scoped mode. Release to pick the desired zoom level *(can go up to 16x)*. Press again to exit scoped mode. +**Reload:** Reload *(what else is new)*. This weapon is generally not recommended for human use outside of power armor. Good thing you're not a human, then. Still, the recoil compensator jet engines can potentially deal damage to yourself if you don't have any armor, so be careful. Note that going prone *(crouching)* will automatically disable the recoil compensators, increasing the potential damage of the bullets, but also reducing your mobility. -### 1.150 XSB Bullets ~ Replaces Cells, Runes +#### 1.150 XSB Bullets ![](docimg/xsbbullet.png) -The 1.150 caliber **eXplosive Super Burst** bullets employ an **Explodium** shaped charge to be shot with enough energy to reach a relatively high velocity, allowing their massive bulk to penetrate several targets including walls. They are hard to come by, so spawns are scarce, and they won't even pop up in **Hammerspace Embiggeners**, and in Hexen only on the highest tier **Fabricators**. +The 1.150 caliber **eXplosive Super Burst** bullets employ an **Explodium** shaped charge to be shot with enough energy to reach a relatively high velocity, allowing their massive bulk to penetrate several targets including walls. -In the world, they may pop up as spare bullets or full mags. Each five bullets picked up will be automatically converted to a full mag in your inventory. +In the world, they may pop up as spare bullets. Each five bullets picked up will be automatically converted to a full mag in your inventory. They are hard to come by, so expect to be finding singular rounds more often than not. -### 1.150 FCB Bullets ~ Replaces Cells, Runes -![](docimg/fcbbullet.png) +### Ray-Khom *(slot 8)* +##### ⚠️ NOT YET IMPLEMENTED ⚠️ +![](docimg/raykhom.png) -The more directly explosive counterpart of the **XSB**. Personally baptized by **Blackmann Arms** CEO **Hermann E. Ischer** himself as ***"Fat Chode Bombs"***, these **High-Explosive Squash Head** rounds will blast through walls on impact, hitting anything standing behind them, and in some cases, tearing down the wall itself too. +So, you are about to witness a weapon of legend from the ancient **UnSX** arsenal. This is a very, VERY big gun you've got here. Naturally, it serves as a staple of the **Xekkian** armies, being the standard-issue sidearm *(yes, sidearm)* of many soldiers and mercenaries alike. ~~It's also the most silent way to eliminate **Manderley**.~~ -Same spawn conditions as the standard bullets. +**Primary fire:** Silent plasma grenade shot. Goes quite far, and blows up good. Your enemies won't even hear it coming. -### Candy Gun (slot 9) ~ Replaces BFG9000, Firemace, Bloodscourge (stub) +**Secondary fire:** Short-range arc lightning discharge. Stuns hard, with deadly potential on lesser targets. Make sure you're not standing in water when letting loose *(it's common sense)*. Also keep in mind that using this temporarily disables primary fire, as the weapon needs to fully recharge all capacitors. + +**Tertiary fire:** Self-adjusting scope with trajectory prediction. Very handy stuff. + +**Reload:** Ammo reloading. + +By the way, those sharp claws aren't just for show, they hurt real bad when you use quick melee with this thing. + +#### Ray-Khom Bolts +![](docimg/raybolt.png) + +40mm magnetized bolts with a plasma payload. They're basically just grenades, really. Fairly uncommon, but very rewarding to find. + +### Candy Gun *(slot 9)* ![](docimg/candygun.png) Coming from an old unreleased weapon mini-mod, the **Candy Gun** is like an **Explodium Gun** on steroids *(or more specifically, on strawberry candy and pop rocks)*. @@ -261,14 +447,39 @@ Coming from an old unreleased weapon mini-mod, the **Candy Gun** is like an **Ex Holding secondary fire and primary fire *(in that order)* will throw the weapon itself, armed and ready to explode if it hits anyone or anything. The blast area for this is pretty ridiculous. You can hold spare guns, by the way *(up to four)*. -### Candy Gun Bullets ~ Replaces Cells, Runes +##### Candy Gun Bullets ![](docimg/candybullet.png) The ammo for this beast. Mags don't pop up on **Embiggeners**, and in Hexen only on the highest tier **Fabricators**. -In the world, you may find either spare bullets or full mags. Each seven bullets picked up will be automatically converted to a full mag in your inventory. +In the world, you may only find spare rounds, in small amounts. Each seven bullets picked up will be automatically converted to a full mag in your inventory. -### Ynykron Artifact (slot 0) ~ Replaces BFG9000, Firemace, Wraithverge (arc) +### Mortal Rifle *(slot 9)* +![](docimg/mortalrifle.png) + +An experiment in creating the most definitive battle rifle for all armies across the universe. This thing came out of the **University of Nos-Kora**, so you can expect some things won't make a whole lot of sense with it. + +**Primary fire:** The weapon is shot. + +**Secondary fire:** Fire the under-barrel grenade. Or load one if empty. + +**Tertiary fire:** Switch fire modes. There's the usual semi-auto, as well as... A shotgun? A stream of micro-bullets?? And a railgun??? Yeah, I don't even. + +**Reload:** At least this does what you'd expect. + +Don't rely too much on this thing, the ammo tends to be scarce, and it might potentially be cursed. + +#### Mortal Bullets +![](docimg/mrbullet.png) + +These 4.44x44.4mm, square-shaped telescoped rounds have a lot of *"fours"* in them for sure. You will find 'em as-is, sometimes in bundles. + +#### Mortal Grenades +![](docimg/mrgrenade.png) + +44.4mm grenades that burst into target-seeking micro-bombs. That sure is a thing, yes. They're even more rare than the standard ammo, however. + +### Ynykron Artifact *(slot 0)* ![](docimg/ynykron.png) Popularly known as the ***"Death Cannon"***. One of the four ultimate weapons commissioned by the mad dictator god **Nedoshiaan**, before his defeat... or at least, a very detailed replica of it. @@ -283,13 +494,34 @@ Unlike its previous incarnation in **SWWM Platinum**, this one doesn't have such Due to its rarity, you can't buy it from the store, so you gotta find one *(and only one)* in the field. -### Crystal Box ~ Replaces Cell Pack, Greater Rune +#### Crystal Box ![](docimg/ynykronammo.png) -Additional ammo charge for the **Ynykron Artifact**. Contains a rod of polarized **Puronokorokinylum** crystal, highly volatile when heated and stimulated with concentrated light. +Additional ammo charge for the **Ynykron Artifact**. Contains a rod of polarized **Puronokorokinylum** crystal *(pictured next to the box, not in-game)*, highly volatile when heated and stimulated with focused light. These spawn VERY rarely and, like the weapon that uses them, you can't buy them either. It's also possible to find them in **Chanceboxes**, if you're lucky. +### Rafan-Kos *(slot 0)* +##### ⚠️ NOT YET IMPLEMENTED ⚠️ +![](docimg/rafankos.png) + +Yet another very legendary **UnSX** weapon of old that never saw the light of day... Until today. The name of this peculiar artifact translates to **Ultimate Weapon** in the language of the **Nukuri**. As you may expect, it's meant to be the last word in weaponry, that's why it shares the same slot as the other big fuck-off gun. + +**Primary fire:** A very big, very thick, very DEADLY beam of plasma. + +**Secondary fire:** Scattered beams, pure chaos, everything they touch just melts. + +**Reload:** Reload reloads, very reloadingly. + +You ever wanted a nice and concise way to tell someone to fuck off? Just use this. But something like this can't be bought in stores, oh no, it's so niche that only ONE of it exists in the whole world. Try to find it, have fun. + +#### Rafan-Kos Pods +![](docimg/rafankospod.png) + +Don't eat them. Each of these contains star stuff, basically. They're just as rare as you might expect. If you're lucky, you'll see a full mag of four somewhere, maybe. + +--- + ## The Pickups ![](docimg/demolitionist_items.png) @@ -297,41 +529,41 @@ Of course, one cannot go without little helpers along their journey. Healing items restore health *(duh)*, armor items do exactly what you'd expect, and then there's all the various powerups that grant you useful abilities. -All of these can be carried in your inventory indefinitely before use, except in deathmatch, where they're activated immediately. Healing items are automatically used whenever possible *(with the lowest tier healing items taking priority)*. Armor is immediately carried if you don't have any of that type on you, or if your existing armor drains and you have a spare. Most powerups can be toggled, unless specified otherwise. +All of these can be carried in your inventory indefinitely before use, except in deathmatch, where they're activated immediately. Healing items are automatically used whenever possible *(with the lowest tier healing items taking priority)*. Armor is immediately carried if you don't have any of that type on you, or if your existing armor drains and you have a spare. Powerups stack their durations when multiple copies are activated *(which is pretty cool TBH)*. -### Health Nugget ~ Replaces Health Bonus, Timebomb of the Ancients, Disc of Repulsion, Flechette, Mystic Ambit Incant +### Health Nugget ![](docimg/nuggethealth.png) -+1 health boost, up to a cap of 200 points. Comes in bundles when replacing things other than health bonuses. ++2 health boost, up to a cap of 200 points. Comes in bundles when replacing things other than health bonuses. -### Health Tetrahedron ~ Replaces Stimpack, Crystal Vial +### Health Tetrahedron ![](docimg/tetrahealth.png) +10 health boost, up to a cap of 100 points. -### Health Cube ~ Replaces Medikit, Quartz Flask +### Health Cube ![](docimg/cubehealth.png) +20 health boost, up to a cap of 100 points. -### Refresher ~ Replaces Soulsphere, Mystic Urn +### Refresher ![](docimg/refresher.png) This artifact provides a +100 health boost plus a regeneration effect that heals +10 every 5 seconds, for up to 50 seconds, thus it doubles as a powerup. Its overhealing effects cap at 500 points *(including the regen)*. Once its effects wear out, however, your excess health will gradually settle towards the typical 200 point cap. Unlike other health items, the **Refresher** auto-activates only if you're about to die. This usually prevents such a grim outcome... unless the damage is too high to counter. -### Armor Nugget ~ Replaces Armor Bonus, Timebomb of the Ancients, Disc of Repulsion, Flechette, Mystic Ambit Incant +### Armor Nugget ![](docimg/nuggetarmor.png) -Cumulative armor items that can increase resistance to all damage by as much as you can find. Each nugget adds 1% to the total. Above 100%, damage gets turned into additional health *(up to the standard 100% cap)*. The upper cap for these is 200%. Comes in bundles when replacing things other than armor bonuses. +Cumulative armor items that can increase resistance to all damage by as much as you can find. Each nugget adds 5% to the total. Above 100%, damage gets turned into additional health *(up to the standard 100% cap)*. The upper cap for these is 200%. Comes in bundles when replacing things other than armor bonuses. -### Blast Suit ~ Replaces Green Armor, Silver Shield, Platinum Helm, Amulet of Warding +### Blast Suit ![](docimg/blastsuit.png) The blast suit is a nice little light armor which provides a 30% reduction to damage and an additional 50% to splash damage. Can handle a total of 150 damage points before breaking. -### War Armor ~ Replaces Blue Armor, Enchanted Shield, Mesh Armor, Falcon Shield +### War Armor ![](docimg/wararmor.png) Decent armor, protects very well against all damage. Reduction factors are as follows: @@ -342,12 +574,12 @@ Decent armor, protects very well against all damage. Reduction factors are as fo Can eat up a total of 250 damage points before breaking. -### Grilled Cheese Sandwich ~ Replaces Megasphere, Morph Ovum, Dragonskin Bracers +### Grilled Cheese Sandwich ![](docimg/sandwich.png) The ultimate meal. Grants a full 1000 health and magically gives you a full stack of **Armor Nuggets**, a **Blast Suit** and a **War Armor**. In addition it prevents you from dying at all when it activates automatically *(this wondrous artifact can even save you from the destruction of the **Ynykron Artifact**)*. Keep in mind that this overhealing above 500 points fades away much quicker than the **Refresher**'s, and you can't use another sandwich again until the overheal fades. -### Ghost Artifact ~ Replaces Blur Sphere, Shadowsphere +### Ghost Artifact ![](docimg/ghost.png) Actual 100% invisibility, a relic from the old **UnSX** days. @@ -356,112 +588,110 @@ This powerup is capable of turning you absolutely invisible. However, it does no Lasts 60 seconds once activated. -### Ragekit ~ Replaces Berserk, Tome of Power, Boots of Speed +### Ragekit ![](docimg/ragekit.png) A special item with some... interesting effects. -Octuples melee damage, doubles movement speed, quarters damage taken... and has the side effect of turning you into a screaming beast. +Octuples melee damage, doubles movement speed, quarters damage taken... and has the unfortunate side effect of making you shout expletives non-stop. *"Ragequit"* happens after 30 seconds. -### Elemental coating ~ Replaces Radsuit +### Elemental coating ![](docimg/barrier.png) A proper radsuit replacement, and sort of a rehash of the old ***"Barrier"*** powerup from previous **SWWM** versions. For 60 seconds, you can walk on hazardous floors or even take a nice swim in corrosive slime, scorching magma, freezing waters, or other extremes, while also having 100% resistance to elemental attacks. -### Gravity suppressor ~ Replaces Wings of Wrath +### Gravity suppressor *(Heretic & Hexen)* ![](docimg/gravity.png) -Continuing with the *"replace jump boots with flight"* tradition in previous **SWWM** entries, this time you'll be getting a proper easy to control antigravity powerup. +In the **SWWM** series, there was a sort of tradition to *"replace jump boots with flight"*, and it'll live on here in as well. This time, you'll be getting a proper easy to control antigravity powerup. For 60 seconds, you can fly around in the air at 2x your normal walking speed, but do note that your movements aren't very precise while in this state. -### Fucking Invinciball ~ Replaces Invulnerability, Ring of Invincibility, Icon of the Defender +### Fucking Invinciball ![](docimg/invinciball.png) -This thing makes you impervious to pretty much everything excluding the **Ynykron Artifact**. +This thing makes you impervious to pretty much everything excluding the **Ynykron Artifact**. It's said to go well with a glass of Sunny D. You're fucking invincible for a total of 20 seconds. -### Hammerspace Embiggener ~ Replaces Backpack, Bag of Holding, Dragonskin Bracers +### Hammerspace Embiggener ![](docimg/embiggener.png) -Each of these you pick up increases your ammo capacity *(not necessarily doubling it)*, stacking up to 8 times. They also give you some extra ammo, like a vanilla backpack would *(though not for all weapons)*. +Each of these you pick up increases your ammo capacity *(not necessarily doubling it)*, stacking up to 8 times. They also give you some extra ammo, like a vanilla backpack would *(though not for ALL ammo types)*. -In some special cases you may find "Bulk" versions. These generally only pop up if the mapper decided to spawn several overlapping backpacks in one spot, as they result from all of those items merging together. +In some special cases you may find *"Bulk"* versions. These generally only pop up if the mapper decided to spawn several overlapping backpacks in one spot, as they result from all of those items merging together. -Note: In multiplayer, these can be traded between players, but do note that the receiver will not get any extra ammo from it. - -### Universal Ammo Fabricator ~ Replaces Mana / Krater of Might +### Universal Ammo Fabricator *(Hexen)* ![](docimg/fabricator.png) -Separated into four tiers, they work pretty much like the ammo cubes in **Doom Tournament**, except they try to *"balance"* the total ammo given. The max tier fabricator is the only one capable of producing ammo for all weapons *(excluding the **Ynykron Artifact**)*. Due to some unspecified reasons, they cannot be held in your inventory, something to do with their nature conflicting with **Hammerspace**. +Separated into four tiers, they work pretty much like the ammo cubes in **Doom Tournament**, except they try to *"balance"* the total ammo given. The max tier fabricator is the only one capable of producing ammo for all weapons, as long as it can be bought at the store *(so this excludes slot 0 weapons, for example)*. Due to some unspecified reasons, they cannot be held in your inventory, something to do with their nature conflicting with **Hammerspace**. -### Lamp ~ Replaces Lite-Amp, Torch +### Lamp ![](docimg/lamp.png) -A floating lamp companion, may attract moths. The moths will disperse and attack nearby enemies when toggling it off. +A floating lamp companion, may attract moths. These moths are unexpectedly fierce and will attack any enemies that get close to the light. -### Omnisight ~ Replaces Computer Map, Map Scroll +### Omnisight ![](docimg/omnisight.png) Reveals the entire layout of the map and shows key locations in the HUD. Also allows you to highlight pickups through walls when holding the **Item Sense** button. -### Safety Tether ~ Replaces Chaos Device +### Safety Tether *(Heretic & Hexen)* ![](docimg/tether.png) -On use, teleports you back to the start of the map. Basically acts exactly the same as a Chaos Device, although it also resets you to max health should you be under the weather. Additionally it also generates shockwaves on both ends, making your escape more dramatic. +On use, teleports you back to the start of the map. Basically acts exactly the same as a **Chaos Device**, although it also resets you to max health should you be under the weather. Additionally it also generates shockwaves on both ends, making your escape more dramatic. -### Mykradvo Artifact ~ May randomly replace Ghost Artifact or Invinciball +### Mykradvo Artifact ![](docimg/mykradvo.png) When used, bursts into plasma tendrils that will seek all visible hostiles within 100m and fry them good. If there are no hostiles around, the artifact will simply not ignite. Has a chance to spawn in place of other items, but only one may spawn per map. Cannot be bought due to its rarity. -### Divine Sprite ~ May randomly replace Grilled Cheese Sandwich +### Divine Sprite ![](docimg/sprite.png) Rapidly boosts your health dramatically, for 50 seconds. Its effects will obviously fade afterwards. Your HUD can't exactly report your actual health, but it's assumed this goes way beyond the one thousand cap, somehow. Only one may spawn per map, and you can't buy these either. If you manage to fetch one, use it wisely. -### Devastation Sigil ~ May randomly replace Ragekit +### Devastation Sigil ![](docimg/deva.png) -50 seconds of absolute destructive potential for any damage you may deal, including to yourself (so be careful). +50 seconds of absolute destructive potential for any damage you may deal, including to yourself *(so be careful)*. Same conditions as the other two. Make sure you find the perfect chance to unleash this beast. ## The Collectibles ![](docimg/chancebox.png) -Every now and then you will find these strange ***"Lucky Chance Boxes"*** in secret areas, which you can open by pressing Use. In Hexen, they will also replace Dark Servants, Banishment Devices and Porkalators *(as the game generally doesn't have secret areas)*. +Every now and then you will find these strange ***"Lucky Chance Boxes"*** in secret areas, which you can open by pressing Use. In **Hexen**, they will also replace **Dark Servants**, **Banishment Devices** and **Porkalators** *(as the game generally doesn't have secret areas)*. -While some will drop very useful goodies, others may provide you instead with a randomly selected item from a pool of various *"collectibles"*. On pickup, these will give you a nice extra score based on their estimated market price. Some of these collectibles will only appear when you play specific IWADs (or those that go chronologically after them, e.g.: Heretic collectibles appearing in Hexen). +While some will drop very useful goodies, others may provide you instead with a randomly selected item from a pool of various *"collectibles"*. On pickup, these will give you a nice extra score based on their estimated market price. Some of these collectibles will only appear when you play specific IWADs *(or those that go chronologically after them, e.g.: **Heretic** collectibles appearing in **Hexen**)*. ### NUTATCO™ Chocolate Bar ![](docimg/nutatcobar.png) -A light snack, said to have a "savage taste". The branding was entirely Saya's doing thanks to her position as #1 sponsor of Vestal Foods. +A light snack, said to have a *"savage taste"*. The branding was entirely **Saya**'s doing thanks to her position as #1 sponsor of Vestal Foods. ### Frispy™ Tasty Corn Snack ![](docimg/frispycorn.png) -Saya's favorite barbecue-flavored corn nuts. She snacks on so many bags of these that their tasty scent has stuck to her permanently, becoming a walking advertisement for them. Kirin likes it, at least. +**Saya**'s favorite barbecue-flavored corn nuts. She snacks on so many bags of these that their tasty scent has stuck to her permanently, becoming a walking advertisement for them. **Kirin** likes it, at least. ### The Akari Project ![](docimg/akariproject.png) -A copy of Saya's famous sci-fi novel about interdimensional travel. Saya has frequently cited it to dab hard on the UAC and their failures. The interportal system devised by Saya in 2171 was named after this. +A copy of **Saya**'s famous sci-fi novel about interdimensional travel. **Saya** has frequently cited it to dab hard on the **UAC** and their failures. The interportal system devised by **Saya** in 2171 was named after this. ### Meidobot - Love Signals ![](docimg/lovesignals.png) -Debut album of Maidbot Miyamoto. Very cute and romantic J-Pop. Yes, it's a CD, and yes, some people still have CD drives out there. The album is considered a declaration of love to Saya, although it should be noted that this predates Maidbot gaining sentience *(not that it makes much of a difference, as her feelings for Saya turned out to be very real)*. +Debut album of **Meido Miyamoto**. Very cute and romantic J-Pop. Yes, it's a CD, and yes, some people still have CD drives out there. The album is considered a declaration of love to **Saya**, although it should be noted that this predates **Meido** gaining sentience *(not that it makes much of a difference, as her feelings for **Saya** turned out to be very real)*. ### Perfectly Generic Cube ![](docimg/generic.png) @@ -471,37 +701,44 @@ A perfectly generic cube. It is exactly 128mm across each side, sports a pure gr ### Haunted Saya Bean Plush ![](docimg/sayabean.png) -Eats your snacks and calls you a horny. Emits a giggle when you squeeze it. Yet another of Nukritas 2xx's little handcrafted dolls. May or may not be really haunted. +Eats your snacks and calls you a nerd. Emits a giggle when you squeeze it. Yet another of **Nukritas 2xx**'s little handcrafted dolls. May or may not be really haunted. -### Mashiro Plush +### Moth Girl Plush ![](docimg/mothplushy.png) -A cute plush doll of Saya's favorite moth girl. Apparently the Nukritas brothers give her one of these every time they piss her off, so she's got an entire pile in her bedroom. It appears that this one bears with it some sort of "contract", whatever that means. +A cute plush doll of **Saya**'s favorite type of monster girl. Apparently the **Nukritas** brothers give her one of these every time they piss her off, so she's got an entire pile in her bedroom. It appears that this one bears with it some sort of *"contract"*, whatever that means. -### Demolitionist Plush (Heretic) +### Saya's Mug +![](docimg/sayasmug.png) + +A personalized coffee mug that **Saya** uses to totally drink black coffee, *(allegedly)* without any sugar. A peculiar birthday gift from her brother **Taro**. + +### Demolitionist Plush *(Heretic)* ![](docimg/demoplush.png) -A soft and squishy plush doll of you! This became very popular after the events of Doom, with the Demolitionist having defeated the demons and saved Earth. Fully articulated, face and tags glow in the dark. +A soft and squishy plush doll of you! This became very popular after the events of **Doom**, with the **Demolitionist** having defeated the demons and saved the world. Fully articulated, face and tags glow in the dark. -### Toot Froot™ Peach Juice (Hexen) +### Toot Froot™ Peach Juice *(Hexen)* ![](docimg/tootfroot.png) -Saya began to stock up on these after her marriage with Kirin, for some unexplained reason. She says the taste reminds her of him. Kirin also seems to enjoy drinking them, perhaps a bit too much, in fact. +**Saya** began to stock up on these after her marriage with **Kirin**, for some unexplained reason. -### Akkouxhei Milk Breads (Hexen) +### Akkouxhei Milk Breads *(Hexen)* ![](docimg/milkbreads.png) -A tasty treat from Kirin's homeland. These soft and fluffy pastries are so sweet they may be even lethal if consumed in excess. Saya gave herself a heart attack once after stuffing her face full of them. +A tasty treat from **Kirin**'s homeland. These soft and fluffy pastries are so sweet they may be even lethal if consumed in excess. Saya gave herself a heart attack once after stuffing her face full of them. -### I Married A Cherry Boy Emperor But It Turns Out He's Really Cute In Lingerie!? (Hexen) +### I Married A Cherry Boy Emperor But It Turns Out He's Really Cute In Lingerie!? *(Hexen)* ![](docimg/kirinmanga.png) -A single-volume manga by Saya Miyamoto "based on true events" about a young girl who marries a seemingly pure and innocent emperor with a secret crossdressing hobby. +A single-volume manga by **Saya Miyamoto** *"based on true events"* about a young girl who marries a seemingly pure and innocent emperor with a secret crossdressing hobby. -### Kirin Plush (Hexen) +### Kirin Plush *(Hexen)* ![](docimg/kirinplush.png) -The most adorable and huggable plush doll of the cutest and sweetest emperor. This was not only also handcrafted by Nukritas 2xx, but also imbued with Kirin's magic, his blessing making anyone feel warm and fuzzy when holding it close to their heart. Like the Saya plush, also emits a cute giggle when squeezed. +The most adorable and huggable plush doll of the cutest and sweetest emperor. This was not only also handcrafted by **Nukritas 2xx**, but also imbued with **Kirin**'s magic, his blessing making anyone feel warm and fuzzy when holding it close to their heart. Like the **Saya** plush, also emits a cute giggle when squeezed. + +--- ## The HUD ![](docimg/hudsample.png) @@ -510,25 +747,17 @@ Pretty simplistic so it doesn't get in the way of the action. Some things may be ### Top left corner -Message display. Can be configured to show different numbers of messages depending on whether the chat prompt is open. Chat messages take much longer to expire than others, so there's less of a chance to miss them, as they might pop back up when the less important ones expire. A full chat history can be read at any time in the **Demolitionist Menu** *(if there were any actual messages)*. Repeated messages are compressed with a multiplier suffix. +Message display. Can be configured to show different numbers of messages depending on whether the chat prompt is open. Chat messages take much longer to expire than others, so there's less of a chance to miss them, as they might pop back up when the less important ones expire. Repeated messages are compressed with a multiplier suffix. ### Top right corner -Current score. +Minimap *(toggleable)*. It works mostly like the radar did in **SWWM Z**, but has the added benefit of also showing map geometry *(an absolute nightmare to code)*. -The scoring system is pretty straightforward. Each enemy you kill will give you points according to 5% of its base health, rounded up to the nearest multiple of 10 and capped to 1000, plus some extra bonuses for feats such as multikills *(within 5 seconds of each other)*, gibbing enemies, killing bosses, and much more! - -You are also given score for finding secrets and counted items, +100 for each secret, +1000 if it's the final one and +10 for each item or +500 if it's the final one. In addition, +5000 will be given to all players if the level is fully cleared *(100% kills/items/secrets)*. - -Score can be used to buy items on the in-game store *(or gained from selling them)*, and it is preserved between hubs, but pistol starts will reset it *(configurable, like most things)*. - -Right below your score box, a toggleable minimap will be shown. It works mostly like the radar did in **SWWM Z**, but has the added benefit of also showing map geometry *(an absolute nightmare to code)*. Has its own custom color scheme, but it can also be set to inherit these from GZDoom's own automap settings, or various vanilla presets. - -In addition, you may also see the stats for the level *(as well as its name if the automap is active)*, and below, any collected keys. +In addition, you may also see the stats for the level *(as well as its name and map slot, optionally)*, and below, any collected keys. ### Center -Your crosshair, of course. This mod features a physically projected crosshair that's pointing exactly where your current weapon will *(usually)* hit whenever you fire. If a weapon fires from multiple barrels, more crosshairs will of course appear for each of them. +Your crosshair would go here, of course. This mod features a physically projected crosshair that's pointing exactly where your current weapon will *(usually)* hit whenever you fire. If a weapon fires from multiple barrels, more crosshairs will of course appear for each of them. It's likely that somewhere in this general area you'll see, on occasion when playing supported maps, some dialogue boxes with characters *(usually **Saya**)* letting you know their thoughts on your progress in the mission, and what lies ahead. Do note that these communications are entirely voice-to-text and one-way. @@ -538,35 +767,37 @@ Oh, and also, when bringing up a certain weapon for the first time, you will see Your health and fuel, along with an inventory box, and all active armors and powerups *(with their respective durability/duration)*. +There is also a cute lil' classic animated mugshot, which shows your current mood, plus some visual effects caused by any active powerups. + ### Bottom border Voice acting subtitles and pickup messages. Repeated pickups will have a multiplier suffix added. Total messages shown are also configurable. Achievement popups might also show here sporadically *(yup, the mod has those)*. ### Bottom right corner -The weapon slots. Above them, the currently equipped weapon's stats *(i.e.: ammo(s) and such)*. +The weapon slots. Above them, the currently equipped weapon's stats as well as a listing of your ammo. + +And right above that ammo listing... Your current score. + +The scoring system is pretty straightforward. Each enemy you kill will give you points according to 5% of its base health, rounded up to the nearest multiple of 10 and capped to 1000 *(and multiplied by the current skill's damage factor)*, plus some extra bonuses for feats such as multikills *(within 5 seconds of each other)*, gibbing enemies, killing bosses, and much more! + +You are also given score for finding secrets and counted items, +100 for each secret, +1000 if it's the final one and +10 for each item or +500 if it's the final one. In addition, +5000 will be given to all players if the level is fully cleared *(100% kills/items/secrets)*. + +Score can be used to buy items on the in-game store *(or gained from selling them)*, and it is preserved between hubs, but pistol starts will reset it *(configurable, like most things)*. ### Targeting Array Because in the middle of the chaos that is this mod you might have a hard time trying to figure out where everything is in between explosions and massive smoke clouds, a targeting array has been implemented, which will show the following: -- **Players and monsters:** Draws an identification label and a health bar. The bar can display overhealing, and also indicate when someone is invulnerable. When they take damage or get healed, numbers *(either red or green)* will pop up around them. Only enemies in your direct line of sight are picked up, gradually fading once you lose sight of them, and only up to 40 individual bars can be displayed at a time *(configurable)*, giving priority first to players, then the nearest enemies. The **Omnisight** increases the time out-of-sight targets remain marked. +- **Players and monsters:** Draws an identification label and a health bar. The bar can indicate when someone is invulnerable, as well as show special icons for allies and bosses. When they take damage, a cumulative counter will show up under the bar. Only enemies you or your allies deal damage to as well as those directly under your crosshairs are picked up, gradually fading once you lose sight of them. - **Keys and map exits:** If you've picked up an **Omnisight**, key items and any exit lines will be marked and labeled, along with a little distance indicator in map units. Note that this doesn't work for script-triggered exits *(the exit line detection is also kind of wonky with the way some of them are laid out, so you might see duplicate markers and whatnot)*. - **Highlighted items:** Holding the ***"Item Sense"*** button will mark and label nearby items, in case they're hard to see among countless piles of corpses or dim lighting. If you have an **Omnisight**, items that are out of view *(e.g.: behind walls)* will be marked too. +- **Score numbers:** Every time something gives you score, numbers will pop up around the source. For kills, this number might be accompanied by various strings of text as well, indicating additional bonuses applied. +- **Damage numbers:** These, as expected, burst from anything within the map that takes damage, regardless of whether or not you're the one who dealt it *(so you can guess something's going down if you see them show up all of a sudden)*. The color depends on the damage type dealt *(with red as a fallback)*, though you may also see positive numbers in blue and green, which indicate when you or other players have gained health or armor respectively. These components are toggleable. -## Multiplayer - -![](docimg/demolitionist_mp.png) - -Although it's not officially supported, it is possible to play both co-op and deathmatch with this mod. Some caveats apply, such as the need to disable network prediction, as the various changes to player physics and behavior would quickly cause desyncs otherwise. Thus, the only recommendation I can give is to only try it out if there's low latency between players *(e.g.: LAN multiplayer)*. - -Due to engine limitations, it's not possible to color-code individual players, so you'll have to rely on the target array to identify others. Note that the named healthbars of other players are always displayed in co-op, regardless of distance or visibility. - -When playing deathmatch, detailed ranking and score stats will be shown on the right side of the HUD, so you know who's winning and by how far of a margin. Note that in deathmatch, the full map is always revealed, but other players will NOT appear in the minimap or target array unless they're visible, or they're part of your team *(if teamplay is enabled)*. - -Now, all things considered, the experience of multiplayer with this mod can only be described as *"pure unadulterated chaos"*. If one **Demolitionist** can already wreak intense havoc, imagine up to 8 of them on the same map. +--- ## The End ![](docimg/demolitionist_doublev.png) @@ -576,3 +807,7 @@ That's all the info I can provide on this here Readme file, at least for now. St Anyway, hope you have lots of fun playing **Codename: Demolitionist**. Godspeed, and happy fragging! — *Marisa* + +--- + +*"It's time to kick ass and chew bubblegum, and I don't have a mouth."* — Demolitionist diff --git a/STARTUP.dat b/STARTUP.dat deleted file mode 100644 index 8146e542d..000000000 Binary files a/STARTUP.dat and /dev/null differ diff --git a/achievements.lst b/achievements.lst index 687fbaeb9..bc1a4e8e8 100644 --- a/achievements.lst +++ b/achievements.lst @@ -1,110 +1,120 @@ # achievements listed here -# format: "basename,maxval,hasformat" +# format: "basename,maxval,hasformat,gametype" # basename: the base name used to construct cvars and localization strings # maxval: limit progress value (if any), a value of -1 means it needs special # handling in zscript (usually for cases where this is dynamic, like # the "all collectibles" achievement), and a value below -1 indicates # this is a bitfield, where abs(maxval) bits must be set -# hasformat: the TXT string has a %d in it to substitute for maxval -# gametype: the game this belongs to (any, doom, heretic, hexen, raven, etc.) -acid,40,yes,any +# hasformat: TXT string has a %s in it to substitute for a formatted maxval +# gametype: game this belongs to (any, doom, heretic, hexen, raven, nothexen) allcoll,-1,no,any -allitems,30,yes,nothexen -allkills,30,yes,nothexen -allsecrets,30,yes,nothexen -anom,10,yes,any +allitems,100,yes,nothexen +allkills,100,yes,nothexen +allsecrets,100,yes,nothexen +#andira,0,no,any +anom,50,yes,any anone,0,no,any -balls,10,yes,any -barrel,500,yes,doom -barrier,20,yes,doom +#ara,100,yes,any +#arse,-8,yes,any +#balls,200,yes,any +#ballself,0,no,any +barrel,1000,yes,doom +barrier,100,yes,doom baseball,0,no,doom blaze,0,no,nothexen -bonk,200,yes,any -bossdash,5,yes,any -brake,10,yes,any -bune,400,yes,any -bustin,40,yes,any -butts,100,yes,any -candy,500,yes,any +bonk,500,yes,any +bossdash,20,yes,any +brake,30,yes,any +bune,5000,yes,any +bustin,200,yes,any +butts,1000,yes,any +candy,1000,yes,any cliffyb,0,no,nothexen -clonk,0,no,any -conga,10,yes,any +#clonk,0,no,any +#combo,0,no,any +conga,20,yes,any crush,0,no,any cybully,0,no,doom -#cum,500,yes,any -#dab,200,yes,any -#dakka,60,no,any -deadeye,7,yes,any -deva,10,yes,any +dab,300,yes,any +dakka,30,yes,any +#dbsucc,0,no,any +deadeye,8,yes,any +deva,50,yes,any dime,0,no,any -divine,10,yes,any -doodle,20,yes,doom +divine,50,yes,any +doodle,200,yes,doom +#engine,0,no,any everything,0,no,any -ezkill,50,yes,doom +ezkill,100,yes,doom ezkill,30,yes,raven flight,2000,yes,any -friend,20,yes,any -fuel,400,yes,any +#fluffy,50,yes,any +friend,100,yes,any +fuel,4000,yes,any #fuller,0,no,any -gcsandwich,10,yes,any -#gepgun,30,yes,any -ghost,20,yes,any -gib,1500,yes,any -golden,24,yes,any -gravity,10,yes,raven -grenade,20,yes,any +gcsandwich,200,yes,any +#gepgun,40,yes,any +ghost,50,yes,any +gib,50000,yes,any +golden,100,yes,any +gravity,50,yes,raven +grenade,30,yes,any #hnd,6,yes,any hurry,0,no,any -jump,100,yes,any +jump,1000,yes,any kancho,0,no,hexen keen,0,no,doom +#kirin,500,yes,hexen lead,1500,yes,any #lightning,0,no,any ligma,0,no,any -love,10,yes,any -#mashiro,0,no,any +love,40,yes,any matryoshka,0,no,any mbf,0,no,doom -mega,10000,yes,any -moth,30,yes,any +mega,100000,yes,doom +mega,10000,yes,raven +moth,100,yes,any nice,0,no,nothexen oneguy,0,no,any onehp,10,yes,any onestanding,0,no,nothexen oopsie,0,no,any -par,15,yes,doom -parry,100,yes,any +#pachinko,0,no,any +par,50,yes,doom +parry,2000,yes,any peace,0,no,nothexen -#plasma,30,yes,any +#piss,5000,yes,any +#plasma,50,yes,any plush,10,yes,any puzzle,0,no,hexen -rage,20,yes,any -#rail,16,yes,any -reflect,20,yes,any -refresh,30,yes,any -#roast,40,yes,any -salt,0,no,any +rage,200,yes,any +rail,44,yes,any +reflect,100,yes,any +refresh,500,yes,any +roast,200,yes,any sanic,800,yes,any sekiro,0,no,any +#sentry,1000,yes,any shame,0,no,any -shock,30,yes,any -slayer,40,yes,doom -slayer,20,yes,raven -slemg,100,yes,any -sneaky,10,yes,raven -sneeze,20,yes,any +shock,200,yes,any +slemg,500,yes,any +sneaky,20,yes,raven +sneeze,50,yes,any #spark,30,yes,any +#speen,60,yes,any step,30,yes,any -stomp,40,yes,any -sunny,15,yes,any +stomp,500,yes,any +sunny,100,yes,any +#tbd,30,no,any tele,0,no,any -tender,100,yes,any -thicc,100,yes,any -thruwall,20,yes,any +thicc,1000,yes,any +thruwall,200,yes,any tornado,0,no,heretic trash,0,no,doom travel,1000,yes,any +#trogdor,100,yes,any untouchable,0,no,nothexen wantdie,0,no,any wave,0,no,any +#words,50,yes,any yeet,0,no,doom diff --git a/acs/swwmcomp.o b/acs/swwmcomp.o index 033d4c445..2610342b4 100644 Binary files a/acs/swwmcomp.o and b/acs/swwmcomp.o differ diff --git a/animdefs.misc b/animdefs.misc index b06d2f36b..0532e3a27 100644 --- a/animdefs.misc +++ b/animdefs.misc @@ -1 +1,15 @@ -cameratexture LOGOFADE 64 64 +// title stuff +canvastexture LOGOFADE 4 4 + +// ammo leds +canvastexture PLASBLDR 64 64 +canvastexture PLASBLDL 64 64 +canvastexture PLASBFDR 4 4 +canvastexture PLASBFDL 4 4 +canvastexture SHEENLED 128 128 +canvastexture QUADRLED 64 64 +canvastexture MORTLED1 256 128 +canvastexture MORTLED2 64 16 + +// minimap +canvastexture MMCANVAS 100 100 diff --git a/brightmaps/Fullbright.png b/brightmaps/Fullbright.png index 04425e3ad..9b16a265d 100644 Binary files a/brightmaps/Fullbright.png and b/brightmaps/Fullbright.png differ diff --git a/brightmaps/auto/defaced_ZZWOLF12.png b/brightmaps/auto/defaced_ZZWOLF12.png index 8b1cddf25..8da80ea59 100644 Binary files a/brightmaps/auto/defaced_ZZWOLF12.png and b/brightmaps/auto/defaced_ZZWOLF12.png differ diff --git a/brightmaps/auto/defaced_ZZWOLF13.png b/brightmaps/auto/defaced_ZZWOLF13.png index 1209716e5..ee31e2b9a 100644 Binary files a/brightmaps/auto/defaced_ZZWOLF13.png and b/brightmaps/auto/defaced_ZZWOLF13.png differ diff --git a/brightmaps/auto/defaced_ZZWOLF2.png b/brightmaps/auto/defaced_ZZWOLF2.png index 5a8c2581e..2eb71ea68 100644 Binary files a/brightmaps/auto/defaced_ZZWOLF2.png and b/brightmaps/auto/defaced_ZZWOLF2.png differ diff --git a/brightmaps/auto/defaced_ZZWOLF3.png b/brightmaps/auto/defaced_ZZWOLF3.png index 62cdf91b0..bab139d0b 100644 Binary files a/brightmaps/auto/defaced_ZZWOLF3.png and b/brightmaps/auto/defaced_ZZWOLF3.png differ diff --git a/brightmaps/auto/defaced_ZZWOLF4.png b/brightmaps/auto/defaced_ZZWOLF4.png index bee2d81ce..0978e6e2b 100644 Binary files a/brightmaps/auto/defaced_ZZWOLF4.png and b/brightmaps/auto/defaced_ZZWOLF4.png differ diff --git a/brightmaps/auto/defaced_ZZWOLF6.png b/brightmaps/auto/defaced_ZZWOLF6.png index 43da8154c..23f7f6a41 100644 Binary files a/brightmaps/auto/defaced_ZZWOLF6.png and b/brightmaps/auto/defaced_ZZWOLF6.png differ diff --git a/brightmaps/auto/defaced_ZZWOLF7.png b/brightmaps/auto/defaced_ZZWOLF7.png index ece684363..d86549c76 100644 Binary files a/brightmaps/auto/defaced_ZZWOLF7.png and b/brightmaps/auto/defaced_ZZWOLF7.png differ diff --git a/credits.txt b/credits.txt index b81589174..632cefa43 100644 --- a/credits.txt +++ b/credits.txt @@ -17,30 +17,18 @@ Most of the work here is original, but there are some notable exceptions: * Dark Souls 3 - In addition, a whole lot of stock sounds and internet meme sounds have also been used. - Some sprites and sounds are taken from (shareware) Wolfenstein 3D. - - This mod uses Gutamatics, by Gutawer. Big thanks. - - This mod uses Mikolah's ZPolyobject library. Many thanks too. + - This mod uses Mikolah's ZPolyobject library. Many thanks. - Title theme, "Traumatic State", by Teque (which a lot of people just know as "the AS-Golgotha music"). - Intermission theme, "Dragony", also by Teque (very comfy music considering the rest of his repertoire). - - Startup/credits theme, "Hidden Tune #242", also by Teque too (super comfy music, ideal for this use). + - Startup theme, "Hidden Tune #242", also by Teque too (super comfy music, ideal for this use). - Kinsie's Test Map theme, "Hypercardish 1.1", ALSO TOO by Teque (seems nice for such an use I guess). - Clear theme, "Solitary Apprehension", by BouncyTEM (made specifically for the mod). - - The anti-BD feature uses art and music by IOSYS, art was edited into the Doom palette. + - Credits theme by KynikossDragonn (also made specifically for the mod). - The crash handler uses a short clip of the Curb Your Enthusiasm theme. - Tewi font by lucy (https://github.com/lucy/tewi-font). Modified to add gradients and drop shadow. - - MPlus font by M⁺ FONTS PROJECT (http://mplus-fonts.osdn.jp/mplus-bitmap-fonts). Modified to add gradients and drop shadow. - Miniwi font by Josuah Demangeon (http://josuah.net). Modified to add gradients and drop shadow. - - k6x8 font by littlelimit (https://littlelimit.net/k6x8.htm). Modified to add gradients and drop shadow. - - Nashgore footprint texture by Valerie Lavender. + - EB Garamond font by Octavio Pardo et al (https://github.com/octaviopardo/EBGaramond12). Rendered to texture atlas with outline. + - Takao Gothic font by Jun Kobayashi et al (https://launchpad.net/takao-fonts). Modified to add gradients and drop shadow. - Slope alignment utility code by ZZYZX & Nash. - - Intermission fanart: - * Substance20 (@S20TBL) - * Captain J (@Jho7835) - * Redead-ITA - * Sgt. Shivers (@Sgt_Shivers_) - * Moa Dixøn / Endie (@MoaDixon) - - Extra gib anims for vanilla monsters: - * Ryan Cordell (Demon, Cacodemon, Revenant, Archvile) - * Amuscaria (Baron of Hell, Hell Knight) - * Blox (Arachnotron, Mancubus) - SiFi270 (Less mean-spirited Keen replacement) - Widescreen version of Hexen finale screens by Nash. diff --git a/cvarinfo.base b/cvarinfo.base index 73b6886e9..640477aae 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -1,10 +1,8 @@ // main mod cvars user string swwm_voicetype = "default"; // voice for your demolitionist +user int swwm_tagcolor = 0; // customize glowing tag color nosave float swwm_flashstrength = 1.0; // strength of screen flashes -nosave int swwm_hudmargin = 10; // margin around fullscreen hud elements -nosave int swwm_maxshown = 4; // max messages to show normally -nosave int swwm_maxshownbig = 10; // max messages to show when chatting -nosave int swwm_maxpickup = 5; // total pickup messages visible +nosave int swwm_hudmargin = 5; // margin around fullscreen hud elements nosave int swwm_mutevoice = 0; // mute demolitionist voice // 0 - none // 1 - combat comments @@ -12,150 +10,89 @@ nosave int swwm_mutevoice = 0; // mute demolitionist voice // 3 - map start comment // 4 - pain/death and grunts nosave int swwm_voiceamp = 2; // additional voice line amplification, up to 4x -nosave int swwm_chatduration = 25; // lifespan of chat messages -nosave int swwm_msgduration = 5; // lifespan of other messages -nosave int swwm_pickduration = 3; // lifespan of pickup messages -user bool swwm_autousearmor = true; // automatically use armor items when possible -user bool swwm_autousehealth = true; // automatically use health items when possible -nosave bool swwm_targeter = true; // show targeter healthbars -nosave bool swwm_targettags = true; // show enemy tags above healthbars -nosave bool swwm_healthnums = true; // show damage/healing numbers +nosave int swwm_targeter = 1; // show healthbars in the hud (2: only show monsters and players, 3: only show allies) +nosave bool swwm_targettags = true; // show names above healthbars +nosave bool swwm_damnums = true; // show damage numbers +nosave bool swwm_damnums_color = true; // use color per damage type, rather than just red nosave bool swwm_scorenums = true; // show score numbers -nosave bool swwm_scorebonus = true; // show score bonuses nosave bool swwm_pois = true; // show points of interest highlighted by omnisight -server bool swwm_fly6dof = false; // flying uses 6dof movement, toggleable for those who get motion sickness nosave bool swwm_shaders = true; // use pp shaders for some effects -nosave bool swwm_earbuster = false; // limits loudness of wallbuster fire sounds server bool swwm_revive = true; // allows the player to do an "emergency reboot" when dying server int swwm_revivecooldown = 60; // cooldown after using a revive, in seconds (0: no limit) -nosave int swwm_interart = 1; // show art on intermissions (2: only fanart, 3: only official renders) -server bool swwm_balluse = true; // lead ball can "press" switches remotely -nosave bool swwm_bosshealthbars = true; // display large healthbars for vanilla boss encounters -server bool swwm_upgradebosses = true; // vanilla bosses will be "upgraded" to be less insta-die prone -server bool swwm_extraalert = false; // enables A_AlertMonsters calls for certain things which may be cpu-heavy -nosave bool swwm_accdamage = false; // damage within the same tic is grouped into a single damage number -nosave int swwm_maxtargetdist = 2000; // maximum distance for target healthbars to be updated -nosave int swwm_maxtargets = 40; // maximum targeter healthbars to display (0 = unlimited) -nosave int swwm_maxscorenums = 0; // maximum score numbers to display (0 = unlimited) -nosave int swwm_maxdamnums = 0; // maximum damage/healing numbers to display (0 = unlimited) -nosave bool swwm_hudscale = false; // HUD scaling (false = tight scaling, true = loose scaling) -nosave int swwm_barscalerel = -1; // target healthbar scaling (relative) -nosave int swwm_numscalerel = 0; // damnum scaling (relative) -nosave int swwm_scrscalerel = -1; // score scaling (relative) -nosave int swwm_poiscalerel = -2; // point of interest scaling (relative) -nosave int swwm_detscalerel = -1; // item sense scaling (relative) -server bool swwm_blood = true; // custom blood/gibbing server int swwm_maxblood = 200; // max blood effects at any time server int swwm_maxgibs = 100; // max gibs at any time server int swwm_maxcasings = 100; // max casings and spent mags at any time server int swwm_maxdebris = 200; // max chunks of debris at any time +server int swwm_maxpools = 100; // max corpse blood pools at any time nosave bool swwm_fuzz = true; // allows toggling the fuzz shader on menus/backgrounds, useful if you're streaming/recording since it destroys the encoding quality -nosave bool swwm_cbtpause = true; // wallbuster menu pauses the game -nosave noarchive int swwm_cbtlast = 0; // last selected ammo for the wallbuster server bool swwm_cbtall = false; // wallbuster breaks any wall, not just movable ones server bool swwm_doomfall = false; // monsters take fall damage outside of hexen -server bool swwm_capmcrange = false; // cap ynykron chain reaction range server bool swwm_resetscore = true; // reset score back to 0 on pistol starts -server bool swwm_notrack = false; // disables all combat tracking (useful to speed up slaughterwads) -server bool swwm_ynykronalert = false; // caps ynykron alert (so it doesn't wake everyone up) -nosave bool swwm_menupause = true; // pause the game when demolitionist menu is open +nosave bool swwm_menupause = true; // pause the game when demolitionist menus are open nosave noarchive bool swwm_debugblast = false; // debug visual aid for DoExplosion nosave bool swwm_funtags = true; // replace vanilla monster names with silly ones server bool swwm_omnibust = false; // add wallbusting effect to all weapons server bool swwm_superfuel = false; // enable unlimited fuel server bool swwm_partytime = false; // killed enemies burst into confetti -server bool swwm_simplefog = false; // simplified teleport fogs (useful to speed up slaughterwads) nosave bool swwm_bigtags = false; // use a bigger font for targeter tags -nosave bool swwm_intermusic = false; // use original intermission music server int swwm_enemydrops = 0; // allow enemies to drop ammo and weapons (-1 - no ammo or weapons, 0 - ammo only, 1 - both) -server bool swwm_shotgib = true; // buckshot can gib (some people don't like this for some reason, so it's an option now) user bool swwm_collectanim = true; // player special gestures for collectables (first person only) -user bool swwm_collectanimkey = true; // same but for key items -server bool swwm_shadows = true; // enables blob shadows under mod entities, like in UT (except it also affects inventory items) -nosave bool swwm_precisecrosshair = true; // use mod's own, more precise crosshair +nosave int swwm_precisecrosshair = 1; // use mod's own, more precise crosshair (2 - force even when crosshair is not on) nosave bool swwm_ldspoil = false; // [LD] always shows "Legendary" prefix on Legendary monsters, otherwise only when they've transformed -nosave bool swwm_camhud = false; // keep full hud visible when operating cameras, otherwise only shows messages server bool swwm_uncapalert = false; // all noise alerts have infinite range -nosave int swwm_damagetarget = 1; // conditional healthbar hiding (1 - hide until damage is first taken, 2 - hide if at full health) server int swwm_strictuntouchable = 0; // untouchable bonus ends... (1 - even if your armor absorbed all the damage, 2 - if you get hit by anything PERIOD) -server bool swwm_silencemap = true; // silences the map when all kills/items/secrets are achieved -nosave int swwm_shadowdist = 2000; // max distance beyond which blob shadows are no longer rendered, helps performance -server bool swwm_swapweapons = true; // [DLC1] allows carrying only one weapon in each slot (excluding starter melee) +server bool swwm_swapweapons = true; // [DLC] allows carrying only one weapon in each slot (excluding starter melee) nosave int swwm_forcestats = 1; // always shows level stats on the HUD, not just when the automap is open (2 - also show map name, otherwise only stats) user int swwm_funtrails = 0; // recolors trails of eviscerator chunks and sheen bullets server int swwm_ps_fullreset = 0; // full reset of inventory, including score if enabled (0: no, 1: all maps excluding hubs, 2: between clusters) server int swwm_ps_resetammo = 0; // resets all ammo to zero server int swwm_ps_resetitems = 0; // removes all carried items server int swwm_ps_resethealth = 0; // sets health back to 100 -nosave int swwm_numcolor_scr = 5; // font color for score numbers (default: gold) -nosave int swwm_numcolor_bonus = 23; // font color for bonus numbers (default: fire) -nosave int swwm_numcolor_dmg = 6; // font color for damage numbers (default: red) -nosave int swwm_numcolor_hp = 7; // font color for health numbers (default: blue) -nosave int swwm_numcolor_ap = 3; // font color for armor numbers (default: green) server int swwm_drlaskill = 3; // [DRLA Monsters] skill setting for monster spawns -nosave bool swwm_itemsparkles = true; // visual aid for low visibility items -nosave bool swwm_itemglows = true; // distant items glow server bool swwm_singlefirst = false; // single weapons are selected before dual ones, has to be a server cvar due to limitations -nosave bool swwm_uniqstats = false; // only list stats from the same map once, rather than for each single visit nosave int swwm_filterachievements = 1; // filter for achievements at 0%: 0 - no filter, 1 - obscure text, 2 - don't show nosave noarchive bool swwm_debugview = false; // debug visual aid for various things, such as actor collision, trajectories, relationships, etc. -server bool swwm_selflight = true; // player emits light server bool swwm_usetopickup = false; // allow item pickup only by pressing use -server bool swwm_meleepickup = true; // allow picking up items through melee nosave bool swwm_buttsfx = true; // buttslam homerun SFX -nosave int swwm_sewercount = 0; // I'm sorry Civvie -server bool swwm_ondemandammo = true; // don't spawn ammo for unavailable weapons -user float swwm_bumpstrength = 1.0; // intensity of fov bumping +user float swwm_bumpstrength = 1.0; // intensity of fov/viewangles bumping server bool swwm_nomagdrop = true; // does not drop spent magazines (the "environmentally conscious" option) -user bool swwm_autousebarrier = true; // auto-use elemental coating when standing on damaging floors nosave bool swwm_nomapmsg = false; // disables special map dialogue messages nosave bool swwm_weapontooltips = true; // shows a tooltip on weapon operation when first selected nosave string swwm_tooltipshown = ""; // which weapons have already had their tooltips displayed nosave noarchive bool swwm_tooltipnote = false; // set if the note on how to disable tooltips was already displayed -nosave bool swwm_nointertips = false; // hides intermission tips, in case you don't want to see them -server bool swwm_demoslayer = false; // if you're below 100hp, enemies drop healing orbs when you kill them nosave bool swwm_beepboop = false; // prompts the Demolitionist to go "beep", "boop" and "bop" when pressing any switch (may get annoying) -nosave bool swwm_oldlogo = false; // restores the old SWWM GZ logo and intro nosave string swwm_menuposehistory = ""; // stores currently seen poses for the main menu, for shuffling nosave string swwm_titlesubhistory = ""; // stores currently seen subtitles for the title screen, for shuffling nosave noarchive int swwm_profstart = 0; // starts profiling as soon as handler is registered for specified >0 tics -server bool swwm_nodeathexit = false; // completely sidesteps the inventory resetting of death exits, if you hate those +nosave bool swwm_voicelog = false; // adds player voicelines to the message log +nosave bool swwm_skipskill = false; // skips skill confirmations +nosave bool swwm_hudallammo = false; // only show ammo for owned weapons +nosave bool swwm_nointroex = false; // does not play the "explosions" intro sequence +server bool swwm_bonkhammer = false; // combat hammer makes bonk sounds when hitting enemies +server int swwm_friendlyfire = 0; // 0: allow all friendly fire, 1: block incoming damage, 2: block incoming and outgoing damage +nosave bool swwm_showmaptitle = false; // shows the name of the map when entering, just like in dark souls! +server bool swwm_lobdoubled = false; // [LOB] Enable Double Death monster spawns +nosave int swwm_bardist = 2000; // distance at which healthbars will be visible (does not affect player bars) +nosave bool swwm_oldcheats = false; // has received the "old cheats" dialogue from Zanaveth +nosave bool swwm_ccmessage = false; // has received the "corruption cards" dialogue from Cytho +nosave bool swwm_useweaponbar = false; // scroll through weapons using a bar, like with inventory items +nosave bool swwm_percentstats = false; // show level stats as percentages, like in intermissions +nosave bool swwm_targetvals = false; // show current/max health values above heathbars +nosave int swwm_hudscale = 0; // force the primary scale of the HUD (used by the HUD itself) [0: auto loose fit, -1: auto tight fit] +nosave int swwm_hudscale0 = 0; // force the "zero minus" scale of the HUD (used by damage numbers) +nosave int swwm_hudscale1 = 0; // force the "one minus" scale of the HUD (used by healthbars, score numbers) +nosave int swwm_hudscale2 = 0; // force the "two minus" scale of the HUD (used by interest points) +server bool swwm_altclear = false; // use an alternate, less graphically demanding "All Clear" effect +user bool swwm_analogmove = false; // for gamepad users, player movement is adapted for analog sticks +user bool swwm_holdreload = false; // hold the reload key to top up hand-loaded weapons, otherwise tap to start then tap again to stop // minimap settings -nosave bool swwm_mm_enable = true; // show a minimap below the score counter -nosave noarchive float swwm_mm_zoom = 1; // zoom level of minimap -nosave bool swwm_mm_rotate = true; // rotate minimap -nosave bool swwm_mm_grid = false; // show blockmap grid plus (0,0) crosshair -nosave bool swwm_mm_portaloverlay = true; // show portal overlays, like the gzdoom automap (but unlike the gzdoom automap, we also overlay actors) +nosave bool swwm_mm_enable = true; // show a minimap on the top right corner of the hud nosave bool swwm_mm_missiles = true; // show projectiles (how revolutionary) -nosave int swwm_mm_colorset = 0; // 0: Demolitionist, 1: GZDoom, 2: Doom, 3: Strife, 4: Raven -nosave color swwm_mm_backcolor = "10 10 10"; -nosave color swwm_mm_cdwallcolor = "30 50 70"; -nosave color swwm_mm_efwallcolor = "80 a0 c0"; -nosave color swwm_mm_fdwallcolor = "50 70 90"; -nosave color swwm_mm_gridcolor = "30 20 40"; -nosave color swwm_mm_interlevelcolor = "ff 00 60"; -nosave color swwm_mm_intralevelcolor = "00 60 ff"; -nosave color swwm_mm_lockedcolor = "00 90 80"; -nosave color swwm_mm_notseencolor = "20 20 30"; -nosave color swwm_mm_portalcolor = "40 30 20"; -nosave color swwm_mm_secretsectorcolor = "80 00 ff"; -nosave color swwm_mm_secretwallcolor = "60 40 80"; -nosave color swwm_mm_specialwallcolor = "ff a0 00"; -nosave color swwm_mm_thingcolor = "ff ff ff"; -nosave color swwm_mm_thingcolor_citem = "00 ff ff"; -nosave color swwm_mm_thingcolor_friend = "80 ff a0"; -nosave color swwm_mm_thingcolor_item = "ff c0 00"; -nosave color swwm_mm_thingcolor_monster = "ff 60 40"; -nosave color swwm_mm_thingcolor_ncmonster = "a0 40 20"; -nosave color swwm_mm_thingcolor_shootable = "ff a0 a0"; // thingcolor as fallback -nosave color swwm_mm_thingcolor_vipitem = "80 60 ff"; // unexploredsecretcolor as fallback -nosave color swwm_mm_thingcolor_missile = "ff a0 20"; // specialwallcolor as fallback -nosave color swwm_mm_tswallcolor = "30 20 40"; -nosave color swwm_mm_unexploredsecretcolor = "40 00 80"; -nosave color swwm_mm_wallcolor = "c0 e0 ff"; -nosave color swwm_mm_xhaircolor = "80 80 ff"; -nosave color swwm_mm_yourcolor = "80 ff 00"; +nosave bool swwm_mm_usecanvas = false; // use a canvas to draw the minimap, so its pixel density is consistent with the rest of the HUD +nosave noarchive bool swwm_mm_steptrace = false;// traces the player path in the minimap +nosave int swwm_mm_maxsteps = 5000; // how many steps to keep track of +nosave float swwm_mm_minstep = 32.; // minimum 2D distance between steps in map units server noarchive bool swwm_iseriouslywanttoplaythiswithbd = false; // self-explanatory diff --git a/damtypes.txt b/damtypes.txt new file mode 100644 index 000000000..a0045baf2 --- /dev/null +++ b/damtypes.txt @@ -0,0 +1,45 @@ +# from damnums +Steel MiniWhite +Blood MiniTomato +Ice MiniIce +Fire MiniOrange +Earth MiniKirinHUD +Quake MiniKirinHUD +Electric MiniYellow +Lightning MiniYellow +Gravity MiniPurple +Poison MiniMagenta +PoisonCloud MiniMagenta +Dark MiniIbukiHUD +Rocket MiniGold +Explode MiniGold +Explosive MiniGold +Explosion MiniGold +Plasma MiniCyan +Disintegrate MiniGreen +BFG MiniGreen +BFGSplash MiniGreen +# from demolitionist +Love MiniDemoPink +Push MiniDemoBlue +AirRip MiniDemoBlue +Explodium MiniFire +Shot MiniBrass +Salt MiniKinylum +Concussion MiniBlurp +CriticalConcussion MiniWitch +Wallbust MiniSayaHUD +Shrapnel MiniTomato +Sydon MiniSydon +Biospark MiniSulfur +Kinylum MiniKinylum +Nokron MiniNokron +Nokorokinylum MiniNokorokinylum +Sniped MiniBrass +Jet MiniWhite +Dyratin MiniGrass +Candy MiniPink +CoAb44 MiniCyanblu +Ynykron MiniPurb +YnykronAlt MiniPurb +Kabbadon MiniKabbadon diff --git a/decaldef.txt b/decaldef.txt index 5db06c8cb..5b0bb0777 100644 --- a/decaldef.txt +++ b/decaldef.txt @@ -251,6 +251,60 @@ decalgroup ShockMarkBig ShockMarkBig5 1 } +decal ShockMarkHuge1 +{ + pic shockmrk + shade "00 00 00" + randomflipx + randomflipy + x-scale 3.0 + y-scale 3.0 +} +decal ShockMarkHuge2 +{ + pic shockmk2 + shade "00 00 00" + randomflipx + randomflipy + x-scale 3.0 + y-scale 3.0 +} +decal ShockMarkHuge3 +{ + pic shockmk3 + shade "00 00 00" + randomflipx + randomflipy + x-scale 3.0 + y-scale 3.0 +} +decal ShockMarkHuge4 +{ + pic shockmk4 + shade "00 00 00" + randomflipx + randomflipy + x-scale 3.0 + y-scale 3.0 +} +decal ShockMarkHuge5 +{ + pic shockmk5 + shade "00 00 00" + randomflipx + randomflipy + x-scale 3.0 + y-scale 3.0 +} +decalgroup ShockMarkHuge +{ + ShockMarkHuge1 1 + ShockMarkHuge2 1 + ShockMarkHuge3 1 + ShockMarkHuge4 1 + ShockMarkHuge5 1 +} + decal BigBlast { pic bigblast @@ -321,6 +375,15 @@ decal YnykronBlast lowerdecal YnykronBlast2 } +decal SmallRocketBlast +{ + pic rktblast + shade "00 00 00" + x-scale 0.25 + y-scale 0.25 + randomflipx + randomflipy +} decal RocketBlast { pic rktblast @@ -574,3 +637,290 @@ decal DemoSpray y-scale 0.25 solid } + +// replace vanilla blood +stretcher BloodStretcherExtra +{ + StretchTime 35 + GoalY 1.5 +} +slider BloodSliderExtra +{ + SlideTime 35 + DistY -16 +} +combiner BloodSmearerExtra +{ + BloodStretcherExtra + BloodSliderExtra +} + +decal BloodSplat1 +{ + pic blsplat1 + shade "BloodDefault" + x-scale 0.6 + y-scale 0.6 + randomflipx + randomflipy +} +decal BloodSplat2 +{ + pic blsplat2 + shade "BloodDefault" + x-scale 0.625 + y-scale 0.625 + randomflipx + randomflipy +} +decal BloodSplat3 +{ + pic blsplat3 + shade "BloodDefault" + x-scale 0.675 + y-scale 0.675 + randomflipx + randomflipy +} +decal BloodSplat4 +{ + pic blsplat4 + shade "BloodDefault" + x-scale 0.7 + y-scale 0.7 + randomflipx + randomflipy +} +decal BloodSplat5 +{ + pic blsplat5 + shade "BloodDefault" + x-scale 0.725 + y-scale 0.725 + randomflipx + randomflipy +} +decal BloodSplat6 +{ + pic blsplat6 + shade "BloodDefault" + x-scale 0.75 + y-scale 0.75 + randomflipx + randomflipy +} +decal BloodSplat7 +{ + pic blsplat7 + shade "BloodDefault" + x-scale 0.775 + y-scale 0.775 + randomflipx + randomflipy +} +decal BloodSplat8 +{ + pic blsplat8 + shade "BloodDefault" + x-scale 0.8 + y-scale 0.8 + randomflipx + randomflipy +} +decal BloodSlide1 +{ + pic blslide1 + shade "BloodDefault" + x-scale 0.875 + y-scale 0.2 + randomflipx + animator BloodSmearerExtra +} +decal BloodSplatX1 +{ + pic blsplat1 + shade "BloodDefault" + x-scale 0.875 + y-scale 0.875 + randomflipx + randomflipy + LowerDecal "BloodSlide1" +} +decal BloodSlide2 +{ + pic blslide2 + shade "BloodDefault" + x-scale 0.9 + y-scale 0.225 + randomflipx + animator BloodSmearerExtra +} +decal BloodSplatX2 +{ + pic blsplat2 + shade "BloodDefault" + x-scale 0.9 + y-scale 0.9 + randomflipx + randomflipy + LowerDecal "BloodSlide2" +} +decal BloodSlide3 +{ + pic blslide3 + shade "BloodDefault" + x-scale 0.925 + y-scale 0.25 + randomflipx + animator BloodSmearerExtra +} +decal BloodSplatX3 +{ + pic blsplat3 + shade "BloodDefault" + x-scale 0.925 + y-scale 0.925 + randomflipx + randomflipy + LowerDecal "BloodSlide3" +} +decal BloodSlide4 +{ + pic blslide4 + shade "BloodDefault" + x-scale 0.95 + y-scale 0.275 + randomflipx + animator BloodSmearerExtra +} +decal BloodSplatX4 +{ + pic blsplat4 + shade "BloodDefault" + x-scale 0.95 + y-scale 0.95 + randomflipx + randomflipy + LowerDecal "BloodSlide4" +} +decal BloodSlide5 +{ + pic blslide5 + shade "BloodDefault" + x-scale 0.975 + y-scale 0.3 + randomflipx + animator BloodSmearerExtra +} +decal BloodSplatX5 +{ + pic blsplat5 + shade "BloodDefault" + x-scale 0.975 + y-scale 0.975 + randomflipx + randomflipy + LowerDecal "BloodSlide5" +} +decal BloodSlide6 +{ + pic blslide6 + shade "BloodDefault" + x-scale 1.0 + y-scale 0.325 + randomflipx + animator BloodSmearerExtra +} +decal BloodSplatX6 +{ + pic blsplat6 + shade "BloodDefault" + x-scale 1.0 + y-scale 1.0 + randomflipx + randomflipy + LowerDecal "BloodSlide6" +} +decal BloodSlide7 +{ + pic blslide7 + shade "BloodDefault" + x-scale 1.25 + y-scale 0.35 + randomflipx + animator BloodSmearerExtra +} +decal BloodSplatX7 +{ + pic blsplat7 + shade "BloodDefault" + x-scale 1.25 + y-scale 1.25 + randomflipx + randomflipy + LowerDecal "BloodSlide7" +} +decal BloodSlide8 +{ + pic blslide8 + shade "BloodDefault" + x-scale 1.5 + y-scale 0.375 + randomflipx + animator BloodSmearerExtra +} +decal BloodSplatX8 +{ + pic blsplat8 + shade "BloodDefault" + x-scale 1.5 + y-scale 1.5 + randomflipx + randomflipy + LowerDecal "BloodSlide8" +} + +decalgroup BloodSplat +{ + BloodSplat1 1 + BloodSplat2 1 + BloodSplat3 1 + BloodSplat4 1 + BloodSplat5 1 + BloodSplat6 1 + BloodSplat7 1 + BloodSplat8 1 + BloodSplatX1 1 + BloodSplatX2 1 + BloodSplatX3 1 + BloodSplatX4 1 + BloodSplatX5 1 + BloodSplatX6 1 + BloodSplatX7 1 + BloodSplatX8 1 +} + +decal BloodSmear1 +{ + pic blsmear1 + x-scale 0.625 + y-scale 0.625 + randomflipx + shade "BloodDefault" + animator BloodSmearer +} +decal BloodSmear2 +{ + pic blsmear2 + x-scale 0.65 + y-scale 0.65 + randomflipx + shade "BloodDefault" + animator BloodSmearer +} + +decalgroup BloodSmear +{ + BloodSmear1 1 + BloodSmear2 1 +} diff --git a/docimg/akariproject.png b/docimg/akariproject.png index 6cee5081f..0b43dd95c 100644 Binary files a/docimg/akariproject.png and b/docimg/akariproject.png differ diff --git a/docimg/barrier.png b/docimg/barrier.png index 9100cce8c..096a96e31 100644 Binary files a/docimg/barrier.png and b/docimg/barrier.png differ diff --git a/docimg/biospark.png b/docimg/biospark.png index b58b37a55..0c37994b6 100644 Binary files a/docimg/biospark.png and b/docimg/biospark.png differ diff --git a/docimg/biosparkammo.png b/docimg/biosparkammo.png index 5958edafe..5b2ef442f 100644 Binary files a/docimg/biosparkammo.png and b/docimg/biosparkammo.png differ diff --git a/docimg/blastsuit.png b/docimg/blastsuit.png index c24916e66..ecd8735b8 100644 Binary files a/docimg/blastsuit.png and b/docimg/blastsuit.png differ diff --git a/docimg/candybullet.png b/docimg/candybullet.png index e260421e1..8fcf6c662 100644 Binary files a/docimg/candybullet.png and b/docimg/candybullet.png differ diff --git a/docimg/candygun.png b/docimg/candygun.png index fa52e7d04..78f62e95f 100644 Binary files a/docimg/candygun.png and b/docimg/candygun.png differ diff --git a/docimg/chancebox.png b/docimg/chancebox.png index 346a490f5..835f406d8 100644 Binary files a/docimg/chancebox.png and b/docimg/chancebox.png differ diff --git a/docimg/cubehealth.png b/docimg/cubehealth.png index 1a80a046f..81bcfbf25 100644 Binary files a/docimg/cubehealth.png and b/docimg/cubehealth.png differ diff --git a/docimg/deepimpact.png b/docimg/deepimpact.png index 7b1b357e5..8370afe3b 100644 Binary files a/docimg/deepimpact.png and b/docimg/deepimpact.png differ diff --git a/docimg/demolitionist_actionshot.png b/docimg/demolitionist_actionshot.png index d5475283e..83d743afc 100644 Binary files a/docimg/demolitionist_actionshot.png and b/docimg/demolitionist_actionshot.png differ diff --git a/docimg/demolitionist_doublev.png b/docimg/demolitionist_doublev.png index 92573083d..1485becc9 100644 Binary files a/docimg/demolitionist_doublev.png and b/docimg/demolitionist_doublev.png differ diff --git a/docimg/demolitionist_items.png b/docimg/demolitionist_items.png index 8f4d1d71d..50a0069c8 100644 Binary files a/docimg/demolitionist_items.png and b/docimg/demolitionist_items.png differ diff --git a/docimg/demolitionist_mp.png b/docimg/demolitionist_mp.png deleted file mode 100644 index 46748d2de..000000000 Binary files a/docimg/demolitionist_mp.png and /dev/null differ diff --git a/docimg/demolitionist_wallbuster.png b/docimg/demolitionist_wallbuster.png index 05c94f7a5..69881a2bb 100644 Binary files a/docimg/demolitionist_wallbuster.png and b/docimg/demolitionist_wallbuster.png differ diff --git a/docimg/demoplush.png b/docimg/demoplush.png index 83b52b171..ca5cc89a5 100644 Binary files a/docimg/demoplush.png and b/docimg/demoplush.png differ diff --git a/docimg/deva.png b/docimg/deva.png index c0cfc715c..aa78376e3 100644 Binary files a/docimg/deva.png and b/docimg/deva.png differ diff --git a/docimg/embiggener.png b/docimg/embiggener.png index 224bc6351..ad2522b62 100644 Binary files a/docimg/embiggener.png and b/docimg/embiggener.png differ diff --git a/docimg/eviscerator.png b/docimg/eviscerator.png index cb5617efd..0c52dbd2d 100644 Binary files a/docimg/eviscerator.png and b/docimg/eviscerator.png differ diff --git a/docimg/evisceratorammo.png b/docimg/evisceratorammo.png index 4ef0ec5c1..4c85d0a50 100644 Binary files a/docimg/evisceratorammo.png and b/docimg/evisceratorammo.png differ diff --git a/docimg/explodiumammo.png b/docimg/explodiumammo.png new file mode 100644 index 000000000..1195f5af7 Binary files /dev/null and b/docimg/explodiumammo.png differ diff --git a/docimg/explodiumbullet.png b/docimg/explodiumbullet.png new file mode 100644 index 000000000..43da0e64f Binary files /dev/null and b/docimg/explodiumbullet.png differ diff --git a/docimg/explodiumgun.png b/docimg/explodiumgun.png index 4ccacfa37..ad146467f 100644 Binary files a/docimg/explodiumgun.png and b/docimg/explodiumgun.png differ diff --git a/docimg/fabricator.png b/docimg/fabricator.png index 4bab70440..12750940e 100644 Binary files a/docimg/fabricator.png and b/docimg/fabricator.png differ diff --git a/docimg/fcbbullet.png b/docimg/fcbbullet.png deleted file mode 100644 index c5a959017..000000000 Binary files a/docimg/fcbbullet.png and /dev/null differ diff --git a/docimg/frispycorn.png b/docimg/frispycorn.png index 5adbea00f..be32b306e 100644 Binary files a/docimg/frispycorn.png and b/docimg/frispycorn.png differ diff --git a/docimg/generic.png b/docimg/generic.png index d2cdc8880..365386d0f 100644 Binary files a/docimg/generic.png and b/docimg/generic.png differ diff --git a/docimg/ghost.png b/docimg/ghost.png index e22d997ce..1e714676e 100644 Binary files a/docimg/ghost.png and b/docimg/ghost.png differ diff --git a/docimg/goldenshell.png b/docimg/goldenshell.png new file mode 100644 index 000000000..387493354 Binary files /dev/null and b/docimg/goldenshell.png differ diff --git a/docimg/gravity.png b/docimg/gravity.png index 082131e99..5e678a450 100644 Binary files a/docimg/gravity.png and b/docimg/gravity.png differ diff --git a/docimg/hammer.png b/docimg/hammer.png new file mode 100644 index 000000000..03290b493 Binary files /dev/null and b/docimg/hammer.png differ diff --git a/docimg/hellblazer.png b/docimg/hellblazer.png index 93ca19ece..326753492 100644 Binary files a/docimg/hellblazer.png and b/docimg/hellblazer.png differ diff --git a/docimg/hellblazerammo.png b/docimg/hellblazerammo.png index 47cb154e5..d3a92b272 100644 Binary files a/docimg/hellblazerammo.png and b/docimg/hellblazerammo.png differ diff --git a/docimg/hudsample.png b/docimg/hudsample.png index 18c279c33..9261220d2 100644 Binary files a/docimg/hudsample.png and b/docimg/hudsample.png differ diff --git a/docimg/invinciball.png b/docimg/invinciball.png index 7dff2712d..0ef267e23 100644 Binary files a/docimg/invinciball.png and b/docimg/invinciball.png differ diff --git a/docimg/kirinmanga.png b/docimg/kirinmanga.png index 248b0134b..f3cbd00cf 100644 Binary files a/docimg/kirinmanga.png and b/docimg/kirinmanga.png differ diff --git a/docimg/kirinplush.png b/docimg/kirinplush.png index ec084440c..a4e22451d 100644 Binary files a/docimg/kirinplush.png and b/docimg/kirinplush.png differ diff --git a/docimg/lamp.png b/docimg/lamp.png index 0bf62b2c2..ef3d9f83b 100644 Binary files a/docimg/lamp.png and b/docimg/lamp.png differ diff --git a/docimg/logo.png b/docimg/logo.png index 1502470e2..6e1e002af 100644 Binary files a/docimg/logo.png and b/docimg/logo.png differ diff --git a/docimg/lovesignals.png b/docimg/lovesignals.png index 1cfa8e2d2..2d270e131 100644 Binary files a/docimg/lovesignals.png and b/docimg/lovesignals.png differ diff --git a/docimg/milkbreads.png b/docimg/milkbreads.png index b9d60b918..4fd906f4a 100644 Binary files a/docimg/milkbreads.png and b/docimg/milkbreads.png differ diff --git a/docimg/mortalrifle.png b/docimg/mortalrifle.png new file mode 100644 index 000000000..eed544aea Binary files /dev/null and b/docimg/mortalrifle.png differ diff --git a/docimg/mothplushy.png b/docimg/mothplushy.png index 3699d1415..3f849e6fd 100644 Binary files a/docimg/mothplushy.png and b/docimg/mothplushy.png differ diff --git a/docimg/mrbullet.png b/docimg/mrbullet.png new file mode 100644 index 000000000..8837108c8 Binary files /dev/null and b/docimg/mrbullet.png differ diff --git a/docimg/mrgrenade.png b/docimg/mrgrenade.png new file mode 100644 index 000000000..56d2fbc72 Binary files /dev/null and b/docimg/mrgrenade.png differ diff --git a/docimg/mykradvo.png b/docimg/mykradvo.png index 7915d4109..7d41e5bf6 100644 Binary files a/docimg/mykradvo.png and b/docimg/mykradvo.png differ diff --git a/docimg/nuggetarmor.png b/docimg/nuggetarmor.png index 195946754..0bec0bc2c 100644 Binary files a/docimg/nuggetarmor.png and b/docimg/nuggetarmor.png differ diff --git a/docimg/nuggethealth.png b/docimg/nuggethealth.png index 13e3e5ac4..75cda1727 100644 Binary files a/docimg/nuggethealth.png and b/docimg/nuggethealth.png differ diff --git a/docimg/nutatcobar.png b/docimg/nutatcobar.png index d1911732b..e944dac4a 100644 Binary files a/docimg/nutatcobar.png and b/docimg/nutatcobar.png differ diff --git a/docimg/omnisight.png b/docimg/omnisight.png index 91ec3bd57..63a499751 100644 Binary files a/docimg/omnisight.png and b/docimg/omnisight.png differ diff --git a/docimg/plasmaammo.png b/docimg/plasmaammo.png new file mode 100644 index 000000000..5b0514a6a Binary files /dev/null and b/docimg/plasmaammo.png differ diff --git a/docimg/plasmablast.png b/docimg/plasmablast.png new file mode 100644 index 000000000..065cea3e4 Binary files /dev/null and b/docimg/plasmablast.png differ diff --git a/docimg/puntzerbeta.png b/docimg/puntzerbeta.png new file mode 100644 index 000000000..e7d2e955e Binary files /dev/null and b/docimg/puntzerbeta.png differ diff --git a/docimg/puntzergamma.png b/docimg/puntzergamma.png new file mode 100644 index 000000000..768b505f3 Binary files /dev/null and b/docimg/puntzergamma.png differ diff --git a/docimg/pusher.png b/docimg/pusher.png deleted file mode 100644 index 83b318036..000000000 Binary files a/docimg/pusher.png and /dev/null differ diff --git a/docimg/quadammo.png b/docimg/quadammo.png new file mode 100644 index 000000000..76d846d11 Binary files /dev/null and b/docimg/quadammo.png differ diff --git a/docimg/quadravol.png b/docimg/quadravol.png new file mode 100644 index 000000000..7b3ea36d5 Binary files /dev/null and b/docimg/quadravol.png differ diff --git a/docimg/rafankos.png b/docimg/rafankos.png new file mode 100644 index 000000000..d5f069309 Binary files /dev/null and b/docimg/rafankos.png differ diff --git a/docimg/ragekit.png b/docimg/ragekit.png index 75faf4b3f..0dbef4480 100644 Binary files a/docimg/ragekit.png and b/docimg/ragekit.png differ diff --git a/docimg/raykhom.png b/docimg/raykhom.png new file mode 100644 index 000000000..35be080d9 Binary files /dev/null and b/docimg/raykhom.png differ diff --git a/docimg/refresher.png b/docimg/refresher.png index 53b112f8e..d46cd2970 100644 Binary files a/docimg/refresher.png and b/docimg/refresher.png differ diff --git a/docimg/sandwich.png b/docimg/sandwich.png index 003da005b..f1abac880 100644 Binary files a/docimg/sandwich.png and b/docimg/sandwich.png differ diff --git a/docimg/sayabean.png b/docimg/sayabean.png index 2f940c397..eee326d49 100644 Binary files a/docimg/sayabean.png and b/docimg/sayabean.png differ diff --git a/docimg/sayasmug.png b/docimg/sayasmug.png new file mode 100644 index 000000000..aacca4cb2 Binary files /dev/null and b/docimg/sayasmug.png differ diff --git a/docimg/sheenammo.png b/docimg/sheenammo.png new file mode 100644 index 000000000..ed26e6dee Binary files /dev/null and b/docimg/sheenammo.png differ diff --git a/docimg/sheenhmg.png b/docimg/sheenhmg.png new file mode 100644 index 000000000..27f47f83b Binary files /dev/null and b/docimg/sheenhmg.png differ diff --git a/docimg/shells.png b/docimg/shells.png index 9b0c912df..3aecd0df5 100644 Binary files a/docimg/shells.png and b/docimg/shells.png differ diff --git a/docimg/silverbullet.png b/docimg/silverbullet.png index 0ccc910c8..ba09293e4 100644 Binary files a/docimg/silverbullet.png and b/docimg/silverbullet.png differ diff --git a/docimg/sparkster.png b/docimg/sparkster.png new file mode 100644 index 000000000..d7eb7ac31 Binary files /dev/null and b/docimg/sparkster.png differ diff --git a/docimg/spreadgun.png b/docimg/spreadgun.png index 8a55cd73c..7656963a7 100644 Binary files a/docimg/spreadgun.png and b/docimg/spreadgun.png differ diff --git a/docimg/sprite.png b/docimg/sprite.png index 4f4d6cad1..c49272de7 100644 Binary files a/docimg/sprite.png and b/docimg/sprite.png differ diff --git a/docimg/tether.png b/docimg/tether.png index 4dfcdb1f6..6dc0baf00 100644 Binary files a/docimg/tether.png and b/docimg/tether.png differ diff --git a/docimg/tetrahealth.png b/docimg/tetrahealth.png index 0e11a2ee9..ea2ef9d6e 100644 Binary files a/docimg/tetrahealth.png and b/docimg/tetrahealth.png differ diff --git a/docimg/tootfroot.png b/docimg/tootfroot.png index 20cb11d89..b45b59332 100644 Binary files a/docimg/tootfroot.png and b/docimg/tootfroot.png differ diff --git a/docimg/wallbuster.png b/docimg/wallbuster.png index 84f08e1ba..3b067d87b 100644 Binary files a/docimg/wallbuster.png and b/docimg/wallbuster.png differ diff --git a/docimg/wararmor.png b/docimg/wararmor.png index 66c83c7e2..5dedda8e8 100644 Binary files a/docimg/wararmor.png and b/docimg/wararmor.png differ diff --git a/docimg/xsbbullet.png b/docimg/xsbbullet.png index 9d1475210..f105481a9 100644 Binary files a/docimg/xsbbullet.png and b/docimg/xsbbullet.png differ diff --git a/docimg/ynykron.png b/docimg/ynykron.png index ba29dec24..4333eb6b0 100644 Binary files a/docimg/ynykron.png and b/docimg/ynykron.png differ diff --git a/docimg/ynykronammo.png b/docimg/ynykronammo.png index 1034d3a3e..aa893d9bb 100644 Binary files a/docimg/ynykronammo.png and b/docimg/ynykronammo.png differ diff --git a/filter/doom.id/swwmdialogue.doom b/filter/doom.id/swwmdialogue.doom new file mode 100644 index 000000000..1528d7393 --- /dev/null +++ b/filter/doom.id/swwmdialogue.doom @@ -0,0 +1,257 @@ +# Doom 1 +DLG PHOBOS + SEQ SAYA + NAME SAYAPHOBOS + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG DEIMOS + SEQ SAYA + NAME SAYADEIMOS + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG DIS + SEQ SAYA + NAME SAYADIS + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG THY + SEQ SAYA + NAME SAYATHY + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG SIGIL + SEQ CYTHO + NAME CYTHOSIGIL + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG SIGIL2 + SEQ CYTHO + NAME CYTHOSIGIL2 + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +# Doom 2 +DLG DIMPLE + SEQ SAYA + NAME SAYADIMPLE + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +DLG CIRCLE + SEQ SAYA + NAME SAYACIRCLE + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +DLG GOTCHA + SEQ SAYA + NAME SAYAGOTCHA + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +DLG GOTCHAEND + SEQ SAYA + NAME SAYAGOTCHAEND + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +DLG IOS + SEQ SAYA + NAME SAYAIOS + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +DLG RAMPANCY + SEQ SAYA + NAME SAYARAMPANCY + CNT 4 + DELAY 250 + ENDSEQ +ENDDLG +DLG NERVE + SEQ CYTHO + NAME CYTHONERVE + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +# Eviternity +DLG DMN + SEQ SAYA + NAME SAYADMN + CNT 8 + DELAY 40 + ENDSEQ +ENDDLG +DLG CRE + SEQ SAYA + NAME SAYACRE + CNT 4 + DELAY 50 + ENDSEQ +ENDDLG +DLG CRY + SEQ SAYA + NAME SAYACRY + CNT 5 + DELAY 30 + ENDSEQ +ENDDLG +DLG CON + SEQ SAYA + NAME SAYACON + CNT 5 + DELAY 50 + ENDSEQ +ENDDLG +DLG SLA + SEQ SAYA + NAME SAYASLA + CNT 1 + DELAY 120 + ENDSEQ +ENDDLG +DLG EVIA + SEQ SAYA + NAME SAYAEVIA + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG EVIB + SEQ SAYA + NAME SAYAEVIB + CNT 2 + DELAY 20 + ENDSEQ +ENDDLG +DLG EV2A + SEQ SAYA + NAME SAYAEV2A + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG EV2B + SEQ SAYA + NAME SAYAEV2B + CNT 5 + DELAY 30 + ENDSEQ +ENDDLG +DLG EV2C + SEQ SAYA + NAME SAYAEV2C + CNT 2 + DELAY 20 + ENDSEQ +ENDDLG +DLG EV2D + SEQ SAYA + NAME SAYAEV2D + CNT 2 + DELAY 30 + ENDSEQ +ENDDLG +DLG EV2E + SEQ SAYA + NAME SAYAEV2E + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG EV2F + SEQ SAYA + NAME SAYAEV2F + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG EV2G + SEQ SAYA + NAME SAYAEV2G + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG EV2H + SEQ SAYA + NAME SAYAEV2H + CNT 3 + DELAY 40 + ENDSEQ +ENDDLG +DLG EV2I + SEQ SAYA + NAME SAYAEV2I + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG EV2J + SEQ SAYA + NAME SAYAEV2J + CNT 2 + DELAY 120 + ENDSEQ +ENDDLG +DLG EV2K + SEQ SAYA + NAME SAYAEV2K + CNT 2 + DELAY 40 + ENDSEQ +ENDDLG +DLG EV2L + SEQ SAYA + NAME SAYAEV2L + CNT 2 + DELAY 20 + ENDSEQ +ENDDLG +DLG EV2M + SEQ SAYA + NAME SAYAEV2M + CNT 1 + DELAY 20 + ENDSEQ +ENDDLG +DLG EV2N + SEQ SAYA + NAME SAYAEV2N + CNT 2 + DELAY 20 + ENDSEQ +ENDDLG +DLG EV2O + SEQ SAYA + NAME SAYAEV2O + CNT 1 + DELAY 20 + ENDSEQ +ENDDLG +DLG EV2P + SEQ SAYA + NAME SAYAEV2P + CNT 3 + DELAY 20 + STARTDELAY 10 + ENDDELAY 20 + ENDSEQ +ENDDLG diff --git a/filter/game-hexen/zscript/items/swwm_armor_filtered.zsc b/filter/game-hexen/zscript/items/swwm_armor_filtered.zsc new file mode 100644 index 000000000..39abd703a --- /dev/null +++ b/filter/game-hexen/zscript/items/swwm_armor_filtered.zsc @@ -0,0 +1,57 @@ +// In Hexen, armors have +NOGRAVITY as a default flag +// unfortunately there is no better way to do that than to +// duplicate this whole file and putting it in a filter + +Class BlastSuitItem : SWWMSpareArmor +{ + override Inventory CreateCopy( Actor other ) + { + // additional lore + SWWMLoreLibrary.Add(other.player,"BlastSuit"); + return Super.CreateCopy(other); + } + Default + { + Tag "$T_BLASTSUIT"; + Stamina 40000; + Inventory.Icon "graphics/HUD/Icons/I_BlastSuit.png"; + Inventory.PickupMessage "$T_BLASTSUIT"; + Inventory.UseSound "armor/blastsuit"; + Inventory.RestrictedTo 'Demolitionist'; + SWWMSpareArmor.GiveArmor 'BlastSuit'; + +NOGRAVITY; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} + +Class WarArmorItem : SWWMSpareArmor +{ + override Inventory CreateCopy( Actor other ) + { + // additional lore + SWWMLoreLibrary.Add(other.player,"WarArmor"); + return Super.CreateCopy(other); + } + Default + { + Tag "$T_WARARMOR"; + Stamina 100000; + Inventory.Icon "graphics/HUD/Icons/I_WarArmor.png"; + Inventory.PickupMessage "$T_WARARMOR"; + Inventory.UseSound "armor/wararmor"; + Inventory.RestrictedTo 'Demolitionist'; + SWWMSpareArmor.GiveArmor 'WarArmor'; + +NOGRAVITY; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/filter/game-raven/graphics/KBase/PFP_Demolitionist.png b/filter/game-raven/graphics/KBase/PFP_Demolitionist.png index 13dacbba9..621335e42 100644 Binary files a/filter/game-raven/graphics/KBase/PFP_Demolitionist.png and b/filter/game-raven/graphics/KBase/PFP_Demolitionist.png differ diff --git a/filter/heretic/swwmdialogue.heretic b/filter/heretic/swwmdialogue.heretic new file mode 100644 index 000000000..efd2c5cba --- /dev/null +++ b/filter/heretic/swwmdialogue.heretic @@ -0,0 +1,36 @@ +# Heretic +DLG MAW + SEQ SAYA + NAME SAYAMAW + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +DLG PORTALS + SEQ SAYA + NAME SAYAPORTALS + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +DLG DSPARIL + SEQ SAYA + NAME SAYADSPARIL + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG +DLG HEADS + SEQ SAYA + NAME SAYAHEADS + CNT 6 + DELAY 40 + ENDSEQ +ENDDLG +DLG BULLS + SEQ SAYA + NAME SAYABULLS + CNT 5 + DELAY 40 + ENDSEQ +ENDDLG diff --git a/filter/hexen.deathkings/swwmdialogue.deathkings b/filter/hexen.deathkings/swwmdialogue.deathkings new file mode 100644 index 000000000..cd6d91fa6 --- /dev/null +++ b/filter/hexen.deathkings/swwmdialogue.deathkings @@ -0,0 +1,81 @@ +# Deathkings +DLG BLIGHT + SEQ SAYA + NAME SAYABLIGHTA + CNT 1 + DELAY 40 + ENDSEQ + SEQ Kirin + NAME SAYABLIGHTB + CNT 1 + DELAY 5 + ENDDELAY 15 + ENDSEQ + SEQ SAYA + NAME SAYABLIGHTC + CNT 2 + DELAY 20 + ENDSEQ +ENDDLG +DLG CONSTABLE + SEQ SAYA + NAME SAYACONSTABLEA + CNT 2 + DELAY 40 + ENDSEQ + SEQ IBUKI + NAME SAYACONSTABLEB + CNT 1 + DELAY 30 + ENDSEQ + SEQ SAYA + NAME SAYACONSTABLEC + CNT 1 + DELAY 20 + ENDSEQ + SEQ IBUKI + NAME SAYACONSTABLED + CNT 1 + DELAY 20 + ENDSEQ +ENDDLG +DLG NAVE + SEQ SAYA + NAME SAYANAVEA + CNT 2 + DELAY 40 + ENDSEQ + SEQ IBUKI + NAME SAYANAVEB + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME SAYANAVEC + CNT 1 + DELAY 5 + ENDDELAY 30 + ENDSEQ + SEQ SAYA + NAME SAYANAVED + CNT 1 + DELAY 20 + ENDSEQ + SEQ IBUKI + NAME SAYANAVEE + CNT 1 + DELAY 30 + ENDSEQ + SEQ SAYA + NAME SAYANAVEF + CNT 1 + DELAY 40 + ENDSEQ +ENDDLG +DLG DEATHKINGS + SEQ SAYA + NAME SAYADEATHKINGS + CNT 1 + DELAY 40 + ENDSEQ +ENDDLG diff --git a/filter/hexen.hexen/swwmdialogue.hexen b/filter/hexen.hexen/swwmdialogue.hexen new file mode 100644 index 000000000..5f6b0483a --- /dev/null +++ b/filter/hexen.hexen/swwmdialogue.hexen @@ -0,0 +1,204 @@ +# Hexen +DLG GREET + SEQ SAYA + NAME SAYAGREETA + CNT 3 + DELAY 150 + ENDSEQ + SEQ KIRIN + NAME SAYAGREETB + CNT 1 + DELAY 20 + ENDSEQ + SEQ SAYA + NAME SAYAGREETC + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME SAYAGREETD + CNT 1 + DELAY 30 + ENDSEQ + SEQ SAYA + NAME SAYAGREETE + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME SAYAGREETF + CNT 1 + DELAY 30 + ENDSEQ +ENDDLG +DLG BLOOD + SEQ SAYA + NAME SAYABLOODA + CNT 2 + DELAY 220 + ENDSEQ + SEQ IBUKI + NAME SAYABLOODB + CNT 1 + DELAY 20 + ENDSEQ + SEQ SAYA + NAME SAYABLOODC + CNT 1 + DELAY 30 + ENDSEQ +ENDDLG +DLG HYPO + SEQ SAYA + NAME SAYAHYPO + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG WORSHIP + SEQ KIRIN + NAME KIRINWORSHIPA + CNT 1 + DELAY 150 + ENDSEQ + SEQ SAYA + NAME KIRINWORSHIPB + CNT 1 + DELAY 40 + ENDDELAY 50 + ENDSEQ + SEQ KIRIN + NAME KIRINWORSHIPC + CNT 1 + DELAY 20 + ENDSEQ + SEQ SAYA + NAME KIRINWORSHIPD + CNT 1 + DELAY 40 + ENDSEQ + SEQ KIRIN + NAME KIRINWORSHIPE + CNT 1 + DELAY 20 + ENDDELAY 30 + ENDSEQ + SEQ SAYA + NAME KIRINWORSHIPF + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME KIRINWORSHIPG + CNT 1 + DELAY 40 + ENDSEQ +ENDDLG +DLG GAME + SEQ SAYA + NAME SAYAGAMEA + CNT 2 + DELAY 200 + ENDSEQ + SEQ IBUKI + NAME SAYAGAMEB + CNT 1 + DELAY 30 + ENDSEQ + SEQ SAYA + NAME SAYAGAMEC + CNT 1 + DELAY 20 + ENDSEQ +ENDDLG +DLG MASTERS + SEQ SAYA + NAME SAYAMASTERSA + CNT 2 + DELAY 150 + ENDDELAY 60 + ENDSEQ + SEQ IBUKI + NAME SAYAMASTERSB + CNT 1 + DELAY 20 + ENDSEQ + SEQ SAYA + NAME SAYAMASTERSC + CNT 1 + DELAY 20 + ENDSEQ + SEQ IBUKI + NAME SAYAMASTERSD + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME SAYAMASTERSE + CNT 1 + DELAY 40 + ENDSEQ + SEQ SAYA + NAME SAYAMASTERSF + CNT 1 + DELAY 20 + ENDSEQ +ENDDLG +DLG FIGHTER + SEQ SAYA + NAME SAYAFIGHTER + CNT 2 + DELAY 40 + ENDSEQ +ENDDLG +DLG CLERIC + SEQ SAYA + NAME SAYACLERICA + CNT 2 + DELAY 40 + ENDSEQ + SEQ KIRIN + NAME SAYACLERICB + CNT 1 + DELAY 20 + ENDSEQ + SEQ SAYA + NAME SAYACLERICC + CNT 2 + DELAY 20 + ENDSEQ +ENDDLG +DLG MAGE + SEQ SAYA + NAME SAYAMAGE + CNT 4 + DELAY 40 + ENDSEQ +ENDDLG +DLG KORAX + SEQ SAYA + NAME SAYAKORAXA + CNT 1 + DELAY 40 + ENDSEQ + SEQ KIRIN + NAME SAYAKORAXB + CNT 1 + DELAY 20 + ENDSEQ + SEQ IBUKI + NAME SAYAKORAXC + CNT 1 + DELAY 20 + ENDSEQ + SEQ SAYA + NAME SAYAKORAXD + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME SAYAKORAXE + CNT 1 + DELAY 20 + ENDSEQ +ENDDLG diff --git a/filter/hexen/sprites/TSPKX0.png b/filter/hexen/sprites/TSPKX0.png index 80ed94ace..2cf94d548 100644 Binary files a/filter/hexen/sprites/TSPKX0.png and b/filter/hexen/sprites/TSPKX0.png differ diff --git a/filter/hexen/swwmdialogue.puzzles b/filter/hexen/swwmdialogue.puzzles new file mode 100644 index 000000000..5cc220d06 --- /dev/null +++ b/filter/hexen/swwmdialogue.puzzles @@ -0,0 +1,124 @@ +# Hexen puzzles +DLG PUZZLE1 + SEQ KIRIN + NAME KIRINPUZZLEA + CNT 2 + DELAY 90 + ENDSEQ +ENDDLG +DLG PUZZLE2 + SEQ KIRIN + NAME KIRINPUZZLEB + CNT 1 + DELAY 80 + ENDSEQ +ENDDLG +DLG PUZZLE3 + SEQ KIRIN + NAME KIRINPUZZLEC + CNT 2 + DELAY 70 + ENDSEQ +ENDDLG +DLG PUZZLE4 + SEQ KIRIN + NAME KIRINPUZZLED + CNT 2 + DELAY 70 + ENDSEQ +ENDDLG +DLG PUZZLE5 + SEQ KIRIN + NAME KIRINPUZZLEE + CNT 2 + DELAY 60 + ENDSEQ +ENDDLG +DLG PUZZLE6 + SEQ KIRIN + NAME KIRINPUZZLEF + CNT 3 + DELAY 60 + ENDSEQ + SEQ SAYA + NAME KIRINPUZZLEG + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME KIRINPUZZLEH + CNT 1 + DELAY 30 + ENDSEQ + SEQ SAYA + NAME KIRINPUZZLEI + CNT 2 + DELAY 20 + ENDSEQ +ENDDLG +DLG PUZZLE7 + SEQ KIRIN + NAME KIRINPUZZLEJ + CNT 2 + DELAY 80 + ENDSEQ +ENDDLG +DLG PUZZLE8 + SEQ KIRIN + NAME KIRINPUZZLEK + CNT 1 + DELAY 60 + ENDSEQ + SEQ IBUKI + NAME KIRINPUZZLEL + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME KIRINPUZZLEM + CNT 1 + DELAY 60 + ENDSEQ + SEQ SAYA + NAME KIRINPUZZLEN + CNT 1 + DELAY 30 + ENDSEQ + SEQ IBUKI + NAME KIRINPUZZLEO + CNT 1 + DELAY 20 + ENDSEQ + SEQ SAYA + NAME KIRINPUZZLEP + CNT 1 + DELAY 30 + ENDSEQ + SEQ IBUKI + NAME KIRINPUZZLEQ + CNT 1 + DELAY 20 + ENDSEQ +ENDDLG +DLG PUZZLE9 + SEQ KIRIN + NAME KIRINPUZZLER + CNT 3 + DELAY 60 + ENDSEQ + SEQ SAYA + NAME KIRINPUZZLES + CNT 1 + DELAY 20 + ENDSEQ + SEQ KIRIN + NAME KIRINPUZZLET + CNT 1 + DELAY 30 + ENDSEQ + SEQ SAYA + NAME KIRINPUZZLEU + CNT 1 + DELAY 20 + ENDSEQ +ENDDLG diff --git a/fonts.wad b/fonts.wad deleted file mode 100644 index ba4928907..000000000 Binary files a/fonts.wad and /dev/null differ diff --git a/fonts/MiniHUDOutline/0021.png b/fonts/MiniHUDOutline/0021.png new file mode 100644 index 000000000..60e87613f Binary files /dev/null and b/fonts/MiniHUDOutline/0021.png differ diff --git a/fonts/MiniHUDOutline/0022.png b/fonts/MiniHUDOutline/0022.png new file mode 100644 index 000000000..feea96a8e Binary files /dev/null and b/fonts/MiniHUDOutline/0022.png differ diff --git a/fonts/MiniHUDOutline/0023.png b/fonts/MiniHUDOutline/0023.png new file mode 100644 index 000000000..8c7f9b11c Binary files /dev/null and b/fonts/MiniHUDOutline/0023.png differ diff --git a/fonts/MiniHUDOutline/0024.png b/fonts/MiniHUDOutline/0024.png new file mode 100644 index 000000000..37874176c Binary files /dev/null and b/fonts/MiniHUDOutline/0024.png differ diff --git a/fonts/MiniHUDOutline/0025.png b/fonts/MiniHUDOutline/0025.png new file mode 100644 index 000000000..7fd043cbd Binary files /dev/null and b/fonts/MiniHUDOutline/0025.png differ diff --git a/fonts/MiniHUDOutline/0026.png b/fonts/MiniHUDOutline/0026.png new file mode 100644 index 000000000..7099bdefc Binary files /dev/null and b/fonts/MiniHUDOutline/0026.png differ diff --git a/fonts/MiniHUDOutline/0027.png b/fonts/MiniHUDOutline/0027.png new file mode 100644 index 000000000..fb2db3c4c Binary files /dev/null and b/fonts/MiniHUDOutline/0027.png differ diff --git a/fonts/MiniHUDOutline/0028.png b/fonts/MiniHUDOutline/0028.png new file mode 100644 index 000000000..f49986880 Binary files /dev/null and b/fonts/MiniHUDOutline/0028.png differ diff --git a/fonts/MiniHUDOutline/0029.png b/fonts/MiniHUDOutline/0029.png new file mode 100644 index 000000000..3c5735965 Binary files /dev/null and b/fonts/MiniHUDOutline/0029.png differ diff --git a/fonts/MiniHUDOutline/002A.png b/fonts/MiniHUDOutline/002A.png new file mode 100644 index 000000000..020255538 Binary files /dev/null and b/fonts/MiniHUDOutline/002A.png differ diff --git a/fonts/MiniHUDOutline/002B.png b/fonts/MiniHUDOutline/002B.png new file mode 100644 index 000000000..d74fc67d8 Binary files /dev/null and b/fonts/MiniHUDOutline/002B.png differ diff --git a/fonts/MiniHUDOutline/002C.png b/fonts/MiniHUDOutline/002C.png new file mode 100644 index 000000000..eb71786d8 Binary files /dev/null and b/fonts/MiniHUDOutline/002C.png differ diff --git a/fonts/MiniHUDOutline/002D.png b/fonts/MiniHUDOutline/002D.png new file mode 100644 index 000000000..df6a1f8c7 Binary files /dev/null and b/fonts/MiniHUDOutline/002D.png differ diff --git a/fonts/MiniHUDOutline/002E.png b/fonts/MiniHUDOutline/002E.png new file mode 100644 index 000000000..86bbaf92e Binary files /dev/null and b/fonts/MiniHUDOutline/002E.png differ diff --git a/fonts/MiniHUDOutline/002F.png b/fonts/MiniHUDOutline/002F.png new file mode 100644 index 000000000..c4172f425 Binary files /dev/null and b/fonts/MiniHUDOutline/002F.png differ diff --git a/fonts/MiniHUDOutline/0030.png b/fonts/MiniHUDOutline/0030.png new file mode 100644 index 000000000..383e96f4b Binary files /dev/null and b/fonts/MiniHUDOutline/0030.png differ diff --git a/fonts/MiniHUDOutline/0031.png b/fonts/MiniHUDOutline/0031.png new file mode 100644 index 000000000..75257cae0 Binary files /dev/null and b/fonts/MiniHUDOutline/0031.png differ diff --git a/fonts/MiniHUDOutline/0032.png b/fonts/MiniHUDOutline/0032.png new file mode 100644 index 000000000..1280e6d11 Binary files /dev/null and b/fonts/MiniHUDOutline/0032.png differ diff --git a/fonts/MiniHUDOutline/0033.png b/fonts/MiniHUDOutline/0033.png new file mode 100644 index 000000000..11d70e2ff Binary files /dev/null and b/fonts/MiniHUDOutline/0033.png differ diff --git a/fonts/MiniHUDOutline/0034.png b/fonts/MiniHUDOutline/0034.png new file mode 100644 index 000000000..248387a27 Binary files /dev/null and b/fonts/MiniHUDOutline/0034.png differ diff --git a/fonts/MiniHUDOutline/0035.png b/fonts/MiniHUDOutline/0035.png new file mode 100644 index 000000000..c8f13c53f Binary files /dev/null and b/fonts/MiniHUDOutline/0035.png differ diff --git a/fonts/MiniHUDOutline/0036.png b/fonts/MiniHUDOutline/0036.png new file mode 100644 index 000000000..4031e845f Binary files /dev/null and b/fonts/MiniHUDOutline/0036.png differ diff --git a/fonts/MiniHUDOutline/0037.png b/fonts/MiniHUDOutline/0037.png new file mode 100644 index 000000000..50f0b9ae8 Binary files /dev/null and b/fonts/MiniHUDOutline/0037.png differ diff --git a/fonts/MiniHUDOutline/0038.png b/fonts/MiniHUDOutline/0038.png new file mode 100644 index 000000000..a69be45e2 Binary files /dev/null and b/fonts/MiniHUDOutline/0038.png differ diff --git a/fonts/MiniHUDOutline/0039.png b/fonts/MiniHUDOutline/0039.png new file mode 100644 index 000000000..f7db8e9ad Binary files /dev/null and b/fonts/MiniHUDOutline/0039.png differ diff --git a/fonts/MiniHUDOutline/003A.png b/fonts/MiniHUDOutline/003A.png new file mode 100644 index 000000000..d1bd87cad Binary files /dev/null and b/fonts/MiniHUDOutline/003A.png differ diff --git a/fonts/MiniHUDOutline/003B.png b/fonts/MiniHUDOutline/003B.png new file mode 100644 index 000000000..5e646478d Binary files /dev/null and b/fonts/MiniHUDOutline/003B.png differ diff --git a/fonts/MiniHUDOutline/003C.png b/fonts/MiniHUDOutline/003C.png new file mode 100644 index 000000000..ea4af9b63 Binary files /dev/null and b/fonts/MiniHUDOutline/003C.png differ diff --git a/fonts/MiniHUDOutline/003D.png b/fonts/MiniHUDOutline/003D.png new file mode 100644 index 000000000..7e3f8acd6 Binary files /dev/null and b/fonts/MiniHUDOutline/003D.png differ diff --git a/fonts/MiniHUDOutline/003E.png b/fonts/MiniHUDOutline/003E.png new file mode 100644 index 000000000..239d04ecf Binary files /dev/null and b/fonts/MiniHUDOutline/003E.png differ diff --git a/fonts/MiniHUDOutline/003F.png b/fonts/MiniHUDOutline/003F.png new file mode 100644 index 000000000..10cd2994d Binary files /dev/null and b/fonts/MiniHUDOutline/003F.png differ diff --git a/fonts/MiniHUDOutline/0040.png b/fonts/MiniHUDOutline/0040.png new file mode 100644 index 000000000..00df57c4e Binary files /dev/null and b/fonts/MiniHUDOutline/0040.png differ diff --git a/fonts/MiniHUDOutline/0041.png b/fonts/MiniHUDOutline/0041.png new file mode 100644 index 000000000..51a4f07b4 Binary files /dev/null and b/fonts/MiniHUDOutline/0041.png differ diff --git a/fonts/MiniHUDOutline/0042.png b/fonts/MiniHUDOutline/0042.png new file mode 100644 index 000000000..b1b12c589 Binary files /dev/null and b/fonts/MiniHUDOutline/0042.png differ diff --git a/fonts/MiniHUDOutline/0043.png b/fonts/MiniHUDOutline/0043.png new file mode 100644 index 000000000..f81276c29 Binary files /dev/null and b/fonts/MiniHUDOutline/0043.png differ diff --git a/fonts/MiniHUDOutline/0044.png b/fonts/MiniHUDOutline/0044.png new file mode 100644 index 000000000..eba6aeda9 Binary files /dev/null and b/fonts/MiniHUDOutline/0044.png differ diff --git a/fonts/MiniHUDOutline/0045.png b/fonts/MiniHUDOutline/0045.png new file mode 100644 index 000000000..09db43d39 Binary files /dev/null and b/fonts/MiniHUDOutline/0045.png differ diff --git a/fonts/MiniHUDOutline/0046.png b/fonts/MiniHUDOutline/0046.png new file mode 100644 index 000000000..76d9ab44f Binary files /dev/null and b/fonts/MiniHUDOutline/0046.png differ diff --git a/fonts/MiniHUDOutline/0047.png b/fonts/MiniHUDOutline/0047.png new file mode 100644 index 000000000..217f97ac9 Binary files /dev/null and b/fonts/MiniHUDOutline/0047.png differ diff --git a/fonts/MiniHUDOutline/0048.png b/fonts/MiniHUDOutline/0048.png new file mode 100644 index 000000000..fe39733f3 Binary files /dev/null and b/fonts/MiniHUDOutline/0048.png differ diff --git a/fonts/MiniHUDOutline/0049.png b/fonts/MiniHUDOutline/0049.png new file mode 100644 index 000000000..ba45d983e Binary files /dev/null and b/fonts/MiniHUDOutline/0049.png differ diff --git a/fonts/MiniHUDOutline/004A.png b/fonts/MiniHUDOutline/004A.png new file mode 100644 index 000000000..972347908 Binary files /dev/null and b/fonts/MiniHUDOutline/004A.png differ diff --git a/fonts/MiniHUDOutline/004B.png b/fonts/MiniHUDOutline/004B.png new file mode 100644 index 000000000..60188007f Binary files /dev/null and b/fonts/MiniHUDOutline/004B.png differ diff --git a/fonts/MiniHUDOutline/004C.png b/fonts/MiniHUDOutline/004C.png new file mode 100644 index 000000000..e700dd102 Binary files /dev/null and b/fonts/MiniHUDOutline/004C.png differ diff --git a/fonts/MiniHUDOutline/004D.png b/fonts/MiniHUDOutline/004D.png new file mode 100644 index 000000000..765991ecc Binary files /dev/null and b/fonts/MiniHUDOutline/004D.png differ diff --git a/fonts/MiniHUDOutline/004E.png b/fonts/MiniHUDOutline/004E.png new file mode 100644 index 000000000..e95f3aecf Binary files /dev/null and b/fonts/MiniHUDOutline/004E.png differ diff --git a/fonts/MiniHUDOutline/004F.png b/fonts/MiniHUDOutline/004F.png new file mode 100644 index 000000000..e71e166c8 Binary files /dev/null and b/fonts/MiniHUDOutline/004F.png differ diff --git a/fonts/MiniHUDOutline/0050.png b/fonts/MiniHUDOutline/0050.png new file mode 100644 index 000000000..2732b3ceb Binary files /dev/null and b/fonts/MiniHUDOutline/0050.png differ diff --git a/fonts/MiniHUDOutline/0051.png b/fonts/MiniHUDOutline/0051.png new file mode 100644 index 000000000..e1f68c222 Binary files /dev/null and b/fonts/MiniHUDOutline/0051.png differ diff --git a/fonts/MiniHUDOutline/0052.png b/fonts/MiniHUDOutline/0052.png new file mode 100644 index 000000000..e0f7a766f Binary files /dev/null and b/fonts/MiniHUDOutline/0052.png differ diff --git a/fonts/MiniHUDOutline/0053.png b/fonts/MiniHUDOutline/0053.png new file mode 100644 index 000000000..c2ac5c1e2 Binary files /dev/null and b/fonts/MiniHUDOutline/0053.png differ diff --git a/fonts/MiniHUDOutline/0054.png b/fonts/MiniHUDOutline/0054.png new file mode 100644 index 000000000..5f0c7029b Binary files /dev/null and b/fonts/MiniHUDOutline/0054.png differ diff --git a/fonts/MiniHUDOutline/0055.png b/fonts/MiniHUDOutline/0055.png new file mode 100644 index 000000000..858c77e76 Binary files /dev/null and b/fonts/MiniHUDOutline/0055.png differ diff --git a/fonts/MiniHUDOutline/0056.png b/fonts/MiniHUDOutline/0056.png new file mode 100644 index 000000000..c1d223851 Binary files /dev/null and b/fonts/MiniHUDOutline/0056.png differ diff --git a/fonts/MiniHUDOutline/0057.png b/fonts/MiniHUDOutline/0057.png new file mode 100644 index 000000000..d7a722495 Binary files /dev/null and b/fonts/MiniHUDOutline/0057.png differ diff --git a/fonts/MiniHUDOutline/0058.png b/fonts/MiniHUDOutline/0058.png new file mode 100644 index 000000000..1a757d66b Binary files /dev/null and b/fonts/MiniHUDOutline/0058.png differ diff --git a/fonts/MiniHUDOutline/0059.png b/fonts/MiniHUDOutline/0059.png new file mode 100644 index 000000000..8d874e534 Binary files /dev/null and b/fonts/MiniHUDOutline/0059.png differ diff --git a/fonts/MiniHUDOutline/005A.png b/fonts/MiniHUDOutline/005A.png new file mode 100644 index 000000000..86adbe9c7 Binary files /dev/null and b/fonts/MiniHUDOutline/005A.png differ diff --git a/fonts/MiniHUDOutline/005B.png b/fonts/MiniHUDOutline/005B.png new file mode 100644 index 000000000..7ec7ed8f4 Binary files /dev/null and b/fonts/MiniHUDOutline/005B.png differ diff --git a/fonts/MiniHUDOutline/005C.png b/fonts/MiniHUDOutline/005C.png new file mode 100644 index 000000000..22f72ad51 Binary files /dev/null and b/fonts/MiniHUDOutline/005C.png differ diff --git a/fonts/MiniHUDOutline/005D.png b/fonts/MiniHUDOutline/005D.png new file mode 100644 index 000000000..315fc1bd4 Binary files /dev/null and b/fonts/MiniHUDOutline/005D.png differ diff --git a/fonts/MiniHUDOutline/005E.png b/fonts/MiniHUDOutline/005E.png new file mode 100644 index 000000000..15345a133 Binary files /dev/null and b/fonts/MiniHUDOutline/005E.png differ diff --git a/fonts/MiniHUDOutline/005F.png b/fonts/MiniHUDOutline/005F.png new file mode 100644 index 000000000..1c23cdac3 Binary files /dev/null and b/fonts/MiniHUDOutline/005F.png differ diff --git a/fonts/MiniHUDOutline/0060.png b/fonts/MiniHUDOutline/0060.png new file mode 100644 index 000000000..8a9018fad Binary files /dev/null and b/fonts/MiniHUDOutline/0060.png differ diff --git a/fonts/MiniHUDOutline/0061.png b/fonts/MiniHUDOutline/0061.png new file mode 100644 index 000000000..efee9de14 Binary files /dev/null and b/fonts/MiniHUDOutline/0061.png differ diff --git a/fonts/MiniHUDOutline/0062.png b/fonts/MiniHUDOutline/0062.png new file mode 100644 index 000000000..8082af11f Binary files /dev/null and b/fonts/MiniHUDOutline/0062.png differ diff --git a/fonts/MiniHUDOutline/0063.png b/fonts/MiniHUDOutline/0063.png new file mode 100644 index 000000000..938bd9e47 Binary files /dev/null and b/fonts/MiniHUDOutline/0063.png differ diff --git a/fonts/MiniHUDOutline/0064.png b/fonts/MiniHUDOutline/0064.png new file mode 100644 index 000000000..929139032 Binary files /dev/null and b/fonts/MiniHUDOutline/0064.png differ diff --git a/fonts/MiniHUDOutline/0065.png b/fonts/MiniHUDOutline/0065.png new file mode 100644 index 000000000..6cf367d0e Binary files /dev/null and b/fonts/MiniHUDOutline/0065.png differ diff --git a/fonts/MiniHUDOutline/0066.png b/fonts/MiniHUDOutline/0066.png new file mode 100644 index 000000000..6a181cab9 Binary files /dev/null and b/fonts/MiniHUDOutline/0066.png differ diff --git a/fonts/MiniHUDOutline/0067.png b/fonts/MiniHUDOutline/0067.png new file mode 100644 index 000000000..b6732224a Binary files /dev/null and b/fonts/MiniHUDOutline/0067.png differ diff --git a/fonts/MiniHUDOutline/0068.png b/fonts/MiniHUDOutline/0068.png new file mode 100644 index 000000000..834676f03 Binary files /dev/null and b/fonts/MiniHUDOutline/0068.png differ diff --git a/fonts/MiniHUDOutline/0069.png b/fonts/MiniHUDOutline/0069.png new file mode 100644 index 000000000..645a99d79 Binary files /dev/null and b/fonts/MiniHUDOutline/0069.png differ diff --git a/fonts/MiniHUDOutline/006A.png b/fonts/MiniHUDOutline/006A.png new file mode 100644 index 000000000..3bb3e925a Binary files /dev/null and b/fonts/MiniHUDOutline/006A.png differ diff --git a/fonts/MiniHUDOutline/006B.png b/fonts/MiniHUDOutline/006B.png new file mode 100644 index 000000000..49c7eda08 Binary files /dev/null and b/fonts/MiniHUDOutline/006B.png differ diff --git a/fonts/MiniHUDOutline/006C.png b/fonts/MiniHUDOutline/006C.png new file mode 100644 index 000000000..636c1be55 Binary files /dev/null and b/fonts/MiniHUDOutline/006C.png differ diff --git a/fonts/MiniHUDOutline/006D.png b/fonts/MiniHUDOutline/006D.png new file mode 100644 index 000000000..6751d2b0a Binary files /dev/null and b/fonts/MiniHUDOutline/006D.png differ diff --git a/fonts/MiniHUDOutline/006E.png b/fonts/MiniHUDOutline/006E.png new file mode 100644 index 000000000..d6308e306 Binary files /dev/null and b/fonts/MiniHUDOutline/006E.png differ diff --git a/fonts/MiniHUDOutline/006F.png b/fonts/MiniHUDOutline/006F.png new file mode 100644 index 000000000..f23056c97 Binary files /dev/null and b/fonts/MiniHUDOutline/006F.png differ diff --git a/fonts/MiniHUDOutline/0070.png b/fonts/MiniHUDOutline/0070.png new file mode 100644 index 000000000..aaa8a6f6b Binary files /dev/null and b/fonts/MiniHUDOutline/0070.png differ diff --git a/fonts/MiniHUDOutline/0071.png b/fonts/MiniHUDOutline/0071.png new file mode 100644 index 000000000..9d2e7e50d Binary files /dev/null and b/fonts/MiniHUDOutline/0071.png differ diff --git a/fonts/MiniHUDOutline/0072.png b/fonts/MiniHUDOutline/0072.png new file mode 100644 index 000000000..4fee28dbf Binary files /dev/null and b/fonts/MiniHUDOutline/0072.png differ diff --git a/fonts/MiniHUDOutline/0073.png b/fonts/MiniHUDOutline/0073.png new file mode 100644 index 000000000..fd06025a3 Binary files /dev/null and b/fonts/MiniHUDOutline/0073.png differ diff --git a/fonts/MiniHUDOutline/0074.png b/fonts/MiniHUDOutline/0074.png new file mode 100644 index 000000000..5c1c6b6b2 Binary files /dev/null and b/fonts/MiniHUDOutline/0074.png differ diff --git a/fonts/MiniHUDOutline/0075.png b/fonts/MiniHUDOutline/0075.png new file mode 100644 index 000000000..3a9413960 Binary files /dev/null and b/fonts/MiniHUDOutline/0075.png differ diff --git a/fonts/MiniHUDOutline/0076.png b/fonts/MiniHUDOutline/0076.png new file mode 100644 index 000000000..bda55d76a Binary files /dev/null and b/fonts/MiniHUDOutline/0076.png differ diff --git a/fonts/MiniHUDOutline/0077.png b/fonts/MiniHUDOutline/0077.png new file mode 100644 index 000000000..67b04a66c Binary files /dev/null and b/fonts/MiniHUDOutline/0077.png differ diff --git a/fonts/MiniHUDOutline/0078.png b/fonts/MiniHUDOutline/0078.png new file mode 100644 index 000000000..2e4fdbc02 Binary files /dev/null and b/fonts/MiniHUDOutline/0078.png differ diff --git a/fonts/MiniHUDOutline/0079.png b/fonts/MiniHUDOutline/0079.png new file mode 100644 index 000000000..afdee223e Binary files /dev/null and b/fonts/MiniHUDOutline/0079.png differ diff --git a/fonts/MiniHUDOutline/007A.png b/fonts/MiniHUDOutline/007A.png new file mode 100644 index 000000000..e82a58759 Binary files /dev/null and b/fonts/MiniHUDOutline/007A.png differ diff --git a/fonts/MiniHUDOutline/007B.png b/fonts/MiniHUDOutline/007B.png new file mode 100644 index 000000000..b5a539ac8 Binary files /dev/null and b/fonts/MiniHUDOutline/007B.png differ diff --git a/fonts/MiniHUDOutline/007C.png b/fonts/MiniHUDOutline/007C.png new file mode 100644 index 000000000..e4c57b4da Binary files /dev/null and b/fonts/MiniHUDOutline/007C.png differ diff --git a/fonts/MiniHUDOutline/007D.png b/fonts/MiniHUDOutline/007D.png new file mode 100644 index 000000000..f67c202a6 Binary files /dev/null and b/fonts/MiniHUDOutline/007D.png differ diff --git a/fonts/MiniHUDOutline/007E.png b/fonts/MiniHUDOutline/007E.png new file mode 100644 index 000000000..b52828a1d Binary files /dev/null and b/fonts/MiniHUDOutline/007E.png differ diff --git a/fonts/MiniHUDOutline/207A.png b/fonts/MiniHUDOutline/207A.png new file mode 100644 index 000000000..f8fac7b35 Binary files /dev/null and b/fonts/MiniHUDOutline/207A.png differ diff --git a/fonts/MiniHUDOutline/221E.png b/fonts/MiniHUDOutline/221E.png new file mode 100644 index 000000000..c1c4736ce Binary files /dev/null and b/fonts/MiniHUDOutline/221E.png differ diff --git a/fonts/MiniHUDOutline/font.inf b/fonts/MiniHUDOutline/font.inf new file mode 100644 index 000000000..e393e1dc7 --- /dev/null +++ b/fonts/MiniHUDOutline/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 5 +FontHeight 6 +Kerning -1 diff --git a/fonts/MiniHUDShadow/0021.png b/fonts/MiniHUDShadow/0021.png new file mode 100644 index 000000000..e58e3b356 Binary files /dev/null and b/fonts/MiniHUDShadow/0021.png differ diff --git a/fonts/MiniHUDShadow/0022.png b/fonts/MiniHUDShadow/0022.png new file mode 100644 index 000000000..24987d423 Binary files /dev/null and b/fonts/MiniHUDShadow/0022.png differ diff --git a/fonts/MiniHUDShadow/0023.png b/fonts/MiniHUDShadow/0023.png new file mode 100644 index 000000000..c5cedafc0 Binary files /dev/null and b/fonts/MiniHUDShadow/0023.png differ diff --git a/fonts/MiniHUDShadow/0024.png b/fonts/MiniHUDShadow/0024.png new file mode 100644 index 000000000..d8a2f8fe1 Binary files /dev/null and b/fonts/MiniHUDShadow/0024.png differ diff --git a/fonts/MiniHUDShadow/0025.png b/fonts/MiniHUDShadow/0025.png new file mode 100644 index 000000000..796869cd1 Binary files /dev/null and b/fonts/MiniHUDShadow/0025.png differ diff --git a/fonts/MiniHUDShadow/0026.png b/fonts/MiniHUDShadow/0026.png new file mode 100644 index 000000000..9bf7ccc99 Binary files /dev/null and b/fonts/MiniHUDShadow/0026.png differ diff --git a/fonts/MiniHUDShadow/0027.png b/fonts/MiniHUDShadow/0027.png new file mode 100644 index 000000000..8ce2dfa51 Binary files /dev/null and b/fonts/MiniHUDShadow/0027.png differ diff --git a/fonts/MiniHUDShadow/0028.png b/fonts/MiniHUDShadow/0028.png new file mode 100644 index 000000000..6cd89ada2 Binary files /dev/null and b/fonts/MiniHUDShadow/0028.png differ diff --git a/fonts/MiniHUDShadow/0029.png b/fonts/MiniHUDShadow/0029.png new file mode 100644 index 000000000..db9020584 Binary files /dev/null and b/fonts/MiniHUDShadow/0029.png differ diff --git a/fonts/MiniHUDShadow/002A.png b/fonts/MiniHUDShadow/002A.png new file mode 100644 index 000000000..309e363b2 Binary files /dev/null and b/fonts/MiniHUDShadow/002A.png differ diff --git a/fonts/MiniHUDShadow/002B.png b/fonts/MiniHUDShadow/002B.png new file mode 100644 index 000000000..b824faa3a Binary files /dev/null and b/fonts/MiniHUDShadow/002B.png differ diff --git a/fonts/MiniHUDShadow/002C.png b/fonts/MiniHUDShadow/002C.png new file mode 100644 index 000000000..03d8a1dc2 Binary files /dev/null and b/fonts/MiniHUDShadow/002C.png differ diff --git a/fonts/MiniHUDShadow/002D.png b/fonts/MiniHUDShadow/002D.png new file mode 100644 index 000000000..9b8d2daee Binary files /dev/null and b/fonts/MiniHUDShadow/002D.png differ diff --git a/fonts/MiniHUDShadow/002E.png b/fonts/MiniHUDShadow/002E.png new file mode 100644 index 000000000..4a3bc5eb9 Binary files /dev/null and b/fonts/MiniHUDShadow/002E.png differ diff --git a/fonts/MiniHUDShadow/002F.png b/fonts/MiniHUDShadow/002F.png new file mode 100644 index 000000000..e29ca5548 Binary files /dev/null and b/fonts/MiniHUDShadow/002F.png differ diff --git a/fonts/MiniHUDShadow/0030.png b/fonts/MiniHUDShadow/0030.png new file mode 100644 index 000000000..809c332e3 Binary files /dev/null and b/fonts/MiniHUDShadow/0030.png differ diff --git a/fonts/MiniHUDShadow/0031.png b/fonts/MiniHUDShadow/0031.png new file mode 100644 index 000000000..6c4eb54bf Binary files /dev/null and b/fonts/MiniHUDShadow/0031.png differ diff --git a/fonts/MiniHUDShadow/0032.png b/fonts/MiniHUDShadow/0032.png new file mode 100644 index 000000000..1f5fe89b6 Binary files /dev/null and b/fonts/MiniHUDShadow/0032.png differ diff --git a/fonts/MiniHUDShadow/0033.png b/fonts/MiniHUDShadow/0033.png new file mode 100644 index 000000000..26e1f9f0b Binary files /dev/null and b/fonts/MiniHUDShadow/0033.png differ diff --git a/fonts/MiniHUDShadow/0034.png b/fonts/MiniHUDShadow/0034.png new file mode 100644 index 000000000..3d3adb9da Binary files /dev/null and b/fonts/MiniHUDShadow/0034.png differ diff --git a/fonts/MiniHUDShadow/0035.png b/fonts/MiniHUDShadow/0035.png new file mode 100644 index 000000000..a6fa0260e Binary files /dev/null and b/fonts/MiniHUDShadow/0035.png differ diff --git a/fonts/MiniHUDShadow/0036.png b/fonts/MiniHUDShadow/0036.png new file mode 100644 index 000000000..2f9f89fb7 Binary files /dev/null and b/fonts/MiniHUDShadow/0036.png differ diff --git a/fonts/MiniHUDShadow/0037.png b/fonts/MiniHUDShadow/0037.png new file mode 100644 index 000000000..0d00eb2a9 Binary files /dev/null and b/fonts/MiniHUDShadow/0037.png differ diff --git a/fonts/MiniHUDShadow/0038.png b/fonts/MiniHUDShadow/0038.png new file mode 100644 index 000000000..885270418 Binary files /dev/null and b/fonts/MiniHUDShadow/0038.png differ diff --git a/fonts/MiniHUDShadow/0039.png b/fonts/MiniHUDShadow/0039.png new file mode 100644 index 000000000..6f6a365e6 Binary files /dev/null and b/fonts/MiniHUDShadow/0039.png differ diff --git a/fonts/MiniHUDShadow/003A.png b/fonts/MiniHUDShadow/003A.png new file mode 100644 index 000000000..21fa6050d Binary files /dev/null and b/fonts/MiniHUDShadow/003A.png differ diff --git a/fonts/MiniHUDShadow/003B.png b/fonts/MiniHUDShadow/003B.png new file mode 100644 index 000000000..2aff30725 Binary files /dev/null and b/fonts/MiniHUDShadow/003B.png differ diff --git a/fonts/MiniHUDShadow/003C.png b/fonts/MiniHUDShadow/003C.png new file mode 100644 index 000000000..8a5e0cc4a Binary files /dev/null and b/fonts/MiniHUDShadow/003C.png differ diff --git a/fonts/MiniHUDShadow/003D.png b/fonts/MiniHUDShadow/003D.png new file mode 100644 index 000000000..356d9139d Binary files /dev/null and b/fonts/MiniHUDShadow/003D.png differ diff --git a/fonts/MiniHUDShadow/003E.png b/fonts/MiniHUDShadow/003E.png new file mode 100644 index 000000000..491729876 Binary files /dev/null and b/fonts/MiniHUDShadow/003E.png differ diff --git a/fonts/MiniHUDShadow/003F.png b/fonts/MiniHUDShadow/003F.png new file mode 100644 index 000000000..df7a714af Binary files /dev/null and b/fonts/MiniHUDShadow/003F.png differ diff --git a/fonts/MiniHUDShadow/0040.png b/fonts/MiniHUDShadow/0040.png new file mode 100644 index 000000000..848d4163d Binary files /dev/null and b/fonts/MiniHUDShadow/0040.png differ diff --git a/fonts/MiniHUDShadow/0041.png b/fonts/MiniHUDShadow/0041.png new file mode 100644 index 000000000..7460dbc3e Binary files /dev/null and b/fonts/MiniHUDShadow/0041.png differ diff --git a/fonts/MiniHUDShadow/0042.png b/fonts/MiniHUDShadow/0042.png new file mode 100644 index 000000000..5c09e029f Binary files /dev/null and b/fonts/MiniHUDShadow/0042.png differ diff --git a/fonts/MiniHUDShadow/0043.png b/fonts/MiniHUDShadow/0043.png new file mode 100644 index 000000000..b09dbf71e Binary files /dev/null and b/fonts/MiniHUDShadow/0043.png differ diff --git a/fonts/MiniHUDShadow/0044.png b/fonts/MiniHUDShadow/0044.png new file mode 100644 index 000000000..e219aeb73 Binary files /dev/null and b/fonts/MiniHUDShadow/0044.png differ diff --git a/fonts/MiniHUDShadow/0045.png b/fonts/MiniHUDShadow/0045.png new file mode 100644 index 000000000..0040816b1 Binary files /dev/null and b/fonts/MiniHUDShadow/0045.png differ diff --git a/fonts/MiniHUDShadow/0046.png b/fonts/MiniHUDShadow/0046.png new file mode 100644 index 000000000..230e98450 Binary files /dev/null and b/fonts/MiniHUDShadow/0046.png differ diff --git a/fonts/MiniHUDShadow/0047.png b/fonts/MiniHUDShadow/0047.png new file mode 100644 index 000000000..dce853f2e Binary files /dev/null and b/fonts/MiniHUDShadow/0047.png differ diff --git a/fonts/MiniHUDShadow/0048.png b/fonts/MiniHUDShadow/0048.png new file mode 100644 index 000000000..d6aebd2f0 Binary files /dev/null and b/fonts/MiniHUDShadow/0048.png differ diff --git a/fonts/MiniHUDShadow/0049.png b/fonts/MiniHUDShadow/0049.png new file mode 100644 index 000000000..1aba2c725 Binary files /dev/null and b/fonts/MiniHUDShadow/0049.png differ diff --git a/fonts/MiniHUDShadow/004A.png b/fonts/MiniHUDShadow/004A.png new file mode 100644 index 000000000..91777592f Binary files /dev/null and b/fonts/MiniHUDShadow/004A.png differ diff --git a/fonts/MiniHUDShadow/004B.png b/fonts/MiniHUDShadow/004B.png new file mode 100644 index 000000000..8db49fb5a Binary files /dev/null and b/fonts/MiniHUDShadow/004B.png differ diff --git a/fonts/MiniHUDShadow/004C.png b/fonts/MiniHUDShadow/004C.png new file mode 100644 index 000000000..e61542687 Binary files /dev/null and b/fonts/MiniHUDShadow/004C.png differ diff --git a/fonts/MiniHUDShadow/004D.png b/fonts/MiniHUDShadow/004D.png new file mode 100644 index 000000000..0f3ac7a5d Binary files /dev/null and b/fonts/MiniHUDShadow/004D.png differ diff --git a/fonts/MiniHUDShadow/004E.png b/fonts/MiniHUDShadow/004E.png new file mode 100644 index 000000000..8cbe734b3 Binary files /dev/null and b/fonts/MiniHUDShadow/004E.png differ diff --git a/fonts/MiniHUDShadow/004F.png b/fonts/MiniHUDShadow/004F.png new file mode 100644 index 000000000..b5a48926d Binary files /dev/null and b/fonts/MiniHUDShadow/004F.png differ diff --git a/fonts/MiniHUDShadow/0050.png b/fonts/MiniHUDShadow/0050.png new file mode 100644 index 000000000..129463504 Binary files /dev/null and b/fonts/MiniHUDShadow/0050.png differ diff --git a/fonts/MiniHUDShadow/0051.png b/fonts/MiniHUDShadow/0051.png new file mode 100644 index 000000000..caf786349 Binary files /dev/null and b/fonts/MiniHUDShadow/0051.png differ diff --git a/fonts/MiniHUDShadow/0052.png b/fonts/MiniHUDShadow/0052.png new file mode 100644 index 000000000..ded94922f Binary files /dev/null and b/fonts/MiniHUDShadow/0052.png differ diff --git a/fonts/MiniHUDShadow/0053.png b/fonts/MiniHUDShadow/0053.png new file mode 100644 index 000000000..7c2d609e9 Binary files /dev/null and b/fonts/MiniHUDShadow/0053.png differ diff --git a/fonts/MiniHUDShadow/0054.png b/fonts/MiniHUDShadow/0054.png new file mode 100644 index 000000000..a99422af6 Binary files /dev/null and b/fonts/MiniHUDShadow/0054.png differ diff --git a/fonts/MiniHUDShadow/0055.png b/fonts/MiniHUDShadow/0055.png new file mode 100644 index 000000000..b4f2fa70d Binary files /dev/null and b/fonts/MiniHUDShadow/0055.png differ diff --git a/fonts/MiniHUDShadow/0056.png b/fonts/MiniHUDShadow/0056.png new file mode 100644 index 000000000..ab5d77f2b Binary files /dev/null and b/fonts/MiniHUDShadow/0056.png differ diff --git a/fonts/MiniHUDShadow/0057.png b/fonts/MiniHUDShadow/0057.png new file mode 100644 index 000000000..bce4df517 Binary files /dev/null and b/fonts/MiniHUDShadow/0057.png differ diff --git a/fonts/MiniHUDShadow/0058.png b/fonts/MiniHUDShadow/0058.png new file mode 100644 index 000000000..1cf2f62d7 Binary files /dev/null and b/fonts/MiniHUDShadow/0058.png differ diff --git a/fonts/MiniHUDShadow/0059.png b/fonts/MiniHUDShadow/0059.png new file mode 100644 index 000000000..c8522e42a Binary files /dev/null and b/fonts/MiniHUDShadow/0059.png differ diff --git a/fonts/MiniHUDShadow/005A.png b/fonts/MiniHUDShadow/005A.png new file mode 100644 index 000000000..b8043038b Binary files /dev/null and b/fonts/MiniHUDShadow/005A.png differ diff --git a/fonts/MiniHUDShadow/005B.png b/fonts/MiniHUDShadow/005B.png new file mode 100644 index 000000000..b2afea351 Binary files /dev/null and b/fonts/MiniHUDShadow/005B.png differ diff --git a/fonts/MiniHUDShadow/005C.png b/fonts/MiniHUDShadow/005C.png new file mode 100644 index 000000000..7cf06ea10 Binary files /dev/null and b/fonts/MiniHUDShadow/005C.png differ diff --git a/fonts/MiniHUDShadow/005D.png b/fonts/MiniHUDShadow/005D.png new file mode 100644 index 000000000..fd17269c0 Binary files /dev/null and b/fonts/MiniHUDShadow/005D.png differ diff --git a/fonts/MiniHUDShadow/005E.png b/fonts/MiniHUDShadow/005E.png new file mode 100644 index 000000000..b3cf6efb5 Binary files /dev/null and b/fonts/MiniHUDShadow/005E.png differ diff --git a/fonts/MiniHUDShadow/005F.png b/fonts/MiniHUDShadow/005F.png new file mode 100644 index 000000000..5f314d9d7 Binary files /dev/null and b/fonts/MiniHUDShadow/005F.png differ diff --git a/fonts/MiniHUDShadow/0060.png b/fonts/MiniHUDShadow/0060.png new file mode 100644 index 000000000..65604389c Binary files /dev/null and b/fonts/MiniHUDShadow/0060.png differ diff --git a/fonts/MiniHUDShadow/0061.png b/fonts/MiniHUDShadow/0061.png new file mode 100644 index 000000000..6cef63582 Binary files /dev/null and b/fonts/MiniHUDShadow/0061.png differ diff --git a/fonts/MiniHUDShadow/0062.png b/fonts/MiniHUDShadow/0062.png new file mode 100644 index 000000000..44ffe5bad Binary files /dev/null and b/fonts/MiniHUDShadow/0062.png differ diff --git a/fonts/MiniHUDShadow/0063.png b/fonts/MiniHUDShadow/0063.png new file mode 100644 index 000000000..a2b605002 Binary files /dev/null and b/fonts/MiniHUDShadow/0063.png differ diff --git a/fonts/MiniHUDShadow/0064.png b/fonts/MiniHUDShadow/0064.png new file mode 100644 index 000000000..d0031e496 Binary files /dev/null and b/fonts/MiniHUDShadow/0064.png differ diff --git a/fonts/MiniHUDShadow/0065.png b/fonts/MiniHUDShadow/0065.png new file mode 100644 index 000000000..176f9f5d0 Binary files /dev/null and b/fonts/MiniHUDShadow/0065.png differ diff --git a/fonts/MiniHUDShadow/0066.png b/fonts/MiniHUDShadow/0066.png new file mode 100644 index 000000000..dfb692550 Binary files /dev/null and b/fonts/MiniHUDShadow/0066.png differ diff --git a/fonts/MiniHUDShadow/0067.png b/fonts/MiniHUDShadow/0067.png new file mode 100644 index 000000000..0daa1f158 Binary files /dev/null and b/fonts/MiniHUDShadow/0067.png differ diff --git a/fonts/MiniHUDShadow/0068.png b/fonts/MiniHUDShadow/0068.png new file mode 100644 index 000000000..7861d7505 Binary files /dev/null and b/fonts/MiniHUDShadow/0068.png differ diff --git a/fonts/MiniHUDShadow/0069.png b/fonts/MiniHUDShadow/0069.png new file mode 100644 index 000000000..f900e569d Binary files /dev/null and b/fonts/MiniHUDShadow/0069.png differ diff --git a/fonts/MiniHUDShadow/006A.png b/fonts/MiniHUDShadow/006A.png new file mode 100644 index 000000000..6c13e1c05 Binary files /dev/null and b/fonts/MiniHUDShadow/006A.png differ diff --git a/fonts/MiniHUDShadow/006B.png b/fonts/MiniHUDShadow/006B.png new file mode 100644 index 000000000..3bffb896d Binary files /dev/null and b/fonts/MiniHUDShadow/006B.png differ diff --git a/fonts/MiniHUDShadow/006C.png b/fonts/MiniHUDShadow/006C.png new file mode 100644 index 000000000..1e4784d2a Binary files /dev/null and b/fonts/MiniHUDShadow/006C.png differ diff --git a/fonts/MiniHUDShadow/006D.png b/fonts/MiniHUDShadow/006D.png new file mode 100644 index 000000000..ada031ad0 Binary files /dev/null and b/fonts/MiniHUDShadow/006D.png differ diff --git a/fonts/MiniHUDShadow/006E.png b/fonts/MiniHUDShadow/006E.png new file mode 100644 index 000000000..e88f0602a Binary files /dev/null and b/fonts/MiniHUDShadow/006E.png differ diff --git a/fonts/MiniHUDShadow/006F.png b/fonts/MiniHUDShadow/006F.png new file mode 100644 index 000000000..f1a4ce57f Binary files /dev/null and b/fonts/MiniHUDShadow/006F.png differ diff --git a/fonts/MiniHUDShadow/0070.png b/fonts/MiniHUDShadow/0070.png new file mode 100644 index 000000000..096ef41a2 Binary files /dev/null and b/fonts/MiniHUDShadow/0070.png differ diff --git a/fonts/MiniHUDShadow/0071.png b/fonts/MiniHUDShadow/0071.png new file mode 100644 index 000000000..99a6e90c3 Binary files /dev/null and b/fonts/MiniHUDShadow/0071.png differ diff --git a/fonts/MiniHUDShadow/0072.png b/fonts/MiniHUDShadow/0072.png new file mode 100644 index 000000000..e3bcbb883 Binary files /dev/null and b/fonts/MiniHUDShadow/0072.png differ diff --git a/fonts/MiniHUDShadow/0073.png b/fonts/MiniHUDShadow/0073.png new file mode 100644 index 000000000..80e7040a9 Binary files /dev/null and b/fonts/MiniHUDShadow/0073.png differ diff --git a/fonts/MiniHUDShadow/0074.png b/fonts/MiniHUDShadow/0074.png new file mode 100644 index 000000000..2b27942b6 Binary files /dev/null and b/fonts/MiniHUDShadow/0074.png differ diff --git a/fonts/MiniHUDShadow/0075.png b/fonts/MiniHUDShadow/0075.png new file mode 100644 index 000000000..afb5876c4 Binary files /dev/null and b/fonts/MiniHUDShadow/0075.png differ diff --git a/fonts/MiniHUDShadow/0076.png b/fonts/MiniHUDShadow/0076.png new file mode 100644 index 000000000..94ba16379 Binary files /dev/null and b/fonts/MiniHUDShadow/0076.png differ diff --git a/fonts/MiniHUDShadow/0077.png b/fonts/MiniHUDShadow/0077.png new file mode 100644 index 000000000..0b0a5054d Binary files /dev/null and b/fonts/MiniHUDShadow/0077.png differ diff --git a/fonts/MiniHUDShadow/0078.png b/fonts/MiniHUDShadow/0078.png new file mode 100644 index 000000000..940a537b2 Binary files /dev/null and b/fonts/MiniHUDShadow/0078.png differ diff --git a/fonts/MiniHUDShadow/0079.png b/fonts/MiniHUDShadow/0079.png new file mode 100644 index 000000000..27b0116f0 Binary files /dev/null and b/fonts/MiniHUDShadow/0079.png differ diff --git a/fonts/MiniHUDShadow/007A.png b/fonts/MiniHUDShadow/007A.png new file mode 100644 index 000000000..a58737e9b Binary files /dev/null and b/fonts/MiniHUDShadow/007A.png differ diff --git a/fonts/MiniHUDShadow/007B.png b/fonts/MiniHUDShadow/007B.png new file mode 100644 index 000000000..163ed9ee1 Binary files /dev/null and b/fonts/MiniHUDShadow/007B.png differ diff --git a/fonts/MiniHUDShadow/007C.png b/fonts/MiniHUDShadow/007C.png new file mode 100644 index 000000000..b6690d8ea Binary files /dev/null and b/fonts/MiniHUDShadow/007C.png differ diff --git a/fonts/MiniHUDShadow/007D.png b/fonts/MiniHUDShadow/007D.png new file mode 100644 index 000000000..3a2435cc0 Binary files /dev/null and b/fonts/MiniHUDShadow/007D.png differ diff --git a/fonts/MiniHUDShadow/007E.png b/fonts/MiniHUDShadow/007E.png new file mode 100644 index 000000000..2b3bb7b95 Binary files /dev/null and b/fonts/MiniHUDShadow/007E.png differ diff --git a/fonts/MiniHUDShadow/207A.png b/fonts/MiniHUDShadow/207A.png new file mode 100644 index 000000000..bf3e03f4d Binary files /dev/null and b/fonts/MiniHUDShadow/207A.png differ diff --git a/fonts/MiniHUDShadow/221E.png b/fonts/MiniHUDShadow/221E.png new file mode 100644 index 000000000..22165a970 Binary files /dev/null and b/fonts/MiniHUDShadow/221E.png differ diff --git a/fonts/MiniHUDShadow/font.inf b/fonts/MiniHUDShadow/font.inf new file mode 100644 index 000000000..bb45bc970 --- /dev/null +++ b/fonts/MiniHUDShadow/font.inf @@ -0,0 +1,3 @@ +TranslationType Standard +SpaceWidth 4 +FontHeight 6 diff --git a/fonts/MiniwiFont/0021.png b/fonts/MiniwiFont/0021.png new file mode 100644 index 000000000..973eddfa9 Binary files /dev/null and b/fonts/MiniwiFont/0021.png differ diff --git a/fonts/MiniwiFont/0022.png b/fonts/MiniwiFont/0022.png new file mode 100644 index 000000000..05a39a8cd Binary files /dev/null and b/fonts/MiniwiFont/0022.png differ diff --git a/fonts/MiniwiFont/0023.png b/fonts/MiniwiFont/0023.png new file mode 100644 index 000000000..3caba7ed4 Binary files /dev/null and b/fonts/MiniwiFont/0023.png differ diff --git a/fonts/MiniwiFont/0024.png b/fonts/MiniwiFont/0024.png new file mode 100644 index 000000000..6d07a75af Binary files /dev/null and b/fonts/MiniwiFont/0024.png differ diff --git a/fonts/MiniwiFont/0025.png b/fonts/MiniwiFont/0025.png new file mode 100644 index 000000000..2211fb6a1 Binary files /dev/null and b/fonts/MiniwiFont/0025.png differ diff --git a/fonts/MiniwiFont/0026.png b/fonts/MiniwiFont/0026.png new file mode 100644 index 000000000..c5a2c2a13 Binary files /dev/null and b/fonts/MiniwiFont/0026.png differ diff --git a/fonts/MiniwiFont/0027.png b/fonts/MiniwiFont/0027.png new file mode 100644 index 000000000..79641651d Binary files /dev/null and b/fonts/MiniwiFont/0027.png differ diff --git a/fonts/MiniwiFont/0028.png b/fonts/MiniwiFont/0028.png new file mode 100644 index 000000000..416c20948 Binary files /dev/null and b/fonts/MiniwiFont/0028.png differ diff --git a/fonts/MiniwiFont/0029.png b/fonts/MiniwiFont/0029.png new file mode 100644 index 000000000..226a5b53b Binary files /dev/null and b/fonts/MiniwiFont/0029.png differ diff --git a/fonts/MiniwiFont/002A.png b/fonts/MiniwiFont/002A.png new file mode 100644 index 000000000..535520c5f Binary files /dev/null and b/fonts/MiniwiFont/002A.png differ diff --git a/fonts/MiniwiFont/002B.png b/fonts/MiniwiFont/002B.png new file mode 100644 index 000000000..f8acb45bb Binary files /dev/null and b/fonts/MiniwiFont/002B.png differ diff --git a/fonts/MiniwiFont/002C.png b/fonts/MiniwiFont/002C.png new file mode 100644 index 000000000..e66dc2fca Binary files /dev/null and b/fonts/MiniwiFont/002C.png differ diff --git a/fonts/MiniwiFont/002D.png b/fonts/MiniwiFont/002D.png new file mode 100644 index 000000000..a1dfb14c7 Binary files /dev/null and b/fonts/MiniwiFont/002D.png differ diff --git a/fonts/MiniwiFont/002E.png b/fonts/MiniwiFont/002E.png new file mode 100644 index 000000000..8733a912e Binary files /dev/null and b/fonts/MiniwiFont/002E.png differ diff --git a/fonts/MiniwiFont/002F.png b/fonts/MiniwiFont/002F.png new file mode 100644 index 000000000..cd621d36c Binary files /dev/null and b/fonts/MiniwiFont/002F.png differ diff --git a/fonts/MiniwiFont/0030.png b/fonts/MiniwiFont/0030.png new file mode 100644 index 000000000..779d1fe5c Binary files /dev/null and b/fonts/MiniwiFont/0030.png differ diff --git a/fonts/MiniwiFont/0031.png b/fonts/MiniwiFont/0031.png new file mode 100644 index 000000000..fed6b6591 Binary files /dev/null and b/fonts/MiniwiFont/0031.png differ diff --git a/fonts/MiniwiFont/0032.png b/fonts/MiniwiFont/0032.png new file mode 100644 index 000000000..56fcdbf58 Binary files /dev/null and b/fonts/MiniwiFont/0032.png differ diff --git a/fonts/MiniwiFont/0033.png b/fonts/MiniwiFont/0033.png new file mode 100644 index 000000000..963fdca2d Binary files /dev/null and b/fonts/MiniwiFont/0033.png differ diff --git a/fonts/MiniwiFont/0034.png b/fonts/MiniwiFont/0034.png new file mode 100644 index 000000000..bf7571101 Binary files /dev/null and b/fonts/MiniwiFont/0034.png differ diff --git a/fonts/MiniwiFont/0035.png b/fonts/MiniwiFont/0035.png new file mode 100644 index 000000000..57abbe08d Binary files /dev/null and b/fonts/MiniwiFont/0035.png differ diff --git a/fonts/MiniwiFont/0036.png b/fonts/MiniwiFont/0036.png new file mode 100644 index 000000000..e9bae589b Binary files /dev/null and b/fonts/MiniwiFont/0036.png differ diff --git a/fonts/MiniwiFont/0037.png b/fonts/MiniwiFont/0037.png new file mode 100644 index 000000000..66c9ab566 Binary files /dev/null and b/fonts/MiniwiFont/0037.png differ diff --git a/fonts/MiniwiFont/0038.png b/fonts/MiniwiFont/0038.png new file mode 100644 index 000000000..2e469b00a Binary files /dev/null and b/fonts/MiniwiFont/0038.png differ diff --git a/fonts/MiniwiFont/0039.png b/fonts/MiniwiFont/0039.png new file mode 100644 index 000000000..032e60e6f Binary files /dev/null and b/fonts/MiniwiFont/0039.png differ diff --git a/fonts/MiniwiFont/003A.png b/fonts/MiniwiFont/003A.png new file mode 100644 index 000000000..d70294a1c Binary files /dev/null and b/fonts/MiniwiFont/003A.png differ diff --git a/fonts/MiniwiFont/003B.png b/fonts/MiniwiFont/003B.png new file mode 100644 index 000000000..3b1934f07 Binary files /dev/null and b/fonts/MiniwiFont/003B.png differ diff --git a/fonts/MiniwiFont/003C.png b/fonts/MiniwiFont/003C.png new file mode 100644 index 000000000..f897d150b Binary files /dev/null and b/fonts/MiniwiFont/003C.png differ diff --git a/fonts/MiniwiFont/003D.png b/fonts/MiniwiFont/003D.png new file mode 100644 index 000000000..203fa3a49 Binary files /dev/null and b/fonts/MiniwiFont/003D.png differ diff --git a/fonts/MiniwiFont/003E.png b/fonts/MiniwiFont/003E.png new file mode 100644 index 000000000..378a7e911 Binary files /dev/null and b/fonts/MiniwiFont/003E.png differ diff --git a/fonts/MiniwiFont/003F.png b/fonts/MiniwiFont/003F.png new file mode 100644 index 000000000..ac121cd33 Binary files /dev/null and b/fonts/MiniwiFont/003F.png differ diff --git a/fonts/MiniwiFont/0040.png b/fonts/MiniwiFont/0040.png new file mode 100644 index 000000000..301dc0f46 Binary files /dev/null and b/fonts/MiniwiFont/0040.png differ diff --git a/fonts/MiniwiFont/0041.png b/fonts/MiniwiFont/0041.png new file mode 100644 index 000000000..1f08416af Binary files /dev/null and b/fonts/MiniwiFont/0041.png differ diff --git a/fonts/MiniwiFont/0042.png b/fonts/MiniwiFont/0042.png new file mode 100644 index 000000000..b283076dd Binary files /dev/null and b/fonts/MiniwiFont/0042.png differ diff --git a/fonts/MiniwiFont/0043.png b/fonts/MiniwiFont/0043.png new file mode 100644 index 000000000..66b60e239 Binary files /dev/null and b/fonts/MiniwiFont/0043.png differ diff --git a/fonts/MiniwiFont/0044.png b/fonts/MiniwiFont/0044.png new file mode 100644 index 000000000..45e10d10a Binary files /dev/null and b/fonts/MiniwiFont/0044.png differ diff --git a/fonts/MiniwiFont/0045.png b/fonts/MiniwiFont/0045.png new file mode 100644 index 000000000..9aea80875 Binary files /dev/null and b/fonts/MiniwiFont/0045.png differ diff --git a/fonts/MiniwiFont/0046.png b/fonts/MiniwiFont/0046.png new file mode 100644 index 000000000..53d6a8655 Binary files /dev/null and b/fonts/MiniwiFont/0046.png differ diff --git a/fonts/MiniwiFont/0047.png b/fonts/MiniwiFont/0047.png new file mode 100644 index 000000000..7bfb2ad65 Binary files /dev/null and b/fonts/MiniwiFont/0047.png differ diff --git a/fonts/MiniwiFont/0048.png b/fonts/MiniwiFont/0048.png new file mode 100644 index 000000000..83e00574f Binary files /dev/null and b/fonts/MiniwiFont/0048.png differ diff --git a/fonts/MiniwiFont/0049.png b/fonts/MiniwiFont/0049.png new file mode 100644 index 000000000..6ea3f6013 Binary files /dev/null and b/fonts/MiniwiFont/0049.png differ diff --git a/fonts/MiniwiFont/004A.png b/fonts/MiniwiFont/004A.png new file mode 100644 index 000000000..03ffb66a1 Binary files /dev/null and b/fonts/MiniwiFont/004A.png differ diff --git a/fonts/MiniwiFont/004B.png b/fonts/MiniwiFont/004B.png new file mode 100644 index 000000000..4a353239d Binary files /dev/null and b/fonts/MiniwiFont/004B.png differ diff --git a/fonts/MiniwiFont/004C.png b/fonts/MiniwiFont/004C.png new file mode 100644 index 000000000..ca0211b88 Binary files /dev/null and b/fonts/MiniwiFont/004C.png differ diff --git a/fonts/MiniwiFont/004D.png b/fonts/MiniwiFont/004D.png new file mode 100644 index 000000000..ae166aff6 Binary files /dev/null and b/fonts/MiniwiFont/004D.png differ diff --git a/fonts/MiniwiFont/004E.png b/fonts/MiniwiFont/004E.png new file mode 100644 index 000000000..c5dfbc594 Binary files /dev/null and b/fonts/MiniwiFont/004E.png differ diff --git a/fonts/MiniwiFont/004F.png b/fonts/MiniwiFont/004F.png new file mode 100644 index 000000000..779d1fe5c Binary files /dev/null and b/fonts/MiniwiFont/004F.png differ diff --git a/fonts/MiniwiFont/0050.png b/fonts/MiniwiFont/0050.png new file mode 100644 index 000000000..1efb8e7c2 Binary files /dev/null and b/fonts/MiniwiFont/0050.png differ diff --git a/fonts/MiniwiFont/0051.png b/fonts/MiniwiFont/0051.png new file mode 100644 index 000000000..915f05cdb Binary files /dev/null and b/fonts/MiniwiFont/0051.png differ diff --git a/fonts/MiniwiFont/0052.png b/fonts/MiniwiFont/0052.png new file mode 100644 index 000000000..6cb18a4c5 Binary files /dev/null and b/fonts/MiniwiFont/0052.png differ diff --git a/fonts/MiniwiFont/0053.png b/fonts/MiniwiFont/0053.png new file mode 100644 index 000000000..f573ab5a3 Binary files /dev/null and b/fonts/MiniwiFont/0053.png differ diff --git a/fonts/MiniwiFont/0054.png b/fonts/MiniwiFont/0054.png new file mode 100644 index 000000000..2340517b5 Binary files /dev/null and b/fonts/MiniwiFont/0054.png differ diff --git a/fonts/MiniwiFont/0055.png b/fonts/MiniwiFont/0055.png new file mode 100644 index 000000000..c19842f99 Binary files /dev/null and b/fonts/MiniwiFont/0055.png differ diff --git a/fonts/MiniwiFont/0056.png b/fonts/MiniwiFont/0056.png new file mode 100644 index 000000000..19482d983 Binary files /dev/null and b/fonts/MiniwiFont/0056.png differ diff --git a/fonts/MiniwiFont/0057.png b/fonts/MiniwiFont/0057.png new file mode 100644 index 000000000..4478cbb05 Binary files /dev/null and b/fonts/MiniwiFont/0057.png differ diff --git a/fonts/MiniwiFont/0058.png b/fonts/MiniwiFont/0058.png new file mode 100644 index 000000000..190572ee9 Binary files /dev/null and b/fonts/MiniwiFont/0058.png differ diff --git a/fonts/MiniwiFont/0059.png b/fonts/MiniwiFont/0059.png new file mode 100644 index 000000000..f56bcacb1 Binary files /dev/null and b/fonts/MiniwiFont/0059.png differ diff --git a/fonts/MiniwiFont/005A.png b/fonts/MiniwiFont/005A.png new file mode 100644 index 000000000..c2cbc45e3 Binary files /dev/null and b/fonts/MiniwiFont/005A.png differ diff --git a/fonts/MiniwiFont/005B.png b/fonts/MiniwiFont/005B.png new file mode 100644 index 000000000..08b29d8f9 Binary files /dev/null and b/fonts/MiniwiFont/005B.png differ diff --git a/fonts/MiniwiFont/005C.png b/fonts/MiniwiFont/005C.png new file mode 100644 index 000000000..8022c84b1 Binary files /dev/null and b/fonts/MiniwiFont/005C.png differ diff --git a/fonts/MiniwiFont/005D.png b/fonts/MiniwiFont/005D.png new file mode 100644 index 000000000..686b31f36 Binary files /dev/null and b/fonts/MiniwiFont/005D.png differ diff --git a/fonts/MiniwiFont/005E.png b/fonts/MiniwiFont/005E.png new file mode 100644 index 000000000..f205b15cb Binary files /dev/null and b/fonts/MiniwiFont/005E.png differ diff --git a/fonts/MiniwiFont/005F.png b/fonts/MiniwiFont/005F.png new file mode 100644 index 000000000..256aa7d4a Binary files /dev/null and b/fonts/MiniwiFont/005F.png differ diff --git a/fonts/MiniwiFont/0060.png b/fonts/MiniwiFont/0060.png new file mode 100644 index 000000000..49c2de9c5 Binary files /dev/null and b/fonts/MiniwiFont/0060.png differ diff --git a/fonts/MiniwiFont/0061.png b/fonts/MiniwiFont/0061.png new file mode 100644 index 000000000..5c4a68a10 Binary files /dev/null and b/fonts/MiniwiFont/0061.png differ diff --git a/fonts/MiniwiFont/0062.png b/fonts/MiniwiFont/0062.png new file mode 100644 index 000000000..7159ec156 Binary files /dev/null and b/fonts/MiniwiFont/0062.png differ diff --git a/fonts/MiniwiFont/0063.png b/fonts/MiniwiFont/0063.png new file mode 100644 index 000000000..99145b7b4 Binary files /dev/null and b/fonts/MiniwiFont/0063.png differ diff --git a/fonts/MiniwiFont/0064.png b/fonts/MiniwiFont/0064.png new file mode 100644 index 000000000..394b8d131 Binary files /dev/null and b/fonts/MiniwiFont/0064.png differ diff --git a/fonts/MiniwiFont/0065.png b/fonts/MiniwiFont/0065.png new file mode 100644 index 000000000..5aaf59569 Binary files /dev/null and b/fonts/MiniwiFont/0065.png differ diff --git a/fonts/MiniwiFont/0066.png b/fonts/MiniwiFont/0066.png new file mode 100644 index 000000000..8a03b18bf Binary files /dev/null and b/fonts/MiniwiFont/0066.png differ diff --git a/fonts/MiniwiFont/0067.png b/fonts/MiniwiFont/0067.png new file mode 100644 index 000000000..17eb89a06 Binary files /dev/null and b/fonts/MiniwiFont/0067.png differ diff --git a/fonts/MiniwiFont/0068.png b/fonts/MiniwiFont/0068.png new file mode 100644 index 000000000..9147dd255 Binary files /dev/null and b/fonts/MiniwiFont/0068.png differ diff --git a/fonts/MiniwiFont/0069.png b/fonts/MiniwiFont/0069.png new file mode 100644 index 000000000..82be79e79 Binary files /dev/null and b/fonts/MiniwiFont/0069.png differ diff --git a/fonts/MiniwiFont/006A.png b/fonts/MiniwiFont/006A.png new file mode 100644 index 000000000..104f230fe Binary files /dev/null and b/fonts/MiniwiFont/006A.png differ diff --git a/fonts/MiniwiFont/006B.png b/fonts/MiniwiFont/006B.png new file mode 100644 index 000000000..a6ed2bc39 Binary files /dev/null and b/fonts/MiniwiFont/006B.png differ diff --git a/fonts/MiniwiFont/006C.png b/fonts/MiniwiFont/006C.png new file mode 100644 index 000000000..ea588f15a Binary files /dev/null and b/fonts/MiniwiFont/006C.png differ diff --git a/fonts/MiniwiFont/006D.png b/fonts/MiniwiFont/006D.png new file mode 100644 index 000000000..c83bec598 Binary files /dev/null and b/fonts/MiniwiFont/006D.png differ diff --git a/fonts/MiniwiFont/006E.png b/fonts/MiniwiFont/006E.png new file mode 100644 index 000000000..3386d8025 Binary files /dev/null and b/fonts/MiniwiFont/006E.png differ diff --git a/fonts/MiniwiFont/006F.png b/fonts/MiniwiFont/006F.png new file mode 100644 index 000000000..f7c4b46dd Binary files /dev/null and b/fonts/MiniwiFont/006F.png differ diff --git a/fonts/MiniwiFont/0070.png b/fonts/MiniwiFont/0070.png new file mode 100644 index 000000000..a811d9638 Binary files /dev/null and b/fonts/MiniwiFont/0070.png differ diff --git a/fonts/MiniwiFont/0071.png b/fonts/MiniwiFont/0071.png new file mode 100644 index 000000000..a361ce423 Binary files /dev/null and b/fonts/MiniwiFont/0071.png differ diff --git a/fonts/MiniwiFont/0072.png b/fonts/MiniwiFont/0072.png new file mode 100644 index 000000000..74f1784aa Binary files /dev/null and b/fonts/MiniwiFont/0072.png differ diff --git a/fonts/MiniwiFont/0073.png b/fonts/MiniwiFont/0073.png new file mode 100644 index 000000000..013ff0793 Binary files /dev/null and b/fonts/MiniwiFont/0073.png differ diff --git a/fonts/MiniwiFont/0074.png b/fonts/MiniwiFont/0074.png new file mode 100644 index 000000000..06be1a239 Binary files /dev/null and b/fonts/MiniwiFont/0074.png differ diff --git a/fonts/MiniwiFont/0075.png b/fonts/MiniwiFont/0075.png new file mode 100644 index 000000000..debb836e3 Binary files /dev/null and b/fonts/MiniwiFont/0075.png differ diff --git a/fonts/MiniwiFont/0076.png b/fonts/MiniwiFont/0076.png new file mode 100644 index 000000000..b46162beb Binary files /dev/null and b/fonts/MiniwiFont/0076.png differ diff --git a/fonts/MiniwiFont/0077.png b/fonts/MiniwiFont/0077.png new file mode 100644 index 000000000..138e12a2f Binary files /dev/null and b/fonts/MiniwiFont/0077.png differ diff --git a/fonts/MiniwiFont/0078.png b/fonts/MiniwiFont/0078.png new file mode 100644 index 000000000..6b72162c9 Binary files /dev/null and b/fonts/MiniwiFont/0078.png differ diff --git a/fonts/MiniwiFont/0079.png b/fonts/MiniwiFont/0079.png new file mode 100644 index 000000000..9ed820590 Binary files /dev/null and b/fonts/MiniwiFont/0079.png differ diff --git a/fonts/MiniwiFont/007A.png b/fonts/MiniwiFont/007A.png new file mode 100644 index 000000000..6216d18aa Binary files /dev/null and b/fonts/MiniwiFont/007A.png differ diff --git a/fonts/MiniwiFont/007B.png b/fonts/MiniwiFont/007B.png new file mode 100644 index 000000000..40d823bc0 Binary files /dev/null and b/fonts/MiniwiFont/007B.png differ diff --git a/fonts/MiniwiFont/007C.png b/fonts/MiniwiFont/007C.png new file mode 100644 index 000000000..26a03ba7a Binary files /dev/null and b/fonts/MiniwiFont/007C.png differ diff --git a/fonts/MiniwiFont/007D.png b/fonts/MiniwiFont/007D.png new file mode 100644 index 000000000..dd33003ed Binary files /dev/null and b/fonts/MiniwiFont/007D.png differ diff --git a/fonts/MiniwiFont/007E.png b/fonts/MiniwiFont/007E.png new file mode 100644 index 000000000..71701670d Binary files /dev/null and b/fonts/MiniwiFont/007E.png differ diff --git a/fonts/MiniwiFont/00A1.png b/fonts/MiniwiFont/00A1.png new file mode 100644 index 000000000..b79183cc5 Binary files /dev/null and b/fonts/MiniwiFont/00A1.png differ diff --git a/fonts/MiniwiFont/00A2.png b/fonts/MiniwiFont/00A2.png new file mode 100644 index 000000000..e19df11f6 Binary files /dev/null and b/fonts/MiniwiFont/00A2.png differ diff --git a/fonts/MiniwiFont/00A3.png b/fonts/MiniwiFont/00A3.png new file mode 100644 index 000000000..3e38c9a69 Binary files /dev/null and b/fonts/MiniwiFont/00A3.png differ diff --git a/fonts/MiniwiFont/00A4.png b/fonts/MiniwiFont/00A4.png new file mode 100644 index 000000000..6d81afff5 Binary files /dev/null and b/fonts/MiniwiFont/00A4.png differ diff --git a/fonts/MiniwiFont/00A5.png b/fonts/MiniwiFont/00A5.png new file mode 100644 index 000000000..28782c01e Binary files /dev/null and b/fonts/MiniwiFont/00A5.png differ diff --git a/fonts/MiniwiFont/00A6.png b/fonts/MiniwiFont/00A6.png new file mode 100644 index 000000000..81ac913bc Binary files /dev/null and b/fonts/MiniwiFont/00A6.png differ diff --git a/fonts/MiniwiFont/00A7.png b/fonts/MiniwiFont/00A7.png new file mode 100644 index 000000000..e3a27ee66 Binary files /dev/null and b/fonts/MiniwiFont/00A7.png differ diff --git a/fonts/MiniwiFont/00A8.png b/fonts/MiniwiFont/00A8.png new file mode 100644 index 000000000..25e7ffa9d Binary files /dev/null and b/fonts/MiniwiFont/00A8.png differ diff --git a/fonts/MiniwiFont/00A9.png b/fonts/MiniwiFont/00A9.png new file mode 100644 index 000000000..d8fcd059f Binary files /dev/null and b/fonts/MiniwiFont/00A9.png differ diff --git a/fonts/MiniwiFont/00AA.png b/fonts/MiniwiFont/00AA.png new file mode 100644 index 000000000..ded612b05 Binary files /dev/null and b/fonts/MiniwiFont/00AA.png differ diff --git a/fonts/MiniwiFont/00AB.png b/fonts/MiniwiFont/00AB.png new file mode 100644 index 000000000..be43a8934 Binary files /dev/null and b/fonts/MiniwiFont/00AB.png differ diff --git a/fonts/MiniwiFont/00AC.png b/fonts/MiniwiFont/00AC.png new file mode 100644 index 000000000..22ef40a47 Binary files /dev/null and b/fonts/MiniwiFont/00AC.png differ diff --git a/fonts/MiniwiFont/00AD.png b/fonts/MiniwiFont/00AD.png new file mode 100644 index 000000000..08f3a1e00 Binary files /dev/null and b/fonts/MiniwiFont/00AD.png differ diff --git a/fonts/MiniwiFont/00AE.png b/fonts/MiniwiFont/00AE.png new file mode 100644 index 000000000..c6b95fc0d Binary files /dev/null and b/fonts/MiniwiFont/00AE.png differ diff --git a/fonts/MiniwiFont/00AF.png b/fonts/MiniwiFont/00AF.png new file mode 100644 index 000000000..c1bbfef90 Binary files /dev/null and b/fonts/MiniwiFont/00AF.png differ diff --git a/fonts/MiniwiFont/00B0.png b/fonts/MiniwiFont/00B0.png new file mode 100644 index 000000000..18cfbbae6 Binary files /dev/null and b/fonts/MiniwiFont/00B0.png differ diff --git a/fonts/MiniwiFont/00B1.png b/fonts/MiniwiFont/00B1.png new file mode 100644 index 000000000..d9d25d3e6 Binary files /dev/null and b/fonts/MiniwiFont/00B1.png differ diff --git a/fonts/MiniwiFont/00B2.png b/fonts/MiniwiFont/00B2.png new file mode 100644 index 000000000..874f9009d Binary files /dev/null and b/fonts/MiniwiFont/00B2.png differ diff --git a/fonts/MiniwiFont/00B3.png b/fonts/MiniwiFont/00B3.png new file mode 100644 index 000000000..ddeae2563 Binary files /dev/null and b/fonts/MiniwiFont/00B3.png differ diff --git a/fonts/MiniwiFont/00B4.png b/fonts/MiniwiFont/00B4.png new file mode 100644 index 000000000..e99776c97 Binary files /dev/null and b/fonts/MiniwiFont/00B4.png differ diff --git a/fonts/MiniwiFont/00B5.png b/fonts/MiniwiFont/00B5.png new file mode 100644 index 000000000..aae12b221 Binary files /dev/null and b/fonts/MiniwiFont/00B5.png differ diff --git a/fonts/MiniwiFont/00B6.png b/fonts/MiniwiFont/00B6.png new file mode 100644 index 000000000..394c30252 Binary files /dev/null and b/fonts/MiniwiFont/00B6.png differ diff --git a/fonts/MiniwiFont/00B7.png b/fonts/MiniwiFont/00B7.png new file mode 100644 index 000000000..bbd0de325 Binary files /dev/null and b/fonts/MiniwiFont/00B7.png differ diff --git a/fonts/MiniwiFont/00B8.png b/fonts/MiniwiFont/00B8.png new file mode 100644 index 000000000..fe580a48f Binary files /dev/null and b/fonts/MiniwiFont/00B8.png differ diff --git a/fonts/MiniwiFont/00B9.png b/fonts/MiniwiFont/00B9.png new file mode 100644 index 000000000..3dae8b48c Binary files /dev/null and b/fonts/MiniwiFont/00B9.png differ diff --git a/fonts/MiniwiFont/00BA.png b/fonts/MiniwiFont/00BA.png new file mode 100644 index 000000000..3196f6556 Binary files /dev/null and b/fonts/MiniwiFont/00BA.png differ diff --git a/fonts/MiniwiFont/00BB.png b/fonts/MiniwiFont/00BB.png new file mode 100644 index 000000000..2d77ba79f Binary files /dev/null and b/fonts/MiniwiFont/00BB.png differ diff --git a/fonts/MiniwiFont/00BC.png b/fonts/MiniwiFont/00BC.png new file mode 100644 index 000000000..a3fafd765 Binary files /dev/null and b/fonts/MiniwiFont/00BC.png differ diff --git a/fonts/MiniwiFont/00BD.png b/fonts/MiniwiFont/00BD.png new file mode 100644 index 000000000..78fb8470d Binary files /dev/null and b/fonts/MiniwiFont/00BD.png differ diff --git a/fonts/MiniwiFont/00BE.png b/fonts/MiniwiFont/00BE.png new file mode 100644 index 000000000..83afb7e52 Binary files /dev/null and b/fonts/MiniwiFont/00BE.png differ diff --git a/fonts/MiniwiFont/00BF.png b/fonts/MiniwiFont/00BF.png new file mode 100644 index 000000000..e80678c8c Binary files /dev/null and b/fonts/MiniwiFont/00BF.png differ diff --git a/fonts/MiniwiFont/00C0.png b/fonts/MiniwiFont/00C0.png new file mode 100644 index 000000000..8124b3c1f Binary files /dev/null and b/fonts/MiniwiFont/00C0.png differ diff --git a/fonts/MiniwiFont/00C1.png b/fonts/MiniwiFont/00C1.png new file mode 100644 index 000000000..d582c1730 Binary files /dev/null and b/fonts/MiniwiFont/00C1.png differ diff --git a/fonts/MiniwiFont/00C2.png b/fonts/MiniwiFont/00C2.png new file mode 100644 index 000000000..5041ffb7b Binary files /dev/null and b/fonts/MiniwiFont/00C2.png differ diff --git a/fonts/MiniwiFont/00C3.png b/fonts/MiniwiFont/00C3.png new file mode 100644 index 000000000..08ab935bc Binary files /dev/null and b/fonts/MiniwiFont/00C3.png differ diff --git a/fonts/MiniwiFont/00C4.png b/fonts/MiniwiFont/00C4.png new file mode 100644 index 000000000..62c6b3939 Binary files /dev/null and b/fonts/MiniwiFont/00C4.png differ diff --git a/fonts/MiniwiFont/00C5.png b/fonts/MiniwiFont/00C5.png new file mode 100644 index 000000000..46975842c Binary files /dev/null and b/fonts/MiniwiFont/00C5.png differ diff --git a/fonts/MiniwiFont/00C6.png b/fonts/MiniwiFont/00C6.png new file mode 100644 index 000000000..c29c34a85 Binary files /dev/null and b/fonts/MiniwiFont/00C6.png differ diff --git a/fonts/MiniwiFont/00C7.png b/fonts/MiniwiFont/00C7.png new file mode 100644 index 000000000..cbdea26a8 Binary files /dev/null and b/fonts/MiniwiFont/00C7.png differ diff --git a/fonts/MiniwiFont/00C8.png b/fonts/MiniwiFont/00C8.png new file mode 100644 index 000000000..18aab8bb3 Binary files /dev/null and b/fonts/MiniwiFont/00C8.png differ diff --git a/fonts/MiniwiFont/00C9.png b/fonts/MiniwiFont/00C9.png new file mode 100644 index 000000000..f29b730d0 Binary files /dev/null and b/fonts/MiniwiFont/00C9.png differ diff --git a/fonts/MiniwiFont/00CA.png b/fonts/MiniwiFont/00CA.png new file mode 100644 index 000000000..7bbd2ee9f Binary files /dev/null and b/fonts/MiniwiFont/00CA.png differ diff --git a/fonts/MiniwiFont/00CB.png b/fonts/MiniwiFont/00CB.png new file mode 100644 index 000000000..b3f51b6de Binary files /dev/null and b/fonts/MiniwiFont/00CB.png differ diff --git a/fonts/MiniwiFont/00CC.png b/fonts/MiniwiFont/00CC.png new file mode 100644 index 000000000..a01cf5b4b Binary files /dev/null and b/fonts/MiniwiFont/00CC.png differ diff --git a/fonts/MiniwiFont/00CD.png b/fonts/MiniwiFont/00CD.png new file mode 100644 index 000000000..cc88dc0b7 Binary files /dev/null and b/fonts/MiniwiFont/00CD.png differ diff --git a/fonts/MiniwiFont/00CE.png b/fonts/MiniwiFont/00CE.png new file mode 100644 index 000000000..35e55dfc5 Binary files /dev/null and b/fonts/MiniwiFont/00CE.png differ diff --git a/fonts/MiniwiFont/00CF.png b/fonts/MiniwiFont/00CF.png new file mode 100644 index 000000000..1ee397e63 Binary files /dev/null and b/fonts/MiniwiFont/00CF.png differ diff --git a/fonts/MiniwiFont/00D0.png b/fonts/MiniwiFont/00D0.png new file mode 100644 index 000000000..6537bd3f5 Binary files /dev/null and b/fonts/MiniwiFont/00D0.png differ diff --git a/fonts/MiniwiFont/00D1.png b/fonts/MiniwiFont/00D1.png new file mode 100644 index 000000000..7d98dcafd Binary files /dev/null and b/fonts/MiniwiFont/00D1.png differ diff --git a/fonts/MiniwiFont/00D2.png b/fonts/MiniwiFont/00D2.png new file mode 100644 index 000000000..db2818177 Binary files /dev/null and b/fonts/MiniwiFont/00D2.png differ diff --git a/fonts/MiniwiFont/00D3.png b/fonts/MiniwiFont/00D3.png new file mode 100644 index 000000000..d28abb149 Binary files /dev/null and b/fonts/MiniwiFont/00D3.png differ diff --git a/fonts/MiniwiFont/00D4.png b/fonts/MiniwiFont/00D4.png new file mode 100644 index 000000000..696309c40 Binary files /dev/null and b/fonts/MiniwiFont/00D4.png differ diff --git a/fonts/MiniwiFont/00D5.png b/fonts/MiniwiFont/00D5.png new file mode 100644 index 000000000..db2818177 Binary files /dev/null and b/fonts/MiniwiFont/00D5.png differ diff --git a/fonts/MiniwiFont/00D6.png b/fonts/MiniwiFont/00D6.png new file mode 100644 index 000000000..b470a7eb5 Binary files /dev/null and b/fonts/MiniwiFont/00D6.png differ diff --git a/fonts/MiniwiFont/00D7.png b/fonts/MiniwiFont/00D7.png new file mode 100644 index 000000000..f2240b26e Binary files /dev/null and b/fonts/MiniwiFont/00D7.png differ diff --git a/fonts/MiniwiFont/00D8.png b/fonts/MiniwiFont/00D8.png new file mode 100644 index 000000000..cb7114cb4 Binary files /dev/null and b/fonts/MiniwiFont/00D8.png differ diff --git a/fonts/MiniwiFont/00D9.png b/fonts/MiniwiFont/00D9.png new file mode 100644 index 000000000..efbd4f925 Binary files /dev/null and b/fonts/MiniwiFont/00D9.png differ diff --git a/fonts/MiniwiFont/00DA.png b/fonts/MiniwiFont/00DA.png new file mode 100644 index 000000000..f81140615 Binary files /dev/null and b/fonts/MiniwiFont/00DA.png differ diff --git a/fonts/MiniwiFont/00DB.png b/fonts/MiniwiFont/00DB.png new file mode 100644 index 000000000..3dd5a8e34 Binary files /dev/null and b/fonts/MiniwiFont/00DB.png differ diff --git a/fonts/MiniwiFont/00DC.png b/fonts/MiniwiFont/00DC.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/00DC.png differ diff --git a/fonts/MiniwiFont/00DD.png b/fonts/MiniwiFont/00DD.png new file mode 100644 index 000000000..b3374b4e6 Binary files /dev/null and b/fonts/MiniwiFont/00DD.png differ diff --git a/fonts/MiniwiFont/00DE.png b/fonts/MiniwiFont/00DE.png new file mode 100644 index 000000000..de09900f7 Binary files /dev/null and b/fonts/MiniwiFont/00DE.png differ diff --git a/fonts/MiniwiFont/00DF.png b/fonts/MiniwiFont/00DF.png new file mode 100644 index 000000000..c74a4dbb7 Binary files /dev/null and b/fonts/MiniwiFont/00DF.png differ diff --git a/fonts/MiniwiFont/00E0.png b/fonts/MiniwiFont/00E0.png new file mode 100644 index 000000000..1af501c74 Binary files /dev/null and b/fonts/MiniwiFont/00E0.png differ diff --git a/fonts/MiniwiFont/00E1.png b/fonts/MiniwiFont/00E1.png new file mode 100644 index 000000000..b6bda560f Binary files /dev/null and b/fonts/MiniwiFont/00E1.png differ diff --git a/fonts/MiniwiFont/00E2.png b/fonts/MiniwiFont/00E2.png new file mode 100644 index 000000000..162b7b28e Binary files /dev/null and b/fonts/MiniwiFont/00E2.png differ diff --git a/fonts/MiniwiFont/00E3.png b/fonts/MiniwiFont/00E3.png new file mode 100644 index 000000000..92b06cfc3 Binary files /dev/null and b/fonts/MiniwiFont/00E3.png differ diff --git a/fonts/MiniwiFont/00E4.png b/fonts/MiniwiFont/00E4.png new file mode 100644 index 000000000..30c63dc32 Binary files /dev/null and b/fonts/MiniwiFont/00E4.png differ diff --git a/fonts/MiniwiFont/00E5.png b/fonts/MiniwiFont/00E5.png new file mode 100644 index 000000000..107cc6c8b Binary files /dev/null and b/fonts/MiniwiFont/00E5.png differ diff --git a/fonts/MiniwiFont/00E6.png b/fonts/MiniwiFont/00E6.png new file mode 100644 index 000000000..678cfb300 Binary files /dev/null and b/fonts/MiniwiFont/00E6.png differ diff --git a/fonts/MiniwiFont/00E7.png b/fonts/MiniwiFont/00E7.png new file mode 100644 index 000000000..a0b16914a Binary files /dev/null and b/fonts/MiniwiFont/00E7.png differ diff --git a/fonts/MiniwiFont/00E8.png b/fonts/MiniwiFont/00E8.png new file mode 100644 index 000000000..540bda9e3 Binary files /dev/null and b/fonts/MiniwiFont/00E8.png differ diff --git a/fonts/MiniwiFont/00E9.png b/fonts/MiniwiFont/00E9.png new file mode 100644 index 000000000..8911c22d4 Binary files /dev/null and b/fonts/MiniwiFont/00E9.png differ diff --git a/fonts/MiniwiFont/00EA.png b/fonts/MiniwiFont/00EA.png new file mode 100644 index 000000000..f0a6e90b6 Binary files /dev/null and b/fonts/MiniwiFont/00EA.png differ diff --git a/fonts/MiniwiFont/00EB.png b/fonts/MiniwiFont/00EB.png new file mode 100644 index 000000000..77c6d5d3d Binary files /dev/null and b/fonts/MiniwiFont/00EB.png differ diff --git a/fonts/MiniwiFont/00EC.png b/fonts/MiniwiFont/00EC.png new file mode 100644 index 000000000..21fc94342 Binary files /dev/null and b/fonts/MiniwiFont/00EC.png differ diff --git a/fonts/MiniwiFont/00ED.png b/fonts/MiniwiFont/00ED.png new file mode 100644 index 000000000..3664a1e9d Binary files /dev/null and b/fonts/MiniwiFont/00ED.png differ diff --git a/fonts/MiniwiFont/00EE.png b/fonts/MiniwiFont/00EE.png new file mode 100644 index 000000000..d0df0a66b Binary files /dev/null and b/fonts/MiniwiFont/00EE.png differ diff --git a/fonts/MiniwiFont/00EF.png b/fonts/MiniwiFont/00EF.png new file mode 100644 index 000000000..6739c017f Binary files /dev/null and b/fonts/MiniwiFont/00EF.png differ diff --git a/fonts/MiniwiFont/00F0.png b/fonts/MiniwiFont/00F0.png new file mode 100644 index 000000000..bcf283593 Binary files /dev/null and b/fonts/MiniwiFont/00F0.png differ diff --git a/fonts/MiniwiFont/00F1.png b/fonts/MiniwiFont/00F1.png new file mode 100644 index 000000000..5f91ec833 Binary files /dev/null and b/fonts/MiniwiFont/00F1.png differ diff --git a/fonts/MiniwiFont/00F2.png b/fonts/MiniwiFont/00F2.png new file mode 100644 index 000000000..b686990ba Binary files /dev/null and b/fonts/MiniwiFont/00F2.png differ diff --git a/fonts/MiniwiFont/00F3.png b/fonts/MiniwiFont/00F3.png new file mode 100644 index 000000000..7ad917754 Binary files /dev/null and b/fonts/MiniwiFont/00F3.png differ diff --git a/fonts/MiniwiFont/00F4.png b/fonts/MiniwiFont/00F4.png new file mode 100644 index 000000000..16cbf8df3 Binary files /dev/null and b/fonts/MiniwiFont/00F4.png differ diff --git a/fonts/MiniwiFont/00F5.png b/fonts/MiniwiFont/00F5.png new file mode 100644 index 000000000..33625e958 Binary files /dev/null and b/fonts/MiniwiFont/00F5.png differ diff --git a/fonts/MiniwiFont/00F6.png b/fonts/MiniwiFont/00F6.png new file mode 100644 index 000000000..dc02a7e35 Binary files /dev/null and b/fonts/MiniwiFont/00F6.png differ diff --git a/fonts/MiniwiFont/00F7.png b/fonts/MiniwiFont/00F7.png new file mode 100644 index 000000000..4a5397c82 Binary files /dev/null and b/fonts/MiniwiFont/00F7.png differ diff --git a/fonts/MiniwiFont/00F8.png b/fonts/MiniwiFont/00F8.png new file mode 100644 index 000000000..9cbc57414 Binary files /dev/null and b/fonts/MiniwiFont/00F8.png differ diff --git a/fonts/MiniwiFont/00F9.png b/fonts/MiniwiFont/00F9.png new file mode 100644 index 000000000..efbd4f925 Binary files /dev/null and b/fonts/MiniwiFont/00F9.png differ diff --git a/fonts/MiniwiFont/00FA.png b/fonts/MiniwiFont/00FA.png new file mode 100644 index 000000000..f81140615 Binary files /dev/null and b/fonts/MiniwiFont/00FA.png differ diff --git a/fonts/MiniwiFont/00FB.png b/fonts/MiniwiFont/00FB.png new file mode 100644 index 000000000..3dd5a8e34 Binary files /dev/null and b/fonts/MiniwiFont/00FB.png differ diff --git a/fonts/MiniwiFont/00FC.png b/fonts/MiniwiFont/00FC.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/00FC.png differ diff --git a/fonts/MiniwiFont/00FD.png b/fonts/MiniwiFont/00FD.png new file mode 100644 index 000000000..61f29880c Binary files /dev/null and b/fonts/MiniwiFont/00FD.png differ diff --git a/fonts/MiniwiFont/00FE.png b/fonts/MiniwiFont/00FE.png new file mode 100644 index 000000000..8242bf5c6 Binary files /dev/null and b/fonts/MiniwiFont/00FE.png differ diff --git a/fonts/MiniwiFont/00FF.png b/fonts/MiniwiFont/00FF.png new file mode 100644 index 000000000..a30e16e30 Binary files /dev/null and b/fonts/MiniwiFont/00FF.png differ diff --git a/fonts/MiniwiFont/0100.png b/fonts/MiniwiFont/0100.png new file mode 100644 index 000000000..e0fafd493 Binary files /dev/null and b/fonts/MiniwiFont/0100.png differ diff --git a/fonts/MiniwiFont/0101.png b/fonts/MiniwiFont/0101.png new file mode 100644 index 000000000..162b7b28e Binary files /dev/null and b/fonts/MiniwiFont/0101.png differ diff --git a/fonts/MiniwiFont/0102.png b/fonts/MiniwiFont/0102.png new file mode 100644 index 000000000..e0fafd493 Binary files /dev/null and b/fonts/MiniwiFont/0102.png differ diff --git a/fonts/MiniwiFont/0103.png b/fonts/MiniwiFont/0103.png new file mode 100644 index 000000000..162b7b28e Binary files /dev/null and b/fonts/MiniwiFont/0103.png differ diff --git a/fonts/MiniwiFont/0104.png b/fonts/MiniwiFont/0104.png new file mode 100644 index 000000000..a294903a4 Binary files /dev/null and b/fonts/MiniwiFont/0104.png differ diff --git a/fonts/MiniwiFont/0105.png b/fonts/MiniwiFont/0105.png new file mode 100644 index 000000000..f2495af14 Binary files /dev/null and b/fonts/MiniwiFont/0105.png differ diff --git a/fonts/MiniwiFont/0106.png b/fonts/MiniwiFont/0106.png new file mode 100644 index 000000000..866b5bf15 Binary files /dev/null and b/fonts/MiniwiFont/0106.png differ diff --git a/fonts/MiniwiFont/0107.png b/fonts/MiniwiFont/0107.png new file mode 100644 index 000000000..a2901bc4b Binary files /dev/null and b/fonts/MiniwiFont/0107.png differ diff --git a/fonts/MiniwiFont/0108.png b/fonts/MiniwiFont/0108.png new file mode 100644 index 000000000..140468be3 Binary files /dev/null and b/fonts/MiniwiFont/0108.png differ diff --git a/fonts/MiniwiFont/0109.png b/fonts/MiniwiFont/0109.png new file mode 100644 index 000000000..57d2cd207 Binary files /dev/null and b/fonts/MiniwiFont/0109.png differ diff --git a/fonts/MiniwiFont/010A.png b/fonts/MiniwiFont/010A.png new file mode 100644 index 000000000..3b647bb89 Binary files /dev/null and b/fonts/MiniwiFont/010A.png differ diff --git a/fonts/MiniwiFont/010B.png b/fonts/MiniwiFont/010B.png new file mode 100644 index 000000000..45f49c432 Binary files /dev/null and b/fonts/MiniwiFont/010B.png differ diff --git a/fonts/MiniwiFont/010C.png b/fonts/MiniwiFont/010C.png new file mode 100644 index 000000000..140468be3 Binary files /dev/null and b/fonts/MiniwiFont/010C.png differ diff --git a/fonts/MiniwiFont/010D.png b/fonts/MiniwiFont/010D.png new file mode 100644 index 000000000..57d2cd207 Binary files /dev/null and b/fonts/MiniwiFont/010D.png differ diff --git a/fonts/MiniwiFont/010E.png b/fonts/MiniwiFont/010E.png new file mode 100644 index 000000000..b55509c04 Binary files /dev/null and b/fonts/MiniwiFont/010E.png differ diff --git a/fonts/MiniwiFont/010F.png b/fonts/MiniwiFont/010F.png new file mode 100644 index 000000000..98c93dab3 Binary files /dev/null and b/fonts/MiniwiFont/010F.png differ diff --git a/fonts/MiniwiFont/0110.png b/fonts/MiniwiFont/0110.png new file mode 100644 index 000000000..6537bd3f5 Binary files /dev/null and b/fonts/MiniwiFont/0110.png differ diff --git a/fonts/MiniwiFont/0111.png b/fonts/MiniwiFont/0111.png new file mode 100644 index 000000000..d61755c46 Binary files /dev/null and b/fonts/MiniwiFont/0111.png differ diff --git a/fonts/MiniwiFont/0112.png b/fonts/MiniwiFont/0112.png new file mode 100644 index 000000000..7bbd2ee9f Binary files /dev/null and b/fonts/MiniwiFont/0112.png differ diff --git a/fonts/MiniwiFont/0113.png b/fonts/MiniwiFont/0113.png new file mode 100644 index 000000000..f0a6e90b6 Binary files /dev/null and b/fonts/MiniwiFont/0113.png differ diff --git a/fonts/MiniwiFont/0114.png b/fonts/MiniwiFont/0114.png new file mode 100644 index 000000000..7bbd2ee9f Binary files /dev/null and b/fonts/MiniwiFont/0114.png differ diff --git a/fonts/MiniwiFont/0115.png b/fonts/MiniwiFont/0115.png new file mode 100644 index 000000000..f0a6e90b6 Binary files /dev/null and b/fonts/MiniwiFont/0115.png differ diff --git a/fonts/MiniwiFont/0116.png b/fonts/MiniwiFont/0116.png new file mode 100644 index 000000000..2d9d87dcd Binary files /dev/null and b/fonts/MiniwiFont/0116.png differ diff --git a/fonts/MiniwiFont/0117.png b/fonts/MiniwiFont/0117.png new file mode 100644 index 000000000..0b05d8509 Binary files /dev/null and b/fonts/MiniwiFont/0117.png differ diff --git a/fonts/MiniwiFont/0118.png b/fonts/MiniwiFont/0118.png new file mode 100644 index 000000000..6ab83db69 Binary files /dev/null and b/fonts/MiniwiFont/0118.png differ diff --git a/fonts/MiniwiFont/0119.png b/fonts/MiniwiFont/0119.png new file mode 100644 index 000000000..da8dbef37 Binary files /dev/null and b/fonts/MiniwiFont/0119.png differ diff --git a/fonts/MiniwiFont/011A.png b/fonts/MiniwiFont/011A.png new file mode 100644 index 000000000..7bbd2ee9f Binary files /dev/null and b/fonts/MiniwiFont/011A.png differ diff --git a/fonts/MiniwiFont/011B.png b/fonts/MiniwiFont/011B.png new file mode 100644 index 000000000..f0a6e90b6 Binary files /dev/null and b/fonts/MiniwiFont/011B.png differ diff --git a/fonts/MiniwiFont/011C.png b/fonts/MiniwiFont/011C.png new file mode 100644 index 000000000..6eec2e852 Binary files /dev/null and b/fonts/MiniwiFont/011C.png differ diff --git a/fonts/MiniwiFont/011D.png b/fonts/MiniwiFont/011D.png new file mode 100644 index 000000000..8b88f14d6 Binary files /dev/null and b/fonts/MiniwiFont/011D.png differ diff --git a/fonts/MiniwiFont/011E.png b/fonts/MiniwiFont/011E.png new file mode 100644 index 000000000..6eec2e852 Binary files /dev/null and b/fonts/MiniwiFont/011E.png differ diff --git a/fonts/MiniwiFont/011F.png b/fonts/MiniwiFont/011F.png new file mode 100644 index 000000000..8b88f14d6 Binary files /dev/null and b/fonts/MiniwiFont/011F.png differ diff --git a/fonts/MiniwiFont/0120.png b/fonts/MiniwiFont/0120.png new file mode 100644 index 000000000..aa5a1626d Binary files /dev/null and b/fonts/MiniwiFont/0120.png differ diff --git a/fonts/MiniwiFont/0121.png b/fonts/MiniwiFont/0121.png new file mode 100644 index 000000000..56ce18367 Binary files /dev/null and b/fonts/MiniwiFont/0121.png differ diff --git a/fonts/MiniwiFont/0122.png b/fonts/MiniwiFont/0122.png new file mode 100644 index 000000000..0b00acc9f Binary files /dev/null and b/fonts/MiniwiFont/0122.png differ diff --git a/fonts/MiniwiFont/0123.png b/fonts/MiniwiFont/0123.png new file mode 100644 index 000000000..c520bb0ce Binary files /dev/null and b/fonts/MiniwiFont/0123.png differ diff --git a/fonts/MiniwiFont/0124.png b/fonts/MiniwiFont/0124.png new file mode 100644 index 000000000..12412c631 Binary files /dev/null and b/fonts/MiniwiFont/0124.png differ diff --git a/fonts/MiniwiFont/0125.png b/fonts/MiniwiFont/0125.png new file mode 100644 index 000000000..a9dc7c260 Binary files /dev/null and b/fonts/MiniwiFont/0125.png differ diff --git a/fonts/MiniwiFont/0126.png b/fonts/MiniwiFont/0126.png new file mode 100644 index 000000000..ed9d4e45a Binary files /dev/null and b/fonts/MiniwiFont/0126.png differ diff --git a/fonts/MiniwiFont/0127.png b/fonts/MiniwiFont/0127.png new file mode 100644 index 000000000..4e764e0b4 Binary files /dev/null and b/fonts/MiniwiFont/0127.png differ diff --git a/fonts/MiniwiFont/0128.png b/fonts/MiniwiFont/0128.png new file mode 100644 index 000000000..a9c811587 Binary files /dev/null and b/fonts/MiniwiFont/0128.png differ diff --git a/fonts/MiniwiFont/0129.png b/fonts/MiniwiFont/0129.png new file mode 100644 index 000000000..862521cc1 Binary files /dev/null and b/fonts/MiniwiFont/0129.png differ diff --git a/fonts/MiniwiFont/012A.png b/fonts/MiniwiFont/012A.png new file mode 100644 index 000000000..35e55dfc5 Binary files /dev/null and b/fonts/MiniwiFont/012A.png differ diff --git a/fonts/MiniwiFont/012B.png b/fonts/MiniwiFont/012B.png new file mode 100644 index 000000000..d0df0a66b Binary files /dev/null and b/fonts/MiniwiFont/012B.png differ diff --git a/fonts/MiniwiFont/012C.png b/fonts/MiniwiFont/012C.png new file mode 100644 index 000000000..35e55dfc5 Binary files /dev/null and b/fonts/MiniwiFont/012C.png differ diff --git a/fonts/MiniwiFont/012D.png b/fonts/MiniwiFont/012D.png new file mode 100644 index 000000000..d0df0a66b Binary files /dev/null and b/fonts/MiniwiFont/012D.png differ diff --git a/fonts/MiniwiFont/012E.png b/fonts/MiniwiFont/012E.png new file mode 100644 index 000000000..8d4645ad3 Binary files /dev/null and b/fonts/MiniwiFont/012E.png differ diff --git a/fonts/MiniwiFont/012F.png b/fonts/MiniwiFont/012F.png new file mode 100644 index 000000000..8fc157a4d Binary files /dev/null and b/fonts/MiniwiFont/012F.png differ diff --git a/fonts/MiniwiFont/0130.png b/fonts/MiniwiFont/0130.png new file mode 100644 index 000000000..736a40b6d Binary files /dev/null and b/fonts/MiniwiFont/0130.png differ diff --git a/fonts/MiniwiFont/0131.png b/fonts/MiniwiFont/0131.png new file mode 100644 index 000000000..c59881efd Binary files /dev/null and b/fonts/MiniwiFont/0131.png differ diff --git a/fonts/MiniwiFont/0132.png b/fonts/MiniwiFont/0132.png new file mode 100644 index 000000000..8826e69db Binary files /dev/null and b/fonts/MiniwiFont/0132.png differ diff --git a/fonts/MiniwiFont/0133.png b/fonts/MiniwiFont/0133.png new file mode 100644 index 000000000..245b191a4 Binary files /dev/null and b/fonts/MiniwiFont/0133.png differ diff --git a/fonts/MiniwiFont/0134.png b/fonts/MiniwiFont/0134.png new file mode 100644 index 000000000..a7b2b02c7 Binary files /dev/null and b/fonts/MiniwiFont/0134.png differ diff --git a/fonts/MiniwiFont/0135.png b/fonts/MiniwiFont/0135.png new file mode 100644 index 000000000..f0c521db3 Binary files /dev/null and b/fonts/MiniwiFont/0135.png differ diff --git a/fonts/MiniwiFont/0136.png b/fonts/MiniwiFont/0136.png new file mode 100644 index 000000000..c1ec818cd Binary files /dev/null and b/fonts/MiniwiFont/0136.png differ diff --git a/fonts/MiniwiFont/0137.png b/fonts/MiniwiFont/0137.png new file mode 100644 index 000000000..85ab4ba49 Binary files /dev/null and b/fonts/MiniwiFont/0137.png differ diff --git a/fonts/MiniwiFont/0138.png b/fonts/MiniwiFont/0138.png new file mode 100644 index 000000000..f38d8ea76 Binary files /dev/null and b/fonts/MiniwiFont/0138.png differ diff --git a/fonts/MiniwiFont/0139.png b/fonts/MiniwiFont/0139.png new file mode 100644 index 000000000..a716d4d23 Binary files /dev/null and b/fonts/MiniwiFont/0139.png differ diff --git a/fonts/MiniwiFont/013A.png b/fonts/MiniwiFont/013A.png new file mode 100644 index 000000000..f6d5949e4 Binary files /dev/null and b/fonts/MiniwiFont/013A.png differ diff --git a/fonts/MiniwiFont/013B.png b/fonts/MiniwiFont/013B.png new file mode 100644 index 000000000..e508de4df Binary files /dev/null and b/fonts/MiniwiFont/013B.png differ diff --git a/fonts/MiniwiFont/013C.png b/fonts/MiniwiFont/013C.png new file mode 100644 index 000000000..440487e7a Binary files /dev/null and b/fonts/MiniwiFont/013C.png differ diff --git a/fonts/MiniwiFont/013D.png b/fonts/MiniwiFont/013D.png new file mode 100644 index 000000000..cc0620977 Binary files /dev/null and b/fonts/MiniwiFont/013D.png differ diff --git a/fonts/MiniwiFont/013E.png b/fonts/MiniwiFont/013E.png new file mode 100644 index 000000000..0e002337a Binary files /dev/null and b/fonts/MiniwiFont/013E.png differ diff --git a/fonts/MiniwiFont/013F.png b/fonts/MiniwiFont/013F.png new file mode 100644 index 000000000..3f7cb72d8 Binary files /dev/null and b/fonts/MiniwiFont/013F.png differ diff --git a/fonts/MiniwiFont/0140.png b/fonts/MiniwiFont/0140.png new file mode 100644 index 000000000..54196b658 Binary files /dev/null and b/fonts/MiniwiFont/0140.png differ diff --git a/fonts/MiniwiFont/0141.png b/fonts/MiniwiFont/0141.png new file mode 100644 index 000000000..ecf3d8622 Binary files /dev/null and b/fonts/MiniwiFont/0141.png differ diff --git a/fonts/MiniwiFont/0142.png b/fonts/MiniwiFont/0142.png new file mode 100644 index 000000000..d1a111af8 Binary files /dev/null and b/fonts/MiniwiFont/0142.png differ diff --git a/fonts/MiniwiFont/0143.png b/fonts/MiniwiFont/0143.png new file mode 100644 index 000000000..5b9f7feca Binary files /dev/null and b/fonts/MiniwiFont/0143.png differ diff --git a/fonts/MiniwiFont/0144.png b/fonts/MiniwiFont/0144.png new file mode 100644 index 000000000..7a13a6eec Binary files /dev/null and b/fonts/MiniwiFont/0144.png differ diff --git a/fonts/MiniwiFont/0145.png b/fonts/MiniwiFont/0145.png new file mode 100644 index 000000000..c849d5180 Binary files /dev/null and b/fonts/MiniwiFont/0145.png differ diff --git a/fonts/MiniwiFont/0146.png b/fonts/MiniwiFont/0146.png new file mode 100644 index 000000000..72a16337b Binary files /dev/null and b/fonts/MiniwiFont/0146.png differ diff --git a/fonts/MiniwiFont/0147.png b/fonts/MiniwiFont/0147.png new file mode 100644 index 000000000..6ffccc242 Binary files /dev/null and b/fonts/MiniwiFont/0147.png differ diff --git a/fonts/MiniwiFont/0148.png b/fonts/MiniwiFont/0148.png new file mode 100644 index 000000000..5c059d345 Binary files /dev/null and b/fonts/MiniwiFont/0148.png differ diff --git a/fonts/MiniwiFont/0149.png b/fonts/MiniwiFont/0149.png new file mode 100644 index 000000000..312c5235e Binary files /dev/null and b/fonts/MiniwiFont/0149.png differ diff --git a/fonts/MiniwiFont/014A.png b/fonts/MiniwiFont/014A.png new file mode 100644 index 000000000..d8c8d1828 Binary files /dev/null and b/fonts/MiniwiFont/014A.png differ diff --git a/fonts/MiniwiFont/014B.png b/fonts/MiniwiFont/014B.png new file mode 100644 index 000000000..6a31daf76 Binary files /dev/null and b/fonts/MiniwiFont/014B.png differ diff --git a/fonts/MiniwiFont/014C.png b/fonts/MiniwiFont/014C.png new file mode 100644 index 000000000..696309c40 Binary files /dev/null and b/fonts/MiniwiFont/014C.png differ diff --git a/fonts/MiniwiFont/014D.png b/fonts/MiniwiFont/014D.png new file mode 100644 index 000000000..16cbf8df3 Binary files /dev/null and b/fonts/MiniwiFont/014D.png differ diff --git a/fonts/MiniwiFont/014E.png b/fonts/MiniwiFont/014E.png new file mode 100644 index 000000000..696309c40 Binary files /dev/null and b/fonts/MiniwiFont/014E.png differ diff --git a/fonts/MiniwiFont/014F.png b/fonts/MiniwiFont/014F.png new file mode 100644 index 000000000..16cbf8df3 Binary files /dev/null and b/fonts/MiniwiFont/014F.png differ diff --git a/fonts/MiniwiFont/0150.png b/fonts/MiniwiFont/0150.png new file mode 100644 index 000000000..b470a7eb5 Binary files /dev/null and b/fonts/MiniwiFont/0150.png differ diff --git a/fonts/MiniwiFont/0151.png b/fonts/MiniwiFont/0151.png new file mode 100644 index 000000000..dc02a7e35 Binary files /dev/null and b/fonts/MiniwiFont/0151.png differ diff --git a/fonts/MiniwiFont/0152.png b/fonts/MiniwiFont/0152.png new file mode 100644 index 000000000..5f4f10bc9 Binary files /dev/null and b/fonts/MiniwiFont/0152.png differ diff --git a/fonts/MiniwiFont/0153.png b/fonts/MiniwiFont/0153.png new file mode 100644 index 000000000..55cac970c Binary files /dev/null and b/fonts/MiniwiFont/0153.png differ diff --git a/fonts/MiniwiFont/0154.png b/fonts/MiniwiFont/0154.png new file mode 100644 index 000000000..f9ceb2ed0 Binary files /dev/null and b/fonts/MiniwiFont/0154.png differ diff --git a/fonts/MiniwiFont/0155.png b/fonts/MiniwiFont/0155.png new file mode 100644 index 000000000..a546187ff Binary files /dev/null and b/fonts/MiniwiFont/0155.png differ diff --git a/fonts/MiniwiFont/0156.png b/fonts/MiniwiFont/0156.png new file mode 100644 index 000000000..da1c350d9 Binary files /dev/null and b/fonts/MiniwiFont/0156.png differ diff --git a/fonts/MiniwiFont/0157.png b/fonts/MiniwiFont/0157.png new file mode 100644 index 000000000..596277556 Binary files /dev/null and b/fonts/MiniwiFont/0157.png differ diff --git a/fonts/MiniwiFont/0158.png b/fonts/MiniwiFont/0158.png new file mode 100644 index 000000000..fbb0178c1 Binary files /dev/null and b/fonts/MiniwiFont/0158.png differ diff --git a/fonts/MiniwiFont/0159.png b/fonts/MiniwiFont/0159.png new file mode 100644 index 000000000..13bc85b32 Binary files /dev/null and b/fonts/MiniwiFont/0159.png differ diff --git a/fonts/MiniwiFont/015A.png b/fonts/MiniwiFont/015A.png new file mode 100644 index 000000000..0e0bfcae2 Binary files /dev/null and b/fonts/MiniwiFont/015A.png differ diff --git a/fonts/MiniwiFont/015B.png b/fonts/MiniwiFont/015B.png new file mode 100644 index 000000000..42e0f406a Binary files /dev/null and b/fonts/MiniwiFont/015B.png differ diff --git a/fonts/MiniwiFont/015C.png b/fonts/MiniwiFont/015C.png new file mode 100644 index 000000000..3299beb05 Binary files /dev/null and b/fonts/MiniwiFont/015C.png differ diff --git a/fonts/MiniwiFont/015D.png b/fonts/MiniwiFont/015D.png new file mode 100644 index 000000000..eecc258c6 Binary files /dev/null and b/fonts/MiniwiFont/015D.png differ diff --git a/fonts/MiniwiFont/015E.png b/fonts/MiniwiFont/015E.png new file mode 100644 index 000000000..ca5b0e811 Binary files /dev/null and b/fonts/MiniwiFont/015E.png differ diff --git a/fonts/MiniwiFont/015F.png b/fonts/MiniwiFont/015F.png new file mode 100644 index 000000000..db1cce6f0 Binary files /dev/null and b/fonts/MiniwiFont/015F.png differ diff --git a/fonts/MiniwiFont/0160.png b/fonts/MiniwiFont/0160.png new file mode 100644 index 000000000..3299beb05 Binary files /dev/null and b/fonts/MiniwiFont/0160.png differ diff --git a/fonts/MiniwiFont/0161.png b/fonts/MiniwiFont/0161.png new file mode 100644 index 000000000..eecc258c6 Binary files /dev/null and b/fonts/MiniwiFont/0161.png differ diff --git a/fonts/MiniwiFont/0162.png b/fonts/MiniwiFont/0162.png new file mode 100644 index 000000000..cb7b72d29 Binary files /dev/null and b/fonts/MiniwiFont/0162.png differ diff --git a/fonts/MiniwiFont/0163.png b/fonts/MiniwiFont/0163.png new file mode 100644 index 000000000..146c84f8f Binary files /dev/null and b/fonts/MiniwiFont/0163.png differ diff --git a/fonts/MiniwiFont/0164.png b/fonts/MiniwiFont/0164.png new file mode 100644 index 000000000..2340517b5 Binary files /dev/null and b/fonts/MiniwiFont/0164.png differ diff --git a/fonts/MiniwiFont/0165.png b/fonts/MiniwiFont/0165.png new file mode 100644 index 000000000..6fe2a9e3f Binary files /dev/null and b/fonts/MiniwiFont/0165.png differ diff --git a/fonts/MiniwiFont/0166.png b/fonts/MiniwiFont/0166.png new file mode 100644 index 000000000..261d1c952 Binary files /dev/null and b/fonts/MiniwiFont/0166.png differ diff --git a/fonts/MiniwiFont/0167.png b/fonts/MiniwiFont/0167.png new file mode 100644 index 000000000..7fcb8aa8b Binary files /dev/null and b/fonts/MiniwiFont/0167.png differ diff --git a/fonts/MiniwiFont/0168.png b/fonts/MiniwiFont/0168.png new file mode 100644 index 000000000..988688dd0 Binary files /dev/null and b/fonts/MiniwiFont/0168.png differ diff --git a/fonts/MiniwiFont/0169.png b/fonts/MiniwiFont/0169.png new file mode 100644 index 000000000..988688dd0 Binary files /dev/null and b/fonts/MiniwiFont/0169.png differ diff --git a/fonts/MiniwiFont/016A.png b/fonts/MiniwiFont/016A.png new file mode 100644 index 000000000..3dd5a8e34 Binary files /dev/null and b/fonts/MiniwiFont/016A.png differ diff --git a/fonts/MiniwiFont/016B.png b/fonts/MiniwiFont/016B.png new file mode 100644 index 000000000..3dd5a8e34 Binary files /dev/null and b/fonts/MiniwiFont/016B.png differ diff --git a/fonts/MiniwiFont/016C.png b/fonts/MiniwiFont/016C.png new file mode 100644 index 000000000..3dd5a8e34 Binary files /dev/null and b/fonts/MiniwiFont/016C.png differ diff --git a/fonts/MiniwiFont/016D.png b/fonts/MiniwiFont/016D.png new file mode 100644 index 000000000..3dd5a8e34 Binary files /dev/null and b/fonts/MiniwiFont/016D.png differ diff --git a/fonts/MiniwiFont/016E.png b/fonts/MiniwiFont/016E.png new file mode 100644 index 000000000..b1db5c160 Binary files /dev/null and b/fonts/MiniwiFont/016E.png differ diff --git a/fonts/MiniwiFont/016F.png b/fonts/MiniwiFont/016F.png new file mode 100644 index 000000000..b1db5c160 Binary files /dev/null and b/fonts/MiniwiFont/016F.png differ diff --git a/fonts/MiniwiFont/0170.png b/fonts/MiniwiFont/0170.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/0170.png differ diff --git a/fonts/MiniwiFont/0171.png b/fonts/MiniwiFont/0171.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/0171.png differ diff --git a/fonts/MiniwiFont/0172.png b/fonts/MiniwiFont/0172.png new file mode 100644 index 000000000..9bafc0602 Binary files /dev/null and b/fonts/MiniwiFont/0172.png differ diff --git a/fonts/MiniwiFont/0173.png b/fonts/MiniwiFont/0173.png new file mode 100644 index 000000000..306f6b8e3 Binary files /dev/null and b/fonts/MiniwiFont/0173.png differ diff --git a/fonts/MiniwiFont/0174.png b/fonts/MiniwiFont/0174.png new file mode 100644 index 000000000..040c003ed Binary files /dev/null and b/fonts/MiniwiFont/0174.png differ diff --git a/fonts/MiniwiFont/0175.png b/fonts/MiniwiFont/0175.png new file mode 100644 index 000000000..040c003ed Binary files /dev/null and b/fonts/MiniwiFont/0175.png differ diff --git a/fonts/MiniwiFont/0176.png b/fonts/MiniwiFont/0176.png new file mode 100644 index 000000000..d4fed6fa8 Binary files /dev/null and b/fonts/MiniwiFont/0176.png differ diff --git a/fonts/MiniwiFont/0177.png b/fonts/MiniwiFont/0177.png new file mode 100644 index 000000000..a9839ab19 Binary files /dev/null and b/fonts/MiniwiFont/0177.png differ diff --git a/fonts/MiniwiFont/0178.png b/fonts/MiniwiFont/0178.png new file mode 100644 index 000000000..45d99097c Binary files /dev/null and b/fonts/MiniwiFont/0178.png differ diff --git a/fonts/MiniwiFont/0179.png b/fonts/MiniwiFont/0179.png new file mode 100644 index 000000000..ba717498e Binary files /dev/null and b/fonts/MiniwiFont/0179.png differ diff --git a/fonts/MiniwiFont/017A.png b/fonts/MiniwiFont/017A.png new file mode 100644 index 000000000..5b504938b Binary files /dev/null and b/fonts/MiniwiFont/017A.png differ diff --git a/fonts/MiniwiFont/017B.png b/fonts/MiniwiFont/017B.png new file mode 100644 index 000000000..9fbeaa889 Binary files /dev/null and b/fonts/MiniwiFont/017B.png differ diff --git a/fonts/MiniwiFont/017C.png b/fonts/MiniwiFont/017C.png new file mode 100644 index 000000000..bd256f791 Binary files /dev/null and b/fonts/MiniwiFont/017C.png differ diff --git a/fonts/MiniwiFont/017D.png b/fonts/MiniwiFont/017D.png new file mode 100644 index 000000000..e82fbd251 Binary files /dev/null and b/fonts/MiniwiFont/017D.png differ diff --git a/fonts/MiniwiFont/017E.png b/fonts/MiniwiFont/017E.png new file mode 100644 index 000000000..d1972d35d Binary files /dev/null and b/fonts/MiniwiFont/017E.png differ diff --git a/fonts/MiniwiFont/017F.png b/fonts/MiniwiFont/017F.png new file mode 100644 index 000000000..2f7bc2bce Binary files /dev/null and b/fonts/MiniwiFont/017F.png differ diff --git a/fonts/MiniwiFont/0180.png b/fonts/MiniwiFont/0180.png new file mode 100644 index 000000000..9dcbf3fd9 Binary files /dev/null and b/fonts/MiniwiFont/0180.png differ diff --git a/fonts/MiniwiFont/0181.png b/fonts/MiniwiFont/0181.png new file mode 100644 index 000000000..c070d5194 Binary files /dev/null and b/fonts/MiniwiFont/0181.png differ diff --git a/fonts/MiniwiFont/0182.png b/fonts/MiniwiFont/0182.png new file mode 100644 index 000000000..94b0ac3f3 Binary files /dev/null and b/fonts/MiniwiFont/0182.png differ diff --git a/fonts/MiniwiFont/0183.png b/fonts/MiniwiFont/0183.png new file mode 100644 index 000000000..8456ef9ea Binary files /dev/null and b/fonts/MiniwiFont/0183.png differ diff --git a/fonts/MiniwiFont/0184.png b/fonts/MiniwiFont/0184.png new file mode 100644 index 000000000..45e2d1e53 Binary files /dev/null and b/fonts/MiniwiFont/0184.png differ diff --git a/fonts/MiniwiFont/0185.png b/fonts/MiniwiFont/0185.png new file mode 100644 index 000000000..90902141d Binary files /dev/null and b/fonts/MiniwiFont/0185.png differ diff --git a/fonts/MiniwiFont/0186.png b/fonts/MiniwiFont/0186.png new file mode 100644 index 000000000..78c2f6e9a Binary files /dev/null and b/fonts/MiniwiFont/0186.png differ diff --git a/fonts/MiniwiFont/0187.png b/fonts/MiniwiFont/0187.png new file mode 100644 index 000000000..a16ecdcc8 Binary files /dev/null and b/fonts/MiniwiFont/0187.png differ diff --git a/fonts/MiniwiFont/0188.png b/fonts/MiniwiFont/0188.png new file mode 100644 index 000000000..32d69b30c Binary files /dev/null and b/fonts/MiniwiFont/0188.png differ diff --git a/fonts/MiniwiFont/0189.png b/fonts/MiniwiFont/0189.png new file mode 100644 index 000000000..6537bd3f5 Binary files /dev/null and b/fonts/MiniwiFont/0189.png differ diff --git a/fonts/MiniwiFont/018A.png b/fonts/MiniwiFont/018A.png new file mode 100644 index 000000000..0866561d0 Binary files /dev/null and b/fonts/MiniwiFont/018A.png differ diff --git a/fonts/MiniwiFont/018B.png b/fonts/MiniwiFont/018B.png new file mode 100644 index 000000000..6209ae902 Binary files /dev/null and b/fonts/MiniwiFont/018B.png differ diff --git a/fonts/MiniwiFont/018C.png b/fonts/MiniwiFont/018C.png new file mode 100644 index 000000000..6209ae902 Binary files /dev/null and b/fonts/MiniwiFont/018C.png differ diff --git a/fonts/MiniwiFont/018D.png b/fonts/MiniwiFont/018D.png new file mode 100644 index 000000000..736ea0347 Binary files /dev/null and b/fonts/MiniwiFont/018D.png differ diff --git a/fonts/MiniwiFont/018E.png b/fonts/MiniwiFont/018E.png new file mode 100644 index 000000000..963fdca2d Binary files /dev/null and b/fonts/MiniwiFont/018E.png differ diff --git a/fonts/MiniwiFont/018F.png b/fonts/MiniwiFont/018F.png new file mode 100644 index 000000000..c7b5ea1a7 Binary files /dev/null and b/fonts/MiniwiFont/018F.png differ diff --git a/fonts/MiniwiFont/0190.png b/fonts/MiniwiFont/0190.png new file mode 100644 index 000000000..488f467f0 Binary files /dev/null and b/fonts/MiniwiFont/0190.png differ diff --git a/fonts/MiniwiFont/0191.png b/fonts/MiniwiFont/0191.png new file mode 100644 index 000000000..69a954d97 Binary files /dev/null and b/fonts/MiniwiFont/0191.png differ diff --git a/fonts/MiniwiFont/0192.png b/fonts/MiniwiFont/0192.png new file mode 100644 index 000000000..e15deef58 Binary files /dev/null and b/fonts/MiniwiFont/0192.png differ diff --git a/fonts/MiniwiFont/0193.png b/fonts/MiniwiFont/0193.png new file mode 100644 index 000000000..dea339b3e Binary files /dev/null and b/fonts/MiniwiFont/0193.png differ diff --git a/fonts/MiniwiFont/0194.png b/fonts/MiniwiFont/0194.png new file mode 100644 index 000000000..4b841ee3b Binary files /dev/null and b/fonts/MiniwiFont/0194.png differ diff --git a/fonts/MiniwiFont/0195.png b/fonts/MiniwiFont/0195.png new file mode 100644 index 000000000..4f8ae41c0 Binary files /dev/null and b/fonts/MiniwiFont/0195.png differ diff --git a/fonts/MiniwiFont/0196.png b/fonts/MiniwiFont/0196.png new file mode 100644 index 000000000..033125086 Binary files /dev/null and b/fonts/MiniwiFont/0196.png differ diff --git a/fonts/MiniwiFont/0197.png b/fonts/MiniwiFont/0197.png new file mode 100644 index 000000000..acb909e23 Binary files /dev/null and b/fonts/MiniwiFont/0197.png differ diff --git a/fonts/MiniwiFont/0198.png b/fonts/MiniwiFont/0198.png new file mode 100644 index 000000000..0d7f13603 Binary files /dev/null and b/fonts/MiniwiFont/0198.png differ diff --git a/fonts/MiniwiFont/0199.png b/fonts/MiniwiFont/0199.png new file mode 100644 index 000000000..51b1ef5ac Binary files /dev/null and b/fonts/MiniwiFont/0199.png differ diff --git a/fonts/MiniwiFont/019A.png b/fonts/MiniwiFont/019A.png new file mode 100644 index 000000000..acb909e23 Binary files /dev/null and b/fonts/MiniwiFont/019A.png differ diff --git a/fonts/MiniwiFont/019B.png b/fonts/MiniwiFont/019B.png new file mode 100644 index 000000000..eac3ed094 Binary files /dev/null and b/fonts/MiniwiFont/019B.png differ diff --git a/fonts/MiniwiFont/019C.png b/fonts/MiniwiFont/019C.png new file mode 100644 index 000000000..deea51ac0 Binary files /dev/null and b/fonts/MiniwiFont/019C.png differ diff --git a/fonts/MiniwiFont/019D.png b/fonts/MiniwiFont/019D.png new file mode 100644 index 000000000..ebae85fac Binary files /dev/null and b/fonts/MiniwiFont/019D.png differ diff --git a/fonts/MiniwiFont/019E.png b/fonts/MiniwiFont/019E.png new file mode 100644 index 000000000..01fdb590d Binary files /dev/null and b/fonts/MiniwiFont/019E.png differ diff --git a/fonts/MiniwiFont/019F.png b/fonts/MiniwiFont/019F.png new file mode 100644 index 000000000..5d5f0ebb1 Binary files /dev/null and b/fonts/MiniwiFont/019F.png differ diff --git a/fonts/MiniwiFont/01A0.png b/fonts/MiniwiFont/01A0.png new file mode 100644 index 000000000..1afd42fca Binary files /dev/null and b/fonts/MiniwiFont/01A0.png differ diff --git a/fonts/MiniwiFont/01A1.png b/fonts/MiniwiFont/01A1.png new file mode 100644 index 000000000..f0b9aa681 Binary files /dev/null and b/fonts/MiniwiFont/01A1.png differ diff --git a/fonts/MiniwiFont/01A2.png b/fonts/MiniwiFont/01A2.png new file mode 100644 index 000000000..998dafa2c Binary files /dev/null and b/fonts/MiniwiFont/01A2.png differ diff --git a/fonts/MiniwiFont/01A3.png b/fonts/MiniwiFont/01A3.png new file mode 100644 index 000000000..33d73f6d2 Binary files /dev/null and b/fonts/MiniwiFont/01A3.png differ diff --git a/fonts/MiniwiFont/01A4.png b/fonts/MiniwiFont/01A4.png new file mode 100644 index 000000000..0ae44612a Binary files /dev/null and b/fonts/MiniwiFont/01A4.png differ diff --git a/fonts/MiniwiFont/01A5.png b/fonts/MiniwiFont/01A5.png new file mode 100644 index 000000000..021a9eb0b Binary files /dev/null and b/fonts/MiniwiFont/01A5.png differ diff --git a/fonts/MiniwiFont/01A6.png b/fonts/MiniwiFont/01A6.png new file mode 100644 index 000000000..849a06c70 Binary files /dev/null and b/fonts/MiniwiFont/01A6.png differ diff --git a/fonts/MiniwiFont/01A7.png b/fonts/MiniwiFont/01A7.png new file mode 100644 index 000000000..15efba901 Binary files /dev/null and b/fonts/MiniwiFont/01A7.png differ diff --git a/fonts/MiniwiFont/01A8.png b/fonts/MiniwiFont/01A8.png new file mode 100644 index 000000000..222e435e5 Binary files /dev/null and b/fonts/MiniwiFont/01A8.png differ diff --git a/fonts/MiniwiFont/01A9.png b/fonts/MiniwiFont/01A9.png new file mode 100644 index 000000000..f9e1595a5 Binary files /dev/null and b/fonts/MiniwiFont/01A9.png differ diff --git a/fonts/MiniwiFont/01AA.png b/fonts/MiniwiFont/01AA.png new file mode 100644 index 000000000..ecc2de9ae Binary files /dev/null and b/fonts/MiniwiFont/01AA.png differ diff --git a/fonts/MiniwiFont/01AB.png b/fonts/MiniwiFont/01AB.png new file mode 100644 index 000000000..146c84f8f Binary files /dev/null and b/fonts/MiniwiFont/01AB.png differ diff --git a/fonts/MiniwiFont/01AC.png b/fonts/MiniwiFont/01AC.png new file mode 100644 index 000000000..0496571b7 Binary files /dev/null and b/fonts/MiniwiFont/01AC.png differ diff --git a/fonts/MiniwiFont/01AD.png b/fonts/MiniwiFont/01AD.png new file mode 100644 index 000000000..88820fb38 Binary files /dev/null and b/fonts/MiniwiFont/01AD.png differ diff --git a/fonts/MiniwiFont/01AE.png b/fonts/MiniwiFont/01AE.png new file mode 100644 index 000000000..e914b1cb9 Binary files /dev/null and b/fonts/MiniwiFont/01AE.png differ diff --git a/fonts/MiniwiFont/01AF.png b/fonts/MiniwiFont/01AF.png new file mode 100644 index 000000000..2c77ae467 Binary files /dev/null and b/fonts/MiniwiFont/01AF.png differ diff --git a/fonts/MiniwiFont/01B0.png b/fonts/MiniwiFont/01B0.png new file mode 100644 index 000000000..c656cafb2 Binary files /dev/null and b/fonts/MiniwiFont/01B0.png differ diff --git a/fonts/MiniwiFont/01B1.png b/fonts/MiniwiFont/01B1.png new file mode 100644 index 000000000..dab3c42a9 Binary files /dev/null and b/fonts/MiniwiFont/01B1.png differ diff --git a/fonts/MiniwiFont/01B2.png b/fonts/MiniwiFont/01B2.png new file mode 100644 index 000000000..fea1e9ff5 Binary files /dev/null and b/fonts/MiniwiFont/01B2.png differ diff --git a/fonts/MiniwiFont/01B3.png b/fonts/MiniwiFont/01B3.png new file mode 100644 index 000000000..27ed0fbe4 Binary files /dev/null and b/fonts/MiniwiFont/01B3.png differ diff --git a/fonts/MiniwiFont/01B4.png b/fonts/MiniwiFont/01B4.png new file mode 100644 index 000000000..dbb563fa7 Binary files /dev/null and b/fonts/MiniwiFont/01B4.png differ diff --git a/fonts/MiniwiFont/01B5.png b/fonts/MiniwiFont/01B5.png new file mode 100644 index 000000000..587c37aa6 Binary files /dev/null and b/fonts/MiniwiFont/01B5.png differ diff --git a/fonts/MiniwiFont/01B6.png b/fonts/MiniwiFont/01B6.png new file mode 100644 index 000000000..d727e9b68 Binary files /dev/null and b/fonts/MiniwiFont/01B6.png differ diff --git a/fonts/MiniwiFont/01B7.png b/fonts/MiniwiFont/01B7.png new file mode 100644 index 000000000..5abcbf045 Binary files /dev/null and b/fonts/MiniwiFont/01B7.png differ diff --git a/fonts/MiniwiFont/01B8.png b/fonts/MiniwiFont/01B8.png new file mode 100644 index 000000000..e2d9643a4 Binary files /dev/null and b/fonts/MiniwiFont/01B8.png differ diff --git a/fonts/MiniwiFont/01B9.png b/fonts/MiniwiFont/01B9.png new file mode 100644 index 000000000..a9863434b Binary files /dev/null and b/fonts/MiniwiFont/01B9.png differ diff --git a/fonts/MiniwiFont/01BA.png b/fonts/MiniwiFont/01BA.png new file mode 100644 index 000000000..41fc56daf Binary files /dev/null and b/fonts/MiniwiFont/01BA.png differ diff --git a/fonts/MiniwiFont/01BB.png b/fonts/MiniwiFont/01BB.png new file mode 100644 index 000000000..c61d66efc Binary files /dev/null and b/fonts/MiniwiFont/01BB.png differ diff --git a/fonts/MiniwiFont/01BC.png b/fonts/MiniwiFont/01BC.png new file mode 100644 index 000000000..2929f990a Binary files /dev/null and b/fonts/MiniwiFont/01BC.png differ diff --git a/fonts/MiniwiFont/01BD.png b/fonts/MiniwiFont/01BD.png new file mode 100644 index 000000000..b09ceb0f7 Binary files /dev/null and b/fonts/MiniwiFont/01BD.png differ diff --git a/fonts/MiniwiFont/01BE.png b/fonts/MiniwiFont/01BE.png new file mode 100644 index 000000000..f50c212ce Binary files /dev/null and b/fonts/MiniwiFont/01BE.png differ diff --git a/fonts/MiniwiFont/01BF.png b/fonts/MiniwiFont/01BF.png new file mode 100644 index 000000000..9b4bf0120 Binary files /dev/null and b/fonts/MiniwiFont/01BF.png differ diff --git a/fonts/MiniwiFont/01C0.png b/fonts/MiniwiFont/01C0.png new file mode 100644 index 000000000..23b175b2a Binary files /dev/null and b/fonts/MiniwiFont/01C0.png differ diff --git a/fonts/MiniwiFont/01C1.png b/fonts/MiniwiFont/01C1.png new file mode 100644 index 000000000..2762f6f9f Binary files /dev/null and b/fonts/MiniwiFont/01C1.png differ diff --git a/fonts/MiniwiFont/01C2.png b/fonts/MiniwiFont/01C2.png new file mode 100644 index 000000000..8863ef259 Binary files /dev/null and b/fonts/MiniwiFont/01C2.png differ diff --git a/fonts/MiniwiFont/01C3.png b/fonts/MiniwiFont/01C3.png new file mode 100644 index 000000000..973eddfa9 Binary files /dev/null and b/fonts/MiniwiFont/01C3.png differ diff --git a/fonts/MiniwiFont/01C4.png b/fonts/MiniwiFont/01C4.png new file mode 100644 index 000000000..c58cb1d90 Binary files /dev/null and b/fonts/MiniwiFont/01C4.png differ diff --git a/fonts/MiniwiFont/01C5.png b/fonts/MiniwiFont/01C5.png new file mode 100644 index 000000000..465089244 Binary files /dev/null and b/fonts/MiniwiFont/01C5.png differ diff --git a/fonts/MiniwiFont/01C6.png b/fonts/MiniwiFont/01C6.png new file mode 100644 index 000000000..629f96967 Binary files /dev/null and b/fonts/MiniwiFont/01C6.png differ diff --git a/fonts/MiniwiFont/01C7.png b/fonts/MiniwiFont/01C7.png new file mode 100644 index 000000000..ef9cee45e Binary files /dev/null and b/fonts/MiniwiFont/01C7.png differ diff --git a/fonts/MiniwiFont/01C8.png b/fonts/MiniwiFont/01C8.png new file mode 100644 index 000000000..7bcacfec5 Binary files /dev/null and b/fonts/MiniwiFont/01C8.png differ diff --git a/fonts/MiniwiFont/01C9.png b/fonts/MiniwiFont/01C9.png new file mode 100644 index 000000000..8d1dc32d9 Binary files /dev/null and b/fonts/MiniwiFont/01C9.png differ diff --git a/fonts/MiniwiFont/01CA.png b/fonts/MiniwiFont/01CA.png new file mode 100644 index 000000000..3cec6857e Binary files /dev/null and b/fonts/MiniwiFont/01CA.png differ diff --git a/fonts/MiniwiFont/01CB.png b/fonts/MiniwiFont/01CB.png new file mode 100644 index 000000000..7123e48c2 Binary files /dev/null and b/fonts/MiniwiFont/01CB.png differ diff --git a/fonts/MiniwiFont/01CC.png b/fonts/MiniwiFont/01CC.png new file mode 100644 index 000000000..6f6839e03 Binary files /dev/null and b/fonts/MiniwiFont/01CC.png differ diff --git a/fonts/MiniwiFont/01CD.png b/fonts/MiniwiFont/01CD.png new file mode 100644 index 000000000..5041ffb7b Binary files /dev/null and b/fonts/MiniwiFont/01CD.png differ diff --git a/fonts/MiniwiFont/01CE.png b/fonts/MiniwiFont/01CE.png new file mode 100644 index 000000000..162b7b28e Binary files /dev/null and b/fonts/MiniwiFont/01CE.png differ diff --git a/fonts/MiniwiFont/01CF.png b/fonts/MiniwiFont/01CF.png new file mode 100644 index 000000000..35e55dfc5 Binary files /dev/null and b/fonts/MiniwiFont/01CF.png differ diff --git a/fonts/MiniwiFont/01D0.png b/fonts/MiniwiFont/01D0.png new file mode 100644 index 000000000..d0df0a66b Binary files /dev/null and b/fonts/MiniwiFont/01D0.png differ diff --git a/fonts/MiniwiFont/01D1.png b/fonts/MiniwiFont/01D1.png new file mode 100644 index 000000000..696309c40 Binary files /dev/null and b/fonts/MiniwiFont/01D1.png differ diff --git a/fonts/MiniwiFont/01D2.png b/fonts/MiniwiFont/01D2.png new file mode 100644 index 000000000..16cbf8df3 Binary files /dev/null and b/fonts/MiniwiFont/01D2.png differ diff --git a/fonts/MiniwiFont/01D3.png b/fonts/MiniwiFont/01D3.png new file mode 100644 index 000000000..3dd5a8e34 Binary files /dev/null and b/fonts/MiniwiFont/01D3.png differ diff --git a/fonts/MiniwiFont/01D4.png b/fonts/MiniwiFont/01D4.png new file mode 100644 index 000000000..3dd5a8e34 Binary files /dev/null and b/fonts/MiniwiFont/01D4.png differ diff --git a/fonts/MiniwiFont/01D5.png b/fonts/MiniwiFont/01D5.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/01D5.png differ diff --git a/fonts/MiniwiFont/01D6.png b/fonts/MiniwiFont/01D6.png new file mode 100644 index 000000000..91a9b8b68 Binary files /dev/null and b/fonts/MiniwiFont/01D6.png differ diff --git a/fonts/MiniwiFont/01D7.png b/fonts/MiniwiFont/01D7.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/01D7.png differ diff --git a/fonts/MiniwiFont/01D8.png b/fonts/MiniwiFont/01D8.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/01D8.png differ diff --git a/fonts/MiniwiFont/01D9.png b/fonts/MiniwiFont/01D9.png new file mode 100644 index 000000000..91a9b8b68 Binary files /dev/null and b/fonts/MiniwiFont/01D9.png differ diff --git a/fonts/MiniwiFont/01DA.png b/fonts/MiniwiFont/01DA.png new file mode 100644 index 000000000..91a9b8b68 Binary files /dev/null and b/fonts/MiniwiFont/01DA.png differ diff --git a/fonts/MiniwiFont/01DB.png b/fonts/MiniwiFont/01DB.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/01DB.png differ diff --git a/fonts/MiniwiFont/01DC.png b/fonts/MiniwiFont/01DC.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/01DC.png differ diff --git a/fonts/MiniwiFont/01DD.png b/fonts/MiniwiFont/01DD.png new file mode 100644 index 000000000..ce7a25648 Binary files /dev/null and b/fonts/MiniwiFont/01DD.png differ diff --git a/fonts/MiniwiFont/01DE.png b/fonts/MiniwiFont/01DE.png new file mode 100644 index 000000000..044813756 Binary files /dev/null and b/fonts/MiniwiFont/01DE.png differ diff --git a/fonts/MiniwiFont/01DF.png b/fonts/MiniwiFont/01DF.png new file mode 100644 index 000000000..0ce1ab301 Binary files /dev/null and b/fonts/MiniwiFont/01DF.png differ diff --git a/fonts/MiniwiFont/01E0.png b/fonts/MiniwiFont/01E0.png new file mode 100644 index 000000000..2ff76d56d Binary files /dev/null and b/fonts/MiniwiFont/01E0.png differ diff --git a/fonts/MiniwiFont/01E1.png b/fonts/MiniwiFont/01E1.png new file mode 100644 index 000000000..b1d13f72f Binary files /dev/null and b/fonts/MiniwiFont/01E1.png differ diff --git a/fonts/MiniwiFont/01E2.png b/fonts/MiniwiFont/01E2.png new file mode 100644 index 000000000..d7403bec6 Binary files /dev/null and b/fonts/MiniwiFont/01E2.png differ diff --git a/fonts/MiniwiFont/01E3.png b/fonts/MiniwiFont/01E3.png new file mode 100644 index 000000000..b64a50cf4 Binary files /dev/null and b/fonts/MiniwiFont/01E3.png differ diff --git a/fonts/MiniwiFont/01E4.png b/fonts/MiniwiFont/01E4.png new file mode 100644 index 000000000..3a4d4702a Binary files /dev/null and b/fonts/MiniwiFont/01E4.png differ diff --git a/fonts/MiniwiFont/01E5.png b/fonts/MiniwiFont/01E5.png new file mode 100644 index 000000000..316c8146f Binary files /dev/null and b/fonts/MiniwiFont/01E5.png differ diff --git a/fonts/MiniwiFont/01E6.png b/fonts/MiniwiFont/01E6.png new file mode 100644 index 000000000..6eec2e852 Binary files /dev/null and b/fonts/MiniwiFont/01E6.png differ diff --git a/fonts/MiniwiFont/01E7.png b/fonts/MiniwiFont/01E7.png new file mode 100644 index 000000000..8b88f14d6 Binary files /dev/null and b/fonts/MiniwiFont/01E7.png differ diff --git a/fonts/MiniwiFont/01E8.png b/fonts/MiniwiFont/01E8.png new file mode 100644 index 000000000..261fa6bd7 Binary files /dev/null and b/fonts/MiniwiFont/01E8.png differ diff --git a/fonts/MiniwiFont/01E9.png b/fonts/MiniwiFont/01E9.png new file mode 100644 index 000000000..99a0407d1 Binary files /dev/null and b/fonts/MiniwiFont/01E9.png differ diff --git a/fonts/MiniwiFont/01EA.png b/fonts/MiniwiFont/01EA.png new file mode 100644 index 000000000..ed0292214 Binary files /dev/null and b/fonts/MiniwiFont/01EA.png differ diff --git a/fonts/MiniwiFont/01EB.png b/fonts/MiniwiFont/01EB.png new file mode 100644 index 000000000..8d5da788b Binary files /dev/null and b/fonts/MiniwiFont/01EB.png differ diff --git a/fonts/MiniwiFont/01EC.png b/fonts/MiniwiFont/01EC.png new file mode 100644 index 000000000..ee67e3239 Binary files /dev/null and b/fonts/MiniwiFont/01EC.png differ diff --git a/fonts/MiniwiFont/01ED.png b/fonts/MiniwiFont/01ED.png new file mode 100644 index 000000000..01330b0a3 Binary files /dev/null and b/fonts/MiniwiFont/01ED.png differ diff --git a/fonts/MiniwiFont/01EE.png b/fonts/MiniwiFont/01EE.png new file mode 100644 index 000000000..727c917a4 Binary files /dev/null and b/fonts/MiniwiFont/01EE.png differ diff --git a/fonts/MiniwiFont/01EF.png b/fonts/MiniwiFont/01EF.png new file mode 100644 index 000000000..82f4cf98a Binary files /dev/null and b/fonts/MiniwiFont/01EF.png differ diff --git a/fonts/MiniwiFont/01F0.png b/fonts/MiniwiFont/01F0.png new file mode 100644 index 000000000..f0c521db3 Binary files /dev/null and b/fonts/MiniwiFont/01F0.png differ diff --git a/fonts/MiniwiFont/01F1.png b/fonts/MiniwiFont/01F1.png new file mode 100644 index 000000000..b9bf4ef07 Binary files /dev/null and b/fonts/MiniwiFont/01F1.png differ diff --git a/fonts/MiniwiFont/01F2.png b/fonts/MiniwiFont/01F2.png new file mode 100644 index 000000000..765ac2a1c Binary files /dev/null and b/fonts/MiniwiFont/01F2.png differ diff --git a/fonts/MiniwiFont/01F3.png b/fonts/MiniwiFont/01F3.png new file mode 100644 index 000000000..5e4a8593e Binary files /dev/null and b/fonts/MiniwiFont/01F3.png differ diff --git a/fonts/MiniwiFont/01F4.png b/fonts/MiniwiFont/01F4.png new file mode 100644 index 000000000..49aad3ccb Binary files /dev/null and b/fonts/MiniwiFont/01F4.png differ diff --git a/fonts/MiniwiFont/01F5.png b/fonts/MiniwiFont/01F5.png new file mode 100644 index 000000000..c520bb0ce Binary files /dev/null and b/fonts/MiniwiFont/01F5.png differ diff --git a/fonts/MiniwiFont/01F6.png b/fonts/MiniwiFont/01F6.png new file mode 100644 index 000000000..6f611d6da Binary files /dev/null and b/fonts/MiniwiFont/01F6.png differ diff --git a/fonts/MiniwiFont/01F7.png b/fonts/MiniwiFont/01F7.png new file mode 100644 index 000000000..099453e77 Binary files /dev/null and b/fonts/MiniwiFont/01F7.png differ diff --git a/fonts/MiniwiFont/01F8.png b/fonts/MiniwiFont/01F8.png new file mode 100644 index 000000000..99b1d37a8 Binary files /dev/null and b/fonts/MiniwiFont/01F8.png differ diff --git a/fonts/MiniwiFont/01F9.png b/fonts/MiniwiFont/01F9.png new file mode 100644 index 000000000..db6ad40c6 Binary files /dev/null and b/fonts/MiniwiFont/01F9.png differ diff --git a/fonts/MiniwiFont/01FA.png b/fonts/MiniwiFont/01FA.png new file mode 100644 index 000000000..1a0c2b21c Binary files /dev/null and b/fonts/MiniwiFont/01FA.png differ diff --git a/fonts/MiniwiFont/01FB.png b/fonts/MiniwiFont/01FB.png new file mode 100644 index 000000000..a5c2d0e25 Binary files /dev/null and b/fonts/MiniwiFont/01FB.png differ diff --git a/fonts/MiniwiFont/01FC.png b/fonts/MiniwiFont/01FC.png new file mode 100644 index 000000000..e4d9ad1f7 Binary files /dev/null and b/fonts/MiniwiFont/01FC.png differ diff --git a/fonts/MiniwiFont/01FD.png b/fonts/MiniwiFont/01FD.png new file mode 100644 index 000000000..3755acf64 Binary files /dev/null and b/fonts/MiniwiFont/01FD.png differ diff --git a/fonts/MiniwiFont/01FE.png b/fonts/MiniwiFont/01FE.png new file mode 100644 index 000000000..3595d1d5a Binary files /dev/null and b/fonts/MiniwiFont/01FE.png differ diff --git a/fonts/MiniwiFont/01FF.png b/fonts/MiniwiFont/01FF.png new file mode 100644 index 000000000..b1bcfc99b Binary files /dev/null and b/fonts/MiniwiFont/01FF.png differ diff --git a/fonts/MiniwiFont/0200.png b/fonts/MiniwiFont/0200.png new file mode 100644 index 000000000..62c6b3939 Binary files /dev/null and b/fonts/MiniwiFont/0200.png differ diff --git a/fonts/MiniwiFont/0201.png b/fonts/MiniwiFont/0201.png new file mode 100644 index 000000000..30c63dc32 Binary files /dev/null and b/fonts/MiniwiFont/0201.png differ diff --git a/fonts/MiniwiFont/0202.png b/fonts/MiniwiFont/0202.png new file mode 100644 index 000000000..5041ffb7b Binary files /dev/null and b/fonts/MiniwiFont/0202.png differ diff --git a/fonts/MiniwiFont/0203.png b/fonts/MiniwiFont/0203.png new file mode 100644 index 000000000..162b7b28e Binary files /dev/null and b/fonts/MiniwiFont/0203.png differ diff --git a/fonts/MiniwiFont/0204.png b/fonts/MiniwiFont/0204.png new file mode 100644 index 000000000..b3f51b6de Binary files /dev/null and b/fonts/MiniwiFont/0204.png differ diff --git a/fonts/MiniwiFont/0205.png b/fonts/MiniwiFont/0205.png new file mode 100644 index 000000000..77c6d5d3d Binary files /dev/null and b/fonts/MiniwiFont/0205.png differ diff --git a/fonts/MiniwiFont/0206.png b/fonts/MiniwiFont/0206.png new file mode 100644 index 000000000..7bbd2ee9f Binary files /dev/null and b/fonts/MiniwiFont/0206.png differ diff --git a/fonts/MiniwiFont/0207.png b/fonts/MiniwiFont/0207.png new file mode 100644 index 000000000..f0a6e90b6 Binary files /dev/null and b/fonts/MiniwiFont/0207.png differ diff --git a/fonts/MiniwiFont/0208.png b/fonts/MiniwiFont/0208.png new file mode 100644 index 000000000..1ee397e63 Binary files /dev/null and b/fonts/MiniwiFont/0208.png differ diff --git a/fonts/MiniwiFont/0209.png b/fonts/MiniwiFont/0209.png new file mode 100644 index 000000000..6739c017f Binary files /dev/null and b/fonts/MiniwiFont/0209.png differ diff --git a/fonts/MiniwiFont/020A.png b/fonts/MiniwiFont/020A.png new file mode 100644 index 000000000..35e55dfc5 Binary files /dev/null and b/fonts/MiniwiFont/020A.png differ diff --git a/fonts/MiniwiFont/020B.png b/fonts/MiniwiFont/020B.png new file mode 100644 index 000000000..6739c017f Binary files /dev/null and b/fonts/MiniwiFont/020B.png differ diff --git a/fonts/MiniwiFont/020C.png b/fonts/MiniwiFont/020C.png new file mode 100644 index 000000000..b470a7eb5 Binary files /dev/null and b/fonts/MiniwiFont/020C.png differ diff --git a/fonts/MiniwiFont/020D.png b/fonts/MiniwiFont/020D.png new file mode 100644 index 000000000..dc02a7e35 Binary files /dev/null and b/fonts/MiniwiFont/020D.png differ diff --git a/fonts/MiniwiFont/020E.png b/fonts/MiniwiFont/020E.png new file mode 100644 index 000000000..696309c40 Binary files /dev/null and b/fonts/MiniwiFont/020E.png differ diff --git a/fonts/MiniwiFont/020F.png b/fonts/MiniwiFont/020F.png new file mode 100644 index 000000000..16cbf8df3 Binary files /dev/null and b/fonts/MiniwiFont/020F.png differ diff --git a/fonts/MiniwiFont/0210.png b/fonts/MiniwiFont/0210.png new file mode 100644 index 000000000..2c02c8a21 Binary files /dev/null and b/fonts/MiniwiFont/0210.png differ diff --git a/fonts/MiniwiFont/0211.png b/fonts/MiniwiFont/0211.png new file mode 100644 index 000000000..3e8ea992d Binary files /dev/null and b/fonts/MiniwiFont/0211.png differ diff --git a/fonts/MiniwiFont/0212.png b/fonts/MiniwiFont/0212.png new file mode 100644 index 000000000..fbb0178c1 Binary files /dev/null and b/fonts/MiniwiFont/0212.png differ diff --git a/fonts/MiniwiFont/0213.png b/fonts/MiniwiFont/0213.png new file mode 100644 index 000000000..13bc85b32 Binary files /dev/null and b/fonts/MiniwiFont/0213.png differ diff --git a/fonts/MiniwiFont/0214.png b/fonts/MiniwiFont/0214.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/0214.png differ diff --git a/fonts/MiniwiFont/0215.png b/fonts/MiniwiFont/0215.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/0215.png differ diff --git a/fonts/MiniwiFont/0216.png b/fonts/MiniwiFont/0216.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/0216.png differ diff --git a/fonts/MiniwiFont/0217.png b/fonts/MiniwiFont/0217.png new file mode 100644 index 000000000..f7a71a8f0 Binary files /dev/null and b/fonts/MiniwiFont/0217.png differ diff --git a/fonts/MiniwiFont/0218.png b/fonts/MiniwiFont/0218.png new file mode 100644 index 000000000..ca5b0e811 Binary files /dev/null and b/fonts/MiniwiFont/0218.png differ diff --git a/fonts/MiniwiFont/0219.png b/fonts/MiniwiFont/0219.png new file mode 100644 index 000000000..db1cce6f0 Binary files /dev/null and b/fonts/MiniwiFont/0219.png differ diff --git a/fonts/MiniwiFont/021A.png b/fonts/MiniwiFont/021A.png new file mode 100644 index 000000000..e914b1cb9 Binary files /dev/null and b/fonts/MiniwiFont/021A.png differ diff --git a/fonts/MiniwiFont/021B.png b/fonts/MiniwiFont/021B.png new file mode 100644 index 000000000..e443fd004 Binary files /dev/null and b/fonts/MiniwiFont/021B.png differ diff --git a/fonts/MiniwiFont/021C.png b/fonts/MiniwiFont/021C.png new file mode 100644 index 000000000..7161fca4d Binary files /dev/null and b/fonts/MiniwiFont/021C.png differ diff --git a/fonts/MiniwiFont/021D.png b/fonts/MiniwiFont/021D.png new file mode 100644 index 000000000..c1216e810 Binary files /dev/null and b/fonts/MiniwiFont/021D.png differ diff --git a/fonts/MiniwiFont/021E.png b/fonts/MiniwiFont/021E.png new file mode 100644 index 000000000..12412c631 Binary files /dev/null and b/fonts/MiniwiFont/021E.png differ diff --git a/fonts/MiniwiFont/021F.png b/fonts/MiniwiFont/021F.png new file mode 100644 index 000000000..a9dc7c260 Binary files /dev/null and b/fonts/MiniwiFont/021F.png differ diff --git a/fonts/MiniwiFont/0220.png b/fonts/MiniwiFont/0220.png new file mode 100644 index 000000000..f80e8cf52 Binary files /dev/null and b/fonts/MiniwiFont/0220.png differ diff --git a/fonts/MiniwiFont/0221.png b/fonts/MiniwiFont/0221.png new file mode 100644 index 000000000..c6dce3c87 Binary files /dev/null and b/fonts/MiniwiFont/0221.png differ diff --git a/fonts/MiniwiFont/0222.png b/fonts/MiniwiFont/0222.png new file mode 100644 index 000000000..6af74aff9 Binary files /dev/null and b/fonts/MiniwiFont/0222.png differ diff --git a/fonts/MiniwiFont/0223.png b/fonts/MiniwiFont/0223.png new file mode 100644 index 000000000..14ae588dd Binary files /dev/null and b/fonts/MiniwiFont/0223.png differ diff --git a/fonts/MiniwiFont/0224.png b/fonts/MiniwiFont/0224.png new file mode 100644 index 000000000..137fc8968 Binary files /dev/null and b/fonts/MiniwiFont/0224.png differ diff --git a/fonts/MiniwiFont/0225.png b/fonts/MiniwiFont/0225.png new file mode 100644 index 000000000..7d4ba492c Binary files /dev/null and b/fonts/MiniwiFont/0225.png differ diff --git a/fonts/MiniwiFont/0226.png b/fonts/MiniwiFont/0226.png new file mode 100644 index 000000000..49f077e91 Binary files /dev/null and b/fonts/MiniwiFont/0226.png differ diff --git a/fonts/MiniwiFont/0227.png b/fonts/MiniwiFont/0227.png new file mode 100644 index 000000000..d48f69ad1 Binary files /dev/null and b/fonts/MiniwiFont/0227.png differ diff --git a/fonts/MiniwiFont/0228.png b/fonts/MiniwiFont/0228.png new file mode 100644 index 000000000..f7130a52b Binary files /dev/null and b/fonts/MiniwiFont/0228.png differ diff --git a/fonts/MiniwiFont/0229.png b/fonts/MiniwiFont/0229.png new file mode 100644 index 000000000..0fc2558bb Binary files /dev/null and b/fonts/MiniwiFont/0229.png differ diff --git a/fonts/MiniwiFont/022A.png b/fonts/MiniwiFont/022A.png new file mode 100644 index 000000000..d82ffb9c7 Binary files /dev/null and b/fonts/MiniwiFont/022A.png differ diff --git a/fonts/MiniwiFont/022B.png b/fonts/MiniwiFont/022B.png new file mode 100644 index 000000000..d82ffb9c7 Binary files /dev/null and b/fonts/MiniwiFont/022B.png differ diff --git a/fonts/MiniwiFont/022C.png b/fonts/MiniwiFont/022C.png new file mode 100644 index 000000000..75df0ac16 Binary files /dev/null and b/fonts/MiniwiFont/022C.png differ diff --git a/fonts/MiniwiFont/022D.png b/fonts/MiniwiFont/022D.png new file mode 100644 index 000000000..75df0ac16 Binary files /dev/null and b/fonts/MiniwiFont/022D.png differ diff --git a/fonts/MiniwiFont/022E.png b/fonts/MiniwiFont/022E.png new file mode 100644 index 000000000..f31c8eed6 Binary files /dev/null and b/fonts/MiniwiFont/022E.png differ diff --git a/fonts/MiniwiFont/022F.png b/fonts/MiniwiFont/022F.png new file mode 100644 index 000000000..4cdee9862 Binary files /dev/null and b/fonts/MiniwiFont/022F.png differ diff --git a/fonts/MiniwiFont/0230.png b/fonts/MiniwiFont/0230.png new file mode 100644 index 000000000..277f36259 Binary files /dev/null and b/fonts/MiniwiFont/0230.png differ diff --git a/fonts/MiniwiFont/0231.png b/fonts/MiniwiFont/0231.png new file mode 100644 index 000000000..277f36259 Binary files /dev/null and b/fonts/MiniwiFont/0231.png differ diff --git a/fonts/MiniwiFont/0232.png b/fonts/MiniwiFont/0232.png new file mode 100644 index 000000000..d4fed6fa8 Binary files /dev/null and b/fonts/MiniwiFont/0232.png differ diff --git a/fonts/MiniwiFont/0233.png b/fonts/MiniwiFont/0233.png new file mode 100644 index 000000000..a9839ab19 Binary files /dev/null and b/fonts/MiniwiFont/0233.png differ diff --git a/fonts/MiniwiFont/0234.png b/fonts/MiniwiFont/0234.png new file mode 100644 index 000000000..36d502d53 Binary files /dev/null and b/fonts/MiniwiFont/0234.png differ diff --git a/fonts/MiniwiFont/0235.png b/fonts/MiniwiFont/0235.png new file mode 100644 index 000000000..da66de357 Binary files /dev/null and b/fonts/MiniwiFont/0235.png differ diff --git a/fonts/MiniwiFont/0236.png b/fonts/MiniwiFont/0236.png new file mode 100644 index 000000000..ed8c38094 Binary files /dev/null and b/fonts/MiniwiFont/0236.png differ diff --git a/fonts/MiniwiFont/0237.png b/fonts/MiniwiFont/0237.png new file mode 100644 index 000000000..e85a6209b Binary files /dev/null and b/fonts/MiniwiFont/0237.png differ diff --git a/fonts/MiniwiFont/0238.png b/fonts/MiniwiFont/0238.png new file mode 100644 index 000000000..b4de497fd Binary files /dev/null and b/fonts/MiniwiFont/0238.png differ diff --git a/fonts/MiniwiFont/0239.png b/fonts/MiniwiFont/0239.png new file mode 100644 index 000000000..6be834a70 Binary files /dev/null and b/fonts/MiniwiFont/0239.png differ diff --git a/fonts/MiniwiFont/023A.png b/fonts/MiniwiFont/023A.png new file mode 100644 index 000000000..17454b9e5 Binary files /dev/null and b/fonts/MiniwiFont/023A.png differ diff --git a/fonts/MiniwiFont/023B.png b/fonts/MiniwiFont/023B.png new file mode 100644 index 000000000..eee0cc182 Binary files /dev/null and b/fonts/MiniwiFont/023B.png differ diff --git a/fonts/MiniwiFont/023C.png b/fonts/MiniwiFont/023C.png new file mode 100644 index 000000000..e81309421 Binary files /dev/null and b/fonts/MiniwiFont/023C.png differ diff --git a/fonts/MiniwiFont/023D.png b/fonts/MiniwiFont/023D.png new file mode 100644 index 000000000..ef4acd064 Binary files /dev/null and b/fonts/MiniwiFont/023D.png differ diff --git a/fonts/MiniwiFont/023E.png b/fonts/MiniwiFont/023E.png new file mode 100644 index 000000000..5f5581a88 Binary files /dev/null and b/fonts/MiniwiFont/023E.png differ diff --git a/fonts/MiniwiFont/023F.png b/fonts/MiniwiFont/023F.png new file mode 100644 index 000000000..5d478a475 Binary files /dev/null and b/fonts/MiniwiFont/023F.png differ diff --git a/fonts/MiniwiFont/0240.png b/fonts/MiniwiFont/0240.png new file mode 100644 index 000000000..c22b96f27 Binary files /dev/null and b/fonts/MiniwiFont/0240.png differ diff --git a/fonts/MiniwiFont/0241.png b/fonts/MiniwiFont/0241.png new file mode 100644 index 000000000..3c07ddcac Binary files /dev/null and b/fonts/MiniwiFont/0241.png differ diff --git a/fonts/MiniwiFont/0242.png b/fonts/MiniwiFont/0242.png new file mode 100644 index 000000000..760fce465 Binary files /dev/null and b/fonts/MiniwiFont/0242.png differ diff --git a/fonts/MiniwiFont/0243.png b/fonts/MiniwiFont/0243.png new file mode 100644 index 000000000..a25f2877a Binary files /dev/null and b/fonts/MiniwiFont/0243.png differ diff --git a/fonts/MiniwiFont/0244.png b/fonts/MiniwiFont/0244.png new file mode 100644 index 000000000..7ea8cea23 Binary files /dev/null and b/fonts/MiniwiFont/0244.png differ diff --git a/fonts/MiniwiFont/0245.png b/fonts/MiniwiFont/0245.png new file mode 100644 index 000000000..3621bf53c Binary files /dev/null and b/fonts/MiniwiFont/0245.png differ diff --git a/fonts/MiniwiFont/0246.png b/fonts/MiniwiFont/0246.png new file mode 100644 index 000000000..4324a4af9 Binary files /dev/null and b/fonts/MiniwiFont/0246.png differ diff --git a/fonts/MiniwiFont/0247.png b/fonts/MiniwiFont/0247.png new file mode 100644 index 000000000..742862a3b Binary files /dev/null and b/fonts/MiniwiFont/0247.png differ diff --git a/fonts/MiniwiFont/0248.png b/fonts/MiniwiFont/0248.png new file mode 100644 index 000000000..962c3e4c5 Binary files /dev/null and b/fonts/MiniwiFont/0248.png differ diff --git a/fonts/MiniwiFont/0249.png b/fonts/MiniwiFont/0249.png new file mode 100644 index 000000000..3a844c443 Binary files /dev/null and b/fonts/MiniwiFont/0249.png differ diff --git a/fonts/MiniwiFont/024A.png b/fonts/MiniwiFont/024A.png new file mode 100644 index 000000000..a11732258 Binary files /dev/null and b/fonts/MiniwiFont/024A.png differ diff --git a/fonts/MiniwiFont/024B.png b/fonts/MiniwiFont/024B.png new file mode 100644 index 000000000..ccd3144c1 Binary files /dev/null and b/fonts/MiniwiFont/024B.png differ diff --git a/fonts/MiniwiFont/024C.png b/fonts/MiniwiFont/024C.png new file mode 100644 index 000000000..644d3a865 Binary files /dev/null and b/fonts/MiniwiFont/024C.png differ diff --git a/fonts/MiniwiFont/024D.png b/fonts/MiniwiFont/024D.png new file mode 100644 index 000000000..2657e502b Binary files /dev/null and b/fonts/MiniwiFont/024D.png differ diff --git a/fonts/MiniwiFont/024E.png b/fonts/MiniwiFont/024E.png new file mode 100644 index 000000000..3f6012836 Binary files /dev/null and b/fonts/MiniwiFont/024E.png differ diff --git a/fonts/MiniwiFont/024F.png b/fonts/MiniwiFont/024F.png new file mode 100644 index 000000000..9c3782894 Binary files /dev/null and b/fonts/MiniwiFont/024F.png differ diff --git a/fonts/MiniwiFont/0250.png b/fonts/MiniwiFont/0250.png new file mode 100644 index 000000000..d739b52e6 Binary files /dev/null and b/fonts/MiniwiFont/0250.png differ diff --git a/fonts/MiniwiFont/0251.png b/fonts/MiniwiFont/0251.png new file mode 100644 index 000000000..ac872d5f8 Binary files /dev/null and b/fonts/MiniwiFont/0251.png differ diff --git a/fonts/MiniwiFont/0252.png b/fonts/MiniwiFont/0252.png new file mode 100644 index 000000000..23b70d470 Binary files /dev/null and b/fonts/MiniwiFont/0252.png differ diff --git a/fonts/MiniwiFont/0253.png b/fonts/MiniwiFont/0253.png new file mode 100644 index 000000000..467175054 Binary files /dev/null and b/fonts/MiniwiFont/0253.png differ diff --git a/fonts/MiniwiFont/0254.png b/fonts/MiniwiFont/0254.png new file mode 100644 index 000000000..e98bfdb55 Binary files /dev/null and b/fonts/MiniwiFont/0254.png differ diff --git a/fonts/MiniwiFont/0255.png b/fonts/MiniwiFont/0255.png new file mode 100644 index 000000000..ba65bef0f Binary files /dev/null and b/fonts/MiniwiFont/0255.png differ diff --git a/fonts/MiniwiFont/0256.png b/fonts/MiniwiFont/0256.png new file mode 100644 index 000000000..ccfd29842 Binary files /dev/null and b/fonts/MiniwiFont/0256.png differ diff --git a/fonts/MiniwiFont/0257.png b/fonts/MiniwiFont/0257.png new file mode 100644 index 000000000..2d666e87a Binary files /dev/null and b/fonts/MiniwiFont/0257.png differ diff --git a/fonts/MiniwiFont/0258.png b/fonts/MiniwiFont/0258.png new file mode 100644 index 000000000..f081caa5f Binary files /dev/null and b/fonts/MiniwiFont/0258.png differ diff --git a/fonts/MiniwiFont/0259.png b/fonts/MiniwiFont/0259.png new file mode 100644 index 000000000..ce7a25648 Binary files /dev/null and b/fonts/MiniwiFont/0259.png differ diff --git a/fonts/MiniwiFont/025A.png b/fonts/MiniwiFont/025A.png new file mode 100644 index 000000000..197ad0d8f Binary files /dev/null and b/fonts/MiniwiFont/025A.png differ diff --git a/fonts/MiniwiFont/025B.png b/fonts/MiniwiFont/025B.png new file mode 100644 index 000000000..7d1586ab1 Binary files /dev/null and b/fonts/MiniwiFont/025B.png differ diff --git a/fonts/MiniwiFont/025C.png b/fonts/MiniwiFont/025C.png new file mode 100644 index 000000000..1d783f6d8 Binary files /dev/null and b/fonts/MiniwiFont/025C.png differ diff --git a/fonts/MiniwiFont/025D.png b/fonts/MiniwiFont/025D.png new file mode 100644 index 000000000..44c4c07c3 Binary files /dev/null and b/fonts/MiniwiFont/025D.png differ diff --git a/fonts/MiniwiFont/025E.png b/fonts/MiniwiFont/025E.png new file mode 100644 index 000000000..988c89f8f Binary files /dev/null and b/fonts/MiniwiFont/025E.png differ diff --git a/fonts/MiniwiFont/025F.png b/fonts/MiniwiFont/025F.png new file mode 100644 index 000000000..9f249636e Binary files /dev/null and b/fonts/MiniwiFont/025F.png differ diff --git a/fonts/MiniwiFont/0260.png b/fonts/MiniwiFont/0260.png new file mode 100644 index 000000000..633c09abe Binary files /dev/null and b/fonts/MiniwiFont/0260.png differ diff --git a/fonts/MiniwiFont/0261.png b/fonts/MiniwiFont/0261.png new file mode 100644 index 000000000..e9b25ff76 Binary files /dev/null and b/fonts/MiniwiFont/0261.png differ diff --git a/fonts/MiniwiFont/0262.png b/fonts/MiniwiFont/0262.png new file mode 100644 index 000000000..24f165ed9 Binary files /dev/null and b/fonts/MiniwiFont/0262.png differ diff --git a/fonts/MiniwiFont/0263.png b/fonts/MiniwiFont/0263.png new file mode 100644 index 000000000..07bd1c8f3 Binary files /dev/null and b/fonts/MiniwiFont/0263.png differ diff --git a/fonts/MiniwiFont/0264.png b/fonts/MiniwiFont/0264.png new file mode 100644 index 000000000..feb2e2ed1 Binary files /dev/null and b/fonts/MiniwiFont/0264.png differ diff --git a/fonts/MiniwiFont/0265.png b/fonts/MiniwiFont/0265.png new file mode 100644 index 000000000..d3195ca6c Binary files /dev/null and b/fonts/MiniwiFont/0265.png differ diff --git a/fonts/MiniwiFont/0266.png b/fonts/MiniwiFont/0266.png new file mode 100644 index 000000000..d5bb717d6 Binary files /dev/null and b/fonts/MiniwiFont/0266.png differ diff --git a/fonts/MiniwiFont/0267.png b/fonts/MiniwiFont/0267.png new file mode 100644 index 000000000..ee0030d38 Binary files /dev/null and b/fonts/MiniwiFont/0267.png differ diff --git a/fonts/MiniwiFont/0268.png b/fonts/MiniwiFont/0268.png new file mode 100644 index 000000000..cbefe7644 Binary files /dev/null and b/fonts/MiniwiFont/0268.png differ diff --git a/fonts/MiniwiFont/0269.png b/fonts/MiniwiFont/0269.png new file mode 100644 index 000000000..45f971082 Binary files /dev/null and b/fonts/MiniwiFont/0269.png differ diff --git a/fonts/MiniwiFont/026A.png b/fonts/MiniwiFont/026A.png new file mode 100644 index 000000000..18d33b28b Binary files /dev/null and b/fonts/MiniwiFont/026A.png differ diff --git a/fonts/MiniwiFont/026B.png b/fonts/MiniwiFont/026B.png new file mode 100644 index 000000000..b5533048c Binary files /dev/null and b/fonts/MiniwiFont/026B.png differ diff --git a/fonts/MiniwiFont/026C.png b/fonts/MiniwiFont/026C.png new file mode 100644 index 000000000..6112fc051 Binary files /dev/null and b/fonts/MiniwiFont/026C.png differ diff --git a/fonts/MiniwiFont/026D.png b/fonts/MiniwiFont/026D.png new file mode 100644 index 000000000..987fcf136 Binary files /dev/null and b/fonts/MiniwiFont/026D.png differ diff --git a/fonts/MiniwiFont/026E.png b/fonts/MiniwiFont/026E.png new file mode 100644 index 000000000..ac6c54756 Binary files /dev/null and b/fonts/MiniwiFont/026E.png differ diff --git a/fonts/MiniwiFont/026F.png b/fonts/MiniwiFont/026F.png new file mode 100644 index 000000000..4b1e431d7 Binary files /dev/null and b/fonts/MiniwiFont/026F.png differ diff --git a/fonts/MiniwiFont/0270.png b/fonts/MiniwiFont/0270.png new file mode 100644 index 000000000..00dd1025a Binary files /dev/null and b/fonts/MiniwiFont/0270.png differ diff --git a/fonts/MiniwiFont/0271.png b/fonts/MiniwiFont/0271.png new file mode 100644 index 000000000..cabdfa876 Binary files /dev/null and b/fonts/MiniwiFont/0271.png differ diff --git a/fonts/MiniwiFont/0272.png b/fonts/MiniwiFont/0272.png new file mode 100644 index 000000000..92c91dc2b Binary files /dev/null and b/fonts/MiniwiFont/0272.png differ diff --git a/fonts/MiniwiFont/0273.png b/fonts/MiniwiFont/0273.png new file mode 100644 index 000000000..60d768230 Binary files /dev/null and b/fonts/MiniwiFont/0273.png differ diff --git a/fonts/MiniwiFont/0274.png b/fonts/MiniwiFont/0274.png new file mode 100644 index 000000000..f8a7a1de0 Binary files /dev/null and b/fonts/MiniwiFont/0274.png differ diff --git a/fonts/MiniwiFont/0275.png b/fonts/MiniwiFont/0275.png new file mode 100644 index 000000000..475275e11 Binary files /dev/null and b/fonts/MiniwiFont/0275.png differ diff --git a/fonts/MiniwiFont/0276.png b/fonts/MiniwiFont/0276.png new file mode 100644 index 000000000..5f4f10bc9 Binary files /dev/null and b/fonts/MiniwiFont/0276.png differ diff --git a/fonts/MiniwiFont/0277.png b/fonts/MiniwiFont/0277.png new file mode 100644 index 000000000..4ecbc8a6e Binary files /dev/null and b/fonts/MiniwiFont/0277.png differ diff --git a/fonts/MiniwiFont/0278.png b/fonts/MiniwiFont/0278.png new file mode 100644 index 000000000..ad1387ed1 Binary files /dev/null and b/fonts/MiniwiFont/0278.png differ diff --git a/fonts/MiniwiFont/02C6.png b/fonts/MiniwiFont/02C6.png new file mode 100644 index 000000000..e88bfc1de Binary files /dev/null and b/fonts/MiniwiFont/02C6.png differ diff --git a/fonts/MiniwiFont/02C7.png b/fonts/MiniwiFont/02C7.png new file mode 100644 index 000000000..9250d2f55 Binary files /dev/null and b/fonts/MiniwiFont/02C7.png differ diff --git a/fonts/MiniwiFont/02D8.png b/fonts/MiniwiFont/02D8.png new file mode 100644 index 000000000..0b7705414 Binary files /dev/null and b/fonts/MiniwiFont/02D8.png differ diff --git a/fonts/MiniwiFont/02D9.png b/fonts/MiniwiFont/02D9.png new file mode 100644 index 000000000..a24b1afd3 Binary files /dev/null and b/fonts/MiniwiFont/02D9.png differ diff --git a/fonts/MiniwiFont/02DA.png b/fonts/MiniwiFont/02DA.png new file mode 100644 index 000000000..18cfbbae6 Binary files /dev/null and b/fonts/MiniwiFont/02DA.png differ diff --git a/fonts/MiniwiFont/02DB.png b/fonts/MiniwiFont/02DB.png new file mode 100644 index 000000000..50330a308 Binary files /dev/null and b/fonts/MiniwiFont/02DB.png differ diff --git a/fonts/MiniwiFont/02DC.png b/fonts/MiniwiFont/02DC.png new file mode 100644 index 000000000..bee56b879 Binary files /dev/null and b/fonts/MiniwiFont/02DC.png differ diff --git a/fonts/MiniwiFont/02DD.png b/fonts/MiniwiFont/02DD.png new file mode 100644 index 000000000..efcebf014 Binary files /dev/null and b/fonts/MiniwiFont/02DD.png differ diff --git a/fonts/MiniwiFont/0384.png b/fonts/MiniwiFont/0384.png new file mode 100644 index 000000000..127cb2fd6 Binary files /dev/null and b/fonts/MiniwiFont/0384.png differ diff --git a/fonts/MiniwiFont/0385.png b/fonts/MiniwiFont/0385.png new file mode 100644 index 000000000..4e7e2429a Binary files /dev/null and b/fonts/MiniwiFont/0385.png differ diff --git a/fonts/MiniwiFont/0386.png b/fonts/MiniwiFont/0386.png new file mode 100644 index 000000000..7082de7e9 Binary files /dev/null and b/fonts/MiniwiFont/0386.png differ diff --git a/fonts/MiniwiFont/0388.png b/fonts/MiniwiFont/0388.png new file mode 100644 index 000000000..4510d449e Binary files /dev/null and b/fonts/MiniwiFont/0388.png differ diff --git a/fonts/MiniwiFont/0389.png b/fonts/MiniwiFont/0389.png new file mode 100644 index 000000000..83e00574f Binary files /dev/null and b/fonts/MiniwiFont/0389.png differ diff --git a/fonts/MiniwiFont/038A.png b/fonts/MiniwiFont/038A.png new file mode 100644 index 000000000..d945cb8a8 Binary files /dev/null and b/fonts/MiniwiFont/038A.png differ diff --git a/fonts/MiniwiFont/038C.png b/fonts/MiniwiFont/038C.png new file mode 100644 index 000000000..efcdb3085 Binary files /dev/null and b/fonts/MiniwiFont/038C.png differ diff --git a/fonts/MiniwiFont/038E.png b/fonts/MiniwiFont/038E.png new file mode 100644 index 000000000..32e3a8bdc Binary files /dev/null and b/fonts/MiniwiFont/038E.png differ diff --git a/fonts/MiniwiFont/038F.png b/fonts/MiniwiFont/038F.png new file mode 100644 index 000000000..4a6a16c9b Binary files /dev/null and b/fonts/MiniwiFont/038F.png differ diff --git a/fonts/MiniwiFont/0390.png b/fonts/MiniwiFont/0390.png new file mode 100644 index 000000000..6416b1c39 Binary files /dev/null and b/fonts/MiniwiFont/0390.png differ diff --git a/fonts/MiniwiFont/0391.png b/fonts/MiniwiFont/0391.png new file mode 100644 index 000000000..3c00306ae Binary files /dev/null and b/fonts/MiniwiFont/0391.png differ diff --git a/fonts/MiniwiFont/0392.png b/fonts/MiniwiFont/0392.png new file mode 100644 index 000000000..d0b1e8ba9 Binary files /dev/null and b/fonts/MiniwiFont/0392.png differ diff --git a/fonts/MiniwiFont/0393.png b/fonts/MiniwiFont/0393.png new file mode 100644 index 000000000..b9a45c728 Binary files /dev/null and b/fonts/MiniwiFont/0393.png differ diff --git a/fonts/MiniwiFont/0394.png b/fonts/MiniwiFont/0394.png new file mode 100644 index 000000000..132cd2063 Binary files /dev/null and b/fonts/MiniwiFont/0394.png differ diff --git a/fonts/MiniwiFont/0395.png b/fonts/MiniwiFont/0395.png new file mode 100644 index 000000000..9aea80875 Binary files /dev/null and b/fonts/MiniwiFont/0395.png differ diff --git a/fonts/MiniwiFont/0396.png b/fonts/MiniwiFont/0396.png new file mode 100644 index 000000000..c2cbc45e3 Binary files /dev/null and b/fonts/MiniwiFont/0396.png differ diff --git a/fonts/MiniwiFont/0397.png b/fonts/MiniwiFont/0397.png new file mode 100644 index 000000000..83e00574f Binary files /dev/null and b/fonts/MiniwiFont/0397.png differ diff --git a/fonts/MiniwiFont/0398.png b/fonts/MiniwiFont/0398.png new file mode 100644 index 000000000..bcb33d1bd Binary files /dev/null and b/fonts/MiniwiFont/0398.png differ diff --git a/fonts/MiniwiFont/0399.png b/fonts/MiniwiFont/0399.png new file mode 100644 index 000000000..6ea3f6013 Binary files /dev/null and b/fonts/MiniwiFont/0399.png differ diff --git a/fonts/MiniwiFont/039A.png b/fonts/MiniwiFont/039A.png new file mode 100644 index 000000000..4a353239d Binary files /dev/null and b/fonts/MiniwiFont/039A.png differ diff --git a/fonts/MiniwiFont/039B.png b/fonts/MiniwiFont/039B.png new file mode 100644 index 000000000..3621bf53c Binary files /dev/null and b/fonts/MiniwiFont/039B.png differ diff --git a/fonts/MiniwiFont/039C.png b/fonts/MiniwiFont/039C.png new file mode 100644 index 000000000..ae166aff6 Binary files /dev/null and b/fonts/MiniwiFont/039C.png differ diff --git a/fonts/MiniwiFont/039D.png b/fonts/MiniwiFont/039D.png new file mode 100644 index 000000000..c5dfbc594 Binary files /dev/null and b/fonts/MiniwiFont/039D.png differ diff --git a/fonts/MiniwiFont/039E.png b/fonts/MiniwiFont/039E.png new file mode 100644 index 000000000..2d186c52e Binary files /dev/null and b/fonts/MiniwiFont/039E.png differ diff --git a/fonts/MiniwiFont/039F.png b/fonts/MiniwiFont/039F.png new file mode 100644 index 000000000..779d1fe5c Binary files /dev/null and b/fonts/MiniwiFont/039F.png differ diff --git a/fonts/MiniwiFont/03A0.png b/fonts/MiniwiFont/03A0.png new file mode 100644 index 000000000..59bd0ac9e Binary files /dev/null and b/fonts/MiniwiFont/03A0.png differ diff --git a/fonts/MiniwiFont/03A1.png b/fonts/MiniwiFont/03A1.png new file mode 100644 index 000000000..1efb8e7c2 Binary files /dev/null and b/fonts/MiniwiFont/03A1.png differ diff --git a/fonts/MiniwiFont/03A3.png b/fonts/MiniwiFont/03A3.png new file mode 100644 index 000000000..f9e1595a5 Binary files /dev/null and b/fonts/MiniwiFont/03A3.png differ diff --git a/fonts/MiniwiFont/03A4.png b/fonts/MiniwiFont/03A4.png new file mode 100644 index 000000000..2340517b5 Binary files /dev/null and b/fonts/MiniwiFont/03A4.png differ diff --git a/fonts/MiniwiFont/03A5.png b/fonts/MiniwiFont/03A5.png new file mode 100644 index 000000000..f56bcacb1 Binary files /dev/null and b/fonts/MiniwiFont/03A5.png differ diff --git a/fonts/MiniwiFont/03A6.png b/fonts/MiniwiFont/03A6.png new file mode 100644 index 000000000..91c229489 Binary files /dev/null and b/fonts/MiniwiFont/03A6.png differ diff --git a/fonts/MiniwiFont/03A7.png b/fonts/MiniwiFont/03A7.png new file mode 100644 index 000000000..190572ee9 Binary files /dev/null and b/fonts/MiniwiFont/03A7.png differ diff --git a/fonts/MiniwiFont/03A8.png b/fonts/MiniwiFont/03A8.png new file mode 100644 index 000000000..855af97b1 Binary files /dev/null and b/fonts/MiniwiFont/03A8.png differ diff --git a/fonts/MiniwiFont/03A9.png b/fonts/MiniwiFont/03A9.png new file mode 100644 index 000000000..023567850 Binary files /dev/null and b/fonts/MiniwiFont/03A9.png differ diff --git a/fonts/MiniwiFont/03AA.png b/fonts/MiniwiFont/03AA.png new file mode 100644 index 000000000..1ee397e63 Binary files /dev/null and b/fonts/MiniwiFont/03AA.png differ diff --git a/fonts/MiniwiFont/03AB.png b/fonts/MiniwiFont/03AB.png new file mode 100644 index 000000000..45d99097c Binary files /dev/null and b/fonts/MiniwiFont/03AB.png differ diff --git a/fonts/MiniwiFont/03AC.png b/fonts/MiniwiFont/03AC.png new file mode 100644 index 000000000..03ff93fb3 Binary files /dev/null and b/fonts/MiniwiFont/03AC.png differ diff --git a/fonts/MiniwiFont/03AD.png b/fonts/MiniwiFont/03AD.png new file mode 100644 index 000000000..1756ce64f Binary files /dev/null and b/fonts/MiniwiFont/03AD.png differ diff --git a/fonts/MiniwiFont/03AE.png b/fonts/MiniwiFont/03AE.png new file mode 100644 index 000000000..4ef4f3a39 Binary files /dev/null and b/fonts/MiniwiFont/03AE.png differ diff --git a/fonts/MiniwiFont/03AF.png b/fonts/MiniwiFont/03AF.png new file mode 100644 index 000000000..f6d5949e4 Binary files /dev/null and b/fonts/MiniwiFont/03AF.png differ diff --git a/fonts/MiniwiFont/03B0.png b/fonts/MiniwiFont/03B0.png new file mode 100644 index 000000000..a576a5eb4 Binary files /dev/null and b/fonts/MiniwiFont/03B0.png differ diff --git a/fonts/MiniwiFont/03B1.png b/fonts/MiniwiFont/03B1.png new file mode 100644 index 000000000..396d78bf2 Binary files /dev/null and b/fonts/MiniwiFont/03B1.png differ diff --git a/fonts/MiniwiFont/03B2.png b/fonts/MiniwiFont/03B2.png new file mode 100644 index 000000000..3c7c840d2 Binary files /dev/null and b/fonts/MiniwiFont/03B2.png differ diff --git a/fonts/MiniwiFont/03B3.png b/fonts/MiniwiFont/03B3.png new file mode 100644 index 000000000..9ed820590 Binary files /dev/null and b/fonts/MiniwiFont/03B3.png differ diff --git a/fonts/MiniwiFont/03B4.png b/fonts/MiniwiFont/03B4.png new file mode 100644 index 000000000..9b892ad57 Binary files /dev/null and b/fonts/MiniwiFont/03B4.png differ diff --git a/fonts/MiniwiFont/03B5.png b/fonts/MiniwiFont/03B5.png new file mode 100644 index 000000000..7d1586ab1 Binary files /dev/null and b/fonts/MiniwiFont/03B5.png differ diff --git a/fonts/MiniwiFont/03B6.png b/fonts/MiniwiFont/03B6.png new file mode 100644 index 000000000..a3913c78a Binary files /dev/null and b/fonts/MiniwiFont/03B6.png differ diff --git a/fonts/MiniwiFont/03B7.png b/fonts/MiniwiFont/03B7.png new file mode 100644 index 000000000..01fdb590d Binary files /dev/null and b/fonts/MiniwiFont/03B7.png differ diff --git a/fonts/MiniwiFont/03B8.png b/fonts/MiniwiFont/03B8.png new file mode 100644 index 000000000..0e2dc4901 Binary files /dev/null and b/fonts/MiniwiFont/03B8.png differ diff --git a/fonts/MiniwiFont/03B9.png b/fonts/MiniwiFont/03B9.png new file mode 100644 index 000000000..45f971082 Binary files /dev/null and b/fonts/MiniwiFont/03B9.png differ diff --git a/fonts/MiniwiFont/03BA.png b/fonts/MiniwiFont/03BA.png new file mode 100644 index 000000000..2a62af056 Binary files /dev/null and b/fonts/MiniwiFont/03BA.png differ diff --git a/fonts/MiniwiFont/03BB.png b/fonts/MiniwiFont/03BB.png new file mode 100644 index 000000000..d5acd18fb Binary files /dev/null and b/fonts/MiniwiFont/03BB.png differ diff --git a/fonts/MiniwiFont/03BC.png b/fonts/MiniwiFont/03BC.png new file mode 100644 index 000000000..aae12b221 Binary files /dev/null and b/fonts/MiniwiFont/03BC.png differ diff --git a/fonts/MiniwiFont/03BD.png b/fonts/MiniwiFont/03BD.png new file mode 100644 index 000000000..0169c0ebf Binary files /dev/null and b/fonts/MiniwiFont/03BD.png differ diff --git a/fonts/MiniwiFont/03BE.png b/fonts/MiniwiFont/03BE.png new file mode 100644 index 000000000..da0d96403 Binary files /dev/null and b/fonts/MiniwiFont/03BE.png differ diff --git a/fonts/MiniwiFont/03BF.png b/fonts/MiniwiFont/03BF.png new file mode 100644 index 000000000..f7c4b46dd Binary files /dev/null and b/fonts/MiniwiFont/03BF.png differ diff --git a/fonts/MiniwiFont/03C0.png b/fonts/MiniwiFont/03C0.png new file mode 100644 index 000000000..62ed71366 Binary files /dev/null and b/fonts/MiniwiFont/03C0.png differ diff --git a/fonts/MiniwiFont/03C1.png b/fonts/MiniwiFont/03C1.png new file mode 100644 index 000000000..7f5fec5bb Binary files /dev/null and b/fonts/MiniwiFont/03C1.png differ diff --git a/fonts/MiniwiFont/03C2.png b/fonts/MiniwiFont/03C2.png new file mode 100644 index 000000000..ade0ec55c Binary files /dev/null and b/fonts/MiniwiFont/03C2.png differ diff --git a/fonts/MiniwiFont/03C3.png b/fonts/MiniwiFont/03C3.png new file mode 100644 index 000000000..aaa4fecba Binary files /dev/null and b/fonts/MiniwiFont/03C3.png differ diff --git a/fonts/MiniwiFont/03C4.png b/fonts/MiniwiFont/03C4.png new file mode 100644 index 000000000..6acda457e Binary files /dev/null and b/fonts/MiniwiFont/03C4.png differ diff --git a/fonts/MiniwiFont/03C5.png b/fonts/MiniwiFont/03C5.png new file mode 100644 index 000000000..23d568220 Binary files /dev/null and b/fonts/MiniwiFont/03C5.png differ diff --git a/fonts/MiniwiFont/03C6.png b/fonts/MiniwiFont/03C6.png new file mode 100644 index 000000000..17aaf3ad8 Binary files /dev/null and b/fonts/MiniwiFont/03C6.png differ diff --git a/fonts/MiniwiFont/03C7.png b/fonts/MiniwiFont/03C7.png new file mode 100644 index 000000000..2720cc9dd Binary files /dev/null and b/fonts/MiniwiFont/03C7.png differ diff --git a/fonts/MiniwiFont/03C8.png b/fonts/MiniwiFont/03C8.png new file mode 100644 index 000000000..1063b2de0 Binary files /dev/null and b/fonts/MiniwiFont/03C8.png differ diff --git a/fonts/MiniwiFont/03C9.png b/fonts/MiniwiFont/03C9.png new file mode 100644 index 000000000..ef3784d23 Binary files /dev/null and b/fonts/MiniwiFont/03C9.png differ diff --git a/fonts/MiniwiFont/03CA.png b/fonts/MiniwiFont/03CA.png new file mode 100644 index 000000000..fcf737ba9 Binary files /dev/null and b/fonts/MiniwiFont/03CA.png differ diff --git a/fonts/MiniwiFont/03CB.png b/fonts/MiniwiFont/03CB.png new file mode 100644 index 000000000..38e4b7bce Binary files /dev/null and b/fonts/MiniwiFont/03CB.png differ diff --git a/fonts/MiniwiFont/03CC.png b/fonts/MiniwiFont/03CC.png new file mode 100644 index 000000000..7ad917754 Binary files /dev/null and b/fonts/MiniwiFont/03CC.png differ diff --git a/fonts/MiniwiFont/03CD.png b/fonts/MiniwiFont/03CD.png new file mode 100644 index 000000000..40e46737b Binary files /dev/null and b/fonts/MiniwiFont/03CD.png differ diff --git a/fonts/MiniwiFont/03CE.png b/fonts/MiniwiFont/03CE.png new file mode 100644 index 000000000..7afad6799 Binary files /dev/null and b/fonts/MiniwiFont/03CE.png differ diff --git a/fonts/MiniwiFont/03D1.png b/fonts/MiniwiFont/03D1.png new file mode 100644 index 000000000..09714ce17 Binary files /dev/null and b/fonts/MiniwiFont/03D1.png differ diff --git a/fonts/MiniwiFont/03D2.png b/fonts/MiniwiFont/03D2.png new file mode 100644 index 000000000..23cbde40b Binary files /dev/null and b/fonts/MiniwiFont/03D2.png differ diff --git a/fonts/MiniwiFont/03D5.png b/fonts/MiniwiFont/03D5.png new file mode 100644 index 000000000..7c171101c Binary files /dev/null and b/fonts/MiniwiFont/03D5.png differ diff --git a/fonts/MiniwiFont/03D6.png b/fonts/MiniwiFont/03D6.png new file mode 100644 index 000000000..e5e3973d3 Binary files /dev/null and b/fonts/MiniwiFont/03D6.png differ diff --git a/fonts/MiniwiFont/0401.png b/fonts/MiniwiFont/0401.png new file mode 100644 index 000000000..b3f51b6de Binary files /dev/null and b/fonts/MiniwiFont/0401.png differ diff --git a/fonts/MiniwiFont/0402.png b/fonts/MiniwiFont/0402.png new file mode 100644 index 000000000..eb396e9e4 Binary files /dev/null and b/fonts/MiniwiFont/0402.png differ diff --git a/fonts/MiniwiFont/0403.png b/fonts/MiniwiFont/0403.png new file mode 100644 index 000000000..0a0e642e1 Binary files /dev/null and b/fonts/MiniwiFont/0403.png differ diff --git a/fonts/MiniwiFont/0404.png b/fonts/MiniwiFont/0404.png new file mode 100644 index 000000000..1cc97562c Binary files /dev/null and b/fonts/MiniwiFont/0404.png differ diff --git a/fonts/MiniwiFont/0405.png b/fonts/MiniwiFont/0405.png new file mode 100644 index 000000000..f573ab5a3 Binary files /dev/null and b/fonts/MiniwiFont/0405.png differ diff --git a/fonts/MiniwiFont/0406.png b/fonts/MiniwiFont/0406.png new file mode 100644 index 000000000..6ea3f6013 Binary files /dev/null and b/fonts/MiniwiFont/0406.png differ diff --git a/fonts/MiniwiFont/0407.png b/fonts/MiniwiFont/0407.png new file mode 100644 index 000000000..1ee397e63 Binary files /dev/null and b/fonts/MiniwiFont/0407.png differ diff --git a/fonts/MiniwiFont/0408.png b/fonts/MiniwiFont/0408.png new file mode 100644 index 000000000..03ffb66a1 Binary files /dev/null and b/fonts/MiniwiFont/0408.png differ diff --git a/fonts/MiniwiFont/0409.png b/fonts/MiniwiFont/0409.png new file mode 100644 index 000000000..1aafe2d47 Binary files /dev/null and b/fonts/MiniwiFont/0409.png differ diff --git a/fonts/MiniwiFont/040A.png b/fonts/MiniwiFont/040A.png new file mode 100644 index 000000000..6f611d6da Binary files /dev/null and b/fonts/MiniwiFont/040A.png differ diff --git a/fonts/MiniwiFont/040B.png b/fonts/MiniwiFont/040B.png new file mode 100644 index 000000000..d5bb717d6 Binary files /dev/null and b/fonts/MiniwiFont/040B.png differ diff --git a/fonts/MiniwiFont/040C.png b/fonts/MiniwiFont/040C.png new file mode 100644 index 000000000..ce4b7d64a Binary files /dev/null and b/fonts/MiniwiFont/040C.png differ diff --git a/fonts/MiniwiFont/040E.png b/fonts/MiniwiFont/040E.png new file mode 100644 index 000000000..a9839ab19 Binary files /dev/null and b/fonts/MiniwiFont/040E.png differ diff --git a/fonts/MiniwiFont/040F.png b/fonts/MiniwiFont/040F.png new file mode 100644 index 000000000..1e314ea2f Binary files /dev/null and b/fonts/MiniwiFont/040F.png differ diff --git a/fonts/MiniwiFont/0410.png b/fonts/MiniwiFont/0410.png new file mode 100644 index 000000000..3c00306ae Binary files /dev/null and b/fonts/MiniwiFont/0410.png differ diff --git a/fonts/MiniwiFont/0411.png b/fonts/MiniwiFont/0411.png new file mode 100644 index 000000000..e9bae589b Binary files /dev/null and b/fonts/MiniwiFont/0411.png differ diff --git a/fonts/MiniwiFont/0412.png b/fonts/MiniwiFont/0412.png new file mode 100644 index 000000000..d0b1e8ba9 Binary files /dev/null and b/fonts/MiniwiFont/0412.png differ diff --git a/fonts/MiniwiFont/0413.png b/fonts/MiniwiFont/0413.png new file mode 100644 index 000000000..e449409e8 Binary files /dev/null and b/fonts/MiniwiFont/0413.png differ diff --git a/fonts/MiniwiFont/0414.png b/fonts/MiniwiFont/0414.png new file mode 100644 index 000000000..d1c74f14e Binary files /dev/null and b/fonts/MiniwiFont/0414.png differ diff --git a/fonts/MiniwiFont/0415.png b/fonts/MiniwiFont/0415.png new file mode 100644 index 000000000..9aea80875 Binary files /dev/null and b/fonts/MiniwiFont/0415.png differ diff --git a/fonts/MiniwiFont/0416.png b/fonts/MiniwiFont/0416.png new file mode 100644 index 000000000..6afd1a3d1 Binary files /dev/null and b/fonts/MiniwiFont/0416.png differ diff --git a/fonts/MiniwiFont/0417.png b/fonts/MiniwiFont/0417.png new file mode 100644 index 000000000..a74af00e8 Binary files /dev/null and b/fonts/MiniwiFont/0417.png differ diff --git a/fonts/MiniwiFont/0418.png b/fonts/MiniwiFont/0418.png new file mode 100644 index 000000000..c5dfbc594 Binary files /dev/null and b/fonts/MiniwiFont/0418.png differ diff --git a/fonts/MiniwiFont/0419.png b/fonts/MiniwiFont/0419.png new file mode 100644 index 000000000..6ffccc242 Binary files /dev/null and b/fonts/MiniwiFont/0419.png differ diff --git a/fonts/MiniwiFont/041A.png b/fonts/MiniwiFont/041A.png new file mode 100644 index 000000000..4a353239d Binary files /dev/null and b/fonts/MiniwiFont/041A.png differ diff --git a/fonts/MiniwiFont/041B.png b/fonts/MiniwiFont/041B.png new file mode 100644 index 000000000..cb7b8559b Binary files /dev/null and b/fonts/MiniwiFont/041B.png differ diff --git a/fonts/MiniwiFont/041C.png b/fonts/MiniwiFont/041C.png new file mode 100644 index 000000000..ae166aff6 Binary files /dev/null and b/fonts/MiniwiFont/041C.png differ diff --git a/fonts/MiniwiFont/041D.png b/fonts/MiniwiFont/041D.png new file mode 100644 index 000000000..83e00574f Binary files /dev/null and b/fonts/MiniwiFont/041D.png differ diff --git a/fonts/MiniwiFont/041E.png b/fonts/MiniwiFont/041E.png new file mode 100644 index 000000000..779d1fe5c Binary files /dev/null and b/fonts/MiniwiFont/041E.png differ diff --git a/fonts/MiniwiFont/041F.png b/fonts/MiniwiFont/041F.png new file mode 100644 index 000000000..59bd0ac9e Binary files /dev/null and b/fonts/MiniwiFont/041F.png differ diff --git a/fonts/MiniwiFont/0420.png b/fonts/MiniwiFont/0420.png new file mode 100644 index 000000000..1efb8e7c2 Binary files /dev/null and b/fonts/MiniwiFont/0420.png differ diff --git a/fonts/MiniwiFont/0421.png b/fonts/MiniwiFont/0421.png new file mode 100644 index 000000000..66b60e239 Binary files /dev/null and b/fonts/MiniwiFont/0421.png differ diff --git a/fonts/MiniwiFont/0422.png b/fonts/MiniwiFont/0422.png new file mode 100644 index 000000000..2340517b5 Binary files /dev/null and b/fonts/MiniwiFont/0422.png differ diff --git a/fonts/MiniwiFont/0423.png b/fonts/MiniwiFont/0423.png new file mode 100644 index 000000000..5017e0d0c Binary files /dev/null and b/fonts/MiniwiFont/0423.png differ diff --git a/fonts/MiniwiFont/0424.png b/fonts/MiniwiFont/0424.png new file mode 100644 index 000000000..dcb2f0f8e Binary files /dev/null and b/fonts/MiniwiFont/0424.png differ diff --git a/fonts/MiniwiFont/0425.png b/fonts/MiniwiFont/0425.png new file mode 100644 index 000000000..190572ee9 Binary files /dev/null and b/fonts/MiniwiFont/0425.png differ diff --git a/fonts/MiniwiFont/0426.png b/fonts/MiniwiFont/0426.png new file mode 100644 index 000000000..e8933f8f7 Binary files /dev/null and b/fonts/MiniwiFont/0426.png differ diff --git a/fonts/MiniwiFont/0427.png b/fonts/MiniwiFont/0427.png new file mode 100644 index 000000000..824dfdbb3 Binary files /dev/null and b/fonts/MiniwiFont/0427.png differ diff --git a/fonts/MiniwiFont/0428.png b/fonts/MiniwiFont/0428.png new file mode 100644 index 000000000..a9e17d971 Binary files /dev/null and b/fonts/MiniwiFont/0428.png differ diff --git a/fonts/MiniwiFont/0429.png b/fonts/MiniwiFont/0429.png new file mode 100644 index 000000000..247afde15 Binary files /dev/null and b/fonts/MiniwiFont/0429.png differ diff --git a/fonts/MiniwiFont/042A.png b/fonts/MiniwiFont/042A.png new file mode 100644 index 000000000..11fd1dc36 Binary files /dev/null and b/fonts/MiniwiFont/042A.png differ diff --git a/fonts/MiniwiFont/042B.png b/fonts/MiniwiFont/042B.png new file mode 100644 index 000000000..a07915fa9 Binary files /dev/null and b/fonts/MiniwiFont/042B.png differ diff --git a/fonts/MiniwiFont/042C.png b/fonts/MiniwiFont/042C.png new file mode 100644 index 000000000..0818014c1 Binary files /dev/null and b/fonts/MiniwiFont/042C.png differ diff --git a/fonts/MiniwiFont/042D.png b/fonts/MiniwiFont/042D.png new file mode 100644 index 000000000..cebfacf34 Binary files /dev/null and b/fonts/MiniwiFont/042D.png differ diff --git a/fonts/MiniwiFont/042E.png b/fonts/MiniwiFont/042E.png new file mode 100644 index 000000000..94f11e6d0 Binary files /dev/null and b/fonts/MiniwiFont/042E.png differ diff --git a/fonts/MiniwiFont/042F.png b/fonts/MiniwiFont/042F.png new file mode 100644 index 000000000..0af8f63b2 Binary files /dev/null and b/fonts/MiniwiFont/042F.png differ diff --git a/fonts/MiniwiFont/0430.png b/fonts/MiniwiFont/0430.png new file mode 100644 index 000000000..5c4a68a10 Binary files /dev/null and b/fonts/MiniwiFont/0430.png differ diff --git a/fonts/MiniwiFont/0431.png b/fonts/MiniwiFont/0431.png new file mode 100644 index 000000000..38ab343a3 Binary files /dev/null and b/fonts/MiniwiFont/0431.png differ diff --git a/fonts/MiniwiFont/0432.png b/fonts/MiniwiFont/0432.png new file mode 100644 index 000000000..10ef4b65c Binary files /dev/null and b/fonts/MiniwiFont/0432.png differ diff --git a/fonts/MiniwiFont/0433.png b/fonts/MiniwiFont/0433.png new file mode 100644 index 000000000..74f1784aa Binary files /dev/null and b/fonts/MiniwiFont/0433.png differ diff --git a/fonts/MiniwiFont/0434.png b/fonts/MiniwiFont/0434.png new file mode 100644 index 000000000..0a53f4a57 Binary files /dev/null and b/fonts/MiniwiFont/0434.png differ diff --git a/fonts/MiniwiFont/0435.png b/fonts/MiniwiFont/0435.png new file mode 100644 index 000000000..5aaf59569 Binary files /dev/null and b/fonts/MiniwiFont/0435.png differ diff --git a/fonts/MiniwiFont/0436.png b/fonts/MiniwiFont/0436.png new file mode 100644 index 000000000..1df8dd76f Binary files /dev/null and b/fonts/MiniwiFont/0436.png differ diff --git a/fonts/MiniwiFont/0437.png b/fonts/MiniwiFont/0437.png new file mode 100644 index 000000000..a74af00e8 Binary files /dev/null and b/fonts/MiniwiFont/0437.png differ diff --git a/fonts/MiniwiFont/0438.png b/fonts/MiniwiFont/0438.png new file mode 100644 index 000000000..f8a7a1de0 Binary files /dev/null and b/fonts/MiniwiFont/0438.png differ diff --git a/fonts/MiniwiFont/0439.png b/fonts/MiniwiFont/0439.png new file mode 100644 index 000000000..6ffccc242 Binary files /dev/null and b/fonts/MiniwiFont/0439.png differ diff --git a/fonts/MiniwiFont/043A.png b/fonts/MiniwiFont/043A.png new file mode 100644 index 000000000..4a353239d Binary files /dev/null and b/fonts/MiniwiFont/043A.png differ diff --git a/fonts/MiniwiFont/043B.png b/fonts/MiniwiFont/043B.png new file mode 100644 index 000000000..cb7b8559b Binary files /dev/null and b/fonts/MiniwiFont/043B.png differ diff --git a/fonts/MiniwiFont/043C.png b/fonts/MiniwiFont/043C.png new file mode 100644 index 000000000..ae166aff6 Binary files /dev/null and b/fonts/MiniwiFont/043C.png differ diff --git a/fonts/MiniwiFont/043D.png b/fonts/MiniwiFont/043D.png new file mode 100644 index 000000000..83e00574f Binary files /dev/null and b/fonts/MiniwiFont/043D.png differ diff --git a/fonts/MiniwiFont/043E.png b/fonts/MiniwiFont/043E.png new file mode 100644 index 000000000..779d1fe5c Binary files /dev/null and b/fonts/MiniwiFont/043E.png differ diff --git a/fonts/MiniwiFont/043F.png b/fonts/MiniwiFont/043F.png new file mode 100644 index 000000000..59bd0ac9e Binary files /dev/null and b/fonts/MiniwiFont/043F.png differ diff --git a/fonts/MiniwiFont/0440.png b/fonts/MiniwiFont/0440.png new file mode 100644 index 000000000..a811d9638 Binary files /dev/null and b/fonts/MiniwiFont/0440.png differ diff --git a/fonts/MiniwiFont/0441.png b/fonts/MiniwiFont/0441.png new file mode 100644 index 000000000..99145b7b4 Binary files /dev/null and b/fonts/MiniwiFont/0441.png differ diff --git a/fonts/MiniwiFont/0442.png b/fonts/MiniwiFont/0442.png new file mode 100644 index 000000000..2b1d59405 Binary files /dev/null and b/fonts/MiniwiFont/0442.png differ diff --git a/fonts/MiniwiFont/0443.png b/fonts/MiniwiFont/0443.png new file mode 100644 index 000000000..9ed820590 Binary files /dev/null and b/fonts/MiniwiFont/0443.png differ diff --git a/fonts/MiniwiFont/0444.png b/fonts/MiniwiFont/0444.png new file mode 100644 index 000000000..7c171101c Binary files /dev/null and b/fonts/MiniwiFont/0444.png differ diff --git a/fonts/MiniwiFont/0445.png b/fonts/MiniwiFont/0445.png new file mode 100644 index 000000000..6b72162c9 Binary files /dev/null and b/fonts/MiniwiFont/0445.png differ diff --git a/fonts/MiniwiFont/0446.png b/fonts/MiniwiFont/0446.png new file mode 100644 index 000000000..18a19d9b1 Binary files /dev/null and b/fonts/MiniwiFont/0446.png differ diff --git a/fonts/MiniwiFont/0447.png b/fonts/MiniwiFont/0447.png new file mode 100644 index 000000000..32c1cd70c Binary files /dev/null and b/fonts/MiniwiFont/0447.png differ diff --git a/fonts/MiniwiFont/0448.png b/fonts/MiniwiFont/0448.png new file mode 100644 index 000000000..b0f75e4c6 Binary files /dev/null and b/fonts/MiniwiFont/0448.png differ diff --git a/fonts/MiniwiFont/0449.png b/fonts/MiniwiFont/0449.png new file mode 100644 index 000000000..b0f75e4c6 Binary files /dev/null and b/fonts/MiniwiFont/0449.png differ diff --git a/fonts/MiniwiFont/044A.png b/fonts/MiniwiFont/044A.png new file mode 100644 index 000000000..60c32f1b5 Binary files /dev/null and b/fonts/MiniwiFont/044A.png differ diff --git a/fonts/MiniwiFont/044B.png b/fonts/MiniwiFont/044B.png new file mode 100644 index 000000000..b1fd66d0d Binary files /dev/null and b/fonts/MiniwiFont/044B.png differ diff --git a/fonts/MiniwiFont/044C.png b/fonts/MiniwiFont/044C.png new file mode 100644 index 000000000..7c785cceb Binary files /dev/null and b/fonts/MiniwiFont/044C.png differ diff --git a/fonts/MiniwiFont/044D.png b/fonts/MiniwiFont/044D.png new file mode 100644 index 000000000..e582e3107 Binary files /dev/null and b/fonts/MiniwiFont/044D.png differ diff --git a/fonts/MiniwiFont/044E.png b/fonts/MiniwiFont/044E.png new file mode 100644 index 000000000..6c7919f44 Binary files /dev/null and b/fonts/MiniwiFont/044E.png differ diff --git a/fonts/MiniwiFont/044F.png b/fonts/MiniwiFont/044F.png new file mode 100644 index 000000000..068127881 Binary files /dev/null and b/fonts/MiniwiFont/044F.png differ diff --git a/fonts/MiniwiFont/0450.png b/fonts/MiniwiFont/0450.png new file mode 100644 index 000000000..5aaf59569 Binary files /dev/null and b/fonts/MiniwiFont/0450.png differ diff --git a/fonts/MiniwiFont/0451.png b/fonts/MiniwiFont/0451.png new file mode 100644 index 000000000..77c6d5d3d Binary files /dev/null and b/fonts/MiniwiFont/0451.png differ diff --git a/fonts/MiniwiFont/0452.png b/fonts/MiniwiFont/0452.png new file mode 100644 index 000000000..4e764e0b4 Binary files /dev/null and b/fonts/MiniwiFont/0452.png differ diff --git a/fonts/MiniwiFont/0453.png b/fonts/MiniwiFont/0453.png new file mode 100644 index 000000000..8acd7f631 Binary files /dev/null and b/fonts/MiniwiFont/0453.png differ diff --git a/fonts/MiniwiFont/0454.png b/fonts/MiniwiFont/0454.png new file mode 100644 index 000000000..180464e81 Binary files /dev/null and b/fonts/MiniwiFont/0454.png differ diff --git a/fonts/MiniwiFont/0455.png b/fonts/MiniwiFont/0455.png new file mode 100644 index 000000000..f573ab5a3 Binary files /dev/null and b/fonts/MiniwiFont/0455.png differ diff --git a/fonts/MiniwiFont/0456.png b/fonts/MiniwiFont/0456.png new file mode 100644 index 000000000..82be79e79 Binary files /dev/null and b/fonts/MiniwiFont/0456.png differ diff --git a/fonts/MiniwiFont/0457.png b/fonts/MiniwiFont/0457.png new file mode 100644 index 000000000..6739c017f Binary files /dev/null and b/fonts/MiniwiFont/0457.png differ diff --git a/fonts/MiniwiFont/0458.png b/fonts/MiniwiFont/0458.png new file mode 100644 index 000000000..4159115aa Binary files /dev/null and b/fonts/MiniwiFont/0458.png differ diff --git a/fonts/MiniwiFont/0459.png b/fonts/MiniwiFont/0459.png new file mode 100644 index 000000000..16b989927 Binary files /dev/null and b/fonts/MiniwiFont/0459.png differ diff --git a/fonts/MiniwiFont/045A.png b/fonts/MiniwiFont/045A.png new file mode 100644 index 000000000..b5e955a5f Binary files /dev/null and b/fonts/MiniwiFont/045A.png differ diff --git a/fonts/MiniwiFont/045B.png b/fonts/MiniwiFont/045B.png new file mode 100644 index 000000000..4e764e0b4 Binary files /dev/null and b/fonts/MiniwiFont/045B.png differ diff --git a/fonts/MiniwiFont/045C.png b/fonts/MiniwiFont/045C.png new file mode 100644 index 000000000..ddc14cba9 Binary files /dev/null and b/fonts/MiniwiFont/045C.png differ diff --git a/fonts/MiniwiFont/045D.png b/fonts/MiniwiFont/045D.png new file mode 100644 index 000000000..9fee67a4b Binary files /dev/null and b/fonts/MiniwiFont/045D.png differ diff --git a/fonts/MiniwiFont/045E.png b/fonts/MiniwiFont/045E.png new file mode 100644 index 000000000..a9839ab19 Binary files /dev/null and b/fonts/MiniwiFont/045E.png differ diff --git a/fonts/MiniwiFont/045F.png b/fonts/MiniwiFont/045F.png new file mode 100644 index 000000000..41f2279aa Binary files /dev/null and b/fonts/MiniwiFont/045F.png differ diff --git a/fonts/MiniwiFont/0460.png b/fonts/MiniwiFont/0460.png new file mode 100644 index 000000000..fdb9369b7 Binary files /dev/null and b/fonts/MiniwiFont/0460.png differ diff --git a/fonts/MiniwiFont/0461.png b/fonts/MiniwiFont/0461.png new file mode 100644 index 000000000..ef3784d23 Binary files /dev/null and b/fonts/MiniwiFont/0461.png differ diff --git a/fonts/MiniwiFont/05D0.png b/fonts/MiniwiFont/05D0.png new file mode 100644 index 000000000..71f32b463 Binary files /dev/null and b/fonts/MiniwiFont/05D0.png differ diff --git a/fonts/MiniwiFont/05D1.png b/fonts/MiniwiFont/05D1.png new file mode 100644 index 000000000..ff47ad046 Binary files /dev/null and b/fonts/MiniwiFont/05D1.png differ diff --git a/fonts/MiniwiFont/05D2.png b/fonts/MiniwiFont/05D2.png new file mode 100644 index 000000000..b20897182 Binary files /dev/null and b/fonts/MiniwiFont/05D2.png differ diff --git a/fonts/MiniwiFont/05D3.png b/fonts/MiniwiFont/05D3.png new file mode 100644 index 000000000..317cb3529 Binary files /dev/null and b/fonts/MiniwiFont/05D3.png differ diff --git a/fonts/MiniwiFont/05D4.png b/fonts/MiniwiFont/05D4.png new file mode 100644 index 000000000..7b4ad18d0 Binary files /dev/null and b/fonts/MiniwiFont/05D4.png differ diff --git a/fonts/MiniwiFont/05D5.png b/fonts/MiniwiFont/05D5.png new file mode 100644 index 000000000..fa5057a1d Binary files /dev/null and b/fonts/MiniwiFont/05D5.png differ diff --git a/fonts/MiniwiFont/05D6.png b/fonts/MiniwiFont/05D6.png new file mode 100644 index 000000000..985474181 Binary files /dev/null and b/fonts/MiniwiFont/05D6.png differ diff --git a/fonts/MiniwiFont/05D7.png b/fonts/MiniwiFont/05D7.png new file mode 100644 index 000000000..3aa95595d Binary files /dev/null and b/fonts/MiniwiFont/05D7.png differ diff --git a/fonts/MiniwiFont/05D8.png b/fonts/MiniwiFont/05D8.png new file mode 100644 index 000000000..429c356f1 Binary files /dev/null and b/fonts/MiniwiFont/05D8.png differ diff --git a/fonts/MiniwiFont/05D9.png b/fonts/MiniwiFont/05D9.png new file mode 100644 index 000000000..020754cfc Binary files /dev/null and b/fonts/MiniwiFont/05D9.png differ diff --git a/fonts/MiniwiFont/05DA.png b/fonts/MiniwiFont/05DA.png new file mode 100644 index 000000000..69dd2e633 Binary files /dev/null and b/fonts/MiniwiFont/05DA.png differ diff --git a/fonts/MiniwiFont/05DB.png b/fonts/MiniwiFont/05DB.png new file mode 100644 index 000000000..022341012 Binary files /dev/null and b/fonts/MiniwiFont/05DB.png differ diff --git a/fonts/MiniwiFont/05DC.png b/fonts/MiniwiFont/05DC.png new file mode 100644 index 000000000..69877b559 Binary files /dev/null and b/fonts/MiniwiFont/05DC.png differ diff --git a/fonts/MiniwiFont/05DD.png b/fonts/MiniwiFont/05DD.png new file mode 100644 index 000000000..218baa655 Binary files /dev/null and b/fonts/MiniwiFont/05DD.png differ diff --git a/fonts/MiniwiFont/05DE.png b/fonts/MiniwiFont/05DE.png new file mode 100644 index 000000000..c14d11102 Binary files /dev/null and b/fonts/MiniwiFont/05DE.png differ diff --git a/fonts/MiniwiFont/05DF.png b/fonts/MiniwiFont/05DF.png new file mode 100644 index 000000000..23b175b2a Binary files /dev/null and b/fonts/MiniwiFont/05DF.png differ diff --git a/fonts/MiniwiFont/05E0.png b/fonts/MiniwiFont/05E0.png new file mode 100644 index 000000000..e464a2f29 Binary files /dev/null and b/fonts/MiniwiFont/05E0.png differ diff --git a/fonts/MiniwiFont/05E1.png b/fonts/MiniwiFont/05E1.png new file mode 100644 index 000000000..a632a7b35 Binary files /dev/null and b/fonts/MiniwiFont/05E1.png differ diff --git a/fonts/MiniwiFont/05E2.png b/fonts/MiniwiFont/05E2.png new file mode 100644 index 000000000..4e8a30dc4 Binary files /dev/null and b/fonts/MiniwiFont/05E2.png differ diff --git a/fonts/MiniwiFont/05E3.png b/fonts/MiniwiFont/05E3.png new file mode 100644 index 000000000..1d0a7d155 Binary files /dev/null and b/fonts/MiniwiFont/05E3.png differ diff --git a/fonts/MiniwiFont/05E4.png b/fonts/MiniwiFont/05E4.png new file mode 100644 index 000000000..0a3fe2ec6 Binary files /dev/null and b/fonts/MiniwiFont/05E4.png differ diff --git a/fonts/MiniwiFont/05E5.png b/fonts/MiniwiFont/05E5.png new file mode 100644 index 000000000..c7c8179d3 Binary files /dev/null and b/fonts/MiniwiFont/05E5.png differ diff --git a/fonts/MiniwiFont/05E6.png b/fonts/MiniwiFont/05E6.png new file mode 100644 index 000000000..864cb2be7 Binary files /dev/null and b/fonts/MiniwiFont/05E6.png differ diff --git a/fonts/MiniwiFont/05E7.png b/fonts/MiniwiFont/05E7.png new file mode 100644 index 000000000..c4b70b3a8 Binary files /dev/null and b/fonts/MiniwiFont/05E7.png differ diff --git a/fonts/MiniwiFont/05E8.png b/fonts/MiniwiFont/05E8.png new file mode 100644 index 000000000..539ce1b97 Binary files /dev/null and b/fonts/MiniwiFont/05E8.png differ diff --git a/fonts/MiniwiFont/05E9.png b/fonts/MiniwiFont/05E9.png new file mode 100644 index 000000000..7818ee3cc Binary files /dev/null and b/fonts/MiniwiFont/05E9.png differ diff --git a/fonts/MiniwiFont/05EA.png b/fonts/MiniwiFont/05EA.png new file mode 100644 index 000000000..dcc44457f Binary files /dev/null and b/fonts/MiniwiFont/05EA.png differ diff --git a/fonts/MiniwiFont/060C.png b/fonts/MiniwiFont/060C.png new file mode 100644 index 000000000..1ac803783 Binary files /dev/null and b/fonts/MiniwiFont/060C.png differ diff --git a/fonts/MiniwiFont/061B.png b/fonts/MiniwiFont/061B.png new file mode 100644 index 000000000..77a4018f1 Binary files /dev/null and b/fonts/MiniwiFont/061B.png differ diff --git a/fonts/MiniwiFont/061F.png b/fonts/MiniwiFont/061F.png new file mode 100644 index 000000000..4e25c744a Binary files /dev/null and b/fonts/MiniwiFont/061F.png differ diff --git a/fonts/MiniwiFont/0621.png b/fonts/MiniwiFont/0621.png new file mode 100644 index 000000000..35e038e25 Binary files /dev/null and b/fonts/MiniwiFont/0621.png differ diff --git a/fonts/MiniwiFont/0622.png b/fonts/MiniwiFont/0622.png new file mode 100644 index 000000000..0f6b17ba7 Binary files /dev/null and b/fonts/MiniwiFont/0622.png differ diff --git a/fonts/MiniwiFont/0623.png b/fonts/MiniwiFont/0623.png new file mode 100644 index 000000000..25aea10a5 Binary files /dev/null and b/fonts/MiniwiFont/0623.png differ diff --git a/fonts/MiniwiFont/0624.png b/fonts/MiniwiFont/0624.png new file mode 100644 index 000000000..b0b34545e Binary files /dev/null and b/fonts/MiniwiFont/0624.png differ diff --git a/fonts/MiniwiFont/0625.png b/fonts/MiniwiFont/0625.png new file mode 100644 index 000000000..2a8c60ffd Binary files /dev/null and b/fonts/MiniwiFont/0625.png differ diff --git a/fonts/MiniwiFont/0626.png b/fonts/MiniwiFont/0626.png new file mode 100644 index 000000000..e5e722d0a Binary files /dev/null and b/fonts/MiniwiFont/0626.png differ diff --git a/fonts/MiniwiFont/0627.png b/fonts/MiniwiFont/0627.png new file mode 100644 index 000000000..46930b15f Binary files /dev/null and b/fonts/MiniwiFont/0627.png differ diff --git a/fonts/MiniwiFont/0628.png b/fonts/MiniwiFont/0628.png new file mode 100644 index 000000000..b86b430d8 Binary files /dev/null and b/fonts/MiniwiFont/0628.png differ diff --git a/fonts/MiniwiFont/0629.png b/fonts/MiniwiFont/0629.png new file mode 100644 index 000000000..f3fbf86b9 Binary files /dev/null and b/fonts/MiniwiFont/0629.png differ diff --git a/fonts/MiniwiFont/062A.png b/fonts/MiniwiFont/062A.png new file mode 100644 index 000000000..a33e598cb Binary files /dev/null and b/fonts/MiniwiFont/062A.png differ diff --git a/fonts/MiniwiFont/062B.png b/fonts/MiniwiFont/062B.png new file mode 100644 index 000000000..01c91692a Binary files /dev/null and b/fonts/MiniwiFont/062B.png differ diff --git a/fonts/MiniwiFont/062C.png b/fonts/MiniwiFont/062C.png new file mode 100644 index 000000000..d54bf2251 Binary files /dev/null and b/fonts/MiniwiFont/062C.png differ diff --git a/fonts/MiniwiFont/062D.png b/fonts/MiniwiFont/062D.png new file mode 100644 index 000000000..f93dbe715 Binary files /dev/null and b/fonts/MiniwiFont/062D.png differ diff --git a/fonts/MiniwiFont/062E.png b/fonts/MiniwiFont/062E.png new file mode 100644 index 000000000..40517282b Binary files /dev/null and b/fonts/MiniwiFont/062E.png differ diff --git a/fonts/MiniwiFont/062F.png b/fonts/MiniwiFont/062F.png new file mode 100644 index 000000000..28a6758a9 Binary files /dev/null and b/fonts/MiniwiFont/062F.png differ diff --git a/fonts/MiniwiFont/0630.png b/fonts/MiniwiFont/0630.png new file mode 100644 index 000000000..0a91ee982 Binary files /dev/null and b/fonts/MiniwiFont/0630.png differ diff --git a/fonts/MiniwiFont/0631.png b/fonts/MiniwiFont/0631.png new file mode 100644 index 000000000..53785c198 Binary files /dev/null and b/fonts/MiniwiFont/0631.png differ diff --git a/fonts/MiniwiFont/0632.png b/fonts/MiniwiFont/0632.png new file mode 100644 index 000000000..e0b3f9b6e Binary files /dev/null and b/fonts/MiniwiFont/0632.png differ diff --git a/fonts/MiniwiFont/0633.png b/fonts/MiniwiFont/0633.png new file mode 100644 index 000000000..666299af1 Binary files /dev/null and b/fonts/MiniwiFont/0633.png differ diff --git a/fonts/MiniwiFont/0634.png b/fonts/MiniwiFont/0634.png new file mode 100644 index 000000000..18bd4b92f Binary files /dev/null and b/fonts/MiniwiFont/0634.png differ diff --git a/fonts/MiniwiFont/0635.png b/fonts/MiniwiFont/0635.png new file mode 100644 index 000000000..c10e3b704 Binary files /dev/null and b/fonts/MiniwiFont/0635.png differ diff --git a/fonts/MiniwiFont/0636.png b/fonts/MiniwiFont/0636.png new file mode 100644 index 000000000..35b04ba12 Binary files /dev/null and b/fonts/MiniwiFont/0636.png differ diff --git a/fonts/MiniwiFont/0637.png b/fonts/MiniwiFont/0637.png new file mode 100644 index 000000000..56887e881 Binary files /dev/null and b/fonts/MiniwiFont/0637.png differ diff --git a/fonts/MiniwiFont/0638.png b/fonts/MiniwiFont/0638.png new file mode 100644 index 000000000..9a491065c Binary files /dev/null and b/fonts/MiniwiFont/0638.png differ diff --git a/fonts/MiniwiFont/0639.png b/fonts/MiniwiFont/0639.png new file mode 100644 index 000000000..af806982a Binary files /dev/null and b/fonts/MiniwiFont/0639.png differ diff --git a/fonts/MiniwiFont/063A.png b/fonts/MiniwiFont/063A.png new file mode 100644 index 000000000..6aa63ce37 Binary files /dev/null and b/fonts/MiniwiFont/063A.png differ diff --git a/fonts/MiniwiFont/0640.png b/fonts/MiniwiFont/0640.png new file mode 100644 index 000000000..230bb00ed Binary files /dev/null and b/fonts/MiniwiFont/0640.png differ diff --git a/fonts/MiniwiFont/0641.png b/fonts/MiniwiFont/0641.png new file mode 100644 index 000000000..6a29f8c74 Binary files /dev/null and b/fonts/MiniwiFont/0641.png differ diff --git a/fonts/MiniwiFont/0642.png b/fonts/MiniwiFont/0642.png new file mode 100644 index 000000000..6aee782ce Binary files /dev/null and b/fonts/MiniwiFont/0642.png differ diff --git a/fonts/MiniwiFont/0643.png b/fonts/MiniwiFont/0643.png new file mode 100644 index 000000000..27e8e967b Binary files /dev/null and b/fonts/MiniwiFont/0643.png differ diff --git a/fonts/MiniwiFont/0644.png b/fonts/MiniwiFont/0644.png new file mode 100644 index 000000000..30bd62068 Binary files /dev/null and b/fonts/MiniwiFont/0644.png differ diff --git a/fonts/MiniwiFont/0645.png b/fonts/MiniwiFont/0645.png new file mode 100644 index 000000000..c5f46993e Binary files /dev/null and b/fonts/MiniwiFont/0645.png differ diff --git a/fonts/MiniwiFont/0646.png b/fonts/MiniwiFont/0646.png new file mode 100644 index 000000000..085aff62b Binary files /dev/null and b/fonts/MiniwiFont/0646.png differ diff --git a/fonts/MiniwiFont/0647.png b/fonts/MiniwiFont/0647.png new file mode 100644 index 000000000..71a305566 Binary files /dev/null and b/fonts/MiniwiFont/0647.png differ diff --git a/fonts/MiniwiFont/0648.png b/fonts/MiniwiFont/0648.png new file mode 100644 index 000000000..b5d76eb06 Binary files /dev/null and b/fonts/MiniwiFont/0648.png differ diff --git a/fonts/MiniwiFont/0649.png b/fonts/MiniwiFont/0649.png new file mode 100644 index 000000000..42f5b8fb3 Binary files /dev/null and b/fonts/MiniwiFont/0649.png differ diff --git a/fonts/MiniwiFont/064A.png b/fonts/MiniwiFont/064A.png new file mode 100644 index 000000000..79b1bc5d6 Binary files /dev/null and b/fonts/MiniwiFont/064A.png differ diff --git a/fonts/MiniwiFont/064B.png b/fonts/MiniwiFont/064B.png new file mode 100644 index 000000000..2b149353b Binary files /dev/null and b/fonts/MiniwiFont/064B.png differ diff --git a/fonts/MiniwiFont/064C.png b/fonts/MiniwiFont/064C.png new file mode 100644 index 000000000..328d5fd37 Binary files /dev/null and b/fonts/MiniwiFont/064C.png differ diff --git a/fonts/MiniwiFont/064D.png b/fonts/MiniwiFont/064D.png new file mode 100644 index 000000000..dc208cfad Binary files /dev/null and b/fonts/MiniwiFont/064D.png differ diff --git a/fonts/MiniwiFont/064E.png b/fonts/MiniwiFont/064E.png new file mode 100644 index 000000000..e6ac89865 Binary files /dev/null and b/fonts/MiniwiFont/064E.png differ diff --git a/fonts/MiniwiFont/064F.png b/fonts/MiniwiFont/064F.png new file mode 100644 index 000000000..7304fc6a5 Binary files /dev/null and b/fonts/MiniwiFont/064F.png differ diff --git a/fonts/MiniwiFont/0650.png b/fonts/MiniwiFont/0650.png new file mode 100644 index 000000000..7d3327ce0 Binary files /dev/null and b/fonts/MiniwiFont/0650.png differ diff --git a/fonts/MiniwiFont/0651.png b/fonts/MiniwiFont/0651.png new file mode 100644 index 000000000..2d729ac5f Binary files /dev/null and b/fonts/MiniwiFont/0651.png differ diff --git a/fonts/MiniwiFont/0652.png b/fonts/MiniwiFont/0652.png new file mode 100644 index 000000000..3fb47a5ac Binary files /dev/null and b/fonts/MiniwiFont/0652.png differ diff --git a/fonts/MiniwiFont/1E02.png b/fonts/MiniwiFont/1E02.png new file mode 100644 index 000000000..2a96a9b55 Binary files /dev/null and b/fonts/MiniwiFont/1E02.png differ diff --git a/fonts/MiniwiFont/1E03.png b/fonts/MiniwiFont/1E03.png new file mode 100644 index 000000000..7159ec156 Binary files /dev/null and b/fonts/MiniwiFont/1E03.png differ diff --git a/fonts/MiniwiFont/1E0A.png b/fonts/MiniwiFont/1E0A.png new file mode 100644 index 000000000..7aa8f171d Binary files /dev/null and b/fonts/MiniwiFont/1E0A.png differ diff --git a/fonts/MiniwiFont/1E0B.png b/fonts/MiniwiFont/1E0B.png new file mode 100644 index 000000000..481eec6ba Binary files /dev/null and b/fonts/MiniwiFont/1E0B.png differ diff --git a/fonts/MiniwiFont/1E1E.png b/fonts/MiniwiFont/1E1E.png new file mode 100644 index 000000000..762311abe Binary files /dev/null and b/fonts/MiniwiFont/1E1E.png differ diff --git a/fonts/MiniwiFont/1E1F.png b/fonts/MiniwiFont/1E1F.png new file mode 100644 index 000000000..a0c52a984 Binary files /dev/null and b/fonts/MiniwiFont/1E1F.png differ diff --git a/fonts/MiniwiFont/1E40.png b/fonts/MiniwiFont/1E40.png new file mode 100644 index 000000000..005958725 Binary files /dev/null and b/fonts/MiniwiFont/1E40.png differ diff --git a/fonts/MiniwiFont/1E41.png b/fonts/MiniwiFont/1E41.png new file mode 100644 index 000000000..005958725 Binary files /dev/null and b/fonts/MiniwiFont/1E41.png differ diff --git a/fonts/MiniwiFont/1E56.png b/fonts/MiniwiFont/1E56.png new file mode 100644 index 000000000..7b3e2d60c Binary files /dev/null and b/fonts/MiniwiFont/1E56.png differ diff --git a/fonts/MiniwiFont/1E57.png b/fonts/MiniwiFont/1E57.png new file mode 100644 index 000000000..87096ec41 Binary files /dev/null and b/fonts/MiniwiFont/1E57.png differ diff --git a/fonts/MiniwiFont/1E60.png b/fonts/MiniwiFont/1E60.png new file mode 100644 index 000000000..5d07a1af9 Binary files /dev/null and b/fonts/MiniwiFont/1E60.png differ diff --git a/fonts/MiniwiFont/1E61.png b/fonts/MiniwiFont/1E61.png new file mode 100644 index 000000000..c9da8b529 Binary files /dev/null and b/fonts/MiniwiFont/1E61.png differ diff --git a/fonts/MiniwiFont/1E6A.png b/fonts/MiniwiFont/1E6A.png new file mode 100644 index 000000000..56d7b21e1 Binary files /dev/null and b/fonts/MiniwiFont/1E6A.png differ diff --git a/fonts/MiniwiFont/1E6B.png b/fonts/MiniwiFont/1E6B.png new file mode 100644 index 000000000..ed44693eb Binary files /dev/null and b/fonts/MiniwiFont/1E6B.png differ diff --git a/fonts/MiniwiFont/1E80.png b/fonts/MiniwiFont/1E80.png new file mode 100644 index 000000000..11b94a1be Binary files /dev/null and b/fonts/MiniwiFont/1E80.png differ diff --git a/fonts/MiniwiFont/1E81.png b/fonts/MiniwiFont/1E81.png new file mode 100644 index 000000000..11b94a1be Binary files /dev/null and b/fonts/MiniwiFont/1E81.png differ diff --git a/fonts/MiniwiFont/1E82.png b/fonts/MiniwiFont/1E82.png new file mode 100644 index 000000000..11b94a1be Binary files /dev/null and b/fonts/MiniwiFont/1E82.png differ diff --git a/fonts/MiniwiFont/1E83.png b/fonts/MiniwiFont/1E83.png new file mode 100644 index 000000000..8fe484b4b Binary files /dev/null and b/fonts/MiniwiFont/1E83.png differ diff --git a/fonts/MiniwiFont/1E84.png b/fonts/MiniwiFont/1E84.png new file mode 100644 index 000000000..3405bcb05 Binary files /dev/null and b/fonts/MiniwiFont/1E84.png differ diff --git a/fonts/MiniwiFont/1E85.png b/fonts/MiniwiFont/1E85.png new file mode 100644 index 000000000..3405bcb05 Binary files /dev/null and b/fonts/MiniwiFont/1E85.png differ diff --git a/fonts/MiniwiFont/1EF2.png b/fonts/MiniwiFont/1EF2.png new file mode 100644 index 000000000..6779db245 Binary files /dev/null and b/fonts/MiniwiFont/1EF2.png differ diff --git a/fonts/MiniwiFont/1EF3.png b/fonts/MiniwiFont/1EF3.png new file mode 100644 index 000000000..0b7f5a028 Binary files /dev/null and b/fonts/MiniwiFont/1EF3.png differ diff --git a/fonts/MiniwiFont/2013.png b/fonts/MiniwiFont/2013.png new file mode 100644 index 000000000..08f3a1e00 Binary files /dev/null and b/fonts/MiniwiFont/2013.png differ diff --git a/fonts/MiniwiFont/2014.png b/fonts/MiniwiFont/2014.png new file mode 100644 index 000000000..0fe2d0481 Binary files /dev/null and b/fonts/MiniwiFont/2014.png differ diff --git a/fonts/MiniwiFont/2015.png b/fonts/MiniwiFont/2015.png new file mode 100644 index 000000000..0fe2d0481 Binary files /dev/null and b/fonts/MiniwiFont/2015.png differ diff --git a/fonts/MiniwiFont/2017.png b/fonts/MiniwiFont/2017.png new file mode 100644 index 000000000..eaeda66ae Binary files /dev/null and b/fonts/MiniwiFont/2017.png differ diff --git a/fonts/MiniwiFont/2018.png b/fonts/MiniwiFont/2018.png new file mode 100644 index 000000000..4e0eddd3e Binary files /dev/null and b/fonts/MiniwiFont/2018.png differ diff --git a/fonts/MiniwiFont/2019.png b/fonts/MiniwiFont/2019.png new file mode 100644 index 000000000..44793038e Binary files /dev/null and b/fonts/MiniwiFont/2019.png differ diff --git a/fonts/MiniwiFont/201A.png b/fonts/MiniwiFont/201A.png new file mode 100644 index 000000000..70b951d4f Binary files /dev/null and b/fonts/MiniwiFont/201A.png differ diff --git a/fonts/MiniwiFont/201C.png b/fonts/MiniwiFont/201C.png new file mode 100644 index 000000000..381bafe3e Binary files /dev/null and b/fonts/MiniwiFont/201C.png differ diff --git a/fonts/MiniwiFont/201D.png b/fonts/MiniwiFont/201D.png new file mode 100644 index 000000000..701d20597 Binary files /dev/null and b/fonts/MiniwiFont/201D.png differ diff --git a/fonts/MiniwiFont/201E.png b/fonts/MiniwiFont/201E.png new file mode 100644 index 000000000..41942096d Binary files /dev/null and b/fonts/MiniwiFont/201E.png differ diff --git a/fonts/MiniwiFont/2020.png b/fonts/MiniwiFont/2020.png new file mode 100644 index 000000000..44a604ce1 Binary files /dev/null and b/fonts/MiniwiFont/2020.png differ diff --git a/fonts/MiniwiFont/2021.png b/fonts/MiniwiFont/2021.png new file mode 100644 index 000000000..312572876 Binary files /dev/null and b/fonts/MiniwiFont/2021.png differ diff --git a/fonts/MiniwiFont/2022.png b/fonts/MiniwiFont/2022.png new file mode 100644 index 000000000..35792bb2d Binary files /dev/null and b/fonts/MiniwiFont/2022.png differ diff --git a/fonts/MiniwiFont/2026.png b/fonts/MiniwiFont/2026.png new file mode 100644 index 000000000..f68b59ddd Binary files /dev/null and b/fonts/MiniwiFont/2026.png differ diff --git a/fonts/MiniwiFont/2030.png b/fonts/MiniwiFont/2030.png new file mode 100644 index 000000000..f4ce805ca Binary files /dev/null and b/fonts/MiniwiFont/2030.png differ diff --git a/fonts/MiniwiFont/2032.png b/fonts/MiniwiFont/2032.png new file mode 100644 index 000000000..79641651d Binary files /dev/null and b/fonts/MiniwiFont/2032.png differ diff --git a/fonts/MiniwiFont/2033.png b/fonts/MiniwiFont/2033.png new file mode 100644 index 000000000..05a39a8cd Binary files /dev/null and b/fonts/MiniwiFont/2033.png differ diff --git a/fonts/MiniwiFont/2039.png b/fonts/MiniwiFont/2039.png new file mode 100644 index 000000000..42e35782f Binary files /dev/null and b/fonts/MiniwiFont/2039.png differ diff --git a/fonts/MiniwiFont/203A.png b/fonts/MiniwiFont/203A.png new file mode 100644 index 000000000..a9e2ee939 Binary files /dev/null and b/fonts/MiniwiFont/203A.png differ diff --git a/fonts/MiniwiFont/2044.png b/fonts/MiniwiFont/2044.png new file mode 100644 index 000000000..4b2e9dbab Binary files /dev/null and b/fonts/MiniwiFont/2044.png differ diff --git a/fonts/MiniwiFont/20AC.png b/fonts/MiniwiFont/20AC.png new file mode 100644 index 000000000..a4d66cf50 Binary files /dev/null and b/fonts/MiniwiFont/20AC.png differ diff --git a/fonts/MiniwiFont/20AF.png b/fonts/MiniwiFont/20AF.png new file mode 100644 index 000000000..d15298f63 Binary files /dev/null and b/fonts/MiniwiFont/20AF.png differ diff --git a/fonts/MiniwiFont/2111.png b/fonts/MiniwiFont/2111.png new file mode 100644 index 000000000..5bb185566 Binary files /dev/null and b/fonts/MiniwiFont/2111.png differ diff --git a/fonts/MiniwiFont/2116.png b/fonts/MiniwiFont/2116.png new file mode 100644 index 000000000..880bec8ba Binary files /dev/null and b/fonts/MiniwiFont/2116.png differ diff --git a/fonts/MiniwiFont/2118.png b/fonts/MiniwiFont/2118.png new file mode 100644 index 000000000..c920f1591 Binary files /dev/null and b/fonts/MiniwiFont/2118.png differ diff --git a/fonts/MiniwiFont/211C.png b/fonts/MiniwiFont/211C.png new file mode 100644 index 000000000..2f5bfe2d9 Binary files /dev/null and b/fonts/MiniwiFont/211C.png differ diff --git a/fonts/MiniwiFont/2122.png b/fonts/MiniwiFont/2122.png new file mode 100644 index 000000000..37ca4f729 Binary files /dev/null and b/fonts/MiniwiFont/2122.png differ diff --git a/fonts/MiniwiFont/2126.png b/fonts/MiniwiFont/2126.png new file mode 100644 index 000000000..023567850 Binary files /dev/null and b/fonts/MiniwiFont/2126.png differ diff --git a/fonts/MiniwiFont/2135.png b/fonts/MiniwiFont/2135.png new file mode 100644 index 000000000..52de770be Binary files /dev/null and b/fonts/MiniwiFont/2135.png differ diff --git a/fonts/MiniwiFont/2190.png b/fonts/MiniwiFont/2190.png new file mode 100644 index 000000000..844c58dbd Binary files /dev/null and b/fonts/MiniwiFont/2190.png differ diff --git a/fonts/MiniwiFont/2191.png b/fonts/MiniwiFont/2191.png new file mode 100644 index 000000000..e8a526713 Binary files /dev/null and b/fonts/MiniwiFont/2191.png differ diff --git a/fonts/MiniwiFont/2192.png b/fonts/MiniwiFont/2192.png new file mode 100644 index 000000000..dc1748ab5 Binary files /dev/null and b/fonts/MiniwiFont/2192.png differ diff --git a/fonts/MiniwiFont/2193.png b/fonts/MiniwiFont/2193.png new file mode 100644 index 000000000..544ac0e56 Binary files /dev/null and b/fonts/MiniwiFont/2193.png differ diff --git a/fonts/MiniwiFont/2194.png b/fonts/MiniwiFont/2194.png new file mode 100644 index 000000000..f97bef712 Binary files /dev/null and b/fonts/MiniwiFont/2194.png differ diff --git a/fonts/MiniwiFont/21B5.png b/fonts/MiniwiFont/21B5.png new file mode 100644 index 000000000..814aa7ea4 Binary files /dev/null and b/fonts/MiniwiFont/21B5.png differ diff --git a/fonts/MiniwiFont/21D0.png b/fonts/MiniwiFont/21D0.png new file mode 100644 index 000000000..3c8b3fd71 Binary files /dev/null and b/fonts/MiniwiFont/21D0.png differ diff --git a/fonts/MiniwiFont/21D1.png b/fonts/MiniwiFont/21D1.png new file mode 100644 index 000000000..7209da2b5 Binary files /dev/null and b/fonts/MiniwiFont/21D1.png differ diff --git a/fonts/MiniwiFont/21D2.png b/fonts/MiniwiFont/21D2.png new file mode 100644 index 000000000..3cc007b47 Binary files /dev/null and b/fonts/MiniwiFont/21D2.png differ diff --git a/fonts/MiniwiFont/21D3.png b/fonts/MiniwiFont/21D3.png new file mode 100644 index 000000000..1e314ea2f Binary files /dev/null and b/fonts/MiniwiFont/21D3.png differ diff --git a/fonts/MiniwiFont/21D4.png b/fonts/MiniwiFont/21D4.png new file mode 100644 index 000000000..707ef17d3 Binary files /dev/null and b/fonts/MiniwiFont/21D4.png differ diff --git a/fonts/MiniwiFont/2200.png b/fonts/MiniwiFont/2200.png new file mode 100644 index 000000000..6af74aff9 Binary files /dev/null and b/fonts/MiniwiFont/2200.png differ diff --git a/fonts/MiniwiFont/2201.png b/fonts/MiniwiFont/2201.png new file mode 100644 index 000000000..66b60e239 Binary files /dev/null and b/fonts/MiniwiFont/2201.png differ diff --git a/fonts/MiniwiFont/2202.png b/fonts/MiniwiFont/2202.png new file mode 100644 index 000000000..925e9620e Binary files /dev/null and b/fonts/MiniwiFont/2202.png differ diff --git a/fonts/MiniwiFont/2203.png b/fonts/MiniwiFont/2203.png new file mode 100644 index 000000000..963fdca2d Binary files /dev/null and b/fonts/MiniwiFont/2203.png differ diff --git a/fonts/MiniwiFont/2204.png b/fonts/MiniwiFont/2204.png new file mode 100644 index 000000000..e73162c50 Binary files /dev/null and b/fonts/MiniwiFont/2204.png differ diff --git a/fonts/MiniwiFont/2205.png b/fonts/MiniwiFont/2205.png new file mode 100644 index 000000000..26b916708 Binary files /dev/null and b/fonts/MiniwiFont/2205.png differ diff --git a/fonts/MiniwiFont/2206.png b/fonts/MiniwiFont/2206.png new file mode 100644 index 000000000..132cd2063 Binary files /dev/null and b/fonts/MiniwiFont/2206.png differ diff --git a/fonts/MiniwiFont/2207.png b/fonts/MiniwiFont/2207.png new file mode 100644 index 000000000..378dc7fbb Binary files /dev/null and b/fonts/MiniwiFont/2207.png differ diff --git a/fonts/MiniwiFont/2208.png b/fonts/MiniwiFont/2208.png new file mode 100644 index 000000000..eb7c23510 Binary files /dev/null and b/fonts/MiniwiFont/2208.png differ diff --git a/fonts/MiniwiFont/2209.png b/fonts/MiniwiFont/2209.png new file mode 100644 index 000000000..a33e65bcc Binary files /dev/null and b/fonts/MiniwiFont/2209.png differ diff --git a/fonts/MiniwiFont/220A.png b/fonts/MiniwiFont/220A.png new file mode 100644 index 000000000..9d93aaa98 Binary files /dev/null and b/fonts/MiniwiFont/220A.png differ diff --git a/fonts/MiniwiFont/220B.png b/fonts/MiniwiFont/220B.png new file mode 100644 index 000000000..55e6cfb2c Binary files /dev/null and b/fonts/MiniwiFont/220B.png differ diff --git a/fonts/MiniwiFont/220C.png b/fonts/MiniwiFont/220C.png new file mode 100644 index 000000000..76be88e1f Binary files /dev/null and b/fonts/MiniwiFont/220C.png differ diff --git a/fonts/MiniwiFont/220D.png b/fonts/MiniwiFont/220D.png new file mode 100644 index 000000000..27824faa6 Binary files /dev/null and b/fonts/MiniwiFont/220D.png differ diff --git a/fonts/MiniwiFont/220E.png b/fonts/MiniwiFont/220E.png new file mode 100644 index 000000000..a1d8ba39f Binary files /dev/null and b/fonts/MiniwiFont/220E.png differ diff --git a/fonts/MiniwiFont/220F.png b/fonts/MiniwiFont/220F.png new file mode 100644 index 000000000..444b830f3 Binary files /dev/null and b/fonts/MiniwiFont/220F.png differ diff --git a/fonts/MiniwiFont/2210.png b/fonts/MiniwiFont/2210.png new file mode 100644 index 000000000..71b36e736 Binary files /dev/null and b/fonts/MiniwiFont/2210.png differ diff --git a/fonts/MiniwiFont/2211.png b/fonts/MiniwiFont/2211.png new file mode 100644 index 000000000..f9e1595a5 Binary files /dev/null and b/fonts/MiniwiFont/2211.png differ diff --git a/fonts/MiniwiFont/2212.png b/fonts/MiniwiFont/2212.png new file mode 100644 index 000000000..a1dfb14c7 Binary files /dev/null and b/fonts/MiniwiFont/2212.png differ diff --git a/fonts/MiniwiFont/2213.png b/fonts/MiniwiFont/2213.png new file mode 100644 index 000000000..621ad1061 Binary files /dev/null and b/fonts/MiniwiFont/2213.png differ diff --git a/fonts/MiniwiFont/2214.png b/fonts/MiniwiFont/2214.png new file mode 100644 index 000000000..8a59ae436 Binary files /dev/null and b/fonts/MiniwiFont/2214.png differ diff --git a/fonts/MiniwiFont/2215.png b/fonts/MiniwiFont/2215.png new file mode 100644 index 000000000..59b2ca6e5 Binary files /dev/null and b/fonts/MiniwiFont/2215.png differ diff --git a/fonts/MiniwiFont/2216.png b/fonts/MiniwiFont/2216.png new file mode 100644 index 000000000..87d05a000 Binary files /dev/null and b/fonts/MiniwiFont/2216.png differ diff --git a/fonts/MiniwiFont/2217.png b/fonts/MiniwiFont/2217.png new file mode 100644 index 000000000..535520c5f Binary files /dev/null and b/fonts/MiniwiFont/2217.png differ diff --git a/fonts/MiniwiFont/2218.png b/fonts/MiniwiFont/2218.png new file mode 100644 index 000000000..b622064ff Binary files /dev/null and b/fonts/MiniwiFont/2218.png differ diff --git a/fonts/MiniwiFont/2219.png b/fonts/MiniwiFont/2219.png new file mode 100644 index 000000000..35792bb2d Binary files /dev/null and b/fonts/MiniwiFont/2219.png differ diff --git a/fonts/MiniwiFont/221A.png b/fonts/MiniwiFont/221A.png new file mode 100644 index 000000000..ed31557a9 Binary files /dev/null and b/fonts/MiniwiFont/221A.png differ diff --git a/fonts/MiniwiFont/221B.png b/fonts/MiniwiFont/221B.png new file mode 100644 index 000000000..b426160de Binary files /dev/null and b/fonts/MiniwiFont/221B.png differ diff --git a/fonts/MiniwiFont/221C.png b/fonts/MiniwiFont/221C.png new file mode 100644 index 000000000..996d0d09f Binary files /dev/null and b/fonts/MiniwiFont/221C.png differ diff --git a/fonts/MiniwiFont/221D.png b/fonts/MiniwiFont/221D.png new file mode 100644 index 000000000..e2b4db7a8 Binary files /dev/null and b/fonts/MiniwiFont/221D.png differ diff --git a/fonts/MiniwiFont/221E.png b/fonts/MiniwiFont/221E.png new file mode 100644 index 000000000..9f27e37c8 Binary files /dev/null and b/fonts/MiniwiFont/221E.png differ diff --git a/fonts/MiniwiFont/221F.png b/fonts/MiniwiFont/221F.png new file mode 100644 index 000000000..ca0211b88 Binary files /dev/null and b/fonts/MiniwiFont/221F.png differ diff --git a/fonts/MiniwiFont/2220.png b/fonts/MiniwiFont/2220.png new file mode 100644 index 000000000..ae096c435 Binary files /dev/null and b/fonts/MiniwiFont/2220.png differ diff --git a/fonts/MiniwiFont/2221.png b/fonts/MiniwiFont/2221.png new file mode 100644 index 000000000..c6b9554c4 Binary files /dev/null and b/fonts/MiniwiFont/2221.png differ diff --git a/fonts/MiniwiFont/2222.png b/fonts/MiniwiFont/2222.png new file mode 100644 index 000000000..0efc0442c Binary files /dev/null and b/fonts/MiniwiFont/2222.png differ diff --git a/fonts/MiniwiFont/2223.png b/fonts/MiniwiFont/2223.png new file mode 100644 index 000000000..23b175b2a Binary files /dev/null and b/fonts/MiniwiFont/2223.png differ diff --git a/fonts/MiniwiFont/2224.png b/fonts/MiniwiFont/2224.png new file mode 100644 index 000000000..23b175b2a Binary files /dev/null and b/fonts/MiniwiFont/2224.png differ diff --git a/fonts/MiniwiFont/2225.png b/fonts/MiniwiFont/2225.png new file mode 100644 index 000000000..23a9011c0 Binary files /dev/null and b/fonts/MiniwiFont/2225.png differ diff --git a/fonts/MiniwiFont/2226.png b/fonts/MiniwiFont/2226.png new file mode 100644 index 000000000..e5a698901 Binary files /dev/null and b/fonts/MiniwiFont/2226.png differ diff --git a/fonts/MiniwiFont/2227.png b/fonts/MiniwiFont/2227.png new file mode 100644 index 000000000..73256258e Binary files /dev/null and b/fonts/MiniwiFont/2227.png differ diff --git a/fonts/MiniwiFont/2228.png b/fonts/MiniwiFont/2228.png new file mode 100644 index 000000000..541eee32d Binary files /dev/null and b/fonts/MiniwiFont/2228.png differ diff --git a/fonts/MiniwiFont/2229.png b/fonts/MiniwiFont/2229.png new file mode 100644 index 000000000..c549dd6d0 Binary files /dev/null and b/fonts/MiniwiFont/2229.png differ diff --git a/fonts/MiniwiFont/222A.png b/fonts/MiniwiFont/222A.png new file mode 100644 index 000000000..b63dcea38 Binary files /dev/null and b/fonts/MiniwiFont/222A.png differ diff --git a/fonts/MiniwiFont/222B.png b/fonts/MiniwiFont/222B.png new file mode 100644 index 000000000..9122f3639 Binary files /dev/null and b/fonts/MiniwiFont/222B.png differ diff --git a/fonts/MiniwiFont/222C.png b/fonts/MiniwiFont/222C.png new file mode 100644 index 000000000..90e5bf196 Binary files /dev/null and b/fonts/MiniwiFont/222C.png differ diff --git a/fonts/MiniwiFont/222D.png b/fonts/MiniwiFont/222D.png new file mode 100644 index 000000000..cd777b8e6 Binary files /dev/null and b/fonts/MiniwiFont/222D.png differ diff --git a/fonts/MiniwiFont/222E.png b/fonts/MiniwiFont/222E.png new file mode 100644 index 000000000..3754164eb Binary files /dev/null and b/fonts/MiniwiFont/222E.png differ diff --git a/fonts/MiniwiFont/222F.png b/fonts/MiniwiFont/222F.png new file mode 100644 index 000000000..05fbc7ea3 Binary files /dev/null and b/fonts/MiniwiFont/222F.png differ diff --git a/fonts/MiniwiFont/2230.png b/fonts/MiniwiFont/2230.png new file mode 100644 index 000000000..1817937cc Binary files /dev/null and b/fonts/MiniwiFont/2230.png differ diff --git a/fonts/MiniwiFont/2231.png b/fonts/MiniwiFont/2231.png new file mode 100644 index 000000000..37b7a13d8 Binary files /dev/null and b/fonts/MiniwiFont/2231.png differ diff --git a/fonts/MiniwiFont/2232.png b/fonts/MiniwiFont/2232.png new file mode 100644 index 000000000..85e02f955 Binary files /dev/null and b/fonts/MiniwiFont/2232.png differ diff --git a/fonts/MiniwiFont/2233.png b/fonts/MiniwiFont/2233.png new file mode 100644 index 000000000..4c44fe8ad Binary files /dev/null and b/fonts/MiniwiFont/2233.png differ diff --git a/fonts/MiniwiFont/2234.png b/fonts/MiniwiFont/2234.png new file mode 100644 index 000000000..a9bb6dcc8 Binary files /dev/null and b/fonts/MiniwiFont/2234.png differ diff --git a/fonts/MiniwiFont/2235.png b/fonts/MiniwiFont/2235.png new file mode 100644 index 000000000..e0026cb0d Binary files /dev/null and b/fonts/MiniwiFont/2235.png differ diff --git a/fonts/MiniwiFont/2236.png b/fonts/MiniwiFont/2236.png new file mode 100644 index 000000000..698bddd8e Binary files /dev/null and b/fonts/MiniwiFont/2236.png differ diff --git a/fonts/MiniwiFont/2237.png b/fonts/MiniwiFont/2237.png new file mode 100644 index 000000000..cd2ac0a3b Binary files /dev/null and b/fonts/MiniwiFont/2237.png differ diff --git a/fonts/MiniwiFont/2238.png b/fonts/MiniwiFont/2238.png new file mode 100644 index 000000000..55f41bc35 Binary files /dev/null and b/fonts/MiniwiFont/2238.png differ diff --git a/fonts/MiniwiFont/2239.png b/fonts/MiniwiFont/2239.png new file mode 100644 index 000000000..6f52ae39d Binary files /dev/null and b/fonts/MiniwiFont/2239.png differ diff --git a/fonts/MiniwiFont/223A.png b/fonts/MiniwiFont/223A.png new file mode 100644 index 000000000..a49fa1ed8 Binary files /dev/null and b/fonts/MiniwiFont/223A.png differ diff --git a/fonts/MiniwiFont/223B.png b/fonts/MiniwiFont/223B.png new file mode 100644 index 000000000..e543d24d3 Binary files /dev/null and b/fonts/MiniwiFont/223B.png differ diff --git a/fonts/MiniwiFont/223C.png b/fonts/MiniwiFont/223C.png new file mode 100644 index 000000000..d94ff6ee4 Binary files /dev/null and b/fonts/MiniwiFont/223C.png differ diff --git a/fonts/MiniwiFont/223D.png b/fonts/MiniwiFont/223D.png new file mode 100644 index 000000000..71701670d Binary files /dev/null and b/fonts/MiniwiFont/223D.png differ diff --git a/fonts/MiniwiFont/223E.png b/fonts/MiniwiFont/223E.png new file mode 100644 index 000000000..6a3fee0e8 Binary files /dev/null and b/fonts/MiniwiFont/223E.png differ diff --git a/fonts/MiniwiFont/223F.png b/fonts/MiniwiFont/223F.png new file mode 100644 index 000000000..6d538a490 Binary files /dev/null and b/fonts/MiniwiFont/223F.png differ diff --git a/fonts/MiniwiFont/2240.png b/fonts/MiniwiFont/2240.png new file mode 100644 index 000000000..30015df17 Binary files /dev/null and b/fonts/MiniwiFont/2240.png differ diff --git a/fonts/MiniwiFont/2241.png b/fonts/MiniwiFont/2241.png new file mode 100644 index 000000000..e4f8d0fb3 Binary files /dev/null and b/fonts/MiniwiFont/2241.png differ diff --git a/fonts/MiniwiFont/2242.png b/fonts/MiniwiFont/2242.png new file mode 100644 index 000000000..77947dba9 Binary files /dev/null and b/fonts/MiniwiFont/2242.png differ diff --git a/fonts/MiniwiFont/2243.png b/fonts/MiniwiFont/2243.png new file mode 100644 index 000000000..289173fcf Binary files /dev/null and b/fonts/MiniwiFont/2243.png differ diff --git a/fonts/MiniwiFont/2244.png b/fonts/MiniwiFont/2244.png new file mode 100644 index 000000000..cb11d887a Binary files /dev/null and b/fonts/MiniwiFont/2244.png differ diff --git a/fonts/MiniwiFont/2245.png b/fonts/MiniwiFont/2245.png new file mode 100644 index 000000000..1a7496a33 Binary files /dev/null and b/fonts/MiniwiFont/2245.png differ diff --git a/fonts/MiniwiFont/2246.png b/fonts/MiniwiFont/2246.png new file mode 100644 index 000000000..1959cd65e Binary files /dev/null and b/fonts/MiniwiFont/2246.png differ diff --git a/fonts/MiniwiFont/2247.png b/fonts/MiniwiFont/2247.png new file mode 100644 index 000000000..89ac17f89 Binary files /dev/null and b/fonts/MiniwiFont/2247.png differ diff --git a/fonts/MiniwiFont/2248.png b/fonts/MiniwiFont/2248.png new file mode 100644 index 000000000..a09720e55 Binary files /dev/null and b/fonts/MiniwiFont/2248.png differ diff --git a/fonts/MiniwiFont/2249.png b/fonts/MiniwiFont/2249.png new file mode 100644 index 000000000..bf2cdd351 Binary files /dev/null and b/fonts/MiniwiFont/2249.png differ diff --git a/fonts/MiniwiFont/224A.png b/fonts/MiniwiFont/224A.png new file mode 100644 index 000000000..297091957 Binary files /dev/null and b/fonts/MiniwiFont/224A.png differ diff --git a/fonts/MiniwiFont/224B.png b/fonts/MiniwiFont/224B.png new file mode 100644 index 000000000..470427c5a Binary files /dev/null and b/fonts/MiniwiFont/224B.png differ diff --git a/fonts/MiniwiFont/224C.png b/fonts/MiniwiFont/224C.png new file mode 100644 index 000000000..1a7496a33 Binary files /dev/null and b/fonts/MiniwiFont/224C.png differ diff --git a/fonts/MiniwiFont/224D.png b/fonts/MiniwiFont/224D.png new file mode 100644 index 000000000..bc34c370a Binary files /dev/null and b/fonts/MiniwiFont/224D.png differ diff --git a/fonts/MiniwiFont/224E.png b/fonts/MiniwiFont/224E.png new file mode 100644 index 000000000..ab6ff2009 Binary files /dev/null and b/fonts/MiniwiFont/224E.png differ diff --git a/fonts/MiniwiFont/224F.png b/fonts/MiniwiFont/224F.png new file mode 100644 index 000000000..dbc710ff6 Binary files /dev/null and b/fonts/MiniwiFont/224F.png differ diff --git a/fonts/MiniwiFont/2250.png b/fonts/MiniwiFont/2250.png new file mode 100644 index 000000000..b0eaa56e8 Binary files /dev/null and b/fonts/MiniwiFont/2250.png differ diff --git a/fonts/MiniwiFont/2251.png b/fonts/MiniwiFont/2251.png new file mode 100644 index 000000000..ee3ea9bb7 Binary files /dev/null and b/fonts/MiniwiFont/2251.png differ diff --git a/fonts/MiniwiFont/2252.png b/fonts/MiniwiFont/2252.png new file mode 100644 index 000000000..2a805f804 Binary files /dev/null and b/fonts/MiniwiFont/2252.png differ diff --git a/fonts/MiniwiFont/2253.png b/fonts/MiniwiFont/2253.png new file mode 100644 index 000000000..0f2dffcc3 Binary files /dev/null and b/fonts/MiniwiFont/2253.png differ diff --git a/fonts/MiniwiFont/2254.png b/fonts/MiniwiFont/2254.png new file mode 100644 index 000000000..ed63ae556 Binary files /dev/null and b/fonts/MiniwiFont/2254.png differ diff --git a/fonts/MiniwiFont/2255.png b/fonts/MiniwiFont/2255.png new file mode 100644 index 000000000..7deeb10b2 Binary files /dev/null and b/fonts/MiniwiFont/2255.png differ diff --git a/fonts/MiniwiFont/2256.png b/fonts/MiniwiFont/2256.png new file mode 100644 index 000000000..f9c6c9e36 Binary files /dev/null and b/fonts/MiniwiFont/2256.png differ diff --git a/fonts/MiniwiFont/2257.png b/fonts/MiniwiFont/2257.png new file mode 100644 index 000000000..baa44c4bc Binary files /dev/null and b/fonts/MiniwiFont/2257.png differ diff --git a/fonts/MiniwiFont/2258.png b/fonts/MiniwiFont/2258.png new file mode 100644 index 000000000..2c9368336 Binary files /dev/null and b/fonts/MiniwiFont/2258.png differ diff --git a/fonts/MiniwiFont/2259.png b/fonts/MiniwiFont/2259.png new file mode 100644 index 000000000..fb09085aa Binary files /dev/null and b/fonts/MiniwiFont/2259.png differ diff --git a/fonts/MiniwiFont/225A.png b/fonts/MiniwiFont/225A.png new file mode 100644 index 000000000..729eac611 Binary files /dev/null and b/fonts/MiniwiFont/225A.png differ diff --git a/fonts/MiniwiFont/225B.png b/fonts/MiniwiFont/225B.png new file mode 100644 index 000000000..1b761a0c6 Binary files /dev/null and b/fonts/MiniwiFont/225B.png differ diff --git a/fonts/MiniwiFont/225C.png b/fonts/MiniwiFont/225C.png new file mode 100644 index 000000000..7c3b06585 Binary files /dev/null and b/fonts/MiniwiFont/225C.png differ diff --git a/fonts/MiniwiFont/225D.png b/fonts/MiniwiFont/225D.png new file mode 100644 index 000000000..9e14a69bb Binary files /dev/null and b/fonts/MiniwiFont/225D.png differ diff --git a/fonts/MiniwiFont/225E.png b/fonts/MiniwiFont/225E.png new file mode 100644 index 000000000..c63e2f550 Binary files /dev/null and b/fonts/MiniwiFont/225E.png differ diff --git a/fonts/MiniwiFont/225F.png b/fonts/MiniwiFont/225F.png new file mode 100644 index 000000000..b829c512a Binary files /dev/null and b/fonts/MiniwiFont/225F.png differ diff --git a/fonts/MiniwiFont/2260.png b/fonts/MiniwiFont/2260.png new file mode 100644 index 000000000..9d69f0972 Binary files /dev/null and b/fonts/MiniwiFont/2260.png differ diff --git a/fonts/MiniwiFont/2261.png b/fonts/MiniwiFont/2261.png new file mode 100644 index 000000000..ee59dd338 Binary files /dev/null and b/fonts/MiniwiFont/2261.png differ diff --git a/fonts/MiniwiFont/2262.png b/fonts/MiniwiFont/2262.png new file mode 100644 index 000000000..8fdbfcf5e Binary files /dev/null and b/fonts/MiniwiFont/2262.png differ diff --git a/fonts/MiniwiFont/2263.png b/fonts/MiniwiFont/2263.png new file mode 100644 index 000000000..fe5274bfc Binary files /dev/null and b/fonts/MiniwiFont/2263.png differ diff --git a/fonts/MiniwiFont/2264.png b/fonts/MiniwiFont/2264.png new file mode 100644 index 000000000..3f717912c Binary files /dev/null and b/fonts/MiniwiFont/2264.png differ diff --git a/fonts/MiniwiFont/2265.png b/fonts/MiniwiFont/2265.png new file mode 100644 index 000000000..e55008b09 Binary files /dev/null and b/fonts/MiniwiFont/2265.png differ diff --git a/fonts/MiniwiFont/2266.png b/fonts/MiniwiFont/2266.png new file mode 100644 index 000000000..2107320fd Binary files /dev/null and b/fonts/MiniwiFont/2266.png differ diff --git a/fonts/MiniwiFont/2267.png b/fonts/MiniwiFont/2267.png new file mode 100644 index 000000000..3fd0f7474 Binary files /dev/null and b/fonts/MiniwiFont/2267.png differ diff --git a/fonts/MiniwiFont/2268.png b/fonts/MiniwiFont/2268.png new file mode 100644 index 000000000..bf257e729 Binary files /dev/null and b/fonts/MiniwiFont/2268.png differ diff --git a/fonts/MiniwiFont/2269.png b/fonts/MiniwiFont/2269.png new file mode 100644 index 000000000..ad75c189f Binary files /dev/null and b/fonts/MiniwiFont/2269.png differ diff --git a/fonts/MiniwiFont/226A.png b/fonts/MiniwiFont/226A.png new file mode 100644 index 000000000..98e107d0e Binary files /dev/null and b/fonts/MiniwiFont/226A.png differ diff --git a/fonts/MiniwiFont/226B.png b/fonts/MiniwiFont/226B.png new file mode 100644 index 000000000..64c131ebe Binary files /dev/null and b/fonts/MiniwiFont/226B.png differ diff --git a/fonts/MiniwiFont/2282.png b/fonts/MiniwiFont/2282.png new file mode 100644 index 000000000..0e636acd2 Binary files /dev/null and b/fonts/MiniwiFont/2282.png differ diff --git a/fonts/MiniwiFont/2283.png b/fonts/MiniwiFont/2283.png new file mode 100644 index 000000000..2d1e10164 Binary files /dev/null and b/fonts/MiniwiFont/2283.png differ diff --git a/fonts/MiniwiFont/2284.png b/fonts/MiniwiFont/2284.png new file mode 100644 index 000000000..6fbb95fbb Binary files /dev/null and b/fonts/MiniwiFont/2284.png differ diff --git a/fonts/MiniwiFont/2286.png b/fonts/MiniwiFont/2286.png new file mode 100644 index 000000000..d183b3082 Binary files /dev/null and b/fonts/MiniwiFont/2286.png differ diff --git a/fonts/MiniwiFont/2287.png b/fonts/MiniwiFont/2287.png new file mode 100644 index 000000000..34c04f6cd Binary files /dev/null and b/fonts/MiniwiFont/2287.png differ diff --git a/fonts/MiniwiFont/2295.png b/fonts/MiniwiFont/2295.png new file mode 100644 index 000000000..b94880366 Binary files /dev/null and b/fonts/MiniwiFont/2295.png differ diff --git a/fonts/MiniwiFont/2297.png b/fonts/MiniwiFont/2297.png new file mode 100644 index 000000000..60f74370d Binary files /dev/null and b/fonts/MiniwiFont/2297.png differ diff --git a/fonts/MiniwiFont/22A5.png b/fonts/MiniwiFont/22A5.png new file mode 100644 index 000000000..a8a23c74f Binary files /dev/null and b/fonts/MiniwiFont/22A5.png differ diff --git a/fonts/MiniwiFont/22C4.png b/fonts/MiniwiFont/22C4.png new file mode 100644 index 000000000..83207dfe9 Binary files /dev/null and b/fonts/MiniwiFont/22C4.png differ diff --git a/fonts/MiniwiFont/22C5.png b/fonts/MiniwiFont/22C5.png new file mode 100644 index 000000000..c79af58ea Binary files /dev/null and b/fonts/MiniwiFont/22C5.png differ diff --git a/fonts/MiniwiFont/2320.png b/fonts/MiniwiFont/2320.png new file mode 100644 index 000000000..2985ff642 Binary files /dev/null and b/fonts/MiniwiFont/2320.png differ diff --git a/fonts/MiniwiFont/2321.png b/fonts/MiniwiFont/2321.png new file mode 100644 index 000000000..5c48e8b25 Binary files /dev/null and b/fonts/MiniwiFont/2321.png differ diff --git a/fonts/MiniwiFont/2329.png b/fonts/MiniwiFont/2329.png new file mode 100644 index 000000000..aa9f436a9 Binary files /dev/null and b/fonts/MiniwiFont/2329.png differ diff --git a/fonts/MiniwiFont/232A.png b/fonts/MiniwiFont/232A.png new file mode 100644 index 000000000..59b6beb0a Binary files /dev/null and b/fonts/MiniwiFont/232A.png differ diff --git a/fonts/MiniwiFont/2460.png b/fonts/MiniwiFont/2460.png new file mode 100644 index 000000000..86ac73bdf Binary files /dev/null and b/fonts/MiniwiFont/2460.png differ diff --git a/fonts/MiniwiFont/2461.png b/fonts/MiniwiFont/2461.png new file mode 100644 index 000000000..e07262418 Binary files /dev/null and b/fonts/MiniwiFont/2461.png differ diff --git a/fonts/MiniwiFont/2462.png b/fonts/MiniwiFont/2462.png new file mode 100644 index 000000000..571d1608f Binary files /dev/null and b/fonts/MiniwiFont/2462.png differ diff --git a/fonts/MiniwiFont/2463.png b/fonts/MiniwiFont/2463.png new file mode 100644 index 000000000..402fae631 Binary files /dev/null and b/fonts/MiniwiFont/2463.png differ diff --git a/fonts/MiniwiFont/2464.png b/fonts/MiniwiFont/2464.png new file mode 100644 index 000000000..af08c295a Binary files /dev/null and b/fonts/MiniwiFont/2464.png differ diff --git a/fonts/MiniwiFont/2465.png b/fonts/MiniwiFont/2465.png new file mode 100644 index 000000000..ed2bf4ef9 Binary files /dev/null and b/fonts/MiniwiFont/2465.png differ diff --git a/fonts/MiniwiFont/2466.png b/fonts/MiniwiFont/2466.png new file mode 100644 index 000000000..d9a1d9797 Binary files /dev/null and b/fonts/MiniwiFont/2466.png differ diff --git a/fonts/MiniwiFont/2467.png b/fonts/MiniwiFont/2467.png new file mode 100644 index 000000000..402e75c7d Binary files /dev/null and b/fonts/MiniwiFont/2467.png differ diff --git a/fonts/MiniwiFont/2468.png b/fonts/MiniwiFont/2468.png new file mode 100644 index 000000000..9b837208a Binary files /dev/null and b/fonts/MiniwiFont/2468.png differ diff --git a/fonts/MiniwiFont/2469.png b/fonts/MiniwiFont/2469.png new file mode 100644 index 000000000..f4e7537e3 Binary files /dev/null and b/fonts/MiniwiFont/2469.png differ diff --git a/fonts/MiniwiFont/246A.png b/fonts/MiniwiFont/246A.png new file mode 100644 index 000000000..fe0b10489 Binary files /dev/null and b/fonts/MiniwiFont/246A.png differ diff --git a/fonts/MiniwiFont/246B.png b/fonts/MiniwiFont/246B.png new file mode 100644 index 000000000..d64004890 Binary files /dev/null and b/fonts/MiniwiFont/246B.png differ diff --git a/fonts/MiniwiFont/246C.png b/fonts/MiniwiFont/246C.png new file mode 100644 index 000000000..a79f4f49d Binary files /dev/null and b/fonts/MiniwiFont/246C.png differ diff --git a/fonts/MiniwiFont/246D.png b/fonts/MiniwiFont/246D.png new file mode 100644 index 000000000..435d8c1da Binary files /dev/null and b/fonts/MiniwiFont/246D.png differ diff --git a/fonts/MiniwiFont/246E.png b/fonts/MiniwiFont/246E.png new file mode 100644 index 000000000..b921890cb Binary files /dev/null and b/fonts/MiniwiFont/246E.png differ diff --git a/fonts/MiniwiFont/246F.png b/fonts/MiniwiFont/246F.png new file mode 100644 index 000000000..c4c6ec2d8 Binary files /dev/null and b/fonts/MiniwiFont/246F.png differ diff --git a/fonts/MiniwiFont/2470.png b/fonts/MiniwiFont/2470.png new file mode 100644 index 000000000..dc638c658 Binary files /dev/null and b/fonts/MiniwiFont/2470.png differ diff --git a/fonts/MiniwiFont/2471.png b/fonts/MiniwiFont/2471.png new file mode 100644 index 000000000..3552a4d23 Binary files /dev/null and b/fonts/MiniwiFont/2471.png differ diff --git a/fonts/MiniwiFont/2472.png b/fonts/MiniwiFont/2472.png new file mode 100644 index 000000000..4c42eda40 Binary files /dev/null and b/fonts/MiniwiFont/2472.png differ diff --git a/fonts/MiniwiFont/2473.png b/fonts/MiniwiFont/2473.png new file mode 100644 index 000000000..3d6446604 Binary files /dev/null and b/fonts/MiniwiFont/2473.png differ diff --git a/fonts/MiniwiFont/2474.png b/fonts/MiniwiFont/2474.png new file mode 100644 index 000000000..249e9efe1 Binary files /dev/null and b/fonts/MiniwiFont/2474.png differ diff --git a/fonts/MiniwiFont/2475.png b/fonts/MiniwiFont/2475.png new file mode 100644 index 000000000..738554e7b Binary files /dev/null and b/fonts/MiniwiFont/2475.png differ diff --git a/fonts/MiniwiFont/2476.png b/fonts/MiniwiFont/2476.png new file mode 100644 index 000000000..417415d8c Binary files /dev/null and b/fonts/MiniwiFont/2476.png differ diff --git a/fonts/MiniwiFont/2477.png b/fonts/MiniwiFont/2477.png new file mode 100644 index 000000000..9a13cc441 Binary files /dev/null and b/fonts/MiniwiFont/2477.png differ diff --git a/fonts/MiniwiFont/2478.png b/fonts/MiniwiFont/2478.png new file mode 100644 index 000000000..a749a1b17 Binary files /dev/null and b/fonts/MiniwiFont/2478.png differ diff --git a/fonts/MiniwiFont/2479.png b/fonts/MiniwiFont/2479.png new file mode 100644 index 000000000..82e324040 Binary files /dev/null and b/fonts/MiniwiFont/2479.png differ diff --git a/fonts/MiniwiFont/247A.png b/fonts/MiniwiFont/247A.png new file mode 100644 index 000000000..d5f13e2f8 Binary files /dev/null and b/fonts/MiniwiFont/247A.png differ diff --git a/fonts/MiniwiFont/247B.png b/fonts/MiniwiFont/247B.png new file mode 100644 index 000000000..605acac1d Binary files /dev/null and b/fonts/MiniwiFont/247B.png differ diff --git a/fonts/MiniwiFont/247C.png b/fonts/MiniwiFont/247C.png new file mode 100644 index 000000000..be3953865 Binary files /dev/null and b/fonts/MiniwiFont/247C.png differ diff --git a/fonts/MiniwiFont/247D.png b/fonts/MiniwiFont/247D.png new file mode 100644 index 000000000..3d0ddabe4 Binary files /dev/null and b/fonts/MiniwiFont/247D.png differ diff --git a/fonts/MiniwiFont/247E.png b/fonts/MiniwiFont/247E.png new file mode 100644 index 000000000..3b3e12826 Binary files /dev/null and b/fonts/MiniwiFont/247E.png differ diff --git a/fonts/MiniwiFont/247F.png b/fonts/MiniwiFont/247F.png new file mode 100644 index 000000000..4b883960e Binary files /dev/null and b/fonts/MiniwiFont/247F.png differ diff --git a/fonts/MiniwiFont/2480.png b/fonts/MiniwiFont/2480.png new file mode 100644 index 000000000..2deee355f Binary files /dev/null and b/fonts/MiniwiFont/2480.png differ diff --git a/fonts/MiniwiFont/2481.png b/fonts/MiniwiFont/2481.png new file mode 100644 index 000000000..39fb3f922 Binary files /dev/null and b/fonts/MiniwiFont/2481.png differ diff --git a/fonts/MiniwiFont/2482.png b/fonts/MiniwiFont/2482.png new file mode 100644 index 000000000..aa3a60b12 Binary files /dev/null and b/fonts/MiniwiFont/2482.png differ diff --git a/fonts/MiniwiFont/2483.png b/fonts/MiniwiFont/2483.png new file mode 100644 index 000000000..47812e729 Binary files /dev/null and b/fonts/MiniwiFont/2483.png differ diff --git a/fonts/MiniwiFont/2484.png b/fonts/MiniwiFont/2484.png new file mode 100644 index 000000000..b4c673346 Binary files /dev/null and b/fonts/MiniwiFont/2484.png differ diff --git a/fonts/MiniwiFont/2485.png b/fonts/MiniwiFont/2485.png new file mode 100644 index 000000000..3e11020ff Binary files /dev/null and b/fonts/MiniwiFont/2485.png differ diff --git a/fonts/MiniwiFont/2486.png b/fonts/MiniwiFont/2486.png new file mode 100644 index 000000000..b56ff7f27 Binary files /dev/null and b/fonts/MiniwiFont/2486.png differ diff --git a/fonts/MiniwiFont/2487.png b/fonts/MiniwiFont/2487.png new file mode 100644 index 000000000..1bd5a924d Binary files /dev/null and b/fonts/MiniwiFont/2487.png differ diff --git a/fonts/MiniwiFont/2488.png b/fonts/MiniwiFont/2488.png new file mode 100644 index 000000000..740ff444f Binary files /dev/null and b/fonts/MiniwiFont/2488.png differ diff --git a/fonts/MiniwiFont/2489.png b/fonts/MiniwiFont/2489.png new file mode 100644 index 000000000..b7e9f722e Binary files /dev/null and b/fonts/MiniwiFont/2489.png differ diff --git a/fonts/MiniwiFont/248A.png b/fonts/MiniwiFont/248A.png new file mode 100644 index 000000000..f6cb83475 Binary files /dev/null and b/fonts/MiniwiFont/248A.png differ diff --git a/fonts/MiniwiFont/248B.png b/fonts/MiniwiFont/248B.png new file mode 100644 index 000000000..cfbbee5ba Binary files /dev/null and b/fonts/MiniwiFont/248B.png differ diff --git a/fonts/MiniwiFont/248C.png b/fonts/MiniwiFont/248C.png new file mode 100644 index 000000000..f5b85e502 Binary files /dev/null and b/fonts/MiniwiFont/248C.png differ diff --git a/fonts/MiniwiFont/248D.png b/fonts/MiniwiFont/248D.png new file mode 100644 index 000000000..6dd441643 Binary files /dev/null and b/fonts/MiniwiFont/248D.png differ diff --git a/fonts/MiniwiFont/248E.png b/fonts/MiniwiFont/248E.png new file mode 100644 index 000000000..d51be8246 Binary files /dev/null and b/fonts/MiniwiFont/248E.png differ diff --git a/fonts/MiniwiFont/248F.png b/fonts/MiniwiFont/248F.png new file mode 100644 index 000000000..1ad1e8819 Binary files /dev/null and b/fonts/MiniwiFont/248F.png differ diff --git a/fonts/MiniwiFont/2490.png b/fonts/MiniwiFont/2490.png new file mode 100644 index 000000000..16de00b1f Binary files /dev/null and b/fonts/MiniwiFont/2490.png differ diff --git a/fonts/MiniwiFont/2491.png b/fonts/MiniwiFont/2491.png new file mode 100644 index 000000000..6da9aa308 Binary files /dev/null and b/fonts/MiniwiFont/2491.png differ diff --git a/fonts/MiniwiFont/2492.png b/fonts/MiniwiFont/2492.png new file mode 100644 index 000000000..3ea954051 Binary files /dev/null and b/fonts/MiniwiFont/2492.png differ diff --git a/fonts/MiniwiFont/2493.png b/fonts/MiniwiFont/2493.png new file mode 100644 index 000000000..1213fc494 Binary files /dev/null and b/fonts/MiniwiFont/2493.png differ diff --git a/fonts/MiniwiFont/2494.png b/fonts/MiniwiFont/2494.png new file mode 100644 index 000000000..de07d7ab5 Binary files /dev/null and b/fonts/MiniwiFont/2494.png differ diff --git a/fonts/MiniwiFont/2495.png b/fonts/MiniwiFont/2495.png new file mode 100644 index 000000000..b08aa856c Binary files /dev/null and b/fonts/MiniwiFont/2495.png differ diff --git a/fonts/MiniwiFont/2496.png b/fonts/MiniwiFont/2496.png new file mode 100644 index 000000000..def416c76 Binary files /dev/null and b/fonts/MiniwiFont/2496.png differ diff --git a/fonts/MiniwiFont/2497.png b/fonts/MiniwiFont/2497.png new file mode 100644 index 000000000..e05c633cd Binary files /dev/null and b/fonts/MiniwiFont/2497.png differ diff --git a/fonts/MiniwiFont/2498.png b/fonts/MiniwiFont/2498.png new file mode 100644 index 000000000..85c8b0fc9 Binary files /dev/null and b/fonts/MiniwiFont/2498.png differ diff --git a/fonts/MiniwiFont/2499.png b/fonts/MiniwiFont/2499.png new file mode 100644 index 000000000..831ce2f8f Binary files /dev/null and b/fonts/MiniwiFont/2499.png differ diff --git a/fonts/MiniwiFont/249A.png b/fonts/MiniwiFont/249A.png new file mode 100644 index 000000000..1d7aed516 Binary files /dev/null and b/fonts/MiniwiFont/249A.png differ diff --git a/fonts/MiniwiFont/249B.png b/fonts/MiniwiFont/249B.png new file mode 100644 index 000000000..84ed7acba Binary files /dev/null and b/fonts/MiniwiFont/249B.png differ diff --git a/fonts/MiniwiFont/249C.png b/fonts/MiniwiFont/249C.png new file mode 100644 index 000000000..e207c7c8f Binary files /dev/null and b/fonts/MiniwiFont/249C.png differ diff --git a/fonts/MiniwiFont/249D.png b/fonts/MiniwiFont/249D.png new file mode 100644 index 000000000..478e8080d Binary files /dev/null and b/fonts/MiniwiFont/249D.png differ diff --git a/fonts/MiniwiFont/249E.png b/fonts/MiniwiFont/249E.png new file mode 100644 index 000000000..8d70b668d Binary files /dev/null and b/fonts/MiniwiFont/249E.png differ diff --git a/fonts/MiniwiFont/249F.png b/fonts/MiniwiFont/249F.png new file mode 100644 index 000000000..4f77d9a4a Binary files /dev/null and b/fonts/MiniwiFont/249F.png differ diff --git a/fonts/MiniwiFont/24A0.png b/fonts/MiniwiFont/24A0.png new file mode 100644 index 000000000..937975b32 Binary files /dev/null and b/fonts/MiniwiFont/24A0.png differ diff --git a/fonts/MiniwiFont/24A1.png b/fonts/MiniwiFont/24A1.png new file mode 100644 index 000000000..ad5e4672b Binary files /dev/null and b/fonts/MiniwiFont/24A1.png differ diff --git a/fonts/MiniwiFont/24A2.png b/fonts/MiniwiFont/24A2.png new file mode 100644 index 000000000..583401dfe Binary files /dev/null and b/fonts/MiniwiFont/24A2.png differ diff --git a/fonts/MiniwiFont/24A3.png b/fonts/MiniwiFont/24A3.png new file mode 100644 index 000000000..5fb5bb477 Binary files /dev/null and b/fonts/MiniwiFont/24A3.png differ diff --git a/fonts/MiniwiFont/24A4.png b/fonts/MiniwiFont/24A4.png new file mode 100644 index 000000000..f0227a66d Binary files /dev/null and b/fonts/MiniwiFont/24A4.png differ diff --git a/fonts/MiniwiFont/24A5.png b/fonts/MiniwiFont/24A5.png new file mode 100644 index 000000000..24a3ab01c Binary files /dev/null and b/fonts/MiniwiFont/24A5.png differ diff --git a/fonts/MiniwiFont/24A6.png b/fonts/MiniwiFont/24A6.png new file mode 100644 index 000000000..5e929261e Binary files /dev/null and b/fonts/MiniwiFont/24A6.png differ diff --git a/fonts/MiniwiFont/24A7.png b/fonts/MiniwiFont/24A7.png new file mode 100644 index 000000000..9f5c3cc7b Binary files /dev/null and b/fonts/MiniwiFont/24A7.png differ diff --git a/fonts/MiniwiFont/24A8.png b/fonts/MiniwiFont/24A8.png new file mode 100644 index 000000000..50349dd2b Binary files /dev/null and b/fonts/MiniwiFont/24A8.png differ diff --git a/fonts/MiniwiFont/24A9.png b/fonts/MiniwiFont/24A9.png new file mode 100644 index 000000000..f7d953123 Binary files /dev/null and b/fonts/MiniwiFont/24A9.png differ diff --git a/fonts/MiniwiFont/24AA.png b/fonts/MiniwiFont/24AA.png new file mode 100644 index 000000000..4899f3103 Binary files /dev/null and b/fonts/MiniwiFont/24AA.png differ diff --git a/fonts/MiniwiFont/24AB.png b/fonts/MiniwiFont/24AB.png new file mode 100644 index 000000000..58b31aa6f Binary files /dev/null and b/fonts/MiniwiFont/24AB.png differ diff --git a/fonts/MiniwiFont/24AC.png b/fonts/MiniwiFont/24AC.png new file mode 100644 index 000000000..3aaf9fdc4 Binary files /dev/null and b/fonts/MiniwiFont/24AC.png differ diff --git a/fonts/MiniwiFont/24AD.png b/fonts/MiniwiFont/24AD.png new file mode 100644 index 000000000..41eb9ae82 Binary files /dev/null and b/fonts/MiniwiFont/24AD.png differ diff --git a/fonts/MiniwiFont/24AE.png b/fonts/MiniwiFont/24AE.png new file mode 100644 index 000000000..a09e2eac2 Binary files /dev/null and b/fonts/MiniwiFont/24AE.png differ diff --git a/fonts/MiniwiFont/24AF.png b/fonts/MiniwiFont/24AF.png new file mode 100644 index 000000000..1ea5abe14 Binary files /dev/null and b/fonts/MiniwiFont/24AF.png differ diff --git a/fonts/MiniwiFont/24B0.png b/fonts/MiniwiFont/24B0.png new file mode 100644 index 000000000..556158f4e Binary files /dev/null and b/fonts/MiniwiFont/24B0.png differ diff --git a/fonts/MiniwiFont/24B1.png b/fonts/MiniwiFont/24B1.png new file mode 100644 index 000000000..9226e8867 Binary files /dev/null and b/fonts/MiniwiFont/24B1.png differ diff --git a/fonts/MiniwiFont/24B2.png b/fonts/MiniwiFont/24B2.png new file mode 100644 index 000000000..7afae92c0 Binary files /dev/null and b/fonts/MiniwiFont/24B2.png differ diff --git a/fonts/MiniwiFont/24B3.png b/fonts/MiniwiFont/24B3.png new file mode 100644 index 000000000..dd986f998 Binary files /dev/null and b/fonts/MiniwiFont/24B3.png differ diff --git a/fonts/MiniwiFont/24B4.png b/fonts/MiniwiFont/24B4.png new file mode 100644 index 000000000..a30e16e30 Binary files /dev/null and b/fonts/MiniwiFont/24B4.png differ diff --git a/fonts/MiniwiFont/24B5.png b/fonts/MiniwiFont/24B5.png new file mode 100644 index 000000000..17fb70940 Binary files /dev/null and b/fonts/MiniwiFont/24B5.png differ diff --git a/fonts/MiniwiFont/24B6.png b/fonts/MiniwiFont/24B6.png new file mode 100644 index 000000000..714b6db9d Binary files /dev/null and b/fonts/MiniwiFont/24B6.png differ diff --git a/fonts/MiniwiFont/24B7.png b/fonts/MiniwiFont/24B7.png new file mode 100644 index 000000000..836fdc9e4 Binary files /dev/null and b/fonts/MiniwiFont/24B7.png differ diff --git a/fonts/MiniwiFont/24B8.png b/fonts/MiniwiFont/24B8.png new file mode 100644 index 000000000..fd3438dfe Binary files /dev/null and b/fonts/MiniwiFont/24B8.png differ diff --git a/fonts/MiniwiFont/24B9.png b/fonts/MiniwiFont/24B9.png new file mode 100644 index 000000000..63a92b79e Binary files /dev/null and b/fonts/MiniwiFont/24B9.png differ diff --git a/fonts/MiniwiFont/24BA.png b/fonts/MiniwiFont/24BA.png new file mode 100644 index 000000000..1c8c467dd Binary files /dev/null and b/fonts/MiniwiFont/24BA.png differ diff --git a/fonts/MiniwiFont/24BB.png b/fonts/MiniwiFont/24BB.png new file mode 100644 index 000000000..c4720ad07 Binary files /dev/null and b/fonts/MiniwiFont/24BB.png differ diff --git a/fonts/MiniwiFont/24BC.png b/fonts/MiniwiFont/24BC.png new file mode 100644 index 000000000..ba1a06e6c Binary files /dev/null and b/fonts/MiniwiFont/24BC.png differ diff --git a/fonts/MiniwiFont/24BD.png b/fonts/MiniwiFont/24BD.png new file mode 100644 index 000000000..aa20021f0 Binary files /dev/null and b/fonts/MiniwiFont/24BD.png differ diff --git a/fonts/MiniwiFont/24BE.png b/fonts/MiniwiFont/24BE.png new file mode 100644 index 000000000..c98f71a94 Binary files /dev/null and b/fonts/MiniwiFont/24BE.png differ diff --git a/fonts/MiniwiFont/24BF.png b/fonts/MiniwiFont/24BF.png new file mode 100644 index 000000000..10a19d5aa Binary files /dev/null and b/fonts/MiniwiFont/24BF.png differ diff --git a/fonts/MiniwiFont/24C0.png b/fonts/MiniwiFont/24C0.png new file mode 100644 index 000000000..a5bcf0407 Binary files /dev/null and b/fonts/MiniwiFont/24C0.png differ diff --git a/fonts/MiniwiFont/24C1.png b/fonts/MiniwiFont/24C1.png new file mode 100644 index 000000000..33ce3634f Binary files /dev/null and b/fonts/MiniwiFont/24C1.png differ diff --git a/fonts/MiniwiFont/24C2.png b/fonts/MiniwiFont/24C2.png new file mode 100644 index 000000000..697b65c03 Binary files /dev/null and b/fonts/MiniwiFont/24C2.png differ diff --git a/fonts/MiniwiFont/24C3.png b/fonts/MiniwiFont/24C3.png new file mode 100644 index 000000000..818790880 Binary files /dev/null and b/fonts/MiniwiFont/24C3.png differ diff --git a/fonts/MiniwiFont/24C4.png b/fonts/MiniwiFont/24C4.png new file mode 100644 index 000000000..46ef0e885 Binary files /dev/null and b/fonts/MiniwiFont/24C4.png differ diff --git a/fonts/MiniwiFont/24C5.png b/fonts/MiniwiFont/24C5.png new file mode 100644 index 000000000..d57ec4079 Binary files /dev/null and b/fonts/MiniwiFont/24C5.png differ diff --git a/fonts/MiniwiFont/24C6.png b/fonts/MiniwiFont/24C6.png new file mode 100644 index 000000000..45842d885 Binary files /dev/null and b/fonts/MiniwiFont/24C6.png differ diff --git a/fonts/MiniwiFont/24C7.png b/fonts/MiniwiFont/24C7.png new file mode 100644 index 000000000..480623299 Binary files /dev/null and b/fonts/MiniwiFont/24C7.png differ diff --git a/fonts/MiniwiFont/24C8.png b/fonts/MiniwiFont/24C8.png new file mode 100644 index 000000000..89271ee7a Binary files /dev/null and b/fonts/MiniwiFont/24C8.png differ diff --git a/fonts/MiniwiFont/24C9.png b/fonts/MiniwiFont/24C9.png new file mode 100644 index 000000000..f544eb603 Binary files /dev/null and b/fonts/MiniwiFont/24C9.png differ diff --git a/fonts/MiniwiFont/24CA.png b/fonts/MiniwiFont/24CA.png new file mode 100644 index 000000000..17789dea9 Binary files /dev/null and b/fonts/MiniwiFont/24CA.png differ diff --git a/fonts/MiniwiFont/24CB.png b/fonts/MiniwiFont/24CB.png new file mode 100644 index 000000000..8d8dbf40b Binary files /dev/null and b/fonts/MiniwiFont/24CB.png differ diff --git a/fonts/MiniwiFont/24CC.png b/fonts/MiniwiFont/24CC.png new file mode 100644 index 000000000..261284b3e Binary files /dev/null and b/fonts/MiniwiFont/24CC.png differ diff --git a/fonts/MiniwiFont/24CD.png b/fonts/MiniwiFont/24CD.png new file mode 100644 index 000000000..d4f44b03a Binary files /dev/null and b/fonts/MiniwiFont/24CD.png differ diff --git a/fonts/MiniwiFont/24CE.png b/fonts/MiniwiFont/24CE.png new file mode 100644 index 000000000..98ad228e8 Binary files /dev/null and b/fonts/MiniwiFont/24CE.png differ diff --git a/fonts/MiniwiFont/24CF.png b/fonts/MiniwiFont/24CF.png new file mode 100644 index 000000000..3ac466c1d Binary files /dev/null and b/fonts/MiniwiFont/24CF.png differ diff --git a/fonts/MiniwiFont/24D0.png b/fonts/MiniwiFont/24D0.png new file mode 100644 index 000000000..615a93b38 Binary files /dev/null and b/fonts/MiniwiFont/24D0.png differ diff --git a/fonts/MiniwiFont/24D1.png b/fonts/MiniwiFont/24D1.png new file mode 100644 index 000000000..a4415cfbf Binary files /dev/null and b/fonts/MiniwiFont/24D1.png differ diff --git a/fonts/MiniwiFont/24D2.png b/fonts/MiniwiFont/24D2.png new file mode 100644 index 000000000..3f83f14db Binary files /dev/null and b/fonts/MiniwiFont/24D2.png differ diff --git a/fonts/MiniwiFont/24D3.png b/fonts/MiniwiFont/24D3.png new file mode 100644 index 000000000..78d19c70e Binary files /dev/null and b/fonts/MiniwiFont/24D3.png differ diff --git a/fonts/MiniwiFont/24D4.png b/fonts/MiniwiFont/24D4.png new file mode 100644 index 000000000..5f4b1394e Binary files /dev/null and b/fonts/MiniwiFont/24D4.png differ diff --git a/fonts/MiniwiFont/24D5.png b/fonts/MiniwiFont/24D5.png new file mode 100644 index 000000000..68ddefe24 Binary files /dev/null and b/fonts/MiniwiFont/24D5.png differ diff --git a/fonts/MiniwiFont/24D6.png b/fonts/MiniwiFont/24D6.png new file mode 100644 index 000000000..8b88f14d6 Binary files /dev/null and b/fonts/MiniwiFont/24D6.png differ diff --git a/fonts/MiniwiFont/24D7.png b/fonts/MiniwiFont/24D7.png new file mode 100644 index 000000000..c2cedb5fd Binary files /dev/null and b/fonts/MiniwiFont/24D7.png differ diff --git a/fonts/MiniwiFont/24D8.png b/fonts/MiniwiFont/24D8.png new file mode 100644 index 000000000..a8e426d3d Binary files /dev/null and b/fonts/MiniwiFont/24D8.png differ diff --git a/fonts/MiniwiFont/24D9.png b/fonts/MiniwiFont/24D9.png new file mode 100644 index 000000000..36741215a Binary files /dev/null and b/fonts/MiniwiFont/24D9.png differ diff --git a/fonts/MiniwiFont/24DA.png b/fonts/MiniwiFont/24DA.png new file mode 100644 index 000000000..5e929261e Binary files /dev/null and b/fonts/MiniwiFont/24DA.png differ diff --git a/fonts/MiniwiFont/24DB.png b/fonts/MiniwiFont/24DB.png new file mode 100644 index 000000000..84291f8aa Binary files /dev/null and b/fonts/MiniwiFont/24DB.png differ diff --git a/fonts/MiniwiFont/24DC.png b/fonts/MiniwiFont/24DC.png new file mode 100644 index 000000000..a0e05c450 Binary files /dev/null and b/fonts/MiniwiFont/24DC.png differ diff --git a/fonts/MiniwiFont/24DD.png b/fonts/MiniwiFont/24DD.png new file mode 100644 index 000000000..556cad473 Binary files /dev/null and b/fonts/MiniwiFont/24DD.png differ diff --git a/fonts/MiniwiFont/24DE.png b/fonts/MiniwiFont/24DE.png new file mode 100644 index 000000000..46ef0e885 Binary files /dev/null and b/fonts/MiniwiFont/24DE.png differ diff --git a/fonts/MiniwiFont/24DF.png b/fonts/MiniwiFont/24DF.png new file mode 100644 index 000000000..1de1f93e3 Binary files /dev/null and b/fonts/MiniwiFont/24DF.png differ diff --git a/fonts/MiniwiFont/24E0.png b/fonts/MiniwiFont/24E0.png new file mode 100644 index 000000000..236f06693 Binary files /dev/null and b/fonts/MiniwiFont/24E0.png differ diff --git a/fonts/MiniwiFont/24E1.png b/fonts/MiniwiFont/24E1.png new file mode 100644 index 000000000..6baeb8dae Binary files /dev/null and b/fonts/MiniwiFont/24E1.png differ diff --git a/fonts/MiniwiFont/24E2.png b/fonts/MiniwiFont/24E2.png new file mode 100644 index 000000000..73c0151c3 Binary files /dev/null and b/fonts/MiniwiFont/24E2.png differ diff --git a/fonts/MiniwiFont/24E3.png b/fonts/MiniwiFont/24E3.png new file mode 100644 index 000000000..455857f17 Binary files /dev/null and b/fonts/MiniwiFont/24E3.png differ diff --git a/fonts/MiniwiFont/24E4.png b/fonts/MiniwiFont/24E4.png new file mode 100644 index 000000000..17789dea9 Binary files /dev/null and b/fonts/MiniwiFont/24E4.png differ diff --git a/fonts/MiniwiFont/24E5.png b/fonts/MiniwiFont/24E5.png new file mode 100644 index 000000000..8d8dbf40b Binary files /dev/null and b/fonts/MiniwiFont/24E5.png differ diff --git a/fonts/MiniwiFont/24E6.png b/fonts/MiniwiFont/24E6.png new file mode 100644 index 000000000..261284b3e Binary files /dev/null and b/fonts/MiniwiFont/24E6.png differ diff --git a/fonts/MiniwiFont/24E7.png b/fonts/MiniwiFont/24E7.png new file mode 100644 index 000000000..d4f44b03a Binary files /dev/null and b/fonts/MiniwiFont/24E7.png differ diff --git a/fonts/MiniwiFont/24E8.png b/fonts/MiniwiFont/24E8.png new file mode 100644 index 000000000..a9839ab19 Binary files /dev/null and b/fonts/MiniwiFont/24E8.png differ diff --git a/fonts/MiniwiFont/24E9.png b/fonts/MiniwiFont/24E9.png new file mode 100644 index 000000000..c31a070e5 Binary files /dev/null and b/fonts/MiniwiFont/24E9.png differ diff --git a/fonts/MiniwiFont/24EA.png b/fonts/MiniwiFont/24EA.png new file mode 100644 index 000000000..c77899571 Binary files /dev/null and b/fonts/MiniwiFont/24EA.png differ diff --git a/fonts/MiniwiFont/24EB.png b/fonts/MiniwiFont/24EB.png new file mode 100644 index 000000000..94ed9f384 Binary files /dev/null and b/fonts/MiniwiFont/24EB.png differ diff --git a/fonts/MiniwiFont/24EC.png b/fonts/MiniwiFont/24EC.png new file mode 100644 index 000000000..96af3e27e Binary files /dev/null and b/fonts/MiniwiFont/24EC.png differ diff --git a/fonts/MiniwiFont/24ED.png b/fonts/MiniwiFont/24ED.png new file mode 100644 index 000000000..e2bb6df7c Binary files /dev/null and b/fonts/MiniwiFont/24ED.png differ diff --git a/fonts/MiniwiFont/24EE.png b/fonts/MiniwiFont/24EE.png new file mode 100644 index 000000000..aaf1186dc Binary files /dev/null and b/fonts/MiniwiFont/24EE.png differ diff --git a/fonts/MiniwiFont/24EF.png b/fonts/MiniwiFont/24EF.png new file mode 100644 index 000000000..05aa3c17a Binary files /dev/null and b/fonts/MiniwiFont/24EF.png differ diff --git a/fonts/MiniwiFont/24F0.png b/fonts/MiniwiFont/24F0.png new file mode 100644 index 000000000..cb4ca426b Binary files /dev/null and b/fonts/MiniwiFont/24F0.png differ diff --git a/fonts/MiniwiFont/24F1.png b/fonts/MiniwiFont/24F1.png new file mode 100644 index 000000000..207bc0da5 Binary files /dev/null and b/fonts/MiniwiFont/24F1.png differ diff --git a/fonts/MiniwiFont/24F2.png b/fonts/MiniwiFont/24F2.png new file mode 100644 index 000000000..e8039821a Binary files /dev/null and b/fonts/MiniwiFont/24F2.png differ diff --git a/fonts/MiniwiFont/24F3.png b/fonts/MiniwiFont/24F3.png new file mode 100644 index 000000000..a4320b8e3 Binary files /dev/null and b/fonts/MiniwiFont/24F3.png differ diff --git a/fonts/MiniwiFont/24F4.png b/fonts/MiniwiFont/24F4.png new file mode 100644 index 000000000..da70552e1 Binary files /dev/null and b/fonts/MiniwiFont/24F4.png differ diff --git a/fonts/MiniwiFont/24F5.png b/fonts/MiniwiFont/24F5.png new file mode 100644 index 000000000..34baae119 Binary files /dev/null and b/fonts/MiniwiFont/24F5.png differ diff --git a/fonts/MiniwiFont/24F6.png b/fonts/MiniwiFont/24F6.png new file mode 100644 index 000000000..99235ab84 Binary files /dev/null and b/fonts/MiniwiFont/24F6.png differ diff --git a/fonts/MiniwiFont/24F7.png b/fonts/MiniwiFont/24F7.png new file mode 100644 index 000000000..80875760d Binary files /dev/null and b/fonts/MiniwiFont/24F7.png differ diff --git a/fonts/MiniwiFont/24F8.png b/fonts/MiniwiFont/24F8.png new file mode 100644 index 000000000..522cbdbe1 Binary files /dev/null and b/fonts/MiniwiFont/24F8.png differ diff --git a/fonts/MiniwiFont/24F9.png b/fonts/MiniwiFont/24F9.png new file mode 100644 index 000000000..7e8ec5ca0 Binary files /dev/null and b/fonts/MiniwiFont/24F9.png differ diff --git a/fonts/MiniwiFont/24FA.png b/fonts/MiniwiFont/24FA.png new file mode 100644 index 000000000..8eb832c9d Binary files /dev/null and b/fonts/MiniwiFont/24FA.png differ diff --git a/fonts/MiniwiFont/24FB.png b/fonts/MiniwiFont/24FB.png new file mode 100644 index 000000000..29fa4e6d2 Binary files /dev/null and b/fonts/MiniwiFont/24FB.png differ diff --git a/fonts/MiniwiFont/24FC.png b/fonts/MiniwiFont/24FC.png new file mode 100644 index 000000000..d3372fb46 Binary files /dev/null and b/fonts/MiniwiFont/24FC.png differ diff --git a/fonts/MiniwiFont/24FD.png b/fonts/MiniwiFont/24FD.png new file mode 100644 index 000000000..527f907ea Binary files /dev/null and b/fonts/MiniwiFont/24FD.png differ diff --git a/fonts/MiniwiFont/24FE.png b/fonts/MiniwiFont/24FE.png new file mode 100644 index 000000000..77e93e31c Binary files /dev/null and b/fonts/MiniwiFont/24FE.png differ diff --git a/fonts/MiniwiFont/24FF.png b/fonts/MiniwiFont/24FF.png new file mode 100644 index 000000000..4b8936e06 Binary files /dev/null and b/fonts/MiniwiFont/24FF.png differ diff --git a/fonts/MiniwiFont/2500.png b/fonts/MiniwiFont/2500.png new file mode 100644 index 000000000..604e46fcd Binary files /dev/null and b/fonts/MiniwiFont/2500.png differ diff --git a/fonts/MiniwiFont/2501.png b/fonts/MiniwiFont/2501.png new file mode 100644 index 000000000..56210d119 Binary files /dev/null and b/fonts/MiniwiFont/2501.png differ diff --git a/fonts/MiniwiFont/2502.png b/fonts/MiniwiFont/2502.png new file mode 100644 index 000000000..9c7821ba4 Binary files /dev/null and b/fonts/MiniwiFont/2502.png differ diff --git a/fonts/MiniwiFont/2503.png b/fonts/MiniwiFont/2503.png new file mode 100644 index 000000000..d310949a1 Binary files /dev/null and b/fonts/MiniwiFont/2503.png differ diff --git a/fonts/MiniwiFont/2504.png b/fonts/MiniwiFont/2504.png new file mode 100644 index 000000000..923c4f231 Binary files /dev/null and b/fonts/MiniwiFont/2504.png differ diff --git a/fonts/MiniwiFont/2505.png b/fonts/MiniwiFont/2505.png new file mode 100644 index 000000000..6699d438c Binary files /dev/null and b/fonts/MiniwiFont/2505.png differ diff --git a/fonts/MiniwiFont/2506.png b/fonts/MiniwiFont/2506.png new file mode 100644 index 000000000..4a371d7ea Binary files /dev/null and b/fonts/MiniwiFont/2506.png differ diff --git a/fonts/MiniwiFont/2507.png b/fonts/MiniwiFont/2507.png new file mode 100644 index 000000000..567613189 Binary files /dev/null and b/fonts/MiniwiFont/2507.png differ diff --git a/fonts/MiniwiFont/2508.png b/fonts/MiniwiFont/2508.png new file mode 100644 index 000000000..057a44a42 Binary files /dev/null and b/fonts/MiniwiFont/2508.png differ diff --git a/fonts/MiniwiFont/2509.png b/fonts/MiniwiFont/2509.png new file mode 100644 index 000000000..0b6a73f92 Binary files /dev/null and b/fonts/MiniwiFont/2509.png differ diff --git a/fonts/MiniwiFont/250A.png b/fonts/MiniwiFont/250A.png new file mode 100644 index 000000000..90a2fce59 Binary files /dev/null and b/fonts/MiniwiFont/250A.png differ diff --git a/fonts/MiniwiFont/250B.png b/fonts/MiniwiFont/250B.png new file mode 100644 index 000000000..cdf886de2 Binary files /dev/null and b/fonts/MiniwiFont/250B.png differ diff --git a/fonts/MiniwiFont/250C.png b/fonts/MiniwiFont/250C.png new file mode 100644 index 000000000..0e99e05e0 Binary files /dev/null and b/fonts/MiniwiFont/250C.png differ diff --git a/fonts/MiniwiFont/250D.png b/fonts/MiniwiFont/250D.png new file mode 100644 index 000000000..f581f82b2 Binary files /dev/null and b/fonts/MiniwiFont/250D.png differ diff --git a/fonts/MiniwiFont/250E.png b/fonts/MiniwiFont/250E.png new file mode 100644 index 000000000..652090184 Binary files /dev/null and b/fonts/MiniwiFont/250E.png differ diff --git a/fonts/MiniwiFont/250F.png b/fonts/MiniwiFont/250F.png new file mode 100644 index 000000000..f581f82b2 Binary files /dev/null and b/fonts/MiniwiFont/250F.png differ diff --git a/fonts/MiniwiFont/2510.png b/fonts/MiniwiFont/2510.png new file mode 100644 index 000000000..7169ed0d8 Binary files /dev/null and b/fonts/MiniwiFont/2510.png differ diff --git a/fonts/MiniwiFont/2511.png b/fonts/MiniwiFont/2511.png new file mode 100644 index 000000000..99a4e5cd4 Binary files /dev/null and b/fonts/MiniwiFont/2511.png differ diff --git a/fonts/MiniwiFont/2512.png b/fonts/MiniwiFont/2512.png new file mode 100644 index 000000000..40b15d19d Binary files /dev/null and b/fonts/MiniwiFont/2512.png differ diff --git a/fonts/MiniwiFont/2513.png b/fonts/MiniwiFont/2513.png new file mode 100644 index 000000000..d02a2bd4c Binary files /dev/null and b/fonts/MiniwiFont/2513.png differ diff --git a/fonts/MiniwiFont/2514.png b/fonts/MiniwiFont/2514.png new file mode 100644 index 000000000..1ef8c9077 Binary files /dev/null and b/fonts/MiniwiFont/2514.png differ diff --git a/fonts/MiniwiFont/2515.png b/fonts/MiniwiFont/2515.png new file mode 100644 index 000000000..53c5596d6 Binary files /dev/null and b/fonts/MiniwiFont/2515.png differ diff --git a/fonts/MiniwiFont/2516.png b/fonts/MiniwiFont/2516.png new file mode 100644 index 000000000..cc2a0070c Binary files /dev/null and b/fonts/MiniwiFont/2516.png differ diff --git a/fonts/MiniwiFont/2517.png b/fonts/MiniwiFont/2517.png new file mode 100644 index 000000000..95e2561d2 Binary files /dev/null and b/fonts/MiniwiFont/2517.png differ diff --git a/fonts/MiniwiFont/2518.png b/fonts/MiniwiFont/2518.png new file mode 100644 index 000000000..1eb74c82c Binary files /dev/null and b/fonts/MiniwiFont/2518.png differ diff --git a/fonts/MiniwiFont/2519.png b/fonts/MiniwiFont/2519.png new file mode 100644 index 000000000..ab20e2b94 Binary files /dev/null and b/fonts/MiniwiFont/2519.png differ diff --git a/fonts/MiniwiFont/251A.png b/fonts/MiniwiFont/251A.png new file mode 100644 index 000000000..f951230f7 Binary files /dev/null and b/fonts/MiniwiFont/251A.png differ diff --git a/fonts/MiniwiFont/251B.png b/fonts/MiniwiFont/251B.png new file mode 100644 index 000000000..c213da6f2 Binary files /dev/null and b/fonts/MiniwiFont/251B.png differ diff --git a/fonts/MiniwiFont/251C.png b/fonts/MiniwiFont/251C.png new file mode 100644 index 000000000..2d9c5f198 Binary files /dev/null and b/fonts/MiniwiFont/251C.png differ diff --git a/fonts/MiniwiFont/251D.png b/fonts/MiniwiFont/251D.png new file mode 100644 index 000000000..d68c2783e Binary files /dev/null and b/fonts/MiniwiFont/251D.png differ diff --git a/fonts/MiniwiFont/251E.png b/fonts/MiniwiFont/251E.png new file mode 100644 index 000000000..59c69e8dc Binary files /dev/null and b/fonts/MiniwiFont/251E.png differ diff --git a/fonts/MiniwiFont/251F.png b/fonts/MiniwiFont/251F.png new file mode 100644 index 000000000..37553bd7e Binary files /dev/null and b/fonts/MiniwiFont/251F.png differ diff --git a/fonts/MiniwiFont/2520.png b/fonts/MiniwiFont/2520.png new file mode 100644 index 000000000..a7bb9968e Binary files /dev/null and b/fonts/MiniwiFont/2520.png differ diff --git a/fonts/MiniwiFont/2521.png b/fonts/MiniwiFont/2521.png new file mode 100644 index 000000000..b6571021e Binary files /dev/null and b/fonts/MiniwiFont/2521.png differ diff --git a/fonts/MiniwiFont/2522.png b/fonts/MiniwiFont/2522.png new file mode 100644 index 000000000..1e1de6d1c Binary files /dev/null and b/fonts/MiniwiFont/2522.png differ diff --git a/fonts/MiniwiFont/2523.png b/fonts/MiniwiFont/2523.png new file mode 100644 index 000000000..b852817ad Binary files /dev/null and b/fonts/MiniwiFont/2523.png differ diff --git a/fonts/MiniwiFont/2524.png b/fonts/MiniwiFont/2524.png new file mode 100644 index 000000000..daf56eeef Binary files /dev/null and b/fonts/MiniwiFont/2524.png differ diff --git a/fonts/MiniwiFont/2525.png b/fonts/MiniwiFont/2525.png new file mode 100644 index 000000000..c627961b7 Binary files /dev/null and b/fonts/MiniwiFont/2525.png differ diff --git a/fonts/MiniwiFont/2526.png b/fonts/MiniwiFont/2526.png new file mode 100644 index 000000000..fdea72936 Binary files /dev/null and b/fonts/MiniwiFont/2526.png differ diff --git a/fonts/MiniwiFont/2527.png b/fonts/MiniwiFont/2527.png new file mode 100644 index 000000000..1d880fd1c Binary files /dev/null and b/fonts/MiniwiFont/2527.png differ diff --git a/fonts/MiniwiFont/2528.png b/fonts/MiniwiFont/2528.png new file mode 100644 index 000000000..3bdf3087a Binary files /dev/null and b/fonts/MiniwiFont/2528.png differ diff --git a/fonts/MiniwiFont/2529.png b/fonts/MiniwiFont/2529.png new file mode 100644 index 000000000..1b5dfb0aa Binary files /dev/null and b/fonts/MiniwiFont/2529.png differ diff --git a/fonts/MiniwiFont/252A.png b/fonts/MiniwiFont/252A.png new file mode 100644 index 000000000..9d86d3a2e Binary files /dev/null and b/fonts/MiniwiFont/252A.png differ diff --git a/fonts/MiniwiFont/252B.png b/fonts/MiniwiFont/252B.png new file mode 100644 index 000000000..839d5da9a Binary files /dev/null and b/fonts/MiniwiFont/252B.png differ diff --git a/fonts/MiniwiFont/252C.png b/fonts/MiniwiFont/252C.png new file mode 100644 index 000000000..232c9800c Binary files /dev/null and b/fonts/MiniwiFont/252C.png differ diff --git a/fonts/MiniwiFont/252D.png b/fonts/MiniwiFont/252D.png new file mode 100644 index 000000000..90c17fbc0 Binary files /dev/null and b/fonts/MiniwiFont/252D.png differ diff --git a/fonts/MiniwiFont/252E.png b/fonts/MiniwiFont/252E.png new file mode 100644 index 000000000..7e73d39e6 Binary files /dev/null and b/fonts/MiniwiFont/252E.png differ diff --git a/fonts/MiniwiFont/252F.png b/fonts/MiniwiFont/252F.png new file mode 100644 index 000000000..d583809c9 Binary files /dev/null and b/fonts/MiniwiFont/252F.png differ diff --git a/fonts/MiniwiFont/2530.png b/fonts/MiniwiFont/2530.png new file mode 100644 index 000000000..bdb1dbb31 Binary files /dev/null and b/fonts/MiniwiFont/2530.png differ diff --git a/fonts/MiniwiFont/2531.png b/fonts/MiniwiFont/2531.png new file mode 100644 index 000000000..139a3e8aa Binary files /dev/null and b/fonts/MiniwiFont/2531.png differ diff --git a/fonts/MiniwiFont/2532.png b/fonts/MiniwiFont/2532.png new file mode 100644 index 000000000..216c49e55 Binary files /dev/null and b/fonts/MiniwiFont/2532.png differ diff --git a/fonts/MiniwiFont/2533.png b/fonts/MiniwiFont/2533.png new file mode 100644 index 000000000..9ee32d16f Binary files /dev/null and b/fonts/MiniwiFont/2533.png differ diff --git a/fonts/MiniwiFont/2534.png b/fonts/MiniwiFont/2534.png new file mode 100644 index 000000000..90e8a0759 Binary files /dev/null and b/fonts/MiniwiFont/2534.png differ diff --git a/fonts/MiniwiFont/2535.png b/fonts/MiniwiFont/2535.png new file mode 100644 index 000000000..4a549e768 Binary files /dev/null and b/fonts/MiniwiFont/2535.png differ diff --git a/fonts/MiniwiFont/2536.png b/fonts/MiniwiFont/2536.png new file mode 100644 index 000000000..a659c1978 Binary files /dev/null and b/fonts/MiniwiFont/2536.png differ diff --git a/fonts/MiniwiFont/2537.png b/fonts/MiniwiFont/2537.png new file mode 100644 index 000000000..e3a490bc9 Binary files /dev/null and b/fonts/MiniwiFont/2537.png differ diff --git a/fonts/MiniwiFont/2538.png b/fonts/MiniwiFont/2538.png new file mode 100644 index 000000000..ebdfc2daf Binary files /dev/null and b/fonts/MiniwiFont/2538.png differ diff --git a/fonts/MiniwiFont/2539.png b/fonts/MiniwiFont/2539.png new file mode 100644 index 000000000..5a27f2130 Binary files /dev/null and b/fonts/MiniwiFont/2539.png differ diff --git a/fonts/MiniwiFont/253A.png b/fonts/MiniwiFont/253A.png new file mode 100644 index 000000000..d34720f27 Binary files /dev/null and b/fonts/MiniwiFont/253A.png differ diff --git a/fonts/MiniwiFont/253B.png b/fonts/MiniwiFont/253B.png new file mode 100644 index 000000000..ed93a11c7 Binary files /dev/null and b/fonts/MiniwiFont/253B.png differ diff --git a/fonts/MiniwiFont/253C.png b/fonts/MiniwiFont/253C.png new file mode 100644 index 000000000..5be233d13 Binary files /dev/null and b/fonts/MiniwiFont/253C.png differ diff --git a/fonts/MiniwiFont/253D.png b/fonts/MiniwiFont/253D.png new file mode 100644 index 000000000..b6af0b5ca Binary files /dev/null and b/fonts/MiniwiFont/253D.png differ diff --git a/fonts/MiniwiFont/253E.png b/fonts/MiniwiFont/253E.png new file mode 100644 index 000000000..5b4b1e622 Binary files /dev/null and b/fonts/MiniwiFont/253E.png differ diff --git a/fonts/MiniwiFont/253F.png b/fonts/MiniwiFont/253F.png new file mode 100644 index 000000000..b8eadf294 Binary files /dev/null and b/fonts/MiniwiFont/253F.png differ diff --git a/fonts/MiniwiFont/2540.png b/fonts/MiniwiFont/2540.png new file mode 100644 index 000000000..2cb1cee4a Binary files /dev/null and b/fonts/MiniwiFont/2540.png differ diff --git a/fonts/MiniwiFont/2541.png b/fonts/MiniwiFont/2541.png new file mode 100644 index 000000000..92e124955 Binary files /dev/null and b/fonts/MiniwiFont/2541.png differ diff --git a/fonts/MiniwiFont/2542.png b/fonts/MiniwiFont/2542.png new file mode 100644 index 000000000..dce9ddd66 Binary files /dev/null and b/fonts/MiniwiFont/2542.png differ diff --git a/fonts/MiniwiFont/2543.png b/fonts/MiniwiFont/2543.png new file mode 100644 index 000000000..1b5dfb0aa Binary files /dev/null and b/fonts/MiniwiFont/2543.png differ diff --git a/fonts/MiniwiFont/2544.png b/fonts/MiniwiFont/2544.png new file mode 100644 index 000000000..2cb1cee4a Binary files /dev/null and b/fonts/MiniwiFont/2544.png differ diff --git a/fonts/MiniwiFont/2545.png b/fonts/MiniwiFont/2545.png new file mode 100644 index 000000000..2f48b2cbb Binary files /dev/null and b/fonts/MiniwiFont/2545.png differ diff --git a/fonts/MiniwiFont/2546.png b/fonts/MiniwiFont/2546.png new file mode 100644 index 000000000..4a90bb047 Binary files /dev/null and b/fonts/MiniwiFont/2546.png differ diff --git a/fonts/MiniwiFont/2547.png b/fonts/MiniwiFont/2547.png new file mode 100644 index 000000000..4e53c109a Binary files /dev/null and b/fonts/MiniwiFont/2547.png differ diff --git a/fonts/MiniwiFont/2548.png b/fonts/MiniwiFont/2548.png new file mode 100644 index 000000000..56e993a63 Binary files /dev/null and b/fonts/MiniwiFont/2548.png differ diff --git a/fonts/MiniwiFont/2549.png b/fonts/MiniwiFont/2549.png new file mode 100644 index 000000000..cb30fe78d Binary files /dev/null and b/fonts/MiniwiFont/2549.png differ diff --git a/fonts/MiniwiFont/254A.png b/fonts/MiniwiFont/254A.png new file mode 100644 index 000000000..8fba10c31 Binary files /dev/null and b/fonts/MiniwiFont/254A.png differ diff --git a/fonts/MiniwiFont/254B.png b/fonts/MiniwiFont/254B.png new file mode 100644 index 000000000..1f3b4b7d1 Binary files /dev/null and b/fonts/MiniwiFont/254B.png differ diff --git a/fonts/MiniwiFont/254C.png b/fonts/MiniwiFont/254C.png new file mode 100644 index 000000000..923c4f231 Binary files /dev/null and b/fonts/MiniwiFont/254C.png differ diff --git a/fonts/MiniwiFont/254D.png b/fonts/MiniwiFont/254D.png new file mode 100644 index 000000000..6699d438c Binary files /dev/null and b/fonts/MiniwiFont/254D.png differ diff --git a/fonts/MiniwiFont/254E.png b/fonts/MiniwiFont/254E.png new file mode 100644 index 000000000..8de6bca24 Binary files /dev/null and b/fonts/MiniwiFont/254E.png differ diff --git a/fonts/MiniwiFont/254F.png b/fonts/MiniwiFont/254F.png new file mode 100644 index 000000000..6a2b529e5 Binary files /dev/null and b/fonts/MiniwiFont/254F.png differ diff --git a/fonts/MiniwiFont/2550.png b/fonts/MiniwiFont/2550.png new file mode 100644 index 000000000..9b8ab9339 Binary files /dev/null and b/fonts/MiniwiFont/2550.png differ diff --git a/fonts/MiniwiFont/2551.png b/fonts/MiniwiFont/2551.png new file mode 100644 index 000000000..23a9011c0 Binary files /dev/null and b/fonts/MiniwiFont/2551.png differ diff --git a/fonts/MiniwiFont/2552.png b/fonts/MiniwiFont/2552.png new file mode 100644 index 000000000..a465ba975 Binary files /dev/null and b/fonts/MiniwiFont/2552.png differ diff --git a/fonts/MiniwiFont/2553.png b/fonts/MiniwiFont/2553.png new file mode 100644 index 000000000..4374ddf47 Binary files /dev/null and b/fonts/MiniwiFont/2553.png differ diff --git a/fonts/MiniwiFont/2554.png b/fonts/MiniwiFont/2554.png new file mode 100644 index 000000000..ea600d689 Binary files /dev/null and b/fonts/MiniwiFont/2554.png differ diff --git a/fonts/MiniwiFont/2555.png b/fonts/MiniwiFont/2555.png new file mode 100644 index 000000000..33f671b68 Binary files /dev/null and b/fonts/MiniwiFont/2555.png differ diff --git a/fonts/MiniwiFont/2556.png b/fonts/MiniwiFont/2556.png new file mode 100644 index 000000000..047eb5613 Binary files /dev/null and b/fonts/MiniwiFont/2556.png differ diff --git a/fonts/MiniwiFont/2557.png b/fonts/MiniwiFont/2557.png new file mode 100644 index 000000000..521774dd0 Binary files /dev/null and b/fonts/MiniwiFont/2557.png differ diff --git a/fonts/MiniwiFont/2558.png b/fonts/MiniwiFont/2558.png new file mode 100644 index 000000000..3ddbb62f5 Binary files /dev/null and b/fonts/MiniwiFont/2558.png differ diff --git a/fonts/MiniwiFont/2559.png b/fonts/MiniwiFont/2559.png new file mode 100644 index 000000000..09860d4d5 Binary files /dev/null and b/fonts/MiniwiFont/2559.png differ diff --git a/fonts/MiniwiFont/255A.png b/fonts/MiniwiFont/255A.png new file mode 100644 index 000000000..6a5115acf Binary files /dev/null and b/fonts/MiniwiFont/255A.png differ diff --git a/fonts/MiniwiFont/255B.png b/fonts/MiniwiFont/255B.png new file mode 100644 index 000000000..b1cc9dcd6 Binary files /dev/null and b/fonts/MiniwiFont/255B.png differ diff --git a/fonts/MiniwiFont/255C.png b/fonts/MiniwiFont/255C.png new file mode 100644 index 000000000..ce6c38623 Binary files /dev/null and b/fonts/MiniwiFont/255C.png differ diff --git a/fonts/MiniwiFont/255D.png b/fonts/MiniwiFont/255D.png new file mode 100644 index 000000000..82d742fe2 Binary files /dev/null and b/fonts/MiniwiFont/255D.png differ diff --git a/fonts/MiniwiFont/255E.png b/fonts/MiniwiFont/255E.png new file mode 100644 index 000000000..b12e9e365 Binary files /dev/null and b/fonts/MiniwiFont/255E.png differ diff --git a/fonts/MiniwiFont/255F.png b/fonts/MiniwiFont/255F.png new file mode 100644 index 000000000..4b30925f8 Binary files /dev/null and b/fonts/MiniwiFont/255F.png differ diff --git a/fonts/MiniwiFont/2560.png b/fonts/MiniwiFont/2560.png new file mode 100644 index 000000000..b2509f5b9 Binary files /dev/null and b/fonts/MiniwiFont/2560.png differ diff --git a/fonts/MiniwiFont/2561.png b/fonts/MiniwiFont/2561.png new file mode 100644 index 000000000..19652f75b Binary files /dev/null and b/fonts/MiniwiFont/2561.png differ diff --git a/fonts/MiniwiFont/2562.png b/fonts/MiniwiFont/2562.png new file mode 100644 index 000000000..23a9011c0 Binary files /dev/null and b/fonts/MiniwiFont/2562.png differ diff --git a/fonts/MiniwiFont/2563.png b/fonts/MiniwiFont/2563.png new file mode 100644 index 000000000..e7576b7e7 Binary files /dev/null and b/fonts/MiniwiFont/2563.png differ diff --git a/fonts/MiniwiFont/2564.png b/fonts/MiniwiFont/2564.png new file mode 100644 index 000000000..cf9d7bcb2 Binary files /dev/null and b/fonts/MiniwiFont/2564.png differ diff --git a/fonts/MiniwiFont/2565.png b/fonts/MiniwiFont/2565.png new file mode 100644 index 000000000..4374ddf47 Binary files /dev/null and b/fonts/MiniwiFont/2565.png differ diff --git a/fonts/MiniwiFont/2566.png b/fonts/MiniwiFont/2566.png new file mode 100644 index 000000000..e11a9e54a Binary files /dev/null and b/fonts/MiniwiFont/2566.png differ diff --git a/fonts/MiniwiFont/2567.png b/fonts/MiniwiFont/2567.png new file mode 100644 index 000000000..a3def93b8 Binary files /dev/null and b/fonts/MiniwiFont/2567.png differ diff --git a/fonts/MiniwiFont/2568.png b/fonts/MiniwiFont/2568.png new file mode 100644 index 000000000..09860d4d5 Binary files /dev/null and b/fonts/MiniwiFont/2568.png differ diff --git a/fonts/MiniwiFont/2569.png b/fonts/MiniwiFont/2569.png new file mode 100644 index 000000000..fc24a596e Binary files /dev/null and b/fonts/MiniwiFont/2569.png differ diff --git a/fonts/MiniwiFont/256A.png b/fonts/MiniwiFont/256A.png new file mode 100644 index 000000000..e48a0c1f4 Binary files /dev/null and b/fonts/MiniwiFont/256A.png differ diff --git a/fonts/MiniwiFont/256B.png b/fonts/MiniwiFont/256B.png new file mode 100644 index 000000000..4b30925f8 Binary files /dev/null and b/fonts/MiniwiFont/256B.png differ diff --git a/fonts/MiniwiFont/256C.png b/fonts/MiniwiFont/256C.png new file mode 100644 index 000000000..5a1256322 Binary files /dev/null and b/fonts/MiniwiFont/256C.png differ diff --git a/fonts/MiniwiFont/256D.png b/fonts/MiniwiFont/256D.png new file mode 100644 index 000000000..75a8c5452 Binary files /dev/null and b/fonts/MiniwiFont/256D.png differ diff --git a/fonts/MiniwiFont/256E.png b/fonts/MiniwiFont/256E.png new file mode 100644 index 000000000..dfd6962ef Binary files /dev/null and b/fonts/MiniwiFont/256E.png differ diff --git a/fonts/MiniwiFont/256F.png b/fonts/MiniwiFont/256F.png new file mode 100644 index 000000000..f7dc29c00 Binary files /dev/null and b/fonts/MiniwiFont/256F.png differ diff --git a/fonts/MiniwiFont/2570.png b/fonts/MiniwiFont/2570.png new file mode 100644 index 000000000..0f2ac97d0 Binary files /dev/null and b/fonts/MiniwiFont/2570.png differ diff --git a/fonts/MiniwiFont/2571.png b/fonts/MiniwiFont/2571.png new file mode 100644 index 000000000..d4de8f1ed Binary files /dev/null and b/fonts/MiniwiFont/2571.png differ diff --git a/fonts/MiniwiFont/2572.png b/fonts/MiniwiFont/2572.png new file mode 100644 index 000000000..aa72e96c1 Binary files /dev/null and b/fonts/MiniwiFont/2572.png differ diff --git a/fonts/MiniwiFont/2573.png b/fonts/MiniwiFont/2573.png new file mode 100644 index 000000000..6d497664a Binary files /dev/null and b/fonts/MiniwiFont/2573.png differ diff --git a/fonts/MiniwiFont/2574.png b/fonts/MiniwiFont/2574.png new file mode 100644 index 000000000..aff4db86d Binary files /dev/null and b/fonts/MiniwiFont/2574.png differ diff --git a/fonts/MiniwiFont/2575.png b/fonts/MiniwiFont/2575.png new file mode 100644 index 000000000..f0f8a475e Binary files /dev/null and b/fonts/MiniwiFont/2575.png differ diff --git a/fonts/MiniwiFont/2576.png b/fonts/MiniwiFont/2576.png new file mode 100644 index 000000000..923c4f231 Binary files /dev/null and b/fonts/MiniwiFont/2576.png differ diff --git a/fonts/MiniwiFont/2577.png b/fonts/MiniwiFont/2577.png new file mode 100644 index 000000000..2edde715b Binary files /dev/null and b/fonts/MiniwiFont/2577.png differ diff --git a/fonts/MiniwiFont/2578.png b/fonts/MiniwiFont/2578.png new file mode 100644 index 000000000..39d905bc8 Binary files /dev/null and b/fonts/MiniwiFont/2578.png differ diff --git a/fonts/MiniwiFont/2579.png b/fonts/MiniwiFont/2579.png new file mode 100644 index 000000000..5e434329c Binary files /dev/null and b/fonts/MiniwiFont/2579.png differ diff --git a/fonts/MiniwiFont/257A.png b/fonts/MiniwiFont/257A.png new file mode 100644 index 000000000..6699d438c Binary files /dev/null and b/fonts/MiniwiFont/257A.png differ diff --git a/fonts/MiniwiFont/257B.png b/fonts/MiniwiFont/257B.png new file mode 100644 index 000000000..75b10c072 Binary files /dev/null and b/fonts/MiniwiFont/257B.png differ diff --git a/fonts/MiniwiFont/257C.png b/fonts/MiniwiFont/257C.png new file mode 100644 index 000000000..91fc6360c Binary files /dev/null and b/fonts/MiniwiFont/257C.png differ diff --git a/fonts/MiniwiFont/257D.png b/fonts/MiniwiFont/257D.png new file mode 100644 index 000000000..ca7de61b9 Binary files /dev/null and b/fonts/MiniwiFont/257D.png differ diff --git a/fonts/MiniwiFont/257E.png b/fonts/MiniwiFont/257E.png new file mode 100644 index 000000000..7c4a81bbe Binary files /dev/null and b/fonts/MiniwiFont/257E.png differ diff --git a/fonts/MiniwiFont/257F.png b/fonts/MiniwiFont/257F.png new file mode 100644 index 000000000..32cab9efe Binary files /dev/null and b/fonts/MiniwiFont/257F.png differ diff --git a/fonts/MiniwiFont/2580.png b/fonts/MiniwiFont/2580.png new file mode 100644 index 000000000..1b25cf097 Binary files /dev/null and b/fonts/MiniwiFont/2580.png differ diff --git a/fonts/MiniwiFont/2581.png b/fonts/MiniwiFont/2581.png new file mode 100644 index 000000000..256aa7d4a Binary files /dev/null and b/fonts/MiniwiFont/2581.png differ diff --git a/fonts/MiniwiFont/2582.png b/fonts/MiniwiFont/2582.png new file mode 100644 index 000000000..8e2eba56c Binary files /dev/null and b/fonts/MiniwiFont/2582.png differ diff --git a/fonts/MiniwiFont/2583.png b/fonts/MiniwiFont/2583.png new file mode 100644 index 000000000..302c578c6 Binary files /dev/null and b/fonts/MiniwiFont/2583.png differ diff --git a/fonts/MiniwiFont/2584.png b/fonts/MiniwiFont/2584.png new file mode 100644 index 000000000..2b93b25e2 Binary files /dev/null and b/fonts/MiniwiFont/2584.png differ diff --git a/fonts/MiniwiFont/2585.png b/fonts/MiniwiFont/2585.png new file mode 100644 index 000000000..481918d7d Binary files /dev/null and b/fonts/MiniwiFont/2585.png differ diff --git a/fonts/MiniwiFont/2586.png b/fonts/MiniwiFont/2586.png new file mode 100644 index 000000000..9709195e4 Binary files /dev/null and b/fonts/MiniwiFont/2586.png differ diff --git a/fonts/MiniwiFont/2587.png b/fonts/MiniwiFont/2587.png new file mode 100644 index 000000000..8ca77d2d6 Binary files /dev/null and b/fonts/MiniwiFont/2587.png differ diff --git a/fonts/MiniwiFont/2588.png b/fonts/MiniwiFont/2588.png new file mode 100644 index 000000000..48f45a9cd Binary files /dev/null and b/fonts/MiniwiFont/2588.png differ diff --git a/fonts/MiniwiFont/2589.png b/fonts/MiniwiFont/2589.png new file mode 100644 index 000000000..777d65446 Binary files /dev/null and b/fonts/MiniwiFont/2589.png differ diff --git a/fonts/MiniwiFont/258A.png b/fonts/MiniwiFont/258A.png new file mode 100644 index 000000000..287e3da65 Binary files /dev/null and b/fonts/MiniwiFont/258A.png differ diff --git a/fonts/MiniwiFont/258B.png b/fonts/MiniwiFont/258B.png new file mode 100644 index 000000000..d9f51e29c Binary files /dev/null and b/fonts/MiniwiFont/258B.png differ diff --git a/fonts/MiniwiFont/258C.png b/fonts/MiniwiFont/258C.png new file mode 100644 index 000000000..0ed169b40 Binary files /dev/null and b/fonts/MiniwiFont/258C.png differ diff --git a/fonts/MiniwiFont/258D.png b/fonts/MiniwiFont/258D.png new file mode 100644 index 000000000..4fa8e589e Binary files /dev/null and b/fonts/MiniwiFont/258D.png differ diff --git a/fonts/MiniwiFont/258E.png b/fonts/MiniwiFont/258E.png new file mode 100644 index 000000000..e1fb58723 Binary files /dev/null and b/fonts/MiniwiFont/258E.png differ diff --git a/fonts/MiniwiFont/258F.png b/fonts/MiniwiFont/258F.png new file mode 100644 index 000000000..5929ca7ff Binary files /dev/null and b/fonts/MiniwiFont/258F.png differ diff --git a/fonts/MiniwiFont/2590.png b/fonts/MiniwiFont/2590.png new file mode 100644 index 000000000..656461793 Binary files /dev/null and b/fonts/MiniwiFont/2590.png differ diff --git a/fonts/MiniwiFont/2591.png b/fonts/MiniwiFont/2591.png new file mode 100644 index 000000000..4c3e6d375 Binary files /dev/null and b/fonts/MiniwiFont/2591.png differ diff --git a/fonts/MiniwiFont/2592.png b/fonts/MiniwiFont/2592.png new file mode 100644 index 000000000..8815b83de Binary files /dev/null and b/fonts/MiniwiFont/2592.png differ diff --git a/fonts/MiniwiFont/2593.png b/fonts/MiniwiFont/2593.png new file mode 100644 index 000000000..820a288c2 Binary files /dev/null and b/fonts/MiniwiFont/2593.png differ diff --git a/fonts/MiniwiFont/2594.png b/fonts/MiniwiFont/2594.png new file mode 100644 index 000000000..cf496da16 Binary files /dev/null and b/fonts/MiniwiFont/2594.png differ diff --git a/fonts/MiniwiFont/2595.png b/fonts/MiniwiFont/2595.png new file mode 100644 index 000000000..ce4a6eda7 Binary files /dev/null and b/fonts/MiniwiFont/2595.png differ diff --git a/fonts/MiniwiFont/2596.png b/fonts/MiniwiFont/2596.png new file mode 100644 index 000000000..f95f2762b Binary files /dev/null and b/fonts/MiniwiFont/2596.png differ diff --git a/fonts/MiniwiFont/2597.png b/fonts/MiniwiFont/2597.png new file mode 100644 index 000000000..a1306ab0a Binary files /dev/null and b/fonts/MiniwiFont/2597.png differ diff --git a/fonts/MiniwiFont/2598.png b/fonts/MiniwiFont/2598.png new file mode 100644 index 000000000..aad5771b8 Binary files /dev/null and b/fonts/MiniwiFont/2598.png differ diff --git a/fonts/MiniwiFont/2599.png b/fonts/MiniwiFont/2599.png new file mode 100644 index 000000000..ffb049cce Binary files /dev/null and b/fonts/MiniwiFont/2599.png differ diff --git a/fonts/MiniwiFont/259A.png b/fonts/MiniwiFont/259A.png new file mode 100644 index 000000000..8a4499a87 Binary files /dev/null and b/fonts/MiniwiFont/259A.png differ diff --git a/fonts/MiniwiFont/259B.png b/fonts/MiniwiFont/259B.png new file mode 100644 index 000000000..9069c083c Binary files /dev/null and b/fonts/MiniwiFont/259B.png differ diff --git a/fonts/MiniwiFont/259C.png b/fonts/MiniwiFont/259C.png new file mode 100644 index 000000000..9336fc776 Binary files /dev/null and b/fonts/MiniwiFont/259C.png differ diff --git a/fonts/MiniwiFont/259D.png b/fonts/MiniwiFont/259D.png new file mode 100644 index 000000000..1da3445fc Binary files /dev/null and b/fonts/MiniwiFont/259D.png differ diff --git a/fonts/MiniwiFont/259E.png b/fonts/MiniwiFont/259E.png new file mode 100644 index 000000000..2740b7f0b Binary files /dev/null and b/fonts/MiniwiFont/259E.png differ diff --git a/fonts/MiniwiFont/259F.png b/fonts/MiniwiFont/259F.png new file mode 100644 index 000000000..98217a479 Binary files /dev/null and b/fonts/MiniwiFont/259F.png differ diff --git a/fonts/MiniwiFont/25A0.png b/fonts/MiniwiFont/25A0.png new file mode 100644 index 000000000..67acb5478 Binary files /dev/null and b/fonts/MiniwiFont/25A0.png differ diff --git a/fonts/MiniwiFont/25CA.png b/fonts/MiniwiFont/25CA.png new file mode 100644 index 000000000..582908870 Binary files /dev/null and b/fonts/MiniwiFont/25CA.png differ diff --git a/fonts/MiniwiFont/2660.png b/fonts/MiniwiFont/2660.png new file mode 100644 index 000000000..f6645824b Binary files /dev/null and b/fonts/MiniwiFont/2660.png differ diff --git a/fonts/MiniwiFont/2663.png b/fonts/MiniwiFont/2663.png new file mode 100644 index 000000000..33fee51bb Binary files /dev/null and b/fonts/MiniwiFont/2663.png differ diff --git a/fonts/MiniwiFont/2665.png b/fonts/MiniwiFont/2665.png new file mode 100644 index 000000000..bf844c597 Binary files /dev/null and b/fonts/MiniwiFont/2665.png differ diff --git a/fonts/MiniwiFont/2666.png b/fonts/MiniwiFont/2666.png new file mode 100644 index 000000000..dcb2f0f8e Binary files /dev/null and b/fonts/MiniwiFont/2666.png differ diff --git a/fonts/MiniwiFont/2801.png b/fonts/MiniwiFont/2801.png new file mode 100644 index 000000000..9db2b48f1 Binary files /dev/null and b/fonts/MiniwiFont/2801.png differ diff --git a/fonts/MiniwiFont/2802.png b/fonts/MiniwiFont/2802.png new file mode 100644 index 000000000..e6e3e5e2f Binary files /dev/null and b/fonts/MiniwiFont/2802.png differ diff --git a/fonts/MiniwiFont/2803.png b/fonts/MiniwiFont/2803.png new file mode 100644 index 000000000..e42501972 Binary files /dev/null and b/fonts/MiniwiFont/2803.png differ diff --git a/fonts/MiniwiFont/2804.png b/fonts/MiniwiFont/2804.png new file mode 100644 index 000000000..b9c99e5b5 Binary files /dev/null and b/fonts/MiniwiFont/2804.png differ diff --git a/fonts/MiniwiFont/2805.png b/fonts/MiniwiFont/2805.png new file mode 100644 index 000000000..5703c2a4c Binary files /dev/null and b/fonts/MiniwiFont/2805.png differ diff --git a/fonts/MiniwiFont/2806.png b/fonts/MiniwiFont/2806.png new file mode 100644 index 000000000..aebe36280 Binary files /dev/null and b/fonts/MiniwiFont/2806.png differ diff --git a/fonts/MiniwiFont/2807.png b/fonts/MiniwiFont/2807.png new file mode 100644 index 000000000..c9c042e6f Binary files /dev/null and b/fonts/MiniwiFont/2807.png differ diff --git a/fonts/MiniwiFont/2808.png b/fonts/MiniwiFont/2808.png new file mode 100644 index 000000000..5e3603bc7 Binary files /dev/null and b/fonts/MiniwiFont/2808.png differ diff --git a/fonts/MiniwiFont/2809.png b/fonts/MiniwiFont/2809.png new file mode 100644 index 000000000..e9f92b9be Binary files /dev/null and b/fonts/MiniwiFont/2809.png differ diff --git a/fonts/MiniwiFont/280A.png b/fonts/MiniwiFont/280A.png new file mode 100644 index 000000000..4fcbae6bf Binary files /dev/null and b/fonts/MiniwiFont/280A.png differ diff --git a/fonts/MiniwiFont/280B.png b/fonts/MiniwiFont/280B.png new file mode 100644 index 000000000..403f3ba64 Binary files /dev/null and b/fonts/MiniwiFont/280B.png differ diff --git a/fonts/MiniwiFont/280C.png b/fonts/MiniwiFont/280C.png new file mode 100644 index 000000000..78a326772 Binary files /dev/null and b/fonts/MiniwiFont/280C.png differ diff --git a/fonts/MiniwiFont/280D.png b/fonts/MiniwiFont/280D.png new file mode 100644 index 000000000..fe3900a86 Binary files /dev/null and b/fonts/MiniwiFont/280D.png differ diff --git a/fonts/MiniwiFont/280E.png b/fonts/MiniwiFont/280E.png new file mode 100644 index 000000000..37cb0895a Binary files /dev/null and b/fonts/MiniwiFont/280E.png differ diff --git a/fonts/MiniwiFont/280F.png b/fonts/MiniwiFont/280F.png new file mode 100644 index 000000000..b607cab5e Binary files /dev/null and b/fonts/MiniwiFont/280F.png differ diff --git a/fonts/MiniwiFont/2810.png b/fonts/MiniwiFont/2810.png new file mode 100644 index 000000000..574855a19 Binary files /dev/null and b/fonts/MiniwiFont/2810.png differ diff --git a/fonts/MiniwiFont/2811.png b/fonts/MiniwiFont/2811.png new file mode 100644 index 000000000..20861d1b9 Binary files /dev/null and b/fonts/MiniwiFont/2811.png differ diff --git a/fonts/MiniwiFont/2812.png b/fonts/MiniwiFont/2812.png new file mode 100644 index 000000000..fe9532a42 Binary files /dev/null and b/fonts/MiniwiFont/2812.png differ diff --git a/fonts/MiniwiFont/2813.png b/fonts/MiniwiFont/2813.png new file mode 100644 index 000000000..b02e76854 Binary files /dev/null and b/fonts/MiniwiFont/2813.png differ diff --git a/fonts/MiniwiFont/2814.png b/fonts/MiniwiFont/2814.png new file mode 100644 index 000000000..c5671e774 Binary files /dev/null and b/fonts/MiniwiFont/2814.png differ diff --git a/fonts/MiniwiFont/2815.png b/fonts/MiniwiFont/2815.png new file mode 100644 index 000000000..f4584f3d5 Binary files /dev/null and b/fonts/MiniwiFont/2815.png differ diff --git a/fonts/MiniwiFont/2816.png b/fonts/MiniwiFont/2816.png new file mode 100644 index 000000000..c1f57ce4a Binary files /dev/null and b/fonts/MiniwiFont/2816.png differ diff --git a/fonts/MiniwiFont/2817.png b/fonts/MiniwiFont/2817.png new file mode 100644 index 000000000..c1f57ce4a Binary files /dev/null and b/fonts/MiniwiFont/2817.png differ diff --git a/fonts/MiniwiFont/2818.png b/fonts/MiniwiFont/2818.png new file mode 100644 index 000000000..e42501972 Binary files /dev/null and b/fonts/MiniwiFont/2818.png differ diff --git a/fonts/MiniwiFont/2819.png b/fonts/MiniwiFont/2819.png new file mode 100644 index 000000000..992844e49 Binary files /dev/null and b/fonts/MiniwiFont/2819.png differ diff --git a/fonts/MiniwiFont/281A.png b/fonts/MiniwiFont/281A.png new file mode 100644 index 000000000..d5188308d Binary files /dev/null and b/fonts/MiniwiFont/281A.png differ diff --git a/fonts/MiniwiFont/281B.png b/fonts/MiniwiFont/281B.png new file mode 100644 index 000000000..05c1d7284 Binary files /dev/null and b/fonts/MiniwiFont/281B.png differ diff --git a/fonts/MiniwiFont/281C.png b/fonts/MiniwiFont/281C.png new file mode 100644 index 000000000..f7f71d022 Binary files /dev/null and b/fonts/MiniwiFont/281C.png differ diff --git a/fonts/MiniwiFont/281D.png b/fonts/MiniwiFont/281D.png new file mode 100644 index 000000000..40e1e4729 Binary files /dev/null and b/fonts/MiniwiFont/281D.png differ diff --git a/fonts/MiniwiFont/281E.png b/fonts/MiniwiFont/281E.png new file mode 100644 index 000000000..e3ec0580a Binary files /dev/null and b/fonts/MiniwiFont/281E.png differ diff --git a/fonts/MiniwiFont/281F.png b/fonts/MiniwiFont/281F.png new file mode 100644 index 000000000..ff25c70cc Binary files /dev/null and b/fonts/MiniwiFont/281F.png differ diff --git a/fonts/MiniwiFont/2820.png b/fonts/MiniwiFont/2820.png new file mode 100644 index 000000000..f8f5ded1b Binary files /dev/null and b/fonts/MiniwiFont/2820.png differ diff --git a/fonts/MiniwiFont/2821.png b/fonts/MiniwiFont/2821.png new file mode 100644 index 000000000..3edb50eb8 Binary files /dev/null and b/fonts/MiniwiFont/2821.png differ diff --git a/fonts/MiniwiFont/2822.png b/fonts/MiniwiFont/2822.png new file mode 100644 index 000000000..06cce89fd Binary files /dev/null and b/fonts/MiniwiFont/2822.png differ diff --git a/fonts/MiniwiFont/2823.png b/fonts/MiniwiFont/2823.png new file mode 100644 index 000000000..738f5c140 Binary files /dev/null and b/fonts/MiniwiFont/2823.png differ diff --git a/fonts/MiniwiFont/2824.png b/fonts/MiniwiFont/2824.png new file mode 100644 index 000000000..057a44a42 Binary files /dev/null and b/fonts/MiniwiFont/2824.png differ diff --git a/fonts/MiniwiFont/2825.png b/fonts/MiniwiFont/2825.png new file mode 100644 index 000000000..c7d0a08aa Binary files /dev/null and b/fonts/MiniwiFont/2825.png differ diff --git a/fonts/MiniwiFont/2826.png b/fonts/MiniwiFont/2826.png new file mode 100644 index 000000000..20e929737 Binary files /dev/null and b/fonts/MiniwiFont/2826.png differ diff --git a/fonts/MiniwiFont/2827.png b/fonts/MiniwiFont/2827.png new file mode 100644 index 000000000..1370cc215 Binary files /dev/null and b/fonts/MiniwiFont/2827.png differ diff --git a/fonts/MiniwiFont/2828.png b/fonts/MiniwiFont/2828.png new file mode 100644 index 000000000..2597f014f Binary files /dev/null and b/fonts/MiniwiFont/2828.png differ diff --git a/fonts/MiniwiFont/2829.png b/fonts/MiniwiFont/2829.png new file mode 100644 index 000000000..99c1b82fd Binary files /dev/null and b/fonts/MiniwiFont/2829.png differ diff --git a/fonts/MiniwiFont/282A.png b/fonts/MiniwiFont/282A.png new file mode 100644 index 000000000..e09dd0e18 Binary files /dev/null and b/fonts/MiniwiFont/282A.png differ diff --git a/fonts/MiniwiFont/282B.png b/fonts/MiniwiFont/282B.png new file mode 100644 index 000000000..f15680154 Binary files /dev/null and b/fonts/MiniwiFont/282B.png differ diff --git a/fonts/MiniwiFont/282C.png b/fonts/MiniwiFont/282C.png new file mode 100644 index 000000000..2877b2fc6 Binary files /dev/null and b/fonts/MiniwiFont/282C.png differ diff --git a/fonts/MiniwiFont/282D.png b/fonts/MiniwiFont/282D.png new file mode 100644 index 000000000..93f04312e Binary files /dev/null and b/fonts/MiniwiFont/282D.png differ diff --git a/fonts/MiniwiFont/282E.png b/fonts/MiniwiFont/282E.png new file mode 100644 index 000000000..2e522acd7 Binary files /dev/null and b/fonts/MiniwiFont/282E.png differ diff --git a/fonts/MiniwiFont/282F.png b/fonts/MiniwiFont/282F.png new file mode 100644 index 000000000..2dec4286e Binary files /dev/null and b/fonts/MiniwiFont/282F.png differ diff --git a/fonts/MiniwiFont/2830.png b/fonts/MiniwiFont/2830.png new file mode 100644 index 000000000..b5aa93d08 Binary files /dev/null and b/fonts/MiniwiFont/2830.png differ diff --git a/fonts/MiniwiFont/2831.png b/fonts/MiniwiFont/2831.png new file mode 100644 index 000000000..43bc6e5ae Binary files /dev/null and b/fonts/MiniwiFont/2831.png differ diff --git a/fonts/MiniwiFont/2832.png b/fonts/MiniwiFont/2832.png new file mode 100644 index 000000000..f5584ce0d Binary files /dev/null and b/fonts/MiniwiFont/2832.png differ diff --git a/fonts/MiniwiFont/2833.png b/fonts/MiniwiFont/2833.png new file mode 100644 index 000000000..caed7c184 Binary files /dev/null and b/fonts/MiniwiFont/2833.png differ diff --git a/fonts/MiniwiFont/2834.png b/fonts/MiniwiFont/2834.png new file mode 100644 index 000000000..65adadbc5 Binary files /dev/null and b/fonts/MiniwiFont/2834.png differ diff --git a/fonts/MiniwiFont/2835.png b/fonts/MiniwiFont/2835.png new file mode 100644 index 000000000..626d2197e Binary files /dev/null and b/fonts/MiniwiFont/2835.png differ diff --git a/fonts/MiniwiFont/2836.png b/fonts/MiniwiFont/2836.png new file mode 100644 index 000000000..cd2ac0a3b Binary files /dev/null and b/fonts/MiniwiFont/2836.png differ diff --git a/fonts/MiniwiFont/2837.png b/fonts/MiniwiFont/2837.png new file mode 100644 index 000000000..fd0a7de6e Binary files /dev/null and b/fonts/MiniwiFont/2837.png differ diff --git a/fonts/MiniwiFont/2838.png b/fonts/MiniwiFont/2838.png new file mode 100644 index 000000000..96ac9d011 Binary files /dev/null and b/fonts/MiniwiFont/2838.png differ diff --git a/fonts/MiniwiFont/2839.png b/fonts/MiniwiFont/2839.png new file mode 100644 index 000000000..f35ebad36 Binary files /dev/null and b/fonts/MiniwiFont/2839.png differ diff --git a/fonts/MiniwiFont/283A.png b/fonts/MiniwiFont/283A.png new file mode 100644 index 000000000..0824df7c3 Binary files /dev/null and b/fonts/MiniwiFont/283A.png differ diff --git a/fonts/MiniwiFont/283B.png b/fonts/MiniwiFont/283B.png new file mode 100644 index 000000000..520659503 Binary files /dev/null and b/fonts/MiniwiFont/283B.png differ diff --git a/fonts/MiniwiFont/283C.png b/fonts/MiniwiFont/283C.png new file mode 100644 index 000000000..2ea06bd09 Binary files /dev/null and b/fonts/MiniwiFont/283C.png differ diff --git a/fonts/MiniwiFont/283D.png b/fonts/MiniwiFont/283D.png new file mode 100644 index 000000000..3c067c3e3 Binary files /dev/null and b/fonts/MiniwiFont/283D.png differ diff --git a/fonts/MiniwiFont/283E.png b/fonts/MiniwiFont/283E.png new file mode 100644 index 000000000..49c1dd4d4 Binary files /dev/null and b/fonts/MiniwiFont/283E.png differ diff --git a/fonts/MiniwiFont/283F.png b/fonts/MiniwiFont/283F.png new file mode 100644 index 000000000..694c67ff2 Binary files /dev/null and b/fonts/MiniwiFont/283F.png differ diff --git a/fonts/MiniwiFont/2840.png b/fonts/MiniwiFont/2840.png new file mode 100644 index 000000000..7be1dc15f Binary files /dev/null and b/fonts/MiniwiFont/2840.png differ diff --git a/fonts/MiniwiFont/2841.png b/fonts/MiniwiFont/2841.png new file mode 100644 index 000000000..ff43f21d6 Binary files /dev/null and b/fonts/MiniwiFont/2841.png differ diff --git a/fonts/MiniwiFont/2842.png b/fonts/MiniwiFont/2842.png new file mode 100644 index 000000000..a7944ef61 Binary files /dev/null and b/fonts/MiniwiFont/2842.png differ diff --git a/fonts/MiniwiFont/2843.png b/fonts/MiniwiFont/2843.png new file mode 100644 index 000000000..423e48b4d Binary files /dev/null and b/fonts/MiniwiFont/2843.png differ diff --git a/fonts/MiniwiFont/2844.png b/fonts/MiniwiFont/2844.png new file mode 100644 index 000000000..9b4d035de Binary files /dev/null and b/fonts/MiniwiFont/2844.png differ diff --git a/fonts/MiniwiFont/2845.png b/fonts/MiniwiFont/2845.png new file mode 100644 index 000000000..dc4e00125 Binary files /dev/null and b/fonts/MiniwiFont/2845.png differ diff --git a/fonts/MiniwiFont/2846.png b/fonts/MiniwiFont/2846.png new file mode 100644 index 000000000..734ad6f55 Binary files /dev/null and b/fonts/MiniwiFont/2846.png differ diff --git a/fonts/MiniwiFont/2847.png b/fonts/MiniwiFont/2847.png new file mode 100644 index 000000000..5929ca7ff Binary files /dev/null and b/fonts/MiniwiFont/2847.png differ diff --git a/fonts/MiniwiFont/2848.png b/fonts/MiniwiFont/2848.png new file mode 100644 index 000000000..1786e9f44 Binary files /dev/null and b/fonts/MiniwiFont/2848.png differ diff --git a/fonts/MiniwiFont/2849.png b/fonts/MiniwiFont/2849.png new file mode 100644 index 000000000..1786e9f44 Binary files /dev/null and b/fonts/MiniwiFont/2849.png differ diff --git a/fonts/MiniwiFont/284A.png b/fonts/MiniwiFont/284A.png new file mode 100644 index 000000000..1783558b9 Binary files /dev/null and b/fonts/MiniwiFont/284A.png differ diff --git a/fonts/MiniwiFont/284B.png b/fonts/MiniwiFont/284B.png new file mode 100644 index 000000000..d7d55646b Binary files /dev/null and b/fonts/MiniwiFont/284B.png differ diff --git a/fonts/MiniwiFont/284C.png b/fonts/MiniwiFont/284C.png new file mode 100644 index 000000000..bfa10eb08 Binary files /dev/null and b/fonts/MiniwiFont/284C.png differ diff --git a/fonts/MiniwiFont/284D.png b/fonts/MiniwiFont/284D.png new file mode 100644 index 000000000..f864ff86f Binary files /dev/null and b/fonts/MiniwiFont/284D.png differ diff --git a/fonts/MiniwiFont/284E.png b/fonts/MiniwiFont/284E.png new file mode 100644 index 000000000..7aa0990a4 Binary files /dev/null and b/fonts/MiniwiFont/284E.png differ diff --git a/fonts/MiniwiFont/284F.png b/fonts/MiniwiFont/284F.png new file mode 100644 index 000000000..7db478c0b Binary files /dev/null and b/fonts/MiniwiFont/284F.png differ diff --git a/fonts/MiniwiFont/2850.png b/fonts/MiniwiFont/2850.png new file mode 100644 index 000000000..c519a6b76 Binary files /dev/null and b/fonts/MiniwiFont/2850.png differ diff --git a/fonts/MiniwiFont/2851.png b/fonts/MiniwiFont/2851.png new file mode 100644 index 000000000..0438a6fb2 Binary files /dev/null and b/fonts/MiniwiFont/2851.png differ diff --git a/fonts/MiniwiFont/2852.png b/fonts/MiniwiFont/2852.png new file mode 100644 index 000000000..a1c66a052 Binary files /dev/null and b/fonts/MiniwiFont/2852.png differ diff --git a/fonts/MiniwiFont/2853.png b/fonts/MiniwiFont/2853.png new file mode 100644 index 000000000..a1c66a052 Binary files /dev/null and b/fonts/MiniwiFont/2853.png differ diff --git a/fonts/MiniwiFont/2854.png b/fonts/MiniwiFont/2854.png new file mode 100644 index 000000000..bb7a9d93b Binary files /dev/null and b/fonts/MiniwiFont/2854.png differ diff --git a/fonts/MiniwiFont/2855.png b/fonts/MiniwiFont/2855.png new file mode 100644 index 000000000..46e24cb3b Binary files /dev/null and b/fonts/MiniwiFont/2855.png differ diff --git a/fonts/MiniwiFont/2856.png b/fonts/MiniwiFont/2856.png new file mode 100644 index 000000000..63676740e Binary files /dev/null and b/fonts/MiniwiFont/2856.png differ diff --git a/fonts/MiniwiFont/2857.png b/fonts/MiniwiFont/2857.png new file mode 100644 index 000000000..84b88cab4 Binary files /dev/null and b/fonts/MiniwiFont/2857.png differ diff --git a/fonts/MiniwiFont/2858.png b/fonts/MiniwiFont/2858.png new file mode 100644 index 000000000..f191f6ddd Binary files /dev/null and b/fonts/MiniwiFont/2858.png differ diff --git a/fonts/MiniwiFont/2859.png b/fonts/MiniwiFont/2859.png new file mode 100644 index 000000000..5def6e196 Binary files /dev/null and b/fonts/MiniwiFont/2859.png differ diff --git a/fonts/MiniwiFont/285A.png b/fonts/MiniwiFont/285A.png new file mode 100644 index 000000000..13b8dab32 Binary files /dev/null and b/fonts/MiniwiFont/285A.png differ diff --git a/fonts/MiniwiFont/285B.png b/fonts/MiniwiFont/285B.png new file mode 100644 index 000000000..ab44eb51c Binary files /dev/null and b/fonts/MiniwiFont/285B.png differ diff --git a/fonts/MiniwiFont/285C.png b/fonts/MiniwiFont/285C.png new file mode 100644 index 000000000..601acaade Binary files /dev/null and b/fonts/MiniwiFont/285C.png differ diff --git a/fonts/MiniwiFont/285D.png b/fonts/MiniwiFont/285D.png new file mode 100644 index 000000000..055d7a4a3 Binary files /dev/null and b/fonts/MiniwiFont/285D.png differ diff --git a/fonts/MiniwiFont/285E.png b/fonts/MiniwiFont/285E.png new file mode 100644 index 000000000..13b8dab32 Binary files /dev/null and b/fonts/MiniwiFont/285E.png differ diff --git a/fonts/MiniwiFont/285F.png b/fonts/MiniwiFont/285F.png new file mode 100644 index 000000000..a423dd8c7 Binary files /dev/null and b/fonts/MiniwiFont/285F.png differ diff --git a/fonts/MiniwiFont/2860.png b/fonts/MiniwiFont/2860.png new file mode 100644 index 000000000..6b327585a Binary files /dev/null and b/fonts/MiniwiFont/2860.png differ diff --git a/fonts/MiniwiFont/2861.png b/fonts/MiniwiFont/2861.png new file mode 100644 index 000000000..740278653 Binary files /dev/null and b/fonts/MiniwiFont/2861.png differ diff --git a/fonts/MiniwiFont/2862.png b/fonts/MiniwiFont/2862.png new file mode 100644 index 000000000..578b0f129 Binary files /dev/null and b/fonts/MiniwiFont/2862.png differ diff --git a/fonts/MiniwiFont/2863.png b/fonts/MiniwiFont/2863.png new file mode 100644 index 000000000..96a4a6a7d Binary files /dev/null and b/fonts/MiniwiFont/2863.png differ diff --git a/fonts/MiniwiFont/2864.png b/fonts/MiniwiFont/2864.png new file mode 100644 index 000000000..269ee6631 Binary files /dev/null and b/fonts/MiniwiFont/2864.png differ diff --git a/fonts/MiniwiFont/2865.png b/fonts/MiniwiFont/2865.png new file mode 100644 index 000000000..aabbab85d Binary files /dev/null and b/fonts/MiniwiFont/2865.png differ diff --git a/fonts/MiniwiFont/2866.png b/fonts/MiniwiFont/2866.png new file mode 100644 index 000000000..a1c0da8c3 Binary files /dev/null and b/fonts/MiniwiFont/2866.png differ diff --git a/fonts/MiniwiFont/2867.png b/fonts/MiniwiFont/2867.png new file mode 100644 index 000000000..16a7a4e04 Binary files /dev/null and b/fonts/MiniwiFont/2867.png differ diff --git a/fonts/MiniwiFont/2868.png b/fonts/MiniwiFont/2868.png new file mode 100644 index 000000000..55ab58fa8 Binary files /dev/null and b/fonts/MiniwiFont/2868.png differ diff --git a/fonts/MiniwiFont/2869.png b/fonts/MiniwiFont/2869.png new file mode 100644 index 000000000..3d051a930 Binary files /dev/null and b/fonts/MiniwiFont/2869.png differ diff --git a/fonts/MiniwiFont/286A.png b/fonts/MiniwiFont/286A.png new file mode 100644 index 000000000..1906a07f0 Binary files /dev/null and b/fonts/MiniwiFont/286A.png differ diff --git a/fonts/MiniwiFont/286B.png b/fonts/MiniwiFont/286B.png new file mode 100644 index 000000000..c22a1641e Binary files /dev/null and b/fonts/MiniwiFont/286B.png differ diff --git a/fonts/MiniwiFont/286C.png b/fonts/MiniwiFont/286C.png new file mode 100644 index 000000000..9fc19131b Binary files /dev/null and b/fonts/MiniwiFont/286C.png differ diff --git a/fonts/MiniwiFont/286D.png b/fonts/MiniwiFont/286D.png new file mode 100644 index 000000000..99444ae6b Binary files /dev/null and b/fonts/MiniwiFont/286D.png differ diff --git a/fonts/MiniwiFont/286E.png b/fonts/MiniwiFont/286E.png new file mode 100644 index 000000000..e0986eca8 Binary files /dev/null and b/fonts/MiniwiFont/286E.png differ diff --git a/fonts/MiniwiFont/286F.png b/fonts/MiniwiFont/286F.png new file mode 100644 index 000000000..c38e0b09c Binary files /dev/null and b/fonts/MiniwiFont/286F.png differ diff --git a/fonts/MiniwiFont/2870.png b/fonts/MiniwiFont/2870.png new file mode 100644 index 000000000..54ace311d Binary files /dev/null and b/fonts/MiniwiFont/2870.png differ diff --git a/fonts/MiniwiFont/2871.png b/fonts/MiniwiFont/2871.png new file mode 100644 index 000000000..f893e19df Binary files /dev/null and b/fonts/MiniwiFont/2871.png differ diff --git a/fonts/MiniwiFont/2872.png b/fonts/MiniwiFont/2872.png new file mode 100644 index 000000000..c0e67465d Binary files /dev/null and b/fonts/MiniwiFont/2872.png differ diff --git a/fonts/MiniwiFont/2873.png b/fonts/MiniwiFont/2873.png new file mode 100644 index 000000000..4d6cf09b6 Binary files /dev/null and b/fonts/MiniwiFont/2873.png differ diff --git a/fonts/MiniwiFont/2874.png b/fonts/MiniwiFont/2874.png new file mode 100644 index 000000000..8002461dc Binary files /dev/null and b/fonts/MiniwiFont/2874.png differ diff --git a/fonts/MiniwiFont/2875.png b/fonts/MiniwiFont/2875.png new file mode 100644 index 000000000..cc7dbb6f5 Binary files /dev/null and b/fonts/MiniwiFont/2875.png differ diff --git a/fonts/MiniwiFont/2876.png b/fonts/MiniwiFont/2876.png new file mode 100644 index 000000000..45b6b5520 Binary files /dev/null and b/fonts/MiniwiFont/2876.png differ diff --git a/fonts/MiniwiFont/2877.png b/fonts/MiniwiFont/2877.png new file mode 100644 index 000000000..d202f9f66 Binary files /dev/null and b/fonts/MiniwiFont/2877.png differ diff --git a/fonts/MiniwiFont/2878.png b/fonts/MiniwiFont/2878.png new file mode 100644 index 000000000..e7eef525d Binary files /dev/null and b/fonts/MiniwiFont/2878.png differ diff --git a/fonts/MiniwiFont/2879.png b/fonts/MiniwiFont/2879.png new file mode 100644 index 000000000..e0ceb3566 Binary files /dev/null and b/fonts/MiniwiFont/2879.png differ diff --git a/fonts/MiniwiFont/287A.png b/fonts/MiniwiFont/287A.png new file mode 100644 index 000000000..c8a306a26 Binary files /dev/null and b/fonts/MiniwiFont/287A.png differ diff --git a/fonts/MiniwiFont/287B.png b/fonts/MiniwiFont/287B.png new file mode 100644 index 000000000..1e7a70aae Binary files /dev/null and b/fonts/MiniwiFont/287B.png differ diff --git a/fonts/MiniwiFont/287C.png b/fonts/MiniwiFont/287C.png new file mode 100644 index 000000000..a636fae0e Binary files /dev/null and b/fonts/MiniwiFont/287C.png differ diff --git a/fonts/MiniwiFont/287D.png b/fonts/MiniwiFont/287D.png new file mode 100644 index 000000000..fa635b14d Binary files /dev/null and b/fonts/MiniwiFont/287D.png differ diff --git a/fonts/MiniwiFont/287E.png b/fonts/MiniwiFont/287E.png new file mode 100644 index 000000000..3442a0b37 Binary files /dev/null and b/fonts/MiniwiFont/287E.png differ diff --git a/fonts/MiniwiFont/287F.png b/fonts/MiniwiFont/287F.png new file mode 100644 index 000000000..7697c6e99 Binary files /dev/null and b/fonts/MiniwiFont/287F.png differ diff --git a/fonts/MiniwiFont/2880.png b/fonts/MiniwiFont/2880.png new file mode 100644 index 000000000..fc10380cf Binary files /dev/null and b/fonts/MiniwiFont/2880.png differ diff --git a/fonts/MiniwiFont/2881.png b/fonts/MiniwiFont/2881.png new file mode 100644 index 000000000..2b6d8cc40 Binary files /dev/null and b/fonts/MiniwiFont/2881.png differ diff --git a/fonts/MiniwiFont/2882.png b/fonts/MiniwiFont/2882.png new file mode 100644 index 000000000..fa7ba6a05 Binary files /dev/null and b/fonts/MiniwiFont/2882.png differ diff --git a/fonts/MiniwiFont/2883.png b/fonts/MiniwiFont/2883.png new file mode 100644 index 000000000..232ae2ac0 Binary files /dev/null and b/fonts/MiniwiFont/2883.png differ diff --git a/fonts/MiniwiFont/2884.png b/fonts/MiniwiFont/2884.png new file mode 100644 index 000000000..8992f104d Binary files /dev/null and b/fonts/MiniwiFont/2884.png differ diff --git a/fonts/MiniwiFont/2885.png b/fonts/MiniwiFont/2885.png new file mode 100644 index 000000000..d65ae19ff Binary files /dev/null and b/fonts/MiniwiFont/2885.png differ diff --git a/fonts/MiniwiFont/2886.png b/fonts/MiniwiFont/2886.png new file mode 100644 index 000000000..3c140f3bf Binary files /dev/null and b/fonts/MiniwiFont/2886.png differ diff --git a/fonts/MiniwiFont/2887.png b/fonts/MiniwiFont/2887.png new file mode 100644 index 000000000..45da88e34 Binary files /dev/null and b/fonts/MiniwiFont/2887.png differ diff --git a/fonts/MiniwiFont/2888.png b/fonts/MiniwiFont/2888.png new file mode 100644 index 000000000..bb38b155c Binary files /dev/null and b/fonts/MiniwiFont/2888.png differ diff --git a/fonts/MiniwiFont/2889.png b/fonts/MiniwiFont/2889.png new file mode 100644 index 000000000..497386091 Binary files /dev/null and b/fonts/MiniwiFont/2889.png differ diff --git a/fonts/MiniwiFont/288A.png b/fonts/MiniwiFont/288A.png new file mode 100644 index 000000000..a99fb5b9f Binary files /dev/null and b/fonts/MiniwiFont/288A.png differ diff --git a/fonts/MiniwiFont/288B.png b/fonts/MiniwiFont/288B.png new file mode 100644 index 000000000..5e8f86789 Binary files /dev/null and b/fonts/MiniwiFont/288B.png differ diff --git a/fonts/MiniwiFont/288C.png b/fonts/MiniwiFont/288C.png new file mode 100644 index 000000000..406d6abae Binary files /dev/null and b/fonts/MiniwiFont/288C.png differ diff --git a/fonts/MiniwiFont/288D.png b/fonts/MiniwiFont/288D.png new file mode 100644 index 000000000..03006b94b Binary files /dev/null and b/fonts/MiniwiFont/288D.png differ diff --git a/fonts/MiniwiFont/288E.png b/fonts/MiniwiFont/288E.png new file mode 100644 index 000000000..d2bad874e Binary files /dev/null and b/fonts/MiniwiFont/288E.png differ diff --git a/fonts/MiniwiFont/288F.png b/fonts/MiniwiFont/288F.png new file mode 100644 index 000000000..ca709c626 Binary files /dev/null and b/fonts/MiniwiFont/288F.png differ diff --git a/fonts/MiniwiFont/2890.png b/fonts/MiniwiFont/2890.png new file mode 100644 index 000000000..aee3502e2 Binary files /dev/null and b/fonts/MiniwiFont/2890.png differ diff --git a/fonts/MiniwiFont/2891.png b/fonts/MiniwiFont/2891.png new file mode 100644 index 000000000..3711ee44d Binary files /dev/null and b/fonts/MiniwiFont/2891.png differ diff --git a/fonts/MiniwiFont/2892.png b/fonts/MiniwiFont/2892.png new file mode 100644 index 000000000..cbfb4e4b3 Binary files /dev/null and b/fonts/MiniwiFont/2892.png differ diff --git a/fonts/MiniwiFont/2893.png b/fonts/MiniwiFont/2893.png new file mode 100644 index 000000000..cbfb4e4b3 Binary files /dev/null and b/fonts/MiniwiFont/2893.png differ diff --git a/fonts/MiniwiFont/2894.png b/fonts/MiniwiFont/2894.png new file mode 100644 index 000000000..dc61bd537 Binary files /dev/null and b/fonts/MiniwiFont/2894.png differ diff --git a/fonts/MiniwiFont/2895.png b/fonts/MiniwiFont/2895.png new file mode 100644 index 000000000..ebb03850e Binary files /dev/null and b/fonts/MiniwiFont/2895.png differ diff --git a/fonts/MiniwiFont/2896.png b/fonts/MiniwiFont/2896.png new file mode 100644 index 000000000..75bba7f98 Binary files /dev/null and b/fonts/MiniwiFont/2896.png differ diff --git a/fonts/MiniwiFont/2897.png b/fonts/MiniwiFont/2897.png new file mode 100644 index 000000000..6a6bbd68b Binary files /dev/null and b/fonts/MiniwiFont/2897.png differ diff --git a/fonts/MiniwiFont/2898.png b/fonts/MiniwiFont/2898.png new file mode 100644 index 000000000..7bb279d5e Binary files /dev/null and b/fonts/MiniwiFont/2898.png differ diff --git a/fonts/MiniwiFont/2899.png b/fonts/MiniwiFont/2899.png new file mode 100644 index 000000000..ea39192ef Binary files /dev/null and b/fonts/MiniwiFont/2899.png differ diff --git a/fonts/MiniwiFont/289A.png b/fonts/MiniwiFont/289A.png new file mode 100644 index 000000000..c90347c31 Binary files /dev/null and b/fonts/MiniwiFont/289A.png differ diff --git a/fonts/MiniwiFont/289B.png b/fonts/MiniwiFont/289B.png new file mode 100644 index 000000000..64d7161c0 Binary files /dev/null and b/fonts/MiniwiFont/289B.png differ diff --git a/fonts/MiniwiFont/289C.png b/fonts/MiniwiFont/289C.png new file mode 100644 index 000000000..2131eb737 Binary files /dev/null and b/fonts/MiniwiFont/289C.png differ diff --git a/fonts/MiniwiFont/289D.png b/fonts/MiniwiFont/289D.png new file mode 100644 index 000000000..440c40d8e Binary files /dev/null and b/fonts/MiniwiFont/289D.png differ diff --git a/fonts/MiniwiFont/289E.png b/fonts/MiniwiFont/289E.png new file mode 100644 index 000000000..f345a6b38 Binary files /dev/null and b/fonts/MiniwiFont/289E.png differ diff --git a/fonts/MiniwiFont/289F.png b/fonts/MiniwiFont/289F.png new file mode 100644 index 000000000..47691be65 Binary files /dev/null and b/fonts/MiniwiFont/289F.png differ diff --git a/fonts/MiniwiFont/28A0.png b/fonts/MiniwiFont/28A0.png new file mode 100644 index 000000000..473a4b00b Binary files /dev/null and b/fonts/MiniwiFont/28A0.png differ diff --git a/fonts/MiniwiFont/28A1.png b/fonts/MiniwiFont/28A1.png new file mode 100644 index 000000000..7fe9e932e Binary files /dev/null and b/fonts/MiniwiFont/28A1.png differ diff --git a/fonts/MiniwiFont/28A2.png b/fonts/MiniwiFont/28A2.png new file mode 100644 index 000000000..e440854bd Binary files /dev/null and b/fonts/MiniwiFont/28A2.png differ diff --git a/fonts/MiniwiFont/28A3.png b/fonts/MiniwiFont/28A3.png new file mode 100644 index 000000000..933491ef9 Binary files /dev/null and b/fonts/MiniwiFont/28A3.png differ diff --git a/fonts/MiniwiFont/28A4.png b/fonts/MiniwiFont/28A4.png new file mode 100644 index 000000000..8fa33ab62 Binary files /dev/null and b/fonts/MiniwiFont/28A4.png differ diff --git a/fonts/MiniwiFont/28A5.png b/fonts/MiniwiFont/28A5.png new file mode 100644 index 000000000..ff59a7ead Binary files /dev/null and b/fonts/MiniwiFont/28A5.png differ diff --git a/fonts/MiniwiFont/28A6.png b/fonts/MiniwiFont/28A6.png new file mode 100644 index 000000000..b76c0c78e Binary files /dev/null and b/fonts/MiniwiFont/28A6.png differ diff --git a/fonts/MiniwiFont/28A7.png b/fonts/MiniwiFont/28A7.png new file mode 100644 index 000000000..965ec74e5 Binary files /dev/null and b/fonts/MiniwiFont/28A7.png differ diff --git a/fonts/MiniwiFont/28A8.png b/fonts/MiniwiFont/28A8.png new file mode 100644 index 000000000..de4177179 Binary files /dev/null and b/fonts/MiniwiFont/28A8.png differ diff --git a/fonts/MiniwiFont/28A9.png b/fonts/MiniwiFont/28A9.png new file mode 100644 index 000000000..943aa45c6 Binary files /dev/null and b/fonts/MiniwiFont/28A9.png differ diff --git a/fonts/MiniwiFont/28AA.png b/fonts/MiniwiFont/28AA.png new file mode 100644 index 000000000..f1374fa69 Binary files /dev/null and b/fonts/MiniwiFont/28AA.png differ diff --git a/fonts/MiniwiFont/28AB.png b/fonts/MiniwiFont/28AB.png new file mode 100644 index 000000000..c34a693a7 Binary files /dev/null and b/fonts/MiniwiFont/28AB.png differ diff --git a/fonts/MiniwiFont/28AC.png b/fonts/MiniwiFont/28AC.png new file mode 100644 index 000000000..33d274a2a Binary files /dev/null and b/fonts/MiniwiFont/28AC.png differ diff --git a/fonts/MiniwiFont/28AD.png b/fonts/MiniwiFont/28AD.png new file mode 100644 index 000000000..737dba8b7 Binary files /dev/null and b/fonts/MiniwiFont/28AD.png differ diff --git a/fonts/MiniwiFont/28AE.png b/fonts/MiniwiFont/28AE.png new file mode 100644 index 000000000..74fe9c2ee Binary files /dev/null and b/fonts/MiniwiFont/28AE.png differ diff --git a/fonts/MiniwiFont/28AF.png b/fonts/MiniwiFont/28AF.png new file mode 100644 index 000000000..e3b98e059 Binary files /dev/null and b/fonts/MiniwiFont/28AF.png differ diff --git a/fonts/MiniwiFont/28B0.png b/fonts/MiniwiFont/28B0.png new file mode 100644 index 000000000..79e4e7297 Binary files /dev/null and b/fonts/MiniwiFont/28B0.png differ diff --git a/fonts/MiniwiFont/28B1.png b/fonts/MiniwiFont/28B1.png new file mode 100644 index 000000000..fee2b4fa9 Binary files /dev/null and b/fonts/MiniwiFont/28B1.png differ diff --git a/fonts/MiniwiFont/28B2.png b/fonts/MiniwiFont/28B2.png new file mode 100644 index 000000000..9fcd97b6b Binary files /dev/null and b/fonts/MiniwiFont/28B2.png differ diff --git a/fonts/MiniwiFont/28B3.png b/fonts/MiniwiFont/28B3.png new file mode 100644 index 000000000..290dc72af Binary files /dev/null and b/fonts/MiniwiFont/28B3.png differ diff --git a/fonts/MiniwiFont/28B4.png b/fonts/MiniwiFont/28B4.png new file mode 100644 index 000000000..00d5b5227 Binary files /dev/null and b/fonts/MiniwiFont/28B4.png differ diff --git a/fonts/MiniwiFont/28B5.png b/fonts/MiniwiFont/28B5.png new file mode 100644 index 000000000..eca184580 Binary files /dev/null and b/fonts/MiniwiFont/28B5.png differ diff --git a/fonts/MiniwiFont/28B6.png b/fonts/MiniwiFont/28B6.png new file mode 100644 index 000000000..798bf4ce6 Binary files /dev/null and b/fonts/MiniwiFont/28B6.png differ diff --git a/fonts/MiniwiFont/28B7.png b/fonts/MiniwiFont/28B7.png new file mode 100644 index 000000000..f5254706d Binary files /dev/null and b/fonts/MiniwiFont/28B7.png differ diff --git a/fonts/MiniwiFont/28B8.png b/fonts/MiniwiFont/28B8.png new file mode 100644 index 000000000..0d1d35859 Binary files /dev/null and b/fonts/MiniwiFont/28B8.png differ diff --git a/fonts/MiniwiFont/28B9.png b/fonts/MiniwiFont/28B9.png new file mode 100644 index 000000000..e1a28e65e Binary files /dev/null and b/fonts/MiniwiFont/28B9.png differ diff --git a/fonts/MiniwiFont/28BA.png b/fonts/MiniwiFont/28BA.png new file mode 100644 index 000000000..c8f447a87 Binary files /dev/null and b/fonts/MiniwiFont/28BA.png differ diff --git a/fonts/MiniwiFont/28BB.png b/fonts/MiniwiFont/28BB.png new file mode 100644 index 000000000..9a8464fb9 Binary files /dev/null and b/fonts/MiniwiFont/28BB.png differ diff --git a/fonts/MiniwiFont/28BC.png b/fonts/MiniwiFont/28BC.png new file mode 100644 index 000000000..7e9d9006a Binary files /dev/null and b/fonts/MiniwiFont/28BC.png differ diff --git a/fonts/MiniwiFont/28BD.png b/fonts/MiniwiFont/28BD.png new file mode 100644 index 000000000..a8b4ff8fe Binary files /dev/null and b/fonts/MiniwiFont/28BD.png differ diff --git a/fonts/MiniwiFont/28BE.png b/fonts/MiniwiFont/28BE.png new file mode 100644 index 000000000..682ad1626 Binary files /dev/null and b/fonts/MiniwiFont/28BE.png differ diff --git a/fonts/MiniwiFont/28BF.png b/fonts/MiniwiFont/28BF.png new file mode 100644 index 000000000..9e46ca151 Binary files /dev/null and b/fonts/MiniwiFont/28BF.png differ diff --git a/fonts/MiniwiFont/28C0.png b/fonts/MiniwiFont/28C0.png new file mode 100644 index 000000000..b4a354356 Binary files /dev/null and b/fonts/MiniwiFont/28C0.png differ diff --git a/fonts/MiniwiFont/28C1.png b/fonts/MiniwiFont/28C1.png new file mode 100644 index 000000000..6558b14b5 Binary files /dev/null and b/fonts/MiniwiFont/28C1.png differ diff --git a/fonts/MiniwiFont/28C2.png b/fonts/MiniwiFont/28C2.png new file mode 100644 index 000000000..d6488cba2 Binary files /dev/null and b/fonts/MiniwiFont/28C2.png differ diff --git a/fonts/MiniwiFont/28C3.png b/fonts/MiniwiFont/28C3.png new file mode 100644 index 000000000..c8baf820a Binary files /dev/null and b/fonts/MiniwiFont/28C3.png differ diff --git a/fonts/MiniwiFont/28C4.png b/fonts/MiniwiFont/28C4.png new file mode 100644 index 000000000..865414d17 Binary files /dev/null and b/fonts/MiniwiFont/28C4.png differ diff --git a/fonts/MiniwiFont/28C5.png b/fonts/MiniwiFont/28C5.png new file mode 100644 index 000000000..8864adc68 Binary files /dev/null and b/fonts/MiniwiFont/28C5.png differ diff --git a/fonts/MiniwiFont/28C6.png b/fonts/MiniwiFont/28C6.png new file mode 100644 index 000000000..82a8a69be Binary files /dev/null and b/fonts/MiniwiFont/28C6.png differ diff --git a/fonts/MiniwiFont/28C7.png b/fonts/MiniwiFont/28C7.png new file mode 100644 index 000000000..7045a7c74 Binary files /dev/null and b/fonts/MiniwiFont/28C7.png differ diff --git a/fonts/MiniwiFont/28C8.png b/fonts/MiniwiFont/28C8.png new file mode 100644 index 000000000..661483899 Binary files /dev/null and b/fonts/MiniwiFont/28C8.png differ diff --git a/fonts/MiniwiFont/28C9.png b/fonts/MiniwiFont/28C9.png new file mode 100644 index 000000000..664ba8fca Binary files /dev/null and b/fonts/MiniwiFont/28C9.png differ diff --git a/fonts/MiniwiFont/28CA.png b/fonts/MiniwiFont/28CA.png new file mode 100644 index 000000000..a4378ef52 Binary files /dev/null and b/fonts/MiniwiFont/28CA.png differ diff --git a/fonts/MiniwiFont/28CB.png b/fonts/MiniwiFont/28CB.png new file mode 100644 index 000000000..3e09c1e37 Binary files /dev/null and b/fonts/MiniwiFont/28CB.png differ diff --git a/fonts/MiniwiFont/28CC.png b/fonts/MiniwiFont/28CC.png new file mode 100644 index 000000000..94af79445 Binary files /dev/null and b/fonts/MiniwiFont/28CC.png differ diff --git a/fonts/MiniwiFont/28CD.png b/fonts/MiniwiFont/28CD.png new file mode 100644 index 000000000..20301cbcd Binary files /dev/null and b/fonts/MiniwiFont/28CD.png differ diff --git a/fonts/MiniwiFont/28CE.png b/fonts/MiniwiFont/28CE.png new file mode 100644 index 000000000..790af18a0 Binary files /dev/null and b/fonts/MiniwiFont/28CE.png differ diff --git a/fonts/MiniwiFont/28CF.png b/fonts/MiniwiFont/28CF.png new file mode 100644 index 000000000..43923aa20 Binary files /dev/null and b/fonts/MiniwiFont/28CF.png differ diff --git a/fonts/MiniwiFont/28D0.png b/fonts/MiniwiFont/28D0.png new file mode 100644 index 000000000..580370b0c Binary files /dev/null and b/fonts/MiniwiFont/28D0.png differ diff --git a/fonts/MiniwiFont/28D1.png b/fonts/MiniwiFont/28D1.png new file mode 100644 index 000000000..10c61aa32 Binary files /dev/null and b/fonts/MiniwiFont/28D1.png differ diff --git a/fonts/MiniwiFont/28D2.png b/fonts/MiniwiFont/28D2.png new file mode 100644 index 000000000..d0f761eba Binary files /dev/null and b/fonts/MiniwiFont/28D2.png differ diff --git a/fonts/MiniwiFont/28D3.png b/fonts/MiniwiFont/28D3.png new file mode 100644 index 000000000..bbce92b3e Binary files /dev/null and b/fonts/MiniwiFont/28D3.png differ diff --git a/fonts/MiniwiFont/28D4.png b/fonts/MiniwiFont/28D4.png new file mode 100644 index 000000000..3272df51a Binary files /dev/null and b/fonts/MiniwiFont/28D4.png differ diff --git a/fonts/MiniwiFont/28D5.png b/fonts/MiniwiFont/28D5.png new file mode 100644 index 000000000..466fdb27a Binary files /dev/null and b/fonts/MiniwiFont/28D5.png differ diff --git a/fonts/MiniwiFont/28D6.png b/fonts/MiniwiFont/28D6.png new file mode 100644 index 000000000..d0f75a658 Binary files /dev/null and b/fonts/MiniwiFont/28D6.png differ diff --git a/fonts/MiniwiFont/28D7.png b/fonts/MiniwiFont/28D7.png new file mode 100644 index 000000000..9165d3652 Binary files /dev/null and b/fonts/MiniwiFont/28D7.png differ diff --git a/fonts/MiniwiFont/28D8.png b/fonts/MiniwiFont/28D8.png new file mode 100644 index 000000000..dd1133daa Binary files /dev/null and b/fonts/MiniwiFont/28D8.png differ diff --git a/fonts/MiniwiFont/28D9.png b/fonts/MiniwiFont/28D9.png new file mode 100644 index 000000000..c01cc34e6 Binary files /dev/null and b/fonts/MiniwiFont/28D9.png differ diff --git a/fonts/MiniwiFont/28DA.png b/fonts/MiniwiFont/28DA.png new file mode 100644 index 000000000..fa6db3ebb Binary files /dev/null and b/fonts/MiniwiFont/28DA.png differ diff --git a/fonts/MiniwiFont/28DB.png b/fonts/MiniwiFont/28DB.png new file mode 100644 index 000000000..1d8a8beb2 Binary files /dev/null and b/fonts/MiniwiFont/28DB.png differ diff --git a/fonts/MiniwiFont/28DC.png b/fonts/MiniwiFont/28DC.png new file mode 100644 index 000000000..66f3976bf Binary files /dev/null and b/fonts/MiniwiFont/28DC.png differ diff --git a/fonts/MiniwiFont/28DD.png b/fonts/MiniwiFont/28DD.png new file mode 100644 index 000000000..66f3976bf Binary files /dev/null and b/fonts/MiniwiFont/28DD.png differ diff --git a/fonts/MiniwiFont/28DE.png b/fonts/MiniwiFont/28DE.png new file mode 100644 index 000000000..f1d7a61ef Binary files /dev/null and b/fonts/MiniwiFont/28DE.png differ diff --git a/fonts/MiniwiFont/28DF.png b/fonts/MiniwiFont/28DF.png new file mode 100644 index 000000000..20757cc2d Binary files /dev/null and b/fonts/MiniwiFont/28DF.png differ diff --git a/fonts/MiniwiFont/28E0.png b/fonts/MiniwiFont/28E0.png new file mode 100644 index 000000000..07aaea543 Binary files /dev/null and b/fonts/MiniwiFont/28E0.png differ diff --git a/fonts/MiniwiFont/28E1.png b/fonts/MiniwiFont/28E1.png new file mode 100644 index 000000000..9b2389994 Binary files /dev/null and b/fonts/MiniwiFont/28E1.png differ diff --git a/fonts/MiniwiFont/28E2.png b/fonts/MiniwiFont/28E2.png new file mode 100644 index 000000000..fbde990ec Binary files /dev/null and b/fonts/MiniwiFont/28E2.png differ diff --git a/fonts/MiniwiFont/28E3.png b/fonts/MiniwiFont/28E3.png new file mode 100644 index 000000000..b0633493c Binary files /dev/null and b/fonts/MiniwiFont/28E3.png differ diff --git a/fonts/MiniwiFont/28E4.png b/fonts/MiniwiFont/28E4.png new file mode 100644 index 000000000..e8831996c Binary files /dev/null and b/fonts/MiniwiFont/28E4.png differ diff --git a/fonts/MiniwiFont/28E5.png b/fonts/MiniwiFont/28E5.png new file mode 100644 index 000000000..662819581 Binary files /dev/null and b/fonts/MiniwiFont/28E5.png differ diff --git a/fonts/MiniwiFont/28E6.png b/fonts/MiniwiFont/28E6.png new file mode 100644 index 000000000..5506b1ae6 Binary files /dev/null and b/fonts/MiniwiFont/28E6.png differ diff --git a/fonts/MiniwiFont/28E7.png b/fonts/MiniwiFont/28E7.png new file mode 100644 index 000000000..0b37b6150 Binary files /dev/null and b/fonts/MiniwiFont/28E7.png differ diff --git a/fonts/MiniwiFont/28E8.png b/fonts/MiniwiFont/28E8.png new file mode 100644 index 000000000..23a6c7d97 Binary files /dev/null and b/fonts/MiniwiFont/28E8.png differ diff --git a/fonts/MiniwiFont/28E9.png b/fonts/MiniwiFont/28E9.png new file mode 100644 index 000000000..5d3063f27 Binary files /dev/null and b/fonts/MiniwiFont/28E9.png differ diff --git a/fonts/MiniwiFont/28EA.png b/fonts/MiniwiFont/28EA.png new file mode 100644 index 000000000..689c548dc Binary files /dev/null and b/fonts/MiniwiFont/28EA.png differ diff --git a/fonts/MiniwiFont/28EB.png b/fonts/MiniwiFont/28EB.png new file mode 100644 index 000000000..46d16c2b9 Binary files /dev/null and b/fonts/MiniwiFont/28EB.png differ diff --git a/fonts/MiniwiFont/28EC.png b/fonts/MiniwiFont/28EC.png new file mode 100644 index 000000000..e996467eb Binary files /dev/null and b/fonts/MiniwiFont/28EC.png differ diff --git a/fonts/MiniwiFont/28ED.png b/fonts/MiniwiFont/28ED.png new file mode 100644 index 000000000..b8b823eee Binary files /dev/null and b/fonts/MiniwiFont/28ED.png differ diff --git a/fonts/MiniwiFont/28EE.png b/fonts/MiniwiFont/28EE.png new file mode 100644 index 000000000..eae3819f8 Binary files /dev/null and b/fonts/MiniwiFont/28EE.png differ diff --git a/fonts/MiniwiFont/28EF.png b/fonts/MiniwiFont/28EF.png new file mode 100644 index 000000000..09b107227 Binary files /dev/null and b/fonts/MiniwiFont/28EF.png differ diff --git a/fonts/MiniwiFont/28F0.png b/fonts/MiniwiFont/28F0.png new file mode 100644 index 000000000..822dcce26 Binary files /dev/null and b/fonts/MiniwiFont/28F0.png differ diff --git a/fonts/MiniwiFont/28F1.png b/fonts/MiniwiFont/28F1.png new file mode 100644 index 000000000..6a5e4c669 Binary files /dev/null and b/fonts/MiniwiFont/28F1.png differ diff --git a/fonts/MiniwiFont/28F2.png b/fonts/MiniwiFont/28F2.png new file mode 100644 index 000000000..4429f1d69 Binary files /dev/null and b/fonts/MiniwiFont/28F2.png differ diff --git a/fonts/MiniwiFont/28F3.png b/fonts/MiniwiFont/28F3.png new file mode 100644 index 000000000..99a9249e1 Binary files /dev/null and b/fonts/MiniwiFont/28F3.png differ diff --git a/fonts/MiniwiFont/28F4.png b/fonts/MiniwiFont/28F4.png new file mode 100644 index 000000000..04dfd8dc3 Binary files /dev/null and b/fonts/MiniwiFont/28F4.png differ diff --git a/fonts/MiniwiFont/28F5.png b/fonts/MiniwiFont/28F5.png new file mode 100644 index 000000000..0a0710746 Binary files /dev/null and b/fonts/MiniwiFont/28F5.png differ diff --git a/fonts/MiniwiFont/28F6.png b/fonts/MiniwiFont/28F6.png new file mode 100644 index 000000000..6a73729b4 Binary files /dev/null and b/fonts/MiniwiFont/28F6.png differ diff --git a/fonts/MiniwiFont/28F7.png b/fonts/MiniwiFont/28F7.png new file mode 100644 index 000000000..87abbf923 Binary files /dev/null and b/fonts/MiniwiFont/28F7.png differ diff --git a/fonts/MiniwiFont/28F8.png b/fonts/MiniwiFont/28F8.png new file mode 100644 index 000000000..3062cce66 Binary files /dev/null and b/fonts/MiniwiFont/28F8.png differ diff --git a/fonts/MiniwiFont/28F9.png b/fonts/MiniwiFont/28F9.png new file mode 100644 index 000000000..0f2b29748 Binary files /dev/null and b/fonts/MiniwiFont/28F9.png differ diff --git a/fonts/MiniwiFont/28FA.png b/fonts/MiniwiFont/28FA.png new file mode 100644 index 000000000..e1812224b Binary files /dev/null and b/fonts/MiniwiFont/28FA.png differ diff --git a/fonts/MiniwiFont/28FB.png b/fonts/MiniwiFont/28FB.png new file mode 100644 index 000000000..7d29f4218 Binary files /dev/null and b/fonts/MiniwiFont/28FB.png differ diff --git a/fonts/MiniwiFont/28FC.png b/fonts/MiniwiFont/28FC.png new file mode 100644 index 000000000..10f6b64d2 Binary files /dev/null and b/fonts/MiniwiFont/28FC.png differ diff --git a/fonts/MiniwiFont/28FD.png b/fonts/MiniwiFont/28FD.png new file mode 100644 index 000000000..622b92132 Binary files /dev/null and b/fonts/MiniwiFont/28FD.png differ diff --git a/fonts/MiniwiFont/28FE.png b/fonts/MiniwiFont/28FE.png new file mode 100644 index 000000000..f06dd75ad Binary files /dev/null and b/fonts/MiniwiFont/28FE.png differ diff --git a/fonts/MiniwiFont/28FF.png b/fonts/MiniwiFont/28FF.png new file mode 100644 index 000000000..694c67ff2 Binary files /dev/null and b/fonts/MiniwiFont/28FF.png differ diff --git a/fonts/MiniwiFont/2AD3.png b/fonts/MiniwiFont/2AD3.png new file mode 100644 index 000000000..286485482 Binary files /dev/null and b/fonts/MiniwiFont/2AD3.png differ diff --git a/fonts/MiniwiFont/E01E.png b/fonts/MiniwiFont/E01E.png new file mode 100644 index 000000000..218ea7e1e Binary files /dev/null and b/fonts/MiniwiFont/E01E.png differ diff --git a/fonts/MiniwiFont/F6BE.png b/fonts/MiniwiFont/F6BE.png new file mode 100644 index 000000000..a7da8675c Binary files /dev/null and b/fonts/MiniwiFont/F6BE.png differ diff --git a/fonts/MiniwiFont/F8E5.png b/fonts/MiniwiFont/F8E5.png new file mode 100644 index 000000000..717b8edc9 Binary files /dev/null and b/fonts/MiniwiFont/F8E5.png differ diff --git a/fonts/MiniwiFont/F8E6.png b/fonts/MiniwiFont/F8E6.png new file mode 100644 index 000000000..6c0ffabc7 Binary files /dev/null and b/fonts/MiniwiFont/F8E6.png differ diff --git a/fonts/MiniwiFont/F8E7.png b/fonts/MiniwiFont/F8E7.png new file mode 100644 index 000000000..79b3849ac Binary files /dev/null and b/fonts/MiniwiFont/F8E7.png differ diff --git a/fonts/MiniwiFont/F8E8.png b/fonts/MiniwiFont/F8E8.png new file mode 100644 index 000000000..bd775ad25 Binary files /dev/null and b/fonts/MiniwiFont/F8E8.png differ diff --git a/fonts/MiniwiFont/F8E9.png b/fonts/MiniwiFont/F8E9.png new file mode 100644 index 000000000..ce88834f0 Binary files /dev/null and b/fonts/MiniwiFont/F8E9.png differ diff --git a/fonts/MiniwiFont/F8EA.png b/fonts/MiniwiFont/F8EA.png new file mode 100644 index 000000000..37ca4f729 Binary files /dev/null and b/fonts/MiniwiFont/F8EA.png differ diff --git a/fonts/MiniwiFont/F8EB.png b/fonts/MiniwiFont/F8EB.png new file mode 100644 index 000000000..2d1264f03 Binary files /dev/null and b/fonts/MiniwiFont/F8EB.png differ diff --git a/fonts/MiniwiFont/F8EC.png b/fonts/MiniwiFont/F8EC.png new file mode 100644 index 000000000..9c7821ba4 Binary files /dev/null and b/fonts/MiniwiFont/F8EC.png differ diff --git a/fonts/MiniwiFont/F8ED.png b/fonts/MiniwiFont/F8ED.png new file mode 100644 index 000000000..987fcf136 Binary files /dev/null and b/fonts/MiniwiFont/F8ED.png differ diff --git a/fonts/MiniwiFont/F8EE.png b/fonts/MiniwiFont/F8EE.png new file mode 100644 index 000000000..aa65b0477 Binary files /dev/null and b/fonts/MiniwiFont/F8EE.png differ diff --git a/fonts/MiniwiFont/F8EF.png b/fonts/MiniwiFont/F8EF.png new file mode 100644 index 000000000..9c7821ba4 Binary files /dev/null and b/fonts/MiniwiFont/F8EF.png differ diff --git a/fonts/MiniwiFont/F8F0.png b/fonts/MiniwiFont/F8F0.png new file mode 100644 index 000000000..8e5ed34d3 Binary files /dev/null and b/fonts/MiniwiFont/F8F0.png differ diff --git a/fonts/MiniwiFont/F8F1.png b/fonts/MiniwiFont/F8F1.png new file mode 100644 index 000000000..e81cfa73e Binary files /dev/null and b/fonts/MiniwiFont/F8F1.png differ diff --git a/fonts/MiniwiFont/F8F2.png b/fonts/MiniwiFont/F8F2.png new file mode 100644 index 000000000..2a93d62a3 Binary files /dev/null and b/fonts/MiniwiFont/F8F2.png differ diff --git a/fonts/MiniwiFont/F8F3.png b/fonts/MiniwiFont/F8F3.png new file mode 100644 index 000000000..74f470614 Binary files /dev/null and b/fonts/MiniwiFont/F8F3.png differ diff --git a/fonts/MiniwiFont/F8F4.png b/fonts/MiniwiFont/F8F4.png new file mode 100644 index 000000000..e7248555f Binary files /dev/null and b/fonts/MiniwiFont/F8F4.png differ diff --git a/fonts/MiniwiFont/F8F5.png b/fonts/MiniwiFont/F8F5.png new file mode 100644 index 000000000..2fa40b9cd Binary files /dev/null and b/fonts/MiniwiFont/F8F5.png differ diff --git a/fonts/MiniwiFont/F8F6.png b/fonts/MiniwiFont/F8F6.png new file mode 100644 index 000000000..a8d8c0b39 Binary files /dev/null and b/fonts/MiniwiFont/F8F6.png differ diff --git a/fonts/MiniwiFont/F8F7.png b/fonts/MiniwiFont/F8F7.png new file mode 100644 index 000000000..d46e9573c Binary files /dev/null and b/fonts/MiniwiFont/F8F7.png differ diff --git a/fonts/MiniwiFont/F8F8.png b/fonts/MiniwiFont/F8F8.png new file mode 100644 index 000000000..51c364823 Binary files /dev/null and b/fonts/MiniwiFont/F8F8.png differ diff --git a/fonts/MiniwiFont/F8F9.png b/fonts/MiniwiFont/F8F9.png new file mode 100644 index 000000000..2c76013a6 Binary files /dev/null and b/fonts/MiniwiFont/F8F9.png differ diff --git a/fonts/MiniwiFont/F8FA.png b/fonts/MiniwiFont/F8FA.png new file mode 100644 index 000000000..9c7821ba4 Binary files /dev/null and b/fonts/MiniwiFont/F8FA.png differ diff --git a/fonts/MiniwiFont/F8FB.png b/fonts/MiniwiFont/F8FB.png new file mode 100644 index 000000000..da26fab04 Binary files /dev/null and b/fonts/MiniwiFont/F8FB.png differ diff --git a/fonts/MiniwiFont/F8FC.png b/fonts/MiniwiFont/F8FC.png new file mode 100644 index 000000000..2ce09dd97 Binary files /dev/null and b/fonts/MiniwiFont/F8FC.png differ diff --git a/fonts/MiniwiFont/F8FD.png b/fonts/MiniwiFont/F8FD.png new file mode 100644 index 000000000..85488bce3 Binary files /dev/null and b/fonts/MiniwiFont/F8FD.png differ diff --git a/fonts/MiniwiFont/F8FE.png b/fonts/MiniwiFont/F8FE.png new file mode 100644 index 000000000..a7a509351 Binary files /dev/null and b/fonts/MiniwiFont/F8FE.png differ diff --git a/fonts/MiniwiFont/F8FF.png b/fonts/MiniwiFont/F8FF.png new file mode 100644 index 000000000..9a7d3aa41 Binary files /dev/null and b/fonts/MiniwiFont/F8FF.png differ diff --git a/fonts/MiniwiFont/FB00.png b/fonts/MiniwiFont/FB00.png new file mode 100644 index 000000000..9881bb581 Binary files /dev/null and b/fonts/MiniwiFont/FB00.png differ diff --git a/fonts/MiniwiFont/FB01.png b/fonts/MiniwiFont/FB01.png new file mode 100644 index 000000000..3c131c9d4 Binary files /dev/null and b/fonts/MiniwiFont/FB01.png differ diff --git a/fonts/MiniwiFont/FB02.png b/fonts/MiniwiFont/FB02.png new file mode 100644 index 000000000..a8521c9c8 Binary files /dev/null and b/fonts/MiniwiFont/FB02.png differ diff --git a/fonts/MiniwiFont/FB03.png b/fonts/MiniwiFont/FB03.png new file mode 100644 index 000000000..75b7ef6c0 Binary files /dev/null and b/fonts/MiniwiFont/FB03.png differ diff --git a/fonts/MiniwiFont/FB04.png b/fonts/MiniwiFont/FB04.png new file mode 100644 index 000000000..ad65a9d31 Binary files /dev/null and b/fonts/MiniwiFont/FB04.png differ diff --git a/fonts/MiniwiFont/FF01.png b/fonts/MiniwiFont/FF01.png new file mode 100644 index 000000000..6fca77519 Binary files /dev/null and b/fonts/MiniwiFont/FF01.png differ diff --git a/fonts/MiniwiFont/FF03.png b/fonts/MiniwiFont/FF03.png new file mode 100644 index 000000000..0df962d7c Binary files /dev/null and b/fonts/MiniwiFont/FF03.png differ diff --git a/fonts/MiniwiFont/FF04.png b/fonts/MiniwiFont/FF04.png new file mode 100644 index 000000000..093e4f679 Binary files /dev/null and b/fonts/MiniwiFont/FF04.png differ diff --git a/fonts/MiniwiFont/FF05.png b/fonts/MiniwiFont/FF05.png new file mode 100644 index 000000000..8cebff1af Binary files /dev/null and b/fonts/MiniwiFont/FF05.png differ diff --git a/fonts/MiniwiFont/FF06.png b/fonts/MiniwiFont/FF06.png new file mode 100644 index 000000000..2a01f637f Binary files /dev/null and b/fonts/MiniwiFont/FF06.png differ diff --git a/fonts/MiniwiFont/FF08.png b/fonts/MiniwiFont/FF08.png new file mode 100644 index 000000000..0a95c912e Binary files /dev/null and b/fonts/MiniwiFont/FF08.png differ diff --git a/fonts/MiniwiFont/FF09.png b/fonts/MiniwiFont/FF09.png new file mode 100644 index 000000000..98aeadb2d Binary files /dev/null and b/fonts/MiniwiFont/FF09.png differ diff --git a/fonts/MiniwiFont/FF0A.png b/fonts/MiniwiFont/FF0A.png new file mode 100644 index 000000000..c11889890 Binary files /dev/null and b/fonts/MiniwiFont/FF0A.png differ diff --git a/fonts/MiniwiFont/FF0B.png b/fonts/MiniwiFont/FF0B.png new file mode 100644 index 000000000..fb83a796c Binary files /dev/null and b/fonts/MiniwiFont/FF0B.png differ diff --git a/fonts/MiniwiFont/FF0C.png b/fonts/MiniwiFont/FF0C.png new file mode 100644 index 000000000..7390bedd8 Binary files /dev/null and b/fonts/MiniwiFont/FF0C.png differ diff --git a/fonts/MiniwiFont/FF0E.png b/fonts/MiniwiFont/FF0E.png new file mode 100644 index 000000000..a0d4d150b Binary files /dev/null and b/fonts/MiniwiFont/FF0E.png differ diff --git a/fonts/MiniwiFont/FF0F.png b/fonts/MiniwiFont/FF0F.png new file mode 100644 index 000000000..9b4b63bf9 Binary files /dev/null and b/fonts/MiniwiFont/FF0F.png differ diff --git a/fonts/MiniwiFont/FF10.png b/fonts/MiniwiFont/FF10.png new file mode 100644 index 000000000..b4cf34ebb Binary files /dev/null and b/fonts/MiniwiFont/FF10.png differ diff --git a/fonts/MiniwiFont/FF11.png b/fonts/MiniwiFont/FF11.png new file mode 100644 index 000000000..dcbc23373 Binary files /dev/null and b/fonts/MiniwiFont/FF11.png differ diff --git a/fonts/MiniwiFont/FF12.png b/fonts/MiniwiFont/FF12.png new file mode 100644 index 000000000..dc8214b05 Binary files /dev/null and b/fonts/MiniwiFont/FF12.png differ diff --git a/fonts/MiniwiFont/FF13.png b/fonts/MiniwiFont/FF13.png new file mode 100644 index 000000000..eafdf03cd Binary files /dev/null and b/fonts/MiniwiFont/FF13.png differ diff --git a/fonts/MiniwiFont/FF14.png b/fonts/MiniwiFont/FF14.png new file mode 100644 index 000000000..57d51444b Binary files /dev/null and b/fonts/MiniwiFont/FF14.png differ diff --git a/fonts/MiniwiFont/FF15.png b/fonts/MiniwiFont/FF15.png new file mode 100644 index 000000000..e603526d1 Binary files /dev/null and b/fonts/MiniwiFont/FF15.png differ diff --git a/fonts/MiniwiFont/FF16.png b/fonts/MiniwiFont/FF16.png new file mode 100644 index 000000000..00eceda72 Binary files /dev/null and b/fonts/MiniwiFont/FF16.png differ diff --git a/fonts/MiniwiFont/FF17.png b/fonts/MiniwiFont/FF17.png new file mode 100644 index 000000000..5172b8b4e Binary files /dev/null and b/fonts/MiniwiFont/FF17.png differ diff --git a/fonts/MiniwiFont/FF18.png b/fonts/MiniwiFont/FF18.png new file mode 100644 index 000000000..415e36cba Binary files /dev/null and b/fonts/MiniwiFont/FF18.png differ diff --git a/fonts/MiniwiFont/FF19.png b/fonts/MiniwiFont/FF19.png new file mode 100644 index 000000000..39cdd1ee3 Binary files /dev/null and b/fonts/MiniwiFont/FF19.png differ diff --git a/fonts/MiniwiFont/FF1A.png b/fonts/MiniwiFont/FF1A.png new file mode 100644 index 000000000..eaa109f56 Binary files /dev/null and b/fonts/MiniwiFont/FF1A.png differ diff --git a/fonts/MiniwiFont/FF1B.png b/fonts/MiniwiFont/FF1B.png new file mode 100644 index 000000000..4f98cacea Binary files /dev/null and b/fonts/MiniwiFont/FF1B.png differ diff --git a/fonts/MiniwiFont/FF1C.png b/fonts/MiniwiFont/FF1C.png new file mode 100644 index 000000000..823e691a3 Binary files /dev/null and b/fonts/MiniwiFont/FF1C.png differ diff --git a/fonts/MiniwiFont/FF1D.png b/fonts/MiniwiFont/FF1D.png new file mode 100644 index 000000000..cfd844320 Binary files /dev/null and b/fonts/MiniwiFont/FF1D.png differ diff --git a/fonts/MiniwiFont/FF1E.png b/fonts/MiniwiFont/FF1E.png new file mode 100644 index 000000000..fcdfe1317 Binary files /dev/null and b/fonts/MiniwiFont/FF1E.png differ diff --git a/fonts/MiniwiFont/FF1F.png b/fonts/MiniwiFont/FF1F.png new file mode 100644 index 000000000..728877ebe Binary files /dev/null and b/fonts/MiniwiFont/FF1F.png differ diff --git a/fonts/MiniwiFont/FF20.png b/fonts/MiniwiFont/FF20.png new file mode 100644 index 000000000..db386dd7a Binary files /dev/null and b/fonts/MiniwiFont/FF20.png differ diff --git a/fonts/MiniwiFont/FF21.png b/fonts/MiniwiFont/FF21.png new file mode 100644 index 000000000..47f77092e Binary files /dev/null and b/fonts/MiniwiFont/FF21.png differ diff --git a/fonts/MiniwiFont/FF22.png b/fonts/MiniwiFont/FF22.png new file mode 100644 index 000000000..fb875ce89 Binary files /dev/null and b/fonts/MiniwiFont/FF22.png differ diff --git a/fonts/MiniwiFont/FF23.png b/fonts/MiniwiFont/FF23.png new file mode 100644 index 000000000..633c60ae1 Binary files /dev/null and b/fonts/MiniwiFont/FF23.png differ diff --git a/fonts/MiniwiFont/FF24.png b/fonts/MiniwiFont/FF24.png new file mode 100644 index 000000000..89ba0d772 Binary files /dev/null and b/fonts/MiniwiFont/FF24.png differ diff --git a/fonts/MiniwiFont/FF25.png b/fonts/MiniwiFont/FF25.png new file mode 100644 index 000000000..29b22e3e0 Binary files /dev/null and b/fonts/MiniwiFont/FF25.png differ diff --git a/fonts/MiniwiFont/FF26.png b/fonts/MiniwiFont/FF26.png new file mode 100644 index 000000000..1116836a3 Binary files /dev/null and b/fonts/MiniwiFont/FF26.png differ diff --git a/fonts/MiniwiFont/FF27.png b/fonts/MiniwiFont/FF27.png new file mode 100644 index 000000000..c21b03cbe Binary files /dev/null and b/fonts/MiniwiFont/FF27.png differ diff --git a/fonts/MiniwiFont/FF28.png b/fonts/MiniwiFont/FF28.png new file mode 100644 index 000000000..16e7067f2 Binary files /dev/null and b/fonts/MiniwiFont/FF28.png differ diff --git a/fonts/MiniwiFont/FF29.png b/fonts/MiniwiFont/FF29.png new file mode 100644 index 000000000..142082a5d Binary files /dev/null and b/fonts/MiniwiFont/FF29.png differ diff --git a/fonts/MiniwiFont/FF2A.png b/fonts/MiniwiFont/FF2A.png new file mode 100644 index 000000000..9b7e02f21 Binary files /dev/null and b/fonts/MiniwiFont/FF2A.png differ diff --git a/fonts/MiniwiFont/FF2B.png b/fonts/MiniwiFont/FF2B.png new file mode 100644 index 000000000..5675f1ed1 Binary files /dev/null and b/fonts/MiniwiFont/FF2B.png differ diff --git a/fonts/MiniwiFont/FF2C.png b/fonts/MiniwiFont/FF2C.png new file mode 100644 index 000000000..1501c19c7 Binary files /dev/null and b/fonts/MiniwiFont/FF2C.png differ diff --git a/fonts/MiniwiFont/FF2D.png b/fonts/MiniwiFont/FF2D.png new file mode 100644 index 000000000..8908ebbda Binary files /dev/null and b/fonts/MiniwiFont/FF2D.png differ diff --git a/fonts/MiniwiFont/FF2E.png b/fonts/MiniwiFont/FF2E.png new file mode 100644 index 000000000..c24cf0f94 Binary files /dev/null and b/fonts/MiniwiFont/FF2E.png differ diff --git a/fonts/MiniwiFont/FF2F.png b/fonts/MiniwiFont/FF2F.png new file mode 100644 index 000000000..24b0c66d1 Binary files /dev/null and b/fonts/MiniwiFont/FF2F.png differ diff --git a/fonts/MiniwiFont/FF30.png b/fonts/MiniwiFont/FF30.png new file mode 100644 index 000000000..e0a42b7a6 Binary files /dev/null and b/fonts/MiniwiFont/FF30.png differ diff --git a/fonts/MiniwiFont/FF31.png b/fonts/MiniwiFont/FF31.png new file mode 100644 index 000000000..4cfc99ec7 Binary files /dev/null and b/fonts/MiniwiFont/FF31.png differ diff --git a/fonts/MiniwiFont/FF32.png b/fonts/MiniwiFont/FF32.png new file mode 100644 index 000000000..5fb02610c Binary files /dev/null and b/fonts/MiniwiFont/FF32.png differ diff --git a/fonts/MiniwiFont/FF33.png b/fonts/MiniwiFont/FF33.png new file mode 100644 index 000000000..2de5572a7 Binary files /dev/null and b/fonts/MiniwiFont/FF33.png differ diff --git a/fonts/MiniwiFont/FF34.png b/fonts/MiniwiFont/FF34.png new file mode 100644 index 000000000..2b4e88955 Binary files /dev/null and b/fonts/MiniwiFont/FF34.png differ diff --git a/fonts/MiniwiFont/FF35.png b/fonts/MiniwiFont/FF35.png new file mode 100644 index 000000000..b6da414bb Binary files /dev/null and b/fonts/MiniwiFont/FF35.png differ diff --git a/fonts/MiniwiFont/FF36.png b/fonts/MiniwiFont/FF36.png new file mode 100644 index 000000000..921c7bacb Binary files /dev/null and b/fonts/MiniwiFont/FF36.png differ diff --git a/fonts/MiniwiFont/FF37.png b/fonts/MiniwiFont/FF37.png new file mode 100644 index 000000000..9f72734c4 Binary files /dev/null and b/fonts/MiniwiFont/FF37.png differ diff --git a/fonts/MiniwiFont/FF38.png b/fonts/MiniwiFont/FF38.png new file mode 100644 index 000000000..96f9c0d62 Binary files /dev/null and b/fonts/MiniwiFont/FF38.png differ diff --git a/fonts/MiniwiFont/FF39.png b/fonts/MiniwiFont/FF39.png new file mode 100644 index 000000000..5756e7bc7 Binary files /dev/null and b/fonts/MiniwiFont/FF39.png differ diff --git a/fonts/MiniwiFont/FF3A.png b/fonts/MiniwiFont/FF3A.png new file mode 100644 index 000000000..b58dd2221 Binary files /dev/null and b/fonts/MiniwiFont/FF3A.png differ diff --git a/fonts/MiniwiFont/FF3B.png b/fonts/MiniwiFont/FF3B.png new file mode 100644 index 000000000..1dbc1c136 Binary files /dev/null and b/fonts/MiniwiFont/FF3B.png differ diff --git a/fonts/MiniwiFont/FF3C.png b/fonts/MiniwiFont/FF3C.png new file mode 100644 index 000000000..64ad1c20b Binary files /dev/null and b/fonts/MiniwiFont/FF3C.png differ diff --git a/fonts/MiniwiFont/FF3D.png b/fonts/MiniwiFont/FF3D.png new file mode 100644 index 000000000..6d17e2157 Binary files /dev/null and b/fonts/MiniwiFont/FF3D.png differ diff --git a/fonts/MiniwiFont/FF3E.png b/fonts/MiniwiFont/FF3E.png new file mode 100644 index 000000000..494714971 Binary files /dev/null and b/fonts/MiniwiFont/FF3E.png differ diff --git a/fonts/MiniwiFont/FF3F.png b/fonts/MiniwiFont/FF3F.png new file mode 100644 index 000000000..7de06927d Binary files /dev/null and b/fonts/MiniwiFont/FF3F.png differ diff --git a/fonts/MiniwiFont/FF40.png b/fonts/MiniwiFont/FF40.png new file mode 100644 index 000000000..e08090ddf Binary files /dev/null and b/fonts/MiniwiFont/FF40.png differ diff --git a/fonts/MiniwiFont/FF41.png b/fonts/MiniwiFont/FF41.png new file mode 100644 index 000000000..8a2723075 Binary files /dev/null and b/fonts/MiniwiFont/FF41.png differ diff --git a/fonts/MiniwiFont/FF42.png b/fonts/MiniwiFont/FF42.png new file mode 100644 index 000000000..57a38d78f Binary files /dev/null and b/fonts/MiniwiFont/FF42.png differ diff --git a/fonts/MiniwiFont/FF43.png b/fonts/MiniwiFont/FF43.png new file mode 100644 index 000000000..568e8b0dd Binary files /dev/null and b/fonts/MiniwiFont/FF43.png differ diff --git a/fonts/MiniwiFont/FF44.png b/fonts/MiniwiFont/FF44.png new file mode 100644 index 000000000..94edbcb74 Binary files /dev/null and b/fonts/MiniwiFont/FF44.png differ diff --git a/fonts/MiniwiFont/FF45.png b/fonts/MiniwiFont/FF45.png new file mode 100644 index 000000000..a217a4a5c Binary files /dev/null and b/fonts/MiniwiFont/FF45.png differ diff --git a/fonts/MiniwiFont/FF46.png b/fonts/MiniwiFont/FF46.png new file mode 100644 index 000000000..bdd173f89 Binary files /dev/null and b/fonts/MiniwiFont/FF46.png differ diff --git a/fonts/MiniwiFont/FF47.png b/fonts/MiniwiFont/FF47.png new file mode 100644 index 000000000..e09dc3021 Binary files /dev/null and b/fonts/MiniwiFont/FF47.png differ diff --git a/fonts/MiniwiFont/FF48.png b/fonts/MiniwiFont/FF48.png new file mode 100644 index 000000000..6a4a5e9b9 Binary files /dev/null and b/fonts/MiniwiFont/FF48.png differ diff --git a/fonts/MiniwiFont/FF49.png b/fonts/MiniwiFont/FF49.png new file mode 100644 index 000000000..5a5999411 Binary files /dev/null and b/fonts/MiniwiFont/FF49.png differ diff --git a/fonts/MiniwiFont/FF4A.png b/fonts/MiniwiFont/FF4A.png new file mode 100644 index 000000000..2bc623d58 Binary files /dev/null and b/fonts/MiniwiFont/FF4A.png differ diff --git a/fonts/MiniwiFont/FF4B.png b/fonts/MiniwiFont/FF4B.png new file mode 100644 index 000000000..6951b774f Binary files /dev/null and b/fonts/MiniwiFont/FF4B.png differ diff --git a/fonts/MiniwiFont/FF4C.png b/fonts/MiniwiFont/FF4C.png new file mode 100644 index 000000000..ecb947d3e Binary files /dev/null and b/fonts/MiniwiFont/FF4C.png differ diff --git a/fonts/MiniwiFont/FF4D.png b/fonts/MiniwiFont/FF4D.png new file mode 100644 index 000000000..f40aada4a Binary files /dev/null and b/fonts/MiniwiFont/FF4D.png differ diff --git a/fonts/MiniwiFont/FF4E.png b/fonts/MiniwiFont/FF4E.png new file mode 100644 index 000000000..ed3fc6728 Binary files /dev/null and b/fonts/MiniwiFont/FF4E.png differ diff --git a/fonts/MiniwiFont/FF4F.png b/fonts/MiniwiFont/FF4F.png new file mode 100644 index 000000000..ddc991780 Binary files /dev/null and b/fonts/MiniwiFont/FF4F.png differ diff --git a/fonts/MiniwiFont/FF50.png b/fonts/MiniwiFont/FF50.png new file mode 100644 index 000000000..53705fc69 Binary files /dev/null and b/fonts/MiniwiFont/FF50.png differ diff --git a/fonts/MiniwiFont/FF51.png b/fonts/MiniwiFont/FF51.png new file mode 100644 index 000000000..79af77b14 Binary files /dev/null and b/fonts/MiniwiFont/FF51.png differ diff --git a/fonts/MiniwiFont/FF52.png b/fonts/MiniwiFont/FF52.png new file mode 100644 index 000000000..c5ef7b557 Binary files /dev/null and b/fonts/MiniwiFont/FF52.png differ diff --git a/fonts/MiniwiFont/FF53.png b/fonts/MiniwiFont/FF53.png new file mode 100644 index 000000000..3ea8f97a3 Binary files /dev/null and b/fonts/MiniwiFont/FF53.png differ diff --git a/fonts/MiniwiFont/FF54.png b/fonts/MiniwiFont/FF54.png new file mode 100644 index 000000000..ab41baebf Binary files /dev/null and b/fonts/MiniwiFont/FF54.png differ diff --git a/fonts/MiniwiFont/FF55.png b/fonts/MiniwiFont/FF55.png new file mode 100644 index 000000000..83ff7df85 Binary files /dev/null and b/fonts/MiniwiFont/FF55.png differ diff --git a/fonts/MiniwiFont/FF56.png b/fonts/MiniwiFont/FF56.png new file mode 100644 index 000000000..d4ea6ad39 Binary files /dev/null and b/fonts/MiniwiFont/FF56.png differ diff --git a/fonts/MiniwiFont/FF57.png b/fonts/MiniwiFont/FF57.png new file mode 100644 index 000000000..2888e13e4 Binary files /dev/null and b/fonts/MiniwiFont/FF57.png differ diff --git a/fonts/MiniwiFont/FF58.png b/fonts/MiniwiFont/FF58.png new file mode 100644 index 000000000..1c14fb89c Binary files /dev/null and b/fonts/MiniwiFont/FF58.png differ diff --git a/fonts/MiniwiFont/FF59.png b/fonts/MiniwiFont/FF59.png new file mode 100644 index 000000000..8c54a03a4 Binary files /dev/null and b/fonts/MiniwiFont/FF59.png differ diff --git a/fonts/MiniwiFont/FF5A.png b/fonts/MiniwiFont/FF5A.png new file mode 100644 index 000000000..ee66c4c14 Binary files /dev/null and b/fonts/MiniwiFont/FF5A.png differ diff --git a/fonts/MiniwiFont/FF5B.png b/fonts/MiniwiFont/FF5B.png new file mode 100644 index 000000000..4edc3baf6 Binary files /dev/null and b/fonts/MiniwiFont/FF5B.png differ diff --git a/fonts/MiniwiFont/FF5C.png b/fonts/MiniwiFont/FF5C.png new file mode 100644 index 000000000..507a7463a Binary files /dev/null and b/fonts/MiniwiFont/FF5C.png differ diff --git a/fonts/MiniwiFont/FF5D.png b/fonts/MiniwiFont/FF5D.png new file mode 100644 index 000000000..e17a9e656 Binary files /dev/null and b/fonts/MiniwiFont/FF5D.png differ diff --git a/fonts/MiniwiFont/FFE3.png b/fonts/MiniwiFont/FFE3.png new file mode 100644 index 000000000..75a09ce96 Binary files /dev/null and b/fonts/MiniwiFont/FFE3.png differ diff --git a/fonts/MiniwiFont/FFE5.png b/fonts/MiniwiFont/FFE5.png new file mode 100644 index 000000000..2121e7472 Binary files /dev/null and b/fonts/MiniwiFont/FFE5.png differ diff --git a/fonts/MiniwiFont/LICENSE b/fonts/MiniwiFont/LICENSE new file mode 100644 index 000000000..9ce2063ea --- /dev/null +++ b/fonts/MiniwiFont/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2015-2016 Josuah Demangeon + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/fonts/MiniwiFont/font.inf b/fonts/MiniwiFont/font.inf new file mode 100644 index 000000000..a1b41c994 --- /dev/null +++ b/fonts/MiniwiFont/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 5 +Kerning -1 +FontHeight 9 diff --git a/fonts/MiniwiFontOutline/0021.png b/fonts/MiniwiFontOutline/0021.png new file mode 100644 index 000000000..62e3488a2 Binary files /dev/null and b/fonts/MiniwiFontOutline/0021.png differ diff --git a/fonts/MiniwiFontOutline/0022.png b/fonts/MiniwiFontOutline/0022.png new file mode 100644 index 000000000..9b3f6861e Binary files /dev/null and b/fonts/MiniwiFontOutline/0022.png differ diff --git a/fonts/MiniwiFontOutline/0023.png b/fonts/MiniwiFontOutline/0023.png new file mode 100644 index 000000000..fb31a770c Binary files /dev/null and b/fonts/MiniwiFontOutline/0023.png differ diff --git a/fonts/MiniwiFontOutline/0024.png b/fonts/MiniwiFontOutline/0024.png new file mode 100644 index 000000000..04053c16a Binary files /dev/null and b/fonts/MiniwiFontOutline/0024.png differ diff --git a/fonts/MiniwiFontOutline/0025.png b/fonts/MiniwiFontOutline/0025.png new file mode 100644 index 000000000..2304637fa Binary files /dev/null and b/fonts/MiniwiFontOutline/0025.png differ diff --git a/fonts/MiniwiFontOutline/0026.png b/fonts/MiniwiFontOutline/0026.png new file mode 100644 index 000000000..b2a1b058c Binary files /dev/null and b/fonts/MiniwiFontOutline/0026.png differ diff --git a/fonts/MiniwiFontOutline/0027.png b/fonts/MiniwiFontOutline/0027.png new file mode 100644 index 000000000..9906c90da Binary files /dev/null and b/fonts/MiniwiFontOutline/0027.png differ diff --git a/fonts/MiniwiFontOutline/0028.png b/fonts/MiniwiFontOutline/0028.png new file mode 100644 index 000000000..d41ab7ecf Binary files /dev/null and b/fonts/MiniwiFontOutline/0028.png differ diff --git a/fonts/MiniwiFontOutline/0029.png b/fonts/MiniwiFontOutline/0029.png new file mode 100644 index 000000000..403eb6a81 Binary files /dev/null and b/fonts/MiniwiFontOutline/0029.png differ diff --git a/fonts/MiniwiFontOutline/002A.png b/fonts/MiniwiFontOutline/002A.png new file mode 100644 index 000000000..bea1ae391 Binary files /dev/null and b/fonts/MiniwiFontOutline/002A.png differ diff --git a/fonts/MiniwiFontOutline/002B.png b/fonts/MiniwiFontOutline/002B.png new file mode 100644 index 000000000..131b5f109 Binary files /dev/null and b/fonts/MiniwiFontOutline/002B.png differ diff --git a/fonts/MiniwiFontOutline/002C.png b/fonts/MiniwiFontOutline/002C.png new file mode 100644 index 000000000..3655111cc Binary files /dev/null and b/fonts/MiniwiFontOutline/002C.png differ diff --git a/fonts/MiniwiFontOutline/002D.png b/fonts/MiniwiFontOutline/002D.png new file mode 100644 index 000000000..b5590d777 Binary files /dev/null and b/fonts/MiniwiFontOutline/002D.png differ diff --git a/fonts/MiniwiFontOutline/002E.png b/fonts/MiniwiFontOutline/002E.png new file mode 100644 index 000000000..68dc31584 Binary files /dev/null and b/fonts/MiniwiFontOutline/002E.png differ diff --git a/fonts/MiniwiFontOutline/002F.png b/fonts/MiniwiFontOutline/002F.png new file mode 100644 index 000000000..5d3bbb138 Binary files /dev/null and b/fonts/MiniwiFontOutline/002F.png differ diff --git a/fonts/MiniwiFontOutline/0030.png b/fonts/MiniwiFontOutline/0030.png new file mode 100644 index 000000000..b1501cee2 Binary files /dev/null and b/fonts/MiniwiFontOutline/0030.png differ diff --git a/fonts/MiniwiFontOutline/0031.png b/fonts/MiniwiFontOutline/0031.png new file mode 100644 index 000000000..52adffe90 Binary files /dev/null and b/fonts/MiniwiFontOutline/0031.png differ diff --git a/fonts/MiniwiFontOutline/0032.png b/fonts/MiniwiFontOutline/0032.png new file mode 100644 index 000000000..102b818ed Binary files /dev/null and b/fonts/MiniwiFontOutline/0032.png differ diff --git a/fonts/MiniwiFontOutline/0033.png b/fonts/MiniwiFontOutline/0033.png new file mode 100644 index 000000000..a3017d48f Binary files /dev/null and b/fonts/MiniwiFontOutline/0033.png differ diff --git a/fonts/MiniwiFontOutline/0034.png b/fonts/MiniwiFontOutline/0034.png new file mode 100644 index 000000000..220458fc7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0034.png differ diff --git a/fonts/MiniwiFontOutline/0035.png b/fonts/MiniwiFontOutline/0035.png new file mode 100644 index 000000000..ef81c53f0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0035.png differ diff --git a/fonts/MiniwiFontOutline/0036.png b/fonts/MiniwiFontOutline/0036.png new file mode 100644 index 000000000..23f1e5bf7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0036.png differ diff --git a/fonts/MiniwiFontOutline/0037.png b/fonts/MiniwiFontOutline/0037.png new file mode 100644 index 000000000..8f6095405 Binary files /dev/null and b/fonts/MiniwiFontOutline/0037.png differ diff --git a/fonts/MiniwiFontOutline/0038.png b/fonts/MiniwiFontOutline/0038.png new file mode 100644 index 000000000..4f9f21938 Binary files /dev/null and b/fonts/MiniwiFontOutline/0038.png differ diff --git a/fonts/MiniwiFontOutline/0039.png b/fonts/MiniwiFontOutline/0039.png new file mode 100644 index 000000000..1804e2d95 Binary files /dev/null and b/fonts/MiniwiFontOutline/0039.png differ diff --git a/fonts/MiniwiFontOutline/003A.png b/fonts/MiniwiFontOutline/003A.png new file mode 100644 index 000000000..5b8ec800c Binary files /dev/null and b/fonts/MiniwiFontOutline/003A.png differ diff --git a/fonts/MiniwiFontOutline/003B.png b/fonts/MiniwiFontOutline/003B.png new file mode 100644 index 000000000..b28d51890 Binary files /dev/null and b/fonts/MiniwiFontOutline/003B.png differ diff --git a/fonts/MiniwiFontOutline/003C.png b/fonts/MiniwiFontOutline/003C.png new file mode 100644 index 000000000..c56a09324 Binary files /dev/null and b/fonts/MiniwiFontOutline/003C.png differ diff --git a/fonts/MiniwiFontOutline/003D.png b/fonts/MiniwiFontOutline/003D.png new file mode 100644 index 000000000..8c41265a0 Binary files /dev/null and b/fonts/MiniwiFontOutline/003D.png differ diff --git a/fonts/MiniwiFontOutline/003E.png b/fonts/MiniwiFontOutline/003E.png new file mode 100644 index 000000000..e4352ed62 Binary files /dev/null and b/fonts/MiniwiFontOutline/003E.png differ diff --git a/fonts/MiniwiFontOutline/003F.png b/fonts/MiniwiFontOutline/003F.png new file mode 100644 index 000000000..bbf53d8ed Binary files /dev/null and b/fonts/MiniwiFontOutline/003F.png differ diff --git a/fonts/MiniwiFontOutline/0040.png b/fonts/MiniwiFontOutline/0040.png new file mode 100644 index 000000000..53099af0d Binary files /dev/null and b/fonts/MiniwiFontOutline/0040.png differ diff --git a/fonts/MiniwiFontOutline/0041.png b/fonts/MiniwiFontOutline/0041.png new file mode 100644 index 000000000..775b6e655 Binary files /dev/null and b/fonts/MiniwiFontOutline/0041.png differ diff --git a/fonts/MiniwiFontOutline/0042.png b/fonts/MiniwiFontOutline/0042.png new file mode 100644 index 000000000..661bf7def Binary files /dev/null and b/fonts/MiniwiFontOutline/0042.png differ diff --git a/fonts/MiniwiFontOutline/0043.png b/fonts/MiniwiFontOutline/0043.png new file mode 100644 index 000000000..116cd69a4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0043.png differ diff --git a/fonts/MiniwiFontOutline/0044.png b/fonts/MiniwiFontOutline/0044.png new file mode 100644 index 000000000..429837338 Binary files /dev/null and b/fonts/MiniwiFontOutline/0044.png differ diff --git a/fonts/MiniwiFontOutline/0045.png b/fonts/MiniwiFontOutline/0045.png new file mode 100644 index 000000000..6d720c262 Binary files /dev/null and b/fonts/MiniwiFontOutline/0045.png differ diff --git a/fonts/MiniwiFontOutline/0046.png b/fonts/MiniwiFontOutline/0046.png new file mode 100644 index 000000000..f88ef5f26 Binary files /dev/null and b/fonts/MiniwiFontOutline/0046.png differ diff --git a/fonts/MiniwiFontOutline/0047.png b/fonts/MiniwiFontOutline/0047.png new file mode 100644 index 000000000..0887d7f0c Binary files /dev/null and b/fonts/MiniwiFontOutline/0047.png differ diff --git a/fonts/MiniwiFontOutline/0048.png b/fonts/MiniwiFontOutline/0048.png new file mode 100644 index 000000000..3a207358e Binary files /dev/null and b/fonts/MiniwiFontOutline/0048.png differ diff --git a/fonts/MiniwiFontOutline/0049.png b/fonts/MiniwiFontOutline/0049.png new file mode 100644 index 000000000..45bbdde1b Binary files /dev/null and b/fonts/MiniwiFontOutline/0049.png differ diff --git a/fonts/MiniwiFontOutline/004A.png b/fonts/MiniwiFontOutline/004A.png new file mode 100644 index 000000000..cd2e00457 Binary files /dev/null and b/fonts/MiniwiFontOutline/004A.png differ diff --git a/fonts/MiniwiFontOutline/004B.png b/fonts/MiniwiFontOutline/004B.png new file mode 100644 index 000000000..97736b0ae Binary files /dev/null and b/fonts/MiniwiFontOutline/004B.png differ diff --git a/fonts/MiniwiFontOutline/004C.png b/fonts/MiniwiFontOutline/004C.png new file mode 100644 index 000000000..fea54c3ea Binary files /dev/null and b/fonts/MiniwiFontOutline/004C.png differ diff --git a/fonts/MiniwiFontOutline/004D.png b/fonts/MiniwiFontOutline/004D.png new file mode 100644 index 000000000..581a7544c Binary files /dev/null and b/fonts/MiniwiFontOutline/004D.png differ diff --git a/fonts/MiniwiFontOutline/004E.png b/fonts/MiniwiFontOutline/004E.png new file mode 100644 index 000000000..b86be55d5 Binary files /dev/null and b/fonts/MiniwiFontOutline/004E.png differ diff --git a/fonts/MiniwiFontOutline/004F.png b/fonts/MiniwiFontOutline/004F.png new file mode 100644 index 000000000..b1501cee2 Binary files /dev/null and b/fonts/MiniwiFontOutline/004F.png differ diff --git a/fonts/MiniwiFontOutline/0050.png b/fonts/MiniwiFontOutline/0050.png new file mode 100644 index 000000000..090c5142d Binary files /dev/null and b/fonts/MiniwiFontOutline/0050.png differ diff --git a/fonts/MiniwiFontOutline/0051.png b/fonts/MiniwiFontOutline/0051.png new file mode 100644 index 000000000..6c0babbe3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0051.png differ diff --git a/fonts/MiniwiFontOutline/0052.png b/fonts/MiniwiFontOutline/0052.png new file mode 100644 index 000000000..5a6abf223 Binary files /dev/null and b/fonts/MiniwiFontOutline/0052.png differ diff --git a/fonts/MiniwiFontOutline/0053.png b/fonts/MiniwiFontOutline/0053.png new file mode 100644 index 000000000..ca184305f Binary files /dev/null and b/fonts/MiniwiFontOutline/0053.png differ diff --git a/fonts/MiniwiFontOutline/0054.png b/fonts/MiniwiFontOutline/0054.png new file mode 100644 index 000000000..547d70ffa Binary files /dev/null and b/fonts/MiniwiFontOutline/0054.png differ diff --git a/fonts/MiniwiFontOutline/0055.png b/fonts/MiniwiFontOutline/0055.png new file mode 100644 index 000000000..911a6b4e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0055.png differ diff --git a/fonts/MiniwiFontOutline/0056.png b/fonts/MiniwiFontOutline/0056.png new file mode 100644 index 000000000..de3a5115a Binary files /dev/null and b/fonts/MiniwiFontOutline/0056.png differ diff --git a/fonts/MiniwiFontOutline/0057.png b/fonts/MiniwiFontOutline/0057.png new file mode 100644 index 000000000..0a5e2250b Binary files /dev/null and b/fonts/MiniwiFontOutline/0057.png differ diff --git a/fonts/MiniwiFontOutline/0058.png b/fonts/MiniwiFontOutline/0058.png new file mode 100644 index 000000000..b0e12a2bf Binary files /dev/null and b/fonts/MiniwiFontOutline/0058.png differ diff --git a/fonts/MiniwiFontOutline/0059.png b/fonts/MiniwiFontOutline/0059.png new file mode 100644 index 000000000..ec02548c7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0059.png differ diff --git a/fonts/MiniwiFontOutline/005A.png b/fonts/MiniwiFontOutline/005A.png new file mode 100644 index 000000000..4a1e8dbcc Binary files /dev/null and b/fonts/MiniwiFontOutline/005A.png differ diff --git a/fonts/MiniwiFontOutline/005B.png b/fonts/MiniwiFontOutline/005B.png new file mode 100644 index 000000000..a7278e5d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/005B.png differ diff --git a/fonts/MiniwiFontOutline/005C.png b/fonts/MiniwiFontOutline/005C.png new file mode 100644 index 000000000..58cfd4843 Binary files /dev/null and b/fonts/MiniwiFontOutline/005C.png differ diff --git a/fonts/MiniwiFontOutline/005D.png b/fonts/MiniwiFontOutline/005D.png new file mode 100644 index 000000000..c0504ea27 Binary files /dev/null and b/fonts/MiniwiFontOutline/005D.png differ diff --git a/fonts/MiniwiFontOutline/005E.png b/fonts/MiniwiFontOutline/005E.png new file mode 100644 index 000000000..e9b4297a6 Binary files /dev/null and b/fonts/MiniwiFontOutline/005E.png differ diff --git a/fonts/MiniwiFontOutline/005F.png b/fonts/MiniwiFontOutline/005F.png new file mode 100644 index 000000000..927308800 Binary files /dev/null and b/fonts/MiniwiFontOutline/005F.png differ diff --git a/fonts/MiniwiFontOutline/0060.png b/fonts/MiniwiFontOutline/0060.png new file mode 100644 index 000000000..402115c48 Binary files /dev/null and b/fonts/MiniwiFontOutline/0060.png differ diff --git a/fonts/MiniwiFontOutline/0061.png b/fonts/MiniwiFontOutline/0061.png new file mode 100644 index 000000000..dbcde29d6 Binary files /dev/null and b/fonts/MiniwiFontOutline/0061.png differ diff --git a/fonts/MiniwiFontOutline/0062.png b/fonts/MiniwiFontOutline/0062.png new file mode 100644 index 000000000..8cb48a85a Binary files /dev/null and b/fonts/MiniwiFontOutline/0062.png differ diff --git a/fonts/MiniwiFontOutline/0063.png b/fonts/MiniwiFontOutline/0063.png new file mode 100644 index 000000000..1ed50d371 Binary files /dev/null and b/fonts/MiniwiFontOutline/0063.png differ diff --git a/fonts/MiniwiFontOutline/0064.png b/fonts/MiniwiFontOutline/0064.png new file mode 100644 index 000000000..e952b5bd6 Binary files /dev/null and b/fonts/MiniwiFontOutline/0064.png differ diff --git a/fonts/MiniwiFontOutline/0065.png b/fonts/MiniwiFontOutline/0065.png new file mode 100644 index 000000000..32860a9d9 Binary files /dev/null and b/fonts/MiniwiFontOutline/0065.png differ diff --git a/fonts/MiniwiFontOutline/0066.png b/fonts/MiniwiFontOutline/0066.png new file mode 100644 index 000000000..c00ee3169 Binary files /dev/null and b/fonts/MiniwiFontOutline/0066.png differ diff --git a/fonts/MiniwiFontOutline/0067.png b/fonts/MiniwiFontOutline/0067.png new file mode 100644 index 000000000..676d338d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0067.png differ diff --git a/fonts/MiniwiFontOutline/0068.png b/fonts/MiniwiFontOutline/0068.png new file mode 100644 index 000000000..24174ce27 Binary files /dev/null and b/fonts/MiniwiFontOutline/0068.png differ diff --git a/fonts/MiniwiFontOutline/0069.png b/fonts/MiniwiFontOutline/0069.png new file mode 100644 index 000000000..b4aa9c9cf Binary files /dev/null and b/fonts/MiniwiFontOutline/0069.png differ diff --git a/fonts/MiniwiFontOutline/006A.png b/fonts/MiniwiFontOutline/006A.png new file mode 100644 index 000000000..aa646864d Binary files /dev/null and b/fonts/MiniwiFontOutline/006A.png differ diff --git a/fonts/MiniwiFontOutline/006B.png b/fonts/MiniwiFontOutline/006B.png new file mode 100644 index 000000000..e07a3b3d2 Binary files /dev/null and b/fonts/MiniwiFontOutline/006B.png differ diff --git a/fonts/MiniwiFontOutline/006C.png b/fonts/MiniwiFontOutline/006C.png new file mode 100644 index 000000000..c145a81f0 Binary files /dev/null and b/fonts/MiniwiFontOutline/006C.png differ diff --git a/fonts/MiniwiFontOutline/006D.png b/fonts/MiniwiFontOutline/006D.png new file mode 100644 index 000000000..868f48f3d Binary files /dev/null and b/fonts/MiniwiFontOutline/006D.png differ diff --git a/fonts/MiniwiFontOutline/006E.png b/fonts/MiniwiFontOutline/006E.png new file mode 100644 index 000000000..a26a835d9 Binary files /dev/null and b/fonts/MiniwiFontOutline/006E.png differ diff --git a/fonts/MiniwiFontOutline/006F.png b/fonts/MiniwiFontOutline/006F.png new file mode 100644 index 000000000..2707e2933 Binary files /dev/null and b/fonts/MiniwiFontOutline/006F.png differ diff --git a/fonts/MiniwiFontOutline/0070.png b/fonts/MiniwiFontOutline/0070.png new file mode 100644 index 000000000..afea446fa Binary files /dev/null and b/fonts/MiniwiFontOutline/0070.png differ diff --git a/fonts/MiniwiFontOutline/0071.png b/fonts/MiniwiFontOutline/0071.png new file mode 100644 index 000000000..253877b50 Binary files /dev/null and b/fonts/MiniwiFontOutline/0071.png differ diff --git a/fonts/MiniwiFontOutline/0072.png b/fonts/MiniwiFontOutline/0072.png new file mode 100644 index 000000000..931098ef5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0072.png differ diff --git a/fonts/MiniwiFontOutline/0073.png b/fonts/MiniwiFontOutline/0073.png new file mode 100644 index 000000000..5513169e3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0073.png differ diff --git a/fonts/MiniwiFontOutline/0074.png b/fonts/MiniwiFontOutline/0074.png new file mode 100644 index 000000000..3826c1939 Binary files /dev/null and b/fonts/MiniwiFontOutline/0074.png differ diff --git a/fonts/MiniwiFontOutline/0075.png b/fonts/MiniwiFontOutline/0075.png new file mode 100644 index 000000000..338aa4658 Binary files /dev/null and b/fonts/MiniwiFontOutline/0075.png differ diff --git a/fonts/MiniwiFontOutline/0076.png b/fonts/MiniwiFontOutline/0076.png new file mode 100644 index 000000000..b9cc5210b Binary files /dev/null and b/fonts/MiniwiFontOutline/0076.png differ diff --git a/fonts/MiniwiFontOutline/0077.png b/fonts/MiniwiFontOutline/0077.png new file mode 100644 index 000000000..56dccd526 Binary files /dev/null and b/fonts/MiniwiFontOutline/0077.png differ diff --git a/fonts/MiniwiFontOutline/0078.png b/fonts/MiniwiFontOutline/0078.png new file mode 100644 index 000000000..66ebf23c8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0078.png differ diff --git a/fonts/MiniwiFontOutline/0079.png b/fonts/MiniwiFontOutline/0079.png new file mode 100644 index 000000000..ea70c1afd Binary files /dev/null and b/fonts/MiniwiFontOutline/0079.png differ diff --git a/fonts/MiniwiFontOutline/007A.png b/fonts/MiniwiFontOutline/007A.png new file mode 100644 index 000000000..7e8e09f46 Binary files /dev/null and b/fonts/MiniwiFontOutline/007A.png differ diff --git a/fonts/MiniwiFontOutline/007B.png b/fonts/MiniwiFontOutline/007B.png new file mode 100644 index 000000000..9dc9491ef Binary files /dev/null and b/fonts/MiniwiFontOutline/007B.png differ diff --git a/fonts/MiniwiFontOutline/007C.png b/fonts/MiniwiFontOutline/007C.png new file mode 100644 index 000000000..88383e4d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/007C.png differ diff --git a/fonts/MiniwiFontOutline/007D.png b/fonts/MiniwiFontOutline/007D.png new file mode 100644 index 000000000..7974188ed Binary files /dev/null and b/fonts/MiniwiFontOutline/007D.png differ diff --git a/fonts/MiniwiFontOutline/007E.png b/fonts/MiniwiFontOutline/007E.png new file mode 100644 index 000000000..78228253b Binary files /dev/null and b/fonts/MiniwiFontOutline/007E.png differ diff --git a/fonts/MiniwiFontOutline/00A1.png b/fonts/MiniwiFontOutline/00A1.png new file mode 100644 index 000000000..05e9edfd9 Binary files /dev/null and b/fonts/MiniwiFontOutline/00A1.png differ diff --git a/fonts/MiniwiFontOutline/00A2.png b/fonts/MiniwiFontOutline/00A2.png new file mode 100644 index 000000000..ab9eaf161 Binary files /dev/null and b/fonts/MiniwiFontOutline/00A2.png differ diff --git a/fonts/MiniwiFontOutline/00A3.png b/fonts/MiniwiFontOutline/00A3.png new file mode 100644 index 000000000..12f57ed57 Binary files /dev/null and b/fonts/MiniwiFontOutline/00A3.png differ diff --git a/fonts/MiniwiFontOutline/00A4.png b/fonts/MiniwiFontOutline/00A4.png new file mode 100644 index 000000000..139a18d45 Binary files /dev/null and b/fonts/MiniwiFontOutline/00A4.png differ diff --git a/fonts/MiniwiFontOutline/00A5.png b/fonts/MiniwiFontOutline/00A5.png new file mode 100644 index 000000000..ee053537f Binary files /dev/null and b/fonts/MiniwiFontOutline/00A5.png differ diff --git a/fonts/MiniwiFontOutline/00A6.png b/fonts/MiniwiFontOutline/00A6.png new file mode 100644 index 000000000..946861038 Binary files /dev/null and b/fonts/MiniwiFontOutline/00A6.png differ diff --git a/fonts/MiniwiFontOutline/00A7.png b/fonts/MiniwiFontOutline/00A7.png new file mode 100644 index 000000000..646496693 Binary files /dev/null and b/fonts/MiniwiFontOutline/00A7.png differ diff --git a/fonts/MiniwiFontOutline/00A8.png b/fonts/MiniwiFontOutline/00A8.png new file mode 100644 index 000000000..84ae2def9 Binary files /dev/null and b/fonts/MiniwiFontOutline/00A8.png differ diff --git a/fonts/MiniwiFontOutline/00A9.png b/fonts/MiniwiFontOutline/00A9.png new file mode 100644 index 000000000..badfa3e0a Binary files /dev/null and b/fonts/MiniwiFontOutline/00A9.png differ diff --git a/fonts/MiniwiFontOutline/00AA.png b/fonts/MiniwiFontOutline/00AA.png new file mode 100644 index 000000000..d32cda6e3 Binary files /dev/null and b/fonts/MiniwiFontOutline/00AA.png differ diff --git a/fonts/MiniwiFontOutline/00AB.png b/fonts/MiniwiFontOutline/00AB.png new file mode 100644 index 000000000..f1f84c510 Binary files /dev/null and b/fonts/MiniwiFontOutline/00AB.png differ diff --git a/fonts/MiniwiFontOutline/00AC.png b/fonts/MiniwiFontOutline/00AC.png new file mode 100644 index 000000000..70cb31ac5 Binary files /dev/null and b/fonts/MiniwiFontOutline/00AC.png differ diff --git a/fonts/MiniwiFontOutline/00AD.png b/fonts/MiniwiFontOutline/00AD.png new file mode 100644 index 000000000..f564c3400 Binary files /dev/null and b/fonts/MiniwiFontOutline/00AD.png differ diff --git a/fonts/MiniwiFontOutline/00AE.png b/fonts/MiniwiFontOutline/00AE.png new file mode 100644 index 000000000..396145a12 Binary files /dev/null and b/fonts/MiniwiFontOutline/00AE.png differ diff --git a/fonts/MiniwiFontOutline/00AF.png b/fonts/MiniwiFontOutline/00AF.png new file mode 100644 index 000000000..55c2ca2f2 Binary files /dev/null and b/fonts/MiniwiFontOutline/00AF.png differ diff --git a/fonts/MiniwiFontOutline/00B0.png b/fonts/MiniwiFontOutline/00B0.png new file mode 100644 index 000000000..03832921b Binary files /dev/null and b/fonts/MiniwiFontOutline/00B0.png differ diff --git a/fonts/MiniwiFontOutline/00B1.png b/fonts/MiniwiFontOutline/00B1.png new file mode 100644 index 000000000..4db2d3794 Binary files /dev/null and b/fonts/MiniwiFontOutline/00B1.png differ diff --git a/fonts/MiniwiFontOutline/00B2.png b/fonts/MiniwiFontOutline/00B2.png new file mode 100644 index 000000000..ebdcd3908 Binary files /dev/null and b/fonts/MiniwiFontOutline/00B2.png differ diff --git a/fonts/MiniwiFontOutline/00B3.png b/fonts/MiniwiFontOutline/00B3.png new file mode 100644 index 000000000..8e93a2dde Binary files /dev/null and b/fonts/MiniwiFontOutline/00B3.png differ diff --git a/fonts/MiniwiFontOutline/00B4.png b/fonts/MiniwiFontOutline/00B4.png new file mode 100644 index 000000000..c29c296d4 Binary files /dev/null and b/fonts/MiniwiFontOutline/00B4.png differ diff --git a/fonts/MiniwiFontOutline/00B5.png b/fonts/MiniwiFontOutline/00B5.png new file mode 100644 index 000000000..4b2f5a465 Binary files /dev/null and b/fonts/MiniwiFontOutline/00B5.png differ diff --git a/fonts/MiniwiFontOutline/00B6.png b/fonts/MiniwiFontOutline/00B6.png new file mode 100644 index 000000000..b78ee333a Binary files /dev/null and b/fonts/MiniwiFontOutline/00B6.png differ diff --git a/fonts/MiniwiFontOutline/00B7.png b/fonts/MiniwiFontOutline/00B7.png new file mode 100644 index 000000000..95168dd5c Binary files /dev/null and b/fonts/MiniwiFontOutline/00B7.png differ diff --git a/fonts/MiniwiFontOutline/00B8.png b/fonts/MiniwiFontOutline/00B8.png new file mode 100644 index 000000000..38cfb86ee Binary files /dev/null and b/fonts/MiniwiFontOutline/00B8.png differ diff --git a/fonts/MiniwiFontOutline/00B9.png b/fonts/MiniwiFontOutline/00B9.png new file mode 100644 index 000000000..d8919f70e Binary files /dev/null and b/fonts/MiniwiFontOutline/00B9.png differ diff --git a/fonts/MiniwiFontOutline/00BA.png b/fonts/MiniwiFontOutline/00BA.png new file mode 100644 index 000000000..0c0ebb1ab Binary files /dev/null and b/fonts/MiniwiFontOutline/00BA.png differ diff --git a/fonts/MiniwiFontOutline/00BB.png b/fonts/MiniwiFontOutline/00BB.png new file mode 100644 index 000000000..b7600e0f2 Binary files /dev/null and b/fonts/MiniwiFontOutline/00BB.png differ diff --git a/fonts/MiniwiFontOutline/00BC.png b/fonts/MiniwiFontOutline/00BC.png new file mode 100644 index 000000000..ed3c4f84b Binary files /dev/null and b/fonts/MiniwiFontOutline/00BC.png differ diff --git a/fonts/MiniwiFontOutline/00BD.png b/fonts/MiniwiFontOutline/00BD.png new file mode 100644 index 000000000..53488eb09 Binary files /dev/null and b/fonts/MiniwiFontOutline/00BD.png differ diff --git a/fonts/MiniwiFontOutline/00BE.png b/fonts/MiniwiFontOutline/00BE.png new file mode 100644 index 000000000..6a0d4fd42 Binary files /dev/null and b/fonts/MiniwiFontOutline/00BE.png differ diff --git a/fonts/MiniwiFontOutline/00BF.png b/fonts/MiniwiFontOutline/00BF.png new file mode 100644 index 000000000..0ac899d33 Binary files /dev/null and b/fonts/MiniwiFontOutline/00BF.png differ diff --git a/fonts/MiniwiFontOutline/00C0.png b/fonts/MiniwiFontOutline/00C0.png new file mode 100644 index 000000000..1e4796125 Binary files /dev/null and b/fonts/MiniwiFontOutline/00C0.png differ diff --git a/fonts/MiniwiFontOutline/00C1.png b/fonts/MiniwiFontOutline/00C1.png new file mode 100644 index 000000000..8c5b5b937 Binary files /dev/null and b/fonts/MiniwiFontOutline/00C1.png differ diff --git a/fonts/MiniwiFontOutline/00C2.png b/fonts/MiniwiFontOutline/00C2.png new file mode 100644 index 000000000..59ac5d353 Binary files /dev/null and b/fonts/MiniwiFontOutline/00C2.png differ diff --git a/fonts/MiniwiFontOutline/00C3.png b/fonts/MiniwiFontOutline/00C3.png new file mode 100644 index 000000000..e9fb2c969 Binary files /dev/null and b/fonts/MiniwiFontOutline/00C3.png differ diff --git a/fonts/MiniwiFontOutline/00C4.png b/fonts/MiniwiFontOutline/00C4.png new file mode 100644 index 000000000..45ed0e1de Binary files /dev/null and b/fonts/MiniwiFontOutline/00C4.png differ diff --git a/fonts/MiniwiFontOutline/00C5.png b/fonts/MiniwiFontOutline/00C5.png new file mode 100644 index 000000000..32999c0fa Binary files /dev/null and b/fonts/MiniwiFontOutline/00C5.png differ diff --git a/fonts/MiniwiFontOutline/00C6.png b/fonts/MiniwiFontOutline/00C6.png new file mode 100644 index 000000000..b84996cb3 Binary files /dev/null and b/fonts/MiniwiFontOutline/00C6.png differ diff --git a/fonts/MiniwiFontOutline/00C7.png b/fonts/MiniwiFontOutline/00C7.png new file mode 100644 index 000000000..9cd111ad3 Binary files /dev/null and b/fonts/MiniwiFontOutline/00C7.png differ diff --git a/fonts/MiniwiFontOutline/00C8.png b/fonts/MiniwiFontOutline/00C8.png new file mode 100644 index 000000000..d9c2bea0a Binary files /dev/null and b/fonts/MiniwiFontOutline/00C8.png differ diff --git a/fonts/MiniwiFontOutline/00C9.png b/fonts/MiniwiFontOutline/00C9.png new file mode 100644 index 000000000..408b10d74 Binary files /dev/null and b/fonts/MiniwiFontOutline/00C9.png differ diff --git a/fonts/MiniwiFontOutline/00CA.png b/fonts/MiniwiFontOutline/00CA.png new file mode 100644 index 000000000..fdcd67271 Binary files /dev/null and b/fonts/MiniwiFontOutline/00CA.png differ diff --git a/fonts/MiniwiFontOutline/00CB.png b/fonts/MiniwiFontOutline/00CB.png new file mode 100644 index 000000000..0fe8db99d Binary files /dev/null and b/fonts/MiniwiFontOutline/00CB.png differ diff --git a/fonts/MiniwiFontOutline/00CC.png b/fonts/MiniwiFontOutline/00CC.png new file mode 100644 index 000000000..fa1c1d4b4 Binary files /dev/null and b/fonts/MiniwiFontOutline/00CC.png differ diff --git a/fonts/MiniwiFontOutline/00CD.png b/fonts/MiniwiFontOutline/00CD.png new file mode 100644 index 000000000..34d8554b6 Binary files /dev/null and b/fonts/MiniwiFontOutline/00CD.png differ diff --git a/fonts/MiniwiFontOutline/00CE.png b/fonts/MiniwiFontOutline/00CE.png new file mode 100644 index 000000000..5c8d65590 Binary files /dev/null and b/fonts/MiniwiFontOutline/00CE.png differ diff --git a/fonts/MiniwiFontOutline/00CF.png b/fonts/MiniwiFontOutline/00CF.png new file mode 100644 index 000000000..a52e916be Binary files /dev/null and b/fonts/MiniwiFontOutline/00CF.png differ diff --git a/fonts/MiniwiFontOutline/00D0.png b/fonts/MiniwiFontOutline/00D0.png new file mode 100644 index 000000000..09ffd46ef Binary files /dev/null and b/fonts/MiniwiFontOutline/00D0.png differ diff --git a/fonts/MiniwiFontOutline/00D1.png b/fonts/MiniwiFontOutline/00D1.png new file mode 100644 index 000000000..9b785db28 Binary files /dev/null and b/fonts/MiniwiFontOutline/00D1.png differ diff --git a/fonts/MiniwiFontOutline/00D2.png b/fonts/MiniwiFontOutline/00D2.png new file mode 100644 index 000000000..a2cea3866 Binary files /dev/null and b/fonts/MiniwiFontOutline/00D2.png differ diff --git a/fonts/MiniwiFontOutline/00D3.png b/fonts/MiniwiFontOutline/00D3.png new file mode 100644 index 000000000..ce72594c6 Binary files /dev/null and b/fonts/MiniwiFontOutline/00D3.png differ diff --git a/fonts/MiniwiFontOutline/00D4.png b/fonts/MiniwiFontOutline/00D4.png new file mode 100644 index 000000000..8ad89b6af Binary files /dev/null and b/fonts/MiniwiFontOutline/00D4.png differ diff --git a/fonts/MiniwiFontOutline/00D5.png b/fonts/MiniwiFontOutline/00D5.png new file mode 100644 index 000000000..a2cea3866 Binary files /dev/null and b/fonts/MiniwiFontOutline/00D5.png differ diff --git a/fonts/MiniwiFontOutline/00D6.png b/fonts/MiniwiFontOutline/00D6.png new file mode 100644 index 000000000..a566849f3 Binary files /dev/null and b/fonts/MiniwiFontOutline/00D6.png differ diff --git a/fonts/MiniwiFontOutline/00D7.png b/fonts/MiniwiFontOutline/00D7.png new file mode 100644 index 000000000..896c410d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/00D7.png differ diff --git a/fonts/MiniwiFontOutline/00D8.png b/fonts/MiniwiFontOutline/00D8.png new file mode 100644 index 000000000..5954193f7 Binary files /dev/null and b/fonts/MiniwiFontOutline/00D8.png differ diff --git a/fonts/MiniwiFontOutline/00D9.png b/fonts/MiniwiFontOutline/00D9.png new file mode 100644 index 000000000..bc9a66ddb Binary files /dev/null and b/fonts/MiniwiFontOutline/00D9.png differ diff --git a/fonts/MiniwiFontOutline/00DA.png b/fonts/MiniwiFontOutline/00DA.png new file mode 100644 index 000000000..ef615abab Binary files /dev/null and b/fonts/MiniwiFontOutline/00DA.png differ diff --git a/fonts/MiniwiFontOutline/00DB.png b/fonts/MiniwiFontOutline/00DB.png new file mode 100644 index 000000000..194b0daba Binary files /dev/null and b/fonts/MiniwiFontOutline/00DB.png differ diff --git a/fonts/MiniwiFontOutline/00DC.png b/fonts/MiniwiFontOutline/00DC.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/00DC.png differ diff --git a/fonts/MiniwiFontOutline/00DD.png b/fonts/MiniwiFontOutline/00DD.png new file mode 100644 index 000000000..4e805dc73 Binary files /dev/null and b/fonts/MiniwiFontOutline/00DD.png differ diff --git a/fonts/MiniwiFontOutline/00DE.png b/fonts/MiniwiFontOutline/00DE.png new file mode 100644 index 000000000..2d0a1bce1 Binary files /dev/null and b/fonts/MiniwiFontOutline/00DE.png differ diff --git a/fonts/MiniwiFontOutline/00DF.png b/fonts/MiniwiFontOutline/00DF.png new file mode 100644 index 000000000..f47bd49a7 Binary files /dev/null and b/fonts/MiniwiFontOutline/00DF.png differ diff --git a/fonts/MiniwiFontOutline/00E0.png b/fonts/MiniwiFontOutline/00E0.png new file mode 100644 index 000000000..eaec0412a Binary files /dev/null and b/fonts/MiniwiFontOutline/00E0.png differ diff --git a/fonts/MiniwiFontOutline/00E1.png b/fonts/MiniwiFontOutline/00E1.png new file mode 100644 index 000000000..0547d3c33 Binary files /dev/null and b/fonts/MiniwiFontOutline/00E1.png differ diff --git a/fonts/MiniwiFontOutline/00E2.png b/fonts/MiniwiFontOutline/00E2.png new file mode 100644 index 000000000..a747fd329 Binary files /dev/null and b/fonts/MiniwiFontOutline/00E2.png differ diff --git a/fonts/MiniwiFontOutline/00E3.png b/fonts/MiniwiFontOutline/00E3.png new file mode 100644 index 000000000..46564131c Binary files /dev/null and b/fonts/MiniwiFontOutline/00E3.png differ diff --git a/fonts/MiniwiFontOutline/00E4.png b/fonts/MiniwiFontOutline/00E4.png new file mode 100644 index 000000000..e88ac7750 Binary files /dev/null and b/fonts/MiniwiFontOutline/00E4.png differ diff --git a/fonts/MiniwiFontOutline/00E5.png b/fonts/MiniwiFontOutline/00E5.png new file mode 100644 index 000000000..3c4e19699 Binary files /dev/null and b/fonts/MiniwiFontOutline/00E5.png differ diff --git a/fonts/MiniwiFontOutline/00E6.png b/fonts/MiniwiFontOutline/00E6.png new file mode 100644 index 000000000..64303e937 Binary files /dev/null and b/fonts/MiniwiFontOutline/00E6.png differ diff --git a/fonts/MiniwiFontOutline/00E7.png b/fonts/MiniwiFontOutline/00E7.png new file mode 100644 index 000000000..ad7438d1b Binary files /dev/null and b/fonts/MiniwiFontOutline/00E7.png differ diff --git a/fonts/MiniwiFontOutline/00E8.png b/fonts/MiniwiFontOutline/00E8.png new file mode 100644 index 000000000..4f08f7b4f Binary files /dev/null and b/fonts/MiniwiFontOutline/00E8.png differ diff --git a/fonts/MiniwiFontOutline/00E9.png b/fonts/MiniwiFontOutline/00E9.png new file mode 100644 index 000000000..fcacabd38 Binary files /dev/null and b/fonts/MiniwiFontOutline/00E9.png differ diff --git a/fonts/MiniwiFontOutline/00EA.png b/fonts/MiniwiFontOutline/00EA.png new file mode 100644 index 000000000..6f97ed7e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/00EA.png differ diff --git a/fonts/MiniwiFontOutline/00EB.png b/fonts/MiniwiFontOutline/00EB.png new file mode 100644 index 000000000..586b8b7d1 Binary files /dev/null and b/fonts/MiniwiFontOutline/00EB.png differ diff --git a/fonts/MiniwiFontOutline/00EC.png b/fonts/MiniwiFontOutline/00EC.png new file mode 100644 index 000000000..2d1df79c3 Binary files /dev/null and b/fonts/MiniwiFontOutline/00EC.png differ diff --git a/fonts/MiniwiFontOutline/00ED.png b/fonts/MiniwiFontOutline/00ED.png new file mode 100644 index 000000000..ff85ccf76 Binary files /dev/null and b/fonts/MiniwiFontOutline/00ED.png differ diff --git a/fonts/MiniwiFontOutline/00EE.png b/fonts/MiniwiFontOutline/00EE.png new file mode 100644 index 000000000..51787a5b9 Binary files /dev/null and b/fonts/MiniwiFontOutline/00EE.png differ diff --git a/fonts/MiniwiFontOutline/00EF.png b/fonts/MiniwiFontOutline/00EF.png new file mode 100644 index 000000000..c72ee71f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/00EF.png differ diff --git a/fonts/MiniwiFontOutline/00F0.png b/fonts/MiniwiFontOutline/00F0.png new file mode 100644 index 000000000..f47d5d1c6 Binary files /dev/null and b/fonts/MiniwiFontOutline/00F0.png differ diff --git a/fonts/MiniwiFontOutline/00F1.png b/fonts/MiniwiFontOutline/00F1.png new file mode 100644 index 000000000..d2f281589 Binary files /dev/null and b/fonts/MiniwiFontOutline/00F1.png differ diff --git a/fonts/MiniwiFontOutline/00F2.png b/fonts/MiniwiFontOutline/00F2.png new file mode 100644 index 000000000..5710031eb Binary files /dev/null and b/fonts/MiniwiFontOutline/00F2.png differ diff --git a/fonts/MiniwiFontOutline/00F3.png b/fonts/MiniwiFontOutline/00F3.png new file mode 100644 index 000000000..3fe13c391 Binary files /dev/null and b/fonts/MiniwiFontOutline/00F3.png differ diff --git a/fonts/MiniwiFontOutline/00F4.png b/fonts/MiniwiFontOutline/00F4.png new file mode 100644 index 000000000..c38c09130 Binary files /dev/null and b/fonts/MiniwiFontOutline/00F4.png differ diff --git a/fonts/MiniwiFontOutline/00F5.png b/fonts/MiniwiFontOutline/00F5.png new file mode 100644 index 000000000..336c4320c Binary files /dev/null and b/fonts/MiniwiFontOutline/00F5.png differ diff --git a/fonts/MiniwiFontOutline/00F6.png b/fonts/MiniwiFontOutline/00F6.png new file mode 100644 index 000000000..e4888cd83 Binary files /dev/null and b/fonts/MiniwiFontOutline/00F6.png differ diff --git a/fonts/MiniwiFontOutline/00F7.png b/fonts/MiniwiFontOutline/00F7.png new file mode 100644 index 000000000..f257ecac7 Binary files /dev/null and b/fonts/MiniwiFontOutline/00F7.png differ diff --git a/fonts/MiniwiFontOutline/00F8.png b/fonts/MiniwiFontOutline/00F8.png new file mode 100644 index 000000000..e8bf4c448 Binary files /dev/null and b/fonts/MiniwiFontOutline/00F8.png differ diff --git a/fonts/MiniwiFontOutline/00F9.png b/fonts/MiniwiFontOutline/00F9.png new file mode 100644 index 000000000..bc9a66ddb Binary files /dev/null and b/fonts/MiniwiFontOutline/00F9.png differ diff --git a/fonts/MiniwiFontOutline/00FA.png b/fonts/MiniwiFontOutline/00FA.png new file mode 100644 index 000000000..ef615abab Binary files /dev/null and b/fonts/MiniwiFontOutline/00FA.png differ diff --git a/fonts/MiniwiFontOutline/00FB.png b/fonts/MiniwiFontOutline/00FB.png new file mode 100644 index 000000000..194b0daba Binary files /dev/null and b/fonts/MiniwiFontOutline/00FB.png differ diff --git a/fonts/MiniwiFontOutline/00FC.png b/fonts/MiniwiFontOutline/00FC.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/00FC.png differ diff --git a/fonts/MiniwiFontOutline/00FD.png b/fonts/MiniwiFontOutline/00FD.png new file mode 100644 index 000000000..648f748c8 Binary files /dev/null and b/fonts/MiniwiFontOutline/00FD.png differ diff --git a/fonts/MiniwiFontOutline/00FE.png b/fonts/MiniwiFontOutline/00FE.png new file mode 100644 index 000000000..1abaec207 Binary files /dev/null and b/fonts/MiniwiFontOutline/00FE.png differ diff --git a/fonts/MiniwiFontOutline/00FF.png b/fonts/MiniwiFontOutline/00FF.png new file mode 100644 index 000000000..19ea82e50 Binary files /dev/null and b/fonts/MiniwiFontOutline/00FF.png differ diff --git a/fonts/MiniwiFontOutline/0100.png b/fonts/MiniwiFontOutline/0100.png new file mode 100644 index 000000000..34f1e58e1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0100.png differ diff --git a/fonts/MiniwiFontOutline/0101.png b/fonts/MiniwiFontOutline/0101.png new file mode 100644 index 000000000..a747fd329 Binary files /dev/null and b/fonts/MiniwiFontOutline/0101.png differ diff --git a/fonts/MiniwiFontOutline/0102.png b/fonts/MiniwiFontOutline/0102.png new file mode 100644 index 000000000..34f1e58e1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0102.png differ diff --git a/fonts/MiniwiFontOutline/0103.png b/fonts/MiniwiFontOutline/0103.png new file mode 100644 index 000000000..a747fd329 Binary files /dev/null and b/fonts/MiniwiFontOutline/0103.png differ diff --git a/fonts/MiniwiFontOutline/0104.png b/fonts/MiniwiFontOutline/0104.png new file mode 100644 index 000000000..86825f9ae Binary files /dev/null and b/fonts/MiniwiFontOutline/0104.png differ diff --git a/fonts/MiniwiFontOutline/0105.png b/fonts/MiniwiFontOutline/0105.png new file mode 100644 index 000000000..50afdab28 Binary files /dev/null and b/fonts/MiniwiFontOutline/0105.png differ diff --git a/fonts/MiniwiFontOutline/0106.png b/fonts/MiniwiFontOutline/0106.png new file mode 100644 index 000000000..1a3caefb5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0106.png differ diff --git a/fonts/MiniwiFontOutline/0107.png b/fonts/MiniwiFontOutline/0107.png new file mode 100644 index 000000000..0c27c7600 Binary files /dev/null and b/fonts/MiniwiFontOutline/0107.png differ diff --git a/fonts/MiniwiFontOutline/0108.png b/fonts/MiniwiFontOutline/0108.png new file mode 100644 index 000000000..d16e265ed Binary files /dev/null and b/fonts/MiniwiFontOutline/0108.png differ diff --git a/fonts/MiniwiFontOutline/0109.png b/fonts/MiniwiFontOutline/0109.png new file mode 100644 index 000000000..44f6622d4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0109.png differ diff --git a/fonts/MiniwiFontOutline/010A.png b/fonts/MiniwiFontOutline/010A.png new file mode 100644 index 000000000..3aed5fc56 Binary files /dev/null and b/fonts/MiniwiFontOutline/010A.png differ diff --git a/fonts/MiniwiFontOutline/010B.png b/fonts/MiniwiFontOutline/010B.png new file mode 100644 index 000000000..ad219a902 Binary files /dev/null and b/fonts/MiniwiFontOutline/010B.png differ diff --git a/fonts/MiniwiFontOutline/010C.png b/fonts/MiniwiFontOutline/010C.png new file mode 100644 index 000000000..d16e265ed Binary files /dev/null and b/fonts/MiniwiFontOutline/010C.png differ diff --git a/fonts/MiniwiFontOutline/010D.png b/fonts/MiniwiFontOutline/010D.png new file mode 100644 index 000000000..44f6622d4 Binary files /dev/null and b/fonts/MiniwiFontOutline/010D.png differ diff --git a/fonts/MiniwiFontOutline/010E.png b/fonts/MiniwiFontOutline/010E.png new file mode 100644 index 000000000..32723fc79 Binary files /dev/null and b/fonts/MiniwiFontOutline/010E.png differ diff --git a/fonts/MiniwiFontOutline/010F.png b/fonts/MiniwiFontOutline/010F.png new file mode 100644 index 000000000..ca0d4155e Binary files /dev/null and b/fonts/MiniwiFontOutline/010F.png differ diff --git a/fonts/MiniwiFontOutline/0110.png b/fonts/MiniwiFontOutline/0110.png new file mode 100644 index 000000000..09ffd46ef Binary files /dev/null and b/fonts/MiniwiFontOutline/0110.png differ diff --git a/fonts/MiniwiFontOutline/0111.png b/fonts/MiniwiFontOutline/0111.png new file mode 100644 index 000000000..0fe179022 Binary files /dev/null and b/fonts/MiniwiFontOutline/0111.png differ diff --git a/fonts/MiniwiFontOutline/0112.png b/fonts/MiniwiFontOutline/0112.png new file mode 100644 index 000000000..fdcd67271 Binary files /dev/null and b/fonts/MiniwiFontOutline/0112.png differ diff --git a/fonts/MiniwiFontOutline/0113.png b/fonts/MiniwiFontOutline/0113.png new file mode 100644 index 000000000..6f97ed7e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0113.png differ diff --git a/fonts/MiniwiFontOutline/0114.png b/fonts/MiniwiFontOutline/0114.png new file mode 100644 index 000000000..fdcd67271 Binary files /dev/null and b/fonts/MiniwiFontOutline/0114.png differ diff --git a/fonts/MiniwiFontOutline/0115.png b/fonts/MiniwiFontOutline/0115.png new file mode 100644 index 000000000..6f97ed7e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0115.png differ diff --git a/fonts/MiniwiFontOutline/0116.png b/fonts/MiniwiFontOutline/0116.png new file mode 100644 index 000000000..9d8d17b52 Binary files /dev/null and b/fonts/MiniwiFontOutline/0116.png differ diff --git a/fonts/MiniwiFontOutline/0117.png b/fonts/MiniwiFontOutline/0117.png new file mode 100644 index 000000000..e94aaa4f5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0117.png differ diff --git a/fonts/MiniwiFontOutline/0118.png b/fonts/MiniwiFontOutline/0118.png new file mode 100644 index 000000000..a346f1573 Binary files /dev/null and b/fonts/MiniwiFontOutline/0118.png differ diff --git a/fonts/MiniwiFontOutline/0119.png b/fonts/MiniwiFontOutline/0119.png new file mode 100644 index 000000000..246b21e7a Binary files /dev/null and b/fonts/MiniwiFontOutline/0119.png differ diff --git a/fonts/MiniwiFontOutline/011A.png b/fonts/MiniwiFontOutline/011A.png new file mode 100644 index 000000000..fdcd67271 Binary files /dev/null and b/fonts/MiniwiFontOutline/011A.png differ diff --git a/fonts/MiniwiFontOutline/011B.png b/fonts/MiniwiFontOutline/011B.png new file mode 100644 index 000000000..6f97ed7e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/011B.png differ diff --git a/fonts/MiniwiFontOutline/011C.png b/fonts/MiniwiFontOutline/011C.png new file mode 100644 index 000000000..b1cb8cfd4 Binary files /dev/null and b/fonts/MiniwiFontOutline/011C.png differ diff --git a/fonts/MiniwiFontOutline/011D.png b/fonts/MiniwiFontOutline/011D.png new file mode 100644 index 000000000..14f7683e7 Binary files /dev/null and b/fonts/MiniwiFontOutline/011D.png differ diff --git a/fonts/MiniwiFontOutline/011E.png b/fonts/MiniwiFontOutline/011E.png new file mode 100644 index 000000000..b1cb8cfd4 Binary files /dev/null and b/fonts/MiniwiFontOutline/011E.png differ diff --git a/fonts/MiniwiFontOutline/011F.png b/fonts/MiniwiFontOutline/011F.png new file mode 100644 index 000000000..14f7683e7 Binary files /dev/null and b/fonts/MiniwiFontOutline/011F.png differ diff --git a/fonts/MiniwiFontOutline/0120.png b/fonts/MiniwiFontOutline/0120.png new file mode 100644 index 000000000..63dacd3bb Binary files /dev/null and b/fonts/MiniwiFontOutline/0120.png differ diff --git a/fonts/MiniwiFontOutline/0121.png b/fonts/MiniwiFontOutline/0121.png new file mode 100644 index 000000000..c4afa53af Binary files /dev/null and b/fonts/MiniwiFontOutline/0121.png differ diff --git a/fonts/MiniwiFontOutline/0122.png b/fonts/MiniwiFontOutline/0122.png new file mode 100644 index 000000000..6d43c763d Binary files /dev/null and b/fonts/MiniwiFontOutline/0122.png differ diff --git a/fonts/MiniwiFontOutline/0123.png b/fonts/MiniwiFontOutline/0123.png new file mode 100644 index 000000000..34966c9be Binary files /dev/null and b/fonts/MiniwiFontOutline/0123.png differ diff --git a/fonts/MiniwiFontOutline/0124.png b/fonts/MiniwiFontOutline/0124.png new file mode 100644 index 000000000..56b0f0a9f Binary files /dev/null and b/fonts/MiniwiFontOutline/0124.png differ diff --git a/fonts/MiniwiFontOutline/0125.png b/fonts/MiniwiFontOutline/0125.png new file mode 100644 index 000000000..79354cea2 Binary files /dev/null and b/fonts/MiniwiFontOutline/0125.png differ diff --git a/fonts/MiniwiFontOutline/0126.png b/fonts/MiniwiFontOutline/0126.png new file mode 100644 index 000000000..6cda0d674 Binary files /dev/null and b/fonts/MiniwiFontOutline/0126.png differ diff --git a/fonts/MiniwiFontOutline/0127.png b/fonts/MiniwiFontOutline/0127.png new file mode 100644 index 000000000..c581115f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0127.png differ diff --git a/fonts/MiniwiFontOutline/0128.png b/fonts/MiniwiFontOutline/0128.png new file mode 100644 index 000000000..a34f5dda0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0128.png differ diff --git a/fonts/MiniwiFontOutline/0129.png b/fonts/MiniwiFontOutline/0129.png new file mode 100644 index 000000000..5395738f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0129.png differ diff --git a/fonts/MiniwiFontOutline/012A.png b/fonts/MiniwiFontOutline/012A.png new file mode 100644 index 000000000..5c8d65590 Binary files /dev/null and b/fonts/MiniwiFontOutline/012A.png differ diff --git a/fonts/MiniwiFontOutline/012B.png b/fonts/MiniwiFontOutline/012B.png new file mode 100644 index 000000000..51787a5b9 Binary files /dev/null and b/fonts/MiniwiFontOutline/012B.png differ diff --git a/fonts/MiniwiFontOutline/012C.png b/fonts/MiniwiFontOutline/012C.png new file mode 100644 index 000000000..5c8d65590 Binary files /dev/null and b/fonts/MiniwiFontOutline/012C.png differ diff --git a/fonts/MiniwiFontOutline/012D.png b/fonts/MiniwiFontOutline/012D.png new file mode 100644 index 000000000..51787a5b9 Binary files /dev/null and b/fonts/MiniwiFontOutline/012D.png differ diff --git a/fonts/MiniwiFontOutline/012E.png b/fonts/MiniwiFontOutline/012E.png new file mode 100644 index 000000000..61fae123f Binary files /dev/null and b/fonts/MiniwiFontOutline/012E.png differ diff --git a/fonts/MiniwiFontOutline/012F.png b/fonts/MiniwiFontOutline/012F.png new file mode 100644 index 000000000..52be9c46e Binary files /dev/null and b/fonts/MiniwiFontOutline/012F.png differ diff --git a/fonts/MiniwiFontOutline/0130.png b/fonts/MiniwiFontOutline/0130.png new file mode 100644 index 000000000..63e8ac6eb Binary files /dev/null and b/fonts/MiniwiFontOutline/0130.png differ diff --git a/fonts/MiniwiFontOutline/0131.png b/fonts/MiniwiFontOutline/0131.png new file mode 100644 index 000000000..6f4361dc4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0131.png differ diff --git a/fonts/MiniwiFontOutline/0132.png b/fonts/MiniwiFontOutline/0132.png new file mode 100644 index 000000000..2ffc0705c Binary files /dev/null and b/fonts/MiniwiFontOutline/0132.png differ diff --git a/fonts/MiniwiFontOutline/0133.png b/fonts/MiniwiFontOutline/0133.png new file mode 100644 index 000000000..806146f31 Binary files /dev/null and b/fonts/MiniwiFontOutline/0133.png differ diff --git a/fonts/MiniwiFontOutline/0134.png b/fonts/MiniwiFontOutline/0134.png new file mode 100644 index 000000000..56e6cea83 Binary files /dev/null and b/fonts/MiniwiFontOutline/0134.png differ diff --git a/fonts/MiniwiFontOutline/0135.png b/fonts/MiniwiFontOutline/0135.png new file mode 100644 index 000000000..b2ef9d0da Binary files /dev/null and b/fonts/MiniwiFontOutline/0135.png differ diff --git a/fonts/MiniwiFontOutline/0136.png b/fonts/MiniwiFontOutline/0136.png new file mode 100644 index 000000000..be5503dbc Binary files /dev/null and b/fonts/MiniwiFontOutline/0136.png differ diff --git a/fonts/MiniwiFontOutline/0137.png b/fonts/MiniwiFontOutline/0137.png new file mode 100644 index 000000000..2fd5e77b6 Binary files /dev/null and b/fonts/MiniwiFontOutline/0137.png differ diff --git a/fonts/MiniwiFontOutline/0138.png b/fonts/MiniwiFontOutline/0138.png new file mode 100644 index 000000000..94feba1ab Binary files /dev/null and b/fonts/MiniwiFontOutline/0138.png differ diff --git a/fonts/MiniwiFontOutline/0139.png b/fonts/MiniwiFontOutline/0139.png new file mode 100644 index 000000000..7030ba8e5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0139.png differ diff --git a/fonts/MiniwiFontOutline/013A.png b/fonts/MiniwiFontOutline/013A.png new file mode 100644 index 000000000..280df3e50 Binary files /dev/null and b/fonts/MiniwiFontOutline/013A.png differ diff --git a/fonts/MiniwiFontOutline/013B.png b/fonts/MiniwiFontOutline/013B.png new file mode 100644 index 000000000..1501176a1 Binary files /dev/null and b/fonts/MiniwiFontOutline/013B.png differ diff --git a/fonts/MiniwiFontOutline/013C.png b/fonts/MiniwiFontOutline/013C.png new file mode 100644 index 000000000..870e458e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/013C.png differ diff --git a/fonts/MiniwiFontOutline/013D.png b/fonts/MiniwiFontOutline/013D.png new file mode 100644 index 000000000..1a55b853e Binary files /dev/null and b/fonts/MiniwiFontOutline/013D.png differ diff --git a/fonts/MiniwiFontOutline/013E.png b/fonts/MiniwiFontOutline/013E.png new file mode 100644 index 000000000..b9fdc3655 Binary files /dev/null and b/fonts/MiniwiFontOutline/013E.png differ diff --git a/fonts/MiniwiFontOutline/013F.png b/fonts/MiniwiFontOutline/013F.png new file mode 100644 index 000000000..c0a922935 Binary files /dev/null and b/fonts/MiniwiFontOutline/013F.png differ diff --git a/fonts/MiniwiFontOutline/0140.png b/fonts/MiniwiFontOutline/0140.png new file mode 100644 index 000000000..a5bf84346 Binary files /dev/null and b/fonts/MiniwiFontOutline/0140.png differ diff --git a/fonts/MiniwiFontOutline/0141.png b/fonts/MiniwiFontOutline/0141.png new file mode 100644 index 000000000..481391b9b Binary files /dev/null and b/fonts/MiniwiFontOutline/0141.png differ diff --git a/fonts/MiniwiFontOutline/0142.png b/fonts/MiniwiFontOutline/0142.png new file mode 100644 index 000000000..98182d4c1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0142.png differ diff --git a/fonts/MiniwiFontOutline/0143.png b/fonts/MiniwiFontOutline/0143.png new file mode 100644 index 000000000..10947f849 Binary files /dev/null and b/fonts/MiniwiFontOutline/0143.png differ diff --git a/fonts/MiniwiFontOutline/0144.png b/fonts/MiniwiFontOutline/0144.png new file mode 100644 index 000000000..e5edff9cc Binary files /dev/null and b/fonts/MiniwiFontOutline/0144.png differ diff --git a/fonts/MiniwiFontOutline/0145.png b/fonts/MiniwiFontOutline/0145.png new file mode 100644 index 000000000..a6ec31af7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0145.png differ diff --git a/fonts/MiniwiFontOutline/0146.png b/fonts/MiniwiFontOutline/0146.png new file mode 100644 index 000000000..1222f1615 Binary files /dev/null and b/fonts/MiniwiFontOutline/0146.png differ diff --git a/fonts/MiniwiFontOutline/0147.png b/fonts/MiniwiFontOutline/0147.png new file mode 100644 index 000000000..afec98b8c Binary files /dev/null and b/fonts/MiniwiFontOutline/0147.png differ diff --git a/fonts/MiniwiFontOutline/0148.png b/fonts/MiniwiFontOutline/0148.png new file mode 100644 index 000000000..908f20eda Binary files /dev/null and b/fonts/MiniwiFontOutline/0148.png differ diff --git a/fonts/MiniwiFontOutline/0149.png b/fonts/MiniwiFontOutline/0149.png new file mode 100644 index 000000000..71f276fb7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0149.png differ diff --git a/fonts/MiniwiFontOutline/014A.png b/fonts/MiniwiFontOutline/014A.png new file mode 100644 index 000000000..ea1e14109 Binary files /dev/null and b/fonts/MiniwiFontOutline/014A.png differ diff --git a/fonts/MiniwiFontOutline/014B.png b/fonts/MiniwiFontOutline/014B.png new file mode 100644 index 000000000..a640a87e9 Binary files /dev/null and b/fonts/MiniwiFontOutline/014B.png differ diff --git a/fonts/MiniwiFontOutline/014C.png b/fonts/MiniwiFontOutline/014C.png new file mode 100644 index 000000000..8ad89b6af Binary files /dev/null and b/fonts/MiniwiFontOutline/014C.png differ diff --git a/fonts/MiniwiFontOutline/014D.png b/fonts/MiniwiFontOutline/014D.png new file mode 100644 index 000000000..c38c09130 Binary files /dev/null and b/fonts/MiniwiFontOutline/014D.png differ diff --git a/fonts/MiniwiFontOutline/014E.png b/fonts/MiniwiFontOutline/014E.png new file mode 100644 index 000000000..8ad89b6af Binary files /dev/null and b/fonts/MiniwiFontOutline/014E.png differ diff --git a/fonts/MiniwiFontOutline/014F.png b/fonts/MiniwiFontOutline/014F.png new file mode 100644 index 000000000..c38c09130 Binary files /dev/null and b/fonts/MiniwiFontOutline/014F.png differ diff --git a/fonts/MiniwiFontOutline/0150.png b/fonts/MiniwiFontOutline/0150.png new file mode 100644 index 000000000..a566849f3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0150.png differ diff --git a/fonts/MiniwiFontOutline/0151.png b/fonts/MiniwiFontOutline/0151.png new file mode 100644 index 000000000..e4888cd83 Binary files /dev/null and b/fonts/MiniwiFontOutline/0151.png differ diff --git a/fonts/MiniwiFontOutline/0152.png b/fonts/MiniwiFontOutline/0152.png new file mode 100644 index 000000000..460fe2afe Binary files /dev/null and b/fonts/MiniwiFontOutline/0152.png differ diff --git a/fonts/MiniwiFontOutline/0153.png b/fonts/MiniwiFontOutline/0153.png new file mode 100644 index 000000000..74898627c Binary files /dev/null and b/fonts/MiniwiFontOutline/0153.png differ diff --git a/fonts/MiniwiFontOutline/0154.png b/fonts/MiniwiFontOutline/0154.png new file mode 100644 index 000000000..5f6b30cc1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0154.png differ diff --git a/fonts/MiniwiFontOutline/0155.png b/fonts/MiniwiFontOutline/0155.png new file mode 100644 index 000000000..f6e76c80b Binary files /dev/null and b/fonts/MiniwiFontOutline/0155.png differ diff --git a/fonts/MiniwiFontOutline/0156.png b/fonts/MiniwiFontOutline/0156.png new file mode 100644 index 000000000..8e5b0c29d Binary files /dev/null and b/fonts/MiniwiFontOutline/0156.png differ diff --git a/fonts/MiniwiFontOutline/0157.png b/fonts/MiniwiFontOutline/0157.png new file mode 100644 index 000000000..15e27041c Binary files /dev/null and b/fonts/MiniwiFontOutline/0157.png differ diff --git a/fonts/MiniwiFontOutline/0158.png b/fonts/MiniwiFontOutline/0158.png new file mode 100644 index 000000000..7aea5e25e Binary files /dev/null and b/fonts/MiniwiFontOutline/0158.png differ diff --git a/fonts/MiniwiFontOutline/0159.png b/fonts/MiniwiFontOutline/0159.png new file mode 100644 index 000000000..42518ea84 Binary files /dev/null and b/fonts/MiniwiFontOutline/0159.png differ diff --git a/fonts/MiniwiFontOutline/015A.png b/fonts/MiniwiFontOutline/015A.png new file mode 100644 index 000000000..560e2ddc1 Binary files /dev/null and b/fonts/MiniwiFontOutline/015A.png differ diff --git a/fonts/MiniwiFontOutline/015B.png b/fonts/MiniwiFontOutline/015B.png new file mode 100644 index 000000000..e7024f9f0 Binary files /dev/null and b/fonts/MiniwiFontOutline/015B.png differ diff --git a/fonts/MiniwiFontOutline/015C.png b/fonts/MiniwiFontOutline/015C.png new file mode 100644 index 000000000..9a836e96a Binary files /dev/null and b/fonts/MiniwiFontOutline/015C.png differ diff --git a/fonts/MiniwiFontOutline/015D.png b/fonts/MiniwiFontOutline/015D.png new file mode 100644 index 000000000..1ee9653c0 Binary files /dev/null and b/fonts/MiniwiFontOutline/015D.png differ diff --git a/fonts/MiniwiFontOutline/015E.png b/fonts/MiniwiFontOutline/015E.png new file mode 100644 index 000000000..cd057ffa1 Binary files /dev/null and b/fonts/MiniwiFontOutline/015E.png differ diff --git a/fonts/MiniwiFontOutline/015F.png b/fonts/MiniwiFontOutline/015F.png new file mode 100644 index 000000000..49860ce67 Binary files /dev/null and b/fonts/MiniwiFontOutline/015F.png differ diff --git a/fonts/MiniwiFontOutline/0160.png b/fonts/MiniwiFontOutline/0160.png new file mode 100644 index 000000000..9a836e96a Binary files /dev/null and b/fonts/MiniwiFontOutline/0160.png differ diff --git a/fonts/MiniwiFontOutline/0161.png b/fonts/MiniwiFontOutline/0161.png new file mode 100644 index 000000000..1ee9653c0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0161.png differ diff --git a/fonts/MiniwiFontOutline/0162.png b/fonts/MiniwiFontOutline/0162.png new file mode 100644 index 000000000..cb4455f76 Binary files /dev/null and b/fonts/MiniwiFontOutline/0162.png differ diff --git a/fonts/MiniwiFontOutline/0163.png b/fonts/MiniwiFontOutline/0163.png new file mode 100644 index 000000000..ac3cd5126 Binary files /dev/null and b/fonts/MiniwiFontOutline/0163.png differ diff --git a/fonts/MiniwiFontOutline/0164.png b/fonts/MiniwiFontOutline/0164.png new file mode 100644 index 000000000..547d70ffa Binary files /dev/null and b/fonts/MiniwiFontOutline/0164.png differ diff --git a/fonts/MiniwiFontOutline/0165.png b/fonts/MiniwiFontOutline/0165.png new file mode 100644 index 000000000..de8918396 Binary files /dev/null and b/fonts/MiniwiFontOutline/0165.png differ diff --git a/fonts/MiniwiFontOutline/0166.png b/fonts/MiniwiFontOutline/0166.png new file mode 100644 index 000000000..386a3c7ed Binary files /dev/null and b/fonts/MiniwiFontOutline/0166.png differ diff --git a/fonts/MiniwiFontOutline/0167.png b/fonts/MiniwiFontOutline/0167.png new file mode 100644 index 000000000..8a387472e Binary files /dev/null and b/fonts/MiniwiFontOutline/0167.png differ diff --git a/fonts/MiniwiFontOutline/0168.png b/fonts/MiniwiFontOutline/0168.png new file mode 100644 index 000000000..5dafdfb34 Binary files /dev/null and b/fonts/MiniwiFontOutline/0168.png differ diff --git a/fonts/MiniwiFontOutline/0169.png b/fonts/MiniwiFontOutline/0169.png new file mode 100644 index 000000000..5dafdfb34 Binary files /dev/null and b/fonts/MiniwiFontOutline/0169.png differ diff --git a/fonts/MiniwiFontOutline/016A.png b/fonts/MiniwiFontOutline/016A.png new file mode 100644 index 000000000..194b0daba Binary files /dev/null and b/fonts/MiniwiFontOutline/016A.png differ diff --git a/fonts/MiniwiFontOutline/016B.png b/fonts/MiniwiFontOutline/016B.png new file mode 100644 index 000000000..194b0daba Binary files /dev/null and b/fonts/MiniwiFontOutline/016B.png differ diff --git a/fonts/MiniwiFontOutline/016C.png b/fonts/MiniwiFontOutline/016C.png new file mode 100644 index 000000000..194b0daba Binary files /dev/null and b/fonts/MiniwiFontOutline/016C.png differ diff --git a/fonts/MiniwiFontOutline/016D.png b/fonts/MiniwiFontOutline/016D.png new file mode 100644 index 000000000..194b0daba Binary files /dev/null and b/fonts/MiniwiFontOutline/016D.png differ diff --git a/fonts/MiniwiFontOutline/016E.png b/fonts/MiniwiFontOutline/016E.png new file mode 100644 index 000000000..422c3c740 Binary files /dev/null and b/fonts/MiniwiFontOutline/016E.png differ diff --git a/fonts/MiniwiFontOutline/016F.png b/fonts/MiniwiFontOutline/016F.png new file mode 100644 index 000000000..422c3c740 Binary files /dev/null and b/fonts/MiniwiFontOutline/016F.png differ diff --git a/fonts/MiniwiFontOutline/0170.png b/fonts/MiniwiFontOutline/0170.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/0170.png differ diff --git a/fonts/MiniwiFontOutline/0171.png b/fonts/MiniwiFontOutline/0171.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/0171.png differ diff --git a/fonts/MiniwiFontOutline/0172.png b/fonts/MiniwiFontOutline/0172.png new file mode 100644 index 000000000..ceaf2e5b9 Binary files /dev/null and b/fonts/MiniwiFontOutline/0172.png differ diff --git a/fonts/MiniwiFontOutline/0173.png b/fonts/MiniwiFontOutline/0173.png new file mode 100644 index 000000000..c59ba7285 Binary files /dev/null and b/fonts/MiniwiFontOutline/0173.png differ diff --git a/fonts/MiniwiFontOutline/0174.png b/fonts/MiniwiFontOutline/0174.png new file mode 100644 index 000000000..81dd437e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0174.png differ diff --git a/fonts/MiniwiFontOutline/0175.png b/fonts/MiniwiFontOutline/0175.png new file mode 100644 index 000000000..81dd437e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0175.png differ diff --git a/fonts/MiniwiFontOutline/0176.png b/fonts/MiniwiFontOutline/0176.png new file mode 100644 index 000000000..6e9ec5093 Binary files /dev/null and b/fonts/MiniwiFontOutline/0176.png differ diff --git a/fonts/MiniwiFontOutline/0177.png b/fonts/MiniwiFontOutline/0177.png new file mode 100644 index 000000000..317b9dace Binary files /dev/null and b/fonts/MiniwiFontOutline/0177.png differ diff --git a/fonts/MiniwiFontOutline/0178.png b/fonts/MiniwiFontOutline/0178.png new file mode 100644 index 000000000..021b1c45a Binary files /dev/null and b/fonts/MiniwiFontOutline/0178.png differ diff --git a/fonts/MiniwiFontOutline/0179.png b/fonts/MiniwiFontOutline/0179.png new file mode 100644 index 000000000..523d2c603 Binary files /dev/null and b/fonts/MiniwiFontOutline/0179.png differ diff --git a/fonts/MiniwiFontOutline/017A.png b/fonts/MiniwiFontOutline/017A.png new file mode 100644 index 000000000..77d520a40 Binary files /dev/null and b/fonts/MiniwiFontOutline/017A.png differ diff --git a/fonts/MiniwiFontOutline/017B.png b/fonts/MiniwiFontOutline/017B.png new file mode 100644 index 000000000..cb415a578 Binary files /dev/null and b/fonts/MiniwiFontOutline/017B.png differ diff --git a/fonts/MiniwiFontOutline/017C.png b/fonts/MiniwiFontOutline/017C.png new file mode 100644 index 000000000..fe9caf716 Binary files /dev/null and b/fonts/MiniwiFontOutline/017C.png differ diff --git a/fonts/MiniwiFontOutline/017D.png b/fonts/MiniwiFontOutline/017D.png new file mode 100644 index 000000000..638396ccc Binary files /dev/null and b/fonts/MiniwiFontOutline/017D.png differ diff --git a/fonts/MiniwiFontOutline/017E.png b/fonts/MiniwiFontOutline/017E.png new file mode 100644 index 000000000..86f4f0c15 Binary files /dev/null and b/fonts/MiniwiFontOutline/017E.png differ diff --git a/fonts/MiniwiFontOutline/017F.png b/fonts/MiniwiFontOutline/017F.png new file mode 100644 index 000000000..0cc480e89 Binary files /dev/null and b/fonts/MiniwiFontOutline/017F.png differ diff --git a/fonts/MiniwiFontOutline/0180.png b/fonts/MiniwiFontOutline/0180.png new file mode 100644 index 000000000..c58d09020 Binary files /dev/null and b/fonts/MiniwiFontOutline/0180.png differ diff --git a/fonts/MiniwiFontOutline/0181.png b/fonts/MiniwiFontOutline/0181.png new file mode 100644 index 000000000..ac4b0e55d Binary files /dev/null and b/fonts/MiniwiFontOutline/0181.png differ diff --git a/fonts/MiniwiFontOutline/0182.png b/fonts/MiniwiFontOutline/0182.png new file mode 100644 index 000000000..906cae8e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0182.png differ diff --git a/fonts/MiniwiFontOutline/0183.png b/fonts/MiniwiFontOutline/0183.png new file mode 100644 index 000000000..7e0912586 Binary files /dev/null and b/fonts/MiniwiFontOutline/0183.png differ diff --git a/fonts/MiniwiFontOutline/0184.png b/fonts/MiniwiFontOutline/0184.png new file mode 100644 index 000000000..cedf27362 Binary files /dev/null and b/fonts/MiniwiFontOutline/0184.png differ diff --git a/fonts/MiniwiFontOutline/0185.png b/fonts/MiniwiFontOutline/0185.png new file mode 100644 index 000000000..bb623ad8f Binary files /dev/null and b/fonts/MiniwiFontOutline/0185.png differ diff --git a/fonts/MiniwiFontOutline/0186.png b/fonts/MiniwiFontOutline/0186.png new file mode 100644 index 000000000..c8e529024 Binary files /dev/null and b/fonts/MiniwiFontOutline/0186.png differ diff --git a/fonts/MiniwiFontOutline/0187.png b/fonts/MiniwiFontOutline/0187.png new file mode 100644 index 000000000..57e41d3c2 Binary files /dev/null and b/fonts/MiniwiFontOutline/0187.png differ diff --git a/fonts/MiniwiFontOutline/0188.png b/fonts/MiniwiFontOutline/0188.png new file mode 100644 index 000000000..46a3ede8c Binary files /dev/null and b/fonts/MiniwiFontOutline/0188.png differ diff --git a/fonts/MiniwiFontOutline/0189.png b/fonts/MiniwiFontOutline/0189.png new file mode 100644 index 000000000..09ffd46ef Binary files /dev/null and b/fonts/MiniwiFontOutline/0189.png differ diff --git a/fonts/MiniwiFontOutline/018A.png b/fonts/MiniwiFontOutline/018A.png new file mode 100644 index 000000000..3760472ce Binary files /dev/null and b/fonts/MiniwiFontOutline/018A.png differ diff --git a/fonts/MiniwiFontOutline/018B.png b/fonts/MiniwiFontOutline/018B.png new file mode 100644 index 000000000..9425ceb3f Binary files /dev/null and b/fonts/MiniwiFontOutline/018B.png differ diff --git a/fonts/MiniwiFontOutline/018C.png b/fonts/MiniwiFontOutline/018C.png new file mode 100644 index 000000000..9425ceb3f Binary files /dev/null and b/fonts/MiniwiFontOutline/018C.png differ diff --git a/fonts/MiniwiFontOutline/018D.png b/fonts/MiniwiFontOutline/018D.png new file mode 100644 index 000000000..6d2a67bd2 Binary files /dev/null and b/fonts/MiniwiFontOutline/018D.png differ diff --git a/fonts/MiniwiFontOutline/018E.png b/fonts/MiniwiFontOutline/018E.png new file mode 100644 index 000000000..a3017d48f Binary files /dev/null and b/fonts/MiniwiFontOutline/018E.png differ diff --git a/fonts/MiniwiFontOutline/018F.png b/fonts/MiniwiFontOutline/018F.png new file mode 100644 index 000000000..1713fd5ae Binary files /dev/null and b/fonts/MiniwiFontOutline/018F.png differ diff --git a/fonts/MiniwiFontOutline/0190.png b/fonts/MiniwiFontOutline/0190.png new file mode 100644 index 000000000..8d7b928b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0190.png differ diff --git a/fonts/MiniwiFontOutline/0191.png b/fonts/MiniwiFontOutline/0191.png new file mode 100644 index 000000000..54bb077ac Binary files /dev/null and b/fonts/MiniwiFontOutline/0191.png differ diff --git a/fonts/MiniwiFontOutline/0192.png b/fonts/MiniwiFontOutline/0192.png new file mode 100644 index 000000000..d2903d0da Binary files /dev/null and b/fonts/MiniwiFontOutline/0192.png differ diff --git a/fonts/MiniwiFontOutline/0193.png b/fonts/MiniwiFontOutline/0193.png new file mode 100644 index 000000000..8bb41c20e Binary files /dev/null and b/fonts/MiniwiFontOutline/0193.png differ diff --git a/fonts/MiniwiFontOutline/0194.png b/fonts/MiniwiFontOutline/0194.png new file mode 100644 index 000000000..bd9ca4c81 Binary files /dev/null and b/fonts/MiniwiFontOutline/0194.png differ diff --git a/fonts/MiniwiFontOutline/0195.png b/fonts/MiniwiFontOutline/0195.png new file mode 100644 index 000000000..2a6ad4a64 Binary files /dev/null and b/fonts/MiniwiFontOutline/0195.png differ diff --git a/fonts/MiniwiFontOutline/0196.png b/fonts/MiniwiFontOutline/0196.png new file mode 100644 index 000000000..8df611031 Binary files /dev/null and b/fonts/MiniwiFontOutline/0196.png differ diff --git a/fonts/MiniwiFontOutline/0197.png b/fonts/MiniwiFontOutline/0197.png new file mode 100644 index 000000000..30b73b13a Binary files /dev/null and b/fonts/MiniwiFontOutline/0197.png differ diff --git a/fonts/MiniwiFontOutline/0198.png b/fonts/MiniwiFontOutline/0198.png new file mode 100644 index 000000000..27d47ab2a Binary files /dev/null and b/fonts/MiniwiFontOutline/0198.png differ diff --git a/fonts/MiniwiFontOutline/0199.png b/fonts/MiniwiFontOutline/0199.png new file mode 100644 index 000000000..7c7aa2807 Binary files /dev/null and b/fonts/MiniwiFontOutline/0199.png differ diff --git a/fonts/MiniwiFontOutline/019A.png b/fonts/MiniwiFontOutline/019A.png new file mode 100644 index 000000000..30b73b13a Binary files /dev/null and b/fonts/MiniwiFontOutline/019A.png differ diff --git a/fonts/MiniwiFontOutline/019B.png b/fonts/MiniwiFontOutline/019B.png new file mode 100644 index 000000000..b0433de2c Binary files /dev/null and b/fonts/MiniwiFontOutline/019B.png differ diff --git a/fonts/MiniwiFontOutline/019C.png b/fonts/MiniwiFontOutline/019C.png new file mode 100644 index 000000000..2beb6caf6 Binary files /dev/null and b/fonts/MiniwiFontOutline/019C.png differ diff --git a/fonts/MiniwiFontOutline/019D.png b/fonts/MiniwiFontOutline/019D.png new file mode 100644 index 000000000..9317d16c6 Binary files /dev/null and b/fonts/MiniwiFontOutline/019D.png differ diff --git a/fonts/MiniwiFontOutline/019E.png b/fonts/MiniwiFontOutline/019E.png new file mode 100644 index 000000000..2bb3a2dbe Binary files /dev/null and b/fonts/MiniwiFontOutline/019E.png differ diff --git a/fonts/MiniwiFontOutline/019F.png b/fonts/MiniwiFontOutline/019F.png new file mode 100644 index 000000000..b417de18b Binary files /dev/null and b/fonts/MiniwiFontOutline/019F.png differ diff --git a/fonts/MiniwiFontOutline/01A0.png b/fonts/MiniwiFontOutline/01A0.png new file mode 100644 index 000000000..c03e37ac5 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A0.png differ diff --git a/fonts/MiniwiFontOutline/01A1.png b/fonts/MiniwiFontOutline/01A1.png new file mode 100644 index 000000000..da287d858 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A1.png differ diff --git a/fonts/MiniwiFontOutline/01A2.png b/fonts/MiniwiFontOutline/01A2.png new file mode 100644 index 000000000..4022830a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A2.png differ diff --git a/fonts/MiniwiFontOutline/01A3.png b/fonts/MiniwiFontOutline/01A3.png new file mode 100644 index 000000000..1c067b2f3 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A3.png differ diff --git a/fonts/MiniwiFontOutline/01A4.png b/fonts/MiniwiFontOutline/01A4.png new file mode 100644 index 000000000..ab82c4e37 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A4.png differ diff --git a/fonts/MiniwiFontOutline/01A5.png b/fonts/MiniwiFontOutline/01A5.png new file mode 100644 index 000000000..6fb859f83 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A5.png differ diff --git a/fonts/MiniwiFontOutline/01A6.png b/fonts/MiniwiFontOutline/01A6.png new file mode 100644 index 000000000..085f104d1 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A6.png differ diff --git a/fonts/MiniwiFontOutline/01A7.png b/fonts/MiniwiFontOutline/01A7.png new file mode 100644 index 000000000..646f20a5e Binary files /dev/null and b/fonts/MiniwiFontOutline/01A7.png differ diff --git a/fonts/MiniwiFontOutline/01A8.png b/fonts/MiniwiFontOutline/01A8.png new file mode 100644 index 000000000..c22914327 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A8.png differ diff --git a/fonts/MiniwiFontOutline/01A9.png b/fonts/MiniwiFontOutline/01A9.png new file mode 100644 index 000000000..9b502a038 Binary files /dev/null and b/fonts/MiniwiFontOutline/01A9.png differ diff --git a/fonts/MiniwiFontOutline/01AA.png b/fonts/MiniwiFontOutline/01AA.png new file mode 100644 index 000000000..e9019fde8 Binary files /dev/null and b/fonts/MiniwiFontOutline/01AA.png differ diff --git a/fonts/MiniwiFontOutline/01AB.png b/fonts/MiniwiFontOutline/01AB.png new file mode 100644 index 000000000..ac3cd5126 Binary files /dev/null and b/fonts/MiniwiFontOutline/01AB.png differ diff --git a/fonts/MiniwiFontOutline/01AC.png b/fonts/MiniwiFontOutline/01AC.png new file mode 100644 index 000000000..93dce1b0f Binary files /dev/null and b/fonts/MiniwiFontOutline/01AC.png differ diff --git a/fonts/MiniwiFontOutline/01AD.png b/fonts/MiniwiFontOutline/01AD.png new file mode 100644 index 000000000..6ff41bc49 Binary files /dev/null and b/fonts/MiniwiFontOutline/01AD.png differ diff --git a/fonts/MiniwiFontOutline/01AE.png b/fonts/MiniwiFontOutline/01AE.png new file mode 100644 index 000000000..a986a7222 Binary files /dev/null and b/fonts/MiniwiFontOutline/01AE.png differ diff --git a/fonts/MiniwiFontOutline/01AF.png b/fonts/MiniwiFontOutline/01AF.png new file mode 100644 index 000000000..1d8bb83a7 Binary files /dev/null and b/fonts/MiniwiFontOutline/01AF.png differ diff --git a/fonts/MiniwiFontOutline/01B0.png b/fonts/MiniwiFontOutline/01B0.png new file mode 100644 index 000000000..c98e3c47b Binary files /dev/null and b/fonts/MiniwiFontOutline/01B0.png differ diff --git a/fonts/MiniwiFontOutline/01B1.png b/fonts/MiniwiFontOutline/01B1.png new file mode 100644 index 000000000..fdce7a565 Binary files /dev/null and b/fonts/MiniwiFontOutline/01B1.png differ diff --git a/fonts/MiniwiFontOutline/01B2.png b/fonts/MiniwiFontOutline/01B2.png new file mode 100644 index 000000000..9f88068de Binary files /dev/null and b/fonts/MiniwiFontOutline/01B2.png differ diff --git a/fonts/MiniwiFontOutline/01B3.png b/fonts/MiniwiFontOutline/01B3.png new file mode 100644 index 000000000..f3dcbd1bf Binary files /dev/null and b/fonts/MiniwiFontOutline/01B3.png differ diff --git a/fonts/MiniwiFontOutline/01B4.png b/fonts/MiniwiFontOutline/01B4.png new file mode 100644 index 000000000..a84537afa Binary files /dev/null and b/fonts/MiniwiFontOutline/01B4.png differ diff --git a/fonts/MiniwiFontOutline/01B5.png b/fonts/MiniwiFontOutline/01B5.png new file mode 100644 index 000000000..05418a69c Binary files /dev/null and b/fonts/MiniwiFontOutline/01B5.png differ diff --git a/fonts/MiniwiFontOutline/01B6.png b/fonts/MiniwiFontOutline/01B6.png new file mode 100644 index 000000000..a1ee48768 Binary files /dev/null and b/fonts/MiniwiFontOutline/01B6.png differ diff --git a/fonts/MiniwiFontOutline/01B7.png b/fonts/MiniwiFontOutline/01B7.png new file mode 100644 index 000000000..bdfb3c51c Binary files /dev/null and b/fonts/MiniwiFontOutline/01B7.png differ diff --git a/fonts/MiniwiFontOutline/01B8.png b/fonts/MiniwiFontOutline/01B8.png new file mode 100644 index 000000000..3c3110033 Binary files /dev/null and b/fonts/MiniwiFontOutline/01B8.png differ diff --git a/fonts/MiniwiFontOutline/01B9.png b/fonts/MiniwiFontOutline/01B9.png new file mode 100644 index 000000000..30938fb5d Binary files /dev/null and b/fonts/MiniwiFontOutline/01B9.png differ diff --git a/fonts/MiniwiFontOutline/01BA.png b/fonts/MiniwiFontOutline/01BA.png new file mode 100644 index 000000000..82239543c Binary files /dev/null and b/fonts/MiniwiFontOutline/01BA.png differ diff --git a/fonts/MiniwiFontOutline/01BB.png b/fonts/MiniwiFontOutline/01BB.png new file mode 100644 index 000000000..8478709a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/01BB.png differ diff --git a/fonts/MiniwiFontOutline/01BC.png b/fonts/MiniwiFontOutline/01BC.png new file mode 100644 index 000000000..ca64bc19d Binary files /dev/null and b/fonts/MiniwiFontOutline/01BC.png differ diff --git a/fonts/MiniwiFontOutline/01BD.png b/fonts/MiniwiFontOutline/01BD.png new file mode 100644 index 000000000..7503e2a99 Binary files /dev/null and b/fonts/MiniwiFontOutline/01BD.png differ diff --git a/fonts/MiniwiFontOutline/01BE.png b/fonts/MiniwiFontOutline/01BE.png new file mode 100644 index 000000000..e5ea5a1f0 Binary files /dev/null and b/fonts/MiniwiFontOutline/01BE.png differ diff --git a/fonts/MiniwiFontOutline/01BF.png b/fonts/MiniwiFontOutline/01BF.png new file mode 100644 index 000000000..463506f67 Binary files /dev/null and b/fonts/MiniwiFontOutline/01BF.png differ diff --git a/fonts/MiniwiFontOutline/01C0.png b/fonts/MiniwiFontOutline/01C0.png new file mode 100644 index 000000000..d61d5e1df Binary files /dev/null and b/fonts/MiniwiFontOutline/01C0.png differ diff --git a/fonts/MiniwiFontOutline/01C1.png b/fonts/MiniwiFontOutline/01C1.png new file mode 100644 index 000000000..5b4ec8a8d Binary files /dev/null and b/fonts/MiniwiFontOutline/01C1.png differ diff --git a/fonts/MiniwiFontOutline/01C2.png b/fonts/MiniwiFontOutline/01C2.png new file mode 100644 index 000000000..474efc09c Binary files /dev/null and b/fonts/MiniwiFontOutline/01C2.png differ diff --git a/fonts/MiniwiFontOutline/01C3.png b/fonts/MiniwiFontOutline/01C3.png new file mode 100644 index 000000000..62e3488a2 Binary files /dev/null and b/fonts/MiniwiFontOutline/01C3.png differ diff --git a/fonts/MiniwiFontOutline/01C4.png b/fonts/MiniwiFontOutline/01C4.png new file mode 100644 index 000000000..448836940 Binary files /dev/null and b/fonts/MiniwiFontOutline/01C4.png differ diff --git a/fonts/MiniwiFontOutline/01C5.png b/fonts/MiniwiFontOutline/01C5.png new file mode 100644 index 000000000..17270b904 Binary files /dev/null and b/fonts/MiniwiFontOutline/01C5.png differ diff --git a/fonts/MiniwiFontOutline/01C6.png b/fonts/MiniwiFontOutline/01C6.png new file mode 100644 index 000000000..cb8360862 Binary files /dev/null and b/fonts/MiniwiFontOutline/01C6.png differ diff --git a/fonts/MiniwiFontOutline/01C7.png b/fonts/MiniwiFontOutline/01C7.png new file mode 100644 index 000000000..0eec2c6f2 Binary files /dev/null and b/fonts/MiniwiFontOutline/01C7.png differ diff --git a/fonts/MiniwiFontOutline/01C8.png b/fonts/MiniwiFontOutline/01C8.png new file mode 100644 index 000000000..8fd7ca09b Binary files /dev/null and b/fonts/MiniwiFontOutline/01C8.png differ diff --git a/fonts/MiniwiFontOutline/01C9.png b/fonts/MiniwiFontOutline/01C9.png new file mode 100644 index 000000000..05329cd96 Binary files /dev/null and b/fonts/MiniwiFontOutline/01C9.png differ diff --git a/fonts/MiniwiFontOutline/01CA.png b/fonts/MiniwiFontOutline/01CA.png new file mode 100644 index 000000000..33e15e96c Binary files /dev/null and b/fonts/MiniwiFontOutline/01CA.png differ diff --git a/fonts/MiniwiFontOutline/01CB.png b/fonts/MiniwiFontOutline/01CB.png new file mode 100644 index 000000000..45e766ee9 Binary files /dev/null and b/fonts/MiniwiFontOutline/01CB.png differ diff --git a/fonts/MiniwiFontOutline/01CC.png b/fonts/MiniwiFontOutline/01CC.png new file mode 100644 index 000000000..388ee0afb Binary files /dev/null and b/fonts/MiniwiFontOutline/01CC.png differ diff --git a/fonts/MiniwiFontOutline/01CD.png b/fonts/MiniwiFontOutline/01CD.png new file mode 100644 index 000000000..59ac5d353 Binary files /dev/null and b/fonts/MiniwiFontOutline/01CD.png differ diff --git a/fonts/MiniwiFontOutline/01CE.png b/fonts/MiniwiFontOutline/01CE.png new file mode 100644 index 000000000..a747fd329 Binary files /dev/null and b/fonts/MiniwiFontOutline/01CE.png differ diff --git a/fonts/MiniwiFontOutline/01CF.png b/fonts/MiniwiFontOutline/01CF.png new file mode 100644 index 000000000..5c8d65590 Binary files /dev/null and b/fonts/MiniwiFontOutline/01CF.png differ diff --git a/fonts/MiniwiFontOutline/01D0.png b/fonts/MiniwiFontOutline/01D0.png new file mode 100644 index 000000000..51787a5b9 Binary files /dev/null and b/fonts/MiniwiFontOutline/01D0.png differ diff --git a/fonts/MiniwiFontOutline/01D1.png b/fonts/MiniwiFontOutline/01D1.png new file mode 100644 index 000000000..8ad89b6af Binary files /dev/null and b/fonts/MiniwiFontOutline/01D1.png differ diff --git a/fonts/MiniwiFontOutline/01D2.png b/fonts/MiniwiFontOutline/01D2.png new file mode 100644 index 000000000..c38c09130 Binary files /dev/null and b/fonts/MiniwiFontOutline/01D2.png differ diff --git a/fonts/MiniwiFontOutline/01D3.png b/fonts/MiniwiFontOutline/01D3.png new file mode 100644 index 000000000..194b0daba Binary files /dev/null and b/fonts/MiniwiFontOutline/01D3.png differ diff --git a/fonts/MiniwiFontOutline/01D4.png b/fonts/MiniwiFontOutline/01D4.png new file mode 100644 index 000000000..194b0daba Binary files /dev/null and b/fonts/MiniwiFontOutline/01D4.png differ diff --git a/fonts/MiniwiFontOutline/01D5.png b/fonts/MiniwiFontOutline/01D5.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/01D5.png differ diff --git a/fonts/MiniwiFontOutline/01D6.png b/fonts/MiniwiFontOutline/01D6.png new file mode 100644 index 000000000..df0f10957 Binary files /dev/null and b/fonts/MiniwiFontOutline/01D6.png differ diff --git a/fonts/MiniwiFontOutline/01D7.png b/fonts/MiniwiFontOutline/01D7.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/01D7.png differ diff --git a/fonts/MiniwiFontOutline/01D8.png b/fonts/MiniwiFontOutline/01D8.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/01D8.png differ diff --git a/fonts/MiniwiFontOutline/01D9.png b/fonts/MiniwiFontOutline/01D9.png new file mode 100644 index 000000000..df0f10957 Binary files /dev/null and b/fonts/MiniwiFontOutline/01D9.png differ diff --git a/fonts/MiniwiFontOutline/01DA.png b/fonts/MiniwiFontOutline/01DA.png new file mode 100644 index 000000000..df0f10957 Binary files /dev/null and b/fonts/MiniwiFontOutline/01DA.png differ diff --git a/fonts/MiniwiFontOutline/01DB.png b/fonts/MiniwiFontOutline/01DB.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/01DB.png differ diff --git a/fonts/MiniwiFontOutline/01DC.png b/fonts/MiniwiFontOutline/01DC.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/01DC.png differ diff --git a/fonts/MiniwiFontOutline/01DD.png b/fonts/MiniwiFontOutline/01DD.png new file mode 100644 index 000000000..380621c79 Binary files /dev/null and b/fonts/MiniwiFontOutline/01DD.png differ diff --git a/fonts/MiniwiFontOutline/01DE.png b/fonts/MiniwiFontOutline/01DE.png new file mode 100644 index 000000000..73dbc5d48 Binary files /dev/null and b/fonts/MiniwiFontOutline/01DE.png differ diff --git a/fonts/MiniwiFontOutline/01DF.png b/fonts/MiniwiFontOutline/01DF.png new file mode 100644 index 000000000..73a88da39 Binary files /dev/null and b/fonts/MiniwiFontOutline/01DF.png differ diff --git a/fonts/MiniwiFontOutline/01E0.png b/fonts/MiniwiFontOutline/01E0.png new file mode 100644 index 000000000..9eafa7928 Binary files /dev/null and b/fonts/MiniwiFontOutline/01E0.png differ diff --git a/fonts/MiniwiFontOutline/01E1.png b/fonts/MiniwiFontOutline/01E1.png new file mode 100644 index 000000000..b2fd51411 Binary files /dev/null and b/fonts/MiniwiFontOutline/01E1.png differ diff --git a/fonts/MiniwiFontOutline/01E2.png b/fonts/MiniwiFontOutline/01E2.png new file mode 100644 index 000000000..c31c64940 Binary files /dev/null and b/fonts/MiniwiFontOutline/01E2.png differ diff --git a/fonts/MiniwiFontOutline/01E3.png b/fonts/MiniwiFontOutline/01E3.png new file mode 100644 index 000000000..7a611234c Binary files /dev/null and b/fonts/MiniwiFontOutline/01E3.png differ diff --git a/fonts/MiniwiFontOutline/01E4.png b/fonts/MiniwiFontOutline/01E4.png new file mode 100644 index 000000000..04cd8418e Binary files /dev/null and b/fonts/MiniwiFontOutline/01E4.png differ diff --git a/fonts/MiniwiFontOutline/01E5.png b/fonts/MiniwiFontOutline/01E5.png new file mode 100644 index 000000000..d54272bb3 Binary files /dev/null and b/fonts/MiniwiFontOutline/01E5.png differ diff --git a/fonts/MiniwiFontOutline/01E6.png b/fonts/MiniwiFontOutline/01E6.png new file mode 100644 index 000000000..b1cb8cfd4 Binary files /dev/null and b/fonts/MiniwiFontOutline/01E6.png differ diff --git a/fonts/MiniwiFontOutline/01E7.png b/fonts/MiniwiFontOutline/01E7.png new file mode 100644 index 000000000..14f7683e7 Binary files /dev/null and b/fonts/MiniwiFontOutline/01E7.png differ diff --git a/fonts/MiniwiFontOutline/01E8.png b/fonts/MiniwiFontOutline/01E8.png new file mode 100644 index 000000000..2ac7a909b Binary files /dev/null and b/fonts/MiniwiFontOutline/01E8.png differ diff --git a/fonts/MiniwiFontOutline/01E9.png b/fonts/MiniwiFontOutline/01E9.png new file mode 100644 index 000000000..0aec8b779 Binary files /dev/null and b/fonts/MiniwiFontOutline/01E9.png differ diff --git a/fonts/MiniwiFontOutline/01EA.png b/fonts/MiniwiFontOutline/01EA.png new file mode 100644 index 000000000..b78b36db4 Binary files /dev/null and b/fonts/MiniwiFontOutline/01EA.png differ diff --git a/fonts/MiniwiFontOutline/01EB.png b/fonts/MiniwiFontOutline/01EB.png new file mode 100644 index 000000000..97da9ad70 Binary files /dev/null and b/fonts/MiniwiFontOutline/01EB.png differ diff --git a/fonts/MiniwiFontOutline/01EC.png b/fonts/MiniwiFontOutline/01EC.png new file mode 100644 index 000000000..73d904dfb Binary files /dev/null and b/fonts/MiniwiFontOutline/01EC.png differ diff --git a/fonts/MiniwiFontOutline/01ED.png b/fonts/MiniwiFontOutline/01ED.png new file mode 100644 index 000000000..954b7617c Binary files /dev/null and b/fonts/MiniwiFontOutline/01ED.png differ diff --git a/fonts/MiniwiFontOutline/01EE.png b/fonts/MiniwiFontOutline/01EE.png new file mode 100644 index 000000000..5ef0c04b5 Binary files /dev/null and b/fonts/MiniwiFontOutline/01EE.png differ diff --git a/fonts/MiniwiFontOutline/01EF.png b/fonts/MiniwiFontOutline/01EF.png new file mode 100644 index 000000000..b1dfa700e Binary files /dev/null and b/fonts/MiniwiFontOutline/01EF.png differ diff --git a/fonts/MiniwiFontOutline/01F0.png b/fonts/MiniwiFontOutline/01F0.png new file mode 100644 index 000000000..b2ef9d0da Binary files /dev/null and b/fonts/MiniwiFontOutline/01F0.png differ diff --git a/fonts/MiniwiFontOutline/01F1.png b/fonts/MiniwiFontOutline/01F1.png new file mode 100644 index 000000000..c5dca6f1f Binary files /dev/null and b/fonts/MiniwiFontOutline/01F1.png differ diff --git a/fonts/MiniwiFontOutline/01F2.png b/fonts/MiniwiFontOutline/01F2.png new file mode 100644 index 000000000..240107b46 Binary files /dev/null and b/fonts/MiniwiFontOutline/01F2.png differ diff --git a/fonts/MiniwiFontOutline/01F3.png b/fonts/MiniwiFontOutline/01F3.png new file mode 100644 index 000000000..137d1f59e Binary files /dev/null and b/fonts/MiniwiFontOutline/01F3.png differ diff --git a/fonts/MiniwiFontOutline/01F4.png b/fonts/MiniwiFontOutline/01F4.png new file mode 100644 index 000000000..4e0ad3677 Binary files /dev/null and b/fonts/MiniwiFontOutline/01F4.png differ diff --git a/fonts/MiniwiFontOutline/01F5.png b/fonts/MiniwiFontOutline/01F5.png new file mode 100644 index 000000000..34966c9be Binary files /dev/null and b/fonts/MiniwiFontOutline/01F5.png differ diff --git a/fonts/MiniwiFontOutline/01F6.png b/fonts/MiniwiFontOutline/01F6.png new file mode 100644 index 000000000..a14673399 Binary files /dev/null and b/fonts/MiniwiFontOutline/01F6.png differ diff --git a/fonts/MiniwiFontOutline/01F7.png b/fonts/MiniwiFontOutline/01F7.png new file mode 100644 index 000000000..11c5399d1 Binary files /dev/null and b/fonts/MiniwiFontOutline/01F7.png differ diff --git a/fonts/MiniwiFontOutline/01F8.png b/fonts/MiniwiFontOutline/01F8.png new file mode 100644 index 000000000..1417618e2 Binary files /dev/null and b/fonts/MiniwiFontOutline/01F8.png differ diff --git a/fonts/MiniwiFontOutline/01F9.png b/fonts/MiniwiFontOutline/01F9.png new file mode 100644 index 000000000..e179fd1e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/01F9.png differ diff --git a/fonts/MiniwiFontOutline/01FA.png b/fonts/MiniwiFontOutline/01FA.png new file mode 100644 index 000000000..579e0d299 Binary files /dev/null and b/fonts/MiniwiFontOutline/01FA.png differ diff --git a/fonts/MiniwiFontOutline/01FB.png b/fonts/MiniwiFontOutline/01FB.png new file mode 100644 index 000000000..573732c99 Binary files /dev/null and b/fonts/MiniwiFontOutline/01FB.png differ diff --git a/fonts/MiniwiFontOutline/01FC.png b/fonts/MiniwiFontOutline/01FC.png new file mode 100644 index 000000000..4509fd92d Binary files /dev/null and b/fonts/MiniwiFontOutline/01FC.png differ diff --git a/fonts/MiniwiFontOutline/01FD.png b/fonts/MiniwiFontOutline/01FD.png new file mode 100644 index 000000000..a62666f9e Binary files /dev/null and b/fonts/MiniwiFontOutline/01FD.png differ diff --git a/fonts/MiniwiFontOutline/01FE.png b/fonts/MiniwiFontOutline/01FE.png new file mode 100644 index 000000000..530dc4f8d Binary files /dev/null and b/fonts/MiniwiFontOutline/01FE.png differ diff --git a/fonts/MiniwiFontOutline/01FF.png b/fonts/MiniwiFontOutline/01FF.png new file mode 100644 index 000000000..a03be2d9d Binary files /dev/null and b/fonts/MiniwiFontOutline/01FF.png differ diff --git a/fonts/MiniwiFontOutline/0200.png b/fonts/MiniwiFontOutline/0200.png new file mode 100644 index 000000000..45ed0e1de Binary files /dev/null and b/fonts/MiniwiFontOutline/0200.png differ diff --git a/fonts/MiniwiFontOutline/0201.png b/fonts/MiniwiFontOutline/0201.png new file mode 100644 index 000000000..e88ac7750 Binary files /dev/null and b/fonts/MiniwiFontOutline/0201.png differ diff --git a/fonts/MiniwiFontOutline/0202.png b/fonts/MiniwiFontOutline/0202.png new file mode 100644 index 000000000..59ac5d353 Binary files /dev/null and b/fonts/MiniwiFontOutline/0202.png differ diff --git a/fonts/MiniwiFontOutline/0203.png b/fonts/MiniwiFontOutline/0203.png new file mode 100644 index 000000000..a747fd329 Binary files /dev/null and b/fonts/MiniwiFontOutline/0203.png differ diff --git a/fonts/MiniwiFontOutline/0204.png b/fonts/MiniwiFontOutline/0204.png new file mode 100644 index 000000000..0fe8db99d Binary files /dev/null and b/fonts/MiniwiFontOutline/0204.png differ diff --git a/fonts/MiniwiFontOutline/0205.png b/fonts/MiniwiFontOutline/0205.png new file mode 100644 index 000000000..586b8b7d1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0205.png differ diff --git a/fonts/MiniwiFontOutline/0206.png b/fonts/MiniwiFontOutline/0206.png new file mode 100644 index 000000000..fdcd67271 Binary files /dev/null and b/fonts/MiniwiFontOutline/0206.png differ diff --git a/fonts/MiniwiFontOutline/0207.png b/fonts/MiniwiFontOutline/0207.png new file mode 100644 index 000000000..6f97ed7e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0207.png differ diff --git a/fonts/MiniwiFontOutline/0208.png b/fonts/MiniwiFontOutline/0208.png new file mode 100644 index 000000000..a52e916be Binary files /dev/null and b/fonts/MiniwiFontOutline/0208.png differ diff --git a/fonts/MiniwiFontOutline/0209.png b/fonts/MiniwiFontOutline/0209.png new file mode 100644 index 000000000..c72ee71f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0209.png differ diff --git a/fonts/MiniwiFontOutline/020A.png b/fonts/MiniwiFontOutline/020A.png new file mode 100644 index 000000000..5c8d65590 Binary files /dev/null and b/fonts/MiniwiFontOutline/020A.png differ diff --git a/fonts/MiniwiFontOutline/020B.png b/fonts/MiniwiFontOutline/020B.png new file mode 100644 index 000000000..c72ee71f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/020B.png differ diff --git a/fonts/MiniwiFontOutline/020C.png b/fonts/MiniwiFontOutline/020C.png new file mode 100644 index 000000000..a566849f3 Binary files /dev/null and b/fonts/MiniwiFontOutline/020C.png differ diff --git a/fonts/MiniwiFontOutline/020D.png b/fonts/MiniwiFontOutline/020D.png new file mode 100644 index 000000000..e4888cd83 Binary files /dev/null and b/fonts/MiniwiFontOutline/020D.png differ diff --git a/fonts/MiniwiFontOutline/020E.png b/fonts/MiniwiFontOutline/020E.png new file mode 100644 index 000000000..8ad89b6af Binary files /dev/null and b/fonts/MiniwiFontOutline/020E.png differ diff --git a/fonts/MiniwiFontOutline/020F.png b/fonts/MiniwiFontOutline/020F.png new file mode 100644 index 000000000..c38c09130 Binary files /dev/null and b/fonts/MiniwiFontOutline/020F.png differ diff --git a/fonts/MiniwiFontOutline/0210.png b/fonts/MiniwiFontOutline/0210.png new file mode 100644 index 000000000..f903bb381 Binary files /dev/null and b/fonts/MiniwiFontOutline/0210.png differ diff --git a/fonts/MiniwiFontOutline/0211.png b/fonts/MiniwiFontOutline/0211.png new file mode 100644 index 000000000..4cdb4547d Binary files /dev/null and b/fonts/MiniwiFontOutline/0211.png differ diff --git a/fonts/MiniwiFontOutline/0212.png b/fonts/MiniwiFontOutline/0212.png new file mode 100644 index 000000000..7aea5e25e Binary files /dev/null and b/fonts/MiniwiFontOutline/0212.png differ diff --git a/fonts/MiniwiFontOutline/0213.png b/fonts/MiniwiFontOutline/0213.png new file mode 100644 index 000000000..42518ea84 Binary files /dev/null and b/fonts/MiniwiFontOutline/0213.png differ diff --git a/fonts/MiniwiFontOutline/0214.png b/fonts/MiniwiFontOutline/0214.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/0214.png differ diff --git a/fonts/MiniwiFontOutline/0215.png b/fonts/MiniwiFontOutline/0215.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/0215.png differ diff --git a/fonts/MiniwiFontOutline/0216.png b/fonts/MiniwiFontOutline/0216.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/0216.png differ diff --git a/fonts/MiniwiFontOutline/0217.png b/fonts/MiniwiFontOutline/0217.png new file mode 100644 index 000000000..34057c13e Binary files /dev/null and b/fonts/MiniwiFontOutline/0217.png differ diff --git a/fonts/MiniwiFontOutline/0218.png b/fonts/MiniwiFontOutline/0218.png new file mode 100644 index 000000000..cd057ffa1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0218.png differ diff --git a/fonts/MiniwiFontOutline/0219.png b/fonts/MiniwiFontOutline/0219.png new file mode 100644 index 000000000..49860ce67 Binary files /dev/null and b/fonts/MiniwiFontOutline/0219.png differ diff --git a/fonts/MiniwiFontOutline/021A.png b/fonts/MiniwiFontOutline/021A.png new file mode 100644 index 000000000..a986a7222 Binary files /dev/null and b/fonts/MiniwiFontOutline/021A.png differ diff --git a/fonts/MiniwiFontOutline/021B.png b/fonts/MiniwiFontOutline/021B.png new file mode 100644 index 000000000..afb3d3f8c Binary files /dev/null and b/fonts/MiniwiFontOutline/021B.png differ diff --git a/fonts/MiniwiFontOutline/021C.png b/fonts/MiniwiFontOutline/021C.png new file mode 100644 index 000000000..4e261e686 Binary files /dev/null and b/fonts/MiniwiFontOutline/021C.png differ diff --git a/fonts/MiniwiFontOutline/021D.png b/fonts/MiniwiFontOutline/021D.png new file mode 100644 index 000000000..70fc62aa4 Binary files /dev/null and b/fonts/MiniwiFontOutline/021D.png differ diff --git a/fonts/MiniwiFontOutline/021E.png b/fonts/MiniwiFontOutline/021E.png new file mode 100644 index 000000000..56b0f0a9f Binary files /dev/null and b/fonts/MiniwiFontOutline/021E.png differ diff --git a/fonts/MiniwiFontOutline/021F.png b/fonts/MiniwiFontOutline/021F.png new file mode 100644 index 000000000..79354cea2 Binary files /dev/null and b/fonts/MiniwiFontOutline/021F.png differ diff --git a/fonts/MiniwiFontOutline/0220.png b/fonts/MiniwiFontOutline/0220.png new file mode 100644 index 000000000..a4a39cb75 Binary files /dev/null and b/fonts/MiniwiFontOutline/0220.png differ diff --git a/fonts/MiniwiFontOutline/0221.png b/fonts/MiniwiFontOutline/0221.png new file mode 100644 index 000000000..f076ac0a3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0221.png differ diff --git a/fonts/MiniwiFontOutline/0222.png b/fonts/MiniwiFontOutline/0222.png new file mode 100644 index 000000000..562d05ecc Binary files /dev/null and b/fonts/MiniwiFontOutline/0222.png differ diff --git a/fonts/MiniwiFontOutline/0223.png b/fonts/MiniwiFontOutline/0223.png new file mode 100644 index 000000000..43da6efb0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0223.png differ diff --git a/fonts/MiniwiFontOutline/0224.png b/fonts/MiniwiFontOutline/0224.png new file mode 100644 index 000000000..bb6c68130 Binary files /dev/null and b/fonts/MiniwiFontOutline/0224.png differ diff --git a/fonts/MiniwiFontOutline/0225.png b/fonts/MiniwiFontOutline/0225.png new file mode 100644 index 000000000..3a7035815 Binary files /dev/null and b/fonts/MiniwiFontOutline/0225.png differ diff --git a/fonts/MiniwiFontOutline/0226.png b/fonts/MiniwiFontOutline/0226.png new file mode 100644 index 000000000..f9ce2dcc9 Binary files /dev/null and b/fonts/MiniwiFontOutline/0226.png differ diff --git a/fonts/MiniwiFontOutline/0227.png b/fonts/MiniwiFontOutline/0227.png new file mode 100644 index 000000000..911f017be Binary files /dev/null and b/fonts/MiniwiFontOutline/0227.png differ diff --git a/fonts/MiniwiFontOutline/0228.png b/fonts/MiniwiFontOutline/0228.png new file mode 100644 index 000000000..4f955c82b Binary files /dev/null and b/fonts/MiniwiFontOutline/0228.png differ diff --git a/fonts/MiniwiFontOutline/0229.png b/fonts/MiniwiFontOutline/0229.png new file mode 100644 index 000000000..e66ac43f4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0229.png differ diff --git a/fonts/MiniwiFontOutline/022A.png b/fonts/MiniwiFontOutline/022A.png new file mode 100644 index 000000000..ac9d64789 Binary files /dev/null and b/fonts/MiniwiFontOutline/022A.png differ diff --git a/fonts/MiniwiFontOutline/022B.png b/fonts/MiniwiFontOutline/022B.png new file mode 100644 index 000000000..ac9d64789 Binary files /dev/null and b/fonts/MiniwiFontOutline/022B.png differ diff --git a/fonts/MiniwiFontOutline/022C.png b/fonts/MiniwiFontOutline/022C.png new file mode 100644 index 000000000..e8c947c86 Binary files /dev/null and b/fonts/MiniwiFontOutline/022C.png differ diff --git a/fonts/MiniwiFontOutline/022D.png b/fonts/MiniwiFontOutline/022D.png new file mode 100644 index 000000000..e8c947c86 Binary files /dev/null and b/fonts/MiniwiFontOutline/022D.png differ diff --git a/fonts/MiniwiFontOutline/022E.png b/fonts/MiniwiFontOutline/022E.png new file mode 100644 index 000000000..20b5316af Binary files /dev/null and b/fonts/MiniwiFontOutline/022E.png differ diff --git a/fonts/MiniwiFontOutline/022F.png b/fonts/MiniwiFontOutline/022F.png new file mode 100644 index 000000000..58289ef34 Binary files /dev/null and b/fonts/MiniwiFontOutline/022F.png differ diff --git a/fonts/MiniwiFontOutline/0230.png b/fonts/MiniwiFontOutline/0230.png new file mode 100644 index 000000000..566dc5e48 Binary files /dev/null and b/fonts/MiniwiFontOutline/0230.png differ diff --git a/fonts/MiniwiFontOutline/0231.png b/fonts/MiniwiFontOutline/0231.png new file mode 100644 index 000000000..566dc5e48 Binary files /dev/null and b/fonts/MiniwiFontOutline/0231.png differ diff --git a/fonts/MiniwiFontOutline/0232.png b/fonts/MiniwiFontOutline/0232.png new file mode 100644 index 000000000..6e9ec5093 Binary files /dev/null and b/fonts/MiniwiFontOutline/0232.png differ diff --git a/fonts/MiniwiFontOutline/0233.png b/fonts/MiniwiFontOutline/0233.png new file mode 100644 index 000000000..317b9dace Binary files /dev/null and b/fonts/MiniwiFontOutline/0233.png differ diff --git a/fonts/MiniwiFontOutline/0234.png b/fonts/MiniwiFontOutline/0234.png new file mode 100644 index 000000000..3b69e463d Binary files /dev/null and b/fonts/MiniwiFontOutline/0234.png differ diff --git a/fonts/MiniwiFontOutline/0235.png b/fonts/MiniwiFontOutline/0235.png new file mode 100644 index 000000000..8091400ba Binary files /dev/null and b/fonts/MiniwiFontOutline/0235.png differ diff --git a/fonts/MiniwiFontOutline/0236.png b/fonts/MiniwiFontOutline/0236.png new file mode 100644 index 000000000..a04496126 Binary files /dev/null and b/fonts/MiniwiFontOutline/0236.png differ diff --git a/fonts/MiniwiFontOutline/0237.png b/fonts/MiniwiFontOutline/0237.png new file mode 100644 index 000000000..566c02104 Binary files /dev/null and b/fonts/MiniwiFontOutline/0237.png differ diff --git a/fonts/MiniwiFontOutline/0238.png b/fonts/MiniwiFontOutline/0238.png new file mode 100644 index 000000000..3f0573187 Binary files /dev/null and b/fonts/MiniwiFontOutline/0238.png differ diff --git a/fonts/MiniwiFontOutline/0239.png b/fonts/MiniwiFontOutline/0239.png new file mode 100644 index 000000000..2d6d96279 Binary files /dev/null and b/fonts/MiniwiFontOutline/0239.png differ diff --git a/fonts/MiniwiFontOutline/023A.png b/fonts/MiniwiFontOutline/023A.png new file mode 100644 index 000000000..f0910ff64 Binary files /dev/null and b/fonts/MiniwiFontOutline/023A.png differ diff --git a/fonts/MiniwiFontOutline/023B.png b/fonts/MiniwiFontOutline/023B.png new file mode 100644 index 000000000..ffa097821 Binary files /dev/null and b/fonts/MiniwiFontOutline/023B.png differ diff --git a/fonts/MiniwiFontOutline/023C.png b/fonts/MiniwiFontOutline/023C.png new file mode 100644 index 000000000..cc87a66e9 Binary files /dev/null and b/fonts/MiniwiFontOutline/023C.png differ diff --git a/fonts/MiniwiFontOutline/023D.png b/fonts/MiniwiFontOutline/023D.png new file mode 100644 index 000000000..3bcbe5dc5 Binary files /dev/null and b/fonts/MiniwiFontOutline/023D.png differ diff --git a/fonts/MiniwiFontOutline/023E.png b/fonts/MiniwiFontOutline/023E.png new file mode 100644 index 000000000..effc1d1a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/023E.png differ diff --git a/fonts/MiniwiFontOutline/023F.png b/fonts/MiniwiFontOutline/023F.png new file mode 100644 index 000000000..1c00b9c6a Binary files /dev/null and b/fonts/MiniwiFontOutline/023F.png differ diff --git a/fonts/MiniwiFontOutline/0240.png b/fonts/MiniwiFontOutline/0240.png new file mode 100644 index 000000000..fae755d26 Binary files /dev/null and b/fonts/MiniwiFontOutline/0240.png differ diff --git a/fonts/MiniwiFontOutline/0241.png b/fonts/MiniwiFontOutline/0241.png new file mode 100644 index 000000000..e07478915 Binary files /dev/null and b/fonts/MiniwiFontOutline/0241.png differ diff --git a/fonts/MiniwiFontOutline/0242.png b/fonts/MiniwiFontOutline/0242.png new file mode 100644 index 000000000..4e1a3dc79 Binary files /dev/null and b/fonts/MiniwiFontOutline/0242.png differ diff --git a/fonts/MiniwiFontOutline/0243.png b/fonts/MiniwiFontOutline/0243.png new file mode 100644 index 000000000..e2966b2a3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0243.png differ diff --git a/fonts/MiniwiFontOutline/0244.png b/fonts/MiniwiFontOutline/0244.png new file mode 100644 index 000000000..df4015cf3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0244.png differ diff --git a/fonts/MiniwiFontOutline/0245.png b/fonts/MiniwiFontOutline/0245.png new file mode 100644 index 000000000..35af4d95e Binary files /dev/null and b/fonts/MiniwiFontOutline/0245.png differ diff --git a/fonts/MiniwiFontOutline/0246.png b/fonts/MiniwiFontOutline/0246.png new file mode 100644 index 000000000..e1bfc2441 Binary files /dev/null and b/fonts/MiniwiFontOutline/0246.png differ diff --git a/fonts/MiniwiFontOutline/0247.png b/fonts/MiniwiFontOutline/0247.png new file mode 100644 index 000000000..8f8d1618c Binary files /dev/null and b/fonts/MiniwiFontOutline/0247.png differ diff --git a/fonts/MiniwiFontOutline/0248.png b/fonts/MiniwiFontOutline/0248.png new file mode 100644 index 000000000..65c0139f3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0248.png differ diff --git a/fonts/MiniwiFontOutline/0249.png b/fonts/MiniwiFontOutline/0249.png new file mode 100644 index 000000000..423b4a654 Binary files /dev/null and b/fonts/MiniwiFontOutline/0249.png differ diff --git a/fonts/MiniwiFontOutline/024A.png b/fonts/MiniwiFontOutline/024A.png new file mode 100644 index 000000000..ef1ba416a Binary files /dev/null and b/fonts/MiniwiFontOutline/024A.png differ diff --git a/fonts/MiniwiFontOutline/024B.png b/fonts/MiniwiFontOutline/024B.png new file mode 100644 index 000000000..e6a0ef97c Binary files /dev/null and b/fonts/MiniwiFontOutline/024B.png differ diff --git a/fonts/MiniwiFontOutline/024C.png b/fonts/MiniwiFontOutline/024C.png new file mode 100644 index 000000000..43258ca88 Binary files /dev/null and b/fonts/MiniwiFontOutline/024C.png differ diff --git a/fonts/MiniwiFontOutline/024D.png b/fonts/MiniwiFontOutline/024D.png new file mode 100644 index 000000000..38c05da8a Binary files /dev/null and b/fonts/MiniwiFontOutline/024D.png differ diff --git a/fonts/MiniwiFontOutline/024E.png b/fonts/MiniwiFontOutline/024E.png new file mode 100644 index 000000000..07d25bf86 Binary files /dev/null and b/fonts/MiniwiFontOutline/024E.png differ diff --git a/fonts/MiniwiFontOutline/024F.png b/fonts/MiniwiFontOutline/024F.png new file mode 100644 index 000000000..05a90cf2c Binary files /dev/null and b/fonts/MiniwiFontOutline/024F.png differ diff --git a/fonts/MiniwiFontOutline/0250.png b/fonts/MiniwiFontOutline/0250.png new file mode 100644 index 000000000..46fc5ccf5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0250.png differ diff --git a/fonts/MiniwiFontOutline/0251.png b/fonts/MiniwiFontOutline/0251.png new file mode 100644 index 000000000..8d2122948 Binary files /dev/null and b/fonts/MiniwiFontOutline/0251.png differ diff --git a/fonts/MiniwiFontOutline/0252.png b/fonts/MiniwiFontOutline/0252.png new file mode 100644 index 000000000..63c9c21c3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0252.png differ diff --git a/fonts/MiniwiFontOutline/0253.png b/fonts/MiniwiFontOutline/0253.png new file mode 100644 index 000000000..f3f3a7613 Binary files /dev/null and b/fonts/MiniwiFontOutline/0253.png differ diff --git a/fonts/MiniwiFontOutline/0254.png b/fonts/MiniwiFontOutline/0254.png new file mode 100644 index 000000000..7047f9019 Binary files /dev/null and b/fonts/MiniwiFontOutline/0254.png differ diff --git a/fonts/MiniwiFontOutline/0255.png b/fonts/MiniwiFontOutline/0255.png new file mode 100644 index 000000000..6649a7729 Binary files /dev/null and b/fonts/MiniwiFontOutline/0255.png differ diff --git a/fonts/MiniwiFontOutline/0256.png b/fonts/MiniwiFontOutline/0256.png new file mode 100644 index 000000000..9b288962b Binary files /dev/null and b/fonts/MiniwiFontOutline/0256.png differ diff --git a/fonts/MiniwiFontOutline/0257.png b/fonts/MiniwiFontOutline/0257.png new file mode 100644 index 000000000..73e23214e Binary files /dev/null and b/fonts/MiniwiFontOutline/0257.png differ diff --git a/fonts/MiniwiFontOutline/0258.png b/fonts/MiniwiFontOutline/0258.png new file mode 100644 index 000000000..11adb9b69 Binary files /dev/null and b/fonts/MiniwiFontOutline/0258.png differ diff --git a/fonts/MiniwiFontOutline/0259.png b/fonts/MiniwiFontOutline/0259.png new file mode 100644 index 000000000..380621c79 Binary files /dev/null and b/fonts/MiniwiFontOutline/0259.png differ diff --git a/fonts/MiniwiFontOutline/025A.png b/fonts/MiniwiFontOutline/025A.png new file mode 100644 index 000000000..f3cb25a2d Binary files /dev/null and b/fonts/MiniwiFontOutline/025A.png differ diff --git a/fonts/MiniwiFontOutline/025B.png b/fonts/MiniwiFontOutline/025B.png new file mode 100644 index 000000000..6fa4c3342 Binary files /dev/null and b/fonts/MiniwiFontOutline/025B.png differ diff --git a/fonts/MiniwiFontOutline/025C.png b/fonts/MiniwiFontOutline/025C.png new file mode 100644 index 000000000..009e6decf Binary files /dev/null and b/fonts/MiniwiFontOutline/025C.png differ diff --git a/fonts/MiniwiFontOutline/025D.png b/fonts/MiniwiFontOutline/025D.png new file mode 100644 index 000000000..33101cf74 Binary files /dev/null and b/fonts/MiniwiFontOutline/025D.png differ diff --git a/fonts/MiniwiFontOutline/025E.png b/fonts/MiniwiFontOutline/025E.png new file mode 100644 index 000000000..fdcfec8ce Binary files /dev/null and b/fonts/MiniwiFontOutline/025E.png differ diff --git a/fonts/MiniwiFontOutline/025F.png b/fonts/MiniwiFontOutline/025F.png new file mode 100644 index 000000000..17067d308 Binary files /dev/null and b/fonts/MiniwiFontOutline/025F.png differ diff --git a/fonts/MiniwiFontOutline/0260.png b/fonts/MiniwiFontOutline/0260.png new file mode 100644 index 000000000..25b22cfa4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0260.png differ diff --git a/fonts/MiniwiFontOutline/0261.png b/fonts/MiniwiFontOutline/0261.png new file mode 100644 index 000000000..8d35ed4c1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0261.png differ diff --git a/fonts/MiniwiFontOutline/0262.png b/fonts/MiniwiFontOutline/0262.png new file mode 100644 index 000000000..7f13cdabc Binary files /dev/null and b/fonts/MiniwiFontOutline/0262.png differ diff --git a/fonts/MiniwiFontOutline/0263.png b/fonts/MiniwiFontOutline/0263.png new file mode 100644 index 000000000..1be88dce4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0263.png differ diff --git a/fonts/MiniwiFontOutline/0264.png b/fonts/MiniwiFontOutline/0264.png new file mode 100644 index 000000000..57069bea1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0264.png differ diff --git a/fonts/MiniwiFontOutline/0265.png b/fonts/MiniwiFontOutline/0265.png new file mode 100644 index 000000000..ad740e208 Binary files /dev/null and b/fonts/MiniwiFontOutline/0265.png differ diff --git a/fonts/MiniwiFontOutline/0266.png b/fonts/MiniwiFontOutline/0266.png new file mode 100644 index 000000000..19c536610 Binary files /dev/null and b/fonts/MiniwiFontOutline/0266.png differ diff --git a/fonts/MiniwiFontOutline/0267.png b/fonts/MiniwiFontOutline/0267.png new file mode 100644 index 000000000..6a963cf70 Binary files /dev/null and b/fonts/MiniwiFontOutline/0267.png differ diff --git a/fonts/MiniwiFontOutline/0268.png b/fonts/MiniwiFontOutline/0268.png new file mode 100644 index 000000000..08fb55dc5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0268.png differ diff --git a/fonts/MiniwiFontOutline/0269.png b/fonts/MiniwiFontOutline/0269.png new file mode 100644 index 000000000..ba818dad9 Binary files /dev/null and b/fonts/MiniwiFontOutline/0269.png differ diff --git a/fonts/MiniwiFontOutline/026A.png b/fonts/MiniwiFontOutline/026A.png new file mode 100644 index 000000000..de4dd3624 Binary files /dev/null and b/fonts/MiniwiFontOutline/026A.png differ diff --git a/fonts/MiniwiFontOutline/026B.png b/fonts/MiniwiFontOutline/026B.png new file mode 100644 index 000000000..013ac2faa Binary files /dev/null and b/fonts/MiniwiFontOutline/026B.png differ diff --git a/fonts/MiniwiFontOutline/026C.png b/fonts/MiniwiFontOutline/026C.png new file mode 100644 index 000000000..233f5185f Binary files /dev/null and b/fonts/MiniwiFontOutline/026C.png differ diff --git a/fonts/MiniwiFontOutline/026D.png b/fonts/MiniwiFontOutline/026D.png new file mode 100644 index 000000000..bb5ce9e87 Binary files /dev/null and b/fonts/MiniwiFontOutline/026D.png differ diff --git a/fonts/MiniwiFontOutline/026E.png b/fonts/MiniwiFontOutline/026E.png new file mode 100644 index 000000000..543e8a05a Binary files /dev/null and b/fonts/MiniwiFontOutline/026E.png differ diff --git a/fonts/MiniwiFontOutline/026F.png b/fonts/MiniwiFontOutline/026F.png new file mode 100644 index 000000000..d61f74af7 Binary files /dev/null and b/fonts/MiniwiFontOutline/026F.png differ diff --git a/fonts/MiniwiFontOutline/0270.png b/fonts/MiniwiFontOutline/0270.png new file mode 100644 index 000000000..faf8600ed Binary files /dev/null and b/fonts/MiniwiFontOutline/0270.png differ diff --git a/fonts/MiniwiFontOutline/0271.png b/fonts/MiniwiFontOutline/0271.png new file mode 100644 index 000000000..b31aabf0e Binary files /dev/null and b/fonts/MiniwiFontOutline/0271.png differ diff --git a/fonts/MiniwiFontOutline/0272.png b/fonts/MiniwiFontOutline/0272.png new file mode 100644 index 000000000..ee3f82ba4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0272.png differ diff --git a/fonts/MiniwiFontOutline/0273.png b/fonts/MiniwiFontOutline/0273.png new file mode 100644 index 000000000..1bfd33749 Binary files /dev/null and b/fonts/MiniwiFontOutline/0273.png differ diff --git a/fonts/MiniwiFontOutline/0274.png b/fonts/MiniwiFontOutline/0274.png new file mode 100644 index 000000000..90ccde647 Binary files /dev/null and b/fonts/MiniwiFontOutline/0274.png differ diff --git a/fonts/MiniwiFontOutline/0275.png b/fonts/MiniwiFontOutline/0275.png new file mode 100644 index 000000000..3f9eb964e Binary files /dev/null and b/fonts/MiniwiFontOutline/0275.png differ diff --git a/fonts/MiniwiFontOutline/0276.png b/fonts/MiniwiFontOutline/0276.png new file mode 100644 index 000000000..460fe2afe Binary files /dev/null and b/fonts/MiniwiFontOutline/0276.png differ diff --git a/fonts/MiniwiFontOutline/0277.png b/fonts/MiniwiFontOutline/0277.png new file mode 100644 index 000000000..42d94ef76 Binary files /dev/null and b/fonts/MiniwiFontOutline/0277.png differ diff --git a/fonts/MiniwiFontOutline/0278.png b/fonts/MiniwiFontOutline/0278.png new file mode 100644 index 000000000..9805eab71 Binary files /dev/null and b/fonts/MiniwiFontOutline/0278.png differ diff --git a/fonts/MiniwiFontOutline/02C6.png b/fonts/MiniwiFontOutline/02C6.png new file mode 100644 index 000000000..a7b44fae2 Binary files /dev/null and b/fonts/MiniwiFontOutline/02C6.png differ diff --git a/fonts/MiniwiFontOutline/02C7.png b/fonts/MiniwiFontOutline/02C7.png new file mode 100644 index 000000000..6f0e7531d Binary files /dev/null and b/fonts/MiniwiFontOutline/02C7.png differ diff --git a/fonts/MiniwiFontOutline/02D8.png b/fonts/MiniwiFontOutline/02D8.png new file mode 100644 index 000000000..c632e57ad Binary files /dev/null and b/fonts/MiniwiFontOutline/02D8.png differ diff --git a/fonts/MiniwiFontOutline/02D9.png b/fonts/MiniwiFontOutline/02D9.png new file mode 100644 index 000000000..f3eebbd35 Binary files /dev/null and b/fonts/MiniwiFontOutline/02D9.png differ diff --git a/fonts/MiniwiFontOutline/02DA.png b/fonts/MiniwiFontOutline/02DA.png new file mode 100644 index 000000000..03832921b Binary files /dev/null and b/fonts/MiniwiFontOutline/02DA.png differ diff --git a/fonts/MiniwiFontOutline/02DB.png b/fonts/MiniwiFontOutline/02DB.png new file mode 100644 index 000000000..6e5dc4033 Binary files /dev/null and b/fonts/MiniwiFontOutline/02DB.png differ diff --git a/fonts/MiniwiFontOutline/02DC.png b/fonts/MiniwiFontOutline/02DC.png new file mode 100644 index 000000000..5d9dc7c7a Binary files /dev/null and b/fonts/MiniwiFontOutline/02DC.png differ diff --git a/fonts/MiniwiFontOutline/02DD.png b/fonts/MiniwiFontOutline/02DD.png new file mode 100644 index 000000000..4a1913b07 Binary files /dev/null and b/fonts/MiniwiFontOutline/02DD.png differ diff --git a/fonts/MiniwiFontOutline/0384.png b/fonts/MiniwiFontOutline/0384.png new file mode 100644 index 000000000..a38f91a77 Binary files /dev/null and b/fonts/MiniwiFontOutline/0384.png differ diff --git a/fonts/MiniwiFontOutline/0385.png b/fonts/MiniwiFontOutline/0385.png new file mode 100644 index 000000000..9d7fa1a39 Binary files /dev/null and b/fonts/MiniwiFontOutline/0385.png differ diff --git a/fonts/MiniwiFontOutline/0386.png b/fonts/MiniwiFontOutline/0386.png new file mode 100644 index 000000000..4a1a75758 Binary files /dev/null and b/fonts/MiniwiFontOutline/0386.png differ diff --git a/fonts/MiniwiFontOutline/0388.png b/fonts/MiniwiFontOutline/0388.png new file mode 100644 index 000000000..eb7108ff3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0388.png differ diff --git a/fonts/MiniwiFontOutline/0389.png b/fonts/MiniwiFontOutline/0389.png new file mode 100644 index 000000000..3a207358e Binary files /dev/null and b/fonts/MiniwiFontOutline/0389.png differ diff --git a/fonts/MiniwiFontOutline/038A.png b/fonts/MiniwiFontOutline/038A.png new file mode 100644 index 000000000..7b805ffa6 Binary files /dev/null and b/fonts/MiniwiFontOutline/038A.png differ diff --git a/fonts/MiniwiFontOutline/038C.png b/fonts/MiniwiFontOutline/038C.png new file mode 100644 index 000000000..cdecf7317 Binary files /dev/null and b/fonts/MiniwiFontOutline/038C.png differ diff --git a/fonts/MiniwiFontOutline/038E.png b/fonts/MiniwiFontOutline/038E.png new file mode 100644 index 000000000..ada672385 Binary files /dev/null and b/fonts/MiniwiFontOutline/038E.png differ diff --git a/fonts/MiniwiFontOutline/038F.png b/fonts/MiniwiFontOutline/038F.png new file mode 100644 index 000000000..184720e87 Binary files /dev/null and b/fonts/MiniwiFontOutline/038F.png differ diff --git a/fonts/MiniwiFontOutline/0390.png b/fonts/MiniwiFontOutline/0390.png new file mode 100644 index 000000000..ecd886bef Binary files /dev/null and b/fonts/MiniwiFontOutline/0390.png differ diff --git a/fonts/MiniwiFontOutline/0391.png b/fonts/MiniwiFontOutline/0391.png new file mode 100644 index 000000000..445c38d2e Binary files /dev/null and b/fonts/MiniwiFontOutline/0391.png differ diff --git a/fonts/MiniwiFontOutline/0392.png b/fonts/MiniwiFontOutline/0392.png new file mode 100644 index 000000000..532df99e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0392.png differ diff --git a/fonts/MiniwiFontOutline/0393.png b/fonts/MiniwiFontOutline/0393.png new file mode 100644 index 000000000..e47e7dea1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0393.png differ diff --git a/fonts/MiniwiFontOutline/0394.png b/fonts/MiniwiFontOutline/0394.png new file mode 100644 index 000000000..166356040 Binary files /dev/null and b/fonts/MiniwiFontOutline/0394.png differ diff --git a/fonts/MiniwiFontOutline/0395.png b/fonts/MiniwiFontOutline/0395.png new file mode 100644 index 000000000..6d720c262 Binary files /dev/null and b/fonts/MiniwiFontOutline/0395.png differ diff --git a/fonts/MiniwiFontOutline/0396.png b/fonts/MiniwiFontOutline/0396.png new file mode 100644 index 000000000..4a1e8dbcc Binary files /dev/null and b/fonts/MiniwiFontOutline/0396.png differ diff --git a/fonts/MiniwiFontOutline/0397.png b/fonts/MiniwiFontOutline/0397.png new file mode 100644 index 000000000..3a207358e Binary files /dev/null and b/fonts/MiniwiFontOutline/0397.png differ diff --git a/fonts/MiniwiFontOutline/0398.png b/fonts/MiniwiFontOutline/0398.png new file mode 100644 index 000000000..bd0bbe8e8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0398.png differ diff --git a/fonts/MiniwiFontOutline/0399.png b/fonts/MiniwiFontOutline/0399.png new file mode 100644 index 000000000..45bbdde1b Binary files /dev/null and b/fonts/MiniwiFontOutline/0399.png differ diff --git a/fonts/MiniwiFontOutline/039A.png b/fonts/MiniwiFontOutline/039A.png new file mode 100644 index 000000000..97736b0ae Binary files /dev/null and b/fonts/MiniwiFontOutline/039A.png differ diff --git a/fonts/MiniwiFontOutline/039B.png b/fonts/MiniwiFontOutline/039B.png new file mode 100644 index 000000000..35af4d95e Binary files /dev/null and b/fonts/MiniwiFontOutline/039B.png differ diff --git a/fonts/MiniwiFontOutline/039C.png b/fonts/MiniwiFontOutline/039C.png new file mode 100644 index 000000000..581a7544c Binary files /dev/null and b/fonts/MiniwiFontOutline/039C.png differ diff --git a/fonts/MiniwiFontOutline/039D.png b/fonts/MiniwiFontOutline/039D.png new file mode 100644 index 000000000..b86be55d5 Binary files /dev/null and b/fonts/MiniwiFontOutline/039D.png differ diff --git a/fonts/MiniwiFontOutline/039E.png b/fonts/MiniwiFontOutline/039E.png new file mode 100644 index 000000000..185584ba5 Binary files /dev/null and b/fonts/MiniwiFontOutline/039E.png differ diff --git a/fonts/MiniwiFontOutline/039F.png b/fonts/MiniwiFontOutline/039F.png new file mode 100644 index 000000000..b1501cee2 Binary files /dev/null and b/fonts/MiniwiFontOutline/039F.png differ diff --git a/fonts/MiniwiFontOutline/03A0.png b/fonts/MiniwiFontOutline/03A0.png new file mode 100644 index 000000000..19d03317c Binary files /dev/null and b/fonts/MiniwiFontOutline/03A0.png differ diff --git a/fonts/MiniwiFontOutline/03A1.png b/fonts/MiniwiFontOutline/03A1.png new file mode 100644 index 000000000..090c5142d Binary files /dev/null and b/fonts/MiniwiFontOutline/03A1.png differ diff --git a/fonts/MiniwiFontOutline/03A3.png b/fonts/MiniwiFontOutline/03A3.png new file mode 100644 index 000000000..9b502a038 Binary files /dev/null and b/fonts/MiniwiFontOutline/03A3.png differ diff --git a/fonts/MiniwiFontOutline/03A4.png b/fonts/MiniwiFontOutline/03A4.png new file mode 100644 index 000000000..547d70ffa Binary files /dev/null and b/fonts/MiniwiFontOutline/03A4.png differ diff --git a/fonts/MiniwiFontOutline/03A5.png b/fonts/MiniwiFontOutline/03A5.png new file mode 100644 index 000000000..ec02548c7 Binary files /dev/null and b/fonts/MiniwiFontOutline/03A5.png differ diff --git a/fonts/MiniwiFontOutline/03A6.png b/fonts/MiniwiFontOutline/03A6.png new file mode 100644 index 000000000..dbb265136 Binary files /dev/null and b/fonts/MiniwiFontOutline/03A6.png differ diff --git a/fonts/MiniwiFontOutline/03A7.png b/fonts/MiniwiFontOutline/03A7.png new file mode 100644 index 000000000..b0e12a2bf Binary files /dev/null and b/fonts/MiniwiFontOutline/03A7.png differ diff --git a/fonts/MiniwiFontOutline/03A8.png b/fonts/MiniwiFontOutline/03A8.png new file mode 100644 index 000000000..2a8ca9c46 Binary files /dev/null and b/fonts/MiniwiFontOutline/03A8.png differ diff --git a/fonts/MiniwiFontOutline/03A9.png b/fonts/MiniwiFontOutline/03A9.png new file mode 100644 index 000000000..40dacc8cd Binary files /dev/null and b/fonts/MiniwiFontOutline/03A9.png differ diff --git a/fonts/MiniwiFontOutline/03AA.png b/fonts/MiniwiFontOutline/03AA.png new file mode 100644 index 000000000..a52e916be Binary files /dev/null and b/fonts/MiniwiFontOutline/03AA.png differ diff --git a/fonts/MiniwiFontOutline/03AB.png b/fonts/MiniwiFontOutline/03AB.png new file mode 100644 index 000000000..021b1c45a Binary files /dev/null and b/fonts/MiniwiFontOutline/03AB.png differ diff --git a/fonts/MiniwiFontOutline/03AC.png b/fonts/MiniwiFontOutline/03AC.png new file mode 100644 index 000000000..d596db020 Binary files /dev/null and b/fonts/MiniwiFontOutline/03AC.png differ diff --git a/fonts/MiniwiFontOutline/03AD.png b/fonts/MiniwiFontOutline/03AD.png new file mode 100644 index 000000000..0fc793749 Binary files /dev/null and b/fonts/MiniwiFontOutline/03AD.png differ diff --git a/fonts/MiniwiFontOutline/03AE.png b/fonts/MiniwiFontOutline/03AE.png new file mode 100644 index 000000000..22c942b27 Binary files /dev/null and b/fonts/MiniwiFontOutline/03AE.png differ diff --git a/fonts/MiniwiFontOutline/03AF.png b/fonts/MiniwiFontOutline/03AF.png new file mode 100644 index 000000000..280df3e50 Binary files /dev/null and b/fonts/MiniwiFontOutline/03AF.png differ diff --git a/fonts/MiniwiFontOutline/03B0.png b/fonts/MiniwiFontOutline/03B0.png new file mode 100644 index 000000000..98b9a552e Binary files /dev/null and b/fonts/MiniwiFontOutline/03B0.png differ diff --git a/fonts/MiniwiFontOutline/03B1.png b/fonts/MiniwiFontOutline/03B1.png new file mode 100644 index 000000000..527fd6554 Binary files /dev/null and b/fonts/MiniwiFontOutline/03B1.png differ diff --git a/fonts/MiniwiFontOutline/03B2.png b/fonts/MiniwiFontOutline/03B2.png new file mode 100644 index 000000000..f6acb0e65 Binary files /dev/null and b/fonts/MiniwiFontOutline/03B2.png differ diff --git a/fonts/MiniwiFontOutline/03B3.png b/fonts/MiniwiFontOutline/03B3.png new file mode 100644 index 000000000..ea70c1afd Binary files /dev/null and b/fonts/MiniwiFontOutline/03B3.png differ diff --git a/fonts/MiniwiFontOutline/03B4.png b/fonts/MiniwiFontOutline/03B4.png new file mode 100644 index 000000000..d8df15059 Binary files /dev/null and b/fonts/MiniwiFontOutline/03B4.png differ diff --git a/fonts/MiniwiFontOutline/03B5.png b/fonts/MiniwiFontOutline/03B5.png new file mode 100644 index 000000000..6fa4c3342 Binary files /dev/null and b/fonts/MiniwiFontOutline/03B5.png differ diff --git a/fonts/MiniwiFontOutline/03B6.png b/fonts/MiniwiFontOutline/03B6.png new file mode 100644 index 000000000..7230b13ec Binary files /dev/null and b/fonts/MiniwiFontOutline/03B6.png differ diff --git a/fonts/MiniwiFontOutline/03B7.png b/fonts/MiniwiFontOutline/03B7.png new file mode 100644 index 000000000..2bb3a2dbe Binary files /dev/null and b/fonts/MiniwiFontOutline/03B7.png differ diff --git a/fonts/MiniwiFontOutline/03B8.png b/fonts/MiniwiFontOutline/03B8.png new file mode 100644 index 000000000..3a01edd3f Binary files /dev/null and b/fonts/MiniwiFontOutline/03B8.png differ diff --git a/fonts/MiniwiFontOutline/03B9.png b/fonts/MiniwiFontOutline/03B9.png new file mode 100644 index 000000000..ba818dad9 Binary files /dev/null and b/fonts/MiniwiFontOutline/03B9.png differ diff --git a/fonts/MiniwiFontOutline/03BA.png b/fonts/MiniwiFontOutline/03BA.png new file mode 100644 index 000000000..b14f9b2ad Binary files /dev/null and b/fonts/MiniwiFontOutline/03BA.png differ diff --git a/fonts/MiniwiFontOutline/03BB.png b/fonts/MiniwiFontOutline/03BB.png new file mode 100644 index 000000000..7cf26e4cd Binary files /dev/null and b/fonts/MiniwiFontOutline/03BB.png differ diff --git a/fonts/MiniwiFontOutline/03BC.png b/fonts/MiniwiFontOutline/03BC.png new file mode 100644 index 000000000..4b2f5a465 Binary files /dev/null and b/fonts/MiniwiFontOutline/03BC.png differ diff --git a/fonts/MiniwiFontOutline/03BD.png b/fonts/MiniwiFontOutline/03BD.png new file mode 100644 index 000000000..f1c88c1e9 Binary files /dev/null and b/fonts/MiniwiFontOutline/03BD.png differ diff --git a/fonts/MiniwiFontOutline/03BE.png b/fonts/MiniwiFontOutline/03BE.png new file mode 100644 index 000000000..6572798ce Binary files /dev/null and b/fonts/MiniwiFontOutline/03BE.png differ diff --git a/fonts/MiniwiFontOutline/03BF.png b/fonts/MiniwiFontOutline/03BF.png new file mode 100644 index 000000000..2707e2933 Binary files /dev/null and b/fonts/MiniwiFontOutline/03BF.png differ diff --git a/fonts/MiniwiFontOutline/03C0.png b/fonts/MiniwiFontOutline/03C0.png new file mode 100644 index 000000000..3f0427eaf Binary files /dev/null and b/fonts/MiniwiFontOutline/03C0.png differ diff --git a/fonts/MiniwiFontOutline/03C1.png b/fonts/MiniwiFontOutline/03C1.png new file mode 100644 index 000000000..a1a592f23 Binary files /dev/null and b/fonts/MiniwiFontOutline/03C1.png differ diff --git a/fonts/MiniwiFontOutline/03C2.png b/fonts/MiniwiFontOutline/03C2.png new file mode 100644 index 000000000..d5a19e79d Binary files /dev/null and b/fonts/MiniwiFontOutline/03C2.png differ diff --git a/fonts/MiniwiFontOutline/03C3.png b/fonts/MiniwiFontOutline/03C3.png new file mode 100644 index 000000000..f3f4da76c Binary files /dev/null and b/fonts/MiniwiFontOutline/03C3.png differ diff --git a/fonts/MiniwiFontOutline/03C4.png b/fonts/MiniwiFontOutline/03C4.png new file mode 100644 index 000000000..033e88dad Binary files /dev/null and b/fonts/MiniwiFontOutline/03C4.png differ diff --git a/fonts/MiniwiFontOutline/03C5.png b/fonts/MiniwiFontOutline/03C5.png new file mode 100644 index 000000000..2f2a449b0 Binary files /dev/null and b/fonts/MiniwiFontOutline/03C5.png differ diff --git a/fonts/MiniwiFontOutline/03C6.png b/fonts/MiniwiFontOutline/03C6.png new file mode 100644 index 000000000..52ccd4b4a Binary files /dev/null and b/fonts/MiniwiFontOutline/03C6.png differ diff --git a/fonts/MiniwiFontOutline/03C7.png b/fonts/MiniwiFontOutline/03C7.png new file mode 100644 index 000000000..c802bb7e8 Binary files /dev/null and b/fonts/MiniwiFontOutline/03C7.png differ diff --git a/fonts/MiniwiFontOutline/03C8.png b/fonts/MiniwiFontOutline/03C8.png new file mode 100644 index 000000000..6425064cd Binary files /dev/null and b/fonts/MiniwiFontOutline/03C8.png differ diff --git a/fonts/MiniwiFontOutline/03C9.png b/fonts/MiniwiFontOutline/03C9.png new file mode 100644 index 000000000..6349f3531 Binary files /dev/null and b/fonts/MiniwiFontOutline/03C9.png differ diff --git a/fonts/MiniwiFontOutline/03CA.png b/fonts/MiniwiFontOutline/03CA.png new file mode 100644 index 000000000..fd9521acd Binary files /dev/null and b/fonts/MiniwiFontOutline/03CA.png differ diff --git a/fonts/MiniwiFontOutline/03CB.png b/fonts/MiniwiFontOutline/03CB.png new file mode 100644 index 000000000..8a54e9d48 Binary files /dev/null and b/fonts/MiniwiFontOutline/03CB.png differ diff --git a/fonts/MiniwiFontOutline/03CC.png b/fonts/MiniwiFontOutline/03CC.png new file mode 100644 index 000000000..3fe13c391 Binary files /dev/null and b/fonts/MiniwiFontOutline/03CC.png differ diff --git a/fonts/MiniwiFontOutline/03CD.png b/fonts/MiniwiFontOutline/03CD.png new file mode 100644 index 000000000..c2ab1f9b3 Binary files /dev/null and b/fonts/MiniwiFontOutline/03CD.png differ diff --git a/fonts/MiniwiFontOutline/03CE.png b/fonts/MiniwiFontOutline/03CE.png new file mode 100644 index 000000000..95b59f745 Binary files /dev/null and b/fonts/MiniwiFontOutline/03CE.png differ diff --git a/fonts/MiniwiFontOutline/03D1.png b/fonts/MiniwiFontOutline/03D1.png new file mode 100644 index 000000000..905b8af46 Binary files /dev/null and b/fonts/MiniwiFontOutline/03D1.png differ diff --git a/fonts/MiniwiFontOutline/03D2.png b/fonts/MiniwiFontOutline/03D2.png new file mode 100644 index 000000000..d75a363ec Binary files /dev/null and b/fonts/MiniwiFontOutline/03D2.png differ diff --git a/fonts/MiniwiFontOutline/03D5.png b/fonts/MiniwiFontOutline/03D5.png new file mode 100644 index 000000000..eb30029e6 Binary files /dev/null and b/fonts/MiniwiFontOutline/03D5.png differ diff --git a/fonts/MiniwiFontOutline/03D6.png b/fonts/MiniwiFontOutline/03D6.png new file mode 100644 index 000000000..2ced11403 Binary files /dev/null and b/fonts/MiniwiFontOutline/03D6.png differ diff --git a/fonts/MiniwiFontOutline/0401.png b/fonts/MiniwiFontOutline/0401.png new file mode 100644 index 000000000..0fe8db99d Binary files /dev/null and b/fonts/MiniwiFontOutline/0401.png differ diff --git a/fonts/MiniwiFontOutline/0402.png b/fonts/MiniwiFontOutline/0402.png new file mode 100644 index 000000000..3fb38f754 Binary files /dev/null and b/fonts/MiniwiFontOutline/0402.png differ diff --git a/fonts/MiniwiFontOutline/0403.png b/fonts/MiniwiFontOutline/0403.png new file mode 100644 index 000000000..2d65e8e50 Binary files /dev/null and b/fonts/MiniwiFontOutline/0403.png differ diff --git a/fonts/MiniwiFontOutline/0404.png b/fonts/MiniwiFontOutline/0404.png new file mode 100644 index 000000000..eae2177fc Binary files /dev/null and b/fonts/MiniwiFontOutline/0404.png differ diff --git a/fonts/MiniwiFontOutline/0405.png b/fonts/MiniwiFontOutline/0405.png new file mode 100644 index 000000000..ca184305f Binary files /dev/null and b/fonts/MiniwiFontOutline/0405.png differ diff --git a/fonts/MiniwiFontOutline/0406.png b/fonts/MiniwiFontOutline/0406.png new file mode 100644 index 000000000..45bbdde1b Binary files /dev/null and b/fonts/MiniwiFontOutline/0406.png differ diff --git a/fonts/MiniwiFontOutline/0407.png b/fonts/MiniwiFontOutline/0407.png new file mode 100644 index 000000000..a52e916be Binary files /dev/null and b/fonts/MiniwiFontOutline/0407.png differ diff --git a/fonts/MiniwiFontOutline/0408.png b/fonts/MiniwiFontOutline/0408.png new file mode 100644 index 000000000..cd2e00457 Binary files /dev/null and b/fonts/MiniwiFontOutline/0408.png differ diff --git a/fonts/MiniwiFontOutline/0409.png b/fonts/MiniwiFontOutline/0409.png new file mode 100644 index 000000000..cb5b52c1f Binary files /dev/null and b/fonts/MiniwiFontOutline/0409.png differ diff --git a/fonts/MiniwiFontOutline/040A.png b/fonts/MiniwiFontOutline/040A.png new file mode 100644 index 000000000..a14673399 Binary files /dev/null and b/fonts/MiniwiFontOutline/040A.png differ diff --git a/fonts/MiniwiFontOutline/040B.png b/fonts/MiniwiFontOutline/040B.png new file mode 100644 index 000000000..19c536610 Binary files /dev/null and b/fonts/MiniwiFontOutline/040B.png differ diff --git a/fonts/MiniwiFontOutline/040C.png b/fonts/MiniwiFontOutline/040C.png new file mode 100644 index 000000000..4c0de3db7 Binary files /dev/null and b/fonts/MiniwiFontOutline/040C.png differ diff --git a/fonts/MiniwiFontOutline/040E.png b/fonts/MiniwiFontOutline/040E.png new file mode 100644 index 000000000..317b9dace Binary files /dev/null and b/fonts/MiniwiFontOutline/040E.png differ diff --git a/fonts/MiniwiFontOutline/040F.png b/fonts/MiniwiFontOutline/040F.png new file mode 100644 index 000000000..a81d2baba Binary files /dev/null and b/fonts/MiniwiFontOutline/040F.png differ diff --git a/fonts/MiniwiFontOutline/0410.png b/fonts/MiniwiFontOutline/0410.png new file mode 100644 index 000000000..445c38d2e Binary files /dev/null and b/fonts/MiniwiFontOutline/0410.png differ diff --git a/fonts/MiniwiFontOutline/0411.png b/fonts/MiniwiFontOutline/0411.png new file mode 100644 index 000000000..23f1e5bf7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0411.png differ diff --git a/fonts/MiniwiFontOutline/0412.png b/fonts/MiniwiFontOutline/0412.png new file mode 100644 index 000000000..532df99e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0412.png differ diff --git a/fonts/MiniwiFontOutline/0413.png b/fonts/MiniwiFontOutline/0413.png new file mode 100644 index 000000000..91a340498 Binary files /dev/null and b/fonts/MiniwiFontOutline/0413.png differ diff --git a/fonts/MiniwiFontOutline/0414.png b/fonts/MiniwiFontOutline/0414.png new file mode 100644 index 000000000..6c3c42a84 Binary files /dev/null and b/fonts/MiniwiFontOutline/0414.png differ diff --git a/fonts/MiniwiFontOutline/0415.png b/fonts/MiniwiFontOutline/0415.png new file mode 100644 index 000000000..6d720c262 Binary files /dev/null and b/fonts/MiniwiFontOutline/0415.png differ diff --git a/fonts/MiniwiFontOutline/0416.png b/fonts/MiniwiFontOutline/0416.png new file mode 100644 index 000000000..b94d06d2b Binary files /dev/null and b/fonts/MiniwiFontOutline/0416.png differ diff --git a/fonts/MiniwiFontOutline/0417.png b/fonts/MiniwiFontOutline/0417.png new file mode 100644 index 000000000..2efa662d3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0417.png differ diff --git a/fonts/MiniwiFontOutline/0418.png b/fonts/MiniwiFontOutline/0418.png new file mode 100644 index 000000000..b86be55d5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0418.png differ diff --git a/fonts/MiniwiFontOutline/0419.png b/fonts/MiniwiFontOutline/0419.png new file mode 100644 index 000000000..afec98b8c Binary files /dev/null and b/fonts/MiniwiFontOutline/0419.png differ diff --git a/fonts/MiniwiFontOutline/041A.png b/fonts/MiniwiFontOutline/041A.png new file mode 100644 index 000000000..97736b0ae Binary files /dev/null and b/fonts/MiniwiFontOutline/041A.png differ diff --git a/fonts/MiniwiFontOutline/041B.png b/fonts/MiniwiFontOutline/041B.png new file mode 100644 index 000000000..0f701ab2b Binary files /dev/null and b/fonts/MiniwiFontOutline/041B.png differ diff --git a/fonts/MiniwiFontOutline/041C.png b/fonts/MiniwiFontOutline/041C.png new file mode 100644 index 000000000..581a7544c Binary files /dev/null and b/fonts/MiniwiFontOutline/041C.png differ diff --git a/fonts/MiniwiFontOutline/041D.png b/fonts/MiniwiFontOutline/041D.png new file mode 100644 index 000000000..3a207358e Binary files /dev/null and b/fonts/MiniwiFontOutline/041D.png differ diff --git a/fonts/MiniwiFontOutline/041E.png b/fonts/MiniwiFontOutline/041E.png new file mode 100644 index 000000000..b1501cee2 Binary files /dev/null and b/fonts/MiniwiFontOutline/041E.png differ diff --git a/fonts/MiniwiFontOutline/041F.png b/fonts/MiniwiFontOutline/041F.png new file mode 100644 index 000000000..19d03317c Binary files /dev/null and b/fonts/MiniwiFontOutline/041F.png differ diff --git a/fonts/MiniwiFontOutline/0420.png b/fonts/MiniwiFontOutline/0420.png new file mode 100644 index 000000000..090c5142d Binary files /dev/null and b/fonts/MiniwiFontOutline/0420.png differ diff --git a/fonts/MiniwiFontOutline/0421.png b/fonts/MiniwiFontOutline/0421.png new file mode 100644 index 000000000..116cd69a4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0421.png differ diff --git a/fonts/MiniwiFontOutline/0422.png b/fonts/MiniwiFontOutline/0422.png new file mode 100644 index 000000000..547d70ffa Binary files /dev/null and b/fonts/MiniwiFontOutline/0422.png differ diff --git a/fonts/MiniwiFontOutline/0423.png b/fonts/MiniwiFontOutline/0423.png new file mode 100644 index 000000000..ab07f7085 Binary files /dev/null and b/fonts/MiniwiFontOutline/0423.png differ diff --git a/fonts/MiniwiFontOutline/0424.png b/fonts/MiniwiFontOutline/0424.png new file mode 100644 index 000000000..3581fe832 Binary files /dev/null and b/fonts/MiniwiFontOutline/0424.png differ diff --git a/fonts/MiniwiFontOutline/0425.png b/fonts/MiniwiFontOutline/0425.png new file mode 100644 index 000000000..b0e12a2bf Binary files /dev/null and b/fonts/MiniwiFontOutline/0425.png differ diff --git a/fonts/MiniwiFontOutline/0426.png b/fonts/MiniwiFontOutline/0426.png new file mode 100644 index 000000000..5a7d9fec7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0426.png differ diff --git a/fonts/MiniwiFontOutline/0427.png b/fonts/MiniwiFontOutline/0427.png new file mode 100644 index 000000000..58e2cec82 Binary files /dev/null and b/fonts/MiniwiFontOutline/0427.png differ diff --git a/fonts/MiniwiFontOutline/0428.png b/fonts/MiniwiFontOutline/0428.png new file mode 100644 index 000000000..aeb691df7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0428.png differ diff --git a/fonts/MiniwiFontOutline/0429.png b/fonts/MiniwiFontOutline/0429.png new file mode 100644 index 000000000..d0cb2fd3a Binary files /dev/null and b/fonts/MiniwiFontOutline/0429.png differ diff --git a/fonts/MiniwiFontOutline/042A.png b/fonts/MiniwiFontOutline/042A.png new file mode 100644 index 000000000..b0dc7cc51 Binary files /dev/null and b/fonts/MiniwiFontOutline/042A.png differ diff --git a/fonts/MiniwiFontOutline/042B.png b/fonts/MiniwiFontOutline/042B.png new file mode 100644 index 000000000..2a93e0b7a Binary files /dev/null and b/fonts/MiniwiFontOutline/042B.png differ diff --git a/fonts/MiniwiFontOutline/042C.png b/fonts/MiniwiFontOutline/042C.png new file mode 100644 index 000000000..1baa35b04 Binary files /dev/null and b/fonts/MiniwiFontOutline/042C.png differ diff --git a/fonts/MiniwiFontOutline/042D.png b/fonts/MiniwiFontOutline/042D.png new file mode 100644 index 000000000..d2616a05d Binary files /dev/null and b/fonts/MiniwiFontOutline/042D.png differ diff --git a/fonts/MiniwiFontOutline/042E.png b/fonts/MiniwiFontOutline/042E.png new file mode 100644 index 000000000..e58c549e2 Binary files /dev/null and b/fonts/MiniwiFontOutline/042E.png differ diff --git a/fonts/MiniwiFontOutline/042F.png b/fonts/MiniwiFontOutline/042F.png new file mode 100644 index 000000000..634b663c2 Binary files /dev/null and b/fonts/MiniwiFontOutline/042F.png differ diff --git a/fonts/MiniwiFontOutline/0430.png b/fonts/MiniwiFontOutline/0430.png new file mode 100644 index 000000000..dbcde29d6 Binary files /dev/null and b/fonts/MiniwiFontOutline/0430.png differ diff --git a/fonts/MiniwiFontOutline/0431.png b/fonts/MiniwiFontOutline/0431.png new file mode 100644 index 000000000..3cdc80990 Binary files /dev/null and b/fonts/MiniwiFontOutline/0431.png differ diff --git a/fonts/MiniwiFontOutline/0432.png b/fonts/MiniwiFontOutline/0432.png new file mode 100644 index 000000000..229c052b0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0432.png differ diff --git a/fonts/MiniwiFontOutline/0433.png b/fonts/MiniwiFontOutline/0433.png new file mode 100644 index 000000000..931098ef5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0433.png differ diff --git a/fonts/MiniwiFontOutline/0434.png b/fonts/MiniwiFontOutline/0434.png new file mode 100644 index 000000000..2e6459653 Binary files /dev/null and b/fonts/MiniwiFontOutline/0434.png differ diff --git a/fonts/MiniwiFontOutline/0435.png b/fonts/MiniwiFontOutline/0435.png new file mode 100644 index 000000000..32860a9d9 Binary files /dev/null and b/fonts/MiniwiFontOutline/0435.png differ diff --git a/fonts/MiniwiFontOutline/0436.png b/fonts/MiniwiFontOutline/0436.png new file mode 100644 index 000000000..eb6d5b6ca Binary files /dev/null and b/fonts/MiniwiFontOutline/0436.png differ diff --git a/fonts/MiniwiFontOutline/0437.png b/fonts/MiniwiFontOutline/0437.png new file mode 100644 index 000000000..2efa662d3 Binary files /dev/null and b/fonts/MiniwiFontOutline/0437.png differ diff --git a/fonts/MiniwiFontOutline/0438.png b/fonts/MiniwiFontOutline/0438.png new file mode 100644 index 000000000..90ccde647 Binary files /dev/null and b/fonts/MiniwiFontOutline/0438.png differ diff --git a/fonts/MiniwiFontOutline/0439.png b/fonts/MiniwiFontOutline/0439.png new file mode 100644 index 000000000..afec98b8c Binary files /dev/null and b/fonts/MiniwiFontOutline/0439.png differ diff --git a/fonts/MiniwiFontOutline/043A.png b/fonts/MiniwiFontOutline/043A.png new file mode 100644 index 000000000..97736b0ae Binary files /dev/null and b/fonts/MiniwiFontOutline/043A.png differ diff --git a/fonts/MiniwiFontOutline/043B.png b/fonts/MiniwiFontOutline/043B.png new file mode 100644 index 000000000..0f701ab2b Binary files /dev/null and b/fonts/MiniwiFontOutline/043B.png differ diff --git a/fonts/MiniwiFontOutline/043C.png b/fonts/MiniwiFontOutline/043C.png new file mode 100644 index 000000000..581a7544c Binary files /dev/null and b/fonts/MiniwiFontOutline/043C.png differ diff --git a/fonts/MiniwiFontOutline/043D.png b/fonts/MiniwiFontOutline/043D.png new file mode 100644 index 000000000..3a207358e Binary files /dev/null and b/fonts/MiniwiFontOutline/043D.png differ diff --git a/fonts/MiniwiFontOutline/043E.png b/fonts/MiniwiFontOutline/043E.png new file mode 100644 index 000000000..b1501cee2 Binary files /dev/null and b/fonts/MiniwiFontOutline/043E.png differ diff --git a/fonts/MiniwiFontOutline/043F.png b/fonts/MiniwiFontOutline/043F.png new file mode 100644 index 000000000..19d03317c Binary files /dev/null and b/fonts/MiniwiFontOutline/043F.png differ diff --git a/fonts/MiniwiFontOutline/0440.png b/fonts/MiniwiFontOutline/0440.png new file mode 100644 index 000000000..afea446fa Binary files /dev/null and b/fonts/MiniwiFontOutline/0440.png differ diff --git a/fonts/MiniwiFontOutline/0441.png b/fonts/MiniwiFontOutline/0441.png new file mode 100644 index 000000000..1ed50d371 Binary files /dev/null and b/fonts/MiniwiFontOutline/0441.png differ diff --git a/fonts/MiniwiFontOutline/0442.png b/fonts/MiniwiFontOutline/0442.png new file mode 100644 index 000000000..d9566bd48 Binary files /dev/null and b/fonts/MiniwiFontOutline/0442.png differ diff --git a/fonts/MiniwiFontOutline/0443.png b/fonts/MiniwiFontOutline/0443.png new file mode 100644 index 000000000..ea70c1afd Binary files /dev/null and b/fonts/MiniwiFontOutline/0443.png differ diff --git a/fonts/MiniwiFontOutline/0444.png b/fonts/MiniwiFontOutline/0444.png new file mode 100644 index 000000000..eb30029e6 Binary files /dev/null and b/fonts/MiniwiFontOutline/0444.png differ diff --git a/fonts/MiniwiFontOutline/0445.png b/fonts/MiniwiFontOutline/0445.png new file mode 100644 index 000000000..66ebf23c8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0445.png differ diff --git a/fonts/MiniwiFontOutline/0446.png b/fonts/MiniwiFontOutline/0446.png new file mode 100644 index 000000000..9ff981885 Binary files /dev/null and b/fonts/MiniwiFontOutline/0446.png differ diff --git a/fonts/MiniwiFontOutline/0447.png b/fonts/MiniwiFontOutline/0447.png new file mode 100644 index 000000000..9cc083976 Binary files /dev/null and b/fonts/MiniwiFontOutline/0447.png differ diff --git a/fonts/MiniwiFontOutline/0448.png b/fonts/MiniwiFontOutline/0448.png new file mode 100644 index 000000000..66519d83d Binary files /dev/null and b/fonts/MiniwiFontOutline/0448.png differ diff --git a/fonts/MiniwiFontOutline/0449.png b/fonts/MiniwiFontOutline/0449.png new file mode 100644 index 000000000..66519d83d Binary files /dev/null and b/fonts/MiniwiFontOutline/0449.png differ diff --git a/fonts/MiniwiFontOutline/044A.png b/fonts/MiniwiFontOutline/044A.png new file mode 100644 index 000000000..d3830741f Binary files /dev/null and b/fonts/MiniwiFontOutline/044A.png differ diff --git a/fonts/MiniwiFontOutline/044B.png b/fonts/MiniwiFontOutline/044B.png new file mode 100644 index 000000000..35c7aefb9 Binary files /dev/null and b/fonts/MiniwiFontOutline/044B.png differ diff --git a/fonts/MiniwiFontOutline/044C.png b/fonts/MiniwiFontOutline/044C.png new file mode 100644 index 000000000..940b68271 Binary files /dev/null and b/fonts/MiniwiFontOutline/044C.png differ diff --git a/fonts/MiniwiFontOutline/044D.png b/fonts/MiniwiFontOutline/044D.png new file mode 100644 index 000000000..8e7f30d05 Binary files /dev/null and b/fonts/MiniwiFontOutline/044D.png differ diff --git a/fonts/MiniwiFontOutline/044E.png b/fonts/MiniwiFontOutline/044E.png new file mode 100644 index 000000000..cf8180a59 Binary files /dev/null and b/fonts/MiniwiFontOutline/044E.png differ diff --git a/fonts/MiniwiFontOutline/044F.png b/fonts/MiniwiFontOutline/044F.png new file mode 100644 index 000000000..1d44ad275 Binary files /dev/null and b/fonts/MiniwiFontOutline/044F.png differ diff --git a/fonts/MiniwiFontOutline/0450.png b/fonts/MiniwiFontOutline/0450.png new file mode 100644 index 000000000..32860a9d9 Binary files /dev/null and b/fonts/MiniwiFontOutline/0450.png differ diff --git a/fonts/MiniwiFontOutline/0451.png b/fonts/MiniwiFontOutline/0451.png new file mode 100644 index 000000000..586b8b7d1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0451.png differ diff --git a/fonts/MiniwiFontOutline/0452.png b/fonts/MiniwiFontOutline/0452.png new file mode 100644 index 000000000..c581115f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0452.png differ diff --git a/fonts/MiniwiFontOutline/0453.png b/fonts/MiniwiFontOutline/0453.png new file mode 100644 index 000000000..10434ed93 Binary files /dev/null and b/fonts/MiniwiFontOutline/0453.png differ diff --git a/fonts/MiniwiFontOutline/0454.png b/fonts/MiniwiFontOutline/0454.png new file mode 100644 index 000000000..0d2a46ed4 Binary files /dev/null and b/fonts/MiniwiFontOutline/0454.png differ diff --git a/fonts/MiniwiFontOutline/0455.png b/fonts/MiniwiFontOutline/0455.png new file mode 100644 index 000000000..ca184305f Binary files /dev/null and b/fonts/MiniwiFontOutline/0455.png differ diff --git a/fonts/MiniwiFontOutline/0456.png b/fonts/MiniwiFontOutline/0456.png new file mode 100644 index 000000000..b4aa9c9cf Binary files /dev/null and b/fonts/MiniwiFontOutline/0456.png differ diff --git a/fonts/MiniwiFontOutline/0457.png b/fonts/MiniwiFontOutline/0457.png new file mode 100644 index 000000000..c72ee71f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/0457.png differ diff --git a/fonts/MiniwiFontOutline/0458.png b/fonts/MiniwiFontOutline/0458.png new file mode 100644 index 000000000..bb9d5e1af Binary files /dev/null and b/fonts/MiniwiFontOutline/0458.png differ diff --git a/fonts/MiniwiFontOutline/0459.png b/fonts/MiniwiFontOutline/0459.png new file mode 100644 index 000000000..96615c7fc Binary files /dev/null and b/fonts/MiniwiFontOutline/0459.png differ diff --git a/fonts/MiniwiFontOutline/045A.png b/fonts/MiniwiFontOutline/045A.png new file mode 100644 index 000000000..1643a3c69 Binary files /dev/null and b/fonts/MiniwiFontOutline/045A.png differ diff --git a/fonts/MiniwiFontOutline/045B.png b/fonts/MiniwiFontOutline/045B.png new file mode 100644 index 000000000..c581115f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/045B.png differ diff --git a/fonts/MiniwiFontOutline/045C.png b/fonts/MiniwiFontOutline/045C.png new file mode 100644 index 000000000..6454b07e9 Binary files /dev/null and b/fonts/MiniwiFontOutline/045C.png differ diff --git a/fonts/MiniwiFontOutline/045D.png b/fonts/MiniwiFontOutline/045D.png new file mode 100644 index 000000000..21f2313c4 Binary files /dev/null and b/fonts/MiniwiFontOutline/045D.png differ diff --git a/fonts/MiniwiFontOutline/045E.png b/fonts/MiniwiFontOutline/045E.png new file mode 100644 index 000000000..317b9dace Binary files /dev/null and b/fonts/MiniwiFontOutline/045E.png differ diff --git a/fonts/MiniwiFontOutline/045F.png b/fonts/MiniwiFontOutline/045F.png new file mode 100644 index 000000000..371702f3e Binary files /dev/null and b/fonts/MiniwiFontOutline/045F.png differ diff --git a/fonts/MiniwiFontOutline/0460.png b/fonts/MiniwiFontOutline/0460.png new file mode 100644 index 000000000..c04024c11 Binary files /dev/null and b/fonts/MiniwiFontOutline/0460.png differ diff --git a/fonts/MiniwiFontOutline/0461.png b/fonts/MiniwiFontOutline/0461.png new file mode 100644 index 000000000..6349f3531 Binary files /dev/null and b/fonts/MiniwiFontOutline/0461.png differ diff --git a/fonts/MiniwiFontOutline/05D0.png b/fonts/MiniwiFontOutline/05D0.png new file mode 100644 index 000000000..ce65494a9 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D0.png differ diff --git a/fonts/MiniwiFontOutline/05D1.png b/fonts/MiniwiFontOutline/05D1.png new file mode 100644 index 000000000..65c34d866 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D1.png differ diff --git a/fonts/MiniwiFontOutline/05D2.png b/fonts/MiniwiFontOutline/05D2.png new file mode 100644 index 000000000..4cd608f66 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D2.png differ diff --git a/fonts/MiniwiFontOutline/05D3.png b/fonts/MiniwiFontOutline/05D3.png new file mode 100644 index 000000000..f31ac3850 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D3.png differ diff --git a/fonts/MiniwiFontOutline/05D4.png b/fonts/MiniwiFontOutline/05D4.png new file mode 100644 index 000000000..3466b0a06 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D4.png differ diff --git a/fonts/MiniwiFontOutline/05D5.png b/fonts/MiniwiFontOutline/05D5.png new file mode 100644 index 000000000..637576ad7 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D5.png differ diff --git a/fonts/MiniwiFontOutline/05D6.png b/fonts/MiniwiFontOutline/05D6.png new file mode 100644 index 000000000..b9e3f8a85 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D6.png differ diff --git a/fonts/MiniwiFontOutline/05D7.png b/fonts/MiniwiFontOutline/05D7.png new file mode 100644 index 000000000..41fae2714 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D7.png differ diff --git a/fonts/MiniwiFontOutline/05D8.png b/fonts/MiniwiFontOutline/05D8.png new file mode 100644 index 000000000..32856f37a Binary files /dev/null and b/fonts/MiniwiFontOutline/05D8.png differ diff --git a/fonts/MiniwiFontOutline/05D9.png b/fonts/MiniwiFontOutline/05D9.png new file mode 100644 index 000000000..d49a224c3 Binary files /dev/null and b/fonts/MiniwiFontOutline/05D9.png differ diff --git a/fonts/MiniwiFontOutline/05DA.png b/fonts/MiniwiFontOutline/05DA.png new file mode 100644 index 000000000..049dd8cb2 Binary files /dev/null and b/fonts/MiniwiFontOutline/05DA.png differ diff --git a/fonts/MiniwiFontOutline/05DB.png b/fonts/MiniwiFontOutline/05DB.png new file mode 100644 index 000000000..a23217231 Binary files /dev/null and b/fonts/MiniwiFontOutline/05DB.png differ diff --git a/fonts/MiniwiFontOutline/05DC.png b/fonts/MiniwiFontOutline/05DC.png new file mode 100644 index 000000000..99931f0e3 Binary files /dev/null and b/fonts/MiniwiFontOutline/05DC.png differ diff --git a/fonts/MiniwiFontOutline/05DD.png b/fonts/MiniwiFontOutline/05DD.png new file mode 100644 index 000000000..42ecdfc5c Binary files /dev/null and b/fonts/MiniwiFontOutline/05DD.png differ diff --git a/fonts/MiniwiFontOutline/05DE.png b/fonts/MiniwiFontOutline/05DE.png new file mode 100644 index 000000000..5c14b0814 Binary files /dev/null and b/fonts/MiniwiFontOutline/05DE.png differ diff --git a/fonts/MiniwiFontOutline/05DF.png b/fonts/MiniwiFontOutline/05DF.png new file mode 100644 index 000000000..d61d5e1df Binary files /dev/null and b/fonts/MiniwiFontOutline/05DF.png differ diff --git a/fonts/MiniwiFontOutline/05E0.png b/fonts/MiniwiFontOutline/05E0.png new file mode 100644 index 000000000..53dc06e6f Binary files /dev/null and b/fonts/MiniwiFontOutline/05E0.png differ diff --git a/fonts/MiniwiFontOutline/05E1.png b/fonts/MiniwiFontOutline/05E1.png new file mode 100644 index 000000000..b4509068a Binary files /dev/null and b/fonts/MiniwiFontOutline/05E1.png differ diff --git a/fonts/MiniwiFontOutline/05E2.png b/fonts/MiniwiFontOutline/05E2.png new file mode 100644 index 000000000..222a7549a Binary files /dev/null and b/fonts/MiniwiFontOutline/05E2.png differ diff --git a/fonts/MiniwiFontOutline/05E3.png b/fonts/MiniwiFontOutline/05E3.png new file mode 100644 index 000000000..1e2e50df8 Binary files /dev/null and b/fonts/MiniwiFontOutline/05E3.png differ diff --git a/fonts/MiniwiFontOutline/05E4.png b/fonts/MiniwiFontOutline/05E4.png new file mode 100644 index 000000000..9826b12e6 Binary files /dev/null and b/fonts/MiniwiFontOutline/05E4.png differ diff --git a/fonts/MiniwiFontOutline/05E5.png b/fonts/MiniwiFontOutline/05E5.png new file mode 100644 index 000000000..f82f1d610 Binary files /dev/null and b/fonts/MiniwiFontOutline/05E5.png differ diff --git a/fonts/MiniwiFontOutline/05E6.png b/fonts/MiniwiFontOutline/05E6.png new file mode 100644 index 000000000..4bc695d7c Binary files /dev/null and b/fonts/MiniwiFontOutline/05E6.png differ diff --git a/fonts/MiniwiFontOutline/05E7.png b/fonts/MiniwiFontOutline/05E7.png new file mode 100644 index 000000000..0df24c17c Binary files /dev/null and b/fonts/MiniwiFontOutline/05E7.png differ diff --git a/fonts/MiniwiFontOutline/05E8.png b/fonts/MiniwiFontOutline/05E8.png new file mode 100644 index 000000000..4faef8ca1 Binary files /dev/null and b/fonts/MiniwiFontOutline/05E8.png differ diff --git a/fonts/MiniwiFontOutline/05E9.png b/fonts/MiniwiFontOutline/05E9.png new file mode 100644 index 000000000..42d220d5a Binary files /dev/null and b/fonts/MiniwiFontOutline/05E9.png differ diff --git a/fonts/MiniwiFontOutline/05EA.png b/fonts/MiniwiFontOutline/05EA.png new file mode 100644 index 000000000..281c64cd5 Binary files /dev/null and b/fonts/MiniwiFontOutline/05EA.png differ diff --git a/fonts/MiniwiFontOutline/060C.png b/fonts/MiniwiFontOutline/060C.png new file mode 100644 index 000000000..94f6a6eb5 Binary files /dev/null and b/fonts/MiniwiFontOutline/060C.png differ diff --git a/fonts/MiniwiFontOutline/061B.png b/fonts/MiniwiFontOutline/061B.png new file mode 100644 index 000000000..b9cc3308e Binary files /dev/null and b/fonts/MiniwiFontOutline/061B.png differ diff --git a/fonts/MiniwiFontOutline/061F.png b/fonts/MiniwiFontOutline/061F.png new file mode 100644 index 000000000..6ec73dde0 Binary files /dev/null and b/fonts/MiniwiFontOutline/061F.png differ diff --git a/fonts/MiniwiFontOutline/0621.png b/fonts/MiniwiFontOutline/0621.png new file mode 100644 index 000000000..f57d7c4a6 Binary files /dev/null and b/fonts/MiniwiFontOutline/0621.png differ diff --git a/fonts/MiniwiFontOutline/0622.png b/fonts/MiniwiFontOutline/0622.png new file mode 100644 index 000000000..288036531 Binary files /dev/null and b/fonts/MiniwiFontOutline/0622.png differ diff --git a/fonts/MiniwiFontOutline/0623.png b/fonts/MiniwiFontOutline/0623.png new file mode 100644 index 000000000..2769b74d7 Binary files /dev/null and b/fonts/MiniwiFontOutline/0623.png differ diff --git a/fonts/MiniwiFontOutline/0624.png b/fonts/MiniwiFontOutline/0624.png new file mode 100644 index 000000000..66ddb82fe Binary files /dev/null and b/fonts/MiniwiFontOutline/0624.png differ diff --git a/fonts/MiniwiFontOutline/0625.png b/fonts/MiniwiFontOutline/0625.png new file mode 100644 index 000000000..23cdc3361 Binary files /dev/null and b/fonts/MiniwiFontOutline/0625.png differ diff --git a/fonts/MiniwiFontOutline/0626.png b/fonts/MiniwiFontOutline/0626.png new file mode 100644 index 000000000..9763e9235 Binary files /dev/null and b/fonts/MiniwiFontOutline/0626.png differ diff --git a/fonts/MiniwiFontOutline/0627.png b/fonts/MiniwiFontOutline/0627.png new file mode 100644 index 000000000..4acf8ae91 Binary files /dev/null and b/fonts/MiniwiFontOutline/0627.png differ diff --git a/fonts/MiniwiFontOutline/0628.png b/fonts/MiniwiFontOutline/0628.png new file mode 100644 index 000000000..50773b424 Binary files /dev/null and b/fonts/MiniwiFontOutline/0628.png differ diff --git a/fonts/MiniwiFontOutline/0629.png b/fonts/MiniwiFontOutline/0629.png new file mode 100644 index 000000000..f28e18ab5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0629.png differ diff --git a/fonts/MiniwiFontOutline/062A.png b/fonts/MiniwiFontOutline/062A.png new file mode 100644 index 000000000..cd676873b Binary files /dev/null and b/fonts/MiniwiFontOutline/062A.png differ diff --git a/fonts/MiniwiFontOutline/062B.png b/fonts/MiniwiFontOutline/062B.png new file mode 100644 index 000000000..4c4521334 Binary files /dev/null and b/fonts/MiniwiFontOutline/062B.png differ diff --git a/fonts/MiniwiFontOutline/062C.png b/fonts/MiniwiFontOutline/062C.png new file mode 100644 index 000000000..07856e8a9 Binary files /dev/null and b/fonts/MiniwiFontOutline/062C.png differ diff --git a/fonts/MiniwiFontOutline/062D.png b/fonts/MiniwiFontOutline/062D.png new file mode 100644 index 000000000..2e956f4bf Binary files /dev/null and b/fonts/MiniwiFontOutline/062D.png differ diff --git a/fonts/MiniwiFontOutline/062E.png b/fonts/MiniwiFontOutline/062E.png new file mode 100644 index 000000000..9204d1f01 Binary files /dev/null and b/fonts/MiniwiFontOutline/062E.png differ diff --git a/fonts/MiniwiFontOutline/062F.png b/fonts/MiniwiFontOutline/062F.png new file mode 100644 index 000000000..2b5c4a413 Binary files /dev/null and b/fonts/MiniwiFontOutline/062F.png differ diff --git a/fonts/MiniwiFontOutline/0630.png b/fonts/MiniwiFontOutline/0630.png new file mode 100644 index 000000000..88eb56db1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0630.png differ diff --git a/fonts/MiniwiFontOutline/0631.png b/fonts/MiniwiFontOutline/0631.png new file mode 100644 index 000000000..c41a4a5c9 Binary files /dev/null and b/fonts/MiniwiFontOutline/0631.png differ diff --git a/fonts/MiniwiFontOutline/0632.png b/fonts/MiniwiFontOutline/0632.png new file mode 100644 index 000000000..ae8eb77c1 Binary files /dev/null and b/fonts/MiniwiFontOutline/0632.png differ diff --git a/fonts/MiniwiFontOutline/0633.png b/fonts/MiniwiFontOutline/0633.png new file mode 100644 index 000000000..58ac57643 Binary files /dev/null and b/fonts/MiniwiFontOutline/0633.png differ diff --git a/fonts/MiniwiFontOutline/0634.png b/fonts/MiniwiFontOutline/0634.png new file mode 100644 index 000000000..c01deeede Binary files /dev/null and b/fonts/MiniwiFontOutline/0634.png differ diff --git a/fonts/MiniwiFontOutline/0635.png b/fonts/MiniwiFontOutline/0635.png new file mode 100644 index 000000000..5cb701cc0 Binary files /dev/null and b/fonts/MiniwiFontOutline/0635.png differ diff --git a/fonts/MiniwiFontOutline/0636.png b/fonts/MiniwiFontOutline/0636.png new file mode 100644 index 000000000..105390e71 Binary files /dev/null and b/fonts/MiniwiFontOutline/0636.png differ diff --git a/fonts/MiniwiFontOutline/0637.png b/fonts/MiniwiFontOutline/0637.png new file mode 100644 index 000000000..0b0852cd9 Binary files /dev/null and b/fonts/MiniwiFontOutline/0637.png differ diff --git a/fonts/MiniwiFontOutline/0638.png b/fonts/MiniwiFontOutline/0638.png new file mode 100644 index 000000000..d33ef4201 Binary files /dev/null and b/fonts/MiniwiFontOutline/0638.png differ diff --git a/fonts/MiniwiFontOutline/0639.png b/fonts/MiniwiFontOutline/0639.png new file mode 100644 index 000000000..b6fc59fe5 Binary files /dev/null and b/fonts/MiniwiFontOutline/0639.png differ diff --git a/fonts/MiniwiFontOutline/063A.png b/fonts/MiniwiFontOutline/063A.png new file mode 100644 index 000000000..78c7c22f6 Binary files /dev/null and b/fonts/MiniwiFontOutline/063A.png differ diff --git a/fonts/MiniwiFontOutline/0640.png b/fonts/MiniwiFontOutline/0640.png new file mode 100644 index 000000000..363a4a253 Binary files /dev/null and b/fonts/MiniwiFontOutline/0640.png differ diff --git a/fonts/MiniwiFontOutline/0641.png b/fonts/MiniwiFontOutline/0641.png new file mode 100644 index 000000000..78c978969 Binary files /dev/null and b/fonts/MiniwiFontOutline/0641.png differ diff --git a/fonts/MiniwiFontOutline/0642.png b/fonts/MiniwiFontOutline/0642.png new file mode 100644 index 000000000..695d11c01 Binary files /dev/null and b/fonts/MiniwiFontOutline/0642.png differ diff --git a/fonts/MiniwiFontOutline/0643.png b/fonts/MiniwiFontOutline/0643.png new file mode 100644 index 000000000..e5dbf9c70 Binary files /dev/null and b/fonts/MiniwiFontOutline/0643.png differ diff --git a/fonts/MiniwiFontOutline/0644.png b/fonts/MiniwiFontOutline/0644.png new file mode 100644 index 000000000..bb2046765 Binary files /dev/null and b/fonts/MiniwiFontOutline/0644.png differ diff --git a/fonts/MiniwiFontOutline/0645.png b/fonts/MiniwiFontOutline/0645.png new file mode 100644 index 000000000..846c05d8e Binary files /dev/null and b/fonts/MiniwiFontOutline/0645.png differ diff --git a/fonts/MiniwiFontOutline/0646.png b/fonts/MiniwiFontOutline/0646.png new file mode 100644 index 000000000..c69f2252e Binary files /dev/null and b/fonts/MiniwiFontOutline/0646.png differ diff --git a/fonts/MiniwiFontOutline/0647.png b/fonts/MiniwiFontOutline/0647.png new file mode 100644 index 000000000..f53bc870c Binary files /dev/null and b/fonts/MiniwiFontOutline/0647.png differ diff --git a/fonts/MiniwiFontOutline/0648.png b/fonts/MiniwiFontOutline/0648.png new file mode 100644 index 000000000..e0d52f080 Binary files /dev/null and b/fonts/MiniwiFontOutline/0648.png differ diff --git a/fonts/MiniwiFontOutline/0649.png b/fonts/MiniwiFontOutline/0649.png new file mode 100644 index 000000000..b03ba6c9a Binary files /dev/null and b/fonts/MiniwiFontOutline/0649.png differ diff --git a/fonts/MiniwiFontOutline/064A.png b/fonts/MiniwiFontOutline/064A.png new file mode 100644 index 000000000..4fd550cb7 Binary files /dev/null and b/fonts/MiniwiFontOutline/064A.png differ diff --git a/fonts/MiniwiFontOutline/064B.png b/fonts/MiniwiFontOutline/064B.png new file mode 100644 index 000000000..7f7f89421 Binary files /dev/null and b/fonts/MiniwiFontOutline/064B.png differ diff --git a/fonts/MiniwiFontOutline/064C.png b/fonts/MiniwiFontOutline/064C.png new file mode 100644 index 000000000..ea19fca14 Binary files /dev/null and b/fonts/MiniwiFontOutline/064C.png differ diff --git a/fonts/MiniwiFontOutline/064D.png b/fonts/MiniwiFontOutline/064D.png new file mode 100644 index 000000000..74797ae04 Binary files /dev/null and b/fonts/MiniwiFontOutline/064D.png differ diff --git a/fonts/MiniwiFontOutline/064E.png b/fonts/MiniwiFontOutline/064E.png new file mode 100644 index 000000000..83a8d2294 Binary files /dev/null and b/fonts/MiniwiFontOutline/064E.png differ diff --git a/fonts/MiniwiFontOutline/064F.png b/fonts/MiniwiFontOutline/064F.png new file mode 100644 index 000000000..abf7e7963 Binary files /dev/null and b/fonts/MiniwiFontOutline/064F.png differ diff --git a/fonts/MiniwiFontOutline/0650.png b/fonts/MiniwiFontOutline/0650.png new file mode 100644 index 000000000..906306e40 Binary files /dev/null and b/fonts/MiniwiFontOutline/0650.png differ diff --git a/fonts/MiniwiFontOutline/0651.png b/fonts/MiniwiFontOutline/0651.png new file mode 100644 index 000000000..4d0b377ce Binary files /dev/null and b/fonts/MiniwiFontOutline/0651.png differ diff --git a/fonts/MiniwiFontOutline/0652.png b/fonts/MiniwiFontOutline/0652.png new file mode 100644 index 000000000..f7e28063b Binary files /dev/null and b/fonts/MiniwiFontOutline/0652.png differ diff --git a/fonts/MiniwiFontOutline/1E02.png b/fonts/MiniwiFontOutline/1E02.png new file mode 100644 index 000000000..794ac5af0 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E02.png differ diff --git a/fonts/MiniwiFontOutline/1E03.png b/fonts/MiniwiFontOutline/1E03.png new file mode 100644 index 000000000..8cb48a85a Binary files /dev/null and b/fonts/MiniwiFontOutline/1E03.png differ diff --git a/fonts/MiniwiFontOutline/1E0A.png b/fonts/MiniwiFontOutline/1E0A.png new file mode 100644 index 000000000..3a425db0b Binary files /dev/null and b/fonts/MiniwiFontOutline/1E0A.png differ diff --git a/fonts/MiniwiFontOutline/1E0B.png b/fonts/MiniwiFontOutline/1E0B.png new file mode 100644 index 000000000..22d9c50f2 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E0B.png differ diff --git a/fonts/MiniwiFontOutline/1E1E.png b/fonts/MiniwiFontOutline/1E1E.png new file mode 100644 index 000000000..5e7b02e02 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E1E.png differ diff --git a/fonts/MiniwiFontOutline/1E1F.png b/fonts/MiniwiFontOutline/1E1F.png new file mode 100644 index 000000000..5afce31a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E1F.png differ diff --git a/fonts/MiniwiFontOutline/1E40.png b/fonts/MiniwiFontOutline/1E40.png new file mode 100644 index 000000000..c86595e01 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E40.png differ diff --git a/fonts/MiniwiFontOutline/1E41.png b/fonts/MiniwiFontOutline/1E41.png new file mode 100644 index 000000000..c86595e01 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E41.png differ diff --git a/fonts/MiniwiFontOutline/1E56.png b/fonts/MiniwiFontOutline/1E56.png new file mode 100644 index 000000000..0ee00294f Binary files /dev/null and b/fonts/MiniwiFontOutline/1E56.png differ diff --git a/fonts/MiniwiFontOutline/1E57.png b/fonts/MiniwiFontOutline/1E57.png new file mode 100644 index 000000000..ba0134687 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E57.png differ diff --git a/fonts/MiniwiFontOutline/1E60.png b/fonts/MiniwiFontOutline/1E60.png new file mode 100644 index 000000000..874fd1acd Binary files /dev/null and b/fonts/MiniwiFontOutline/1E60.png differ diff --git a/fonts/MiniwiFontOutline/1E61.png b/fonts/MiniwiFontOutline/1E61.png new file mode 100644 index 000000000..1afee32b8 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E61.png differ diff --git a/fonts/MiniwiFontOutline/1E6A.png b/fonts/MiniwiFontOutline/1E6A.png new file mode 100644 index 000000000..61c2092f7 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E6A.png differ diff --git a/fonts/MiniwiFontOutline/1E6B.png b/fonts/MiniwiFontOutline/1E6B.png new file mode 100644 index 000000000..d799a4ab7 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E6B.png differ diff --git a/fonts/MiniwiFontOutline/1E80.png b/fonts/MiniwiFontOutline/1E80.png new file mode 100644 index 000000000..7c2832dcc Binary files /dev/null and b/fonts/MiniwiFontOutline/1E80.png differ diff --git a/fonts/MiniwiFontOutline/1E81.png b/fonts/MiniwiFontOutline/1E81.png new file mode 100644 index 000000000..7c2832dcc Binary files /dev/null and b/fonts/MiniwiFontOutline/1E81.png differ diff --git a/fonts/MiniwiFontOutline/1E82.png b/fonts/MiniwiFontOutline/1E82.png new file mode 100644 index 000000000..7c2832dcc Binary files /dev/null and b/fonts/MiniwiFontOutline/1E82.png differ diff --git a/fonts/MiniwiFontOutline/1E83.png b/fonts/MiniwiFontOutline/1E83.png new file mode 100644 index 000000000..9c667cc20 Binary files /dev/null and b/fonts/MiniwiFontOutline/1E83.png differ diff --git a/fonts/MiniwiFontOutline/1E84.png b/fonts/MiniwiFontOutline/1E84.png new file mode 100644 index 000000000..3b88932ea Binary files /dev/null and b/fonts/MiniwiFontOutline/1E84.png differ diff --git a/fonts/MiniwiFontOutline/1E85.png b/fonts/MiniwiFontOutline/1E85.png new file mode 100644 index 000000000..3b88932ea Binary files /dev/null and b/fonts/MiniwiFontOutline/1E85.png differ diff --git a/fonts/MiniwiFontOutline/1EF2.png b/fonts/MiniwiFontOutline/1EF2.png new file mode 100644 index 000000000..03f1ee942 Binary files /dev/null and b/fonts/MiniwiFontOutline/1EF2.png differ diff --git a/fonts/MiniwiFontOutline/1EF3.png b/fonts/MiniwiFontOutline/1EF3.png new file mode 100644 index 000000000..a38a56926 Binary files /dev/null and b/fonts/MiniwiFontOutline/1EF3.png differ diff --git a/fonts/MiniwiFontOutline/2013.png b/fonts/MiniwiFontOutline/2013.png new file mode 100644 index 000000000..f564c3400 Binary files /dev/null and b/fonts/MiniwiFontOutline/2013.png differ diff --git a/fonts/MiniwiFontOutline/2014.png b/fonts/MiniwiFontOutline/2014.png new file mode 100644 index 000000000..6cf04b4c6 Binary files /dev/null and b/fonts/MiniwiFontOutline/2014.png differ diff --git a/fonts/MiniwiFontOutline/2015.png b/fonts/MiniwiFontOutline/2015.png new file mode 100644 index 000000000..6cf04b4c6 Binary files /dev/null and b/fonts/MiniwiFontOutline/2015.png differ diff --git a/fonts/MiniwiFontOutline/2017.png b/fonts/MiniwiFontOutline/2017.png new file mode 100644 index 000000000..ba339c801 Binary files /dev/null and b/fonts/MiniwiFontOutline/2017.png differ diff --git a/fonts/MiniwiFontOutline/2018.png b/fonts/MiniwiFontOutline/2018.png new file mode 100644 index 000000000..62332b0ed Binary files /dev/null and b/fonts/MiniwiFontOutline/2018.png differ diff --git a/fonts/MiniwiFontOutline/2019.png b/fonts/MiniwiFontOutline/2019.png new file mode 100644 index 000000000..4230a4e02 Binary files /dev/null and b/fonts/MiniwiFontOutline/2019.png differ diff --git a/fonts/MiniwiFontOutline/201A.png b/fonts/MiniwiFontOutline/201A.png new file mode 100644 index 000000000..b06035fc4 Binary files /dev/null and b/fonts/MiniwiFontOutline/201A.png differ diff --git a/fonts/MiniwiFontOutline/201C.png b/fonts/MiniwiFontOutline/201C.png new file mode 100644 index 000000000..4adc719bc Binary files /dev/null and b/fonts/MiniwiFontOutline/201C.png differ diff --git a/fonts/MiniwiFontOutline/201D.png b/fonts/MiniwiFontOutline/201D.png new file mode 100644 index 000000000..1ac785cc3 Binary files /dev/null and b/fonts/MiniwiFontOutline/201D.png differ diff --git a/fonts/MiniwiFontOutline/201E.png b/fonts/MiniwiFontOutline/201E.png new file mode 100644 index 000000000..348b21464 Binary files /dev/null and b/fonts/MiniwiFontOutline/201E.png differ diff --git a/fonts/MiniwiFontOutline/2020.png b/fonts/MiniwiFontOutline/2020.png new file mode 100644 index 000000000..f36ba80da Binary files /dev/null and b/fonts/MiniwiFontOutline/2020.png differ diff --git a/fonts/MiniwiFontOutline/2021.png b/fonts/MiniwiFontOutline/2021.png new file mode 100644 index 000000000..2bfb1f438 Binary files /dev/null and b/fonts/MiniwiFontOutline/2021.png differ diff --git a/fonts/MiniwiFontOutline/2022.png b/fonts/MiniwiFontOutline/2022.png new file mode 100644 index 000000000..256472f7f Binary files /dev/null and b/fonts/MiniwiFontOutline/2022.png differ diff --git a/fonts/MiniwiFontOutline/2026.png b/fonts/MiniwiFontOutline/2026.png new file mode 100644 index 000000000..9f42c2c9a Binary files /dev/null and b/fonts/MiniwiFontOutline/2026.png differ diff --git a/fonts/MiniwiFontOutline/2030.png b/fonts/MiniwiFontOutline/2030.png new file mode 100644 index 000000000..940ec194d Binary files /dev/null and b/fonts/MiniwiFontOutline/2030.png differ diff --git a/fonts/MiniwiFontOutline/2032.png b/fonts/MiniwiFontOutline/2032.png new file mode 100644 index 000000000..9906c90da Binary files /dev/null and b/fonts/MiniwiFontOutline/2032.png differ diff --git a/fonts/MiniwiFontOutline/2033.png b/fonts/MiniwiFontOutline/2033.png new file mode 100644 index 000000000..9b3f6861e Binary files /dev/null and b/fonts/MiniwiFontOutline/2033.png differ diff --git a/fonts/MiniwiFontOutline/2039.png b/fonts/MiniwiFontOutline/2039.png new file mode 100644 index 000000000..cf5dda645 Binary files /dev/null and b/fonts/MiniwiFontOutline/2039.png differ diff --git a/fonts/MiniwiFontOutline/203A.png b/fonts/MiniwiFontOutline/203A.png new file mode 100644 index 000000000..361323c0d Binary files /dev/null and b/fonts/MiniwiFontOutline/203A.png differ diff --git a/fonts/MiniwiFontOutline/2044.png b/fonts/MiniwiFontOutline/2044.png new file mode 100644 index 000000000..c52853ab5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2044.png differ diff --git a/fonts/MiniwiFontOutline/20AC.png b/fonts/MiniwiFontOutline/20AC.png new file mode 100644 index 000000000..71426f735 Binary files /dev/null and b/fonts/MiniwiFontOutline/20AC.png differ diff --git a/fonts/MiniwiFontOutline/20AF.png b/fonts/MiniwiFontOutline/20AF.png new file mode 100644 index 000000000..44740613e Binary files /dev/null and b/fonts/MiniwiFontOutline/20AF.png differ diff --git a/fonts/MiniwiFontOutline/2111.png b/fonts/MiniwiFontOutline/2111.png new file mode 100644 index 000000000..3f3a92836 Binary files /dev/null and b/fonts/MiniwiFontOutline/2111.png differ diff --git a/fonts/MiniwiFontOutline/2116.png b/fonts/MiniwiFontOutline/2116.png new file mode 100644 index 000000000..b5809aa08 Binary files /dev/null and b/fonts/MiniwiFontOutline/2116.png differ diff --git a/fonts/MiniwiFontOutline/2118.png b/fonts/MiniwiFontOutline/2118.png new file mode 100644 index 000000000..1ba5988b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2118.png differ diff --git a/fonts/MiniwiFontOutline/211C.png b/fonts/MiniwiFontOutline/211C.png new file mode 100644 index 000000000..e4d28efd2 Binary files /dev/null and b/fonts/MiniwiFontOutline/211C.png differ diff --git a/fonts/MiniwiFontOutline/2122.png b/fonts/MiniwiFontOutline/2122.png new file mode 100644 index 000000000..710f4901b Binary files /dev/null and b/fonts/MiniwiFontOutline/2122.png differ diff --git a/fonts/MiniwiFontOutline/2126.png b/fonts/MiniwiFontOutline/2126.png new file mode 100644 index 000000000..40dacc8cd Binary files /dev/null and b/fonts/MiniwiFontOutline/2126.png differ diff --git a/fonts/MiniwiFontOutline/2135.png b/fonts/MiniwiFontOutline/2135.png new file mode 100644 index 000000000..c33562393 Binary files /dev/null and b/fonts/MiniwiFontOutline/2135.png differ diff --git a/fonts/MiniwiFontOutline/2190.png b/fonts/MiniwiFontOutline/2190.png new file mode 100644 index 000000000..be6913ec9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2190.png differ diff --git a/fonts/MiniwiFontOutline/2191.png b/fonts/MiniwiFontOutline/2191.png new file mode 100644 index 000000000..b81cd121e Binary files /dev/null and b/fonts/MiniwiFontOutline/2191.png differ diff --git a/fonts/MiniwiFontOutline/2192.png b/fonts/MiniwiFontOutline/2192.png new file mode 100644 index 000000000..f29c23b82 Binary files /dev/null and b/fonts/MiniwiFontOutline/2192.png differ diff --git a/fonts/MiniwiFontOutline/2193.png b/fonts/MiniwiFontOutline/2193.png new file mode 100644 index 000000000..5a3f99a40 Binary files /dev/null and b/fonts/MiniwiFontOutline/2193.png differ diff --git a/fonts/MiniwiFontOutline/2194.png b/fonts/MiniwiFontOutline/2194.png new file mode 100644 index 000000000..2ce9a391d Binary files /dev/null and b/fonts/MiniwiFontOutline/2194.png differ diff --git a/fonts/MiniwiFontOutline/21B5.png b/fonts/MiniwiFontOutline/21B5.png new file mode 100644 index 000000000..f1a34917d Binary files /dev/null and b/fonts/MiniwiFontOutline/21B5.png differ diff --git a/fonts/MiniwiFontOutline/21D0.png b/fonts/MiniwiFontOutline/21D0.png new file mode 100644 index 000000000..abb92c78f Binary files /dev/null and b/fonts/MiniwiFontOutline/21D0.png differ diff --git a/fonts/MiniwiFontOutline/21D1.png b/fonts/MiniwiFontOutline/21D1.png new file mode 100644 index 000000000..76d9450f1 Binary files /dev/null and b/fonts/MiniwiFontOutline/21D1.png differ diff --git a/fonts/MiniwiFontOutline/21D2.png b/fonts/MiniwiFontOutline/21D2.png new file mode 100644 index 000000000..4a6e41303 Binary files /dev/null and b/fonts/MiniwiFontOutline/21D2.png differ diff --git a/fonts/MiniwiFontOutline/21D3.png b/fonts/MiniwiFontOutline/21D3.png new file mode 100644 index 000000000..a81d2baba Binary files /dev/null and b/fonts/MiniwiFontOutline/21D3.png differ diff --git a/fonts/MiniwiFontOutline/21D4.png b/fonts/MiniwiFontOutline/21D4.png new file mode 100644 index 000000000..408292455 Binary files /dev/null and b/fonts/MiniwiFontOutline/21D4.png differ diff --git a/fonts/MiniwiFontOutline/2200.png b/fonts/MiniwiFontOutline/2200.png new file mode 100644 index 000000000..562d05ecc Binary files /dev/null and b/fonts/MiniwiFontOutline/2200.png differ diff --git a/fonts/MiniwiFontOutline/2201.png b/fonts/MiniwiFontOutline/2201.png new file mode 100644 index 000000000..116cd69a4 Binary files /dev/null and b/fonts/MiniwiFontOutline/2201.png differ diff --git a/fonts/MiniwiFontOutline/2202.png b/fonts/MiniwiFontOutline/2202.png new file mode 100644 index 000000000..ca9e1518a Binary files /dev/null and b/fonts/MiniwiFontOutline/2202.png differ diff --git a/fonts/MiniwiFontOutline/2203.png b/fonts/MiniwiFontOutline/2203.png new file mode 100644 index 000000000..a3017d48f Binary files /dev/null and b/fonts/MiniwiFontOutline/2203.png differ diff --git a/fonts/MiniwiFontOutline/2204.png b/fonts/MiniwiFontOutline/2204.png new file mode 100644 index 000000000..7124c01e3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2204.png differ diff --git a/fonts/MiniwiFontOutline/2205.png b/fonts/MiniwiFontOutline/2205.png new file mode 100644 index 000000000..e380e46c4 Binary files /dev/null and b/fonts/MiniwiFontOutline/2205.png differ diff --git a/fonts/MiniwiFontOutline/2206.png b/fonts/MiniwiFontOutline/2206.png new file mode 100644 index 000000000..166356040 Binary files /dev/null and b/fonts/MiniwiFontOutline/2206.png differ diff --git a/fonts/MiniwiFontOutline/2207.png b/fonts/MiniwiFontOutline/2207.png new file mode 100644 index 000000000..b1e382462 Binary files /dev/null and b/fonts/MiniwiFontOutline/2207.png differ diff --git a/fonts/MiniwiFontOutline/2208.png b/fonts/MiniwiFontOutline/2208.png new file mode 100644 index 000000000..18a82bd78 Binary files /dev/null and b/fonts/MiniwiFontOutline/2208.png differ diff --git a/fonts/MiniwiFontOutline/2209.png b/fonts/MiniwiFontOutline/2209.png new file mode 100644 index 000000000..089d550d1 Binary files /dev/null and b/fonts/MiniwiFontOutline/2209.png differ diff --git a/fonts/MiniwiFontOutline/220A.png b/fonts/MiniwiFontOutline/220A.png new file mode 100644 index 000000000..7173b6852 Binary files /dev/null and b/fonts/MiniwiFontOutline/220A.png differ diff --git a/fonts/MiniwiFontOutline/220B.png b/fonts/MiniwiFontOutline/220B.png new file mode 100644 index 000000000..75b397a75 Binary files /dev/null and b/fonts/MiniwiFontOutline/220B.png differ diff --git a/fonts/MiniwiFontOutline/220C.png b/fonts/MiniwiFontOutline/220C.png new file mode 100644 index 000000000..689437f6b Binary files /dev/null and b/fonts/MiniwiFontOutline/220C.png differ diff --git a/fonts/MiniwiFontOutline/220D.png b/fonts/MiniwiFontOutline/220D.png new file mode 100644 index 000000000..ff376b1a5 Binary files /dev/null and b/fonts/MiniwiFontOutline/220D.png differ diff --git a/fonts/MiniwiFontOutline/220E.png b/fonts/MiniwiFontOutline/220E.png new file mode 100644 index 000000000..1ef647834 Binary files /dev/null and b/fonts/MiniwiFontOutline/220E.png differ diff --git a/fonts/MiniwiFontOutline/220F.png b/fonts/MiniwiFontOutline/220F.png new file mode 100644 index 000000000..18e08e287 Binary files /dev/null and b/fonts/MiniwiFontOutline/220F.png differ diff --git a/fonts/MiniwiFontOutline/2210.png b/fonts/MiniwiFontOutline/2210.png new file mode 100644 index 000000000..228c6b3a6 Binary files /dev/null and b/fonts/MiniwiFontOutline/2210.png differ diff --git a/fonts/MiniwiFontOutline/2211.png b/fonts/MiniwiFontOutline/2211.png new file mode 100644 index 000000000..9b502a038 Binary files /dev/null and b/fonts/MiniwiFontOutline/2211.png differ diff --git a/fonts/MiniwiFontOutline/2212.png b/fonts/MiniwiFontOutline/2212.png new file mode 100644 index 000000000..b5590d777 Binary files /dev/null and b/fonts/MiniwiFontOutline/2212.png differ diff --git a/fonts/MiniwiFontOutline/2213.png b/fonts/MiniwiFontOutline/2213.png new file mode 100644 index 000000000..f8b9ffb41 Binary files /dev/null and b/fonts/MiniwiFontOutline/2213.png differ diff --git a/fonts/MiniwiFontOutline/2214.png b/fonts/MiniwiFontOutline/2214.png new file mode 100644 index 000000000..4407da0b2 Binary files /dev/null and b/fonts/MiniwiFontOutline/2214.png differ diff --git a/fonts/MiniwiFontOutline/2215.png b/fonts/MiniwiFontOutline/2215.png new file mode 100644 index 000000000..2969780e1 Binary files /dev/null and b/fonts/MiniwiFontOutline/2215.png differ diff --git a/fonts/MiniwiFontOutline/2216.png b/fonts/MiniwiFontOutline/2216.png new file mode 100644 index 000000000..7446495bd Binary files /dev/null and b/fonts/MiniwiFontOutline/2216.png differ diff --git a/fonts/MiniwiFontOutline/2217.png b/fonts/MiniwiFontOutline/2217.png new file mode 100644 index 000000000..bea1ae391 Binary files /dev/null and b/fonts/MiniwiFontOutline/2217.png differ diff --git a/fonts/MiniwiFontOutline/2218.png b/fonts/MiniwiFontOutline/2218.png new file mode 100644 index 000000000..14e9fa2e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/2218.png differ diff --git a/fonts/MiniwiFontOutline/2219.png b/fonts/MiniwiFontOutline/2219.png new file mode 100644 index 000000000..256472f7f Binary files /dev/null and b/fonts/MiniwiFontOutline/2219.png differ diff --git a/fonts/MiniwiFontOutline/221A.png b/fonts/MiniwiFontOutline/221A.png new file mode 100644 index 000000000..26248e444 Binary files /dev/null and b/fonts/MiniwiFontOutline/221A.png differ diff --git a/fonts/MiniwiFontOutline/221B.png b/fonts/MiniwiFontOutline/221B.png new file mode 100644 index 000000000..6602fa833 Binary files /dev/null and b/fonts/MiniwiFontOutline/221B.png differ diff --git a/fonts/MiniwiFontOutline/221C.png b/fonts/MiniwiFontOutline/221C.png new file mode 100644 index 000000000..00a1626f4 Binary files /dev/null and b/fonts/MiniwiFontOutline/221C.png differ diff --git a/fonts/MiniwiFontOutline/221D.png b/fonts/MiniwiFontOutline/221D.png new file mode 100644 index 000000000..12266b309 Binary files /dev/null and b/fonts/MiniwiFontOutline/221D.png differ diff --git a/fonts/MiniwiFontOutline/221E.png b/fonts/MiniwiFontOutline/221E.png new file mode 100644 index 000000000..d74b6c795 Binary files /dev/null and b/fonts/MiniwiFontOutline/221E.png differ diff --git a/fonts/MiniwiFontOutline/221F.png b/fonts/MiniwiFontOutline/221F.png new file mode 100644 index 000000000..fea54c3ea Binary files /dev/null and b/fonts/MiniwiFontOutline/221F.png differ diff --git a/fonts/MiniwiFontOutline/2220.png b/fonts/MiniwiFontOutline/2220.png new file mode 100644 index 000000000..7b9e192e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/2220.png differ diff --git a/fonts/MiniwiFontOutline/2221.png b/fonts/MiniwiFontOutline/2221.png new file mode 100644 index 000000000..e606d7b55 Binary files /dev/null and b/fonts/MiniwiFontOutline/2221.png differ diff --git a/fonts/MiniwiFontOutline/2222.png b/fonts/MiniwiFontOutline/2222.png new file mode 100644 index 000000000..abfb41a90 Binary files /dev/null and b/fonts/MiniwiFontOutline/2222.png differ diff --git a/fonts/MiniwiFontOutline/2223.png b/fonts/MiniwiFontOutline/2223.png new file mode 100644 index 000000000..d61d5e1df Binary files /dev/null and b/fonts/MiniwiFontOutline/2223.png differ diff --git a/fonts/MiniwiFontOutline/2224.png b/fonts/MiniwiFontOutline/2224.png new file mode 100644 index 000000000..d61d5e1df Binary files /dev/null and b/fonts/MiniwiFontOutline/2224.png differ diff --git a/fonts/MiniwiFontOutline/2225.png b/fonts/MiniwiFontOutline/2225.png new file mode 100644 index 000000000..862dd2a74 Binary files /dev/null and b/fonts/MiniwiFontOutline/2225.png differ diff --git a/fonts/MiniwiFontOutline/2226.png b/fonts/MiniwiFontOutline/2226.png new file mode 100644 index 000000000..6c29d0a94 Binary files /dev/null and b/fonts/MiniwiFontOutline/2226.png differ diff --git a/fonts/MiniwiFontOutline/2227.png b/fonts/MiniwiFontOutline/2227.png new file mode 100644 index 000000000..1f1a6fde3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2227.png differ diff --git a/fonts/MiniwiFontOutline/2228.png b/fonts/MiniwiFontOutline/2228.png new file mode 100644 index 000000000..eef4e6298 Binary files /dev/null and b/fonts/MiniwiFontOutline/2228.png differ diff --git a/fonts/MiniwiFontOutline/2229.png b/fonts/MiniwiFontOutline/2229.png new file mode 100644 index 000000000..a195d3b46 Binary files /dev/null and b/fonts/MiniwiFontOutline/2229.png differ diff --git a/fonts/MiniwiFontOutline/222A.png b/fonts/MiniwiFontOutline/222A.png new file mode 100644 index 000000000..136390761 Binary files /dev/null and b/fonts/MiniwiFontOutline/222A.png differ diff --git a/fonts/MiniwiFontOutline/222B.png b/fonts/MiniwiFontOutline/222B.png new file mode 100644 index 000000000..0c2e1ff72 Binary files /dev/null and b/fonts/MiniwiFontOutline/222B.png differ diff --git a/fonts/MiniwiFontOutline/222C.png b/fonts/MiniwiFontOutline/222C.png new file mode 100644 index 000000000..d8b79020c Binary files /dev/null and b/fonts/MiniwiFontOutline/222C.png differ diff --git a/fonts/MiniwiFontOutline/222D.png b/fonts/MiniwiFontOutline/222D.png new file mode 100644 index 000000000..20cf85091 Binary files /dev/null and b/fonts/MiniwiFontOutline/222D.png differ diff --git a/fonts/MiniwiFontOutline/222E.png b/fonts/MiniwiFontOutline/222E.png new file mode 100644 index 000000000..cff4f897d Binary files /dev/null and b/fonts/MiniwiFontOutline/222E.png differ diff --git a/fonts/MiniwiFontOutline/222F.png b/fonts/MiniwiFontOutline/222F.png new file mode 100644 index 000000000..072cd8ad6 Binary files /dev/null and b/fonts/MiniwiFontOutline/222F.png differ diff --git a/fonts/MiniwiFontOutline/2230.png b/fonts/MiniwiFontOutline/2230.png new file mode 100644 index 000000000..fe232d3ab Binary files /dev/null and b/fonts/MiniwiFontOutline/2230.png differ diff --git a/fonts/MiniwiFontOutline/2231.png b/fonts/MiniwiFontOutline/2231.png new file mode 100644 index 000000000..92fc808a1 Binary files /dev/null and b/fonts/MiniwiFontOutline/2231.png differ diff --git a/fonts/MiniwiFontOutline/2232.png b/fonts/MiniwiFontOutline/2232.png new file mode 100644 index 000000000..253883357 Binary files /dev/null and b/fonts/MiniwiFontOutline/2232.png differ diff --git a/fonts/MiniwiFontOutline/2233.png b/fonts/MiniwiFontOutline/2233.png new file mode 100644 index 000000000..b689691b5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2233.png differ diff --git a/fonts/MiniwiFontOutline/2234.png b/fonts/MiniwiFontOutline/2234.png new file mode 100644 index 000000000..5d160205e Binary files /dev/null and b/fonts/MiniwiFontOutline/2234.png differ diff --git a/fonts/MiniwiFontOutline/2235.png b/fonts/MiniwiFontOutline/2235.png new file mode 100644 index 000000000..f60ec3a4c Binary files /dev/null and b/fonts/MiniwiFontOutline/2235.png differ diff --git a/fonts/MiniwiFontOutline/2236.png b/fonts/MiniwiFontOutline/2236.png new file mode 100644 index 000000000..f33b89720 Binary files /dev/null and b/fonts/MiniwiFontOutline/2236.png differ diff --git a/fonts/MiniwiFontOutline/2237.png b/fonts/MiniwiFontOutline/2237.png new file mode 100644 index 000000000..db15ad630 Binary files /dev/null and b/fonts/MiniwiFontOutline/2237.png differ diff --git a/fonts/MiniwiFontOutline/2238.png b/fonts/MiniwiFontOutline/2238.png new file mode 100644 index 000000000..3b34a9fe3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2238.png differ diff --git a/fonts/MiniwiFontOutline/2239.png b/fonts/MiniwiFontOutline/2239.png new file mode 100644 index 000000000..adc565059 Binary files /dev/null and b/fonts/MiniwiFontOutline/2239.png differ diff --git a/fonts/MiniwiFontOutline/223A.png b/fonts/MiniwiFontOutline/223A.png new file mode 100644 index 000000000..c0691875d Binary files /dev/null and b/fonts/MiniwiFontOutline/223A.png differ diff --git a/fonts/MiniwiFontOutline/223B.png b/fonts/MiniwiFontOutline/223B.png new file mode 100644 index 000000000..ff8b5668f Binary files /dev/null and b/fonts/MiniwiFontOutline/223B.png differ diff --git a/fonts/MiniwiFontOutline/223C.png b/fonts/MiniwiFontOutline/223C.png new file mode 100644 index 000000000..7ec007ee9 Binary files /dev/null and b/fonts/MiniwiFontOutline/223C.png differ diff --git a/fonts/MiniwiFontOutline/223D.png b/fonts/MiniwiFontOutline/223D.png new file mode 100644 index 000000000..78228253b Binary files /dev/null and b/fonts/MiniwiFontOutline/223D.png differ diff --git a/fonts/MiniwiFontOutline/223E.png b/fonts/MiniwiFontOutline/223E.png new file mode 100644 index 000000000..d5fd096fb Binary files /dev/null and b/fonts/MiniwiFontOutline/223E.png differ diff --git a/fonts/MiniwiFontOutline/223F.png b/fonts/MiniwiFontOutline/223F.png new file mode 100644 index 000000000..b3b211424 Binary files /dev/null and b/fonts/MiniwiFontOutline/223F.png differ diff --git a/fonts/MiniwiFontOutline/2240.png b/fonts/MiniwiFontOutline/2240.png new file mode 100644 index 000000000..50dbbd783 Binary files /dev/null and b/fonts/MiniwiFontOutline/2240.png differ diff --git a/fonts/MiniwiFontOutline/2241.png b/fonts/MiniwiFontOutline/2241.png new file mode 100644 index 000000000..4b0dea191 Binary files /dev/null and b/fonts/MiniwiFontOutline/2241.png differ diff --git a/fonts/MiniwiFontOutline/2242.png b/fonts/MiniwiFontOutline/2242.png new file mode 100644 index 000000000..7e028c247 Binary files /dev/null and b/fonts/MiniwiFontOutline/2242.png differ diff --git a/fonts/MiniwiFontOutline/2243.png b/fonts/MiniwiFontOutline/2243.png new file mode 100644 index 000000000..65fbb95b2 Binary files /dev/null and b/fonts/MiniwiFontOutline/2243.png differ diff --git a/fonts/MiniwiFontOutline/2244.png b/fonts/MiniwiFontOutline/2244.png new file mode 100644 index 000000000..daa5d3f29 Binary files /dev/null and b/fonts/MiniwiFontOutline/2244.png differ diff --git a/fonts/MiniwiFontOutline/2245.png b/fonts/MiniwiFontOutline/2245.png new file mode 100644 index 000000000..f6208441e Binary files /dev/null and b/fonts/MiniwiFontOutline/2245.png differ diff --git a/fonts/MiniwiFontOutline/2246.png b/fonts/MiniwiFontOutline/2246.png new file mode 100644 index 000000000..cda44b9be Binary files /dev/null and b/fonts/MiniwiFontOutline/2246.png differ diff --git a/fonts/MiniwiFontOutline/2247.png b/fonts/MiniwiFontOutline/2247.png new file mode 100644 index 000000000..7bf6073bf Binary files /dev/null and b/fonts/MiniwiFontOutline/2247.png differ diff --git a/fonts/MiniwiFontOutline/2248.png b/fonts/MiniwiFontOutline/2248.png new file mode 100644 index 000000000..47cb1f344 Binary files /dev/null and b/fonts/MiniwiFontOutline/2248.png differ diff --git a/fonts/MiniwiFontOutline/2249.png b/fonts/MiniwiFontOutline/2249.png new file mode 100644 index 000000000..80155eff4 Binary files /dev/null and b/fonts/MiniwiFontOutline/2249.png differ diff --git a/fonts/MiniwiFontOutline/224A.png b/fonts/MiniwiFontOutline/224A.png new file mode 100644 index 000000000..54dc4ba86 Binary files /dev/null and b/fonts/MiniwiFontOutline/224A.png differ diff --git a/fonts/MiniwiFontOutline/224B.png b/fonts/MiniwiFontOutline/224B.png new file mode 100644 index 000000000..bd56adeb8 Binary files /dev/null and b/fonts/MiniwiFontOutline/224B.png differ diff --git a/fonts/MiniwiFontOutline/224C.png b/fonts/MiniwiFontOutline/224C.png new file mode 100644 index 000000000..f6208441e Binary files /dev/null and b/fonts/MiniwiFontOutline/224C.png differ diff --git a/fonts/MiniwiFontOutline/224D.png b/fonts/MiniwiFontOutline/224D.png new file mode 100644 index 000000000..796e391cf Binary files /dev/null and b/fonts/MiniwiFontOutline/224D.png differ diff --git a/fonts/MiniwiFontOutline/224E.png b/fonts/MiniwiFontOutline/224E.png new file mode 100644 index 000000000..d1a0dc58b Binary files /dev/null and b/fonts/MiniwiFontOutline/224E.png differ diff --git a/fonts/MiniwiFontOutline/224F.png b/fonts/MiniwiFontOutline/224F.png new file mode 100644 index 000000000..7610411f1 Binary files /dev/null and b/fonts/MiniwiFontOutline/224F.png differ diff --git a/fonts/MiniwiFontOutline/2250.png b/fonts/MiniwiFontOutline/2250.png new file mode 100644 index 000000000..dbed5398f Binary files /dev/null and b/fonts/MiniwiFontOutline/2250.png differ diff --git a/fonts/MiniwiFontOutline/2251.png b/fonts/MiniwiFontOutline/2251.png new file mode 100644 index 000000000..48c92140f Binary files /dev/null and b/fonts/MiniwiFontOutline/2251.png differ diff --git a/fonts/MiniwiFontOutline/2252.png b/fonts/MiniwiFontOutline/2252.png new file mode 100644 index 000000000..2b5fb979e Binary files /dev/null and b/fonts/MiniwiFontOutline/2252.png differ diff --git a/fonts/MiniwiFontOutline/2253.png b/fonts/MiniwiFontOutline/2253.png new file mode 100644 index 000000000..7af0acec7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2253.png differ diff --git a/fonts/MiniwiFontOutline/2254.png b/fonts/MiniwiFontOutline/2254.png new file mode 100644 index 000000000..643152b3e Binary files /dev/null and b/fonts/MiniwiFontOutline/2254.png differ diff --git a/fonts/MiniwiFontOutline/2255.png b/fonts/MiniwiFontOutline/2255.png new file mode 100644 index 000000000..51a7e0086 Binary files /dev/null and b/fonts/MiniwiFontOutline/2255.png differ diff --git a/fonts/MiniwiFontOutline/2256.png b/fonts/MiniwiFontOutline/2256.png new file mode 100644 index 000000000..eabc7b29b Binary files /dev/null and b/fonts/MiniwiFontOutline/2256.png differ diff --git a/fonts/MiniwiFontOutline/2257.png b/fonts/MiniwiFontOutline/2257.png new file mode 100644 index 000000000..4c50c7801 Binary files /dev/null and b/fonts/MiniwiFontOutline/2257.png differ diff --git a/fonts/MiniwiFontOutline/2258.png b/fonts/MiniwiFontOutline/2258.png new file mode 100644 index 000000000..bb7f38fab Binary files /dev/null and b/fonts/MiniwiFontOutline/2258.png differ diff --git a/fonts/MiniwiFontOutline/2259.png b/fonts/MiniwiFontOutline/2259.png new file mode 100644 index 000000000..4972881ba Binary files /dev/null and b/fonts/MiniwiFontOutline/2259.png differ diff --git a/fonts/MiniwiFontOutline/225A.png b/fonts/MiniwiFontOutline/225A.png new file mode 100644 index 000000000..01d43a183 Binary files /dev/null and b/fonts/MiniwiFontOutline/225A.png differ diff --git a/fonts/MiniwiFontOutline/225B.png b/fonts/MiniwiFontOutline/225B.png new file mode 100644 index 000000000..3c0e475fd Binary files /dev/null and b/fonts/MiniwiFontOutline/225B.png differ diff --git a/fonts/MiniwiFontOutline/225C.png b/fonts/MiniwiFontOutline/225C.png new file mode 100644 index 000000000..71f4157c2 Binary files /dev/null and b/fonts/MiniwiFontOutline/225C.png differ diff --git a/fonts/MiniwiFontOutline/225D.png b/fonts/MiniwiFontOutline/225D.png new file mode 100644 index 000000000..614293142 Binary files /dev/null and b/fonts/MiniwiFontOutline/225D.png differ diff --git a/fonts/MiniwiFontOutline/225E.png b/fonts/MiniwiFontOutline/225E.png new file mode 100644 index 000000000..2bd2505ae Binary files /dev/null and b/fonts/MiniwiFontOutline/225E.png differ diff --git a/fonts/MiniwiFontOutline/225F.png b/fonts/MiniwiFontOutline/225F.png new file mode 100644 index 000000000..afbbd7a06 Binary files /dev/null and b/fonts/MiniwiFontOutline/225F.png differ diff --git a/fonts/MiniwiFontOutline/2260.png b/fonts/MiniwiFontOutline/2260.png new file mode 100644 index 000000000..fe6f442d0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2260.png differ diff --git a/fonts/MiniwiFontOutline/2261.png b/fonts/MiniwiFontOutline/2261.png new file mode 100644 index 000000000..9e4fbbb2e Binary files /dev/null and b/fonts/MiniwiFontOutline/2261.png differ diff --git a/fonts/MiniwiFontOutline/2262.png b/fonts/MiniwiFontOutline/2262.png new file mode 100644 index 000000000..a505ce2f2 Binary files /dev/null and b/fonts/MiniwiFontOutline/2262.png differ diff --git a/fonts/MiniwiFontOutline/2263.png b/fonts/MiniwiFontOutline/2263.png new file mode 100644 index 000000000..7d3e9de86 Binary files /dev/null and b/fonts/MiniwiFontOutline/2263.png differ diff --git a/fonts/MiniwiFontOutline/2264.png b/fonts/MiniwiFontOutline/2264.png new file mode 100644 index 000000000..e914c4809 Binary files /dev/null and b/fonts/MiniwiFontOutline/2264.png differ diff --git a/fonts/MiniwiFontOutline/2265.png b/fonts/MiniwiFontOutline/2265.png new file mode 100644 index 000000000..8e653e0e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2265.png differ diff --git a/fonts/MiniwiFontOutline/2266.png b/fonts/MiniwiFontOutline/2266.png new file mode 100644 index 000000000..8a7f1e2f9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2266.png differ diff --git a/fonts/MiniwiFontOutline/2267.png b/fonts/MiniwiFontOutline/2267.png new file mode 100644 index 000000000..dcaa677c3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2267.png differ diff --git a/fonts/MiniwiFontOutline/2268.png b/fonts/MiniwiFontOutline/2268.png new file mode 100644 index 000000000..66dbc8a39 Binary files /dev/null and b/fonts/MiniwiFontOutline/2268.png differ diff --git a/fonts/MiniwiFontOutline/2269.png b/fonts/MiniwiFontOutline/2269.png new file mode 100644 index 000000000..c4f70e3d3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2269.png differ diff --git a/fonts/MiniwiFontOutline/226A.png b/fonts/MiniwiFontOutline/226A.png new file mode 100644 index 000000000..a28ae4d74 Binary files /dev/null and b/fonts/MiniwiFontOutline/226A.png differ diff --git a/fonts/MiniwiFontOutline/226B.png b/fonts/MiniwiFontOutline/226B.png new file mode 100644 index 000000000..e6afc30d5 Binary files /dev/null and b/fonts/MiniwiFontOutline/226B.png differ diff --git a/fonts/MiniwiFontOutline/2282.png b/fonts/MiniwiFontOutline/2282.png new file mode 100644 index 000000000..b567b9563 Binary files /dev/null and b/fonts/MiniwiFontOutline/2282.png differ diff --git a/fonts/MiniwiFontOutline/2283.png b/fonts/MiniwiFontOutline/2283.png new file mode 100644 index 000000000..7cc872968 Binary files /dev/null and b/fonts/MiniwiFontOutline/2283.png differ diff --git a/fonts/MiniwiFontOutline/2284.png b/fonts/MiniwiFontOutline/2284.png new file mode 100644 index 000000000..aa0134716 Binary files /dev/null and b/fonts/MiniwiFontOutline/2284.png differ diff --git a/fonts/MiniwiFontOutline/2286.png b/fonts/MiniwiFontOutline/2286.png new file mode 100644 index 000000000..e6beed588 Binary files /dev/null and b/fonts/MiniwiFontOutline/2286.png differ diff --git a/fonts/MiniwiFontOutline/2287.png b/fonts/MiniwiFontOutline/2287.png new file mode 100644 index 000000000..3ac8c6eb3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2287.png differ diff --git a/fonts/MiniwiFontOutline/2295.png b/fonts/MiniwiFontOutline/2295.png new file mode 100644 index 000000000..3d527b255 Binary files /dev/null and b/fonts/MiniwiFontOutline/2295.png differ diff --git a/fonts/MiniwiFontOutline/2297.png b/fonts/MiniwiFontOutline/2297.png new file mode 100644 index 000000000..e4ca26a9c Binary files /dev/null and b/fonts/MiniwiFontOutline/2297.png differ diff --git a/fonts/MiniwiFontOutline/22A5.png b/fonts/MiniwiFontOutline/22A5.png new file mode 100644 index 000000000..cc367b3cf Binary files /dev/null and b/fonts/MiniwiFontOutline/22A5.png differ diff --git a/fonts/MiniwiFontOutline/22C4.png b/fonts/MiniwiFontOutline/22C4.png new file mode 100644 index 000000000..2cb3f56f5 Binary files /dev/null and b/fonts/MiniwiFontOutline/22C4.png differ diff --git a/fonts/MiniwiFontOutline/22C5.png b/fonts/MiniwiFontOutline/22C5.png new file mode 100644 index 000000000..5c2bc40a0 Binary files /dev/null and b/fonts/MiniwiFontOutline/22C5.png differ diff --git a/fonts/MiniwiFontOutline/2320.png b/fonts/MiniwiFontOutline/2320.png new file mode 100644 index 000000000..f7a44663c Binary files /dev/null and b/fonts/MiniwiFontOutline/2320.png differ diff --git a/fonts/MiniwiFontOutline/2321.png b/fonts/MiniwiFontOutline/2321.png new file mode 100644 index 000000000..128666a18 Binary files /dev/null and b/fonts/MiniwiFontOutline/2321.png differ diff --git a/fonts/MiniwiFontOutline/2329.png b/fonts/MiniwiFontOutline/2329.png new file mode 100644 index 000000000..4a6174849 Binary files /dev/null and b/fonts/MiniwiFontOutline/2329.png differ diff --git a/fonts/MiniwiFontOutline/232A.png b/fonts/MiniwiFontOutline/232A.png new file mode 100644 index 000000000..641961f12 Binary files /dev/null and b/fonts/MiniwiFontOutline/232A.png differ diff --git a/fonts/MiniwiFontOutline/2460.png b/fonts/MiniwiFontOutline/2460.png new file mode 100644 index 000000000..65d629fd4 Binary files /dev/null and b/fonts/MiniwiFontOutline/2460.png differ diff --git a/fonts/MiniwiFontOutline/2461.png b/fonts/MiniwiFontOutline/2461.png new file mode 100644 index 000000000..96948aeeb Binary files /dev/null and b/fonts/MiniwiFontOutline/2461.png differ diff --git a/fonts/MiniwiFontOutline/2462.png b/fonts/MiniwiFontOutline/2462.png new file mode 100644 index 000000000..012771c74 Binary files /dev/null and b/fonts/MiniwiFontOutline/2462.png differ diff --git a/fonts/MiniwiFontOutline/2463.png b/fonts/MiniwiFontOutline/2463.png new file mode 100644 index 000000000..4869f1429 Binary files /dev/null and b/fonts/MiniwiFontOutline/2463.png differ diff --git a/fonts/MiniwiFontOutline/2464.png b/fonts/MiniwiFontOutline/2464.png new file mode 100644 index 000000000..cfde2ea59 Binary files /dev/null and b/fonts/MiniwiFontOutline/2464.png differ diff --git a/fonts/MiniwiFontOutline/2465.png b/fonts/MiniwiFontOutline/2465.png new file mode 100644 index 000000000..ef509cb5c Binary files /dev/null and b/fonts/MiniwiFontOutline/2465.png differ diff --git a/fonts/MiniwiFontOutline/2466.png b/fonts/MiniwiFontOutline/2466.png new file mode 100644 index 000000000..9931877a5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2466.png differ diff --git a/fonts/MiniwiFontOutline/2467.png b/fonts/MiniwiFontOutline/2467.png new file mode 100644 index 000000000..8cd464608 Binary files /dev/null and b/fonts/MiniwiFontOutline/2467.png differ diff --git a/fonts/MiniwiFontOutline/2468.png b/fonts/MiniwiFontOutline/2468.png new file mode 100644 index 000000000..055722ba9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2468.png differ diff --git a/fonts/MiniwiFontOutline/2469.png b/fonts/MiniwiFontOutline/2469.png new file mode 100644 index 000000000..78298a87b Binary files /dev/null and b/fonts/MiniwiFontOutline/2469.png differ diff --git a/fonts/MiniwiFontOutline/246A.png b/fonts/MiniwiFontOutline/246A.png new file mode 100644 index 000000000..b7703eebf Binary files /dev/null and b/fonts/MiniwiFontOutline/246A.png differ diff --git a/fonts/MiniwiFontOutline/246B.png b/fonts/MiniwiFontOutline/246B.png new file mode 100644 index 000000000..265abb70f Binary files /dev/null and b/fonts/MiniwiFontOutline/246B.png differ diff --git a/fonts/MiniwiFontOutline/246C.png b/fonts/MiniwiFontOutline/246C.png new file mode 100644 index 000000000..23eb52c70 Binary files /dev/null and b/fonts/MiniwiFontOutline/246C.png differ diff --git a/fonts/MiniwiFontOutline/246D.png b/fonts/MiniwiFontOutline/246D.png new file mode 100644 index 000000000..311c2de78 Binary files /dev/null and b/fonts/MiniwiFontOutline/246D.png differ diff --git a/fonts/MiniwiFontOutline/246E.png b/fonts/MiniwiFontOutline/246E.png new file mode 100644 index 000000000..ca6071d50 Binary files /dev/null and b/fonts/MiniwiFontOutline/246E.png differ diff --git a/fonts/MiniwiFontOutline/246F.png b/fonts/MiniwiFontOutline/246F.png new file mode 100644 index 000000000..84073033c Binary files /dev/null and b/fonts/MiniwiFontOutline/246F.png differ diff --git a/fonts/MiniwiFontOutline/2470.png b/fonts/MiniwiFontOutline/2470.png new file mode 100644 index 000000000..216839b05 Binary files /dev/null and b/fonts/MiniwiFontOutline/2470.png differ diff --git a/fonts/MiniwiFontOutline/2471.png b/fonts/MiniwiFontOutline/2471.png new file mode 100644 index 000000000..b59875804 Binary files /dev/null and b/fonts/MiniwiFontOutline/2471.png differ diff --git a/fonts/MiniwiFontOutline/2472.png b/fonts/MiniwiFontOutline/2472.png new file mode 100644 index 000000000..f725edfe9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2472.png differ diff --git a/fonts/MiniwiFontOutline/2473.png b/fonts/MiniwiFontOutline/2473.png new file mode 100644 index 000000000..4480ad9c0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2473.png differ diff --git a/fonts/MiniwiFontOutline/2474.png b/fonts/MiniwiFontOutline/2474.png new file mode 100644 index 000000000..39b912672 Binary files /dev/null and b/fonts/MiniwiFontOutline/2474.png differ diff --git a/fonts/MiniwiFontOutline/2475.png b/fonts/MiniwiFontOutline/2475.png new file mode 100644 index 000000000..67f4b8bf1 Binary files /dev/null and b/fonts/MiniwiFontOutline/2475.png differ diff --git a/fonts/MiniwiFontOutline/2476.png b/fonts/MiniwiFontOutline/2476.png new file mode 100644 index 000000000..8339514eb Binary files /dev/null and b/fonts/MiniwiFontOutline/2476.png differ diff --git a/fonts/MiniwiFontOutline/2477.png b/fonts/MiniwiFontOutline/2477.png new file mode 100644 index 000000000..36511d832 Binary files /dev/null and b/fonts/MiniwiFontOutline/2477.png differ diff --git a/fonts/MiniwiFontOutline/2478.png b/fonts/MiniwiFontOutline/2478.png new file mode 100644 index 000000000..9aecb90e5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2478.png differ diff --git a/fonts/MiniwiFontOutline/2479.png b/fonts/MiniwiFontOutline/2479.png new file mode 100644 index 000000000..988421726 Binary files /dev/null and b/fonts/MiniwiFontOutline/2479.png differ diff --git a/fonts/MiniwiFontOutline/247A.png b/fonts/MiniwiFontOutline/247A.png new file mode 100644 index 000000000..d781f0d58 Binary files /dev/null and b/fonts/MiniwiFontOutline/247A.png differ diff --git a/fonts/MiniwiFontOutline/247B.png b/fonts/MiniwiFontOutline/247B.png new file mode 100644 index 000000000..5ba7e11bf Binary files /dev/null and b/fonts/MiniwiFontOutline/247B.png differ diff --git a/fonts/MiniwiFontOutline/247C.png b/fonts/MiniwiFontOutline/247C.png new file mode 100644 index 000000000..2ed2605f6 Binary files /dev/null and b/fonts/MiniwiFontOutline/247C.png differ diff --git a/fonts/MiniwiFontOutline/247D.png b/fonts/MiniwiFontOutline/247D.png new file mode 100644 index 000000000..cdcdacf2b Binary files /dev/null and b/fonts/MiniwiFontOutline/247D.png differ diff --git a/fonts/MiniwiFontOutline/247E.png b/fonts/MiniwiFontOutline/247E.png new file mode 100644 index 000000000..fe5cf2e4b Binary files /dev/null and b/fonts/MiniwiFontOutline/247E.png differ diff --git a/fonts/MiniwiFontOutline/247F.png b/fonts/MiniwiFontOutline/247F.png new file mode 100644 index 000000000..15e2bba87 Binary files /dev/null and b/fonts/MiniwiFontOutline/247F.png differ diff --git a/fonts/MiniwiFontOutline/2480.png b/fonts/MiniwiFontOutline/2480.png new file mode 100644 index 000000000..028512712 Binary files /dev/null and b/fonts/MiniwiFontOutline/2480.png differ diff --git a/fonts/MiniwiFontOutline/2481.png b/fonts/MiniwiFontOutline/2481.png new file mode 100644 index 000000000..dd80383a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/2481.png differ diff --git a/fonts/MiniwiFontOutline/2482.png b/fonts/MiniwiFontOutline/2482.png new file mode 100644 index 000000000..d724164a0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2482.png differ diff --git a/fonts/MiniwiFontOutline/2483.png b/fonts/MiniwiFontOutline/2483.png new file mode 100644 index 000000000..d6543e6ce Binary files /dev/null and b/fonts/MiniwiFontOutline/2483.png differ diff --git a/fonts/MiniwiFontOutline/2484.png b/fonts/MiniwiFontOutline/2484.png new file mode 100644 index 000000000..57ead6450 Binary files /dev/null and b/fonts/MiniwiFontOutline/2484.png differ diff --git a/fonts/MiniwiFontOutline/2485.png b/fonts/MiniwiFontOutline/2485.png new file mode 100644 index 000000000..a7b89bb2a Binary files /dev/null and b/fonts/MiniwiFontOutline/2485.png differ diff --git a/fonts/MiniwiFontOutline/2486.png b/fonts/MiniwiFontOutline/2486.png new file mode 100644 index 000000000..9d92098bd Binary files /dev/null and b/fonts/MiniwiFontOutline/2486.png differ diff --git a/fonts/MiniwiFontOutline/2487.png b/fonts/MiniwiFontOutline/2487.png new file mode 100644 index 000000000..3d8a8df10 Binary files /dev/null and b/fonts/MiniwiFontOutline/2487.png differ diff --git a/fonts/MiniwiFontOutline/2488.png b/fonts/MiniwiFontOutline/2488.png new file mode 100644 index 000000000..e2886f5a1 Binary files /dev/null and b/fonts/MiniwiFontOutline/2488.png differ diff --git a/fonts/MiniwiFontOutline/2489.png b/fonts/MiniwiFontOutline/2489.png new file mode 100644 index 000000000..32f14e1fd Binary files /dev/null and b/fonts/MiniwiFontOutline/2489.png differ diff --git a/fonts/MiniwiFontOutline/248A.png b/fonts/MiniwiFontOutline/248A.png new file mode 100644 index 000000000..359453612 Binary files /dev/null and b/fonts/MiniwiFontOutline/248A.png differ diff --git a/fonts/MiniwiFontOutline/248B.png b/fonts/MiniwiFontOutline/248B.png new file mode 100644 index 000000000..60b2c450f Binary files /dev/null and b/fonts/MiniwiFontOutline/248B.png differ diff --git a/fonts/MiniwiFontOutline/248C.png b/fonts/MiniwiFontOutline/248C.png new file mode 100644 index 000000000..8c2ef2055 Binary files /dev/null and b/fonts/MiniwiFontOutline/248C.png differ diff --git a/fonts/MiniwiFontOutline/248D.png b/fonts/MiniwiFontOutline/248D.png new file mode 100644 index 000000000..3327070f0 Binary files /dev/null and b/fonts/MiniwiFontOutline/248D.png differ diff --git a/fonts/MiniwiFontOutline/248E.png b/fonts/MiniwiFontOutline/248E.png new file mode 100644 index 000000000..06b171d56 Binary files /dev/null and b/fonts/MiniwiFontOutline/248E.png differ diff --git a/fonts/MiniwiFontOutline/248F.png b/fonts/MiniwiFontOutline/248F.png new file mode 100644 index 000000000..20a3cfb41 Binary files /dev/null and b/fonts/MiniwiFontOutline/248F.png differ diff --git a/fonts/MiniwiFontOutline/2490.png b/fonts/MiniwiFontOutline/2490.png new file mode 100644 index 000000000..925c3366a Binary files /dev/null and b/fonts/MiniwiFontOutline/2490.png differ diff --git a/fonts/MiniwiFontOutline/2491.png b/fonts/MiniwiFontOutline/2491.png new file mode 100644 index 000000000..d131fd069 Binary files /dev/null and b/fonts/MiniwiFontOutline/2491.png differ diff --git a/fonts/MiniwiFontOutline/2492.png b/fonts/MiniwiFontOutline/2492.png new file mode 100644 index 000000000..c7f434b85 Binary files /dev/null and b/fonts/MiniwiFontOutline/2492.png differ diff --git a/fonts/MiniwiFontOutline/2493.png b/fonts/MiniwiFontOutline/2493.png new file mode 100644 index 000000000..74f720ee7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2493.png differ diff --git a/fonts/MiniwiFontOutline/2494.png b/fonts/MiniwiFontOutline/2494.png new file mode 100644 index 000000000..0be5b4db3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2494.png differ diff --git a/fonts/MiniwiFontOutline/2495.png b/fonts/MiniwiFontOutline/2495.png new file mode 100644 index 000000000..fe3ddda96 Binary files /dev/null and b/fonts/MiniwiFontOutline/2495.png differ diff --git a/fonts/MiniwiFontOutline/2496.png b/fonts/MiniwiFontOutline/2496.png new file mode 100644 index 000000000..100c35ebf Binary files /dev/null and b/fonts/MiniwiFontOutline/2496.png differ diff --git a/fonts/MiniwiFontOutline/2497.png b/fonts/MiniwiFontOutline/2497.png new file mode 100644 index 000000000..60df4b98c Binary files /dev/null and b/fonts/MiniwiFontOutline/2497.png differ diff --git a/fonts/MiniwiFontOutline/2498.png b/fonts/MiniwiFontOutline/2498.png new file mode 100644 index 000000000..a37ecd1cd Binary files /dev/null and b/fonts/MiniwiFontOutline/2498.png differ diff --git a/fonts/MiniwiFontOutline/2499.png b/fonts/MiniwiFontOutline/2499.png new file mode 100644 index 000000000..a72a1762b Binary files /dev/null and b/fonts/MiniwiFontOutline/2499.png differ diff --git a/fonts/MiniwiFontOutline/249A.png b/fonts/MiniwiFontOutline/249A.png new file mode 100644 index 000000000..0a0b9a8b4 Binary files /dev/null and b/fonts/MiniwiFontOutline/249A.png differ diff --git a/fonts/MiniwiFontOutline/249B.png b/fonts/MiniwiFontOutline/249B.png new file mode 100644 index 000000000..f58fc18d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/249B.png differ diff --git a/fonts/MiniwiFontOutline/249C.png b/fonts/MiniwiFontOutline/249C.png new file mode 100644 index 000000000..f4dd29d3d Binary files /dev/null and b/fonts/MiniwiFontOutline/249C.png differ diff --git a/fonts/MiniwiFontOutline/249D.png b/fonts/MiniwiFontOutline/249D.png new file mode 100644 index 000000000..67f63f997 Binary files /dev/null and b/fonts/MiniwiFontOutline/249D.png differ diff --git a/fonts/MiniwiFontOutline/249E.png b/fonts/MiniwiFontOutline/249E.png new file mode 100644 index 000000000..79d09311c Binary files /dev/null and b/fonts/MiniwiFontOutline/249E.png differ diff --git a/fonts/MiniwiFontOutline/249F.png b/fonts/MiniwiFontOutline/249F.png new file mode 100644 index 000000000..ad5510a09 Binary files /dev/null and b/fonts/MiniwiFontOutline/249F.png differ diff --git a/fonts/MiniwiFontOutline/24A0.png b/fonts/MiniwiFontOutline/24A0.png new file mode 100644 index 000000000..e785fad73 Binary files /dev/null and b/fonts/MiniwiFontOutline/24A0.png differ diff --git a/fonts/MiniwiFontOutline/24A1.png b/fonts/MiniwiFontOutline/24A1.png new file mode 100644 index 000000000..3dccbd344 Binary files /dev/null and b/fonts/MiniwiFontOutline/24A1.png differ diff --git a/fonts/MiniwiFontOutline/24A2.png b/fonts/MiniwiFontOutline/24A2.png new file mode 100644 index 000000000..256e3082b Binary files /dev/null and b/fonts/MiniwiFontOutline/24A2.png differ diff --git a/fonts/MiniwiFontOutline/24A3.png b/fonts/MiniwiFontOutline/24A3.png new file mode 100644 index 000000000..41e2905a0 Binary files /dev/null and b/fonts/MiniwiFontOutline/24A3.png differ diff --git a/fonts/MiniwiFontOutline/24A4.png b/fonts/MiniwiFontOutline/24A4.png new file mode 100644 index 000000000..b7ef4c250 Binary files /dev/null and b/fonts/MiniwiFontOutline/24A4.png differ diff --git a/fonts/MiniwiFontOutline/24A5.png b/fonts/MiniwiFontOutline/24A5.png new file mode 100644 index 000000000..2054f3bff Binary files /dev/null and b/fonts/MiniwiFontOutline/24A5.png differ diff --git a/fonts/MiniwiFontOutline/24A6.png b/fonts/MiniwiFontOutline/24A6.png new file mode 100644 index 000000000..8091f3e13 Binary files /dev/null and b/fonts/MiniwiFontOutline/24A6.png differ diff --git a/fonts/MiniwiFontOutline/24A7.png b/fonts/MiniwiFontOutline/24A7.png new file mode 100644 index 000000000..96fb625eb Binary files /dev/null and b/fonts/MiniwiFontOutline/24A7.png differ diff --git a/fonts/MiniwiFontOutline/24A8.png b/fonts/MiniwiFontOutline/24A8.png new file mode 100644 index 000000000..0deb58de2 Binary files /dev/null and b/fonts/MiniwiFontOutline/24A8.png differ diff --git a/fonts/MiniwiFontOutline/24A9.png b/fonts/MiniwiFontOutline/24A9.png new file mode 100644 index 000000000..ba2de953d Binary files /dev/null and b/fonts/MiniwiFontOutline/24A9.png differ diff --git a/fonts/MiniwiFontOutline/24AA.png b/fonts/MiniwiFontOutline/24AA.png new file mode 100644 index 000000000..d493b2981 Binary files /dev/null and b/fonts/MiniwiFontOutline/24AA.png differ diff --git a/fonts/MiniwiFontOutline/24AB.png b/fonts/MiniwiFontOutline/24AB.png new file mode 100644 index 000000000..b6b00021b Binary files /dev/null and b/fonts/MiniwiFontOutline/24AB.png differ diff --git a/fonts/MiniwiFontOutline/24AC.png b/fonts/MiniwiFontOutline/24AC.png new file mode 100644 index 000000000..f0f91a263 Binary files /dev/null and b/fonts/MiniwiFontOutline/24AC.png differ diff --git a/fonts/MiniwiFontOutline/24AD.png b/fonts/MiniwiFontOutline/24AD.png new file mode 100644 index 000000000..f39d8ac3e Binary files /dev/null and b/fonts/MiniwiFontOutline/24AD.png differ diff --git a/fonts/MiniwiFontOutline/24AE.png b/fonts/MiniwiFontOutline/24AE.png new file mode 100644 index 000000000..52d6fa6e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/24AE.png differ diff --git a/fonts/MiniwiFontOutline/24AF.png b/fonts/MiniwiFontOutline/24AF.png new file mode 100644 index 000000000..b8e0fd8ac Binary files /dev/null and b/fonts/MiniwiFontOutline/24AF.png differ diff --git a/fonts/MiniwiFontOutline/24B0.png b/fonts/MiniwiFontOutline/24B0.png new file mode 100644 index 000000000..01ff4cc21 Binary files /dev/null and b/fonts/MiniwiFontOutline/24B0.png differ diff --git a/fonts/MiniwiFontOutline/24B1.png b/fonts/MiniwiFontOutline/24B1.png new file mode 100644 index 000000000..48aae62ce Binary files /dev/null and b/fonts/MiniwiFontOutline/24B1.png differ diff --git a/fonts/MiniwiFontOutline/24B2.png b/fonts/MiniwiFontOutline/24B2.png new file mode 100644 index 000000000..d508d2ce8 Binary files /dev/null and b/fonts/MiniwiFontOutline/24B2.png differ diff --git a/fonts/MiniwiFontOutline/24B3.png b/fonts/MiniwiFontOutline/24B3.png new file mode 100644 index 000000000..d2e6eda82 Binary files /dev/null and b/fonts/MiniwiFontOutline/24B3.png differ diff --git a/fonts/MiniwiFontOutline/24B4.png b/fonts/MiniwiFontOutline/24B4.png new file mode 100644 index 000000000..19ea82e50 Binary files /dev/null and b/fonts/MiniwiFontOutline/24B4.png differ diff --git a/fonts/MiniwiFontOutline/24B5.png b/fonts/MiniwiFontOutline/24B5.png new file mode 100644 index 000000000..11af10e1e Binary files /dev/null and b/fonts/MiniwiFontOutline/24B5.png differ diff --git a/fonts/MiniwiFontOutline/24B6.png b/fonts/MiniwiFontOutline/24B6.png new file mode 100644 index 000000000..f0ead9b7e Binary files /dev/null and b/fonts/MiniwiFontOutline/24B6.png differ diff --git a/fonts/MiniwiFontOutline/24B7.png b/fonts/MiniwiFontOutline/24B7.png new file mode 100644 index 000000000..b3cda0629 Binary files /dev/null and b/fonts/MiniwiFontOutline/24B7.png differ diff --git a/fonts/MiniwiFontOutline/24B8.png b/fonts/MiniwiFontOutline/24B8.png new file mode 100644 index 000000000..a3ee5b1c0 Binary files /dev/null and b/fonts/MiniwiFontOutline/24B8.png differ diff --git a/fonts/MiniwiFontOutline/24B9.png b/fonts/MiniwiFontOutline/24B9.png new file mode 100644 index 000000000..1e993aa6c Binary files /dev/null and b/fonts/MiniwiFontOutline/24B9.png differ diff --git a/fonts/MiniwiFontOutline/24BA.png b/fonts/MiniwiFontOutline/24BA.png new file mode 100644 index 000000000..d6ab8d4b3 Binary files /dev/null and b/fonts/MiniwiFontOutline/24BA.png differ diff --git a/fonts/MiniwiFontOutline/24BB.png b/fonts/MiniwiFontOutline/24BB.png new file mode 100644 index 000000000..5b677c5f5 Binary files /dev/null and b/fonts/MiniwiFontOutline/24BB.png differ diff --git a/fonts/MiniwiFontOutline/24BC.png b/fonts/MiniwiFontOutline/24BC.png new file mode 100644 index 000000000..db768e01f Binary files /dev/null and b/fonts/MiniwiFontOutline/24BC.png differ diff --git a/fonts/MiniwiFontOutline/24BD.png b/fonts/MiniwiFontOutline/24BD.png new file mode 100644 index 000000000..2c7278be8 Binary files /dev/null and b/fonts/MiniwiFontOutline/24BD.png differ diff --git a/fonts/MiniwiFontOutline/24BE.png b/fonts/MiniwiFontOutline/24BE.png new file mode 100644 index 000000000..b305de9fa Binary files /dev/null and b/fonts/MiniwiFontOutline/24BE.png differ diff --git a/fonts/MiniwiFontOutline/24BF.png b/fonts/MiniwiFontOutline/24BF.png new file mode 100644 index 000000000..24172488b Binary files /dev/null and b/fonts/MiniwiFontOutline/24BF.png differ diff --git a/fonts/MiniwiFontOutline/24C0.png b/fonts/MiniwiFontOutline/24C0.png new file mode 100644 index 000000000..529c7d8d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/24C0.png differ diff --git a/fonts/MiniwiFontOutline/24C1.png b/fonts/MiniwiFontOutline/24C1.png new file mode 100644 index 000000000..0f2ab97ae Binary files /dev/null and b/fonts/MiniwiFontOutline/24C1.png differ diff --git a/fonts/MiniwiFontOutline/24C2.png b/fonts/MiniwiFontOutline/24C2.png new file mode 100644 index 000000000..55ad202d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/24C2.png differ diff --git a/fonts/MiniwiFontOutline/24C3.png b/fonts/MiniwiFontOutline/24C3.png new file mode 100644 index 000000000..e2f74882e Binary files /dev/null and b/fonts/MiniwiFontOutline/24C3.png differ diff --git a/fonts/MiniwiFontOutline/24C4.png b/fonts/MiniwiFontOutline/24C4.png new file mode 100644 index 000000000..67df7b3dd Binary files /dev/null and b/fonts/MiniwiFontOutline/24C4.png differ diff --git a/fonts/MiniwiFontOutline/24C5.png b/fonts/MiniwiFontOutline/24C5.png new file mode 100644 index 000000000..c9edc53cb Binary files /dev/null and b/fonts/MiniwiFontOutline/24C5.png differ diff --git a/fonts/MiniwiFontOutline/24C6.png b/fonts/MiniwiFontOutline/24C6.png new file mode 100644 index 000000000..8e88ef069 Binary files /dev/null and b/fonts/MiniwiFontOutline/24C6.png differ diff --git a/fonts/MiniwiFontOutline/24C7.png b/fonts/MiniwiFontOutline/24C7.png new file mode 100644 index 000000000..43d3a076f Binary files /dev/null and b/fonts/MiniwiFontOutline/24C7.png differ diff --git a/fonts/MiniwiFontOutline/24C8.png b/fonts/MiniwiFontOutline/24C8.png new file mode 100644 index 000000000..4d13dc9a7 Binary files /dev/null and b/fonts/MiniwiFontOutline/24C8.png differ diff --git a/fonts/MiniwiFontOutline/24C9.png b/fonts/MiniwiFontOutline/24C9.png new file mode 100644 index 000000000..d90af429b Binary files /dev/null and b/fonts/MiniwiFontOutline/24C9.png differ diff --git a/fonts/MiniwiFontOutline/24CA.png b/fonts/MiniwiFontOutline/24CA.png new file mode 100644 index 000000000..034f83fd2 Binary files /dev/null and b/fonts/MiniwiFontOutline/24CA.png differ diff --git a/fonts/MiniwiFontOutline/24CB.png b/fonts/MiniwiFontOutline/24CB.png new file mode 100644 index 000000000..3cb213d9e Binary files /dev/null and b/fonts/MiniwiFontOutline/24CB.png differ diff --git a/fonts/MiniwiFontOutline/24CC.png b/fonts/MiniwiFontOutline/24CC.png new file mode 100644 index 000000000..0789dfc98 Binary files /dev/null and b/fonts/MiniwiFontOutline/24CC.png differ diff --git a/fonts/MiniwiFontOutline/24CD.png b/fonts/MiniwiFontOutline/24CD.png new file mode 100644 index 000000000..60c9143f0 Binary files /dev/null and b/fonts/MiniwiFontOutline/24CD.png differ diff --git a/fonts/MiniwiFontOutline/24CE.png b/fonts/MiniwiFontOutline/24CE.png new file mode 100644 index 000000000..4b37f23f4 Binary files /dev/null and b/fonts/MiniwiFontOutline/24CE.png differ diff --git a/fonts/MiniwiFontOutline/24CF.png b/fonts/MiniwiFontOutline/24CF.png new file mode 100644 index 000000000..42c48c4c7 Binary files /dev/null and b/fonts/MiniwiFontOutline/24CF.png differ diff --git a/fonts/MiniwiFontOutline/24D0.png b/fonts/MiniwiFontOutline/24D0.png new file mode 100644 index 000000000..ae73f726d Binary files /dev/null and b/fonts/MiniwiFontOutline/24D0.png differ diff --git a/fonts/MiniwiFontOutline/24D1.png b/fonts/MiniwiFontOutline/24D1.png new file mode 100644 index 000000000..f1db0b022 Binary files /dev/null and b/fonts/MiniwiFontOutline/24D1.png differ diff --git a/fonts/MiniwiFontOutline/24D2.png b/fonts/MiniwiFontOutline/24D2.png new file mode 100644 index 000000000..b62a337ca Binary files /dev/null and b/fonts/MiniwiFontOutline/24D2.png differ diff --git a/fonts/MiniwiFontOutline/24D3.png b/fonts/MiniwiFontOutline/24D3.png new file mode 100644 index 000000000..3c75911b8 Binary files /dev/null and b/fonts/MiniwiFontOutline/24D3.png differ diff --git a/fonts/MiniwiFontOutline/24D4.png b/fonts/MiniwiFontOutline/24D4.png new file mode 100644 index 000000000..26a62f2f3 Binary files /dev/null and b/fonts/MiniwiFontOutline/24D4.png differ diff --git a/fonts/MiniwiFontOutline/24D5.png b/fonts/MiniwiFontOutline/24D5.png new file mode 100644 index 000000000..d6d9eddf3 Binary files /dev/null and b/fonts/MiniwiFontOutline/24D5.png differ diff --git a/fonts/MiniwiFontOutline/24D6.png b/fonts/MiniwiFontOutline/24D6.png new file mode 100644 index 000000000..14f7683e7 Binary files /dev/null and b/fonts/MiniwiFontOutline/24D6.png differ diff --git a/fonts/MiniwiFontOutline/24D7.png b/fonts/MiniwiFontOutline/24D7.png new file mode 100644 index 000000000..99faeee84 Binary files /dev/null and b/fonts/MiniwiFontOutline/24D7.png differ diff --git a/fonts/MiniwiFontOutline/24D8.png b/fonts/MiniwiFontOutline/24D8.png new file mode 100644 index 000000000..ce21b7102 Binary files /dev/null and b/fonts/MiniwiFontOutline/24D8.png differ diff --git a/fonts/MiniwiFontOutline/24D9.png b/fonts/MiniwiFontOutline/24D9.png new file mode 100644 index 000000000..de3cb48f4 Binary files /dev/null and b/fonts/MiniwiFontOutline/24D9.png differ diff --git a/fonts/MiniwiFontOutline/24DA.png b/fonts/MiniwiFontOutline/24DA.png new file mode 100644 index 000000000..8091f3e13 Binary files /dev/null and b/fonts/MiniwiFontOutline/24DA.png differ diff --git a/fonts/MiniwiFontOutline/24DB.png b/fonts/MiniwiFontOutline/24DB.png new file mode 100644 index 000000000..9f170c0b6 Binary files /dev/null and b/fonts/MiniwiFontOutline/24DB.png differ diff --git a/fonts/MiniwiFontOutline/24DC.png b/fonts/MiniwiFontOutline/24DC.png new file mode 100644 index 000000000..d7151b49d Binary files /dev/null and b/fonts/MiniwiFontOutline/24DC.png differ diff --git a/fonts/MiniwiFontOutline/24DD.png b/fonts/MiniwiFontOutline/24DD.png new file mode 100644 index 000000000..8013d3ac1 Binary files /dev/null and b/fonts/MiniwiFontOutline/24DD.png differ diff --git a/fonts/MiniwiFontOutline/24DE.png b/fonts/MiniwiFontOutline/24DE.png new file mode 100644 index 000000000..67df7b3dd Binary files /dev/null and b/fonts/MiniwiFontOutline/24DE.png differ diff --git a/fonts/MiniwiFontOutline/24DF.png b/fonts/MiniwiFontOutline/24DF.png new file mode 100644 index 000000000..62b8c8788 Binary files /dev/null and b/fonts/MiniwiFontOutline/24DF.png differ diff --git a/fonts/MiniwiFontOutline/24E0.png b/fonts/MiniwiFontOutline/24E0.png new file mode 100644 index 000000000..9afecb70b Binary files /dev/null and b/fonts/MiniwiFontOutline/24E0.png differ diff --git a/fonts/MiniwiFontOutline/24E1.png b/fonts/MiniwiFontOutline/24E1.png new file mode 100644 index 000000000..3b64194ba Binary files /dev/null and b/fonts/MiniwiFontOutline/24E1.png differ diff --git a/fonts/MiniwiFontOutline/24E2.png b/fonts/MiniwiFontOutline/24E2.png new file mode 100644 index 000000000..ef4e40c2b Binary files /dev/null and b/fonts/MiniwiFontOutline/24E2.png differ diff --git a/fonts/MiniwiFontOutline/24E3.png b/fonts/MiniwiFontOutline/24E3.png new file mode 100644 index 000000000..4ed26a2dc Binary files /dev/null and b/fonts/MiniwiFontOutline/24E3.png differ diff --git a/fonts/MiniwiFontOutline/24E4.png b/fonts/MiniwiFontOutline/24E4.png new file mode 100644 index 000000000..034f83fd2 Binary files /dev/null and b/fonts/MiniwiFontOutline/24E4.png differ diff --git a/fonts/MiniwiFontOutline/24E5.png b/fonts/MiniwiFontOutline/24E5.png new file mode 100644 index 000000000..3cb213d9e Binary files /dev/null and b/fonts/MiniwiFontOutline/24E5.png differ diff --git a/fonts/MiniwiFontOutline/24E6.png b/fonts/MiniwiFontOutline/24E6.png new file mode 100644 index 000000000..0789dfc98 Binary files /dev/null and b/fonts/MiniwiFontOutline/24E6.png differ diff --git a/fonts/MiniwiFontOutline/24E7.png b/fonts/MiniwiFontOutline/24E7.png new file mode 100644 index 000000000..60c9143f0 Binary files /dev/null and b/fonts/MiniwiFontOutline/24E7.png differ diff --git a/fonts/MiniwiFontOutline/24E8.png b/fonts/MiniwiFontOutline/24E8.png new file mode 100644 index 000000000..317b9dace Binary files /dev/null and b/fonts/MiniwiFontOutline/24E8.png differ diff --git a/fonts/MiniwiFontOutline/24E9.png b/fonts/MiniwiFontOutline/24E9.png new file mode 100644 index 000000000..bc787283a Binary files /dev/null and b/fonts/MiniwiFontOutline/24E9.png differ diff --git a/fonts/MiniwiFontOutline/24EA.png b/fonts/MiniwiFontOutline/24EA.png new file mode 100644 index 000000000..4a0a9c1f6 Binary files /dev/null and b/fonts/MiniwiFontOutline/24EA.png differ diff --git a/fonts/MiniwiFontOutline/24EB.png b/fonts/MiniwiFontOutline/24EB.png new file mode 100644 index 000000000..6caa269b5 Binary files /dev/null and b/fonts/MiniwiFontOutline/24EB.png differ diff --git a/fonts/MiniwiFontOutline/24EC.png b/fonts/MiniwiFontOutline/24EC.png new file mode 100644 index 000000000..4651e29a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/24EC.png differ diff --git a/fonts/MiniwiFontOutline/24ED.png b/fonts/MiniwiFontOutline/24ED.png new file mode 100644 index 000000000..2c1b8dd8c Binary files /dev/null and b/fonts/MiniwiFontOutline/24ED.png differ diff --git a/fonts/MiniwiFontOutline/24EE.png b/fonts/MiniwiFontOutline/24EE.png new file mode 100644 index 000000000..12f395f1a Binary files /dev/null and b/fonts/MiniwiFontOutline/24EE.png differ diff --git a/fonts/MiniwiFontOutline/24EF.png b/fonts/MiniwiFontOutline/24EF.png new file mode 100644 index 000000000..e3a381cdc Binary files /dev/null and b/fonts/MiniwiFontOutline/24EF.png differ diff --git a/fonts/MiniwiFontOutline/24F0.png b/fonts/MiniwiFontOutline/24F0.png new file mode 100644 index 000000000..a25a101ad Binary files /dev/null and b/fonts/MiniwiFontOutline/24F0.png differ diff --git a/fonts/MiniwiFontOutline/24F1.png b/fonts/MiniwiFontOutline/24F1.png new file mode 100644 index 000000000..3c873cb91 Binary files /dev/null and b/fonts/MiniwiFontOutline/24F1.png differ diff --git a/fonts/MiniwiFontOutline/24F2.png b/fonts/MiniwiFontOutline/24F2.png new file mode 100644 index 000000000..0ad6b7c96 Binary files /dev/null and b/fonts/MiniwiFontOutline/24F2.png differ diff --git a/fonts/MiniwiFontOutline/24F3.png b/fonts/MiniwiFontOutline/24F3.png new file mode 100644 index 000000000..54ca9253e Binary files /dev/null and b/fonts/MiniwiFontOutline/24F3.png differ diff --git a/fonts/MiniwiFontOutline/24F4.png b/fonts/MiniwiFontOutline/24F4.png new file mode 100644 index 000000000..a52647d1b Binary files /dev/null and b/fonts/MiniwiFontOutline/24F4.png differ diff --git a/fonts/MiniwiFontOutline/24F5.png b/fonts/MiniwiFontOutline/24F5.png new file mode 100644 index 000000000..ab31cbc29 Binary files /dev/null and b/fonts/MiniwiFontOutline/24F5.png differ diff --git a/fonts/MiniwiFontOutline/24F6.png b/fonts/MiniwiFontOutline/24F6.png new file mode 100644 index 000000000..0088b317d Binary files /dev/null and b/fonts/MiniwiFontOutline/24F6.png differ diff --git a/fonts/MiniwiFontOutline/24F7.png b/fonts/MiniwiFontOutline/24F7.png new file mode 100644 index 000000000..abc458ec7 Binary files /dev/null and b/fonts/MiniwiFontOutline/24F7.png differ diff --git a/fonts/MiniwiFontOutline/24F8.png b/fonts/MiniwiFontOutline/24F8.png new file mode 100644 index 000000000..8633847fc Binary files /dev/null and b/fonts/MiniwiFontOutline/24F8.png differ diff --git a/fonts/MiniwiFontOutline/24F9.png b/fonts/MiniwiFontOutline/24F9.png new file mode 100644 index 000000000..b4f2b1bb2 Binary files /dev/null and b/fonts/MiniwiFontOutline/24F9.png differ diff --git a/fonts/MiniwiFontOutline/24FA.png b/fonts/MiniwiFontOutline/24FA.png new file mode 100644 index 000000000..ac8d3d002 Binary files /dev/null and b/fonts/MiniwiFontOutline/24FA.png differ diff --git a/fonts/MiniwiFontOutline/24FB.png b/fonts/MiniwiFontOutline/24FB.png new file mode 100644 index 000000000..c7a985371 Binary files /dev/null and b/fonts/MiniwiFontOutline/24FB.png differ diff --git a/fonts/MiniwiFontOutline/24FC.png b/fonts/MiniwiFontOutline/24FC.png new file mode 100644 index 000000000..88761b0ad Binary files /dev/null and b/fonts/MiniwiFontOutline/24FC.png differ diff --git a/fonts/MiniwiFontOutline/24FD.png b/fonts/MiniwiFontOutline/24FD.png new file mode 100644 index 000000000..268ce779f Binary files /dev/null and b/fonts/MiniwiFontOutline/24FD.png differ diff --git a/fonts/MiniwiFontOutline/24FE.png b/fonts/MiniwiFontOutline/24FE.png new file mode 100644 index 000000000..7ec420368 Binary files /dev/null and b/fonts/MiniwiFontOutline/24FE.png differ diff --git a/fonts/MiniwiFontOutline/24FF.png b/fonts/MiniwiFontOutline/24FF.png new file mode 100644 index 000000000..017a52732 Binary files /dev/null and b/fonts/MiniwiFontOutline/24FF.png differ diff --git a/fonts/MiniwiFontOutline/2500.png b/fonts/MiniwiFontOutline/2500.png new file mode 100644 index 000000000..adef252cf Binary files /dev/null and b/fonts/MiniwiFontOutline/2500.png differ diff --git a/fonts/MiniwiFontOutline/2501.png b/fonts/MiniwiFontOutline/2501.png new file mode 100644 index 000000000..bdcbbd1ae Binary files /dev/null and b/fonts/MiniwiFontOutline/2501.png differ diff --git a/fonts/MiniwiFontOutline/2502.png b/fonts/MiniwiFontOutline/2502.png new file mode 100644 index 000000000..6207284b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2502.png differ diff --git a/fonts/MiniwiFontOutline/2503.png b/fonts/MiniwiFontOutline/2503.png new file mode 100644 index 000000000..04a31f05e Binary files /dev/null and b/fonts/MiniwiFontOutline/2503.png differ diff --git a/fonts/MiniwiFontOutline/2504.png b/fonts/MiniwiFontOutline/2504.png new file mode 100644 index 000000000..30c82a93f Binary files /dev/null and b/fonts/MiniwiFontOutline/2504.png differ diff --git a/fonts/MiniwiFontOutline/2505.png b/fonts/MiniwiFontOutline/2505.png new file mode 100644 index 000000000..7e2ad4386 Binary files /dev/null and b/fonts/MiniwiFontOutline/2505.png differ diff --git a/fonts/MiniwiFontOutline/2506.png b/fonts/MiniwiFontOutline/2506.png new file mode 100644 index 000000000..15f9cbd03 Binary files /dev/null and b/fonts/MiniwiFontOutline/2506.png differ diff --git a/fonts/MiniwiFontOutline/2507.png b/fonts/MiniwiFontOutline/2507.png new file mode 100644 index 000000000..47e7b5203 Binary files /dev/null and b/fonts/MiniwiFontOutline/2507.png differ diff --git a/fonts/MiniwiFontOutline/2508.png b/fonts/MiniwiFontOutline/2508.png new file mode 100644 index 000000000..03f5e0a7e Binary files /dev/null and b/fonts/MiniwiFontOutline/2508.png differ diff --git a/fonts/MiniwiFontOutline/2509.png b/fonts/MiniwiFontOutline/2509.png new file mode 100644 index 000000000..59eaf6c68 Binary files /dev/null and b/fonts/MiniwiFontOutline/2509.png differ diff --git a/fonts/MiniwiFontOutline/250A.png b/fonts/MiniwiFontOutline/250A.png new file mode 100644 index 000000000..d27e6de2f Binary files /dev/null and b/fonts/MiniwiFontOutline/250A.png differ diff --git a/fonts/MiniwiFontOutline/250B.png b/fonts/MiniwiFontOutline/250B.png new file mode 100644 index 000000000..32ca71930 Binary files /dev/null and b/fonts/MiniwiFontOutline/250B.png differ diff --git a/fonts/MiniwiFontOutline/250C.png b/fonts/MiniwiFontOutline/250C.png new file mode 100644 index 000000000..b1cb83eff Binary files /dev/null and b/fonts/MiniwiFontOutline/250C.png differ diff --git a/fonts/MiniwiFontOutline/250D.png b/fonts/MiniwiFontOutline/250D.png new file mode 100644 index 000000000..c5c337f90 Binary files /dev/null and b/fonts/MiniwiFontOutline/250D.png differ diff --git a/fonts/MiniwiFontOutline/250E.png b/fonts/MiniwiFontOutline/250E.png new file mode 100644 index 000000000..73cf897e2 Binary files /dev/null and b/fonts/MiniwiFontOutline/250E.png differ diff --git a/fonts/MiniwiFontOutline/250F.png b/fonts/MiniwiFontOutline/250F.png new file mode 100644 index 000000000..c5c337f90 Binary files /dev/null and b/fonts/MiniwiFontOutline/250F.png differ diff --git a/fonts/MiniwiFontOutline/2510.png b/fonts/MiniwiFontOutline/2510.png new file mode 100644 index 000000000..4ffa90cc7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2510.png differ diff --git a/fonts/MiniwiFontOutline/2511.png b/fonts/MiniwiFontOutline/2511.png new file mode 100644 index 000000000..d320c7088 Binary files /dev/null and b/fonts/MiniwiFontOutline/2511.png differ diff --git a/fonts/MiniwiFontOutline/2512.png b/fonts/MiniwiFontOutline/2512.png new file mode 100644 index 000000000..a06b71187 Binary files /dev/null and b/fonts/MiniwiFontOutline/2512.png differ diff --git a/fonts/MiniwiFontOutline/2513.png b/fonts/MiniwiFontOutline/2513.png new file mode 100644 index 000000000..04ef38602 Binary files /dev/null and b/fonts/MiniwiFontOutline/2513.png differ diff --git a/fonts/MiniwiFontOutline/2514.png b/fonts/MiniwiFontOutline/2514.png new file mode 100644 index 000000000..e10536f9f Binary files /dev/null and b/fonts/MiniwiFontOutline/2514.png differ diff --git a/fonts/MiniwiFontOutline/2515.png b/fonts/MiniwiFontOutline/2515.png new file mode 100644 index 000000000..b16ef08b0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2515.png differ diff --git a/fonts/MiniwiFontOutline/2516.png b/fonts/MiniwiFontOutline/2516.png new file mode 100644 index 000000000..293ed1657 Binary files /dev/null and b/fonts/MiniwiFontOutline/2516.png differ diff --git a/fonts/MiniwiFontOutline/2517.png b/fonts/MiniwiFontOutline/2517.png new file mode 100644 index 000000000..1455c6cd0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2517.png differ diff --git a/fonts/MiniwiFontOutline/2518.png b/fonts/MiniwiFontOutline/2518.png new file mode 100644 index 000000000..5d8958302 Binary files /dev/null and b/fonts/MiniwiFontOutline/2518.png differ diff --git a/fonts/MiniwiFontOutline/2519.png b/fonts/MiniwiFontOutline/2519.png new file mode 100644 index 000000000..422f6fa1f Binary files /dev/null and b/fonts/MiniwiFontOutline/2519.png differ diff --git a/fonts/MiniwiFontOutline/251A.png b/fonts/MiniwiFontOutline/251A.png new file mode 100644 index 000000000..d6c08a06f Binary files /dev/null and b/fonts/MiniwiFontOutline/251A.png differ diff --git a/fonts/MiniwiFontOutline/251B.png b/fonts/MiniwiFontOutline/251B.png new file mode 100644 index 000000000..cd4887b10 Binary files /dev/null and b/fonts/MiniwiFontOutline/251B.png differ diff --git a/fonts/MiniwiFontOutline/251C.png b/fonts/MiniwiFontOutline/251C.png new file mode 100644 index 000000000..2fa52f3e7 Binary files /dev/null and b/fonts/MiniwiFontOutline/251C.png differ diff --git a/fonts/MiniwiFontOutline/251D.png b/fonts/MiniwiFontOutline/251D.png new file mode 100644 index 000000000..e8aea0a01 Binary files /dev/null and b/fonts/MiniwiFontOutline/251D.png differ diff --git a/fonts/MiniwiFontOutline/251E.png b/fonts/MiniwiFontOutline/251E.png new file mode 100644 index 000000000..b0bd65489 Binary files /dev/null and b/fonts/MiniwiFontOutline/251E.png differ diff --git a/fonts/MiniwiFontOutline/251F.png b/fonts/MiniwiFontOutline/251F.png new file mode 100644 index 000000000..0b1b289b0 Binary files /dev/null and b/fonts/MiniwiFontOutline/251F.png differ diff --git a/fonts/MiniwiFontOutline/2520.png b/fonts/MiniwiFontOutline/2520.png new file mode 100644 index 000000000..bcdecc085 Binary files /dev/null and b/fonts/MiniwiFontOutline/2520.png differ diff --git a/fonts/MiniwiFontOutline/2521.png b/fonts/MiniwiFontOutline/2521.png new file mode 100644 index 000000000..bf29a776f Binary files /dev/null and b/fonts/MiniwiFontOutline/2521.png differ diff --git a/fonts/MiniwiFontOutline/2522.png b/fonts/MiniwiFontOutline/2522.png new file mode 100644 index 000000000..28b023cce Binary files /dev/null and b/fonts/MiniwiFontOutline/2522.png differ diff --git a/fonts/MiniwiFontOutline/2523.png b/fonts/MiniwiFontOutline/2523.png new file mode 100644 index 000000000..661a6df5b Binary files /dev/null and b/fonts/MiniwiFontOutline/2523.png differ diff --git a/fonts/MiniwiFontOutline/2524.png b/fonts/MiniwiFontOutline/2524.png new file mode 100644 index 000000000..ca96ede53 Binary files /dev/null and b/fonts/MiniwiFontOutline/2524.png differ diff --git a/fonts/MiniwiFontOutline/2525.png b/fonts/MiniwiFontOutline/2525.png new file mode 100644 index 000000000..1e000006e Binary files /dev/null and b/fonts/MiniwiFontOutline/2525.png differ diff --git a/fonts/MiniwiFontOutline/2526.png b/fonts/MiniwiFontOutline/2526.png new file mode 100644 index 000000000..fb1d15f69 Binary files /dev/null and b/fonts/MiniwiFontOutline/2526.png differ diff --git a/fonts/MiniwiFontOutline/2527.png b/fonts/MiniwiFontOutline/2527.png new file mode 100644 index 000000000..0fc759346 Binary files /dev/null and b/fonts/MiniwiFontOutline/2527.png differ diff --git a/fonts/MiniwiFontOutline/2528.png b/fonts/MiniwiFontOutline/2528.png new file mode 100644 index 000000000..a53c457b9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2528.png differ diff --git a/fonts/MiniwiFontOutline/2529.png b/fonts/MiniwiFontOutline/2529.png new file mode 100644 index 000000000..ac44e38b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2529.png differ diff --git a/fonts/MiniwiFontOutline/252A.png b/fonts/MiniwiFontOutline/252A.png new file mode 100644 index 000000000..f0a858923 Binary files /dev/null and b/fonts/MiniwiFontOutline/252A.png differ diff --git a/fonts/MiniwiFontOutline/252B.png b/fonts/MiniwiFontOutline/252B.png new file mode 100644 index 000000000..ee8bc9f07 Binary files /dev/null and b/fonts/MiniwiFontOutline/252B.png differ diff --git a/fonts/MiniwiFontOutline/252C.png b/fonts/MiniwiFontOutline/252C.png new file mode 100644 index 000000000..bbb678c37 Binary files /dev/null and b/fonts/MiniwiFontOutline/252C.png differ diff --git a/fonts/MiniwiFontOutline/252D.png b/fonts/MiniwiFontOutline/252D.png new file mode 100644 index 000000000..c6fbf299d Binary files /dev/null and b/fonts/MiniwiFontOutline/252D.png differ diff --git a/fonts/MiniwiFontOutline/252E.png b/fonts/MiniwiFontOutline/252E.png new file mode 100644 index 000000000..8a9990490 Binary files /dev/null and b/fonts/MiniwiFontOutline/252E.png differ diff --git a/fonts/MiniwiFontOutline/252F.png b/fonts/MiniwiFontOutline/252F.png new file mode 100644 index 000000000..e8fcd6f84 Binary files /dev/null and b/fonts/MiniwiFontOutline/252F.png differ diff --git a/fonts/MiniwiFontOutline/2530.png b/fonts/MiniwiFontOutline/2530.png new file mode 100644 index 000000000..37fea87e9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2530.png differ diff --git a/fonts/MiniwiFontOutline/2531.png b/fonts/MiniwiFontOutline/2531.png new file mode 100644 index 000000000..0f4842e63 Binary files /dev/null and b/fonts/MiniwiFontOutline/2531.png differ diff --git a/fonts/MiniwiFontOutline/2532.png b/fonts/MiniwiFontOutline/2532.png new file mode 100644 index 000000000..2ffc5ea43 Binary files /dev/null and b/fonts/MiniwiFontOutline/2532.png differ diff --git a/fonts/MiniwiFontOutline/2533.png b/fonts/MiniwiFontOutline/2533.png new file mode 100644 index 000000000..10e19141e Binary files /dev/null and b/fonts/MiniwiFontOutline/2533.png differ diff --git a/fonts/MiniwiFontOutline/2534.png b/fonts/MiniwiFontOutline/2534.png new file mode 100644 index 000000000..f33db65fb Binary files /dev/null and b/fonts/MiniwiFontOutline/2534.png differ diff --git a/fonts/MiniwiFontOutline/2535.png b/fonts/MiniwiFontOutline/2535.png new file mode 100644 index 000000000..8c00329c0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2535.png differ diff --git a/fonts/MiniwiFontOutline/2536.png b/fonts/MiniwiFontOutline/2536.png new file mode 100644 index 000000000..6f4288355 Binary files /dev/null and b/fonts/MiniwiFontOutline/2536.png differ diff --git a/fonts/MiniwiFontOutline/2537.png b/fonts/MiniwiFontOutline/2537.png new file mode 100644 index 000000000..11dcb89e7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2537.png differ diff --git a/fonts/MiniwiFontOutline/2538.png b/fonts/MiniwiFontOutline/2538.png new file mode 100644 index 000000000..d01c98219 Binary files /dev/null and b/fonts/MiniwiFontOutline/2538.png differ diff --git a/fonts/MiniwiFontOutline/2539.png b/fonts/MiniwiFontOutline/2539.png new file mode 100644 index 000000000..e595cf4b8 Binary files /dev/null and b/fonts/MiniwiFontOutline/2539.png differ diff --git a/fonts/MiniwiFontOutline/253A.png b/fonts/MiniwiFontOutline/253A.png new file mode 100644 index 000000000..ddc78d108 Binary files /dev/null and b/fonts/MiniwiFontOutline/253A.png differ diff --git a/fonts/MiniwiFontOutline/253B.png b/fonts/MiniwiFontOutline/253B.png new file mode 100644 index 000000000..33cc993a7 Binary files /dev/null and b/fonts/MiniwiFontOutline/253B.png differ diff --git a/fonts/MiniwiFontOutline/253C.png b/fonts/MiniwiFontOutline/253C.png new file mode 100644 index 000000000..6e0bcae72 Binary files /dev/null and b/fonts/MiniwiFontOutline/253C.png differ diff --git a/fonts/MiniwiFontOutline/253D.png b/fonts/MiniwiFontOutline/253D.png new file mode 100644 index 000000000..998297392 Binary files /dev/null and b/fonts/MiniwiFontOutline/253D.png differ diff --git a/fonts/MiniwiFontOutline/253E.png b/fonts/MiniwiFontOutline/253E.png new file mode 100644 index 000000000..e76c0bbaf Binary files /dev/null and b/fonts/MiniwiFontOutline/253E.png differ diff --git a/fonts/MiniwiFontOutline/253F.png b/fonts/MiniwiFontOutline/253F.png new file mode 100644 index 000000000..38fb5963f Binary files /dev/null and b/fonts/MiniwiFontOutline/253F.png differ diff --git a/fonts/MiniwiFontOutline/2540.png b/fonts/MiniwiFontOutline/2540.png new file mode 100644 index 000000000..fae304896 Binary files /dev/null and b/fonts/MiniwiFontOutline/2540.png differ diff --git a/fonts/MiniwiFontOutline/2541.png b/fonts/MiniwiFontOutline/2541.png new file mode 100644 index 000000000..bfc02cfc8 Binary files /dev/null and b/fonts/MiniwiFontOutline/2541.png differ diff --git a/fonts/MiniwiFontOutline/2542.png b/fonts/MiniwiFontOutline/2542.png new file mode 100644 index 000000000..839663fe3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2542.png differ diff --git a/fonts/MiniwiFontOutline/2543.png b/fonts/MiniwiFontOutline/2543.png new file mode 100644 index 000000000..ac44e38b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2543.png differ diff --git a/fonts/MiniwiFontOutline/2544.png b/fonts/MiniwiFontOutline/2544.png new file mode 100644 index 000000000..fae304896 Binary files /dev/null and b/fonts/MiniwiFontOutline/2544.png differ diff --git a/fonts/MiniwiFontOutline/2545.png b/fonts/MiniwiFontOutline/2545.png new file mode 100644 index 000000000..3eedcf4eb Binary files /dev/null and b/fonts/MiniwiFontOutline/2545.png differ diff --git a/fonts/MiniwiFontOutline/2546.png b/fonts/MiniwiFontOutline/2546.png new file mode 100644 index 000000000..64fbacaf0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2546.png differ diff --git a/fonts/MiniwiFontOutline/2547.png b/fonts/MiniwiFontOutline/2547.png new file mode 100644 index 000000000..62499f205 Binary files /dev/null and b/fonts/MiniwiFontOutline/2547.png differ diff --git a/fonts/MiniwiFontOutline/2548.png b/fonts/MiniwiFontOutline/2548.png new file mode 100644 index 000000000..4aad1fa34 Binary files /dev/null and b/fonts/MiniwiFontOutline/2548.png differ diff --git a/fonts/MiniwiFontOutline/2549.png b/fonts/MiniwiFontOutline/2549.png new file mode 100644 index 000000000..8f2f93a10 Binary files /dev/null and b/fonts/MiniwiFontOutline/2549.png differ diff --git a/fonts/MiniwiFontOutline/254A.png b/fonts/MiniwiFontOutline/254A.png new file mode 100644 index 000000000..e8f3b2dab Binary files /dev/null and b/fonts/MiniwiFontOutline/254A.png differ diff --git a/fonts/MiniwiFontOutline/254B.png b/fonts/MiniwiFontOutline/254B.png new file mode 100644 index 000000000..115abfa9e Binary files /dev/null and b/fonts/MiniwiFontOutline/254B.png differ diff --git a/fonts/MiniwiFontOutline/254C.png b/fonts/MiniwiFontOutline/254C.png new file mode 100644 index 000000000..30c82a93f Binary files /dev/null and b/fonts/MiniwiFontOutline/254C.png differ diff --git a/fonts/MiniwiFontOutline/254D.png b/fonts/MiniwiFontOutline/254D.png new file mode 100644 index 000000000..7e2ad4386 Binary files /dev/null and b/fonts/MiniwiFontOutline/254D.png differ diff --git a/fonts/MiniwiFontOutline/254E.png b/fonts/MiniwiFontOutline/254E.png new file mode 100644 index 000000000..13a1e81cc Binary files /dev/null and b/fonts/MiniwiFontOutline/254E.png differ diff --git a/fonts/MiniwiFontOutline/254F.png b/fonts/MiniwiFontOutline/254F.png new file mode 100644 index 000000000..3800b9e39 Binary files /dev/null and b/fonts/MiniwiFontOutline/254F.png differ diff --git a/fonts/MiniwiFontOutline/2550.png b/fonts/MiniwiFontOutline/2550.png new file mode 100644 index 000000000..a57102f60 Binary files /dev/null and b/fonts/MiniwiFontOutline/2550.png differ diff --git a/fonts/MiniwiFontOutline/2551.png b/fonts/MiniwiFontOutline/2551.png new file mode 100644 index 000000000..862dd2a74 Binary files /dev/null and b/fonts/MiniwiFontOutline/2551.png differ diff --git a/fonts/MiniwiFontOutline/2552.png b/fonts/MiniwiFontOutline/2552.png new file mode 100644 index 000000000..eda01937d Binary files /dev/null and b/fonts/MiniwiFontOutline/2552.png differ diff --git a/fonts/MiniwiFontOutline/2553.png b/fonts/MiniwiFontOutline/2553.png new file mode 100644 index 000000000..94b3d49b0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2553.png differ diff --git a/fonts/MiniwiFontOutline/2554.png b/fonts/MiniwiFontOutline/2554.png new file mode 100644 index 000000000..23e69c2f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/2554.png differ diff --git a/fonts/MiniwiFontOutline/2555.png b/fonts/MiniwiFontOutline/2555.png new file mode 100644 index 000000000..08741cbe9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2555.png differ diff --git a/fonts/MiniwiFontOutline/2556.png b/fonts/MiniwiFontOutline/2556.png new file mode 100644 index 000000000..73f0b54ec Binary files /dev/null and b/fonts/MiniwiFontOutline/2556.png differ diff --git a/fonts/MiniwiFontOutline/2557.png b/fonts/MiniwiFontOutline/2557.png new file mode 100644 index 000000000..0901be6b4 Binary files /dev/null and b/fonts/MiniwiFontOutline/2557.png differ diff --git a/fonts/MiniwiFontOutline/2558.png b/fonts/MiniwiFontOutline/2558.png new file mode 100644 index 000000000..72887bae7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2558.png differ diff --git a/fonts/MiniwiFontOutline/2559.png b/fonts/MiniwiFontOutline/2559.png new file mode 100644 index 000000000..6269fa96e Binary files /dev/null and b/fonts/MiniwiFontOutline/2559.png differ diff --git a/fonts/MiniwiFontOutline/255A.png b/fonts/MiniwiFontOutline/255A.png new file mode 100644 index 000000000..150aa4b1d Binary files /dev/null and b/fonts/MiniwiFontOutline/255A.png differ diff --git a/fonts/MiniwiFontOutline/255B.png b/fonts/MiniwiFontOutline/255B.png new file mode 100644 index 000000000..1dca0e79c Binary files /dev/null and b/fonts/MiniwiFontOutline/255B.png differ diff --git a/fonts/MiniwiFontOutline/255C.png b/fonts/MiniwiFontOutline/255C.png new file mode 100644 index 000000000..35015a4af Binary files /dev/null and b/fonts/MiniwiFontOutline/255C.png differ diff --git a/fonts/MiniwiFontOutline/255D.png b/fonts/MiniwiFontOutline/255D.png new file mode 100644 index 000000000..fbba84f6c Binary files /dev/null and b/fonts/MiniwiFontOutline/255D.png differ diff --git a/fonts/MiniwiFontOutline/255E.png b/fonts/MiniwiFontOutline/255E.png new file mode 100644 index 000000000..09586b713 Binary files /dev/null and b/fonts/MiniwiFontOutline/255E.png differ diff --git a/fonts/MiniwiFontOutline/255F.png b/fonts/MiniwiFontOutline/255F.png new file mode 100644 index 000000000..20a6eae67 Binary files /dev/null and b/fonts/MiniwiFontOutline/255F.png differ diff --git a/fonts/MiniwiFontOutline/2560.png b/fonts/MiniwiFontOutline/2560.png new file mode 100644 index 000000000..173e8c9dd Binary files /dev/null and b/fonts/MiniwiFontOutline/2560.png differ diff --git a/fonts/MiniwiFontOutline/2561.png b/fonts/MiniwiFontOutline/2561.png new file mode 100644 index 000000000..bbdf6febf Binary files /dev/null and b/fonts/MiniwiFontOutline/2561.png differ diff --git a/fonts/MiniwiFontOutline/2562.png b/fonts/MiniwiFontOutline/2562.png new file mode 100644 index 000000000..862dd2a74 Binary files /dev/null and b/fonts/MiniwiFontOutline/2562.png differ diff --git a/fonts/MiniwiFontOutline/2563.png b/fonts/MiniwiFontOutline/2563.png new file mode 100644 index 000000000..1243d6125 Binary files /dev/null and b/fonts/MiniwiFontOutline/2563.png differ diff --git a/fonts/MiniwiFontOutline/2564.png b/fonts/MiniwiFontOutline/2564.png new file mode 100644 index 000000000..24726c5fb Binary files /dev/null and b/fonts/MiniwiFontOutline/2564.png differ diff --git a/fonts/MiniwiFontOutline/2565.png b/fonts/MiniwiFontOutline/2565.png new file mode 100644 index 000000000..94b3d49b0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2565.png differ diff --git a/fonts/MiniwiFontOutline/2566.png b/fonts/MiniwiFontOutline/2566.png new file mode 100644 index 000000000..f1e5abe07 Binary files /dev/null and b/fonts/MiniwiFontOutline/2566.png differ diff --git a/fonts/MiniwiFontOutline/2567.png b/fonts/MiniwiFontOutline/2567.png new file mode 100644 index 000000000..d8cb2df49 Binary files /dev/null and b/fonts/MiniwiFontOutline/2567.png differ diff --git a/fonts/MiniwiFontOutline/2568.png b/fonts/MiniwiFontOutline/2568.png new file mode 100644 index 000000000..6269fa96e Binary files /dev/null and b/fonts/MiniwiFontOutline/2568.png differ diff --git a/fonts/MiniwiFontOutline/2569.png b/fonts/MiniwiFontOutline/2569.png new file mode 100644 index 000000000..b1b784961 Binary files /dev/null and b/fonts/MiniwiFontOutline/2569.png differ diff --git a/fonts/MiniwiFontOutline/256A.png b/fonts/MiniwiFontOutline/256A.png new file mode 100644 index 000000000..5ce106ec8 Binary files /dev/null and b/fonts/MiniwiFontOutline/256A.png differ diff --git a/fonts/MiniwiFontOutline/256B.png b/fonts/MiniwiFontOutline/256B.png new file mode 100644 index 000000000..20a6eae67 Binary files /dev/null and b/fonts/MiniwiFontOutline/256B.png differ diff --git a/fonts/MiniwiFontOutline/256C.png b/fonts/MiniwiFontOutline/256C.png new file mode 100644 index 000000000..9c4973f6d Binary files /dev/null and b/fonts/MiniwiFontOutline/256C.png differ diff --git a/fonts/MiniwiFontOutline/256D.png b/fonts/MiniwiFontOutline/256D.png new file mode 100644 index 000000000..1be1a6cc7 Binary files /dev/null and b/fonts/MiniwiFontOutline/256D.png differ diff --git a/fonts/MiniwiFontOutline/256E.png b/fonts/MiniwiFontOutline/256E.png new file mode 100644 index 000000000..214522dce Binary files /dev/null and b/fonts/MiniwiFontOutline/256E.png differ diff --git a/fonts/MiniwiFontOutline/256F.png b/fonts/MiniwiFontOutline/256F.png new file mode 100644 index 000000000..6c13f9de9 Binary files /dev/null and b/fonts/MiniwiFontOutline/256F.png differ diff --git a/fonts/MiniwiFontOutline/2570.png b/fonts/MiniwiFontOutline/2570.png new file mode 100644 index 000000000..7dbba9eef Binary files /dev/null and b/fonts/MiniwiFontOutline/2570.png differ diff --git a/fonts/MiniwiFontOutline/2571.png b/fonts/MiniwiFontOutline/2571.png new file mode 100644 index 000000000..747570a14 Binary files /dev/null and b/fonts/MiniwiFontOutline/2571.png differ diff --git a/fonts/MiniwiFontOutline/2572.png b/fonts/MiniwiFontOutline/2572.png new file mode 100644 index 000000000..d31dd2a4c Binary files /dev/null and b/fonts/MiniwiFontOutline/2572.png differ diff --git a/fonts/MiniwiFontOutline/2573.png b/fonts/MiniwiFontOutline/2573.png new file mode 100644 index 000000000..5b319c902 Binary files /dev/null and b/fonts/MiniwiFontOutline/2573.png differ diff --git a/fonts/MiniwiFontOutline/2574.png b/fonts/MiniwiFontOutline/2574.png new file mode 100644 index 000000000..2be656c7d Binary files /dev/null and b/fonts/MiniwiFontOutline/2574.png differ diff --git a/fonts/MiniwiFontOutline/2575.png b/fonts/MiniwiFontOutline/2575.png new file mode 100644 index 000000000..54a37bcf1 Binary files /dev/null and b/fonts/MiniwiFontOutline/2575.png differ diff --git a/fonts/MiniwiFontOutline/2576.png b/fonts/MiniwiFontOutline/2576.png new file mode 100644 index 000000000..30c82a93f Binary files /dev/null and b/fonts/MiniwiFontOutline/2576.png differ diff --git a/fonts/MiniwiFontOutline/2577.png b/fonts/MiniwiFontOutline/2577.png new file mode 100644 index 000000000..adc7f3f18 Binary files /dev/null and b/fonts/MiniwiFontOutline/2577.png differ diff --git a/fonts/MiniwiFontOutline/2578.png b/fonts/MiniwiFontOutline/2578.png new file mode 100644 index 000000000..1b42ed87c Binary files /dev/null and b/fonts/MiniwiFontOutline/2578.png differ diff --git a/fonts/MiniwiFontOutline/2579.png b/fonts/MiniwiFontOutline/2579.png new file mode 100644 index 000000000..c11130737 Binary files /dev/null and b/fonts/MiniwiFontOutline/2579.png differ diff --git a/fonts/MiniwiFontOutline/257A.png b/fonts/MiniwiFontOutline/257A.png new file mode 100644 index 000000000..7e2ad4386 Binary files /dev/null and b/fonts/MiniwiFontOutline/257A.png differ diff --git a/fonts/MiniwiFontOutline/257B.png b/fonts/MiniwiFontOutline/257B.png new file mode 100644 index 000000000..867bb13fe Binary files /dev/null and b/fonts/MiniwiFontOutline/257B.png differ diff --git a/fonts/MiniwiFontOutline/257C.png b/fonts/MiniwiFontOutline/257C.png new file mode 100644 index 000000000..b080b7a0f Binary files /dev/null and b/fonts/MiniwiFontOutline/257C.png differ diff --git a/fonts/MiniwiFontOutline/257D.png b/fonts/MiniwiFontOutline/257D.png new file mode 100644 index 000000000..d746417d7 Binary files /dev/null and b/fonts/MiniwiFontOutline/257D.png differ diff --git a/fonts/MiniwiFontOutline/257E.png b/fonts/MiniwiFontOutline/257E.png new file mode 100644 index 000000000..c8278178c Binary files /dev/null and b/fonts/MiniwiFontOutline/257E.png differ diff --git a/fonts/MiniwiFontOutline/257F.png b/fonts/MiniwiFontOutline/257F.png new file mode 100644 index 000000000..e8bc24059 Binary files /dev/null and b/fonts/MiniwiFontOutline/257F.png differ diff --git a/fonts/MiniwiFontOutline/2580.png b/fonts/MiniwiFontOutline/2580.png new file mode 100644 index 000000000..b21f08cd9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2580.png differ diff --git a/fonts/MiniwiFontOutline/2581.png b/fonts/MiniwiFontOutline/2581.png new file mode 100644 index 000000000..927308800 Binary files /dev/null and b/fonts/MiniwiFontOutline/2581.png differ diff --git a/fonts/MiniwiFontOutline/2582.png b/fonts/MiniwiFontOutline/2582.png new file mode 100644 index 000000000..bfe001a14 Binary files /dev/null and b/fonts/MiniwiFontOutline/2582.png differ diff --git a/fonts/MiniwiFontOutline/2583.png b/fonts/MiniwiFontOutline/2583.png new file mode 100644 index 000000000..9d442eb95 Binary files /dev/null and b/fonts/MiniwiFontOutline/2583.png differ diff --git a/fonts/MiniwiFontOutline/2584.png b/fonts/MiniwiFontOutline/2584.png new file mode 100644 index 000000000..afc7c62d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/2584.png differ diff --git a/fonts/MiniwiFontOutline/2585.png b/fonts/MiniwiFontOutline/2585.png new file mode 100644 index 000000000..efee2f5ec Binary files /dev/null and b/fonts/MiniwiFontOutline/2585.png differ diff --git a/fonts/MiniwiFontOutline/2586.png b/fonts/MiniwiFontOutline/2586.png new file mode 100644 index 000000000..1556fb1a5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2586.png differ diff --git a/fonts/MiniwiFontOutline/2587.png b/fonts/MiniwiFontOutline/2587.png new file mode 100644 index 000000000..b17cd9cb5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2587.png differ diff --git a/fonts/MiniwiFontOutline/2588.png b/fonts/MiniwiFontOutline/2588.png new file mode 100644 index 000000000..7993cca40 Binary files /dev/null and b/fonts/MiniwiFontOutline/2588.png differ diff --git a/fonts/MiniwiFontOutline/2589.png b/fonts/MiniwiFontOutline/2589.png new file mode 100644 index 000000000..a5c52db4e Binary files /dev/null and b/fonts/MiniwiFontOutline/2589.png differ diff --git a/fonts/MiniwiFontOutline/258A.png b/fonts/MiniwiFontOutline/258A.png new file mode 100644 index 000000000..0516d6135 Binary files /dev/null and b/fonts/MiniwiFontOutline/258A.png differ diff --git a/fonts/MiniwiFontOutline/258B.png b/fonts/MiniwiFontOutline/258B.png new file mode 100644 index 000000000..2a68bf893 Binary files /dev/null and b/fonts/MiniwiFontOutline/258B.png differ diff --git a/fonts/MiniwiFontOutline/258C.png b/fonts/MiniwiFontOutline/258C.png new file mode 100644 index 000000000..fdb01a6df Binary files /dev/null and b/fonts/MiniwiFontOutline/258C.png differ diff --git a/fonts/MiniwiFontOutline/258D.png b/fonts/MiniwiFontOutline/258D.png new file mode 100644 index 000000000..bf426b266 Binary files /dev/null and b/fonts/MiniwiFontOutline/258D.png differ diff --git a/fonts/MiniwiFontOutline/258E.png b/fonts/MiniwiFontOutline/258E.png new file mode 100644 index 000000000..aa512e100 Binary files /dev/null and b/fonts/MiniwiFontOutline/258E.png differ diff --git a/fonts/MiniwiFontOutline/258F.png b/fonts/MiniwiFontOutline/258F.png new file mode 100644 index 000000000..59221fdd9 Binary files /dev/null and b/fonts/MiniwiFontOutline/258F.png differ diff --git a/fonts/MiniwiFontOutline/2590.png b/fonts/MiniwiFontOutline/2590.png new file mode 100644 index 000000000..d7e50f768 Binary files /dev/null and b/fonts/MiniwiFontOutline/2590.png differ diff --git a/fonts/MiniwiFontOutline/2591.png b/fonts/MiniwiFontOutline/2591.png new file mode 100644 index 000000000..9a68b192b Binary files /dev/null and b/fonts/MiniwiFontOutline/2591.png differ diff --git a/fonts/MiniwiFontOutline/2592.png b/fonts/MiniwiFontOutline/2592.png new file mode 100644 index 000000000..e1660e6fd Binary files /dev/null and b/fonts/MiniwiFontOutline/2592.png differ diff --git a/fonts/MiniwiFontOutline/2593.png b/fonts/MiniwiFontOutline/2593.png new file mode 100644 index 000000000..6181af7a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/2593.png differ diff --git a/fonts/MiniwiFontOutline/2594.png b/fonts/MiniwiFontOutline/2594.png new file mode 100644 index 000000000..ee09e0fcb Binary files /dev/null and b/fonts/MiniwiFontOutline/2594.png differ diff --git a/fonts/MiniwiFontOutline/2595.png b/fonts/MiniwiFontOutline/2595.png new file mode 100644 index 000000000..505d78f6f Binary files /dev/null and b/fonts/MiniwiFontOutline/2595.png differ diff --git a/fonts/MiniwiFontOutline/2596.png b/fonts/MiniwiFontOutline/2596.png new file mode 100644 index 000000000..51ce1ff54 Binary files /dev/null and b/fonts/MiniwiFontOutline/2596.png differ diff --git a/fonts/MiniwiFontOutline/2597.png b/fonts/MiniwiFontOutline/2597.png new file mode 100644 index 000000000..ac372f04c Binary files /dev/null and b/fonts/MiniwiFontOutline/2597.png differ diff --git a/fonts/MiniwiFontOutline/2598.png b/fonts/MiniwiFontOutline/2598.png new file mode 100644 index 000000000..083536f13 Binary files /dev/null and b/fonts/MiniwiFontOutline/2598.png differ diff --git a/fonts/MiniwiFontOutline/2599.png b/fonts/MiniwiFontOutline/2599.png new file mode 100644 index 000000000..3f4e410dc Binary files /dev/null and b/fonts/MiniwiFontOutline/2599.png differ diff --git a/fonts/MiniwiFontOutline/259A.png b/fonts/MiniwiFontOutline/259A.png new file mode 100644 index 000000000..49b2cb366 Binary files /dev/null and b/fonts/MiniwiFontOutline/259A.png differ diff --git a/fonts/MiniwiFontOutline/259B.png b/fonts/MiniwiFontOutline/259B.png new file mode 100644 index 000000000..7e887d0cf Binary files /dev/null and b/fonts/MiniwiFontOutline/259B.png differ diff --git a/fonts/MiniwiFontOutline/259C.png b/fonts/MiniwiFontOutline/259C.png new file mode 100644 index 000000000..7b659f816 Binary files /dev/null and b/fonts/MiniwiFontOutline/259C.png differ diff --git a/fonts/MiniwiFontOutline/259D.png b/fonts/MiniwiFontOutline/259D.png new file mode 100644 index 000000000..e0d313f30 Binary files /dev/null and b/fonts/MiniwiFontOutline/259D.png differ diff --git a/fonts/MiniwiFontOutline/259E.png b/fonts/MiniwiFontOutline/259E.png new file mode 100644 index 000000000..fca2c3a2b Binary files /dev/null and b/fonts/MiniwiFontOutline/259E.png differ diff --git a/fonts/MiniwiFontOutline/259F.png b/fonts/MiniwiFontOutline/259F.png new file mode 100644 index 000000000..b15c9b1e6 Binary files /dev/null and b/fonts/MiniwiFontOutline/259F.png differ diff --git a/fonts/MiniwiFontOutline/25A0.png b/fonts/MiniwiFontOutline/25A0.png new file mode 100644 index 000000000..2089e76df Binary files /dev/null and b/fonts/MiniwiFontOutline/25A0.png differ diff --git a/fonts/MiniwiFontOutline/25CA.png b/fonts/MiniwiFontOutline/25CA.png new file mode 100644 index 000000000..4dbe959e8 Binary files /dev/null and b/fonts/MiniwiFontOutline/25CA.png differ diff --git a/fonts/MiniwiFontOutline/2660.png b/fonts/MiniwiFontOutline/2660.png new file mode 100644 index 000000000..3104d9d30 Binary files /dev/null and b/fonts/MiniwiFontOutline/2660.png differ diff --git a/fonts/MiniwiFontOutline/2663.png b/fonts/MiniwiFontOutline/2663.png new file mode 100644 index 000000000..4d0e377d3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2663.png differ diff --git a/fonts/MiniwiFontOutline/2665.png b/fonts/MiniwiFontOutline/2665.png new file mode 100644 index 000000000..829f4d098 Binary files /dev/null and b/fonts/MiniwiFontOutline/2665.png differ diff --git a/fonts/MiniwiFontOutline/2666.png b/fonts/MiniwiFontOutline/2666.png new file mode 100644 index 000000000..3581fe832 Binary files /dev/null and b/fonts/MiniwiFontOutline/2666.png differ diff --git a/fonts/MiniwiFontOutline/2801.png b/fonts/MiniwiFontOutline/2801.png new file mode 100644 index 000000000..63f9ebbea Binary files /dev/null and b/fonts/MiniwiFontOutline/2801.png differ diff --git a/fonts/MiniwiFontOutline/2802.png b/fonts/MiniwiFontOutline/2802.png new file mode 100644 index 000000000..f8363753a Binary files /dev/null and b/fonts/MiniwiFontOutline/2802.png differ diff --git a/fonts/MiniwiFontOutline/2803.png b/fonts/MiniwiFontOutline/2803.png new file mode 100644 index 000000000..c3f8ba4a2 Binary files /dev/null and b/fonts/MiniwiFontOutline/2803.png differ diff --git a/fonts/MiniwiFontOutline/2804.png b/fonts/MiniwiFontOutline/2804.png new file mode 100644 index 000000000..ee76c1b6b Binary files /dev/null and b/fonts/MiniwiFontOutline/2804.png differ diff --git a/fonts/MiniwiFontOutline/2805.png b/fonts/MiniwiFontOutline/2805.png new file mode 100644 index 000000000..29e76da68 Binary files /dev/null and b/fonts/MiniwiFontOutline/2805.png differ diff --git a/fonts/MiniwiFontOutline/2806.png b/fonts/MiniwiFontOutline/2806.png new file mode 100644 index 000000000..5031f9262 Binary files /dev/null and b/fonts/MiniwiFontOutline/2806.png differ diff --git a/fonts/MiniwiFontOutline/2807.png b/fonts/MiniwiFontOutline/2807.png new file mode 100644 index 000000000..fe736570e Binary files /dev/null and b/fonts/MiniwiFontOutline/2807.png differ diff --git a/fonts/MiniwiFontOutline/2808.png b/fonts/MiniwiFontOutline/2808.png new file mode 100644 index 000000000..9de01497e Binary files /dev/null and b/fonts/MiniwiFontOutline/2808.png differ diff --git a/fonts/MiniwiFontOutline/2809.png b/fonts/MiniwiFontOutline/2809.png new file mode 100644 index 000000000..631a4aa30 Binary files /dev/null and b/fonts/MiniwiFontOutline/2809.png differ diff --git a/fonts/MiniwiFontOutline/280A.png b/fonts/MiniwiFontOutline/280A.png new file mode 100644 index 000000000..01258a86b Binary files /dev/null and b/fonts/MiniwiFontOutline/280A.png differ diff --git a/fonts/MiniwiFontOutline/280B.png b/fonts/MiniwiFontOutline/280B.png new file mode 100644 index 000000000..80d342a95 Binary files /dev/null and b/fonts/MiniwiFontOutline/280B.png differ diff --git a/fonts/MiniwiFontOutline/280C.png b/fonts/MiniwiFontOutline/280C.png new file mode 100644 index 000000000..7a0dc64e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/280C.png differ diff --git a/fonts/MiniwiFontOutline/280D.png b/fonts/MiniwiFontOutline/280D.png new file mode 100644 index 000000000..e051609eb Binary files /dev/null and b/fonts/MiniwiFontOutline/280D.png differ diff --git a/fonts/MiniwiFontOutline/280E.png b/fonts/MiniwiFontOutline/280E.png new file mode 100644 index 000000000..3bb630a53 Binary files /dev/null and b/fonts/MiniwiFontOutline/280E.png differ diff --git a/fonts/MiniwiFontOutline/280F.png b/fonts/MiniwiFontOutline/280F.png new file mode 100644 index 000000000..a2165a5a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/280F.png differ diff --git a/fonts/MiniwiFontOutline/2810.png b/fonts/MiniwiFontOutline/2810.png new file mode 100644 index 000000000..222979cf0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2810.png differ diff --git a/fonts/MiniwiFontOutline/2811.png b/fonts/MiniwiFontOutline/2811.png new file mode 100644 index 000000000..ed0f6939c Binary files /dev/null and b/fonts/MiniwiFontOutline/2811.png differ diff --git a/fonts/MiniwiFontOutline/2812.png b/fonts/MiniwiFontOutline/2812.png new file mode 100644 index 000000000..49947fe61 Binary files /dev/null and b/fonts/MiniwiFontOutline/2812.png differ diff --git a/fonts/MiniwiFontOutline/2813.png b/fonts/MiniwiFontOutline/2813.png new file mode 100644 index 000000000..e5577c631 Binary files /dev/null and b/fonts/MiniwiFontOutline/2813.png differ diff --git a/fonts/MiniwiFontOutline/2814.png b/fonts/MiniwiFontOutline/2814.png new file mode 100644 index 000000000..350035a92 Binary files /dev/null and b/fonts/MiniwiFontOutline/2814.png differ diff --git a/fonts/MiniwiFontOutline/2815.png b/fonts/MiniwiFontOutline/2815.png new file mode 100644 index 000000000..33b2aa7da Binary files /dev/null and b/fonts/MiniwiFontOutline/2815.png differ diff --git a/fonts/MiniwiFontOutline/2816.png b/fonts/MiniwiFontOutline/2816.png new file mode 100644 index 000000000..ae1cfc16a Binary files /dev/null and b/fonts/MiniwiFontOutline/2816.png differ diff --git a/fonts/MiniwiFontOutline/2817.png b/fonts/MiniwiFontOutline/2817.png new file mode 100644 index 000000000..ae1cfc16a Binary files /dev/null and b/fonts/MiniwiFontOutline/2817.png differ diff --git a/fonts/MiniwiFontOutline/2818.png b/fonts/MiniwiFontOutline/2818.png new file mode 100644 index 000000000..c3f8ba4a2 Binary files /dev/null and b/fonts/MiniwiFontOutline/2818.png differ diff --git a/fonts/MiniwiFontOutline/2819.png b/fonts/MiniwiFontOutline/2819.png new file mode 100644 index 000000000..2620d0a5b Binary files /dev/null and b/fonts/MiniwiFontOutline/2819.png differ diff --git a/fonts/MiniwiFontOutline/281A.png b/fonts/MiniwiFontOutline/281A.png new file mode 100644 index 000000000..93be45a7c Binary files /dev/null and b/fonts/MiniwiFontOutline/281A.png differ diff --git a/fonts/MiniwiFontOutline/281B.png b/fonts/MiniwiFontOutline/281B.png new file mode 100644 index 000000000..849c0f4cc Binary files /dev/null and b/fonts/MiniwiFontOutline/281B.png differ diff --git a/fonts/MiniwiFontOutline/281C.png b/fonts/MiniwiFontOutline/281C.png new file mode 100644 index 000000000..3d7671b21 Binary files /dev/null and b/fonts/MiniwiFontOutline/281C.png differ diff --git a/fonts/MiniwiFontOutline/281D.png b/fonts/MiniwiFontOutline/281D.png new file mode 100644 index 000000000..1aec98399 Binary files /dev/null and b/fonts/MiniwiFontOutline/281D.png differ diff --git a/fonts/MiniwiFontOutline/281E.png b/fonts/MiniwiFontOutline/281E.png new file mode 100644 index 000000000..bf718cf50 Binary files /dev/null and b/fonts/MiniwiFontOutline/281E.png differ diff --git a/fonts/MiniwiFontOutline/281F.png b/fonts/MiniwiFontOutline/281F.png new file mode 100644 index 000000000..d3e85765a Binary files /dev/null and b/fonts/MiniwiFontOutline/281F.png differ diff --git a/fonts/MiniwiFontOutline/2820.png b/fonts/MiniwiFontOutline/2820.png new file mode 100644 index 000000000..80c620397 Binary files /dev/null and b/fonts/MiniwiFontOutline/2820.png differ diff --git a/fonts/MiniwiFontOutline/2821.png b/fonts/MiniwiFontOutline/2821.png new file mode 100644 index 000000000..56245964d Binary files /dev/null and b/fonts/MiniwiFontOutline/2821.png differ diff --git a/fonts/MiniwiFontOutline/2822.png b/fonts/MiniwiFontOutline/2822.png new file mode 100644 index 000000000..12c994221 Binary files /dev/null and b/fonts/MiniwiFontOutline/2822.png differ diff --git a/fonts/MiniwiFontOutline/2823.png b/fonts/MiniwiFontOutline/2823.png new file mode 100644 index 000000000..1c35a8020 Binary files /dev/null and b/fonts/MiniwiFontOutline/2823.png differ diff --git a/fonts/MiniwiFontOutline/2824.png b/fonts/MiniwiFontOutline/2824.png new file mode 100644 index 000000000..03f5e0a7e Binary files /dev/null and b/fonts/MiniwiFontOutline/2824.png differ diff --git a/fonts/MiniwiFontOutline/2825.png b/fonts/MiniwiFontOutline/2825.png new file mode 100644 index 000000000..194014efa Binary files /dev/null and b/fonts/MiniwiFontOutline/2825.png differ diff --git a/fonts/MiniwiFontOutline/2826.png b/fonts/MiniwiFontOutline/2826.png new file mode 100644 index 000000000..62de12d09 Binary files /dev/null and b/fonts/MiniwiFontOutline/2826.png differ diff --git a/fonts/MiniwiFontOutline/2827.png b/fonts/MiniwiFontOutline/2827.png new file mode 100644 index 000000000..d8ff0d514 Binary files /dev/null and b/fonts/MiniwiFontOutline/2827.png differ diff --git a/fonts/MiniwiFontOutline/2828.png b/fonts/MiniwiFontOutline/2828.png new file mode 100644 index 000000000..0f1905019 Binary files /dev/null and b/fonts/MiniwiFontOutline/2828.png differ diff --git a/fonts/MiniwiFontOutline/2829.png b/fonts/MiniwiFontOutline/2829.png new file mode 100644 index 000000000..bc3c4ad5a Binary files /dev/null and b/fonts/MiniwiFontOutline/2829.png differ diff --git a/fonts/MiniwiFontOutline/282A.png b/fonts/MiniwiFontOutline/282A.png new file mode 100644 index 000000000..66bd32482 Binary files /dev/null and b/fonts/MiniwiFontOutline/282A.png differ diff --git a/fonts/MiniwiFontOutline/282B.png b/fonts/MiniwiFontOutline/282B.png new file mode 100644 index 000000000..cda0e23ec Binary files /dev/null and b/fonts/MiniwiFontOutline/282B.png differ diff --git a/fonts/MiniwiFontOutline/282C.png b/fonts/MiniwiFontOutline/282C.png new file mode 100644 index 000000000..275a62d23 Binary files /dev/null and b/fonts/MiniwiFontOutline/282C.png differ diff --git a/fonts/MiniwiFontOutline/282D.png b/fonts/MiniwiFontOutline/282D.png new file mode 100644 index 000000000..44e4bc0bb Binary files /dev/null and b/fonts/MiniwiFontOutline/282D.png differ diff --git a/fonts/MiniwiFontOutline/282E.png b/fonts/MiniwiFontOutline/282E.png new file mode 100644 index 000000000..acb456821 Binary files /dev/null and b/fonts/MiniwiFontOutline/282E.png differ diff --git a/fonts/MiniwiFontOutline/282F.png b/fonts/MiniwiFontOutline/282F.png new file mode 100644 index 000000000..f7424572b Binary files /dev/null and b/fonts/MiniwiFontOutline/282F.png differ diff --git a/fonts/MiniwiFontOutline/2830.png b/fonts/MiniwiFontOutline/2830.png new file mode 100644 index 000000000..68416f942 Binary files /dev/null and b/fonts/MiniwiFontOutline/2830.png differ diff --git a/fonts/MiniwiFontOutline/2831.png b/fonts/MiniwiFontOutline/2831.png new file mode 100644 index 000000000..37ba7f05c Binary files /dev/null and b/fonts/MiniwiFontOutline/2831.png differ diff --git a/fonts/MiniwiFontOutline/2832.png b/fonts/MiniwiFontOutline/2832.png new file mode 100644 index 000000000..408386742 Binary files /dev/null and b/fonts/MiniwiFontOutline/2832.png differ diff --git a/fonts/MiniwiFontOutline/2833.png b/fonts/MiniwiFontOutline/2833.png new file mode 100644 index 000000000..e8258338c Binary files /dev/null and b/fonts/MiniwiFontOutline/2833.png differ diff --git a/fonts/MiniwiFontOutline/2834.png b/fonts/MiniwiFontOutline/2834.png new file mode 100644 index 000000000..8852c547c Binary files /dev/null and b/fonts/MiniwiFontOutline/2834.png differ diff --git a/fonts/MiniwiFontOutline/2835.png b/fonts/MiniwiFontOutline/2835.png new file mode 100644 index 000000000..65b3aeff0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2835.png differ diff --git a/fonts/MiniwiFontOutline/2836.png b/fonts/MiniwiFontOutline/2836.png new file mode 100644 index 000000000..db15ad630 Binary files /dev/null and b/fonts/MiniwiFontOutline/2836.png differ diff --git a/fonts/MiniwiFontOutline/2837.png b/fonts/MiniwiFontOutline/2837.png new file mode 100644 index 000000000..010fe11f6 Binary files /dev/null and b/fonts/MiniwiFontOutline/2837.png differ diff --git a/fonts/MiniwiFontOutline/2838.png b/fonts/MiniwiFontOutline/2838.png new file mode 100644 index 000000000..57377d181 Binary files /dev/null and b/fonts/MiniwiFontOutline/2838.png differ diff --git a/fonts/MiniwiFontOutline/2839.png b/fonts/MiniwiFontOutline/2839.png new file mode 100644 index 000000000..3bb8d3ace Binary files /dev/null and b/fonts/MiniwiFontOutline/2839.png differ diff --git a/fonts/MiniwiFontOutline/283A.png b/fonts/MiniwiFontOutline/283A.png new file mode 100644 index 000000000..4a9165f69 Binary files /dev/null and b/fonts/MiniwiFontOutline/283A.png differ diff --git a/fonts/MiniwiFontOutline/283B.png b/fonts/MiniwiFontOutline/283B.png new file mode 100644 index 000000000..ca11c90d5 Binary files /dev/null and b/fonts/MiniwiFontOutline/283B.png differ diff --git a/fonts/MiniwiFontOutline/283C.png b/fonts/MiniwiFontOutline/283C.png new file mode 100644 index 000000000..1c520d923 Binary files /dev/null and b/fonts/MiniwiFontOutline/283C.png differ diff --git a/fonts/MiniwiFontOutline/283D.png b/fonts/MiniwiFontOutline/283D.png new file mode 100644 index 000000000..ddb470c59 Binary files /dev/null and b/fonts/MiniwiFontOutline/283D.png differ diff --git a/fonts/MiniwiFontOutline/283E.png b/fonts/MiniwiFontOutline/283E.png new file mode 100644 index 000000000..c2ab3eaa9 Binary files /dev/null and b/fonts/MiniwiFontOutline/283E.png differ diff --git a/fonts/MiniwiFontOutline/283F.png b/fonts/MiniwiFontOutline/283F.png new file mode 100644 index 000000000..ac0c74779 Binary files /dev/null and b/fonts/MiniwiFontOutline/283F.png differ diff --git a/fonts/MiniwiFontOutline/2840.png b/fonts/MiniwiFontOutline/2840.png new file mode 100644 index 000000000..b432e54a7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2840.png differ diff --git a/fonts/MiniwiFontOutline/2841.png b/fonts/MiniwiFontOutline/2841.png new file mode 100644 index 000000000..78af2be98 Binary files /dev/null and b/fonts/MiniwiFontOutline/2841.png differ diff --git a/fonts/MiniwiFontOutline/2842.png b/fonts/MiniwiFontOutline/2842.png new file mode 100644 index 000000000..dfcdc9168 Binary files /dev/null and b/fonts/MiniwiFontOutline/2842.png differ diff --git a/fonts/MiniwiFontOutline/2843.png b/fonts/MiniwiFontOutline/2843.png new file mode 100644 index 000000000..83aa63c0e Binary files /dev/null and b/fonts/MiniwiFontOutline/2843.png differ diff --git a/fonts/MiniwiFontOutline/2844.png b/fonts/MiniwiFontOutline/2844.png new file mode 100644 index 000000000..7b13d8bfa Binary files /dev/null and b/fonts/MiniwiFontOutline/2844.png differ diff --git a/fonts/MiniwiFontOutline/2845.png b/fonts/MiniwiFontOutline/2845.png new file mode 100644 index 000000000..3e530f187 Binary files /dev/null and b/fonts/MiniwiFontOutline/2845.png differ diff --git a/fonts/MiniwiFontOutline/2846.png b/fonts/MiniwiFontOutline/2846.png new file mode 100644 index 000000000..64a1eca08 Binary files /dev/null and b/fonts/MiniwiFontOutline/2846.png differ diff --git a/fonts/MiniwiFontOutline/2847.png b/fonts/MiniwiFontOutline/2847.png new file mode 100644 index 000000000..59221fdd9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2847.png differ diff --git a/fonts/MiniwiFontOutline/2848.png b/fonts/MiniwiFontOutline/2848.png new file mode 100644 index 000000000..9890dc6a9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2848.png differ diff --git a/fonts/MiniwiFontOutline/2849.png b/fonts/MiniwiFontOutline/2849.png new file mode 100644 index 000000000..9890dc6a9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2849.png differ diff --git a/fonts/MiniwiFontOutline/284A.png b/fonts/MiniwiFontOutline/284A.png new file mode 100644 index 000000000..8168a4f6f Binary files /dev/null and b/fonts/MiniwiFontOutline/284A.png differ diff --git a/fonts/MiniwiFontOutline/284B.png b/fonts/MiniwiFontOutline/284B.png new file mode 100644 index 000000000..9e61002ba Binary files /dev/null and b/fonts/MiniwiFontOutline/284B.png differ diff --git a/fonts/MiniwiFontOutline/284C.png b/fonts/MiniwiFontOutline/284C.png new file mode 100644 index 000000000..e84e3a691 Binary files /dev/null and b/fonts/MiniwiFontOutline/284C.png differ diff --git a/fonts/MiniwiFontOutline/284D.png b/fonts/MiniwiFontOutline/284D.png new file mode 100644 index 000000000..e7b1baf87 Binary files /dev/null and b/fonts/MiniwiFontOutline/284D.png differ diff --git a/fonts/MiniwiFontOutline/284E.png b/fonts/MiniwiFontOutline/284E.png new file mode 100644 index 000000000..3dfdf7574 Binary files /dev/null and b/fonts/MiniwiFontOutline/284E.png differ diff --git a/fonts/MiniwiFontOutline/284F.png b/fonts/MiniwiFontOutline/284F.png new file mode 100644 index 000000000..dd649642a Binary files /dev/null and b/fonts/MiniwiFontOutline/284F.png differ diff --git a/fonts/MiniwiFontOutline/2850.png b/fonts/MiniwiFontOutline/2850.png new file mode 100644 index 000000000..3209fae5c Binary files /dev/null and b/fonts/MiniwiFontOutline/2850.png differ diff --git a/fonts/MiniwiFontOutline/2851.png b/fonts/MiniwiFontOutline/2851.png new file mode 100644 index 000000000..0e71363ef Binary files /dev/null and b/fonts/MiniwiFontOutline/2851.png differ diff --git a/fonts/MiniwiFontOutline/2852.png b/fonts/MiniwiFontOutline/2852.png new file mode 100644 index 000000000..39076378c Binary files /dev/null and b/fonts/MiniwiFontOutline/2852.png differ diff --git a/fonts/MiniwiFontOutline/2853.png b/fonts/MiniwiFontOutline/2853.png new file mode 100644 index 000000000..39076378c Binary files /dev/null and b/fonts/MiniwiFontOutline/2853.png differ diff --git a/fonts/MiniwiFontOutline/2854.png b/fonts/MiniwiFontOutline/2854.png new file mode 100644 index 000000000..20d4231b0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2854.png differ diff --git a/fonts/MiniwiFontOutline/2855.png b/fonts/MiniwiFontOutline/2855.png new file mode 100644 index 000000000..7b3029dcd Binary files /dev/null and b/fonts/MiniwiFontOutline/2855.png differ diff --git a/fonts/MiniwiFontOutline/2856.png b/fonts/MiniwiFontOutline/2856.png new file mode 100644 index 000000000..9338b7632 Binary files /dev/null and b/fonts/MiniwiFontOutline/2856.png differ diff --git a/fonts/MiniwiFontOutline/2857.png b/fonts/MiniwiFontOutline/2857.png new file mode 100644 index 000000000..913667872 Binary files /dev/null and b/fonts/MiniwiFontOutline/2857.png differ diff --git a/fonts/MiniwiFontOutline/2858.png b/fonts/MiniwiFontOutline/2858.png new file mode 100644 index 000000000..7a13ed384 Binary files /dev/null and b/fonts/MiniwiFontOutline/2858.png differ diff --git a/fonts/MiniwiFontOutline/2859.png b/fonts/MiniwiFontOutline/2859.png new file mode 100644 index 000000000..1a4c6380a Binary files /dev/null and b/fonts/MiniwiFontOutline/2859.png differ diff --git a/fonts/MiniwiFontOutline/285A.png b/fonts/MiniwiFontOutline/285A.png new file mode 100644 index 000000000..052a30dfe Binary files /dev/null and b/fonts/MiniwiFontOutline/285A.png differ diff --git a/fonts/MiniwiFontOutline/285B.png b/fonts/MiniwiFontOutline/285B.png new file mode 100644 index 000000000..da4bb987f Binary files /dev/null and b/fonts/MiniwiFontOutline/285B.png differ diff --git a/fonts/MiniwiFontOutline/285C.png b/fonts/MiniwiFontOutline/285C.png new file mode 100644 index 000000000..92576f07a Binary files /dev/null and b/fonts/MiniwiFontOutline/285C.png differ diff --git a/fonts/MiniwiFontOutline/285D.png b/fonts/MiniwiFontOutline/285D.png new file mode 100644 index 000000000..25801d778 Binary files /dev/null and b/fonts/MiniwiFontOutline/285D.png differ diff --git a/fonts/MiniwiFontOutline/285E.png b/fonts/MiniwiFontOutline/285E.png new file mode 100644 index 000000000..052a30dfe Binary files /dev/null and b/fonts/MiniwiFontOutline/285E.png differ diff --git a/fonts/MiniwiFontOutline/285F.png b/fonts/MiniwiFontOutline/285F.png new file mode 100644 index 000000000..c7bf8a482 Binary files /dev/null and b/fonts/MiniwiFontOutline/285F.png differ diff --git a/fonts/MiniwiFontOutline/2860.png b/fonts/MiniwiFontOutline/2860.png new file mode 100644 index 000000000..8350ca477 Binary files /dev/null and b/fonts/MiniwiFontOutline/2860.png differ diff --git a/fonts/MiniwiFontOutline/2861.png b/fonts/MiniwiFontOutline/2861.png new file mode 100644 index 000000000..34c7263cf Binary files /dev/null and b/fonts/MiniwiFontOutline/2861.png differ diff --git a/fonts/MiniwiFontOutline/2862.png b/fonts/MiniwiFontOutline/2862.png new file mode 100644 index 000000000..fffdac09e Binary files /dev/null and b/fonts/MiniwiFontOutline/2862.png differ diff --git a/fonts/MiniwiFontOutline/2863.png b/fonts/MiniwiFontOutline/2863.png new file mode 100644 index 000000000..8f3f84b56 Binary files /dev/null and b/fonts/MiniwiFontOutline/2863.png differ diff --git a/fonts/MiniwiFontOutline/2864.png b/fonts/MiniwiFontOutline/2864.png new file mode 100644 index 000000000..64de72b1d Binary files /dev/null and b/fonts/MiniwiFontOutline/2864.png differ diff --git a/fonts/MiniwiFontOutline/2865.png b/fonts/MiniwiFontOutline/2865.png new file mode 100644 index 000000000..250fed6cd Binary files /dev/null and b/fonts/MiniwiFontOutline/2865.png differ diff --git a/fonts/MiniwiFontOutline/2866.png b/fonts/MiniwiFontOutline/2866.png new file mode 100644 index 000000000..4905e34a6 Binary files /dev/null and b/fonts/MiniwiFontOutline/2866.png differ diff --git a/fonts/MiniwiFontOutline/2867.png b/fonts/MiniwiFontOutline/2867.png new file mode 100644 index 000000000..41bc308d9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2867.png differ diff --git a/fonts/MiniwiFontOutline/2868.png b/fonts/MiniwiFontOutline/2868.png new file mode 100644 index 000000000..50be25cf5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2868.png differ diff --git a/fonts/MiniwiFontOutline/2869.png b/fonts/MiniwiFontOutline/2869.png new file mode 100644 index 000000000..b5366fea2 Binary files /dev/null and b/fonts/MiniwiFontOutline/2869.png differ diff --git a/fonts/MiniwiFontOutline/286A.png b/fonts/MiniwiFontOutline/286A.png new file mode 100644 index 000000000..461b54b8c Binary files /dev/null and b/fonts/MiniwiFontOutline/286A.png differ diff --git a/fonts/MiniwiFontOutline/286B.png b/fonts/MiniwiFontOutline/286B.png new file mode 100644 index 000000000..849243c3f Binary files /dev/null and b/fonts/MiniwiFontOutline/286B.png differ diff --git a/fonts/MiniwiFontOutline/286C.png b/fonts/MiniwiFontOutline/286C.png new file mode 100644 index 000000000..4f0031091 Binary files /dev/null and b/fonts/MiniwiFontOutline/286C.png differ diff --git a/fonts/MiniwiFontOutline/286D.png b/fonts/MiniwiFontOutline/286D.png new file mode 100644 index 000000000..e14e9a25b Binary files /dev/null and b/fonts/MiniwiFontOutline/286D.png differ diff --git a/fonts/MiniwiFontOutline/286E.png b/fonts/MiniwiFontOutline/286E.png new file mode 100644 index 000000000..211a65b8c Binary files /dev/null and b/fonts/MiniwiFontOutline/286E.png differ diff --git a/fonts/MiniwiFontOutline/286F.png b/fonts/MiniwiFontOutline/286F.png new file mode 100644 index 000000000..ddffc57a5 Binary files /dev/null and b/fonts/MiniwiFontOutline/286F.png differ diff --git a/fonts/MiniwiFontOutline/2870.png b/fonts/MiniwiFontOutline/2870.png new file mode 100644 index 000000000..7d4de9423 Binary files /dev/null and b/fonts/MiniwiFontOutline/2870.png differ diff --git a/fonts/MiniwiFontOutline/2871.png b/fonts/MiniwiFontOutline/2871.png new file mode 100644 index 000000000..0dc22eef6 Binary files /dev/null and b/fonts/MiniwiFontOutline/2871.png differ diff --git a/fonts/MiniwiFontOutline/2872.png b/fonts/MiniwiFontOutline/2872.png new file mode 100644 index 000000000..4349fb7c5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2872.png differ diff --git a/fonts/MiniwiFontOutline/2873.png b/fonts/MiniwiFontOutline/2873.png new file mode 100644 index 000000000..e7430e716 Binary files /dev/null and b/fonts/MiniwiFontOutline/2873.png differ diff --git a/fonts/MiniwiFontOutline/2874.png b/fonts/MiniwiFontOutline/2874.png new file mode 100644 index 000000000..353b094e3 Binary files /dev/null and b/fonts/MiniwiFontOutline/2874.png differ diff --git a/fonts/MiniwiFontOutline/2875.png b/fonts/MiniwiFontOutline/2875.png new file mode 100644 index 000000000..d11fcb357 Binary files /dev/null and b/fonts/MiniwiFontOutline/2875.png differ diff --git a/fonts/MiniwiFontOutline/2876.png b/fonts/MiniwiFontOutline/2876.png new file mode 100644 index 000000000..9e742d3ca Binary files /dev/null and b/fonts/MiniwiFontOutline/2876.png differ diff --git a/fonts/MiniwiFontOutline/2877.png b/fonts/MiniwiFontOutline/2877.png new file mode 100644 index 000000000..6185fd678 Binary files /dev/null and b/fonts/MiniwiFontOutline/2877.png differ diff --git a/fonts/MiniwiFontOutline/2878.png b/fonts/MiniwiFontOutline/2878.png new file mode 100644 index 000000000..b3c3de1f7 Binary files /dev/null and b/fonts/MiniwiFontOutline/2878.png differ diff --git a/fonts/MiniwiFontOutline/2879.png b/fonts/MiniwiFontOutline/2879.png new file mode 100644 index 000000000..a7f3849c2 Binary files /dev/null and b/fonts/MiniwiFontOutline/2879.png differ diff --git a/fonts/MiniwiFontOutline/287A.png b/fonts/MiniwiFontOutline/287A.png new file mode 100644 index 000000000..3c8adc1cc Binary files /dev/null and b/fonts/MiniwiFontOutline/287A.png differ diff --git a/fonts/MiniwiFontOutline/287B.png b/fonts/MiniwiFontOutline/287B.png new file mode 100644 index 000000000..3b6f676b5 Binary files /dev/null and b/fonts/MiniwiFontOutline/287B.png differ diff --git a/fonts/MiniwiFontOutline/287C.png b/fonts/MiniwiFontOutline/287C.png new file mode 100644 index 000000000..f8640bcc7 Binary files /dev/null and b/fonts/MiniwiFontOutline/287C.png differ diff --git a/fonts/MiniwiFontOutline/287D.png b/fonts/MiniwiFontOutline/287D.png new file mode 100644 index 000000000..17bb6fbca Binary files /dev/null and b/fonts/MiniwiFontOutline/287D.png differ diff --git a/fonts/MiniwiFontOutline/287E.png b/fonts/MiniwiFontOutline/287E.png new file mode 100644 index 000000000..20bfd02f8 Binary files /dev/null and b/fonts/MiniwiFontOutline/287E.png differ diff --git a/fonts/MiniwiFontOutline/287F.png b/fonts/MiniwiFontOutline/287F.png new file mode 100644 index 000000000..1feb60fe0 Binary files /dev/null and b/fonts/MiniwiFontOutline/287F.png differ diff --git a/fonts/MiniwiFontOutline/2880.png b/fonts/MiniwiFontOutline/2880.png new file mode 100644 index 000000000..69c52c62a Binary files /dev/null and b/fonts/MiniwiFontOutline/2880.png differ diff --git a/fonts/MiniwiFontOutline/2881.png b/fonts/MiniwiFontOutline/2881.png new file mode 100644 index 000000000..54658be2d Binary files /dev/null and b/fonts/MiniwiFontOutline/2881.png differ diff --git a/fonts/MiniwiFontOutline/2882.png b/fonts/MiniwiFontOutline/2882.png new file mode 100644 index 000000000..b04c4b8dc Binary files /dev/null and b/fonts/MiniwiFontOutline/2882.png differ diff --git a/fonts/MiniwiFontOutline/2883.png b/fonts/MiniwiFontOutline/2883.png new file mode 100644 index 000000000..dbdd75455 Binary files /dev/null and b/fonts/MiniwiFontOutline/2883.png differ diff --git a/fonts/MiniwiFontOutline/2884.png b/fonts/MiniwiFontOutline/2884.png new file mode 100644 index 000000000..2b193c8e0 Binary files /dev/null and b/fonts/MiniwiFontOutline/2884.png differ diff --git a/fonts/MiniwiFontOutline/2885.png b/fonts/MiniwiFontOutline/2885.png new file mode 100644 index 000000000..3e7442852 Binary files /dev/null and b/fonts/MiniwiFontOutline/2885.png differ diff --git a/fonts/MiniwiFontOutline/2886.png b/fonts/MiniwiFontOutline/2886.png new file mode 100644 index 000000000..cd7219bbb Binary files /dev/null and b/fonts/MiniwiFontOutline/2886.png differ diff --git a/fonts/MiniwiFontOutline/2887.png b/fonts/MiniwiFontOutline/2887.png new file mode 100644 index 000000000..9facd7280 Binary files /dev/null and b/fonts/MiniwiFontOutline/2887.png differ diff --git a/fonts/MiniwiFontOutline/2888.png b/fonts/MiniwiFontOutline/2888.png new file mode 100644 index 000000000..e91e5c702 Binary files /dev/null and b/fonts/MiniwiFontOutline/2888.png differ diff --git a/fonts/MiniwiFontOutline/2889.png b/fonts/MiniwiFontOutline/2889.png new file mode 100644 index 000000000..2fcfa78c9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2889.png differ diff --git a/fonts/MiniwiFontOutline/288A.png b/fonts/MiniwiFontOutline/288A.png new file mode 100644 index 000000000..cbe3c5616 Binary files /dev/null and b/fonts/MiniwiFontOutline/288A.png differ diff --git a/fonts/MiniwiFontOutline/288B.png b/fonts/MiniwiFontOutline/288B.png new file mode 100644 index 000000000..cbc2145aa Binary files /dev/null and b/fonts/MiniwiFontOutline/288B.png differ diff --git a/fonts/MiniwiFontOutline/288C.png b/fonts/MiniwiFontOutline/288C.png new file mode 100644 index 000000000..d909d8a87 Binary files /dev/null and b/fonts/MiniwiFontOutline/288C.png differ diff --git a/fonts/MiniwiFontOutline/288D.png b/fonts/MiniwiFontOutline/288D.png new file mode 100644 index 000000000..af08799e8 Binary files /dev/null and b/fonts/MiniwiFontOutline/288D.png differ diff --git a/fonts/MiniwiFontOutline/288E.png b/fonts/MiniwiFontOutline/288E.png new file mode 100644 index 000000000..abd15708c Binary files /dev/null and b/fonts/MiniwiFontOutline/288E.png differ diff --git a/fonts/MiniwiFontOutline/288F.png b/fonts/MiniwiFontOutline/288F.png new file mode 100644 index 000000000..4e8ea9c20 Binary files /dev/null and b/fonts/MiniwiFontOutline/288F.png differ diff --git a/fonts/MiniwiFontOutline/2890.png b/fonts/MiniwiFontOutline/2890.png new file mode 100644 index 000000000..0450ca7bd Binary files /dev/null and b/fonts/MiniwiFontOutline/2890.png differ diff --git a/fonts/MiniwiFontOutline/2891.png b/fonts/MiniwiFontOutline/2891.png new file mode 100644 index 000000000..2a42efb0d Binary files /dev/null and b/fonts/MiniwiFontOutline/2891.png differ diff --git a/fonts/MiniwiFontOutline/2892.png b/fonts/MiniwiFontOutline/2892.png new file mode 100644 index 000000000..2609ea984 Binary files /dev/null and b/fonts/MiniwiFontOutline/2892.png differ diff --git a/fonts/MiniwiFontOutline/2893.png b/fonts/MiniwiFontOutline/2893.png new file mode 100644 index 000000000..2609ea984 Binary files /dev/null and b/fonts/MiniwiFontOutline/2893.png differ diff --git a/fonts/MiniwiFontOutline/2894.png b/fonts/MiniwiFontOutline/2894.png new file mode 100644 index 000000000..5dbba326d Binary files /dev/null and b/fonts/MiniwiFontOutline/2894.png differ diff --git a/fonts/MiniwiFontOutline/2895.png b/fonts/MiniwiFontOutline/2895.png new file mode 100644 index 000000000..6ece439d4 Binary files /dev/null and b/fonts/MiniwiFontOutline/2895.png differ diff --git a/fonts/MiniwiFontOutline/2896.png b/fonts/MiniwiFontOutline/2896.png new file mode 100644 index 000000000..3a90bcbf9 Binary files /dev/null and b/fonts/MiniwiFontOutline/2896.png differ diff --git a/fonts/MiniwiFontOutline/2897.png b/fonts/MiniwiFontOutline/2897.png new file mode 100644 index 000000000..5368a3485 Binary files /dev/null and b/fonts/MiniwiFontOutline/2897.png differ diff --git a/fonts/MiniwiFontOutline/2898.png b/fonts/MiniwiFontOutline/2898.png new file mode 100644 index 000000000..b0814051e Binary files /dev/null and b/fonts/MiniwiFontOutline/2898.png differ diff --git a/fonts/MiniwiFontOutline/2899.png b/fonts/MiniwiFontOutline/2899.png new file mode 100644 index 000000000..9249e0281 Binary files /dev/null and b/fonts/MiniwiFontOutline/2899.png differ diff --git a/fonts/MiniwiFontOutline/289A.png b/fonts/MiniwiFontOutline/289A.png new file mode 100644 index 000000000..ee469e5ff Binary files /dev/null and b/fonts/MiniwiFontOutline/289A.png differ diff --git a/fonts/MiniwiFontOutline/289B.png b/fonts/MiniwiFontOutline/289B.png new file mode 100644 index 000000000..6151098a0 Binary files /dev/null and b/fonts/MiniwiFontOutline/289B.png differ diff --git a/fonts/MiniwiFontOutline/289C.png b/fonts/MiniwiFontOutline/289C.png new file mode 100644 index 000000000..7c6228588 Binary files /dev/null and b/fonts/MiniwiFontOutline/289C.png differ diff --git a/fonts/MiniwiFontOutline/289D.png b/fonts/MiniwiFontOutline/289D.png new file mode 100644 index 000000000..60cbc5300 Binary files /dev/null and b/fonts/MiniwiFontOutline/289D.png differ diff --git a/fonts/MiniwiFontOutline/289E.png b/fonts/MiniwiFontOutline/289E.png new file mode 100644 index 000000000..3fe0ead5c Binary files /dev/null and b/fonts/MiniwiFontOutline/289E.png differ diff --git a/fonts/MiniwiFontOutline/289F.png b/fonts/MiniwiFontOutline/289F.png new file mode 100644 index 000000000..2e383b857 Binary files /dev/null and b/fonts/MiniwiFontOutline/289F.png differ diff --git a/fonts/MiniwiFontOutline/28A0.png b/fonts/MiniwiFontOutline/28A0.png new file mode 100644 index 000000000..2b20aae53 Binary files /dev/null and b/fonts/MiniwiFontOutline/28A0.png differ diff --git a/fonts/MiniwiFontOutline/28A1.png b/fonts/MiniwiFontOutline/28A1.png new file mode 100644 index 000000000..24d54bd16 Binary files /dev/null and b/fonts/MiniwiFontOutline/28A1.png differ diff --git a/fonts/MiniwiFontOutline/28A2.png b/fonts/MiniwiFontOutline/28A2.png new file mode 100644 index 000000000..4b008be5f Binary files /dev/null and b/fonts/MiniwiFontOutline/28A2.png differ diff --git a/fonts/MiniwiFontOutline/28A3.png b/fonts/MiniwiFontOutline/28A3.png new file mode 100644 index 000000000..c277ff587 Binary files /dev/null and b/fonts/MiniwiFontOutline/28A3.png differ diff --git a/fonts/MiniwiFontOutline/28A4.png b/fonts/MiniwiFontOutline/28A4.png new file mode 100644 index 000000000..d33db82a1 Binary files /dev/null and b/fonts/MiniwiFontOutline/28A4.png differ diff --git a/fonts/MiniwiFontOutline/28A5.png b/fonts/MiniwiFontOutline/28A5.png new file mode 100644 index 000000000..9eaa035fe Binary files /dev/null and b/fonts/MiniwiFontOutline/28A5.png differ diff --git a/fonts/MiniwiFontOutline/28A6.png b/fonts/MiniwiFontOutline/28A6.png new file mode 100644 index 000000000..db4c5f314 Binary files /dev/null and b/fonts/MiniwiFontOutline/28A6.png differ diff --git a/fonts/MiniwiFontOutline/28A7.png b/fonts/MiniwiFontOutline/28A7.png new file mode 100644 index 000000000..f40147401 Binary files /dev/null and b/fonts/MiniwiFontOutline/28A7.png differ diff --git a/fonts/MiniwiFontOutline/28A8.png b/fonts/MiniwiFontOutline/28A8.png new file mode 100644 index 000000000..72b27ddcb Binary files /dev/null and b/fonts/MiniwiFontOutline/28A8.png differ diff --git a/fonts/MiniwiFontOutline/28A9.png b/fonts/MiniwiFontOutline/28A9.png new file mode 100644 index 000000000..53f859d08 Binary files /dev/null and b/fonts/MiniwiFontOutline/28A9.png differ diff --git a/fonts/MiniwiFontOutline/28AA.png b/fonts/MiniwiFontOutline/28AA.png new file mode 100644 index 000000000..f95983683 Binary files /dev/null and b/fonts/MiniwiFontOutline/28AA.png differ diff --git a/fonts/MiniwiFontOutline/28AB.png b/fonts/MiniwiFontOutline/28AB.png new file mode 100644 index 000000000..d69742fdd Binary files /dev/null and b/fonts/MiniwiFontOutline/28AB.png differ diff --git a/fonts/MiniwiFontOutline/28AC.png b/fonts/MiniwiFontOutline/28AC.png new file mode 100644 index 000000000..bc3ff9e37 Binary files /dev/null and b/fonts/MiniwiFontOutline/28AC.png differ diff --git a/fonts/MiniwiFontOutline/28AD.png b/fonts/MiniwiFontOutline/28AD.png new file mode 100644 index 000000000..1f3254a15 Binary files /dev/null and b/fonts/MiniwiFontOutline/28AD.png differ diff --git a/fonts/MiniwiFontOutline/28AE.png b/fonts/MiniwiFontOutline/28AE.png new file mode 100644 index 000000000..98591ad0a Binary files /dev/null and b/fonts/MiniwiFontOutline/28AE.png differ diff --git a/fonts/MiniwiFontOutline/28AF.png b/fonts/MiniwiFontOutline/28AF.png new file mode 100644 index 000000000..804eacd3f Binary files /dev/null and b/fonts/MiniwiFontOutline/28AF.png differ diff --git a/fonts/MiniwiFontOutline/28B0.png b/fonts/MiniwiFontOutline/28B0.png new file mode 100644 index 000000000..1bcf9db4d Binary files /dev/null and b/fonts/MiniwiFontOutline/28B0.png differ diff --git a/fonts/MiniwiFontOutline/28B1.png b/fonts/MiniwiFontOutline/28B1.png new file mode 100644 index 000000000..339798af1 Binary files /dev/null and b/fonts/MiniwiFontOutline/28B1.png differ diff --git a/fonts/MiniwiFontOutline/28B2.png b/fonts/MiniwiFontOutline/28B2.png new file mode 100644 index 000000000..c54cb2e2c Binary files /dev/null and b/fonts/MiniwiFontOutline/28B2.png differ diff --git a/fonts/MiniwiFontOutline/28B3.png b/fonts/MiniwiFontOutline/28B3.png new file mode 100644 index 000000000..ffe1f326f Binary files /dev/null and b/fonts/MiniwiFontOutline/28B3.png differ diff --git a/fonts/MiniwiFontOutline/28B4.png b/fonts/MiniwiFontOutline/28B4.png new file mode 100644 index 000000000..59e104da3 Binary files /dev/null and b/fonts/MiniwiFontOutline/28B4.png differ diff --git a/fonts/MiniwiFontOutline/28B5.png b/fonts/MiniwiFontOutline/28B5.png new file mode 100644 index 000000000..6672659a7 Binary files /dev/null and b/fonts/MiniwiFontOutline/28B5.png differ diff --git a/fonts/MiniwiFontOutline/28B6.png b/fonts/MiniwiFontOutline/28B6.png new file mode 100644 index 000000000..8974b6f74 Binary files /dev/null and b/fonts/MiniwiFontOutline/28B6.png differ diff --git a/fonts/MiniwiFontOutline/28B7.png b/fonts/MiniwiFontOutline/28B7.png new file mode 100644 index 000000000..d5119df3c Binary files /dev/null and b/fonts/MiniwiFontOutline/28B7.png differ diff --git a/fonts/MiniwiFontOutline/28B8.png b/fonts/MiniwiFontOutline/28B8.png new file mode 100644 index 000000000..48824c4a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/28B8.png differ diff --git a/fonts/MiniwiFontOutline/28B9.png b/fonts/MiniwiFontOutline/28B9.png new file mode 100644 index 000000000..1b3237c8a Binary files /dev/null and b/fonts/MiniwiFontOutline/28B9.png differ diff --git a/fonts/MiniwiFontOutline/28BA.png b/fonts/MiniwiFontOutline/28BA.png new file mode 100644 index 000000000..d4c7a4c1a Binary files /dev/null and b/fonts/MiniwiFontOutline/28BA.png differ diff --git a/fonts/MiniwiFontOutline/28BB.png b/fonts/MiniwiFontOutline/28BB.png new file mode 100644 index 000000000..e5318ec94 Binary files /dev/null and b/fonts/MiniwiFontOutline/28BB.png differ diff --git a/fonts/MiniwiFontOutline/28BC.png b/fonts/MiniwiFontOutline/28BC.png new file mode 100644 index 000000000..7e733f43d Binary files /dev/null and b/fonts/MiniwiFontOutline/28BC.png differ diff --git a/fonts/MiniwiFontOutline/28BD.png b/fonts/MiniwiFontOutline/28BD.png new file mode 100644 index 000000000..ea0966f76 Binary files /dev/null and b/fonts/MiniwiFontOutline/28BD.png differ diff --git a/fonts/MiniwiFontOutline/28BE.png b/fonts/MiniwiFontOutline/28BE.png new file mode 100644 index 000000000..e577e6e89 Binary files /dev/null and b/fonts/MiniwiFontOutline/28BE.png differ diff --git a/fonts/MiniwiFontOutline/28BF.png b/fonts/MiniwiFontOutline/28BF.png new file mode 100644 index 000000000..cdd243cd8 Binary files /dev/null and b/fonts/MiniwiFontOutline/28BF.png differ diff --git a/fonts/MiniwiFontOutline/28C0.png b/fonts/MiniwiFontOutline/28C0.png new file mode 100644 index 000000000..8bd639fbf Binary files /dev/null and b/fonts/MiniwiFontOutline/28C0.png differ diff --git a/fonts/MiniwiFontOutline/28C1.png b/fonts/MiniwiFontOutline/28C1.png new file mode 100644 index 000000000..fbee7a220 Binary files /dev/null and b/fonts/MiniwiFontOutline/28C1.png differ diff --git a/fonts/MiniwiFontOutline/28C2.png b/fonts/MiniwiFontOutline/28C2.png new file mode 100644 index 000000000..87bced550 Binary files /dev/null and b/fonts/MiniwiFontOutline/28C2.png differ diff --git a/fonts/MiniwiFontOutline/28C3.png b/fonts/MiniwiFontOutline/28C3.png new file mode 100644 index 000000000..7feafd370 Binary files /dev/null and b/fonts/MiniwiFontOutline/28C3.png differ diff --git a/fonts/MiniwiFontOutline/28C4.png b/fonts/MiniwiFontOutline/28C4.png new file mode 100644 index 000000000..a8e229a54 Binary files /dev/null and b/fonts/MiniwiFontOutline/28C4.png differ diff --git a/fonts/MiniwiFontOutline/28C5.png b/fonts/MiniwiFontOutline/28C5.png new file mode 100644 index 000000000..c6a4ba05c Binary files /dev/null and b/fonts/MiniwiFontOutline/28C5.png differ diff --git a/fonts/MiniwiFontOutline/28C6.png b/fonts/MiniwiFontOutline/28C6.png new file mode 100644 index 000000000..803b467cf Binary files /dev/null and b/fonts/MiniwiFontOutline/28C6.png differ diff --git a/fonts/MiniwiFontOutline/28C7.png b/fonts/MiniwiFontOutline/28C7.png new file mode 100644 index 000000000..571962570 Binary files /dev/null and b/fonts/MiniwiFontOutline/28C7.png differ diff --git a/fonts/MiniwiFontOutline/28C8.png b/fonts/MiniwiFontOutline/28C8.png new file mode 100644 index 000000000..9f977f614 Binary files /dev/null and b/fonts/MiniwiFontOutline/28C8.png differ diff --git a/fonts/MiniwiFontOutline/28C9.png b/fonts/MiniwiFontOutline/28C9.png new file mode 100644 index 000000000..caa47e02a Binary files /dev/null and b/fonts/MiniwiFontOutline/28C9.png differ diff --git a/fonts/MiniwiFontOutline/28CA.png b/fonts/MiniwiFontOutline/28CA.png new file mode 100644 index 000000000..d3684d27a Binary files /dev/null and b/fonts/MiniwiFontOutline/28CA.png differ diff --git a/fonts/MiniwiFontOutline/28CB.png b/fonts/MiniwiFontOutline/28CB.png new file mode 100644 index 000000000..fb277af7a Binary files /dev/null and b/fonts/MiniwiFontOutline/28CB.png differ diff --git a/fonts/MiniwiFontOutline/28CC.png b/fonts/MiniwiFontOutline/28CC.png new file mode 100644 index 000000000..400490ee3 Binary files /dev/null and b/fonts/MiniwiFontOutline/28CC.png differ diff --git a/fonts/MiniwiFontOutline/28CD.png b/fonts/MiniwiFontOutline/28CD.png new file mode 100644 index 000000000..4722cd96f Binary files /dev/null and b/fonts/MiniwiFontOutline/28CD.png differ diff --git a/fonts/MiniwiFontOutline/28CE.png b/fonts/MiniwiFontOutline/28CE.png new file mode 100644 index 000000000..4c61ab23d Binary files /dev/null and b/fonts/MiniwiFontOutline/28CE.png differ diff --git a/fonts/MiniwiFontOutline/28CF.png b/fonts/MiniwiFontOutline/28CF.png new file mode 100644 index 000000000..d87aa42ff Binary files /dev/null and b/fonts/MiniwiFontOutline/28CF.png differ diff --git a/fonts/MiniwiFontOutline/28D0.png b/fonts/MiniwiFontOutline/28D0.png new file mode 100644 index 000000000..d9ac3b366 Binary files /dev/null and b/fonts/MiniwiFontOutline/28D0.png differ diff --git a/fonts/MiniwiFontOutline/28D1.png b/fonts/MiniwiFontOutline/28D1.png new file mode 100644 index 000000000..b7c908989 Binary files /dev/null and b/fonts/MiniwiFontOutline/28D1.png differ diff --git a/fonts/MiniwiFontOutline/28D2.png b/fonts/MiniwiFontOutline/28D2.png new file mode 100644 index 000000000..3b4292176 Binary files /dev/null and b/fonts/MiniwiFontOutline/28D2.png differ diff --git a/fonts/MiniwiFontOutline/28D3.png b/fonts/MiniwiFontOutline/28D3.png new file mode 100644 index 000000000..5788ee3e7 Binary files /dev/null and b/fonts/MiniwiFontOutline/28D3.png differ diff --git a/fonts/MiniwiFontOutline/28D4.png b/fonts/MiniwiFontOutline/28D4.png new file mode 100644 index 000000000..d6e82b9b0 Binary files /dev/null and b/fonts/MiniwiFontOutline/28D4.png differ diff --git a/fonts/MiniwiFontOutline/28D5.png b/fonts/MiniwiFontOutline/28D5.png new file mode 100644 index 000000000..6f1f06aed Binary files /dev/null and b/fonts/MiniwiFontOutline/28D5.png differ diff --git a/fonts/MiniwiFontOutline/28D6.png b/fonts/MiniwiFontOutline/28D6.png new file mode 100644 index 000000000..81d6b14ed Binary files /dev/null and b/fonts/MiniwiFontOutline/28D6.png differ diff --git a/fonts/MiniwiFontOutline/28D7.png b/fonts/MiniwiFontOutline/28D7.png new file mode 100644 index 000000000..7ab1ad164 Binary files /dev/null and b/fonts/MiniwiFontOutline/28D7.png differ diff --git a/fonts/MiniwiFontOutline/28D8.png b/fonts/MiniwiFontOutline/28D8.png new file mode 100644 index 000000000..1615f36fb Binary files /dev/null and b/fonts/MiniwiFontOutline/28D8.png differ diff --git a/fonts/MiniwiFontOutline/28D9.png b/fonts/MiniwiFontOutline/28D9.png new file mode 100644 index 000000000..0cb3a3d41 Binary files /dev/null and b/fonts/MiniwiFontOutline/28D9.png differ diff --git a/fonts/MiniwiFontOutline/28DA.png b/fonts/MiniwiFontOutline/28DA.png new file mode 100644 index 000000000..1f97a25ef Binary files /dev/null and b/fonts/MiniwiFontOutline/28DA.png differ diff --git a/fonts/MiniwiFontOutline/28DB.png b/fonts/MiniwiFontOutline/28DB.png new file mode 100644 index 000000000..4f85ac6c7 Binary files /dev/null and b/fonts/MiniwiFontOutline/28DB.png differ diff --git a/fonts/MiniwiFontOutline/28DC.png b/fonts/MiniwiFontOutline/28DC.png new file mode 100644 index 000000000..a92119dbd Binary files /dev/null and b/fonts/MiniwiFontOutline/28DC.png differ diff --git a/fonts/MiniwiFontOutline/28DD.png b/fonts/MiniwiFontOutline/28DD.png new file mode 100644 index 000000000..a92119dbd Binary files /dev/null and b/fonts/MiniwiFontOutline/28DD.png differ diff --git a/fonts/MiniwiFontOutline/28DE.png b/fonts/MiniwiFontOutline/28DE.png new file mode 100644 index 000000000..21a339989 Binary files /dev/null and b/fonts/MiniwiFontOutline/28DE.png differ diff --git a/fonts/MiniwiFontOutline/28DF.png b/fonts/MiniwiFontOutline/28DF.png new file mode 100644 index 000000000..f68179182 Binary files /dev/null and b/fonts/MiniwiFontOutline/28DF.png differ diff --git a/fonts/MiniwiFontOutline/28E0.png b/fonts/MiniwiFontOutline/28E0.png new file mode 100644 index 000000000..5aa7e61b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/28E0.png differ diff --git a/fonts/MiniwiFontOutline/28E1.png b/fonts/MiniwiFontOutline/28E1.png new file mode 100644 index 000000000..ef48870d6 Binary files /dev/null and b/fonts/MiniwiFontOutline/28E1.png differ diff --git a/fonts/MiniwiFontOutline/28E2.png b/fonts/MiniwiFontOutline/28E2.png new file mode 100644 index 000000000..f26691e2c Binary files /dev/null and b/fonts/MiniwiFontOutline/28E2.png differ diff --git a/fonts/MiniwiFontOutline/28E3.png b/fonts/MiniwiFontOutline/28E3.png new file mode 100644 index 000000000..88f822628 Binary files /dev/null and b/fonts/MiniwiFontOutline/28E3.png differ diff --git a/fonts/MiniwiFontOutline/28E4.png b/fonts/MiniwiFontOutline/28E4.png new file mode 100644 index 000000000..8424a339d Binary files /dev/null and b/fonts/MiniwiFontOutline/28E4.png differ diff --git a/fonts/MiniwiFontOutline/28E5.png b/fonts/MiniwiFontOutline/28E5.png new file mode 100644 index 000000000..2dda342a8 Binary files /dev/null and b/fonts/MiniwiFontOutline/28E5.png differ diff --git a/fonts/MiniwiFontOutline/28E6.png b/fonts/MiniwiFontOutline/28E6.png new file mode 100644 index 000000000..7b1b99579 Binary files /dev/null and b/fonts/MiniwiFontOutline/28E6.png differ diff --git a/fonts/MiniwiFontOutline/28E7.png b/fonts/MiniwiFontOutline/28E7.png new file mode 100644 index 000000000..e3024124e Binary files /dev/null and b/fonts/MiniwiFontOutline/28E7.png differ diff --git a/fonts/MiniwiFontOutline/28E8.png b/fonts/MiniwiFontOutline/28E8.png new file mode 100644 index 000000000..5c2d5e8cf Binary files /dev/null and b/fonts/MiniwiFontOutline/28E8.png differ diff --git a/fonts/MiniwiFontOutline/28E9.png b/fonts/MiniwiFontOutline/28E9.png new file mode 100644 index 000000000..9a2bc3a27 Binary files /dev/null and b/fonts/MiniwiFontOutline/28E9.png differ diff --git a/fonts/MiniwiFontOutline/28EA.png b/fonts/MiniwiFontOutline/28EA.png new file mode 100644 index 000000000..6a4bba869 Binary files /dev/null and b/fonts/MiniwiFontOutline/28EA.png differ diff --git a/fonts/MiniwiFontOutline/28EB.png b/fonts/MiniwiFontOutline/28EB.png new file mode 100644 index 000000000..831015b8f Binary files /dev/null and b/fonts/MiniwiFontOutline/28EB.png differ diff --git a/fonts/MiniwiFontOutline/28EC.png b/fonts/MiniwiFontOutline/28EC.png new file mode 100644 index 000000000..30ffefbf5 Binary files /dev/null and b/fonts/MiniwiFontOutline/28EC.png differ diff --git a/fonts/MiniwiFontOutline/28ED.png b/fonts/MiniwiFontOutline/28ED.png new file mode 100644 index 000000000..9ff6b06ad Binary files /dev/null and b/fonts/MiniwiFontOutline/28ED.png differ diff --git a/fonts/MiniwiFontOutline/28EE.png b/fonts/MiniwiFontOutline/28EE.png new file mode 100644 index 000000000..3e60c8ec4 Binary files /dev/null and b/fonts/MiniwiFontOutline/28EE.png differ diff --git a/fonts/MiniwiFontOutline/28EF.png b/fonts/MiniwiFontOutline/28EF.png new file mode 100644 index 000000000..590b8720d Binary files /dev/null and b/fonts/MiniwiFontOutline/28EF.png differ diff --git a/fonts/MiniwiFontOutline/28F0.png b/fonts/MiniwiFontOutline/28F0.png new file mode 100644 index 000000000..5d256544a Binary files /dev/null and b/fonts/MiniwiFontOutline/28F0.png differ diff --git a/fonts/MiniwiFontOutline/28F1.png b/fonts/MiniwiFontOutline/28F1.png new file mode 100644 index 000000000..6aa01fd23 Binary files /dev/null and b/fonts/MiniwiFontOutline/28F1.png differ diff --git a/fonts/MiniwiFontOutline/28F2.png b/fonts/MiniwiFontOutline/28F2.png new file mode 100644 index 000000000..37d856787 Binary files /dev/null and b/fonts/MiniwiFontOutline/28F2.png differ diff --git a/fonts/MiniwiFontOutline/28F3.png b/fonts/MiniwiFontOutline/28F3.png new file mode 100644 index 000000000..69321c6fe Binary files /dev/null and b/fonts/MiniwiFontOutline/28F3.png differ diff --git a/fonts/MiniwiFontOutline/28F4.png b/fonts/MiniwiFontOutline/28F4.png new file mode 100644 index 000000000..10bffab73 Binary files /dev/null and b/fonts/MiniwiFontOutline/28F4.png differ diff --git a/fonts/MiniwiFontOutline/28F5.png b/fonts/MiniwiFontOutline/28F5.png new file mode 100644 index 000000000..54c9bc329 Binary files /dev/null and b/fonts/MiniwiFontOutline/28F5.png differ diff --git a/fonts/MiniwiFontOutline/28F6.png b/fonts/MiniwiFontOutline/28F6.png new file mode 100644 index 000000000..8bfd87b7d Binary files /dev/null and b/fonts/MiniwiFontOutline/28F6.png differ diff --git a/fonts/MiniwiFontOutline/28F7.png b/fonts/MiniwiFontOutline/28F7.png new file mode 100644 index 000000000..231437443 Binary files /dev/null and b/fonts/MiniwiFontOutline/28F7.png differ diff --git a/fonts/MiniwiFontOutline/28F8.png b/fonts/MiniwiFontOutline/28F8.png new file mode 100644 index 000000000..ce03a635e Binary files /dev/null and b/fonts/MiniwiFontOutline/28F8.png differ diff --git a/fonts/MiniwiFontOutline/28F9.png b/fonts/MiniwiFontOutline/28F9.png new file mode 100644 index 000000000..e33ff3f94 Binary files /dev/null and b/fonts/MiniwiFontOutline/28F9.png differ diff --git a/fonts/MiniwiFontOutline/28FA.png b/fonts/MiniwiFontOutline/28FA.png new file mode 100644 index 000000000..62be57b1c Binary files /dev/null and b/fonts/MiniwiFontOutline/28FA.png differ diff --git a/fonts/MiniwiFontOutline/28FB.png b/fonts/MiniwiFontOutline/28FB.png new file mode 100644 index 000000000..7c4bb395d Binary files /dev/null and b/fonts/MiniwiFontOutline/28FB.png differ diff --git a/fonts/MiniwiFontOutline/28FC.png b/fonts/MiniwiFontOutline/28FC.png new file mode 100644 index 000000000..cf08abe20 Binary files /dev/null and b/fonts/MiniwiFontOutline/28FC.png differ diff --git a/fonts/MiniwiFontOutline/28FD.png b/fonts/MiniwiFontOutline/28FD.png new file mode 100644 index 000000000..e1c3ee699 Binary files /dev/null and b/fonts/MiniwiFontOutline/28FD.png differ diff --git a/fonts/MiniwiFontOutline/28FE.png b/fonts/MiniwiFontOutline/28FE.png new file mode 100644 index 000000000..ab373bdb5 Binary files /dev/null and b/fonts/MiniwiFontOutline/28FE.png differ diff --git a/fonts/MiniwiFontOutline/28FF.png b/fonts/MiniwiFontOutline/28FF.png new file mode 100644 index 000000000..ac0c74779 Binary files /dev/null and b/fonts/MiniwiFontOutline/28FF.png differ diff --git a/fonts/MiniwiFontOutline/2AD3.png b/fonts/MiniwiFontOutline/2AD3.png new file mode 100644 index 000000000..594e325b5 Binary files /dev/null and b/fonts/MiniwiFontOutline/2AD3.png differ diff --git a/fonts/MiniwiFontOutline/E01E.png b/fonts/MiniwiFontOutline/E01E.png new file mode 100644 index 000000000..dbff8fcf5 Binary files /dev/null and b/fonts/MiniwiFontOutline/E01E.png differ diff --git a/fonts/MiniwiFontOutline/F6BE.png b/fonts/MiniwiFontOutline/F6BE.png new file mode 100644 index 000000000..c064dd331 Binary files /dev/null and b/fonts/MiniwiFontOutline/F6BE.png differ diff --git a/fonts/MiniwiFontOutline/F8E5.png b/fonts/MiniwiFontOutline/F8E5.png new file mode 100644 index 000000000..cbb528326 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8E5.png differ diff --git a/fonts/MiniwiFontOutline/F8E6.png b/fonts/MiniwiFontOutline/F8E6.png new file mode 100644 index 000000000..820a4df74 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8E6.png differ diff --git a/fonts/MiniwiFontOutline/F8E7.png b/fonts/MiniwiFontOutline/F8E7.png new file mode 100644 index 000000000..3e49603ca Binary files /dev/null and b/fonts/MiniwiFontOutline/F8E7.png differ diff --git a/fonts/MiniwiFontOutline/F8E8.png b/fonts/MiniwiFontOutline/F8E8.png new file mode 100644 index 000000000..2496bc1c5 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8E8.png differ diff --git a/fonts/MiniwiFontOutline/F8E9.png b/fonts/MiniwiFontOutline/F8E9.png new file mode 100644 index 000000000..9349f1f6d Binary files /dev/null and b/fonts/MiniwiFontOutline/F8E9.png differ diff --git a/fonts/MiniwiFontOutline/F8EA.png b/fonts/MiniwiFontOutline/F8EA.png new file mode 100644 index 000000000..710f4901b Binary files /dev/null and b/fonts/MiniwiFontOutline/F8EA.png differ diff --git a/fonts/MiniwiFontOutline/F8EB.png b/fonts/MiniwiFontOutline/F8EB.png new file mode 100644 index 000000000..13eead723 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8EB.png differ diff --git a/fonts/MiniwiFontOutline/F8EC.png b/fonts/MiniwiFontOutline/F8EC.png new file mode 100644 index 000000000..6207284b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8EC.png differ diff --git a/fonts/MiniwiFontOutline/F8ED.png b/fonts/MiniwiFontOutline/F8ED.png new file mode 100644 index 000000000..bb5ce9e87 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8ED.png differ diff --git a/fonts/MiniwiFontOutline/F8EE.png b/fonts/MiniwiFontOutline/F8EE.png new file mode 100644 index 000000000..3d8256f0c Binary files /dev/null and b/fonts/MiniwiFontOutline/F8EE.png differ diff --git a/fonts/MiniwiFontOutline/F8EF.png b/fonts/MiniwiFontOutline/F8EF.png new file mode 100644 index 000000000..6207284b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8EF.png differ diff --git a/fonts/MiniwiFontOutline/F8F0.png b/fonts/MiniwiFontOutline/F8F0.png new file mode 100644 index 000000000..ba983d525 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F0.png differ diff --git a/fonts/MiniwiFontOutline/F8F1.png b/fonts/MiniwiFontOutline/F8F1.png new file mode 100644 index 000000000..d1768e7f3 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F1.png differ diff --git a/fonts/MiniwiFontOutline/F8F2.png b/fonts/MiniwiFontOutline/F8F2.png new file mode 100644 index 000000000..5228236b8 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F2.png differ diff --git a/fonts/MiniwiFontOutline/F8F3.png b/fonts/MiniwiFontOutline/F8F3.png new file mode 100644 index 000000000..53566122f Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F3.png differ diff --git a/fonts/MiniwiFontOutline/F8F4.png b/fonts/MiniwiFontOutline/F8F4.png new file mode 100644 index 000000000..191b60f8f Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F4.png differ diff --git a/fonts/MiniwiFontOutline/F8F5.png b/fonts/MiniwiFontOutline/F8F5.png new file mode 100644 index 000000000..745a233ed Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F5.png differ diff --git a/fonts/MiniwiFontOutline/F8F6.png b/fonts/MiniwiFontOutline/F8F6.png new file mode 100644 index 000000000..447be1f36 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F6.png differ diff --git a/fonts/MiniwiFontOutline/F8F7.png b/fonts/MiniwiFontOutline/F8F7.png new file mode 100644 index 000000000..7178f64c9 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F7.png differ diff --git a/fonts/MiniwiFontOutline/F8F8.png b/fonts/MiniwiFontOutline/F8F8.png new file mode 100644 index 000000000..a39c884e2 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F8.png differ diff --git a/fonts/MiniwiFontOutline/F8F9.png b/fonts/MiniwiFontOutline/F8F9.png new file mode 100644 index 000000000..7e084ada4 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8F9.png differ diff --git a/fonts/MiniwiFontOutline/F8FA.png b/fonts/MiniwiFontOutline/F8FA.png new file mode 100644 index 000000000..6207284b7 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8FA.png differ diff --git a/fonts/MiniwiFontOutline/F8FB.png b/fonts/MiniwiFontOutline/F8FB.png new file mode 100644 index 000000000..e08a7d189 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8FB.png differ diff --git a/fonts/MiniwiFontOutline/F8FC.png b/fonts/MiniwiFontOutline/F8FC.png new file mode 100644 index 000000000..e64f0fc5b Binary files /dev/null and b/fonts/MiniwiFontOutline/F8FC.png differ diff --git a/fonts/MiniwiFontOutline/F8FD.png b/fonts/MiniwiFontOutline/F8FD.png new file mode 100644 index 000000000..14188fbb1 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8FD.png differ diff --git a/fonts/MiniwiFontOutline/F8FE.png b/fonts/MiniwiFontOutline/F8FE.png new file mode 100644 index 000000000..d3370e1ce Binary files /dev/null and b/fonts/MiniwiFontOutline/F8FE.png differ diff --git a/fonts/MiniwiFontOutline/F8FF.png b/fonts/MiniwiFontOutline/F8FF.png new file mode 100644 index 000000000..8629b5212 Binary files /dev/null and b/fonts/MiniwiFontOutline/F8FF.png differ diff --git a/fonts/MiniwiFontOutline/FB00.png b/fonts/MiniwiFontOutline/FB00.png new file mode 100644 index 000000000..68d265f4c Binary files /dev/null and b/fonts/MiniwiFontOutline/FB00.png differ diff --git a/fonts/MiniwiFontOutline/FB01.png b/fonts/MiniwiFontOutline/FB01.png new file mode 100644 index 000000000..51bba8710 Binary files /dev/null and b/fonts/MiniwiFontOutline/FB01.png differ diff --git a/fonts/MiniwiFontOutline/FB02.png b/fonts/MiniwiFontOutline/FB02.png new file mode 100644 index 000000000..ef60c74be Binary files /dev/null and b/fonts/MiniwiFontOutline/FB02.png differ diff --git a/fonts/MiniwiFontOutline/FB03.png b/fonts/MiniwiFontOutline/FB03.png new file mode 100644 index 000000000..c7868a133 Binary files /dev/null and b/fonts/MiniwiFontOutline/FB03.png differ diff --git a/fonts/MiniwiFontOutline/FB04.png b/fonts/MiniwiFontOutline/FB04.png new file mode 100644 index 000000000..bbaf0256a Binary files /dev/null and b/fonts/MiniwiFontOutline/FB04.png differ diff --git a/fonts/MiniwiFontOutline/FF01.png b/fonts/MiniwiFontOutline/FF01.png new file mode 100644 index 000000000..6924ffc30 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF01.png differ diff --git a/fonts/MiniwiFontOutline/FF03.png b/fonts/MiniwiFontOutline/FF03.png new file mode 100644 index 000000000..ae34f5a62 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF03.png differ diff --git a/fonts/MiniwiFontOutline/FF04.png b/fonts/MiniwiFontOutline/FF04.png new file mode 100644 index 000000000..cbf57bf7e Binary files /dev/null and b/fonts/MiniwiFontOutline/FF04.png differ diff --git a/fonts/MiniwiFontOutline/FF05.png b/fonts/MiniwiFontOutline/FF05.png new file mode 100644 index 000000000..273cdf535 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF05.png differ diff --git a/fonts/MiniwiFontOutline/FF06.png b/fonts/MiniwiFontOutline/FF06.png new file mode 100644 index 000000000..34a485d3d Binary files /dev/null and b/fonts/MiniwiFontOutline/FF06.png differ diff --git a/fonts/MiniwiFontOutline/FF08.png b/fonts/MiniwiFontOutline/FF08.png new file mode 100644 index 000000000..f55c29b69 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF08.png differ diff --git a/fonts/MiniwiFontOutline/FF09.png b/fonts/MiniwiFontOutline/FF09.png new file mode 100644 index 000000000..d91a84ddb Binary files /dev/null and b/fonts/MiniwiFontOutline/FF09.png differ diff --git a/fonts/MiniwiFontOutline/FF0A.png b/fonts/MiniwiFontOutline/FF0A.png new file mode 100644 index 000000000..0c32d12d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF0A.png differ diff --git a/fonts/MiniwiFontOutline/FF0B.png b/fonts/MiniwiFontOutline/FF0B.png new file mode 100644 index 000000000..c0c993b81 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF0B.png differ diff --git a/fonts/MiniwiFontOutline/FF0C.png b/fonts/MiniwiFontOutline/FF0C.png new file mode 100644 index 000000000..476029b97 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF0C.png differ diff --git a/fonts/MiniwiFontOutline/FF0E.png b/fonts/MiniwiFontOutline/FF0E.png new file mode 100644 index 000000000..e176aae75 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF0E.png differ diff --git a/fonts/MiniwiFontOutline/FF0F.png b/fonts/MiniwiFontOutline/FF0F.png new file mode 100644 index 000000000..b44b5ea07 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF0F.png differ diff --git a/fonts/MiniwiFontOutline/FF10.png b/fonts/MiniwiFontOutline/FF10.png new file mode 100644 index 000000000..cc9158cc8 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF10.png differ diff --git a/fonts/MiniwiFontOutline/FF11.png b/fonts/MiniwiFontOutline/FF11.png new file mode 100644 index 000000000..a211aba33 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF11.png differ diff --git a/fonts/MiniwiFontOutline/FF12.png b/fonts/MiniwiFontOutline/FF12.png new file mode 100644 index 000000000..f0598bb57 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF12.png differ diff --git a/fonts/MiniwiFontOutline/FF13.png b/fonts/MiniwiFontOutline/FF13.png new file mode 100644 index 000000000..b3afc2974 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF13.png differ diff --git a/fonts/MiniwiFontOutline/FF14.png b/fonts/MiniwiFontOutline/FF14.png new file mode 100644 index 000000000..d2e34a8d4 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF14.png differ diff --git a/fonts/MiniwiFontOutline/FF15.png b/fonts/MiniwiFontOutline/FF15.png new file mode 100644 index 000000000..c3b8c0cf4 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF15.png differ diff --git a/fonts/MiniwiFontOutline/FF16.png b/fonts/MiniwiFontOutline/FF16.png new file mode 100644 index 000000000..61410b280 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF16.png differ diff --git a/fonts/MiniwiFontOutline/FF17.png b/fonts/MiniwiFontOutline/FF17.png new file mode 100644 index 000000000..c2fff2e62 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF17.png differ diff --git a/fonts/MiniwiFontOutline/FF18.png b/fonts/MiniwiFontOutline/FF18.png new file mode 100644 index 000000000..51980fef0 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF18.png differ diff --git a/fonts/MiniwiFontOutline/FF19.png b/fonts/MiniwiFontOutline/FF19.png new file mode 100644 index 000000000..c9f17bafa Binary files /dev/null and b/fonts/MiniwiFontOutline/FF19.png differ diff --git a/fonts/MiniwiFontOutline/FF1A.png b/fonts/MiniwiFontOutline/FF1A.png new file mode 100644 index 000000000..b34850711 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF1A.png differ diff --git a/fonts/MiniwiFontOutline/FF1B.png b/fonts/MiniwiFontOutline/FF1B.png new file mode 100644 index 000000000..aa01c07b9 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF1B.png differ diff --git a/fonts/MiniwiFontOutline/FF1C.png b/fonts/MiniwiFontOutline/FF1C.png new file mode 100644 index 000000000..b749511b5 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF1C.png differ diff --git a/fonts/MiniwiFontOutline/FF1D.png b/fonts/MiniwiFontOutline/FF1D.png new file mode 100644 index 000000000..182a0e86c Binary files /dev/null and b/fonts/MiniwiFontOutline/FF1D.png differ diff --git a/fonts/MiniwiFontOutline/FF1E.png b/fonts/MiniwiFontOutline/FF1E.png new file mode 100644 index 000000000..4c36ee32b Binary files /dev/null and b/fonts/MiniwiFontOutline/FF1E.png differ diff --git a/fonts/MiniwiFontOutline/FF1F.png b/fonts/MiniwiFontOutline/FF1F.png new file mode 100644 index 000000000..f73cbb893 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF1F.png differ diff --git a/fonts/MiniwiFontOutline/FF20.png b/fonts/MiniwiFontOutline/FF20.png new file mode 100644 index 000000000..eb4912ee1 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF20.png differ diff --git a/fonts/MiniwiFontOutline/FF21.png b/fonts/MiniwiFontOutline/FF21.png new file mode 100644 index 000000000..ce143f6aa Binary files /dev/null and b/fonts/MiniwiFontOutline/FF21.png differ diff --git a/fonts/MiniwiFontOutline/FF22.png b/fonts/MiniwiFontOutline/FF22.png new file mode 100644 index 000000000..b5f9cc45b Binary files /dev/null and b/fonts/MiniwiFontOutline/FF22.png differ diff --git a/fonts/MiniwiFontOutline/FF23.png b/fonts/MiniwiFontOutline/FF23.png new file mode 100644 index 000000000..81534cfcb Binary files /dev/null and b/fonts/MiniwiFontOutline/FF23.png differ diff --git a/fonts/MiniwiFontOutline/FF24.png b/fonts/MiniwiFontOutline/FF24.png new file mode 100644 index 000000000..c9fa2473e Binary files /dev/null and b/fonts/MiniwiFontOutline/FF24.png differ diff --git a/fonts/MiniwiFontOutline/FF25.png b/fonts/MiniwiFontOutline/FF25.png new file mode 100644 index 000000000..4c40a81be Binary files /dev/null and b/fonts/MiniwiFontOutline/FF25.png differ diff --git a/fonts/MiniwiFontOutline/FF26.png b/fonts/MiniwiFontOutline/FF26.png new file mode 100644 index 000000000..ddc79cfba Binary files /dev/null and b/fonts/MiniwiFontOutline/FF26.png differ diff --git a/fonts/MiniwiFontOutline/FF27.png b/fonts/MiniwiFontOutline/FF27.png new file mode 100644 index 000000000..886f25998 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF27.png differ diff --git a/fonts/MiniwiFontOutline/FF28.png b/fonts/MiniwiFontOutline/FF28.png new file mode 100644 index 000000000..8a5f99064 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF28.png differ diff --git a/fonts/MiniwiFontOutline/FF29.png b/fonts/MiniwiFontOutline/FF29.png new file mode 100644 index 000000000..b7e2b5a3b Binary files /dev/null and b/fonts/MiniwiFontOutline/FF29.png differ diff --git a/fonts/MiniwiFontOutline/FF2A.png b/fonts/MiniwiFontOutline/FF2A.png new file mode 100644 index 000000000..61b45fe20 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF2A.png differ diff --git a/fonts/MiniwiFontOutline/FF2B.png b/fonts/MiniwiFontOutline/FF2B.png new file mode 100644 index 000000000..42babdb4a Binary files /dev/null and b/fonts/MiniwiFontOutline/FF2B.png differ diff --git a/fonts/MiniwiFontOutline/FF2C.png b/fonts/MiniwiFontOutline/FF2C.png new file mode 100644 index 000000000..7d3ffeb75 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF2C.png differ diff --git a/fonts/MiniwiFontOutline/FF2D.png b/fonts/MiniwiFontOutline/FF2D.png new file mode 100644 index 000000000..94cb5c954 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF2D.png differ diff --git a/fonts/MiniwiFontOutline/FF2E.png b/fonts/MiniwiFontOutline/FF2E.png new file mode 100644 index 000000000..59ffdb824 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF2E.png differ diff --git a/fonts/MiniwiFontOutline/FF2F.png b/fonts/MiniwiFontOutline/FF2F.png new file mode 100644 index 000000000..022fe38c1 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF2F.png differ diff --git a/fonts/MiniwiFontOutline/FF30.png b/fonts/MiniwiFontOutline/FF30.png new file mode 100644 index 000000000..292702d9c Binary files /dev/null and b/fonts/MiniwiFontOutline/FF30.png differ diff --git a/fonts/MiniwiFontOutline/FF31.png b/fonts/MiniwiFontOutline/FF31.png new file mode 100644 index 000000000..2ed04e837 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF31.png differ diff --git a/fonts/MiniwiFontOutline/FF32.png b/fonts/MiniwiFontOutline/FF32.png new file mode 100644 index 000000000..cd7e7fd6c Binary files /dev/null and b/fonts/MiniwiFontOutline/FF32.png differ diff --git a/fonts/MiniwiFontOutline/FF33.png b/fonts/MiniwiFontOutline/FF33.png new file mode 100644 index 000000000..6e6910283 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF33.png differ diff --git a/fonts/MiniwiFontOutline/FF34.png b/fonts/MiniwiFontOutline/FF34.png new file mode 100644 index 000000000..266f614e6 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF34.png differ diff --git a/fonts/MiniwiFontOutline/FF35.png b/fonts/MiniwiFontOutline/FF35.png new file mode 100644 index 000000000..532ae827a Binary files /dev/null and b/fonts/MiniwiFontOutline/FF35.png differ diff --git a/fonts/MiniwiFontOutline/FF36.png b/fonts/MiniwiFontOutline/FF36.png new file mode 100644 index 000000000..d7d951405 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF36.png differ diff --git a/fonts/MiniwiFontOutline/FF37.png b/fonts/MiniwiFontOutline/FF37.png new file mode 100644 index 000000000..9e96600e6 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF37.png differ diff --git a/fonts/MiniwiFontOutline/FF38.png b/fonts/MiniwiFontOutline/FF38.png new file mode 100644 index 000000000..bea39f6a0 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF38.png differ diff --git a/fonts/MiniwiFontOutline/FF39.png b/fonts/MiniwiFontOutline/FF39.png new file mode 100644 index 000000000..118171d6c Binary files /dev/null and b/fonts/MiniwiFontOutline/FF39.png differ diff --git a/fonts/MiniwiFontOutline/FF3A.png b/fonts/MiniwiFontOutline/FF3A.png new file mode 100644 index 000000000..6baaf5301 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF3A.png differ diff --git a/fonts/MiniwiFontOutline/FF3B.png b/fonts/MiniwiFontOutline/FF3B.png new file mode 100644 index 000000000..de76f18ac Binary files /dev/null and b/fonts/MiniwiFontOutline/FF3B.png differ diff --git a/fonts/MiniwiFontOutline/FF3C.png b/fonts/MiniwiFontOutline/FF3C.png new file mode 100644 index 000000000..ca35f24e4 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF3C.png differ diff --git a/fonts/MiniwiFontOutline/FF3D.png b/fonts/MiniwiFontOutline/FF3D.png new file mode 100644 index 000000000..51d696baf Binary files /dev/null and b/fonts/MiniwiFontOutline/FF3D.png differ diff --git a/fonts/MiniwiFontOutline/FF3E.png b/fonts/MiniwiFontOutline/FF3E.png new file mode 100644 index 000000000..f50291ef5 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF3E.png differ diff --git a/fonts/MiniwiFontOutline/FF3F.png b/fonts/MiniwiFontOutline/FF3F.png new file mode 100644 index 000000000..640c39301 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF3F.png differ diff --git a/fonts/MiniwiFontOutline/FF40.png b/fonts/MiniwiFontOutline/FF40.png new file mode 100644 index 000000000..57ac96de4 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF40.png differ diff --git a/fonts/MiniwiFontOutline/FF41.png b/fonts/MiniwiFontOutline/FF41.png new file mode 100644 index 000000000..174852c22 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF41.png differ diff --git a/fonts/MiniwiFontOutline/FF42.png b/fonts/MiniwiFontOutline/FF42.png new file mode 100644 index 000000000..7e0f30dc6 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF42.png differ diff --git a/fonts/MiniwiFontOutline/FF43.png b/fonts/MiniwiFontOutline/FF43.png new file mode 100644 index 000000000..ea65c7820 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF43.png differ diff --git a/fonts/MiniwiFontOutline/FF44.png b/fonts/MiniwiFontOutline/FF44.png new file mode 100644 index 000000000..32a9b12a9 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF44.png differ diff --git a/fonts/MiniwiFontOutline/FF45.png b/fonts/MiniwiFontOutline/FF45.png new file mode 100644 index 000000000..c74a72b2c Binary files /dev/null and b/fonts/MiniwiFontOutline/FF45.png differ diff --git a/fonts/MiniwiFontOutline/FF46.png b/fonts/MiniwiFontOutline/FF46.png new file mode 100644 index 000000000..a63aeea17 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF46.png differ diff --git a/fonts/MiniwiFontOutline/FF47.png b/fonts/MiniwiFontOutline/FF47.png new file mode 100644 index 000000000..55db33f85 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF47.png differ diff --git a/fonts/MiniwiFontOutline/FF48.png b/fonts/MiniwiFontOutline/FF48.png new file mode 100644 index 000000000..a225ceca4 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF48.png differ diff --git a/fonts/MiniwiFontOutline/FF49.png b/fonts/MiniwiFontOutline/FF49.png new file mode 100644 index 000000000..92cc60e21 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF49.png differ diff --git a/fonts/MiniwiFontOutline/FF4A.png b/fonts/MiniwiFontOutline/FF4A.png new file mode 100644 index 000000000..54797ee1c Binary files /dev/null and b/fonts/MiniwiFontOutline/FF4A.png differ diff --git a/fonts/MiniwiFontOutline/FF4B.png b/fonts/MiniwiFontOutline/FF4B.png new file mode 100644 index 000000000..6cac4769e Binary files /dev/null and b/fonts/MiniwiFontOutline/FF4B.png differ diff --git a/fonts/MiniwiFontOutline/FF4C.png b/fonts/MiniwiFontOutline/FF4C.png new file mode 100644 index 000000000..11ee7320c Binary files /dev/null and b/fonts/MiniwiFontOutline/FF4C.png differ diff --git a/fonts/MiniwiFontOutline/FF4D.png b/fonts/MiniwiFontOutline/FF4D.png new file mode 100644 index 000000000..0ab7f1f55 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF4D.png differ diff --git a/fonts/MiniwiFontOutline/FF4E.png b/fonts/MiniwiFontOutline/FF4E.png new file mode 100644 index 000000000..9a6afa756 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF4E.png differ diff --git a/fonts/MiniwiFontOutline/FF4F.png b/fonts/MiniwiFontOutline/FF4F.png new file mode 100644 index 000000000..22bfdff91 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF4F.png differ diff --git a/fonts/MiniwiFontOutline/FF50.png b/fonts/MiniwiFontOutline/FF50.png new file mode 100644 index 000000000..141190307 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF50.png differ diff --git a/fonts/MiniwiFontOutline/FF51.png b/fonts/MiniwiFontOutline/FF51.png new file mode 100644 index 000000000..702da3965 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF51.png differ diff --git a/fonts/MiniwiFontOutline/FF52.png b/fonts/MiniwiFontOutline/FF52.png new file mode 100644 index 000000000..f6bb64184 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF52.png differ diff --git a/fonts/MiniwiFontOutline/FF53.png b/fonts/MiniwiFontOutline/FF53.png new file mode 100644 index 000000000..2807418d8 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF53.png differ diff --git a/fonts/MiniwiFontOutline/FF54.png b/fonts/MiniwiFontOutline/FF54.png new file mode 100644 index 000000000..c0a675926 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF54.png differ diff --git a/fonts/MiniwiFontOutline/FF55.png b/fonts/MiniwiFontOutline/FF55.png new file mode 100644 index 000000000..43f44bec1 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF55.png differ diff --git a/fonts/MiniwiFontOutline/FF56.png b/fonts/MiniwiFontOutline/FF56.png new file mode 100644 index 000000000..f5335a661 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF56.png differ diff --git a/fonts/MiniwiFontOutline/FF57.png b/fonts/MiniwiFontOutline/FF57.png new file mode 100644 index 000000000..9e0ccc73f Binary files /dev/null and b/fonts/MiniwiFontOutline/FF57.png differ diff --git a/fonts/MiniwiFontOutline/FF58.png b/fonts/MiniwiFontOutline/FF58.png new file mode 100644 index 000000000..a9fbb1854 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF58.png differ diff --git a/fonts/MiniwiFontOutline/FF59.png b/fonts/MiniwiFontOutline/FF59.png new file mode 100644 index 000000000..e286197ee Binary files /dev/null and b/fonts/MiniwiFontOutline/FF59.png differ diff --git a/fonts/MiniwiFontOutline/FF5A.png b/fonts/MiniwiFontOutline/FF5A.png new file mode 100644 index 000000000..d18b73d4a Binary files /dev/null and b/fonts/MiniwiFontOutline/FF5A.png differ diff --git a/fonts/MiniwiFontOutline/FF5B.png b/fonts/MiniwiFontOutline/FF5B.png new file mode 100644 index 000000000..577b4e8b9 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF5B.png differ diff --git a/fonts/MiniwiFontOutline/FF5C.png b/fonts/MiniwiFontOutline/FF5C.png new file mode 100644 index 000000000..b6cf44e63 Binary files /dev/null and b/fonts/MiniwiFontOutline/FF5C.png differ diff --git a/fonts/MiniwiFontOutline/FF5D.png b/fonts/MiniwiFontOutline/FF5D.png new file mode 100644 index 000000000..248e5e49b Binary files /dev/null and b/fonts/MiniwiFontOutline/FF5D.png differ diff --git a/fonts/MiniwiFontOutline/FFE3.png b/fonts/MiniwiFontOutline/FFE3.png new file mode 100644 index 000000000..1015d1cb1 Binary files /dev/null and b/fonts/MiniwiFontOutline/FFE3.png differ diff --git a/fonts/MiniwiFontOutline/FFE5.png b/fonts/MiniwiFontOutline/FFE5.png new file mode 100644 index 000000000..1ba61e9a5 Binary files /dev/null and b/fonts/MiniwiFontOutline/FFE5.png differ diff --git a/fonts/MiniwiFontOutline/LICENSE b/fonts/MiniwiFontOutline/LICENSE new file mode 100644 index 000000000..9ce2063ea --- /dev/null +++ b/fonts/MiniwiFontOutline/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2015-2016 Josuah Demangeon + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/fonts/MiniwiFontOutline/font.inf b/fonts/MiniwiFontOutline/font.inf new file mode 100644 index 000000000..4b3314fa6 --- /dev/null +++ b/fonts/MiniwiFontOutline/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 6 +Kerning -2 +FontHeight 10 diff --git a/fonts/MiniwiFontOutlineAlt/0021.png b/fonts/MiniwiFontOutlineAlt/0021.png new file mode 100644 index 000000000..36af88f4c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0021.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0022.png b/fonts/MiniwiFontOutlineAlt/0022.png new file mode 100644 index 000000000..4f91d3032 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0022.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0023.png b/fonts/MiniwiFontOutlineAlt/0023.png new file mode 100644 index 000000000..8ee9766a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0023.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0024.png b/fonts/MiniwiFontOutlineAlt/0024.png new file mode 100644 index 000000000..908f43614 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0024.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0025.png b/fonts/MiniwiFontOutlineAlt/0025.png new file mode 100644 index 000000000..b93409bd3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0025.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0026.png b/fonts/MiniwiFontOutlineAlt/0026.png new file mode 100644 index 000000000..e8f12c12b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0026.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0027.png b/fonts/MiniwiFontOutlineAlt/0027.png new file mode 100644 index 000000000..493fae524 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0027.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0028.png b/fonts/MiniwiFontOutlineAlt/0028.png new file mode 100644 index 000000000..1b9b8f19c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0028.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0029.png b/fonts/MiniwiFontOutlineAlt/0029.png new file mode 100644 index 000000000..7ea6f611b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0029.png differ diff --git a/fonts/MiniwiFontOutlineAlt/002A.png b/fonts/MiniwiFontOutlineAlt/002A.png new file mode 100644 index 000000000..0f576f5a2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/002A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/002B.png b/fonts/MiniwiFontOutlineAlt/002B.png new file mode 100644 index 000000000..9a580eda5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/002B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/002C.png b/fonts/MiniwiFontOutlineAlt/002C.png new file mode 100644 index 000000000..d7e3471bf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/002C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/002D.png b/fonts/MiniwiFontOutlineAlt/002D.png new file mode 100644 index 000000000..802726d7c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/002D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/002E.png b/fonts/MiniwiFontOutlineAlt/002E.png new file mode 100644 index 000000000..854b67f77 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/002E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/002F.png b/fonts/MiniwiFontOutlineAlt/002F.png new file mode 100644 index 000000000..7bf1a06ca Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/002F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0030.png b/fonts/MiniwiFontOutlineAlt/0030.png new file mode 100644 index 000000000..a085af350 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0030.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0031.png b/fonts/MiniwiFontOutlineAlt/0031.png new file mode 100644 index 000000000..0e1ab1cdf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0031.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0032.png b/fonts/MiniwiFontOutlineAlt/0032.png new file mode 100644 index 000000000..b41e961c2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0032.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0033.png b/fonts/MiniwiFontOutlineAlt/0033.png new file mode 100644 index 000000000..eb6216d25 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0033.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0034.png b/fonts/MiniwiFontOutlineAlt/0034.png new file mode 100644 index 000000000..f448ab353 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0034.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0035.png b/fonts/MiniwiFontOutlineAlt/0035.png new file mode 100644 index 000000000..16121b27e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0035.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0036.png b/fonts/MiniwiFontOutlineAlt/0036.png new file mode 100644 index 000000000..0d0ef945c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0036.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0037.png b/fonts/MiniwiFontOutlineAlt/0037.png new file mode 100644 index 000000000..aa07fa068 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0037.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0038.png b/fonts/MiniwiFontOutlineAlt/0038.png new file mode 100644 index 000000000..66e324a6b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0038.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0039.png b/fonts/MiniwiFontOutlineAlt/0039.png new file mode 100644 index 000000000..edebbbf8e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0039.png differ diff --git a/fonts/MiniwiFontOutlineAlt/003A.png b/fonts/MiniwiFontOutlineAlt/003A.png new file mode 100644 index 000000000..bf25ec610 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/003A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/003B.png b/fonts/MiniwiFontOutlineAlt/003B.png new file mode 100644 index 000000000..638c5c3a7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/003B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/003C.png b/fonts/MiniwiFontOutlineAlt/003C.png new file mode 100644 index 000000000..dbfdc4b66 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/003C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/003D.png b/fonts/MiniwiFontOutlineAlt/003D.png new file mode 100644 index 000000000..8406f57f2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/003D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/003E.png b/fonts/MiniwiFontOutlineAlt/003E.png new file mode 100644 index 000000000..46c6b6c8b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/003E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/003F.png b/fonts/MiniwiFontOutlineAlt/003F.png new file mode 100644 index 000000000..0eebcae92 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/003F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0040.png b/fonts/MiniwiFontOutlineAlt/0040.png new file mode 100644 index 000000000..c30e5bab4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0040.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0041.png b/fonts/MiniwiFontOutlineAlt/0041.png new file mode 100644 index 000000000..90da5898a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0041.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0042.png b/fonts/MiniwiFontOutlineAlt/0042.png new file mode 100644 index 000000000..b587dfd11 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0042.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0043.png b/fonts/MiniwiFontOutlineAlt/0043.png new file mode 100644 index 000000000..86d2ae56f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0043.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0044.png b/fonts/MiniwiFontOutlineAlt/0044.png new file mode 100644 index 000000000..3ea0e153c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0044.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0045.png b/fonts/MiniwiFontOutlineAlt/0045.png new file mode 100644 index 000000000..b48f8e6c4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0045.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0046.png b/fonts/MiniwiFontOutlineAlt/0046.png new file mode 100644 index 000000000..a015be035 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0046.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0047.png b/fonts/MiniwiFontOutlineAlt/0047.png new file mode 100644 index 000000000..05c44b34f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0047.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0048.png b/fonts/MiniwiFontOutlineAlt/0048.png new file mode 100644 index 000000000..cca7ed91e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0048.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0049.png b/fonts/MiniwiFontOutlineAlt/0049.png new file mode 100644 index 000000000..b20253f94 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0049.png differ diff --git a/fonts/MiniwiFontOutlineAlt/004A.png b/fonts/MiniwiFontOutlineAlt/004A.png new file mode 100644 index 000000000..f24808d87 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/004A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/004B.png b/fonts/MiniwiFontOutlineAlt/004B.png new file mode 100644 index 000000000..c473b55ba Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/004B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/004C.png b/fonts/MiniwiFontOutlineAlt/004C.png new file mode 100644 index 000000000..497389012 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/004C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/004D.png b/fonts/MiniwiFontOutlineAlt/004D.png new file mode 100644 index 000000000..ff9116d19 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/004D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/004E.png b/fonts/MiniwiFontOutlineAlt/004E.png new file mode 100644 index 000000000..01523da12 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/004E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/004F.png b/fonts/MiniwiFontOutlineAlt/004F.png new file mode 100644 index 000000000..a085af350 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/004F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0050.png b/fonts/MiniwiFontOutlineAlt/0050.png new file mode 100644 index 000000000..7514cdb84 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0050.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0051.png b/fonts/MiniwiFontOutlineAlt/0051.png new file mode 100644 index 000000000..39449879e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0051.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0052.png b/fonts/MiniwiFontOutlineAlt/0052.png new file mode 100644 index 000000000..4f0a5979b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0052.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0053.png b/fonts/MiniwiFontOutlineAlt/0053.png new file mode 100644 index 000000000..7a0705ec2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0053.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0054.png b/fonts/MiniwiFontOutlineAlt/0054.png new file mode 100644 index 000000000..76ac9f9ab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0054.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0055.png b/fonts/MiniwiFontOutlineAlt/0055.png new file mode 100644 index 000000000..3ecf4d166 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0055.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0056.png b/fonts/MiniwiFontOutlineAlt/0056.png new file mode 100644 index 000000000..195c1b578 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0056.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0057.png b/fonts/MiniwiFontOutlineAlt/0057.png new file mode 100644 index 000000000..236ab80e0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0057.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0058.png b/fonts/MiniwiFontOutlineAlt/0058.png new file mode 100644 index 000000000..37f821843 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0058.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0059.png b/fonts/MiniwiFontOutlineAlt/0059.png new file mode 100644 index 000000000..f7baf0cad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0059.png differ diff --git a/fonts/MiniwiFontOutlineAlt/005A.png b/fonts/MiniwiFontOutlineAlt/005A.png new file mode 100644 index 000000000..a61dcdd9e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/005A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/005B.png b/fonts/MiniwiFontOutlineAlt/005B.png new file mode 100644 index 000000000..6de36f5ee Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/005B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/005C.png b/fonts/MiniwiFontOutlineAlt/005C.png new file mode 100644 index 000000000..100c8f2c3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/005C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/005D.png b/fonts/MiniwiFontOutlineAlt/005D.png new file mode 100644 index 000000000..3361c5a41 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/005D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/005E.png b/fonts/MiniwiFontOutlineAlt/005E.png new file mode 100644 index 000000000..adfd73d6c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/005E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/005F.png b/fonts/MiniwiFontOutlineAlt/005F.png new file mode 100644 index 000000000..927308800 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/005F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0060.png b/fonts/MiniwiFontOutlineAlt/0060.png new file mode 100644 index 000000000..ab52913ae Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0060.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0061.png b/fonts/MiniwiFontOutlineAlt/0061.png new file mode 100644 index 000000000..9202c46b1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0061.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0062.png b/fonts/MiniwiFontOutlineAlt/0062.png new file mode 100644 index 000000000..8e5034e41 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0062.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0063.png b/fonts/MiniwiFontOutlineAlt/0063.png new file mode 100644 index 000000000..2e3746c86 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0063.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0064.png b/fonts/MiniwiFontOutlineAlt/0064.png new file mode 100644 index 000000000..501937848 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0064.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0065.png b/fonts/MiniwiFontOutlineAlt/0065.png new file mode 100644 index 000000000..ffcd477d2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0065.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0066.png b/fonts/MiniwiFontOutlineAlt/0066.png new file mode 100644 index 000000000..48ab7886d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0066.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0067.png b/fonts/MiniwiFontOutlineAlt/0067.png new file mode 100644 index 000000000..bbe78c20f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0067.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0068.png b/fonts/MiniwiFontOutlineAlt/0068.png new file mode 100644 index 000000000..0521910e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0068.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0069.png b/fonts/MiniwiFontOutlineAlt/0069.png new file mode 100644 index 000000000..1841bb8d0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0069.png differ diff --git a/fonts/MiniwiFontOutlineAlt/006A.png b/fonts/MiniwiFontOutlineAlt/006A.png new file mode 100644 index 000000000..7bd63cd73 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/006A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/006B.png b/fonts/MiniwiFontOutlineAlt/006B.png new file mode 100644 index 000000000..b89aa4f5c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/006B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/006C.png b/fonts/MiniwiFontOutlineAlt/006C.png new file mode 100644 index 000000000..b7f040c7d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/006C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/006D.png b/fonts/MiniwiFontOutlineAlt/006D.png new file mode 100644 index 000000000..b90316837 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/006D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/006E.png b/fonts/MiniwiFontOutlineAlt/006E.png new file mode 100644 index 000000000..ef8159837 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/006E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/006F.png b/fonts/MiniwiFontOutlineAlt/006F.png new file mode 100644 index 000000000..611f65065 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/006F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0070.png b/fonts/MiniwiFontOutlineAlt/0070.png new file mode 100644 index 000000000..dd44812b0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0070.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0071.png b/fonts/MiniwiFontOutlineAlt/0071.png new file mode 100644 index 000000000..e095fd8fd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0071.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0072.png b/fonts/MiniwiFontOutlineAlt/0072.png new file mode 100644 index 000000000..5be99d2bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0072.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0073.png b/fonts/MiniwiFontOutlineAlt/0073.png new file mode 100644 index 000000000..758764ff2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0073.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0074.png b/fonts/MiniwiFontOutlineAlt/0074.png new file mode 100644 index 000000000..6288279dc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0074.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0075.png b/fonts/MiniwiFontOutlineAlt/0075.png new file mode 100644 index 000000000..8f5d3b6ac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0075.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0076.png b/fonts/MiniwiFontOutlineAlt/0076.png new file mode 100644 index 000000000..60667e5fa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0076.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0077.png b/fonts/MiniwiFontOutlineAlt/0077.png new file mode 100644 index 000000000..fa2167ac9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0077.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0078.png b/fonts/MiniwiFontOutlineAlt/0078.png new file mode 100644 index 000000000..1b5b531a1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0078.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0079.png b/fonts/MiniwiFontOutlineAlt/0079.png new file mode 100644 index 000000000..46cc27b5a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0079.png differ diff --git a/fonts/MiniwiFontOutlineAlt/007A.png b/fonts/MiniwiFontOutlineAlt/007A.png new file mode 100644 index 000000000..b843093a7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/007A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/007B.png b/fonts/MiniwiFontOutlineAlt/007B.png new file mode 100644 index 000000000..9ad70265a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/007B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/007C.png b/fonts/MiniwiFontOutlineAlt/007C.png new file mode 100644 index 000000000..348496eff Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/007C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/007D.png b/fonts/MiniwiFontOutlineAlt/007D.png new file mode 100644 index 000000000..97d86ec5c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/007D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/007E.png b/fonts/MiniwiFontOutlineAlt/007E.png new file mode 100644 index 000000000..27896f8a3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/007E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A1.png b/fonts/MiniwiFontOutlineAlt/00A1.png new file mode 100644 index 000000000..a001d3880 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A2.png b/fonts/MiniwiFontOutlineAlt/00A2.png new file mode 100644 index 000000000..dc87e3280 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A3.png b/fonts/MiniwiFontOutlineAlt/00A3.png new file mode 100644 index 000000000..25c07d7f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A4.png b/fonts/MiniwiFontOutlineAlt/00A4.png new file mode 100644 index 000000000..e94a518eb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A5.png b/fonts/MiniwiFontOutlineAlt/00A5.png new file mode 100644 index 000000000..890799fef Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A6.png b/fonts/MiniwiFontOutlineAlt/00A6.png new file mode 100644 index 000000000..b7d5ab34b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A7.png b/fonts/MiniwiFontOutlineAlt/00A7.png new file mode 100644 index 000000000..6bb52a4a9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A8.png b/fonts/MiniwiFontOutlineAlt/00A8.png new file mode 100644 index 000000000..939c2f38f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00A9.png b/fonts/MiniwiFontOutlineAlt/00A9.png new file mode 100644 index 000000000..0c33b49a7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00A9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00AA.png b/fonts/MiniwiFontOutlineAlt/00AA.png new file mode 100644 index 000000000..754a2024e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00AA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00AB.png b/fonts/MiniwiFontOutlineAlt/00AB.png new file mode 100644 index 000000000..941159205 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00AB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00AC.png b/fonts/MiniwiFontOutlineAlt/00AC.png new file mode 100644 index 000000000..7daf78abb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00AC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00AD.png b/fonts/MiniwiFontOutlineAlt/00AD.png new file mode 100644 index 000000000..87c41d43a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00AD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00AE.png b/fonts/MiniwiFontOutlineAlt/00AE.png new file mode 100644 index 000000000..0c4e0b72f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00AE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00AF.png b/fonts/MiniwiFontOutlineAlt/00AF.png new file mode 100644 index 000000000..c47634fb5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00AF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B0.png b/fonts/MiniwiFontOutlineAlt/00B0.png new file mode 100644 index 000000000..dfc036cb9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B1.png b/fonts/MiniwiFontOutlineAlt/00B1.png new file mode 100644 index 000000000..b35143a72 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B2.png b/fonts/MiniwiFontOutlineAlt/00B2.png new file mode 100644 index 000000000..64aa9bf85 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B3.png b/fonts/MiniwiFontOutlineAlt/00B3.png new file mode 100644 index 000000000..4c7b43dab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B4.png b/fonts/MiniwiFontOutlineAlt/00B4.png new file mode 100644 index 000000000..6b3af70a8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B5.png b/fonts/MiniwiFontOutlineAlt/00B5.png new file mode 100644 index 000000000..eec8ea41f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B6.png b/fonts/MiniwiFontOutlineAlt/00B6.png new file mode 100644 index 000000000..2cec41e25 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B7.png b/fonts/MiniwiFontOutlineAlt/00B7.png new file mode 100644 index 000000000..157f401da Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B8.png b/fonts/MiniwiFontOutlineAlt/00B8.png new file mode 100644 index 000000000..bf327f6b8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00B9.png b/fonts/MiniwiFontOutlineAlt/00B9.png new file mode 100644 index 000000000..24057c889 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00B9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00BA.png b/fonts/MiniwiFontOutlineAlt/00BA.png new file mode 100644 index 000000000..6257e0887 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00BA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00BB.png b/fonts/MiniwiFontOutlineAlt/00BB.png new file mode 100644 index 000000000..bb2901f67 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00BB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00BC.png b/fonts/MiniwiFontOutlineAlt/00BC.png new file mode 100644 index 000000000..527a692c2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00BC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00BD.png b/fonts/MiniwiFontOutlineAlt/00BD.png new file mode 100644 index 000000000..f2c0ebee1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00BD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00BE.png b/fonts/MiniwiFontOutlineAlt/00BE.png new file mode 100644 index 000000000..b9e0d0319 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00BE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00BF.png b/fonts/MiniwiFontOutlineAlt/00BF.png new file mode 100644 index 000000000..18b8b8f96 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00BF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C0.png b/fonts/MiniwiFontOutlineAlt/00C0.png new file mode 100644 index 000000000..fcca8a142 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C1.png b/fonts/MiniwiFontOutlineAlt/00C1.png new file mode 100644 index 000000000..b14fe5281 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C2.png b/fonts/MiniwiFontOutlineAlt/00C2.png new file mode 100644 index 000000000..f7ce2e4b4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C3.png b/fonts/MiniwiFontOutlineAlt/00C3.png new file mode 100644 index 000000000..5bf0558fa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C4.png b/fonts/MiniwiFontOutlineAlt/00C4.png new file mode 100644 index 000000000..8d4c14e8e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C5.png b/fonts/MiniwiFontOutlineAlt/00C5.png new file mode 100644 index 000000000..17c145ed3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C6.png b/fonts/MiniwiFontOutlineAlt/00C6.png new file mode 100644 index 000000000..ed765e7a1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C7.png b/fonts/MiniwiFontOutlineAlt/00C7.png new file mode 100644 index 000000000..e2d2c3749 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C8.png b/fonts/MiniwiFontOutlineAlt/00C8.png new file mode 100644 index 000000000..e42cc1ffe Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00C9.png b/fonts/MiniwiFontOutlineAlt/00C9.png new file mode 100644 index 000000000..24a316330 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00C9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00CA.png b/fonts/MiniwiFontOutlineAlt/00CA.png new file mode 100644 index 000000000..f2cd1acac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00CA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00CB.png b/fonts/MiniwiFontOutlineAlt/00CB.png new file mode 100644 index 000000000..a0db80658 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00CB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00CC.png b/fonts/MiniwiFontOutlineAlt/00CC.png new file mode 100644 index 000000000..feeea36eb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00CC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00CD.png b/fonts/MiniwiFontOutlineAlt/00CD.png new file mode 100644 index 000000000..b8804cf2d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00CD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00CE.png b/fonts/MiniwiFontOutlineAlt/00CE.png new file mode 100644 index 000000000..7697f7ee4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00CE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00CF.png b/fonts/MiniwiFontOutlineAlt/00CF.png new file mode 100644 index 000000000..ebeca2df7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00CF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D0.png b/fonts/MiniwiFontOutlineAlt/00D0.png new file mode 100644 index 000000000..36064c36a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D1.png b/fonts/MiniwiFontOutlineAlt/00D1.png new file mode 100644 index 000000000..c37714e67 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D2.png b/fonts/MiniwiFontOutlineAlt/00D2.png new file mode 100644 index 000000000..ab2e4f3c2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D3.png b/fonts/MiniwiFontOutlineAlt/00D3.png new file mode 100644 index 000000000..15ff46afd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D4.png b/fonts/MiniwiFontOutlineAlt/00D4.png new file mode 100644 index 000000000..e5f9d6b3b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D5.png b/fonts/MiniwiFontOutlineAlt/00D5.png new file mode 100644 index 000000000..ab2e4f3c2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D6.png b/fonts/MiniwiFontOutlineAlt/00D6.png new file mode 100644 index 000000000..5dfd0951b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D7.png b/fonts/MiniwiFontOutlineAlt/00D7.png new file mode 100644 index 000000000..95297c189 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D8.png b/fonts/MiniwiFontOutlineAlt/00D8.png new file mode 100644 index 000000000..f5a2be212 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00D9.png b/fonts/MiniwiFontOutlineAlt/00D9.png new file mode 100644 index 000000000..df5926627 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00D9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00DA.png b/fonts/MiniwiFontOutlineAlt/00DA.png new file mode 100644 index 000000000..27ffc5d41 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00DA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00DB.png b/fonts/MiniwiFontOutlineAlt/00DB.png new file mode 100644 index 000000000..fff74a718 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00DB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00DC.png b/fonts/MiniwiFontOutlineAlt/00DC.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00DC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00DD.png b/fonts/MiniwiFontOutlineAlt/00DD.png new file mode 100644 index 000000000..6e5538f3a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00DD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00DE.png b/fonts/MiniwiFontOutlineAlt/00DE.png new file mode 100644 index 000000000..84444867b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00DE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00DF.png b/fonts/MiniwiFontOutlineAlt/00DF.png new file mode 100644 index 000000000..24fe98b59 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00DF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E0.png b/fonts/MiniwiFontOutlineAlt/00E0.png new file mode 100644 index 000000000..531bf0a91 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E1.png b/fonts/MiniwiFontOutlineAlt/00E1.png new file mode 100644 index 000000000..87d624adb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E2.png b/fonts/MiniwiFontOutlineAlt/00E2.png new file mode 100644 index 000000000..ac169a15d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E3.png b/fonts/MiniwiFontOutlineAlt/00E3.png new file mode 100644 index 000000000..74359c370 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E4.png b/fonts/MiniwiFontOutlineAlt/00E4.png new file mode 100644 index 000000000..81d06b24e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E5.png b/fonts/MiniwiFontOutlineAlt/00E5.png new file mode 100644 index 000000000..376ad34a8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E6.png b/fonts/MiniwiFontOutlineAlt/00E6.png new file mode 100644 index 000000000..06fff1d30 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E7.png b/fonts/MiniwiFontOutlineAlt/00E7.png new file mode 100644 index 000000000..4fa864d01 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E8.png b/fonts/MiniwiFontOutlineAlt/00E8.png new file mode 100644 index 000000000..734498410 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00E9.png b/fonts/MiniwiFontOutlineAlt/00E9.png new file mode 100644 index 000000000..cf79ed1ec Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00E9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00EA.png b/fonts/MiniwiFontOutlineAlt/00EA.png new file mode 100644 index 000000000..3322335db Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00EA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00EB.png b/fonts/MiniwiFontOutlineAlt/00EB.png new file mode 100644 index 000000000..8261affbd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00EB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00EC.png b/fonts/MiniwiFontOutlineAlt/00EC.png new file mode 100644 index 000000000..8b057b120 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00EC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00ED.png b/fonts/MiniwiFontOutlineAlt/00ED.png new file mode 100644 index 000000000..8b458001b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00ED.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00EE.png b/fonts/MiniwiFontOutlineAlt/00EE.png new file mode 100644 index 000000000..3911fc230 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00EE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00EF.png b/fonts/MiniwiFontOutlineAlt/00EF.png new file mode 100644 index 000000000..ff29273f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00EF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F0.png b/fonts/MiniwiFontOutlineAlt/00F0.png new file mode 100644 index 000000000..e9201d7ed Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F1.png b/fonts/MiniwiFontOutlineAlt/00F1.png new file mode 100644 index 000000000..53f42445d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F2.png b/fonts/MiniwiFontOutlineAlt/00F2.png new file mode 100644 index 000000000..3dd35a286 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F3.png b/fonts/MiniwiFontOutlineAlt/00F3.png new file mode 100644 index 000000000..fabf734e6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F4.png b/fonts/MiniwiFontOutlineAlt/00F4.png new file mode 100644 index 000000000..1d9fa8aad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F5.png b/fonts/MiniwiFontOutlineAlt/00F5.png new file mode 100644 index 000000000..40126de6a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F6.png b/fonts/MiniwiFontOutlineAlt/00F6.png new file mode 100644 index 000000000..e6c4f9fe0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F7.png b/fonts/MiniwiFontOutlineAlt/00F7.png new file mode 100644 index 000000000..7b125d725 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F8.png b/fonts/MiniwiFontOutlineAlt/00F8.png new file mode 100644 index 000000000..7b241a076 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00F9.png b/fonts/MiniwiFontOutlineAlt/00F9.png new file mode 100644 index 000000000..df5926627 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00F9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00FA.png b/fonts/MiniwiFontOutlineAlt/00FA.png new file mode 100644 index 000000000..27ffc5d41 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00FA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00FB.png b/fonts/MiniwiFontOutlineAlt/00FB.png new file mode 100644 index 000000000..fff74a718 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00FB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00FC.png b/fonts/MiniwiFontOutlineAlt/00FC.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00FC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00FD.png b/fonts/MiniwiFontOutlineAlt/00FD.png new file mode 100644 index 000000000..d4423098e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00FD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00FE.png b/fonts/MiniwiFontOutlineAlt/00FE.png new file mode 100644 index 000000000..b07d4acc2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00FE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/00FF.png b/fonts/MiniwiFontOutlineAlt/00FF.png new file mode 100644 index 000000000..d18e5bd76 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/00FF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0100.png b/fonts/MiniwiFontOutlineAlt/0100.png new file mode 100644 index 000000000..e2df7c40e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0100.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0101.png b/fonts/MiniwiFontOutlineAlt/0101.png new file mode 100644 index 000000000..ac169a15d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0101.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0102.png b/fonts/MiniwiFontOutlineAlt/0102.png new file mode 100644 index 000000000..e2df7c40e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0102.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0103.png b/fonts/MiniwiFontOutlineAlt/0103.png new file mode 100644 index 000000000..ac169a15d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0103.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0104.png b/fonts/MiniwiFontOutlineAlt/0104.png new file mode 100644 index 000000000..b645da904 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0104.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0105.png b/fonts/MiniwiFontOutlineAlt/0105.png new file mode 100644 index 000000000..1676dfa46 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0105.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0106.png b/fonts/MiniwiFontOutlineAlt/0106.png new file mode 100644 index 000000000..9b984d6d5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0106.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0107.png b/fonts/MiniwiFontOutlineAlt/0107.png new file mode 100644 index 000000000..00c7d458e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0107.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0108.png b/fonts/MiniwiFontOutlineAlt/0108.png new file mode 100644 index 000000000..21a581d13 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0108.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0109.png b/fonts/MiniwiFontOutlineAlt/0109.png new file mode 100644 index 000000000..e34315be2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0109.png differ diff --git a/fonts/MiniwiFontOutlineAlt/010A.png b/fonts/MiniwiFontOutlineAlt/010A.png new file mode 100644 index 000000000..257bc1edb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/010A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/010B.png b/fonts/MiniwiFontOutlineAlt/010B.png new file mode 100644 index 000000000..3d46648fb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/010B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/010C.png b/fonts/MiniwiFontOutlineAlt/010C.png new file mode 100644 index 000000000..21a581d13 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/010C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/010D.png b/fonts/MiniwiFontOutlineAlt/010D.png new file mode 100644 index 000000000..e34315be2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/010D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/010E.png b/fonts/MiniwiFontOutlineAlt/010E.png new file mode 100644 index 000000000..8a8e2424b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/010E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/010F.png b/fonts/MiniwiFontOutlineAlt/010F.png new file mode 100644 index 000000000..1c5de7149 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/010F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0110.png b/fonts/MiniwiFontOutlineAlt/0110.png new file mode 100644 index 000000000..36064c36a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0110.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0111.png b/fonts/MiniwiFontOutlineAlt/0111.png new file mode 100644 index 000000000..3bb56e68f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0111.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0112.png b/fonts/MiniwiFontOutlineAlt/0112.png new file mode 100644 index 000000000..f2cd1acac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0112.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0113.png b/fonts/MiniwiFontOutlineAlt/0113.png new file mode 100644 index 000000000..3322335db Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0113.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0114.png b/fonts/MiniwiFontOutlineAlt/0114.png new file mode 100644 index 000000000..f2cd1acac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0114.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0115.png b/fonts/MiniwiFontOutlineAlt/0115.png new file mode 100644 index 000000000..3322335db Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0115.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0116.png b/fonts/MiniwiFontOutlineAlt/0116.png new file mode 100644 index 000000000..42a0d0aad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0116.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0117.png b/fonts/MiniwiFontOutlineAlt/0117.png new file mode 100644 index 000000000..8e574d941 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0117.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0118.png b/fonts/MiniwiFontOutlineAlt/0118.png new file mode 100644 index 000000000..d0febb6e3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0118.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0119.png b/fonts/MiniwiFontOutlineAlt/0119.png new file mode 100644 index 000000000..721f001c0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0119.png differ diff --git a/fonts/MiniwiFontOutlineAlt/011A.png b/fonts/MiniwiFontOutlineAlt/011A.png new file mode 100644 index 000000000..f2cd1acac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/011A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/011B.png b/fonts/MiniwiFontOutlineAlt/011B.png new file mode 100644 index 000000000..3322335db Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/011B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/011C.png b/fonts/MiniwiFontOutlineAlt/011C.png new file mode 100644 index 000000000..318aca167 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/011C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/011D.png b/fonts/MiniwiFontOutlineAlt/011D.png new file mode 100644 index 000000000..5542bcb58 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/011D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/011E.png b/fonts/MiniwiFontOutlineAlt/011E.png new file mode 100644 index 000000000..318aca167 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/011E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/011F.png b/fonts/MiniwiFontOutlineAlt/011F.png new file mode 100644 index 000000000..5542bcb58 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/011F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0120.png b/fonts/MiniwiFontOutlineAlt/0120.png new file mode 100644 index 000000000..121e64ee9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0120.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0121.png b/fonts/MiniwiFontOutlineAlt/0121.png new file mode 100644 index 000000000..71211062b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0121.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0122.png b/fonts/MiniwiFontOutlineAlt/0122.png new file mode 100644 index 000000000..156f34ff4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0122.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0123.png b/fonts/MiniwiFontOutlineAlt/0123.png new file mode 100644 index 000000000..1fe775283 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0123.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0124.png b/fonts/MiniwiFontOutlineAlt/0124.png new file mode 100644 index 000000000..2c443c261 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0124.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0125.png b/fonts/MiniwiFontOutlineAlt/0125.png new file mode 100644 index 000000000..d66fb8b9f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0125.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0126.png b/fonts/MiniwiFontOutlineAlt/0126.png new file mode 100644 index 000000000..dc49ef384 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0126.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0127.png b/fonts/MiniwiFontOutlineAlt/0127.png new file mode 100644 index 000000000..b777d231a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0127.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0128.png b/fonts/MiniwiFontOutlineAlt/0128.png new file mode 100644 index 000000000..d86b4335a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0128.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0129.png b/fonts/MiniwiFontOutlineAlt/0129.png new file mode 100644 index 000000000..8da567f4b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0129.png differ diff --git a/fonts/MiniwiFontOutlineAlt/012A.png b/fonts/MiniwiFontOutlineAlt/012A.png new file mode 100644 index 000000000..7697f7ee4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/012A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/012B.png b/fonts/MiniwiFontOutlineAlt/012B.png new file mode 100644 index 000000000..3911fc230 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/012B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/012C.png b/fonts/MiniwiFontOutlineAlt/012C.png new file mode 100644 index 000000000..7697f7ee4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/012C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/012D.png b/fonts/MiniwiFontOutlineAlt/012D.png new file mode 100644 index 000000000..3911fc230 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/012D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/012E.png b/fonts/MiniwiFontOutlineAlt/012E.png new file mode 100644 index 000000000..6eecb1ece Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/012E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/012F.png b/fonts/MiniwiFontOutlineAlt/012F.png new file mode 100644 index 000000000..72f57b7c0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/012F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0130.png b/fonts/MiniwiFontOutlineAlt/0130.png new file mode 100644 index 000000000..aafabcd65 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0130.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0131.png b/fonts/MiniwiFontOutlineAlt/0131.png new file mode 100644 index 000000000..01624dd07 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0131.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0132.png b/fonts/MiniwiFontOutlineAlt/0132.png new file mode 100644 index 000000000..040135f5a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0132.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0133.png b/fonts/MiniwiFontOutlineAlt/0133.png new file mode 100644 index 000000000..6e0eb0ac6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0133.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0134.png b/fonts/MiniwiFontOutlineAlt/0134.png new file mode 100644 index 000000000..c2a9aebbe Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0134.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0135.png b/fonts/MiniwiFontOutlineAlt/0135.png new file mode 100644 index 000000000..4df2a047d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0135.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0136.png b/fonts/MiniwiFontOutlineAlt/0136.png new file mode 100644 index 000000000..f334f5461 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0136.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0137.png b/fonts/MiniwiFontOutlineAlt/0137.png new file mode 100644 index 000000000..e37d879f4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0137.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0138.png b/fonts/MiniwiFontOutlineAlt/0138.png new file mode 100644 index 000000000..20f5da467 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0138.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0139.png b/fonts/MiniwiFontOutlineAlt/0139.png new file mode 100644 index 000000000..40717e264 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0139.png differ diff --git a/fonts/MiniwiFontOutlineAlt/013A.png b/fonts/MiniwiFontOutlineAlt/013A.png new file mode 100644 index 000000000..93d256145 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/013A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/013B.png b/fonts/MiniwiFontOutlineAlt/013B.png new file mode 100644 index 000000000..e2b10afe2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/013B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/013C.png b/fonts/MiniwiFontOutlineAlt/013C.png new file mode 100644 index 000000000..6086ec0a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/013C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/013D.png b/fonts/MiniwiFontOutlineAlt/013D.png new file mode 100644 index 000000000..8f1ef7ee3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/013D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/013E.png b/fonts/MiniwiFontOutlineAlt/013E.png new file mode 100644 index 000000000..45fdd73e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/013E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/013F.png b/fonts/MiniwiFontOutlineAlt/013F.png new file mode 100644 index 000000000..87c5cbe1a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/013F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0140.png b/fonts/MiniwiFontOutlineAlt/0140.png new file mode 100644 index 000000000..63286a902 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0140.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0141.png b/fonts/MiniwiFontOutlineAlt/0141.png new file mode 100644 index 000000000..ec677afa3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0141.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0142.png b/fonts/MiniwiFontOutlineAlt/0142.png new file mode 100644 index 000000000..61860f580 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0142.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0143.png b/fonts/MiniwiFontOutlineAlt/0143.png new file mode 100644 index 000000000..2b00e9ea8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0143.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0144.png b/fonts/MiniwiFontOutlineAlt/0144.png new file mode 100644 index 000000000..7244d113c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0144.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0145.png b/fonts/MiniwiFontOutlineAlt/0145.png new file mode 100644 index 000000000..4b58e52f5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0145.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0146.png b/fonts/MiniwiFontOutlineAlt/0146.png new file mode 100644 index 000000000..ed0f21413 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0146.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0147.png b/fonts/MiniwiFontOutlineAlt/0147.png new file mode 100644 index 000000000..f051ba899 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0147.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0148.png b/fonts/MiniwiFontOutlineAlt/0148.png new file mode 100644 index 000000000..d329334e1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0148.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0149.png b/fonts/MiniwiFontOutlineAlt/0149.png new file mode 100644 index 000000000..5a4e62ebb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0149.png differ diff --git a/fonts/MiniwiFontOutlineAlt/014A.png b/fonts/MiniwiFontOutlineAlt/014A.png new file mode 100644 index 000000000..6d4fcc091 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/014A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/014B.png b/fonts/MiniwiFontOutlineAlt/014B.png new file mode 100644 index 000000000..6095046e9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/014B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/014C.png b/fonts/MiniwiFontOutlineAlt/014C.png new file mode 100644 index 000000000..e5f9d6b3b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/014C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/014D.png b/fonts/MiniwiFontOutlineAlt/014D.png new file mode 100644 index 000000000..1d9fa8aad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/014D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/014E.png b/fonts/MiniwiFontOutlineAlt/014E.png new file mode 100644 index 000000000..e5f9d6b3b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/014E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/014F.png b/fonts/MiniwiFontOutlineAlt/014F.png new file mode 100644 index 000000000..1d9fa8aad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/014F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0150.png b/fonts/MiniwiFontOutlineAlt/0150.png new file mode 100644 index 000000000..5dfd0951b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0150.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0151.png b/fonts/MiniwiFontOutlineAlt/0151.png new file mode 100644 index 000000000..e6c4f9fe0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0151.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0152.png b/fonts/MiniwiFontOutlineAlt/0152.png new file mode 100644 index 000000000..672b2352b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0152.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0153.png b/fonts/MiniwiFontOutlineAlt/0153.png new file mode 100644 index 000000000..34abe3f26 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0153.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0154.png b/fonts/MiniwiFontOutlineAlt/0154.png new file mode 100644 index 000000000..143ce3fdf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0154.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0155.png b/fonts/MiniwiFontOutlineAlt/0155.png new file mode 100644 index 000000000..adc66eef9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0155.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0156.png b/fonts/MiniwiFontOutlineAlt/0156.png new file mode 100644 index 000000000..d28e059c3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0156.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0157.png b/fonts/MiniwiFontOutlineAlt/0157.png new file mode 100644 index 000000000..3a28f5313 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0157.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0158.png b/fonts/MiniwiFontOutlineAlt/0158.png new file mode 100644 index 000000000..a58d998a8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0158.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0159.png b/fonts/MiniwiFontOutlineAlt/0159.png new file mode 100644 index 000000000..a9a581643 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0159.png differ diff --git a/fonts/MiniwiFontOutlineAlt/015A.png b/fonts/MiniwiFontOutlineAlt/015A.png new file mode 100644 index 000000000..5d013c6d7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/015A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/015B.png b/fonts/MiniwiFontOutlineAlt/015B.png new file mode 100644 index 000000000..3c49c85eb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/015B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/015C.png b/fonts/MiniwiFontOutlineAlt/015C.png new file mode 100644 index 000000000..01695f549 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/015C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/015D.png b/fonts/MiniwiFontOutlineAlt/015D.png new file mode 100644 index 000000000..b7dcfe300 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/015D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/015E.png b/fonts/MiniwiFontOutlineAlt/015E.png new file mode 100644 index 000000000..549249c90 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/015E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/015F.png b/fonts/MiniwiFontOutlineAlt/015F.png new file mode 100644 index 000000000..1799157b5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/015F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0160.png b/fonts/MiniwiFontOutlineAlt/0160.png new file mode 100644 index 000000000..01695f549 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0160.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0161.png b/fonts/MiniwiFontOutlineAlt/0161.png new file mode 100644 index 000000000..b7dcfe300 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0161.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0162.png b/fonts/MiniwiFontOutlineAlt/0162.png new file mode 100644 index 000000000..077a2f7b3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0162.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0163.png b/fonts/MiniwiFontOutlineAlt/0163.png new file mode 100644 index 000000000..7e544331c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0163.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0164.png b/fonts/MiniwiFontOutlineAlt/0164.png new file mode 100644 index 000000000..76ac9f9ab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0164.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0165.png b/fonts/MiniwiFontOutlineAlt/0165.png new file mode 100644 index 000000000..410fc4c34 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0165.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0166.png b/fonts/MiniwiFontOutlineAlt/0166.png new file mode 100644 index 000000000..8c8291f15 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0166.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0167.png b/fonts/MiniwiFontOutlineAlt/0167.png new file mode 100644 index 000000000..89b5f9632 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0167.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0168.png b/fonts/MiniwiFontOutlineAlt/0168.png new file mode 100644 index 000000000..b2b639b1b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0168.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0169.png b/fonts/MiniwiFontOutlineAlt/0169.png new file mode 100644 index 000000000..b2b639b1b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0169.png differ diff --git a/fonts/MiniwiFontOutlineAlt/016A.png b/fonts/MiniwiFontOutlineAlt/016A.png new file mode 100644 index 000000000..fff74a718 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/016A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/016B.png b/fonts/MiniwiFontOutlineAlt/016B.png new file mode 100644 index 000000000..fff74a718 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/016B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/016C.png b/fonts/MiniwiFontOutlineAlt/016C.png new file mode 100644 index 000000000..fff74a718 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/016C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/016D.png b/fonts/MiniwiFontOutlineAlt/016D.png new file mode 100644 index 000000000..fff74a718 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/016D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/016E.png b/fonts/MiniwiFontOutlineAlt/016E.png new file mode 100644 index 000000000..5831f8755 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/016E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/016F.png b/fonts/MiniwiFontOutlineAlt/016F.png new file mode 100644 index 000000000..5831f8755 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/016F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0170.png b/fonts/MiniwiFontOutlineAlt/0170.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0170.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0171.png b/fonts/MiniwiFontOutlineAlt/0171.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0171.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0172.png b/fonts/MiniwiFontOutlineAlt/0172.png new file mode 100644 index 000000000..c28d8d8a2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0172.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0173.png b/fonts/MiniwiFontOutlineAlt/0173.png new file mode 100644 index 000000000..9ffbc3b40 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0173.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0174.png b/fonts/MiniwiFontOutlineAlt/0174.png new file mode 100644 index 000000000..bb80d5355 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0174.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0175.png b/fonts/MiniwiFontOutlineAlt/0175.png new file mode 100644 index 000000000..bb80d5355 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0175.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0176.png b/fonts/MiniwiFontOutlineAlt/0176.png new file mode 100644 index 000000000..b9344c659 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0176.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0177.png b/fonts/MiniwiFontOutlineAlt/0177.png new file mode 100644 index 000000000..a1ce58cea Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0177.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0178.png b/fonts/MiniwiFontOutlineAlt/0178.png new file mode 100644 index 000000000..4a9fb67ff Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0178.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0179.png b/fonts/MiniwiFontOutlineAlt/0179.png new file mode 100644 index 000000000..3b9174b39 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0179.png differ diff --git a/fonts/MiniwiFontOutlineAlt/017A.png b/fonts/MiniwiFontOutlineAlt/017A.png new file mode 100644 index 000000000..392d64c58 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/017A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/017B.png b/fonts/MiniwiFontOutlineAlt/017B.png new file mode 100644 index 000000000..1b3462ca9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/017B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/017C.png b/fonts/MiniwiFontOutlineAlt/017C.png new file mode 100644 index 000000000..32c39f6aa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/017C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/017D.png b/fonts/MiniwiFontOutlineAlt/017D.png new file mode 100644 index 000000000..729d93062 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/017D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/017E.png b/fonts/MiniwiFontOutlineAlt/017E.png new file mode 100644 index 000000000..dd90b845a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/017E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/017F.png b/fonts/MiniwiFontOutlineAlt/017F.png new file mode 100644 index 000000000..fafbdcfe3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/017F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0180.png b/fonts/MiniwiFontOutlineAlt/0180.png new file mode 100644 index 000000000..f2e3575fc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0180.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0181.png b/fonts/MiniwiFontOutlineAlt/0181.png new file mode 100644 index 000000000..da4123118 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0181.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0182.png b/fonts/MiniwiFontOutlineAlt/0182.png new file mode 100644 index 000000000..8f5c69135 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0182.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0183.png b/fonts/MiniwiFontOutlineAlt/0183.png new file mode 100644 index 000000000..e9049574a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0183.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0184.png b/fonts/MiniwiFontOutlineAlt/0184.png new file mode 100644 index 000000000..17f6c2b01 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0184.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0185.png b/fonts/MiniwiFontOutlineAlt/0185.png new file mode 100644 index 000000000..d39dfcf5c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0185.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0186.png b/fonts/MiniwiFontOutlineAlt/0186.png new file mode 100644 index 000000000..555495a01 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0186.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0187.png b/fonts/MiniwiFontOutlineAlt/0187.png new file mode 100644 index 000000000..33991afda Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0187.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0188.png b/fonts/MiniwiFontOutlineAlt/0188.png new file mode 100644 index 000000000..b6a185a11 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0188.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0189.png b/fonts/MiniwiFontOutlineAlt/0189.png new file mode 100644 index 000000000..36064c36a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0189.png differ diff --git a/fonts/MiniwiFontOutlineAlt/018A.png b/fonts/MiniwiFontOutlineAlt/018A.png new file mode 100644 index 000000000..73ad29187 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/018A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/018B.png b/fonts/MiniwiFontOutlineAlt/018B.png new file mode 100644 index 000000000..6817d954e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/018B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/018C.png b/fonts/MiniwiFontOutlineAlt/018C.png new file mode 100644 index 000000000..6817d954e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/018C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/018D.png b/fonts/MiniwiFontOutlineAlt/018D.png new file mode 100644 index 000000000..139a76fc0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/018D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/018E.png b/fonts/MiniwiFontOutlineAlt/018E.png new file mode 100644 index 000000000..eb6216d25 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/018E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/018F.png b/fonts/MiniwiFontOutlineAlt/018F.png new file mode 100644 index 000000000..01df850c6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/018F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0190.png b/fonts/MiniwiFontOutlineAlt/0190.png new file mode 100644 index 000000000..edd75ec20 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0190.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0191.png b/fonts/MiniwiFontOutlineAlt/0191.png new file mode 100644 index 000000000..158292c68 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0191.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0192.png b/fonts/MiniwiFontOutlineAlt/0192.png new file mode 100644 index 000000000..a56ac048d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0192.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0193.png b/fonts/MiniwiFontOutlineAlt/0193.png new file mode 100644 index 000000000..b9912d0b0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0193.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0194.png b/fonts/MiniwiFontOutlineAlt/0194.png new file mode 100644 index 000000000..d999fed15 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0194.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0195.png b/fonts/MiniwiFontOutlineAlt/0195.png new file mode 100644 index 000000000..bc4126a23 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0195.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0196.png b/fonts/MiniwiFontOutlineAlt/0196.png new file mode 100644 index 000000000..61cd540a3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0196.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0197.png b/fonts/MiniwiFontOutlineAlt/0197.png new file mode 100644 index 000000000..85dd58f6e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0197.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0198.png b/fonts/MiniwiFontOutlineAlt/0198.png new file mode 100644 index 000000000..ab2229e73 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0198.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0199.png b/fonts/MiniwiFontOutlineAlt/0199.png new file mode 100644 index 000000000..d32714310 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0199.png differ diff --git a/fonts/MiniwiFontOutlineAlt/019A.png b/fonts/MiniwiFontOutlineAlt/019A.png new file mode 100644 index 000000000..85dd58f6e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/019A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/019B.png b/fonts/MiniwiFontOutlineAlt/019B.png new file mode 100644 index 000000000..c4b2c9787 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/019B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/019C.png b/fonts/MiniwiFontOutlineAlt/019C.png new file mode 100644 index 000000000..125f28ca6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/019C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/019D.png b/fonts/MiniwiFontOutlineAlt/019D.png new file mode 100644 index 000000000..700df4daf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/019D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/019E.png b/fonts/MiniwiFontOutlineAlt/019E.png new file mode 100644 index 000000000..5f94aabf8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/019E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/019F.png b/fonts/MiniwiFontOutlineAlt/019F.png new file mode 100644 index 000000000..d5d6f8139 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/019F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A0.png b/fonts/MiniwiFontOutlineAlt/01A0.png new file mode 100644 index 000000000..4230e51e3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A1.png b/fonts/MiniwiFontOutlineAlt/01A1.png new file mode 100644 index 000000000..1648c0b1c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A2.png b/fonts/MiniwiFontOutlineAlt/01A2.png new file mode 100644 index 000000000..76a420b9b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A3.png b/fonts/MiniwiFontOutlineAlt/01A3.png new file mode 100644 index 000000000..8570786f1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A4.png b/fonts/MiniwiFontOutlineAlt/01A4.png new file mode 100644 index 000000000..a72f067ef Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A5.png b/fonts/MiniwiFontOutlineAlt/01A5.png new file mode 100644 index 000000000..e2f26113b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A6.png b/fonts/MiniwiFontOutlineAlt/01A6.png new file mode 100644 index 000000000..cb8e7f721 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A7.png b/fonts/MiniwiFontOutlineAlt/01A7.png new file mode 100644 index 000000000..0a67c7c8e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A8.png b/fonts/MiniwiFontOutlineAlt/01A8.png new file mode 100644 index 000000000..cb62eda6f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01A9.png b/fonts/MiniwiFontOutlineAlt/01A9.png new file mode 100644 index 000000000..a5dfe6274 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01A9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01AA.png b/fonts/MiniwiFontOutlineAlt/01AA.png new file mode 100644 index 000000000..4e64dc021 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01AA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01AB.png b/fonts/MiniwiFontOutlineAlt/01AB.png new file mode 100644 index 000000000..7e544331c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01AB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01AC.png b/fonts/MiniwiFontOutlineAlt/01AC.png new file mode 100644 index 000000000..639b8b72f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01AC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01AD.png b/fonts/MiniwiFontOutlineAlt/01AD.png new file mode 100644 index 000000000..7285f6ac1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01AD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01AE.png b/fonts/MiniwiFontOutlineAlt/01AE.png new file mode 100644 index 000000000..e4c14f6b4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01AE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01AF.png b/fonts/MiniwiFontOutlineAlt/01AF.png new file mode 100644 index 000000000..d5d38a652 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01AF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B0.png b/fonts/MiniwiFontOutlineAlt/01B0.png new file mode 100644 index 000000000..2bac75800 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B1.png b/fonts/MiniwiFontOutlineAlt/01B1.png new file mode 100644 index 000000000..d857ef0f4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B2.png b/fonts/MiniwiFontOutlineAlt/01B2.png new file mode 100644 index 000000000..26cefee60 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B3.png b/fonts/MiniwiFontOutlineAlt/01B3.png new file mode 100644 index 000000000..05fad581d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B4.png b/fonts/MiniwiFontOutlineAlt/01B4.png new file mode 100644 index 000000000..3867194f4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B5.png b/fonts/MiniwiFontOutlineAlt/01B5.png new file mode 100644 index 000000000..61fad9415 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B6.png b/fonts/MiniwiFontOutlineAlt/01B6.png new file mode 100644 index 000000000..713b94e52 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B7.png b/fonts/MiniwiFontOutlineAlt/01B7.png new file mode 100644 index 000000000..3704b412e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B8.png b/fonts/MiniwiFontOutlineAlt/01B8.png new file mode 100644 index 000000000..e8fa94ad4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01B9.png b/fonts/MiniwiFontOutlineAlt/01B9.png new file mode 100644 index 000000000..a128b5581 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01B9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01BA.png b/fonts/MiniwiFontOutlineAlt/01BA.png new file mode 100644 index 000000000..46d6bd54c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01BA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01BB.png b/fonts/MiniwiFontOutlineAlt/01BB.png new file mode 100644 index 000000000..79c6ad080 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01BB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01BC.png b/fonts/MiniwiFontOutlineAlt/01BC.png new file mode 100644 index 000000000..cddbb5040 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01BC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01BD.png b/fonts/MiniwiFontOutlineAlt/01BD.png new file mode 100644 index 000000000..3f88b3f7d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01BD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01BE.png b/fonts/MiniwiFontOutlineAlt/01BE.png new file mode 100644 index 000000000..1a6bc67fe Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01BE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01BF.png b/fonts/MiniwiFontOutlineAlt/01BF.png new file mode 100644 index 000000000..34fe99f1d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01BF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C0.png b/fonts/MiniwiFontOutlineAlt/01C0.png new file mode 100644 index 000000000..36b7a0c45 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C1.png b/fonts/MiniwiFontOutlineAlt/01C1.png new file mode 100644 index 000000000..ff428689e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C2.png b/fonts/MiniwiFontOutlineAlt/01C2.png new file mode 100644 index 000000000..59b497b05 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C3.png b/fonts/MiniwiFontOutlineAlt/01C3.png new file mode 100644 index 000000000..36af88f4c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C4.png b/fonts/MiniwiFontOutlineAlt/01C4.png new file mode 100644 index 000000000..38781fbcc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C5.png b/fonts/MiniwiFontOutlineAlt/01C5.png new file mode 100644 index 000000000..a59c04750 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C6.png b/fonts/MiniwiFontOutlineAlt/01C6.png new file mode 100644 index 000000000..54c06d82e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C7.png b/fonts/MiniwiFontOutlineAlt/01C7.png new file mode 100644 index 000000000..9e533c361 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C8.png b/fonts/MiniwiFontOutlineAlt/01C8.png new file mode 100644 index 000000000..30692eebd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01C9.png b/fonts/MiniwiFontOutlineAlt/01C9.png new file mode 100644 index 000000000..f69441e54 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01C9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01CA.png b/fonts/MiniwiFontOutlineAlt/01CA.png new file mode 100644 index 000000000..6c404967a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01CA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01CB.png b/fonts/MiniwiFontOutlineAlt/01CB.png new file mode 100644 index 000000000..c3fbe28f7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01CB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01CC.png b/fonts/MiniwiFontOutlineAlt/01CC.png new file mode 100644 index 000000000..068a1f757 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01CC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01CD.png b/fonts/MiniwiFontOutlineAlt/01CD.png new file mode 100644 index 000000000..f7ce2e4b4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01CD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01CE.png b/fonts/MiniwiFontOutlineAlt/01CE.png new file mode 100644 index 000000000..ac169a15d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01CE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01CF.png b/fonts/MiniwiFontOutlineAlt/01CF.png new file mode 100644 index 000000000..7697f7ee4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01CF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D0.png b/fonts/MiniwiFontOutlineAlt/01D0.png new file mode 100644 index 000000000..3911fc230 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D1.png b/fonts/MiniwiFontOutlineAlt/01D1.png new file mode 100644 index 000000000..e5f9d6b3b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D2.png b/fonts/MiniwiFontOutlineAlt/01D2.png new file mode 100644 index 000000000..1d9fa8aad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D3.png b/fonts/MiniwiFontOutlineAlt/01D3.png new file mode 100644 index 000000000..fff74a718 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D4.png b/fonts/MiniwiFontOutlineAlt/01D4.png new file mode 100644 index 000000000..fff74a718 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D5.png b/fonts/MiniwiFontOutlineAlt/01D5.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D6.png b/fonts/MiniwiFontOutlineAlt/01D6.png new file mode 100644 index 000000000..cd0fa01f7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D7.png b/fonts/MiniwiFontOutlineAlt/01D7.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D8.png b/fonts/MiniwiFontOutlineAlt/01D8.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01D9.png b/fonts/MiniwiFontOutlineAlt/01D9.png new file mode 100644 index 000000000..cd0fa01f7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01D9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01DA.png b/fonts/MiniwiFontOutlineAlt/01DA.png new file mode 100644 index 000000000..cd0fa01f7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01DA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01DB.png b/fonts/MiniwiFontOutlineAlt/01DB.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01DB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01DC.png b/fonts/MiniwiFontOutlineAlt/01DC.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01DC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01DD.png b/fonts/MiniwiFontOutlineAlt/01DD.png new file mode 100644 index 000000000..74431810b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01DD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01DE.png b/fonts/MiniwiFontOutlineAlt/01DE.png new file mode 100644 index 000000000..773ca6dfe Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01DE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01DF.png b/fonts/MiniwiFontOutlineAlt/01DF.png new file mode 100644 index 000000000..490662bc8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01DF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E0.png b/fonts/MiniwiFontOutlineAlt/01E0.png new file mode 100644 index 000000000..7d83232c6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E1.png b/fonts/MiniwiFontOutlineAlt/01E1.png new file mode 100644 index 000000000..91aeae4b1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E2.png b/fonts/MiniwiFontOutlineAlt/01E2.png new file mode 100644 index 000000000..a4fe8aa8c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E3.png b/fonts/MiniwiFontOutlineAlt/01E3.png new file mode 100644 index 000000000..919241bd1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E4.png b/fonts/MiniwiFontOutlineAlt/01E4.png new file mode 100644 index 000000000..2a128a2da Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E5.png b/fonts/MiniwiFontOutlineAlt/01E5.png new file mode 100644 index 000000000..aa3b29607 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E6.png b/fonts/MiniwiFontOutlineAlt/01E6.png new file mode 100644 index 000000000..318aca167 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E7.png b/fonts/MiniwiFontOutlineAlt/01E7.png new file mode 100644 index 000000000..5542bcb58 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E8.png b/fonts/MiniwiFontOutlineAlt/01E8.png new file mode 100644 index 000000000..fa34807b2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01E9.png b/fonts/MiniwiFontOutlineAlt/01E9.png new file mode 100644 index 000000000..83af35e36 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01E9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01EA.png b/fonts/MiniwiFontOutlineAlt/01EA.png new file mode 100644 index 000000000..1d7e3cc0d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01EA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01EB.png b/fonts/MiniwiFontOutlineAlt/01EB.png new file mode 100644 index 000000000..1690bc4a1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01EB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01EC.png b/fonts/MiniwiFontOutlineAlt/01EC.png new file mode 100644 index 000000000..2db6977af Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01EC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01ED.png b/fonts/MiniwiFontOutlineAlt/01ED.png new file mode 100644 index 000000000..773d0ce73 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01ED.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01EE.png b/fonts/MiniwiFontOutlineAlt/01EE.png new file mode 100644 index 000000000..5d6fc6930 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01EE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01EF.png b/fonts/MiniwiFontOutlineAlt/01EF.png new file mode 100644 index 000000000..3e00a84af Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01EF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F0.png b/fonts/MiniwiFontOutlineAlt/01F0.png new file mode 100644 index 000000000..4df2a047d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F1.png b/fonts/MiniwiFontOutlineAlt/01F1.png new file mode 100644 index 000000000..80dbdd177 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F2.png b/fonts/MiniwiFontOutlineAlt/01F2.png new file mode 100644 index 000000000..80b1d7e32 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F3.png b/fonts/MiniwiFontOutlineAlt/01F3.png new file mode 100644 index 000000000..97121ddd9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F4.png b/fonts/MiniwiFontOutlineAlt/01F4.png new file mode 100644 index 000000000..b7beab24f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F5.png b/fonts/MiniwiFontOutlineAlt/01F5.png new file mode 100644 index 000000000..1fe775283 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F6.png b/fonts/MiniwiFontOutlineAlt/01F6.png new file mode 100644 index 000000000..9e3d2f639 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F7.png b/fonts/MiniwiFontOutlineAlt/01F7.png new file mode 100644 index 000000000..1d3360168 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F8.png b/fonts/MiniwiFontOutlineAlt/01F8.png new file mode 100644 index 000000000..02b866b35 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01F9.png b/fonts/MiniwiFontOutlineAlt/01F9.png new file mode 100644 index 000000000..ff622c4cf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01F9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01FA.png b/fonts/MiniwiFontOutlineAlt/01FA.png new file mode 100644 index 000000000..03b3b2dde Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01FA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01FB.png b/fonts/MiniwiFontOutlineAlt/01FB.png new file mode 100644 index 000000000..741381140 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01FB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01FC.png b/fonts/MiniwiFontOutlineAlt/01FC.png new file mode 100644 index 000000000..8caeaba62 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01FC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01FD.png b/fonts/MiniwiFontOutlineAlt/01FD.png new file mode 100644 index 000000000..ab0ea087f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01FD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01FE.png b/fonts/MiniwiFontOutlineAlt/01FE.png new file mode 100644 index 000000000..21de37e48 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01FE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/01FF.png b/fonts/MiniwiFontOutlineAlt/01FF.png new file mode 100644 index 000000000..057f62334 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/01FF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0200.png b/fonts/MiniwiFontOutlineAlt/0200.png new file mode 100644 index 000000000..8d4c14e8e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0200.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0201.png b/fonts/MiniwiFontOutlineAlt/0201.png new file mode 100644 index 000000000..81d06b24e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0201.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0202.png b/fonts/MiniwiFontOutlineAlt/0202.png new file mode 100644 index 000000000..f7ce2e4b4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0202.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0203.png b/fonts/MiniwiFontOutlineAlt/0203.png new file mode 100644 index 000000000..ac169a15d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0203.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0204.png b/fonts/MiniwiFontOutlineAlt/0204.png new file mode 100644 index 000000000..a0db80658 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0204.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0205.png b/fonts/MiniwiFontOutlineAlt/0205.png new file mode 100644 index 000000000..8261affbd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0205.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0206.png b/fonts/MiniwiFontOutlineAlt/0206.png new file mode 100644 index 000000000..f2cd1acac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0206.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0207.png b/fonts/MiniwiFontOutlineAlt/0207.png new file mode 100644 index 000000000..3322335db Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0207.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0208.png b/fonts/MiniwiFontOutlineAlt/0208.png new file mode 100644 index 000000000..ebeca2df7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0208.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0209.png b/fonts/MiniwiFontOutlineAlt/0209.png new file mode 100644 index 000000000..ff29273f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0209.png differ diff --git a/fonts/MiniwiFontOutlineAlt/020A.png b/fonts/MiniwiFontOutlineAlt/020A.png new file mode 100644 index 000000000..7697f7ee4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/020A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/020B.png b/fonts/MiniwiFontOutlineAlt/020B.png new file mode 100644 index 000000000..ff29273f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/020B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/020C.png b/fonts/MiniwiFontOutlineAlt/020C.png new file mode 100644 index 000000000..5dfd0951b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/020C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/020D.png b/fonts/MiniwiFontOutlineAlt/020D.png new file mode 100644 index 000000000..e6c4f9fe0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/020D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/020E.png b/fonts/MiniwiFontOutlineAlt/020E.png new file mode 100644 index 000000000..e5f9d6b3b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/020E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/020F.png b/fonts/MiniwiFontOutlineAlt/020F.png new file mode 100644 index 000000000..1d9fa8aad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/020F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0210.png b/fonts/MiniwiFontOutlineAlt/0210.png new file mode 100644 index 000000000..b9aeade4b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0210.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0211.png b/fonts/MiniwiFontOutlineAlt/0211.png new file mode 100644 index 000000000..2559cf717 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0211.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0212.png b/fonts/MiniwiFontOutlineAlt/0212.png new file mode 100644 index 000000000..a58d998a8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0212.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0213.png b/fonts/MiniwiFontOutlineAlt/0213.png new file mode 100644 index 000000000..a9a581643 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0213.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0214.png b/fonts/MiniwiFontOutlineAlt/0214.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0214.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0215.png b/fonts/MiniwiFontOutlineAlt/0215.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0215.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0216.png b/fonts/MiniwiFontOutlineAlt/0216.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0216.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0217.png b/fonts/MiniwiFontOutlineAlt/0217.png new file mode 100644 index 000000000..abb563615 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0217.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0218.png b/fonts/MiniwiFontOutlineAlt/0218.png new file mode 100644 index 000000000..549249c90 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0218.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0219.png b/fonts/MiniwiFontOutlineAlt/0219.png new file mode 100644 index 000000000..1799157b5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0219.png differ diff --git a/fonts/MiniwiFontOutlineAlt/021A.png b/fonts/MiniwiFontOutlineAlt/021A.png new file mode 100644 index 000000000..e4c14f6b4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/021A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/021B.png b/fonts/MiniwiFontOutlineAlt/021B.png new file mode 100644 index 000000000..00c4d692b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/021B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/021C.png b/fonts/MiniwiFontOutlineAlt/021C.png new file mode 100644 index 000000000..4a40beaa0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/021C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/021D.png b/fonts/MiniwiFontOutlineAlt/021D.png new file mode 100644 index 000000000..b8096a326 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/021D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/021E.png b/fonts/MiniwiFontOutlineAlt/021E.png new file mode 100644 index 000000000..2c443c261 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/021E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/021F.png b/fonts/MiniwiFontOutlineAlt/021F.png new file mode 100644 index 000000000..d66fb8b9f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/021F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0220.png b/fonts/MiniwiFontOutlineAlt/0220.png new file mode 100644 index 000000000..44e3512cb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0220.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0221.png b/fonts/MiniwiFontOutlineAlt/0221.png new file mode 100644 index 000000000..1823528f8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0221.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0222.png b/fonts/MiniwiFontOutlineAlt/0222.png new file mode 100644 index 000000000..7156a60ca Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0222.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0223.png b/fonts/MiniwiFontOutlineAlt/0223.png new file mode 100644 index 000000000..955dcee34 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0223.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0224.png b/fonts/MiniwiFontOutlineAlt/0224.png new file mode 100644 index 000000000..06fa70e84 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0224.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0225.png b/fonts/MiniwiFontOutlineAlt/0225.png new file mode 100644 index 000000000..ec36eca8c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0225.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0226.png b/fonts/MiniwiFontOutlineAlt/0226.png new file mode 100644 index 000000000..1e49b4ea7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0226.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0227.png b/fonts/MiniwiFontOutlineAlt/0227.png new file mode 100644 index 000000000..1db3a1331 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0227.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0228.png b/fonts/MiniwiFontOutlineAlt/0228.png new file mode 100644 index 000000000..c901c9833 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0228.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0229.png b/fonts/MiniwiFontOutlineAlt/0229.png new file mode 100644 index 000000000..d30ff9bb9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0229.png differ diff --git a/fonts/MiniwiFontOutlineAlt/022A.png b/fonts/MiniwiFontOutlineAlt/022A.png new file mode 100644 index 000000000..b724108e6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/022A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/022B.png b/fonts/MiniwiFontOutlineAlt/022B.png new file mode 100644 index 000000000..b724108e6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/022B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/022C.png b/fonts/MiniwiFontOutlineAlt/022C.png new file mode 100644 index 000000000..2621a1be3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/022C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/022D.png b/fonts/MiniwiFontOutlineAlt/022D.png new file mode 100644 index 000000000..2621a1be3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/022D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/022E.png b/fonts/MiniwiFontOutlineAlt/022E.png new file mode 100644 index 000000000..dbd8f930f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/022E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/022F.png b/fonts/MiniwiFontOutlineAlt/022F.png new file mode 100644 index 000000000..43d571a80 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/022F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0230.png b/fonts/MiniwiFontOutlineAlt/0230.png new file mode 100644 index 000000000..147be159d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0230.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0231.png b/fonts/MiniwiFontOutlineAlt/0231.png new file mode 100644 index 000000000..147be159d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0231.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0232.png b/fonts/MiniwiFontOutlineAlt/0232.png new file mode 100644 index 000000000..b9344c659 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0232.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0233.png b/fonts/MiniwiFontOutlineAlt/0233.png new file mode 100644 index 000000000..a1ce58cea Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0233.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0234.png b/fonts/MiniwiFontOutlineAlt/0234.png new file mode 100644 index 000000000..7a828c49a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0234.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0235.png b/fonts/MiniwiFontOutlineAlt/0235.png new file mode 100644 index 000000000..6433075cf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0235.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0236.png b/fonts/MiniwiFontOutlineAlt/0236.png new file mode 100644 index 000000000..d0dea55c3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0236.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0237.png b/fonts/MiniwiFontOutlineAlt/0237.png new file mode 100644 index 000000000..ba4547b1d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0237.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0238.png b/fonts/MiniwiFontOutlineAlt/0238.png new file mode 100644 index 000000000..af76a0150 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0238.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0239.png b/fonts/MiniwiFontOutlineAlt/0239.png new file mode 100644 index 000000000..72886679d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0239.png differ diff --git a/fonts/MiniwiFontOutlineAlt/023A.png b/fonts/MiniwiFontOutlineAlt/023A.png new file mode 100644 index 000000000..9f319a5d5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/023A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/023B.png b/fonts/MiniwiFontOutlineAlt/023B.png new file mode 100644 index 000000000..8d173c930 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/023B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/023C.png b/fonts/MiniwiFontOutlineAlt/023C.png new file mode 100644 index 000000000..53e4d55d2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/023C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/023D.png b/fonts/MiniwiFontOutlineAlt/023D.png new file mode 100644 index 000000000..104624a5e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/023D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/023E.png b/fonts/MiniwiFontOutlineAlt/023E.png new file mode 100644 index 000000000..b711ceaa8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/023E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/023F.png b/fonts/MiniwiFontOutlineAlt/023F.png new file mode 100644 index 000000000..f4f1b8e34 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/023F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0240.png b/fonts/MiniwiFontOutlineAlt/0240.png new file mode 100644 index 000000000..3532a55e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0240.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0241.png b/fonts/MiniwiFontOutlineAlt/0241.png new file mode 100644 index 000000000..b8d48cc73 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0241.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0242.png b/fonts/MiniwiFontOutlineAlt/0242.png new file mode 100644 index 000000000..ca20d6daa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0242.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0243.png b/fonts/MiniwiFontOutlineAlt/0243.png new file mode 100644 index 000000000..5817887a4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0243.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0244.png b/fonts/MiniwiFontOutlineAlt/0244.png new file mode 100644 index 000000000..a6c80fc26 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0244.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0245.png b/fonts/MiniwiFontOutlineAlt/0245.png new file mode 100644 index 000000000..9110c7923 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0245.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0246.png b/fonts/MiniwiFontOutlineAlt/0246.png new file mode 100644 index 000000000..ce27c4b6a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0246.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0247.png b/fonts/MiniwiFontOutlineAlt/0247.png new file mode 100644 index 000000000..a85df888c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0247.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0248.png b/fonts/MiniwiFontOutlineAlt/0248.png new file mode 100644 index 000000000..9c59673da Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0248.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0249.png b/fonts/MiniwiFontOutlineAlt/0249.png new file mode 100644 index 000000000..17539bb55 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0249.png differ diff --git a/fonts/MiniwiFontOutlineAlt/024A.png b/fonts/MiniwiFontOutlineAlt/024A.png new file mode 100644 index 000000000..982b8e580 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/024A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/024B.png b/fonts/MiniwiFontOutlineAlt/024B.png new file mode 100644 index 000000000..78b7d0212 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/024B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/024C.png b/fonts/MiniwiFontOutlineAlt/024C.png new file mode 100644 index 000000000..3effba898 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/024C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/024D.png b/fonts/MiniwiFontOutlineAlt/024D.png new file mode 100644 index 000000000..588c90e44 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/024D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/024E.png b/fonts/MiniwiFontOutlineAlt/024E.png new file mode 100644 index 000000000..9f6e45dac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/024E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/024F.png b/fonts/MiniwiFontOutlineAlt/024F.png new file mode 100644 index 000000000..56d0d1f70 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/024F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0250.png b/fonts/MiniwiFontOutlineAlt/0250.png new file mode 100644 index 000000000..74ffd6cef Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0250.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0251.png b/fonts/MiniwiFontOutlineAlt/0251.png new file mode 100644 index 000000000..f5e3cdd51 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0251.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0252.png b/fonts/MiniwiFontOutlineAlt/0252.png new file mode 100644 index 000000000..67baf77f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0252.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0253.png b/fonts/MiniwiFontOutlineAlt/0253.png new file mode 100644 index 000000000..b0a6b154b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0253.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0254.png b/fonts/MiniwiFontOutlineAlt/0254.png new file mode 100644 index 000000000..a2b458813 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0254.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0255.png b/fonts/MiniwiFontOutlineAlt/0255.png new file mode 100644 index 000000000..d0af1d4a8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0255.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0256.png b/fonts/MiniwiFontOutlineAlt/0256.png new file mode 100644 index 000000000..73a29aac5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0256.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0257.png b/fonts/MiniwiFontOutlineAlt/0257.png new file mode 100644 index 000000000..c96bc7b64 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0257.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0258.png b/fonts/MiniwiFontOutlineAlt/0258.png new file mode 100644 index 000000000..2c969674d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0258.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0259.png b/fonts/MiniwiFontOutlineAlt/0259.png new file mode 100644 index 000000000..74431810b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0259.png differ diff --git a/fonts/MiniwiFontOutlineAlt/025A.png b/fonts/MiniwiFontOutlineAlt/025A.png new file mode 100644 index 000000000..3a67df767 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/025A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/025B.png b/fonts/MiniwiFontOutlineAlt/025B.png new file mode 100644 index 000000000..322a5e4ba Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/025B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/025C.png b/fonts/MiniwiFontOutlineAlt/025C.png new file mode 100644 index 000000000..f6c8c3aaa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/025C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/025D.png b/fonts/MiniwiFontOutlineAlt/025D.png new file mode 100644 index 000000000..7f1bd1560 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/025D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/025E.png b/fonts/MiniwiFontOutlineAlt/025E.png new file mode 100644 index 000000000..9bc28f099 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/025E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/025F.png b/fonts/MiniwiFontOutlineAlt/025F.png new file mode 100644 index 000000000..7e2c8b976 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/025F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0260.png b/fonts/MiniwiFontOutlineAlt/0260.png new file mode 100644 index 000000000..3c9f329e3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0260.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0261.png b/fonts/MiniwiFontOutlineAlt/0261.png new file mode 100644 index 000000000..5ddf6b05d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0261.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0262.png b/fonts/MiniwiFontOutlineAlt/0262.png new file mode 100644 index 000000000..bf702e559 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0262.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0263.png b/fonts/MiniwiFontOutlineAlt/0263.png new file mode 100644 index 000000000..69ee7ccce Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0263.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0264.png b/fonts/MiniwiFontOutlineAlt/0264.png new file mode 100644 index 000000000..2272deda7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0264.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0265.png b/fonts/MiniwiFontOutlineAlt/0265.png new file mode 100644 index 000000000..240d38c08 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0265.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0266.png b/fonts/MiniwiFontOutlineAlt/0266.png new file mode 100644 index 000000000..ef1088565 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0266.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0267.png b/fonts/MiniwiFontOutlineAlt/0267.png new file mode 100644 index 000000000..32be7113f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0267.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0268.png b/fonts/MiniwiFontOutlineAlt/0268.png new file mode 100644 index 000000000..22ed8e598 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0268.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0269.png b/fonts/MiniwiFontOutlineAlt/0269.png new file mode 100644 index 000000000..9d0996de3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0269.png differ diff --git a/fonts/MiniwiFontOutlineAlt/026A.png b/fonts/MiniwiFontOutlineAlt/026A.png new file mode 100644 index 000000000..2bbac01bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/026A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/026B.png b/fonts/MiniwiFontOutlineAlt/026B.png new file mode 100644 index 000000000..a4b9e12a9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/026B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/026C.png b/fonts/MiniwiFontOutlineAlt/026C.png new file mode 100644 index 000000000..7075e35fa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/026C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/026D.png b/fonts/MiniwiFontOutlineAlt/026D.png new file mode 100644 index 000000000..ea1c08054 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/026D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/026E.png b/fonts/MiniwiFontOutlineAlt/026E.png new file mode 100644 index 000000000..b6c9881b3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/026E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/026F.png b/fonts/MiniwiFontOutlineAlt/026F.png new file mode 100644 index 000000000..0db633a4d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/026F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0270.png b/fonts/MiniwiFontOutlineAlt/0270.png new file mode 100644 index 000000000..33b65ae45 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0270.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0271.png b/fonts/MiniwiFontOutlineAlt/0271.png new file mode 100644 index 000000000..8a880e796 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0271.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0272.png b/fonts/MiniwiFontOutlineAlt/0272.png new file mode 100644 index 000000000..2bd5c01e7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0272.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0273.png b/fonts/MiniwiFontOutlineAlt/0273.png new file mode 100644 index 000000000..3a42270b4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0273.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0274.png b/fonts/MiniwiFontOutlineAlt/0274.png new file mode 100644 index 000000000..f9becc853 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0274.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0275.png b/fonts/MiniwiFontOutlineAlt/0275.png new file mode 100644 index 000000000..0bb2fba30 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0275.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0276.png b/fonts/MiniwiFontOutlineAlt/0276.png new file mode 100644 index 000000000..672b2352b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0276.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0277.png b/fonts/MiniwiFontOutlineAlt/0277.png new file mode 100644 index 000000000..8b0f9a864 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0277.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0278.png b/fonts/MiniwiFontOutlineAlt/0278.png new file mode 100644 index 000000000..89e6a668c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0278.png differ diff --git a/fonts/MiniwiFontOutlineAlt/02C6.png b/fonts/MiniwiFontOutlineAlt/02C6.png new file mode 100644 index 000000000..a63f40cb1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/02C6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/02C7.png b/fonts/MiniwiFontOutlineAlt/02C7.png new file mode 100644 index 000000000..f475114ca Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/02C7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/02D8.png b/fonts/MiniwiFontOutlineAlt/02D8.png new file mode 100644 index 000000000..7e8618ac2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/02D8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/02D9.png b/fonts/MiniwiFontOutlineAlt/02D9.png new file mode 100644 index 000000000..dd93a9f71 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/02D9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/02DA.png b/fonts/MiniwiFontOutlineAlt/02DA.png new file mode 100644 index 000000000..dfc036cb9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/02DA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/02DB.png b/fonts/MiniwiFontOutlineAlt/02DB.png new file mode 100644 index 000000000..b62fa900f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/02DB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/02DC.png b/fonts/MiniwiFontOutlineAlt/02DC.png new file mode 100644 index 000000000..073670b3a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/02DC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/02DD.png b/fonts/MiniwiFontOutlineAlt/02DD.png new file mode 100644 index 000000000..999d4b1a2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/02DD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0384.png b/fonts/MiniwiFontOutlineAlt/0384.png new file mode 100644 index 000000000..65ff3d86d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0384.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0385.png b/fonts/MiniwiFontOutlineAlt/0385.png new file mode 100644 index 000000000..be15cbc59 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0385.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0386.png b/fonts/MiniwiFontOutlineAlt/0386.png new file mode 100644 index 000000000..ad8725de5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0386.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0388.png b/fonts/MiniwiFontOutlineAlt/0388.png new file mode 100644 index 000000000..96eb9fda5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0388.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0389.png b/fonts/MiniwiFontOutlineAlt/0389.png new file mode 100644 index 000000000..cca7ed91e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0389.png differ diff --git a/fonts/MiniwiFontOutlineAlt/038A.png b/fonts/MiniwiFontOutlineAlt/038A.png new file mode 100644 index 000000000..1b4eab85c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/038A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/038C.png b/fonts/MiniwiFontOutlineAlt/038C.png new file mode 100644 index 000000000..8f08abcfc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/038C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/038E.png b/fonts/MiniwiFontOutlineAlt/038E.png new file mode 100644 index 000000000..8ba80a03d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/038E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/038F.png b/fonts/MiniwiFontOutlineAlt/038F.png new file mode 100644 index 000000000..4be3b6651 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/038F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0390.png b/fonts/MiniwiFontOutlineAlt/0390.png new file mode 100644 index 000000000..5b6dd399d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0390.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0391.png b/fonts/MiniwiFontOutlineAlt/0391.png new file mode 100644 index 000000000..9a2ff4c39 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0391.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0392.png b/fonts/MiniwiFontOutlineAlt/0392.png new file mode 100644 index 000000000..fba977a0b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0392.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0393.png b/fonts/MiniwiFontOutlineAlt/0393.png new file mode 100644 index 000000000..7c6343071 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0393.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0394.png b/fonts/MiniwiFontOutlineAlt/0394.png new file mode 100644 index 000000000..635914b50 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0394.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0395.png b/fonts/MiniwiFontOutlineAlt/0395.png new file mode 100644 index 000000000..b48f8e6c4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0395.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0396.png b/fonts/MiniwiFontOutlineAlt/0396.png new file mode 100644 index 000000000..a61dcdd9e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0396.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0397.png b/fonts/MiniwiFontOutlineAlt/0397.png new file mode 100644 index 000000000..cca7ed91e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0397.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0398.png b/fonts/MiniwiFontOutlineAlt/0398.png new file mode 100644 index 000000000..ec6e6df4a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0398.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0399.png b/fonts/MiniwiFontOutlineAlt/0399.png new file mode 100644 index 000000000..b20253f94 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0399.png differ diff --git a/fonts/MiniwiFontOutlineAlt/039A.png b/fonts/MiniwiFontOutlineAlt/039A.png new file mode 100644 index 000000000..c473b55ba Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/039A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/039B.png b/fonts/MiniwiFontOutlineAlt/039B.png new file mode 100644 index 000000000..9110c7923 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/039B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/039C.png b/fonts/MiniwiFontOutlineAlt/039C.png new file mode 100644 index 000000000..ff9116d19 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/039C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/039D.png b/fonts/MiniwiFontOutlineAlt/039D.png new file mode 100644 index 000000000..01523da12 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/039D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/039E.png b/fonts/MiniwiFontOutlineAlt/039E.png new file mode 100644 index 000000000..0f43f9d21 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/039E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/039F.png b/fonts/MiniwiFontOutlineAlt/039F.png new file mode 100644 index 000000000..a085af350 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/039F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A0.png b/fonts/MiniwiFontOutlineAlt/03A0.png new file mode 100644 index 000000000..99be31354 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A1.png b/fonts/MiniwiFontOutlineAlt/03A1.png new file mode 100644 index 000000000..7514cdb84 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A3.png b/fonts/MiniwiFontOutlineAlt/03A3.png new file mode 100644 index 000000000..a5dfe6274 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A4.png b/fonts/MiniwiFontOutlineAlt/03A4.png new file mode 100644 index 000000000..76ac9f9ab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A5.png b/fonts/MiniwiFontOutlineAlt/03A5.png new file mode 100644 index 000000000..f7baf0cad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A6.png b/fonts/MiniwiFontOutlineAlt/03A6.png new file mode 100644 index 000000000..b0c0ed985 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A7.png b/fonts/MiniwiFontOutlineAlt/03A7.png new file mode 100644 index 000000000..37f821843 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A8.png b/fonts/MiniwiFontOutlineAlt/03A8.png new file mode 100644 index 000000000..7e08bab68 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03A9.png b/fonts/MiniwiFontOutlineAlt/03A9.png new file mode 100644 index 000000000..8251534cc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03A9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03AA.png b/fonts/MiniwiFontOutlineAlt/03AA.png new file mode 100644 index 000000000..ebeca2df7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03AA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03AB.png b/fonts/MiniwiFontOutlineAlt/03AB.png new file mode 100644 index 000000000..4a9fb67ff Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03AB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03AC.png b/fonts/MiniwiFontOutlineAlt/03AC.png new file mode 100644 index 000000000..359518613 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03AC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03AD.png b/fonts/MiniwiFontOutlineAlt/03AD.png new file mode 100644 index 000000000..a7d77ba1a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03AD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03AE.png b/fonts/MiniwiFontOutlineAlt/03AE.png new file mode 100644 index 000000000..b4e8ea5b7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03AE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03AF.png b/fonts/MiniwiFontOutlineAlt/03AF.png new file mode 100644 index 000000000..93d256145 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03AF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B0.png b/fonts/MiniwiFontOutlineAlt/03B0.png new file mode 100644 index 000000000..f1dc589c7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B1.png b/fonts/MiniwiFontOutlineAlt/03B1.png new file mode 100644 index 000000000..e0fafde9a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B2.png b/fonts/MiniwiFontOutlineAlt/03B2.png new file mode 100644 index 000000000..719d73ed4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B3.png b/fonts/MiniwiFontOutlineAlt/03B3.png new file mode 100644 index 000000000..46cc27b5a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B4.png b/fonts/MiniwiFontOutlineAlt/03B4.png new file mode 100644 index 000000000..bb76d9886 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B5.png b/fonts/MiniwiFontOutlineAlt/03B5.png new file mode 100644 index 000000000..322a5e4ba Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B6.png b/fonts/MiniwiFontOutlineAlt/03B6.png new file mode 100644 index 000000000..7d9cf49dc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B7.png b/fonts/MiniwiFontOutlineAlt/03B7.png new file mode 100644 index 000000000..5f94aabf8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B8.png b/fonts/MiniwiFontOutlineAlt/03B8.png new file mode 100644 index 000000000..e6188c9f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03B9.png b/fonts/MiniwiFontOutlineAlt/03B9.png new file mode 100644 index 000000000..9d0996de3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03B9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03BA.png b/fonts/MiniwiFontOutlineAlt/03BA.png new file mode 100644 index 000000000..7a0aec436 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03BA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03BB.png b/fonts/MiniwiFontOutlineAlt/03BB.png new file mode 100644 index 000000000..29de4d94f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03BB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03BC.png b/fonts/MiniwiFontOutlineAlt/03BC.png new file mode 100644 index 000000000..eec8ea41f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03BC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03BD.png b/fonts/MiniwiFontOutlineAlt/03BD.png new file mode 100644 index 000000000..d6f338901 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03BD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03BE.png b/fonts/MiniwiFontOutlineAlt/03BE.png new file mode 100644 index 000000000..157184787 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03BE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03BF.png b/fonts/MiniwiFontOutlineAlt/03BF.png new file mode 100644 index 000000000..611f65065 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03BF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C0.png b/fonts/MiniwiFontOutlineAlt/03C0.png new file mode 100644 index 000000000..5d98429cc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C1.png b/fonts/MiniwiFontOutlineAlt/03C1.png new file mode 100644 index 000000000..0e7f0023b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C2.png b/fonts/MiniwiFontOutlineAlt/03C2.png new file mode 100644 index 000000000..aee8c3912 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C3.png b/fonts/MiniwiFontOutlineAlt/03C3.png new file mode 100644 index 000000000..deb331092 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C4.png b/fonts/MiniwiFontOutlineAlt/03C4.png new file mode 100644 index 000000000..81f2e201c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C5.png b/fonts/MiniwiFontOutlineAlt/03C5.png new file mode 100644 index 000000000..f7b1e2e08 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C6.png b/fonts/MiniwiFontOutlineAlt/03C6.png new file mode 100644 index 000000000..b69c27e3d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C7.png b/fonts/MiniwiFontOutlineAlt/03C7.png new file mode 100644 index 000000000..d56be66a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C8.png b/fonts/MiniwiFontOutlineAlt/03C8.png new file mode 100644 index 000000000..e7cfd902d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03C9.png b/fonts/MiniwiFontOutlineAlt/03C9.png new file mode 100644 index 000000000..d449ed82b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03C9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03CA.png b/fonts/MiniwiFontOutlineAlt/03CA.png new file mode 100644 index 000000000..5c507fdde Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03CA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03CB.png b/fonts/MiniwiFontOutlineAlt/03CB.png new file mode 100644 index 000000000..7cdfecc1a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03CB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03CC.png b/fonts/MiniwiFontOutlineAlt/03CC.png new file mode 100644 index 000000000..fabf734e6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03CC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03CD.png b/fonts/MiniwiFontOutlineAlt/03CD.png new file mode 100644 index 000000000..c840041a6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03CD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03CE.png b/fonts/MiniwiFontOutlineAlt/03CE.png new file mode 100644 index 000000000..18bb1af82 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03CE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03D1.png b/fonts/MiniwiFontOutlineAlt/03D1.png new file mode 100644 index 000000000..9eadc4c47 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03D1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03D2.png b/fonts/MiniwiFontOutlineAlt/03D2.png new file mode 100644 index 000000000..54ce931ad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03D2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03D5.png b/fonts/MiniwiFontOutlineAlt/03D5.png new file mode 100644 index 000000000..0f902a382 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03D5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/03D6.png b/fonts/MiniwiFontOutlineAlt/03D6.png new file mode 100644 index 000000000..97f88951a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/03D6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0401.png b/fonts/MiniwiFontOutlineAlt/0401.png new file mode 100644 index 000000000..a0db80658 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0401.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0402.png b/fonts/MiniwiFontOutlineAlt/0402.png new file mode 100644 index 000000000..a488cf618 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0402.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0403.png b/fonts/MiniwiFontOutlineAlt/0403.png new file mode 100644 index 000000000..18f466257 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0403.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0404.png b/fonts/MiniwiFontOutlineAlt/0404.png new file mode 100644 index 000000000..b3e562767 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0404.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0405.png b/fonts/MiniwiFontOutlineAlt/0405.png new file mode 100644 index 000000000..7a0705ec2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0405.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0406.png b/fonts/MiniwiFontOutlineAlt/0406.png new file mode 100644 index 000000000..b20253f94 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0406.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0407.png b/fonts/MiniwiFontOutlineAlt/0407.png new file mode 100644 index 000000000..ebeca2df7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0407.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0408.png b/fonts/MiniwiFontOutlineAlt/0408.png new file mode 100644 index 000000000..f24808d87 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0408.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0409.png b/fonts/MiniwiFontOutlineAlt/0409.png new file mode 100644 index 000000000..3689f131c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0409.png differ diff --git a/fonts/MiniwiFontOutlineAlt/040A.png b/fonts/MiniwiFontOutlineAlt/040A.png new file mode 100644 index 000000000..9e3d2f639 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/040A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/040B.png b/fonts/MiniwiFontOutlineAlt/040B.png new file mode 100644 index 000000000..ef1088565 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/040B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/040C.png b/fonts/MiniwiFontOutlineAlt/040C.png new file mode 100644 index 000000000..f23653438 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/040C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/040E.png b/fonts/MiniwiFontOutlineAlt/040E.png new file mode 100644 index 000000000..a1ce58cea Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/040E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/040F.png b/fonts/MiniwiFontOutlineAlt/040F.png new file mode 100644 index 000000000..d744ccb20 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/040F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0410.png b/fonts/MiniwiFontOutlineAlt/0410.png new file mode 100644 index 000000000..9a2ff4c39 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0410.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0411.png b/fonts/MiniwiFontOutlineAlt/0411.png new file mode 100644 index 000000000..0d0ef945c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0411.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0412.png b/fonts/MiniwiFontOutlineAlt/0412.png new file mode 100644 index 000000000..fba977a0b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0412.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0413.png b/fonts/MiniwiFontOutlineAlt/0413.png new file mode 100644 index 000000000..13f192eab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0413.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0414.png b/fonts/MiniwiFontOutlineAlt/0414.png new file mode 100644 index 000000000..0b706e07b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0414.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0415.png b/fonts/MiniwiFontOutlineAlt/0415.png new file mode 100644 index 000000000..b48f8e6c4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0415.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0416.png b/fonts/MiniwiFontOutlineAlt/0416.png new file mode 100644 index 000000000..a810f2f98 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0416.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0417.png b/fonts/MiniwiFontOutlineAlt/0417.png new file mode 100644 index 000000000..c6fc24c82 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0417.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0418.png b/fonts/MiniwiFontOutlineAlt/0418.png new file mode 100644 index 000000000..01523da12 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0418.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0419.png b/fonts/MiniwiFontOutlineAlt/0419.png new file mode 100644 index 000000000..f051ba899 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0419.png differ diff --git a/fonts/MiniwiFontOutlineAlt/041A.png b/fonts/MiniwiFontOutlineAlt/041A.png new file mode 100644 index 000000000..c473b55ba Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/041A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/041B.png b/fonts/MiniwiFontOutlineAlt/041B.png new file mode 100644 index 000000000..965d5700c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/041B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/041C.png b/fonts/MiniwiFontOutlineAlt/041C.png new file mode 100644 index 000000000..ff9116d19 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/041C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/041D.png b/fonts/MiniwiFontOutlineAlt/041D.png new file mode 100644 index 000000000..cca7ed91e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/041D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/041E.png b/fonts/MiniwiFontOutlineAlt/041E.png new file mode 100644 index 000000000..a085af350 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/041E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/041F.png b/fonts/MiniwiFontOutlineAlt/041F.png new file mode 100644 index 000000000..99be31354 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/041F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0420.png b/fonts/MiniwiFontOutlineAlt/0420.png new file mode 100644 index 000000000..7514cdb84 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0420.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0421.png b/fonts/MiniwiFontOutlineAlt/0421.png new file mode 100644 index 000000000..86d2ae56f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0421.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0422.png b/fonts/MiniwiFontOutlineAlt/0422.png new file mode 100644 index 000000000..76ac9f9ab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0422.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0423.png b/fonts/MiniwiFontOutlineAlt/0423.png new file mode 100644 index 000000000..846afe2f9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0423.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0424.png b/fonts/MiniwiFontOutlineAlt/0424.png new file mode 100644 index 000000000..39ab98af0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0424.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0425.png b/fonts/MiniwiFontOutlineAlt/0425.png new file mode 100644 index 000000000..37f821843 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0425.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0426.png b/fonts/MiniwiFontOutlineAlt/0426.png new file mode 100644 index 000000000..ab98e0201 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0426.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0427.png b/fonts/MiniwiFontOutlineAlt/0427.png new file mode 100644 index 000000000..001f40f89 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0427.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0428.png b/fonts/MiniwiFontOutlineAlt/0428.png new file mode 100644 index 000000000..61e12cdb2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0428.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0429.png b/fonts/MiniwiFontOutlineAlt/0429.png new file mode 100644 index 000000000..6f08259e0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0429.png differ diff --git a/fonts/MiniwiFontOutlineAlt/042A.png b/fonts/MiniwiFontOutlineAlt/042A.png new file mode 100644 index 000000000..8fc9c6991 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/042A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/042B.png b/fonts/MiniwiFontOutlineAlt/042B.png new file mode 100644 index 000000000..0ae6820e7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/042B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/042C.png b/fonts/MiniwiFontOutlineAlt/042C.png new file mode 100644 index 000000000..fd3af358d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/042C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/042D.png b/fonts/MiniwiFontOutlineAlt/042D.png new file mode 100644 index 000000000..4359830d6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/042D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/042E.png b/fonts/MiniwiFontOutlineAlt/042E.png new file mode 100644 index 000000000..f10602df1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/042E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/042F.png b/fonts/MiniwiFontOutlineAlt/042F.png new file mode 100644 index 000000000..1be07804f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/042F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0430.png b/fonts/MiniwiFontOutlineAlt/0430.png new file mode 100644 index 000000000..9202c46b1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0430.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0431.png b/fonts/MiniwiFontOutlineAlt/0431.png new file mode 100644 index 000000000..7ffc8badd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0431.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0432.png b/fonts/MiniwiFontOutlineAlt/0432.png new file mode 100644 index 000000000..340543cce Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0432.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0433.png b/fonts/MiniwiFontOutlineAlt/0433.png new file mode 100644 index 000000000..5be99d2bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0433.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0434.png b/fonts/MiniwiFontOutlineAlt/0434.png new file mode 100644 index 000000000..9c73e31af Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0434.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0435.png b/fonts/MiniwiFontOutlineAlt/0435.png new file mode 100644 index 000000000..ffcd477d2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0435.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0436.png b/fonts/MiniwiFontOutlineAlt/0436.png new file mode 100644 index 000000000..d3729d6d0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0436.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0437.png b/fonts/MiniwiFontOutlineAlt/0437.png new file mode 100644 index 000000000..c6fc24c82 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0437.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0438.png b/fonts/MiniwiFontOutlineAlt/0438.png new file mode 100644 index 000000000..f9becc853 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0438.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0439.png b/fonts/MiniwiFontOutlineAlt/0439.png new file mode 100644 index 000000000..f051ba899 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0439.png differ diff --git a/fonts/MiniwiFontOutlineAlt/043A.png b/fonts/MiniwiFontOutlineAlt/043A.png new file mode 100644 index 000000000..c473b55ba Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/043A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/043B.png b/fonts/MiniwiFontOutlineAlt/043B.png new file mode 100644 index 000000000..965d5700c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/043B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/043C.png b/fonts/MiniwiFontOutlineAlt/043C.png new file mode 100644 index 000000000..ff9116d19 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/043C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/043D.png b/fonts/MiniwiFontOutlineAlt/043D.png new file mode 100644 index 000000000..cca7ed91e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/043D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/043E.png b/fonts/MiniwiFontOutlineAlt/043E.png new file mode 100644 index 000000000..a085af350 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/043E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/043F.png b/fonts/MiniwiFontOutlineAlt/043F.png new file mode 100644 index 000000000..99be31354 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/043F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0440.png b/fonts/MiniwiFontOutlineAlt/0440.png new file mode 100644 index 000000000..dd44812b0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0440.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0441.png b/fonts/MiniwiFontOutlineAlt/0441.png new file mode 100644 index 000000000..2e3746c86 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0441.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0442.png b/fonts/MiniwiFontOutlineAlt/0442.png new file mode 100644 index 000000000..d91b58fa3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0442.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0443.png b/fonts/MiniwiFontOutlineAlt/0443.png new file mode 100644 index 000000000..46cc27b5a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0443.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0444.png b/fonts/MiniwiFontOutlineAlt/0444.png new file mode 100644 index 000000000..0f902a382 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0444.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0445.png b/fonts/MiniwiFontOutlineAlt/0445.png new file mode 100644 index 000000000..1b5b531a1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0445.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0446.png b/fonts/MiniwiFontOutlineAlt/0446.png new file mode 100644 index 000000000..75002366c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0446.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0447.png b/fonts/MiniwiFontOutlineAlt/0447.png new file mode 100644 index 000000000..5d786b28b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0447.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0448.png b/fonts/MiniwiFontOutlineAlt/0448.png new file mode 100644 index 000000000..3d25996b2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0448.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0449.png b/fonts/MiniwiFontOutlineAlt/0449.png new file mode 100644 index 000000000..3d25996b2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0449.png differ diff --git a/fonts/MiniwiFontOutlineAlt/044A.png b/fonts/MiniwiFontOutlineAlt/044A.png new file mode 100644 index 000000000..636a90b27 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/044A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/044B.png b/fonts/MiniwiFontOutlineAlt/044B.png new file mode 100644 index 000000000..c9ea7384e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/044B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/044C.png b/fonts/MiniwiFontOutlineAlt/044C.png new file mode 100644 index 000000000..d49da00e1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/044C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/044D.png b/fonts/MiniwiFontOutlineAlt/044D.png new file mode 100644 index 000000000..bab5c27e4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/044D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/044E.png b/fonts/MiniwiFontOutlineAlt/044E.png new file mode 100644 index 000000000..76058f21c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/044E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/044F.png b/fonts/MiniwiFontOutlineAlt/044F.png new file mode 100644 index 000000000..79dcd9b83 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/044F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0450.png b/fonts/MiniwiFontOutlineAlt/0450.png new file mode 100644 index 000000000..ffcd477d2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0450.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0451.png b/fonts/MiniwiFontOutlineAlt/0451.png new file mode 100644 index 000000000..8261affbd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0451.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0452.png b/fonts/MiniwiFontOutlineAlt/0452.png new file mode 100644 index 000000000..b777d231a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0452.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0453.png b/fonts/MiniwiFontOutlineAlt/0453.png new file mode 100644 index 000000000..f41416ef5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0453.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0454.png b/fonts/MiniwiFontOutlineAlt/0454.png new file mode 100644 index 000000000..540331d8c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0454.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0455.png b/fonts/MiniwiFontOutlineAlt/0455.png new file mode 100644 index 000000000..7a0705ec2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0455.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0456.png b/fonts/MiniwiFontOutlineAlt/0456.png new file mode 100644 index 000000000..1841bb8d0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0456.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0457.png b/fonts/MiniwiFontOutlineAlt/0457.png new file mode 100644 index 000000000..ff29273f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0457.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0458.png b/fonts/MiniwiFontOutlineAlt/0458.png new file mode 100644 index 000000000..4b6062b1d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0458.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0459.png b/fonts/MiniwiFontOutlineAlt/0459.png new file mode 100644 index 000000000..d65d48a3e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0459.png differ diff --git a/fonts/MiniwiFontOutlineAlt/045A.png b/fonts/MiniwiFontOutlineAlt/045A.png new file mode 100644 index 000000000..6d5608c7c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/045A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/045B.png b/fonts/MiniwiFontOutlineAlt/045B.png new file mode 100644 index 000000000..b777d231a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/045B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/045C.png b/fonts/MiniwiFontOutlineAlt/045C.png new file mode 100644 index 000000000..c950c83cb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/045C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/045D.png b/fonts/MiniwiFontOutlineAlt/045D.png new file mode 100644 index 000000000..b0ebdc38a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/045D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/045E.png b/fonts/MiniwiFontOutlineAlt/045E.png new file mode 100644 index 000000000..a1ce58cea Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/045E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/045F.png b/fonts/MiniwiFontOutlineAlt/045F.png new file mode 100644 index 000000000..76d6e472c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/045F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0460.png b/fonts/MiniwiFontOutlineAlt/0460.png new file mode 100644 index 000000000..44046aa90 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0460.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0461.png b/fonts/MiniwiFontOutlineAlt/0461.png new file mode 100644 index 000000000..d449ed82b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0461.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D0.png b/fonts/MiniwiFontOutlineAlt/05D0.png new file mode 100644 index 000000000..af85fdb94 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D1.png b/fonts/MiniwiFontOutlineAlt/05D1.png new file mode 100644 index 000000000..70afd61d8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D2.png b/fonts/MiniwiFontOutlineAlt/05D2.png new file mode 100644 index 000000000..ed2897890 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D3.png b/fonts/MiniwiFontOutlineAlt/05D3.png new file mode 100644 index 000000000..709a69968 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D4.png b/fonts/MiniwiFontOutlineAlt/05D4.png new file mode 100644 index 000000000..ff16fd91f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D5.png b/fonts/MiniwiFontOutlineAlt/05D5.png new file mode 100644 index 000000000..6db32b85b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D6.png b/fonts/MiniwiFontOutlineAlt/05D6.png new file mode 100644 index 000000000..78cf35cbd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D7.png b/fonts/MiniwiFontOutlineAlt/05D7.png new file mode 100644 index 000000000..2e9a4eacd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D8.png b/fonts/MiniwiFontOutlineAlt/05D8.png new file mode 100644 index 000000000..51c25f9fe Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05D9.png b/fonts/MiniwiFontOutlineAlt/05D9.png new file mode 100644 index 000000000..c2f5adf89 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05D9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05DA.png b/fonts/MiniwiFontOutlineAlt/05DA.png new file mode 100644 index 000000000..59ebdb964 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05DA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05DB.png b/fonts/MiniwiFontOutlineAlt/05DB.png new file mode 100644 index 000000000..2daa5f38c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05DB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05DC.png b/fonts/MiniwiFontOutlineAlt/05DC.png new file mode 100644 index 000000000..09e1e300e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05DC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05DD.png b/fonts/MiniwiFontOutlineAlt/05DD.png new file mode 100644 index 000000000..62e295faf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05DD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05DE.png b/fonts/MiniwiFontOutlineAlt/05DE.png new file mode 100644 index 000000000..6e6810db2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05DE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05DF.png b/fonts/MiniwiFontOutlineAlt/05DF.png new file mode 100644 index 000000000..36b7a0c45 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05DF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E0.png b/fonts/MiniwiFontOutlineAlt/05E0.png new file mode 100644 index 000000000..e7ff5a5b5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E1.png b/fonts/MiniwiFontOutlineAlt/05E1.png new file mode 100644 index 000000000..ec59e353e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E2.png b/fonts/MiniwiFontOutlineAlt/05E2.png new file mode 100644 index 000000000..09d948b5e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E3.png b/fonts/MiniwiFontOutlineAlt/05E3.png new file mode 100644 index 000000000..a2e4921aa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E4.png b/fonts/MiniwiFontOutlineAlt/05E4.png new file mode 100644 index 000000000..ae0ed8d94 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E5.png b/fonts/MiniwiFontOutlineAlt/05E5.png new file mode 100644 index 000000000..5b008667f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E6.png b/fonts/MiniwiFontOutlineAlt/05E6.png new file mode 100644 index 000000000..b37e89790 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E7.png b/fonts/MiniwiFontOutlineAlt/05E7.png new file mode 100644 index 000000000..0bb11cdcc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E8.png b/fonts/MiniwiFontOutlineAlt/05E8.png new file mode 100644 index 000000000..548ddd41a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05E9.png b/fonts/MiniwiFontOutlineAlt/05E9.png new file mode 100644 index 000000000..2a69800fd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05E9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/05EA.png b/fonts/MiniwiFontOutlineAlt/05EA.png new file mode 100644 index 000000000..8145cd219 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/05EA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/060C.png b/fonts/MiniwiFontOutlineAlt/060C.png new file mode 100644 index 000000000..f1677fff7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/060C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/061B.png b/fonts/MiniwiFontOutlineAlt/061B.png new file mode 100644 index 000000000..4744df09d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/061B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/061F.png b/fonts/MiniwiFontOutlineAlt/061F.png new file mode 100644 index 000000000..39f08e804 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/061F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0621.png b/fonts/MiniwiFontOutlineAlt/0621.png new file mode 100644 index 000000000..917bf7642 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0621.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0622.png b/fonts/MiniwiFontOutlineAlt/0622.png new file mode 100644 index 000000000..904800836 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0622.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0623.png b/fonts/MiniwiFontOutlineAlt/0623.png new file mode 100644 index 000000000..42170a283 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0623.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0624.png b/fonts/MiniwiFontOutlineAlt/0624.png new file mode 100644 index 000000000..416f93d22 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0624.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0625.png b/fonts/MiniwiFontOutlineAlt/0625.png new file mode 100644 index 000000000..d0f5bd634 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0625.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0626.png b/fonts/MiniwiFontOutlineAlt/0626.png new file mode 100644 index 000000000..8c096046f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0626.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0627.png b/fonts/MiniwiFontOutlineAlt/0627.png new file mode 100644 index 000000000..9742e083a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0627.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0628.png b/fonts/MiniwiFontOutlineAlt/0628.png new file mode 100644 index 000000000..fe18fa1bb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0628.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0629.png b/fonts/MiniwiFontOutlineAlt/0629.png new file mode 100644 index 000000000..debfbd1bf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0629.png differ diff --git a/fonts/MiniwiFontOutlineAlt/062A.png b/fonts/MiniwiFontOutlineAlt/062A.png new file mode 100644 index 000000000..b3816ecdc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/062A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/062B.png b/fonts/MiniwiFontOutlineAlt/062B.png new file mode 100644 index 000000000..9ad3f85f9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/062B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/062C.png b/fonts/MiniwiFontOutlineAlt/062C.png new file mode 100644 index 000000000..983d3e5ee Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/062C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/062D.png b/fonts/MiniwiFontOutlineAlt/062D.png new file mode 100644 index 000000000..10e4b6fe9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/062D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/062E.png b/fonts/MiniwiFontOutlineAlt/062E.png new file mode 100644 index 000000000..280812db1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/062E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/062F.png b/fonts/MiniwiFontOutlineAlt/062F.png new file mode 100644 index 000000000..26d9f8022 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/062F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0630.png b/fonts/MiniwiFontOutlineAlt/0630.png new file mode 100644 index 000000000..1cb74c6f6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0630.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0631.png b/fonts/MiniwiFontOutlineAlt/0631.png new file mode 100644 index 000000000..05e632983 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0631.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0632.png b/fonts/MiniwiFontOutlineAlt/0632.png new file mode 100644 index 000000000..51e973b15 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0632.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0633.png b/fonts/MiniwiFontOutlineAlt/0633.png new file mode 100644 index 000000000..078dc8f6f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0633.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0634.png b/fonts/MiniwiFontOutlineAlt/0634.png new file mode 100644 index 000000000..a65f76678 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0634.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0635.png b/fonts/MiniwiFontOutlineAlt/0635.png new file mode 100644 index 000000000..4fe9c39a7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0635.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0636.png b/fonts/MiniwiFontOutlineAlt/0636.png new file mode 100644 index 000000000..a786998ca Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0636.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0637.png b/fonts/MiniwiFontOutlineAlt/0637.png new file mode 100644 index 000000000..e86c99446 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0637.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0638.png b/fonts/MiniwiFontOutlineAlt/0638.png new file mode 100644 index 000000000..a9a92e15a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0638.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0639.png b/fonts/MiniwiFontOutlineAlt/0639.png new file mode 100644 index 000000000..afaa12b79 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0639.png differ diff --git a/fonts/MiniwiFontOutlineAlt/063A.png b/fonts/MiniwiFontOutlineAlt/063A.png new file mode 100644 index 000000000..784e77edc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/063A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0640.png b/fonts/MiniwiFontOutlineAlt/0640.png new file mode 100644 index 000000000..fa7e9f20f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0640.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0641.png b/fonts/MiniwiFontOutlineAlt/0641.png new file mode 100644 index 000000000..d75ba6523 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0641.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0642.png b/fonts/MiniwiFontOutlineAlt/0642.png new file mode 100644 index 000000000..9601ba282 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0642.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0643.png b/fonts/MiniwiFontOutlineAlt/0643.png new file mode 100644 index 000000000..b221ee5bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0643.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0644.png b/fonts/MiniwiFontOutlineAlt/0644.png new file mode 100644 index 000000000..4824d6c99 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0644.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0645.png b/fonts/MiniwiFontOutlineAlt/0645.png new file mode 100644 index 000000000..90de6c61a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0645.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0646.png b/fonts/MiniwiFontOutlineAlt/0646.png new file mode 100644 index 000000000..9d07dff27 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0646.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0647.png b/fonts/MiniwiFontOutlineAlt/0647.png new file mode 100644 index 000000000..95af2123e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0647.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0648.png b/fonts/MiniwiFontOutlineAlt/0648.png new file mode 100644 index 000000000..7e7338b2f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0648.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0649.png b/fonts/MiniwiFontOutlineAlt/0649.png new file mode 100644 index 000000000..3d3f2e9d1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0649.png differ diff --git a/fonts/MiniwiFontOutlineAlt/064A.png b/fonts/MiniwiFontOutlineAlt/064A.png new file mode 100644 index 000000000..e65a30d7d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/064A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/064B.png b/fonts/MiniwiFontOutlineAlt/064B.png new file mode 100644 index 000000000..d5bd9ff2a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/064B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/064C.png b/fonts/MiniwiFontOutlineAlt/064C.png new file mode 100644 index 000000000..677772917 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/064C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/064D.png b/fonts/MiniwiFontOutlineAlt/064D.png new file mode 100644 index 000000000..0d9f29736 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/064D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/064E.png b/fonts/MiniwiFontOutlineAlt/064E.png new file mode 100644 index 000000000..a0d7daec6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/064E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/064F.png b/fonts/MiniwiFontOutlineAlt/064F.png new file mode 100644 index 000000000..772f0d4bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/064F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0650.png b/fonts/MiniwiFontOutlineAlt/0650.png new file mode 100644 index 000000000..b26949584 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0650.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0651.png b/fonts/MiniwiFontOutlineAlt/0651.png new file mode 100644 index 000000000..a47b3b505 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0651.png differ diff --git a/fonts/MiniwiFontOutlineAlt/0652.png b/fonts/MiniwiFontOutlineAlt/0652.png new file mode 100644 index 000000000..c7effdb69 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/0652.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E02.png b/fonts/MiniwiFontOutlineAlt/1E02.png new file mode 100644 index 000000000..2021525c8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E02.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E03.png b/fonts/MiniwiFontOutlineAlt/1E03.png new file mode 100644 index 000000000..8e5034e41 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E03.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E0A.png b/fonts/MiniwiFontOutlineAlt/1E0A.png new file mode 100644 index 000000000..422cb7ada Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E0A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E0B.png b/fonts/MiniwiFontOutlineAlt/1E0B.png new file mode 100644 index 000000000..87904502f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E0B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E1E.png b/fonts/MiniwiFontOutlineAlt/1E1E.png new file mode 100644 index 000000000..cee5a166c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E1E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E1F.png b/fonts/MiniwiFontOutlineAlt/1E1F.png new file mode 100644 index 000000000..86078a7e6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E1F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E40.png b/fonts/MiniwiFontOutlineAlt/1E40.png new file mode 100644 index 000000000..15bd009d6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E40.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E41.png b/fonts/MiniwiFontOutlineAlt/1E41.png new file mode 100644 index 000000000..15bd009d6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E41.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E56.png b/fonts/MiniwiFontOutlineAlt/1E56.png new file mode 100644 index 000000000..997ee0189 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E56.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E57.png b/fonts/MiniwiFontOutlineAlt/1E57.png new file mode 100644 index 000000000..c06377fac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E57.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E60.png b/fonts/MiniwiFontOutlineAlt/1E60.png new file mode 100644 index 000000000..1abfc6b47 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E60.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E61.png b/fonts/MiniwiFontOutlineAlt/1E61.png new file mode 100644 index 000000000..59ab418ba Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E61.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E6A.png b/fonts/MiniwiFontOutlineAlt/1E6A.png new file mode 100644 index 000000000..9249346d9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E6A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E6B.png b/fonts/MiniwiFontOutlineAlt/1E6B.png new file mode 100644 index 000000000..0603e03b4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E6B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E80.png b/fonts/MiniwiFontOutlineAlt/1E80.png new file mode 100644 index 000000000..2f776a2c1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E80.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E81.png b/fonts/MiniwiFontOutlineAlt/1E81.png new file mode 100644 index 000000000..2f776a2c1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E81.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E82.png b/fonts/MiniwiFontOutlineAlt/1E82.png new file mode 100644 index 000000000..2f776a2c1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E82.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E83.png b/fonts/MiniwiFontOutlineAlt/1E83.png new file mode 100644 index 000000000..ec6786c48 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E83.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E84.png b/fonts/MiniwiFontOutlineAlt/1E84.png new file mode 100644 index 000000000..4b39a59f2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E84.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1E85.png b/fonts/MiniwiFontOutlineAlt/1E85.png new file mode 100644 index 000000000..4b39a59f2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1E85.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1EF2.png b/fonts/MiniwiFontOutlineAlt/1EF2.png new file mode 100644 index 000000000..4ea8fcf55 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1EF2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/1EF3.png b/fonts/MiniwiFontOutlineAlt/1EF3.png new file mode 100644 index 000000000..ace0df5f1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/1EF3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2013.png b/fonts/MiniwiFontOutlineAlt/2013.png new file mode 100644 index 000000000..87c41d43a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2013.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2014.png b/fonts/MiniwiFontOutlineAlt/2014.png new file mode 100644 index 000000000..5d8c9cf0f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2014.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2015.png b/fonts/MiniwiFontOutlineAlt/2015.png new file mode 100644 index 000000000..5d8c9cf0f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2015.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2017.png b/fonts/MiniwiFontOutlineAlt/2017.png new file mode 100644 index 000000000..3b5ed9123 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2017.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2018.png b/fonts/MiniwiFontOutlineAlt/2018.png new file mode 100644 index 000000000..d111e17e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2018.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2019.png b/fonts/MiniwiFontOutlineAlt/2019.png new file mode 100644 index 000000000..a2abce3d2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2019.png differ diff --git a/fonts/MiniwiFontOutlineAlt/201A.png b/fonts/MiniwiFontOutlineAlt/201A.png new file mode 100644 index 000000000..628d92e9c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/201A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/201C.png b/fonts/MiniwiFontOutlineAlt/201C.png new file mode 100644 index 000000000..8191e834e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/201C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/201D.png b/fonts/MiniwiFontOutlineAlt/201D.png new file mode 100644 index 000000000..d0cb38998 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/201D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/201E.png b/fonts/MiniwiFontOutlineAlt/201E.png new file mode 100644 index 000000000..6671cc28b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/201E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2020.png b/fonts/MiniwiFontOutlineAlt/2020.png new file mode 100644 index 000000000..dd932d69b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2020.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2021.png b/fonts/MiniwiFontOutlineAlt/2021.png new file mode 100644 index 000000000..ab6f16681 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2021.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2022.png b/fonts/MiniwiFontOutlineAlt/2022.png new file mode 100644 index 000000000..b42f5b5b2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2022.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2026.png b/fonts/MiniwiFontOutlineAlt/2026.png new file mode 100644 index 000000000..4522aae03 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2026.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2030.png b/fonts/MiniwiFontOutlineAlt/2030.png new file mode 100644 index 000000000..a65c5782b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2030.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2032.png b/fonts/MiniwiFontOutlineAlt/2032.png new file mode 100644 index 000000000..493fae524 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2032.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2033.png b/fonts/MiniwiFontOutlineAlt/2033.png new file mode 100644 index 000000000..4f91d3032 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2033.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2039.png b/fonts/MiniwiFontOutlineAlt/2039.png new file mode 100644 index 000000000..cca2042ee Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2039.png differ diff --git a/fonts/MiniwiFontOutlineAlt/203A.png b/fonts/MiniwiFontOutlineAlt/203A.png new file mode 100644 index 000000000..c8f45bc55 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/203A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2044.png b/fonts/MiniwiFontOutlineAlt/2044.png new file mode 100644 index 000000000..82b7cf063 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2044.png differ diff --git a/fonts/MiniwiFontOutlineAlt/20AC.png b/fonts/MiniwiFontOutlineAlt/20AC.png new file mode 100644 index 000000000..f0ae74056 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/20AC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/20AF.png b/fonts/MiniwiFontOutlineAlt/20AF.png new file mode 100644 index 000000000..8673a618c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/20AF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2111.png b/fonts/MiniwiFontOutlineAlt/2111.png new file mode 100644 index 000000000..36c95c8c0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2111.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2116.png b/fonts/MiniwiFontOutlineAlt/2116.png new file mode 100644 index 000000000..8f253ab7e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2116.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2118.png b/fonts/MiniwiFontOutlineAlt/2118.png new file mode 100644 index 000000000..c1d51f123 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2118.png differ diff --git a/fonts/MiniwiFontOutlineAlt/211C.png b/fonts/MiniwiFontOutlineAlt/211C.png new file mode 100644 index 000000000..e6f7f606d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/211C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2122.png b/fonts/MiniwiFontOutlineAlt/2122.png new file mode 100644 index 000000000..094e2db6b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2122.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2126.png b/fonts/MiniwiFontOutlineAlt/2126.png new file mode 100644 index 000000000..8251534cc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2126.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2135.png b/fonts/MiniwiFontOutlineAlt/2135.png new file mode 100644 index 000000000..1ce022c6a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2135.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2190.png b/fonts/MiniwiFontOutlineAlt/2190.png new file mode 100644 index 000000000..2c4b14356 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2190.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2191.png b/fonts/MiniwiFontOutlineAlt/2191.png new file mode 100644 index 000000000..6da5dde54 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2191.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2192.png b/fonts/MiniwiFontOutlineAlt/2192.png new file mode 100644 index 000000000..bf9bebd76 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2192.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2193.png b/fonts/MiniwiFontOutlineAlt/2193.png new file mode 100644 index 000000000..d5d9e182c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2193.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2194.png b/fonts/MiniwiFontOutlineAlt/2194.png new file mode 100644 index 000000000..a229c304b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2194.png differ diff --git a/fonts/MiniwiFontOutlineAlt/21B5.png b/fonts/MiniwiFontOutlineAlt/21B5.png new file mode 100644 index 000000000..fb8efd4b6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/21B5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/21D0.png b/fonts/MiniwiFontOutlineAlt/21D0.png new file mode 100644 index 000000000..102ff66d9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/21D0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/21D1.png b/fonts/MiniwiFontOutlineAlt/21D1.png new file mode 100644 index 000000000..84b4c1ed4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/21D1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/21D2.png b/fonts/MiniwiFontOutlineAlt/21D2.png new file mode 100644 index 000000000..4d05e618e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/21D2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/21D3.png b/fonts/MiniwiFontOutlineAlt/21D3.png new file mode 100644 index 000000000..d744ccb20 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/21D3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/21D4.png b/fonts/MiniwiFontOutlineAlt/21D4.png new file mode 100644 index 000000000..9d22c9e18 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/21D4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2200.png b/fonts/MiniwiFontOutlineAlt/2200.png new file mode 100644 index 000000000..7156a60ca Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2200.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2201.png b/fonts/MiniwiFontOutlineAlt/2201.png new file mode 100644 index 000000000..86d2ae56f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2201.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2202.png b/fonts/MiniwiFontOutlineAlt/2202.png new file mode 100644 index 000000000..fb56d5310 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2202.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2203.png b/fonts/MiniwiFontOutlineAlt/2203.png new file mode 100644 index 000000000..eb6216d25 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2203.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2204.png b/fonts/MiniwiFontOutlineAlt/2204.png new file mode 100644 index 000000000..6e7e99f88 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2204.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2205.png b/fonts/MiniwiFontOutlineAlt/2205.png new file mode 100644 index 000000000..52953043b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2205.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2206.png b/fonts/MiniwiFontOutlineAlt/2206.png new file mode 100644 index 000000000..635914b50 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2206.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2207.png b/fonts/MiniwiFontOutlineAlt/2207.png new file mode 100644 index 000000000..dd31c40f2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2207.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2208.png b/fonts/MiniwiFontOutlineAlt/2208.png new file mode 100644 index 000000000..9afcf6433 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2208.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2209.png b/fonts/MiniwiFontOutlineAlt/2209.png new file mode 100644 index 000000000..a84f6bb0b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2209.png differ diff --git a/fonts/MiniwiFontOutlineAlt/220A.png b/fonts/MiniwiFontOutlineAlt/220A.png new file mode 100644 index 000000000..f62e7649d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/220A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/220B.png b/fonts/MiniwiFontOutlineAlt/220B.png new file mode 100644 index 000000000..3b4df9961 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/220B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/220C.png b/fonts/MiniwiFontOutlineAlt/220C.png new file mode 100644 index 000000000..854a5a5c2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/220C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/220D.png b/fonts/MiniwiFontOutlineAlt/220D.png new file mode 100644 index 000000000..faf8cb1b5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/220D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/220E.png b/fonts/MiniwiFontOutlineAlt/220E.png new file mode 100644 index 000000000..56b6ce2c4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/220E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/220F.png b/fonts/MiniwiFontOutlineAlt/220F.png new file mode 100644 index 000000000..6d706df79 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/220F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2210.png b/fonts/MiniwiFontOutlineAlt/2210.png new file mode 100644 index 000000000..8c7a36b29 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2210.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2211.png b/fonts/MiniwiFontOutlineAlt/2211.png new file mode 100644 index 000000000..a5dfe6274 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2211.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2212.png b/fonts/MiniwiFontOutlineAlt/2212.png new file mode 100644 index 000000000..802726d7c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2212.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2213.png b/fonts/MiniwiFontOutlineAlt/2213.png new file mode 100644 index 000000000..2f34e9e29 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2213.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2214.png b/fonts/MiniwiFontOutlineAlt/2214.png new file mode 100644 index 000000000..0a858145e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2214.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2215.png b/fonts/MiniwiFontOutlineAlt/2215.png new file mode 100644 index 000000000..39b68a1ee Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2215.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2216.png b/fonts/MiniwiFontOutlineAlt/2216.png new file mode 100644 index 000000000..c03802be6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2216.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2217.png b/fonts/MiniwiFontOutlineAlt/2217.png new file mode 100644 index 000000000..0f576f5a2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2217.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2218.png b/fonts/MiniwiFontOutlineAlt/2218.png new file mode 100644 index 000000000..03408bc4e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2218.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2219.png b/fonts/MiniwiFontOutlineAlt/2219.png new file mode 100644 index 000000000..b42f5b5b2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2219.png differ diff --git a/fonts/MiniwiFontOutlineAlt/221A.png b/fonts/MiniwiFontOutlineAlt/221A.png new file mode 100644 index 000000000..a6ccdb37d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/221A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/221B.png b/fonts/MiniwiFontOutlineAlt/221B.png new file mode 100644 index 000000000..68c362b44 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/221B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/221C.png b/fonts/MiniwiFontOutlineAlt/221C.png new file mode 100644 index 000000000..f7b1ce7c3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/221C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/221D.png b/fonts/MiniwiFontOutlineAlt/221D.png new file mode 100644 index 000000000..0ef348b1b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/221D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/221E.png b/fonts/MiniwiFontOutlineAlt/221E.png new file mode 100644 index 000000000..7f0d70d20 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/221E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/221F.png b/fonts/MiniwiFontOutlineAlt/221F.png new file mode 100644 index 000000000..497389012 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/221F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2220.png b/fonts/MiniwiFontOutlineAlt/2220.png new file mode 100644 index 000000000..10f918f31 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2220.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2221.png b/fonts/MiniwiFontOutlineAlt/2221.png new file mode 100644 index 000000000..2a9607cbc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2221.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2222.png b/fonts/MiniwiFontOutlineAlt/2222.png new file mode 100644 index 000000000..bc9ded97e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2222.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2223.png b/fonts/MiniwiFontOutlineAlt/2223.png new file mode 100644 index 000000000..36b7a0c45 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2223.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2224.png b/fonts/MiniwiFontOutlineAlt/2224.png new file mode 100644 index 000000000..36b7a0c45 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2224.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2225.png b/fonts/MiniwiFontOutlineAlt/2225.png new file mode 100644 index 000000000..8399ca823 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2225.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2226.png b/fonts/MiniwiFontOutlineAlt/2226.png new file mode 100644 index 000000000..9c84e8ef8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2226.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2227.png b/fonts/MiniwiFontOutlineAlt/2227.png new file mode 100644 index 000000000..1cdd20368 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2227.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2228.png b/fonts/MiniwiFontOutlineAlt/2228.png new file mode 100644 index 000000000..ea4004a63 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2228.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2229.png b/fonts/MiniwiFontOutlineAlt/2229.png new file mode 100644 index 000000000..8e593faa9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2229.png differ diff --git a/fonts/MiniwiFontOutlineAlt/222A.png b/fonts/MiniwiFontOutlineAlt/222A.png new file mode 100644 index 000000000..2092333ed Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/222A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/222B.png b/fonts/MiniwiFontOutlineAlt/222B.png new file mode 100644 index 000000000..996f4bdfc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/222B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/222C.png b/fonts/MiniwiFontOutlineAlt/222C.png new file mode 100644 index 000000000..48e041286 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/222C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/222D.png b/fonts/MiniwiFontOutlineAlt/222D.png new file mode 100644 index 000000000..5b2c81dc4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/222D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/222E.png b/fonts/MiniwiFontOutlineAlt/222E.png new file mode 100644 index 000000000..7babfb76d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/222E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/222F.png b/fonts/MiniwiFontOutlineAlt/222F.png new file mode 100644 index 000000000..3c904fda7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/222F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2230.png b/fonts/MiniwiFontOutlineAlt/2230.png new file mode 100644 index 000000000..6fde2d7e9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2230.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2231.png b/fonts/MiniwiFontOutlineAlt/2231.png new file mode 100644 index 000000000..2b00a7db8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2231.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2232.png b/fonts/MiniwiFontOutlineAlt/2232.png new file mode 100644 index 000000000..2a28cec9a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2232.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2233.png b/fonts/MiniwiFontOutlineAlt/2233.png new file mode 100644 index 000000000..dfe5c7479 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2233.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2234.png b/fonts/MiniwiFontOutlineAlt/2234.png new file mode 100644 index 000000000..752095bd9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2234.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2235.png b/fonts/MiniwiFontOutlineAlt/2235.png new file mode 100644 index 000000000..28485fc4e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2235.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2236.png b/fonts/MiniwiFontOutlineAlt/2236.png new file mode 100644 index 000000000..e03a58862 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2236.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2237.png b/fonts/MiniwiFontOutlineAlt/2237.png new file mode 100644 index 000000000..9e6a415d3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2237.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2238.png b/fonts/MiniwiFontOutlineAlt/2238.png new file mode 100644 index 000000000..037b3829f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2238.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2239.png b/fonts/MiniwiFontOutlineAlt/2239.png new file mode 100644 index 000000000..0f078ae96 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2239.png differ diff --git a/fonts/MiniwiFontOutlineAlt/223A.png b/fonts/MiniwiFontOutlineAlt/223A.png new file mode 100644 index 000000000..8326adbbc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/223A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/223B.png b/fonts/MiniwiFontOutlineAlt/223B.png new file mode 100644 index 000000000..29cafd45b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/223B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/223C.png b/fonts/MiniwiFontOutlineAlt/223C.png new file mode 100644 index 000000000..6e5d5a3b5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/223C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/223D.png b/fonts/MiniwiFontOutlineAlt/223D.png new file mode 100644 index 000000000..27896f8a3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/223D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/223E.png b/fonts/MiniwiFontOutlineAlt/223E.png new file mode 100644 index 000000000..48ec29db9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/223E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/223F.png b/fonts/MiniwiFontOutlineAlt/223F.png new file mode 100644 index 000000000..36a1c5dfe Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/223F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2240.png b/fonts/MiniwiFontOutlineAlt/2240.png new file mode 100644 index 000000000..1880cf01b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2240.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2241.png b/fonts/MiniwiFontOutlineAlt/2241.png new file mode 100644 index 000000000..a4c8ede73 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2241.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2242.png b/fonts/MiniwiFontOutlineAlt/2242.png new file mode 100644 index 000000000..18b5ec147 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2242.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2243.png b/fonts/MiniwiFontOutlineAlt/2243.png new file mode 100644 index 000000000..06f35d880 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2243.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2244.png b/fonts/MiniwiFontOutlineAlt/2244.png new file mode 100644 index 000000000..f1196151e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2244.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2245.png b/fonts/MiniwiFontOutlineAlt/2245.png new file mode 100644 index 000000000..814fb4ade Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2245.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2246.png b/fonts/MiniwiFontOutlineAlt/2246.png new file mode 100644 index 000000000..7103dceb3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2246.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2247.png b/fonts/MiniwiFontOutlineAlt/2247.png new file mode 100644 index 000000000..eed04e23e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2247.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2248.png b/fonts/MiniwiFontOutlineAlt/2248.png new file mode 100644 index 000000000..f4d53b4be Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2248.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2249.png b/fonts/MiniwiFontOutlineAlt/2249.png new file mode 100644 index 000000000..90d54f670 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2249.png differ diff --git a/fonts/MiniwiFontOutlineAlt/224A.png b/fonts/MiniwiFontOutlineAlt/224A.png new file mode 100644 index 000000000..dbbfede60 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/224A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/224B.png b/fonts/MiniwiFontOutlineAlt/224B.png new file mode 100644 index 000000000..97968573a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/224B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/224C.png b/fonts/MiniwiFontOutlineAlt/224C.png new file mode 100644 index 000000000..814fb4ade Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/224C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/224D.png b/fonts/MiniwiFontOutlineAlt/224D.png new file mode 100644 index 000000000..7082d2171 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/224D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/224E.png b/fonts/MiniwiFontOutlineAlt/224E.png new file mode 100644 index 000000000..33c452bd1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/224E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/224F.png b/fonts/MiniwiFontOutlineAlt/224F.png new file mode 100644 index 000000000..45c358ce3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/224F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2250.png b/fonts/MiniwiFontOutlineAlt/2250.png new file mode 100644 index 000000000..d6295a078 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2250.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2251.png b/fonts/MiniwiFontOutlineAlt/2251.png new file mode 100644 index 000000000..f247cb3b6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2251.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2252.png b/fonts/MiniwiFontOutlineAlt/2252.png new file mode 100644 index 000000000..9b59f2542 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2252.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2253.png b/fonts/MiniwiFontOutlineAlt/2253.png new file mode 100644 index 000000000..4b2486870 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2253.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2254.png b/fonts/MiniwiFontOutlineAlt/2254.png new file mode 100644 index 000000000..5dff62dec Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2254.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2255.png b/fonts/MiniwiFontOutlineAlt/2255.png new file mode 100644 index 000000000..068003546 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2255.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2256.png b/fonts/MiniwiFontOutlineAlt/2256.png new file mode 100644 index 000000000..da35a22fe Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2256.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2257.png b/fonts/MiniwiFontOutlineAlt/2257.png new file mode 100644 index 000000000..ad74e6b20 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2257.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2258.png b/fonts/MiniwiFontOutlineAlt/2258.png new file mode 100644 index 000000000..65e811aeb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2258.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2259.png b/fonts/MiniwiFontOutlineAlt/2259.png new file mode 100644 index 000000000..01302cdfb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2259.png differ diff --git a/fonts/MiniwiFontOutlineAlt/225A.png b/fonts/MiniwiFontOutlineAlt/225A.png new file mode 100644 index 000000000..9960dae59 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/225A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/225B.png b/fonts/MiniwiFontOutlineAlt/225B.png new file mode 100644 index 000000000..f99e16ab9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/225B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/225C.png b/fonts/MiniwiFontOutlineAlt/225C.png new file mode 100644 index 000000000..591d23c93 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/225C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/225D.png b/fonts/MiniwiFontOutlineAlt/225D.png new file mode 100644 index 000000000..569ebdcb7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/225D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/225E.png b/fonts/MiniwiFontOutlineAlt/225E.png new file mode 100644 index 000000000..0128dc7a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/225E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/225F.png b/fonts/MiniwiFontOutlineAlt/225F.png new file mode 100644 index 000000000..2b3e29cbc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/225F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2260.png b/fonts/MiniwiFontOutlineAlt/2260.png new file mode 100644 index 000000000..8ceaae225 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2260.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2261.png b/fonts/MiniwiFontOutlineAlt/2261.png new file mode 100644 index 000000000..8ccdf0c1d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2261.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2262.png b/fonts/MiniwiFontOutlineAlt/2262.png new file mode 100644 index 000000000..c021dc0ae Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2262.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2263.png b/fonts/MiniwiFontOutlineAlt/2263.png new file mode 100644 index 000000000..c19345393 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2263.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2264.png b/fonts/MiniwiFontOutlineAlt/2264.png new file mode 100644 index 000000000..fc738ce4d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2264.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2265.png b/fonts/MiniwiFontOutlineAlt/2265.png new file mode 100644 index 000000000..7264c38ec Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2265.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2266.png b/fonts/MiniwiFontOutlineAlt/2266.png new file mode 100644 index 000000000..8b7c91e08 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2266.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2267.png b/fonts/MiniwiFontOutlineAlt/2267.png new file mode 100644 index 000000000..a1c2c27ae Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2267.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2268.png b/fonts/MiniwiFontOutlineAlt/2268.png new file mode 100644 index 000000000..ce96154c9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2268.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2269.png b/fonts/MiniwiFontOutlineAlt/2269.png new file mode 100644 index 000000000..e3606799a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2269.png differ diff --git a/fonts/MiniwiFontOutlineAlt/226A.png b/fonts/MiniwiFontOutlineAlt/226A.png new file mode 100644 index 000000000..e80271a18 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/226A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/226B.png b/fonts/MiniwiFontOutlineAlt/226B.png new file mode 100644 index 000000000..081c3cf8c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/226B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2282.png b/fonts/MiniwiFontOutlineAlt/2282.png new file mode 100644 index 000000000..ad0993756 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2282.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2283.png b/fonts/MiniwiFontOutlineAlt/2283.png new file mode 100644 index 000000000..0116dfd81 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2283.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2284.png b/fonts/MiniwiFontOutlineAlt/2284.png new file mode 100644 index 000000000..0a39a1aa0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2284.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2286.png b/fonts/MiniwiFontOutlineAlt/2286.png new file mode 100644 index 000000000..00e6295d7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2286.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2287.png b/fonts/MiniwiFontOutlineAlt/2287.png new file mode 100644 index 000000000..2c63ea2df Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2287.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2295.png b/fonts/MiniwiFontOutlineAlt/2295.png new file mode 100644 index 000000000..713f5c464 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2295.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2297.png b/fonts/MiniwiFontOutlineAlt/2297.png new file mode 100644 index 000000000..85c40161c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2297.png differ diff --git a/fonts/MiniwiFontOutlineAlt/22A5.png b/fonts/MiniwiFontOutlineAlt/22A5.png new file mode 100644 index 000000000..79a76f265 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/22A5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/22C4.png b/fonts/MiniwiFontOutlineAlt/22C4.png new file mode 100644 index 000000000..0a2a92528 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/22C4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/22C5.png b/fonts/MiniwiFontOutlineAlt/22C5.png new file mode 100644 index 000000000..ce0184068 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/22C5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2320.png b/fonts/MiniwiFontOutlineAlt/2320.png new file mode 100644 index 000000000..7e84086ee Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2320.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2321.png b/fonts/MiniwiFontOutlineAlt/2321.png new file mode 100644 index 000000000..75d9ab7ef Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2321.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2329.png b/fonts/MiniwiFontOutlineAlt/2329.png new file mode 100644 index 000000000..3b358ef4c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2329.png differ diff --git a/fonts/MiniwiFontOutlineAlt/232A.png b/fonts/MiniwiFontOutlineAlt/232A.png new file mode 100644 index 000000000..07f3ecea0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/232A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2460.png b/fonts/MiniwiFontOutlineAlt/2460.png new file mode 100644 index 000000000..369b7a226 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2460.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2461.png b/fonts/MiniwiFontOutlineAlt/2461.png new file mode 100644 index 000000000..6aa7951d0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2461.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2462.png b/fonts/MiniwiFontOutlineAlt/2462.png new file mode 100644 index 000000000..8e9f29a29 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2462.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2463.png b/fonts/MiniwiFontOutlineAlt/2463.png new file mode 100644 index 000000000..71aa97c38 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2463.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2464.png b/fonts/MiniwiFontOutlineAlt/2464.png new file mode 100644 index 000000000..de877385c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2464.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2465.png b/fonts/MiniwiFontOutlineAlt/2465.png new file mode 100644 index 000000000..dcb5e6019 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2465.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2466.png b/fonts/MiniwiFontOutlineAlt/2466.png new file mode 100644 index 000000000..7f6e97f77 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2466.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2467.png b/fonts/MiniwiFontOutlineAlt/2467.png new file mode 100644 index 000000000..14ee35a43 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2467.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2468.png b/fonts/MiniwiFontOutlineAlt/2468.png new file mode 100644 index 000000000..541df6e61 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2468.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2469.png b/fonts/MiniwiFontOutlineAlt/2469.png new file mode 100644 index 000000000..b674ff4e3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2469.png differ diff --git a/fonts/MiniwiFontOutlineAlt/246A.png b/fonts/MiniwiFontOutlineAlt/246A.png new file mode 100644 index 000000000..9f3ae3b4f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/246A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/246B.png b/fonts/MiniwiFontOutlineAlt/246B.png new file mode 100644 index 000000000..60b26aa06 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/246B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/246C.png b/fonts/MiniwiFontOutlineAlt/246C.png new file mode 100644 index 000000000..51c536cb3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/246C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/246D.png b/fonts/MiniwiFontOutlineAlt/246D.png new file mode 100644 index 000000000..266565bea Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/246D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/246E.png b/fonts/MiniwiFontOutlineAlt/246E.png new file mode 100644 index 000000000..b7fe03fbc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/246E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/246F.png b/fonts/MiniwiFontOutlineAlt/246F.png new file mode 100644 index 000000000..9e0f79d1b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/246F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2470.png b/fonts/MiniwiFontOutlineAlt/2470.png new file mode 100644 index 000000000..2ba6d8646 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2470.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2471.png b/fonts/MiniwiFontOutlineAlt/2471.png new file mode 100644 index 000000000..5a6e681a1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2471.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2472.png b/fonts/MiniwiFontOutlineAlt/2472.png new file mode 100644 index 000000000..e5a1a5cdc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2472.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2473.png b/fonts/MiniwiFontOutlineAlt/2473.png new file mode 100644 index 000000000..af5b12071 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2473.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2474.png b/fonts/MiniwiFontOutlineAlt/2474.png new file mode 100644 index 000000000..7a8e7012d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2474.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2475.png b/fonts/MiniwiFontOutlineAlt/2475.png new file mode 100644 index 000000000..9fd900415 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2475.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2476.png b/fonts/MiniwiFontOutlineAlt/2476.png new file mode 100644 index 000000000..82eff5b4b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2476.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2477.png b/fonts/MiniwiFontOutlineAlt/2477.png new file mode 100644 index 000000000..4166f2070 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2477.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2478.png b/fonts/MiniwiFontOutlineAlt/2478.png new file mode 100644 index 000000000..958c98430 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2478.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2479.png b/fonts/MiniwiFontOutlineAlt/2479.png new file mode 100644 index 000000000..cdb6dde29 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2479.png differ diff --git a/fonts/MiniwiFontOutlineAlt/247A.png b/fonts/MiniwiFontOutlineAlt/247A.png new file mode 100644 index 000000000..183a025be Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/247A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/247B.png b/fonts/MiniwiFontOutlineAlt/247B.png new file mode 100644 index 000000000..6d2d5c32a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/247B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/247C.png b/fonts/MiniwiFontOutlineAlt/247C.png new file mode 100644 index 000000000..faa5beaa2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/247C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/247D.png b/fonts/MiniwiFontOutlineAlt/247D.png new file mode 100644 index 000000000..4ef2f05f8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/247D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/247E.png b/fonts/MiniwiFontOutlineAlt/247E.png new file mode 100644 index 000000000..e3837e2de Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/247E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/247F.png b/fonts/MiniwiFontOutlineAlt/247F.png new file mode 100644 index 000000000..770dd2ed5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/247F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2480.png b/fonts/MiniwiFontOutlineAlt/2480.png new file mode 100644 index 000000000..942b6e32b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2480.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2481.png b/fonts/MiniwiFontOutlineAlt/2481.png new file mode 100644 index 000000000..664c11ed2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2481.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2482.png b/fonts/MiniwiFontOutlineAlt/2482.png new file mode 100644 index 000000000..04372586a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2482.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2483.png b/fonts/MiniwiFontOutlineAlt/2483.png new file mode 100644 index 000000000..358952ed8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2483.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2484.png b/fonts/MiniwiFontOutlineAlt/2484.png new file mode 100644 index 000000000..fcea25a98 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2484.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2485.png b/fonts/MiniwiFontOutlineAlt/2485.png new file mode 100644 index 000000000..b4204d078 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2485.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2486.png b/fonts/MiniwiFontOutlineAlt/2486.png new file mode 100644 index 000000000..bb25878e1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2486.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2487.png b/fonts/MiniwiFontOutlineAlt/2487.png new file mode 100644 index 000000000..f4bd426ce Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2487.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2488.png b/fonts/MiniwiFontOutlineAlt/2488.png new file mode 100644 index 000000000..722519c54 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2488.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2489.png b/fonts/MiniwiFontOutlineAlt/2489.png new file mode 100644 index 000000000..4cdaad9dc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2489.png differ diff --git a/fonts/MiniwiFontOutlineAlt/248A.png b/fonts/MiniwiFontOutlineAlt/248A.png new file mode 100644 index 000000000..70f228192 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/248A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/248B.png b/fonts/MiniwiFontOutlineAlt/248B.png new file mode 100644 index 000000000..003c87c59 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/248B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/248C.png b/fonts/MiniwiFontOutlineAlt/248C.png new file mode 100644 index 000000000..81642c762 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/248C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/248D.png b/fonts/MiniwiFontOutlineAlt/248D.png new file mode 100644 index 000000000..47a59049b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/248D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/248E.png b/fonts/MiniwiFontOutlineAlt/248E.png new file mode 100644 index 000000000..83b7a90f1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/248E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/248F.png b/fonts/MiniwiFontOutlineAlt/248F.png new file mode 100644 index 000000000..f9f107076 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/248F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2490.png b/fonts/MiniwiFontOutlineAlt/2490.png new file mode 100644 index 000000000..0b906abd8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2490.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2491.png b/fonts/MiniwiFontOutlineAlt/2491.png new file mode 100644 index 000000000..bc4e2d2ec Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2491.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2492.png b/fonts/MiniwiFontOutlineAlt/2492.png new file mode 100644 index 000000000..455a10a03 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2492.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2493.png b/fonts/MiniwiFontOutlineAlt/2493.png new file mode 100644 index 000000000..83febe67f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2493.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2494.png b/fonts/MiniwiFontOutlineAlt/2494.png new file mode 100644 index 000000000..bc1be2852 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2494.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2495.png b/fonts/MiniwiFontOutlineAlt/2495.png new file mode 100644 index 000000000..23c9a6311 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2495.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2496.png b/fonts/MiniwiFontOutlineAlt/2496.png new file mode 100644 index 000000000..b48de9a0c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2496.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2497.png b/fonts/MiniwiFontOutlineAlt/2497.png new file mode 100644 index 000000000..cd6bf6690 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2497.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2498.png b/fonts/MiniwiFontOutlineAlt/2498.png new file mode 100644 index 000000000..f704d761a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2498.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2499.png b/fonts/MiniwiFontOutlineAlt/2499.png new file mode 100644 index 000000000..848bf0f28 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2499.png differ diff --git a/fonts/MiniwiFontOutlineAlt/249A.png b/fonts/MiniwiFontOutlineAlt/249A.png new file mode 100644 index 000000000..108a8b4a2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/249A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/249B.png b/fonts/MiniwiFontOutlineAlt/249B.png new file mode 100644 index 000000000..cf929241a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/249B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/249C.png b/fonts/MiniwiFontOutlineAlt/249C.png new file mode 100644 index 000000000..c60a695db Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/249C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/249D.png b/fonts/MiniwiFontOutlineAlt/249D.png new file mode 100644 index 000000000..a6f7d32e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/249D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/249E.png b/fonts/MiniwiFontOutlineAlt/249E.png new file mode 100644 index 000000000..aef8de9d1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/249E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/249F.png b/fonts/MiniwiFontOutlineAlt/249F.png new file mode 100644 index 000000000..f7c3344aa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/249F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A0.png b/fonts/MiniwiFontOutlineAlt/24A0.png new file mode 100644 index 000000000..f7afdeb40 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A1.png b/fonts/MiniwiFontOutlineAlt/24A1.png new file mode 100644 index 000000000..45eeb8785 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A2.png b/fonts/MiniwiFontOutlineAlt/24A2.png new file mode 100644 index 000000000..d2c3d33e1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A3.png b/fonts/MiniwiFontOutlineAlt/24A3.png new file mode 100644 index 000000000..ae53ec109 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A4.png b/fonts/MiniwiFontOutlineAlt/24A4.png new file mode 100644 index 000000000..9281b860e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A5.png b/fonts/MiniwiFontOutlineAlt/24A5.png new file mode 100644 index 000000000..5dad46813 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A6.png b/fonts/MiniwiFontOutlineAlt/24A6.png new file mode 100644 index 000000000..458abd471 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A7.png b/fonts/MiniwiFontOutlineAlt/24A7.png new file mode 100644 index 000000000..fb2f1ab89 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A8.png b/fonts/MiniwiFontOutlineAlt/24A8.png new file mode 100644 index 000000000..c5baed382 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24A9.png b/fonts/MiniwiFontOutlineAlt/24A9.png new file mode 100644 index 000000000..65064cc4a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24A9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24AA.png b/fonts/MiniwiFontOutlineAlt/24AA.png new file mode 100644 index 000000000..a7f10702e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24AA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24AB.png b/fonts/MiniwiFontOutlineAlt/24AB.png new file mode 100644 index 000000000..794d03621 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24AB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24AC.png b/fonts/MiniwiFontOutlineAlt/24AC.png new file mode 100644 index 000000000..fed97a521 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24AC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24AD.png b/fonts/MiniwiFontOutlineAlt/24AD.png new file mode 100644 index 000000000..2cbe1ae47 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24AD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24AE.png b/fonts/MiniwiFontOutlineAlt/24AE.png new file mode 100644 index 000000000..9a1712c8f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24AE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24AF.png b/fonts/MiniwiFontOutlineAlt/24AF.png new file mode 100644 index 000000000..e9fd163e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24AF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B0.png b/fonts/MiniwiFontOutlineAlt/24B0.png new file mode 100644 index 000000000..a64d16528 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B1.png b/fonts/MiniwiFontOutlineAlt/24B1.png new file mode 100644 index 000000000..b002c1007 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B2.png b/fonts/MiniwiFontOutlineAlt/24B2.png new file mode 100644 index 000000000..261a47b86 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B3.png b/fonts/MiniwiFontOutlineAlt/24B3.png new file mode 100644 index 000000000..6d8ac3601 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B4.png b/fonts/MiniwiFontOutlineAlt/24B4.png new file mode 100644 index 000000000..d18e5bd76 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B5.png b/fonts/MiniwiFontOutlineAlt/24B5.png new file mode 100644 index 000000000..303bc2b04 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B6.png b/fonts/MiniwiFontOutlineAlt/24B6.png new file mode 100644 index 000000000..868549213 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B7.png b/fonts/MiniwiFontOutlineAlt/24B7.png new file mode 100644 index 000000000..8ef0085f8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B8.png b/fonts/MiniwiFontOutlineAlt/24B8.png new file mode 100644 index 000000000..211e00459 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24B9.png b/fonts/MiniwiFontOutlineAlt/24B9.png new file mode 100644 index 000000000..2e6165ff9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24B9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24BA.png b/fonts/MiniwiFontOutlineAlt/24BA.png new file mode 100644 index 000000000..a1344f37a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24BA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24BB.png b/fonts/MiniwiFontOutlineAlt/24BB.png new file mode 100644 index 000000000..e138c32fa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24BB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24BC.png b/fonts/MiniwiFontOutlineAlt/24BC.png new file mode 100644 index 000000000..0a626ac4c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24BC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24BD.png b/fonts/MiniwiFontOutlineAlt/24BD.png new file mode 100644 index 000000000..d9f197ee1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24BD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24BE.png b/fonts/MiniwiFontOutlineAlt/24BE.png new file mode 100644 index 000000000..1ece0bebf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24BE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24BF.png b/fonts/MiniwiFontOutlineAlt/24BF.png new file mode 100644 index 000000000..f2735b582 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24BF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C0.png b/fonts/MiniwiFontOutlineAlt/24C0.png new file mode 100644 index 000000000..8a5b155e0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C1.png b/fonts/MiniwiFontOutlineAlt/24C1.png new file mode 100644 index 000000000..8934db757 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C2.png b/fonts/MiniwiFontOutlineAlt/24C2.png new file mode 100644 index 000000000..7b29854d2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C3.png b/fonts/MiniwiFontOutlineAlt/24C3.png new file mode 100644 index 000000000..b79a1b453 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C4.png b/fonts/MiniwiFontOutlineAlt/24C4.png new file mode 100644 index 000000000..be85f8977 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C5.png b/fonts/MiniwiFontOutlineAlt/24C5.png new file mode 100644 index 000000000..f7b560435 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C6.png b/fonts/MiniwiFontOutlineAlt/24C6.png new file mode 100644 index 000000000..03663a684 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C7.png b/fonts/MiniwiFontOutlineAlt/24C7.png new file mode 100644 index 000000000..fdc14d2ed Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C8.png b/fonts/MiniwiFontOutlineAlt/24C8.png new file mode 100644 index 000000000..68626004d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24C9.png b/fonts/MiniwiFontOutlineAlt/24C9.png new file mode 100644 index 000000000..8dc093e58 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24C9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24CA.png b/fonts/MiniwiFontOutlineAlt/24CA.png new file mode 100644 index 000000000..cd7940d43 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24CA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24CB.png b/fonts/MiniwiFontOutlineAlt/24CB.png new file mode 100644 index 000000000..52a41d4ed Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24CB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24CC.png b/fonts/MiniwiFontOutlineAlt/24CC.png new file mode 100644 index 000000000..14a461d47 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24CC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24CD.png b/fonts/MiniwiFontOutlineAlt/24CD.png new file mode 100644 index 000000000..c44a62954 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24CD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24CE.png b/fonts/MiniwiFontOutlineAlt/24CE.png new file mode 100644 index 000000000..e82735236 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24CE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24CF.png b/fonts/MiniwiFontOutlineAlt/24CF.png new file mode 100644 index 000000000..c3e6c410d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24CF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D0.png b/fonts/MiniwiFontOutlineAlt/24D0.png new file mode 100644 index 000000000..f01a05e41 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D1.png b/fonts/MiniwiFontOutlineAlt/24D1.png new file mode 100644 index 000000000..43fe1978a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D2.png b/fonts/MiniwiFontOutlineAlt/24D2.png new file mode 100644 index 000000000..597a34b29 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D3.png b/fonts/MiniwiFontOutlineAlt/24D3.png new file mode 100644 index 000000000..ba0301d46 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D4.png b/fonts/MiniwiFontOutlineAlt/24D4.png new file mode 100644 index 000000000..d1941bed7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D5.png b/fonts/MiniwiFontOutlineAlt/24D5.png new file mode 100644 index 000000000..54a2bedf7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D6.png b/fonts/MiniwiFontOutlineAlt/24D6.png new file mode 100644 index 000000000..5542bcb58 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D7.png b/fonts/MiniwiFontOutlineAlt/24D7.png new file mode 100644 index 000000000..654f152b9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D8.png b/fonts/MiniwiFontOutlineAlt/24D8.png new file mode 100644 index 000000000..d06743cd2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24D9.png b/fonts/MiniwiFontOutlineAlt/24D9.png new file mode 100644 index 000000000..26093a4b1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24D9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24DA.png b/fonts/MiniwiFontOutlineAlt/24DA.png new file mode 100644 index 000000000..458abd471 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24DA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24DB.png b/fonts/MiniwiFontOutlineAlt/24DB.png new file mode 100644 index 000000000..4e3694c45 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24DB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24DC.png b/fonts/MiniwiFontOutlineAlt/24DC.png new file mode 100644 index 000000000..0bec9762a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24DC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24DD.png b/fonts/MiniwiFontOutlineAlt/24DD.png new file mode 100644 index 000000000..db00a3ab8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24DD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24DE.png b/fonts/MiniwiFontOutlineAlt/24DE.png new file mode 100644 index 000000000..be85f8977 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24DE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24DF.png b/fonts/MiniwiFontOutlineAlt/24DF.png new file mode 100644 index 000000000..4e89ed5f5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24DF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E0.png b/fonts/MiniwiFontOutlineAlt/24E0.png new file mode 100644 index 000000000..46b89a7a1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E1.png b/fonts/MiniwiFontOutlineAlt/24E1.png new file mode 100644 index 000000000..3e100010e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E2.png b/fonts/MiniwiFontOutlineAlt/24E2.png new file mode 100644 index 000000000..2508e73bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E3.png b/fonts/MiniwiFontOutlineAlt/24E3.png new file mode 100644 index 000000000..606d4d482 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E4.png b/fonts/MiniwiFontOutlineAlt/24E4.png new file mode 100644 index 000000000..cd7940d43 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E5.png b/fonts/MiniwiFontOutlineAlt/24E5.png new file mode 100644 index 000000000..52a41d4ed Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E6.png b/fonts/MiniwiFontOutlineAlt/24E6.png new file mode 100644 index 000000000..14a461d47 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E7.png b/fonts/MiniwiFontOutlineAlt/24E7.png new file mode 100644 index 000000000..c44a62954 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E8.png b/fonts/MiniwiFontOutlineAlt/24E8.png new file mode 100644 index 000000000..a1ce58cea Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24E9.png b/fonts/MiniwiFontOutlineAlt/24E9.png new file mode 100644 index 000000000..c4770a181 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24E9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24EA.png b/fonts/MiniwiFontOutlineAlt/24EA.png new file mode 100644 index 000000000..3343d8a29 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24EA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24EB.png b/fonts/MiniwiFontOutlineAlt/24EB.png new file mode 100644 index 000000000..d3f76300f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24EB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24EC.png b/fonts/MiniwiFontOutlineAlt/24EC.png new file mode 100644 index 000000000..d616c7a57 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24EC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24ED.png b/fonts/MiniwiFontOutlineAlt/24ED.png new file mode 100644 index 000000000..8161f1675 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24ED.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24EE.png b/fonts/MiniwiFontOutlineAlt/24EE.png new file mode 100644 index 000000000..ab920b6a3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24EE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24EF.png b/fonts/MiniwiFontOutlineAlt/24EF.png new file mode 100644 index 000000000..c2b9de7d8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24EF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F0.png b/fonts/MiniwiFontOutlineAlt/24F0.png new file mode 100644 index 000000000..670688d00 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F1.png b/fonts/MiniwiFontOutlineAlt/24F1.png new file mode 100644 index 000000000..d7cc82f01 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F2.png b/fonts/MiniwiFontOutlineAlt/24F2.png new file mode 100644 index 000000000..1300f2e8e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F3.png b/fonts/MiniwiFontOutlineAlt/24F3.png new file mode 100644 index 000000000..fdfc6ddb0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F4.png b/fonts/MiniwiFontOutlineAlt/24F4.png new file mode 100644 index 000000000..bd590c6ed Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F5.png b/fonts/MiniwiFontOutlineAlt/24F5.png new file mode 100644 index 000000000..790f89272 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F6.png b/fonts/MiniwiFontOutlineAlt/24F6.png new file mode 100644 index 000000000..b57ac40f2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F7.png b/fonts/MiniwiFontOutlineAlt/24F7.png new file mode 100644 index 000000000..1f45351f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F8.png b/fonts/MiniwiFontOutlineAlt/24F8.png new file mode 100644 index 000000000..d6205531e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24F9.png b/fonts/MiniwiFontOutlineAlt/24F9.png new file mode 100644 index 000000000..16017541e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24F9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24FA.png b/fonts/MiniwiFontOutlineAlt/24FA.png new file mode 100644 index 000000000..c441b3bde Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24FA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24FB.png b/fonts/MiniwiFontOutlineAlt/24FB.png new file mode 100644 index 000000000..b3c0239b6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24FB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24FC.png b/fonts/MiniwiFontOutlineAlt/24FC.png new file mode 100644 index 000000000..d999eb374 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24FC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24FD.png b/fonts/MiniwiFontOutlineAlt/24FD.png new file mode 100644 index 000000000..843d7de08 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24FD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24FE.png b/fonts/MiniwiFontOutlineAlt/24FE.png new file mode 100644 index 000000000..48d140197 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24FE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/24FF.png b/fonts/MiniwiFontOutlineAlt/24FF.png new file mode 100644 index 000000000..947138f0d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/24FF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2500.png b/fonts/MiniwiFontOutlineAlt/2500.png new file mode 100644 index 000000000..9e9c4458c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2500.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2501.png b/fonts/MiniwiFontOutlineAlt/2501.png new file mode 100644 index 000000000..11cdc0f01 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2501.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2502.png b/fonts/MiniwiFontOutlineAlt/2502.png new file mode 100644 index 000000000..af70c464e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2502.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2503.png b/fonts/MiniwiFontOutlineAlt/2503.png new file mode 100644 index 000000000..91fc1a034 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2503.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2504.png b/fonts/MiniwiFontOutlineAlt/2504.png new file mode 100644 index 000000000..191a66494 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2504.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2505.png b/fonts/MiniwiFontOutlineAlt/2505.png new file mode 100644 index 000000000..822e30957 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2505.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2506.png b/fonts/MiniwiFontOutlineAlt/2506.png new file mode 100644 index 000000000..7fee7a38b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2506.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2507.png b/fonts/MiniwiFontOutlineAlt/2507.png new file mode 100644 index 000000000..84ee8fbca Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2507.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2508.png b/fonts/MiniwiFontOutlineAlt/2508.png new file mode 100644 index 000000000..6601ce5f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2508.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2509.png b/fonts/MiniwiFontOutlineAlt/2509.png new file mode 100644 index 000000000..5e3896153 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2509.png differ diff --git a/fonts/MiniwiFontOutlineAlt/250A.png b/fonts/MiniwiFontOutlineAlt/250A.png new file mode 100644 index 000000000..4b04f34bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/250A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/250B.png b/fonts/MiniwiFontOutlineAlt/250B.png new file mode 100644 index 000000000..e6a47feab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/250B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/250C.png b/fonts/MiniwiFontOutlineAlt/250C.png new file mode 100644 index 000000000..69949dcd0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/250C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/250D.png b/fonts/MiniwiFontOutlineAlt/250D.png new file mode 100644 index 000000000..25f149ad5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/250D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/250E.png b/fonts/MiniwiFontOutlineAlt/250E.png new file mode 100644 index 000000000..b1e9e5f70 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/250E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/250F.png b/fonts/MiniwiFontOutlineAlt/250F.png new file mode 100644 index 000000000..25f149ad5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/250F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2510.png b/fonts/MiniwiFontOutlineAlt/2510.png new file mode 100644 index 000000000..c99eaddce Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2510.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2511.png b/fonts/MiniwiFontOutlineAlt/2511.png new file mode 100644 index 000000000..fd6fb5df9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2511.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2512.png b/fonts/MiniwiFontOutlineAlt/2512.png new file mode 100644 index 000000000..bcea7ee6b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2512.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2513.png b/fonts/MiniwiFontOutlineAlt/2513.png new file mode 100644 index 000000000..d7afdf2dd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2513.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2514.png b/fonts/MiniwiFontOutlineAlt/2514.png new file mode 100644 index 000000000..2323f8fc3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2514.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2515.png b/fonts/MiniwiFontOutlineAlt/2515.png new file mode 100644 index 000000000..592f8255b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2515.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2516.png b/fonts/MiniwiFontOutlineAlt/2516.png new file mode 100644 index 000000000..149645483 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2516.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2517.png b/fonts/MiniwiFontOutlineAlt/2517.png new file mode 100644 index 000000000..a2931122a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2517.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2518.png b/fonts/MiniwiFontOutlineAlt/2518.png new file mode 100644 index 000000000..7ac53434f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2518.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2519.png b/fonts/MiniwiFontOutlineAlt/2519.png new file mode 100644 index 000000000..208c664db Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2519.png differ diff --git a/fonts/MiniwiFontOutlineAlt/251A.png b/fonts/MiniwiFontOutlineAlt/251A.png new file mode 100644 index 000000000..c07501a40 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/251A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/251B.png b/fonts/MiniwiFontOutlineAlt/251B.png new file mode 100644 index 000000000..c63b05355 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/251B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/251C.png b/fonts/MiniwiFontOutlineAlt/251C.png new file mode 100644 index 000000000..a76f691e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/251C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/251D.png b/fonts/MiniwiFontOutlineAlt/251D.png new file mode 100644 index 000000000..7acf939f5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/251D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/251E.png b/fonts/MiniwiFontOutlineAlt/251E.png new file mode 100644 index 000000000..e7181220d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/251E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/251F.png b/fonts/MiniwiFontOutlineAlt/251F.png new file mode 100644 index 000000000..0d2bb167c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/251F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2520.png b/fonts/MiniwiFontOutlineAlt/2520.png new file mode 100644 index 000000000..ae882b889 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2520.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2521.png b/fonts/MiniwiFontOutlineAlt/2521.png new file mode 100644 index 000000000..2ec059eab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2521.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2522.png b/fonts/MiniwiFontOutlineAlt/2522.png new file mode 100644 index 000000000..52aff0a90 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2522.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2523.png b/fonts/MiniwiFontOutlineAlt/2523.png new file mode 100644 index 000000000..89f33b431 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2523.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2524.png b/fonts/MiniwiFontOutlineAlt/2524.png new file mode 100644 index 000000000..809c90351 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2524.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2525.png b/fonts/MiniwiFontOutlineAlt/2525.png new file mode 100644 index 000000000..cc1f465ef Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2525.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2526.png b/fonts/MiniwiFontOutlineAlt/2526.png new file mode 100644 index 000000000..48e28dfd7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2526.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2527.png b/fonts/MiniwiFontOutlineAlt/2527.png new file mode 100644 index 000000000..eaa0dede4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2527.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2528.png b/fonts/MiniwiFontOutlineAlt/2528.png new file mode 100644 index 000000000..897132d56 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2528.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2529.png b/fonts/MiniwiFontOutlineAlt/2529.png new file mode 100644 index 000000000..82d11687f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2529.png differ diff --git a/fonts/MiniwiFontOutlineAlt/252A.png b/fonts/MiniwiFontOutlineAlt/252A.png new file mode 100644 index 000000000..8d35d6a68 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/252A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/252B.png b/fonts/MiniwiFontOutlineAlt/252B.png new file mode 100644 index 000000000..b9f761bb8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/252B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/252C.png b/fonts/MiniwiFontOutlineAlt/252C.png new file mode 100644 index 000000000..df9aa80c4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/252C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/252D.png b/fonts/MiniwiFontOutlineAlt/252D.png new file mode 100644 index 000000000..9a6dd485f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/252D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/252E.png b/fonts/MiniwiFontOutlineAlt/252E.png new file mode 100644 index 000000000..7a21226a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/252E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/252F.png b/fonts/MiniwiFontOutlineAlt/252F.png new file mode 100644 index 000000000..3438c191b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/252F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2530.png b/fonts/MiniwiFontOutlineAlt/2530.png new file mode 100644 index 000000000..cec9e5aea Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2530.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2531.png b/fonts/MiniwiFontOutlineAlt/2531.png new file mode 100644 index 000000000..9b51fa142 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2531.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2532.png b/fonts/MiniwiFontOutlineAlt/2532.png new file mode 100644 index 000000000..88caff2e1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2532.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2533.png b/fonts/MiniwiFontOutlineAlt/2533.png new file mode 100644 index 000000000..d848d8d37 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2533.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2534.png b/fonts/MiniwiFontOutlineAlt/2534.png new file mode 100644 index 000000000..2bff35511 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2534.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2535.png b/fonts/MiniwiFontOutlineAlt/2535.png new file mode 100644 index 000000000..05a92f625 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2535.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2536.png b/fonts/MiniwiFontOutlineAlt/2536.png new file mode 100644 index 000000000..887d193f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2536.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2537.png b/fonts/MiniwiFontOutlineAlt/2537.png new file mode 100644 index 000000000..1b98a0045 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2537.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2538.png b/fonts/MiniwiFontOutlineAlt/2538.png new file mode 100644 index 000000000..71405d3f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2538.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2539.png b/fonts/MiniwiFontOutlineAlt/2539.png new file mode 100644 index 000000000..34c75c665 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2539.png differ diff --git a/fonts/MiniwiFontOutlineAlt/253A.png b/fonts/MiniwiFontOutlineAlt/253A.png new file mode 100644 index 000000000..45851a4be Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/253A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/253B.png b/fonts/MiniwiFontOutlineAlt/253B.png new file mode 100644 index 000000000..617802baa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/253B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/253C.png b/fonts/MiniwiFontOutlineAlt/253C.png new file mode 100644 index 000000000..cd72796a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/253C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/253D.png b/fonts/MiniwiFontOutlineAlt/253D.png new file mode 100644 index 000000000..397334744 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/253D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/253E.png b/fonts/MiniwiFontOutlineAlt/253E.png new file mode 100644 index 000000000..92513118e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/253E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/253F.png b/fonts/MiniwiFontOutlineAlt/253F.png new file mode 100644 index 000000000..105a2e34a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/253F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2540.png b/fonts/MiniwiFontOutlineAlt/2540.png new file mode 100644 index 000000000..386b117ee Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2540.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2541.png b/fonts/MiniwiFontOutlineAlt/2541.png new file mode 100644 index 000000000..1e3dde142 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2541.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2542.png b/fonts/MiniwiFontOutlineAlt/2542.png new file mode 100644 index 000000000..061263b52 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2542.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2543.png b/fonts/MiniwiFontOutlineAlt/2543.png new file mode 100644 index 000000000..82d11687f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2543.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2544.png b/fonts/MiniwiFontOutlineAlt/2544.png new file mode 100644 index 000000000..386b117ee Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2544.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2545.png b/fonts/MiniwiFontOutlineAlt/2545.png new file mode 100644 index 000000000..d3eca363b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2545.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2546.png b/fonts/MiniwiFontOutlineAlt/2546.png new file mode 100644 index 000000000..4d2e3f365 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2546.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2547.png b/fonts/MiniwiFontOutlineAlt/2547.png new file mode 100644 index 000000000..2f1bcf4f5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2547.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2548.png b/fonts/MiniwiFontOutlineAlt/2548.png new file mode 100644 index 000000000..76b78c070 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2548.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2549.png b/fonts/MiniwiFontOutlineAlt/2549.png new file mode 100644 index 000000000..5009685cb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2549.png differ diff --git a/fonts/MiniwiFontOutlineAlt/254A.png b/fonts/MiniwiFontOutlineAlt/254A.png new file mode 100644 index 000000000..7089f1a38 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/254A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/254B.png b/fonts/MiniwiFontOutlineAlt/254B.png new file mode 100644 index 000000000..a02b43d11 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/254B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/254C.png b/fonts/MiniwiFontOutlineAlt/254C.png new file mode 100644 index 000000000..191a66494 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/254C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/254D.png b/fonts/MiniwiFontOutlineAlt/254D.png new file mode 100644 index 000000000..822e30957 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/254D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/254E.png b/fonts/MiniwiFontOutlineAlt/254E.png new file mode 100644 index 000000000..1af2ca71c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/254E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/254F.png b/fonts/MiniwiFontOutlineAlt/254F.png new file mode 100644 index 000000000..25d6a2470 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/254F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2550.png b/fonts/MiniwiFontOutlineAlt/2550.png new file mode 100644 index 000000000..659d70966 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2550.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2551.png b/fonts/MiniwiFontOutlineAlt/2551.png new file mode 100644 index 000000000..8399ca823 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2551.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2552.png b/fonts/MiniwiFontOutlineAlt/2552.png new file mode 100644 index 000000000..0e10264d0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2552.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2553.png b/fonts/MiniwiFontOutlineAlt/2553.png new file mode 100644 index 000000000..eb2b3ff3d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2553.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2554.png b/fonts/MiniwiFontOutlineAlt/2554.png new file mode 100644 index 000000000..0fbfacad3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2554.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2555.png b/fonts/MiniwiFontOutlineAlt/2555.png new file mode 100644 index 000000000..2c3a36dbc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2555.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2556.png b/fonts/MiniwiFontOutlineAlt/2556.png new file mode 100644 index 000000000..68c2af480 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2556.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2557.png b/fonts/MiniwiFontOutlineAlt/2557.png new file mode 100644 index 000000000..7b012b1c0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2557.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2558.png b/fonts/MiniwiFontOutlineAlt/2558.png new file mode 100644 index 000000000..c348aed96 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2558.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2559.png b/fonts/MiniwiFontOutlineAlt/2559.png new file mode 100644 index 000000000..8bfeaeac6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2559.png differ diff --git a/fonts/MiniwiFontOutlineAlt/255A.png b/fonts/MiniwiFontOutlineAlt/255A.png new file mode 100644 index 000000000..8b9806124 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/255A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/255B.png b/fonts/MiniwiFontOutlineAlt/255B.png new file mode 100644 index 000000000..4bcc78b76 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/255B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/255C.png b/fonts/MiniwiFontOutlineAlt/255C.png new file mode 100644 index 000000000..defec4fd3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/255C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/255D.png b/fonts/MiniwiFontOutlineAlt/255D.png new file mode 100644 index 000000000..26d0f6228 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/255D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/255E.png b/fonts/MiniwiFontOutlineAlt/255E.png new file mode 100644 index 000000000..00cfb3d28 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/255E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/255F.png b/fonts/MiniwiFontOutlineAlt/255F.png new file mode 100644 index 000000000..3c8ee31bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/255F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2560.png b/fonts/MiniwiFontOutlineAlt/2560.png new file mode 100644 index 000000000..127726687 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2560.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2561.png b/fonts/MiniwiFontOutlineAlt/2561.png new file mode 100644 index 000000000..a2c4abe06 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2561.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2562.png b/fonts/MiniwiFontOutlineAlt/2562.png new file mode 100644 index 000000000..8399ca823 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2562.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2563.png b/fonts/MiniwiFontOutlineAlt/2563.png new file mode 100644 index 000000000..c4ca25c23 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2563.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2564.png b/fonts/MiniwiFontOutlineAlt/2564.png new file mode 100644 index 000000000..ce0420d6a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2564.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2565.png b/fonts/MiniwiFontOutlineAlt/2565.png new file mode 100644 index 000000000..eb2b3ff3d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2565.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2566.png b/fonts/MiniwiFontOutlineAlt/2566.png new file mode 100644 index 000000000..d6aac6f18 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2566.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2567.png b/fonts/MiniwiFontOutlineAlt/2567.png new file mode 100644 index 000000000..141cfa01c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2567.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2568.png b/fonts/MiniwiFontOutlineAlt/2568.png new file mode 100644 index 000000000..8bfeaeac6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2568.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2569.png b/fonts/MiniwiFontOutlineAlt/2569.png new file mode 100644 index 000000000..a4ec66a95 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2569.png differ diff --git a/fonts/MiniwiFontOutlineAlt/256A.png b/fonts/MiniwiFontOutlineAlt/256A.png new file mode 100644 index 000000000..deb7f6417 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/256A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/256B.png b/fonts/MiniwiFontOutlineAlt/256B.png new file mode 100644 index 000000000..3c8ee31bc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/256B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/256C.png b/fonts/MiniwiFontOutlineAlt/256C.png new file mode 100644 index 000000000..4d3861e9d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/256C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/256D.png b/fonts/MiniwiFontOutlineAlt/256D.png new file mode 100644 index 000000000..8ce0872d9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/256D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/256E.png b/fonts/MiniwiFontOutlineAlt/256E.png new file mode 100644 index 000000000..390bd322a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/256E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/256F.png b/fonts/MiniwiFontOutlineAlt/256F.png new file mode 100644 index 000000000..7f56dbab7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/256F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2570.png b/fonts/MiniwiFontOutlineAlt/2570.png new file mode 100644 index 000000000..77725c01c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2570.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2571.png b/fonts/MiniwiFontOutlineAlt/2571.png new file mode 100644 index 000000000..96b73cbd4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2571.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2572.png b/fonts/MiniwiFontOutlineAlt/2572.png new file mode 100644 index 000000000..1a5fcbac7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2572.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2573.png b/fonts/MiniwiFontOutlineAlt/2573.png new file mode 100644 index 000000000..21faed219 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2573.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2574.png b/fonts/MiniwiFontOutlineAlt/2574.png new file mode 100644 index 000000000..d399c4602 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2574.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2575.png b/fonts/MiniwiFontOutlineAlt/2575.png new file mode 100644 index 000000000..3687e9514 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2575.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2576.png b/fonts/MiniwiFontOutlineAlt/2576.png new file mode 100644 index 000000000..191a66494 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2576.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2577.png b/fonts/MiniwiFontOutlineAlt/2577.png new file mode 100644 index 000000000..a2247ad8b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2577.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2578.png b/fonts/MiniwiFontOutlineAlt/2578.png new file mode 100644 index 000000000..556b90b7b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2578.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2579.png b/fonts/MiniwiFontOutlineAlt/2579.png new file mode 100644 index 000000000..942d3325d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2579.png differ diff --git a/fonts/MiniwiFontOutlineAlt/257A.png b/fonts/MiniwiFontOutlineAlt/257A.png new file mode 100644 index 000000000..822e30957 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/257A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/257B.png b/fonts/MiniwiFontOutlineAlt/257B.png new file mode 100644 index 000000000..4db0f7628 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/257B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/257C.png b/fonts/MiniwiFontOutlineAlt/257C.png new file mode 100644 index 000000000..990c2ff15 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/257C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/257D.png b/fonts/MiniwiFontOutlineAlt/257D.png new file mode 100644 index 000000000..30f49632e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/257D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/257E.png b/fonts/MiniwiFontOutlineAlt/257E.png new file mode 100644 index 000000000..22da0cc9f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/257E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/257F.png b/fonts/MiniwiFontOutlineAlt/257F.png new file mode 100644 index 000000000..c2f02f3b2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/257F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2580.png b/fonts/MiniwiFontOutlineAlt/2580.png new file mode 100644 index 000000000..c1a0781fc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2580.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2581.png b/fonts/MiniwiFontOutlineAlt/2581.png new file mode 100644 index 000000000..927308800 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2581.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2582.png b/fonts/MiniwiFontOutlineAlt/2582.png new file mode 100644 index 000000000..342f2b9c1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2582.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2583.png b/fonts/MiniwiFontOutlineAlt/2583.png new file mode 100644 index 000000000..1bbd0e8a6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2583.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2584.png b/fonts/MiniwiFontOutlineAlt/2584.png new file mode 100644 index 000000000..5b10e0624 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2584.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2585.png b/fonts/MiniwiFontOutlineAlt/2585.png new file mode 100644 index 000000000..3a1d2d922 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2585.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2586.png b/fonts/MiniwiFontOutlineAlt/2586.png new file mode 100644 index 000000000..329b61717 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2586.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2587.png b/fonts/MiniwiFontOutlineAlt/2587.png new file mode 100644 index 000000000..9eb54e47c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2587.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2588.png b/fonts/MiniwiFontOutlineAlt/2588.png new file mode 100644 index 000000000..2dace6f69 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2588.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2589.png b/fonts/MiniwiFontOutlineAlt/2589.png new file mode 100644 index 000000000..c7647d3a1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2589.png differ diff --git a/fonts/MiniwiFontOutlineAlt/258A.png b/fonts/MiniwiFontOutlineAlt/258A.png new file mode 100644 index 000000000..a34c7f0f8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/258A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/258B.png b/fonts/MiniwiFontOutlineAlt/258B.png new file mode 100644 index 000000000..547c38d35 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/258B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/258C.png b/fonts/MiniwiFontOutlineAlt/258C.png new file mode 100644 index 000000000..35c66b604 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/258C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/258D.png b/fonts/MiniwiFontOutlineAlt/258D.png new file mode 100644 index 000000000..61cffe839 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/258D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/258E.png b/fonts/MiniwiFontOutlineAlt/258E.png new file mode 100644 index 000000000..5b585362a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/258E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/258F.png b/fonts/MiniwiFontOutlineAlt/258F.png new file mode 100644 index 000000000..1bfe6a80c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/258F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2590.png b/fonts/MiniwiFontOutlineAlt/2590.png new file mode 100644 index 000000000..e27b80252 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2590.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2591.png b/fonts/MiniwiFontOutlineAlt/2591.png new file mode 100644 index 000000000..e20339677 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2591.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2592.png b/fonts/MiniwiFontOutlineAlt/2592.png new file mode 100644 index 000000000..827b5acb6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2592.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2593.png b/fonts/MiniwiFontOutlineAlt/2593.png new file mode 100644 index 000000000..9f2211ffd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2593.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2594.png b/fonts/MiniwiFontOutlineAlt/2594.png new file mode 100644 index 000000000..9c194f521 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2594.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2595.png b/fonts/MiniwiFontOutlineAlt/2595.png new file mode 100644 index 000000000..c9d90ba32 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2595.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2596.png b/fonts/MiniwiFontOutlineAlt/2596.png new file mode 100644 index 000000000..55eb028e6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2596.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2597.png b/fonts/MiniwiFontOutlineAlt/2597.png new file mode 100644 index 000000000..94d6c41fc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2597.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2598.png b/fonts/MiniwiFontOutlineAlt/2598.png new file mode 100644 index 000000000..a0bff7c22 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2598.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2599.png b/fonts/MiniwiFontOutlineAlt/2599.png new file mode 100644 index 000000000..9d5797fb6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2599.png differ diff --git a/fonts/MiniwiFontOutlineAlt/259A.png b/fonts/MiniwiFontOutlineAlt/259A.png new file mode 100644 index 000000000..cb4ee14d0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/259A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/259B.png b/fonts/MiniwiFontOutlineAlt/259B.png new file mode 100644 index 000000000..f24b727ea Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/259B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/259C.png b/fonts/MiniwiFontOutlineAlt/259C.png new file mode 100644 index 000000000..04b0d2e89 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/259C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/259D.png b/fonts/MiniwiFontOutlineAlt/259D.png new file mode 100644 index 000000000..111f5fdc5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/259D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/259E.png b/fonts/MiniwiFontOutlineAlt/259E.png new file mode 100644 index 000000000..c7b91e5eb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/259E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/259F.png b/fonts/MiniwiFontOutlineAlt/259F.png new file mode 100644 index 000000000..909b75755 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/259F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/25A0.png b/fonts/MiniwiFontOutlineAlt/25A0.png new file mode 100644 index 000000000..f43fa6b31 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/25A0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/25CA.png b/fonts/MiniwiFontOutlineAlt/25CA.png new file mode 100644 index 000000000..fc8661e3d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/25CA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2660.png b/fonts/MiniwiFontOutlineAlt/2660.png new file mode 100644 index 000000000..a2a5e9821 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2660.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2663.png b/fonts/MiniwiFontOutlineAlt/2663.png new file mode 100644 index 000000000..f76dc5628 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2663.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2665.png b/fonts/MiniwiFontOutlineAlt/2665.png new file mode 100644 index 000000000..099e9dfaf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2665.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2666.png b/fonts/MiniwiFontOutlineAlt/2666.png new file mode 100644 index 000000000..39ab98af0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2666.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2801.png b/fonts/MiniwiFontOutlineAlt/2801.png new file mode 100644 index 000000000..534621e36 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2801.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2802.png b/fonts/MiniwiFontOutlineAlt/2802.png new file mode 100644 index 000000000..c741133bd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2802.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2803.png b/fonts/MiniwiFontOutlineAlt/2803.png new file mode 100644 index 000000000..6bd50044b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2803.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2804.png b/fonts/MiniwiFontOutlineAlt/2804.png new file mode 100644 index 000000000..f722d5654 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2804.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2805.png b/fonts/MiniwiFontOutlineAlt/2805.png new file mode 100644 index 000000000..de1fe0afb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2805.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2806.png b/fonts/MiniwiFontOutlineAlt/2806.png new file mode 100644 index 000000000..d43e58906 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2806.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2807.png b/fonts/MiniwiFontOutlineAlt/2807.png new file mode 100644 index 000000000..a6cd74ced Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2807.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2808.png b/fonts/MiniwiFontOutlineAlt/2808.png new file mode 100644 index 000000000..575fca91c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2808.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2809.png b/fonts/MiniwiFontOutlineAlt/2809.png new file mode 100644 index 000000000..dd5ec2679 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2809.png differ diff --git a/fonts/MiniwiFontOutlineAlt/280A.png b/fonts/MiniwiFontOutlineAlt/280A.png new file mode 100644 index 000000000..d43d6b032 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/280A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/280B.png b/fonts/MiniwiFontOutlineAlt/280B.png new file mode 100644 index 000000000..6a73bd7f2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/280B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/280C.png b/fonts/MiniwiFontOutlineAlt/280C.png new file mode 100644 index 000000000..9bc2e1d86 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/280C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/280D.png b/fonts/MiniwiFontOutlineAlt/280D.png new file mode 100644 index 000000000..7884c7c57 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/280D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/280E.png b/fonts/MiniwiFontOutlineAlt/280E.png new file mode 100644 index 000000000..3d8728c14 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/280E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/280F.png b/fonts/MiniwiFontOutlineAlt/280F.png new file mode 100644 index 000000000..feb27bae7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/280F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2810.png b/fonts/MiniwiFontOutlineAlt/2810.png new file mode 100644 index 000000000..eed59adfb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2810.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2811.png b/fonts/MiniwiFontOutlineAlt/2811.png new file mode 100644 index 000000000..fdbec4078 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2811.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2812.png b/fonts/MiniwiFontOutlineAlt/2812.png new file mode 100644 index 000000000..77bcde044 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2812.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2813.png b/fonts/MiniwiFontOutlineAlt/2813.png new file mode 100644 index 000000000..3bd44f5e5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2813.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2814.png b/fonts/MiniwiFontOutlineAlt/2814.png new file mode 100644 index 000000000..98e722e0c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2814.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2815.png b/fonts/MiniwiFontOutlineAlt/2815.png new file mode 100644 index 000000000..57db880c0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2815.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2816.png b/fonts/MiniwiFontOutlineAlt/2816.png new file mode 100644 index 000000000..eab326970 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2816.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2817.png b/fonts/MiniwiFontOutlineAlt/2817.png new file mode 100644 index 000000000..eab326970 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2817.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2818.png b/fonts/MiniwiFontOutlineAlt/2818.png new file mode 100644 index 000000000..6bd50044b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2818.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2819.png b/fonts/MiniwiFontOutlineAlt/2819.png new file mode 100644 index 000000000..3f36cfe4f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2819.png differ diff --git a/fonts/MiniwiFontOutlineAlt/281A.png b/fonts/MiniwiFontOutlineAlt/281A.png new file mode 100644 index 000000000..77c9fc8b8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/281A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/281B.png b/fonts/MiniwiFontOutlineAlt/281B.png new file mode 100644 index 000000000..9e94abbfd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/281B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/281C.png b/fonts/MiniwiFontOutlineAlt/281C.png new file mode 100644 index 000000000..0851a4355 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/281C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/281D.png b/fonts/MiniwiFontOutlineAlt/281D.png new file mode 100644 index 000000000..eaeffb1d3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/281D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/281E.png b/fonts/MiniwiFontOutlineAlt/281E.png new file mode 100644 index 000000000..9cea57612 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/281E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/281F.png b/fonts/MiniwiFontOutlineAlt/281F.png new file mode 100644 index 000000000..dbcfab6e1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/281F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2820.png b/fonts/MiniwiFontOutlineAlt/2820.png new file mode 100644 index 000000000..1859c4cb0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2820.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2821.png b/fonts/MiniwiFontOutlineAlt/2821.png new file mode 100644 index 000000000..7697fc1a9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2821.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2822.png b/fonts/MiniwiFontOutlineAlt/2822.png new file mode 100644 index 000000000..53aae2ed8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2822.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2823.png b/fonts/MiniwiFontOutlineAlt/2823.png new file mode 100644 index 000000000..a483886b1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2823.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2824.png b/fonts/MiniwiFontOutlineAlt/2824.png new file mode 100644 index 000000000..6601ce5f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2824.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2825.png b/fonts/MiniwiFontOutlineAlt/2825.png new file mode 100644 index 000000000..b64e487f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2825.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2826.png b/fonts/MiniwiFontOutlineAlt/2826.png new file mode 100644 index 000000000..9a2648d5e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2826.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2827.png b/fonts/MiniwiFontOutlineAlt/2827.png new file mode 100644 index 000000000..fd48c1861 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2827.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2828.png b/fonts/MiniwiFontOutlineAlt/2828.png new file mode 100644 index 000000000..b84ca2113 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2828.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2829.png b/fonts/MiniwiFontOutlineAlt/2829.png new file mode 100644 index 000000000..6fc8d0918 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2829.png differ diff --git a/fonts/MiniwiFontOutlineAlt/282A.png b/fonts/MiniwiFontOutlineAlt/282A.png new file mode 100644 index 000000000..c5f5fc8ed Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/282A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/282B.png b/fonts/MiniwiFontOutlineAlt/282B.png new file mode 100644 index 000000000..e708254c8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/282B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/282C.png b/fonts/MiniwiFontOutlineAlt/282C.png new file mode 100644 index 000000000..abb6ba926 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/282C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/282D.png b/fonts/MiniwiFontOutlineAlt/282D.png new file mode 100644 index 000000000..b871d30b9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/282D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/282E.png b/fonts/MiniwiFontOutlineAlt/282E.png new file mode 100644 index 000000000..dfe1fe08b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/282E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/282F.png b/fonts/MiniwiFontOutlineAlt/282F.png new file mode 100644 index 000000000..a848ef3e9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/282F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2830.png b/fonts/MiniwiFontOutlineAlt/2830.png new file mode 100644 index 000000000..864f51455 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2830.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2831.png b/fonts/MiniwiFontOutlineAlt/2831.png new file mode 100644 index 000000000..1a5863bd6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2831.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2832.png b/fonts/MiniwiFontOutlineAlt/2832.png new file mode 100644 index 000000000..88124e66c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2832.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2833.png b/fonts/MiniwiFontOutlineAlt/2833.png new file mode 100644 index 000000000..edf822557 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2833.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2834.png b/fonts/MiniwiFontOutlineAlt/2834.png new file mode 100644 index 000000000..89041df5d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2834.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2835.png b/fonts/MiniwiFontOutlineAlt/2835.png new file mode 100644 index 000000000..b722c41a4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2835.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2836.png b/fonts/MiniwiFontOutlineAlt/2836.png new file mode 100644 index 000000000..9e6a415d3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2836.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2837.png b/fonts/MiniwiFontOutlineAlt/2837.png new file mode 100644 index 000000000..7095b67fd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2837.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2838.png b/fonts/MiniwiFontOutlineAlt/2838.png new file mode 100644 index 000000000..0dd6bc2f0 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2838.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2839.png b/fonts/MiniwiFontOutlineAlt/2839.png new file mode 100644 index 000000000..5d3220a54 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2839.png differ diff --git a/fonts/MiniwiFontOutlineAlt/283A.png b/fonts/MiniwiFontOutlineAlt/283A.png new file mode 100644 index 000000000..c5b7abb6c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/283A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/283B.png b/fonts/MiniwiFontOutlineAlt/283B.png new file mode 100644 index 000000000..a56ccac36 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/283B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/283C.png b/fonts/MiniwiFontOutlineAlt/283C.png new file mode 100644 index 000000000..a0d9a5d56 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/283C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/283D.png b/fonts/MiniwiFontOutlineAlt/283D.png new file mode 100644 index 000000000..0011883f8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/283D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/283E.png b/fonts/MiniwiFontOutlineAlt/283E.png new file mode 100644 index 000000000..784aadb11 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/283E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/283F.png b/fonts/MiniwiFontOutlineAlt/283F.png new file mode 100644 index 000000000..f112fb9b9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/283F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2840.png b/fonts/MiniwiFontOutlineAlt/2840.png new file mode 100644 index 000000000..53b012c3e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2840.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2841.png b/fonts/MiniwiFontOutlineAlt/2841.png new file mode 100644 index 000000000..9e512a262 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2841.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2842.png b/fonts/MiniwiFontOutlineAlt/2842.png new file mode 100644 index 000000000..486535c1c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2842.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2843.png b/fonts/MiniwiFontOutlineAlt/2843.png new file mode 100644 index 000000000..b80a35711 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2843.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2844.png b/fonts/MiniwiFontOutlineAlt/2844.png new file mode 100644 index 000000000..16d0be602 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2844.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2845.png b/fonts/MiniwiFontOutlineAlt/2845.png new file mode 100644 index 000000000..9cf4cfd4f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2845.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2846.png b/fonts/MiniwiFontOutlineAlt/2846.png new file mode 100644 index 000000000..ea5f922ad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2846.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2847.png b/fonts/MiniwiFontOutlineAlt/2847.png new file mode 100644 index 000000000..1bfe6a80c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2847.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2848.png b/fonts/MiniwiFontOutlineAlt/2848.png new file mode 100644 index 000000000..b0f59d9a7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2848.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2849.png b/fonts/MiniwiFontOutlineAlt/2849.png new file mode 100644 index 000000000..b0f59d9a7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2849.png differ diff --git a/fonts/MiniwiFontOutlineAlt/284A.png b/fonts/MiniwiFontOutlineAlt/284A.png new file mode 100644 index 000000000..b8d81103a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/284A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/284B.png b/fonts/MiniwiFontOutlineAlt/284B.png new file mode 100644 index 000000000..cda5f2b75 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/284B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/284C.png b/fonts/MiniwiFontOutlineAlt/284C.png new file mode 100644 index 000000000..239a71b6a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/284C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/284D.png b/fonts/MiniwiFontOutlineAlt/284D.png new file mode 100644 index 000000000..327fc59be Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/284D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/284E.png b/fonts/MiniwiFontOutlineAlt/284E.png new file mode 100644 index 000000000..fbec01c46 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/284E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/284F.png b/fonts/MiniwiFontOutlineAlt/284F.png new file mode 100644 index 000000000..94fcda2f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/284F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2850.png b/fonts/MiniwiFontOutlineAlt/2850.png new file mode 100644 index 000000000..451174e94 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2850.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2851.png b/fonts/MiniwiFontOutlineAlt/2851.png new file mode 100644 index 000000000..98da1c9f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2851.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2852.png b/fonts/MiniwiFontOutlineAlt/2852.png new file mode 100644 index 000000000..c6d4c24a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2852.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2853.png b/fonts/MiniwiFontOutlineAlt/2853.png new file mode 100644 index 000000000..c6d4c24a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2853.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2854.png b/fonts/MiniwiFontOutlineAlt/2854.png new file mode 100644 index 000000000..a55612db2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2854.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2855.png b/fonts/MiniwiFontOutlineAlt/2855.png new file mode 100644 index 000000000..3642c52a2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2855.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2856.png b/fonts/MiniwiFontOutlineAlt/2856.png new file mode 100644 index 000000000..e4e312b98 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2856.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2857.png b/fonts/MiniwiFontOutlineAlt/2857.png new file mode 100644 index 000000000..746ff455c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2857.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2858.png b/fonts/MiniwiFontOutlineAlt/2858.png new file mode 100644 index 000000000..4801aa7b1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2858.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2859.png b/fonts/MiniwiFontOutlineAlt/2859.png new file mode 100644 index 000000000..8f8d6b85e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2859.png differ diff --git a/fonts/MiniwiFontOutlineAlt/285A.png b/fonts/MiniwiFontOutlineAlt/285A.png new file mode 100644 index 000000000..b44662001 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/285A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/285B.png b/fonts/MiniwiFontOutlineAlt/285B.png new file mode 100644 index 000000000..05c78aa51 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/285B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/285C.png b/fonts/MiniwiFontOutlineAlt/285C.png new file mode 100644 index 000000000..899b3fbfa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/285C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/285D.png b/fonts/MiniwiFontOutlineAlt/285D.png new file mode 100644 index 000000000..54837bd58 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/285D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/285E.png b/fonts/MiniwiFontOutlineAlt/285E.png new file mode 100644 index 000000000..b44662001 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/285E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/285F.png b/fonts/MiniwiFontOutlineAlt/285F.png new file mode 100644 index 000000000..dc5474553 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/285F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2860.png b/fonts/MiniwiFontOutlineAlt/2860.png new file mode 100644 index 000000000..3af99c5e9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2860.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2861.png b/fonts/MiniwiFontOutlineAlt/2861.png new file mode 100644 index 000000000..ef2d095a6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2861.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2862.png b/fonts/MiniwiFontOutlineAlt/2862.png new file mode 100644 index 000000000..4a785b855 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2862.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2863.png b/fonts/MiniwiFontOutlineAlt/2863.png new file mode 100644 index 000000000..8a4c6613e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2863.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2864.png b/fonts/MiniwiFontOutlineAlt/2864.png new file mode 100644 index 000000000..949a3c715 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2864.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2865.png b/fonts/MiniwiFontOutlineAlt/2865.png new file mode 100644 index 000000000..5c8e318e9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2865.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2866.png b/fonts/MiniwiFontOutlineAlt/2866.png new file mode 100644 index 000000000..96abb0809 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2866.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2867.png b/fonts/MiniwiFontOutlineAlt/2867.png new file mode 100644 index 000000000..8873bfb3e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2867.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2868.png b/fonts/MiniwiFontOutlineAlt/2868.png new file mode 100644 index 000000000..6693532a8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2868.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2869.png b/fonts/MiniwiFontOutlineAlt/2869.png new file mode 100644 index 000000000..66d07623e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2869.png differ diff --git a/fonts/MiniwiFontOutlineAlt/286A.png b/fonts/MiniwiFontOutlineAlt/286A.png new file mode 100644 index 000000000..8e8bd64be Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/286A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/286B.png b/fonts/MiniwiFontOutlineAlt/286B.png new file mode 100644 index 000000000..e720cbced Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/286B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/286C.png b/fonts/MiniwiFontOutlineAlt/286C.png new file mode 100644 index 000000000..63ee7008b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/286C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/286D.png b/fonts/MiniwiFontOutlineAlt/286D.png new file mode 100644 index 000000000..d37aa83b9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/286D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/286E.png b/fonts/MiniwiFontOutlineAlt/286E.png new file mode 100644 index 000000000..6f679b51b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/286E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/286F.png b/fonts/MiniwiFontOutlineAlt/286F.png new file mode 100644 index 000000000..ea5d9386b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/286F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2870.png b/fonts/MiniwiFontOutlineAlt/2870.png new file mode 100644 index 000000000..1a54e3993 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2870.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2871.png b/fonts/MiniwiFontOutlineAlt/2871.png new file mode 100644 index 000000000..1a3506476 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2871.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2872.png b/fonts/MiniwiFontOutlineAlt/2872.png new file mode 100644 index 000000000..ca18b91ac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2872.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2873.png b/fonts/MiniwiFontOutlineAlt/2873.png new file mode 100644 index 000000000..88aa85b7b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2873.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2874.png b/fonts/MiniwiFontOutlineAlt/2874.png new file mode 100644 index 000000000..fc08f0f64 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2874.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2875.png b/fonts/MiniwiFontOutlineAlt/2875.png new file mode 100644 index 000000000..6e55da54e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2875.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2876.png b/fonts/MiniwiFontOutlineAlt/2876.png new file mode 100644 index 000000000..b730a34f4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2876.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2877.png b/fonts/MiniwiFontOutlineAlt/2877.png new file mode 100644 index 000000000..8a1e7d865 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2877.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2878.png b/fonts/MiniwiFontOutlineAlt/2878.png new file mode 100644 index 000000000..0d8d7c61e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2878.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2879.png b/fonts/MiniwiFontOutlineAlt/2879.png new file mode 100644 index 000000000..1c1f3347b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2879.png differ diff --git a/fonts/MiniwiFontOutlineAlt/287A.png b/fonts/MiniwiFontOutlineAlt/287A.png new file mode 100644 index 000000000..034f31712 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/287A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/287B.png b/fonts/MiniwiFontOutlineAlt/287B.png new file mode 100644 index 000000000..c55b7b4cb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/287B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/287C.png b/fonts/MiniwiFontOutlineAlt/287C.png new file mode 100644 index 000000000..661aacc40 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/287C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/287D.png b/fonts/MiniwiFontOutlineAlt/287D.png new file mode 100644 index 000000000..c6933e485 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/287D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/287E.png b/fonts/MiniwiFontOutlineAlt/287E.png new file mode 100644 index 000000000..86514806a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/287E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/287F.png b/fonts/MiniwiFontOutlineAlt/287F.png new file mode 100644 index 000000000..0b1431caa Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/287F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2880.png b/fonts/MiniwiFontOutlineAlt/2880.png new file mode 100644 index 000000000..fb712f209 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2880.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2881.png b/fonts/MiniwiFontOutlineAlt/2881.png new file mode 100644 index 000000000..4f953d0ce Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2881.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2882.png b/fonts/MiniwiFontOutlineAlt/2882.png new file mode 100644 index 000000000..63685cace Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2882.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2883.png b/fonts/MiniwiFontOutlineAlt/2883.png new file mode 100644 index 000000000..0349dd438 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2883.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2884.png b/fonts/MiniwiFontOutlineAlt/2884.png new file mode 100644 index 000000000..0fd39628a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2884.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2885.png b/fonts/MiniwiFontOutlineAlt/2885.png new file mode 100644 index 000000000..af186dcc5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2885.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2886.png b/fonts/MiniwiFontOutlineAlt/2886.png new file mode 100644 index 000000000..2272b2cbc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2886.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2887.png b/fonts/MiniwiFontOutlineAlt/2887.png new file mode 100644 index 000000000..1ed231ec2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2887.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2888.png b/fonts/MiniwiFontOutlineAlt/2888.png new file mode 100644 index 000000000..de31931d3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2888.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2889.png b/fonts/MiniwiFontOutlineAlt/2889.png new file mode 100644 index 000000000..7f8f693f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2889.png differ diff --git a/fonts/MiniwiFontOutlineAlt/288A.png b/fonts/MiniwiFontOutlineAlt/288A.png new file mode 100644 index 000000000..1e7c4074b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/288A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/288B.png b/fonts/MiniwiFontOutlineAlt/288B.png new file mode 100644 index 000000000..6cdf3ab23 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/288B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/288C.png b/fonts/MiniwiFontOutlineAlt/288C.png new file mode 100644 index 000000000..8adbf3fa8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/288C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/288D.png b/fonts/MiniwiFontOutlineAlt/288D.png new file mode 100644 index 000000000..f5c885751 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/288D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/288E.png b/fonts/MiniwiFontOutlineAlt/288E.png new file mode 100644 index 000000000..b792bfbb2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/288E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/288F.png b/fonts/MiniwiFontOutlineAlt/288F.png new file mode 100644 index 000000000..52acb0139 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/288F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2890.png b/fonts/MiniwiFontOutlineAlt/2890.png new file mode 100644 index 000000000..c4771f82c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2890.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2891.png b/fonts/MiniwiFontOutlineAlt/2891.png new file mode 100644 index 000000000..9a30d9e6c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2891.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2892.png b/fonts/MiniwiFontOutlineAlt/2892.png new file mode 100644 index 000000000..c2a1d4e22 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2892.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2893.png b/fonts/MiniwiFontOutlineAlt/2893.png new file mode 100644 index 000000000..c2a1d4e22 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2893.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2894.png b/fonts/MiniwiFontOutlineAlt/2894.png new file mode 100644 index 000000000..0ffb02638 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2894.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2895.png b/fonts/MiniwiFontOutlineAlt/2895.png new file mode 100644 index 000000000..ce5bae2a7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2895.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2896.png b/fonts/MiniwiFontOutlineAlt/2896.png new file mode 100644 index 000000000..ae867b616 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2896.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2897.png b/fonts/MiniwiFontOutlineAlt/2897.png new file mode 100644 index 000000000..37c437b00 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2897.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2898.png b/fonts/MiniwiFontOutlineAlt/2898.png new file mode 100644 index 000000000..4089f555d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2898.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2899.png b/fonts/MiniwiFontOutlineAlt/2899.png new file mode 100644 index 000000000..4ee828c58 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2899.png differ diff --git a/fonts/MiniwiFontOutlineAlt/289A.png b/fonts/MiniwiFontOutlineAlt/289A.png new file mode 100644 index 000000000..84dd5f9a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/289A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/289B.png b/fonts/MiniwiFontOutlineAlt/289B.png new file mode 100644 index 000000000..9274fa322 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/289B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/289C.png b/fonts/MiniwiFontOutlineAlt/289C.png new file mode 100644 index 000000000..4850d1659 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/289C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/289D.png b/fonts/MiniwiFontOutlineAlt/289D.png new file mode 100644 index 000000000..2927d0b33 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/289D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/289E.png b/fonts/MiniwiFontOutlineAlt/289E.png new file mode 100644 index 000000000..7e7d04da3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/289E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/289F.png b/fonts/MiniwiFontOutlineAlt/289F.png new file mode 100644 index 000000000..72788e156 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/289F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A0.png b/fonts/MiniwiFontOutlineAlt/28A0.png new file mode 100644 index 000000000..e6748fb15 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A1.png b/fonts/MiniwiFontOutlineAlt/28A1.png new file mode 100644 index 000000000..2911bcd14 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A2.png b/fonts/MiniwiFontOutlineAlt/28A2.png new file mode 100644 index 000000000..d4ca78642 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A3.png b/fonts/MiniwiFontOutlineAlt/28A3.png new file mode 100644 index 000000000..aa1b1b5ad Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A4.png b/fonts/MiniwiFontOutlineAlt/28A4.png new file mode 100644 index 000000000..1fade44bd Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A5.png b/fonts/MiniwiFontOutlineAlt/28A5.png new file mode 100644 index 000000000..0a5d70440 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A6.png b/fonts/MiniwiFontOutlineAlt/28A6.png new file mode 100644 index 000000000..3eaca9429 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A7.png b/fonts/MiniwiFontOutlineAlt/28A7.png new file mode 100644 index 000000000..7aacb1756 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A8.png b/fonts/MiniwiFontOutlineAlt/28A8.png new file mode 100644 index 000000000..b62b2f59e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28A9.png b/fonts/MiniwiFontOutlineAlt/28A9.png new file mode 100644 index 000000000..52f59d9f6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28A9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28AA.png b/fonts/MiniwiFontOutlineAlt/28AA.png new file mode 100644 index 000000000..dbf9801a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28AA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28AB.png b/fonts/MiniwiFontOutlineAlt/28AB.png new file mode 100644 index 000000000..cd0184366 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28AB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28AC.png b/fonts/MiniwiFontOutlineAlt/28AC.png new file mode 100644 index 000000000..adcf82238 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28AC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28AD.png b/fonts/MiniwiFontOutlineAlt/28AD.png new file mode 100644 index 000000000..af108b91f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28AD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28AE.png b/fonts/MiniwiFontOutlineAlt/28AE.png new file mode 100644 index 000000000..7fbd39bf1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28AE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28AF.png b/fonts/MiniwiFontOutlineAlt/28AF.png new file mode 100644 index 000000000..9bb609c46 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28AF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B0.png b/fonts/MiniwiFontOutlineAlt/28B0.png new file mode 100644 index 000000000..c5f44908b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B1.png b/fonts/MiniwiFontOutlineAlt/28B1.png new file mode 100644 index 000000000..5b4ca0240 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B2.png b/fonts/MiniwiFontOutlineAlt/28B2.png new file mode 100644 index 000000000..e191c7341 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B3.png b/fonts/MiniwiFontOutlineAlt/28B3.png new file mode 100644 index 000000000..c9ab16a1c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B4.png b/fonts/MiniwiFontOutlineAlt/28B4.png new file mode 100644 index 000000000..65f17d135 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B5.png b/fonts/MiniwiFontOutlineAlt/28B5.png new file mode 100644 index 000000000..0016e26cc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B6.png b/fonts/MiniwiFontOutlineAlt/28B6.png new file mode 100644 index 000000000..f8137071b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B7.png b/fonts/MiniwiFontOutlineAlt/28B7.png new file mode 100644 index 000000000..b299f514a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B8.png b/fonts/MiniwiFontOutlineAlt/28B8.png new file mode 100644 index 000000000..a2804e149 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28B9.png b/fonts/MiniwiFontOutlineAlt/28B9.png new file mode 100644 index 000000000..65a78bef4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28B9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28BA.png b/fonts/MiniwiFontOutlineAlt/28BA.png new file mode 100644 index 000000000..5f5e99be8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28BA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28BB.png b/fonts/MiniwiFontOutlineAlt/28BB.png new file mode 100644 index 000000000..e4a031adf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28BB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28BC.png b/fonts/MiniwiFontOutlineAlt/28BC.png new file mode 100644 index 000000000..eb3b6893b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28BC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28BD.png b/fonts/MiniwiFontOutlineAlt/28BD.png new file mode 100644 index 000000000..d13d9af01 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28BD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28BE.png b/fonts/MiniwiFontOutlineAlt/28BE.png new file mode 100644 index 000000000..dff306e71 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28BE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28BF.png b/fonts/MiniwiFontOutlineAlt/28BF.png new file mode 100644 index 000000000..20d300b48 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28BF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C0.png b/fonts/MiniwiFontOutlineAlt/28C0.png new file mode 100644 index 000000000..2cfd0d63a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C1.png b/fonts/MiniwiFontOutlineAlt/28C1.png new file mode 100644 index 000000000..01a2339de Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C2.png b/fonts/MiniwiFontOutlineAlt/28C2.png new file mode 100644 index 000000000..2750dd3f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C3.png b/fonts/MiniwiFontOutlineAlt/28C3.png new file mode 100644 index 000000000..99808207c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C4.png b/fonts/MiniwiFontOutlineAlt/28C4.png new file mode 100644 index 000000000..8efb2113d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C5.png b/fonts/MiniwiFontOutlineAlt/28C5.png new file mode 100644 index 000000000..89e664311 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C6.png b/fonts/MiniwiFontOutlineAlt/28C6.png new file mode 100644 index 000000000..ea55ee1c8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C7.png b/fonts/MiniwiFontOutlineAlt/28C7.png new file mode 100644 index 000000000..ab4afda9f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C8.png b/fonts/MiniwiFontOutlineAlt/28C8.png new file mode 100644 index 000000000..004c66e40 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28C9.png b/fonts/MiniwiFontOutlineAlt/28C9.png new file mode 100644 index 000000000..930125f23 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28C9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28CA.png b/fonts/MiniwiFontOutlineAlt/28CA.png new file mode 100644 index 000000000..a7a581969 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28CA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28CB.png b/fonts/MiniwiFontOutlineAlt/28CB.png new file mode 100644 index 000000000..0453dc82a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28CB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28CC.png b/fonts/MiniwiFontOutlineAlt/28CC.png new file mode 100644 index 000000000..657cb0474 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28CC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28CD.png b/fonts/MiniwiFontOutlineAlt/28CD.png new file mode 100644 index 000000000..c736b6152 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28CD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28CE.png b/fonts/MiniwiFontOutlineAlt/28CE.png new file mode 100644 index 000000000..ff96c30c1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28CE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28CF.png b/fonts/MiniwiFontOutlineAlt/28CF.png new file mode 100644 index 000000000..8056956c5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28CF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D0.png b/fonts/MiniwiFontOutlineAlt/28D0.png new file mode 100644 index 000000000..95045261a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D1.png b/fonts/MiniwiFontOutlineAlt/28D1.png new file mode 100644 index 000000000..8cd6c9928 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D2.png b/fonts/MiniwiFontOutlineAlt/28D2.png new file mode 100644 index 000000000..26b51311b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D3.png b/fonts/MiniwiFontOutlineAlt/28D3.png new file mode 100644 index 000000000..6b8504e6d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D4.png b/fonts/MiniwiFontOutlineAlt/28D4.png new file mode 100644 index 000000000..3ad7d9842 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D5.png b/fonts/MiniwiFontOutlineAlt/28D5.png new file mode 100644 index 000000000..558b2aff1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D6.png b/fonts/MiniwiFontOutlineAlt/28D6.png new file mode 100644 index 000000000..221944f4a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D7.png b/fonts/MiniwiFontOutlineAlt/28D7.png new file mode 100644 index 000000000..f47b9ece3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D8.png b/fonts/MiniwiFontOutlineAlt/28D8.png new file mode 100644 index 000000000..bbe33f39f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28D9.png b/fonts/MiniwiFontOutlineAlt/28D9.png new file mode 100644 index 000000000..2fecce780 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28D9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28DA.png b/fonts/MiniwiFontOutlineAlt/28DA.png new file mode 100644 index 000000000..938d326d3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28DA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28DB.png b/fonts/MiniwiFontOutlineAlt/28DB.png new file mode 100644 index 000000000..6f86e100f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28DB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28DC.png b/fonts/MiniwiFontOutlineAlt/28DC.png new file mode 100644 index 000000000..342b697dc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28DC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28DD.png b/fonts/MiniwiFontOutlineAlt/28DD.png new file mode 100644 index 000000000..342b697dc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28DD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28DE.png b/fonts/MiniwiFontOutlineAlt/28DE.png new file mode 100644 index 000000000..f5dd396a9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28DE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28DF.png b/fonts/MiniwiFontOutlineAlt/28DF.png new file mode 100644 index 000000000..e28b2680f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28DF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E0.png b/fonts/MiniwiFontOutlineAlt/28E0.png new file mode 100644 index 000000000..8c6ccb540 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E1.png b/fonts/MiniwiFontOutlineAlt/28E1.png new file mode 100644 index 000000000..27da7eaa9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E2.png b/fonts/MiniwiFontOutlineAlt/28E2.png new file mode 100644 index 000000000..492b1be2a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E3.png b/fonts/MiniwiFontOutlineAlt/28E3.png new file mode 100644 index 000000000..0910754f3 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E4.png b/fonts/MiniwiFontOutlineAlt/28E4.png new file mode 100644 index 000000000..1443a489c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E5.png b/fonts/MiniwiFontOutlineAlt/28E5.png new file mode 100644 index 000000000..4bed53195 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E6.png b/fonts/MiniwiFontOutlineAlt/28E6.png new file mode 100644 index 000000000..9495b5ed8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E7.png b/fonts/MiniwiFontOutlineAlt/28E7.png new file mode 100644 index 000000000..b05cdae5f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E8.png b/fonts/MiniwiFontOutlineAlt/28E8.png new file mode 100644 index 000000000..41a1f7a10 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28E9.png b/fonts/MiniwiFontOutlineAlt/28E9.png new file mode 100644 index 000000000..f83d67e14 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28E9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28EA.png b/fonts/MiniwiFontOutlineAlt/28EA.png new file mode 100644 index 000000000..a85e73b0e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28EA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28EB.png b/fonts/MiniwiFontOutlineAlt/28EB.png new file mode 100644 index 000000000..95eab4c26 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28EB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28EC.png b/fonts/MiniwiFontOutlineAlt/28EC.png new file mode 100644 index 000000000..503a593f5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28EC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28ED.png b/fonts/MiniwiFontOutlineAlt/28ED.png new file mode 100644 index 000000000..3e21b3c85 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28ED.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28EE.png b/fonts/MiniwiFontOutlineAlt/28EE.png new file mode 100644 index 000000000..f5a68c1f1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28EE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28EF.png b/fonts/MiniwiFontOutlineAlt/28EF.png new file mode 100644 index 000000000..9faa94b72 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28EF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F0.png b/fonts/MiniwiFontOutlineAlt/28F0.png new file mode 100644 index 000000000..5fdafbf16 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F1.png b/fonts/MiniwiFontOutlineAlt/28F1.png new file mode 100644 index 000000000..c1b292375 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F2.png b/fonts/MiniwiFontOutlineAlt/28F2.png new file mode 100644 index 000000000..36fc17f4e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F3.png b/fonts/MiniwiFontOutlineAlt/28F3.png new file mode 100644 index 000000000..fae873feb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F4.png b/fonts/MiniwiFontOutlineAlt/28F4.png new file mode 100644 index 000000000..678b82a02 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F5.png b/fonts/MiniwiFontOutlineAlt/28F5.png new file mode 100644 index 000000000..40deea2ce Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F6.png b/fonts/MiniwiFontOutlineAlt/28F6.png new file mode 100644 index 000000000..c6d0d3fd2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F7.png b/fonts/MiniwiFontOutlineAlt/28F7.png new file mode 100644 index 000000000..793c3a167 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F8.png b/fonts/MiniwiFontOutlineAlt/28F8.png new file mode 100644 index 000000000..ffe9c1f35 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28F9.png b/fonts/MiniwiFontOutlineAlt/28F9.png new file mode 100644 index 000000000..cba8fce3a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28F9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28FA.png b/fonts/MiniwiFontOutlineAlt/28FA.png new file mode 100644 index 000000000..d894f1f90 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28FA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28FB.png b/fonts/MiniwiFontOutlineAlt/28FB.png new file mode 100644 index 000000000..711af2e69 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28FB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28FC.png b/fonts/MiniwiFontOutlineAlt/28FC.png new file mode 100644 index 000000000..957c45228 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28FC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28FD.png b/fonts/MiniwiFontOutlineAlt/28FD.png new file mode 100644 index 000000000..e1e564b1c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28FD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28FE.png b/fonts/MiniwiFontOutlineAlt/28FE.png new file mode 100644 index 000000000..1293178e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28FE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/28FF.png b/fonts/MiniwiFontOutlineAlt/28FF.png new file mode 100644 index 000000000..f112fb9b9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/28FF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/2AD3.png b/fonts/MiniwiFontOutlineAlt/2AD3.png new file mode 100644 index 000000000..dc87d3e69 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/2AD3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/E01E.png b/fonts/MiniwiFontOutlineAlt/E01E.png new file mode 100644 index 000000000..89f5b31df Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/E01E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F6BE.png b/fonts/MiniwiFontOutlineAlt/F6BE.png new file mode 100644 index 000000000..05775a7d2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F6BE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8E5.png b/fonts/MiniwiFontOutlineAlt/F8E5.png new file mode 100644 index 000000000..81cc0f988 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8E5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8E6.png b/fonts/MiniwiFontOutlineAlt/F8E6.png new file mode 100644 index 000000000..92cbc1da6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8E6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8E7.png b/fonts/MiniwiFontOutlineAlt/F8E7.png new file mode 100644 index 000000000..64a4cdac7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8E7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8E8.png b/fonts/MiniwiFontOutlineAlt/F8E8.png new file mode 100644 index 000000000..7b2f586c5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8E8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8E9.png b/fonts/MiniwiFontOutlineAlt/F8E9.png new file mode 100644 index 000000000..9b20b7e20 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8E9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8EA.png b/fonts/MiniwiFontOutlineAlt/F8EA.png new file mode 100644 index 000000000..094e2db6b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8EA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8EB.png b/fonts/MiniwiFontOutlineAlt/F8EB.png new file mode 100644 index 000000000..feef0c5d7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8EB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8EC.png b/fonts/MiniwiFontOutlineAlt/F8EC.png new file mode 100644 index 000000000..af70c464e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8EC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8ED.png b/fonts/MiniwiFontOutlineAlt/F8ED.png new file mode 100644 index 000000000..ea1c08054 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8ED.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8EE.png b/fonts/MiniwiFontOutlineAlt/F8EE.png new file mode 100644 index 000000000..48a25f40c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8EE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8EF.png b/fonts/MiniwiFontOutlineAlt/F8EF.png new file mode 100644 index 000000000..af70c464e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8EF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F0.png b/fonts/MiniwiFontOutlineAlt/F8F0.png new file mode 100644 index 000000000..b54611bde Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F0.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F1.png b/fonts/MiniwiFontOutlineAlt/F8F1.png new file mode 100644 index 000000000..2d4fb7be5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F1.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F2.png b/fonts/MiniwiFontOutlineAlt/F8F2.png new file mode 100644 index 000000000..1806ef7ac Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F2.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F3.png b/fonts/MiniwiFontOutlineAlt/F8F3.png new file mode 100644 index 000000000..c22293089 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F4.png b/fonts/MiniwiFontOutlineAlt/F8F4.png new file mode 100644 index 000000000..a40f1b7a2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F4.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F5.png b/fonts/MiniwiFontOutlineAlt/F8F5.png new file mode 100644 index 000000000..e4206141d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F6.png b/fonts/MiniwiFontOutlineAlt/F8F6.png new file mode 100644 index 000000000..a603c8f02 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F6.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F7.png b/fonts/MiniwiFontOutlineAlt/F8F7.png new file mode 100644 index 000000000..282d517c6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F7.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F8.png b/fonts/MiniwiFontOutlineAlt/F8F8.png new file mode 100644 index 000000000..0177042de Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F8.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8F9.png b/fonts/MiniwiFontOutlineAlt/F8F9.png new file mode 100644 index 000000000..6cfbfb986 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8F9.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8FA.png b/fonts/MiniwiFontOutlineAlt/F8FA.png new file mode 100644 index 000000000..af70c464e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8FA.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8FB.png b/fonts/MiniwiFontOutlineAlt/F8FB.png new file mode 100644 index 000000000..aafe522b1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8FB.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8FC.png b/fonts/MiniwiFontOutlineAlt/F8FC.png new file mode 100644 index 000000000..48664d504 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8FC.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8FD.png b/fonts/MiniwiFontOutlineAlt/F8FD.png new file mode 100644 index 000000000..06cbde50d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8FD.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8FE.png b/fonts/MiniwiFontOutlineAlt/F8FE.png new file mode 100644 index 000000000..cc5b41df9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8FE.png differ diff --git a/fonts/MiniwiFontOutlineAlt/F8FF.png b/fonts/MiniwiFontOutlineAlt/F8FF.png new file mode 100644 index 000000000..02f07620a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/F8FF.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FB00.png b/fonts/MiniwiFontOutlineAlt/FB00.png new file mode 100644 index 000000000..a3d25d4b7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FB00.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FB01.png b/fonts/MiniwiFontOutlineAlt/FB01.png new file mode 100644 index 000000000..6d5e54a17 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FB01.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FB02.png b/fonts/MiniwiFontOutlineAlt/FB02.png new file mode 100644 index 000000000..f1f1a0770 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FB02.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FB03.png b/fonts/MiniwiFontOutlineAlt/FB03.png new file mode 100644 index 000000000..7dbe4f696 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FB03.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FB04.png b/fonts/MiniwiFontOutlineAlt/FB04.png new file mode 100644 index 000000000..dc87f2729 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FB04.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF01.png b/fonts/MiniwiFontOutlineAlt/FF01.png new file mode 100644 index 000000000..422485bd8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF01.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF03.png b/fonts/MiniwiFontOutlineAlt/FF03.png new file mode 100644 index 000000000..e6761f239 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF03.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF04.png b/fonts/MiniwiFontOutlineAlt/FF04.png new file mode 100644 index 000000000..7ffb0301d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF04.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF05.png b/fonts/MiniwiFontOutlineAlt/FF05.png new file mode 100644 index 000000000..438689178 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF05.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF06.png b/fonts/MiniwiFontOutlineAlt/FF06.png new file mode 100644 index 000000000..df1c1e6bf Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF06.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF08.png b/fonts/MiniwiFontOutlineAlt/FF08.png new file mode 100644 index 000000000..0387acb7c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF08.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF09.png b/fonts/MiniwiFontOutlineAlt/FF09.png new file mode 100644 index 000000000..97f7edb87 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF09.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF0A.png b/fonts/MiniwiFontOutlineAlt/FF0A.png new file mode 100644 index 000000000..7606b778e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF0A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF0B.png b/fonts/MiniwiFontOutlineAlt/FF0B.png new file mode 100644 index 000000000..529ef3eb9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF0B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF0C.png b/fonts/MiniwiFontOutlineAlt/FF0C.png new file mode 100644 index 000000000..a017d7f48 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF0C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF0E.png b/fonts/MiniwiFontOutlineAlt/FF0E.png new file mode 100644 index 000000000..a001a7c42 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF0E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF0F.png b/fonts/MiniwiFontOutlineAlt/FF0F.png new file mode 100644 index 000000000..d3d0fd725 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF0F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF10.png b/fonts/MiniwiFontOutlineAlt/FF10.png new file mode 100644 index 000000000..4a4c27a8c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF10.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF11.png b/fonts/MiniwiFontOutlineAlt/FF11.png new file mode 100644 index 000000000..847dc1ae1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF11.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF12.png b/fonts/MiniwiFontOutlineAlt/FF12.png new file mode 100644 index 000000000..992a7b6e2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF12.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF13.png b/fonts/MiniwiFontOutlineAlt/FF13.png new file mode 100644 index 000000000..1a0d7b1b9 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF13.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF14.png b/fonts/MiniwiFontOutlineAlt/FF14.png new file mode 100644 index 000000000..cb185f9e6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF14.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF15.png b/fonts/MiniwiFontOutlineAlt/FF15.png new file mode 100644 index 000000000..61027a93f Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF15.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF16.png b/fonts/MiniwiFontOutlineAlt/FF16.png new file mode 100644 index 000000000..794e821a5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF16.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF17.png b/fonts/MiniwiFontOutlineAlt/FF17.png new file mode 100644 index 000000000..9f625f96d Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF17.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF18.png b/fonts/MiniwiFontOutlineAlt/FF18.png new file mode 100644 index 000000000..8d966a402 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF18.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF19.png b/fonts/MiniwiFontOutlineAlt/FF19.png new file mode 100644 index 000000000..6cd1b4bd6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF19.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF1A.png b/fonts/MiniwiFontOutlineAlt/FF1A.png new file mode 100644 index 000000000..f48e13807 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF1A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF1B.png b/fonts/MiniwiFontOutlineAlt/FF1B.png new file mode 100644 index 000000000..b6049e961 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF1B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF1C.png b/fonts/MiniwiFontOutlineAlt/FF1C.png new file mode 100644 index 000000000..2f50f9739 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF1C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF1D.png b/fonts/MiniwiFontOutlineAlt/FF1D.png new file mode 100644 index 000000000..15c442a6c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF1D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF1E.png b/fonts/MiniwiFontOutlineAlt/FF1E.png new file mode 100644 index 000000000..0746c5357 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF1E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF1F.png b/fonts/MiniwiFontOutlineAlt/FF1F.png new file mode 100644 index 000000000..4daffa181 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF1F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF20.png b/fonts/MiniwiFontOutlineAlt/FF20.png new file mode 100644 index 000000000..0738932d7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF20.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF21.png b/fonts/MiniwiFontOutlineAlt/FF21.png new file mode 100644 index 000000000..0eac36fcb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF21.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF22.png b/fonts/MiniwiFontOutlineAlt/FF22.png new file mode 100644 index 000000000..732e8ae53 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF22.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF23.png b/fonts/MiniwiFontOutlineAlt/FF23.png new file mode 100644 index 000000000..e6b385c78 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF23.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF24.png b/fonts/MiniwiFontOutlineAlt/FF24.png new file mode 100644 index 000000000..62b2419ab Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF24.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF25.png b/fonts/MiniwiFontOutlineAlt/FF25.png new file mode 100644 index 000000000..813e43aa8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF25.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF26.png b/fonts/MiniwiFontOutlineAlt/FF26.png new file mode 100644 index 000000000..7a2c31ac4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF26.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF27.png b/fonts/MiniwiFontOutlineAlt/FF27.png new file mode 100644 index 000000000..255de9d0c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF27.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF28.png b/fonts/MiniwiFontOutlineAlt/FF28.png new file mode 100644 index 000000000..d9607f4fb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF28.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF29.png b/fonts/MiniwiFontOutlineAlt/FF29.png new file mode 100644 index 000000000..d128fa8f1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF29.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF2A.png b/fonts/MiniwiFontOutlineAlt/FF2A.png new file mode 100644 index 000000000..954e9bf90 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF2A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF2B.png b/fonts/MiniwiFontOutlineAlt/FF2B.png new file mode 100644 index 000000000..1261dc1c4 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF2B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF2C.png b/fonts/MiniwiFontOutlineAlt/FF2C.png new file mode 100644 index 000000000..bddbe7a09 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF2C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF2D.png b/fonts/MiniwiFontOutlineAlt/FF2D.png new file mode 100644 index 000000000..1dc95a1e8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF2D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF2E.png b/fonts/MiniwiFontOutlineAlt/FF2E.png new file mode 100644 index 000000000..08cf3e285 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF2E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF2F.png b/fonts/MiniwiFontOutlineAlt/FF2F.png new file mode 100644 index 000000000..9b6bbf8e5 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF2F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF30.png b/fonts/MiniwiFontOutlineAlt/FF30.png new file mode 100644 index 000000000..f43c52df8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF30.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF31.png b/fonts/MiniwiFontOutlineAlt/FF31.png new file mode 100644 index 000000000..44501bee1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF31.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF32.png b/fonts/MiniwiFontOutlineAlt/FF32.png new file mode 100644 index 000000000..cf7a9e191 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF32.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF33.png b/fonts/MiniwiFontOutlineAlt/FF33.png new file mode 100644 index 000000000..702ba8157 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF33.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF34.png b/fonts/MiniwiFontOutlineAlt/FF34.png new file mode 100644 index 000000000..a951038b2 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF34.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF35.png b/fonts/MiniwiFontOutlineAlt/FF35.png new file mode 100644 index 000000000..be8fd4a06 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF35.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF36.png b/fonts/MiniwiFontOutlineAlt/FF36.png new file mode 100644 index 000000000..64859fd77 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF36.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF37.png b/fonts/MiniwiFontOutlineAlt/FF37.png new file mode 100644 index 000000000..7749379cc Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF37.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF38.png b/fonts/MiniwiFontOutlineAlt/FF38.png new file mode 100644 index 000000000..b4958f76e Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF38.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF39.png b/fonts/MiniwiFontOutlineAlt/FF39.png new file mode 100644 index 000000000..1c327b3eb Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF39.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF3A.png b/fonts/MiniwiFontOutlineAlt/FF3A.png new file mode 100644 index 000000000..dbef3fe00 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF3A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF3B.png b/fonts/MiniwiFontOutlineAlt/FF3B.png new file mode 100644 index 000000000..3b2abd214 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF3B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF3C.png b/fonts/MiniwiFontOutlineAlt/FF3C.png new file mode 100644 index 000000000..93df3b3ff Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF3C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF3D.png b/fonts/MiniwiFontOutlineAlt/FF3D.png new file mode 100644 index 000000000..0db50b9f7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF3D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF3E.png b/fonts/MiniwiFontOutlineAlt/FF3E.png new file mode 100644 index 000000000..0af9fdc5c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF3E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF3F.png b/fonts/MiniwiFontOutlineAlt/FF3F.png new file mode 100644 index 000000000..cba90c680 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF3F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF40.png b/fonts/MiniwiFontOutlineAlt/FF40.png new file mode 100644 index 000000000..fe39fb4c8 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF40.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF41.png b/fonts/MiniwiFontOutlineAlt/FF41.png new file mode 100644 index 000000000..d707719b1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF41.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF42.png b/fonts/MiniwiFontOutlineAlt/FF42.png new file mode 100644 index 000000000..ff3c88b15 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF42.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF43.png b/fonts/MiniwiFontOutlineAlt/FF43.png new file mode 100644 index 000000000..132b437d1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF43.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF44.png b/fonts/MiniwiFontOutlineAlt/FF44.png new file mode 100644 index 000000000..98e7f0433 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF44.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF45.png b/fonts/MiniwiFontOutlineAlt/FF45.png new file mode 100644 index 000000000..460932f36 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF45.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF46.png b/fonts/MiniwiFontOutlineAlt/FF46.png new file mode 100644 index 000000000..c66322c4c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF46.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF47.png b/fonts/MiniwiFontOutlineAlt/FF47.png new file mode 100644 index 000000000..946bab545 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF47.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF48.png b/fonts/MiniwiFontOutlineAlt/FF48.png new file mode 100644 index 000000000..55c04f7a6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF48.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF49.png b/fonts/MiniwiFontOutlineAlt/FF49.png new file mode 100644 index 000000000..78947d122 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF49.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF4A.png b/fonts/MiniwiFontOutlineAlt/FF4A.png new file mode 100644 index 000000000..5ce5df606 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF4A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF4B.png b/fonts/MiniwiFontOutlineAlt/FF4B.png new file mode 100644 index 000000000..140a8b580 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF4B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF4C.png b/fonts/MiniwiFontOutlineAlt/FF4C.png new file mode 100644 index 000000000..eeee99152 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF4C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF4D.png b/fonts/MiniwiFontOutlineAlt/FF4D.png new file mode 100644 index 000000000..d95f77aca Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF4D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF4E.png b/fonts/MiniwiFontOutlineAlt/FF4E.png new file mode 100644 index 000000000..278b7e24c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF4E.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF4F.png b/fonts/MiniwiFontOutlineAlt/FF4F.png new file mode 100644 index 000000000..41b2f8318 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF4F.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF50.png b/fonts/MiniwiFontOutlineAlt/FF50.png new file mode 100644 index 000000000..959c4d19c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF50.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF51.png b/fonts/MiniwiFontOutlineAlt/FF51.png new file mode 100644 index 000000000..3dcab1392 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF51.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF52.png b/fonts/MiniwiFontOutlineAlt/FF52.png new file mode 100644 index 000000000..b5cd30b9a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF52.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF53.png b/fonts/MiniwiFontOutlineAlt/FF53.png new file mode 100644 index 000000000..f577f747a Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF53.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF54.png b/fonts/MiniwiFontOutlineAlt/FF54.png new file mode 100644 index 000000000..aefc0091c Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF54.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF55.png b/fonts/MiniwiFontOutlineAlt/FF55.png new file mode 100644 index 000000000..447925278 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF55.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF56.png b/fonts/MiniwiFontOutlineAlt/FF56.png new file mode 100644 index 000000000..265559fc7 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF56.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF57.png b/fonts/MiniwiFontOutlineAlt/FF57.png new file mode 100644 index 000000000..43ca06284 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF57.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF58.png b/fonts/MiniwiFontOutlineAlt/FF58.png new file mode 100644 index 000000000..5e0b94011 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF58.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF59.png b/fonts/MiniwiFontOutlineAlt/FF59.png new file mode 100644 index 000000000..4ef9c9472 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF59.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF5A.png b/fonts/MiniwiFontOutlineAlt/FF5A.png new file mode 100644 index 000000000..89110b17b Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF5A.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF5B.png b/fonts/MiniwiFontOutlineAlt/FF5B.png new file mode 100644 index 000000000..f4b4f0d62 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF5B.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF5C.png b/fonts/MiniwiFontOutlineAlt/FF5C.png new file mode 100644 index 000000000..01f82eac1 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF5C.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FF5D.png b/fonts/MiniwiFontOutlineAlt/FF5D.png new file mode 100644 index 000000000..1e83d1171 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FF5D.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FFE3.png b/fonts/MiniwiFontOutlineAlt/FFE3.png new file mode 100644 index 000000000..9560fc4e6 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FFE3.png differ diff --git a/fonts/MiniwiFontOutlineAlt/FFE5.png b/fonts/MiniwiFontOutlineAlt/FFE5.png new file mode 100644 index 000000000..a56e1d762 Binary files /dev/null and b/fonts/MiniwiFontOutlineAlt/FFE5.png differ diff --git a/fonts/MiniwiFontOutlineAlt/LICENSE b/fonts/MiniwiFontOutlineAlt/LICENSE new file mode 100644 index 000000000..9ce2063ea --- /dev/null +++ b/fonts/MiniwiFontOutlineAlt/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2015-2016 Josuah Demangeon + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/fonts/MiniwiFontOutlineAlt/font.inf b/fonts/MiniwiFontOutlineAlt/font.inf new file mode 100644 index 000000000..4b3314fa6 --- /dev/null +++ b/fonts/MiniwiFontOutlineAlt/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 6 +Kerning -2 +FontHeight 10 diff --git a/fonts/MortalFont20/0021.png b/fonts/MortalFont20/0021.png new file mode 100644 index 000000000..d1cf88346 Binary files /dev/null and b/fonts/MortalFont20/0021.png differ diff --git a/fonts/MortalFont20/0022.png b/fonts/MortalFont20/0022.png new file mode 100644 index 000000000..334abd2a4 Binary files /dev/null and b/fonts/MortalFont20/0022.png differ diff --git a/fonts/MortalFont20/0023.png b/fonts/MortalFont20/0023.png new file mode 100644 index 000000000..4fbdad059 Binary files /dev/null and b/fonts/MortalFont20/0023.png differ diff --git a/fonts/MortalFont20/0024.png b/fonts/MortalFont20/0024.png new file mode 100644 index 000000000..e7d2b18cb Binary files /dev/null and b/fonts/MortalFont20/0024.png differ diff --git a/fonts/MortalFont20/0025.png b/fonts/MortalFont20/0025.png new file mode 100644 index 000000000..20637bf64 Binary files /dev/null and b/fonts/MortalFont20/0025.png differ diff --git a/fonts/MortalFont20/0026.png b/fonts/MortalFont20/0026.png new file mode 100644 index 000000000..82df03b45 Binary files /dev/null and b/fonts/MortalFont20/0026.png differ diff --git a/fonts/MortalFont20/0027.png b/fonts/MortalFont20/0027.png new file mode 100644 index 000000000..2037743f1 Binary files /dev/null and b/fonts/MortalFont20/0027.png differ diff --git a/fonts/MortalFont20/0028.png b/fonts/MortalFont20/0028.png new file mode 100644 index 000000000..022b5ae60 Binary files /dev/null and b/fonts/MortalFont20/0028.png differ diff --git a/fonts/MortalFont20/0029.png b/fonts/MortalFont20/0029.png new file mode 100644 index 000000000..8c56d6975 Binary files /dev/null and b/fonts/MortalFont20/0029.png differ diff --git a/fonts/MortalFont20/002A.png b/fonts/MortalFont20/002A.png new file mode 100644 index 000000000..a5e9e5423 Binary files /dev/null and b/fonts/MortalFont20/002A.png differ diff --git a/fonts/MortalFont20/002B.png b/fonts/MortalFont20/002B.png new file mode 100644 index 000000000..82bf6a011 Binary files /dev/null and b/fonts/MortalFont20/002B.png differ diff --git a/fonts/MortalFont20/002C.png b/fonts/MortalFont20/002C.png new file mode 100644 index 000000000..af68d4e5e Binary files /dev/null and b/fonts/MortalFont20/002C.png differ diff --git a/fonts/MortalFont20/002D.png b/fonts/MortalFont20/002D.png new file mode 100644 index 000000000..911d248a5 Binary files /dev/null and b/fonts/MortalFont20/002D.png differ diff --git a/fonts/MortalFont20/002E.png b/fonts/MortalFont20/002E.png new file mode 100644 index 000000000..8b292f031 Binary files /dev/null and b/fonts/MortalFont20/002E.png differ diff --git a/fonts/MortalFont20/002F.png b/fonts/MortalFont20/002F.png new file mode 100644 index 000000000..c363c641a Binary files /dev/null and b/fonts/MortalFont20/002F.png differ diff --git a/fonts/MortalFont20/0030.png b/fonts/MortalFont20/0030.png new file mode 100644 index 000000000..cf4ca7e77 Binary files /dev/null and b/fonts/MortalFont20/0030.png differ diff --git a/fonts/MortalFont20/0031.png b/fonts/MortalFont20/0031.png new file mode 100644 index 000000000..68712752c Binary files /dev/null and b/fonts/MortalFont20/0031.png differ diff --git a/fonts/MortalFont20/0032.png b/fonts/MortalFont20/0032.png new file mode 100644 index 000000000..788fbb177 Binary files /dev/null and b/fonts/MortalFont20/0032.png differ diff --git a/fonts/MortalFont20/0033.png b/fonts/MortalFont20/0033.png new file mode 100644 index 000000000..d371091be Binary files /dev/null and b/fonts/MortalFont20/0033.png differ diff --git a/fonts/MortalFont20/0034.png b/fonts/MortalFont20/0034.png new file mode 100644 index 000000000..ab631f006 Binary files /dev/null and b/fonts/MortalFont20/0034.png differ diff --git a/fonts/MortalFont20/0035.png b/fonts/MortalFont20/0035.png new file mode 100644 index 000000000..8d88c04b2 Binary files /dev/null and b/fonts/MortalFont20/0035.png differ diff --git a/fonts/MortalFont20/0036.png b/fonts/MortalFont20/0036.png new file mode 100644 index 000000000..b108fa5a5 Binary files /dev/null and b/fonts/MortalFont20/0036.png differ diff --git a/fonts/MortalFont20/0037.png b/fonts/MortalFont20/0037.png new file mode 100644 index 000000000..668b03048 Binary files /dev/null and b/fonts/MortalFont20/0037.png differ diff --git a/fonts/MortalFont20/0038.png b/fonts/MortalFont20/0038.png new file mode 100644 index 000000000..9d5b2add8 Binary files /dev/null and b/fonts/MortalFont20/0038.png differ diff --git a/fonts/MortalFont20/0039.png b/fonts/MortalFont20/0039.png new file mode 100644 index 000000000..00ac6a8dc Binary files /dev/null and b/fonts/MortalFont20/0039.png differ diff --git a/fonts/MortalFont20/003A.png b/fonts/MortalFont20/003A.png new file mode 100644 index 000000000..1481e3945 Binary files /dev/null and b/fonts/MortalFont20/003A.png differ diff --git a/fonts/MortalFont20/003B.png b/fonts/MortalFont20/003B.png new file mode 100644 index 000000000..102f38def Binary files /dev/null and b/fonts/MortalFont20/003B.png differ diff --git a/fonts/MortalFont20/003C.png b/fonts/MortalFont20/003C.png new file mode 100644 index 000000000..2cc4f702d Binary files /dev/null and b/fonts/MortalFont20/003C.png differ diff --git a/fonts/MortalFont20/003D.png b/fonts/MortalFont20/003D.png new file mode 100644 index 000000000..2cd4c73b3 Binary files /dev/null and b/fonts/MortalFont20/003D.png differ diff --git a/fonts/MortalFont20/003E.png b/fonts/MortalFont20/003E.png new file mode 100644 index 000000000..affe5fe39 Binary files /dev/null and b/fonts/MortalFont20/003E.png differ diff --git a/fonts/MortalFont20/003F.png b/fonts/MortalFont20/003F.png new file mode 100644 index 000000000..b56fe1dce Binary files /dev/null and b/fonts/MortalFont20/003F.png differ diff --git a/fonts/MortalFont20/0040.png b/fonts/MortalFont20/0040.png new file mode 100644 index 000000000..95b5218c0 Binary files /dev/null and b/fonts/MortalFont20/0040.png differ diff --git a/fonts/MortalFont20/0041.png b/fonts/MortalFont20/0041.png new file mode 100644 index 000000000..954a02bbc Binary files /dev/null and b/fonts/MortalFont20/0041.png differ diff --git a/fonts/MortalFont20/0042.png b/fonts/MortalFont20/0042.png new file mode 100644 index 000000000..26f7c9ba9 Binary files /dev/null and b/fonts/MortalFont20/0042.png differ diff --git a/fonts/MortalFont20/0043.png b/fonts/MortalFont20/0043.png new file mode 100644 index 000000000..ca2b1166e Binary files /dev/null and b/fonts/MortalFont20/0043.png differ diff --git a/fonts/MortalFont20/0044.png b/fonts/MortalFont20/0044.png new file mode 100644 index 000000000..c02ee29bc Binary files /dev/null and b/fonts/MortalFont20/0044.png differ diff --git a/fonts/MortalFont20/0045.png b/fonts/MortalFont20/0045.png new file mode 100644 index 000000000..1a784cc31 Binary files /dev/null and b/fonts/MortalFont20/0045.png differ diff --git a/fonts/MortalFont20/0046.png b/fonts/MortalFont20/0046.png new file mode 100644 index 000000000..fea36f384 Binary files /dev/null and b/fonts/MortalFont20/0046.png differ diff --git a/fonts/MortalFont20/0047.png b/fonts/MortalFont20/0047.png new file mode 100644 index 000000000..bea7e0086 Binary files /dev/null and b/fonts/MortalFont20/0047.png differ diff --git a/fonts/MortalFont20/0048.png b/fonts/MortalFont20/0048.png new file mode 100644 index 000000000..715529df3 Binary files /dev/null and b/fonts/MortalFont20/0048.png differ diff --git a/fonts/MortalFont20/0049.png b/fonts/MortalFont20/0049.png new file mode 100644 index 000000000..02b1e1c41 Binary files /dev/null and b/fonts/MortalFont20/0049.png differ diff --git a/fonts/MortalFont20/004A.png b/fonts/MortalFont20/004A.png new file mode 100644 index 000000000..f85e5706c Binary files /dev/null and b/fonts/MortalFont20/004A.png differ diff --git a/fonts/MortalFont20/004B.png b/fonts/MortalFont20/004B.png new file mode 100644 index 000000000..d1d72c7c1 Binary files /dev/null and b/fonts/MortalFont20/004B.png differ diff --git a/fonts/MortalFont20/004C.png b/fonts/MortalFont20/004C.png new file mode 100644 index 000000000..6ba5a2c1f Binary files /dev/null and b/fonts/MortalFont20/004C.png differ diff --git a/fonts/MortalFont20/004D.png b/fonts/MortalFont20/004D.png new file mode 100644 index 000000000..e2086bba6 Binary files /dev/null and b/fonts/MortalFont20/004D.png differ diff --git a/fonts/MortalFont20/004E.png b/fonts/MortalFont20/004E.png new file mode 100644 index 000000000..c8084a699 Binary files /dev/null and b/fonts/MortalFont20/004E.png differ diff --git a/fonts/MortalFont20/004F.png b/fonts/MortalFont20/004F.png new file mode 100644 index 000000000..299b93ba6 Binary files /dev/null and b/fonts/MortalFont20/004F.png differ diff --git a/fonts/MortalFont20/0050.png b/fonts/MortalFont20/0050.png new file mode 100644 index 000000000..99c0d4e3e Binary files /dev/null and b/fonts/MortalFont20/0050.png differ diff --git a/fonts/MortalFont20/0051.png b/fonts/MortalFont20/0051.png new file mode 100644 index 000000000..4a12e1b58 Binary files /dev/null and b/fonts/MortalFont20/0051.png differ diff --git a/fonts/MortalFont20/0052.png b/fonts/MortalFont20/0052.png new file mode 100644 index 000000000..bdd1fda12 Binary files /dev/null and b/fonts/MortalFont20/0052.png differ diff --git a/fonts/MortalFont20/0053.png b/fonts/MortalFont20/0053.png new file mode 100644 index 000000000..998454565 Binary files /dev/null and b/fonts/MortalFont20/0053.png differ diff --git a/fonts/MortalFont20/0054.png b/fonts/MortalFont20/0054.png new file mode 100644 index 000000000..0abd0979f Binary files /dev/null and b/fonts/MortalFont20/0054.png differ diff --git a/fonts/MortalFont20/0055.png b/fonts/MortalFont20/0055.png new file mode 100644 index 000000000..6c303c6af Binary files /dev/null and b/fonts/MortalFont20/0055.png differ diff --git a/fonts/MortalFont20/0056.png b/fonts/MortalFont20/0056.png new file mode 100644 index 000000000..8434e9d0e Binary files /dev/null and b/fonts/MortalFont20/0056.png differ diff --git a/fonts/MortalFont20/0057.png b/fonts/MortalFont20/0057.png new file mode 100644 index 000000000..c92f438f4 Binary files /dev/null and b/fonts/MortalFont20/0057.png differ diff --git a/fonts/MortalFont20/0058.png b/fonts/MortalFont20/0058.png new file mode 100644 index 000000000..a1d8020ec Binary files /dev/null and b/fonts/MortalFont20/0058.png differ diff --git a/fonts/MortalFont20/0059.png b/fonts/MortalFont20/0059.png new file mode 100644 index 000000000..82eff7fe4 Binary files /dev/null and b/fonts/MortalFont20/0059.png differ diff --git a/fonts/MortalFont20/005A.png b/fonts/MortalFont20/005A.png new file mode 100644 index 000000000..c3e49bb68 Binary files /dev/null and b/fonts/MortalFont20/005A.png differ diff --git a/fonts/MortalFont20/005B.png b/fonts/MortalFont20/005B.png new file mode 100644 index 000000000..b4eb540a4 Binary files /dev/null and b/fonts/MortalFont20/005B.png differ diff --git a/fonts/MortalFont20/005C.png b/fonts/MortalFont20/005C.png new file mode 100644 index 000000000..eb4e07f57 Binary files /dev/null and b/fonts/MortalFont20/005C.png differ diff --git a/fonts/MortalFont20/005D.png b/fonts/MortalFont20/005D.png new file mode 100644 index 000000000..7669d8283 Binary files /dev/null and b/fonts/MortalFont20/005D.png differ diff --git a/fonts/MortalFont20/005E.png b/fonts/MortalFont20/005E.png new file mode 100644 index 000000000..8327ad559 Binary files /dev/null and b/fonts/MortalFont20/005E.png differ diff --git a/fonts/MortalFont20/0060.png b/fonts/MortalFont20/0060.png new file mode 100644 index 000000000..b70171989 Binary files /dev/null and b/fonts/MortalFont20/0060.png differ diff --git a/fonts/MortalFont20/0061.png b/fonts/MortalFont20/0061.png new file mode 100644 index 000000000..ce0a9f94a Binary files /dev/null and b/fonts/MortalFont20/0061.png differ diff --git a/fonts/MortalFont20/0062.png b/fonts/MortalFont20/0062.png new file mode 100644 index 000000000..048d703bc Binary files /dev/null and b/fonts/MortalFont20/0062.png differ diff --git a/fonts/MortalFont20/0063.png b/fonts/MortalFont20/0063.png new file mode 100644 index 000000000..05f4c36b9 Binary files /dev/null and b/fonts/MortalFont20/0063.png differ diff --git a/fonts/MortalFont20/0064.png b/fonts/MortalFont20/0064.png new file mode 100644 index 000000000..d078a98d0 Binary files /dev/null and b/fonts/MortalFont20/0064.png differ diff --git a/fonts/MortalFont20/0065.png b/fonts/MortalFont20/0065.png new file mode 100644 index 000000000..85bcc216b Binary files /dev/null and b/fonts/MortalFont20/0065.png differ diff --git a/fonts/MortalFont20/0066.png b/fonts/MortalFont20/0066.png new file mode 100644 index 000000000..34cd70ffd Binary files /dev/null and b/fonts/MortalFont20/0066.png differ diff --git a/fonts/MortalFont20/0067.png b/fonts/MortalFont20/0067.png new file mode 100644 index 000000000..915bf42e4 Binary files /dev/null and b/fonts/MortalFont20/0067.png differ diff --git a/fonts/MortalFont20/0068.png b/fonts/MortalFont20/0068.png new file mode 100644 index 000000000..28ff7f2fc Binary files /dev/null and b/fonts/MortalFont20/0068.png differ diff --git a/fonts/MortalFont20/0069.png b/fonts/MortalFont20/0069.png new file mode 100644 index 000000000..1a326dc96 Binary files /dev/null and b/fonts/MortalFont20/0069.png differ diff --git a/fonts/MortalFont20/006A.png b/fonts/MortalFont20/006A.png new file mode 100644 index 000000000..da8646b80 Binary files /dev/null and b/fonts/MortalFont20/006A.png differ diff --git a/fonts/MortalFont20/006B.png b/fonts/MortalFont20/006B.png new file mode 100644 index 000000000..671090ba1 Binary files /dev/null and b/fonts/MortalFont20/006B.png differ diff --git a/fonts/MortalFont20/006C.png b/fonts/MortalFont20/006C.png new file mode 100644 index 000000000..572c24da5 Binary files /dev/null and b/fonts/MortalFont20/006C.png differ diff --git a/fonts/MortalFont20/006D.png b/fonts/MortalFont20/006D.png new file mode 100644 index 000000000..0822adb13 Binary files /dev/null and b/fonts/MortalFont20/006D.png differ diff --git a/fonts/MortalFont20/006E.png b/fonts/MortalFont20/006E.png new file mode 100644 index 000000000..f2f437565 Binary files /dev/null and b/fonts/MortalFont20/006E.png differ diff --git a/fonts/MortalFont20/006F.png b/fonts/MortalFont20/006F.png new file mode 100644 index 000000000..8f188f260 Binary files /dev/null and b/fonts/MortalFont20/006F.png differ diff --git a/fonts/MortalFont20/0070.png b/fonts/MortalFont20/0070.png new file mode 100644 index 000000000..8fda8c780 Binary files /dev/null and b/fonts/MortalFont20/0070.png differ diff --git a/fonts/MortalFont20/0071.png b/fonts/MortalFont20/0071.png new file mode 100644 index 000000000..fdb44326c Binary files /dev/null and b/fonts/MortalFont20/0071.png differ diff --git a/fonts/MortalFont20/0072.png b/fonts/MortalFont20/0072.png new file mode 100644 index 000000000..85a009c43 Binary files /dev/null and b/fonts/MortalFont20/0072.png differ diff --git a/fonts/MortalFont20/0073.png b/fonts/MortalFont20/0073.png new file mode 100644 index 000000000..d5ccf10f1 Binary files /dev/null and b/fonts/MortalFont20/0073.png differ diff --git a/fonts/MortalFont20/0074.png b/fonts/MortalFont20/0074.png new file mode 100644 index 000000000..7de5dbf1e Binary files /dev/null and b/fonts/MortalFont20/0074.png differ diff --git a/fonts/MortalFont20/0075.png b/fonts/MortalFont20/0075.png new file mode 100644 index 000000000..6d2d043d4 Binary files /dev/null and b/fonts/MortalFont20/0075.png differ diff --git a/fonts/MortalFont20/0076.png b/fonts/MortalFont20/0076.png new file mode 100644 index 000000000..4b3f9ca77 Binary files /dev/null and b/fonts/MortalFont20/0076.png differ diff --git a/fonts/MortalFont20/0077.png b/fonts/MortalFont20/0077.png new file mode 100644 index 000000000..197135b2a Binary files /dev/null and b/fonts/MortalFont20/0077.png differ diff --git a/fonts/MortalFont20/0078.png b/fonts/MortalFont20/0078.png new file mode 100644 index 000000000..cae4956a1 Binary files /dev/null and b/fonts/MortalFont20/0078.png differ diff --git a/fonts/MortalFont20/0079.png b/fonts/MortalFont20/0079.png new file mode 100644 index 000000000..68663cdff Binary files /dev/null and b/fonts/MortalFont20/0079.png differ diff --git a/fonts/MortalFont20/007A.png b/fonts/MortalFont20/007A.png new file mode 100644 index 000000000..db997cece Binary files /dev/null and b/fonts/MortalFont20/007A.png differ diff --git a/fonts/MortalFont20/007B.png b/fonts/MortalFont20/007B.png new file mode 100644 index 000000000..5b80cd831 Binary files /dev/null and b/fonts/MortalFont20/007B.png differ diff --git a/fonts/MortalFont20/007C.png b/fonts/MortalFont20/007C.png new file mode 100644 index 000000000..bbc7eede9 Binary files /dev/null and b/fonts/MortalFont20/007C.png differ diff --git a/fonts/MortalFont20/007D.png b/fonts/MortalFont20/007D.png new file mode 100644 index 000000000..91f0adc58 Binary files /dev/null and b/fonts/MortalFont20/007D.png differ diff --git a/fonts/MortalFont20/007E.png b/fonts/MortalFont20/007E.png new file mode 100644 index 000000000..135484bbf Binary files /dev/null and b/fonts/MortalFont20/007E.png differ diff --git a/fonts/MortalFont20/00A1.png b/fonts/MortalFont20/00A1.png new file mode 100644 index 000000000..a042d9807 Binary files /dev/null and b/fonts/MortalFont20/00A1.png differ diff --git a/fonts/MortalFont20/00A2.png b/fonts/MortalFont20/00A2.png new file mode 100644 index 000000000..71df013df Binary files /dev/null and b/fonts/MortalFont20/00A2.png differ diff --git a/fonts/MortalFont20/00A3.png b/fonts/MortalFont20/00A3.png new file mode 100644 index 000000000..92d47119a Binary files /dev/null and b/fonts/MortalFont20/00A3.png differ diff --git a/fonts/MortalFont20/00A4.png b/fonts/MortalFont20/00A4.png new file mode 100644 index 000000000..736a2f06b Binary files /dev/null and b/fonts/MortalFont20/00A4.png differ diff --git a/fonts/MortalFont20/00A5.png b/fonts/MortalFont20/00A5.png new file mode 100644 index 000000000..ac8306276 Binary files /dev/null and b/fonts/MortalFont20/00A5.png differ diff --git a/fonts/MortalFont20/00A6.png b/fonts/MortalFont20/00A6.png new file mode 100644 index 000000000..b9b412d23 Binary files /dev/null and b/fonts/MortalFont20/00A6.png differ diff --git a/fonts/MortalFont20/00A7.png b/fonts/MortalFont20/00A7.png new file mode 100644 index 000000000..c18a78162 Binary files /dev/null and b/fonts/MortalFont20/00A7.png differ diff --git a/fonts/MortalFont20/00A8.png b/fonts/MortalFont20/00A8.png new file mode 100644 index 000000000..5d0dd6749 Binary files /dev/null and b/fonts/MortalFont20/00A8.png differ diff --git a/fonts/MortalFont20/00A9.png b/fonts/MortalFont20/00A9.png new file mode 100644 index 000000000..7529c1c83 Binary files /dev/null and b/fonts/MortalFont20/00A9.png differ diff --git a/fonts/MortalFont20/00AA.png b/fonts/MortalFont20/00AA.png new file mode 100644 index 000000000..ad362c6c5 Binary files /dev/null and b/fonts/MortalFont20/00AA.png differ diff --git a/fonts/MortalFont20/00AB.png b/fonts/MortalFont20/00AB.png new file mode 100644 index 000000000..8dee6f2a9 Binary files /dev/null and b/fonts/MortalFont20/00AB.png differ diff --git a/fonts/MortalFont20/00AC.png b/fonts/MortalFont20/00AC.png new file mode 100644 index 000000000..a1ee4ead9 Binary files /dev/null and b/fonts/MortalFont20/00AC.png differ diff --git a/fonts/MortalFont20/00AD.png b/fonts/MortalFont20/00AD.png new file mode 100644 index 000000000..911d248a5 Binary files /dev/null and b/fonts/MortalFont20/00AD.png differ diff --git a/fonts/MortalFont20/00AE.png b/fonts/MortalFont20/00AE.png new file mode 100644 index 000000000..9396d9552 Binary files /dev/null and b/fonts/MortalFont20/00AE.png differ diff --git a/fonts/MortalFont20/00AF.png b/fonts/MortalFont20/00AF.png new file mode 100644 index 000000000..36e7584f9 Binary files /dev/null and b/fonts/MortalFont20/00AF.png differ diff --git a/fonts/MortalFont20/00B0.png b/fonts/MortalFont20/00B0.png new file mode 100644 index 000000000..4765d4b06 Binary files /dev/null and b/fonts/MortalFont20/00B0.png differ diff --git a/fonts/MortalFont20/00B1.png b/fonts/MortalFont20/00B1.png new file mode 100644 index 000000000..d8207fa34 Binary files /dev/null and b/fonts/MortalFont20/00B1.png differ diff --git a/fonts/MortalFont20/00B2.png b/fonts/MortalFont20/00B2.png new file mode 100644 index 000000000..d09823e34 Binary files /dev/null and b/fonts/MortalFont20/00B2.png differ diff --git a/fonts/MortalFont20/00B3.png b/fonts/MortalFont20/00B3.png new file mode 100644 index 000000000..2be3bc33f Binary files /dev/null and b/fonts/MortalFont20/00B3.png differ diff --git a/fonts/MortalFont20/00B4.png b/fonts/MortalFont20/00B4.png new file mode 100644 index 000000000..0f547b3c9 Binary files /dev/null and b/fonts/MortalFont20/00B4.png differ diff --git a/fonts/MortalFont20/00B6.png b/fonts/MortalFont20/00B6.png new file mode 100644 index 000000000..d8fcfc112 Binary files /dev/null and b/fonts/MortalFont20/00B6.png differ diff --git a/fonts/MortalFont20/00B7.png b/fonts/MortalFont20/00B7.png new file mode 100644 index 000000000..7bfd8abc3 Binary files /dev/null and b/fonts/MortalFont20/00B7.png differ diff --git a/fonts/MortalFont20/00B8.png b/fonts/MortalFont20/00B8.png new file mode 100644 index 000000000..029cfe88e Binary files /dev/null and b/fonts/MortalFont20/00B8.png differ diff --git a/fonts/MortalFont20/00B9.png b/fonts/MortalFont20/00B9.png new file mode 100644 index 000000000..1ded09ff7 Binary files /dev/null and b/fonts/MortalFont20/00B9.png differ diff --git a/fonts/MortalFont20/00BA.png b/fonts/MortalFont20/00BA.png new file mode 100644 index 000000000..02185e87c Binary files /dev/null and b/fonts/MortalFont20/00BA.png differ diff --git a/fonts/MortalFont20/00BB.png b/fonts/MortalFont20/00BB.png new file mode 100644 index 000000000..c8d063108 Binary files /dev/null and b/fonts/MortalFont20/00BB.png differ diff --git a/fonts/MortalFont20/00BC.png b/fonts/MortalFont20/00BC.png new file mode 100644 index 000000000..aebc6b4dc Binary files /dev/null and b/fonts/MortalFont20/00BC.png differ diff --git a/fonts/MortalFont20/00BD.png b/fonts/MortalFont20/00BD.png new file mode 100644 index 000000000..357c1fe38 Binary files /dev/null and b/fonts/MortalFont20/00BD.png differ diff --git a/fonts/MortalFont20/00BE.png b/fonts/MortalFont20/00BE.png new file mode 100644 index 000000000..614cbb7b6 Binary files /dev/null and b/fonts/MortalFont20/00BE.png differ diff --git a/fonts/MortalFont20/00BF.png b/fonts/MortalFont20/00BF.png new file mode 100644 index 000000000..b5246fef8 Binary files /dev/null and b/fonts/MortalFont20/00BF.png differ diff --git a/fonts/MortalFont20/00C0.png b/fonts/MortalFont20/00C0.png new file mode 100644 index 000000000..168df1930 Binary files /dev/null and b/fonts/MortalFont20/00C0.png differ diff --git a/fonts/MortalFont20/00C1.png b/fonts/MortalFont20/00C1.png new file mode 100644 index 000000000..04555a905 Binary files /dev/null and b/fonts/MortalFont20/00C1.png differ diff --git a/fonts/MortalFont20/00C2.png b/fonts/MortalFont20/00C2.png new file mode 100644 index 000000000..cff6004a9 Binary files /dev/null and b/fonts/MortalFont20/00C2.png differ diff --git a/fonts/MortalFont20/00C3.png b/fonts/MortalFont20/00C3.png new file mode 100644 index 000000000..5ed4bb7c3 Binary files /dev/null and b/fonts/MortalFont20/00C3.png differ diff --git a/fonts/MortalFont20/00C4.png b/fonts/MortalFont20/00C4.png new file mode 100644 index 000000000..d2c3354d0 Binary files /dev/null and b/fonts/MortalFont20/00C4.png differ diff --git a/fonts/MortalFont20/00C5.png b/fonts/MortalFont20/00C5.png new file mode 100644 index 000000000..64f4359d1 Binary files /dev/null and b/fonts/MortalFont20/00C5.png differ diff --git a/fonts/MortalFont20/00C6.png b/fonts/MortalFont20/00C6.png new file mode 100644 index 000000000..42f0266a6 Binary files /dev/null and b/fonts/MortalFont20/00C6.png differ diff --git a/fonts/MortalFont20/00C7.png b/fonts/MortalFont20/00C7.png new file mode 100644 index 000000000..e8fe6d833 Binary files /dev/null and b/fonts/MortalFont20/00C7.png differ diff --git a/fonts/MortalFont20/00C8.png b/fonts/MortalFont20/00C8.png new file mode 100644 index 000000000..5012cb243 Binary files /dev/null and b/fonts/MortalFont20/00C8.png differ diff --git a/fonts/MortalFont20/00C9.png b/fonts/MortalFont20/00C9.png new file mode 100644 index 000000000..5bada65af Binary files /dev/null and b/fonts/MortalFont20/00C9.png differ diff --git a/fonts/MortalFont20/00CA.png b/fonts/MortalFont20/00CA.png new file mode 100644 index 000000000..d394cad4a Binary files /dev/null and b/fonts/MortalFont20/00CA.png differ diff --git a/fonts/MortalFont20/00CB.png b/fonts/MortalFont20/00CB.png new file mode 100644 index 000000000..81e3b30d0 Binary files /dev/null and b/fonts/MortalFont20/00CB.png differ diff --git a/fonts/MortalFont20/00CC.png b/fonts/MortalFont20/00CC.png new file mode 100644 index 000000000..34f69b328 Binary files /dev/null and b/fonts/MortalFont20/00CC.png differ diff --git a/fonts/MortalFont20/00CD.png b/fonts/MortalFont20/00CD.png new file mode 100644 index 000000000..7fd6882e4 Binary files /dev/null and b/fonts/MortalFont20/00CD.png differ diff --git a/fonts/MortalFont20/00CE.png b/fonts/MortalFont20/00CE.png new file mode 100644 index 000000000..61d418aad Binary files /dev/null and b/fonts/MortalFont20/00CE.png differ diff --git a/fonts/MortalFont20/00CF.png b/fonts/MortalFont20/00CF.png new file mode 100644 index 000000000..bd573657c Binary files /dev/null and b/fonts/MortalFont20/00CF.png differ diff --git a/fonts/MortalFont20/00D0.png b/fonts/MortalFont20/00D0.png new file mode 100644 index 000000000..18ccf4a2c Binary files /dev/null and b/fonts/MortalFont20/00D0.png differ diff --git a/fonts/MortalFont20/00D1.png b/fonts/MortalFont20/00D1.png new file mode 100644 index 000000000..59df4664f Binary files /dev/null and b/fonts/MortalFont20/00D1.png differ diff --git a/fonts/MortalFont20/00D2.png b/fonts/MortalFont20/00D2.png new file mode 100644 index 000000000..3bedb11ec Binary files /dev/null and b/fonts/MortalFont20/00D2.png differ diff --git a/fonts/MortalFont20/00D3.png b/fonts/MortalFont20/00D3.png new file mode 100644 index 000000000..2d6fa8892 Binary files /dev/null and b/fonts/MortalFont20/00D3.png differ diff --git a/fonts/MortalFont20/00D4.png b/fonts/MortalFont20/00D4.png new file mode 100644 index 000000000..386f76f77 Binary files /dev/null and b/fonts/MortalFont20/00D4.png differ diff --git a/fonts/MortalFont20/00D5.png b/fonts/MortalFont20/00D5.png new file mode 100644 index 000000000..4445b9db3 Binary files /dev/null and b/fonts/MortalFont20/00D5.png differ diff --git a/fonts/MortalFont20/00D6.png b/fonts/MortalFont20/00D6.png new file mode 100644 index 000000000..da43ff818 Binary files /dev/null and b/fonts/MortalFont20/00D6.png differ diff --git a/fonts/MortalFont20/00D7.png b/fonts/MortalFont20/00D7.png new file mode 100644 index 000000000..55ff3d62d Binary files /dev/null and b/fonts/MortalFont20/00D7.png differ diff --git a/fonts/MortalFont20/00D8.png b/fonts/MortalFont20/00D8.png new file mode 100644 index 000000000..8f31f228f Binary files /dev/null and b/fonts/MortalFont20/00D8.png differ diff --git a/fonts/MortalFont20/00D9.png b/fonts/MortalFont20/00D9.png new file mode 100644 index 000000000..157447d51 Binary files /dev/null and b/fonts/MortalFont20/00D9.png differ diff --git a/fonts/MortalFont20/00DA.png b/fonts/MortalFont20/00DA.png new file mode 100644 index 000000000..3040b0821 Binary files /dev/null and b/fonts/MortalFont20/00DA.png differ diff --git a/fonts/MortalFont20/00DB.png b/fonts/MortalFont20/00DB.png new file mode 100644 index 000000000..e9ae03565 Binary files /dev/null and b/fonts/MortalFont20/00DB.png differ diff --git a/fonts/MortalFont20/00DC.png b/fonts/MortalFont20/00DC.png new file mode 100644 index 000000000..9e4cdfcf3 Binary files /dev/null and b/fonts/MortalFont20/00DC.png differ diff --git a/fonts/MortalFont20/00DD.png b/fonts/MortalFont20/00DD.png new file mode 100644 index 000000000..3f58710b6 Binary files /dev/null and b/fonts/MortalFont20/00DD.png differ diff --git a/fonts/MortalFont20/00DE.png b/fonts/MortalFont20/00DE.png new file mode 100644 index 000000000..c6ec98ce4 Binary files /dev/null and b/fonts/MortalFont20/00DE.png differ diff --git a/fonts/MortalFont20/00DF.png b/fonts/MortalFont20/00DF.png new file mode 100644 index 000000000..2124568a7 Binary files /dev/null and b/fonts/MortalFont20/00DF.png differ diff --git a/fonts/MortalFont20/00E0.png b/fonts/MortalFont20/00E0.png new file mode 100644 index 000000000..37a647467 Binary files /dev/null and b/fonts/MortalFont20/00E0.png differ diff --git a/fonts/MortalFont20/00E1.png b/fonts/MortalFont20/00E1.png new file mode 100644 index 000000000..bdd989339 Binary files /dev/null and b/fonts/MortalFont20/00E1.png differ diff --git a/fonts/MortalFont20/00E2.png b/fonts/MortalFont20/00E2.png new file mode 100644 index 000000000..4e8fc40a3 Binary files /dev/null and b/fonts/MortalFont20/00E2.png differ diff --git a/fonts/MortalFont20/00E3.png b/fonts/MortalFont20/00E3.png new file mode 100644 index 000000000..32c83cd4b Binary files /dev/null and b/fonts/MortalFont20/00E3.png differ diff --git a/fonts/MortalFont20/00E4.png b/fonts/MortalFont20/00E4.png new file mode 100644 index 000000000..380898fc2 Binary files /dev/null and b/fonts/MortalFont20/00E4.png differ diff --git a/fonts/MortalFont20/00E5.png b/fonts/MortalFont20/00E5.png new file mode 100644 index 000000000..8be9a238d Binary files /dev/null and b/fonts/MortalFont20/00E5.png differ diff --git a/fonts/MortalFont20/00E6.png b/fonts/MortalFont20/00E6.png new file mode 100644 index 000000000..2325c4fdb Binary files /dev/null and b/fonts/MortalFont20/00E6.png differ diff --git a/fonts/MortalFont20/00E7.png b/fonts/MortalFont20/00E7.png new file mode 100644 index 000000000..af143c175 Binary files /dev/null and b/fonts/MortalFont20/00E7.png differ diff --git a/fonts/MortalFont20/00E8.png b/fonts/MortalFont20/00E8.png new file mode 100644 index 000000000..4a9767d42 Binary files /dev/null and b/fonts/MortalFont20/00E8.png differ diff --git a/fonts/MortalFont20/00E9.png b/fonts/MortalFont20/00E9.png new file mode 100644 index 000000000..e333dbcd4 Binary files /dev/null and b/fonts/MortalFont20/00E9.png differ diff --git a/fonts/MortalFont20/00EA.png b/fonts/MortalFont20/00EA.png new file mode 100644 index 000000000..daa4bb4c3 Binary files /dev/null and b/fonts/MortalFont20/00EA.png differ diff --git a/fonts/MortalFont20/00EB.png b/fonts/MortalFont20/00EB.png new file mode 100644 index 000000000..11fe801f8 Binary files /dev/null and b/fonts/MortalFont20/00EB.png differ diff --git a/fonts/MortalFont20/00EC.png b/fonts/MortalFont20/00EC.png new file mode 100644 index 000000000..b2ababd4c Binary files /dev/null and b/fonts/MortalFont20/00EC.png differ diff --git a/fonts/MortalFont20/00ED.png b/fonts/MortalFont20/00ED.png new file mode 100644 index 000000000..5e1c00fbf Binary files /dev/null and b/fonts/MortalFont20/00ED.png differ diff --git a/fonts/MortalFont20/00EE.png b/fonts/MortalFont20/00EE.png new file mode 100644 index 000000000..19724e764 Binary files /dev/null and b/fonts/MortalFont20/00EE.png differ diff --git a/fonts/MortalFont20/00EF.png b/fonts/MortalFont20/00EF.png new file mode 100644 index 000000000..32e1b08a1 Binary files /dev/null and b/fonts/MortalFont20/00EF.png differ diff --git a/fonts/MortalFont20/00F0.png b/fonts/MortalFont20/00F0.png new file mode 100644 index 000000000..5a06d9092 Binary files /dev/null and b/fonts/MortalFont20/00F0.png differ diff --git a/fonts/MortalFont20/00F1.png b/fonts/MortalFont20/00F1.png new file mode 100644 index 000000000..247377daa Binary files /dev/null and b/fonts/MortalFont20/00F1.png differ diff --git a/fonts/MortalFont20/00F2.png b/fonts/MortalFont20/00F2.png new file mode 100644 index 000000000..d0f96cd3b Binary files /dev/null and b/fonts/MortalFont20/00F2.png differ diff --git a/fonts/MortalFont20/00F3.png b/fonts/MortalFont20/00F3.png new file mode 100644 index 000000000..aba2d2d05 Binary files /dev/null and b/fonts/MortalFont20/00F3.png differ diff --git a/fonts/MortalFont20/00F4.png b/fonts/MortalFont20/00F4.png new file mode 100644 index 000000000..2027ebcb1 Binary files /dev/null and b/fonts/MortalFont20/00F4.png differ diff --git a/fonts/MortalFont20/00F5.png b/fonts/MortalFont20/00F5.png new file mode 100644 index 000000000..3e43d8292 Binary files /dev/null and b/fonts/MortalFont20/00F5.png differ diff --git a/fonts/MortalFont20/00F6.png b/fonts/MortalFont20/00F6.png new file mode 100644 index 000000000..243dfe0d1 Binary files /dev/null and b/fonts/MortalFont20/00F6.png differ diff --git a/fonts/MortalFont20/00F7.png b/fonts/MortalFont20/00F7.png new file mode 100644 index 000000000..dba74a12f Binary files /dev/null and b/fonts/MortalFont20/00F7.png differ diff --git a/fonts/MortalFont20/00F8.png b/fonts/MortalFont20/00F8.png new file mode 100644 index 000000000..1227171c6 Binary files /dev/null and b/fonts/MortalFont20/00F8.png differ diff --git a/fonts/MortalFont20/00F9.png b/fonts/MortalFont20/00F9.png new file mode 100644 index 000000000..9ce2149b5 Binary files /dev/null and b/fonts/MortalFont20/00F9.png differ diff --git a/fonts/MortalFont20/00FA.png b/fonts/MortalFont20/00FA.png new file mode 100644 index 000000000..c4c8e8dae Binary files /dev/null and b/fonts/MortalFont20/00FA.png differ diff --git a/fonts/MortalFont20/00FB.png b/fonts/MortalFont20/00FB.png new file mode 100644 index 000000000..c2146723b Binary files /dev/null and b/fonts/MortalFont20/00FB.png differ diff --git a/fonts/MortalFont20/00FC.png b/fonts/MortalFont20/00FC.png new file mode 100644 index 000000000..3424d9d9e Binary files /dev/null and b/fonts/MortalFont20/00FC.png differ diff --git a/fonts/MortalFont20/00FD.png b/fonts/MortalFont20/00FD.png new file mode 100644 index 000000000..42307ae9e Binary files /dev/null and b/fonts/MortalFont20/00FD.png differ diff --git a/fonts/MortalFont20/00FE.png b/fonts/MortalFont20/00FE.png new file mode 100644 index 000000000..099587a1f Binary files /dev/null and b/fonts/MortalFont20/00FE.png differ diff --git a/fonts/MortalFont20/00FF.png b/fonts/MortalFont20/00FF.png new file mode 100644 index 000000000..12bb62257 Binary files /dev/null and b/fonts/MortalFont20/00FF.png differ diff --git a/fonts/MortalFont20/0100.png b/fonts/MortalFont20/0100.png new file mode 100644 index 000000000..678bafe6a Binary files /dev/null and b/fonts/MortalFont20/0100.png differ diff --git a/fonts/MortalFont20/0101.png b/fonts/MortalFont20/0101.png new file mode 100644 index 000000000..4a8a257fc Binary files /dev/null and b/fonts/MortalFont20/0101.png differ diff --git a/fonts/MortalFont20/0102.png b/fonts/MortalFont20/0102.png new file mode 100644 index 000000000..364d2c804 Binary files /dev/null and b/fonts/MortalFont20/0102.png differ diff --git a/fonts/MortalFont20/0103.png b/fonts/MortalFont20/0103.png new file mode 100644 index 000000000..2d80516e9 Binary files /dev/null and b/fonts/MortalFont20/0103.png differ diff --git a/fonts/MortalFont20/0104.png b/fonts/MortalFont20/0104.png new file mode 100644 index 000000000..ac8c3495c Binary files /dev/null and b/fonts/MortalFont20/0104.png differ diff --git a/fonts/MortalFont20/0105.png b/fonts/MortalFont20/0105.png new file mode 100644 index 000000000..4e60fdab3 Binary files /dev/null and b/fonts/MortalFont20/0105.png differ diff --git a/fonts/MortalFont20/0106.png b/fonts/MortalFont20/0106.png new file mode 100644 index 000000000..5b4467195 Binary files /dev/null and b/fonts/MortalFont20/0106.png differ diff --git a/fonts/MortalFont20/0107.png b/fonts/MortalFont20/0107.png new file mode 100644 index 000000000..77cf09610 Binary files /dev/null and b/fonts/MortalFont20/0107.png differ diff --git a/fonts/MortalFont20/0108.png b/fonts/MortalFont20/0108.png new file mode 100644 index 000000000..712015a1a Binary files /dev/null and b/fonts/MortalFont20/0108.png differ diff --git a/fonts/MortalFont20/0109.png b/fonts/MortalFont20/0109.png new file mode 100644 index 000000000..be22dd464 Binary files /dev/null and b/fonts/MortalFont20/0109.png differ diff --git a/fonts/MortalFont20/010C.png b/fonts/MortalFont20/010C.png new file mode 100644 index 000000000..ae59db295 Binary files /dev/null and b/fonts/MortalFont20/010C.png differ diff --git a/fonts/MortalFont20/010D.png b/fonts/MortalFont20/010D.png new file mode 100644 index 000000000..b50acc946 Binary files /dev/null and b/fonts/MortalFont20/010D.png differ diff --git a/fonts/MortalFont20/010E.png b/fonts/MortalFont20/010E.png new file mode 100644 index 000000000..ddf1def35 Binary files /dev/null and b/fonts/MortalFont20/010E.png differ diff --git a/fonts/MortalFont20/010F.png b/fonts/MortalFont20/010F.png new file mode 100644 index 000000000..c78fd0930 Binary files /dev/null and b/fonts/MortalFont20/010F.png differ diff --git a/fonts/MortalFont20/0111.png b/fonts/MortalFont20/0111.png new file mode 100644 index 000000000..df6105084 Binary files /dev/null and b/fonts/MortalFont20/0111.png differ diff --git a/fonts/MortalFont20/0112.png b/fonts/MortalFont20/0112.png new file mode 100644 index 000000000..c1a4b0bc2 Binary files /dev/null and b/fonts/MortalFont20/0112.png differ diff --git a/fonts/MortalFont20/0113.png b/fonts/MortalFont20/0113.png new file mode 100644 index 000000000..b55cc3504 Binary files /dev/null and b/fonts/MortalFont20/0113.png differ diff --git a/fonts/MortalFont20/0118.png b/fonts/MortalFont20/0118.png new file mode 100644 index 000000000..1f26fa9d5 Binary files /dev/null and b/fonts/MortalFont20/0118.png differ diff --git a/fonts/MortalFont20/0119.png b/fonts/MortalFont20/0119.png new file mode 100644 index 000000000..d3d498f69 Binary files /dev/null and b/fonts/MortalFont20/0119.png differ diff --git a/fonts/MortalFont20/011A.png b/fonts/MortalFont20/011A.png new file mode 100644 index 000000000..336484e0f Binary files /dev/null and b/fonts/MortalFont20/011A.png differ diff --git a/fonts/MortalFont20/011B.png b/fonts/MortalFont20/011B.png new file mode 100644 index 000000000..6eeddf199 Binary files /dev/null and b/fonts/MortalFont20/011B.png differ diff --git a/fonts/MortalFont20/011C.png b/fonts/MortalFont20/011C.png new file mode 100644 index 000000000..f0c26a592 Binary files /dev/null and b/fonts/MortalFont20/011C.png differ diff --git a/fonts/MortalFont20/011D.png b/fonts/MortalFont20/011D.png new file mode 100644 index 000000000..e033b5236 Binary files /dev/null and b/fonts/MortalFont20/011D.png differ diff --git a/fonts/MortalFont20/0124.png b/fonts/MortalFont20/0124.png new file mode 100644 index 000000000..3855d78b2 Binary files /dev/null and b/fonts/MortalFont20/0124.png differ diff --git a/fonts/MortalFont20/0125.png b/fonts/MortalFont20/0125.png new file mode 100644 index 000000000..bb7bb8e9a Binary files /dev/null and b/fonts/MortalFont20/0125.png differ diff --git a/fonts/MortalFont20/0127.png b/fonts/MortalFont20/0127.png new file mode 100644 index 000000000..3fe69d396 Binary files /dev/null and b/fonts/MortalFont20/0127.png differ diff --git a/fonts/MortalFont20/012A.png b/fonts/MortalFont20/012A.png new file mode 100644 index 000000000..f3eb3af8e Binary files /dev/null and b/fonts/MortalFont20/012A.png differ diff --git a/fonts/MortalFont20/012B.png b/fonts/MortalFont20/012B.png new file mode 100644 index 000000000..9427b3b64 Binary files /dev/null and b/fonts/MortalFont20/012B.png differ diff --git a/fonts/MortalFont20/0134.png b/fonts/MortalFont20/0134.png new file mode 100644 index 000000000..5437e54a4 Binary files /dev/null and b/fonts/MortalFont20/0134.png differ diff --git a/fonts/MortalFont20/0135.png b/fonts/MortalFont20/0135.png new file mode 100644 index 000000000..a7427efe1 Binary files /dev/null and b/fonts/MortalFont20/0135.png differ diff --git a/fonts/MortalFont20/0139.png b/fonts/MortalFont20/0139.png new file mode 100644 index 000000000..d6fd88c27 Binary files /dev/null and b/fonts/MortalFont20/0139.png differ diff --git a/fonts/MortalFont20/013A.png b/fonts/MortalFont20/013A.png new file mode 100644 index 000000000..db08471fc Binary files /dev/null and b/fonts/MortalFont20/013A.png differ diff --git a/fonts/MortalFont20/013D.png b/fonts/MortalFont20/013D.png new file mode 100644 index 000000000..a0a3df02e Binary files /dev/null and b/fonts/MortalFont20/013D.png differ diff --git a/fonts/MortalFont20/013E.png b/fonts/MortalFont20/013E.png new file mode 100644 index 000000000..02cb5395c Binary files /dev/null and b/fonts/MortalFont20/013E.png differ diff --git a/fonts/MortalFont20/0141.png b/fonts/MortalFont20/0141.png new file mode 100644 index 000000000..26ed90547 Binary files /dev/null and b/fonts/MortalFont20/0141.png differ diff --git a/fonts/MortalFont20/0142.png b/fonts/MortalFont20/0142.png new file mode 100644 index 000000000..1d49161a3 Binary files /dev/null and b/fonts/MortalFont20/0142.png differ diff --git a/fonts/MortalFont20/0143.png b/fonts/MortalFont20/0143.png new file mode 100644 index 000000000..f71cbe163 Binary files /dev/null and b/fonts/MortalFont20/0143.png differ diff --git a/fonts/MortalFont20/0144.png b/fonts/MortalFont20/0144.png new file mode 100644 index 000000000..baa3da9ba Binary files /dev/null and b/fonts/MortalFont20/0144.png differ diff --git a/fonts/MortalFont20/0147.png b/fonts/MortalFont20/0147.png new file mode 100644 index 000000000..7d7b9e35a Binary files /dev/null and b/fonts/MortalFont20/0147.png differ diff --git a/fonts/MortalFont20/0148.png b/fonts/MortalFont20/0148.png new file mode 100644 index 000000000..9062d201d Binary files /dev/null and b/fonts/MortalFont20/0148.png differ diff --git a/fonts/MortalFont20/014B.png b/fonts/MortalFont20/014B.png new file mode 100644 index 000000000..3aefcf2ca Binary files /dev/null and b/fonts/MortalFont20/014B.png differ diff --git a/fonts/MortalFont20/014C.png b/fonts/MortalFont20/014C.png new file mode 100644 index 000000000..9a083ea9f Binary files /dev/null and b/fonts/MortalFont20/014C.png differ diff --git a/fonts/MortalFont20/014D.png b/fonts/MortalFont20/014D.png new file mode 100644 index 000000000..589940ba5 Binary files /dev/null and b/fonts/MortalFont20/014D.png differ diff --git a/fonts/MortalFont20/0150.png b/fonts/MortalFont20/0150.png new file mode 100644 index 000000000..68eba7092 Binary files /dev/null and b/fonts/MortalFont20/0150.png differ diff --git a/fonts/MortalFont20/0151.png b/fonts/MortalFont20/0151.png new file mode 100644 index 000000000..edd62cc43 Binary files /dev/null and b/fonts/MortalFont20/0151.png differ diff --git a/fonts/MortalFont20/0152.png b/fonts/MortalFont20/0152.png new file mode 100644 index 000000000..4695654b5 Binary files /dev/null and b/fonts/MortalFont20/0152.png differ diff --git a/fonts/MortalFont20/0153.png b/fonts/MortalFont20/0153.png new file mode 100644 index 000000000..2aa5416d7 Binary files /dev/null and b/fonts/MortalFont20/0153.png differ diff --git a/fonts/MortalFont20/0154.png b/fonts/MortalFont20/0154.png new file mode 100644 index 000000000..c8bd96b3a Binary files /dev/null and b/fonts/MortalFont20/0154.png differ diff --git a/fonts/MortalFont20/0155.png b/fonts/MortalFont20/0155.png new file mode 100644 index 000000000..9269ddfd1 Binary files /dev/null and b/fonts/MortalFont20/0155.png differ diff --git a/fonts/MortalFont20/0158.png b/fonts/MortalFont20/0158.png new file mode 100644 index 000000000..15e37d7f7 Binary files /dev/null and b/fonts/MortalFont20/0158.png differ diff --git a/fonts/MortalFont20/0159.png b/fonts/MortalFont20/0159.png new file mode 100644 index 000000000..acb499cba Binary files /dev/null and b/fonts/MortalFont20/0159.png differ diff --git a/fonts/MortalFont20/015A.png b/fonts/MortalFont20/015A.png new file mode 100644 index 000000000..07fbbbd9a Binary files /dev/null and b/fonts/MortalFont20/015A.png differ diff --git a/fonts/MortalFont20/015B.png b/fonts/MortalFont20/015B.png new file mode 100644 index 000000000..770ffe60e Binary files /dev/null and b/fonts/MortalFont20/015B.png differ diff --git a/fonts/MortalFont20/015C.png b/fonts/MortalFont20/015C.png new file mode 100644 index 000000000..55da8bba1 Binary files /dev/null and b/fonts/MortalFont20/015C.png differ diff --git a/fonts/MortalFont20/015D.png b/fonts/MortalFont20/015D.png new file mode 100644 index 000000000..81f6d2e16 Binary files /dev/null and b/fonts/MortalFont20/015D.png differ diff --git a/fonts/MortalFont20/015E.png b/fonts/MortalFont20/015E.png new file mode 100644 index 000000000..c96618aaa Binary files /dev/null and b/fonts/MortalFont20/015E.png differ diff --git a/fonts/MortalFont20/015F.png b/fonts/MortalFont20/015F.png new file mode 100644 index 000000000..fb38bfd70 Binary files /dev/null and b/fonts/MortalFont20/015F.png differ diff --git a/fonts/MortalFont20/0160.png b/fonts/MortalFont20/0160.png new file mode 100644 index 000000000..d1a7a347d Binary files /dev/null and b/fonts/MortalFont20/0160.png differ diff --git a/fonts/MortalFont20/0161.png b/fonts/MortalFont20/0161.png new file mode 100644 index 000000000..94ddd9d54 Binary files /dev/null and b/fonts/MortalFont20/0161.png differ diff --git a/fonts/MortalFont20/0162.png b/fonts/MortalFont20/0162.png new file mode 100644 index 000000000..7c653dcde Binary files /dev/null and b/fonts/MortalFont20/0162.png differ diff --git a/fonts/MortalFont20/0163.png b/fonts/MortalFont20/0163.png new file mode 100644 index 000000000..f701138e4 Binary files /dev/null and b/fonts/MortalFont20/0163.png differ diff --git a/fonts/MortalFont20/0164.png b/fonts/MortalFont20/0164.png new file mode 100644 index 000000000..d2d276b74 Binary files /dev/null and b/fonts/MortalFont20/0164.png differ diff --git a/fonts/MortalFont20/0165.png b/fonts/MortalFont20/0165.png new file mode 100644 index 000000000..ea6193be0 Binary files /dev/null and b/fonts/MortalFont20/0165.png differ diff --git a/fonts/MortalFont20/016A.png b/fonts/MortalFont20/016A.png new file mode 100644 index 000000000..23a120b87 Binary files /dev/null and b/fonts/MortalFont20/016A.png differ diff --git a/fonts/MortalFont20/016B.png b/fonts/MortalFont20/016B.png new file mode 100644 index 000000000..682c697e3 Binary files /dev/null and b/fonts/MortalFont20/016B.png differ diff --git a/fonts/MortalFont20/016C.png b/fonts/MortalFont20/016C.png new file mode 100644 index 000000000..9814b239b Binary files /dev/null and b/fonts/MortalFont20/016C.png differ diff --git a/fonts/MortalFont20/016D.png b/fonts/MortalFont20/016D.png new file mode 100644 index 000000000..99b680eb8 Binary files /dev/null and b/fonts/MortalFont20/016D.png differ diff --git a/fonts/MortalFont20/016E.png b/fonts/MortalFont20/016E.png new file mode 100644 index 000000000..1b4af96ec Binary files /dev/null and b/fonts/MortalFont20/016E.png differ diff --git a/fonts/MortalFont20/016F.png b/fonts/MortalFont20/016F.png new file mode 100644 index 000000000..f4db793bb Binary files /dev/null and b/fonts/MortalFont20/016F.png differ diff --git a/fonts/MortalFont20/0170.png b/fonts/MortalFont20/0170.png new file mode 100644 index 000000000..bdb0391fb Binary files /dev/null and b/fonts/MortalFont20/0170.png differ diff --git a/fonts/MortalFont20/0171.png b/fonts/MortalFont20/0171.png new file mode 100644 index 000000000..47641962a Binary files /dev/null and b/fonts/MortalFont20/0171.png differ diff --git a/fonts/MortalFont20/0179.png b/fonts/MortalFont20/0179.png new file mode 100644 index 000000000..4b49b6c73 Binary files /dev/null and b/fonts/MortalFont20/0179.png differ diff --git a/fonts/MortalFont20/017A.png b/fonts/MortalFont20/017A.png new file mode 100644 index 000000000..8bb5cdb61 Binary files /dev/null and b/fonts/MortalFont20/017A.png differ diff --git a/fonts/MortalFont20/017B.png b/fonts/MortalFont20/017B.png new file mode 100644 index 000000000..5061e14c9 Binary files /dev/null and b/fonts/MortalFont20/017B.png differ diff --git a/fonts/MortalFont20/017C.png b/fonts/MortalFont20/017C.png new file mode 100644 index 000000000..95339e30c Binary files /dev/null and b/fonts/MortalFont20/017C.png differ diff --git a/fonts/MortalFont20/017D.png b/fonts/MortalFont20/017D.png new file mode 100644 index 000000000..534510815 Binary files /dev/null and b/fonts/MortalFont20/017D.png differ diff --git a/fonts/MortalFont20/017E.png b/fonts/MortalFont20/017E.png new file mode 100644 index 000000000..fcbe685a8 Binary files /dev/null and b/fonts/MortalFont20/017E.png differ diff --git a/fonts/MortalFont20/0193.png b/fonts/MortalFont20/0193.png new file mode 100644 index 000000000..77b28b205 Binary files /dev/null and b/fonts/MortalFont20/0193.png differ diff --git a/fonts/MortalFont20/01C2.png b/fonts/MortalFont20/01C2.png new file mode 100644 index 000000000..e13b418b5 Binary files /dev/null and b/fonts/MortalFont20/01C2.png differ diff --git a/fonts/MortalFont20/01CD.png b/fonts/MortalFont20/01CD.png new file mode 100644 index 000000000..86c249d09 Binary files /dev/null and b/fonts/MortalFont20/01CD.png differ diff --git a/fonts/MortalFont20/01CE.png b/fonts/MortalFont20/01CE.png new file mode 100644 index 000000000..ae3a3034c Binary files /dev/null and b/fonts/MortalFont20/01CE.png differ diff --git a/fonts/MortalFont20/01D0.png b/fonts/MortalFont20/01D0.png new file mode 100644 index 000000000..19cf1626e Binary files /dev/null and b/fonts/MortalFont20/01D0.png differ diff --git a/fonts/MortalFont20/01D1.png b/fonts/MortalFont20/01D1.png new file mode 100644 index 000000000..7b490a965 Binary files /dev/null and b/fonts/MortalFont20/01D1.png differ diff --git a/fonts/MortalFont20/01D2.png b/fonts/MortalFont20/01D2.png new file mode 100644 index 000000000..d6505f7f2 Binary files /dev/null and b/fonts/MortalFont20/01D2.png differ diff --git a/fonts/MortalFont20/01D4.png b/fonts/MortalFont20/01D4.png new file mode 100644 index 000000000..7ab903796 Binary files /dev/null and b/fonts/MortalFont20/01D4.png differ diff --git a/fonts/MortalFont20/01D6.png b/fonts/MortalFont20/01D6.png new file mode 100644 index 000000000..6aa95949e Binary files /dev/null and b/fonts/MortalFont20/01D6.png differ diff --git a/fonts/MortalFont20/01D8.png b/fonts/MortalFont20/01D8.png new file mode 100644 index 000000000..8a7663425 Binary files /dev/null and b/fonts/MortalFont20/01D8.png differ diff --git a/fonts/MortalFont20/01DA.png b/fonts/MortalFont20/01DA.png new file mode 100644 index 000000000..3f6222e78 Binary files /dev/null and b/fonts/MortalFont20/01DA.png differ diff --git a/fonts/MortalFont20/01DC.png b/fonts/MortalFont20/01DC.png new file mode 100644 index 000000000..a66efac3b Binary files /dev/null and b/fonts/MortalFont20/01DC.png differ diff --git a/fonts/MortalFont20/01F8.png b/fonts/MortalFont20/01F8.png new file mode 100644 index 000000000..c430c8cc0 Binary files /dev/null and b/fonts/MortalFont20/01F8.png differ diff --git a/fonts/MortalFont20/01F9.png b/fonts/MortalFont20/01F9.png new file mode 100644 index 000000000..97e4c6eb1 Binary files /dev/null and b/fonts/MortalFont20/01F9.png differ diff --git a/fonts/MortalFont20/01FD.png b/fonts/MortalFont20/01FD.png new file mode 100644 index 000000000..a4a3f8451 Binary files /dev/null and b/fonts/MortalFont20/01FD.png differ diff --git a/fonts/MortalFont20/0250.png b/fonts/MortalFont20/0250.png new file mode 100644 index 000000000..79c855cd3 Binary files /dev/null and b/fonts/MortalFont20/0250.png differ diff --git a/fonts/MortalFont20/0251.png b/fonts/MortalFont20/0251.png new file mode 100644 index 000000000..678b82378 Binary files /dev/null and b/fonts/MortalFont20/0251.png differ diff --git a/fonts/MortalFont20/0252.png b/fonts/MortalFont20/0252.png new file mode 100644 index 000000000..84bcd742f Binary files /dev/null and b/fonts/MortalFont20/0252.png differ diff --git a/fonts/MortalFont20/0253.png b/fonts/MortalFont20/0253.png new file mode 100644 index 000000000..b0e302652 Binary files /dev/null and b/fonts/MortalFont20/0253.png differ diff --git a/fonts/MortalFont20/0254.png b/fonts/MortalFont20/0254.png new file mode 100644 index 000000000..cce4b7166 Binary files /dev/null and b/fonts/MortalFont20/0254.png differ diff --git a/fonts/MortalFont20/0255.png b/fonts/MortalFont20/0255.png new file mode 100644 index 000000000..71ace7015 Binary files /dev/null and b/fonts/MortalFont20/0255.png differ diff --git a/fonts/MortalFont20/0256.png b/fonts/MortalFont20/0256.png new file mode 100644 index 000000000..7ba55e5da Binary files /dev/null and b/fonts/MortalFont20/0256.png differ diff --git a/fonts/MortalFont20/0257.png b/fonts/MortalFont20/0257.png new file mode 100644 index 000000000..4adb88ca5 Binary files /dev/null and b/fonts/MortalFont20/0257.png differ diff --git a/fonts/MortalFont20/0258.png b/fonts/MortalFont20/0258.png new file mode 100644 index 000000000..d77371e29 Binary files /dev/null and b/fonts/MortalFont20/0258.png differ diff --git a/fonts/MortalFont20/0259.png b/fonts/MortalFont20/0259.png new file mode 100644 index 000000000..05e803aba Binary files /dev/null and b/fonts/MortalFont20/0259.png differ diff --git a/fonts/MortalFont20/025A.png b/fonts/MortalFont20/025A.png new file mode 100644 index 000000000..8843f4356 Binary files /dev/null and b/fonts/MortalFont20/025A.png differ diff --git a/fonts/MortalFont20/025C.png b/fonts/MortalFont20/025C.png new file mode 100644 index 000000000..618a5819a Binary files /dev/null and b/fonts/MortalFont20/025C.png differ diff --git a/fonts/MortalFont20/025E.png b/fonts/MortalFont20/025E.png new file mode 100644 index 000000000..a3af23d51 Binary files /dev/null and b/fonts/MortalFont20/025E.png differ diff --git a/fonts/MortalFont20/025F.png b/fonts/MortalFont20/025F.png new file mode 100644 index 000000000..696e1ff56 Binary files /dev/null and b/fonts/MortalFont20/025F.png differ diff --git a/fonts/MortalFont20/0260.png b/fonts/MortalFont20/0260.png new file mode 100644 index 000000000..1c630953c Binary files /dev/null and b/fonts/MortalFont20/0260.png differ diff --git a/fonts/MortalFont20/0261.png b/fonts/MortalFont20/0261.png new file mode 100644 index 000000000..915bf42e4 Binary files /dev/null and b/fonts/MortalFont20/0261.png differ diff --git a/fonts/MortalFont20/0264.png b/fonts/MortalFont20/0264.png new file mode 100644 index 000000000..8e69c9fa5 Binary files /dev/null and b/fonts/MortalFont20/0264.png differ diff --git a/fonts/MortalFont20/0265.png b/fonts/MortalFont20/0265.png new file mode 100644 index 000000000..4afd78eb1 Binary files /dev/null and b/fonts/MortalFont20/0265.png differ diff --git a/fonts/MortalFont20/0266.png b/fonts/MortalFont20/0266.png new file mode 100644 index 000000000..cf7573db2 Binary files /dev/null and b/fonts/MortalFont20/0266.png differ diff --git a/fonts/MortalFont20/0267.png b/fonts/MortalFont20/0267.png new file mode 100644 index 000000000..9f8e5f385 Binary files /dev/null and b/fonts/MortalFont20/0267.png differ diff --git a/fonts/MortalFont20/0268.png b/fonts/MortalFont20/0268.png new file mode 100644 index 000000000..f366be9c5 Binary files /dev/null and b/fonts/MortalFont20/0268.png differ diff --git a/fonts/MortalFont20/026C.png b/fonts/MortalFont20/026C.png new file mode 100644 index 000000000..43769a03f Binary files /dev/null and b/fonts/MortalFont20/026C.png differ diff --git a/fonts/MortalFont20/026D.png b/fonts/MortalFont20/026D.png new file mode 100644 index 000000000..2b1adcd7b Binary files /dev/null and b/fonts/MortalFont20/026D.png differ diff --git a/fonts/MortalFont20/026E.png b/fonts/MortalFont20/026E.png new file mode 100644 index 000000000..3a05c5a54 Binary files /dev/null and b/fonts/MortalFont20/026E.png differ diff --git a/fonts/MortalFont20/026F.png b/fonts/MortalFont20/026F.png new file mode 100644 index 000000000..9af506443 Binary files /dev/null and b/fonts/MortalFont20/026F.png differ diff --git a/fonts/MortalFont20/0270.png b/fonts/MortalFont20/0270.png new file mode 100644 index 000000000..35bb991a4 Binary files /dev/null and b/fonts/MortalFont20/0270.png differ diff --git a/fonts/MortalFont20/0271.png b/fonts/MortalFont20/0271.png new file mode 100644 index 000000000..3c1f8dec0 Binary files /dev/null and b/fonts/MortalFont20/0271.png differ diff --git a/fonts/MortalFont20/0272.png b/fonts/MortalFont20/0272.png new file mode 100644 index 000000000..8334c253d Binary files /dev/null and b/fonts/MortalFont20/0272.png differ diff --git a/fonts/MortalFont20/0273.png b/fonts/MortalFont20/0273.png new file mode 100644 index 000000000..eb12abbc5 Binary files /dev/null and b/fonts/MortalFont20/0273.png differ diff --git a/fonts/MortalFont20/0275.png b/fonts/MortalFont20/0275.png new file mode 100644 index 000000000..d5763166f Binary files /dev/null and b/fonts/MortalFont20/0275.png differ diff --git a/fonts/MortalFont20/0279.png b/fonts/MortalFont20/0279.png new file mode 100644 index 000000000..a2012a694 Binary files /dev/null and b/fonts/MortalFont20/0279.png differ diff --git a/fonts/MortalFont20/027A.png b/fonts/MortalFont20/027A.png new file mode 100644 index 000000000..89df685a1 Binary files /dev/null and b/fonts/MortalFont20/027A.png differ diff --git a/fonts/MortalFont20/027B.png b/fonts/MortalFont20/027B.png new file mode 100644 index 000000000..0d03862ad Binary files /dev/null and b/fonts/MortalFont20/027B.png differ diff --git a/fonts/MortalFont20/027D.png b/fonts/MortalFont20/027D.png new file mode 100644 index 000000000..4410f39e9 Binary files /dev/null and b/fonts/MortalFont20/027D.png differ diff --git a/fonts/MortalFont20/027E.png b/fonts/MortalFont20/027E.png new file mode 100644 index 000000000..81614107f Binary files /dev/null and b/fonts/MortalFont20/027E.png differ diff --git a/fonts/MortalFont20/0281.png b/fonts/MortalFont20/0281.png new file mode 100644 index 000000000..381fdc67d Binary files /dev/null and b/fonts/MortalFont20/0281.png differ diff --git a/fonts/MortalFont20/0282.png b/fonts/MortalFont20/0282.png new file mode 100644 index 000000000..17e6cb44f Binary files /dev/null and b/fonts/MortalFont20/0282.png differ diff --git a/fonts/MortalFont20/0283.png b/fonts/MortalFont20/0283.png new file mode 100644 index 000000000..a5d463281 Binary files /dev/null and b/fonts/MortalFont20/0283.png differ diff --git a/fonts/MortalFont20/0284.png b/fonts/MortalFont20/0284.png new file mode 100644 index 000000000..a06072bb4 Binary files /dev/null and b/fonts/MortalFont20/0284.png differ diff --git a/fonts/MortalFont20/0288.png b/fonts/MortalFont20/0288.png new file mode 100644 index 000000000..85d8bb133 Binary files /dev/null and b/fonts/MortalFont20/0288.png differ diff --git a/fonts/MortalFont20/0289.png b/fonts/MortalFont20/0289.png new file mode 100644 index 000000000..b94561fce Binary files /dev/null and b/fonts/MortalFont20/0289.png differ diff --git a/fonts/MortalFont20/028A.png b/fonts/MortalFont20/028A.png new file mode 100644 index 000000000..9bc02f7fe Binary files /dev/null and b/fonts/MortalFont20/028A.png differ diff --git a/fonts/MortalFont20/028B.png b/fonts/MortalFont20/028B.png new file mode 100644 index 000000000..4bc9b74cb Binary files /dev/null and b/fonts/MortalFont20/028B.png differ diff --git a/fonts/MortalFont20/028C.png b/fonts/MortalFont20/028C.png new file mode 100644 index 000000000..0696091e8 Binary files /dev/null and b/fonts/MortalFont20/028C.png differ diff --git a/fonts/MortalFont20/028D.png b/fonts/MortalFont20/028D.png new file mode 100644 index 000000000..08f5f2fc5 Binary files /dev/null and b/fonts/MortalFont20/028D.png differ diff --git a/fonts/MortalFont20/028E.png b/fonts/MortalFont20/028E.png new file mode 100644 index 000000000..51e512783 Binary files /dev/null and b/fonts/MortalFont20/028E.png differ diff --git a/fonts/MortalFont20/0290.png b/fonts/MortalFont20/0290.png new file mode 100644 index 000000000..7aee13ed2 Binary files /dev/null and b/fonts/MortalFont20/0290.png differ diff --git a/fonts/MortalFont20/0291.png b/fonts/MortalFont20/0291.png new file mode 100644 index 000000000..be7edf91d Binary files /dev/null and b/fonts/MortalFont20/0291.png differ diff --git a/fonts/MortalFont20/0292.png b/fonts/MortalFont20/0292.png new file mode 100644 index 000000000..cd4e4814d Binary files /dev/null and b/fonts/MortalFont20/0292.png differ diff --git a/fonts/MortalFont20/0294.png b/fonts/MortalFont20/0294.png new file mode 100644 index 000000000..f7a4e8d80 Binary files /dev/null and b/fonts/MortalFont20/0294.png differ diff --git a/fonts/MortalFont20/0295.png b/fonts/MortalFont20/0295.png new file mode 100644 index 000000000..aa5bf0ab9 Binary files /dev/null and b/fonts/MortalFont20/0295.png differ diff --git a/fonts/MortalFont20/0298.png b/fonts/MortalFont20/0298.png new file mode 100644 index 000000000..f8bf44258 Binary files /dev/null and b/fonts/MortalFont20/0298.png differ diff --git a/fonts/MortalFont20/029D.png b/fonts/MortalFont20/029D.png new file mode 100644 index 000000000..4a200a53d Binary files /dev/null and b/fonts/MortalFont20/029D.png differ diff --git a/fonts/MortalFont20/02A1.png b/fonts/MortalFont20/02A1.png new file mode 100644 index 000000000..32cc01a39 Binary files /dev/null and b/fonts/MortalFont20/02A1.png differ diff --git a/fonts/MortalFont20/02A2.png b/fonts/MortalFont20/02A2.png new file mode 100644 index 000000000..839045881 Binary files /dev/null and b/fonts/MortalFont20/02A2.png differ diff --git a/fonts/MortalFont20/02C7.png b/fonts/MortalFont20/02C7.png new file mode 100644 index 000000000..329c2574a Binary files /dev/null and b/fonts/MortalFont20/02C7.png differ diff --git a/fonts/MortalFont20/02C8.png b/fonts/MortalFont20/02C8.png new file mode 100644 index 000000000..bed152ee0 Binary files /dev/null and b/fonts/MortalFont20/02C8.png differ diff --git a/fonts/MortalFont20/02CC.png b/fonts/MortalFont20/02CC.png new file mode 100644 index 000000000..36c096744 Binary files /dev/null and b/fonts/MortalFont20/02CC.png differ diff --git a/fonts/MortalFont20/02D0.png b/fonts/MortalFont20/02D0.png new file mode 100644 index 000000000..989c03ae1 Binary files /dev/null and b/fonts/MortalFont20/02D0.png differ diff --git a/fonts/MortalFont20/02D1.png b/fonts/MortalFont20/02D1.png new file mode 100644 index 000000000..4535ef4fe Binary files /dev/null and b/fonts/MortalFont20/02D1.png differ diff --git a/fonts/MortalFont20/02D8.png b/fonts/MortalFont20/02D8.png new file mode 100644 index 000000000..a5689498c Binary files /dev/null and b/fonts/MortalFont20/02D8.png differ diff --git a/fonts/MortalFont20/02D9.png b/fonts/MortalFont20/02D9.png new file mode 100644 index 000000000..62452d46e Binary files /dev/null and b/fonts/MortalFont20/02D9.png differ diff --git a/fonts/MortalFont20/02DB.png b/fonts/MortalFont20/02DB.png new file mode 100644 index 000000000..b960c17e8 Binary files /dev/null and b/fonts/MortalFont20/02DB.png differ diff --git a/fonts/MortalFont20/02DC.png b/fonts/MortalFont20/02DC.png new file mode 100644 index 000000000..135484bbf Binary files /dev/null and b/fonts/MortalFont20/02DC.png differ diff --git a/fonts/MortalFont20/02DD.png b/fonts/MortalFont20/02DD.png new file mode 100644 index 000000000..38e920931 Binary files /dev/null and b/fonts/MortalFont20/02DD.png differ diff --git a/fonts/MortalFont20/02DE.png b/fonts/MortalFont20/02DE.png new file mode 100644 index 000000000..414a8ff8a Binary files /dev/null and b/fonts/MortalFont20/02DE.png differ diff --git a/fonts/MortalFont20/02E5.png b/fonts/MortalFont20/02E5.png new file mode 100644 index 000000000..73c0e2126 Binary files /dev/null and b/fonts/MortalFont20/02E5.png differ diff --git a/fonts/MortalFont20/02E6.png b/fonts/MortalFont20/02E6.png new file mode 100644 index 000000000..0c1e2edd3 Binary files /dev/null and b/fonts/MortalFont20/02E6.png differ diff --git a/fonts/MortalFont20/02E7.png b/fonts/MortalFont20/02E7.png new file mode 100644 index 000000000..6be013c40 Binary files /dev/null and b/fonts/MortalFont20/02E7.png differ diff --git a/fonts/MortalFont20/02E8.png b/fonts/MortalFont20/02E8.png new file mode 100644 index 000000000..54f42be5c Binary files /dev/null and b/fonts/MortalFont20/02E8.png differ diff --git a/fonts/MortalFont20/02E9.png b/fonts/MortalFont20/02E9.png new file mode 100644 index 000000000..a06cb0498 Binary files /dev/null and b/fonts/MortalFont20/02E9.png differ diff --git a/fonts/MortalFont20/0300.png b/fonts/MortalFont20/0300.png new file mode 100644 index 000000000..12ef55356 Binary files /dev/null and b/fonts/MortalFont20/0300.png differ diff --git a/fonts/MortalFont20/0301.png b/fonts/MortalFont20/0301.png new file mode 100644 index 000000000..e49a6a80b Binary files /dev/null and b/fonts/MortalFont20/0301.png differ diff --git a/fonts/MortalFont20/0302.png b/fonts/MortalFont20/0302.png new file mode 100644 index 000000000..1c794aa7c Binary files /dev/null and b/fonts/MortalFont20/0302.png differ diff --git a/fonts/MortalFont20/0303.png b/fonts/MortalFont20/0303.png new file mode 100644 index 000000000..68c4b7ee9 Binary files /dev/null and b/fonts/MortalFont20/0303.png differ diff --git a/fonts/MortalFont20/0304.png b/fonts/MortalFont20/0304.png new file mode 100644 index 000000000..05b50ad20 Binary files /dev/null and b/fonts/MortalFont20/0304.png differ diff --git a/fonts/MortalFont20/0306.png b/fonts/MortalFont20/0306.png new file mode 100644 index 000000000..1228d390f Binary files /dev/null and b/fonts/MortalFont20/0306.png differ diff --git a/fonts/MortalFont20/0308.png b/fonts/MortalFont20/0308.png new file mode 100644 index 000000000..7e21e7579 Binary files /dev/null and b/fonts/MortalFont20/0308.png differ diff --git a/fonts/MortalFont20/030B.png b/fonts/MortalFont20/030B.png new file mode 100644 index 000000000..ae83db539 Binary files /dev/null and b/fonts/MortalFont20/030B.png differ diff --git a/fonts/MortalFont20/030C.png b/fonts/MortalFont20/030C.png new file mode 100644 index 000000000..b3653bc55 Binary files /dev/null and b/fonts/MortalFont20/030C.png differ diff --git a/fonts/MortalFont20/030F.png b/fonts/MortalFont20/030F.png new file mode 100644 index 000000000..a7baaf209 Binary files /dev/null and b/fonts/MortalFont20/030F.png differ diff --git a/fonts/MortalFont20/0318.png b/fonts/MortalFont20/0318.png new file mode 100644 index 000000000..86701f832 Binary files /dev/null and b/fonts/MortalFont20/0318.png differ diff --git a/fonts/MortalFont20/0319.png b/fonts/MortalFont20/0319.png new file mode 100644 index 000000000..279cd48a5 Binary files /dev/null and b/fonts/MortalFont20/0319.png differ diff --git a/fonts/MortalFont20/031A.png b/fonts/MortalFont20/031A.png new file mode 100644 index 000000000..4c28768d5 Binary files /dev/null and b/fonts/MortalFont20/031A.png differ diff --git a/fonts/MortalFont20/031C.png b/fonts/MortalFont20/031C.png new file mode 100644 index 000000000..04dcc5596 Binary files /dev/null and b/fonts/MortalFont20/031C.png differ diff --git a/fonts/MortalFont20/031D.png b/fonts/MortalFont20/031D.png new file mode 100644 index 000000000..5f78c2747 Binary files /dev/null and b/fonts/MortalFont20/031D.png differ diff --git a/fonts/MortalFont20/031E.png b/fonts/MortalFont20/031E.png new file mode 100644 index 000000000..51e6ac8e1 Binary files /dev/null and b/fonts/MortalFont20/031E.png differ diff --git a/fonts/MortalFont20/031F.png b/fonts/MortalFont20/031F.png new file mode 100644 index 000000000..1b1904791 Binary files /dev/null and b/fonts/MortalFont20/031F.png differ diff --git a/fonts/MortalFont20/0320.png b/fonts/MortalFont20/0320.png new file mode 100644 index 000000000..947f0d148 Binary files /dev/null and b/fonts/MortalFont20/0320.png differ diff --git a/fonts/MortalFont20/0324.png b/fonts/MortalFont20/0324.png new file mode 100644 index 000000000..f977d53c0 Binary files /dev/null and b/fonts/MortalFont20/0324.png differ diff --git a/fonts/MortalFont20/0325.png b/fonts/MortalFont20/0325.png new file mode 100644 index 000000000..6339434fe Binary files /dev/null and b/fonts/MortalFont20/0325.png differ diff --git a/fonts/MortalFont20/0329.png b/fonts/MortalFont20/0329.png new file mode 100644 index 000000000..36c096744 Binary files /dev/null and b/fonts/MortalFont20/0329.png differ diff --git a/fonts/MortalFont20/032A.png b/fonts/MortalFont20/032A.png new file mode 100644 index 000000000..6d1e29e55 Binary files /dev/null and b/fonts/MortalFont20/032A.png differ diff --git a/fonts/MortalFont20/032C.png b/fonts/MortalFont20/032C.png new file mode 100644 index 000000000..4d8e407b4 Binary files /dev/null and b/fonts/MortalFont20/032C.png differ diff --git a/fonts/MortalFont20/032F.png b/fonts/MortalFont20/032F.png new file mode 100644 index 000000000..b8a6b9159 Binary files /dev/null and b/fonts/MortalFont20/032F.png differ diff --git a/fonts/MortalFont20/0330.png b/fonts/MortalFont20/0330.png new file mode 100644 index 000000000..e61bdd634 Binary files /dev/null and b/fonts/MortalFont20/0330.png differ diff --git a/fonts/MortalFont20/0334.png b/fonts/MortalFont20/0334.png new file mode 100644 index 000000000..917e31343 Binary files /dev/null and b/fonts/MortalFont20/0334.png differ diff --git a/fonts/MortalFont20/0339.png b/fonts/MortalFont20/0339.png new file mode 100644 index 000000000..deb5967fb Binary files /dev/null and b/fonts/MortalFont20/0339.png differ diff --git a/fonts/MortalFont20/033A.png b/fonts/MortalFont20/033A.png new file mode 100644 index 000000000..b7be76f84 Binary files /dev/null and b/fonts/MortalFont20/033A.png differ diff --git a/fonts/MortalFont20/033B.png b/fonts/MortalFont20/033B.png new file mode 100644 index 000000000..47eea9a1e Binary files /dev/null and b/fonts/MortalFont20/033B.png differ diff --git a/fonts/MortalFont20/033C.png b/fonts/MortalFont20/033C.png new file mode 100644 index 000000000..409d9556d Binary files /dev/null and b/fonts/MortalFont20/033C.png differ diff --git a/fonts/MortalFont20/033D.png b/fonts/MortalFont20/033D.png new file mode 100644 index 000000000..a7bb1aa34 Binary files /dev/null and b/fonts/MortalFont20/033D.png differ diff --git a/fonts/MortalFont20/0361.png b/fonts/MortalFont20/0361.png new file mode 100644 index 000000000..0abfbf4e9 Binary files /dev/null and b/fonts/MortalFont20/0361.png differ diff --git a/fonts/MortalFont20/0391.png b/fonts/MortalFont20/0391.png new file mode 100644 index 000000000..91f19d7a0 Binary files /dev/null and b/fonts/MortalFont20/0391.png differ diff --git a/fonts/MortalFont20/0392.png b/fonts/MortalFont20/0392.png new file mode 100644 index 000000000..2f2c4ca68 Binary files /dev/null and b/fonts/MortalFont20/0392.png differ diff --git a/fonts/MortalFont20/0393.png b/fonts/MortalFont20/0393.png new file mode 100644 index 000000000..4ed258425 Binary files /dev/null and b/fonts/MortalFont20/0393.png differ diff --git a/fonts/MortalFont20/0394.png b/fonts/MortalFont20/0394.png new file mode 100644 index 000000000..199b6a86d Binary files /dev/null and b/fonts/MortalFont20/0394.png differ diff --git a/fonts/MortalFont20/0395.png b/fonts/MortalFont20/0395.png new file mode 100644 index 000000000..f19007012 Binary files /dev/null and b/fonts/MortalFont20/0395.png differ diff --git a/fonts/MortalFont20/0396.png b/fonts/MortalFont20/0396.png new file mode 100644 index 000000000..5fb1f12ed Binary files /dev/null and b/fonts/MortalFont20/0396.png differ diff --git a/fonts/MortalFont20/0397.png b/fonts/MortalFont20/0397.png new file mode 100644 index 000000000..f0fb3481a Binary files /dev/null and b/fonts/MortalFont20/0397.png differ diff --git a/fonts/MortalFont20/0398.png b/fonts/MortalFont20/0398.png new file mode 100644 index 000000000..70e82d5eb Binary files /dev/null and b/fonts/MortalFont20/0398.png differ diff --git a/fonts/MortalFont20/0399.png b/fonts/MortalFont20/0399.png new file mode 100644 index 000000000..91662fe6e Binary files /dev/null and b/fonts/MortalFont20/0399.png differ diff --git a/fonts/MortalFont20/039A.png b/fonts/MortalFont20/039A.png new file mode 100644 index 000000000..6f366b7b0 Binary files /dev/null and b/fonts/MortalFont20/039A.png differ diff --git a/fonts/MortalFont20/039B.png b/fonts/MortalFont20/039B.png new file mode 100644 index 000000000..908c68303 Binary files /dev/null and b/fonts/MortalFont20/039B.png differ diff --git a/fonts/MortalFont20/039C.png b/fonts/MortalFont20/039C.png new file mode 100644 index 000000000..0bd168db9 Binary files /dev/null and b/fonts/MortalFont20/039C.png differ diff --git a/fonts/MortalFont20/039D.png b/fonts/MortalFont20/039D.png new file mode 100644 index 000000000..e395af81c Binary files /dev/null and b/fonts/MortalFont20/039D.png differ diff --git a/fonts/MortalFont20/039E.png b/fonts/MortalFont20/039E.png new file mode 100644 index 000000000..571330927 Binary files /dev/null and b/fonts/MortalFont20/039E.png differ diff --git a/fonts/MortalFont20/039F.png b/fonts/MortalFont20/039F.png new file mode 100644 index 000000000..7f3590955 Binary files /dev/null and b/fonts/MortalFont20/039F.png differ diff --git a/fonts/MortalFont20/03A0.png b/fonts/MortalFont20/03A0.png new file mode 100644 index 000000000..2e6d034cf Binary files /dev/null and b/fonts/MortalFont20/03A0.png differ diff --git a/fonts/MortalFont20/03A1.png b/fonts/MortalFont20/03A1.png new file mode 100644 index 000000000..cbf5c7500 Binary files /dev/null and b/fonts/MortalFont20/03A1.png differ diff --git a/fonts/MortalFont20/03A3.png b/fonts/MortalFont20/03A3.png new file mode 100644 index 000000000..6a07ec66c Binary files /dev/null and b/fonts/MortalFont20/03A3.png differ diff --git a/fonts/MortalFont20/03A4.png b/fonts/MortalFont20/03A4.png new file mode 100644 index 000000000..873c8ddca Binary files /dev/null and b/fonts/MortalFont20/03A4.png differ diff --git a/fonts/MortalFont20/03A5.png b/fonts/MortalFont20/03A5.png new file mode 100644 index 000000000..aa6b5f3e4 Binary files /dev/null and b/fonts/MortalFont20/03A5.png differ diff --git a/fonts/MortalFont20/03A6.png b/fonts/MortalFont20/03A6.png new file mode 100644 index 000000000..087246b48 Binary files /dev/null and b/fonts/MortalFont20/03A6.png differ diff --git a/fonts/MortalFont20/03A7.png b/fonts/MortalFont20/03A7.png new file mode 100644 index 000000000..200145b67 Binary files /dev/null and b/fonts/MortalFont20/03A7.png differ diff --git a/fonts/MortalFont20/03A8.png b/fonts/MortalFont20/03A8.png new file mode 100644 index 000000000..711d2056f Binary files /dev/null and b/fonts/MortalFont20/03A8.png differ diff --git a/fonts/MortalFont20/03A9.png b/fonts/MortalFont20/03A9.png new file mode 100644 index 000000000..96b1125c1 Binary files /dev/null and b/fonts/MortalFont20/03A9.png differ diff --git a/fonts/MortalFont20/03B1.png b/fonts/MortalFont20/03B1.png new file mode 100644 index 000000000..1fa8322cc Binary files /dev/null and b/fonts/MortalFont20/03B1.png differ diff --git a/fonts/MortalFont20/03B2.png b/fonts/MortalFont20/03B2.png new file mode 100644 index 000000000..d3c702e9a Binary files /dev/null and b/fonts/MortalFont20/03B2.png differ diff --git a/fonts/MortalFont20/03B3.png b/fonts/MortalFont20/03B3.png new file mode 100644 index 000000000..dded3d56f Binary files /dev/null and b/fonts/MortalFont20/03B3.png differ diff --git a/fonts/MortalFont20/03B4.png b/fonts/MortalFont20/03B4.png new file mode 100644 index 000000000..dc43c0f0d Binary files /dev/null and b/fonts/MortalFont20/03B4.png differ diff --git a/fonts/MortalFont20/03B5.png b/fonts/MortalFont20/03B5.png new file mode 100644 index 000000000..1c384b13c Binary files /dev/null and b/fonts/MortalFont20/03B5.png differ diff --git a/fonts/MortalFont20/03B6.png b/fonts/MortalFont20/03B6.png new file mode 100644 index 000000000..bf6f569d8 Binary files /dev/null and b/fonts/MortalFont20/03B6.png differ diff --git a/fonts/MortalFont20/03B7.png b/fonts/MortalFont20/03B7.png new file mode 100644 index 000000000..c30713399 Binary files /dev/null and b/fonts/MortalFont20/03B7.png differ diff --git a/fonts/MortalFont20/03B8.png b/fonts/MortalFont20/03B8.png new file mode 100644 index 000000000..d0baac3f7 Binary files /dev/null and b/fonts/MortalFont20/03B8.png differ diff --git a/fonts/MortalFont20/03B9.png b/fonts/MortalFont20/03B9.png new file mode 100644 index 000000000..756c4f87c Binary files /dev/null and b/fonts/MortalFont20/03B9.png differ diff --git a/fonts/MortalFont20/03BA.png b/fonts/MortalFont20/03BA.png new file mode 100644 index 000000000..cf585e711 Binary files /dev/null and b/fonts/MortalFont20/03BA.png differ diff --git a/fonts/MortalFont20/03BB.png b/fonts/MortalFont20/03BB.png new file mode 100644 index 000000000..7dba92600 Binary files /dev/null and b/fonts/MortalFont20/03BB.png differ diff --git a/fonts/MortalFont20/03BC.png b/fonts/MortalFont20/03BC.png new file mode 100644 index 000000000..182f5fcfc Binary files /dev/null and b/fonts/MortalFont20/03BC.png differ diff --git a/fonts/MortalFont20/03BD.png b/fonts/MortalFont20/03BD.png new file mode 100644 index 000000000..c7353c83c Binary files /dev/null and b/fonts/MortalFont20/03BD.png differ diff --git a/fonts/MortalFont20/03BE.png b/fonts/MortalFont20/03BE.png new file mode 100644 index 000000000..e3412e219 Binary files /dev/null and b/fonts/MortalFont20/03BE.png differ diff --git a/fonts/MortalFont20/03BF.png b/fonts/MortalFont20/03BF.png new file mode 100644 index 000000000..05d57419a Binary files /dev/null and b/fonts/MortalFont20/03BF.png differ diff --git a/fonts/MortalFont20/03C0.png b/fonts/MortalFont20/03C0.png new file mode 100644 index 000000000..007babe6f Binary files /dev/null and b/fonts/MortalFont20/03C0.png differ diff --git a/fonts/MortalFont20/03C1.png b/fonts/MortalFont20/03C1.png new file mode 100644 index 000000000..2bd36894e Binary files /dev/null and b/fonts/MortalFont20/03C1.png differ diff --git a/fonts/MortalFont20/03C2.png b/fonts/MortalFont20/03C2.png new file mode 100644 index 000000000..089d1ebb5 Binary files /dev/null and b/fonts/MortalFont20/03C2.png differ diff --git a/fonts/MortalFont20/03C3.png b/fonts/MortalFont20/03C3.png new file mode 100644 index 000000000..a8d5a67dd Binary files /dev/null and b/fonts/MortalFont20/03C3.png differ diff --git a/fonts/MortalFont20/03C4.png b/fonts/MortalFont20/03C4.png new file mode 100644 index 000000000..e6bc408d4 Binary files /dev/null and b/fonts/MortalFont20/03C4.png differ diff --git a/fonts/MortalFont20/03C5.png b/fonts/MortalFont20/03C5.png new file mode 100644 index 000000000..fa627b2f0 Binary files /dev/null and b/fonts/MortalFont20/03C5.png differ diff --git a/fonts/MortalFont20/03C6.png b/fonts/MortalFont20/03C6.png new file mode 100644 index 000000000..63bc0dd9d Binary files /dev/null and b/fonts/MortalFont20/03C6.png differ diff --git a/fonts/MortalFont20/03C7.png b/fonts/MortalFont20/03C7.png new file mode 100644 index 000000000..92e2db9e2 Binary files /dev/null and b/fonts/MortalFont20/03C7.png differ diff --git a/fonts/MortalFont20/03C8.png b/fonts/MortalFont20/03C8.png new file mode 100644 index 000000000..5c771ce3e Binary files /dev/null and b/fonts/MortalFont20/03C8.png differ diff --git a/fonts/MortalFont20/03C9.png b/fonts/MortalFont20/03C9.png new file mode 100644 index 000000000..96192f068 Binary files /dev/null and b/fonts/MortalFont20/03C9.png differ diff --git a/fonts/MortalFont20/0401.png b/fonts/MortalFont20/0401.png new file mode 100644 index 000000000..7114a847f Binary files /dev/null and b/fonts/MortalFont20/0401.png differ diff --git a/fonts/MortalFont20/0410.png b/fonts/MortalFont20/0410.png new file mode 100644 index 000000000..91f19d7a0 Binary files /dev/null and b/fonts/MortalFont20/0410.png differ diff --git a/fonts/MortalFont20/0411.png b/fonts/MortalFont20/0411.png new file mode 100644 index 000000000..3564dd2b7 Binary files /dev/null and b/fonts/MortalFont20/0411.png differ diff --git a/fonts/MortalFont20/0412.png b/fonts/MortalFont20/0412.png new file mode 100644 index 000000000..2f2c4ca68 Binary files /dev/null and b/fonts/MortalFont20/0412.png differ diff --git a/fonts/MortalFont20/0413.png b/fonts/MortalFont20/0413.png new file mode 100644 index 000000000..4ed258425 Binary files /dev/null and b/fonts/MortalFont20/0413.png differ diff --git a/fonts/MortalFont20/0414.png b/fonts/MortalFont20/0414.png new file mode 100644 index 000000000..db567f7be Binary files /dev/null and b/fonts/MortalFont20/0414.png differ diff --git a/fonts/MortalFont20/0415.png b/fonts/MortalFont20/0415.png new file mode 100644 index 000000000..f19007012 Binary files /dev/null and b/fonts/MortalFont20/0415.png differ diff --git a/fonts/MortalFont20/0416.png b/fonts/MortalFont20/0416.png new file mode 100644 index 000000000..f12c5e0fe Binary files /dev/null and b/fonts/MortalFont20/0416.png differ diff --git a/fonts/MortalFont20/0417.png b/fonts/MortalFont20/0417.png new file mode 100644 index 000000000..2b7dd7980 Binary files /dev/null and b/fonts/MortalFont20/0417.png differ diff --git a/fonts/MortalFont20/0418.png b/fonts/MortalFont20/0418.png new file mode 100644 index 000000000..2f02d55c5 Binary files /dev/null and b/fonts/MortalFont20/0418.png differ diff --git a/fonts/MortalFont20/0419.png b/fonts/MortalFont20/0419.png new file mode 100644 index 000000000..e3ff3dce7 Binary files /dev/null and b/fonts/MortalFont20/0419.png differ diff --git a/fonts/MortalFont20/041A.png b/fonts/MortalFont20/041A.png new file mode 100644 index 000000000..a54d40af4 Binary files /dev/null and b/fonts/MortalFont20/041A.png differ diff --git a/fonts/MortalFont20/041B.png b/fonts/MortalFont20/041B.png new file mode 100644 index 000000000..9b4dd8be6 Binary files /dev/null and b/fonts/MortalFont20/041B.png differ diff --git a/fonts/MortalFont20/041C.png b/fonts/MortalFont20/041C.png new file mode 100644 index 000000000..0bd168db9 Binary files /dev/null and b/fonts/MortalFont20/041C.png differ diff --git a/fonts/MortalFont20/041D.png b/fonts/MortalFont20/041D.png new file mode 100644 index 000000000..f0fb3481a Binary files /dev/null and b/fonts/MortalFont20/041D.png differ diff --git a/fonts/MortalFont20/041E.png b/fonts/MortalFont20/041E.png new file mode 100644 index 000000000..7f3590955 Binary files /dev/null and b/fonts/MortalFont20/041E.png differ diff --git a/fonts/MortalFont20/041F.png b/fonts/MortalFont20/041F.png new file mode 100644 index 000000000..2e6d034cf Binary files /dev/null and b/fonts/MortalFont20/041F.png differ diff --git a/fonts/MortalFont20/0420.png b/fonts/MortalFont20/0420.png new file mode 100644 index 000000000..cbf5c7500 Binary files /dev/null and b/fonts/MortalFont20/0420.png differ diff --git a/fonts/MortalFont20/0421.png b/fonts/MortalFont20/0421.png new file mode 100644 index 000000000..e8164f230 Binary files /dev/null and b/fonts/MortalFont20/0421.png differ diff --git a/fonts/MortalFont20/0422.png b/fonts/MortalFont20/0422.png new file mode 100644 index 000000000..873c8ddca Binary files /dev/null and b/fonts/MortalFont20/0422.png differ diff --git a/fonts/MortalFont20/0423.png b/fonts/MortalFont20/0423.png new file mode 100644 index 000000000..d1b71923d Binary files /dev/null and b/fonts/MortalFont20/0423.png differ diff --git a/fonts/MortalFont20/0424.png b/fonts/MortalFont20/0424.png new file mode 100644 index 000000000..f3d298892 Binary files /dev/null and b/fonts/MortalFont20/0424.png differ diff --git a/fonts/MortalFont20/0425.png b/fonts/MortalFont20/0425.png new file mode 100644 index 000000000..200145b67 Binary files /dev/null and b/fonts/MortalFont20/0425.png differ diff --git a/fonts/MortalFont20/0426.png b/fonts/MortalFont20/0426.png new file mode 100644 index 000000000..3ec638075 Binary files /dev/null and b/fonts/MortalFont20/0426.png differ diff --git a/fonts/MortalFont20/0427.png b/fonts/MortalFont20/0427.png new file mode 100644 index 000000000..c3051d623 Binary files /dev/null and b/fonts/MortalFont20/0427.png differ diff --git a/fonts/MortalFont20/0428.png b/fonts/MortalFont20/0428.png new file mode 100644 index 000000000..5884ad0f5 Binary files /dev/null and b/fonts/MortalFont20/0428.png differ diff --git a/fonts/MortalFont20/0429.png b/fonts/MortalFont20/0429.png new file mode 100644 index 000000000..f658205dc Binary files /dev/null and b/fonts/MortalFont20/0429.png differ diff --git a/fonts/MortalFont20/042A.png b/fonts/MortalFont20/042A.png new file mode 100644 index 000000000..b90d38155 Binary files /dev/null and b/fonts/MortalFont20/042A.png differ diff --git a/fonts/MortalFont20/042B.png b/fonts/MortalFont20/042B.png new file mode 100644 index 000000000..65e40c179 Binary files /dev/null and b/fonts/MortalFont20/042B.png differ diff --git a/fonts/MortalFont20/042C.png b/fonts/MortalFont20/042C.png new file mode 100644 index 000000000..a71f0b4ea Binary files /dev/null and b/fonts/MortalFont20/042C.png differ diff --git a/fonts/MortalFont20/042D.png b/fonts/MortalFont20/042D.png new file mode 100644 index 000000000..5d7df902e Binary files /dev/null and b/fonts/MortalFont20/042D.png differ diff --git a/fonts/MortalFont20/042E.png b/fonts/MortalFont20/042E.png new file mode 100644 index 000000000..86970879c Binary files /dev/null and b/fonts/MortalFont20/042E.png differ diff --git a/fonts/MortalFont20/042F.png b/fonts/MortalFont20/042F.png new file mode 100644 index 000000000..48992602a Binary files /dev/null and b/fonts/MortalFont20/042F.png differ diff --git a/fonts/MortalFont20/0430.png b/fonts/MortalFont20/0430.png new file mode 100644 index 000000000..7583d2b1d Binary files /dev/null and b/fonts/MortalFont20/0430.png differ diff --git a/fonts/MortalFont20/0431.png b/fonts/MortalFont20/0431.png new file mode 100644 index 000000000..2b2dbd14b Binary files /dev/null and b/fonts/MortalFont20/0431.png differ diff --git a/fonts/MortalFont20/0432.png b/fonts/MortalFont20/0432.png new file mode 100644 index 000000000..9bcfcb472 Binary files /dev/null and b/fonts/MortalFont20/0432.png differ diff --git a/fonts/MortalFont20/0433.png b/fonts/MortalFont20/0433.png new file mode 100644 index 000000000..2e28dd613 Binary files /dev/null and b/fonts/MortalFont20/0433.png differ diff --git a/fonts/MortalFont20/0434.png b/fonts/MortalFont20/0434.png new file mode 100644 index 000000000..499fa7a09 Binary files /dev/null and b/fonts/MortalFont20/0434.png differ diff --git a/fonts/MortalFont20/0435.png b/fonts/MortalFont20/0435.png new file mode 100644 index 000000000..a1678c1b3 Binary files /dev/null and b/fonts/MortalFont20/0435.png differ diff --git a/fonts/MortalFont20/0436.png b/fonts/MortalFont20/0436.png new file mode 100644 index 000000000..f38b13441 Binary files /dev/null and b/fonts/MortalFont20/0436.png differ diff --git a/fonts/MortalFont20/0437.png b/fonts/MortalFont20/0437.png new file mode 100644 index 000000000..cacf493c7 Binary files /dev/null and b/fonts/MortalFont20/0437.png differ diff --git a/fonts/MortalFont20/0438.png b/fonts/MortalFont20/0438.png new file mode 100644 index 000000000..9d56e9b26 Binary files /dev/null and b/fonts/MortalFont20/0438.png differ diff --git a/fonts/MortalFont20/0439.png b/fonts/MortalFont20/0439.png new file mode 100644 index 000000000..1cf1dc5db Binary files /dev/null and b/fonts/MortalFont20/0439.png differ diff --git a/fonts/MortalFont20/043A.png b/fonts/MortalFont20/043A.png new file mode 100644 index 000000000..92382a197 Binary files /dev/null and b/fonts/MortalFont20/043A.png differ diff --git a/fonts/MortalFont20/043B.png b/fonts/MortalFont20/043B.png new file mode 100644 index 000000000..c5dc1d6d0 Binary files /dev/null and b/fonts/MortalFont20/043B.png differ diff --git a/fonts/MortalFont20/043C.png b/fonts/MortalFont20/043C.png new file mode 100644 index 000000000..e0aeb648f Binary files /dev/null and b/fonts/MortalFont20/043C.png differ diff --git a/fonts/MortalFont20/043D.png b/fonts/MortalFont20/043D.png new file mode 100644 index 000000000..be6a5cddb Binary files /dev/null and b/fonts/MortalFont20/043D.png differ diff --git a/fonts/MortalFont20/043E.png b/fonts/MortalFont20/043E.png new file mode 100644 index 000000000..53cc0f1de Binary files /dev/null and b/fonts/MortalFont20/043E.png differ diff --git a/fonts/MortalFont20/043F.png b/fonts/MortalFont20/043F.png new file mode 100644 index 000000000..9833450ef Binary files /dev/null and b/fonts/MortalFont20/043F.png differ diff --git a/fonts/MortalFont20/0440.png b/fonts/MortalFont20/0440.png new file mode 100644 index 000000000..52b44cf09 Binary files /dev/null and b/fonts/MortalFont20/0440.png differ diff --git a/fonts/MortalFont20/0441.png b/fonts/MortalFont20/0441.png new file mode 100644 index 000000000..39ccce852 Binary files /dev/null and b/fonts/MortalFont20/0441.png differ diff --git a/fonts/MortalFont20/0442.png b/fonts/MortalFont20/0442.png new file mode 100644 index 000000000..d30f422ef Binary files /dev/null and b/fonts/MortalFont20/0442.png differ diff --git a/fonts/MortalFont20/0443.png b/fonts/MortalFont20/0443.png new file mode 100644 index 000000000..91244c25c Binary files /dev/null and b/fonts/MortalFont20/0443.png differ diff --git a/fonts/MortalFont20/0444.png b/fonts/MortalFont20/0444.png new file mode 100644 index 000000000..91b179446 Binary files /dev/null and b/fonts/MortalFont20/0444.png differ diff --git a/fonts/MortalFont20/0445.png b/fonts/MortalFont20/0445.png new file mode 100644 index 000000000..a5fe73e5d Binary files /dev/null and b/fonts/MortalFont20/0445.png differ diff --git a/fonts/MortalFont20/0446.png b/fonts/MortalFont20/0446.png new file mode 100644 index 000000000..8d9cac7be Binary files /dev/null and b/fonts/MortalFont20/0446.png differ diff --git a/fonts/MortalFont20/0447.png b/fonts/MortalFont20/0447.png new file mode 100644 index 000000000..076613fc3 Binary files /dev/null and b/fonts/MortalFont20/0447.png differ diff --git a/fonts/MortalFont20/0448.png b/fonts/MortalFont20/0448.png new file mode 100644 index 000000000..5f6669518 Binary files /dev/null and b/fonts/MortalFont20/0448.png differ diff --git a/fonts/MortalFont20/0449.png b/fonts/MortalFont20/0449.png new file mode 100644 index 000000000..efc1e642b Binary files /dev/null and b/fonts/MortalFont20/0449.png differ diff --git a/fonts/MortalFont20/044A.png b/fonts/MortalFont20/044A.png new file mode 100644 index 000000000..984bdc77e Binary files /dev/null and b/fonts/MortalFont20/044A.png differ diff --git a/fonts/MortalFont20/044B.png b/fonts/MortalFont20/044B.png new file mode 100644 index 000000000..8dda245fc Binary files /dev/null and b/fonts/MortalFont20/044B.png differ diff --git a/fonts/MortalFont20/044C.png b/fonts/MortalFont20/044C.png new file mode 100644 index 000000000..d3faf22cd Binary files /dev/null and b/fonts/MortalFont20/044C.png differ diff --git a/fonts/MortalFont20/044D.png b/fonts/MortalFont20/044D.png new file mode 100644 index 000000000..fe7bb403a Binary files /dev/null and b/fonts/MortalFont20/044D.png differ diff --git a/fonts/MortalFont20/044E.png b/fonts/MortalFont20/044E.png new file mode 100644 index 000000000..e47e6e4a6 Binary files /dev/null and b/fonts/MortalFont20/044E.png differ diff --git a/fonts/MortalFont20/044F.png b/fonts/MortalFont20/044F.png new file mode 100644 index 000000000..d3b735ec1 Binary files /dev/null and b/fonts/MortalFont20/044F.png differ diff --git a/fonts/MortalFont20/0451.png b/fonts/MortalFont20/0451.png new file mode 100644 index 000000000..5ac27c252 Binary files /dev/null and b/fonts/MortalFont20/0451.png differ diff --git a/fonts/MortalFont20/1E3E.png b/fonts/MortalFont20/1E3E.png new file mode 100644 index 000000000..854075238 Binary files /dev/null and b/fonts/MortalFont20/1E3E.png differ diff --git a/fonts/MortalFont20/1E3F.png b/fonts/MortalFont20/1E3F.png new file mode 100644 index 000000000..e6d933043 Binary files /dev/null and b/fonts/MortalFont20/1E3F.png differ diff --git a/fonts/MortalFont20/1F70.png b/fonts/MortalFont20/1F70.png new file mode 100644 index 000000000..4fa83e33a Binary files /dev/null and b/fonts/MortalFont20/1F70.png differ diff --git a/fonts/MortalFont20/1F71.png b/fonts/MortalFont20/1F71.png new file mode 100644 index 000000000..f46cc4eda Binary files /dev/null and b/fonts/MortalFont20/1F71.png differ diff --git a/fonts/MortalFont20/1F72.png b/fonts/MortalFont20/1F72.png new file mode 100644 index 000000000..838505edc Binary files /dev/null and b/fonts/MortalFont20/1F72.png differ diff --git a/fonts/MortalFont20/1F73.png b/fonts/MortalFont20/1F73.png new file mode 100644 index 000000000..03c583925 Binary files /dev/null and b/fonts/MortalFont20/1F73.png differ diff --git a/fonts/MortalFont20/2010.png b/fonts/MortalFont20/2010.png new file mode 100644 index 000000000..fd80b89c6 Binary files /dev/null and b/fonts/MortalFont20/2010.png differ diff --git a/fonts/MortalFont20/2013.png b/fonts/MortalFont20/2013.png new file mode 100644 index 000000000..23f2fd8ef Binary files /dev/null and b/fonts/MortalFont20/2013.png differ diff --git a/fonts/MortalFont20/2014.png b/fonts/MortalFont20/2014.png new file mode 100644 index 000000000..e98f3b601 Binary files /dev/null and b/fonts/MortalFont20/2014.png differ diff --git a/fonts/MortalFont20/2015.png b/fonts/MortalFont20/2015.png new file mode 100644 index 000000000..e98f3b601 Binary files /dev/null and b/fonts/MortalFont20/2015.png differ diff --git a/fonts/MortalFont20/2016.png b/fonts/MortalFont20/2016.png new file mode 100644 index 000000000..6f1a48bbf Binary files /dev/null and b/fonts/MortalFont20/2016.png differ diff --git a/fonts/MortalFont20/2018.png b/fonts/MortalFont20/2018.png new file mode 100644 index 000000000..3823d79b6 Binary files /dev/null and b/fonts/MortalFont20/2018.png differ diff --git a/fonts/MortalFont20/2019.png b/fonts/MortalFont20/2019.png new file mode 100644 index 000000000..be4df6ff5 Binary files /dev/null and b/fonts/MortalFont20/2019.png differ diff --git a/fonts/MortalFont20/201C.png b/fonts/MortalFont20/201C.png new file mode 100644 index 000000000..9dc6c56db Binary files /dev/null and b/fonts/MortalFont20/201C.png differ diff --git a/fonts/MortalFont20/201D.png b/fonts/MortalFont20/201D.png new file mode 100644 index 000000000..af1c937c8 Binary files /dev/null and b/fonts/MortalFont20/201D.png differ diff --git a/fonts/MortalFont20/2020.png b/fonts/MortalFont20/2020.png new file mode 100644 index 000000000..b7b80b5f3 Binary files /dev/null and b/fonts/MortalFont20/2020.png differ diff --git a/fonts/MortalFont20/2021.png b/fonts/MortalFont20/2021.png new file mode 100644 index 000000000..a5b464275 Binary files /dev/null and b/fonts/MortalFont20/2021.png differ diff --git a/fonts/MortalFont20/2022.png b/fonts/MortalFont20/2022.png new file mode 100644 index 000000000..1e9f979e4 Binary files /dev/null and b/fonts/MortalFont20/2022.png differ diff --git a/fonts/MortalFont20/2025.png b/fonts/MortalFont20/2025.png new file mode 100644 index 000000000..76467c9ef Binary files /dev/null and b/fonts/MortalFont20/2025.png differ diff --git a/fonts/MortalFont20/2026.png b/fonts/MortalFont20/2026.png new file mode 100644 index 000000000..ae067a7b6 Binary files /dev/null and b/fonts/MortalFont20/2026.png differ diff --git a/fonts/MortalFont20/2030.png b/fonts/MortalFont20/2030.png new file mode 100644 index 000000000..1d084af45 Binary files /dev/null and b/fonts/MortalFont20/2030.png differ diff --git a/fonts/MortalFont20/2032.png b/fonts/MortalFont20/2032.png new file mode 100644 index 000000000..fa2ec5f83 Binary files /dev/null and b/fonts/MortalFont20/2032.png differ diff --git a/fonts/MortalFont20/2033.png b/fonts/MortalFont20/2033.png new file mode 100644 index 000000000..f1da7760f Binary files /dev/null and b/fonts/MortalFont20/2033.png differ diff --git a/fonts/MortalFont20/203B.png b/fonts/MortalFont20/203B.png new file mode 100644 index 000000000..ddbf5cc28 Binary files /dev/null and b/fonts/MortalFont20/203B.png differ diff --git a/fonts/MortalFont20/203C.png b/fonts/MortalFont20/203C.png new file mode 100644 index 000000000..195877d90 Binary files /dev/null and b/fonts/MortalFont20/203C.png differ diff --git a/fonts/MortalFont20/203E.png b/fonts/MortalFont20/203E.png new file mode 100644 index 000000000..4a5b99534 Binary files /dev/null and b/fonts/MortalFont20/203E.png differ diff --git a/fonts/MortalFont20/203F.png b/fonts/MortalFont20/203F.png new file mode 100644 index 000000000..35f82aae1 Binary files /dev/null and b/fonts/MortalFont20/203F.png differ diff --git a/fonts/MortalFont20/2042.png b/fonts/MortalFont20/2042.png new file mode 100644 index 000000000..7f9698041 Binary files /dev/null and b/fonts/MortalFont20/2042.png differ diff --git a/fonts/MortalFont20/2047.png b/fonts/MortalFont20/2047.png new file mode 100644 index 000000000..ae264c5e7 Binary files /dev/null and b/fonts/MortalFont20/2047.png differ diff --git a/fonts/MortalFont20/2048.png b/fonts/MortalFont20/2048.png new file mode 100644 index 000000000..e47010681 Binary files /dev/null and b/fonts/MortalFont20/2048.png differ diff --git a/fonts/MortalFont20/2049.png b/fonts/MortalFont20/2049.png new file mode 100644 index 000000000..f00767134 Binary files /dev/null and b/fonts/MortalFont20/2049.png differ diff --git a/fonts/MortalFont20/2051.png b/fonts/MortalFont20/2051.png new file mode 100644 index 000000000..f2d1bb8b2 Binary files /dev/null and b/fonts/MortalFont20/2051.png differ diff --git a/fonts/MortalFont20/20AC.png b/fonts/MortalFont20/20AC.png new file mode 100644 index 000000000..9cfbff492 Binary files /dev/null and b/fonts/MortalFont20/20AC.png differ diff --git a/fonts/MortalFont20/2103.png b/fonts/MortalFont20/2103.png new file mode 100644 index 000000000..9228e0cc3 Binary files /dev/null and b/fonts/MortalFont20/2103.png differ diff --git a/fonts/MortalFont20/210F.png b/fonts/MortalFont20/210F.png new file mode 100644 index 000000000..bbc2f13a6 Binary files /dev/null and b/fonts/MortalFont20/210F.png differ diff --git a/fonts/MortalFont20/2113.png b/fonts/MortalFont20/2113.png new file mode 100644 index 000000000..193c65074 Binary files /dev/null and b/fonts/MortalFont20/2113.png differ diff --git a/fonts/MortalFont20/2116.png b/fonts/MortalFont20/2116.png new file mode 100644 index 000000000..1c7f57b89 Binary files /dev/null and b/fonts/MortalFont20/2116.png differ diff --git a/fonts/MortalFont20/2121.png b/fonts/MortalFont20/2121.png new file mode 100644 index 000000000..0951fa66f Binary files /dev/null and b/fonts/MortalFont20/2121.png differ diff --git a/fonts/MortalFont20/2127.png b/fonts/MortalFont20/2127.png new file mode 100644 index 000000000..3fc3e9487 Binary files /dev/null and b/fonts/MortalFont20/2127.png differ diff --git a/fonts/MortalFont20/212B.png b/fonts/MortalFont20/212B.png new file mode 100644 index 000000000..5ae0872f2 Binary files /dev/null and b/fonts/MortalFont20/212B.png differ diff --git a/fonts/MortalFont20/2135.png b/fonts/MortalFont20/2135.png new file mode 100644 index 000000000..0cd4ad961 Binary files /dev/null and b/fonts/MortalFont20/2135.png differ diff --git a/fonts/MortalFont20/2153.png b/fonts/MortalFont20/2153.png new file mode 100644 index 000000000..0bc3fb018 Binary files /dev/null and b/fonts/MortalFont20/2153.png differ diff --git a/fonts/MortalFont20/2154.png b/fonts/MortalFont20/2154.png new file mode 100644 index 000000000..62d91722c Binary files /dev/null and b/fonts/MortalFont20/2154.png differ diff --git a/fonts/MortalFont20/2155.png b/fonts/MortalFont20/2155.png new file mode 100644 index 000000000..293da5d09 Binary files /dev/null and b/fonts/MortalFont20/2155.png differ diff --git a/fonts/MortalFont20/2160.png b/fonts/MortalFont20/2160.png new file mode 100644 index 000000000..91662fe6e Binary files /dev/null and b/fonts/MortalFont20/2160.png differ diff --git a/fonts/MortalFont20/2161.png b/fonts/MortalFont20/2161.png new file mode 100644 index 000000000..77afccb73 Binary files /dev/null and b/fonts/MortalFont20/2161.png differ diff --git a/fonts/MortalFont20/2162.png b/fonts/MortalFont20/2162.png new file mode 100644 index 000000000..defadead9 Binary files /dev/null and b/fonts/MortalFont20/2162.png differ diff --git a/fonts/MortalFont20/2163.png b/fonts/MortalFont20/2163.png new file mode 100644 index 000000000..89bda9d1d Binary files /dev/null and b/fonts/MortalFont20/2163.png differ diff --git a/fonts/MortalFont20/2164.png b/fonts/MortalFont20/2164.png new file mode 100644 index 000000000..ed55ae590 Binary files /dev/null and b/fonts/MortalFont20/2164.png differ diff --git a/fonts/MortalFont20/2165.png b/fonts/MortalFont20/2165.png new file mode 100644 index 000000000..abf9ec754 Binary files /dev/null and b/fonts/MortalFont20/2165.png differ diff --git a/fonts/MortalFont20/2166.png b/fonts/MortalFont20/2166.png new file mode 100644 index 000000000..1760a204b Binary files /dev/null and b/fonts/MortalFont20/2166.png differ diff --git a/fonts/MortalFont20/2167.png b/fonts/MortalFont20/2167.png new file mode 100644 index 000000000..52023f9f0 Binary files /dev/null and b/fonts/MortalFont20/2167.png differ diff --git a/fonts/MortalFont20/2168.png b/fonts/MortalFont20/2168.png new file mode 100644 index 000000000..72b5f8457 Binary files /dev/null and b/fonts/MortalFont20/2168.png differ diff --git a/fonts/MortalFont20/2169.png b/fonts/MortalFont20/2169.png new file mode 100644 index 000000000..200145b67 Binary files /dev/null and b/fonts/MortalFont20/2169.png differ diff --git a/fonts/MortalFont20/216A.png b/fonts/MortalFont20/216A.png new file mode 100644 index 000000000..7aa173fac Binary files /dev/null and b/fonts/MortalFont20/216A.png differ diff --git a/fonts/MortalFont20/216B.png b/fonts/MortalFont20/216B.png new file mode 100644 index 000000000..9e0082387 Binary files /dev/null and b/fonts/MortalFont20/216B.png differ diff --git a/fonts/MortalFont20/2170.png b/fonts/MortalFont20/2170.png new file mode 100644 index 000000000..57b35882d Binary files /dev/null and b/fonts/MortalFont20/2170.png differ diff --git a/fonts/MortalFont20/2171.png b/fonts/MortalFont20/2171.png new file mode 100644 index 000000000..24d50aa2f Binary files /dev/null and b/fonts/MortalFont20/2171.png differ diff --git a/fonts/MortalFont20/2172.png b/fonts/MortalFont20/2172.png new file mode 100644 index 000000000..68830281b Binary files /dev/null and b/fonts/MortalFont20/2172.png differ diff --git a/fonts/MortalFont20/2173.png b/fonts/MortalFont20/2173.png new file mode 100644 index 000000000..60e25aec2 Binary files /dev/null and b/fonts/MortalFont20/2173.png differ diff --git a/fonts/MortalFont20/2174.png b/fonts/MortalFont20/2174.png new file mode 100644 index 000000000..52c1165e0 Binary files /dev/null and b/fonts/MortalFont20/2174.png differ diff --git a/fonts/MortalFont20/2175.png b/fonts/MortalFont20/2175.png new file mode 100644 index 000000000..09afbf93a Binary files /dev/null and b/fonts/MortalFont20/2175.png differ diff --git a/fonts/MortalFont20/2176.png b/fonts/MortalFont20/2176.png new file mode 100644 index 000000000..40e9b608f Binary files /dev/null and b/fonts/MortalFont20/2176.png differ diff --git a/fonts/MortalFont20/2177.png b/fonts/MortalFont20/2177.png new file mode 100644 index 000000000..798e5cb4d Binary files /dev/null and b/fonts/MortalFont20/2177.png differ diff --git a/fonts/MortalFont20/2178.png b/fonts/MortalFont20/2178.png new file mode 100644 index 000000000..ab12c9314 Binary files /dev/null and b/fonts/MortalFont20/2178.png differ diff --git a/fonts/MortalFont20/2179.png b/fonts/MortalFont20/2179.png new file mode 100644 index 000000000..a5fe73e5d Binary files /dev/null and b/fonts/MortalFont20/2179.png differ diff --git a/fonts/MortalFont20/217A.png b/fonts/MortalFont20/217A.png new file mode 100644 index 000000000..752e92356 Binary files /dev/null and b/fonts/MortalFont20/217A.png differ diff --git a/fonts/MortalFont20/217B.png b/fonts/MortalFont20/217B.png new file mode 100644 index 000000000..e1b655604 Binary files /dev/null and b/fonts/MortalFont20/217B.png differ diff --git a/fonts/MortalFont20/2190.png b/fonts/MortalFont20/2190.png new file mode 100644 index 000000000..38b87cbba Binary files /dev/null and b/fonts/MortalFont20/2190.png differ diff --git a/fonts/MortalFont20/2191.png b/fonts/MortalFont20/2191.png new file mode 100644 index 000000000..0e83f6556 Binary files /dev/null and b/fonts/MortalFont20/2191.png differ diff --git a/fonts/MortalFont20/2192.png b/fonts/MortalFont20/2192.png new file mode 100644 index 000000000..9ffd9a23e Binary files /dev/null and b/fonts/MortalFont20/2192.png differ diff --git a/fonts/MortalFont20/2193.png b/fonts/MortalFont20/2193.png new file mode 100644 index 000000000..703ba9f06 Binary files /dev/null and b/fonts/MortalFont20/2193.png differ diff --git a/fonts/MortalFont20/2194.png b/fonts/MortalFont20/2194.png new file mode 100644 index 000000000..80646fd56 Binary files /dev/null and b/fonts/MortalFont20/2194.png differ diff --git a/fonts/MortalFont20/2196.png b/fonts/MortalFont20/2196.png new file mode 100644 index 000000000..d74e89b40 Binary files /dev/null and b/fonts/MortalFont20/2196.png differ diff --git a/fonts/MortalFont20/2197.png b/fonts/MortalFont20/2197.png new file mode 100644 index 000000000..92c87aeac Binary files /dev/null and b/fonts/MortalFont20/2197.png differ diff --git a/fonts/MortalFont20/2198.png b/fonts/MortalFont20/2198.png new file mode 100644 index 000000000..e71d4d286 Binary files /dev/null and b/fonts/MortalFont20/2198.png differ diff --git a/fonts/MortalFont20/2199.png b/fonts/MortalFont20/2199.png new file mode 100644 index 000000000..71cd9fbed Binary files /dev/null and b/fonts/MortalFont20/2199.png differ diff --git a/fonts/MortalFont20/21C4.png b/fonts/MortalFont20/21C4.png new file mode 100644 index 000000000..e9df4dd65 Binary files /dev/null and b/fonts/MortalFont20/21C4.png differ diff --git a/fonts/MortalFont20/21D2.png b/fonts/MortalFont20/21D2.png new file mode 100644 index 000000000..0f693a271 Binary files /dev/null and b/fonts/MortalFont20/21D2.png differ diff --git a/fonts/MortalFont20/21D4.png b/fonts/MortalFont20/21D4.png new file mode 100644 index 000000000..5a7fefc74 Binary files /dev/null and b/fonts/MortalFont20/21D4.png differ diff --git a/fonts/MortalFont20/21E6.png b/fonts/MortalFont20/21E6.png new file mode 100644 index 000000000..168e68feb Binary files /dev/null and b/fonts/MortalFont20/21E6.png differ diff --git a/fonts/MortalFont20/21E7.png b/fonts/MortalFont20/21E7.png new file mode 100644 index 000000000..350e9ffe4 Binary files /dev/null and b/fonts/MortalFont20/21E7.png differ diff --git a/fonts/MortalFont20/21E8.png b/fonts/MortalFont20/21E8.png new file mode 100644 index 000000000..37a11c619 Binary files /dev/null and b/fonts/MortalFont20/21E8.png differ diff --git a/fonts/MortalFont20/21E9.png b/fonts/MortalFont20/21E9.png new file mode 100644 index 000000000..87d2d24aa Binary files /dev/null and b/fonts/MortalFont20/21E9.png differ diff --git a/fonts/MortalFont20/2200.png b/fonts/MortalFont20/2200.png new file mode 100644 index 000000000..52fe8faba Binary files /dev/null and b/fonts/MortalFont20/2200.png differ diff --git a/fonts/MortalFont20/2202.png b/fonts/MortalFont20/2202.png new file mode 100644 index 000000000..82596098c Binary files /dev/null and b/fonts/MortalFont20/2202.png differ diff --git a/fonts/MortalFont20/2203.png b/fonts/MortalFont20/2203.png new file mode 100644 index 000000000..eabf15e75 Binary files /dev/null and b/fonts/MortalFont20/2203.png differ diff --git a/fonts/MortalFont20/2205.png b/fonts/MortalFont20/2205.png new file mode 100644 index 000000000..0bbcc23fe Binary files /dev/null and b/fonts/MortalFont20/2205.png differ diff --git a/fonts/MortalFont20/2207.png b/fonts/MortalFont20/2207.png new file mode 100644 index 000000000..398a5113d Binary files /dev/null and b/fonts/MortalFont20/2207.png differ diff --git a/fonts/MortalFont20/2208.png b/fonts/MortalFont20/2208.png new file mode 100644 index 000000000..f35446162 Binary files /dev/null and b/fonts/MortalFont20/2208.png differ diff --git a/fonts/MortalFont20/2209.png b/fonts/MortalFont20/2209.png new file mode 100644 index 000000000..6c62bd03e Binary files /dev/null and b/fonts/MortalFont20/2209.png differ diff --git a/fonts/MortalFont20/220B.png b/fonts/MortalFont20/220B.png new file mode 100644 index 000000000..1551d2dc5 Binary files /dev/null and b/fonts/MortalFont20/220B.png differ diff --git a/fonts/MortalFont20/2212.png b/fonts/MortalFont20/2212.png new file mode 100644 index 000000000..911d248a5 Binary files /dev/null and b/fonts/MortalFont20/2212.png differ diff --git a/fonts/MortalFont20/2213.png b/fonts/MortalFont20/2213.png new file mode 100644 index 000000000..f15ce303c Binary files /dev/null and b/fonts/MortalFont20/2213.png differ diff --git a/fonts/MortalFont20/221A.png b/fonts/MortalFont20/221A.png new file mode 100644 index 000000000..c67b11cc0 Binary files /dev/null and b/fonts/MortalFont20/221A.png differ diff --git a/fonts/MortalFont20/221D.png b/fonts/MortalFont20/221D.png new file mode 100644 index 000000000..158c36c71 Binary files /dev/null and b/fonts/MortalFont20/221D.png differ diff --git a/fonts/MortalFont20/221E.png b/fonts/MortalFont20/221E.png new file mode 100644 index 000000000..1e03a424d Binary files /dev/null and b/fonts/MortalFont20/221E.png differ diff --git a/fonts/MortalFont20/221F.png b/fonts/MortalFont20/221F.png new file mode 100644 index 000000000..7f8583faa Binary files /dev/null and b/fonts/MortalFont20/221F.png differ diff --git a/fonts/MortalFont20/2220.png b/fonts/MortalFont20/2220.png new file mode 100644 index 000000000..c231d0b49 Binary files /dev/null and b/fonts/MortalFont20/2220.png differ diff --git a/fonts/MortalFont20/2225.png b/fonts/MortalFont20/2225.png new file mode 100644 index 000000000..e0c6ea387 Binary files /dev/null and b/fonts/MortalFont20/2225.png differ diff --git a/fonts/MortalFont20/2226.png b/fonts/MortalFont20/2226.png new file mode 100644 index 000000000..7c63f07b2 Binary files /dev/null and b/fonts/MortalFont20/2226.png differ diff --git a/fonts/MortalFont20/2227.png b/fonts/MortalFont20/2227.png new file mode 100644 index 000000000..9eda62688 Binary files /dev/null and b/fonts/MortalFont20/2227.png differ diff --git a/fonts/MortalFont20/2228.png b/fonts/MortalFont20/2228.png new file mode 100644 index 000000000..45ec14acc Binary files /dev/null and b/fonts/MortalFont20/2228.png differ diff --git a/fonts/MortalFont20/2229.png b/fonts/MortalFont20/2229.png new file mode 100644 index 000000000..c80274122 Binary files /dev/null and b/fonts/MortalFont20/2229.png differ diff --git a/fonts/MortalFont20/222A.png b/fonts/MortalFont20/222A.png new file mode 100644 index 000000000..becab060b Binary files /dev/null and b/fonts/MortalFont20/222A.png differ diff --git a/fonts/MortalFont20/222B.png b/fonts/MortalFont20/222B.png new file mode 100644 index 000000000..0eace6e5f Binary files /dev/null and b/fonts/MortalFont20/222B.png differ diff --git a/fonts/MortalFont20/222C.png b/fonts/MortalFont20/222C.png new file mode 100644 index 000000000..20ff92d51 Binary files /dev/null and b/fonts/MortalFont20/222C.png differ diff --git a/fonts/MortalFont20/222E.png b/fonts/MortalFont20/222E.png new file mode 100644 index 000000000..c62da4c64 Binary files /dev/null and b/fonts/MortalFont20/222E.png differ diff --git a/fonts/MortalFont20/2234.png b/fonts/MortalFont20/2234.png new file mode 100644 index 000000000..95b8a6d9d Binary files /dev/null and b/fonts/MortalFont20/2234.png differ diff --git a/fonts/MortalFont20/2235.png b/fonts/MortalFont20/2235.png new file mode 100644 index 000000000..68acef1a5 Binary files /dev/null and b/fonts/MortalFont20/2235.png differ diff --git a/fonts/MortalFont20/223D.png b/fonts/MortalFont20/223D.png new file mode 100644 index 000000000..ab5ad3881 Binary files /dev/null and b/fonts/MortalFont20/223D.png differ diff --git a/fonts/MortalFont20/2243.png b/fonts/MortalFont20/2243.png new file mode 100644 index 000000000..3e1576b7e Binary files /dev/null and b/fonts/MortalFont20/2243.png differ diff --git a/fonts/MortalFont20/2245.png b/fonts/MortalFont20/2245.png new file mode 100644 index 000000000..023d93836 Binary files /dev/null and b/fonts/MortalFont20/2245.png differ diff --git a/fonts/MortalFont20/2248.png b/fonts/MortalFont20/2248.png new file mode 100644 index 000000000..f3a777a33 Binary files /dev/null and b/fonts/MortalFont20/2248.png differ diff --git a/fonts/MortalFont20/2252.png b/fonts/MortalFont20/2252.png new file mode 100644 index 000000000..c9da3889b Binary files /dev/null and b/fonts/MortalFont20/2252.png differ diff --git a/fonts/MortalFont20/2260.png b/fonts/MortalFont20/2260.png new file mode 100644 index 000000000..7fd99958a Binary files /dev/null and b/fonts/MortalFont20/2260.png differ diff --git a/fonts/MortalFont20/2261.png b/fonts/MortalFont20/2261.png new file mode 100644 index 000000000..73d42a6bd Binary files /dev/null and b/fonts/MortalFont20/2261.png differ diff --git a/fonts/MortalFont20/2262.png b/fonts/MortalFont20/2262.png new file mode 100644 index 000000000..5af1391da Binary files /dev/null and b/fonts/MortalFont20/2262.png differ diff --git a/fonts/MortalFont20/2266.png b/fonts/MortalFont20/2266.png new file mode 100644 index 000000000..fed13602c Binary files /dev/null and b/fonts/MortalFont20/2266.png differ diff --git a/fonts/MortalFont20/2267.png b/fonts/MortalFont20/2267.png new file mode 100644 index 000000000..1a0225d42 Binary files /dev/null and b/fonts/MortalFont20/2267.png differ diff --git a/fonts/MortalFont20/226A.png b/fonts/MortalFont20/226A.png new file mode 100644 index 000000000..4c724ee14 Binary files /dev/null and b/fonts/MortalFont20/226A.png differ diff --git a/fonts/MortalFont20/226B.png b/fonts/MortalFont20/226B.png new file mode 100644 index 000000000..d8a3e1565 Binary files /dev/null and b/fonts/MortalFont20/226B.png differ diff --git a/fonts/MortalFont20/2276.png b/fonts/MortalFont20/2276.png new file mode 100644 index 000000000..44c621f7b Binary files /dev/null and b/fonts/MortalFont20/2276.png differ diff --git a/fonts/MortalFont20/2277.png b/fonts/MortalFont20/2277.png new file mode 100644 index 000000000..e996a8ccd Binary files /dev/null and b/fonts/MortalFont20/2277.png differ diff --git a/fonts/MortalFont20/2282.png b/fonts/MortalFont20/2282.png new file mode 100644 index 000000000..8ad28c69c Binary files /dev/null and b/fonts/MortalFont20/2282.png differ diff --git a/fonts/MortalFont20/2283.png b/fonts/MortalFont20/2283.png new file mode 100644 index 000000000..6acbb24ce Binary files /dev/null and b/fonts/MortalFont20/2283.png differ diff --git a/fonts/MortalFont20/2284.png b/fonts/MortalFont20/2284.png new file mode 100644 index 000000000..7f293e686 Binary files /dev/null and b/fonts/MortalFont20/2284.png differ diff --git a/fonts/MortalFont20/2285.png b/fonts/MortalFont20/2285.png new file mode 100644 index 000000000..05fba1cec Binary files /dev/null and b/fonts/MortalFont20/2285.png differ diff --git a/fonts/MortalFont20/2286.png b/fonts/MortalFont20/2286.png new file mode 100644 index 000000000..586b2d24d Binary files /dev/null and b/fonts/MortalFont20/2286.png differ diff --git a/fonts/MortalFont20/2287.png b/fonts/MortalFont20/2287.png new file mode 100644 index 000000000..f50126dd6 Binary files /dev/null and b/fonts/MortalFont20/2287.png differ diff --git a/fonts/MortalFont20/228A.png b/fonts/MortalFont20/228A.png new file mode 100644 index 000000000..a8474b285 Binary files /dev/null and b/fonts/MortalFont20/228A.png differ diff --git a/fonts/MortalFont20/228B.png b/fonts/MortalFont20/228B.png new file mode 100644 index 000000000..fcc8e32af Binary files /dev/null and b/fonts/MortalFont20/228B.png differ diff --git a/fonts/MortalFont20/2295.png b/fonts/MortalFont20/2295.png new file mode 100644 index 000000000..69cb6dcf1 Binary files /dev/null and b/fonts/MortalFont20/2295.png differ diff --git a/fonts/MortalFont20/2296.png b/fonts/MortalFont20/2296.png new file mode 100644 index 000000000..47ac88436 Binary files /dev/null and b/fonts/MortalFont20/2296.png differ diff --git a/fonts/MortalFont20/2297.png b/fonts/MortalFont20/2297.png new file mode 100644 index 000000000..0a2fbcc91 Binary files /dev/null and b/fonts/MortalFont20/2297.png differ diff --git a/fonts/MortalFont20/22A5.png b/fonts/MortalFont20/22A5.png new file mode 100644 index 000000000..d989446ae Binary files /dev/null and b/fonts/MortalFont20/22A5.png differ diff --git a/fonts/MortalFont20/22BF.png b/fonts/MortalFont20/22BF.png new file mode 100644 index 000000000..477b70cb2 Binary files /dev/null and b/fonts/MortalFont20/22BF.png differ diff --git a/fonts/MortalFont20/22DA.png b/fonts/MortalFont20/22DA.png new file mode 100644 index 000000000..c3ec57c20 Binary files /dev/null and b/fonts/MortalFont20/22DA.png differ diff --git a/fonts/MortalFont20/22DB.png b/fonts/MortalFont20/22DB.png new file mode 100644 index 000000000..8278e81fd Binary files /dev/null and b/fonts/MortalFont20/22DB.png differ diff --git a/fonts/MortalFont20/2305.png b/fonts/MortalFont20/2305.png new file mode 100644 index 000000000..3c4912213 Binary files /dev/null and b/fonts/MortalFont20/2305.png differ diff --git a/fonts/MortalFont20/2306.png b/fonts/MortalFont20/2306.png new file mode 100644 index 000000000..88d14d60c Binary files /dev/null and b/fonts/MortalFont20/2306.png differ diff --git a/fonts/MortalFont20/2312.png b/fonts/MortalFont20/2312.png new file mode 100644 index 000000000..c46d4e1ca Binary files /dev/null and b/fonts/MortalFont20/2312.png differ diff --git a/fonts/MortalFont20/2318.png b/fonts/MortalFont20/2318.png new file mode 100644 index 000000000..ed09b707c Binary files /dev/null and b/fonts/MortalFont20/2318.png differ diff --git a/fonts/MortalFont20/23BE.png b/fonts/MortalFont20/23BE.png new file mode 100644 index 000000000..4489abb24 Binary files /dev/null and b/fonts/MortalFont20/23BE.png differ diff --git a/fonts/MortalFont20/23BF.png b/fonts/MortalFont20/23BF.png new file mode 100644 index 000000000..763c08481 Binary files /dev/null and b/fonts/MortalFont20/23BF.png differ diff --git a/fonts/MortalFont20/23C0.png b/fonts/MortalFont20/23C0.png new file mode 100644 index 000000000..d1993df3f Binary files /dev/null and b/fonts/MortalFont20/23C0.png differ diff --git a/fonts/MortalFont20/23C1.png b/fonts/MortalFont20/23C1.png new file mode 100644 index 000000000..744eed62a Binary files /dev/null and b/fonts/MortalFont20/23C1.png differ diff --git a/fonts/MortalFont20/23C2.png b/fonts/MortalFont20/23C2.png new file mode 100644 index 000000000..8e4c62ff6 Binary files /dev/null and b/fonts/MortalFont20/23C2.png differ diff --git a/fonts/MortalFont20/23C3.png b/fonts/MortalFont20/23C3.png new file mode 100644 index 000000000..b00b421b8 Binary files /dev/null and b/fonts/MortalFont20/23C3.png differ diff --git a/fonts/MortalFont20/23C4.png b/fonts/MortalFont20/23C4.png new file mode 100644 index 000000000..f66c05f7d Binary files /dev/null and b/fonts/MortalFont20/23C4.png differ diff --git a/fonts/MortalFont20/23C5.png b/fonts/MortalFont20/23C5.png new file mode 100644 index 000000000..9de5c9eff Binary files /dev/null and b/fonts/MortalFont20/23C5.png differ diff --git a/fonts/MortalFont20/23C6.png b/fonts/MortalFont20/23C6.png new file mode 100644 index 000000000..ececd7d3e Binary files /dev/null and b/fonts/MortalFont20/23C6.png differ diff --git a/fonts/MortalFont20/23C7.png b/fonts/MortalFont20/23C7.png new file mode 100644 index 000000000..f60fbf5c8 Binary files /dev/null and b/fonts/MortalFont20/23C7.png differ diff --git a/fonts/MortalFont20/23C8.png b/fonts/MortalFont20/23C8.png new file mode 100644 index 000000000..87015dfe8 Binary files /dev/null and b/fonts/MortalFont20/23C8.png differ diff --git a/fonts/MortalFont20/23C9.png b/fonts/MortalFont20/23C9.png new file mode 100644 index 000000000..99d319493 Binary files /dev/null and b/fonts/MortalFont20/23C9.png differ diff --git a/fonts/MortalFont20/23CA.png b/fonts/MortalFont20/23CA.png new file mode 100644 index 000000000..849b55ee3 Binary files /dev/null and b/fonts/MortalFont20/23CA.png differ diff --git a/fonts/MortalFont20/23CB.png b/fonts/MortalFont20/23CB.png new file mode 100644 index 000000000..7a247fb7f Binary files /dev/null and b/fonts/MortalFont20/23CB.png differ diff --git a/fonts/MortalFont20/23CC.png b/fonts/MortalFont20/23CC.png new file mode 100644 index 000000000..f6c0541f6 Binary files /dev/null and b/fonts/MortalFont20/23CC.png differ diff --git a/fonts/MortalFont20/23CE.png b/fonts/MortalFont20/23CE.png new file mode 100644 index 000000000..56c37b488 Binary files /dev/null and b/fonts/MortalFont20/23CE.png differ diff --git a/fonts/MortalFont20/2423.png b/fonts/MortalFont20/2423.png new file mode 100644 index 000000000..412917a09 Binary files /dev/null and b/fonts/MortalFont20/2423.png differ diff --git a/fonts/MortalFont20/2460.png b/fonts/MortalFont20/2460.png new file mode 100644 index 000000000..d2c15b215 Binary files /dev/null and b/fonts/MortalFont20/2460.png differ diff --git a/fonts/MortalFont20/2461.png b/fonts/MortalFont20/2461.png new file mode 100644 index 000000000..89509c0ec Binary files /dev/null and b/fonts/MortalFont20/2461.png differ diff --git a/fonts/MortalFont20/2462.png b/fonts/MortalFont20/2462.png new file mode 100644 index 000000000..10990c696 Binary files /dev/null and b/fonts/MortalFont20/2462.png differ diff --git a/fonts/MortalFont20/2463.png b/fonts/MortalFont20/2463.png new file mode 100644 index 000000000..1789a01d8 Binary files /dev/null and b/fonts/MortalFont20/2463.png differ diff --git a/fonts/MortalFont20/2464.png b/fonts/MortalFont20/2464.png new file mode 100644 index 000000000..1ec7caac6 Binary files /dev/null and b/fonts/MortalFont20/2464.png differ diff --git a/fonts/MortalFont20/2465.png b/fonts/MortalFont20/2465.png new file mode 100644 index 000000000..c080e94f3 Binary files /dev/null and b/fonts/MortalFont20/2465.png differ diff --git a/fonts/MortalFont20/2466.png b/fonts/MortalFont20/2466.png new file mode 100644 index 000000000..70ac34d43 Binary files /dev/null and b/fonts/MortalFont20/2466.png differ diff --git a/fonts/MortalFont20/2467.png b/fonts/MortalFont20/2467.png new file mode 100644 index 000000000..1b070ec51 Binary files /dev/null and b/fonts/MortalFont20/2467.png differ diff --git a/fonts/MortalFont20/2468.png b/fonts/MortalFont20/2468.png new file mode 100644 index 000000000..3ece26e51 Binary files /dev/null and b/fonts/MortalFont20/2468.png differ diff --git a/fonts/MortalFont20/2469.png b/fonts/MortalFont20/2469.png new file mode 100644 index 000000000..e5e79e74b Binary files /dev/null and b/fonts/MortalFont20/2469.png differ diff --git a/fonts/MortalFont20/246A.png b/fonts/MortalFont20/246A.png new file mode 100644 index 000000000..0cee49679 Binary files /dev/null and b/fonts/MortalFont20/246A.png differ diff --git a/fonts/MortalFont20/246B.png b/fonts/MortalFont20/246B.png new file mode 100644 index 000000000..9c5a3594a Binary files /dev/null and b/fonts/MortalFont20/246B.png differ diff --git a/fonts/MortalFont20/246C.png b/fonts/MortalFont20/246C.png new file mode 100644 index 000000000..f688f9156 Binary files /dev/null and b/fonts/MortalFont20/246C.png differ diff --git a/fonts/MortalFont20/246D.png b/fonts/MortalFont20/246D.png new file mode 100644 index 000000000..30089750d Binary files /dev/null and b/fonts/MortalFont20/246D.png differ diff --git a/fonts/MortalFont20/246E.png b/fonts/MortalFont20/246E.png new file mode 100644 index 000000000..69fc45b0f Binary files /dev/null and b/fonts/MortalFont20/246E.png differ diff --git a/fonts/MortalFont20/246F.png b/fonts/MortalFont20/246F.png new file mode 100644 index 000000000..eaf96615d Binary files /dev/null and b/fonts/MortalFont20/246F.png differ diff --git a/fonts/MortalFont20/2470.png b/fonts/MortalFont20/2470.png new file mode 100644 index 000000000..8f349c9dd Binary files /dev/null and b/fonts/MortalFont20/2470.png differ diff --git a/fonts/MortalFont20/2471.png b/fonts/MortalFont20/2471.png new file mode 100644 index 000000000..279202ac6 Binary files /dev/null and b/fonts/MortalFont20/2471.png differ diff --git a/fonts/MortalFont20/2472.png b/fonts/MortalFont20/2472.png new file mode 100644 index 000000000..afccad932 Binary files /dev/null and b/fonts/MortalFont20/2472.png differ diff --git a/fonts/MortalFont20/2473.png b/fonts/MortalFont20/2473.png new file mode 100644 index 000000000..f30b8e1b8 Binary files /dev/null and b/fonts/MortalFont20/2473.png differ diff --git a/fonts/MortalFont20/24D0.png b/fonts/MortalFont20/24D0.png new file mode 100644 index 000000000..6194f2893 Binary files /dev/null and b/fonts/MortalFont20/24D0.png differ diff --git a/fonts/MortalFont20/24D1.png b/fonts/MortalFont20/24D1.png new file mode 100644 index 000000000..70b9aea5e Binary files /dev/null and b/fonts/MortalFont20/24D1.png differ diff --git a/fonts/MortalFont20/24D2.png b/fonts/MortalFont20/24D2.png new file mode 100644 index 000000000..3828a5363 Binary files /dev/null and b/fonts/MortalFont20/24D2.png differ diff --git a/fonts/MortalFont20/24D3.png b/fonts/MortalFont20/24D3.png new file mode 100644 index 000000000..0b929d1d8 Binary files /dev/null and b/fonts/MortalFont20/24D3.png differ diff --git a/fonts/MortalFont20/24D4.png b/fonts/MortalFont20/24D4.png new file mode 100644 index 000000000..2cbc64192 Binary files /dev/null and b/fonts/MortalFont20/24D4.png differ diff --git a/fonts/MortalFont20/24D5.png b/fonts/MortalFont20/24D5.png new file mode 100644 index 000000000..6d246ff4f Binary files /dev/null and b/fonts/MortalFont20/24D5.png differ diff --git a/fonts/MortalFont20/24D6.png b/fonts/MortalFont20/24D6.png new file mode 100644 index 000000000..5a5bf69f5 Binary files /dev/null and b/fonts/MortalFont20/24D6.png differ diff --git a/fonts/MortalFont20/24D7.png b/fonts/MortalFont20/24D7.png new file mode 100644 index 000000000..3d4a5d3e1 Binary files /dev/null and b/fonts/MortalFont20/24D7.png differ diff --git a/fonts/MortalFont20/24D8.png b/fonts/MortalFont20/24D8.png new file mode 100644 index 000000000..2a0973d1c Binary files /dev/null and b/fonts/MortalFont20/24D8.png differ diff --git a/fonts/MortalFont20/24D9.png b/fonts/MortalFont20/24D9.png new file mode 100644 index 000000000..436cfbb0f Binary files /dev/null and b/fonts/MortalFont20/24D9.png differ diff --git a/fonts/MortalFont20/24DA.png b/fonts/MortalFont20/24DA.png new file mode 100644 index 000000000..60f855e63 Binary files /dev/null and b/fonts/MortalFont20/24DA.png differ diff --git a/fonts/MortalFont20/24DB.png b/fonts/MortalFont20/24DB.png new file mode 100644 index 000000000..bcf9be596 Binary files /dev/null and b/fonts/MortalFont20/24DB.png differ diff --git a/fonts/MortalFont20/24DC.png b/fonts/MortalFont20/24DC.png new file mode 100644 index 000000000..70fec6731 Binary files /dev/null and b/fonts/MortalFont20/24DC.png differ diff --git a/fonts/MortalFont20/24DD.png b/fonts/MortalFont20/24DD.png new file mode 100644 index 000000000..401c0206d Binary files /dev/null and b/fonts/MortalFont20/24DD.png differ diff --git a/fonts/MortalFont20/24DE.png b/fonts/MortalFont20/24DE.png new file mode 100644 index 000000000..4f7f10e91 Binary files /dev/null and b/fonts/MortalFont20/24DE.png differ diff --git a/fonts/MortalFont20/24DF.png b/fonts/MortalFont20/24DF.png new file mode 100644 index 000000000..461736877 Binary files /dev/null and b/fonts/MortalFont20/24DF.png differ diff --git a/fonts/MortalFont20/24E0.png b/fonts/MortalFont20/24E0.png new file mode 100644 index 000000000..490005f71 Binary files /dev/null and b/fonts/MortalFont20/24E0.png differ diff --git a/fonts/MortalFont20/24E1.png b/fonts/MortalFont20/24E1.png new file mode 100644 index 000000000..27a1600db Binary files /dev/null and b/fonts/MortalFont20/24E1.png differ diff --git a/fonts/MortalFont20/24E2.png b/fonts/MortalFont20/24E2.png new file mode 100644 index 000000000..6ca114a07 Binary files /dev/null and b/fonts/MortalFont20/24E2.png differ diff --git a/fonts/MortalFont20/24E3.png b/fonts/MortalFont20/24E3.png new file mode 100644 index 000000000..5ed2c39b6 Binary files /dev/null and b/fonts/MortalFont20/24E3.png differ diff --git a/fonts/MortalFont20/24E4.png b/fonts/MortalFont20/24E4.png new file mode 100644 index 000000000..f57c264c1 Binary files /dev/null and b/fonts/MortalFont20/24E4.png differ diff --git a/fonts/MortalFont20/24E5.png b/fonts/MortalFont20/24E5.png new file mode 100644 index 000000000..0580ff096 Binary files /dev/null and b/fonts/MortalFont20/24E5.png differ diff --git a/fonts/MortalFont20/24E6.png b/fonts/MortalFont20/24E6.png new file mode 100644 index 000000000..4a58c8df7 Binary files /dev/null and b/fonts/MortalFont20/24E6.png differ diff --git a/fonts/MortalFont20/24E7.png b/fonts/MortalFont20/24E7.png new file mode 100644 index 000000000..c9f78f790 Binary files /dev/null and b/fonts/MortalFont20/24E7.png differ diff --git a/fonts/MortalFont20/24E8.png b/fonts/MortalFont20/24E8.png new file mode 100644 index 000000000..c646d16d2 Binary files /dev/null and b/fonts/MortalFont20/24E8.png differ diff --git a/fonts/MortalFont20/24E9.png b/fonts/MortalFont20/24E9.png new file mode 100644 index 000000000..f81303792 Binary files /dev/null and b/fonts/MortalFont20/24E9.png differ diff --git a/fonts/MortalFont20/24EB.png b/fonts/MortalFont20/24EB.png new file mode 100644 index 000000000..826bf3dbf Binary files /dev/null and b/fonts/MortalFont20/24EB.png differ diff --git a/fonts/MortalFont20/24EC.png b/fonts/MortalFont20/24EC.png new file mode 100644 index 000000000..2e1fe180d Binary files /dev/null and b/fonts/MortalFont20/24EC.png differ diff --git a/fonts/MortalFont20/24ED.png b/fonts/MortalFont20/24ED.png new file mode 100644 index 000000000..98e83cb3a Binary files /dev/null and b/fonts/MortalFont20/24ED.png differ diff --git a/fonts/MortalFont20/24EE.png b/fonts/MortalFont20/24EE.png new file mode 100644 index 000000000..392b42415 Binary files /dev/null and b/fonts/MortalFont20/24EE.png differ diff --git a/fonts/MortalFont20/24EF.png b/fonts/MortalFont20/24EF.png new file mode 100644 index 000000000..197706c28 Binary files /dev/null and b/fonts/MortalFont20/24EF.png differ diff --git a/fonts/MortalFont20/24F0.png b/fonts/MortalFont20/24F0.png new file mode 100644 index 000000000..462ba52d7 Binary files /dev/null and b/fonts/MortalFont20/24F0.png differ diff --git a/fonts/MortalFont20/24F1.png b/fonts/MortalFont20/24F1.png new file mode 100644 index 000000000..98567e828 Binary files /dev/null and b/fonts/MortalFont20/24F1.png differ diff --git a/fonts/MortalFont20/24F2.png b/fonts/MortalFont20/24F2.png new file mode 100644 index 000000000..c3771b344 Binary files /dev/null and b/fonts/MortalFont20/24F2.png differ diff --git a/fonts/MortalFont20/24F3.png b/fonts/MortalFont20/24F3.png new file mode 100644 index 000000000..20bc4847f Binary files /dev/null and b/fonts/MortalFont20/24F3.png differ diff --git a/fonts/MortalFont20/24F4.png b/fonts/MortalFont20/24F4.png new file mode 100644 index 000000000..15bf6d923 Binary files /dev/null and b/fonts/MortalFont20/24F4.png differ diff --git a/fonts/MortalFont20/24F5.png b/fonts/MortalFont20/24F5.png new file mode 100644 index 000000000..0df425d95 Binary files /dev/null and b/fonts/MortalFont20/24F5.png differ diff --git a/fonts/MortalFont20/24F6.png b/fonts/MortalFont20/24F6.png new file mode 100644 index 000000000..210c7138d Binary files /dev/null and b/fonts/MortalFont20/24F6.png differ diff --git a/fonts/MortalFont20/24F7.png b/fonts/MortalFont20/24F7.png new file mode 100644 index 000000000..a0f082a1d Binary files /dev/null and b/fonts/MortalFont20/24F7.png differ diff --git a/fonts/MortalFont20/24F8.png b/fonts/MortalFont20/24F8.png new file mode 100644 index 000000000..4efd30b0d Binary files /dev/null and b/fonts/MortalFont20/24F8.png differ diff --git a/fonts/MortalFont20/24F9.png b/fonts/MortalFont20/24F9.png new file mode 100644 index 000000000..ecbabd774 Binary files /dev/null and b/fonts/MortalFont20/24F9.png differ diff --git a/fonts/MortalFont20/24FA.png b/fonts/MortalFont20/24FA.png new file mode 100644 index 000000000..6dfcd5b69 Binary files /dev/null and b/fonts/MortalFont20/24FA.png differ diff --git a/fonts/MortalFont20/24FB.png b/fonts/MortalFont20/24FB.png new file mode 100644 index 000000000..869e54403 Binary files /dev/null and b/fonts/MortalFont20/24FB.png differ diff --git a/fonts/MortalFont20/24FC.png b/fonts/MortalFont20/24FC.png new file mode 100644 index 000000000..2b4d390af Binary files /dev/null and b/fonts/MortalFont20/24FC.png differ diff --git a/fonts/MortalFont20/24FD.png b/fonts/MortalFont20/24FD.png new file mode 100644 index 000000000..22ce6691f Binary files /dev/null and b/fonts/MortalFont20/24FD.png differ diff --git a/fonts/MortalFont20/24FE.png b/fonts/MortalFont20/24FE.png new file mode 100644 index 000000000..6b9f99993 Binary files /dev/null and b/fonts/MortalFont20/24FE.png differ diff --git a/fonts/MortalFont20/2500.png b/fonts/MortalFont20/2500.png new file mode 100644 index 000000000..63707524e Binary files /dev/null and b/fonts/MortalFont20/2500.png differ diff --git a/fonts/MortalFont20/2501.png b/fonts/MortalFont20/2501.png new file mode 100644 index 000000000..1a0b76320 Binary files /dev/null and b/fonts/MortalFont20/2501.png differ diff --git a/fonts/MortalFont20/2502.png b/fonts/MortalFont20/2502.png new file mode 100644 index 000000000..5c519906c Binary files /dev/null and b/fonts/MortalFont20/2502.png differ diff --git a/fonts/MortalFont20/2503.png b/fonts/MortalFont20/2503.png new file mode 100644 index 000000000..83fabfbcd Binary files /dev/null and b/fonts/MortalFont20/2503.png differ diff --git a/fonts/MortalFont20/250C.png b/fonts/MortalFont20/250C.png new file mode 100644 index 000000000..eca06ff1b Binary files /dev/null and b/fonts/MortalFont20/250C.png differ diff --git a/fonts/MortalFont20/250F.png b/fonts/MortalFont20/250F.png new file mode 100644 index 000000000..a4f2a2a11 Binary files /dev/null and b/fonts/MortalFont20/250F.png differ diff --git a/fonts/MortalFont20/2510.png b/fonts/MortalFont20/2510.png new file mode 100644 index 000000000..fa80666d6 Binary files /dev/null and b/fonts/MortalFont20/2510.png differ diff --git a/fonts/MortalFont20/2513.png b/fonts/MortalFont20/2513.png new file mode 100644 index 000000000..64a415d4e Binary files /dev/null and b/fonts/MortalFont20/2513.png differ diff --git a/fonts/MortalFont20/2514.png b/fonts/MortalFont20/2514.png new file mode 100644 index 000000000..405231397 Binary files /dev/null and b/fonts/MortalFont20/2514.png differ diff --git a/fonts/MortalFont20/2517.png b/fonts/MortalFont20/2517.png new file mode 100644 index 000000000..82a8fe5b4 Binary files /dev/null and b/fonts/MortalFont20/2517.png differ diff --git a/fonts/MortalFont20/2518.png b/fonts/MortalFont20/2518.png new file mode 100644 index 000000000..9bcb3fe3f Binary files /dev/null and b/fonts/MortalFont20/2518.png differ diff --git a/fonts/MortalFont20/251B.png b/fonts/MortalFont20/251B.png new file mode 100644 index 000000000..6cf5d5f93 Binary files /dev/null and b/fonts/MortalFont20/251B.png differ diff --git a/fonts/MortalFont20/251C.png b/fonts/MortalFont20/251C.png new file mode 100644 index 000000000..d4643d043 Binary files /dev/null and b/fonts/MortalFont20/251C.png differ diff --git a/fonts/MortalFont20/251D.png b/fonts/MortalFont20/251D.png new file mode 100644 index 000000000..e69811c8c Binary files /dev/null and b/fonts/MortalFont20/251D.png differ diff --git a/fonts/MortalFont20/2520.png b/fonts/MortalFont20/2520.png new file mode 100644 index 000000000..0b25c4e76 Binary files /dev/null and b/fonts/MortalFont20/2520.png differ diff --git a/fonts/MortalFont20/2523.png b/fonts/MortalFont20/2523.png new file mode 100644 index 000000000..3d91153d8 Binary files /dev/null and b/fonts/MortalFont20/2523.png differ diff --git a/fonts/MortalFont20/2524.png b/fonts/MortalFont20/2524.png new file mode 100644 index 000000000..741616495 Binary files /dev/null and b/fonts/MortalFont20/2524.png differ diff --git a/fonts/MortalFont20/2525.png b/fonts/MortalFont20/2525.png new file mode 100644 index 000000000..9ec18b091 Binary files /dev/null and b/fonts/MortalFont20/2525.png differ diff --git a/fonts/MortalFont20/2528.png b/fonts/MortalFont20/2528.png new file mode 100644 index 000000000..fb1a87a8a Binary files /dev/null and b/fonts/MortalFont20/2528.png differ diff --git a/fonts/MortalFont20/252B.png b/fonts/MortalFont20/252B.png new file mode 100644 index 000000000..cd1f68f31 Binary files /dev/null and b/fonts/MortalFont20/252B.png differ diff --git a/fonts/MortalFont20/252C.png b/fonts/MortalFont20/252C.png new file mode 100644 index 000000000..4de86e6cf Binary files /dev/null and b/fonts/MortalFont20/252C.png differ diff --git a/fonts/MortalFont20/252F.png b/fonts/MortalFont20/252F.png new file mode 100644 index 000000000..70e1c526a Binary files /dev/null and b/fonts/MortalFont20/252F.png differ diff --git a/fonts/MortalFont20/2530.png b/fonts/MortalFont20/2530.png new file mode 100644 index 000000000..020a6f592 Binary files /dev/null and b/fonts/MortalFont20/2530.png differ diff --git a/fonts/MortalFont20/2533.png b/fonts/MortalFont20/2533.png new file mode 100644 index 000000000..09fddf34c Binary files /dev/null and b/fonts/MortalFont20/2533.png differ diff --git a/fonts/MortalFont20/2534.png b/fonts/MortalFont20/2534.png new file mode 100644 index 000000000..dccfcba24 Binary files /dev/null and b/fonts/MortalFont20/2534.png differ diff --git a/fonts/MortalFont20/2537.png b/fonts/MortalFont20/2537.png new file mode 100644 index 000000000..fadb7e19d Binary files /dev/null and b/fonts/MortalFont20/2537.png differ diff --git a/fonts/MortalFont20/2538.png b/fonts/MortalFont20/2538.png new file mode 100644 index 000000000..5d047a83f Binary files /dev/null and b/fonts/MortalFont20/2538.png differ diff --git a/fonts/MortalFont20/253B.png b/fonts/MortalFont20/253B.png new file mode 100644 index 000000000..eb4d378a1 Binary files /dev/null and b/fonts/MortalFont20/253B.png differ diff --git a/fonts/MortalFont20/253C.png b/fonts/MortalFont20/253C.png new file mode 100644 index 000000000..6a674acee Binary files /dev/null and b/fonts/MortalFont20/253C.png differ diff --git a/fonts/MortalFont20/253F.png b/fonts/MortalFont20/253F.png new file mode 100644 index 000000000..3a734d3a7 Binary files /dev/null and b/fonts/MortalFont20/253F.png differ diff --git a/fonts/MortalFont20/2542.png b/fonts/MortalFont20/2542.png new file mode 100644 index 000000000..e28cf0a54 Binary files /dev/null and b/fonts/MortalFont20/2542.png differ diff --git a/fonts/MortalFont20/254B.png b/fonts/MortalFont20/254B.png new file mode 100644 index 000000000..fc1041877 Binary files /dev/null and b/fonts/MortalFont20/254B.png differ diff --git a/fonts/MortalFont20/25A0.png b/fonts/MortalFont20/25A0.png new file mode 100644 index 000000000..cd60554b5 Binary files /dev/null and b/fonts/MortalFont20/25A0.png differ diff --git a/fonts/MortalFont20/25A1.png b/fonts/MortalFont20/25A1.png new file mode 100644 index 000000000..1f832b56e Binary files /dev/null and b/fonts/MortalFont20/25A1.png differ diff --git a/fonts/MortalFont20/25B1.png b/fonts/MortalFont20/25B1.png new file mode 100644 index 000000000..26d45b340 Binary files /dev/null and b/fonts/MortalFont20/25B1.png differ diff --git a/fonts/MortalFont20/25B2.png b/fonts/MortalFont20/25B2.png new file mode 100644 index 000000000..f7a19df96 Binary files /dev/null and b/fonts/MortalFont20/25B2.png differ diff --git a/fonts/MortalFont20/25B3.png b/fonts/MortalFont20/25B3.png new file mode 100644 index 000000000..eac225537 Binary files /dev/null and b/fonts/MortalFont20/25B3.png differ diff --git a/fonts/MortalFont20/25B6.png b/fonts/MortalFont20/25B6.png new file mode 100644 index 000000000..026d1d7f0 Binary files /dev/null and b/fonts/MortalFont20/25B6.png differ diff --git a/fonts/MortalFont20/25B7.png b/fonts/MortalFont20/25B7.png new file mode 100644 index 000000000..4f53b3936 Binary files /dev/null and b/fonts/MortalFont20/25B7.png differ diff --git a/fonts/MortalFont20/25BC.png b/fonts/MortalFont20/25BC.png new file mode 100644 index 000000000..3091fa4bb Binary files /dev/null and b/fonts/MortalFont20/25BC.png differ diff --git a/fonts/MortalFont20/25BD.png b/fonts/MortalFont20/25BD.png new file mode 100644 index 000000000..66f2fe996 Binary files /dev/null and b/fonts/MortalFont20/25BD.png differ diff --git a/fonts/MortalFont20/25C0.png b/fonts/MortalFont20/25C0.png new file mode 100644 index 000000000..c65d8b3a8 Binary files /dev/null and b/fonts/MortalFont20/25C0.png differ diff --git a/fonts/MortalFont20/25C1.png b/fonts/MortalFont20/25C1.png new file mode 100644 index 000000000..3ec6b261e Binary files /dev/null and b/fonts/MortalFont20/25C1.png differ diff --git a/fonts/MortalFont20/25C6.png b/fonts/MortalFont20/25C6.png new file mode 100644 index 000000000..9a0fb9ee8 Binary files /dev/null and b/fonts/MortalFont20/25C6.png differ diff --git a/fonts/MortalFont20/25C7.png b/fonts/MortalFont20/25C7.png new file mode 100644 index 000000000..8526b2f36 Binary files /dev/null and b/fonts/MortalFont20/25C7.png differ diff --git a/fonts/MortalFont20/25C9.png b/fonts/MortalFont20/25C9.png new file mode 100644 index 000000000..e9ba08662 Binary files /dev/null and b/fonts/MortalFont20/25C9.png differ diff --git a/fonts/MortalFont20/25CB.png b/fonts/MortalFont20/25CB.png new file mode 100644 index 000000000..9324f2e8e Binary files /dev/null and b/fonts/MortalFont20/25CB.png differ diff --git a/fonts/MortalFont20/25CE.png b/fonts/MortalFont20/25CE.png new file mode 100644 index 000000000..f631d0f90 Binary files /dev/null and b/fonts/MortalFont20/25CE.png differ diff --git a/fonts/MortalFont20/25CF.png b/fonts/MortalFont20/25CF.png new file mode 100644 index 000000000..a1bb8fa2e Binary files /dev/null and b/fonts/MortalFont20/25CF.png differ diff --git a/fonts/MortalFont20/25D0.png b/fonts/MortalFont20/25D0.png new file mode 100644 index 000000000..7028352c3 Binary files /dev/null and b/fonts/MortalFont20/25D0.png differ diff --git a/fonts/MortalFont20/25D1.png b/fonts/MortalFont20/25D1.png new file mode 100644 index 000000000..33ecab167 Binary files /dev/null and b/fonts/MortalFont20/25D1.png differ diff --git a/fonts/MortalFont20/25D2.png b/fonts/MortalFont20/25D2.png new file mode 100644 index 000000000..81c845d57 Binary files /dev/null and b/fonts/MortalFont20/25D2.png differ diff --git a/fonts/MortalFont20/25D3.png b/fonts/MortalFont20/25D3.png new file mode 100644 index 000000000..25b2c09ad Binary files /dev/null and b/fonts/MortalFont20/25D3.png differ diff --git a/fonts/MortalFont20/25E6.png b/fonts/MortalFont20/25E6.png new file mode 100644 index 000000000..27f4850a7 Binary files /dev/null and b/fonts/MortalFont20/25E6.png differ diff --git a/fonts/MortalFont20/25EF.png b/fonts/MortalFont20/25EF.png new file mode 100644 index 000000000..d7f8f5028 Binary files /dev/null and b/fonts/MortalFont20/25EF.png differ diff --git a/fonts/MortalFont20/2600.png b/fonts/MortalFont20/2600.png new file mode 100644 index 000000000..946cf906b Binary files /dev/null and b/fonts/MortalFont20/2600.png differ diff --git a/fonts/MortalFont20/2601.png b/fonts/MortalFont20/2601.png new file mode 100644 index 000000000..288b160ca Binary files /dev/null and b/fonts/MortalFont20/2601.png differ diff --git a/fonts/MortalFont20/2602.png b/fonts/MortalFont20/2602.png new file mode 100644 index 000000000..173e74f00 Binary files /dev/null and b/fonts/MortalFont20/2602.png differ diff --git a/fonts/MortalFont20/2603.png b/fonts/MortalFont20/2603.png new file mode 100644 index 000000000..524c2b7b0 Binary files /dev/null and b/fonts/MortalFont20/2603.png differ diff --git a/fonts/MortalFont20/2605.png b/fonts/MortalFont20/2605.png new file mode 100644 index 000000000..b2ea038cd Binary files /dev/null and b/fonts/MortalFont20/2605.png differ diff --git a/fonts/MortalFont20/2606.png b/fonts/MortalFont20/2606.png new file mode 100644 index 000000000..6f838cabf Binary files /dev/null and b/fonts/MortalFont20/2606.png differ diff --git a/fonts/MortalFont20/260E.png b/fonts/MortalFont20/260E.png new file mode 100644 index 000000000..94b0031f3 Binary files /dev/null and b/fonts/MortalFont20/260E.png differ diff --git a/fonts/MortalFont20/2616.png b/fonts/MortalFont20/2616.png new file mode 100644 index 000000000..6c03b37dd Binary files /dev/null and b/fonts/MortalFont20/2616.png differ diff --git a/fonts/MortalFont20/2617.png b/fonts/MortalFont20/2617.png new file mode 100644 index 000000000..099eeb638 Binary files /dev/null and b/fonts/MortalFont20/2617.png differ diff --git a/fonts/MortalFont20/261E.png b/fonts/MortalFont20/261E.png new file mode 100644 index 000000000..f1d840b6e Binary files /dev/null and b/fonts/MortalFont20/261E.png differ diff --git a/fonts/MortalFont20/2640.png b/fonts/MortalFont20/2640.png new file mode 100644 index 000000000..7c0643669 Binary files /dev/null and b/fonts/MortalFont20/2640.png differ diff --git a/fonts/MortalFont20/2642.png b/fonts/MortalFont20/2642.png new file mode 100644 index 000000000..f9d35c00c Binary files /dev/null and b/fonts/MortalFont20/2642.png differ diff --git a/fonts/MortalFont20/2660.png b/fonts/MortalFont20/2660.png new file mode 100644 index 000000000..56a874b76 Binary files /dev/null and b/fonts/MortalFont20/2660.png differ diff --git a/fonts/MortalFont20/2661.png b/fonts/MortalFont20/2661.png new file mode 100644 index 000000000..f59e292a2 Binary files /dev/null and b/fonts/MortalFont20/2661.png differ diff --git a/fonts/MortalFont20/2662.png b/fonts/MortalFont20/2662.png new file mode 100644 index 000000000..6cccc8d23 Binary files /dev/null and b/fonts/MortalFont20/2662.png differ diff --git a/fonts/MortalFont20/2663.png b/fonts/MortalFont20/2663.png new file mode 100644 index 000000000..411c880e5 Binary files /dev/null and b/fonts/MortalFont20/2663.png differ diff --git a/fonts/MortalFont20/2664.png b/fonts/MortalFont20/2664.png new file mode 100644 index 000000000..72f28d408 Binary files /dev/null and b/fonts/MortalFont20/2664.png differ diff --git a/fonts/MortalFont20/2665.png b/fonts/MortalFont20/2665.png new file mode 100644 index 000000000..8808f30b3 Binary files /dev/null and b/fonts/MortalFont20/2665.png differ diff --git a/fonts/MortalFont20/2666.png b/fonts/MortalFont20/2666.png new file mode 100644 index 000000000..22450ecd0 Binary files /dev/null and b/fonts/MortalFont20/2666.png differ diff --git a/fonts/MortalFont20/2667.png b/fonts/MortalFont20/2667.png new file mode 100644 index 000000000..b8d2d3dfd Binary files /dev/null and b/fonts/MortalFont20/2667.png differ diff --git a/fonts/MortalFont20/2668.png b/fonts/MortalFont20/2668.png new file mode 100644 index 000000000..f10209b01 Binary files /dev/null and b/fonts/MortalFont20/2668.png differ diff --git a/fonts/MortalFont20/2669.png b/fonts/MortalFont20/2669.png new file mode 100644 index 000000000..0432bc147 Binary files /dev/null and b/fonts/MortalFont20/2669.png differ diff --git a/fonts/MortalFont20/266A.png b/fonts/MortalFont20/266A.png new file mode 100644 index 000000000..869c2ff31 Binary files /dev/null and b/fonts/MortalFont20/266A.png differ diff --git a/fonts/MortalFont20/266B.png b/fonts/MortalFont20/266B.png new file mode 100644 index 000000000..ec4a3484e Binary files /dev/null and b/fonts/MortalFont20/266B.png differ diff --git a/fonts/MortalFont20/266C.png b/fonts/MortalFont20/266C.png new file mode 100644 index 000000000..fc06612ed Binary files /dev/null and b/fonts/MortalFont20/266C.png differ diff --git a/fonts/MortalFont20/266D.png b/fonts/MortalFont20/266D.png new file mode 100644 index 000000000..5f87c6ee5 Binary files /dev/null and b/fonts/MortalFont20/266D.png differ diff --git a/fonts/MortalFont20/266E.png b/fonts/MortalFont20/266E.png new file mode 100644 index 000000000..ee4f3e856 Binary files /dev/null and b/fonts/MortalFont20/266E.png differ diff --git a/fonts/MortalFont20/266F.png b/fonts/MortalFont20/266F.png new file mode 100644 index 000000000..879dae11f Binary files /dev/null and b/fonts/MortalFont20/266F.png differ diff --git a/fonts/MortalFont20/2713.png b/fonts/MortalFont20/2713.png new file mode 100644 index 000000000..5ded341c2 Binary files /dev/null and b/fonts/MortalFont20/2713.png differ diff --git a/fonts/MortalFont20/2756.png b/fonts/MortalFont20/2756.png new file mode 100644 index 000000000..9defbd8ec Binary files /dev/null and b/fonts/MortalFont20/2756.png differ diff --git a/fonts/MortalFont20/2776.png b/fonts/MortalFont20/2776.png new file mode 100644 index 000000000..326c8b3c1 Binary files /dev/null and b/fonts/MortalFont20/2776.png differ diff --git a/fonts/MortalFont20/2777.png b/fonts/MortalFont20/2777.png new file mode 100644 index 000000000..81593fde9 Binary files /dev/null and b/fonts/MortalFont20/2777.png differ diff --git a/fonts/MortalFont20/2778.png b/fonts/MortalFont20/2778.png new file mode 100644 index 000000000..12354bfea Binary files /dev/null and b/fonts/MortalFont20/2778.png differ diff --git a/fonts/MortalFont20/2779.png b/fonts/MortalFont20/2779.png new file mode 100644 index 000000000..8a84a87f7 Binary files /dev/null and b/fonts/MortalFont20/2779.png differ diff --git a/fonts/MortalFont20/277A.png b/fonts/MortalFont20/277A.png new file mode 100644 index 000000000..fe76cd9b8 Binary files /dev/null and b/fonts/MortalFont20/277A.png differ diff --git a/fonts/MortalFont20/277B.png b/fonts/MortalFont20/277B.png new file mode 100644 index 000000000..134cec305 Binary files /dev/null and b/fonts/MortalFont20/277B.png differ diff --git a/fonts/MortalFont20/277C.png b/fonts/MortalFont20/277C.png new file mode 100644 index 000000000..ddc203302 Binary files /dev/null and b/fonts/MortalFont20/277C.png differ diff --git a/fonts/MortalFont20/277D.png b/fonts/MortalFont20/277D.png new file mode 100644 index 000000000..c28f55f6c Binary files /dev/null and b/fonts/MortalFont20/277D.png differ diff --git a/fonts/MortalFont20/277E.png b/fonts/MortalFont20/277E.png new file mode 100644 index 000000000..b36df647c Binary files /dev/null and b/fonts/MortalFont20/277E.png differ diff --git a/fonts/MortalFont20/277F.png b/fonts/MortalFont20/277F.png new file mode 100644 index 000000000..4e285a2cc Binary files /dev/null and b/fonts/MortalFont20/277F.png differ diff --git a/fonts/MortalFont20/2934.png b/fonts/MortalFont20/2934.png new file mode 100644 index 000000000..ce18f06b1 Binary files /dev/null and b/fonts/MortalFont20/2934.png differ diff --git a/fonts/MortalFont20/2935.png b/fonts/MortalFont20/2935.png new file mode 100644 index 000000000..4469fe22a Binary files /dev/null and b/fonts/MortalFont20/2935.png differ diff --git a/fonts/MortalFont20/29BF.png b/fonts/MortalFont20/29BF.png new file mode 100644 index 000000000..ea9e82673 Binary files /dev/null and b/fonts/MortalFont20/29BF.png differ diff --git a/fonts/MortalFont20/29FA.png b/fonts/MortalFont20/29FA.png new file mode 100644 index 000000000..569699837 Binary files /dev/null and b/fonts/MortalFont20/29FA.png differ diff --git a/fonts/MortalFont20/29FB.png b/fonts/MortalFont20/29FB.png new file mode 100644 index 000000000..e1dbf6bce Binary files /dev/null and b/fonts/MortalFont20/29FB.png differ diff --git a/fonts/MortalFont20/FF01.png b/fonts/MortalFont20/FF01.png new file mode 100644 index 000000000..bc5c4a686 Binary files /dev/null and b/fonts/MortalFont20/FF01.png differ diff --git a/fonts/MortalFont20/FF02.png b/fonts/MortalFont20/FF02.png new file mode 100644 index 000000000..51e879ff6 Binary files /dev/null and b/fonts/MortalFont20/FF02.png differ diff --git a/fonts/MortalFont20/FF03.png b/fonts/MortalFont20/FF03.png new file mode 100644 index 000000000..446d17900 Binary files /dev/null and b/fonts/MortalFont20/FF03.png differ diff --git a/fonts/MortalFont20/FF04.png b/fonts/MortalFont20/FF04.png new file mode 100644 index 000000000..41e9b9b82 Binary files /dev/null and b/fonts/MortalFont20/FF04.png differ diff --git a/fonts/MortalFont20/FF05.png b/fonts/MortalFont20/FF05.png new file mode 100644 index 000000000..e0266cefd Binary files /dev/null and b/fonts/MortalFont20/FF05.png differ diff --git a/fonts/MortalFont20/FF06.png b/fonts/MortalFont20/FF06.png new file mode 100644 index 000000000..13d29c306 Binary files /dev/null and b/fonts/MortalFont20/FF06.png differ diff --git a/fonts/MortalFont20/FF07.png b/fonts/MortalFont20/FF07.png new file mode 100644 index 000000000..5c2440d57 Binary files /dev/null and b/fonts/MortalFont20/FF07.png differ diff --git a/fonts/MortalFont20/FF08.png b/fonts/MortalFont20/FF08.png new file mode 100644 index 000000000..9380f859e Binary files /dev/null and b/fonts/MortalFont20/FF08.png differ diff --git a/fonts/MortalFont20/FF09.png b/fonts/MortalFont20/FF09.png new file mode 100644 index 000000000..e619729b3 Binary files /dev/null and b/fonts/MortalFont20/FF09.png differ diff --git a/fonts/MortalFont20/FF0A.png b/fonts/MortalFont20/FF0A.png new file mode 100644 index 000000000..2dfbc19ff Binary files /dev/null and b/fonts/MortalFont20/FF0A.png differ diff --git a/fonts/MortalFont20/FF0B.png b/fonts/MortalFont20/FF0B.png new file mode 100644 index 000000000..79fd9244f Binary files /dev/null and b/fonts/MortalFont20/FF0B.png differ diff --git a/fonts/MortalFont20/FF0C.png b/fonts/MortalFont20/FF0C.png new file mode 100644 index 000000000..dd2b8f869 Binary files /dev/null and b/fonts/MortalFont20/FF0C.png differ diff --git a/fonts/MortalFont20/FF0D.png b/fonts/MortalFont20/FF0D.png new file mode 100644 index 000000000..ec39978f4 Binary files /dev/null and b/fonts/MortalFont20/FF0D.png differ diff --git a/fonts/MortalFont20/FF0E.png b/fonts/MortalFont20/FF0E.png new file mode 100644 index 000000000..758ce6e30 Binary files /dev/null and b/fonts/MortalFont20/FF0E.png differ diff --git a/fonts/MortalFont20/FF0F.png b/fonts/MortalFont20/FF0F.png new file mode 100644 index 000000000..ad4fbcbca Binary files /dev/null and b/fonts/MortalFont20/FF0F.png differ diff --git a/fonts/MortalFont20/FF10.png b/fonts/MortalFont20/FF10.png new file mode 100644 index 000000000..7519ff2ce Binary files /dev/null and b/fonts/MortalFont20/FF10.png differ diff --git a/fonts/MortalFont20/FF11.png b/fonts/MortalFont20/FF11.png new file mode 100644 index 000000000..b7e1da60f Binary files /dev/null and b/fonts/MortalFont20/FF11.png differ diff --git a/fonts/MortalFont20/FF12.png b/fonts/MortalFont20/FF12.png new file mode 100644 index 000000000..096e0b17f Binary files /dev/null and b/fonts/MortalFont20/FF12.png differ diff --git a/fonts/MortalFont20/FF13.png b/fonts/MortalFont20/FF13.png new file mode 100644 index 000000000..71b45bc2f Binary files /dev/null and b/fonts/MortalFont20/FF13.png differ diff --git a/fonts/MortalFont20/FF14.png b/fonts/MortalFont20/FF14.png new file mode 100644 index 000000000..96c516901 Binary files /dev/null and b/fonts/MortalFont20/FF14.png differ diff --git a/fonts/MortalFont20/FF15.png b/fonts/MortalFont20/FF15.png new file mode 100644 index 000000000..730824dfa Binary files /dev/null and b/fonts/MortalFont20/FF15.png differ diff --git a/fonts/MortalFont20/FF16.png b/fonts/MortalFont20/FF16.png new file mode 100644 index 000000000..35ba6bb14 Binary files /dev/null and b/fonts/MortalFont20/FF16.png differ diff --git a/fonts/MortalFont20/FF17.png b/fonts/MortalFont20/FF17.png new file mode 100644 index 000000000..f8d8f0df7 Binary files /dev/null and b/fonts/MortalFont20/FF17.png differ diff --git a/fonts/MortalFont20/FF18.png b/fonts/MortalFont20/FF18.png new file mode 100644 index 000000000..c2a372af0 Binary files /dev/null and b/fonts/MortalFont20/FF18.png differ diff --git a/fonts/MortalFont20/FF19.png b/fonts/MortalFont20/FF19.png new file mode 100644 index 000000000..9b2343170 Binary files /dev/null and b/fonts/MortalFont20/FF19.png differ diff --git a/fonts/MortalFont20/FF1A.png b/fonts/MortalFont20/FF1A.png new file mode 100644 index 000000000..463f02d33 Binary files /dev/null and b/fonts/MortalFont20/FF1A.png differ diff --git a/fonts/MortalFont20/FF1B.png b/fonts/MortalFont20/FF1B.png new file mode 100644 index 000000000..5decda3f3 Binary files /dev/null and b/fonts/MortalFont20/FF1B.png differ diff --git a/fonts/MortalFont20/FF1C.png b/fonts/MortalFont20/FF1C.png new file mode 100644 index 000000000..6d257ed01 Binary files /dev/null and b/fonts/MortalFont20/FF1C.png differ diff --git a/fonts/MortalFont20/FF1D.png b/fonts/MortalFont20/FF1D.png new file mode 100644 index 000000000..59b82b6ff Binary files /dev/null and b/fonts/MortalFont20/FF1D.png differ diff --git a/fonts/MortalFont20/FF1E.png b/fonts/MortalFont20/FF1E.png new file mode 100644 index 000000000..73626ccaf Binary files /dev/null and b/fonts/MortalFont20/FF1E.png differ diff --git a/fonts/MortalFont20/FF1F.png b/fonts/MortalFont20/FF1F.png new file mode 100644 index 000000000..c91474b45 Binary files /dev/null and b/fonts/MortalFont20/FF1F.png differ diff --git a/fonts/MortalFont20/FF20.png b/fonts/MortalFont20/FF20.png new file mode 100644 index 000000000..fe3d09aec Binary files /dev/null and b/fonts/MortalFont20/FF20.png differ diff --git a/fonts/MortalFont20/FF21.png b/fonts/MortalFont20/FF21.png new file mode 100644 index 000000000..91f19d7a0 Binary files /dev/null and b/fonts/MortalFont20/FF21.png differ diff --git a/fonts/MortalFont20/FF22.png b/fonts/MortalFont20/FF22.png new file mode 100644 index 000000000..2f2c4ca68 Binary files /dev/null and b/fonts/MortalFont20/FF22.png differ diff --git a/fonts/MortalFont20/FF23.png b/fonts/MortalFont20/FF23.png new file mode 100644 index 000000000..e8164f230 Binary files /dev/null and b/fonts/MortalFont20/FF23.png differ diff --git a/fonts/MortalFont20/FF24.png b/fonts/MortalFont20/FF24.png new file mode 100644 index 000000000..0cf083e27 Binary files /dev/null and b/fonts/MortalFont20/FF24.png differ diff --git a/fonts/MortalFont20/FF25.png b/fonts/MortalFont20/FF25.png new file mode 100644 index 000000000..f19007012 Binary files /dev/null and b/fonts/MortalFont20/FF25.png differ diff --git a/fonts/MortalFont20/FF26.png b/fonts/MortalFont20/FF26.png new file mode 100644 index 000000000..95513a17b Binary files /dev/null and b/fonts/MortalFont20/FF26.png differ diff --git a/fonts/MortalFont20/FF27.png b/fonts/MortalFont20/FF27.png new file mode 100644 index 000000000..1cdf40abf Binary files /dev/null and b/fonts/MortalFont20/FF27.png differ diff --git a/fonts/MortalFont20/FF28.png b/fonts/MortalFont20/FF28.png new file mode 100644 index 000000000..f0fb3481a Binary files /dev/null and b/fonts/MortalFont20/FF28.png differ diff --git a/fonts/MortalFont20/FF29.png b/fonts/MortalFont20/FF29.png new file mode 100644 index 000000000..91662fe6e Binary files /dev/null and b/fonts/MortalFont20/FF29.png differ diff --git a/fonts/MortalFont20/FF2A.png b/fonts/MortalFont20/FF2A.png new file mode 100644 index 000000000..6c28735a6 Binary files /dev/null and b/fonts/MortalFont20/FF2A.png differ diff --git a/fonts/MortalFont20/FF2B.png b/fonts/MortalFont20/FF2B.png new file mode 100644 index 000000000..6f366b7b0 Binary files /dev/null and b/fonts/MortalFont20/FF2B.png differ diff --git a/fonts/MortalFont20/FF2C.png b/fonts/MortalFont20/FF2C.png new file mode 100644 index 000000000..c1cb5750b Binary files /dev/null and b/fonts/MortalFont20/FF2C.png differ diff --git a/fonts/MortalFont20/FF2D.png b/fonts/MortalFont20/FF2D.png new file mode 100644 index 000000000..0bd168db9 Binary files /dev/null and b/fonts/MortalFont20/FF2D.png differ diff --git a/fonts/MortalFont20/FF2E.png b/fonts/MortalFont20/FF2E.png new file mode 100644 index 000000000..70d118124 Binary files /dev/null and b/fonts/MortalFont20/FF2E.png differ diff --git a/fonts/MortalFont20/FF2F.png b/fonts/MortalFont20/FF2F.png new file mode 100644 index 000000000..7f3590955 Binary files /dev/null and b/fonts/MortalFont20/FF2F.png differ diff --git a/fonts/MortalFont20/FF30.png b/fonts/MortalFont20/FF30.png new file mode 100644 index 000000000..cbf5c7500 Binary files /dev/null and b/fonts/MortalFont20/FF30.png differ diff --git a/fonts/MortalFont20/FF31.png b/fonts/MortalFont20/FF31.png new file mode 100644 index 000000000..37c1c0ca5 Binary files /dev/null and b/fonts/MortalFont20/FF31.png differ diff --git a/fonts/MortalFont20/FF32.png b/fonts/MortalFont20/FF32.png new file mode 100644 index 000000000..377c44ce0 Binary files /dev/null and b/fonts/MortalFont20/FF32.png differ diff --git a/fonts/MortalFont20/FF33.png b/fonts/MortalFont20/FF33.png new file mode 100644 index 000000000..0640cbbfc Binary files /dev/null and b/fonts/MortalFont20/FF33.png differ diff --git a/fonts/MortalFont20/FF34.png b/fonts/MortalFont20/FF34.png new file mode 100644 index 000000000..873c8ddca Binary files /dev/null and b/fonts/MortalFont20/FF34.png differ diff --git a/fonts/MortalFont20/FF35.png b/fonts/MortalFont20/FF35.png new file mode 100644 index 000000000..190ed3956 Binary files /dev/null and b/fonts/MortalFont20/FF35.png differ diff --git a/fonts/MortalFont20/FF36.png b/fonts/MortalFont20/FF36.png new file mode 100644 index 000000000..ed55ae590 Binary files /dev/null and b/fonts/MortalFont20/FF36.png differ diff --git a/fonts/MortalFont20/FF37.png b/fonts/MortalFont20/FF37.png new file mode 100644 index 000000000..645d468b2 Binary files /dev/null and b/fonts/MortalFont20/FF37.png differ diff --git a/fonts/MortalFont20/FF38.png b/fonts/MortalFont20/FF38.png new file mode 100644 index 000000000..200145b67 Binary files /dev/null and b/fonts/MortalFont20/FF38.png differ diff --git a/fonts/MortalFont20/FF39.png b/fonts/MortalFont20/FF39.png new file mode 100644 index 000000000..aa6b5f3e4 Binary files /dev/null and b/fonts/MortalFont20/FF39.png differ diff --git a/fonts/MortalFont20/FF3A.png b/fonts/MortalFont20/FF3A.png new file mode 100644 index 000000000..5fb1f12ed Binary files /dev/null and b/fonts/MortalFont20/FF3A.png differ diff --git a/fonts/MortalFont20/FF3B.png b/fonts/MortalFont20/FF3B.png new file mode 100644 index 000000000..4f9152175 Binary files /dev/null and b/fonts/MortalFont20/FF3B.png differ diff --git a/fonts/MortalFont20/FF3C.png b/fonts/MortalFont20/FF3C.png new file mode 100644 index 000000000..add04238f Binary files /dev/null and b/fonts/MortalFont20/FF3C.png differ diff --git a/fonts/MortalFont20/FF3D.png b/fonts/MortalFont20/FF3D.png new file mode 100644 index 000000000..bc39584bc Binary files /dev/null and b/fonts/MortalFont20/FF3D.png differ diff --git a/fonts/MortalFont20/FF3E.png b/fonts/MortalFont20/FF3E.png new file mode 100644 index 000000000..04611ccbe Binary files /dev/null and b/fonts/MortalFont20/FF3E.png differ diff --git a/fonts/MortalFont20/FF3F.png b/fonts/MortalFont20/FF3F.png new file mode 100644 index 000000000..28cd18167 Binary files /dev/null and b/fonts/MortalFont20/FF3F.png differ diff --git a/fonts/MortalFont20/FF40.png b/fonts/MortalFont20/FF40.png new file mode 100644 index 000000000..5ec3eb4c3 Binary files /dev/null and b/fonts/MortalFont20/FF40.png differ diff --git a/fonts/MortalFont20/FF41.png b/fonts/MortalFont20/FF41.png new file mode 100644 index 000000000..7583d2b1d Binary files /dev/null and b/fonts/MortalFont20/FF41.png differ diff --git a/fonts/MortalFont20/FF42.png b/fonts/MortalFont20/FF42.png new file mode 100644 index 000000000..e853a604c Binary files /dev/null and b/fonts/MortalFont20/FF42.png differ diff --git a/fonts/MortalFont20/FF43.png b/fonts/MortalFont20/FF43.png new file mode 100644 index 000000000..39ccce852 Binary files /dev/null and b/fonts/MortalFont20/FF43.png differ diff --git a/fonts/MortalFont20/FF44.png b/fonts/MortalFont20/FF44.png new file mode 100644 index 000000000..d91734315 Binary files /dev/null and b/fonts/MortalFont20/FF44.png differ diff --git a/fonts/MortalFont20/FF45.png b/fonts/MortalFont20/FF45.png new file mode 100644 index 000000000..a1678c1b3 Binary files /dev/null and b/fonts/MortalFont20/FF45.png differ diff --git a/fonts/MortalFont20/FF46.png b/fonts/MortalFont20/FF46.png new file mode 100644 index 000000000..16148c459 Binary files /dev/null and b/fonts/MortalFont20/FF46.png differ diff --git a/fonts/MortalFont20/FF47.png b/fonts/MortalFont20/FF47.png new file mode 100644 index 000000000..6e1ec8e34 Binary files /dev/null and b/fonts/MortalFont20/FF47.png differ diff --git a/fonts/MortalFont20/FF48.png b/fonts/MortalFont20/FF48.png new file mode 100644 index 000000000..a2da5e5ab Binary files /dev/null and b/fonts/MortalFont20/FF48.png differ diff --git a/fonts/MortalFont20/FF49.png b/fonts/MortalFont20/FF49.png new file mode 100644 index 000000000..57b35882d Binary files /dev/null and b/fonts/MortalFont20/FF49.png differ diff --git a/fonts/MortalFont20/FF4A.png b/fonts/MortalFont20/FF4A.png new file mode 100644 index 000000000..a7c953c04 Binary files /dev/null and b/fonts/MortalFont20/FF4A.png differ diff --git a/fonts/MortalFont20/FF4B.png b/fonts/MortalFont20/FF4B.png new file mode 100644 index 000000000..114c21270 Binary files /dev/null and b/fonts/MortalFont20/FF4B.png differ diff --git a/fonts/MortalFont20/FF4C.png b/fonts/MortalFont20/FF4C.png new file mode 100644 index 000000000..2996eef4b Binary files /dev/null and b/fonts/MortalFont20/FF4C.png differ diff --git a/fonts/MortalFont20/FF4D.png b/fonts/MortalFont20/FF4D.png new file mode 100644 index 000000000..575e5a5be Binary files /dev/null and b/fonts/MortalFont20/FF4D.png differ diff --git a/fonts/MortalFont20/FF4E.png b/fonts/MortalFont20/FF4E.png new file mode 100644 index 000000000..c73ce06a7 Binary files /dev/null and b/fonts/MortalFont20/FF4E.png differ diff --git a/fonts/MortalFont20/FF4F.png b/fonts/MortalFont20/FF4F.png new file mode 100644 index 000000000..53cc0f1de Binary files /dev/null and b/fonts/MortalFont20/FF4F.png differ diff --git a/fonts/MortalFont20/FF50.png b/fonts/MortalFont20/FF50.png new file mode 100644 index 000000000..52b44cf09 Binary files /dev/null and b/fonts/MortalFont20/FF50.png differ diff --git a/fonts/MortalFont20/FF51.png b/fonts/MortalFont20/FF51.png new file mode 100644 index 000000000..f9c46a261 Binary files /dev/null and b/fonts/MortalFont20/FF51.png differ diff --git a/fonts/MortalFont20/FF52.png b/fonts/MortalFont20/FF52.png new file mode 100644 index 000000000..ed371af9f Binary files /dev/null and b/fonts/MortalFont20/FF52.png differ diff --git a/fonts/MortalFont20/FF53.png b/fonts/MortalFont20/FF53.png new file mode 100644 index 000000000..1316536a1 Binary files /dev/null and b/fonts/MortalFont20/FF53.png differ diff --git a/fonts/MortalFont20/FF54.png b/fonts/MortalFont20/FF54.png new file mode 100644 index 000000000..ba53cbe1e Binary files /dev/null and b/fonts/MortalFont20/FF54.png differ diff --git a/fonts/MortalFont20/FF55.png b/fonts/MortalFont20/FF55.png new file mode 100644 index 000000000..cd730e0b6 Binary files /dev/null and b/fonts/MortalFont20/FF55.png differ diff --git a/fonts/MortalFont20/FF56.png b/fonts/MortalFont20/FF56.png new file mode 100644 index 000000000..52c1165e0 Binary files /dev/null and b/fonts/MortalFont20/FF56.png differ diff --git a/fonts/MortalFont20/FF57.png b/fonts/MortalFont20/FF57.png new file mode 100644 index 000000000..d6a897761 Binary files /dev/null and b/fonts/MortalFont20/FF57.png differ diff --git a/fonts/MortalFont20/FF58.png b/fonts/MortalFont20/FF58.png new file mode 100644 index 000000000..a5fe73e5d Binary files /dev/null and b/fonts/MortalFont20/FF58.png differ diff --git a/fonts/MortalFont20/FF59.png b/fonts/MortalFont20/FF59.png new file mode 100644 index 000000000..91244c25c Binary files /dev/null and b/fonts/MortalFont20/FF59.png differ diff --git a/fonts/MortalFont20/FF5A.png b/fonts/MortalFont20/FF5A.png new file mode 100644 index 000000000..8bdfb4e90 Binary files /dev/null and b/fonts/MortalFont20/FF5A.png differ diff --git a/fonts/MortalFont20/FF5B.png b/fonts/MortalFont20/FF5B.png new file mode 100644 index 000000000..2d98be696 Binary files /dev/null and b/fonts/MortalFont20/FF5B.png differ diff --git a/fonts/MortalFont20/FF5C.png b/fonts/MortalFont20/FF5C.png new file mode 100644 index 000000000..630a135b6 Binary files /dev/null and b/fonts/MortalFont20/FF5C.png differ diff --git a/fonts/MortalFont20/FF5D.png b/fonts/MortalFont20/FF5D.png new file mode 100644 index 000000000..82281c9dc Binary files /dev/null and b/fonts/MortalFont20/FF5D.png differ diff --git a/fonts/MortalFont20/FF5E.png b/fonts/MortalFont20/FF5E.png new file mode 100644 index 000000000..6300e4ef8 Binary files /dev/null and b/fonts/MortalFont20/FF5E.png differ diff --git a/fonts/MortalFont20/FFE0.png b/fonts/MortalFont20/FFE0.png new file mode 100644 index 000000000..71df013df Binary files /dev/null and b/fonts/MortalFont20/FFE0.png differ diff --git a/fonts/MortalFont20/FFE1.png b/fonts/MortalFont20/FFE1.png new file mode 100644 index 000000000..b2ec8c846 Binary files /dev/null and b/fonts/MortalFont20/FFE1.png differ diff --git a/fonts/MortalFont20/FFE2.png b/fonts/MortalFont20/FFE2.png new file mode 100644 index 000000000..a1ee4ead9 Binary files /dev/null and b/fonts/MortalFont20/FFE2.png differ diff --git a/fonts/MortalFont20/FFE3.png b/fonts/MortalFont20/FFE3.png new file mode 100644 index 000000000..4a5b99534 Binary files /dev/null and b/fonts/MortalFont20/FFE3.png differ diff --git a/fonts/MortalFont20/FFE4.png b/fonts/MortalFont20/FFE4.png new file mode 100644 index 000000000..3fea14471 Binary files /dev/null and b/fonts/MortalFont20/FFE4.png differ diff --git a/fonts/MortalFont20/FFE5.png b/fonts/MortalFont20/FFE5.png new file mode 100644 index 000000000..ac8306276 Binary files /dev/null and b/fonts/MortalFont20/FFE5.png differ diff --git a/fonts/MortalFont20/LICENSE b/fonts/MortalFont20/LICENSE new file mode 100644 index 000000000..272d5f63f --- /dev/null +++ b/fonts/MortalFont20/LICENSE @@ -0,0 +1,117 @@ +-------------------------------------------------- +IPA Font License Agreement v1.0 +-------------------------------------------------- + +IPAフォントライセンスv1.0 + +許諾者は、この使用許諾(以下「本契約」といいます。)に定める条件の下で、許諾プログラム(1条に定義するところによります。)を提供します。受領者(1条に定義するところによります。)が、許諾プログラムを使用し、複製し、または頒布する行為、その他、本契約に定める権利の利用を行った場合、受領者は本契約に同意したものと見なします。 + + +第1条 用語の定義 + +本契約において、次の各号に掲げる用語は、当該各号に定めるところによります。 + +1.「デジタル・フォント・プログラム」とは、フォントを含み、レンダリングしまたは表示するために用いられるコンピュータ・プログラムをいいます。 +2.「許諾プログラム」とは、許諾者が本契約の下で許諾するデジタル・フォント・プログラムをいいます。 +3.「派生プログラム」とは、許諾プログラムの一部または全部を、改変し、加除修正等し、入れ替え、その他翻案したデジタル・フォント・プログラムをいい、許諾プログラムの一部もしくは全部から文字情報を取り出し、またはデジタル・ドキュメント・ファイルからエンベッドされたフォントを取り出し、取り出された文字情報をそのまま、または改変をなして新たなデジタル・フォント・プログラムとして製作されたものを含みます。 +4.「デジタル・コンテンツ」とは、デジタル・データ形式によってエンド・ユーザに提供される制作物のことをいい、動画・静止画等の映像コンテンツおよびテレビ番組等の放送コンテンツ、ならびに文字テキスト、画像、図形等を含んで構成された制作物を含みます。 +5.「デジタル・ドキュメント・ファイル」とは、PDFファイルその他、各種ソフトウェア・プログラムによって製作されたデジタル・コンテンツであって、その中にフォントを表示するために許諾プログラムの全部または一部が埋め込まれた(エンベッドされた)ものをいいます。フォントが「エンベッドされた」とは、当該フォントが埋め込まれた特定の「デジタル・ドキュメント・ファイル」においてのみ表示されるために使用されている状態を指し、その特定の「デジタル・ドキュメント・ファイル」以外でフォントを表示するために使用できるデジタル・フォント・プログラムに含まれている場合と区別されます。 +6.「コンピュータ」とは、本契約においては、サーバを含みます。 +7.「複製その他の利用」とは、複製、譲渡、頒布、貸与、公衆送信、上映、展示、翻案その他の利用をいいます。 +8.「受領者」とは、許諾プログラムを本契約の下で受領した人をいい、受領者から許諾プログラムを受領した人を含みます。 + +第2条 使用許諾の付与 + +許諾者は受領者に対し、本契約の条項に従い、すべての国で、許諾プログラムを使用することを許諾します。ただし、許諾プログラムに存在する一切の権利はすべて許諾者が保有しています。本契約は、本契約で明示的に定められている場合を除き、いかなる意味においても、許諾者が保有する許諾プログラムに関する一切の権利および、いかなる商標、商号、もしくはサービス・マークに関する権利をも受領者に移転するものではありません。 + +1.受領者は本契約に定める条件に従い、許諾プログラムを任意の数のコンピュータにインストールし、当該コンピュータで使用することができます。 +2.受領者はコンピュータにインストールされた許諾プログラムをそのまま、または改変を行ったうえで、印刷物およびデジタル・コンテンツにおいて、文字テキスト表現等として使用することができます。 +3.受領者は前項の定めに従い作成した印刷物およびデジタル・コンテンツにつき、その商用・非商用の別、および放送、通信、各種記録メディアなどの媒体の形式を問わず、複製その他の利用をすることができます。 +4.受領者がデジタル・ドキュメント・ファイルからエンベッドされたフォントを取り出して派生プログラムを作成した場合には、かかる派生プログラムは本契約に定める条件に従う必要があります。 +5.許諾プログラムのエンベッドされたフォントがデジタル・ドキュメント・ファイル内のデジタル・コンテンツをレンダリングするためにのみ使用される場合において、受領者が当該デジタル・ドキュメント・ファイルを複製その他の利用をする場合には、受領者はかかる行為に関しては本契約の下ではいかなる義務をも負いません。 +6.受領者は、3条2項の定めに従い、商用・非商用を問わず、許諾プログラムをそのままの状態で改変することなく複製して第三者への譲渡し、公衆送信し、その他の方法で再配布することができます(以下、「再配布」といいます。)。 +7.受領者は、上記の許諾プログラムについて定められた条件と同様の条件に従って、派生プログラムを作成し、使用し、複製し、再配布することができます。ただし、受領者が派生プログラムを再配布する場合には、3条1項の定めに従うものとします。 + +第3条 制限 + +前条により付与された使用許諾は、以下の制限に服します。 + +1.派生プログラムが前条4項及び7項に基づき再配布される場合には、以下の全ての条件を満たさなければなりません。 + (1)派生プログラムを再配布する際には、下記もまた、当該派生プログラムと一緒に再配布され、オンラインで提供され、または、郵送費・媒体及び取扱手数料の合計を超えない実費と引き換えに媒体を郵送する方法により提供されなければなりません。 +  (a)派生プログラムの写し; および +  (b)派生プログラムを作成する過程でフォント開発プログラムによって作成された追加のファイルであって派生プログラムをさらに加工するにあたって利用できるファイルが存在すれば、当該ファイル + (2)派生プログラムの受領者が、派生プログラムを、このライセンスの下で最初にリリースされた許諾プログラム(以下、「オリジナル・プログラム」といいます。)に置き換えることができる方法を再配布するものとします。かかる方法は、オリジナル・ファイルからの差分ファイルの提供、または、派生プログラムをオリジナル・プログラムに置き換える方法を示す指示の提供などが考えられます。 + (3)派生プログラムを、本契約書に定められた条件の下でライセンスしなければなりません。 + (4)派生プログラムのプログラム名、フォント名またはファイル名として、許諾プログラムが用いているのと同一の名称、またはこれを含む名称を使用してはなりません。 + (5)本項の要件を満たすためにオンラインで提供し、または媒体を郵送する方法で提供されるものは、その提供を希望するいかなる者によっても提供が可能です。 +2.受領者が前条6項に基づき許諾プログラムを再配布する場合には、以下の全ての条件を満たさなければなりません。 + (1)許諾プログラムの名称を変更してはなりません。 + (2)許諾プログラムに加工その他の改変を加えてはなりません。 + (3)本契約の写しを許諾プログラムに添付しなければなりません。 +3.許諾プログラムは、現状有姿で提供されており、許諾プログラムまたは派生プログラムについて、許諾者は一切の明示または黙示の保証(権利の所在、非侵害、商品性、特定目的への適合性を含むがこれに限られません)を行いません。いかなる場合にも、その原因を問わず、契約上の責任か厳格責任か過失その他の不法行為責任かにかかわらず、また事前に通知されたか否かにかかわらず、許諾者は、許諾プログラムまたは派生プログラムのインストール、使用、複製その他の利用または本契約上の権利の行使によって生じた一切の損害(直接・間接・付随的・特別・拡大・懲罰的または結果的損害)(商品またはサービスの代替品の調達、システム障害から生じた損害、現存するデータまたはプログラムの紛失または破損、逸失利益を含むがこれに限られません)について責任を負いません。 +4.許諾プログラムまたは派生プログラムのインストール、使用、複製その他の利用に関して、許諾者は技術的な質問や問い合わせ等に対する対応その他、いかなるユーザ・サポートをも行う義務を負いません。 + +第4条 契約の終了 + +1.本契約の有効期間は、受領者が許諾プログラムを受領した時に開始し、受領者が許諾プログラムを何らかの方法で保持する限り続くものとします。 +2.前項の定めにかかわらず、受領者が本契約に定める各条項に違反したときは、本契約は、何らの催告を要することなく、自動的に終了し、当該受領者はそれ以後、許諾プログラムおよび派生プログラムを一切使用しまたは複製その他の利用をすることができないものとします。ただし、かかる契約の終了は、当該違反した受領者から許諾プログラムまたは派生プログラムの配布を受けた受領者の権利に影響を及ぼすものではありません。 + +第5条 準拠法 + +1.IPAは、本契約の変更バージョンまたは新しいバージョンを公表することができます。その場合には、受領者は、許諾プログラムまたは派生プログラムの使用、複製その他の利用または再配布にあたり、本契約または変更後の契約のいずれかを選択することができます。その他、上記に記載されていない条項に関しては日本の著作権法および関連法規に従うものとします。 +2.本契約は、日本法に基づき解釈されます。 + + +---------- + +IPA Font License Agreement v1.0 + +The Licensor provides the Licensed Program (as defined in Article 1 below) under the terms of this license agreement (“Agreement”). Any use, reproduction or distribution of the Licensed Program, or any exercise of rights under this Agreement by a Recipient (as defined in Article 1 below) constitutes the Recipient's acceptance of this Agreement. + +Article 1 (Definitions) +1.“Digital Font Program” shall mean a computer program containing, or used to render or display fonts. +2.“Licensed Program” shall mean a Digital Font Program licensed by the Licensor under this Agreement. +3.“Derived Program” shall mean a Digital Font Program created as a result of a modification, addition, deletion, replacement or any other adaptation to or of a part or all of the Licensed Program, and includes a case where a Digital Font Program newly created by retrieving font information from a part or all of the Licensed Program or Embedded Fonts from a Digital Document File with or without modification of the retrieved font information. +4.“Digital Content” shall mean products provided to end users in the form of digital data, including video content, motion and/or still pictures, TV programs or other broadcasting content and products consisting of character text, pictures, photographic images, graphic symbols and/or the like. +5.“Digital Document File” shall mean a PDF file or other Digital Content created by various software programs in which a part or all of the Licensed Program becomes embedded or contained in the file for the display of the font (“Embedded Fonts”). Embedded Fonts are used only in the display of characters in the particular Digital Document File within which they are embedded, and shall be distinguished from those in any Digital Font Program, which may be used for display of characters outside that particular Digital Document File. +6.“Computer” shall include a server in this Agreement. +7.“Reproduction and Other Exploitation” shall mean reproduction, transfer, distribution, lease, public transmission, presentation, exhibition, adaptation and any other exploitation. +8.“Recipient” shall mean anyone who receives the Licensed Program under this Agreement, including one that receives the Licensed Program from a Recipient. + +Article 2 (Grant of License) +The Licensor grants to the Recipient a license to use the Licensed Program in any and all countries in accordance with each of the provisions set forth in this Agreement. However, any and all rights underlying in the Licensed Program shall be held by the Licensor. In no sense is this Agreement intended to transfer any right relating to the Licensed Program held by the Licensor except as specifically set forth herein or any right relating to any trademark, trade name, or service mark to the Recipient. + +1.The Recipient may install the Licensed Program on any number of Computers and use the same in accordance with the provisions set forth in this Agreement. +2.The Recipient may use the Licensed Program, with or without modification in printed materials or in Digital Content as an expression of character texts or the like. +3.The Recipient may conduct Reproduction and Other Exploitation of the printed materials and Digital Content created in accordance with the preceding Paragraph, for commercial or non-commercial purposes and in any form of media including but not limited to broadcasting, communication and various recording media. +4.If any Recipient extracts Embedded Fonts from a Digital Document File to create a Derived Program, such Derived Program shall be subject to the terms of this agreement. +5.If any Recipient performs Reproduction or Other Exploitation of a Digital Document File in which Embedded Fonts of the Licensed Program are used only for rendering the Digital Content within such Digital Document File then such Recipient shall have no further obligations under this Agreement in relation to such actions. +6.The Recipient may reproduce the Licensed Program as is without modification and transfer such copies, publicly transmit or otherwise redistribute the Licensed Program to a third party for commercial or non-commercial purposes (“Redistribute”), in accordance with the provisions set forth in Article 3 Paragraph 2. +7.The Recipient may create, use, reproduce and/or Redistribute a Derived Program under the terms stated above for the Licensed Program: provided, that the Recipient shall follow the provisions set forth in Article 3 Paragraph 1 when Redistributing the Derived Program. + +Article 3 (Restriction) +The license granted in the preceding Article shall be subject to the following restrictions: + +1.If a Derived Program is Redistributed pursuant to Paragraph 4 and 7 of the preceding Article, the following conditions must be met : + (1)The following must be also Redistributed together with the Derived Program, or be made available online or by means of mailing mechanisms in exchange for a cost which does not exceed the total costs of postage, storage medium and handling fees: +  (a)a copy of the Derived Program; and +  (b)any additional file created by the font developing program in the course of creating the Derived Program that can be used for further modification of the Derived Program, if any. + (2)It is required to also Redistribute means to enable recipients of the Derived Program to replace the Derived Program with the Licensed Program first released under this License (the “Original Program”). Such means may be to provide a difference file from the Original Program, or instructions setting out a method to replace the Derived Program with the Original Program. + (3)The Recipient must license the Derived Program under the terms and conditions of this Agreement. + (4)No one may use or include the name of the Licensed Program as a program name, font name or file name of the Derived Program. + (5)Any material to be made available online or by means of mailing a medium to satisfy the requirements of this paragraph may be provided, verbatim, by any party wishing to do so. +2.If the Recipient Redistributes the Licensed Program pursuant to Paragraph 6 of the preceding Article, the Recipient shall meet all of the following conditions: + (1)The Recipient may not change the name of the Licensed Program. + (2)The Recipient may not alter or otherwise modify the Licensed Program. + (3)The Recipient must attach a copy of this Agreement to the Licensed Program. +3.THIS LICENSED PROGRAM IS PROVIDED BY THE LICENSOR “AS IS” AND ANY EXPRESSED OR IMPLIED WARRANTY AS TO THE LICENSED PROGRAM OR ANY DERIVED PROGRAM, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXTENDED, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO; PROCUREMENT OF SUBSTITUTED GOODS OR SERVICE; DAMAGES ARISING FROM SYSTEM FAILURE; LOSS OR CORRUPTION OF EXISTING DATA OR PROGRAM; LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE INSTALLATION, USE, THE REPRODUCTION OR OTHER EXPLOITATION OF THE LICENSED PROGRAM OR ANY DERIVED PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +4.The Licensor is under no obligation to respond to any technical questions or inquiries, or provide any other user support in connection with the installation, use or the Reproduction and Other Exploitation of the Licensed Program or Derived Programs thereof. + +Article 4 (Termination of Agreement) +1.The term of this Agreement shall begin from the time of receipt of the Licensed Program by the Recipient and shall continue as long as the Recipient retains any such Licensed Program in any way. +2.Notwithstanding the provision set forth in the preceding Paragraph, in the event of the breach of any of the provisions set forth in this Agreement by the Recipient, this Agreement shall automatically terminate without any notice. In the case of such termination, the Recipient may not use or conduct Reproduction and Other Exploitation of the Licensed Program or a Derived Program: provided that such termination shall not affect any rights of any other Recipient receiving the Licensed Program or the Derived Program from such Recipient who breached this Agreement. + +Article 5 (Governing Law) +1.IPA may publish revised and/or new versions of this License. In such an event, the Recipient may select either this Agreement or any subsequent version of the Agreement in using, conducting the Reproduction and Other Exploitation of, or Redistributing the Licensed Program or a Derived Program. Other matters not specified above shall be subject to the Copyright Law of Japan and other related laws and regulations of Japan. +2.This Agreement shall be construed under the laws of Japan. + diff --git a/fonts/MortalFont20/font.inf b/fonts/MortalFont20/font.inf new file mode 100644 index 000000000..fa5a2459f --- /dev/null +++ b/fonts/MortalFont20/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 12 +FontHeight 21 +Kerning -1 diff --git a/fonts/MortalFont40/0021.png b/fonts/MortalFont40/0021.png new file mode 100644 index 000000000..3cee3736a Binary files /dev/null and b/fonts/MortalFont40/0021.png differ diff --git a/fonts/MortalFont40/0022.png b/fonts/MortalFont40/0022.png new file mode 100644 index 000000000..fd58c1f6c Binary files /dev/null and b/fonts/MortalFont40/0022.png differ diff --git a/fonts/MortalFont40/0023.png b/fonts/MortalFont40/0023.png new file mode 100644 index 000000000..038d50122 Binary files /dev/null and b/fonts/MortalFont40/0023.png differ diff --git a/fonts/MortalFont40/0024.png b/fonts/MortalFont40/0024.png new file mode 100644 index 000000000..73305187f Binary files /dev/null and b/fonts/MortalFont40/0024.png differ diff --git a/fonts/MortalFont40/0025.png b/fonts/MortalFont40/0025.png new file mode 100644 index 000000000..59842da2a Binary files /dev/null and b/fonts/MortalFont40/0025.png differ diff --git a/fonts/MortalFont40/0026.png b/fonts/MortalFont40/0026.png new file mode 100644 index 000000000..47f279f3c Binary files /dev/null and b/fonts/MortalFont40/0026.png differ diff --git a/fonts/MortalFont40/0027.png b/fonts/MortalFont40/0027.png new file mode 100644 index 000000000..bc908ff2f Binary files /dev/null and b/fonts/MortalFont40/0027.png differ diff --git a/fonts/MortalFont40/0028.png b/fonts/MortalFont40/0028.png new file mode 100644 index 000000000..e38095d67 Binary files /dev/null and b/fonts/MortalFont40/0028.png differ diff --git a/fonts/MortalFont40/0029.png b/fonts/MortalFont40/0029.png new file mode 100644 index 000000000..f38e11a23 Binary files /dev/null and b/fonts/MortalFont40/0029.png differ diff --git a/fonts/MortalFont40/002A.png b/fonts/MortalFont40/002A.png new file mode 100644 index 000000000..3195cd1c3 Binary files /dev/null and b/fonts/MortalFont40/002A.png differ diff --git a/fonts/MortalFont40/002B.png b/fonts/MortalFont40/002B.png new file mode 100644 index 000000000..0385a2f63 Binary files /dev/null and b/fonts/MortalFont40/002B.png differ diff --git a/fonts/MortalFont40/002C.png b/fonts/MortalFont40/002C.png new file mode 100644 index 000000000..5873ff9a9 Binary files /dev/null and b/fonts/MortalFont40/002C.png differ diff --git a/fonts/MortalFont40/002D.png b/fonts/MortalFont40/002D.png new file mode 100644 index 000000000..146fab2d3 Binary files /dev/null and b/fonts/MortalFont40/002D.png differ diff --git a/fonts/MortalFont40/002E.png b/fonts/MortalFont40/002E.png new file mode 100644 index 000000000..21534a11f Binary files /dev/null and b/fonts/MortalFont40/002E.png differ diff --git a/fonts/MortalFont40/002F.png b/fonts/MortalFont40/002F.png new file mode 100644 index 000000000..376e017e3 Binary files /dev/null and b/fonts/MortalFont40/002F.png differ diff --git a/fonts/MortalFont40/0030.png b/fonts/MortalFont40/0030.png new file mode 100644 index 000000000..cd8d1f881 Binary files /dev/null and b/fonts/MortalFont40/0030.png differ diff --git a/fonts/MortalFont40/0031.png b/fonts/MortalFont40/0031.png new file mode 100644 index 000000000..f272bc38d Binary files /dev/null and b/fonts/MortalFont40/0031.png differ diff --git a/fonts/MortalFont40/0032.png b/fonts/MortalFont40/0032.png new file mode 100644 index 000000000..0c4f80a45 Binary files /dev/null and b/fonts/MortalFont40/0032.png differ diff --git a/fonts/MortalFont40/0033.png b/fonts/MortalFont40/0033.png new file mode 100644 index 000000000..12dea75af Binary files /dev/null and b/fonts/MortalFont40/0033.png differ diff --git a/fonts/MortalFont40/0034.png b/fonts/MortalFont40/0034.png new file mode 100644 index 000000000..ec3ebcbe0 Binary files /dev/null and b/fonts/MortalFont40/0034.png differ diff --git a/fonts/MortalFont40/0035.png b/fonts/MortalFont40/0035.png new file mode 100644 index 000000000..2600178eb Binary files /dev/null and b/fonts/MortalFont40/0035.png differ diff --git a/fonts/MortalFont40/0036.png b/fonts/MortalFont40/0036.png new file mode 100644 index 000000000..ebc9671c5 Binary files /dev/null and b/fonts/MortalFont40/0036.png differ diff --git a/fonts/MortalFont40/0037.png b/fonts/MortalFont40/0037.png new file mode 100644 index 000000000..cb9d53239 Binary files /dev/null and b/fonts/MortalFont40/0037.png differ diff --git a/fonts/MortalFont40/0038.png b/fonts/MortalFont40/0038.png new file mode 100644 index 000000000..827b76019 Binary files /dev/null and b/fonts/MortalFont40/0038.png differ diff --git a/fonts/MortalFont40/0039.png b/fonts/MortalFont40/0039.png new file mode 100644 index 000000000..828e8d650 Binary files /dev/null and b/fonts/MortalFont40/0039.png differ diff --git a/fonts/MortalFont40/003A.png b/fonts/MortalFont40/003A.png new file mode 100644 index 000000000..e9a5fd78e Binary files /dev/null and b/fonts/MortalFont40/003A.png differ diff --git a/fonts/MortalFont40/003B.png b/fonts/MortalFont40/003B.png new file mode 100644 index 000000000..32940a82e Binary files /dev/null and b/fonts/MortalFont40/003B.png differ diff --git a/fonts/MortalFont40/003C.png b/fonts/MortalFont40/003C.png new file mode 100644 index 000000000..74eb667b9 Binary files /dev/null and b/fonts/MortalFont40/003C.png differ diff --git a/fonts/MortalFont40/003D.png b/fonts/MortalFont40/003D.png new file mode 100644 index 000000000..0a4e3ae25 Binary files /dev/null and b/fonts/MortalFont40/003D.png differ diff --git a/fonts/MortalFont40/003E.png b/fonts/MortalFont40/003E.png new file mode 100644 index 000000000..3a80fe671 Binary files /dev/null and b/fonts/MortalFont40/003E.png differ diff --git a/fonts/MortalFont40/003F.png b/fonts/MortalFont40/003F.png new file mode 100644 index 000000000..288e84a35 Binary files /dev/null and b/fonts/MortalFont40/003F.png differ diff --git a/fonts/MortalFont40/0040.png b/fonts/MortalFont40/0040.png new file mode 100644 index 000000000..eb77a5656 Binary files /dev/null and b/fonts/MortalFont40/0040.png differ diff --git a/fonts/MortalFont40/0041.png b/fonts/MortalFont40/0041.png new file mode 100644 index 000000000..2d248fc56 Binary files /dev/null and b/fonts/MortalFont40/0041.png differ diff --git a/fonts/MortalFont40/0042.png b/fonts/MortalFont40/0042.png new file mode 100644 index 000000000..aecd1be16 Binary files /dev/null and b/fonts/MortalFont40/0042.png differ diff --git a/fonts/MortalFont40/0043.png b/fonts/MortalFont40/0043.png new file mode 100644 index 000000000..8e806f778 Binary files /dev/null and b/fonts/MortalFont40/0043.png differ diff --git a/fonts/MortalFont40/0044.png b/fonts/MortalFont40/0044.png new file mode 100644 index 000000000..5b674249b Binary files /dev/null and b/fonts/MortalFont40/0044.png differ diff --git a/fonts/MortalFont40/0045.png b/fonts/MortalFont40/0045.png new file mode 100644 index 000000000..ab8af925c Binary files /dev/null and b/fonts/MortalFont40/0045.png differ diff --git a/fonts/MortalFont40/0046.png b/fonts/MortalFont40/0046.png new file mode 100644 index 000000000..4d44e8f55 Binary files /dev/null and b/fonts/MortalFont40/0046.png differ diff --git a/fonts/MortalFont40/0047.png b/fonts/MortalFont40/0047.png new file mode 100644 index 000000000..bd1dac257 Binary files /dev/null and b/fonts/MortalFont40/0047.png differ diff --git a/fonts/MortalFont40/0048.png b/fonts/MortalFont40/0048.png new file mode 100644 index 000000000..dea1c09c3 Binary files /dev/null and b/fonts/MortalFont40/0048.png differ diff --git a/fonts/MortalFont40/0049.png b/fonts/MortalFont40/0049.png new file mode 100644 index 000000000..1385d4c74 Binary files /dev/null and b/fonts/MortalFont40/0049.png differ diff --git a/fonts/MortalFont40/004A.png b/fonts/MortalFont40/004A.png new file mode 100644 index 000000000..6ec8f20eb Binary files /dev/null and b/fonts/MortalFont40/004A.png differ diff --git a/fonts/MortalFont40/004B.png b/fonts/MortalFont40/004B.png new file mode 100644 index 000000000..31a4a7d5b Binary files /dev/null and b/fonts/MortalFont40/004B.png differ diff --git a/fonts/MortalFont40/004C.png b/fonts/MortalFont40/004C.png new file mode 100644 index 000000000..fed24e04a Binary files /dev/null and b/fonts/MortalFont40/004C.png differ diff --git a/fonts/MortalFont40/004D.png b/fonts/MortalFont40/004D.png new file mode 100644 index 000000000..627ea5bb8 Binary files /dev/null and b/fonts/MortalFont40/004D.png differ diff --git a/fonts/MortalFont40/004E.png b/fonts/MortalFont40/004E.png new file mode 100644 index 000000000..f6f685e82 Binary files /dev/null and b/fonts/MortalFont40/004E.png differ diff --git a/fonts/MortalFont40/004F.png b/fonts/MortalFont40/004F.png new file mode 100644 index 000000000..7016d699f Binary files /dev/null and b/fonts/MortalFont40/004F.png differ diff --git a/fonts/MortalFont40/0050.png b/fonts/MortalFont40/0050.png new file mode 100644 index 000000000..b6b31ea4d Binary files /dev/null and b/fonts/MortalFont40/0050.png differ diff --git a/fonts/MortalFont40/0051.png b/fonts/MortalFont40/0051.png new file mode 100644 index 000000000..4dbd82744 Binary files /dev/null and b/fonts/MortalFont40/0051.png differ diff --git a/fonts/MortalFont40/0052.png b/fonts/MortalFont40/0052.png new file mode 100644 index 000000000..3ad50ac1e Binary files /dev/null and b/fonts/MortalFont40/0052.png differ diff --git a/fonts/MortalFont40/0053.png b/fonts/MortalFont40/0053.png new file mode 100644 index 000000000..9685cac5d Binary files /dev/null and b/fonts/MortalFont40/0053.png differ diff --git a/fonts/MortalFont40/0054.png b/fonts/MortalFont40/0054.png new file mode 100644 index 000000000..bd736642f Binary files /dev/null and b/fonts/MortalFont40/0054.png differ diff --git a/fonts/MortalFont40/0055.png b/fonts/MortalFont40/0055.png new file mode 100644 index 000000000..40ee57e70 Binary files /dev/null and b/fonts/MortalFont40/0055.png differ diff --git a/fonts/MortalFont40/0056.png b/fonts/MortalFont40/0056.png new file mode 100644 index 000000000..cd3f1bf6f Binary files /dev/null and b/fonts/MortalFont40/0056.png differ diff --git a/fonts/MortalFont40/0057.png b/fonts/MortalFont40/0057.png new file mode 100644 index 000000000..aa0b83687 Binary files /dev/null and b/fonts/MortalFont40/0057.png differ diff --git a/fonts/MortalFont40/0058.png b/fonts/MortalFont40/0058.png new file mode 100644 index 000000000..d0b48cc6f Binary files /dev/null and b/fonts/MortalFont40/0058.png differ diff --git a/fonts/MortalFont40/0059.png b/fonts/MortalFont40/0059.png new file mode 100644 index 000000000..51e2516bf Binary files /dev/null and b/fonts/MortalFont40/0059.png differ diff --git a/fonts/MortalFont40/005A.png b/fonts/MortalFont40/005A.png new file mode 100644 index 000000000..4ddde02db Binary files /dev/null and b/fonts/MortalFont40/005A.png differ diff --git a/fonts/MortalFont40/005B.png b/fonts/MortalFont40/005B.png new file mode 100644 index 000000000..d8b9a843b Binary files /dev/null and b/fonts/MortalFont40/005B.png differ diff --git a/fonts/MortalFont40/005C.png b/fonts/MortalFont40/005C.png new file mode 100644 index 000000000..dcf94fb66 Binary files /dev/null and b/fonts/MortalFont40/005C.png differ diff --git a/fonts/MortalFont40/005D.png b/fonts/MortalFont40/005D.png new file mode 100644 index 000000000..704c16e4d Binary files /dev/null and b/fonts/MortalFont40/005D.png differ diff --git a/fonts/MortalFont40/005E.png b/fonts/MortalFont40/005E.png new file mode 100644 index 000000000..1e055c7b8 Binary files /dev/null and b/fonts/MortalFont40/005E.png differ diff --git a/fonts/MortalFont40/005F.png b/fonts/MortalFont40/005F.png new file mode 100644 index 000000000..09680fc39 Binary files /dev/null and b/fonts/MortalFont40/005F.png differ diff --git a/fonts/MortalFont40/0060.png b/fonts/MortalFont40/0060.png new file mode 100644 index 000000000..f70a70b3f Binary files /dev/null and b/fonts/MortalFont40/0060.png differ diff --git a/fonts/MortalFont40/0061.png b/fonts/MortalFont40/0061.png new file mode 100644 index 000000000..a0f455c95 Binary files /dev/null and b/fonts/MortalFont40/0061.png differ diff --git a/fonts/MortalFont40/0062.png b/fonts/MortalFont40/0062.png new file mode 100644 index 000000000..6f5876e70 Binary files /dev/null and b/fonts/MortalFont40/0062.png differ diff --git a/fonts/MortalFont40/0063.png b/fonts/MortalFont40/0063.png new file mode 100644 index 000000000..4c8d197d0 Binary files /dev/null and b/fonts/MortalFont40/0063.png differ diff --git a/fonts/MortalFont40/0064.png b/fonts/MortalFont40/0064.png new file mode 100644 index 000000000..ebfb9bbb5 Binary files /dev/null and b/fonts/MortalFont40/0064.png differ diff --git a/fonts/MortalFont40/0065.png b/fonts/MortalFont40/0065.png new file mode 100644 index 000000000..476c7b033 Binary files /dev/null and b/fonts/MortalFont40/0065.png differ diff --git a/fonts/MortalFont40/0066.png b/fonts/MortalFont40/0066.png new file mode 100644 index 000000000..5db80ad07 Binary files /dev/null and b/fonts/MortalFont40/0066.png differ diff --git a/fonts/MortalFont40/0067.png b/fonts/MortalFont40/0067.png new file mode 100644 index 000000000..33c635ab9 Binary files /dev/null and b/fonts/MortalFont40/0067.png differ diff --git a/fonts/MortalFont40/0068.png b/fonts/MortalFont40/0068.png new file mode 100644 index 000000000..aab1eb9b4 Binary files /dev/null and b/fonts/MortalFont40/0068.png differ diff --git a/fonts/MortalFont40/0069.png b/fonts/MortalFont40/0069.png new file mode 100644 index 000000000..6cef79ef4 Binary files /dev/null and b/fonts/MortalFont40/0069.png differ diff --git a/fonts/MortalFont40/006A.png b/fonts/MortalFont40/006A.png new file mode 100644 index 000000000..3eac9fb9d Binary files /dev/null and b/fonts/MortalFont40/006A.png differ diff --git a/fonts/MortalFont40/006B.png b/fonts/MortalFont40/006B.png new file mode 100644 index 000000000..068657b1a Binary files /dev/null and b/fonts/MortalFont40/006B.png differ diff --git a/fonts/MortalFont40/006C.png b/fonts/MortalFont40/006C.png new file mode 100644 index 000000000..ae01ca287 Binary files /dev/null and b/fonts/MortalFont40/006C.png differ diff --git a/fonts/MortalFont40/006D.png b/fonts/MortalFont40/006D.png new file mode 100644 index 000000000..c6b286fb8 Binary files /dev/null and b/fonts/MortalFont40/006D.png differ diff --git a/fonts/MortalFont40/006E.png b/fonts/MortalFont40/006E.png new file mode 100644 index 000000000..802cce932 Binary files /dev/null and b/fonts/MortalFont40/006E.png differ diff --git a/fonts/MortalFont40/006F.png b/fonts/MortalFont40/006F.png new file mode 100644 index 000000000..7b365d9a6 Binary files /dev/null and b/fonts/MortalFont40/006F.png differ diff --git a/fonts/MortalFont40/0070.png b/fonts/MortalFont40/0070.png new file mode 100644 index 000000000..0301f6f04 Binary files /dev/null and b/fonts/MortalFont40/0070.png differ diff --git a/fonts/MortalFont40/0071.png b/fonts/MortalFont40/0071.png new file mode 100644 index 000000000..c5fe3a2b7 Binary files /dev/null and b/fonts/MortalFont40/0071.png differ diff --git a/fonts/MortalFont40/0072.png b/fonts/MortalFont40/0072.png new file mode 100644 index 000000000..fb0a6102b Binary files /dev/null and b/fonts/MortalFont40/0072.png differ diff --git a/fonts/MortalFont40/0073.png b/fonts/MortalFont40/0073.png new file mode 100644 index 000000000..bc9f8dfa3 Binary files /dev/null and b/fonts/MortalFont40/0073.png differ diff --git a/fonts/MortalFont40/0074.png b/fonts/MortalFont40/0074.png new file mode 100644 index 000000000..61091efc6 Binary files /dev/null and b/fonts/MortalFont40/0074.png differ diff --git a/fonts/MortalFont40/0075.png b/fonts/MortalFont40/0075.png new file mode 100644 index 000000000..de5e9ed37 Binary files /dev/null and b/fonts/MortalFont40/0075.png differ diff --git a/fonts/MortalFont40/0076.png b/fonts/MortalFont40/0076.png new file mode 100644 index 000000000..6da799448 Binary files /dev/null and b/fonts/MortalFont40/0076.png differ diff --git a/fonts/MortalFont40/0077.png b/fonts/MortalFont40/0077.png new file mode 100644 index 000000000..096306727 Binary files /dev/null and b/fonts/MortalFont40/0077.png differ diff --git a/fonts/MortalFont40/0078.png b/fonts/MortalFont40/0078.png new file mode 100644 index 000000000..c2d831422 Binary files /dev/null and b/fonts/MortalFont40/0078.png differ diff --git a/fonts/MortalFont40/0079.png b/fonts/MortalFont40/0079.png new file mode 100644 index 000000000..d7709ef50 Binary files /dev/null and b/fonts/MortalFont40/0079.png differ diff --git a/fonts/MortalFont40/007A.png b/fonts/MortalFont40/007A.png new file mode 100644 index 000000000..4b6048fde Binary files /dev/null and b/fonts/MortalFont40/007A.png differ diff --git a/fonts/MortalFont40/007B.png b/fonts/MortalFont40/007B.png new file mode 100644 index 000000000..ce4a33411 Binary files /dev/null and b/fonts/MortalFont40/007B.png differ diff --git a/fonts/MortalFont40/007C.png b/fonts/MortalFont40/007C.png new file mode 100644 index 000000000..bf05a1ebb Binary files /dev/null and b/fonts/MortalFont40/007C.png differ diff --git a/fonts/MortalFont40/007D.png b/fonts/MortalFont40/007D.png new file mode 100644 index 000000000..f4aa5f300 Binary files /dev/null and b/fonts/MortalFont40/007D.png differ diff --git a/fonts/MortalFont40/007E.png b/fonts/MortalFont40/007E.png new file mode 100644 index 000000000..3e97ca7c9 Binary files /dev/null and b/fonts/MortalFont40/007E.png differ diff --git a/fonts/MortalFont40/00A1.png b/fonts/MortalFont40/00A1.png new file mode 100644 index 000000000..430e8cffb Binary files /dev/null and b/fonts/MortalFont40/00A1.png differ diff --git a/fonts/MortalFont40/00A2.png b/fonts/MortalFont40/00A2.png new file mode 100644 index 000000000..febcab5ec Binary files /dev/null and b/fonts/MortalFont40/00A2.png differ diff --git a/fonts/MortalFont40/00A3.png b/fonts/MortalFont40/00A3.png new file mode 100644 index 000000000..10a6edb93 Binary files /dev/null and b/fonts/MortalFont40/00A3.png differ diff --git a/fonts/MortalFont40/00A4.png b/fonts/MortalFont40/00A4.png new file mode 100644 index 000000000..d5454b19a Binary files /dev/null and b/fonts/MortalFont40/00A4.png differ diff --git a/fonts/MortalFont40/00A5.png b/fonts/MortalFont40/00A5.png new file mode 100644 index 000000000..1f44922f2 Binary files /dev/null and b/fonts/MortalFont40/00A5.png differ diff --git a/fonts/MortalFont40/00A6.png b/fonts/MortalFont40/00A6.png new file mode 100644 index 000000000..dccb92443 Binary files /dev/null and b/fonts/MortalFont40/00A6.png differ diff --git a/fonts/MortalFont40/00A7.png b/fonts/MortalFont40/00A7.png new file mode 100644 index 000000000..17166697c Binary files /dev/null and b/fonts/MortalFont40/00A7.png differ diff --git a/fonts/MortalFont40/00A8.png b/fonts/MortalFont40/00A8.png new file mode 100644 index 000000000..8804f0a71 Binary files /dev/null and b/fonts/MortalFont40/00A8.png differ diff --git a/fonts/MortalFont40/00A9.png b/fonts/MortalFont40/00A9.png new file mode 100644 index 000000000..011e3c514 Binary files /dev/null and b/fonts/MortalFont40/00A9.png differ diff --git a/fonts/MortalFont40/00AA.png b/fonts/MortalFont40/00AA.png new file mode 100644 index 000000000..be4f03221 Binary files /dev/null and b/fonts/MortalFont40/00AA.png differ diff --git a/fonts/MortalFont40/00AB.png b/fonts/MortalFont40/00AB.png new file mode 100644 index 000000000..653bb0d46 Binary files /dev/null and b/fonts/MortalFont40/00AB.png differ diff --git a/fonts/MortalFont40/00AC.png b/fonts/MortalFont40/00AC.png new file mode 100644 index 000000000..fc2098df8 Binary files /dev/null and b/fonts/MortalFont40/00AC.png differ diff --git a/fonts/MortalFont40/00AD.png b/fonts/MortalFont40/00AD.png new file mode 100644 index 000000000..146fab2d3 Binary files /dev/null and b/fonts/MortalFont40/00AD.png differ diff --git a/fonts/MortalFont40/00AE.png b/fonts/MortalFont40/00AE.png new file mode 100644 index 000000000..1de57b7f8 Binary files /dev/null and b/fonts/MortalFont40/00AE.png differ diff --git a/fonts/MortalFont40/00AF.png b/fonts/MortalFont40/00AF.png new file mode 100644 index 000000000..67e8a7c3c Binary files /dev/null and b/fonts/MortalFont40/00AF.png differ diff --git a/fonts/MortalFont40/00B0.png b/fonts/MortalFont40/00B0.png new file mode 100644 index 000000000..fca67c0fa Binary files /dev/null and b/fonts/MortalFont40/00B0.png differ diff --git a/fonts/MortalFont40/00B1.png b/fonts/MortalFont40/00B1.png new file mode 100644 index 000000000..af1da88e5 Binary files /dev/null and b/fonts/MortalFont40/00B1.png differ diff --git a/fonts/MortalFont40/00B2.png b/fonts/MortalFont40/00B2.png new file mode 100644 index 000000000..eee66aa1f Binary files /dev/null and b/fonts/MortalFont40/00B2.png differ diff --git a/fonts/MortalFont40/00B3.png b/fonts/MortalFont40/00B3.png new file mode 100644 index 000000000..b87a71139 Binary files /dev/null and b/fonts/MortalFont40/00B3.png differ diff --git a/fonts/MortalFont40/00B4.png b/fonts/MortalFont40/00B4.png new file mode 100644 index 000000000..47e26c0fb Binary files /dev/null and b/fonts/MortalFont40/00B4.png differ diff --git a/fonts/MortalFont40/00B6.png b/fonts/MortalFont40/00B6.png new file mode 100644 index 000000000..4fcd9eb62 Binary files /dev/null and b/fonts/MortalFont40/00B6.png differ diff --git a/fonts/MortalFont40/00B7.png b/fonts/MortalFont40/00B7.png new file mode 100644 index 000000000..7254df05e Binary files /dev/null and b/fonts/MortalFont40/00B7.png differ diff --git a/fonts/MortalFont40/00B8.png b/fonts/MortalFont40/00B8.png new file mode 100644 index 000000000..c2c168c3b Binary files /dev/null and b/fonts/MortalFont40/00B8.png differ diff --git a/fonts/MortalFont40/00B9.png b/fonts/MortalFont40/00B9.png new file mode 100644 index 000000000..142612179 Binary files /dev/null and b/fonts/MortalFont40/00B9.png differ diff --git a/fonts/MortalFont40/00BA.png b/fonts/MortalFont40/00BA.png new file mode 100644 index 000000000..4bea12ea2 Binary files /dev/null and b/fonts/MortalFont40/00BA.png differ diff --git a/fonts/MortalFont40/00BB.png b/fonts/MortalFont40/00BB.png new file mode 100644 index 000000000..9fd5d2397 Binary files /dev/null and b/fonts/MortalFont40/00BB.png differ diff --git a/fonts/MortalFont40/00BC.png b/fonts/MortalFont40/00BC.png new file mode 100644 index 000000000..2b18cc41e Binary files /dev/null and b/fonts/MortalFont40/00BC.png differ diff --git a/fonts/MortalFont40/00BD.png b/fonts/MortalFont40/00BD.png new file mode 100644 index 000000000..53f915206 Binary files /dev/null and b/fonts/MortalFont40/00BD.png differ diff --git a/fonts/MortalFont40/00BE.png b/fonts/MortalFont40/00BE.png new file mode 100644 index 000000000..621730d33 Binary files /dev/null and b/fonts/MortalFont40/00BE.png differ diff --git a/fonts/MortalFont40/00BF.png b/fonts/MortalFont40/00BF.png new file mode 100644 index 000000000..b53531337 Binary files /dev/null and b/fonts/MortalFont40/00BF.png differ diff --git a/fonts/MortalFont40/00C0.png b/fonts/MortalFont40/00C0.png new file mode 100644 index 000000000..69ff0dcc3 Binary files /dev/null and b/fonts/MortalFont40/00C0.png differ diff --git a/fonts/MortalFont40/00C1.png b/fonts/MortalFont40/00C1.png new file mode 100644 index 000000000..ce7df08b1 Binary files /dev/null and b/fonts/MortalFont40/00C1.png differ diff --git a/fonts/MortalFont40/00C2.png b/fonts/MortalFont40/00C2.png new file mode 100644 index 000000000..cd85760df Binary files /dev/null and b/fonts/MortalFont40/00C2.png differ diff --git a/fonts/MortalFont40/00C3.png b/fonts/MortalFont40/00C3.png new file mode 100644 index 000000000..47736f9fa Binary files /dev/null and b/fonts/MortalFont40/00C3.png differ diff --git a/fonts/MortalFont40/00C4.png b/fonts/MortalFont40/00C4.png new file mode 100644 index 000000000..2c3c81fcd Binary files /dev/null and b/fonts/MortalFont40/00C4.png differ diff --git a/fonts/MortalFont40/00C5.png b/fonts/MortalFont40/00C5.png new file mode 100644 index 000000000..f343cbcd0 Binary files /dev/null and b/fonts/MortalFont40/00C5.png differ diff --git a/fonts/MortalFont40/00C6.png b/fonts/MortalFont40/00C6.png new file mode 100644 index 000000000..8781d09c8 Binary files /dev/null and b/fonts/MortalFont40/00C6.png differ diff --git a/fonts/MortalFont40/00C7.png b/fonts/MortalFont40/00C7.png new file mode 100644 index 000000000..cfc0b33cf Binary files /dev/null and b/fonts/MortalFont40/00C7.png differ diff --git a/fonts/MortalFont40/00C8.png b/fonts/MortalFont40/00C8.png new file mode 100644 index 000000000..5ea51921f Binary files /dev/null and b/fonts/MortalFont40/00C8.png differ diff --git a/fonts/MortalFont40/00C9.png b/fonts/MortalFont40/00C9.png new file mode 100644 index 000000000..fb8060050 Binary files /dev/null and b/fonts/MortalFont40/00C9.png differ diff --git a/fonts/MortalFont40/00CA.png b/fonts/MortalFont40/00CA.png new file mode 100644 index 000000000..a7b8bea4b Binary files /dev/null and b/fonts/MortalFont40/00CA.png differ diff --git a/fonts/MortalFont40/00CB.png b/fonts/MortalFont40/00CB.png new file mode 100644 index 000000000..3c060149a Binary files /dev/null and b/fonts/MortalFont40/00CB.png differ diff --git a/fonts/MortalFont40/00CC.png b/fonts/MortalFont40/00CC.png new file mode 100644 index 000000000..6b4b7420c Binary files /dev/null and b/fonts/MortalFont40/00CC.png differ diff --git a/fonts/MortalFont40/00CD.png b/fonts/MortalFont40/00CD.png new file mode 100644 index 000000000..5ddee9733 Binary files /dev/null and b/fonts/MortalFont40/00CD.png differ diff --git a/fonts/MortalFont40/00CE.png b/fonts/MortalFont40/00CE.png new file mode 100644 index 000000000..3e2aa18c8 Binary files /dev/null and b/fonts/MortalFont40/00CE.png differ diff --git a/fonts/MortalFont40/00CF.png b/fonts/MortalFont40/00CF.png new file mode 100644 index 000000000..35ffd3db2 Binary files /dev/null and b/fonts/MortalFont40/00CF.png differ diff --git a/fonts/MortalFont40/00D0.png b/fonts/MortalFont40/00D0.png new file mode 100644 index 000000000..b79d1d6b6 Binary files /dev/null and b/fonts/MortalFont40/00D0.png differ diff --git a/fonts/MortalFont40/00D1.png b/fonts/MortalFont40/00D1.png new file mode 100644 index 000000000..b1f11fe5e Binary files /dev/null and b/fonts/MortalFont40/00D1.png differ diff --git a/fonts/MortalFont40/00D2.png b/fonts/MortalFont40/00D2.png new file mode 100644 index 000000000..97951d1e4 Binary files /dev/null and b/fonts/MortalFont40/00D2.png differ diff --git a/fonts/MortalFont40/00D3.png b/fonts/MortalFont40/00D3.png new file mode 100644 index 000000000..8fe5fa750 Binary files /dev/null and b/fonts/MortalFont40/00D3.png differ diff --git a/fonts/MortalFont40/00D4.png b/fonts/MortalFont40/00D4.png new file mode 100644 index 000000000..4c2bf6746 Binary files /dev/null and b/fonts/MortalFont40/00D4.png differ diff --git a/fonts/MortalFont40/00D5.png b/fonts/MortalFont40/00D5.png new file mode 100644 index 000000000..5e2418868 Binary files /dev/null and b/fonts/MortalFont40/00D5.png differ diff --git a/fonts/MortalFont40/00D6.png b/fonts/MortalFont40/00D6.png new file mode 100644 index 000000000..a9ff01182 Binary files /dev/null and b/fonts/MortalFont40/00D6.png differ diff --git a/fonts/MortalFont40/00D7.png b/fonts/MortalFont40/00D7.png new file mode 100644 index 000000000..6fc8c9be1 Binary files /dev/null and b/fonts/MortalFont40/00D7.png differ diff --git a/fonts/MortalFont40/00D8.png b/fonts/MortalFont40/00D8.png new file mode 100644 index 000000000..aa06ee80a Binary files /dev/null and b/fonts/MortalFont40/00D8.png differ diff --git a/fonts/MortalFont40/00D9.png b/fonts/MortalFont40/00D9.png new file mode 100644 index 000000000..f8ddf480a Binary files /dev/null and b/fonts/MortalFont40/00D9.png differ diff --git a/fonts/MortalFont40/00DA.png b/fonts/MortalFont40/00DA.png new file mode 100644 index 000000000..e7364c5c3 Binary files /dev/null and b/fonts/MortalFont40/00DA.png differ diff --git a/fonts/MortalFont40/00DB.png b/fonts/MortalFont40/00DB.png new file mode 100644 index 000000000..9dbd060ad Binary files /dev/null and b/fonts/MortalFont40/00DB.png differ diff --git a/fonts/MortalFont40/00DC.png b/fonts/MortalFont40/00DC.png new file mode 100644 index 000000000..837a8c78a Binary files /dev/null and b/fonts/MortalFont40/00DC.png differ diff --git a/fonts/MortalFont40/00DD.png b/fonts/MortalFont40/00DD.png new file mode 100644 index 000000000..abaeb53b9 Binary files /dev/null and b/fonts/MortalFont40/00DD.png differ diff --git a/fonts/MortalFont40/00DE.png b/fonts/MortalFont40/00DE.png new file mode 100644 index 000000000..11987f0bf Binary files /dev/null and b/fonts/MortalFont40/00DE.png differ diff --git a/fonts/MortalFont40/00DF.png b/fonts/MortalFont40/00DF.png new file mode 100644 index 000000000..5d72e3494 Binary files /dev/null and b/fonts/MortalFont40/00DF.png differ diff --git a/fonts/MortalFont40/00E0.png b/fonts/MortalFont40/00E0.png new file mode 100644 index 000000000..e251dfefb Binary files /dev/null and b/fonts/MortalFont40/00E0.png differ diff --git a/fonts/MortalFont40/00E1.png b/fonts/MortalFont40/00E1.png new file mode 100644 index 000000000..cb22b4f8a Binary files /dev/null and b/fonts/MortalFont40/00E1.png differ diff --git a/fonts/MortalFont40/00E2.png b/fonts/MortalFont40/00E2.png new file mode 100644 index 000000000..59e81dbd8 Binary files /dev/null and b/fonts/MortalFont40/00E2.png differ diff --git a/fonts/MortalFont40/00E3.png b/fonts/MortalFont40/00E3.png new file mode 100644 index 000000000..ea8903540 Binary files /dev/null and b/fonts/MortalFont40/00E3.png differ diff --git a/fonts/MortalFont40/00E4.png b/fonts/MortalFont40/00E4.png new file mode 100644 index 000000000..deb9d4b58 Binary files /dev/null and b/fonts/MortalFont40/00E4.png differ diff --git a/fonts/MortalFont40/00E5.png b/fonts/MortalFont40/00E5.png new file mode 100644 index 000000000..dbd1bb94f Binary files /dev/null and b/fonts/MortalFont40/00E5.png differ diff --git a/fonts/MortalFont40/00E6.png b/fonts/MortalFont40/00E6.png new file mode 100644 index 000000000..5bfe6af83 Binary files /dev/null and b/fonts/MortalFont40/00E6.png differ diff --git a/fonts/MortalFont40/00E7.png b/fonts/MortalFont40/00E7.png new file mode 100644 index 000000000..a379b6cdc Binary files /dev/null and b/fonts/MortalFont40/00E7.png differ diff --git a/fonts/MortalFont40/00E8.png b/fonts/MortalFont40/00E8.png new file mode 100644 index 000000000..782f8a62c Binary files /dev/null and b/fonts/MortalFont40/00E8.png differ diff --git a/fonts/MortalFont40/00E9.png b/fonts/MortalFont40/00E9.png new file mode 100644 index 000000000..6810bb84a Binary files /dev/null and b/fonts/MortalFont40/00E9.png differ diff --git a/fonts/MortalFont40/00EA.png b/fonts/MortalFont40/00EA.png new file mode 100644 index 000000000..3a4451fcf Binary files /dev/null and b/fonts/MortalFont40/00EA.png differ diff --git a/fonts/MortalFont40/00EB.png b/fonts/MortalFont40/00EB.png new file mode 100644 index 000000000..739eac254 Binary files /dev/null and b/fonts/MortalFont40/00EB.png differ diff --git a/fonts/MortalFont40/00EC.png b/fonts/MortalFont40/00EC.png new file mode 100644 index 000000000..9e235996e Binary files /dev/null and b/fonts/MortalFont40/00EC.png differ diff --git a/fonts/MortalFont40/00ED.png b/fonts/MortalFont40/00ED.png new file mode 100644 index 000000000..926a27e96 Binary files /dev/null and b/fonts/MortalFont40/00ED.png differ diff --git a/fonts/MortalFont40/00EE.png b/fonts/MortalFont40/00EE.png new file mode 100644 index 000000000..d8d2b2316 Binary files /dev/null and b/fonts/MortalFont40/00EE.png differ diff --git a/fonts/MortalFont40/00EF.png b/fonts/MortalFont40/00EF.png new file mode 100644 index 000000000..ed4cd51be Binary files /dev/null and b/fonts/MortalFont40/00EF.png differ diff --git a/fonts/MortalFont40/00F0.png b/fonts/MortalFont40/00F0.png new file mode 100644 index 000000000..015a3611f Binary files /dev/null and b/fonts/MortalFont40/00F0.png differ diff --git a/fonts/MortalFont40/00F1.png b/fonts/MortalFont40/00F1.png new file mode 100644 index 000000000..96589b901 Binary files /dev/null and b/fonts/MortalFont40/00F1.png differ diff --git a/fonts/MortalFont40/00F2.png b/fonts/MortalFont40/00F2.png new file mode 100644 index 000000000..2f49e276f Binary files /dev/null and b/fonts/MortalFont40/00F2.png differ diff --git a/fonts/MortalFont40/00F3.png b/fonts/MortalFont40/00F3.png new file mode 100644 index 000000000..1aa7ed631 Binary files /dev/null and b/fonts/MortalFont40/00F3.png differ diff --git a/fonts/MortalFont40/00F4.png b/fonts/MortalFont40/00F4.png new file mode 100644 index 000000000..585d7002f Binary files /dev/null and b/fonts/MortalFont40/00F4.png differ diff --git a/fonts/MortalFont40/00F5.png b/fonts/MortalFont40/00F5.png new file mode 100644 index 000000000..6c9c109d2 Binary files /dev/null and b/fonts/MortalFont40/00F5.png differ diff --git a/fonts/MortalFont40/00F6.png b/fonts/MortalFont40/00F6.png new file mode 100644 index 000000000..23a614feb Binary files /dev/null and b/fonts/MortalFont40/00F6.png differ diff --git a/fonts/MortalFont40/00F7.png b/fonts/MortalFont40/00F7.png new file mode 100644 index 000000000..73a420771 Binary files /dev/null and b/fonts/MortalFont40/00F7.png differ diff --git a/fonts/MortalFont40/00F8.png b/fonts/MortalFont40/00F8.png new file mode 100644 index 000000000..bf7260741 Binary files /dev/null and b/fonts/MortalFont40/00F8.png differ diff --git a/fonts/MortalFont40/00F9.png b/fonts/MortalFont40/00F9.png new file mode 100644 index 000000000..3b2b0d4fe Binary files /dev/null and b/fonts/MortalFont40/00F9.png differ diff --git a/fonts/MortalFont40/00FA.png b/fonts/MortalFont40/00FA.png new file mode 100644 index 000000000..a066552da Binary files /dev/null and b/fonts/MortalFont40/00FA.png differ diff --git a/fonts/MortalFont40/00FB.png b/fonts/MortalFont40/00FB.png new file mode 100644 index 000000000..7ddf6aa86 Binary files /dev/null and b/fonts/MortalFont40/00FB.png differ diff --git a/fonts/MortalFont40/00FC.png b/fonts/MortalFont40/00FC.png new file mode 100644 index 000000000..478ecc538 Binary files /dev/null and b/fonts/MortalFont40/00FC.png differ diff --git a/fonts/MortalFont40/00FD.png b/fonts/MortalFont40/00FD.png new file mode 100644 index 000000000..da57ee5e7 Binary files /dev/null and b/fonts/MortalFont40/00FD.png differ diff --git a/fonts/MortalFont40/00FE.png b/fonts/MortalFont40/00FE.png new file mode 100644 index 000000000..e1eb7a22a Binary files /dev/null and b/fonts/MortalFont40/00FE.png differ diff --git a/fonts/MortalFont40/00FF.png b/fonts/MortalFont40/00FF.png new file mode 100644 index 000000000..5a42eef8c Binary files /dev/null and b/fonts/MortalFont40/00FF.png differ diff --git a/fonts/MortalFont40/0100.png b/fonts/MortalFont40/0100.png new file mode 100644 index 000000000..dfcc0ba43 Binary files /dev/null and b/fonts/MortalFont40/0100.png differ diff --git a/fonts/MortalFont40/0101.png b/fonts/MortalFont40/0101.png new file mode 100644 index 000000000..31dc21a0c Binary files /dev/null and b/fonts/MortalFont40/0101.png differ diff --git a/fonts/MortalFont40/0102.png b/fonts/MortalFont40/0102.png new file mode 100644 index 000000000..0198f675a Binary files /dev/null and b/fonts/MortalFont40/0102.png differ diff --git a/fonts/MortalFont40/0103.png b/fonts/MortalFont40/0103.png new file mode 100644 index 000000000..ee2912a13 Binary files /dev/null and b/fonts/MortalFont40/0103.png differ diff --git a/fonts/MortalFont40/0104.png b/fonts/MortalFont40/0104.png new file mode 100644 index 000000000..1b779886f Binary files /dev/null and b/fonts/MortalFont40/0104.png differ diff --git a/fonts/MortalFont40/0105.png b/fonts/MortalFont40/0105.png new file mode 100644 index 000000000..c159aa797 Binary files /dev/null and b/fonts/MortalFont40/0105.png differ diff --git a/fonts/MortalFont40/0106.png b/fonts/MortalFont40/0106.png new file mode 100644 index 000000000..d3a543101 Binary files /dev/null and b/fonts/MortalFont40/0106.png differ diff --git a/fonts/MortalFont40/0107.png b/fonts/MortalFont40/0107.png new file mode 100644 index 000000000..c39c8e987 Binary files /dev/null and b/fonts/MortalFont40/0107.png differ diff --git a/fonts/MortalFont40/0108.png b/fonts/MortalFont40/0108.png new file mode 100644 index 000000000..561b043e9 Binary files /dev/null and b/fonts/MortalFont40/0108.png differ diff --git a/fonts/MortalFont40/0109.png b/fonts/MortalFont40/0109.png new file mode 100644 index 000000000..088cb5ad3 Binary files /dev/null and b/fonts/MortalFont40/0109.png differ diff --git a/fonts/MortalFont40/010C.png b/fonts/MortalFont40/010C.png new file mode 100644 index 000000000..2072a7d59 Binary files /dev/null and b/fonts/MortalFont40/010C.png differ diff --git a/fonts/MortalFont40/010D.png b/fonts/MortalFont40/010D.png new file mode 100644 index 000000000..2f780b405 Binary files /dev/null and b/fonts/MortalFont40/010D.png differ diff --git a/fonts/MortalFont40/010E.png b/fonts/MortalFont40/010E.png new file mode 100644 index 000000000..bf70f4501 Binary files /dev/null and b/fonts/MortalFont40/010E.png differ diff --git a/fonts/MortalFont40/010F.png b/fonts/MortalFont40/010F.png new file mode 100644 index 000000000..36a935783 Binary files /dev/null and b/fonts/MortalFont40/010F.png differ diff --git a/fonts/MortalFont40/0111.png b/fonts/MortalFont40/0111.png new file mode 100644 index 000000000..5439db0c3 Binary files /dev/null and b/fonts/MortalFont40/0111.png differ diff --git a/fonts/MortalFont40/0112.png b/fonts/MortalFont40/0112.png new file mode 100644 index 000000000..b6003fc28 Binary files /dev/null and b/fonts/MortalFont40/0112.png differ diff --git a/fonts/MortalFont40/0113.png b/fonts/MortalFont40/0113.png new file mode 100644 index 000000000..0324b6663 Binary files /dev/null and b/fonts/MortalFont40/0113.png differ diff --git a/fonts/MortalFont40/0118.png b/fonts/MortalFont40/0118.png new file mode 100644 index 000000000..eedf6ea39 Binary files /dev/null and b/fonts/MortalFont40/0118.png differ diff --git a/fonts/MortalFont40/0119.png b/fonts/MortalFont40/0119.png new file mode 100644 index 000000000..fbe062654 Binary files /dev/null and b/fonts/MortalFont40/0119.png differ diff --git a/fonts/MortalFont40/011A.png b/fonts/MortalFont40/011A.png new file mode 100644 index 000000000..49d66986e Binary files /dev/null and b/fonts/MortalFont40/011A.png differ diff --git a/fonts/MortalFont40/011B.png b/fonts/MortalFont40/011B.png new file mode 100644 index 000000000..257f71213 Binary files /dev/null and b/fonts/MortalFont40/011B.png differ diff --git a/fonts/MortalFont40/011C.png b/fonts/MortalFont40/011C.png new file mode 100644 index 000000000..a208a86fa Binary files /dev/null and b/fonts/MortalFont40/011C.png differ diff --git a/fonts/MortalFont40/011D.png b/fonts/MortalFont40/011D.png new file mode 100644 index 000000000..e0f36cc1e Binary files /dev/null and b/fonts/MortalFont40/011D.png differ diff --git a/fonts/MortalFont40/0124.png b/fonts/MortalFont40/0124.png new file mode 100644 index 000000000..669669601 Binary files /dev/null and b/fonts/MortalFont40/0124.png differ diff --git a/fonts/MortalFont40/0125.png b/fonts/MortalFont40/0125.png new file mode 100644 index 000000000..b935eb9c5 Binary files /dev/null and b/fonts/MortalFont40/0125.png differ diff --git a/fonts/MortalFont40/0127.png b/fonts/MortalFont40/0127.png new file mode 100644 index 000000000..e155b7402 Binary files /dev/null and b/fonts/MortalFont40/0127.png differ diff --git a/fonts/MortalFont40/012A.png b/fonts/MortalFont40/012A.png new file mode 100644 index 000000000..29b382fad Binary files /dev/null and b/fonts/MortalFont40/012A.png differ diff --git a/fonts/MortalFont40/012B.png b/fonts/MortalFont40/012B.png new file mode 100644 index 000000000..777249e27 Binary files /dev/null and b/fonts/MortalFont40/012B.png differ diff --git a/fonts/MortalFont40/0134.png b/fonts/MortalFont40/0134.png new file mode 100644 index 000000000..53aa9c061 Binary files /dev/null and b/fonts/MortalFont40/0134.png differ diff --git a/fonts/MortalFont40/0135.png b/fonts/MortalFont40/0135.png new file mode 100644 index 000000000..59b46e135 Binary files /dev/null and b/fonts/MortalFont40/0135.png differ diff --git a/fonts/MortalFont40/0139.png b/fonts/MortalFont40/0139.png new file mode 100644 index 000000000..64c279d77 Binary files /dev/null and b/fonts/MortalFont40/0139.png differ diff --git a/fonts/MortalFont40/013A.png b/fonts/MortalFont40/013A.png new file mode 100644 index 000000000..76a635aa9 Binary files /dev/null and b/fonts/MortalFont40/013A.png differ diff --git a/fonts/MortalFont40/013D.png b/fonts/MortalFont40/013D.png new file mode 100644 index 000000000..1ae530f2d Binary files /dev/null and b/fonts/MortalFont40/013D.png differ diff --git a/fonts/MortalFont40/013E.png b/fonts/MortalFont40/013E.png new file mode 100644 index 000000000..81458921a Binary files /dev/null and b/fonts/MortalFont40/013E.png differ diff --git a/fonts/MortalFont40/0141.png b/fonts/MortalFont40/0141.png new file mode 100644 index 000000000..023bad6b3 Binary files /dev/null and b/fonts/MortalFont40/0141.png differ diff --git a/fonts/MortalFont40/0142.png b/fonts/MortalFont40/0142.png new file mode 100644 index 000000000..5f9992a97 Binary files /dev/null and b/fonts/MortalFont40/0142.png differ diff --git a/fonts/MortalFont40/0143.png b/fonts/MortalFont40/0143.png new file mode 100644 index 000000000..d12a42562 Binary files /dev/null and b/fonts/MortalFont40/0143.png differ diff --git a/fonts/MortalFont40/0144.png b/fonts/MortalFont40/0144.png new file mode 100644 index 000000000..17aef42c0 Binary files /dev/null and b/fonts/MortalFont40/0144.png differ diff --git a/fonts/MortalFont40/0147.png b/fonts/MortalFont40/0147.png new file mode 100644 index 000000000..e6c606547 Binary files /dev/null and b/fonts/MortalFont40/0147.png differ diff --git a/fonts/MortalFont40/0148.png b/fonts/MortalFont40/0148.png new file mode 100644 index 000000000..21078038e Binary files /dev/null and b/fonts/MortalFont40/0148.png differ diff --git a/fonts/MortalFont40/014B.png b/fonts/MortalFont40/014B.png new file mode 100644 index 000000000..b9e30575b Binary files /dev/null and b/fonts/MortalFont40/014B.png differ diff --git a/fonts/MortalFont40/014C.png b/fonts/MortalFont40/014C.png new file mode 100644 index 000000000..e2603b2b9 Binary files /dev/null and b/fonts/MortalFont40/014C.png differ diff --git a/fonts/MortalFont40/014D.png b/fonts/MortalFont40/014D.png new file mode 100644 index 000000000..27830824b Binary files /dev/null and b/fonts/MortalFont40/014D.png differ diff --git a/fonts/MortalFont40/0150.png b/fonts/MortalFont40/0150.png new file mode 100644 index 000000000..1e8bb472e Binary files /dev/null and b/fonts/MortalFont40/0150.png differ diff --git a/fonts/MortalFont40/0151.png b/fonts/MortalFont40/0151.png new file mode 100644 index 000000000..a90690800 Binary files /dev/null and b/fonts/MortalFont40/0151.png differ diff --git a/fonts/MortalFont40/0152.png b/fonts/MortalFont40/0152.png new file mode 100644 index 000000000..e131b8a36 Binary files /dev/null and b/fonts/MortalFont40/0152.png differ diff --git a/fonts/MortalFont40/0153.png b/fonts/MortalFont40/0153.png new file mode 100644 index 000000000..51bc43f97 Binary files /dev/null and b/fonts/MortalFont40/0153.png differ diff --git a/fonts/MortalFont40/0154.png b/fonts/MortalFont40/0154.png new file mode 100644 index 000000000..00fd7e216 Binary files /dev/null and b/fonts/MortalFont40/0154.png differ diff --git a/fonts/MortalFont40/0155.png b/fonts/MortalFont40/0155.png new file mode 100644 index 000000000..7c937fd4d Binary files /dev/null and b/fonts/MortalFont40/0155.png differ diff --git a/fonts/MortalFont40/0158.png b/fonts/MortalFont40/0158.png new file mode 100644 index 000000000..48805aa6d Binary files /dev/null and b/fonts/MortalFont40/0158.png differ diff --git a/fonts/MortalFont40/0159.png b/fonts/MortalFont40/0159.png new file mode 100644 index 000000000..35d256587 Binary files /dev/null and b/fonts/MortalFont40/0159.png differ diff --git a/fonts/MortalFont40/015A.png b/fonts/MortalFont40/015A.png new file mode 100644 index 000000000..7eed21703 Binary files /dev/null and b/fonts/MortalFont40/015A.png differ diff --git a/fonts/MortalFont40/015B.png b/fonts/MortalFont40/015B.png new file mode 100644 index 000000000..63bbce8f4 Binary files /dev/null and b/fonts/MortalFont40/015B.png differ diff --git a/fonts/MortalFont40/015C.png b/fonts/MortalFont40/015C.png new file mode 100644 index 000000000..9fa439011 Binary files /dev/null and b/fonts/MortalFont40/015C.png differ diff --git a/fonts/MortalFont40/015D.png b/fonts/MortalFont40/015D.png new file mode 100644 index 000000000..ed66058df Binary files /dev/null and b/fonts/MortalFont40/015D.png differ diff --git a/fonts/MortalFont40/015E.png b/fonts/MortalFont40/015E.png new file mode 100644 index 000000000..94885854e Binary files /dev/null and b/fonts/MortalFont40/015E.png differ diff --git a/fonts/MortalFont40/015F.png b/fonts/MortalFont40/015F.png new file mode 100644 index 000000000..d9bfd1f2e Binary files /dev/null and b/fonts/MortalFont40/015F.png differ diff --git a/fonts/MortalFont40/0160.png b/fonts/MortalFont40/0160.png new file mode 100644 index 000000000..77ff1f526 Binary files /dev/null and b/fonts/MortalFont40/0160.png differ diff --git a/fonts/MortalFont40/0161.png b/fonts/MortalFont40/0161.png new file mode 100644 index 000000000..48fa08bf1 Binary files /dev/null and b/fonts/MortalFont40/0161.png differ diff --git a/fonts/MortalFont40/0162.png b/fonts/MortalFont40/0162.png new file mode 100644 index 000000000..d40989324 Binary files /dev/null and b/fonts/MortalFont40/0162.png differ diff --git a/fonts/MortalFont40/0163.png b/fonts/MortalFont40/0163.png new file mode 100644 index 000000000..75d224ab3 Binary files /dev/null and b/fonts/MortalFont40/0163.png differ diff --git a/fonts/MortalFont40/0164.png b/fonts/MortalFont40/0164.png new file mode 100644 index 000000000..6ead2d2f9 Binary files /dev/null and b/fonts/MortalFont40/0164.png differ diff --git a/fonts/MortalFont40/0165.png b/fonts/MortalFont40/0165.png new file mode 100644 index 000000000..4e508d944 Binary files /dev/null and b/fonts/MortalFont40/0165.png differ diff --git a/fonts/MortalFont40/016A.png b/fonts/MortalFont40/016A.png new file mode 100644 index 000000000..bcc1b5434 Binary files /dev/null and b/fonts/MortalFont40/016A.png differ diff --git a/fonts/MortalFont40/016B.png b/fonts/MortalFont40/016B.png new file mode 100644 index 000000000..d7192fcfb Binary files /dev/null and b/fonts/MortalFont40/016B.png differ diff --git a/fonts/MortalFont40/016C.png b/fonts/MortalFont40/016C.png new file mode 100644 index 000000000..42e1f540b Binary files /dev/null and b/fonts/MortalFont40/016C.png differ diff --git a/fonts/MortalFont40/016D.png b/fonts/MortalFont40/016D.png new file mode 100644 index 000000000..732e6be51 Binary files /dev/null and b/fonts/MortalFont40/016D.png differ diff --git a/fonts/MortalFont40/016E.png b/fonts/MortalFont40/016E.png new file mode 100644 index 000000000..99dc29ab9 Binary files /dev/null and b/fonts/MortalFont40/016E.png differ diff --git a/fonts/MortalFont40/016F.png b/fonts/MortalFont40/016F.png new file mode 100644 index 000000000..0fdeed7ef Binary files /dev/null and b/fonts/MortalFont40/016F.png differ diff --git a/fonts/MortalFont40/0170.png b/fonts/MortalFont40/0170.png new file mode 100644 index 000000000..5c51a7ae8 Binary files /dev/null and b/fonts/MortalFont40/0170.png differ diff --git a/fonts/MortalFont40/0171.png b/fonts/MortalFont40/0171.png new file mode 100644 index 000000000..30052056b Binary files /dev/null and b/fonts/MortalFont40/0171.png differ diff --git a/fonts/MortalFont40/0179.png b/fonts/MortalFont40/0179.png new file mode 100644 index 000000000..6cfa548c2 Binary files /dev/null and b/fonts/MortalFont40/0179.png differ diff --git a/fonts/MortalFont40/017A.png b/fonts/MortalFont40/017A.png new file mode 100644 index 000000000..fa6cbd443 Binary files /dev/null and b/fonts/MortalFont40/017A.png differ diff --git a/fonts/MortalFont40/017B.png b/fonts/MortalFont40/017B.png new file mode 100644 index 000000000..24beaee83 Binary files /dev/null and b/fonts/MortalFont40/017B.png differ diff --git a/fonts/MortalFont40/017C.png b/fonts/MortalFont40/017C.png new file mode 100644 index 000000000..8a1b344df Binary files /dev/null and b/fonts/MortalFont40/017C.png differ diff --git a/fonts/MortalFont40/017D.png b/fonts/MortalFont40/017D.png new file mode 100644 index 000000000..3dbe996c2 Binary files /dev/null and b/fonts/MortalFont40/017D.png differ diff --git a/fonts/MortalFont40/017E.png b/fonts/MortalFont40/017E.png new file mode 100644 index 000000000..1b5329431 Binary files /dev/null and b/fonts/MortalFont40/017E.png differ diff --git a/fonts/MortalFont40/0193.png b/fonts/MortalFont40/0193.png new file mode 100644 index 000000000..54022b83f Binary files /dev/null and b/fonts/MortalFont40/0193.png differ diff --git a/fonts/MortalFont40/01C2.png b/fonts/MortalFont40/01C2.png new file mode 100644 index 000000000..7f025d2df Binary files /dev/null and b/fonts/MortalFont40/01C2.png differ diff --git a/fonts/MortalFont40/01CD.png b/fonts/MortalFont40/01CD.png new file mode 100644 index 000000000..75c527fd0 Binary files /dev/null and b/fonts/MortalFont40/01CD.png differ diff --git a/fonts/MortalFont40/01CE.png b/fonts/MortalFont40/01CE.png new file mode 100644 index 000000000..a508b37e3 Binary files /dev/null and b/fonts/MortalFont40/01CE.png differ diff --git a/fonts/MortalFont40/01D0.png b/fonts/MortalFont40/01D0.png new file mode 100644 index 000000000..142651480 Binary files /dev/null and b/fonts/MortalFont40/01D0.png differ diff --git a/fonts/MortalFont40/01D1.png b/fonts/MortalFont40/01D1.png new file mode 100644 index 000000000..46aabede6 Binary files /dev/null and b/fonts/MortalFont40/01D1.png differ diff --git a/fonts/MortalFont40/01D2.png b/fonts/MortalFont40/01D2.png new file mode 100644 index 000000000..bf820686f Binary files /dev/null and b/fonts/MortalFont40/01D2.png differ diff --git a/fonts/MortalFont40/01D4.png b/fonts/MortalFont40/01D4.png new file mode 100644 index 000000000..38a38c50c Binary files /dev/null and b/fonts/MortalFont40/01D4.png differ diff --git a/fonts/MortalFont40/01D6.png b/fonts/MortalFont40/01D6.png new file mode 100644 index 000000000..65d9d9b82 Binary files /dev/null and b/fonts/MortalFont40/01D6.png differ diff --git a/fonts/MortalFont40/01D8.png b/fonts/MortalFont40/01D8.png new file mode 100644 index 000000000..a7235f5dc Binary files /dev/null and b/fonts/MortalFont40/01D8.png differ diff --git a/fonts/MortalFont40/01DA.png b/fonts/MortalFont40/01DA.png new file mode 100644 index 000000000..5e10abb66 Binary files /dev/null and b/fonts/MortalFont40/01DA.png differ diff --git a/fonts/MortalFont40/01DC.png b/fonts/MortalFont40/01DC.png new file mode 100644 index 000000000..e50327897 Binary files /dev/null and b/fonts/MortalFont40/01DC.png differ diff --git a/fonts/MortalFont40/01F8.png b/fonts/MortalFont40/01F8.png new file mode 100644 index 000000000..5ee0f1d1f Binary files /dev/null and b/fonts/MortalFont40/01F8.png differ diff --git a/fonts/MortalFont40/01F9.png b/fonts/MortalFont40/01F9.png new file mode 100644 index 000000000..7a71ba3c6 Binary files /dev/null and b/fonts/MortalFont40/01F9.png differ diff --git a/fonts/MortalFont40/01FD.png b/fonts/MortalFont40/01FD.png new file mode 100644 index 000000000..b8e403fdb Binary files /dev/null and b/fonts/MortalFont40/01FD.png differ diff --git a/fonts/MortalFont40/0250.png b/fonts/MortalFont40/0250.png new file mode 100644 index 000000000..a8d9d4f79 Binary files /dev/null and b/fonts/MortalFont40/0250.png differ diff --git a/fonts/MortalFont40/0251.png b/fonts/MortalFont40/0251.png new file mode 100644 index 000000000..e8ac8dd5c Binary files /dev/null and b/fonts/MortalFont40/0251.png differ diff --git a/fonts/MortalFont40/0252.png b/fonts/MortalFont40/0252.png new file mode 100644 index 000000000..7efbd626d Binary files /dev/null and b/fonts/MortalFont40/0252.png differ diff --git a/fonts/MortalFont40/0253.png b/fonts/MortalFont40/0253.png new file mode 100644 index 000000000..cc3fdc383 Binary files /dev/null and b/fonts/MortalFont40/0253.png differ diff --git a/fonts/MortalFont40/0254.png b/fonts/MortalFont40/0254.png new file mode 100644 index 000000000..702d28a00 Binary files /dev/null and b/fonts/MortalFont40/0254.png differ diff --git a/fonts/MortalFont40/0255.png b/fonts/MortalFont40/0255.png new file mode 100644 index 000000000..19075c115 Binary files /dev/null and b/fonts/MortalFont40/0255.png differ diff --git a/fonts/MortalFont40/0256.png b/fonts/MortalFont40/0256.png new file mode 100644 index 000000000..0ccbcf890 Binary files /dev/null and b/fonts/MortalFont40/0256.png differ diff --git a/fonts/MortalFont40/0257.png b/fonts/MortalFont40/0257.png new file mode 100644 index 000000000..1e867ddc4 Binary files /dev/null and b/fonts/MortalFont40/0257.png differ diff --git a/fonts/MortalFont40/0258.png b/fonts/MortalFont40/0258.png new file mode 100644 index 000000000..3f44ef1a5 Binary files /dev/null and b/fonts/MortalFont40/0258.png differ diff --git a/fonts/MortalFont40/0259.png b/fonts/MortalFont40/0259.png new file mode 100644 index 000000000..ee38abb24 Binary files /dev/null and b/fonts/MortalFont40/0259.png differ diff --git a/fonts/MortalFont40/025A.png b/fonts/MortalFont40/025A.png new file mode 100644 index 000000000..f02951c92 Binary files /dev/null and b/fonts/MortalFont40/025A.png differ diff --git a/fonts/MortalFont40/025C.png b/fonts/MortalFont40/025C.png new file mode 100644 index 000000000..5a82a8ff5 Binary files /dev/null and b/fonts/MortalFont40/025C.png differ diff --git a/fonts/MortalFont40/025E.png b/fonts/MortalFont40/025E.png new file mode 100644 index 000000000..91f6297e1 Binary files /dev/null and b/fonts/MortalFont40/025E.png differ diff --git a/fonts/MortalFont40/025F.png b/fonts/MortalFont40/025F.png new file mode 100644 index 000000000..981e71267 Binary files /dev/null and b/fonts/MortalFont40/025F.png differ diff --git a/fonts/MortalFont40/0260.png b/fonts/MortalFont40/0260.png new file mode 100644 index 000000000..414809418 Binary files /dev/null and b/fonts/MortalFont40/0260.png differ diff --git a/fonts/MortalFont40/0261.png b/fonts/MortalFont40/0261.png new file mode 100644 index 000000000..33c635ab9 Binary files /dev/null and b/fonts/MortalFont40/0261.png differ diff --git a/fonts/MortalFont40/0264.png b/fonts/MortalFont40/0264.png new file mode 100644 index 000000000..9b31eefca Binary files /dev/null and b/fonts/MortalFont40/0264.png differ diff --git a/fonts/MortalFont40/0265.png b/fonts/MortalFont40/0265.png new file mode 100644 index 000000000..e9d352589 Binary files /dev/null and b/fonts/MortalFont40/0265.png differ diff --git a/fonts/MortalFont40/0266.png b/fonts/MortalFont40/0266.png new file mode 100644 index 000000000..73ccbf4a7 Binary files /dev/null and b/fonts/MortalFont40/0266.png differ diff --git a/fonts/MortalFont40/0267.png b/fonts/MortalFont40/0267.png new file mode 100644 index 000000000..f1f139160 Binary files /dev/null and b/fonts/MortalFont40/0267.png differ diff --git a/fonts/MortalFont40/0268.png b/fonts/MortalFont40/0268.png new file mode 100644 index 000000000..3ab1810b2 Binary files /dev/null and b/fonts/MortalFont40/0268.png differ diff --git a/fonts/MortalFont40/026C.png b/fonts/MortalFont40/026C.png new file mode 100644 index 000000000..f501052f5 Binary files /dev/null and b/fonts/MortalFont40/026C.png differ diff --git a/fonts/MortalFont40/026D.png b/fonts/MortalFont40/026D.png new file mode 100644 index 000000000..7f8c5fcf5 Binary files /dev/null and b/fonts/MortalFont40/026D.png differ diff --git a/fonts/MortalFont40/026E.png b/fonts/MortalFont40/026E.png new file mode 100644 index 000000000..76875a281 Binary files /dev/null and b/fonts/MortalFont40/026E.png differ diff --git a/fonts/MortalFont40/026F.png b/fonts/MortalFont40/026F.png new file mode 100644 index 000000000..3cfaea032 Binary files /dev/null and b/fonts/MortalFont40/026F.png differ diff --git a/fonts/MortalFont40/0270.png b/fonts/MortalFont40/0270.png new file mode 100644 index 000000000..a60719a6b Binary files /dev/null and b/fonts/MortalFont40/0270.png differ diff --git a/fonts/MortalFont40/0271.png b/fonts/MortalFont40/0271.png new file mode 100644 index 000000000..87d5a5566 Binary files /dev/null and b/fonts/MortalFont40/0271.png differ diff --git a/fonts/MortalFont40/0272.png b/fonts/MortalFont40/0272.png new file mode 100644 index 000000000..b8c3485cb Binary files /dev/null and b/fonts/MortalFont40/0272.png differ diff --git a/fonts/MortalFont40/0273.png b/fonts/MortalFont40/0273.png new file mode 100644 index 000000000..631f72989 Binary files /dev/null and b/fonts/MortalFont40/0273.png differ diff --git a/fonts/MortalFont40/0275.png b/fonts/MortalFont40/0275.png new file mode 100644 index 000000000..7d1f7b328 Binary files /dev/null and b/fonts/MortalFont40/0275.png differ diff --git a/fonts/MortalFont40/0279.png b/fonts/MortalFont40/0279.png new file mode 100644 index 000000000..39c305c4d Binary files /dev/null and b/fonts/MortalFont40/0279.png differ diff --git a/fonts/MortalFont40/027A.png b/fonts/MortalFont40/027A.png new file mode 100644 index 000000000..ceadc17b6 Binary files /dev/null and b/fonts/MortalFont40/027A.png differ diff --git a/fonts/MortalFont40/027B.png b/fonts/MortalFont40/027B.png new file mode 100644 index 000000000..d6ec60545 Binary files /dev/null and b/fonts/MortalFont40/027B.png differ diff --git a/fonts/MortalFont40/027D.png b/fonts/MortalFont40/027D.png new file mode 100644 index 000000000..40c53aafb Binary files /dev/null and b/fonts/MortalFont40/027D.png differ diff --git a/fonts/MortalFont40/027E.png b/fonts/MortalFont40/027E.png new file mode 100644 index 000000000..7c4ac8459 Binary files /dev/null and b/fonts/MortalFont40/027E.png differ diff --git a/fonts/MortalFont40/0281.png b/fonts/MortalFont40/0281.png new file mode 100644 index 000000000..a264122fb Binary files /dev/null and b/fonts/MortalFont40/0281.png differ diff --git a/fonts/MortalFont40/0282.png b/fonts/MortalFont40/0282.png new file mode 100644 index 000000000..4e6938a45 Binary files /dev/null and b/fonts/MortalFont40/0282.png differ diff --git a/fonts/MortalFont40/0283.png b/fonts/MortalFont40/0283.png new file mode 100644 index 000000000..9e1512474 Binary files /dev/null and b/fonts/MortalFont40/0283.png differ diff --git a/fonts/MortalFont40/0284.png b/fonts/MortalFont40/0284.png new file mode 100644 index 000000000..5b3482df9 Binary files /dev/null and b/fonts/MortalFont40/0284.png differ diff --git a/fonts/MortalFont40/0288.png b/fonts/MortalFont40/0288.png new file mode 100644 index 000000000..d240d5cbc Binary files /dev/null and b/fonts/MortalFont40/0288.png differ diff --git a/fonts/MortalFont40/0289.png b/fonts/MortalFont40/0289.png new file mode 100644 index 000000000..cd9d7f73f Binary files /dev/null and b/fonts/MortalFont40/0289.png differ diff --git a/fonts/MortalFont40/028A.png b/fonts/MortalFont40/028A.png new file mode 100644 index 000000000..d120f6dfd Binary files /dev/null and b/fonts/MortalFont40/028A.png differ diff --git a/fonts/MortalFont40/028B.png b/fonts/MortalFont40/028B.png new file mode 100644 index 000000000..754f058a5 Binary files /dev/null and b/fonts/MortalFont40/028B.png differ diff --git a/fonts/MortalFont40/028C.png b/fonts/MortalFont40/028C.png new file mode 100644 index 000000000..52c518c55 Binary files /dev/null and b/fonts/MortalFont40/028C.png differ diff --git a/fonts/MortalFont40/028D.png b/fonts/MortalFont40/028D.png new file mode 100644 index 000000000..f07a2f9c3 Binary files /dev/null and b/fonts/MortalFont40/028D.png differ diff --git a/fonts/MortalFont40/028E.png b/fonts/MortalFont40/028E.png new file mode 100644 index 000000000..ad02ebc62 Binary files /dev/null and b/fonts/MortalFont40/028E.png differ diff --git a/fonts/MortalFont40/0290.png b/fonts/MortalFont40/0290.png new file mode 100644 index 000000000..0205a4da5 Binary files /dev/null and b/fonts/MortalFont40/0290.png differ diff --git a/fonts/MortalFont40/0291.png b/fonts/MortalFont40/0291.png new file mode 100644 index 000000000..27a5e5830 Binary files /dev/null and b/fonts/MortalFont40/0291.png differ diff --git a/fonts/MortalFont40/0292.png b/fonts/MortalFont40/0292.png new file mode 100644 index 000000000..279cd2310 Binary files /dev/null and b/fonts/MortalFont40/0292.png differ diff --git a/fonts/MortalFont40/0294.png b/fonts/MortalFont40/0294.png new file mode 100644 index 000000000..cfea57c5b Binary files /dev/null and b/fonts/MortalFont40/0294.png differ diff --git a/fonts/MortalFont40/0295.png b/fonts/MortalFont40/0295.png new file mode 100644 index 000000000..abe5f9da4 Binary files /dev/null and b/fonts/MortalFont40/0295.png differ diff --git a/fonts/MortalFont40/0298.png b/fonts/MortalFont40/0298.png new file mode 100644 index 000000000..866a86ce3 Binary files /dev/null and b/fonts/MortalFont40/0298.png differ diff --git a/fonts/MortalFont40/029D.png b/fonts/MortalFont40/029D.png new file mode 100644 index 000000000..69d5f9c80 Binary files /dev/null and b/fonts/MortalFont40/029D.png differ diff --git a/fonts/MortalFont40/02A1.png b/fonts/MortalFont40/02A1.png new file mode 100644 index 000000000..bfe6ef906 Binary files /dev/null and b/fonts/MortalFont40/02A1.png differ diff --git a/fonts/MortalFont40/02A2.png b/fonts/MortalFont40/02A2.png new file mode 100644 index 000000000..22e5fbb48 Binary files /dev/null and b/fonts/MortalFont40/02A2.png differ diff --git a/fonts/MortalFont40/02C7.png b/fonts/MortalFont40/02C7.png new file mode 100644 index 000000000..7cd8c680a Binary files /dev/null and b/fonts/MortalFont40/02C7.png differ diff --git a/fonts/MortalFont40/02C8.png b/fonts/MortalFont40/02C8.png new file mode 100644 index 000000000..8f3847bdd Binary files /dev/null and b/fonts/MortalFont40/02C8.png differ diff --git a/fonts/MortalFont40/02CC.png b/fonts/MortalFont40/02CC.png new file mode 100644 index 000000000..8377613c6 Binary files /dev/null and b/fonts/MortalFont40/02CC.png differ diff --git a/fonts/MortalFont40/02D0.png b/fonts/MortalFont40/02D0.png new file mode 100644 index 000000000..31f79f2a3 Binary files /dev/null and b/fonts/MortalFont40/02D0.png differ diff --git a/fonts/MortalFont40/02D1.png b/fonts/MortalFont40/02D1.png new file mode 100644 index 000000000..84ef658e0 Binary files /dev/null and b/fonts/MortalFont40/02D1.png differ diff --git a/fonts/MortalFont40/02D8.png b/fonts/MortalFont40/02D8.png new file mode 100644 index 000000000..66bab1e73 Binary files /dev/null and b/fonts/MortalFont40/02D8.png differ diff --git a/fonts/MortalFont40/02D9.png b/fonts/MortalFont40/02D9.png new file mode 100644 index 000000000..beb5b0218 Binary files /dev/null and b/fonts/MortalFont40/02D9.png differ diff --git a/fonts/MortalFont40/02DB.png b/fonts/MortalFont40/02DB.png new file mode 100644 index 000000000..3b8c4f7ab Binary files /dev/null and b/fonts/MortalFont40/02DB.png differ diff --git a/fonts/MortalFont40/02DC.png b/fonts/MortalFont40/02DC.png new file mode 100644 index 000000000..3e97ca7c9 Binary files /dev/null and b/fonts/MortalFont40/02DC.png differ diff --git a/fonts/MortalFont40/02DD.png b/fonts/MortalFont40/02DD.png new file mode 100644 index 000000000..fc8097595 Binary files /dev/null and b/fonts/MortalFont40/02DD.png differ diff --git a/fonts/MortalFont40/02DE.png b/fonts/MortalFont40/02DE.png new file mode 100644 index 000000000..d6132de18 Binary files /dev/null and b/fonts/MortalFont40/02DE.png differ diff --git a/fonts/MortalFont40/02E5.png b/fonts/MortalFont40/02E5.png new file mode 100644 index 000000000..6a6ca3999 Binary files /dev/null and b/fonts/MortalFont40/02E5.png differ diff --git a/fonts/MortalFont40/02E6.png b/fonts/MortalFont40/02E6.png new file mode 100644 index 000000000..c08b12b10 Binary files /dev/null and b/fonts/MortalFont40/02E6.png differ diff --git a/fonts/MortalFont40/02E7.png b/fonts/MortalFont40/02E7.png new file mode 100644 index 000000000..2df0d9a29 Binary files /dev/null and b/fonts/MortalFont40/02E7.png differ diff --git a/fonts/MortalFont40/02E8.png b/fonts/MortalFont40/02E8.png new file mode 100644 index 000000000..ed602dbeb Binary files /dev/null and b/fonts/MortalFont40/02E8.png differ diff --git a/fonts/MortalFont40/02E9.png b/fonts/MortalFont40/02E9.png new file mode 100644 index 000000000..7a8c1b0dd Binary files /dev/null and b/fonts/MortalFont40/02E9.png differ diff --git a/fonts/MortalFont40/0300.png b/fonts/MortalFont40/0300.png new file mode 100644 index 000000000..0a08979c0 Binary files /dev/null and b/fonts/MortalFont40/0300.png differ diff --git a/fonts/MortalFont40/0301.png b/fonts/MortalFont40/0301.png new file mode 100644 index 000000000..b6e92676b Binary files /dev/null and b/fonts/MortalFont40/0301.png differ diff --git a/fonts/MortalFont40/0302.png b/fonts/MortalFont40/0302.png new file mode 100644 index 000000000..c8c6722c3 Binary files /dev/null and b/fonts/MortalFont40/0302.png differ diff --git a/fonts/MortalFont40/0303.png b/fonts/MortalFont40/0303.png new file mode 100644 index 000000000..8be2421e9 Binary files /dev/null and b/fonts/MortalFont40/0303.png differ diff --git a/fonts/MortalFont40/0304.png b/fonts/MortalFont40/0304.png new file mode 100644 index 000000000..16cbd6a82 Binary files /dev/null and b/fonts/MortalFont40/0304.png differ diff --git a/fonts/MortalFont40/0306.png b/fonts/MortalFont40/0306.png new file mode 100644 index 000000000..79f3b1af5 Binary files /dev/null and b/fonts/MortalFont40/0306.png differ diff --git a/fonts/MortalFont40/0308.png b/fonts/MortalFont40/0308.png new file mode 100644 index 000000000..9d85fb901 Binary files /dev/null and b/fonts/MortalFont40/0308.png differ diff --git a/fonts/MortalFont40/030B.png b/fonts/MortalFont40/030B.png new file mode 100644 index 000000000..1b4887f6e Binary files /dev/null and b/fonts/MortalFont40/030B.png differ diff --git a/fonts/MortalFont40/030C.png b/fonts/MortalFont40/030C.png new file mode 100644 index 000000000..79b46ee33 Binary files /dev/null and b/fonts/MortalFont40/030C.png differ diff --git a/fonts/MortalFont40/030F.png b/fonts/MortalFont40/030F.png new file mode 100644 index 000000000..43a28a313 Binary files /dev/null and b/fonts/MortalFont40/030F.png differ diff --git a/fonts/MortalFont40/0318.png b/fonts/MortalFont40/0318.png new file mode 100644 index 000000000..23e85d7a5 Binary files /dev/null and b/fonts/MortalFont40/0318.png differ diff --git a/fonts/MortalFont40/0319.png b/fonts/MortalFont40/0319.png new file mode 100644 index 000000000..b5555caba Binary files /dev/null and b/fonts/MortalFont40/0319.png differ diff --git a/fonts/MortalFont40/031A.png b/fonts/MortalFont40/031A.png new file mode 100644 index 000000000..35c4efcf4 Binary files /dev/null and b/fonts/MortalFont40/031A.png differ diff --git a/fonts/MortalFont40/031C.png b/fonts/MortalFont40/031C.png new file mode 100644 index 000000000..05cc1eaf8 Binary files /dev/null and b/fonts/MortalFont40/031C.png differ diff --git a/fonts/MortalFont40/031D.png b/fonts/MortalFont40/031D.png new file mode 100644 index 000000000..710c95e1a Binary files /dev/null and b/fonts/MortalFont40/031D.png differ diff --git a/fonts/MortalFont40/031E.png b/fonts/MortalFont40/031E.png new file mode 100644 index 000000000..efb3d6436 Binary files /dev/null and b/fonts/MortalFont40/031E.png differ diff --git a/fonts/MortalFont40/031F.png b/fonts/MortalFont40/031F.png new file mode 100644 index 000000000..36f7de6a5 Binary files /dev/null and b/fonts/MortalFont40/031F.png differ diff --git a/fonts/MortalFont40/0320.png b/fonts/MortalFont40/0320.png new file mode 100644 index 000000000..ebe3fa9d3 Binary files /dev/null and b/fonts/MortalFont40/0320.png differ diff --git a/fonts/MortalFont40/0324.png b/fonts/MortalFont40/0324.png new file mode 100644 index 000000000..aa07c925a Binary files /dev/null and b/fonts/MortalFont40/0324.png differ diff --git a/fonts/MortalFont40/0325.png b/fonts/MortalFont40/0325.png new file mode 100644 index 000000000..e0f76bcd3 Binary files /dev/null and b/fonts/MortalFont40/0325.png differ diff --git a/fonts/MortalFont40/0329.png b/fonts/MortalFont40/0329.png new file mode 100644 index 000000000..8377613c6 Binary files /dev/null and b/fonts/MortalFont40/0329.png differ diff --git a/fonts/MortalFont40/032A.png b/fonts/MortalFont40/032A.png new file mode 100644 index 000000000..ad5450974 Binary files /dev/null and b/fonts/MortalFont40/032A.png differ diff --git a/fonts/MortalFont40/032C.png b/fonts/MortalFont40/032C.png new file mode 100644 index 000000000..bedf36d0e Binary files /dev/null and b/fonts/MortalFont40/032C.png differ diff --git a/fonts/MortalFont40/032F.png b/fonts/MortalFont40/032F.png new file mode 100644 index 000000000..69a8d51a0 Binary files /dev/null and b/fonts/MortalFont40/032F.png differ diff --git a/fonts/MortalFont40/0330.png b/fonts/MortalFont40/0330.png new file mode 100644 index 000000000..6e15fa447 Binary files /dev/null and b/fonts/MortalFont40/0330.png differ diff --git a/fonts/MortalFont40/0334.png b/fonts/MortalFont40/0334.png new file mode 100644 index 000000000..02e2195fb Binary files /dev/null and b/fonts/MortalFont40/0334.png differ diff --git a/fonts/MortalFont40/0339.png b/fonts/MortalFont40/0339.png new file mode 100644 index 000000000..337c4e24b Binary files /dev/null and b/fonts/MortalFont40/0339.png differ diff --git a/fonts/MortalFont40/033A.png b/fonts/MortalFont40/033A.png new file mode 100644 index 000000000..44cec43f7 Binary files /dev/null and b/fonts/MortalFont40/033A.png differ diff --git a/fonts/MortalFont40/033B.png b/fonts/MortalFont40/033B.png new file mode 100644 index 000000000..14519aea4 Binary files /dev/null and b/fonts/MortalFont40/033B.png differ diff --git a/fonts/MortalFont40/033C.png b/fonts/MortalFont40/033C.png new file mode 100644 index 000000000..f942366ae Binary files /dev/null and b/fonts/MortalFont40/033C.png differ diff --git a/fonts/MortalFont40/033D.png b/fonts/MortalFont40/033D.png new file mode 100644 index 000000000..eb5d8c7d2 Binary files /dev/null and b/fonts/MortalFont40/033D.png differ diff --git a/fonts/MortalFont40/0361.png b/fonts/MortalFont40/0361.png new file mode 100644 index 000000000..9d97fd8f0 Binary files /dev/null and b/fonts/MortalFont40/0361.png differ diff --git a/fonts/MortalFont40/0391.png b/fonts/MortalFont40/0391.png new file mode 100644 index 000000000..2a177e8cd Binary files /dev/null and b/fonts/MortalFont40/0391.png differ diff --git a/fonts/MortalFont40/0392.png b/fonts/MortalFont40/0392.png new file mode 100644 index 000000000..2d78b5c32 Binary files /dev/null and b/fonts/MortalFont40/0392.png differ diff --git a/fonts/MortalFont40/0393.png b/fonts/MortalFont40/0393.png new file mode 100644 index 000000000..c846c08b9 Binary files /dev/null and b/fonts/MortalFont40/0393.png differ diff --git a/fonts/MortalFont40/0394.png b/fonts/MortalFont40/0394.png new file mode 100644 index 000000000..c46cfc718 Binary files /dev/null and b/fonts/MortalFont40/0394.png differ diff --git a/fonts/MortalFont40/0395.png b/fonts/MortalFont40/0395.png new file mode 100644 index 000000000..6a660763b Binary files /dev/null and b/fonts/MortalFont40/0395.png differ diff --git a/fonts/MortalFont40/0396.png b/fonts/MortalFont40/0396.png new file mode 100644 index 000000000..40a6e0da6 Binary files /dev/null and b/fonts/MortalFont40/0396.png differ diff --git a/fonts/MortalFont40/0397.png b/fonts/MortalFont40/0397.png new file mode 100644 index 000000000..9d5dd43cd Binary files /dev/null and b/fonts/MortalFont40/0397.png differ diff --git a/fonts/MortalFont40/0398.png b/fonts/MortalFont40/0398.png new file mode 100644 index 000000000..d7d5f23f0 Binary files /dev/null and b/fonts/MortalFont40/0398.png differ diff --git a/fonts/MortalFont40/0399.png b/fonts/MortalFont40/0399.png new file mode 100644 index 000000000..e96b7bfe1 Binary files /dev/null and b/fonts/MortalFont40/0399.png differ diff --git a/fonts/MortalFont40/039A.png b/fonts/MortalFont40/039A.png new file mode 100644 index 000000000..48a4a2bcd Binary files /dev/null and b/fonts/MortalFont40/039A.png differ diff --git a/fonts/MortalFont40/039B.png b/fonts/MortalFont40/039B.png new file mode 100644 index 000000000..c888edf89 Binary files /dev/null and b/fonts/MortalFont40/039B.png differ diff --git a/fonts/MortalFont40/039C.png b/fonts/MortalFont40/039C.png new file mode 100644 index 000000000..d47fff1c9 Binary files /dev/null and b/fonts/MortalFont40/039C.png differ diff --git a/fonts/MortalFont40/039D.png b/fonts/MortalFont40/039D.png new file mode 100644 index 000000000..b8fd7f56b Binary files /dev/null and b/fonts/MortalFont40/039D.png differ diff --git a/fonts/MortalFont40/039E.png b/fonts/MortalFont40/039E.png new file mode 100644 index 000000000..37a2d02bc Binary files /dev/null and b/fonts/MortalFont40/039E.png differ diff --git a/fonts/MortalFont40/039F.png b/fonts/MortalFont40/039F.png new file mode 100644 index 000000000..ffb8e692c Binary files /dev/null and b/fonts/MortalFont40/039F.png differ diff --git a/fonts/MortalFont40/03A0.png b/fonts/MortalFont40/03A0.png new file mode 100644 index 000000000..873d0fd0c Binary files /dev/null and b/fonts/MortalFont40/03A0.png differ diff --git a/fonts/MortalFont40/03A1.png b/fonts/MortalFont40/03A1.png new file mode 100644 index 000000000..e1430633a Binary files /dev/null and b/fonts/MortalFont40/03A1.png differ diff --git a/fonts/MortalFont40/03A3.png b/fonts/MortalFont40/03A3.png new file mode 100644 index 000000000..136743470 Binary files /dev/null and b/fonts/MortalFont40/03A3.png differ diff --git a/fonts/MortalFont40/03A4.png b/fonts/MortalFont40/03A4.png new file mode 100644 index 000000000..2cd008dd3 Binary files /dev/null and b/fonts/MortalFont40/03A4.png differ diff --git a/fonts/MortalFont40/03A5.png b/fonts/MortalFont40/03A5.png new file mode 100644 index 000000000..3f35760b1 Binary files /dev/null and b/fonts/MortalFont40/03A5.png differ diff --git a/fonts/MortalFont40/03A6.png b/fonts/MortalFont40/03A6.png new file mode 100644 index 000000000..c04f44243 Binary files /dev/null and b/fonts/MortalFont40/03A6.png differ diff --git a/fonts/MortalFont40/03A7.png b/fonts/MortalFont40/03A7.png new file mode 100644 index 000000000..645c45004 Binary files /dev/null and b/fonts/MortalFont40/03A7.png differ diff --git a/fonts/MortalFont40/03A8.png b/fonts/MortalFont40/03A8.png new file mode 100644 index 000000000..a3e1bf6a4 Binary files /dev/null and b/fonts/MortalFont40/03A8.png differ diff --git a/fonts/MortalFont40/03A9.png b/fonts/MortalFont40/03A9.png new file mode 100644 index 000000000..b1c9de002 Binary files /dev/null and b/fonts/MortalFont40/03A9.png differ diff --git a/fonts/MortalFont40/03B1.png b/fonts/MortalFont40/03B1.png new file mode 100644 index 000000000..2f3cee9dc Binary files /dev/null and b/fonts/MortalFont40/03B1.png differ diff --git a/fonts/MortalFont40/03B2.png b/fonts/MortalFont40/03B2.png new file mode 100644 index 000000000..d9160bf69 Binary files /dev/null and b/fonts/MortalFont40/03B2.png differ diff --git a/fonts/MortalFont40/03B3.png b/fonts/MortalFont40/03B3.png new file mode 100644 index 000000000..db5e0684a Binary files /dev/null and b/fonts/MortalFont40/03B3.png differ diff --git a/fonts/MortalFont40/03B4.png b/fonts/MortalFont40/03B4.png new file mode 100644 index 000000000..aebd5b45b Binary files /dev/null and b/fonts/MortalFont40/03B4.png differ diff --git a/fonts/MortalFont40/03B5.png b/fonts/MortalFont40/03B5.png new file mode 100644 index 000000000..0da9c2de0 Binary files /dev/null and b/fonts/MortalFont40/03B5.png differ diff --git a/fonts/MortalFont40/03B6.png b/fonts/MortalFont40/03B6.png new file mode 100644 index 000000000..14a017c0b Binary files /dev/null and b/fonts/MortalFont40/03B6.png differ diff --git a/fonts/MortalFont40/03B7.png b/fonts/MortalFont40/03B7.png new file mode 100644 index 000000000..1b2efb70e Binary files /dev/null and b/fonts/MortalFont40/03B7.png differ diff --git a/fonts/MortalFont40/03B8.png b/fonts/MortalFont40/03B8.png new file mode 100644 index 000000000..a15021ef5 Binary files /dev/null and b/fonts/MortalFont40/03B8.png differ diff --git a/fonts/MortalFont40/03B9.png b/fonts/MortalFont40/03B9.png new file mode 100644 index 000000000..8fc7766dd Binary files /dev/null and b/fonts/MortalFont40/03B9.png differ diff --git a/fonts/MortalFont40/03BA.png b/fonts/MortalFont40/03BA.png new file mode 100644 index 000000000..26f88bf23 Binary files /dev/null and b/fonts/MortalFont40/03BA.png differ diff --git a/fonts/MortalFont40/03BB.png b/fonts/MortalFont40/03BB.png new file mode 100644 index 000000000..c9458a90c Binary files /dev/null and b/fonts/MortalFont40/03BB.png differ diff --git a/fonts/MortalFont40/03BC.png b/fonts/MortalFont40/03BC.png new file mode 100644 index 000000000..399cddb76 Binary files /dev/null and b/fonts/MortalFont40/03BC.png differ diff --git a/fonts/MortalFont40/03BD.png b/fonts/MortalFont40/03BD.png new file mode 100644 index 000000000..e8d038a61 Binary files /dev/null and b/fonts/MortalFont40/03BD.png differ diff --git a/fonts/MortalFont40/03BE.png b/fonts/MortalFont40/03BE.png new file mode 100644 index 000000000..9d5a2b114 Binary files /dev/null and b/fonts/MortalFont40/03BE.png differ diff --git a/fonts/MortalFont40/03BF.png b/fonts/MortalFont40/03BF.png new file mode 100644 index 000000000..97bdf806b Binary files /dev/null and b/fonts/MortalFont40/03BF.png differ diff --git a/fonts/MortalFont40/03C0.png b/fonts/MortalFont40/03C0.png new file mode 100644 index 000000000..499a5aa23 Binary files /dev/null and b/fonts/MortalFont40/03C0.png differ diff --git a/fonts/MortalFont40/03C1.png b/fonts/MortalFont40/03C1.png new file mode 100644 index 000000000..6ee858da0 Binary files /dev/null and b/fonts/MortalFont40/03C1.png differ diff --git a/fonts/MortalFont40/03C2.png b/fonts/MortalFont40/03C2.png new file mode 100644 index 000000000..7140a9edc Binary files /dev/null and b/fonts/MortalFont40/03C2.png differ diff --git a/fonts/MortalFont40/03C3.png b/fonts/MortalFont40/03C3.png new file mode 100644 index 000000000..d374d64cb Binary files /dev/null and b/fonts/MortalFont40/03C3.png differ diff --git a/fonts/MortalFont40/03C4.png b/fonts/MortalFont40/03C4.png new file mode 100644 index 000000000..8cf6a20ac Binary files /dev/null and b/fonts/MortalFont40/03C4.png differ diff --git a/fonts/MortalFont40/03C5.png b/fonts/MortalFont40/03C5.png new file mode 100644 index 000000000..ef5880151 Binary files /dev/null and b/fonts/MortalFont40/03C5.png differ diff --git a/fonts/MortalFont40/03C6.png b/fonts/MortalFont40/03C6.png new file mode 100644 index 000000000..45ccfd453 Binary files /dev/null and b/fonts/MortalFont40/03C6.png differ diff --git a/fonts/MortalFont40/03C7.png b/fonts/MortalFont40/03C7.png new file mode 100644 index 000000000..803dfe8ab Binary files /dev/null and b/fonts/MortalFont40/03C7.png differ diff --git a/fonts/MortalFont40/03C8.png b/fonts/MortalFont40/03C8.png new file mode 100644 index 000000000..510269272 Binary files /dev/null and b/fonts/MortalFont40/03C8.png differ diff --git a/fonts/MortalFont40/03C9.png b/fonts/MortalFont40/03C9.png new file mode 100644 index 000000000..7aee40759 Binary files /dev/null and b/fonts/MortalFont40/03C9.png differ diff --git a/fonts/MortalFont40/0401.png b/fonts/MortalFont40/0401.png new file mode 100644 index 000000000..25cf21cef Binary files /dev/null and b/fonts/MortalFont40/0401.png differ diff --git a/fonts/MortalFont40/0410.png b/fonts/MortalFont40/0410.png new file mode 100644 index 000000000..2a177e8cd Binary files /dev/null and b/fonts/MortalFont40/0410.png differ diff --git a/fonts/MortalFont40/0411.png b/fonts/MortalFont40/0411.png new file mode 100644 index 000000000..e5cd11a79 Binary files /dev/null and b/fonts/MortalFont40/0411.png differ diff --git a/fonts/MortalFont40/0412.png b/fonts/MortalFont40/0412.png new file mode 100644 index 000000000..2d78b5c32 Binary files /dev/null and b/fonts/MortalFont40/0412.png differ diff --git a/fonts/MortalFont40/0413.png b/fonts/MortalFont40/0413.png new file mode 100644 index 000000000..c846c08b9 Binary files /dev/null and b/fonts/MortalFont40/0413.png differ diff --git a/fonts/MortalFont40/0414.png b/fonts/MortalFont40/0414.png new file mode 100644 index 000000000..9d60ba385 Binary files /dev/null and b/fonts/MortalFont40/0414.png differ diff --git a/fonts/MortalFont40/0415.png b/fonts/MortalFont40/0415.png new file mode 100644 index 000000000..6a660763b Binary files /dev/null and b/fonts/MortalFont40/0415.png differ diff --git a/fonts/MortalFont40/0416.png b/fonts/MortalFont40/0416.png new file mode 100644 index 000000000..12d7779d3 Binary files /dev/null and b/fonts/MortalFont40/0416.png differ diff --git a/fonts/MortalFont40/0417.png b/fonts/MortalFont40/0417.png new file mode 100644 index 000000000..6a5c75282 Binary files /dev/null and b/fonts/MortalFont40/0417.png differ diff --git a/fonts/MortalFont40/0418.png b/fonts/MortalFont40/0418.png new file mode 100644 index 000000000..41da58fb5 Binary files /dev/null and b/fonts/MortalFont40/0418.png differ diff --git a/fonts/MortalFont40/0419.png b/fonts/MortalFont40/0419.png new file mode 100644 index 000000000..35155458c Binary files /dev/null and b/fonts/MortalFont40/0419.png differ diff --git a/fonts/MortalFont40/041A.png b/fonts/MortalFont40/041A.png new file mode 100644 index 000000000..7e01f9209 Binary files /dev/null and b/fonts/MortalFont40/041A.png differ diff --git a/fonts/MortalFont40/041B.png b/fonts/MortalFont40/041B.png new file mode 100644 index 000000000..bb88efaa9 Binary files /dev/null and b/fonts/MortalFont40/041B.png differ diff --git a/fonts/MortalFont40/041C.png b/fonts/MortalFont40/041C.png new file mode 100644 index 000000000..d47fff1c9 Binary files /dev/null and b/fonts/MortalFont40/041C.png differ diff --git a/fonts/MortalFont40/041D.png b/fonts/MortalFont40/041D.png new file mode 100644 index 000000000..9d5dd43cd Binary files /dev/null and b/fonts/MortalFont40/041D.png differ diff --git a/fonts/MortalFont40/041E.png b/fonts/MortalFont40/041E.png new file mode 100644 index 000000000..ffb8e692c Binary files /dev/null and b/fonts/MortalFont40/041E.png differ diff --git a/fonts/MortalFont40/041F.png b/fonts/MortalFont40/041F.png new file mode 100644 index 000000000..873d0fd0c Binary files /dev/null and b/fonts/MortalFont40/041F.png differ diff --git a/fonts/MortalFont40/0420.png b/fonts/MortalFont40/0420.png new file mode 100644 index 000000000..e1430633a Binary files /dev/null and b/fonts/MortalFont40/0420.png differ diff --git a/fonts/MortalFont40/0421.png b/fonts/MortalFont40/0421.png new file mode 100644 index 000000000..05e7681db Binary files /dev/null and b/fonts/MortalFont40/0421.png differ diff --git a/fonts/MortalFont40/0422.png b/fonts/MortalFont40/0422.png new file mode 100644 index 000000000..2cd008dd3 Binary files /dev/null and b/fonts/MortalFont40/0422.png differ diff --git a/fonts/MortalFont40/0423.png b/fonts/MortalFont40/0423.png new file mode 100644 index 000000000..6106a3386 Binary files /dev/null and b/fonts/MortalFont40/0423.png differ diff --git a/fonts/MortalFont40/0424.png b/fonts/MortalFont40/0424.png new file mode 100644 index 000000000..147f66961 Binary files /dev/null and b/fonts/MortalFont40/0424.png differ diff --git a/fonts/MortalFont40/0425.png b/fonts/MortalFont40/0425.png new file mode 100644 index 000000000..645c45004 Binary files /dev/null and b/fonts/MortalFont40/0425.png differ diff --git a/fonts/MortalFont40/0426.png b/fonts/MortalFont40/0426.png new file mode 100644 index 000000000..a212f75ae Binary files /dev/null and b/fonts/MortalFont40/0426.png differ diff --git a/fonts/MortalFont40/0427.png b/fonts/MortalFont40/0427.png new file mode 100644 index 000000000..d5208ee5b Binary files /dev/null and b/fonts/MortalFont40/0427.png differ diff --git a/fonts/MortalFont40/0428.png b/fonts/MortalFont40/0428.png new file mode 100644 index 000000000..5bae31907 Binary files /dev/null and b/fonts/MortalFont40/0428.png differ diff --git a/fonts/MortalFont40/0429.png b/fonts/MortalFont40/0429.png new file mode 100644 index 000000000..12c0fa180 Binary files /dev/null and b/fonts/MortalFont40/0429.png differ diff --git a/fonts/MortalFont40/042A.png b/fonts/MortalFont40/042A.png new file mode 100644 index 000000000..a3f2c5c33 Binary files /dev/null and b/fonts/MortalFont40/042A.png differ diff --git a/fonts/MortalFont40/042B.png b/fonts/MortalFont40/042B.png new file mode 100644 index 000000000..7e34c2aa3 Binary files /dev/null and b/fonts/MortalFont40/042B.png differ diff --git a/fonts/MortalFont40/042C.png b/fonts/MortalFont40/042C.png new file mode 100644 index 000000000..bf5782cef Binary files /dev/null and b/fonts/MortalFont40/042C.png differ diff --git a/fonts/MortalFont40/042D.png b/fonts/MortalFont40/042D.png new file mode 100644 index 000000000..20b7e6f6b Binary files /dev/null and b/fonts/MortalFont40/042D.png differ diff --git a/fonts/MortalFont40/042E.png b/fonts/MortalFont40/042E.png new file mode 100644 index 000000000..88a272d9a Binary files /dev/null and b/fonts/MortalFont40/042E.png differ diff --git a/fonts/MortalFont40/042F.png b/fonts/MortalFont40/042F.png new file mode 100644 index 000000000..793b43e31 Binary files /dev/null and b/fonts/MortalFont40/042F.png differ diff --git a/fonts/MortalFont40/0430.png b/fonts/MortalFont40/0430.png new file mode 100644 index 000000000..615204d0d Binary files /dev/null and b/fonts/MortalFont40/0430.png differ diff --git a/fonts/MortalFont40/0431.png b/fonts/MortalFont40/0431.png new file mode 100644 index 000000000..081507293 Binary files /dev/null and b/fonts/MortalFont40/0431.png differ diff --git a/fonts/MortalFont40/0432.png b/fonts/MortalFont40/0432.png new file mode 100644 index 000000000..b3a83a6b9 Binary files /dev/null and b/fonts/MortalFont40/0432.png differ diff --git a/fonts/MortalFont40/0433.png b/fonts/MortalFont40/0433.png new file mode 100644 index 000000000..a2039880d Binary files /dev/null and b/fonts/MortalFont40/0433.png differ diff --git a/fonts/MortalFont40/0434.png b/fonts/MortalFont40/0434.png new file mode 100644 index 000000000..b0524ff74 Binary files /dev/null and b/fonts/MortalFont40/0434.png differ diff --git a/fonts/MortalFont40/0435.png b/fonts/MortalFont40/0435.png new file mode 100644 index 000000000..3d898eb71 Binary files /dev/null and b/fonts/MortalFont40/0435.png differ diff --git a/fonts/MortalFont40/0436.png b/fonts/MortalFont40/0436.png new file mode 100644 index 000000000..ad9ab4fd8 Binary files /dev/null and b/fonts/MortalFont40/0436.png differ diff --git a/fonts/MortalFont40/0437.png b/fonts/MortalFont40/0437.png new file mode 100644 index 000000000..9b885f02d Binary files /dev/null and b/fonts/MortalFont40/0437.png differ diff --git a/fonts/MortalFont40/0438.png b/fonts/MortalFont40/0438.png new file mode 100644 index 000000000..c741e0ae5 Binary files /dev/null and b/fonts/MortalFont40/0438.png differ diff --git a/fonts/MortalFont40/0439.png b/fonts/MortalFont40/0439.png new file mode 100644 index 000000000..24183fdeb Binary files /dev/null and b/fonts/MortalFont40/0439.png differ diff --git a/fonts/MortalFont40/043A.png b/fonts/MortalFont40/043A.png new file mode 100644 index 000000000..2d2eb5b65 Binary files /dev/null and b/fonts/MortalFont40/043A.png differ diff --git a/fonts/MortalFont40/043B.png b/fonts/MortalFont40/043B.png new file mode 100644 index 000000000..e3338e83c Binary files /dev/null and b/fonts/MortalFont40/043B.png differ diff --git a/fonts/MortalFont40/043C.png b/fonts/MortalFont40/043C.png new file mode 100644 index 000000000..433dd5a59 Binary files /dev/null and b/fonts/MortalFont40/043C.png differ diff --git a/fonts/MortalFont40/043D.png b/fonts/MortalFont40/043D.png new file mode 100644 index 000000000..b61687a3d Binary files /dev/null and b/fonts/MortalFont40/043D.png differ diff --git a/fonts/MortalFont40/043E.png b/fonts/MortalFont40/043E.png new file mode 100644 index 000000000..f1b9a8fae Binary files /dev/null and b/fonts/MortalFont40/043E.png differ diff --git a/fonts/MortalFont40/043F.png b/fonts/MortalFont40/043F.png new file mode 100644 index 000000000..7aa542537 Binary files /dev/null and b/fonts/MortalFont40/043F.png differ diff --git a/fonts/MortalFont40/0440.png b/fonts/MortalFont40/0440.png new file mode 100644 index 000000000..48a7f3730 Binary files /dev/null and b/fonts/MortalFont40/0440.png differ diff --git a/fonts/MortalFont40/0441.png b/fonts/MortalFont40/0441.png new file mode 100644 index 000000000..a97b45f38 Binary files /dev/null and b/fonts/MortalFont40/0441.png differ diff --git a/fonts/MortalFont40/0442.png b/fonts/MortalFont40/0442.png new file mode 100644 index 000000000..529bcaeab Binary files /dev/null and b/fonts/MortalFont40/0442.png differ diff --git a/fonts/MortalFont40/0443.png b/fonts/MortalFont40/0443.png new file mode 100644 index 000000000..2e25e8bcf Binary files /dev/null and b/fonts/MortalFont40/0443.png differ diff --git a/fonts/MortalFont40/0444.png b/fonts/MortalFont40/0444.png new file mode 100644 index 000000000..930485ebc Binary files /dev/null and b/fonts/MortalFont40/0444.png differ diff --git a/fonts/MortalFont40/0445.png b/fonts/MortalFont40/0445.png new file mode 100644 index 000000000..c4d706540 Binary files /dev/null and b/fonts/MortalFont40/0445.png differ diff --git a/fonts/MortalFont40/0446.png b/fonts/MortalFont40/0446.png new file mode 100644 index 000000000..aed0ab985 Binary files /dev/null and b/fonts/MortalFont40/0446.png differ diff --git a/fonts/MortalFont40/0447.png b/fonts/MortalFont40/0447.png new file mode 100644 index 000000000..ec46a0fea Binary files /dev/null and b/fonts/MortalFont40/0447.png differ diff --git a/fonts/MortalFont40/0448.png b/fonts/MortalFont40/0448.png new file mode 100644 index 000000000..2c13d1df2 Binary files /dev/null and b/fonts/MortalFont40/0448.png differ diff --git a/fonts/MortalFont40/0449.png b/fonts/MortalFont40/0449.png new file mode 100644 index 000000000..d96fe14f9 Binary files /dev/null and b/fonts/MortalFont40/0449.png differ diff --git a/fonts/MortalFont40/044A.png b/fonts/MortalFont40/044A.png new file mode 100644 index 000000000..1c2498519 Binary files /dev/null and b/fonts/MortalFont40/044A.png differ diff --git a/fonts/MortalFont40/044B.png b/fonts/MortalFont40/044B.png new file mode 100644 index 000000000..d6aeee368 Binary files /dev/null and b/fonts/MortalFont40/044B.png differ diff --git a/fonts/MortalFont40/044C.png b/fonts/MortalFont40/044C.png new file mode 100644 index 000000000..6ae944ce3 Binary files /dev/null and b/fonts/MortalFont40/044C.png differ diff --git a/fonts/MortalFont40/044D.png b/fonts/MortalFont40/044D.png new file mode 100644 index 000000000..9e5ac018b Binary files /dev/null and b/fonts/MortalFont40/044D.png differ diff --git a/fonts/MortalFont40/044E.png b/fonts/MortalFont40/044E.png new file mode 100644 index 000000000..94412991b Binary files /dev/null and b/fonts/MortalFont40/044E.png differ diff --git a/fonts/MortalFont40/044F.png b/fonts/MortalFont40/044F.png new file mode 100644 index 000000000..ff859434b Binary files /dev/null and b/fonts/MortalFont40/044F.png differ diff --git a/fonts/MortalFont40/0451.png b/fonts/MortalFont40/0451.png new file mode 100644 index 000000000..e865977aa Binary files /dev/null and b/fonts/MortalFont40/0451.png differ diff --git a/fonts/MortalFont40/1E3E.png b/fonts/MortalFont40/1E3E.png new file mode 100644 index 000000000..3892e898e Binary files /dev/null and b/fonts/MortalFont40/1E3E.png differ diff --git a/fonts/MortalFont40/1E3F.png b/fonts/MortalFont40/1E3F.png new file mode 100644 index 000000000..ec21b48c3 Binary files /dev/null and b/fonts/MortalFont40/1E3F.png differ diff --git a/fonts/MortalFont40/1F70.png b/fonts/MortalFont40/1F70.png new file mode 100644 index 000000000..41231026e Binary files /dev/null and b/fonts/MortalFont40/1F70.png differ diff --git a/fonts/MortalFont40/1F71.png b/fonts/MortalFont40/1F71.png new file mode 100644 index 000000000..f0ff5c140 Binary files /dev/null and b/fonts/MortalFont40/1F71.png differ diff --git a/fonts/MortalFont40/1F72.png b/fonts/MortalFont40/1F72.png new file mode 100644 index 000000000..dbebdeb29 Binary files /dev/null and b/fonts/MortalFont40/1F72.png differ diff --git a/fonts/MortalFont40/1F73.png b/fonts/MortalFont40/1F73.png new file mode 100644 index 000000000..58899875e Binary files /dev/null and b/fonts/MortalFont40/1F73.png differ diff --git a/fonts/MortalFont40/2010.png b/fonts/MortalFont40/2010.png new file mode 100644 index 000000000..bd941cfbb Binary files /dev/null and b/fonts/MortalFont40/2010.png differ diff --git a/fonts/MortalFont40/2013.png b/fonts/MortalFont40/2013.png new file mode 100644 index 000000000..0f8ed0957 Binary files /dev/null and b/fonts/MortalFont40/2013.png differ diff --git a/fonts/MortalFont40/2014.png b/fonts/MortalFont40/2014.png new file mode 100644 index 000000000..1fa9bb153 Binary files /dev/null and b/fonts/MortalFont40/2014.png differ diff --git a/fonts/MortalFont40/2015.png b/fonts/MortalFont40/2015.png new file mode 100644 index 000000000..1fa9bb153 Binary files /dev/null and b/fonts/MortalFont40/2015.png differ diff --git a/fonts/MortalFont40/2016.png b/fonts/MortalFont40/2016.png new file mode 100644 index 000000000..d57559810 Binary files /dev/null and b/fonts/MortalFont40/2016.png differ diff --git a/fonts/MortalFont40/2018.png b/fonts/MortalFont40/2018.png new file mode 100644 index 000000000..cfed86447 Binary files /dev/null and b/fonts/MortalFont40/2018.png differ diff --git a/fonts/MortalFont40/2019.png b/fonts/MortalFont40/2019.png new file mode 100644 index 000000000..0b086c37b Binary files /dev/null and b/fonts/MortalFont40/2019.png differ diff --git a/fonts/MortalFont40/201C.png b/fonts/MortalFont40/201C.png new file mode 100644 index 000000000..2ae2bf669 Binary files /dev/null and b/fonts/MortalFont40/201C.png differ diff --git a/fonts/MortalFont40/201D.png b/fonts/MortalFont40/201D.png new file mode 100644 index 000000000..345c976b5 Binary files /dev/null and b/fonts/MortalFont40/201D.png differ diff --git a/fonts/MortalFont40/2020.png b/fonts/MortalFont40/2020.png new file mode 100644 index 000000000..4950c7067 Binary files /dev/null and b/fonts/MortalFont40/2020.png differ diff --git a/fonts/MortalFont40/2021.png b/fonts/MortalFont40/2021.png new file mode 100644 index 000000000..7031bf144 Binary files /dev/null and b/fonts/MortalFont40/2021.png differ diff --git a/fonts/MortalFont40/2022.png b/fonts/MortalFont40/2022.png new file mode 100644 index 000000000..2c0085317 Binary files /dev/null and b/fonts/MortalFont40/2022.png differ diff --git a/fonts/MortalFont40/2025.png b/fonts/MortalFont40/2025.png new file mode 100644 index 000000000..d52a20f80 Binary files /dev/null and b/fonts/MortalFont40/2025.png differ diff --git a/fonts/MortalFont40/2026.png b/fonts/MortalFont40/2026.png new file mode 100644 index 000000000..e6c73e24f Binary files /dev/null and b/fonts/MortalFont40/2026.png differ diff --git a/fonts/MortalFont40/2030.png b/fonts/MortalFont40/2030.png new file mode 100644 index 000000000..c2cd431b5 Binary files /dev/null and b/fonts/MortalFont40/2030.png differ diff --git a/fonts/MortalFont40/2032.png b/fonts/MortalFont40/2032.png new file mode 100644 index 000000000..bc6e9262f Binary files /dev/null and b/fonts/MortalFont40/2032.png differ diff --git a/fonts/MortalFont40/2033.png b/fonts/MortalFont40/2033.png new file mode 100644 index 000000000..5bac6b026 Binary files /dev/null and b/fonts/MortalFont40/2033.png differ diff --git a/fonts/MortalFont40/203B.png b/fonts/MortalFont40/203B.png new file mode 100644 index 000000000..7cbd9559a Binary files /dev/null and b/fonts/MortalFont40/203B.png differ diff --git a/fonts/MortalFont40/203C.png b/fonts/MortalFont40/203C.png new file mode 100644 index 000000000..e81e64887 Binary files /dev/null and b/fonts/MortalFont40/203C.png differ diff --git a/fonts/MortalFont40/203E.png b/fonts/MortalFont40/203E.png new file mode 100644 index 000000000..e037cbf70 Binary files /dev/null and b/fonts/MortalFont40/203E.png differ diff --git a/fonts/MortalFont40/203F.png b/fonts/MortalFont40/203F.png new file mode 100644 index 000000000..1ed1c1e4f Binary files /dev/null and b/fonts/MortalFont40/203F.png differ diff --git a/fonts/MortalFont40/2042.png b/fonts/MortalFont40/2042.png new file mode 100644 index 000000000..f91d7e484 Binary files /dev/null and b/fonts/MortalFont40/2042.png differ diff --git a/fonts/MortalFont40/2047.png b/fonts/MortalFont40/2047.png new file mode 100644 index 000000000..09e6f21e6 Binary files /dev/null and b/fonts/MortalFont40/2047.png differ diff --git a/fonts/MortalFont40/2048.png b/fonts/MortalFont40/2048.png new file mode 100644 index 000000000..e9323298f Binary files /dev/null and b/fonts/MortalFont40/2048.png differ diff --git a/fonts/MortalFont40/2049.png b/fonts/MortalFont40/2049.png new file mode 100644 index 000000000..58b88545f Binary files /dev/null and b/fonts/MortalFont40/2049.png differ diff --git a/fonts/MortalFont40/2051.png b/fonts/MortalFont40/2051.png new file mode 100644 index 000000000..60bf1f4ed Binary files /dev/null and b/fonts/MortalFont40/2051.png differ diff --git a/fonts/MortalFont40/20AC.png b/fonts/MortalFont40/20AC.png new file mode 100644 index 000000000..8a578207a Binary files /dev/null and b/fonts/MortalFont40/20AC.png differ diff --git a/fonts/MortalFont40/2103.png b/fonts/MortalFont40/2103.png new file mode 100644 index 000000000..f65d148c8 Binary files /dev/null and b/fonts/MortalFont40/2103.png differ diff --git a/fonts/MortalFont40/210F.png b/fonts/MortalFont40/210F.png new file mode 100644 index 000000000..86f87b6bb Binary files /dev/null and b/fonts/MortalFont40/210F.png differ diff --git a/fonts/MortalFont40/2113.png b/fonts/MortalFont40/2113.png new file mode 100644 index 000000000..9ba50eaf0 Binary files /dev/null and b/fonts/MortalFont40/2113.png differ diff --git a/fonts/MortalFont40/2116.png b/fonts/MortalFont40/2116.png new file mode 100644 index 000000000..3692bdd98 Binary files /dev/null and b/fonts/MortalFont40/2116.png differ diff --git a/fonts/MortalFont40/2121.png b/fonts/MortalFont40/2121.png new file mode 100644 index 000000000..6bb2139b2 Binary files /dev/null and b/fonts/MortalFont40/2121.png differ diff --git a/fonts/MortalFont40/2127.png b/fonts/MortalFont40/2127.png new file mode 100644 index 000000000..1376eb81f Binary files /dev/null and b/fonts/MortalFont40/2127.png differ diff --git a/fonts/MortalFont40/212B.png b/fonts/MortalFont40/212B.png new file mode 100644 index 000000000..569399a94 Binary files /dev/null and b/fonts/MortalFont40/212B.png differ diff --git a/fonts/MortalFont40/2135.png b/fonts/MortalFont40/2135.png new file mode 100644 index 000000000..69ed08b64 Binary files /dev/null and b/fonts/MortalFont40/2135.png differ diff --git a/fonts/MortalFont40/2153.png b/fonts/MortalFont40/2153.png new file mode 100644 index 000000000..93147dc27 Binary files /dev/null and b/fonts/MortalFont40/2153.png differ diff --git a/fonts/MortalFont40/2154.png b/fonts/MortalFont40/2154.png new file mode 100644 index 000000000..14f936962 Binary files /dev/null and b/fonts/MortalFont40/2154.png differ diff --git a/fonts/MortalFont40/2155.png b/fonts/MortalFont40/2155.png new file mode 100644 index 000000000..a7095683b Binary files /dev/null and b/fonts/MortalFont40/2155.png differ diff --git a/fonts/MortalFont40/2160.png b/fonts/MortalFont40/2160.png new file mode 100644 index 000000000..e96b7bfe1 Binary files /dev/null and b/fonts/MortalFont40/2160.png differ diff --git a/fonts/MortalFont40/2161.png b/fonts/MortalFont40/2161.png new file mode 100644 index 000000000..cf172361b Binary files /dev/null and b/fonts/MortalFont40/2161.png differ diff --git a/fonts/MortalFont40/2162.png b/fonts/MortalFont40/2162.png new file mode 100644 index 000000000..20c7fc224 Binary files /dev/null and b/fonts/MortalFont40/2162.png differ diff --git a/fonts/MortalFont40/2163.png b/fonts/MortalFont40/2163.png new file mode 100644 index 000000000..877100553 Binary files /dev/null and b/fonts/MortalFont40/2163.png differ diff --git a/fonts/MortalFont40/2164.png b/fonts/MortalFont40/2164.png new file mode 100644 index 000000000..b5d80af59 Binary files /dev/null and b/fonts/MortalFont40/2164.png differ diff --git a/fonts/MortalFont40/2165.png b/fonts/MortalFont40/2165.png new file mode 100644 index 000000000..0157106fa Binary files /dev/null and b/fonts/MortalFont40/2165.png differ diff --git a/fonts/MortalFont40/2166.png b/fonts/MortalFont40/2166.png new file mode 100644 index 000000000..8fdad31a4 Binary files /dev/null and b/fonts/MortalFont40/2166.png differ diff --git a/fonts/MortalFont40/2167.png b/fonts/MortalFont40/2167.png new file mode 100644 index 000000000..b838dbbe4 Binary files /dev/null and b/fonts/MortalFont40/2167.png differ diff --git a/fonts/MortalFont40/2168.png b/fonts/MortalFont40/2168.png new file mode 100644 index 000000000..baf6ed99e Binary files /dev/null and b/fonts/MortalFont40/2168.png differ diff --git a/fonts/MortalFont40/2169.png b/fonts/MortalFont40/2169.png new file mode 100644 index 000000000..645c45004 Binary files /dev/null and b/fonts/MortalFont40/2169.png differ diff --git a/fonts/MortalFont40/216A.png b/fonts/MortalFont40/216A.png new file mode 100644 index 000000000..fc4085e27 Binary files /dev/null and b/fonts/MortalFont40/216A.png differ diff --git a/fonts/MortalFont40/216B.png b/fonts/MortalFont40/216B.png new file mode 100644 index 000000000..0bdeeb052 Binary files /dev/null and b/fonts/MortalFont40/216B.png differ diff --git a/fonts/MortalFont40/2170.png b/fonts/MortalFont40/2170.png new file mode 100644 index 000000000..8c11dc792 Binary files /dev/null and b/fonts/MortalFont40/2170.png differ diff --git a/fonts/MortalFont40/2171.png b/fonts/MortalFont40/2171.png new file mode 100644 index 000000000..b6a6b2d11 Binary files /dev/null and b/fonts/MortalFont40/2171.png differ diff --git a/fonts/MortalFont40/2172.png b/fonts/MortalFont40/2172.png new file mode 100644 index 000000000..5a15a9ede Binary files /dev/null and b/fonts/MortalFont40/2172.png differ diff --git a/fonts/MortalFont40/2173.png b/fonts/MortalFont40/2173.png new file mode 100644 index 000000000..92bc83344 Binary files /dev/null and b/fonts/MortalFont40/2173.png differ diff --git a/fonts/MortalFont40/2174.png b/fonts/MortalFont40/2174.png new file mode 100644 index 000000000..208388d91 Binary files /dev/null and b/fonts/MortalFont40/2174.png differ diff --git a/fonts/MortalFont40/2175.png b/fonts/MortalFont40/2175.png new file mode 100644 index 000000000..070e6d87d Binary files /dev/null and b/fonts/MortalFont40/2175.png differ diff --git a/fonts/MortalFont40/2176.png b/fonts/MortalFont40/2176.png new file mode 100644 index 000000000..d5788c281 Binary files /dev/null and b/fonts/MortalFont40/2176.png differ diff --git a/fonts/MortalFont40/2177.png b/fonts/MortalFont40/2177.png new file mode 100644 index 000000000..7d8c633ed Binary files /dev/null and b/fonts/MortalFont40/2177.png differ diff --git a/fonts/MortalFont40/2178.png b/fonts/MortalFont40/2178.png new file mode 100644 index 000000000..acab66d78 Binary files /dev/null and b/fonts/MortalFont40/2178.png differ diff --git a/fonts/MortalFont40/2179.png b/fonts/MortalFont40/2179.png new file mode 100644 index 000000000..c4d706540 Binary files /dev/null and b/fonts/MortalFont40/2179.png differ diff --git a/fonts/MortalFont40/217A.png b/fonts/MortalFont40/217A.png new file mode 100644 index 000000000..fd30d52ed Binary files /dev/null and b/fonts/MortalFont40/217A.png differ diff --git a/fonts/MortalFont40/217B.png b/fonts/MortalFont40/217B.png new file mode 100644 index 000000000..1d47c4112 Binary files /dev/null and b/fonts/MortalFont40/217B.png differ diff --git a/fonts/MortalFont40/2190.png b/fonts/MortalFont40/2190.png new file mode 100644 index 000000000..5ef4836cd Binary files /dev/null and b/fonts/MortalFont40/2190.png differ diff --git a/fonts/MortalFont40/2191.png b/fonts/MortalFont40/2191.png new file mode 100644 index 000000000..7c236db66 Binary files /dev/null and b/fonts/MortalFont40/2191.png differ diff --git a/fonts/MortalFont40/2192.png b/fonts/MortalFont40/2192.png new file mode 100644 index 000000000..36c8c2ca8 Binary files /dev/null and b/fonts/MortalFont40/2192.png differ diff --git a/fonts/MortalFont40/2193.png b/fonts/MortalFont40/2193.png new file mode 100644 index 000000000..8fa0bc0c8 Binary files /dev/null and b/fonts/MortalFont40/2193.png differ diff --git a/fonts/MortalFont40/2194.png b/fonts/MortalFont40/2194.png new file mode 100644 index 000000000..3717946be Binary files /dev/null and b/fonts/MortalFont40/2194.png differ diff --git a/fonts/MortalFont40/2196.png b/fonts/MortalFont40/2196.png new file mode 100644 index 000000000..5b3b77964 Binary files /dev/null and b/fonts/MortalFont40/2196.png differ diff --git a/fonts/MortalFont40/2197.png b/fonts/MortalFont40/2197.png new file mode 100644 index 000000000..1d682b712 Binary files /dev/null and b/fonts/MortalFont40/2197.png differ diff --git a/fonts/MortalFont40/2198.png b/fonts/MortalFont40/2198.png new file mode 100644 index 000000000..f52c7e49e Binary files /dev/null and b/fonts/MortalFont40/2198.png differ diff --git a/fonts/MortalFont40/2199.png b/fonts/MortalFont40/2199.png new file mode 100644 index 000000000..2688ea395 Binary files /dev/null and b/fonts/MortalFont40/2199.png differ diff --git a/fonts/MortalFont40/21C4.png b/fonts/MortalFont40/21C4.png new file mode 100644 index 000000000..32e24ec79 Binary files /dev/null and b/fonts/MortalFont40/21C4.png differ diff --git a/fonts/MortalFont40/21D2.png b/fonts/MortalFont40/21D2.png new file mode 100644 index 000000000..3fc8a1667 Binary files /dev/null and b/fonts/MortalFont40/21D2.png differ diff --git a/fonts/MortalFont40/21D4.png b/fonts/MortalFont40/21D4.png new file mode 100644 index 000000000..0f8802e9f Binary files /dev/null and b/fonts/MortalFont40/21D4.png differ diff --git a/fonts/MortalFont40/21E6.png b/fonts/MortalFont40/21E6.png new file mode 100644 index 000000000..3f6f481a3 Binary files /dev/null and b/fonts/MortalFont40/21E6.png differ diff --git a/fonts/MortalFont40/21E7.png b/fonts/MortalFont40/21E7.png new file mode 100644 index 000000000..cc6897811 Binary files /dev/null and b/fonts/MortalFont40/21E7.png differ diff --git a/fonts/MortalFont40/21E8.png b/fonts/MortalFont40/21E8.png new file mode 100644 index 000000000..b690f75e4 Binary files /dev/null and b/fonts/MortalFont40/21E8.png differ diff --git a/fonts/MortalFont40/21E9.png b/fonts/MortalFont40/21E9.png new file mode 100644 index 000000000..df6b76e08 Binary files /dev/null and b/fonts/MortalFont40/21E9.png differ diff --git a/fonts/MortalFont40/2200.png b/fonts/MortalFont40/2200.png new file mode 100644 index 000000000..453dc197e Binary files /dev/null and b/fonts/MortalFont40/2200.png differ diff --git a/fonts/MortalFont40/2202.png b/fonts/MortalFont40/2202.png new file mode 100644 index 000000000..6816de904 Binary files /dev/null and b/fonts/MortalFont40/2202.png differ diff --git a/fonts/MortalFont40/2203.png b/fonts/MortalFont40/2203.png new file mode 100644 index 000000000..8315c10fd Binary files /dev/null and b/fonts/MortalFont40/2203.png differ diff --git a/fonts/MortalFont40/2205.png b/fonts/MortalFont40/2205.png new file mode 100644 index 000000000..822aff5e9 Binary files /dev/null and b/fonts/MortalFont40/2205.png differ diff --git a/fonts/MortalFont40/2207.png b/fonts/MortalFont40/2207.png new file mode 100644 index 000000000..235c86992 Binary files /dev/null and b/fonts/MortalFont40/2207.png differ diff --git a/fonts/MortalFont40/2208.png b/fonts/MortalFont40/2208.png new file mode 100644 index 000000000..db2d3b03b Binary files /dev/null and b/fonts/MortalFont40/2208.png differ diff --git a/fonts/MortalFont40/2209.png b/fonts/MortalFont40/2209.png new file mode 100644 index 000000000..2f0efc65a Binary files /dev/null and b/fonts/MortalFont40/2209.png differ diff --git a/fonts/MortalFont40/220B.png b/fonts/MortalFont40/220B.png new file mode 100644 index 000000000..0a0e84159 Binary files /dev/null and b/fonts/MortalFont40/220B.png differ diff --git a/fonts/MortalFont40/2212.png b/fonts/MortalFont40/2212.png new file mode 100644 index 000000000..146fab2d3 Binary files /dev/null and b/fonts/MortalFont40/2212.png differ diff --git a/fonts/MortalFont40/2213.png b/fonts/MortalFont40/2213.png new file mode 100644 index 000000000..88b070580 Binary files /dev/null and b/fonts/MortalFont40/2213.png differ diff --git a/fonts/MortalFont40/221A.png b/fonts/MortalFont40/221A.png new file mode 100644 index 000000000..6ea318f8e Binary files /dev/null and b/fonts/MortalFont40/221A.png differ diff --git a/fonts/MortalFont40/221D.png b/fonts/MortalFont40/221D.png new file mode 100644 index 000000000..8abfb9bfd Binary files /dev/null and b/fonts/MortalFont40/221D.png differ diff --git a/fonts/MortalFont40/221E.png b/fonts/MortalFont40/221E.png new file mode 100644 index 000000000..08a029091 Binary files /dev/null and b/fonts/MortalFont40/221E.png differ diff --git a/fonts/MortalFont40/221F.png b/fonts/MortalFont40/221F.png new file mode 100644 index 000000000..d806cbfb7 Binary files /dev/null and b/fonts/MortalFont40/221F.png differ diff --git a/fonts/MortalFont40/2220.png b/fonts/MortalFont40/2220.png new file mode 100644 index 000000000..bd2fdb284 Binary files /dev/null and b/fonts/MortalFont40/2220.png differ diff --git a/fonts/MortalFont40/2225.png b/fonts/MortalFont40/2225.png new file mode 100644 index 000000000..69dfdb73f Binary files /dev/null and b/fonts/MortalFont40/2225.png differ diff --git a/fonts/MortalFont40/2226.png b/fonts/MortalFont40/2226.png new file mode 100644 index 000000000..4c201e012 Binary files /dev/null and b/fonts/MortalFont40/2226.png differ diff --git a/fonts/MortalFont40/2227.png b/fonts/MortalFont40/2227.png new file mode 100644 index 000000000..a4e018cc0 Binary files /dev/null and b/fonts/MortalFont40/2227.png differ diff --git a/fonts/MortalFont40/2228.png b/fonts/MortalFont40/2228.png new file mode 100644 index 000000000..b9aafd73d Binary files /dev/null and b/fonts/MortalFont40/2228.png differ diff --git a/fonts/MortalFont40/2229.png b/fonts/MortalFont40/2229.png new file mode 100644 index 000000000..8b8a3734d Binary files /dev/null and b/fonts/MortalFont40/2229.png differ diff --git a/fonts/MortalFont40/222A.png b/fonts/MortalFont40/222A.png new file mode 100644 index 000000000..4c279f4e6 Binary files /dev/null and b/fonts/MortalFont40/222A.png differ diff --git a/fonts/MortalFont40/222B.png b/fonts/MortalFont40/222B.png new file mode 100644 index 000000000..83c5e7b0c Binary files /dev/null and b/fonts/MortalFont40/222B.png differ diff --git a/fonts/MortalFont40/222C.png b/fonts/MortalFont40/222C.png new file mode 100644 index 000000000..5349909ec Binary files /dev/null and b/fonts/MortalFont40/222C.png differ diff --git a/fonts/MortalFont40/222E.png b/fonts/MortalFont40/222E.png new file mode 100644 index 000000000..1c414041e Binary files /dev/null and b/fonts/MortalFont40/222E.png differ diff --git a/fonts/MortalFont40/2234.png b/fonts/MortalFont40/2234.png new file mode 100644 index 000000000..a2d2e55b1 Binary files /dev/null and b/fonts/MortalFont40/2234.png differ diff --git a/fonts/MortalFont40/2235.png b/fonts/MortalFont40/2235.png new file mode 100644 index 000000000..a5cd99e78 Binary files /dev/null and b/fonts/MortalFont40/2235.png differ diff --git a/fonts/MortalFont40/223D.png b/fonts/MortalFont40/223D.png new file mode 100644 index 000000000..49af39cce Binary files /dev/null and b/fonts/MortalFont40/223D.png differ diff --git a/fonts/MortalFont40/2243.png b/fonts/MortalFont40/2243.png new file mode 100644 index 000000000..f512a08a2 Binary files /dev/null and b/fonts/MortalFont40/2243.png differ diff --git a/fonts/MortalFont40/2245.png b/fonts/MortalFont40/2245.png new file mode 100644 index 000000000..9a197e88d Binary files /dev/null and b/fonts/MortalFont40/2245.png differ diff --git a/fonts/MortalFont40/2248.png b/fonts/MortalFont40/2248.png new file mode 100644 index 000000000..03d7166e4 Binary files /dev/null and b/fonts/MortalFont40/2248.png differ diff --git a/fonts/MortalFont40/2252.png b/fonts/MortalFont40/2252.png new file mode 100644 index 000000000..ec367133c Binary files /dev/null and b/fonts/MortalFont40/2252.png differ diff --git a/fonts/MortalFont40/2260.png b/fonts/MortalFont40/2260.png new file mode 100644 index 000000000..6b44a3122 Binary files /dev/null and b/fonts/MortalFont40/2260.png differ diff --git a/fonts/MortalFont40/2261.png b/fonts/MortalFont40/2261.png new file mode 100644 index 000000000..1c26be649 Binary files /dev/null and b/fonts/MortalFont40/2261.png differ diff --git a/fonts/MortalFont40/2262.png b/fonts/MortalFont40/2262.png new file mode 100644 index 000000000..402982f21 Binary files /dev/null and b/fonts/MortalFont40/2262.png differ diff --git a/fonts/MortalFont40/2266.png b/fonts/MortalFont40/2266.png new file mode 100644 index 000000000..a6dfdae0a Binary files /dev/null and b/fonts/MortalFont40/2266.png differ diff --git a/fonts/MortalFont40/2267.png b/fonts/MortalFont40/2267.png new file mode 100644 index 000000000..c6785a826 Binary files /dev/null and b/fonts/MortalFont40/2267.png differ diff --git a/fonts/MortalFont40/226A.png b/fonts/MortalFont40/226A.png new file mode 100644 index 000000000..cfb1f1eae Binary files /dev/null and b/fonts/MortalFont40/226A.png differ diff --git a/fonts/MortalFont40/226B.png b/fonts/MortalFont40/226B.png new file mode 100644 index 000000000..35a18936a Binary files /dev/null and b/fonts/MortalFont40/226B.png differ diff --git a/fonts/MortalFont40/2276.png b/fonts/MortalFont40/2276.png new file mode 100644 index 000000000..03adeab7a Binary files /dev/null and b/fonts/MortalFont40/2276.png differ diff --git a/fonts/MortalFont40/2277.png b/fonts/MortalFont40/2277.png new file mode 100644 index 000000000..1f48aac62 Binary files /dev/null and b/fonts/MortalFont40/2277.png differ diff --git a/fonts/MortalFont40/2282.png b/fonts/MortalFont40/2282.png new file mode 100644 index 000000000..329125458 Binary files /dev/null and b/fonts/MortalFont40/2282.png differ diff --git a/fonts/MortalFont40/2283.png b/fonts/MortalFont40/2283.png new file mode 100644 index 000000000..8ee74c2ed Binary files /dev/null and b/fonts/MortalFont40/2283.png differ diff --git a/fonts/MortalFont40/2284.png b/fonts/MortalFont40/2284.png new file mode 100644 index 000000000..be8c05e43 Binary files /dev/null and b/fonts/MortalFont40/2284.png differ diff --git a/fonts/MortalFont40/2285.png b/fonts/MortalFont40/2285.png new file mode 100644 index 000000000..0c6296564 Binary files /dev/null and b/fonts/MortalFont40/2285.png differ diff --git a/fonts/MortalFont40/2286.png b/fonts/MortalFont40/2286.png new file mode 100644 index 000000000..055e978cc Binary files /dev/null and b/fonts/MortalFont40/2286.png differ diff --git a/fonts/MortalFont40/2287.png b/fonts/MortalFont40/2287.png new file mode 100644 index 000000000..834ab803b Binary files /dev/null and b/fonts/MortalFont40/2287.png differ diff --git a/fonts/MortalFont40/228A.png b/fonts/MortalFont40/228A.png new file mode 100644 index 000000000..14008a7b0 Binary files /dev/null and b/fonts/MortalFont40/228A.png differ diff --git a/fonts/MortalFont40/228B.png b/fonts/MortalFont40/228B.png new file mode 100644 index 000000000..0aa77fd83 Binary files /dev/null and b/fonts/MortalFont40/228B.png differ diff --git a/fonts/MortalFont40/2295.png b/fonts/MortalFont40/2295.png new file mode 100644 index 000000000..d99903b0c Binary files /dev/null and b/fonts/MortalFont40/2295.png differ diff --git a/fonts/MortalFont40/2296.png b/fonts/MortalFont40/2296.png new file mode 100644 index 000000000..ec6b7a5b0 Binary files /dev/null and b/fonts/MortalFont40/2296.png differ diff --git a/fonts/MortalFont40/2297.png b/fonts/MortalFont40/2297.png new file mode 100644 index 000000000..c4f4fc8f5 Binary files /dev/null and b/fonts/MortalFont40/2297.png differ diff --git a/fonts/MortalFont40/22A5.png b/fonts/MortalFont40/22A5.png new file mode 100644 index 000000000..856af5f62 Binary files /dev/null and b/fonts/MortalFont40/22A5.png differ diff --git a/fonts/MortalFont40/22BF.png b/fonts/MortalFont40/22BF.png new file mode 100644 index 000000000..9292f1d8a Binary files /dev/null and b/fonts/MortalFont40/22BF.png differ diff --git a/fonts/MortalFont40/22DA.png b/fonts/MortalFont40/22DA.png new file mode 100644 index 000000000..caabd9f72 Binary files /dev/null and b/fonts/MortalFont40/22DA.png differ diff --git a/fonts/MortalFont40/22DB.png b/fonts/MortalFont40/22DB.png new file mode 100644 index 000000000..d3d6149f8 Binary files /dev/null and b/fonts/MortalFont40/22DB.png differ diff --git a/fonts/MortalFont40/2305.png b/fonts/MortalFont40/2305.png new file mode 100644 index 000000000..177f0f1e2 Binary files /dev/null and b/fonts/MortalFont40/2305.png differ diff --git a/fonts/MortalFont40/2306.png b/fonts/MortalFont40/2306.png new file mode 100644 index 000000000..73722df38 Binary files /dev/null and b/fonts/MortalFont40/2306.png differ diff --git a/fonts/MortalFont40/2312.png b/fonts/MortalFont40/2312.png new file mode 100644 index 000000000..d258234ca Binary files /dev/null and b/fonts/MortalFont40/2312.png differ diff --git a/fonts/MortalFont40/2318.png b/fonts/MortalFont40/2318.png new file mode 100644 index 000000000..1c1e26b38 Binary files /dev/null and b/fonts/MortalFont40/2318.png differ diff --git a/fonts/MortalFont40/23BE.png b/fonts/MortalFont40/23BE.png new file mode 100644 index 000000000..efa132422 Binary files /dev/null and b/fonts/MortalFont40/23BE.png differ diff --git a/fonts/MortalFont40/23BF.png b/fonts/MortalFont40/23BF.png new file mode 100644 index 000000000..4361e4b7f Binary files /dev/null and b/fonts/MortalFont40/23BF.png differ diff --git a/fonts/MortalFont40/23C0.png b/fonts/MortalFont40/23C0.png new file mode 100644 index 000000000..739e0a8df Binary files /dev/null and b/fonts/MortalFont40/23C0.png differ diff --git a/fonts/MortalFont40/23C1.png b/fonts/MortalFont40/23C1.png new file mode 100644 index 000000000..5882c64e3 Binary files /dev/null and b/fonts/MortalFont40/23C1.png differ diff --git a/fonts/MortalFont40/23C2.png b/fonts/MortalFont40/23C2.png new file mode 100644 index 000000000..891110f98 Binary files /dev/null and b/fonts/MortalFont40/23C2.png differ diff --git a/fonts/MortalFont40/23C3.png b/fonts/MortalFont40/23C3.png new file mode 100644 index 000000000..cac86741a Binary files /dev/null and b/fonts/MortalFont40/23C3.png differ diff --git a/fonts/MortalFont40/23C4.png b/fonts/MortalFont40/23C4.png new file mode 100644 index 000000000..0b0d06d26 Binary files /dev/null and b/fonts/MortalFont40/23C4.png differ diff --git a/fonts/MortalFont40/23C5.png b/fonts/MortalFont40/23C5.png new file mode 100644 index 000000000..05878d334 Binary files /dev/null and b/fonts/MortalFont40/23C5.png differ diff --git a/fonts/MortalFont40/23C6.png b/fonts/MortalFont40/23C6.png new file mode 100644 index 000000000..3ac2ea1c4 Binary files /dev/null and b/fonts/MortalFont40/23C6.png differ diff --git a/fonts/MortalFont40/23C7.png b/fonts/MortalFont40/23C7.png new file mode 100644 index 000000000..ae36c579c Binary files /dev/null and b/fonts/MortalFont40/23C7.png differ diff --git a/fonts/MortalFont40/23C8.png b/fonts/MortalFont40/23C8.png new file mode 100644 index 000000000..f4ad98754 Binary files /dev/null and b/fonts/MortalFont40/23C8.png differ diff --git a/fonts/MortalFont40/23C9.png b/fonts/MortalFont40/23C9.png new file mode 100644 index 000000000..348142f33 Binary files /dev/null and b/fonts/MortalFont40/23C9.png differ diff --git a/fonts/MortalFont40/23CA.png b/fonts/MortalFont40/23CA.png new file mode 100644 index 000000000..5dfc3498d Binary files /dev/null and b/fonts/MortalFont40/23CA.png differ diff --git a/fonts/MortalFont40/23CB.png b/fonts/MortalFont40/23CB.png new file mode 100644 index 000000000..acd94077b Binary files /dev/null and b/fonts/MortalFont40/23CB.png differ diff --git a/fonts/MortalFont40/23CC.png b/fonts/MortalFont40/23CC.png new file mode 100644 index 000000000..3a1598729 Binary files /dev/null and b/fonts/MortalFont40/23CC.png differ diff --git a/fonts/MortalFont40/23CE.png b/fonts/MortalFont40/23CE.png new file mode 100644 index 000000000..798f0beea Binary files /dev/null and b/fonts/MortalFont40/23CE.png differ diff --git a/fonts/MortalFont40/2423.png b/fonts/MortalFont40/2423.png new file mode 100644 index 000000000..b6e49de8a Binary files /dev/null and b/fonts/MortalFont40/2423.png differ diff --git a/fonts/MortalFont40/2460.png b/fonts/MortalFont40/2460.png new file mode 100644 index 000000000..8cef14e72 Binary files /dev/null and b/fonts/MortalFont40/2460.png differ diff --git a/fonts/MortalFont40/2461.png b/fonts/MortalFont40/2461.png new file mode 100644 index 000000000..73290ddb3 Binary files /dev/null and b/fonts/MortalFont40/2461.png differ diff --git a/fonts/MortalFont40/2462.png b/fonts/MortalFont40/2462.png new file mode 100644 index 000000000..b19de0861 Binary files /dev/null and b/fonts/MortalFont40/2462.png differ diff --git a/fonts/MortalFont40/2463.png b/fonts/MortalFont40/2463.png new file mode 100644 index 000000000..b08d15b91 Binary files /dev/null and b/fonts/MortalFont40/2463.png differ diff --git a/fonts/MortalFont40/2464.png b/fonts/MortalFont40/2464.png new file mode 100644 index 000000000..d83a72151 Binary files /dev/null and b/fonts/MortalFont40/2464.png differ diff --git a/fonts/MortalFont40/2465.png b/fonts/MortalFont40/2465.png new file mode 100644 index 000000000..1e87b8cc3 Binary files /dev/null and b/fonts/MortalFont40/2465.png differ diff --git a/fonts/MortalFont40/2466.png b/fonts/MortalFont40/2466.png new file mode 100644 index 000000000..e7f0527c0 Binary files /dev/null and b/fonts/MortalFont40/2466.png differ diff --git a/fonts/MortalFont40/2467.png b/fonts/MortalFont40/2467.png new file mode 100644 index 000000000..839365163 Binary files /dev/null and b/fonts/MortalFont40/2467.png differ diff --git a/fonts/MortalFont40/2468.png b/fonts/MortalFont40/2468.png new file mode 100644 index 000000000..f0f7c0930 Binary files /dev/null and b/fonts/MortalFont40/2468.png differ diff --git a/fonts/MortalFont40/2469.png b/fonts/MortalFont40/2469.png new file mode 100644 index 000000000..2fc65dc99 Binary files /dev/null and b/fonts/MortalFont40/2469.png differ diff --git a/fonts/MortalFont40/246A.png b/fonts/MortalFont40/246A.png new file mode 100644 index 000000000..42965e986 Binary files /dev/null and b/fonts/MortalFont40/246A.png differ diff --git a/fonts/MortalFont40/246B.png b/fonts/MortalFont40/246B.png new file mode 100644 index 000000000..934b42ae8 Binary files /dev/null and b/fonts/MortalFont40/246B.png differ diff --git a/fonts/MortalFont40/246C.png b/fonts/MortalFont40/246C.png new file mode 100644 index 000000000..80088b332 Binary files /dev/null and b/fonts/MortalFont40/246C.png differ diff --git a/fonts/MortalFont40/246D.png b/fonts/MortalFont40/246D.png new file mode 100644 index 000000000..069f7debc Binary files /dev/null and b/fonts/MortalFont40/246D.png differ diff --git a/fonts/MortalFont40/246E.png b/fonts/MortalFont40/246E.png new file mode 100644 index 000000000..7890fdb27 Binary files /dev/null and b/fonts/MortalFont40/246E.png differ diff --git a/fonts/MortalFont40/246F.png b/fonts/MortalFont40/246F.png new file mode 100644 index 000000000..ac82cd0e4 Binary files /dev/null and b/fonts/MortalFont40/246F.png differ diff --git a/fonts/MortalFont40/2470.png b/fonts/MortalFont40/2470.png new file mode 100644 index 000000000..d9c4fac2f Binary files /dev/null and b/fonts/MortalFont40/2470.png differ diff --git a/fonts/MortalFont40/2471.png b/fonts/MortalFont40/2471.png new file mode 100644 index 000000000..3dd25d856 Binary files /dev/null and b/fonts/MortalFont40/2471.png differ diff --git a/fonts/MortalFont40/2472.png b/fonts/MortalFont40/2472.png new file mode 100644 index 000000000..5a3cb67b4 Binary files /dev/null and b/fonts/MortalFont40/2472.png differ diff --git a/fonts/MortalFont40/2473.png b/fonts/MortalFont40/2473.png new file mode 100644 index 000000000..c15468755 Binary files /dev/null and b/fonts/MortalFont40/2473.png differ diff --git a/fonts/MortalFont40/24D0.png b/fonts/MortalFont40/24D0.png new file mode 100644 index 000000000..26e12f5f6 Binary files /dev/null and b/fonts/MortalFont40/24D0.png differ diff --git a/fonts/MortalFont40/24D1.png b/fonts/MortalFont40/24D1.png new file mode 100644 index 000000000..8c6afe79e Binary files /dev/null and b/fonts/MortalFont40/24D1.png differ diff --git a/fonts/MortalFont40/24D2.png b/fonts/MortalFont40/24D2.png new file mode 100644 index 000000000..15fdb7fce Binary files /dev/null and b/fonts/MortalFont40/24D2.png differ diff --git a/fonts/MortalFont40/24D3.png b/fonts/MortalFont40/24D3.png new file mode 100644 index 000000000..672d5a707 Binary files /dev/null and b/fonts/MortalFont40/24D3.png differ diff --git a/fonts/MortalFont40/24D4.png b/fonts/MortalFont40/24D4.png new file mode 100644 index 000000000..3ebf6cc63 Binary files /dev/null and b/fonts/MortalFont40/24D4.png differ diff --git a/fonts/MortalFont40/24D5.png b/fonts/MortalFont40/24D5.png new file mode 100644 index 000000000..dc6172e8a Binary files /dev/null and b/fonts/MortalFont40/24D5.png differ diff --git a/fonts/MortalFont40/24D6.png b/fonts/MortalFont40/24D6.png new file mode 100644 index 000000000..6e32e5254 Binary files /dev/null and b/fonts/MortalFont40/24D6.png differ diff --git a/fonts/MortalFont40/24D7.png b/fonts/MortalFont40/24D7.png new file mode 100644 index 000000000..483108109 Binary files /dev/null and b/fonts/MortalFont40/24D7.png differ diff --git a/fonts/MortalFont40/24D8.png b/fonts/MortalFont40/24D8.png new file mode 100644 index 000000000..ccad78215 Binary files /dev/null and b/fonts/MortalFont40/24D8.png differ diff --git a/fonts/MortalFont40/24D9.png b/fonts/MortalFont40/24D9.png new file mode 100644 index 000000000..60317e077 Binary files /dev/null and b/fonts/MortalFont40/24D9.png differ diff --git a/fonts/MortalFont40/24DA.png b/fonts/MortalFont40/24DA.png new file mode 100644 index 000000000..7fabf1112 Binary files /dev/null and b/fonts/MortalFont40/24DA.png differ diff --git a/fonts/MortalFont40/24DB.png b/fonts/MortalFont40/24DB.png new file mode 100644 index 000000000..73dd0662f Binary files /dev/null and b/fonts/MortalFont40/24DB.png differ diff --git a/fonts/MortalFont40/24DC.png b/fonts/MortalFont40/24DC.png new file mode 100644 index 000000000..a0c3b1793 Binary files /dev/null and b/fonts/MortalFont40/24DC.png differ diff --git a/fonts/MortalFont40/24DD.png b/fonts/MortalFont40/24DD.png new file mode 100644 index 000000000..fa26b420a Binary files /dev/null and b/fonts/MortalFont40/24DD.png differ diff --git a/fonts/MortalFont40/24DE.png b/fonts/MortalFont40/24DE.png new file mode 100644 index 000000000..17634f389 Binary files /dev/null and b/fonts/MortalFont40/24DE.png differ diff --git a/fonts/MortalFont40/24DF.png b/fonts/MortalFont40/24DF.png new file mode 100644 index 000000000..68c771891 Binary files /dev/null and b/fonts/MortalFont40/24DF.png differ diff --git a/fonts/MortalFont40/24E0.png b/fonts/MortalFont40/24E0.png new file mode 100644 index 000000000..f29c9b780 Binary files /dev/null and b/fonts/MortalFont40/24E0.png differ diff --git a/fonts/MortalFont40/24E1.png b/fonts/MortalFont40/24E1.png new file mode 100644 index 000000000..c8c623ff0 Binary files /dev/null and b/fonts/MortalFont40/24E1.png differ diff --git a/fonts/MortalFont40/24E2.png b/fonts/MortalFont40/24E2.png new file mode 100644 index 000000000..6491bbde9 Binary files /dev/null and b/fonts/MortalFont40/24E2.png differ diff --git a/fonts/MortalFont40/24E3.png b/fonts/MortalFont40/24E3.png new file mode 100644 index 000000000..a289ff596 Binary files /dev/null and b/fonts/MortalFont40/24E3.png differ diff --git a/fonts/MortalFont40/24E4.png b/fonts/MortalFont40/24E4.png new file mode 100644 index 000000000..d1efb6527 Binary files /dev/null and b/fonts/MortalFont40/24E4.png differ diff --git a/fonts/MortalFont40/24E5.png b/fonts/MortalFont40/24E5.png new file mode 100644 index 000000000..6f2117798 Binary files /dev/null and b/fonts/MortalFont40/24E5.png differ diff --git a/fonts/MortalFont40/24E6.png b/fonts/MortalFont40/24E6.png new file mode 100644 index 000000000..e9eeac687 Binary files /dev/null and b/fonts/MortalFont40/24E6.png differ diff --git a/fonts/MortalFont40/24E7.png b/fonts/MortalFont40/24E7.png new file mode 100644 index 000000000..e027d3386 Binary files /dev/null and b/fonts/MortalFont40/24E7.png differ diff --git a/fonts/MortalFont40/24E8.png b/fonts/MortalFont40/24E8.png new file mode 100644 index 000000000..1de6394c4 Binary files /dev/null and b/fonts/MortalFont40/24E8.png differ diff --git a/fonts/MortalFont40/24E9.png b/fonts/MortalFont40/24E9.png new file mode 100644 index 000000000..015e84acb Binary files /dev/null and b/fonts/MortalFont40/24E9.png differ diff --git a/fonts/MortalFont40/24EB.png b/fonts/MortalFont40/24EB.png new file mode 100644 index 000000000..c4a7cadc2 Binary files /dev/null and b/fonts/MortalFont40/24EB.png differ diff --git a/fonts/MortalFont40/24EC.png b/fonts/MortalFont40/24EC.png new file mode 100644 index 000000000..8e2557906 Binary files /dev/null and b/fonts/MortalFont40/24EC.png differ diff --git a/fonts/MortalFont40/24ED.png b/fonts/MortalFont40/24ED.png new file mode 100644 index 000000000..88cf81417 Binary files /dev/null and b/fonts/MortalFont40/24ED.png differ diff --git a/fonts/MortalFont40/24EE.png b/fonts/MortalFont40/24EE.png new file mode 100644 index 000000000..d9f1067db Binary files /dev/null and b/fonts/MortalFont40/24EE.png differ diff --git a/fonts/MortalFont40/24EF.png b/fonts/MortalFont40/24EF.png new file mode 100644 index 000000000..262b42521 Binary files /dev/null and b/fonts/MortalFont40/24EF.png differ diff --git a/fonts/MortalFont40/24F0.png b/fonts/MortalFont40/24F0.png new file mode 100644 index 000000000..1d93caf16 Binary files /dev/null and b/fonts/MortalFont40/24F0.png differ diff --git a/fonts/MortalFont40/24F1.png b/fonts/MortalFont40/24F1.png new file mode 100644 index 000000000..95a0ea87f Binary files /dev/null and b/fonts/MortalFont40/24F1.png differ diff --git a/fonts/MortalFont40/24F2.png b/fonts/MortalFont40/24F2.png new file mode 100644 index 000000000..a72f17eb4 Binary files /dev/null and b/fonts/MortalFont40/24F2.png differ diff --git a/fonts/MortalFont40/24F3.png b/fonts/MortalFont40/24F3.png new file mode 100644 index 000000000..2dc597630 Binary files /dev/null and b/fonts/MortalFont40/24F3.png differ diff --git a/fonts/MortalFont40/24F4.png b/fonts/MortalFont40/24F4.png new file mode 100644 index 000000000..bb16ad7db Binary files /dev/null and b/fonts/MortalFont40/24F4.png differ diff --git a/fonts/MortalFont40/24F5.png b/fonts/MortalFont40/24F5.png new file mode 100644 index 000000000..936df2b02 Binary files /dev/null and b/fonts/MortalFont40/24F5.png differ diff --git a/fonts/MortalFont40/24F6.png b/fonts/MortalFont40/24F6.png new file mode 100644 index 000000000..56c83566b Binary files /dev/null and b/fonts/MortalFont40/24F6.png differ diff --git a/fonts/MortalFont40/24F7.png b/fonts/MortalFont40/24F7.png new file mode 100644 index 000000000..82c319649 Binary files /dev/null and b/fonts/MortalFont40/24F7.png differ diff --git a/fonts/MortalFont40/24F8.png b/fonts/MortalFont40/24F8.png new file mode 100644 index 000000000..11b98b877 Binary files /dev/null and b/fonts/MortalFont40/24F8.png differ diff --git a/fonts/MortalFont40/24F9.png b/fonts/MortalFont40/24F9.png new file mode 100644 index 000000000..af2e6ac98 Binary files /dev/null and b/fonts/MortalFont40/24F9.png differ diff --git a/fonts/MortalFont40/24FA.png b/fonts/MortalFont40/24FA.png new file mode 100644 index 000000000..55de02e19 Binary files /dev/null and b/fonts/MortalFont40/24FA.png differ diff --git a/fonts/MortalFont40/24FB.png b/fonts/MortalFont40/24FB.png new file mode 100644 index 000000000..927c517eb Binary files /dev/null and b/fonts/MortalFont40/24FB.png differ diff --git a/fonts/MortalFont40/24FC.png b/fonts/MortalFont40/24FC.png new file mode 100644 index 000000000..176571e37 Binary files /dev/null and b/fonts/MortalFont40/24FC.png differ diff --git a/fonts/MortalFont40/24FD.png b/fonts/MortalFont40/24FD.png new file mode 100644 index 000000000..ff8f5cfeb Binary files /dev/null and b/fonts/MortalFont40/24FD.png differ diff --git a/fonts/MortalFont40/24FE.png b/fonts/MortalFont40/24FE.png new file mode 100644 index 000000000..0479f2dae Binary files /dev/null and b/fonts/MortalFont40/24FE.png differ diff --git a/fonts/MortalFont40/2500.png b/fonts/MortalFont40/2500.png new file mode 100644 index 000000000..16fe7a126 Binary files /dev/null and b/fonts/MortalFont40/2500.png differ diff --git a/fonts/MortalFont40/2501.png b/fonts/MortalFont40/2501.png new file mode 100644 index 000000000..1cfdd37b5 Binary files /dev/null and b/fonts/MortalFont40/2501.png differ diff --git a/fonts/MortalFont40/2502.png b/fonts/MortalFont40/2502.png new file mode 100644 index 000000000..0b1d7b164 Binary files /dev/null and b/fonts/MortalFont40/2502.png differ diff --git a/fonts/MortalFont40/2503.png b/fonts/MortalFont40/2503.png new file mode 100644 index 000000000..8a96c53fb Binary files /dev/null and b/fonts/MortalFont40/2503.png differ diff --git a/fonts/MortalFont40/250C.png b/fonts/MortalFont40/250C.png new file mode 100644 index 000000000..eb314edfc Binary files /dev/null and b/fonts/MortalFont40/250C.png differ diff --git a/fonts/MortalFont40/250F.png b/fonts/MortalFont40/250F.png new file mode 100644 index 000000000..1cbc751c1 Binary files /dev/null and b/fonts/MortalFont40/250F.png differ diff --git a/fonts/MortalFont40/2510.png b/fonts/MortalFont40/2510.png new file mode 100644 index 000000000..50a29b21e Binary files /dev/null and b/fonts/MortalFont40/2510.png differ diff --git a/fonts/MortalFont40/2513.png b/fonts/MortalFont40/2513.png new file mode 100644 index 000000000..d39531ec3 Binary files /dev/null and b/fonts/MortalFont40/2513.png differ diff --git a/fonts/MortalFont40/2514.png b/fonts/MortalFont40/2514.png new file mode 100644 index 000000000..41287d433 Binary files /dev/null and b/fonts/MortalFont40/2514.png differ diff --git a/fonts/MortalFont40/2517.png b/fonts/MortalFont40/2517.png new file mode 100644 index 000000000..c051a4351 Binary files /dev/null and b/fonts/MortalFont40/2517.png differ diff --git a/fonts/MortalFont40/2518.png b/fonts/MortalFont40/2518.png new file mode 100644 index 000000000..7ae1e4e20 Binary files /dev/null and b/fonts/MortalFont40/2518.png differ diff --git a/fonts/MortalFont40/251B.png b/fonts/MortalFont40/251B.png new file mode 100644 index 000000000..28a75a452 Binary files /dev/null and b/fonts/MortalFont40/251B.png differ diff --git a/fonts/MortalFont40/251C.png b/fonts/MortalFont40/251C.png new file mode 100644 index 000000000..5496284f8 Binary files /dev/null and b/fonts/MortalFont40/251C.png differ diff --git a/fonts/MortalFont40/251D.png b/fonts/MortalFont40/251D.png new file mode 100644 index 000000000..a70471f85 Binary files /dev/null and b/fonts/MortalFont40/251D.png differ diff --git a/fonts/MortalFont40/2520.png b/fonts/MortalFont40/2520.png new file mode 100644 index 000000000..5b067dd3c Binary files /dev/null and b/fonts/MortalFont40/2520.png differ diff --git a/fonts/MortalFont40/2523.png b/fonts/MortalFont40/2523.png new file mode 100644 index 000000000..f4c51bf49 Binary files /dev/null and b/fonts/MortalFont40/2523.png differ diff --git a/fonts/MortalFont40/2524.png b/fonts/MortalFont40/2524.png new file mode 100644 index 000000000..2b8c4192e Binary files /dev/null and b/fonts/MortalFont40/2524.png differ diff --git a/fonts/MortalFont40/2525.png b/fonts/MortalFont40/2525.png new file mode 100644 index 000000000..90e3b624e Binary files /dev/null and b/fonts/MortalFont40/2525.png differ diff --git a/fonts/MortalFont40/2528.png b/fonts/MortalFont40/2528.png new file mode 100644 index 000000000..82767eddc Binary files /dev/null and b/fonts/MortalFont40/2528.png differ diff --git a/fonts/MortalFont40/252B.png b/fonts/MortalFont40/252B.png new file mode 100644 index 000000000..807649002 Binary files /dev/null and b/fonts/MortalFont40/252B.png differ diff --git a/fonts/MortalFont40/252C.png b/fonts/MortalFont40/252C.png new file mode 100644 index 000000000..d14b7217e Binary files /dev/null and b/fonts/MortalFont40/252C.png differ diff --git a/fonts/MortalFont40/252F.png b/fonts/MortalFont40/252F.png new file mode 100644 index 000000000..70aadd13a Binary files /dev/null and b/fonts/MortalFont40/252F.png differ diff --git a/fonts/MortalFont40/2530.png b/fonts/MortalFont40/2530.png new file mode 100644 index 000000000..426eb3fd7 Binary files /dev/null and b/fonts/MortalFont40/2530.png differ diff --git a/fonts/MortalFont40/2533.png b/fonts/MortalFont40/2533.png new file mode 100644 index 000000000..e5bbc52cc Binary files /dev/null and b/fonts/MortalFont40/2533.png differ diff --git a/fonts/MortalFont40/2534.png b/fonts/MortalFont40/2534.png new file mode 100644 index 000000000..979f0734b Binary files /dev/null and b/fonts/MortalFont40/2534.png differ diff --git a/fonts/MortalFont40/2537.png b/fonts/MortalFont40/2537.png new file mode 100644 index 000000000..c42c1be32 Binary files /dev/null and b/fonts/MortalFont40/2537.png differ diff --git a/fonts/MortalFont40/2538.png b/fonts/MortalFont40/2538.png new file mode 100644 index 000000000..430879160 Binary files /dev/null and b/fonts/MortalFont40/2538.png differ diff --git a/fonts/MortalFont40/253B.png b/fonts/MortalFont40/253B.png new file mode 100644 index 000000000..6f5c547ba Binary files /dev/null and b/fonts/MortalFont40/253B.png differ diff --git a/fonts/MortalFont40/253C.png b/fonts/MortalFont40/253C.png new file mode 100644 index 000000000..515283f30 Binary files /dev/null and b/fonts/MortalFont40/253C.png differ diff --git a/fonts/MortalFont40/253F.png b/fonts/MortalFont40/253F.png new file mode 100644 index 000000000..9f27dc3ac Binary files /dev/null and b/fonts/MortalFont40/253F.png differ diff --git a/fonts/MortalFont40/2542.png b/fonts/MortalFont40/2542.png new file mode 100644 index 000000000..13a5dc0e7 Binary files /dev/null and b/fonts/MortalFont40/2542.png differ diff --git a/fonts/MortalFont40/254B.png b/fonts/MortalFont40/254B.png new file mode 100644 index 000000000..f4bed45ca Binary files /dev/null and b/fonts/MortalFont40/254B.png differ diff --git a/fonts/MortalFont40/25A0.png b/fonts/MortalFont40/25A0.png new file mode 100644 index 000000000..ff7b06688 Binary files /dev/null and b/fonts/MortalFont40/25A0.png differ diff --git a/fonts/MortalFont40/25A1.png b/fonts/MortalFont40/25A1.png new file mode 100644 index 000000000..21e64a2cb Binary files /dev/null and b/fonts/MortalFont40/25A1.png differ diff --git a/fonts/MortalFont40/25B1.png b/fonts/MortalFont40/25B1.png new file mode 100644 index 000000000..f051e7395 Binary files /dev/null and b/fonts/MortalFont40/25B1.png differ diff --git a/fonts/MortalFont40/25B2.png b/fonts/MortalFont40/25B2.png new file mode 100644 index 000000000..f826f8b43 Binary files /dev/null and b/fonts/MortalFont40/25B2.png differ diff --git a/fonts/MortalFont40/25B3.png b/fonts/MortalFont40/25B3.png new file mode 100644 index 000000000..0b8cbe028 Binary files /dev/null and b/fonts/MortalFont40/25B3.png differ diff --git a/fonts/MortalFont40/25B6.png b/fonts/MortalFont40/25B6.png new file mode 100644 index 000000000..fc3498ba4 Binary files /dev/null and b/fonts/MortalFont40/25B6.png differ diff --git a/fonts/MortalFont40/25B7.png b/fonts/MortalFont40/25B7.png new file mode 100644 index 000000000..8cf086701 Binary files /dev/null and b/fonts/MortalFont40/25B7.png differ diff --git a/fonts/MortalFont40/25BC.png b/fonts/MortalFont40/25BC.png new file mode 100644 index 000000000..cfe4d90f3 Binary files /dev/null and b/fonts/MortalFont40/25BC.png differ diff --git a/fonts/MortalFont40/25BD.png b/fonts/MortalFont40/25BD.png new file mode 100644 index 000000000..632fe008a Binary files /dev/null and b/fonts/MortalFont40/25BD.png differ diff --git a/fonts/MortalFont40/25C0.png b/fonts/MortalFont40/25C0.png new file mode 100644 index 000000000..a6b3bcdd9 Binary files /dev/null and b/fonts/MortalFont40/25C0.png differ diff --git a/fonts/MortalFont40/25C1.png b/fonts/MortalFont40/25C1.png new file mode 100644 index 000000000..f92b709cc Binary files /dev/null and b/fonts/MortalFont40/25C1.png differ diff --git a/fonts/MortalFont40/25C6.png b/fonts/MortalFont40/25C6.png new file mode 100644 index 000000000..cd9c5ff54 Binary files /dev/null and b/fonts/MortalFont40/25C6.png differ diff --git a/fonts/MortalFont40/25C7.png b/fonts/MortalFont40/25C7.png new file mode 100644 index 000000000..f147d2ee6 Binary files /dev/null and b/fonts/MortalFont40/25C7.png differ diff --git a/fonts/MortalFont40/25C9.png b/fonts/MortalFont40/25C9.png new file mode 100644 index 000000000..79ff18786 Binary files /dev/null and b/fonts/MortalFont40/25C9.png differ diff --git a/fonts/MortalFont40/25CB.png b/fonts/MortalFont40/25CB.png new file mode 100644 index 000000000..f2a60542c Binary files /dev/null and b/fonts/MortalFont40/25CB.png differ diff --git a/fonts/MortalFont40/25CE.png b/fonts/MortalFont40/25CE.png new file mode 100644 index 000000000..417fd9ff0 Binary files /dev/null and b/fonts/MortalFont40/25CE.png differ diff --git a/fonts/MortalFont40/25CF.png b/fonts/MortalFont40/25CF.png new file mode 100644 index 000000000..41047b1d4 Binary files /dev/null and b/fonts/MortalFont40/25CF.png differ diff --git a/fonts/MortalFont40/25D0.png b/fonts/MortalFont40/25D0.png new file mode 100644 index 000000000..c77e66ab8 Binary files /dev/null and b/fonts/MortalFont40/25D0.png differ diff --git a/fonts/MortalFont40/25D1.png b/fonts/MortalFont40/25D1.png new file mode 100644 index 000000000..13ab3fcbf Binary files /dev/null and b/fonts/MortalFont40/25D1.png differ diff --git a/fonts/MortalFont40/25D2.png b/fonts/MortalFont40/25D2.png new file mode 100644 index 000000000..2dd159f55 Binary files /dev/null and b/fonts/MortalFont40/25D2.png differ diff --git a/fonts/MortalFont40/25D3.png b/fonts/MortalFont40/25D3.png new file mode 100644 index 000000000..bf2eb0403 Binary files /dev/null and b/fonts/MortalFont40/25D3.png differ diff --git a/fonts/MortalFont40/25E6.png b/fonts/MortalFont40/25E6.png new file mode 100644 index 000000000..185f3764c Binary files /dev/null and b/fonts/MortalFont40/25E6.png differ diff --git a/fonts/MortalFont40/25EF.png b/fonts/MortalFont40/25EF.png new file mode 100644 index 000000000..e7996b90a Binary files /dev/null and b/fonts/MortalFont40/25EF.png differ diff --git a/fonts/MortalFont40/2600.png b/fonts/MortalFont40/2600.png new file mode 100644 index 000000000..760935566 Binary files /dev/null and b/fonts/MortalFont40/2600.png differ diff --git a/fonts/MortalFont40/2601.png b/fonts/MortalFont40/2601.png new file mode 100644 index 000000000..2bfabf019 Binary files /dev/null and b/fonts/MortalFont40/2601.png differ diff --git a/fonts/MortalFont40/2602.png b/fonts/MortalFont40/2602.png new file mode 100644 index 000000000..5f8b14324 Binary files /dev/null and b/fonts/MortalFont40/2602.png differ diff --git a/fonts/MortalFont40/2603.png b/fonts/MortalFont40/2603.png new file mode 100644 index 000000000..9d70c59ba Binary files /dev/null and b/fonts/MortalFont40/2603.png differ diff --git a/fonts/MortalFont40/2605.png b/fonts/MortalFont40/2605.png new file mode 100644 index 000000000..7ad9f95bc Binary files /dev/null and b/fonts/MortalFont40/2605.png differ diff --git a/fonts/MortalFont40/2606.png b/fonts/MortalFont40/2606.png new file mode 100644 index 000000000..11bed0875 Binary files /dev/null and b/fonts/MortalFont40/2606.png differ diff --git a/fonts/MortalFont40/260E.png b/fonts/MortalFont40/260E.png new file mode 100644 index 000000000..63eb4f9d2 Binary files /dev/null and b/fonts/MortalFont40/260E.png differ diff --git a/fonts/MortalFont40/2616.png b/fonts/MortalFont40/2616.png new file mode 100644 index 000000000..4f026f782 Binary files /dev/null and b/fonts/MortalFont40/2616.png differ diff --git a/fonts/MortalFont40/2617.png b/fonts/MortalFont40/2617.png new file mode 100644 index 000000000..0da4064a2 Binary files /dev/null and b/fonts/MortalFont40/2617.png differ diff --git a/fonts/MortalFont40/261E.png b/fonts/MortalFont40/261E.png new file mode 100644 index 000000000..84e652bca Binary files /dev/null and b/fonts/MortalFont40/261E.png differ diff --git a/fonts/MortalFont40/2640.png b/fonts/MortalFont40/2640.png new file mode 100644 index 000000000..0f2583103 Binary files /dev/null and b/fonts/MortalFont40/2640.png differ diff --git a/fonts/MortalFont40/2642.png b/fonts/MortalFont40/2642.png new file mode 100644 index 000000000..45dce879f Binary files /dev/null and b/fonts/MortalFont40/2642.png differ diff --git a/fonts/MortalFont40/2660.png b/fonts/MortalFont40/2660.png new file mode 100644 index 000000000..bba0afd46 Binary files /dev/null and b/fonts/MortalFont40/2660.png differ diff --git a/fonts/MortalFont40/2661.png b/fonts/MortalFont40/2661.png new file mode 100644 index 000000000..94c27bad5 Binary files /dev/null and b/fonts/MortalFont40/2661.png differ diff --git a/fonts/MortalFont40/2662.png b/fonts/MortalFont40/2662.png new file mode 100644 index 000000000..1822993df Binary files /dev/null and b/fonts/MortalFont40/2662.png differ diff --git a/fonts/MortalFont40/2663.png b/fonts/MortalFont40/2663.png new file mode 100644 index 000000000..1c84416c3 Binary files /dev/null and b/fonts/MortalFont40/2663.png differ diff --git a/fonts/MortalFont40/2664.png b/fonts/MortalFont40/2664.png new file mode 100644 index 000000000..04bb72ae5 Binary files /dev/null and b/fonts/MortalFont40/2664.png differ diff --git a/fonts/MortalFont40/2665.png b/fonts/MortalFont40/2665.png new file mode 100644 index 000000000..ea139e1b7 Binary files /dev/null and b/fonts/MortalFont40/2665.png differ diff --git a/fonts/MortalFont40/2666.png b/fonts/MortalFont40/2666.png new file mode 100644 index 000000000..b5b34561e Binary files /dev/null and b/fonts/MortalFont40/2666.png differ diff --git a/fonts/MortalFont40/2667.png b/fonts/MortalFont40/2667.png new file mode 100644 index 000000000..0c333d61f Binary files /dev/null and b/fonts/MortalFont40/2667.png differ diff --git a/fonts/MortalFont40/2668.png b/fonts/MortalFont40/2668.png new file mode 100644 index 000000000..bdbc757da Binary files /dev/null and b/fonts/MortalFont40/2668.png differ diff --git a/fonts/MortalFont40/2669.png b/fonts/MortalFont40/2669.png new file mode 100644 index 000000000..e99121c5f Binary files /dev/null and b/fonts/MortalFont40/2669.png differ diff --git a/fonts/MortalFont40/266A.png b/fonts/MortalFont40/266A.png new file mode 100644 index 000000000..9a1b6504a Binary files /dev/null and b/fonts/MortalFont40/266A.png differ diff --git a/fonts/MortalFont40/266B.png b/fonts/MortalFont40/266B.png new file mode 100644 index 000000000..272460c98 Binary files /dev/null and b/fonts/MortalFont40/266B.png differ diff --git a/fonts/MortalFont40/266C.png b/fonts/MortalFont40/266C.png new file mode 100644 index 000000000..3362d987e Binary files /dev/null and b/fonts/MortalFont40/266C.png differ diff --git a/fonts/MortalFont40/266D.png b/fonts/MortalFont40/266D.png new file mode 100644 index 000000000..f6e83f522 Binary files /dev/null and b/fonts/MortalFont40/266D.png differ diff --git a/fonts/MortalFont40/266E.png b/fonts/MortalFont40/266E.png new file mode 100644 index 000000000..e95999351 Binary files /dev/null and b/fonts/MortalFont40/266E.png differ diff --git a/fonts/MortalFont40/266F.png b/fonts/MortalFont40/266F.png new file mode 100644 index 000000000..60e380f33 Binary files /dev/null and b/fonts/MortalFont40/266F.png differ diff --git a/fonts/MortalFont40/2713.png b/fonts/MortalFont40/2713.png new file mode 100644 index 000000000..1014ad1e1 Binary files /dev/null and b/fonts/MortalFont40/2713.png differ diff --git a/fonts/MortalFont40/2756.png b/fonts/MortalFont40/2756.png new file mode 100644 index 000000000..4c551da42 Binary files /dev/null and b/fonts/MortalFont40/2756.png differ diff --git a/fonts/MortalFont40/2776.png b/fonts/MortalFont40/2776.png new file mode 100644 index 000000000..9d728cbf5 Binary files /dev/null and b/fonts/MortalFont40/2776.png differ diff --git a/fonts/MortalFont40/2777.png b/fonts/MortalFont40/2777.png new file mode 100644 index 000000000..52f3d58b4 Binary files /dev/null and b/fonts/MortalFont40/2777.png differ diff --git a/fonts/MortalFont40/2778.png b/fonts/MortalFont40/2778.png new file mode 100644 index 000000000..42b7fa4c8 Binary files /dev/null and b/fonts/MortalFont40/2778.png differ diff --git a/fonts/MortalFont40/2779.png b/fonts/MortalFont40/2779.png new file mode 100644 index 000000000..f065393d2 Binary files /dev/null and b/fonts/MortalFont40/2779.png differ diff --git a/fonts/MortalFont40/277A.png b/fonts/MortalFont40/277A.png new file mode 100644 index 000000000..bb9c5f58e Binary files /dev/null and b/fonts/MortalFont40/277A.png differ diff --git a/fonts/MortalFont40/277B.png b/fonts/MortalFont40/277B.png new file mode 100644 index 000000000..e72495177 Binary files /dev/null and b/fonts/MortalFont40/277B.png differ diff --git a/fonts/MortalFont40/277C.png b/fonts/MortalFont40/277C.png new file mode 100644 index 000000000..bafc25652 Binary files /dev/null and b/fonts/MortalFont40/277C.png differ diff --git a/fonts/MortalFont40/277D.png b/fonts/MortalFont40/277D.png new file mode 100644 index 000000000..e8abf71cb Binary files /dev/null and b/fonts/MortalFont40/277D.png differ diff --git a/fonts/MortalFont40/277E.png b/fonts/MortalFont40/277E.png new file mode 100644 index 000000000..fb5b215dc Binary files /dev/null and b/fonts/MortalFont40/277E.png differ diff --git a/fonts/MortalFont40/277F.png b/fonts/MortalFont40/277F.png new file mode 100644 index 000000000..4b26b7232 Binary files /dev/null and b/fonts/MortalFont40/277F.png differ diff --git a/fonts/MortalFont40/2934.png b/fonts/MortalFont40/2934.png new file mode 100644 index 000000000..2f0291fe2 Binary files /dev/null and b/fonts/MortalFont40/2934.png differ diff --git a/fonts/MortalFont40/2935.png b/fonts/MortalFont40/2935.png new file mode 100644 index 000000000..e526a8ed0 Binary files /dev/null and b/fonts/MortalFont40/2935.png differ diff --git a/fonts/MortalFont40/29BF.png b/fonts/MortalFont40/29BF.png new file mode 100644 index 000000000..e6021b3c6 Binary files /dev/null and b/fonts/MortalFont40/29BF.png differ diff --git a/fonts/MortalFont40/29FA.png b/fonts/MortalFont40/29FA.png new file mode 100644 index 000000000..091967c2e Binary files /dev/null and b/fonts/MortalFont40/29FA.png differ diff --git a/fonts/MortalFont40/29FB.png b/fonts/MortalFont40/29FB.png new file mode 100644 index 000000000..ee5337cc2 Binary files /dev/null and b/fonts/MortalFont40/29FB.png differ diff --git a/fonts/MortalFont40/FF01.png b/fonts/MortalFont40/FF01.png new file mode 100644 index 000000000..869203d39 Binary files /dev/null and b/fonts/MortalFont40/FF01.png differ diff --git a/fonts/MortalFont40/FF02.png b/fonts/MortalFont40/FF02.png new file mode 100644 index 000000000..f71e489c0 Binary files /dev/null and b/fonts/MortalFont40/FF02.png differ diff --git a/fonts/MortalFont40/FF03.png b/fonts/MortalFont40/FF03.png new file mode 100644 index 000000000..dc1fa90ac Binary files /dev/null and b/fonts/MortalFont40/FF03.png differ diff --git a/fonts/MortalFont40/FF04.png b/fonts/MortalFont40/FF04.png new file mode 100644 index 000000000..7635cec43 Binary files /dev/null and b/fonts/MortalFont40/FF04.png differ diff --git a/fonts/MortalFont40/FF05.png b/fonts/MortalFont40/FF05.png new file mode 100644 index 000000000..b12c9f491 Binary files /dev/null and b/fonts/MortalFont40/FF05.png differ diff --git a/fonts/MortalFont40/FF06.png b/fonts/MortalFont40/FF06.png new file mode 100644 index 000000000..b3a42eb08 Binary files /dev/null and b/fonts/MortalFont40/FF06.png differ diff --git a/fonts/MortalFont40/FF07.png b/fonts/MortalFont40/FF07.png new file mode 100644 index 000000000..88b6e8b81 Binary files /dev/null and b/fonts/MortalFont40/FF07.png differ diff --git a/fonts/MortalFont40/FF08.png b/fonts/MortalFont40/FF08.png new file mode 100644 index 000000000..2ba642ae1 Binary files /dev/null and b/fonts/MortalFont40/FF08.png differ diff --git a/fonts/MortalFont40/FF09.png b/fonts/MortalFont40/FF09.png new file mode 100644 index 000000000..dc5a95bac Binary files /dev/null and b/fonts/MortalFont40/FF09.png differ diff --git a/fonts/MortalFont40/FF0A.png b/fonts/MortalFont40/FF0A.png new file mode 100644 index 000000000..2d0615428 Binary files /dev/null and b/fonts/MortalFont40/FF0A.png differ diff --git a/fonts/MortalFont40/FF0B.png b/fonts/MortalFont40/FF0B.png new file mode 100644 index 000000000..41827a3d9 Binary files /dev/null and b/fonts/MortalFont40/FF0B.png differ diff --git a/fonts/MortalFont40/FF0C.png b/fonts/MortalFont40/FF0C.png new file mode 100644 index 000000000..573b215b5 Binary files /dev/null and b/fonts/MortalFont40/FF0C.png differ diff --git a/fonts/MortalFont40/FF0D.png b/fonts/MortalFont40/FF0D.png new file mode 100644 index 000000000..050d5e60c Binary files /dev/null and b/fonts/MortalFont40/FF0D.png differ diff --git a/fonts/MortalFont40/FF0E.png b/fonts/MortalFont40/FF0E.png new file mode 100644 index 000000000..41ac95597 Binary files /dev/null and b/fonts/MortalFont40/FF0E.png differ diff --git a/fonts/MortalFont40/FF0F.png b/fonts/MortalFont40/FF0F.png new file mode 100644 index 000000000..ed7e3cc4e Binary files /dev/null and b/fonts/MortalFont40/FF0F.png differ diff --git a/fonts/MortalFont40/FF10.png b/fonts/MortalFont40/FF10.png new file mode 100644 index 000000000..cd022298a Binary files /dev/null and b/fonts/MortalFont40/FF10.png differ diff --git a/fonts/MortalFont40/FF11.png b/fonts/MortalFont40/FF11.png new file mode 100644 index 000000000..0f3b96fa6 Binary files /dev/null and b/fonts/MortalFont40/FF11.png differ diff --git a/fonts/MortalFont40/FF12.png b/fonts/MortalFont40/FF12.png new file mode 100644 index 000000000..5d96f1735 Binary files /dev/null and b/fonts/MortalFont40/FF12.png differ diff --git a/fonts/MortalFont40/FF13.png b/fonts/MortalFont40/FF13.png new file mode 100644 index 000000000..409c5ae32 Binary files /dev/null and b/fonts/MortalFont40/FF13.png differ diff --git a/fonts/MortalFont40/FF14.png b/fonts/MortalFont40/FF14.png new file mode 100644 index 000000000..b69c0e146 Binary files /dev/null and b/fonts/MortalFont40/FF14.png differ diff --git a/fonts/MortalFont40/FF15.png b/fonts/MortalFont40/FF15.png new file mode 100644 index 000000000..d5009e087 Binary files /dev/null and b/fonts/MortalFont40/FF15.png differ diff --git a/fonts/MortalFont40/FF16.png b/fonts/MortalFont40/FF16.png new file mode 100644 index 000000000..dd4af8e9b Binary files /dev/null and b/fonts/MortalFont40/FF16.png differ diff --git a/fonts/MortalFont40/FF17.png b/fonts/MortalFont40/FF17.png new file mode 100644 index 000000000..6137ca48b Binary files /dev/null and b/fonts/MortalFont40/FF17.png differ diff --git a/fonts/MortalFont40/FF18.png b/fonts/MortalFont40/FF18.png new file mode 100644 index 000000000..c5d712c6a Binary files /dev/null and b/fonts/MortalFont40/FF18.png differ diff --git a/fonts/MortalFont40/FF19.png b/fonts/MortalFont40/FF19.png new file mode 100644 index 000000000..0abd56a5f Binary files /dev/null and b/fonts/MortalFont40/FF19.png differ diff --git a/fonts/MortalFont40/FF1A.png b/fonts/MortalFont40/FF1A.png new file mode 100644 index 000000000..33ab4f57b Binary files /dev/null and b/fonts/MortalFont40/FF1A.png differ diff --git a/fonts/MortalFont40/FF1B.png b/fonts/MortalFont40/FF1B.png new file mode 100644 index 000000000..1f14c2f59 Binary files /dev/null and b/fonts/MortalFont40/FF1B.png differ diff --git a/fonts/MortalFont40/FF1C.png b/fonts/MortalFont40/FF1C.png new file mode 100644 index 000000000..ae3d353df Binary files /dev/null and b/fonts/MortalFont40/FF1C.png differ diff --git a/fonts/MortalFont40/FF1D.png b/fonts/MortalFont40/FF1D.png new file mode 100644 index 000000000..d27463572 Binary files /dev/null and b/fonts/MortalFont40/FF1D.png differ diff --git a/fonts/MortalFont40/FF1E.png b/fonts/MortalFont40/FF1E.png new file mode 100644 index 000000000..82cb19b44 Binary files /dev/null and b/fonts/MortalFont40/FF1E.png differ diff --git a/fonts/MortalFont40/FF1F.png b/fonts/MortalFont40/FF1F.png new file mode 100644 index 000000000..92323d086 Binary files /dev/null and b/fonts/MortalFont40/FF1F.png differ diff --git a/fonts/MortalFont40/FF20.png b/fonts/MortalFont40/FF20.png new file mode 100644 index 000000000..3f0944838 Binary files /dev/null and b/fonts/MortalFont40/FF20.png differ diff --git a/fonts/MortalFont40/FF21.png b/fonts/MortalFont40/FF21.png new file mode 100644 index 000000000..2a177e8cd Binary files /dev/null and b/fonts/MortalFont40/FF21.png differ diff --git a/fonts/MortalFont40/FF22.png b/fonts/MortalFont40/FF22.png new file mode 100644 index 000000000..2d78b5c32 Binary files /dev/null and b/fonts/MortalFont40/FF22.png differ diff --git a/fonts/MortalFont40/FF23.png b/fonts/MortalFont40/FF23.png new file mode 100644 index 000000000..05e7681db Binary files /dev/null and b/fonts/MortalFont40/FF23.png differ diff --git a/fonts/MortalFont40/FF24.png b/fonts/MortalFont40/FF24.png new file mode 100644 index 000000000..5f3e4a1b4 Binary files /dev/null and b/fonts/MortalFont40/FF24.png differ diff --git a/fonts/MortalFont40/FF25.png b/fonts/MortalFont40/FF25.png new file mode 100644 index 000000000..6a660763b Binary files /dev/null and b/fonts/MortalFont40/FF25.png differ diff --git a/fonts/MortalFont40/FF26.png b/fonts/MortalFont40/FF26.png new file mode 100644 index 000000000..4d7e327bb Binary files /dev/null and b/fonts/MortalFont40/FF26.png differ diff --git a/fonts/MortalFont40/FF27.png b/fonts/MortalFont40/FF27.png new file mode 100644 index 000000000..494942277 Binary files /dev/null and b/fonts/MortalFont40/FF27.png differ diff --git a/fonts/MortalFont40/FF28.png b/fonts/MortalFont40/FF28.png new file mode 100644 index 000000000..9d5dd43cd Binary files /dev/null and b/fonts/MortalFont40/FF28.png differ diff --git a/fonts/MortalFont40/FF29.png b/fonts/MortalFont40/FF29.png new file mode 100644 index 000000000..e96b7bfe1 Binary files /dev/null and b/fonts/MortalFont40/FF29.png differ diff --git a/fonts/MortalFont40/FF2A.png b/fonts/MortalFont40/FF2A.png new file mode 100644 index 000000000..06893a750 Binary files /dev/null and b/fonts/MortalFont40/FF2A.png differ diff --git a/fonts/MortalFont40/FF2B.png b/fonts/MortalFont40/FF2B.png new file mode 100644 index 000000000..48a4a2bcd Binary files /dev/null and b/fonts/MortalFont40/FF2B.png differ diff --git a/fonts/MortalFont40/FF2C.png b/fonts/MortalFont40/FF2C.png new file mode 100644 index 000000000..a48ffaad3 Binary files /dev/null and b/fonts/MortalFont40/FF2C.png differ diff --git a/fonts/MortalFont40/FF2D.png b/fonts/MortalFont40/FF2D.png new file mode 100644 index 000000000..d47fff1c9 Binary files /dev/null and b/fonts/MortalFont40/FF2D.png differ diff --git a/fonts/MortalFont40/FF2E.png b/fonts/MortalFont40/FF2E.png new file mode 100644 index 000000000..04baddb1e Binary files /dev/null and b/fonts/MortalFont40/FF2E.png differ diff --git a/fonts/MortalFont40/FF2F.png b/fonts/MortalFont40/FF2F.png new file mode 100644 index 000000000..ffb8e692c Binary files /dev/null and b/fonts/MortalFont40/FF2F.png differ diff --git a/fonts/MortalFont40/FF30.png b/fonts/MortalFont40/FF30.png new file mode 100644 index 000000000..e1430633a Binary files /dev/null and b/fonts/MortalFont40/FF30.png differ diff --git a/fonts/MortalFont40/FF31.png b/fonts/MortalFont40/FF31.png new file mode 100644 index 000000000..d1a9beae9 Binary files /dev/null and b/fonts/MortalFont40/FF31.png differ diff --git a/fonts/MortalFont40/FF32.png b/fonts/MortalFont40/FF32.png new file mode 100644 index 000000000..0ac0e5e4a Binary files /dev/null and b/fonts/MortalFont40/FF32.png differ diff --git a/fonts/MortalFont40/FF33.png b/fonts/MortalFont40/FF33.png new file mode 100644 index 000000000..bc8138a29 Binary files /dev/null and b/fonts/MortalFont40/FF33.png differ diff --git a/fonts/MortalFont40/FF34.png b/fonts/MortalFont40/FF34.png new file mode 100644 index 000000000..2cd008dd3 Binary files /dev/null and b/fonts/MortalFont40/FF34.png differ diff --git a/fonts/MortalFont40/FF35.png b/fonts/MortalFont40/FF35.png new file mode 100644 index 000000000..de9d80804 Binary files /dev/null and b/fonts/MortalFont40/FF35.png differ diff --git a/fonts/MortalFont40/FF36.png b/fonts/MortalFont40/FF36.png new file mode 100644 index 000000000..b5d80af59 Binary files /dev/null and b/fonts/MortalFont40/FF36.png differ diff --git a/fonts/MortalFont40/FF37.png b/fonts/MortalFont40/FF37.png new file mode 100644 index 000000000..1a12fcb23 Binary files /dev/null and b/fonts/MortalFont40/FF37.png differ diff --git a/fonts/MortalFont40/FF38.png b/fonts/MortalFont40/FF38.png new file mode 100644 index 000000000..645c45004 Binary files /dev/null and b/fonts/MortalFont40/FF38.png differ diff --git a/fonts/MortalFont40/FF39.png b/fonts/MortalFont40/FF39.png new file mode 100644 index 000000000..3f35760b1 Binary files /dev/null and b/fonts/MortalFont40/FF39.png differ diff --git a/fonts/MortalFont40/FF3A.png b/fonts/MortalFont40/FF3A.png new file mode 100644 index 000000000..40a6e0da6 Binary files /dev/null and b/fonts/MortalFont40/FF3A.png differ diff --git a/fonts/MortalFont40/FF3B.png b/fonts/MortalFont40/FF3B.png new file mode 100644 index 000000000..aa5f905a9 Binary files /dev/null and b/fonts/MortalFont40/FF3B.png differ diff --git a/fonts/MortalFont40/FF3C.png b/fonts/MortalFont40/FF3C.png new file mode 100644 index 000000000..73ec00f1d Binary files /dev/null and b/fonts/MortalFont40/FF3C.png differ diff --git a/fonts/MortalFont40/FF3D.png b/fonts/MortalFont40/FF3D.png new file mode 100644 index 000000000..8f3df7c99 Binary files /dev/null and b/fonts/MortalFont40/FF3D.png differ diff --git a/fonts/MortalFont40/FF3E.png b/fonts/MortalFont40/FF3E.png new file mode 100644 index 000000000..381c84d83 Binary files /dev/null and b/fonts/MortalFont40/FF3E.png differ diff --git a/fonts/MortalFont40/FF3F.png b/fonts/MortalFont40/FF3F.png new file mode 100644 index 000000000..f32e676e9 Binary files /dev/null and b/fonts/MortalFont40/FF3F.png differ diff --git a/fonts/MortalFont40/FF40.png b/fonts/MortalFont40/FF40.png new file mode 100644 index 000000000..dd3615012 Binary files /dev/null and b/fonts/MortalFont40/FF40.png differ diff --git a/fonts/MortalFont40/FF41.png b/fonts/MortalFont40/FF41.png new file mode 100644 index 000000000..615204d0d Binary files /dev/null and b/fonts/MortalFont40/FF41.png differ diff --git a/fonts/MortalFont40/FF42.png b/fonts/MortalFont40/FF42.png new file mode 100644 index 000000000..bc9a3a4d7 Binary files /dev/null and b/fonts/MortalFont40/FF42.png differ diff --git a/fonts/MortalFont40/FF43.png b/fonts/MortalFont40/FF43.png new file mode 100644 index 000000000..a97b45f38 Binary files /dev/null and b/fonts/MortalFont40/FF43.png differ diff --git a/fonts/MortalFont40/FF44.png b/fonts/MortalFont40/FF44.png new file mode 100644 index 000000000..1c3e85ccf Binary files /dev/null and b/fonts/MortalFont40/FF44.png differ diff --git a/fonts/MortalFont40/FF45.png b/fonts/MortalFont40/FF45.png new file mode 100644 index 000000000..3d898eb71 Binary files /dev/null and b/fonts/MortalFont40/FF45.png differ diff --git a/fonts/MortalFont40/FF46.png b/fonts/MortalFont40/FF46.png new file mode 100644 index 000000000..4634a8a54 Binary files /dev/null and b/fonts/MortalFont40/FF46.png differ diff --git a/fonts/MortalFont40/FF47.png b/fonts/MortalFont40/FF47.png new file mode 100644 index 000000000..c6f02d016 Binary files /dev/null and b/fonts/MortalFont40/FF47.png differ diff --git a/fonts/MortalFont40/FF48.png b/fonts/MortalFont40/FF48.png new file mode 100644 index 000000000..e3f687b91 Binary files /dev/null and b/fonts/MortalFont40/FF48.png differ diff --git a/fonts/MortalFont40/FF49.png b/fonts/MortalFont40/FF49.png new file mode 100644 index 000000000..8c11dc792 Binary files /dev/null and b/fonts/MortalFont40/FF49.png differ diff --git a/fonts/MortalFont40/FF4A.png b/fonts/MortalFont40/FF4A.png new file mode 100644 index 000000000..11fdd8984 Binary files /dev/null and b/fonts/MortalFont40/FF4A.png differ diff --git a/fonts/MortalFont40/FF4B.png b/fonts/MortalFont40/FF4B.png new file mode 100644 index 000000000..101878376 Binary files /dev/null and b/fonts/MortalFont40/FF4B.png differ diff --git a/fonts/MortalFont40/FF4C.png b/fonts/MortalFont40/FF4C.png new file mode 100644 index 000000000..a0f10fc0a Binary files /dev/null and b/fonts/MortalFont40/FF4C.png differ diff --git a/fonts/MortalFont40/FF4D.png b/fonts/MortalFont40/FF4D.png new file mode 100644 index 000000000..d11f8d484 Binary files /dev/null and b/fonts/MortalFont40/FF4D.png differ diff --git a/fonts/MortalFont40/FF4E.png b/fonts/MortalFont40/FF4E.png new file mode 100644 index 000000000..0e4f5df1e Binary files /dev/null and b/fonts/MortalFont40/FF4E.png differ diff --git a/fonts/MortalFont40/FF4F.png b/fonts/MortalFont40/FF4F.png new file mode 100644 index 000000000..f1b9a8fae Binary files /dev/null and b/fonts/MortalFont40/FF4F.png differ diff --git a/fonts/MortalFont40/FF50.png b/fonts/MortalFont40/FF50.png new file mode 100644 index 000000000..48a7f3730 Binary files /dev/null and b/fonts/MortalFont40/FF50.png differ diff --git a/fonts/MortalFont40/FF51.png b/fonts/MortalFont40/FF51.png new file mode 100644 index 000000000..480fda108 Binary files /dev/null and b/fonts/MortalFont40/FF51.png differ diff --git a/fonts/MortalFont40/FF52.png b/fonts/MortalFont40/FF52.png new file mode 100644 index 000000000..d567c5c01 Binary files /dev/null and b/fonts/MortalFont40/FF52.png differ diff --git a/fonts/MortalFont40/FF53.png b/fonts/MortalFont40/FF53.png new file mode 100644 index 000000000..11de2e719 Binary files /dev/null and b/fonts/MortalFont40/FF53.png differ diff --git a/fonts/MortalFont40/FF54.png b/fonts/MortalFont40/FF54.png new file mode 100644 index 000000000..9428a8b8a Binary files /dev/null and b/fonts/MortalFont40/FF54.png differ diff --git a/fonts/MortalFont40/FF55.png b/fonts/MortalFont40/FF55.png new file mode 100644 index 000000000..a24255056 Binary files /dev/null and b/fonts/MortalFont40/FF55.png differ diff --git a/fonts/MortalFont40/FF56.png b/fonts/MortalFont40/FF56.png new file mode 100644 index 000000000..208388d91 Binary files /dev/null and b/fonts/MortalFont40/FF56.png differ diff --git a/fonts/MortalFont40/FF57.png b/fonts/MortalFont40/FF57.png new file mode 100644 index 000000000..e8ff32650 Binary files /dev/null and b/fonts/MortalFont40/FF57.png differ diff --git a/fonts/MortalFont40/FF58.png b/fonts/MortalFont40/FF58.png new file mode 100644 index 000000000..c4d706540 Binary files /dev/null and b/fonts/MortalFont40/FF58.png differ diff --git a/fonts/MortalFont40/FF59.png b/fonts/MortalFont40/FF59.png new file mode 100644 index 000000000..2e25e8bcf Binary files /dev/null and b/fonts/MortalFont40/FF59.png differ diff --git a/fonts/MortalFont40/FF5A.png b/fonts/MortalFont40/FF5A.png new file mode 100644 index 000000000..f7fdbddc0 Binary files /dev/null and b/fonts/MortalFont40/FF5A.png differ diff --git a/fonts/MortalFont40/FF5B.png b/fonts/MortalFont40/FF5B.png new file mode 100644 index 000000000..f33ad3929 Binary files /dev/null and b/fonts/MortalFont40/FF5B.png differ diff --git a/fonts/MortalFont40/FF5C.png b/fonts/MortalFont40/FF5C.png new file mode 100644 index 000000000..5dddb1fd2 Binary files /dev/null and b/fonts/MortalFont40/FF5C.png differ diff --git a/fonts/MortalFont40/FF5D.png b/fonts/MortalFont40/FF5D.png new file mode 100644 index 000000000..463fe4fee Binary files /dev/null and b/fonts/MortalFont40/FF5D.png differ diff --git a/fonts/MortalFont40/FF5E.png b/fonts/MortalFont40/FF5E.png new file mode 100644 index 000000000..c48460945 Binary files /dev/null and b/fonts/MortalFont40/FF5E.png differ diff --git a/fonts/MortalFont40/FFE0.png b/fonts/MortalFont40/FFE0.png new file mode 100644 index 000000000..febcab5ec Binary files /dev/null and b/fonts/MortalFont40/FFE0.png differ diff --git a/fonts/MortalFont40/FFE1.png b/fonts/MortalFont40/FFE1.png new file mode 100644 index 000000000..10a6edb93 Binary files /dev/null and b/fonts/MortalFont40/FFE1.png differ diff --git a/fonts/MortalFont40/FFE2.png b/fonts/MortalFont40/FFE2.png new file mode 100644 index 000000000..fc2098df8 Binary files /dev/null and b/fonts/MortalFont40/FFE2.png differ diff --git a/fonts/MortalFont40/FFE3.png b/fonts/MortalFont40/FFE3.png new file mode 100644 index 000000000..e037cbf70 Binary files /dev/null and b/fonts/MortalFont40/FFE3.png differ diff --git a/fonts/MortalFont40/FFE4.png b/fonts/MortalFont40/FFE4.png new file mode 100644 index 000000000..6e1d94808 Binary files /dev/null and b/fonts/MortalFont40/FFE4.png differ diff --git a/fonts/MortalFont40/FFE5.png b/fonts/MortalFont40/FFE5.png new file mode 100644 index 000000000..1f44922f2 Binary files /dev/null and b/fonts/MortalFont40/FFE5.png differ diff --git a/fonts/MortalFont40/LICENSE b/fonts/MortalFont40/LICENSE new file mode 100644 index 000000000..272d5f63f --- /dev/null +++ b/fonts/MortalFont40/LICENSE @@ -0,0 +1,117 @@ +-------------------------------------------------- +IPA Font License Agreement v1.0 +-------------------------------------------------- + +IPAフォントライセンスv1.0 + +許諾者は、この使用許諾(以下「本契約」といいます。)に定める条件の下で、許諾プログラム(1条に定義するところによります。)を提供します。受領者(1条に定義するところによります。)が、許諾プログラムを使用し、複製し、または頒布する行為、その他、本契約に定める権利の利用を行った場合、受領者は本契約に同意したものと見なします。 + + +第1条 用語の定義 + +本契約において、次の各号に掲げる用語は、当該各号に定めるところによります。 + +1.「デジタル・フォント・プログラム」とは、フォントを含み、レンダリングしまたは表示するために用いられるコンピュータ・プログラムをいいます。 +2.「許諾プログラム」とは、許諾者が本契約の下で許諾するデジタル・フォント・プログラムをいいます。 +3.「派生プログラム」とは、許諾プログラムの一部または全部を、改変し、加除修正等し、入れ替え、その他翻案したデジタル・フォント・プログラムをいい、許諾プログラムの一部もしくは全部から文字情報を取り出し、またはデジタル・ドキュメント・ファイルからエンベッドされたフォントを取り出し、取り出された文字情報をそのまま、または改変をなして新たなデジタル・フォント・プログラムとして製作されたものを含みます。 +4.「デジタル・コンテンツ」とは、デジタル・データ形式によってエンド・ユーザに提供される制作物のことをいい、動画・静止画等の映像コンテンツおよびテレビ番組等の放送コンテンツ、ならびに文字テキスト、画像、図形等を含んで構成された制作物を含みます。 +5.「デジタル・ドキュメント・ファイル」とは、PDFファイルその他、各種ソフトウェア・プログラムによって製作されたデジタル・コンテンツであって、その中にフォントを表示するために許諾プログラムの全部または一部が埋め込まれた(エンベッドされた)ものをいいます。フォントが「エンベッドされた」とは、当該フォントが埋め込まれた特定の「デジタル・ドキュメント・ファイル」においてのみ表示されるために使用されている状態を指し、その特定の「デジタル・ドキュメント・ファイル」以外でフォントを表示するために使用できるデジタル・フォント・プログラムに含まれている場合と区別されます。 +6.「コンピュータ」とは、本契約においては、サーバを含みます。 +7.「複製その他の利用」とは、複製、譲渡、頒布、貸与、公衆送信、上映、展示、翻案その他の利用をいいます。 +8.「受領者」とは、許諾プログラムを本契約の下で受領した人をいい、受領者から許諾プログラムを受領した人を含みます。 + +第2条 使用許諾の付与 + +許諾者は受領者に対し、本契約の条項に従い、すべての国で、許諾プログラムを使用することを許諾します。ただし、許諾プログラムに存在する一切の権利はすべて許諾者が保有しています。本契約は、本契約で明示的に定められている場合を除き、いかなる意味においても、許諾者が保有する許諾プログラムに関する一切の権利および、いかなる商標、商号、もしくはサービス・マークに関する権利をも受領者に移転するものではありません。 + +1.受領者は本契約に定める条件に従い、許諾プログラムを任意の数のコンピュータにインストールし、当該コンピュータで使用することができます。 +2.受領者はコンピュータにインストールされた許諾プログラムをそのまま、または改変を行ったうえで、印刷物およびデジタル・コンテンツにおいて、文字テキスト表現等として使用することができます。 +3.受領者は前項の定めに従い作成した印刷物およびデジタル・コンテンツにつき、その商用・非商用の別、および放送、通信、各種記録メディアなどの媒体の形式を問わず、複製その他の利用をすることができます。 +4.受領者がデジタル・ドキュメント・ファイルからエンベッドされたフォントを取り出して派生プログラムを作成した場合には、かかる派生プログラムは本契約に定める条件に従う必要があります。 +5.許諾プログラムのエンベッドされたフォントがデジタル・ドキュメント・ファイル内のデジタル・コンテンツをレンダリングするためにのみ使用される場合において、受領者が当該デジタル・ドキュメント・ファイルを複製その他の利用をする場合には、受領者はかかる行為に関しては本契約の下ではいかなる義務をも負いません。 +6.受領者は、3条2項の定めに従い、商用・非商用を問わず、許諾プログラムをそのままの状態で改変することなく複製して第三者への譲渡し、公衆送信し、その他の方法で再配布することができます(以下、「再配布」といいます。)。 +7.受領者は、上記の許諾プログラムについて定められた条件と同様の条件に従って、派生プログラムを作成し、使用し、複製し、再配布することができます。ただし、受領者が派生プログラムを再配布する場合には、3条1項の定めに従うものとします。 + +第3条 制限 + +前条により付与された使用許諾は、以下の制限に服します。 + +1.派生プログラムが前条4項及び7項に基づき再配布される場合には、以下の全ての条件を満たさなければなりません。 + (1)派生プログラムを再配布する際には、下記もまた、当該派生プログラムと一緒に再配布され、オンラインで提供され、または、郵送費・媒体及び取扱手数料の合計を超えない実費と引き換えに媒体を郵送する方法により提供されなければなりません。 +  (a)派生プログラムの写し; および +  (b)派生プログラムを作成する過程でフォント開発プログラムによって作成された追加のファイルであって派生プログラムをさらに加工するにあたって利用できるファイルが存在すれば、当該ファイル + (2)派生プログラムの受領者が、派生プログラムを、このライセンスの下で最初にリリースされた許諾プログラム(以下、「オリジナル・プログラム」といいます。)に置き換えることができる方法を再配布するものとします。かかる方法は、オリジナル・ファイルからの差分ファイルの提供、または、派生プログラムをオリジナル・プログラムに置き換える方法を示す指示の提供などが考えられます。 + (3)派生プログラムを、本契約書に定められた条件の下でライセンスしなければなりません。 + (4)派生プログラムのプログラム名、フォント名またはファイル名として、許諾プログラムが用いているのと同一の名称、またはこれを含む名称を使用してはなりません。 + (5)本項の要件を満たすためにオンラインで提供し、または媒体を郵送する方法で提供されるものは、その提供を希望するいかなる者によっても提供が可能です。 +2.受領者が前条6項に基づき許諾プログラムを再配布する場合には、以下の全ての条件を満たさなければなりません。 + (1)許諾プログラムの名称を変更してはなりません。 + (2)許諾プログラムに加工その他の改変を加えてはなりません。 + (3)本契約の写しを許諾プログラムに添付しなければなりません。 +3.許諾プログラムは、現状有姿で提供されており、許諾プログラムまたは派生プログラムについて、許諾者は一切の明示または黙示の保証(権利の所在、非侵害、商品性、特定目的への適合性を含むがこれに限られません)を行いません。いかなる場合にも、その原因を問わず、契約上の責任か厳格責任か過失その他の不法行為責任かにかかわらず、また事前に通知されたか否かにかかわらず、許諾者は、許諾プログラムまたは派生プログラムのインストール、使用、複製その他の利用または本契約上の権利の行使によって生じた一切の損害(直接・間接・付随的・特別・拡大・懲罰的または結果的損害)(商品またはサービスの代替品の調達、システム障害から生じた損害、現存するデータまたはプログラムの紛失または破損、逸失利益を含むがこれに限られません)について責任を負いません。 +4.許諾プログラムまたは派生プログラムのインストール、使用、複製その他の利用に関して、許諾者は技術的な質問や問い合わせ等に対する対応その他、いかなるユーザ・サポートをも行う義務を負いません。 + +第4条 契約の終了 + +1.本契約の有効期間は、受領者が許諾プログラムを受領した時に開始し、受領者が許諾プログラムを何らかの方法で保持する限り続くものとします。 +2.前項の定めにかかわらず、受領者が本契約に定める各条項に違反したときは、本契約は、何らの催告を要することなく、自動的に終了し、当該受領者はそれ以後、許諾プログラムおよび派生プログラムを一切使用しまたは複製その他の利用をすることができないものとします。ただし、かかる契約の終了は、当該違反した受領者から許諾プログラムまたは派生プログラムの配布を受けた受領者の権利に影響を及ぼすものではありません。 + +第5条 準拠法 + +1.IPAは、本契約の変更バージョンまたは新しいバージョンを公表することができます。その場合には、受領者は、許諾プログラムまたは派生プログラムの使用、複製その他の利用または再配布にあたり、本契約または変更後の契約のいずれかを選択することができます。その他、上記に記載されていない条項に関しては日本の著作権法および関連法規に従うものとします。 +2.本契約は、日本法に基づき解釈されます。 + + +---------- + +IPA Font License Agreement v1.0 + +The Licensor provides the Licensed Program (as defined in Article 1 below) under the terms of this license agreement (“Agreement”). Any use, reproduction or distribution of the Licensed Program, or any exercise of rights under this Agreement by a Recipient (as defined in Article 1 below) constitutes the Recipient's acceptance of this Agreement. + +Article 1 (Definitions) +1.“Digital Font Program” shall mean a computer program containing, or used to render or display fonts. +2.“Licensed Program” shall mean a Digital Font Program licensed by the Licensor under this Agreement. +3.“Derived Program” shall mean a Digital Font Program created as a result of a modification, addition, deletion, replacement or any other adaptation to or of a part or all of the Licensed Program, and includes a case where a Digital Font Program newly created by retrieving font information from a part or all of the Licensed Program or Embedded Fonts from a Digital Document File with or without modification of the retrieved font information. +4.“Digital Content” shall mean products provided to end users in the form of digital data, including video content, motion and/or still pictures, TV programs or other broadcasting content and products consisting of character text, pictures, photographic images, graphic symbols and/or the like. +5.“Digital Document File” shall mean a PDF file or other Digital Content created by various software programs in which a part or all of the Licensed Program becomes embedded or contained in the file for the display of the font (“Embedded Fonts”). Embedded Fonts are used only in the display of characters in the particular Digital Document File within which they are embedded, and shall be distinguished from those in any Digital Font Program, which may be used for display of characters outside that particular Digital Document File. +6.“Computer” shall include a server in this Agreement. +7.“Reproduction and Other Exploitation” shall mean reproduction, transfer, distribution, lease, public transmission, presentation, exhibition, adaptation and any other exploitation. +8.“Recipient” shall mean anyone who receives the Licensed Program under this Agreement, including one that receives the Licensed Program from a Recipient. + +Article 2 (Grant of License) +The Licensor grants to the Recipient a license to use the Licensed Program in any and all countries in accordance with each of the provisions set forth in this Agreement. However, any and all rights underlying in the Licensed Program shall be held by the Licensor. In no sense is this Agreement intended to transfer any right relating to the Licensed Program held by the Licensor except as specifically set forth herein or any right relating to any trademark, trade name, or service mark to the Recipient. + +1.The Recipient may install the Licensed Program on any number of Computers and use the same in accordance with the provisions set forth in this Agreement. +2.The Recipient may use the Licensed Program, with or without modification in printed materials or in Digital Content as an expression of character texts or the like. +3.The Recipient may conduct Reproduction and Other Exploitation of the printed materials and Digital Content created in accordance with the preceding Paragraph, for commercial or non-commercial purposes and in any form of media including but not limited to broadcasting, communication and various recording media. +4.If any Recipient extracts Embedded Fonts from a Digital Document File to create a Derived Program, such Derived Program shall be subject to the terms of this agreement. +5.If any Recipient performs Reproduction or Other Exploitation of a Digital Document File in which Embedded Fonts of the Licensed Program are used only for rendering the Digital Content within such Digital Document File then such Recipient shall have no further obligations under this Agreement in relation to such actions. +6.The Recipient may reproduce the Licensed Program as is without modification and transfer such copies, publicly transmit or otherwise redistribute the Licensed Program to a third party for commercial or non-commercial purposes (“Redistribute”), in accordance with the provisions set forth in Article 3 Paragraph 2. +7.The Recipient may create, use, reproduce and/or Redistribute a Derived Program under the terms stated above for the Licensed Program: provided, that the Recipient shall follow the provisions set forth in Article 3 Paragraph 1 when Redistributing the Derived Program. + +Article 3 (Restriction) +The license granted in the preceding Article shall be subject to the following restrictions: + +1.If a Derived Program is Redistributed pursuant to Paragraph 4 and 7 of the preceding Article, the following conditions must be met : + (1)The following must be also Redistributed together with the Derived Program, or be made available online or by means of mailing mechanisms in exchange for a cost which does not exceed the total costs of postage, storage medium and handling fees: +  (a)a copy of the Derived Program; and +  (b)any additional file created by the font developing program in the course of creating the Derived Program that can be used for further modification of the Derived Program, if any. + (2)It is required to also Redistribute means to enable recipients of the Derived Program to replace the Derived Program with the Licensed Program first released under this License (the “Original Program”). Such means may be to provide a difference file from the Original Program, or instructions setting out a method to replace the Derived Program with the Original Program. + (3)The Recipient must license the Derived Program under the terms and conditions of this Agreement. + (4)No one may use or include the name of the Licensed Program as a program name, font name or file name of the Derived Program. + (5)Any material to be made available online or by means of mailing a medium to satisfy the requirements of this paragraph may be provided, verbatim, by any party wishing to do so. +2.If the Recipient Redistributes the Licensed Program pursuant to Paragraph 6 of the preceding Article, the Recipient shall meet all of the following conditions: + (1)The Recipient may not change the name of the Licensed Program. + (2)The Recipient may not alter or otherwise modify the Licensed Program. + (3)The Recipient must attach a copy of this Agreement to the Licensed Program. +3.THIS LICENSED PROGRAM IS PROVIDED BY THE LICENSOR “AS IS” AND ANY EXPRESSED OR IMPLIED WARRANTY AS TO THE LICENSED PROGRAM OR ANY DERIVED PROGRAM, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXTENDED, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO; PROCUREMENT OF SUBSTITUTED GOODS OR SERVICE; DAMAGES ARISING FROM SYSTEM FAILURE; LOSS OR CORRUPTION OF EXISTING DATA OR PROGRAM; LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE INSTALLATION, USE, THE REPRODUCTION OR OTHER EXPLOITATION OF THE LICENSED PROGRAM OR ANY DERIVED PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +4.The Licensor is under no obligation to respond to any technical questions or inquiries, or provide any other user support in connection with the installation, use or the Reproduction and Other Exploitation of the Licensed Program or Derived Programs thereof. + +Article 4 (Termination of Agreement) +1.The term of this Agreement shall begin from the time of receipt of the Licensed Program by the Recipient and shall continue as long as the Recipient retains any such Licensed Program in any way. +2.Notwithstanding the provision set forth in the preceding Paragraph, in the event of the breach of any of the provisions set forth in this Agreement by the Recipient, this Agreement shall automatically terminate without any notice. In the case of such termination, the Recipient may not use or conduct Reproduction and Other Exploitation of the Licensed Program or a Derived Program: provided that such termination shall not affect any rights of any other Recipient receiving the Licensed Program or the Derived Program from such Recipient who breached this Agreement. + +Article 5 (Governing Law) +1.IPA may publish revised and/or new versions of this License. In such an event, the Recipient may select either this Agreement or any subsequent version of the Agreement in using, conducting the Reproduction and Other Exploitation of, or Redistributing the Licensed Program or a Derived Program. Other matters not specified above shall be subject to the Copyright Law of Japan and other related laws and regulations of Japan. +2.This Agreement shall be construed under the laws of Japan. + diff --git a/fonts/MortalFont40/font.inf b/fonts/MortalFont40/font.inf new file mode 100644 index 000000000..c9335bb49 --- /dev/null +++ b/fonts/MortalFont40/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 22 +FontHeight 41 +Kerning -1 diff --git a/fonts/MortalFont80/0021.png b/fonts/MortalFont80/0021.png new file mode 100644 index 000000000..4545130c6 Binary files /dev/null and b/fonts/MortalFont80/0021.png differ diff --git a/fonts/MortalFont80/0022.png b/fonts/MortalFont80/0022.png new file mode 100644 index 000000000..5850b5b1c Binary files /dev/null and b/fonts/MortalFont80/0022.png differ diff --git a/fonts/MortalFont80/0023.png b/fonts/MortalFont80/0023.png new file mode 100644 index 000000000..17a5cad08 Binary files /dev/null and b/fonts/MortalFont80/0023.png differ diff --git a/fonts/MortalFont80/0024.png b/fonts/MortalFont80/0024.png new file mode 100644 index 000000000..b8eeb1530 Binary files /dev/null and b/fonts/MortalFont80/0024.png differ diff --git a/fonts/MortalFont80/0025.png b/fonts/MortalFont80/0025.png new file mode 100644 index 000000000..976b7a440 Binary files /dev/null and b/fonts/MortalFont80/0025.png differ diff --git a/fonts/MortalFont80/0026.png b/fonts/MortalFont80/0026.png new file mode 100644 index 000000000..6ebea2c41 Binary files /dev/null and b/fonts/MortalFont80/0026.png differ diff --git a/fonts/MortalFont80/0027.png b/fonts/MortalFont80/0027.png new file mode 100644 index 000000000..b0c365306 Binary files /dev/null and b/fonts/MortalFont80/0027.png differ diff --git a/fonts/MortalFont80/0028.png b/fonts/MortalFont80/0028.png new file mode 100644 index 000000000..4642aa3a9 Binary files /dev/null and b/fonts/MortalFont80/0028.png differ diff --git a/fonts/MortalFont80/0029.png b/fonts/MortalFont80/0029.png new file mode 100644 index 000000000..d88350d3f Binary files /dev/null and b/fonts/MortalFont80/0029.png differ diff --git a/fonts/MortalFont80/002A.png b/fonts/MortalFont80/002A.png new file mode 100644 index 000000000..a9cf43964 Binary files /dev/null and b/fonts/MortalFont80/002A.png differ diff --git a/fonts/MortalFont80/002B.png b/fonts/MortalFont80/002B.png new file mode 100644 index 000000000..627e3583f Binary files /dev/null and b/fonts/MortalFont80/002B.png differ diff --git a/fonts/MortalFont80/002C.png b/fonts/MortalFont80/002C.png new file mode 100644 index 000000000..58657bce4 Binary files /dev/null and b/fonts/MortalFont80/002C.png differ diff --git a/fonts/MortalFont80/002D.png b/fonts/MortalFont80/002D.png new file mode 100644 index 000000000..da3c046ac Binary files /dev/null and b/fonts/MortalFont80/002D.png differ diff --git a/fonts/MortalFont80/002E.png b/fonts/MortalFont80/002E.png new file mode 100644 index 000000000..bfeea90cf Binary files /dev/null and b/fonts/MortalFont80/002E.png differ diff --git a/fonts/MortalFont80/002F.png b/fonts/MortalFont80/002F.png new file mode 100644 index 000000000..61a25bec5 Binary files /dev/null and b/fonts/MortalFont80/002F.png differ diff --git a/fonts/MortalFont80/0030.png b/fonts/MortalFont80/0030.png new file mode 100644 index 000000000..470ebacdb Binary files /dev/null and b/fonts/MortalFont80/0030.png differ diff --git a/fonts/MortalFont80/0031.png b/fonts/MortalFont80/0031.png new file mode 100644 index 000000000..47dda905f Binary files /dev/null and b/fonts/MortalFont80/0031.png differ diff --git a/fonts/MortalFont80/0032.png b/fonts/MortalFont80/0032.png new file mode 100644 index 000000000..3bdebcf91 Binary files /dev/null and b/fonts/MortalFont80/0032.png differ diff --git a/fonts/MortalFont80/0033.png b/fonts/MortalFont80/0033.png new file mode 100644 index 000000000..1c90b1eec Binary files /dev/null and b/fonts/MortalFont80/0033.png differ diff --git a/fonts/MortalFont80/0034.png b/fonts/MortalFont80/0034.png new file mode 100644 index 000000000..a28744ab9 Binary files /dev/null and b/fonts/MortalFont80/0034.png differ diff --git a/fonts/MortalFont80/0035.png b/fonts/MortalFont80/0035.png new file mode 100644 index 000000000..c90eaee1a Binary files /dev/null and b/fonts/MortalFont80/0035.png differ diff --git a/fonts/MortalFont80/0036.png b/fonts/MortalFont80/0036.png new file mode 100644 index 000000000..ca68192ab Binary files /dev/null and b/fonts/MortalFont80/0036.png differ diff --git a/fonts/MortalFont80/0037.png b/fonts/MortalFont80/0037.png new file mode 100644 index 000000000..241538f31 Binary files /dev/null and b/fonts/MortalFont80/0037.png differ diff --git a/fonts/MortalFont80/0038.png b/fonts/MortalFont80/0038.png new file mode 100644 index 000000000..a836f4688 Binary files /dev/null and b/fonts/MortalFont80/0038.png differ diff --git a/fonts/MortalFont80/0039.png b/fonts/MortalFont80/0039.png new file mode 100644 index 000000000..56440b519 Binary files /dev/null and b/fonts/MortalFont80/0039.png differ diff --git a/fonts/MortalFont80/003A.png b/fonts/MortalFont80/003A.png new file mode 100644 index 000000000..fb22dee1e Binary files /dev/null and b/fonts/MortalFont80/003A.png differ diff --git a/fonts/MortalFont80/003B.png b/fonts/MortalFont80/003B.png new file mode 100644 index 000000000..41ce94eb9 Binary files /dev/null and b/fonts/MortalFont80/003B.png differ diff --git a/fonts/MortalFont80/003C.png b/fonts/MortalFont80/003C.png new file mode 100644 index 000000000..506546845 Binary files /dev/null and b/fonts/MortalFont80/003C.png differ diff --git a/fonts/MortalFont80/003D.png b/fonts/MortalFont80/003D.png new file mode 100644 index 000000000..1a26dee49 Binary files /dev/null and b/fonts/MortalFont80/003D.png differ diff --git a/fonts/MortalFont80/003E.png b/fonts/MortalFont80/003E.png new file mode 100644 index 000000000..1c69a162f Binary files /dev/null and b/fonts/MortalFont80/003E.png differ diff --git a/fonts/MortalFont80/003F.png b/fonts/MortalFont80/003F.png new file mode 100644 index 000000000..b4403d591 Binary files /dev/null and b/fonts/MortalFont80/003F.png differ diff --git a/fonts/MortalFont80/0040.png b/fonts/MortalFont80/0040.png new file mode 100644 index 000000000..54973b4eb Binary files /dev/null and b/fonts/MortalFont80/0040.png differ diff --git a/fonts/MortalFont80/0041.png b/fonts/MortalFont80/0041.png new file mode 100644 index 000000000..3eb70a6d8 Binary files /dev/null and b/fonts/MortalFont80/0041.png differ diff --git a/fonts/MortalFont80/0042.png b/fonts/MortalFont80/0042.png new file mode 100644 index 000000000..0c94fda51 Binary files /dev/null and b/fonts/MortalFont80/0042.png differ diff --git a/fonts/MortalFont80/0043.png b/fonts/MortalFont80/0043.png new file mode 100644 index 000000000..d841a311b Binary files /dev/null and b/fonts/MortalFont80/0043.png differ diff --git a/fonts/MortalFont80/0044.png b/fonts/MortalFont80/0044.png new file mode 100644 index 000000000..c4c4e67b9 Binary files /dev/null and b/fonts/MortalFont80/0044.png differ diff --git a/fonts/MortalFont80/0045.png b/fonts/MortalFont80/0045.png new file mode 100644 index 000000000..66d99a88d Binary files /dev/null and b/fonts/MortalFont80/0045.png differ diff --git a/fonts/MortalFont80/0046.png b/fonts/MortalFont80/0046.png new file mode 100644 index 000000000..92bbfffb2 Binary files /dev/null and b/fonts/MortalFont80/0046.png differ diff --git a/fonts/MortalFont80/0047.png b/fonts/MortalFont80/0047.png new file mode 100644 index 000000000..5d5336db6 Binary files /dev/null and b/fonts/MortalFont80/0047.png differ diff --git a/fonts/MortalFont80/0048.png b/fonts/MortalFont80/0048.png new file mode 100644 index 000000000..6a0cd2105 Binary files /dev/null and b/fonts/MortalFont80/0048.png differ diff --git a/fonts/MortalFont80/0049.png b/fonts/MortalFont80/0049.png new file mode 100644 index 000000000..486a3efd1 Binary files /dev/null and b/fonts/MortalFont80/0049.png differ diff --git a/fonts/MortalFont80/004A.png b/fonts/MortalFont80/004A.png new file mode 100644 index 000000000..8a9cfa4d2 Binary files /dev/null and b/fonts/MortalFont80/004A.png differ diff --git a/fonts/MortalFont80/004B.png b/fonts/MortalFont80/004B.png new file mode 100644 index 000000000..be494d006 Binary files /dev/null and b/fonts/MortalFont80/004B.png differ diff --git a/fonts/MortalFont80/004C.png b/fonts/MortalFont80/004C.png new file mode 100644 index 000000000..e4b431dba Binary files /dev/null and b/fonts/MortalFont80/004C.png differ diff --git a/fonts/MortalFont80/004D.png b/fonts/MortalFont80/004D.png new file mode 100644 index 000000000..1d02491da Binary files /dev/null and b/fonts/MortalFont80/004D.png differ diff --git a/fonts/MortalFont80/004E.png b/fonts/MortalFont80/004E.png new file mode 100644 index 000000000..9fbaa2a60 Binary files /dev/null and b/fonts/MortalFont80/004E.png differ diff --git a/fonts/MortalFont80/004F.png b/fonts/MortalFont80/004F.png new file mode 100644 index 000000000..365f572c4 Binary files /dev/null and b/fonts/MortalFont80/004F.png differ diff --git a/fonts/MortalFont80/0050.png b/fonts/MortalFont80/0050.png new file mode 100644 index 000000000..f768408ef Binary files /dev/null and b/fonts/MortalFont80/0050.png differ diff --git a/fonts/MortalFont80/0051.png b/fonts/MortalFont80/0051.png new file mode 100644 index 000000000..21e57f347 Binary files /dev/null and b/fonts/MortalFont80/0051.png differ diff --git a/fonts/MortalFont80/0052.png b/fonts/MortalFont80/0052.png new file mode 100644 index 000000000..084ad9f85 Binary files /dev/null and b/fonts/MortalFont80/0052.png differ diff --git a/fonts/MortalFont80/0053.png b/fonts/MortalFont80/0053.png new file mode 100644 index 000000000..44c68b7d6 Binary files /dev/null and b/fonts/MortalFont80/0053.png differ diff --git a/fonts/MortalFont80/0054.png b/fonts/MortalFont80/0054.png new file mode 100644 index 000000000..552c64b4a Binary files /dev/null and b/fonts/MortalFont80/0054.png differ diff --git a/fonts/MortalFont80/0055.png b/fonts/MortalFont80/0055.png new file mode 100644 index 000000000..2dfb0e06d Binary files /dev/null and b/fonts/MortalFont80/0055.png differ diff --git a/fonts/MortalFont80/0056.png b/fonts/MortalFont80/0056.png new file mode 100644 index 000000000..8ab08ad33 Binary files /dev/null and b/fonts/MortalFont80/0056.png differ diff --git a/fonts/MortalFont80/0057.png b/fonts/MortalFont80/0057.png new file mode 100644 index 000000000..f31036189 Binary files /dev/null and b/fonts/MortalFont80/0057.png differ diff --git a/fonts/MortalFont80/0058.png b/fonts/MortalFont80/0058.png new file mode 100644 index 000000000..18a12fdc0 Binary files /dev/null and b/fonts/MortalFont80/0058.png differ diff --git a/fonts/MortalFont80/0059.png b/fonts/MortalFont80/0059.png new file mode 100644 index 000000000..fcfcb2df7 Binary files /dev/null and b/fonts/MortalFont80/0059.png differ diff --git a/fonts/MortalFont80/005A.png b/fonts/MortalFont80/005A.png new file mode 100644 index 000000000..89aeb613c Binary files /dev/null and b/fonts/MortalFont80/005A.png differ diff --git a/fonts/MortalFont80/005B.png b/fonts/MortalFont80/005B.png new file mode 100644 index 000000000..3c4c527c9 Binary files /dev/null and b/fonts/MortalFont80/005B.png differ diff --git a/fonts/MortalFont80/005C.png b/fonts/MortalFont80/005C.png new file mode 100644 index 000000000..9be93ea3a Binary files /dev/null and b/fonts/MortalFont80/005C.png differ diff --git a/fonts/MortalFont80/005D.png b/fonts/MortalFont80/005D.png new file mode 100644 index 000000000..6fac401af Binary files /dev/null and b/fonts/MortalFont80/005D.png differ diff --git a/fonts/MortalFont80/005E.png b/fonts/MortalFont80/005E.png new file mode 100644 index 000000000..213254371 Binary files /dev/null and b/fonts/MortalFont80/005E.png differ diff --git a/fonts/MortalFont80/005F.png b/fonts/MortalFont80/005F.png new file mode 100644 index 000000000..4aa50aa5c Binary files /dev/null and b/fonts/MortalFont80/005F.png differ diff --git a/fonts/MortalFont80/0060.png b/fonts/MortalFont80/0060.png new file mode 100644 index 000000000..416a07843 Binary files /dev/null and b/fonts/MortalFont80/0060.png differ diff --git a/fonts/MortalFont80/0061.png b/fonts/MortalFont80/0061.png new file mode 100644 index 000000000..b3b455b3f Binary files /dev/null and b/fonts/MortalFont80/0061.png differ diff --git a/fonts/MortalFont80/0062.png b/fonts/MortalFont80/0062.png new file mode 100644 index 000000000..10b8ee677 Binary files /dev/null and b/fonts/MortalFont80/0062.png differ diff --git a/fonts/MortalFont80/0063.png b/fonts/MortalFont80/0063.png new file mode 100644 index 000000000..bc458f58e Binary files /dev/null and b/fonts/MortalFont80/0063.png differ diff --git a/fonts/MortalFont80/0064.png b/fonts/MortalFont80/0064.png new file mode 100644 index 000000000..e20b225d9 Binary files /dev/null and b/fonts/MortalFont80/0064.png differ diff --git a/fonts/MortalFont80/0065.png b/fonts/MortalFont80/0065.png new file mode 100644 index 000000000..89c6f97bc Binary files /dev/null and b/fonts/MortalFont80/0065.png differ diff --git a/fonts/MortalFont80/0066.png b/fonts/MortalFont80/0066.png new file mode 100644 index 000000000..e7c4b98e9 Binary files /dev/null and b/fonts/MortalFont80/0066.png differ diff --git a/fonts/MortalFont80/0067.png b/fonts/MortalFont80/0067.png new file mode 100644 index 000000000..37ae5b67f Binary files /dev/null and b/fonts/MortalFont80/0067.png differ diff --git a/fonts/MortalFont80/0068.png b/fonts/MortalFont80/0068.png new file mode 100644 index 000000000..be2d6c763 Binary files /dev/null and b/fonts/MortalFont80/0068.png differ diff --git a/fonts/MortalFont80/0069.png b/fonts/MortalFont80/0069.png new file mode 100644 index 000000000..89b6201e4 Binary files /dev/null and b/fonts/MortalFont80/0069.png differ diff --git a/fonts/MortalFont80/006A.png b/fonts/MortalFont80/006A.png new file mode 100644 index 000000000..a1d09dd27 Binary files /dev/null and b/fonts/MortalFont80/006A.png differ diff --git a/fonts/MortalFont80/006B.png b/fonts/MortalFont80/006B.png new file mode 100644 index 000000000..4e7fb779c Binary files /dev/null and b/fonts/MortalFont80/006B.png differ diff --git a/fonts/MortalFont80/006C.png b/fonts/MortalFont80/006C.png new file mode 100644 index 000000000..d984bdca2 Binary files /dev/null and b/fonts/MortalFont80/006C.png differ diff --git a/fonts/MortalFont80/006D.png b/fonts/MortalFont80/006D.png new file mode 100644 index 000000000..b2cfd6530 Binary files /dev/null and b/fonts/MortalFont80/006D.png differ diff --git a/fonts/MortalFont80/006E.png b/fonts/MortalFont80/006E.png new file mode 100644 index 000000000..395f5454a Binary files /dev/null and b/fonts/MortalFont80/006E.png differ diff --git a/fonts/MortalFont80/006F.png b/fonts/MortalFont80/006F.png new file mode 100644 index 000000000..e4125c1e4 Binary files /dev/null and b/fonts/MortalFont80/006F.png differ diff --git a/fonts/MortalFont80/0070.png b/fonts/MortalFont80/0070.png new file mode 100644 index 000000000..b21ba770e Binary files /dev/null and b/fonts/MortalFont80/0070.png differ diff --git a/fonts/MortalFont80/0071.png b/fonts/MortalFont80/0071.png new file mode 100644 index 000000000..750f9e219 Binary files /dev/null and b/fonts/MortalFont80/0071.png differ diff --git a/fonts/MortalFont80/0072.png b/fonts/MortalFont80/0072.png new file mode 100644 index 000000000..df868c863 Binary files /dev/null and b/fonts/MortalFont80/0072.png differ diff --git a/fonts/MortalFont80/0073.png b/fonts/MortalFont80/0073.png new file mode 100644 index 000000000..6002a3d50 Binary files /dev/null and b/fonts/MortalFont80/0073.png differ diff --git a/fonts/MortalFont80/0074.png b/fonts/MortalFont80/0074.png new file mode 100644 index 000000000..0e5fe3302 Binary files /dev/null and b/fonts/MortalFont80/0074.png differ diff --git a/fonts/MortalFont80/0075.png b/fonts/MortalFont80/0075.png new file mode 100644 index 000000000..088705ade Binary files /dev/null and b/fonts/MortalFont80/0075.png differ diff --git a/fonts/MortalFont80/0076.png b/fonts/MortalFont80/0076.png new file mode 100644 index 000000000..e48b2c64b Binary files /dev/null and b/fonts/MortalFont80/0076.png differ diff --git a/fonts/MortalFont80/0077.png b/fonts/MortalFont80/0077.png new file mode 100644 index 000000000..4a7362334 Binary files /dev/null and b/fonts/MortalFont80/0077.png differ diff --git a/fonts/MortalFont80/0078.png b/fonts/MortalFont80/0078.png new file mode 100644 index 000000000..45ac32c61 Binary files /dev/null and b/fonts/MortalFont80/0078.png differ diff --git a/fonts/MortalFont80/0079.png b/fonts/MortalFont80/0079.png new file mode 100644 index 000000000..3e40721f1 Binary files /dev/null and b/fonts/MortalFont80/0079.png differ diff --git a/fonts/MortalFont80/007A.png b/fonts/MortalFont80/007A.png new file mode 100644 index 000000000..f8d8f75d0 Binary files /dev/null and b/fonts/MortalFont80/007A.png differ diff --git a/fonts/MortalFont80/007B.png b/fonts/MortalFont80/007B.png new file mode 100644 index 000000000..d0cbd92cf Binary files /dev/null and b/fonts/MortalFont80/007B.png differ diff --git a/fonts/MortalFont80/007C.png b/fonts/MortalFont80/007C.png new file mode 100644 index 000000000..c9cd03469 Binary files /dev/null and b/fonts/MortalFont80/007C.png differ diff --git a/fonts/MortalFont80/007D.png b/fonts/MortalFont80/007D.png new file mode 100644 index 000000000..2469f5126 Binary files /dev/null and b/fonts/MortalFont80/007D.png differ diff --git a/fonts/MortalFont80/007E.png b/fonts/MortalFont80/007E.png new file mode 100644 index 000000000..cd4391b01 Binary files /dev/null and b/fonts/MortalFont80/007E.png differ diff --git a/fonts/MortalFont80/00A1.png b/fonts/MortalFont80/00A1.png new file mode 100644 index 000000000..af1d121f9 Binary files /dev/null and b/fonts/MortalFont80/00A1.png differ diff --git a/fonts/MortalFont80/00A2.png b/fonts/MortalFont80/00A2.png new file mode 100644 index 000000000..e5ec46a90 Binary files /dev/null and b/fonts/MortalFont80/00A2.png differ diff --git a/fonts/MortalFont80/00A3.png b/fonts/MortalFont80/00A3.png new file mode 100644 index 000000000..dd7865601 Binary files /dev/null and b/fonts/MortalFont80/00A3.png differ diff --git a/fonts/MortalFont80/00A4.png b/fonts/MortalFont80/00A4.png new file mode 100644 index 000000000..23f66958a Binary files /dev/null and b/fonts/MortalFont80/00A4.png differ diff --git a/fonts/MortalFont80/00A5.png b/fonts/MortalFont80/00A5.png new file mode 100644 index 000000000..bebb19dc7 Binary files /dev/null and b/fonts/MortalFont80/00A5.png differ diff --git a/fonts/MortalFont80/00A6.png b/fonts/MortalFont80/00A6.png new file mode 100644 index 000000000..3047b12d7 Binary files /dev/null and b/fonts/MortalFont80/00A6.png differ diff --git a/fonts/MortalFont80/00A7.png b/fonts/MortalFont80/00A7.png new file mode 100644 index 000000000..688cebfd5 Binary files /dev/null and b/fonts/MortalFont80/00A7.png differ diff --git a/fonts/MortalFont80/00A8.png b/fonts/MortalFont80/00A8.png new file mode 100644 index 000000000..f0d758103 Binary files /dev/null and b/fonts/MortalFont80/00A8.png differ diff --git a/fonts/MortalFont80/00A9.png b/fonts/MortalFont80/00A9.png new file mode 100644 index 000000000..b96e66681 Binary files /dev/null and b/fonts/MortalFont80/00A9.png differ diff --git a/fonts/MortalFont80/00AA.png b/fonts/MortalFont80/00AA.png new file mode 100644 index 000000000..897daf00e Binary files /dev/null and b/fonts/MortalFont80/00AA.png differ diff --git a/fonts/MortalFont80/00AB.png b/fonts/MortalFont80/00AB.png new file mode 100644 index 000000000..3ef19d24a Binary files /dev/null and b/fonts/MortalFont80/00AB.png differ diff --git a/fonts/MortalFont80/00AC.png b/fonts/MortalFont80/00AC.png new file mode 100644 index 000000000..5eb047b66 Binary files /dev/null and b/fonts/MortalFont80/00AC.png differ diff --git a/fonts/MortalFont80/00AD.png b/fonts/MortalFont80/00AD.png new file mode 100644 index 000000000..da3c046ac Binary files /dev/null and b/fonts/MortalFont80/00AD.png differ diff --git a/fonts/MortalFont80/00AE.png b/fonts/MortalFont80/00AE.png new file mode 100644 index 000000000..2cba29025 Binary files /dev/null and b/fonts/MortalFont80/00AE.png differ diff --git a/fonts/MortalFont80/00AF.png b/fonts/MortalFont80/00AF.png new file mode 100644 index 000000000..fd88cdc42 Binary files /dev/null and b/fonts/MortalFont80/00AF.png differ diff --git a/fonts/MortalFont80/00B0.png b/fonts/MortalFont80/00B0.png new file mode 100644 index 000000000..37b3cc2be Binary files /dev/null and b/fonts/MortalFont80/00B0.png differ diff --git a/fonts/MortalFont80/00B1.png b/fonts/MortalFont80/00B1.png new file mode 100644 index 000000000..735e76ebf Binary files /dev/null and b/fonts/MortalFont80/00B1.png differ diff --git a/fonts/MortalFont80/00B2.png b/fonts/MortalFont80/00B2.png new file mode 100644 index 000000000..f338b54d0 Binary files /dev/null and b/fonts/MortalFont80/00B2.png differ diff --git a/fonts/MortalFont80/00B3.png b/fonts/MortalFont80/00B3.png new file mode 100644 index 000000000..4a6849eb5 Binary files /dev/null and b/fonts/MortalFont80/00B3.png differ diff --git a/fonts/MortalFont80/00B4.png b/fonts/MortalFont80/00B4.png new file mode 100644 index 000000000..938aba749 Binary files /dev/null and b/fonts/MortalFont80/00B4.png differ diff --git a/fonts/MortalFont80/00B6.png b/fonts/MortalFont80/00B6.png new file mode 100644 index 000000000..c1f470932 Binary files /dev/null and b/fonts/MortalFont80/00B6.png differ diff --git a/fonts/MortalFont80/00B7.png b/fonts/MortalFont80/00B7.png new file mode 100644 index 000000000..09a30ed66 Binary files /dev/null and b/fonts/MortalFont80/00B7.png differ diff --git a/fonts/MortalFont80/00B8.png b/fonts/MortalFont80/00B8.png new file mode 100644 index 000000000..6b1a3971b Binary files /dev/null and b/fonts/MortalFont80/00B8.png differ diff --git a/fonts/MortalFont80/00B9.png b/fonts/MortalFont80/00B9.png new file mode 100644 index 000000000..5d01b7c14 Binary files /dev/null and b/fonts/MortalFont80/00B9.png differ diff --git a/fonts/MortalFont80/00BA.png b/fonts/MortalFont80/00BA.png new file mode 100644 index 000000000..84d179b34 Binary files /dev/null and b/fonts/MortalFont80/00BA.png differ diff --git a/fonts/MortalFont80/00BB.png b/fonts/MortalFont80/00BB.png new file mode 100644 index 000000000..0fd31f54e Binary files /dev/null and b/fonts/MortalFont80/00BB.png differ diff --git a/fonts/MortalFont80/00BC.png b/fonts/MortalFont80/00BC.png new file mode 100644 index 000000000..de95a78d8 Binary files /dev/null and b/fonts/MortalFont80/00BC.png differ diff --git a/fonts/MortalFont80/00BD.png b/fonts/MortalFont80/00BD.png new file mode 100644 index 000000000..77937a6c2 Binary files /dev/null and b/fonts/MortalFont80/00BD.png differ diff --git a/fonts/MortalFont80/00BE.png b/fonts/MortalFont80/00BE.png new file mode 100644 index 000000000..928b34940 Binary files /dev/null and b/fonts/MortalFont80/00BE.png differ diff --git a/fonts/MortalFont80/00BF.png b/fonts/MortalFont80/00BF.png new file mode 100644 index 000000000..8aff66da8 Binary files /dev/null and b/fonts/MortalFont80/00BF.png differ diff --git a/fonts/MortalFont80/00C0.png b/fonts/MortalFont80/00C0.png new file mode 100644 index 000000000..93e6bd173 Binary files /dev/null and b/fonts/MortalFont80/00C0.png differ diff --git a/fonts/MortalFont80/00C1.png b/fonts/MortalFont80/00C1.png new file mode 100644 index 000000000..292fbbac9 Binary files /dev/null and b/fonts/MortalFont80/00C1.png differ diff --git a/fonts/MortalFont80/00C2.png b/fonts/MortalFont80/00C2.png new file mode 100644 index 000000000..9587b2c0e Binary files /dev/null and b/fonts/MortalFont80/00C2.png differ diff --git a/fonts/MortalFont80/00C3.png b/fonts/MortalFont80/00C3.png new file mode 100644 index 000000000..9578cc51d Binary files /dev/null and b/fonts/MortalFont80/00C3.png differ diff --git a/fonts/MortalFont80/00C4.png b/fonts/MortalFont80/00C4.png new file mode 100644 index 000000000..c2aa949d6 Binary files /dev/null and b/fonts/MortalFont80/00C4.png differ diff --git a/fonts/MortalFont80/00C5.png b/fonts/MortalFont80/00C5.png new file mode 100644 index 000000000..1bd916d2d Binary files /dev/null and b/fonts/MortalFont80/00C5.png differ diff --git a/fonts/MortalFont80/00C6.png b/fonts/MortalFont80/00C6.png new file mode 100644 index 000000000..174b6de97 Binary files /dev/null and b/fonts/MortalFont80/00C6.png differ diff --git a/fonts/MortalFont80/00C7.png b/fonts/MortalFont80/00C7.png new file mode 100644 index 000000000..7987ff8a1 Binary files /dev/null and b/fonts/MortalFont80/00C7.png differ diff --git a/fonts/MortalFont80/00C8.png b/fonts/MortalFont80/00C8.png new file mode 100644 index 000000000..2f5ff2b52 Binary files /dev/null and b/fonts/MortalFont80/00C8.png differ diff --git a/fonts/MortalFont80/00C9.png b/fonts/MortalFont80/00C9.png new file mode 100644 index 000000000..5098ee3ad Binary files /dev/null and b/fonts/MortalFont80/00C9.png differ diff --git a/fonts/MortalFont80/00CA.png b/fonts/MortalFont80/00CA.png new file mode 100644 index 000000000..095f036f3 Binary files /dev/null and b/fonts/MortalFont80/00CA.png differ diff --git a/fonts/MortalFont80/00CB.png b/fonts/MortalFont80/00CB.png new file mode 100644 index 000000000..dbe1fc242 Binary files /dev/null and b/fonts/MortalFont80/00CB.png differ diff --git a/fonts/MortalFont80/00CC.png b/fonts/MortalFont80/00CC.png new file mode 100644 index 000000000..ec366f051 Binary files /dev/null and b/fonts/MortalFont80/00CC.png differ diff --git a/fonts/MortalFont80/00CD.png b/fonts/MortalFont80/00CD.png new file mode 100644 index 000000000..8f562451a Binary files /dev/null and b/fonts/MortalFont80/00CD.png differ diff --git a/fonts/MortalFont80/00CE.png b/fonts/MortalFont80/00CE.png new file mode 100644 index 000000000..5d59821ae Binary files /dev/null and b/fonts/MortalFont80/00CE.png differ diff --git a/fonts/MortalFont80/00CF.png b/fonts/MortalFont80/00CF.png new file mode 100644 index 000000000..794c79c19 Binary files /dev/null and b/fonts/MortalFont80/00CF.png differ diff --git a/fonts/MortalFont80/00D0.png b/fonts/MortalFont80/00D0.png new file mode 100644 index 000000000..012684122 Binary files /dev/null and b/fonts/MortalFont80/00D0.png differ diff --git a/fonts/MortalFont80/00D1.png b/fonts/MortalFont80/00D1.png new file mode 100644 index 000000000..dc85d99da Binary files /dev/null and b/fonts/MortalFont80/00D1.png differ diff --git a/fonts/MortalFont80/00D2.png b/fonts/MortalFont80/00D2.png new file mode 100644 index 000000000..ea1161ed8 Binary files /dev/null and b/fonts/MortalFont80/00D2.png differ diff --git a/fonts/MortalFont80/00D3.png b/fonts/MortalFont80/00D3.png new file mode 100644 index 000000000..b3089b8c3 Binary files /dev/null and b/fonts/MortalFont80/00D3.png differ diff --git a/fonts/MortalFont80/00D4.png b/fonts/MortalFont80/00D4.png new file mode 100644 index 000000000..bd381a4cb Binary files /dev/null and b/fonts/MortalFont80/00D4.png differ diff --git a/fonts/MortalFont80/00D5.png b/fonts/MortalFont80/00D5.png new file mode 100644 index 000000000..010e9c4dd Binary files /dev/null and b/fonts/MortalFont80/00D5.png differ diff --git a/fonts/MortalFont80/00D6.png b/fonts/MortalFont80/00D6.png new file mode 100644 index 000000000..f95b67a72 Binary files /dev/null and b/fonts/MortalFont80/00D6.png differ diff --git a/fonts/MortalFont80/00D7.png b/fonts/MortalFont80/00D7.png new file mode 100644 index 000000000..95210a0d8 Binary files /dev/null and b/fonts/MortalFont80/00D7.png differ diff --git a/fonts/MortalFont80/00D8.png b/fonts/MortalFont80/00D8.png new file mode 100644 index 000000000..e8bc2065c Binary files /dev/null and b/fonts/MortalFont80/00D8.png differ diff --git a/fonts/MortalFont80/00D9.png b/fonts/MortalFont80/00D9.png new file mode 100644 index 000000000..a396dc842 Binary files /dev/null and b/fonts/MortalFont80/00D9.png differ diff --git a/fonts/MortalFont80/00DA.png b/fonts/MortalFont80/00DA.png new file mode 100644 index 000000000..21b73d703 Binary files /dev/null and b/fonts/MortalFont80/00DA.png differ diff --git a/fonts/MortalFont80/00DB.png b/fonts/MortalFont80/00DB.png new file mode 100644 index 000000000..e9a321021 Binary files /dev/null and b/fonts/MortalFont80/00DB.png differ diff --git a/fonts/MortalFont80/00DC.png b/fonts/MortalFont80/00DC.png new file mode 100644 index 000000000..0427f0228 Binary files /dev/null and b/fonts/MortalFont80/00DC.png differ diff --git a/fonts/MortalFont80/00DD.png b/fonts/MortalFont80/00DD.png new file mode 100644 index 000000000..f9fe8f8ca Binary files /dev/null and b/fonts/MortalFont80/00DD.png differ diff --git a/fonts/MortalFont80/00DE.png b/fonts/MortalFont80/00DE.png new file mode 100644 index 000000000..6ce0dbaf2 Binary files /dev/null and b/fonts/MortalFont80/00DE.png differ diff --git a/fonts/MortalFont80/00DF.png b/fonts/MortalFont80/00DF.png new file mode 100644 index 000000000..54dd7d350 Binary files /dev/null and b/fonts/MortalFont80/00DF.png differ diff --git a/fonts/MortalFont80/00E0.png b/fonts/MortalFont80/00E0.png new file mode 100644 index 000000000..3639e474a Binary files /dev/null and b/fonts/MortalFont80/00E0.png differ diff --git a/fonts/MortalFont80/00E1.png b/fonts/MortalFont80/00E1.png new file mode 100644 index 000000000..8b37def7e Binary files /dev/null and b/fonts/MortalFont80/00E1.png differ diff --git a/fonts/MortalFont80/00E2.png b/fonts/MortalFont80/00E2.png new file mode 100644 index 000000000..3ec1a96b3 Binary files /dev/null and b/fonts/MortalFont80/00E2.png differ diff --git a/fonts/MortalFont80/00E3.png b/fonts/MortalFont80/00E3.png new file mode 100644 index 000000000..9f2511a30 Binary files /dev/null and b/fonts/MortalFont80/00E3.png differ diff --git a/fonts/MortalFont80/00E4.png b/fonts/MortalFont80/00E4.png new file mode 100644 index 000000000..d7424cd0a Binary files /dev/null and b/fonts/MortalFont80/00E4.png differ diff --git a/fonts/MortalFont80/00E5.png b/fonts/MortalFont80/00E5.png new file mode 100644 index 000000000..7c9d6efe4 Binary files /dev/null and b/fonts/MortalFont80/00E5.png differ diff --git a/fonts/MortalFont80/00E6.png b/fonts/MortalFont80/00E6.png new file mode 100644 index 000000000..87ac7b99f Binary files /dev/null and b/fonts/MortalFont80/00E6.png differ diff --git a/fonts/MortalFont80/00E7.png b/fonts/MortalFont80/00E7.png new file mode 100644 index 000000000..9b64fda93 Binary files /dev/null and b/fonts/MortalFont80/00E7.png differ diff --git a/fonts/MortalFont80/00E8.png b/fonts/MortalFont80/00E8.png new file mode 100644 index 000000000..eb4fa9df2 Binary files /dev/null and b/fonts/MortalFont80/00E8.png differ diff --git a/fonts/MortalFont80/00E9.png b/fonts/MortalFont80/00E9.png new file mode 100644 index 000000000..47c46e536 Binary files /dev/null and b/fonts/MortalFont80/00E9.png differ diff --git a/fonts/MortalFont80/00EA.png b/fonts/MortalFont80/00EA.png new file mode 100644 index 000000000..b02ceafe3 Binary files /dev/null and b/fonts/MortalFont80/00EA.png differ diff --git a/fonts/MortalFont80/00EB.png b/fonts/MortalFont80/00EB.png new file mode 100644 index 000000000..6c21b32b4 Binary files /dev/null and b/fonts/MortalFont80/00EB.png differ diff --git a/fonts/MortalFont80/00EC.png b/fonts/MortalFont80/00EC.png new file mode 100644 index 000000000..83fcb9abe Binary files /dev/null and b/fonts/MortalFont80/00EC.png differ diff --git a/fonts/MortalFont80/00ED.png b/fonts/MortalFont80/00ED.png new file mode 100644 index 000000000..2213ef4a1 Binary files /dev/null and b/fonts/MortalFont80/00ED.png differ diff --git a/fonts/MortalFont80/00EE.png b/fonts/MortalFont80/00EE.png new file mode 100644 index 000000000..fec996b75 Binary files /dev/null and b/fonts/MortalFont80/00EE.png differ diff --git a/fonts/MortalFont80/00EF.png b/fonts/MortalFont80/00EF.png new file mode 100644 index 000000000..188ec69c3 Binary files /dev/null and b/fonts/MortalFont80/00EF.png differ diff --git a/fonts/MortalFont80/00F0.png b/fonts/MortalFont80/00F0.png new file mode 100644 index 000000000..78ef0c739 Binary files /dev/null and b/fonts/MortalFont80/00F0.png differ diff --git a/fonts/MortalFont80/00F1.png b/fonts/MortalFont80/00F1.png new file mode 100644 index 000000000..bd61923a0 Binary files /dev/null and b/fonts/MortalFont80/00F1.png differ diff --git a/fonts/MortalFont80/00F2.png b/fonts/MortalFont80/00F2.png new file mode 100644 index 000000000..e6ccf08da Binary files /dev/null and b/fonts/MortalFont80/00F2.png differ diff --git a/fonts/MortalFont80/00F3.png b/fonts/MortalFont80/00F3.png new file mode 100644 index 000000000..a156086a8 Binary files /dev/null and b/fonts/MortalFont80/00F3.png differ diff --git a/fonts/MortalFont80/00F4.png b/fonts/MortalFont80/00F4.png new file mode 100644 index 000000000..b9490584b Binary files /dev/null and b/fonts/MortalFont80/00F4.png differ diff --git a/fonts/MortalFont80/00F5.png b/fonts/MortalFont80/00F5.png new file mode 100644 index 000000000..1720b5dca Binary files /dev/null and b/fonts/MortalFont80/00F5.png differ diff --git a/fonts/MortalFont80/00F6.png b/fonts/MortalFont80/00F6.png new file mode 100644 index 000000000..f1bea36c5 Binary files /dev/null and b/fonts/MortalFont80/00F6.png differ diff --git a/fonts/MortalFont80/00F7.png b/fonts/MortalFont80/00F7.png new file mode 100644 index 000000000..0b7c1d524 Binary files /dev/null and b/fonts/MortalFont80/00F7.png differ diff --git a/fonts/MortalFont80/00F8.png b/fonts/MortalFont80/00F8.png new file mode 100644 index 000000000..1a055a33d Binary files /dev/null and b/fonts/MortalFont80/00F8.png differ diff --git a/fonts/MortalFont80/00F9.png b/fonts/MortalFont80/00F9.png new file mode 100644 index 000000000..f75eea5ac Binary files /dev/null and b/fonts/MortalFont80/00F9.png differ diff --git a/fonts/MortalFont80/00FA.png b/fonts/MortalFont80/00FA.png new file mode 100644 index 000000000..a3beb834b Binary files /dev/null and b/fonts/MortalFont80/00FA.png differ diff --git a/fonts/MortalFont80/00FB.png b/fonts/MortalFont80/00FB.png new file mode 100644 index 000000000..8e58dd0c9 Binary files /dev/null and b/fonts/MortalFont80/00FB.png differ diff --git a/fonts/MortalFont80/00FC.png b/fonts/MortalFont80/00FC.png new file mode 100644 index 000000000..d7305eede Binary files /dev/null and b/fonts/MortalFont80/00FC.png differ diff --git a/fonts/MortalFont80/00FD.png b/fonts/MortalFont80/00FD.png new file mode 100644 index 000000000..491c882cd Binary files /dev/null and b/fonts/MortalFont80/00FD.png differ diff --git a/fonts/MortalFont80/00FE.png b/fonts/MortalFont80/00FE.png new file mode 100644 index 000000000..ecac13cbc Binary files /dev/null and b/fonts/MortalFont80/00FE.png differ diff --git a/fonts/MortalFont80/00FF.png b/fonts/MortalFont80/00FF.png new file mode 100644 index 000000000..49f33b92e Binary files /dev/null and b/fonts/MortalFont80/00FF.png differ diff --git a/fonts/MortalFont80/0100.png b/fonts/MortalFont80/0100.png new file mode 100644 index 000000000..6d51dd97c Binary files /dev/null and b/fonts/MortalFont80/0100.png differ diff --git a/fonts/MortalFont80/0101.png b/fonts/MortalFont80/0101.png new file mode 100644 index 000000000..32eb2e597 Binary files /dev/null and b/fonts/MortalFont80/0101.png differ diff --git a/fonts/MortalFont80/0102.png b/fonts/MortalFont80/0102.png new file mode 100644 index 000000000..02867caa5 Binary files /dev/null and b/fonts/MortalFont80/0102.png differ diff --git a/fonts/MortalFont80/0103.png b/fonts/MortalFont80/0103.png new file mode 100644 index 000000000..0dfe7304c Binary files /dev/null and b/fonts/MortalFont80/0103.png differ diff --git a/fonts/MortalFont80/0104.png b/fonts/MortalFont80/0104.png new file mode 100644 index 000000000..f51f8e267 Binary files /dev/null and b/fonts/MortalFont80/0104.png differ diff --git a/fonts/MortalFont80/0105.png b/fonts/MortalFont80/0105.png new file mode 100644 index 000000000..66472e43f Binary files /dev/null and b/fonts/MortalFont80/0105.png differ diff --git a/fonts/MortalFont80/0106.png b/fonts/MortalFont80/0106.png new file mode 100644 index 000000000..e43920c03 Binary files /dev/null and b/fonts/MortalFont80/0106.png differ diff --git a/fonts/MortalFont80/0107.png b/fonts/MortalFont80/0107.png new file mode 100644 index 000000000..03a9c8fd4 Binary files /dev/null and b/fonts/MortalFont80/0107.png differ diff --git a/fonts/MortalFont80/0108.png b/fonts/MortalFont80/0108.png new file mode 100644 index 000000000..1a60ed89a Binary files /dev/null and b/fonts/MortalFont80/0108.png differ diff --git a/fonts/MortalFont80/0109.png b/fonts/MortalFont80/0109.png new file mode 100644 index 000000000..373f5e359 Binary files /dev/null and b/fonts/MortalFont80/0109.png differ diff --git a/fonts/MortalFont80/010C.png b/fonts/MortalFont80/010C.png new file mode 100644 index 000000000..e5a0805cd Binary files /dev/null and b/fonts/MortalFont80/010C.png differ diff --git a/fonts/MortalFont80/010D.png b/fonts/MortalFont80/010D.png new file mode 100644 index 000000000..1ea705d47 Binary files /dev/null and b/fonts/MortalFont80/010D.png differ diff --git a/fonts/MortalFont80/010E.png b/fonts/MortalFont80/010E.png new file mode 100644 index 000000000..c6579aac4 Binary files /dev/null and b/fonts/MortalFont80/010E.png differ diff --git a/fonts/MortalFont80/010F.png b/fonts/MortalFont80/010F.png new file mode 100644 index 000000000..b87923dbd Binary files /dev/null and b/fonts/MortalFont80/010F.png differ diff --git a/fonts/MortalFont80/0111.png b/fonts/MortalFont80/0111.png new file mode 100644 index 000000000..4c660085a Binary files /dev/null and b/fonts/MortalFont80/0111.png differ diff --git a/fonts/MortalFont80/0112.png b/fonts/MortalFont80/0112.png new file mode 100644 index 000000000..e531fffb9 Binary files /dev/null and b/fonts/MortalFont80/0112.png differ diff --git a/fonts/MortalFont80/0113.png b/fonts/MortalFont80/0113.png new file mode 100644 index 000000000..bc3672208 Binary files /dev/null and b/fonts/MortalFont80/0113.png differ diff --git a/fonts/MortalFont80/0118.png b/fonts/MortalFont80/0118.png new file mode 100644 index 000000000..f266656e6 Binary files /dev/null and b/fonts/MortalFont80/0118.png differ diff --git a/fonts/MortalFont80/0119.png b/fonts/MortalFont80/0119.png new file mode 100644 index 000000000..4b72efaf7 Binary files /dev/null and b/fonts/MortalFont80/0119.png differ diff --git a/fonts/MortalFont80/011A.png b/fonts/MortalFont80/011A.png new file mode 100644 index 000000000..fb9774c7f Binary files /dev/null and b/fonts/MortalFont80/011A.png differ diff --git a/fonts/MortalFont80/011B.png b/fonts/MortalFont80/011B.png new file mode 100644 index 000000000..8f4fcf380 Binary files /dev/null and b/fonts/MortalFont80/011B.png differ diff --git a/fonts/MortalFont80/011C.png b/fonts/MortalFont80/011C.png new file mode 100644 index 000000000..dc68ac379 Binary files /dev/null and b/fonts/MortalFont80/011C.png differ diff --git a/fonts/MortalFont80/011D.png b/fonts/MortalFont80/011D.png new file mode 100644 index 000000000..bae42f488 Binary files /dev/null and b/fonts/MortalFont80/011D.png differ diff --git a/fonts/MortalFont80/0124.png b/fonts/MortalFont80/0124.png new file mode 100644 index 000000000..5c8dd4e81 Binary files /dev/null and b/fonts/MortalFont80/0124.png differ diff --git a/fonts/MortalFont80/0125.png b/fonts/MortalFont80/0125.png new file mode 100644 index 000000000..ffd0036dc Binary files /dev/null and b/fonts/MortalFont80/0125.png differ diff --git a/fonts/MortalFont80/0127.png b/fonts/MortalFont80/0127.png new file mode 100644 index 000000000..ab7bb79ca Binary files /dev/null and b/fonts/MortalFont80/0127.png differ diff --git a/fonts/MortalFont80/012A.png b/fonts/MortalFont80/012A.png new file mode 100644 index 000000000..1b6ba1c8b Binary files /dev/null and b/fonts/MortalFont80/012A.png differ diff --git a/fonts/MortalFont80/012B.png b/fonts/MortalFont80/012B.png new file mode 100644 index 000000000..bf9d4be63 Binary files /dev/null and b/fonts/MortalFont80/012B.png differ diff --git a/fonts/MortalFont80/0134.png b/fonts/MortalFont80/0134.png new file mode 100644 index 000000000..e78d64fbe Binary files /dev/null and b/fonts/MortalFont80/0134.png differ diff --git a/fonts/MortalFont80/0135.png b/fonts/MortalFont80/0135.png new file mode 100644 index 000000000..e2503af8d Binary files /dev/null and b/fonts/MortalFont80/0135.png differ diff --git a/fonts/MortalFont80/0139.png b/fonts/MortalFont80/0139.png new file mode 100644 index 000000000..d34e7ef5a Binary files /dev/null and b/fonts/MortalFont80/0139.png differ diff --git a/fonts/MortalFont80/013A.png b/fonts/MortalFont80/013A.png new file mode 100644 index 000000000..4923ba878 Binary files /dev/null and b/fonts/MortalFont80/013A.png differ diff --git a/fonts/MortalFont80/013D.png b/fonts/MortalFont80/013D.png new file mode 100644 index 000000000..db508d999 Binary files /dev/null and b/fonts/MortalFont80/013D.png differ diff --git a/fonts/MortalFont80/013E.png b/fonts/MortalFont80/013E.png new file mode 100644 index 000000000..9bf1602d9 Binary files /dev/null and b/fonts/MortalFont80/013E.png differ diff --git a/fonts/MortalFont80/0141.png b/fonts/MortalFont80/0141.png new file mode 100644 index 000000000..e41f0c210 Binary files /dev/null and b/fonts/MortalFont80/0141.png differ diff --git a/fonts/MortalFont80/0142.png b/fonts/MortalFont80/0142.png new file mode 100644 index 000000000..95e37dd60 Binary files /dev/null and b/fonts/MortalFont80/0142.png differ diff --git a/fonts/MortalFont80/0143.png b/fonts/MortalFont80/0143.png new file mode 100644 index 000000000..7899f8f40 Binary files /dev/null and b/fonts/MortalFont80/0143.png differ diff --git a/fonts/MortalFont80/0144.png b/fonts/MortalFont80/0144.png new file mode 100644 index 000000000..17568bf66 Binary files /dev/null and b/fonts/MortalFont80/0144.png differ diff --git a/fonts/MortalFont80/0147.png b/fonts/MortalFont80/0147.png new file mode 100644 index 000000000..189c7aa8f Binary files /dev/null and b/fonts/MortalFont80/0147.png differ diff --git a/fonts/MortalFont80/0148.png b/fonts/MortalFont80/0148.png new file mode 100644 index 000000000..5240c47a4 Binary files /dev/null and b/fonts/MortalFont80/0148.png differ diff --git a/fonts/MortalFont80/014B.png b/fonts/MortalFont80/014B.png new file mode 100644 index 000000000..9c9e66731 Binary files /dev/null and b/fonts/MortalFont80/014B.png differ diff --git a/fonts/MortalFont80/014C.png b/fonts/MortalFont80/014C.png new file mode 100644 index 000000000..f5bcd1775 Binary files /dev/null and b/fonts/MortalFont80/014C.png differ diff --git a/fonts/MortalFont80/014D.png b/fonts/MortalFont80/014D.png new file mode 100644 index 000000000..36d2009d6 Binary files /dev/null and b/fonts/MortalFont80/014D.png differ diff --git a/fonts/MortalFont80/0150.png b/fonts/MortalFont80/0150.png new file mode 100644 index 000000000..9a64b9d59 Binary files /dev/null and b/fonts/MortalFont80/0150.png differ diff --git a/fonts/MortalFont80/0151.png b/fonts/MortalFont80/0151.png new file mode 100644 index 000000000..680d89e63 Binary files /dev/null and b/fonts/MortalFont80/0151.png differ diff --git a/fonts/MortalFont80/0152.png b/fonts/MortalFont80/0152.png new file mode 100644 index 000000000..2fa187ba2 Binary files /dev/null and b/fonts/MortalFont80/0152.png differ diff --git a/fonts/MortalFont80/0153.png b/fonts/MortalFont80/0153.png new file mode 100644 index 000000000..b46475b7c Binary files /dev/null and b/fonts/MortalFont80/0153.png differ diff --git a/fonts/MortalFont80/0154.png b/fonts/MortalFont80/0154.png new file mode 100644 index 000000000..d91d58100 Binary files /dev/null and b/fonts/MortalFont80/0154.png differ diff --git a/fonts/MortalFont80/0155.png b/fonts/MortalFont80/0155.png new file mode 100644 index 000000000..c134d6528 Binary files /dev/null and b/fonts/MortalFont80/0155.png differ diff --git a/fonts/MortalFont80/0158.png b/fonts/MortalFont80/0158.png new file mode 100644 index 000000000..7bfcbeb0a Binary files /dev/null and b/fonts/MortalFont80/0158.png differ diff --git a/fonts/MortalFont80/0159.png b/fonts/MortalFont80/0159.png new file mode 100644 index 000000000..f6bb977ce Binary files /dev/null and b/fonts/MortalFont80/0159.png differ diff --git a/fonts/MortalFont80/015A.png b/fonts/MortalFont80/015A.png new file mode 100644 index 000000000..8ba8a9541 Binary files /dev/null and b/fonts/MortalFont80/015A.png differ diff --git a/fonts/MortalFont80/015B.png b/fonts/MortalFont80/015B.png new file mode 100644 index 000000000..c44e144b2 Binary files /dev/null and b/fonts/MortalFont80/015B.png differ diff --git a/fonts/MortalFont80/015C.png b/fonts/MortalFont80/015C.png new file mode 100644 index 000000000..67310e348 Binary files /dev/null and b/fonts/MortalFont80/015C.png differ diff --git a/fonts/MortalFont80/015D.png b/fonts/MortalFont80/015D.png new file mode 100644 index 000000000..461c8fee8 Binary files /dev/null and b/fonts/MortalFont80/015D.png differ diff --git a/fonts/MortalFont80/015E.png b/fonts/MortalFont80/015E.png new file mode 100644 index 000000000..ee5e4bea0 Binary files /dev/null and b/fonts/MortalFont80/015E.png differ diff --git a/fonts/MortalFont80/015F.png b/fonts/MortalFont80/015F.png new file mode 100644 index 000000000..0261a77c1 Binary files /dev/null and b/fonts/MortalFont80/015F.png differ diff --git a/fonts/MortalFont80/0160.png b/fonts/MortalFont80/0160.png new file mode 100644 index 000000000..f4c84b116 Binary files /dev/null and b/fonts/MortalFont80/0160.png differ diff --git a/fonts/MortalFont80/0161.png b/fonts/MortalFont80/0161.png new file mode 100644 index 000000000..4316e4073 Binary files /dev/null and b/fonts/MortalFont80/0161.png differ diff --git a/fonts/MortalFont80/0162.png b/fonts/MortalFont80/0162.png new file mode 100644 index 000000000..008a5db73 Binary files /dev/null and b/fonts/MortalFont80/0162.png differ diff --git a/fonts/MortalFont80/0163.png b/fonts/MortalFont80/0163.png new file mode 100644 index 000000000..fc7a4ac57 Binary files /dev/null and b/fonts/MortalFont80/0163.png differ diff --git a/fonts/MortalFont80/0164.png b/fonts/MortalFont80/0164.png new file mode 100644 index 000000000..159d47798 Binary files /dev/null and b/fonts/MortalFont80/0164.png differ diff --git a/fonts/MortalFont80/0165.png b/fonts/MortalFont80/0165.png new file mode 100644 index 000000000..0330d24e3 Binary files /dev/null and b/fonts/MortalFont80/0165.png differ diff --git a/fonts/MortalFont80/016A.png b/fonts/MortalFont80/016A.png new file mode 100644 index 000000000..dd2aa5a03 Binary files /dev/null and b/fonts/MortalFont80/016A.png differ diff --git a/fonts/MortalFont80/016B.png b/fonts/MortalFont80/016B.png new file mode 100644 index 000000000..e15c092d0 Binary files /dev/null and b/fonts/MortalFont80/016B.png differ diff --git a/fonts/MortalFont80/016C.png b/fonts/MortalFont80/016C.png new file mode 100644 index 000000000..608232c01 Binary files /dev/null and b/fonts/MortalFont80/016C.png differ diff --git a/fonts/MortalFont80/016D.png b/fonts/MortalFont80/016D.png new file mode 100644 index 000000000..9c70f9ee0 Binary files /dev/null and b/fonts/MortalFont80/016D.png differ diff --git a/fonts/MortalFont80/016E.png b/fonts/MortalFont80/016E.png new file mode 100644 index 000000000..2bcd306e8 Binary files /dev/null and b/fonts/MortalFont80/016E.png differ diff --git a/fonts/MortalFont80/016F.png b/fonts/MortalFont80/016F.png new file mode 100644 index 000000000..cbf728e8d Binary files /dev/null and b/fonts/MortalFont80/016F.png differ diff --git a/fonts/MortalFont80/0170.png b/fonts/MortalFont80/0170.png new file mode 100644 index 000000000..1dfef60d5 Binary files /dev/null and b/fonts/MortalFont80/0170.png differ diff --git a/fonts/MortalFont80/0171.png b/fonts/MortalFont80/0171.png new file mode 100644 index 000000000..514e3a28d Binary files /dev/null and b/fonts/MortalFont80/0171.png differ diff --git a/fonts/MortalFont80/0179.png b/fonts/MortalFont80/0179.png new file mode 100644 index 000000000..dad180398 Binary files /dev/null and b/fonts/MortalFont80/0179.png differ diff --git a/fonts/MortalFont80/017A.png b/fonts/MortalFont80/017A.png new file mode 100644 index 000000000..0a5bab8ab Binary files /dev/null and b/fonts/MortalFont80/017A.png differ diff --git a/fonts/MortalFont80/017B.png b/fonts/MortalFont80/017B.png new file mode 100644 index 000000000..2f0800535 Binary files /dev/null and b/fonts/MortalFont80/017B.png differ diff --git a/fonts/MortalFont80/017C.png b/fonts/MortalFont80/017C.png new file mode 100644 index 000000000..03f509dd0 Binary files /dev/null and b/fonts/MortalFont80/017C.png differ diff --git a/fonts/MortalFont80/017D.png b/fonts/MortalFont80/017D.png new file mode 100644 index 000000000..6fa4d9412 Binary files /dev/null and b/fonts/MortalFont80/017D.png differ diff --git a/fonts/MortalFont80/017E.png b/fonts/MortalFont80/017E.png new file mode 100644 index 000000000..f860eda6b Binary files /dev/null and b/fonts/MortalFont80/017E.png differ diff --git a/fonts/MortalFont80/0193.png b/fonts/MortalFont80/0193.png new file mode 100644 index 000000000..27f37654f Binary files /dev/null and b/fonts/MortalFont80/0193.png differ diff --git a/fonts/MortalFont80/01C2.png b/fonts/MortalFont80/01C2.png new file mode 100644 index 000000000..1b72d909a Binary files /dev/null and b/fonts/MortalFont80/01C2.png differ diff --git a/fonts/MortalFont80/01CD.png b/fonts/MortalFont80/01CD.png new file mode 100644 index 000000000..77d69f455 Binary files /dev/null and b/fonts/MortalFont80/01CD.png differ diff --git a/fonts/MortalFont80/01CE.png b/fonts/MortalFont80/01CE.png new file mode 100644 index 000000000..06ea954f7 Binary files /dev/null and b/fonts/MortalFont80/01CE.png differ diff --git a/fonts/MortalFont80/01D0.png b/fonts/MortalFont80/01D0.png new file mode 100644 index 000000000..5c1ae9c04 Binary files /dev/null and b/fonts/MortalFont80/01D0.png differ diff --git a/fonts/MortalFont80/01D1.png b/fonts/MortalFont80/01D1.png new file mode 100644 index 000000000..9f16fdc2b Binary files /dev/null and b/fonts/MortalFont80/01D1.png differ diff --git a/fonts/MortalFont80/01D2.png b/fonts/MortalFont80/01D2.png new file mode 100644 index 000000000..592651525 Binary files /dev/null and b/fonts/MortalFont80/01D2.png differ diff --git a/fonts/MortalFont80/01D4.png b/fonts/MortalFont80/01D4.png new file mode 100644 index 000000000..b4235ec3a Binary files /dev/null and b/fonts/MortalFont80/01D4.png differ diff --git a/fonts/MortalFont80/01D6.png b/fonts/MortalFont80/01D6.png new file mode 100644 index 000000000..c7eecd4e4 Binary files /dev/null and b/fonts/MortalFont80/01D6.png differ diff --git a/fonts/MortalFont80/01D8.png b/fonts/MortalFont80/01D8.png new file mode 100644 index 000000000..9d8a93e58 Binary files /dev/null and b/fonts/MortalFont80/01D8.png differ diff --git a/fonts/MortalFont80/01DA.png b/fonts/MortalFont80/01DA.png new file mode 100644 index 000000000..1ceae0ef9 Binary files /dev/null and b/fonts/MortalFont80/01DA.png differ diff --git a/fonts/MortalFont80/01DC.png b/fonts/MortalFont80/01DC.png new file mode 100644 index 000000000..8070d0fd2 Binary files /dev/null and b/fonts/MortalFont80/01DC.png differ diff --git a/fonts/MortalFont80/01F8.png b/fonts/MortalFont80/01F8.png new file mode 100644 index 000000000..8ef8b7f97 Binary files /dev/null and b/fonts/MortalFont80/01F8.png differ diff --git a/fonts/MortalFont80/01F9.png b/fonts/MortalFont80/01F9.png new file mode 100644 index 000000000..f7c06fe03 Binary files /dev/null and b/fonts/MortalFont80/01F9.png differ diff --git a/fonts/MortalFont80/01FD.png b/fonts/MortalFont80/01FD.png new file mode 100644 index 000000000..f4d24bf3e Binary files /dev/null and b/fonts/MortalFont80/01FD.png differ diff --git a/fonts/MortalFont80/0250.png b/fonts/MortalFont80/0250.png new file mode 100644 index 000000000..3a528db27 Binary files /dev/null and b/fonts/MortalFont80/0250.png differ diff --git a/fonts/MortalFont80/0251.png b/fonts/MortalFont80/0251.png new file mode 100644 index 000000000..f2f4f79e1 Binary files /dev/null and b/fonts/MortalFont80/0251.png differ diff --git a/fonts/MortalFont80/0252.png b/fonts/MortalFont80/0252.png new file mode 100644 index 000000000..5055c6672 Binary files /dev/null and b/fonts/MortalFont80/0252.png differ diff --git a/fonts/MortalFont80/0253.png b/fonts/MortalFont80/0253.png new file mode 100644 index 000000000..c8cd7c5ce Binary files /dev/null and b/fonts/MortalFont80/0253.png differ diff --git a/fonts/MortalFont80/0254.png b/fonts/MortalFont80/0254.png new file mode 100644 index 000000000..51b9628f1 Binary files /dev/null and b/fonts/MortalFont80/0254.png differ diff --git a/fonts/MortalFont80/0255.png b/fonts/MortalFont80/0255.png new file mode 100644 index 000000000..ebb3c7df1 Binary files /dev/null and b/fonts/MortalFont80/0255.png differ diff --git a/fonts/MortalFont80/0256.png b/fonts/MortalFont80/0256.png new file mode 100644 index 000000000..08229ce56 Binary files /dev/null and b/fonts/MortalFont80/0256.png differ diff --git a/fonts/MortalFont80/0257.png b/fonts/MortalFont80/0257.png new file mode 100644 index 000000000..14f5cc898 Binary files /dev/null and b/fonts/MortalFont80/0257.png differ diff --git a/fonts/MortalFont80/0258.png b/fonts/MortalFont80/0258.png new file mode 100644 index 000000000..c6940fe59 Binary files /dev/null and b/fonts/MortalFont80/0258.png differ diff --git a/fonts/MortalFont80/0259.png b/fonts/MortalFont80/0259.png new file mode 100644 index 000000000..ec1a06cf4 Binary files /dev/null and b/fonts/MortalFont80/0259.png differ diff --git a/fonts/MortalFont80/025A.png b/fonts/MortalFont80/025A.png new file mode 100644 index 000000000..6b4d54003 Binary files /dev/null and b/fonts/MortalFont80/025A.png differ diff --git a/fonts/MortalFont80/025C.png b/fonts/MortalFont80/025C.png new file mode 100644 index 000000000..09045d0d9 Binary files /dev/null and b/fonts/MortalFont80/025C.png differ diff --git a/fonts/MortalFont80/025E.png b/fonts/MortalFont80/025E.png new file mode 100644 index 000000000..3e0a1df6b Binary files /dev/null and b/fonts/MortalFont80/025E.png differ diff --git a/fonts/MortalFont80/025F.png b/fonts/MortalFont80/025F.png new file mode 100644 index 000000000..f15fa6caa Binary files /dev/null and b/fonts/MortalFont80/025F.png differ diff --git a/fonts/MortalFont80/0260.png b/fonts/MortalFont80/0260.png new file mode 100644 index 000000000..812034062 Binary files /dev/null and b/fonts/MortalFont80/0260.png differ diff --git a/fonts/MortalFont80/0261.png b/fonts/MortalFont80/0261.png new file mode 100644 index 000000000..37ae5b67f Binary files /dev/null and b/fonts/MortalFont80/0261.png differ diff --git a/fonts/MortalFont80/0264.png b/fonts/MortalFont80/0264.png new file mode 100644 index 000000000..55ffe428f Binary files /dev/null and b/fonts/MortalFont80/0264.png differ diff --git a/fonts/MortalFont80/0265.png b/fonts/MortalFont80/0265.png new file mode 100644 index 000000000..08d43ecbf Binary files /dev/null and b/fonts/MortalFont80/0265.png differ diff --git a/fonts/MortalFont80/0266.png b/fonts/MortalFont80/0266.png new file mode 100644 index 000000000..88d8e6ca9 Binary files /dev/null and b/fonts/MortalFont80/0266.png differ diff --git a/fonts/MortalFont80/0267.png b/fonts/MortalFont80/0267.png new file mode 100644 index 000000000..5ad09ffc5 Binary files /dev/null and b/fonts/MortalFont80/0267.png differ diff --git a/fonts/MortalFont80/0268.png b/fonts/MortalFont80/0268.png new file mode 100644 index 000000000..e494b3bae Binary files /dev/null and b/fonts/MortalFont80/0268.png differ diff --git a/fonts/MortalFont80/026C.png b/fonts/MortalFont80/026C.png new file mode 100644 index 000000000..ced3a7577 Binary files /dev/null and b/fonts/MortalFont80/026C.png differ diff --git a/fonts/MortalFont80/026D.png b/fonts/MortalFont80/026D.png new file mode 100644 index 000000000..545f4cc0e Binary files /dev/null and b/fonts/MortalFont80/026D.png differ diff --git a/fonts/MortalFont80/026E.png b/fonts/MortalFont80/026E.png new file mode 100644 index 000000000..f160c88f2 Binary files /dev/null and b/fonts/MortalFont80/026E.png differ diff --git a/fonts/MortalFont80/026F.png b/fonts/MortalFont80/026F.png new file mode 100644 index 000000000..5c36fd8c7 Binary files /dev/null and b/fonts/MortalFont80/026F.png differ diff --git a/fonts/MortalFont80/0270.png b/fonts/MortalFont80/0270.png new file mode 100644 index 000000000..d57a71e3e Binary files /dev/null and b/fonts/MortalFont80/0270.png differ diff --git a/fonts/MortalFont80/0271.png b/fonts/MortalFont80/0271.png new file mode 100644 index 000000000..ebc9d776a Binary files /dev/null and b/fonts/MortalFont80/0271.png differ diff --git a/fonts/MortalFont80/0272.png b/fonts/MortalFont80/0272.png new file mode 100644 index 000000000..2994f866c Binary files /dev/null and b/fonts/MortalFont80/0272.png differ diff --git a/fonts/MortalFont80/0273.png b/fonts/MortalFont80/0273.png new file mode 100644 index 000000000..c1ac49353 Binary files /dev/null and b/fonts/MortalFont80/0273.png differ diff --git a/fonts/MortalFont80/0275.png b/fonts/MortalFont80/0275.png new file mode 100644 index 000000000..988a6f016 Binary files /dev/null and b/fonts/MortalFont80/0275.png differ diff --git a/fonts/MortalFont80/0279.png b/fonts/MortalFont80/0279.png new file mode 100644 index 000000000..40087a5a6 Binary files /dev/null and b/fonts/MortalFont80/0279.png differ diff --git a/fonts/MortalFont80/027A.png b/fonts/MortalFont80/027A.png new file mode 100644 index 000000000..98ddaf26f Binary files /dev/null and b/fonts/MortalFont80/027A.png differ diff --git a/fonts/MortalFont80/027B.png b/fonts/MortalFont80/027B.png new file mode 100644 index 000000000..16b233e9b Binary files /dev/null and b/fonts/MortalFont80/027B.png differ diff --git a/fonts/MortalFont80/027D.png b/fonts/MortalFont80/027D.png new file mode 100644 index 000000000..f4891436c Binary files /dev/null and b/fonts/MortalFont80/027D.png differ diff --git a/fonts/MortalFont80/027E.png b/fonts/MortalFont80/027E.png new file mode 100644 index 000000000..9d6e9d73e Binary files /dev/null and b/fonts/MortalFont80/027E.png differ diff --git a/fonts/MortalFont80/0281.png b/fonts/MortalFont80/0281.png new file mode 100644 index 000000000..028ac75f6 Binary files /dev/null and b/fonts/MortalFont80/0281.png differ diff --git a/fonts/MortalFont80/0282.png b/fonts/MortalFont80/0282.png new file mode 100644 index 000000000..f186e4bc0 Binary files /dev/null and b/fonts/MortalFont80/0282.png differ diff --git a/fonts/MortalFont80/0283.png b/fonts/MortalFont80/0283.png new file mode 100644 index 000000000..ef115fee7 Binary files /dev/null and b/fonts/MortalFont80/0283.png differ diff --git a/fonts/MortalFont80/0284.png b/fonts/MortalFont80/0284.png new file mode 100644 index 000000000..80d8db2ac Binary files /dev/null and b/fonts/MortalFont80/0284.png differ diff --git a/fonts/MortalFont80/0288.png b/fonts/MortalFont80/0288.png new file mode 100644 index 000000000..0cf590a8b Binary files /dev/null and b/fonts/MortalFont80/0288.png differ diff --git a/fonts/MortalFont80/0289.png b/fonts/MortalFont80/0289.png new file mode 100644 index 000000000..3462afb06 Binary files /dev/null and b/fonts/MortalFont80/0289.png differ diff --git a/fonts/MortalFont80/028A.png b/fonts/MortalFont80/028A.png new file mode 100644 index 000000000..4331a7458 Binary files /dev/null and b/fonts/MortalFont80/028A.png differ diff --git a/fonts/MortalFont80/028B.png b/fonts/MortalFont80/028B.png new file mode 100644 index 000000000..3f954d342 Binary files /dev/null and b/fonts/MortalFont80/028B.png differ diff --git a/fonts/MortalFont80/028C.png b/fonts/MortalFont80/028C.png new file mode 100644 index 000000000..26b58b2ca Binary files /dev/null and b/fonts/MortalFont80/028C.png differ diff --git a/fonts/MortalFont80/028D.png b/fonts/MortalFont80/028D.png new file mode 100644 index 000000000..5ac8baaa5 Binary files /dev/null and b/fonts/MortalFont80/028D.png differ diff --git a/fonts/MortalFont80/028E.png b/fonts/MortalFont80/028E.png new file mode 100644 index 000000000..b7531a670 Binary files /dev/null and b/fonts/MortalFont80/028E.png differ diff --git a/fonts/MortalFont80/0290.png b/fonts/MortalFont80/0290.png new file mode 100644 index 000000000..903422f79 Binary files /dev/null and b/fonts/MortalFont80/0290.png differ diff --git a/fonts/MortalFont80/0291.png b/fonts/MortalFont80/0291.png new file mode 100644 index 000000000..3597ce8f6 Binary files /dev/null and b/fonts/MortalFont80/0291.png differ diff --git a/fonts/MortalFont80/0292.png b/fonts/MortalFont80/0292.png new file mode 100644 index 000000000..236b23b63 Binary files /dev/null and b/fonts/MortalFont80/0292.png differ diff --git a/fonts/MortalFont80/0294.png b/fonts/MortalFont80/0294.png new file mode 100644 index 000000000..87eee7980 Binary files /dev/null and b/fonts/MortalFont80/0294.png differ diff --git a/fonts/MortalFont80/0295.png b/fonts/MortalFont80/0295.png new file mode 100644 index 000000000..965ac3eb6 Binary files /dev/null and b/fonts/MortalFont80/0295.png differ diff --git a/fonts/MortalFont80/0298.png b/fonts/MortalFont80/0298.png new file mode 100644 index 000000000..1afa70c7a Binary files /dev/null and b/fonts/MortalFont80/0298.png differ diff --git a/fonts/MortalFont80/029D.png b/fonts/MortalFont80/029D.png new file mode 100644 index 000000000..8cea3a57b Binary files /dev/null and b/fonts/MortalFont80/029D.png differ diff --git a/fonts/MortalFont80/02A1.png b/fonts/MortalFont80/02A1.png new file mode 100644 index 000000000..b9b44b472 Binary files /dev/null and b/fonts/MortalFont80/02A1.png differ diff --git a/fonts/MortalFont80/02A2.png b/fonts/MortalFont80/02A2.png new file mode 100644 index 000000000..c7ce3b5bc Binary files /dev/null and b/fonts/MortalFont80/02A2.png differ diff --git a/fonts/MortalFont80/02C7.png b/fonts/MortalFont80/02C7.png new file mode 100644 index 000000000..6ba5223ed Binary files /dev/null and b/fonts/MortalFont80/02C7.png differ diff --git a/fonts/MortalFont80/02C8.png b/fonts/MortalFont80/02C8.png new file mode 100644 index 000000000..5ae5f2c49 Binary files /dev/null and b/fonts/MortalFont80/02C8.png differ diff --git a/fonts/MortalFont80/02CC.png b/fonts/MortalFont80/02CC.png new file mode 100644 index 000000000..6b678fee5 Binary files /dev/null and b/fonts/MortalFont80/02CC.png differ diff --git a/fonts/MortalFont80/02D0.png b/fonts/MortalFont80/02D0.png new file mode 100644 index 000000000..836dd6b4b Binary files /dev/null and b/fonts/MortalFont80/02D0.png differ diff --git a/fonts/MortalFont80/02D1.png b/fonts/MortalFont80/02D1.png new file mode 100644 index 000000000..2bdf9c363 Binary files /dev/null and b/fonts/MortalFont80/02D1.png differ diff --git a/fonts/MortalFont80/02D8.png b/fonts/MortalFont80/02D8.png new file mode 100644 index 000000000..1cb542263 Binary files /dev/null and b/fonts/MortalFont80/02D8.png differ diff --git a/fonts/MortalFont80/02D9.png b/fonts/MortalFont80/02D9.png new file mode 100644 index 000000000..2bb434ce7 Binary files /dev/null and b/fonts/MortalFont80/02D9.png differ diff --git a/fonts/MortalFont80/02DB.png b/fonts/MortalFont80/02DB.png new file mode 100644 index 000000000..b6639c74e Binary files /dev/null and b/fonts/MortalFont80/02DB.png differ diff --git a/fonts/MortalFont80/02DC.png b/fonts/MortalFont80/02DC.png new file mode 100644 index 000000000..cd4391b01 Binary files /dev/null and b/fonts/MortalFont80/02DC.png differ diff --git a/fonts/MortalFont80/02DD.png b/fonts/MortalFont80/02DD.png new file mode 100644 index 000000000..565919136 Binary files /dev/null and b/fonts/MortalFont80/02DD.png differ diff --git a/fonts/MortalFont80/02DE.png b/fonts/MortalFont80/02DE.png new file mode 100644 index 000000000..d34d70d79 Binary files /dev/null and b/fonts/MortalFont80/02DE.png differ diff --git a/fonts/MortalFont80/02E5.png b/fonts/MortalFont80/02E5.png new file mode 100644 index 000000000..532711d6c Binary files /dev/null and b/fonts/MortalFont80/02E5.png differ diff --git a/fonts/MortalFont80/02E6.png b/fonts/MortalFont80/02E6.png new file mode 100644 index 000000000..54d6f1e4f Binary files /dev/null and b/fonts/MortalFont80/02E6.png differ diff --git a/fonts/MortalFont80/02E7.png b/fonts/MortalFont80/02E7.png new file mode 100644 index 000000000..054ae3bd7 Binary files /dev/null and b/fonts/MortalFont80/02E7.png differ diff --git a/fonts/MortalFont80/02E8.png b/fonts/MortalFont80/02E8.png new file mode 100644 index 000000000..89e6f8acc Binary files /dev/null and b/fonts/MortalFont80/02E8.png differ diff --git a/fonts/MortalFont80/02E9.png b/fonts/MortalFont80/02E9.png new file mode 100644 index 000000000..b8c0ffeaf Binary files /dev/null and b/fonts/MortalFont80/02E9.png differ diff --git a/fonts/MortalFont80/0300.png b/fonts/MortalFont80/0300.png new file mode 100644 index 000000000..4803daa27 Binary files /dev/null and b/fonts/MortalFont80/0300.png differ diff --git a/fonts/MortalFont80/0301.png b/fonts/MortalFont80/0301.png new file mode 100644 index 000000000..4f2a9e0fe Binary files /dev/null and b/fonts/MortalFont80/0301.png differ diff --git a/fonts/MortalFont80/0302.png b/fonts/MortalFont80/0302.png new file mode 100644 index 000000000..e58f95d3e Binary files /dev/null and b/fonts/MortalFont80/0302.png differ diff --git a/fonts/MortalFont80/0303.png b/fonts/MortalFont80/0303.png new file mode 100644 index 000000000..138acc1aa Binary files /dev/null and b/fonts/MortalFont80/0303.png differ diff --git a/fonts/MortalFont80/0304.png b/fonts/MortalFont80/0304.png new file mode 100644 index 000000000..539a4d2b5 Binary files /dev/null and b/fonts/MortalFont80/0304.png differ diff --git a/fonts/MortalFont80/0306.png b/fonts/MortalFont80/0306.png new file mode 100644 index 000000000..01c786888 Binary files /dev/null and b/fonts/MortalFont80/0306.png differ diff --git a/fonts/MortalFont80/0308.png b/fonts/MortalFont80/0308.png new file mode 100644 index 000000000..ed19d638d Binary files /dev/null and b/fonts/MortalFont80/0308.png differ diff --git a/fonts/MortalFont80/030B.png b/fonts/MortalFont80/030B.png new file mode 100644 index 000000000..666605882 Binary files /dev/null and b/fonts/MortalFont80/030B.png differ diff --git a/fonts/MortalFont80/030C.png b/fonts/MortalFont80/030C.png new file mode 100644 index 000000000..f2b032fb8 Binary files /dev/null and b/fonts/MortalFont80/030C.png differ diff --git a/fonts/MortalFont80/030F.png b/fonts/MortalFont80/030F.png new file mode 100644 index 000000000..9bda36969 Binary files /dev/null and b/fonts/MortalFont80/030F.png differ diff --git a/fonts/MortalFont80/0318.png b/fonts/MortalFont80/0318.png new file mode 100644 index 000000000..0c88a1aca Binary files /dev/null and b/fonts/MortalFont80/0318.png differ diff --git a/fonts/MortalFont80/0319.png b/fonts/MortalFont80/0319.png new file mode 100644 index 000000000..cd26317aa Binary files /dev/null and b/fonts/MortalFont80/0319.png differ diff --git a/fonts/MortalFont80/031A.png b/fonts/MortalFont80/031A.png new file mode 100644 index 000000000..bb7e23241 Binary files /dev/null and b/fonts/MortalFont80/031A.png differ diff --git a/fonts/MortalFont80/031C.png b/fonts/MortalFont80/031C.png new file mode 100644 index 000000000..5351c7afe Binary files /dev/null and b/fonts/MortalFont80/031C.png differ diff --git a/fonts/MortalFont80/031D.png b/fonts/MortalFont80/031D.png new file mode 100644 index 000000000..87e4dac7b Binary files /dev/null and b/fonts/MortalFont80/031D.png differ diff --git a/fonts/MortalFont80/031E.png b/fonts/MortalFont80/031E.png new file mode 100644 index 000000000..60d4418ec Binary files /dev/null and b/fonts/MortalFont80/031E.png differ diff --git a/fonts/MortalFont80/031F.png b/fonts/MortalFont80/031F.png new file mode 100644 index 000000000..ef84ea33c Binary files /dev/null and b/fonts/MortalFont80/031F.png differ diff --git a/fonts/MortalFont80/0320.png b/fonts/MortalFont80/0320.png new file mode 100644 index 000000000..4888f47ac Binary files /dev/null and b/fonts/MortalFont80/0320.png differ diff --git a/fonts/MortalFont80/0324.png b/fonts/MortalFont80/0324.png new file mode 100644 index 000000000..2b9e7b2af Binary files /dev/null and b/fonts/MortalFont80/0324.png differ diff --git a/fonts/MortalFont80/0325.png b/fonts/MortalFont80/0325.png new file mode 100644 index 000000000..1276ed659 Binary files /dev/null and b/fonts/MortalFont80/0325.png differ diff --git a/fonts/MortalFont80/0329.png b/fonts/MortalFont80/0329.png new file mode 100644 index 000000000..6b678fee5 Binary files /dev/null and b/fonts/MortalFont80/0329.png differ diff --git a/fonts/MortalFont80/032A.png b/fonts/MortalFont80/032A.png new file mode 100644 index 000000000..a12df8cde Binary files /dev/null and b/fonts/MortalFont80/032A.png differ diff --git a/fonts/MortalFont80/032C.png b/fonts/MortalFont80/032C.png new file mode 100644 index 000000000..932c6a91f Binary files /dev/null and b/fonts/MortalFont80/032C.png differ diff --git a/fonts/MortalFont80/032F.png b/fonts/MortalFont80/032F.png new file mode 100644 index 000000000..e5e23d7fd Binary files /dev/null and b/fonts/MortalFont80/032F.png differ diff --git a/fonts/MortalFont80/0330.png b/fonts/MortalFont80/0330.png new file mode 100644 index 000000000..c145cfd8c Binary files /dev/null and b/fonts/MortalFont80/0330.png differ diff --git a/fonts/MortalFont80/0334.png b/fonts/MortalFont80/0334.png new file mode 100644 index 000000000..c21e6c820 Binary files /dev/null and b/fonts/MortalFont80/0334.png differ diff --git a/fonts/MortalFont80/0339.png b/fonts/MortalFont80/0339.png new file mode 100644 index 000000000..ba369763c Binary files /dev/null and b/fonts/MortalFont80/0339.png differ diff --git a/fonts/MortalFont80/033A.png b/fonts/MortalFont80/033A.png new file mode 100644 index 000000000..7200fb72f Binary files /dev/null and b/fonts/MortalFont80/033A.png differ diff --git a/fonts/MortalFont80/033B.png b/fonts/MortalFont80/033B.png new file mode 100644 index 000000000..0d05ba1b7 Binary files /dev/null and b/fonts/MortalFont80/033B.png differ diff --git a/fonts/MortalFont80/033C.png b/fonts/MortalFont80/033C.png new file mode 100644 index 000000000..1c357533a Binary files /dev/null and b/fonts/MortalFont80/033C.png differ diff --git a/fonts/MortalFont80/033D.png b/fonts/MortalFont80/033D.png new file mode 100644 index 000000000..7f5a97fe8 Binary files /dev/null and b/fonts/MortalFont80/033D.png differ diff --git a/fonts/MortalFont80/0361.png b/fonts/MortalFont80/0361.png new file mode 100644 index 000000000..ce7ce9d44 Binary files /dev/null and b/fonts/MortalFont80/0361.png differ diff --git a/fonts/MortalFont80/0391.png b/fonts/MortalFont80/0391.png new file mode 100644 index 000000000..665cda72a Binary files /dev/null and b/fonts/MortalFont80/0391.png differ diff --git a/fonts/MortalFont80/0392.png b/fonts/MortalFont80/0392.png new file mode 100644 index 000000000..e0e689c33 Binary files /dev/null and b/fonts/MortalFont80/0392.png differ diff --git a/fonts/MortalFont80/0393.png b/fonts/MortalFont80/0393.png new file mode 100644 index 000000000..350809367 Binary files /dev/null and b/fonts/MortalFont80/0393.png differ diff --git a/fonts/MortalFont80/0394.png b/fonts/MortalFont80/0394.png new file mode 100644 index 000000000..0a3bdae2c Binary files /dev/null and b/fonts/MortalFont80/0394.png differ diff --git a/fonts/MortalFont80/0395.png b/fonts/MortalFont80/0395.png new file mode 100644 index 000000000..1b44a8055 Binary files /dev/null and b/fonts/MortalFont80/0395.png differ diff --git a/fonts/MortalFont80/0396.png b/fonts/MortalFont80/0396.png new file mode 100644 index 000000000..b90dfd662 Binary files /dev/null and b/fonts/MortalFont80/0396.png differ diff --git a/fonts/MortalFont80/0397.png b/fonts/MortalFont80/0397.png new file mode 100644 index 000000000..b7d1a8f5f Binary files /dev/null and b/fonts/MortalFont80/0397.png differ diff --git a/fonts/MortalFont80/0398.png b/fonts/MortalFont80/0398.png new file mode 100644 index 000000000..f47e05754 Binary files /dev/null and b/fonts/MortalFont80/0398.png differ diff --git a/fonts/MortalFont80/0399.png b/fonts/MortalFont80/0399.png new file mode 100644 index 000000000..d4d4e98c1 Binary files /dev/null and b/fonts/MortalFont80/0399.png differ diff --git a/fonts/MortalFont80/039A.png b/fonts/MortalFont80/039A.png new file mode 100644 index 000000000..95fe4d970 Binary files /dev/null and b/fonts/MortalFont80/039A.png differ diff --git a/fonts/MortalFont80/039B.png b/fonts/MortalFont80/039B.png new file mode 100644 index 000000000..ca992a12e Binary files /dev/null and b/fonts/MortalFont80/039B.png differ diff --git a/fonts/MortalFont80/039C.png b/fonts/MortalFont80/039C.png new file mode 100644 index 000000000..7916b81ad Binary files /dev/null and b/fonts/MortalFont80/039C.png differ diff --git a/fonts/MortalFont80/039D.png b/fonts/MortalFont80/039D.png new file mode 100644 index 000000000..bcf6b77d2 Binary files /dev/null and b/fonts/MortalFont80/039D.png differ diff --git a/fonts/MortalFont80/039E.png b/fonts/MortalFont80/039E.png new file mode 100644 index 000000000..7660f176b Binary files /dev/null and b/fonts/MortalFont80/039E.png differ diff --git a/fonts/MortalFont80/039F.png b/fonts/MortalFont80/039F.png new file mode 100644 index 000000000..09a8947c8 Binary files /dev/null and b/fonts/MortalFont80/039F.png differ diff --git a/fonts/MortalFont80/03A0.png b/fonts/MortalFont80/03A0.png new file mode 100644 index 000000000..a3c4ed693 Binary files /dev/null and b/fonts/MortalFont80/03A0.png differ diff --git a/fonts/MortalFont80/03A1.png b/fonts/MortalFont80/03A1.png new file mode 100644 index 000000000..103c27661 Binary files /dev/null and b/fonts/MortalFont80/03A1.png differ diff --git a/fonts/MortalFont80/03A3.png b/fonts/MortalFont80/03A3.png new file mode 100644 index 000000000..8b7d8864c Binary files /dev/null and b/fonts/MortalFont80/03A3.png differ diff --git a/fonts/MortalFont80/03A4.png b/fonts/MortalFont80/03A4.png new file mode 100644 index 000000000..e251580ab Binary files /dev/null and b/fonts/MortalFont80/03A4.png differ diff --git a/fonts/MortalFont80/03A5.png b/fonts/MortalFont80/03A5.png new file mode 100644 index 000000000..a67aa4e30 Binary files /dev/null and b/fonts/MortalFont80/03A5.png differ diff --git a/fonts/MortalFont80/03A6.png b/fonts/MortalFont80/03A6.png new file mode 100644 index 000000000..e7ecb5f5e Binary files /dev/null and b/fonts/MortalFont80/03A6.png differ diff --git a/fonts/MortalFont80/03A7.png b/fonts/MortalFont80/03A7.png new file mode 100644 index 000000000..dd8e5bd6d Binary files /dev/null and b/fonts/MortalFont80/03A7.png differ diff --git a/fonts/MortalFont80/03A8.png b/fonts/MortalFont80/03A8.png new file mode 100644 index 000000000..47f1fac3f Binary files /dev/null and b/fonts/MortalFont80/03A8.png differ diff --git a/fonts/MortalFont80/03A9.png b/fonts/MortalFont80/03A9.png new file mode 100644 index 000000000..3d0c11b06 Binary files /dev/null and b/fonts/MortalFont80/03A9.png differ diff --git a/fonts/MortalFont80/03B1.png b/fonts/MortalFont80/03B1.png new file mode 100644 index 000000000..478564e7d Binary files /dev/null and b/fonts/MortalFont80/03B1.png differ diff --git a/fonts/MortalFont80/03B2.png b/fonts/MortalFont80/03B2.png new file mode 100644 index 000000000..bcede64ea Binary files /dev/null and b/fonts/MortalFont80/03B2.png differ diff --git a/fonts/MortalFont80/03B3.png b/fonts/MortalFont80/03B3.png new file mode 100644 index 000000000..b2a48a7f0 Binary files /dev/null and b/fonts/MortalFont80/03B3.png differ diff --git a/fonts/MortalFont80/03B4.png b/fonts/MortalFont80/03B4.png new file mode 100644 index 000000000..4f7ba2eb4 Binary files /dev/null and b/fonts/MortalFont80/03B4.png differ diff --git a/fonts/MortalFont80/03B5.png b/fonts/MortalFont80/03B5.png new file mode 100644 index 000000000..75267885a Binary files /dev/null and b/fonts/MortalFont80/03B5.png differ diff --git a/fonts/MortalFont80/03B6.png b/fonts/MortalFont80/03B6.png new file mode 100644 index 000000000..5e2f861ff Binary files /dev/null and b/fonts/MortalFont80/03B6.png differ diff --git a/fonts/MortalFont80/03B7.png b/fonts/MortalFont80/03B7.png new file mode 100644 index 000000000..16572feb0 Binary files /dev/null and b/fonts/MortalFont80/03B7.png differ diff --git a/fonts/MortalFont80/03B8.png b/fonts/MortalFont80/03B8.png new file mode 100644 index 000000000..25ed22512 Binary files /dev/null and b/fonts/MortalFont80/03B8.png differ diff --git a/fonts/MortalFont80/03B9.png b/fonts/MortalFont80/03B9.png new file mode 100644 index 000000000..29d344032 Binary files /dev/null and b/fonts/MortalFont80/03B9.png differ diff --git a/fonts/MortalFont80/03BA.png b/fonts/MortalFont80/03BA.png new file mode 100644 index 000000000..4a6c67e52 Binary files /dev/null and b/fonts/MortalFont80/03BA.png differ diff --git a/fonts/MortalFont80/03BB.png b/fonts/MortalFont80/03BB.png new file mode 100644 index 000000000..adfab9d5a Binary files /dev/null and b/fonts/MortalFont80/03BB.png differ diff --git a/fonts/MortalFont80/03BC.png b/fonts/MortalFont80/03BC.png new file mode 100644 index 000000000..627ceac06 Binary files /dev/null and b/fonts/MortalFont80/03BC.png differ diff --git a/fonts/MortalFont80/03BD.png b/fonts/MortalFont80/03BD.png new file mode 100644 index 000000000..569dfe710 Binary files /dev/null and b/fonts/MortalFont80/03BD.png differ diff --git a/fonts/MortalFont80/03BE.png b/fonts/MortalFont80/03BE.png new file mode 100644 index 000000000..3f9f728e8 Binary files /dev/null and b/fonts/MortalFont80/03BE.png differ diff --git a/fonts/MortalFont80/03BF.png b/fonts/MortalFont80/03BF.png new file mode 100644 index 000000000..2f110d6c6 Binary files /dev/null and b/fonts/MortalFont80/03BF.png differ diff --git a/fonts/MortalFont80/03C0.png b/fonts/MortalFont80/03C0.png new file mode 100644 index 000000000..4fd71baa2 Binary files /dev/null and b/fonts/MortalFont80/03C0.png differ diff --git a/fonts/MortalFont80/03C1.png b/fonts/MortalFont80/03C1.png new file mode 100644 index 000000000..f1f6d83aa Binary files /dev/null and b/fonts/MortalFont80/03C1.png differ diff --git a/fonts/MortalFont80/03C2.png b/fonts/MortalFont80/03C2.png new file mode 100644 index 000000000..a4fb379bd Binary files /dev/null and b/fonts/MortalFont80/03C2.png differ diff --git a/fonts/MortalFont80/03C3.png b/fonts/MortalFont80/03C3.png new file mode 100644 index 000000000..262de232e Binary files /dev/null and b/fonts/MortalFont80/03C3.png differ diff --git a/fonts/MortalFont80/03C4.png b/fonts/MortalFont80/03C4.png new file mode 100644 index 000000000..0a4de2ce3 Binary files /dev/null and b/fonts/MortalFont80/03C4.png differ diff --git a/fonts/MortalFont80/03C5.png b/fonts/MortalFont80/03C5.png new file mode 100644 index 000000000..10d534d8f Binary files /dev/null and b/fonts/MortalFont80/03C5.png differ diff --git a/fonts/MortalFont80/03C6.png b/fonts/MortalFont80/03C6.png new file mode 100644 index 000000000..93e539a0e Binary files /dev/null and b/fonts/MortalFont80/03C6.png differ diff --git a/fonts/MortalFont80/03C7.png b/fonts/MortalFont80/03C7.png new file mode 100644 index 000000000..13c0c096a Binary files /dev/null and b/fonts/MortalFont80/03C7.png differ diff --git a/fonts/MortalFont80/03C8.png b/fonts/MortalFont80/03C8.png new file mode 100644 index 000000000..af8ae2bd8 Binary files /dev/null and b/fonts/MortalFont80/03C8.png differ diff --git a/fonts/MortalFont80/03C9.png b/fonts/MortalFont80/03C9.png new file mode 100644 index 000000000..e77e1b03f Binary files /dev/null and b/fonts/MortalFont80/03C9.png differ diff --git a/fonts/MortalFont80/0401.png b/fonts/MortalFont80/0401.png new file mode 100644 index 000000000..255211210 Binary files /dev/null and b/fonts/MortalFont80/0401.png differ diff --git a/fonts/MortalFont80/0410.png b/fonts/MortalFont80/0410.png new file mode 100644 index 000000000..665cda72a Binary files /dev/null and b/fonts/MortalFont80/0410.png differ diff --git a/fonts/MortalFont80/0411.png b/fonts/MortalFont80/0411.png new file mode 100644 index 000000000..2976bcb7d Binary files /dev/null and b/fonts/MortalFont80/0411.png differ diff --git a/fonts/MortalFont80/0412.png b/fonts/MortalFont80/0412.png new file mode 100644 index 000000000..e0e689c33 Binary files /dev/null and b/fonts/MortalFont80/0412.png differ diff --git a/fonts/MortalFont80/0413.png b/fonts/MortalFont80/0413.png new file mode 100644 index 000000000..350809367 Binary files /dev/null and b/fonts/MortalFont80/0413.png differ diff --git a/fonts/MortalFont80/0414.png b/fonts/MortalFont80/0414.png new file mode 100644 index 000000000..fe33ee569 Binary files /dev/null and b/fonts/MortalFont80/0414.png differ diff --git a/fonts/MortalFont80/0415.png b/fonts/MortalFont80/0415.png new file mode 100644 index 000000000..1b44a8055 Binary files /dev/null and b/fonts/MortalFont80/0415.png differ diff --git a/fonts/MortalFont80/0416.png b/fonts/MortalFont80/0416.png new file mode 100644 index 000000000..3d30e33e4 Binary files /dev/null and b/fonts/MortalFont80/0416.png differ diff --git a/fonts/MortalFont80/0417.png b/fonts/MortalFont80/0417.png new file mode 100644 index 000000000..a30281ade Binary files /dev/null and b/fonts/MortalFont80/0417.png differ diff --git a/fonts/MortalFont80/0418.png b/fonts/MortalFont80/0418.png new file mode 100644 index 000000000..7b176b67b Binary files /dev/null and b/fonts/MortalFont80/0418.png differ diff --git a/fonts/MortalFont80/0419.png b/fonts/MortalFont80/0419.png new file mode 100644 index 000000000..a23561448 Binary files /dev/null and b/fonts/MortalFont80/0419.png differ diff --git a/fonts/MortalFont80/041A.png b/fonts/MortalFont80/041A.png new file mode 100644 index 000000000..bfde14e28 Binary files /dev/null and b/fonts/MortalFont80/041A.png differ diff --git a/fonts/MortalFont80/041B.png b/fonts/MortalFont80/041B.png new file mode 100644 index 000000000..449bd42c2 Binary files /dev/null and b/fonts/MortalFont80/041B.png differ diff --git a/fonts/MortalFont80/041C.png b/fonts/MortalFont80/041C.png new file mode 100644 index 000000000..7916b81ad Binary files /dev/null and b/fonts/MortalFont80/041C.png differ diff --git a/fonts/MortalFont80/041D.png b/fonts/MortalFont80/041D.png new file mode 100644 index 000000000..b7d1a8f5f Binary files /dev/null and b/fonts/MortalFont80/041D.png differ diff --git a/fonts/MortalFont80/041E.png b/fonts/MortalFont80/041E.png new file mode 100644 index 000000000..09a8947c8 Binary files /dev/null and b/fonts/MortalFont80/041E.png differ diff --git a/fonts/MortalFont80/041F.png b/fonts/MortalFont80/041F.png new file mode 100644 index 000000000..a3c4ed693 Binary files /dev/null and b/fonts/MortalFont80/041F.png differ diff --git a/fonts/MortalFont80/0420.png b/fonts/MortalFont80/0420.png new file mode 100644 index 000000000..103c27661 Binary files /dev/null and b/fonts/MortalFont80/0420.png differ diff --git a/fonts/MortalFont80/0421.png b/fonts/MortalFont80/0421.png new file mode 100644 index 000000000..25421a8f0 Binary files /dev/null and b/fonts/MortalFont80/0421.png differ diff --git a/fonts/MortalFont80/0422.png b/fonts/MortalFont80/0422.png new file mode 100644 index 000000000..e251580ab Binary files /dev/null and b/fonts/MortalFont80/0422.png differ diff --git a/fonts/MortalFont80/0423.png b/fonts/MortalFont80/0423.png new file mode 100644 index 000000000..80c3b0af8 Binary files /dev/null and b/fonts/MortalFont80/0423.png differ diff --git a/fonts/MortalFont80/0424.png b/fonts/MortalFont80/0424.png new file mode 100644 index 000000000..f76e85684 Binary files /dev/null and b/fonts/MortalFont80/0424.png differ diff --git a/fonts/MortalFont80/0425.png b/fonts/MortalFont80/0425.png new file mode 100644 index 000000000..dd8e5bd6d Binary files /dev/null and b/fonts/MortalFont80/0425.png differ diff --git a/fonts/MortalFont80/0426.png b/fonts/MortalFont80/0426.png new file mode 100644 index 000000000..d774566a7 Binary files /dev/null and b/fonts/MortalFont80/0426.png differ diff --git a/fonts/MortalFont80/0427.png b/fonts/MortalFont80/0427.png new file mode 100644 index 000000000..bf48f1ba2 Binary files /dev/null and b/fonts/MortalFont80/0427.png differ diff --git a/fonts/MortalFont80/0428.png b/fonts/MortalFont80/0428.png new file mode 100644 index 000000000..9c4571461 Binary files /dev/null and b/fonts/MortalFont80/0428.png differ diff --git a/fonts/MortalFont80/0429.png b/fonts/MortalFont80/0429.png new file mode 100644 index 000000000..1081af432 Binary files /dev/null and b/fonts/MortalFont80/0429.png differ diff --git a/fonts/MortalFont80/042A.png b/fonts/MortalFont80/042A.png new file mode 100644 index 000000000..7be63b097 Binary files /dev/null and b/fonts/MortalFont80/042A.png differ diff --git a/fonts/MortalFont80/042B.png b/fonts/MortalFont80/042B.png new file mode 100644 index 000000000..df389f733 Binary files /dev/null and b/fonts/MortalFont80/042B.png differ diff --git a/fonts/MortalFont80/042C.png b/fonts/MortalFont80/042C.png new file mode 100644 index 000000000..f18fb7c74 Binary files /dev/null and b/fonts/MortalFont80/042C.png differ diff --git a/fonts/MortalFont80/042D.png b/fonts/MortalFont80/042D.png new file mode 100644 index 000000000..3532a9130 Binary files /dev/null and b/fonts/MortalFont80/042D.png differ diff --git a/fonts/MortalFont80/042E.png b/fonts/MortalFont80/042E.png new file mode 100644 index 000000000..01d2204f5 Binary files /dev/null and b/fonts/MortalFont80/042E.png differ diff --git a/fonts/MortalFont80/042F.png b/fonts/MortalFont80/042F.png new file mode 100644 index 000000000..031f5a371 Binary files /dev/null and b/fonts/MortalFont80/042F.png differ diff --git a/fonts/MortalFont80/0430.png b/fonts/MortalFont80/0430.png new file mode 100644 index 000000000..bac332dd0 Binary files /dev/null and b/fonts/MortalFont80/0430.png differ diff --git a/fonts/MortalFont80/0431.png b/fonts/MortalFont80/0431.png new file mode 100644 index 000000000..7e33add62 Binary files /dev/null and b/fonts/MortalFont80/0431.png differ diff --git a/fonts/MortalFont80/0432.png b/fonts/MortalFont80/0432.png new file mode 100644 index 000000000..9ad691d06 Binary files /dev/null and b/fonts/MortalFont80/0432.png differ diff --git a/fonts/MortalFont80/0433.png b/fonts/MortalFont80/0433.png new file mode 100644 index 000000000..8c742cb52 Binary files /dev/null and b/fonts/MortalFont80/0433.png differ diff --git a/fonts/MortalFont80/0434.png b/fonts/MortalFont80/0434.png new file mode 100644 index 000000000..4f563b332 Binary files /dev/null and b/fonts/MortalFont80/0434.png differ diff --git a/fonts/MortalFont80/0435.png b/fonts/MortalFont80/0435.png new file mode 100644 index 000000000..a63cedc37 Binary files /dev/null and b/fonts/MortalFont80/0435.png differ diff --git a/fonts/MortalFont80/0436.png b/fonts/MortalFont80/0436.png new file mode 100644 index 000000000..d572be3fa Binary files /dev/null and b/fonts/MortalFont80/0436.png differ diff --git a/fonts/MortalFont80/0437.png b/fonts/MortalFont80/0437.png new file mode 100644 index 000000000..779841ed2 Binary files /dev/null and b/fonts/MortalFont80/0437.png differ diff --git a/fonts/MortalFont80/0438.png b/fonts/MortalFont80/0438.png new file mode 100644 index 000000000..81ecfe627 Binary files /dev/null and b/fonts/MortalFont80/0438.png differ diff --git a/fonts/MortalFont80/0439.png b/fonts/MortalFont80/0439.png new file mode 100644 index 000000000..a47ac0498 Binary files /dev/null and b/fonts/MortalFont80/0439.png differ diff --git a/fonts/MortalFont80/043A.png b/fonts/MortalFont80/043A.png new file mode 100644 index 000000000..2f69a45f4 Binary files /dev/null and b/fonts/MortalFont80/043A.png differ diff --git a/fonts/MortalFont80/043B.png b/fonts/MortalFont80/043B.png new file mode 100644 index 000000000..884d608b3 Binary files /dev/null and b/fonts/MortalFont80/043B.png differ diff --git a/fonts/MortalFont80/043C.png b/fonts/MortalFont80/043C.png new file mode 100644 index 000000000..dd3e23f88 Binary files /dev/null and b/fonts/MortalFont80/043C.png differ diff --git a/fonts/MortalFont80/043D.png b/fonts/MortalFont80/043D.png new file mode 100644 index 000000000..6ce9c5aae Binary files /dev/null and b/fonts/MortalFont80/043D.png differ diff --git a/fonts/MortalFont80/043E.png b/fonts/MortalFont80/043E.png new file mode 100644 index 000000000..51d6a8e84 Binary files /dev/null and b/fonts/MortalFont80/043E.png differ diff --git a/fonts/MortalFont80/043F.png b/fonts/MortalFont80/043F.png new file mode 100644 index 000000000..c8ff1c48f Binary files /dev/null and b/fonts/MortalFont80/043F.png differ diff --git a/fonts/MortalFont80/0440.png b/fonts/MortalFont80/0440.png new file mode 100644 index 000000000..d70d694e6 Binary files /dev/null and b/fonts/MortalFont80/0440.png differ diff --git a/fonts/MortalFont80/0441.png b/fonts/MortalFont80/0441.png new file mode 100644 index 000000000..0b732d32c Binary files /dev/null and b/fonts/MortalFont80/0441.png differ diff --git a/fonts/MortalFont80/0442.png b/fonts/MortalFont80/0442.png new file mode 100644 index 000000000..0ea7ecd47 Binary files /dev/null and b/fonts/MortalFont80/0442.png differ diff --git a/fonts/MortalFont80/0443.png b/fonts/MortalFont80/0443.png new file mode 100644 index 000000000..bb6f7e3a5 Binary files /dev/null and b/fonts/MortalFont80/0443.png differ diff --git a/fonts/MortalFont80/0444.png b/fonts/MortalFont80/0444.png new file mode 100644 index 000000000..11a798d54 Binary files /dev/null and b/fonts/MortalFont80/0444.png differ diff --git a/fonts/MortalFont80/0445.png b/fonts/MortalFont80/0445.png new file mode 100644 index 000000000..54e5b8660 Binary files /dev/null and b/fonts/MortalFont80/0445.png differ diff --git a/fonts/MortalFont80/0446.png b/fonts/MortalFont80/0446.png new file mode 100644 index 000000000..0f3655848 Binary files /dev/null and b/fonts/MortalFont80/0446.png differ diff --git a/fonts/MortalFont80/0447.png b/fonts/MortalFont80/0447.png new file mode 100644 index 000000000..a37a239a9 Binary files /dev/null and b/fonts/MortalFont80/0447.png differ diff --git a/fonts/MortalFont80/0448.png b/fonts/MortalFont80/0448.png new file mode 100644 index 000000000..83742ee0c Binary files /dev/null and b/fonts/MortalFont80/0448.png differ diff --git a/fonts/MortalFont80/0449.png b/fonts/MortalFont80/0449.png new file mode 100644 index 000000000..3e3439b04 Binary files /dev/null and b/fonts/MortalFont80/0449.png differ diff --git a/fonts/MortalFont80/044A.png b/fonts/MortalFont80/044A.png new file mode 100644 index 000000000..fbce144b9 Binary files /dev/null and b/fonts/MortalFont80/044A.png differ diff --git a/fonts/MortalFont80/044B.png b/fonts/MortalFont80/044B.png new file mode 100644 index 000000000..7eaf685a1 Binary files /dev/null and b/fonts/MortalFont80/044B.png differ diff --git a/fonts/MortalFont80/044C.png b/fonts/MortalFont80/044C.png new file mode 100644 index 000000000..6cdb7d03a Binary files /dev/null and b/fonts/MortalFont80/044C.png differ diff --git a/fonts/MortalFont80/044D.png b/fonts/MortalFont80/044D.png new file mode 100644 index 000000000..64dc8494b Binary files /dev/null and b/fonts/MortalFont80/044D.png differ diff --git a/fonts/MortalFont80/044E.png b/fonts/MortalFont80/044E.png new file mode 100644 index 000000000..e87e27fd8 Binary files /dev/null and b/fonts/MortalFont80/044E.png differ diff --git a/fonts/MortalFont80/044F.png b/fonts/MortalFont80/044F.png new file mode 100644 index 000000000..9637ad068 Binary files /dev/null and b/fonts/MortalFont80/044F.png differ diff --git a/fonts/MortalFont80/0451.png b/fonts/MortalFont80/0451.png new file mode 100644 index 000000000..b2431c1c7 Binary files /dev/null and b/fonts/MortalFont80/0451.png differ diff --git a/fonts/MortalFont80/1E3E.png b/fonts/MortalFont80/1E3E.png new file mode 100644 index 000000000..4fde4c888 Binary files /dev/null and b/fonts/MortalFont80/1E3E.png differ diff --git a/fonts/MortalFont80/1E3F.png b/fonts/MortalFont80/1E3F.png new file mode 100644 index 000000000..333d6b089 Binary files /dev/null and b/fonts/MortalFont80/1E3F.png differ diff --git a/fonts/MortalFont80/1F70.png b/fonts/MortalFont80/1F70.png new file mode 100644 index 000000000..9765f3a7a Binary files /dev/null and b/fonts/MortalFont80/1F70.png differ diff --git a/fonts/MortalFont80/1F71.png b/fonts/MortalFont80/1F71.png new file mode 100644 index 000000000..5f100060d Binary files /dev/null and b/fonts/MortalFont80/1F71.png differ diff --git a/fonts/MortalFont80/1F72.png b/fonts/MortalFont80/1F72.png new file mode 100644 index 000000000..f4c8cb74b Binary files /dev/null and b/fonts/MortalFont80/1F72.png differ diff --git a/fonts/MortalFont80/1F73.png b/fonts/MortalFont80/1F73.png new file mode 100644 index 000000000..3fc723c28 Binary files /dev/null and b/fonts/MortalFont80/1F73.png differ diff --git a/fonts/MortalFont80/2010.png b/fonts/MortalFont80/2010.png new file mode 100644 index 000000000..8e88f819c Binary files /dev/null and b/fonts/MortalFont80/2010.png differ diff --git a/fonts/MortalFont80/2013.png b/fonts/MortalFont80/2013.png new file mode 100644 index 000000000..179f5e4fe Binary files /dev/null and b/fonts/MortalFont80/2013.png differ diff --git a/fonts/MortalFont80/2014.png b/fonts/MortalFont80/2014.png new file mode 100644 index 000000000..0a1315308 Binary files /dev/null and b/fonts/MortalFont80/2014.png differ diff --git a/fonts/MortalFont80/2015.png b/fonts/MortalFont80/2015.png new file mode 100644 index 000000000..0a1315308 Binary files /dev/null and b/fonts/MortalFont80/2015.png differ diff --git a/fonts/MortalFont80/2016.png b/fonts/MortalFont80/2016.png new file mode 100644 index 000000000..91c207f74 Binary files /dev/null and b/fonts/MortalFont80/2016.png differ diff --git a/fonts/MortalFont80/2018.png b/fonts/MortalFont80/2018.png new file mode 100644 index 000000000..443867bdc Binary files /dev/null and b/fonts/MortalFont80/2018.png differ diff --git a/fonts/MortalFont80/2019.png b/fonts/MortalFont80/2019.png new file mode 100644 index 000000000..1265ac596 Binary files /dev/null and b/fonts/MortalFont80/2019.png differ diff --git a/fonts/MortalFont80/201C.png b/fonts/MortalFont80/201C.png new file mode 100644 index 000000000..b5a6218b3 Binary files /dev/null and b/fonts/MortalFont80/201C.png differ diff --git a/fonts/MortalFont80/201D.png b/fonts/MortalFont80/201D.png new file mode 100644 index 000000000..a363569ee Binary files /dev/null and b/fonts/MortalFont80/201D.png differ diff --git a/fonts/MortalFont80/2020.png b/fonts/MortalFont80/2020.png new file mode 100644 index 000000000..edc652d1e Binary files /dev/null and b/fonts/MortalFont80/2020.png differ diff --git a/fonts/MortalFont80/2021.png b/fonts/MortalFont80/2021.png new file mode 100644 index 000000000..fa149ba61 Binary files /dev/null and b/fonts/MortalFont80/2021.png differ diff --git a/fonts/MortalFont80/2022.png b/fonts/MortalFont80/2022.png new file mode 100644 index 000000000..7656c6826 Binary files /dev/null and b/fonts/MortalFont80/2022.png differ diff --git a/fonts/MortalFont80/2025.png b/fonts/MortalFont80/2025.png new file mode 100644 index 000000000..fb0363e96 Binary files /dev/null and b/fonts/MortalFont80/2025.png differ diff --git a/fonts/MortalFont80/2026.png b/fonts/MortalFont80/2026.png new file mode 100644 index 000000000..1bbe87a2a Binary files /dev/null and b/fonts/MortalFont80/2026.png differ diff --git a/fonts/MortalFont80/2030.png b/fonts/MortalFont80/2030.png new file mode 100644 index 000000000..044d89e20 Binary files /dev/null and b/fonts/MortalFont80/2030.png differ diff --git a/fonts/MortalFont80/2032.png b/fonts/MortalFont80/2032.png new file mode 100644 index 000000000..1747e771e Binary files /dev/null and b/fonts/MortalFont80/2032.png differ diff --git a/fonts/MortalFont80/2033.png b/fonts/MortalFont80/2033.png new file mode 100644 index 000000000..8c3a37206 Binary files /dev/null and b/fonts/MortalFont80/2033.png differ diff --git a/fonts/MortalFont80/203B.png b/fonts/MortalFont80/203B.png new file mode 100644 index 000000000..d7610075c Binary files /dev/null and b/fonts/MortalFont80/203B.png differ diff --git a/fonts/MortalFont80/203C.png b/fonts/MortalFont80/203C.png new file mode 100644 index 000000000..1a6bb424c Binary files /dev/null and b/fonts/MortalFont80/203C.png differ diff --git a/fonts/MortalFont80/203E.png b/fonts/MortalFont80/203E.png new file mode 100644 index 000000000..f7cded894 Binary files /dev/null and b/fonts/MortalFont80/203E.png differ diff --git a/fonts/MortalFont80/203F.png b/fonts/MortalFont80/203F.png new file mode 100644 index 000000000..2ec86b771 Binary files /dev/null and b/fonts/MortalFont80/203F.png differ diff --git a/fonts/MortalFont80/2042.png b/fonts/MortalFont80/2042.png new file mode 100644 index 000000000..d88a75bb3 Binary files /dev/null and b/fonts/MortalFont80/2042.png differ diff --git a/fonts/MortalFont80/2047.png b/fonts/MortalFont80/2047.png new file mode 100644 index 000000000..8205656be Binary files /dev/null and b/fonts/MortalFont80/2047.png differ diff --git a/fonts/MortalFont80/2048.png b/fonts/MortalFont80/2048.png new file mode 100644 index 000000000..0b094bc96 Binary files /dev/null and b/fonts/MortalFont80/2048.png differ diff --git a/fonts/MortalFont80/2049.png b/fonts/MortalFont80/2049.png new file mode 100644 index 000000000..919f810f5 Binary files /dev/null and b/fonts/MortalFont80/2049.png differ diff --git a/fonts/MortalFont80/2051.png b/fonts/MortalFont80/2051.png new file mode 100644 index 000000000..d224c30b9 Binary files /dev/null and b/fonts/MortalFont80/2051.png differ diff --git a/fonts/MortalFont80/20AC.png b/fonts/MortalFont80/20AC.png new file mode 100644 index 000000000..3ccc6fe18 Binary files /dev/null and b/fonts/MortalFont80/20AC.png differ diff --git a/fonts/MortalFont80/2103.png b/fonts/MortalFont80/2103.png new file mode 100644 index 000000000..d845f81fe Binary files /dev/null and b/fonts/MortalFont80/2103.png differ diff --git a/fonts/MortalFont80/210F.png b/fonts/MortalFont80/210F.png new file mode 100644 index 000000000..4d5e25b23 Binary files /dev/null and b/fonts/MortalFont80/210F.png differ diff --git a/fonts/MortalFont80/2113.png b/fonts/MortalFont80/2113.png new file mode 100644 index 000000000..8f9a293c6 Binary files /dev/null and b/fonts/MortalFont80/2113.png differ diff --git a/fonts/MortalFont80/2116.png b/fonts/MortalFont80/2116.png new file mode 100644 index 000000000..d8f141bb4 Binary files /dev/null and b/fonts/MortalFont80/2116.png differ diff --git a/fonts/MortalFont80/2121.png b/fonts/MortalFont80/2121.png new file mode 100644 index 000000000..ab00f1e12 Binary files /dev/null and b/fonts/MortalFont80/2121.png differ diff --git a/fonts/MortalFont80/2127.png b/fonts/MortalFont80/2127.png new file mode 100644 index 000000000..d836b0064 Binary files /dev/null and b/fonts/MortalFont80/2127.png differ diff --git a/fonts/MortalFont80/212B.png b/fonts/MortalFont80/212B.png new file mode 100644 index 000000000..601c2d1f1 Binary files /dev/null and b/fonts/MortalFont80/212B.png differ diff --git a/fonts/MortalFont80/2135.png b/fonts/MortalFont80/2135.png new file mode 100644 index 000000000..6119ace98 Binary files /dev/null and b/fonts/MortalFont80/2135.png differ diff --git a/fonts/MortalFont80/2153.png b/fonts/MortalFont80/2153.png new file mode 100644 index 000000000..02de4d6ed Binary files /dev/null and b/fonts/MortalFont80/2153.png differ diff --git a/fonts/MortalFont80/2154.png b/fonts/MortalFont80/2154.png new file mode 100644 index 000000000..7fc19921f Binary files /dev/null and b/fonts/MortalFont80/2154.png differ diff --git a/fonts/MortalFont80/2155.png b/fonts/MortalFont80/2155.png new file mode 100644 index 000000000..cc325ee6a Binary files /dev/null and b/fonts/MortalFont80/2155.png differ diff --git a/fonts/MortalFont80/2160.png b/fonts/MortalFont80/2160.png new file mode 100644 index 000000000..d4d4e98c1 Binary files /dev/null and b/fonts/MortalFont80/2160.png differ diff --git a/fonts/MortalFont80/2161.png b/fonts/MortalFont80/2161.png new file mode 100644 index 000000000..cd280bb99 Binary files /dev/null and b/fonts/MortalFont80/2161.png differ diff --git a/fonts/MortalFont80/2162.png b/fonts/MortalFont80/2162.png new file mode 100644 index 000000000..651c61dd7 Binary files /dev/null and b/fonts/MortalFont80/2162.png differ diff --git a/fonts/MortalFont80/2163.png b/fonts/MortalFont80/2163.png new file mode 100644 index 000000000..c59286604 Binary files /dev/null and b/fonts/MortalFont80/2163.png differ diff --git a/fonts/MortalFont80/2164.png b/fonts/MortalFont80/2164.png new file mode 100644 index 000000000..afc882a31 Binary files /dev/null and b/fonts/MortalFont80/2164.png differ diff --git a/fonts/MortalFont80/2165.png b/fonts/MortalFont80/2165.png new file mode 100644 index 000000000..ea9c58754 Binary files /dev/null and b/fonts/MortalFont80/2165.png differ diff --git a/fonts/MortalFont80/2166.png b/fonts/MortalFont80/2166.png new file mode 100644 index 000000000..70e62a282 Binary files /dev/null and b/fonts/MortalFont80/2166.png differ diff --git a/fonts/MortalFont80/2167.png b/fonts/MortalFont80/2167.png new file mode 100644 index 000000000..0cdfe3af9 Binary files /dev/null and b/fonts/MortalFont80/2167.png differ diff --git a/fonts/MortalFont80/2168.png b/fonts/MortalFont80/2168.png new file mode 100644 index 000000000..472bb6ece Binary files /dev/null and b/fonts/MortalFont80/2168.png differ diff --git a/fonts/MortalFont80/2169.png b/fonts/MortalFont80/2169.png new file mode 100644 index 000000000..dd8e5bd6d Binary files /dev/null and b/fonts/MortalFont80/2169.png differ diff --git a/fonts/MortalFont80/216A.png b/fonts/MortalFont80/216A.png new file mode 100644 index 000000000..89480485c Binary files /dev/null and b/fonts/MortalFont80/216A.png differ diff --git a/fonts/MortalFont80/216B.png b/fonts/MortalFont80/216B.png new file mode 100644 index 000000000..32ad66b62 Binary files /dev/null and b/fonts/MortalFont80/216B.png differ diff --git a/fonts/MortalFont80/2170.png b/fonts/MortalFont80/2170.png new file mode 100644 index 000000000..d663a3996 Binary files /dev/null and b/fonts/MortalFont80/2170.png differ diff --git a/fonts/MortalFont80/2171.png b/fonts/MortalFont80/2171.png new file mode 100644 index 000000000..c1b2915f3 Binary files /dev/null and b/fonts/MortalFont80/2171.png differ diff --git a/fonts/MortalFont80/2172.png b/fonts/MortalFont80/2172.png new file mode 100644 index 000000000..f1bf8eeca Binary files /dev/null and b/fonts/MortalFont80/2172.png differ diff --git a/fonts/MortalFont80/2173.png b/fonts/MortalFont80/2173.png new file mode 100644 index 000000000..54f606bd4 Binary files /dev/null and b/fonts/MortalFont80/2173.png differ diff --git a/fonts/MortalFont80/2174.png b/fonts/MortalFont80/2174.png new file mode 100644 index 000000000..9328fb2c1 Binary files /dev/null and b/fonts/MortalFont80/2174.png differ diff --git a/fonts/MortalFont80/2175.png b/fonts/MortalFont80/2175.png new file mode 100644 index 000000000..c3aa52118 Binary files /dev/null and b/fonts/MortalFont80/2175.png differ diff --git a/fonts/MortalFont80/2176.png b/fonts/MortalFont80/2176.png new file mode 100644 index 000000000..4b083bd51 Binary files /dev/null and b/fonts/MortalFont80/2176.png differ diff --git a/fonts/MortalFont80/2177.png b/fonts/MortalFont80/2177.png new file mode 100644 index 000000000..3e693bf32 Binary files /dev/null and b/fonts/MortalFont80/2177.png differ diff --git a/fonts/MortalFont80/2178.png b/fonts/MortalFont80/2178.png new file mode 100644 index 000000000..3cac175cc Binary files /dev/null and b/fonts/MortalFont80/2178.png differ diff --git a/fonts/MortalFont80/2179.png b/fonts/MortalFont80/2179.png new file mode 100644 index 000000000..54e5b8660 Binary files /dev/null and b/fonts/MortalFont80/2179.png differ diff --git a/fonts/MortalFont80/217A.png b/fonts/MortalFont80/217A.png new file mode 100644 index 000000000..7c2cb95d0 Binary files /dev/null and b/fonts/MortalFont80/217A.png differ diff --git a/fonts/MortalFont80/217B.png b/fonts/MortalFont80/217B.png new file mode 100644 index 000000000..945d06a7e Binary files /dev/null and b/fonts/MortalFont80/217B.png differ diff --git a/fonts/MortalFont80/2190.png b/fonts/MortalFont80/2190.png new file mode 100644 index 000000000..0bb1bad4a Binary files /dev/null and b/fonts/MortalFont80/2190.png differ diff --git a/fonts/MortalFont80/2191.png b/fonts/MortalFont80/2191.png new file mode 100644 index 000000000..19f603af4 Binary files /dev/null and b/fonts/MortalFont80/2191.png differ diff --git a/fonts/MortalFont80/2192.png b/fonts/MortalFont80/2192.png new file mode 100644 index 000000000..3c8bc24b9 Binary files /dev/null and b/fonts/MortalFont80/2192.png differ diff --git a/fonts/MortalFont80/2193.png b/fonts/MortalFont80/2193.png new file mode 100644 index 000000000..f6d9d6157 Binary files /dev/null and b/fonts/MortalFont80/2193.png differ diff --git a/fonts/MortalFont80/2194.png b/fonts/MortalFont80/2194.png new file mode 100644 index 000000000..887226ffc Binary files /dev/null and b/fonts/MortalFont80/2194.png differ diff --git a/fonts/MortalFont80/2196.png b/fonts/MortalFont80/2196.png new file mode 100644 index 000000000..b0050b27c Binary files /dev/null and b/fonts/MortalFont80/2196.png differ diff --git a/fonts/MortalFont80/2197.png b/fonts/MortalFont80/2197.png new file mode 100644 index 000000000..f33597b36 Binary files /dev/null and b/fonts/MortalFont80/2197.png differ diff --git a/fonts/MortalFont80/2198.png b/fonts/MortalFont80/2198.png new file mode 100644 index 000000000..bd8584639 Binary files /dev/null and b/fonts/MortalFont80/2198.png differ diff --git a/fonts/MortalFont80/2199.png b/fonts/MortalFont80/2199.png new file mode 100644 index 000000000..0a08ebcf4 Binary files /dev/null and b/fonts/MortalFont80/2199.png differ diff --git a/fonts/MortalFont80/21C4.png b/fonts/MortalFont80/21C4.png new file mode 100644 index 000000000..12dd1c6cc Binary files /dev/null and b/fonts/MortalFont80/21C4.png differ diff --git a/fonts/MortalFont80/21D2.png b/fonts/MortalFont80/21D2.png new file mode 100644 index 000000000..8ec59b18d Binary files /dev/null and b/fonts/MortalFont80/21D2.png differ diff --git a/fonts/MortalFont80/21D4.png b/fonts/MortalFont80/21D4.png new file mode 100644 index 000000000..20cfe22c5 Binary files /dev/null and b/fonts/MortalFont80/21D4.png differ diff --git a/fonts/MortalFont80/21E6.png b/fonts/MortalFont80/21E6.png new file mode 100644 index 000000000..883794383 Binary files /dev/null and b/fonts/MortalFont80/21E6.png differ diff --git a/fonts/MortalFont80/21E7.png b/fonts/MortalFont80/21E7.png new file mode 100644 index 000000000..70ac59199 Binary files /dev/null and b/fonts/MortalFont80/21E7.png differ diff --git a/fonts/MortalFont80/21E8.png b/fonts/MortalFont80/21E8.png new file mode 100644 index 000000000..9979e30ba Binary files /dev/null and b/fonts/MortalFont80/21E8.png differ diff --git a/fonts/MortalFont80/21E9.png b/fonts/MortalFont80/21E9.png new file mode 100644 index 000000000..3a003a204 Binary files /dev/null and b/fonts/MortalFont80/21E9.png differ diff --git a/fonts/MortalFont80/2200.png b/fonts/MortalFont80/2200.png new file mode 100644 index 000000000..ca9ac04a8 Binary files /dev/null and b/fonts/MortalFont80/2200.png differ diff --git a/fonts/MortalFont80/2202.png b/fonts/MortalFont80/2202.png new file mode 100644 index 000000000..5de5dee15 Binary files /dev/null and b/fonts/MortalFont80/2202.png differ diff --git a/fonts/MortalFont80/2203.png b/fonts/MortalFont80/2203.png new file mode 100644 index 000000000..65be03f05 Binary files /dev/null and b/fonts/MortalFont80/2203.png differ diff --git a/fonts/MortalFont80/2205.png b/fonts/MortalFont80/2205.png new file mode 100644 index 000000000..b435af094 Binary files /dev/null and b/fonts/MortalFont80/2205.png differ diff --git a/fonts/MortalFont80/2207.png b/fonts/MortalFont80/2207.png new file mode 100644 index 000000000..5b7e72719 Binary files /dev/null and b/fonts/MortalFont80/2207.png differ diff --git a/fonts/MortalFont80/2208.png b/fonts/MortalFont80/2208.png new file mode 100644 index 000000000..f3a8f646f Binary files /dev/null and b/fonts/MortalFont80/2208.png differ diff --git a/fonts/MortalFont80/2209.png b/fonts/MortalFont80/2209.png new file mode 100644 index 000000000..e77929ed3 Binary files /dev/null and b/fonts/MortalFont80/2209.png differ diff --git a/fonts/MortalFont80/220B.png b/fonts/MortalFont80/220B.png new file mode 100644 index 000000000..4b7bde7b0 Binary files /dev/null and b/fonts/MortalFont80/220B.png differ diff --git a/fonts/MortalFont80/2212.png b/fonts/MortalFont80/2212.png new file mode 100644 index 000000000..da3c046ac Binary files /dev/null and b/fonts/MortalFont80/2212.png differ diff --git a/fonts/MortalFont80/2213.png b/fonts/MortalFont80/2213.png new file mode 100644 index 000000000..3600dceed Binary files /dev/null and b/fonts/MortalFont80/2213.png differ diff --git a/fonts/MortalFont80/221A.png b/fonts/MortalFont80/221A.png new file mode 100644 index 000000000..7f2dd01d8 Binary files /dev/null and b/fonts/MortalFont80/221A.png differ diff --git a/fonts/MortalFont80/221D.png b/fonts/MortalFont80/221D.png new file mode 100644 index 000000000..b4fdb4339 Binary files /dev/null and b/fonts/MortalFont80/221D.png differ diff --git a/fonts/MortalFont80/221E.png b/fonts/MortalFont80/221E.png new file mode 100644 index 000000000..883ddbb09 Binary files /dev/null and b/fonts/MortalFont80/221E.png differ diff --git a/fonts/MortalFont80/221F.png b/fonts/MortalFont80/221F.png new file mode 100644 index 000000000..0741510a8 Binary files /dev/null and b/fonts/MortalFont80/221F.png differ diff --git a/fonts/MortalFont80/2220.png b/fonts/MortalFont80/2220.png new file mode 100644 index 000000000..f63343f6c Binary files /dev/null and b/fonts/MortalFont80/2220.png differ diff --git a/fonts/MortalFont80/2225.png b/fonts/MortalFont80/2225.png new file mode 100644 index 000000000..31ebda850 Binary files /dev/null and b/fonts/MortalFont80/2225.png differ diff --git a/fonts/MortalFont80/2226.png b/fonts/MortalFont80/2226.png new file mode 100644 index 000000000..c5a3b5da9 Binary files /dev/null and b/fonts/MortalFont80/2226.png differ diff --git a/fonts/MortalFont80/2227.png b/fonts/MortalFont80/2227.png new file mode 100644 index 000000000..4fc38aa18 Binary files /dev/null and b/fonts/MortalFont80/2227.png differ diff --git a/fonts/MortalFont80/2228.png b/fonts/MortalFont80/2228.png new file mode 100644 index 000000000..2bfc509c6 Binary files /dev/null and b/fonts/MortalFont80/2228.png differ diff --git a/fonts/MortalFont80/2229.png b/fonts/MortalFont80/2229.png new file mode 100644 index 000000000..8edeb1fd8 Binary files /dev/null and b/fonts/MortalFont80/2229.png differ diff --git a/fonts/MortalFont80/222A.png b/fonts/MortalFont80/222A.png new file mode 100644 index 000000000..81e93bd7c Binary files /dev/null and b/fonts/MortalFont80/222A.png differ diff --git a/fonts/MortalFont80/222B.png b/fonts/MortalFont80/222B.png new file mode 100644 index 000000000..59122cb60 Binary files /dev/null and b/fonts/MortalFont80/222B.png differ diff --git a/fonts/MortalFont80/222C.png b/fonts/MortalFont80/222C.png new file mode 100644 index 000000000..23d0bae16 Binary files /dev/null and b/fonts/MortalFont80/222C.png differ diff --git a/fonts/MortalFont80/222E.png b/fonts/MortalFont80/222E.png new file mode 100644 index 000000000..e5c1c33ec Binary files /dev/null and b/fonts/MortalFont80/222E.png differ diff --git a/fonts/MortalFont80/2234.png b/fonts/MortalFont80/2234.png new file mode 100644 index 000000000..324d632c7 Binary files /dev/null and b/fonts/MortalFont80/2234.png differ diff --git a/fonts/MortalFont80/2235.png b/fonts/MortalFont80/2235.png new file mode 100644 index 000000000..448423564 Binary files /dev/null and b/fonts/MortalFont80/2235.png differ diff --git a/fonts/MortalFont80/223D.png b/fonts/MortalFont80/223D.png new file mode 100644 index 000000000..59443bee2 Binary files /dev/null and b/fonts/MortalFont80/223D.png differ diff --git a/fonts/MortalFont80/2243.png b/fonts/MortalFont80/2243.png new file mode 100644 index 000000000..eceb1ffa3 Binary files /dev/null and b/fonts/MortalFont80/2243.png differ diff --git a/fonts/MortalFont80/2245.png b/fonts/MortalFont80/2245.png new file mode 100644 index 000000000..6a2f6a060 Binary files /dev/null and b/fonts/MortalFont80/2245.png differ diff --git a/fonts/MortalFont80/2248.png b/fonts/MortalFont80/2248.png new file mode 100644 index 000000000..14440c1bd Binary files /dev/null and b/fonts/MortalFont80/2248.png differ diff --git a/fonts/MortalFont80/2252.png b/fonts/MortalFont80/2252.png new file mode 100644 index 000000000..0e6b3aa62 Binary files /dev/null and b/fonts/MortalFont80/2252.png differ diff --git a/fonts/MortalFont80/2260.png b/fonts/MortalFont80/2260.png new file mode 100644 index 000000000..41277da58 Binary files /dev/null and b/fonts/MortalFont80/2260.png differ diff --git a/fonts/MortalFont80/2261.png b/fonts/MortalFont80/2261.png new file mode 100644 index 000000000..b5cc3b88b Binary files /dev/null and b/fonts/MortalFont80/2261.png differ diff --git a/fonts/MortalFont80/2262.png b/fonts/MortalFont80/2262.png new file mode 100644 index 000000000..1633d601a Binary files /dev/null and b/fonts/MortalFont80/2262.png differ diff --git a/fonts/MortalFont80/2266.png b/fonts/MortalFont80/2266.png new file mode 100644 index 000000000..d96fe7d85 Binary files /dev/null and b/fonts/MortalFont80/2266.png differ diff --git a/fonts/MortalFont80/2267.png b/fonts/MortalFont80/2267.png new file mode 100644 index 000000000..9a20b77b9 Binary files /dev/null and b/fonts/MortalFont80/2267.png differ diff --git a/fonts/MortalFont80/226A.png b/fonts/MortalFont80/226A.png new file mode 100644 index 000000000..14d05b4a3 Binary files /dev/null and b/fonts/MortalFont80/226A.png differ diff --git a/fonts/MortalFont80/226B.png b/fonts/MortalFont80/226B.png new file mode 100644 index 000000000..473ee0ea8 Binary files /dev/null and b/fonts/MortalFont80/226B.png differ diff --git a/fonts/MortalFont80/2276.png b/fonts/MortalFont80/2276.png new file mode 100644 index 000000000..37e937112 Binary files /dev/null and b/fonts/MortalFont80/2276.png differ diff --git a/fonts/MortalFont80/2277.png b/fonts/MortalFont80/2277.png new file mode 100644 index 000000000..87cfe7ec7 Binary files /dev/null and b/fonts/MortalFont80/2277.png differ diff --git a/fonts/MortalFont80/2282.png b/fonts/MortalFont80/2282.png new file mode 100644 index 000000000..d3e218d24 Binary files /dev/null and b/fonts/MortalFont80/2282.png differ diff --git a/fonts/MortalFont80/2283.png b/fonts/MortalFont80/2283.png new file mode 100644 index 000000000..8fc8ca432 Binary files /dev/null and b/fonts/MortalFont80/2283.png differ diff --git a/fonts/MortalFont80/2284.png b/fonts/MortalFont80/2284.png new file mode 100644 index 000000000..2680eda62 Binary files /dev/null and b/fonts/MortalFont80/2284.png differ diff --git a/fonts/MortalFont80/2285.png b/fonts/MortalFont80/2285.png new file mode 100644 index 000000000..cb1559135 Binary files /dev/null and b/fonts/MortalFont80/2285.png differ diff --git a/fonts/MortalFont80/2286.png b/fonts/MortalFont80/2286.png new file mode 100644 index 000000000..5a522e366 Binary files /dev/null and b/fonts/MortalFont80/2286.png differ diff --git a/fonts/MortalFont80/2287.png b/fonts/MortalFont80/2287.png new file mode 100644 index 000000000..58137c53e Binary files /dev/null and b/fonts/MortalFont80/2287.png differ diff --git a/fonts/MortalFont80/228A.png b/fonts/MortalFont80/228A.png new file mode 100644 index 000000000..ee840f6a9 Binary files /dev/null and b/fonts/MortalFont80/228A.png differ diff --git a/fonts/MortalFont80/228B.png b/fonts/MortalFont80/228B.png new file mode 100644 index 000000000..bc413f813 Binary files /dev/null and b/fonts/MortalFont80/228B.png differ diff --git a/fonts/MortalFont80/2295.png b/fonts/MortalFont80/2295.png new file mode 100644 index 000000000..995d406fb Binary files /dev/null and b/fonts/MortalFont80/2295.png differ diff --git a/fonts/MortalFont80/2296.png b/fonts/MortalFont80/2296.png new file mode 100644 index 000000000..9b84d7626 Binary files /dev/null and b/fonts/MortalFont80/2296.png differ diff --git a/fonts/MortalFont80/2297.png b/fonts/MortalFont80/2297.png new file mode 100644 index 000000000..8e8efe259 Binary files /dev/null and b/fonts/MortalFont80/2297.png differ diff --git a/fonts/MortalFont80/22A5.png b/fonts/MortalFont80/22A5.png new file mode 100644 index 000000000..3ae2781dc Binary files /dev/null and b/fonts/MortalFont80/22A5.png differ diff --git a/fonts/MortalFont80/22BF.png b/fonts/MortalFont80/22BF.png new file mode 100644 index 000000000..7c8164690 Binary files /dev/null and b/fonts/MortalFont80/22BF.png differ diff --git a/fonts/MortalFont80/22DA.png b/fonts/MortalFont80/22DA.png new file mode 100644 index 000000000..444f4be18 Binary files /dev/null and b/fonts/MortalFont80/22DA.png differ diff --git a/fonts/MortalFont80/22DB.png b/fonts/MortalFont80/22DB.png new file mode 100644 index 000000000..6a244ccd8 Binary files /dev/null and b/fonts/MortalFont80/22DB.png differ diff --git a/fonts/MortalFont80/2305.png b/fonts/MortalFont80/2305.png new file mode 100644 index 000000000..743600b77 Binary files /dev/null and b/fonts/MortalFont80/2305.png differ diff --git a/fonts/MortalFont80/2306.png b/fonts/MortalFont80/2306.png new file mode 100644 index 000000000..6fa85e713 Binary files /dev/null and b/fonts/MortalFont80/2306.png differ diff --git a/fonts/MortalFont80/2312.png b/fonts/MortalFont80/2312.png new file mode 100644 index 000000000..91ada0090 Binary files /dev/null and b/fonts/MortalFont80/2312.png differ diff --git a/fonts/MortalFont80/2318.png b/fonts/MortalFont80/2318.png new file mode 100644 index 000000000..4bed0d121 Binary files /dev/null and b/fonts/MortalFont80/2318.png differ diff --git a/fonts/MortalFont80/23BE.png b/fonts/MortalFont80/23BE.png new file mode 100644 index 000000000..66a2a2626 Binary files /dev/null and b/fonts/MortalFont80/23BE.png differ diff --git a/fonts/MortalFont80/23BF.png b/fonts/MortalFont80/23BF.png new file mode 100644 index 000000000..98cb13123 Binary files /dev/null and b/fonts/MortalFont80/23BF.png differ diff --git a/fonts/MortalFont80/23C0.png b/fonts/MortalFont80/23C0.png new file mode 100644 index 000000000..6df7d7fe3 Binary files /dev/null and b/fonts/MortalFont80/23C0.png differ diff --git a/fonts/MortalFont80/23C1.png b/fonts/MortalFont80/23C1.png new file mode 100644 index 000000000..1f0a04c74 Binary files /dev/null and b/fonts/MortalFont80/23C1.png differ diff --git a/fonts/MortalFont80/23C2.png b/fonts/MortalFont80/23C2.png new file mode 100644 index 000000000..13890e3b3 Binary files /dev/null and b/fonts/MortalFont80/23C2.png differ diff --git a/fonts/MortalFont80/23C3.png b/fonts/MortalFont80/23C3.png new file mode 100644 index 000000000..cd534dd7f Binary files /dev/null and b/fonts/MortalFont80/23C3.png differ diff --git a/fonts/MortalFont80/23C4.png b/fonts/MortalFont80/23C4.png new file mode 100644 index 000000000..51ccab063 Binary files /dev/null and b/fonts/MortalFont80/23C4.png differ diff --git a/fonts/MortalFont80/23C5.png b/fonts/MortalFont80/23C5.png new file mode 100644 index 000000000..21710c5a4 Binary files /dev/null and b/fonts/MortalFont80/23C5.png differ diff --git a/fonts/MortalFont80/23C6.png b/fonts/MortalFont80/23C6.png new file mode 100644 index 000000000..3f07acfec Binary files /dev/null and b/fonts/MortalFont80/23C6.png differ diff --git a/fonts/MortalFont80/23C7.png b/fonts/MortalFont80/23C7.png new file mode 100644 index 000000000..43beb759c Binary files /dev/null and b/fonts/MortalFont80/23C7.png differ diff --git a/fonts/MortalFont80/23C8.png b/fonts/MortalFont80/23C8.png new file mode 100644 index 000000000..98c7ffddf Binary files /dev/null and b/fonts/MortalFont80/23C8.png differ diff --git a/fonts/MortalFont80/23C9.png b/fonts/MortalFont80/23C9.png new file mode 100644 index 000000000..131bacc05 Binary files /dev/null and b/fonts/MortalFont80/23C9.png differ diff --git a/fonts/MortalFont80/23CA.png b/fonts/MortalFont80/23CA.png new file mode 100644 index 000000000..4a4760970 Binary files /dev/null and b/fonts/MortalFont80/23CA.png differ diff --git a/fonts/MortalFont80/23CB.png b/fonts/MortalFont80/23CB.png new file mode 100644 index 000000000..f46c8a886 Binary files /dev/null and b/fonts/MortalFont80/23CB.png differ diff --git a/fonts/MortalFont80/23CC.png b/fonts/MortalFont80/23CC.png new file mode 100644 index 000000000..0445ef3bf Binary files /dev/null and b/fonts/MortalFont80/23CC.png differ diff --git a/fonts/MortalFont80/23CE.png b/fonts/MortalFont80/23CE.png new file mode 100644 index 000000000..198b28481 Binary files /dev/null and b/fonts/MortalFont80/23CE.png differ diff --git a/fonts/MortalFont80/2423.png b/fonts/MortalFont80/2423.png new file mode 100644 index 000000000..200e62777 Binary files /dev/null and b/fonts/MortalFont80/2423.png differ diff --git a/fonts/MortalFont80/2460.png b/fonts/MortalFont80/2460.png new file mode 100644 index 000000000..a5f7a5f63 Binary files /dev/null and b/fonts/MortalFont80/2460.png differ diff --git a/fonts/MortalFont80/2461.png b/fonts/MortalFont80/2461.png new file mode 100644 index 000000000..bd47d92ec Binary files /dev/null and b/fonts/MortalFont80/2461.png differ diff --git a/fonts/MortalFont80/2462.png b/fonts/MortalFont80/2462.png new file mode 100644 index 000000000..ba835db21 Binary files /dev/null and b/fonts/MortalFont80/2462.png differ diff --git a/fonts/MortalFont80/2463.png b/fonts/MortalFont80/2463.png new file mode 100644 index 000000000..adf024fc9 Binary files /dev/null and b/fonts/MortalFont80/2463.png differ diff --git a/fonts/MortalFont80/2464.png b/fonts/MortalFont80/2464.png new file mode 100644 index 000000000..6ad7d756e Binary files /dev/null and b/fonts/MortalFont80/2464.png differ diff --git a/fonts/MortalFont80/2465.png b/fonts/MortalFont80/2465.png new file mode 100644 index 000000000..85e7a8b41 Binary files /dev/null and b/fonts/MortalFont80/2465.png differ diff --git a/fonts/MortalFont80/2466.png b/fonts/MortalFont80/2466.png new file mode 100644 index 000000000..840c4b378 Binary files /dev/null and b/fonts/MortalFont80/2466.png differ diff --git a/fonts/MortalFont80/2467.png b/fonts/MortalFont80/2467.png new file mode 100644 index 000000000..0dc1e31dd Binary files /dev/null and b/fonts/MortalFont80/2467.png differ diff --git a/fonts/MortalFont80/2468.png b/fonts/MortalFont80/2468.png new file mode 100644 index 000000000..6ed277ee7 Binary files /dev/null and b/fonts/MortalFont80/2468.png differ diff --git a/fonts/MortalFont80/2469.png b/fonts/MortalFont80/2469.png new file mode 100644 index 000000000..ea1d016b6 Binary files /dev/null and b/fonts/MortalFont80/2469.png differ diff --git a/fonts/MortalFont80/246A.png b/fonts/MortalFont80/246A.png new file mode 100644 index 000000000..08f066f07 Binary files /dev/null and b/fonts/MortalFont80/246A.png differ diff --git a/fonts/MortalFont80/246B.png b/fonts/MortalFont80/246B.png new file mode 100644 index 000000000..0ce43c3c3 Binary files /dev/null and b/fonts/MortalFont80/246B.png differ diff --git a/fonts/MortalFont80/246C.png b/fonts/MortalFont80/246C.png new file mode 100644 index 000000000..de820646d Binary files /dev/null and b/fonts/MortalFont80/246C.png differ diff --git a/fonts/MortalFont80/246D.png b/fonts/MortalFont80/246D.png new file mode 100644 index 000000000..6be423470 Binary files /dev/null and b/fonts/MortalFont80/246D.png differ diff --git a/fonts/MortalFont80/246E.png b/fonts/MortalFont80/246E.png new file mode 100644 index 000000000..05d8470f8 Binary files /dev/null and b/fonts/MortalFont80/246E.png differ diff --git a/fonts/MortalFont80/246F.png b/fonts/MortalFont80/246F.png new file mode 100644 index 000000000..2833cb270 Binary files /dev/null and b/fonts/MortalFont80/246F.png differ diff --git a/fonts/MortalFont80/2470.png b/fonts/MortalFont80/2470.png new file mode 100644 index 000000000..22b66ea20 Binary files /dev/null and b/fonts/MortalFont80/2470.png differ diff --git a/fonts/MortalFont80/2471.png b/fonts/MortalFont80/2471.png new file mode 100644 index 000000000..107b10c36 Binary files /dev/null and b/fonts/MortalFont80/2471.png differ diff --git a/fonts/MortalFont80/2472.png b/fonts/MortalFont80/2472.png new file mode 100644 index 000000000..e9ab9b9c1 Binary files /dev/null and b/fonts/MortalFont80/2472.png differ diff --git a/fonts/MortalFont80/2473.png b/fonts/MortalFont80/2473.png new file mode 100644 index 000000000..615f3911d Binary files /dev/null and b/fonts/MortalFont80/2473.png differ diff --git a/fonts/MortalFont80/24D0.png b/fonts/MortalFont80/24D0.png new file mode 100644 index 000000000..0334af5ec Binary files /dev/null and b/fonts/MortalFont80/24D0.png differ diff --git a/fonts/MortalFont80/24D1.png b/fonts/MortalFont80/24D1.png new file mode 100644 index 000000000..f2ced418b Binary files /dev/null and b/fonts/MortalFont80/24D1.png differ diff --git a/fonts/MortalFont80/24D2.png b/fonts/MortalFont80/24D2.png new file mode 100644 index 000000000..c2fa28863 Binary files /dev/null and b/fonts/MortalFont80/24D2.png differ diff --git a/fonts/MortalFont80/24D3.png b/fonts/MortalFont80/24D3.png new file mode 100644 index 000000000..53a990f9d Binary files /dev/null and b/fonts/MortalFont80/24D3.png differ diff --git a/fonts/MortalFont80/24D4.png b/fonts/MortalFont80/24D4.png new file mode 100644 index 000000000..471e3f2b0 Binary files /dev/null and b/fonts/MortalFont80/24D4.png differ diff --git a/fonts/MortalFont80/24D5.png b/fonts/MortalFont80/24D5.png new file mode 100644 index 000000000..2cbcd09e1 Binary files /dev/null and b/fonts/MortalFont80/24D5.png differ diff --git a/fonts/MortalFont80/24D6.png b/fonts/MortalFont80/24D6.png new file mode 100644 index 000000000..3259f28ed Binary files /dev/null and b/fonts/MortalFont80/24D6.png differ diff --git a/fonts/MortalFont80/24D7.png b/fonts/MortalFont80/24D7.png new file mode 100644 index 000000000..a30c8ee1e Binary files /dev/null and b/fonts/MortalFont80/24D7.png differ diff --git a/fonts/MortalFont80/24D8.png b/fonts/MortalFont80/24D8.png new file mode 100644 index 000000000..2615591f4 Binary files /dev/null and b/fonts/MortalFont80/24D8.png differ diff --git a/fonts/MortalFont80/24D9.png b/fonts/MortalFont80/24D9.png new file mode 100644 index 000000000..0794a6f1d Binary files /dev/null and b/fonts/MortalFont80/24D9.png differ diff --git a/fonts/MortalFont80/24DA.png b/fonts/MortalFont80/24DA.png new file mode 100644 index 000000000..f2596569a Binary files /dev/null and b/fonts/MortalFont80/24DA.png differ diff --git a/fonts/MortalFont80/24DB.png b/fonts/MortalFont80/24DB.png new file mode 100644 index 000000000..eefbddad6 Binary files /dev/null and b/fonts/MortalFont80/24DB.png differ diff --git a/fonts/MortalFont80/24DC.png b/fonts/MortalFont80/24DC.png new file mode 100644 index 000000000..387066aff Binary files /dev/null and b/fonts/MortalFont80/24DC.png differ diff --git a/fonts/MortalFont80/24DD.png b/fonts/MortalFont80/24DD.png new file mode 100644 index 000000000..532b2deeb Binary files /dev/null and b/fonts/MortalFont80/24DD.png differ diff --git a/fonts/MortalFont80/24DE.png b/fonts/MortalFont80/24DE.png new file mode 100644 index 000000000..fcb1afad2 Binary files /dev/null and b/fonts/MortalFont80/24DE.png differ diff --git a/fonts/MortalFont80/24DF.png b/fonts/MortalFont80/24DF.png new file mode 100644 index 000000000..475169c64 Binary files /dev/null and b/fonts/MortalFont80/24DF.png differ diff --git a/fonts/MortalFont80/24E0.png b/fonts/MortalFont80/24E0.png new file mode 100644 index 000000000..02b7f3ac3 Binary files /dev/null and b/fonts/MortalFont80/24E0.png differ diff --git a/fonts/MortalFont80/24E1.png b/fonts/MortalFont80/24E1.png new file mode 100644 index 000000000..66490c432 Binary files /dev/null and b/fonts/MortalFont80/24E1.png differ diff --git a/fonts/MortalFont80/24E2.png b/fonts/MortalFont80/24E2.png new file mode 100644 index 000000000..84ede90c7 Binary files /dev/null and b/fonts/MortalFont80/24E2.png differ diff --git a/fonts/MortalFont80/24E3.png b/fonts/MortalFont80/24E3.png new file mode 100644 index 000000000..3f1af4042 Binary files /dev/null and b/fonts/MortalFont80/24E3.png differ diff --git a/fonts/MortalFont80/24E4.png b/fonts/MortalFont80/24E4.png new file mode 100644 index 000000000..42de7ae6f Binary files /dev/null and b/fonts/MortalFont80/24E4.png differ diff --git a/fonts/MortalFont80/24E5.png b/fonts/MortalFont80/24E5.png new file mode 100644 index 000000000..210946f3a Binary files /dev/null and b/fonts/MortalFont80/24E5.png differ diff --git a/fonts/MortalFont80/24E6.png b/fonts/MortalFont80/24E6.png new file mode 100644 index 000000000..f2a9401f1 Binary files /dev/null and b/fonts/MortalFont80/24E6.png differ diff --git a/fonts/MortalFont80/24E7.png b/fonts/MortalFont80/24E7.png new file mode 100644 index 000000000..c37682660 Binary files /dev/null and b/fonts/MortalFont80/24E7.png differ diff --git a/fonts/MortalFont80/24E8.png b/fonts/MortalFont80/24E8.png new file mode 100644 index 000000000..9af78f717 Binary files /dev/null and b/fonts/MortalFont80/24E8.png differ diff --git a/fonts/MortalFont80/24E9.png b/fonts/MortalFont80/24E9.png new file mode 100644 index 000000000..1f67c9b8d Binary files /dev/null and b/fonts/MortalFont80/24E9.png differ diff --git a/fonts/MortalFont80/24EB.png b/fonts/MortalFont80/24EB.png new file mode 100644 index 000000000..885d4ffc1 Binary files /dev/null and b/fonts/MortalFont80/24EB.png differ diff --git a/fonts/MortalFont80/24EC.png b/fonts/MortalFont80/24EC.png new file mode 100644 index 000000000..3490f5059 Binary files /dev/null and b/fonts/MortalFont80/24EC.png differ diff --git a/fonts/MortalFont80/24ED.png b/fonts/MortalFont80/24ED.png new file mode 100644 index 000000000..ecdf90776 Binary files /dev/null and b/fonts/MortalFont80/24ED.png differ diff --git a/fonts/MortalFont80/24EE.png b/fonts/MortalFont80/24EE.png new file mode 100644 index 000000000..3fac69140 Binary files /dev/null and b/fonts/MortalFont80/24EE.png differ diff --git a/fonts/MortalFont80/24EF.png b/fonts/MortalFont80/24EF.png new file mode 100644 index 000000000..8b53d29a8 Binary files /dev/null and b/fonts/MortalFont80/24EF.png differ diff --git a/fonts/MortalFont80/24F0.png b/fonts/MortalFont80/24F0.png new file mode 100644 index 000000000..379a4383e Binary files /dev/null and b/fonts/MortalFont80/24F0.png differ diff --git a/fonts/MortalFont80/24F1.png b/fonts/MortalFont80/24F1.png new file mode 100644 index 000000000..c079c1d6e Binary files /dev/null and b/fonts/MortalFont80/24F1.png differ diff --git a/fonts/MortalFont80/24F2.png b/fonts/MortalFont80/24F2.png new file mode 100644 index 000000000..dc25fad39 Binary files /dev/null and b/fonts/MortalFont80/24F2.png differ diff --git a/fonts/MortalFont80/24F3.png b/fonts/MortalFont80/24F3.png new file mode 100644 index 000000000..70f93ba22 Binary files /dev/null and b/fonts/MortalFont80/24F3.png differ diff --git a/fonts/MortalFont80/24F4.png b/fonts/MortalFont80/24F4.png new file mode 100644 index 000000000..99dc51503 Binary files /dev/null and b/fonts/MortalFont80/24F4.png differ diff --git a/fonts/MortalFont80/24F5.png b/fonts/MortalFont80/24F5.png new file mode 100644 index 000000000..db5506975 Binary files /dev/null and b/fonts/MortalFont80/24F5.png differ diff --git a/fonts/MortalFont80/24F6.png b/fonts/MortalFont80/24F6.png new file mode 100644 index 000000000..17c9b22d0 Binary files /dev/null and b/fonts/MortalFont80/24F6.png differ diff --git a/fonts/MortalFont80/24F7.png b/fonts/MortalFont80/24F7.png new file mode 100644 index 000000000..11c66f584 Binary files /dev/null and b/fonts/MortalFont80/24F7.png differ diff --git a/fonts/MortalFont80/24F8.png b/fonts/MortalFont80/24F8.png new file mode 100644 index 000000000..0fe0566df Binary files /dev/null and b/fonts/MortalFont80/24F8.png differ diff --git a/fonts/MortalFont80/24F9.png b/fonts/MortalFont80/24F9.png new file mode 100644 index 000000000..970fefc1d Binary files /dev/null and b/fonts/MortalFont80/24F9.png differ diff --git a/fonts/MortalFont80/24FA.png b/fonts/MortalFont80/24FA.png new file mode 100644 index 000000000..11ad65b27 Binary files /dev/null and b/fonts/MortalFont80/24FA.png differ diff --git a/fonts/MortalFont80/24FB.png b/fonts/MortalFont80/24FB.png new file mode 100644 index 000000000..3d8e2a321 Binary files /dev/null and b/fonts/MortalFont80/24FB.png differ diff --git a/fonts/MortalFont80/24FC.png b/fonts/MortalFont80/24FC.png new file mode 100644 index 000000000..ea4a5999f Binary files /dev/null and b/fonts/MortalFont80/24FC.png differ diff --git a/fonts/MortalFont80/24FD.png b/fonts/MortalFont80/24FD.png new file mode 100644 index 000000000..ad6e35f28 Binary files /dev/null and b/fonts/MortalFont80/24FD.png differ diff --git a/fonts/MortalFont80/24FE.png b/fonts/MortalFont80/24FE.png new file mode 100644 index 000000000..be56437a7 Binary files /dev/null and b/fonts/MortalFont80/24FE.png differ diff --git a/fonts/MortalFont80/2500.png b/fonts/MortalFont80/2500.png new file mode 100644 index 000000000..9802ccc7e Binary files /dev/null and b/fonts/MortalFont80/2500.png differ diff --git a/fonts/MortalFont80/2501.png b/fonts/MortalFont80/2501.png new file mode 100644 index 000000000..3c18d5465 Binary files /dev/null and b/fonts/MortalFont80/2501.png differ diff --git a/fonts/MortalFont80/2502.png b/fonts/MortalFont80/2502.png new file mode 100644 index 000000000..3c0f47d93 Binary files /dev/null and b/fonts/MortalFont80/2502.png differ diff --git a/fonts/MortalFont80/2503.png b/fonts/MortalFont80/2503.png new file mode 100644 index 000000000..545c12db4 Binary files /dev/null and b/fonts/MortalFont80/2503.png differ diff --git a/fonts/MortalFont80/250C.png b/fonts/MortalFont80/250C.png new file mode 100644 index 000000000..5baae454a Binary files /dev/null and b/fonts/MortalFont80/250C.png differ diff --git a/fonts/MortalFont80/250F.png b/fonts/MortalFont80/250F.png new file mode 100644 index 000000000..dd5d2ac94 Binary files /dev/null and b/fonts/MortalFont80/250F.png differ diff --git a/fonts/MortalFont80/2510.png b/fonts/MortalFont80/2510.png new file mode 100644 index 000000000..58790a361 Binary files /dev/null and b/fonts/MortalFont80/2510.png differ diff --git a/fonts/MortalFont80/2513.png b/fonts/MortalFont80/2513.png new file mode 100644 index 000000000..559e417aa Binary files /dev/null and b/fonts/MortalFont80/2513.png differ diff --git a/fonts/MortalFont80/2514.png b/fonts/MortalFont80/2514.png new file mode 100644 index 000000000..ec0b1f681 Binary files /dev/null and b/fonts/MortalFont80/2514.png differ diff --git a/fonts/MortalFont80/2517.png b/fonts/MortalFont80/2517.png new file mode 100644 index 000000000..c654214cb Binary files /dev/null and b/fonts/MortalFont80/2517.png differ diff --git a/fonts/MortalFont80/2518.png b/fonts/MortalFont80/2518.png new file mode 100644 index 000000000..184e090dd Binary files /dev/null and b/fonts/MortalFont80/2518.png differ diff --git a/fonts/MortalFont80/251B.png b/fonts/MortalFont80/251B.png new file mode 100644 index 000000000..440d1a98b Binary files /dev/null and b/fonts/MortalFont80/251B.png differ diff --git a/fonts/MortalFont80/251C.png b/fonts/MortalFont80/251C.png new file mode 100644 index 000000000..4a46c547f Binary files /dev/null and b/fonts/MortalFont80/251C.png differ diff --git a/fonts/MortalFont80/251D.png b/fonts/MortalFont80/251D.png new file mode 100644 index 000000000..0d898f43b Binary files /dev/null and b/fonts/MortalFont80/251D.png differ diff --git a/fonts/MortalFont80/2520.png b/fonts/MortalFont80/2520.png new file mode 100644 index 000000000..063d6d300 Binary files /dev/null and b/fonts/MortalFont80/2520.png differ diff --git a/fonts/MortalFont80/2523.png b/fonts/MortalFont80/2523.png new file mode 100644 index 000000000..32374c0e1 Binary files /dev/null and b/fonts/MortalFont80/2523.png differ diff --git a/fonts/MortalFont80/2524.png b/fonts/MortalFont80/2524.png new file mode 100644 index 000000000..2e4295f7e Binary files /dev/null and b/fonts/MortalFont80/2524.png differ diff --git a/fonts/MortalFont80/2525.png b/fonts/MortalFont80/2525.png new file mode 100644 index 000000000..c5566ea7a Binary files /dev/null and b/fonts/MortalFont80/2525.png differ diff --git a/fonts/MortalFont80/2528.png b/fonts/MortalFont80/2528.png new file mode 100644 index 000000000..448c2adcf Binary files /dev/null and b/fonts/MortalFont80/2528.png differ diff --git a/fonts/MortalFont80/252B.png b/fonts/MortalFont80/252B.png new file mode 100644 index 000000000..e7d0508ed Binary files /dev/null and b/fonts/MortalFont80/252B.png differ diff --git a/fonts/MortalFont80/252C.png b/fonts/MortalFont80/252C.png new file mode 100644 index 000000000..a457c78d1 Binary files /dev/null and b/fonts/MortalFont80/252C.png differ diff --git a/fonts/MortalFont80/252F.png b/fonts/MortalFont80/252F.png new file mode 100644 index 000000000..dc67834ee Binary files /dev/null and b/fonts/MortalFont80/252F.png differ diff --git a/fonts/MortalFont80/2530.png b/fonts/MortalFont80/2530.png new file mode 100644 index 000000000..d58c7309e Binary files /dev/null and b/fonts/MortalFont80/2530.png differ diff --git a/fonts/MortalFont80/2533.png b/fonts/MortalFont80/2533.png new file mode 100644 index 000000000..724365487 Binary files /dev/null and b/fonts/MortalFont80/2533.png differ diff --git a/fonts/MortalFont80/2534.png b/fonts/MortalFont80/2534.png new file mode 100644 index 000000000..0decf62a5 Binary files /dev/null and b/fonts/MortalFont80/2534.png differ diff --git a/fonts/MortalFont80/2537.png b/fonts/MortalFont80/2537.png new file mode 100644 index 000000000..0fc501e61 Binary files /dev/null and b/fonts/MortalFont80/2537.png differ diff --git a/fonts/MortalFont80/2538.png b/fonts/MortalFont80/2538.png new file mode 100644 index 000000000..ff049bdcc Binary files /dev/null and b/fonts/MortalFont80/2538.png differ diff --git a/fonts/MortalFont80/253B.png b/fonts/MortalFont80/253B.png new file mode 100644 index 000000000..68d0017a2 Binary files /dev/null and b/fonts/MortalFont80/253B.png differ diff --git a/fonts/MortalFont80/253C.png b/fonts/MortalFont80/253C.png new file mode 100644 index 000000000..771125375 Binary files /dev/null and b/fonts/MortalFont80/253C.png differ diff --git a/fonts/MortalFont80/253F.png b/fonts/MortalFont80/253F.png new file mode 100644 index 000000000..a99993182 Binary files /dev/null and b/fonts/MortalFont80/253F.png differ diff --git a/fonts/MortalFont80/2542.png b/fonts/MortalFont80/2542.png new file mode 100644 index 000000000..ce37476c1 Binary files /dev/null and b/fonts/MortalFont80/2542.png differ diff --git a/fonts/MortalFont80/254B.png b/fonts/MortalFont80/254B.png new file mode 100644 index 000000000..c62a4637e Binary files /dev/null and b/fonts/MortalFont80/254B.png differ diff --git a/fonts/MortalFont80/25A0.png b/fonts/MortalFont80/25A0.png new file mode 100644 index 000000000..51ccf7128 Binary files /dev/null and b/fonts/MortalFont80/25A0.png differ diff --git a/fonts/MortalFont80/25A1.png b/fonts/MortalFont80/25A1.png new file mode 100644 index 000000000..1b31824a5 Binary files /dev/null and b/fonts/MortalFont80/25A1.png differ diff --git a/fonts/MortalFont80/25B1.png b/fonts/MortalFont80/25B1.png new file mode 100644 index 000000000..763f5f391 Binary files /dev/null and b/fonts/MortalFont80/25B1.png differ diff --git a/fonts/MortalFont80/25B2.png b/fonts/MortalFont80/25B2.png new file mode 100644 index 000000000..cbe9e454d Binary files /dev/null and b/fonts/MortalFont80/25B2.png differ diff --git a/fonts/MortalFont80/25B3.png b/fonts/MortalFont80/25B3.png new file mode 100644 index 000000000..2c955e9b7 Binary files /dev/null and b/fonts/MortalFont80/25B3.png differ diff --git a/fonts/MortalFont80/25B6.png b/fonts/MortalFont80/25B6.png new file mode 100644 index 000000000..508e4144c Binary files /dev/null and b/fonts/MortalFont80/25B6.png differ diff --git a/fonts/MortalFont80/25B7.png b/fonts/MortalFont80/25B7.png new file mode 100644 index 000000000..fc98a51f9 Binary files /dev/null and b/fonts/MortalFont80/25B7.png differ diff --git a/fonts/MortalFont80/25BC.png b/fonts/MortalFont80/25BC.png new file mode 100644 index 000000000..ca6c894d7 Binary files /dev/null and b/fonts/MortalFont80/25BC.png differ diff --git a/fonts/MortalFont80/25BD.png b/fonts/MortalFont80/25BD.png new file mode 100644 index 000000000..70dcc7e1a Binary files /dev/null and b/fonts/MortalFont80/25BD.png differ diff --git a/fonts/MortalFont80/25C0.png b/fonts/MortalFont80/25C0.png new file mode 100644 index 000000000..026a86190 Binary files /dev/null and b/fonts/MortalFont80/25C0.png differ diff --git a/fonts/MortalFont80/25C1.png b/fonts/MortalFont80/25C1.png new file mode 100644 index 000000000..cda628559 Binary files /dev/null and b/fonts/MortalFont80/25C1.png differ diff --git a/fonts/MortalFont80/25C6.png b/fonts/MortalFont80/25C6.png new file mode 100644 index 000000000..cbeda2e0f Binary files /dev/null and b/fonts/MortalFont80/25C6.png differ diff --git a/fonts/MortalFont80/25C7.png b/fonts/MortalFont80/25C7.png new file mode 100644 index 000000000..44b9cebfa Binary files /dev/null and b/fonts/MortalFont80/25C7.png differ diff --git a/fonts/MortalFont80/25C9.png b/fonts/MortalFont80/25C9.png new file mode 100644 index 000000000..22ad061a3 Binary files /dev/null and b/fonts/MortalFont80/25C9.png differ diff --git a/fonts/MortalFont80/25CB.png b/fonts/MortalFont80/25CB.png new file mode 100644 index 000000000..740dcfa50 Binary files /dev/null and b/fonts/MortalFont80/25CB.png differ diff --git a/fonts/MortalFont80/25CE.png b/fonts/MortalFont80/25CE.png new file mode 100644 index 000000000..c2c80e17e Binary files /dev/null and b/fonts/MortalFont80/25CE.png differ diff --git a/fonts/MortalFont80/25CF.png b/fonts/MortalFont80/25CF.png new file mode 100644 index 000000000..8fde3e91d Binary files /dev/null and b/fonts/MortalFont80/25CF.png differ diff --git a/fonts/MortalFont80/25D0.png b/fonts/MortalFont80/25D0.png new file mode 100644 index 000000000..78fd6a3f2 Binary files /dev/null and b/fonts/MortalFont80/25D0.png differ diff --git a/fonts/MortalFont80/25D1.png b/fonts/MortalFont80/25D1.png new file mode 100644 index 000000000..62f2018dc Binary files /dev/null and b/fonts/MortalFont80/25D1.png differ diff --git a/fonts/MortalFont80/25D2.png b/fonts/MortalFont80/25D2.png new file mode 100644 index 000000000..d23083d1c Binary files /dev/null and b/fonts/MortalFont80/25D2.png differ diff --git a/fonts/MortalFont80/25D3.png b/fonts/MortalFont80/25D3.png new file mode 100644 index 000000000..e57804881 Binary files /dev/null and b/fonts/MortalFont80/25D3.png differ diff --git a/fonts/MortalFont80/25E6.png b/fonts/MortalFont80/25E6.png new file mode 100644 index 000000000..23f9ffd71 Binary files /dev/null and b/fonts/MortalFont80/25E6.png differ diff --git a/fonts/MortalFont80/25EF.png b/fonts/MortalFont80/25EF.png new file mode 100644 index 000000000..a8fdaa248 Binary files /dev/null and b/fonts/MortalFont80/25EF.png differ diff --git a/fonts/MortalFont80/2600.png b/fonts/MortalFont80/2600.png new file mode 100644 index 000000000..aefb4cf52 Binary files /dev/null and b/fonts/MortalFont80/2600.png differ diff --git a/fonts/MortalFont80/2601.png b/fonts/MortalFont80/2601.png new file mode 100644 index 000000000..7ce2deb21 Binary files /dev/null and b/fonts/MortalFont80/2601.png differ diff --git a/fonts/MortalFont80/2602.png b/fonts/MortalFont80/2602.png new file mode 100644 index 000000000..5be4fcbe1 Binary files /dev/null and b/fonts/MortalFont80/2602.png differ diff --git a/fonts/MortalFont80/2603.png b/fonts/MortalFont80/2603.png new file mode 100644 index 000000000..0737ec24b Binary files /dev/null and b/fonts/MortalFont80/2603.png differ diff --git a/fonts/MortalFont80/2605.png b/fonts/MortalFont80/2605.png new file mode 100644 index 000000000..328eab885 Binary files /dev/null and b/fonts/MortalFont80/2605.png differ diff --git a/fonts/MortalFont80/2606.png b/fonts/MortalFont80/2606.png new file mode 100644 index 000000000..81bc96fcb Binary files /dev/null and b/fonts/MortalFont80/2606.png differ diff --git a/fonts/MortalFont80/260E.png b/fonts/MortalFont80/260E.png new file mode 100644 index 000000000..98c1c0c91 Binary files /dev/null and b/fonts/MortalFont80/260E.png differ diff --git a/fonts/MortalFont80/2616.png b/fonts/MortalFont80/2616.png new file mode 100644 index 000000000..e4b23c535 Binary files /dev/null and b/fonts/MortalFont80/2616.png differ diff --git a/fonts/MortalFont80/2617.png b/fonts/MortalFont80/2617.png new file mode 100644 index 000000000..307a90b81 Binary files /dev/null and b/fonts/MortalFont80/2617.png differ diff --git a/fonts/MortalFont80/261E.png b/fonts/MortalFont80/261E.png new file mode 100644 index 000000000..e5c9fead9 Binary files /dev/null and b/fonts/MortalFont80/261E.png differ diff --git a/fonts/MortalFont80/2640.png b/fonts/MortalFont80/2640.png new file mode 100644 index 000000000..6c0df2f08 Binary files /dev/null and b/fonts/MortalFont80/2640.png differ diff --git a/fonts/MortalFont80/2642.png b/fonts/MortalFont80/2642.png new file mode 100644 index 000000000..5cddccea7 Binary files /dev/null and b/fonts/MortalFont80/2642.png differ diff --git a/fonts/MortalFont80/2660.png b/fonts/MortalFont80/2660.png new file mode 100644 index 000000000..b86f9f927 Binary files /dev/null and b/fonts/MortalFont80/2660.png differ diff --git a/fonts/MortalFont80/2661.png b/fonts/MortalFont80/2661.png new file mode 100644 index 000000000..35c8e6c1d Binary files /dev/null and b/fonts/MortalFont80/2661.png differ diff --git a/fonts/MortalFont80/2662.png b/fonts/MortalFont80/2662.png new file mode 100644 index 000000000..88b052c7b Binary files /dev/null and b/fonts/MortalFont80/2662.png differ diff --git a/fonts/MortalFont80/2663.png b/fonts/MortalFont80/2663.png new file mode 100644 index 000000000..a1aeb6b2d Binary files /dev/null and b/fonts/MortalFont80/2663.png differ diff --git a/fonts/MortalFont80/2664.png b/fonts/MortalFont80/2664.png new file mode 100644 index 000000000..cd7eb943b Binary files /dev/null and b/fonts/MortalFont80/2664.png differ diff --git a/fonts/MortalFont80/2665.png b/fonts/MortalFont80/2665.png new file mode 100644 index 000000000..72fa584ed Binary files /dev/null and b/fonts/MortalFont80/2665.png differ diff --git a/fonts/MortalFont80/2666.png b/fonts/MortalFont80/2666.png new file mode 100644 index 000000000..723b1eef1 Binary files /dev/null and b/fonts/MortalFont80/2666.png differ diff --git a/fonts/MortalFont80/2667.png b/fonts/MortalFont80/2667.png new file mode 100644 index 000000000..356e8b26d Binary files /dev/null and b/fonts/MortalFont80/2667.png differ diff --git a/fonts/MortalFont80/2668.png b/fonts/MortalFont80/2668.png new file mode 100644 index 000000000..b026d95d8 Binary files /dev/null and b/fonts/MortalFont80/2668.png differ diff --git a/fonts/MortalFont80/2669.png b/fonts/MortalFont80/2669.png new file mode 100644 index 000000000..0e14d644b Binary files /dev/null and b/fonts/MortalFont80/2669.png differ diff --git a/fonts/MortalFont80/266A.png b/fonts/MortalFont80/266A.png new file mode 100644 index 000000000..710e2ae64 Binary files /dev/null and b/fonts/MortalFont80/266A.png differ diff --git a/fonts/MortalFont80/266B.png b/fonts/MortalFont80/266B.png new file mode 100644 index 000000000..9fc1a3548 Binary files /dev/null and b/fonts/MortalFont80/266B.png differ diff --git a/fonts/MortalFont80/266C.png b/fonts/MortalFont80/266C.png new file mode 100644 index 000000000..71d884f8f Binary files /dev/null and b/fonts/MortalFont80/266C.png differ diff --git a/fonts/MortalFont80/266D.png b/fonts/MortalFont80/266D.png new file mode 100644 index 000000000..84b615240 Binary files /dev/null and b/fonts/MortalFont80/266D.png differ diff --git a/fonts/MortalFont80/266E.png b/fonts/MortalFont80/266E.png new file mode 100644 index 000000000..4ef28eb99 Binary files /dev/null and b/fonts/MortalFont80/266E.png differ diff --git a/fonts/MortalFont80/266F.png b/fonts/MortalFont80/266F.png new file mode 100644 index 000000000..6ec768e7e Binary files /dev/null and b/fonts/MortalFont80/266F.png differ diff --git a/fonts/MortalFont80/2713.png b/fonts/MortalFont80/2713.png new file mode 100644 index 000000000..011caa7c8 Binary files /dev/null and b/fonts/MortalFont80/2713.png differ diff --git a/fonts/MortalFont80/2756.png b/fonts/MortalFont80/2756.png new file mode 100644 index 000000000..67eaa344c Binary files /dev/null and b/fonts/MortalFont80/2756.png differ diff --git a/fonts/MortalFont80/2776.png b/fonts/MortalFont80/2776.png new file mode 100644 index 000000000..4c86c087a Binary files /dev/null and b/fonts/MortalFont80/2776.png differ diff --git a/fonts/MortalFont80/2777.png b/fonts/MortalFont80/2777.png new file mode 100644 index 000000000..ab5f75ea0 Binary files /dev/null and b/fonts/MortalFont80/2777.png differ diff --git a/fonts/MortalFont80/2778.png b/fonts/MortalFont80/2778.png new file mode 100644 index 000000000..0dfc37886 Binary files /dev/null and b/fonts/MortalFont80/2778.png differ diff --git a/fonts/MortalFont80/2779.png b/fonts/MortalFont80/2779.png new file mode 100644 index 000000000..8e48aa0c8 Binary files /dev/null and b/fonts/MortalFont80/2779.png differ diff --git a/fonts/MortalFont80/277A.png b/fonts/MortalFont80/277A.png new file mode 100644 index 000000000..ecf5fbd69 Binary files /dev/null and b/fonts/MortalFont80/277A.png differ diff --git a/fonts/MortalFont80/277B.png b/fonts/MortalFont80/277B.png new file mode 100644 index 000000000..b3dcb1429 Binary files /dev/null and b/fonts/MortalFont80/277B.png differ diff --git a/fonts/MortalFont80/277C.png b/fonts/MortalFont80/277C.png new file mode 100644 index 000000000..26e951848 Binary files /dev/null and b/fonts/MortalFont80/277C.png differ diff --git a/fonts/MortalFont80/277D.png b/fonts/MortalFont80/277D.png new file mode 100644 index 000000000..1db92428e Binary files /dev/null and b/fonts/MortalFont80/277D.png differ diff --git a/fonts/MortalFont80/277E.png b/fonts/MortalFont80/277E.png new file mode 100644 index 000000000..924794a47 Binary files /dev/null and b/fonts/MortalFont80/277E.png differ diff --git a/fonts/MortalFont80/277F.png b/fonts/MortalFont80/277F.png new file mode 100644 index 000000000..1e845bc17 Binary files /dev/null and b/fonts/MortalFont80/277F.png differ diff --git a/fonts/MortalFont80/2934.png b/fonts/MortalFont80/2934.png new file mode 100644 index 000000000..9a1de344c Binary files /dev/null and b/fonts/MortalFont80/2934.png differ diff --git a/fonts/MortalFont80/2935.png b/fonts/MortalFont80/2935.png new file mode 100644 index 000000000..aa27ca36a Binary files /dev/null and b/fonts/MortalFont80/2935.png differ diff --git a/fonts/MortalFont80/29BF.png b/fonts/MortalFont80/29BF.png new file mode 100644 index 000000000..9e288821c Binary files /dev/null and b/fonts/MortalFont80/29BF.png differ diff --git a/fonts/MortalFont80/29FA.png b/fonts/MortalFont80/29FA.png new file mode 100644 index 000000000..11a0cdbcf Binary files /dev/null and b/fonts/MortalFont80/29FA.png differ diff --git a/fonts/MortalFont80/29FB.png b/fonts/MortalFont80/29FB.png new file mode 100644 index 000000000..a049433ba Binary files /dev/null and b/fonts/MortalFont80/29FB.png differ diff --git a/fonts/MortalFont80/FF01.png b/fonts/MortalFont80/FF01.png new file mode 100644 index 000000000..97bb9b65c Binary files /dev/null and b/fonts/MortalFont80/FF01.png differ diff --git a/fonts/MortalFont80/FF02.png b/fonts/MortalFont80/FF02.png new file mode 100644 index 000000000..2ba850a07 Binary files /dev/null and b/fonts/MortalFont80/FF02.png differ diff --git a/fonts/MortalFont80/FF03.png b/fonts/MortalFont80/FF03.png new file mode 100644 index 000000000..d01229c64 Binary files /dev/null and b/fonts/MortalFont80/FF03.png differ diff --git a/fonts/MortalFont80/FF04.png b/fonts/MortalFont80/FF04.png new file mode 100644 index 000000000..ba8363118 Binary files /dev/null and b/fonts/MortalFont80/FF04.png differ diff --git a/fonts/MortalFont80/FF05.png b/fonts/MortalFont80/FF05.png new file mode 100644 index 000000000..b3af7e324 Binary files /dev/null and b/fonts/MortalFont80/FF05.png differ diff --git a/fonts/MortalFont80/FF06.png b/fonts/MortalFont80/FF06.png new file mode 100644 index 000000000..d5624d4b6 Binary files /dev/null and b/fonts/MortalFont80/FF06.png differ diff --git a/fonts/MortalFont80/FF07.png b/fonts/MortalFont80/FF07.png new file mode 100644 index 000000000..cb85e22b9 Binary files /dev/null and b/fonts/MortalFont80/FF07.png differ diff --git a/fonts/MortalFont80/FF08.png b/fonts/MortalFont80/FF08.png new file mode 100644 index 000000000..01008386b Binary files /dev/null and b/fonts/MortalFont80/FF08.png differ diff --git a/fonts/MortalFont80/FF09.png b/fonts/MortalFont80/FF09.png new file mode 100644 index 000000000..5fb8d9136 Binary files /dev/null and b/fonts/MortalFont80/FF09.png differ diff --git a/fonts/MortalFont80/FF0A.png b/fonts/MortalFont80/FF0A.png new file mode 100644 index 000000000..801ad7cf3 Binary files /dev/null and b/fonts/MortalFont80/FF0A.png differ diff --git a/fonts/MortalFont80/FF0B.png b/fonts/MortalFont80/FF0B.png new file mode 100644 index 000000000..3e05d8a36 Binary files /dev/null and b/fonts/MortalFont80/FF0B.png differ diff --git a/fonts/MortalFont80/FF0C.png b/fonts/MortalFont80/FF0C.png new file mode 100644 index 000000000..1b9ed6059 Binary files /dev/null and b/fonts/MortalFont80/FF0C.png differ diff --git a/fonts/MortalFont80/FF0D.png b/fonts/MortalFont80/FF0D.png new file mode 100644 index 000000000..3f144376c Binary files /dev/null and b/fonts/MortalFont80/FF0D.png differ diff --git a/fonts/MortalFont80/FF0E.png b/fonts/MortalFont80/FF0E.png new file mode 100644 index 000000000..4d532290b Binary files /dev/null and b/fonts/MortalFont80/FF0E.png differ diff --git a/fonts/MortalFont80/FF0F.png b/fonts/MortalFont80/FF0F.png new file mode 100644 index 000000000..8ec173ff8 Binary files /dev/null and b/fonts/MortalFont80/FF0F.png differ diff --git a/fonts/MortalFont80/FF10.png b/fonts/MortalFont80/FF10.png new file mode 100644 index 000000000..d1b1bf574 Binary files /dev/null and b/fonts/MortalFont80/FF10.png differ diff --git a/fonts/MortalFont80/FF11.png b/fonts/MortalFont80/FF11.png new file mode 100644 index 000000000..7b0274885 Binary files /dev/null and b/fonts/MortalFont80/FF11.png differ diff --git a/fonts/MortalFont80/FF12.png b/fonts/MortalFont80/FF12.png new file mode 100644 index 000000000..9b663053c Binary files /dev/null and b/fonts/MortalFont80/FF12.png differ diff --git a/fonts/MortalFont80/FF13.png b/fonts/MortalFont80/FF13.png new file mode 100644 index 000000000..c39444c41 Binary files /dev/null and b/fonts/MortalFont80/FF13.png differ diff --git a/fonts/MortalFont80/FF14.png b/fonts/MortalFont80/FF14.png new file mode 100644 index 000000000..f4b56cd0b Binary files /dev/null and b/fonts/MortalFont80/FF14.png differ diff --git a/fonts/MortalFont80/FF15.png b/fonts/MortalFont80/FF15.png new file mode 100644 index 000000000..f80bffece Binary files /dev/null and b/fonts/MortalFont80/FF15.png differ diff --git a/fonts/MortalFont80/FF16.png b/fonts/MortalFont80/FF16.png new file mode 100644 index 000000000..1f821db53 Binary files /dev/null and b/fonts/MortalFont80/FF16.png differ diff --git a/fonts/MortalFont80/FF17.png b/fonts/MortalFont80/FF17.png new file mode 100644 index 000000000..f7ca078ed Binary files /dev/null and b/fonts/MortalFont80/FF17.png differ diff --git a/fonts/MortalFont80/FF18.png b/fonts/MortalFont80/FF18.png new file mode 100644 index 000000000..2d6fc356f Binary files /dev/null and b/fonts/MortalFont80/FF18.png differ diff --git a/fonts/MortalFont80/FF19.png b/fonts/MortalFont80/FF19.png new file mode 100644 index 000000000..8013fa7e6 Binary files /dev/null and b/fonts/MortalFont80/FF19.png differ diff --git a/fonts/MortalFont80/FF1A.png b/fonts/MortalFont80/FF1A.png new file mode 100644 index 000000000..c3656d490 Binary files /dev/null and b/fonts/MortalFont80/FF1A.png differ diff --git a/fonts/MortalFont80/FF1B.png b/fonts/MortalFont80/FF1B.png new file mode 100644 index 000000000..89b42c843 Binary files /dev/null and b/fonts/MortalFont80/FF1B.png differ diff --git a/fonts/MortalFont80/FF1C.png b/fonts/MortalFont80/FF1C.png new file mode 100644 index 000000000..7109973b2 Binary files /dev/null and b/fonts/MortalFont80/FF1C.png differ diff --git a/fonts/MortalFont80/FF1D.png b/fonts/MortalFont80/FF1D.png new file mode 100644 index 000000000..6bda5a526 Binary files /dev/null and b/fonts/MortalFont80/FF1D.png differ diff --git a/fonts/MortalFont80/FF1E.png b/fonts/MortalFont80/FF1E.png new file mode 100644 index 000000000..15c89419c Binary files /dev/null and b/fonts/MortalFont80/FF1E.png differ diff --git a/fonts/MortalFont80/FF1F.png b/fonts/MortalFont80/FF1F.png new file mode 100644 index 000000000..c65553729 Binary files /dev/null and b/fonts/MortalFont80/FF1F.png differ diff --git a/fonts/MortalFont80/FF20.png b/fonts/MortalFont80/FF20.png new file mode 100644 index 000000000..5dd2c52e8 Binary files /dev/null and b/fonts/MortalFont80/FF20.png differ diff --git a/fonts/MortalFont80/FF21.png b/fonts/MortalFont80/FF21.png new file mode 100644 index 000000000..665cda72a Binary files /dev/null and b/fonts/MortalFont80/FF21.png differ diff --git a/fonts/MortalFont80/FF22.png b/fonts/MortalFont80/FF22.png new file mode 100644 index 000000000..e0e689c33 Binary files /dev/null and b/fonts/MortalFont80/FF22.png differ diff --git a/fonts/MortalFont80/FF23.png b/fonts/MortalFont80/FF23.png new file mode 100644 index 000000000..25421a8f0 Binary files /dev/null and b/fonts/MortalFont80/FF23.png differ diff --git a/fonts/MortalFont80/FF24.png b/fonts/MortalFont80/FF24.png new file mode 100644 index 000000000..b77ee6f0b Binary files /dev/null and b/fonts/MortalFont80/FF24.png differ diff --git a/fonts/MortalFont80/FF25.png b/fonts/MortalFont80/FF25.png new file mode 100644 index 000000000..1b44a8055 Binary files /dev/null and b/fonts/MortalFont80/FF25.png differ diff --git a/fonts/MortalFont80/FF26.png b/fonts/MortalFont80/FF26.png new file mode 100644 index 000000000..c1bb68165 Binary files /dev/null and b/fonts/MortalFont80/FF26.png differ diff --git a/fonts/MortalFont80/FF27.png b/fonts/MortalFont80/FF27.png new file mode 100644 index 000000000..e662f862e Binary files /dev/null and b/fonts/MortalFont80/FF27.png differ diff --git a/fonts/MortalFont80/FF28.png b/fonts/MortalFont80/FF28.png new file mode 100644 index 000000000..b7d1a8f5f Binary files /dev/null and b/fonts/MortalFont80/FF28.png differ diff --git a/fonts/MortalFont80/FF29.png b/fonts/MortalFont80/FF29.png new file mode 100644 index 000000000..d4d4e98c1 Binary files /dev/null and b/fonts/MortalFont80/FF29.png differ diff --git a/fonts/MortalFont80/FF2A.png b/fonts/MortalFont80/FF2A.png new file mode 100644 index 000000000..87b6dc51c Binary files /dev/null and b/fonts/MortalFont80/FF2A.png differ diff --git a/fonts/MortalFont80/FF2B.png b/fonts/MortalFont80/FF2B.png new file mode 100644 index 000000000..95fe4d970 Binary files /dev/null and b/fonts/MortalFont80/FF2B.png differ diff --git a/fonts/MortalFont80/FF2C.png b/fonts/MortalFont80/FF2C.png new file mode 100644 index 000000000..934ccba93 Binary files /dev/null and b/fonts/MortalFont80/FF2C.png differ diff --git a/fonts/MortalFont80/FF2D.png b/fonts/MortalFont80/FF2D.png new file mode 100644 index 000000000..7916b81ad Binary files /dev/null and b/fonts/MortalFont80/FF2D.png differ diff --git a/fonts/MortalFont80/FF2E.png b/fonts/MortalFont80/FF2E.png new file mode 100644 index 000000000..ce527ddbd Binary files /dev/null and b/fonts/MortalFont80/FF2E.png differ diff --git a/fonts/MortalFont80/FF2F.png b/fonts/MortalFont80/FF2F.png new file mode 100644 index 000000000..09a8947c8 Binary files /dev/null and b/fonts/MortalFont80/FF2F.png differ diff --git a/fonts/MortalFont80/FF30.png b/fonts/MortalFont80/FF30.png new file mode 100644 index 000000000..103c27661 Binary files /dev/null and b/fonts/MortalFont80/FF30.png differ diff --git a/fonts/MortalFont80/FF31.png b/fonts/MortalFont80/FF31.png new file mode 100644 index 000000000..c44d1c52a Binary files /dev/null and b/fonts/MortalFont80/FF31.png differ diff --git a/fonts/MortalFont80/FF32.png b/fonts/MortalFont80/FF32.png new file mode 100644 index 000000000..2aaac5b58 Binary files /dev/null and b/fonts/MortalFont80/FF32.png differ diff --git a/fonts/MortalFont80/FF33.png b/fonts/MortalFont80/FF33.png new file mode 100644 index 000000000..c661cb500 Binary files /dev/null and b/fonts/MortalFont80/FF33.png differ diff --git a/fonts/MortalFont80/FF34.png b/fonts/MortalFont80/FF34.png new file mode 100644 index 000000000..e251580ab Binary files /dev/null and b/fonts/MortalFont80/FF34.png differ diff --git a/fonts/MortalFont80/FF35.png b/fonts/MortalFont80/FF35.png new file mode 100644 index 000000000..143cc5349 Binary files /dev/null and b/fonts/MortalFont80/FF35.png differ diff --git a/fonts/MortalFont80/FF36.png b/fonts/MortalFont80/FF36.png new file mode 100644 index 000000000..afc882a31 Binary files /dev/null and b/fonts/MortalFont80/FF36.png differ diff --git a/fonts/MortalFont80/FF37.png b/fonts/MortalFont80/FF37.png new file mode 100644 index 000000000..4c2c48c99 Binary files /dev/null and b/fonts/MortalFont80/FF37.png differ diff --git a/fonts/MortalFont80/FF38.png b/fonts/MortalFont80/FF38.png new file mode 100644 index 000000000..dd8e5bd6d Binary files /dev/null and b/fonts/MortalFont80/FF38.png differ diff --git a/fonts/MortalFont80/FF39.png b/fonts/MortalFont80/FF39.png new file mode 100644 index 000000000..a67aa4e30 Binary files /dev/null and b/fonts/MortalFont80/FF39.png differ diff --git a/fonts/MortalFont80/FF3A.png b/fonts/MortalFont80/FF3A.png new file mode 100644 index 000000000..b90dfd662 Binary files /dev/null and b/fonts/MortalFont80/FF3A.png differ diff --git a/fonts/MortalFont80/FF3B.png b/fonts/MortalFont80/FF3B.png new file mode 100644 index 000000000..06cd5d829 Binary files /dev/null and b/fonts/MortalFont80/FF3B.png differ diff --git a/fonts/MortalFont80/FF3C.png b/fonts/MortalFont80/FF3C.png new file mode 100644 index 000000000..c61ba14d6 Binary files /dev/null and b/fonts/MortalFont80/FF3C.png differ diff --git a/fonts/MortalFont80/FF3D.png b/fonts/MortalFont80/FF3D.png new file mode 100644 index 000000000..6e48c01ee Binary files /dev/null and b/fonts/MortalFont80/FF3D.png differ diff --git a/fonts/MortalFont80/FF3E.png b/fonts/MortalFont80/FF3E.png new file mode 100644 index 000000000..660ef5910 Binary files /dev/null and b/fonts/MortalFont80/FF3E.png differ diff --git a/fonts/MortalFont80/FF3F.png b/fonts/MortalFont80/FF3F.png new file mode 100644 index 000000000..d53e941c9 Binary files /dev/null and b/fonts/MortalFont80/FF3F.png differ diff --git a/fonts/MortalFont80/FF40.png b/fonts/MortalFont80/FF40.png new file mode 100644 index 000000000..64367d7d5 Binary files /dev/null and b/fonts/MortalFont80/FF40.png differ diff --git a/fonts/MortalFont80/FF41.png b/fonts/MortalFont80/FF41.png new file mode 100644 index 000000000..bac332dd0 Binary files /dev/null and b/fonts/MortalFont80/FF41.png differ diff --git a/fonts/MortalFont80/FF42.png b/fonts/MortalFont80/FF42.png new file mode 100644 index 000000000..1b180241d Binary files /dev/null and b/fonts/MortalFont80/FF42.png differ diff --git a/fonts/MortalFont80/FF43.png b/fonts/MortalFont80/FF43.png new file mode 100644 index 000000000..0b732d32c Binary files /dev/null and b/fonts/MortalFont80/FF43.png differ diff --git a/fonts/MortalFont80/FF44.png b/fonts/MortalFont80/FF44.png new file mode 100644 index 000000000..7245487e7 Binary files /dev/null and b/fonts/MortalFont80/FF44.png differ diff --git a/fonts/MortalFont80/FF45.png b/fonts/MortalFont80/FF45.png new file mode 100644 index 000000000..a63cedc37 Binary files /dev/null and b/fonts/MortalFont80/FF45.png differ diff --git a/fonts/MortalFont80/FF46.png b/fonts/MortalFont80/FF46.png new file mode 100644 index 000000000..e62c7c906 Binary files /dev/null and b/fonts/MortalFont80/FF46.png differ diff --git a/fonts/MortalFont80/FF47.png b/fonts/MortalFont80/FF47.png new file mode 100644 index 000000000..8cd31b757 Binary files /dev/null and b/fonts/MortalFont80/FF47.png differ diff --git a/fonts/MortalFont80/FF48.png b/fonts/MortalFont80/FF48.png new file mode 100644 index 000000000..780a2f44f Binary files /dev/null and b/fonts/MortalFont80/FF48.png differ diff --git a/fonts/MortalFont80/FF49.png b/fonts/MortalFont80/FF49.png new file mode 100644 index 000000000..d663a3996 Binary files /dev/null and b/fonts/MortalFont80/FF49.png differ diff --git a/fonts/MortalFont80/FF4A.png b/fonts/MortalFont80/FF4A.png new file mode 100644 index 000000000..6651c0c34 Binary files /dev/null and b/fonts/MortalFont80/FF4A.png differ diff --git a/fonts/MortalFont80/FF4B.png b/fonts/MortalFont80/FF4B.png new file mode 100644 index 000000000..b8e70c8fc Binary files /dev/null and b/fonts/MortalFont80/FF4B.png differ diff --git a/fonts/MortalFont80/FF4C.png b/fonts/MortalFont80/FF4C.png new file mode 100644 index 000000000..6b11d382f Binary files /dev/null and b/fonts/MortalFont80/FF4C.png differ diff --git a/fonts/MortalFont80/FF4D.png b/fonts/MortalFont80/FF4D.png new file mode 100644 index 000000000..beb1b253d Binary files /dev/null and b/fonts/MortalFont80/FF4D.png differ diff --git a/fonts/MortalFont80/FF4E.png b/fonts/MortalFont80/FF4E.png new file mode 100644 index 000000000..439a2ce5a Binary files /dev/null and b/fonts/MortalFont80/FF4E.png differ diff --git a/fonts/MortalFont80/FF4F.png b/fonts/MortalFont80/FF4F.png new file mode 100644 index 000000000..51d6a8e84 Binary files /dev/null and b/fonts/MortalFont80/FF4F.png differ diff --git a/fonts/MortalFont80/FF50.png b/fonts/MortalFont80/FF50.png new file mode 100644 index 000000000..d70d694e6 Binary files /dev/null and b/fonts/MortalFont80/FF50.png differ diff --git a/fonts/MortalFont80/FF51.png b/fonts/MortalFont80/FF51.png new file mode 100644 index 000000000..e3e9cd332 Binary files /dev/null and b/fonts/MortalFont80/FF51.png differ diff --git a/fonts/MortalFont80/FF52.png b/fonts/MortalFont80/FF52.png new file mode 100644 index 000000000..514423764 Binary files /dev/null and b/fonts/MortalFont80/FF52.png differ diff --git a/fonts/MortalFont80/FF53.png b/fonts/MortalFont80/FF53.png new file mode 100644 index 000000000..f1559ac8f Binary files /dev/null and b/fonts/MortalFont80/FF53.png differ diff --git a/fonts/MortalFont80/FF54.png b/fonts/MortalFont80/FF54.png new file mode 100644 index 000000000..e054e764e Binary files /dev/null and b/fonts/MortalFont80/FF54.png differ diff --git a/fonts/MortalFont80/FF55.png b/fonts/MortalFont80/FF55.png new file mode 100644 index 000000000..250b77580 Binary files /dev/null and b/fonts/MortalFont80/FF55.png differ diff --git a/fonts/MortalFont80/FF56.png b/fonts/MortalFont80/FF56.png new file mode 100644 index 000000000..9328fb2c1 Binary files /dev/null and b/fonts/MortalFont80/FF56.png differ diff --git a/fonts/MortalFont80/FF57.png b/fonts/MortalFont80/FF57.png new file mode 100644 index 000000000..79ab7ceb7 Binary files /dev/null and b/fonts/MortalFont80/FF57.png differ diff --git a/fonts/MortalFont80/FF58.png b/fonts/MortalFont80/FF58.png new file mode 100644 index 000000000..54e5b8660 Binary files /dev/null and b/fonts/MortalFont80/FF58.png differ diff --git a/fonts/MortalFont80/FF59.png b/fonts/MortalFont80/FF59.png new file mode 100644 index 000000000..bb6f7e3a5 Binary files /dev/null and b/fonts/MortalFont80/FF59.png differ diff --git a/fonts/MortalFont80/FF5A.png b/fonts/MortalFont80/FF5A.png new file mode 100644 index 000000000..8026cdce1 Binary files /dev/null and b/fonts/MortalFont80/FF5A.png differ diff --git a/fonts/MortalFont80/FF5B.png b/fonts/MortalFont80/FF5B.png new file mode 100644 index 000000000..751b57e41 Binary files /dev/null and b/fonts/MortalFont80/FF5B.png differ diff --git a/fonts/MortalFont80/FF5C.png b/fonts/MortalFont80/FF5C.png new file mode 100644 index 000000000..579f935cc Binary files /dev/null and b/fonts/MortalFont80/FF5C.png differ diff --git a/fonts/MortalFont80/FF5D.png b/fonts/MortalFont80/FF5D.png new file mode 100644 index 000000000..c8d93758a Binary files /dev/null and b/fonts/MortalFont80/FF5D.png differ diff --git a/fonts/MortalFont80/FF5E.png b/fonts/MortalFont80/FF5E.png new file mode 100644 index 000000000..902494e75 Binary files /dev/null and b/fonts/MortalFont80/FF5E.png differ diff --git a/fonts/MortalFont80/FFE0.png b/fonts/MortalFont80/FFE0.png new file mode 100644 index 000000000..e5ec46a90 Binary files /dev/null and b/fonts/MortalFont80/FFE0.png differ diff --git a/fonts/MortalFont80/FFE1.png b/fonts/MortalFont80/FFE1.png new file mode 100644 index 000000000..dd7865601 Binary files /dev/null and b/fonts/MortalFont80/FFE1.png differ diff --git a/fonts/MortalFont80/FFE2.png b/fonts/MortalFont80/FFE2.png new file mode 100644 index 000000000..5eb047b66 Binary files /dev/null and b/fonts/MortalFont80/FFE2.png differ diff --git a/fonts/MortalFont80/FFE3.png b/fonts/MortalFont80/FFE3.png new file mode 100644 index 000000000..f7cded894 Binary files /dev/null and b/fonts/MortalFont80/FFE3.png differ diff --git a/fonts/MortalFont80/FFE4.png b/fonts/MortalFont80/FFE4.png new file mode 100644 index 000000000..08adc6096 Binary files /dev/null and b/fonts/MortalFont80/FFE4.png differ diff --git a/fonts/MortalFont80/FFE5.png b/fonts/MortalFont80/FFE5.png new file mode 100644 index 000000000..bebb19dc7 Binary files /dev/null and b/fonts/MortalFont80/FFE5.png differ diff --git a/fonts/MortalFont80/LICENSE b/fonts/MortalFont80/LICENSE new file mode 100644 index 000000000..272d5f63f --- /dev/null +++ b/fonts/MortalFont80/LICENSE @@ -0,0 +1,117 @@ +-------------------------------------------------- +IPA Font License Agreement v1.0 +-------------------------------------------------- + +IPAフォントライセンスv1.0 + +許諾者は、この使用許諾(以下「本契約」といいます。)に定める条件の下で、許諾プログラム(1条に定義するところによります。)を提供します。受領者(1条に定義するところによります。)が、許諾プログラムを使用し、複製し、または頒布する行為、その他、本契約に定める権利の利用を行った場合、受領者は本契約に同意したものと見なします。 + + +第1条 用語の定義 + +本契約において、次の各号に掲げる用語は、当該各号に定めるところによります。 + +1.「デジタル・フォント・プログラム」とは、フォントを含み、レンダリングしまたは表示するために用いられるコンピュータ・プログラムをいいます。 +2.「許諾プログラム」とは、許諾者が本契約の下で許諾するデジタル・フォント・プログラムをいいます。 +3.「派生プログラム」とは、許諾プログラムの一部または全部を、改変し、加除修正等し、入れ替え、その他翻案したデジタル・フォント・プログラムをいい、許諾プログラムの一部もしくは全部から文字情報を取り出し、またはデジタル・ドキュメント・ファイルからエンベッドされたフォントを取り出し、取り出された文字情報をそのまま、または改変をなして新たなデジタル・フォント・プログラムとして製作されたものを含みます。 +4.「デジタル・コンテンツ」とは、デジタル・データ形式によってエンド・ユーザに提供される制作物のことをいい、動画・静止画等の映像コンテンツおよびテレビ番組等の放送コンテンツ、ならびに文字テキスト、画像、図形等を含んで構成された制作物を含みます。 +5.「デジタル・ドキュメント・ファイル」とは、PDFファイルその他、各種ソフトウェア・プログラムによって製作されたデジタル・コンテンツであって、その中にフォントを表示するために許諾プログラムの全部または一部が埋め込まれた(エンベッドされた)ものをいいます。フォントが「エンベッドされた」とは、当該フォントが埋め込まれた特定の「デジタル・ドキュメント・ファイル」においてのみ表示されるために使用されている状態を指し、その特定の「デジタル・ドキュメント・ファイル」以外でフォントを表示するために使用できるデジタル・フォント・プログラムに含まれている場合と区別されます。 +6.「コンピュータ」とは、本契約においては、サーバを含みます。 +7.「複製その他の利用」とは、複製、譲渡、頒布、貸与、公衆送信、上映、展示、翻案その他の利用をいいます。 +8.「受領者」とは、許諾プログラムを本契約の下で受領した人をいい、受領者から許諾プログラムを受領した人を含みます。 + +第2条 使用許諾の付与 + +許諾者は受領者に対し、本契約の条項に従い、すべての国で、許諾プログラムを使用することを許諾します。ただし、許諾プログラムに存在する一切の権利はすべて許諾者が保有しています。本契約は、本契約で明示的に定められている場合を除き、いかなる意味においても、許諾者が保有する許諾プログラムに関する一切の権利および、いかなる商標、商号、もしくはサービス・マークに関する権利をも受領者に移転するものではありません。 + +1.受領者は本契約に定める条件に従い、許諾プログラムを任意の数のコンピュータにインストールし、当該コンピュータで使用することができます。 +2.受領者はコンピュータにインストールされた許諾プログラムをそのまま、または改変を行ったうえで、印刷物およびデジタル・コンテンツにおいて、文字テキスト表現等として使用することができます。 +3.受領者は前項の定めに従い作成した印刷物およびデジタル・コンテンツにつき、その商用・非商用の別、および放送、通信、各種記録メディアなどの媒体の形式を問わず、複製その他の利用をすることができます。 +4.受領者がデジタル・ドキュメント・ファイルからエンベッドされたフォントを取り出して派生プログラムを作成した場合には、かかる派生プログラムは本契約に定める条件に従う必要があります。 +5.許諾プログラムのエンベッドされたフォントがデジタル・ドキュメント・ファイル内のデジタル・コンテンツをレンダリングするためにのみ使用される場合において、受領者が当該デジタル・ドキュメント・ファイルを複製その他の利用をする場合には、受領者はかかる行為に関しては本契約の下ではいかなる義務をも負いません。 +6.受領者は、3条2項の定めに従い、商用・非商用を問わず、許諾プログラムをそのままの状態で改変することなく複製して第三者への譲渡し、公衆送信し、その他の方法で再配布することができます(以下、「再配布」といいます。)。 +7.受領者は、上記の許諾プログラムについて定められた条件と同様の条件に従って、派生プログラムを作成し、使用し、複製し、再配布することができます。ただし、受領者が派生プログラムを再配布する場合には、3条1項の定めに従うものとします。 + +第3条 制限 + +前条により付与された使用許諾は、以下の制限に服します。 + +1.派生プログラムが前条4項及び7項に基づき再配布される場合には、以下の全ての条件を満たさなければなりません。 + (1)派生プログラムを再配布する際には、下記もまた、当該派生プログラムと一緒に再配布され、オンラインで提供され、または、郵送費・媒体及び取扱手数料の合計を超えない実費と引き換えに媒体を郵送する方法により提供されなければなりません。 +  (a)派生プログラムの写し; および +  (b)派生プログラムを作成する過程でフォント開発プログラムによって作成された追加のファイルであって派生プログラムをさらに加工するにあたって利用できるファイルが存在すれば、当該ファイル + (2)派生プログラムの受領者が、派生プログラムを、このライセンスの下で最初にリリースされた許諾プログラム(以下、「オリジナル・プログラム」といいます。)に置き換えることができる方法を再配布するものとします。かかる方法は、オリジナル・ファイルからの差分ファイルの提供、または、派生プログラムをオリジナル・プログラムに置き換える方法を示す指示の提供などが考えられます。 + (3)派生プログラムを、本契約書に定められた条件の下でライセンスしなければなりません。 + (4)派生プログラムのプログラム名、フォント名またはファイル名として、許諾プログラムが用いているのと同一の名称、またはこれを含む名称を使用してはなりません。 + (5)本項の要件を満たすためにオンラインで提供し、または媒体を郵送する方法で提供されるものは、その提供を希望するいかなる者によっても提供が可能です。 +2.受領者が前条6項に基づき許諾プログラムを再配布する場合には、以下の全ての条件を満たさなければなりません。 + (1)許諾プログラムの名称を変更してはなりません。 + (2)許諾プログラムに加工その他の改変を加えてはなりません。 + (3)本契約の写しを許諾プログラムに添付しなければなりません。 +3.許諾プログラムは、現状有姿で提供されており、許諾プログラムまたは派生プログラムについて、許諾者は一切の明示または黙示の保証(権利の所在、非侵害、商品性、特定目的への適合性を含むがこれに限られません)を行いません。いかなる場合にも、その原因を問わず、契約上の責任か厳格責任か過失その他の不法行為責任かにかかわらず、また事前に通知されたか否かにかかわらず、許諾者は、許諾プログラムまたは派生プログラムのインストール、使用、複製その他の利用または本契約上の権利の行使によって生じた一切の損害(直接・間接・付随的・特別・拡大・懲罰的または結果的損害)(商品またはサービスの代替品の調達、システム障害から生じた損害、現存するデータまたはプログラムの紛失または破損、逸失利益を含むがこれに限られません)について責任を負いません。 +4.許諾プログラムまたは派生プログラムのインストール、使用、複製その他の利用に関して、許諾者は技術的な質問や問い合わせ等に対する対応その他、いかなるユーザ・サポートをも行う義務を負いません。 + +第4条 契約の終了 + +1.本契約の有効期間は、受領者が許諾プログラムを受領した時に開始し、受領者が許諾プログラムを何らかの方法で保持する限り続くものとします。 +2.前項の定めにかかわらず、受領者が本契約に定める各条項に違反したときは、本契約は、何らの催告を要することなく、自動的に終了し、当該受領者はそれ以後、許諾プログラムおよび派生プログラムを一切使用しまたは複製その他の利用をすることができないものとします。ただし、かかる契約の終了は、当該違反した受領者から許諾プログラムまたは派生プログラムの配布を受けた受領者の権利に影響を及ぼすものではありません。 + +第5条 準拠法 + +1.IPAは、本契約の変更バージョンまたは新しいバージョンを公表することができます。その場合には、受領者は、許諾プログラムまたは派生プログラムの使用、複製その他の利用または再配布にあたり、本契約または変更後の契約のいずれかを選択することができます。その他、上記に記載されていない条項に関しては日本の著作権法および関連法規に従うものとします。 +2.本契約は、日本法に基づき解釈されます。 + + +---------- + +IPA Font License Agreement v1.0 + +The Licensor provides the Licensed Program (as defined in Article 1 below) under the terms of this license agreement (“Agreement”). Any use, reproduction or distribution of the Licensed Program, or any exercise of rights under this Agreement by a Recipient (as defined in Article 1 below) constitutes the Recipient's acceptance of this Agreement. + +Article 1 (Definitions) +1.“Digital Font Program” shall mean a computer program containing, or used to render or display fonts. +2.“Licensed Program” shall mean a Digital Font Program licensed by the Licensor under this Agreement. +3.“Derived Program” shall mean a Digital Font Program created as a result of a modification, addition, deletion, replacement or any other adaptation to or of a part or all of the Licensed Program, and includes a case where a Digital Font Program newly created by retrieving font information from a part or all of the Licensed Program or Embedded Fonts from a Digital Document File with or without modification of the retrieved font information. +4.“Digital Content” shall mean products provided to end users in the form of digital data, including video content, motion and/or still pictures, TV programs or other broadcasting content and products consisting of character text, pictures, photographic images, graphic symbols and/or the like. +5.“Digital Document File” shall mean a PDF file or other Digital Content created by various software programs in which a part or all of the Licensed Program becomes embedded or contained in the file for the display of the font (“Embedded Fonts”). Embedded Fonts are used only in the display of characters in the particular Digital Document File within which they are embedded, and shall be distinguished from those in any Digital Font Program, which may be used for display of characters outside that particular Digital Document File. +6.“Computer” shall include a server in this Agreement. +7.“Reproduction and Other Exploitation” shall mean reproduction, transfer, distribution, lease, public transmission, presentation, exhibition, adaptation and any other exploitation. +8.“Recipient” shall mean anyone who receives the Licensed Program under this Agreement, including one that receives the Licensed Program from a Recipient. + +Article 2 (Grant of License) +The Licensor grants to the Recipient a license to use the Licensed Program in any and all countries in accordance with each of the provisions set forth in this Agreement. However, any and all rights underlying in the Licensed Program shall be held by the Licensor. In no sense is this Agreement intended to transfer any right relating to the Licensed Program held by the Licensor except as specifically set forth herein or any right relating to any trademark, trade name, or service mark to the Recipient. + +1.The Recipient may install the Licensed Program on any number of Computers and use the same in accordance with the provisions set forth in this Agreement. +2.The Recipient may use the Licensed Program, with or without modification in printed materials or in Digital Content as an expression of character texts or the like. +3.The Recipient may conduct Reproduction and Other Exploitation of the printed materials and Digital Content created in accordance with the preceding Paragraph, for commercial or non-commercial purposes and in any form of media including but not limited to broadcasting, communication and various recording media. +4.If any Recipient extracts Embedded Fonts from a Digital Document File to create a Derived Program, such Derived Program shall be subject to the terms of this agreement. +5.If any Recipient performs Reproduction or Other Exploitation of a Digital Document File in which Embedded Fonts of the Licensed Program are used only for rendering the Digital Content within such Digital Document File then such Recipient shall have no further obligations under this Agreement in relation to such actions. +6.The Recipient may reproduce the Licensed Program as is without modification and transfer such copies, publicly transmit or otherwise redistribute the Licensed Program to a third party for commercial or non-commercial purposes (“Redistribute”), in accordance with the provisions set forth in Article 3 Paragraph 2. +7.The Recipient may create, use, reproduce and/or Redistribute a Derived Program under the terms stated above for the Licensed Program: provided, that the Recipient shall follow the provisions set forth in Article 3 Paragraph 1 when Redistributing the Derived Program. + +Article 3 (Restriction) +The license granted in the preceding Article shall be subject to the following restrictions: + +1.If a Derived Program is Redistributed pursuant to Paragraph 4 and 7 of the preceding Article, the following conditions must be met : + (1)The following must be also Redistributed together with the Derived Program, or be made available online or by means of mailing mechanisms in exchange for a cost which does not exceed the total costs of postage, storage medium and handling fees: +  (a)a copy of the Derived Program; and +  (b)any additional file created by the font developing program in the course of creating the Derived Program that can be used for further modification of the Derived Program, if any. + (2)It is required to also Redistribute means to enable recipients of the Derived Program to replace the Derived Program with the Licensed Program first released under this License (the “Original Program”). Such means may be to provide a difference file from the Original Program, or instructions setting out a method to replace the Derived Program with the Original Program. + (3)The Recipient must license the Derived Program under the terms and conditions of this Agreement. + (4)No one may use or include the name of the Licensed Program as a program name, font name or file name of the Derived Program. + (5)Any material to be made available online or by means of mailing a medium to satisfy the requirements of this paragraph may be provided, verbatim, by any party wishing to do so. +2.If the Recipient Redistributes the Licensed Program pursuant to Paragraph 6 of the preceding Article, the Recipient shall meet all of the following conditions: + (1)The Recipient may not change the name of the Licensed Program. + (2)The Recipient may not alter or otherwise modify the Licensed Program. + (3)The Recipient must attach a copy of this Agreement to the Licensed Program. +3.THIS LICENSED PROGRAM IS PROVIDED BY THE LICENSOR “AS IS” AND ANY EXPRESSED OR IMPLIED WARRANTY AS TO THE LICENSED PROGRAM OR ANY DERIVED PROGRAM, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXTENDED, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO; PROCUREMENT OF SUBSTITUTED GOODS OR SERVICE; DAMAGES ARISING FROM SYSTEM FAILURE; LOSS OR CORRUPTION OF EXISTING DATA OR PROGRAM; LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE INSTALLATION, USE, THE REPRODUCTION OR OTHER EXPLOITATION OF THE LICENSED PROGRAM OR ANY DERIVED PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +4.The Licensor is under no obligation to respond to any technical questions or inquiries, or provide any other user support in connection with the installation, use or the Reproduction and Other Exploitation of the Licensed Program or Derived Programs thereof. + +Article 4 (Termination of Agreement) +1.The term of this Agreement shall begin from the time of receipt of the Licensed Program by the Recipient and shall continue as long as the Recipient retains any such Licensed Program in any way. +2.Notwithstanding the provision set forth in the preceding Paragraph, in the event of the breach of any of the provisions set forth in this Agreement by the Recipient, this Agreement shall automatically terminate without any notice. In the case of such termination, the Recipient may not use or conduct Reproduction and Other Exploitation of the Licensed Program or a Derived Program: provided that such termination shall not affect any rights of any other Recipient receiving the Licensed Program or the Derived Program from such Recipient who breached this Agreement. + +Article 5 (Governing Law) +1.IPA may publish revised and/or new versions of this License. In such an event, the Recipient may select either this Agreement or any subsequent version of the Agreement in using, conducting the Reproduction and Other Exploitation of, or Redistributing the Licensed Program or a Derived Program. Other matters not specified above shall be subject to the Copyright Law of Japan and other related laws and regulations of Japan. +2.This Agreement shall be construed under the laws of Japan. + diff --git a/fonts/MortalFont80/font.inf b/fonts/MortalFont80/font.inf new file mode 100644 index 000000000..1f4740726 --- /dev/null +++ b/fonts/MortalFont80/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 42 +FontHeight 81 +Kerning -1 diff --git a/fonts/TewiFont/0021.png b/fonts/TewiFont/0021.png new file mode 100644 index 000000000..9aaa3153b Binary files /dev/null and b/fonts/TewiFont/0021.png differ diff --git a/fonts/TewiFont/0022.png b/fonts/TewiFont/0022.png new file mode 100644 index 000000000..4f1d2ce31 Binary files /dev/null and b/fonts/TewiFont/0022.png differ diff --git a/fonts/TewiFont/0023.png b/fonts/TewiFont/0023.png new file mode 100644 index 000000000..d887e96c2 Binary files /dev/null and b/fonts/TewiFont/0023.png differ diff --git a/fonts/TewiFont/0024.png b/fonts/TewiFont/0024.png new file mode 100644 index 000000000..a234bcc85 Binary files /dev/null and b/fonts/TewiFont/0024.png differ diff --git a/fonts/TewiFont/0025.png b/fonts/TewiFont/0025.png new file mode 100644 index 000000000..e0e85a2f8 Binary files /dev/null and b/fonts/TewiFont/0025.png differ diff --git a/fonts/TewiFont/0026.png b/fonts/TewiFont/0026.png new file mode 100644 index 000000000..0081f1792 Binary files /dev/null and b/fonts/TewiFont/0026.png differ diff --git a/fonts/TewiFont/0027.png b/fonts/TewiFont/0027.png new file mode 100644 index 000000000..86279d9af Binary files /dev/null and b/fonts/TewiFont/0027.png differ diff --git a/fonts/TewiFont/0028.png b/fonts/TewiFont/0028.png new file mode 100644 index 000000000..a1cb6fc32 Binary files /dev/null and b/fonts/TewiFont/0028.png differ diff --git a/fonts/TewiFont/0029.png b/fonts/TewiFont/0029.png new file mode 100644 index 000000000..add0b83b4 Binary files /dev/null and b/fonts/TewiFont/0029.png differ diff --git a/fonts/TewiFont/002A.png b/fonts/TewiFont/002A.png new file mode 100644 index 000000000..ebf4fa2c1 Binary files /dev/null and b/fonts/TewiFont/002A.png differ diff --git a/fonts/TewiFont/002B.png b/fonts/TewiFont/002B.png new file mode 100644 index 000000000..294797a07 Binary files /dev/null and b/fonts/TewiFont/002B.png differ diff --git a/fonts/TewiFont/002C.png b/fonts/TewiFont/002C.png new file mode 100644 index 000000000..b3325165e Binary files /dev/null and b/fonts/TewiFont/002C.png differ diff --git a/fonts/TewiFont/002D.png b/fonts/TewiFont/002D.png new file mode 100644 index 000000000..63da1664f Binary files /dev/null and b/fonts/TewiFont/002D.png differ diff --git a/fonts/TewiFont/002E.png b/fonts/TewiFont/002E.png new file mode 100644 index 000000000..14460f730 Binary files /dev/null and b/fonts/TewiFont/002E.png differ diff --git a/fonts/TewiFont/002F.png b/fonts/TewiFont/002F.png new file mode 100644 index 000000000..18f867098 Binary files /dev/null and b/fonts/TewiFont/002F.png differ diff --git a/fonts/TewiFont/0030.png b/fonts/TewiFont/0030.png new file mode 100644 index 000000000..63032ad26 Binary files /dev/null and b/fonts/TewiFont/0030.png differ diff --git a/fonts/TewiFont/0031.png b/fonts/TewiFont/0031.png new file mode 100644 index 000000000..aad6357c2 Binary files /dev/null and b/fonts/TewiFont/0031.png differ diff --git a/fonts/TewiFont/0032.png b/fonts/TewiFont/0032.png new file mode 100644 index 000000000..01330de63 Binary files /dev/null and b/fonts/TewiFont/0032.png differ diff --git a/fonts/TewiFont/0033.png b/fonts/TewiFont/0033.png new file mode 100644 index 000000000..fcb363ad1 Binary files /dev/null and b/fonts/TewiFont/0033.png differ diff --git a/fonts/TewiFont/0034.png b/fonts/TewiFont/0034.png new file mode 100644 index 000000000..1855ab932 Binary files /dev/null and b/fonts/TewiFont/0034.png differ diff --git a/fonts/TewiFont/0035.png b/fonts/TewiFont/0035.png new file mode 100644 index 000000000..e8d161f25 Binary files /dev/null and b/fonts/TewiFont/0035.png differ diff --git a/fonts/TewiFont/0036.png b/fonts/TewiFont/0036.png new file mode 100644 index 000000000..3a581b4fb Binary files /dev/null and b/fonts/TewiFont/0036.png differ diff --git a/fonts/TewiFont/0037.png b/fonts/TewiFont/0037.png new file mode 100644 index 000000000..34a627545 Binary files /dev/null and b/fonts/TewiFont/0037.png differ diff --git a/fonts/TewiFont/0038.png b/fonts/TewiFont/0038.png new file mode 100644 index 000000000..e5282afd2 Binary files /dev/null and b/fonts/TewiFont/0038.png differ diff --git a/fonts/TewiFont/0039.png b/fonts/TewiFont/0039.png new file mode 100644 index 000000000..b198d6664 Binary files /dev/null and b/fonts/TewiFont/0039.png differ diff --git a/fonts/TewiFont/003A.png b/fonts/TewiFont/003A.png new file mode 100644 index 000000000..ce575d59c Binary files /dev/null and b/fonts/TewiFont/003A.png differ diff --git a/fonts/TewiFont/003B.png b/fonts/TewiFont/003B.png new file mode 100644 index 000000000..a797fd20c Binary files /dev/null and b/fonts/TewiFont/003B.png differ diff --git a/fonts/TewiFont/003C.png b/fonts/TewiFont/003C.png new file mode 100644 index 000000000..08472f34e Binary files /dev/null and b/fonts/TewiFont/003C.png differ diff --git a/fonts/TewiFont/003D.png b/fonts/TewiFont/003D.png new file mode 100644 index 000000000..c56d72b80 Binary files /dev/null and b/fonts/TewiFont/003D.png differ diff --git a/fonts/TewiFont/003E.png b/fonts/TewiFont/003E.png new file mode 100644 index 000000000..a1870e31d Binary files /dev/null and b/fonts/TewiFont/003E.png differ diff --git a/fonts/TewiFont/003F.png b/fonts/TewiFont/003F.png new file mode 100644 index 000000000..926104c6f Binary files /dev/null and b/fonts/TewiFont/003F.png differ diff --git a/fonts/TewiFont/0040.png b/fonts/TewiFont/0040.png new file mode 100644 index 000000000..7fc3d4903 Binary files /dev/null and b/fonts/TewiFont/0040.png differ diff --git a/fonts/TewiFont/0041.png b/fonts/TewiFont/0041.png new file mode 100644 index 000000000..cadfc3805 Binary files /dev/null and b/fonts/TewiFont/0041.png differ diff --git a/fonts/TewiFont/0042.png b/fonts/TewiFont/0042.png new file mode 100644 index 000000000..fcf284dc6 Binary files /dev/null and b/fonts/TewiFont/0042.png differ diff --git a/fonts/TewiFont/0043.png b/fonts/TewiFont/0043.png new file mode 100644 index 000000000..72c1e9c02 Binary files /dev/null and b/fonts/TewiFont/0043.png differ diff --git a/fonts/TewiFont/0044.png b/fonts/TewiFont/0044.png new file mode 100644 index 000000000..63298cb5f Binary files /dev/null and b/fonts/TewiFont/0044.png differ diff --git a/fonts/TewiFont/0045.png b/fonts/TewiFont/0045.png new file mode 100644 index 000000000..3f678c9d8 Binary files /dev/null and b/fonts/TewiFont/0045.png differ diff --git a/fonts/TewiFont/0046.png b/fonts/TewiFont/0046.png new file mode 100644 index 000000000..6bf5edfad Binary files /dev/null and b/fonts/TewiFont/0046.png differ diff --git a/fonts/TewiFont/0047.png b/fonts/TewiFont/0047.png new file mode 100644 index 000000000..fc22be7a3 Binary files /dev/null and b/fonts/TewiFont/0047.png differ diff --git a/fonts/TewiFont/0048.png b/fonts/TewiFont/0048.png new file mode 100644 index 000000000..301e15143 Binary files /dev/null and b/fonts/TewiFont/0048.png differ diff --git a/fonts/TewiFont/0049.png b/fonts/TewiFont/0049.png new file mode 100644 index 000000000..85de12adb Binary files /dev/null and b/fonts/TewiFont/0049.png differ diff --git a/fonts/TewiFont/004A.png b/fonts/TewiFont/004A.png new file mode 100644 index 000000000..392644350 Binary files /dev/null and b/fonts/TewiFont/004A.png differ diff --git a/fonts/TewiFont/004B.png b/fonts/TewiFont/004B.png new file mode 100644 index 000000000..c8f94b104 Binary files /dev/null and b/fonts/TewiFont/004B.png differ diff --git a/fonts/TewiFont/004C.png b/fonts/TewiFont/004C.png new file mode 100644 index 000000000..5e22b00cc Binary files /dev/null and b/fonts/TewiFont/004C.png differ diff --git a/fonts/TewiFont/004D.png b/fonts/TewiFont/004D.png new file mode 100644 index 000000000..140320557 Binary files /dev/null and b/fonts/TewiFont/004D.png differ diff --git a/fonts/TewiFont/004E.png b/fonts/TewiFont/004E.png new file mode 100644 index 000000000..5c7aaaec1 Binary files /dev/null and b/fonts/TewiFont/004E.png differ diff --git a/fonts/TewiFont/004F.png b/fonts/TewiFont/004F.png new file mode 100644 index 000000000..83e0a0012 Binary files /dev/null and b/fonts/TewiFont/004F.png differ diff --git a/fonts/TewiFont/0050.png b/fonts/TewiFont/0050.png new file mode 100644 index 000000000..c41cc1de8 Binary files /dev/null and b/fonts/TewiFont/0050.png differ diff --git a/fonts/TewiFont/0051.png b/fonts/TewiFont/0051.png new file mode 100644 index 000000000..bb83650f3 Binary files /dev/null and b/fonts/TewiFont/0051.png differ diff --git a/fonts/TewiFont/0052.png b/fonts/TewiFont/0052.png new file mode 100644 index 000000000..143531ab0 Binary files /dev/null and b/fonts/TewiFont/0052.png differ diff --git a/fonts/TewiFont/0053.png b/fonts/TewiFont/0053.png new file mode 100644 index 000000000..3e0c39c69 Binary files /dev/null and b/fonts/TewiFont/0053.png differ diff --git a/fonts/TewiFont/0054.png b/fonts/TewiFont/0054.png new file mode 100644 index 000000000..5f2cdd821 Binary files /dev/null and b/fonts/TewiFont/0054.png differ diff --git a/fonts/TewiFont/0055.png b/fonts/TewiFont/0055.png new file mode 100644 index 000000000..684f566e0 Binary files /dev/null and b/fonts/TewiFont/0055.png differ diff --git a/fonts/TewiFont/0056.png b/fonts/TewiFont/0056.png new file mode 100644 index 000000000..e6e06cf62 Binary files /dev/null and b/fonts/TewiFont/0056.png differ diff --git a/fonts/TewiFont/0057.png b/fonts/TewiFont/0057.png new file mode 100644 index 000000000..cebee0912 Binary files /dev/null and b/fonts/TewiFont/0057.png differ diff --git a/fonts/TewiFont/0058.png b/fonts/TewiFont/0058.png new file mode 100644 index 000000000..1e4289448 Binary files /dev/null and b/fonts/TewiFont/0058.png differ diff --git a/fonts/TewiFont/0059.png b/fonts/TewiFont/0059.png new file mode 100644 index 000000000..c1da08a10 Binary files /dev/null and b/fonts/TewiFont/0059.png differ diff --git a/fonts/TewiFont/005A.png b/fonts/TewiFont/005A.png new file mode 100644 index 000000000..9fe4b9cf7 Binary files /dev/null and b/fonts/TewiFont/005A.png differ diff --git a/fonts/TewiFont/005B.png b/fonts/TewiFont/005B.png new file mode 100644 index 000000000..f2a6d5ac6 Binary files /dev/null and b/fonts/TewiFont/005B.png differ diff --git a/fonts/TewiFont/005C.png b/fonts/TewiFont/005C.png new file mode 100644 index 000000000..5255f90df Binary files /dev/null and b/fonts/TewiFont/005C.png differ diff --git a/fonts/TewiFont/005D.png b/fonts/TewiFont/005D.png new file mode 100644 index 000000000..598010d00 Binary files /dev/null and b/fonts/TewiFont/005D.png differ diff --git a/fonts/TewiFont/005E.png b/fonts/TewiFont/005E.png new file mode 100644 index 000000000..78891637b Binary files /dev/null and b/fonts/TewiFont/005E.png differ diff --git a/fonts/TewiFont/005F.png b/fonts/TewiFont/005F.png new file mode 100644 index 000000000..9546c29a7 Binary files /dev/null and b/fonts/TewiFont/005F.png differ diff --git a/fonts/TewiFont/0060.png b/fonts/TewiFont/0060.png new file mode 100644 index 000000000..3f5cc3285 Binary files /dev/null and b/fonts/TewiFont/0060.png differ diff --git a/fonts/TewiFont/0061.png b/fonts/TewiFont/0061.png new file mode 100644 index 000000000..ab99d62fc Binary files /dev/null and b/fonts/TewiFont/0061.png differ diff --git a/fonts/TewiFont/0062.png b/fonts/TewiFont/0062.png new file mode 100644 index 000000000..0af3bc2c8 Binary files /dev/null and b/fonts/TewiFont/0062.png differ diff --git a/fonts/TewiFont/0063.png b/fonts/TewiFont/0063.png new file mode 100644 index 000000000..b44df59a1 Binary files /dev/null and b/fonts/TewiFont/0063.png differ diff --git a/fonts/TewiFont/0064.png b/fonts/TewiFont/0064.png new file mode 100644 index 000000000..6e87ad156 Binary files /dev/null and b/fonts/TewiFont/0064.png differ diff --git a/fonts/TewiFont/0065.png b/fonts/TewiFont/0065.png new file mode 100644 index 000000000..d5b2a3eb3 Binary files /dev/null and b/fonts/TewiFont/0065.png differ diff --git a/fonts/TewiFont/0066.png b/fonts/TewiFont/0066.png new file mode 100644 index 000000000..1867f6879 Binary files /dev/null and b/fonts/TewiFont/0066.png differ diff --git a/fonts/TewiFont/0067.png b/fonts/TewiFont/0067.png new file mode 100644 index 000000000..e19e17f9e Binary files /dev/null and b/fonts/TewiFont/0067.png differ diff --git a/fonts/TewiFont/0068.png b/fonts/TewiFont/0068.png new file mode 100644 index 000000000..457c7fe05 Binary files /dev/null and b/fonts/TewiFont/0068.png differ diff --git a/fonts/TewiFont/0069.png b/fonts/TewiFont/0069.png new file mode 100644 index 000000000..291289c70 Binary files /dev/null and b/fonts/TewiFont/0069.png differ diff --git a/fonts/TewiFont/006A.png b/fonts/TewiFont/006A.png new file mode 100644 index 000000000..1c3b5654e Binary files /dev/null and b/fonts/TewiFont/006A.png differ diff --git a/fonts/TewiFont/006B.png b/fonts/TewiFont/006B.png new file mode 100644 index 000000000..22cc140f3 Binary files /dev/null and b/fonts/TewiFont/006B.png differ diff --git a/fonts/TewiFont/006C.png b/fonts/TewiFont/006C.png new file mode 100644 index 000000000..9b95e59e6 Binary files /dev/null and b/fonts/TewiFont/006C.png differ diff --git a/fonts/TewiFont/006D.png b/fonts/TewiFont/006D.png new file mode 100644 index 000000000..564f9889c Binary files /dev/null and b/fonts/TewiFont/006D.png differ diff --git a/fonts/TewiFont/006E.png b/fonts/TewiFont/006E.png new file mode 100644 index 000000000..8d62afe45 Binary files /dev/null and b/fonts/TewiFont/006E.png differ diff --git a/fonts/TewiFont/006F.png b/fonts/TewiFont/006F.png new file mode 100644 index 000000000..4f808b309 Binary files /dev/null and b/fonts/TewiFont/006F.png differ diff --git a/fonts/TewiFont/0070.png b/fonts/TewiFont/0070.png new file mode 100644 index 000000000..e956048bf Binary files /dev/null and b/fonts/TewiFont/0070.png differ diff --git a/fonts/TewiFont/0071.png b/fonts/TewiFont/0071.png new file mode 100644 index 000000000..09e79e259 Binary files /dev/null and b/fonts/TewiFont/0071.png differ diff --git a/fonts/TewiFont/0072.png b/fonts/TewiFont/0072.png new file mode 100644 index 000000000..448892288 Binary files /dev/null and b/fonts/TewiFont/0072.png differ diff --git a/fonts/TewiFont/0073.png b/fonts/TewiFont/0073.png new file mode 100644 index 000000000..a5b28aad8 Binary files /dev/null and b/fonts/TewiFont/0073.png differ diff --git a/fonts/TewiFont/0074.png b/fonts/TewiFont/0074.png new file mode 100644 index 000000000..5e4d000f7 Binary files /dev/null and b/fonts/TewiFont/0074.png differ diff --git a/fonts/TewiFont/0075.png b/fonts/TewiFont/0075.png new file mode 100644 index 000000000..c4fe7a690 Binary files /dev/null and b/fonts/TewiFont/0075.png differ diff --git a/fonts/TewiFont/0076.png b/fonts/TewiFont/0076.png new file mode 100644 index 000000000..f21ce4dcf Binary files /dev/null and b/fonts/TewiFont/0076.png differ diff --git a/fonts/TewiFont/0077.png b/fonts/TewiFont/0077.png new file mode 100644 index 000000000..be77db466 Binary files /dev/null and b/fonts/TewiFont/0077.png differ diff --git a/fonts/TewiFont/0078.png b/fonts/TewiFont/0078.png new file mode 100644 index 000000000..cbd467f64 Binary files /dev/null and b/fonts/TewiFont/0078.png differ diff --git a/fonts/TewiFont/0079.png b/fonts/TewiFont/0079.png new file mode 100644 index 000000000..58a68ae37 Binary files /dev/null and b/fonts/TewiFont/0079.png differ diff --git a/fonts/TewiFont/007A.png b/fonts/TewiFont/007A.png new file mode 100644 index 000000000..dd3062bee Binary files /dev/null and b/fonts/TewiFont/007A.png differ diff --git a/fonts/TewiFont/007B.png b/fonts/TewiFont/007B.png new file mode 100644 index 000000000..430491fba Binary files /dev/null and b/fonts/TewiFont/007B.png differ diff --git a/fonts/TewiFont/007C.png b/fonts/TewiFont/007C.png new file mode 100644 index 000000000..e001eb225 Binary files /dev/null and b/fonts/TewiFont/007C.png differ diff --git a/fonts/TewiFont/007D.png b/fonts/TewiFont/007D.png new file mode 100644 index 000000000..163981447 Binary files /dev/null and b/fonts/TewiFont/007D.png differ diff --git a/fonts/TewiFont/007E.png b/fonts/TewiFont/007E.png new file mode 100644 index 000000000..45fe5ef24 Binary files /dev/null and b/fonts/TewiFont/007E.png differ diff --git a/fonts/TewiFont/00A1.png b/fonts/TewiFont/00A1.png new file mode 100644 index 000000000..361e458b2 Binary files /dev/null and b/fonts/TewiFont/00A1.png differ diff --git a/fonts/TewiFont/00A2.png b/fonts/TewiFont/00A2.png new file mode 100644 index 000000000..c690c7e64 Binary files /dev/null and b/fonts/TewiFont/00A2.png differ diff --git a/fonts/TewiFont/00A3.png b/fonts/TewiFont/00A3.png new file mode 100644 index 000000000..d648d19a5 Binary files /dev/null and b/fonts/TewiFont/00A3.png differ diff --git a/fonts/TewiFont/00A4.png b/fonts/TewiFont/00A4.png new file mode 100644 index 000000000..2e9765d20 Binary files /dev/null and b/fonts/TewiFont/00A4.png differ diff --git a/fonts/TewiFont/00A5.png b/fonts/TewiFont/00A5.png new file mode 100644 index 000000000..94ecba033 Binary files /dev/null and b/fonts/TewiFont/00A5.png differ diff --git a/fonts/TewiFont/00A6.png b/fonts/TewiFont/00A6.png new file mode 100644 index 000000000..a9edae93a Binary files /dev/null and b/fonts/TewiFont/00A6.png differ diff --git a/fonts/TewiFont/00A7.png b/fonts/TewiFont/00A7.png new file mode 100644 index 000000000..8ddbe4c5b Binary files /dev/null and b/fonts/TewiFont/00A7.png differ diff --git a/fonts/TewiFont/00A8.png b/fonts/TewiFont/00A8.png new file mode 100644 index 000000000..d74d56fbe Binary files /dev/null and b/fonts/TewiFont/00A8.png differ diff --git a/fonts/TewiFont/00A9.png b/fonts/TewiFont/00A9.png new file mode 100644 index 000000000..a15a32213 Binary files /dev/null and b/fonts/TewiFont/00A9.png differ diff --git a/fonts/TewiFont/00AA.png b/fonts/TewiFont/00AA.png new file mode 100644 index 000000000..6c9e721ef Binary files /dev/null and b/fonts/TewiFont/00AA.png differ diff --git a/fonts/TewiFont/00AB.png b/fonts/TewiFont/00AB.png new file mode 100644 index 000000000..f3f25a9ba Binary files /dev/null and b/fonts/TewiFont/00AB.png differ diff --git a/fonts/TewiFont/00AC.png b/fonts/TewiFont/00AC.png new file mode 100644 index 000000000..049cb15e1 Binary files /dev/null and b/fonts/TewiFont/00AC.png differ diff --git a/fonts/TewiFont/00AE.png b/fonts/TewiFont/00AE.png new file mode 100644 index 000000000..225fe179c Binary files /dev/null and b/fonts/TewiFont/00AE.png differ diff --git a/fonts/TewiFont/00AF.png b/fonts/TewiFont/00AF.png new file mode 100644 index 000000000..a962b2686 Binary files /dev/null and b/fonts/TewiFont/00AF.png differ diff --git a/fonts/TewiFont/00B0.png b/fonts/TewiFont/00B0.png new file mode 100644 index 000000000..e1af9b868 Binary files /dev/null and b/fonts/TewiFont/00B0.png differ diff --git a/fonts/TewiFont/00B1.png b/fonts/TewiFont/00B1.png new file mode 100644 index 000000000..a29dc3344 Binary files /dev/null and b/fonts/TewiFont/00B1.png differ diff --git a/fonts/TewiFont/00B2.png b/fonts/TewiFont/00B2.png new file mode 100644 index 000000000..5aa964894 Binary files /dev/null and b/fonts/TewiFont/00B2.png differ diff --git a/fonts/TewiFont/00B3.png b/fonts/TewiFont/00B3.png new file mode 100644 index 000000000..de19ccecf Binary files /dev/null and b/fonts/TewiFont/00B3.png differ diff --git a/fonts/TewiFont/00B4.png b/fonts/TewiFont/00B4.png new file mode 100644 index 000000000..c29a30981 Binary files /dev/null and b/fonts/TewiFont/00B4.png differ diff --git a/fonts/TewiFont/00B5.png b/fonts/TewiFont/00B5.png new file mode 100644 index 000000000..4252825cb Binary files /dev/null and b/fonts/TewiFont/00B5.png differ diff --git a/fonts/TewiFont/00B6.png b/fonts/TewiFont/00B6.png new file mode 100644 index 000000000..bce28dd6b Binary files /dev/null and b/fonts/TewiFont/00B6.png differ diff --git a/fonts/TewiFont/00B7.png b/fonts/TewiFont/00B7.png new file mode 100644 index 000000000..db0f2e61a Binary files /dev/null and b/fonts/TewiFont/00B7.png differ diff --git a/fonts/TewiFont/00B8.png b/fonts/TewiFont/00B8.png new file mode 100644 index 000000000..996a4330e Binary files /dev/null and b/fonts/TewiFont/00B8.png differ diff --git a/fonts/TewiFont/00B9.png b/fonts/TewiFont/00B9.png new file mode 100644 index 000000000..27665a168 Binary files /dev/null and b/fonts/TewiFont/00B9.png differ diff --git a/fonts/TewiFont/00BA.png b/fonts/TewiFont/00BA.png new file mode 100644 index 000000000..be0536681 Binary files /dev/null and b/fonts/TewiFont/00BA.png differ diff --git a/fonts/TewiFont/00BB.png b/fonts/TewiFont/00BB.png new file mode 100644 index 000000000..4bb4e09e0 Binary files /dev/null and b/fonts/TewiFont/00BB.png differ diff --git a/fonts/TewiFont/00BC.png b/fonts/TewiFont/00BC.png new file mode 100644 index 000000000..8028b0b59 Binary files /dev/null and b/fonts/TewiFont/00BC.png differ diff --git a/fonts/TewiFont/00BD.png b/fonts/TewiFont/00BD.png new file mode 100644 index 000000000..4cf52ee64 Binary files /dev/null and b/fonts/TewiFont/00BD.png differ diff --git a/fonts/TewiFont/00BE.png b/fonts/TewiFont/00BE.png new file mode 100644 index 000000000..a6ab0ab28 Binary files /dev/null and b/fonts/TewiFont/00BE.png differ diff --git a/fonts/TewiFont/00BF.png b/fonts/TewiFont/00BF.png new file mode 100644 index 000000000..f2454799c Binary files /dev/null and b/fonts/TewiFont/00BF.png differ diff --git a/fonts/TewiFont/00C0.png b/fonts/TewiFont/00C0.png new file mode 100644 index 000000000..213025d22 Binary files /dev/null and b/fonts/TewiFont/00C0.png differ diff --git a/fonts/TewiFont/00C1.png b/fonts/TewiFont/00C1.png new file mode 100644 index 000000000..d21c2d5fc Binary files /dev/null and b/fonts/TewiFont/00C1.png differ diff --git a/fonts/TewiFont/00C2.png b/fonts/TewiFont/00C2.png new file mode 100644 index 000000000..beb4da488 Binary files /dev/null and b/fonts/TewiFont/00C2.png differ diff --git a/fonts/TewiFont/00C3.png b/fonts/TewiFont/00C3.png new file mode 100644 index 000000000..0af571c3a Binary files /dev/null and b/fonts/TewiFont/00C3.png differ diff --git a/fonts/TewiFont/00C4.png b/fonts/TewiFont/00C4.png new file mode 100644 index 000000000..af8ee56b2 Binary files /dev/null and b/fonts/TewiFont/00C4.png differ diff --git a/fonts/TewiFont/00C5.png b/fonts/TewiFont/00C5.png new file mode 100644 index 000000000..beb4da488 Binary files /dev/null and b/fonts/TewiFont/00C5.png differ diff --git a/fonts/TewiFont/00C6.png b/fonts/TewiFont/00C6.png new file mode 100644 index 000000000..86429b4e7 Binary files /dev/null and b/fonts/TewiFont/00C6.png differ diff --git a/fonts/TewiFont/00C7.png b/fonts/TewiFont/00C7.png new file mode 100644 index 000000000..c163cdc70 Binary files /dev/null and b/fonts/TewiFont/00C7.png differ diff --git a/fonts/TewiFont/00C8.png b/fonts/TewiFont/00C8.png new file mode 100644 index 000000000..d0d2a8eb9 Binary files /dev/null and b/fonts/TewiFont/00C8.png differ diff --git a/fonts/TewiFont/00C9.png b/fonts/TewiFont/00C9.png new file mode 100644 index 000000000..2308e458f Binary files /dev/null and b/fonts/TewiFont/00C9.png differ diff --git a/fonts/TewiFont/00CA.png b/fonts/TewiFont/00CA.png new file mode 100644 index 000000000..aaf9b3b41 Binary files /dev/null and b/fonts/TewiFont/00CA.png differ diff --git a/fonts/TewiFont/00CB.png b/fonts/TewiFont/00CB.png new file mode 100644 index 000000000..915cfe3bc Binary files /dev/null and b/fonts/TewiFont/00CB.png differ diff --git a/fonts/TewiFont/00CC.png b/fonts/TewiFont/00CC.png new file mode 100644 index 000000000..54a316d38 Binary files /dev/null and b/fonts/TewiFont/00CC.png differ diff --git a/fonts/TewiFont/00CD.png b/fonts/TewiFont/00CD.png new file mode 100644 index 000000000..7ea46cc49 Binary files /dev/null and b/fonts/TewiFont/00CD.png differ diff --git a/fonts/TewiFont/00CE.png b/fonts/TewiFont/00CE.png new file mode 100644 index 000000000..4822cc3c6 Binary files /dev/null and b/fonts/TewiFont/00CE.png differ diff --git a/fonts/TewiFont/00CF.png b/fonts/TewiFont/00CF.png new file mode 100644 index 000000000..f2848d97c Binary files /dev/null and b/fonts/TewiFont/00CF.png differ diff --git a/fonts/TewiFont/00D0.png b/fonts/TewiFont/00D0.png new file mode 100644 index 000000000..72a0bd592 Binary files /dev/null and b/fonts/TewiFont/00D0.png differ diff --git a/fonts/TewiFont/00D1.png b/fonts/TewiFont/00D1.png new file mode 100644 index 000000000..38b4fd90f Binary files /dev/null and b/fonts/TewiFont/00D1.png differ diff --git a/fonts/TewiFont/00D2.png b/fonts/TewiFont/00D2.png new file mode 100644 index 000000000..13b8ed400 Binary files /dev/null and b/fonts/TewiFont/00D2.png differ diff --git a/fonts/TewiFont/00D3.png b/fonts/TewiFont/00D3.png new file mode 100644 index 000000000..57a76bd89 Binary files /dev/null and b/fonts/TewiFont/00D3.png differ diff --git a/fonts/TewiFont/00D4.png b/fonts/TewiFont/00D4.png new file mode 100644 index 000000000..2cd267db1 Binary files /dev/null and b/fonts/TewiFont/00D4.png differ diff --git a/fonts/TewiFont/00D5.png b/fonts/TewiFont/00D5.png new file mode 100644 index 000000000..51809ee44 Binary files /dev/null and b/fonts/TewiFont/00D5.png differ diff --git a/fonts/TewiFont/00D6.png b/fonts/TewiFont/00D6.png new file mode 100644 index 000000000..c11d922f1 Binary files /dev/null and b/fonts/TewiFont/00D6.png differ diff --git a/fonts/TewiFont/00D7.png b/fonts/TewiFont/00D7.png new file mode 100644 index 000000000..1939c199f Binary files /dev/null and b/fonts/TewiFont/00D7.png differ diff --git a/fonts/TewiFont/00D8.png b/fonts/TewiFont/00D8.png new file mode 100644 index 000000000..215513f60 Binary files /dev/null and b/fonts/TewiFont/00D8.png differ diff --git a/fonts/TewiFont/00D9.png b/fonts/TewiFont/00D9.png new file mode 100644 index 000000000..737303d52 Binary files /dev/null and b/fonts/TewiFont/00D9.png differ diff --git a/fonts/TewiFont/00DA.png b/fonts/TewiFont/00DA.png new file mode 100644 index 000000000..9355c7c0a Binary files /dev/null and b/fonts/TewiFont/00DA.png differ diff --git a/fonts/TewiFont/00DB.png b/fonts/TewiFont/00DB.png new file mode 100644 index 000000000..fa812b265 Binary files /dev/null and b/fonts/TewiFont/00DB.png differ diff --git a/fonts/TewiFont/00DC.png b/fonts/TewiFont/00DC.png new file mode 100644 index 000000000..cea3e366c Binary files /dev/null and b/fonts/TewiFont/00DC.png differ diff --git a/fonts/TewiFont/00DD.png b/fonts/TewiFont/00DD.png new file mode 100644 index 000000000..5bebbb5a0 Binary files /dev/null and b/fonts/TewiFont/00DD.png differ diff --git a/fonts/TewiFont/00DE.png b/fonts/TewiFont/00DE.png new file mode 100644 index 000000000..01dc4bccf Binary files /dev/null and b/fonts/TewiFont/00DE.png differ diff --git a/fonts/TewiFont/00DF.png b/fonts/TewiFont/00DF.png new file mode 100644 index 000000000..f6765483c Binary files /dev/null and b/fonts/TewiFont/00DF.png differ diff --git a/fonts/TewiFont/00E0.png b/fonts/TewiFont/00E0.png new file mode 100644 index 000000000..0e896ae0e Binary files /dev/null and b/fonts/TewiFont/00E0.png differ diff --git a/fonts/TewiFont/00E1.png b/fonts/TewiFont/00E1.png new file mode 100644 index 000000000..91272e068 Binary files /dev/null and b/fonts/TewiFont/00E1.png differ diff --git a/fonts/TewiFont/00E2.png b/fonts/TewiFont/00E2.png new file mode 100644 index 000000000..4e1afb1bc Binary files /dev/null and b/fonts/TewiFont/00E2.png differ diff --git a/fonts/TewiFont/00E3.png b/fonts/TewiFont/00E3.png new file mode 100644 index 000000000..08aab56ab Binary files /dev/null and b/fonts/TewiFont/00E3.png differ diff --git a/fonts/TewiFont/00E4.png b/fonts/TewiFont/00E4.png new file mode 100644 index 000000000..82a943e8d Binary files /dev/null and b/fonts/TewiFont/00E4.png differ diff --git a/fonts/TewiFont/00E5.png b/fonts/TewiFont/00E5.png new file mode 100644 index 000000000..57f3d20db Binary files /dev/null and b/fonts/TewiFont/00E5.png differ diff --git a/fonts/TewiFont/00E6.png b/fonts/TewiFont/00E6.png new file mode 100644 index 000000000..9fc5ce4e6 Binary files /dev/null and b/fonts/TewiFont/00E6.png differ diff --git a/fonts/TewiFont/00E7.png b/fonts/TewiFont/00E7.png new file mode 100644 index 000000000..a742bc487 Binary files /dev/null and b/fonts/TewiFont/00E7.png differ diff --git a/fonts/TewiFont/00E8.png b/fonts/TewiFont/00E8.png new file mode 100644 index 000000000..c15203530 Binary files /dev/null and b/fonts/TewiFont/00E8.png differ diff --git a/fonts/TewiFont/00E9.png b/fonts/TewiFont/00E9.png new file mode 100644 index 000000000..35df71151 Binary files /dev/null and b/fonts/TewiFont/00E9.png differ diff --git a/fonts/TewiFont/00EA.png b/fonts/TewiFont/00EA.png new file mode 100644 index 000000000..5bd34df4e Binary files /dev/null and b/fonts/TewiFont/00EA.png differ diff --git a/fonts/TewiFont/00EB.png b/fonts/TewiFont/00EB.png new file mode 100644 index 000000000..724b2c075 Binary files /dev/null and b/fonts/TewiFont/00EB.png differ diff --git a/fonts/TewiFont/00EC.png b/fonts/TewiFont/00EC.png new file mode 100644 index 000000000..23fccad40 Binary files /dev/null and b/fonts/TewiFont/00EC.png differ diff --git a/fonts/TewiFont/00ED.png b/fonts/TewiFont/00ED.png new file mode 100644 index 000000000..760f379bb Binary files /dev/null and b/fonts/TewiFont/00ED.png differ diff --git a/fonts/TewiFont/00EE.png b/fonts/TewiFont/00EE.png new file mode 100644 index 000000000..0b96e5eb7 Binary files /dev/null and b/fonts/TewiFont/00EE.png differ diff --git a/fonts/TewiFont/00EF.png b/fonts/TewiFont/00EF.png new file mode 100644 index 000000000..ed2b6c65c Binary files /dev/null and b/fonts/TewiFont/00EF.png differ diff --git a/fonts/TewiFont/00F0.png b/fonts/TewiFont/00F0.png new file mode 100644 index 000000000..3c06ae069 Binary files /dev/null and b/fonts/TewiFont/00F0.png differ diff --git a/fonts/TewiFont/00F1.png b/fonts/TewiFont/00F1.png new file mode 100644 index 000000000..c8f382263 Binary files /dev/null and b/fonts/TewiFont/00F1.png differ diff --git a/fonts/TewiFont/00F2.png b/fonts/TewiFont/00F2.png new file mode 100644 index 000000000..a30cc5003 Binary files /dev/null and b/fonts/TewiFont/00F2.png differ diff --git a/fonts/TewiFont/00F3.png b/fonts/TewiFont/00F3.png new file mode 100644 index 000000000..ac92d92eb Binary files /dev/null and b/fonts/TewiFont/00F3.png differ diff --git a/fonts/TewiFont/00F4.png b/fonts/TewiFont/00F4.png new file mode 100644 index 000000000..ca5e8f56a Binary files /dev/null and b/fonts/TewiFont/00F4.png differ diff --git a/fonts/TewiFont/00F5.png b/fonts/TewiFont/00F5.png new file mode 100644 index 000000000..04be1213d Binary files /dev/null and b/fonts/TewiFont/00F5.png differ diff --git a/fonts/TewiFont/00F6.png b/fonts/TewiFont/00F6.png new file mode 100644 index 000000000..4dfe24658 Binary files /dev/null and b/fonts/TewiFont/00F6.png differ diff --git a/fonts/TewiFont/00F7.png b/fonts/TewiFont/00F7.png new file mode 100644 index 000000000..289166198 Binary files /dev/null and b/fonts/TewiFont/00F7.png differ diff --git a/fonts/TewiFont/00F8.png b/fonts/TewiFont/00F8.png new file mode 100644 index 000000000..e484e4932 Binary files /dev/null and b/fonts/TewiFont/00F8.png differ diff --git a/fonts/TewiFont/00F9.png b/fonts/TewiFont/00F9.png new file mode 100644 index 000000000..32c83c393 Binary files /dev/null and b/fonts/TewiFont/00F9.png differ diff --git a/fonts/TewiFont/00FA.png b/fonts/TewiFont/00FA.png new file mode 100644 index 000000000..494ba8b8a Binary files /dev/null and b/fonts/TewiFont/00FA.png differ diff --git a/fonts/TewiFont/00FB.png b/fonts/TewiFont/00FB.png new file mode 100644 index 000000000..a942fd716 Binary files /dev/null and b/fonts/TewiFont/00FB.png differ diff --git a/fonts/TewiFont/00FC.png b/fonts/TewiFont/00FC.png new file mode 100644 index 000000000..2c57f27aa Binary files /dev/null and b/fonts/TewiFont/00FC.png differ diff --git a/fonts/TewiFont/00FD.png b/fonts/TewiFont/00FD.png new file mode 100644 index 000000000..df9bebf94 Binary files /dev/null and b/fonts/TewiFont/00FD.png differ diff --git a/fonts/TewiFont/00FE.png b/fonts/TewiFont/00FE.png new file mode 100644 index 000000000..098d4550c Binary files /dev/null and b/fonts/TewiFont/00FE.png differ diff --git a/fonts/TewiFont/00FF.png b/fonts/TewiFont/00FF.png new file mode 100644 index 000000000..e861af911 Binary files /dev/null and b/fonts/TewiFont/00FF.png differ diff --git a/fonts/TewiFont/0100.png b/fonts/TewiFont/0100.png new file mode 100644 index 000000000..f21a4b3fe Binary files /dev/null and b/fonts/TewiFont/0100.png differ diff --git a/fonts/TewiFont/0101.png b/fonts/TewiFont/0101.png new file mode 100644 index 000000000..410a9e159 Binary files /dev/null and b/fonts/TewiFont/0101.png differ diff --git a/fonts/TewiFont/0102.png b/fonts/TewiFont/0102.png new file mode 100644 index 000000000..2eb2fee4a Binary files /dev/null and b/fonts/TewiFont/0102.png differ diff --git a/fonts/TewiFont/0103.png b/fonts/TewiFont/0103.png new file mode 100644 index 000000000..5dc86e1d4 Binary files /dev/null and b/fonts/TewiFont/0103.png differ diff --git a/fonts/TewiFont/0104.png b/fonts/TewiFont/0104.png new file mode 100644 index 000000000..d22c6fdf5 Binary files /dev/null and b/fonts/TewiFont/0104.png differ diff --git a/fonts/TewiFont/0105.png b/fonts/TewiFont/0105.png new file mode 100644 index 000000000..2a3b9af64 Binary files /dev/null and b/fonts/TewiFont/0105.png differ diff --git a/fonts/TewiFont/0106.png b/fonts/TewiFont/0106.png new file mode 100644 index 000000000..b00c06b95 Binary files /dev/null and b/fonts/TewiFont/0106.png differ diff --git a/fonts/TewiFont/0107.png b/fonts/TewiFont/0107.png new file mode 100644 index 000000000..f1951a655 Binary files /dev/null and b/fonts/TewiFont/0107.png differ diff --git a/fonts/TewiFont/0108.png b/fonts/TewiFont/0108.png new file mode 100644 index 000000000..3bf1f6295 Binary files /dev/null and b/fonts/TewiFont/0108.png differ diff --git a/fonts/TewiFont/0109.png b/fonts/TewiFont/0109.png new file mode 100644 index 000000000..698244611 Binary files /dev/null and b/fonts/TewiFont/0109.png differ diff --git a/fonts/TewiFont/010A.png b/fonts/TewiFont/010A.png new file mode 100644 index 000000000..abed52982 Binary files /dev/null and b/fonts/TewiFont/010A.png differ diff --git a/fonts/TewiFont/010B.png b/fonts/TewiFont/010B.png new file mode 100644 index 000000000..a40eb32a4 Binary files /dev/null and b/fonts/TewiFont/010B.png differ diff --git a/fonts/TewiFont/010C.png b/fonts/TewiFont/010C.png new file mode 100644 index 000000000..03a98eb7f Binary files /dev/null and b/fonts/TewiFont/010C.png differ diff --git a/fonts/TewiFont/010D.png b/fonts/TewiFont/010D.png new file mode 100644 index 000000000..7638c228e Binary files /dev/null and b/fonts/TewiFont/010D.png differ diff --git a/fonts/TewiFont/010E.png b/fonts/TewiFont/010E.png new file mode 100644 index 000000000..f7595c9ea Binary files /dev/null and b/fonts/TewiFont/010E.png differ diff --git a/fonts/TewiFont/010F.png b/fonts/TewiFont/010F.png new file mode 100644 index 000000000..247afdbdb Binary files /dev/null and b/fonts/TewiFont/010F.png differ diff --git a/fonts/TewiFont/0110.png b/fonts/TewiFont/0110.png new file mode 100644 index 000000000..e72065675 Binary files /dev/null and b/fonts/TewiFont/0110.png differ diff --git a/fonts/TewiFont/0111.png b/fonts/TewiFont/0111.png new file mode 100644 index 000000000..e0b65fa5f Binary files /dev/null and b/fonts/TewiFont/0111.png differ diff --git a/fonts/TewiFont/0112.png b/fonts/TewiFont/0112.png new file mode 100644 index 000000000..727e79ecf Binary files /dev/null and b/fonts/TewiFont/0112.png differ diff --git a/fonts/TewiFont/0113.png b/fonts/TewiFont/0113.png new file mode 100644 index 000000000..e8cf1c997 Binary files /dev/null and b/fonts/TewiFont/0113.png differ diff --git a/fonts/TewiFont/0114.png b/fonts/TewiFont/0114.png new file mode 100644 index 000000000..985b653bf Binary files /dev/null and b/fonts/TewiFont/0114.png differ diff --git a/fonts/TewiFont/0115.png b/fonts/TewiFont/0115.png new file mode 100644 index 000000000..e6f1d65a5 Binary files /dev/null and b/fonts/TewiFont/0115.png differ diff --git a/fonts/TewiFont/0116.png b/fonts/TewiFont/0116.png new file mode 100644 index 000000000..f1a2cc520 Binary files /dev/null and b/fonts/TewiFont/0116.png differ diff --git a/fonts/TewiFont/0117.png b/fonts/TewiFont/0117.png new file mode 100644 index 000000000..01afdd508 Binary files /dev/null and b/fonts/TewiFont/0117.png differ diff --git a/fonts/TewiFont/0118.png b/fonts/TewiFont/0118.png new file mode 100644 index 000000000..70d695ec0 Binary files /dev/null and b/fonts/TewiFont/0118.png differ diff --git a/fonts/TewiFont/0119.png b/fonts/TewiFont/0119.png new file mode 100644 index 000000000..972dd3b20 Binary files /dev/null and b/fonts/TewiFont/0119.png differ diff --git a/fonts/TewiFont/011A.png b/fonts/TewiFont/011A.png new file mode 100644 index 000000000..af26b79e1 Binary files /dev/null and b/fonts/TewiFont/011A.png differ diff --git a/fonts/TewiFont/011B.png b/fonts/TewiFont/011B.png new file mode 100644 index 000000000..97a9cfe87 Binary files /dev/null and b/fonts/TewiFont/011B.png differ diff --git a/fonts/TewiFont/011C.png b/fonts/TewiFont/011C.png new file mode 100644 index 000000000..448764521 Binary files /dev/null and b/fonts/TewiFont/011C.png differ diff --git a/fonts/TewiFont/011D.png b/fonts/TewiFont/011D.png new file mode 100644 index 000000000..a91788cda Binary files /dev/null and b/fonts/TewiFont/011D.png differ diff --git a/fonts/TewiFont/011E.png b/fonts/TewiFont/011E.png new file mode 100644 index 000000000..17b86f08d Binary files /dev/null and b/fonts/TewiFont/011E.png differ diff --git a/fonts/TewiFont/011F.png b/fonts/TewiFont/011F.png new file mode 100644 index 000000000..914ec8938 Binary files /dev/null and b/fonts/TewiFont/011F.png differ diff --git a/fonts/TewiFont/0120.png b/fonts/TewiFont/0120.png new file mode 100644 index 000000000..487847f32 Binary files /dev/null and b/fonts/TewiFont/0120.png differ diff --git a/fonts/TewiFont/0121.png b/fonts/TewiFont/0121.png new file mode 100644 index 000000000..f22ff9272 Binary files /dev/null and b/fonts/TewiFont/0121.png differ diff --git a/fonts/TewiFont/0122.png b/fonts/TewiFont/0122.png new file mode 100644 index 000000000..8f3cbc102 Binary files /dev/null and b/fonts/TewiFont/0122.png differ diff --git a/fonts/TewiFont/0123.png b/fonts/TewiFont/0123.png new file mode 100644 index 000000000..4fb3db75a Binary files /dev/null and b/fonts/TewiFont/0123.png differ diff --git a/fonts/TewiFont/0124.png b/fonts/TewiFont/0124.png new file mode 100644 index 000000000..ed85025f2 Binary files /dev/null and b/fonts/TewiFont/0124.png differ diff --git a/fonts/TewiFont/0125.png b/fonts/TewiFont/0125.png new file mode 100644 index 000000000..5abe3c220 Binary files /dev/null and b/fonts/TewiFont/0125.png differ diff --git a/fonts/TewiFont/0126.png b/fonts/TewiFont/0126.png new file mode 100644 index 000000000..2d25b33c7 Binary files /dev/null and b/fonts/TewiFont/0126.png differ diff --git a/fonts/TewiFont/0127.png b/fonts/TewiFont/0127.png new file mode 100644 index 000000000..ffc714f75 Binary files /dev/null and b/fonts/TewiFont/0127.png differ diff --git a/fonts/TewiFont/0128.png b/fonts/TewiFont/0128.png new file mode 100644 index 000000000..746f072b3 Binary files /dev/null and b/fonts/TewiFont/0128.png differ diff --git a/fonts/TewiFont/0129.png b/fonts/TewiFont/0129.png new file mode 100644 index 000000000..35d33a699 Binary files /dev/null and b/fonts/TewiFont/0129.png differ diff --git a/fonts/TewiFont/012A.png b/fonts/TewiFont/012A.png new file mode 100644 index 000000000..0f4adff8d Binary files /dev/null and b/fonts/TewiFont/012A.png differ diff --git a/fonts/TewiFont/012B.png b/fonts/TewiFont/012B.png new file mode 100644 index 000000000..eec0646b7 Binary files /dev/null and b/fonts/TewiFont/012B.png differ diff --git a/fonts/TewiFont/012C.png b/fonts/TewiFont/012C.png new file mode 100644 index 000000000..716302e64 Binary files /dev/null and b/fonts/TewiFont/012C.png differ diff --git a/fonts/TewiFont/012D.png b/fonts/TewiFont/012D.png new file mode 100644 index 000000000..7b39c4537 Binary files /dev/null and b/fonts/TewiFont/012D.png differ diff --git a/fonts/TewiFont/012E.png b/fonts/TewiFont/012E.png new file mode 100644 index 000000000..0575abeb9 Binary files /dev/null and b/fonts/TewiFont/012E.png differ diff --git a/fonts/TewiFont/012F.png b/fonts/TewiFont/012F.png new file mode 100644 index 000000000..0dea8de40 Binary files /dev/null and b/fonts/TewiFont/012F.png differ diff --git a/fonts/TewiFont/0130.png b/fonts/TewiFont/0130.png new file mode 100644 index 000000000..a7b2c439d Binary files /dev/null and b/fonts/TewiFont/0130.png differ diff --git a/fonts/TewiFont/0131.png b/fonts/TewiFont/0131.png new file mode 100644 index 000000000..4f4c21f6e Binary files /dev/null and b/fonts/TewiFont/0131.png differ diff --git a/fonts/TewiFont/0132.png b/fonts/TewiFont/0132.png new file mode 100644 index 000000000..e35a1f40b Binary files /dev/null and b/fonts/TewiFont/0132.png differ diff --git a/fonts/TewiFont/0133.png b/fonts/TewiFont/0133.png new file mode 100644 index 000000000..0d2f77004 Binary files /dev/null and b/fonts/TewiFont/0133.png differ diff --git a/fonts/TewiFont/0134.png b/fonts/TewiFont/0134.png new file mode 100644 index 000000000..803650e38 Binary files /dev/null and b/fonts/TewiFont/0134.png differ diff --git a/fonts/TewiFont/0135.png b/fonts/TewiFont/0135.png new file mode 100644 index 000000000..86f4a3095 Binary files /dev/null and b/fonts/TewiFont/0135.png differ diff --git a/fonts/TewiFont/0136.png b/fonts/TewiFont/0136.png new file mode 100644 index 000000000..29f284e45 Binary files /dev/null and b/fonts/TewiFont/0136.png differ diff --git a/fonts/TewiFont/0137.png b/fonts/TewiFont/0137.png new file mode 100644 index 000000000..7d16dbdca Binary files /dev/null and b/fonts/TewiFont/0137.png differ diff --git a/fonts/TewiFont/0138.png b/fonts/TewiFont/0138.png new file mode 100644 index 000000000..91209cbc5 Binary files /dev/null and b/fonts/TewiFont/0138.png differ diff --git a/fonts/TewiFont/0139.png b/fonts/TewiFont/0139.png new file mode 100644 index 000000000..28eb5655a Binary files /dev/null and b/fonts/TewiFont/0139.png differ diff --git a/fonts/TewiFont/013A.png b/fonts/TewiFont/013A.png new file mode 100644 index 000000000..08b53b848 Binary files /dev/null and b/fonts/TewiFont/013A.png differ diff --git a/fonts/TewiFont/013B.png b/fonts/TewiFont/013B.png new file mode 100644 index 000000000..bd25c7473 Binary files /dev/null and b/fonts/TewiFont/013B.png differ diff --git a/fonts/TewiFont/013C.png b/fonts/TewiFont/013C.png new file mode 100644 index 000000000..b63de17c2 Binary files /dev/null and b/fonts/TewiFont/013C.png differ diff --git a/fonts/TewiFont/013D.png b/fonts/TewiFont/013D.png new file mode 100644 index 000000000..b6e2c312e Binary files /dev/null and b/fonts/TewiFont/013D.png differ diff --git a/fonts/TewiFont/013E.png b/fonts/TewiFont/013E.png new file mode 100644 index 000000000..f584733ca Binary files /dev/null and b/fonts/TewiFont/013E.png differ diff --git a/fonts/TewiFont/013F.png b/fonts/TewiFont/013F.png new file mode 100644 index 000000000..0d4bd0eee Binary files /dev/null and b/fonts/TewiFont/013F.png differ diff --git a/fonts/TewiFont/0140.png b/fonts/TewiFont/0140.png new file mode 100644 index 000000000..662d4f7e5 Binary files /dev/null and b/fonts/TewiFont/0140.png differ diff --git a/fonts/TewiFont/0141.png b/fonts/TewiFont/0141.png new file mode 100644 index 000000000..72d5ca24e Binary files /dev/null and b/fonts/TewiFont/0141.png differ diff --git a/fonts/TewiFont/0142.png b/fonts/TewiFont/0142.png new file mode 100644 index 000000000..c7eeb0573 Binary files /dev/null and b/fonts/TewiFont/0142.png differ diff --git a/fonts/TewiFont/0143.png b/fonts/TewiFont/0143.png new file mode 100644 index 000000000..35e7c425f Binary files /dev/null and b/fonts/TewiFont/0143.png differ diff --git a/fonts/TewiFont/0144.png b/fonts/TewiFont/0144.png new file mode 100644 index 000000000..8653ec9b3 Binary files /dev/null and b/fonts/TewiFont/0144.png differ diff --git a/fonts/TewiFont/0145.png b/fonts/TewiFont/0145.png new file mode 100644 index 000000000..0eea8514e Binary files /dev/null and b/fonts/TewiFont/0145.png differ diff --git a/fonts/TewiFont/0146.png b/fonts/TewiFont/0146.png new file mode 100644 index 000000000..7e9ac4b5f Binary files /dev/null and b/fonts/TewiFont/0146.png differ diff --git a/fonts/TewiFont/0147.png b/fonts/TewiFont/0147.png new file mode 100644 index 000000000..ed081b238 Binary files /dev/null and b/fonts/TewiFont/0147.png differ diff --git a/fonts/TewiFont/0148.png b/fonts/TewiFont/0148.png new file mode 100644 index 000000000..b7e7f25e8 Binary files /dev/null and b/fonts/TewiFont/0148.png differ diff --git a/fonts/TewiFont/0149.png b/fonts/TewiFont/0149.png new file mode 100644 index 000000000..50554d5a6 Binary files /dev/null and b/fonts/TewiFont/0149.png differ diff --git a/fonts/TewiFont/014A.png b/fonts/TewiFont/014A.png new file mode 100644 index 000000000..9548d6856 Binary files /dev/null and b/fonts/TewiFont/014A.png differ diff --git a/fonts/TewiFont/014B.png b/fonts/TewiFont/014B.png new file mode 100644 index 000000000..0d29c9864 Binary files /dev/null and b/fonts/TewiFont/014B.png differ diff --git a/fonts/TewiFont/014C.png b/fonts/TewiFont/014C.png new file mode 100644 index 000000000..cf1c39b61 Binary files /dev/null and b/fonts/TewiFont/014C.png differ diff --git a/fonts/TewiFont/014D.png b/fonts/TewiFont/014D.png new file mode 100644 index 000000000..75e86ef7d Binary files /dev/null and b/fonts/TewiFont/014D.png differ diff --git a/fonts/TewiFont/014E.png b/fonts/TewiFont/014E.png new file mode 100644 index 000000000..e0a4fff72 Binary files /dev/null and b/fonts/TewiFont/014E.png differ diff --git a/fonts/TewiFont/014F.png b/fonts/TewiFont/014F.png new file mode 100644 index 000000000..69da295e8 Binary files /dev/null and b/fonts/TewiFont/014F.png differ diff --git a/fonts/TewiFont/0150.png b/fonts/TewiFont/0150.png new file mode 100644 index 000000000..da68a7280 Binary files /dev/null and b/fonts/TewiFont/0150.png differ diff --git a/fonts/TewiFont/0151.png b/fonts/TewiFont/0151.png new file mode 100644 index 000000000..94245aa87 Binary files /dev/null and b/fonts/TewiFont/0151.png differ diff --git a/fonts/TewiFont/0152.png b/fonts/TewiFont/0152.png new file mode 100644 index 000000000..12cc62b3b Binary files /dev/null and b/fonts/TewiFont/0152.png differ diff --git a/fonts/TewiFont/0153.png b/fonts/TewiFont/0153.png new file mode 100644 index 000000000..323bcc27a Binary files /dev/null and b/fonts/TewiFont/0153.png differ diff --git a/fonts/TewiFont/0154.png b/fonts/TewiFont/0154.png new file mode 100644 index 000000000..2625bc8f7 Binary files /dev/null and b/fonts/TewiFont/0154.png differ diff --git a/fonts/TewiFont/0155.png b/fonts/TewiFont/0155.png new file mode 100644 index 000000000..e78ba1338 Binary files /dev/null and b/fonts/TewiFont/0155.png differ diff --git a/fonts/TewiFont/0156.png b/fonts/TewiFont/0156.png new file mode 100644 index 000000000..d91597e09 Binary files /dev/null and b/fonts/TewiFont/0156.png differ diff --git a/fonts/TewiFont/0157.png b/fonts/TewiFont/0157.png new file mode 100644 index 000000000..1128f0205 Binary files /dev/null and b/fonts/TewiFont/0157.png differ diff --git a/fonts/TewiFont/0158.png b/fonts/TewiFont/0158.png new file mode 100644 index 000000000..495fdb25a Binary files /dev/null and b/fonts/TewiFont/0158.png differ diff --git a/fonts/TewiFont/0159.png b/fonts/TewiFont/0159.png new file mode 100644 index 000000000..756f20e78 Binary files /dev/null and b/fonts/TewiFont/0159.png differ diff --git a/fonts/TewiFont/015A.png b/fonts/TewiFont/015A.png new file mode 100644 index 000000000..c568077db Binary files /dev/null and b/fonts/TewiFont/015A.png differ diff --git a/fonts/TewiFont/015B.png b/fonts/TewiFont/015B.png new file mode 100644 index 000000000..e4686882f Binary files /dev/null and b/fonts/TewiFont/015B.png differ diff --git a/fonts/TewiFont/015C.png b/fonts/TewiFont/015C.png new file mode 100644 index 000000000..fa69e3170 Binary files /dev/null and b/fonts/TewiFont/015C.png differ diff --git a/fonts/TewiFont/015D.png b/fonts/TewiFont/015D.png new file mode 100644 index 000000000..f9b083e63 Binary files /dev/null and b/fonts/TewiFont/015D.png differ diff --git a/fonts/TewiFont/015E.png b/fonts/TewiFont/015E.png new file mode 100644 index 000000000..f33596fca Binary files /dev/null and b/fonts/TewiFont/015E.png differ diff --git a/fonts/TewiFont/015F.png b/fonts/TewiFont/015F.png new file mode 100644 index 000000000..d48b6de0e Binary files /dev/null and b/fonts/TewiFont/015F.png differ diff --git a/fonts/TewiFont/0160.png b/fonts/TewiFont/0160.png new file mode 100644 index 000000000..e4319a11a Binary files /dev/null and b/fonts/TewiFont/0160.png differ diff --git a/fonts/TewiFont/0161.png b/fonts/TewiFont/0161.png new file mode 100644 index 000000000..b66821053 Binary files /dev/null and b/fonts/TewiFont/0161.png differ diff --git a/fonts/TewiFont/0162.png b/fonts/TewiFont/0162.png new file mode 100644 index 000000000..8c2df9c24 Binary files /dev/null and b/fonts/TewiFont/0162.png differ diff --git a/fonts/TewiFont/0163.png b/fonts/TewiFont/0163.png new file mode 100644 index 000000000..fff7645cc Binary files /dev/null and b/fonts/TewiFont/0163.png differ diff --git a/fonts/TewiFont/0164.png b/fonts/TewiFont/0164.png new file mode 100644 index 000000000..dd68b852a Binary files /dev/null and b/fonts/TewiFont/0164.png differ diff --git a/fonts/TewiFont/0165.png b/fonts/TewiFont/0165.png new file mode 100644 index 000000000..46bfb1aba Binary files /dev/null and b/fonts/TewiFont/0165.png differ diff --git a/fonts/TewiFont/0166.png b/fonts/TewiFont/0166.png new file mode 100644 index 000000000..455ef4493 Binary files /dev/null and b/fonts/TewiFont/0166.png differ diff --git a/fonts/TewiFont/0167.png b/fonts/TewiFont/0167.png new file mode 100644 index 000000000..51ba33a7b Binary files /dev/null and b/fonts/TewiFont/0167.png differ diff --git a/fonts/TewiFont/0168.png b/fonts/TewiFont/0168.png new file mode 100644 index 000000000..7d805f005 Binary files /dev/null and b/fonts/TewiFont/0168.png differ diff --git a/fonts/TewiFont/0169.png b/fonts/TewiFont/0169.png new file mode 100644 index 000000000..b619c1fb3 Binary files /dev/null and b/fonts/TewiFont/0169.png differ diff --git a/fonts/TewiFont/016A.png b/fonts/TewiFont/016A.png new file mode 100644 index 000000000..06c9040c9 Binary files /dev/null and b/fonts/TewiFont/016A.png differ diff --git a/fonts/TewiFont/016B.png b/fonts/TewiFont/016B.png new file mode 100644 index 000000000..e3d43816e Binary files /dev/null and b/fonts/TewiFont/016B.png differ diff --git a/fonts/TewiFont/016C.png b/fonts/TewiFont/016C.png new file mode 100644 index 000000000..8e5f2ad17 Binary files /dev/null and b/fonts/TewiFont/016C.png differ diff --git a/fonts/TewiFont/016D.png b/fonts/TewiFont/016D.png new file mode 100644 index 000000000..8fa275d2b Binary files /dev/null and b/fonts/TewiFont/016D.png differ diff --git a/fonts/TewiFont/016E.png b/fonts/TewiFont/016E.png new file mode 100644 index 000000000..f89684b9d Binary files /dev/null and b/fonts/TewiFont/016E.png differ diff --git a/fonts/TewiFont/016F.png b/fonts/TewiFont/016F.png new file mode 100644 index 000000000..650d6e559 Binary files /dev/null and b/fonts/TewiFont/016F.png differ diff --git a/fonts/TewiFont/0170.png b/fonts/TewiFont/0170.png new file mode 100644 index 000000000..af7090c4e Binary files /dev/null and b/fonts/TewiFont/0170.png differ diff --git a/fonts/TewiFont/0171.png b/fonts/TewiFont/0171.png new file mode 100644 index 000000000..b003cc4ed Binary files /dev/null and b/fonts/TewiFont/0171.png differ diff --git a/fonts/TewiFont/0172.png b/fonts/TewiFont/0172.png new file mode 100644 index 000000000..a37a05faf Binary files /dev/null and b/fonts/TewiFont/0172.png differ diff --git a/fonts/TewiFont/0173.png b/fonts/TewiFont/0173.png new file mode 100644 index 000000000..2f60ae236 Binary files /dev/null and b/fonts/TewiFont/0173.png differ diff --git a/fonts/TewiFont/0174.png b/fonts/TewiFont/0174.png new file mode 100644 index 000000000..e12567cda Binary files /dev/null and b/fonts/TewiFont/0174.png differ diff --git a/fonts/TewiFont/0175.png b/fonts/TewiFont/0175.png new file mode 100644 index 000000000..13e03c495 Binary files /dev/null and b/fonts/TewiFont/0175.png differ diff --git a/fonts/TewiFont/0176.png b/fonts/TewiFont/0176.png new file mode 100644 index 000000000..bed8e6113 Binary files /dev/null and b/fonts/TewiFont/0176.png differ diff --git a/fonts/TewiFont/0177.png b/fonts/TewiFont/0177.png new file mode 100644 index 000000000..74a686bce Binary files /dev/null and b/fonts/TewiFont/0177.png differ diff --git a/fonts/TewiFont/0178.png b/fonts/TewiFont/0178.png new file mode 100644 index 000000000..7090194a8 Binary files /dev/null and b/fonts/TewiFont/0178.png differ diff --git a/fonts/TewiFont/0179.png b/fonts/TewiFont/0179.png new file mode 100644 index 000000000..6bde9d682 Binary files /dev/null and b/fonts/TewiFont/0179.png differ diff --git a/fonts/TewiFont/017A.png b/fonts/TewiFont/017A.png new file mode 100644 index 000000000..92c72d898 Binary files /dev/null and b/fonts/TewiFont/017A.png differ diff --git a/fonts/TewiFont/017B.png b/fonts/TewiFont/017B.png new file mode 100644 index 000000000..ecce0d8b5 Binary files /dev/null and b/fonts/TewiFont/017B.png differ diff --git a/fonts/TewiFont/017C.png b/fonts/TewiFont/017C.png new file mode 100644 index 000000000..484717de9 Binary files /dev/null and b/fonts/TewiFont/017C.png differ diff --git a/fonts/TewiFont/017D.png b/fonts/TewiFont/017D.png new file mode 100644 index 000000000..3e1eb73a2 Binary files /dev/null and b/fonts/TewiFont/017D.png differ diff --git a/fonts/TewiFont/017E.png b/fonts/TewiFont/017E.png new file mode 100644 index 000000000..66ec24810 Binary files /dev/null and b/fonts/TewiFont/017E.png differ diff --git a/fonts/TewiFont/017F.png b/fonts/TewiFont/017F.png new file mode 100644 index 000000000..3e70a70b0 Binary files /dev/null and b/fonts/TewiFont/017F.png differ diff --git a/fonts/TewiFont/0180.png b/fonts/TewiFont/0180.png new file mode 100644 index 000000000..c1816ae34 Binary files /dev/null and b/fonts/TewiFont/0180.png differ diff --git a/fonts/TewiFont/0181.png b/fonts/TewiFont/0181.png new file mode 100644 index 000000000..4c389ff57 Binary files /dev/null and b/fonts/TewiFont/0181.png differ diff --git a/fonts/TewiFont/0182.png b/fonts/TewiFont/0182.png new file mode 100644 index 000000000..85df6f2e6 Binary files /dev/null and b/fonts/TewiFont/0182.png differ diff --git a/fonts/TewiFont/0183.png b/fonts/TewiFont/0183.png new file mode 100644 index 000000000..541b2ff94 Binary files /dev/null and b/fonts/TewiFont/0183.png differ diff --git a/fonts/TewiFont/0184.png b/fonts/TewiFont/0184.png new file mode 100644 index 000000000..0311daecc Binary files /dev/null and b/fonts/TewiFont/0184.png differ diff --git a/fonts/TewiFont/0185.png b/fonts/TewiFont/0185.png new file mode 100644 index 000000000..19e932735 Binary files /dev/null and b/fonts/TewiFont/0185.png differ diff --git a/fonts/TewiFont/0186.png b/fonts/TewiFont/0186.png new file mode 100644 index 000000000..a8c2509ca Binary files /dev/null and b/fonts/TewiFont/0186.png differ diff --git a/fonts/TewiFont/0187.png b/fonts/TewiFont/0187.png new file mode 100644 index 000000000..9d52b534f Binary files /dev/null and b/fonts/TewiFont/0187.png differ diff --git a/fonts/TewiFont/0188.png b/fonts/TewiFont/0188.png new file mode 100644 index 000000000..ac93ae613 Binary files /dev/null and b/fonts/TewiFont/0188.png differ diff --git a/fonts/TewiFont/0189.png b/fonts/TewiFont/0189.png new file mode 100644 index 000000000..e72065675 Binary files /dev/null and b/fonts/TewiFont/0189.png differ diff --git a/fonts/TewiFont/018A.png b/fonts/TewiFont/018A.png new file mode 100644 index 000000000..f281c0748 Binary files /dev/null and b/fonts/TewiFont/018A.png differ diff --git a/fonts/TewiFont/018B.png b/fonts/TewiFont/018B.png new file mode 100644 index 000000000..1661ff711 Binary files /dev/null and b/fonts/TewiFont/018B.png differ diff --git a/fonts/TewiFont/018C.png b/fonts/TewiFont/018C.png new file mode 100644 index 000000000..b15513c0f Binary files /dev/null and b/fonts/TewiFont/018C.png differ diff --git a/fonts/TewiFont/018D.png b/fonts/TewiFont/018D.png new file mode 100644 index 000000000..2d903d255 Binary files /dev/null and b/fonts/TewiFont/018D.png differ diff --git a/fonts/TewiFont/018E.png b/fonts/TewiFont/018E.png new file mode 100644 index 000000000..e0c92b3c5 Binary files /dev/null and b/fonts/TewiFont/018E.png differ diff --git a/fonts/TewiFont/018F.png b/fonts/TewiFont/018F.png new file mode 100644 index 000000000..e13fceda6 Binary files /dev/null and b/fonts/TewiFont/018F.png differ diff --git a/fonts/TewiFont/0190.png b/fonts/TewiFont/0190.png new file mode 100644 index 000000000..416d92131 Binary files /dev/null and b/fonts/TewiFont/0190.png differ diff --git a/fonts/TewiFont/0191.png b/fonts/TewiFont/0191.png new file mode 100644 index 000000000..78977d139 Binary files /dev/null and b/fonts/TewiFont/0191.png differ diff --git a/fonts/TewiFont/0192.png b/fonts/TewiFont/0192.png new file mode 100644 index 000000000..1c87051b9 Binary files /dev/null and b/fonts/TewiFont/0192.png differ diff --git a/fonts/TewiFont/0193.png b/fonts/TewiFont/0193.png new file mode 100644 index 000000000..5d3ccba68 Binary files /dev/null and b/fonts/TewiFont/0193.png differ diff --git a/fonts/TewiFont/0194.png b/fonts/TewiFont/0194.png new file mode 100644 index 000000000..73696e088 Binary files /dev/null and b/fonts/TewiFont/0194.png differ diff --git a/fonts/TewiFont/0195.png b/fonts/TewiFont/0195.png new file mode 100644 index 000000000..2db419859 Binary files /dev/null and b/fonts/TewiFont/0195.png differ diff --git a/fonts/TewiFont/0196.png b/fonts/TewiFont/0196.png new file mode 100644 index 000000000..2a543b030 Binary files /dev/null and b/fonts/TewiFont/0196.png differ diff --git a/fonts/TewiFont/0197.png b/fonts/TewiFont/0197.png new file mode 100644 index 000000000..959e340e6 Binary files /dev/null and b/fonts/TewiFont/0197.png differ diff --git a/fonts/TewiFont/0198.png b/fonts/TewiFont/0198.png new file mode 100644 index 000000000..e88ad0fde Binary files /dev/null and b/fonts/TewiFont/0198.png differ diff --git a/fonts/TewiFont/0199.png b/fonts/TewiFont/0199.png new file mode 100644 index 000000000..937fb8bce Binary files /dev/null and b/fonts/TewiFont/0199.png differ diff --git a/fonts/TewiFont/019A.png b/fonts/TewiFont/019A.png new file mode 100644 index 000000000..701883832 Binary files /dev/null and b/fonts/TewiFont/019A.png differ diff --git a/fonts/TewiFont/019B.png b/fonts/TewiFont/019B.png new file mode 100644 index 000000000..c64c06a10 Binary files /dev/null and b/fonts/TewiFont/019B.png differ diff --git a/fonts/TewiFont/019C.png b/fonts/TewiFont/019C.png new file mode 100644 index 000000000..6b150564f Binary files /dev/null and b/fonts/TewiFont/019C.png differ diff --git a/fonts/TewiFont/019D.png b/fonts/TewiFont/019D.png new file mode 100644 index 000000000..2ced23f5a Binary files /dev/null and b/fonts/TewiFont/019D.png differ diff --git a/fonts/TewiFont/019E.png b/fonts/TewiFont/019E.png new file mode 100644 index 000000000..0156b3c1a Binary files /dev/null and b/fonts/TewiFont/019E.png differ diff --git a/fonts/TewiFont/019F.png b/fonts/TewiFont/019F.png new file mode 100644 index 000000000..63d3fb846 Binary files /dev/null and b/fonts/TewiFont/019F.png differ diff --git a/fonts/TewiFont/01A0.png b/fonts/TewiFont/01A0.png new file mode 100644 index 000000000..58d3374bf Binary files /dev/null and b/fonts/TewiFont/01A0.png differ diff --git a/fonts/TewiFont/01A1.png b/fonts/TewiFont/01A1.png new file mode 100644 index 000000000..c7f72b90f Binary files /dev/null and b/fonts/TewiFont/01A1.png differ diff --git a/fonts/TewiFont/01A2.png b/fonts/TewiFont/01A2.png new file mode 100644 index 000000000..4ec32a2e5 Binary files /dev/null and b/fonts/TewiFont/01A2.png differ diff --git a/fonts/TewiFont/01A3.png b/fonts/TewiFont/01A3.png new file mode 100644 index 000000000..7d2890296 Binary files /dev/null and b/fonts/TewiFont/01A3.png differ diff --git a/fonts/TewiFont/01A4.png b/fonts/TewiFont/01A4.png new file mode 100644 index 000000000..b1e855325 Binary files /dev/null and b/fonts/TewiFont/01A4.png differ diff --git a/fonts/TewiFont/01A5.png b/fonts/TewiFont/01A5.png new file mode 100644 index 000000000..675a9983e Binary files /dev/null and b/fonts/TewiFont/01A5.png differ diff --git a/fonts/TewiFont/01A6.png b/fonts/TewiFont/01A6.png new file mode 100644 index 000000000..31fd8e8de Binary files /dev/null and b/fonts/TewiFont/01A6.png differ diff --git a/fonts/TewiFont/01A7.png b/fonts/TewiFont/01A7.png new file mode 100644 index 000000000..003501c48 Binary files /dev/null and b/fonts/TewiFont/01A7.png differ diff --git a/fonts/TewiFont/01A8.png b/fonts/TewiFont/01A8.png new file mode 100644 index 000000000..6cdabab4b Binary files /dev/null and b/fonts/TewiFont/01A8.png differ diff --git a/fonts/TewiFont/01A9.png b/fonts/TewiFont/01A9.png new file mode 100644 index 000000000..b055cdc98 Binary files /dev/null and b/fonts/TewiFont/01A9.png differ diff --git a/fonts/TewiFont/01AA.png b/fonts/TewiFont/01AA.png new file mode 100644 index 000000000..2ec7a5734 Binary files /dev/null and b/fonts/TewiFont/01AA.png differ diff --git a/fonts/TewiFont/01AB.png b/fonts/TewiFont/01AB.png new file mode 100644 index 000000000..8874e2daf Binary files /dev/null and b/fonts/TewiFont/01AB.png differ diff --git a/fonts/TewiFont/01AC.png b/fonts/TewiFont/01AC.png new file mode 100644 index 000000000..992eff734 Binary files /dev/null and b/fonts/TewiFont/01AC.png differ diff --git a/fonts/TewiFont/01AD.png b/fonts/TewiFont/01AD.png new file mode 100644 index 000000000..93402099f Binary files /dev/null and b/fonts/TewiFont/01AD.png differ diff --git a/fonts/TewiFont/01AE.png b/fonts/TewiFont/01AE.png new file mode 100644 index 000000000..f611d9e48 Binary files /dev/null and b/fonts/TewiFont/01AE.png differ diff --git a/fonts/TewiFont/01AF.png b/fonts/TewiFont/01AF.png new file mode 100644 index 000000000..5ef057d6a Binary files /dev/null and b/fonts/TewiFont/01AF.png differ diff --git a/fonts/TewiFont/01B0.png b/fonts/TewiFont/01B0.png new file mode 100644 index 000000000..f2f8b241b Binary files /dev/null and b/fonts/TewiFont/01B0.png differ diff --git a/fonts/TewiFont/01B1.png b/fonts/TewiFont/01B1.png new file mode 100644 index 000000000..9294028da Binary files /dev/null and b/fonts/TewiFont/01B1.png differ diff --git a/fonts/TewiFont/01B2.png b/fonts/TewiFont/01B2.png new file mode 100644 index 000000000..5ee073aaf Binary files /dev/null and b/fonts/TewiFont/01B2.png differ diff --git a/fonts/TewiFont/01B3.png b/fonts/TewiFont/01B3.png new file mode 100644 index 000000000..8611cbaa3 Binary files /dev/null and b/fonts/TewiFont/01B3.png differ diff --git a/fonts/TewiFont/01B4.png b/fonts/TewiFont/01B4.png new file mode 100644 index 000000000..903806997 Binary files /dev/null and b/fonts/TewiFont/01B4.png differ diff --git a/fonts/TewiFont/01B5.png b/fonts/TewiFont/01B5.png new file mode 100644 index 000000000..20d549d97 Binary files /dev/null and b/fonts/TewiFont/01B5.png differ diff --git a/fonts/TewiFont/01B6.png b/fonts/TewiFont/01B6.png new file mode 100644 index 000000000..f7eab4839 Binary files /dev/null and b/fonts/TewiFont/01B6.png differ diff --git a/fonts/TewiFont/01B7.png b/fonts/TewiFont/01B7.png new file mode 100644 index 000000000..4bb4c2341 Binary files /dev/null and b/fonts/TewiFont/01B7.png differ diff --git a/fonts/TewiFont/01B8.png b/fonts/TewiFont/01B8.png new file mode 100644 index 000000000..02c8c138b Binary files /dev/null and b/fonts/TewiFont/01B8.png differ diff --git a/fonts/TewiFont/01B9.png b/fonts/TewiFont/01B9.png new file mode 100644 index 000000000..a980fc465 Binary files /dev/null and b/fonts/TewiFont/01B9.png differ diff --git a/fonts/TewiFont/01BA.png b/fonts/TewiFont/01BA.png new file mode 100644 index 000000000..717521ca0 Binary files /dev/null and b/fonts/TewiFont/01BA.png differ diff --git a/fonts/TewiFont/01BB.png b/fonts/TewiFont/01BB.png new file mode 100644 index 000000000..1a1992dd1 Binary files /dev/null and b/fonts/TewiFont/01BB.png differ diff --git a/fonts/TewiFont/01BC.png b/fonts/TewiFont/01BC.png new file mode 100644 index 000000000..f8d4f0542 Binary files /dev/null and b/fonts/TewiFont/01BC.png differ diff --git a/fonts/TewiFont/01BD.png b/fonts/TewiFont/01BD.png new file mode 100644 index 000000000..4af749be4 Binary files /dev/null and b/fonts/TewiFont/01BD.png differ diff --git a/fonts/TewiFont/01BE.png b/fonts/TewiFont/01BE.png new file mode 100644 index 000000000..95d670b5a Binary files /dev/null and b/fonts/TewiFont/01BE.png differ diff --git a/fonts/TewiFont/01BF.png b/fonts/TewiFont/01BF.png new file mode 100644 index 000000000..cae43bcfd Binary files /dev/null and b/fonts/TewiFont/01BF.png differ diff --git a/fonts/TewiFont/01C0.png b/fonts/TewiFont/01C0.png new file mode 100644 index 000000000..e001eb225 Binary files /dev/null and b/fonts/TewiFont/01C0.png differ diff --git a/fonts/TewiFont/01C1.png b/fonts/TewiFont/01C1.png new file mode 100644 index 000000000..fee97aeb0 Binary files /dev/null and b/fonts/TewiFont/01C1.png differ diff --git a/fonts/TewiFont/01C2.png b/fonts/TewiFont/01C2.png new file mode 100644 index 000000000..6a39aaced Binary files /dev/null and b/fonts/TewiFont/01C2.png differ diff --git a/fonts/TewiFont/01C3.png b/fonts/TewiFont/01C3.png new file mode 100644 index 000000000..9aaa3153b Binary files /dev/null and b/fonts/TewiFont/01C3.png differ diff --git a/fonts/TewiFont/01C4.png b/fonts/TewiFont/01C4.png new file mode 100644 index 000000000..4e33be929 Binary files /dev/null and b/fonts/TewiFont/01C4.png differ diff --git a/fonts/TewiFont/01C5.png b/fonts/TewiFont/01C5.png new file mode 100644 index 000000000..84f225152 Binary files /dev/null and b/fonts/TewiFont/01C5.png differ diff --git a/fonts/TewiFont/01C6.png b/fonts/TewiFont/01C6.png new file mode 100644 index 000000000..c5a248e0a Binary files /dev/null and b/fonts/TewiFont/01C6.png differ diff --git a/fonts/TewiFont/01C7.png b/fonts/TewiFont/01C7.png new file mode 100644 index 000000000..8ed8aeb88 Binary files /dev/null and b/fonts/TewiFont/01C7.png differ diff --git a/fonts/TewiFont/01C8.png b/fonts/TewiFont/01C8.png new file mode 100644 index 000000000..78677da95 Binary files /dev/null and b/fonts/TewiFont/01C8.png differ diff --git a/fonts/TewiFont/01C9.png b/fonts/TewiFont/01C9.png new file mode 100644 index 000000000..8e303a87a Binary files /dev/null and b/fonts/TewiFont/01C9.png differ diff --git a/fonts/TewiFont/01CA.png b/fonts/TewiFont/01CA.png new file mode 100644 index 000000000..8fb9a6bad Binary files /dev/null and b/fonts/TewiFont/01CA.png differ diff --git a/fonts/TewiFont/01CB.png b/fonts/TewiFont/01CB.png new file mode 100644 index 000000000..e70ed25bb Binary files /dev/null and b/fonts/TewiFont/01CB.png differ diff --git a/fonts/TewiFont/01CC.png b/fonts/TewiFont/01CC.png new file mode 100644 index 000000000..1a7bcc515 Binary files /dev/null and b/fonts/TewiFont/01CC.png differ diff --git a/fonts/TewiFont/01CD.png b/fonts/TewiFont/01CD.png new file mode 100644 index 000000000..f052622b3 Binary files /dev/null and b/fonts/TewiFont/01CD.png differ diff --git a/fonts/TewiFont/01CE.png b/fonts/TewiFont/01CE.png new file mode 100644 index 000000000..72e5b369b Binary files /dev/null and b/fonts/TewiFont/01CE.png differ diff --git a/fonts/TewiFont/01CF.png b/fonts/TewiFont/01CF.png new file mode 100644 index 000000000..75b3fe5fb Binary files /dev/null and b/fonts/TewiFont/01CF.png differ diff --git a/fonts/TewiFont/01D0.png b/fonts/TewiFont/01D0.png new file mode 100644 index 000000000..e9c684135 Binary files /dev/null and b/fonts/TewiFont/01D0.png differ diff --git a/fonts/TewiFont/01D1.png b/fonts/TewiFont/01D1.png new file mode 100644 index 000000000..0935e3044 Binary files /dev/null and b/fonts/TewiFont/01D1.png differ diff --git a/fonts/TewiFont/01D2.png b/fonts/TewiFont/01D2.png new file mode 100644 index 000000000..74484dba3 Binary files /dev/null and b/fonts/TewiFont/01D2.png differ diff --git a/fonts/TewiFont/01D3.png b/fonts/TewiFont/01D3.png new file mode 100644 index 000000000..574b8a637 Binary files /dev/null and b/fonts/TewiFont/01D3.png differ diff --git a/fonts/TewiFont/01D4.png b/fonts/TewiFont/01D4.png new file mode 100644 index 000000000..4f06f8e99 Binary files /dev/null and b/fonts/TewiFont/01D4.png differ diff --git a/fonts/TewiFont/01D5.png b/fonts/TewiFont/01D5.png new file mode 100644 index 000000000..fdd0349e9 Binary files /dev/null and b/fonts/TewiFont/01D5.png differ diff --git a/fonts/TewiFont/01D6.png b/fonts/TewiFont/01D6.png new file mode 100644 index 000000000..e85bc4906 Binary files /dev/null and b/fonts/TewiFont/01D6.png differ diff --git a/fonts/TewiFont/01D7.png b/fonts/TewiFont/01D7.png new file mode 100644 index 000000000..e0aad44ad Binary files /dev/null and b/fonts/TewiFont/01D7.png differ diff --git a/fonts/TewiFont/01D8.png b/fonts/TewiFont/01D8.png new file mode 100644 index 000000000..5b5f0f7a7 Binary files /dev/null and b/fonts/TewiFont/01D8.png differ diff --git a/fonts/TewiFont/01D9.png b/fonts/TewiFont/01D9.png new file mode 100644 index 000000000..7344f7b91 Binary files /dev/null and b/fonts/TewiFont/01D9.png differ diff --git a/fonts/TewiFont/01DA.png b/fonts/TewiFont/01DA.png new file mode 100644 index 000000000..a32797f55 Binary files /dev/null and b/fonts/TewiFont/01DA.png differ diff --git a/fonts/TewiFont/01DB.png b/fonts/TewiFont/01DB.png new file mode 100644 index 000000000..1fd8084d5 Binary files /dev/null and b/fonts/TewiFont/01DB.png differ diff --git a/fonts/TewiFont/01DC.png b/fonts/TewiFont/01DC.png new file mode 100644 index 000000000..eb7e43f7a Binary files /dev/null and b/fonts/TewiFont/01DC.png differ diff --git a/fonts/TewiFont/01DD.png b/fonts/TewiFont/01DD.png new file mode 100644 index 000000000..466d1b379 Binary files /dev/null and b/fonts/TewiFont/01DD.png differ diff --git a/fonts/TewiFont/01DE.png b/fonts/TewiFont/01DE.png new file mode 100644 index 000000000..dc6967366 Binary files /dev/null and b/fonts/TewiFont/01DE.png differ diff --git a/fonts/TewiFont/01DF.png b/fonts/TewiFont/01DF.png new file mode 100644 index 000000000..43c60b8ec Binary files /dev/null and b/fonts/TewiFont/01DF.png differ diff --git a/fonts/TewiFont/01E0.png b/fonts/TewiFont/01E0.png new file mode 100644 index 000000000..4a81ba603 Binary files /dev/null and b/fonts/TewiFont/01E0.png differ diff --git a/fonts/TewiFont/01E1.png b/fonts/TewiFont/01E1.png new file mode 100644 index 000000000..c1fc22a83 Binary files /dev/null and b/fonts/TewiFont/01E1.png differ diff --git a/fonts/TewiFont/01E2.png b/fonts/TewiFont/01E2.png new file mode 100644 index 000000000..c94f30212 Binary files /dev/null and b/fonts/TewiFont/01E2.png differ diff --git a/fonts/TewiFont/01E3.png b/fonts/TewiFont/01E3.png new file mode 100644 index 000000000..729e58860 Binary files /dev/null and b/fonts/TewiFont/01E3.png differ diff --git a/fonts/TewiFont/01E4.png b/fonts/TewiFont/01E4.png new file mode 100644 index 000000000..04ea5fe0b Binary files /dev/null and b/fonts/TewiFont/01E4.png differ diff --git a/fonts/TewiFont/01E5.png b/fonts/TewiFont/01E5.png new file mode 100644 index 000000000..6a409088c Binary files /dev/null and b/fonts/TewiFont/01E5.png differ diff --git a/fonts/TewiFont/01E6.png b/fonts/TewiFont/01E6.png new file mode 100644 index 000000000..9e35e4eed Binary files /dev/null and b/fonts/TewiFont/01E6.png differ diff --git a/fonts/TewiFont/01E7.png b/fonts/TewiFont/01E7.png new file mode 100644 index 000000000..b603c945e Binary files /dev/null and b/fonts/TewiFont/01E7.png differ diff --git a/fonts/TewiFont/01E8.png b/fonts/TewiFont/01E8.png new file mode 100644 index 000000000..c8f94b104 Binary files /dev/null and b/fonts/TewiFont/01E8.png differ diff --git a/fonts/TewiFont/01E9.png b/fonts/TewiFont/01E9.png new file mode 100644 index 000000000..22cc140f3 Binary files /dev/null and b/fonts/TewiFont/01E9.png differ diff --git a/fonts/TewiFont/01EA.png b/fonts/TewiFont/01EA.png new file mode 100644 index 000000000..040c3748e Binary files /dev/null and b/fonts/TewiFont/01EA.png differ diff --git a/fonts/TewiFont/01EB.png b/fonts/TewiFont/01EB.png new file mode 100644 index 000000000..90aaa7e81 Binary files /dev/null and b/fonts/TewiFont/01EB.png differ diff --git a/fonts/TewiFont/01EC.png b/fonts/TewiFont/01EC.png new file mode 100644 index 000000000..efaf3b1cd Binary files /dev/null and b/fonts/TewiFont/01EC.png differ diff --git a/fonts/TewiFont/01ED.png b/fonts/TewiFont/01ED.png new file mode 100644 index 000000000..0f3c872d5 Binary files /dev/null and b/fonts/TewiFont/01ED.png differ diff --git a/fonts/TewiFont/01EE.png b/fonts/TewiFont/01EE.png new file mode 100644 index 000000000..9b554dab2 Binary files /dev/null and b/fonts/TewiFont/01EE.png differ diff --git a/fonts/TewiFont/01EF.png b/fonts/TewiFont/01EF.png new file mode 100644 index 000000000..e4d2895ba Binary files /dev/null and b/fonts/TewiFont/01EF.png differ diff --git a/fonts/TewiFont/01F0.png b/fonts/TewiFont/01F0.png new file mode 100644 index 000000000..9070afe1a Binary files /dev/null and b/fonts/TewiFont/01F0.png differ diff --git a/fonts/TewiFont/01F1.png b/fonts/TewiFont/01F1.png new file mode 100644 index 000000000..2032bf6d3 Binary files /dev/null and b/fonts/TewiFont/01F1.png differ diff --git a/fonts/TewiFont/01F2.png b/fonts/TewiFont/01F2.png new file mode 100644 index 000000000..1cdb7f00b Binary files /dev/null and b/fonts/TewiFont/01F2.png differ diff --git a/fonts/TewiFont/01F3.png b/fonts/TewiFont/01F3.png new file mode 100644 index 000000000..15e7b2424 Binary files /dev/null and b/fonts/TewiFont/01F3.png differ diff --git a/fonts/TewiFont/01F4.png b/fonts/TewiFont/01F4.png new file mode 100644 index 000000000..9e35e4eed Binary files /dev/null and b/fonts/TewiFont/01F4.png differ diff --git a/fonts/TewiFont/01F5.png b/fonts/TewiFont/01F5.png new file mode 100644 index 000000000..9e725ee09 Binary files /dev/null and b/fonts/TewiFont/01F5.png differ diff --git a/fonts/TewiFont/01F6.png b/fonts/TewiFont/01F6.png new file mode 100644 index 000000000..153c3ba5e Binary files /dev/null and b/fonts/TewiFont/01F6.png differ diff --git a/fonts/TewiFont/01F7.png b/fonts/TewiFont/01F7.png new file mode 100644 index 000000000..3502a0948 Binary files /dev/null and b/fonts/TewiFont/01F7.png differ diff --git a/fonts/TewiFont/01F8.png b/fonts/TewiFont/01F8.png new file mode 100644 index 000000000..b40f91fcd Binary files /dev/null and b/fonts/TewiFont/01F8.png differ diff --git a/fonts/TewiFont/01F9.png b/fonts/TewiFont/01F9.png new file mode 100644 index 000000000..04dc31ab2 Binary files /dev/null and b/fonts/TewiFont/01F9.png differ diff --git a/fonts/TewiFont/01FA.png b/fonts/TewiFont/01FA.png new file mode 100644 index 000000000..8e82bb019 Binary files /dev/null and b/fonts/TewiFont/01FA.png differ diff --git a/fonts/TewiFont/01FB.png b/fonts/TewiFont/01FB.png new file mode 100644 index 000000000..471ee88a9 Binary files /dev/null and b/fonts/TewiFont/01FB.png differ diff --git a/fonts/TewiFont/01FC.png b/fonts/TewiFont/01FC.png new file mode 100644 index 000000000..95c2fec42 Binary files /dev/null and b/fonts/TewiFont/01FC.png differ diff --git a/fonts/TewiFont/01FD.png b/fonts/TewiFont/01FD.png new file mode 100644 index 000000000..cd50beec5 Binary files /dev/null and b/fonts/TewiFont/01FD.png differ diff --git a/fonts/TewiFont/01FE.png b/fonts/TewiFont/01FE.png new file mode 100644 index 000000000..c357aa08c Binary files /dev/null and b/fonts/TewiFont/01FE.png differ diff --git a/fonts/TewiFont/01FF.png b/fonts/TewiFont/01FF.png new file mode 100644 index 000000000..7d2e07daa Binary files /dev/null and b/fonts/TewiFont/01FF.png differ diff --git a/fonts/TewiFont/0200.png b/fonts/TewiFont/0200.png new file mode 100644 index 000000000..a704dada3 Binary files /dev/null and b/fonts/TewiFont/0200.png differ diff --git a/fonts/TewiFont/0201.png b/fonts/TewiFont/0201.png new file mode 100644 index 000000000..ba33c7ea8 Binary files /dev/null and b/fonts/TewiFont/0201.png differ diff --git a/fonts/TewiFont/0202.png b/fonts/TewiFont/0202.png new file mode 100644 index 000000000..dbdc80717 Binary files /dev/null and b/fonts/TewiFont/0202.png differ diff --git a/fonts/TewiFont/0203.png b/fonts/TewiFont/0203.png new file mode 100644 index 000000000..c892b1395 Binary files /dev/null and b/fonts/TewiFont/0203.png differ diff --git a/fonts/TewiFont/0204.png b/fonts/TewiFont/0204.png new file mode 100644 index 000000000..c619a8a66 Binary files /dev/null and b/fonts/TewiFont/0204.png differ diff --git a/fonts/TewiFont/0205.png b/fonts/TewiFont/0205.png new file mode 100644 index 000000000..f82e689ee Binary files /dev/null and b/fonts/TewiFont/0205.png differ diff --git a/fonts/TewiFont/0206.png b/fonts/TewiFont/0206.png new file mode 100644 index 000000000..a3e0c1601 Binary files /dev/null and b/fonts/TewiFont/0206.png differ diff --git a/fonts/TewiFont/0207.png b/fonts/TewiFont/0207.png new file mode 100644 index 000000000..f0e1eed02 Binary files /dev/null and b/fonts/TewiFont/0207.png differ diff --git a/fonts/TewiFont/0208.png b/fonts/TewiFont/0208.png new file mode 100644 index 000000000..fb45d8a5d Binary files /dev/null and b/fonts/TewiFont/0208.png differ diff --git a/fonts/TewiFont/0209.png b/fonts/TewiFont/0209.png new file mode 100644 index 000000000..d55052bc5 Binary files /dev/null and b/fonts/TewiFont/0209.png differ diff --git a/fonts/TewiFont/020A.png b/fonts/TewiFont/020A.png new file mode 100644 index 000000000..fc01cbb14 Binary files /dev/null and b/fonts/TewiFont/020A.png differ diff --git a/fonts/TewiFont/020B.png b/fonts/TewiFont/020B.png new file mode 100644 index 000000000..181b72151 Binary files /dev/null and b/fonts/TewiFont/020B.png differ diff --git a/fonts/TewiFont/020C.png b/fonts/TewiFont/020C.png new file mode 100644 index 000000000..8baaa2c66 Binary files /dev/null and b/fonts/TewiFont/020C.png differ diff --git a/fonts/TewiFont/020D.png b/fonts/TewiFont/020D.png new file mode 100644 index 000000000..b496cc4b5 Binary files /dev/null and b/fonts/TewiFont/020D.png differ diff --git a/fonts/TewiFont/020E.png b/fonts/TewiFont/020E.png new file mode 100644 index 000000000..12e0468ab Binary files /dev/null and b/fonts/TewiFont/020E.png differ diff --git a/fonts/TewiFont/020F.png b/fonts/TewiFont/020F.png new file mode 100644 index 000000000..ba97c43cb Binary files /dev/null and b/fonts/TewiFont/020F.png differ diff --git a/fonts/TewiFont/0210.png b/fonts/TewiFont/0210.png new file mode 100644 index 000000000..dbb24ecd5 Binary files /dev/null and b/fonts/TewiFont/0210.png differ diff --git a/fonts/TewiFont/0211.png b/fonts/TewiFont/0211.png new file mode 100644 index 000000000..08e3f6d1e Binary files /dev/null and b/fonts/TewiFont/0211.png differ diff --git a/fonts/TewiFont/0212.png b/fonts/TewiFont/0212.png new file mode 100644 index 000000000..88cff7b90 Binary files /dev/null and b/fonts/TewiFont/0212.png differ diff --git a/fonts/TewiFont/0213.png b/fonts/TewiFont/0213.png new file mode 100644 index 000000000..9a75cb15a Binary files /dev/null and b/fonts/TewiFont/0213.png differ diff --git a/fonts/TewiFont/0214.png b/fonts/TewiFont/0214.png new file mode 100644 index 000000000..c610845fc Binary files /dev/null and b/fonts/TewiFont/0214.png differ diff --git a/fonts/TewiFont/0215.png b/fonts/TewiFont/0215.png new file mode 100644 index 000000000..6bd523ebf Binary files /dev/null and b/fonts/TewiFont/0215.png differ diff --git a/fonts/TewiFont/0216.png b/fonts/TewiFont/0216.png new file mode 100644 index 000000000..02e690c63 Binary files /dev/null and b/fonts/TewiFont/0216.png differ diff --git a/fonts/TewiFont/0217.png b/fonts/TewiFont/0217.png new file mode 100644 index 000000000..f9b0276dd Binary files /dev/null and b/fonts/TewiFont/0217.png differ diff --git a/fonts/TewiFont/0218.png b/fonts/TewiFont/0218.png new file mode 100644 index 000000000..0cfbabdf1 Binary files /dev/null and b/fonts/TewiFont/0218.png differ diff --git a/fonts/TewiFont/0219.png b/fonts/TewiFont/0219.png new file mode 100644 index 000000000..f334388b3 Binary files /dev/null and b/fonts/TewiFont/0219.png differ diff --git a/fonts/TewiFont/021A.png b/fonts/TewiFont/021A.png new file mode 100644 index 000000000..8c2df9c24 Binary files /dev/null and b/fonts/TewiFont/021A.png differ diff --git a/fonts/TewiFont/021B.png b/fonts/TewiFont/021B.png new file mode 100644 index 000000000..21986b5eb Binary files /dev/null and b/fonts/TewiFont/021B.png differ diff --git a/fonts/TewiFont/021C.png b/fonts/TewiFont/021C.png new file mode 100644 index 000000000..196b6cfef Binary files /dev/null and b/fonts/TewiFont/021C.png differ diff --git a/fonts/TewiFont/021D.png b/fonts/TewiFont/021D.png new file mode 100644 index 000000000..ad8198872 Binary files /dev/null and b/fonts/TewiFont/021D.png differ diff --git a/fonts/TewiFont/021E.png b/fonts/TewiFont/021E.png new file mode 100644 index 000000000..a85bff645 Binary files /dev/null and b/fonts/TewiFont/021E.png differ diff --git a/fonts/TewiFont/021F.png b/fonts/TewiFont/021F.png new file mode 100644 index 000000000..ef8e4156e Binary files /dev/null and b/fonts/TewiFont/021F.png differ diff --git a/fonts/TewiFont/0220.png b/fonts/TewiFont/0220.png new file mode 100644 index 000000000..278d3c332 Binary files /dev/null and b/fonts/TewiFont/0220.png differ diff --git a/fonts/TewiFont/0221.png b/fonts/TewiFont/0221.png new file mode 100644 index 000000000..9fed70c86 Binary files /dev/null and b/fonts/TewiFont/0221.png differ diff --git a/fonts/TewiFont/0222.png b/fonts/TewiFont/0222.png new file mode 100644 index 000000000..74c155571 Binary files /dev/null and b/fonts/TewiFont/0222.png differ diff --git a/fonts/TewiFont/0223.png b/fonts/TewiFont/0223.png new file mode 100644 index 000000000..0504c6031 Binary files /dev/null and b/fonts/TewiFont/0223.png differ diff --git a/fonts/TewiFont/0224.png b/fonts/TewiFont/0224.png new file mode 100644 index 000000000..9c6d7e624 Binary files /dev/null and b/fonts/TewiFont/0224.png differ diff --git a/fonts/TewiFont/0225.png b/fonts/TewiFont/0225.png new file mode 100644 index 000000000..47755118e Binary files /dev/null and b/fonts/TewiFont/0225.png differ diff --git a/fonts/TewiFont/0226.png b/fonts/TewiFont/0226.png new file mode 100644 index 000000000..30031e805 Binary files /dev/null and b/fonts/TewiFont/0226.png differ diff --git a/fonts/TewiFont/0227.png b/fonts/TewiFont/0227.png new file mode 100644 index 000000000..5136a96d7 Binary files /dev/null and b/fonts/TewiFont/0227.png differ diff --git a/fonts/TewiFont/0228.png b/fonts/TewiFont/0228.png new file mode 100644 index 000000000..cf3c202a3 Binary files /dev/null and b/fonts/TewiFont/0228.png differ diff --git a/fonts/TewiFont/0229.png b/fonts/TewiFont/0229.png new file mode 100644 index 000000000..86ec60ef9 Binary files /dev/null and b/fonts/TewiFont/0229.png differ diff --git a/fonts/TewiFont/022A.png b/fonts/TewiFont/022A.png new file mode 100644 index 000000000..76b3529c5 Binary files /dev/null and b/fonts/TewiFont/022A.png differ diff --git a/fonts/TewiFont/022B.png b/fonts/TewiFont/022B.png new file mode 100644 index 000000000..6588f92fc Binary files /dev/null and b/fonts/TewiFont/022B.png differ diff --git a/fonts/TewiFont/022C.png b/fonts/TewiFont/022C.png new file mode 100644 index 000000000..4bf481bff Binary files /dev/null and b/fonts/TewiFont/022C.png differ diff --git a/fonts/TewiFont/022D.png b/fonts/TewiFont/022D.png new file mode 100644 index 000000000..444e233e3 Binary files /dev/null and b/fonts/TewiFont/022D.png differ diff --git a/fonts/TewiFont/022E.png b/fonts/TewiFont/022E.png new file mode 100644 index 000000000..dad4407f9 Binary files /dev/null and b/fonts/TewiFont/022E.png differ diff --git a/fonts/TewiFont/022F.png b/fonts/TewiFont/022F.png new file mode 100644 index 000000000..81897f2b5 Binary files /dev/null and b/fonts/TewiFont/022F.png differ diff --git a/fonts/TewiFont/0230.png b/fonts/TewiFont/0230.png new file mode 100644 index 000000000..3cba50178 Binary files /dev/null and b/fonts/TewiFont/0230.png differ diff --git a/fonts/TewiFont/0231.png b/fonts/TewiFont/0231.png new file mode 100644 index 000000000..8858e424e Binary files /dev/null and b/fonts/TewiFont/0231.png differ diff --git a/fonts/TewiFont/0232.png b/fonts/TewiFont/0232.png new file mode 100644 index 000000000..61c607f48 Binary files /dev/null and b/fonts/TewiFont/0232.png differ diff --git a/fonts/TewiFont/0233.png b/fonts/TewiFont/0233.png new file mode 100644 index 000000000..600800337 Binary files /dev/null and b/fonts/TewiFont/0233.png differ diff --git a/fonts/TewiFont/0234.png b/fonts/TewiFont/0234.png new file mode 100644 index 000000000..30827e44b Binary files /dev/null and b/fonts/TewiFont/0234.png differ diff --git a/fonts/TewiFont/0235.png b/fonts/TewiFont/0235.png new file mode 100644 index 000000000..634e8311f Binary files /dev/null and b/fonts/TewiFont/0235.png differ diff --git a/fonts/TewiFont/0236.png b/fonts/TewiFont/0236.png new file mode 100644 index 000000000..c478badf4 Binary files /dev/null and b/fonts/TewiFont/0236.png differ diff --git a/fonts/TewiFont/0237.png b/fonts/TewiFont/0237.png new file mode 100644 index 000000000..11f30bbe0 Binary files /dev/null and b/fonts/TewiFont/0237.png differ diff --git a/fonts/TewiFont/0238.png b/fonts/TewiFont/0238.png new file mode 100644 index 000000000..0073b1517 Binary files /dev/null and b/fonts/TewiFont/0238.png differ diff --git a/fonts/TewiFont/0239.png b/fonts/TewiFont/0239.png new file mode 100644 index 000000000..9f18b1bce Binary files /dev/null and b/fonts/TewiFont/0239.png differ diff --git a/fonts/TewiFont/023A.png b/fonts/TewiFont/023A.png new file mode 100644 index 000000000..f1bebb582 Binary files /dev/null and b/fonts/TewiFont/023A.png differ diff --git a/fonts/TewiFont/023B.png b/fonts/TewiFont/023B.png new file mode 100644 index 000000000..77b0e267e Binary files /dev/null and b/fonts/TewiFont/023B.png differ diff --git a/fonts/TewiFont/023C.png b/fonts/TewiFont/023C.png new file mode 100644 index 000000000..b16dfebe4 Binary files /dev/null and b/fonts/TewiFont/023C.png differ diff --git a/fonts/TewiFont/023D.png b/fonts/TewiFont/023D.png new file mode 100644 index 000000000..3651586c2 Binary files /dev/null and b/fonts/TewiFont/023D.png differ diff --git a/fonts/TewiFont/023E.png b/fonts/TewiFont/023E.png new file mode 100644 index 000000000..97499dea0 Binary files /dev/null and b/fonts/TewiFont/023E.png differ diff --git a/fonts/TewiFont/023F.png b/fonts/TewiFont/023F.png new file mode 100644 index 000000000..3c3721714 Binary files /dev/null and b/fonts/TewiFont/023F.png differ diff --git a/fonts/TewiFont/0240.png b/fonts/TewiFont/0240.png new file mode 100644 index 000000000..e90b3774c Binary files /dev/null and b/fonts/TewiFont/0240.png differ diff --git a/fonts/TewiFont/0241.png b/fonts/TewiFont/0241.png new file mode 100644 index 000000000..0be348a66 Binary files /dev/null and b/fonts/TewiFont/0241.png differ diff --git a/fonts/TewiFont/0242.png b/fonts/TewiFont/0242.png new file mode 100644 index 000000000..9587acedd Binary files /dev/null and b/fonts/TewiFont/0242.png differ diff --git a/fonts/TewiFont/0243.png b/fonts/TewiFont/0243.png new file mode 100644 index 000000000..9cc492add Binary files /dev/null and b/fonts/TewiFont/0243.png differ diff --git a/fonts/TewiFont/0244.png b/fonts/TewiFont/0244.png new file mode 100644 index 000000000..fab8342e1 Binary files /dev/null and b/fonts/TewiFont/0244.png differ diff --git a/fonts/TewiFont/0245.png b/fonts/TewiFont/0245.png new file mode 100644 index 000000000..6a9f34ecb Binary files /dev/null and b/fonts/TewiFont/0245.png differ diff --git a/fonts/TewiFont/0246.png b/fonts/TewiFont/0246.png new file mode 100644 index 000000000..8ec546f97 Binary files /dev/null and b/fonts/TewiFont/0246.png differ diff --git a/fonts/TewiFont/0247.png b/fonts/TewiFont/0247.png new file mode 100644 index 000000000..3c1a33073 Binary files /dev/null and b/fonts/TewiFont/0247.png differ diff --git a/fonts/TewiFont/0248.png b/fonts/TewiFont/0248.png new file mode 100644 index 000000000..31e286199 Binary files /dev/null and b/fonts/TewiFont/0248.png differ diff --git a/fonts/TewiFont/0249.png b/fonts/TewiFont/0249.png new file mode 100644 index 000000000..c1c8645d2 Binary files /dev/null and b/fonts/TewiFont/0249.png differ diff --git a/fonts/TewiFont/024A.png b/fonts/TewiFont/024A.png new file mode 100644 index 000000000..de8b53d18 Binary files /dev/null and b/fonts/TewiFont/024A.png differ diff --git a/fonts/TewiFont/024B.png b/fonts/TewiFont/024B.png new file mode 100644 index 000000000..2f7acb598 Binary files /dev/null and b/fonts/TewiFont/024B.png differ diff --git a/fonts/TewiFont/024C.png b/fonts/TewiFont/024C.png new file mode 100644 index 000000000..0ce2d3590 Binary files /dev/null and b/fonts/TewiFont/024C.png differ diff --git a/fonts/TewiFont/024D.png b/fonts/TewiFont/024D.png new file mode 100644 index 000000000..b57265bf3 Binary files /dev/null and b/fonts/TewiFont/024D.png differ diff --git a/fonts/TewiFont/024E.png b/fonts/TewiFont/024E.png new file mode 100644 index 000000000..17d7c8722 Binary files /dev/null and b/fonts/TewiFont/024E.png differ diff --git a/fonts/TewiFont/024F.png b/fonts/TewiFont/024F.png new file mode 100644 index 000000000..bbc38f701 Binary files /dev/null and b/fonts/TewiFont/024F.png differ diff --git a/fonts/TewiFont/0250.png b/fonts/TewiFont/0250.png new file mode 100644 index 000000000..d2d2ee00f Binary files /dev/null and b/fonts/TewiFont/0250.png differ diff --git a/fonts/TewiFont/0251.png b/fonts/TewiFont/0251.png new file mode 100644 index 000000000..117fd522d Binary files /dev/null and b/fonts/TewiFont/0251.png differ diff --git a/fonts/TewiFont/0252.png b/fonts/TewiFont/0252.png new file mode 100644 index 000000000..dc5bf6e0e Binary files /dev/null and b/fonts/TewiFont/0252.png differ diff --git a/fonts/TewiFont/0253.png b/fonts/TewiFont/0253.png new file mode 100644 index 000000000..14c6d29f4 Binary files /dev/null and b/fonts/TewiFont/0253.png differ diff --git a/fonts/TewiFont/0254.png b/fonts/TewiFont/0254.png new file mode 100644 index 000000000..46188ad14 Binary files /dev/null and b/fonts/TewiFont/0254.png differ diff --git a/fonts/TewiFont/0255.png b/fonts/TewiFont/0255.png new file mode 100644 index 000000000..48c9f48f2 Binary files /dev/null and b/fonts/TewiFont/0255.png differ diff --git a/fonts/TewiFont/0256.png b/fonts/TewiFont/0256.png new file mode 100644 index 000000000..b617b88c6 Binary files /dev/null and b/fonts/TewiFont/0256.png differ diff --git a/fonts/TewiFont/0257.png b/fonts/TewiFont/0257.png new file mode 100644 index 000000000..9de6ac2bd Binary files /dev/null and b/fonts/TewiFont/0257.png differ diff --git a/fonts/TewiFont/0258.png b/fonts/TewiFont/0258.png new file mode 100644 index 000000000..c21806b39 Binary files /dev/null and b/fonts/TewiFont/0258.png differ diff --git a/fonts/TewiFont/0259.png b/fonts/TewiFont/0259.png new file mode 100644 index 000000000..466d1b379 Binary files /dev/null and b/fonts/TewiFont/0259.png differ diff --git a/fonts/TewiFont/025A.png b/fonts/TewiFont/025A.png new file mode 100644 index 000000000..312e5c6e0 Binary files /dev/null and b/fonts/TewiFont/025A.png differ diff --git a/fonts/TewiFont/025B.png b/fonts/TewiFont/025B.png new file mode 100644 index 000000000..9a8072bd1 Binary files /dev/null and b/fonts/TewiFont/025B.png differ diff --git a/fonts/TewiFont/025C.png b/fonts/TewiFont/025C.png new file mode 100644 index 000000000..fcb363ad1 Binary files /dev/null and b/fonts/TewiFont/025C.png differ diff --git a/fonts/TewiFont/025D.png b/fonts/TewiFont/025D.png new file mode 100644 index 000000000..4bda2b2a0 Binary files /dev/null and b/fonts/TewiFont/025D.png differ diff --git a/fonts/TewiFont/025E.png b/fonts/TewiFont/025E.png new file mode 100644 index 000000000..037e1d5ae Binary files /dev/null and b/fonts/TewiFont/025E.png differ diff --git a/fonts/TewiFont/025F.png b/fonts/TewiFont/025F.png new file mode 100644 index 000000000..e1f1385d3 Binary files /dev/null and b/fonts/TewiFont/025F.png differ diff --git a/fonts/TewiFont/0260.png b/fonts/TewiFont/0260.png new file mode 100644 index 000000000..d688460f2 Binary files /dev/null and b/fonts/TewiFont/0260.png differ diff --git a/fonts/TewiFont/0261.png b/fonts/TewiFont/0261.png new file mode 100644 index 000000000..e19e17f9e Binary files /dev/null and b/fonts/TewiFont/0261.png differ diff --git a/fonts/TewiFont/0262.png b/fonts/TewiFont/0262.png new file mode 100644 index 000000000..55daa7262 Binary files /dev/null and b/fonts/TewiFont/0262.png differ diff --git a/fonts/TewiFont/0263.png b/fonts/TewiFont/0263.png new file mode 100644 index 000000000..b142550a0 Binary files /dev/null and b/fonts/TewiFont/0263.png differ diff --git a/fonts/TewiFont/0264.png b/fonts/TewiFont/0264.png new file mode 100644 index 000000000..ac21eeebe Binary files /dev/null and b/fonts/TewiFont/0264.png differ diff --git a/fonts/TewiFont/0265.png b/fonts/TewiFont/0265.png new file mode 100644 index 000000000..17849c1b2 Binary files /dev/null and b/fonts/TewiFont/0265.png differ diff --git a/fonts/TewiFont/0266.png b/fonts/TewiFont/0266.png new file mode 100644 index 000000000..09da1c107 Binary files /dev/null and b/fonts/TewiFont/0266.png differ diff --git a/fonts/TewiFont/0267.png b/fonts/TewiFont/0267.png new file mode 100644 index 000000000..3c65c2a4b Binary files /dev/null and b/fonts/TewiFont/0267.png differ diff --git a/fonts/TewiFont/0268.png b/fonts/TewiFont/0268.png new file mode 100644 index 000000000..9b00a62c1 Binary files /dev/null and b/fonts/TewiFont/0268.png differ diff --git a/fonts/TewiFont/0269.png b/fonts/TewiFont/0269.png new file mode 100644 index 000000000..6fc160101 Binary files /dev/null and b/fonts/TewiFont/0269.png differ diff --git a/fonts/TewiFont/026A.png b/fonts/TewiFont/026A.png new file mode 100644 index 000000000..9c53efe13 Binary files /dev/null and b/fonts/TewiFont/026A.png differ diff --git a/fonts/TewiFont/026B.png b/fonts/TewiFont/026B.png new file mode 100644 index 000000000..c7b0a915e Binary files /dev/null and b/fonts/TewiFont/026B.png differ diff --git a/fonts/TewiFont/026C.png b/fonts/TewiFont/026C.png new file mode 100644 index 000000000..2b7fe3e63 Binary files /dev/null and b/fonts/TewiFont/026C.png differ diff --git a/fonts/TewiFont/026D.png b/fonts/TewiFont/026D.png new file mode 100644 index 000000000..318e317d1 Binary files /dev/null and b/fonts/TewiFont/026D.png differ diff --git a/fonts/TewiFont/026E.png b/fonts/TewiFont/026E.png new file mode 100644 index 000000000..eb1ffdb00 Binary files /dev/null and b/fonts/TewiFont/026E.png differ diff --git a/fonts/TewiFont/026F.png b/fonts/TewiFont/026F.png new file mode 100644 index 000000000..6b150564f Binary files /dev/null and b/fonts/TewiFont/026F.png differ diff --git a/fonts/TewiFont/0270.png b/fonts/TewiFont/0270.png new file mode 100644 index 000000000..c55a02045 Binary files /dev/null and b/fonts/TewiFont/0270.png differ diff --git a/fonts/TewiFont/0271.png b/fonts/TewiFont/0271.png new file mode 100644 index 000000000..25314b848 Binary files /dev/null and b/fonts/TewiFont/0271.png differ diff --git a/fonts/TewiFont/0272.png b/fonts/TewiFont/0272.png new file mode 100644 index 000000000..32c97a340 Binary files /dev/null and b/fonts/TewiFont/0272.png differ diff --git a/fonts/TewiFont/0273.png b/fonts/TewiFont/0273.png new file mode 100644 index 000000000..ae5af341a Binary files /dev/null and b/fonts/TewiFont/0273.png differ diff --git a/fonts/TewiFont/0274.png b/fonts/TewiFont/0274.png new file mode 100644 index 000000000..7ace1e01d Binary files /dev/null and b/fonts/TewiFont/0274.png differ diff --git a/fonts/TewiFont/0275.png b/fonts/TewiFont/0275.png new file mode 100644 index 000000000..4677e8fe1 Binary files /dev/null and b/fonts/TewiFont/0275.png differ diff --git a/fonts/TewiFont/0276.png b/fonts/TewiFont/0276.png new file mode 100644 index 000000000..23aabf600 Binary files /dev/null and b/fonts/TewiFont/0276.png differ diff --git a/fonts/TewiFont/0277.png b/fonts/TewiFont/0277.png new file mode 100644 index 000000000..06e5adbbb Binary files /dev/null and b/fonts/TewiFont/0277.png differ diff --git a/fonts/TewiFont/0278.png b/fonts/TewiFont/0278.png new file mode 100644 index 000000000..32bda97aa Binary files /dev/null and b/fonts/TewiFont/0278.png differ diff --git a/fonts/TewiFont/0279.png b/fonts/TewiFont/0279.png new file mode 100644 index 000000000..219efc8d8 Binary files /dev/null and b/fonts/TewiFont/0279.png differ diff --git a/fonts/TewiFont/027A.png b/fonts/TewiFont/027A.png new file mode 100644 index 000000000..84922c229 Binary files /dev/null and b/fonts/TewiFont/027A.png differ diff --git a/fonts/TewiFont/027B.png b/fonts/TewiFont/027B.png new file mode 100644 index 000000000..6db72e739 Binary files /dev/null and b/fonts/TewiFont/027B.png differ diff --git a/fonts/TewiFont/027C.png b/fonts/TewiFont/027C.png new file mode 100644 index 000000000..700b7fb0b Binary files /dev/null and b/fonts/TewiFont/027C.png differ diff --git a/fonts/TewiFont/027D.png b/fonts/TewiFont/027D.png new file mode 100644 index 000000000..4502e8d16 Binary files /dev/null and b/fonts/TewiFont/027D.png differ diff --git a/fonts/TewiFont/027E.png b/fonts/TewiFont/027E.png new file mode 100644 index 000000000..5a7fca2e0 Binary files /dev/null and b/fonts/TewiFont/027E.png differ diff --git a/fonts/TewiFont/027F.png b/fonts/TewiFont/027F.png new file mode 100644 index 000000000..de43ecbd6 Binary files /dev/null and b/fonts/TewiFont/027F.png differ diff --git a/fonts/TewiFont/0280.png b/fonts/TewiFont/0280.png new file mode 100644 index 000000000..fc609e096 Binary files /dev/null and b/fonts/TewiFont/0280.png differ diff --git a/fonts/TewiFont/0281.png b/fonts/TewiFont/0281.png new file mode 100644 index 000000000..97d1a1853 Binary files /dev/null and b/fonts/TewiFont/0281.png differ diff --git a/fonts/TewiFont/0282.png b/fonts/TewiFont/0282.png new file mode 100644 index 000000000..efad56392 Binary files /dev/null and b/fonts/TewiFont/0282.png differ diff --git a/fonts/TewiFont/0283.png b/fonts/TewiFont/0283.png new file mode 100644 index 000000000..ce26a6138 Binary files /dev/null and b/fonts/TewiFont/0283.png differ diff --git a/fonts/TewiFont/0284.png b/fonts/TewiFont/0284.png new file mode 100644 index 000000000..42bddbe0c Binary files /dev/null and b/fonts/TewiFont/0284.png differ diff --git a/fonts/TewiFont/0285.png b/fonts/TewiFont/0285.png new file mode 100644 index 000000000..468a2b272 Binary files /dev/null and b/fonts/TewiFont/0285.png differ diff --git a/fonts/TewiFont/0286.png b/fonts/TewiFont/0286.png new file mode 100644 index 000000000..69027e819 Binary files /dev/null and b/fonts/TewiFont/0286.png differ diff --git a/fonts/TewiFont/0287.png b/fonts/TewiFont/0287.png new file mode 100644 index 000000000..a0b7d9dd6 Binary files /dev/null and b/fonts/TewiFont/0287.png differ diff --git a/fonts/TewiFont/0288.png b/fonts/TewiFont/0288.png new file mode 100644 index 000000000..fa83edf25 Binary files /dev/null and b/fonts/TewiFont/0288.png differ diff --git a/fonts/TewiFont/0289.png b/fonts/TewiFont/0289.png new file mode 100644 index 000000000..060e4d019 Binary files /dev/null and b/fonts/TewiFont/0289.png differ diff --git a/fonts/TewiFont/028A.png b/fonts/TewiFont/028A.png new file mode 100644 index 000000000..5144f84ca Binary files /dev/null and b/fonts/TewiFont/028A.png differ diff --git a/fonts/TewiFont/028B.png b/fonts/TewiFont/028B.png new file mode 100644 index 000000000..ee961211f Binary files /dev/null and b/fonts/TewiFont/028B.png differ diff --git a/fonts/TewiFont/028C.png b/fonts/TewiFont/028C.png new file mode 100644 index 000000000..f05216b60 Binary files /dev/null and b/fonts/TewiFont/028C.png differ diff --git a/fonts/TewiFont/028D.png b/fonts/TewiFont/028D.png new file mode 100644 index 000000000..b0ba8fab8 Binary files /dev/null and b/fonts/TewiFont/028D.png differ diff --git a/fonts/TewiFont/028E.png b/fonts/TewiFont/028E.png new file mode 100644 index 000000000..e6c948365 Binary files /dev/null and b/fonts/TewiFont/028E.png differ diff --git a/fonts/TewiFont/028F.png b/fonts/TewiFont/028F.png new file mode 100644 index 000000000..ed585c659 Binary files /dev/null and b/fonts/TewiFont/028F.png differ diff --git a/fonts/TewiFont/0290.png b/fonts/TewiFont/0290.png new file mode 100644 index 000000000..3097d7a7e Binary files /dev/null and b/fonts/TewiFont/0290.png differ diff --git a/fonts/TewiFont/0291.png b/fonts/TewiFont/0291.png new file mode 100644 index 000000000..1e84148fc Binary files /dev/null and b/fonts/TewiFont/0291.png differ diff --git a/fonts/TewiFont/0292.png b/fonts/TewiFont/0292.png new file mode 100644 index 000000000..480c20281 Binary files /dev/null and b/fonts/TewiFont/0292.png differ diff --git a/fonts/TewiFont/0293.png b/fonts/TewiFont/0293.png new file mode 100644 index 000000000..0c0b4fd7c Binary files /dev/null and b/fonts/TewiFont/0293.png differ diff --git a/fonts/TewiFont/0294.png b/fonts/TewiFont/0294.png new file mode 100644 index 000000000..0be348a66 Binary files /dev/null and b/fonts/TewiFont/0294.png differ diff --git a/fonts/TewiFont/0295.png b/fonts/TewiFont/0295.png new file mode 100644 index 000000000..0e0496135 Binary files /dev/null and b/fonts/TewiFont/0295.png differ diff --git a/fonts/TewiFont/0296.png b/fonts/TewiFont/0296.png new file mode 100644 index 000000000..a9729eb9d Binary files /dev/null and b/fonts/TewiFont/0296.png differ diff --git a/fonts/TewiFont/0297.png b/fonts/TewiFont/0297.png new file mode 100644 index 000000000..b14a2f8e2 Binary files /dev/null and b/fonts/TewiFont/0297.png differ diff --git a/fonts/TewiFont/0298.png b/fonts/TewiFont/0298.png new file mode 100644 index 000000000..25a2cffc7 Binary files /dev/null and b/fonts/TewiFont/0298.png differ diff --git a/fonts/TewiFont/0299.png b/fonts/TewiFont/0299.png new file mode 100644 index 000000000..66a98ec31 Binary files /dev/null and b/fonts/TewiFont/0299.png differ diff --git a/fonts/TewiFont/029A.png b/fonts/TewiFont/029A.png new file mode 100644 index 000000000..8c5cc40ce Binary files /dev/null and b/fonts/TewiFont/029A.png differ diff --git a/fonts/TewiFont/029B.png b/fonts/TewiFont/029B.png new file mode 100644 index 000000000..abbfabcba Binary files /dev/null and b/fonts/TewiFont/029B.png differ diff --git a/fonts/TewiFont/029C.png b/fonts/TewiFont/029C.png new file mode 100644 index 000000000..4f31d3073 Binary files /dev/null and b/fonts/TewiFont/029C.png differ diff --git a/fonts/TewiFont/029D.png b/fonts/TewiFont/029D.png new file mode 100644 index 000000000..b6877a421 Binary files /dev/null and b/fonts/TewiFont/029D.png differ diff --git a/fonts/TewiFont/029E.png b/fonts/TewiFont/029E.png new file mode 100644 index 000000000..d812d411f Binary files /dev/null and b/fonts/TewiFont/029E.png differ diff --git a/fonts/TewiFont/029F.png b/fonts/TewiFont/029F.png new file mode 100644 index 000000000..c5fe7775c Binary files /dev/null and b/fonts/TewiFont/029F.png differ diff --git a/fonts/TewiFont/02A0.png b/fonts/TewiFont/02A0.png new file mode 100644 index 000000000..f3d01cfcf Binary files /dev/null and b/fonts/TewiFont/02A0.png differ diff --git a/fonts/TewiFont/02A1.png b/fonts/TewiFont/02A1.png new file mode 100644 index 000000000..4422ffc57 Binary files /dev/null and b/fonts/TewiFont/02A1.png differ diff --git a/fonts/TewiFont/02A2.png b/fonts/TewiFont/02A2.png new file mode 100644 index 000000000..556d9cafc Binary files /dev/null and b/fonts/TewiFont/02A2.png differ diff --git a/fonts/TewiFont/02A3.png b/fonts/TewiFont/02A3.png new file mode 100644 index 000000000..15e7b2424 Binary files /dev/null and b/fonts/TewiFont/02A3.png differ diff --git a/fonts/TewiFont/02A4.png b/fonts/TewiFont/02A4.png new file mode 100644 index 000000000..fce7d2911 Binary files /dev/null and b/fonts/TewiFont/02A4.png differ diff --git a/fonts/TewiFont/02A5.png b/fonts/TewiFont/02A5.png new file mode 100644 index 000000000..93e29db1b Binary files /dev/null and b/fonts/TewiFont/02A5.png differ diff --git a/fonts/TewiFont/02A6.png b/fonts/TewiFont/02A6.png new file mode 100644 index 000000000..a2f3e100c Binary files /dev/null and b/fonts/TewiFont/02A6.png differ diff --git a/fonts/TewiFont/02A7.png b/fonts/TewiFont/02A7.png new file mode 100644 index 000000000..b975be66b Binary files /dev/null and b/fonts/TewiFont/02A7.png differ diff --git a/fonts/TewiFont/02A8.png b/fonts/TewiFont/02A8.png new file mode 100644 index 000000000..bdf9d52a4 Binary files /dev/null and b/fonts/TewiFont/02A8.png differ diff --git a/fonts/TewiFont/02A9.png b/fonts/TewiFont/02A9.png new file mode 100644 index 000000000..a89d7ad27 Binary files /dev/null and b/fonts/TewiFont/02A9.png differ diff --git a/fonts/TewiFont/02AA.png b/fonts/TewiFont/02AA.png new file mode 100644 index 000000000..e0a37aaac Binary files /dev/null and b/fonts/TewiFont/02AA.png differ diff --git a/fonts/TewiFont/02AB.png b/fonts/TewiFont/02AB.png new file mode 100644 index 000000000..c75a0211d Binary files /dev/null and b/fonts/TewiFont/02AB.png differ diff --git a/fonts/TewiFont/02AC.png b/fonts/TewiFont/02AC.png new file mode 100644 index 000000000..b68271b65 Binary files /dev/null and b/fonts/TewiFont/02AC.png differ diff --git a/fonts/TewiFont/02AD.png b/fonts/TewiFont/02AD.png new file mode 100644 index 000000000..a2b8c2b94 Binary files /dev/null and b/fonts/TewiFont/02AD.png differ diff --git a/fonts/TewiFont/02AE.png b/fonts/TewiFont/02AE.png new file mode 100644 index 000000000..cb7e50821 Binary files /dev/null and b/fonts/TewiFont/02AE.png differ diff --git a/fonts/TewiFont/02AF.png b/fonts/TewiFont/02AF.png new file mode 100644 index 000000000..f7f770787 Binary files /dev/null and b/fonts/TewiFont/02AF.png differ diff --git a/fonts/TewiFont/02B0.png b/fonts/TewiFont/02B0.png new file mode 100644 index 000000000..58e774399 Binary files /dev/null and b/fonts/TewiFont/02B0.png differ diff --git a/fonts/TewiFont/02B1.png b/fonts/TewiFont/02B1.png new file mode 100644 index 000000000..618c73ae7 Binary files /dev/null and b/fonts/TewiFont/02B1.png differ diff --git a/fonts/TewiFont/02B2.png b/fonts/TewiFont/02B2.png new file mode 100644 index 000000000..4bd9c6690 Binary files /dev/null and b/fonts/TewiFont/02B2.png differ diff --git a/fonts/TewiFont/02B3.png b/fonts/TewiFont/02B3.png new file mode 100644 index 000000000..035d618be Binary files /dev/null and b/fonts/TewiFont/02B3.png differ diff --git a/fonts/TewiFont/02B4.png b/fonts/TewiFont/02B4.png new file mode 100644 index 000000000..5e5dad5e0 Binary files /dev/null and b/fonts/TewiFont/02B4.png differ diff --git a/fonts/TewiFont/02B5.png b/fonts/TewiFont/02B5.png new file mode 100644 index 000000000..a0cc8099a Binary files /dev/null and b/fonts/TewiFont/02B5.png differ diff --git a/fonts/TewiFont/02B6.png b/fonts/TewiFont/02B6.png new file mode 100644 index 000000000..b12649102 Binary files /dev/null and b/fonts/TewiFont/02B6.png differ diff --git a/fonts/TewiFont/02B7.png b/fonts/TewiFont/02B7.png new file mode 100644 index 000000000..51e4feb78 Binary files /dev/null and b/fonts/TewiFont/02B7.png differ diff --git a/fonts/TewiFont/02B8.png b/fonts/TewiFont/02B8.png new file mode 100644 index 000000000..69167759b Binary files /dev/null and b/fonts/TewiFont/02B8.png differ diff --git a/fonts/TewiFont/02B9.png b/fonts/TewiFont/02B9.png new file mode 100644 index 000000000..192bcab98 Binary files /dev/null and b/fonts/TewiFont/02B9.png differ diff --git a/fonts/TewiFont/02BA.png b/fonts/TewiFont/02BA.png new file mode 100644 index 000000000..d7e2fa765 Binary files /dev/null and b/fonts/TewiFont/02BA.png differ diff --git a/fonts/TewiFont/02BB.png b/fonts/TewiFont/02BB.png new file mode 100644 index 000000000..dc11dc0de Binary files /dev/null and b/fonts/TewiFont/02BB.png differ diff --git a/fonts/TewiFont/02BC.png b/fonts/TewiFont/02BC.png new file mode 100644 index 000000000..e8ec794a5 Binary files /dev/null and b/fonts/TewiFont/02BC.png differ diff --git a/fonts/TewiFont/02BD.png b/fonts/TewiFont/02BD.png new file mode 100644 index 000000000..325ed4c5e Binary files /dev/null and b/fonts/TewiFont/02BD.png differ diff --git a/fonts/TewiFont/02C2.png b/fonts/TewiFont/02C2.png new file mode 100644 index 000000000..2fc2b5a39 Binary files /dev/null and b/fonts/TewiFont/02C2.png differ diff --git a/fonts/TewiFont/02C3.png b/fonts/TewiFont/02C3.png new file mode 100644 index 000000000..ae5848734 Binary files /dev/null and b/fonts/TewiFont/02C3.png differ diff --git a/fonts/TewiFont/02C4.png b/fonts/TewiFont/02C4.png new file mode 100644 index 000000000..71f8bb0a7 Binary files /dev/null and b/fonts/TewiFont/02C4.png differ diff --git a/fonts/TewiFont/02C5.png b/fonts/TewiFont/02C5.png new file mode 100644 index 000000000..d8f555d45 Binary files /dev/null and b/fonts/TewiFont/02C5.png differ diff --git a/fonts/TewiFont/02C6.png b/fonts/TewiFont/02C6.png new file mode 100644 index 000000000..78891637b Binary files /dev/null and b/fonts/TewiFont/02C6.png differ diff --git a/fonts/TewiFont/02C7.png b/fonts/TewiFont/02C7.png new file mode 100644 index 000000000..b0d634c26 Binary files /dev/null and b/fonts/TewiFont/02C7.png differ diff --git a/fonts/TewiFont/02C8.png b/fonts/TewiFont/02C8.png new file mode 100644 index 000000000..ee5c114ad Binary files /dev/null and b/fonts/TewiFont/02C8.png differ diff --git a/fonts/TewiFont/02C9.png b/fonts/TewiFont/02C9.png new file mode 100644 index 000000000..e7572838d Binary files /dev/null and b/fonts/TewiFont/02C9.png differ diff --git a/fonts/TewiFont/02CA.png b/fonts/TewiFont/02CA.png new file mode 100644 index 000000000..8d8ee292f Binary files /dev/null and b/fonts/TewiFont/02CA.png differ diff --git a/fonts/TewiFont/02CB.png b/fonts/TewiFont/02CB.png new file mode 100644 index 000000000..507bafb97 Binary files /dev/null and b/fonts/TewiFont/02CB.png differ diff --git a/fonts/TewiFont/02D0.png b/fonts/TewiFont/02D0.png new file mode 100644 index 000000000..4f301f4d9 Binary files /dev/null and b/fonts/TewiFont/02D0.png differ diff --git a/fonts/TewiFont/02D1.png b/fonts/TewiFont/02D1.png new file mode 100644 index 000000000..c07fa6a0e Binary files /dev/null and b/fonts/TewiFont/02D1.png differ diff --git a/fonts/TewiFont/02D8.png b/fonts/TewiFont/02D8.png new file mode 100644 index 000000000..f76d05398 Binary files /dev/null and b/fonts/TewiFont/02D8.png differ diff --git a/fonts/TewiFont/02D9.png b/fonts/TewiFont/02D9.png new file mode 100644 index 000000000..554fe43f5 Binary files /dev/null and b/fonts/TewiFont/02D9.png differ diff --git a/fonts/TewiFont/02DA.png b/fonts/TewiFont/02DA.png new file mode 100644 index 000000000..dbf0fea43 Binary files /dev/null and b/fonts/TewiFont/02DA.png differ diff --git a/fonts/TewiFont/02DB.png b/fonts/TewiFont/02DB.png new file mode 100644 index 000000000..07c4a95ec Binary files /dev/null and b/fonts/TewiFont/02DB.png differ diff --git a/fonts/TewiFont/02DC.png b/fonts/TewiFont/02DC.png new file mode 100644 index 000000000..60c8c0b15 Binary files /dev/null and b/fonts/TewiFont/02DC.png differ diff --git a/fonts/TewiFont/02DD.png b/fonts/TewiFont/02DD.png new file mode 100644 index 000000000..5eccf70c4 Binary files /dev/null and b/fonts/TewiFont/02DD.png differ diff --git a/fonts/TewiFont/02DE.png b/fonts/TewiFont/02DE.png new file mode 100644 index 000000000..cfa4ebbd9 Binary files /dev/null and b/fonts/TewiFont/02DE.png differ diff --git a/fonts/TewiFont/02E0.png b/fonts/TewiFont/02E0.png new file mode 100644 index 000000000..28534b8c1 Binary files /dev/null and b/fonts/TewiFont/02E0.png differ diff --git a/fonts/TewiFont/02E4.png b/fonts/TewiFont/02E4.png new file mode 100644 index 000000000..7e27f59c1 Binary files /dev/null and b/fonts/TewiFont/02E4.png differ diff --git a/fonts/TewiFont/02EE.png b/fonts/TewiFont/02EE.png new file mode 100644 index 000000000..6caf4ac5a Binary files /dev/null and b/fonts/TewiFont/02EE.png differ diff --git a/fonts/TewiFont/0300.png b/fonts/TewiFont/0300.png new file mode 100644 index 000000000..36c6dfafc Binary files /dev/null and b/fonts/TewiFont/0300.png differ diff --git a/fonts/TewiFont/0301.png b/fonts/TewiFont/0301.png new file mode 100644 index 000000000..ea900b850 Binary files /dev/null and b/fonts/TewiFont/0301.png differ diff --git a/fonts/TewiFont/0302.png b/fonts/TewiFont/0302.png new file mode 100644 index 000000000..1e8d12014 Binary files /dev/null and b/fonts/TewiFont/0302.png differ diff --git a/fonts/TewiFont/0303.png b/fonts/TewiFont/0303.png new file mode 100644 index 000000000..60c8c0b15 Binary files /dev/null and b/fonts/TewiFont/0303.png differ diff --git a/fonts/TewiFont/0304.png b/fonts/TewiFont/0304.png new file mode 100644 index 000000000..0d62e22ba Binary files /dev/null and b/fonts/TewiFont/0304.png differ diff --git a/fonts/TewiFont/0305.png b/fonts/TewiFont/0305.png new file mode 100644 index 000000000..75a09ce96 Binary files /dev/null and b/fonts/TewiFont/0305.png differ diff --git a/fonts/TewiFont/0306.png b/fonts/TewiFont/0306.png new file mode 100644 index 000000000..99268c781 Binary files /dev/null and b/fonts/TewiFont/0306.png differ diff --git a/fonts/TewiFont/0307.png b/fonts/TewiFont/0307.png new file mode 100644 index 000000000..665f8b5fa Binary files /dev/null and b/fonts/TewiFont/0307.png differ diff --git a/fonts/TewiFont/0308.png b/fonts/TewiFont/0308.png new file mode 100644 index 000000000..1ab10b4e1 Binary files /dev/null and b/fonts/TewiFont/0308.png differ diff --git a/fonts/TewiFont/0309.png b/fonts/TewiFont/0309.png new file mode 100644 index 000000000..cdd8b0a32 Binary files /dev/null and b/fonts/TewiFont/0309.png differ diff --git a/fonts/TewiFont/030A.png b/fonts/TewiFont/030A.png new file mode 100644 index 000000000..dbf0fea43 Binary files /dev/null and b/fonts/TewiFont/030A.png differ diff --git a/fonts/TewiFont/030B.png b/fonts/TewiFont/030B.png new file mode 100644 index 000000000..5a4cb70ad Binary files /dev/null and b/fonts/TewiFont/030B.png differ diff --git a/fonts/TewiFont/030C.png b/fonts/TewiFont/030C.png new file mode 100644 index 000000000..9912f0d41 Binary files /dev/null and b/fonts/TewiFont/030C.png differ diff --git a/fonts/TewiFont/030D.png b/fonts/TewiFont/030D.png new file mode 100644 index 000000000..e57603514 Binary files /dev/null and b/fonts/TewiFont/030D.png differ diff --git a/fonts/TewiFont/030E.png b/fonts/TewiFont/030E.png new file mode 100644 index 000000000..5650cd363 Binary files /dev/null and b/fonts/TewiFont/030E.png differ diff --git a/fonts/TewiFont/0310.png b/fonts/TewiFont/0310.png new file mode 100644 index 000000000..fe74a32ae Binary files /dev/null and b/fonts/TewiFont/0310.png differ diff --git a/fonts/TewiFont/0311.png b/fonts/TewiFont/0311.png new file mode 100644 index 000000000..37b830b15 Binary files /dev/null and b/fonts/TewiFont/0311.png differ diff --git a/fonts/TewiFont/0312.png b/fonts/TewiFont/0312.png new file mode 100644 index 000000000..da9a865a4 Binary files /dev/null and b/fonts/TewiFont/0312.png differ diff --git a/fonts/TewiFont/0313.png b/fonts/TewiFont/0313.png new file mode 100644 index 000000000..8e16f4f50 Binary files /dev/null and b/fonts/TewiFont/0313.png differ diff --git a/fonts/TewiFont/0314.png b/fonts/TewiFont/0314.png new file mode 100644 index 000000000..793f046ac Binary files /dev/null and b/fonts/TewiFont/0314.png differ diff --git a/fonts/TewiFont/0315.png b/fonts/TewiFont/0315.png new file mode 100644 index 000000000..8e16f4f50 Binary files /dev/null and b/fonts/TewiFont/0315.png differ diff --git a/fonts/TewiFont/031A.png b/fonts/TewiFont/031A.png new file mode 100644 index 000000000..5ea1293d5 Binary files /dev/null and b/fonts/TewiFont/031A.png differ diff --git a/fonts/TewiFont/031C.png b/fonts/TewiFont/031C.png new file mode 100644 index 000000000..f731c64c1 Binary files /dev/null and b/fonts/TewiFont/031C.png differ diff --git a/fonts/TewiFont/031F.png b/fonts/TewiFont/031F.png new file mode 100644 index 000000000..406150c76 Binary files /dev/null and b/fonts/TewiFont/031F.png differ diff --git a/fonts/TewiFont/0320.png b/fonts/TewiFont/0320.png new file mode 100644 index 000000000..4c551d217 Binary files /dev/null and b/fonts/TewiFont/0320.png differ diff --git a/fonts/TewiFont/0324.png b/fonts/TewiFont/0324.png new file mode 100644 index 000000000..4d03dda53 Binary files /dev/null and b/fonts/TewiFont/0324.png differ diff --git a/fonts/TewiFont/0325.png b/fonts/TewiFont/0325.png new file mode 100644 index 000000000..7cff6da16 Binary files /dev/null and b/fonts/TewiFont/0325.png differ diff --git a/fonts/TewiFont/032A.png b/fonts/TewiFont/032A.png new file mode 100644 index 000000000..ec293d6f0 Binary files /dev/null and b/fonts/TewiFont/032A.png differ diff --git a/fonts/TewiFont/032C.png b/fonts/TewiFont/032C.png new file mode 100644 index 000000000..04d79e699 Binary files /dev/null and b/fonts/TewiFont/032C.png differ diff --git a/fonts/TewiFont/0330.png b/fonts/TewiFont/0330.png new file mode 100644 index 000000000..79667c6ad Binary files /dev/null and b/fonts/TewiFont/0330.png differ diff --git a/fonts/TewiFont/0339.png b/fonts/TewiFont/0339.png new file mode 100644 index 000000000..996a4330e Binary files /dev/null and b/fonts/TewiFont/0339.png differ diff --git a/fonts/TewiFont/033A.png b/fonts/TewiFont/033A.png new file mode 100644 index 000000000..7b9eda146 Binary files /dev/null and b/fonts/TewiFont/033A.png differ diff --git a/fonts/TewiFont/033B.png b/fonts/TewiFont/033B.png new file mode 100644 index 000000000..cca837f2c Binary files /dev/null and b/fonts/TewiFont/033B.png differ diff --git a/fonts/TewiFont/033C.png b/fonts/TewiFont/033C.png new file mode 100644 index 000000000..0334138d2 Binary files /dev/null and b/fonts/TewiFont/033C.png differ diff --git a/fonts/TewiFont/0343.png b/fonts/TewiFont/0343.png new file mode 100644 index 000000000..d98393a88 Binary files /dev/null and b/fonts/TewiFont/0343.png differ diff --git a/fonts/TewiFont/0344.png b/fonts/TewiFont/0344.png new file mode 100644 index 000000000..c07fa6a0e Binary files /dev/null and b/fonts/TewiFont/0344.png differ diff --git a/fonts/TewiFont/035C.png b/fonts/TewiFont/035C.png new file mode 100644 index 000000000..13403c3e6 Binary files /dev/null and b/fonts/TewiFont/035C.png differ diff --git a/fonts/TewiFont/0361.png b/fonts/TewiFont/0361.png new file mode 100644 index 000000000..37b830b15 Binary files /dev/null and b/fonts/TewiFont/0361.png differ diff --git a/fonts/TewiFont/0370.png b/fonts/TewiFont/0370.png new file mode 100644 index 000000000..2bb4eea99 Binary files /dev/null and b/fonts/TewiFont/0370.png differ diff --git a/fonts/TewiFont/0371.png b/fonts/TewiFont/0371.png new file mode 100644 index 000000000..acaba8acb Binary files /dev/null and b/fonts/TewiFont/0371.png differ diff --git a/fonts/TewiFont/0372.png b/fonts/TewiFont/0372.png new file mode 100644 index 000000000..c9d7c96ee Binary files /dev/null and b/fonts/TewiFont/0372.png differ diff --git a/fonts/TewiFont/0373.png b/fonts/TewiFont/0373.png new file mode 100644 index 000000000..96826aa85 Binary files /dev/null and b/fonts/TewiFont/0373.png differ diff --git a/fonts/TewiFont/0374.png b/fonts/TewiFont/0374.png new file mode 100644 index 000000000..48a297154 Binary files /dev/null and b/fonts/TewiFont/0374.png differ diff --git a/fonts/TewiFont/0375.png b/fonts/TewiFont/0375.png new file mode 100644 index 000000000..9148a0ffd Binary files /dev/null and b/fonts/TewiFont/0375.png differ diff --git a/fonts/TewiFont/0376.png b/fonts/TewiFont/0376.png new file mode 100644 index 000000000..b43df40fa Binary files /dev/null and b/fonts/TewiFont/0376.png differ diff --git a/fonts/TewiFont/0377.png b/fonts/TewiFont/0377.png new file mode 100644 index 000000000..766169585 Binary files /dev/null and b/fonts/TewiFont/0377.png differ diff --git a/fonts/TewiFont/037A.png b/fonts/TewiFont/037A.png new file mode 100644 index 000000000..58b31d326 Binary files /dev/null and b/fonts/TewiFont/037A.png differ diff --git a/fonts/TewiFont/037B.png b/fonts/TewiFont/037B.png new file mode 100644 index 000000000..46188ad14 Binary files /dev/null and b/fonts/TewiFont/037B.png differ diff --git a/fonts/TewiFont/037C.png b/fonts/TewiFont/037C.png new file mode 100644 index 000000000..22379b07f Binary files /dev/null and b/fonts/TewiFont/037C.png differ diff --git a/fonts/TewiFont/037D.png b/fonts/TewiFont/037D.png new file mode 100644 index 000000000..09d23b6c0 Binary files /dev/null and b/fonts/TewiFont/037D.png differ diff --git a/fonts/TewiFont/037E.png b/fonts/TewiFont/037E.png new file mode 100644 index 000000000..a797fd20c Binary files /dev/null and b/fonts/TewiFont/037E.png differ diff --git a/fonts/TewiFont/037F.png b/fonts/TewiFont/037F.png new file mode 100644 index 000000000..3a582729a Binary files /dev/null and b/fonts/TewiFont/037F.png differ diff --git a/fonts/TewiFont/0384.png b/fonts/TewiFont/0384.png new file mode 100644 index 000000000..8d8ee292f Binary files /dev/null and b/fonts/TewiFont/0384.png differ diff --git a/fonts/TewiFont/0385.png b/fonts/TewiFont/0385.png new file mode 100644 index 000000000..b9bca3d7d Binary files /dev/null and b/fonts/TewiFont/0385.png differ diff --git a/fonts/TewiFont/0386.png b/fonts/TewiFont/0386.png new file mode 100644 index 000000000..bda212ab2 Binary files /dev/null and b/fonts/TewiFont/0386.png differ diff --git a/fonts/TewiFont/0387.png b/fonts/TewiFont/0387.png new file mode 100644 index 000000000..4b60f950e Binary files /dev/null and b/fonts/TewiFont/0387.png differ diff --git a/fonts/TewiFont/0388.png b/fonts/TewiFont/0388.png new file mode 100644 index 000000000..7829741ab Binary files /dev/null and b/fonts/TewiFont/0388.png differ diff --git a/fonts/TewiFont/0389.png b/fonts/TewiFont/0389.png new file mode 100644 index 000000000..ef6c5a7a3 Binary files /dev/null and b/fonts/TewiFont/0389.png differ diff --git a/fonts/TewiFont/038A.png b/fonts/TewiFont/038A.png new file mode 100644 index 000000000..cca03e675 Binary files /dev/null and b/fonts/TewiFont/038A.png differ diff --git a/fonts/TewiFont/038C.png b/fonts/TewiFont/038C.png new file mode 100644 index 000000000..02a21838a Binary files /dev/null and b/fonts/TewiFont/038C.png differ diff --git a/fonts/TewiFont/038E.png b/fonts/TewiFont/038E.png new file mode 100644 index 000000000..a591e3a3a Binary files /dev/null and b/fonts/TewiFont/038E.png differ diff --git a/fonts/TewiFont/038F.png b/fonts/TewiFont/038F.png new file mode 100644 index 000000000..63f3d8f27 Binary files /dev/null and b/fonts/TewiFont/038F.png differ diff --git a/fonts/TewiFont/0390.png b/fonts/TewiFont/0390.png new file mode 100644 index 000000000..0a1aa51ec Binary files /dev/null and b/fonts/TewiFont/0390.png differ diff --git a/fonts/TewiFont/0391.png b/fonts/TewiFont/0391.png new file mode 100644 index 000000000..cadfc3805 Binary files /dev/null and b/fonts/TewiFont/0391.png differ diff --git a/fonts/TewiFont/0392.png b/fonts/TewiFont/0392.png new file mode 100644 index 000000000..fcf284dc6 Binary files /dev/null and b/fonts/TewiFont/0392.png differ diff --git a/fonts/TewiFont/0393.png b/fonts/TewiFont/0393.png new file mode 100644 index 000000000..68169edec Binary files /dev/null and b/fonts/TewiFont/0393.png differ diff --git a/fonts/TewiFont/0394.png b/fonts/TewiFont/0394.png new file mode 100644 index 000000000..867d49788 Binary files /dev/null and b/fonts/TewiFont/0394.png differ diff --git a/fonts/TewiFont/0395.png b/fonts/TewiFont/0395.png new file mode 100644 index 000000000..3f678c9d8 Binary files /dev/null and b/fonts/TewiFont/0395.png differ diff --git a/fonts/TewiFont/0396.png b/fonts/TewiFont/0396.png new file mode 100644 index 000000000..9fe4b9cf7 Binary files /dev/null and b/fonts/TewiFont/0396.png differ diff --git a/fonts/TewiFont/0397.png b/fonts/TewiFont/0397.png new file mode 100644 index 000000000..301e15143 Binary files /dev/null and b/fonts/TewiFont/0397.png differ diff --git a/fonts/TewiFont/0398.png b/fonts/TewiFont/0398.png new file mode 100644 index 000000000..0bcdb4e34 Binary files /dev/null and b/fonts/TewiFont/0398.png differ diff --git a/fonts/TewiFont/0399.png b/fonts/TewiFont/0399.png new file mode 100644 index 000000000..85de12adb Binary files /dev/null and b/fonts/TewiFont/0399.png differ diff --git a/fonts/TewiFont/039A.png b/fonts/TewiFont/039A.png new file mode 100644 index 000000000..c8f94b104 Binary files /dev/null and b/fonts/TewiFont/039A.png differ diff --git a/fonts/TewiFont/039B.png b/fonts/TewiFont/039B.png new file mode 100644 index 000000000..eb806c407 Binary files /dev/null and b/fonts/TewiFont/039B.png differ diff --git a/fonts/TewiFont/039C.png b/fonts/TewiFont/039C.png new file mode 100644 index 000000000..140320557 Binary files /dev/null and b/fonts/TewiFont/039C.png differ diff --git a/fonts/TewiFont/039D.png b/fonts/TewiFont/039D.png new file mode 100644 index 000000000..5c7aaaec1 Binary files /dev/null and b/fonts/TewiFont/039D.png differ diff --git a/fonts/TewiFont/039E.png b/fonts/TewiFont/039E.png new file mode 100644 index 000000000..be871a308 Binary files /dev/null and b/fonts/TewiFont/039E.png differ diff --git a/fonts/TewiFont/039F.png b/fonts/TewiFont/039F.png new file mode 100644 index 000000000..83e0a0012 Binary files /dev/null and b/fonts/TewiFont/039F.png differ diff --git a/fonts/TewiFont/03A0.png b/fonts/TewiFont/03A0.png new file mode 100644 index 000000000..4128a7ba3 Binary files /dev/null and b/fonts/TewiFont/03A0.png differ diff --git a/fonts/TewiFont/03A1.png b/fonts/TewiFont/03A1.png new file mode 100644 index 000000000..c41cc1de8 Binary files /dev/null and b/fonts/TewiFont/03A1.png differ diff --git a/fonts/TewiFont/03A3.png b/fonts/TewiFont/03A3.png new file mode 100644 index 000000000..b055cdc98 Binary files /dev/null and b/fonts/TewiFont/03A3.png differ diff --git a/fonts/TewiFont/03A4.png b/fonts/TewiFont/03A4.png new file mode 100644 index 000000000..5f2cdd821 Binary files /dev/null and b/fonts/TewiFont/03A4.png differ diff --git a/fonts/TewiFont/03A5.png b/fonts/TewiFont/03A5.png new file mode 100644 index 000000000..c1da08a10 Binary files /dev/null and b/fonts/TewiFont/03A5.png differ diff --git a/fonts/TewiFont/03A6.png b/fonts/TewiFont/03A6.png new file mode 100644 index 000000000..dee7a905c Binary files /dev/null and b/fonts/TewiFont/03A6.png differ diff --git a/fonts/TewiFont/03A7.png b/fonts/TewiFont/03A7.png new file mode 100644 index 000000000..1e4289448 Binary files /dev/null and b/fonts/TewiFont/03A7.png differ diff --git a/fonts/TewiFont/03A8.png b/fonts/TewiFont/03A8.png new file mode 100644 index 000000000..43f7437c1 Binary files /dev/null and b/fonts/TewiFont/03A8.png differ diff --git a/fonts/TewiFont/03A9.png b/fonts/TewiFont/03A9.png new file mode 100644 index 000000000..d51d012f8 Binary files /dev/null and b/fonts/TewiFont/03A9.png differ diff --git a/fonts/TewiFont/03AA.png b/fonts/TewiFont/03AA.png new file mode 100644 index 000000000..f2848d97c Binary files /dev/null and b/fonts/TewiFont/03AA.png differ diff --git a/fonts/TewiFont/03AB.png b/fonts/TewiFont/03AB.png new file mode 100644 index 000000000..7090194a8 Binary files /dev/null and b/fonts/TewiFont/03AB.png differ diff --git a/fonts/TewiFont/03AC.png b/fonts/TewiFont/03AC.png new file mode 100644 index 000000000..9ebac0b0a Binary files /dev/null and b/fonts/TewiFont/03AC.png differ diff --git a/fonts/TewiFont/03AD.png b/fonts/TewiFont/03AD.png new file mode 100644 index 000000000..cb0ed5901 Binary files /dev/null and b/fonts/TewiFont/03AD.png differ diff --git a/fonts/TewiFont/03AE.png b/fonts/TewiFont/03AE.png new file mode 100644 index 000000000..15c94d1c6 Binary files /dev/null and b/fonts/TewiFont/03AE.png differ diff --git a/fonts/TewiFont/03AF.png b/fonts/TewiFont/03AF.png new file mode 100644 index 000000000..83d9a7da7 Binary files /dev/null and b/fonts/TewiFont/03AF.png differ diff --git a/fonts/TewiFont/03B0.png b/fonts/TewiFont/03B0.png new file mode 100644 index 000000000..8af3832d7 Binary files /dev/null and b/fonts/TewiFont/03B0.png differ diff --git a/fonts/TewiFont/03B1.png b/fonts/TewiFont/03B1.png new file mode 100644 index 000000000..117fd522d Binary files /dev/null and b/fonts/TewiFont/03B1.png differ diff --git a/fonts/TewiFont/03B2.png b/fonts/TewiFont/03B2.png new file mode 100644 index 000000000..a2c389494 Binary files /dev/null and b/fonts/TewiFont/03B2.png differ diff --git a/fonts/TewiFont/03B3.png b/fonts/TewiFont/03B3.png new file mode 100644 index 000000000..079874ab8 Binary files /dev/null and b/fonts/TewiFont/03B3.png differ diff --git a/fonts/TewiFont/03B4.png b/fonts/TewiFont/03B4.png new file mode 100644 index 000000000..2cd2f5e72 Binary files /dev/null and b/fonts/TewiFont/03B4.png differ diff --git a/fonts/TewiFont/03B5.png b/fonts/TewiFont/03B5.png new file mode 100644 index 000000000..f2169e3eb Binary files /dev/null and b/fonts/TewiFont/03B5.png differ diff --git a/fonts/TewiFont/03B6.png b/fonts/TewiFont/03B6.png new file mode 100644 index 000000000..ecc152b4f Binary files /dev/null and b/fonts/TewiFont/03B6.png differ diff --git a/fonts/TewiFont/03B7.png b/fonts/TewiFont/03B7.png new file mode 100644 index 000000000..6fae9a971 Binary files /dev/null and b/fonts/TewiFont/03B7.png differ diff --git a/fonts/TewiFont/03B8.png b/fonts/TewiFont/03B8.png new file mode 100644 index 000000000..49376b93f Binary files /dev/null and b/fonts/TewiFont/03B8.png differ diff --git a/fonts/TewiFont/03B9.png b/fonts/TewiFont/03B9.png new file mode 100644 index 000000000..73935c4e5 Binary files /dev/null and b/fonts/TewiFont/03B9.png differ diff --git a/fonts/TewiFont/03BA.png b/fonts/TewiFont/03BA.png new file mode 100644 index 000000000..c84d5394f Binary files /dev/null and b/fonts/TewiFont/03BA.png differ diff --git a/fonts/TewiFont/03BB.png b/fonts/TewiFont/03BB.png new file mode 100644 index 000000000..5cf256f31 Binary files /dev/null and b/fonts/TewiFont/03BB.png differ diff --git a/fonts/TewiFont/03BC.png b/fonts/TewiFont/03BC.png new file mode 100644 index 000000000..4252825cb Binary files /dev/null and b/fonts/TewiFont/03BC.png differ diff --git a/fonts/TewiFont/03BD.png b/fonts/TewiFont/03BD.png new file mode 100644 index 000000000..f21ce4dcf Binary files /dev/null and b/fonts/TewiFont/03BD.png differ diff --git a/fonts/TewiFont/03BE.png b/fonts/TewiFont/03BE.png new file mode 100644 index 000000000..1918d2882 Binary files /dev/null and b/fonts/TewiFont/03BE.png differ diff --git a/fonts/TewiFont/03BF.png b/fonts/TewiFont/03BF.png new file mode 100644 index 000000000..4f808b309 Binary files /dev/null and b/fonts/TewiFont/03BF.png differ diff --git a/fonts/TewiFont/03C0.png b/fonts/TewiFont/03C0.png new file mode 100644 index 000000000..96d6f5b7e Binary files /dev/null and b/fonts/TewiFont/03C0.png differ diff --git a/fonts/TewiFont/03C1.png b/fonts/TewiFont/03C1.png new file mode 100644 index 000000000..d7fd97c89 Binary files /dev/null and b/fonts/TewiFont/03C1.png differ diff --git a/fonts/TewiFont/03C2.png b/fonts/TewiFont/03C2.png new file mode 100644 index 000000000..81b551cd7 Binary files /dev/null and b/fonts/TewiFont/03C2.png differ diff --git a/fonts/TewiFont/03C3.png b/fonts/TewiFont/03C3.png new file mode 100644 index 000000000..5be4a942a Binary files /dev/null and b/fonts/TewiFont/03C3.png differ diff --git a/fonts/TewiFont/03C4.png b/fonts/TewiFont/03C4.png new file mode 100644 index 000000000..e3dac23e7 Binary files /dev/null and b/fonts/TewiFont/03C4.png differ diff --git a/fonts/TewiFont/03C5.png b/fonts/TewiFont/03C5.png new file mode 100644 index 000000000..adce0f17f Binary files /dev/null and b/fonts/TewiFont/03C5.png differ diff --git a/fonts/TewiFont/03C6.png b/fonts/TewiFont/03C6.png new file mode 100644 index 000000000..978ca24da Binary files /dev/null and b/fonts/TewiFont/03C6.png differ diff --git a/fonts/TewiFont/03C7.png b/fonts/TewiFont/03C7.png new file mode 100644 index 000000000..54e9d1ba5 Binary files /dev/null and b/fonts/TewiFont/03C7.png differ diff --git a/fonts/TewiFont/03C8.png b/fonts/TewiFont/03C8.png new file mode 100644 index 000000000..2c07d2aa6 Binary files /dev/null and b/fonts/TewiFont/03C8.png differ diff --git a/fonts/TewiFont/03C9.png b/fonts/TewiFont/03C9.png new file mode 100644 index 000000000..7bda6d621 Binary files /dev/null and b/fonts/TewiFont/03C9.png differ diff --git a/fonts/TewiFont/03CA.png b/fonts/TewiFont/03CA.png new file mode 100644 index 000000000..1ffb84cc6 Binary files /dev/null and b/fonts/TewiFont/03CA.png differ diff --git a/fonts/TewiFont/03CB.png b/fonts/TewiFont/03CB.png new file mode 100644 index 000000000..6121d21c2 Binary files /dev/null and b/fonts/TewiFont/03CB.png differ diff --git a/fonts/TewiFont/03CC.png b/fonts/TewiFont/03CC.png new file mode 100644 index 000000000..ac92d92eb Binary files /dev/null and b/fonts/TewiFont/03CC.png differ diff --git a/fonts/TewiFont/03CD.png b/fonts/TewiFont/03CD.png new file mode 100644 index 000000000..7bbb56c42 Binary files /dev/null and b/fonts/TewiFont/03CD.png differ diff --git a/fonts/TewiFont/03CE.png b/fonts/TewiFont/03CE.png new file mode 100644 index 000000000..2f0760c24 Binary files /dev/null and b/fonts/TewiFont/03CE.png differ diff --git a/fonts/TewiFont/03CF.png b/fonts/TewiFont/03CF.png new file mode 100644 index 000000000..94bf85aba Binary files /dev/null and b/fonts/TewiFont/03CF.png differ diff --git a/fonts/TewiFont/03D0.png b/fonts/TewiFont/03D0.png new file mode 100644 index 000000000..ad458bd71 Binary files /dev/null and b/fonts/TewiFont/03D0.png differ diff --git a/fonts/TewiFont/03D1.png b/fonts/TewiFont/03D1.png new file mode 100644 index 000000000..e8b43ad2e Binary files /dev/null and b/fonts/TewiFont/03D1.png differ diff --git a/fonts/TewiFont/03D2.png b/fonts/TewiFont/03D2.png new file mode 100644 index 000000000..74e275683 Binary files /dev/null and b/fonts/TewiFont/03D2.png differ diff --git a/fonts/TewiFont/03D3.png b/fonts/TewiFont/03D3.png new file mode 100644 index 000000000..25298b292 Binary files /dev/null and b/fonts/TewiFont/03D3.png differ diff --git a/fonts/TewiFont/03D4.png b/fonts/TewiFont/03D4.png new file mode 100644 index 000000000..b65f51ad4 Binary files /dev/null and b/fonts/TewiFont/03D4.png differ diff --git a/fonts/TewiFont/03D5.png b/fonts/TewiFont/03D5.png new file mode 100644 index 000000000..32bda97aa Binary files /dev/null and b/fonts/TewiFont/03D5.png differ diff --git a/fonts/TewiFont/03D6.png b/fonts/TewiFont/03D6.png new file mode 100644 index 000000000..9659432aa Binary files /dev/null and b/fonts/TewiFont/03D6.png differ diff --git a/fonts/TewiFont/03D7.png b/fonts/TewiFont/03D7.png new file mode 100644 index 000000000..07b008c91 Binary files /dev/null and b/fonts/TewiFont/03D7.png differ diff --git a/fonts/TewiFont/03D8.png b/fonts/TewiFont/03D8.png new file mode 100644 index 000000000..6f0e9c496 Binary files /dev/null and b/fonts/TewiFont/03D8.png differ diff --git a/fonts/TewiFont/03D9.png b/fonts/TewiFont/03D9.png new file mode 100644 index 000000000..ab66023b7 Binary files /dev/null and b/fonts/TewiFont/03D9.png differ diff --git a/fonts/TewiFont/03DA.png b/fonts/TewiFont/03DA.png new file mode 100644 index 000000000..124806137 Binary files /dev/null and b/fonts/TewiFont/03DA.png differ diff --git a/fonts/TewiFont/03DB.png b/fonts/TewiFont/03DB.png new file mode 100644 index 000000000..f99d28697 Binary files /dev/null and b/fonts/TewiFont/03DB.png differ diff --git a/fonts/TewiFont/03DC.png b/fonts/TewiFont/03DC.png new file mode 100644 index 000000000..6bf5edfad Binary files /dev/null and b/fonts/TewiFont/03DC.png differ diff --git a/fonts/TewiFont/03DD.png b/fonts/TewiFont/03DD.png new file mode 100644 index 000000000..0b1a1eab5 Binary files /dev/null and b/fonts/TewiFont/03DD.png differ diff --git a/fonts/TewiFont/03DE.png b/fonts/TewiFont/03DE.png new file mode 100644 index 000000000..420bec17a Binary files /dev/null and b/fonts/TewiFont/03DE.png differ diff --git a/fonts/TewiFont/03DF.png b/fonts/TewiFont/03DF.png new file mode 100644 index 000000000..1d2d250fd Binary files /dev/null and b/fonts/TewiFont/03DF.png differ diff --git a/fonts/TewiFont/03E0.png b/fonts/TewiFont/03E0.png new file mode 100644 index 000000000..733770afa Binary files /dev/null and b/fonts/TewiFont/03E0.png differ diff --git a/fonts/TewiFont/03E1.png b/fonts/TewiFont/03E1.png new file mode 100644 index 000000000..c8ec78805 Binary files /dev/null and b/fonts/TewiFont/03E1.png differ diff --git a/fonts/TewiFont/03E2.png b/fonts/TewiFont/03E2.png new file mode 100644 index 000000000..ae1a11026 Binary files /dev/null and b/fonts/TewiFont/03E2.png differ diff --git a/fonts/TewiFont/03E3.png b/fonts/TewiFont/03E3.png new file mode 100644 index 000000000..64a75cc58 Binary files /dev/null and b/fonts/TewiFont/03E3.png differ diff --git a/fonts/TewiFont/03E4.png b/fonts/TewiFont/03E4.png new file mode 100644 index 000000000..5fe4eee14 Binary files /dev/null and b/fonts/TewiFont/03E4.png differ diff --git a/fonts/TewiFont/03E5.png b/fonts/TewiFont/03E5.png new file mode 100644 index 000000000..06faf5f00 Binary files /dev/null and b/fonts/TewiFont/03E5.png differ diff --git a/fonts/TewiFont/03E6.png b/fonts/TewiFont/03E6.png new file mode 100644 index 000000000..cca25d687 Binary files /dev/null and b/fonts/TewiFont/03E6.png differ diff --git a/fonts/TewiFont/03E7.png b/fonts/TewiFont/03E7.png new file mode 100644 index 000000000..100fe2a01 Binary files /dev/null and b/fonts/TewiFont/03E7.png differ diff --git a/fonts/TewiFont/03E8.png b/fonts/TewiFont/03E8.png new file mode 100644 index 000000000..66c796acb Binary files /dev/null and b/fonts/TewiFont/03E8.png differ diff --git a/fonts/TewiFont/03E9.png b/fonts/TewiFont/03E9.png new file mode 100644 index 000000000..9fb397bcc Binary files /dev/null and b/fonts/TewiFont/03E9.png differ diff --git a/fonts/TewiFont/03EA.png b/fonts/TewiFont/03EA.png new file mode 100644 index 000000000..c1594ed56 Binary files /dev/null and b/fonts/TewiFont/03EA.png differ diff --git a/fonts/TewiFont/03EB.png b/fonts/TewiFont/03EB.png new file mode 100644 index 000000000..96405d1cb Binary files /dev/null and b/fonts/TewiFont/03EB.png differ diff --git a/fonts/TewiFont/03EC.png b/fonts/TewiFont/03EC.png new file mode 100644 index 000000000..4f9787f86 Binary files /dev/null and b/fonts/TewiFont/03EC.png differ diff --git a/fonts/TewiFont/03ED.png b/fonts/TewiFont/03ED.png new file mode 100644 index 000000000..48e410bb4 Binary files /dev/null and b/fonts/TewiFont/03ED.png differ diff --git a/fonts/TewiFont/03EE.png b/fonts/TewiFont/03EE.png new file mode 100644 index 000000000..72e4b80ed Binary files /dev/null and b/fonts/TewiFont/03EE.png differ diff --git a/fonts/TewiFont/03EF.png b/fonts/TewiFont/03EF.png new file mode 100644 index 000000000..bfa42bce2 Binary files /dev/null and b/fonts/TewiFont/03EF.png differ diff --git a/fonts/TewiFont/03F0.png b/fonts/TewiFont/03F0.png new file mode 100644 index 000000000..8462961e5 Binary files /dev/null and b/fonts/TewiFont/03F0.png differ diff --git a/fonts/TewiFont/03F1.png b/fonts/TewiFont/03F1.png new file mode 100644 index 000000000..6b77e1a2d Binary files /dev/null and b/fonts/TewiFont/03F1.png differ diff --git a/fonts/TewiFont/03F2.png b/fonts/TewiFont/03F2.png new file mode 100644 index 000000000..d558ac823 Binary files /dev/null and b/fonts/TewiFont/03F2.png differ diff --git a/fonts/TewiFont/03F3.png b/fonts/TewiFont/03F3.png new file mode 100644 index 000000000..1c3b5654e Binary files /dev/null and b/fonts/TewiFont/03F3.png differ diff --git a/fonts/TewiFont/03F4.png b/fonts/TewiFont/03F4.png new file mode 100644 index 000000000..0bcdb4e34 Binary files /dev/null and b/fonts/TewiFont/03F4.png differ diff --git a/fonts/TewiFont/03F5.png b/fonts/TewiFont/03F5.png new file mode 100644 index 000000000..4f0e36e8f Binary files /dev/null and b/fonts/TewiFont/03F5.png differ diff --git a/fonts/TewiFont/03F6.png b/fonts/TewiFont/03F6.png new file mode 100644 index 000000000..111077f44 Binary files /dev/null and b/fonts/TewiFont/03F6.png differ diff --git a/fonts/TewiFont/03F7.png b/fonts/TewiFont/03F7.png new file mode 100644 index 000000000..254ac986f Binary files /dev/null and b/fonts/TewiFont/03F7.png differ diff --git a/fonts/TewiFont/03F8.png b/fonts/TewiFont/03F8.png new file mode 100644 index 000000000..098d4550c Binary files /dev/null and b/fonts/TewiFont/03F8.png differ diff --git a/fonts/TewiFont/03F9.png b/fonts/TewiFont/03F9.png new file mode 100644 index 000000000..72c1e9c02 Binary files /dev/null and b/fonts/TewiFont/03F9.png differ diff --git a/fonts/TewiFont/03FA.png b/fonts/TewiFont/03FA.png new file mode 100644 index 000000000..140320557 Binary files /dev/null and b/fonts/TewiFont/03FA.png differ diff --git a/fonts/TewiFont/03FB.png b/fonts/TewiFont/03FB.png new file mode 100644 index 000000000..7a61446a6 Binary files /dev/null and b/fonts/TewiFont/03FB.png differ diff --git a/fonts/TewiFont/03FC.png b/fonts/TewiFont/03FC.png new file mode 100644 index 000000000..edef00254 Binary files /dev/null and b/fonts/TewiFont/03FC.png differ diff --git a/fonts/TewiFont/03FD.png b/fonts/TewiFont/03FD.png new file mode 100644 index 000000000..a8c2509ca Binary files /dev/null and b/fonts/TewiFont/03FD.png differ diff --git a/fonts/TewiFont/03FE.png b/fonts/TewiFont/03FE.png new file mode 100644 index 000000000..087b69a7c Binary files /dev/null and b/fonts/TewiFont/03FE.png differ diff --git a/fonts/TewiFont/03FF.png b/fonts/TewiFont/03FF.png new file mode 100644 index 000000000..d5f04bdfe Binary files /dev/null and b/fonts/TewiFont/03FF.png differ diff --git a/fonts/TewiFont/0400.png b/fonts/TewiFont/0400.png new file mode 100644 index 000000000..d0d2a8eb9 Binary files /dev/null and b/fonts/TewiFont/0400.png differ diff --git a/fonts/TewiFont/0401.png b/fonts/TewiFont/0401.png new file mode 100644 index 000000000..915cfe3bc Binary files /dev/null and b/fonts/TewiFont/0401.png differ diff --git a/fonts/TewiFont/0402.png b/fonts/TewiFont/0402.png new file mode 100644 index 000000000..7ee4be8be Binary files /dev/null and b/fonts/TewiFont/0402.png differ diff --git a/fonts/TewiFont/0403.png b/fonts/TewiFont/0403.png new file mode 100644 index 000000000..45f5350ea Binary files /dev/null and b/fonts/TewiFont/0403.png differ diff --git a/fonts/TewiFont/0404.png b/fonts/TewiFont/0404.png new file mode 100644 index 000000000..0f7d741aa Binary files /dev/null and b/fonts/TewiFont/0404.png differ diff --git a/fonts/TewiFont/0405.png b/fonts/TewiFont/0405.png new file mode 100644 index 000000000..3e0c39c69 Binary files /dev/null and b/fonts/TewiFont/0405.png differ diff --git a/fonts/TewiFont/0406.png b/fonts/TewiFont/0406.png new file mode 100644 index 000000000..680f2aaec Binary files /dev/null and b/fonts/TewiFont/0406.png differ diff --git a/fonts/TewiFont/0407.png b/fonts/TewiFont/0407.png new file mode 100644 index 000000000..00667621b Binary files /dev/null and b/fonts/TewiFont/0407.png differ diff --git a/fonts/TewiFont/0408.png b/fonts/TewiFont/0408.png new file mode 100644 index 000000000..392644350 Binary files /dev/null and b/fonts/TewiFont/0408.png differ diff --git a/fonts/TewiFont/0409.png b/fonts/TewiFont/0409.png new file mode 100644 index 000000000..7e0f37d32 Binary files /dev/null and b/fonts/TewiFont/0409.png differ diff --git a/fonts/TewiFont/040A.png b/fonts/TewiFont/040A.png new file mode 100644 index 000000000..6ca967f09 Binary files /dev/null and b/fonts/TewiFont/040A.png differ diff --git a/fonts/TewiFont/040B.png b/fonts/TewiFont/040B.png new file mode 100644 index 000000000..cec201f45 Binary files /dev/null and b/fonts/TewiFont/040B.png differ diff --git a/fonts/TewiFont/040C.png b/fonts/TewiFont/040C.png new file mode 100644 index 000000000..2ef04e709 Binary files /dev/null and b/fonts/TewiFont/040C.png differ diff --git a/fonts/TewiFont/040D.png b/fonts/TewiFont/040D.png new file mode 100644 index 000000000..1736501c8 Binary files /dev/null and b/fonts/TewiFont/040D.png differ diff --git a/fonts/TewiFont/040E.png b/fonts/TewiFont/040E.png new file mode 100644 index 000000000..50468f39a Binary files /dev/null and b/fonts/TewiFont/040E.png differ diff --git a/fonts/TewiFont/040F.png b/fonts/TewiFont/040F.png new file mode 100644 index 000000000..1e9cf88fe Binary files /dev/null and b/fonts/TewiFont/040F.png differ diff --git a/fonts/TewiFont/0410.png b/fonts/TewiFont/0410.png new file mode 100644 index 000000000..cadfc3805 Binary files /dev/null and b/fonts/TewiFont/0410.png differ diff --git a/fonts/TewiFont/0411.png b/fonts/TewiFont/0411.png new file mode 100644 index 000000000..662f4000c Binary files /dev/null and b/fonts/TewiFont/0411.png differ diff --git a/fonts/TewiFont/0412.png b/fonts/TewiFont/0412.png new file mode 100644 index 000000000..fcf284dc6 Binary files /dev/null and b/fonts/TewiFont/0412.png differ diff --git a/fonts/TewiFont/0413.png b/fonts/TewiFont/0413.png new file mode 100644 index 000000000..e71bc328c Binary files /dev/null and b/fonts/TewiFont/0413.png differ diff --git a/fonts/TewiFont/0414.png b/fonts/TewiFont/0414.png new file mode 100644 index 000000000..a2017c540 Binary files /dev/null and b/fonts/TewiFont/0414.png differ diff --git a/fonts/TewiFont/0415.png b/fonts/TewiFont/0415.png new file mode 100644 index 000000000..3f678c9d8 Binary files /dev/null and b/fonts/TewiFont/0415.png differ diff --git a/fonts/TewiFont/0416.png b/fonts/TewiFont/0416.png new file mode 100644 index 000000000..ab377a040 Binary files /dev/null and b/fonts/TewiFont/0416.png differ diff --git a/fonts/TewiFont/0417.png b/fonts/TewiFont/0417.png new file mode 100644 index 000000000..fcb363ad1 Binary files /dev/null and b/fonts/TewiFont/0417.png differ diff --git a/fonts/TewiFont/0418.png b/fonts/TewiFont/0418.png new file mode 100644 index 000000000..f3ea8cede Binary files /dev/null and b/fonts/TewiFont/0418.png differ diff --git a/fonts/TewiFont/0419.png b/fonts/TewiFont/0419.png new file mode 100644 index 000000000..c82c891ad Binary files /dev/null and b/fonts/TewiFont/0419.png differ diff --git a/fonts/TewiFont/041A.png b/fonts/TewiFont/041A.png new file mode 100644 index 000000000..c8f94b104 Binary files /dev/null and b/fonts/TewiFont/041A.png differ diff --git a/fonts/TewiFont/041B.png b/fonts/TewiFont/041B.png new file mode 100644 index 000000000..7ecbd8aed Binary files /dev/null and b/fonts/TewiFont/041B.png differ diff --git a/fonts/TewiFont/041C.png b/fonts/TewiFont/041C.png new file mode 100644 index 000000000..140320557 Binary files /dev/null and b/fonts/TewiFont/041C.png differ diff --git a/fonts/TewiFont/041D.png b/fonts/TewiFont/041D.png new file mode 100644 index 000000000..301e15143 Binary files /dev/null and b/fonts/TewiFont/041D.png differ diff --git a/fonts/TewiFont/041E.png b/fonts/TewiFont/041E.png new file mode 100644 index 000000000..83e0a0012 Binary files /dev/null and b/fonts/TewiFont/041E.png differ diff --git a/fonts/TewiFont/041F.png b/fonts/TewiFont/041F.png new file mode 100644 index 000000000..4128a7ba3 Binary files /dev/null and b/fonts/TewiFont/041F.png differ diff --git a/fonts/TewiFont/0420.png b/fonts/TewiFont/0420.png new file mode 100644 index 000000000..c41cc1de8 Binary files /dev/null and b/fonts/TewiFont/0420.png differ diff --git a/fonts/TewiFont/0421.png b/fonts/TewiFont/0421.png new file mode 100644 index 000000000..72c1e9c02 Binary files /dev/null and b/fonts/TewiFont/0421.png differ diff --git a/fonts/TewiFont/0422.png b/fonts/TewiFont/0422.png new file mode 100644 index 000000000..5f2cdd821 Binary files /dev/null and b/fonts/TewiFont/0422.png differ diff --git a/fonts/TewiFont/0423.png b/fonts/TewiFont/0423.png new file mode 100644 index 000000000..209361874 Binary files /dev/null and b/fonts/TewiFont/0423.png differ diff --git a/fonts/TewiFont/0424.png b/fonts/TewiFont/0424.png new file mode 100644 index 000000000..dee7a905c Binary files /dev/null and b/fonts/TewiFont/0424.png differ diff --git a/fonts/TewiFont/0425.png b/fonts/TewiFont/0425.png new file mode 100644 index 000000000..1e4289448 Binary files /dev/null and b/fonts/TewiFont/0425.png differ diff --git a/fonts/TewiFont/0426.png b/fonts/TewiFont/0426.png new file mode 100644 index 000000000..2e3fc52da Binary files /dev/null and b/fonts/TewiFont/0426.png differ diff --git a/fonts/TewiFont/0427.png b/fonts/TewiFont/0427.png new file mode 100644 index 000000000..38df8feaa Binary files /dev/null and b/fonts/TewiFont/0427.png differ diff --git a/fonts/TewiFont/0428.png b/fonts/TewiFont/0428.png new file mode 100644 index 000000000..ad8ecd54d Binary files /dev/null and b/fonts/TewiFont/0428.png differ diff --git a/fonts/TewiFont/0429.png b/fonts/TewiFont/0429.png new file mode 100644 index 000000000..84940065c Binary files /dev/null and b/fonts/TewiFont/0429.png differ diff --git a/fonts/TewiFont/042A.png b/fonts/TewiFont/042A.png new file mode 100644 index 000000000..f48fb5608 Binary files /dev/null and b/fonts/TewiFont/042A.png differ diff --git a/fonts/TewiFont/042B.png b/fonts/TewiFont/042B.png new file mode 100644 index 000000000..7e3ef9247 Binary files /dev/null and b/fonts/TewiFont/042B.png differ diff --git a/fonts/TewiFont/042C.png b/fonts/TewiFont/042C.png new file mode 100644 index 000000000..9fde9d247 Binary files /dev/null and b/fonts/TewiFont/042C.png differ diff --git a/fonts/TewiFont/042D.png b/fonts/TewiFont/042D.png new file mode 100644 index 000000000..a10b58a4e Binary files /dev/null and b/fonts/TewiFont/042D.png differ diff --git a/fonts/TewiFont/042E.png b/fonts/TewiFont/042E.png new file mode 100644 index 000000000..f0634d00e Binary files /dev/null and b/fonts/TewiFont/042E.png differ diff --git a/fonts/TewiFont/042F.png b/fonts/TewiFont/042F.png new file mode 100644 index 000000000..440ee5c86 Binary files /dev/null and b/fonts/TewiFont/042F.png differ diff --git a/fonts/TewiFont/0430.png b/fonts/TewiFont/0430.png new file mode 100644 index 000000000..ab99d62fc Binary files /dev/null and b/fonts/TewiFont/0430.png differ diff --git a/fonts/TewiFont/0431.png b/fonts/TewiFont/0431.png new file mode 100644 index 000000000..4eff42574 Binary files /dev/null and b/fonts/TewiFont/0431.png differ diff --git a/fonts/TewiFont/0432.png b/fonts/TewiFont/0432.png new file mode 100644 index 000000000..66a98ec31 Binary files /dev/null and b/fonts/TewiFont/0432.png differ diff --git a/fonts/TewiFont/0433.png b/fonts/TewiFont/0433.png new file mode 100644 index 000000000..ae7880519 Binary files /dev/null and b/fonts/TewiFont/0433.png differ diff --git a/fonts/TewiFont/0434.png b/fonts/TewiFont/0434.png new file mode 100644 index 000000000..1330fc995 Binary files /dev/null and b/fonts/TewiFont/0434.png differ diff --git a/fonts/TewiFont/0435.png b/fonts/TewiFont/0435.png new file mode 100644 index 000000000..d5b2a3eb3 Binary files /dev/null and b/fonts/TewiFont/0435.png differ diff --git a/fonts/TewiFont/0436.png b/fonts/TewiFont/0436.png new file mode 100644 index 000000000..fed7a97d9 Binary files /dev/null and b/fonts/TewiFont/0436.png differ diff --git a/fonts/TewiFont/0437.png b/fonts/TewiFont/0437.png new file mode 100644 index 000000000..59da6ff6d Binary files /dev/null and b/fonts/TewiFont/0437.png differ diff --git a/fonts/TewiFont/0438.png b/fonts/TewiFont/0438.png new file mode 100644 index 000000000..95580f0e9 Binary files /dev/null and b/fonts/TewiFont/0438.png differ diff --git a/fonts/TewiFont/0439.png b/fonts/TewiFont/0439.png new file mode 100644 index 000000000..23b32ae04 Binary files /dev/null and b/fonts/TewiFont/0439.png differ diff --git a/fonts/TewiFont/043A.png b/fonts/TewiFont/043A.png new file mode 100644 index 000000000..c84d5394f Binary files /dev/null and b/fonts/TewiFont/043A.png differ diff --git a/fonts/TewiFont/043B.png b/fonts/TewiFont/043B.png new file mode 100644 index 000000000..a0d8ed7a5 Binary files /dev/null and b/fonts/TewiFont/043B.png differ diff --git a/fonts/TewiFont/043C.png b/fonts/TewiFont/043C.png new file mode 100644 index 000000000..712029690 Binary files /dev/null and b/fonts/TewiFont/043C.png differ diff --git a/fonts/TewiFont/043D.png b/fonts/TewiFont/043D.png new file mode 100644 index 000000000..4f31d3073 Binary files /dev/null and b/fonts/TewiFont/043D.png differ diff --git a/fonts/TewiFont/043E.png b/fonts/TewiFont/043E.png new file mode 100644 index 000000000..4f808b309 Binary files /dev/null and b/fonts/TewiFont/043E.png differ diff --git a/fonts/TewiFont/043F.png b/fonts/TewiFont/043F.png new file mode 100644 index 000000000..a3cbcc033 Binary files /dev/null and b/fonts/TewiFont/043F.png differ diff --git a/fonts/TewiFont/0440.png b/fonts/TewiFont/0440.png new file mode 100644 index 000000000..e956048bf Binary files /dev/null and b/fonts/TewiFont/0440.png differ diff --git a/fonts/TewiFont/0441.png b/fonts/TewiFont/0441.png new file mode 100644 index 000000000..d558ac823 Binary files /dev/null and b/fonts/TewiFont/0441.png differ diff --git a/fonts/TewiFont/0442.png b/fonts/TewiFont/0442.png new file mode 100644 index 000000000..f431b2448 Binary files /dev/null and b/fonts/TewiFont/0442.png differ diff --git a/fonts/TewiFont/0443.png b/fonts/TewiFont/0443.png new file mode 100644 index 000000000..58a68ae37 Binary files /dev/null and b/fonts/TewiFont/0443.png differ diff --git a/fonts/TewiFont/0444.png b/fonts/TewiFont/0444.png new file mode 100644 index 000000000..32bda97aa Binary files /dev/null and b/fonts/TewiFont/0444.png differ diff --git a/fonts/TewiFont/0445.png b/fonts/TewiFont/0445.png new file mode 100644 index 000000000..cbd467f64 Binary files /dev/null and b/fonts/TewiFont/0445.png differ diff --git a/fonts/TewiFont/0446.png b/fonts/TewiFont/0446.png new file mode 100644 index 000000000..012297c71 Binary files /dev/null and b/fonts/TewiFont/0446.png differ diff --git a/fonts/TewiFont/0447.png b/fonts/TewiFont/0447.png new file mode 100644 index 000000000..65ca60fc8 Binary files /dev/null and b/fonts/TewiFont/0447.png differ diff --git a/fonts/TewiFont/0448.png b/fonts/TewiFont/0448.png new file mode 100644 index 000000000..e277a63af Binary files /dev/null and b/fonts/TewiFont/0448.png differ diff --git a/fonts/TewiFont/0449.png b/fonts/TewiFont/0449.png new file mode 100644 index 000000000..800307d52 Binary files /dev/null and b/fonts/TewiFont/0449.png differ diff --git a/fonts/TewiFont/044A.png b/fonts/TewiFont/044A.png new file mode 100644 index 000000000..f5df403b4 Binary files /dev/null and b/fonts/TewiFont/044A.png differ diff --git a/fonts/TewiFont/044B.png b/fonts/TewiFont/044B.png new file mode 100644 index 000000000..f9644abad Binary files /dev/null and b/fonts/TewiFont/044B.png differ diff --git a/fonts/TewiFont/044C.png b/fonts/TewiFont/044C.png new file mode 100644 index 000000000..57769e502 Binary files /dev/null and b/fonts/TewiFont/044C.png differ diff --git a/fonts/TewiFont/044D.png b/fonts/TewiFont/044D.png new file mode 100644 index 000000000..9932534f6 Binary files /dev/null and b/fonts/TewiFont/044D.png differ diff --git a/fonts/TewiFont/044E.png b/fonts/TewiFont/044E.png new file mode 100644 index 000000000..8766825c8 Binary files /dev/null and b/fonts/TewiFont/044E.png differ diff --git a/fonts/TewiFont/044F.png b/fonts/TewiFont/044F.png new file mode 100644 index 000000000..5ef43d5fd Binary files /dev/null and b/fonts/TewiFont/044F.png differ diff --git a/fonts/TewiFont/0450.png b/fonts/TewiFont/0450.png new file mode 100644 index 000000000..c15203530 Binary files /dev/null and b/fonts/TewiFont/0450.png differ diff --git a/fonts/TewiFont/0451.png b/fonts/TewiFont/0451.png new file mode 100644 index 000000000..724b2c075 Binary files /dev/null and b/fonts/TewiFont/0451.png differ diff --git a/fonts/TewiFont/0452.png b/fonts/TewiFont/0452.png new file mode 100644 index 000000000..e36b8d108 Binary files /dev/null and b/fonts/TewiFont/0452.png differ diff --git a/fonts/TewiFont/0453.png b/fonts/TewiFont/0453.png new file mode 100644 index 000000000..0276d5312 Binary files /dev/null and b/fonts/TewiFont/0453.png differ diff --git a/fonts/TewiFont/0454.png b/fonts/TewiFont/0454.png new file mode 100644 index 000000000..da44d506b Binary files /dev/null and b/fonts/TewiFont/0454.png differ diff --git a/fonts/TewiFont/0455.png b/fonts/TewiFont/0455.png new file mode 100644 index 000000000..a5b28aad8 Binary files /dev/null and b/fonts/TewiFont/0455.png differ diff --git a/fonts/TewiFont/0456.png b/fonts/TewiFont/0456.png new file mode 100644 index 000000000..361e458b2 Binary files /dev/null and b/fonts/TewiFont/0456.png differ diff --git a/fonts/TewiFont/0457.png b/fonts/TewiFont/0457.png new file mode 100644 index 000000000..b65831add Binary files /dev/null and b/fonts/TewiFont/0457.png differ diff --git a/fonts/TewiFont/0458.png b/fonts/TewiFont/0458.png new file mode 100644 index 000000000..8c36b853e Binary files /dev/null and b/fonts/TewiFont/0458.png differ diff --git a/fonts/TewiFont/0459.png b/fonts/TewiFont/0459.png new file mode 100644 index 000000000..27a7b82e1 Binary files /dev/null and b/fonts/TewiFont/0459.png differ diff --git a/fonts/TewiFont/045A.png b/fonts/TewiFont/045A.png new file mode 100644 index 000000000..b4d34143b Binary files /dev/null and b/fonts/TewiFont/045A.png differ diff --git a/fonts/TewiFont/045B.png b/fonts/TewiFont/045B.png new file mode 100644 index 000000000..057080733 Binary files /dev/null and b/fonts/TewiFont/045B.png differ diff --git a/fonts/TewiFont/045C.png b/fonts/TewiFont/045C.png new file mode 100644 index 000000000..36422edca Binary files /dev/null and b/fonts/TewiFont/045C.png differ diff --git a/fonts/TewiFont/045D.png b/fonts/TewiFont/045D.png new file mode 100644 index 000000000..c5119e6e9 Binary files /dev/null and b/fonts/TewiFont/045D.png differ diff --git a/fonts/TewiFont/045E.png b/fonts/TewiFont/045E.png new file mode 100644 index 000000000..362c6756a Binary files /dev/null and b/fonts/TewiFont/045E.png differ diff --git a/fonts/TewiFont/045F.png b/fonts/TewiFont/045F.png new file mode 100644 index 000000000..54355bad2 Binary files /dev/null and b/fonts/TewiFont/045F.png differ diff --git a/fonts/TewiFont/0460.png b/fonts/TewiFont/0460.png new file mode 100644 index 000000000..33f4a9bbb Binary files /dev/null and b/fonts/TewiFont/0460.png differ diff --git a/fonts/TewiFont/0461.png b/fonts/TewiFont/0461.png new file mode 100644 index 000000000..cc4f1ad39 Binary files /dev/null and b/fonts/TewiFont/0461.png differ diff --git a/fonts/TewiFont/0462.png b/fonts/TewiFont/0462.png new file mode 100644 index 000000000..29c6ed37e Binary files /dev/null and b/fonts/TewiFont/0462.png differ diff --git a/fonts/TewiFont/0463.png b/fonts/TewiFont/0463.png new file mode 100644 index 000000000..c3c99a08b Binary files /dev/null and b/fonts/TewiFont/0463.png differ diff --git a/fonts/TewiFont/0464.png b/fonts/TewiFont/0464.png new file mode 100644 index 000000000..12e8b7c4b Binary files /dev/null and b/fonts/TewiFont/0464.png differ diff --git a/fonts/TewiFont/0465.png b/fonts/TewiFont/0465.png new file mode 100644 index 000000000..933a5f42f Binary files /dev/null and b/fonts/TewiFont/0465.png differ diff --git a/fonts/TewiFont/0466.png b/fonts/TewiFont/0466.png new file mode 100644 index 000000000..8b914ded2 Binary files /dev/null and b/fonts/TewiFont/0466.png differ diff --git a/fonts/TewiFont/0467.png b/fonts/TewiFont/0467.png new file mode 100644 index 000000000..fd03195de Binary files /dev/null and b/fonts/TewiFont/0467.png differ diff --git a/fonts/TewiFont/0468.png b/fonts/TewiFont/0468.png new file mode 100644 index 000000000..ccd2b7ed7 Binary files /dev/null and b/fonts/TewiFont/0468.png differ diff --git a/fonts/TewiFont/0469.png b/fonts/TewiFont/0469.png new file mode 100644 index 000000000..4fed06284 Binary files /dev/null and b/fonts/TewiFont/0469.png differ diff --git a/fonts/TewiFont/046A.png b/fonts/TewiFont/046A.png new file mode 100644 index 000000000..27d4f8d68 Binary files /dev/null and b/fonts/TewiFont/046A.png differ diff --git a/fonts/TewiFont/046B.png b/fonts/TewiFont/046B.png new file mode 100644 index 000000000..31e8d6aee Binary files /dev/null and b/fonts/TewiFont/046B.png differ diff --git a/fonts/TewiFont/046C.png b/fonts/TewiFont/046C.png new file mode 100644 index 000000000..895bebd44 Binary files /dev/null and b/fonts/TewiFont/046C.png differ diff --git a/fonts/TewiFont/046D.png b/fonts/TewiFont/046D.png new file mode 100644 index 000000000..9c8f4b225 Binary files /dev/null and b/fonts/TewiFont/046D.png differ diff --git a/fonts/TewiFont/046E.png b/fonts/TewiFont/046E.png new file mode 100644 index 000000000..2f967cfd3 Binary files /dev/null and b/fonts/TewiFont/046E.png differ diff --git a/fonts/TewiFont/046F.png b/fonts/TewiFont/046F.png new file mode 100644 index 000000000..305cffc65 Binary files /dev/null and b/fonts/TewiFont/046F.png differ diff --git a/fonts/TewiFont/0470.png b/fonts/TewiFont/0470.png new file mode 100644 index 000000000..59f8258d5 Binary files /dev/null and b/fonts/TewiFont/0470.png differ diff --git a/fonts/TewiFont/0471.png b/fonts/TewiFont/0471.png new file mode 100644 index 000000000..cf60fe0c1 Binary files /dev/null and b/fonts/TewiFont/0471.png differ diff --git a/fonts/TewiFont/0472.png b/fonts/TewiFont/0472.png new file mode 100644 index 000000000..0bcdb4e34 Binary files /dev/null and b/fonts/TewiFont/0472.png differ diff --git a/fonts/TewiFont/0473.png b/fonts/TewiFont/0473.png new file mode 100644 index 000000000..4677e8fe1 Binary files /dev/null and b/fonts/TewiFont/0473.png differ diff --git a/fonts/TewiFont/0474.png b/fonts/TewiFont/0474.png new file mode 100644 index 000000000..71b6a0494 Binary files /dev/null and b/fonts/TewiFont/0474.png differ diff --git a/fonts/TewiFont/0475.png b/fonts/TewiFont/0475.png new file mode 100644 index 000000000..ec6b9c374 Binary files /dev/null and b/fonts/TewiFont/0475.png differ diff --git a/fonts/TewiFont/0476.png b/fonts/TewiFont/0476.png new file mode 100644 index 000000000..4a771a0fc Binary files /dev/null and b/fonts/TewiFont/0476.png differ diff --git a/fonts/TewiFont/0477.png b/fonts/TewiFont/0477.png new file mode 100644 index 000000000..01ac04f28 Binary files /dev/null and b/fonts/TewiFont/0477.png differ diff --git a/fonts/TewiFont/0478.png b/fonts/TewiFont/0478.png new file mode 100644 index 000000000..4821ca431 Binary files /dev/null and b/fonts/TewiFont/0478.png differ diff --git a/fonts/TewiFont/0479.png b/fonts/TewiFont/0479.png new file mode 100644 index 000000000..51fde5479 Binary files /dev/null and b/fonts/TewiFont/0479.png differ diff --git a/fonts/TewiFont/047A.png b/fonts/TewiFont/047A.png new file mode 100644 index 000000000..3ef4e47eb Binary files /dev/null and b/fonts/TewiFont/047A.png differ diff --git a/fonts/TewiFont/047B.png b/fonts/TewiFont/047B.png new file mode 100644 index 000000000..7e821bee3 Binary files /dev/null and b/fonts/TewiFont/047B.png differ diff --git a/fonts/TewiFont/047C.png b/fonts/TewiFont/047C.png new file mode 100644 index 000000000..e380dbfd0 Binary files /dev/null and b/fonts/TewiFont/047C.png differ diff --git a/fonts/TewiFont/047D.png b/fonts/TewiFont/047D.png new file mode 100644 index 000000000..7fe02a2ba Binary files /dev/null and b/fonts/TewiFont/047D.png differ diff --git a/fonts/TewiFont/047E.png b/fonts/TewiFont/047E.png new file mode 100644 index 000000000..640f03512 Binary files /dev/null and b/fonts/TewiFont/047E.png differ diff --git a/fonts/TewiFont/047F.png b/fonts/TewiFont/047F.png new file mode 100644 index 000000000..442ddf9c5 Binary files /dev/null and b/fonts/TewiFont/047F.png differ diff --git a/fonts/TewiFont/0480.png b/fonts/TewiFont/0480.png new file mode 100644 index 000000000..80241601c Binary files /dev/null and b/fonts/TewiFont/0480.png differ diff --git a/fonts/TewiFont/0481.png b/fonts/TewiFont/0481.png new file mode 100644 index 000000000..da7d3b93a Binary files /dev/null and b/fonts/TewiFont/0481.png differ diff --git a/fonts/TewiFont/0482.png b/fonts/TewiFont/0482.png new file mode 100644 index 000000000..bb0de313d Binary files /dev/null and b/fonts/TewiFont/0482.png differ diff --git a/fonts/TewiFont/0483.png b/fonts/TewiFont/0483.png new file mode 100644 index 000000000..87172f8a8 Binary files /dev/null and b/fonts/TewiFont/0483.png differ diff --git a/fonts/TewiFont/0484.png b/fonts/TewiFont/0484.png new file mode 100644 index 000000000..62fddc553 Binary files /dev/null and b/fonts/TewiFont/0484.png differ diff --git a/fonts/TewiFont/0485.png b/fonts/TewiFont/0485.png new file mode 100644 index 000000000..0f2645f31 Binary files /dev/null and b/fonts/TewiFont/0485.png differ diff --git a/fonts/TewiFont/0486.png b/fonts/TewiFont/0486.png new file mode 100644 index 000000000..5d15cb7d0 Binary files /dev/null and b/fonts/TewiFont/0486.png differ diff --git a/fonts/TewiFont/048A.png b/fonts/TewiFont/048A.png new file mode 100644 index 000000000..2c8a967a3 Binary files /dev/null and b/fonts/TewiFont/048A.png differ diff --git a/fonts/TewiFont/048B.png b/fonts/TewiFont/048B.png new file mode 100644 index 000000000..d8f7e313f Binary files /dev/null and b/fonts/TewiFont/048B.png differ diff --git a/fonts/TewiFont/048C.png b/fonts/TewiFont/048C.png new file mode 100644 index 000000000..46333b368 Binary files /dev/null and b/fonts/TewiFont/048C.png differ diff --git a/fonts/TewiFont/048D.png b/fonts/TewiFont/048D.png new file mode 100644 index 000000000..c3c99a08b Binary files /dev/null and b/fonts/TewiFont/048D.png differ diff --git a/fonts/TewiFont/048E.png b/fonts/TewiFont/048E.png new file mode 100644 index 000000000..404c7a33b Binary files /dev/null and b/fonts/TewiFont/048E.png differ diff --git a/fonts/TewiFont/048F.png b/fonts/TewiFont/048F.png new file mode 100644 index 000000000..a58d68e1f Binary files /dev/null and b/fonts/TewiFont/048F.png differ diff --git a/fonts/TewiFont/0490.png b/fonts/TewiFont/0490.png new file mode 100644 index 000000000..05f3cf967 Binary files /dev/null and b/fonts/TewiFont/0490.png differ diff --git a/fonts/TewiFont/0491.png b/fonts/TewiFont/0491.png new file mode 100644 index 000000000..9f9571fa7 Binary files /dev/null and b/fonts/TewiFont/0491.png differ diff --git a/fonts/TewiFont/0492.png b/fonts/TewiFont/0492.png new file mode 100644 index 000000000..e51bb1c3a Binary files /dev/null and b/fonts/TewiFont/0492.png differ diff --git a/fonts/TewiFont/0493.png b/fonts/TewiFont/0493.png new file mode 100644 index 000000000..948bfdc0e Binary files /dev/null and b/fonts/TewiFont/0493.png differ diff --git a/fonts/TewiFont/0494.png b/fonts/TewiFont/0494.png new file mode 100644 index 000000000..c5ebbc199 Binary files /dev/null and b/fonts/TewiFont/0494.png differ diff --git a/fonts/TewiFont/0495.png b/fonts/TewiFont/0495.png new file mode 100644 index 000000000..ca0812887 Binary files /dev/null and b/fonts/TewiFont/0495.png differ diff --git a/fonts/TewiFont/0496.png b/fonts/TewiFont/0496.png new file mode 100644 index 000000000..aff57a100 Binary files /dev/null and b/fonts/TewiFont/0496.png differ diff --git a/fonts/TewiFont/0497.png b/fonts/TewiFont/0497.png new file mode 100644 index 000000000..2451cc376 Binary files /dev/null and b/fonts/TewiFont/0497.png differ diff --git a/fonts/TewiFont/0498.png b/fonts/TewiFont/0498.png new file mode 100644 index 000000000..7415bd10e Binary files /dev/null and b/fonts/TewiFont/0498.png differ diff --git a/fonts/TewiFont/0499.png b/fonts/TewiFont/0499.png new file mode 100644 index 000000000..8bbd860d1 Binary files /dev/null and b/fonts/TewiFont/0499.png differ diff --git a/fonts/TewiFont/049A.png b/fonts/TewiFont/049A.png new file mode 100644 index 000000000..13f5e0bc2 Binary files /dev/null and b/fonts/TewiFont/049A.png differ diff --git a/fonts/TewiFont/049B.png b/fonts/TewiFont/049B.png new file mode 100644 index 000000000..4da9fc40b Binary files /dev/null and b/fonts/TewiFont/049B.png differ diff --git a/fonts/TewiFont/049C.png b/fonts/TewiFont/049C.png new file mode 100644 index 000000000..aa0fb1708 Binary files /dev/null and b/fonts/TewiFont/049C.png differ diff --git a/fonts/TewiFont/049D.png b/fonts/TewiFont/049D.png new file mode 100644 index 000000000..52cf49649 Binary files /dev/null and b/fonts/TewiFont/049D.png differ diff --git a/fonts/TewiFont/049E.png b/fonts/TewiFont/049E.png new file mode 100644 index 000000000..bfe2d8bb6 Binary files /dev/null and b/fonts/TewiFont/049E.png differ diff --git a/fonts/TewiFont/049F.png b/fonts/TewiFont/049F.png new file mode 100644 index 000000000..1dac6e756 Binary files /dev/null and b/fonts/TewiFont/049F.png differ diff --git a/fonts/TewiFont/04A0.png b/fonts/TewiFont/04A0.png new file mode 100644 index 000000000..9cea17dde Binary files /dev/null and b/fonts/TewiFont/04A0.png differ diff --git a/fonts/TewiFont/04A1.png b/fonts/TewiFont/04A1.png new file mode 100644 index 000000000..6fde6ad8a Binary files /dev/null and b/fonts/TewiFont/04A1.png differ diff --git a/fonts/TewiFont/04A2.png b/fonts/TewiFont/04A2.png new file mode 100644 index 000000000..9a8c35f77 Binary files /dev/null and b/fonts/TewiFont/04A2.png differ diff --git a/fonts/TewiFont/04A3.png b/fonts/TewiFont/04A3.png new file mode 100644 index 000000000..4e475f5ec Binary files /dev/null and b/fonts/TewiFont/04A3.png differ diff --git a/fonts/TewiFont/04A4.png b/fonts/TewiFont/04A4.png new file mode 100644 index 000000000..a77d6454a Binary files /dev/null and b/fonts/TewiFont/04A4.png differ diff --git a/fonts/TewiFont/04A5.png b/fonts/TewiFont/04A5.png new file mode 100644 index 000000000..5e9cabae4 Binary files /dev/null and b/fonts/TewiFont/04A5.png differ diff --git a/fonts/TewiFont/04A6.png b/fonts/TewiFont/04A6.png new file mode 100644 index 000000000..4aeea50b8 Binary files /dev/null and b/fonts/TewiFont/04A6.png differ diff --git a/fonts/TewiFont/04A7.png b/fonts/TewiFont/04A7.png new file mode 100644 index 000000000..4faeac94d Binary files /dev/null and b/fonts/TewiFont/04A7.png differ diff --git a/fonts/TewiFont/04A8.png b/fonts/TewiFont/04A8.png new file mode 100644 index 000000000..3ac3f2704 Binary files /dev/null and b/fonts/TewiFont/04A8.png differ diff --git a/fonts/TewiFont/04A9.png b/fonts/TewiFont/04A9.png new file mode 100644 index 000000000..a23c7d802 Binary files /dev/null and b/fonts/TewiFont/04A9.png differ diff --git a/fonts/TewiFont/04AA.png b/fonts/TewiFont/04AA.png new file mode 100644 index 000000000..562211864 Binary files /dev/null and b/fonts/TewiFont/04AA.png differ diff --git a/fonts/TewiFont/04AB.png b/fonts/TewiFont/04AB.png new file mode 100644 index 000000000..59215a43f Binary files /dev/null and b/fonts/TewiFont/04AB.png differ diff --git a/fonts/TewiFont/04AC.png b/fonts/TewiFont/04AC.png new file mode 100644 index 000000000..ce7d72475 Binary files /dev/null and b/fonts/TewiFont/04AC.png differ diff --git a/fonts/TewiFont/04AD.png b/fonts/TewiFont/04AD.png new file mode 100644 index 000000000..b3252f1e1 Binary files /dev/null and b/fonts/TewiFont/04AD.png differ diff --git a/fonts/TewiFont/04AE.png b/fonts/TewiFont/04AE.png new file mode 100644 index 000000000..c1da08a10 Binary files /dev/null and b/fonts/TewiFont/04AE.png differ diff --git a/fonts/TewiFont/04AF.png b/fonts/TewiFont/04AF.png new file mode 100644 index 000000000..ee299b2e9 Binary files /dev/null and b/fonts/TewiFont/04AF.png differ diff --git a/fonts/TewiFont/04B0.png b/fonts/TewiFont/04B0.png new file mode 100644 index 000000000..c56d6ee27 Binary files /dev/null and b/fonts/TewiFont/04B0.png differ diff --git a/fonts/TewiFont/04B1.png b/fonts/TewiFont/04B1.png new file mode 100644 index 000000000..ea23ab461 Binary files /dev/null and b/fonts/TewiFont/04B1.png differ diff --git a/fonts/TewiFont/04B2.png b/fonts/TewiFont/04B2.png new file mode 100644 index 000000000..3a13efb4a Binary files /dev/null and b/fonts/TewiFont/04B2.png differ diff --git a/fonts/TewiFont/04B3.png b/fonts/TewiFont/04B3.png new file mode 100644 index 000000000..e983e6e69 Binary files /dev/null and b/fonts/TewiFont/04B3.png differ diff --git a/fonts/TewiFont/04B4.png b/fonts/TewiFont/04B4.png new file mode 100644 index 000000000..8df7e08c0 Binary files /dev/null and b/fonts/TewiFont/04B4.png differ diff --git a/fonts/TewiFont/04B5.png b/fonts/TewiFont/04B5.png new file mode 100644 index 000000000..0c5d05f7b Binary files /dev/null and b/fonts/TewiFont/04B5.png differ diff --git a/fonts/TewiFont/04B6.png b/fonts/TewiFont/04B6.png new file mode 100644 index 000000000..eb335d553 Binary files /dev/null and b/fonts/TewiFont/04B6.png differ diff --git a/fonts/TewiFont/04B7.png b/fonts/TewiFont/04B7.png new file mode 100644 index 000000000..f0c256f6f Binary files /dev/null and b/fonts/TewiFont/04B7.png differ diff --git a/fonts/TewiFont/04B8.png b/fonts/TewiFont/04B8.png new file mode 100644 index 000000000..382a4ecca Binary files /dev/null and b/fonts/TewiFont/04B8.png differ diff --git a/fonts/TewiFont/04B9.png b/fonts/TewiFont/04B9.png new file mode 100644 index 000000000..838562e33 Binary files /dev/null and b/fonts/TewiFont/04B9.png differ diff --git a/fonts/TewiFont/04BA.png b/fonts/TewiFont/04BA.png new file mode 100644 index 000000000..f9f8b6f01 Binary files /dev/null and b/fonts/TewiFont/04BA.png differ diff --git a/fonts/TewiFont/04BB.png b/fonts/TewiFont/04BB.png new file mode 100644 index 000000000..08d3d1c14 Binary files /dev/null and b/fonts/TewiFont/04BB.png differ diff --git a/fonts/TewiFont/04BC.png b/fonts/TewiFont/04BC.png new file mode 100644 index 000000000..72d49a0f9 Binary files /dev/null and b/fonts/TewiFont/04BC.png differ diff --git a/fonts/TewiFont/04BD.png b/fonts/TewiFont/04BD.png new file mode 100644 index 000000000..eec96cfad Binary files /dev/null and b/fonts/TewiFont/04BD.png differ diff --git a/fonts/TewiFont/04BE.png b/fonts/TewiFont/04BE.png new file mode 100644 index 000000000..73ee1c13b Binary files /dev/null and b/fonts/TewiFont/04BE.png differ diff --git a/fonts/TewiFont/04BF.png b/fonts/TewiFont/04BF.png new file mode 100644 index 000000000..9f5e17914 Binary files /dev/null and b/fonts/TewiFont/04BF.png differ diff --git a/fonts/TewiFont/04C0.png b/fonts/TewiFont/04C0.png new file mode 100644 index 000000000..85de12adb Binary files /dev/null and b/fonts/TewiFont/04C0.png differ diff --git a/fonts/TewiFont/04C1.png b/fonts/TewiFont/04C1.png new file mode 100644 index 000000000..39429686e Binary files /dev/null and b/fonts/TewiFont/04C1.png differ diff --git a/fonts/TewiFont/04C2.png b/fonts/TewiFont/04C2.png new file mode 100644 index 000000000..e02043858 Binary files /dev/null and b/fonts/TewiFont/04C2.png differ diff --git a/fonts/TewiFont/04C3.png b/fonts/TewiFont/04C3.png new file mode 100644 index 000000000..0ca73b5a8 Binary files /dev/null and b/fonts/TewiFont/04C3.png differ diff --git a/fonts/TewiFont/04C4.png b/fonts/TewiFont/04C4.png new file mode 100644 index 000000000..47639eabf Binary files /dev/null and b/fonts/TewiFont/04C4.png differ diff --git a/fonts/TewiFont/04C5.png b/fonts/TewiFont/04C5.png new file mode 100644 index 000000000..cb2c8c668 Binary files /dev/null and b/fonts/TewiFont/04C5.png differ diff --git a/fonts/TewiFont/04C6.png b/fonts/TewiFont/04C6.png new file mode 100644 index 000000000..67ca61488 Binary files /dev/null and b/fonts/TewiFont/04C6.png differ diff --git a/fonts/TewiFont/04C7.png b/fonts/TewiFont/04C7.png new file mode 100644 index 000000000..dd90a4849 Binary files /dev/null and b/fonts/TewiFont/04C7.png differ diff --git a/fonts/TewiFont/04C8.png b/fonts/TewiFont/04C8.png new file mode 100644 index 000000000..9f819e0bc Binary files /dev/null and b/fonts/TewiFont/04C8.png differ diff --git a/fonts/TewiFont/04C9.png b/fonts/TewiFont/04C9.png new file mode 100644 index 000000000..d3ce88020 Binary files /dev/null and b/fonts/TewiFont/04C9.png differ diff --git a/fonts/TewiFont/04CA.png b/fonts/TewiFont/04CA.png new file mode 100644 index 000000000..2b8b99af1 Binary files /dev/null and b/fonts/TewiFont/04CA.png differ diff --git a/fonts/TewiFont/04CB.png b/fonts/TewiFont/04CB.png new file mode 100644 index 000000000..a79494761 Binary files /dev/null and b/fonts/TewiFont/04CB.png differ diff --git a/fonts/TewiFont/04CC.png b/fonts/TewiFont/04CC.png new file mode 100644 index 000000000..1d5d7767e Binary files /dev/null and b/fonts/TewiFont/04CC.png differ diff --git a/fonts/TewiFont/04CD.png b/fonts/TewiFont/04CD.png new file mode 100644 index 000000000..f7532523d Binary files /dev/null and b/fonts/TewiFont/04CD.png differ diff --git a/fonts/TewiFont/04CE.png b/fonts/TewiFont/04CE.png new file mode 100644 index 000000000..058c0d3d0 Binary files /dev/null and b/fonts/TewiFont/04CE.png differ diff --git a/fonts/TewiFont/04CF.png b/fonts/TewiFont/04CF.png new file mode 100644 index 000000000..680f2aaec Binary files /dev/null and b/fonts/TewiFont/04CF.png differ diff --git a/fonts/TewiFont/04D0.png b/fonts/TewiFont/04D0.png new file mode 100644 index 000000000..fff4fea48 Binary files /dev/null and b/fonts/TewiFont/04D0.png differ diff --git a/fonts/TewiFont/04D1.png b/fonts/TewiFont/04D1.png new file mode 100644 index 000000000..5dc86e1d4 Binary files /dev/null and b/fonts/TewiFont/04D1.png differ diff --git a/fonts/TewiFont/04D2.png b/fonts/TewiFont/04D2.png new file mode 100644 index 000000000..af8ee56b2 Binary files /dev/null and b/fonts/TewiFont/04D2.png differ diff --git a/fonts/TewiFont/04D3.png b/fonts/TewiFont/04D3.png new file mode 100644 index 000000000..82a943e8d Binary files /dev/null and b/fonts/TewiFont/04D3.png differ diff --git a/fonts/TewiFont/04D4.png b/fonts/TewiFont/04D4.png new file mode 100644 index 000000000..86429b4e7 Binary files /dev/null and b/fonts/TewiFont/04D4.png differ diff --git a/fonts/TewiFont/04D5.png b/fonts/TewiFont/04D5.png new file mode 100644 index 000000000..29858917f Binary files /dev/null and b/fonts/TewiFont/04D5.png differ diff --git a/fonts/TewiFont/04D6.png b/fonts/TewiFont/04D6.png new file mode 100644 index 000000000..a3c2a5b5c Binary files /dev/null and b/fonts/TewiFont/04D6.png differ diff --git a/fonts/TewiFont/04D7.png b/fonts/TewiFont/04D7.png new file mode 100644 index 000000000..e6f1d65a5 Binary files /dev/null and b/fonts/TewiFont/04D7.png differ diff --git a/fonts/TewiFont/04D8.png b/fonts/TewiFont/04D8.png new file mode 100644 index 000000000..e13fceda6 Binary files /dev/null and b/fonts/TewiFont/04D8.png differ diff --git a/fonts/TewiFont/04D9.png b/fonts/TewiFont/04D9.png new file mode 100644 index 000000000..e43be502f Binary files /dev/null and b/fonts/TewiFont/04D9.png differ diff --git a/fonts/TewiFont/04DA.png b/fonts/TewiFont/04DA.png new file mode 100644 index 000000000..b0e5c2c86 Binary files /dev/null and b/fonts/TewiFont/04DA.png differ diff --git a/fonts/TewiFont/04DB.png b/fonts/TewiFont/04DB.png new file mode 100644 index 000000000..3dd8a7227 Binary files /dev/null and b/fonts/TewiFont/04DB.png differ diff --git a/fonts/TewiFont/04DC.png b/fonts/TewiFont/04DC.png new file mode 100644 index 000000000..949ddae2a Binary files /dev/null and b/fonts/TewiFont/04DC.png differ diff --git a/fonts/TewiFont/04DD.png b/fonts/TewiFont/04DD.png new file mode 100644 index 000000000..9612a713e Binary files /dev/null and b/fonts/TewiFont/04DD.png differ diff --git a/fonts/TewiFont/04DE.png b/fonts/TewiFont/04DE.png new file mode 100644 index 000000000..f52dea535 Binary files /dev/null and b/fonts/TewiFont/04DE.png differ diff --git a/fonts/TewiFont/04DF.png b/fonts/TewiFont/04DF.png new file mode 100644 index 000000000..ca831df0a Binary files /dev/null and b/fonts/TewiFont/04DF.png differ diff --git a/fonts/TewiFont/04E0.png b/fonts/TewiFont/04E0.png new file mode 100644 index 000000000..0f58b2446 Binary files /dev/null and b/fonts/TewiFont/04E0.png differ diff --git a/fonts/TewiFont/04E1.png b/fonts/TewiFont/04E1.png new file mode 100644 index 000000000..b77fed253 Binary files /dev/null and b/fonts/TewiFont/04E1.png differ diff --git a/fonts/TewiFont/04E2.png b/fonts/TewiFont/04E2.png new file mode 100644 index 000000000..cbce2ea91 Binary files /dev/null and b/fonts/TewiFont/04E2.png differ diff --git a/fonts/TewiFont/04E3.png b/fonts/TewiFont/04E3.png new file mode 100644 index 000000000..3bc5113cd Binary files /dev/null and b/fonts/TewiFont/04E3.png differ diff --git a/fonts/TewiFont/04E4.png b/fonts/TewiFont/04E4.png new file mode 100644 index 000000000..d9cb8d87f Binary files /dev/null and b/fonts/TewiFont/04E4.png differ diff --git a/fonts/TewiFont/04E5.png b/fonts/TewiFont/04E5.png new file mode 100644 index 000000000..8dbc71c03 Binary files /dev/null and b/fonts/TewiFont/04E5.png differ diff --git a/fonts/TewiFont/04E6.png b/fonts/TewiFont/04E6.png new file mode 100644 index 000000000..c11d922f1 Binary files /dev/null and b/fonts/TewiFont/04E6.png differ diff --git a/fonts/TewiFont/04E7.png b/fonts/TewiFont/04E7.png new file mode 100644 index 000000000..4dfe24658 Binary files /dev/null and b/fonts/TewiFont/04E7.png differ diff --git a/fonts/TewiFont/04E8.png b/fonts/TewiFont/04E8.png new file mode 100644 index 000000000..0bcdb4e34 Binary files /dev/null and b/fonts/TewiFont/04E8.png differ diff --git a/fonts/TewiFont/04E9.png b/fonts/TewiFont/04E9.png new file mode 100644 index 000000000..4677e8fe1 Binary files /dev/null and b/fonts/TewiFont/04E9.png differ diff --git a/fonts/TewiFont/04EA.png b/fonts/TewiFont/04EA.png new file mode 100644 index 000000000..19a2bdd55 Binary files /dev/null and b/fonts/TewiFont/04EA.png differ diff --git a/fonts/TewiFont/04EB.png b/fonts/TewiFont/04EB.png new file mode 100644 index 000000000..7fbbeed98 Binary files /dev/null and b/fonts/TewiFont/04EB.png differ diff --git a/fonts/TewiFont/04EC.png b/fonts/TewiFont/04EC.png new file mode 100644 index 000000000..36e0303b6 Binary files /dev/null and b/fonts/TewiFont/04EC.png differ diff --git a/fonts/TewiFont/04ED.png b/fonts/TewiFont/04ED.png new file mode 100644 index 000000000..52e82ca15 Binary files /dev/null and b/fonts/TewiFont/04ED.png differ diff --git a/fonts/TewiFont/04EE.png b/fonts/TewiFont/04EE.png new file mode 100644 index 000000000..f2ceba8ec Binary files /dev/null and b/fonts/TewiFont/04EE.png differ diff --git a/fonts/TewiFont/04EF.png b/fonts/TewiFont/04EF.png new file mode 100644 index 000000000..600800337 Binary files /dev/null and b/fonts/TewiFont/04EF.png differ diff --git a/fonts/TewiFont/04F0.png b/fonts/TewiFont/04F0.png new file mode 100644 index 000000000..eed3fa7c6 Binary files /dev/null and b/fonts/TewiFont/04F0.png differ diff --git a/fonts/TewiFont/04F1.png b/fonts/TewiFont/04F1.png new file mode 100644 index 000000000..e861af911 Binary files /dev/null and b/fonts/TewiFont/04F1.png differ diff --git a/fonts/TewiFont/04F2.png b/fonts/TewiFont/04F2.png new file mode 100644 index 000000000..e873b09ae Binary files /dev/null and b/fonts/TewiFont/04F2.png differ diff --git a/fonts/TewiFont/04F3.png b/fonts/TewiFont/04F3.png new file mode 100644 index 000000000..e727b26b5 Binary files /dev/null and b/fonts/TewiFont/04F3.png differ diff --git a/fonts/TewiFont/04F4.png b/fonts/TewiFont/04F4.png new file mode 100644 index 000000000..e3c7c9ed0 Binary files /dev/null and b/fonts/TewiFont/04F4.png differ diff --git a/fonts/TewiFont/04F5.png b/fonts/TewiFont/04F5.png new file mode 100644 index 000000000..26c76cdf4 Binary files /dev/null and b/fonts/TewiFont/04F5.png differ diff --git a/fonts/TewiFont/04F6.png b/fonts/TewiFont/04F6.png new file mode 100644 index 000000000..93a42add7 Binary files /dev/null and b/fonts/TewiFont/04F6.png differ diff --git a/fonts/TewiFont/04F7.png b/fonts/TewiFont/04F7.png new file mode 100644 index 000000000..f3ff2b9b6 Binary files /dev/null and b/fonts/TewiFont/04F7.png differ diff --git a/fonts/TewiFont/04F8.png b/fonts/TewiFont/04F8.png new file mode 100644 index 000000000..7a38b1aa5 Binary files /dev/null and b/fonts/TewiFont/04F8.png differ diff --git a/fonts/TewiFont/04F9.png b/fonts/TewiFont/04F9.png new file mode 100644 index 000000000..b1a35134b Binary files /dev/null and b/fonts/TewiFont/04F9.png differ diff --git a/fonts/TewiFont/04FA.png b/fonts/TewiFont/04FA.png new file mode 100644 index 000000000..70be064d0 Binary files /dev/null and b/fonts/TewiFont/04FA.png differ diff --git a/fonts/TewiFont/04FB.png b/fonts/TewiFont/04FB.png new file mode 100644 index 000000000..596e1c01a Binary files /dev/null and b/fonts/TewiFont/04FB.png differ diff --git a/fonts/TewiFont/04FC.png b/fonts/TewiFont/04FC.png new file mode 100644 index 000000000..87fee26d2 Binary files /dev/null and b/fonts/TewiFont/04FC.png differ diff --git a/fonts/TewiFont/04FD.png b/fonts/TewiFont/04FD.png new file mode 100644 index 000000000..20afdc8b2 Binary files /dev/null and b/fonts/TewiFont/04FD.png differ diff --git a/fonts/TewiFont/04FE.png b/fonts/TewiFont/04FE.png new file mode 100644 index 000000000..cd1170ae2 Binary files /dev/null and b/fonts/TewiFont/04FE.png differ diff --git a/fonts/TewiFont/04FF.png b/fonts/TewiFont/04FF.png new file mode 100644 index 000000000..2d870314a Binary files /dev/null and b/fonts/TewiFont/04FF.png differ diff --git a/fonts/TewiFont/05BE.png b/fonts/TewiFont/05BE.png new file mode 100644 index 000000000..201c2bfb7 Binary files /dev/null and b/fonts/TewiFont/05BE.png differ diff --git a/fonts/TewiFont/05C0.png b/fonts/TewiFont/05C0.png new file mode 100644 index 000000000..2b3e9334c Binary files /dev/null and b/fonts/TewiFont/05C0.png differ diff --git a/fonts/TewiFont/05C3.png b/fonts/TewiFont/05C3.png new file mode 100644 index 000000000..ce575d59c Binary files /dev/null and b/fonts/TewiFont/05C3.png differ diff --git a/fonts/TewiFont/05C6.png b/fonts/TewiFont/05C6.png new file mode 100644 index 000000000..96df251af Binary files /dev/null and b/fonts/TewiFont/05C6.png differ diff --git a/fonts/TewiFont/05D0.png b/fonts/TewiFont/05D0.png new file mode 100644 index 000000000..ab205bb28 Binary files /dev/null and b/fonts/TewiFont/05D0.png differ diff --git a/fonts/TewiFont/05D1.png b/fonts/TewiFont/05D1.png new file mode 100644 index 000000000..7c03f39e2 Binary files /dev/null and b/fonts/TewiFont/05D1.png differ diff --git a/fonts/TewiFont/05D2.png b/fonts/TewiFont/05D2.png new file mode 100644 index 000000000..c150ea098 Binary files /dev/null and b/fonts/TewiFont/05D2.png differ diff --git a/fonts/TewiFont/05D3.png b/fonts/TewiFont/05D3.png new file mode 100644 index 000000000..e02a3d4ff Binary files /dev/null and b/fonts/TewiFont/05D3.png differ diff --git a/fonts/TewiFont/05D4.png b/fonts/TewiFont/05D4.png new file mode 100644 index 000000000..81fed5ca6 Binary files /dev/null and b/fonts/TewiFont/05D4.png differ diff --git a/fonts/TewiFont/05D5.png b/fonts/TewiFont/05D5.png new file mode 100644 index 000000000..f067d7546 Binary files /dev/null and b/fonts/TewiFont/05D5.png differ diff --git a/fonts/TewiFont/05D6.png b/fonts/TewiFont/05D6.png new file mode 100644 index 000000000..af3880d5c Binary files /dev/null and b/fonts/TewiFont/05D6.png differ diff --git a/fonts/TewiFont/05D7.png b/fonts/TewiFont/05D7.png new file mode 100644 index 000000000..9faa306e7 Binary files /dev/null and b/fonts/TewiFont/05D7.png differ diff --git a/fonts/TewiFont/05D8.png b/fonts/TewiFont/05D8.png new file mode 100644 index 000000000..fc5225533 Binary files /dev/null and b/fonts/TewiFont/05D8.png differ diff --git a/fonts/TewiFont/05D9.png b/fonts/TewiFont/05D9.png new file mode 100644 index 000000000..70f334cfb Binary files /dev/null and b/fonts/TewiFont/05D9.png differ diff --git a/fonts/TewiFont/05DA.png b/fonts/TewiFont/05DA.png new file mode 100644 index 000000000..a1114c78d Binary files /dev/null and b/fonts/TewiFont/05DA.png differ diff --git a/fonts/TewiFont/05DB.png b/fonts/TewiFont/05DB.png new file mode 100644 index 000000000..f2eecc467 Binary files /dev/null and b/fonts/TewiFont/05DB.png differ diff --git a/fonts/TewiFont/05DC.png b/fonts/TewiFont/05DC.png new file mode 100644 index 000000000..aec564e72 Binary files /dev/null and b/fonts/TewiFont/05DC.png differ diff --git a/fonts/TewiFont/05DD.png b/fonts/TewiFont/05DD.png new file mode 100644 index 000000000..c8d171788 Binary files /dev/null and b/fonts/TewiFont/05DD.png differ diff --git a/fonts/TewiFont/05DE.png b/fonts/TewiFont/05DE.png new file mode 100644 index 000000000..29ec92b81 Binary files /dev/null and b/fonts/TewiFont/05DE.png differ diff --git a/fonts/TewiFont/05DF.png b/fonts/TewiFont/05DF.png new file mode 100644 index 000000000..7eeb1d194 Binary files /dev/null and b/fonts/TewiFont/05DF.png differ diff --git a/fonts/TewiFont/05E0.png b/fonts/TewiFont/05E0.png new file mode 100644 index 000000000..fdcf4f649 Binary files /dev/null and b/fonts/TewiFont/05E0.png differ diff --git a/fonts/TewiFont/05E1.png b/fonts/TewiFont/05E1.png new file mode 100644 index 000000000..4f808b309 Binary files /dev/null and b/fonts/TewiFont/05E1.png differ diff --git a/fonts/TewiFont/05E2.png b/fonts/TewiFont/05E2.png new file mode 100644 index 000000000..af0e9b24b Binary files /dev/null and b/fonts/TewiFont/05E2.png differ diff --git a/fonts/TewiFont/05E3.png b/fonts/TewiFont/05E3.png new file mode 100644 index 000000000..abb4616aa Binary files /dev/null and b/fonts/TewiFont/05E3.png differ diff --git a/fonts/TewiFont/05E4.png b/fonts/TewiFont/05E4.png new file mode 100644 index 000000000..aa8488d65 Binary files /dev/null and b/fonts/TewiFont/05E4.png differ diff --git a/fonts/TewiFont/05E5.png b/fonts/TewiFont/05E5.png new file mode 100644 index 000000000..1d4910e8c Binary files /dev/null and b/fonts/TewiFont/05E5.png differ diff --git a/fonts/TewiFont/05E6.png b/fonts/TewiFont/05E6.png new file mode 100644 index 000000000..8894d506e Binary files /dev/null and b/fonts/TewiFont/05E6.png differ diff --git a/fonts/TewiFont/05E7.png b/fonts/TewiFont/05E7.png new file mode 100644 index 000000000..8ed6d72cb Binary files /dev/null and b/fonts/TewiFont/05E7.png differ diff --git a/fonts/TewiFont/05E8.png b/fonts/TewiFont/05E8.png new file mode 100644 index 000000000..9cb21cd0b Binary files /dev/null and b/fonts/TewiFont/05E8.png differ diff --git a/fonts/TewiFont/05E9.png b/fonts/TewiFont/05E9.png new file mode 100644 index 000000000..33c6ba643 Binary files /dev/null and b/fonts/TewiFont/05E9.png differ diff --git a/fonts/TewiFont/05EA.png b/fonts/TewiFont/05EA.png new file mode 100644 index 000000000..16d6707ae Binary files /dev/null and b/fonts/TewiFont/05EA.png differ diff --git a/fonts/TewiFont/05EB.png b/fonts/TewiFont/05EB.png new file mode 100644 index 000000000..5e1cdbb88 Binary files /dev/null and b/fonts/TewiFont/05EB.png differ diff --git a/fonts/TewiFont/05EC.png b/fonts/TewiFont/05EC.png new file mode 100644 index 000000000..59124d16b Binary files /dev/null and b/fonts/TewiFont/05EC.png differ diff --git a/fonts/TewiFont/05ED.png b/fonts/TewiFont/05ED.png new file mode 100644 index 000000000..a7184c2e6 Binary files /dev/null and b/fonts/TewiFont/05ED.png differ diff --git a/fonts/TewiFont/05EE.png b/fonts/TewiFont/05EE.png new file mode 100644 index 000000000..c825cfaa6 Binary files /dev/null and b/fonts/TewiFont/05EE.png differ diff --git a/fonts/TewiFont/05EF.png b/fonts/TewiFont/05EF.png new file mode 100644 index 000000000..cceadfba6 Binary files /dev/null and b/fonts/TewiFont/05EF.png differ diff --git a/fonts/TewiFont/0CA0.png b/fonts/TewiFont/0CA0.png new file mode 100644 index 000000000..86f5b4430 Binary files /dev/null and b/fonts/TewiFont/0CA0.png differ diff --git a/fonts/TewiFont/0E3F.png b/fonts/TewiFont/0E3F.png new file mode 100644 index 000000000..0b3de9120 Binary files /dev/null and b/fonts/TewiFont/0E3F.png differ diff --git a/fonts/TewiFont/16A0.png b/fonts/TewiFont/16A0.png new file mode 100644 index 000000000..c86a6e8a0 Binary files /dev/null and b/fonts/TewiFont/16A0.png differ diff --git a/fonts/TewiFont/16A2.png b/fonts/TewiFont/16A2.png new file mode 100644 index 000000000..a742d6e57 Binary files /dev/null and b/fonts/TewiFont/16A2.png differ diff --git a/fonts/TewiFont/16A3.png b/fonts/TewiFont/16A3.png new file mode 100644 index 000000000..faa3a073e Binary files /dev/null and b/fonts/TewiFont/16A3.png differ diff --git a/fonts/TewiFont/16A5.png b/fonts/TewiFont/16A5.png new file mode 100644 index 000000000..a6eddab96 Binary files /dev/null and b/fonts/TewiFont/16A5.png differ diff --git a/fonts/TewiFont/16A6.png b/fonts/TewiFont/16A6.png new file mode 100644 index 000000000..9cffe973f Binary files /dev/null and b/fonts/TewiFont/16A6.png differ diff --git a/fonts/TewiFont/16A8.png b/fonts/TewiFont/16A8.png new file mode 100644 index 000000000..e4245be8e Binary files /dev/null and b/fonts/TewiFont/16A8.png differ diff --git a/fonts/TewiFont/16A9.png b/fonts/TewiFont/16A9.png new file mode 100644 index 000000000..6a7ec860a Binary files /dev/null and b/fonts/TewiFont/16A9.png differ diff --git a/fonts/TewiFont/16AA.png b/fonts/TewiFont/16AA.png new file mode 100644 index 000000000..5d7db2f32 Binary files /dev/null and b/fonts/TewiFont/16AA.png differ diff --git a/fonts/TewiFont/16AB.png b/fonts/TewiFont/16AB.png new file mode 100644 index 000000000..560190d72 Binary files /dev/null and b/fonts/TewiFont/16AB.png differ diff --git a/fonts/TewiFont/16AC.png b/fonts/TewiFont/16AC.png new file mode 100644 index 000000000..55543fede Binary files /dev/null and b/fonts/TewiFont/16AC.png differ diff --git a/fonts/TewiFont/1E00.png b/fonts/TewiFont/1E00.png new file mode 100644 index 000000000..47ac5df3d Binary files /dev/null and b/fonts/TewiFont/1E00.png differ diff --git a/fonts/TewiFont/1E01.png b/fonts/TewiFont/1E01.png new file mode 100644 index 000000000..1941e5bea Binary files /dev/null and b/fonts/TewiFont/1E01.png differ diff --git a/fonts/TewiFont/1E02.png b/fonts/TewiFont/1E02.png new file mode 100644 index 000000000..dc06810ca Binary files /dev/null and b/fonts/TewiFont/1E02.png differ diff --git a/fonts/TewiFont/1E03.png b/fonts/TewiFont/1E03.png new file mode 100644 index 000000000..ade941a65 Binary files /dev/null and b/fonts/TewiFont/1E03.png differ diff --git a/fonts/TewiFont/1E04.png b/fonts/TewiFont/1E04.png new file mode 100644 index 000000000..1e658dd35 Binary files /dev/null and b/fonts/TewiFont/1E04.png differ diff --git a/fonts/TewiFont/1E05.png b/fonts/TewiFont/1E05.png new file mode 100644 index 000000000..8d01b66b9 Binary files /dev/null and b/fonts/TewiFont/1E05.png differ diff --git a/fonts/TewiFont/1E06.png b/fonts/TewiFont/1E06.png new file mode 100644 index 000000000..3a7211379 Binary files /dev/null and b/fonts/TewiFont/1E06.png differ diff --git a/fonts/TewiFont/1E07.png b/fonts/TewiFont/1E07.png new file mode 100644 index 000000000..2a356b25c Binary files /dev/null and b/fonts/TewiFont/1E07.png differ diff --git a/fonts/TewiFont/1E08.png b/fonts/TewiFont/1E08.png new file mode 100644 index 000000000..8c9c06eda Binary files /dev/null and b/fonts/TewiFont/1E08.png differ diff --git a/fonts/TewiFont/1E09.png b/fonts/TewiFont/1E09.png new file mode 100644 index 000000000..7a00e0773 Binary files /dev/null and b/fonts/TewiFont/1E09.png differ diff --git a/fonts/TewiFont/1E0A.png b/fonts/TewiFont/1E0A.png new file mode 100644 index 000000000..73b1f3622 Binary files /dev/null and b/fonts/TewiFont/1E0A.png differ diff --git a/fonts/TewiFont/1E0B.png b/fonts/TewiFont/1E0B.png new file mode 100644 index 000000000..82e68ebc8 Binary files /dev/null and b/fonts/TewiFont/1E0B.png differ diff --git a/fonts/TewiFont/1E0C.png b/fonts/TewiFont/1E0C.png new file mode 100644 index 000000000..897c1ce3c Binary files /dev/null and b/fonts/TewiFont/1E0C.png differ diff --git a/fonts/TewiFont/1E0D.png b/fonts/TewiFont/1E0D.png new file mode 100644 index 000000000..986c4e8f5 Binary files /dev/null and b/fonts/TewiFont/1E0D.png differ diff --git a/fonts/TewiFont/1E0E.png b/fonts/TewiFont/1E0E.png new file mode 100644 index 000000000..9868dd534 Binary files /dev/null and b/fonts/TewiFont/1E0E.png differ diff --git a/fonts/TewiFont/1E0F.png b/fonts/TewiFont/1E0F.png new file mode 100644 index 000000000..84ae5d882 Binary files /dev/null and b/fonts/TewiFont/1E0F.png differ diff --git a/fonts/TewiFont/1E10.png b/fonts/TewiFont/1E10.png new file mode 100644 index 000000000..bc2031776 Binary files /dev/null and b/fonts/TewiFont/1E10.png differ diff --git a/fonts/TewiFont/1E11.png b/fonts/TewiFont/1E11.png new file mode 100644 index 000000000..0964bbf19 Binary files /dev/null and b/fonts/TewiFont/1E11.png differ diff --git a/fonts/TewiFont/1E12.png b/fonts/TewiFont/1E12.png new file mode 100644 index 000000000..742c63ca2 Binary files /dev/null and b/fonts/TewiFont/1E12.png differ diff --git a/fonts/TewiFont/1E13.png b/fonts/TewiFont/1E13.png new file mode 100644 index 000000000..2543c1d9d Binary files /dev/null and b/fonts/TewiFont/1E13.png differ diff --git a/fonts/TewiFont/1E14.png b/fonts/TewiFont/1E14.png new file mode 100644 index 000000000..ebf7ffcdd Binary files /dev/null and b/fonts/TewiFont/1E14.png differ diff --git a/fonts/TewiFont/1E15.png b/fonts/TewiFont/1E15.png new file mode 100644 index 000000000..7a7bfb0d1 Binary files /dev/null and b/fonts/TewiFont/1E15.png differ diff --git a/fonts/TewiFont/1E16.png b/fonts/TewiFont/1E16.png new file mode 100644 index 000000000..3a53041b5 Binary files /dev/null and b/fonts/TewiFont/1E16.png differ diff --git a/fonts/TewiFont/1E17.png b/fonts/TewiFont/1E17.png new file mode 100644 index 000000000..48acacd70 Binary files /dev/null and b/fonts/TewiFont/1E17.png differ diff --git a/fonts/TewiFont/1E18.png b/fonts/TewiFont/1E18.png new file mode 100644 index 000000000..fed4625ae Binary files /dev/null and b/fonts/TewiFont/1E18.png differ diff --git a/fonts/TewiFont/1E19.png b/fonts/TewiFont/1E19.png new file mode 100644 index 000000000..a9903bf16 Binary files /dev/null and b/fonts/TewiFont/1E19.png differ diff --git a/fonts/TewiFont/1E1A.png b/fonts/TewiFont/1E1A.png new file mode 100644 index 000000000..5f6f91e28 Binary files /dev/null and b/fonts/TewiFont/1E1A.png differ diff --git a/fonts/TewiFont/1E1B.png b/fonts/TewiFont/1E1B.png new file mode 100644 index 000000000..0742efc5e Binary files /dev/null and b/fonts/TewiFont/1E1B.png differ diff --git a/fonts/TewiFont/1E1C.png b/fonts/TewiFont/1E1C.png new file mode 100644 index 000000000..38a1d858a Binary files /dev/null and b/fonts/TewiFont/1E1C.png differ diff --git a/fonts/TewiFont/1E1D.png b/fonts/TewiFont/1E1D.png new file mode 100644 index 000000000..5f6547cca Binary files /dev/null and b/fonts/TewiFont/1E1D.png differ diff --git a/fonts/TewiFont/1E1E.png b/fonts/TewiFont/1E1E.png new file mode 100644 index 000000000..2cf76aa0f Binary files /dev/null and b/fonts/TewiFont/1E1E.png differ diff --git a/fonts/TewiFont/1E1F.png b/fonts/TewiFont/1E1F.png new file mode 100644 index 000000000..ecce77024 Binary files /dev/null and b/fonts/TewiFont/1E1F.png differ diff --git a/fonts/TewiFont/1E20.png b/fonts/TewiFont/1E20.png new file mode 100644 index 000000000..d1d4822a5 Binary files /dev/null and b/fonts/TewiFont/1E20.png differ diff --git a/fonts/TewiFont/1E21.png b/fonts/TewiFont/1E21.png new file mode 100644 index 000000000..4d12e774a Binary files /dev/null and b/fonts/TewiFont/1E21.png differ diff --git a/fonts/TewiFont/1E22.png b/fonts/TewiFont/1E22.png new file mode 100644 index 000000000..aa5ca0175 Binary files /dev/null and b/fonts/TewiFont/1E22.png differ diff --git a/fonts/TewiFont/1E23.png b/fonts/TewiFont/1E23.png new file mode 100644 index 000000000..104e73721 Binary files /dev/null and b/fonts/TewiFont/1E23.png differ diff --git a/fonts/TewiFont/1E24.png b/fonts/TewiFont/1E24.png new file mode 100644 index 000000000..da522256c Binary files /dev/null and b/fonts/TewiFont/1E24.png differ diff --git a/fonts/TewiFont/1E25.png b/fonts/TewiFont/1E25.png new file mode 100644 index 000000000..1424b9f7f Binary files /dev/null and b/fonts/TewiFont/1E25.png differ diff --git a/fonts/TewiFont/1E26.png b/fonts/TewiFont/1E26.png new file mode 100644 index 000000000..95022345f Binary files /dev/null and b/fonts/TewiFont/1E26.png differ diff --git a/fonts/TewiFont/1E27.png b/fonts/TewiFont/1E27.png new file mode 100644 index 000000000..b1e4c23a5 Binary files /dev/null and b/fonts/TewiFont/1E27.png differ diff --git a/fonts/TewiFont/1E28.png b/fonts/TewiFont/1E28.png new file mode 100644 index 000000000..742b6d2c8 Binary files /dev/null and b/fonts/TewiFont/1E28.png differ diff --git a/fonts/TewiFont/1E29.png b/fonts/TewiFont/1E29.png new file mode 100644 index 000000000..eea21970e Binary files /dev/null and b/fonts/TewiFont/1E29.png differ diff --git a/fonts/TewiFont/1E2A.png b/fonts/TewiFont/1E2A.png new file mode 100644 index 000000000..94c40bc53 Binary files /dev/null and b/fonts/TewiFont/1E2A.png differ diff --git a/fonts/TewiFont/1E2B.png b/fonts/TewiFont/1E2B.png new file mode 100644 index 000000000..0974c4774 Binary files /dev/null and b/fonts/TewiFont/1E2B.png differ diff --git a/fonts/TewiFont/1E2C.png b/fonts/TewiFont/1E2C.png new file mode 100644 index 000000000..8e7cddb7b Binary files /dev/null and b/fonts/TewiFont/1E2C.png differ diff --git a/fonts/TewiFont/1E2D.png b/fonts/TewiFont/1E2D.png new file mode 100644 index 000000000..410dc9af1 Binary files /dev/null and b/fonts/TewiFont/1E2D.png differ diff --git a/fonts/TewiFont/1E2E.png b/fonts/TewiFont/1E2E.png new file mode 100644 index 000000000..666f4f458 Binary files /dev/null and b/fonts/TewiFont/1E2E.png differ diff --git a/fonts/TewiFont/1E2F.png b/fonts/TewiFont/1E2F.png new file mode 100644 index 000000000..9cd244711 Binary files /dev/null and b/fonts/TewiFont/1E2F.png differ diff --git a/fonts/TewiFont/1E30.png b/fonts/TewiFont/1E30.png new file mode 100644 index 000000000..2ef04e709 Binary files /dev/null and b/fonts/TewiFont/1E30.png differ diff --git a/fonts/TewiFont/1E31.png b/fonts/TewiFont/1E31.png new file mode 100644 index 000000000..a22dd7419 Binary files /dev/null and b/fonts/TewiFont/1E31.png differ diff --git a/fonts/TewiFont/1E32.png b/fonts/TewiFont/1E32.png new file mode 100644 index 000000000..ed991c3a1 Binary files /dev/null and b/fonts/TewiFont/1E32.png differ diff --git a/fonts/TewiFont/1E33.png b/fonts/TewiFont/1E33.png new file mode 100644 index 000000000..3e7185ad7 Binary files /dev/null and b/fonts/TewiFont/1E33.png differ diff --git a/fonts/TewiFont/1E34.png b/fonts/TewiFont/1E34.png new file mode 100644 index 000000000..11cf9984e Binary files /dev/null and b/fonts/TewiFont/1E34.png differ diff --git a/fonts/TewiFont/1E35.png b/fonts/TewiFont/1E35.png new file mode 100644 index 000000000..17610cc70 Binary files /dev/null and b/fonts/TewiFont/1E35.png differ diff --git a/fonts/TewiFont/1E36.png b/fonts/TewiFont/1E36.png new file mode 100644 index 000000000..48c201536 Binary files /dev/null and b/fonts/TewiFont/1E36.png differ diff --git a/fonts/TewiFont/1E37.png b/fonts/TewiFont/1E37.png new file mode 100644 index 000000000..88fca8535 Binary files /dev/null and b/fonts/TewiFont/1E37.png differ diff --git a/fonts/TewiFont/1E38.png b/fonts/TewiFont/1E38.png new file mode 100644 index 000000000..349744279 Binary files /dev/null and b/fonts/TewiFont/1E38.png differ diff --git a/fonts/TewiFont/1E39.png b/fonts/TewiFont/1E39.png new file mode 100644 index 000000000..b5bcff87c Binary files /dev/null and b/fonts/TewiFont/1E39.png differ diff --git a/fonts/TewiFont/1E3A.png b/fonts/TewiFont/1E3A.png new file mode 100644 index 000000000..e35943a13 Binary files /dev/null and b/fonts/TewiFont/1E3A.png differ diff --git a/fonts/TewiFont/1E3B.png b/fonts/TewiFont/1E3B.png new file mode 100644 index 000000000..bea74fd35 Binary files /dev/null and b/fonts/TewiFont/1E3B.png differ diff --git a/fonts/TewiFont/1E3C.png b/fonts/TewiFont/1E3C.png new file mode 100644 index 000000000..a5cdcc9ce Binary files /dev/null and b/fonts/TewiFont/1E3C.png differ diff --git a/fonts/TewiFont/1E3D.png b/fonts/TewiFont/1E3D.png new file mode 100644 index 000000000..7d4c590c2 Binary files /dev/null and b/fonts/TewiFont/1E3D.png differ diff --git a/fonts/TewiFont/1E3E.png b/fonts/TewiFont/1E3E.png new file mode 100644 index 000000000..8f2a045f2 Binary files /dev/null and b/fonts/TewiFont/1E3E.png differ diff --git a/fonts/TewiFont/1E3F.png b/fonts/TewiFont/1E3F.png new file mode 100644 index 000000000..5c06cda2c Binary files /dev/null and b/fonts/TewiFont/1E3F.png differ diff --git a/fonts/TewiFont/1E40.png b/fonts/TewiFont/1E40.png new file mode 100644 index 000000000..ea713bd54 Binary files /dev/null and b/fonts/TewiFont/1E40.png differ diff --git a/fonts/TewiFont/1E41.png b/fonts/TewiFont/1E41.png new file mode 100644 index 000000000..20dfc707d Binary files /dev/null and b/fonts/TewiFont/1E41.png differ diff --git a/fonts/TewiFont/1E42.png b/fonts/TewiFont/1E42.png new file mode 100644 index 000000000..5391ebeb6 Binary files /dev/null and b/fonts/TewiFont/1E42.png differ diff --git a/fonts/TewiFont/1E43.png b/fonts/TewiFont/1E43.png new file mode 100644 index 000000000..875b0ec52 Binary files /dev/null and b/fonts/TewiFont/1E43.png differ diff --git a/fonts/TewiFont/1E44.png b/fonts/TewiFont/1E44.png new file mode 100644 index 000000000..ab87c3d62 Binary files /dev/null and b/fonts/TewiFont/1E44.png differ diff --git a/fonts/TewiFont/1E45.png b/fonts/TewiFont/1E45.png new file mode 100644 index 000000000..c00a79ce6 Binary files /dev/null and b/fonts/TewiFont/1E45.png differ diff --git a/fonts/TewiFont/1E46.png b/fonts/TewiFont/1E46.png new file mode 100644 index 000000000..7ec3a358b Binary files /dev/null and b/fonts/TewiFont/1E46.png differ diff --git a/fonts/TewiFont/1E47.png b/fonts/TewiFont/1E47.png new file mode 100644 index 000000000..367b6eb3b Binary files /dev/null and b/fonts/TewiFont/1E47.png differ diff --git a/fonts/TewiFont/1E48.png b/fonts/TewiFont/1E48.png new file mode 100644 index 000000000..3a6de1844 Binary files /dev/null and b/fonts/TewiFont/1E48.png differ diff --git a/fonts/TewiFont/1E49.png b/fonts/TewiFont/1E49.png new file mode 100644 index 000000000..6d69d8d7e Binary files /dev/null and b/fonts/TewiFont/1E49.png differ diff --git a/fonts/TewiFont/1E4A.png b/fonts/TewiFont/1E4A.png new file mode 100644 index 000000000..07db31b11 Binary files /dev/null and b/fonts/TewiFont/1E4A.png differ diff --git a/fonts/TewiFont/1E4B.png b/fonts/TewiFont/1E4B.png new file mode 100644 index 000000000..0a8e85be1 Binary files /dev/null and b/fonts/TewiFont/1E4B.png differ diff --git a/fonts/TewiFont/1E4C.png b/fonts/TewiFont/1E4C.png new file mode 100644 index 000000000..d26703305 Binary files /dev/null and b/fonts/TewiFont/1E4C.png differ diff --git a/fonts/TewiFont/1E4D.png b/fonts/TewiFont/1E4D.png new file mode 100644 index 000000000..8636dcf76 Binary files /dev/null and b/fonts/TewiFont/1E4D.png differ diff --git a/fonts/TewiFont/1E4E.png b/fonts/TewiFont/1E4E.png new file mode 100644 index 000000000..efa4d5529 Binary files /dev/null and b/fonts/TewiFont/1E4E.png differ diff --git a/fonts/TewiFont/1E4F.png b/fonts/TewiFont/1E4F.png new file mode 100644 index 000000000..e32a53cef Binary files /dev/null and b/fonts/TewiFont/1E4F.png differ diff --git a/fonts/TewiFont/1E50.png b/fonts/TewiFont/1E50.png new file mode 100644 index 000000000..dab1e4d2f Binary files /dev/null and b/fonts/TewiFont/1E50.png differ diff --git a/fonts/TewiFont/1E51.png b/fonts/TewiFont/1E51.png new file mode 100644 index 000000000..4b6f01a91 Binary files /dev/null and b/fonts/TewiFont/1E51.png differ diff --git a/fonts/TewiFont/1E52.png b/fonts/TewiFont/1E52.png new file mode 100644 index 000000000..55489cb97 Binary files /dev/null and b/fonts/TewiFont/1E52.png differ diff --git a/fonts/TewiFont/1E53.png b/fonts/TewiFont/1E53.png new file mode 100644 index 000000000..d54b9d1c9 Binary files /dev/null and b/fonts/TewiFont/1E53.png differ diff --git a/fonts/TewiFont/1E54.png b/fonts/TewiFont/1E54.png new file mode 100644 index 000000000..ec0f85d11 Binary files /dev/null and b/fonts/TewiFont/1E54.png differ diff --git a/fonts/TewiFont/1E55.png b/fonts/TewiFont/1E55.png new file mode 100644 index 000000000..90325669c Binary files /dev/null and b/fonts/TewiFont/1E55.png differ diff --git a/fonts/TewiFont/1E56.png b/fonts/TewiFont/1E56.png new file mode 100644 index 000000000..3a220e8bc Binary files /dev/null and b/fonts/TewiFont/1E56.png differ diff --git a/fonts/TewiFont/1E57.png b/fonts/TewiFont/1E57.png new file mode 100644 index 000000000..8864b8244 Binary files /dev/null and b/fonts/TewiFont/1E57.png differ diff --git a/fonts/TewiFont/1E58.png b/fonts/TewiFont/1E58.png new file mode 100644 index 000000000..c746355f6 Binary files /dev/null and b/fonts/TewiFont/1E58.png differ diff --git a/fonts/TewiFont/1E59.png b/fonts/TewiFont/1E59.png new file mode 100644 index 000000000..085190e06 Binary files /dev/null and b/fonts/TewiFont/1E59.png differ diff --git a/fonts/TewiFont/1E5A.png b/fonts/TewiFont/1E5A.png new file mode 100644 index 000000000..bbea81906 Binary files /dev/null and b/fonts/TewiFont/1E5A.png differ diff --git a/fonts/TewiFont/1E5B.png b/fonts/TewiFont/1E5B.png new file mode 100644 index 000000000..2a505c94b Binary files /dev/null and b/fonts/TewiFont/1E5B.png differ diff --git a/fonts/TewiFont/1E5C.png b/fonts/TewiFont/1E5C.png new file mode 100644 index 000000000..cad0ab55d Binary files /dev/null and b/fonts/TewiFont/1E5C.png differ diff --git a/fonts/TewiFont/1E5D.png b/fonts/TewiFont/1E5D.png new file mode 100644 index 000000000..cab0c6930 Binary files /dev/null and b/fonts/TewiFont/1E5D.png differ diff --git a/fonts/TewiFont/1E5E.png b/fonts/TewiFont/1E5E.png new file mode 100644 index 000000000..e337f9f47 Binary files /dev/null and b/fonts/TewiFont/1E5E.png differ diff --git a/fonts/TewiFont/1E5F.png b/fonts/TewiFont/1E5F.png new file mode 100644 index 000000000..6c17d180b Binary files /dev/null and b/fonts/TewiFont/1E5F.png differ diff --git a/fonts/TewiFont/1E60.png b/fonts/TewiFont/1E60.png new file mode 100644 index 000000000..a7f13d520 Binary files /dev/null and b/fonts/TewiFont/1E60.png differ diff --git a/fonts/TewiFont/1E61.png b/fonts/TewiFont/1E61.png new file mode 100644 index 000000000..6bc09982b Binary files /dev/null and b/fonts/TewiFont/1E61.png differ diff --git a/fonts/TewiFont/1E62.png b/fonts/TewiFont/1E62.png new file mode 100644 index 000000000..fe993f5be Binary files /dev/null and b/fonts/TewiFont/1E62.png differ diff --git a/fonts/TewiFont/1E63.png b/fonts/TewiFont/1E63.png new file mode 100644 index 000000000..f8f5c824b Binary files /dev/null and b/fonts/TewiFont/1E63.png differ diff --git a/fonts/TewiFont/1E64.png b/fonts/TewiFont/1E64.png new file mode 100644 index 000000000..d48b3bd97 Binary files /dev/null and b/fonts/TewiFont/1E64.png differ diff --git a/fonts/TewiFont/1E65.png b/fonts/TewiFont/1E65.png new file mode 100644 index 000000000..0a636b6e7 Binary files /dev/null and b/fonts/TewiFont/1E65.png differ diff --git a/fonts/TewiFont/1E66.png b/fonts/TewiFont/1E66.png new file mode 100644 index 000000000..17760e5a7 Binary files /dev/null and b/fonts/TewiFont/1E66.png differ diff --git a/fonts/TewiFont/1E67.png b/fonts/TewiFont/1E67.png new file mode 100644 index 000000000..c5b3544af Binary files /dev/null and b/fonts/TewiFont/1E67.png differ diff --git a/fonts/TewiFont/1E68.png b/fonts/TewiFont/1E68.png new file mode 100644 index 000000000..bb9961f15 Binary files /dev/null and b/fonts/TewiFont/1E68.png differ diff --git a/fonts/TewiFont/1E69.png b/fonts/TewiFont/1E69.png new file mode 100644 index 000000000..88ff1ebd4 Binary files /dev/null and b/fonts/TewiFont/1E69.png differ diff --git a/fonts/TewiFont/1E6A.png b/fonts/TewiFont/1E6A.png new file mode 100644 index 000000000..fac60da7e Binary files /dev/null and b/fonts/TewiFont/1E6A.png differ diff --git a/fonts/TewiFont/1E6B.png b/fonts/TewiFont/1E6B.png new file mode 100644 index 000000000..49f666a9d Binary files /dev/null and b/fonts/TewiFont/1E6B.png differ diff --git a/fonts/TewiFont/1E6C.png b/fonts/TewiFont/1E6C.png new file mode 100644 index 000000000..812e7b19d Binary files /dev/null and b/fonts/TewiFont/1E6C.png differ diff --git a/fonts/TewiFont/1E6D.png b/fonts/TewiFont/1E6D.png new file mode 100644 index 000000000..185554eb3 Binary files /dev/null and b/fonts/TewiFont/1E6D.png differ diff --git a/fonts/TewiFont/1E6E.png b/fonts/TewiFont/1E6E.png new file mode 100644 index 000000000..2f4d31c4e Binary files /dev/null and b/fonts/TewiFont/1E6E.png differ diff --git a/fonts/TewiFont/1E6F.png b/fonts/TewiFont/1E6F.png new file mode 100644 index 000000000..36c225790 Binary files /dev/null and b/fonts/TewiFont/1E6F.png differ diff --git a/fonts/TewiFont/1E70.png b/fonts/TewiFont/1E70.png new file mode 100644 index 000000000..595bdcb48 Binary files /dev/null and b/fonts/TewiFont/1E70.png differ diff --git a/fonts/TewiFont/1E71.png b/fonts/TewiFont/1E71.png new file mode 100644 index 000000000..dd6b22acc Binary files /dev/null and b/fonts/TewiFont/1E71.png differ diff --git a/fonts/TewiFont/1E72.png b/fonts/TewiFont/1E72.png new file mode 100644 index 000000000..5997dbcf2 Binary files /dev/null and b/fonts/TewiFont/1E72.png differ diff --git a/fonts/TewiFont/1E73.png b/fonts/TewiFont/1E73.png new file mode 100644 index 000000000..6800b3ba6 Binary files /dev/null and b/fonts/TewiFont/1E73.png differ diff --git a/fonts/TewiFont/1E74.png b/fonts/TewiFont/1E74.png new file mode 100644 index 000000000..af391a426 Binary files /dev/null and b/fonts/TewiFont/1E74.png differ diff --git a/fonts/TewiFont/1E75.png b/fonts/TewiFont/1E75.png new file mode 100644 index 000000000..01546ab8a Binary files /dev/null and b/fonts/TewiFont/1E75.png differ diff --git a/fonts/TewiFont/1E76.png b/fonts/TewiFont/1E76.png new file mode 100644 index 000000000..0d9f110a5 Binary files /dev/null and b/fonts/TewiFont/1E76.png differ diff --git a/fonts/TewiFont/1E77.png b/fonts/TewiFont/1E77.png new file mode 100644 index 000000000..488bf64e8 Binary files /dev/null and b/fonts/TewiFont/1E77.png differ diff --git a/fonts/TewiFont/1E78.png b/fonts/TewiFont/1E78.png new file mode 100644 index 000000000..51daeee46 Binary files /dev/null and b/fonts/TewiFont/1E78.png differ diff --git a/fonts/TewiFont/1E79.png b/fonts/TewiFont/1E79.png new file mode 100644 index 000000000..2af5af5d7 Binary files /dev/null and b/fonts/TewiFont/1E79.png differ diff --git a/fonts/TewiFont/1E7A.png b/fonts/TewiFont/1E7A.png new file mode 100644 index 000000000..accae85e5 Binary files /dev/null and b/fonts/TewiFont/1E7A.png differ diff --git a/fonts/TewiFont/1E7B.png b/fonts/TewiFont/1E7B.png new file mode 100644 index 000000000..72326d6e8 Binary files /dev/null and b/fonts/TewiFont/1E7B.png differ diff --git a/fonts/TewiFont/1E7C.png b/fonts/TewiFont/1E7C.png new file mode 100644 index 000000000..41dfca81d Binary files /dev/null and b/fonts/TewiFont/1E7C.png differ diff --git a/fonts/TewiFont/1E7D.png b/fonts/TewiFont/1E7D.png new file mode 100644 index 000000000..af77cc5f4 Binary files /dev/null and b/fonts/TewiFont/1E7D.png differ diff --git a/fonts/TewiFont/1E7E.png b/fonts/TewiFont/1E7E.png new file mode 100644 index 000000000..1a47cff81 Binary files /dev/null and b/fonts/TewiFont/1E7E.png differ diff --git a/fonts/TewiFont/1E7F.png b/fonts/TewiFont/1E7F.png new file mode 100644 index 000000000..1fb1e31a5 Binary files /dev/null and b/fonts/TewiFont/1E7F.png differ diff --git a/fonts/TewiFont/1E80.png b/fonts/TewiFont/1E80.png new file mode 100644 index 000000000..8c64104c4 Binary files /dev/null and b/fonts/TewiFont/1E80.png differ diff --git a/fonts/TewiFont/1E81.png b/fonts/TewiFont/1E81.png new file mode 100644 index 000000000..720c00658 Binary files /dev/null and b/fonts/TewiFont/1E81.png differ diff --git a/fonts/TewiFont/1E82.png b/fonts/TewiFont/1E82.png new file mode 100644 index 000000000..c3229e65c Binary files /dev/null and b/fonts/TewiFont/1E82.png differ diff --git a/fonts/TewiFont/1E83.png b/fonts/TewiFont/1E83.png new file mode 100644 index 000000000..4a9a9740a Binary files /dev/null and b/fonts/TewiFont/1E83.png differ diff --git a/fonts/TewiFont/1E84.png b/fonts/TewiFont/1E84.png new file mode 100644 index 000000000..c618a631e Binary files /dev/null and b/fonts/TewiFont/1E84.png differ diff --git a/fonts/TewiFont/1E85.png b/fonts/TewiFont/1E85.png new file mode 100644 index 000000000..4d9f15985 Binary files /dev/null and b/fonts/TewiFont/1E85.png differ diff --git a/fonts/TewiFont/1E86.png b/fonts/TewiFont/1E86.png new file mode 100644 index 000000000..38f1d130d Binary files /dev/null and b/fonts/TewiFont/1E86.png differ diff --git a/fonts/TewiFont/1E87.png b/fonts/TewiFont/1E87.png new file mode 100644 index 000000000..6bfd35f72 Binary files /dev/null and b/fonts/TewiFont/1E87.png differ diff --git a/fonts/TewiFont/1E88.png b/fonts/TewiFont/1E88.png new file mode 100644 index 000000000..1062d4f06 Binary files /dev/null and b/fonts/TewiFont/1E88.png differ diff --git a/fonts/TewiFont/1E89.png b/fonts/TewiFont/1E89.png new file mode 100644 index 000000000..8f4d8e83d Binary files /dev/null and b/fonts/TewiFont/1E89.png differ diff --git a/fonts/TewiFont/1E8A.png b/fonts/TewiFont/1E8A.png new file mode 100644 index 000000000..7b92e087a Binary files /dev/null and b/fonts/TewiFont/1E8A.png differ diff --git a/fonts/TewiFont/1E8B.png b/fonts/TewiFont/1E8B.png new file mode 100644 index 000000000..fb2a21355 Binary files /dev/null and b/fonts/TewiFont/1E8B.png differ diff --git a/fonts/TewiFont/1E8C.png b/fonts/TewiFont/1E8C.png new file mode 100644 index 000000000..00bacd8f5 Binary files /dev/null and b/fonts/TewiFont/1E8C.png differ diff --git a/fonts/TewiFont/1E8D.png b/fonts/TewiFont/1E8D.png new file mode 100644 index 000000000..5a277fed9 Binary files /dev/null and b/fonts/TewiFont/1E8D.png differ diff --git a/fonts/TewiFont/1E8E.png b/fonts/TewiFont/1E8E.png new file mode 100644 index 000000000..8b9ac7b5f Binary files /dev/null and b/fonts/TewiFont/1E8E.png differ diff --git a/fonts/TewiFont/1E8F.png b/fonts/TewiFont/1E8F.png new file mode 100644 index 000000000..a71081d02 Binary files /dev/null and b/fonts/TewiFont/1E8F.png differ diff --git a/fonts/TewiFont/1E90.png b/fonts/TewiFont/1E90.png new file mode 100644 index 000000000..b57a1164b Binary files /dev/null and b/fonts/TewiFont/1E90.png differ diff --git a/fonts/TewiFont/1E91.png b/fonts/TewiFont/1E91.png new file mode 100644 index 000000000..4183d2d64 Binary files /dev/null and b/fonts/TewiFont/1E91.png differ diff --git a/fonts/TewiFont/1E92.png b/fonts/TewiFont/1E92.png new file mode 100644 index 000000000..f15b38bb1 Binary files /dev/null and b/fonts/TewiFont/1E92.png differ diff --git a/fonts/TewiFont/1E93.png b/fonts/TewiFont/1E93.png new file mode 100644 index 000000000..31fa9ff39 Binary files /dev/null and b/fonts/TewiFont/1E93.png differ diff --git a/fonts/TewiFont/1E94.png b/fonts/TewiFont/1E94.png new file mode 100644 index 000000000..adeaac4d3 Binary files /dev/null and b/fonts/TewiFont/1E94.png differ diff --git a/fonts/TewiFont/1E95.png b/fonts/TewiFont/1E95.png new file mode 100644 index 000000000..95deab6fc Binary files /dev/null and b/fonts/TewiFont/1E95.png differ diff --git a/fonts/TewiFont/1E96.png b/fonts/TewiFont/1E96.png new file mode 100644 index 000000000..4aef04cb1 Binary files /dev/null and b/fonts/TewiFont/1E96.png differ diff --git a/fonts/TewiFont/1E97.png b/fonts/TewiFont/1E97.png new file mode 100644 index 000000000..792ad2d55 Binary files /dev/null and b/fonts/TewiFont/1E97.png differ diff --git a/fonts/TewiFont/1E98.png b/fonts/TewiFont/1E98.png new file mode 100644 index 000000000..cdc912ec5 Binary files /dev/null and b/fonts/TewiFont/1E98.png differ diff --git a/fonts/TewiFont/1E99.png b/fonts/TewiFont/1E99.png new file mode 100644 index 000000000..368a8881f Binary files /dev/null and b/fonts/TewiFont/1E99.png differ diff --git a/fonts/TewiFont/1E9A.png b/fonts/TewiFont/1E9A.png new file mode 100644 index 000000000..1659b71e2 Binary files /dev/null and b/fonts/TewiFont/1E9A.png differ diff --git a/fonts/TewiFont/1E9B.png b/fonts/TewiFont/1E9B.png new file mode 100644 index 000000000..1631b1224 Binary files /dev/null and b/fonts/TewiFont/1E9B.png differ diff --git a/fonts/TewiFont/1E9C.png b/fonts/TewiFont/1E9C.png new file mode 100644 index 000000000..8b9f9498f Binary files /dev/null and b/fonts/TewiFont/1E9C.png differ diff --git a/fonts/TewiFont/1E9D.png b/fonts/TewiFont/1E9D.png new file mode 100644 index 000000000..5371209ce Binary files /dev/null and b/fonts/TewiFont/1E9D.png differ diff --git a/fonts/TewiFont/1E9E.png b/fonts/TewiFont/1E9E.png new file mode 100644 index 000000000..5eb294bec Binary files /dev/null and b/fonts/TewiFont/1E9E.png differ diff --git a/fonts/TewiFont/1E9F.png b/fonts/TewiFont/1E9F.png new file mode 100644 index 000000000..1a2b70983 Binary files /dev/null and b/fonts/TewiFont/1E9F.png differ diff --git a/fonts/TewiFont/1EA0.png b/fonts/TewiFont/1EA0.png new file mode 100644 index 000000000..85bd7faad Binary files /dev/null and b/fonts/TewiFont/1EA0.png differ diff --git a/fonts/TewiFont/1EA1.png b/fonts/TewiFont/1EA1.png new file mode 100644 index 000000000..8a33867b3 Binary files /dev/null and b/fonts/TewiFont/1EA1.png differ diff --git a/fonts/TewiFont/1EA2.png b/fonts/TewiFont/1EA2.png new file mode 100644 index 000000000..213025d22 Binary files /dev/null and b/fonts/TewiFont/1EA2.png differ diff --git a/fonts/TewiFont/1EA3.png b/fonts/TewiFont/1EA3.png new file mode 100644 index 000000000..709a6f13d Binary files /dev/null and b/fonts/TewiFont/1EA3.png differ diff --git a/fonts/TewiFont/1EA4.png b/fonts/TewiFont/1EA4.png new file mode 100644 index 000000000..0af571c3a Binary files /dev/null and b/fonts/TewiFont/1EA4.png differ diff --git a/fonts/TewiFont/1EA5.png b/fonts/TewiFont/1EA5.png new file mode 100644 index 000000000..08aab56ab Binary files /dev/null and b/fonts/TewiFont/1EA5.png differ diff --git a/fonts/TewiFont/1EA6.png b/fonts/TewiFont/1EA6.png new file mode 100644 index 000000000..d43216b93 Binary files /dev/null and b/fonts/TewiFont/1EA6.png differ diff --git a/fonts/TewiFont/1EA7.png b/fonts/TewiFont/1EA7.png new file mode 100644 index 000000000..2ce9a1305 Binary files /dev/null and b/fonts/TewiFont/1EA7.png differ diff --git a/fonts/TewiFont/1EA8.png b/fonts/TewiFont/1EA8.png new file mode 100644 index 000000000..f273e8490 Binary files /dev/null and b/fonts/TewiFont/1EA8.png differ diff --git a/fonts/TewiFont/1EA9.png b/fonts/TewiFont/1EA9.png new file mode 100644 index 000000000..4f95a89db Binary files /dev/null and b/fonts/TewiFont/1EA9.png differ diff --git a/fonts/TewiFont/1EAB.png b/fonts/TewiFont/1EAB.png new file mode 100644 index 000000000..afa767770 Binary files /dev/null and b/fonts/TewiFont/1EAB.png differ diff --git a/fonts/TewiFont/1EAC.png b/fonts/TewiFont/1EAC.png new file mode 100644 index 000000000..d524a90f7 Binary files /dev/null and b/fonts/TewiFont/1EAC.png differ diff --git a/fonts/TewiFont/1EAD.png b/fonts/TewiFont/1EAD.png new file mode 100644 index 000000000..3329f534e Binary files /dev/null and b/fonts/TewiFont/1EAD.png differ diff --git a/fonts/TewiFont/1EAE.png b/fonts/TewiFont/1EAE.png new file mode 100644 index 000000000..8045294bc Binary files /dev/null and b/fonts/TewiFont/1EAE.png differ diff --git a/fonts/TewiFont/1EAF.png b/fonts/TewiFont/1EAF.png new file mode 100644 index 000000000..971833e7b Binary files /dev/null and b/fonts/TewiFont/1EAF.png differ diff --git a/fonts/TewiFont/1EB0.png b/fonts/TewiFont/1EB0.png new file mode 100644 index 000000000..66b1f2be4 Binary files /dev/null and b/fonts/TewiFont/1EB0.png differ diff --git a/fonts/TewiFont/1EB1.png b/fonts/TewiFont/1EB1.png new file mode 100644 index 000000000..910799b5a Binary files /dev/null and b/fonts/TewiFont/1EB1.png differ diff --git a/fonts/TewiFont/1EB2.png b/fonts/TewiFont/1EB2.png new file mode 100644 index 000000000..b6c738fe8 Binary files /dev/null and b/fonts/TewiFont/1EB2.png differ diff --git a/fonts/TewiFont/1EB3.png b/fonts/TewiFont/1EB3.png new file mode 100644 index 000000000..5cf96004a Binary files /dev/null and b/fonts/TewiFont/1EB3.png differ diff --git a/fonts/TewiFont/1EB5.png b/fonts/TewiFont/1EB5.png new file mode 100644 index 000000000..983053453 Binary files /dev/null and b/fonts/TewiFont/1EB5.png differ diff --git a/fonts/TewiFont/1EB6.png b/fonts/TewiFont/1EB6.png new file mode 100644 index 000000000..79824da42 Binary files /dev/null and b/fonts/TewiFont/1EB6.png differ diff --git a/fonts/TewiFont/1EB7.png b/fonts/TewiFont/1EB7.png new file mode 100644 index 000000000..343637843 Binary files /dev/null and b/fonts/TewiFont/1EB7.png differ diff --git a/fonts/TewiFont/1EB8.png b/fonts/TewiFont/1EB8.png new file mode 100644 index 000000000..a3981daee Binary files /dev/null and b/fonts/TewiFont/1EB8.png differ diff --git a/fonts/TewiFont/1EB9.png b/fonts/TewiFont/1EB9.png new file mode 100644 index 000000000..5d453a9a4 Binary files /dev/null and b/fonts/TewiFont/1EB9.png differ diff --git a/fonts/TewiFont/1EBA.png b/fonts/TewiFont/1EBA.png new file mode 100644 index 000000000..3d01946a0 Binary files /dev/null and b/fonts/TewiFont/1EBA.png differ diff --git a/fonts/TewiFont/1EBB.png b/fonts/TewiFont/1EBB.png new file mode 100644 index 000000000..a3211648a Binary files /dev/null and b/fonts/TewiFont/1EBB.png differ diff --git a/fonts/TewiFont/1EBC.png b/fonts/TewiFont/1EBC.png new file mode 100644 index 000000000..5206a5794 Binary files /dev/null and b/fonts/TewiFont/1EBC.png differ diff --git a/fonts/TewiFont/1EBD.png b/fonts/TewiFont/1EBD.png new file mode 100644 index 000000000..8c5a494ce Binary files /dev/null and b/fonts/TewiFont/1EBD.png differ diff --git a/fonts/TewiFont/1EBE.png b/fonts/TewiFont/1EBE.png new file mode 100644 index 000000000..ebf55425c Binary files /dev/null and b/fonts/TewiFont/1EBE.png differ diff --git a/fonts/TewiFont/1EBF.png b/fonts/TewiFont/1EBF.png new file mode 100644 index 000000000..9d99c7e0e Binary files /dev/null and b/fonts/TewiFont/1EBF.png differ diff --git a/fonts/TewiFont/1EC0.png b/fonts/TewiFont/1EC0.png new file mode 100644 index 000000000..db2aa4de2 Binary files /dev/null and b/fonts/TewiFont/1EC0.png differ diff --git a/fonts/TewiFont/1EC1.png b/fonts/TewiFont/1EC1.png new file mode 100644 index 000000000..ac62e972f Binary files /dev/null and b/fonts/TewiFont/1EC1.png differ diff --git a/fonts/TewiFont/1EC2.png b/fonts/TewiFont/1EC2.png new file mode 100644 index 000000000..4fd75a960 Binary files /dev/null and b/fonts/TewiFont/1EC2.png differ diff --git a/fonts/TewiFont/1EC3.png b/fonts/TewiFont/1EC3.png new file mode 100644 index 000000000..e11265d54 Binary files /dev/null and b/fonts/TewiFont/1EC3.png differ diff --git a/fonts/TewiFont/1EC5.png b/fonts/TewiFont/1EC5.png new file mode 100644 index 000000000..88893090b Binary files /dev/null and b/fonts/TewiFont/1EC5.png differ diff --git a/fonts/TewiFont/1EC6.png b/fonts/TewiFont/1EC6.png new file mode 100644 index 000000000..92d2835a5 Binary files /dev/null and b/fonts/TewiFont/1EC6.png differ diff --git a/fonts/TewiFont/1EC7.png b/fonts/TewiFont/1EC7.png new file mode 100644 index 000000000..cb2ab813d Binary files /dev/null and b/fonts/TewiFont/1EC7.png differ diff --git a/fonts/TewiFont/1EC8.png b/fonts/TewiFont/1EC8.png new file mode 100644 index 000000000..f00ed7366 Binary files /dev/null and b/fonts/TewiFont/1EC8.png differ diff --git a/fonts/TewiFont/1EC9.png b/fonts/TewiFont/1EC9.png new file mode 100644 index 000000000..ddc16292b Binary files /dev/null and b/fonts/TewiFont/1EC9.png differ diff --git a/fonts/TewiFont/1ECA.png b/fonts/TewiFont/1ECA.png new file mode 100644 index 000000000..5e72bd421 Binary files /dev/null and b/fonts/TewiFont/1ECA.png differ diff --git a/fonts/TewiFont/1ECB.png b/fonts/TewiFont/1ECB.png new file mode 100644 index 000000000..bb50c3950 Binary files /dev/null and b/fonts/TewiFont/1ECB.png differ diff --git a/fonts/TewiFont/1ECC.png b/fonts/TewiFont/1ECC.png new file mode 100644 index 000000000..cfc7f6405 Binary files /dev/null and b/fonts/TewiFont/1ECC.png differ diff --git a/fonts/TewiFont/1ECD.png b/fonts/TewiFont/1ECD.png new file mode 100644 index 000000000..4ccd72399 Binary files /dev/null and b/fonts/TewiFont/1ECD.png differ diff --git a/fonts/TewiFont/1ECE.png b/fonts/TewiFont/1ECE.png new file mode 100644 index 000000000..4445170ca Binary files /dev/null and b/fonts/TewiFont/1ECE.png differ diff --git a/fonts/TewiFont/1ECF.png b/fonts/TewiFont/1ECF.png new file mode 100644 index 000000000..d26ce83e8 Binary files /dev/null and b/fonts/TewiFont/1ECF.png differ diff --git a/fonts/TewiFont/1ED0.png b/fonts/TewiFont/1ED0.png new file mode 100644 index 000000000..84616a2e4 Binary files /dev/null and b/fonts/TewiFont/1ED0.png differ diff --git a/fonts/TewiFont/1ED1.png b/fonts/TewiFont/1ED1.png new file mode 100644 index 000000000..6bd03c14e Binary files /dev/null and b/fonts/TewiFont/1ED1.png differ diff --git a/fonts/TewiFont/1ED2.png b/fonts/TewiFont/1ED2.png new file mode 100644 index 000000000..05111caf6 Binary files /dev/null and b/fonts/TewiFont/1ED2.png differ diff --git a/fonts/TewiFont/1ED3.png b/fonts/TewiFont/1ED3.png new file mode 100644 index 000000000..8b2d5e664 Binary files /dev/null and b/fonts/TewiFont/1ED3.png differ diff --git a/fonts/TewiFont/1ED4.png b/fonts/TewiFont/1ED4.png new file mode 100644 index 000000000..150ccad43 Binary files /dev/null and b/fonts/TewiFont/1ED4.png differ diff --git a/fonts/TewiFont/1ED5.png b/fonts/TewiFont/1ED5.png new file mode 100644 index 000000000..be1c075b6 Binary files /dev/null and b/fonts/TewiFont/1ED5.png differ diff --git a/fonts/TewiFont/1ED6.png b/fonts/TewiFont/1ED6.png new file mode 100644 index 000000000..23aee6a77 Binary files /dev/null and b/fonts/TewiFont/1ED6.png differ diff --git a/fonts/TewiFont/1ED7.png b/fonts/TewiFont/1ED7.png new file mode 100644 index 000000000..45cf1b06e Binary files /dev/null and b/fonts/TewiFont/1ED7.png differ diff --git a/fonts/TewiFont/1ED8.png b/fonts/TewiFont/1ED8.png new file mode 100644 index 000000000..05246b388 Binary files /dev/null and b/fonts/TewiFont/1ED8.png differ diff --git a/fonts/TewiFont/1ED9.png b/fonts/TewiFont/1ED9.png new file mode 100644 index 000000000..6c30d6d11 Binary files /dev/null and b/fonts/TewiFont/1ED9.png differ diff --git a/fonts/TewiFont/1EDA.png b/fonts/TewiFont/1EDA.png new file mode 100644 index 000000000..a98f464dc Binary files /dev/null and b/fonts/TewiFont/1EDA.png differ diff --git a/fonts/TewiFont/1EDB.png b/fonts/TewiFont/1EDB.png new file mode 100644 index 000000000..aba9391c8 Binary files /dev/null and b/fonts/TewiFont/1EDB.png differ diff --git a/fonts/TewiFont/1EDC.png b/fonts/TewiFont/1EDC.png new file mode 100644 index 000000000..59a2fcb90 Binary files /dev/null and b/fonts/TewiFont/1EDC.png differ diff --git a/fonts/TewiFont/1EDD.png b/fonts/TewiFont/1EDD.png new file mode 100644 index 000000000..71df9fc1d Binary files /dev/null and b/fonts/TewiFont/1EDD.png differ diff --git a/fonts/TewiFont/1EDE.png b/fonts/TewiFont/1EDE.png new file mode 100644 index 000000000..864e8ed56 Binary files /dev/null and b/fonts/TewiFont/1EDE.png differ diff --git a/fonts/TewiFont/1EDF.png b/fonts/TewiFont/1EDF.png new file mode 100644 index 000000000..d43654b05 Binary files /dev/null and b/fonts/TewiFont/1EDF.png differ diff --git a/fonts/TewiFont/1EE0.png b/fonts/TewiFont/1EE0.png new file mode 100644 index 000000000..5c3ee5b57 Binary files /dev/null and b/fonts/TewiFont/1EE0.png differ diff --git a/fonts/TewiFont/1EE1.png b/fonts/TewiFont/1EE1.png new file mode 100644 index 000000000..aca1928db Binary files /dev/null and b/fonts/TewiFont/1EE1.png differ diff --git a/fonts/TewiFont/1EE2.png b/fonts/TewiFont/1EE2.png new file mode 100644 index 000000000..b046f5140 Binary files /dev/null and b/fonts/TewiFont/1EE2.png differ diff --git a/fonts/TewiFont/1EE3.png b/fonts/TewiFont/1EE3.png new file mode 100644 index 000000000..56fe030b5 Binary files /dev/null and b/fonts/TewiFont/1EE3.png differ diff --git a/fonts/TewiFont/1EE4.png b/fonts/TewiFont/1EE4.png new file mode 100644 index 000000000..e3c2156e7 Binary files /dev/null and b/fonts/TewiFont/1EE4.png differ diff --git a/fonts/TewiFont/1EE5.png b/fonts/TewiFont/1EE5.png new file mode 100644 index 000000000..2bdeb9185 Binary files /dev/null and b/fonts/TewiFont/1EE5.png differ diff --git a/fonts/TewiFont/1EE6.png b/fonts/TewiFont/1EE6.png new file mode 100644 index 000000000..e4e6b565a Binary files /dev/null and b/fonts/TewiFont/1EE6.png differ diff --git a/fonts/TewiFont/1EE7.png b/fonts/TewiFont/1EE7.png new file mode 100644 index 000000000..c8552687a Binary files /dev/null and b/fonts/TewiFont/1EE7.png differ diff --git a/fonts/TewiFont/1EE8.png b/fonts/TewiFont/1EE8.png new file mode 100644 index 000000000..f5192f884 Binary files /dev/null and b/fonts/TewiFont/1EE8.png differ diff --git a/fonts/TewiFont/1EE9.png b/fonts/TewiFont/1EE9.png new file mode 100644 index 000000000..f26e4de54 Binary files /dev/null and b/fonts/TewiFont/1EE9.png differ diff --git a/fonts/TewiFont/1EEA.png b/fonts/TewiFont/1EEA.png new file mode 100644 index 000000000..3da3f61d6 Binary files /dev/null and b/fonts/TewiFont/1EEA.png differ diff --git a/fonts/TewiFont/1EEB.png b/fonts/TewiFont/1EEB.png new file mode 100644 index 000000000..323ac391e Binary files /dev/null and b/fonts/TewiFont/1EEB.png differ diff --git a/fonts/TewiFont/1EEC.png b/fonts/TewiFont/1EEC.png new file mode 100644 index 000000000..99ab68c6e Binary files /dev/null and b/fonts/TewiFont/1EEC.png differ diff --git a/fonts/TewiFont/1EED.png b/fonts/TewiFont/1EED.png new file mode 100644 index 000000000..52119621f Binary files /dev/null and b/fonts/TewiFont/1EED.png differ diff --git a/fonts/TewiFont/1EEE.png b/fonts/TewiFont/1EEE.png new file mode 100644 index 000000000..e74986438 Binary files /dev/null and b/fonts/TewiFont/1EEE.png differ diff --git a/fonts/TewiFont/1EEF.png b/fonts/TewiFont/1EEF.png new file mode 100644 index 000000000..2956f0374 Binary files /dev/null and b/fonts/TewiFont/1EEF.png differ diff --git a/fonts/TewiFont/1EF0.png b/fonts/TewiFont/1EF0.png new file mode 100644 index 000000000..7a2bf7dbc Binary files /dev/null and b/fonts/TewiFont/1EF0.png differ diff --git a/fonts/TewiFont/1EF1.png b/fonts/TewiFont/1EF1.png new file mode 100644 index 000000000..e2cebb4e0 Binary files /dev/null and b/fonts/TewiFont/1EF1.png differ diff --git a/fonts/TewiFont/1EF2.png b/fonts/TewiFont/1EF2.png new file mode 100644 index 000000000..9bc4b279c Binary files /dev/null and b/fonts/TewiFont/1EF2.png differ diff --git a/fonts/TewiFont/1EF3.png b/fonts/TewiFont/1EF3.png new file mode 100644 index 000000000..790074234 Binary files /dev/null and b/fonts/TewiFont/1EF3.png differ diff --git a/fonts/TewiFont/1EF4.png b/fonts/TewiFont/1EF4.png new file mode 100644 index 000000000..9513b0eec Binary files /dev/null and b/fonts/TewiFont/1EF4.png differ diff --git a/fonts/TewiFont/1EF5.png b/fonts/TewiFont/1EF5.png new file mode 100644 index 000000000..b6b2ea97b Binary files /dev/null and b/fonts/TewiFont/1EF5.png differ diff --git a/fonts/TewiFont/1EF6.png b/fonts/TewiFont/1EF6.png new file mode 100644 index 000000000..bfd37f62e Binary files /dev/null and b/fonts/TewiFont/1EF6.png differ diff --git a/fonts/TewiFont/1EF7.png b/fonts/TewiFont/1EF7.png new file mode 100644 index 000000000..29f4ff4af Binary files /dev/null and b/fonts/TewiFont/1EF7.png differ diff --git a/fonts/TewiFont/1EF8.png b/fonts/TewiFont/1EF8.png new file mode 100644 index 000000000..70e07d035 Binary files /dev/null and b/fonts/TewiFont/1EF8.png differ diff --git a/fonts/TewiFont/1EF9.png b/fonts/TewiFont/1EF9.png new file mode 100644 index 000000000..21a1907fc Binary files /dev/null and b/fonts/TewiFont/1EF9.png differ diff --git a/fonts/TewiFont/1EFA.png b/fonts/TewiFont/1EFA.png new file mode 100644 index 000000000..21009e0b0 Binary files /dev/null and b/fonts/TewiFont/1EFA.png differ diff --git a/fonts/TewiFont/1EFB.png b/fonts/TewiFont/1EFB.png new file mode 100644 index 000000000..e9de966b7 Binary files /dev/null and b/fonts/TewiFont/1EFB.png differ diff --git a/fonts/TewiFont/1EFC.png b/fonts/TewiFont/1EFC.png new file mode 100644 index 000000000..8dc9c221d Binary files /dev/null and b/fonts/TewiFont/1EFC.png differ diff --git a/fonts/TewiFont/1EFD.png b/fonts/TewiFont/1EFD.png new file mode 100644 index 000000000..652ca08b9 Binary files /dev/null and b/fonts/TewiFont/1EFD.png differ diff --git a/fonts/TewiFont/1EFE.png b/fonts/TewiFont/1EFE.png new file mode 100644 index 000000000..2c92d0598 Binary files /dev/null and b/fonts/TewiFont/1EFE.png differ diff --git a/fonts/TewiFont/1EFF.png b/fonts/TewiFont/1EFF.png new file mode 100644 index 000000000..5f70e04c6 Binary files /dev/null and b/fonts/TewiFont/1EFF.png differ diff --git a/fonts/TewiFont/1F00.png b/fonts/TewiFont/1F00.png new file mode 100644 index 000000000..4c5b0b6f6 Binary files /dev/null and b/fonts/TewiFont/1F00.png differ diff --git a/fonts/TewiFont/1F01.png b/fonts/TewiFont/1F01.png new file mode 100644 index 000000000..4b2344276 Binary files /dev/null and b/fonts/TewiFont/1F01.png differ diff --git a/fonts/TewiFont/1F02.png b/fonts/TewiFont/1F02.png new file mode 100644 index 000000000..b60144fbf Binary files /dev/null and b/fonts/TewiFont/1F02.png differ diff --git a/fonts/TewiFont/1F03.png b/fonts/TewiFont/1F03.png new file mode 100644 index 000000000..fce9014b6 Binary files /dev/null and b/fonts/TewiFont/1F03.png differ diff --git a/fonts/TewiFont/1F04.png b/fonts/TewiFont/1F04.png new file mode 100644 index 000000000..bbaa4d465 Binary files /dev/null and b/fonts/TewiFont/1F04.png differ diff --git a/fonts/TewiFont/1F05.png b/fonts/TewiFont/1F05.png new file mode 100644 index 000000000..c98b28507 Binary files /dev/null and b/fonts/TewiFont/1F05.png differ diff --git a/fonts/TewiFont/1F06.png b/fonts/TewiFont/1F06.png new file mode 100644 index 000000000..646d0a64b Binary files /dev/null and b/fonts/TewiFont/1F06.png differ diff --git a/fonts/TewiFont/1F07.png b/fonts/TewiFont/1F07.png new file mode 100644 index 000000000..3e3df3b88 Binary files /dev/null and b/fonts/TewiFont/1F07.png differ diff --git a/fonts/TewiFont/1F08.png b/fonts/TewiFont/1F08.png new file mode 100644 index 000000000..7d389abae Binary files /dev/null and b/fonts/TewiFont/1F08.png differ diff --git a/fonts/TewiFont/1F09.png b/fonts/TewiFont/1F09.png new file mode 100644 index 000000000..ba58b8174 Binary files /dev/null and b/fonts/TewiFont/1F09.png differ diff --git a/fonts/TewiFont/1F0A.png b/fonts/TewiFont/1F0A.png new file mode 100644 index 000000000..b789def34 Binary files /dev/null and b/fonts/TewiFont/1F0A.png differ diff --git a/fonts/TewiFont/1F0B.png b/fonts/TewiFont/1F0B.png new file mode 100644 index 000000000..a1358eb15 Binary files /dev/null and b/fonts/TewiFont/1F0B.png differ diff --git a/fonts/TewiFont/1F0C.png b/fonts/TewiFont/1F0C.png new file mode 100644 index 000000000..636517296 Binary files /dev/null and b/fonts/TewiFont/1F0C.png differ diff --git a/fonts/TewiFont/1F0D.png b/fonts/TewiFont/1F0D.png new file mode 100644 index 000000000..0be20f774 Binary files /dev/null and b/fonts/TewiFont/1F0D.png differ diff --git a/fonts/TewiFont/1F0E.png b/fonts/TewiFont/1F0E.png new file mode 100644 index 000000000..e1b135a15 Binary files /dev/null and b/fonts/TewiFont/1F0E.png differ diff --git a/fonts/TewiFont/1F0F.png b/fonts/TewiFont/1F0F.png new file mode 100644 index 000000000..37286e287 Binary files /dev/null and b/fonts/TewiFont/1F0F.png differ diff --git a/fonts/TewiFont/1F10.png b/fonts/TewiFont/1F10.png new file mode 100644 index 000000000..1adf7d98b Binary files /dev/null and b/fonts/TewiFont/1F10.png differ diff --git a/fonts/TewiFont/1F11.png b/fonts/TewiFont/1F11.png new file mode 100644 index 000000000..b05425d8e Binary files /dev/null and b/fonts/TewiFont/1F11.png differ diff --git a/fonts/TewiFont/1F12.png b/fonts/TewiFont/1F12.png new file mode 100644 index 000000000..cf00fb449 Binary files /dev/null and b/fonts/TewiFont/1F12.png differ diff --git a/fonts/TewiFont/1F13.png b/fonts/TewiFont/1F13.png new file mode 100644 index 000000000..cf00fb449 Binary files /dev/null and b/fonts/TewiFont/1F13.png differ diff --git a/fonts/TewiFont/1F14.png b/fonts/TewiFont/1F14.png new file mode 100644 index 000000000..512d667b8 Binary files /dev/null and b/fonts/TewiFont/1F14.png differ diff --git a/fonts/TewiFont/1F15.png b/fonts/TewiFont/1F15.png new file mode 100644 index 000000000..a55f92c5e Binary files /dev/null and b/fonts/TewiFont/1F15.png differ diff --git a/fonts/TewiFont/1F18.png b/fonts/TewiFont/1F18.png new file mode 100644 index 000000000..e31eacac6 Binary files /dev/null and b/fonts/TewiFont/1F18.png differ diff --git a/fonts/TewiFont/1F19.png b/fonts/TewiFont/1F19.png new file mode 100644 index 000000000..0e5b6feca Binary files /dev/null and b/fonts/TewiFont/1F19.png differ diff --git a/fonts/TewiFont/1F1A.png b/fonts/TewiFont/1F1A.png new file mode 100644 index 000000000..fd7378837 Binary files /dev/null and b/fonts/TewiFont/1F1A.png differ diff --git a/fonts/TewiFont/1F1B.png b/fonts/TewiFont/1F1B.png new file mode 100644 index 000000000..c8f5fb47d Binary files /dev/null and b/fonts/TewiFont/1F1B.png differ diff --git a/fonts/TewiFont/1F1C.png b/fonts/TewiFont/1F1C.png new file mode 100644 index 000000000..1b42555a9 Binary files /dev/null and b/fonts/TewiFont/1F1C.png differ diff --git a/fonts/TewiFont/1F1D.png b/fonts/TewiFont/1F1D.png new file mode 100644 index 000000000..3aded79fb Binary files /dev/null and b/fonts/TewiFont/1F1D.png differ diff --git a/fonts/TewiFont/1F20.png b/fonts/TewiFont/1F20.png new file mode 100644 index 000000000..e5731b1b7 Binary files /dev/null and b/fonts/TewiFont/1F20.png differ diff --git a/fonts/TewiFont/1F21.png b/fonts/TewiFont/1F21.png new file mode 100644 index 000000000..bafec997e Binary files /dev/null and b/fonts/TewiFont/1F21.png differ diff --git a/fonts/TewiFont/1F22.png b/fonts/TewiFont/1F22.png new file mode 100644 index 000000000..af8143e4b Binary files /dev/null and b/fonts/TewiFont/1F22.png differ diff --git a/fonts/TewiFont/1F23.png b/fonts/TewiFont/1F23.png new file mode 100644 index 000000000..72be5d0e5 Binary files /dev/null and b/fonts/TewiFont/1F23.png differ diff --git a/fonts/TewiFont/1F24.png b/fonts/TewiFont/1F24.png new file mode 100644 index 000000000..07f8a3142 Binary files /dev/null and b/fonts/TewiFont/1F24.png differ diff --git a/fonts/TewiFont/1F25.png b/fonts/TewiFont/1F25.png new file mode 100644 index 000000000..8e6251f7a Binary files /dev/null and b/fonts/TewiFont/1F25.png differ diff --git a/fonts/TewiFont/1F26.png b/fonts/TewiFont/1F26.png new file mode 100644 index 000000000..0cc96e29d Binary files /dev/null and b/fonts/TewiFont/1F26.png differ diff --git a/fonts/TewiFont/1F27.png b/fonts/TewiFont/1F27.png new file mode 100644 index 000000000..80b3fb273 Binary files /dev/null and b/fonts/TewiFont/1F27.png differ diff --git a/fonts/TewiFont/1F28.png b/fonts/TewiFont/1F28.png new file mode 100644 index 000000000..d64e57c3c Binary files /dev/null and b/fonts/TewiFont/1F28.png differ diff --git a/fonts/TewiFont/1F29.png b/fonts/TewiFont/1F29.png new file mode 100644 index 000000000..3d5e0fdce Binary files /dev/null and b/fonts/TewiFont/1F29.png differ diff --git a/fonts/TewiFont/1F2A.png b/fonts/TewiFont/1F2A.png new file mode 100644 index 000000000..e1b1b0124 Binary files /dev/null and b/fonts/TewiFont/1F2A.png differ diff --git a/fonts/TewiFont/1F2B.png b/fonts/TewiFont/1F2B.png new file mode 100644 index 000000000..deea6c779 Binary files /dev/null and b/fonts/TewiFont/1F2B.png differ diff --git a/fonts/TewiFont/1F2C.png b/fonts/TewiFont/1F2C.png new file mode 100644 index 000000000..dd606dd00 Binary files /dev/null and b/fonts/TewiFont/1F2C.png differ diff --git a/fonts/TewiFont/1F2D.png b/fonts/TewiFont/1F2D.png new file mode 100644 index 000000000..875f476dc Binary files /dev/null and b/fonts/TewiFont/1F2D.png differ diff --git a/fonts/TewiFont/1F2E.png b/fonts/TewiFont/1F2E.png new file mode 100644 index 000000000..f779100a4 Binary files /dev/null and b/fonts/TewiFont/1F2E.png differ diff --git a/fonts/TewiFont/1F2F.png b/fonts/TewiFont/1F2F.png new file mode 100644 index 000000000..f3e36a40f Binary files /dev/null and b/fonts/TewiFont/1F2F.png differ diff --git a/fonts/TewiFont/1F30.png b/fonts/TewiFont/1F30.png new file mode 100644 index 000000000..4bdb75cb4 Binary files /dev/null and b/fonts/TewiFont/1F30.png differ diff --git a/fonts/TewiFont/1F31.png b/fonts/TewiFont/1F31.png new file mode 100644 index 000000000..cdcf4d504 Binary files /dev/null and b/fonts/TewiFont/1F31.png differ diff --git a/fonts/TewiFont/1F32.png b/fonts/TewiFont/1F32.png new file mode 100644 index 000000000..1940575c8 Binary files /dev/null and b/fonts/TewiFont/1F32.png differ diff --git a/fonts/TewiFont/1F33.png b/fonts/TewiFont/1F33.png new file mode 100644 index 000000000..3060dae4b Binary files /dev/null and b/fonts/TewiFont/1F33.png differ diff --git a/fonts/TewiFont/1F34.png b/fonts/TewiFont/1F34.png new file mode 100644 index 000000000..5ed48b57b Binary files /dev/null and b/fonts/TewiFont/1F34.png differ diff --git a/fonts/TewiFont/1F35.png b/fonts/TewiFont/1F35.png new file mode 100644 index 000000000..7501565c6 Binary files /dev/null and b/fonts/TewiFont/1F35.png differ diff --git a/fonts/TewiFont/1F36.png b/fonts/TewiFont/1F36.png new file mode 100644 index 000000000..2660cd1f8 Binary files /dev/null and b/fonts/TewiFont/1F36.png differ diff --git a/fonts/TewiFont/1F37.png b/fonts/TewiFont/1F37.png new file mode 100644 index 000000000..ca3a592bc Binary files /dev/null and b/fonts/TewiFont/1F37.png differ diff --git a/fonts/TewiFont/1F38.png b/fonts/TewiFont/1F38.png new file mode 100644 index 000000000..bb7c72c30 Binary files /dev/null and b/fonts/TewiFont/1F38.png differ diff --git a/fonts/TewiFont/1F39.png b/fonts/TewiFont/1F39.png new file mode 100644 index 000000000..15865f3fe Binary files /dev/null and b/fonts/TewiFont/1F39.png differ diff --git a/fonts/TewiFont/1F3A.png b/fonts/TewiFont/1F3A.png new file mode 100644 index 000000000..2a51399f8 Binary files /dev/null and b/fonts/TewiFont/1F3A.png differ diff --git a/fonts/TewiFont/1F3B.png b/fonts/TewiFont/1F3B.png new file mode 100644 index 000000000..7d6afab31 Binary files /dev/null and b/fonts/TewiFont/1F3B.png differ diff --git a/fonts/TewiFont/1F3C.png b/fonts/TewiFont/1F3C.png new file mode 100644 index 000000000..e0298dd60 Binary files /dev/null and b/fonts/TewiFont/1F3C.png differ diff --git a/fonts/TewiFont/1F3D.png b/fonts/TewiFont/1F3D.png new file mode 100644 index 000000000..2485185dd Binary files /dev/null and b/fonts/TewiFont/1F3D.png differ diff --git a/fonts/TewiFont/1F3E.png b/fonts/TewiFont/1F3E.png new file mode 100644 index 000000000..2831a9b89 Binary files /dev/null and b/fonts/TewiFont/1F3E.png differ diff --git a/fonts/TewiFont/1F3F.png b/fonts/TewiFont/1F3F.png new file mode 100644 index 000000000..05d755211 Binary files /dev/null and b/fonts/TewiFont/1F3F.png differ diff --git a/fonts/TewiFont/1F40.png b/fonts/TewiFont/1F40.png new file mode 100644 index 000000000..7d7384df4 Binary files /dev/null and b/fonts/TewiFont/1F40.png differ diff --git a/fonts/TewiFont/1F41.png b/fonts/TewiFont/1F41.png new file mode 100644 index 000000000..5c509b00e Binary files /dev/null and b/fonts/TewiFont/1F41.png differ diff --git a/fonts/TewiFont/1F42.png b/fonts/TewiFont/1F42.png new file mode 100644 index 000000000..fec51e51d Binary files /dev/null and b/fonts/TewiFont/1F42.png differ diff --git a/fonts/TewiFont/1F43.png b/fonts/TewiFont/1F43.png new file mode 100644 index 000000000..4dfc47139 Binary files /dev/null and b/fonts/TewiFont/1F43.png differ diff --git a/fonts/TewiFont/1F44.png b/fonts/TewiFont/1F44.png new file mode 100644 index 000000000..3ffb69899 Binary files /dev/null and b/fonts/TewiFont/1F44.png differ diff --git a/fonts/TewiFont/1F45.png b/fonts/TewiFont/1F45.png new file mode 100644 index 000000000..d341c2a73 Binary files /dev/null and b/fonts/TewiFont/1F45.png differ diff --git a/fonts/TewiFont/1F48.png b/fonts/TewiFont/1F48.png new file mode 100644 index 000000000..8a28f86d4 Binary files /dev/null and b/fonts/TewiFont/1F48.png differ diff --git a/fonts/TewiFont/1F49.png b/fonts/TewiFont/1F49.png new file mode 100644 index 000000000..da1614c06 Binary files /dev/null and b/fonts/TewiFont/1F49.png differ diff --git a/fonts/TewiFont/1F4A.png b/fonts/TewiFont/1F4A.png new file mode 100644 index 000000000..0e940d6a8 Binary files /dev/null and b/fonts/TewiFont/1F4A.png differ diff --git a/fonts/TewiFont/1F4B.png b/fonts/TewiFont/1F4B.png new file mode 100644 index 000000000..440e176ce Binary files /dev/null and b/fonts/TewiFont/1F4B.png differ diff --git a/fonts/TewiFont/1F4C.png b/fonts/TewiFont/1F4C.png new file mode 100644 index 000000000..bc89a1999 Binary files /dev/null and b/fonts/TewiFont/1F4C.png differ diff --git a/fonts/TewiFont/1F4D.png b/fonts/TewiFont/1F4D.png new file mode 100644 index 000000000..e4a2f52bb Binary files /dev/null and b/fonts/TewiFont/1F4D.png differ diff --git a/fonts/TewiFont/1F50.png b/fonts/TewiFont/1F50.png new file mode 100644 index 000000000..252ae080e Binary files /dev/null and b/fonts/TewiFont/1F50.png differ diff --git a/fonts/TewiFont/1F51.png b/fonts/TewiFont/1F51.png new file mode 100644 index 000000000..c2b07401a Binary files /dev/null and b/fonts/TewiFont/1F51.png differ diff --git a/fonts/TewiFont/1F52.png b/fonts/TewiFont/1F52.png new file mode 100644 index 000000000..7a33d5f1e Binary files /dev/null and b/fonts/TewiFont/1F52.png differ diff --git a/fonts/TewiFont/1F53.png b/fonts/TewiFont/1F53.png new file mode 100644 index 000000000..68b88da36 Binary files /dev/null and b/fonts/TewiFont/1F53.png differ diff --git a/fonts/TewiFont/1F54.png b/fonts/TewiFont/1F54.png new file mode 100644 index 000000000..32f459109 Binary files /dev/null and b/fonts/TewiFont/1F54.png differ diff --git a/fonts/TewiFont/1F55.png b/fonts/TewiFont/1F55.png new file mode 100644 index 000000000..85b0775df Binary files /dev/null and b/fonts/TewiFont/1F55.png differ diff --git a/fonts/TewiFont/1F56.png b/fonts/TewiFont/1F56.png new file mode 100644 index 000000000..7385b8769 Binary files /dev/null and b/fonts/TewiFont/1F56.png differ diff --git a/fonts/TewiFont/1F57.png b/fonts/TewiFont/1F57.png new file mode 100644 index 000000000..ed6db69c7 Binary files /dev/null and b/fonts/TewiFont/1F57.png differ diff --git a/fonts/TewiFont/1F59.png b/fonts/TewiFont/1F59.png new file mode 100644 index 000000000..2c5fc3865 Binary files /dev/null and b/fonts/TewiFont/1F59.png differ diff --git a/fonts/TewiFont/1F5B.png b/fonts/TewiFont/1F5B.png new file mode 100644 index 000000000..e7417f0d4 Binary files /dev/null and b/fonts/TewiFont/1F5B.png differ diff --git a/fonts/TewiFont/1F5D.png b/fonts/TewiFont/1F5D.png new file mode 100644 index 000000000..1e01cce72 Binary files /dev/null and b/fonts/TewiFont/1F5D.png differ diff --git a/fonts/TewiFont/1F5F.png b/fonts/TewiFont/1F5F.png new file mode 100644 index 000000000..1453b8395 Binary files /dev/null and b/fonts/TewiFont/1F5F.png differ diff --git a/fonts/TewiFont/1F60.png b/fonts/TewiFont/1F60.png new file mode 100644 index 000000000..a6dc7a0f4 Binary files /dev/null and b/fonts/TewiFont/1F60.png differ diff --git a/fonts/TewiFont/1F61.png b/fonts/TewiFont/1F61.png new file mode 100644 index 000000000..3c47a066d Binary files /dev/null and b/fonts/TewiFont/1F61.png differ diff --git a/fonts/TewiFont/1F62.png b/fonts/TewiFont/1F62.png new file mode 100644 index 000000000..d0cdfc5a5 Binary files /dev/null and b/fonts/TewiFont/1F62.png differ diff --git a/fonts/TewiFont/1F63.png b/fonts/TewiFont/1F63.png new file mode 100644 index 000000000..636eefaa1 Binary files /dev/null and b/fonts/TewiFont/1F63.png differ diff --git a/fonts/TewiFont/1F64.png b/fonts/TewiFont/1F64.png new file mode 100644 index 000000000..f9978bfe3 Binary files /dev/null and b/fonts/TewiFont/1F64.png differ diff --git a/fonts/TewiFont/1F65.png b/fonts/TewiFont/1F65.png new file mode 100644 index 000000000..cd33cf69a Binary files /dev/null and b/fonts/TewiFont/1F65.png differ diff --git a/fonts/TewiFont/1F66.png b/fonts/TewiFont/1F66.png new file mode 100644 index 000000000..66ad7cee0 Binary files /dev/null and b/fonts/TewiFont/1F66.png differ diff --git a/fonts/TewiFont/1F67.png b/fonts/TewiFont/1F67.png new file mode 100644 index 000000000..7583e6c5c Binary files /dev/null and b/fonts/TewiFont/1F67.png differ diff --git a/fonts/TewiFont/1F68.png b/fonts/TewiFont/1F68.png new file mode 100644 index 000000000..66a50d5d8 Binary files /dev/null and b/fonts/TewiFont/1F68.png differ diff --git a/fonts/TewiFont/1F69.png b/fonts/TewiFont/1F69.png new file mode 100644 index 000000000..2e0c8de25 Binary files /dev/null and b/fonts/TewiFont/1F69.png differ diff --git a/fonts/TewiFont/1F6A.png b/fonts/TewiFont/1F6A.png new file mode 100644 index 000000000..9ecc8446f Binary files /dev/null and b/fonts/TewiFont/1F6A.png differ diff --git a/fonts/TewiFont/1F6B.png b/fonts/TewiFont/1F6B.png new file mode 100644 index 000000000..2a5839a6f Binary files /dev/null and b/fonts/TewiFont/1F6B.png differ diff --git a/fonts/TewiFont/1F6C.png b/fonts/TewiFont/1F6C.png new file mode 100644 index 000000000..53000edf9 Binary files /dev/null and b/fonts/TewiFont/1F6C.png differ diff --git a/fonts/TewiFont/1F6D.png b/fonts/TewiFont/1F6D.png new file mode 100644 index 000000000..d9b166c8c Binary files /dev/null and b/fonts/TewiFont/1F6D.png differ diff --git a/fonts/TewiFont/1F6E.png b/fonts/TewiFont/1F6E.png new file mode 100644 index 000000000..aedc2ccc6 Binary files /dev/null and b/fonts/TewiFont/1F6E.png differ diff --git a/fonts/TewiFont/1F6F.png b/fonts/TewiFont/1F6F.png new file mode 100644 index 000000000..6265c5fe5 Binary files /dev/null and b/fonts/TewiFont/1F6F.png differ diff --git a/fonts/TewiFont/1F70.png b/fonts/TewiFont/1F70.png new file mode 100644 index 000000000..d25df5017 Binary files /dev/null and b/fonts/TewiFont/1F70.png differ diff --git a/fonts/TewiFont/1F71.png b/fonts/TewiFont/1F71.png new file mode 100644 index 000000000..9ebac0b0a Binary files /dev/null and b/fonts/TewiFont/1F71.png differ diff --git a/fonts/TewiFont/1F72.png b/fonts/TewiFont/1F72.png new file mode 100644 index 000000000..3b110367d Binary files /dev/null and b/fonts/TewiFont/1F72.png differ diff --git a/fonts/TewiFont/1F73.png b/fonts/TewiFont/1F73.png new file mode 100644 index 000000000..e857a05ee Binary files /dev/null and b/fonts/TewiFont/1F73.png differ diff --git a/fonts/TewiFont/1F74.png b/fonts/TewiFont/1F74.png new file mode 100644 index 000000000..f975a3d38 Binary files /dev/null and b/fonts/TewiFont/1F74.png differ diff --git a/fonts/TewiFont/1F75.png b/fonts/TewiFont/1F75.png new file mode 100644 index 000000000..15c94d1c6 Binary files /dev/null and b/fonts/TewiFont/1F75.png differ diff --git a/fonts/TewiFont/1F76.png b/fonts/TewiFont/1F76.png new file mode 100644 index 000000000..3ae3fd78a Binary files /dev/null and b/fonts/TewiFont/1F76.png differ diff --git a/fonts/TewiFont/1F77.png b/fonts/TewiFont/1F77.png new file mode 100644 index 000000000..83d9a7da7 Binary files /dev/null and b/fonts/TewiFont/1F77.png differ diff --git a/fonts/TewiFont/1F78.png b/fonts/TewiFont/1F78.png new file mode 100644 index 000000000..a30cc5003 Binary files /dev/null and b/fonts/TewiFont/1F78.png differ diff --git a/fonts/TewiFont/1F79.png b/fonts/TewiFont/1F79.png new file mode 100644 index 000000000..ac92d92eb Binary files /dev/null and b/fonts/TewiFont/1F79.png differ diff --git a/fonts/TewiFont/1F7A.png b/fonts/TewiFont/1F7A.png new file mode 100644 index 000000000..cabee3596 Binary files /dev/null and b/fonts/TewiFont/1F7A.png differ diff --git a/fonts/TewiFont/1F7B.png b/fonts/TewiFont/1F7B.png new file mode 100644 index 000000000..7bbb56c42 Binary files /dev/null and b/fonts/TewiFont/1F7B.png differ diff --git a/fonts/TewiFont/1F7C.png b/fonts/TewiFont/1F7C.png new file mode 100644 index 000000000..e4e67e3be Binary files /dev/null and b/fonts/TewiFont/1F7C.png differ diff --git a/fonts/TewiFont/1F7D.png b/fonts/TewiFont/1F7D.png new file mode 100644 index 000000000..2f0760c24 Binary files /dev/null and b/fonts/TewiFont/1F7D.png differ diff --git a/fonts/TewiFont/1F80.png b/fonts/TewiFont/1F80.png new file mode 100644 index 000000000..96716beae Binary files /dev/null and b/fonts/TewiFont/1F80.png differ diff --git a/fonts/TewiFont/1F81.png b/fonts/TewiFont/1F81.png new file mode 100644 index 000000000..b490d5b73 Binary files /dev/null and b/fonts/TewiFont/1F81.png differ diff --git a/fonts/TewiFont/1F82.png b/fonts/TewiFont/1F82.png new file mode 100644 index 000000000..1119a0b07 Binary files /dev/null and b/fonts/TewiFont/1F82.png differ diff --git a/fonts/TewiFont/1F83.png b/fonts/TewiFont/1F83.png new file mode 100644 index 000000000..6858b3a7d Binary files /dev/null and b/fonts/TewiFont/1F83.png differ diff --git a/fonts/TewiFont/1F84.png b/fonts/TewiFont/1F84.png new file mode 100644 index 000000000..7d7593e57 Binary files /dev/null and b/fonts/TewiFont/1F84.png differ diff --git a/fonts/TewiFont/1F85.png b/fonts/TewiFont/1F85.png new file mode 100644 index 000000000..ace050d2c Binary files /dev/null and b/fonts/TewiFont/1F85.png differ diff --git a/fonts/TewiFont/1F86.png b/fonts/TewiFont/1F86.png new file mode 100644 index 000000000..9604db7ed Binary files /dev/null and b/fonts/TewiFont/1F86.png differ diff --git a/fonts/TewiFont/1F87.png b/fonts/TewiFont/1F87.png new file mode 100644 index 000000000..6cde920a7 Binary files /dev/null and b/fonts/TewiFont/1F87.png differ diff --git a/fonts/TewiFont/1F88.png b/fonts/TewiFont/1F88.png new file mode 100644 index 000000000..6c59594fe Binary files /dev/null and b/fonts/TewiFont/1F88.png differ diff --git a/fonts/TewiFont/1F89.png b/fonts/TewiFont/1F89.png new file mode 100644 index 000000000..38ba7c556 Binary files /dev/null and b/fonts/TewiFont/1F89.png differ diff --git a/fonts/TewiFont/1F8A.png b/fonts/TewiFont/1F8A.png new file mode 100644 index 000000000..35b1f7eb3 Binary files /dev/null and b/fonts/TewiFont/1F8A.png differ diff --git a/fonts/TewiFont/1F8B.png b/fonts/TewiFont/1F8B.png new file mode 100644 index 000000000..37e578064 Binary files /dev/null and b/fonts/TewiFont/1F8B.png differ diff --git a/fonts/TewiFont/1F8C.png b/fonts/TewiFont/1F8C.png new file mode 100644 index 000000000..e84c3eccc Binary files /dev/null and b/fonts/TewiFont/1F8C.png differ diff --git a/fonts/TewiFont/1F8D.png b/fonts/TewiFont/1F8D.png new file mode 100644 index 000000000..850e218fb Binary files /dev/null and b/fonts/TewiFont/1F8D.png differ diff --git a/fonts/TewiFont/1F8E.png b/fonts/TewiFont/1F8E.png new file mode 100644 index 000000000..06c94057f Binary files /dev/null and b/fonts/TewiFont/1F8E.png differ diff --git a/fonts/TewiFont/1F8F.png b/fonts/TewiFont/1F8F.png new file mode 100644 index 000000000..ebe263338 Binary files /dev/null and b/fonts/TewiFont/1F8F.png differ diff --git a/fonts/TewiFont/1F90.png b/fonts/TewiFont/1F90.png new file mode 100644 index 000000000..9112b441f Binary files /dev/null and b/fonts/TewiFont/1F90.png differ diff --git a/fonts/TewiFont/1F91.png b/fonts/TewiFont/1F91.png new file mode 100644 index 000000000..bc8b6b0a8 Binary files /dev/null and b/fonts/TewiFont/1F91.png differ diff --git a/fonts/TewiFont/1F92.png b/fonts/TewiFont/1F92.png new file mode 100644 index 000000000..f130a0c39 Binary files /dev/null and b/fonts/TewiFont/1F92.png differ diff --git a/fonts/TewiFont/1F93.png b/fonts/TewiFont/1F93.png new file mode 100644 index 000000000..c294e4ca7 Binary files /dev/null and b/fonts/TewiFont/1F93.png differ diff --git a/fonts/TewiFont/1F94.png b/fonts/TewiFont/1F94.png new file mode 100644 index 000000000..a199bc2b3 Binary files /dev/null and b/fonts/TewiFont/1F94.png differ diff --git a/fonts/TewiFont/1F95.png b/fonts/TewiFont/1F95.png new file mode 100644 index 000000000..9c2aa4df3 Binary files /dev/null and b/fonts/TewiFont/1F95.png differ diff --git a/fonts/TewiFont/1F96.png b/fonts/TewiFont/1F96.png new file mode 100644 index 000000000..a8564561a Binary files /dev/null and b/fonts/TewiFont/1F96.png differ diff --git a/fonts/TewiFont/1F97.png b/fonts/TewiFont/1F97.png new file mode 100644 index 000000000..66eca1e34 Binary files /dev/null and b/fonts/TewiFont/1F97.png differ diff --git a/fonts/TewiFont/1F98.png b/fonts/TewiFont/1F98.png new file mode 100644 index 000000000..efbc839a8 Binary files /dev/null and b/fonts/TewiFont/1F98.png differ diff --git a/fonts/TewiFont/1F99.png b/fonts/TewiFont/1F99.png new file mode 100644 index 000000000..b4118403c Binary files /dev/null and b/fonts/TewiFont/1F99.png differ diff --git a/fonts/TewiFont/1F9A.png b/fonts/TewiFont/1F9A.png new file mode 100644 index 000000000..0becb8c57 Binary files /dev/null and b/fonts/TewiFont/1F9A.png differ diff --git a/fonts/TewiFont/1F9B.png b/fonts/TewiFont/1F9B.png new file mode 100644 index 000000000..169fee22d Binary files /dev/null and b/fonts/TewiFont/1F9B.png differ diff --git a/fonts/TewiFont/1F9C.png b/fonts/TewiFont/1F9C.png new file mode 100644 index 000000000..34a726ecb Binary files /dev/null and b/fonts/TewiFont/1F9C.png differ diff --git a/fonts/TewiFont/1F9D.png b/fonts/TewiFont/1F9D.png new file mode 100644 index 000000000..3fa1475d9 Binary files /dev/null and b/fonts/TewiFont/1F9D.png differ diff --git a/fonts/TewiFont/1F9E.png b/fonts/TewiFont/1F9E.png new file mode 100644 index 000000000..b46f9acb6 Binary files /dev/null and b/fonts/TewiFont/1F9E.png differ diff --git a/fonts/TewiFont/1F9F.png b/fonts/TewiFont/1F9F.png new file mode 100644 index 000000000..7f18cc79e Binary files /dev/null and b/fonts/TewiFont/1F9F.png differ diff --git a/fonts/TewiFont/1FA0.png b/fonts/TewiFont/1FA0.png new file mode 100644 index 000000000..6bf0483e3 Binary files /dev/null and b/fonts/TewiFont/1FA0.png differ diff --git a/fonts/TewiFont/1FA1.png b/fonts/TewiFont/1FA1.png new file mode 100644 index 000000000..3aca519b7 Binary files /dev/null and b/fonts/TewiFont/1FA1.png differ diff --git a/fonts/TewiFont/1FA2.png b/fonts/TewiFont/1FA2.png new file mode 100644 index 000000000..ecfef79ec Binary files /dev/null and b/fonts/TewiFont/1FA2.png differ diff --git a/fonts/TewiFont/1FA3.png b/fonts/TewiFont/1FA3.png new file mode 100644 index 000000000..ece6449e5 Binary files /dev/null and b/fonts/TewiFont/1FA3.png differ diff --git a/fonts/TewiFont/1FA4.png b/fonts/TewiFont/1FA4.png new file mode 100644 index 000000000..4304cd634 Binary files /dev/null and b/fonts/TewiFont/1FA4.png differ diff --git a/fonts/TewiFont/1FA5.png b/fonts/TewiFont/1FA5.png new file mode 100644 index 000000000..12e819fa0 Binary files /dev/null and b/fonts/TewiFont/1FA5.png differ diff --git a/fonts/TewiFont/1FA6.png b/fonts/TewiFont/1FA6.png new file mode 100644 index 000000000..f97fe4c55 Binary files /dev/null and b/fonts/TewiFont/1FA6.png differ diff --git a/fonts/TewiFont/1FA7.png b/fonts/TewiFont/1FA7.png new file mode 100644 index 000000000..1f2d3f813 Binary files /dev/null and b/fonts/TewiFont/1FA7.png differ diff --git a/fonts/TewiFont/1FA8.png b/fonts/TewiFont/1FA8.png new file mode 100644 index 000000000..66694704e Binary files /dev/null and b/fonts/TewiFont/1FA8.png differ diff --git a/fonts/TewiFont/1FA9.png b/fonts/TewiFont/1FA9.png new file mode 100644 index 000000000..c6ba3b776 Binary files /dev/null and b/fonts/TewiFont/1FA9.png differ diff --git a/fonts/TewiFont/1FAA.png b/fonts/TewiFont/1FAA.png new file mode 100644 index 000000000..b8e7e23f3 Binary files /dev/null and b/fonts/TewiFont/1FAA.png differ diff --git a/fonts/TewiFont/1FAB.png b/fonts/TewiFont/1FAB.png new file mode 100644 index 000000000..bccce941d Binary files /dev/null and b/fonts/TewiFont/1FAB.png differ diff --git a/fonts/TewiFont/1FAC.png b/fonts/TewiFont/1FAC.png new file mode 100644 index 000000000..f99cb4384 Binary files /dev/null and b/fonts/TewiFont/1FAC.png differ diff --git a/fonts/TewiFont/1FAD.png b/fonts/TewiFont/1FAD.png new file mode 100644 index 000000000..904115dc6 Binary files /dev/null and b/fonts/TewiFont/1FAD.png differ diff --git a/fonts/TewiFont/1FAE.png b/fonts/TewiFont/1FAE.png new file mode 100644 index 000000000..ebd0ba0c0 Binary files /dev/null and b/fonts/TewiFont/1FAE.png differ diff --git a/fonts/TewiFont/1FAF.png b/fonts/TewiFont/1FAF.png new file mode 100644 index 000000000..f7fd4ebb1 Binary files /dev/null and b/fonts/TewiFont/1FAF.png differ diff --git a/fonts/TewiFont/1FB0.png b/fonts/TewiFont/1FB0.png new file mode 100644 index 000000000..c4ade416d Binary files /dev/null and b/fonts/TewiFont/1FB0.png differ diff --git a/fonts/TewiFont/1FB1.png b/fonts/TewiFont/1FB1.png new file mode 100644 index 000000000..db13d9615 Binary files /dev/null and b/fonts/TewiFont/1FB1.png differ diff --git a/fonts/TewiFont/1FB2.png b/fonts/TewiFont/1FB2.png new file mode 100644 index 000000000..605416a32 Binary files /dev/null and b/fonts/TewiFont/1FB2.png differ diff --git a/fonts/TewiFont/1FB3.png b/fonts/TewiFont/1FB3.png new file mode 100644 index 000000000..8d996bb79 Binary files /dev/null and b/fonts/TewiFont/1FB3.png differ diff --git a/fonts/TewiFont/1FB4.png b/fonts/TewiFont/1FB4.png new file mode 100644 index 000000000..bcf643c11 Binary files /dev/null and b/fonts/TewiFont/1FB4.png differ diff --git a/fonts/TewiFont/1FB6.png b/fonts/TewiFont/1FB6.png new file mode 100644 index 000000000..521ca8bb8 Binary files /dev/null and b/fonts/TewiFont/1FB6.png differ diff --git a/fonts/TewiFont/1FB7.png b/fonts/TewiFont/1FB7.png new file mode 100644 index 000000000..c2f58740b Binary files /dev/null and b/fonts/TewiFont/1FB7.png differ diff --git a/fonts/TewiFont/1FB8.png b/fonts/TewiFont/1FB8.png new file mode 100644 index 000000000..fff4fea48 Binary files /dev/null and b/fonts/TewiFont/1FB8.png differ diff --git a/fonts/TewiFont/1FB9.png b/fonts/TewiFont/1FB9.png new file mode 100644 index 000000000..f2af6e1a3 Binary files /dev/null and b/fonts/TewiFont/1FB9.png differ diff --git a/fonts/TewiFont/1FBA.png b/fonts/TewiFont/1FBA.png new file mode 100644 index 000000000..c75227ece Binary files /dev/null and b/fonts/TewiFont/1FBA.png differ diff --git a/fonts/TewiFont/1FBB.png b/fonts/TewiFont/1FBB.png new file mode 100644 index 000000000..2ea539727 Binary files /dev/null and b/fonts/TewiFont/1FBB.png differ diff --git a/fonts/TewiFont/1FBC.png b/fonts/TewiFont/1FBC.png new file mode 100644 index 000000000..b79f495b9 Binary files /dev/null and b/fonts/TewiFont/1FBC.png differ diff --git a/fonts/TewiFont/1FBD.png b/fonts/TewiFont/1FBD.png new file mode 100644 index 000000000..92274bf44 Binary files /dev/null and b/fonts/TewiFont/1FBD.png differ diff --git a/fonts/TewiFont/1FBE.png b/fonts/TewiFont/1FBE.png new file mode 100644 index 000000000..5a9137487 Binary files /dev/null and b/fonts/TewiFont/1FBE.png differ diff --git a/fonts/TewiFont/1FBF.png b/fonts/TewiFont/1FBF.png new file mode 100644 index 000000000..92274bf44 Binary files /dev/null and b/fonts/TewiFont/1FBF.png differ diff --git a/fonts/TewiFont/1FC2.png b/fonts/TewiFont/1FC2.png new file mode 100644 index 000000000..30d2cb6e6 Binary files /dev/null and b/fonts/TewiFont/1FC2.png differ diff --git a/fonts/TewiFont/1FC3.png b/fonts/TewiFont/1FC3.png new file mode 100644 index 000000000..5a2320776 Binary files /dev/null and b/fonts/TewiFont/1FC3.png differ diff --git a/fonts/TewiFont/1FC4.png b/fonts/TewiFont/1FC4.png new file mode 100644 index 000000000..917ea8809 Binary files /dev/null and b/fonts/TewiFont/1FC4.png differ diff --git a/fonts/TewiFont/1FC6.png b/fonts/TewiFont/1FC6.png new file mode 100644 index 000000000..96bd17253 Binary files /dev/null and b/fonts/TewiFont/1FC6.png differ diff --git a/fonts/TewiFont/1FC7.png b/fonts/TewiFont/1FC7.png new file mode 100644 index 000000000..a0ac4e769 Binary files /dev/null and b/fonts/TewiFont/1FC7.png differ diff --git a/fonts/TewiFont/1FC8.png b/fonts/TewiFont/1FC8.png new file mode 100644 index 000000000..d19e71a04 Binary files /dev/null and b/fonts/TewiFont/1FC8.png differ diff --git a/fonts/TewiFont/1FC9.png b/fonts/TewiFont/1FC9.png new file mode 100644 index 000000000..7829741ab Binary files /dev/null and b/fonts/TewiFont/1FC9.png differ diff --git a/fonts/TewiFont/1FCA.png b/fonts/TewiFont/1FCA.png new file mode 100644 index 000000000..dfae23699 Binary files /dev/null and b/fonts/TewiFont/1FCA.png differ diff --git a/fonts/TewiFont/1FCB.png b/fonts/TewiFont/1FCB.png new file mode 100644 index 000000000..ef6c5a7a3 Binary files /dev/null and b/fonts/TewiFont/1FCB.png differ diff --git a/fonts/TewiFont/1FCC.png b/fonts/TewiFont/1FCC.png new file mode 100644 index 000000000..28d7ebbea Binary files /dev/null and b/fonts/TewiFont/1FCC.png differ diff --git a/fonts/TewiFont/1FCD.png b/fonts/TewiFont/1FCD.png new file mode 100644 index 000000000..693a2ca75 Binary files /dev/null and b/fonts/TewiFont/1FCD.png differ diff --git a/fonts/TewiFont/1FCE.png b/fonts/TewiFont/1FCE.png new file mode 100644 index 000000000..48c992926 Binary files /dev/null and b/fonts/TewiFont/1FCE.png differ diff --git a/fonts/TewiFont/1FCF.png b/fonts/TewiFont/1FCF.png new file mode 100644 index 000000000..9686fdcf7 Binary files /dev/null and b/fonts/TewiFont/1FCF.png differ diff --git a/fonts/TewiFont/1FD0.png b/fonts/TewiFont/1FD0.png new file mode 100644 index 000000000..42368d5d0 Binary files /dev/null and b/fonts/TewiFont/1FD0.png differ diff --git a/fonts/TewiFont/1FD1.png b/fonts/TewiFont/1FD1.png new file mode 100644 index 000000000..dcd11d4c9 Binary files /dev/null and b/fonts/TewiFont/1FD1.png differ diff --git a/fonts/TewiFont/1FD2.png b/fonts/TewiFont/1FD2.png new file mode 100644 index 000000000..3e7b7f6dd Binary files /dev/null and b/fonts/TewiFont/1FD2.png differ diff --git a/fonts/TewiFont/1FD3.png b/fonts/TewiFont/1FD3.png new file mode 100644 index 000000000..0a1aa51ec Binary files /dev/null and b/fonts/TewiFont/1FD3.png differ diff --git a/fonts/TewiFont/1FD6.png b/fonts/TewiFont/1FD6.png new file mode 100644 index 000000000..3b8abf4d3 Binary files /dev/null and b/fonts/TewiFont/1FD6.png differ diff --git a/fonts/TewiFont/1FD7.png b/fonts/TewiFont/1FD7.png new file mode 100644 index 000000000..3021746df Binary files /dev/null and b/fonts/TewiFont/1FD7.png differ diff --git a/fonts/TewiFont/1FD8.png b/fonts/TewiFont/1FD8.png new file mode 100644 index 000000000..85696e947 Binary files /dev/null and b/fonts/TewiFont/1FD8.png differ diff --git a/fonts/TewiFont/1FD9.png b/fonts/TewiFont/1FD9.png new file mode 100644 index 000000000..0f4adff8d Binary files /dev/null and b/fonts/TewiFont/1FD9.png differ diff --git a/fonts/TewiFont/1FDA.png b/fonts/TewiFont/1FDA.png new file mode 100644 index 000000000..fef292af3 Binary files /dev/null and b/fonts/TewiFont/1FDA.png differ diff --git a/fonts/TewiFont/1FDB.png b/fonts/TewiFont/1FDB.png new file mode 100644 index 000000000..cca03e675 Binary files /dev/null and b/fonts/TewiFont/1FDB.png differ diff --git a/fonts/TewiFont/1FDD.png b/fonts/TewiFont/1FDD.png new file mode 100644 index 000000000..360192a26 Binary files /dev/null and b/fonts/TewiFont/1FDD.png differ diff --git a/fonts/TewiFont/1FDE.png b/fonts/TewiFont/1FDE.png new file mode 100644 index 000000000..b3a2d4662 Binary files /dev/null and b/fonts/TewiFont/1FDE.png differ diff --git a/fonts/TewiFont/1FDF.png b/fonts/TewiFont/1FDF.png new file mode 100644 index 000000000..82469e8cb Binary files /dev/null and b/fonts/TewiFont/1FDF.png differ diff --git a/fonts/TewiFont/1FE0.png b/fonts/TewiFont/1FE0.png new file mode 100644 index 000000000..510a9bc7a Binary files /dev/null and b/fonts/TewiFont/1FE0.png differ diff --git a/fonts/TewiFont/1FE1.png b/fonts/TewiFont/1FE1.png new file mode 100644 index 000000000..547c90f87 Binary files /dev/null and b/fonts/TewiFont/1FE1.png differ diff --git a/fonts/TewiFont/1FE2.png b/fonts/TewiFont/1FE2.png new file mode 100644 index 000000000..92fc70cb1 Binary files /dev/null and b/fonts/TewiFont/1FE2.png differ diff --git a/fonts/TewiFont/1FE3.png b/fonts/TewiFont/1FE3.png new file mode 100644 index 000000000..8af3832d7 Binary files /dev/null and b/fonts/TewiFont/1FE3.png differ diff --git a/fonts/TewiFont/1FE4.png b/fonts/TewiFont/1FE4.png new file mode 100644 index 000000000..6792ac025 Binary files /dev/null and b/fonts/TewiFont/1FE4.png differ diff --git a/fonts/TewiFont/1FE5.png b/fonts/TewiFont/1FE5.png new file mode 100644 index 000000000..19deca7be Binary files /dev/null and b/fonts/TewiFont/1FE5.png differ diff --git a/fonts/TewiFont/1FE6.png b/fonts/TewiFont/1FE6.png new file mode 100644 index 000000000..853ba7027 Binary files /dev/null and b/fonts/TewiFont/1FE6.png differ diff --git a/fonts/TewiFont/1FE7.png b/fonts/TewiFont/1FE7.png new file mode 100644 index 000000000..e1662ed1e Binary files /dev/null and b/fonts/TewiFont/1FE7.png differ diff --git a/fonts/TewiFont/1FE8.png b/fonts/TewiFont/1FE8.png new file mode 100644 index 000000000..3fa1c1f4e Binary files /dev/null and b/fonts/TewiFont/1FE8.png differ diff --git a/fonts/TewiFont/1FE9.png b/fonts/TewiFont/1FE9.png new file mode 100644 index 000000000..61c607f48 Binary files /dev/null and b/fonts/TewiFont/1FE9.png differ diff --git a/fonts/TewiFont/1FEA.png b/fonts/TewiFont/1FEA.png new file mode 100644 index 000000000..08eca2bcd Binary files /dev/null and b/fonts/TewiFont/1FEA.png differ diff --git a/fonts/TewiFont/1FEB.png b/fonts/TewiFont/1FEB.png new file mode 100644 index 000000000..a591e3a3a Binary files /dev/null and b/fonts/TewiFont/1FEB.png differ diff --git a/fonts/TewiFont/1FEC.png b/fonts/TewiFont/1FEC.png new file mode 100644 index 000000000..d7e96ce29 Binary files /dev/null and b/fonts/TewiFont/1FEC.png differ diff --git a/fonts/TewiFont/1FED.png b/fonts/TewiFont/1FED.png new file mode 100644 index 000000000..b3e6c391b Binary files /dev/null and b/fonts/TewiFont/1FED.png differ diff --git a/fonts/TewiFont/1FEE.png b/fonts/TewiFont/1FEE.png new file mode 100644 index 000000000..82eaaf04a Binary files /dev/null and b/fonts/TewiFont/1FEE.png differ diff --git a/fonts/TewiFont/1FEF.png b/fonts/TewiFont/1FEF.png new file mode 100644 index 000000000..8a8b1fb5e Binary files /dev/null and b/fonts/TewiFont/1FEF.png differ diff --git a/fonts/TewiFont/1FF2.png b/fonts/TewiFont/1FF2.png new file mode 100644 index 000000000..eb4c7ccf6 Binary files /dev/null and b/fonts/TewiFont/1FF2.png differ diff --git a/fonts/TewiFont/1FF3.png b/fonts/TewiFont/1FF3.png new file mode 100644 index 000000000..bc765c3d2 Binary files /dev/null and b/fonts/TewiFont/1FF3.png differ diff --git a/fonts/TewiFont/1FF4.png b/fonts/TewiFont/1FF4.png new file mode 100644 index 000000000..89e20c465 Binary files /dev/null and b/fonts/TewiFont/1FF4.png differ diff --git a/fonts/TewiFont/1FF6.png b/fonts/TewiFont/1FF6.png new file mode 100644 index 000000000..3935cdc19 Binary files /dev/null and b/fonts/TewiFont/1FF6.png differ diff --git a/fonts/TewiFont/1FF7.png b/fonts/TewiFont/1FF7.png new file mode 100644 index 000000000..3a56c63b1 Binary files /dev/null and b/fonts/TewiFont/1FF7.png differ diff --git a/fonts/TewiFont/1FF8.png b/fonts/TewiFont/1FF8.png new file mode 100644 index 000000000..e8958d3f0 Binary files /dev/null and b/fonts/TewiFont/1FF8.png differ diff --git a/fonts/TewiFont/1FF9.png b/fonts/TewiFont/1FF9.png new file mode 100644 index 000000000..02a21838a Binary files /dev/null and b/fonts/TewiFont/1FF9.png differ diff --git a/fonts/TewiFont/1FFA.png b/fonts/TewiFont/1FFA.png new file mode 100644 index 000000000..52a0c73c3 Binary files /dev/null and b/fonts/TewiFont/1FFA.png differ diff --git a/fonts/TewiFont/1FFB.png b/fonts/TewiFont/1FFB.png new file mode 100644 index 000000000..29caff234 Binary files /dev/null and b/fonts/TewiFont/1FFB.png differ diff --git a/fonts/TewiFont/1FFC.png b/fonts/TewiFont/1FFC.png new file mode 100644 index 000000000..6481d4adf Binary files /dev/null and b/fonts/TewiFont/1FFC.png differ diff --git a/fonts/TewiFont/1FFD.png b/fonts/TewiFont/1FFD.png new file mode 100644 index 000000000..c087e7226 Binary files /dev/null and b/fonts/TewiFont/1FFD.png differ diff --git a/fonts/TewiFont/1FFE.png b/fonts/TewiFont/1FFE.png new file mode 100644 index 000000000..7d288d8e4 Binary files /dev/null and b/fonts/TewiFont/1FFE.png differ diff --git a/fonts/TewiFont/2010.png b/fonts/TewiFont/2010.png new file mode 100644 index 000000000..1c350e5dd Binary files /dev/null and b/fonts/TewiFont/2010.png differ diff --git a/fonts/TewiFont/2012.png b/fonts/TewiFont/2012.png new file mode 100644 index 000000000..63da1664f Binary files /dev/null and b/fonts/TewiFont/2012.png differ diff --git a/fonts/TewiFont/2013.png b/fonts/TewiFont/2013.png new file mode 100644 index 000000000..63da1664f Binary files /dev/null and b/fonts/TewiFont/2013.png differ diff --git a/fonts/TewiFont/2014.png b/fonts/TewiFont/2014.png new file mode 100644 index 000000000..571155dba Binary files /dev/null and b/fonts/TewiFont/2014.png differ diff --git a/fonts/TewiFont/2015.png b/fonts/TewiFont/2015.png new file mode 100644 index 000000000..571155dba Binary files /dev/null and b/fonts/TewiFont/2015.png differ diff --git a/fonts/TewiFont/2016.png b/fonts/TewiFont/2016.png new file mode 100644 index 000000000..b48bde0aa Binary files /dev/null and b/fonts/TewiFont/2016.png differ diff --git a/fonts/TewiFont/2017.png b/fonts/TewiFont/2017.png new file mode 100644 index 000000000..e772bf4d3 Binary files /dev/null and b/fonts/TewiFont/2017.png differ diff --git a/fonts/TewiFont/2018.png b/fonts/TewiFont/2018.png new file mode 100644 index 000000000..21cd82725 Binary files /dev/null and b/fonts/TewiFont/2018.png differ diff --git a/fonts/TewiFont/2019.png b/fonts/TewiFont/2019.png new file mode 100644 index 000000000..92274bf44 Binary files /dev/null and b/fonts/TewiFont/2019.png differ diff --git a/fonts/TewiFont/201A.png b/fonts/TewiFont/201A.png new file mode 100644 index 000000000..4ed72dd1b Binary files /dev/null and b/fonts/TewiFont/201A.png differ diff --git a/fonts/TewiFont/201B.png b/fonts/TewiFont/201B.png new file mode 100644 index 000000000..7d288d8e4 Binary files /dev/null and b/fonts/TewiFont/201B.png differ diff --git a/fonts/TewiFont/201C.png b/fonts/TewiFont/201C.png new file mode 100644 index 000000000..ceeb78ea2 Binary files /dev/null and b/fonts/TewiFont/201C.png differ diff --git a/fonts/TewiFont/201D.png b/fonts/TewiFont/201D.png new file mode 100644 index 000000000..68abfbe8d Binary files /dev/null and b/fonts/TewiFont/201D.png differ diff --git a/fonts/TewiFont/201E.png b/fonts/TewiFont/201E.png new file mode 100644 index 000000000..5b6ce99af Binary files /dev/null and b/fonts/TewiFont/201E.png differ diff --git a/fonts/TewiFont/201F.png b/fonts/TewiFont/201F.png new file mode 100644 index 000000000..41271a57b Binary files /dev/null and b/fonts/TewiFont/201F.png differ diff --git a/fonts/TewiFont/2020.png b/fonts/TewiFont/2020.png new file mode 100644 index 000000000..642e002f4 Binary files /dev/null and b/fonts/TewiFont/2020.png differ diff --git a/fonts/TewiFont/2021.png b/fonts/TewiFont/2021.png new file mode 100644 index 000000000..6fe0136c0 Binary files /dev/null and b/fonts/TewiFont/2021.png differ diff --git a/fonts/TewiFont/2022.png b/fonts/TewiFont/2022.png new file mode 100644 index 000000000..b457e0e96 Binary files /dev/null and b/fonts/TewiFont/2022.png differ diff --git a/fonts/TewiFont/2023.png b/fonts/TewiFont/2023.png new file mode 100644 index 000000000..deffac0cf Binary files /dev/null and b/fonts/TewiFont/2023.png differ diff --git a/fonts/TewiFont/2024.png b/fonts/TewiFont/2024.png new file mode 100644 index 000000000..14460f730 Binary files /dev/null and b/fonts/TewiFont/2024.png differ diff --git a/fonts/TewiFont/2025.png b/fonts/TewiFont/2025.png new file mode 100644 index 000000000..79b68667a Binary files /dev/null and b/fonts/TewiFont/2025.png differ diff --git a/fonts/TewiFont/2026.png b/fonts/TewiFont/2026.png new file mode 100644 index 000000000..d80fb105b Binary files /dev/null and b/fonts/TewiFont/2026.png differ diff --git a/fonts/TewiFont/2027.png b/fonts/TewiFont/2027.png new file mode 100644 index 000000000..db0f2e61a Binary files /dev/null and b/fonts/TewiFont/2027.png differ diff --git a/fonts/TewiFont/2030.png b/fonts/TewiFont/2030.png new file mode 100644 index 000000000..7831d13a6 Binary files /dev/null and b/fonts/TewiFont/2030.png differ diff --git a/fonts/TewiFont/2032.png b/fonts/TewiFont/2032.png new file mode 100644 index 000000000..480f4ac28 Binary files /dev/null and b/fonts/TewiFont/2032.png differ diff --git a/fonts/TewiFont/2033.png b/fonts/TewiFont/2033.png new file mode 100644 index 000000000..1b68f97d5 Binary files /dev/null and b/fonts/TewiFont/2033.png differ diff --git a/fonts/TewiFont/2034.png b/fonts/TewiFont/2034.png new file mode 100644 index 000000000..b57737233 Binary files /dev/null and b/fonts/TewiFont/2034.png differ diff --git a/fonts/TewiFont/2035.png b/fonts/TewiFont/2035.png new file mode 100644 index 000000000..5ef9977bf Binary files /dev/null and b/fonts/TewiFont/2035.png differ diff --git a/fonts/TewiFont/2036.png b/fonts/TewiFont/2036.png new file mode 100644 index 000000000..58f6bcd3e Binary files /dev/null and b/fonts/TewiFont/2036.png differ diff --git a/fonts/TewiFont/2037.png b/fonts/TewiFont/2037.png new file mode 100644 index 000000000..8b6178bea Binary files /dev/null and b/fonts/TewiFont/2037.png differ diff --git a/fonts/TewiFont/2038.png b/fonts/TewiFont/2038.png new file mode 100644 index 000000000..0e6761472 Binary files /dev/null and b/fonts/TewiFont/2038.png differ diff --git a/fonts/TewiFont/2039.png b/fonts/TewiFont/2039.png new file mode 100644 index 000000000..8112e5464 Binary files /dev/null and b/fonts/TewiFont/2039.png differ diff --git a/fonts/TewiFont/203A.png b/fonts/TewiFont/203A.png new file mode 100644 index 000000000..e4551045d Binary files /dev/null and b/fonts/TewiFont/203A.png differ diff --git a/fonts/TewiFont/203C.png b/fonts/TewiFont/203C.png new file mode 100644 index 000000000..0539f0713 Binary files /dev/null and b/fonts/TewiFont/203C.png differ diff --git a/fonts/TewiFont/203D.png b/fonts/TewiFont/203D.png new file mode 100644 index 000000000..2e1082b5c Binary files /dev/null and b/fonts/TewiFont/203D.png differ diff --git a/fonts/TewiFont/203E.png b/fonts/TewiFont/203E.png new file mode 100644 index 000000000..954e444bc Binary files /dev/null and b/fonts/TewiFont/203E.png differ diff --git a/fonts/TewiFont/203F.png b/fonts/TewiFont/203F.png new file mode 100644 index 000000000..13403c3e6 Binary files /dev/null and b/fonts/TewiFont/203F.png differ diff --git a/fonts/TewiFont/2040.png b/fonts/TewiFont/2040.png new file mode 100644 index 000000000..8e1d6f595 Binary files /dev/null and b/fonts/TewiFont/2040.png differ diff --git a/fonts/TewiFont/2041.png b/fonts/TewiFont/2041.png new file mode 100644 index 000000000..56cc6a8ac Binary files /dev/null and b/fonts/TewiFont/2041.png differ diff --git a/fonts/TewiFont/2042.png b/fonts/TewiFont/2042.png new file mode 100644 index 000000000..ff5dc8f73 Binary files /dev/null and b/fonts/TewiFont/2042.png differ diff --git a/fonts/TewiFont/2043.png b/fonts/TewiFont/2043.png new file mode 100644 index 000000000..7e8c9e915 Binary files /dev/null and b/fonts/TewiFont/2043.png differ diff --git a/fonts/TewiFont/2044.png b/fonts/TewiFont/2044.png new file mode 100644 index 000000000..18f867098 Binary files /dev/null and b/fonts/TewiFont/2044.png differ diff --git a/fonts/TewiFont/2045.png b/fonts/TewiFont/2045.png new file mode 100644 index 000000000..9fa5cd9a6 Binary files /dev/null and b/fonts/TewiFont/2045.png differ diff --git a/fonts/TewiFont/2046.png b/fonts/TewiFont/2046.png new file mode 100644 index 000000000..c481439ec Binary files /dev/null and b/fonts/TewiFont/2046.png differ diff --git a/fonts/TewiFont/2047.png b/fonts/TewiFont/2047.png new file mode 100644 index 000000000..f15a332ce Binary files /dev/null and b/fonts/TewiFont/2047.png differ diff --git a/fonts/TewiFont/2048.png b/fonts/TewiFont/2048.png new file mode 100644 index 000000000..4b7244c45 Binary files /dev/null and b/fonts/TewiFont/2048.png differ diff --git a/fonts/TewiFont/2049.png b/fonts/TewiFont/2049.png new file mode 100644 index 000000000..87adb2fbf Binary files /dev/null and b/fonts/TewiFont/2049.png differ diff --git a/fonts/TewiFont/204A.png b/fonts/TewiFont/204A.png new file mode 100644 index 000000000..5307f24a3 Binary files /dev/null and b/fonts/TewiFont/204A.png differ diff --git a/fonts/TewiFont/204B.png b/fonts/TewiFont/204B.png new file mode 100644 index 000000000..fafa041ed Binary files /dev/null and b/fonts/TewiFont/204B.png differ diff --git a/fonts/TewiFont/204C.png b/fonts/TewiFont/204C.png new file mode 100644 index 000000000..41c906ebf Binary files /dev/null and b/fonts/TewiFont/204C.png differ diff --git a/fonts/TewiFont/204D.png b/fonts/TewiFont/204D.png new file mode 100644 index 000000000..487fd3282 Binary files /dev/null and b/fonts/TewiFont/204D.png differ diff --git a/fonts/TewiFont/204E.png b/fonts/TewiFont/204E.png new file mode 100644 index 000000000..98a78404d Binary files /dev/null and b/fonts/TewiFont/204E.png differ diff --git a/fonts/TewiFont/204F.png b/fonts/TewiFont/204F.png new file mode 100644 index 000000000..53d63d6b0 Binary files /dev/null and b/fonts/TewiFont/204F.png differ diff --git a/fonts/TewiFont/2050.png b/fonts/TewiFont/2050.png new file mode 100644 index 000000000..9c09b772f Binary files /dev/null and b/fonts/TewiFont/2050.png differ diff --git a/fonts/TewiFont/2051.png b/fonts/TewiFont/2051.png new file mode 100644 index 000000000..8a15709c5 Binary files /dev/null and b/fonts/TewiFont/2051.png differ diff --git a/fonts/TewiFont/2052.png b/fonts/TewiFont/2052.png new file mode 100644 index 000000000..7126f41aa Binary files /dev/null and b/fonts/TewiFont/2052.png differ diff --git a/fonts/TewiFont/2053.png b/fonts/TewiFont/2053.png new file mode 100644 index 000000000..e648ff7cf Binary files /dev/null and b/fonts/TewiFont/2053.png differ diff --git a/fonts/TewiFont/2054.png b/fonts/TewiFont/2054.png new file mode 100644 index 000000000..5a9d86203 Binary files /dev/null and b/fonts/TewiFont/2054.png differ diff --git a/fonts/TewiFont/2055.png b/fonts/TewiFont/2055.png new file mode 100644 index 000000000..0c26074be Binary files /dev/null and b/fonts/TewiFont/2055.png differ diff --git a/fonts/TewiFont/2056.png b/fonts/TewiFont/2056.png new file mode 100644 index 000000000..95189590f Binary files /dev/null and b/fonts/TewiFont/2056.png differ diff --git a/fonts/TewiFont/2058.png b/fonts/TewiFont/2058.png new file mode 100644 index 000000000..886b58d72 Binary files /dev/null and b/fonts/TewiFont/2058.png differ diff --git a/fonts/TewiFont/2059.png b/fonts/TewiFont/2059.png new file mode 100644 index 000000000..9b8402079 Binary files /dev/null and b/fonts/TewiFont/2059.png differ diff --git a/fonts/TewiFont/205A.png b/fonts/TewiFont/205A.png new file mode 100644 index 000000000..7ceb8f29c Binary files /dev/null and b/fonts/TewiFont/205A.png differ diff --git a/fonts/TewiFont/205B.png b/fonts/TewiFont/205B.png new file mode 100644 index 000000000..f2b734a0a Binary files /dev/null and b/fonts/TewiFont/205B.png differ diff --git a/fonts/TewiFont/205C.png b/fonts/TewiFont/205C.png new file mode 100644 index 000000000..b10580e4d Binary files /dev/null and b/fonts/TewiFont/205C.png differ diff --git a/fonts/TewiFont/205D.png b/fonts/TewiFont/205D.png new file mode 100644 index 000000000..58c194e48 Binary files /dev/null and b/fonts/TewiFont/205D.png differ diff --git a/fonts/TewiFont/205E.png b/fonts/TewiFont/205E.png new file mode 100644 index 000000000..72e54fb40 Binary files /dev/null and b/fonts/TewiFont/205E.png differ diff --git a/fonts/TewiFont/2070.png b/fonts/TewiFont/2070.png new file mode 100644 index 000000000..4874741e5 Binary files /dev/null and b/fonts/TewiFont/2070.png differ diff --git a/fonts/TewiFont/2071.png b/fonts/TewiFont/2071.png new file mode 100644 index 000000000..e429d7deb Binary files /dev/null and b/fonts/TewiFont/2071.png differ diff --git a/fonts/TewiFont/2074.png b/fonts/TewiFont/2074.png new file mode 100644 index 000000000..543f88f32 Binary files /dev/null and b/fonts/TewiFont/2074.png differ diff --git a/fonts/TewiFont/2075.png b/fonts/TewiFont/2075.png new file mode 100644 index 000000000..327284f34 Binary files /dev/null and b/fonts/TewiFont/2075.png differ diff --git a/fonts/TewiFont/2076.png b/fonts/TewiFont/2076.png new file mode 100644 index 000000000..79b434251 Binary files /dev/null and b/fonts/TewiFont/2076.png differ diff --git a/fonts/TewiFont/2077.png b/fonts/TewiFont/2077.png new file mode 100644 index 000000000..4e2e7417b Binary files /dev/null and b/fonts/TewiFont/2077.png differ diff --git a/fonts/TewiFont/2078.png b/fonts/TewiFont/2078.png new file mode 100644 index 000000000..14fe4189a Binary files /dev/null and b/fonts/TewiFont/2078.png differ diff --git a/fonts/TewiFont/2079.png b/fonts/TewiFont/2079.png new file mode 100644 index 000000000..d574bbe31 Binary files /dev/null and b/fonts/TewiFont/2079.png differ diff --git a/fonts/TewiFont/207A.png b/fonts/TewiFont/207A.png new file mode 100644 index 000000000..d85e637bd Binary files /dev/null and b/fonts/TewiFont/207A.png differ diff --git a/fonts/TewiFont/207B.png b/fonts/TewiFont/207B.png new file mode 100644 index 000000000..8c6fa776f Binary files /dev/null and b/fonts/TewiFont/207B.png differ diff --git a/fonts/TewiFont/207C.png b/fonts/TewiFont/207C.png new file mode 100644 index 000000000..1bc05d30a Binary files /dev/null and b/fonts/TewiFont/207C.png differ diff --git a/fonts/TewiFont/207D.png b/fonts/TewiFont/207D.png new file mode 100644 index 000000000..3712c3612 Binary files /dev/null and b/fonts/TewiFont/207D.png differ diff --git a/fonts/TewiFont/207E.png b/fonts/TewiFont/207E.png new file mode 100644 index 000000000..159ec6c2a Binary files /dev/null and b/fonts/TewiFont/207E.png differ diff --git a/fonts/TewiFont/207F.png b/fonts/TewiFont/207F.png new file mode 100644 index 000000000..c7fdda593 Binary files /dev/null and b/fonts/TewiFont/207F.png differ diff --git a/fonts/TewiFont/2080.png b/fonts/TewiFont/2080.png new file mode 100644 index 000000000..8867d3459 Binary files /dev/null and b/fonts/TewiFont/2080.png differ diff --git a/fonts/TewiFont/2081.png b/fonts/TewiFont/2081.png new file mode 100644 index 000000000..62c67266b Binary files /dev/null and b/fonts/TewiFont/2081.png differ diff --git a/fonts/TewiFont/2082.png b/fonts/TewiFont/2082.png new file mode 100644 index 000000000..f8add9bc2 Binary files /dev/null and b/fonts/TewiFont/2082.png differ diff --git a/fonts/TewiFont/2083.png b/fonts/TewiFont/2083.png new file mode 100644 index 000000000..e710ff4eb Binary files /dev/null and b/fonts/TewiFont/2083.png differ diff --git a/fonts/TewiFont/2084.png b/fonts/TewiFont/2084.png new file mode 100644 index 000000000..65480d8eb Binary files /dev/null and b/fonts/TewiFont/2084.png differ diff --git a/fonts/TewiFont/2085.png b/fonts/TewiFont/2085.png new file mode 100644 index 000000000..1ec563965 Binary files /dev/null and b/fonts/TewiFont/2085.png differ diff --git a/fonts/TewiFont/2086.png b/fonts/TewiFont/2086.png new file mode 100644 index 000000000..dc6eb763a Binary files /dev/null and b/fonts/TewiFont/2086.png differ diff --git a/fonts/TewiFont/2087.png b/fonts/TewiFont/2087.png new file mode 100644 index 000000000..42cc5e46b Binary files /dev/null and b/fonts/TewiFont/2087.png differ diff --git a/fonts/TewiFont/2088.png b/fonts/TewiFont/2088.png new file mode 100644 index 000000000..a62b71bf8 Binary files /dev/null and b/fonts/TewiFont/2088.png differ diff --git a/fonts/TewiFont/2089.png b/fonts/TewiFont/2089.png new file mode 100644 index 000000000..355c927c3 Binary files /dev/null and b/fonts/TewiFont/2089.png differ diff --git a/fonts/TewiFont/208A.png b/fonts/TewiFont/208A.png new file mode 100644 index 000000000..37a9cd1e9 Binary files /dev/null and b/fonts/TewiFont/208A.png differ diff --git a/fonts/TewiFont/208B.png b/fonts/TewiFont/208B.png new file mode 100644 index 000000000..8b3a74f0a Binary files /dev/null and b/fonts/TewiFont/208B.png differ diff --git a/fonts/TewiFont/208C.png b/fonts/TewiFont/208C.png new file mode 100644 index 000000000..18b569d1e Binary files /dev/null and b/fonts/TewiFont/208C.png differ diff --git a/fonts/TewiFont/208D.png b/fonts/TewiFont/208D.png new file mode 100644 index 000000000..daf5060e5 Binary files /dev/null and b/fonts/TewiFont/208D.png differ diff --git a/fonts/TewiFont/208E.png b/fonts/TewiFont/208E.png new file mode 100644 index 000000000..cb8338f96 Binary files /dev/null and b/fonts/TewiFont/208E.png differ diff --git a/fonts/TewiFont/2090.png b/fonts/TewiFont/2090.png new file mode 100644 index 000000000..afdc8e95e Binary files /dev/null and b/fonts/TewiFont/2090.png differ diff --git a/fonts/TewiFont/2091.png b/fonts/TewiFont/2091.png new file mode 100644 index 000000000..6db56ad86 Binary files /dev/null and b/fonts/TewiFont/2091.png differ diff --git a/fonts/TewiFont/2092.png b/fonts/TewiFont/2092.png new file mode 100644 index 000000000..826273c46 Binary files /dev/null and b/fonts/TewiFont/2092.png differ diff --git a/fonts/TewiFont/2093.png b/fonts/TewiFont/2093.png new file mode 100644 index 000000000..3fa78437f Binary files /dev/null and b/fonts/TewiFont/2093.png differ diff --git a/fonts/TewiFont/2094.png b/fonts/TewiFont/2094.png new file mode 100644 index 000000000..d8a5da504 Binary files /dev/null and b/fonts/TewiFont/2094.png differ diff --git a/fonts/TewiFont/2095.png b/fonts/TewiFont/2095.png new file mode 100644 index 000000000..93e0eee73 Binary files /dev/null and b/fonts/TewiFont/2095.png differ diff --git a/fonts/TewiFont/2096.png b/fonts/TewiFont/2096.png new file mode 100644 index 000000000..c6908e822 Binary files /dev/null and b/fonts/TewiFont/2096.png differ diff --git a/fonts/TewiFont/2097.png b/fonts/TewiFont/2097.png new file mode 100644 index 000000000..ad478fbd1 Binary files /dev/null and b/fonts/TewiFont/2097.png differ diff --git a/fonts/TewiFont/2098.png b/fonts/TewiFont/2098.png new file mode 100644 index 000000000..4777aad60 Binary files /dev/null and b/fonts/TewiFont/2098.png differ diff --git a/fonts/TewiFont/2099.png b/fonts/TewiFont/2099.png new file mode 100644 index 000000000..3e974b680 Binary files /dev/null and b/fonts/TewiFont/2099.png differ diff --git a/fonts/TewiFont/209A.png b/fonts/TewiFont/209A.png new file mode 100644 index 000000000..59192fe7b Binary files /dev/null and b/fonts/TewiFont/209A.png differ diff --git a/fonts/TewiFont/209B.png b/fonts/TewiFont/209B.png new file mode 100644 index 000000000..c728416ac Binary files /dev/null and b/fonts/TewiFont/209B.png differ diff --git a/fonts/TewiFont/209C.png b/fonts/TewiFont/209C.png new file mode 100644 index 000000000..2b2228ce4 Binary files /dev/null and b/fonts/TewiFont/209C.png differ diff --git a/fonts/TewiFont/20A0.png b/fonts/TewiFont/20A0.png new file mode 100644 index 000000000..9eaa3cc6d Binary files /dev/null and b/fonts/TewiFont/20A0.png differ diff --git a/fonts/TewiFont/20A1.png b/fonts/TewiFont/20A1.png new file mode 100644 index 000000000..22282a9e7 Binary files /dev/null and b/fonts/TewiFont/20A1.png differ diff --git a/fonts/TewiFont/20A2.png b/fonts/TewiFont/20A2.png new file mode 100644 index 000000000..0932f3703 Binary files /dev/null and b/fonts/TewiFont/20A2.png differ diff --git a/fonts/TewiFont/20A3.png b/fonts/TewiFont/20A3.png new file mode 100644 index 000000000..5684cf4ea Binary files /dev/null and b/fonts/TewiFont/20A3.png differ diff --git a/fonts/TewiFont/20A4.png b/fonts/TewiFont/20A4.png new file mode 100644 index 000000000..ba6b5922a Binary files /dev/null and b/fonts/TewiFont/20A4.png differ diff --git a/fonts/TewiFont/20A5.png b/fonts/TewiFont/20A5.png new file mode 100644 index 000000000..f34810d6f Binary files /dev/null and b/fonts/TewiFont/20A5.png differ diff --git a/fonts/TewiFont/20A6.png b/fonts/TewiFont/20A6.png new file mode 100644 index 000000000..ebfe8a9e7 Binary files /dev/null and b/fonts/TewiFont/20A6.png differ diff --git a/fonts/TewiFont/20A8.png b/fonts/TewiFont/20A8.png new file mode 100644 index 000000000..cbb3a16d6 Binary files /dev/null and b/fonts/TewiFont/20A8.png differ diff --git a/fonts/TewiFont/20A9.png b/fonts/TewiFont/20A9.png new file mode 100644 index 000000000..bd045c3d7 Binary files /dev/null and b/fonts/TewiFont/20A9.png differ diff --git a/fonts/TewiFont/20AA.png b/fonts/TewiFont/20AA.png new file mode 100644 index 000000000..eb384ddff Binary files /dev/null and b/fonts/TewiFont/20AA.png differ diff --git a/fonts/TewiFont/20AB.png b/fonts/TewiFont/20AB.png new file mode 100644 index 000000000..a1499d2e7 Binary files /dev/null and b/fonts/TewiFont/20AB.png differ diff --git a/fonts/TewiFont/20AC.png b/fonts/TewiFont/20AC.png new file mode 100644 index 000000000..9e9ab18d6 Binary files /dev/null and b/fonts/TewiFont/20AC.png differ diff --git a/fonts/TewiFont/20AD.png b/fonts/TewiFont/20AD.png new file mode 100644 index 000000000..1c0a11942 Binary files /dev/null and b/fonts/TewiFont/20AD.png differ diff --git a/fonts/TewiFont/20AE.png b/fonts/TewiFont/20AE.png new file mode 100644 index 000000000..97165021b Binary files /dev/null and b/fonts/TewiFont/20AE.png differ diff --git a/fonts/TewiFont/20AF.png b/fonts/TewiFont/20AF.png new file mode 100644 index 000000000..ec8add9dd Binary files /dev/null and b/fonts/TewiFont/20AF.png differ diff --git a/fonts/TewiFont/20B1.png b/fonts/TewiFont/20B1.png new file mode 100644 index 000000000..e05ee7e1c Binary files /dev/null and b/fonts/TewiFont/20B1.png differ diff --git a/fonts/TewiFont/20B2.png b/fonts/TewiFont/20B2.png new file mode 100644 index 000000000..e92e74cc8 Binary files /dev/null and b/fonts/TewiFont/20B2.png differ diff --git a/fonts/TewiFont/20B3.png b/fonts/TewiFont/20B3.png new file mode 100644 index 000000000..1714ab829 Binary files /dev/null and b/fonts/TewiFont/20B3.png differ diff --git a/fonts/TewiFont/20B5.png b/fonts/TewiFont/20B5.png new file mode 100644 index 000000000..e4f4e6280 Binary files /dev/null and b/fonts/TewiFont/20B5.png differ diff --git a/fonts/TewiFont/20B6.png b/fonts/TewiFont/20B6.png new file mode 100644 index 000000000..eedb0bec8 Binary files /dev/null and b/fonts/TewiFont/20B6.png differ diff --git a/fonts/TewiFont/20B8.png b/fonts/TewiFont/20B8.png new file mode 100644 index 000000000..1631b60e3 Binary files /dev/null and b/fonts/TewiFont/20B8.png differ diff --git a/fonts/TewiFont/20B9.png b/fonts/TewiFont/20B9.png new file mode 100644 index 000000000..1e982ddeb Binary files /dev/null and b/fonts/TewiFont/20B9.png differ diff --git a/fonts/TewiFont/20BA.png b/fonts/TewiFont/20BA.png new file mode 100644 index 000000000..c77d82dee Binary files /dev/null and b/fonts/TewiFont/20BA.png differ diff --git a/fonts/TewiFont/20BC.png b/fonts/TewiFont/20BC.png new file mode 100644 index 000000000..22f0a775b Binary files /dev/null and b/fonts/TewiFont/20BC.png differ diff --git a/fonts/TewiFont/20BD.png b/fonts/TewiFont/20BD.png new file mode 100644 index 000000000..33f2dd176 Binary files /dev/null and b/fonts/TewiFont/20BD.png differ diff --git a/fonts/TewiFont/2100.png b/fonts/TewiFont/2100.png new file mode 100644 index 000000000..ea369ed4d Binary files /dev/null and b/fonts/TewiFont/2100.png differ diff --git a/fonts/TewiFont/2101.png b/fonts/TewiFont/2101.png new file mode 100644 index 000000000..e84dc5a98 Binary files /dev/null and b/fonts/TewiFont/2101.png differ diff --git a/fonts/TewiFont/2102.png b/fonts/TewiFont/2102.png new file mode 100644 index 000000000..ee2d63099 Binary files /dev/null and b/fonts/TewiFont/2102.png differ diff --git a/fonts/TewiFont/2103.png b/fonts/TewiFont/2103.png new file mode 100644 index 000000000..74a68ff40 Binary files /dev/null and b/fonts/TewiFont/2103.png differ diff --git a/fonts/TewiFont/2104.png b/fonts/TewiFont/2104.png new file mode 100644 index 000000000..dab279d82 Binary files /dev/null and b/fonts/TewiFont/2104.png differ diff --git a/fonts/TewiFont/2105.png b/fonts/TewiFont/2105.png new file mode 100644 index 000000000..99fcf5701 Binary files /dev/null and b/fonts/TewiFont/2105.png differ diff --git a/fonts/TewiFont/2106.png b/fonts/TewiFont/2106.png new file mode 100644 index 000000000..e7470827d Binary files /dev/null and b/fonts/TewiFont/2106.png differ diff --git a/fonts/TewiFont/2107.png b/fonts/TewiFont/2107.png new file mode 100644 index 000000000..950daa470 Binary files /dev/null and b/fonts/TewiFont/2107.png differ diff --git a/fonts/TewiFont/2108.png b/fonts/TewiFont/2108.png new file mode 100644 index 000000000..450f46233 Binary files /dev/null and b/fonts/TewiFont/2108.png differ diff --git a/fonts/TewiFont/2109.png b/fonts/TewiFont/2109.png new file mode 100644 index 000000000..b40d2f533 Binary files /dev/null and b/fonts/TewiFont/2109.png differ diff --git a/fonts/TewiFont/210A.png b/fonts/TewiFont/210A.png new file mode 100644 index 000000000..55c88a687 Binary files /dev/null and b/fonts/TewiFont/210A.png differ diff --git a/fonts/TewiFont/210B.png b/fonts/TewiFont/210B.png new file mode 100644 index 000000000..672d9c910 Binary files /dev/null and b/fonts/TewiFont/210B.png differ diff --git a/fonts/TewiFont/2116.png b/fonts/TewiFont/2116.png new file mode 100644 index 000000000..4a298e9dc Binary files /dev/null and b/fonts/TewiFont/2116.png differ diff --git a/fonts/TewiFont/2117.png b/fonts/TewiFont/2117.png new file mode 100644 index 000000000..bbab4005e Binary files /dev/null and b/fonts/TewiFont/2117.png differ diff --git a/fonts/TewiFont/2122.png b/fonts/TewiFont/2122.png new file mode 100644 index 000000000..86f73b331 Binary files /dev/null and b/fonts/TewiFont/2122.png differ diff --git a/fonts/TewiFont/2125.png b/fonts/TewiFont/2125.png new file mode 100644 index 000000000..2ada1650d Binary files /dev/null and b/fonts/TewiFont/2125.png differ diff --git a/fonts/TewiFont/2126.png b/fonts/TewiFont/2126.png new file mode 100644 index 000000000..d51d012f8 Binary files /dev/null and b/fonts/TewiFont/2126.png differ diff --git a/fonts/TewiFont/2127.png b/fonts/TewiFont/2127.png new file mode 100644 index 000000000..9294028da Binary files /dev/null and b/fonts/TewiFont/2127.png differ diff --git a/fonts/TewiFont/212A.png b/fonts/TewiFont/212A.png new file mode 100644 index 000000000..c8f94b104 Binary files /dev/null and b/fonts/TewiFont/212A.png differ diff --git a/fonts/TewiFont/212B.png b/fonts/TewiFont/212B.png new file mode 100644 index 000000000..beb4da488 Binary files /dev/null and b/fonts/TewiFont/212B.png differ diff --git a/fonts/TewiFont/212F.png b/fonts/TewiFont/212F.png new file mode 100644 index 000000000..541d713e8 Binary files /dev/null and b/fonts/TewiFont/212F.png differ diff --git a/fonts/TewiFont/2133.png b/fonts/TewiFont/2133.png new file mode 100644 index 000000000..2436c3e5d Binary files /dev/null and b/fonts/TewiFont/2133.png differ diff --git a/fonts/TewiFont/2134.png b/fonts/TewiFont/2134.png new file mode 100644 index 000000000..87e591379 Binary files /dev/null and b/fonts/TewiFont/2134.png differ diff --git a/fonts/TewiFont/2160.png b/fonts/TewiFont/2160.png new file mode 100644 index 000000000..680f2aaec Binary files /dev/null and b/fonts/TewiFont/2160.png differ diff --git a/fonts/TewiFont/2161.png b/fonts/TewiFont/2161.png new file mode 100644 index 000000000..4ceff1cdf Binary files /dev/null and b/fonts/TewiFont/2161.png differ diff --git a/fonts/TewiFont/2162.png b/fonts/TewiFont/2162.png new file mode 100644 index 000000000..9aeae784f Binary files /dev/null and b/fonts/TewiFont/2162.png differ diff --git a/fonts/TewiFont/2163.png b/fonts/TewiFont/2163.png new file mode 100644 index 000000000..a0b3530f7 Binary files /dev/null and b/fonts/TewiFont/2163.png differ diff --git a/fonts/TewiFont/2164.png b/fonts/TewiFont/2164.png new file mode 100644 index 000000000..9b01629d4 Binary files /dev/null and b/fonts/TewiFont/2164.png differ diff --git a/fonts/TewiFont/2165.png b/fonts/TewiFont/2165.png new file mode 100644 index 000000000..18a9221bf Binary files /dev/null and b/fonts/TewiFont/2165.png differ diff --git a/fonts/TewiFont/2166.png b/fonts/TewiFont/2166.png new file mode 100644 index 000000000..0b12c6efc Binary files /dev/null and b/fonts/TewiFont/2166.png differ diff --git a/fonts/TewiFont/2168.png b/fonts/TewiFont/2168.png new file mode 100644 index 000000000..661fd261c Binary files /dev/null and b/fonts/TewiFont/2168.png differ diff --git a/fonts/TewiFont/2169.png b/fonts/TewiFont/2169.png new file mode 100644 index 000000000..186322c86 Binary files /dev/null and b/fonts/TewiFont/2169.png differ diff --git a/fonts/TewiFont/216A.png b/fonts/TewiFont/216A.png new file mode 100644 index 000000000..fad566bb8 Binary files /dev/null and b/fonts/TewiFont/216A.png differ diff --git a/fonts/TewiFont/216B.png b/fonts/TewiFont/216B.png new file mode 100644 index 000000000..3f4dabab8 Binary files /dev/null and b/fonts/TewiFont/216B.png differ diff --git a/fonts/TewiFont/216C.png b/fonts/TewiFont/216C.png new file mode 100644 index 000000000..5e22b00cc Binary files /dev/null and b/fonts/TewiFont/216C.png differ diff --git a/fonts/TewiFont/216D.png b/fonts/TewiFont/216D.png new file mode 100644 index 000000000..72c1e9c02 Binary files /dev/null and b/fonts/TewiFont/216D.png differ diff --git a/fonts/TewiFont/216E.png b/fonts/TewiFont/216E.png new file mode 100644 index 000000000..63298cb5f Binary files /dev/null and b/fonts/TewiFont/216E.png differ diff --git a/fonts/TewiFont/216F.png b/fonts/TewiFont/216F.png new file mode 100644 index 000000000..140320557 Binary files /dev/null and b/fonts/TewiFont/216F.png differ diff --git a/fonts/TewiFont/2170.png b/fonts/TewiFont/2170.png new file mode 100644 index 000000000..106d485bc Binary files /dev/null and b/fonts/TewiFont/2170.png differ diff --git a/fonts/TewiFont/2171.png b/fonts/TewiFont/2171.png new file mode 100644 index 000000000..4f6ec9851 Binary files /dev/null and b/fonts/TewiFont/2171.png differ diff --git a/fonts/TewiFont/2172.png b/fonts/TewiFont/2172.png new file mode 100644 index 000000000..b687afdb8 Binary files /dev/null and b/fonts/TewiFont/2172.png differ diff --git a/fonts/TewiFont/2173.png b/fonts/TewiFont/2173.png new file mode 100644 index 000000000..56c66225d Binary files /dev/null and b/fonts/TewiFont/2173.png differ diff --git a/fonts/TewiFont/2174.png b/fonts/TewiFont/2174.png new file mode 100644 index 000000000..b18c913dc Binary files /dev/null and b/fonts/TewiFont/2174.png differ diff --git a/fonts/TewiFont/2175.png b/fonts/TewiFont/2175.png new file mode 100644 index 000000000..dba5e18dd Binary files /dev/null and b/fonts/TewiFont/2175.png differ diff --git a/fonts/TewiFont/2176.png b/fonts/TewiFont/2176.png new file mode 100644 index 000000000..68dda7f9a Binary files /dev/null and b/fonts/TewiFont/2176.png differ diff --git a/fonts/TewiFont/2178.png b/fonts/TewiFont/2178.png new file mode 100644 index 000000000..fab1b8a51 Binary files /dev/null and b/fonts/TewiFont/2178.png differ diff --git a/fonts/TewiFont/2179.png b/fonts/TewiFont/2179.png new file mode 100644 index 000000000..7f753b33d Binary files /dev/null and b/fonts/TewiFont/2179.png differ diff --git a/fonts/TewiFont/217A.png b/fonts/TewiFont/217A.png new file mode 100644 index 000000000..7d5e30c97 Binary files /dev/null and b/fonts/TewiFont/217A.png differ diff --git a/fonts/TewiFont/217B.png b/fonts/TewiFont/217B.png new file mode 100644 index 000000000..76ba51361 Binary files /dev/null and b/fonts/TewiFont/217B.png differ diff --git a/fonts/TewiFont/217C.png b/fonts/TewiFont/217C.png new file mode 100644 index 000000000..28bdaf1e7 Binary files /dev/null and b/fonts/TewiFont/217C.png differ diff --git a/fonts/TewiFont/217D.png b/fonts/TewiFont/217D.png new file mode 100644 index 000000000..5e593be1c Binary files /dev/null and b/fonts/TewiFont/217D.png differ diff --git a/fonts/TewiFont/217E.png b/fonts/TewiFont/217E.png new file mode 100644 index 000000000..6e87ad156 Binary files /dev/null and b/fonts/TewiFont/217E.png differ diff --git a/fonts/TewiFont/217F.png b/fonts/TewiFont/217F.png new file mode 100644 index 000000000..d1bcebfa6 Binary files /dev/null and b/fonts/TewiFont/217F.png differ diff --git a/fonts/TewiFont/2180.png b/fonts/TewiFont/2180.png new file mode 100644 index 000000000..33117b4a9 Binary files /dev/null and b/fonts/TewiFont/2180.png differ diff --git a/fonts/TewiFont/2183.png b/fonts/TewiFont/2183.png new file mode 100644 index 000000000..f2eecc467 Binary files /dev/null and b/fonts/TewiFont/2183.png differ diff --git a/fonts/TewiFont/2190.png b/fonts/TewiFont/2190.png new file mode 100644 index 000000000..039b8fe05 Binary files /dev/null and b/fonts/TewiFont/2190.png differ diff --git a/fonts/TewiFont/2191.png b/fonts/TewiFont/2191.png new file mode 100644 index 000000000..96ecc1aba Binary files /dev/null and b/fonts/TewiFont/2191.png differ diff --git a/fonts/TewiFont/2192.png b/fonts/TewiFont/2192.png new file mode 100644 index 000000000..161f2ec5a Binary files /dev/null and b/fonts/TewiFont/2192.png differ diff --git a/fonts/TewiFont/2193.png b/fonts/TewiFont/2193.png new file mode 100644 index 000000000..08eab9b1c Binary files /dev/null and b/fonts/TewiFont/2193.png differ diff --git a/fonts/TewiFont/2195.png b/fonts/TewiFont/2195.png new file mode 100644 index 000000000..4457ca972 Binary files /dev/null and b/fonts/TewiFont/2195.png differ diff --git a/fonts/TewiFont/2196.png b/fonts/TewiFont/2196.png new file mode 100644 index 000000000..dfc0a07a5 Binary files /dev/null and b/fonts/TewiFont/2196.png differ diff --git a/fonts/TewiFont/2197.png b/fonts/TewiFont/2197.png new file mode 100644 index 000000000..f2f0bf593 Binary files /dev/null and b/fonts/TewiFont/2197.png differ diff --git a/fonts/TewiFont/2198.png b/fonts/TewiFont/2198.png new file mode 100644 index 000000000..7ed1649c4 Binary files /dev/null and b/fonts/TewiFont/2198.png differ diff --git a/fonts/TewiFont/2199.png b/fonts/TewiFont/2199.png new file mode 100644 index 000000000..860d93ce5 Binary files /dev/null and b/fonts/TewiFont/2199.png differ diff --git a/fonts/TewiFont/219A.png b/fonts/TewiFont/219A.png new file mode 100644 index 000000000..a99b1018e Binary files /dev/null and b/fonts/TewiFont/219A.png differ diff --git a/fonts/TewiFont/219B.png b/fonts/TewiFont/219B.png new file mode 100644 index 000000000..b568c3f86 Binary files /dev/null and b/fonts/TewiFont/219B.png differ diff --git a/fonts/TewiFont/219C.png b/fonts/TewiFont/219C.png new file mode 100644 index 000000000..ecb7d8364 Binary files /dev/null and b/fonts/TewiFont/219C.png differ diff --git a/fonts/TewiFont/219D.png b/fonts/TewiFont/219D.png new file mode 100644 index 000000000..32ff0d823 Binary files /dev/null and b/fonts/TewiFont/219D.png differ diff --git a/fonts/TewiFont/219E.png b/fonts/TewiFont/219E.png new file mode 100644 index 000000000..4a9304d64 Binary files /dev/null and b/fonts/TewiFont/219E.png differ diff --git a/fonts/TewiFont/219F.png b/fonts/TewiFont/219F.png new file mode 100644 index 000000000..f2f94345f Binary files /dev/null and b/fonts/TewiFont/219F.png differ diff --git a/fonts/TewiFont/21A0.png b/fonts/TewiFont/21A0.png new file mode 100644 index 000000000..f0a0319f7 Binary files /dev/null and b/fonts/TewiFont/21A0.png differ diff --git a/fonts/TewiFont/21A1.png b/fonts/TewiFont/21A1.png new file mode 100644 index 000000000..403490ec4 Binary files /dev/null and b/fonts/TewiFont/21A1.png differ diff --git a/fonts/TewiFont/21A2.png b/fonts/TewiFont/21A2.png new file mode 100644 index 000000000..0b39b404b Binary files /dev/null and b/fonts/TewiFont/21A2.png differ diff --git a/fonts/TewiFont/21A3.png b/fonts/TewiFont/21A3.png new file mode 100644 index 000000000..1ada57374 Binary files /dev/null and b/fonts/TewiFont/21A3.png differ diff --git a/fonts/TewiFont/21A4.png b/fonts/TewiFont/21A4.png new file mode 100644 index 000000000..ed509971d Binary files /dev/null and b/fonts/TewiFont/21A4.png differ diff --git a/fonts/TewiFont/21A5.png b/fonts/TewiFont/21A5.png new file mode 100644 index 000000000..aedf7ae44 Binary files /dev/null and b/fonts/TewiFont/21A5.png differ diff --git a/fonts/TewiFont/21A6.png b/fonts/TewiFont/21A6.png new file mode 100644 index 000000000..bf17a46cd Binary files /dev/null and b/fonts/TewiFont/21A6.png differ diff --git a/fonts/TewiFont/21A7.png b/fonts/TewiFont/21A7.png new file mode 100644 index 000000000..dbc14ff54 Binary files /dev/null and b/fonts/TewiFont/21A7.png differ diff --git a/fonts/TewiFont/21A8.png b/fonts/TewiFont/21A8.png new file mode 100644 index 000000000..2f9327112 Binary files /dev/null and b/fonts/TewiFont/21A8.png differ diff --git a/fonts/TewiFont/21A9.png b/fonts/TewiFont/21A9.png new file mode 100644 index 000000000..9ed40dea1 Binary files /dev/null and b/fonts/TewiFont/21A9.png differ diff --git a/fonts/TewiFont/21AA.png b/fonts/TewiFont/21AA.png new file mode 100644 index 000000000..baa28dca5 Binary files /dev/null and b/fonts/TewiFont/21AA.png differ diff --git a/fonts/TewiFont/21AB.png b/fonts/TewiFont/21AB.png new file mode 100644 index 000000000..9b4970077 Binary files /dev/null and b/fonts/TewiFont/21AB.png differ diff --git a/fonts/TewiFont/21AC.png b/fonts/TewiFont/21AC.png new file mode 100644 index 000000000..6f0e8bd72 Binary files /dev/null and b/fonts/TewiFont/21AC.png differ diff --git a/fonts/TewiFont/21AF.png b/fonts/TewiFont/21AF.png new file mode 100644 index 000000000..ba7dd05c3 Binary files /dev/null and b/fonts/TewiFont/21AF.png differ diff --git a/fonts/TewiFont/21B0.png b/fonts/TewiFont/21B0.png new file mode 100644 index 000000000..b88b97fe1 Binary files /dev/null and b/fonts/TewiFont/21B0.png differ diff --git a/fonts/TewiFont/21B1.png b/fonts/TewiFont/21B1.png new file mode 100644 index 000000000..ff8de10dc Binary files /dev/null and b/fonts/TewiFont/21B1.png differ diff --git a/fonts/TewiFont/21B2.png b/fonts/TewiFont/21B2.png new file mode 100644 index 000000000..c73eaa7d8 Binary files /dev/null and b/fonts/TewiFont/21B2.png differ diff --git a/fonts/TewiFont/21B3.png b/fonts/TewiFont/21B3.png new file mode 100644 index 000000000..d04291c55 Binary files /dev/null and b/fonts/TewiFont/21B3.png differ diff --git a/fonts/TewiFont/21B4.png b/fonts/TewiFont/21B4.png new file mode 100644 index 000000000..4ba5a5c7f Binary files /dev/null and b/fonts/TewiFont/21B4.png differ diff --git a/fonts/TewiFont/21B5.png b/fonts/TewiFont/21B5.png new file mode 100644 index 000000000..8dfec78a6 Binary files /dev/null and b/fonts/TewiFont/21B5.png differ diff --git a/fonts/TewiFont/21B6.png b/fonts/TewiFont/21B6.png new file mode 100644 index 000000000..456d8a363 Binary files /dev/null and b/fonts/TewiFont/21B6.png differ diff --git a/fonts/TewiFont/21B7.png b/fonts/TewiFont/21B7.png new file mode 100644 index 000000000..22f63b65a Binary files /dev/null and b/fonts/TewiFont/21B7.png differ diff --git a/fonts/TewiFont/21B8.png b/fonts/TewiFont/21B8.png new file mode 100644 index 000000000..593495fab Binary files /dev/null and b/fonts/TewiFont/21B8.png differ diff --git a/fonts/TewiFont/21B9.png b/fonts/TewiFont/21B9.png new file mode 100644 index 000000000..3af547740 Binary files /dev/null and b/fonts/TewiFont/21B9.png differ diff --git a/fonts/TewiFont/21BA.png b/fonts/TewiFont/21BA.png new file mode 100644 index 000000000..a58f56917 Binary files /dev/null and b/fonts/TewiFont/21BA.png differ diff --git a/fonts/TewiFont/21BB.png b/fonts/TewiFont/21BB.png new file mode 100644 index 000000000..ec2642409 Binary files /dev/null and b/fonts/TewiFont/21BB.png differ diff --git a/fonts/TewiFont/21BC.png b/fonts/TewiFont/21BC.png new file mode 100644 index 000000000..5d06188d1 Binary files /dev/null and b/fonts/TewiFont/21BC.png differ diff --git a/fonts/TewiFont/21BD.png b/fonts/TewiFont/21BD.png new file mode 100644 index 000000000..64b1ac425 Binary files /dev/null and b/fonts/TewiFont/21BD.png differ diff --git a/fonts/TewiFont/21BE.png b/fonts/TewiFont/21BE.png new file mode 100644 index 000000000..f873cc781 Binary files /dev/null and b/fonts/TewiFont/21BE.png differ diff --git a/fonts/TewiFont/21BF.png b/fonts/TewiFont/21BF.png new file mode 100644 index 000000000..8b3759eac Binary files /dev/null and b/fonts/TewiFont/21BF.png differ diff --git a/fonts/TewiFont/21C0.png b/fonts/TewiFont/21C0.png new file mode 100644 index 000000000..e35334a49 Binary files /dev/null and b/fonts/TewiFont/21C0.png differ diff --git a/fonts/TewiFont/21C1.png b/fonts/TewiFont/21C1.png new file mode 100644 index 000000000..8b9f31040 Binary files /dev/null and b/fonts/TewiFont/21C1.png differ diff --git a/fonts/TewiFont/21C2.png b/fonts/TewiFont/21C2.png new file mode 100644 index 000000000..ec01a86f1 Binary files /dev/null and b/fonts/TewiFont/21C2.png differ diff --git a/fonts/TewiFont/21C3.png b/fonts/TewiFont/21C3.png new file mode 100644 index 000000000..5f18571cf Binary files /dev/null and b/fonts/TewiFont/21C3.png differ diff --git a/fonts/TewiFont/21C4.png b/fonts/TewiFont/21C4.png new file mode 100644 index 000000000..c5f9f2031 Binary files /dev/null and b/fonts/TewiFont/21C4.png differ diff --git a/fonts/TewiFont/21C5.png b/fonts/TewiFont/21C5.png new file mode 100644 index 000000000..33f2c8b9b Binary files /dev/null and b/fonts/TewiFont/21C5.png differ diff --git a/fonts/TewiFont/21C6.png b/fonts/TewiFont/21C6.png new file mode 100644 index 000000000..eebf7b9d1 Binary files /dev/null and b/fonts/TewiFont/21C6.png differ diff --git a/fonts/TewiFont/21C7.png b/fonts/TewiFont/21C7.png new file mode 100644 index 000000000..19ef999c9 Binary files /dev/null and b/fonts/TewiFont/21C7.png differ diff --git a/fonts/TewiFont/21C8.png b/fonts/TewiFont/21C8.png new file mode 100644 index 000000000..ee1b86b64 Binary files /dev/null and b/fonts/TewiFont/21C8.png differ diff --git a/fonts/TewiFont/21C9.png b/fonts/TewiFont/21C9.png new file mode 100644 index 000000000..b5a5f16b0 Binary files /dev/null and b/fonts/TewiFont/21C9.png differ diff --git a/fonts/TewiFont/21CA.png b/fonts/TewiFont/21CA.png new file mode 100644 index 000000000..dc28ea834 Binary files /dev/null and b/fonts/TewiFont/21CA.png differ diff --git a/fonts/TewiFont/21CB.png b/fonts/TewiFont/21CB.png new file mode 100644 index 000000000..9cc768e40 Binary files /dev/null and b/fonts/TewiFont/21CB.png differ diff --git a/fonts/TewiFont/21CC.png b/fonts/TewiFont/21CC.png new file mode 100644 index 000000000..1ee72e7cd Binary files /dev/null and b/fonts/TewiFont/21CC.png differ diff --git a/fonts/TewiFont/21CD.png b/fonts/TewiFont/21CD.png new file mode 100644 index 000000000..4341e8730 Binary files /dev/null and b/fonts/TewiFont/21CD.png differ diff --git a/fonts/TewiFont/21CF.png b/fonts/TewiFont/21CF.png new file mode 100644 index 000000000..9b3548226 Binary files /dev/null and b/fonts/TewiFont/21CF.png differ diff --git a/fonts/TewiFont/21D0.png b/fonts/TewiFont/21D0.png new file mode 100644 index 000000000..8c11c4b25 Binary files /dev/null and b/fonts/TewiFont/21D0.png differ diff --git a/fonts/TewiFont/21D1.png b/fonts/TewiFont/21D1.png new file mode 100644 index 000000000..311ff0d14 Binary files /dev/null and b/fonts/TewiFont/21D1.png differ diff --git a/fonts/TewiFont/21D2.png b/fonts/TewiFont/21D2.png new file mode 100644 index 000000000..8e40e4487 Binary files /dev/null and b/fonts/TewiFont/21D2.png differ diff --git a/fonts/TewiFont/21D3.png b/fonts/TewiFont/21D3.png new file mode 100644 index 000000000..1008a905d Binary files /dev/null and b/fonts/TewiFont/21D3.png differ diff --git a/fonts/TewiFont/21D5.png b/fonts/TewiFont/21D5.png new file mode 100644 index 000000000..9d817c77d Binary files /dev/null and b/fonts/TewiFont/21D5.png differ diff --git a/fonts/TewiFont/21D6.png b/fonts/TewiFont/21D6.png new file mode 100644 index 000000000..94d40b3f8 Binary files /dev/null and b/fonts/TewiFont/21D6.png differ diff --git a/fonts/TewiFont/21D7.png b/fonts/TewiFont/21D7.png new file mode 100644 index 000000000..a03720855 Binary files /dev/null and b/fonts/TewiFont/21D7.png differ diff --git a/fonts/TewiFont/21D8.png b/fonts/TewiFont/21D8.png new file mode 100644 index 000000000..be875914f Binary files /dev/null and b/fonts/TewiFont/21D8.png differ diff --git a/fonts/TewiFont/21D9.png b/fonts/TewiFont/21D9.png new file mode 100644 index 000000000..dbfeb6098 Binary files /dev/null and b/fonts/TewiFont/21D9.png differ diff --git a/fonts/TewiFont/21DA.png b/fonts/TewiFont/21DA.png new file mode 100644 index 000000000..f51db510e Binary files /dev/null and b/fonts/TewiFont/21DA.png differ diff --git a/fonts/TewiFont/21DB.png b/fonts/TewiFont/21DB.png new file mode 100644 index 000000000..5eaedc7bc Binary files /dev/null and b/fonts/TewiFont/21DB.png differ diff --git a/fonts/TewiFont/21DC.png b/fonts/TewiFont/21DC.png new file mode 100644 index 000000000..1111ddfd0 Binary files /dev/null and b/fonts/TewiFont/21DC.png differ diff --git a/fonts/TewiFont/21DD.png b/fonts/TewiFont/21DD.png new file mode 100644 index 000000000..20dbd8d75 Binary files /dev/null and b/fonts/TewiFont/21DD.png differ diff --git a/fonts/TewiFont/21DE.png b/fonts/TewiFont/21DE.png new file mode 100644 index 000000000..dbc047dec Binary files /dev/null and b/fonts/TewiFont/21DE.png differ diff --git a/fonts/TewiFont/21DF.png b/fonts/TewiFont/21DF.png new file mode 100644 index 000000000..5dff75475 Binary files /dev/null and b/fonts/TewiFont/21DF.png differ diff --git a/fonts/TewiFont/21E0.png b/fonts/TewiFont/21E0.png new file mode 100644 index 000000000..a668a7c51 Binary files /dev/null and b/fonts/TewiFont/21E0.png differ diff --git a/fonts/TewiFont/21E1.png b/fonts/TewiFont/21E1.png new file mode 100644 index 000000000..5fb8c7b3c Binary files /dev/null and b/fonts/TewiFont/21E1.png differ diff --git a/fonts/TewiFont/21E2.png b/fonts/TewiFont/21E2.png new file mode 100644 index 000000000..46baac133 Binary files /dev/null and b/fonts/TewiFont/21E2.png differ diff --git a/fonts/TewiFont/21E3.png b/fonts/TewiFont/21E3.png new file mode 100644 index 000000000..ec140c807 Binary files /dev/null and b/fonts/TewiFont/21E3.png differ diff --git a/fonts/TewiFont/21E4.png b/fonts/TewiFont/21E4.png new file mode 100644 index 000000000..e0208c2b4 Binary files /dev/null and b/fonts/TewiFont/21E4.png differ diff --git a/fonts/TewiFont/21E5.png b/fonts/TewiFont/21E5.png new file mode 100644 index 000000000..91316e236 Binary files /dev/null and b/fonts/TewiFont/21E5.png differ diff --git a/fonts/TewiFont/21E6.png b/fonts/TewiFont/21E6.png new file mode 100644 index 000000000..822f3f881 Binary files /dev/null and b/fonts/TewiFont/21E6.png differ diff --git a/fonts/TewiFont/21E7.png b/fonts/TewiFont/21E7.png new file mode 100644 index 000000000..dc1ae3f19 Binary files /dev/null and b/fonts/TewiFont/21E7.png differ diff --git a/fonts/TewiFont/21E8.png b/fonts/TewiFont/21E8.png new file mode 100644 index 000000000..84c13e786 Binary files /dev/null and b/fonts/TewiFont/21E8.png differ diff --git a/fonts/TewiFont/21E9.png b/fonts/TewiFont/21E9.png new file mode 100644 index 000000000..5ff29f2f9 Binary files /dev/null and b/fonts/TewiFont/21E9.png differ diff --git a/fonts/TewiFont/21EA.png b/fonts/TewiFont/21EA.png new file mode 100644 index 000000000..ec6c6f103 Binary files /dev/null and b/fonts/TewiFont/21EA.png differ diff --git a/fonts/TewiFont/21EB.png b/fonts/TewiFont/21EB.png new file mode 100644 index 000000000..729229d86 Binary files /dev/null and b/fonts/TewiFont/21EB.png differ diff --git a/fonts/TewiFont/21EC.png b/fonts/TewiFont/21EC.png new file mode 100644 index 000000000..fea7bba35 Binary files /dev/null and b/fonts/TewiFont/21EC.png differ diff --git a/fonts/TewiFont/21ED.png b/fonts/TewiFont/21ED.png new file mode 100644 index 000000000..4f844cc96 Binary files /dev/null and b/fonts/TewiFont/21ED.png differ diff --git a/fonts/TewiFont/21EE.png b/fonts/TewiFont/21EE.png new file mode 100644 index 000000000..0f561df1f Binary files /dev/null and b/fonts/TewiFont/21EE.png differ diff --git a/fonts/TewiFont/21EF.png b/fonts/TewiFont/21EF.png new file mode 100644 index 000000000..fea7bba35 Binary files /dev/null and b/fonts/TewiFont/21EF.png differ diff --git a/fonts/TewiFont/21F1.png b/fonts/TewiFont/21F1.png new file mode 100644 index 000000000..972c06289 Binary files /dev/null and b/fonts/TewiFont/21F1.png differ diff --git a/fonts/TewiFont/21F2.png b/fonts/TewiFont/21F2.png new file mode 100644 index 000000000..d6fe47517 Binary files /dev/null and b/fonts/TewiFont/21F2.png differ diff --git a/fonts/TewiFont/21F3.png b/fonts/TewiFont/21F3.png new file mode 100644 index 000000000..71707a43d Binary files /dev/null and b/fonts/TewiFont/21F3.png differ diff --git a/fonts/TewiFont/21F4.png b/fonts/TewiFont/21F4.png new file mode 100644 index 000000000..3041bf90d Binary files /dev/null and b/fonts/TewiFont/21F4.png differ diff --git a/fonts/TewiFont/21F5.png b/fonts/TewiFont/21F5.png new file mode 100644 index 000000000..e35a743e6 Binary files /dev/null and b/fonts/TewiFont/21F5.png differ diff --git a/fonts/TewiFont/21F6.png b/fonts/TewiFont/21F6.png new file mode 100644 index 000000000..c7e9cbf14 Binary files /dev/null and b/fonts/TewiFont/21F6.png differ diff --git a/fonts/TewiFont/21F7.png b/fonts/TewiFont/21F7.png new file mode 100644 index 000000000..978fbf67e Binary files /dev/null and b/fonts/TewiFont/21F7.png differ diff --git a/fonts/TewiFont/21F8.png b/fonts/TewiFont/21F8.png new file mode 100644 index 000000000..8eb92a58c Binary files /dev/null and b/fonts/TewiFont/21F8.png differ diff --git a/fonts/TewiFont/21FA.png b/fonts/TewiFont/21FA.png new file mode 100644 index 000000000..17a044ffe Binary files /dev/null and b/fonts/TewiFont/21FA.png differ diff --git a/fonts/TewiFont/21FD.png b/fonts/TewiFont/21FD.png new file mode 100644 index 000000000..ecb22d878 Binary files /dev/null and b/fonts/TewiFont/21FD.png differ diff --git a/fonts/TewiFont/21FE.png b/fonts/TewiFont/21FE.png new file mode 100644 index 000000000..12f046dd7 Binary files /dev/null and b/fonts/TewiFont/21FE.png differ diff --git a/fonts/TewiFont/2200.png b/fonts/TewiFont/2200.png new file mode 100644 index 000000000..e6c1ed2aa Binary files /dev/null and b/fonts/TewiFont/2200.png differ diff --git a/fonts/TewiFont/2201.png b/fonts/TewiFont/2201.png new file mode 100644 index 000000000..7fcc507f1 Binary files /dev/null and b/fonts/TewiFont/2201.png differ diff --git a/fonts/TewiFont/2202.png b/fonts/TewiFont/2202.png new file mode 100644 index 000000000..271a672e5 Binary files /dev/null and b/fonts/TewiFont/2202.png differ diff --git a/fonts/TewiFont/2203.png b/fonts/TewiFont/2203.png new file mode 100644 index 000000000..d050afd38 Binary files /dev/null and b/fonts/TewiFont/2203.png differ diff --git a/fonts/TewiFont/2204.png b/fonts/TewiFont/2204.png new file mode 100644 index 000000000..28ec5be58 Binary files /dev/null and b/fonts/TewiFont/2204.png differ diff --git a/fonts/TewiFont/2205.png b/fonts/TewiFont/2205.png new file mode 100644 index 000000000..bd12c0e84 Binary files /dev/null and b/fonts/TewiFont/2205.png differ diff --git a/fonts/TewiFont/2206.png b/fonts/TewiFont/2206.png new file mode 100644 index 000000000..4f38c1ec0 Binary files /dev/null and b/fonts/TewiFont/2206.png differ diff --git a/fonts/TewiFont/2207.png b/fonts/TewiFont/2207.png new file mode 100644 index 000000000..82917af14 Binary files /dev/null and b/fonts/TewiFont/2207.png differ diff --git a/fonts/TewiFont/2208.png b/fonts/TewiFont/2208.png new file mode 100644 index 000000000..855c88a55 Binary files /dev/null and b/fonts/TewiFont/2208.png differ diff --git a/fonts/TewiFont/2209.png b/fonts/TewiFont/2209.png new file mode 100644 index 000000000..560f66e14 Binary files /dev/null and b/fonts/TewiFont/2209.png differ diff --git a/fonts/TewiFont/220A.png b/fonts/TewiFont/220A.png new file mode 100644 index 000000000..7a3a58068 Binary files /dev/null and b/fonts/TewiFont/220A.png differ diff --git a/fonts/TewiFont/220B.png b/fonts/TewiFont/220B.png new file mode 100644 index 000000000..bdb3b5866 Binary files /dev/null and b/fonts/TewiFont/220B.png differ diff --git a/fonts/TewiFont/220C.png b/fonts/TewiFont/220C.png new file mode 100644 index 000000000..688608552 Binary files /dev/null and b/fonts/TewiFont/220C.png differ diff --git a/fonts/TewiFont/220D.png b/fonts/TewiFont/220D.png new file mode 100644 index 000000000..9932534f6 Binary files /dev/null and b/fonts/TewiFont/220D.png differ diff --git a/fonts/TewiFont/220E.png b/fonts/TewiFont/220E.png new file mode 100644 index 000000000..dd19048d3 Binary files /dev/null and b/fonts/TewiFont/220E.png differ diff --git a/fonts/TewiFont/220F.png b/fonts/TewiFont/220F.png new file mode 100644 index 000000000..4128a7ba3 Binary files /dev/null and b/fonts/TewiFont/220F.png differ diff --git a/fonts/TewiFont/2210.png b/fonts/TewiFont/2210.png new file mode 100644 index 000000000..488e6bfc6 Binary files /dev/null and b/fonts/TewiFont/2210.png differ diff --git a/fonts/TewiFont/2211.png b/fonts/TewiFont/2211.png new file mode 100644 index 000000000..b055cdc98 Binary files /dev/null and b/fonts/TewiFont/2211.png differ diff --git a/fonts/TewiFont/2212.png b/fonts/TewiFont/2212.png new file mode 100644 index 000000000..63da1664f Binary files /dev/null and b/fonts/TewiFont/2212.png differ diff --git a/fonts/TewiFont/2213.png b/fonts/TewiFont/2213.png new file mode 100644 index 000000000..1e65a152f Binary files /dev/null and b/fonts/TewiFont/2213.png differ diff --git a/fonts/TewiFont/2214.png b/fonts/TewiFont/2214.png new file mode 100644 index 000000000..b9cfe16cc Binary files /dev/null and b/fonts/TewiFont/2214.png differ diff --git a/fonts/TewiFont/2215.png b/fonts/TewiFont/2215.png new file mode 100644 index 000000000..18f867098 Binary files /dev/null and b/fonts/TewiFont/2215.png differ diff --git a/fonts/TewiFont/2216.png b/fonts/TewiFont/2216.png new file mode 100644 index 000000000..5255f90df Binary files /dev/null and b/fonts/TewiFont/2216.png differ diff --git a/fonts/TewiFont/2217.png b/fonts/TewiFont/2217.png new file mode 100644 index 000000000..ebf4fa2c1 Binary files /dev/null and b/fonts/TewiFont/2217.png differ diff --git a/fonts/TewiFont/2218.png b/fonts/TewiFont/2218.png new file mode 100644 index 000000000..a54e97ecc Binary files /dev/null and b/fonts/TewiFont/2218.png differ diff --git a/fonts/TewiFont/2219.png b/fonts/TewiFont/2219.png new file mode 100644 index 000000000..25638c3da Binary files /dev/null and b/fonts/TewiFont/2219.png differ diff --git a/fonts/TewiFont/221A.png b/fonts/TewiFont/221A.png new file mode 100644 index 000000000..ed602b91f Binary files /dev/null and b/fonts/TewiFont/221A.png differ diff --git a/fonts/TewiFont/221B.png b/fonts/TewiFont/221B.png new file mode 100644 index 000000000..370ad0636 Binary files /dev/null and b/fonts/TewiFont/221B.png differ diff --git a/fonts/TewiFont/221C.png b/fonts/TewiFont/221C.png new file mode 100644 index 000000000..7f9e140be Binary files /dev/null and b/fonts/TewiFont/221C.png differ diff --git a/fonts/TewiFont/221D.png b/fonts/TewiFont/221D.png new file mode 100644 index 000000000..63fe1be4a Binary files /dev/null and b/fonts/TewiFont/221D.png differ diff --git a/fonts/TewiFont/221E.png b/fonts/TewiFont/221E.png new file mode 100644 index 000000000..382b15b64 Binary files /dev/null and b/fonts/TewiFont/221E.png differ diff --git a/fonts/TewiFont/221F.png b/fonts/TewiFont/221F.png new file mode 100644 index 000000000..112e69018 Binary files /dev/null and b/fonts/TewiFont/221F.png differ diff --git a/fonts/TewiFont/2220.png b/fonts/TewiFont/2220.png new file mode 100644 index 000000000..55bedea68 Binary files /dev/null and b/fonts/TewiFont/2220.png differ diff --git a/fonts/TewiFont/2221.png b/fonts/TewiFont/2221.png new file mode 100644 index 000000000..7c65e09dc Binary files /dev/null and b/fonts/TewiFont/2221.png differ diff --git a/fonts/TewiFont/2222.png b/fonts/TewiFont/2222.png new file mode 100644 index 000000000..498d0b450 Binary files /dev/null and b/fonts/TewiFont/2222.png differ diff --git a/fonts/TewiFont/2223.png b/fonts/TewiFont/2223.png new file mode 100644 index 000000000..dea81e89f Binary files /dev/null and b/fonts/TewiFont/2223.png differ diff --git a/fonts/TewiFont/2224.png b/fonts/TewiFont/2224.png new file mode 100644 index 000000000..39f526742 Binary files /dev/null and b/fonts/TewiFont/2224.png differ diff --git a/fonts/TewiFont/2225.png b/fonts/TewiFont/2225.png new file mode 100644 index 000000000..c50c201ad Binary files /dev/null and b/fonts/TewiFont/2225.png differ diff --git a/fonts/TewiFont/2226.png b/fonts/TewiFont/2226.png new file mode 100644 index 000000000..9c81056d0 Binary files /dev/null and b/fonts/TewiFont/2226.png differ diff --git a/fonts/TewiFont/2227.png b/fonts/TewiFont/2227.png new file mode 100644 index 000000000..02731ce13 Binary files /dev/null and b/fonts/TewiFont/2227.png differ diff --git a/fonts/TewiFont/2228.png b/fonts/TewiFont/2228.png new file mode 100644 index 000000000..ba2e039fe Binary files /dev/null and b/fonts/TewiFont/2228.png differ diff --git a/fonts/TewiFont/2229.png b/fonts/TewiFont/2229.png new file mode 100644 index 000000000..dc7144644 Binary files /dev/null and b/fonts/TewiFont/2229.png differ diff --git a/fonts/TewiFont/222A.png b/fonts/TewiFont/222A.png new file mode 100644 index 000000000..4966c61c3 Binary files /dev/null and b/fonts/TewiFont/222A.png differ diff --git a/fonts/TewiFont/222B.png b/fonts/TewiFont/222B.png new file mode 100644 index 000000000..d9343fa44 Binary files /dev/null and b/fonts/TewiFont/222B.png differ diff --git a/fonts/TewiFont/222C.png b/fonts/TewiFont/222C.png new file mode 100644 index 000000000..7936e2be1 Binary files /dev/null and b/fonts/TewiFont/222C.png differ diff --git a/fonts/TewiFont/222E.png b/fonts/TewiFont/222E.png new file mode 100644 index 000000000..39488452b Binary files /dev/null and b/fonts/TewiFont/222E.png differ diff --git a/fonts/TewiFont/222F.png b/fonts/TewiFont/222F.png new file mode 100644 index 000000000..7d72b55d3 Binary files /dev/null and b/fonts/TewiFont/222F.png differ diff --git a/fonts/TewiFont/2231.png b/fonts/TewiFont/2231.png new file mode 100644 index 000000000..483ae9ad4 Binary files /dev/null and b/fonts/TewiFont/2231.png differ diff --git a/fonts/TewiFont/2232.png b/fonts/TewiFont/2232.png new file mode 100644 index 000000000..1aa82eaef Binary files /dev/null and b/fonts/TewiFont/2232.png differ diff --git a/fonts/TewiFont/2233.png b/fonts/TewiFont/2233.png new file mode 100644 index 000000000..6735a23f3 Binary files /dev/null and b/fonts/TewiFont/2233.png differ diff --git a/fonts/TewiFont/2234.png b/fonts/TewiFont/2234.png new file mode 100644 index 000000000..5b344d125 Binary files /dev/null and b/fonts/TewiFont/2234.png differ diff --git a/fonts/TewiFont/2235.png b/fonts/TewiFont/2235.png new file mode 100644 index 000000000..c02d05af3 Binary files /dev/null and b/fonts/TewiFont/2235.png differ diff --git a/fonts/TewiFont/2236.png b/fonts/TewiFont/2236.png new file mode 100644 index 000000000..8bf6e68c4 Binary files /dev/null and b/fonts/TewiFont/2236.png differ diff --git a/fonts/TewiFont/2237.png b/fonts/TewiFont/2237.png new file mode 100644 index 000000000..8addbbef0 Binary files /dev/null and b/fonts/TewiFont/2237.png differ diff --git a/fonts/TewiFont/2238.png b/fonts/TewiFont/2238.png new file mode 100644 index 000000000..1043f4886 Binary files /dev/null and b/fonts/TewiFont/2238.png differ diff --git a/fonts/TewiFont/2239.png b/fonts/TewiFont/2239.png new file mode 100644 index 000000000..a0b365f7f Binary files /dev/null and b/fonts/TewiFont/2239.png differ diff --git a/fonts/TewiFont/223A.png b/fonts/TewiFont/223A.png new file mode 100644 index 000000000..63b4c2e60 Binary files /dev/null and b/fonts/TewiFont/223A.png differ diff --git a/fonts/TewiFont/223B.png b/fonts/TewiFont/223B.png new file mode 100644 index 000000000..b827a6abc Binary files /dev/null and b/fonts/TewiFont/223B.png differ diff --git a/fonts/TewiFont/223C.png b/fonts/TewiFont/223C.png new file mode 100644 index 000000000..45fe5ef24 Binary files /dev/null and b/fonts/TewiFont/223C.png differ diff --git a/fonts/TewiFont/223D.png b/fonts/TewiFont/223D.png new file mode 100644 index 000000000..119773742 Binary files /dev/null and b/fonts/TewiFont/223D.png differ diff --git a/fonts/TewiFont/223E.png b/fonts/TewiFont/223E.png new file mode 100644 index 000000000..34ee29010 Binary files /dev/null and b/fonts/TewiFont/223E.png differ diff --git a/fonts/TewiFont/223F.png b/fonts/TewiFont/223F.png new file mode 100644 index 000000000..c9fef7361 Binary files /dev/null and b/fonts/TewiFont/223F.png differ diff --git a/fonts/TewiFont/2240.png b/fonts/TewiFont/2240.png new file mode 100644 index 000000000..cddec3171 Binary files /dev/null and b/fonts/TewiFont/2240.png differ diff --git a/fonts/TewiFont/2241.png b/fonts/TewiFont/2241.png new file mode 100644 index 000000000..9132224e1 Binary files /dev/null and b/fonts/TewiFont/2241.png differ diff --git a/fonts/TewiFont/2242.png b/fonts/TewiFont/2242.png new file mode 100644 index 000000000..feae8ef5a Binary files /dev/null and b/fonts/TewiFont/2242.png differ diff --git a/fonts/TewiFont/2243.png b/fonts/TewiFont/2243.png new file mode 100644 index 000000000..cac5483d0 Binary files /dev/null and b/fonts/TewiFont/2243.png differ diff --git a/fonts/TewiFont/2244.png b/fonts/TewiFont/2244.png new file mode 100644 index 000000000..d767f2fac Binary files /dev/null and b/fonts/TewiFont/2244.png differ diff --git a/fonts/TewiFont/2245.png b/fonts/TewiFont/2245.png new file mode 100644 index 000000000..63e3ea8d4 Binary files /dev/null and b/fonts/TewiFont/2245.png differ diff --git a/fonts/TewiFont/2246.png b/fonts/TewiFont/2246.png new file mode 100644 index 000000000..5cf065328 Binary files /dev/null and b/fonts/TewiFont/2246.png differ diff --git a/fonts/TewiFont/2247.png b/fonts/TewiFont/2247.png new file mode 100644 index 000000000..570fa0adf Binary files /dev/null and b/fonts/TewiFont/2247.png differ diff --git a/fonts/TewiFont/2248.png b/fonts/TewiFont/2248.png new file mode 100644 index 000000000..2ac76a762 Binary files /dev/null and b/fonts/TewiFont/2248.png differ diff --git a/fonts/TewiFont/2249.png b/fonts/TewiFont/2249.png new file mode 100644 index 000000000..e040c6007 Binary files /dev/null and b/fonts/TewiFont/2249.png differ diff --git a/fonts/TewiFont/224A.png b/fonts/TewiFont/224A.png new file mode 100644 index 000000000..ae1a03def Binary files /dev/null and b/fonts/TewiFont/224A.png differ diff --git a/fonts/TewiFont/224B.png b/fonts/TewiFont/224B.png new file mode 100644 index 000000000..384955342 Binary files /dev/null and b/fonts/TewiFont/224B.png differ diff --git a/fonts/TewiFont/224C.png b/fonts/TewiFont/224C.png new file mode 100644 index 000000000..63e3ea8d4 Binary files /dev/null and b/fonts/TewiFont/224C.png differ diff --git a/fonts/TewiFont/224D.png b/fonts/TewiFont/224D.png new file mode 100644 index 000000000..52244cbc2 Binary files /dev/null and b/fonts/TewiFont/224D.png differ diff --git a/fonts/TewiFont/224E.png b/fonts/TewiFont/224E.png new file mode 100644 index 000000000..bb16d137e Binary files /dev/null and b/fonts/TewiFont/224E.png differ diff --git a/fonts/TewiFont/224F.png b/fonts/TewiFont/224F.png new file mode 100644 index 000000000..4c882dba6 Binary files /dev/null and b/fonts/TewiFont/224F.png differ diff --git a/fonts/TewiFont/2250.png b/fonts/TewiFont/2250.png new file mode 100644 index 000000000..857e10421 Binary files /dev/null and b/fonts/TewiFont/2250.png differ diff --git a/fonts/TewiFont/2251.png b/fonts/TewiFont/2251.png new file mode 100644 index 000000000..7b9f65be8 Binary files /dev/null and b/fonts/TewiFont/2251.png differ diff --git a/fonts/TewiFont/2252.png b/fonts/TewiFont/2252.png new file mode 100644 index 000000000..97b494d33 Binary files /dev/null and b/fonts/TewiFont/2252.png differ diff --git a/fonts/TewiFont/2253.png b/fonts/TewiFont/2253.png new file mode 100644 index 000000000..13ddf003b Binary files /dev/null and b/fonts/TewiFont/2253.png differ diff --git a/fonts/TewiFont/2254.png b/fonts/TewiFont/2254.png new file mode 100644 index 000000000..feee37739 Binary files /dev/null and b/fonts/TewiFont/2254.png differ diff --git a/fonts/TewiFont/2255.png b/fonts/TewiFont/2255.png new file mode 100644 index 000000000..bdf40f0db Binary files /dev/null and b/fonts/TewiFont/2255.png differ diff --git a/fonts/TewiFont/2256.png b/fonts/TewiFont/2256.png new file mode 100644 index 000000000..28ab36b33 Binary files /dev/null and b/fonts/TewiFont/2256.png differ diff --git a/fonts/TewiFont/2257.png b/fonts/TewiFont/2257.png new file mode 100644 index 000000000..15daddeca Binary files /dev/null and b/fonts/TewiFont/2257.png differ diff --git a/fonts/TewiFont/2258.png b/fonts/TewiFont/2258.png new file mode 100644 index 000000000..9a11c3944 Binary files /dev/null and b/fonts/TewiFont/2258.png differ diff --git a/fonts/TewiFont/2259.png b/fonts/TewiFont/2259.png new file mode 100644 index 000000000..285c0778e Binary files /dev/null and b/fonts/TewiFont/2259.png differ diff --git a/fonts/TewiFont/225A.png b/fonts/TewiFont/225A.png new file mode 100644 index 000000000..647834966 Binary files /dev/null and b/fonts/TewiFont/225A.png differ diff --git a/fonts/TewiFont/225B.png b/fonts/TewiFont/225B.png new file mode 100644 index 000000000..bddc1681e Binary files /dev/null and b/fonts/TewiFont/225B.png differ diff --git a/fonts/TewiFont/225C.png b/fonts/TewiFont/225C.png new file mode 100644 index 000000000..1c166286e Binary files /dev/null and b/fonts/TewiFont/225C.png differ diff --git a/fonts/TewiFont/225E.png b/fonts/TewiFont/225E.png new file mode 100644 index 000000000..f7138ae66 Binary files /dev/null and b/fonts/TewiFont/225E.png differ diff --git a/fonts/TewiFont/225F.png b/fonts/TewiFont/225F.png new file mode 100644 index 000000000..af4e38707 Binary files /dev/null and b/fonts/TewiFont/225F.png differ diff --git a/fonts/TewiFont/2260.png b/fonts/TewiFont/2260.png new file mode 100644 index 000000000..04f456d6b Binary files /dev/null and b/fonts/TewiFont/2260.png differ diff --git a/fonts/TewiFont/2261.png b/fonts/TewiFont/2261.png new file mode 100644 index 000000000..ca8568a3c Binary files /dev/null and b/fonts/TewiFont/2261.png differ diff --git a/fonts/TewiFont/2262.png b/fonts/TewiFont/2262.png new file mode 100644 index 000000000..3a008a0bb Binary files /dev/null and b/fonts/TewiFont/2262.png differ diff --git a/fonts/TewiFont/2263.png b/fonts/TewiFont/2263.png new file mode 100644 index 000000000..c43a5cfd0 Binary files /dev/null and b/fonts/TewiFont/2263.png differ diff --git a/fonts/TewiFont/2264.png b/fonts/TewiFont/2264.png new file mode 100644 index 000000000..e47ff7c5a Binary files /dev/null and b/fonts/TewiFont/2264.png differ diff --git a/fonts/TewiFont/2265.png b/fonts/TewiFont/2265.png new file mode 100644 index 000000000..8c0a64ec0 Binary files /dev/null and b/fonts/TewiFont/2265.png differ diff --git a/fonts/TewiFont/2266.png b/fonts/TewiFont/2266.png new file mode 100644 index 000000000..98eb3a3aa Binary files /dev/null and b/fonts/TewiFont/2266.png differ diff --git a/fonts/TewiFont/2267.png b/fonts/TewiFont/2267.png new file mode 100644 index 000000000..e6bc9e239 Binary files /dev/null and b/fonts/TewiFont/2267.png differ diff --git a/fonts/TewiFont/2268.png b/fonts/TewiFont/2268.png new file mode 100644 index 000000000..d009dc759 Binary files /dev/null and b/fonts/TewiFont/2268.png differ diff --git a/fonts/TewiFont/2269.png b/fonts/TewiFont/2269.png new file mode 100644 index 000000000..ed4d71fa0 Binary files /dev/null and b/fonts/TewiFont/2269.png differ diff --git a/fonts/TewiFont/226A.png b/fonts/TewiFont/226A.png new file mode 100644 index 000000000..cb153d913 Binary files /dev/null and b/fonts/TewiFont/226A.png differ diff --git a/fonts/TewiFont/226B.png b/fonts/TewiFont/226B.png new file mode 100644 index 000000000..6397a59ce Binary files /dev/null and b/fonts/TewiFont/226B.png differ diff --git a/fonts/TewiFont/226C.png b/fonts/TewiFont/226C.png new file mode 100644 index 000000000..99f3da556 Binary files /dev/null and b/fonts/TewiFont/226C.png differ diff --git a/fonts/TewiFont/226D.png b/fonts/TewiFont/226D.png new file mode 100644 index 000000000..e5c096c47 Binary files /dev/null and b/fonts/TewiFont/226D.png differ diff --git a/fonts/TewiFont/226E.png b/fonts/TewiFont/226E.png new file mode 100644 index 000000000..7a368d906 Binary files /dev/null and b/fonts/TewiFont/226E.png differ diff --git a/fonts/TewiFont/226F.png b/fonts/TewiFont/226F.png new file mode 100644 index 000000000..58ce48578 Binary files /dev/null and b/fonts/TewiFont/226F.png differ diff --git a/fonts/TewiFont/2270.png b/fonts/TewiFont/2270.png new file mode 100644 index 000000000..d8e0dd9b2 Binary files /dev/null and b/fonts/TewiFont/2270.png differ diff --git a/fonts/TewiFont/2271.png b/fonts/TewiFont/2271.png new file mode 100644 index 000000000..6d2e54eb2 Binary files /dev/null and b/fonts/TewiFont/2271.png differ diff --git a/fonts/TewiFont/2272.png b/fonts/TewiFont/2272.png new file mode 100644 index 000000000..14f79a3d7 Binary files /dev/null and b/fonts/TewiFont/2272.png differ diff --git a/fonts/TewiFont/2273.png b/fonts/TewiFont/2273.png new file mode 100644 index 000000000..c6517ea0b Binary files /dev/null and b/fonts/TewiFont/2273.png differ diff --git a/fonts/TewiFont/2274.png b/fonts/TewiFont/2274.png new file mode 100644 index 000000000..9e34f11f4 Binary files /dev/null and b/fonts/TewiFont/2274.png differ diff --git a/fonts/TewiFont/2275.png b/fonts/TewiFont/2275.png new file mode 100644 index 000000000..f0560e43b Binary files /dev/null and b/fonts/TewiFont/2275.png differ diff --git a/fonts/TewiFont/2276.png b/fonts/TewiFont/2276.png new file mode 100644 index 000000000..4211cdcff Binary files /dev/null and b/fonts/TewiFont/2276.png differ diff --git a/fonts/TewiFont/2277.png b/fonts/TewiFont/2277.png new file mode 100644 index 000000000..a9182fa9f Binary files /dev/null and b/fonts/TewiFont/2277.png differ diff --git a/fonts/TewiFont/2278.png b/fonts/TewiFont/2278.png new file mode 100644 index 000000000..fc047a377 Binary files /dev/null and b/fonts/TewiFont/2278.png differ diff --git a/fonts/TewiFont/2279.png b/fonts/TewiFont/2279.png new file mode 100644 index 000000000..bfd88ccbc Binary files /dev/null and b/fonts/TewiFont/2279.png differ diff --git a/fonts/TewiFont/227A.png b/fonts/TewiFont/227A.png new file mode 100644 index 000000000..fd5440e70 Binary files /dev/null and b/fonts/TewiFont/227A.png differ diff --git a/fonts/TewiFont/227B.png b/fonts/TewiFont/227B.png new file mode 100644 index 000000000..8305e92bc Binary files /dev/null and b/fonts/TewiFont/227B.png differ diff --git a/fonts/TewiFont/227C.png b/fonts/TewiFont/227C.png new file mode 100644 index 000000000..8c69e712b Binary files /dev/null and b/fonts/TewiFont/227C.png differ diff --git a/fonts/TewiFont/227D.png b/fonts/TewiFont/227D.png new file mode 100644 index 000000000..481301550 Binary files /dev/null and b/fonts/TewiFont/227D.png differ diff --git a/fonts/TewiFont/227E.png b/fonts/TewiFont/227E.png new file mode 100644 index 000000000..dd8896ab5 Binary files /dev/null and b/fonts/TewiFont/227E.png differ diff --git a/fonts/TewiFont/227F.png b/fonts/TewiFont/227F.png new file mode 100644 index 000000000..6e7dff129 Binary files /dev/null and b/fonts/TewiFont/227F.png differ diff --git a/fonts/TewiFont/2280.png b/fonts/TewiFont/2280.png new file mode 100644 index 000000000..588c8f17d Binary files /dev/null and b/fonts/TewiFont/2280.png differ diff --git a/fonts/TewiFont/2281.png b/fonts/TewiFont/2281.png new file mode 100644 index 000000000..a708630a3 Binary files /dev/null and b/fonts/TewiFont/2281.png differ diff --git a/fonts/TewiFont/2282.png b/fonts/TewiFont/2282.png new file mode 100644 index 000000000..ac96cb498 Binary files /dev/null and b/fonts/TewiFont/2282.png differ diff --git a/fonts/TewiFont/2283.png b/fonts/TewiFont/2283.png new file mode 100644 index 000000000..801b312f6 Binary files /dev/null and b/fonts/TewiFont/2283.png differ diff --git a/fonts/TewiFont/2284.png b/fonts/TewiFont/2284.png new file mode 100644 index 000000000..012ac4f81 Binary files /dev/null and b/fonts/TewiFont/2284.png differ diff --git a/fonts/TewiFont/2285.png b/fonts/TewiFont/2285.png new file mode 100644 index 000000000..ff5b2f0cd Binary files /dev/null and b/fonts/TewiFont/2285.png differ diff --git a/fonts/TewiFont/2286.png b/fonts/TewiFont/2286.png new file mode 100644 index 000000000..1dc3b28d3 Binary files /dev/null and b/fonts/TewiFont/2286.png differ diff --git a/fonts/TewiFont/2287.png b/fonts/TewiFont/2287.png new file mode 100644 index 000000000..f8fa0f39b Binary files /dev/null and b/fonts/TewiFont/2287.png differ diff --git a/fonts/TewiFont/2288.png b/fonts/TewiFont/2288.png new file mode 100644 index 000000000..cb6e21dd2 Binary files /dev/null and b/fonts/TewiFont/2288.png differ diff --git a/fonts/TewiFont/2289.png b/fonts/TewiFont/2289.png new file mode 100644 index 000000000..71a54a3b5 Binary files /dev/null and b/fonts/TewiFont/2289.png differ diff --git a/fonts/TewiFont/228A.png b/fonts/TewiFont/228A.png new file mode 100644 index 000000000..35ffe9a4f Binary files /dev/null and b/fonts/TewiFont/228A.png differ diff --git a/fonts/TewiFont/228B.png b/fonts/TewiFont/228B.png new file mode 100644 index 000000000..34c23f68c Binary files /dev/null and b/fonts/TewiFont/228B.png differ diff --git a/fonts/TewiFont/228C.png b/fonts/TewiFont/228C.png new file mode 100644 index 000000000..f7bff1a85 Binary files /dev/null and b/fonts/TewiFont/228C.png differ diff --git a/fonts/TewiFont/228D.png b/fonts/TewiFont/228D.png new file mode 100644 index 000000000..7a826c658 Binary files /dev/null and b/fonts/TewiFont/228D.png differ diff --git a/fonts/TewiFont/228E.png b/fonts/TewiFont/228E.png new file mode 100644 index 000000000..bcf624fc3 Binary files /dev/null and b/fonts/TewiFont/228E.png differ diff --git a/fonts/TewiFont/228F.png b/fonts/TewiFont/228F.png new file mode 100644 index 000000000..a19b304e0 Binary files /dev/null and b/fonts/TewiFont/228F.png differ diff --git a/fonts/TewiFont/2290.png b/fonts/TewiFont/2290.png new file mode 100644 index 000000000..c029f68a3 Binary files /dev/null and b/fonts/TewiFont/2290.png differ diff --git a/fonts/TewiFont/2291.png b/fonts/TewiFont/2291.png new file mode 100644 index 000000000..80997f0a2 Binary files /dev/null and b/fonts/TewiFont/2291.png differ diff --git a/fonts/TewiFont/2292.png b/fonts/TewiFont/2292.png new file mode 100644 index 000000000..0a29019f6 Binary files /dev/null and b/fonts/TewiFont/2292.png differ diff --git a/fonts/TewiFont/2293.png b/fonts/TewiFont/2293.png new file mode 100644 index 000000000..d16551b22 Binary files /dev/null and b/fonts/TewiFont/2293.png differ diff --git a/fonts/TewiFont/2294.png b/fonts/TewiFont/2294.png new file mode 100644 index 000000000..c715d1f5d Binary files /dev/null and b/fonts/TewiFont/2294.png differ diff --git a/fonts/TewiFont/2295.png b/fonts/TewiFont/2295.png new file mode 100644 index 000000000..42ed96fe5 Binary files /dev/null and b/fonts/TewiFont/2295.png differ diff --git a/fonts/TewiFont/2296.png b/fonts/TewiFont/2296.png new file mode 100644 index 000000000..63d3fb846 Binary files /dev/null and b/fonts/TewiFont/2296.png differ diff --git a/fonts/TewiFont/2297.png b/fonts/TewiFont/2297.png new file mode 100644 index 000000000..d095a408f Binary files /dev/null and b/fonts/TewiFont/2297.png differ diff --git a/fonts/TewiFont/2298.png b/fonts/TewiFont/2298.png new file mode 100644 index 000000000..7303bb642 Binary files /dev/null and b/fonts/TewiFont/2298.png differ diff --git a/fonts/TewiFont/2299.png b/fonts/TewiFont/2299.png new file mode 100644 index 000000000..87ad19766 Binary files /dev/null and b/fonts/TewiFont/2299.png differ diff --git a/fonts/TewiFont/229B.png b/fonts/TewiFont/229B.png new file mode 100644 index 000000000..87ad19766 Binary files /dev/null and b/fonts/TewiFont/229B.png differ diff --git a/fonts/TewiFont/229D.png b/fonts/TewiFont/229D.png new file mode 100644 index 000000000..63d3fb846 Binary files /dev/null and b/fonts/TewiFont/229D.png differ diff --git a/fonts/TewiFont/229E.png b/fonts/TewiFont/229E.png new file mode 100644 index 000000000..793ddf43a Binary files /dev/null and b/fonts/TewiFont/229E.png differ diff --git a/fonts/TewiFont/229F.png b/fonts/TewiFont/229F.png new file mode 100644 index 000000000..c5c707533 Binary files /dev/null and b/fonts/TewiFont/229F.png differ diff --git a/fonts/TewiFont/22A0.png b/fonts/TewiFont/22A0.png new file mode 100644 index 000000000..80fca1deb Binary files /dev/null and b/fonts/TewiFont/22A0.png differ diff --git a/fonts/TewiFont/22A1.png b/fonts/TewiFont/22A1.png new file mode 100644 index 000000000..6481381e7 Binary files /dev/null and b/fonts/TewiFont/22A1.png differ diff --git a/fonts/TewiFont/22A2.png b/fonts/TewiFont/22A2.png new file mode 100644 index 000000000..0656a8dbb Binary files /dev/null and b/fonts/TewiFont/22A2.png differ diff --git a/fonts/TewiFont/22A3.png b/fonts/TewiFont/22A3.png new file mode 100644 index 000000000..0d9f1262e Binary files /dev/null and b/fonts/TewiFont/22A3.png differ diff --git a/fonts/TewiFont/22A4.png b/fonts/TewiFont/22A4.png new file mode 100644 index 000000000..fcb690d93 Binary files /dev/null and b/fonts/TewiFont/22A4.png differ diff --git a/fonts/TewiFont/22A5.png b/fonts/TewiFont/22A5.png new file mode 100644 index 000000000..bbe196984 Binary files /dev/null and b/fonts/TewiFont/22A5.png differ diff --git a/fonts/TewiFont/22A6.png b/fonts/TewiFont/22A6.png new file mode 100644 index 000000000..253e1a3de Binary files /dev/null and b/fonts/TewiFont/22A6.png differ diff --git a/fonts/TewiFont/22A7.png b/fonts/TewiFont/22A7.png new file mode 100644 index 000000000..2779277d5 Binary files /dev/null and b/fonts/TewiFont/22A7.png differ diff --git a/fonts/TewiFont/22A8.png b/fonts/TewiFont/22A8.png new file mode 100644 index 000000000..7fa173a85 Binary files /dev/null and b/fonts/TewiFont/22A8.png differ diff --git a/fonts/TewiFont/22A9.png b/fonts/TewiFont/22A9.png new file mode 100644 index 000000000..a1db604af Binary files /dev/null and b/fonts/TewiFont/22A9.png differ diff --git a/fonts/TewiFont/22AA.png b/fonts/TewiFont/22AA.png new file mode 100644 index 000000000..cf78d3cd1 Binary files /dev/null and b/fonts/TewiFont/22AA.png differ diff --git a/fonts/TewiFont/22AB.png b/fonts/TewiFont/22AB.png new file mode 100644 index 000000000..c47e33ec4 Binary files /dev/null and b/fonts/TewiFont/22AB.png differ diff --git a/fonts/TewiFont/22AC.png b/fonts/TewiFont/22AC.png new file mode 100644 index 000000000..63beabaa9 Binary files /dev/null and b/fonts/TewiFont/22AC.png differ diff --git a/fonts/TewiFont/22AD.png b/fonts/TewiFont/22AD.png new file mode 100644 index 000000000..04c2a844c Binary files /dev/null and b/fonts/TewiFont/22AD.png differ diff --git a/fonts/TewiFont/22AE.png b/fonts/TewiFont/22AE.png new file mode 100644 index 000000000..91f8bdeb2 Binary files /dev/null and b/fonts/TewiFont/22AE.png differ diff --git a/fonts/TewiFont/22AF.png b/fonts/TewiFont/22AF.png new file mode 100644 index 000000000..35ffec5bc Binary files /dev/null and b/fonts/TewiFont/22AF.png differ diff --git a/fonts/TewiFont/22B0.png b/fonts/TewiFont/22B0.png new file mode 100644 index 000000000..c9c607e4c Binary files /dev/null and b/fonts/TewiFont/22B0.png differ diff --git a/fonts/TewiFont/22B1.png b/fonts/TewiFont/22B1.png new file mode 100644 index 000000000..7faa32bb1 Binary files /dev/null and b/fonts/TewiFont/22B1.png differ diff --git a/fonts/TewiFont/22B2.png b/fonts/TewiFont/22B2.png new file mode 100644 index 000000000..e53d51dd7 Binary files /dev/null and b/fonts/TewiFont/22B2.png differ diff --git a/fonts/TewiFont/22B3.png b/fonts/TewiFont/22B3.png new file mode 100644 index 000000000..5dc88c7fe Binary files /dev/null and b/fonts/TewiFont/22B3.png differ diff --git a/fonts/TewiFont/22B4.png b/fonts/TewiFont/22B4.png new file mode 100644 index 000000000..b027171f0 Binary files /dev/null and b/fonts/TewiFont/22B4.png differ diff --git a/fonts/TewiFont/22B5.png b/fonts/TewiFont/22B5.png new file mode 100644 index 000000000..ba4deafc1 Binary files /dev/null and b/fonts/TewiFont/22B5.png differ diff --git a/fonts/TewiFont/22B6.png b/fonts/TewiFont/22B6.png new file mode 100644 index 000000000..02dbf37ef Binary files /dev/null and b/fonts/TewiFont/22B6.png differ diff --git a/fonts/TewiFont/22B7.png b/fonts/TewiFont/22B7.png new file mode 100644 index 000000000..c89f1c755 Binary files /dev/null and b/fonts/TewiFont/22B7.png differ diff --git a/fonts/TewiFont/22B8.png b/fonts/TewiFont/22B8.png new file mode 100644 index 000000000..beb01d9bb Binary files /dev/null and b/fonts/TewiFont/22B8.png differ diff --git a/fonts/TewiFont/22B9.png b/fonts/TewiFont/22B9.png new file mode 100644 index 000000000..beac45c46 Binary files /dev/null and b/fonts/TewiFont/22B9.png differ diff --git a/fonts/TewiFont/22BA.png b/fonts/TewiFont/22BA.png new file mode 100644 index 000000000..4bffb6e9d Binary files /dev/null and b/fonts/TewiFont/22BA.png differ diff --git a/fonts/TewiFont/22BB.png b/fonts/TewiFont/22BB.png new file mode 100644 index 000000000..0c4cdbc58 Binary files /dev/null and b/fonts/TewiFont/22BB.png differ diff --git a/fonts/TewiFont/22BC.png b/fonts/TewiFont/22BC.png new file mode 100644 index 000000000..30e6ed96f Binary files /dev/null and b/fonts/TewiFont/22BC.png differ diff --git a/fonts/TewiFont/22BD.png b/fonts/TewiFont/22BD.png new file mode 100644 index 000000000..a276eb79b Binary files /dev/null and b/fonts/TewiFont/22BD.png differ diff --git a/fonts/TewiFont/22BE.png b/fonts/TewiFont/22BE.png new file mode 100644 index 000000000..284265ba1 Binary files /dev/null and b/fonts/TewiFont/22BE.png differ diff --git a/fonts/TewiFont/22BF.png b/fonts/TewiFont/22BF.png new file mode 100644 index 000000000..3d0ce4f90 Binary files /dev/null and b/fonts/TewiFont/22BF.png differ diff --git a/fonts/TewiFont/22C0.png b/fonts/TewiFont/22C0.png new file mode 100644 index 000000000..12dd0b086 Binary files /dev/null and b/fonts/TewiFont/22C0.png differ diff --git a/fonts/TewiFont/22C1.png b/fonts/TewiFont/22C1.png new file mode 100644 index 000000000..fd5483ad5 Binary files /dev/null and b/fonts/TewiFont/22C1.png differ diff --git a/fonts/TewiFont/22C2.png b/fonts/TewiFont/22C2.png new file mode 100644 index 000000000..e717dd495 Binary files /dev/null and b/fonts/TewiFont/22C2.png differ diff --git a/fonts/TewiFont/22C3.png b/fonts/TewiFont/22C3.png new file mode 100644 index 000000000..f73200ff1 Binary files /dev/null and b/fonts/TewiFont/22C3.png differ diff --git a/fonts/TewiFont/22C4.png b/fonts/TewiFont/22C4.png new file mode 100644 index 000000000..8e90b21fb Binary files /dev/null and b/fonts/TewiFont/22C4.png differ diff --git a/fonts/TewiFont/22C5.png b/fonts/TewiFont/22C5.png new file mode 100644 index 000000000..4c96caeeb Binary files /dev/null and b/fonts/TewiFont/22C5.png differ diff --git a/fonts/TewiFont/22C6.png b/fonts/TewiFont/22C6.png new file mode 100644 index 000000000..1183a54d3 Binary files /dev/null and b/fonts/TewiFont/22C6.png differ diff --git a/fonts/TewiFont/22C7.png b/fonts/TewiFont/22C7.png new file mode 100644 index 000000000..e0e49d4bc Binary files /dev/null and b/fonts/TewiFont/22C7.png differ diff --git a/fonts/TewiFont/22C8.png b/fonts/TewiFont/22C8.png new file mode 100644 index 000000000..27dab3019 Binary files /dev/null and b/fonts/TewiFont/22C8.png differ diff --git a/fonts/TewiFont/22C9.png b/fonts/TewiFont/22C9.png new file mode 100644 index 000000000..963f09440 Binary files /dev/null and b/fonts/TewiFont/22C9.png differ diff --git a/fonts/TewiFont/22CA.png b/fonts/TewiFont/22CA.png new file mode 100644 index 000000000..8b6adca6e Binary files /dev/null and b/fonts/TewiFont/22CA.png differ diff --git a/fonts/TewiFont/22CB.png b/fonts/TewiFont/22CB.png new file mode 100644 index 000000000..084459a92 Binary files /dev/null and b/fonts/TewiFont/22CB.png differ diff --git a/fonts/TewiFont/22CC.png b/fonts/TewiFont/22CC.png new file mode 100644 index 000000000..b24b9fd8e Binary files /dev/null and b/fonts/TewiFont/22CC.png differ diff --git a/fonts/TewiFont/22CD.png b/fonts/TewiFont/22CD.png new file mode 100644 index 000000000..1a67d7205 Binary files /dev/null and b/fonts/TewiFont/22CD.png differ diff --git a/fonts/TewiFont/22CE.png b/fonts/TewiFont/22CE.png new file mode 100644 index 000000000..afb2af2d6 Binary files /dev/null and b/fonts/TewiFont/22CE.png differ diff --git a/fonts/TewiFont/22CF.png b/fonts/TewiFont/22CF.png new file mode 100644 index 000000000..21beedc3e Binary files /dev/null and b/fonts/TewiFont/22CF.png differ diff --git a/fonts/TewiFont/22D0.png b/fonts/TewiFont/22D0.png new file mode 100644 index 000000000..f45ad439c Binary files /dev/null and b/fonts/TewiFont/22D0.png differ diff --git a/fonts/TewiFont/22D1.png b/fonts/TewiFont/22D1.png new file mode 100644 index 000000000..3e5f22586 Binary files /dev/null and b/fonts/TewiFont/22D1.png differ diff --git a/fonts/TewiFont/22D2.png b/fonts/TewiFont/22D2.png new file mode 100644 index 000000000..d67134e1b Binary files /dev/null and b/fonts/TewiFont/22D2.png differ diff --git a/fonts/TewiFont/22D3.png b/fonts/TewiFont/22D3.png new file mode 100644 index 000000000..35959d9f6 Binary files /dev/null and b/fonts/TewiFont/22D3.png differ diff --git a/fonts/TewiFont/22D4.png b/fonts/TewiFont/22D4.png new file mode 100644 index 000000000..7b7635e68 Binary files /dev/null and b/fonts/TewiFont/22D4.png differ diff --git a/fonts/TewiFont/22D5.png b/fonts/TewiFont/22D5.png new file mode 100644 index 000000000..f471a4ea5 Binary files /dev/null and b/fonts/TewiFont/22D5.png differ diff --git a/fonts/TewiFont/22D6.png b/fonts/TewiFont/22D6.png new file mode 100644 index 000000000..90acf6017 Binary files /dev/null and b/fonts/TewiFont/22D6.png differ diff --git a/fonts/TewiFont/22D7.png b/fonts/TewiFont/22D7.png new file mode 100644 index 000000000..196f873c3 Binary files /dev/null and b/fonts/TewiFont/22D7.png differ diff --git a/fonts/TewiFont/22D8.png b/fonts/TewiFont/22D8.png new file mode 100644 index 000000000..67cea6e9f Binary files /dev/null and b/fonts/TewiFont/22D8.png differ diff --git a/fonts/TewiFont/22D9.png b/fonts/TewiFont/22D9.png new file mode 100644 index 000000000..57684171d Binary files /dev/null and b/fonts/TewiFont/22D9.png differ diff --git a/fonts/TewiFont/22DA.png b/fonts/TewiFont/22DA.png new file mode 100644 index 000000000..c7f04ef31 Binary files /dev/null and b/fonts/TewiFont/22DA.png differ diff --git a/fonts/TewiFont/22DB.png b/fonts/TewiFont/22DB.png new file mode 100644 index 000000000..e32e386de Binary files /dev/null and b/fonts/TewiFont/22DB.png differ diff --git a/fonts/TewiFont/22DC.png b/fonts/TewiFont/22DC.png new file mode 100644 index 000000000..eb7483c8e Binary files /dev/null and b/fonts/TewiFont/22DC.png differ diff --git a/fonts/TewiFont/22DD.png b/fonts/TewiFont/22DD.png new file mode 100644 index 000000000..1a4199a17 Binary files /dev/null and b/fonts/TewiFont/22DD.png differ diff --git a/fonts/TewiFont/22DE.png b/fonts/TewiFont/22DE.png new file mode 100644 index 000000000..411959bce Binary files /dev/null and b/fonts/TewiFont/22DE.png differ diff --git a/fonts/TewiFont/22DF.png b/fonts/TewiFont/22DF.png new file mode 100644 index 000000000..33da4e9fe Binary files /dev/null and b/fonts/TewiFont/22DF.png differ diff --git a/fonts/TewiFont/22E0.png b/fonts/TewiFont/22E0.png new file mode 100644 index 000000000..fa75a2ab9 Binary files /dev/null and b/fonts/TewiFont/22E0.png differ diff --git a/fonts/TewiFont/22E1.png b/fonts/TewiFont/22E1.png new file mode 100644 index 000000000..8be4bc84e Binary files /dev/null and b/fonts/TewiFont/22E1.png differ diff --git a/fonts/TewiFont/22E2.png b/fonts/TewiFont/22E2.png new file mode 100644 index 000000000..173abfbad Binary files /dev/null and b/fonts/TewiFont/22E2.png differ diff --git a/fonts/TewiFont/22E3.png b/fonts/TewiFont/22E3.png new file mode 100644 index 000000000..d0761bbc0 Binary files /dev/null and b/fonts/TewiFont/22E3.png differ diff --git a/fonts/TewiFont/22E4.png b/fonts/TewiFont/22E4.png new file mode 100644 index 000000000..b84eac3d3 Binary files /dev/null and b/fonts/TewiFont/22E4.png differ diff --git a/fonts/TewiFont/22E5.png b/fonts/TewiFont/22E5.png new file mode 100644 index 000000000..3e341fe89 Binary files /dev/null and b/fonts/TewiFont/22E5.png differ diff --git a/fonts/TewiFont/22E6.png b/fonts/TewiFont/22E6.png new file mode 100644 index 000000000..721931b9f Binary files /dev/null and b/fonts/TewiFont/22E6.png differ diff --git a/fonts/TewiFont/22E7.png b/fonts/TewiFont/22E7.png new file mode 100644 index 000000000..324981287 Binary files /dev/null and b/fonts/TewiFont/22E7.png differ diff --git a/fonts/TewiFont/22E8.png b/fonts/TewiFont/22E8.png new file mode 100644 index 000000000..e026f166e Binary files /dev/null and b/fonts/TewiFont/22E8.png differ diff --git a/fonts/TewiFont/22E9.png b/fonts/TewiFont/22E9.png new file mode 100644 index 000000000..466aaa060 Binary files /dev/null and b/fonts/TewiFont/22E9.png differ diff --git a/fonts/TewiFont/22EA.png b/fonts/TewiFont/22EA.png new file mode 100644 index 000000000..1ad9c1f45 Binary files /dev/null and b/fonts/TewiFont/22EA.png differ diff --git a/fonts/TewiFont/22EB.png b/fonts/TewiFont/22EB.png new file mode 100644 index 000000000..5a185737a Binary files /dev/null and b/fonts/TewiFont/22EB.png differ diff --git a/fonts/TewiFont/22EC.png b/fonts/TewiFont/22EC.png new file mode 100644 index 000000000..5900a79c9 Binary files /dev/null and b/fonts/TewiFont/22EC.png differ diff --git a/fonts/TewiFont/22ED.png b/fonts/TewiFont/22ED.png new file mode 100644 index 000000000..5356259db Binary files /dev/null and b/fonts/TewiFont/22ED.png differ diff --git a/fonts/TewiFont/22EE.png b/fonts/TewiFont/22EE.png new file mode 100644 index 000000000..cad8404ca Binary files /dev/null and b/fonts/TewiFont/22EE.png differ diff --git a/fonts/TewiFont/22EF.png b/fonts/TewiFont/22EF.png new file mode 100644 index 000000000..e9858b7aa Binary files /dev/null and b/fonts/TewiFont/22EF.png differ diff --git a/fonts/TewiFont/22F0.png b/fonts/TewiFont/22F0.png new file mode 100644 index 000000000..5eeb2c371 Binary files /dev/null and b/fonts/TewiFont/22F0.png differ diff --git a/fonts/TewiFont/22F1.png b/fonts/TewiFont/22F1.png new file mode 100644 index 000000000..e1fc217d1 Binary files /dev/null and b/fonts/TewiFont/22F1.png differ diff --git a/fonts/TewiFont/22F2.png b/fonts/TewiFont/22F2.png new file mode 100644 index 000000000..376e2d07f Binary files /dev/null and b/fonts/TewiFont/22F2.png differ diff --git a/fonts/TewiFont/22F3.png b/fonts/TewiFont/22F3.png new file mode 100644 index 000000000..911458398 Binary files /dev/null and b/fonts/TewiFont/22F3.png differ diff --git a/fonts/TewiFont/22F4.png b/fonts/TewiFont/22F4.png new file mode 100644 index 000000000..911458398 Binary files /dev/null and b/fonts/TewiFont/22F4.png differ diff --git a/fonts/TewiFont/22F5.png b/fonts/TewiFont/22F5.png new file mode 100644 index 000000000..248769a18 Binary files /dev/null and b/fonts/TewiFont/22F5.png differ diff --git a/fonts/TewiFont/22F6.png b/fonts/TewiFont/22F6.png new file mode 100644 index 000000000..606eb0937 Binary files /dev/null and b/fonts/TewiFont/22F6.png differ diff --git a/fonts/TewiFont/22F7.png b/fonts/TewiFont/22F7.png new file mode 100644 index 000000000..c0d6513c0 Binary files /dev/null and b/fonts/TewiFont/22F7.png differ diff --git a/fonts/TewiFont/22F8.png b/fonts/TewiFont/22F8.png new file mode 100644 index 000000000..fa8d17316 Binary files /dev/null and b/fonts/TewiFont/22F8.png differ diff --git a/fonts/TewiFont/22F9.png b/fonts/TewiFont/22F9.png new file mode 100644 index 000000000..8a1dac082 Binary files /dev/null and b/fonts/TewiFont/22F9.png differ diff --git a/fonts/TewiFont/22FA.png b/fonts/TewiFont/22FA.png new file mode 100644 index 000000000..85e3cec89 Binary files /dev/null and b/fonts/TewiFont/22FA.png differ diff --git a/fonts/TewiFont/22FB.png b/fonts/TewiFont/22FB.png new file mode 100644 index 000000000..88a32dc48 Binary files /dev/null and b/fonts/TewiFont/22FB.png differ diff --git a/fonts/TewiFont/22FC.png b/fonts/TewiFont/22FC.png new file mode 100644 index 000000000..88a32dc48 Binary files /dev/null and b/fonts/TewiFont/22FC.png differ diff --git a/fonts/TewiFont/22FD.png b/fonts/TewiFont/22FD.png new file mode 100644 index 000000000..df85128af Binary files /dev/null and b/fonts/TewiFont/22FD.png differ diff --git a/fonts/TewiFont/22FE.png b/fonts/TewiFont/22FE.png new file mode 100644 index 000000000..5a0b1963a Binary files /dev/null and b/fonts/TewiFont/22FE.png differ diff --git a/fonts/TewiFont/22FF.png b/fonts/TewiFont/22FF.png new file mode 100644 index 000000000..a2f30da4d Binary files /dev/null and b/fonts/TewiFont/22FF.png differ diff --git a/fonts/TewiFont/2300.png b/fonts/TewiFont/2300.png new file mode 100644 index 000000000..0e35328c4 Binary files /dev/null and b/fonts/TewiFont/2300.png differ diff --git a/fonts/TewiFont/2301.png b/fonts/TewiFont/2301.png new file mode 100644 index 000000000..87b601ab8 Binary files /dev/null and b/fonts/TewiFont/2301.png differ diff --git a/fonts/TewiFont/2302.png b/fonts/TewiFont/2302.png new file mode 100644 index 000000000..a35f9075c Binary files /dev/null and b/fonts/TewiFont/2302.png differ diff --git a/fonts/TewiFont/2303.png b/fonts/TewiFont/2303.png new file mode 100644 index 000000000..4983f1b36 Binary files /dev/null and b/fonts/TewiFont/2303.png differ diff --git a/fonts/TewiFont/2304.png b/fonts/TewiFont/2304.png new file mode 100644 index 000000000..95c4f59ff Binary files /dev/null and b/fonts/TewiFont/2304.png differ diff --git a/fonts/TewiFont/2305.png b/fonts/TewiFont/2305.png new file mode 100644 index 000000000..65de56b80 Binary files /dev/null and b/fonts/TewiFont/2305.png differ diff --git a/fonts/TewiFont/2306.png b/fonts/TewiFont/2306.png new file mode 100644 index 000000000..c4748ced6 Binary files /dev/null and b/fonts/TewiFont/2306.png differ diff --git a/fonts/TewiFont/2307.png b/fonts/TewiFont/2307.png new file mode 100644 index 000000000..612556d60 Binary files /dev/null and b/fonts/TewiFont/2307.png differ diff --git a/fonts/TewiFont/2308.png b/fonts/TewiFont/2308.png new file mode 100644 index 000000000..8494e34ee Binary files /dev/null and b/fonts/TewiFont/2308.png differ diff --git a/fonts/TewiFont/2309.png b/fonts/TewiFont/2309.png new file mode 100644 index 000000000..58d7803b6 Binary files /dev/null and b/fonts/TewiFont/2309.png differ diff --git a/fonts/TewiFont/230A.png b/fonts/TewiFont/230A.png new file mode 100644 index 000000000..0c92abed7 Binary files /dev/null and b/fonts/TewiFont/230A.png differ diff --git a/fonts/TewiFont/230B.png b/fonts/TewiFont/230B.png new file mode 100644 index 000000000..b956f1daa Binary files /dev/null and b/fonts/TewiFont/230B.png differ diff --git a/fonts/TewiFont/230C.png b/fonts/TewiFont/230C.png new file mode 100644 index 000000000..6a30dd151 Binary files /dev/null and b/fonts/TewiFont/230C.png differ diff --git a/fonts/TewiFont/230D.png b/fonts/TewiFont/230D.png new file mode 100644 index 000000000..f23bb2c1a Binary files /dev/null and b/fonts/TewiFont/230D.png differ diff --git a/fonts/TewiFont/230E.png b/fonts/TewiFont/230E.png new file mode 100644 index 000000000..3c59015ba Binary files /dev/null and b/fonts/TewiFont/230E.png differ diff --git a/fonts/TewiFont/230F.png b/fonts/TewiFont/230F.png new file mode 100644 index 000000000..651316b90 Binary files /dev/null and b/fonts/TewiFont/230F.png differ diff --git a/fonts/TewiFont/2310.png b/fonts/TewiFont/2310.png new file mode 100644 index 000000000..6bb596503 Binary files /dev/null and b/fonts/TewiFont/2310.png differ diff --git a/fonts/TewiFont/2311.png b/fonts/TewiFont/2311.png new file mode 100644 index 000000000..2e9765d20 Binary files /dev/null and b/fonts/TewiFont/2311.png differ diff --git a/fonts/TewiFont/2312.png b/fonts/TewiFont/2312.png new file mode 100644 index 000000000..69b977f26 Binary files /dev/null and b/fonts/TewiFont/2312.png differ diff --git a/fonts/TewiFont/2313.png b/fonts/TewiFont/2313.png new file mode 100644 index 000000000..ffb7730b8 Binary files /dev/null and b/fonts/TewiFont/2313.png differ diff --git a/fonts/TewiFont/2314.png b/fonts/TewiFont/2314.png new file mode 100644 index 000000000..9e0432ed4 Binary files /dev/null and b/fonts/TewiFont/2314.png differ diff --git a/fonts/TewiFont/2315.png b/fonts/TewiFont/2315.png new file mode 100644 index 000000000..fe5a6405a Binary files /dev/null and b/fonts/TewiFont/2315.png differ diff --git a/fonts/TewiFont/2316.png b/fonts/TewiFont/2316.png new file mode 100644 index 000000000..028bd0bb5 Binary files /dev/null and b/fonts/TewiFont/2316.png differ diff --git a/fonts/TewiFont/2317.png b/fonts/TewiFont/2317.png new file mode 100644 index 000000000..d887e96c2 Binary files /dev/null and b/fonts/TewiFont/2317.png differ diff --git a/fonts/TewiFont/2318.png b/fonts/TewiFont/2318.png new file mode 100644 index 000000000..360750509 Binary files /dev/null and b/fonts/TewiFont/2318.png differ diff --git a/fonts/TewiFont/2319.png b/fonts/TewiFont/2319.png new file mode 100644 index 000000000..9c3cf22ae Binary files /dev/null and b/fonts/TewiFont/2319.png differ diff --git a/fonts/TewiFont/231A.png b/fonts/TewiFont/231A.png new file mode 100644 index 000000000..98f2f4cab Binary files /dev/null and b/fonts/TewiFont/231A.png differ diff --git a/fonts/TewiFont/231B.png b/fonts/TewiFont/231B.png new file mode 100644 index 000000000..d3203013d Binary files /dev/null and b/fonts/TewiFont/231B.png differ diff --git a/fonts/TewiFont/231C.png b/fonts/TewiFont/231C.png new file mode 100644 index 000000000..ba23dfd86 Binary files /dev/null and b/fonts/TewiFont/231C.png differ diff --git a/fonts/TewiFont/231D.png b/fonts/TewiFont/231D.png new file mode 100644 index 000000000..b5f9be7c5 Binary files /dev/null and b/fonts/TewiFont/231D.png differ diff --git a/fonts/TewiFont/231E.png b/fonts/TewiFont/231E.png new file mode 100644 index 000000000..9936b7089 Binary files /dev/null and b/fonts/TewiFont/231E.png differ diff --git a/fonts/TewiFont/231F.png b/fonts/TewiFont/231F.png new file mode 100644 index 000000000..53461759d Binary files /dev/null and b/fonts/TewiFont/231F.png differ diff --git a/fonts/TewiFont/2320.png b/fonts/TewiFont/2320.png new file mode 100644 index 000000000..74640709a Binary files /dev/null and b/fonts/TewiFont/2320.png differ diff --git a/fonts/TewiFont/2322.png b/fonts/TewiFont/2322.png new file mode 100644 index 000000000..a30398a0d Binary files /dev/null and b/fonts/TewiFont/2322.png differ diff --git a/fonts/TewiFont/2323.png b/fonts/TewiFont/2323.png new file mode 100644 index 000000000..589b0c950 Binary files /dev/null and b/fonts/TewiFont/2323.png differ diff --git a/fonts/TewiFont/2324.png b/fonts/TewiFont/2324.png new file mode 100644 index 000000000..5a0f4c7ff Binary files /dev/null and b/fonts/TewiFont/2324.png differ diff --git a/fonts/TewiFont/2325.png b/fonts/TewiFont/2325.png new file mode 100644 index 000000000..f771be9da Binary files /dev/null and b/fonts/TewiFont/2325.png differ diff --git a/fonts/TewiFont/2326.png b/fonts/TewiFont/2326.png new file mode 100644 index 000000000..a67445c8f Binary files /dev/null and b/fonts/TewiFont/2326.png differ diff --git a/fonts/TewiFont/2327.png b/fonts/TewiFont/2327.png new file mode 100644 index 000000000..5b2d504d7 Binary files /dev/null and b/fonts/TewiFont/2327.png differ diff --git a/fonts/TewiFont/2328.png b/fonts/TewiFont/2328.png new file mode 100644 index 000000000..927c5c786 Binary files /dev/null and b/fonts/TewiFont/2328.png differ diff --git a/fonts/TewiFont/232B.png b/fonts/TewiFont/232B.png new file mode 100644 index 000000000..d6e65a288 Binary files /dev/null and b/fonts/TewiFont/232B.png differ diff --git a/fonts/TewiFont/232D.png b/fonts/TewiFont/232D.png new file mode 100644 index 000000000..1e8162797 Binary files /dev/null and b/fonts/TewiFont/232D.png differ diff --git a/fonts/TewiFont/232F.png b/fonts/TewiFont/232F.png new file mode 100644 index 000000000..496cc7f09 Binary files /dev/null and b/fonts/TewiFont/232F.png differ diff --git a/fonts/TewiFont/2330.png b/fonts/TewiFont/2330.png new file mode 100644 index 000000000..7b745e819 Binary files /dev/null and b/fonts/TewiFont/2330.png differ diff --git a/fonts/TewiFont/2331.png b/fonts/TewiFont/2331.png new file mode 100644 index 000000000..c40b73c72 Binary files /dev/null and b/fonts/TewiFont/2331.png differ diff --git a/fonts/TewiFont/2332.png b/fonts/TewiFont/2332.png new file mode 100644 index 000000000..f874b6f09 Binary files /dev/null and b/fonts/TewiFont/2332.png differ diff --git a/fonts/TewiFont/2333.png b/fonts/TewiFont/2333.png new file mode 100644 index 000000000..5e3c2b74c Binary files /dev/null and b/fonts/TewiFont/2333.png differ diff --git a/fonts/TewiFont/2334.png b/fonts/TewiFont/2334.png new file mode 100644 index 000000000..044057966 Binary files /dev/null and b/fonts/TewiFont/2334.png differ diff --git a/fonts/TewiFont/2335.png b/fonts/TewiFont/2335.png new file mode 100644 index 000000000..95c4f59ff Binary files /dev/null and b/fonts/TewiFont/2335.png differ diff --git a/fonts/TewiFont/2336.png b/fonts/TewiFont/2336.png new file mode 100644 index 000000000..4f7c2bc86 Binary files /dev/null and b/fonts/TewiFont/2336.png differ diff --git a/fonts/TewiFont/2337.png b/fonts/TewiFont/2337.png new file mode 100644 index 000000000..8f57b6ef5 Binary files /dev/null and b/fonts/TewiFont/2337.png differ diff --git a/fonts/TewiFont/2338.png b/fonts/TewiFont/2338.png new file mode 100644 index 000000000..4417c4401 Binary files /dev/null and b/fonts/TewiFont/2338.png differ diff --git a/fonts/TewiFont/2339.png b/fonts/TewiFont/2339.png new file mode 100644 index 000000000..1b1624852 Binary files /dev/null and b/fonts/TewiFont/2339.png differ diff --git a/fonts/TewiFont/233A.png b/fonts/TewiFont/233A.png new file mode 100644 index 000000000..290d61186 Binary files /dev/null and b/fonts/TewiFont/233A.png differ diff --git a/fonts/TewiFont/233B.png b/fonts/TewiFont/233B.png new file mode 100644 index 000000000..981f41d56 Binary files /dev/null and b/fonts/TewiFont/233B.png differ diff --git a/fonts/TewiFont/233C.png b/fonts/TewiFont/233C.png new file mode 100644 index 000000000..17641e6d5 Binary files /dev/null and b/fonts/TewiFont/233C.png differ diff --git a/fonts/TewiFont/233D.png b/fonts/TewiFont/233D.png new file mode 100644 index 000000000..3ab5d3fbe Binary files /dev/null and b/fonts/TewiFont/233D.png differ diff --git a/fonts/TewiFont/233E.png b/fonts/TewiFont/233E.png new file mode 100644 index 000000000..05a42f27c Binary files /dev/null and b/fonts/TewiFont/233E.png differ diff --git a/fonts/TewiFont/233F.png b/fonts/TewiFont/233F.png new file mode 100644 index 000000000..fd8a6b392 Binary files /dev/null and b/fonts/TewiFont/233F.png differ diff --git a/fonts/TewiFont/2340.png b/fonts/TewiFont/2340.png new file mode 100644 index 000000000..c442af068 Binary files /dev/null and b/fonts/TewiFont/2340.png differ diff --git a/fonts/TewiFont/2341.png b/fonts/TewiFont/2341.png new file mode 100644 index 000000000..5004f17c4 Binary files /dev/null and b/fonts/TewiFont/2341.png differ diff --git a/fonts/TewiFont/2342.png b/fonts/TewiFont/2342.png new file mode 100644 index 000000000..4d896b8ad Binary files /dev/null and b/fonts/TewiFont/2342.png differ diff --git a/fonts/TewiFont/2343.png b/fonts/TewiFont/2343.png new file mode 100644 index 000000000..a741b28f7 Binary files /dev/null and b/fonts/TewiFont/2343.png differ diff --git a/fonts/TewiFont/2344.png b/fonts/TewiFont/2344.png new file mode 100644 index 000000000..fa26ccb26 Binary files /dev/null and b/fonts/TewiFont/2344.png differ diff --git a/fonts/TewiFont/2345.png b/fonts/TewiFont/2345.png new file mode 100644 index 000000000..658795554 Binary files /dev/null and b/fonts/TewiFont/2345.png differ diff --git a/fonts/TewiFont/2346.png b/fonts/TewiFont/2346.png new file mode 100644 index 000000000..4e32ff84b Binary files /dev/null and b/fonts/TewiFont/2346.png differ diff --git a/fonts/TewiFont/2347.png b/fonts/TewiFont/2347.png new file mode 100644 index 000000000..709168c0b Binary files /dev/null and b/fonts/TewiFont/2347.png differ diff --git a/fonts/TewiFont/2348.png b/fonts/TewiFont/2348.png new file mode 100644 index 000000000..ef728ba5e Binary files /dev/null and b/fonts/TewiFont/2348.png differ diff --git a/fonts/TewiFont/2349.png b/fonts/TewiFont/2349.png new file mode 100644 index 000000000..f96034703 Binary files /dev/null and b/fonts/TewiFont/2349.png differ diff --git a/fonts/TewiFont/234A.png b/fonts/TewiFont/234A.png new file mode 100644 index 000000000..fb5d87610 Binary files /dev/null and b/fonts/TewiFont/234A.png differ diff --git a/fonts/TewiFont/234B.png b/fonts/TewiFont/234B.png new file mode 100644 index 000000000..531af544e Binary files /dev/null and b/fonts/TewiFont/234B.png differ diff --git a/fonts/TewiFont/234C.png b/fonts/TewiFont/234C.png new file mode 100644 index 000000000..d749f82c3 Binary files /dev/null and b/fonts/TewiFont/234C.png differ diff --git a/fonts/TewiFont/234D.png b/fonts/TewiFont/234D.png new file mode 100644 index 000000000..a52d1ae15 Binary files /dev/null and b/fonts/TewiFont/234D.png differ diff --git a/fonts/TewiFont/234E.png b/fonts/TewiFont/234E.png new file mode 100644 index 000000000..662b1d6b5 Binary files /dev/null and b/fonts/TewiFont/234E.png differ diff --git a/fonts/TewiFont/234F.png b/fonts/TewiFont/234F.png new file mode 100644 index 000000000..89fbead89 Binary files /dev/null and b/fonts/TewiFont/234F.png differ diff --git a/fonts/TewiFont/2350.png b/fonts/TewiFont/2350.png new file mode 100644 index 000000000..700c97e6b Binary files /dev/null and b/fonts/TewiFont/2350.png differ diff --git a/fonts/TewiFont/2351.png b/fonts/TewiFont/2351.png new file mode 100644 index 000000000..7fecc9334 Binary files /dev/null and b/fonts/TewiFont/2351.png differ diff --git a/fonts/TewiFont/2352.png b/fonts/TewiFont/2352.png new file mode 100644 index 000000000..574fb4073 Binary files /dev/null and b/fonts/TewiFont/2352.png differ diff --git a/fonts/TewiFont/2353.png b/fonts/TewiFont/2353.png new file mode 100644 index 000000000..c31315b2c Binary files /dev/null and b/fonts/TewiFont/2353.png differ diff --git a/fonts/TewiFont/2354.png b/fonts/TewiFont/2354.png new file mode 100644 index 000000000..7b94cff58 Binary files /dev/null and b/fonts/TewiFont/2354.png differ diff --git a/fonts/TewiFont/2355.png b/fonts/TewiFont/2355.png new file mode 100644 index 000000000..b93c545f0 Binary files /dev/null and b/fonts/TewiFont/2355.png differ diff --git a/fonts/TewiFont/2356.png b/fonts/TewiFont/2356.png new file mode 100644 index 000000000..95ddc76d5 Binary files /dev/null and b/fonts/TewiFont/2356.png differ diff --git a/fonts/TewiFont/2357.png b/fonts/TewiFont/2357.png new file mode 100644 index 000000000..b0091844a Binary files /dev/null and b/fonts/TewiFont/2357.png differ diff --git a/fonts/TewiFont/2358.png b/fonts/TewiFont/2358.png new file mode 100644 index 000000000..d38af1643 Binary files /dev/null and b/fonts/TewiFont/2358.png differ diff --git a/fonts/TewiFont/2359.png b/fonts/TewiFont/2359.png new file mode 100644 index 000000000..390e44a35 Binary files /dev/null and b/fonts/TewiFont/2359.png differ diff --git a/fonts/TewiFont/235A.png b/fonts/TewiFont/235A.png new file mode 100644 index 000000000..835531d28 Binary files /dev/null and b/fonts/TewiFont/235A.png differ diff --git a/fonts/TewiFont/235B.png b/fonts/TewiFont/235B.png new file mode 100644 index 000000000..58c2fac65 Binary files /dev/null and b/fonts/TewiFont/235B.png differ diff --git a/fonts/TewiFont/235C.png b/fonts/TewiFont/235C.png new file mode 100644 index 000000000..9f982b0f4 Binary files /dev/null and b/fonts/TewiFont/235C.png differ diff --git a/fonts/TewiFont/235D.png b/fonts/TewiFont/235D.png new file mode 100644 index 000000000..40db2c091 Binary files /dev/null and b/fonts/TewiFont/235D.png differ diff --git a/fonts/TewiFont/235E.png b/fonts/TewiFont/235E.png new file mode 100644 index 000000000..cb157c70d Binary files /dev/null and b/fonts/TewiFont/235E.png differ diff --git a/fonts/TewiFont/235F.png b/fonts/TewiFont/235F.png new file mode 100644 index 000000000..df2aeccd2 Binary files /dev/null and b/fonts/TewiFont/235F.png differ diff --git a/fonts/TewiFont/2360.png b/fonts/TewiFont/2360.png new file mode 100644 index 000000000..966e87528 Binary files /dev/null and b/fonts/TewiFont/2360.png differ diff --git a/fonts/TewiFont/2361.png b/fonts/TewiFont/2361.png new file mode 100644 index 000000000..e2d7b249e Binary files /dev/null and b/fonts/TewiFont/2361.png differ diff --git a/fonts/TewiFont/2362.png b/fonts/TewiFont/2362.png new file mode 100644 index 000000000..331294dc6 Binary files /dev/null and b/fonts/TewiFont/2362.png differ diff --git a/fonts/TewiFont/2363.png b/fonts/TewiFont/2363.png new file mode 100644 index 000000000..1e8d0600b Binary files /dev/null and b/fonts/TewiFont/2363.png differ diff --git a/fonts/TewiFont/2364.png b/fonts/TewiFont/2364.png new file mode 100644 index 000000000..7b922ed96 Binary files /dev/null and b/fonts/TewiFont/2364.png differ diff --git a/fonts/TewiFont/2365.png b/fonts/TewiFont/2365.png new file mode 100644 index 000000000..4dfe24658 Binary files /dev/null and b/fonts/TewiFont/2365.png differ diff --git a/fonts/TewiFont/2366.png b/fonts/TewiFont/2366.png new file mode 100644 index 000000000..d963c567a Binary files /dev/null and b/fonts/TewiFont/2366.png differ diff --git a/fonts/TewiFont/2367.png b/fonts/TewiFont/2367.png new file mode 100644 index 000000000..7828ad8ac Binary files /dev/null and b/fonts/TewiFont/2367.png differ diff --git a/fonts/TewiFont/2368.png b/fonts/TewiFont/2368.png new file mode 100644 index 000000000..5775ceedf Binary files /dev/null and b/fonts/TewiFont/2368.png differ diff --git a/fonts/TewiFont/2369.png b/fonts/TewiFont/2369.png new file mode 100644 index 000000000..6bcb18ac3 Binary files /dev/null and b/fonts/TewiFont/2369.png differ diff --git a/fonts/TewiFont/236A.png b/fonts/TewiFont/236A.png new file mode 100644 index 000000000..b187306ee Binary files /dev/null and b/fonts/TewiFont/236A.png differ diff --git a/fonts/TewiFont/236B.png b/fonts/TewiFont/236B.png new file mode 100644 index 000000000..9849a8ff6 Binary files /dev/null and b/fonts/TewiFont/236B.png differ diff --git a/fonts/TewiFont/236C.png b/fonts/TewiFont/236C.png new file mode 100644 index 000000000..b2b5198f7 Binary files /dev/null and b/fonts/TewiFont/236C.png differ diff --git a/fonts/TewiFont/236D.png b/fonts/TewiFont/236D.png new file mode 100644 index 000000000..087db10d7 Binary files /dev/null and b/fonts/TewiFont/236D.png differ diff --git a/fonts/TewiFont/236E.png b/fonts/TewiFont/236E.png new file mode 100644 index 000000000..9e15f9c51 Binary files /dev/null and b/fonts/TewiFont/236E.png differ diff --git a/fonts/TewiFont/236F.png b/fonts/TewiFont/236F.png new file mode 100644 index 000000000..f1f95a5b6 Binary files /dev/null and b/fonts/TewiFont/236F.png differ diff --git a/fonts/TewiFont/2370.png b/fonts/TewiFont/2370.png new file mode 100644 index 000000000..ebf3138f5 Binary files /dev/null and b/fonts/TewiFont/2370.png differ diff --git a/fonts/TewiFont/2371.png b/fonts/TewiFont/2371.png new file mode 100644 index 000000000..a66824e55 Binary files /dev/null and b/fonts/TewiFont/2371.png differ diff --git a/fonts/TewiFont/2372.png b/fonts/TewiFont/2372.png new file mode 100644 index 000000000..ca06c8b6f Binary files /dev/null and b/fonts/TewiFont/2372.png differ diff --git a/fonts/TewiFont/2373.png b/fonts/TewiFont/2373.png new file mode 100644 index 000000000..6fc160101 Binary files /dev/null and b/fonts/TewiFont/2373.png differ diff --git a/fonts/TewiFont/2374.png b/fonts/TewiFont/2374.png new file mode 100644 index 000000000..d7fd97c89 Binary files /dev/null and b/fonts/TewiFont/2374.png differ diff --git a/fonts/TewiFont/2375.png b/fonts/TewiFont/2375.png new file mode 100644 index 000000000..a38c71f7a Binary files /dev/null and b/fonts/TewiFont/2375.png differ diff --git a/fonts/TewiFont/2376.png b/fonts/TewiFont/2376.png new file mode 100644 index 000000000..f3611b8bc Binary files /dev/null and b/fonts/TewiFont/2376.png differ diff --git a/fonts/TewiFont/2377.png b/fonts/TewiFont/2377.png new file mode 100644 index 000000000..def04c3aa Binary files /dev/null and b/fonts/TewiFont/2377.png differ diff --git a/fonts/TewiFont/2378.png b/fonts/TewiFont/2378.png new file mode 100644 index 000000000..7ab1b3c08 Binary files /dev/null and b/fonts/TewiFont/2378.png differ diff --git a/fonts/TewiFont/2379.png b/fonts/TewiFont/2379.png new file mode 100644 index 000000000..1d9bc3047 Binary files /dev/null and b/fonts/TewiFont/2379.png differ diff --git a/fonts/TewiFont/237A.png b/fonts/TewiFont/237A.png new file mode 100644 index 000000000..f3611b8bc Binary files /dev/null and b/fonts/TewiFont/237A.png differ diff --git a/fonts/TewiFont/237B.png b/fonts/TewiFont/237B.png new file mode 100644 index 000000000..06e8a56bd Binary files /dev/null and b/fonts/TewiFont/237B.png differ diff --git a/fonts/TewiFont/237C.png b/fonts/TewiFont/237C.png new file mode 100644 index 000000000..bf723b433 Binary files /dev/null and b/fonts/TewiFont/237C.png differ diff --git a/fonts/TewiFont/237D.png b/fonts/TewiFont/237D.png new file mode 100644 index 000000000..4dfa24e5e Binary files /dev/null and b/fonts/TewiFont/237D.png differ diff --git a/fonts/TewiFont/237E.png b/fonts/TewiFont/237E.png new file mode 100644 index 000000000..f9b0bbbc8 Binary files /dev/null and b/fonts/TewiFont/237E.png differ diff --git a/fonts/TewiFont/2380.png b/fonts/TewiFont/2380.png new file mode 100644 index 000000000..fa0cd2d40 Binary files /dev/null and b/fonts/TewiFont/2380.png differ diff --git a/fonts/TewiFont/2388.png b/fonts/TewiFont/2388.png new file mode 100644 index 000000000..bd6852ed8 Binary files /dev/null and b/fonts/TewiFont/2388.png differ diff --git a/fonts/TewiFont/238B.png b/fonts/TewiFont/238B.png new file mode 100644 index 000000000..fe2bbecd6 Binary files /dev/null and b/fonts/TewiFont/238B.png differ diff --git a/fonts/TewiFont/23BA.png b/fonts/TewiFont/23BA.png new file mode 100644 index 000000000..cf0c15958 Binary files /dev/null and b/fonts/TewiFont/23BA.png differ diff --git a/fonts/TewiFont/23BB.png b/fonts/TewiFont/23BB.png new file mode 100644 index 000000000..a34e92416 Binary files /dev/null and b/fonts/TewiFont/23BB.png differ diff --git a/fonts/TewiFont/23BC.png b/fonts/TewiFont/23BC.png new file mode 100644 index 000000000..9546c29a7 Binary files /dev/null and b/fonts/TewiFont/23BC.png differ diff --git a/fonts/TewiFont/23BD.png b/fonts/TewiFont/23BD.png new file mode 100644 index 000000000..0ef8f30ce Binary files /dev/null and b/fonts/TewiFont/23BD.png differ diff --git a/fonts/TewiFont/23E9.png b/fonts/TewiFont/23E9.png new file mode 100644 index 000000000..f4f3394c3 Binary files /dev/null and b/fonts/TewiFont/23E9.png differ diff --git a/fonts/TewiFont/23EA.png b/fonts/TewiFont/23EA.png new file mode 100644 index 000000000..a6bbbc76d Binary files /dev/null and b/fonts/TewiFont/23EA.png differ diff --git a/fonts/TewiFont/23EB.png b/fonts/TewiFont/23EB.png new file mode 100644 index 000000000..f9516e7a2 Binary files /dev/null and b/fonts/TewiFont/23EB.png differ diff --git a/fonts/TewiFont/23EC.png b/fonts/TewiFont/23EC.png new file mode 100644 index 000000000..6c4d593da Binary files /dev/null and b/fonts/TewiFont/23EC.png differ diff --git a/fonts/TewiFont/23ED.png b/fonts/TewiFont/23ED.png new file mode 100644 index 000000000..0f99d73b8 Binary files /dev/null and b/fonts/TewiFont/23ED.png differ diff --git a/fonts/TewiFont/23EE.png b/fonts/TewiFont/23EE.png new file mode 100644 index 000000000..331456da0 Binary files /dev/null and b/fonts/TewiFont/23EE.png differ diff --git a/fonts/TewiFont/23EF.png b/fonts/TewiFont/23EF.png new file mode 100644 index 000000000..38e83b1fe Binary files /dev/null and b/fonts/TewiFont/23EF.png differ diff --git a/fonts/TewiFont/2408.png b/fonts/TewiFont/2408.png new file mode 100644 index 000000000..0dbc20313 Binary files /dev/null and b/fonts/TewiFont/2408.png differ diff --git a/fonts/TewiFont/2409.png b/fonts/TewiFont/2409.png new file mode 100644 index 000000000..4ceedd687 Binary files /dev/null and b/fonts/TewiFont/2409.png differ diff --git a/fonts/TewiFont/240A.png b/fonts/TewiFont/240A.png new file mode 100644 index 000000000..4bff64946 Binary files /dev/null and b/fonts/TewiFont/240A.png differ diff --git a/fonts/TewiFont/240B.png b/fonts/TewiFont/240B.png new file mode 100644 index 000000000..04e0f2d02 Binary files /dev/null and b/fonts/TewiFont/240B.png differ diff --git a/fonts/TewiFont/240C.png b/fonts/TewiFont/240C.png new file mode 100644 index 000000000..a655e9783 Binary files /dev/null and b/fonts/TewiFont/240C.png differ diff --git a/fonts/TewiFont/240D.png b/fonts/TewiFont/240D.png new file mode 100644 index 000000000..46f0db906 Binary files /dev/null and b/fonts/TewiFont/240D.png differ diff --git a/fonts/TewiFont/240E.png b/fonts/TewiFont/240E.png new file mode 100644 index 000000000..349f376b8 Binary files /dev/null and b/fonts/TewiFont/240E.png differ diff --git a/fonts/TewiFont/240F.png b/fonts/TewiFont/240F.png new file mode 100644 index 000000000..dcc5e00fa Binary files /dev/null and b/fonts/TewiFont/240F.png differ diff --git a/fonts/TewiFont/2423.png b/fonts/TewiFont/2423.png new file mode 100644 index 000000000..ee302adda Binary files /dev/null and b/fonts/TewiFont/2423.png differ diff --git a/fonts/TewiFont/2424.png b/fonts/TewiFont/2424.png new file mode 100644 index 000000000..82f62faf8 Binary files /dev/null and b/fonts/TewiFont/2424.png differ diff --git a/fonts/TewiFont/2425.png b/fonts/TewiFont/2425.png new file mode 100644 index 000000000..fb3250634 Binary files /dev/null and b/fonts/TewiFont/2425.png differ diff --git a/fonts/TewiFont/2426.png b/fonts/TewiFont/2426.png new file mode 100644 index 000000000..38d7cab59 Binary files /dev/null and b/fonts/TewiFont/2426.png differ diff --git a/fonts/TewiFont/2440.png b/fonts/TewiFont/2440.png new file mode 100644 index 000000000..49d8b101b Binary files /dev/null and b/fonts/TewiFont/2440.png differ diff --git a/fonts/TewiFont/2441.png b/fonts/TewiFont/2441.png new file mode 100644 index 000000000..2f3217df2 Binary files /dev/null and b/fonts/TewiFont/2441.png differ diff --git a/fonts/TewiFont/2442.png b/fonts/TewiFont/2442.png new file mode 100644 index 000000000..7cea616e6 Binary files /dev/null and b/fonts/TewiFont/2442.png differ diff --git a/fonts/TewiFont/2443.png b/fonts/TewiFont/2443.png new file mode 100644 index 000000000..2e57ea508 Binary files /dev/null and b/fonts/TewiFont/2443.png differ diff --git a/fonts/TewiFont/2444.png b/fonts/TewiFont/2444.png new file mode 100644 index 000000000..80d62427b Binary files /dev/null and b/fonts/TewiFont/2444.png differ diff --git a/fonts/TewiFont/2445.png b/fonts/TewiFont/2445.png new file mode 100644 index 000000000..41e12c359 Binary files /dev/null and b/fonts/TewiFont/2445.png differ diff --git a/fonts/TewiFont/2446.png b/fonts/TewiFont/2446.png new file mode 100644 index 000000000..7d8d67b87 Binary files /dev/null and b/fonts/TewiFont/2446.png differ diff --git a/fonts/TewiFont/2447.png b/fonts/TewiFont/2447.png new file mode 100644 index 000000000..1a6f636be Binary files /dev/null and b/fonts/TewiFont/2447.png differ diff --git a/fonts/TewiFont/2448.png b/fonts/TewiFont/2448.png new file mode 100644 index 000000000..fef30301a Binary files /dev/null and b/fonts/TewiFont/2448.png differ diff --git a/fonts/TewiFont/2449.png b/fonts/TewiFont/2449.png new file mode 100644 index 000000000..9f5234281 Binary files /dev/null and b/fonts/TewiFont/2449.png differ diff --git a/fonts/TewiFont/244A.png b/fonts/TewiFont/244A.png new file mode 100644 index 000000000..7359b20c9 Binary files /dev/null and b/fonts/TewiFont/244A.png differ diff --git a/fonts/TewiFont/2460.png b/fonts/TewiFont/2460.png new file mode 100644 index 000000000..132e9682e Binary files /dev/null and b/fonts/TewiFont/2460.png differ diff --git a/fonts/TewiFont/2461.png b/fonts/TewiFont/2461.png new file mode 100644 index 000000000..3ce1ca049 Binary files /dev/null and b/fonts/TewiFont/2461.png differ diff --git a/fonts/TewiFont/2462.png b/fonts/TewiFont/2462.png new file mode 100644 index 000000000..8d0938c19 Binary files /dev/null and b/fonts/TewiFont/2462.png differ diff --git a/fonts/TewiFont/2463.png b/fonts/TewiFont/2463.png new file mode 100644 index 000000000..daff97bd7 Binary files /dev/null and b/fonts/TewiFont/2463.png differ diff --git a/fonts/TewiFont/2464.png b/fonts/TewiFont/2464.png new file mode 100644 index 000000000..fab98a322 Binary files /dev/null and b/fonts/TewiFont/2464.png differ diff --git a/fonts/TewiFont/2465.png b/fonts/TewiFont/2465.png new file mode 100644 index 000000000..3674066e5 Binary files /dev/null and b/fonts/TewiFont/2465.png differ diff --git a/fonts/TewiFont/2466.png b/fonts/TewiFont/2466.png new file mode 100644 index 000000000..a113be7f0 Binary files /dev/null and b/fonts/TewiFont/2466.png differ diff --git a/fonts/TewiFont/2467.png b/fonts/TewiFont/2467.png new file mode 100644 index 000000000..c5838a2d0 Binary files /dev/null and b/fonts/TewiFont/2467.png differ diff --git a/fonts/TewiFont/2468.png b/fonts/TewiFont/2468.png new file mode 100644 index 000000000..c30d38f9c Binary files /dev/null and b/fonts/TewiFont/2468.png differ diff --git a/fonts/TewiFont/2469.png b/fonts/TewiFont/2469.png new file mode 100644 index 000000000..a012b5284 Binary files /dev/null and b/fonts/TewiFont/2469.png differ diff --git a/fonts/TewiFont/246A.png b/fonts/TewiFont/246A.png new file mode 100644 index 000000000..b5a5c633e Binary files /dev/null and b/fonts/TewiFont/246A.png differ diff --git a/fonts/TewiFont/246B.png b/fonts/TewiFont/246B.png new file mode 100644 index 000000000..8ca10d33c Binary files /dev/null and b/fonts/TewiFont/246B.png differ diff --git a/fonts/TewiFont/246C.png b/fonts/TewiFont/246C.png new file mode 100644 index 000000000..9a1350477 Binary files /dev/null and b/fonts/TewiFont/246C.png differ diff --git a/fonts/TewiFont/246D.png b/fonts/TewiFont/246D.png new file mode 100644 index 000000000..0ae3eabb3 Binary files /dev/null and b/fonts/TewiFont/246D.png differ diff --git a/fonts/TewiFont/246E.png b/fonts/TewiFont/246E.png new file mode 100644 index 000000000..e84b54e1a Binary files /dev/null and b/fonts/TewiFont/246E.png differ diff --git a/fonts/TewiFont/246F.png b/fonts/TewiFont/246F.png new file mode 100644 index 000000000..8efe9f174 Binary files /dev/null and b/fonts/TewiFont/246F.png differ diff --git a/fonts/TewiFont/2470.png b/fonts/TewiFont/2470.png new file mode 100644 index 000000000..11c89efe0 Binary files /dev/null and b/fonts/TewiFont/2470.png differ diff --git a/fonts/TewiFont/2471.png b/fonts/TewiFont/2471.png new file mode 100644 index 000000000..4164f11fd Binary files /dev/null and b/fonts/TewiFont/2471.png differ diff --git a/fonts/TewiFont/2472.png b/fonts/TewiFont/2472.png new file mode 100644 index 000000000..1aba709b3 Binary files /dev/null and b/fonts/TewiFont/2472.png differ diff --git a/fonts/TewiFont/2473.png b/fonts/TewiFont/2473.png new file mode 100644 index 000000000..7ff2e6f8e Binary files /dev/null and b/fonts/TewiFont/2473.png differ diff --git a/fonts/TewiFont/2474.png b/fonts/TewiFont/2474.png new file mode 100644 index 000000000..cde540ff4 Binary files /dev/null and b/fonts/TewiFont/2474.png differ diff --git a/fonts/TewiFont/2475.png b/fonts/TewiFont/2475.png new file mode 100644 index 000000000..d24f6d227 Binary files /dev/null and b/fonts/TewiFont/2475.png differ diff --git a/fonts/TewiFont/2476.png b/fonts/TewiFont/2476.png new file mode 100644 index 000000000..70c9d85f9 Binary files /dev/null and b/fonts/TewiFont/2476.png differ diff --git a/fonts/TewiFont/2477.png b/fonts/TewiFont/2477.png new file mode 100644 index 000000000..52508e271 Binary files /dev/null and b/fonts/TewiFont/2477.png differ diff --git a/fonts/TewiFont/2478.png b/fonts/TewiFont/2478.png new file mode 100644 index 000000000..5a7b3bc5d Binary files /dev/null and b/fonts/TewiFont/2478.png differ diff --git a/fonts/TewiFont/2479.png b/fonts/TewiFont/2479.png new file mode 100644 index 000000000..74c8ae19c Binary files /dev/null and b/fonts/TewiFont/2479.png differ diff --git a/fonts/TewiFont/247A.png b/fonts/TewiFont/247A.png new file mode 100644 index 000000000..ee9d07a30 Binary files /dev/null and b/fonts/TewiFont/247A.png differ diff --git a/fonts/TewiFont/247B.png b/fonts/TewiFont/247B.png new file mode 100644 index 000000000..f6b148591 Binary files /dev/null and b/fonts/TewiFont/247B.png differ diff --git a/fonts/TewiFont/247C.png b/fonts/TewiFont/247C.png new file mode 100644 index 000000000..ee8b5c79d Binary files /dev/null and b/fonts/TewiFont/247C.png differ diff --git a/fonts/TewiFont/247D.png b/fonts/TewiFont/247D.png new file mode 100644 index 000000000..b350aae3e Binary files /dev/null and b/fonts/TewiFont/247D.png differ diff --git a/fonts/TewiFont/247E.png b/fonts/TewiFont/247E.png new file mode 100644 index 000000000..f63a1f1cc Binary files /dev/null and b/fonts/TewiFont/247E.png differ diff --git a/fonts/TewiFont/247F.png b/fonts/TewiFont/247F.png new file mode 100644 index 000000000..6b5de68f3 Binary files /dev/null and b/fonts/TewiFont/247F.png differ diff --git a/fonts/TewiFont/2480.png b/fonts/TewiFont/2480.png new file mode 100644 index 000000000..35080da12 Binary files /dev/null and b/fonts/TewiFont/2480.png differ diff --git a/fonts/TewiFont/2481.png b/fonts/TewiFont/2481.png new file mode 100644 index 000000000..c60e89703 Binary files /dev/null and b/fonts/TewiFont/2481.png differ diff --git a/fonts/TewiFont/2482.png b/fonts/TewiFont/2482.png new file mode 100644 index 000000000..65947664c Binary files /dev/null and b/fonts/TewiFont/2482.png differ diff --git a/fonts/TewiFont/2483.png b/fonts/TewiFont/2483.png new file mode 100644 index 000000000..e5669eb12 Binary files /dev/null and b/fonts/TewiFont/2483.png differ diff --git a/fonts/TewiFont/2484.png b/fonts/TewiFont/2484.png new file mode 100644 index 000000000..1a8a8bb94 Binary files /dev/null and b/fonts/TewiFont/2484.png differ diff --git a/fonts/TewiFont/2485.png b/fonts/TewiFont/2485.png new file mode 100644 index 000000000..d9b59ec04 Binary files /dev/null and b/fonts/TewiFont/2485.png differ diff --git a/fonts/TewiFont/2486.png b/fonts/TewiFont/2486.png new file mode 100644 index 000000000..763c88809 Binary files /dev/null and b/fonts/TewiFont/2486.png differ diff --git a/fonts/TewiFont/2487.png b/fonts/TewiFont/2487.png new file mode 100644 index 000000000..64d8bd4f8 Binary files /dev/null and b/fonts/TewiFont/2487.png differ diff --git a/fonts/TewiFont/2488.png b/fonts/TewiFont/2488.png new file mode 100644 index 000000000..e86c01dc2 Binary files /dev/null and b/fonts/TewiFont/2488.png differ diff --git a/fonts/TewiFont/2489.png b/fonts/TewiFont/2489.png new file mode 100644 index 000000000..b68bf3d82 Binary files /dev/null and b/fonts/TewiFont/2489.png differ diff --git a/fonts/TewiFont/248A.png b/fonts/TewiFont/248A.png new file mode 100644 index 000000000..2b6438fb3 Binary files /dev/null and b/fonts/TewiFont/248A.png differ diff --git a/fonts/TewiFont/248B.png b/fonts/TewiFont/248B.png new file mode 100644 index 000000000..4ff0f5ed3 Binary files /dev/null and b/fonts/TewiFont/248B.png differ diff --git a/fonts/TewiFont/248C.png b/fonts/TewiFont/248C.png new file mode 100644 index 000000000..719ba3529 Binary files /dev/null and b/fonts/TewiFont/248C.png differ diff --git a/fonts/TewiFont/248D.png b/fonts/TewiFont/248D.png new file mode 100644 index 000000000..3bebc365b Binary files /dev/null and b/fonts/TewiFont/248D.png differ diff --git a/fonts/TewiFont/248E.png b/fonts/TewiFont/248E.png new file mode 100644 index 000000000..6d2923a8f Binary files /dev/null and b/fonts/TewiFont/248E.png differ diff --git a/fonts/TewiFont/248F.png b/fonts/TewiFont/248F.png new file mode 100644 index 000000000..a8a89fa7c Binary files /dev/null and b/fonts/TewiFont/248F.png differ diff --git a/fonts/TewiFont/2490.png b/fonts/TewiFont/2490.png new file mode 100644 index 000000000..409d60ce0 Binary files /dev/null and b/fonts/TewiFont/2490.png differ diff --git a/fonts/TewiFont/2491.png b/fonts/TewiFont/2491.png new file mode 100644 index 000000000..ddd77c5de Binary files /dev/null and b/fonts/TewiFont/2491.png differ diff --git a/fonts/TewiFont/2492.png b/fonts/TewiFont/2492.png new file mode 100644 index 000000000..02492d253 Binary files /dev/null and b/fonts/TewiFont/2492.png differ diff --git a/fonts/TewiFont/2493.png b/fonts/TewiFont/2493.png new file mode 100644 index 000000000..6cd66cf2c Binary files /dev/null and b/fonts/TewiFont/2493.png differ diff --git a/fonts/TewiFont/2494.png b/fonts/TewiFont/2494.png new file mode 100644 index 000000000..ca4557827 Binary files /dev/null and b/fonts/TewiFont/2494.png differ diff --git a/fonts/TewiFont/2495.png b/fonts/TewiFont/2495.png new file mode 100644 index 000000000..cfe3424ed Binary files /dev/null and b/fonts/TewiFont/2495.png differ diff --git a/fonts/TewiFont/2496.png b/fonts/TewiFont/2496.png new file mode 100644 index 000000000..b533301bb Binary files /dev/null and b/fonts/TewiFont/2496.png differ diff --git a/fonts/TewiFont/2497.png b/fonts/TewiFont/2497.png new file mode 100644 index 000000000..96a45fc92 Binary files /dev/null and b/fonts/TewiFont/2497.png differ diff --git a/fonts/TewiFont/2498.png b/fonts/TewiFont/2498.png new file mode 100644 index 000000000..33aa97355 Binary files /dev/null and b/fonts/TewiFont/2498.png differ diff --git a/fonts/TewiFont/2499.png b/fonts/TewiFont/2499.png new file mode 100644 index 000000000..03cc14fef Binary files /dev/null and b/fonts/TewiFont/2499.png differ diff --git a/fonts/TewiFont/249A.png b/fonts/TewiFont/249A.png new file mode 100644 index 000000000..d09072bbc Binary files /dev/null and b/fonts/TewiFont/249A.png differ diff --git a/fonts/TewiFont/249B.png b/fonts/TewiFont/249B.png new file mode 100644 index 000000000..361b7f097 Binary files /dev/null and b/fonts/TewiFont/249B.png differ diff --git a/fonts/TewiFont/249C.png b/fonts/TewiFont/249C.png new file mode 100644 index 000000000..d1efdd9fe Binary files /dev/null and b/fonts/TewiFont/249C.png differ diff --git a/fonts/TewiFont/249D.png b/fonts/TewiFont/249D.png new file mode 100644 index 000000000..5554e1a0d Binary files /dev/null and b/fonts/TewiFont/249D.png differ diff --git a/fonts/TewiFont/249E.png b/fonts/TewiFont/249E.png new file mode 100644 index 000000000..e24c90404 Binary files /dev/null and b/fonts/TewiFont/249E.png differ diff --git a/fonts/TewiFont/249F.png b/fonts/TewiFont/249F.png new file mode 100644 index 000000000..abfa379eb Binary files /dev/null and b/fonts/TewiFont/249F.png differ diff --git a/fonts/TewiFont/24A0.png b/fonts/TewiFont/24A0.png new file mode 100644 index 000000000..fff75cf9d Binary files /dev/null and b/fonts/TewiFont/24A0.png differ diff --git a/fonts/TewiFont/24A1.png b/fonts/TewiFont/24A1.png new file mode 100644 index 000000000..f91a779ec Binary files /dev/null and b/fonts/TewiFont/24A1.png differ diff --git a/fonts/TewiFont/24A2.png b/fonts/TewiFont/24A2.png new file mode 100644 index 000000000..7acbde08a Binary files /dev/null and b/fonts/TewiFont/24A2.png differ diff --git a/fonts/TewiFont/24A3.png b/fonts/TewiFont/24A3.png new file mode 100644 index 000000000..d024a5c81 Binary files /dev/null and b/fonts/TewiFont/24A3.png differ diff --git a/fonts/TewiFont/24A4.png b/fonts/TewiFont/24A4.png new file mode 100644 index 000000000..77365ab82 Binary files /dev/null and b/fonts/TewiFont/24A4.png differ diff --git a/fonts/TewiFont/24A5.png b/fonts/TewiFont/24A5.png new file mode 100644 index 000000000..6b61e3a44 Binary files /dev/null and b/fonts/TewiFont/24A5.png differ diff --git a/fonts/TewiFont/24A6.png b/fonts/TewiFont/24A6.png new file mode 100644 index 000000000..368cc745c Binary files /dev/null and b/fonts/TewiFont/24A6.png differ diff --git a/fonts/TewiFont/24A7.png b/fonts/TewiFont/24A7.png new file mode 100644 index 000000000..29d0c40cb Binary files /dev/null and b/fonts/TewiFont/24A7.png differ diff --git a/fonts/TewiFont/24A8.png b/fonts/TewiFont/24A8.png new file mode 100644 index 000000000..6c52c3b0b Binary files /dev/null and b/fonts/TewiFont/24A8.png differ diff --git a/fonts/TewiFont/24A9.png b/fonts/TewiFont/24A9.png new file mode 100644 index 000000000..2a1e0d517 Binary files /dev/null and b/fonts/TewiFont/24A9.png differ diff --git a/fonts/TewiFont/24AA.png b/fonts/TewiFont/24AA.png new file mode 100644 index 000000000..85f59611a Binary files /dev/null and b/fonts/TewiFont/24AA.png differ diff --git a/fonts/TewiFont/24AB.png b/fonts/TewiFont/24AB.png new file mode 100644 index 000000000..a3a7f6512 Binary files /dev/null and b/fonts/TewiFont/24AB.png differ diff --git a/fonts/TewiFont/24AC.png b/fonts/TewiFont/24AC.png new file mode 100644 index 000000000..d2a2a3167 Binary files /dev/null and b/fonts/TewiFont/24AC.png differ diff --git a/fonts/TewiFont/24AD.png b/fonts/TewiFont/24AD.png new file mode 100644 index 000000000..1a66d1566 Binary files /dev/null and b/fonts/TewiFont/24AD.png differ diff --git a/fonts/TewiFont/24AE.png b/fonts/TewiFont/24AE.png new file mode 100644 index 000000000..c229365df Binary files /dev/null and b/fonts/TewiFont/24AE.png differ diff --git a/fonts/TewiFont/24AF.png b/fonts/TewiFont/24AF.png new file mode 100644 index 000000000..b06e42212 Binary files /dev/null and b/fonts/TewiFont/24AF.png differ diff --git a/fonts/TewiFont/24B0.png b/fonts/TewiFont/24B0.png new file mode 100644 index 000000000..18d689e39 Binary files /dev/null and b/fonts/TewiFont/24B0.png differ diff --git a/fonts/TewiFont/24B1.png b/fonts/TewiFont/24B1.png new file mode 100644 index 000000000..20352d496 Binary files /dev/null and b/fonts/TewiFont/24B1.png differ diff --git a/fonts/TewiFont/24B2.png b/fonts/TewiFont/24B2.png new file mode 100644 index 000000000..7a4556048 Binary files /dev/null and b/fonts/TewiFont/24B2.png differ diff --git a/fonts/TewiFont/24B3.png b/fonts/TewiFont/24B3.png new file mode 100644 index 000000000..e7c9770a5 Binary files /dev/null and b/fonts/TewiFont/24B3.png differ diff --git a/fonts/TewiFont/24B4.png b/fonts/TewiFont/24B4.png new file mode 100644 index 000000000..30b926b0d Binary files /dev/null and b/fonts/TewiFont/24B4.png differ diff --git a/fonts/TewiFont/24B5.png b/fonts/TewiFont/24B5.png new file mode 100644 index 000000000..ed7bde887 Binary files /dev/null and b/fonts/TewiFont/24B5.png differ diff --git a/fonts/TewiFont/2500.png b/fonts/TewiFont/2500.png new file mode 100644 index 000000000..571155dba Binary files /dev/null and b/fonts/TewiFont/2500.png differ diff --git a/fonts/TewiFont/2501.png b/fonts/TewiFont/2501.png new file mode 100644 index 000000000..b996a8f15 Binary files /dev/null and b/fonts/TewiFont/2501.png differ diff --git a/fonts/TewiFont/2502.png b/fonts/TewiFont/2502.png new file mode 100644 index 000000000..759bf0592 Binary files /dev/null and b/fonts/TewiFont/2502.png differ diff --git a/fonts/TewiFont/2503.png b/fonts/TewiFont/2503.png new file mode 100644 index 000000000..d1a14b9b3 Binary files /dev/null and b/fonts/TewiFont/2503.png differ diff --git a/fonts/TewiFont/2504.png b/fonts/TewiFont/2504.png new file mode 100644 index 000000000..2808eeb43 Binary files /dev/null and b/fonts/TewiFont/2504.png differ diff --git a/fonts/TewiFont/2505.png b/fonts/TewiFont/2505.png new file mode 100644 index 000000000..8423ff126 Binary files /dev/null and b/fonts/TewiFont/2505.png differ diff --git a/fonts/TewiFont/2506.png b/fonts/TewiFont/2506.png new file mode 100644 index 000000000..591fc53d0 Binary files /dev/null and b/fonts/TewiFont/2506.png differ diff --git a/fonts/TewiFont/2507.png b/fonts/TewiFont/2507.png new file mode 100644 index 000000000..61f5352c4 Binary files /dev/null and b/fonts/TewiFont/2507.png differ diff --git a/fonts/TewiFont/2508.png b/fonts/TewiFont/2508.png new file mode 100644 index 000000000..e9858b7aa Binary files /dev/null and b/fonts/TewiFont/2508.png differ diff --git a/fonts/TewiFont/2509.png b/fonts/TewiFont/2509.png new file mode 100644 index 000000000..4942bc4ab Binary files /dev/null and b/fonts/TewiFont/2509.png differ diff --git a/fonts/TewiFont/250A.png b/fonts/TewiFont/250A.png new file mode 100644 index 000000000..f0b79e54d Binary files /dev/null and b/fonts/TewiFont/250A.png differ diff --git a/fonts/TewiFont/250B.png b/fonts/TewiFont/250B.png new file mode 100644 index 000000000..299ecfdd4 Binary files /dev/null and b/fonts/TewiFont/250B.png differ diff --git a/fonts/TewiFont/250C.png b/fonts/TewiFont/250C.png new file mode 100644 index 000000000..d92dcf555 Binary files /dev/null and b/fonts/TewiFont/250C.png differ diff --git a/fonts/TewiFont/250D.png b/fonts/TewiFont/250D.png new file mode 100644 index 000000000..3cf211a60 Binary files /dev/null and b/fonts/TewiFont/250D.png differ diff --git a/fonts/TewiFont/250E.png b/fonts/TewiFont/250E.png new file mode 100644 index 000000000..b417bb1d5 Binary files /dev/null and b/fonts/TewiFont/250E.png differ diff --git a/fonts/TewiFont/250F.png b/fonts/TewiFont/250F.png new file mode 100644 index 000000000..6a5a93842 Binary files /dev/null and b/fonts/TewiFont/250F.png differ diff --git a/fonts/TewiFont/2510.png b/fonts/TewiFont/2510.png new file mode 100644 index 000000000..c74935750 Binary files /dev/null and b/fonts/TewiFont/2510.png differ diff --git a/fonts/TewiFont/2511.png b/fonts/TewiFont/2511.png new file mode 100644 index 000000000..933170f01 Binary files /dev/null and b/fonts/TewiFont/2511.png differ diff --git a/fonts/TewiFont/2512.png b/fonts/TewiFont/2512.png new file mode 100644 index 000000000..c08141d0d Binary files /dev/null and b/fonts/TewiFont/2512.png differ diff --git a/fonts/TewiFont/2513.png b/fonts/TewiFont/2513.png new file mode 100644 index 000000000..90c1c5387 Binary files /dev/null and b/fonts/TewiFont/2513.png differ diff --git a/fonts/TewiFont/2514.png b/fonts/TewiFont/2514.png new file mode 100644 index 000000000..8d9460343 Binary files /dev/null and b/fonts/TewiFont/2514.png differ diff --git a/fonts/TewiFont/2515.png b/fonts/TewiFont/2515.png new file mode 100644 index 000000000..6d409f613 Binary files /dev/null and b/fonts/TewiFont/2515.png differ diff --git a/fonts/TewiFont/2516.png b/fonts/TewiFont/2516.png new file mode 100644 index 000000000..a3585bc7f Binary files /dev/null and b/fonts/TewiFont/2516.png differ diff --git a/fonts/TewiFont/2517.png b/fonts/TewiFont/2517.png new file mode 100644 index 000000000..89b319279 Binary files /dev/null and b/fonts/TewiFont/2517.png differ diff --git a/fonts/TewiFont/2518.png b/fonts/TewiFont/2518.png new file mode 100644 index 000000000..13b54e80e Binary files /dev/null and b/fonts/TewiFont/2518.png differ diff --git a/fonts/TewiFont/2519.png b/fonts/TewiFont/2519.png new file mode 100644 index 000000000..cafdc83ab Binary files /dev/null and b/fonts/TewiFont/2519.png differ diff --git a/fonts/TewiFont/251A.png b/fonts/TewiFont/251A.png new file mode 100644 index 000000000..eef779f63 Binary files /dev/null and b/fonts/TewiFont/251A.png differ diff --git a/fonts/TewiFont/251B.png b/fonts/TewiFont/251B.png new file mode 100644 index 000000000..54894bc30 Binary files /dev/null and b/fonts/TewiFont/251B.png differ diff --git a/fonts/TewiFont/251C.png b/fonts/TewiFont/251C.png new file mode 100644 index 000000000..79aa35067 Binary files /dev/null and b/fonts/TewiFont/251C.png differ diff --git a/fonts/TewiFont/251D.png b/fonts/TewiFont/251D.png new file mode 100644 index 000000000..3c4a32934 Binary files /dev/null and b/fonts/TewiFont/251D.png differ diff --git a/fonts/TewiFont/251E.png b/fonts/TewiFont/251E.png new file mode 100644 index 000000000..3e04c5397 Binary files /dev/null and b/fonts/TewiFont/251E.png differ diff --git a/fonts/TewiFont/251F.png b/fonts/TewiFont/251F.png new file mode 100644 index 000000000..3da78ab3d Binary files /dev/null and b/fonts/TewiFont/251F.png differ diff --git a/fonts/TewiFont/2520.png b/fonts/TewiFont/2520.png new file mode 100644 index 000000000..f3e4c30f0 Binary files /dev/null and b/fonts/TewiFont/2520.png differ diff --git a/fonts/TewiFont/2521.png b/fonts/TewiFont/2521.png new file mode 100644 index 000000000..1ff41e127 Binary files /dev/null and b/fonts/TewiFont/2521.png differ diff --git a/fonts/TewiFont/2522.png b/fonts/TewiFont/2522.png new file mode 100644 index 000000000..d864118f3 Binary files /dev/null and b/fonts/TewiFont/2522.png differ diff --git a/fonts/TewiFont/2523.png b/fonts/TewiFont/2523.png new file mode 100644 index 000000000..004ea82f8 Binary files /dev/null and b/fonts/TewiFont/2523.png differ diff --git a/fonts/TewiFont/2524.png b/fonts/TewiFont/2524.png new file mode 100644 index 000000000..3abba2380 Binary files /dev/null and b/fonts/TewiFont/2524.png differ diff --git a/fonts/TewiFont/2525.png b/fonts/TewiFont/2525.png new file mode 100644 index 000000000..371d3320a Binary files /dev/null and b/fonts/TewiFont/2525.png differ diff --git a/fonts/TewiFont/2526.png b/fonts/TewiFont/2526.png new file mode 100644 index 000000000..928d84379 Binary files /dev/null and b/fonts/TewiFont/2526.png differ diff --git a/fonts/TewiFont/2527.png b/fonts/TewiFont/2527.png new file mode 100644 index 000000000..36d35b86f Binary files /dev/null and b/fonts/TewiFont/2527.png differ diff --git a/fonts/TewiFont/2528.png b/fonts/TewiFont/2528.png new file mode 100644 index 000000000..aa46d8e66 Binary files /dev/null and b/fonts/TewiFont/2528.png differ diff --git a/fonts/TewiFont/2529.png b/fonts/TewiFont/2529.png new file mode 100644 index 000000000..6f5a60071 Binary files /dev/null and b/fonts/TewiFont/2529.png differ diff --git a/fonts/TewiFont/252A.png b/fonts/TewiFont/252A.png new file mode 100644 index 000000000..99bc17fd5 Binary files /dev/null and b/fonts/TewiFont/252A.png differ diff --git a/fonts/TewiFont/252B.png b/fonts/TewiFont/252B.png new file mode 100644 index 000000000..24e42fe48 Binary files /dev/null and b/fonts/TewiFont/252B.png differ diff --git a/fonts/TewiFont/252C.png b/fonts/TewiFont/252C.png new file mode 100644 index 000000000..79342c1e6 Binary files /dev/null and b/fonts/TewiFont/252C.png differ diff --git a/fonts/TewiFont/252D.png b/fonts/TewiFont/252D.png new file mode 100644 index 000000000..811e002c1 Binary files /dev/null and b/fonts/TewiFont/252D.png differ diff --git a/fonts/TewiFont/252E.png b/fonts/TewiFont/252E.png new file mode 100644 index 000000000..af8e76099 Binary files /dev/null and b/fonts/TewiFont/252E.png differ diff --git a/fonts/TewiFont/252F.png b/fonts/TewiFont/252F.png new file mode 100644 index 000000000..17602b5e6 Binary files /dev/null and b/fonts/TewiFont/252F.png differ diff --git a/fonts/TewiFont/2530.png b/fonts/TewiFont/2530.png new file mode 100644 index 000000000..15184e62e Binary files /dev/null and b/fonts/TewiFont/2530.png differ diff --git a/fonts/TewiFont/2531.png b/fonts/TewiFont/2531.png new file mode 100644 index 000000000..a3e49e2de Binary files /dev/null and b/fonts/TewiFont/2531.png differ diff --git a/fonts/TewiFont/2532.png b/fonts/TewiFont/2532.png new file mode 100644 index 000000000..02cd30e37 Binary files /dev/null and b/fonts/TewiFont/2532.png differ diff --git a/fonts/TewiFont/2533.png b/fonts/TewiFont/2533.png new file mode 100644 index 000000000..fd24986a3 Binary files /dev/null and b/fonts/TewiFont/2533.png differ diff --git a/fonts/TewiFont/2534.png b/fonts/TewiFont/2534.png new file mode 100644 index 000000000..1afd57cb5 Binary files /dev/null and b/fonts/TewiFont/2534.png differ diff --git a/fonts/TewiFont/2535.png b/fonts/TewiFont/2535.png new file mode 100644 index 000000000..ecf7b8cdb Binary files /dev/null and b/fonts/TewiFont/2535.png differ diff --git a/fonts/TewiFont/2536.png b/fonts/TewiFont/2536.png new file mode 100644 index 000000000..76a146395 Binary files /dev/null and b/fonts/TewiFont/2536.png differ diff --git a/fonts/TewiFont/2537.png b/fonts/TewiFont/2537.png new file mode 100644 index 000000000..cee7c9cdf Binary files /dev/null and b/fonts/TewiFont/2537.png differ diff --git a/fonts/TewiFont/2538.png b/fonts/TewiFont/2538.png new file mode 100644 index 000000000..4ce093a42 Binary files /dev/null and b/fonts/TewiFont/2538.png differ diff --git a/fonts/TewiFont/2539.png b/fonts/TewiFont/2539.png new file mode 100644 index 000000000..37f5fb6dd Binary files /dev/null and b/fonts/TewiFont/2539.png differ diff --git a/fonts/TewiFont/253A.png b/fonts/TewiFont/253A.png new file mode 100644 index 000000000..c68c87e99 Binary files /dev/null and b/fonts/TewiFont/253A.png differ diff --git a/fonts/TewiFont/253B.png b/fonts/TewiFont/253B.png new file mode 100644 index 000000000..26c548734 Binary files /dev/null and b/fonts/TewiFont/253B.png differ diff --git a/fonts/TewiFont/253C.png b/fonts/TewiFont/253C.png new file mode 100644 index 000000000..d468f3084 Binary files /dev/null and b/fonts/TewiFont/253C.png differ diff --git a/fonts/TewiFont/253D.png b/fonts/TewiFont/253D.png new file mode 100644 index 000000000..592a2f43e Binary files /dev/null and b/fonts/TewiFont/253D.png differ diff --git a/fonts/TewiFont/253E.png b/fonts/TewiFont/253E.png new file mode 100644 index 000000000..af1e83d30 Binary files /dev/null and b/fonts/TewiFont/253E.png differ diff --git a/fonts/TewiFont/253F.png b/fonts/TewiFont/253F.png new file mode 100644 index 000000000..2b2c84cdb Binary files /dev/null and b/fonts/TewiFont/253F.png differ diff --git a/fonts/TewiFont/2540.png b/fonts/TewiFont/2540.png new file mode 100644 index 000000000..af72247e8 Binary files /dev/null and b/fonts/TewiFont/2540.png differ diff --git a/fonts/TewiFont/2541.png b/fonts/TewiFont/2541.png new file mode 100644 index 000000000..99b7b8548 Binary files /dev/null and b/fonts/TewiFont/2541.png differ diff --git a/fonts/TewiFont/2542.png b/fonts/TewiFont/2542.png new file mode 100644 index 000000000..a987f8c03 Binary files /dev/null and b/fonts/TewiFont/2542.png differ diff --git a/fonts/TewiFont/2543.png b/fonts/TewiFont/2543.png new file mode 100644 index 000000000..b9fb551b6 Binary files /dev/null and b/fonts/TewiFont/2543.png differ diff --git a/fonts/TewiFont/2544.png b/fonts/TewiFont/2544.png new file mode 100644 index 000000000..fde84740f Binary files /dev/null and b/fonts/TewiFont/2544.png differ diff --git a/fonts/TewiFont/2545.png b/fonts/TewiFont/2545.png new file mode 100644 index 000000000..f32b24dac Binary files /dev/null and b/fonts/TewiFont/2545.png differ diff --git a/fonts/TewiFont/2546.png b/fonts/TewiFont/2546.png new file mode 100644 index 000000000..c96e0d423 Binary files /dev/null and b/fonts/TewiFont/2546.png differ diff --git a/fonts/TewiFont/2547.png b/fonts/TewiFont/2547.png new file mode 100644 index 000000000..4c6f774d3 Binary files /dev/null and b/fonts/TewiFont/2547.png differ diff --git a/fonts/TewiFont/2548.png b/fonts/TewiFont/2548.png new file mode 100644 index 000000000..b6713a1ae Binary files /dev/null and b/fonts/TewiFont/2548.png differ diff --git a/fonts/TewiFont/2549.png b/fonts/TewiFont/2549.png new file mode 100644 index 000000000..176a30b92 Binary files /dev/null and b/fonts/TewiFont/2549.png differ diff --git a/fonts/TewiFont/254A.png b/fonts/TewiFont/254A.png new file mode 100644 index 000000000..ae1459e7a Binary files /dev/null and b/fonts/TewiFont/254A.png differ diff --git a/fonts/TewiFont/254B.png b/fonts/TewiFont/254B.png new file mode 100644 index 000000000..dea760be4 Binary files /dev/null and b/fonts/TewiFont/254B.png differ diff --git a/fonts/TewiFont/254C.png b/fonts/TewiFont/254C.png new file mode 100644 index 000000000..7fc885649 Binary files /dev/null and b/fonts/TewiFont/254C.png differ diff --git a/fonts/TewiFont/254D.png b/fonts/TewiFont/254D.png new file mode 100644 index 000000000..8f372a92c Binary files /dev/null and b/fonts/TewiFont/254D.png differ diff --git a/fonts/TewiFont/254E.png b/fonts/TewiFont/254E.png new file mode 100644 index 000000000..4a3fb77d6 Binary files /dev/null and b/fonts/TewiFont/254E.png differ diff --git a/fonts/TewiFont/254F.png b/fonts/TewiFont/254F.png new file mode 100644 index 000000000..15dd97490 Binary files /dev/null and b/fonts/TewiFont/254F.png differ diff --git a/fonts/TewiFont/2550.png b/fonts/TewiFont/2550.png new file mode 100644 index 000000000..7625f0a85 Binary files /dev/null and b/fonts/TewiFont/2550.png differ diff --git a/fonts/TewiFont/2551.png b/fonts/TewiFont/2551.png new file mode 100644 index 000000000..ddc1696a5 Binary files /dev/null and b/fonts/TewiFont/2551.png differ diff --git a/fonts/TewiFont/2552.png b/fonts/TewiFont/2552.png new file mode 100644 index 000000000..b6788810c Binary files /dev/null and b/fonts/TewiFont/2552.png differ diff --git a/fonts/TewiFont/2553.png b/fonts/TewiFont/2553.png new file mode 100644 index 000000000..1840b2b7f Binary files /dev/null and b/fonts/TewiFont/2553.png differ diff --git a/fonts/TewiFont/2554.png b/fonts/TewiFont/2554.png new file mode 100644 index 000000000..3a56b0132 Binary files /dev/null and b/fonts/TewiFont/2554.png differ diff --git a/fonts/TewiFont/2555.png b/fonts/TewiFont/2555.png new file mode 100644 index 000000000..c3d836573 Binary files /dev/null and b/fonts/TewiFont/2555.png differ diff --git a/fonts/TewiFont/2556.png b/fonts/TewiFont/2556.png new file mode 100644 index 000000000..9b6f6a471 Binary files /dev/null and b/fonts/TewiFont/2556.png differ diff --git a/fonts/TewiFont/2557.png b/fonts/TewiFont/2557.png new file mode 100644 index 000000000..8ef7051a2 Binary files /dev/null and b/fonts/TewiFont/2557.png differ diff --git a/fonts/TewiFont/2558.png b/fonts/TewiFont/2558.png new file mode 100644 index 000000000..f35ca105e Binary files /dev/null and b/fonts/TewiFont/2558.png differ diff --git a/fonts/TewiFont/2559.png b/fonts/TewiFont/2559.png new file mode 100644 index 000000000..db4cd5fc4 Binary files /dev/null and b/fonts/TewiFont/2559.png differ diff --git a/fonts/TewiFont/255A.png b/fonts/TewiFont/255A.png new file mode 100644 index 000000000..203cbfbcf Binary files /dev/null and b/fonts/TewiFont/255A.png differ diff --git a/fonts/TewiFont/255B.png b/fonts/TewiFont/255B.png new file mode 100644 index 000000000..05b0c4d71 Binary files /dev/null and b/fonts/TewiFont/255B.png differ diff --git a/fonts/TewiFont/255C.png b/fonts/TewiFont/255C.png new file mode 100644 index 000000000..48b77c9a3 Binary files /dev/null and b/fonts/TewiFont/255C.png differ diff --git a/fonts/TewiFont/255D.png b/fonts/TewiFont/255D.png new file mode 100644 index 000000000..0535ac199 Binary files /dev/null and b/fonts/TewiFont/255D.png differ diff --git a/fonts/TewiFont/255E.png b/fonts/TewiFont/255E.png new file mode 100644 index 000000000..ef7383480 Binary files /dev/null and b/fonts/TewiFont/255E.png differ diff --git a/fonts/TewiFont/255F.png b/fonts/TewiFont/255F.png new file mode 100644 index 000000000..8e1c12be6 Binary files /dev/null and b/fonts/TewiFont/255F.png differ diff --git a/fonts/TewiFont/2560.png b/fonts/TewiFont/2560.png new file mode 100644 index 000000000..ff4343fe7 Binary files /dev/null and b/fonts/TewiFont/2560.png differ diff --git a/fonts/TewiFont/2561.png b/fonts/TewiFont/2561.png new file mode 100644 index 000000000..368f6a465 Binary files /dev/null and b/fonts/TewiFont/2561.png differ diff --git a/fonts/TewiFont/2562.png b/fonts/TewiFont/2562.png new file mode 100644 index 000000000..b7b516cbc Binary files /dev/null and b/fonts/TewiFont/2562.png differ diff --git a/fonts/TewiFont/2563.png b/fonts/TewiFont/2563.png new file mode 100644 index 000000000..c2baa6e69 Binary files /dev/null and b/fonts/TewiFont/2563.png differ diff --git a/fonts/TewiFont/2564.png b/fonts/TewiFont/2564.png new file mode 100644 index 000000000..6bec9cf26 Binary files /dev/null and b/fonts/TewiFont/2564.png differ diff --git a/fonts/TewiFont/2565.png b/fonts/TewiFont/2565.png new file mode 100644 index 000000000..91c7d724d Binary files /dev/null and b/fonts/TewiFont/2565.png differ diff --git a/fonts/TewiFont/2566.png b/fonts/TewiFont/2566.png new file mode 100644 index 000000000..3e525262f Binary files /dev/null and b/fonts/TewiFont/2566.png differ diff --git a/fonts/TewiFont/2567.png b/fonts/TewiFont/2567.png new file mode 100644 index 000000000..f50dd3f07 Binary files /dev/null and b/fonts/TewiFont/2567.png differ diff --git a/fonts/TewiFont/2568.png b/fonts/TewiFont/2568.png new file mode 100644 index 000000000..b7eeacbef Binary files /dev/null and b/fonts/TewiFont/2568.png differ diff --git a/fonts/TewiFont/2569.png b/fonts/TewiFont/2569.png new file mode 100644 index 000000000..3e4f47ac1 Binary files /dev/null and b/fonts/TewiFont/2569.png differ diff --git a/fonts/TewiFont/256A.png b/fonts/TewiFont/256A.png new file mode 100644 index 000000000..2bd23f26e Binary files /dev/null and b/fonts/TewiFont/256A.png differ diff --git a/fonts/TewiFont/256B.png b/fonts/TewiFont/256B.png new file mode 100644 index 000000000..d7abdaf22 Binary files /dev/null and b/fonts/TewiFont/256B.png differ diff --git a/fonts/TewiFont/256C.png b/fonts/TewiFont/256C.png new file mode 100644 index 000000000..df59b4590 Binary files /dev/null and b/fonts/TewiFont/256C.png differ diff --git a/fonts/TewiFont/256D.png b/fonts/TewiFont/256D.png new file mode 100644 index 000000000..45708b8d6 Binary files /dev/null and b/fonts/TewiFont/256D.png differ diff --git a/fonts/TewiFont/256E.png b/fonts/TewiFont/256E.png new file mode 100644 index 000000000..ae5fca184 Binary files /dev/null and b/fonts/TewiFont/256E.png differ diff --git a/fonts/TewiFont/256F.png b/fonts/TewiFont/256F.png new file mode 100644 index 000000000..8855a7f64 Binary files /dev/null and b/fonts/TewiFont/256F.png differ diff --git a/fonts/TewiFont/2570.png b/fonts/TewiFont/2570.png new file mode 100644 index 000000000..0410f1d27 Binary files /dev/null and b/fonts/TewiFont/2570.png differ diff --git a/fonts/TewiFont/2571.png b/fonts/TewiFont/2571.png new file mode 100644 index 000000000..09ffdb2c9 Binary files /dev/null and b/fonts/TewiFont/2571.png differ diff --git a/fonts/TewiFont/2572.png b/fonts/TewiFont/2572.png new file mode 100644 index 000000000..e91ac9177 Binary files /dev/null and b/fonts/TewiFont/2572.png differ diff --git a/fonts/TewiFont/2573.png b/fonts/TewiFont/2573.png new file mode 100644 index 000000000..3d06fa4c1 Binary files /dev/null and b/fonts/TewiFont/2573.png differ diff --git a/fonts/TewiFont/2574.png b/fonts/TewiFont/2574.png new file mode 100644 index 000000000..8f2dbcbba Binary files /dev/null and b/fonts/TewiFont/2574.png differ diff --git a/fonts/TewiFont/2575.png b/fonts/TewiFont/2575.png new file mode 100644 index 000000000..a50df7749 Binary files /dev/null and b/fonts/TewiFont/2575.png differ diff --git a/fonts/TewiFont/2576.png b/fonts/TewiFont/2576.png new file mode 100644 index 000000000..43cbc9177 Binary files /dev/null and b/fonts/TewiFont/2576.png differ diff --git a/fonts/TewiFont/2577.png b/fonts/TewiFont/2577.png new file mode 100644 index 000000000..8657bf1fc Binary files /dev/null and b/fonts/TewiFont/2577.png differ diff --git a/fonts/TewiFont/2578.png b/fonts/TewiFont/2578.png new file mode 100644 index 000000000..9a1c4c7b7 Binary files /dev/null and b/fonts/TewiFont/2578.png differ diff --git a/fonts/TewiFont/2579.png b/fonts/TewiFont/2579.png new file mode 100644 index 000000000..8263b59ba Binary files /dev/null and b/fonts/TewiFont/2579.png differ diff --git a/fonts/TewiFont/257A.png b/fonts/TewiFont/257A.png new file mode 100644 index 000000000..bb7a86572 Binary files /dev/null and b/fonts/TewiFont/257A.png differ diff --git a/fonts/TewiFont/257B.png b/fonts/TewiFont/257B.png new file mode 100644 index 000000000..137cacdec Binary files /dev/null and b/fonts/TewiFont/257B.png differ diff --git a/fonts/TewiFont/257C.png b/fonts/TewiFont/257C.png new file mode 100644 index 000000000..6f769d342 Binary files /dev/null and b/fonts/TewiFont/257C.png differ diff --git a/fonts/TewiFont/257D.png b/fonts/TewiFont/257D.png new file mode 100644 index 000000000..72738cfaa Binary files /dev/null and b/fonts/TewiFont/257D.png differ diff --git a/fonts/TewiFont/257E.png b/fonts/TewiFont/257E.png new file mode 100644 index 000000000..cb3f8f227 Binary files /dev/null and b/fonts/TewiFont/257E.png differ diff --git a/fonts/TewiFont/257F.png b/fonts/TewiFont/257F.png new file mode 100644 index 000000000..8f01af30d Binary files /dev/null and b/fonts/TewiFont/257F.png differ diff --git a/fonts/TewiFont/2580.png b/fonts/TewiFont/2580.png new file mode 100644 index 000000000..f58069ef8 Binary files /dev/null and b/fonts/TewiFont/2580.png differ diff --git a/fonts/TewiFont/2581.png b/fonts/TewiFont/2581.png new file mode 100644 index 000000000..c96adee5b Binary files /dev/null and b/fonts/TewiFont/2581.png differ diff --git a/fonts/TewiFont/2582.png b/fonts/TewiFont/2582.png new file mode 100644 index 000000000..f3435f9e7 Binary files /dev/null and b/fonts/TewiFont/2582.png differ diff --git a/fonts/TewiFont/2583.png b/fonts/TewiFont/2583.png new file mode 100644 index 000000000..508bc3777 Binary files /dev/null and b/fonts/TewiFont/2583.png differ diff --git a/fonts/TewiFont/2584.png b/fonts/TewiFont/2584.png new file mode 100644 index 000000000..fa9cd122e Binary files /dev/null and b/fonts/TewiFont/2584.png differ diff --git a/fonts/TewiFont/2585.png b/fonts/TewiFont/2585.png new file mode 100644 index 000000000..be28c88bf Binary files /dev/null and b/fonts/TewiFont/2585.png differ diff --git a/fonts/TewiFont/2586.png b/fonts/TewiFont/2586.png new file mode 100644 index 000000000..6c707ed28 Binary files /dev/null and b/fonts/TewiFont/2586.png differ diff --git a/fonts/TewiFont/2587.png b/fonts/TewiFont/2587.png new file mode 100644 index 000000000..3e60fd546 Binary files /dev/null and b/fonts/TewiFont/2587.png differ diff --git a/fonts/TewiFont/2588.png b/fonts/TewiFont/2588.png new file mode 100644 index 000000000..a12a7a321 Binary files /dev/null and b/fonts/TewiFont/2588.png differ diff --git a/fonts/TewiFont/2589.png b/fonts/TewiFont/2589.png new file mode 100644 index 000000000..a12a7a321 Binary files /dev/null and b/fonts/TewiFont/2589.png differ diff --git a/fonts/TewiFont/258A.png b/fonts/TewiFont/258A.png new file mode 100644 index 000000000..69d6f86a6 Binary files /dev/null and b/fonts/TewiFont/258A.png differ diff --git a/fonts/TewiFont/258B.png b/fonts/TewiFont/258B.png new file mode 100644 index 000000000..dba4272fd Binary files /dev/null and b/fonts/TewiFont/258B.png differ diff --git a/fonts/TewiFont/258C.png b/fonts/TewiFont/258C.png new file mode 100644 index 000000000..b30fc4d4e Binary files /dev/null and b/fonts/TewiFont/258C.png differ diff --git a/fonts/TewiFont/258D.png b/fonts/TewiFont/258D.png new file mode 100644 index 000000000..b30fc4d4e Binary files /dev/null and b/fonts/TewiFont/258D.png differ diff --git a/fonts/TewiFont/258E.png b/fonts/TewiFont/258E.png new file mode 100644 index 000000000..a91d94aa0 Binary files /dev/null and b/fonts/TewiFont/258E.png differ diff --git a/fonts/TewiFont/258F.png b/fonts/TewiFont/258F.png new file mode 100644 index 000000000..0aed529db Binary files /dev/null and b/fonts/TewiFont/258F.png differ diff --git a/fonts/TewiFont/2590.png b/fonts/TewiFont/2590.png new file mode 100644 index 000000000..268da537e Binary files /dev/null and b/fonts/TewiFont/2590.png differ diff --git a/fonts/TewiFont/2591.png b/fonts/TewiFont/2591.png new file mode 100644 index 000000000..d01f965c3 Binary files /dev/null and b/fonts/TewiFont/2591.png differ diff --git a/fonts/TewiFont/2592.png b/fonts/TewiFont/2592.png new file mode 100644 index 000000000..2f3c2fc76 Binary files /dev/null and b/fonts/TewiFont/2592.png differ diff --git a/fonts/TewiFont/2593.png b/fonts/TewiFont/2593.png new file mode 100644 index 000000000..8cc00f26f Binary files /dev/null and b/fonts/TewiFont/2593.png differ diff --git a/fonts/TewiFont/2594.png b/fonts/TewiFont/2594.png new file mode 100644 index 000000000..b7a1337b4 Binary files /dev/null and b/fonts/TewiFont/2594.png differ diff --git a/fonts/TewiFont/2595.png b/fonts/TewiFont/2595.png new file mode 100644 index 000000000..d80d26cfa Binary files /dev/null and b/fonts/TewiFont/2595.png differ diff --git a/fonts/TewiFont/2596.png b/fonts/TewiFont/2596.png new file mode 100644 index 000000000..7516c6bac Binary files /dev/null and b/fonts/TewiFont/2596.png differ diff --git a/fonts/TewiFont/2597.png b/fonts/TewiFont/2597.png new file mode 100644 index 000000000..6e0fd6d37 Binary files /dev/null and b/fonts/TewiFont/2597.png differ diff --git a/fonts/TewiFont/2598.png b/fonts/TewiFont/2598.png new file mode 100644 index 000000000..7f8ec5b0e Binary files /dev/null and b/fonts/TewiFont/2598.png differ diff --git a/fonts/TewiFont/2599.png b/fonts/TewiFont/2599.png new file mode 100644 index 000000000..6c25367a1 Binary files /dev/null and b/fonts/TewiFont/2599.png differ diff --git a/fonts/TewiFont/259A.png b/fonts/TewiFont/259A.png new file mode 100644 index 000000000..a7185b7ad Binary files /dev/null and b/fonts/TewiFont/259A.png differ diff --git a/fonts/TewiFont/259B.png b/fonts/TewiFont/259B.png new file mode 100644 index 000000000..29510344e Binary files /dev/null and b/fonts/TewiFont/259B.png differ diff --git a/fonts/TewiFont/259C.png b/fonts/TewiFont/259C.png new file mode 100644 index 000000000..117f05aa8 Binary files /dev/null and b/fonts/TewiFont/259C.png differ diff --git a/fonts/TewiFont/259D.png b/fonts/TewiFont/259D.png new file mode 100644 index 000000000..f985b5336 Binary files /dev/null and b/fonts/TewiFont/259D.png differ diff --git a/fonts/TewiFont/259E.png b/fonts/TewiFont/259E.png new file mode 100644 index 000000000..092345ecf Binary files /dev/null and b/fonts/TewiFont/259E.png differ diff --git a/fonts/TewiFont/259F.png b/fonts/TewiFont/259F.png new file mode 100644 index 000000000..af55aff9a Binary files /dev/null and b/fonts/TewiFont/259F.png differ diff --git a/fonts/TewiFont/25A0.png b/fonts/TewiFont/25A0.png new file mode 100644 index 000000000..aa4fb53e5 Binary files /dev/null and b/fonts/TewiFont/25A0.png differ diff --git a/fonts/TewiFont/25A1.png b/fonts/TewiFont/25A1.png new file mode 100644 index 000000000..d47d4176f Binary files /dev/null and b/fonts/TewiFont/25A1.png differ diff --git a/fonts/TewiFont/25A2.png b/fonts/TewiFont/25A2.png new file mode 100644 index 000000000..13c59cfc6 Binary files /dev/null and b/fonts/TewiFont/25A2.png differ diff --git a/fonts/TewiFont/25A3.png b/fonts/TewiFont/25A3.png new file mode 100644 index 000000000..305bed313 Binary files /dev/null and b/fonts/TewiFont/25A3.png differ diff --git a/fonts/TewiFont/25A4.png b/fonts/TewiFont/25A4.png new file mode 100644 index 000000000..82c92529a Binary files /dev/null and b/fonts/TewiFont/25A4.png differ diff --git a/fonts/TewiFont/25A5.png b/fonts/TewiFont/25A5.png new file mode 100644 index 000000000..266a62ba8 Binary files /dev/null and b/fonts/TewiFont/25A5.png differ diff --git a/fonts/TewiFont/25A6.png b/fonts/TewiFont/25A6.png new file mode 100644 index 000000000..d2fa4c9f7 Binary files /dev/null and b/fonts/TewiFont/25A6.png differ diff --git a/fonts/TewiFont/25A7.png b/fonts/TewiFont/25A7.png new file mode 100644 index 000000000..25e9e1f03 Binary files /dev/null and b/fonts/TewiFont/25A7.png differ diff --git a/fonts/TewiFont/25A8.png b/fonts/TewiFont/25A8.png new file mode 100644 index 000000000..19e25f84a Binary files /dev/null and b/fonts/TewiFont/25A8.png differ diff --git a/fonts/TewiFont/25A9.png b/fonts/TewiFont/25A9.png new file mode 100644 index 000000000..5530715ef Binary files /dev/null and b/fonts/TewiFont/25A9.png differ diff --git a/fonts/TewiFont/25AA.png b/fonts/TewiFont/25AA.png new file mode 100644 index 000000000..69e963ea8 Binary files /dev/null and b/fonts/TewiFont/25AA.png differ diff --git a/fonts/TewiFont/25AB.png b/fonts/TewiFont/25AB.png new file mode 100644 index 000000000..c862848d1 Binary files /dev/null and b/fonts/TewiFont/25AB.png differ diff --git a/fonts/TewiFont/25AC.png b/fonts/TewiFont/25AC.png new file mode 100644 index 000000000..a9a1afb11 Binary files /dev/null and b/fonts/TewiFont/25AC.png differ diff --git a/fonts/TewiFont/25AD.png b/fonts/TewiFont/25AD.png new file mode 100644 index 000000000..ce1c9ab27 Binary files /dev/null and b/fonts/TewiFont/25AD.png differ diff --git a/fonts/TewiFont/25AE.png b/fonts/TewiFont/25AE.png new file mode 100644 index 000000000..fb2ddc209 Binary files /dev/null and b/fonts/TewiFont/25AE.png differ diff --git a/fonts/TewiFont/25AF.png b/fonts/TewiFont/25AF.png new file mode 100644 index 000000000..a43d8b3c2 Binary files /dev/null and b/fonts/TewiFont/25AF.png differ diff --git a/fonts/TewiFont/25B0.png b/fonts/TewiFont/25B0.png new file mode 100644 index 000000000..e43bfc57c Binary files /dev/null and b/fonts/TewiFont/25B0.png differ diff --git a/fonts/TewiFont/25B1.png b/fonts/TewiFont/25B1.png new file mode 100644 index 000000000..6480dcc23 Binary files /dev/null and b/fonts/TewiFont/25B1.png differ diff --git a/fonts/TewiFont/25B2.png b/fonts/TewiFont/25B2.png new file mode 100644 index 000000000..2f469419e Binary files /dev/null and b/fonts/TewiFont/25B2.png differ diff --git a/fonts/TewiFont/25B3.png b/fonts/TewiFont/25B3.png new file mode 100644 index 000000000..e48a2d640 Binary files /dev/null and b/fonts/TewiFont/25B3.png differ diff --git a/fonts/TewiFont/25B4.png b/fonts/TewiFont/25B4.png new file mode 100644 index 000000000..dec6a6ea6 Binary files /dev/null and b/fonts/TewiFont/25B4.png differ diff --git a/fonts/TewiFont/25B5.png b/fonts/TewiFont/25B5.png new file mode 100644 index 000000000..3d399e69e Binary files /dev/null and b/fonts/TewiFont/25B5.png differ diff --git a/fonts/TewiFont/25B6.png b/fonts/TewiFont/25B6.png new file mode 100644 index 000000000..fe67ff230 Binary files /dev/null and b/fonts/TewiFont/25B6.png differ diff --git a/fonts/TewiFont/25B7.png b/fonts/TewiFont/25B7.png new file mode 100644 index 000000000..effafcc78 Binary files /dev/null and b/fonts/TewiFont/25B7.png differ diff --git a/fonts/TewiFont/25B8.png b/fonts/TewiFont/25B8.png new file mode 100644 index 000000000..4cc03d293 Binary files /dev/null and b/fonts/TewiFont/25B8.png differ diff --git a/fonts/TewiFont/25B9.png b/fonts/TewiFont/25B9.png new file mode 100644 index 000000000..d761768c5 Binary files /dev/null and b/fonts/TewiFont/25B9.png differ diff --git a/fonts/TewiFont/25BA.png b/fonts/TewiFont/25BA.png new file mode 100644 index 000000000..fe67ff230 Binary files /dev/null and b/fonts/TewiFont/25BA.png differ diff --git a/fonts/TewiFont/25BB.png b/fonts/TewiFont/25BB.png new file mode 100644 index 000000000..effafcc78 Binary files /dev/null and b/fonts/TewiFont/25BB.png differ diff --git a/fonts/TewiFont/25BC.png b/fonts/TewiFont/25BC.png new file mode 100644 index 000000000..ace7c5ed3 Binary files /dev/null and b/fonts/TewiFont/25BC.png differ diff --git a/fonts/TewiFont/25BD.png b/fonts/TewiFont/25BD.png new file mode 100644 index 000000000..512b36779 Binary files /dev/null and b/fonts/TewiFont/25BD.png differ diff --git a/fonts/TewiFont/25BE.png b/fonts/TewiFont/25BE.png new file mode 100644 index 000000000..73b85634f Binary files /dev/null and b/fonts/TewiFont/25BE.png differ diff --git a/fonts/TewiFont/25BF.png b/fonts/TewiFont/25BF.png new file mode 100644 index 000000000..4301ab5b8 Binary files /dev/null and b/fonts/TewiFont/25BF.png differ diff --git a/fonts/TewiFont/25C0.png b/fonts/TewiFont/25C0.png new file mode 100644 index 000000000..c6f8d02c5 Binary files /dev/null and b/fonts/TewiFont/25C0.png differ diff --git a/fonts/TewiFont/25C1.png b/fonts/TewiFont/25C1.png new file mode 100644 index 000000000..306646ce6 Binary files /dev/null and b/fonts/TewiFont/25C1.png differ diff --git a/fonts/TewiFont/25C2.png b/fonts/TewiFont/25C2.png new file mode 100644 index 000000000..fde211eca Binary files /dev/null and b/fonts/TewiFont/25C2.png differ diff --git a/fonts/TewiFont/25C3.png b/fonts/TewiFont/25C3.png new file mode 100644 index 000000000..b7b04e6d0 Binary files /dev/null and b/fonts/TewiFont/25C3.png differ diff --git a/fonts/TewiFont/25C4.png b/fonts/TewiFont/25C4.png new file mode 100644 index 000000000..c6f8d02c5 Binary files /dev/null and b/fonts/TewiFont/25C4.png differ diff --git a/fonts/TewiFont/25C5.png b/fonts/TewiFont/25C5.png new file mode 100644 index 000000000..306646ce6 Binary files /dev/null and b/fonts/TewiFont/25C5.png differ diff --git a/fonts/TewiFont/25C6.png b/fonts/TewiFont/25C6.png new file mode 100644 index 000000000..af0a4cf8b Binary files /dev/null and b/fonts/TewiFont/25C6.png differ diff --git a/fonts/TewiFont/25C7.png b/fonts/TewiFont/25C7.png new file mode 100644 index 000000000..8e90b21fb Binary files /dev/null and b/fonts/TewiFont/25C7.png differ diff --git a/fonts/TewiFont/25C8.png b/fonts/TewiFont/25C8.png new file mode 100644 index 000000000..6d91d4ab9 Binary files /dev/null and b/fonts/TewiFont/25C8.png differ diff --git a/fonts/TewiFont/25C9.png b/fonts/TewiFont/25C9.png new file mode 100644 index 000000000..87ad19766 Binary files /dev/null and b/fonts/TewiFont/25C9.png differ diff --git a/fonts/TewiFont/25CA.png b/fonts/TewiFont/25CA.png new file mode 100644 index 000000000..272494e49 Binary files /dev/null and b/fonts/TewiFont/25CA.png differ diff --git a/fonts/TewiFont/25CB.png b/fonts/TewiFont/25CB.png new file mode 100644 index 000000000..d4cf814f2 Binary files /dev/null and b/fonts/TewiFont/25CB.png differ diff --git a/fonts/TewiFont/25CC.png b/fonts/TewiFont/25CC.png new file mode 100644 index 000000000..141fc48f4 Binary files /dev/null and b/fonts/TewiFont/25CC.png differ diff --git a/fonts/TewiFont/25CD.png b/fonts/TewiFont/25CD.png new file mode 100644 index 000000000..9b2832c13 Binary files /dev/null and b/fonts/TewiFont/25CD.png differ diff --git a/fonts/TewiFont/25CE.png b/fonts/TewiFont/25CE.png new file mode 100644 index 000000000..87ad19766 Binary files /dev/null and b/fonts/TewiFont/25CE.png differ diff --git a/fonts/TewiFont/25CF.png b/fonts/TewiFont/25CF.png new file mode 100644 index 000000000..539a95033 Binary files /dev/null and b/fonts/TewiFont/25CF.png differ diff --git a/fonts/TewiFont/25D0.png b/fonts/TewiFont/25D0.png new file mode 100644 index 000000000..f648c8fe2 Binary files /dev/null and b/fonts/TewiFont/25D0.png differ diff --git a/fonts/TewiFont/25D1.png b/fonts/TewiFont/25D1.png new file mode 100644 index 000000000..29f885462 Binary files /dev/null and b/fonts/TewiFont/25D1.png differ diff --git a/fonts/TewiFont/25D2.png b/fonts/TewiFont/25D2.png new file mode 100644 index 000000000..099ad5891 Binary files /dev/null and b/fonts/TewiFont/25D2.png differ diff --git a/fonts/TewiFont/25D3.png b/fonts/TewiFont/25D3.png new file mode 100644 index 000000000..c0eea27eb Binary files /dev/null and b/fonts/TewiFont/25D3.png differ diff --git a/fonts/TewiFont/25D4.png b/fonts/TewiFont/25D4.png new file mode 100644 index 000000000..dab7aea13 Binary files /dev/null and b/fonts/TewiFont/25D4.png differ diff --git a/fonts/TewiFont/25D5.png b/fonts/TewiFont/25D5.png new file mode 100644 index 000000000..7e0baba62 Binary files /dev/null and b/fonts/TewiFont/25D5.png differ diff --git a/fonts/TewiFont/25D6.png b/fonts/TewiFont/25D6.png new file mode 100644 index 000000000..bfb5272ec Binary files /dev/null and b/fonts/TewiFont/25D6.png differ diff --git a/fonts/TewiFont/25D7.png b/fonts/TewiFont/25D7.png new file mode 100644 index 000000000..dbc31f0a4 Binary files /dev/null and b/fonts/TewiFont/25D7.png differ diff --git a/fonts/TewiFont/25D8.png b/fonts/TewiFont/25D8.png new file mode 100644 index 000000000..48440289e Binary files /dev/null and b/fonts/TewiFont/25D8.png differ diff --git a/fonts/TewiFont/25D9.png b/fonts/TewiFont/25D9.png new file mode 100644 index 000000000..bf73603bd Binary files /dev/null and b/fonts/TewiFont/25D9.png differ diff --git a/fonts/TewiFont/25DA.png b/fonts/TewiFont/25DA.png new file mode 100644 index 000000000..ec53f7651 Binary files /dev/null and b/fonts/TewiFont/25DA.png differ diff --git a/fonts/TewiFont/25DB.png b/fonts/TewiFont/25DB.png new file mode 100644 index 000000000..c05e89cca Binary files /dev/null and b/fonts/TewiFont/25DB.png differ diff --git a/fonts/TewiFont/25DC.png b/fonts/TewiFont/25DC.png new file mode 100644 index 000000000..fba51a1da Binary files /dev/null and b/fonts/TewiFont/25DC.png differ diff --git a/fonts/TewiFont/25DD.png b/fonts/TewiFont/25DD.png new file mode 100644 index 000000000..d1a54127e Binary files /dev/null and b/fonts/TewiFont/25DD.png differ diff --git a/fonts/TewiFont/25DE.png b/fonts/TewiFont/25DE.png new file mode 100644 index 000000000..d047f6fb5 Binary files /dev/null and b/fonts/TewiFont/25DE.png differ diff --git a/fonts/TewiFont/25DF.png b/fonts/TewiFont/25DF.png new file mode 100644 index 000000000..055db753c Binary files /dev/null and b/fonts/TewiFont/25DF.png differ diff --git a/fonts/TewiFont/25E0.png b/fonts/TewiFont/25E0.png new file mode 100644 index 000000000..547f6e61c Binary files /dev/null and b/fonts/TewiFont/25E0.png differ diff --git a/fonts/TewiFont/25E1.png b/fonts/TewiFont/25E1.png new file mode 100644 index 000000000..86776695d Binary files /dev/null and b/fonts/TewiFont/25E1.png differ diff --git a/fonts/TewiFont/25E2.png b/fonts/TewiFont/25E2.png new file mode 100644 index 000000000..699cb463f Binary files /dev/null and b/fonts/TewiFont/25E2.png differ diff --git a/fonts/TewiFont/25E3.png b/fonts/TewiFont/25E3.png new file mode 100644 index 000000000..dc9c621fa Binary files /dev/null and b/fonts/TewiFont/25E3.png differ diff --git a/fonts/TewiFont/25E4.png b/fonts/TewiFont/25E4.png new file mode 100644 index 000000000..8087dd4b2 Binary files /dev/null and b/fonts/TewiFont/25E4.png differ diff --git a/fonts/TewiFont/25E5.png b/fonts/TewiFont/25E5.png new file mode 100644 index 000000000..2c1ef2829 Binary files /dev/null and b/fonts/TewiFont/25E5.png differ diff --git a/fonts/TewiFont/25E6.png b/fonts/TewiFont/25E6.png new file mode 100644 index 000000000..d4cf814f2 Binary files /dev/null and b/fonts/TewiFont/25E6.png differ diff --git a/fonts/TewiFont/25E7.png b/fonts/TewiFont/25E7.png new file mode 100644 index 000000000..70ea8e96d Binary files /dev/null and b/fonts/TewiFont/25E7.png differ diff --git a/fonts/TewiFont/25E8.png b/fonts/TewiFont/25E8.png new file mode 100644 index 000000000..87b617a01 Binary files /dev/null and b/fonts/TewiFont/25E8.png differ diff --git a/fonts/TewiFont/25E9.png b/fonts/TewiFont/25E9.png new file mode 100644 index 000000000..d73fa419f Binary files /dev/null and b/fonts/TewiFont/25E9.png differ diff --git a/fonts/TewiFont/25EA.png b/fonts/TewiFont/25EA.png new file mode 100644 index 000000000..7c77dac88 Binary files /dev/null and b/fonts/TewiFont/25EA.png differ diff --git a/fonts/TewiFont/25EB.png b/fonts/TewiFont/25EB.png new file mode 100644 index 000000000..266a62ba8 Binary files /dev/null and b/fonts/TewiFont/25EB.png differ diff --git a/fonts/TewiFont/25EC.png b/fonts/TewiFont/25EC.png new file mode 100644 index 000000000..45d4a11f6 Binary files /dev/null and b/fonts/TewiFont/25EC.png differ diff --git a/fonts/TewiFont/25ED.png b/fonts/TewiFont/25ED.png new file mode 100644 index 000000000..fd7bac931 Binary files /dev/null and b/fonts/TewiFont/25ED.png differ diff --git a/fonts/TewiFont/25EE.png b/fonts/TewiFont/25EE.png new file mode 100644 index 000000000..2864cc37d Binary files /dev/null and b/fonts/TewiFont/25EE.png differ diff --git a/fonts/TewiFont/25EF.png b/fonts/TewiFont/25EF.png new file mode 100644 index 000000000..13c59cfc6 Binary files /dev/null and b/fonts/TewiFont/25EF.png differ diff --git a/fonts/TewiFont/25F0.png b/fonts/TewiFont/25F0.png new file mode 100644 index 000000000..2936f79f4 Binary files /dev/null and b/fonts/TewiFont/25F0.png differ diff --git a/fonts/TewiFont/25F1.png b/fonts/TewiFont/25F1.png new file mode 100644 index 000000000..23fc446f5 Binary files /dev/null and b/fonts/TewiFont/25F1.png differ diff --git a/fonts/TewiFont/25F2.png b/fonts/TewiFont/25F2.png new file mode 100644 index 000000000..a309193d5 Binary files /dev/null and b/fonts/TewiFont/25F2.png differ diff --git a/fonts/TewiFont/25F3.png b/fonts/TewiFont/25F3.png new file mode 100644 index 000000000..9303f0503 Binary files /dev/null and b/fonts/TewiFont/25F3.png differ diff --git a/fonts/TewiFont/25F4.png b/fonts/TewiFont/25F4.png new file mode 100644 index 000000000..072121813 Binary files /dev/null and b/fonts/TewiFont/25F4.png differ diff --git a/fonts/TewiFont/25F5.png b/fonts/TewiFont/25F5.png new file mode 100644 index 000000000..e5a9fab1b Binary files /dev/null and b/fonts/TewiFont/25F5.png differ diff --git a/fonts/TewiFont/25F6.png b/fonts/TewiFont/25F6.png new file mode 100644 index 000000000..269a4fad6 Binary files /dev/null and b/fonts/TewiFont/25F6.png differ diff --git a/fonts/TewiFont/25F7.png b/fonts/TewiFont/25F7.png new file mode 100644 index 000000000..eb8d641f1 Binary files /dev/null and b/fonts/TewiFont/25F7.png differ diff --git a/fonts/TewiFont/25F8.png b/fonts/TewiFont/25F8.png new file mode 100644 index 000000000..6c6c53466 Binary files /dev/null and b/fonts/TewiFont/25F8.png differ diff --git a/fonts/TewiFont/25F9.png b/fonts/TewiFont/25F9.png new file mode 100644 index 000000000..108feb986 Binary files /dev/null and b/fonts/TewiFont/25F9.png differ diff --git a/fonts/TewiFont/25FA.png b/fonts/TewiFont/25FA.png new file mode 100644 index 000000000..92d2d25eb Binary files /dev/null and b/fonts/TewiFont/25FA.png differ diff --git a/fonts/TewiFont/25FB.png b/fonts/TewiFont/25FB.png new file mode 100644 index 000000000..d47d4176f Binary files /dev/null and b/fonts/TewiFont/25FB.png differ diff --git a/fonts/TewiFont/25FC.png b/fonts/TewiFont/25FC.png new file mode 100644 index 000000000..aa4fb53e5 Binary files /dev/null and b/fonts/TewiFont/25FC.png differ diff --git a/fonts/TewiFont/25FD.png b/fonts/TewiFont/25FD.png new file mode 100644 index 000000000..1c17057f1 Binary files /dev/null and b/fonts/TewiFont/25FD.png differ diff --git a/fonts/TewiFont/25FE.png b/fonts/TewiFont/25FE.png new file mode 100644 index 000000000..a47497492 Binary files /dev/null and b/fonts/TewiFont/25FE.png differ diff --git a/fonts/TewiFont/25FF.png b/fonts/TewiFont/25FF.png new file mode 100644 index 000000000..b503e5ec1 Binary files /dev/null and b/fonts/TewiFont/25FF.png differ diff --git a/fonts/TewiFont/2600.png b/fonts/TewiFont/2600.png new file mode 100644 index 000000000..3d3b9fc2b Binary files /dev/null and b/fonts/TewiFont/2600.png differ diff --git a/fonts/TewiFont/2601.png b/fonts/TewiFont/2601.png new file mode 100644 index 000000000..ebf6d7f2c Binary files /dev/null and b/fonts/TewiFont/2601.png differ diff --git a/fonts/TewiFont/2602.png b/fonts/TewiFont/2602.png new file mode 100644 index 000000000..1080a4476 Binary files /dev/null and b/fonts/TewiFont/2602.png differ diff --git a/fonts/TewiFont/2603.png b/fonts/TewiFont/2603.png new file mode 100644 index 000000000..6ed5988e7 Binary files /dev/null and b/fonts/TewiFont/2603.png differ diff --git a/fonts/TewiFont/2604.png b/fonts/TewiFont/2604.png new file mode 100644 index 000000000..d7b6380d3 Binary files /dev/null and b/fonts/TewiFont/2604.png differ diff --git a/fonts/TewiFont/2605.png b/fonts/TewiFont/2605.png new file mode 100644 index 000000000..1183a54d3 Binary files /dev/null and b/fonts/TewiFont/2605.png differ diff --git a/fonts/TewiFont/2606.png b/fonts/TewiFont/2606.png new file mode 100644 index 000000000..4e4c73c72 Binary files /dev/null and b/fonts/TewiFont/2606.png differ diff --git a/fonts/TewiFont/2607.png b/fonts/TewiFont/2607.png new file mode 100644 index 000000000..367663e49 Binary files /dev/null and b/fonts/TewiFont/2607.png differ diff --git a/fonts/TewiFont/2608.png b/fonts/TewiFont/2608.png new file mode 100644 index 000000000..9f3a25ec3 Binary files /dev/null and b/fonts/TewiFont/2608.png differ diff --git a/fonts/TewiFont/2609.png b/fonts/TewiFont/2609.png new file mode 100644 index 000000000..25a2cffc7 Binary files /dev/null and b/fonts/TewiFont/2609.png differ diff --git a/fonts/TewiFont/2610.png b/fonts/TewiFont/2610.png new file mode 100644 index 000000000..d47d4176f Binary files /dev/null and b/fonts/TewiFont/2610.png differ diff --git a/fonts/TewiFont/2611.png b/fonts/TewiFont/2611.png new file mode 100644 index 000000000..8a90b4dc3 Binary files /dev/null and b/fonts/TewiFont/2611.png differ diff --git a/fonts/TewiFont/2614.png b/fonts/TewiFont/2614.png new file mode 100644 index 000000000..efde18032 Binary files /dev/null and b/fonts/TewiFont/2614.png differ diff --git a/fonts/TewiFont/2616.png b/fonts/TewiFont/2616.png new file mode 100644 index 000000000..478e1cefa Binary files /dev/null and b/fonts/TewiFont/2616.png differ diff --git a/fonts/TewiFont/2617.png b/fonts/TewiFont/2617.png new file mode 100644 index 000000000..a9f32cc14 Binary files /dev/null and b/fonts/TewiFont/2617.png differ diff --git a/fonts/TewiFont/261E.png b/fonts/TewiFont/261E.png new file mode 100644 index 000000000..d2c84050a Binary files /dev/null and b/fonts/TewiFont/261E.png differ diff --git a/fonts/TewiFont/2630.png b/fonts/TewiFont/2630.png new file mode 100644 index 000000000..b23a07695 Binary files /dev/null and b/fonts/TewiFont/2630.png differ diff --git a/fonts/TewiFont/2631.png b/fonts/TewiFont/2631.png new file mode 100644 index 000000000..07b6b0629 Binary files /dev/null and b/fonts/TewiFont/2631.png differ diff --git a/fonts/TewiFont/2632.png b/fonts/TewiFont/2632.png new file mode 100644 index 000000000..8f8eecd5c Binary files /dev/null and b/fonts/TewiFont/2632.png differ diff --git a/fonts/TewiFont/2633.png b/fonts/TewiFont/2633.png new file mode 100644 index 000000000..2ac21dd97 Binary files /dev/null and b/fonts/TewiFont/2633.png differ diff --git a/fonts/TewiFont/2634.png b/fonts/TewiFont/2634.png new file mode 100644 index 000000000..0cc36b08a Binary files /dev/null and b/fonts/TewiFont/2634.png differ diff --git a/fonts/TewiFont/2635.png b/fonts/TewiFont/2635.png new file mode 100644 index 000000000..5e208d75b Binary files /dev/null and b/fonts/TewiFont/2635.png differ diff --git a/fonts/TewiFont/2636.png b/fonts/TewiFont/2636.png new file mode 100644 index 000000000..f369b1c04 Binary files /dev/null and b/fonts/TewiFont/2636.png differ diff --git a/fonts/TewiFont/2637.png b/fonts/TewiFont/2637.png new file mode 100644 index 000000000..8ff5b2cb0 Binary files /dev/null and b/fonts/TewiFont/2637.png differ diff --git a/fonts/TewiFont/263A.png b/fonts/TewiFont/263A.png new file mode 100644 index 000000000..951588c0e Binary files /dev/null and b/fonts/TewiFont/263A.png differ diff --git a/fonts/TewiFont/263B.png b/fonts/TewiFont/263B.png new file mode 100644 index 000000000..a1252a2c4 Binary files /dev/null and b/fonts/TewiFont/263B.png differ diff --git a/fonts/TewiFont/263C.png b/fonts/TewiFont/263C.png new file mode 100644 index 000000000..721e3a948 Binary files /dev/null and b/fonts/TewiFont/263C.png differ diff --git a/fonts/TewiFont/263F.png b/fonts/TewiFont/263F.png new file mode 100644 index 000000000..7a0e6d847 Binary files /dev/null and b/fonts/TewiFont/263F.png differ diff --git a/fonts/TewiFont/2640.png b/fonts/TewiFont/2640.png new file mode 100644 index 000000000..f0fe3be10 Binary files /dev/null and b/fonts/TewiFont/2640.png differ diff --git a/fonts/TewiFont/2641.png b/fonts/TewiFont/2641.png new file mode 100644 index 000000000..ca669c38a Binary files /dev/null and b/fonts/TewiFont/2641.png differ diff --git a/fonts/TewiFont/2642.png b/fonts/TewiFont/2642.png new file mode 100644 index 000000000..9f7f6769f Binary files /dev/null and b/fonts/TewiFont/2642.png differ diff --git a/fonts/TewiFont/2660.png b/fonts/TewiFont/2660.png new file mode 100644 index 000000000..e9c18157f Binary files /dev/null and b/fonts/TewiFont/2660.png differ diff --git a/fonts/TewiFont/2661.png b/fonts/TewiFont/2661.png new file mode 100644 index 000000000..3fb984136 Binary files /dev/null and b/fonts/TewiFont/2661.png differ diff --git a/fonts/TewiFont/2662.png b/fonts/TewiFont/2662.png new file mode 100644 index 000000000..6c3651652 Binary files /dev/null and b/fonts/TewiFont/2662.png differ diff --git a/fonts/TewiFont/2663.png b/fonts/TewiFont/2663.png new file mode 100644 index 000000000..a5b9c3402 Binary files /dev/null and b/fonts/TewiFont/2663.png differ diff --git a/fonts/TewiFont/2664.png b/fonts/TewiFont/2664.png new file mode 100644 index 000000000..87166c816 Binary files /dev/null and b/fonts/TewiFont/2664.png differ diff --git a/fonts/TewiFont/2665.png b/fonts/TewiFont/2665.png new file mode 100644 index 000000000..2dba22c22 Binary files /dev/null and b/fonts/TewiFont/2665.png differ diff --git a/fonts/TewiFont/2666.png b/fonts/TewiFont/2666.png new file mode 100644 index 000000000..b66ba7d3e Binary files /dev/null and b/fonts/TewiFont/2666.png differ diff --git a/fonts/TewiFont/2667.png b/fonts/TewiFont/2667.png new file mode 100644 index 000000000..52a4c1808 Binary files /dev/null and b/fonts/TewiFont/2667.png differ diff --git a/fonts/TewiFont/2668.png b/fonts/TewiFont/2668.png new file mode 100644 index 000000000..986dde04d Binary files /dev/null and b/fonts/TewiFont/2668.png differ diff --git a/fonts/TewiFont/2669.png b/fonts/TewiFont/2669.png new file mode 100644 index 000000000..7a346531b Binary files /dev/null and b/fonts/TewiFont/2669.png differ diff --git a/fonts/TewiFont/266A.png b/fonts/TewiFont/266A.png new file mode 100644 index 000000000..3108531a1 Binary files /dev/null and b/fonts/TewiFont/266A.png differ diff --git a/fonts/TewiFont/266B.png b/fonts/TewiFont/266B.png new file mode 100644 index 000000000..d243492e7 Binary files /dev/null and b/fonts/TewiFont/266B.png differ diff --git a/fonts/TewiFont/266C.png b/fonts/TewiFont/266C.png new file mode 100644 index 000000000..9906b40bb Binary files /dev/null and b/fonts/TewiFont/266C.png differ diff --git a/fonts/TewiFont/266D.png b/fonts/TewiFont/266D.png new file mode 100644 index 000000000..ee0937f8c Binary files /dev/null and b/fonts/TewiFont/266D.png differ diff --git a/fonts/TewiFont/266E.png b/fonts/TewiFont/266E.png new file mode 100644 index 000000000..9ab03efa8 Binary files /dev/null and b/fonts/TewiFont/266E.png differ diff --git a/fonts/TewiFont/266F.png b/fonts/TewiFont/266F.png new file mode 100644 index 000000000..5b67457c4 Binary files /dev/null and b/fonts/TewiFont/266F.png differ diff --git a/fonts/TewiFont/26A2.png b/fonts/TewiFont/26A2.png new file mode 100644 index 000000000..6db32fcb3 Binary files /dev/null and b/fonts/TewiFont/26A2.png differ diff --git a/fonts/TewiFont/26A3.png b/fonts/TewiFont/26A3.png new file mode 100644 index 000000000..3a3dd7a40 Binary files /dev/null and b/fonts/TewiFont/26A3.png differ diff --git a/fonts/TewiFont/26A4.png b/fonts/TewiFont/26A4.png new file mode 100644 index 000000000..2efe86630 Binary files /dev/null and b/fonts/TewiFont/26A4.png differ diff --git a/fonts/TewiFont/26A5.png b/fonts/TewiFont/26A5.png new file mode 100644 index 000000000..1146fc5dd Binary files /dev/null and b/fonts/TewiFont/26A5.png differ diff --git a/fonts/TewiFont/26A6.png b/fonts/TewiFont/26A6.png new file mode 100644 index 000000000..d4fe1e80f Binary files /dev/null and b/fonts/TewiFont/26A6.png differ diff --git a/fonts/TewiFont/26A7.png b/fonts/TewiFont/26A7.png new file mode 100644 index 000000000..0acffe6f5 Binary files /dev/null and b/fonts/TewiFont/26A7.png differ diff --git a/fonts/TewiFont/26A8.png b/fonts/TewiFont/26A8.png new file mode 100644 index 000000000..75d621b09 Binary files /dev/null and b/fonts/TewiFont/26A8.png differ diff --git a/fonts/TewiFont/26A9.png b/fonts/TewiFont/26A9.png new file mode 100644 index 000000000..48d5c4c10 Binary files /dev/null and b/fonts/TewiFont/26A9.png differ diff --git a/fonts/TewiFont/2708.png b/fonts/TewiFont/2708.png new file mode 100644 index 000000000..1d33dc7bc Binary files /dev/null and b/fonts/TewiFont/2708.png differ diff --git a/fonts/TewiFont/2713.png b/fonts/TewiFont/2713.png new file mode 100644 index 000000000..d7cdfcbeb Binary files /dev/null and b/fonts/TewiFont/2713.png differ diff --git a/fonts/TewiFont/2714.png b/fonts/TewiFont/2714.png new file mode 100644 index 000000000..c5a274779 Binary files /dev/null and b/fonts/TewiFont/2714.png differ diff --git a/fonts/TewiFont/2715.png b/fonts/TewiFont/2715.png new file mode 100644 index 000000000..cbd467f64 Binary files /dev/null and b/fonts/TewiFont/2715.png differ diff --git a/fonts/TewiFont/2716.png b/fonts/TewiFont/2716.png new file mode 100644 index 000000000..df5f500d9 Binary files /dev/null and b/fonts/TewiFont/2716.png differ diff --git a/fonts/TewiFont/2717.png b/fonts/TewiFont/2717.png new file mode 100644 index 000000000..d29570cbe Binary files /dev/null and b/fonts/TewiFont/2717.png differ diff --git a/fonts/TewiFont/2718.png b/fonts/TewiFont/2718.png new file mode 100644 index 000000000..a4e1588fb Binary files /dev/null and b/fonts/TewiFont/2718.png differ diff --git a/fonts/TewiFont/271A.png b/fonts/TewiFont/271A.png new file mode 100644 index 000000000..73650594b Binary files /dev/null and b/fonts/TewiFont/271A.png differ diff --git a/fonts/TewiFont/271B.png b/fonts/TewiFont/271B.png new file mode 100644 index 000000000..beac45c46 Binary files /dev/null and b/fonts/TewiFont/271B.png differ diff --git a/fonts/TewiFont/271C.png b/fonts/TewiFont/271C.png new file mode 100644 index 000000000..167254791 Binary files /dev/null and b/fonts/TewiFont/271C.png differ diff --git a/fonts/TewiFont/271D.png b/fonts/TewiFont/271D.png new file mode 100644 index 000000000..9bf652488 Binary files /dev/null and b/fonts/TewiFont/271D.png differ diff --git a/fonts/TewiFont/271E.png b/fonts/TewiFont/271E.png new file mode 100644 index 000000000..8356a314f Binary files /dev/null and b/fonts/TewiFont/271E.png differ diff --git a/fonts/TewiFont/271F.png b/fonts/TewiFont/271F.png new file mode 100644 index 000000000..2af0bee1d Binary files /dev/null and b/fonts/TewiFont/271F.png differ diff --git a/fonts/TewiFont/2720.png b/fonts/TewiFont/2720.png new file mode 100644 index 000000000..9df087a53 Binary files /dev/null and b/fonts/TewiFont/2720.png differ diff --git a/fonts/TewiFont/2721.png b/fonts/TewiFont/2721.png new file mode 100644 index 000000000..340bc1a21 Binary files /dev/null and b/fonts/TewiFont/2721.png differ diff --git a/fonts/TewiFont/2724.png b/fonts/TewiFont/2724.png new file mode 100644 index 000000000..efa6b87b8 Binary files /dev/null and b/fonts/TewiFont/2724.png differ diff --git a/fonts/TewiFont/2725.png b/fonts/TewiFont/2725.png new file mode 100644 index 000000000..339a18d55 Binary files /dev/null and b/fonts/TewiFont/2725.png differ diff --git a/fonts/TewiFont/2726.png b/fonts/TewiFont/2726.png new file mode 100644 index 000000000..af0a4cf8b Binary files /dev/null and b/fonts/TewiFont/2726.png differ diff --git a/fonts/TewiFont/2727.png b/fonts/TewiFont/2727.png new file mode 100644 index 000000000..8e90b21fb Binary files /dev/null and b/fonts/TewiFont/2727.png differ diff --git a/fonts/TewiFont/2729.png b/fonts/TewiFont/2729.png new file mode 100644 index 000000000..4e4c73c72 Binary files /dev/null and b/fonts/TewiFont/2729.png differ diff --git a/fonts/TewiFont/272A.png b/fonts/TewiFont/272A.png new file mode 100644 index 000000000..4d381e0e4 Binary files /dev/null and b/fonts/TewiFont/272A.png differ diff --git a/fonts/TewiFont/272B.png b/fonts/TewiFont/272B.png new file mode 100644 index 000000000..4e4c73c72 Binary files /dev/null and b/fonts/TewiFont/272B.png differ diff --git a/fonts/TewiFont/2733.png b/fonts/TewiFont/2733.png new file mode 100644 index 000000000..ad005e3f4 Binary files /dev/null and b/fonts/TewiFont/2733.png differ diff --git a/fonts/TewiFont/2736.png b/fonts/TewiFont/2736.png new file mode 100644 index 000000000..351b3ff5a Binary files /dev/null and b/fonts/TewiFont/2736.png differ diff --git a/fonts/TewiFont/273F.png b/fonts/TewiFont/273F.png new file mode 100644 index 000000000..cc5b3fbe2 Binary files /dev/null and b/fonts/TewiFont/273F.png differ diff --git a/fonts/TewiFont/2741.png b/fonts/TewiFont/2741.png new file mode 100644 index 000000000..0624e1a1b Binary files /dev/null and b/fonts/TewiFont/2741.png differ diff --git a/fonts/TewiFont/274F.png b/fonts/TewiFont/274F.png new file mode 100644 index 000000000..5a90688e0 Binary files /dev/null and b/fonts/TewiFont/274F.png differ diff --git a/fonts/TewiFont/2750.png b/fonts/TewiFont/2750.png new file mode 100644 index 000000000..a7a1b6536 Binary files /dev/null and b/fonts/TewiFont/2750.png differ diff --git a/fonts/TewiFont/2751.png b/fonts/TewiFont/2751.png new file mode 100644 index 000000000..5a90688e0 Binary files /dev/null and b/fonts/TewiFont/2751.png differ diff --git a/fonts/TewiFont/2752.png b/fonts/TewiFont/2752.png new file mode 100644 index 000000000..a7a1b6536 Binary files /dev/null and b/fonts/TewiFont/2752.png differ diff --git a/fonts/TewiFont/275B.png b/fonts/TewiFont/275B.png new file mode 100644 index 000000000..47e8207f7 Binary files /dev/null and b/fonts/TewiFont/275B.png differ diff --git a/fonts/TewiFont/275C.png b/fonts/TewiFont/275C.png new file mode 100644 index 000000000..05e392e64 Binary files /dev/null and b/fonts/TewiFont/275C.png differ diff --git a/fonts/TewiFont/275D.png b/fonts/TewiFont/275D.png new file mode 100644 index 000000000..f73ef6fb9 Binary files /dev/null and b/fonts/TewiFont/275D.png differ diff --git a/fonts/TewiFont/275E.png b/fonts/TewiFont/275E.png new file mode 100644 index 000000000..e799afd22 Binary files /dev/null and b/fonts/TewiFont/275E.png differ diff --git a/fonts/TewiFont/275F.png b/fonts/TewiFont/275F.png new file mode 100644 index 000000000..bdcd7cba9 Binary files /dev/null and b/fonts/TewiFont/275F.png differ diff --git a/fonts/TewiFont/2760.png b/fonts/TewiFont/2760.png new file mode 100644 index 000000000..76d0f5e22 Binary files /dev/null and b/fonts/TewiFont/2760.png differ diff --git a/fonts/TewiFont/2764.png b/fonts/TewiFont/2764.png new file mode 100644 index 000000000..2dba22c22 Binary files /dev/null and b/fonts/TewiFont/2764.png differ diff --git a/fonts/TewiFont/2765.png b/fonts/TewiFont/2765.png new file mode 100644 index 000000000..619236e39 Binary files /dev/null and b/fonts/TewiFont/2765.png differ diff --git a/fonts/TewiFont/2766.png b/fonts/TewiFont/2766.png new file mode 100644 index 000000000..e2184e82a Binary files /dev/null and b/fonts/TewiFont/2766.png differ diff --git a/fonts/TewiFont/276C.png b/fonts/TewiFont/276C.png new file mode 100644 index 000000000..0aa1e9a2a Binary files /dev/null and b/fonts/TewiFont/276C.png differ diff --git a/fonts/TewiFont/276D.png b/fonts/TewiFont/276D.png new file mode 100644 index 000000000..0ec481f04 Binary files /dev/null and b/fonts/TewiFont/276D.png differ diff --git a/fonts/TewiFont/276E.png b/fonts/TewiFont/276E.png new file mode 100644 index 000000000..4387b3087 Binary files /dev/null and b/fonts/TewiFont/276E.png differ diff --git a/fonts/TewiFont/276F.png b/fonts/TewiFont/276F.png new file mode 100644 index 000000000..2894b0b65 Binary files /dev/null and b/fonts/TewiFont/276F.png differ diff --git a/fonts/TewiFont/2770.png b/fonts/TewiFont/2770.png new file mode 100644 index 000000000..9a5da5e20 Binary files /dev/null and b/fonts/TewiFont/2770.png differ diff --git a/fonts/TewiFont/2771.png b/fonts/TewiFont/2771.png new file mode 100644 index 000000000..075e1e56b Binary files /dev/null and b/fonts/TewiFont/2771.png differ diff --git a/fonts/TewiFont/278A.png b/fonts/TewiFont/278A.png new file mode 100644 index 000000000..4b5c420e9 Binary files /dev/null and b/fonts/TewiFont/278A.png differ diff --git a/fonts/TewiFont/278B.png b/fonts/TewiFont/278B.png new file mode 100644 index 000000000..57b051c7f Binary files /dev/null and b/fonts/TewiFont/278B.png differ diff --git a/fonts/TewiFont/278C.png b/fonts/TewiFont/278C.png new file mode 100644 index 000000000..2963ae93c Binary files /dev/null and b/fonts/TewiFont/278C.png differ diff --git a/fonts/TewiFont/278D.png b/fonts/TewiFont/278D.png new file mode 100644 index 000000000..562cb5b55 Binary files /dev/null and b/fonts/TewiFont/278D.png differ diff --git a/fonts/TewiFont/278E.png b/fonts/TewiFont/278E.png new file mode 100644 index 000000000..0191ac821 Binary files /dev/null and b/fonts/TewiFont/278E.png differ diff --git a/fonts/TewiFont/278F.png b/fonts/TewiFont/278F.png new file mode 100644 index 000000000..08d66805e Binary files /dev/null and b/fonts/TewiFont/278F.png differ diff --git a/fonts/TewiFont/2790.png b/fonts/TewiFont/2790.png new file mode 100644 index 000000000..d57d01b65 Binary files /dev/null and b/fonts/TewiFont/2790.png differ diff --git a/fonts/TewiFont/2791.png b/fonts/TewiFont/2791.png new file mode 100644 index 000000000..227ab1321 Binary files /dev/null and b/fonts/TewiFont/2791.png differ diff --git a/fonts/TewiFont/2792.png b/fonts/TewiFont/2792.png new file mode 100644 index 000000000..7bdc3d2ae Binary files /dev/null and b/fonts/TewiFont/2792.png differ diff --git a/fonts/TewiFont/2793.png b/fonts/TewiFont/2793.png new file mode 100644 index 000000000..f9c33b2f9 Binary files /dev/null and b/fonts/TewiFont/2793.png differ diff --git a/fonts/TewiFont/2794.png b/fonts/TewiFont/2794.png new file mode 100644 index 000000000..668cf5b58 Binary files /dev/null and b/fonts/TewiFont/2794.png differ diff --git a/fonts/TewiFont/2795.png b/fonts/TewiFont/2795.png new file mode 100644 index 000000000..73650594b Binary files /dev/null and b/fonts/TewiFont/2795.png differ diff --git a/fonts/TewiFont/2796.png b/fonts/TewiFont/2796.png new file mode 100644 index 000000000..87b3865e6 Binary files /dev/null and b/fonts/TewiFont/2796.png differ diff --git a/fonts/TewiFont/2797.png b/fonts/TewiFont/2797.png new file mode 100644 index 000000000..0d7e79eed Binary files /dev/null and b/fonts/TewiFont/2797.png differ diff --git a/fonts/TewiFont/2798.png b/fonts/TewiFont/2798.png new file mode 100644 index 000000000..fb3693ec5 Binary files /dev/null and b/fonts/TewiFont/2798.png differ diff --git a/fonts/TewiFont/2799.png b/fonts/TewiFont/2799.png new file mode 100644 index 000000000..efafeccba Binary files /dev/null and b/fonts/TewiFont/2799.png differ diff --git a/fonts/TewiFont/279A.png b/fonts/TewiFont/279A.png new file mode 100644 index 000000000..1eea87025 Binary files /dev/null and b/fonts/TewiFont/279A.png differ diff --git a/fonts/TewiFont/279B.png b/fonts/TewiFont/279B.png new file mode 100644 index 000000000..684a4dd0f Binary files /dev/null and b/fonts/TewiFont/279B.png differ diff --git a/fonts/TewiFont/27E8.png b/fonts/TewiFont/27E8.png new file mode 100644 index 000000000..adef40afa Binary files /dev/null and b/fonts/TewiFont/27E8.png differ diff --git a/fonts/TewiFont/27E9.png b/fonts/TewiFont/27E9.png new file mode 100644 index 000000000..f2a0b9522 Binary files /dev/null and b/fonts/TewiFont/27E9.png differ diff --git a/fonts/TewiFont/27F2.png b/fonts/TewiFont/27F2.png new file mode 100644 index 000000000..adeb8ff79 Binary files /dev/null and b/fonts/TewiFont/27F2.png differ diff --git a/fonts/TewiFont/27F3.png b/fonts/TewiFont/27F3.png new file mode 100644 index 000000000..0b8a12e8d Binary files /dev/null and b/fonts/TewiFont/27F3.png differ diff --git a/fonts/TewiFont/27F5.png b/fonts/TewiFont/27F5.png new file mode 100644 index 000000000..9e1169932 Binary files /dev/null and b/fonts/TewiFont/27F5.png differ diff --git a/fonts/TewiFont/27F6.png b/fonts/TewiFont/27F6.png new file mode 100644 index 000000000..02fa75ac5 Binary files /dev/null and b/fonts/TewiFont/27F6.png differ diff --git a/fonts/TewiFont/27F8.png b/fonts/TewiFont/27F8.png new file mode 100644 index 000000000..f51162150 Binary files /dev/null and b/fonts/TewiFont/27F8.png differ diff --git a/fonts/TewiFont/27F9.png b/fonts/TewiFont/27F9.png new file mode 100644 index 000000000..e09112657 Binary files /dev/null and b/fonts/TewiFont/27F9.png differ diff --git a/fonts/TewiFont/27FB.png b/fonts/TewiFont/27FB.png new file mode 100644 index 000000000..e09db4204 Binary files /dev/null and b/fonts/TewiFont/27FB.png differ diff --git a/fonts/TewiFont/27FC.png b/fonts/TewiFont/27FC.png new file mode 100644 index 000000000..1df36b1e3 Binary files /dev/null and b/fonts/TewiFont/27FC.png differ diff --git a/fonts/TewiFont/27FD.png b/fonts/TewiFont/27FD.png new file mode 100644 index 000000000..a71b2cb51 Binary files /dev/null and b/fonts/TewiFont/27FD.png differ diff --git a/fonts/TewiFont/27FE.png b/fonts/TewiFont/27FE.png new file mode 100644 index 000000000..2029a187d Binary files /dev/null and b/fonts/TewiFont/27FE.png differ diff --git a/fonts/TewiFont/27FF.png b/fonts/TewiFont/27FF.png new file mode 100644 index 000000000..fe6b61725 Binary files /dev/null and b/fonts/TewiFont/27FF.png differ diff --git a/fonts/TewiFont/2801.png b/fonts/TewiFont/2801.png new file mode 100644 index 000000000..52e155472 Binary files /dev/null and b/fonts/TewiFont/2801.png differ diff --git a/fonts/TewiFont/2802.png b/fonts/TewiFont/2802.png new file mode 100644 index 000000000..7ea594363 Binary files /dev/null and b/fonts/TewiFont/2802.png differ diff --git a/fonts/TewiFont/2803.png b/fonts/TewiFont/2803.png new file mode 100644 index 000000000..cab6361a1 Binary files /dev/null and b/fonts/TewiFont/2803.png differ diff --git a/fonts/TewiFont/2804.png b/fonts/TewiFont/2804.png new file mode 100644 index 000000000..142e60323 Binary files /dev/null and b/fonts/TewiFont/2804.png differ diff --git a/fonts/TewiFont/2805.png b/fonts/TewiFont/2805.png new file mode 100644 index 000000000..888ceca7b Binary files /dev/null and b/fonts/TewiFont/2805.png differ diff --git a/fonts/TewiFont/2806.png b/fonts/TewiFont/2806.png new file mode 100644 index 000000000..9b6a24a65 Binary files /dev/null and b/fonts/TewiFont/2806.png differ diff --git a/fonts/TewiFont/2807.png b/fonts/TewiFont/2807.png new file mode 100644 index 000000000..8f1738c80 Binary files /dev/null and b/fonts/TewiFont/2807.png differ diff --git a/fonts/TewiFont/2808.png b/fonts/TewiFont/2808.png new file mode 100644 index 000000000..47143847f Binary files /dev/null and b/fonts/TewiFont/2808.png differ diff --git a/fonts/TewiFont/2809.png b/fonts/TewiFont/2809.png new file mode 100644 index 000000000..dc39560a2 Binary files /dev/null and b/fonts/TewiFont/2809.png differ diff --git a/fonts/TewiFont/280A.png b/fonts/TewiFont/280A.png new file mode 100644 index 000000000..0363f12f6 Binary files /dev/null and b/fonts/TewiFont/280A.png differ diff --git a/fonts/TewiFont/280B.png b/fonts/TewiFont/280B.png new file mode 100644 index 000000000..7da39fad4 Binary files /dev/null and b/fonts/TewiFont/280B.png differ diff --git a/fonts/TewiFont/280C.png b/fonts/TewiFont/280C.png new file mode 100644 index 000000000..5bbbb4d86 Binary files /dev/null and b/fonts/TewiFont/280C.png differ diff --git a/fonts/TewiFont/280D.png b/fonts/TewiFont/280D.png new file mode 100644 index 000000000..f6b4b8578 Binary files /dev/null and b/fonts/TewiFont/280D.png differ diff --git a/fonts/TewiFont/280E.png b/fonts/TewiFont/280E.png new file mode 100644 index 000000000..10188eeb9 Binary files /dev/null and b/fonts/TewiFont/280E.png differ diff --git a/fonts/TewiFont/280F.png b/fonts/TewiFont/280F.png new file mode 100644 index 000000000..edd4d1897 Binary files /dev/null and b/fonts/TewiFont/280F.png differ diff --git a/fonts/TewiFont/2810.png b/fonts/TewiFont/2810.png new file mode 100644 index 000000000..2a50e4ea5 Binary files /dev/null and b/fonts/TewiFont/2810.png differ diff --git a/fonts/TewiFont/2811.png b/fonts/TewiFont/2811.png new file mode 100644 index 000000000..5e736edfc Binary files /dev/null and b/fonts/TewiFont/2811.png differ diff --git a/fonts/TewiFont/2812.png b/fonts/TewiFont/2812.png new file mode 100644 index 000000000..e2384e40e Binary files /dev/null and b/fonts/TewiFont/2812.png differ diff --git a/fonts/TewiFont/2813.png b/fonts/TewiFont/2813.png new file mode 100644 index 000000000..47c867ccd Binary files /dev/null and b/fonts/TewiFont/2813.png differ diff --git a/fonts/TewiFont/2814.png b/fonts/TewiFont/2814.png new file mode 100644 index 000000000..43fbe4e44 Binary files /dev/null and b/fonts/TewiFont/2814.png differ diff --git a/fonts/TewiFont/2815.png b/fonts/TewiFont/2815.png new file mode 100644 index 000000000..ec53cef19 Binary files /dev/null and b/fonts/TewiFont/2815.png differ diff --git a/fonts/TewiFont/2816.png b/fonts/TewiFont/2816.png new file mode 100644 index 000000000..25f637cb2 Binary files /dev/null and b/fonts/TewiFont/2816.png differ diff --git a/fonts/TewiFont/2817.png b/fonts/TewiFont/2817.png new file mode 100644 index 000000000..1fc01a903 Binary files /dev/null and b/fonts/TewiFont/2817.png differ diff --git a/fonts/TewiFont/2818.png b/fonts/TewiFont/2818.png new file mode 100644 index 000000000..88a07c5e8 Binary files /dev/null and b/fonts/TewiFont/2818.png differ diff --git a/fonts/TewiFont/2819.png b/fonts/TewiFont/2819.png new file mode 100644 index 000000000..f20af6169 Binary files /dev/null and b/fonts/TewiFont/2819.png differ diff --git a/fonts/TewiFont/281A.png b/fonts/TewiFont/281A.png new file mode 100644 index 000000000..b8b25db50 Binary files /dev/null and b/fonts/TewiFont/281A.png differ diff --git a/fonts/TewiFont/281B.png b/fonts/TewiFont/281B.png new file mode 100644 index 000000000..8141fecf3 Binary files /dev/null and b/fonts/TewiFont/281B.png differ diff --git a/fonts/TewiFont/281C.png b/fonts/TewiFont/281C.png new file mode 100644 index 000000000..a49868138 Binary files /dev/null and b/fonts/TewiFont/281C.png differ diff --git a/fonts/TewiFont/281D.png b/fonts/TewiFont/281D.png new file mode 100644 index 000000000..097775e75 Binary files /dev/null and b/fonts/TewiFont/281D.png differ diff --git a/fonts/TewiFont/281E.png b/fonts/TewiFont/281E.png new file mode 100644 index 000000000..70cf9cccd Binary files /dev/null and b/fonts/TewiFont/281E.png differ diff --git a/fonts/TewiFont/281F.png b/fonts/TewiFont/281F.png new file mode 100644 index 000000000..caa10032e Binary files /dev/null and b/fonts/TewiFont/281F.png differ diff --git a/fonts/TewiFont/2820.png b/fonts/TewiFont/2820.png new file mode 100644 index 000000000..b048d2f81 Binary files /dev/null and b/fonts/TewiFont/2820.png differ diff --git a/fonts/TewiFont/2821.png b/fonts/TewiFont/2821.png new file mode 100644 index 000000000..240bb18c3 Binary files /dev/null and b/fonts/TewiFont/2821.png differ diff --git a/fonts/TewiFont/2822.png b/fonts/TewiFont/2822.png new file mode 100644 index 000000000..f82a0a765 Binary files /dev/null and b/fonts/TewiFont/2822.png differ diff --git a/fonts/TewiFont/2823.png b/fonts/TewiFont/2823.png new file mode 100644 index 000000000..4d95f7d06 Binary files /dev/null and b/fonts/TewiFont/2823.png differ diff --git a/fonts/TewiFont/2824.png b/fonts/TewiFont/2824.png new file mode 100644 index 000000000..9d6d1e6f6 Binary files /dev/null and b/fonts/TewiFont/2824.png differ diff --git a/fonts/TewiFont/2825.png b/fonts/TewiFont/2825.png new file mode 100644 index 000000000..faebe40dd Binary files /dev/null and b/fonts/TewiFont/2825.png differ diff --git a/fonts/TewiFont/2826.png b/fonts/TewiFont/2826.png new file mode 100644 index 000000000..4278292b7 Binary files /dev/null and b/fonts/TewiFont/2826.png differ diff --git a/fonts/TewiFont/2827.png b/fonts/TewiFont/2827.png new file mode 100644 index 000000000..89df6e67c Binary files /dev/null and b/fonts/TewiFont/2827.png differ diff --git a/fonts/TewiFont/2828.png b/fonts/TewiFont/2828.png new file mode 100644 index 000000000..eda7f0ee2 Binary files /dev/null and b/fonts/TewiFont/2828.png differ diff --git a/fonts/TewiFont/2829.png b/fonts/TewiFont/2829.png new file mode 100644 index 000000000..07869a4ac Binary files /dev/null and b/fonts/TewiFont/2829.png differ diff --git a/fonts/TewiFont/282A.png b/fonts/TewiFont/282A.png new file mode 100644 index 000000000..552ed3569 Binary files /dev/null and b/fonts/TewiFont/282A.png differ diff --git a/fonts/TewiFont/282B.png b/fonts/TewiFont/282B.png new file mode 100644 index 000000000..830feef16 Binary files /dev/null and b/fonts/TewiFont/282B.png differ diff --git a/fonts/TewiFont/282C.png b/fonts/TewiFont/282C.png new file mode 100644 index 000000000..09864893a Binary files /dev/null and b/fonts/TewiFont/282C.png differ diff --git a/fonts/TewiFont/282D.png b/fonts/TewiFont/282D.png new file mode 100644 index 000000000..2a1ac9ea5 Binary files /dev/null and b/fonts/TewiFont/282D.png differ diff --git a/fonts/TewiFont/282E.png b/fonts/TewiFont/282E.png new file mode 100644 index 000000000..8712b2eab Binary files /dev/null and b/fonts/TewiFont/282E.png differ diff --git a/fonts/TewiFont/282F.png b/fonts/TewiFont/282F.png new file mode 100644 index 000000000..aabe6a522 Binary files /dev/null and b/fonts/TewiFont/282F.png differ diff --git a/fonts/TewiFont/2830.png b/fonts/TewiFont/2830.png new file mode 100644 index 000000000..0a62650e5 Binary files /dev/null and b/fonts/TewiFont/2830.png differ diff --git a/fonts/TewiFont/2831.png b/fonts/TewiFont/2831.png new file mode 100644 index 000000000..75c599792 Binary files /dev/null and b/fonts/TewiFont/2831.png differ diff --git a/fonts/TewiFont/2832.png b/fonts/TewiFont/2832.png new file mode 100644 index 000000000..50f652f4d Binary files /dev/null and b/fonts/TewiFont/2832.png differ diff --git a/fonts/TewiFont/2833.png b/fonts/TewiFont/2833.png new file mode 100644 index 000000000..15375023a Binary files /dev/null and b/fonts/TewiFont/2833.png differ diff --git a/fonts/TewiFont/2834.png b/fonts/TewiFont/2834.png new file mode 100644 index 000000000..d5e93c2b2 Binary files /dev/null and b/fonts/TewiFont/2834.png differ diff --git a/fonts/TewiFont/2835.png b/fonts/TewiFont/2835.png new file mode 100644 index 000000000..fa7f6737b Binary files /dev/null and b/fonts/TewiFont/2835.png differ diff --git a/fonts/TewiFont/2836.png b/fonts/TewiFont/2836.png new file mode 100644 index 000000000..336e990ef Binary files /dev/null and b/fonts/TewiFont/2836.png differ diff --git a/fonts/TewiFont/2837.png b/fonts/TewiFont/2837.png new file mode 100644 index 000000000..3a04215c1 Binary files /dev/null and b/fonts/TewiFont/2837.png differ diff --git a/fonts/TewiFont/2838.png b/fonts/TewiFont/2838.png new file mode 100644 index 000000000..6d3dddcfc Binary files /dev/null and b/fonts/TewiFont/2838.png differ diff --git a/fonts/TewiFont/2839.png b/fonts/TewiFont/2839.png new file mode 100644 index 000000000..f5fba56a5 Binary files /dev/null and b/fonts/TewiFont/2839.png differ diff --git a/fonts/TewiFont/283A.png b/fonts/TewiFont/283A.png new file mode 100644 index 000000000..ef24d5023 Binary files /dev/null and b/fonts/TewiFont/283A.png differ diff --git a/fonts/TewiFont/283B.png b/fonts/TewiFont/283B.png new file mode 100644 index 000000000..35dcc67b3 Binary files /dev/null and b/fonts/TewiFont/283B.png differ diff --git a/fonts/TewiFont/283C.png b/fonts/TewiFont/283C.png new file mode 100644 index 000000000..90a44c899 Binary files /dev/null and b/fonts/TewiFont/283C.png differ diff --git a/fonts/TewiFont/283D.png b/fonts/TewiFont/283D.png new file mode 100644 index 000000000..94489711f Binary files /dev/null and b/fonts/TewiFont/283D.png differ diff --git a/fonts/TewiFont/283E.png b/fonts/TewiFont/283E.png new file mode 100644 index 000000000..bf45e88d7 Binary files /dev/null and b/fonts/TewiFont/283E.png differ diff --git a/fonts/TewiFont/283F.png b/fonts/TewiFont/283F.png new file mode 100644 index 000000000..88ad7ed9e Binary files /dev/null and b/fonts/TewiFont/283F.png differ diff --git a/fonts/TewiFont/2840.png b/fonts/TewiFont/2840.png new file mode 100644 index 000000000..1675be143 Binary files /dev/null and b/fonts/TewiFont/2840.png differ diff --git a/fonts/TewiFont/2841.png b/fonts/TewiFont/2841.png new file mode 100644 index 000000000..52930f702 Binary files /dev/null and b/fonts/TewiFont/2841.png differ diff --git a/fonts/TewiFont/2842.png b/fonts/TewiFont/2842.png new file mode 100644 index 000000000..4e2d7e1e5 Binary files /dev/null and b/fonts/TewiFont/2842.png differ diff --git a/fonts/TewiFont/2843.png b/fonts/TewiFont/2843.png new file mode 100644 index 000000000..d68e93aaa Binary files /dev/null and b/fonts/TewiFont/2843.png differ diff --git a/fonts/TewiFont/2844.png b/fonts/TewiFont/2844.png new file mode 100644 index 000000000..82b776d8a Binary files /dev/null and b/fonts/TewiFont/2844.png differ diff --git a/fonts/TewiFont/2845.png b/fonts/TewiFont/2845.png new file mode 100644 index 000000000..404b79150 Binary files /dev/null and b/fonts/TewiFont/2845.png differ diff --git a/fonts/TewiFont/2846.png b/fonts/TewiFont/2846.png new file mode 100644 index 000000000..b8c9a62b9 Binary files /dev/null and b/fonts/TewiFont/2846.png differ diff --git a/fonts/TewiFont/2847.png b/fonts/TewiFont/2847.png new file mode 100644 index 000000000..f437ee0ce Binary files /dev/null and b/fonts/TewiFont/2847.png differ diff --git a/fonts/TewiFont/2848.png b/fonts/TewiFont/2848.png new file mode 100644 index 000000000..9d35d7e38 Binary files /dev/null and b/fonts/TewiFont/2848.png differ diff --git a/fonts/TewiFont/2849.png b/fonts/TewiFont/2849.png new file mode 100644 index 000000000..ed333c0f4 Binary files /dev/null and b/fonts/TewiFont/2849.png differ diff --git a/fonts/TewiFont/284A.png b/fonts/TewiFont/284A.png new file mode 100644 index 000000000..c431ddeb5 Binary files /dev/null and b/fonts/TewiFont/284A.png differ diff --git a/fonts/TewiFont/284B.png b/fonts/TewiFont/284B.png new file mode 100644 index 000000000..1bd300cff Binary files /dev/null and b/fonts/TewiFont/284B.png differ diff --git a/fonts/TewiFont/284C.png b/fonts/TewiFont/284C.png new file mode 100644 index 000000000..e352e50d6 Binary files /dev/null and b/fonts/TewiFont/284C.png differ diff --git a/fonts/TewiFont/284D.png b/fonts/TewiFont/284D.png new file mode 100644 index 000000000..19bfce715 Binary files /dev/null and b/fonts/TewiFont/284D.png differ diff --git a/fonts/TewiFont/284E.png b/fonts/TewiFont/284E.png new file mode 100644 index 000000000..cbde9a3c2 Binary files /dev/null and b/fonts/TewiFont/284E.png differ diff --git a/fonts/TewiFont/284F.png b/fonts/TewiFont/284F.png new file mode 100644 index 000000000..87682fa75 Binary files /dev/null and b/fonts/TewiFont/284F.png differ diff --git a/fonts/TewiFont/2850.png b/fonts/TewiFont/2850.png new file mode 100644 index 000000000..8a532d12d Binary files /dev/null and b/fonts/TewiFont/2850.png differ diff --git a/fonts/TewiFont/2851.png b/fonts/TewiFont/2851.png new file mode 100644 index 000000000..3ccb3afb9 Binary files /dev/null and b/fonts/TewiFont/2851.png differ diff --git a/fonts/TewiFont/2852.png b/fonts/TewiFont/2852.png new file mode 100644 index 000000000..cc3508fac Binary files /dev/null and b/fonts/TewiFont/2852.png differ diff --git a/fonts/TewiFont/2853.png b/fonts/TewiFont/2853.png new file mode 100644 index 000000000..ee70b34ad Binary files /dev/null and b/fonts/TewiFont/2853.png differ diff --git a/fonts/TewiFont/2854.png b/fonts/TewiFont/2854.png new file mode 100644 index 000000000..45f2e328f Binary files /dev/null and b/fonts/TewiFont/2854.png differ diff --git a/fonts/TewiFont/2855.png b/fonts/TewiFont/2855.png new file mode 100644 index 000000000..b4bdef9e6 Binary files /dev/null and b/fonts/TewiFont/2855.png differ diff --git a/fonts/TewiFont/2856.png b/fonts/TewiFont/2856.png new file mode 100644 index 000000000..14356c828 Binary files /dev/null and b/fonts/TewiFont/2856.png differ diff --git a/fonts/TewiFont/2857.png b/fonts/TewiFont/2857.png new file mode 100644 index 000000000..97ad0b0c6 Binary files /dev/null and b/fonts/TewiFont/2857.png differ diff --git a/fonts/TewiFont/2858.png b/fonts/TewiFont/2858.png new file mode 100644 index 000000000..597d9e818 Binary files /dev/null and b/fonts/TewiFont/2858.png differ diff --git a/fonts/TewiFont/2859.png b/fonts/TewiFont/2859.png new file mode 100644 index 000000000..1b77ca9c6 Binary files /dev/null and b/fonts/TewiFont/2859.png differ diff --git a/fonts/TewiFont/285A.png b/fonts/TewiFont/285A.png new file mode 100644 index 000000000..2d2088fa1 Binary files /dev/null and b/fonts/TewiFont/285A.png differ diff --git a/fonts/TewiFont/285B.png b/fonts/TewiFont/285B.png new file mode 100644 index 000000000..d7730eaf3 Binary files /dev/null and b/fonts/TewiFont/285B.png differ diff --git a/fonts/TewiFont/285C.png b/fonts/TewiFont/285C.png new file mode 100644 index 000000000..2308a0947 Binary files /dev/null and b/fonts/TewiFont/285C.png differ diff --git a/fonts/TewiFont/285D.png b/fonts/TewiFont/285D.png new file mode 100644 index 000000000..d6ef0a782 Binary files /dev/null and b/fonts/TewiFont/285D.png differ diff --git a/fonts/TewiFont/285E.png b/fonts/TewiFont/285E.png new file mode 100644 index 000000000..18881b7b9 Binary files /dev/null and b/fonts/TewiFont/285E.png differ diff --git a/fonts/TewiFont/285F.png b/fonts/TewiFont/285F.png new file mode 100644 index 000000000..1dc05a3b2 Binary files /dev/null and b/fonts/TewiFont/285F.png differ diff --git a/fonts/TewiFont/2860.png b/fonts/TewiFont/2860.png new file mode 100644 index 000000000..b68de373f Binary files /dev/null and b/fonts/TewiFont/2860.png differ diff --git a/fonts/TewiFont/2861.png b/fonts/TewiFont/2861.png new file mode 100644 index 000000000..29ad744b3 Binary files /dev/null and b/fonts/TewiFont/2861.png differ diff --git a/fonts/TewiFont/2862.png b/fonts/TewiFont/2862.png new file mode 100644 index 000000000..c3b6e55dc Binary files /dev/null and b/fonts/TewiFont/2862.png differ diff --git a/fonts/TewiFont/2863.png b/fonts/TewiFont/2863.png new file mode 100644 index 000000000..37c13701d Binary files /dev/null and b/fonts/TewiFont/2863.png differ diff --git a/fonts/TewiFont/2864.png b/fonts/TewiFont/2864.png new file mode 100644 index 000000000..a74a1926a Binary files /dev/null and b/fonts/TewiFont/2864.png differ diff --git a/fonts/TewiFont/2865.png b/fonts/TewiFont/2865.png new file mode 100644 index 000000000..9e85e56c7 Binary files /dev/null and b/fonts/TewiFont/2865.png differ diff --git a/fonts/TewiFont/2866.png b/fonts/TewiFont/2866.png new file mode 100644 index 000000000..921f8c3e8 Binary files /dev/null and b/fonts/TewiFont/2866.png differ diff --git a/fonts/TewiFont/2867.png b/fonts/TewiFont/2867.png new file mode 100644 index 000000000..8267a077f Binary files /dev/null and b/fonts/TewiFont/2867.png differ diff --git a/fonts/TewiFont/2868.png b/fonts/TewiFont/2868.png new file mode 100644 index 000000000..5f9e327d8 Binary files /dev/null and b/fonts/TewiFont/2868.png differ diff --git a/fonts/TewiFont/2869.png b/fonts/TewiFont/2869.png new file mode 100644 index 000000000..5fbf3dacd Binary files /dev/null and b/fonts/TewiFont/2869.png differ diff --git a/fonts/TewiFont/286A.png b/fonts/TewiFont/286A.png new file mode 100644 index 000000000..590f3419f Binary files /dev/null and b/fonts/TewiFont/286A.png differ diff --git a/fonts/TewiFont/286B.png b/fonts/TewiFont/286B.png new file mode 100644 index 000000000..96b740012 Binary files /dev/null and b/fonts/TewiFont/286B.png differ diff --git a/fonts/TewiFont/286C.png b/fonts/TewiFont/286C.png new file mode 100644 index 000000000..b5fb45527 Binary files /dev/null and b/fonts/TewiFont/286C.png differ diff --git a/fonts/TewiFont/286D.png b/fonts/TewiFont/286D.png new file mode 100644 index 000000000..8f70ef9af Binary files /dev/null and b/fonts/TewiFont/286D.png differ diff --git a/fonts/TewiFont/286E.png b/fonts/TewiFont/286E.png new file mode 100644 index 000000000..c9a16daf7 Binary files /dev/null and b/fonts/TewiFont/286E.png differ diff --git a/fonts/TewiFont/286F.png b/fonts/TewiFont/286F.png new file mode 100644 index 000000000..9e87dc402 Binary files /dev/null and b/fonts/TewiFont/286F.png differ diff --git a/fonts/TewiFont/2870.png b/fonts/TewiFont/2870.png new file mode 100644 index 000000000..95047410f Binary files /dev/null and b/fonts/TewiFont/2870.png differ diff --git a/fonts/TewiFont/2871.png b/fonts/TewiFont/2871.png new file mode 100644 index 000000000..37a898890 Binary files /dev/null and b/fonts/TewiFont/2871.png differ diff --git a/fonts/TewiFont/2872.png b/fonts/TewiFont/2872.png new file mode 100644 index 000000000..7a1561e45 Binary files /dev/null and b/fonts/TewiFont/2872.png differ diff --git a/fonts/TewiFont/2873.png b/fonts/TewiFont/2873.png new file mode 100644 index 000000000..f228d060a Binary files /dev/null and b/fonts/TewiFont/2873.png differ diff --git a/fonts/TewiFont/2874.png b/fonts/TewiFont/2874.png new file mode 100644 index 000000000..2c4c6e41f Binary files /dev/null and b/fonts/TewiFont/2874.png differ diff --git a/fonts/TewiFont/2875.png b/fonts/TewiFont/2875.png new file mode 100644 index 000000000..d11b627f9 Binary files /dev/null and b/fonts/TewiFont/2875.png differ diff --git a/fonts/TewiFont/2876.png b/fonts/TewiFont/2876.png new file mode 100644 index 000000000..ef03ca702 Binary files /dev/null and b/fonts/TewiFont/2876.png differ diff --git a/fonts/TewiFont/2877.png b/fonts/TewiFont/2877.png new file mode 100644 index 000000000..06723eee4 Binary files /dev/null and b/fonts/TewiFont/2877.png differ diff --git a/fonts/TewiFont/2878.png b/fonts/TewiFont/2878.png new file mode 100644 index 000000000..bc2ac42c1 Binary files /dev/null and b/fonts/TewiFont/2878.png differ diff --git a/fonts/TewiFont/2879.png b/fonts/TewiFont/2879.png new file mode 100644 index 000000000..006d78c59 Binary files /dev/null and b/fonts/TewiFont/2879.png differ diff --git a/fonts/TewiFont/287A.png b/fonts/TewiFont/287A.png new file mode 100644 index 000000000..15ace3726 Binary files /dev/null and b/fonts/TewiFont/287A.png differ diff --git a/fonts/TewiFont/287B.png b/fonts/TewiFont/287B.png new file mode 100644 index 000000000..98e412710 Binary files /dev/null and b/fonts/TewiFont/287B.png differ diff --git a/fonts/TewiFont/287C.png b/fonts/TewiFont/287C.png new file mode 100644 index 000000000..9f186040e Binary files /dev/null and b/fonts/TewiFont/287C.png differ diff --git a/fonts/TewiFont/287D.png b/fonts/TewiFont/287D.png new file mode 100644 index 000000000..9ffd0f95d Binary files /dev/null and b/fonts/TewiFont/287D.png differ diff --git a/fonts/TewiFont/287E.png b/fonts/TewiFont/287E.png new file mode 100644 index 000000000..adb0342ca Binary files /dev/null and b/fonts/TewiFont/287E.png differ diff --git a/fonts/TewiFont/287F.png b/fonts/TewiFont/287F.png new file mode 100644 index 000000000..b035217a0 Binary files /dev/null and b/fonts/TewiFont/287F.png differ diff --git a/fonts/TewiFont/2880.png b/fonts/TewiFont/2880.png new file mode 100644 index 000000000..4f27d4c10 Binary files /dev/null and b/fonts/TewiFont/2880.png differ diff --git a/fonts/TewiFont/2881.png b/fonts/TewiFont/2881.png new file mode 100644 index 000000000..96defdd50 Binary files /dev/null and b/fonts/TewiFont/2881.png differ diff --git a/fonts/TewiFont/2882.png b/fonts/TewiFont/2882.png new file mode 100644 index 000000000..75e7e73e0 Binary files /dev/null and b/fonts/TewiFont/2882.png differ diff --git a/fonts/TewiFont/2883.png b/fonts/TewiFont/2883.png new file mode 100644 index 000000000..c5ce026de Binary files /dev/null and b/fonts/TewiFont/2883.png differ diff --git a/fonts/TewiFont/2884.png b/fonts/TewiFont/2884.png new file mode 100644 index 000000000..181e07666 Binary files /dev/null and b/fonts/TewiFont/2884.png differ diff --git a/fonts/TewiFont/2885.png b/fonts/TewiFont/2885.png new file mode 100644 index 000000000..f581418b4 Binary files /dev/null and b/fonts/TewiFont/2885.png differ diff --git a/fonts/TewiFont/2886.png b/fonts/TewiFont/2886.png new file mode 100644 index 000000000..f0e053fa7 Binary files /dev/null and b/fonts/TewiFont/2886.png differ diff --git a/fonts/TewiFont/2887.png b/fonts/TewiFont/2887.png new file mode 100644 index 000000000..21f493d7f Binary files /dev/null and b/fonts/TewiFont/2887.png differ diff --git a/fonts/TewiFont/2888.png b/fonts/TewiFont/2888.png new file mode 100644 index 000000000..e893d765c Binary files /dev/null and b/fonts/TewiFont/2888.png differ diff --git a/fonts/TewiFont/2889.png b/fonts/TewiFont/2889.png new file mode 100644 index 000000000..d7d849a0d Binary files /dev/null and b/fonts/TewiFont/2889.png differ diff --git a/fonts/TewiFont/288A.png b/fonts/TewiFont/288A.png new file mode 100644 index 000000000..c55cecd85 Binary files /dev/null and b/fonts/TewiFont/288A.png differ diff --git a/fonts/TewiFont/288B.png b/fonts/TewiFont/288B.png new file mode 100644 index 000000000..1ea1d7e29 Binary files /dev/null and b/fonts/TewiFont/288B.png differ diff --git a/fonts/TewiFont/288C.png b/fonts/TewiFont/288C.png new file mode 100644 index 000000000..94187f8dc Binary files /dev/null and b/fonts/TewiFont/288C.png differ diff --git a/fonts/TewiFont/288D.png b/fonts/TewiFont/288D.png new file mode 100644 index 000000000..41ea6e3a3 Binary files /dev/null and b/fonts/TewiFont/288D.png differ diff --git a/fonts/TewiFont/288E.png b/fonts/TewiFont/288E.png new file mode 100644 index 000000000..34d9c24b4 Binary files /dev/null and b/fonts/TewiFont/288E.png differ diff --git a/fonts/TewiFont/288F.png b/fonts/TewiFont/288F.png new file mode 100644 index 000000000..98d770a41 Binary files /dev/null and b/fonts/TewiFont/288F.png differ diff --git a/fonts/TewiFont/2890.png b/fonts/TewiFont/2890.png new file mode 100644 index 000000000..eeee4309c Binary files /dev/null and b/fonts/TewiFont/2890.png differ diff --git a/fonts/TewiFont/2891.png b/fonts/TewiFont/2891.png new file mode 100644 index 000000000..f4054565c Binary files /dev/null and b/fonts/TewiFont/2891.png differ diff --git a/fonts/TewiFont/2892.png b/fonts/TewiFont/2892.png new file mode 100644 index 000000000..670ad2904 Binary files /dev/null and b/fonts/TewiFont/2892.png differ diff --git a/fonts/TewiFont/2893.png b/fonts/TewiFont/2893.png new file mode 100644 index 000000000..304834a8b Binary files /dev/null and b/fonts/TewiFont/2893.png differ diff --git a/fonts/TewiFont/2894.png b/fonts/TewiFont/2894.png new file mode 100644 index 000000000..d7520fcf1 Binary files /dev/null and b/fonts/TewiFont/2894.png differ diff --git a/fonts/TewiFont/2895.png b/fonts/TewiFont/2895.png new file mode 100644 index 000000000..dceaeb603 Binary files /dev/null and b/fonts/TewiFont/2895.png differ diff --git a/fonts/TewiFont/2896.png b/fonts/TewiFont/2896.png new file mode 100644 index 000000000..b9f6303c5 Binary files /dev/null and b/fonts/TewiFont/2896.png differ diff --git a/fonts/TewiFont/2897.png b/fonts/TewiFont/2897.png new file mode 100644 index 000000000..95f47b2b4 Binary files /dev/null and b/fonts/TewiFont/2897.png differ diff --git a/fonts/TewiFont/2898.png b/fonts/TewiFont/2898.png new file mode 100644 index 000000000..ec63344f2 Binary files /dev/null and b/fonts/TewiFont/2898.png differ diff --git a/fonts/TewiFont/2899.png b/fonts/TewiFont/2899.png new file mode 100644 index 000000000..0734d6f2d Binary files /dev/null and b/fonts/TewiFont/2899.png differ diff --git a/fonts/TewiFont/289A.png b/fonts/TewiFont/289A.png new file mode 100644 index 000000000..9f9e27405 Binary files /dev/null and b/fonts/TewiFont/289A.png differ diff --git a/fonts/TewiFont/289B.png b/fonts/TewiFont/289B.png new file mode 100644 index 000000000..cc09306b6 Binary files /dev/null and b/fonts/TewiFont/289B.png differ diff --git a/fonts/TewiFont/289C.png b/fonts/TewiFont/289C.png new file mode 100644 index 000000000..651d05c3d Binary files /dev/null and b/fonts/TewiFont/289C.png differ diff --git a/fonts/TewiFont/289D.png b/fonts/TewiFont/289D.png new file mode 100644 index 000000000..fe11675f2 Binary files /dev/null and b/fonts/TewiFont/289D.png differ diff --git a/fonts/TewiFont/289E.png b/fonts/TewiFont/289E.png new file mode 100644 index 000000000..381024b89 Binary files /dev/null and b/fonts/TewiFont/289E.png differ diff --git a/fonts/TewiFont/289F.png b/fonts/TewiFont/289F.png new file mode 100644 index 000000000..7a4e1210a Binary files /dev/null and b/fonts/TewiFont/289F.png differ diff --git a/fonts/TewiFont/28A0.png b/fonts/TewiFont/28A0.png new file mode 100644 index 000000000..6baa1e76d Binary files /dev/null and b/fonts/TewiFont/28A0.png differ diff --git a/fonts/TewiFont/28A1.png b/fonts/TewiFont/28A1.png new file mode 100644 index 000000000..8abf95f20 Binary files /dev/null and b/fonts/TewiFont/28A1.png differ diff --git a/fonts/TewiFont/28A2.png b/fonts/TewiFont/28A2.png new file mode 100644 index 000000000..a6677d09b Binary files /dev/null and b/fonts/TewiFont/28A2.png differ diff --git a/fonts/TewiFont/28A3.png b/fonts/TewiFont/28A3.png new file mode 100644 index 000000000..da9c935b7 Binary files /dev/null and b/fonts/TewiFont/28A3.png differ diff --git a/fonts/TewiFont/28A4.png b/fonts/TewiFont/28A4.png new file mode 100644 index 000000000..713c7884f Binary files /dev/null and b/fonts/TewiFont/28A4.png differ diff --git a/fonts/TewiFont/28A5.png b/fonts/TewiFont/28A5.png new file mode 100644 index 000000000..a450c822e Binary files /dev/null and b/fonts/TewiFont/28A5.png differ diff --git a/fonts/TewiFont/28A6.png b/fonts/TewiFont/28A6.png new file mode 100644 index 000000000..6e44bd504 Binary files /dev/null and b/fonts/TewiFont/28A6.png differ diff --git a/fonts/TewiFont/28A7.png b/fonts/TewiFont/28A7.png new file mode 100644 index 000000000..6675fbea4 Binary files /dev/null and b/fonts/TewiFont/28A7.png differ diff --git a/fonts/TewiFont/28A8.png b/fonts/TewiFont/28A8.png new file mode 100644 index 000000000..c55d16315 Binary files /dev/null and b/fonts/TewiFont/28A8.png differ diff --git a/fonts/TewiFont/28A9.png b/fonts/TewiFont/28A9.png new file mode 100644 index 000000000..4b0ca872a Binary files /dev/null and b/fonts/TewiFont/28A9.png differ diff --git a/fonts/TewiFont/28AA.png b/fonts/TewiFont/28AA.png new file mode 100644 index 000000000..c34ae60cd Binary files /dev/null and b/fonts/TewiFont/28AA.png differ diff --git a/fonts/TewiFont/28AB.png b/fonts/TewiFont/28AB.png new file mode 100644 index 000000000..e6b2116ae Binary files /dev/null and b/fonts/TewiFont/28AB.png differ diff --git a/fonts/TewiFont/28AC.png b/fonts/TewiFont/28AC.png new file mode 100644 index 000000000..189d68fe0 Binary files /dev/null and b/fonts/TewiFont/28AC.png differ diff --git a/fonts/TewiFont/28AD.png b/fonts/TewiFont/28AD.png new file mode 100644 index 000000000..a2544bcc0 Binary files /dev/null and b/fonts/TewiFont/28AD.png differ diff --git a/fonts/TewiFont/28AE.png b/fonts/TewiFont/28AE.png new file mode 100644 index 000000000..041252e09 Binary files /dev/null and b/fonts/TewiFont/28AE.png differ diff --git a/fonts/TewiFont/28AF.png b/fonts/TewiFont/28AF.png new file mode 100644 index 000000000..34d37ce9e Binary files /dev/null and b/fonts/TewiFont/28AF.png differ diff --git a/fonts/TewiFont/28B0.png b/fonts/TewiFont/28B0.png new file mode 100644 index 000000000..8732958d0 Binary files /dev/null and b/fonts/TewiFont/28B0.png differ diff --git a/fonts/TewiFont/28B1.png b/fonts/TewiFont/28B1.png new file mode 100644 index 000000000..adb0897e0 Binary files /dev/null and b/fonts/TewiFont/28B1.png differ diff --git a/fonts/TewiFont/28B2.png b/fonts/TewiFont/28B2.png new file mode 100644 index 000000000..c1946987c Binary files /dev/null and b/fonts/TewiFont/28B2.png differ diff --git a/fonts/TewiFont/28B3.png b/fonts/TewiFont/28B3.png new file mode 100644 index 000000000..5c6b03416 Binary files /dev/null and b/fonts/TewiFont/28B3.png differ diff --git a/fonts/TewiFont/28B4.png b/fonts/TewiFont/28B4.png new file mode 100644 index 000000000..0a2fb2598 Binary files /dev/null and b/fonts/TewiFont/28B4.png differ diff --git a/fonts/TewiFont/28B5.png b/fonts/TewiFont/28B5.png new file mode 100644 index 000000000..c6a7f8eda Binary files /dev/null and b/fonts/TewiFont/28B5.png differ diff --git a/fonts/TewiFont/28B6.png b/fonts/TewiFont/28B6.png new file mode 100644 index 000000000..6be4acdb3 Binary files /dev/null and b/fonts/TewiFont/28B6.png differ diff --git a/fonts/TewiFont/28B7.png b/fonts/TewiFont/28B7.png new file mode 100644 index 000000000..cae379d21 Binary files /dev/null and b/fonts/TewiFont/28B7.png differ diff --git a/fonts/TewiFont/28B8.png b/fonts/TewiFont/28B8.png new file mode 100644 index 000000000..2a2127f68 Binary files /dev/null and b/fonts/TewiFont/28B8.png differ diff --git a/fonts/TewiFont/28B9.png b/fonts/TewiFont/28B9.png new file mode 100644 index 000000000..4e4bb5d91 Binary files /dev/null and b/fonts/TewiFont/28B9.png differ diff --git a/fonts/TewiFont/28BA.png b/fonts/TewiFont/28BA.png new file mode 100644 index 000000000..762a32fe8 Binary files /dev/null and b/fonts/TewiFont/28BA.png differ diff --git a/fonts/TewiFont/28BB.png b/fonts/TewiFont/28BB.png new file mode 100644 index 000000000..a7b992fc1 Binary files /dev/null and b/fonts/TewiFont/28BB.png differ diff --git a/fonts/TewiFont/28BC.png b/fonts/TewiFont/28BC.png new file mode 100644 index 000000000..efadf133c Binary files /dev/null and b/fonts/TewiFont/28BC.png differ diff --git a/fonts/TewiFont/28BD.png b/fonts/TewiFont/28BD.png new file mode 100644 index 000000000..07d1caa84 Binary files /dev/null and b/fonts/TewiFont/28BD.png differ diff --git a/fonts/TewiFont/28BE.png b/fonts/TewiFont/28BE.png new file mode 100644 index 000000000..efadf133c Binary files /dev/null and b/fonts/TewiFont/28BE.png differ diff --git a/fonts/TewiFont/28BF.png b/fonts/TewiFont/28BF.png new file mode 100644 index 000000000..882f17ba4 Binary files /dev/null and b/fonts/TewiFont/28BF.png differ diff --git a/fonts/TewiFont/28C0.png b/fonts/TewiFont/28C0.png new file mode 100644 index 000000000..e627e82a2 Binary files /dev/null and b/fonts/TewiFont/28C0.png differ diff --git a/fonts/TewiFont/28C1.png b/fonts/TewiFont/28C1.png new file mode 100644 index 000000000..b39783d8e Binary files /dev/null and b/fonts/TewiFont/28C1.png differ diff --git a/fonts/TewiFont/28C2.png b/fonts/TewiFont/28C2.png new file mode 100644 index 000000000..bcea4a1ac Binary files /dev/null and b/fonts/TewiFont/28C2.png differ diff --git a/fonts/TewiFont/28C3.png b/fonts/TewiFont/28C3.png new file mode 100644 index 000000000..c217094c8 Binary files /dev/null and b/fonts/TewiFont/28C3.png differ diff --git a/fonts/TewiFont/28C4.png b/fonts/TewiFont/28C4.png new file mode 100644 index 000000000..91f9e445b Binary files /dev/null and b/fonts/TewiFont/28C4.png differ diff --git a/fonts/TewiFont/28C5.png b/fonts/TewiFont/28C5.png new file mode 100644 index 000000000..65098e5bf Binary files /dev/null and b/fonts/TewiFont/28C5.png differ diff --git a/fonts/TewiFont/28C6.png b/fonts/TewiFont/28C6.png new file mode 100644 index 000000000..7b26daaef Binary files /dev/null and b/fonts/TewiFont/28C6.png differ diff --git a/fonts/TewiFont/28C7.png b/fonts/TewiFont/28C7.png new file mode 100644 index 000000000..d5b6a4335 Binary files /dev/null and b/fonts/TewiFont/28C7.png differ diff --git a/fonts/TewiFont/28C8.png b/fonts/TewiFont/28C8.png new file mode 100644 index 000000000..2af6d9e91 Binary files /dev/null and b/fonts/TewiFont/28C8.png differ diff --git a/fonts/TewiFont/28C9.png b/fonts/TewiFont/28C9.png new file mode 100644 index 000000000..7b6363379 Binary files /dev/null and b/fonts/TewiFont/28C9.png differ diff --git a/fonts/TewiFont/28CA.png b/fonts/TewiFont/28CA.png new file mode 100644 index 000000000..2647b189b Binary files /dev/null and b/fonts/TewiFont/28CA.png differ diff --git a/fonts/TewiFont/28CB.png b/fonts/TewiFont/28CB.png new file mode 100644 index 000000000..7e4ea757a Binary files /dev/null and b/fonts/TewiFont/28CB.png differ diff --git a/fonts/TewiFont/28CC.png b/fonts/TewiFont/28CC.png new file mode 100644 index 000000000..dbf2f830e Binary files /dev/null and b/fonts/TewiFont/28CC.png differ diff --git a/fonts/TewiFont/28CD.png b/fonts/TewiFont/28CD.png new file mode 100644 index 000000000..a7e08c9ce Binary files /dev/null and b/fonts/TewiFont/28CD.png differ diff --git a/fonts/TewiFont/28CE.png b/fonts/TewiFont/28CE.png new file mode 100644 index 000000000..a8440fc55 Binary files /dev/null and b/fonts/TewiFont/28CE.png differ diff --git a/fonts/TewiFont/28CF.png b/fonts/TewiFont/28CF.png new file mode 100644 index 000000000..48a27de29 Binary files /dev/null and b/fonts/TewiFont/28CF.png differ diff --git a/fonts/TewiFont/28D0.png b/fonts/TewiFont/28D0.png new file mode 100644 index 000000000..c1eee912d Binary files /dev/null and b/fonts/TewiFont/28D0.png differ diff --git a/fonts/TewiFont/28D1.png b/fonts/TewiFont/28D1.png new file mode 100644 index 000000000..0f8971424 Binary files /dev/null and b/fonts/TewiFont/28D1.png differ diff --git a/fonts/TewiFont/28D2.png b/fonts/TewiFont/28D2.png new file mode 100644 index 000000000..216595bb4 Binary files /dev/null and b/fonts/TewiFont/28D2.png differ diff --git a/fonts/TewiFont/28D3.png b/fonts/TewiFont/28D3.png new file mode 100644 index 000000000..a1068f31c Binary files /dev/null and b/fonts/TewiFont/28D3.png differ diff --git a/fonts/TewiFont/28D4.png b/fonts/TewiFont/28D4.png new file mode 100644 index 000000000..76866c2f5 Binary files /dev/null and b/fonts/TewiFont/28D4.png differ diff --git a/fonts/TewiFont/28D5.png b/fonts/TewiFont/28D5.png new file mode 100644 index 000000000..25e2c886c Binary files /dev/null and b/fonts/TewiFont/28D5.png differ diff --git a/fonts/TewiFont/28D6.png b/fonts/TewiFont/28D6.png new file mode 100644 index 000000000..2ccc54b32 Binary files /dev/null and b/fonts/TewiFont/28D6.png differ diff --git a/fonts/TewiFont/28D7.png b/fonts/TewiFont/28D7.png new file mode 100644 index 000000000..ef13aa983 Binary files /dev/null and b/fonts/TewiFont/28D7.png differ diff --git a/fonts/TewiFont/28D8.png b/fonts/TewiFont/28D8.png new file mode 100644 index 000000000..83ce261b8 Binary files /dev/null and b/fonts/TewiFont/28D8.png differ diff --git a/fonts/TewiFont/28D9.png b/fonts/TewiFont/28D9.png new file mode 100644 index 000000000..9d03d6daf Binary files /dev/null and b/fonts/TewiFont/28D9.png differ diff --git a/fonts/TewiFont/28DA.png b/fonts/TewiFont/28DA.png new file mode 100644 index 000000000..7eb9de805 Binary files /dev/null and b/fonts/TewiFont/28DA.png differ diff --git a/fonts/TewiFont/28DB.png b/fonts/TewiFont/28DB.png new file mode 100644 index 000000000..9f76309a2 Binary files /dev/null and b/fonts/TewiFont/28DB.png differ diff --git a/fonts/TewiFont/28DC.png b/fonts/TewiFont/28DC.png new file mode 100644 index 000000000..866e1ebf6 Binary files /dev/null and b/fonts/TewiFont/28DC.png differ diff --git a/fonts/TewiFont/28DD.png b/fonts/TewiFont/28DD.png new file mode 100644 index 000000000..3c5ace7d0 Binary files /dev/null and b/fonts/TewiFont/28DD.png differ diff --git a/fonts/TewiFont/28DE.png b/fonts/TewiFont/28DE.png new file mode 100644 index 000000000..16eb38e20 Binary files /dev/null and b/fonts/TewiFont/28DE.png differ diff --git a/fonts/TewiFont/28DF.png b/fonts/TewiFont/28DF.png new file mode 100644 index 000000000..dbd2f7190 Binary files /dev/null and b/fonts/TewiFont/28DF.png differ diff --git a/fonts/TewiFont/28E0.png b/fonts/TewiFont/28E0.png new file mode 100644 index 000000000..69ef182ef Binary files /dev/null and b/fonts/TewiFont/28E0.png differ diff --git a/fonts/TewiFont/28E1.png b/fonts/TewiFont/28E1.png new file mode 100644 index 000000000..860cd9ccb Binary files /dev/null and b/fonts/TewiFont/28E1.png differ diff --git a/fonts/TewiFont/28E2.png b/fonts/TewiFont/28E2.png new file mode 100644 index 000000000..fb08a0ed4 Binary files /dev/null and b/fonts/TewiFont/28E2.png differ diff --git a/fonts/TewiFont/28E3.png b/fonts/TewiFont/28E3.png new file mode 100644 index 000000000..289639f55 Binary files /dev/null and b/fonts/TewiFont/28E3.png differ diff --git a/fonts/TewiFont/28E4.png b/fonts/TewiFont/28E4.png new file mode 100644 index 000000000..a9347439a Binary files /dev/null and b/fonts/TewiFont/28E4.png differ diff --git a/fonts/TewiFont/28E5.png b/fonts/TewiFont/28E5.png new file mode 100644 index 000000000..5db5dc7cf Binary files /dev/null and b/fonts/TewiFont/28E5.png differ diff --git a/fonts/TewiFont/28E6.png b/fonts/TewiFont/28E6.png new file mode 100644 index 000000000..ad8b03569 Binary files /dev/null and b/fonts/TewiFont/28E6.png differ diff --git a/fonts/TewiFont/28E7.png b/fonts/TewiFont/28E7.png new file mode 100644 index 000000000..1412da0d1 Binary files /dev/null and b/fonts/TewiFont/28E7.png differ diff --git a/fonts/TewiFont/28E8.png b/fonts/TewiFont/28E8.png new file mode 100644 index 000000000..ed07829cc Binary files /dev/null and b/fonts/TewiFont/28E8.png differ diff --git a/fonts/TewiFont/28E9.png b/fonts/TewiFont/28E9.png new file mode 100644 index 000000000..c62a9d9da Binary files /dev/null and b/fonts/TewiFont/28E9.png differ diff --git a/fonts/TewiFont/28EA.png b/fonts/TewiFont/28EA.png new file mode 100644 index 000000000..466433bed Binary files /dev/null and b/fonts/TewiFont/28EA.png differ diff --git a/fonts/TewiFont/28EB.png b/fonts/TewiFont/28EB.png new file mode 100644 index 000000000..59996fc36 Binary files /dev/null and b/fonts/TewiFont/28EB.png differ diff --git a/fonts/TewiFont/28EC.png b/fonts/TewiFont/28EC.png new file mode 100644 index 000000000..5e17a9561 Binary files /dev/null and b/fonts/TewiFont/28EC.png differ diff --git a/fonts/TewiFont/28ED.png b/fonts/TewiFont/28ED.png new file mode 100644 index 000000000..8bfb3a1b3 Binary files /dev/null and b/fonts/TewiFont/28ED.png differ diff --git a/fonts/TewiFont/28EE.png b/fonts/TewiFont/28EE.png new file mode 100644 index 000000000..cc14a21ab Binary files /dev/null and b/fonts/TewiFont/28EE.png differ diff --git a/fonts/TewiFont/28EF.png b/fonts/TewiFont/28EF.png new file mode 100644 index 000000000..91f1d2d30 Binary files /dev/null and b/fonts/TewiFont/28EF.png differ diff --git a/fonts/TewiFont/28F0.png b/fonts/TewiFont/28F0.png new file mode 100644 index 000000000..f3f8702e2 Binary files /dev/null and b/fonts/TewiFont/28F0.png differ diff --git a/fonts/TewiFont/28F1.png b/fonts/TewiFont/28F1.png new file mode 100644 index 000000000..34989ab8b Binary files /dev/null and b/fonts/TewiFont/28F1.png differ diff --git a/fonts/TewiFont/28F2.png b/fonts/TewiFont/28F2.png new file mode 100644 index 000000000..a36a5ebb5 Binary files /dev/null and b/fonts/TewiFont/28F2.png differ diff --git a/fonts/TewiFont/28F3.png b/fonts/TewiFont/28F3.png new file mode 100644 index 000000000..4e04abf5e Binary files /dev/null and b/fonts/TewiFont/28F3.png differ diff --git a/fonts/TewiFont/28F4.png b/fonts/TewiFont/28F4.png new file mode 100644 index 000000000..a188aa299 Binary files /dev/null and b/fonts/TewiFont/28F4.png differ diff --git a/fonts/TewiFont/28F5.png b/fonts/TewiFont/28F5.png new file mode 100644 index 000000000..c5a0935d5 Binary files /dev/null and b/fonts/TewiFont/28F5.png differ diff --git a/fonts/TewiFont/28F6.png b/fonts/TewiFont/28F6.png new file mode 100644 index 000000000..58f812baa Binary files /dev/null and b/fonts/TewiFont/28F6.png differ diff --git a/fonts/TewiFont/28F7.png b/fonts/TewiFont/28F7.png new file mode 100644 index 000000000..0d7cc4fcd Binary files /dev/null and b/fonts/TewiFont/28F7.png differ diff --git a/fonts/TewiFont/28F8.png b/fonts/TewiFont/28F8.png new file mode 100644 index 000000000..6a568c457 Binary files /dev/null and b/fonts/TewiFont/28F8.png differ diff --git a/fonts/TewiFont/28F9.png b/fonts/TewiFont/28F9.png new file mode 100644 index 000000000..2964fec8c Binary files /dev/null and b/fonts/TewiFont/28F9.png differ diff --git a/fonts/TewiFont/28FA.png b/fonts/TewiFont/28FA.png new file mode 100644 index 000000000..5e987ae2e Binary files /dev/null and b/fonts/TewiFont/28FA.png differ diff --git a/fonts/TewiFont/28FB.png b/fonts/TewiFont/28FB.png new file mode 100644 index 000000000..a0de3f732 Binary files /dev/null and b/fonts/TewiFont/28FB.png differ diff --git a/fonts/TewiFont/28FC.png b/fonts/TewiFont/28FC.png new file mode 100644 index 000000000..cb515a841 Binary files /dev/null and b/fonts/TewiFont/28FC.png differ diff --git a/fonts/TewiFont/28FD.png b/fonts/TewiFont/28FD.png new file mode 100644 index 000000000..78b9c58a9 Binary files /dev/null and b/fonts/TewiFont/28FD.png differ diff --git a/fonts/TewiFont/28FE.png b/fonts/TewiFont/28FE.png new file mode 100644 index 000000000..4a5067b4e Binary files /dev/null and b/fonts/TewiFont/28FE.png differ diff --git a/fonts/TewiFont/28FF.png b/fonts/TewiFont/28FF.png new file mode 100644 index 000000000..1306345e0 Binary files /dev/null and b/fonts/TewiFont/28FF.png differ diff --git a/fonts/TewiFont/2902.png b/fonts/TewiFont/2902.png new file mode 100644 index 000000000..36ba9a5ae Binary files /dev/null and b/fonts/TewiFont/2902.png differ diff --git a/fonts/TewiFont/2903.png b/fonts/TewiFont/2903.png new file mode 100644 index 000000000..1547af198 Binary files /dev/null and b/fonts/TewiFont/2903.png differ diff --git a/fonts/TewiFont/2906.png b/fonts/TewiFont/2906.png new file mode 100644 index 000000000..cfab77ddd Binary files /dev/null and b/fonts/TewiFont/2906.png differ diff --git a/fonts/TewiFont/2907.png b/fonts/TewiFont/2907.png new file mode 100644 index 000000000..ff4a3b001 Binary files /dev/null and b/fonts/TewiFont/2907.png differ diff --git a/fonts/TewiFont/2908.png b/fonts/TewiFont/2908.png new file mode 100644 index 000000000..a646fe19a Binary files /dev/null and b/fonts/TewiFont/2908.png differ diff --git a/fonts/TewiFont/2909.png b/fonts/TewiFont/2909.png new file mode 100644 index 000000000..99262797a Binary files /dev/null and b/fonts/TewiFont/2909.png differ diff --git a/fonts/TewiFont/290C.png b/fonts/TewiFont/290C.png new file mode 100644 index 000000000..27d8c7501 Binary files /dev/null and b/fonts/TewiFont/290C.png differ diff --git a/fonts/TewiFont/290D.png b/fonts/TewiFont/290D.png new file mode 100644 index 000000000..df882e9a2 Binary files /dev/null and b/fonts/TewiFont/290D.png differ diff --git a/fonts/TewiFont/290E.png b/fonts/TewiFont/290E.png new file mode 100644 index 000000000..a668a7c51 Binary files /dev/null and b/fonts/TewiFont/290E.png differ diff --git a/fonts/TewiFont/290F.png b/fonts/TewiFont/290F.png new file mode 100644 index 000000000..46baac133 Binary files /dev/null and b/fonts/TewiFont/290F.png differ diff --git a/fonts/TewiFont/2912.png b/fonts/TewiFont/2912.png new file mode 100644 index 000000000..d6c405c47 Binary files /dev/null and b/fonts/TewiFont/2912.png differ diff --git a/fonts/TewiFont/2913.png b/fonts/TewiFont/2913.png new file mode 100644 index 000000000..9a2dc786c Binary files /dev/null and b/fonts/TewiFont/2913.png differ diff --git a/fonts/TewiFont/2919.png b/fonts/TewiFont/2919.png new file mode 100644 index 000000000..0416bea8a Binary files /dev/null and b/fonts/TewiFont/2919.png differ diff --git a/fonts/TewiFont/291A.png b/fonts/TewiFont/291A.png new file mode 100644 index 000000000..ba3872986 Binary files /dev/null and b/fonts/TewiFont/291A.png differ diff --git a/fonts/TewiFont/291B.png b/fonts/TewiFont/291B.png new file mode 100644 index 000000000..882a88e74 Binary files /dev/null and b/fonts/TewiFont/291B.png differ diff --git a/fonts/TewiFont/291C.png b/fonts/TewiFont/291C.png new file mode 100644 index 000000000..c7d819019 Binary files /dev/null and b/fonts/TewiFont/291C.png differ diff --git a/fonts/TewiFont/291D.png b/fonts/TewiFont/291D.png new file mode 100644 index 000000000..426c957ff Binary files /dev/null and b/fonts/TewiFont/291D.png differ diff --git a/fonts/TewiFont/291E.png b/fonts/TewiFont/291E.png new file mode 100644 index 000000000..d057d1fe5 Binary files /dev/null and b/fonts/TewiFont/291E.png differ diff --git a/fonts/TewiFont/2921.png b/fonts/TewiFont/2921.png new file mode 100644 index 000000000..e3a249707 Binary files /dev/null and b/fonts/TewiFont/2921.png differ diff --git a/fonts/TewiFont/2922.png b/fonts/TewiFont/2922.png new file mode 100644 index 000000000..b8f778e00 Binary files /dev/null and b/fonts/TewiFont/2922.png differ diff --git a/fonts/TewiFont/2923.png b/fonts/TewiFont/2923.png new file mode 100644 index 000000000..09f56e934 Binary files /dev/null and b/fonts/TewiFont/2923.png differ diff --git a/fonts/TewiFont/2924.png b/fonts/TewiFont/2924.png new file mode 100644 index 000000000..2ddd730d8 Binary files /dev/null and b/fonts/TewiFont/2924.png differ diff --git a/fonts/TewiFont/2925.png b/fonts/TewiFont/2925.png new file mode 100644 index 000000000..f7b20ddf5 Binary files /dev/null and b/fonts/TewiFont/2925.png differ diff --git a/fonts/TewiFont/2926.png b/fonts/TewiFont/2926.png new file mode 100644 index 000000000..9ece0a19f Binary files /dev/null and b/fonts/TewiFont/2926.png differ diff --git a/fonts/TewiFont/2933.png b/fonts/TewiFont/2933.png new file mode 100644 index 000000000..136844f72 Binary files /dev/null and b/fonts/TewiFont/2933.png differ diff --git a/fonts/TewiFont/2934.png b/fonts/TewiFont/2934.png new file mode 100644 index 000000000..9a28dc786 Binary files /dev/null and b/fonts/TewiFont/2934.png differ diff --git a/fonts/TewiFont/2935.png b/fonts/TewiFont/2935.png new file mode 100644 index 000000000..07c54a49d Binary files /dev/null and b/fonts/TewiFont/2935.png differ diff --git a/fonts/TewiFont/2936.png b/fonts/TewiFont/2936.png new file mode 100644 index 000000000..cdba6f3ce Binary files /dev/null and b/fonts/TewiFont/2936.png differ diff --git a/fonts/TewiFont/2937.png b/fonts/TewiFont/2937.png new file mode 100644 index 000000000..a59de79eb Binary files /dev/null and b/fonts/TewiFont/2937.png differ diff --git a/fonts/TewiFont/2938.png b/fonts/TewiFont/2938.png new file mode 100644 index 000000000..76a93f3ab Binary files /dev/null and b/fonts/TewiFont/2938.png differ diff --git a/fonts/TewiFont/2939.png b/fonts/TewiFont/2939.png new file mode 100644 index 000000000..00f1bd489 Binary files /dev/null and b/fonts/TewiFont/2939.png differ diff --git a/fonts/TewiFont/293A.png b/fonts/TewiFont/293A.png new file mode 100644 index 000000000..3894477f0 Binary files /dev/null and b/fonts/TewiFont/293A.png differ diff --git a/fonts/TewiFont/293B.png b/fonts/TewiFont/293B.png new file mode 100644 index 000000000..9c2756b1a Binary files /dev/null and b/fonts/TewiFont/293B.png differ diff --git a/fonts/TewiFont/293C.png b/fonts/TewiFont/293C.png new file mode 100644 index 000000000..68ba121af Binary files /dev/null and b/fonts/TewiFont/293C.png differ diff --git a/fonts/TewiFont/293D.png b/fonts/TewiFont/293D.png new file mode 100644 index 000000000..c16344210 Binary files /dev/null and b/fonts/TewiFont/293D.png differ diff --git a/fonts/TewiFont/293E.png b/fonts/TewiFont/293E.png new file mode 100644 index 000000000..db5ed1f44 Binary files /dev/null and b/fonts/TewiFont/293E.png differ diff --git a/fonts/TewiFont/293F.png b/fonts/TewiFont/293F.png new file mode 100644 index 000000000..67af72475 Binary files /dev/null and b/fonts/TewiFont/293F.png differ diff --git a/fonts/TewiFont/2940.png b/fonts/TewiFont/2940.png new file mode 100644 index 000000000..3a91711a3 Binary files /dev/null and b/fonts/TewiFont/2940.png differ diff --git a/fonts/TewiFont/2941.png b/fonts/TewiFont/2941.png new file mode 100644 index 000000000..4d9fc5a2d Binary files /dev/null and b/fonts/TewiFont/2941.png differ diff --git a/fonts/TewiFont/2942.png b/fonts/TewiFont/2942.png new file mode 100644 index 000000000..017c07f30 Binary files /dev/null and b/fonts/TewiFont/2942.png differ diff --git a/fonts/TewiFont/2943.png b/fonts/TewiFont/2943.png new file mode 100644 index 000000000..ea7b09d16 Binary files /dev/null and b/fonts/TewiFont/2943.png differ diff --git a/fonts/TewiFont/2944.png b/fonts/TewiFont/2944.png new file mode 100644 index 000000000..54808d5bf Binary files /dev/null and b/fonts/TewiFont/2944.png differ diff --git a/fonts/TewiFont/2945.png b/fonts/TewiFont/2945.png new file mode 100644 index 000000000..5f2ba56d7 Binary files /dev/null and b/fonts/TewiFont/2945.png differ diff --git a/fonts/TewiFont/2946.png b/fonts/TewiFont/2946.png new file mode 100644 index 000000000..bbcd0b36a Binary files /dev/null and b/fonts/TewiFont/2946.png differ diff --git a/fonts/TewiFont/2949.png b/fonts/TewiFont/2949.png new file mode 100644 index 000000000..9a0145cb9 Binary files /dev/null and b/fonts/TewiFont/2949.png differ diff --git a/fonts/TewiFont/294A.png b/fonts/TewiFont/294A.png new file mode 100644 index 000000000..656f36123 Binary files /dev/null and b/fonts/TewiFont/294A.png differ diff --git a/fonts/TewiFont/294B.png b/fonts/TewiFont/294B.png new file mode 100644 index 000000000..711dee670 Binary files /dev/null and b/fonts/TewiFont/294B.png differ diff --git a/fonts/TewiFont/294C.png b/fonts/TewiFont/294C.png new file mode 100644 index 000000000..48b398b96 Binary files /dev/null and b/fonts/TewiFont/294C.png differ diff --git a/fonts/TewiFont/294D.png b/fonts/TewiFont/294D.png new file mode 100644 index 000000000..cba221111 Binary files /dev/null and b/fonts/TewiFont/294D.png differ diff --git a/fonts/TewiFont/294F.png b/fonts/TewiFont/294F.png new file mode 100644 index 000000000..e1e3ac15b Binary files /dev/null and b/fonts/TewiFont/294F.png differ diff --git a/fonts/TewiFont/2951.png b/fonts/TewiFont/2951.png new file mode 100644 index 000000000..023d6a1ef Binary files /dev/null and b/fonts/TewiFont/2951.png differ diff --git a/fonts/TewiFont/2952.png b/fonts/TewiFont/2952.png new file mode 100644 index 000000000..9c72f57d4 Binary files /dev/null and b/fonts/TewiFont/2952.png differ diff --git a/fonts/TewiFont/2953.png b/fonts/TewiFont/2953.png new file mode 100644 index 000000000..d8b1f20b6 Binary files /dev/null and b/fonts/TewiFont/2953.png differ diff --git a/fonts/TewiFont/2954.png b/fonts/TewiFont/2954.png new file mode 100644 index 000000000..f69b24e15 Binary files /dev/null and b/fonts/TewiFont/2954.png differ diff --git a/fonts/TewiFont/2955.png b/fonts/TewiFont/2955.png new file mode 100644 index 000000000..9ded898ee Binary files /dev/null and b/fonts/TewiFont/2955.png differ diff --git a/fonts/TewiFont/2956.png b/fonts/TewiFont/2956.png new file mode 100644 index 000000000..34a3ced66 Binary files /dev/null and b/fonts/TewiFont/2956.png differ diff --git a/fonts/TewiFont/2957.png b/fonts/TewiFont/2957.png new file mode 100644 index 000000000..285a56eaa Binary files /dev/null and b/fonts/TewiFont/2957.png differ diff --git a/fonts/TewiFont/2958.png b/fonts/TewiFont/2958.png new file mode 100644 index 000000000..67d12a9e4 Binary files /dev/null and b/fonts/TewiFont/2958.png differ diff --git a/fonts/TewiFont/2959.png b/fonts/TewiFont/2959.png new file mode 100644 index 000000000..c15a28dba Binary files /dev/null and b/fonts/TewiFont/2959.png differ diff --git a/fonts/TewiFont/295A.png b/fonts/TewiFont/295A.png new file mode 100644 index 000000000..221f06df9 Binary files /dev/null and b/fonts/TewiFont/295A.png differ diff --git a/fonts/TewiFont/295B.png b/fonts/TewiFont/295B.png new file mode 100644 index 000000000..27b73a803 Binary files /dev/null and b/fonts/TewiFont/295B.png differ diff --git a/fonts/TewiFont/295C.png b/fonts/TewiFont/295C.png new file mode 100644 index 000000000..830acc0a6 Binary files /dev/null and b/fonts/TewiFont/295C.png differ diff --git a/fonts/TewiFont/295D.png b/fonts/TewiFont/295D.png new file mode 100644 index 000000000..55110272e Binary files /dev/null and b/fonts/TewiFont/295D.png differ diff --git a/fonts/TewiFont/295E.png b/fonts/TewiFont/295E.png new file mode 100644 index 000000000..0567e88ec Binary files /dev/null and b/fonts/TewiFont/295E.png differ diff --git a/fonts/TewiFont/295F.png b/fonts/TewiFont/295F.png new file mode 100644 index 000000000..af50bcafe Binary files /dev/null and b/fonts/TewiFont/295F.png differ diff --git a/fonts/TewiFont/2960.png b/fonts/TewiFont/2960.png new file mode 100644 index 000000000..9cfa310a1 Binary files /dev/null and b/fonts/TewiFont/2960.png differ diff --git a/fonts/TewiFont/2961.png b/fonts/TewiFont/2961.png new file mode 100644 index 000000000..cbf658f65 Binary files /dev/null and b/fonts/TewiFont/2961.png differ diff --git a/fonts/TewiFont/2962.png b/fonts/TewiFont/2962.png new file mode 100644 index 000000000..41f2f2672 Binary files /dev/null and b/fonts/TewiFont/2962.png differ diff --git a/fonts/TewiFont/2963.png b/fonts/TewiFont/2963.png new file mode 100644 index 000000000..05e9f4610 Binary files /dev/null and b/fonts/TewiFont/2963.png differ diff --git a/fonts/TewiFont/2964.png b/fonts/TewiFont/2964.png new file mode 100644 index 000000000..7a152d99a Binary files /dev/null and b/fonts/TewiFont/2964.png differ diff --git a/fonts/TewiFont/2965.png b/fonts/TewiFont/2965.png new file mode 100644 index 000000000..4cf9fb7ca Binary files /dev/null and b/fonts/TewiFont/2965.png differ diff --git a/fonts/TewiFont/2966.png b/fonts/TewiFont/2966.png new file mode 100644 index 000000000..51dc3155c Binary files /dev/null and b/fonts/TewiFont/2966.png differ diff --git a/fonts/TewiFont/2967.png b/fonts/TewiFont/2967.png new file mode 100644 index 000000000..0de9bd13e Binary files /dev/null and b/fonts/TewiFont/2967.png differ diff --git a/fonts/TewiFont/2968.png b/fonts/TewiFont/2968.png new file mode 100644 index 000000000..87e678182 Binary files /dev/null and b/fonts/TewiFont/2968.png differ diff --git a/fonts/TewiFont/2969.png b/fonts/TewiFont/2969.png new file mode 100644 index 000000000..0220d46d6 Binary files /dev/null and b/fonts/TewiFont/2969.png differ diff --git a/fonts/TewiFont/296A.png b/fonts/TewiFont/296A.png new file mode 100644 index 000000000..c43dd68e1 Binary files /dev/null and b/fonts/TewiFont/296A.png differ diff --git a/fonts/TewiFont/296B.png b/fonts/TewiFont/296B.png new file mode 100644 index 000000000..9862b8e0b Binary files /dev/null and b/fonts/TewiFont/296B.png differ diff --git a/fonts/TewiFont/296C.png b/fonts/TewiFont/296C.png new file mode 100644 index 000000000..e6bf732ef Binary files /dev/null and b/fonts/TewiFont/296C.png differ diff --git a/fonts/TewiFont/296D.png b/fonts/TewiFont/296D.png new file mode 100644 index 000000000..d63740412 Binary files /dev/null and b/fonts/TewiFont/296D.png differ diff --git a/fonts/TewiFont/296E.png b/fonts/TewiFont/296E.png new file mode 100644 index 000000000..1387d4854 Binary files /dev/null and b/fonts/TewiFont/296E.png differ diff --git a/fonts/TewiFont/296F.png b/fonts/TewiFont/296F.png new file mode 100644 index 000000000..783d92ead Binary files /dev/null and b/fonts/TewiFont/296F.png differ diff --git a/fonts/TewiFont/2970.png b/fonts/TewiFont/2970.png new file mode 100644 index 000000000..aed44743f Binary files /dev/null and b/fonts/TewiFont/2970.png differ diff --git a/fonts/TewiFont/2971.png b/fonts/TewiFont/2971.png new file mode 100644 index 000000000..66ac93d21 Binary files /dev/null and b/fonts/TewiFont/2971.png differ diff --git a/fonts/TewiFont/2972.png b/fonts/TewiFont/2972.png new file mode 100644 index 000000000..d621c95f9 Binary files /dev/null and b/fonts/TewiFont/2972.png differ diff --git a/fonts/TewiFont/2973.png b/fonts/TewiFont/2973.png new file mode 100644 index 000000000..bb96f8101 Binary files /dev/null and b/fonts/TewiFont/2973.png differ diff --git a/fonts/TewiFont/2974.png b/fonts/TewiFont/2974.png new file mode 100644 index 000000000..fd867861f Binary files /dev/null and b/fonts/TewiFont/2974.png differ diff --git a/fonts/TewiFont/2975.png b/fonts/TewiFont/2975.png new file mode 100644 index 000000000..bba15125e Binary files /dev/null and b/fonts/TewiFont/2975.png differ diff --git a/fonts/TewiFont/2976.png b/fonts/TewiFont/2976.png new file mode 100644 index 000000000..5e8a07d8b Binary files /dev/null and b/fonts/TewiFont/2976.png differ diff --git a/fonts/TewiFont/2978.png b/fonts/TewiFont/2978.png new file mode 100644 index 000000000..7f08ddb48 Binary files /dev/null and b/fonts/TewiFont/2978.png differ diff --git a/fonts/TewiFont/2979.png b/fonts/TewiFont/2979.png new file mode 100644 index 000000000..89326fdad Binary files /dev/null and b/fonts/TewiFont/2979.png differ diff --git a/fonts/TewiFont/297A.png b/fonts/TewiFont/297A.png new file mode 100644 index 000000000..79a0e73c8 Binary files /dev/null and b/fonts/TewiFont/297A.png differ diff --git a/fonts/TewiFont/297B.png b/fonts/TewiFont/297B.png new file mode 100644 index 000000000..daf11434d Binary files /dev/null and b/fonts/TewiFont/297B.png differ diff --git a/fonts/TewiFont/297C.png b/fonts/TewiFont/297C.png new file mode 100644 index 000000000..7faa32bb1 Binary files /dev/null and b/fonts/TewiFont/297C.png differ diff --git a/fonts/TewiFont/297D.png b/fonts/TewiFont/297D.png new file mode 100644 index 000000000..c9c607e4c Binary files /dev/null and b/fonts/TewiFont/297D.png differ diff --git a/fonts/TewiFont/297E.png b/fonts/TewiFont/297E.png new file mode 100644 index 000000000..69aacc6fe Binary files /dev/null and b/fonts/TewiFont/297E.png differ diff --git a/fonts/TewiFont/297F.png b/fonts/TewiFont/297F.png new file mode 100644 index 000000000..e68552373 Binary files /dev/null and b/fonts/TewiFont/297F.png differ diff --git a/fonts/TewiFont/2B00.png b/fonts/TewiFont/2B00.png new file mode 100644 index 000000000..824f9f74b Binary files /dev/null and b/fonts/TewiFont/2B00.png differ diff --git a/fonts/TewiFont/2B01.png b/fonts/TewiFont/2B01.png new file mode 100644 index 000000000..117c05dd0 Binary files /dev/null and b/fonts/TewiFont/2B01.png differ diff --git a/fonts/TewiFont/2B02.png b/fonts/TewiFont/2B02.png new file mode 100644 index 000000000..ec1e12a2b Binary files /dev/null and b/fonts/TewiFont/2B02.png differ diff --git a/fonts/TewiFont/2B03.png b/fonts/TewiFont/2B03.png new file mode 100644 index 000000000..20132e237 Binary files /dev/null and b/fonts/TewiFont/2B03.png differ diff --git a/fonts/TewiFont/2B05.png b/fonts/TewiFont/2B05.png new file mode 100644 index 000000000..0c0c8f946 Binary files /dev/null and b/fonts/TewiFont/2B05.png differ diff --git a/fonts/TewiFont/2B06.png b/fonts/TewiFont/2B06.png new file mode 100644 index 000000000..e4ee3a6cb Binary files /dev/null and b/fonts/TewiFont/2B06.png differ diff --git a/fonts/TewiFont/2B07.png b/fonts/TewiFont/2B07.png new file mode 100644 index 000000000..97f67cc95 Binary files /dev/null and b/fonts/TewiFont/2B07.png differ diff --git a/fonts/TewiFont/2B08.png b/fonts/TewiFont/2B08.png new file mode 100644 index 000000000..0c3f029be Binary files /dev/null and b/fonts/TewiFont/2B08.png differ diff --git a/fonts/TewiFont/2B09.png b/fonts/TewiFont/2B09.png new file mode 100644 index 000000000..e3cb9c13c Binary files /dev/null and b/fonts/TewiFont/2B09.png differ diff --git a/fonts/TewiFont/2B0A.png b/fonts/TewiFont/2B0A.png new file mode 100644 index 000000000..fee6c8341 Binary files /dev/null and b/fonts/TewiFont/2B0A.png differ diff --git a/fonts/TewiFont/2B0B.png b/fonts/TewiFont/2B0B.png new file mode 100644 index 000000000..34e808ed4 Binary files /dev/null and b/fonts/TewiFont/2B0B.png differ diff --git a/fonts/TewiFont/2B0D.png b/fonts/TewiFont/2B0D.png new file mode 100644 index 000000000..3b6725d0d Binary files /dev/null and b/fonts/TewiFont/2B0D.png differ diff --git a/fonts/TewiFont/2B0E.png b/fonts/TewiFont/2B0E.png new file mode 100644 index 000000000..4ba5a5c7f Binary files /dev/null and b/fonts/TewiFont/2B0E.png differ diff --git a/fonts/TewiFont/2B0F.png b/fonts/TewiFont/2B0F.png new file mode 100644 index 000000000..9cf45706f Binary files /dev/null and b/fonts/TewiFont/2B0F.png differ diff --git a/fonts/TewiFont/2B10.png b/fonts/TewiFont/2B10.png new file mode 100644 index 000000000..14a1e9608 Binary files /dev/null and b/fonts/TewiFont/2B10.png differ diff --git a/fonts/TewiFont/2B11.png b/fonts/TewiFont/2B11.png new file mode 100644 index 000000000..7dbda71ed Binary files /dev/null and b/fonts/TewiFont/2B11.png differ diff --git a/fonts/TewiFont/2B12.png b/fonts/TewiFont/2B12.png new file mode 100644 index 000000000..112678437 Binary files /dev/null and b/fonts/TewiFont/2B12.png differ diff --git a/fonts/TewiFont/2B13.png b/fonts/TewiFont/2B13.png new file mode 100644 index 000000000..177fac98d Binary files /dev/null and b/fonts/TewiFont/2B13.png differ diff --git a/fonts/TewiFont/2B14.png b/fonts/TewiFont/2B14.png new file mode 100644 index 000000000..a33d9dfc4 Binary files /dev/null and b/fonts/TewiFont/2B14.png differ diff --git a/fonts/TewiFont/2B15.png b/fonts/TewiFont/2B15.png new file mode 100644 index 000000000..ef6af1bf1 Binary files /dev/null and b/fonts/TewiFont/2B15.png differ diff --git a/fonts/TewiFont/2B16.png b/fonts/TewiFont/2B16.png new file mode 100644 index 000000000..6b528f1e8 Binary files /dev/null and b/fonts/TewiFont/2B16.png differ diff --git a/fonts/TewiFont/2B17.png b/fonts/TewiFont/2B17.png new file mode 100644 index 000000000..28dd442d3 Binary files /dev/null and b/fonts/TewiFont/2B17.png differ diff --git a/fonts/TewiFont/2B18.png b/fonts/TewiFont/2B18.png new file mode 100644 index 000000000..b2cd01263 Binary files /dev/null and b/fonts/TewiFont/2B18.png differ diff --git a/fonts/TewiFont/2B19.png b/fonts/TewiFont/2B19.png new file mode 100644 index 000000000..1811d4e1e Binary files /dev/null and b/fonts/TewiFont/2B19.png differ diff --git a/fonts/TewiFont/2B1A.png b/fonts/TewiFont/2B1A.png new file mode 100644 index 000000000..055432a77 Binary files /dev/null and b/fonts/TewiFont/2B1A.png differ diff --git a/fonts/TewiFont/2B1B.png b/fonts/TewiFont/2B1B.png new file mode 100644 index 000000000..a47497492 Binary files /dev/null and b/fonts/TewiFont/2B1B.png differ diff --git a/fonts/TewiFont/2B1C.png b/fonts/TewiFont/2B1C.png new file mode 100644 index 000000000..1c17057f1 Binary files /dev/null and b/fonts/TewiFont/2B1C.png differ diff --git a/fonts/TewiFont/2B1D.png b/fonts/TewiFont/2B1D.png new file mode 100644 index 000000000..4f220f619 Binary files /dev/null and b/fonts/TewiFont/2B1D.png differ diff --git a/fonts/TewiFont/2B1E.png b/fonts/TewiFont/2B1E.png new file mode 100644 index 000000000..ad438d561 Binary files /dev/null and b/fonts/TewiFont/2B1E.png differ diff --git a/fonts/TewiFont/2B1F.png b/fonts/TewiFont/2B1F.png new file mode 100644 index 000000000..488b1f859 Binary files /dev/null and b/fonts/TewiFont/2B1F.png differ diff --git a/fonts/TewiFont/2B20.png b/fonts/TewiFont/2B20.png new file mode 100644 index 000000000..71a650406 Binary files /dev/null and b/fonts/TewiFont/2B20.png differ diff --git a/fonts/TewiFont/2B21.png b/fonts/TewiFont/2B21.png new file mode 100644 index 000000000..865626b52 Binary files /dev/null and b/fonts/TewiFont/2B21.png differ diff --git a/fonts/TewiFont/2B22.png b/fonts/TewiFont/2B22.png new file mode 100644 index 000000000..81820f172 Binary files /dev/null and b/fonts/TewiFont/2B22.png differ diff --git a/fonts/TewiFont/2B23.png b/fonts/TewiFont/2B23.png new file mode 100644 index 000000000..ea43522fe Binary files /dev/null and b/fonts/TewiFont/2B23.png differ diff --git a/fonts/TewiFont/2B24.png b/fonts/TewiFont/2B24.png new file mode 100644 index 000000000..b457e0e96 Binary files /dev/null and b/fonts/TewiFont/2B24.png differ diff --git a/fonts/TewiFont/2B25.png b/fonts/TewiFont/2B25.png new file mode 100644 index 000000000..8e90b21fb Binary files /dev/null and b/fonts/TewiFont/2B25.png differ diff --git a/fonts/TewiFont/2B26.png b/fonts/TewiFont/2B26.png new file mode 100644 index 000000000..af0a4cf8b Binary files /dev/null and b/fonts/TewiFont/2B26.png differ diff --git a/fonts/TewiFont/2B27.png b/fonts/TewiFont/2B27.png new file mode 100644 index 000000000..35262dcd4 Binary files /dev/null and b/fonts/TewiFont/2B27.png differ diff --git a/fonts/TewiFont/2B28.png b/fonts/TewiFont/2B28.png new file mode 100644 index 000000000..272494e49 Binary files /dev/null and b/fonts/TewiFont/2B28.png differ diff --git a/fonts/TewiFont/2B29.png b/fonts/TewiFont/2B29.png new file mode 100644 index 000000000..13138de7a Binary files /dev/null and b/fonts/TewiFont/2B29.png differ diff --git a/fonts/TewiFont/2B2A.png b/fonts/TewiFont/2B2A.png new file mode 100644 index 000000000..e2d91871f Binary files /dev/null and b/fonts/TewiFont/2B2A.png differ diff --git a/fonts/TewiFont/2B2B.png b/fonts/TewiFont/2B2B.png new file mode 100644 index 000000000..3a4cac5bc Binary files /dev/null and b/fonts/TewiFont/2B2B.png differ diff --git a/fonts/TewiFont/2B2C.png b/fonts/TewiFont/2B2C.png new file mode 100644 index 000000000..7c2f9ceb6 Binary files /dev/null and b/fonts/TewiFont/2B2C.png differ diff --git a/fonts/TewiFont/2B2D.png b/fonts/TewiFont/2B2D.png new file mode 100644 index 000000000..4a0f951be Binary files /dev/null and b/fonts/TewiFont/2B2D.png differ diff --git a/fonts/TewiFont/2B2E.png b/fonts/TewiFont/2B2E.png new file mode 100644 index 000000000..d97c690ae Binary files /dev/null and b/fonts/TewiFont/2B2E.png differ diff --git a/fonts/TewiFont/2B2F.png b/fonts/TewiFont/2B2F.png new file mode 100644 index 000000000..95e156a80 Binary files /dev/null and b/fonts/TewiFont/2B2F.png differ diff --git a/fonts/TewiFont/2B30.png b/fonts/TewiFont/2B30.png new file mode 100644 index 000000000..73fd2d123 Binary files /dev/null and b/fonts/TewiFont/2B30.png differ diff --git a/fonts/TewiFont/2B31.png b/fonts/TewiFont/2B31.png new file mode 100644 index 000000000..6a4bb3628 Binary files /dev/null and b/fonts/TewiFont/2B31.png differ diff --git a/fonts/TewiFont/2B32.png b/fonts/TewiFont/2B32.png new file mode 100644 index 000000000..1111ddfd0 Binary files /dev/null and b/fonts/TewiFont/2B32.png differ diff --git a/fonts/TewiFont/2B38.png b/fonts/TewiFont/2B38.png new file mode 100644 index 000000000..a668a7c51 Binary files /dev/null and b/fonts/TewiFont/2B38.png differ diff --git a/fonts/TewiFont/2B3F.png b/fonts/TewiFont/2B3F.png new file mode 100644 index 000000000..2cac83e54 Binary files /dev/null and b/fonts/TewiFont/2B3F.png differ diff --git a/fonts/TewiFont/2B40.png b/fonts/TewiFont/2B40.png new file mode 100644 index 000000000..5726518c9 Binary files /dev/null and b/fonts/TewiFont/2B40.png differ diff --git a/fonts/TewiFont/2B41.png b/fonts/TewiFont/2B41.png new file mode 100644 index 000000000..1a0b381d1 Binary files /dev/null and b/fonts/TewiFont/2B41.png differ diff --git a/fonts/TewiFont/2B42.png b/fonts/TewiFont/2B42.png new file mode 100644 index 000000000..3d5f0a1fb Binary files /dev/null and b/fonts/TewiFont/2B42.png differ diff --git a/fonts/TewiFont/2B43.png b/fonts/TewiFont/2B43.png new file mode 100644 index 000000000..5f4db785c Binary files /dev/null and b/fonts/TewiFont/2B43.png differ diff --git a/fonts/TewiFont/2B44.png b/fonts/TewiFont/2B44.png new file mode 100644 index 000000000..89ff8ce53 Binary files /dev/null and b/fonts/TewiFont/2B44.png differ diff --git a/fonts/TewiFont/2B45.png b/fonts/TewiFont/2B45.png new file mode 100644 index 000000000..cb8d097bd Binary files /dev/null and b/fonts/TewiFont/2B45.png differ diff --git a/fonts/TewiFont/2B46.png b/fonts/TewiFont/2B46.png new file mode 100644 index 000000000..fc3ef07e9 Binary files /dev/null and b/fonts/TewiFont/2B46.png differ diff --git a/fonts/TewiFont/2B47.png b/fonts/TewiFont/2B47.png new file mode 100644 index 000000000..96ef8d472 Binary files /dev/null and b/fonts/TewiFont/2B47.png differ diff --git a/fonts/TewiFont/2B48.png b/fonts/TewiFont/2B48.png new file mode 100644 index 000000000..0120d17ae Binary files /dev/null and b/fonts/TewiFont/2B48.png differ diff --git a/fonts/TewiFont/2B49.png b/fonts/TewiFont/2B49.png new file mode 100644 index 000000000..60ce21f71 Binary files /dev/null and b/fonts/TewiFont/2B49.png differ diff --git a/fonts/TewiFont/2B4A.png b/fonts/TewiFont/2B4A.png new file mode 100644 index 000000000..46194d502 Binary files /dev/null and b/fonts/TewiFont/2B4A.png differ diff --git a/fonts/TewiFont/2B4B.png b/fonts/TewiFont/2B4B.png new file mode 100644 index 000000000..e3b32fc90 Binary files /dev/null and b/fonts/TewiFont/2B4B.png differ diff --git a/fonts/TewiFont/2B4C.png b/fonts/TewiFont/2B4C.png new file mode 100644 index 000000000..df31dbeef Binary files /dev/null and b/fonts/TewiFont/2B4C.png differ diff --git a/fonts/TewiFont/2B4D.png b/fonts/TewiFont/2B4D.png new file mode 100644 index 000000000..f000f4ad1 Binary files /dev/null and b/fonts/TewiFont/2B4D.png differ diff --git a/fonts/TewiFont/2B4E.png b/fonts/TewiFont/2B4E.png new file mode 100644 index 000000000..8c1ff507a Binary files /dev/null and b/fonts/TewiFont/2B4E.png differ diff --git a/fonts/TewiFont/2B4F.png b/fonts/TewiFont/2B4F.png new file mode 100644 index 000000000..e274f5119 Binary files /dev/null and b/fonts/TewiFont/2B4F.png differ diff --git a/fonts/TewiFont/2B50.png b/fonts/TewiFont/2B50.png new file mode 100644 index 000000000..97f6993c8 Binary files /dev/null and b/fonts/TewiFont/2B50.png differ diff --git a/fonts/TewiFont/2B51.png b/fonts/TewiFont/2B51.png new file mode 100644 index 000000000..81ee9e031 Binary files /dev/null and b/fonts/TewiFont/2B51.png differ diff --git a/fonts/TewiFont/2B52.png b/fonts/TewiFont/2B52.png new file mode 100644 index 000000000..ec25eabda Binary files /dev/null and b/fonts/TewiFont/2B52.png differ diff --git a/fonts/TewiFont/2B53.png b/fonts/TewiFont/2B53.png new file mode 100644 index 000000000..564f798c9 Binary files /dev/null and b/fonts/TewiFont/2B53.png differ diff --git a/fonts/TewiFont/2B54.png b/fonts/TewiFont/2B54.png new file mode 100644 index 000000000..ede606243 Binary files /dev/null and b/fonts/TewiFont/2B54.png differ diff --git a/fonts/TewiFont/2B55.png b/fonts/TewiFont/2B55.png new file mode 100644 index 000000000..d4cf814f2 Binary files /dev/null and b/fonts/TewiFont/2B55.png differ diff --git a/fonts/TewiFont/2B58.png b/fonts/TewiFont/2B58.png new file mode 100644 index 000000000..d4cf814f2 Binary files /dev/null and b/fonts/TewiFont/2B58.png differ diff --git a/fonts/TewiFont/2B5A.png b/fonts/TewiFont/2B5A.png new file mode 100644 index 000000000..0806b97a3 Binary files /dev/null and b/fonts/TewiFont/2B5A.png differ diff --git a/fonts/TewiFont/2B5B.png b/fonts/TewiFont/2B5B.png new file mode 100644 index 000000000..627fc0900 Binary files /dev/null and b/fonts/TewiFont/2B5B.png differ diff --git a/fonts/TewiFont/2B5C.png b/fonts/TewiFont/2B5C.png new file mode 100644 index 000000000..f190b2934 Binary files /dev/null and b/fonts/TewiFont/2B5C.png differ diff --git a/fonts/TewiFont/2B5D.png b/fonts/TewiFont/2B5D.png new file mode 100644 index 000000000..5f729f9f8 Binary files /dev/null and b/fonts/TewiFont/2B5D.png differ diff --git a/fonts/TewiFont/2B5E.png b/fonts/TewiFont/2B5E.png new file mode 100644 index 000000000..e4848ed15 Binary files /dev/null and b/fonts/TewiFont/2B5E.png differ diff --git a/fonts/TewiFont/2B5F.png b/fonts/TewiFont/2B5F.png new file mode 100644 index 000000000..6ccdfd41a Binary files /dev/null and b/fonts/TewiFont/2B5F.png differ diff --git a/fonts/TewiFont/2B60.png b/fonts/TewiFont/2B60.png new file mode 100644 index 000000000..bc1db8d47 Binary files /dev/null and b/fonts/TewiFont/2B60.png differ diff --git a/fonts/TewiFont/2B61.png b/fonts/TewiFont/2B61.png new file mode 100644 index 000000000..1d05f738c Binary files /dev/null and b/fonts/TewiFont/2B61.png differ diff --git a/fonts/TewiFont/2B62.png b/fonts/TewiFont/2B62.png new file mode 100644 index 000000000..b30f180f0 Binary files /dev/null and b/fonts/TewiFont/2B62.png differ diff --git a/fonts/TewiFont/2B63.png b/fonts/TewiFont/2B63.png new file mode 100644 index 000000000..e18c67f08 Binary files /dev/null and b/fonts/TewiFont/2B63.png differ diff --git a/fonts/TewiFont/2B65.png b/fonts/TewiFont/2B65.png new file mode 100644 index 000000000..0909d37c6 Binary files /dev/null and b/fonts/TewiFont/2B65.png differ diff --git a/fonts/TewiFont/2B66.png b/fonts/TewiFont/2B66.png new file mode 100644 index 000000000..10303dffc Binary files /dev/null and b/fonts/TewiFont/2B66.png differ diff --git a/fonts/TewiFont/2B67.png b/fonts/TewiFont/2B67.png new file mode 100644 index 000000000..4f831acce Binary files /dev/null and b/fonts/TewiFont/2B67.png differ diff --git a/fonts/TewiFont/2B68.png b/fonts/TewiFont/2B68.png new file mode 100644 index 000000000..378071fd8 Binary files /dev/null and b/fonts/TewiFont/2B68.png differ diff --git a/fonts/TewiFont/2B69.png b/fonts/TewiFont/2B69.png new file mode 100644 index 000000000..59e6c49ae Binary files /dev/null and b/fonts/TewiFont/2B69.png differ diff --git a/fonts/TewiFont/2B6A.png b/fonts/TewiFont/2B6A.png new file mode 100644 index 000000000..e4a927f75 Binary files /dev/null and b/fonts/TewiFont/2B6A.png differ diff --git a/fonts/TewiFont/2B6B.png b/fonts/TewiFont/2B6B.png new file mode 100644 index 000000000..bb5c90ab1 Binary files /dev/null and b/fonts/TewiFont/2B6B.png differ diff --git a/fonts/TewiFont/2B6C.png b/fonts/TewiFont/2B6C.png new file mode 100644 index 000000000..4db7f0d12 Binary files /dev/null and b/fonts/TewiFont/2B6C.png differ diff --git a/fonts/TewiFont/2B6D.png b/fonts/TewiFont/2B6D.png new file mode 100644 index 000000000..e35bd6335 Binary files /dev/null and b/fonts/TewiFont/2B6D.png differ diff --git a/fonts/TewiFont/2B6E.png b/fonts/TewiFont/2B6E.png new file mode 100644 index 000000000..ec2642409 Binary files /dev/null and b/fonts/TewiFont/2B6E.png differ diff --git a/fonts/TewiFont/2B6F.png b/fonts/TewiFont/2B6F.png new file mode 100644 index 000000000..a58f56917 Binary files /dev/null and b/fonts/TewiFont/2B6F.png differ diff --git a/fonts/TewiFont/2B70.png b/fonts/TewiFont/2B70.png new file mode 100644 index 000000000..05886b8d7 Binary files /dev/null and b/fonts/TewiFont/2B70.png differ diff --git a/fonts/TewiFont/2B71.png b/fonts/TewiFont/2B71.png new file mode 100644 index 000000000..b1d552929 Binary files /dev/null and b/fonts/TewiFont/2B71.png differ diff --git a/fonts/TewiFont/2B72.png b/fonts/TewiFont/2B72.png new file mode 100644 index 000000000..5fe9e7650 Binary files /dev/null and b/fonts/TewiFont/2B72.png differ diff --git a/fonts/TewiFont/2B73.png b/fonts/TewiFont/2B73.png new file mode 100644 index 000000000..395cebdc1 Binary files /dev/null and b/fonts/TewiFont/2B73.png differ diff --git a/fonts/TewiFont/2B76.png b/fonts/TewiFont/2B76.png new file mode 100644 index 000000000..88ed597d8 Binary files /dev/null and b/fonts/TewiFont/2B76.png differ diff --git a/fonts/TewiFont/2B77.png b/fonts/TewiFont/2B77.png new file mode 100644 index 000000000..bf75d44ec Binary files /dev/null and b/fonts/TewiFont/2B77.png differ diff --git a/fonts/TewiFont/2B78.png b/fonts/TewiFont/2B78.png new file mode 100644 index 000000000..97cb01613 Binary files /dev/null and b/fonts/TewiFont/2B78.png differ diff --git a/fonts/TewiFont/2B79.png b/fonts/TewiFont/2B79.png new file mode 100644 index 000000000..f97b0a0ee Binary files /dev/null and b/fonts/TewiFont/2B79.png differ diff --git a/fonts/TewiFont/2B7E.png b/fonts/TewiFont/2B7E.png new file mode 100644 index 000000000..b9c307959 Binary files /dev/null and b/fonts/TewiFont/2B7E.png differ diff --git a/fonts/TewiFont/2B80.png b/fonts/TewiFont/2B80.png new file mode 100644 index 000000000..3689acb45 Binary files /dev/null and b/fonts/TewiFont/2B80.png differ diff --git a/fonts/TewiFont/2B82.png b/fonts/TewiFont/2B82.png new file mode 100644 index 000000000..fd111d4ca Binary files /dev/null and b/fonts/TewiFont/2B82.png differ diff --git a/fonts/TewiFont/2B88.png b/fonts/TewiFont/2B88.png new file mode 100644 index 000000000..eda41e730 Binary files /dev/null and b/fonts/TewiFont/2B88.png differ diff --git a/fonts/TewiFont/2B89.png b/fonts/TewiFont/2B89.png new file mode 100644 index 000000000..9367d7a5f Binary files /dev/null and b/fonts/TewiFont/2B89.png differ diff --git a/fonts/TewiFont/2B8A.png b/fonts/TewiFont/2B8A.png new file mode 100644 index 000000000..1365d030c Binary files /dev/null and b/fonts/TewiFont/2B8A.png differ diff --git a/fonts/TewiFont/2B8B.png b/fonts/TewiFont/2B8B.png new file mode 100644 index 000000000..341feea1f Binary files /dev/null and b/fonts/TewiFont/2B8B.png differ diff --git a/fonts/TewiFont/2B8C.png b/fonts/TewiFont/2B8C.png new file mode 100644 index 000000000..560d9ef8e Binary files /dev/null and b/fonts/TewiFont/2B8C.png differ diff --git a/fonts/TewiFont/2B8D.png b/fonts/TewiFont/2B8D.png new file mode 100644 index 000000000..c306d5a7f Binary files /dev/null and b/fonts/TewiFont/2B8D.png differ diff --git a/fonts/TewiFont/2B8E.png b/fonts/TewiFont/2B8E.png new file mode 100644 index 000000000..7767cdb3b Binary files /dev/null and b/fonts/TewiFont/2B8E.png differ diff --git a/fonts/TewiFont/2B8F.png b/fonts/TewiFont/2B8F.png new file mode 100644 index 000000000..211100215 Binary files /dev/null and b/fonts/TewiFont/2B8F.png differ diff --git a/fonts/TewiFont/2B90.png b/fonts/TewiFont/2B90.png new file mode 100644 index 000000000..922b2abc0 Binary files /dev/null and b/fonts/TewiFont/2B90.png differ diff --git a/fonts/TewiFont/2B91.png b/fonts/TewiFont/2B91.png new file mode 100644 index 000000000..99101e045 Binary files /dev/null and b/fonts/TewiFont/2B91.png differ diff --git a/fonts/TewiFont/2B92.png b/fonts/TewiFont/2B92.png new file mode 100644 index 000000000..60a2b344a Binary files /dev/null and b/fonts/TewiFont/2B92.png differ diff --git a/fonts/TewiFont/2B93.png b/fonts/TewiFont/2B93.png new file mode 100644 index 000000000..ed7cfa592 Binary files /dev/null and b/fonts/TewiFont/2B93.png differ diff --git a/fonts/TewiFont/2B95.png b/fonts/TewiFont/2B95.png new file mode 100644 index 000000000..00251edab Binary files /dev/null and b/fonts/TewiFont/2B95.png differ diff --git a/fonts/TewiFont/2BA0.png b/fonts/TewiFont/2BA0.png new file mode 100644 index 000000000..5b3152af2 Binary files /dev/null and b/fonts/TewiFont/2BA0.png differ diff --git a/fonts/TewiFont/2BA1.png b/fonts/TewiFont/2BA1.png new file mode 100644 index 000000000..bfba90e05 Binary files /dev/null and b/fonts/TewiFont/2BA1.png differ diff --git a/fonts/TewiFont/2BA2.png b/fonts/TewiFont/2BA2.png new file mode 100644 index 000000000..6bf026ce7 Binary files /dev/null and b/fonts/TewiFont/2BA2.png differ diff --git a/fonts/TewiFont/2BA3.png b/fonts/TewiFont/2BA3.png new file mode 100644 index 000000000..48494405e Binary files /dev/null and b/fonts/TewiFont/2BA3.png differ diff --git a/fonts/TewiFont/2BA4.png b/fonts/TewiFont/2BA4.png new file mode 100644 index 000000000..dc055a077 Binary files /dev/null and b/fonts/TewiFont/2BA4.png differ diff --git a/fonts/TewiFont/2BA5.png b/fonts/TewiFont/2BA5.png new file mode 100644 index 000000000..309a8dd20 Binary files /dev/null and b/fonts/TewiFont/2BA5.png differ diff --git a/fonts/TewiFont/2BA6.png b/fonts/TewiFont/2BA6.png new file mode 100644 index 000000000..2fb1be89e Binary files /dev/null and b/fonts/TewiFont/2BA6.png differ diff --git a/fonts/TewiFont/2BA7.png b/fonts/TewiFont/2BA7.png new file mode 100644 index 000000000..972344e83 Binary files /dev/null and b/fonts/TewiFont/2BA7.png differ diff --git a/fonts/TewiFont/2BA8.png b/fonts/TewiFont/2BA8.png new file mode 100644 index 000000000..1837983f7 Binary files /dev/null and b/fonts/TewiFont/2BA8.png differ diff --git a/fonts/TewiFont/2BA9.png b/fonts/TewiFont/2BA9.png new file mode 100644 index 000000000..0b5accd23 Binary files /dev/null and b/fonts/TewiFont/2BA9.png differ diff --git a/fonts/TewiFont/2BAA.png b/fonts/TewiFont/2BAA.png new file mode 100644 index 000000000..3ae005af6 Binary files /dev/null and b/fonts/TewiFont/2BAA.png differ diff --git a/fonts/TewiFont/2BAB.png b/fonts/TewiFont/2BAB.png new file mode 100644 index 000000000..0a68dd493 Binary files /dev/null and b/fonts/TewiFont/2BAB.png differ diff --git a/fonts/TewiFont/2BAC.png b/fonts/TewiFont/2BAC.png new file mode 100644 index 000000000..4901eff79 Binary files /dev/null and b/fonts/TewiFont/2BAC.png differ diff --git a/fonts/TewiFont/2BAD.png b/fonts/TewiFont/2BAD.png new file mode 100644 index 000000000..c571c7048 Binary files /dev/null and b/fonts/TewiFont/2BAD.png differ diff --git a/fonts/TewiFont/2BAE.png b/fonts/TewiFont/2BAE.png new file mode 100644 index 000000000..36e268724 Binary files /dev/null and b/fonts/TewiFont/2BAE.png differ diff --git a/fonts/TewiFont/2BAF.png b/fonts/TewiFont/2BAF.png new file mode 100644 index 000000000..067caf82b Binary files /dev/null and b/fonts/TewiFont/2BAF.png differ diff --git a/fonts/TewiFont/2BB8.png b/fonts/TewiFont/2BB8.png new file mode 100644 index 000000000..348e6db1e Binary files /dev/null and b/fonts/TewiFont/2BB8.png differ diff --git a/fonts/TewiFont/2BC0.png b/fonts/TewiFont/2BC0.png new file mode 100644 index 000000000..a47497492 Binary files /dev/null and b/fonts/TewiFont/2BC0.png differ diff --git a/fonts/TewiFont/2BC1.png b/fonts/TewiFont/2BC1.png new file mode 100644 index 000000000..af0a4cf8b Binary files /dev/null and b/fonts/TewiFont/2BC1.png differ diff --git a/fonts/TewiFont/2BC2.png b/fonts/TewiFont/2BC2.png new file mode 100644 index 000000000..85d95ccec Binary files /dev/null and b/fonts/TewiFont/2BC2.png differ diff --git a/fonts/TewiFont/2BC5.png b/fonts/TewiFont/2BC5.png new file mode 100644 index 000000000..2f469419e Binary files /dev/null and b/fonts/TewiFont/2BC5.png differ diff --git a/fonts/TewiFont/2BC6.png b/fonts/TewiFont/2BC6.png new file mode 100644 index 000000000..ace7c5ed3 Binary files /dev/null and b/fonts/TewiFont/2BC6.png differ diff --git a/fonts/TewiFont/2BC7.png b/fonts/TewiFont/2BC7.png new file mode 100644 index 000000000..8c3a556f4 Binary files /dev/null and b/fonts/TewiFont/2BC7.png differ diff --git a/fonts/TewiFont/2BC8.png b/fonts/TewiFont/2BC8.png new file mode 100644 index 000000000..deffac0cf Binary files /dev/null and b/fonts/TewiFont/2BC8.png differ diff --git a/fonts/TewiFont/2BCA.png b/fonts/TewiFont/2BCA.png new file mode 100644 index 000000000..e922eb0cb Binary files /dev/null and b/fonts/TewiFont/2BCA.png differ diff --git a/fonts/TewiFont/2BCB.png b/fonts/TewiFont/2BCB.png new file mode 100644 index 000000000..a320f58a6 Binary files /dev/null and b/fonts/TewiFont/2BCB.png differ diff --git a/fonts/TewiFont/2BCC.png b/fonts/TewiFont/2BCC.png new file mode 100644 index 000000000..436da78eb Binary files /dev/null and b/fonts/TewiFont/2BCC.png differ diff --git a/fonts/TewiFont/2BCD.png b/fonts/TewiFont/2BCD.png new file mode 100644 index 000000000..c5f3f974c Binary files /dev/null and b/fonts/TewiFont/2BCD.png differ diff --git a/fonts/TewiFont/2BCE.png b/fonts/TewiFont/2BCE.png new file mode 100644 index 000000000..c067e7098 Binary files /dev/null and b/fonts/TewiFont/2BCE.png differ diff --git a/fonts/TewiFont/2BCF.png b/fonts/TewiFont/2BCF.png new file mode 100644 index 000000000..2e9765d20 Binary files /dev/null and b/fonts/TewiFont/2BCF.png differ diff --git a/fonts/TewiFont/2BEC.png b/fonts/TewiFont/2BEC.png new file mode 100644 index 000000000..1e80204e6 Binary files /dev/null and b/fonts/TewiFont/2BEC.png differ diff --git a/fonts/TewiFont/2BED.png b/fonts/TewiFont/2BED.png new file mode 100644 index 000000000..30bcfd565 Binary files /dev/null and b/fonts/TewiFont/2BED.png differ diff --git a/fonts/TewiFont/2BEE.png b/fonts/TewiFont/2BEE.png new file mode 100644 index 000000000..ea77093b7 Binary files /dev/null and b/fonts/TewiFont/2BEE.png differ diff --git a/fonts/TewiFont/2BEF.png b/fonts/TewiFont/2BEF.png new file mode 100644 index 000000000..d6e9a2078 Binary files /dev/null and b/fonts/TewiFont/2BEF.png differ diff --git a/fonts/TewiFont/2C60.png b/fonts/TewiFont/2C60.png new file mode 100644 index 000000000..4964e579b Binary files /dev/null and b/fonts/TewiFont/2C60.png differ diff --git a/fonts/TewiFont/2C61.png b/fonts/TewiFont/2C61.png new file mode 100644 index 000000000..09233e636 Binary files /dev/null and b/fonts/TewiFont/2C61.png differ diff --git a/fonts/TewiFont/2C62.png b/fonts/TewiFont/2C62.png new file mode 100644 index 000000000..7143ea813 Binary files /dev/null and b/fonts/TewiFont/2C62.png differ diff --git a/fonts/TewiFont/2C63.png b/fonts/TewiFont/2C63.png new file mode 100644 index 000000000..3f39f5a0f Binary files /dev/null and b/fonts/TewiFont/2C63.png differ diff --git a/fonts/TewiFont/2C64.png b/fonts/TewiFont/2C64.png new file mode 100644 index 000000000..b08cad178 Binary files /dev/null and b/fonts/TewiFont/2C64.png differ diff --git a/fonts/TewiFont/2C65.png b/fonts/TewiFont/2C65.png new file mode 100644 index 000000000..93e868cdb Binary files /dev/null and b/fonts/TewiFont/2C65.png differ diff --git a/fonts/TewiFont/2C66.png b/fonts/TewiFont/2C66.png new file mode 100644 index 000000000..77556e401 Binary files /dev/null and b/fonts/TewiFont/2C66.png differ diff --git a/fonts/TewiFont/2C67.png b/fonts/TewiFont/2C67.png new file mode 100644 index 000000000..9a8c35f77 Binary files /dev/null and b/fonts/TewiFont/2C67.png differ diff --git a/fonts/TewiFont/2C68.png b/fonts/TewiFont/2C68.png new file mode 100644 index 000000000..e15002832 Binary files /dev/null and b/fonts/TewiFont/2C68.png differ diff --git a/fonts/TewiFont/2C69.png b/fonts/TewiFont/2C69.png new file mode 100644 index 000000000..b45f33bdd Binary files /dev/null and b/fonts/TewiFont/2C69.png differ diff --git a/fonts/TewiFont/2C6A.png b/fonts/TewiFont/2C6A.png new file mode 100644 index 000000000..fd6a2c7f8 Binary files /dev/null and b/fonts/TewiFont/2C6A.png differ diff --git a/fonts/TewiFont/2C6B.png b/fonts/TewiFont/2C6B.png new file mode 100644 index 000000000..133fff87e Binary files /dev/null and b/fonts/TewiFont/2C6B.png differ diff --git a/fonts/TewiFont/2C6C.png b/fonts/TewiFont/2C6C.png new file mode 100644 index 000000000..f10eef3b6 Binary files /dev/null and b/fonts/TewiFont/2C6C.png differ diff --git a/fonts/TewiFont/2C6D.png b/fonts/TewiFont/2C6D.png new file mode 100644 index 000000000..9e171ff4a Binary files /dev/null and b/fonts/TewiFont/2C6D.png differ diff --git a/fonts/TewiFont/2C6E.png b/fonts/TewiFont/2C6E.png new file mode 100644 index 000000000..b17525b08 Binary files /dev/null and b/fonts/TewiFont/2C6E.png differ diff --git a/fonts/TewiFont/2C6F.png b/fonts/TewiFont/2C6F.png new file mode 100644 index 000000000..fab8342e1 Binary files /dev/null and b/fonts/TewiFont/2C6F.png differ diff --git a/fonts/TewiFont/2C70.png b/fonts/TewiFont/2C70.png new file mode 100644 index 000000000..c3c48f7cd Binary files /dev/null and b/fonts/TewiFont/2C70.png differ diff --git a/fonts/TewiFont/2C71.png b/fonts/TewiFont/2C71.png new file mode 100644 index 000000000..f0d8980af Binary files /dev/null and b/fonts/TewiFont/2C71.png differ diff --git a/fonts/TewiFont/2C72.png b/fonts/TewiFont/2C72.png new file mode 100644 index 000000000..dd36ef10f Binary files /dev/null and b/fonts/TewiFont/2C72.png differ diff --git a/fonts/TewiFont/2C73.png b/fonts/TewiFont/2C73.png new file mode 100644 index 000000000..21f217f3d Binary files /dev/null and b/fonts/TewiFont/2C73.png differ diff --git a/fonts/TewiFont/2C74.png b/fonts/TewiFont/2C74.png new file mode 100644 index 000000000..cbb784bcf Binary files /dev/null and b/fonts/TewiFont/2C74.png differ diff --git a/fonts/TewiFont/2C75.png b/fonts/TewiFont/2C75.png new file mode 100644 index 000000000..2bb4eea99 Binary files /dev/null and b/fonts/TewiFont/2C75.png differ diff --git a/fonts/TewiFont/2C76.png b/fonts/TewiFont/2C76.png new file mode 100644 index 000000000..fec55a3a2 Binary files /dev/null and b/fonts/TewiFont/2C76.png differ diff --git a/fonts/TewiFont/2C77.png b/fonts/TewiFont/2C77.png new file mode 100644 index 000000000..cf08787ae Binary files /dev/null and b/fonts/TewiFont/2C77.png differ diff --git a/fonts/TewiFont/2C78.png b/fonts/TewiFont/2C78.png new file mode 100644 index 000000000..2f6072d83 Binary files /dev/null and b/fonts/TewiFont/2C78.png differ diff --git a/fonts/TewiFont/2C79.png b/fonts/TewiFont/2C79.png new file mode 100644 index 000000000..0074c7e36 Binary files /dev/null and b/fonts/TewiFont/2C79.png differ diff --git a/fonts/TewiFont/2C7A.png b/fonts/TewiFont/2C7A.png new file mode 100644 index 000000000..32609cfbc Binary files /dev/null and b/fonts/TewiFont/2C7A.png differ diff --git a/fonts/TewiFont/2C7B.png b/fonts/TewiFont/2C7B.png new file mode 100644 index 000000000..d8b97f4af Binary files /dev/null and b/fonts/TewiFont/2C7B.png differ diff --git a/fonts/TewiFont/2C7C.png b/fonts/TewiFont/2C7C.png new file mode 100644 index 000000000..17a2e269d Binary files /dev/null and b/fonts/TewiFont/2C7C.png differ diff --git a/fonts/TewiFont/2C7D.png b/fonts/TewiFont/2C7D.png new file mode 100644 index 000000000..906e7cc93 Binary files /dev/null and b/fonts/TewiFont/2C7D.png differ diff --git a/fonts/TewiFont/2C7E.png b/fonts/TewiFont/2C7E.png new file mode 100644 index 000000000..fbf836e1a Binary files /dev/null and b/fonts/TewiFont/2C7E.png differ diff --git a/fonts/TewiFont/2C7F.png b/fonts/TewiFont/2C7F.png new file mode 100644 index 000000000..d0f0acb31 Binary files /dev/null and b/fonts/TewiFont/2C7F.png differ diff --git a/fonts/TewiFont/2E00.png b/fonts/TewiFont/2E00.png new file mode 100644 index 000000000..cba3cd9bb Binary files /dev/null and b/fonts/TewiFont/2E00.png differ diff --git a/fonts/TewiFont/2E01.png b/fonts/TewiFont/2E01.png new file mode 100644 index 000000000..ca784aec8 Binary files /dev/null and b/fonts/TewiFont/2E01.png differ diff --git a/fonts/TewiFont/2E02.png b/fonts/TewiFont/2E02.png new file mode 100644 index 000000000..7e72e7df6 Binary files /dev/null and b/fonts/TewiFont/2E02.png differ diff --git a/fonts/TewiFont/2E03.png b/fonts/TewiFont/2E03.png new file mode 100644 index 000000000..56a4638c6 Binary files /dev/null and b/fonts/TewiFont/2E03.png differ diff --git a/fonts/TewiFont/2E04.png b/fonts/TewiFont/2E04.png new file mode 100644 index 000000000..8e8a9c7b5 Binary files /dev/null and b/fonts/TewiFont/2E04.png differ diff --git a/fonts/TewiFont/2E05.png b/fonts/TewiFont/2E05.png new file mode 100644 index 000000000..fe58c790d Binary files /dev/null and b/fonts/TewiFont/2E05.png differ diff --git a/fonts/TewiFont/2E06.png b/fonts/TewiFont/2E06.png new file mode 100644 index 000000000..b73fea2c7 Binary files /dev/null and b/fonts/TewiFont/2E06.png differ diff --git a/fonts/TewiFont/2E07.png b/fonts/TewiFont/2E07.png new file mode 100644 index 000000000..7f45c4b7b Binary files /dev/null and b/fonts/TewiFont/2E07.png differ diff --git a/fonts/TewiFont/2E08.png b/fonts/TewiFont/2E08.png new file mode 100644 index 000000000..a9b3f1e6e Binary files /dev/null and b/fonts/TewiFont/2E08.png differ diff --git a/fonts/TewiFont/2E09.png b/fonts/TewiFont/2E09.png new file mode 100644 index 000000000..7b4cb84f2 Binary files /dev/null and b/fonts/TewiFont/2E09.png differ diff --git a/fonts/TewiFont/2E0A.png b/fonts/TewiFont/2E0A.png new file mode 100644 index 000000000..514b8e625 Binary files /dev/null and b/fonts/TewiFont/2E0A.png differ diff --git a/fonts/TewiFont/2E0B.png b/fonts/TewiFont/2E0B.png new file mode 100644 index 000000000..34424e3c8 Binary files /dev/null and b/fonts/TewiFont/2E0B.png differ diff --git a/fonts/TewiFont/2E0C.png b/fonts/TewiFont/2E0C.png new file mode 100644 index 000000000..3f5cc3285 Binary files /dev/null and b/fonts/TewiFont/2E0C.png differ diff --git a/fonts/TewiFont/2E0D.png b/fonts/TewiFont/2E0D.png new file mode 100644 index 000000000..c29a30981 Binary files /dev/null and b/fonts/TewiFont/2E0D.png differ diff --git a/fonts/TewiFont/2E0F.png b/fonts/TewiFont/2E0F.png new file mode 100644 index 000000000..9546c29a7 Binary files /dev/null and b/fonts/TewiFont/2E0F.png differ diff --git a/fonts/TewiFont/2E10.png b/fonts/TewiFont/2E10.png new file mode 100644 index 000000000..e0b0ba11a Binary files /dev/null and b/fonts/TewiFont/2E10.png differ diff --git a/fonts/TewiFont/2E11.png b/fonts/TewiFont/2E11.png new file mode 100644 index 000000000..49485d07e Binary files /dev/null and b/fonts/TewiFont/2E11.png differ diff --git a/fonts/TewiFont/2E12.png b/fonts/TewiFont/2E12.png new file mode 100644 index 000000000..7c097242c Binary files /dev/null and b/fonts/TewiFont/2E12.png differ diff --git a/fonts/TewiFont/2E13.png b/fonts/TewiFont/2E13.png new file mode 100644 index 000000000..8258f73e5 Binary files /dev/null and b/fonts/TewiFont/2E13.png differ diff --git a/fonts/TewiFont/2E14.png b/fonts/TewiFont/2E14.png new file mode 100644 index 000000000..1a771057d Binary files /dev/null and b/fonts/TewiFont/2E14.png differ diff --git a/fonts/TewiFont/2E15.png b/fonts/TewiFont/2E15.png new file mode 100644 index 000000000..01507b4c1 Binary files /dev/null and b/fonts/TewiFont/2E15.png differ diff --git a/fonts/TewiFont/2E16.png b/fonts/TewiFont/2E16.png new file mode 100644 index 000000000..9b902dc9a Binary files /dev/null and b/fonts/TewiFont/2E16.png differ diff --git a/fonts/TewiFont/2E17.png b/fonts/TewiFont/2E17.png new file mode 100644 index 000000000..a1c208d4d Binary files /dev/null and b/fonts/TewiFont/2E17.png differ diff --git a/fonts/TewiFont/2E18.png b/fonts/TewiFont/2E18.png new file mode 100644 index 000000000..a665f740a Binary files /dev/null and b/fonts/TewiFont/2E18.png differ diff --git a/fonts/TewiFont/2E1A.png b/fonts/TewiFont/2E1A.png new file mode 100644 index 000000000..fd5561768 Binary files /dev/null and b/fonts/TewiFont/2E1A.png differ diff --git a/fonts/TewiFont/2E1B.png b/fonts/TewiFont/2E1B.png new file mode 100644 index 000000000..7c9fe7e7f Binary files /dev/null and b/fonts/TewiFont/2E1B.png differ diff --git a/fonts/TewiFont/2E1C.png b/fonts/TewiFont/2E1C.png new file mode 100644 index 000000000..f796f6a92 Binary files /dev/null and b/fonts/TewiFont/2E1C.png differ diff --git a/fonts/TewiFont/2E1D.png b/fonts/TewiFont/2E1D.png new file mode 100644 index 000000000..0ce1febba Binary files /dev/null and b/fonts/TewiFont/2E1D.png differ diff --git a/fonts/TewiFont/2E1E.png b/fonts/TewiFont/2E1E.png new file mode 100644 index 000000000..5840c2d96 Binary files /dev/null and b/fonts/TewiFont/2E1E.png differ diff --git a/fonts/TewiFont/2E1F.png b/fonts/TewiFont/2E1F.png new file mode 100644 index 000000000..0444d3783 Binary files /dev/null and b/fonts/TewiFont/2E1F.png differ diff --git a/fonts/TewiFont/2E20.png b/fonts/TewiFont/2E20.png new file mode 100644 index 000000000..ae5bf9011 Binary files /dev/null and b/fonts/TewiFont/2E20.png differ diff --git a/fonts/TewiFont/2E21.png b/fonts/TewiFont/2E21.png new file mode 100644 index 000000000..c0018f2e5 Binary files /dev/null and b/fonts/TewiFont/2E21.png differ diff --git a/fonts/TewiFont/2E22.png b/fonts/TewiFont/2E22.png new file mode 100644 index 000000000..5fa25e7bb Binary files /dev/null and b/fonts/TewiFont/2E22.png differ diff --git a/fonts/TewiFont/2E23.png b/fonts/TewiFont/2E23.png new file mode 100644 index 000000000..c0018f2e5 Binary files /dev/null and b/fonts/TewiFont/2E23.png differ diff --git a/fonts/TewiFont/2E24.png b/fonts/TewiFont/2E24.png new file mode 100644 index 000000000..b4caa6934 Binary files /dev/null and b/fonts/TewiFont/2E24.png differ diff --git a/fonts/TewiFont/2E25.png b/fonts/TewiFont/2E25.png new file mode 100644 index 000000000..d2c4e2ae1 Binary files /dev/null and b/fonts/TewiFont/2E25.png differ diff --git a/fonts/TewiFont/2E26.png b/fonts/TewiFont/2E26.png new file mode 100644 index 000000000..0a2bbc826 Binary files /dev/null and b/fonts/TewiFont/2E26.png differ diff --git a/fonts/TewiFont/2E27.png b/fonts/TewiFont/2E27.png new file mode 100644 index 000000000..78277eb46 Binary files /dev/null and b/fonts/TewiFont/2E27.png differ diff --git a/fonts/TewiFont/2E28.png b/fonts/TewiFont/2E28.png new file mode 100644 index 000000000..8826bfe0b Binary files /dev/null and b/fonts/TewiFont/2E28.png differ diff --git a/fonts/TewiFont/2E29.png b/fonts/TewiFont/2E29.png new file mode 100644 index 000000000..88e46f6e6 Binary files /dev/null and b/fonts/TewiFont/2E29.png differ diff --git a/fonts/TewiFont/2E2A.png b/fonts/TewiFont/2E2A.png new file mode 100644 index 000000000..ab1f2b30a Binary files /dev/null and b/fonts/TewiFont/2E2A.png differ diff --git a/fonts/TewiFont/2E2B.png b/fonts/TewiFont/2E2B.png new file mode 100644 index 000000000..6b6c4850c Binary files /dev/null and b/fonts/TewiFont/2E2B.png differ diff --git a/fonts/TewiFont/2E2C.png b/fonts/TewiFont/2E2C.png new file mode 100644 index 000000000..9a5257fef Binary files /dev/null and b/fonts/TewiFont/2E2C.png differ diff --git a/fonts/TewiFont/2E2D.png b/fonts/TewiFont/2E2D.png new file mode 100644 index 000000000..2217b7cd8 Binary files /dev/null and b/fonts/TewiFont/2E2D.png differ diff --git a/fonts/TewiFont/2E2E.png b/fonts/TewiFont/2E2E.png new file mode 100644 index 000000000..38d7cab59 Binary files /dev/null and b/fonts/TewiFont/2E2E.png differ diff --git a/fonts/TewiFont/2E2F.png b/fonts/TewiFont/2E2F.png new file mode 100644 index 000000000..5b25c99b5 Binary files /dev/null and b/fonts/TewiFont/2E2F.png differ diff --git a/fonts/TewiFont/2E30.png b/fonts/TewiFont/2E30.png new file mode 100644 index 000000000..ebbbfd5bb Binary files /dev/null and b/fonts/TewiFont/2E30.png differ diff --git a/fonts/TewiFont/2E31.png b/fonts/TewiFont/2E31.png new file mode 100644 index 000000000..a7b4983de Binary files /dev/null and b/fonts/TewiFont/2E31.png differ diff --git a/fonts/TewiFont/2E32.png b/fonts/TewiFont/2E32.png new file mode 100644 index 000000000..5f58b6572 Binary files /dev/null and b/fonts/TewiFont/2E32.png differ diff --git a/fonts/TewiFont/2E33.png b/fonts/TewiFont/2E33.png new file mode 100644 index 000000000..db0f2e61a Binary files /dev/null and b/fonts/TewiFont/2E33.png differ diff --git a/fonts/TewiFont/2E34.png b/fonts/TewiFont/2E34.png new file mode 100644 index 000000000..161094c98 Binary files /dev/null and b/fonts/TewiFont/2E34.png differ diff --git a/fonts/TewiFont/2E35.png b/fonts/TewiFont/2E35.png new file mode 100644 index 000000000..34cc82e7f Binary files /dev/null and b/fonts/TewiFont/2E35.png differ diff --git a/fonts/TewiFont/2E36.png b/fonts/TewiFont/2E36.png new file mode 100644 index 000000000..787a3704f Binary files /dev/null and b/fonts/TewiFont/2E36.png differ diff --git a/fonts/TewiFont/2E37.png b/fonts/TewiFont/2E37.png new file mode 100644 index 000000000..1486c132e Binary files /dev/null and b/fonts/TewiFont/2E37.png differ diff --git a/fonts/TewiFont/2E38.png b/fonts/TewiFont/2E38.png new file mode 100644 index 000000000..6b81a9a73 Binary files /dev/null and b/fonts/TewiFont/2E38.png differ diff --git a/fonts/TewiFont/2E39.png b/fonts/TewiFont/2E39.png new file mode 100644 index 000000000..25de8a76e Binary files /dev/null and b/fonts/TewiFont/2E39.png differ diff --git a/fonts/TewiFont/2E3A.png b/fonts/TewiFont/2E3A.png new file mode 100644 index 000000000..0f2f38870 Binary files /dev/null and b/fonts/TewiFont/2E3A.png differ diff --git a/fonts/TewiFont/2E3B.png b/fonts/TewiFont/2E3B.png new file mode 100644 index 000000000..8263a604a Binary files /dev/null and b/fonts/TewiFont/2E3B.png differ diff --git a/fonts/TewiFont/2E3C.png b/fonts/TewiFont/2E3C.png new file mode 100644 index 000000000..e5c228ff6 Binary files /dev/null and b/fonts/TewiFont/2E3C.png differ diff --git a/fonts/TewiFont/2E3D.png b/fonts/TewiFont/2E3D.png new file mode 100644 index 000000000..f85582e41 Binary files /dev/null and b/fonts/TewiFont/2E3D.png differ diff --git a/fonts/TewiFont/2E3E.png b/fonts/TewiFont/2E3E.png new file mode 100644 index 000000000..995e21faf Binary files /dev/null and b/fonts/TewiFont/2E3E.png differ diff --git a/fonts/TewiFont/2E3F.png b/fonts/TewiFont/2E3F.png new file mode 100644 index 000000000..f88d9702f Binary files /dev/null and b/fonts/TewiFont/2E3F.png differ diff --git a/fonts/TewiFont/2E40.png b/fonts/TewiFont/2E40.png new file mode 100644 index 000000000..668061799 Binary files /dev/null and b/fonts/TewiFont/2E40.png differ diff --git a/fonts/TewiFont/E0A0.png b/fonts/TewiFont/E0A0.png new file mode 100644 index 000000000..8aa4015ff Binary files /dev/null and b/fonts/TewiFont/E0A0.png differ diff --git a/fonts/TewiFont/E0A1.png b/fonts/TewiFont/E0A1.png new file mode 100644 index 000000000..a34f717e3 Binary files /dev/null and b/fonts/TewiFont/E0A1.png differ diff --git a/fonts/TewiFont/E0A2.png b/fonts/TewiFont/E0A2.png new file mode 100644 index 000000000..ca095fc48 Binary files /dev/null and b/fonts/TewiFont/E0A2.png differ diff --git a/fonts/TewiFont/E0A5.png b/fonts/TewiFont/E0A5.png new file mode 100644 index 000000000..af76cc1af Binary files /dev/null and b/fonts/TewiFont/E0A5.png differ diff --git a/fonts/TewiFont/E0A6.png b/fonts/TewiFont/E0A6.png new file mode 100644 index 000000000..fb92141c0 Binary files /dev/null and b/fonts/TewiFont/E0A6.png differ diff --git a/fonts/TewiFont/E0A7.png b/fonts/TewiFont/E0A7.png new file mode 100644 index 000000000..0edc1e9e0 Binary files /dev/null and b/fonts/TewiFont/E0A7.png differ diff --git a/fonts/TewiFont/E0A8.png b/fonts/TewiFont/E0A8.png new file mode 100644 index 000000000..0cea95fb1 Binary files /dev/null and b/fonts/TewiFont/E0A8.png differ diff --git a/fonts/TewiFont/E0A9.png b/fonts/TewiFont/E0A9.png new file mode 100644 index 000000000..350087d23 Binary files /dev/null and b/fonts/TewiFont/E0A9.png differ diff --git a/fonts/TewiFont/E0AA.png b/fonts/TewiFont/E0AA.png new file mode 100644 index 000000000..764258bbf Binary files /dev/null and b/fonts/TewiFont/E0AA.png differ diff --git a/fonts/TewiFont/E0AB.png b/fonts/TewiFont/E0AB.png new file mode 100644 index 000000000..ddbfc983d Binary files /dev/null and b/fonts/TewiFont/E0AB.png differ diff --git a/fonts/TewiFont/E0AC.png b/fonts/TewiFont/E0AC.png new file mode 100644 index 000000000..7c9434521 Binary files /dev/null and b/fonts/TewiFont/E0AC.png differ diff --git a/fonts/TewiFont/E0B0.png b/fonts/TewiFont/E0B0.png new file mode 100644 index 000000000..34cef1de2 Binary files /dev/null and b/fonts/TewiFont/E0B0.png differ diff --git a/fonts/TewiFont/E0B1.png b/fonts/TewiFont/E0B1.png new file mode 100644 index 000000000..36b80a1f0 Binary files /dev/null and b/fonts/TewiFont/E0B1.png differ diff --git a/fonts/TewiFont/E0B2.png b/fonts/TewiFont/E0B2.png new file mode 100644 index 000000000..4703a585a Binary files /dev/null and b/fonts/TewiFont/E0B2.png differ diff --git a/fonts/TewiFont/E0B3.png b/fonts/TewiFont/E0B3.png new file mode 100644 index 000000000..a4c438d69 Binary files /dev/null and b/fonts/TewiFont/E0B3.png differ diff --git a/fonts/TewiFont/E0B5.png b/fonts/TewiFont/E0B5.png new file mode 100644 index 000000000..931e08f9f Binary files /dev/null and b/fonts/TewiFont/E0B5.png differ diff --git a/fonts/TewiFont/E0B6.png b/fonts/TewiFont/E0B6.png new file mode 100644 index 000000000..e40dae3c5 Binary files /dev/null and b/fonts/TewiFont/E0B6.png differ diff --git a/fonts/TewiFont/E0B7.png b/fonts/TewiFont/E0B7.png new file mode 100644 index 000000000..f4f3394c3 Binary files /dev/null and b/fonts/TewiFont/E0B7.png differ diff --git a/fonts/TewiFont/E0B8.png b/fonts/TewiFont/E0B8.png new file mode 100644 index 000000000..02b81d2dd Binary files /dev/null and b/fonts/TewiFont/E0B8.png differ diff --git a/fonts/TewiFont/E0C0.png b/fonts/TewiFont/E0C0.png new file mode 100644 index 000000000..e84998f36 Binary files /dev/null and b/fonts/TewiFont/E0C0.png differ diff --git a/fonts/TewiFont/E0C1.png b/fonts/TewiFont/E0C1.png new file mode 100644 index 000000000..f77b6a433 Binary files /dev/null and b/fonts/TewiFont/E0C1.png differ diff --git a/fonts/TewiFont/E0C2.png b/fonts/TewiFont/E0C2.png new file mode 100644 index 000000000..94df4cf7f Binary files /dev/null and b/fonts/TewiFont/E0C2.png differ diff --git a/fonts/TewiFont/E0C3.png b/fonts/TewiFont/E0C3.png new file mode 100644 index 000000000..65aea5d96 Binary files /dev/null and b/fonts/TewiFont/E0C3.png differ diff --git a/fonts/TewiFont/E0C4.png b/fonts/TewiFont/E0C4.png new file mode 100644 index 000000000..3b9b3ebab Binary files /dev/null and b/fonts/TewiFont/E0C4.png differ diff --git a/fonts/TewiFont/E0C5.png b/fonts/TewiFont/E0C5.png new file mode 100644 index 000000000..90f55b786 Binary files /dev/null and b/fonts/TewiFont/E0C5.png differ diff --git a/fonts/TewiFont/E0C6.png b/fonts/TewiFont/E0C6.png new file mode 100644 index 000000000..c57efb463 Binary files /dev/null and b/fonts/TewiFont/E0C6.png differ diff --git a/fonts/TewiFont/E0C7.png b/fonts/TewiFont/E0C7.png new file mode 100644 index 000000000..d03522a78 Binary files /dev/null and b/fonts/TewiFont/E0C7.png differ diff --git a/fonts/TewiFont/FB01.png b/fonts/TewiFont/FB01.png new file mode 100644 index 000000000..edf5e53ec Binary files /dev/null and b/fonts/TewiFont/FB01.png differ diff --git a/fonts/TewiFont/FB02.png b/fonts/TewiFont/FB02.png new file mode 100644 index 000000000..3c7aa3ca4 Binary files /dev/null and b/fonts/TewiFont/FB02.png differ diff --git a/fonts/TewiFont/FF01.png b/fonts/TewiFont/FF01.png new file mode 100644 index 000000000..d7be472f4 Binary files /dev/null and b/fonts/TewiFont/FF01.png differ diff --git a/fonts/TewiFont/FF02.png b/fonts/TewiFont/FF02.png new file mode 100644 index 000000000..5390a8618 Binary files /dev/null and b/fonts/TewiFont/FF02.png differ diff --git a/fonts/TewiFont/FF03.png b/fonts/TewiFont/FF03.png new file mode 100644 index 000000000..1cda759f2 Binary files /dev/null and b/fonts/TewiFont/FF03.png differ diff --git a/fonts/TewiFont/FF04.png b/fonts/TewiFont/FF04.png new file mode 100644 index 000000000..23c9a3015 Binary files /dev/null and b/fonts/TewiFont/FF04.png differ diff --git a/fonts/TewiFont/FF05.png b/fonts/TewiFont/FF05.png new file mode 100644 index 000000000..b38e53fcd Binary files /dev/null and b/fonts/TewiFont/FF05.png differ diff --git a/fonts/TewiFont/FF06.png b/fonts/TewiFont/FF06.png new file mode 100644 index 000000000..f36417ef0 Binary files /dev/null and b/fonts/TewiFont/FF06.png differ diff --git a/fonts/TewiFont/FF07.png b/fonts/TewiFont/FF07.png new file mode 100644 index 000000000..9fc436e3c Binary files /dev/null and b/fonts/TewiFont/FF07.png differ diff --git a/fonts/TewiFont/FF08.png b/fonts/TewiFont/FF08.png new file mode 100644 index 000000000..d096d9179 Binary files /dev/null and b/fonts/TewiFont/FF08.png differ diff --git a/fonts/TewiFont/FF09.png b/fonts/TewiFont/FF09.png new file mode 100644 index 000000000..018744a8d Binary files /dev/null and b/fonts/TewiFont/FF09.png differ diff --git a/fonts/TewiFont/FF0A.png b/fonts/TewiFont/FF0A.png new file mode 100644 index 000000000..c9912b9b0 Binary files /dev/null and b/fonts/TewiFont/FF0A.png differ diff --git a/fonts/TewiFont/FF0B.png b/fonts/TewiFont/FF0B.png new file mode 100644 index 000000000..ee6100faa Binary files /dev/null and b/fonts/TewiFont/FF0B.png differ diff --git a/fonts/TewiFont/FF0C.png b/fonts/TewiFont/FF0C.png new file mode 100644 index 000000000..494aa55d5 Binary files /dev/null and b/fonts/TewiFont/FF0C.png differ diff --git a/fonts/TewiFont/FF0D.png b/fonts/TewiFont/FF0D.png new file mode 100644 index 000000000..a3e0874b0 Binary files /dev/null and b/fonts/TewiFont/FF0D.png differ diff --git a/fonts/TewiFont/FF0E.png b/fonts/TewiFont/FF0E.png new file mode 100644 index 000000000..fef6483ea Binary files /dev/null and b/fonts/TewiFont/FF0E.png differ diff --git a/fonts/TewiFont/FF0F.png b/fonts/TewiFont/FF0F.png new file mode 100644 index 000000000..2e8fec8b2 Binary files /dev/null and b/fonts/TewiFont/FF0F.png differ diff --git a/fonts/TewiFont/FF10.png b/fonts/TewiFont/FF10.png new file mode 100644 index 000000000..056a6e96b Binary files /dev/null and b/fonts/TewiFont/FF10.png differ diff --git a/fonts/TewiFont/FF11.png b/fonts/TewiFont/FF11.png new file mode 100644 index 000000000..50f3b9ffc Binary files /dev/null and b/fonts/TewiFont/FF11.png differ diff --git a/fonts/TewiFont/FF12.png b/fonts/TewiFont/FF12.png new file mode 100644 index 000000000..736598497 Binary files /dev/null and b/fonts/TewiFont/FF12.png differ diff --git a/fonts/TewiFont/FF13.png b/fonts/TewiFont/FF13.png new file mode 100644 index 000000000..ddfc0b32d Binary files /dev/null and b/fonts/TewiFont/FF13.png differ diff --git a/fonts/TewiFont/FF14.png b/fonts/TewiFont/FF14.png new file mode 100644 index 000000000..08ba8dc4d Binary files /dev/null and b/fonts/TewiFont/FF14.png differ diff --git a/fonts/TewiFont/FF15.png b/fonts/TewiFont/FF15.png new file mode 100644 index 000000000..295daa9bb Binary files /dev/null and b/fonts/TewiFont/FF15.png differ diff --git a/fonts/TewiFont/FF16.png b/fonts/TewiFont/FF16.png new file mode 100644 index 000000000..02c88ee02 Binary files /dev/null and b/fonts/TewiFont/FF16.png differ diff --git a/fonts/TewiFont/FF17.png b/fonts/TewiFont/FF17.png new file mode 100644 index 000000000..c6504a5a0 Binary files /dev/null and b/fonts/TewiFont/FF17.png differ diff --git a/fonts/TewiFont/FF18.png b/fonts/TewiFont/FF18.png new file mode 100644 index 000000000..c1b8f17ef Binary files /dev/null and b/fonts/TewiFont/FF18.png differ diff --git a/fonts/TewiFont/FF19.png b/fonts/TewiFont/FF19.png new file mode 100644 index 000000000..14a6d6710 Binary files /dev/null and b/fonts/TewiFont/FF19.png differ diff --git a/fonts/TewiFont/FF1A.png b/fonts/TewiFont/FF1A.png new file mode 100644 index 000000000..226b3baff Binary files /dev/null and b/fonts/TewiFont/FF1A.png differ diff --git a/fonts/TewiFont/FF1B.png b/fonts/TewiFont/FF1B.png new file mode 100644 index 000000000..3b06e1ec7 Binary files /dev/null and b/fonts/TewiFont/FF1B.png differ diff --git a/fonts/TewiFont/FF1C.png b/fonts/TewiFont/FF1C.png new file mode 100644 index 000000000..992279858 Binary files /dev/null and b/fonts/TewiFont/FF1C.png differ diff --git a/fonts/TewiFont/FF1D.png b/fonts/TewiFont/FF1D.png new file mode 100644 index 000000000..0400370d0 Binary files /dev/null and b/fonts/TewiFont/FF1D.png differ diff --git a/fonts/TewiFont/FF1E.png b/fonts/TewiFont/FF1E.png new file mode 100644 index 000000000..7dd594a73 Binary files /dev/null and b/fonts/TewiFont/FF1E.png differ diff --git a/fonts/TewiFont/FF1F.png b/fonts/TewiFont/FF1F.png new file mode 100644 index 000000000..ea4ec51e4 Binary files /dev/null and b/fonts/TewiFont/FF1F.png differ diff --git a/fonts/TewiFont/FF20.png b/fonts/TewiFont/FF20.png new file mode 100644 index 000000000..69f9be2df Binary files /dev/null and b/fonts/TewiFont/FF20.png differ diff --git a/fonts/TewiFont/FF21.png b/fonts/TewiFont/FF21.png new file mode 100644 index 000000000..71a7ddf18 Binary files /dev/null and b/fonts/TewiFont/FF21.png differ diff --git a/fonts/TewiFont/FF22.png b/fonts/TewiFont/FF22.png new file mode 100644 index 000000000..ae3e19522 Binary files /dev/null and b/fonts/TewiFont/FF22.png differ diff --git a/fonts/TewiFont/FF23.png b/fonts/TewiFont/FF23.png new file mode 100644 index 000000000..dfef1d568 Binary files /dev/null and b/fonts/TewiFont/FF23.png differ diff --git a/fonts/TewiFont/FF24.png b/fonts/TewiFont/FF24.png new file mode 100644 index 000000000..700c61d3a Binary files /dev/null and b/fonts/TewiFont/FF24.png differ diff --git a/fonts/TewiFont/FF25.png b/fonts/TewiFont/FF25.png new file mode 100644 index 000000000..ff5afb7d3 Binary files /dev/null and b/fonts/TewiFont/FF25.png differ diff --git a/fonts/TewiFont/FF26.png b/fonts/TewiFont/FF26.png new file mode 100644 index 000000000..1247f7a82 Binary files /dev/null and b/fonts/TewiFont/FF26.png differ diff --git a/fonts/TewiFont/FF27.png b/fonts/TewiFont/FF27.png new file mode 100644 index 000000000..037be6a99 Binary files /dev/null and b/fonts/TewiFont/FF27.png differ diff --git a/fonts/TewiFont/FF28.png b/fonts/TewiFont/FF28.png new file mode 100644 index 000000000..e4a824192 Binary files /dev/null and b/fonts/TewiFont/FF28.png differ diff --git a/fonts/TewiFont/FF29.png b/fonts/TewiFont/FF29.png new file mode 100644 index 000000000..661b9a47c Binary files /dev/null and b/fonts/TewiFont/FF29.png differ diff --git a/fonts/TewiFont/FF2A.png b/fonts/TewiFont/FF2A.png new file mode 100644 index 000000000..0de8d5f83 Binary files /dev/null and b/fonts/TewiFont/FF2A.png differ diff --git a/fonts/TewiFont/FF2B.png b/fonts/TewiFont/FF2B.png new file mode 100644 index 000000000..610b0bd93 Binary files /dev/null and b/fonts/TewiFont/FF2B.png differ diff --git a/fonts/TewiFont/FF2C.png b/fonts/TewiFont/FF2C.png new file mode 100644 index 000000000..97a86d69b Binary files /dev/null and b/fonts/TewiFont/FF2C.png differ diff --git a/fonts/TewiFont/FF2D.png b/fonts/TewiFont/FF2D.png new file mode 100644 index 000000000..1b9445890 Binary files /dev/null and b/fonts/TewiFont/FF2D.png differ diff --git a/fonts/TewiFont/FF2E.png b/fonts/TewiFont/FF2E.png new file mode 100644 index 000000000..bede27ff0 Binary files /dev/null and b/fonts/TewiFont/FF2E.png differ diff --git a/fonts/TewiFont/FF2F.png b/fonts/TewiFont/FF2F.png new file mode 100644 index 000000000..b318de6c5 Binary files /dev/null and b/fonts/TewiFont/FF2F.png differ diff --git a/fonts/TewiFont/FF30.png b/fonts/TewiFont/FF30.png new file mode 100644 index 000000000..9a87c45ee Binary files /dev/null and b/fonts/TewiFont/FF30.png differ diff --git a/fonts/TewiFont/FF31.png b/fonts/TewiFont/FF31.png new file mode 100644 index 000000000..cbb066dc9 Binary files /dev/null and b/fonts/TewiFont/FF31.png differ diff --git a/fonts/TewiFont/FF32.png b/fonts/TewiFont/FF32.png new file mode 100644 index 000000000..ca4cc7882 Binary files /dev/null and b/fonts/TewiFont/FF32.png differ diff --git a/fonts/TewiFont/FF33.png b/fonts/TewiFont/FF33.png new file mode 100644 index 000000000..b7736f806 Binary files /dev/null and b/fonts/TewiFont/FF33.png differ diff --git a/fonts/TewiFont/FF34.png b/fonts/TewiFont/FF34.png new file mode 100644 index 000000000..5f183459b Binary files /dev/null and b/fonts/TewiFont/FF34.png differ diff --git a/fonts/TewiFont/FF35.png b/fonts/TewiFont/FF35.png new file mode 100644 index 000000000..22dadb35c Binary files /dev/null and b/fonts/TewiFont/FF35.png differ diff --git a/fonts/TewiFont/FF36.png b/fonts/TewiFont/FF36.png new file mode 100644 index 000000000..66d042423 Binary files /dev/null and b/fonts/TewiFont/FF36.png differ diff --git a/fonts/TewiFont/FF37.png b/fonts/TewiFont/FF37.png new file mode 100644 index 000000000..e3273caf9 Binary files /dev/null and b/fonts/TewiFont/FF37.png differ diff --git a/fonts/TewiFont/FF38.png b/fonts/TewiFont/FF38.png new file mode 100644 index 000000000..1bde4a7c5 Binary files /dev/null and b/fonts/TewiFont/FF38.png differ diff --git a/fonts/TewiFont/FF39.png b/fonts/TewiFont/FF39.png new file mode 100644 index 000000000..781d5a252 Binary files /dev/null and b/fonts/TewiFont/FF39.png differ diff --git a/fonts/TewiFont/FF3A.png b/fonts/TewiFont/FF3A.png new file mode 100644 index 000000000..c164bd199 Binary files /dev/null and b/fonts/TewiFont/FF3A.png differ diff --git a/fonts/TewiFont/FF3B.png b/fonts/TewiFont/FF3B.png new file mode 100644 index 000000000..658c8c99d Binary files /dev/null and b/fonts/TewiFont/FF3B.png differ diff --git a/fonts/TewiFont/FF3C.png b/fonts/TewiFont/FF3C.png new file mode 100644 index 000000000..7cedc11f6 Binary files /dev/null and b/fonts/TewiFont/FF3C.png differ diff --git a/fonts/TewiFont/FF3D.png b/fonts/TewiFont/FF3D.png new file mode 100644 index 000000000..c0f70f44b Binary files /dev/null and b/fonts/TewiFont/FF3D.png differ diff --git a/fonts/TewiFont/FF3E.png b/fonts/TewiFont/FF3E.png new file mode 100644 index 000000000..5468de516 Binary files /dev/null and b/fonts/TewiFont/FF3E.png differ diff --git a/fonts/TewiFont/FF3F.png b/fonts/TewiFont/FF3F.png new file mode 100644 index 000000000..2ff8ab152 Binary files /dev/null and b/fonts/TewiFont/FF3F.png differ diff --git a/fonts/TewiFont/FF40.png b/fonts/TewiFont/FF40.png new file mode 100644 index 000000000..fd8875005 Binary files /dev/null and b/fonts/TewiFont/FF40.png differ diff --git a/fonts/TewiFont/FF41.png b/fonts/TewiFont/FF41.png new file mode 100644 index 000000000..0548ce363 Binary files /dev/null and b/fonts/TewiFont/FF41.png differ diff --git a/fonts/TewiFont/FF42.png b/fonts/TewiFont/FF42.png new file mode 100644 index 000000000..bfcd15ab9 Binary files /dev/null and b/fonts/TewiFont/FF42.png differ diff --git a/fonts/TewiFont/FF43.png b/fonts/TewiFont/FF43.png new file mode 100644 index 000000000..43770ff81 Binary files /dev/null and b/fonts/TewiFont/FF43.png differ diff --git a/fonts/TewiFont/FF44.png b/fonts/TewiFont/FF44.png new file mode 100644 index 000000000..973c4b58c Binary files /dev/null and b/fonts/TewiFont/FF44.png differ diff --git a/fonts/TewiFont/FF45.png b/fonts/TewiFont/FF45.png new file mode 100644 index 000000000..4a1445287 Binary files /dev/null and b/fonts/TewiFont/FF45.png differ diff --git a/fonts/TewiFont/FF46.png b/fonts/TewiFont/FF46.png new file mode 100644 index 000000000..6d14107e5 Binary files /dev/null and b/fonts/TewiFont/FF46.png differ diff --git a/fonts/TewiFont/FF47.png b/fonts/TewiFont/FF47.png new file mode 100644 index 000000000..ddb780b9d Binary files /dev/null and b/fonts/TewiFont/FF47.png differ diff --git a/fonts/TewiFont/FF48.png b/fonts/TewiFont/FF48.png new file mode 100644 index 000000000..a6ac17d9c Binary files /dev/null and b/fonts/TewiFont/FF48.png differ diff --git a/fonts/TewiFont/FF49.png b/fonts/TewiFont/FF49.png new file mode 100644 index 000000000..8bbacb6aa Binary files /dev/null and b/fonts/TewiFont/FF49.png differ diff --git a/fonts/TewiFont/FF4A.png b/fonts/TewiFont/FF4A.png new file mode 100644 index 000000000..fcf55b36b Binary files /dev/null and b/fonts/TewiFont/FF4A.png differ diff --git a/fonts/TewiFont/FF4B.png b/fonts/TewiFont/FF4B.png new file mode 100644 index 000000000..dbd66cf46 Binary files /dev/null and b/fonts/TewiFont/FF4B.png differ diff --git a/fonts/TewiFont/FF4C.png b/fonts/TewiFont/FF4C.png new file mode 100644 index 000000000..661b9a47c Binary files /dev/null and b/fonts/TewiFont/FF4C.png differ diff --git a/fonts/TewiFont/FF4D.png b/fonts/TewiFont/FF4D.png new file mode 100644 index 000000000..1e4682f1f Binary files /dev/null and b/fonts/TewiFont/FF4D.png differ diff --git a/fonts/TewiFont/FF4E.png b/fonts/TewiFont/FF4E.png new file mode 100644 index 000000000..f4c3a0264 Binary files /dev/null and b/fonts/TewiFont/FF4E.png differ diff --git a/fonts/TewiFont/FF4F.png b/fonts/TewiFont/FF4F.png new file mode 100644 index 000000000..b6e7146b0 Binary files /dev/null and b/fonts/TewiFont/FF4F.png differ diff --git a/fonts/TewiFont/FF50.png b/fonts/TewiFont/FF50.png new file mode 100644 index 000000000..d356a0c13 Binary files /dev/null and b/fonts/TewiFont/FF50.png differ diff --git a/fonts/TewiFont/FF51.png b/fonts/TewiFont/FF51.png new file mode 100644 index 000000000..cf25da5a9 Binary files /dev/null and b/fonts/TewiFont/FF51.png differ diff --git a/fonts/TewiFont/FF52.png b/fonts/TewiFont/FF52.png new file mode 100644 index 000000000..f5d5a2c95 Binary files /dev/null and b/fonts/TewiFont/FF52.png differ diff --git a/fonts/TewiFont/FF53.png b/fonts/TewiFont/FF53.png new file mode 100644 index 000000000..d723f7ff2 Binary files /dev/null and b/fonts/TewiFont/FF53.png differ diff --git a/fonts/TewiFont/FF54.png b/fonts/TewiFont/FF54.png new file mode 100644 index 000000000..cf4301ecb Binary files /dev/null and b/fonts/TewiFont/FF54.png differ diff --git a/fonts/TewiFont/FF55.png b/fonts/TewiFont/FF55.png new file mode 100644 index 000000000..6966e6b41 Binary files /dev/null and b/fonts/TewiFont/FF55.png differ diff --git a/fonts/TewiFont/FF56.png b/fonts/TewiFont/FF56.png new file mode 100644 index 000000000..a25437778 Binary files /dev/null and b/fonts/TewiFont/FF56.png differ diff --git a/fonts/TewiFont/FF57.png b/fonts/TewiFont/FF57.png new file mode 100644 index 000000000..3fa11d18e Binary files /dev/null and b/fonts/TewiFont/FF57.png differ diff --git a/fonts/TewiFont/FF58.png b/fonts/TewiFont/FF58.png new file mode 100644 index 000000000..51935f88d Binary files /dev/null and b/fonts/TewiFont/FF58.png differ diff --git a/fonts/TewiFont/FF59.png b/fonts/TewiFont/FF59.png new file mode 100644 index 000000000..9559eaaf5 Binary files /dev/null and b/fonts/TewiFont/FF59.png differ diff --git a/fonts/TewiFont/FF5A.png b/fonts/TewiFont/FF5A.png new file mode 100644 index 000000000..19e93012d Binary files /dev/null and b/fonts/TewiFont/FF5A.png differ diff --git a/fonts/TewiFont/FF5B.png b/fonts/TewiFont/FF5B.png new file mode 100644 index 000000000..313c6be4e Binary files /dev/null and b/fonts/TewiFont/FF5B.png differ diff --git a/fonts/TewiFont/FF5C.png b/fonts/TewiFont/FF5C.png new file mode 100644 index 000000000..77e241750 Binary files /dev/null and b/fonts/TewiFont/FF5C.png differ diff --git a/fonts/TewiFont/FF5D.png b/fonts/TewiFont/FF5D.png new file mode 100644 index 000000000..ea8684ae1 Binary files /dev/null and b/fonts/TewiFont/FF5D.png differ diff --git a/fonts/TewiFont/FFE3.png b/fonts/TewiFont/FFE3.png new file mode 100644 index 000000000..b40b33f97 Binary files /dev/null and b/fonts/TewiFont/FFE3.png differ diff --git a/fonts/TewiFont/FFE5.png b/fonts/TewiFont/FFE5.png new file mode 100644 index 000000000..af2ee3b40 Binary files /dev/null and b/fonts/TewiFont/FFE5.png differ diff --git a/fonts/TewiFont/FFFD.png b/fonts/TewiFont/FFFD.png new file mode 100644 index 000000000..74431629e Binary files /dev/null and b/fonts/TewiFont/FFFD.png differ diff --git a/fonts/TewiFont/LICENSE b/fonts/TewiFont/LICENSE new file mode 100644 index 000000000..beff238eb --- /dev/null +++ b/fonts/TewiFont/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2017 lucy + +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. diff --git a/fonts/TewiFont/font.inf b/fonts/TewiFont/font.inf new file mode 100644 index 000000000..323d78643 --- /dev/null +++ b/fonts/TewiFont/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 7 +Kerning -1 +FontHeight 13 diff --git a/fonts/TewiFontOutline/0021.png b/fonts/TewiFontOutline/0021.png new file mode 100644 index 000000000..4756d44a1 Binary files /dev/null and b/fonts/TewiFontOutline/0021.png differ diff --git a/fonts/TewiFontOutline/0022.png b/fonts/TewiFontOutline/0022.png new file mode 100644 index 000000000..464b17efe Binary files /dev/null and b/fonts/TewiFontOutline/0022.png differ diff --git a/fonts/TewiFontOutline/0023.png b/fonts/TewiFontOutline/0023.png new file mode 100644 index 000000000..367d0651f Binary files /dev/null and b/fonts/TewiFontOutline/0023.png differ diff --git a/fonts/TewiFontOutline/0024.png b/fonts/TewiFontOutline/0024.png new file mode 100644 index 000000000..b964776b6 Binary files /dev/null and b/fonts/TewiFontOutline/0024.png differ diff --git a/fonts/TewiFontOutline/0025.png b/fonts/TewiFontOutline/0025.png new file mode 100644 index 000000000..92189c0fd Binary files /dev/null and b/fonts/TewiFontOutline/0025.png differ diff --git a/fonts/TewiFontOutline/0026.png b/fonts/TewiFontOutline/0026.png new file mode 100644 index 000000000..49aeda709 Binary files /dev/null and b/fonts/TewiFontOutline/0026.png differ diff --git a/fonts/TewiFontOutline/0027.png b/fonts/TewiFontOutline/0027.png new file mode 100644 index 000000000..e10f030ed Binary files /dev/null and b/fonts/TewiFontOutline/0027.png differ diff --git a/fonts/TewiFontOutline/0028.png b/fonts/TewiFontOutline/0028.png new file mode 100644 index 000000000..82d811429 Binary files /dev/null and b/fonts/TewiFontOutline/0028.png differ diff --git a/fonts/TewiFontOutline/0029.png b/fonts/TewiFontOutline/0029.png new file mode 100644 index 000000000..42dd346e6 Binary files /dev/null and b/fonts/TewiFontOutline/0029.png differ diff --git a/fonts/TewiFontOutline/002A.png b/fonts/TewiFontOutline/002A.png new file mode 100644 index 000000000..2a49ce070 Binary files /dev/null and b/fonts/TewiFontOutline/002A.png differ diff --git a/fonts/TewiFontOutline/002B.png b/fonts/TewiFontOutline/002B.png new file mode 100644 index 000000000..52975efa8 Binary files /dev/null and b/fonts/TewiFontOutline/002B.png differ diff --git a/fonts/TewiFontOutline/002C.png b/fonts/TewiFontOutline/002C.png new file mode 100644 index 000000000..531bb4ff6 Binary files /dev/null and b/fonts/TewiFontOutline/002C.png differ diff --git a/fonts/TewiFontOutline/002D.png b/fonts/TewiFontOutline/002D.png new file mode 100644 index 000000000..2c0d6328c Binary files /dev/null and b/fonts/TewiFontOutline/002D.png differ diff --git a/fonts/TewiFontOutline/002E.png b/fonts/TewiFontOutline/002E.png new file mode 100644 index 000000000..d3e673a8f Binary files /dev/null and b/fonts/TewiFontOutline/002E.png differ diff --git a/fonts/TewiFontOutline/002F.png b/fonts/TewiFontOutline/002F.png new file mode 100644 index 000000000..12e3d4a56 Binary files /dev/null and b/fonts/TewiFontOutline/002F.png differ diff --git a/fonts/TewiFontOutline/0030.png b/fonts/TewiFontOutline/0030.png new file mode 100644 index 000000000..e5c6477cb Binary files /dev/null and b/fonts/TewiFontOutline/0030.png differ diff --git a/fonts/TewiFontOutline/0031.png b/fonts/TewiFontOutline/0031.png new file mode 100644 index 000000000..813d67c3d Binary files /dev/null and b/fonts/TewiFontOutline/0031.png differ diff --git a/fonts/TewiFontOutline/0032.png b/fonts/TewiFontOutline/0032.png new file mode 100644 index 000000000..13d670a33 Binary files /dev/null and b/fonts/TewiFontOutline/0032.png differ diff --git a/fonts/TewiFontOutline/0033.png b/fonts/TewiFontOutline/0033.png new file mode 100644 index 000000000..17983f3a0 Binary files /dev/null and b/fonts/TewiFontOutline/0033.png differ diff --git a/fonts/TewiFontOutline/0034.png b/fonts/TewiFontOutline/0034.png new file mode 100644 index 000000000..0fd517113 Binary files /dev/null and b/fonts/TewiFontOutline/0034.png differ diff --git a/fonts/TewiFontOutline/0035.png b/fonts/TewiFontOutline/0035.png new file mode 100644 index 000000000..8af64bace Binary files /dev/null and b/fonts/TewiFontOutline/0035.png differ diff --git a/fonts/TewiFontOutline/0036.png b/fonts/TewiFontOutline/0036.png new file mode 100644 index 000000000..197eaeda0 Binary files /dev/null and b/fonts/TewiFontOutline/0036.png differ diff --git a/fonts/TewiFontOutline/0037.png b/fonts/TewiFontOutline/0037.png new file mode 100644 index 000000000..c98ccae40 Binary files /dev/null and b/fonts/TewiFontOutline/0037.png differ diff --git a/fonts/TewiFontOutline/0038.png b/fonts/TewiFontOutline/0038.png new file mode 100644 index 000000000..4c294ac3b Binary files /dev/null and b/fonts/TewiFontOutline/0038.png differ diff --git a/fonts/TewiFontOutline/0039.png b/fonts/TewiFontOutline/0039.png new file mode 100644 index 000000000..cbab44fce Binary files /dev/null and b/fonts/TewiFontOutline/0039.png differ diff --git a/fonts/TewiFontOutline/003A.png b/fonts/TewiFontOutline/003A.png new file mode 100644 index 000000000..2a5b4fafb Binary files /dev/null and b/fonts/TewiFontOutline/003A.png differ diff --git a/fonts/TewiFontOutline/003B.png b/fonts/TewiFontOutline/003B.png new file mode 100644 index 000000000..b712921f5 Binary files /dev/null and b/fonts/TewiFontOutline/003B.png differ diff --git a/fonts/TewiFontOutline/003C.png b/fonts/TewiFontOutline/003C.png new file mode 100644 index 000000000..942eb441b Binary files /dev/null and b/fonts/TewiFontOutline/003C.png differ diff --git a/fonts/TewiFontOutline/003D.png b/fonts/TewiFontOutline/003D.png new file mode 100644 index 000000000..69de34d1e Binary files /dev/null and b/fonts/TewiFontOutline/003D.png differ diff --git a/fonts/TewiFontOutline/003E.png b/fonts/TewiFontOutline/003E.png new file mode 100644 index 000000000..7b3942b54 Binary files /dev/null and b/fonts/TewiFontOutline/003E.png differ diff --git a/fonts/TewiFontOutline/003F.png b/fonts/TewiFontOutline/003F.png new file mode 100644 index 000000000..05d9792fd Binary files /dev/null and b/fonts/TewiFontOutline/003F.png differ diff --git a/fonts/TewiFontOutline/0040.png b/fonts/TewiFontOutline/0040.png new file mode 100644 index 000000000..c08d68aed Binary files /dev/null and b/fonts/TewiFontOutline/0040.png differ diff --git a/fonts/TewiFontOutline/0041.png b/fonts/TewiFontOutline/0041.png new file mode 100644 index 000000000..ca21676fc Binary files /dev/null and b/fonts/TewiFontOutline/0041.png differ diff --git a/fonts/TewiFontOutline/0042.png b/fonts/TewiFontOutline/0042.png new file mode 100644 index 000000000..48b12c726 Binary files /dev/null and b/fonts/TewiFontOutline/0042.png differ diff --git a/fonts/TewiFontOutline/0043.png b/fonts/TewiFontOutline/0043.png new file mode 100644 index 000000000..997e5e8e2 Binary files /dev/null and b/fonts/TewiFontOutline/0043.png differ diff --git a/fonts/TewiFontOutline/0044.png b/fonts/TewiFontOutline/0044.png new file mode 100644 index 000000000..2d9d5de38 Binary files /dev/null and b/fonts/TewiFontOutline/0044.png differ diff --git a/fonts/TewiFontOutline/0045.png b/fonts/TewiFontOutline/0045.png new file mode 100644 index 000000000..877ede72b Binary files /dev/null and b/fonts/TewiFontOutline/0045.png differ diff --git a/fonts/TewiFontOutline/0046.png b/fonts/TewiFontOutline/0046.png new file mode 100644 index 000000000..f82cfed45 Binary files /dev/null and b/fonts/TewiFontOutline/0046.png differ diff --git a/fonts/TewiFontOutline/0047.png b/fonts/TewiFontOutline/0047.png new file mode 100644 index 000000000..89ae2b6e1 Binary files /dev/null and b/fonts/TewiFontOutline/0047.png differ diff --git a/fonts/TewiFontOutline/0048.png b/fonts/TewiFontOutline/0048.png new file mode 100644 index 000000000..e567bbd3a Binary files /dev/null and b/fonts/TewiFontOutline/0048.png differ diff --git a/fonts/TewiFontOutline/0049.png b/fonts/TewiFontOutline/0049.png new file mode 100644 index 000000000..d7c93ca79 Binary files /dev/null and b/fonts/TewiFontOutline/0049.png differ diff --git a/fonts/TewiFontOutline/004A.png b/fonts/TewiFontOutline/004A.png new file mode 100644 index 000000000..4987adee1 Binary files /dev/null and b/fonts/TewiFontOutline/004A.png differ diff --git a/fonts/TewiFontOutline/004B.png b/fonts/TewiFontOutline/004B.png new file mode 100644 index 000000000..f8060a305 Binary files /dev/null and b/fonts/TewiFontOutline/004B.png differ diff --git a/fonts/TewiFontOutline/004C.png b/fonts/TewiFontOutline/004C.png new file mode 100644 index 000000000..a216844c0 Binary files /dev/null and b/fonts/TewiFontOutline/004C.png differ diff --git a/fonts/TewiFontOutline/004D.png b/fonts/TewiFontOutline/004D.png new file mode 100644 index 000000000..ed0d7a72c Binary files /dev/null and b/fonts/TewiFontOutline/004D.png differ diff --git a/fonts/TewiFontOutline/004E.png b/fonts/TewiFontOutline/004E.png new file mode 100644 index 000000000..00c5b43c2 Binary files /dev/null and b/fonts/TewiFontOutline/004E.png differ diff --git a/fonts/TewiFontOutline/004F.png b/fonts/TewiFontOutline/004F.png new file mode 100644 index 000000000..ec4f36d2b Binary files /dev/null and b/fonts/TewiFontOutline/004F.png differ diff --git a/fonts/TewiFontOutline/0050.png b/fonts/TewiFontOutline/0050.png new file mode 100644 index 000000000..27d201189 Binary files /dev/null and b/fonts/TewiFontOutline/0050.png differ diff --git a/fonts/TewiFontOutline/0051.png b/fonts/TewiFontOutline/0051.png new file mode 100644 index 000000000..3aee8d28b Binary files /dev/null and b/fonts/TewiFontOutline/0051.png differ diff --git a/fonts/TewiFontOutline/0052.png b/fonts/TewiFontOutline/0052.png new file mode 100644 index 000000000..738d5229b Binary files /dev/null and b/fonts/TewiFontOutline/0052.png differ diff --git a/fonts/TewiFontOutline/0053.png b/fonts/TewiFontOutline/0053.png new file mode 100644 index 000000000..184a09e6d Binary files /dev/null and b/fonts/TewiFontOutline/0053.png differ diff --git a/fonts/TewiFontOutline/0054.png b/fonts/TewiFontOutline/0054.png new file mode 100644 index 000000000..2ac7dcb07 Binary files /dev/null and b/fonts/TewiFontOutline/0054.png differ diff --git a/fonts/TewiFontOutline/0055.png b/fonts/TewiFontOutline/0055.png new file mode 100644 index 000000000..a01bd894e Binary files /dev/null and b/fonts/TewiFontOutline/0055.png differ diff --git a/fonts/TewiFontOutline/0056.png b/fonts/TewiFontOutline/0056.png new file mode 100644 index 000000000..b5ee7a317 Binary files /dev/null and b/fonts/TewiFontOutline/0056.png differ diff --git a/fonts/TewiFontOutline/0057.png b/fonts/TewiFontOutline/0057.png new file mode 100644 index 000000000..946b03613 Binary files /dev/null and b/fonts/TewiFontOutline/0057.png differ diff --git a/fonts/TewiFontOutline/0058.png b/fonts/TewiFontOutline/0058.png new file mode 100644 index 000000000..ef1267672 Binary files /dev/null and b/fonts/TewiFontOutline/0058.png differ diff --git a/fonts/TewiFontOutline/0059.png b/fonts/TewiFontOutline/0059.png new file mode 100644 index 000000000..d49f73aaf Binary files /dev/null and b/fonts/TewiFontOutline/0059.png differ diff --git a/fonts/TewiFontOutline/005A.png b/fonts/TewiFontOutline/005A.png new file mode 100644 index 000000000..4e292ce01 Binary files /dev/null and b/fonts/TewiFontOutline/005A.png differ diff --git a/fonts/TewiFontOutline/005B.png b/fonts/TewiFontOutline/005B.png new file mode 100644 index 000000000..f6bd8172a Binary files /dev/null and b/fonts/TewiFontOutline/005B.png differ diff --git a/fonts/TewiFontOutline/005C.png b/fonts/TewiFontOutline/005C.png new file mode 100644 index 000000000..153047f52 Binary files /dev/null and b/fonts/TewiFontOutline/005C.png differ diff --git a/fonts/TewiFontOutline/005D.png b/fonts/TewiFontOutline/005D.png new file mode 100644 index 000000000..ec98a63d2 Binary files /dev/null and b/fonts/TewiFontOutline/005D.png differ diff --git a/fonts/TewiFontOutline/005E.png b/fonts/TewiFontOutline/005E.png new file mode 100644 index 000000000..b939ffa98 Binary files /dev/null and b/fonts/TewiFontOutline/005E.png differ diff --git a/fonts/TewiFontOutline/005F.png b/fonts/TewiFontOutline/005F.png new file mode 100644 index 000000000..578c70d7f Binary files /dev/null and b/fonts/TewiFontOutline/005F.png differ diff --git a/fonts/TewiFontOutline/0060.png b/fonts/TewiFontOutline/0060.png new file mode 100644 index 000000000..d5dc29d64 Binary files /dev/null and b/fonts/TewiFontOutline/0060.png differ diff --git a/fonts/TewiFontOutline/0061.png b/fonts/TewiFontOutline/0061.png new file mode 100644 index 000000000..87f03bea1 Binary files /dev/null and b/fonts/TewiFontOutline/0061.png differ diff --git a/fonts/TewiFontOutline/0062.png b/fonts/TewiFontOutline/0062.png new file mode 100644 index 000000000..d194a2882 Binary files /dev/null and b/fonts/TewiFontOutline/0062.png differ diff --git a/fonts/TewiFontOutline/0063.png b/fonts/TewiFontOutline/0063.png new file mode 100644 index 000000000..726d21bf5 Binary files /dev/null and b/fonts/TewiFontOutline/0063.png differ diff --git a/fonts/TewiFontOutline/0064.png b/fonts/TewiFontOutline/0064.png new file mode 100644 index 000000000..cdfee703d Binary files /dev/null and b/fonts/TewiFontOutline/0064.png differ diff --git a/fonts/TewiFontOutline/0065.png b/fonts/TewiFontOutline/0065.png new file mode 100644 index 000000000..f59a5a3d4 Binary files /dev/null and b/fonts/TewiFontOutline/0065.png differ diff --git a/fonts/TewiFontOutline/0066.png b/fonts/TewiFontOutline/0066.png new file mode 100644 index 000000000..ea3933c54 Binary files /dev/null and b/fonts/TewiFontOutline/0066.png differ diff --git a/fonts/TewiFontOutline/0067.png b/fonts/TewiFontOutline/0067.png new file mode 100644 index 000000000..f1980bcd9 Binary files /dev/null and b/fonts/TewiFontOutline/0067.png differ diff --git a/fonts/TewiFontOutline/0068.png b/fonts/TewiFontOutline/0068.png new file mode 100644 index 000000000..4daba8f0c Binary files /dev/null and b/fonts/TewiFontOutline/0068.png differ diff --git a/fonts/TewiFontOutline/0069.png b/fonts/TewiFontOutline/0069.png new file mode 100644 index 000000000..a0c5e6cc0 Binary files /dev/null and b/fonts/TewiFontOutline/0069.png differ diff --git a/fonts/TewiFontOutline/006A.png b/fonts/TewiFontOutline/006A.png new file mode 100644 index 000000000..e13e0357a Binary files /dev/null and b/fonts/TewiFontOutline/006A.png differ diff --git a/fonts/TewiFontOutline/006B.png b/fonts/TewiFontOutline/006B.png new file mode 100644 index 000000000..bb9ad26d9 Binary files /dev/null and b/fonts/TewiFontOutline/006B.png differ diff --git a/fonts/TewiFontOutline/006C.png b/fonts/TewiFontOutline/006C.png new file mode 100644 index 000000000..74ce239b3 Binary files /dev/null and b/fonts/TewiFontOutline/006C.png differ diff --git a/fonts/TewiFontOutline/006D.png b/fonts/TewiFontOutline/006D.png new file mode 100644 index 000000000..2be284712 Binary files /dev/null and b/fonts/TewiFontOutline/006D.png differ diff --git a/fonts/TewiFontOutline/006E.png b/fonts/TewiFontOutline/006E.png new file mode 100644 index 000000000..fea7f7603 Binary files /dev/null and b/fonts/TewiFontOutline/006E.png differ diff --git a/fonts/TewiFontOutline/006F.png b/fonts/TewiFontOutline/006F.png new file mode 100644 index 000000000..177ddfaeb Binary files /dev/null and b/fonts/TewiFontOutline/006F.png differ diff --git a/fonts/TewiFontOutline/0070.png b/fonts/TewiFontOutline/0070.png new file mode 100644 index 000000000..e0fc224ba Binary files /dev/null and b/fonts/TewiFontOutline/0070.png differ diff --git a/fonts/TewiFontOutline/0071.png b/fonts/TewiFontOutline/0071.png new file mode 100644 index 000000000..40ec7e2b6 Binary files /dev/null and b/fonts/TewiFontOutline/0071.png differ diff --git a/fonts/TewiFontOutline/0072.png b/fonts/TewiFontOutline/0072.png new file mode 100644 index 000000000..aa7065342 Binary files /dev/null and b/fonts/TewiFontOutline/0072.png differ diff --git a/fonts/TewiFontOutline/0073.png b/fonts/TewiFontOutline/0073.png new file mode 100644 index 000000000..27d136ea8 Binary files /dev/null and b/fonts/TewiFontOutline/0073.png differ diff --git a/fonts/TewiFontOutline/0074.png b/fonts/TewiFontOutline/0074.png new file mode 100644 index 000000000..ab6ffe247 Binary files /dev/null and b/fonts/TewiFontOutline/0074.png differ diff --git a/fonts/TewiFontOutline/0075.png b/fonts/TewiFontOutline/0075.png new file mode 100644 index 000000000..ffc4f0fca Binary files /dev/null and b/fonts/TewiFontOutline/0075.png differ diff --git a/fonts/TewiFontOutline/0076.png b/fonts/TewiFontOutline/0076.png new file mode 100644 index 000000000..563c683ab Binary files /dev/null and b/fonts/TewiFontOutline/0076.png differ diff --git a/fonts/TewiFontOutline/0077.png b/fonts/TewiFontOutline/0077.png new file mode 100644 index 000000000..4fb5320ca Binary files /dev/null and b/fonts/TewiFontOutline/0077.png differ diff --git a/fonts/TewiFontOutline/0078.png b/fonts/TewiFontOutline/0078.png new file mode 100644 index 000000000..dd7a926e6 Binary files /dev/null and b/fonts/TewiFontOutline/0078.png differ diff --git a/fonts/TewiFontOutline/0079.png b/fonts/TewiFontOutline/0079.png new file mode 100644 index 000000000..fb2d95040 Binary files /dev/null and b/fonts/TewiFontOutline/0079.png differ diff --git a/fonts/TewiFontOutline/007A.png b/fonts/TewiFontOutline/007A.png new file mode 100644 index 000000000..564cc1b2f Binary files /dev/null and b/fonts/TewiFontOutline/007A.png differ diff --git a/fonts/TewiFontOutline/007B.png b/fonts/TewiFontOutline/007B.png new file mode 100644 index 000000000..317ee9c77 Binary files /dev/null and b/fonts/TewiFontOutline/007B.png differ diff --git a/fonts/TewiFontOutline/007C.png b/fonts/TewiFontOutline/007C.png new file mode 100644 index 000000000..5c31f93c1 Binary files /dev/null and b/fonts/TewiFontOutline/007C.png differ diff --git a/fonts/TewiFontOutline/007D.png b/fonts/TewiFontOutline/007D.png new file mode 100644 index 000000000..6aaace7d9 Binary files /dev/null and b/fonts/TewiFontOutline/007D.png differ diff --git a/fonts/TewiFontOutline/007E.png b/fonts/TewiFontOutline/007E.png new file mode 100644 index 000000000..8cc228371 Binary files /dev/null and b/fonts/TewiFontOutline/007E.png differ diff --git a/fonts/TewiFontOutline/00A1.png b/fonts/TewiFontOutline/00A1.png new file mode 100644 index 000000000..f097b7aa6 Binary files /dev/null and b/fonts/TewiFontOutline/00A1.png differ diff --git a/fonts/TewiFontOutline/00A2.png b/fonts/TewiFontOutline/00A2.png new file mode 100644 index 000000000..819082771 Binary files /dev/null and b/fonts/TewiFontOutline/00A2.png differ diff --git a/fonts/TewiFontOutline/00A3.png b/fonts/TewiFontOutline/00A3.png new file mode 100644 index 000000000..ed50240a4 Binary files /dev/null and b/fonts/TewiFontOutline/00A3.png differ diff --git a/fonts/TewiFontOutline/00A4.png b/fonts/TewiFontOutline/00A4.png new file mode 100644 index 000000000..521826d0b Binary files /dev/null and b/fonts/TewiFontOutline/00A4.png differ diff --git a/fonts/TewiFontOutline/00A5.png b/fonts/TewiFontOutline/00A5.png new file mode 100644 index 000000000..f2d074e11 Binary files /dev/null and b/fonts/TewiFontOutline/00A5.png differ diff --git a/fonts/TewiFontOutline/00A6.png b/fonts/TewiFontOutline/00A6.png new file mode 100644 index 000000000..ff109508a Binary files /dev/null and b/fonts/TewiFontOutline/00A6.png differ diff --git a/fonts/TewiFontOutline/00A7.png b/fonts/TewiFontOutline/00A7.png new file mode 100644 index 000000000..1fc329753 Binary files /dev/null and b/fonts/TewiFontOutline/00A7.png differ diff --git a/fonts/TewiFontOutline/00A8.png b/fonts/TewiFontOutline/00A8.png new file mode 100644 index 000000000..2edd70de5 Binary files /dev/null and b/fonts/TewiFontOutline/00A8.png differ diff --git a/fonts/TewiFontOutline/00A9.png b/fonts/TewiFontOutline/00A9.png new file mode 100644 index 000000000..e223d6c7a Binary files /dev/null and b/fonts/TewiFontOutline/00A9.png differ diff --git a/fonts/TewiFontOutline/00AA.png b/fonts/TewiFontOutline/00AA.png new file mode 100644 index 000000000..81c6ae829 Binary files /dev/null and b/fonts/TewiFontOutline/00AA.png differ diff --git a/fonts/TewiFontOutline/00AB.png b/fonts/TewiFontOutline/00AB.png new file mode 100644 index 000000000..773675ca4 Binary files /dev/null and b/fonts/TewiFontOutline/00AB.png differ diff --git a/fonts/TewiFontOutline/00AC.png b/fonts/TewiFontOutline/00AC.png new file mode 100644 index 000000000..2172d3e4d Binary files /dev/null and b/fonts/TewiFontOutline/00AC.png differ diff --git a/fonts/TewiFontOutline/00AE.png b/fonts/TewiFontOutline/00AE.png new file mode 100644 index 000000000..1317a88d8 Binary files /dev/null and b/fonts/TewiFontOutline/00AE.png differ diff --git a/fonts/TewiFontOutline/00AF.png b/fonts/TewiFontOutline/00AF.png new file mode 100644 index 000000000..6a9692d4d Binary files /dev/null and b/fonts/TewiFontOutline/00AF.png differ diff --git a/fonts/TewiFontOutline/00B0.png b/fonts/TewiFontOutline/00B0.png new file mode 100644 index 000000000..489024413 Binary files /dev/null and b/fonts/TewiFontOutline/00B0.png differ diff --git a/fonts/TewiFontOutline/00B1.png b/fonts/TewiFontOutline/00B1.png new file mode 100644 index 000000000..57061ebb4 Binary files /dev/null and b/fonts/TewiFontOutline/00B1.png differ diff --git a/fonts/TewiFontOutline/00B2.png b/fonts/TewiFontOutline/00B2.png new file mode 100644 index 000000000..7785730a2 Binary files /dev/null and b/fonts/TewiFontOutline/00B2.png differ diff --git a/fonts/TewiFontOutline/00B3.png b/fonts/TewiFontOutline/00B3.png new file mode 100644 index 000000000..f515f70b4 Binary files /dev/null and b/fonts/TewiFontOutline/00B3.png differ diff --git a/fonts/TewiFontOutline/00B4.png b/fonts/TewiFontOutline/00B4.png new file mode 100644 index 000000000..e3873a9a9 Binary files /dev/null and b/fonts/TewiFontOutline/00B4.png differ diff --git a/fonts/TewiFontOutline/00B5.png b/fonts/TewiFontOutline/00B5.png new file mode 100644 index 000000000..ff2b0d5bc Binary files /dev/null and b/fonts/TewiFontOutline/00B5.png differ diff --git a/fonts/TewiFontOutline/00B6.png b/fonts/TewiFontOutline/00B6.png new file mode 100644 index 000000000..a02fe2b31 Binary files /dev/null and b/fonts/TewiFontOutline/00B6.png differ diff --git a/fonts/TewiFontOutline/00B7.png b/fonts/TewiFontOutline/00B7.png new file mode 100644 index 000000000..28270b539 Binary files /dev/null and b/fonts/TewiFontOutline/00B7.png differ diff --git a/fonts/TewiFontOutline/00B8.png b/fonts/TewiFontOutline/00B8.png new file mode 100644 index 000000000..89e9dfcb5 Binary files /dev/null and b/fonts/TewiFontOutline/00B8.png differ diff --git a/fonts/TewiFontOutline/00B9.png b/fonts/TewiFontOutline/00B9.png new file mode 100644 index 000000000..d2cae88ae Binary files /dev/null and b/fonts/TewiFontOutline/00B9.png differ diff --git a/fonts/TewiFontOutline/00BA.png b/fonts/TewiFontOutline/00BA.png new file mode 100644 index 000000000..a85695958 Binary files /dev/null and b/fonts/TewiFontOutline/00BA.png differ diff --git a/fonts/TewiFontOutline/00BB.png b/fonts/TewiFontOutline/00BB.png new file mode 100644 index 000000000..865b7b713 Binary files /dev/null and b/fonts/TewiFontOutline/00BB.png differ diff --git a/fonts/TewiFontOutline/00BC.png b/fonts/TewiFontOutline/00BC.png new file mode 100644 index 000000000..124bd35ad Binary files /dev/null and b/fonts/TewiFontOutline/00BC.png differ diff --git a/fonts/TewiFontOutline/00BD.png b/fonts/TewiFontOutline/00BD.png new file mode 100644 index 000000000..8b3619e78 Binary files /dev/null and b/fonts/TewiFontOutline/00BD.png differ diff --git a/fonts/TewiFontOutline/00BE.png b/fonts/TewiFontOutline/00BE.png new file mode 100644 index 000000000..02c2186f7 Binary files /dev/null and b/fonts/TewiFontOutline/00BE.png differ diff --git a/fonts/TewiFontOutline/00BF.png b/fonts/TewiFontOutline/00BF.png new file mode 100644 index 000000000..aaeab20de Binary files /dev/null and b/fonts/TewiFontOutline/00BF.png differ diff --git a/fonts/TewiFontOutline/00C0.png b/fonts/TewiFontOutline/00C0.png new file mode 100644 index 000000000..c2798389b Binary files /dev/null and b/fonts/TewiFontOutline/00C0.png differ diff --git a/fonts/TewiFontOutline/00C1.png b/fonts/TewiFontOutline/00C1.png new file mode 100644 index 000000000..e89118ed3 Binary files /dev/null and b/fonts/TewiFontOutline/00C1.png differ diff --git a/fonts/TewiFontOutline/00C2.png b/fonts/TewiFontOutline/00C2.png new file mode 100644 index 000000000..e4b7891b2 Binary files /dev/null and b/fonts/TewiFontOutline/00C2.png differ diff --git a/fonts/TewiFontOutline/00C3.png b/fonts/TewiFontOutline/00C3.png new file mode 100644 index 000000000..c4b4d2913 Binary files /dev/null and b/fonts/TewiFontOutline/00C3.png differ diff --git a/fonts/TewiFontOutline/00C4.png b/fonts/TewiFontOutline/00C4.png new file mode 100644 index 000000000..459698836 Binary files /dev/null and b/fonts/TewiFontOutline/00C4.png differ diff --git a/fonts/TewiFontOutline/00C5.png b/fonts/TewiFontOutline/00C5.png new file mode 100644 index 000000000..e4b7891b2 Binary files /dev/null and b/fonts/TewiFontOutline/00C5.png differ diff --git a/fonts/TewiFontOutline/00C6.png b/fonts/TewiFontOutline/00C6.png new file mode 100644 index 000000000..0bab600b5 Binary files /dev/null and b/fonts/TewiFontOutline/00C6.png differ diff --git a/fonts/TewiFontOutline/00C7.png b/fonts/TewiFontOutline/00C7.png new file mode 100644 index 000000000..2888c4987 Binary files /dev/null and b/fonts/TewiFontOutline/00C7.png differ diff --git a/fonts/TewiFontOutline/00C8.png b/fonts/TewiFontOutline/00C8.png new file mode 100644 index 000000000..0e8757e05 Binary files /dev/null and b/fonts/TewiFontOutline/00C8.png differ diff --git a/fonts/TewiFontOutline/00C9.png b/fonts/TewiFontOutline/00C9.png new file mode 100644 index 000000000..c70e1410a Binary files /dev/null and b/fonts/TewiFontOutline/00C9.png differ diff --git a/fonts/TewiFontOutline/00CA.png b/fonts/TewiFontOutline/00CA.png new file mode 100644 index 000000000..8584b4833 Binary files /dev/null and b/fonts/TewiFontOutline/00CA.png differ diff --git a/fonts/TewiFontOutline/00CB.png b/fonts/TewiFontOutline/00CB.png new file mode 100644 index 000000000..52c94b38c Binary files /dev/null and b/fonts/TewiFontOutline/00CB.png differ diff --git a/fonts/TewiFontOutline/00CC.png b/fonts/TewiFontOutline/00CC.png new file mode 100644 index 000000000..0a54a9958 Binary files /dev/null and b/fonts/TewiFontOutline/00CC.png differ diff --git a/fonts/TewiFontOutline/00CD.png b/fonts/TewiFontOutline/00CD.png new file mode 100644 index 000000000..a1712752c Binary files /dev/null and b/fonts/TewiFontOutline/00CD.png differ diff --git a/fonts/TewiFontOutline/00CE.png b/fonts/TewiFontOutline/00CE.png new file mode 100644 index 000000000..b1623462a Binary files /dev/null and b/fonts/TewiFontOutline/00CE.png differ diff --git a/fonts/TewiFontOutline/00CF.png b/fonts/TewiFontOutline/00CF.png new file mode 100644 index 000000000..f701d1740 Binary files /dev/null and b/fonts/TewiFontOutline/00CF.png differ diff --git a/fonts/TewiFontOutline/00D0.png b/fonts/TewiFontOutline/00D0.png new file mode 100644 index 000000000..e41d78103 Binary files /dev/null and b/fonts/TewiFontOutline/00D0.png differ diff --git a/fonts/TewiFontOutline/00D1.png b/fonts/TewiFontOutline/00D1.png new file mode 100644 index 000000000..bcaa5460e Binary files /dev/null and b/fonts/TewiFontOutline/00D1.png differ diff --git a/fonts/TewiFontOutline/00D2.png b/fonts/TewiFontOutline/00D2.png new file mode 100644 index 000000000..69f0d538c Binary files /dev/null and b/fonts/TewiFontOutline/00D2.png differ diff --git a/fonts/TewiFontOutline/00D3.png b/fonts/TewiFontOutline/00D3.png new file mode 100644 index 000000000..436a3d864 Binary files /dev/null and b/fonts/TewiFontOutline/00D3.png differ diff --git a/fonts/TewiFontOutline/00D4.png b/fonts/TewiFontOutline/00D4.png new file mode 100644 index 000000000..2388b8b81 Binary files /dev/null and b/fonts/TewiFontOutline/00D4.png differ diff --git a/fonts/TewiFontOutline/00D5.png b/fonts/TewiFontOutline/00D5.png new file mode 100644 index 000000000..c70948ba5 Binary files /dev/null and b/fonts/TewiFontOutline/00D5.png differ diff --git a/fonts/TewiFontOutline/00D6.png b/fonts/TewiFontOutline/00D6.png new file mode 100644 index 000000000..412acb38b Binary files /dev/null and b/fonts/TewiFontOutline/00D6.png differ diff --git a/fonts/TewiFontOutline/00D7.png b/fonts/TewiFontOutline/00D7.png new file mode 100644 index 000000000..bbec44df3 Binary files /dev/null and b/fonts/TewiFontOutline/00D7.png differ diff --git a/fonts/TewiFontOutline/00D8.png b/fonts/TewiFontOutline/00D8.png new file mode 100644 index 000000000..c3f7b70ab Binary files /dev/null and b/fonts/TewiFontOutline/00D8.png differ diff --git a/fonts/TewiFontOutline/00D9.png b/fonts/TewiFontOutline/00D9.png new file mode 100644 index 000000000..efc3467b4 Binary files /dev/null and b/fonts/TewiFontOutline/00D9.png differ diff --git a/fonts/TewiFontOutline/00DA.png b/fonts/TewiFontOutline/00DA.png new file mode 100644 index 000000000..ddda2ecac Binary files /dev/null and b/fonts/TewiFontOutline/00DA.png differ diff --git a/fonts/TewiFontOutline/00DB.png b/fonts/TewiFontOutline/00DB.png new file mode 100644 index 000000000..3c9c3133b Binary files /dev/null and b/fonts/TewiFontOutline/00DB.png differ diff --git a/fonts/TewiFontOutline/00DC.png b/fonts/TewiFontOutline/00DC.png new file mode 100644 index 000000000..437a44d43 Binary files /dev/null and b/fonts/TewiFontOutline/00DC.png differ diff --git a/fonts/TewiFontOutline/00DD.png b/fonts/TewiFontOutline/00DD.png new file mode 100644 index 000000000..6e85b2701 Binary files /dev/null and b/fonts/TewiFontOutline/00DD.png differ diff --git a/fonts/TewiFontOutline/00DE.png b/fonts/TewiFontOutline/00DE.png new file mode 100644 index 000000000..e8d6611f7 Binary files /dev/null and b/fonts/TewiFontOutline/00DE.png differ diff --git a/fonts/TewiFontOutline/00DF.png b/fonts/TewiFontOutline/00DF.png new file mode 100644 index 000000000..d9083f5f6 Binary files /dev/null and b/fonts/TewiFontOutline/00DF.png differ diff --git a/fonts/TewiFontOutline/00E0.png b/fonts/TewiFontOutline/00E0.png new file mode 100644 index 000000000..600703d87 Binary files /dev/null and b/fonts/TewiFontOutline/00E0.png differ diff --git a/fonts/TewiFontOutline/00E1.png b/fonts/TewiFontOutline/00E1.png new file mode 100644 index 000000000..4b6896be3 Binary files /dev/null and b/fonts/TewiFontOutline/00E1.png differ diff --git a/fonts/TewiFontOutline/00E2.png b/fonts/TewiFontOutline/00E2.png new file mode 100644 index 000000000..c05dda833 Binary files /dev/null and b/fonts/TewiFontOutline/00E2.png differ diff --git a/fonts/TewiFontOutline/00E3.png b/fonts/TewiFontOutline/00E3.png new file mode 100644 index 000000000..523b09e22 Binary files /dev/null and b/fonts/TewiFontOutline/00E3.png differ diff --git a/fonts/TewiFontOutline/00E4.png b/fonts/TewiFontOutline/00E4.png new file mode 100644 index 000000000..c687b52df Binary files /dev/null and b/fonts/TewiFontOutline/00E4.png differ diff --git a/fonts/TewiFontOutline/00E5.png b/fonts/TewiFontOutline/00E5.png new file mode 100644 index 000000000..9cd443b85 Binary files /dev/null and b/fonts/TewiFontOutline/00E5.png differ diff --git a/fonts/TewiFontOutline/00E6.png b/fonts/TewiFontOutline/00E6.png new file mode 100644 index 000000000..c491b5c52 Binary files /dev/null and b/fonts/TewiFontOutline/00E6.png differ diff --git a/fonts/TewiFontOutline/00E7.png b/fonts/TewiFontOutline/00E7.png new file mode 100644 index 000000000..c8edc18c5 Binary files /dev/null and b/fonts/TewiFontOutline/00E7.png differ diff --git a/fonts/TewiFontOutline/00E8.png b/fonts/TewiFontOutline/00E8.png new file mode 100644 index 000000000..7ad4ee4d8 Binary files /dev/null and b/fonts/TewiFontOutline/00E8.png differ diff --git a/fonts/TewiFontOutline/00E9.png b/fonts/TewiFontOutline/00E9.png new file mode 100644 index 000000000..b0051fe7b Binary files /dev/null and b/fonts/TewiFontOutline/00E9.png differ diff --git a/fonts/TewiFontOutline/00EA.png b/fonts/TewiFontOutline/00EA.png new file mode 100644 index 000000000..c2a4f3ce5 Binary files /dev/null and b/fonts/TewiFontOutline/00EA.png differ diff --git a/fonts/TewiFontOutline/00EB.png b/fonts/TewiFontOutline/00EB.png new file mode 100644 index 000000000..edebadadb Binary files /dev/null and b/fonts/TewiFontOutline/00EB.png differ diff --git a/fonts/TewiFontOutline/00EC.png b/fonts/TewiFontOutline/00EC.png new file mode 100644 index 000000000..36d37ef38 Binary files /dev/null and b/fonts/TewiFontOutline/00EC.png differ diff --git a/fonts/TewiFontOutline/00ED.png b/fonts/TewiFontOutline/00ED.png new file mode 100644 index 000000000..e76255205 Binary files /dev/null and b/fonts/TewiFontOutline/00ED.png differ diff --git a/fonts/TewiFontOutline/00EE.png b/fonts/TewiFontOutline/00EE.png new file mode 100644 index 000000000..818ebbf28 Binary files /dev/null and b/fonts/TewiFontOutline/00EE.png differ diff --git a/fonts/TewiFontOutline/00EF.png b/fonts/TewiFontOutline/00EF.png new file mode 100644 index 000000000..3c56d2a5a Binary files /dev/null and b/fonts/TewiFontOutline/00EF.png differ diff --git a/fonts/TewiFontOutline/00F0.png b/fonts/TewiFontOutline/00F0.png new file mode 100644 index 000000000..50588b444 Binary files /dev/null and b/fonts/TewiFontOutline/00F0.png differ diff --git a/fonts/TewiFontOutline/00F1.png b/fonts/TewiFontOutline/00F1.png new file mode 100644 index 000000000..a617bb5ea Binary files /dev/null and b/fonts/TewiFontOutline/00F1.png differ diff --git a/fonts/TewiFontOutline/00F2.png b/fonts/TewiFontOutline/00F2.png new file mode 100644 index 000000000..f4490b58f Binary files /dev/null and b/fonts/TewiFontOutline/00F2.png differ diff --git a/fonts/TewiFontOutline/00F3.png b/fonts/TewiFontOutline/00F3.png new file mode 100644 index 000000000..d69614b69 Binary files /dev/null and b/fonts/TewiFontOutline/00F3.png differ diff --git a/fonts/TewiFontOutline/00F4.png b/fonts/TewiFontOutline/00F4.png new file mode 100644 index 000000000..a77d00387 Binary files /dev/null and b/fonts/TewiFontOutline/00F4.png differ diff --git a/fonts/TewiFontOutline/00F5.png b/fonts/TewiFontOutline/00F5.png new file mode 100644 index 000000000..73083e86b Binary files /dev/null and b/fonts/TewiFontOutline/00F5.png differ diff --git a/fonts/TewiFontOutline/00F6.png b/fonts/TewiFontOutline/00F6.png new file mode 100644 index 000000000..5c0f0b715 Binary files /dev/null and b/fonts/TewiFontOutline/00F6.png differ diff --git a/fonts/TewiFontOutline/00F7.png b/fonts/TewiFontOutline/00F7.png new file mode 100644 index 000000000..fa2b52490 Binary files /dev/null and b/fonts/TewiFontOutline/00F7.png differ diff --git a/fonts/TewiFontOutline/00F8.png b/fonts/TewiFontOutline/00F8.png new file mode 100644 index 000000000..b073a4116 Binary files /dev/null and b/fonts/TewiFontOutline/00F8.png differ diff --git a/fonts/TewiFontOutline/00F9.png b/fonts/TewiFontOutline/00F9.png new file mode 100644 index 000000000..323505ea4 Binary files /dev/null and b/fonts/TewiFontOutline/00F9.png differ diff --git a/fonts/TewiFontOutline/00FA.png b/fonts/TewiFontOutline/00FA.png new file mode 100644 index 000000000..1f9be1733 Binary files /dev/null and b/fonts/TewiFontOutline/00FA.png differ diff --git a/fonts/TewiFontOutline/00FB.png b/fonts/TewiFontOutline/00FB.png new file mode 100644 index 000000000..325b332b1 Binary files /dev/null and b/fonts/TewiFontOutline/00FB.png differ diff --git a/fonts/TewiFontOutline/00FC.png b/fonts/TewiFontOutline/00FC.png new file mode 100644 index 000000000..cfbfa17d1 Binary files /dev/null and b/fonts/TewiFontOutline/00FC.png differ diff --git a/fonts/TewiFontOutline/00FD.png b/fonts/TewiFontOutline/00FD.png new file mode 100644 index 000000000..714bd568e Binary files /dev/null and b/fonts/TewiFontOutline/00FD.png differ diff --git a/fonts/TewiFontOutline/00FE.png b/fonts/TewiFontOutline/00FE.png new file mode 100644 index 000000000..2a4fb0edd Binary files /dev/null and b/fonts/TewiFontOutline/00FE.png differ diff --git a/fonts/TewiFontOutline/00FF.png b/fonts/TewiFontOutline/00FF.png new file mode 100644 index 000000000..f1a23f5cb Binary files /dev/null and b/fonts/TewiFontOutline/00FF.png differ diff --git a/fonts/TewiFontOutline/0100.png b/fonts/TewiFontOutline/0100.png new file mode 100644 index 000000000..c856bfda6 Binary files /dev/null and b/fonts/TewiFontOutline/0100.png differ diff --git a/fonts/TewiFontOutline/0101.png b/fonts/TewiFontOutline/0101.png new file mode 100644 index 000000000..d109c5a89 Binary files /dev/null and b/fonts/TewiFontOutline/0101.png differ diff --git a/fonts/TewiFontOutline/0102.png b/fonts/TewiFontOutline/0102.png new file mode 100644 index 000000000..8bd5e4c9a Binary files /dev/null and b/fonts/TewiFontOutline/0102.png differ diff --git a/fonts/TewiFontOutline/0103.png b/fonts/TewiFontOutline/0103.png new file mode 100644 index 000000000..2854a93a0 Binary files /dev/null and b/fonts/TewiFontOutline/0103.png differ diff --git a/fonts/TewiFontOutline/0104.png b/fonts/TewiFontOutline/0104.png new file mode 100644 index 000000000..75896a1b2 Binary files /dev/null and b/fonts/TewiFontOutline/0104.png differ diff --git a/fonts/TewiFontOutline/0105.png b/fonts/TewiFontOutline/0105.png new file mode 100644 index 000000000..f4237c7fd Binary files /dev/null and b/fonts/TewiFontOutline/0105.png differ diff --git a/fonts/TewiFontOutline/0106.png b/fonts/TewiFontOutline/0106.png new file mode 100644 index 000000000..e941cb887 Binary files /dev/null and b/fonts/TewiFontOutline/0106.png differ diff --git a/fonts/TewiFontOutline/0107.png b/fonts/TewiFontOutline/0107.png new file mode 100644 index 000000000..4d872690b Binary files /dev/null and b/fonts/TewiFontOutline/0107.png differ diff --git a/fonts/TewiFontOutline/0108.png b/fonts/TewiFontOutline/0108.png new file mode 100644 index 000000000..d4ca9b721 Binary files /dev/null and b/fonts/TewiFontOutline/0108.png differ diff --git a/fonts/TewiFontOutline/0109.png b/fonts/TewiFontOutline/0109.png new file mode 100644 index 000000000..20c8fe4ba Binary files /dev/null and b/fonts/TewiFontOutline/0109.png differ diff --git a/fonts/TewiFontOutline/010A.png b/fonts/TewiFontOutline/010A.png new file mode 100644 index 000000000..a08a90504 Binary files /dev/null and b/fonts/TewiFontOutline/010A.png differ diff --git a/fonts/TewiFontOutline/010B.png b/fonts/TewiFontOutline/010B.png new file mode 100644 index 000000000..58187a318 Binary files /dev/null and b/fonts/TewiFontOutline/010B.png differ diff --git a/fonts/TewiFontOutline/010C.png b/fonts/TewiFontOutline/010C.png new file mode 100644 index 000000000..6b678ac3f Binary files /dev/null and b/fonts/TewiFontOutline/010C.png differ diff --git a/fonts/TewiFontOutline/010D.png b/fonts/TewiFontOutline/010D.png new file mode 100644 index 000000000..1a4377b12 Binary files /dev/null and b/fonts/TewiFontOutline/010D.png differ diff --git a/fonts/TewiFontOutline/010E.png b/fonts/TewiFontOutline/010E.png new file mode 100644 index 000000000..023786d42 Binary files /dev/null and b/fonts/TewiFontOutline/010E.png differ diff --git a/fonts/TewiFontOutline/010F.png b/fonts/TewiFontOutline/010F.png new file mode 100644 index 000000000..b941ed357 Binary files /dev/null and b/fonts/TewiFontOutline/010F.png differ diff --git a/fonts/TewiFontOutline/0110.png b/fonts/TewiFontOutline/0110.png new file mode 100644 index 000000000..2ee04cbae Binary files /dev/null and b/fonts/TewiFontOutline/0110.png differ diff --git a/fonts/TewiFontOutline/0111.png b/fonts/TewiFontOutline/0111.png new file mode 100644 index 000000000..8e5d5b36f Binary files /dev/null and b/fonts/TewiFontOutline/0111.png differ diff --git a/fonts/TewiFontOutline/0112.png b/fonts/TewiFontOutline/0112.png new file mode 100644 index 000000000..54942c6ee Binary files /dev/null and b/fonts/TewiFontOutline/0112.png differ diff --git a/fonts/TewiFontOutline/0113.png b/fonts/TewiFontOutline/0113.png new file mode 100644 index 000000000..860052686 Binary files /dev/null and b/fonts/TewiFontOutline/0113.png differ diff --git a/fonts/TewiFontOutline/0114.png b/fonts/TewiFontOutline/0114.png new file mode 100644 index 000000000..1b4d8e978 Binary files /dev/null and b/fonts/TewiFontOutline/0114.png differ diff --git a/fonts/TewiFontOutline/0115.png b/fonts/TewiFontOutline/0115.png new file mode 100644 index 000000000..d2c5fece2 Binary files /dev/null and b/fonts/TewiFontOutline/0115.png differ diff --git a/fonts/TewiFontOutline/0116.png b/fonts/TewiFontOutline/0116.png new file mode 100644 index 000000000..be1e27380 Binary files /dev/null and b/fonts/TewiFontOutline/0116.png differ diff --git a/fonts/TewiFontOutline/0117.png b/fonts/TewiFontOutline/0117.png new file mode 100644 index 000000000..b20ad6dbd Binary files /dev/null and b/fonts/TewiFontOutline/0117.png differ diff --git a/fonts/TewiFontOutline/0118.png b/fonts/TewiFontOutline/0118.png new file mode 100644 index 000000000..3b7e862b4 Binary files /dev/null and b/fonts/TewiFontOutline/0118.png differ diff --git a/fonts/TewiFontOutline/0119.png b/fonts/TewiFontOutline/0119.png new file mode 100644 index 000000000..31ddcc0fe Binary files /dev/null and b/fonts/TewiFontOutline/0119.png differ diff --git a/fonts/TewiFontOutline/011A.png b/fonts/TewiFontOutline/011A.png new file mode 100644 index 000000000..4e9a008f1 Binary files /dev/null and b/fonts/TewiFontOutline/011A.png differ diff --git a/fonts/TewiFontOutline/011B.png b/fonts/TewiFontOutline/011B.png new file mode 100644 index 000000000..539b16642 Binary files /dev/null and b/fonts/TewiFontOutline/011B.png differ diff --git a/fonts/TewiFontOutline/011C.png b/fonts/TewiFontOutline/011C.png new file mode 100644 index 000000000..054b13ed0 Binary files /dev/null and b/fonts/TewiFontOutline/011C.png differ diff --git a/fonts/TewiFontOutline/011D.png b/fonts/TewiFontOutline/011D.png new file mode 100644 index 000000000..d07281bb9 Binary files /dev/null and b/fonts/TewiFontOutline/011D.png differ diff --git a/fonts/TewiFontOutline/011E.png b/fonts/TewiFontOutline/011E.png new file mode 100644 index 000000000..fc8d45082 Binary files /dev/null and b/fonts/TewiFontOutline/011E.png differ diff --git a/fonts/TewiFontOutline/011F.png b/fonts/TewiFontOutline/011F.png new file mode 100644 index 000000000..9d38ee9e9 Binary files /dev/null and b/fonts/TewiFontOutline/011F.png differ diff --git a/fonts/TewiFontOutline/0120.png b/fonts/TewiFontOutline/0120.png new file mode 100644 index 000000000..a6065ae91 Binary files /dev/null and b/fonts/TewiFontOutline/0120.png differ diff --git a/fonts/TewiFontOutline/0121.png b/fonts/TewiFontOutline/0121.png new file mode 100644 index 000000000..26bc96dc1 Binary files /dev/null and b/fonts/TewiFontOutline/0121.png differ diff --git a/fonts/TewiFontOutline/0122.png b/fonts/TewiFontOutline/0122.png new file mode 100644 index 000000000..c2d28bfe9 Binary files /dev/null and b/fonts/TewiFontOutline/0122.png differ diff --git a/fonts/TewiFontOutline/0123.png b/fonts/TewiFontOutline/0123.png new file mode 100644 index 000000000..51510f99e Binary files /dev/null and b/fonts/TewiFontOutline/0123.png differ diff --git a/fonts/TewiFontOutline/0124.png b/fonts/TewiFontOutline/0124.png new file mode 100644 index 000000000..389fed74e Binary files /dev/null and b/fonts/TewiFontOutline/0124.png differ diff --git a/fonts/TewiFontOutline/0125.png b/fonts/TewiFontOutline/0125.png new file mode 100644 index 000000000..a9d08fb25 Binary files /dev/null and b/fonts/TewiFontOutline/0125.png differ diff --git a/fonts/TewiFontOutline/0126.png b/fonts/TewiFontOutline/0126.png new file mode 100644 index 000000000..4ccaad1df Binary files /dev/null and b/fonts/TewiFontOutline/0126.png differ diff --git a/fonts/TewiFontOutline/0127.png b/fonts/TewiFontOutline/0127.png new file mode 100644 index 000000000..29c4c2ebc Binary files /dev/null and b/fonts/TewiFontOutline/0127.png differ diff --git a/fonts/TewiFontOutline/0128.png b/fonts/TewiFontOutline/0128.png new file mode 100644 index 000000000..cfed21fc5 Binary files /dev/null and b/fonts/TewiFontOutline/0128.png differ diff --git a/fonts/TewiFontOutline/0129.png b/fonts/TewiFontOutline/0129.png new file mode 100644 index 000000000..4ddacf04b Binary files /dev/null and b/fonts/TewiFontOutline/0129.png differ diff --git a/fonts/TewiFontOutline/012A.png b/fonts/TewiFontOutline/012A.png new file mode 100644 index 000000000..681cd6ea6 Binary files /dev/null and b/fonts/TewiFontOutline/012A.png differ diff --git a/fonts/TewiFontOutline/012B.png b/fonts/TewiFontOutline/012B.png new file mode 100644 index 000000000..760ad9327 Binary files /dev/null and b/fonts/TewiFontOutline/012B.png differ diff --git a/fonts/TewiFontOutline/012C.png b/fonts/TewiFontOutline/012C.png new file mode 100644 index 000000000..9b2f339e2 Binary files /dev/null and b/fonts/TewiFontOutline/012C.png differ diff --git a/fonts/TewiFontOutline/012D.png b/fonts/TewiFontOutline/012D.png new file mode 100644 index 000000000..c0c514bf3 Binary files /dev/null and b/fonts/TewiFontOutline/012D.png differ diff --git a/fonts/TewiFontOutline/012E.png b/fonts/TewiFontOutline/012E.png new file mode 100644 index 000000000..4f0a971e3 Binary files /dev/null and b/fonts/TewiFontOutline/012E.png differ diff --git a/fonts/TewiFontOutline/012F.png b/fonts/TewiFontOutline/012F.png new file mode 100644 index 000000000..1c05fcfe8 Binary files /dev/null and b/fonts/TewiFontOutline/012F.png differ diff --git a/fonts/TewiFontOutline/0130.png b/fonts/TewiFontOutline/0130.png new file mode 100644 index 000000000..2301a3b0e Binary files /dev/null and b/fonts/TewiFontOutline/0130.png differ diff --git a/fonts/TewiFontOutline/0131.png b/fonts/TewiFontOutline/0131.png new file mode 100644 index 000000000..ed05cc47c Binary files /dev/null and b/fonts/TewiFontOutline/0131.png differ diff --git a/fonts/TewiFontOutline/0132.png b/fonts/TewiFontOutline/0132.png new file mode 100644 index 000000000..befd3c209 Binary files /dev/null and b/fonts/TewiFontOutline/0132.png differ diff --git a/fonts/TewiFontOutline/0133.png b/fonts/TewiFontOutline/0133.png new file mode 100644 index 000000000..9e22becdf Binary files /dev/null and b/fonts/TewiFontOutline/0133.png differ diff --git a/fonts/TewiFontOutline/0134.png b/fonts/TewiFontOutline/0134.png new file mode 100644 index 000000000..c69778d4d Binary files /dev/null and b/fonts/TewiFontOutline/0134.png differ diff --git a/fonts/TewiFontOutline/0135.png b/fonts/TewiFontOutline/0135.png new file mode 100644 index 000000000..111f855e9 Binary files /dev/null and b/fonts/TewiFontOutline/0135.png differ diff --git a/fonts/TewiFontOutline/0136.png b/fonts/TewiFontOutline/0136.png new file mode 100644 index 000000000..16e06579d Binary files /dev/null and b/fonts/TewiFontOutline/0136.png differ diff --git a/fonts/TewiFontOutline/0137.png b/fonts/TewiFontOutline/0137.png new file mode 100644 index 000000000..3ce6798c6 Binary files /dev/null and b/fonts/TewiFontOutline/0137.png differ diff --git a/fonts/TewiFontOutline/0138.png b/fonts/TewiFontOutline/0138.png new file mode 100644 index 000000000..d62aec8dd Binary files /dev/null and b/fonts/TewiFontOutline/0138.png differ diff --git a/fonts/TewiFontOutline/0139.png b/fonts/TewiFontOutline/0139.png new file mode 100644 index 000000000..02db9dfd8 Binary files /dev/null and b/fonts/TewiFontOutline/0139.png differ diff --git a/fonts/TewiFontOutline/013A.png b/fonts/TewiFontOutline/013A.png new file mode 100644 index 000000000..7fe8fd6c6 Binary files /dev/null and b/fonts/TewiFontOutline/013A.png differ diff --git a/fonts/TewiFontOutline/013B.png b/fonts/TewiFontOutline/013B.png new file mode 100644 index 000000000..1966d2e3e Binary files /dev/null and b/fonts/TewiFontOutline/013B.png differ diff --git a/fonts/TewiFontOutline/013C.png b/fonts/TewiFontOutline/013C.png new file mode 100644 index 000000000..598183f4c Binary files /dev/null and b/fonts/TewiFontOutline/013C.png differ diff --git a/fonts/TewiFontOutline/013D.png b/fonts/TewiFontOutline/013D.png new file mode 100644 index 000000000..9db5c6ef5 Binary files /dev/null and b/fonts/TewiFontOutline/013D.png differ diff --git a/fonts/TewiFontOutline/013E.png b/fonts/TewiFontOutline/013E.png new file mode 100644 index 000000000..2b72042a6 Binary files /dev/null and b/fonts/TewiFontOutline/013E.png differ diff --git a/fonts/TewiFontOutline/013F.png b/fonts/TewiFontOutline/013F.png new file mode 100644 index 000000000..d9a390ece Binary files /dev/null and b/fonts/TewiFontOutline/013F.png differ diff --git a/fonts/TewiFontOutline/0140.png b/fonts/TewiFontOutline/0140.png new file mode 100644 index 000000000..cacb5efc6 Binary files /dev/null and b/fonts/TewiFontOutline/0140.png differ diff --git a/fonts/TewiFontOutline/0141.png b/fonts/TewiFontOutline/0141.png new file mode 100644 index 000000000..aac2723d6 Binary files /dev/null and b/fonts/TewiFontOutline/0141.png differ diff --git a/fonts/TewiFontOutline/0142.png b/fonts/TewiFontOutline/0142.png new file mode 100644 index 000000000..5d653faec Binary files /dev/null and b/fonts/TewiFontOutline/0142.png differ diff --git a/fonts/TewiFontOutline/0143.png b/fonts/TewiFontOutline/0143.png new file mode 100644 index 000000000..9711cc776 Binary files /dev/null and b/fonts/TewiFontOutline/0143.png differ diff --git a/fonts/TewiFontOutline/0144.png b/fonts/TewiFontOutline/0144.png new file mode 100644 index 000000000..54f038106 Binary files /dev/null and b/fonts/TewiFontOutline/0144.png differ diff --git a/fonts/TewiFontOutline/0145.png b/fonts/TewiFontOutline/0145.png new file mode 100644 index 000000000..9c7b52528 Binary files /dev/null and b/fonts/TewiFontOutline/0145.png differ diff --git a/fonts/TewiFontOutline/0146.png b/fonts/TewiFontOutline/0146.png new file mode 100644 index 000000000..19a6da7ec Binary files /dev/null and b/fonts/TewiFontOutline/0146.png differ diff --git a/fonts/TewiFontOutline/0147.png b/fonts/TewiFontOutline/0147.png new file mode 100644 index 000000000..7f83f35bd Binary files /dev/null and b/fonts/TewiFontOutline/0147.png differ diff --git a/fonts/TewiFontOutline/0148.png b/fonts/TewiFontOutline/0148.png new file mode 100644 index 000000000..94a3f60d2 Binary files /dev/null and b/fonts/TewiFontOutline/0148.png differ diff --git a/fonts/TewiFontOutline/0149.png b/fonts/TewiFontOutline/0149.png new file mode 100644 index 000000000..53e0a6438 Binary files /dev/null and b/fonts/TewiFontOutline/0149.png differ diff --git a/fonts/TewiFontOutline/014A.png b/fonts/TewiFontOutline/014A.png new file mode 100644 index 000000000..ea2f6f94e Binary files /dev/null and b/fonts/TewiFontOutline/014A.png differ diff --git a/fonts/TewiFontOutline/014B.png b/fonts/TewiFontOutline/014B.png new file mode 100644 index 000000000..a4ee26f3e Binary files /dev/null and b/fonts/TewiFontOutline/014B.png differ diff --git a/fonts/TewiFontOutline/014C.png b/fonts/TewiFontOutline/014C.png new file mode 100644 index 000000000..957f30418 Binary files /dev/null and b/fonts/TewiFontOutline/014C.png differ diff --git a/fonts/TewiFontOutline/014D.png b/fonts/TewiFontOutline/014D.png new file mode 100644 index 000000000..c04e7babe Binary files /dev/null and b/fonts/TewiFontOutline/014D.png differ diff --git a/fonts/TewiFontOutline/014E.png b/fonts/TewiFontOutline/014E.png new file mode 100644 index 000000000..4fc86a403 Binary files /dev/null and b/fonts/TewiFontOutline/014E.png differ diff --git a/fonts/TewiFontOutline/014F.png b/fonts/TewiFontOutline/014F.png new file mode 100644 index 000000000..be4d27457 Binary files /dev/null and b/fonts/TewiFontOutline/014F.png differ diff --git a/fonts/TewiFontOutline/0150.png b/fonts/TewiFontOutline/0150.png new file mode 100644 index 000000000..3be1befa5 Binary files /dev/null and b/fonts/TewiFontOutline/0150.png differ diff --git a/fonts/TewiFontOutline/0151.png b/fonts/TewiFontOutline/0151.png new file mode 100644 index 000000000..12b769517 Binary files /dev/null and b/fonts/TewiFontOutline/0151.png differ diff --git a/fonts/TewiFontOutline/0152.png b/fonts/TewiFontOutline/0152.png new file mode 100644 index 000000000..26144c54b Binary files /dev/null and b/fonts/TewiFontOutline/0152.png differ diff --git a/fonts/TewiFontOutline/0153.png b/fonts/TewiFontOutline/0153.png new file mode 100644 index 000000000..18c0cf960 Binary files /dev/null and b/fonts/TewiFontOutline/0153.png differ diff --git a/fonts/TewiFontOutline/0154.png b/fonts/TewiFontOutline/0154.png new file mode 100644 index 000000000..13f2c169d Binary files /dev/null and b/fonts/TewiFontOutline/0154.png differ diff --git a/fonts/TewiFontOutline/0155.png b/fonts/TewiFontOutline/0155.png new file mode 100644 index 000000000..09cd02d3f Binary files /dev/null and b/fonts/TewiFontOutline/0155.png differ diff --git a/fonts/TewiFontOutline/0156.png b/fonts/TewiFontOutline/0156.png new file mode 100644 index 000000000..71f3d817c Binary files /dev/null and b/fonts/TewiFontOutline/0156.png differ diff --git a/fonts/TewiFontOutline/0157.png b/fonts/TewiFontOutline/0157.png new file mode 100644 index 000000000..3a2a59149 Binary files /dev/null and b/fonts/TewiFontOutline/0157.png differ diff --git a/fonts/TewiFontOutline/0158.png b/fonts/TewiFontOutline/0158.png new file mode 100644 index 000000000..2a5400d0e Binary files /dev/null and b/fonts/TewiFontOutline/0158.png differ diff --git a/fonts/TewiFontOutline/0159.png b/fonts/TewiFontOutline/0159.png new file mode 100644 index 000000000..59314fc8b Binary files /dev/null and b/fonts/TewiFontOutline/0159.png differ diff --git a/fonts/TewiFontOutline/015A.png b/fonts/TewiFontOutline/015A.png new file mode 100644 index 000000000..aa5cb7da7 Binary files /dev/null and b/fonts/TewiFontOutline/015A.png differ diff --git a/fonts/TewiFontOutline/015B.png b/fonts/TewiFontOutline/015B.png new file mode 100644 index 000000000..f84517b69 Binary files /dev/null and b/fonts/TewiFontOutline/015B.png differ diff --git a/fonts/TewiFontOutline/015C.png b/fonts/TewiFontOutline/015C.png new file mode 100644 index 000000000..4ce574685 Binary files /dev/null and b/fonts/TewiFontOutline/015C.png differ diff --git a/fonts/TewiFontOutline/015D.png b/fonts/TewiFontOutline/015D.png new file mode 100644 index 000000000..a8d32596f Binary files /dev/null and b/fonts/TewiFontOutline/015D.png differ diff --git a/fonts/TewiFontOutline/015E.png b/fonts/TewiFontOutline/015E.png new file mode 100644 index 000000000..d520a0770 Binary files /dev/null and b/fonts/TewiFontOutline/015E.png differ diff --git a/fonts/TewiFontOutline/015F.png b/fonts/TewiFontOutline/015F.png new file mode 100644 index 000000000..e2d5f5dce Binary files /dev/null and b/fonts/TewiFontOutline/015F.png differ diff --git a/fonts/TewiFontOutline/0160.png b/fonts/TewiFontOutline/0160.png new file mode 100644 index 000000000..3e67647c7 Binary files /dev/null and b/fonts/TewiFontOutline/0160.png differ diff --git a/fonts/TewiFontOutline/0161.png b/fonts/TewiFontOutline/0161.png new file mode 100644 index 000000000..fc0be2fc7 Binary files /dev/null and b/fonts/TewiFontOutline/0161.png differ diff --git a/fonts/TewiFontOutline/0162.png b/fonts/TewiFontOutline/0162.png new file mode 100644 index 000000000..009205684 Binary files /dev/null and b/fonts/TewiFontOutline/0162.png differ diff --git a/fonts/TewiFontOutline/0163.png b/fonts/TewiFontOutline/0163.png new file mode 100644 index 000000000..f7bd64009 Binary files /dev/null and b/fonts/TewiFontOutline/0163.png differ diff --git a/fonts/TewiFontOutline/0164.png b/fonts/TewiFontOutline/0164.png new file mode 100644 index 000000000..040d76244 Binary files /dev/null and b/fonts/TewiFontOutline/0164.png differ diff --git a/fonts/TewiFontOutline/0165.png b/fonts/TewiFontOutline/0165.png new file mode 100644 index 000000000..3443eacd9 Binary files /dev/null and b/fonts/TewiFontOutline/0165.png differ diff --git a/fonts/TewiFontOutline/0166.png b/fonts/TewiFontOutline/0166.png new file mode 100644 index 000000000..a60d33390 Binary files /dev/null and b/fonts/TewiFontOutline/0166.png differ diff --git a/fonts/TewiFontOutline/0167.png b/fonts/TewiFontOutline/0167.png new file mode 100644 index 000000000..3bc047b3d Binary files /dev/null and b/fonts/TewiFontOutline/0167.png differ diff --git a/fonts/TewiFontOutline/0168.png b/fonts/TewiFontOutline/0168.png new file mode 100644 index 000000000..6b6c4c070 Binary files /dev/null and b/fonts/TewiFontOutline/0168.png differ diff --git a/fonts/TewiFontOutline/0169.png b/fonts/TewiFontOutline/0169.png new file mode 100644 index 000000000..3f14f8445 Binary files /dev/null and b/fonts/TewiFontOutline/0169.png differ diff --git a/fonts/TewiFontOutline/016A.png b/fonts/TewiFontOutline/016A.png new file mode 100644 index 000000000..c30addc74 Binary files /dev/null and b/fonts/TewiFontOutline/016A.png differ diff --git a/fonts/TewiFontOutline/016B.png b/fonts/TewiFontOutline/016B.png new file mode 100644 index 000000000..1f6a69132 Binary files /dev/null and b/fonts/TewiFontOutline/016B.png differ diff --git a/fonts/TewiFontOutline/016C.png b/fonts/TewiFontOutline/016C.png new file mode 100644 index 000000000..48b7298f9 Binary files /dev/null and b/fonts/TewiFontOutline/016C.png differ diff --git a/fonts/TewiFontOutline/016D.png b/fonts/TewiFontOutline/016D.png new file mode 100644 index 000000000..f38514850 Binary files /dev/null and b/fonts/TewiFontOutline/016D.png differ diff --git a/fonts/TewiFontOutline/016E.png b/fonts/TewiFontOutline/016E.png new file mode 100644 index 000000000..a07b1cea2 Binary files /dev/null and b/fonts/TewiFontOutline/016E.png differ diff --git a/fonts/TewiFontOutline/016F.png b/fonts/TewiFontOutline/016F.png new file mode 100644 index 000000000..163398350 Binary files /dev/null and b/fonts/TewiFontOutline/016F.png differ diff --git a/fonts/TewiFontOutline/0170.png b/fonts/TewiFontOutline/0170.png new file mode 100644 index 000000000..073f29d5e Binary files /dev/null and b/fonts/TewiFontOutline/0170.png differ diff --git a/fonts/TewiFontOutline/0171.png b/fonts/TewiFontOutline/0171.png new file mode 100644 index 000000000..dda66ecca Binary files /dev/null and b/fonts/TewiFontOutline/0171.png differ diff --git a/fonts/TewiFontOutline/0172.png b/fonts/TewiFontOutline/0172.png new file mode 100644 index 000000000..35a58ccf5 Binary files /dev/null and b/fonts/TewiFontOutline/0172.png differ diff --git a/fonts/TewiFontOutline/0173.png b/fonts/TewiFontOutline/0173.png new file mode 100644 index 000000000..1eae128c5 Binary files /dev/null and b/fonts/TewiFontOutline/0173.png differ diff --git a/fonts/TewiFontOutline/0174.png b/fonts/TewiFontOutline/0174.png new file mode 100644 index 000000000..1706b964c Binary files /dev/null and b/fonts/TewiFontOutline/0174.png differ diff --git a/fonts/TewiFontOutline/0175.png b/fonts/TewiFontOutline/0175.png new file mode 100644 index 000000000..9a7c91350 Binary files /dev/null and b/fonts/TewiFontOutline/0175.png differ diff --git a/fonts/TewiFontOutline/0176.png b/fonts/TewiFontOutline/0176.png new file mode 100644 index 000000000..67b1c613d Binary files /dev/null and b/fonts/TewiFontOutline/0176.png differ diff --git a/fonts/TewiFontOutline/0177.png b/fonts/TewiFontOutline/0177.png new file mode 100644 index 000000000..6bab976f5 Binary files /dev/null and b/fonts/TewiFontOutline/0177.png differ diff --git a/fonts/TewiFontOutline/0178.png b/fonts/TewiFontOutline/0178.png new file mode 100644 index 000000000..c573af186 Binary files /dev/null and b/fonts/TewiFontOutline/0178.png differ diff --git a/fonts/TewiFontOutline/0179.png b/fonts/TewiFontOutline/0179.png new file mode 100644 index 000000000..9b639e65c Binary files /dev/null and b/fonts/TewiFontOutline/0179.png differ diff --git a/fonts/TewiFontOutline/017A.png b/fonts/TewiFontOutline/017A.png new file mode 100644 index 000000000..71c32a504 Binary files /dev/null and b/fonts/TewiFontOutline/017A.png differ diff --git a/fonts/TewiFontOutline/017B.png b/fonts/TewiFontOutline/017B.png new file mode 100644 index 000000000..d1f4aa9de Binary files /dev/null and b/fonts/TewiFontOutline/017B.png differ diff --git a/fonts/TewiFontOutline/017C.png b/fonts/TewiFontOutline/017C.png new file mode 100644 index 000000000..4ebbbbed9 Binary files /dev/null and b/fonts/TewiFontOutline/017C.png differ diff --git a/fonts/TewiFontOutline/017D.png b/fonts/TewiFontOutline/017D.png new file mode 100644 index 000000000..62f0fac82 Binary files /dev/null and b/fonts/TewiFontOutline/017D.png differ diff --git a/fonts/TewiFontOutline/017E.png b/fonts/TewiFontOutline/017E.png new file mode 100644 index 000000000..ff45eab1d Binary files /dev/null and b/fonts/TewiFontOutline/017E.png differ diff --git a/fonts/TewiFontOutline/017F.png b/fonts/TewiFontOutline/017F.png new file mode 100644 index 000000000..eb209106b Binary files /dev/null and b/fonts/TewiFontOutline/017F.png differ diff --git a/fonts/TewiFontOutline/0180.png b/fonts/TewiFontOutline/0180.png new file mode 100644 index 000000000..a203f674e Binary files /dev/null and b/fonts/TewiFontOutline/0180.png differ diff --git a/fonts/TewiFontOutline/0181.png b/fonts/TewiFontOutline/0181.png new file mode 100644 index 000000000..cb003429f Binary files /dev/null and b/fonts/TewiFontOutline/0181.png differ diff --git a/fonts/TewiFontOutline/0182.png b/fonts/TewiFontOutline/0182.png new file mode 100644 index 000000000..9cbbe2baf Binary files /dev/null and b/fonts/TewiFontOutline/0182.png differ diff --git a/fonts/TewiFontOutline/0183.png b/fonts/TewiFontOutline/0183.png new file mode 100644 index 000000000..0973f25f9 Binary files /dev/null and b/fonts/TewiFontOutline/0183.png differ diff --git a/fonts/TewiFontOutline/0184.png b/fonts/TewiFontOutline/0184.png new file mode 100644 index 000000000..d2f5ad978 Binary files /dev/null and b/fonts/TewiFontOutline/0184.png differ diff --git a/fonts/TewiFontOutline/0185.png b/fonts/TewiFontOutline/0185.png new file mode 100644 index 000000000..22fd7f144 Binary files /dev/null and b/fonts/TewiFontOutline/0185.png differ diff --git a/fonts/TewiFontOutline/0186.png b/fonts/TewiFontOutline/0186.png new file mode 100644 index 000000000..30b59fdc8 Binary files /dev/null and b/fonts/TewiFontOutline/0186.png differ diff --git a/fonts/TewiFontOutline/0187.png b/fonts/TewiFontOutline/0187.png new file mode 100644 index 000000000..fba920f5d Binary files /dev/null and b/fonts/TewiFontOutline/0187.png differ diff --git a/fonts/TewiFontOutline/0188.png b/fonts/TewiFontOutline/0188.png new file mode 100644 index 000000000..7bce0a8be Binary files /dev/null and b/fonts/TewiFontOutline/0188.png differ diff --git a/fonts/TewiFontOutline/0189.png b/fonts/TewiFontOutline/0189.png new file mode 100644 index 000000000..2ee04cbae Binary files /dev/null and b/fonts/TewiFontOutline/0189.png differ diff --git a/fonts/TewiFontOutline/018A.png b/fonts/TewiFontOutline/018A.png new file mode 100644 index 000000000..422362cc5 Binary files /dev/null and b/fonts/TewiFontOutline/018A.png differ diff --git a/fonts/TewiFontOutline/018B.png b/fonts/TewiFontOutline/018B.png new file mode 100644 index 000000000..6bb03d3e9 Binary files /dev/null and b/fonts/TewiFontOutline/018B.png differ diff --git a/fonts/TewiFontOutline/018C.png b/fonts/TewiFontOutline/018C.png new file mode 100644 index 000000000..f9d99d281 Binary files /dev/null and b/fonts/TewiFontOutline/018C.png differ diff --git a/fonts/TewiFontOutline/018D.png b/fonts/TewiFontOutline/018D.png new file mode 100644 index 000000000..387ff0f31 Binary files /dev/null and b/fonts/TewiFontOutline/018D.png differ diff --git a/fonts/TewiFontOutline/018E.png b/fonts/TewiFontOutline/018E.png new file mode 100644 index 000000000..c403d48a3 Binary files /dev/null and b/fonts/TewiFontOutline/018E.png differ diff --git a/fonts/TewiFontOutline/018F.png b/fonts/TewiFontOutline/018F.png new file mode 100644 index 000000000..6e7f72132 Binary files /dev/null and b/fonts/TewiFontOutline/018F.png differ diff --git a/fonts/TewiFontOutline/0190.png b/fonts/TewiFontOutline/0190.png new file mode 100644 index 000000000..b117e37de Binary files /dev/null and b/fonts/TewiFontOutline/0190.png differ diff --git a/fonts/TewiFontOutline/0191.png b/fonts/TewiFontOutline/0191.png new file mode 100644 index 000000000..4ad7e32ae Binary files /dev/null and b/fonts/TewiFontOutline/0191.png differ diff --git a/fonts/TewiFontOutline/0192.png b/fonts/TewiFontOutline/0192.png new file mode 100644 index 000000000..7c6e503e9 Binary files /dev/null and b/fonts/TewiFontOutline/0192.png differ diff --git a/fonts/TewiFontOutline/0193.png b/fonts/TewiFontOutline/0193.png new file mode 100644 index 000000000..ebe006d22 Binary files /dev/null and b/fonts/TewiFontOutline/0193.png differ diff --git a/fonts/TewiFontOutline/0194.png b/fonts/TewiFontOutline/0194.png new file mode 100644 index 000000000..bdd6d3543 Binary files /dev/null and b/fonts/TewiFontOutline/0194.png differ diff --git a/fonts/TewiFontOutline/0195.png b/fonts/TewiFontOutline/0195.png new file mode 100644 index 000000000..02d666f18 Binary files /dev/null and b/fonts/TewiFontOutline/0195.png differ diff --git a/fonts/TewiFontOutline/0196.png b/fonts/TewiFontOutline/0196.png new file mode 100644 index 000000000..f7a4aeb5e Binary files /dev/null and b/fonts/TewiFontOutline/0196.png differ diff --git a/fonts/TewiFontOutline/0197.png b/fonts/TewiFontOutline/0197.png new file mode 100644 index 000000000..d0f0184d0 Binary files /dev/null and b/fonts/TewiFontOutline/0197.png differ diff --git a/fonts/TewiFontOutline/0198.png b/fonts/TewiFontOutline/0198.png new file mode 100644 index 000000000..34c88010f Binary files /dev/null and b/fonts/TewiFontOutline/0198.png differ diff --git a/fonts/TewiFontOutline/0199.png b/fonts/TewiFontOutline/0199.png new file mode 100644 index 000000000..0e9f4b7fe Binary files /dev/null and b/fonts/TewiFontOutline/0199.png differ diff --git a/fonts/TewiFontOutline/019A.png b/fonts/TewiFontOutline/019A.png new file mode 100644 index 000000000..1a1be6fd6 Binary files /dev/null and b/fonts/TewiFontOutline/019A.png differ diff --git a/fonts/TewiFontOutline/019B.png b/fonts/TewiFontOutline/019B.png new file mode 100644 index 000000000..aab8b015b Binary files /dev/null and b/fonts/TewiFontOutline/019B.png differ diff --git a/fonts/TewiFontOutline/019C.png b/fonts/TewiFontOutline/019C.png new file mode 100644 index 000000000..1f9124a28 Binary files /dev/null and b/fonts/TewiFontOutline/019C.png differ diff --git a/fonts/TewiFontOutline/019D.png b/fonts/TewiFontOutline/019D.png new file mode 100644 index 000000000..e3d30d2d3 Binary files /dev/null and b/fonts/TewiFontOutline/019D.png differ diff --git a/fonts/TewiFontOutline/019E.png b/fonts/TewiFontOutline/019E.png new file mode 100644 index 000000000..bb6c86f8c Binary files /dev/null and b/fonts/TewiFontOutline/019E.png differ diff --git a/fonts/TewiFontOutline/019F.png b/fonts/TewiFontOutline/019F.png new file mode 100644 index 000000000..59768ee5e Binary files /dev/null and b/fonts/TewiFontOutline/019F.png differ diff --git a/fonts/TewiFontOutline/01A0.png b/fonts/TewiFontOutline/01A0.png new file mode 100644 index 000000000..bd7daac31 Binary files /dev/null and b/fonts/TewiFontOutline/01A0.png differ diff --git a/fonts/TewiFontOutline/01A1.png b/fonts/TewiFontOutline/01A1.png new file mode 100644 index 000000000..36d85d749 Binary files /dev/null and b/fonts/TewiFontOutline/01A1.png differ diff --git a/fonts/TewiFontOutline/01A2.png b/fonts/TewiFontOutline/01A2.png new file mode 100644 index 000000000..5aad9603b Binary files /dev/null and b/fonts/TewiFontOutline/01A2.png differ diff --git a/fonts/TewiFontOutline/01A3.png b/fonts/TewiFontOutline/01A3.png new file mode 100644 index 000000000..202d4b5f8 Binary files /dev/null and b/fonts/TewiFontOutline/01A3.png differ diff --git a/fonts/TewiFontOutline/01A4.png b/fonts/TewiFontOutline/01A4.png new file mode 100644 index 000000000..9c1456825 Binary files /dev/null and b/fonts/TewiFontOutline/01A4.png differ diff --git a/fonts/TewiFontOutline/01A5.png b/fonts/TewiFontOutline/01A5.png new file mode 100644 index 000000000..7aef32b58 Binary files /dev/null and b/fonts/TewiFontOutline/01A5.png differ diff --git a/fonts/TewiFontOutline/01A6.png b/fonts/TewiFontOutline/01A6.png new file mode 100644 index 000000000..46180f98a Binary files /dev/null and b/fonts/TewiFontOutline/01A6.png differ diff --git a/fonts/TewiFontOutline/01A7.png b/fonts/TewiFontOutline/01A7.png new file mode 100644 index 000000000..1a18a37c7 Binary files /dev/null and b/fonts/TewiFontOutline/01A7.png differ diff --git a/fonts/TewiFontOutline/01A8.png b/fonts/TewiFontOutline/01A8.png new file mode 100644 index 000000000..6274d9c92 Binary files /dev/null and b/fonts/TewiFontOutline/01A8.png differ diff --git a/fonts/TewiFontOutline/01A9.png b/fonts/TewiFontOutline/01A9.png new file mode 100644 index 000000000..893532bc9 Binary files /dev/null and b/fonts/TewiFontOutline/01A9.png differ diff --git a/fonts/TewiFontOutline/01AA.png b/fonts/TewiFontOutline/01AA.png new file mode 100644 index 000000000..8becf465e Binary files /dev/null and b/fonts/TewiFontOutline/01AA.png differ diff --git a/fonts/TewiFontOutline/01AB.png b/fonts/TewiFontOutline/01AB.png new file mode 100644 index 000000000..34fc8665c Binary files /dev/null and b/fonts/TewiFontOutline/01AB.png differ diff --git a/fonts/TewiFontOutline/01AC.png b/fonts/TewiFontOutline/01AC.png new file mode 100644 index 000000000..d3f7aab32 Binary files /dev/null and b/fonts/TewiFontOutline/01AC.png differ diff --git a/fonts/TewiFontOutline/01AD.png b/fonts/TewiFontOutline/01AD.png new file mode 100644 index 000000000..ae63f8075 Binary files /dev/null and b/fonts/TewiFontOutline/01AD.png differ diff --git a/fonts/TewiFontOutline/01AE.png b/fonts/TewiFontOutline/01AE.png new file mode 100644 index 000000000..76c51b1f6 Binary files /dev/null and b/fonts/TewiFontOutline/01AE.png differ diff --git a/fonts/TewiFontOutline/01AF.png b/fonts/TewiFontOutline/01AF.png new file mode 100644 index 000000000..2203d882b Binary files /dev/null and b/fonts/TewiFontOutline/01AF.png differ diff --git a/fonts/TewiFontOutline/01B0.png b/fonts/TewiFontOutline/01B0.png new file mode 100644 index 000000000..6379a2c4b Binary files /dev/null and b/fonts/TewiFontOutline/01B0.png differ diff --git a/fonts/TewiFontOutline/01B1.png b/fonts/TewiFontOutline/01B1.png new file mode 100644 index 000000000..cb0cf0d97 Binary files /dev/null and b/fonts/TewiFontOutline/01B1.png differ diff --git a/fonts/TewiFontOutline/01B2.png b/fonts/TewiFontOutline/01B2.png new file mode 100644 index 000000000..a0ae1f4fe Binary files /dev/null and b/fonts/TewiFontOutline/01B2.png differ diff --git a/fonts/TewiFontOutline/01B3.png b/fonts/TewiFontOutline/01B3.png new file mode 100644 index 000000000..aa20827e9 Binary files /dev/null and b/fonts/TewiFontOutline/01B3.png differ diff --git a/fonts/TewiFontOutline/01B4.png b/fonts/TewiFontOutline/01B4.png new file mode 100644 index 000000000..5279b990b Binary files /dev/null and b/fonts/TewiFontOutline/01B4.png differ diff --git a/fonts/TewiFontOutline/01B5.png b/fonts/TewiFontOutline/01B5.png new file mode 100644 index 000000000..2fdfca639 Binary files /dev/null and b/fonts/TewiFontOutline/01B5.png differ diff --git a/fonts/TewiFontOutline/01B6.png b/fonts/TewiFontOutline/01B6.png new file mode 100644 index 000000000..c47dbd5f1 Binary files /dev/null and b/fonts/TewiFontOutline/01B6.png differ diff --git a/fonts/TewiFontOutline/01B7.png b/fonts/TewiFontOutline/01B7.png new file mode 100644 index 000000000..8555e69d1 Binary files /dev/null and b/fonts/TewiFontOutline/01B7.png differ diff --git a/fonts/TewiFontOutline/01B8.png b/fonts/TewiFontOutline/01B8.png new file mode 100644 index 000000000..9e16e1a2e Binary files /dev/null and b/fonts/TewiFontOutline/01B8.png differ diff --git a/fonts/TewiFontOutline/01B9.png b/fonts/TewiFontOutline/01B9.png new file mode 100644 index 000000000..53c809ce0 Binary files /dev/null and b/fonts/TewiFontOutline/01B9.png differ diff --git a/fonts/TewiFontOutline/01BA.png b/fonts/TewiFontOutline/01BA.png new file mode 100644 index 000000000..9c15c3d42 Binary files /dev/null and b/fonts/TewiFontOutline/01BA.png differ diff --git a/fonts/TewiFontOutline/01BB.png b/fonts/TewiFontOutline/01BB.png new file mode 100644 index 000000000..d5fdc586a Binary files /dev/null and b/fonts/TewiFontOutline/01BB.png differ diff --git a/fonts/TewiFontOutline/01BC.png b/fonts/TewiFontOutline/01BC.png new file mode 100644 index 000000000..fd16083c1 Binary files /dev/null and b/fonts/TewiFontOutline/01BC.png differ diff --git a/fonts/TewiFontOutline/01BD.png b/fonts/TewiFontOutline/01BD.png new file mode 100644 index 000000000..f697ae0c3 Binary files /dev/null and b/fonts/TewiFontOutline/01BD.png differ diff --git a/fonts/TewiFontOutline/01BE.png b/fonts/TewiFontOutline/01BE.png new file mode 100644 index 000000000..d86364589 Binary files /dev/null and b/fonts/TewiFontOutline/01BE.png differ diff --git a/fonts/TewiFontOutline/01BF.png b/fonts/TewiFontOutline/01BF.png new file mode 100644 index 000000000..75598da80 Binary files /dev/null and b/fonts/TewiFontOutline/01BF.png differ diff --git a/fonts/TewiFontOutline/01C0.png b/fonts/TewiFontOutline/01C0.png new file mode 100644 index 000000000..5c31f93c1 Binary files /dev/null and b/fonts/TewiFontOutline/01C0.png differ diff --git a/fonts/TewiFontOutline/01C1.png b/fonts/TewiFontOutline/01C1.png new file mode 100644 index 000000000..1ef65d015 Binary files /dev/null and b/fonts/TewiFontOutline/01C1.png differ diff --git a/fonts/TewiFontOutline/01C2.png b/fonts/TewiFontOutline/01C2.png new file mode 100644 index 000000000..bee6c88a3 Binary files /dev/null and b/fonts/TewiFontOutline/01C2.png differ diff --git a/fonts/TewiFontOutline/01C3.png b/fonts/TewiFontOutline/01C3.png new file mode 100644 index 000000000..4756d44a1 Binary files /dev/null and b/fonts/TewiFontOutline/01C3.png differ diff --git a/fonts/TewiFontOutline/01C4.png b/fonts/TewiFontOutline/01C4.png new file mode 100644 index 000000000..703dd047b Binary files /dev/null and b/fonts/TewiFontOutline/01C4.png differ diff --git a/fonts/TewiFontOutline/01C5.png b/fonts/TewiFontOutline/01C5.png new file mode 100644 index 000000000..e0db06d3d Binary files /dev/null and b/fonts/TewiFontOutline/01C5.png differ diff --git a/fonts/TewiFontOutline/01C6.png b/fonts/TewiFontOutline/01C6.png new file mode 100644 index 000000000..7f0caae9a Binary files /dev/null and b/fonts/TewiFontOutline/01C6.png differ diff --git a/fonts/TewiFontOutline/01C7.png b/fonts/TewiFontOutline/01C7.png new file mode 100644 index 000000000..dab703434 Binary files /dev/null and b/fonts/TewiFontOutline/01C7.png differ diff --git a/fonts/TewiFontOutline/01C8.png b/fonts/TewiFontOutline/01C8.png new file mode 100644 index 000000000..4968d1f6b Binary files /dev/null and b/fonts/TewiFontOutline/01C8.png differ diff --git a/fonts/TewiFontOutline/01C9.png b/fonts/TewiFontOutline/01C9.png new file mode 100644 index 000000000..8c88a581a Binary files /dev/null and b/fonts/TewiFontOutline/01C9.png differ diff --git a/fonts/TewiFontOutline/01CA.png b/fonts/TewiFontOutline/01CA.png new file mode 100644 index 000000000..45ff651c2 Binary files /dev/null and b/fonts/TewiFontOutline/01CA.png differ diff --git a/fonts/TewiFontOutline/01CB.png b/fonts/TewiFontOutline/01CB.png new file mode 100644 index 000000000..7e4e753dc Binary files /dev/null and b/fonts/TewiFontOutline/01CB.png differ diff --git a/fonts/TewiFontOutline/01CC.png b/fonts/TewiFontOutline/01CC.png new file mode 100644 index 000000000..c45c8d9eb Binary files /dev/null and b/fonts/TewiFontOutline/01CC.png differ diff --git a/fonts/TewiFontOutline/01CD.png b/fonts/TewiFontOutline/01CD.png new file mode 100644 index 000000000..fdbd26d98 Binary files /dev/null and b/fonts/TewiFontOutline/01CD.png differ diff --git a/fonts/TewiFontOutline/01CE.png b/fonts/TewiFontOutline/01CE.png new file mode 100644 index 000000000..a9319cc71 Binary files /dev/null and b/fonts/TewiFontOutline/01CE.png differ diff --git a/fonts/TewiFontOutline/01CF.png b/fonts/TewiFontOutline/01CF.png new file mode 100644 index 000000000..abfa8f7bd Binary files /dev/null and b/fonts/TewiFontOutline/01CF.png differ diff --git a/fonts/TewiFontOutline/01D0.png b/fonts/TewiFontOutline/01D0.png new file mode 100644 index 000000000..285a4155c Binary files /dev/null and b/fonts/TewiFontOutline/01D0.png differ diff --git a/fonts/TewiFontOutline/01D1.png b/fonts/TewiFontOutline/01D1.png new file mode 100644 index 000000000..82925906a Binary files /dev/null and b/fonts/TewiFontOutline/01D1.png differ diff --git a/fonts/TewiFontOutline/01D2.png b/fonts/TewiFontOutline/01D2.png new file mode 100644 index 000000000..e17a73a02 Binary files /dev/null and b/fonts/TewiFontOutline/01D2.png differ diff --git a/fonts/TewiFontOutline/01D3.png b/fonts/TewiFontOutline/01D3.png new file mode 100644 index 000000000..73d9c893b Binary files /dev/null and b/fonts/TewiFontOutline/01D3.png differ diff --git a/fonts/TewiFontOutline/01D4.png b/fonts/TewiFontOutline/01D4.png new file mode 100644 index 000000000..dc9bb88a4 Binary files /dev/null and b/fonts/TewiFontOutline/01D4.png differ diff --git a/fonts/TewiFontOutline/01D5.png b/fonts/TewiFontOutline/01D5.png new file mode 100644 index 000000000..b0823d15b Binary files /dev/null and b/fonts/TewiFontOutline/01D5.png differ diff --git a/fonts/TewiFontOutline/01D6.png b/fonts/TewiFontOutline/01D6.png new file mode 100644 index 000000000..c405e66d6 Binary files /dev/null and b/fonts/TewiFontOutline/01D6.png differ diff --git a/fonts/TewiFontOutline/01D7.png b/fonts/TewiFontOutline/01D7.png new file mode 100644 index 000000000..cf7a51a79 Binary files /dev/null and b/fonts/TewiFontOutline/01D7.png differ diff --git a/fonts/TewiFontOutline/01D8.png b/fonts/TewiFontOutline/01D8.png new file mode 100644 index 000000000..de70c294d Binary files /dev/null and b/fonts/TewiFontOutline/01D8.png differ diff --git a/fonts/TewiFontOutline/01D9.png b/fonts/TewiFontOutline/01D9.png new file mode 100644 index 000000000..4c34ea293 Binary files /dev/null and b/fonts/TewiFontOutline/01D9.png differ diff --git a/fonts/TewiFontOutline/01DA.png b/fonts/TewiFontOutline/01DA.png new file mode 100644 index 000000000..d4019a36e Binary files /dev/null and b/fonts/TewiFontOutline/01DA.png differ diff --git a/fonts/TewiFontOutline/01DB.png b/fonts/TewiFontOutline/01DB.png new file mode 100644 index 000000000..b781bd3cd Binary files /dev/null and b/fonts/TewiFontOutline/01DB.png differ diff --git a/fonts/TewiFontOutline/01DC.png b/fonts/TewiFontOutline/01DC.png new file mode 100644 index 000000000..88bec9e41 Binary files /dev/null and b/fonts/TewiFontOutline/01DC.png differ diff --git a/fonts/TewiFontOutline/01DD.png b/fonts/TewiFontOutline/01DD.png new file mode 100644 index 000000000..b99e2a8d9 Binary files /dev/null and b/fonts/TewiFontOutline/01DD.png differ diff --git a/fonts/TewiFontOutline/01DE.png b/fonts/TewiFontOutline/01DE.png new file mode 100644 index 000000000..034afad0b Binary files /dev/null and b/fonts/TewiFontOutline/01DE.png differ diff --git a/fonts/TewiFontOutline/01DF.png b/fonts/TewiFontOutline/01DF.png new file mode 100644 index 000000000..617ac31cd Binary files /dev/null and b/fonts/TewiFontOutline/01DF.png differ diff --git a/fonts/TewiFontOutline/01E0.png b/fonts/TewiFontOutline/01E0.png new file mode 100644 index 000000000..5a5521688 Binary files /dev/null and b/fonts/TewiFontOutline/01E0.png differ diff --git a/fonts/TewiFontOutline/01E1.png b/fonts/TewiFontOutline/01E1.png new file mode 100644 index 000000000..d48b9bc8b Binary files /dev/null and b/fonts/TewiFontOutline/01E1.png differ diff --git a/fonts/TewiFontOutline/01E2.png b/fonts/TewiFontOutline/01E2.png new file mode 100644 index 000000000..abe90c326 Binary files /dev/null and b/fonts/TewiFontOutline/01E2.png differ diff --git a/fonts/TewiFontOutline/01E3.png b/fonts/TewiFontOutline/01E3.png new file mode 100644 index 000000000..03606620b Binary files /dev/null and b/fonts/TewiFontOutline/01E3.png differ diff --git a/fonts/TewiFontOutline/01E4.png b/fonts/TewiFontOutline/01E4.png new file mode 100644 index 000000000..d7153e696 Binary files /dev/null and b/fonts/TewiFontOutline/01E4.png differ diff --git a/fonts/TewiFontOutline/01E5.png b/fonts/TewiFontOutline/01E5.png new file mode 100644 index 000000000..c44abc22e Binary files /dev/null and b/fonts/TewiFontOutline/01E5.png differ diff --git a/fonts/TewiFontOutline/01E6.png b/fonts/TewiFontOutline/01E6.png new file mode 100644 index 000000000..833a84579 Binary files /dev/null and b/fonts/TewiFontOutline/01E6.png differ diff --git a/fonts/TewiFontOutline/01E7.png b/fonts/TewiFontOutline/01E7.png new file mode 100644 index 000000000..e59756913 Binary files /dev/null and b/fonts/TewiFontOutline/01E7.png differ diff --git a/fonts/TewiFontOutline/01E8.png b/fonts/TewiFontOutline/01E8.png new file mode 100644 index 000000000..f8060a305 Binary files /dev/null and b/fonts/TewiFontOutline/01E8.png differ diff --git a/fonts/TewiFontOutline/01E9.png b/fonts/TewiFontOutline/01E9.png new file mode 100644 index 000000000..bb9ad26d9 Binary files /dev/null and b/fonts/TewiFontOutline/01E9.png differ diff --git a/fonts/TewiFontOutline/01EA.png b/fonts/TewiFontOutline/01EA.png new file mode 100644 index 000000000..8ca1ccee9 Binary files /dev/null and b/fonts/TewiFontOutline/01EA.png differ diff --git a/fonts/TewiFontOutline/01EB.png b/fonts/TewiFontOutline/01EB.png new file mode 100644 index 000000000..89bd44133 Binary files /dev/null and b/fonts/TewiFontOutline/01EB.png differ diff --git a/fonts/TewiFontOutline/01EC.png b/fonts/TewiFontOutline/01EC.png new file mode 100644 index 000000000..89bbc87f0 Binary files /dev/null and b/fonts/TewiFontOutline/01EC.png differ diff --git a/fonts/TewiFontOutline/01ED.png b/fonts/TewiFontOutline/01ED.png new file mode 100644 index 000000000..0bebdf180 Binary files /dev/null and b/fonts/TewiFontOutline/01ED.png differ diff --git a/fonts/TewiFontOutline/01EE.png b/fonts/TewiFontOutline/01EE.png new file mode 100644 index 000000000..e8c170c33 Binary files /dev/null and b/fonts/TewiFontOutline/01EE.png differ diff --git a/fonts/TewiFontOutline/01EF.png b/fonts/TewiFontOutline/01EF.png new file mode 100644 index 000000000..c6cd64bd8 Binary files /dev/null and b/fonts/TewiFontOutline/01EF.png differ diff --git a/fonts/TewiFontOutline/01F0.png b/fonts/TewiFontOutline/01F0.png new file mode 100644 index 000000000..d40328bca Binary files /dev/null and b/fonts/TewiFontOutline/01F0.png differ diff --git a/fonts/TewiFontOutline/01F1.png b/fonts/TewiFontOutline/01F1.png new file mode 100644 index 000000000..998935647 Binary files /dev/null and b/fonts/TewiFontOutline/01F1.png differ diff --git a/fonts/TewiFontOutline/01F2.png b/fonts/TewiFontOutline/01F2.png new file mode 100644 index 000000000..4527fc5dd Binary files /dev/null and b/fonts/TewiFontOutline/01F2.png differ diff --git a/fonts/TewiFontOutline/01F3.png b/fonts/TewiFontOutline/01F3.png new file mode 100644 index 000000000..d996e160f Binary files /dev/null and b/fonts/TewiFontOutline/01F3.png differ diff --git a/fonts/TewiFontOutline/01F4.png b/fonts/TewiFontOutline/01F4.png new file mode 100644 index 000000000..833a84579 Binary files /dev/null and b/fonts/TewiFontOutline/01F4.png differ diff --git a/fonts/TewiFontOutline/01F5.png b/fonts/TewiFontOutline/01F5.png new file mode 100644 index 000000000..a8d5f4fb5 Binary files /dev/null and b/fonts/TewiFontOutline/01F5.png differ diff --git a/fonts/TewiFontOutline/01F6.png b/fonts/TewiFontOutline/01F6.png new file mode 100644 index 000000000..6ab37db7e Binary files /dev/null and b/fonts/TewiFontOutline/01F6.png differ diff --git a/fonts/TewiFontOutline/01F7.png b/fonts/TewiFontOutline/01F7.png new file mode 100644 index 000000000..d01da1c4b Binary files /dev/null and b/fonts/TewiFontOutline/01F7.png differ diff --git a/fonts/TewiFontOutline/01F8.png b/fonts/TewiFontOutline/01F8.png new file mode 100644 index 000000000..a7d4f3e37 Binary files /dev/null and b/fonts/TewiFontOutline/01F8.png differ diff --git a/fonts/TewiFontOutline/01F9.png b/fonts/TewiFontOutline/01F9.png new file mode 100644 index 000000000..ede2cf658 Binary files /dev/null and b/fonts/TewiFontOutline/01F9.png differ diff --git a/fonts/TewiFontOutline/01FA.png b/fonts/TewiFontOutline/01FA.png new file mode 100644 index 000000000..760acb890 Binary files /dev/null and b/fonts/TewiFontOutline/01FA.png differ diff --git a/fonts/TewiFontOutline/01FB.png b/fonts/TewiFontOutline/01FB.png new file mode 100644 index 000000000..ccc19aab4 Binary files /dev/null and b/fonts/TewiFontOutline/01FB.png differ diff --git a/fonts/TewiFontOutline/01FC.png b/fonts/TewiFontOutline/01FC.png new file mode 100644 index 000000000..d53522d42 Binary files /dev/null and b/fonts/TewiFontOutline/01FC.png differ diff --git a/fonts/TewiFontOutline/01FD.png b/fonts/TewiFontOutline/01FD.png new file mode 100644 index 000000000..480ed4dbe Binary files /dev/null and b/fonts/TewiFontOutline/01FD.png differ diff --git a/fonts/TewiFontOutline/01FE.png b/fonts/TewiFontOutline/01FE.png new file mode 100644 index 000000000..5b14efb68 Binary files /dev/null and b/fonts/TewiFontOutline/01FE.png differ diff --git a/fonts/TewiFontOutline/01FF.png b/fonts/TewiFontOutline/01FF.png new file mode 100644 index 000000000..ea5ca681a Binary files /dev/null and b/fonts/TewiFontOutline/01FF.png differ diff --git a/fonts/TewiFontOutline/0200.png b/fonts/TewiFontOutline/0200.png new file mode 100644 index 000000000..2eb5a0a2a Binary files /dev/null and b/fonts/TewiFontOutline/0200.png differ diff --git a/fonts/TewiFontOutline/0201.png b/fonts/TewiFontOutline/0201.png new file mode 100644 index 000000000..403314feb Binary files /dev/null and b/fonts/TewiFontOutline/0201.png differ diff --git a/fonts/TewiFontOutline/0202.png b/fonts/TewiFontOutline/0202.png new file mode 100644 index 000000000..6bca3c4e2 Binary files /dev/null and b/fonts/TewiFontOutline/0202.png differ diff --git a/fonts/TewiFontOutline/0203.png b/fonts/TewiFontOutline/0203.png new file mode 100644 index 000000000..da2c99252 Binary files /dev/null and b/fonts/TewiFontOutline/0203.png differ diff --git a/fonts/TewiFontOutline/0204.png b/fonts/TewiFontOutline/0204.png new file mode 100644 index 000000000..a8cd71b40 Binary files /dev/null and b/fonts/TewiFontOutline/0204.png differ diff --git a/fonts/TewiFontOutline/0205.png b/fonts/TewiFontOutline/0205.png new file mode 100644 index 000000000..6116ebab4 Binary files /dev/null and b/fonts/TewiFontOutline/0205.png differ diff --git a/fonts/TewiFontOutline/0206.png b/fonts/TewiFontOutline/0206.png new file mode 100644 index 000000000..ddb5bd5a1 Binary files /dev/null and b/fonts/TewiFontOutline/0206.png differ diff --git a/fonts/TewiFontOutline/0207.png b/fonts/TewiFontOutline/0207.png new file mode 100644 index 000000000..1809b8ea7 Binary files /dev/null and b/fonts/TewiFontOutline/0207.png differ diff --git a/fonts/TewiFontOutline/0208.png b/fonts/TewiFontOutline/0208.png new file mode 100644 index 000000000..ec13372c2 Binary files /dev/null and b/fonts/TewiFontOutline/0208.png differ diff --git a/fonts/TewiFontOutline/0209.png b/fonts/TewiFontOutline/0209.png new file mode 100644 index 000000000..bab7392b9 Binary files /dev/null and b/fonts/TewiFontOutline/0209.png differ diff --git a/fonts/TewiFontOutline/020A.png b/fonts/TewiFontOutline/020A.png new file mode 100644 index 000000000..936cf39d2 Binary files /dev/null and b/fonts/TewiFontOutline/020A.png differ diff --git a/fonts/TewiFontOutline/020B.png b/fonts/TewiFontOutline/020B.png new file mode 100644 index 000000000..4641eb848 Binary files /dev/null and b/fonts/TewiFontOutline/020B.png differ diff --git a/fonts/TewiFontOutline/020C.png b/fonts/TewiFontOutline/020C.png new file mode 100644 index 000000000..8e296a0b5 Binary files /dev/null and b/fonts/TewiFontOutline/020C.png differ diff --git a/fonts/TewiFontOutline/020D.png b/fonts/TewiFontOutline/020D.png new file mode 100644 index 000000000..541d04de4 Binary files /dev/null and b/fonts/TewiFontOutline/020D.png differ diff --git a/fonts/TewiFontOutline/020E.png b/fonts/TewiFontOutline/020E.png new file mode 100644 index 000000000..569be9088 Binary files /dev/null and b/fonts/TewiFontOutline/020E.png differ diff --git a/fonts/TewiFontOutline/020F.png b/fonts/TewiFontOutline/020F.png new file mode 100644 index 000000000..8fbbcb1c3 Binary files /dev/null and b/fonts/TewiFontOutline/020F.png differ diff --git a/fonts/TewiFontOutline/0210.png b/fonts/TewiFontOutline/0210.png new file mode 100644 index 000000000..1f56f4ad3 Binary files /dev/null and b/fonts/TewiFontOutline/0210.png differ diff --git a/fonts/TewiFontOutline/0211.png b/fonts/TewiFontOutline/0211.png new file mode 100644 index 000000000..3aa749fc3 Binary files /dev/null and b/fonts/TewiFontOutline/0211.png differ diff --git a/fonts/TewiFontOutline/0212.png b/fonts/TewiFontOutline/0212.png new file mode 100644 index 000000000..c8f0f659f Binary files /dev/null and b/fonts/TewiFontOutline/0212.png differ diff --git a/fonts/TewiFontOutline/0213.png b/fonts/TewiFontOutline/0213.png new file mode 100644 index 000000000..07faa4889 Binary files /dev/null and b/fonts/TewiFontOutline/0213.png differ diff --git a/fonts/TewiFontOutline/0214.png b/fonts/TewiFontOutline/0214.png new file mode 100644 index 000000000..3c558c3f3 Binary files /dev/null and b/fonts/TewiFontOutline/0214.png differ diff --git a/fonts/TewiFontOutline/0215.png b/fonts/TewiFontOutline/0215.png new file mode 100644 index 000000000..fa49b2fa2 Binary files /dev/null and b/fonts/TewiFontOutline/0215.png differ diff --git a/fonts/TewiFontOutline/0216.png b/fonts/TewiFontOutline/0216.png new file mode 100644 index 000000000..a9b76ea94 Binary files /dev/null and b/fonts/TewiFontOutline/0216.png differ diff --git a/fonts/TewiFontOutline/0217.png b/fonts/TewiFontOutline/0217.png new file mode 100644 index 000000000..11739e20b Binary files /dev/null and b/fonts/TewiFontOutline/0217.png differ diff --git a/fonts/TewiFontOutline/0218.png b/fonts/TewiFontOutline/0218.png new file mode 100644 index 000000000..56b4e229e Binary files /dev/null and b/fonts/TewiFontOutline/0218.png differ diff --git a/fonts/TewiFontOutline/0219.png b/fonts/TewiFontOutline/0219.png new file mode 100644 index 000000000..9aa0c9d03 Binary files /dev/null and b/fonts/TewiFontOutline/0219.png differ diff --git a/fonts/TewiFontOutline/021A.png b/fonts/TewiFontOutline/021A.png new file mode 100644 index 000000000..009205684 Binary files /dev/null and b/fonts/TewiFontOutline/021A.png differ diff --git a/fonts/TewiFontOutline/021B.png b/fonts/TewiFontOutline/021B.png new file mode 100644 index 000000000..bbb5e0812 Binary files /dev/null and b/fonts/TewiFontOutline/021B.png differ diff --git a/fonts/TewiFontOutline/021C.png b/fonts/TewiFontOutline/021C.png new file mode 100644 index 000000000..4a0f73501 Binary files /dev/null and b/fonts/TewiFontOutline/021C.png differ diff --git a/fonts/TewiFontOutline/021D.png b/fonts/TewiFontOutline/021D.png new file mode 100644 index 000000000..44280af24 Binary files /dev/null and b/fonts/TewiFontOutline/021D.png differ diff --git a/fonts/TewiFontOutline/021E.png b/fonts/TewiFontOutline/021E.png new file mode 100644 index 000000000..8466b1ffd Binary files /dev/null and b/fonts/TewiFontOutline/021E.png differ diff --git a/fonts/TewiFontOutline/021F.png b/fonts/TewiFontOutline/021F.png new file mode 100644 index 000000000..845f8cc5a Binary files /dev/null and b/fonts/TewiFontOutline/021F.png differ diff --git a/fonts/TewiFontOutline/0220.png b/fonts/TewiFontOutline/0220.png new file mode 100644 index 000000000..a5f982ff0 Binary files /dev/null and b/fonts/TewiFontOutline/0220.png differ diff --git a/fonts/TewiFontOutline/0221.png b/fonts/TewiFontOutline/0221.png new file mode 100644 index 000000000..9c6f06f17 Binary files /dev/null and b/fonts/TewiFontOutline/0221.png differ diff --git a/fonts/TewiFontOutline/0222.png b/fonts/TewiFontOutline/0222.png new file mode 100644 index 000000000..2e9611efd Binary files /dev/null and b/fonts/TewiFontOutline/0222.png differ diff --git a/fonts/TewiFontOutline/0223.png b/fonts/TewiFontOutline/0223.png new file mode 100644 index 000000000..547dc108a Binary files /dev/null and b/fonts/TewiFontOutline/0223.png differ diff --git a/fonts/TewiFontOutline/0224.png b/fonts/TewiFontOutline/0224.png new file mode 100644 index 000000000..3c1f4e2c6 Binary files /dev/null and b/fonts/TewiFontOutline/0224.png differ diff --git a/fonts/TewiFontOutline/0225.png b/fonts/TewiFontOutline/0225.png new file mode 100644 index 000000000..bfbac422b Binary files /dev/null and b/fonts/TewiFontOutline/0225.png differ diff --git a/fonts/TewiFontOutline/0226.png b/fonts/TewiFontOutline/0226.png new file mode 100644 index 000000000..4d8111b70 Binary files /dev/null and b/fonts/TewiFontOutline/0226.png differ diff --git a/fonts/TewiFontOutline/0227.png b/fonts/TewiFontOutline/0227.png new file mode 100644 index 000000000..b111ce512 Binary files /dev/null and b/fonts/TewiFontOutline/0227.png differ diff --git a/fonts/TewiFontOutline/0228.png b/fonts/TewiFontOutline/0228.png new file mode 100644 index 000000000..34f585247 Binary files /dev/null and b/fonts/TewiFontOutline/0228.png differ diff --git a/fonts/TewiFontOutline/0229.png b/fonts/TewiFontOutline/0229.png new file mode 100644 index 000000000..dee130fec Binary files /dev/null and b/fonts/TewiFontOutline/0229.png differ diff --git a/fonts/TewiFontOutline/022A.png b/fonts/TewiFontOutline/022A.png new file mode 100644 index 000000000..f30e8951f Binary files /dev/null and b/fonts/TewiFontOutline/022A.png differ diff --git a/fonts/TewiFontOutline/022B.png b/fonts/TewiFontOutline/022B.png new file mode 100644 index 000000000..45a7ef787 Binary files /dev/null and b/fonts/TewiFontOutline/022B.png differ diff --git a/fonts/TewiFontOutline/022C.png b/fonts/TewiFontOutline/022C.png new file mode 100644 index 000000000..a2838fe2d Binary files /dev/null and b/fonts/TewiFontOutline/022C.png differ diff --git a/fonts/TewiFontOutline/022D.png b/fonts/TewiFontOutline/022D.png new file mode 100644 index 000000000..569d081ff Binary files /dev/null and b/fonts/TewiFontOutline/022D.png differ diff --git a/fonts/TewiFontOutline/022E.png b/fonts/TewiFontOutline/022E.png new file mode 100644 index 000000000..c4a62226c Binary files /dev/null and b/fonts/TewiFontOutline/022E.png differ diff --git a/fonts/TewiFontOutline/022F.png b/fonts/TewiFontOutline/022F.png new file mode 100644 index 000000000..891525a20 Binary files /dev/null and b/fonts/TewiFontOutline/022F.png differ diff --git a/fonts/TewiFontOutline/0230.png b/fonts/TewiFontOutline/0230.png new file mode 100644 index 000000000..521d77542 Binary files /dev/null and b/fonts/TewiFontOutline/0230.png differ diff --git a/fonts/TewiFontOutline/0231.png b/fonts/TewiFontOutline/0231.png new file mode 100644 index 000000000..cb73ca7e0 Binary files /dev/null and b/fonts/TewiFontOutline/0231.png differ diff --git a/fonts/TewiFontOutline/0232.png b/fonts/TewiFontOutline/0232.png new file mode 100644 index 000000000..05b6d9537 Binary files /dev/null and b/fonts/TewiFontOutline/0232.png differ diff --git a/fonts/TewiFontOutline/0233.png b/fonts/TewiFontOutline/0233.png new file mode 100644 index 000000000..de211c11c Binary files /dev/null and b/fonts/TewiFontOutline/0233.png differ diff --git a/fonts/TewiFontOutline/0234.png b/fonts/TewiFontOutline/0234.png new file mode 100644 index 000000000..326107c43 Binary files /dev/null and b/fonts/TewiFontOutline/0234.png differ diff --git a/fonts/TewiFontOutline/0235.png b/fonts/TewiFontOutline/0235.png new file mode 100644 index 000000000..b1294ca41 Binary files /dev/null and b/fonts/TewiFontOutline/0235.png differ diff --git a/fonts/TewiFontOutline/0236.png b/fonts/TewiFontOutline/0236.png new file mode 100644 index 000000000..dd8cb9677 Binary files /dev/null and b/fonts/TewiFontOutline/0236.png differ diff --git a/fonts/TewiFontOutline/0237.png b/fonts/TewiFontOutline/0237.png new file mode 100644 index 000000000..3d84feb50 Binary files /dev/null and b/fonts/TewiFontOutline/0237.png differ diff --git a/fonts/TewiFontOutline/0238.png b/fonts/TewiFontOutline/0238.png new file mode 100644 index 000000000..e3b8440f5 Binary files /dev/null and b/fonts/TewiFontOutline/0238.png differ diff --git a/fonts/TewiFontOutline/0239.png b/fonts/TewiFontOutline/0239.png new file mode 100644 index 000000000..f31672a2c Binary files /dev/null and b/fonts/TewiFontOutline/0239.png differ diff --git a/fonts/TewiFontOutline/023A.png b/fonts/TewiFontOutline/023A.png new file mode 100644 index 000000000..8cdece457 Binary files /dev/null and b/fonts/TewiFontOutline/023A.png differ diff --git a/fonts/TewiFontOutline/023B.png b/fonts/TewiFontOutline/023B.png new file mode 100644 index 000000000..be8ba6467 Binary files /dev/null and b/fonts/TewiFontOutline/023B.png differ diff --git a/fonts/TewiFontOutline/023C.png b/fonts/TewiFontOutline/023C.png new file mode 100644 index 000000000..81c7244a4 Binary files /dev/null and b/fonts/TewiFontOutline/023C.png differ diff --git a/fonts/TewiFontOutline/023D.png b/fonts/TewiFontOutline/023D.png new file mode 100644 index 000000000..44b77c2b3 Binary files /dev/null and b/fonts/TewiFontOutline/023D.png differ diff --git a/fonts/TewiFontOutline/023E.png b/fonts/TewiFontOutline/023E.png new file mode 100644 index 000000000..8b029525c Binary files /dev/null and b/fonts/TewiFontOutline/023E.png differ diff --git a/fonts/TewiFontOutline/023F.png b/fonts/TewiFontOutline/023F.png new file mode 100644 index 000000000..f02a60a48 Binary files /dev/null and b/fonts/TewiFontOutline/023F.png differ diff --git a/fonts/TewiFontOutline/0240.png b/fonts/TewiFontOutline/0240.png new file mode 100644 index 000000000..796a7b946 Binary files /dev/null and b/fonts/TewiFontOutline/0240.png differ diff --git a/fonts/TewiFontOutline/0241.png b/fonts/TewiFontOutline/0241.png new file mode 100644 index 000000000..608e7de7d Binary files /dev/null and b/fonts/TewiFontOutline/0241.png differ diff --git a/fonts/TewiFontOutline/0242.png b/fonts/TewiFontOutline/0242.png new file mode 100644 index 000000000..8527ff6fb Binary files /dev/null and b/fonts/TewiFontOutline/0242.png differ diff --git a/fonts/TewiFontOutline/0243.png b/fonts/TewiFontOutline/0243.png new file mode 100644 index 000000000..1ff55a282 Binary files /dev/null and b/fonts/TewiFontOutline/0243.png differ diff --git a/fonts/TewiFontOutline/0244.png b/fonts/TewiFontOutline/0244.png new file mode 100644 index 000000000..68eb7ab18 Binary files /dev/null and b/fonts/TewiFontOutline/0244.png differ diff --git a/fonts/TewiFontOutline/0245.png b/fonts/TewiFontOutline/0245.png new file mode 100644 index 000000000..97e2bc384 Binary files /dev/null and b/fonts/TewiFontOutline/0245.png differ diff --git a/fonts/TewiFontOutline/0246.png b/fonts/TewiFontOutline/0246.png new file mode 100644 index 000000000..4372e3859 Binary files /dev/null and b/fonts/TewiFontOutline/0246.png differ diff --git a/fonts/TewiFontOutline/0247.png b/fonts/TewiFontOutline/0247.png new file mode 100644 index 000000000..62b1859a1 Binary files /dev/null and b/fonts/TewiFontOutline/0247.png differ diff --git a/fonts/TewiFontOutline/0248.png b/fonts/TewiFontOutline/0248.png new file mode 100644 index 000000000..289b5244e Binary files /dev/null and b/fonts/TewiFontOutline/0248.png differ diff --git a/fonts/TewiFontOutline/0249.png b/fonts/TewiFontOutline/0249.png new file mode 100644 index 000000000..d8114d3ff Binary files /dev/null and b/fonts/TewiFontOutline/0249.png differ diff --git a/fonts/TewiFontOutline/024A.png b/fonts/TewiFontOutline/024A.png new file mode 100644 index 000000000..42e98a140 Binary files /dev/null and b/fonts/TewiFontOutline/024A.png differ diff --git a/fonts/TewiFontOutline/024B.png b/fonts/TewiFontOutline/024B.png new file mode 100644 index 000000000..9b0b57106 Binary files /dev/null and b/fonts/TewiFontOutline/024B.png differ diff --git a/fonts/TewiFontOutline/024C.png b/fonts/TewiFontOutline/024C.png new file mode 100644 index 000000000..c7c9c8f89 Binary files /dev/null and b/fonts/TewiFontOutline/024C.png differ diff --git a/fonts/TewiFontOutline/024D.png b/fonts/TewiFontOutline/024D.png new file mode 100644 index 000000000..f86ffa130 Binary files /dev/null and b/fonts/TewiFontOutline/024D.png differ diff --git a/fonts/TewiFontOutline/024E.png b/fonts/TewiFontOutline/024E.png new file mode 100644 index 000000000..ae169ed18 Binary files /dev/null and b/fonts/TewiFontOutline/024E.png differ diff --git a/fonts/TewiFontOutline/024F.png b/fonts/TewiFontOutline/024F.png new file mode 100644 index 000000000..a08284ae0 Binary files /dev/null and b/fonts/TewiFontOutline/024F.png differ diff --git a/fonts/TewiFontOutline/0250.png b/fonts/TewiFontOutline/0250.png new file mode 100644 index 000000000..6370aba37 Binary files /dev/null and b/fonts/TewiFontOutline/0250.png differ diff --git a/fonts/TewiFontOutline/0251.png b/fonts/TewiFontOutline/0251.png new file mode 100644 index 000000000..67e4c6843 Binary files /dev/null and b/fonts/TewiFontOutline/0251.png differ diff --git a/fonts/TewiFontOutline/0252.png b/fonts/TewiFontOutline/0252.png new file mode 100644 index 000000000..4962f71fc Binary files /dev/null and b/fonts/TewiFontOutline/0252.png differ diff --git a/fonts/TewiFontOutline/0253.png b/fonts/TewiFontOutline/0253.png new file mode 100644 index 000000000..eb543e1d8 Binary files /dev/null and b/fonts/TewiFontOutline/0253.png differ diff --git a/fonts/TewiFontOutline/0254.png b/fonts/TewiFontOutline/0254.png new file mode 100644 index 000000000..4fc033ada Binary files /dev/null and b/fonts/TewiFontOutline/0254.png differ diff --git a/fonts/TewiFontOutline/0255.png b/fonts/TewiFontOutline/0255.png new file mode 100644 index 000000000..e3a433313 Binary files /dev/null and b/fonts/TewiFontOutline/0255.png differ diff --git a/fonts/TewiFontOutline/0256.png b/fonts/TewiFontOutline/0256.png new file mode 100644 index 000000000..807eb7e4c Binary files /dev/null and b/fonts/TewiFontOutline/0256.png differ diff --git a/fonts/TewiFontOutline/0257.png b/fonts/TewiFontOutline/0257.png new file mode 100644 index 000000000..c4cad9a73 Binary files /dev/null and b/fonts/TewiFontOutline/0257.png differ diff --git a/fonts/TewiFontOutline/0258.png b/fonts/TewiFontOutline/0258.png new file mode 100644 index 000000000..3188adcec Binary files /dev/null and b/fonts/TewiFontOutline/0258.png differ diff --git a/fonts/TewiFontOutline/0259.png b/fonts/TewiFontOutline/0259.png new file mode 100644 index 000000000..b99e2a8d9 Binary files /dev/null and b/fonts/TewiFontOutline/0259.png differ diff --git a/fonts/TewiFontOutline/025A.png b/fonts/TewiFontOutline/025A.png new file mode 100644 index 000000000..0caa538e3 Binary files /dev/null and b/fonts/TewiFontOutline/025A.png differ diff --git a/fonts/TewiFontOutline/025B.png b/fonts/TewiFontOutline/025B.png new file mode 100644 index 000000000..88e6fe8f5 Binary files /dev/null and b/fonts/TewiFontOutline/025B.png differ diff --git a/fonts/TewiFontOutline/025C.png b/fonts/TewiFontOutline/025C.png new file mode 100644 index 000000000..17983f3a0 Binary files /dev/null and b/fonts/TewiFontOutline/025C.png differ diff --git a/fonts/TewiFontOutline/025D.png b/fonts/TewiFontOutline/025D.png new file mode 100644 index 000000000..d14c3f105 Binary files /dev/null and b/fonts/TewiFontOutline/025D.png differ diff --git a/fonts/TewiFontOutline/025E.png b/fonts/TewiFontOutline/025E.png new file mode 100644 index 000000000..759986675 Binary files /dev/null and b/fonts/TewiFontOutline/025E.png differ diff --git a/fonts/TewiFontOutline/025F.png b/fonts/TewiFontOutline/025F.png new file mode 100644 index 000000000..b43b4b05c Binary files /dev/null and b/fonts/TewiFontOutline/025F.png differ diff --git a/fonts/TewiFontOutline/0260.png b/fonts/TewiFontOutline/0260.png new file mode 100644 index 000000000..60c59d3f9 Binary files /dev/null and b/fonts/TewiFontOutline/0260.png differ diff --git a/fonts/TewiFontOutline/0261.png b/fonts/TewiFontOutline/0261.png new file mode 100644 index 000000000..f1980bcd9 Binary files /dev/null and b/fonts/TewiFontOutline/0261.png differ diff --git a/fonts/TewiFontOutline/0262.png b/fonts/TewiFontOutline/0262.png new file mode 100644 index 000000000..9a2656dba Binary files /dev/null and b/fonts/TewiFontOutline/0262.png differ diff --git a/fonts/TewiFontOutline/0263.png b/fonts/TewiFontOutline/0263.png new file mode 100644 index 000000000..7d36c57bf Binary files /dev/null and b/fonts/TewiFontOutline/0263.png differ diff --git a/fonts/TewiFontOutline/0264.png b/fonts/TewiFontOutline/0264.png new file mode 100644 index 000000000..c0f9aa97c Binary files /dev/null and b/fonts/TewiFontOutline/0264.png differ diff --git a/fonts/TewiFontOutline/0265.png b/fonts/TewiFontOutline/0265.png new file mode 100644 index 000000000..949516eb3 Binary files /dev/null and b/fonts/TewiFontOutline/0265.png differ diff --git a/fonts/TewiFontOutline/0266.png b/fonts/TewiFontOutline/0266.png new file mode 100644 index 000000000..f1dbb953f Binary files /dev/null and b/fonts/TewiFontOutline/0266.png differ diff --git a/fonts/TewiFontOutline/0267.png b/fonts/TewiFontOutline/0267.png new file mode 100644 index 000000000..9141b2760 Binary files /dev/null and b/fonts/TewiFontOutline/0267.png differ diff --git a/fonts/TewiFontOutline/0268.png b/fonts/TewiFontOutline/0268.png new file mode 100644 index 000000000..1bfaa26d0 Binary files /dev/null and b/fonts/TewiFontOutline/0268.png differ diff --git a/fonts/TewiFontOutline/0269.png b/fonts/TewiFontOutline/0269.png new file mode 100644 index 000000000..dbe400455 Binary files /dev/null and b/fonts/TewiFontOutline/0269.png differ diff --git a/fonts/TewiFontOutline/026A.png b/fonts/TewiFontOutline/026A.png new file mode 100644 index 000000000..a84d6cd76 Binary files /dev/null and b/fonts/TewiFontOutline/026A.png differ diff --git a/fonts/TewiFontOutline/026B.png b/fonts/TewiFontOutline/026B.png new file mode 100644 index 000000000..e23c11507 Binary files /dev/null and b/fonts/TewiFontOutline/026B.png differ diff --git a/fonts/TewiFontOutline/026C.png b/fonts/TewiFontOutline/026C.png new file mode 100644 index 000000000..b043c56e7 Binary files /dev/null and b/fonts/TewiFontOutline/026C.png differ diff --git a/fonts/TewiFontOutline/026D.png b/fonts/TewiFontOutline/026D.png new file mode 100644 index 000000000..9480c2b36 Binary files /dev/null and b/fonts/TewiFontOutline/026D.png differ diff --git a/fonts/TewiFontOutline/026E.png b/fonts/TewiFontOutline/026E.png new file mode 100644 index 000000000..be80bcea4 Binary files /dev/null and b/fonts/TewiFontOutline/026E.png differ diff --git a/fonts/TewiFontOutline/026F.png b/fonts/TewiFontOutline/026F.png new file mode 100644 index 000000000..1f9124a28 Binary files /dev/null and b/fonts/TewiFontOutline/026F.png differ diff --git a/fonts/TewiFontOutline/0270.png b/fonts/TewiFontOutline/0270.png new file mode 100644 index 000000000..8bc3539e3 Binary files /dev/null and b/fonts/TewiFontOutline/0270.png differ diff --git a/fonts/TewiFontOutline/0271.png b/fonts/TewiFontOutline/0271.png new file mode 100644 index 000000000..18c107e9a Binary files /dev/null and b/fonts/TewiFontOutline/0271.png differ diff --git a/fonts/TewiFontOutline/0272.png b/fonts/TewiFontOutline/0272.png new file mode 100644 index 000000000..599fb4525 Binary files /dev/null and b/fonts/TewiFontOutline/0272.png differ diff --git a/fonts/TewiFontOutline/0273.png b/fonts/TewiFontOutline/0273.png new file mode 100644 index 000000000..09e523593 Binary files /dev/null and b/fonts/TewiFontOutline/0273.png differ diff --git a/fonts/TewiFontOutline/0274.png b/fonts/TewiFontOutline/0274.png new file mode 100644 index 000000000..af74bc4e9 Binary files /dev/null and b/fonts/TewiFontOutline/0274.png differ diff --git a/fonts/TewiFontOutline/0275.png b/fonts/TewiFontOutline/0275.png new file mode 100644 index 000000000..6fd5582ef Binary files /dev/null and b/fonts/TewiFontOutline/0275.png differ diff --git a/fonts/TewiFontOutline/0276.png b/fonts/TewiFontOutline/0276.png new file mode 100644 index 000000000..7628367ed Binary files /dev/null and b/fonts/TewiFontOutline/0276.png differ diff --git a/fonts/TewiFontOutline/0277.png b/fonts/TewiFontOutline/0277.png new file mode 100644 index 000000000..6a0fabfe0 Binary files /dev/null and b/fonts/TewiFontOutline/0277.png differ diff --git a/fonts/TewiFontOutline/0278.png b/fonts/TewiFontOutline/0278.png new file mode 100644 index 000000000..ef8c8e9e7 Binary files /dev/null and b/fonts/TewiFontOutline/0278.png differ diff --git a/fonts/TewiFontOutline/0279.png b/fonts/TewiFontOutline/0279.png new file mode 100644 index 000000000..855fbdab3 Binary files /dev/null and b/fonts/TewiFontOutline/0279.png differ diff --git a/fonts/TewiFontOutline/027A.png b/fonts/TewiFontOutline/027A.png new file mode 100644 index 000000000..6bb2ee552 Binary files /dev/null and b/fonts/TewiFontOutline/027A.png differ diff --git a/fonts/TewiFontOutline/027B.png b/fonts/TewiFontOutline/027B.png new file mode 100644 index 000000000..ac9c55e5d Binary files /dev/null and b/fonts/TewiFontOutline/027B.png differ diff --git a/fonts/TewiFontOutline/027C.png b/fonts/TewiFontOutline/027C.png new file mode 100644 index 000000000..01b9e5edc Binary files /dev/null and b/fonts/TewiFontOutline/027C.png differ diff --git a/fonts/TewiFontOutline/027D.png b/fonts/TewiFontOutline/027D.png new file mode 100644 index 000000000..acd9762ca Binary files /dev/null and b/fonts/TewiFontOutline/027D.png differ diff --git a/fonts/TewiFontOutline/027E.png b/fonts/TewiFontOutline/027E.png new file mode 100644 index 000000000..3a2f6d03f Binary files /dev/null and b/fonts/TewiFontOutline/027E.png differ diff --git a/fonts/TewiFontOutline/027F.png b/fonts/TewiFontOutline/027F.png new file mode 100644 index 000000000..3f9a7b32e Binary files /dev/null and b/fonts/TewiFontOutline/027F.png differ diff --git a/fonts/TewiFontOutline/0280.png b/fonts/TewiFontOutline/0280.png new file mode 100644 index 000000000..21b3dbd20 Binary files /dev/null and b/fonts/TewiFontOutline/0280.png differ diff --git a/fonts/TewiFontOutline/0281.png b/fonts/TewiFontOutline/0281.png new file mode 100644 index 000000000..00a9cd100 Binary files /dev/null and b/fonts/TewiFontOutline/0281.png differ diff --git a/fonts/TewiFontOutline/0282.png b/fonts/TewiFontOutline/0282.png new file mode 100644 index 000000000..08ec763a8 Binary files /dev/null and b/fonts/TewiFontOutline/0282.png differ diff --git a/fonts/TewiFontOutline/0283.png b/fonts/TewiFontOutline/0283.png new file mode 100644 index 000000000..1c3c77b9b Binary files /dev/null and b/fonts/TewiFontOutline/0283.png differ diff --git a/fonts/TewiFontOutline/0284.png b/fonts/TewiFontOutline/0284.png new file mode 100644 index 000000000..8c7b550bf Binary files /dev/null and b/fonts/TewiFontOutline/0284.png differ diff --git a/fonts/TewiFontOutline/0285.png b/fonts/TewiFontOutline/0285.png new file mode 100644 index 000000000..5f991e2c6 Binary files /dev/null and b/fonts/TewiFontOutline/0285.png differ diff --git a/fonts/TewiFontOutline/0286.png b/fonts/TewiFontOutline/0286.png new file mode 100644 index 000000000..f7b67de05 Binary files /dev/null and b/fonts/TewiFontOutline/0286.png differ diff --git a/fonts/TewiFontOutline/0287.png b/fonts/TewiFontOutline/0287.png new file mode 100644 index 000000000..304cc1056 Binary files /dev/null and b/fonts/TewiFontOutline/0287.png differ diff --git a/fonts/TewiFontOutline/0288.png b/fonts/TewiFontOutline/0288.png new file mode 100644 index 000000000..a0b8782e1 Binary files /dev/null and b/fonts/TewiFontOutline/0288.png differ diff --git a/fonts/TewiFontOutline/0289.png b/fonts/TewiFontOutline/0289.png new file mode 100644 index 000000000..3f7fd8144 Binary files /dev/null and b/fonts/TewiFontOutline/0289.png differ diff --git a/fonts/TewiFontOutline/028A.png b/fonts/TewiFontOutline/028A.png new file mode 100644 index 000000000..7e48b27fe Binary files /dev/null and b/fonts/TewiFontOutline/028A.png differ diff --git a/fonts/TewiFontOutline/028B.png b/fonts/TewiFontOutline/028B.png new file mode 100644 index 000000000..89cb155b2 Binary files /dev/null and b/fonts/TewiFontOutline/028B.png differ diff --git a/fonts/TewiFontOutline/028C.png b/fonts/TewiFontOutline/028C.png new file mode 100644 index 000000000..3e5a0adc7 Binary files /dev/null and b/fonts/TewiFontOutline/028C.png differ diff --git a/fonts/TewiFontOutline/028D.png b/fonts/TewiFontOutline/028D.png new file mode 100644 index 000000000..649583db2 Binary files /dev/null and b/fonts/TewiFontOutline/028D.png differ diff --git a/fonts/TewiFontOutline/028E.png b/fonts/TewiFontOutline/028E.png new file mode 100644 index 000000000..107570868 Binary files /dev/null and b/fonts/TewiFontOutline/028E.png differ diff --git a/fonts/TewiFontOutline/028F.png b/fonts/TewiFontOutline/028F.png new file mode 100644 index 000000000..1ec5464cf Binary files /dev/null and b/fonts/TewiFontOutline/028F.png differ diff --git a/fonts/TewiFontOutline/0290.png b/fonts/TewiFontOutline/0290.png new file mode 100644 index 000000000..6957c44b2 Binary files /dev/null and b/fonts/TewiFontOutline/0290.png differ diff --git a/fonts/TewiFontOutline/0291.png b/fonts/TewiFontOutline/0291.png new file mode 100644 index 000000000..f13f1d11b Binary files /dev/null and b/fonts/TewiFontOutline/0291.png differ diff --git a/fonts/TewiFontOutline/0292.png b/fonts/TewiFontOutline/0292.png new file mode 100644 index 000000000..b4d941d46 Binary files /dev/null and b/fonts/TewiFontOutline/0292.png differ diff --git a/fonts/TewiFontOutline/0293.png b/fonts/TewiFontOutline/0293.png new file mode 100644 index 000000000..84545215c Binary files /dev/null and b/fonts/TewiFontOutline/0293.png differ diff --git a/fonts/TewiFontOutline/0294.png b/fonts/TewiFontOutline/0294.png new file mode 100644 index 000000000..608e7de7d Binary files /dev/null and b/fonts/TewiFontOutline/0294.png differ diff --git a/fonts/TewiFontOutline/0295.png b/fonts/TewiFontOutline/0295.png new file mode 100644 index 000000000..e176276e9 Binary files /dev/null and b/fonts/TewiFontOutline/0295.png differ diff --git a/fonts/TewiFontOutline/0296.png b/fonts/TewiFontOutline/0296.png new file mode 100644 index 000000000..58445858e Binary files /dev/null and b/fonts/TewiFontOutline/0296.png differ diff --git a/fonts/TewiFontOutline/0297.png b/fonts/TewiFontOutline/0297.png new file mode 100644 index 000000000..c5e6884e5 Binary files /dev/null and b/fonts/TewiFontOutline/0297.png differ diff --git a/fonts/TewiFontOutline/0298.png b/fonts/TewiFontOutline/0298.png new file mode 100644 index 000000000..60f2bb95b Binary files /dev/null and b/fonts/TewiFontOutline/0298.png differ diff --git a/fonts/TewiFontOutline/0299.png b/fonts/TewiFontOutline/0299.png new file mode 100644 index 000000000..6a55cfac1 Binary files /dev/null and b/fonts/TewiFontOutline/0299.png differ diff --git a/fonts/TewiFontOutline/029A.png b/fonts/TewiFontOutline/029A.png new file mode 100644 index 000000000..b298ea427 Binary files /dev/null and b/fonts/TewiFontOutline/029A.png differ diff --git a/fonts/TewiFontOutline/029B.png b/fonts/TewiFontOutline/029B.png new file mode 100644 index 000000000..84edbb023 Binary files /dev/null and b/fonts/TewiFontOutline/029B.png differ diff --git a/fonts/TewiFontOutline/029C.png b/fonts/TewiFontOutline/029C.png new file mode 100644 index 000000000..c02446433 Binary files /dev/null and b/fonts/TewiFontOutline/029C.png differ diff --git a/fonts/TewiFontOutline/029D.png b/fonts/TewiFontOutline/029D.png new file mode 100644 index 000000000..f16ae51d3 Binary files /dev/null and b/fonts/TewiFontOutline/029D.png differ diff --git a/fonts/TewiFontOutline/029E.png b/fonts/TewiFontOutline/029E.png new file mode 100644 index 000000000..331aabeb0 Binary files /dev/null and b/fonts/TewiFontOutline/029E.png differ diff --git a/fonts/TewiFontOutline/029F.png b/fonts/TewiFontOutline/029F.png new file mode 100644 index 000000000..8772f7103 Binary files /dev/null and b/fonts/TewiFontOutline/029F.png differ diff --git a/fonts/TewiFontOutline/02A0.png b/fonts/TewiFontOutline/02A0.png new file mode 100644 index 000000000..d842bdb4b Binary files /dev/null and b/fonts/TewiFontOutline/02A0.png differ diff --git a/fonts/TewiFontOutline/02A1.png b/fonts/TewiFontOutline/02A1.png new file mode 100644 index 000000000..76743ddb3 Binary files /dev/null and b/fonts/TewiFontOutline/02A1.png differ diff --git a/fonts/TewiFontOutline/02A2.png b/fonts/TewiFontOutline/02A2.png new file mode 100644 index 000000000..e1128dfad Binary files /dev/null and b/fonts/TewiFontOutline/02A2.png differ diff --git a/fonts/TewiFontOutline/02A3.png b/fonts/TewiFontOutline/02A3.png new file mode 100644 index 000000000..d996e160f Binary files /dev/null and b/fonts/TewiFontOutline/02A3.png differ diff --git a/fonts/TewiFontOutline/02A4.png b/fonts/TewiFontOutline/02A4.png new file mode 100644 index 000000000..2d3b5b86e Binary files /dev/null and b/fonts/TewiFontOutline/02A4.png differ diff --git a/fonts/TewiFontOutline/02A5.png b/fonts/TewiFontOutline/02A5.png new file mode 100644 index 000000000..459d52ff3 Binary files /dev/null and b/fonts/TewiFontOutline/02A5.png differ diff --git a/fonts/TewiFontOutline/02A6.png b/fonts/TewiFontOutline/02A6.png new file mode 100644 index 000000000..c0b8a7fb3 Binary files /dev/null and b/fonts/TewiFontOutline/02A6.png differ diff --git a/fonts/TewiFontOutline/02A7.png b/fonts/TewiFontOutline/02A7.png new file mode 100644 index 000000000..04fa711ac Binary files /dev/null and b/fonts/TewiFontOutline/02A7.png differ diff --git a/fonts/TewiFontOutline/02A8.png b/fonts/TewiFontOutline/02A8.png new file mode 100644 index 000000000..63a4dde6b Binary files /dev/null and b/fonts/TewiFontOutline/02A8.png differ diff --git a/fonts/TewiFontOutline/02A9.png b/fonts/TewiFontOutline/02A9.png new file mode 100644 index 000000000..5676e474e Binary files /dev/null and b/fonts/TewiFontOutline/02A9.png differ diff --git a/fonts/TewiFontOutline/02AA.png b/fonts/TewiFontOutline/02AA.png new file mode 100644 index 000000000..e5668b18a Binary files /dev/null and b/fonts/TewiFontOutline/02AA.png differ diff --git a/fonts/TewiFontOutline/02AB.png b/fonts/TewiFontOutline/02AB.png new file mode 100644 index 000000000..ecefb9cf1 Binary files /dev/null and b/fonts/TewiFontOutline/02AB.png differ diff --git a/fonts/TewiFontOutline/02AC.png b/fonts/TewiFontOutline/02AC.png new file mode 100644 index 000000000..328f3c059 Binary files /dev/null and b/fonts/TewiFontOutline/02AC.png differ diff --git a/fonts/TewiFontOutline/02AD.png b/fonts/TewiFontOutline/02AD.png new file mode 100644 index 000000000..197b7b719 Binary files /dev/null and b/fonts/TewiFontOutline/02AD.png differ diff --git a/fonts/TewiFontOutline/02AE.png b/fonts/TewiFontOutline/02AE.png new file mode 100644 index 000000000..533775926 Binary files /dev/null and b/fonts/TewiFontOutline/02AE.png differ diff --git a/fonts/TewiFontOutline/02AF.png b/fonts/TewiFontOutline/02AF.png new file mode 100644 index 000000000..324ec5a69 Binary files /dev/null and b/fonts/TewiFontOutline/02AF.png differ diff --git a/fonts/TewiFontOutline/02B0.png b/fonts/TewiFontOutline/02B0.png new file mode 100644 index 000000000..58d7fb5fa Binary files /dev/null and b/fonts/TewiFontOutline/02B0.png differ diff --git a/fonts/TewiFontOutline/02B1.png b/fonts/TewiFontOutline/02B1.png new file mode 100644 index 000000000..b42f9e9a5 Binary files /dev/null and b/fonts/TewiFontOutline/02B1.png differ diff --git a/fonts/TewiFontOutline/02B2.png b/fonts/TewiFontOutline/02B2.png new file mode 100644 index 000000000..4a0a283ea Binary files /dev/null and b/fonts/TewiFontOutline/02B2.png differ diff --git a/fonts/TewiFontOutline/02B3.png b/fonts/TewiFontOutline/02B3.png new file mode 100644 index 000000000..c6035624c Binary files /dev/null and b/fonts/TewiFontOutline/02B3.png differ diff --git a/fonts/TewiFontOutline/02B4.png b/fonts/TewiFontOutline/02B4.png new file mode 100644 index 000000000..49534fe6c Binary files /dev/null and b/fonts/TewiFontOutline/02B4.png differ diff --git a/fonts/TewiFontOutline/02B5.png b/fonts/TewiFontOutline/02B5.png new file mode 100644 index 000000000..ca85d7287 Binary files /dev/null and b/fonts/TewiFontOutline/02B5.png differ diff --git a/fonts/TewiFontOutline/02B6.png b/fonts/TewiFontOutline/02B6.png new file mode 100644 index 000000000..c6db77691 Binary files /dev/null and b/fonts/TewiFontOutline/02B6.png differ diff --git a/fonts/TewiFontOutline/02B7.png b/fonts/TewiFontOutline/02B7.png new file mode 100644 index 000000000..cdd8fecb2 Binary files /dev/null and b/fonts/TewiFontOutline/02B7.png differ diff --git a/fonts/TewiFontOutline/02B8.png b/fonts/TewiFontOutline/02B8.png new file mode 100644 index 000000000..04b126576 Binary files /dev/null and b/fonts/TewiFontOutline/02B8.png differ diff --git a/fonts/TewiFontOutline/02B9.png b/fonts/TewiFontOutline/02B9.png new file mode 100644 index 000000000..f42210a1c Binary files /dev/null and b/fonts/TewiFontOutline/02B9.png differ diff --git a/fonts/TewiFontOutline/02BA.png b/fonts/TewiFontOutline/02BA.png new file mode 100644 index 000000000..4e174a13b Binary files /dev/null and b/fonts/TewiFontOutline/02BA.png differ diff --git a/fonts/TewiFontOutline/02BB.png b/fonts/TewiFontOutline/02BB.png new file mode 100644 index 000000000..f1495cd48 Binary files /dev/null and b/fonts/TewiFontOutline/02BB.png differ diff --git a/fonts/TewiFontOutline/02BC.png b/fonts/TewiFontOutline/02BC.png new file mode 100644 index 000000000..6229b06d5 Binary files /dev/null and b/fonts/TewiFontOutline/02BC.png differ diff --git a/fonts/TewiFontOutline/02BD.png b/fonts/TewiFontOutline/02BD.png new file mode 100644 index 000000000..2043f05dd Binary files /dev/null and b/fonts/TewiFontOutline/02BD.png differ diff --git a/fonts/TewiFontOutline/02C2.png b/fonts/TewiFontOutline/02C2.png new file mode 100644 index 000000000..2a4e67c80 Binary files /dev/null and b/fonts/TewiFontOutline/02C2.png differ diff --git a/fonts/TewiFontOutline/02C3.png b/fonts/TewiFontOutline/02C3.png new file mode 100644 index 000000000..50845338b Binary files /dev/null and b/fonts/TewiFontOutline/02C3.png differ diff --git a/fonts/TewiFontOutline/02C4.png b/fonts/TewiFontOutline/02C4.png new file mode 100644 index 000000000..7abaef46a Binary files /dev/null and b/fonts/TewiFontOutline/02C4.png differ diff --git a/fonts/TewiFontOutline/02C5.png b/fonts/TewiFontOutline/02C5.png new file mode 100644 index 000000000..485a8a29d Binary files /dev/null and b/fonts/TewiFontOutline/02C5.png differ diff --git a/fonts/TewiFontOutline/02C6.png b/fonts/TewiFontOutline/02C6.png new file mode 100644 index 000000000..b939ffa98 Binary files /dev/null and b/fonts/TewiFontOutline/02C6.png differ diff --git a/fonts/TewiFontOutline/02C7.png b/fonts/TewiFontOutline/02C7.png new file mode 100644 index 000000000..2fecfbf0e Binary files /dev/null and b/fonts/TewiFontOutline/02C7.png differ diff --git a/fonts/TewiFontOutline/02C8.png b/fonts/TewiFontOutline/02C8.png new file mode 100644 index 000000000..efdeb4e46 Binary files /dev/null and b/fonts/TewiFontOutline/02C8.png differ diff --git a/fonts/TewiFontOutline/02C9.png b/fonts/TewiFontOutline/02C9.png new file mode 100644 index 000000000..d9cb47301 Binary files /dev/null and b/fonts/TewiFontOutline/02C9.png differ diff --git a/fonts/TewiFontOutline/02CA.png b/fonts/TewiFontOutline/02CA.png new file mode 100644 index 000000000..e80d781ca Binary files /dev/null and b/fonts/TewiFontOutline/02CA.png differ diff --git a/fonts/TewiFontOutline/02CB.png b/fonts/TewiFontOutline/02CB.png new file mode 100644 index 000000000..658794c44 Binary files /dev/null and b/fonts/TewiFontOutline/02CB.png differ diff --git a/fonts/TewiFontOutline/02D0.png b/fonts/TewiFontOutline/02D0.png new file mode 100644 index 000000000..5329b0622 Binary files /dev/null and b/fonts/TewiFontOutline/02D0.png differ diff --git a/fonts/TewiFontOutline/02D1.png b/fonts/TewiFontOutline/02D1.png new file mode 100644 index 000000000..7f8ad7f90 Binary files /dev/null and b/fonts/TewiFontOutline/02D1.png differ diff --git a/fonts/TewiFontOutline/02D8.png b/fonts/TewiFontOutline/02D8.png new file mode 100644 index 000000000..4dba2a27a Binary files /dev/null and b/fonts/TewiFontOutline/02D8.png differ diff --git a/fonts/TewiFontOutline/02D9.png b/fonts/TewiFontOutline/02D9.png new file mode 100644 index 000000000..004242530 Binary files /dev/null and b/fonts/TewiFontOutline/02D9.png differ diff --git a/fonts/TewiFontOutline/02DA.png b/fonts/TewiFontOutline/02DA.png new file mode 100644 index 000000000..22ad0beb1 Binary files /dev/null and b/fonts/TewiFontOutline/02DA.png differ diff --git a/fonts/TewiFontOutline/02DB.png b/fonts/TewiFontOutline/02DB.png new file mode 100644 index 000000000..7dfe8ccea Binary files /dev/null and b/fonts/TewiFontOutline/02DB.png differ diff --git a/fonts/TewiFontOutline/02DC.png b/fonts/TewiFontOutline/02DC.png new file mode 100644 index 000000000..5215245bc Binary files /dev/null and b/fonts/TewiFontOutline/02DC.png differ diff --git a/fonts/TewiFontOutline/02DD.png b/fonts/TewiFontOutline/02DD.png new file mode 100644 index 000000000..ecb1894c0 Binary files /dev/null and b/fonts/TewiFontOutline/02DD.png differ diff --git a/fonts/TewiFontOutline/02DE.png b/fonts/TewiFontOutline/02DE.png new file mode 100644 index 000000000..8c920159f Binary files /dev/null and b/fonts/TewiFontOutline/02DE.png differ diff --git a/fonts/TewiFontOutline/02E0.png b/fonts/TewiFontOutline/02E0.png new file mode 100644 index 000000000..4280a7a3e Binary files /dev/null and b/fonts/TewiFontOutline/02E0.png differ diff --git a/fonts/TewiFontOutline/02E4.png b/fonts/TewiFontOutline/02E4.png new file mode 100644 index 000000000..35dc8c662 Binary files /dev/null and b/fonts/TewiFontOutline/02E4.png differ diff --git a/fonts/TewiFontOutline/02EE.png b/fonts/TewiFontOutline/02EE.png new file mode 100644 index 000000000..15c894cac Binary files /dev/null and b/fonts/TewiFontOutline/02EE.png differ diff --git a/fonts/TewiFontOutline/0300.png b/fonts/TewiFontOutline/0300.png new file mode 100644 index 000000000..042d94c9e Binary files /dev/null and b/fonts/TewiFontOutline/0300.png differ diff --git a/fonts/TewiFontOutline/0301.png b/fonts/TewiFontOutline/0301.png new file mode 100644 index 000000000..5e38a2288 Binary files /dev/null and b/fonts/TewiFontOutline/0301.png differ diff --git a/fonts/TewiFontOutline/0302.png b/fonts/TewiFontOutline/0302.png new file mode 100644 index 000000000..dc030d65f Binary files /dev/null and b/fonts/TewiFontOutline/0302.png differ diff --git a/fonts/TewiFontOutline/0303.png b/fonts/TewiFontOutline/0303.png new file mode 100644 index 000000000..5215245bc Binary files /dev/null and b/fonts/TewiFontOutline/0303.png differ diff --git a/fonts/TewiFontOutline/0304.png b/fonts/TewiFontOutline/0304.png new file mode 100644 index 000000000..8285a426c Binary files /dev/null and b/fonts/TewiFontOutline/0304.png differ diff --git a/fonts/TewiFontOutline/0305.png b/fonts/TewiFontOutline/0305.png new file mode 100644 index 000000000..1015d1cb1 Binary files /dev/null and b/fonts/TewiFontOutline/0305.png differ diff --git a/fonts/TewiFontOutline/0306.png b/fonts/TewiFontOutline/0306.png new file mode 100644 index 000000000..b298b841d Binary files /dev/null and b/fonts/TewiFontOutline/0306.png differ diff --git a/fonts/TewiFontOutline/0307.png b/fonts/TewiFontOutline/0307.png new file mode 100644 index 000000000..14b4943a0 Binary files /dev/null and b/fonts/TewiFontOutline/0307.png differ diff --git a/fonts/TewiFontOutline/0308.png b/fonts/TewiFontOutline/0308.png new file mode 100644 index 000000000..d84c78167 Binary files /dev/null and b/fonts/TewiFontOutline/0308.png differ diff --git a/fonts/TewiFontOutline/0309.png b/fonts/TewiFontOutline/0309.png new file mode 100644 index 000000000..a7b978ce9 Binary files /dev/null and b/fonts/TewiFontOutline/0309.png differ diff --git a/fonts/TewiFontOutline/030A.png b/fonts/TewiFontOutline/030A.png new file mode 100644 index 000000000..22ad0beb1 Binary files /dev/null and b/fonts/TewiFontOutline/030A.png differ diff --git a/fonts/TewiFontOutline/030B.png b/fonts/TewiFontOutline/030B.png new file mode 100644 index 000000000..4a099bb98 Binary files /dev/null and b/fonts/TewiFontOutline/030B.png differ diff --git a/fonts/TewiFontOutline/030C.png b/fonts/TewiFontOutline/030C.png new file mode 100644 index 000000000..5d6ad3e2f Binary files /dev/null and b/fonts/TewiFontOutline/030C.png differ diff --git a/fonts/TewiFontOutline/030D.png b/fonts/TewiFontOutline/030D.png new file mode 100644 index 000000000..256f41f9a Binary files /dev/null and b/fonts/TewiFontOutline/030D.png differ diff --git a/fonts/TewiFontOutline/030E.png b/fonts/TewiFontOutline/030E.png new file mode 100644 index 000000000..0427cbbca Binary files /dev/null and b/fonts/TewiFontOutline/030E.png differ diff --git a/fonts/TewiFontOutline/0310.png b/fonts/TewiFontOutline/0310.png new file mode 100644 index 000000000..7ee934cde Binary files /dev/null and b/fonts/TewiFontOutline/0310.png differ diff --git a/fonts/TewiFontOutline/0311.png b/fonts/TewiFontOutline/0311.png new file mode 100644 index 000000000..10af0497f Binary files /dev/null and b/fonts/TewiFontOutline/0311.png differ diff --git a/fonts/TewiFontOutline/0312.png b/fonts/TewiFontOutline/0312.png new file mode 100644 index 000000000..197824f34 Binary files /dev/null and b/fonts/TewiFontOutline/0312.png differ diff --git a/fonts/TewiFontOutline/0313.png b/fonts/TewiFontOutline/0313.png new file mode 100644 index 000000000..3eb8a17db Binary files /dev/null and b/fonts/TewiFontOutline/0313.png differ diff --git a/fonts/TewiFontOutline/0314.png b/fonts/TewiFontOutline/0314.png new file mode 100644 index 000000000..7cfb6e437 Binary files /dev/null and b/fonts/TewiFontOutline/0314.png differ diff --git a/fonts/TewiFontOutline/0315.png b/fonts/TewiFontOutline/0315.png new file mode 100644 index 000000000..3eb8a17db Binary files /dev/null and b/fonts/TewiFontOutline/0315.png differ diff --git a/fonts/TewiFontOutline/031A.png b/fonts/TewiFontOutline/031A.png new file mode 100644 index 000000000..0feb68940 Binary files /dev/null and b/fonts/TewiFontOutline/031A.png differ diff --git a/fonts/TewiFontOutline/031C.png b/fonts/TewiFontOutline/031C.png new file mode 100644 index 000000000..e50e4ed2a Binary files /dev/null and b/fonts/TewiFontOutline/031C.png differ diff --git a/fonts/TewiFontOutline/031F.png b/fonts/TewiFontOutline/031F.png new file mode 100644 index 000000000..95c82772b Binary files /dev/null and b/fonts/TewiFontOutline/031F.png differ diff --git a/fonts/TewiFontOutline/0320.png b/fonts/TewiFontOutline/0320.png new file mode 100644 index 000000000..52513b8b8 Binary files /dev/null and b/fonts/TewiFontOutline/0320.png differ diff --git a/fonts/TewiFontOutline/0324.png b/fonts/TewiFontOutline/0324.png new file mode 100644 index 000000000..1efdbb2b7 Binary files /dev/null and b/fonts/TewiFontOutline/0324.png differ diff --git a/fonts/TewiFontOutline/0325.png b/fonts/TewiFontOutline/0325.png new file mode 100644 index 000000000..4d7bbabd3 Binary files /dev/null and b/fonts/TewiFontOutline/0325.png differ diff --git a/fonts/TewiFontOutline/032A.png b/fonts/TewiFontOutline/032A.png new file mode 100644 index 000000000..dbce561e0 Binary files /dev/null and b/fonts/TewiFontOutline/032A.png differ diff --git a/fonts/TewiFontOutline/032C.png b/fonts/TewiFontOutline/032C.png new file mode 100644 index 000000000..92cbeae58 Binary files /dev/null and b/fonts/TewiFontOutline/032C.png differ diff --git a/fonts/TewiFontOutline/0330.png b/fonts/TewiFontOutline/0330.png new file mode 100644 index 000000000..308c5a5d1 Binary files /dev/null and b/fonts/TewiFontOutline/0330.png differ diff --git a/fonts/TewiFontOutline/0339.png b/fonts/TewiFontOutline/0339.png new file mode 100644 index 000000000..89e9dfcb5 Binary files /dev/null and b/fonts/TewiFontOutline/0339.png differ diff --git a/fonts/TewiFontOutline/033A.png b/fonts/TewiFontOutline/033A.png new file mode 100644 index 000000000..4f347f50d Binary files /dev/null and b/fonts/TewiFontOutline/033A.png differ diff --git a/fonts/TewiFontOutline/033B.png b/fonts/TewiFontOutline/033B.png new file mode 100644 index 000000000..1ed1f26ce Binary files /dev/null and b/fonts/TewiFontOutline/033B.png differ diff --git a/fonts/TewiFontOutline/033C.png b/fonts/TewiFontOutline/033C.png new file mode 100644 index 000000000..2e7f7d7d2 Binary files /dev/null and b/fonts/TewiFontOutline/033C.png differ diff --git a/fonts/TewiFontOutline/0343.png b/fonts/TewiFontOutline/0343.png new file mode 100644 index 000000000..5aad16c5b Binary files /dev/null and b/fonts/TewiFontOutline/0343.png differ diff --git a/fonts/TewiFontOutline/0344.png b/fonts/TewiFontOutline/0344.png new file mode 100644 index 000000000..7f8ad7f90 Binary files /dev/null and b/fonts/TewiFontOutline/0344.png differ diff --git a/fonts/TewiFontOutline/035C.png b/fonts/TewiFontOutline/035C.png new file mode 100644 index 000000000..d6292d65a Binary files /dev/null and b/fonts/TewiFontOutline/035C.png differ diff --git a/fonts/TewiFontOutline/0361.png b/fonts/TewiFontOutline/0361.png new file mode 100644 index 000000000..10af0497f Binary files /dev/null and b/fonts/TewiFontOutline/0361.png differ diff --git a/fonts/TewiFontOutline/0370.png b/fonts/TewiFontOutline/0370.png new file mode 100644 index 000000000..7b176d977 Binary files /dev/null and b/fonts/TewiFontOutline/0370.png differ diff --git a/fonts/TewiFontOutline/0371.png b/fonts/TewiFontOutline/0371.png new file mode 100644 index 000000000..5e21b4543 Binary files /dev/null and b/fonts/TewiFontOutline/0371.png differ diff --git a/fonts/TewiFontOutline/0372.png b/fonts/TewiFontOutline/0372.png new file mode 100644 index 000000000..665542027 Binary files /dev/null and b/fonts/TewiFontOutline/0372.png differ diff --git a/fonts/TewiFontOutline/0373.png b/fonts/TewiFontOutline/0373.png new file mode 100644 index 000000000..654a1d8e3 Binary files /dev/null and b/fonts/TewiFontOutline/0373.png differ diff --git a/fonts/TewiFontOutline/0374.png b/fonts/TewiFontOutline/0374.png new file mode 100644 index 000000000..195f48f46 Binary files /dev/null and b/fonts/TewiFontOutline/0374.png differ diff --git a/fonts/TewiFontOutline/0375.png b/fonts/TewiFontOutline/0375.png new file mode 100644 index 000000000..835b36824 Binary files /dev/null and b/fonts/TewiFontOutline/0375.png differ diff --git a/fonts/TewiFontOutline/0376.png b/fonts/TewiFontOutline/0376.png new file mode 100644 index 000000000..c61f66c08 Binary files /dev/null and b/fonts/TewiFontOutline/0376.png differ diff --git a/fonts/TewiFontOutline/0377.png b/fonts/TewiFontOutline/0377.png new file mode 100644 index 000000000..8a252df4d Binary files /dev/null and b/fonts/TewiFontOutline/0377.png differ diff --git a/fonts/TewiFontOutline/037A.png b/fonts/TewiFontOutline/037A.png new file mode 100644 index 000000000..142716a6f Binary files /dev/null and b/fonts/TewiFontOutline/037A.png differ diff --git a/fonts/TewiFontOutline/037B.png b/fonts/TewiFontOutline/037B.png new file mode 100644 index 000000000..4fc033ada Binary files /dev/null and b/fonts/TewiFontOutline/037B.png differ diff --git a/fonts/TewiFontOutline/037C.png b/fonts/TewiFontOutline/037C.png new file mode 100644 index 000000000..6e1135e35 Binary files /dev/null and b/fonts/TewiFontOutline/037C.png differ diff --git a/fonts/TewiFontOutline/037D.png b/fonts/TewiFontOutline/037D.png new file mode 100644 index 000000000..f6369de9e Binary files /dev/null and b/fonts/TewiFontOutline/037D.png differ diff --git a/fonts/TewiFontOutline/037E.png b/fonts/TewiFontOutline/037E.png new file mode 100644 index 000000000..b712921f5 Binary files /dev/null and b/fonts/TewiFontOutline/037E.png differ diff --git a/fonts/TewiFontOutline/037F.png b/fonts/TewiFontOutline/037F.png new file mode 100644 index 000000000..b5d950b63 Binary files /dev/null and b/fonts/TewiFontOutline/037F.png differ diff --git a/fonts/TewiFontOutline/0384.png b/fonts/TewiFontOutline/0384.png new file mode 100644 index 000000000..e80d781ca Binary files /dev/null and b/fonts/TewiFontOutline/0384.png differ diff --git a/fonts/TewiFontOutline/0385.png b/fonts/TewiFontOutline/0385.png new file mode 100644 index 000000000..496fa890d Binary files /dev/null and b/fonts/TewiFontOutline/0385.png differ diff --git a/fonts/TewiFontOutline/0386.png b/fonts/TewiFontOutline/0386.png new file mode 100644 index 000000000..d6dfdabbf Binary files /dev/null and b/fonts/TewiFontOutline/0386.png differ diff --git a/fonts/TewiFontOutline/0387.png b/fonts/TewiFontOutline/0387.png new file mode 100644 index 000000000..0355720c0 Binary files /dev/null and b/fonts/TewiFontOutline/0387.png differ diff --git a/fonts/TewiFontOutline/0388.png b/fonts/TewiFontOutline/0388.png new file mode 100644 index 000000000..5b0a9c99b Binary files /dev/null and b/fonts/TewiFontOutline/0388.png differ diff --git a/fonts/TewiFontOutline/0389.png b/fonts/TewiFontOutline/0389.png new file mode 100644 index 000000000..34a403d77 Binary files /dev/null and b/fonts/TewiFontOutline/0389.png differ diff --git a/fonts/TewiFontOutline/038A.png b/fonts/TewiFontOutline/038A.png new file mode 100644 index 000000000..0662f62c1 Binary files /dev/null and b/fonts/TewiFontOutline/038A.png differ diff --git a/fonts/TewiFontOutline/038C.png b/fonts/TewiFontOutline/038C.png new file mode 100644 index 000000000..2db0573c3 Binary files /dev/null and b/fonts/TewiFontOutline/038C.png differ diff --git a/fonts/TewiFontOutline/038E.png b/fonts/TewiFontOutline/038E.png new file mode 100644 index 000000000..d609ac6ea Binary files /dev/null and b/fonts/TewiFontOutline/038E.png differ diff --git a/fonts/TewiFontOutline/038F.png b/fonts/TewiFontOutline/038F.png new file mode 100644 index 000000000..997dd7320 Binary files /dev/null and b/fonts/TewiFontOutline/038F.png differ diff --git a/fonts/TewiFontOutline/0390.png b/fonts/TewiFontOutline/0390.png new file mode 100644 index 000000000..c94b0138d Binary files /dev/null and b/fonts/TewiFontOutline/0390.png differ diff --git a/fonts/TewiFontOutline/0391.png b/fonts/TewiFontOutline/0391.png new file mode 100644 index 000000000..ca21676fc Binary files /dev/null and b/fonts/TewiFontOutline/0391.png differ diff --git a/fonts/TewiFontOutline/0392.png b/fonts/TewiFontOutline/0392.png new file mode 100644 index 000000000..48b12c726 Binary files /dev/null and b/fonts/TewiFontOutline/0392.png differ diff --git a/fonts/TewiFontOutline/0393.png b/fonts/TewiFontOutline/0393.png new file mode 100644 index 000000000..ad999d75e Binary files /dev/null and b/fonts/TewiFontOutline/0393.png differ diff --git a/fonts/TewiFontOutline/0394.png b/fonts/TewiFontOutline/0394.png new file mode 100644 index 000000000..bf5d2004a Binary files /dev/null and b/fonts/TewiFontOutline/0394.png differ diff --git a/fonts/TewiFontOutline/0395.png b/fonts/TewiFontOutline/0395.png new file mode 100644 index 000000000..877ede72b Binary files /dev/null and b/fonts/TewiFontOutline/0395.png differ diff --git a/fonts/TewiFontOutline/0396.png b/fonts/TewiFontOutline/0396.png new file mode 100644 index 000000000..4e292ce01 Binary files /dev/null and b/fonts/TewiFontOutline/0396.png differ diff --git a/fonts/TewiFontOutline/0397.png b/fonts/TewiFontOutline/0397.png new file mode 100644 index 000000000..e567bbd3a Binary files /dev/null and b/fonts/TewiFontOutline/0397.png differ diff --git a/fonts/TewiFontOutline/0398.png b/fonts/TewiFontOutline/0398.png new file mode 100644 index 000000000..4f1e44be9 Binary files /dev/null and b/fonts/TewiFontOutline/0398.png differ diff --git a/fonts/TewiFontOutline/0399.png b/fonts/TewiFontOutline/0399.png new file mode 100644 index 000000000..d7c93ca79 Binary files /dev/null and b/fonts/TewiFontOutline/0399.png differ diff --git a/fonts/TewiFontOutline/039A.png b/fonts/TewiFontOutline/039A.png new file mode 100644 index 000000000..f8060a305 Binary files /dev/null and b/fonts/TewiFontOutline/039A.png differ diff --git a/fonts/TewiFontOutline/039B.png b/fonts/TewiFontOutline/039B.png new file mode 100644 index 000000000..69ac19d4a Binary files /dev/null and b/fonts/TewiFontOutline/039B.png differ diff --git a/fonts/TewiFontOutline/039C.png b/fonts/TewiFontOutline/039C.png new file mode 100644 index 000000000..ed0d7a72c Binary files /dev/null and b/fonts/TewiFontOutline/039C.png differ diff --git a/fonts/TewiFontOutline/039D.png b/fonts/TewiFontOutline/039D.png new file mode 100644 index 000000000..00c5b43c2 Binary files /dev/null and b/fonts/TewiFontOutline/039D.png differ diff --git a/fonts/TewiFontOutline/039E.png b/fonts/TewiFontOutline/039E.png new file mode 100644 index 000000000..dc9108d2b Binary files /dev/null and b/fonts/TewiFontOutline/039E.png differ diff --git a/fonts/TewiFontOutline/039F.png b/fonts/TewiFontOutline/039F.png new file mode 100644 index 000000000..ec4f36d2b Binary files /dev/null and b/fonts/TewiFontOutline/039F.png differ diff --git a/fonts/TewiFontOutline/03A0.png b/fonts/TewiFontOutline/03A0.png new file mode 100644 index 000000000..30ec83380 Binary files /dev/null and b/fonts/TewiFontOutline/03A0.png differ diff --git a/fonts/TewiFontOutline/03A1.png b/fonts/TewiFontOutline/03A1.png new file mode 100644 index 000000000..27d201189 Binary files /dev/null and b/fonts/TewiFontOutline/03A1.png differ diff --git a/fonts/TewiFontOutline/03A3.png b/fonts/TewiFontOutline/03A3.png new file mode 100644 index 000000000..893532bc9 Binary files /dev/null and b/fonts/TewiFontOutline/03A3.png differ diff --git a/fonts/TewiFontOutline/03A4.png b/fonts/TewiFontOutline/03A4.png new file mode 100644 index 000000000..2ac7dcb07 Binary files /dev/null and b/fonts/TewiFontOutline/03A4.png differ diff --git a/fonts/TewiFontOutline/03A5.png b/fonts/TewiFontOutline/03A5.png new file mode 100644 index 000000000..d49f73aaf Binary files /dev/null and b/fonts/TewiFontOutline/03A5.png differ diff --git a/fonts/TewiFontOutline/03A6.png b/fonts/TewiFontOutline/03A6.png new file mode 100644 index 000000000..644c6ae65 Binary files /dev/null and b/fonts/TewiFontOutline/03A6.png differ diff --git a/fonts/TewiFontOutline/03A7.png b/fonts/TewiFontOutline/03A7.png new file mode 100644 index 000000000..ef1267672 Binary files /dev/null and b/fonts/TewiFontOutline/03A7.png differ diff --git a/fonts/TewiFontOutline/03A8.png b/fonts/TewiFontOutline/03A8.png new file mode 100644 index 000000000..20f68f6b4 Binary files /dev/null and b/fonts/TewiFontOutline/03A8.png differ diff --git a/fonts/TewiFontOutline/03A9.png b/fonts/TewiFontOutline/03A9.png new file mode 100644 index 000000000..6e48027ba Binary files /dev/null and b/fonts/TewiFontOutline/03A9.png differ diff --git a/fonts/TewiFontOutline/03AA.png b/fonts/TewiFontOutline/03AA.png new file mode 100644 index 000000000..f701d1740 Binary files /dev/null and b/fonts/TewiFontOutline/03AA.png differ diff --git a/fonts/TewiFontOutline/03AB.png b/fonts/TewiFontOutline/03AB.png new file mode 100644 index 000000000..c573af186 Binary files /dev/null and b/fonts/TewiFontOutline/03AB.png differ diff --git a/fonts/TewiFontOutline/03AC.png b/fonts/TewiFontOutline/03AC.png new file mode 100644 index 000000000..188154706 Binary files /dev/null and b/fonts/TewiFontOutline/03AC.png differ diff --git a/fonts/TewiFontOutline/03AD.png b/fonts/TewiFontOutline/03AD.png new file mode 100644 index 000000000..568cf6250 Binary files /dev/null and b/fonts/TewiFontOutline/03AD.png differ diff --git a/fonts/TewiFontOutline/03AE.png b/fonts/TewiFontOutline/03AE.png new file mode 100644 index 000000000..e7ae022c0 Binary files /dev/null and b/fonts/TewiFontOutline/03AE.png differ diff --git a/fonts/TewiFontOutline/03AF.png b/fonts/TewiFontOutline/03AF.png new file mode 100644 index 000000000..289c42ffb Binary files /dev/null and b/fonts/TewiFontOutline/03AF.png differ diff --git a/fonts/TewiFontOutline/03B0.png b/fonts/TewiFontOutline/03B0.png new file mode 100644 index 000000000..7d92fa461 Binary files /dev/null and b/fonts/TewiFontOutline/03B0.png differ diff --git a/fonts/TewiFontOutline/03B1.png b/fonts/TewiFontOutline/03B1.png new file mode 100644 index 000000000..67e4c6843 Binary files /dev/null and b/fonts/TewiFontOutline/03B1.png differ diff --git a/fonts/TewiFontOutline/03B2.png b/fonts/TewiFontOutline/03B2.png new file mode 100644 index 000000000..f0c357117 Binary files /dev/null and b/fonts/TewiFontOutline/03B2.png differ diff --git a/fonts/TewiFontOutline/03B3.png b/fonts/TewiFontOutline/03B3.png new file mode 100644 index 000000000..3ee294170 Binary files /dev/null and b/fonts/TewiFontOutline/03B3.png differ diff --git a/fonts/TewiFontOutline/03B4.png b/fonts/TewiFontOutline/03B4.png new file mode 100644 index 000000000..70a955606 Binary files /dev/null and b/fonts/TewiFontOutline/03B4.png differ diff --git a/fonts/TewiFontOutline/03B5.png b/fonts/TewiFontOutline/03B5.png new file mode 100644 index 000000000..ef2685eba Binary files /dev/null and b/fonts/TewiFontOutline/03B5.png differ diff --git a/fonts/TewiFontOutline/03B6.png b/fonts/TewiFontOutline/03B6.png new file mode 100644 index 000000000..ab511e2d8 Binary files /dev/null and b/fonts/TewiFontOutline/03B6.png differ diff --git a/fonts/TewiFontOutline/03B7.png b/fonts/TewiFontOutline/03B7.png new file mode 100644 index 000000000..22152a9f1 Binary files /dev/null and b/fonts/TewiFontOutline/03B7.png differ diff --git a/fonts/TewiFontOutline/03B8.png b/fonts/TewiFontOutline/03B8.png new file mode 100644 index 000000000..19fc60b02 Binary files /dev/null and b/fonts/TewiFontOutline/03B8.png differ diff --git a/fonts/TewiFontOutline/03B9.png b/fonts/TewiFontOutline/03B9.png new file mode 100644 index 000000000..c10385ec6 Binary files /dev/null and b/fonts/TewiFontOutline/03B9.png differ diff --git a/fonts/TewiFontOutline/03BA.png b/fonts/TewiFontOutline/03BA.png new file mode 100644 index 000000000..ff22984e7 Binary files /dev/null and b/fonts/TewiFontOutline/03BA.png differ diff --git a/fonts/TewiFontOutline/03BB.png b/fonts/TewiFontOutline/03BB.png new file mode 100644 index 000000000..9cd1f7e67 Binary files /dev/null and b/fonts/TewiFontOutline/03BB.png differ diff --git a/fonts/TewiFontOutline/03BC.png b/fonts/TewiFontOutline/03BC.png new file mode 100644 index 000000000..ff2b0d5bc Binary files /dev/null and b/fonts/TewiFontOutline/03BC.png differ diff --git a/fonts/TewiFontOutline/03BD.png b/fonts/TewiFontOutline/03BD.png new file mode 100644 index 000000000..563c683ab Binary files /dev/null and b/fonts/TewiFontOutline/03BD.png differ diff --git a/fonts/TewiFontOutline/03BE.png b/fonts/TewiFontOutline/03BE.png new file mode 100644 index 000000000..168b1eedc Binary files /dev/null and b/fonts/TewiFontOutline/03BE.png differ diff --git a/fonts/TewiFontOutline/03BF.png b/fonts/TewiFontOutline/03BF.png new file mode 100644 index 000000000..177ddfaeb Binary files /dev/null and b/fonts/TewiFontOutline/03BF.png differ diff --git a/fonts/TewiFontOutline/03C0.png b/fonts/TewiFontOutline/03C0.png new file mode 100644 index 000000000..9a100a4a2 Binary files /dev/null and b/fonts/TewiFontOutline/03C0.png differ diff --git a/fonts/TewiFontOutline/03C1.png b/fonts/TewiFontOutline/03C1.png new file mode 100644 index 000000000..58d72a591 Binary files /dev/null and b/fonts/TewiFontOutline/03C1.png differ diff --git a/fonts/TewiFontOutline/03C2.png b/fonts/TewiFontOutline/03C2.png new file mode 100644 index 000000000..9ff4414e9 Binary files /dev/null and b/fonts/TewiFontOutline/03C2.png differ diff --git a/fonts/TewiFontOutline/03C3.png b/fonts/TewiFontOutline/03C3.png new file mode 100644 index 000000000..5f2b71bd8 Binary files /dev/null and b/fonts/TewiFontOutline/03C3.png differ diff --git a/fonts/TewiFontOutline/03C4.png b/fonts/TewiFontOutline/03C4.png new file mode 100644 index 000000000..a2d8f6795 Binary files /dev/null and b/fonts/TewiFontOutline/03C4.png differ diff --git a/fonts/TewiFontOutline/03C5.png b/fonts/TewiFontOutline/03C5.png new file mode 100644 index 000000000..a5e3638d0 Binary files /dev/null and b/fonts/TewiFontOutline/03C5.png differ diff --git a/fonts/TewiFontOutline/03C6.png b/fonts/TewiFontOutline/03C6.png new file mode 100644 index 000000000..f3fd1d8f1 Binary files /dev/null and b/fonts/TewiFontOutline/03C6.png differ diff --git a/fonts/TewiFontOutline/03C7.png b/fonts/TewiFontOutline/03C7.png new file mode 100644 index 000000000..08923478f Binary files /dev/null and b/fonts/TewiFontOutline/03C7.png differ diff --git a/fonts/TewiFontOutline/03C8.png b/fonts/TewiFontOutline/03C8.png new file mode 100644 index 000000000..9739b65be Binary files /dev/null and b/fonts/TewiFontOutline/03C8.png differ diff --git a/fonts/TewiFontOutline/03C9.png b/fonts/TewiFontOutline/03C9.png new file mode 100644 index 000000000..a78340e95 Binary files /dev/null and b/fonts/TewiFontOutline/03C9.png differ diff --git a/fonts/TewiFontOutline/03CA.png b/fonts/TewiFontOutline/03CA.png new file mode 100644 index 000000000..b451231c7 Binary files /dev/null and b/fonts/TewiFontOutline/03CA.png differ diff --git a/fonts/TewiFontOutline/03CB.png b/fonts/TewiFontOutline/03CB.png new file mode 100644 index 000000000..350d94295 Binary files /dev/null and b/fonts/TewiFontOutline/03CB.png differ diff --git a/fonts/TewiFontOutline/03CC.png b/fonts/TewiFontOutline/03CC.png new file mode 100644 index 000000000..d69614b69 Binary files /dev/null and b/fonts/TewiFontOutline/03CC.png differ diff --git a/fonts/TewiFontOutline/03CD.png b/fonts/TewiFontOutline/03CD.png new file mode 100644 index 000000000..43b60418e Binary files /dev/null and b/fonts/TewiFontOutline/03CD.png differ diff --git a/fonts/TewiFontOutline/03CE.png b/fonts/TewiFontOutline/03CE.png new file mode 100644 index 000000000..881ab6b1c Binary files /dev/null and b/fonts/TewiFontOutline/03CE.png differ diff --git a/fonts/TewiFontOutline/03CF.png b/fonts/TewiFontOutline/03CF.png new file mode 100644 index 000000000..011366e82 Binary files /dev/null and b/fonts/TewiFontOutline/03CF.png differ diff --git a/fonts/TewiFontOutline/03D0.png b/fonts/TewiFontOutline/03D0.png new file mode 100644 index 000000000..a037f25e3 Binary files /dev/null and b/fonts/TewiFontOutline/03D0.png differ diff --git a/fonts/TewiFontOutline/03D1.png b/fonts/TewiFontOutline/03D1.png new file mode 100644 index 000000000..ec746970b Binary files /dev/null and b/fonts/TewiFontOutline/03D1.png differ diff --git a/fonts/TewiFontOutline/03D2.png b/fonts/TewiFontOutline/03D2.png new file mode 100644 index 000000000..ee8453fa9 Binary files /dev/null and b/fonts/TewiFontOutline/03D2.png differ diff --git a/fonts/TewiFontOutline/03D3.png b/fonts/TewiFontOutline/03D3.png new file mode 100644 index 000000000..063582fce Binary files /dev/null and b/fonts/TewiFontOutline/03D3.png differ diff --git a/fonts/TewiFontOutline/03D4.png b/fonts/TewiFontOutline/03D4.png new file mode 100644 index 000000000..88890362a Binary files /dev/null and b/fonts/TewiFontOutline/03D4.png differ diff --git a/fonts/TewiFontOutline/03D5.png b/fonts/TewiFontOutline/03D5.png new file mode 100644 index 000000000..ef8c8e9e7 Binary files /dev/null and b/fonts/TewiFontOutline/03D5.png differ diff --git a/fonts/TewiFontOutline/03D6.png b/fonts/TewiFontOutline/03D6.png new file mode 100644 index 000000000..8fb930826 Binary files /dev/null and b/fonts/TewiFontOutline/03D6.png differ diff --git a/fonts/TewiFontOutline/03D7.png b/fonts/TewiFontOutline/03D7.png new file mode 100644 index 000000000..6d4129eb7 Binary files /dev/null and b/fonts/TewiFontOutline/03D7.png differ diff --git a/fonts/TewiFontOutline/03D8.png b/fonts/TewiFontOutline/03D8.png new file mode 100644 index 000000000..dcc4fb4f7 Binary files /dev/null and b/fonts/TewiFontOutline/03D8.png differ diff --git a/fonts/TewiFontOutline/03D9.png b/fonts/TewiFontOutline/03D9.png new file mode 100644 index 000000000..0c1e126c4 Binary files /dev/null and b/fonts/TewiFontOutline/03D9.png differ diff --git a/fonts/TewiFontOutline/03DA.png b/fonts/TewiFontOutline/03DA.png new file mode 100644 index 000000000..b070e39c9 Binary files /dev/null and b/fonts/TewiFontOutline/03DA.png differ diff --git a/fonts/TewiFontOutline/03DB.png b/fonts/TewiFontOutline/03DB.png new file mode 100644 index 000000000..c50ceb513 Binary files /dev/null and b/fonts/TewiFontOutline/03DB.png differ diff --git a/fonts/TewiFontOutline/03DC.png b/fonts/TewiFontOutline/03DC.png new file mode 100644 index 000000000..f82cfed45 Binary files /dev/null and b/fonts/TewiFontOutline/03DC.png differ diff --git a/fonts/TewiFontOutline/03DD.png b/fonts/TewiFontOutline/03DD.png new file mode 100644 index 000000000..0ebe48e06 Binary files /dev/null and b/fonts/TewiFontOutline/03DD.png differ diff --git a/fonts/TewiFontOutline/03DE.png b/fonts/TewiFontOutline/03DE.png new file mode 100644 index 000000000..ee9332757 Binary files /dev/null and b/fonts/TewiFontOutline/03DE.png differ diff --git a/fonts/TewiFontOutline/03DF.png b/fonts/TewiFontOutline/03DF.png new file mode 100644 index 000000000..f859f2387 Binary files /dev/null and b/fonts/TewiFontOutline/03DF.png differ diff --git a/fonts/TewiFontOutline/03E0.png b/fonts/TewiFontOutline/03E0.png new file mode 100644 index 000000000..500a4eeed Binary files /dev/null and b/fonts/TewiFontOutline/03E0.png differ diff --git a/fonts/TewiFontOutline/03E1.png b/fonts/TewiFontOutline/03E1.png new file mode 100644 index 000000000..edbd81f04 Binary files /dev/null and b/fonts/TewiFontOutline/03E1.png differ diff --git a/fonts/TewiFontOutline/03E2.png b/fonts/TewiFontOutline/03E2.png new file mode 100644 index 000000000..bce8df856 Binary files /dev/null and b/fonts/TewiFontOutline/03E2.png differ diff --git a/fonts/TewiFontOutline/03E3.png b/fonts/TewiFontOutline/03E3.png new file mode 100644 index 000000000..20233b0e3 Binary files /dev/null and b/fonts/TewiFontOutline/03E3.png differ diff --git a/fonts/TewiFontOutline/03E4.png b/fonts/TewiFontOutline/03E4.png new file mode 100644 index 000000000..159b46caf Binary files /dev/null and b/fonts/TewiFontOutline/03E4.png differ diff --git a/fonts/TewiFontOutline/03E5.png b/fonts/TewiFontOutline/03E5.png new file mode 100644 index 000000000..c63dcfe70 Binary files /dev/null and b/fonts/TewiFontOutline/03E5.png differ diff --git a/fonts/TewiFontOutline/03E6.png b/fonts/TewiFontOutline/03E6.png new file mode 100644 index 000000000..e9fe76769 Binary files /dev/null and b/fonts/TewiFontOutline/03E6.png differ diff --git a/fonts/TewiFontOutline/03E7.png b/fonts/TewiFontOutline/03E7.png new file mode 100644 index 000000000..bb826ace5 Binary files /dev/null and b/fonts/TewiFontOutline/03E7.png differ diff --git a/fonts/TewiFontOutline/03E8.png b/fonts/TewiFontOutline/03E8.png new file mode 100644 index 000000000..a507d9bb9 Binary files /dev/null and b/fonts/TewiFontOutline/03E8.png differ diff --git a/fonts/TewiFontOutline/03E9.png b/fonts/TewiFontOutline/03E9.png new file mode 100644 index 000000000..1d32d728f Binary files /dev/null and b/fonts/TewiFontOutline/03E9.png differ diff --git a/fonts/TewiFontOutline/03EA.png b/fonts/TewiFontOutline/03EA.png new file mode 100644 index 000000000..3c98965c3 Binary files /dev/null and b/fonts/TewiFontOutline/03EA.png differ diff --git a/fonts/TewiFontOutline/03EB.png b/fonts/TewiFontOutline/03EB.png new file mode 100644 index 000000000..d78616c2d Binary files /dev/null and b/fonts/TewiFontOutline/03EB.png differ diff --git a/fonts/TewiFontOutline/03EC.png b/fonts/TewiFontOutline/03EC.png new file mode 100644 index 000000000..bc5eef037 Binary files /dev/null and b/fonts/TewiFontOutline/03EC.png differ diff --git a/fonts/TewiFontOutline/03ED.png b/fonts/TewiFontOutline/03ED.png new file mode 100644 index 000000000..72bd6a528 Binary files /dev/null and b/fonts/TewiFontOutline/03ED.png differ diff --git a/fonts/TewiFontOutline/03EE.png b/fonts/TewiFontOutline/03EE.png new file mode 100644 index 000000000..96a6a0540 Binary files /dev/null and b/fonts/TewiFontOutline/03EE.png differ diff --git a/fonts/TewiFontOutline/03EF.png b/fonts/TewiFontOutline/03EF.png new file mode 100644 index 000000000..6fc8a81c3 Binary files /dev/null and b/fonts/TewiFontOutline/03EF.png differ diff --git a/fonts/TewiFontOutline/03F0.png b/fonts/TewiFontOutline/03F0.png new file mode 100644 index 000000000..cb5c66ea4 Binary files /dev/null and b/fonts/TewiFontOutline/03F0.png differ diff --git a/fonts/TewiFontOutline/03F1.png b/fonts/TewiFontOutline/03F1.png new file mode 100644 index 000000000..5710cf47f Binary files /dev/null and b/fonts/TewiFontOutline/03F1.png differ diff --git a/fonts/TewiFontOutline/03F2.png b/fonts/TewiFontOutline/03F2.png new file mode 100644 index 000000000..29c49d5c3 Binary files /dev/null and b/fonts/TewiFontOutline/03F2.png differ diff --git a/fonts/TewiFontOutline/03F3.png b/fonts/TewiFontOutline/03F3.png new file mode 100644 index 000000000..e13e0357a Binary files /dev/null and b/fonts/TewiFontOutline/03F3.png differ diff --git a/fonts/TewiFontOutline/03F4.png b/fonts/TewiFontOutline/03F4.png new file mode 100644 index 000000000..4f1e44be9 Binary files /dev/null and b/fonts/TewiFontOutline/03F4.png differ diff --git a/fonts/TewiFontOutline/03F5.png b/fonts/TewiFontOutline/03F5.png new file mode 100644 index 000000000..a2718f57d Binary files /dev/null and b/fonts/TewiFontOutline/03F5.png differ diff --git a/fonts/TewiFontOutline/03F6.png b/fonts/TewiFontOutline/03F6.png new file mode 100644 index 000000000..a06de0841 Binary files /dev/null and b/fonts/TewiFontOutline/03F6.png differ diff --git a/fonts/TewiFontOutline/03F7.png b/fonts/TewiFontOutline/03F7.png new file mode 100644 index 000000000..a5d5834e6 Binary files /dev/null and b/fonts/TewiFontOutline/03F7.png differ diff --git a/fonts/TewiFontOutline/03F8.png b/fonts/TewiFontOutline/03F8.png new file mode 100644 index 000000000..2a4fb0edd Binary files /dev/null and b/fonts/TewiFontOutline/03F8.png differ diff --git a/fonts/TewiFontOutline/03F9.png b/fonts/TewiFontOutline/03F9.png new file mode 100644 index 000000000..997e5e8e2 Binary files /dev/null and b/fonts/TewiFontOutline/03F9.png differ diff --git a/fonts/TewiFontOutline/03FA.png b/fonts/TewiFontOutline/03FA.png new file mode 100644 index 000000000..ed0d7a72c Binary files /dev/null and b/fonts/TewiFontOutline/03FA.png differ diff --git a/fonts/TewiFontOutline/03FB.png b/fonts/TewiFontOutline/03FB.png new file mode 100644 index 000000000..a8d865eae Binary files /dev/null and b/fonts/TewiFontOutline/03FB.png differ diff --git a/fonts/TewiFontOutline/03FC.png b/fonts/TewiFontOutline/03FC.png new file mode 100644 index 000000000..fb3462206 Binary files /dev/null and b/fonts/TewiFontOutline/03FC.png differ diff --git a/fonts/TewiFontOutline/03FD.png b/fonts/TewiFontOutline/03FD.png new file mode 100644 index 000000000..30b59fdc8 Binary files /dev/null and b/fonts/TewiFontOutline/03FD.png differ diff --git a/fonts/TewiFontOutline/03FE.png b/fonts/TewiFontOutline/03FE.png new file mode 100644 index 000000000..87d4f446e Binary files /dev/null and b/fonts/TewiFontOutline/03FE.png differ diff --git a/fonts/TewiFontOutline/03FF.png b/fonts/TewiFontOutline/03FF.png new file mode 100644 index 000000000..632f2d4f4 Binary files /dev/null and b/fonts/TewiFontOutline/03FF.png differ diff --git a/fonts/TewiFontOutline/0400.png b/fonts/TewiFontOutline/0400.png new file mode 100644 index 000000000..0e8757e05 Binary files /dev/null and b/fonts/TewiFontOutline/0400.png differ diff --git a/fonts/TewiFontOutline/0401.png b/fonts/TewiFontOutline/0401.png new file mode 100644 index 000000000..52c94b38c Binary files /dev/null and b/fonts/TewiFontOutline/0401.png differ diff --git a/fonts/TewiFontOutline/0402.png b/fonts/TewiFontOutline/0402.png new file mode 100644 index 000000000..82b42417e Binary files /dev/null and b/fonts/TewiFontOutline/0402.png differ diff --git a/fonts/TewiFontOutline/0403.png b/fonts/TewiFontOutline/0403.png new file mode 100644 index 000000000..d861c7784 Binary files /dev/null and b/fonts/TewiFontOutline/0403.png differ diff --git a/fonts/TewiFontOutline/0404.png b/fonts/TewiFontOutline/0404.png new file mode 100644 index 000000000..275a5c147 Binary files /dev/null and b/fonts/TewiFontOutline/0404.png differ diff --git a/fonts/TewiFontOutline/0405.png b/fonts/TewiFontOutline/0405.png new file mode 100644 index 000000000..184a09e6d Binary files /dev/null and b/fonts/TewiFontOutline/0405.png differ diff --git a/fonts/TewiFontOutline/0406.png b/fonts/TewiFontOutline/0406.png new file mode 100644 index 000000000..74977ffdb Binary files /dev/null and b/fonts/TewiFontOutline/0406.png differ diff --git a/fonts/TewiFontOutline/0407.png b/fonts/TewiFontOutline/0407.png new file mode 100644 index 000000000..d6bc172b0 Binary files /dev/null and b/fonts/TewiFontOutline/0407.png differ diff --git a/fonts/TewiFontOutline/0408.png b/fonts/TewiFontOutline/0408.png new file mode 100644 index 000000000..4987adee1 Binary files /dev/null and b/fonts/TewiFontOutline/0408.png differ diff --git a/fonts/TewiFontOutline/0409.png b/fonts/TewiFontOutline/0409.png new file mode 100644 index 000000000..8b41afeb3 Binary files /dev/null and b/fonts/TewiFontOutline/0409.png differ diff --git a/fonts/TewiFontOutline/040A.png b/fonts/TewiFontOutline/040A.png new file mode 100644 index 000000000..ac2e3ae39 Binary files /dev/null and b/fonts/TewiFontOutline/040A.png differ diff --git a/fonts/TewiFontOutline/040B.png b/fonts/TewiFontOutline/040B.png new file mode 100644 index 000000000..3b7a90c94 Binary files /dev/null and b/fonts/TewiFontOutline/040B.png differ diff --git a/fonts/TewiFontOutline/040C.png b/fonts/TewiFontOutline/040C.png new file mode 100644 index 000000000..c688e0c9b Binary files /dev/null and b/fonts/TewiFontOutline/040C.png differ diff --git a/fonts/TewiFontOutline/040D.png b/fonts/TewiFontOutline/040D.png new file mode 100644 index 000000000..2c8c78e72 Binary files /dev/null and b/fonts/TewiFontOutline/040D.png differ diff --git a/fonts/TewiFontOutline/040E.png b/fonts/TewiFontOutline/040E.png new file mode 100644 index 000000000..5c57d016a Binary files /dev/null and b/fonts/TewiFontOutline/040E.png differ diff --git a/fonts/TewiFontOutline/040F.png b/fonts/TewiFontOutline/040F.png new file mode 100644 index 000000000..0abad7f05 Binary files /dev/null and b/fonts/TewiFontOutline/040F.png differ diff --git a/fonts/TewiFontOutline/0410.png b/fonts/TewiFontOutline/0410.png new file mode 100644 index 000000000..ca21676fc Binary files /dev/null and b/fonts/TewiFontOutline/0410.png differ diff --git a/fonts/TewiFontOutline/0411.png b/fonts/TewiFontOutline/0411.png new file mode 100644 index 000000000..22734f4bc Binary files /dev/null and b/fonts/TewiFontOutline/0411.png differ diff --git a/fonts/TewiFontOutline/0412.png b/fonts/TewiFontOutline/0412.png new file mode 100644 index 000000000..48b12c726 Binary files /dev/null and b/fonts/TewiFontOutline/0412.png differ diff --git a/fonts/TewiFontOutline/0413.png b/fonts/TewiFontOutline/0413.png new file mode 100644 index 000000000..1d8b72f37 Binary files /dev/null and b/fonts/TewiFontOutline/0413.png differ diff --git a/fonts/TewiFontOutline/0414.png b/fonts/TewiFontOutline/0414.png new file mode 100644 index 000000000..41bf556d2 Binary files /dev/null and b/fonts/TewiFontOutline/0414.png differ diff --git a/fonts/TewiFontOutline/0415.png b/fonts/TewiFontOutline/0415.png new file mode 100644 index 000000000..877ede72b Binary files /dev/null and b/fonts/TewiFontOutline/0415.png differ diff --git a/fonts/TewiFontOutline/0416.png b/fonts/TewiFontOutline/0416.png new file mode 100644 index 000000000..38e1b40af Binary files /dev/null and b/fonts/TewiFontOutline/0416.png differ diff --git a/fonts/TewiFontOutline/0417.png b/fonts/TewiFontOutline/0417.png new file mode 100644 index 000000000..17983f3a0 Binary files /dev/null and b/fonts/TewiFontOutline/0417.png differ diff --git a/fonts/TewiFontOutline/0418.png b/fonts/TewiFontOutline/0418.png new file mode 100644 index 000000000..02d7a4fc2 Binary files /dev/null and b/fonts/TewiFontOutline/0418.png differ diff --git a/fonts/TewiFontOutline/0419.png b/fonts/TewiFontOutline/0419.png new file mode 100644 index 000000000..8c052ceae Binary files /dev/null and b/fonts/TewiFontOutline/0419.png differ diff --git a/fonts/TewiFontOutline/041A.png b/fonts/TewiFontOutline/041A.png new file mode 100644 index 000000000..f8060a305 Binary files /dev/null and b/fonts/TewiFontOutline/041A.png differ diff --git a/fonts/TewiFontOutline/041B.png b/fonts/TewiFontOutline/041B.png new file mode 100644 index 000000000..09d2b7f7b Binary files /dev/null and b/fonts/TewiFontOutline/041B.png differ diff --git a/fonts/TewiFontOutline/041C.png b/fonts/TewiFontOutline/041C.png new file mode 100644 index 000000000..ed0d7a72c Binary files /dev/null and b/fonts/TewiFontOutline/041C.png differ diff --git a/fonts/TewiFontOutline/041D.png b/fonts/TewiFontOutline/041D.png new file mode 100644 index 000000000..e567bbd3a Binary files /dev/null and b/fonts/TewiFontOutline/041D.png differ diff --git a/fonts/TewiFontOutline/041E.png b/fonts/TewiFontOutline/041E.png new file mode 100644 index 000000000..ec4f36d2b Binary files /dev/null and b/fonts/TewiFontOutline/041E.png differ diff --git a/fonts/TewiFontOutline/041F.png b/fonts/TewiFontOutline/041F.png new file mode 100644 index 000000000..30ec83380 Binary files /dev/null and b/fonts/TewiFontOutline/041F.png differ diff --git a/fonts/TewiFontOutline/0420.png b/fonts/TewiFontOutline/0420.png new file mode 100644 index 000000000..27d201189 Binary files /dev/null and b/fonts/TewiFontOutline/0420.png differ diff --git a/fonts/TewiFontOutline/0421.png b/fonts/TewiFontOutline/0421.png new file mode 100644 index 000000000..997e5e8e2 Binary files /dev/null and b/fonts/TewiFontOutline/0421.png differ diff --git a/fonts/TewiFontOutline/0422.png b/fonts/TewiFontOutline/0422.png new file mode 100644 index 000000000..2ac7dcb07 Binary files /dev/null and b/fonts/TewiFontOutline/0422.png differ diff --git a/fonts/TewiFontOutline/0423.png b/fonts/TewiFontOutline/0423.png new file mode 100644 index 000000000..09e36fb2f Binary files /dev/null and b/fonts/TewiFontOutline/0423.png differ diff --git a/fonts/TewiFontOutline/0424.png b/fonts/TewiFontOutline/0424.png new file mode 100644 index 000000000..644c6ae65 Binary files /dev/null and b/fonts/TewiFontOutline/0424.png differ diff --git a/fonts/TewiFontOutline/0425.png b/fonts/TewiFontOutline/0425.png new file mode 100644 index 000000000..ef1267672 Binary files /dev/null and b/fonts/TewiFontOutline/0425.png differ diff --git a/fonts/TewiFontOutline/0426.png b/fonts/TewiFontOutline/0426.png new file mode 100644 index 000000000..aa53379f7 Binary files /dev/null and b/fonts/TewiFontOutline/0426.png differ diff --git a/fonts/TewiFontOutline/0427.png b/fonts/TewiFontOutline/0427.png new file mode 100644 index 000000000..623fd5b96 Binary files /dev/null and b/fonts/TewiFontOutline/0427.png differ diff --git a/fonts/TewiFontOutline/0428.png b/fonts/TewiFontOutline/0428.png new file mode 100644 index 000000000..0ff5341e8 Binary files /dev/null and b/fonts/TewiFontOutline/0428.png differ diff --git a/fonts/TewiFontOutline/0429.png b/fonts/TewiFontOutline/0429.png new file mode 100644 index 000000000..ba9081121 Binary files /dev/null and b/fonts/TewiFontOutline/0429.png differ diff --git a/fonts/TewiFontOutline/042A.png b/fonts/TewiFontOutline/042A.png new file mode 100644 index 000000000..d44b4b4de Binary files /dev/null and b/fonts/TewiFontOutline/042A.png differ diff --git a/fonts/TewiFontOutline/042B.png b/fonts/TewiFontOutline/042B.png new file mode 100644 index 000000000..b00a71231 Binary files /dev/null and b/fonts/TewiFontOutline/042B.png differ diff --git a/fonts/TewiFontOutline/042C.png b/fonts/TewiFontOutline/042C.png new file mode 100644 index 000000000..29de11517 Binary files /dev/null and b/fonts/TewiFontOutline/042C.png differ diff --git a/fonts/TewiFontOutline/042D.png b/fonts/TewiFontOutline/042D.png new file mode 100644 index 000000000..936deb7e9 Binary files /dev/null and b/fonts/TewiFontOutline/042D.png differ diff --git a/fonts/TewiFontOutline/042E.png b/fonts/TewiFontOutline/042E.png new file mode 100644 index 000000000..c18d13a2d Binary files /dev/null and b/fonts/TewiFontOutline/042E.png differ diff --git a/fonts/TewiFontOutline/042F.png b/fonts/TewiFontOutline/042F.png new file mode 100644 index 000000000..afd2b7347 Binary files /dev/null and b/fonts/TewiFontOutline/042F.png differ diff --git a/fonts/TewiFontOutline/0430.png b/fonts/TewiFontOutline/0430.png new file mode 100644 index 000000000..87f03bea1 Binary files /dev/null and b/fonts/TewiFontOutline/0430.png differ diff --git a/fonts/TewiFontOutline/0431.png b/fonts/TewiFontOutline/0431.png new file mode 100644 index 000000000..051bef287 Binary files /dev/null and b/fonts/TewiFontOutline/0431.png differ diff --git a/fonts/TewiFontOutline/0432.png b/fonts/TewiFontOutline/0432.png new file mode 100644 index 000000000..6a55cfac1 Binary files /dev/null and b/fonts/TewiFontOutline/0432.png differ diff --git a/fonts/TewiFontOutline/0433.png b/fonts/TewiFontOutline/0433.png new file mode 100644 index 000000000..0b62e61bd Binary files /dev/null and b/fonts/TewiFontOutline/0433.png differ diff --git a/fonts/TewiFontOutline/0434.png b/fonts/TewiFontOutline/0434.png new file mode 100644 index 000000000..08568ce74 Binary files /dev/null and b/fonts/TewiFontOutline/0434.png differ diff --git a/fonts/TewiFontOutline/0435.png b/fonts/TewiFontOutline/0435.png new file mode 100644 index 000000000..f59a5a3d4 Binary files /dev/null and b/fonts/TewiFontOutline/0435.png differ diff --git a/fonts/TewiFontOutline/0436.png b/fonts/TewiFontOutline/0436.png new file mode 100644 index 000000000..b469d783a Binary files /dev/null and b/fonts/TewiFontOutline/0436.png differ diff --git a/fonts/TewiFontOutline/0437.png b/fonts/TewiFontOutline/0437.png new file mode 100644 index 000000000..9f6e08914 Binary files /dev/null and b/fonts/TewiFontOutline/0437.png differ diff --git a/fonts/TewiFontOutline/0438.png b/fonts/TewiFontOutline/0438.png new file mode 100644 index 000000000..f06b70662 Binary files /dev/null and b/fonts/TewiFontOutline/0438.png differ diff --git a/fonts/TewiFontOutline/0439.png b/fonts/TewiFontOutline/0439.png new file mode 100644 index 000000000..d4eb2dbc7 Binary files /dev/null and b/fonts/TewiFontOutline/0439.png differ diff --git a/fonts/TewiFontOutline/043A.png b/fonts/TewiFontOutline/043A.png new file mode 100644 index 000000000..ff22984e7 Binary files /dev/null and b/fonts/TewiFontOutline/043A.png differ diff --git a/fonts/TewiFontOutline/043B.png b/fonts/TewiFontOutline/043B.png new file mode 100644 index 000000000..e73ceda20 Binary files /dev/null and b/fonts/TewiFontOutline/043B.png differ diff --git a/fonts/TewiFontOutline/043C.png b/fonts/TewiFontOutline/043C.png new file mode 100644 index 000000000..94fd6e7f5 Binary files /dev/null and b/fonts/TewiFontOutline/043C.png differ diff --git a/fonts/TewiFontOutline/043D.png b/fonts/TewiFontOutline/043D.png new file mode 100644 index 000000000..c02446433 Binary files /dev/null and b/fonts/TewiFontOutline/043D.png differ diff --git a/fonts/TewiFontOutline/043E.png b/fonts/TewiFontOutline/043E.png new file mode 100644 index 000000000..177ddfaeb Binary files /dev/null and b/fonts/TewiFontOutline/043E.png differ diff --git a/fonts/TewiFontOutline/043F.png b/fonts/TewiFontOutline/043F.png new file mode 100644 index 000000000..b18fe4a94 Binary files /dev/null and b/fonts/TewiFontOutline/043F.png differ diff --git a/fonts/TewiFontOutline/0440.png b/fonts/TewiFontOutline/0440.png new file mode 100644 index 000000000..e0fc224ba Binary files /dev/null and b/fonts/TewiFontOutline/0440.png differ diff --git a/fonts/TewiFontOutline/0441.png b/fonts/TewiFontOutline/0441.png new file mode 100644 index 000000000..29c49d5c3 Binary files /dev/null and b/fonts/TewiFontOutline/0441.png differ diff --git a/fonts/TewiFontOutline/0442.png b/fonts/TewiFontOutline/0442.png new file mode 100644 index 000000000..8387d5be3 Binary files /dev/null and b/fonts/TewiFontOutline/0442.png differ diff --git a/fonts/TewiFontOutline/0443.png b/fonts/TewiFontOutline/0443.png new file mode 100644 index 000000000..fb2d95040 Binary files /dev/null and b/fonts/TewiFontOutline/0443.png differ diff --git a/fonts/TewiFontOutline/0444.png b/fonts/TewiFontOutline/0444.png new file mode 100644 index 000000000..ef8c8e9e7 Binary files /dev/null and b/fonts/TewiFontOutline/0444.png differ diff --git a/fonts/TewiFontOutline/0445.png b/fonts/TewiFontOutline/0445.png new file mode 100644 index 000000000..dd7a926e6 Binary files /dev/null and b/fonts/TewiFontOutline/0445.png differ diff --git a/fonts/TewiFontOutline/0446.png b/fonts/TewiFontOutline/0446.png new file mode 100644 index 000000000..3deda88b5 Binary files /dev/null and b/fonts/TewiFontOutline/0446.png differ diff --git a/fonts/TewiFontOutline/0447.png b/fonts/TewiFontOutline/0447.png new file mode 100644 index 000000000..260e4e54d Binary files /dev/null and b/fonts/TewiFontOutline/0447.png differ diff --git a/fonts/TewiFontOutline/0448.png b/fonts/TewiFontOutline/0448.png new file mode 100644 index 000000000..2ae104a0d Binary files /dev/null and b/fonts/TewiFontOutline/0448.png differ diff --git a/fonts/TewiFontOutline/0449.png b/fonts/TewiFontOutline/0449.png new file mode 100644 index 000000000..c4ffb2c22 Binary files /dev/null and b/fonts/TewiFontOutline/0449.png differ diff --git a/fonts/TewiFontOutline/044A.png b/fonts/TewiFontOutline/044A.png new file mode 100644 index 000000000..871d4560b Binary files /dev/null and b/fonts/TewiFontOutline/044A.png differ diff --git a/fonts/TewiFontOutline/044B.png b/fonts/TewiFontOutline/044B.png new file mode 100644 index 000000000..a71f6f843 Binary files /dev/null and b/fonts/TewiFontOutline/044B.png differ diff --git a/fonts/TewiFontOutline/044C.png b/fonts/TewiFontOutline/044C.png new file mode 100644 index 000000000..def0f8445 Binary files /dev/null and b/fonts/TewiFontOutline/044C.png differ diff --git a/fonts/TewiFontOutline/044D.png b/fonts/TewiFontOutline/044D.png new file mode 100644 index 000000000..a56d4ea5e Binary files /dev/null and b/fonts/TewiFontOutline/044D.png differ diff --git a/fonts/TewiFontOutline/044E.png b/fonts/TewiFontOutline/044E.png new file mode 100644 index 000000000..9df5f8712 Binary files /dev/null and b/fonts/TewiFontOutline/044E.png differ diff --git a/fonts/TewiFontOutline/044F.png b/fonts/TewiFontOutline/044F.png new file mode 100644 index 000000000..e87df09c3 Binary files /dev/null and b/fonts/TewiFontOutline/044F.png differ diff --git a/fonts/TewiFontOutline/0450.png b/fonts/TewiFontOutline/0450.png new file mode 100644 index 000000000..7ad4ee4d8 Binary files /dev/null and b/fonts/TewiFontOutline/0450.png differ diff --git a/fonts/TewiFontOutline/0451.png b/fonts/TewiFontOutline/0451.png new file mode 100644 index 000000000..edebadadb Binary files /dev/null and b/fonts/TewiFontOutline/0451.png differ diff --git a/fonts/TewiFontOutline/0452.png b/fonts/TewiFontOutline/0452.png new file mode 100644 index 000000000..59f542528 Binary files /dev/null and b/fonts/TewiFontOutline/0452.png differ diff --git a/fonts/TewiFontOutline/0453.png b/fonts/TewiFontOutline/0453.png new file mode 100644 index 000000000..4a8a389f5 Binary files /dev/null and b/fonts/TewiFontOutline/0453.png differ diff --git a/fonts/TewiFontOutline/0454.png b/fonts/TewiFontOutline/0454.png new file mode 100644 index 000000000..7e9d2bf03 Binary files /dev/null and b/fonts/TewiFontOutline/0454.png differ diff --git a/fonts/TewiFontOutline/0455.png b/fonts/TewiFontOutline/0455.png new file mode 100644 index 000000000..27d136ea8 Binary files /dev/null and b/fonts/TewiFontOutline/0455.png differ diff --git a/fonts/TewiFontOutline/0456.png b/fonts/TewiFontOutline/0456.png new file mode 100644 index 000000000..f097b7aa6 Binary files /dev/null and b/fonts/TewiFontOutline/0456.png differ diff --git a/fonts/TewiFontOutline/0457.png b/fonts/TewiFontOutline/0457.png new file mode 100644 index 000000000..de4e330f8 Binary files /dev/null and b/fonts/TewiFontOutline/0457.png differ diff --git a/fonts/TewiFontOutline/0458.png b/fonts/TewiFontOutline/0458.png new file mode 100644 index 000000000..e2caf5c37 Binary files /dev/null and b/fonts/TewiFontOutline/0458.png differ diff --git a/fonts/TewiFontOutline/0459.png b/fonts/TewiFontOutline/0459.png new file mode 100644 index 000000000..5be9d650e Binary files /dev/null and b/fonts/TewiFontOutline/0459.png differ diff --git a/fonts/TewiFontOutline/045A.png b/fonts/TewiFontOutline/045A.png new file mode 100644 index 000000000..9783a4d97 Binary files /dev/null and b/fonts/TewiFontOutline/045A.png differ diff --git a/fonts/TewiFontOutline/045B.png b/fonts/TewiFontOutline/045B.png new file mode 100644 index 000000000..19000629e Binary files /dev/null and b/fonts/TewiFontOutline/045B.png differ diff --git a/fonts/TewiFontOutline/045C.png b/fonts/TewiFontOutline/045C.png new file mode 100644 index 000000000..dbf362689 Binary files /dev/null and b/fonts/TewiFontOutline/045C.png differ diff --git a/fonts/TewiFontOutline/045D.png b/fonts/TewiFontOutline/045D.png new file mode 100644 index 000000000..b436031e7 Binary files /dev/null and b/fonts/TewiFontOutline/045D.png differ diff --git a/fonts/TewiFontOutline/045E.png b/fonts/TewiFontOutline/045E.png new file mode 100644 index 000000000..e8f7997f7 Binary files /dev/null and b/fonts/TewiFontOutline/045E.png differ diff --git a/fonts/TewiFontOutline/045F.png b/fonts/TewiFontOutline/045F.png new file mode 100644 index 000000000..2a363ce9c Binary files /dev/null and b/fonts/TewiFontOutline/045F.png differ diff --git a/fonts/TewiFontOutline/0460.png b/fonts/TewiFontOutline/0460.png new file mode 100644 index 000000000..58fcc6fc3 Binary files /dev/null and b/fonts/TewiFontOutline/0460.png differ diff --git a/fonts/TewiFontOutline/0461.png b/fonts/TewiFontOutline/0461.png new file mode 100644 index 000000000..0614a23be Binary files /dev/null and b/fonts/TewiFontOutline/0461.png differ diff --git a/fonts/TewiFontOutline/0462.png b/fonts/TewiFontOutline/0462.png new file mode 100644 index 000000000..fe2dc234d Binary files /dev/null and b/fonts/TewiFontOutline/0462.png differ diff --git a/fonts/TewiFontOutline/0463.png b/fonts/TewiFontOutline/0463.png new file mode 100644 index 000000000..1f4ff40d9 Binary files /dev/null and b/fonts/TewiFontOutline/0463.png differ diff --git a/fonts/TewiFontOutline/0464.png b/fonts/TewiFontOutline/0464.png new file mode 100644 index 000000000..f4bbe9f8b Binary files /dev/null and b/fonts/TewiFontOutline/0464.png differ diff --git a/fonts/TewiFontOutline/0465.png b/fonts/TewiFontOutline/0465.png new file mode 100644 index 000000000..73e12b452 Binary files /dev/null and b/fonts/TewiFontOutline/0465.png differ diff --git a/fonts/TewiFontOutline/0466.png b/fonts/TewiFontOutline/0466.png new file mode 100644 index 000000000..f01133944 Binary files /dev/null and b/fonts/TewiFontOutline/0466.png differ diff --git a/fonts/TewiFontOutline/0467.png b/fonts/TewiFontOutline/0467.png new file mode 100644 index 000000000..8684abf65 Binary files /dev/null and b/fonts/TewiFontOutline/0467.png differ diff --git a/fonts/TewiFontOutline/0468.png b/fonts/TewiFontOutline/0468.png new file mode 100644 index 000000000..fe4111a93 Binary files /dev/null and b/fonts/TewiFontOutline/0468.png differ diff --git a/fonts/TewiFontOutline/0469.png b/fonts/TewiFontOutline/0469.png new file mode 100644 index 000000000..fe5586a5a Binary files /dev/null and b/fonts/TewiFontOutline/0469.png differ diff --git a/fonts/TewiFontOutline/046A.png b/fonts/TewiFontOutline/046A.png new file mode 100644 index 000000000..af7380946 Binary files /dev/null and b/fonts/TewiFontOutline/046A.png differ diff --git a/fonts/TewiFontOutline/046B.png b/fonts/TewiFontOutline/046B.png new file mode 100644 index 000000000..abf9e483f Binary files /dev/null and b/fonts/TewiFontOutline/046B.png differ diff --git a/fonts/TewiFontOutline/046C.png b/fonts/TewiFontOutline/046C.png new file mode 100644 index 000000000..001a6507b Binary files /dev/null and b/fonts/TewiFontOutline/046C.png differ diff --git a/fonts/TewiFontOutline/046D.png b/fonts/TewiFontOutline/046D.png new file mode 100644 index 000000000..a10122fea Binary files /dev/null and b/fonts/TewiFontOutline/046D.png differ diff --git a/fonts/TewiFontOutline/046E.png b/fonts/TewiFontOutline/046E.png new file mode 100644 index 000000000..e286c1601 Binary files /dev/null and b/fonts/TewiFontOutline/046E.png differ diff --git a/fonts/TewiFontOutline/046F.png b/fonts/TewiFontOutline/046F.png new file mode 100644 index 000000000..202cd07ee Binary files /dev/null and b/fonts/TewiFontOutline/046F.png differ diff --git a/fonts/TewiFontOutline/0470.png b/fonts/TewiFontOutline/0470.png new file mode 100644 index 000000000..151e6b980 Binary files /dev/null and b/fonts/TewiFontOutline/0470.png differ diff --git a/fonts/TewiFontOutline/0471.png b/fonts/TewiFontOutline/0471.png new file mode 100644 index 000000000..2e9605ccd Binary files /dev/null and b/fonts/TewiFontOutline/0471.png differ diff --git a/fonts/TewiFontOutline/0472.png b/fonts/TewiFontOutline/0472.png new file mode 100644 index 000000000..4f1e44be9 Binary files /dev/null and b/fonts/TewiFontOutline/0472.png differ diff --git a/fonts/TewiFontOutline/0473.png b/fonts/TewiFontOutline/0473.png new file mode 100644 index 000000000..6fd5582ef Binary files /dev/null and b/fonts/TewiFontOutline/0473.png differ diff --git a/fonts/TewiFontOutline/0474.png b/fonts/TewiFontOutline/0474.png new file mode 100644 index 000000000..5f6ca7666 Binary files /dev/null and b/fonts/TewiFontOutline/0474.png differ diff --git a/fonts/TewiFontOutline/0475.png b/fonts/TewiFontOutline/0475.png new file mode 100644 index 000000000..a97e3463f Binary files /dev/null and b/fonts/TewiFontOutline/0475.png differ diff --git a/fonts/TewiFontOutline/0476.png b/fonts/TewiFontOutline/0476.png new file mode 100644 index 000000000..1c34f089f Binary files /dev/null and b/fonts/TewiFontOutline/0476.png differ diff --git a/fonts/TewiFontOutline/0477.png b/fonts/TewiFontOutline/0477.png new file mode 100644 index 000000000..014e2452b Binary files /dev/null and b/fonts/TewiFontOutline/0477.png differ diff --git a/fonts/TewiFontOutline/0478.png b/fonts/TewiFontOutline/0478.png new file mode 100644 index 000000000..be9c501cb Binary files /dev/null and b/fonts/TewiFontOutline/0478.png differ diff --git a/fonts/TewiFontOutline/0479.png b/fonts/TewiFontOutline/0479.png new file mode 100644 index 000000000..49b653d41 Binary files /dev/null and b/fonts/TewiFontOutline/0479.png differ diff --git a/fonts/TewiFontOutline/047A.png b/fonts/TewiFontOutline/047A.png new file mode 100644 index 000000000..8a7b4a22e Binary files /dev/null and b/fonts/TewiFontOutline/047A.png differ diff --git a/fonts/TewiFontOutline/047B.png b/fonts/TewiFontOutline/047B.png new file mode 100644 index 000000000..374ba847d Binary files /dev/null and b/fonts/TewiFontOutline/047B.png differ diff --git a/fonts/TewiFontOutline/047C.png b/fonts/TewiFontOutline/047C.png new file mode 100644 index 000000000..71d83f58d Binary files /dev/null and b/fonts/TewiFontOutline/047C.png differ diff --git a/fonts/TewiFontOutline/047D.png b/fonts/TewiFontOutline/047D.png new file mode 100644 index 000000000..5201662ee Binary files /dev/null and b/fonts/TewiFontOutline/047D.png differ diff --git a/fonts/TewiFontOutline/047E.png b/fonts/TewiFontOutline/047E.png new file mode 100644 index 000000000..7aa8e761b Binary files /dev/null and b/fonts/TewiFontOutline/047E.png differ diff --git a/fonts/TewiFontOutline/047F.png b/fonts/TewiFontOutline/047F.png new file mode 100644 index 000000000..aebaa7fcf Binary files /dev/null and b/fonts/TewiFontOutline/047F.png differ diff --git a/fonts/TewiFontOutline/0480.png b/fonts/TewiFontOutline/0480.png new file mode 100644 index 000000000..9b0d3784a Binary files /dev/null and b/fonts/TewiFontOutline/0480.png differ diff --git a/fonts/TewiFontOutline/0481.png b/fonts/TewiFontOutline/0481.png new file mode 100644 index 000000000..273e013d5 Binary files /dev/null and b/fonts/TewiFontOutline/0481.png differ diff --git a/fonts/TewiFontOutline/0482.png b/fonts/TewiFontOutline/0482.png new file mode 100644 index 000000000..00db7dee6 Binary files /dev/null and b/fonts/TewiFontOutline/0482.png differ diff --git a/fonts/TewiFontOutline/0483.png b/fonts/TewiFontOutline/0483.png new file mode 100644 index 000000000..2f5478679 Binary files /dev/null and b/fonts/TewiFontOutline/0483.png differ diff --git a/fonts/TewiFontOutline/0484.png b/fonts/TewiFontOutline/0484.png new file mode 100644 index 000000000..9b6316447 Binary files /dev/null and b/fonts/TewiFontOutline/0484.png differ diff --git a/fonts/TewiFontOutline/0485.png b/fonts/TewiFontOutline/0485.png new file mode 100644 index 000000000..182e478fc Binary files /dev/null and b/fonts/TewiFontOutline/0485.png differ diff --git a/fonts/TewiFontOutline/0486.png b/fonts/TewiFontOutline/0486.png new file mode 100644 index 000000000..3a29372f9 Binary files /dev/null and b/fonts/TewiFontOutline/0486.png differ diff --git a/fonts/TewiFontOutline/048A.png b/fonts/TewiFontOutline/048A.png new file mode 100644 index 000000000..ea3b6664c Binary files /dev/null and b/fonts/TewiFontOutline/048A.png differ diff --git a/fonts/TewiFontOutline/048B.png b/fonts/TewiFontOutline/048B.png new file mode 100644 index 000000000..72496a0fa Binary files /dev/null and b/fonts/TewiFontOutline/048B.png differ diff --git a/fonts/TewiFontOutline/048C.png b/fonts/TewiFontOutline/048C.png new file mode 100644 index 000000000..0f1469364 Binary files /dev/null and b/fonts/TewiFontOutline/048C.png differ diff --git a/fonts/TewiFontOutline/048D.png b/fonts/TewiFontOutline/048D.png new file mode 100644 index 000000000..1f4ff40d9 Binary files /dev/null and b/fonts/TewiFontOutline/048D.png differ diff --git a/fonts/TewiFontOutline/048E.png b/fonts/TewiFontOutline/048E.png new file mode 100644 index 000000000..13b1beed0 Binary files /dev/null and b/fonts/TewiFontOutline/048E.png differ diff --git a/fonts/TewiFontOutline/048F.png b/fonts/TewiFontOutline/048F.png new file mode 100644 index 000000000..7174725be Binary files /dev/null and b/fonts/TewiFontOutline/048F.png differ diff --git a/fonts/TewiFontOutline/0490.png b/fonts/TewiFontOutline/0490.png new file mode 100644 index 000000000..eef1db047 Binary files /dev/null and b/fonts/TewiFontOutline/0490.png differ diff --git a/fonts/TewiFontOutline/0491.png b/fonts/TewiFontOutline/0491.png new file mode 100644 index 000000000..9a1bdbf1c Binary files /dev/null and b/fonts/TewiFontOutline/0491.png differ diff --git a/fonts/TewiFontOutline/0492.png b/fonts/TewiFontOutline/0492.png new file mode 100644 index 000000000..e991ceb18 Binary files /dev/null and b/fonts/TewiFontOutline/0492.png differ diff --git a/fonts/TewiFontOutline/0493.png b/fonts/TewiFontOutline/0493.png new file mode 100644 index 000000000..2cdde4361 Binary files /dev/null and b/fonts/TewiFontOutline/0493.png differ diff --git a/fonts/TewiFontOutline/0494.png b/fonts/TewiFontOutline/0494.png new file mode 100644 index 000000000..d19b6c36d Binary files /dev/null and b/fonts/TewiFontOutline/0494.png differ diff --git a/fonts/TewiFontOutline/0495.png b/fonts/TewiFontOutline/0495.png new file mode 100644 index 000000000..b8ea20ec2 Binary files /dev/null and b/fonts/TewiFontOutline/0495.png differ diff --git a/fonts/TewiFontOutline/0496.png b/fonts/TewiFontOutline/0496.png new file mode 100644 index 000000000..156035ae6 Binary files /dev/null and b/fonts/TewiFontOutline/0496.png differ diff --git a/fonts/TewiFontOutline/0497.png b/fonts/TewiFontOutline/0497.png new file mode 100644 index 000000000..d6f7fc4c1 Binary files /dev/null and b/fonts/TewiFontOutline/0497.png differ diff --git a/fonts/TewiFontOutline/0498.png b/fonts/TewiFontOutline/0498.png new file mode 100644 index 000000000..e66d91b80 Binary files /dev/null and b/fonts/TewiFontOutline/0498.png differ diff --git a/fonts/TewiFontOutline/0499.png b/fonts/TewiFontOutline/0499.png new file mode 100644 index 000000000..3fcd10303 Binary files /dev/null and b/fonts/TewiFontOutline/0499.png differ diff --git a/fonts/TewiFontOutline/049A.png b/fonts/TewiFontOutline/049A.png new file mode 100644 index 000000000..fd95dba38 Binary files /dev/null and b/fonts/TewiFontOutline/049A.png differ diff --git a/fonts/TewiFontOutline/049B.png b/fonts/TewiFontOutline/049B.png new file mode 100644 index 000000000..7082c1a68 Binary files /dev/null and b/fonts/TewiFontOutline/049B.png differ diff --git a/fonts/TewiFontOutline/049C.png b/fonts/TewiFontOutline/049C.png new file mode 100644 index 000000000..93db2edb1 Binary files /dev/null and b/fonts/TewiFontOutline/049C.png differ diff --git a/fonts/TewiFontOutline/049D.png b/fonts/TewiFontOutline/049D.png new file mode 100644 index 000000000..cbd646fb4 Binary files /dev/null and b/fonts/TewiFontOutline/049D.png differ diff --git a/fonts/TewiFontOutline/049E.png b/fonts/TewiFontOutline/049E.png new file mode 100644 index 000000000..e5d365b91 Binary files /dev/null and b/fonts/TewiFontOutline/049E.png differ diff --git a/fonts/TewiFontOutline/049F.png b/fonts/TewiFontOutline/049F.png new file mode 100644 index 000000000..6b604c07e Binary files /dev/null and b/fonts/TewiFontOutline/049F.png differ diff --git a/fonts/TewiFontOutline/04A0.png b/fonts/TewiFontOutline/04A0.png new file mode 100644 index 000000000..63486dac6 Binary files /dev/null and b/fonts/TewiFontOutline/04A0.png differ diff --git a/fonts/TewiFontOutline/04A1.png b/fonts/TewiFontOutline/04A1.png new file mode 100644 index 000000000..de1bd26bb Binary files /dev/null and b/fonts/TewiFontOutline/04A1.png differ diff --git a/fonts/TewiFontOutline/04A2.png b/fonts/TewiFontOutline/04A2.png new file mode 100644 index 000000000..07d96c81b Binary files /dev/null and b/fonts/TewiFontOutline/04A2.png differ diff --git a/fonts/TewiFontOutline/04A3.png b/fonts/TewiFontOutline/04A3.png new file mode 100644 index 000000000..94fab5683 Binary files /dev/null and b/fonts/TewiFontOutline/04A3.png differ diff --git a/fonts/TewiFontOutline/04A4.png b/fonts/TewiFontOutline/04A4.png new file mode 100644 index 000000000..d58b84112 Binary files /dev/null and b/fonts/TewiFontOutline/04A4.png differ diff --git a/fonts/TewiFontOutline/04A5.png b/fonts/TewiFontOutline/04A5.png new file mode 100644 index 000000000..f90aa186f Binary files /dev/null and b/fonts/TewiFontOutline/04A5.png differ diff --git a/fonts/TewiFontOutline/04A6.png b/fonts/TewiFontOutline/04A6.png new file mode 100644 index 000000000..f329c62c8 Binary files /dev/null and b/fonts/TewiFontOutline/04A6.png differ diff --git a/fonts/TewiFontOutline/04A7.png b/fonts/TewiFontOutline/04A7.png new file mode 100644 index 000000000..e7810a7ef Binary files /dev/null and b/fonts/TewiFontOutline/04A7.png differ diff --git a/fonts/TewiFontOutline/04A8.png b/fonts/TewiFontOutline/04A8.png new file mode 100644 index 000000000..cac04861a Binary files /dev/null and b/fonts/TewiFontOutline/04A8.png differ diff --git a/fonts/TewiFontOutline/04A9.png b/fonts/TewiFontOutline/04A9.png new file mode 100644 index 000000000..6de2935a1 Binary files /dev/null and b/fonts/TewiFontOutline/04A9.png differ diff --git a/fonts/TewiFontOutline/04AA.png b/fonts/TewiFontOutline/04AA.png new file mode 100644 index 000000000..22ec85ecb Binary files /dev/null and b/fonts/TewiFontOutline/04AA.png differ diff --git a/fonts/TewiFontOutline/04AB.png b/fonts/TewiFontOutline/04AB.png new file mode 100644 index 000000000..74efbbdff Binary files /dev/null and b/fonts/TewiFontOutline/04AB.png differ diff --git a/fonts/TewiFontOutline/04AC.png b/fonts/TewiFontOutline/04AC.png new file mode 100644 index 000000000..c8cc79e58 Binary files /dev/null and b/fonts/TewiFontOutline/04AC.png differ diff --git a/fonts/TewiFontOutline/04AD.png b/fonts/TewiFontOutline/04AD.png new file mode 100644 index 000000000..293873315 Binary files /dev/null and b/fonts/TewiFontOutline/04AD.png differ diff --git a/fonts/TewiFontOutline/04AE.png b/fonts/TewiFontOutline/04AE.png new file mode 100644 index 000000000..d49f73aaf Binary files /dev/null and b/fonts/TewiFontOutline/04AE.png differ diff --git a/fonts/TewiFontOutline/04AF.png b/fonts/TewiFontOutline/04AF.png new file mode 100644 index 000000000..28f310e75 Binary files /dev/null and b/fonts/TewiFontOutline/04AF.png differ diff --git a/fonts/TewiFontOutline/04B0.png b/fonts/TewiFontOutline/04B0.png new file mode 100644 index 000000000..b3bf38677 Binary files /dev/null and b/fonts/TewiFontOutline/04B0.png differ diff --git a/fonts/TewiFontOutline/04B1.png b/fonts/TewiFontOutline/04B1.png new file mode 100644 index 000000000..0cf321fd9 Binary files /dev/null and b/fonts/TewiFontOutline/04B1.png differ diff --git a/fonts/TewiFontOutline/04B2.png b/fonts/TewiFontOutline/04B2.png new file mode 100644 index 000000000..57e44fdb6 Binary files /dev/null and b/fonts/TewiFontOutline/04B2.png differ diff --git a/fonts/TewiFontOutline/04B3.png b/fonts/TewiFontOutline/04B3.png new file mode 100644 index 000000000..4a3c68417 Binary files /dev/null and b/fonts/TewiFontOutline/04B3.png differ diff --git a/fonts/TewiFontOutline/04B4.png b/fonts/TewiFontOutline/04B4.png new file mode 100644 index 000000000..4805d1e7b Binary files /dev/null and b/fonts/TewiFontOutline/04B4.png differ diff --git a/fonts/TewiFontOutline/04B5.png b/fonts/TewiFontOutline/04B5.png new file mode 100644 index 000000000..bf63c8d4b Binary files /dev/null and b/fonts/TewiFontOutline/04B5.png differ diff --git a/fonts/TewiFontOutline/04B6.png b/fonts/TewiFontOutline/04B6.png new file mode 100644 index 000000000..194c020bf Binary files /dev/null and b/fonts/TewiFontOutline/04B6.png differ diff --git a/fonts/TewiFontOutline/04B7.png b/fonts/TewiFontOutline/04B7.png new file mode 100644 index 000000000..3002250da Binary files /dev/null and b/fonts/TewiFontOutline/04B7.png differ diff --git a/fonts/TewiFontOutline/04B8.png b/fonts/TewiFontOutline/04B8.png new file mode 100644 index 000000000..dc3a292c2 Binary files /dev/null and b/fonts/TewiFontOutline/04B8.png differ diff --git a/fonts/TewiFontOutline/04B9.png b/fonts/TewiFontOutline/04B9.png new file mode 100644 index 000000000..7a431ad63 Binary files /dev/null and b/fonts/TewiFontOutline/04B9.png differ diff --git a/fonts/TewiFontOutline/04BA.png b/fonts/TewiFontOutline/04BA.png new file mode 100644 index 000000000..0b7a98f63 Binary files /dev/null and b/fonts/TewiFontOutline/04BA.png differ diff --git a/fonts/TewiFontOutline/04BB.png b/fonts/TewiFontOutline/04BB.png new file mode 100644 index 000000000..4d63339a0 Binary files /dev/null and b/fonts/TewiFontOutline/04BB.png differ diff --git a/fonts/TewiFontOutline/04BC.png b/fonts/TewiFontOutline/04BC.png new file mode 100644 index 000000000..631a664bf Binary files /dev/null and b/fonts/TewiFontOutline/04BC.png differ diff --git a/fonts/TewiFontOutline/04BD.png b/fonts/TewiFontOutline/04BD.png new file mode 100644 index 000000000..73d536cc8 Binary files /dev/null and b/fonts/TewiFontOutline/04BD.png differ diff --git a/fonts/TewiFontOutline/04BE.png b/fonts/TewiFontOutline/04BE.png new file mode 100644 index 000000000..e379db27b Binary files /dev/null and b/fonts/TewiFontOutline/04BE.png differ diff --git a/fonts/TewiFontOutline/04BF.png b/fonts/TewiFontOutline/04BF.png new file mode 100644 index 000000000..db8e81b62 Binary files /dev/null and b/fonts/TewiFontOutline/04BF.png differ diff --git a/fonts/TewiFontOutline/04C0.png b/fonts/TewiFontOutline/04C0.png new file mode 100644 index 000000000..d7c93ca79 Binary files /dev/null and b/fonts/TewiFontOutline/04C0.png differ diff --git a/fonts/TewiFontOutline/04C1.png b/fonts/TewiFontOutline/04C1.png new file mode 100644 index 000000000..2677e71c9 Binary files /dev/null and b/fonts/TewiFontOutline/04C1.png differ diff --git a/fonts/TewiFontOutline/04C2.png b/fonts/TewiFontOutline/04C2.png new file mode 100644 index 000000000..3d642439b Binary files /dev/null and b/fonts/TewiFontOutline/04C2.png differ diff --git a/fonts/TewiFontOutline/04C3.png b/fonts/TewiFontOutline/04C3.png new file mode 100644 index 000000000..4680d383e Binary files /dev/null and b/fonts/TewiFontOutline/04C3.png differ diff --git a/fonts/TewiFontOutline/04C4.png b/fonts/TewiFontOutline/04C4.png new file mode 100644 index 000000000..29748fec1 Binary files /dev/null and b/fonts/TewiFontOutline/04C4.png differ diff --git a/fonts/TewiFontOutline/04C5.png b/fonts/TewiFontOutline/04C5.png new file mode 100644 index 000000000..52e4a08b1 Binary files /dev/null and b/fonts/TewiFontOutline/04C5.png differ diff --git a/fonts/TewiFontOutline/04C6.png b/fonts/TewiFontOutline/04C6.png new file mode 100644 index 000000000..67c5b4cc1 Binary files /dev/null and b/fonts/TewiFontOutline/04C6.png differ diff --git a/fonts/TewiFontOutline/04C7.png b/fonts/TewiFontOutline/04C7.png new file mode 100644 index 000000000..a76d1a337 Binary files /dev/null and b/fonts/TewiFontOutline/04C7.png differ diff --git a/fonts/TewiFontOutline/04C8.png b/fonts/TewiFontOutline/04C8.png new file mode 100644 index 000000000..01d7fbced Binary files /dev/null and b/fonts/TewiFontOutline/04C8.png differ diff --git a/fonts/TewiFontOutline/04C9.png b/fonts/TewiFontOutline/04C9.png new file mode 100644 index 000000000..145baa59c Binary files /dev/null and b/fonts/TewiFontOutline/04C9.png differ diff --git a/fonts/TewiFontOutline/04CA.png b/fonts/TewiFontOutline/04CA.png new file mode 100644 index 000000000..9430e937c Binary files /dev/null and b/fonts/TewiFontOutline/04CA.png differ diff --git a/fonts/TewiFontOutline/04CB.png b/fonts/TewiFontOutline/04CB.png new file mode 100644 index 000000000..5f3d7616b Binary files /dev/null and b/fonts/TewiFontOutline/04CB.png differ diff --git a/fonts/TewiFontOutline/04CC.png b/fonts/TewiFontOutline/04CC.png new file mode 100644 index 000000000..b5bfed72e Binary files /dev/null and b/fonts/TewiFontOutline/04CC.png differ diff --git a/fonts/TewiFontOutline/04CD.png b/fonts/TewiFontOutline/04CD.png new file mode 100644 index 000000000..1a05241f1 Binary files /dev/null and b/fonts/TewiFontOutline/04CD.png differ diff --git a/fonts/TewiFontOutline/04CE.png b/fonts/TewiFontOutline/04CE.png new file mode 100644 index 000000000..586cd5831 Binary files /dev/null and b/fonts/TewiFontOutline/04CE.png differ diff --git a/fonts/TewiFontOutline/04CF.png b/fonts/TewiFontOutline/04CF.png new file mode 100644 index 000000000..74977ffdb Binary files /dev/null and b/fonts/TewiFontOutline/04CF.png differ diff --git a/fonts/TewiFontOutline/04D0.png b/fonts/TewiFontOutline/04D0.png new file mode 100644 index 000000000..a7818e070 Binary files /dev/null and b/fonts/TewiFontOutline/04D0.png differ diff --git a/fonts/TewiFontOutline/04D1.png b/fonts/TewiFontOutline/04D1.png new file mode 100644 index 000000000..2854a93a0 Binary files /dev/null and b/fonts/TewiFontOutline/04D1.png differ diff --git a/fonts/TewiFontOutline/04D2.png b/fonts/TewiFontOutline/04D2.png new file mode 100644 index 000000000..459698836 Binary files /dev/null and b/fonts/TewiFontOutline/04D2.png differ diff --git a/fonts/TewiFontOutline/04D3.png b/fonts/TewiFontOutline/04D3.png new file mode 100644 index 000000000..c687b52df Binary files /dev/null and b/fonts/TewiFontOutline/04D3.png differ diff --git a/fonts/TewiFontOutline/04D4.png b/fonts/TewiFontOutline/04D4.png new file mode 100644 index 000000000..0bab600b5 Binary files /dev/null and b/fonts/TewiFontOutline/04D4.png differ diff --git a/fonts/TewiFontOutline/04D5.png b/fonts/TewiFontOutline/04D5.png new file mode 100644 index 000000000..ad2acd568 Binary files /dev/null and b/fonts/TewiFontOutline/04D5.png differ diff --git a/fonts/TewiFontOutline/04D6.png b/fonts/TewiFontOutline/04D6.png new file mode 100644 index 000000000..62efb948b Binary files /dev/null and b/fonts/TewiFontOutline/04D6.png differ diff --git a/fonts/TewiFontOutline/04D7.png b/fonts/TewiFontOutline/04D7.png new file mode 100644 index 000000000..d2c5fece2 Binary files /dev/null and b/fonts/TewiFontOutline/04D7.png differ diff --git a/fonts/TewiFontOutline/04D8.png b/fonts/TewiFontOutline/04D8.png new file mode 100644 index 000000000..6e7f72132 Binary files /dev/null and b/fonts/TewiFontOutline/04D8.png differ diff --git a/fonts/TewiFontOutline/04D9.png b/fonts/TewiFontOutline/04D9.png new file mode 100644 index 000000000..756cb5e09 Binary files /dev/null and b/fonts/TewiFontOutline/04D9.png differ diff --git a/fonts/TewiFontOutline/04DA.png b/fonts/TewiFontOutline/04DA.png new file mode 100644 index 000000000..bc1ec8a56 Binary files /dev/null and b/fonts/TewiFontOutline/04DA.png differ diff --git a/fonts/TewiFontOutline/04DB.png b/fonts/TewiFontOutline/04DB.png new file mode 100644 index 000000000..1958ba41e Binary files /dev/null and b/fonts/TewiFontOutline/04DB.png differ diff --git a/fonts/TewiFontOutline/04DC.png b/fonts/TewiFontOutline/04DC.png new file mode 100644 index 000000000..c3b86ab61 Binary files /dev/null and b/fonts/TewiFontOutline/04DC.png differ diff --git a/fonts/TewiFontOutline/04DD.png b/fonts/TewiFontOutline/04DD.png new file mode 100644 index 000000000..e3e1f7501 Binary files /dev/null and b/fonts/TewiFontOutline/04DD.png differ diff --git a/fonts/TewiFontOutline/04DE.png b/fonts/TewiFontOutline/04DE.png new file mode 100644 index 000000000..0fceedda7 Binary files /dev/null and b/fonts/TewiFontOutline/04DE.png differ diff --git a/fonts/TewiFontOutline/04DF.png b/fonts/TewiFontOutline/04DF.png new file mode 100644 index 000000000..434b59f8f Binary files /dev/null and b/fonts/TewiFontOutline/04DF.png differ diff --git a/fonts/TewiFontOutline/04E0.png b/fonts/TewiFontOutline/04E0.png new file mode 100644 index 000000000..192aed004 Binary files /dev/null and b/fonts/TewiFontOutline/04E0.png differ diff --git a/fonts/TewiFontOutline/04E1.png b/fonts/TewiFontOutline/04E1.png new file mode 100644 index 000000000..7c0e244c5 Binary files /dev/null and b/fonts/TewiFontOutline/04E1.png differ diff --git a/fonts/TewiFontOutline/04E2.png b/fonts/TewiFontOutline/04E2.png new file mode 100644 index 000000000..92bb4904a Binary files /dev/null and b/fonts/TewiFontOutline/04E2.png differ diff --git a/fonts/TewiFontOutline/04E3.png b/fonts/TewiFontOutline/04E3.png new file mode 100644 index 000000000..366fc8d69 Binary files /dev/null and b/fonts/TewiFontOutline/04E3.png differ diff --git a/fonts/TewiFontOutline/04E4.png b/fonts/TewiFontOutline/04E4.png new file mode 100644 index 000000000..f2f87f5e0 Binary files /dev/null and b/fonts/TewiFontOutline/04E4.png differ diff --git a/fonts/TewiFontOutline/04E5.png b/fonts/TewiFontOutline/04E5.png new file mode 100644 index 000000000..8b96357bc Binary files /dev/null and b/fonts/TewiFontOutline/04E5.png differ diff --git a/fonts/TewiFontOutline/04E6.png b/fonts/TewiFontOutline/04E6.png new file mode 100644 index 000000000..412acb38b Binary files /dev/null and b/fonts/TewiFontOutline/04E6.png differ diff --git a/fonts/TewiFontOutline/04E7.png b/fonts/TewiFontOutline/04E7.png new file mode 100644 index 000000000..5c0f0b715 Binary files /dev/null and b/fonts/TewiFontOutline/04E7.png differ diff --git a/fonts/TewiFontOutline/04E8.png b/fonts/TewiFontOutline/04E8.png new file mode 100644 index 000000000..4f1e44be9 Binary files /dev/null and b/fonts/TewiFontOutline/04E8.png differ diff --git a/fonts/TewiFontOutline/04E9.png b/fonts/TewiFontOutline/04E9.png new file mode 100644 index 000000000..6fd5582ef Binary files /dev/null and b/fonts/TewiFontOutline/04E9.png differ diff --git a/fonts/TewiFontOutline/04EA.png b/fonts/TewiFontOutline/04EA.png new file mode 100644 index 000000000..7817f9995 Binary files /dev/null and b/fonts/TewiFontOutline/04EA.png differ diff --git a/fonts/TewiFontOutline/04EB.png b/fonts/TewiFontOutline/04EB.png new file mode 100644 index 000000000..c77a4a245 Binary files /dev/null and b/fonts/TewiFontOutline/04EB.png differ diff --git a/fonts/TewiFontOutline/04EC.png b/fonts/TewiFontOutline/04EC.png new file mode 100644 index 000000000..afb5e7010 Binary files /dev/null and b/fonts/TewiFontOutline/04EC.png differ diff --git a/fonts/TewiFontOutline/04ED.png b/fonts/TewiFontOutline/04ED.png new file mode 100644 index 000000000..5d21c1756 Binary files /dev/null and b/fonts/TewiFontOutline/04ED.png differ diff --git a/fonts/TewiFontOutline/04EE.png b/fonts/TewiFontOutline/04EE.png new file mode 100644 index 000000000..06bfcf0ea Binary files /dev/null and b/fonts/TewiFontOutline/04EE.png differ diff --git a/fonts/TewiFontOutline/04EF.png b/fonts/TewiFontOutline/04EF.png new file mode 100644 index 000000000..de211c11c Binary files /dev/null and b/fonts/TewiFontOutline/04EF.png differ diff --git a/fonts/TewiFontOutline/04F0.png b/fonts/TewiFontOutline/04F0.png new file mode 100644 index 000000000..3a3649219 Binary files /dev/null and b/fonts/TewiFontOutline/04F0.png differ diff --git a/fonts/TewiFontOutline/04F1.png b/fonts/TewiFontOutline/04F1.png new file mode 100644 index 000000000..f1a23f5cb Binary files /dev/null and b/fonts/TewiFontOutline/04F1.png differ diff --git a/fonts/TewiFontOutline/04F2.png b/fonts/TewiFontOutline/04F2.png new file mode 100644 index 000000000..3d4431e08 Binary files /dev/null and b/fonts/TewiFontOutline/04F2.png differ diff --git a/fonts/TewiFontOutline/04F3.png b/fonts/TewiFontOutline/04F3.png new file mode 100644 index 000000000..08735a2db Binary files /dev/null and b/fonts/TewiFontOutline/04F3.png differ diff --git a/fonts/TewiFontOutline/04F4.png b/fonts/TewiFontOutline/04F4.png new file mode 100644 index 000000000..d146a4bc0 Binary files /dev/null and b/fonts/TewiFontOutline/04F4.png differ diff --git a/fonts/TewiFontOutline/04F5.png b/fonts/TewiFontOutline/04F5.png new file mode 100644 index 000000000..a233876c2 Binary files /dev/null and b/fonts/TewiFontOutline/04F5.png differ diff --git a/fonts/TewiFontOutline/04F6.png b/fonts/TewiFontOutline/04F6.png new file mode 100644 index 000000000..b55b457e2 Binary files /dev/null and b/fonts/TewiFontOutline/04F6.png differ diff --git a/fonts/TewiFontOutline/04F7.png b/fonts/TewiFontOutline/04F7.png new file mode 100644 index 000000000..7dfd71388 Binary files /dev/null and b/fonts/TewiFontOutline/04F7.png differ diff --git a/fonts/TewiFontOutline/04F8.png b/fonts/TewiFontOutline/04F8.png new file mode 100644 index 000000000..501939224 Binary files /dev/null and b/fonts/TewiFontOutline/04F8.png differ diff --git a/fonts/TewiFontOutline/04F9.png b/fonts/TewiFontOutline/04F9.png new file mode 100644 index 000000000..286bd7f29 Binary files /dev/null and b/fonts/TewiFontOutline/04F9.png differ diff --git a/fonts/TewiFontOutline/04FA.png b/fonts/TewiFontOutline/04FA.png new file mode 100644 index 000000000..e9d783634 Binary files /dev/null and b/fonts/TewiFontOutline/04FA.png differ diff --git a/fonts/TewiFontOutline/04FB.png b/fonts/TewiFontOutline/04FB.png new file mode 100644 index 000000000..36d3d974a Binary files /dev/null and b/fonts/TewiFontOutline/04FB.png differ diff --git a/fonts/TewiFontOutline/04FC.png b/fonts/TewiFontOutline/04FC.png new file mode 100644 index 000000000..9e33726fe Binary files /dev/null and b/fonts/TewiFontOutline/04FC.png differ diff --git a/fonts/TewiFontOutline/04FD.png b/fonts/TewiFontOutline/04FD.png new file mode 100644 index 000000000..c989bf5c2 Binary files /dev/null and b/fonts/TewiFontOutline/04FD.png differ diff --git a/fonts/TewiFontOutline/04FE.png b/fonts/TewiFontOutline/04FE.png new file mode 100644 index 000000000..9487d2b39 Binary files /dev/null and b/fonts/TewiFontOutline/04FE.png differ diff --git a/fonts/TewiFontOutline/04FF.png b/fonts/TewiFontOutline/04FF.png new file mode 100644 index 000000000..4d8bc9c8d Binary files /dev/null and b/fonts/TewiFontOutline/04FF.png differ diff --git a/fonts/TewiFontOutline/05BE.png b/fonts/TewiFontOutline/05BE.png new file mode 100644 index 000000000..adfb5870c Binary files /dev/null and b/fonts/TewiFontOutline/05BE.png differ diff --git a/fonts/TewiFontOutline/05C0.png b/fonts/TewiFontOutline/05C0.png new file mode 100644 index 000000000..7c3b23f0f Binary files /dev/null and b/fonts/TewiFontOutline/05C0.png differ diff --git a/fonts/TewiFontOutline/05C3.png b/fonts/TewiFontOutline/05C3.png new file mode 100644 index 000000000..2a5b4fafb Binary files /dev/null and b/fonts/TewiFontOutline/05C3.png differ diff --git a/fonts/TewiFontOutline/05C6.png b/fonts/TewiFontOutline/05C6.png new file mode 100644 index 000000000..de1705bcd Binary files /dev/null and b/fonts/TewiFontOutline/05C6.png differ diff --git a/fonts/TewiFontOutline/05D0.png b/fonts/TewiFontOutline/05D0.png new file mode 100644 index 000000000..978f60e2e Binary files /dev/null and b/fonts/TewiFontOutline/05D0.png differ diff --git a/fonts/TewiFontOutline/05D1.png b/fonts/TewiFontOutline/05D1.png new file mode 100644 index 000000000..c831d520c Binary files /dev/null and b/fonts/TewiFontOutline/05D1.png differ diff --git a/fonts/TewiFontOutline/05D2.png b/fonts/TewiFontOutline/05D2.png new file mode 100644 index 000000000..1dc6b058a Binary files /dev/null and b/fonts/TewiFontOutline/05D2.png differ diff --git a/fonts/TewiFontOutline/05D3.png b/fonts/TewiFontOutline/05D3.png new file mode 100644 index 000000000..2a679d219 Binary files /dev/null and b/fonts/TewiFontOutline/05D3.png differ diff --git a/fonts/TewiFontOutline/05D4.png b/fonts/TewiFontOutline/05D4.png new file mode 100644 index 000000000..0239bc6f3 Binary files /dev/null and b/fonts/TewiFontOutline/05D4.png differ diff --git a/fonts/TewiFontOutline/05D5.png b/fonts/TewiFontOutline/05D5.png new file mode 100644 index 000000000..ba6cd2c37 Binary files /dev/null and b/fonts/TewiFontOutline/05D5.png differ diff --git a/fonts/TewiFontOutline/05D6.png b/fonts/TewiFontOutline/05D6.png new file mode 100644 index 000000000..5c7193c9c Binary files /dev/null and b/fonts/TewiFontOutline/05D6.png differ diff --git a/fonts/TewiFontOutline/05D7.png b/fonts/TewiFontOutline/05D7.png new file mode 100644 index 000000000..d46efcd89 Binary files /dev/null and b/fonts/TewiFontOutline/05D7.png differ diff --git a/fonts/TewiFontOutline/05D8.png b/fonts/TewiFontOutline/05D8.png new file mode 100644 index 000000000..baff0562c Binary files /dev/null and b/fonts/TewiFontOutline/05D8.png differ diff --git a/fonts/TewiFontOutline/05D9.png b/fonts/TewiFontOutline/05D9.png new file mode 100644 index 000000000..933eafb27 Binary files /dev/null and b/fonts/TewiFontOutline/05D9.png differ diff --git a/fonts/TewiFontOutline/05DA.png b/fonts/TewiFontOutline/05DA.png new file mode 100644 index 000000000..d659cb7c1 Binary files /dev/null and b/fonts/TewiFontOutline/05DA.png differ diff --git a/fonts/TewiFontOutline/05DB.png b/fonts/TewiFontOutline/05DB.png new file mode 100644 index 000000000..29f3e3867 Binary files /dev/null and b/fonts/TewiFontOutline/05DB.png differ diff --git a/fonts/TewiFontOutline/05DC.png b/fonts/TewiFontOutline/05DC.png new file mode 100644 index 000000000..fb15d2c87 Binary files /dev/null and b/fonts/TewiFontOutline/05DC.png differ diff --git a/fonts/TewiFontOutline/05DD.png b/fonts/TewiFontOutline/05DD.png new file mode 100644 index 000000000..57df31327 Binary files /dev/null and b/fonts/TewiFontOutline/05DD.png differ diff --git a/fonts/TewiFontOutline/05DE.png b/fonts/TewiFontOutline/05DE.png new file mode 100644 index 000000000..7fd942b65 Binary files /dev/null and b/fonts/TewiFontOutline/05DE.png differ diff --git a/fonts/TewiFontOutline/05DF.png b/fonts/TewiFontOutline/05DF.png new file mode 100644 index 000000000..4c1b78d83 Binary files /dev/null and b/fonts/TewiFontOutline/05DF.png differ diff --git a/fonts/TewiFontOutline/05E0.png b/fonts/TewiFontOutline/05E0.png new file mode 100644 index 000000000..9b6e6212a Binary files /dev/null and b/fonts/TewiFontOutline/05E0.png differ diff --git a/fonts/TewiFontOutline/05E1.png b/fonts/TewiFontOutline/05E1.png new file mode 100644 index 000000000..177ddfaeb Binary files /dev/null and b/fonts/TewiFontOutline/05E1.png differ diff --git a/fonts/TewiFontOutline/05E2.png b/fonts/TewiFontOutline/05E2.png new file mode 100644 index 000000000..cd0ff3cad Binary files /dev/null and b/fonts/TewiFontOutline/05E2.png differ diff --git a/fonts/TewiFontOutline/05E3.png b/fonts/TewiFontOutline/05E3.png new file mode 100644 index 000000000..c231f93aa Binary files /dev/null and b/fonts/TewiFontOutline/05E3.png differ diff --git a/fonts/TewiFontOutline/05E4.png b/fonts/TewiFontOutline/05E4.png new file mode 100644 index 000000000..0237a2100 Binary files /dev/null and b/fonts/TewiFontOutline/05E4.png differ diff --git a/fonts/TewiFontOutline/05E5.png b/fonts/TewiFontOutline/05E5.png new file mode 100644 index 000000000..bec47a5f0 Binary files /dev/null and b/fonts/TewiFontOutline/05E5.png differ diff --git a/fonts/TewiFontOutline/05E6.png b/fonts/TewiFontOutline/05E6.png new file mode 100644 index 000000000..24d19aecd Binary files /dev/null and b/fonts/TewiFontOutline/05E6.png differ diff --git a/fonts/TewiFontOutline/05E7.png b/fonts/TewiFontOutline/05E7.png new file mode 100644 index 000000000..32ebef5b0 Binary files /dev/null and b/fonts/TewiFontOutline/05E7.png differ diff --git a/fonts/TewiFontOutline/05E8.png b/fonts/TewiFontOutline/05E8.png new file mode 100644 index 000000000..0e1f95948 Binary files /dev/null and b/fonts/TewiFontOutline/05E8.png differ diff --git a/fonts/TewiFontOutline/05E9.png b/fonts/TewiFontOutline/05E9.png new file mode 100644 index 000000000..beb376300 Binary files /dev/null and b/fonts/TewiFontOutline/05E9.png differ diff --git a/fonts/TewiFontOutline/05EA.png b/fonts/TewiFontOutline/05EA.png new file mode 100644 index 000000000..f2b0f7e11 Binary files /dev/null and b/fonts/TewiFontOutline/05EA.png differ diff --git a/fonts/TewiFontOutline/05EB.png b/fonts/TewiFontOutline/05EB.png new file mode 100644 index 000000000..935d20d32 Binary files /dev/null and b/fonts/TewiFontOutline/05EB.png differ diff --git a/fonts/TewiFontOutline/05EC.png b/fonts/TewiFontOutline/05EC.png new file mode 100644 index 000000000..6eaed1927 Binary files /dev/null and b/fonts/TewiFontOutline/05EC.png differ diff --git a/fonts/TewiFontOutline/05ED.png b/fonts/TewiFontOutline/05ED.png new file mode 100644 index 000000000..3040bbccd Binary files /dev/null and b/fonts/TewiFontOutline/05ED.png differ diff --git a/fonts/TewiFontOutline/05EE.png b/fonts/TewiFontOutline/05EE.png new file mode 100644 index 000000000..c8986f989 Binary files /dev/null and b/fonts/TewiFontOutline/05EE.png differ diff --git a/fonts/TewiFontOutline/05EF.png b/fonts/TewiFontOutline/05EF.png new file mode 100644 index 000000000..a46245ade Binary files /dev/null and b/fonts/TewiFontOutline/05EF.png differ diff --git a/fonts/TewiFontOutline/0CA0.png b/fonts/TewiFontOutline/0CA0.png new file mode 100644 index 000000000..4bc4a8227 Binary files /dev/null and b/fonts/TewiFontOutline/0CA0.png differ diff --git a/fonts/TewiFontOutline/0E3F.png b/fonts/TewiFontOutline/0E3F.png new file mode 100644 index 000000000..6d6b9bc17 Binary files /dev/null and b/fonts/TewiFontOutline/0E3F.png differ diff --git a/fonts/TewiFontOutline/16A0.png b/fonts/TewiFontOutline/16A0.png new file mode 100644 index 000000000..d84074de4 Binary files /dev/null and b/fonts/TewiFontOutline/16A0.png differ diff --git a/fonts/TewiFontOutline/16A2.png b/fonts/TewiFontOutline/16A2.png new file mode 100644 index 000000000..6e1e1f370 Binary files /dev/null and b/fonts/TewiFontOutline/16A2.png differ diff --git a/fonts/TewiFontOutline/16A3.png b/fonts/TewiFontOutline/16A3.png new file mode 100644 index 000000000..a92d4dde9 Binary files /dev/null and b/fonts/TewiFontOutline/16A3.png differ diff --git a/fonts/TewiFontOutline/16A5.png b/fonts/TewiFontOutline/16A5.png new file mode 100644 index 000000000..b37d179f2 Binary files /dev/null and b/fonts/TewiFontOutline/16A5.png differ diff --git a/fonts/TewiFontOutline/16A6.png b/fonts/TewiFontOutline/16A6.png new file mode 100644 index 000000000..875209e84 Binary files /dev/null and b/fonts/TewiFontOutline/16A6.png differ diff --git a/fonts/TewiFontOutline/16A8.png b/fonts/TewiFontOutline/16A8.png new file mode 100644 index 000000000..2c60ebbe5 Binary files /dev/null and b/fonts/TewiFontOutline/16A8.png differ diff --git a/fonts/TewiFontOutline/16A9.png b/fonts/TewiFontOutline/16A9.png new file mode 100644 index 000000000..6ca552fcb Binary files /dev/null and b/fonts/TewiFontOutline/16A9.png differ diff --git a/fonts/TewiFontOutline/16AA.png b/fonts/TewiFontOutline/16AA.png new file mode 100644 index 000000000..d4e4ed703 Binary files /dev/null and b/fonts/TewiFontOutline/16AA.png differ diff --git a/fonts/TewiFontOutline/16AB.png b/fonts/TewiFontOutline/16AB.png new file mode 100644 index 000000000..b0b89b9d3 Binary files /dev/null and b/fonts/TewiFontOutline/16AB.png differ diff --git a/fonts/TewiFontOutline/16AC.png b/fonts/TewiFontOutline/16AC.png new file mode 100644 index 000000000..33a1eca65 Binary files /dev/null and b/fonts/TewiFontOutline/16AC.png differ diff --git a/fonts/TewiFontOutline/1E00.png b/fonts/TewiFontOutline/1E00.png new file mode 100644 index 000000000..79d215f6d Binary files /dev/null and b/fonts/TewiFontOutline/1E00.png differ diff --git a/fonts/TewiFontOutline/1E01.png b/fonts/TewiFontOutline/1E01.png new file mode 100644 index 000000000..fea995210 Binary files /dev/null and b/fonts/TewiFontOutline/1E01.png differ diff --git a/fonts/TewiFontOutline/1E02.png b/fonts/TewiFontOutline/1E02.png new file mode 100644 index 000000000..15a11e1ba Binary files /dev/null and b/fonts/TewiFontOutline/1E02.png differ diff --git a/fonts/TewiFontOutline/1E03.png b/fonts/TewiFontOutline/1E03.png new file mode 100644 index 000000000..a9efde187 Binary files /dev/null and b/fonts/TewiFontOutline/1E03.png differ diff --git a/fonts/TewiFontOutline/1E04.png b/fonts/TewiFontOutline/1E04.png new file mode 100644 index 000000000..18be544c4 Binary files /dev/null and b/fonts/TewiFontOutline/1E04.png differ diff --git a/fonts/TewiFontOutline/1E05.png b/fonts/TewiFontOutline/1E05.png new file mode 100644 index 000000000..7aca995d0 Binary files /dev/null and b/fonts/TewiFontOutline/1E05.png differ diff --git a/fonts/TewiFontOutline/1E06.png b/fonts/TewiFontOutline/1E06.png new file mode 100644 index 000000000..8ce2e46dd Binary files /dev/null and b/fonts/TewiFontOutline/1E06.png differ diff --git a/fonts/TewiFontOutline/1E07.png b/fonts/TewiFontOutline/1E07.png new file mode 100644 index 000000000..d097a6d1c Binary files /dev/null and b/fonts/TewiFontOutline/1E07.png differ diff --git a/fonts/TewiFontOutline/1E08.png b/fonts/TewiFontOutline/1E08.png new file mode 100644 index 000000000..ea8f35994 Binary files /dev/null and b/fonts/TewiFontOutline/1E08.png differ diff --git a/fonts/TewiFontOutline/1E09.png b/fonts/TewiFontOutline/1E09.png new file mode 100644 index 000000000..a8b92e4af Binary files /dev/null and b/fonts/TewiFontOutline/1E09.png differ diff --git a/fonts/TewiFontOutline/1E0A.png b/fonts/TewiFontOutline/1E0A.png new file mode 100644 index 000000000..3641e8e73 Binary files /dev/null and b/fonts/TewiFontOutline/1E0A.png differ diff --git a/fonts/TewiFontOutline/1E0B.png b/fonts/TewiFontOutline/1E0B.png new file mode 100644 index 000000000..8b85d94ad Binary files /dev/null and b/fonts/TewiFontOutline/1E0B.png differ diff --git a/fonts/TewiFontOutline/1E0C.png b/fonts/TewiFontOutline/1E0C.png new file mode 100644 index 000000000..98070d3e2 Binary files /dev/null and b/fonts/TewiFontOutline/1E0C.png differ diff --git a/fonts/TewiFontOutline/1E0D.png b/fonts/TewiFontOutline/1E0D.png new file mode 100644 index 000000000..4ac579a86 Binary files /dev/null and b/fonts/TewiFontOutline/1E0D.png differ diff --git a/fonts/TewiFontOutline/1E0E.png b/fonts/TewiFontOutline/1E0E.png new file mode 100644 index 000000000..bde84761c Binary files /dev/null and b/fonts/TewiFontOutline/1E0E.png differ diff --git a/fonts/TewiFontOutline/1E0F.png b/fonts/TewiFontOutline/1E0F.png new file mode 100644 index 000000000..55ec13433 Binary files /dev/null and b/fonts/TewiFontOutline/1E0F.png differ diff --git a/fonts/TewiFontOutline/1E10.png b/fonts/TewiFontOutline/1E10.png new file mode 100644 index 000000000..6220c7078 Binary files /dev/null and b/fonts/TewiFontOutline/1E10.png differ diff --git a/fonts/TewiFontOutline/1E11.png b/fonts/TewiFontOutline/1E11.png new file mode 100644 index 000000000..f4a78233c Binary files /dev/null and b/fonts/TewiFontOutline/1E11.png differ diff --git a/fonts/TewiFontOutline/1E12.png b/fonts/TewiFontOutline/1E12.png new file mode 100644 index 000000000..9a42c34b4 Binary files /dev/null and b/fonts/TewiFontOutline/1E12.png differ diff --git a/fonts/TewiFontOutline/1E13.png b/fonts/TewiFontOutline/1E13.png new file mode 100644 index 000000000..1e400dcbf Binary files /dev/null and b/fonts/TewiFontOutline/1E13.png differ diff --git a/fonts/TewiFontOutline/1E14.png b/fonts/TewiFontOutline/1E14.png new file mode 100644 index 000000000..9b40400c3 Binary files /dev/null and b/fonts/TewiFontOutline/1E14.png differ diff --git a/fonts/TewiFontOutline/1E15.png b/fonts/TewiFontOutline/1E15.png new file mode 100644 index 000000000..049ddff66 Binary files /dev/null and b/fonts/TewiFontOutline/1E15.png differ diff --git a/fonts/TewiFontOutline/1E16.png b/fonts/TewiFontOutline/1E16.png new file mode 100644 index 000000000..228b11818 Binary files /dev/null and b/fonts/TewiFontOutline/1E16.png differ diff --git a/fonts/TewiFontOutline/1E17.png b/fonts/TewiFontOutline/1E17.png new file mode 100644 index 000000000..d39dc36b6 Binary files /dev/null and b/fonts/TewiFontOutline/1E17.png differ diff --git a/fonts/TewiFontOutline/1E18.png b/fonts/TewiFontOutline/1E18.png new file mode 100644 index 000000000..0ec1a2e81 Binary files /dev/null and b/fonts/TewiFontOutline/1E18.png differ diff --git a/fonts/TewiFontOutline/1E19.png b/fonts/TewiFontOutline/1E19.png new file mode 100644 index 000000000..3bc281b2b Binary files /dev/null and b/fonts/TewiFontOutline/1E19.png differ diff --git a/fonts/TewiFontOutline/1E1A.png b/fonts/TewiFontOutline/1E1A.png new file mode 100644 index 000000000..012a0a682 Binary files /dev/null and b/fonts/TewiFontOutline/1E1A.png differ diff --git a/fonts/TewiFontOutline/1E1B.png b/fonts/TewiFontOutline/1E1B.png new file mode 100644 index 000000000..2555f504b Binary files /dev/null and b/fonts/TewiFontOutline/1E1B.png differ diff --git a/fonts/TewiFontOutline/1E1C.png b/fonts/TewiFontOutline/1E1C.png new file mode 100644 index 000000000..c388c9342 Binary files /dev/null and b/fonts/TewiFontOutline/1E1C.png differ diff --git a/fonts/TewiFontOutline/1E1D.png b/fonts/TewiFontOutline/1E1D.png new file mode 100644 index 000000000..e9942a313 Binary files /dev/null and b/fonts/TewiFontOutline/1E1D.png differ diff --git a/fonts/TewiFontOutline/1E1E.png b/fonts/TewiFontOutline/1E1E.png new file mode 100644 index 000000000..e8b3d0eff Binary files /dev/null and b/fonts/TewiFontOutline/1E1E.png differ diff --git a/fonts/TewiFontOutline/1E1F.png b/fonts/TewiFontOutline/1E1F.png new file mode 100644 index 000000000..66a8fff21 Binary files /dev/null and b/fonts/TewiFontOutline/1E1F.png differ diff --git a/fonts/TewiFontOutline/1E20.png b/fonts/TewiFontOutline/1E20.png new file mode 100644 index 000000000..770f6728a Binary files /dev/null and b/fonts/TewiFontOutline/1E20.png differ diff --git a/fonts/TewiFontOutline/1E21.png b/fonts/TewiFontOutline/1E21.png new file mode 100644 index 000000000..638a68b5c Binary files /dev/null and b/fonts/TewiFontOutline/1E21.png differ diff --git a/fonts/TewiFontOutline/1E22.png b/fonts/TewiFontOutline/1E22.png new file mode 100644 index 000000000..4e98c4660 Binary files /dev/null and b/fonts/TewiFontOutline/1E22.png differ diff --git a/fonts/TewiFontOutline/1E23.png b/fonts/TewiFontOutline/1E23.png new file mode 100644 index 000000000..820501898 Binary files /dev/null and b/fonts/TewiFontOutline/1E23.png differ diff --git a/fonts/TewiFontOutline/1E24.png b/fonts/TewiFontOutline/1E24.png new file mode 100644 index 000000000..22a8bd5d1 Binary files /dev/null and b/fonts/TewiFontOutline/1E24.png differ diff --git a/fonts/TewiFontOutline/1E25.png b/fonts/TewiFontOutline/1E25.png new file mode 100644 index 000000000..7643bd999 Binary files /dev/null and b/fonts/TewiFontOutline/1E25.png differ diff --git a/fonts/TewiFontOutline/1E26.png b/fonts/TewiFontOutline/1E26.png new file mode 100644 index 000000000..286d9347c Binary files /dev/null and b/fonts/TewiFontOutline/1E26.png differ diff --git a/fonts/TewiFontOutline/1E27.png b/fonts/TewiFontOutline/1E27.png new file mode 100644 index 000000000..1fba82ab0 Binary files /dev/null and b/fonts/TewiFontOutline/1E27.png differ diff --git a/fonts/TewiFontOutline/1E28.png b/fonts/TewiFontOutline/1E28.png new file mode 100644 index 000000000..610de5d6f Binary files /dev/null and b/fonts/TewiFontOutline/1E28.png differ diff --git a/fonts/TewiFontOutline/1E29.png b/fonts/TewiFontOutline/1E29.png new file mode 100644 index 000000000..ae947789b Binary files /dev/null and b/fonts/TewiFontOutline/1E29.png differ diff --git a/fonts/TewiFontOutline/1E2A.png b/fonts/TewiFontOutline/1E2A.png new file mode 100644 index 000000000..832b6a361 Binary files /dev/null and b/fonts/TewiFontOutline/1E2A.png differ diff --git a/fonts/TewiFontOutline/1E2B.png b/fonts/TewiFontOutline/1E2B.png new file mode 100644 index 000000000..afac592f3 Binary files /dev/null and b/fonts/TewiFontOutline/1E2B.png differ diff --git a/fonts/TewiFontOutline/1E2C.png b/fonts/TewiFontOutline/1E2C.png new file mode 100644 index 000000000..e64a93d98 Binary files /dev/null and b/fonts/TewiFontOutline/1E2C.png differ diff --git a/fonts/TewiFontOutline/1E2D.png b/fonts/TewiFontOutline/1E2D.png new file mode 100644 index 000000000..a75dc42bb Binary files /dev/null and b/fonts/TewiFontOutline/1E2D.png differ diff --git a/fonts/TewiFontOutline/1E2E.png b/fonts/TewiFontOutline/1E2E.png new file mode 100644 index 000000000..1965c47f2 Binary files /dev/null and b/fonts/TewiFontOutline/1E2E.png differ diff --git a/fonts/TewiFontOutline/1E2F.png b/fonts/TewiFontOutline/1E2F.png new file mode 100644 index 000000000..5310889c0 Binary files /dev/null and b/fonts/TewiFontOutline/1E2F.png differ diff --git a/fonts/TewiFontOutline/1E30.png b/fonts/TewiFontOutline/1E30.png new file mode 100644 index 000000000..c688e0c9b Binary files /dev/null and b/fonts/TewiFontOutline/1E30.png differ diff --git a/fonts/TewiFontOutline/1E31.png b/fonts/TewiFontOutline/1E31.png new file mode 100644 index 000000000..7a0249080 Binary files /dev/null and b/fonts/TewiFontOutline/1E31.png differ diff --git a/fonts/TewiFontOutline/1E32.png b/fonts/TewiFontOutline/1E32.png new file mode 100644 index 000000000..9b9dfe308 Binary files /dev/null and b/fonts/TewiFontOutline/1E32.png differ diff --git a/fonts/TewiFontOutline/1E33.png b/fonts/TewiFontOutline/1E33.png new file mode 100644 index 000000000..ffdf5783e Binary files /dev/null and b/fonts/TewiFontOutline/1E33.png differ diff --git a/fonts/TewiFontOutline/1E34.png b/fonts/TewiFontOutline/1E34.png new file mode 100644 index 000000000..e94ffa517 Binary files /dev/null and b/fonts/TewiFontOutline/1E34.png differ diff --git a/fonts/TewiFontOutline/1E35.png b/fonts/TewiFontOutline/1E35.png new file mode 100644 index 000000000..a53bb523a Binary files /dev/null and b/fonts/TewiFontOutline/1E35.png differ diff --git a/fonts/TewiFontOutline/1E36.png b/fonts/TewiFontOutline/1E36.png new file mode 100644 index 000000000..a5c3aca39 Binary files /dev/null and b/fonts/TewiFontOutline/1E36.png differ diff --git a/fonts/TewiFontOutline/1E37.png b/fonts/TewiFontOutline/1E37.png new file mode 100644 index 000000000..eac5e22e4 Binary files /dev/null and b/fonts/TewiFontOutline/1E37.png differ diff --git a/fonts/TewiFontOutline/1E38.png b/fonts/TewiFontOutline/1E38.png new file mode 100644 index 000000000..ce02c4f4f Binary files /dev/null and b/fonts/TewiFontOutline/1E38.png differ diff --git a/fonts/TewiFontOutline/1E39.png b/fonts/TewiFontOutline/1E39.png new file mode 100644 index 000000000..fd06d1b1b Binary files /dev/null and b/fonts/TewiFontOutline/1E39.png differ diff --git a/fonts/TewiFontOutline/1E3A.png b/fonts/TewiFontOutline/1E3A.png new file mode 100644 index 000000000..e16192947 Binary files /dev/null and b/fonts/TewiFontOutline/1E3A.png differ diff --git a/fonts/TewiFontOutline/1E3B.png b/fonts/TewiFontOutline/1E3B.png new file mode 100644 index 000000000..ff64ab38c Binary files /dev/null and b/fonts/TewiFontOutline/1E3B.png differ diff --git a/fonts/TewiFontOutline/1E3C.png b/fonts/TewiFontOutline/1E3C.png new file mode 100644 index 000000000..01d1e6bf6 Binary files /dev/null and b/fonts/TewiFontOutline/1E3C.png differ diff --git a/fonts/TewiFontOutline/1E3D.png b/fonts/TewiFontOutline/1E3D.png new file mode 100644 index 000000000..19216db50 Binary files /dev/null and b/fonts/TewiFontOutline/1E3D.png differ diff --git a/fonts/TewiFontOutline/1E3E.png b/fonts/TewiFontOutline/1E3E.png new file mode 100644 index 000000000..e50da315b Binary files /dev/null and b/fonts/TewiFontOutline/1E3E.png differ diff --git a/fonts/TewiFontOutline/1E3F.png b/fonts/TewiFontOutline/1E3F.png new file mode 100644 index 000000000..e23814d7e Binary files /dev/null and b/fonts/TewiFontOutline/1E3F.png differ diff --git a/fonts/TewiFontOutline/1E40.png b/fonts/TewiFontOutline/1E40.png new file mode 100644 index 000000000..bea243d39 Binary files /dev/null and b/fonts/TewiFontOutline/1E40.png differ diff --git a/fonts/TewiFontOutline/1E41.png b/fonts/TewiFontOutline/1E41.png new file mode 100644 index 000000000..0df4033ab Binary files /dev/null and b/fonts/TewiFontOutline/1E41.png differ diff --git a/fonts/TewiFontOutline/1E42.png b/fonts/TewiFontOutline/1E42.png new file mode 100644 index 000000000..402c2de18 Binary files /dev/null and b/fonts/TewiFontOutline/1E42.png differ diff --git a/fonts/TewiFontOutline/1E43.png b/fonts/TewiFontOutline/1E43.png new file mode 100644 index 000000000..529fdb9be Binary files /dev/null and b/fonts/TewiFontOutline/1E43.png differ diff --git a/fonts/TewiFontOutline/1E44.png b/fonts/TewiFontOutline/1E44.png new file mode 100644 index 000000000..64d3fcc25 Binary files /dev/null and b/fonts/TewiFontOutline/1E44.png differ diff --git a/fonts/TewiFontOutline/1E45.png b/fonts/TewiFontOutline/1E45.png new file mode 100644 index 000000000..2999cd33c Binary files /dev/null and b/fonts/TewiFontOutline/1E45.png differ diff --git a/fonts/TewiFontOutline/1E46.png b/fonts/TewiFontOutline/1E46.png new file mode 100644 index 000000000..a0b2ecca3 Binary files /dev/null and b/fonts/TewiFontOutline/1E46.png differ diff --git a/fonts/TewiFontOutline/1E47.png b/fonts/TewiFontOutline/1E47.png new file mode 100644 index 000000000..ef5b9b56d Binary files /dev/null and b/fonts/TewiFontOutline/1E47.png differ diff --git a/fonts/TewiFontOutline/1E48.png b/fonts/TewiFontOutline/1E48.png new file mode 100644 index 000000000..3a8db321e Binary files /dev/null and b/fonts/TewiFontOutline/1E48.png differ diff --git a/fonts/TewiFontOutline/1E49.png b/fonts/TewiFontOutline/1E49.png new file mode 100644 index 000000000..f5edef402 Binary files /dev/null and b/fonts/TewiFontOutline/1E49.png differ diff --git a/fonts/TewiFontOutline/1E4A.png b/fonts/TewiFontOutline/1E4A.png new file mode 100644 index 000000000..b170519fe Binary files /dev/null and b/fonts/TewiFontOutline/1E4A.png differ diff --git a/fonts/TewiFontOutline/1E4B.png b/fonts/TewiFontOutline/1E4B.png new file mode 100644 index 000000000..0aac1f599 Binary files /dev/null and b/fonts/TewiFontOutline/1E4B.png differ diff --git a/fonts/TewiFontOutline/1E4C.png b/fonts/TewiFontOutline/1E4C.png new file mode 100644 index 000000000..d26a5fcb2 Binary files /dev/null and b/fonts/TewiFontOutline/1E4C.png differ diff --git a/fonts/TewiFontOutline/1E4D.png b/fonts/TewiFontOutline/1E4D.png new file mode 100644 index 000000000..f7b2d50da Binary files /dev/null and b/fonts/TewiFontOutline/1E4D.png differ diff --git a/fonts/TewiFontOutline/1E4E.png b/fonts/TewiFontOutline/1E4E.png new file mode 100644 index 000000000..52a6f3b7d Binary files /dev/null and b/fonts/TewiFontOutline/1E4E.png differ diff --git a/fonts/TewiFontOutline/1E4F.png b/fonts/TewiFontOutline/1E4F.png new file mode 100644 index 000000000..69fc1bd7d Binary files /dev/null and b/fonts/TewiFontOutline/1E4F.png differ diff --git a/fonts/TewiFontOutline/1E50.png b/fonts/TewiFontOutline/1E50.png new file mode 100644 index 000000000..285cfaccb Binary files /dev/null and b/fonts/TewiFontOutline/1E50.png differ diff --git a/fonts/TewiFontOutline/1E51.png b/fonts/TewiFontOutline/1E51.png new file mode 100644 index 000000000..ddd6f15ae Binary files /dev/null and b/fonts/TewiFontOutline/1E51.png differ diff --git a/fonts/TewiFontOutline/1E52.png b/fonts/TewiFontOutline/1E52.png new file mode 100644 index 000000000..7f2d513c3 Binary files /dev/null and b/fonts/TewiFontOutline/1E52.png differ diff --git a/fonts/TewiFontOutline/1E53.png b/fonts/TewiFontOutline/1E53.png new file mode 100644 index 000000000..014e98ba5 Binary files /dev/null and b/fonts/TewiFontOutline/1E53.png differ diff --git a/fonts/TewiFontOutline/1E54.png b/fonts/TewiFontOutline/1E54.png new file mode 100644 index 000000000..b41ccd138 Binary files /dev/null and b/fonts/TewiFontOutline/1E54.png differ diff --git a/fonts/TewiFontOutline/1E55.png b/fonts/TewiFontOutline/1E55.png new file mode 100644 index 000000000..969931e9c Binary files /dev/null and b/fonts/TewiFontOutline/1E55.png differ diff --git a/fonts/TewiFontOutline/1E56.png b/fonts/TewiFontOutline/1E56.png new file mode 100644 index 000000000..2c9ed901f Binary files /dev/null and b/fonts/TewiFontOutline/1E56.png differ diff --git a/fonts/TewiFontOutline/1E57.png b/fonts/TewiFontOutline/1E57.png new file mode 100644 index 000000000..ccb47c68f Binary files /dev/null and b/fonts/TewiFontOutline/1E57.png differ diff --git a/fonts/TewiFontOutline/1E58.png b/fonts/TewiFontOutline/1E58.png new file mode 100644 index 000000000..2a0d8bbe8 Binary files /dev/null and b/fonts/TewiFontOutline/1E58.png differ diff --git a/fonts/TewiFontOutline/1E59.png b/fonts/TewiFontOutline/1E59.png new file mode 100644 index 000000000..a3dfa1d55 Binary files /dev/null and b/fonts/TewiFontOutline/1E59.png differ diff --git a/fonts/TewiFontOutline/1E5A.png b/fonts/TewiFontOutline/1E5A.png new file mode 100644 index 000000000..3a66a8a4b Binary files /dev/null and b/fonts/TewiFontOutline/1E5A.png differ diff --git a/fonts/TewiFontOutline/1E5B.png b/fonts/TewiFontOutline/1E5B.png new file mode 100644 index 000000000..e52c48a18 Binary files /dev/null and b/fonts/TewiFontOutline/1E5B.png differ diff --git a/fonts/TewiFontOutline/1E5C.png b/fonts/TewiFontOutline/1E5C.png new file mode 100644 index 000000000..e56ac7af4 Binary files /dev/null and b/fonts/TewiFontOutline/1E5C.png differ diff --git a/fonts/TewiFontOutline/1E5D.png b/fonts/TewiFontOutline/1E5D.png new file mode 100644 index 000000000..4b15fd48e Binary files /dev/null and b/fonts/TewiFontOutline/1E5D.png differ diff --git a/fonts/TewiFontOutline/1E5E.png b/fonts/TewiFontOutline/1E5E.png new file mode 100644 index 000000000..1662528f6 Binary files /dev/null and b/fonts/TewiFontOutline/1E5E.png differ diff --git a/fonts/TewiFontOutline/1E5F.png b/fonts/TewiFontOutline/1E5F.png new file mode 100644 index 000000000..3b6a61e6a Binary files /dev/null and b/fonts/TewiFontOutline/1E5F.png differ diff --git a/fonts/TewiFontOutline/1E60.png b/fonts/TewiFontOutline/1E60.png new file mode 100644 index 000000000..7b352d945 Binary files /dev/null and b/fonts/TewiFontOutline/1E60.png differ diff --git a/fonts/TewiFontOutline/1E61.png b/fonts/TewiFontOutline/1E61.png new file mode 100644 index 000000000..961411b5e Binary files /dev/null and b/fonts/TewiFontOutline/1E61.png differ diff --git a/fonts/TewiFontOutline/1E62.png b/fonts/TewiFontOutline/1E62.png new file mode 100644 index 000000000..ed4dca2a0 Binary files /dev/null and b/fonts/TewiFontOutline/1E62.png differ diff --git a/fonts/TewiFontOutline/1E63.png b/fonts/TewiFontOutline/1E63.png new file mode 100644 index 000000000..f3be2c0a6 Binary files /dev/null and b/fonts/TewiFontOutline/1E63.png differ diff --git a/fonts/TewiFontOutline/1E64.png b/fonts/TewiFontOutline/1E64.png new file mode 100644 index 000000000..980865a26 Binary files /dev/null and b/fonts/TewiFontOutline/1E64.png differ diff --git a/fonts/TewiFontOutline/1E65.png b/fonts/TewiFontOutline/1E65.png new file mode 100644 index 000000000..20744797a Binary files /dev/null and b/fonts/TewiFontOutline/1E65.png differ diff --git a/fonts/TewiFontOutline/1E66.png b/fonts/TewiFontOutline/1E66.png new file mode 100644 index 000000000..fd37e27fd Binary files /dev/null and b/fonts/TewiFontOutline/1E66.png differ diff --git a/fonts/TewiFontOutline/1E67.png b/fonts/TewiFontOutline/1E67.png new file mode 100644 index 000000000..6d1ce36d2 Binary files /dev/null and b/fonts/TewiFontOutline/1E67.png differ diff --git a/fonts/TewiFontOutline/1E68.png b/fonts/TewiFontOutline/1E68.png new file mode 100644 index 000000000..b3409cc7f Binary files /dev/null and b/fonts/TewiFontOutline/1E68.png differ diff --git a/fonts/TewiFontOutline/1E69.png b/fonts/TewiFontOutline/1E69.png new file mode 100644 index 000000000..b7a5eeb00 Binary files /dev/null and b/fonts/TewiFontOutline/1E69.png differ diff --git a/fonts/TewiFontOutline/1E6A.png b/fonts/TewiFontOutline/1E6A.png new file mode 100644 index 000000000..e91d777a1 Binary files /dev/null and b/fonts/TewiFontOutline/1E6A.png differ diff --git a/fonts/TewiFontOutline/1E6B.png b/fonts/TewiFontOutline/1E6B.png new file mode 100644 index 000000000..122d9fc0c Binary files /dev/null and b/fonts/TewiFontOutline/1E6B.png differ diff --git a/fonts/TewiFontOutline/1E6C.png b/fonts/TewiFontOutline/1E6C.png new file mode 100644 index 000000000..8dc114dc4 Binary files /dev/null and b/fonts/TewiFontOutline/1E6C.png differ diff --git a/fonts/TewiFontOutline/1E6D.png b/fonts/TewiFontOutline/1E6D.png new file mode 100644 index 000000000..80379215d Binary files /dev/null and b/fonts/TewiFontOutline/1E6D.png differ diff --git a/fonts/TewiFontOutline/1E6E.png b/fonts/TewiFontOutline/1E6E.png new file mode 100644 index 000000000..a6bbbef14 Binary files /dev/null and b/fonts/TewiFontOutline/1E6E.png differ diff --git a/fonts/TewiFontOutline/1E6F.png b/fonts/TewiFontOutline/1E6F.png new file mode 100644 index 000000000..6fb5b5c18 Binary files /dev/null and b/fonts/TewiFontOutline/1E6F.png differ diff --git a/fonts/TewiFontOutline/1E70.png b/fonts/TewiFontOutline/1E70.png new file mode 100644 index 000000000..d96f23770 Binary files /dev/null and b/fonts/TewiFontOutline/1E70.png differ diff --git a/fonts/TewiFontOutline/1E71.png b/fonts/TewiFontOutline/1E71.png new file mode 100644 index 000000000..05a78d0e3 Binary files /dev/null and b/fonts/TewiFontOutline/1E71.png differ diff --git a/fonts/TewiFontOutline/1E72.png b/fonts/TewiFontOutline/1E72.png new file mode 100644 index 000000000..15d30a465 Binary files /dev/null and b/fonts/TewiFontOutline/1E72.png differ diff --git a/fonts/TewiFontOutline/1E73.png b/fonts/TewiFontOutline/1E73.png new file mode 100644 index 000000000..643434367 Binary files /dev/null and b/fonts/TewiFontOutline/1E73.png differ diff --git a/fonts/TewiFontOutline/1E74.png b/fonts/TewiFontOutline/1E74.png new file mode 100644 index 000000000..d6c6a4580 Binary files /dev/null and b/fonts/TewiFontOutline/1E74.png differ diff --git a/fonts/TewiFontOutline/1E75.png b/fonts/TewiFontOutline/1E75.png new file mode 100644 index 000000000..2fce0bd97 Binary files /dev/null and b/fonts/TewiFontOutline/1E75.png differ diff --git a/fonts/TewiFontOutline/1E76.png b/fonts/TewiFontOutline/1E76.png new file mode 100644 index 000000000..3f93559a8 Binary files /dev/null and b/fonts/TewiFontOutline/1E76.png differ diff --git a/fonts/TewiFontOutline/1E77.png b/fonts/TewiFontOutline/1E77.png new file mode 100644 index 000000000..968c5a099 Binary files /dev/null and b/fonts/TewiFontOutline/1E77.png differ diff --git a/fonts/TewiFontOutline/1E78.png b/fonts/TewiFontOutline/1E78.png new file mode 100644 index 000000000..c36fd61d6 Binary files /dev/null and b/fonts/TewiFontOutline/1E78.png differ diff --git a/fonts/TewiFontOutline/1E79.png b/fonts/TewiFontOutline/1E79.png new file mode 100644 index 000000000..4ce70c6b4 Binary files /dev/null and b/fonts/TewiFontOutline/1E79.png differ diff --git a/fonts/TewiFontOutline/1E7A.png b/fonts/TewiFontOutline/1E7A.png new file mode 100644 index 000000000..da6e65418 Binary files /dev/null and b/fonts/TewiFontOutline/1E7A.png differ diff --git a/fonts/TewiFontOutline/1E7B.png b/fonts/TewiFontOutline/1E7B.png new file mode 100644 index 000000000..fac27a3c4 Binary files /dev/null and b/fonts/TewiFontOutline/1E7B.png differ diff --git a/fonts/TewiFontOutline/1E7C.png b/fonts/TewiFontOutline/1E7C.png new file mode 100644 index 000000000..e7b64e5aa Binary files /dev/null and b/fonts/TewiFontOutline/1E7C.png differ diff --git a/fonts/TewiFontOutline/1E7D.png b/fonts/TewiFontOutline/1E7D.png new file mode 100644 index 000000000..b19299a06 Binary files /dev/null and b/fonts/TewiFontOutline/1E7D.png differ diff --git a/fonts/TewiFontOutline/1E7E.png b/fonts/TewiFontOutline/1E7E.png new file mode 100644 index 000000000..14be66558 Binary files /dev/null and b/fonts/TewiFontOutline/1E7E.png differ diff --git a/fonts/TewiFontOutline/1E7F.png b/fonts/TewiFontOutline/1E7F.png new file mode 100644 index 000000000..049ca5216 Binary files /dev/null and b/fonts/TewiFontOutline/1E7F.png differ diff --git a/fonts/TewiFontOutline/1E80.png b/fonts/TewiFontOutline/1E80.png new file mode 100644 index 000000000..207cac4f9 Binary files /dev/null and b/fonts/TewiFontOutline/1E80.png differ diff --git a/fonts/TewiFontOutline/1E81.png b/fonts/TewiFontOutline/1E81.png new file mode 100644 index 000000000..fea071c2d Binary files /dev/null and b/fonts/TewiFontOutline/1E81.png differ diff --git a/fonts/TewiFontOutline/1E82.png b/fonts/TewiFontOutline/1E82.png new file mode 100644 index 000000000..dc1cfe170 Binary files /dev/null and b/fonts/TewiFontOutline/1E82.png differ diff --git a/fonts/TewiFontOutline/1E83.png b/fonts/TewiFontOutline/1E83.png new file mode 100644 index 000000000..1048c7b5f Binary files /dev/null and b/fonts/TewiFontOutline/1E83.png differ diff --git a/fonts/TewiFontOutline/1E84.png b/fonts/TewiFontOutline/1E84.png new file mode 100644 index 000000000..8c71ec3f0 Binary files /dev/null and b/fonts/TewiFontOutline/1E84.png differ diff --git a/fonts/TewiFontOutline/1E85.png b/fonts/TewiFontOutline/1E85.png new file mode 100644 index 000000000..e57979872 Binary files /dev/null and b/fonts/TewiFontOutline/1E85.png differ diff --git a/fonts/TewiFontOutline/1E86.png b/fonts/TewiFontOutline/1E86.png new file mode 100644 index 000000000..29607c9ec Binary files /dev/null and b/fonts/TewiFontOutline/1E86.png differ diff --git a/fonts/TewiFontOutline/1E87.png b/fonts/TewiFontOutline/1E87.png new file mode 100644 index 000000000..99c3af626 Binary files /dev/null and b/fonts/TewiFontOutline/1E87.png differ diff --git a/fonts/TewiFontOutline/1E88.png b/fonts/TewiFontOutline/1E88.png new file mode 100644 index 000000000..c3985717f Binary files /dev/null and b/fonts/TewiFontOutline/1E88.png differ diff --git a/fonts/TewiFontOutline/1E89.png b/fonts/TewiFontOutline/1E89.png new file mode 100644 index 000000000..4d6878cd4 Binary files /dev/null and b/fonts/TewiFontOutline/1E89.png differ diff --git a/fonts/TewiFontOutline/1E8A.png b/fonts/TewiFontOutline/1E8A.png new file mode 100644 index 000000000..ffa6d85ac Binary files /dev/null and b/fonts/TewiFontOutline/1E8A.png differ diff --git a/fonts/TewiFontOutline/1E8B.png b/fonts/TewiFontOutline/1E8B.png new file mode 100644 index 000000000..06427e0c3 Binary files /dev/null and b/fonts/TewiFontOutline/1E8B.png differ diff --git a/fonts/TewiFontOutline/1E8C.png b/fonts/TewiFontOutline/1E8C.png new file mode 100644 index 000000000..10a63e136 Binary files /dev/null and b/fonts/TewiFontOutline/1E8C.png differ diff --git a/fonts/TewiFontOutline/1E8D.png b/fonts/TewiFontOutline/1E8D.png new file mode 100644 index 000000000..509195505 Binary files /dev/null and b/fonts/TewiFontOutline/1E8D.png differ diff --git a/fonts/TewiFontOutline/1E8E.png b/fonts/TewiFontOutline/1E8E.png new file mode 100644 index 000000000..ae9fbf62b Binary files /dev/null and b/fonts/TewiFontOutline/1E8E.png differ diff --git a/fonts/TewiFontOutline/1E8F.png b/fonts/TewiFontOutline/1E8F.png new file mode 100644 index 000000000..0af9c212c Binary files /dev/null and b/fonts/TewiFontOutline/1E8F.png differ diff --git a/fonts/TewiFontOutline/1E90.png b/fonts/TewiFontOutline/1E90.png new file mode 100644 index 000000000..07ede7527 Binary files /dev/null and b/fonts/TewiFontOutline/1E90.png differ diff --git a/fonts/TewiFontOutline/1E91.png b/fonts/TewiFontOutline/1E91.png new file mode 100644 index 000000000..1b2df9362 Binary files /dev/null and b/fonts/TewiFontOutline/1E91.png differ diff --git a/fonts/TewiFontOutline/1E92.png b/fonts/TewiFontOutline/1E92.png new file mode 100644 index 000000000..127a0be6d Binary files /dev/null and b/fonts/TewiFontOutline/1E92.png differ diff --git a/fonts/TewiFontOutline/1E93.png b/fonts/TewiFontOutline/1E93.png new file mode 100644 index 000000000..c20d000dc Binary files /dev/null and b/fonts/TewiFontOutline/1E93.png differ diff --git a/fonts/TewiFontOutline/1E94.png b/fonts/TewiFontOutline/1E94.png new file mode 100644 index 000000000..4012a7621 Binary files /dev/null and b/fonts/TewiFontOutline/1E94.png differ diff --git a/fonts/TewiFontOutline/1E95.png b/fonts/TewiFontOutline/1E95.png new file mode 100644 index 000000000..720cbabfc Binary files /dev/null and b/fonts/TewiFontOutline/1E95.png differ diff --git a/fonts/TewiFontOutline/1E96.png b/fonts/TewiFontOutline/1E96.png new file mode 100644 index 000000000..47068f519 Binary files /dev/null and b/fonts/TewiFontOutline/1E96.png differ diff --git a/fonts/TewiFontOutline/1E97.png b/fonts/TewiFontOutline/1E97.png new file mode 100644 index 000000000..014cd4be7 Binary files /dev/null and b/fonts/TewiFontOutline/1E97.png differ diff --git a/fonts/TewiFontOutline/1E98.png b/fonts/TewiFontOutline/1E98.png new file mode 100644 index 000000000..32f880ecf Binary files /dev/null and b/fonts/TewiFontOutline/1E98.png differ diff --git a/fonts/TewiFontOutline/1E99.png b/fonts/TewiFontOutline/1E99.png new file mode 100644 index 000000000..7b4a668d5 Binary files /dev/null and b/fonts/TewiFontOutline/1E99.png differ diff --git a/fonts/TewiFontOutline/1E9A.png b/fonts/TewiFontOutline/1E9A.png new file mode 100644 index 000000000..6d1c1827f Binary files /dev/null and b/fonts/TewiFontOutline/1E9A.png differ diff --git a/fonts/TewiFontOutline/1E9B.png b/fonts/TewiFontOutline/1E9B.png new file mode 100644 index 000000000..e8e585bf1 Binary files /dev/null and b/fonts/TewiFontOutline/1E9B.png differ diff --git a/fonts/TewiFontOutline/1E9C.png b/fonts/TewiFontOutline/1E9C.png new file mode 100644 index 000000000..29536e113 Binary files /dev/null and b/fonts/TewiFontOutline/1E9C.png differ diff --git a/fonts/TewiFontOutline/1E9D.png b/fonts/TewiFontOutline/1E9D.png new file mode 100644 index 000000000..deb3396cf Binary files /dev/null and b/fonts/TewiFontOutline/1E9D.png differ diff --git a/fonts/TewiFontOutline/1E9E.png b/fonts/TewiFontOutline/1E9E.png new file mode 100644 index 000000000..d61a82a55 Binary files /dev/null and b/fonts/TewiFontOutline/1E9E.png differ diff --git a/fonts/TewiFontOutline/1E9F.png b/fonts/TewiFontOutline/1E9F.png new file mode 100644 index 000000000..2d6b02673 Binary files /dev/null and b/fonts/TewiFontOutline/1E9F.png differ diff --git a/fonts/TewiFontOutline/1EA0.png b/fonts/TewiFontOutline/1EA0.png new file mode 100644 index 000000000..3eb21b249 Binary files /dev/null and b/fonts/TewiFontOutline/1EA0.png differ diff --git a/fonts/TewiFontOutline/1EA1.png b/fonts/TewiFontOutline/1EA1.png new file mode 100644 index 000000000..b28d0a2e4 Binary files /dev/null and b/fonts/TewiFontOutline/1EA1.png differ diff --git a/fonts/TewiFontOutline/1EA2.png b/fonts/TewiFontOutline/1EA2.png new file mode 100644 index 000000000..c2798389b Binary files /dev/null and b/fonts/TewiFontOutline/1EA2.png differ diff --git a/fonts/TewiFontOutline/1EA3.png b/fonts/TewiFontOutline/1EA3.png new file mode 100644 index 000000000..ad0bda124 Binary files /dev/null and b/fonts/TewiFontOutline/1EA3.png differ diff --git a/fonts/TewiFontOutline/1EA4.png b/fonts/TewiFontOutline/1EA4.png new file mode 100644 index 000000000..c4b4d2913 Binary files /dev/null and b/fonts/TewiFontOutline/1EA4.png differ diff --git a/fonts/TewiFontOutline/1EA5.png b/fonts/TewiFontOutline/1EA5.png new file mode 100644 index 000000000..523b09e22 Binary files /dev/null and b/fonts/TewiFontOutline/1EA5.png differ diff --git a/fonts/TewiFontOutline/1EA6.png b/fonts/TewiFontOutline/1EA6.png new file mode 100644 index 000000000..d40f4de97 Binary files /dev/null and b/fonts/TewiFontOutline/1EA6.png differ diff --git a/fonts/TewiFontOutline/1EA7.png b/fonts/TewiFontOutline/1EA7.png new file mode 100644 index 000000000..a859c727c Binary files /dev/null and b/fonts/TewiFontOutline/1EA7.png differ diff --git a/fonts/TewiFontOutline/1EA8.png b/fonts/TewiFontOutline/1EA8.png new file mode 100644 index 000000000..ca4c582c8 Binary files /dev/null and b/fonts/TewiFontOutline/1EA8.png differ diff --git a/fonts/TewiFontOutline/1EA9.png b/fonts/TewiFontOutline/1EA9.png new file mode 100644 index 000000000..12f96c420 Binary files /dev/null and b/fonts/TewiFontOutline/1EA9.png differ diff --git a/fonts/TewiFontOutline/1EAB.png b/fonts/TewiFontOutline/1EAB.png new file mode 100644 index 000000000..abf3a3b19 Binary files /dev/null and b/fonts/TewiFontOutline/1EAB.png differ diff --git a/fonts/TewiFontOutline/1EAC.png b/fonts/TewiFontOutline/1EAC.png new file mode 100644 index 000000000..4bec30e4f Binary files /dev/null and b/fonts/TewiFontOutline/1EAC.png differ diff --git a/fonts/TewiFontOutline/1EAD.png b/fonts/TewiFontOutline/1EAD.png new file mode 100644 index 000000000..b2a9a0713 Binary files /dev/null and b/fonts/TewiFontOutline/1EAD.png differ diff --git a/fonts/TewiFontOutline/1EAE.png b/fonts/TewiFontOutline/1EAE.png new file mode 100644 index 000000000..4020b6e58 Binary files /dev/null and b/fonts/TewiFontOutline/1EAE.png differ diff --git a/fonts/TewiFontOutline/1EAF.png b/fonts/TewiFontOutline/1EAF.png new file mode 100644 index 000000000..e52d3de99 Binary files /dev/null and b/fonts/TewiFontOutline/1EAF.png differ diff --git a/fonts/TewiFontOutline/1EB0.png b/fonts/TewiFontOutline/1EB0.png new file mode 100644 index 000000000..28e112acf Binary files /dev/null and b/fonts/TewiFontOutline/1EB0.png differ diff --git a/fonts/TewiFontOutline/1EB1.png b/fonts/TewiFontOutline/1EB1.png new file mode 100644 index 000000000..ab876a2e0 Binary files /dev/null and b/fonts/TewiFontOutline/1EB1.png differ diff --git a/fonts/TewiFontOutline/1EB2.png b/fonts/TewiFontOutline/1EB2.png new file mode 100644 index 000000000..539c1b5db Binary files /dev/null and b/fonts/TewiFontOutline/1EB2.png differ diff --git a/fonts/TewiFontOutline/1EB3.png b/fonts/TewiFontOutline/1EB3.png new file mode 100644 index 000000000..6d0e6069c Binary files /dev/null and b/fonts/TewiFontOutline/1EB3.png differ diff --git a/fonts/TewiFontOutline/1EB5.png b/fonts/TewiFontOutline/1EB5.png new file mode 100644 index 000000000..b59b94f60 Binary files /dev/null and b/fonts/TewiFontOutline/1EB5.png differ diff --git a/fonts/TewiFontOutline/1EB6.png b/fonts/TewiFontOutline/1EB6.png new file mode 100644 index 000000000..ec45f36c0 Binary files /dev/null and b/fonts/TewiFontOutline/1EB6.png differ diff --git a/fonts/TewiFontOutline/1EB7.png b/fonts/TewiFontOutline/1EB7.png new file mode 100644 index 000000000..130141822 Binary files /dev/null and b/fonts/TewiFontOutline/1EB7.png differ diff --git a/fonts/TewiFontOutline/1EB8.png b/fonts/TewiFontOutline/1EB8.png new file mode 100644 index 000000000..90655f022 Binary files /dev/null and b/fonts/TewiFontOutline/1EB8.png differ diff --git a/fonts/TewiFontOutline/1EB9.png b/fonts/TewiFontOutline/1EB9.png new file mode 100644 index 000000000..c3a1b5d00 Binary files /dev/null and b/fonts/TewiFontOutline/1EB9.png differ diff --git a/fonts/TewiFontOutline/1EBA.png b/fonts/TewiFontOutline/1EBA.png new file mode 100644 index 000000000..f95b1cfa2 Binary files /dev/null and b/fonts/TewiFontOutline/1EBA.png differ diff --git a/fonts/TewiFontOutline/1EBB.png b/fonts/TewiFontOutline/1EBB.png new file mode 100644 index 000000000..964f8625e Binary files /dev/null and b/fonts/TewiFontOutline/1EBB.png differ diff --git a/fonts/TewiFontOutline/1EBC.png b/fonts/TewiFontOutline/1EBC.png new file mode 100644 index 000000000..62ebdf1ff Binary files /dev/null and b/fonts/TewiFontOutline/1EBC.png differ diff --git a/fonts/TewiFontOutline/1EBD.png b/fonts/TewiFontOutline/1EBD.png new file mode 100644 index 000000000..b58806b6d Binary files /dev/null and b/fonts/TewiFontOutline/1EBD.png differ diff --git a/fonts/TewiFontOutline/1EBE.png b/fonts/TewiFontOutline/1EBE.png new file mode 100644 index 000000000..3791b556f Binary files /dev/null and b/fonts/TewiFontOutline/1EBE.png differ diff --git a/fonts/TewiFontOutline/1EBF.png b/fonts/TewiFontOutline/1EBF.png new file mode 100644 index 000000000..c4c16b0f5 Binary files /dev/null and b/fonts/TewiFontOutline/1EBF.png differ diff --git a/fonts/TewiFontOutline/1EC0.png b/fonts/TewiFontOutline/1EC0.png new file mode 100644 index 000000000..ca14db105 Binary files /dev/null and b/fonts/TewiFontOutline/1EC0.png differ diff --git a/fonts/TewiFontOutline/1EC1.png b/fonts/TewiFontOutline/1EC1.png new file mode 100644 index 000000000..70a374f8a Binary files /dev/null and b/fonts/TewiFontOutline/1EC1.png differ diff --git a/fonts/TewiFontOutline/1EC2.png b/fonts/TewiFontOutline/1EC2.png new file mode 100644 index 000000000..355d6acd2 Binary files /dev/null and b/fonts/TewiFontOutline/1EC2.png differ diff --git a/fonts/TewiFontOutline/1EC3.png b/fonts/TewiFontOutline/1EC3.png new file mode 100644 index 000000000..cc47786ba Binary files /dev/null and b/fonts/TewiFontOutline/1EC3.png differ diff --git a/fonts/TewiFontOutline/1EC5.png b/fonts/TewiFontOutline/1EC5.png new file mode 100644 index 000000000..8713ab85e Binary files /dev/null and b/fonts/TewiFontOutline/1EC5.png differ diff --git a/fonts/TewiFontOutline/1EC6.png b/fonts/TewiFontOutline/1EC6.png new file mode 100644 index 000000000..9c53611e0 Binary files /dev/null and b/fonts/TewiFontOutline/1EC6.png differ diff --git a/fonts/TewiFontOutline/1EC7.png b/fonts/TewiFontOutline/1EC7.png new file mode 100644 index 000000000..cc50514bf Binary files /dev/null and b/fonts/TewiFontOutline/1EC7.png differ diff --git a/fonts/TewiFontOutline/1EC8.png b/fonts/TewiFontOutline/1EC8.png new file mode 100644 index 000000000..fdcc10b58 Binary files /dev/null and b/fonts/TewiFontOutline/1EC8.png differ diff --git a/fonts/TewiFontOutline/1EC9.png b/fonts/TewiFontOutline/1EC9.png new file mode 100644 index 000000000..7589bab60 Binary files /dev/null and b/fonts/TewiFontOutline/1EC9.png differ diff --git a/fonts/TewiFontOutline/1ECA.png b/fonts/TewiFontOutline/1ECA.png new file mode 100644 index 000000000..6c427758b Binary files /dev/null and b/fonts/TewiFontOutline/1ECA.png differ diff --git a/fonts/TewiFontOutline/1ECB.png b/fonts/TewiFontOutline/1ECB.png new file mode 100644 index 000000000..38e872926 Binary files /dev/null and b/fonts/TewiFontOutline/1ECB.png differ diff --git a/fonts/TewiFontOutline/1ECC.png b/fonts/TewiFontOutline/1ECC.png new file mode 100644 index 000000000..6f2bf843a Binary files /dev/null and b/fonts/TewiFontOutline/1ECC.png differ diff --git a/fonts/TewiFontOutline/1ECD.png b/fonts/TewiFontOutline/1ECD.png new file mode 100644 index 000000000..95080aa81 Binary files /dev/null and b/fonts/TewiFontOutline/1ECD.png differ diff --git a/fonts/TewiFontOutline/1ECE.png b/fonts/TewiFontOutline/1ECE.png new file mode 100644 index 000000000..7f0c3e724 Binary files /dev/null and b/fonts/TewiFontOutline/1ECE.png differ diff --git a/fonts/TewiFontOutline/1ECF.png b/fonts/TewiFontOutline/1ECF.png new file mode 100644 index 000000000..1d3fbbf7f Binary files /dev/null and b/fonts/TewiFontOutline/1ECF.png differ diff --git a/fonts/TewiFontOutline/1ED0.png b/fonts/TewiFontOutline/1ED0.png new file mode 100644 index 000000000..af1d12f99 Binary files /dev/null and b/fonts/TewiFontOutline/1ED0.png differ diff --git a/fonts/TewiFontOutline/1ED1.png b/fonts/TewiFontOutline/1ED1.png new file mode 100644 index 000000000..9dcf98821 Binary files /dev/null and b/fonts/TewiFontOutline/1ED1.png differ diff --git a/fonts/TewiFontOutline/1ED2.png b/fonts/TewiFontOutline/1ED2.png new file mode 100644 index 000000000..6c3d3efbd Binary files /dev/null and b/fonts/TewiFontOutline/1ED2.png differ diff --git a/fonts/TewiFontOutline/1ED3.png b/fonts/TewiFontOutline/1ED3.png new file mode 100644 index 000000000..227877592 Binary files /dev/null and b/fonts/TewiFontOutline/1ED3.png differ diff --git a/fonts/TewiFontOutline/1ED4.png b/fonts/TewiFontOutline/1ED4.png new file mode 100644 index 000000000..6eca63bfe Binary files /dev/null and b/fonts/TewiFontOutline/1ED4.png differ diff --git a/fonts/TewiFontOutline/1ED5.png b/fonts/TewiFontOutline/1ED5.png new file mode 100644 index 000000000..4ffc6d191 Binary files /dev/null and b/fonts/TewiFontOutline/1ED5.png differ diff --git a/fonts/TewiFontOutline/1ED6.png b/fonts/TewiFontOutline/1ED6.png new file mode 100644 index 000000000..8ec7c248d Binary files /dev/null and b/fonts/TewiFontOutline/1ED6.png differ diff --git a/fonts/TewiFontOutline/1ED7.png b/fonts/TewiFontOutline/1ED7.png new file mode 100644 index 000000000..195fb84ce Binary files /dev/null and b/fonts/TewiFontOutline/1ED7.png differ diff --git a/fonts/TewiFontOutline/1ED8.png b/fonts/TewiFontOutline/1ED8.png new file mode 100644 index 000000000..7c1fc4300 Binary files /dev/null and b/fonts/TewiFontOutline/1ED8.png differ diff --git a/fonts/TewiFontOutline/1ED9.png b/fonts/TewiFontOutline/1ED9.png new file mode 100644 index 000000000..969af18bc Binary files /dev/null and b/fonts/TewiFontOutline/1ED9.png differ diff --git a/fonts/TewiFontOutline/1EDA.png b/fonts/TewiFontOutline/1EDA.png new file mode 100644 index 000000000..5c93a88fd Binary files /dev/null and b/fonts/TewiFontOutline/1EDA.png differ diff --git a/fonts/TewiFontOutline/1EDB.png b/fonts/TewiFontOutline/1EDB.png new file mode 100644 index 000000000..ba61669cd Binary files /dev/null and b/fonts/TewiFontOutline/1EDB.png differ diff --git a/fonts/TewiFontOutline/1EDC.png b/fonts/TewiFontOutline/1EDC.png new file mode 100644 index 000000000..9ad62e43a Binary files /dev/null and b/fonts/TewiFontOutline/1EDC.png differ diff --git a/fonts/TewiFontOutline/1EDD.png b/fonts/TewiFontOutline/1EDD.png new file mode 100644 index 000000000..b0986065f Binary files /dev/null and b/fonts/TewiFontOutline/1EDD.png differ diff --git a/fonts/TewiFontOutline/1EDE.png b/fonts/TewiFontOutline/1EDE.png new file mode 100644 index 000000000..7b9fc32c8 Binary files /dev/null and b/fonts/TewiFontOutline/1EDE.png differ diff --git a/fonts/TewiFontOutline/1EDF.png b/fonts/TewiFontOutline/1EDF.png new file mode 100644 index 000000000..e66d8712f Binary files /dev/null and b/fonts/TewiFontOutline/1EDF.png differ diff --git a/fonts/TewiFontOutline/1EE0.png b/fonts/TewiFontOutline/1EE0.png new file mode 100644 index 000000000..fb16ee21e Binary files /dev/null and b/fonts/TewiFontOutline/1EE0.png differ diff --git a/fonts/TewiFontOutline/1EE1.png b/fonts/TewiFontOutline/1EE1.png new file mode 100644 index 000000000..3734fed9e Binary files /dev/null and b/fonts/TewiFontOutline/1EE1.png differ diff --git a/fonts/TewiFontOutline/1EE2.png b/fonts/TewiFontOutline/1EE2.png new file mode 100644 index 000000000..e33101233 Binary files /dev/null and b/fonts/TewiFontOutline/1EE2.png differ diff --git a/fonts/TewiFontOutline/1EE3.png b/fonts/TewiFontOutline/1EE3.png new file mode 100644 index 000000000..e3e607ef3 Binary files /dev/null and b/fonts/TewiFontOutline/1EE3.png differ diff --git a/fonts/TewiFontOutline/1EE4.png b/fonts/TewiFontOutline/1EE4.png new file mode 100644 index 000000000..0092ee2d0 Binary files /dev/null and b/fonts/TewiFontOutline/1EE4.png differ diff --git a/fonts/TewiFontOutline/1EE5.png b/fonts/TewiFontOutline/1EE5.png new file mode 100644 index 000000000..e754e289d Binary files /dev/null and b/fonts/TewiFontOutline/1EE5.png differ diff --git a/fonts/TewiFontOutline/1EE6.png b/fonts/TewiFontOutline/1EE6.png new file mode 100644 index 000000000..e212c31f1 Binary files /dev/null and b/fonts/TewiFontOutline/1EE6.png differ diff --git a/fonts/TewiFontOutline/1EE7.png b/fonts/TewiFontOutline/1EE7.png new file mode 100644 index 000000000..d13fc31c8 Binary files /dev/null and b/fonts/TewiFontOutline/1EE7.png differ diff --git a/fonts/TewiFontOutline/1EE8.png b/fonts/TewiFontOutline/1EE8.png new file mode 100644 index 000000000..b98abc362 Binary files /dev/null and b/fonts/TewiFontOutline/1EE8.png differ diff --git a/fonts/TewiFontOutline/1EE9.png b/fonts/TewiFontOutline/1EE9.png new file mode 100644 index 000000000..e93d5ebc2 Binary files /dev/null and b/fonts/TewiFontOutline/1EE9.png differ diff --git a/fonts/TewiFontOutline/1EEA.png b/fonts/TewiFontOutline/1EEA.png new file mode 100644 index 000000000..c940d83e3 Binary files /dev/null and b/fonts/TewiFontOutline/1EEA.png differ diff --git a/fonts/TewiFontOutline/1EEB.png b/fonts/TewiFontOutline/1EEB.png new file mode 100644 index 000000000..11609e5c5 Binary files /dev/null and b/fonts/TewiFontOutline/1EEB.png differ diff --git a/fonts/TewiFontOutline/1EEC.png b/fonts/TewiFontOutline/1EEC.png new file mode 100644 index 000000000..a506359f5 Binary files /dev/null and b/fonts/TewiFontOutline/1EEC.png differ diff --git a/fonts/TewiFontOutline/1EED.png b/fonts/TewiFontOutline/1EED.png new file mode 100644 index 000000000..63a55afa9 Binary files /dev/null and b/fonts/TewiFontOutline/1EED.png differ diff --git a/fonts/TewiFontOutline/1EEE.png b/fonts/TewiFontOutline/1EEE.png new file mode 100644 index 000000000..9123bfaba Binary files /dev/null and b/fonts/TewiFontOutline/1EEE.png differ diff --git a/fonts/TewiFontOutline/1EEF.png b/fonts/TewiFontOutline/1EEF.png new file mode 100644 index 000000000..b8861cb6f Binary files /dev/null and b/fonts/TewiFontOutline/1EEF.png differ diff --git a/fonts/TewiFontOutline/1EF0.png b/fonts/TewiFontOutline/1EF0.png new file mode 100644 index 000000000..87e164849 Binary files /dev/null and b/fonts/TewiFontOutline/1EF0.png differ diff --git a/fonts/TewiFontOutline/1EF1.png b/fonts/TewiFontOutline/1EF1.png new file mode 100644 index 000000000..5fe063627 Binary files /dev/null and b/fonts/TewiFontOutline/1EF1.png differ diff --git a/fonts/TewiFontOutline/1EF2.png b/fonts/TewiFontOutline/1EF2.png new file mode 100644 index 000000000..51c6765c2 Binary files /dev/null and b/fonts/TewiFontOutline/1EF2.png differ diff --git a/fonts/TewiFontOutline/1EF3.png b/fonts/TewiFontOutline/1EF3.png new file mode 100644 index 000000000..5bb2f18c0 Binary files /dev/null and b/fonts/TewiFontOutline/1EF3.png differ diff --git a/fonts/TewiFontOutline/1EF4.png b/fonts/TewiFontOutline/1EF4.png new file mode 100644 index 000000000..bc910386e Binary files /dev/null and b/fonts/TewiFontOutline/1EF4.png differ diff --git a/fonts/TewiFontOutline/1EF5.png b/fonts/TewiFontOutline/1EF5.png new file mode 100644 index 000000000..600e53459 Binary files /dev/null and b/fonts/TewiFontOutline/1EF5.png differ diff --git a/fonts/TewiFontOutline/1EF6.png b/fonts/TewiFontOutline/1EF6.png new file mode 100644 index 000000000..ccb68d3f7 Binary files /dev/null and b/fonts/TewiFontOutline/1EF6.png differ diff --git a/fonts/TewiFontOutline/1EF7.png b/fonts/TewiFontOutline/1EF7.png new file mode 100644 index 000000000..f7b9b7fad Binary files /dev/null and b/fonts/TewiFontOutline/1EF7.png differ diff --git a/fonts/TewiFontOutline/1EF8.png b/fonts/TewiFontOutline/1EF8.png new file mode 100644 index 000000000..91565b422 Binary files /dev/null and b/fonts/TewiFontOutline/1EF8.png differ diff --git a/fonts/TewiFontOutline/1EF9.png b/fonts/TewiFontOutline/1EF9.png new file mode 100644 index 000000000..7c5aee14a Binary files /dev/null and b/fonts/TewiFontOutline/1EF9.png differ diff --git a/fonts/TewiFontOutline/1EFA.png b/fonts/TewiFontOutline/1EFA.png new file mode 100644 index 000000000..956117fb1 Binary files /dev/null and b/fonts/TewiFontOutline/1EFA.png differ diff --git a/fonts/TewiFontOutline/1EFB.png b/fonts/TewiFontOutline/1EFB.png new file mode 100644 index 000000000..c9af23458 Binary files /dev/null and b/fonts/TewiFontOutline/1EFB.png differ diff --git a/fonts/TewiFontOutline/1EFC.png b/fonts/TewiFontOutline/1EFC.png new file mode 100644 index 000000000..cbb55ef9f Binary files /dev/null and b/fonts/TewiFontOutline/1EFC.png differ diff --git a/fonts/TewiFontOutline/1EFD.png b/fonts/TewiFontOutline/1EFD.png new file mode 100644 index 000000000..c5e24b34d Binary files /dev/null and b/fonts/TewiFontOutline/1EFD.png differ diff --git a/fonts/TewiFontOutline/1EFE.png b/fonts/TewiFontOutline/1EFE.png new file mode 100644 index 000000000..535076ee6 Binary files /dev/null and b/fonts/TewiFontOutline/1EFE.png differ diff --git a/fonts/TewiFontOutline/1EFF.png b/fonts/TewiFontOutline/1EFF.png new file mode 100644 index 000000000..8de4fb5b0 Binary files /dev/null and b/fonts/TewiFontOutline/1EFF.png differ diff --git a/fonts/TewiFontOutline/1F00.png b/fonts/TewiFontOutline/1F00.png new file mode 100644 index 000000000..fce88293c Binary files /dev/null and b/fonts/TewiFontOutline/1F00.png differ diff --git a/fonts/TewiFontOutline/1F01.png b/fonts/TewiFontOutline/1F01.png new file mode 100644 index 000000000..c9ab8a89f Binary files /dev/null and b/fonts/TewiFontOutline/1F01.png differ diff --git a/fonts/TewiFontOutline/1F02.png b/fonts/TewiFontOutline/1F02.png new file mode 100644 index 000000000..dff4ebdb9 Binary files /dev/null and b/fonts/TewiFontOutline/1F02.png differ diff --git a/fonts/TewiFontOutline/1F03.png b/fonts/TewiFontOutline/1F03.png new file mode 100644 index 000000000..a241e6737 Binary files /dev/null and b/fonts/TewiFontOutline/1F03.png differ diff --git a/fonts/TewiFontOutline/1F04.png b/fonts/TewiFontOutline/1F04.png new file mode 100644 index 000000000..78177372a Binary files /dev/null and b/fonts/TewiFontOutline/1F04.png differ diff --git a/fonts/TewiFontOutline/1F05.png b/fonts/TewiFontOutline/1F05.png new file mode 100644 index 000000000..a1ca2a09b Binary files /dev/null and b/fonts/TewiFontOutline/1F05.png differ diff --git a/fonts/TewiFontOutline/1F06.png b/fonts/TewiFontOutline/1F06.png new file mode 100644 index 000000000..b70c707ca Binary files /dev/null and b/fonts/TewiFontOutline/1F06.png differ diff --git a/fonts/TewiFontOutline/1F07.png b/fonts/TewiFontOutline/1F07.png new file mode 100644 index 000000000..32b841320 Binary files /dev/null and b/fonts/TewiFontOutline/1F07.png differ diff --git a/fonts/TewiFontOutline/1F08.png b/fonts/TewiFontOutline/1F08.png new file mode 100644 index 000000000..84d851423 Binary files /dev/null and b/fonts/TewiFontOutline/1F08.png differ diff --git a/fonts/TewiFontOutline/1F09.png b/fonts/TewiFontOutline/1F09.png new file mode 100644 index 000000000..d5416cad1 Binary files /dev/null and b/fonts/TewiFontOutline/1F09.png differ diff --git a/fonts/TewiFontOutline/1F0A.png b/fonts/TewiFontOutline/1F0A.png new file mode 100644 index 000000000..74069662d Binary files /dev/null and b/fonts/TewiFontOutline/1F0A.png differ diff --git a/fonts/TewiFontOutline/1F0B.png b/fonts/TewiFontOutline/1F0B.png new file mode 100644 index 000000000..e4fb28883 Binary files /dev/null and b/fonts/TewiFontOutline/1F0B.png differ diff --git a/fonts/TewiFontOutline/1F0C.png b/fonts/TewiFontOutline/1F0C.png new file mode 100644 index 000000000..a5e2feb89 Binary files /dev/null and b/fonts/TewiFontOutline/1F0C.png differ diff --git a/fonts/TewiFontOutline/1F0D.png b/fonts/TewiFontOutline/1F0D.png new file mode 100644 index 000000000..8d42951bc Binary files /dev/null and b/fonts/TewiFontOutline/1F0D.png differ diff --git a/fonts/TewiFontOutline/1F0E.png b/fonts/TewiFontOutline/1F0E.png new file mode 100644 index 000000000..2ee1ae4c7 Binary files /dev/null and b/fonts/TewiFontOutline/1F0E.png differ diff --git a/fonts/TewiFontOutline/1F0F.png b/fonts/TewiFontOutline/1F0F.png new file mode 100644 index 000000000..b57113e1c Binary files /dev/null and b/fonts/TewiFontOutline/1F0F.png differ diff --git a/fonts/TewiFontOutline/1F10.png b/fonts/TewiFontOutline/1F10.png new file mode 100644 index 000000000..75c3aea84 Binary files /dev/null and b/fonts/TewiFontOutline/1F10.png differ diff --git a/fonts/TewiFontOutline/1F11.png b/fonts/TewiFontOutline/1F11.png new file mode 100644 index 000000000..1524e7bd0 Binary files /dev/null and b/fonts/TewiFontOutline/1F11.png differ diff --git a/fonts/TewiFontOutline/1F12.png b/fonts/TewiFontOutline/1F12.png new file mode 100644 index 000000000..37fb0a832 Binary files /dev/null and b/fonts/TewiFontOutline/1F12.png differ diff --git a/fonts/TewiFontOutline/1F13.png b/fonts/TewiFontOutline/1F13.png new file mode 100644 index 000000000..37fb0a832 Binary files /dev/null and b/fonts/TewiFontOutline/1F13.png differ diff --git a/fonts/TewiFontOutline/1F14.png b/fonts/TewiFontOutline/1F14.png new file mode 100644 index 000000000..a5c7a9e8c Binary files /dev/null and b/fonts/TewiFontOutline/1F14.png differ diff --git a/fonts/TewiFontOutline/1F15.png b/fonts/TewiFontOutline/1F15.png new file mode 100644 index 000000000..ac728d3c3 Binary files /dev/null and b/fonts/TewiFontOutline/1F15.png differ diff --git a/fonts/TewiFontOutline/1F18.png b/fonts/TewiFontOutline/1F18.png new file mode 100644 index 000000000..714f7c73e Binary files /dev/null and b/fonts/TewiFontOutline/1F18.png differ diff --git a/fonts/TewiFontOutline/1F19.png b/fonts/TewiFontOutline/1F19.png new file mode 100644 index 000000000..c7875a407 Binary files /dev/null and b/fonts/TewiFontOutline/1F19.png differ diff --git a/fonts/TewiFontOutline/1F1A.png b/fonts/TewiFontOutline/1F1A.png new file mode 100644 index 000000000..30be97e96 Binary files /dev/null and b/fonts/TewiFontOutline/1F1A.png differ diff --git a/fonts/TewiFontOutline/1F1B.png b/fonts/TewiFontOutline/1F1B.png new file mode 100644 index 000000000..83d4d6ceb Binary files /dev/null and b/fonts/TewiFontOutline/1F1B.png differ diff --git a/fonts/TewiFontOutline/1F1C.png b/fonts/TewiFontOutline/1F1C.png new file mode 100644 index 000000000..cdd4aa51c Binary files /dev/null and b/fonts/TewiFontOutline/1F1C.png differ diff --git a/fonts/TewiFontOutline/1F1D.png b/fonts/TewiFontOutline/1F1D.png new file mode 100644 index 000000000..96b014e39 Binary files /dev/null and b/fonts/TewiFontOutline/1F1D.png differ diff --git a/fonts/TewiFontOutline/1F20.png b/fonts/TewiFontOutline/1F20.png new file mode 100644 index 000000000..eb5e764b7 Binary files /dev/null and b/fonts/TewiFontOutline/1F20.png differ diff --git a/fonts/TewiFontOutline/1F21.png b/fonts/TewiFontOutline/1F21.png new file mode 100644 index 000000000..e98e3c983 Binary files /dev/null and b/fonts/TewiFontOutline/1F21.png differ diff --git a/fonts/TewiFontOutline/1F22.png b/fonts/TewiFontOutline/1F22.png new file mode 100644 index 000000000..38055dd4a Binary files /dev/null and b/fonts/TewiFontOutline/1F22.png differ diff --git a/fonts/TewiFontOutline/1F23.png b/fonts/TewiFontOutline/1F23.png new file mode 100644 index 000000000..034033ff1 Binary files /dev/null and b/fonts/TewiFontOutline/1F23.png differ diff --git a/fonts/TewiFontOutline/1F24.png b/fonts/TewiFontOutline/1F24.png new file mode 100644 index 000000000..1428032a9 Binary files /dev/null and b/fonts/TewiFontOutline/1F24.png differ diff --git a/fonts/TewiFontOutline/1F25.png b/fonts/TewiFontOutline/1F25.png new file mode 100644 index 000000000..cde188cc3 Binary files /dev/null and b/fonts/TewiFontOutline/1F25.png differ diff --git a/fonts/TewiFontOutline/1F26.png b/fonts/TewiFontOutline/1F26.png new file mode 100644 index 000000000..4a7904c80 Binary files /dev/null and b/fonts/TewiFontOutline/1F26.png differ diff --git a/fonts/TewiFontOutline/1F27.png b/fonts/TewiFontOutline/1F27.png new file mode 100644 index 000000000..3a68b474b Binary files /dev/null and b/fonts/TewiFontOutline/1F27.png differ diff --git a/fonts/TewiFontOutline/1F28.png b/fonts/TewiFontOutline/1F28.png new file mode 100644 index 000000000..3d49cda2e Binary files /dev/null and b/fonts/TewiFontOutline/1F28.png differ diff --git a/fonts/TewiFontOutline/1F29.png b/fonts/TewiFontOutline/1F29.png new file mode 100644 index 000000000..7b51572a7 Binary files /dev/null and b/fonts/TewiFontOutline/1F29.png differ diff --git a/fonts/TewiFontOutline/1F2A.png b/fonts/TewiFontOutline/1F2A.png new file mode 100644 index 000000000..226149139 Binary files /dev/null and b/fonts/TewiFontOutline/1F2A.png differ diff --git a/fonts/TewiFontOutline/1F2B.png b/fonts/TewiFontOutline/1F2B.png new file mode 100644 index 000000000..6e91503ba Binary files /dev/null and b/fonts/TewiFontOutline/1F2B.png differ diff --git a/fonts/TewiFontOutline/1F2C.png b/fonts/TewiFontOutline/1F2C.png new file mode 100644 index 000000000..16076c3f1 Binary files /dev/null and b/fonts/TewiFontOutline/1F2C.png differ diff --git a/fonts/TewiFontOutline/1F2D.png b/fonts/TewiFontOutline/1F2D.png new file mode 100644 index 000000000..d315e313d Binary files /dev/null and b/fonts/TewiFontOutline/1F2D.png differ diff --git a/fonts/TewiFontOutline/1F2E.png b/fonts/TewiFontOutline/1F2E.png new file mode 100644 index 000000000..415f9583d Binary files /dev/null and b/fonts/TewiFontOutline/1F2E.png differ diff --git a/fonts/TewiFontOutline/1F2F.png b/fonts/TewiFontOutline/1F2F.png new file mode 100644 index 000000000..ffabcfd86 Binary files /dev/null and b/fonts/TewiFontOutline/1F2F.png differ diff --git a/fonts/TewiFontOutline/1F30.png b/fonts/TewiFontOutline/1F30.png new file mode 100644 index 000000000..4d8c7e14c Binary files /dev/null and b/fonts/TewiFontOutline/1F30.png differ diff --git a/fonts/TewiFontOutline/1F31.png b/fonts/TewiFontOutline/1F31.png new file mode 100644 index 000000000..e9a822d0f Binary files /dev/null and b/fonts/TewiFontOutline/1F31.png differ diff --git a/fonts/TewiFontOutline/1F32.png b/fonts/TewiFontOutline/1F32.png new file mode 100644 index 000000000..71e81905e Binary files /dev/null and b/fonts/TewiFontOutline/1F32.png differ diff --git a/fonts/TewiFontOutline/1F33.png b/fonts/TewiFontOutline/1F33.png new file mode 100644 index 000000000..a09e7483c Binary files /dev/null and b/fonts/TewiFontOutline/1F33.png differ diff --git a/fonts/TewiFontOutline/1F34.png b/fonts/TewiFontOutline/1F34.png new file mode 100644 index 000000000..7904670e4 Binary files /dev/null and b/fonts/TewiFontOutline/1F34.png differ diff --git a/fonts/TewiFontOutline/1F35.png b/fonts/TewiFontOutline/1F35.png new file mode 100644 index 000000000..0bb7aff4d Binary files /dev/null and b/fonts/TewiFontOutline/1F35.png differ diff --git a/fonts/TewiFontOutline/1F36.png b/fonts/TewiFontOutline/1F36.png new file mode 100644 index 000000000..049706fd6 Binary files /dev/null and b/fonts/TewiFontOutline/1F36.png differ diff --git a/fonts/TewiFontOutline/1F37.png b/fonts/TewiFontOutline/1F37.png new file mode 100644 index 000000000..45aa66865 Binary files /dev/null and b/fonts/TewiFontOutline/1F37.png differ diff --git a/fonts/TewiFontOutline/1F38.png b/fonts/TewiFontOutline/1F38.png new file mode 100644 index 000000000..a6b165c52 Binary files /dev/null and b/fonts/TewiFontOutline/1F38.png differ diff --git a/fonts/TewiFontOutline/1F39.png b/fonts/TewiFontOutline/1F39.png new file mode 100644 index 000000000..93a0df721 Binary files /dev/null and b/fonts/TewiFontOutline/1F39.png differ diff --git a/fonts/TewiFontOutline/1F3A.png b/fonts/TewiFontOutline/1F3A.png new file mode 100644 index 000000000..74b79ddae Binary files /dev/null and b/fonts/TewiFontOutline/1F3A.png differ diff --git a/fonts/TewiFontOutline/1F3B.png b/fonts/TewiFontOutline/1F3B.png new file mode 100644 index 000000000..f2a06a1c5 Binary files /dev/null and b/fonts/TewiFontOutline/1F3B.png differ diff --git a/fonts/TewiFontOutline/1F3C.png b/fonts/TewiFontOutline/1F3C.png new file mode 100644 index 000000000..83364c3e3 Binary files /dev/null and b/fonts/TewiFontOutline/1F3C.png differ diff --git a/fonts/TewiFontOutline/1F3D.png b/fonts/TewiFontOutline/1F3D.png new file mode 100644 index 000000000..28775626b Binary files /dev/null and b/fonts/TewiFontOutline/1F3D.png differ diff --git a/fonts/TewiFontOutline/1F3E.png b/fonts/TewiFontOutline/1F3E.png new file mode 100644 index 000000000..cf93e7990 Binary files /dev/null and b/fonts/TewiFontOutline/1F3E.png differ diff --git a/fonts/TewiFontOutline/1F3F.png b/fonts/TewiFontOutline/1F3F.png new file mode 100644 index 000000000..81a7a8890 Binary files /dev/null and b/fonts/TewiFontOutline/1F3F.png differ diff --git a/fonts/TewiFontOutline/1F40.png b/fonts/TewiFontOutline/1F40.png new file mode 100644 index 000000000..56157b060 Binary files /dev/null and b/fonts/TewiFontOutline/1F40.png differ diff --git a/fonts/TewiFontOutline/1F41.png b/fonts/TewiFontOutline/1F41.png new file mode 100644 index 000000000..250d9ae35 Binary files /dev/null and b/fonts/TewiFontOutline/1F41.png differ diff --git a/fonts/TewiFontOutline/1F42.png b/fonts/TewiFontOutline/1F42.png new file mode 100644 index 000000000..46a264bb0 Binary files /dev/null and b/fonts/TewiFontOutline/1F42.png differ diff --git a/fonts/TewiFontOutline/1F43.png b/fonts/TewiFontOutline/1F43.png new file mode 100644 index 000000000..9676c9765 Binary files /dev/null and b/fonts/TewiFontOutline/1F43.png differ diff --git a/fonts/TewiFontOutline/1F44.png b/fonts/TewiFontOutline/1F44.png new file mode 100644 index 000000000..e760864a9 Binary files /dev/null and b/fonts/TewiFontOutline/1F44.png differ diff --git a/fonts/TewiFontOutline/1F45.png b/fonts/TewiFontOutline/1F45.png new file mode 100644 index 000000000..7e557ddee Binary files /dev/null and b/fonts/TewiFontOutline/1F45.png differ diff --git a/fonts/TewiFontOutline/1F48.png b/fonts/TewiFontOutline/1F48.png new file mode 100644 index 000000000..4c960f0e9 Binary files /dev/null and b/fonts/TewiFontOutline/1F48.png differ diff --git a/fonts/TewiFontOutline/1F49.png b/fonts/TewiFontOutline/1F49.png new file mode 100644 index 000000000..cdb26ce50 Binary files /dev/null and b/fonts/TewiFontOutline/1F49.png differ diff --git a/fonts/TewiFontOutline/1F4A.png b/fonts/TewiFontOutline/1F4A.png new file mode 100644 index 000000000..2cfbffe88 Binary files /dev/null and b/fonts/TewiFontOutline/1F4A.png differ diff --git a/fonts/TewiFontOutline/1F4B.png b/fonts/TewiFontOutline/1F4B.png new file mode 100644 index 000000000..fad25246f Binary files /dev/null and b/fonts/TewiFontOutline/1F4B.png differ diff --git a/fonts/TewiFontOutline/1F4C.png b/fonts/TewiFontOutline/1F4C.png new file mode 100644 index 000000000..6d83e6c0d Binary files /dev/null and b/fonts/TewiFontOutline/1F4C.png differ diff --git a/fonts/TewiFontOutline/1F4D.png b/fonts/TewiFontOutline/1F4D.png new file mode 100644 index 000000000..5f7c0262f Binary files /dev/null and b/fonts/TewiFontOutline/1F4D.png differ diff --git a/fonts/TewiFontOutline/1F50.png b/fonts/TewiFontOutline/1F50.png new file mode 100644 index 000000000..0f5b7ca36 Binary files /dev/null and b/fonts/TewiFontOutline/1F50.png differ diff --git a/fonts/TewiFontOutline/1F51.png b/fonts/TewiFontOutline/1F51.png new file mode 100644 index 000000000..b66bcfc8e Binary files /dev/null and b/fonts/TewiFontOutline/1F51.png differ diff --git a/fonts/TewiFontOutline/1F52.png b/fonts/TewiFontOutline/1F52.png new file mode 100644 index 000000000..d81370408 Binary files /dev/null and b/fonts/TewiFontOutline/1F52.png differ diff --git a/fonts/TewiFontOutline/1F53.png b/fonts/TewiFontOutline/1F53.png new file mode 100644 index 000000000..54ea0e888 Binary files /dev/null and b/fonts/TewiFontOutline/1F53.png differ diff --git a/fonts/TewiFontOutline/1F54.png b/fonts/TewiFontOutline/1F54.png new file mode 100644 index 000000000..4788e7019 Binary files /dev/null and b/fonts/TewiFontOutline/1F54.png differ diff --git a/fonts/TewiFontOutline/1F55.png b/fonts/TewiFontOutline/1F55.png new file mode 100644 index 000000000..e1cc5cbe1 Binary files /dev/null and b/fonts/TewiFontOutline/1F55.png differ diff --git a/fonts/TewiFontOutline/1F56.png b/fonts/TewiFontOutline/1F56.png new file mode 100644 index 000000000..c89696edf Binary files /dev/null and b/fonts/TewiFontOutline/1F56.png differ diff --git a/fonts/TewiFontOutline/1F57.png b/fonts/TewiFontOutline/1F57.png new file mode 100644 index 000000000..69d35fa4d Binary files /dev/null and b/fonts/TewiFontOutline/1F57.png differ diff --git a/fonts/TewiFontOutline/1F59.png b/fonts/TewiFontOutline/1F59.png new file mode 100644 index 000000000..75bc69342 Binary files /dev/null and b/fonts/TewiFontOutline/1F59.png differ diff --git a/fonts/TewiFontOutline/1F5B.png b/fonts/TewiFontOutline/1F5B.png new file mode 100644 index 000000000..15f1497dd Binary files /dev/null and b/fonts/TewiFontOutline/1F5B.png differ diff --git a/fonts/TewiFontOutline/1F5D.png b/fonts/TewiFontOutline/1F5D.png new file mode 100644 index 000000000..180c6cfba Binary files /dev/null and b/fonts/TewiFontOutline/1F5D.png differ diff --git a/fonts/TewiFontOutline/1F5F.png b/fonts/TewiFontOutline/1F5F.png new file mode 100644 index 000000000..e0457b93a Binary files /dev/null and b/fonts/TewiFontOutline/1F5F.png differ diff --git a/fonts/TewiFontOutline/1F60.png b/fonts/TewiFontOutline/1F60.png new file mode 100644 index 000000000..4d762aef7 Binary files /dev/null and b/fonts/TewiFontOutline/1F60.png differ diff --git a/fonts/TewiFontOutline/1F61.png b/fonts/TewiFontOutline/1F61.png new file mode 100644 index 000000000..68ffbf82d Binary files /dev/null and b/fonts/TewiFontOutline/1F61.png differ diff --git a/fonts/TewiFontOutline/1F62.png b/fonts/TewiFontOutline/1F62.png new file mode 100644 index 000000000..94e1f29f2 Binary files /dev/null and b/fonts/TewiFontOutline/1F62.png differ diff --git a/fonts/TewiFontOutline/1F63.png b/fonts/TewiFontOutline/1F63.png new file mode 100644 index 000000000..93d1f563d Binary files /dev/null and b/fonts/TewiFontOutline/1F63.png differ diff --git a/fonts/TewiFontOutline/1F64.png b/fonts/TewiFontOutline/1F64.png new file mode 100644 index 000000000..fe4963d55 Binary files /dev/null and b/fonts/TewiFontOutline/1F64.png differ diff --git a/fonts/TewiFontOutline/1F65.png b/fonts/TewiFontOutline/1F65.png new file mode 100644 index 000000000..85b63ee71 Binary files /dev/null and b/fonts/TewiFontOutline/1F65.png differ diff --git a/fonts/TewiFontOutline/1F66.png b/fonts/TewiFontOutline/1F66.png new file mode 100644 index 000000000..b0223155f Binary files /dev/null and b/fonts/TewiFontOutline/1F66.png differ diff --git a/fonts/TewiFontOutline/1F67.png b/fonts/TewiFontOutline/1F67.png new file mode 100644 index 000000000..d2dcbe825 Binary files /dev/null and b/fonts/TewiFontOutline/1F67.png differ diff --git a/fonts/TewiFontOutline/1F68.png b/fonts/TewiFontOutline/1F68.png new file mode 100644 index 000000000..d9c0e18b4 Binary files /dev/null and b/fonts/TewiFontOutline/1F68.png differ diff --git a/fonts/TewiFontOutline/1F69.png b/fonts/TewiFontOutline/1F69.png new file mode 100644 index 000000000..1a9730926 Binary files /dev/null and b/fonts/TewiFontOutline/1F69.png differ diff --git a/fonts/TewiFontOutline/1F6A.png b/fonts/TewiFontOutline/1F6A.png new file mode 100644 index 000000000..e669a2e34 Binary files /dev/null and b/fonts/TewiFontOutline/1F6A.png differ diff --git a/fonts/TewiFontOutline/1F6B.png b/fonts/TewiFontOutline/1F6B.png new file mode 100644 index 000000000..3a0b5e18e Binary files /dev/null and b/fonts/TewiFontOutline/1F6B.png differ diff --git a/fonts/TewiFontOutline/1F6C.png b/fonts/TewiFontOutline/1F6C.png new file mode 100644 index 000000000..f4fdffd38 Binary files /dev/null and b/fonts/TewiFontOutline/1F6C.png differ diff --git a/fonts/TewiFontOutline/1F6D.png b/fonts/TewiFontOutline/1F6D.png new file mode 100644 index 000000000..1393e8a50 Binary files /dev/null and b/fonts/TewiFontOutline/1F6D.png differ diff --git a/fonts/TewiFontOutline/1F6E.png b/fonts/TewiFontOutline/1F6E.png new file mode 100644 index 000000000..03c0763a9 Binary files /dev/null and b/fonts/TewiFontOutline/1F6E.png differ diff --git a/fonts/TewiFontOutline/1F6F.png b/fonts/TewiFontOutline/1F6F.png new file mode 100644 index 000000000..b6d852810 Binary files /dev/null and b/fonts/TewiFontOutline/1F6F.png differ diff --git a/fonts/TewiFontOutline/1F70.png b/fonts/TewiFontOutline/1F70.png new file mode 100644 index 000000000..da61874ba Binary files /dev/null and b/fonts/TewiFontOutline/1F70.png differ diff --git a/fonts/TewiFontOutline/1F71.png b/fonts/TewiFontOutline/1F71.png new file mode 100644 index 000000000..188154706 Binary files /dev/null and b/fonts/TewiFontOutline/1F71.png differ diff --git a/fonts/TewiFontOutline/1F72.png b/fonts/TewiFontOutline/1F72.png new file mode 100644 index 000000000..795114266 Binary files /dev/null and b/fonts/TewiFontOutline/1F72.png differ diff --git a/fonts/TewiFontOutline/1F73.png b/fonts/TewiFontOutline/1F73.png new file mode 100644 index 000000000..b81bd673c Binary files /dev/null and b/fonts/TewiFontOutline/1F73.png differ diff --git a/fonts/TewiFontOutline/1F74.png b/fonts/TewiFontOutline/1F74.png new file mode 100644 index 000000000..427a21aa2 Binary files /dev/null and b/fonts/TewiFontOutline/1F74.png differ diff --git a/fonts/TewiFontOutline/1F75.png b/fonts/TewiFontOutline/1F75.png new file mode 100644 index 000000000..e7ae022c0 Binary files /dev/null and b/fonts/TewiFontOutline/1F75.png differ diff --git a/fonts/TewiFontOutline/1F76.png b/fonts/TewiFontOutline/1F76.png new file mode 100644 index 000000000..6a0a0037b Binary files /dev/null and b/fonts/TewiFontOutline/1F76.png differ diff --git a/fonts/TewiFontOutline/1F77.png b/fonts/TewiFontOutline/1F77.png new file mode 100644 index 000000000..289c42ffb Binary files /dev/null and b/fonts/TewiFontOutline/1F77.png differ diff --git a/fonts/TewiFontOutline/1F78.png b/fonts/TewiFontOutline/1F78.png new file mode 100644 index 000000000..f4490b58f Binary files /dev/null and b/fonts/TewiFontOutline/1F78.png differ diff --git a/fonts/TewiFontOutline/1F79.png b/fonts/TewiFontOutline/1F79.png new file mode 100644 index 000000000..d69614b69 Binary files /dev/null and b/fonts/TewiFontOutline/1F79.png differ diff --git a/fonts/TewiFontOutline/1F7A.png b/fonts/TewiFontOutline/1F7A.png new file mode 100644 index 000000000..55d33aabb Binary files /dev/null and b/fonts/TewiFontOutline/1F7A.png differ diff --git a/fonts/TewiFontOutline/1F7B.png b/fonts/TewiFontOutline/1F7B.png new file mode 100644 index 000000000..43b60418e Binary files /dev/null and b/fonts/TewiFontOutline/1F7B.png differ diff --git a/fonts/TewiFontOutline/1F7C.png b/fonts/TewiFontOutline/1F7C.png new file mode 100644 index 000000000..a93ab3112 Binary files /dev/null and b/fonts/TewiFontOutline/1F7C.png differ diff --git a/fonts/TewiFontOutline/1F7D.png b/fonts/TewiFontOutline/1F7D.png new file mode 100644 index 000000000..881ab6b1c Binary files /dev/null and b/fonts/TewiFontOutline/1F7D.png differ diff --git a/fonts/TewiFontOutline/1F80.png b/fonts/TewiFontOutline/1F80.png new file mode 100644 index 000000000..8a2b03f76 Binary files /dev/null and b/fonts/TewiFontOutline/1F80.png differ diff --git a/fonts/TewiFontOutline/1F81.png b/fonts/TewiFontOutline/1F81.png new file mode 100644 index 000000000..03d6eb412 Binary files /dev/null and b/fonts/TewiFontOutline/1F81.png differ diff --git a/fonts/TewiFontOutline/1F82.png b/fonts/TewiFontOutline/1F82.png new file mode 100644 index 000000000..b742eba5b Binary files /dev/null and b/fonts/TewiFontOutline/1F82.png differ diff --git a/fonts/TewiFontOutline/1F83.png b/fonts/TewiFontOutline/1F83.png new file mode 100644 index 000000000..f1fa9a6ba Binary files /dev/null and b/fonts/TewiFontOutline/1F83.png differ diff --git a/fonts/TewiFontOutline/1F84.png b/fonts/TewiFontOutline/1F84.png new file mode 100644 index 000000000..d9e1d7a9c Binary files /dev/null and b/fonts/TewiFontOutline/1F84.png differ diff --git a/fonts/TewiFontOutline/1F85.png b/fonts/TewiFontOutline/1F85.png new file mode 100644 index 000000000..5f8f0a1de Binary files /dev/null and b/fonts/TewiFontOutline/1F85.png differ diff --git a/fonts/TewiFontOutline/1F86.png b/fonts/TewiFontOutline/1F86.png new file mode 100644 index 000000000..f38e76760 Binary files /dev/null and b/fonts/TewiFontOutline/1F86.png differ diff --git a/fonts/TewiFontOutline/1F87.png b/fonts/TewiFontOutline/1F87.png new file mode 100644 index 000000000..f4395e020 Binary files /dev/null and b/fonts/TewiFontOutline/1F87.png differ diff --git a/fonts/TewiFontOutline/1F88.png b/fonts/TewiFontOutline/1F88.png new file mode 100644 index 000000000..19a48316b Binary files /dev/null and b/fonts/TewiFontOutline/1F88.png differ diff --git a/fonts/TewiFontOutline/1F89.png b/fonts/TewiFontOutline/1F89.png new file mode 100644 index 000000000..d29289ad0 Binary files /dev/null and b/fonts/TewiFontOutline/1F89.png differ diff --git a/fonts/TewiFontOutline/1F8A.png b/fonts/TewiFontOutline/1F8A.png new file mode 100644 index 000000000..53907ca28 Binary files /dev/null and b/fonts/TewiFontOutline/1F8A.png differ diff --git a/fonts/TewiFontOutline/1F8B.png b/fonts/TewiFontOutline/1F8B.png new file mode 100644 index 000000000..fda517b3e Binary files /dev/null and b/fonts/TewiFontOutline/1F8B.png differ diff --git a/fonts/TewiFontOutline/1F8C.png b/fonts/TewiFontOutline/1F8C.png new file mode 100644 index 000000000..ba43d51f2 Binary files /dev/null and b/fonts/TewiFontOutline/1F8C.png differ diff --git a/fonts/TewiFontOutline/1F8D.png b/fonts/TewiFontOutline/1F8D.png new file mode 100644 index 000000000..effd056af Binary files /dev/null and b/fonts/TewiFontOutline/1F8D.png differ diff --git a/fonts/TewiFontOutline/1F8E.png b/fonts/TewiFontOutline/1F8E.png new file mode 100644 index 000000000..65c1712a9 Binary files /dev/null and b/fonts/TewiFontOutline/1F8E.png differ diff --git a/fonts/TewiFontOutline/1F8F.png b/fonts/TewiFontOutline/1F8F.png new file mode 100644 index 000000000..09e7e0808 Binary files /dev/null and b/fonts/TewiFontOutline/1F8F.png differ diff --git a/fonts/TewiFontOutline/1F90.png b/fonts/TewiFontOutline/1F90.png new file mode 100644 index 000000000..328045bbb Binary files /dev/null and b/fonts/TewiFontOutline/1F90.png differ diff --git a/fonts/TewiFontOutline/1F91.png b/fonts/TewiFontOutline/1F91.png new file mode 100644 index 000000000..d36a75069 Binary files /dev/null and b/fonts/TewiFontOutline/1F91.png differ diff --git a/fonts/TewiFontOutline/1F92.png b/fonts/TewiFontOutline/1F92.png new file mode 100644 index 000000000..a87663b9b Binary files /dev/null and b/fonts/TewiFontOutline/1F92.png differ diff --git a/fonts/TewiFontOutline/1F93.png b/fonts/TewiFontOutline/1F93.png new file mode 100644 index 000000000..bbc4bbf50 Binary files /dev/null and b/fonts/TewiFontOutline/1F93.png differ diff --git a/fonts/TewiFontOutline/1F94.png b/fonts/TewiFontOutline/1F94.png new file mode 100644 index 000000000..6db5ad5a4 Binary files /dev/null and b/fonts/TewiFontOutline/1F94.png differ diff --git a/fonts/TewiFontOutline/1F95.png b/fonts/TewiFontOutline/1F95.png new file mode 100644 index 000000000..35eb9fd09 Binary files /dev/null and b/fonts/TewiFontOutline/1F95.png differ diff --git a/fonts/TewiFontOutline/1F96.png b/fonts/TewiFontOutline/1F96.png new file mode 100644 index 000000000..d56a83f3d Binary files /dev/null and b/fonts/TewiFontOutline/1F96.png differ diff --git a/fonts/TewiFontOutline/1F97.png b/fonts/TewiFontOutline/1F97.png new file mode 100644 index 000000000..9d11b2856 Binary files /dev/null and b/fonts/TewiFontOutline/1F97.png differ diff --git a/fonts/TewiFontOutline/1F98.png b/fonts/TewiFontOutline/1F98.png new file mode 100644 index 000000000..71ccee898 Binary files /dev/null and b/fonts/TewiFontOutline/1F98.png differ diff --git a/fonts/TewiFontOutline/1F99.png b/fonts/TewiFontOutline/1F99.png new file mode 100644 index 000000000..cf5bbd57f Binary files /dev/null and b/fonts/TewiFontOutline/1F99.png differ diff --git a/fonts/TewiFontOutline/1F9A.png b/fonts/TewiFontOutline/1F9A.png new file mode 100644 index 000000000..10cb4f303 Binary files /dev/null and b/fonts/TewiFontOutline/1F9A.png differ diff --git a/fonts/TewiFontOutline/1F9B.png b/fonts/TewiFontOutline/1F9B.png new file mode 100644 index 000000000..82860c3f9 Binary files /dev/null and b/fonts/TewiFontOutline/1F9B.png differ diff --git a/fonts/TewiFontOutline/1F9C.png b/fonts/TewiFontOutline/1F9C.png new file mode 100644 index 000000000..e4c43fd21 Binary files /dev/null and b/fonts/TewiFontOutline/1F9C.png differ diff --git a/fonts/TewiFontOutline/1F9D.png b/fonts/TewiFontOutline/1F9D.png new file mode 100644 index 000000000..635da5731 Binary files /dev/null and b/fonts/TewiFontOutline/1F9D.png differ diff --git a/fonts/TewiFontOutline/1F9E.png b/fonts/TewiFontOutline/1F9E.png new file mode 100644 index 000000000..b49ef0ead Binary files /dev/null and b/fonts/TewiFontOutline/1F9E.png differ diff --git a/fonts/TewiFontOutline/1F9F.png b/fonts/TewiFontOutline/1F9F.png new file mode 100644 index 000000000..1153b8459 Binary files /dev/null and b/fonts/TewiFontOutline/1F9F.png differ diff --git a/fonts/TewiFontOutline/1FA0.png b/fonts/TewiFontOutline/1FA0.png new file mode 100644 index 000000000..56b9ef211 Binary files /dev/null and b/fonts/TewiFontOutline/1FA0.png differ diff --git a/fonts/TewiFontOutline/1FA1.png b/fonts/TewiFontOutline/1FA1.png new file mode 100644 index 000000000..0aeb94106 Binary files /dev/null and b/fonts/TewiFontOutline/1FA1.png differ diff --git a/fonts/TewiFontOutline/1FA2.png b/fonts/TewiFontOutline/1FA2.png new file mode 100644 index 000000000..17e9faca7 Binary files /dev/null and b/fonts/TewiFontOutline/1FA2.png differ diff --git a/fonts/TewiFontOutline/1FA3.png b/fonts/TewiFontOutline/1FA3.png new file mode 100644 index 000000000..433d96d92 Binary files /dev/null and b/fonts/TewiFontOutline/1FA3.png differ diff --git a/fonts/TewiFontOutline/1FA4.png b/fonts/TewiFontOutline/1FA4.png new file mode 100644 index 000000000..95402afaf Binary files /dev/null and b/fonts/TewiFontOutline/1FA4.png differ diff --git a/fonts/TewiFontOutline/1FA5.png b/fonts/TewiFontOutline/1FA5.png new file mode 100644 index 000000000..28e548bd3 Binary files /dev/null and b/fonts/TewiFontOutline/1FA5.png differ diff --git a/fonts/TewiFontOutline/1FA6.png b/fonts/TewiFontOutline/1FA6.png new file mode 100644 index 000000000..5c4cdd7c9 Binary files /dev/null and b/fonts/TewiFontOutline/1FA6.png differ diff --git a/fonts/TewiFontOutline/1FA7.png b/fonts/TewiFontOutline/1FA7.png new file mode 100644 index 000000000..b83f75c03 Binary files /dev/null and b/fonts/TewiFontOutline/1FA7.png differ diff --git a/fonts/TewiFontOutline/1FA8.png b/fonts/TewiFontOutline/1FA8.png new file mode 100644 index 000000000..986ab1f39 Binary files /dev/null and b/fonts/TewiFontOutline/1FA8.png differ diff --git a/fonts/TewiFontOutline/1FA9.png b/fonts/TewiFontOutline/1FA9.png new file mode 100644 index 000000000..c41a8ef77 Binary files /dev/null and b/fonts/TewiFontOutline/1FA9.png differ diff --git a/fonts/TewiFontOutline/1FAA.png b/fonts/TewiFontOutline/1FAA.png new file mode 100644 index 000000000..192e053df Binary files /dev/null and b/fonts/TewiFontOutline/1FAA.png differ diff --git a/fonts/TewiFontOutline/1FAB.png b/fonts/TewiFontOutline/1FAB.png new file mode 100644 index 000000000..a5633fe7d Binary files /dev/null and b/fonts/TewiFontOutline/1FAB.png differ diff --git a/fonts/TewiFontOutline/1FAC.png b/fonts/TewiFontOutline/1FAC.png new file mode 100644 index 000000000..caa73e6f5 Binary files /dev/null and b/fonts/TewiFontOutline/1FAC.png differ diff --git a/fonts/TewiFontOutline/1FAD.png b/fonts/TewiFontOutline/1FAD.png new file mode 100644 index 000000000..ff061463a Binary files /dev/null and b/fonts/TewiFontOutline/1FAD.png differ diff --git a/fonts/TewiFontOutline/1FAE.png b/fonts/TewiFontOutline/1FAE.png new file mode 100644 index 000000000..6c4b06e78 Binary files /dev/null and b/fonts/TewiFontOutline/1FAE.png differ diff --git a/fonts/TewiFontOutline/1FAF.png b/fonts/TewiFontOutline/1FAF.png new file mode 100644 index 000000000..8b9feff50 Binary files /dev/null and b/fonts/TewiFontOutline/1FAF.png differ diff --git a/fonts/TewiFontOutline/1FB0.png b/fonts/TewiFontOutline/1FB0.png new file mode 100644 index 000000000..cde8eb863 Binary files /dev/null and b/fonts/TewiFontOutline/1FB0.png differ diff --git a/fonts/TewiFontOutline/1FB1.png b/fonts/TewiFontOutline/1FB1.png new file mode 100644 index 000000000..8f3e902e7 Binary files /dev/null and b/fonts/TewiFontOutline/1FB1.png differ diff --git a/fonts/TewiFontOutline/1FB2.png b/fonts/TewiFontOutline/1FB2.png new file mode 100644 index 000000000..b8c6ceaa7 Binary files /dev/null and b/fonts/TewiFontOutline/1FB2.png differ diff --git a/fonts/TewiFontOutline/1FB3.png b/fonts/TewiFontOutline/1FB3.png new file mode 100644 index 000000000..86eb3b218 Binary files /dev/null and b/fonts/TewiFontOutline/1FB3.png differ diff --git a/fonts/TewiFontOutline/1FB4.png b/fonts/TewiFontOutline/1FB4.png new file mode 100644 index 000000000..4642ead84 Binary files /dev/null and b/fonts/TewiFontOutline/1FB4.png differ diff --git a/fonts/TewiFontOutline/1FB6.png b/fonts/TewiFontOutline/1FB6.png new file mode 100644 index 000000000..5359c1b71 Binary files /dev/null and b/fonts/TewiFontOutline/1FB6.png differ diff --git a/fonts/TewiFontOutline/1FB7.png b/fonts/TewiFontOutline/1FB7.png new file mode 100644 index 000000000..d8224f758 Binary files /dev/null and b/fonts/TewiFontOutline/1FB7.png differ diff --git a/fonts/TewiFontOutline/1FB8.png b/fonts/TewiFontOutline/1FB8.png new file mode 100644 index 000000000..a7818e070 Binary files /dev/null and b/fonts/TewiFontOutline/1FB8.png differ diff --git a/fonts/TewiFontOutline/1FB9.png b/fonts/TewiFontOutline/1FB9.png new file mode 100644 index 000000000..9a1547fa1 Binary files /dev/null and b/fonts/TewiFontOutline/1FB9.png differ diff --git a/fonts/TewiFontOutline/1FBA.png b/fonts/TewiFontOutline/1FBA.png new file mode 100644 index 000000000..c3351d772 Binary files /dev/null and b/fonts/TewiFontOutline/1FBA.png differ diff --git a/fonts/TewiFontOutline/1FBB.png b/fonts/TewiFontOutline/1FBB.png new file mode 100644 index 000000000..bb441fe63 Binary files /dev/null and b/fonts/TewiFontOutline/1FBB.png differ diff --git a/fonts/TewiFontOutline/1FBC.png b/fonts/TewiFontOutline/1FBC.png new file mode 100644 index 000000000..e913618e7 Binary files /dev/null and b/fonts/TewiFontOutline/1FBC.png differ diff --git a/fonts/TewiFontOutline/1FBD.png b/fonts/TewiFontOutline/1FBD.png new file mode 100644 index 000000000..d6a02d148 Binary files /dev/null and b/fonts/TewiFontOutline/1FBD.png differ diff --git a/fonts/TewiFontOutline/1FBE.png b/fonts/TewiFontOutline/1FBE.png new file mode 100644 index 000000000..9211be6c4 Binary files /dev/null and b/fonts/TewiFontOutline/1FBE.png differ diff --git a/fonts/TewiFontOutline/1FBF.png b/fonts/TewiFontOutline/1FBF.png new file mode 100644 index 000000000..d6a02d148 Binary files /dev/null and b/fonts/TewiFontOutline/1FBF.png differ diff --git a/fonts/TewiFontOutline/1FC2.png b/fonts/TewiFontOutline/1FC2.png new file mode 100644 index 000000000..69286103c Binary files /dev/null and b/fonts/TewiFontOutline/1FC2.png differ diff --git a/fonts/TewiFontOutline/1FC3.png b/fonts/TewiFontOutline/1FC3.png new file mode 100644 index 000000000..d54c0258e Binary files /dev/null and b/fonts/TewiFontOutline/1FC3.png differ diff --git a/fonts/TewiFontOutline/1FC4.png b/fonts/TewiFontOutline/1FC4.png new file mode 100644 index 000000000..e59a2090c Binary files /dev/null and b/fonts/TewiFontOutline/1FC4.png differ diff --git a/fonts/TewiFontOutline/1FC6.png b/fonts/TewiFontOutline/1FC6.png new file mode 100644 index 000000000..8c4fbbc11 Binary files /dev/null and b/fonts/TewiFontOutline/1FC6.png differ diff --git a/fonts/TewiFontOutline/1FC7.png b/fonts/TewiFontOutline/1FC7.png new file mode 100644 index 000000000..5191b1566 Binary files /dev/null and b/fonts/TewiFontOutline/1FC7.png differ diff --git a/fonts/TewiFontOutline/1FC8.png b/fonts/TewiFontOutline/1FC8.png new file mode 100644 index 000000000..48c366e0f Binary files /dev/null and b/fonts/TewiFontOutline/1FC8.png differ diff --git a/fonts/TewiFontOutline/1FC9.png b/fonts/TewiFontOutline/1FC9.png new file mode 100644 index 000000000..5b0a9c99b Binary files /dev/null and b/fonts/TewiFontOutline/1FC9.png differ diff --git a/fonts/TewiFontOutline/1FCA.png b/fonts/TewiFontOutline/1FCA.png new file mode 100644 index 000000000..a531ce877 Binary files /dev/null and b/fonts/TewiFontOutline/1FCA.png differ diff --git a/fonts/TewiFontOutline/1FCB.png b/fonts/TewiFontOutline/1FCB.png new file mode 100644 index 000000000..34a403d77 Binary files /dev/null and b/fonts/TewiFontOutline/1FCB.png differ diff --git a/fonts/TewiFontOutline/1FCC.png b/fonts/TewiFontOutline/1FCC.png new file mode 100644 index 000000000..b864a7cf2 Binary files /dev/null and b/fonts/TewiFontOutline/1FCC.png differ diff --git a/fonts/TewiFontOutline/1FCD.png b/fonts/TewiFontOutline/1FCD.png new file mode 100644 index 000000000..ce16a44bd Binary files /dev/null and b/fonts/TewiFontOutline/1FCD.png differ diff --git a/fonts/TewiFontOutline/1FCE.png b/fonts/TewiFontOutline/1FCE.png new file mode 100644 index 000000000..e3f001ecd Binary files /dev/null and b/fonts/TewiFontOutline/1FCE.png differ diff --git a/fonts/TewiFontOutline/1FCF.png b/fonts/TewiFontOutline/1FCF.png new file mode 100644 index 000000000..91c7863dd Binary files /dev/null and b/fonts/TewiFontOutline/1FCF.png differ diff --git a/fonts/TewiFontOutline/1FD0.png b/fonts/TewiFontOutline/1FD0.png new file mode 100644 index 000000000..bf3c40648 Binary files /dev/null and b/fonts/TewiFontOutline/1FD0.png differ diff --git a/fonts/TewiFontOutline/1FD1.png b/fonts/TewiFontOutline/1FD1.png new file mode 100644 index 000000000..a6359ec29 Binary files /dev/null and b/fonts/TewiFontOutline/1FD1.png differ diff --git a/fonts/TewiFontOutline/1FD2.png b/fonts/TewiFontOutline/1FD2.png new file mode 100644 index 000000000..3f35e164e Binary files /dev/null and b/fonts/TewiFontOutline/1FD2.png differ diff --git a/fonts/TewiFontOutline/1FD3.png b/fonts/TewiFontOutline/1FD3.png new file mode 100644 index 000000000..c94b0138d Binary files /dev/null and b/fonts/TewiFontOutline/1FD3.png differ diff --git a/fonts/TewiFontOutline/1FD6.png b/fonts/TewiFontOutline/1FD6.png new file mode 100644 index 000000000..380620526 Binary files /dev/null and b/fonts/TewiFontOutline/1FD6.png differ diff --git a/fonts/TewiFontOutline/1FD7.png b/fonts/TewiFontOutline/1FD7.png new file mode 100644 index 000000000..4ad2c6b2f Binary files /dev/null and b/fonts/TewiFontOutline/1FD7.png differ diff --git a/fonts/TewiFontOutline/1FD8.png b/fonts/TewiFontOutline/1FD8.png new file mode 100644 index 000000000..cf591fdfe Binary files /dev/null and b/fonts/TewiFontOutline/1FD8.png differ diff --git a/fonts/TewiFontOutline/1FD9.png b/fonts/TewiFontOutline/1FD9.png new file mode 100644 index 000000000..681cd6ea6 Binary files /dev/null and b/fonts/TewiFontOutline/1FD9.png differ diff --git a/fonts/TewiFontOutline/1FDA.png b/fonts/TewiFontOutline/1FDA.png new file mode 100644 index 000000000..f7c129222 Binary files /dev/null and b/fonts/TewiFontOutline/1FDA.png differ diff --git a/fonts/TewiFontOutline/1FDB.png b/fonts/TewiFontOutline/1FDB.png new file mode 100644 index 000000000..0662f62c1 Binary files /dev/null and b/fonts/TewiFontOutline/1FDB.png differ diff --git a/fonts/TewiFontOutline/1FDD.png b/fonts/TewiFontOutline/1FDD.png new file mode 100644 index 000000000..beba51f7f Binary files /dev/null and b/fonts/TewiFontOutline/1FDD.png differ diff --git a/fonts/TewiFontOutline/1FDE.png b/fonts/TewiFontOutline/1FDE.png new file mode 100644 index 000000000..642487eaa Binary files /dev/null and b/fonts/TewiFontOutline/1FDE.png differ diff --git a/fonts/TewiFontOutline/1FDF.png b/fonts/TewiFontOutline/1FDF.png new file mode 100644 index 000000000..cbb426ce7 Binary files /dev/null and b/fonts/TewiFontOutline/1FDF.png differ diff --git a/fonts/TewiFontOutline/1FE0.png b/fonts/TewiFontOutline/1FE0.png new file mode 100644 index 000000000..a16f5cfb5 Binary files /dev/null and b/fonts/TewiFontOutline/1FE0.png differ diff --git a/fonts/TewiFontOutline/1FE1.png b/fonts/TewiFontOutline/1FE1.png new file mode 100644 index 000000000..84cd9219f Binary files /dev/null and b/fonts/TewiFontOutline/1FE1.png differ diff --git a/fonts/TewiFontOutline/1FE2.png b/fonts/TewiFontOutline/1FE2.png new file mode 100644 index 000000000..53af0c431 Binary files /dev/null and b/fonts/TewiFontOutline/1FE2.png differ diff --git a/fonts/TewiFontOutline/1FE3.png b/fonts/TewiFontOutline/1FE3.png new file mode 100644 index 000000000..7d92fa461 Binary files /dev/null and b/fonts/TewiFontOutline/1FE3.png differ diff --git a/fonts/TewiFontOutline/1FE4.png b/fonts/TewiFontOutline/1FE4.png new file mode 100644 index 000000000..2ceea4924 Binary files /dev/null and b/fonts/TewiFontOutline/1FE4.png differ diff --git a/fonts/TewiFontOutline/1FE5.png b/fonts/TewiFontOutline/1FE5.png new file mode 100644 index 000000000..8da807ee3 Binary files /dev/null and b/fonts/TewiFontOutline/1FE5.png differ diff --git a/fonts/TewiFontOutline/1FE6.png b/fonts/TewiFontOutline/1FE6.png new file mode 100644 index 000000000..083bc353b Binary files /dev/null and b/fonts/TewiFontOutline/1FE6.png differ diff --git a/fonts/TewiFontOutline/1FE7.png b/fonts/TewiFontOutline/1FE7.png new file mode 100644 index 000000000..77cecb697 Binary files /dev/null and b/fonts/TewiFontOutline/1FE7.png differ diff --git a/fonts/TewiFontOutline/1FE8.png b/fonts/TewiFontOutline/1FE8.png new file mode 100644 index 000000000..a64dfbacd Binary files /dev/null and b/fonts/TewiFontOutline/1FE8.png differ diff --git a/fonts/TewiFontOutline/1FE9.png b/fonts/TewiFontOutline/1FE9.png new file mode 100644 index 000000000..05b6d9537 Binary files /dev/null and b/fonts/TewiFontOutline/1FE9.png differ diff --git a/fonts/TewiFontOutline/1FEA.png b/fonts/TewiFontOutline/1FEA.png new file mode 100644 index 000000000..94fdacc5b Binary files /dev/null and b/fonts/TewiFontOutline/1FEA.png differ diff --git a/fonts/TewiFontOutline/1FEB.png b/fonts/TewiFontOutline/1FEB.png new file mode 100644 index 000000000..d609ac6ea Binary files /dev/null and b/fonts/TewiFontOutline/1FEB.png differ diff --git a/fonts/TewiFontOutline/1FEC.png b/fonts/TewiFontOutline/1FEC.png new file mode 100644 index 000000000..5180fb80b Binary files /dev/null and b/fonts/TewiFontOutline/1FEC.png differ diff --git a/fonts/TewiFontOutline/1FED.png b/fonts/TewiFontOutline/1FED.png new file mode 100644 index 000000000..2d567dde0 Binary files /dev/null and b/fonts/TewiFontOutline/1FED.png differ diff --git a/fonts/TewiFontOutline/1FEE.png b/fonts/TewiFontOutline/1FEE.png new file mode 100644 index 000000000..c766b0b68 Binary files /dev/null and b/fonts/TewiFontOutline/1FEE.png differ diff --git a/fonts/TewiFontOutline/1FEF.png b/fonts/TewiFontOutline/1FEF.png new file mode 100644 index 000000000..ca99df502 Binary files /dev/null and b/fonts/TewiFontOutline/1FEF.png differ diff --git a/fonts/TewiFontOutline/1FF2.png b/fonts/TewiFontOutline/1FF2.png new file mode 100644 index 000000000..a670f8ebb Binary files /dev/null and b/fonts/TewiFontOutline/1FF2.png differ diff --git a/fonts/TewiFontOutline/1FF3.png b/fonts/TewiFontOutline/1FF3.png new file mode 100644 index 000000000..a7b832d56 Binary files /dev/null and b/fonts/TewiFontOutline/1FF3.png differ diff --git a/fonts/TewiFontOutline/1FF4.png b/fonts/TewiFontOutline/1FF4.png new file mode 100644 index 000000000..3ecde8407 Binary files /dev/null and b/fonts/TewiFontOutline/1FF4.png differ diff --git a/fonts/TewiFontOutline/1FF6.png b/fonts/TewiFontOutline/1FF6.png new file mode 100644 index 000000000..561bd1079 Binary files /dev/null and b/fonts/TewiFontOutline/1FF6.png differ diff --git a/fonts/TewiFontOutline/1FF7.png b/fonts/TewiFontOutline/1FF7.png new file mode 100644 index 000000000..39dc89cf6 Binary files /dev/null and b/fonts/TewiFontOutline/1FF7.png differ diff --git a/fonts/TewiFontOutline/1FF8.png b/fonts/TewiFontOutline/1FF8.png new file mode 100644 index 000000000..7e9076e26 Binary files /dev/null and b/fonts/TewiFontOutline/1FF8.png differ diff --git a/fonts/TewiFontOutline/1FF9.png b/fonts/TewiFontOutline/1FF9.png new file mode 100644 index 000000000..2db0573c3 Binary files /dev/null and b/fonts/TewiFontOutline/1FF9.png differ diff --git a/fonts/TewiFontOutline/1FFA.png b/fonts/TewiFontOutline/1FFA.png new file mode 100644 index 000000000..694562547 Binary files /dev/null and b/fonts/TewiFontOutline/1FFA.png differ diff --git a/fonts/TewiFontOutline/1FFB.png b/fonts/TewiFontOutline/1FFB.png new file mode 100644 index 000000000..03f299480 Binary files /dev/null and b/fonts/TewiFontOutline/1FFB.png differ diff --git a/fonts/TewiFontOutline/1FFC.png b/fonts/TewiFontOutline/1FFC.png new file mode 100644 index 000000000..1f5dfc018 Binary files /dev/null and b/fonts/TewiFontOutline/1FFC.png differ diff --git a/fonts/TewiFontOutline/1FFD.png b/fonts/TewiFontOutline/1FFD.png new file mode 100644 index 000000000..eedc9e228 Binary files /dev/null and b/fonts/TewiFontOutline/1FFD.png differ diff --git a/fonts/TewiFontOutline/1FFE.png b/fonts/TewiFontOutline/1FFE.png new file mode 100644 index 000000000..11f5b21bb Binary files /dev/null and b/fonts/TewiFontOutline/1FFE.png differ diff --git a/fonts/TewiFontOutline/2010.png b/fonts/TewiFontOutline/2010.png new file mode 100644 index 000000000..0eea7fd51 Binary files /dev/null and b/fonts/TewiFontOutline/2010.png differ diff --git a/fonts/TewiFontOutline/2012.png b/fonts/TewiFontOutline/2012.png new file mode 100644 index 000000000..2c0d6328c Binary files /dev/null and b/fonts/TewiFontOutline/2012.png differ diff --git a/fonts/TewiFontOutline/2013.png b/fonts/TewiFontOutline/2013.png new file mode 100644 index 000000000..2c0d6328c Binary files /dev/null and b/fonts/TewiFontOutline/2013.png differ diff --git a/fonts/TewiFontOutline/2014.png b/fonts/TewiFontOutline/2014.png new file mode 100644 index 000000000..ac1f2b36f Binary files /dev/null and b/fonts/TewiFontOutline/2014.png differ diff --git a/fonts/TewiFontOutline/2015.png b/fonts/TewiFontOutline/2015.png new file mode 100644 index 000000000..ac1f2b36f Binary files /dev/null and b/fonts/TewiFontOutline/2015.png differ diff --git a/fonts/TewiFontOutline/2016.png b/fonts/TewiFontOutline/2016.png new file mode 100644 index 000000000..7f3740e27 Binary files /dev/null and b/fonts/TewiFontOutline/2016.png differ diff --git a/fonts/TewiFontOutline/2017.png b/fonts/TewiFontOutline/2017.png new file mode 100644 index 000000000..60092b54d Binary files /dev/null and b/fonts/TewiFontOutline/2017.png differ diff --git a/fonts/TewiFontOutline/2018.png b/fonts/TewiFontOutline/2018.png new file mode 100644 index 000000000..5e187949f Binary files /dev/null and b/fonts/TewiFontOutline/2018.png differ diff --git a/fonts/TewiFontOutline/2019.png b/fonts/TewiFontOutline/2019.png new file mode 100644 index 000000000..d6a02d148 Binary files /dev/null and b/fonts/TewiFontOutline/2019.png differ diff --git a/fonts/TewiFontOutline/201A.png b/fonts/TewiFontOutline/201A.png new file mode 100644 index 000000000..7e0d8a8e7 Binary files /dev/null and b/fonts/TewiFontOutline/201A.png differ diff --git a/fonts/TewiFontOutline/201B.png b/fonts/TewiFontOutline/201B.png new file mode 100644 index 000000000..11f5b21bb Binary files /dev/null and b/fonts/TewiFontOutline/201B.png differ diff --git a/fonts/TewiFontOutline/201C.png b/fonts/TewiFontOutline/201C.png new file mode 100644 index 000000000..2f2e30baf Binary files /dev/null and b/fonts/TewiFontOutline/201C.png differ diff --git a/fonts/TewiFontOutline/201D.png b/fonts/TewiFontOutline/201D.png new file mode 100644 index 000000000..f6807fb14 Binary files /dev/null and b/fonts/TewiFontOutline/201D.png differ diff --git a/fonts/TewiFontOutline/201E.png b/fonts/TewiFontOutline/201E.png new file mode 100644 index 000000000..82440bff1 Binary files /dev/null and b/fonts/TewiFontOutline/201E.png differ diff --git a/fonts/TewiFontOutline/201F.png b/fonts/TewiFontOutline/201F.png new file mode 100644 index 000000000..c79ec41ca Binary files /dev/null and b/fonts/TewiFontOutline/201F.png differ diff --git a/fonts/TewiFontOutline/2020.png b/fonts/TewiFontOutline/2020.png new file mode 100644 index 000000000..549d989f6 Binary files /dev/null and b/fonts/TewiFontOutline/2020.png differ diff --git a/fonts/TewiFontOutline/2021.png b/fonts/TewiFontOutline/2021.png new file mode 100644 index 000000000..2f3e70d7a Binary files /dev/null and b/fonts/TewiFontOutline/2021.png differ diff --git a/fonts/TewiFontOutline/2022.png b/fonts/TewiFontOutline/2022.png new file mode 100644 index 000000000..83b720354 Binary files /dev/null and b/fonts/TewiFontOutline/2022.png differ diff --git a/fonts/TewiFontOutline/2023.png b/fonts/TewiFontOutline/2023.png new file mode 100644 index 000000000..f5cdee5d8 Binary files /dev/null and b/fonts/TewiFontOutline/2023.png differ diff --git a/fonts/TewiFontOutline/2024.png b/fonts/TewiFontOutline/2024.png new file mode 100644 index 000000000..d3e673a8f Binary files /dev/null and b/fonts/TewiFontOutline/2024.png differ diff --git a/fonts/TewiFontOutline/2025.png b/fonts/TewiFontOutline/2025.png new file mode 100644 index 000000000..163202172 Binary files /dev/null and b/fonts/TewiFontOutline/2025.png differ diff --git a/fonts/TewiFontOutline/2026.png b/fonts/TewiFontOutline/2026.png new file mode 100644 index 000000000..095cf5776 Binary files /dev/null and b/fonts/TewiFontOutline/2026.png differ diff --git a/fonts/TewiFontOutline/2027.png b/fonts/TewiFontOutline/2027.png new file mode 100644 index 000000000..28270b539 Binary files /dev/null and b/fonts/TewiFontOutline/2027.png differ diff --git a/fonts/TewiFontOutline/2030.png b/fonts/TewiFontOutline/2030.png new file mode 100644 index 000000000..43d1837bd Binary files /dev/null and b/fonts/TewiFontOutline/2030.png differ diff --git a/fonts/TewiFontOutline/2032.png b/fonts/TewiFontOutline/2032.png new file mode 100644 index 000000000..65457d174 Binary files /dev/null and b/fonts/TewiFontOutline/2032.png differ diff --git a/fonts/TewiFontOutline/2033.png b/fonts/TewiFontOutline/2033.png new file mode 100644 index 000000000..b1fbe97f9 Binary files /dev/null and b/fonts/TewiFontOutline/2033.png differ diff --git a/fonts/TewiFontOutline/2034.png b/fonts/TewiFontOutline/2034.png new file mode 100644 index 000000000..d5c9820f2 Binary files /dev/null and b/fonts/TewiFontOutline/2034.png differ diff --git a/fonts/TewiFontOutline/2035.png b/fonts/TewiFontOutline/2035.png new file mode 100644 index 000000000..5b37d9428 Binary files /dev/null and b/fonts/TewiFontOutline/2035.png differ diff --git a/fonts/TewiFontOutline/2036.png b/fonts/TewiFontOutline/2036.png new file mode 100644 index 000000000..c5526f96b Binary files /dev/null and b/fonts/TewiFontOutline/2036.png differ diff --git a/fonts/TewiFontOutline/2037.png b/fonts/TewiFontOutline/2037.png new file mode 100644 index 000000000..b7354af45 Binary files /dev/null and b/fonts/TewiFontOutline/2037.png differ diff --git a/fonts/TewiFontOutline/2038.png b/fonts/TewiFontOutline/2038.png new file mode 100644 index 000000000..f696283a1 Binary files /dev/null and b/fonts/TewiFontOutline/2038.png differ diff --git a/fonts/TewiFontOutline/2039.png b/fonts/TewiFontOutline/2039.png new file mode 100644 index 000000000..2bdb1337a Binary files /dev/null and b/fonts/TewiFontOutline/2039.png differ diff --git a/fonts/TewiFontOutline/203A.png b/fonts/TewiFontOutline/203A.png new file mode 100644 index 000000000..002208fc2 Binary files /dev/null and b/fonts/TewiFontOutline/203A.png differ diff --git a/fonts/TewiFontOutline/203C.png b/fonts/TewiFontOutline/203C.png new file mode 100644 index 000000000..ab84b3458 Binary files /dev/null and b/fonts/TewiFontOutline/203C.png differ diff --git a/fonts/TewiFontOutline/203D.png b/fonts/TewiFontOutline/203D.png new file mode 100644 index 000000000..b1276ef36 Binary files /dev/null and b/fonts/TewiFontOutline/203D.png differ diff --git a/fonts/TewiFontOutline/203E.png b/fonts/TewiFontOutline/203E.png new file mode 100644 index 000000000..55f759bd6 Binary files /dev/null and b/fonts/TewiFontOutline/203E.png differ diff --git a/fonts/TewiFontOutline/203F.png b/fonts/TewiFontOutline/203F.png new file mode 100644 index 000000000..d6292d65a Binary files /dev/null and b/fonts/TewiFontOutline/203F.png differ diff --git a/fonts/TewiFontOutline/2040.png b/fonts/TewiFontOutline/2040.png new file mode 100644 index 000000000..26cc73a3a Binary files /dev/null and b/fonts/TewiFontOutline/2040.png differ diff --git a/fonts/TewiFontOutline/2041.png b/fonts/TewiFontOutline/2041.png new file mode 100644 index 000000000..439900739 Binary files /dev/null and b/fonts/TewiFontOutline/2041.png differ diff --git a/fonts/TewiFontOutline/2042.png b/fonts/TewiFontOutline/2042.png new file mode 100644 index 000000000..a8118bc35 Binary files /dev/null and b/fonts/TewiFontOutline/2042.png differ diff --git a/fonts/TewiFontOutline/2043.png b/fonts/TewiFontOutline/2043.png new file mode 100644 index 000000000..db0512de8 Binary files /dev/null and b/fonts/TewiFontOutline/2043.png differ diff --git a/fonts/TewiFontOutline/2044.png b/fonts/TewiFontOutline/2044.png new file mode 100644 index 000000000..12e3d4a56 Binary files /dev/null and b/fonts/TewiFontOutline/2044.png differ diff --git a/fonts/TewiFontOutline/2045.png b/fonts/TewiFontOutline/2045.png new file mode 100644 index 000000000..135b70542 Binary files /dev/null and b/fonts/TewiFontOutline/2045.png differ diff --git a/fonts/TewiFontOutline/2046.png b/fonts/TewiFontOutline/2046.png new file mode 100644 index 000000000..3cd3b3195 Binary files /dev/null and b/fonts/TewiFontOutline/2046.png differ diff --git a/fonts/TewiFontOutline/2047.png b/fonts/TewiFontOutline/2047.png new file mode 100644 index 000000000..0824dea70 Binary files /dev/null and b/fonts/TewiFontOutline/2047.png differ diff --git a/fonts/TewiFontOutline/2048.png b/fonts/TewiFontOutline/2048.png new file mode 100644 index 000000000..a9a5d3bc6 Binary files /dev/null and b/fonts/TewiFontOutline/2048.png differ diff --git a/fonts/TewiFontOutline/2049.png b/fonts/TewiFontOutline/2049.png new file mode 100644 index 000000000..c9a154b2b Binary files /dev/null and b/fonts/TewiFontOutline/2049.png differ diff --git a/fonts/TewiFontOutline/204A.png b/fonts/TewiFontOutline/204A.png new file mode 100644 index 000000000..4f93c4191 Binary files /dev/null and b/fonts/TewiFontOutline/204A.png differ diff --git a/fonts/TewiFontOutline/204B.png b/fonts/TewiFontOutline/204B.png new file mode 100644 index 000000000..516d1c8d0 Binary files /dev/null and b/fonts/TewiFontOutline/204B.png differ diff --git a/fonts/TewiFontOutline/204C.png b/fonts/TewiFontOutline/204C.png new file mode 100644 index 000000000..708a96da7 Binary files /dev/null and b/fonts/TewiFontOutline/204C.png differ diff --git a/fonts/TewiFontOutline/204D.png b/fonts/TewiFontOutline/204D.png new file mode 100644 index 000000000..547328649 Binary files /dev/null and b/fonts/TewiFontOutline/204D.png differ diff --git a/fonts/TewiFontOutline/204E.png b/fonts/TewiFontOutline/204E.png new file mode 100644 index 000000000..c62898049 Binary files /dev/null and b/fonts/TewiFontOutline/204E.png differ diff --git a/fonts/TewiFontOutline/204F.png b/fonts/TewiFontOutline/204F.png new file mode 100644 index 000000000..1a7c60608 Binary files /dev/null and b/fonts/TewiFontOutline/204F.png differ diff --git a/fonts/TewiFontOutline/2050.png b/fonts/TewiFontOutline/2050.png new file mode 100644 index 000000000..629b4ce82 Binary files /dev/null and b/fonts/TewiFontOutline/2050.png differ diff --git a/fonts/TewiFontOutline/2051.png b/fonts/TewiFontOutline/2051.png new file mode 100644 index 000000000..81ba41ce1 Binary files /dev/null and b/fonts/TewiFontOutline/2051.png differ diff --git a/fonts/TewiFontOutline/2052.png b/fonts/TewiFontOutline/2052.png new file mode 100644 index 000000000..d0a19c8d4 Binary files /dev/null and b/fonts/TewiFontOutline/2052.png differ diff --git a/fonts/TewiFontOutline/2053.png b/fonts/TewiFontOutline/2053.png new file mode 100644 index 000000000..10a3c9d1a Binary files /dev/null and b/fonts/TewiFontOutline/2053.png differ diff --git a/fonts/TewiFontOutline/2054.png b/fonts/TewiFontOutline/2054.png new file mode 100644 index 000000000..770312a57 Binary files /dev/null and b/fonts/TewiFontOutline/2054.png differ diff --git a/fonts/TewiFontOutline/2055.png b/fonts/TewiFontOutline/2055.png new file mode 100644 index 000000000..120eeadb9 Binary files /dev/null and b/fonts/TewiFontOutline/2055.png differ diff --git a/fonts/TewiFontOutline/2056.png b/fonts/TewiFontOutline/2056.png new file mode 100644 index 000000000..88553b212 Binary files /dev/null and b/fonts/TewiFontOutline/2056.png differ diff --git a/fonts/TewiFontOutline/2058.png b/fonts/TewiFontOutline/2058.png new file mode 100644 index 000000000..afa2dc97f Binary files /dev/null and b/fonts/TewiFontOutline/2058.png differ diff --git a/fonts/TewiFontOutline/2059.png b/fonts/TewiFontOutline/2059.png new file mode 100644 index 000000000..c99586712 Binary files /dev/null and b/fonts/TewiFontOutline/2059.png differ diff --git a/fonts/TewiFontOutline/205A.png b/fonts/TewiFontOutline/205A.png new file mode 100644 index 000000000..58128f6da Binary files /dev/null and b/fonts/TewiFontOutline/205A.png differ diff --git a/fonts/TewiFontOutline/205B.png b/fonts/TewiFontOutline/205B.png new file mode 100644 index 000000000..a9a4d4dff Binary files /dev/null and b/fonts/TewiFontOutline/205B.png differ diff --git a/fonts/TewiFontOutline/205C.png b/fonts/TewiFontOutline/205C.png new file mode 100644 index 000000000..6977fbe3b Binary files /dev/null and b/fonts/TewiFontOutline/205C.png differ diff --git a/fonts/TewiFontOutline/205D.png b/fonts/TewiFontOutline/205D.png new file mode 100644 index 000000000..f3ecbe0e3 Binary files /dev/null and b/fonts/TewiFontOutline/205D.png differ diff --git a/fonts/TewiFontOutline/205E.png b/fonts/TewiFontOutline/205E.png new file mode 100644 index 000000000..c024daf6f Binary files /dev/null and b/fonts/TewiFontOutline/205E.png differ diff --git a/fonts/TewiFontOutline/2070.png b/fonts/TewiFontOutline/2070.png new file mode 100644 index 000000000..a5b309f31 Binary files /dev/null and b/fonts/TewiFontOutline/2070.png differ diff --git a/fonts/TewiFontOutline/2071.png b/fonts/TewiFontOutline/2071.png new file mode 100644 index 000000000..2861bae9f Binary files /dev/null and b/fonts/TewiFontOutline/2071.png differ diff --git a/fonts/TewiFontOutline/2074.png b/fonts/TewiFontOutline/2074.png new file mode 100644 index 000000000..0e4d6e255 Binary files /dev/null and b/fonts/TewiFontOutline/2074.png differ diff --git a/fonts/TewiFontOutline/2075.png b/fonts/TewiFontOutline/2075.png new file mode 100644 index 000000000..2b99a9c74 Binary files /dev/null and b/fonts/TewiFontOutline/2075.png differ diff --git a/fonts/TewiFontOutline/2076.png b/fonts/TewiFontOutline/2076.png new file mode 100644 index 000000000..9418be847 Binary files /dev/null and b/fonts/TewiFontOutline/2076.png differ diff --git a/fonts/TewiFontOutline/2077.png b/fonts/TewiFontOutline/2077.png new file mode 100644 index 000000000..b75d060bf Binary files /dev/null and b/fonts/TewiFontOutline/2077.png differ diff --git a/fonts/TewiFontOutline/2078.png b/fonts/TewiFontOutline/2078.png new file mode 100644 index 000000000..97daebc45 Binary files /dev/null and b/fonts/TewiFontOutline/2078.png differ diff --git a/fonts/TewiFontOutline/2079.png b/fonts/TewiFontOutline/2079.png new file mode 100644 index 000000000..6dae11562 Binary files /dev/null and b/fonts/TewiFontOutline/2079.png differ diff --git a/fonts/TewiFontOutline/207A.png b/fonts/TewiFontOutline/207A.png new file mode 100644 index 000000000..18d630974 Binary files /dev/null and b/fonts/TewiFontOutline/207A.png differ diff --git a/fonts/TewiFontOutline/207B.png b/fonts/TewiFontOutline/207B.png new file mode 100644 index 000000000..798c8985e Binary files /dev/null and b/fonts/TewiFontOutline/207B.png differ diff --git a/fonts/TewiFontOutline/207C.png b/fonts/TewiFontOutline/207C.png new file mode 100644 index 000000000..5795a6ce6 Binary files /dev/null and b/fonts/TewiFontOutline/207C.png differ diff --git a/fonts/TewiFontOutline/207D.png b/fonts/TewiFontOutline/207D.png new file mode 100644 index 000000000..be67d10a3 Binary files /dev/null and b/fonts/TewiFontOutline/207D.png differ diff --git a/fonts/TewiFontOutline/207E.png b/fonts/TewiFontOutline/207E.png new file mode 100644 index 000000000..c973e846d Binary files /dev/null and b/fonts/TewiFontOutline/207E.png differ diff --git a/fonts/TewiFontOutline/207F.png b/fonts/TewiFontOutline/207F.png new file mode 100644 index 000000000..73207cb2b Binary files /dev/null and b/fonts/TewiFontOutline/207F.png differ diff --git a/fonts/TewiFontOutline/2080.png b/fonts/TewiFontOutline/2080.png new file mode 100644 index 000000000..47cd3f662 Binary files /dev/null and b/fonts/TewiFontOutline/2080.png differ diff --git a/fonts/TewiFontOutline/2081.png b/fonts/TewiFontOutline/2081.png new file mode 100644 index 000000000..8e15657e1 Binary files /dev/null and b/fonts/TewiFontOutline/2081.png differ diff --git a/fonts/TewiFontOutline/2082.png b/fonts/TewiFontOutline/2082.png new file mode 100644 index 000000000..72951a2c5 Binary files /dev/null and b/fonts/TewiFontOutline/2082.png differ diff --git a/fonts/TewiFontOutline/2083.png b/fonts/TewiFontOutline/2083.png new file mode 100644 index 000000000..862f3b1b4 Binary files /dev/null and b/fonts/TewiFontOutline/2083.png differ diff --git a/fonts/TewiFontOutline/2084.png b/fonts/TewiFontOutline/2084.png new file mode 100644 index 000000000..8280827db Binary files /dev/null and b/fonts/TewiFontOutline/2084.png differ diff --git a/fonts/TewiFontOutline/2085.png b/fonts/TewiFontOutline/2085.png new file mode 100644 index 000000000..34bc19862 Binary files /dev/null and b/fonts/TewiFontOutline/2085.png differ diff --git a/fonts/TewiFontOutline/2086.png b/fonts/TewiFontOutline/2086.png new file mode 100644 index 000000000..d59a6137d Binary files /dev/null and b/fonts/TewiFontOutline/2086.png differ diff --git a/fonts/TewiFontOutline/2087.png b/fonts/TewiFontOutline/2087.png new file mode 100644 index 000000000..5e4768538 Binary files /dev/null and b/fonts/TewiFontOutline/2087.png differ diff --git a/fonts/TewiFontOutline/2088.png b/fonts/TewiFontOutline/2088.png new file mode 100644 index 000000000..a474841e5 Binary files /dev/null and b/fonts/TewiFontOutline/2088.png differ diff --git a/fonts/TewiFontOutline/2089.png b/fonts/TewiFontOutline/2089.png new file mode 100644 index 000000000..a3bd6f9d5 Binary files /dev/null and b/fonts/TewiFontOutline/2089.png differ diff --git a/fonts/TewiFontOutline/208A.png b/fonts/TewiFontOutline/208A.png new file mode 100644 index 000000000..5b8b7829a Binary files /dev/null and b/fonts/TewiFontOutline/208A.png differ diff --git a/fonts/TewiFontOutline/208B.png b/fonts/TewiFontOutline/208B.png new file mode 100644 index 000000000..52f34fa2d Binary files /dev/null and b/fonts/TewiFontOutline/208B.png differ diff --git a/fonts/TewiFontOutline/208C.png b/fonts/TewiFontOutline/208C.png new file mode 100644 index 000000000..06542a951 Binary files /dev/null and b/fonts/TewiFontOutline/208C.png differ diff --git a/fonts/TewiFontOutline/208D.png b/fonts/TewiFontOutline/208D.png new file mode 100644 index 000000000..a10ba8004 Binary files /dev/null and b/fonts/TewiFontOutline/208D.png differ diff --git a/fonts/TewiFontOutline/208E.png b/fonts/TewiFontOutline/208E.png new file mode 100644 index 000000000..5965c042a Binary files /dev/null and b/fonts/TewiFontOutline/208E.png differ diff --git a/fonts/TewiFontOutline/2090.png b/fonts/TewiFontOutline/2090.png new file mode 100644 index 000000000..be9b63235 Binary files /dev/null and b/fonts/TewiFontOutline/2090.png differ diff --git a/fonts/TewiFontOutline/2091.png b/fonts/TewiFontOutline/2091.png new file mode 100644 index 000000000..5a2e51007 Binary files /dev/null and b/fonts/TewiFontOutline/2091.png differ diff --git a/fonts/TewiFontOutline/2092.png b/fonts/TewiFontOutline/2092.png new file mode 100644 index 000000000..8c52eff67 Binary files /dev/null and b/fonts/TewiFontOutline/2092.png differ diff --git a/fonts/TewiFontOutline/2093.png b/fonts/TewiFontOutline/2093.png new file mode 100644 index 000000000..32faad169 Binary files /dev/null and b/fonts/TewiFontOutline/2093.png differ diff --git a/fonts/TewiFontOutline/2094.png b/fonts/TewiFontOutline/2094.png new file mode 100644 index 000000000..111555a23 Binary files /dev/null and b/fonts/TewiFontOutline/2094.png differ diff --git a/fonts/TewiFontOutline/2095.png b/fonts/TewiFontOutline/2095.png new file mode 100644 index 000000000..fa5f83c69 Binary files /dev/null and b/fonts/TewiFontOutline/2095.png differ diff --git a/fonts/TewiFontOutline/2096.png b/fonts/TewiFontOutline/2096.png new file mode 100644 index 000000000..adc08b51f Binary files /dev/null and b/fonts/TewiFontOutline/2096.png differ diff --git a/fonts/TewiFontOutline/2097.png b/fonts/TewiFontOutline/2097.png new file mode 100644 index 000000000..3aa976dc6 Binary files /dev/null and b/fonts/TewiFontOutline/2097.png differ diff --git a/fonts/TewiFontOutline/2098.png b/fonts/TewiFontOutline/2098.png new file mode 100644 index 000000000..167b0e242 Binary files /dev/null and b/fonts/TewiFontOutline/2098.png differ diff --git a/fonts/TewiFontOutline/2099.png b/fonts/TewiFontOutline/2099.png new file mode 100644 index 000000000..5c6eb2f72 Binary files /dev/null and b/fonts/TewiFontOutline/2099.png differ diff --git a/fonts/TewiFontOutline/209A.png b/fonts/TewiFontOutline/209A.png new file mode 100644 index 000000000..a47bb38fb Binary files /dev/null and b/fonts/TewiFontOutline/209A.png differ diff --git a/fonts/TewiFontOutline/209B.png b/fonts/TewiFontOutline/209B.png new file mode 100644 index 000000000..7fc3dd879 Binary files /dev/null and b/fonts/TewiFontOutline/209B.png differ diff --git a/fonts/TewiFontOutline/209C.png b/fonts/TewiFontOutline/209C.png new file mode 100644 index 000000000..afda09459 Binary files /dev/null and b/fonts/TewiFontOutline/209C.png differ diff --git a/fonts/TewiFontOutline/20A0.png b/fonts/TewiFontOutline/20A0.png new file mode 100644 index 000000000..72904e339 Binary files /dev/null and b/fonts/TewiFontOutline/20A0.png differ diff --git a/fonts/TewiFontOutline/20A1.png b/fonts/TewiFontOutline/20A1.png new file mode 100644 index 000000000..4bc6d69c7 Binary files /dev/null and b/fonts/TewiFontOutline/20A1.png differ diff --git a/fonts/TewiFontOutline/20A2.png b/fonts/TewiFontOutline/20A2.png new file mode 100644 index 000000000..e58aceb68 Binary files /dev/null and b/fonts/TewiFontOutline/20A2.png differ diff --git a/fonts/TewiFontOutline/20A3.png b/fonts/TewiFontOutline/20A3.png new file mode 100644 index 000000000..e0b244059 Binary files /dev/null and b/fonts/TewiFontOutline/20A3.png differ diff --git a/fonts/TewiFontOutline/20A4.png b/fonts/TewiFontOutline/20A4.png new file mode 100644 index 000000000..03e812047 Binary files /dev/null and b/fonts/TewiFontOutline/20A4.png differ diff --git a/fonts/TewiFontOutline/20A5.png b/fonts/TewiFontOutline/20A5.png new file mode 100644 index 000000000..f3e5d0000 Binary files /dev/null and b/fonts/TewiFontOutline/20A5.png differ diff --git a/fonts/TewiFontOutline/20A6.png b/fonts/TewiFontOutline/20A6.png new file mode 100644 index 000000000..8e821bb30 Binary files /dev/null and b/fonts/TewiFontOutline/20A6.png differ diff --git a/fonts/TewiFontOutline/20A8.png b/fonts/TewiFontOutline/20A8.png new file mode 100644 index 000000000..f5260b10f Binary files /dev/null and b/fonts/TewiFontOutline/20A8.png differ diff --git a/fonts/TewiFontOutline/20A9.png b/fonts/TewiFontOutline/20A9.png new file mode 100644 index 000000000..839a000d2 Binary files /dev/null and b/fonts/TewiFontOutline/20A9.png differ diff --git a/fonts/TewiFontOutline/20AA.png b/fonts/TewiFontOutline/20AA.png new file mode 100644 index 000000000..71357ea6c Binary files /dev/null and b/fonts/TewiFontOutline/20AA.png differ diff --git a/fonts/TewiFontOutline/20AB.png b/fonts/TewiFontOutline/20AB.png new file mode 100644 index 000000000..a7526bbc9 Binary files /dev/null and b/fonts/TewiFontOutline/20AB.png differ diff --git a/fonts/TewiFontOutline/20AC.png b/fonts/TewiFontOutline/20AC.png new file mode 100644 index 000000000..cb439b603 Binary files /dev/null and b/fonts/TewiFontOutline/20AC.png differ diff --git a/fonts/TewiFontOutline/20AD.png b/fonts/TewiFontOutline/20AD.png new file mode 100644 index 000000000..01cb3617b Binary files /dev/null and b/fonts/TewiFontOutline/20AD.png differ diff --git a/fonts/TewiFontOutline/20AE.png b/fonts/TewiFontOutline/20AE.png new file mode 100644 index 000000000..267febae0 Binary files /dev/null and b/fonts/TewiFontOutline/20AE.png differ diff --git a/fonts/TewiFontOutline/20AF.png b/fonts/TewiFontOutline/20AF.png new file mode 100644 index 000000000..525d3149c Binary files /dev/null and b/fonts/TewiFontOutline/20AF.png differ diff --git a/fonts/TewiFontOutline/20B1.png b/fonts/TewiFontOutline/20B1.png new file mode 100644 index 000000000..7b96941cf Binary files /dev/null and b/fonts/TewiFontOutline/20B1.png differ diff --git a/fonts/TewiFontOutline/20B2.png b/fonts/TewiFontOutline/20B2.png new file mode 100644 index 000000000..7534562e5 Binary files /dev/null and b/fonts/TewiFontOutline/20B2.png differ diff --git a/fonts/TewiFontOutline/20B3.png b/fonts/TewiFontOutline/20B3.png new file mode 100644 index 000000000..1ae490501 Binary files /dev/null and b/fonts/TewiFontOutline/20B3.png differ diff --git a/fonts/TewiFontOutline/20B5.png b/fonts/TewiFontOutline/20B5.png new file mode 100644 index 000000000..1ad263c18 Binary files /dev/null and b/fonts/TewiFontOutline/20B5.png differ diff --git a/fonts/TewiFontOutline/20B6.png b/fonts/TewiFontOutline/20B6.png new file mode 100644 index 000000000..79e68c6eb Binary files /dev/null and b/fonts/TewiFontOutline/20B6.png differ diff --git a/fonts/TewiFontOutline/20B8.png b/fonts/TewiFontOutline/20B8.png new file mode 100644 index 000000000..2c1ce2b1b Binary files /dev/null and b/fonts/TewiFontOutline/20B8.png differ diff --git a/fonts/TewiFontOutline/20B9.png b/fonts/TewiFontOutline/20B9.png new file mode 100644 index 000000000..13c1811a1 Binary files /dev/null and b/fonts/TewiFontOutline/20B9.png differ diff --git a/fonts/TewiFontOutline/20BA.png b/fonts/TewiFontOutline/20BA.png new file mode 100644 index 000000000..8a74d5082 Binary files /dev/null and b/fonts/TewiFontOutline/20BA.png differ diff --git a/fonts/TewiFontOutline/20BC.png b/fonts/TewiFontOutline/20BC.png new file mode 100644 index 000000000..d7ccbe784 Binary files /dev/null and b/fonts/TewiFontOutline/20BC.png differ diff --git a/fonts/TewiFontOutline/20BD.png b/fonts/TewiFontOutline/20BD.png new file mode 100644 index 000000000..2580e2b9f Binary files /dev/null and b/fonts/TewiFontOutline/20BD.png differ diff --git a/fonts/TewiFontOutline/2100.png b/fonts/TewiFontOutline/2100.png new file mode 100644 index 000000000..7be8d0b49 Binary files /dev/null and b/fonts/TewiFontOutline/2100.png differ diff --git a/fonts/TewiFontOutline/2101.png b/fonts/TewiFontOutline/2101.png new file mode 100644 index 000000000..0de4e8359 Binary files /dev/null and b/fonts/TewiFontOutline/2101.png differ diff --git a/fonts/TewiFontOutline/2102.png b/fonts/TewiFontOutline/2102.png new file mode 100644 index 000000000..2b9e64610 Binary files /dev/null and b/fonts/TewiFontOutline/2102.png differ diff --git a/fonts/TewiFontOutline/2103.png b/fonts/TewiFontOutline/2103.png new file mode 100644 index 000000000..22e265fce Binary files /dev/null and b/fonts/TewiFontOutline/2103.png differ diff --git a/fonts/TewiFontOutline/2104.png b/fonts/TewiFontOutline/2104.png new file mode 100644 index 000000000..de08a2a4e Binary files /dev/null and b/fonts/TewiFontOutline/2104.png differ diff --git a/fonts/TewiFontOutline/2105.png b/fonts/TewiFontOutline/2105.png new file mode 100644 index 000000000..09ff87e7b Binary files /dev/null and b/fonts/TewiFontOutline/2105.png differ diff --git a/fonts/TewiFontOutline/2106.png b/fonts/TewiFontOutline/2106.png new file mode 100644 index 000000000..3f00d793e Binary files /dev/null and b/fonts/TewiFontOutline/2106.png differ diff --git a/fonts/TewiFontOutline/2107.png b/fonts/TewiFontOutline/2107.png new file mode 100644 index 000000000..ae098b453 Binary files /dev/null and b/fonts/TewiFontOutline/2107.png differ diff --git a/fonts/TewiFontOutline/2108.png b/fonts/TewiFontOutline/2108.png new file mode 100644 index 000000000..460dd4655 Binary files /dev/null and b/fonts/TewiFontOutline/2108.png differ diff --git a/fonts/TewiFontOutline/2109.png b/fonts/TewiFontOutline/2109.png new file mode 100644 index 000000000..dc4cb107c Binary files /dev/null and b/fonts/TewiFontOutline/2109.png differ diff --git a/fonts/TewiFontOutline/210A.png b/fonts/TewiFontOutline/210A.png new file mode 100644 index 000000000..d63b53356 Binary files /dev/null and b/fonts/TewiFontOutline/210A.png differ diff --git a/fonts/TewiFontOutline/210B.png b/fonts/TewiFontOutline/210B.png new file mode 100644 index 000000000..32921cbe2 Binary files /dev/null and b/fonts/TewiFontOutline/210B.png differ diff --git a/fonts/TewiFontOutline/2116.png b/fonts/TewiFontOutline/2116.png new file mode 100644 index 000000000..107c346d8 Binary files /dev/null and b/fonts/TewiFontOutline/2116.png differ diff --git a/fonts/TewiFontOutline/2117.png b/fonts/TewiFontOutline/2117.png new file mode 100644 index 000000000..b66b9c518 Binary files /dev/null and b/fonts/TewiFontOutline/2117.png differ diff --git a/fonts/TewiFontOutline/2122.png b/fonts/TewiFontOutline/2122.png new file mode 100644 index 000000000..121dca448 Binary files /dev/null and b/fonts/TewiFontOutline/2122.png differ diff --git a/fonts/TewiFontOutline/2125.png b/fonts/TewiFontOutline/2125.png new file mode 100644 index 000000000..a468800f2 Binary files /dev/null and b/fonts/TewiFontOutline/2125.png differ diff --git a/fonts/TewiFontOutline/2126.png b/fonts/TewiFontOutline/2126.png new file mode 100644 index 000000000..6e48027ba Binary files /dev/null and b/fonts/TewiFontOutline/2126.png differ diff --git a/fonts/TewiFontOutline/2127.png b/fonts/TewiFontOutline/2127.png new file mode 100644 index 000000000..cb0cf0d97 Binary files /dev/null and b/fonts/TewiFontOutline/2127.png differ diff --git a/fonts/TewiFontOutline/212A.png b/fonts/TewiFontOutline/212A.png new file mode 100644 index 000000000..f8060a305 Binary files /dev/null and b/fonts/TewiFontOutline/212A.png differ diff --git a/fonts/TewiFontOutline/212B.png b/fonts/TewiFontOutline/212B.png new file mode 100644 index 000000000..e4b7891b2 Binary files /dev/null and b/fonts/TewiFontOutline/212B.png differ diff --git a/fonts/TewiFontOutline/212F.png b/fonts/TewiFontOutline/212F.png new file mode 100644 index 000000000..095061988 Binary files /dev/null and b/fonts/TewiFontOutline/212F.png differ diff --git a/fonts/TewiFontOutline/2133.png b/fonts/TewiFontOutline/2133.png new file mode 100644 index 000000000..e0d252344 Binary files /dev/null and b/fonts/TewiFontOutline/2133.png differ diff --git a/fonts/TewiFontOutline/2134.png b/fonts/TewiFontOutline/2134.png new file mode 100644 index 000000000..c352f3e9a Binary files /dev/null and b/fonts/TewiFontOutline/2134.png differ diff --git a/fonts/TewiFontOutline/2160.png b/fonts/TewiFontOutline/2160.png new file mode 100644 index 000000000..74977ffdb Binary files /dev/null and b/fonts/TewiFontOutline/2160.png differ diff --git a/fonts/TewiFontOutline/2161.png b/fonts/TewiFontOutline/2161.png new file mode 100644 index 000000000..66bcb8bbb Binary files /dev/null and b/fonts/TewiFontOutline/2161.png differ diff --git a/fonts/TewiFontOutline/2162.png b/fonts/TewiFontOutline/2162.png new file mode 100644 index 000000000..e0280a81a Binary files /dev/null and b/fonts/TewiFontOutline/2162.png differ diff --git a/fonts/TewiFontOutline/2163.png b/fonts/TewiFontOutline/2163.png new file mode 100644 index 000000000..3bfabb648 Binary files /dev/null and b/fonts/TewiFontOutline/2163.png differ diff --git a/fonts/TewiFontOutline/2164.png b/fonts/TewiFontOutline/2164.png new file mode 100644 index 000000000..e33fd6bf9 Binary files /dev/null and b/fonts/TewiFontOutline/2164.png differ diff --git a/fonts/TewiFontOutline/2165.png b/fonts/TewiFontOutline/2165.png new file mode 100644 index 000000000..a9a45a90a Binary files /dev/null and b/fonts/TewiFontOutline/2165.png differ diff --git a/fonts/TewiFontOutline/2166.png b/fonts/TewiFontOutline/2166.png new file mode 100644 index 000000000..807dbcb9b Binary files /dev/null and b/fonts/TewiFontOutline/2166.png differ diff --git a/fonts/TewiFontOutline/2168.png b/fonts/TewiFontOutline/2168.png new file mode 100644 index 000000000..451c7a0b5 Binary files /dev/null and b/fonts/TewiFontOutline/2168.png differ diff --git a/fonts/TewiFontOutline/2169.png b/fonts/TewiFontOutline/2169.png new file mode 100644 index 000000000..faaec77d4 Binary files /dev/null and b/fonts/TewiFontOutline/2169.png differ diff --git a/fonts/TewiFontOutline/216A.png b/fonts/TewiFontOutline/216A.png new file mode 100644 index 000000000..e9773e132 Binary files /dev/null and b/fonts/TewiFontOutline/216A.png differ diff --git a/fonts/TewiFontOutline/216B.png b/fonts/TewiFontOutline/216B.png new file mode 100644 index 000000000..cecb25799 Binary files /dev/null and b/fonts/TewiFontOutline/216B.png differ diff --git a/fonts/TewiFontOutline/216C.png b/fonts/TewiFontOutline/216C.png new file mode 100644 index 000000000..a216844c0 Binary files /dev/null and b/fonts/TewiFontOutline/216C.png differ diff --git a/fonts/TewiFontOutline/216D.png b/fonts/TewiFontOutline/216D.png new file mode 100644 index 000000000..997e5e8e2 Binary files /dev/null and b/fonts/TewiFontOutline/216D.png differ diff --git a/fonts/TewiFontOutline/216E.png b/fonts/TewiFontOutline/216E.png new file mode 100644 index 000000000..2d9d5de38 Binary files /dev/null and b/fonts/TewiFontOutline/216E.png differ diff --git a/fonts/TewiFontOutline/216F.png b/fonts/TewiFontOutline/216F.png new file mode 100644 index 000000000..ed0d7a72c Binary files /dev/null and b/fonts/TewiFontOutline/216F.png differ diff --git a/fonts/TewiFontOutline/2170.png b/fonts/TewiFontOutline/2170.png new file mode 100644 index 000000000..b0a3181f6 Binary files /dev/null and b/fonts/TewiFontOutline/2170.png differ diff --git a/fonts/TewiFontOutline/2171.png b/fonts/TewiFontOutline/2171.png new file mode 100644 index 000000000..18fbb4d2c Binary files /dev/null and b/fonts/TewiFontOutline/2171.png differ diff --git a/fonts/TewiFontOutline/2172.png b/fonts/TewiFontOutline/2172.png new file mode 100644 index 000000000..930e994a4 Binary files /dev/null and b/fonts/TewiFontOutline/2172.png differ diff --git a/fonts/TewiFontOutline/2173.png b/fonts/TewiFontOutline/2173.png new file mode 100644 index 000000000..f54dc99e9 Binary files /dev/null and b/fonts/TewiFontOutline/2173.png differ diff --git a/fonts/TewiFontOutline/2174.png b/fonts/TewiFontOutline/2174.png new file mode 100644 index 000000000..dd7184d81 Binary files /dev/null and b/fonts/TewiFontOutline/2174.png differ diff --git a/fonts/TewiFontOutline/2175.png b/fonts/TewiFontOutline/2175.png new file mode 100644 index 000000000..73dcd1c26 Binary files /dev/null and b/fonts/TewiFontOutline/2175.png differ diff --git a/fonts/TewiFontOutline/2176.png b/fonts/TewiFontOutline/2176.png new file mode 100644 index 000000000..99c079ec9 Binary files /dev/null and b/fonts/TewiFontOutline/2176.png differ diff --git a/fonts/TewiFontOutline/2178.png b/fonts/TewiFontOutline/2178.png new file mode 100644 index 000000000..1f3a1946c Binary files /dev/null and b/fonts/TewiFontOutline/2178.png differ diff --git a/fonts/TewiFontOutline/2179.png b/fonts/TewiFontOutline/2179.png new file mode 100644 index 000000000..bb2f37b66 Binary files /dev/null and b/fonts/TewiFontOutline/2179.png differ diff --git a/fonts/TewiFontOutline/217A.png b/fonts/TewiFontOutline/217A.png new file mode 100644 index 000000000..4eda5ddd2 Binary files /dev/null and b/fonts/TewiFontOutline/217A.png differ diff --git a/fonts/TewiFontOutline/217B.png b/fonts/TewiFontOutline/217B.png new file mode 100644 index 000000000..bf678f3d4 Binary files /dev/null and b/fonts/TewiFontOutline/217B.png differ diff --git a/fonts/TewiFontOutline/217C.png b/fonts/TewiFontOutline/217C.png new file mode 100644 index 000000000..11819c845 Binary files /dev/null and b/fonts/TewiFontOutline/217C.png differ diff --git a/fonts/TewiFontOutline/217D.png b/fonts/TewiFontOutline/217D.png new file mode 100644 index 000000000..ab991f840 Binary files /dev/null and b/fonts/TewiFontOutline/217D.png differ diff --git a/fonts/TewiFontOutline/217E.png b/fonts/TewiFontOutline/217E.png new file mode 100644 index 000000000..cdfee703d Binary files /dev/null and b/fonts/TewiFontOutline/217E.png differ diff --git a/fonts/TewiFontOutline/217F.png b/fonts/TewiFontOutline/217F.png new file mode 100644 index 000000000..c788fe8f3 Binary files /dev/null and b/fonts/TewiFontOutline/217F.png differ diff --git a/fonts/TewiFontOutline/2180.png b/fonts/TewiFontOutline/2180.png new file mode 100644 index 000000000..057fc5554 Binary files /dev/null and b/fonts/TewiFontOutline/2180.png differ diff --git a/fonts/TewiFontOutline/2183.png b/fonts/TewiFontOutline/2183.png new file mode 100644 index 000000000..29f3e3867 Binary files /dev/null and b/fonts/TewiFontOutline/2183.png differ diff --git a/fonts/TewiFontOutline/2190.png b/fonts/TewiFontOutline/2190.png new file mode 100644 index 000000000..39403a7f5 Binary files /dev/null and b/fonts/TewiFontOutline/2190.png differ diff --git a/fonts/TewiFontOutline/2191.png b/fonts/TewiFontOutline/2191.png new file mode 100644 index 000000000..d8666887a Binary files /dev/null and b/fonts/TewiFontOutline/2191.png differ diff --git a/fonts/TewiFontOutline/2192.png b/fonts/TewiFontOutline/2192.png new file mode 100644 index 000000000..e845ff841 Binary files /dev/null and b/fonts/TewiFontOutline/2192.png differ diff --git a/fonts/TewiFontOutline/2193.png b/fonts/TewiFontOutline/2193.png new file mode 100644 index 000000000..6c75d59f2 Binary files /dev/null and b/fonts/TewiFontOutline/2193.png differ diff --git a/fonts/TewiFontOutline/2195.png b/fonts/TewiFontOutline/2195.png new file mode 100644 index 000000000..34f72d2f1 Binary files /dev/null and b/fonts/TewiFontOutline/2195.png differ diff --git a/fonts/TewiFontOutline/2196.png b/fonts/TewiFontOutline/2196.png new file mode 100644 index 000000000..87d44bd23 Binary files /dev/null and b/fonts/TewiFontOutline/2196.png differ diff --git a/fonts/TewiFontOutline/2197.png b/fonts/TewiFontOutline/2197.png new file mode 100644 index 000000000..4f82fb882 Binary files /dev/null and b/fonts/TewiFontOutline/2197.png differ diff --git a/fonts/TewiFontOutline/2198.png b/fonts/TewiFontOutline/2198.png new file mode 100644 index 000000000..2662b63e1 Binary files /dev/null and b/fonts/TewiFontOutline/2198.png differ diff --git a/fonts/TewiFontOutline/2199.png b/fonts/TewiFontOutline/2199.png new file mode 100644 index 000000000..087fab322 Binary files /dev/null and b/fonts/TewiFontOutline/2199.png differ diff --git a/fonts/TewiFontOutline/219A.png b/fonts/TewiFontOutline/219A.png new file mode 100644 index 000000000..0f77f68c0 Binary files /dev/null and b/fonts/TewiFontOutline/219A.png differ diff --git a/fonts/TewiFontOutline/219B.png b/fonts/TewiFontOutline/219B.png new file mode 100644 index 000000000..30d3bd2b8 Binary files /dev/null and b/fonts/TewiFontOutline/219B.png differ diff --git a/fonts/TewiFontOutline/219C.png b/fonts/TewiFontOutline/219C.png new file mode 100644 index 000000000..cac758be5 Binary files /dev/null and b/fonts/TewiFontOutline/219C.png differ diff --git a/fonts/TewiFontOutline/219D.png b/fonts/TewiFontOutline/219D.png new file mode 100644 index 000000000..74156a54c Binary files /dev/null and b/fonts/TewiFontOutline/219D.png differ diff --git a/fonts/TewiFontOutline/219E.png b/fonts/TewiFontOutline/219E.png new file mode 100644 index 000000000..77b7dd8fc Binary files /dev/null and b/fonts/TewiFontOutline/219E.png differ diff --git a/fonts/TewiFontOutline/219F.png b/fonts/TewiFontOutline/219F.png new file mode 100644 index 000000000..370890d6e Binary files /dev/null and b/fonts/TewiFontOutline/219F.png differ diff --git a/fonts/TewiFontOutline/21A0.png b/fonts/TewiFontOutline/21A0.png new file mode 100644 index 000000000..9dfe7c9fb Binary files /dev/null and b/fonts/TewiFontOutline/21A0.png differ diff --git a/fonts/TewiFontOutline/21A1.png b/fonts/TewiFontOutline/21A1.png new file mode 100644 index 000000000..d3776d69a Binary files /dev/null and b/fonts/TewiFontOutline/21A1.png differ diff --git a/fonts/TewiFontOutline/21A2.png b/fonts/TewiFontOutline/21A2.png new file mode 100644 index 000000000..e9f9607c0 Binary files /dev/null and b/fonts/TewiFontOutline/21A2.png differ diff --git a/fonts/TewiFontOutline/21A3.png b/fonts/TewiFontOutline/21A3.png new file mode 100644 index 000000000..54d6e2a3d Binary files /dev/null and b/fonts/TewiFontOutline/21A3.png differ diff --git a/fonts/TewiFontOutline/21A4.png b/fonts/TewiFontOutline/21A4.png new file mode 100644 index 000000000..cb3c7e1cd Binary files /dev/null and b/fonts/TewiFontOutline/21A4.png differ diff --git a/fonts/TewiFontOutline/21A5.png b/fonts/TewiFontOutline/21A5.png new file mode 100644 index 000000000..601ba08c4 Binary files /dev/null and b/fonts/TewiFontOutline/21A5.png differ diff --git a/fonts/TewiFontOutline/21A6.png b/fonts/TewiFontOutline/21A6.png new file mode 100644 index 000000000..d90f8113b Binary files /dev/null and b/fonts/TewiFontOutline/21A6.png differ diff --git a/fonts/TewiFontOutline/21A7.png b/fonts/TewiFontOutline/21A7.png new file mode 100644 index 000000000..56fa7b9e3 Binary files /dev/null and b/fonts/TewiFontOutline/21A7.png differ diff --git a/fonts/TewiFontOutline/21A8.png b/fonts/TewiFontOutline/21A8.png new file mode 100644 index 000000000..a6ce478ec Binary files /dev/null and b/fonts/TewiFontOutline/21A8.png differ diff --git a/fonts/TewiFontOutline/21A9.png b/fonts/TewiFontOutline/21A9.png new file mode 100644 index 000000000..65313cb9b Binary files /dev/null and b/fonts/TewiFontOutline/21A9.png differ diff --git a/fonts/TewiFontOutline/21AA.png b/fonts/TewiFontOutline/21AA.png new file mode 100644 index 000000000..d67b7a7d6 Binary files /dev/null and b/fonts/TewiFontOutline/21AA.png differ diff --git a/fonts/TewiFontOutline/21AB.png b/fonts/TewiFontOutline/21AB.png new file mode 100644 index 000000000..0cf35aa23 Binary files /dev/null and b/fonts/TewiFontOutline/21AB.png differ diff --git a/fonts/TewiFontOutline/21AC.png b/fonts/TewiFontOutline/21AC.png new file mode 100644 index 000000000..ba3b2a4d5 Binary files /dev/null and b/fonts/TewiFontOutline/21AC.png differ diff --git a/fonts/TewiFontOutline/21AF.png b/fonts/TewiFontOutline/21AF.png new file mode 100644 index 000000000..ce5aa2ac7 Binary files /dev/null and b/fonts/TewiFontOutline/21AF.png differ diff --git a/fonts/TewiFontOutline/21B0.png b/fonts/TewiFontOutline/21B0.png new file mode 100644 index 000000000..ad1909253 Binary files /dev/null and b/fonts/TewiFontOutline/21B0.png differ diff --git a/fonts/TewiFontOutline/21B1.png b/fonts/TewiFontOutline/21B1.png new file mode 100644 index 000000000..62958e036 Binary files /dev/null and b/fonts/TewiFontOutline/21B1.png differ diff --git a/fonts/TewiFontOutline/21B2.png b/fonts/TewiFontOutline/21B2.png new file mode 100644 index 000000000..e38090e35 Binary files /dev/null and b/fonts/TewiFontOutline/21B2.png differ diff --git a/fonts/TewiFontOutline/21B3.png b/fonts/TewiFontOutline/21B3.png new file mode 100644 index 000000000..04b57041a Binary files /dev/null and b/fonts/TewiFontOutline/21B3.png differ diff --git a/fonts/TewiFontOutline/21B4.png b/fonts/TewiFontOutline/21B4.png new file mode 100644 index 000000000..48c8ccc56 Binary files /dev/null and b/fonts/TewiFontOutline/21B4.png differ diff --git a/fonts/TewiFontOutline/21B5.png b/fonts/TewiFontOutline/21B5.png new file mode 100644 index 000000000..c1539099e Binary files /dev/null and b/fonts/TewiFontOutline/21B5.png differ diff --git a/fonts/TewiFontOutline/21B6.png b/fonts/TewiFontOutline/21B6.png new file mode 100644 index 000000000..dd991491e Binary files /dev/null and b/fonts/TewiFontOutline/21B6.png differ diff --git a/fonts/TewiFontOutline/21B7.png b/fonts/TewiFontOutline/21B7.png new file mode 100644 index 000000000..5ad3b54bd Binary files /dev/null and b/fonts/TewiFontOutline/21B7.png differ diff --git a/fonts/TewiFontOutline/21B8.png b/fonts/TewiFontOutline/21B8.png new file mode 100644 index 000000000..0e4227d55 Binary files /dev/null and b/fonts/TewiFontOutline/21B8.png differ diff --git a/fonts/TewiFontOutline/21B9.png b/fonts/TewiFontOutline/21B9.png new file mode 100644 index 000000000..97ba494fe Binary files /dev/null and b/fonts/TewiFontOutline/21B9.png differ diff --git a/fonts/TewiFontOutline/21BA.png b/fonts/TewiFontOutline/21BA.png new file mode 100644 index 000000000..26cc18418 Binary files /dev/null and b/fonts/TewiFontOutline/21BA.png differ diff --git a/fonts/TewiFontOutline/21BB.png b/fonts/TewiFontOutline/21BB.png new file mode 100644 index 000000000..f7018a83c Binary files /dev/null and b/fonts/TewiFontOutline/21BB.png differ diff --git a/fonts/TewiFontOutline/21BC.png b/fonts/TewiFontOutline/21BC.png new file mode 100644 index 000000000..76d211364 Binary files /dev/null and b/fonts/TewiFontOutline/21BC.png differ diff --git a/fonts/TewiFontOutline/21BD.png b/fonts/TewiFontOutline/21BD.png new file mode 100644 index 000000000..97cfdfd6b Binary files /dev/null and b/fonts/TewiFontOutline/21BD.png differ diff --git a/fonts/TewiFontOutline/21BE.png b/fonts/TewiFontOutline/21BE.png new file mode 100644 index 000000000..94a075a1a Binary files /dev/null and b/fonts/TewiFontOutline/21BE.png differ diff --git a/fonts/TewiFontOutline/21BF.png b/fonts/TewiFontOutline/21BF.png new file mode 100644 index 000000000..f9e1a68aa Binary files /dev/null and b/fonts/TewiFontOutline/21BF.png differ diff --git a/fonts/TewiFontOutline/21C0.png b/fonts/TewiFontOutline/21C0.png new file mode 100644 index 000000000..187a2abea Binary files /dev/null and b/fonts/TewiFontOutline/21C0.png differ diff --git a/fonts/TewiFontOutline/21C1.png b/fonts/TewiFontOutline/21C1.png new file mode 100644 index 000000000..5511be203 Binary files /dev/null and b/fonts/TewiFontOutline/21C1.png differ diff --git a/fonts/TewiFontOutline/21C2.png b/fonts/TewiFontOutline/21C2.png new file mode 100644 index 000000000..8bdb4f050 Binary files /dev/null and b/fonts/TewiFontOutline/21C2.png differ diff --git a/fonts/TewiFontOutline/21C3.png b/fonts/TewiFontOutline/21C3.png new file mode 100644 index 000000000..2aad0710d Binary files /dev/null and b/fonts/TewiFontOutline/21C3.png differ diff --git a/fonts/TewiFontOutline/21C4.png b/fonts/TewiFontOutline/21C4.png new file mode 100644 index 000000000..612d017c5 Binary files /dev/null and b/fonts/TewiFontOutline/21C4.png differ diff --git a/fonts/TewiFontOutline/21C5.png b/fonts/TewiFontOutline/21C5.png new file mode 100644 index 000000000..326857d6c Binary files /dev/null and b/fonts/TewiFontOutline/21C5.png differ diff --git a/fonts/TewiFontOutline/21C6.png b/fonts/TewiFontOutline/21C6.png new file mode 100644 index 000000000..e54c79285 Binary files /dev/null and b/fonts/TewiFontOutline/21C6.png differ diff --git a/fonts/TewiFontOutline/21C7.png b/fonts/TewiFontOutline/21C7.png new file mode 100644 index 000000000..4a555b06d Binary files /dev/null and b/fonts/TewiFontOutline/21C7.png differ diff --git a/fonts/TewiFontOutline/21C8.png b/fonts/TewiFontOutline/21C8.png new file mode 100644 index 000000000..8d7c013c2 Binary files /dev/null and b/fonts/TewiFontOutline/21C8.png differ diff --git a/fonts/TewiFontOutline/21C9.png b/fonts/TewiFontOutline/21C9.png new file mode 100644 index 000000000..ca520c822 Binary files /dev/null and b/fonts/TewiFontOutline/21C9.png differ diff --git a/fonts/TewiFontOutline/21CA.png b/fonts/TewiFontOutline/21CA.png new file mode 100644 index 000000000..98a3bcd5e Binary files /dev/null and b/fonts/TewiFontOutline/21CA.png differ diff --git a/fonts/TewiFontOutline/21CB.png b/fonts/TewiFontOutline/21CB.png new file mode 100644 index 000000000..e28e15bce Binary files /dev/null and b/fonts/TewiFontOutline/21CB.png differ diff --git a/fonts/TewiFontOutline/21CC.png b/fonts/TewiFontOutline/21CC.png new file mode 100644 index 000000000..a9dead2e5 Binary files /dev/null and b/fonts/TewiFontOutline/21CC.png differ diff --git a/fonts/TewiFontOutline/21CD.png b/fonts/TewiFontOutline/21CD.png new file mode 100644 index 000000000..7f55f6d9d Binary files /dev/null and b/fonts/TewiFontOutline/21CD.png differ diff --git a/fonts/TewiFontOutline/21CF.png b/fonts/TewiFontOutline/21CF.png new file mode 100644 index 000000000..3b880cbe5 Binary files /dev/null and b/fonts/TewiFontOutline/21CF.png differ diff --git a/fonts/TewiFontOutline/21D0.png b/fonts/TewiFontOutline/21D0.png new file mode 100644 index 000000000..d9d048580 Binary files /dev/null and b/fonts/TewiFontOutline/21D0.png differ diff --git a/fonts/TewiFontOutline/21D1.png b/fonts/TewiFontOutline/21D1.png new file mode 100644 index 000000000..9fdf8ffc2 Binary files /dev/null and b/fonts/TewiFontOutline/21D1.png differ diff --git a/fonts/TewiFontOutline/21D2.png b/fonts/TewiFontOutline/21D2.png new file mode 100644 index 000000000..cabad80b6 Binary files /dev/null and b/fonts/TewiFontOutline/21D2.png differ diff --git a/fonts/TewiFontOutline/21D3.png b/fonts/TewiFontOutline/21D3.png new file mode 100644 index 000000000..33034fb3c Binary files /dev/null and b/fonts/TewiFontOutline/21D3.png differ diff --git a/fonts/TewiFontOutline/21D5.png b/fonts/TewiFontOutline/21D5.png new file mode 100644 index 000000000..a3743de6d Binary files /dev/null and b/fonts/TewiFontOutline/21D5.png differ diff --git a/fonts/TewiFontOutline/21D6.png b/fonts/TewiFontOutline/21D6.png new file mode 100644 index 000000000..e722328fe Binary files /dev/null and b/fonts/TewiFontOutline/21D6.png differ diff --git a/fonts/TewiFontOutline/21D7.png b/fonts/TewiFontOutline/21D7.png new file mode 100644 index 000000000..7fb0d83a9 Binary files /dev/null and b/fonts/TewiFontOutline/21D7.png differ diff --git a/fonts/TewiFontOutline/21D8.png b/fonts/TewiFontOutline/21D8.png new file mode 100644 index 000000000..49a0fee4e Binary files /dev/null and b/fonts/TewiFontOutline/21D8.png differ diff --git a/fonts/TewiFontOutline/21D9.png b/fonts/TewiFontOutline/21D9.png new file mode 100644 index 000000000..a788a04a7 Binary files /dev/null and b/fonts/TewiFontOutline/21D9.png differ diff --git a/fonts/TewiFontOutline/21DA.png b/fonts/TewiFontOutline/21DA.png new file mode 100644 index 000000000..0c79c5f25 Binary files /dev/null and b/fonts/TewiFontOutline/21DA.png differ diff --git a/fonts/TewiFontOutline/21DB.png b/fonts/TewiFontOutline/21DB.png new file mode 100644 index 000000000..a469422fe Binary files /dev/null and b/fonts/TewiFontOutline/21DB.png differ diff --git a/fonts/TewiFontOutline/21DC.png b/fonts/TewiFontOutline/21DC.png new file mode 100644 index 000000000..6b394ff05 Binary files /dev/null and b/fonts/TewiFontOutline/21DC.png differ diff --git a/fonts/TewiFontOutline/21DD.png b/fonts/TewiFontOutline/21DD.png new file mode 100644 index 000000000..df13a4f2c Binary files /dev/null and b/fonts/TewiFontOutline/21DD.png differ diff --git a/fonts/TewiFontOutline/21DE.png b/fonts/TewiFontOutline/21DE.png new file mode 100644 index 000000000..3952a8532 Binary files /dev/null and b/fonts/TewiFontOutline/21DE.png differ diff --git a/fonts/TewiFontOutline/21DF.png b/fonts/TewiFontOutline/21DF.png new file mode 100644 index 000000000..876bc9a13 Binary files /dev/null and b/fonts/TewiFontOutline/21DF.png differ diff --git a/fonts/TewiFontOutline/21E0.png b/fonts/TewiFontOutline/21E0.png new file mode 100644 index 000000000..6f84ec775 Binary files /dev/null and b/fonts/TewiFontOutline/21E0.png differ diff --git a/fonts/TewiFontOutline/21E1.png b/fonts/TewiFontOutline/21E1.png new file mode 100644 index 000000000..b1fa5efe2 Binary files /dev/null and b/fonts/TewiFontOutline/21E1.png differ diff --git a/fonts/TewiFontOutline/21E2.png b/fonts/TewiFontOutline/21E2.png new file mode 100644 index 000000000..b44b0fada Binary files /dev/null and b/fonts/TewiFontOutline/21E2.png differ diff --git a/fonts/TewiFontOutline/21E3.png b/fonts/TewiFontOutline/21E3.png new file mode 100644 index 000000000..11d219268 Binary files /dev/null and b/fonts/TewiFontOutline/21E3.png differ diff --git a/fonts/TewiFontOutline/21E4.png b/fonts/TewiFontOutline/21E4.png new file mode 100644 index 000000000..e6ab447e5 Binary files /dev/null and b/fonts/TewiFontOutline/21E4.png differ diff --git a/fonts/TewiFontOutline/21E5.png b/fonts/TewiFontOutline/21E5.png new file mode 100644 index 000000000..22de06be8 Binary files /dev/null and b/fonts/TewiFontOutline/21E5.png differ diff --git a/fonts/TewiFontOutline/21E6.png b/fonts/TewiFontOutline/21E6.png new file mode 100644 index 000000000..5508156bf Binary files /dev/null and b/fonts/TewiFontOutline/21E6.png differ diff --git a/fonts/TewiFontOutline/21E7.png b/fonts/TewiFontOutline/21E7.png new file mode 100644 index 000000000..096e8cac8 Binary files /dev/null and b/fonts/TewiFontOutline/21E7.png differ diff --git a/fonts/TewiFontOutline/21E8.png b/fonts/TewiFontOutline/21E8.png new file mode 100644 index 000000000..ea35c6770 Binary files /dev/null and b/fonts/TewiFontOutline/21E8.png differ diff --git a/fonts/TewiFontOutline/21E9.png b/fonts/TewiFontOutline/21E9.png new file mode 100644 index 000000000..781998418 Binary files /dev/null and b/fonts/TewiFontOutline/21E9.png differ diff --git a/fonts/TewiFontOutline/21EA.png b/fonts/TewiFontOutline/21EA.png new file mode 100644 index 000000000..70ee44480 Binary files /dev/null and b/fonts/TewiFontOutline/21EA.png differ diff --git a/fonts/TewiFontOutline/21EB.png b/fonts/TewiFontOutline/21EB.png new file mode 100644 index 000000000..464517bff Binary files /dev/null and b/fonts/TewiFontOutline/21EB.png differ diff --git a/fonts/TewiFontOutline/21EC.png b/fonts/TewiFontOutline/21EC.png new file mode 100644 index 000000000..eb598d3b6 Binary files /dev/null and b/fonts/TewiFontOutline/21EC.png differ diff --git a/fonts/TewiFontOutline/21ED.png b/fonts/TewiFontOutline/21ED.png new file mode 100644 index 000000000..b0072f89e Binary files /dev/null and b/fonts/TewiFontOutline/21ED.png differ diff --git a/fonts/TewiFontOutline/21EE.png b/fonts/TewiFontOutline/21EE.png new file mode 100644 index 000000000..a2d64c3df Binary files /dev/null and b/fonts/TewiFontOutline/21EE.png differ diff --git a/fonts/TewiFontOutline/21EF.png b/fonts/TewiFontOutline/21EF.png new file mode 100644 index 000000000..eb598d3b6 Binary files /dev/null and b/fonts/TewiFontOutline/21EF.png differ diff --git a/fonts/TewiFontOutline/21F1.png b/fonts/TewiFontOutline/21F1.png new file mode 100644 index 000000000..0d39352f0 Binary files /dev/null and b/fonts/TewiFontOutline/21F1.png differ diff --git a/fonts/TewiFontOutline/21F2.png b/fonts/TewiFontOutline/21F2.png new file mode 100644 index 000000000..4dd5a3022 Binary files /dev/null and b/fonts/TewiFontOutline/21F2.png differ diff --git a/fonts/TewiFontOutline/21F3.png b/fonts/TewiFontOutline/21F3.png new file mode 100644 index 000000000..1f43b1842 Binary files /dev/null and b/fonts/TewiFontOutline/21F3.png differ diff --git a/fonts/TewiFontOutline/21F4.png b/fonts/TewiFontOutline/21F4.png new file mode 100644 index 000000000..47ddf7846 Binary files /dev/null and b/fonts/TewiFontOutline/21F4.png differ diff --git a/fonts/TewiFontOutline/21F5.png b/fonts/TewiFontOutline/21F5.png new file mode 100644 index 000000000..057dd5da3 Binary files /dev/null and b/fonts/TewiFontOutline/21F5.png differ diff --git a/fonts/TewiFontOutline/21F6.png b/fonts/TewiFontOutline/21F6.png new file mode 100644 index 000000000..6d103b361 Binary files /dev/null and b/fonts/TewiFontOutline/21F6.png differ diff --git a/fonts/TewiFontOutline/21F7.png b/fonts/TewiFontOutline/21F7.png new file mode 100644 index 000000000..f9b30bea3 Binary files /dev/null and b/fonts/TewiFontOutline/21F7.png differ diff --git a/fonts/TewiFontOutline/21F8.png b/fonts/TewiFontOutline/21F8.png new file mode 100644 index 000000000..c8f60b6a6 Binary files /dev/null and b/fonts/TewiFontOutline/21F8.png differ diff --git a/fonts/TewiFontOutline/21FA.png b/fonts/TewiFontOutline/21FA.png new file mode 100644 index 000000000..673229005 Binary files /dev/null and b/fonts/TewiFontOutline/21FA.png differ diff --git a/fonts/TewiFontOutline/21FD.png b/fonts/TewiFontOutline/21FD.png new file mode 100644 index 000000000..299221615 Binary files /dev/null and b/fonts/TewiFontOutline/21FD.png differ diff --git a/fonts/TewiFontOutline/21FE.png b/fonts/TewiFontOutline/21FE.png new file mode 100644 index 000000000..80bd19462 Binary files /dev/null and b/fonts/TewiFontOutline/21FE.png differ diff --git a/fonts/TewiFontOutline/2200.png b/fonts/TewiFontOutline/2200.png new file mode 100644 index 000000000..1743b05ba Binary files /dev/null and b/fonts/TewiFontOutline/2200.png differ diff --git a/fonts/TewiFontOutline/2201.png b/fonts/TewiFontOutline/2201.png new file mode 100644 index 000000000..351eb1402 Binary files /dev/null and b/fonts/TewiFontOutline/2201.png differ diff --git a/fonts/TewiFontOutline/2202.png b/fonts/TewiFontOutline/2202.png new file mode 100644 index 000000000..74273ebe2 Binary files /dev/null and b/fonts/TewiFontOutline/2202.png differ diff --git a/fonts/TewiFontOutline/2203.png b/fonts/TewiFontOutline/2203.png new file mode 100644 index 000000000..a0316ac5f Binary files /dev/null and b/fonts/TewiFontOutline/2203.png differ diff --git a/fonts/TewiFontOutline/2204.png b/fonts/TewiFontOutline/2204.png new file mode 100644 index 000000000..9b165cf1c Binary files /dev/null and b/fonts/TewiFontOutline/2204.png differ diff --git a/fonts/TewiFontOutline/2205.png b/fonts/TewiFontOutline/2205.png new file mode 100644 index 000000000..94a771893 Binary files /dev/null and b/fonts/TewiFontOutline/2205.png differ diff --git a/fonts/TewiFontOutline/2206.png b/fonts/TewiFontOutline/2206.png new file mode 100644 index 000000000..795ff097f Binary files /dev/null and b/fonts/TewiFontOutline/2206.png differ diff --git a/fonts/TewiFontOutline/2207.png b/fonts/TewiFontOutline/2207.png new file mode 100644 index 000000000..d07e2b454 Binary files /dev/null and b/fonts/TewiFontOutline/2207.png differ diff --git a/fonts/TewiFontOutline/2208.png b/fonts/TewiFontOutline/2208.png new file mode 100644 index 000000000..47763e280 Binary files /dev/null and b/fonts/TewiFontOutline/2208.png differ diff --git a/fonts/TewiFontOutline/2209.png b/fonts/TewiFontOutline/2209.png new file mode 100644 index 000000000..5700e3ade Binary files /dev/null and b/fonts/TewiFontOutline/2209.png differ diff --git a/fonts/TewiFontOutline/220A.png b/fonts/TewiFontOutline/220A.png new file mode 100644 index 000000000..55555bba9 Binary files /dev/null and b/fonts/TewiFontOutline/220A.png differ diff --git a/fonts/TewiFontOutline/220B.png b/fonts/TewiFontOutline/220B.png new file mode 100644 index 000000000..6a96e0f7f Binary files /dev/null and b/fonts/TewiFontOutline/220B.png differ diff --git a/fonts/TewiFontOutline/220C.png b/fonts/TewiFontOutline/220C.png new file mode 100644 index 000000000..6bc3fc980 Binary files /dev/null and b/fonts/TewiFontOutline/220C.png differ diff --git a/fonts/TewiFontOutline/220D.png b/fonts/TewiFontOutline/220D.png new file mode 100644 index 000000000..a56d4ea5e Binary files /dev/null and b/fonts/TewiFontOutline/220D.png differ diff --git a/fonts/TewiFontOutline/220E.png b/fonts/TewiFontOutline/220E.png new file mode 100644 index 000000000..f5fd61f62 Binary files /dev/null and b/fonts/TewiFontOutline/220E.png differ diff --git a/fonts/TewiFontOutline/220F.png b/fonts/TewiFontOutline/220F.png new file mode 100644 index 000000000..30ec83380 Binary files /dev/null and b/fonts/TewiFontOutline/220F.png differ diff --git a/fonts/TewiFontOutline/2210.png b/fonts/TewiFontOutline/2210.png new file mode 100644 index 000000000..018c43ec7 Binary files /dev/null and b/fonts/TewiFontOutline/2210.png differ diff --git a/fonts/TewiFontOutline/2211.png b/fonts/TewiFontOutline/2211.png new file mode 100644 index 000000000..893532bc9 Binary files /dev/null and b/fonts/TewiFontOutline/2211.png differ diff --git a/fonts/TewiFontOutline/2212.png b/fonts/TewiFontOutline/2212.png new file mode 100644 index 000000000..2c0d6328c Binary files /dev/null and b/fonts/TewiFontOutline/2212.png differ diff --git a/fonts/TewiFontOutline/2213.png b/fonts/TewiFontOutline/2213.png new file mode 100644 index 000000000..14959d7c8 Binary files /dev/null and b/fonts/TewiFontOutline/2213.png differ diff --git a/fonts/TewiFontOutline/2214.png b/fonts/TewiFontOutline/2214.png new file mode 100644 index 000000000..efb27d20f Binary files /dev/null and b/fonts/TewiFontOutline/2214.png differ diff --git a/fonts/TewiFontOutline/2215.png b/fonts/TewiFontOutline/2215.png new file mode 100644 index 000000000..12e3d4a56 Binary files /dev/null and b/fonts/TewiFontOutline/2215.png differ diff --git a/fonts/TewiFontOutline/2216.png b/fonts/TewiFontOutline/2216.png new file mode 100644 index 000000000..153047f52 Binary files /dev/null and b/fonts/TewiFontOutline/2216.png differ diff --git a/fonts/TewiFontOutline/2217.png b/fonts/TewiFontOutline/2217.png new file mode 100644 index 000000000..2a49ce070 Binary files /dev/null and b/fonts/TewiFontOutline/2217.png differ diff --git a/fonts/TewiFontOutline/2218.png b/fonts/TewiFontOutline/2218.png new file mode 100644 index 000000000..aa21a8b14 Binary files /dev/null and b/fonts/TewiFontOutline/2218.png differ diff --git a/fonts/TewiFontOutline/2219.png b/fonts/TewiFontOutline/2219.png new file mode 100644 index 000000000..b5030dc1c Binary files /dev/null and b/fonts/TewiFontOutline/2219.png differ diff --git a/fonts/TewiFontOutline/221A.png b/fonts/TewiFontOutline/221A.png new file mode 100644 index 000000000..781def15b Binary files /dev/null and b/fonts/TewiFontOutline/221A.png differ diff --git a/fonts/TewiFontOutline/221B.png b/fonts/TewiFontOutline/221B.png new file mode 100644 index 000000000..e1f92c163 Binary files /dev/null and b/fonts/TewiFontOutline/221B.png differ diff --git a/fonts/TewiFontOutline/221C.png b/fonts/TewiFontOutline/221C.png new file mode 100644 index 000000000..c51aba825 Binary files /dev/null and b/fonts/TewiFontOutline/221C.png differ diff --git a/fonts/TewiFontOutline/221D.png b/fonts/TewiFontOutline/221D.png new file mode 100644 index 000000000..cc7e07ebc Binary files /dev/null and b/fonts/TewiFontOutline/221D.png differ diff --git a/fonts/TewiFontOutline/221E.png b/fonts/TewiFontOutline/221E.png new file mode 100644 index 000000000..1cf43467d Binary files /dev/null and b/fonts/TewiFontOutline/221E.png differ diff --git a/fonts/TewiFontOutline/221F.png b/fonts/TewiFontOutline/221F.png new file mode 100644 index 000000000..24ac7f6a8 Binary files /dev/null and b/fonts/TewiFontOutline/221F.png differ diff --git a/fonts/TewiFontOutline/2220.png b/fonts/TewiFontOutline/2220.png new file mode 100644 index 000000000..f622b9c46 Binary files /dev/null and b/fonts/TewiFontOutline/2220.png differ diff --git a/fonts/TewiFontOutline/2221.png b/fonts/TewiFontOutline/2221.png new file mode 100644 index 000000000..29b78b4e4 Binary files /dev/null and b/fonts/TewiFontOutline/2221.png differ diff --git a/fonts/TewiFontOutline/2222.png b/fonts/TewiFontOutline/2222.png new file mode 100644 index 000000000..42831a28e Binary files /dev/null and b/fonts/TewiFontOutline/2222.png differ diff --git a/fonts/TewiFontOutline/2223.png b/fonts/TewiFontOutline/2223.png new file mode 100644 index 000000000..5baa29b90 Binary files /dev/null and b/fonts/TewiFontOutline/2223.png differ diff --git a/fonts/TewiFontOutline/2224.png b/fonts/TewiFontOutline/2224.png new file mode 100644 index 000000000..875cd5914 Binary files /dev/null and b/fonts/TewiFontOutline/2224.png differ diff --git a/fonts/TewiFontOutline/2225.png b/fonts/TewiFontOutline/2225.png new file mode 100644 index 000000000..5a1bce8b2 Binary files /dev/null and b/fonts/TewiFontOutline/2225.png differ diff --git a/fonts/TewiFontOutline/2226.png b/fonts/TewiFontOutline/2226.png new file mode 100644 index 000000000..917e4c9d3 Binary files /dev/null and b/fonts/TewiFontOutline/2226.png differ diff --git a/fonts/TewiFontOutline/2227.png b/fonts/TewiFontOutline/2227.png new file mode 100644 index 000000000..b2c829a06 Binary files /dev/null and b/fonts/TewiFontOutline/2227.png differ diff --git a/fonts/TewiFontOutline/2228.png b/fonts/TewiFontOutline/2228.png new file mode 100644 index 000000000..21fa24715 Binary files /dev/null and b/fonts/TewiFontOutline/2228.png differ diff --git a/fonts/TewiFontOutline/2229.png b/fonts/TewiFontOutline/2229.png new file mode 100644 index 000000000..74c7bb022 Binary files /dev/null and b/fonts/TewiFontOutline/2229.png differ diff --git a/fonts/TewiFontOutline/222A.png b/fonts/TewiFontOutline/222A.png new file mode 100644 index 000000000..bd84baa7a Binary files /dev/null and b/fonts/TewiFontOutline/222A.png differ diff --git a/fonts/TewiFontOutline/222B.png b/fonts/TewiFontOutline/222B.png new file mode 100644 index 000000000..a77d83dc8 Binary files /dev/null and b/fonts/TewiFontOutline/222B.png differ diff --git a/fonts/TewiFontOutline/222C.png b/fonts/TewiFontOutline/222C.png new file mode 100644 index 000000000..0176abec9 Binary files /dev/null and b/fonts/TewiFontOutline/222C.png differ diff --git a/fonts/TewiFontOutline/222E.png b/fonts/TewiFontOutline/222E.png new file mode 100644 index 000000000..be1a0b042 Binary files /dev/null and b/fonts/TewiFontOutline/222E.png differ diff --git a/fonts/TewiFontOutline/222F.png b/fonts/TewiFontOutline/222F.png new file mode 100644 index 000000000..d9533acaf Binary files /dev/null and b/fonts/TewiFontOutline/222F.png differ diff --git a/fonts/TewiFontOutline/2231.png b/fonts/TewiFontOutline/2231.png new file mode 100644 index 000000000..0f49ee4cb Binary files /dev/null and b/fonts/TewiFontOutline/2231.png differ diff --git a/fonts/TewiFontOutline/2232.png b/fonts/TewiFontOutline/2232.png new file mode 100644 index 000000000..1d6d2ef9d Binary files /dev/null and b/fonts/TewiFontOutline/2232.png differ diff --git a/fonts/TewiFontOutline/2233.png b/fonts/TewiFontOutline/2233.png new file mode 100644 index 000000000..e081c6d61 Binary files /dev/null and b/fonts/TewiFontOutline/2233.png differ diff --git a/fonts/TewiFontOutline/2234.png b/fonts/TewiFontOutline/2234.png new file mode 100644 index 000000000..3aeecc483 Binary files /dev/null and b/fonts/TewiFontOutline/2234.png differ diff --git a/fonts/TewiFontOutline/2235.png b/fonts/TewiFontOutline/2235.png new file mode 100644 index 000000000..d0b55cec3 Binary files /dev/null and b/fonts/TewiFontOutline/2235.png differ diff --git a/fonts/TewiFontOutline/2236.png b/fonts/TewiFontOutline/2236.png new file mode 100644 index 000000000..a4aa26243 Binary files /dev/null and b/fonts/TewiFontOutline/2236.png differ diff --git a/fonts/TewiFontOutline/2237.png b/fonts/TewiFontOutline/2237.png new file mode 100644 index 000000000..6458a57c6 Binary files /dev/null and b/fonts/TewiFontOutline/2237.png differ diff --git a/fonts/TewiFontOutline/2238.png b/fonts/TewiFontOutline/2238.png new file mode 100644 index 000000000..90fa3fa02 Binary files /dev/null and b/fonts/TewiFontOutline/2238.png differ diff --git a/fonts/TewiFontOutline/2239.png b/fonts/TewiFontOutline/2239.png new file mode 100644 index 000000000..289149558 Binary files /dev/null and b/fonts/TewiFontOutline/2239.png differ diff --git a/fonts/TewiFontOutline/223A.png b/fonts/TewiFontOutline/223A.png new file mode 100644 index 000000000..37e0d6b1c Binary files /dev/null and b/fonts/TewiFontOutline/223A.png differ diff --git a/fonts/TewiFontOutline/223B.png b/fonts/TewiFontOutline/223B.png new file mode 100644 index 000000000..fd924ac49 Binary files /dev/null and b/fonts/TewiFontOutline/223B.png differ diff --git a/fonts/TewiFontOutline/223C.png b/fonts/TewiFontOutline/223C.png new file mode 100644 index 000000000..8cc228371 Binary files /dev/null and b/fonts/TewiFontOutline/223C.png differ diff --git a/fonts/TewiFontOutline/223D.png b/fonts/TewiFontOutline/223D.png new file mode 100644 index 000000000..cf393025d Binary files /dev/null and b/fonts/TewiFontOutline/223D.png differ diff --git a/fonts/TewiFontOutline/223E.png b/fonts/TewiFontOutline/223E.png new file mode 100644 index 000000000..2f5641c80 Binary files /dev/null and b/fonts/TewiFontOutline/223E.png differ diff --git a/fonts/TewiFontOutline/223F.png b/fonts/TewiFontOutline/223F.png new file mode 100644 index 000000000..1c27f7af4 Binary files /dev/null and b/fonts/TewiFontOutline/223F.png differ diff --git a/fonts/TewiFontOutline/2240.png b/fonts/TewiFontOutline/2240.png new file mode 100644 index 000000000..1e0f04982 Binary files /dev/null and b/fonts/TewiFontOutline/2240.png differ diff --git a/fonts/TewiFontOutline/2241.png b/fonts/TewiFontOutline/2241.png new file mode 100644 index 000000000..7aa44d7d1 Binary files /dev/null and b/fonts/TewiFontOutline/2241.png differ diff --git a/fonts/TewiFontOutline/2242.png b/fonts/TewiFontOutline/2242.png new file mode 100644 index 000000000..2a03ff5bf Binary files /dev/null and b/fonts/TewiFontOutline/2242.png differ diff --git a/fonts/TewiFontOutline/2243.png b/fonts/TewiFontOutline/2243.png new file mode 100644 index 000000000..9e158c162 Binary files /dev/null and b/fonts/TewiFontOutline/2243.png differ diff --git a/fonts/TewiFontOutline/2244.png b/fonts/TewiFontOutline/2244.png new file mode 100644 index 000000000..3460bf6c0 Binary files /dev/null and b/fonts/TewiFontOutline/2244.png differ diff --git a/fonts/TewiFontOutline/2245.png b/fonts/TewiFontOutline/2245.png new file mode 100644 index 000000000..b8528d193 Binary files /dev/null and b/fonts/TewiFontOutline/2245.png differ diff --git a/fonts/TewiFontOutline/2246.png b/fonts/TewiFontOutline/2246.png new file mode 100644 index 000000000..287c3b646 Binary files /dev/null and b/fonts/TewiFontOutline/2246.png differ diff --git a/fonts/TewiFontOutline/2247.png b/fonts/TewiFontOutline/2247.png new file mode 100644 index 000000000..7517e6b69 Binary files /dev/null and b/fonts/TewiFontOutline/2247.png differ diff --git a/fonts/TewiFontOutline/2248.png b/fonts/TewiFontOutline/2248.png new file mode 100644 index 000000000..4d9fb7ac2 Binary files /dev/null and b/fonts/TewiFontOutline/2248.png differ diff --git a/fonts/TewiFontOutline/2249.png b/fonts/TewiFontOutline/2249.png new file mode 100644 index 000000000..a325d9a59 Binary files /dev/null and b/fonts/TewiFontOutline/2249.png differ diff --git a/fonts/TewiFontOutline/224A.png b/fonts/TewiFontOutline/224A.png new file mode 100644 index 000000000..02c4a5926 Binary files /dev/null and b/fonts/TewiFontOutline/224A.png differ diff --git a/fonts/TewiFontOutline/224B.png b/fonts/TewiFontOutline/224B.png new file mode 100644 index 000000000..0a2947416 Binary files /dev/null and b/fonts/TewiFontOutline/224B.png differ diff --git a/fonts/TewiFontOutline/224C.png b/fonts/TewiFontOutline/224C.png new file mode 100644 index 000000000..b8528d193 Binary files /dev/null and b/fonts/TewiFontOutline/224C.png differ diff --git a/fonts/TewiFontOutline/224D.png b/fonts/TewiFontOutline/224D.png new file mode 100644 index 000000000..b8df05220 Binary files /dev/null and b/fonts/TewiFontOutline/224D.png differ diff --git a/fonts/TewiFontOutline/224E.png b/fonts/TewiFontOutline/224E.png new file mode 100644 index 000000000..3655456c6 Binary files /dev/null and b/fonts/TewiFontOutline/224E.png differ diff --git a/fonts/TewiFontOutline/224F.png b/fonts/TewiFontOutline/224F.png new file mode 100644 index 000000000..7876f1dde Binary files /dev/null and b/fonts/TewiFontOutline/224F.png differ diff --git a/fonts/TewiFontOutline/2250.png b/fonts/TewiFontOutline/2250.png new file mode 100644 index 000000000..71719e45e Binary files /dev/null and b/fonts/TewiFontOutline/2250.png differ diff --git a/fonts/TewiFontOutline/2251.png b/fonts/TewiFontOutline/2251.png new file mode 100644 index 000000000..796721a41 Binary files /dev/null and b/fonts/TewiFontOutline/2251.png differ diff --git a/fonts/TewiFontOutline/2252.png b/fonts/TewiFontOutline/2252.png new file mode 100644 index 000000000..273a28b9d Binary files /dev/null and b/fonts/TewiFontOutline/2252.png differ diff --git a/fonts/TewiFontOutline/2253.png b/fonts/TewiFontOutline/2253.png new file mode 100644 index 000000000..eef76cf37 Binary files /dev/null and b/fonts/TewiFontOutline/2253.png differ diff --git a/fonts/TewiFontOutline/2254.png b/fonts/TewiFontOutline/2254.png new file mode 100644 index 000000000..b08bc234a Binary files /dev/null and b/fonts/TewiFontOutline/2254.png differ diff --git a/fonts/TewiFontOutline/2255.png b/fonts/TewiFontOutline/2255.png new file mode 100644 index 000000000..1e9cb7d4b Binary files /dev/null and b/fonts/TewiFontOutline/2255.png differ diff --git a/fonts/TewiFontOutline/2256.png b/fonts/TewiFontOutline/2256.png new file mode 100644 index 000000000..dbd1bb1dc Binary files /dev/null and b/fonts/TewiFontOutline/2256.png differ diff --git a/fonts/TewiFontOutline/2257.png b/fonts/TewiFontOutline/2257.png new file mode 100644 index 000000000..80ba74796 Binary files /dev/null and b/fonts/TewiFontOutline/2257.png differ diff --git a/fonts/TewiFontOutline/2258.png b/fonts/TewiFontOutline/2258.png new file mode 100644 index 000000000..d80e6a620 Binary files /dev/null and b/fonts/TewiFontOutline/2258.png differ diff --git a/fonts/TewiFontOutline/2259.png b/fonts/TewiFontOutline/2259.png new file mode 100644 index 000000000..430bc3f12 Binary files /dev/null and b/fonts/TewiFontOutline/2259.png differ diff --git a/fonts/TewiFontOutline/225A.png b/fonts/TewiFontOutline/225A.png new file mode 100644 index 000000000..22f10e13e Binary files /dev/null and b/fonts/TewiFontOutline/225A.png differ diff --git a/fonts/TewiFontOutline/225B.png b/fonts/TewiFontOutline/225B.png new file mode 100644 index 000000000..235a087de Binary files /dev/null and b/fonts/TewiFontOutline/225B.png differ diff --git a/fonts/TewiFontOutline/225C.png b/fonts/TewiFontOutline/225C.png new file mode 100644 index 000000000..8c092053c Binary files /dev/null and b/fonts/TewiFontOutline/225C.png differ diff --git a/fonts/TewiFontOutline/225E.png b/fonts/TewiFontOutline/225E.png new file mode 100644 index 000000000..b9f955c22 Binary files /dev/null and b/fonts/TewiFontOutline/225E.png differ diff --git a/fonts/TewiFontOutline/225F.png b/fonts/TewiFontOutline/225F.png new file mode 100644 index 000000000..20a1798df Binary files /dev/null and b/fonts/TewiFontOutline/225F.png differ diff --git a/fonts/TewiFontOutline/2260.png b/fonts/TewiFontOutline/2260.png new file mode 100644 index 000000000..edf78406c Binary files /dev/null and b/fonts/TewiFontOutline/2260.png differ diff --git a/fonts/TewiFontOutline/2261.png b/fonts/TewiFontOutline/2261.png new file mode 100644 index 000000000..d16ef6042 Binary files /dev/null and b/fonts/TewiFontOutline/2261.png differ diff --git a/fonts/TewiFontOutline/2262.png b/fonts/TewiFontOutline/2262.png new file mode 100644 index 000000000..b2b73b0f8 Binary files /dev/null and b/fonts/TewiFontOutline/2262.png differ diff --git a/fonts/TewiFontOutline/2263.png b/fonts/TewiFontOutline/2263.png new file mode 100644 index 000000000..6831c54be Binary files /dev/null and b/fonts/TewiFontOutline/2263.png differ diff --git a/fonts/TewiFontOutline/2264.png b/fonts/TewiFontOutline/2264.png new file mode 100644 index 000000000..ae27548c8 Binary files /dev/null and b/fonts/TewiFontOutline/2264.png differ diff --git a/fonts/TewiFontOutline/2265.png b/fonts/TewiFontOutline/2265.png new file mode 100644 index 000000000..f9fd125d9 Binary files /dev/null and b/fonts/TewiFontOutline/2265.png differ diff --git a/fonts/TewiFontOutline/2266.png b/fonts/TewiFontOutline/2266.png new file mode 100644 index 000000000..bc6653f0f Binary files /dev/null and b/fonts/TewiFontOutline/2266.png differ diff --git a/fonts/TewiFontOutline/2267.png b/fonts/TewiFontOutline/2267.png new file mode 100644 index 000000000..e8c690664 Binary files /dev/null and b/fonts/TewiFontOutline/2267.png differ diff --git a/fonts/TewiFontOutline/2268.png b/fonts/TewiFontOutline/2268.png new file mode 100644 index 000000000..01c900d50 Binary files /dev/null and b/fonts/TewiFontOutline/2268.png differ diff --git a/fonts/TewiFontOutline/2269.png b/fonts/TewiFontOutline/2269.png new file mode 100644 index 000000000..05bc07633 Binary files /dev/null and b/fonts/TewiFontOutline/2269.png differ diff --git a/fonts/TewiFontOutline/226A.png b/fonts/TewiFontOutline/226A.png new file mode 100644 index 000000000..c3255687b Binary files /dev/null and b/fonts/TewiFontOutline/226A.png differ diff --git a/fonts/TewiFontOutline/226B.png b/fonts/TewiFontOutline/226B.png new file mode 100644 index 000000000..ba6e31fd6 Binary files /dev/null and b/fonts/TewiFontOutline/226B.png differ diff --git a/fonts/TewiFontOutline/226C.png b/fonts/TewiFontOutline/226C.png new file mode 100644 index 000000000..b162d3cdf Binary files /dev/null and b/fonts/TewiFontOutline/226C.png differ diff --git a/fonts/TewiFontOutline/226D.png b/fonts/TewiFontOutline/226D.png new file mode 100644 index 000000000..2578ec683 Binary files /dev/null and b/fonts/TewiFontOutline/226D.png differ diff --git a/fonts/TewiFontOutline/226E.png b/fonts/TewiFontOutline/226E.png new file mode 100644 index 000000000..6bc96a594 Binary files /dev/null and b/fonts/TewiFontOutline/226E.png differ diff --git a/fonts/TewiFontOutline/226F.png b/fonts/TewiFontOutline/226F.png new file mode 100644 index 000000000..8ad458ec5 Binary files /dev/null and b/fonts/TewiFontOutline/226F.png differ diff --git a/fonts/TewiFontOutline/2270.png b/fonts/TewiFontOutline/2270.png new file mode 100644 index 000000000..495504bbc Binary files /dev/null and b/fonts/TewiFontOutline/2270.png differ diff --git a/fonts/TewiFontOutline/2271.png b/fonts/TewiFontOutline/2271.png new file mode 100644 index 000000000..1a4db08c7 Binary files /dev/null and b/fonts/TewiFontOutline/2271.png differ diff --git a/fonts/TewiFontOutline/2272.png b/fonts/TewiFontOutline/2272.png new file mode 100644 index 000000000..367115dd8 Binary files /dev/null and b/fonts/TewiFontOutline/2272.png differ diff --git a/fonts/TewiFontOutline/2273.png b/fonts/TewiFontOutline/2273.png new file mode 100644 index 000000000..ade66f352 Binary files /dev/null and b/fonts/TewiFontOutline/2273.png differ diff --git a/fonts/TewiFontOutline/2274.png b/fonts/TewiFontOutline/2274.png new file mode 100644 index 000000000..78fb8ee80 Binary files /dev/null and b/fonts/TewiFontOutline/2274.png differ diff --git a/fonts/TewiFontOutline/2275.png b/fonts/TewiFontOutline/2275.png new file mode 100644 index 000000000..6c48ba30d Binary files /dev/null and b/fonts/TewiFontOutline/2275.png differ diff --git a/fonts/TewiFontOutline/2276.png b/fonts/TewiFontOutline/2276.png new file mode 100644 index 000000000..b77d492ed Binary files /dev/null and b/fonts/TewiFontOutline/2276.png differ diff --git a/fonts/TewiFontOutline/2277.png b/fonts/TewiFontOutline/2277.png new file mode 100644 index 000000000..80cdff5cb Binary files /dev/null and b/fonts/TewiFontOutline/2277.png differ diff --git a/fonts/TewiFontOutline/2278.png b/fonts/TewiFontOutline/2278.png new file mode 100644 index 000000000..3711bcbdd Binary files /dev/null and b/fonts/TewiFontOutline/2278.png differ diff --git a/fonts/TewiFontOutline/2279.png b/fonts/TewiFontOutline/2279.png new file mode 100644 index 000000000..b464fc48e Binary files /dev/null and b/fonts/TewiFontOutline/2279.png differ diff --git a/fonts/TewiFontOutline/227A.png b/fonts/TewiFontOutline/227A.png new file mode 100644 index 000000000..9bcfe5cca Binary files /dev/null and b/fonts/TewiFontOutline/227A.png differ diff --git a/fonts/TewiFontOutline/227B.png b/fonts/TewiFontOutline/227B.png new file mode 100644 index 000000000..a51ad8543 Binary files /dev/null and b/fonts/TewiFontOutline/227B.png differ diff --git a/fonts/TewiFontOutline/227C.png b/fonts/TewiFontOutline/227C.png new file mode 100644 index 000000000..03dc75f8a Binary files /dev/null and b/fonts/TewiFontOutline/227C.png differ diff --git a/fonts/TewiFontOutline/227D.png b/fonts/TewiFontOutline/227D.png new file mode 100644 index 000000000..40bd0be2d Binary files /dev/null and b/fonts/TewiFontOutline/227D.png differ diff --git a/fonts/TewiFontOutline/227E.png b/fonts/TewiFontOutline/227E.png new file mode 100644 index 000000000..81d68c74c Binary files /dev/null and b/fonts/TewiFontOutline/227E.png differ diff --git a/fonts/TewiFontOutline/227F.png b/fonts/TewiFontOutline/227F.png new file mode 100644 index 000000000..8886b7f3a Binary files /dev/null and b/fonts/TewiFontOutline/227F.png differ diff --git a/fonts/TewiFontOutline/2280.png b/fonts/TewiFontOutline/2280.png new file mode 100644 index 000000000..714ad2def Binary files /dev/null and b/fonts/TewiFontOutline/2280.png differ diff --git a/fonts/TewiFontOutline/2281.png b/fonts/TewiFontOutline/2281.png new file mode 100644 index 000000000..18bd3440f Binary files /dev/null and b/fonts/TewiFontOutline/2281.png differ diff --git a/fonts/TewiFontOutline/2282.png b/fonts/TewiFontOutline/2282.png new file mode 100644 index 000000000..3593d9dc5 Binary files /dev/null and b/fonts/TewiFontOutline/2282.png differ diff --git a/fonts/TewiFontOutline/2283.png b/fonts/TewiFontOutline/2283.png new file mode 100644 index 000000000..a0e425e04 Binary files /dev/null and b/fonts/TewiFontOutline/2283.png differ diff --git a/fonts/TewiFontOutline/2284.png b/fonts/TewiFontOutline/2284.png new file mode 100644 index 000000000..025152ef0 Binary files /dev/null and b/fonts/TewiFontOutline/2284.png differ diff --git a/fonts/TewiFontOutline/2285.png b/fonts/TewiFontOutline/2285.png new file mode 100644 index 000000000..48090d89a Binary files /dev/null and b/fonts/TewiFontOutline/2285.png differ diff --git a/fonts/TewiFontOutline/2286.png b/fonts/TewiFontOutline/2286.png new file mode 100644 index 000000000..9ab6016f6 Binary files /dev/null and b/fonts/TewiFontOutline/2286.png differ diff --git a/fonts/TewiFontOutline/2287.png b/fonts/TewiFontOutline/2287.png new file mode 100644 index 000000000..6a2543bee Binary files /dev/null and b/fonts/TewiFontOutline/2287.png differ diff --git a/fonts/TewiFontOutline/2288.png b/fonts/TewiFontOutline/2288.png new file mode 100644 index 000000000..8886fad57 Binary files /dev/null and b/fonts/TewiFontOutline/2288.png differ diff --git a/fonts/TewiFontOutline/2289.png b/fonts/TewiFontOutline/2289.png new file mode 100644 index 000000000..337423d99 Binary files /dev/null and b/fonts/TewiFontOutline/2289.png differ diff --git a/fonts/TewiFontOutline/228A.png b/fonts/TewiFontOutline/228A.png new file mode 100644 index 000000000..541f9eb59 Binary files /dev/null and b/fonts/TewiFontOutline/228A.png differ diff --git a/fonts/TewiFontOutline/228B.png b/fonts/TewiFontOutline/228B.png new file mode 100644 index 000000000..236e94cf7 Binary files /dev/null and b/fonts/TewiFontOutline/228B.png differ diff --git a/fonts/TewiFontOutline/228C.png b/fonts/TewiFontOutline/228C.png new file mode 100644 index 000000000..8e27c584b Binary files /dev/null and b/fonts/TewiFontOutline/228C.png differ diff --git a/fonts/TewiFontOutline/228D.png b/fonts/TewiFontOutline/228D.png new file mode 100644 index 000000000..721ac5c9e Binary files /dev/null and b/fonts/TewiFontOutline/228D.png differ diff --git a/fonts/TewiFontOutline/228E.png b/fonts/TewiFontOutline/228E.png new file mode 100644 index 000000000..4c700c841 Binary files /dev/null and b/fonts/TewiFontOutline/228E.png differ diff --git a/fonts/TewiFontOutline/228F.png b/fonts/TewiFontOutline/228F.png new file mode 100644 index 000000000..900687d77 Binary files /dev/null and b/fonts/TewiFontOutline/228F.png differ diff --git a/fonts/TewiFontOutline/2290.png b/fonts/TewiFontOutline/2290.png new file mode 100644 index 000000000..c14601d09 Binary files /dev/null and b/fonts/TewiFontOutline/2290.png differ diff --git a/fonts/TewiFontOutline/2291.png b/fonts/TewiFontOutline/2291.png new file mode 100644 index 000000000..b3e0f8016 Binary files /dev/null and b/fonts/TewiFontOutline/2291.png differ diff --git a/fonts/TewiFontOutline/2292.png b/fonts/TewiFontOutline/2292.png new file mode 100644 index 000000000..b2c8c0072 Binary files /dev/null and b/fonts/TewiFontOutline/2292.png differ diff --git a/fonts/TewiFontOutline/2293.png b/fonts/TewiFontOutline/2293.png new file mode 100644 index 000000000..68bb4734c Binary files /dev/null and b/fonts/TewiFontOutline/2293.png differ diff --git a/fonts/TewiFontOutline/2294.png b/fonts/TewiFontOutline/2294.png new file mode 100644 index 000000000..9dedcdee6 Binary files /dev/null and b/fonts/TewiFontOutline/2294.png differ diff --git a/fonts/TewiFontOutline/2295.png b/fonts/TewiFontOutline/2295.png new file mode 100644 index 000000000..74e2c5f31 Binary files /dev/null and b/fonts/TewiFontOutline/2295.png differ diff --git a/fonts/TewiFontOutline/2296.png b/fonts/TewiFontOutline/2296.png new file mode 100644 index 000000000..59768ee5e Binary files /dev/null and b/fonts/TewiFontOutline/2296.png differ diff --git a/fonts/TewiFontOutline/2297.png b/fonts/TewiFontOutline/2297.png new file mode 100644 index 000000000..d52b2448e Binary files /dev/null and b/fonts/TewiFontOutline/2297.png differ diff --git a/fonts/TewiFontOutline/2298.png b/fonts/TewiFontOutline/2298.png new file mode 100644 index 000000000..dbd824016 Binary files /dev/null and b/fonts/TewiFontOutline/2298.png differ diff --git a/fonts/TewiFontOutline/2299.png b/fonts/TewiFontOutline/2299.png new file mode 100644 index 000000000..52f81f8a3 Binary files /dev/null and b/fonts/TewiFontOutline/2299.png differ diff --git a/fonts/TewiFontOutline/229B.png b/fonts/TewiFontOutline/229B.png new file mode 100644 index 000000000..52f81f8a3 Binary files /dev/null and b/fonts/TewiFontOutline/229B.png differ diff --git a/fonts/TewiFontOutline/229D.png b/fonts/TewiFontOutline/229D.png new file mode 100644 index 000000000..59768ee5e Binary files /dev/null and b/fonts/TewiFontOutline/229D.png differ diff --git a/fonts/TewiFontOutline/229E.png b/fonts/TewiFontOutline/229E.png new file mode 100644 index 000000000..a47fb36fe Binary files /dev/null and b/fonts/TewiFontOutline/229E.png differ diff --git a/fonts/TewiFontOutline/229F.png b/fonts/TewiFontOutline/229F.png new file mode 100644 index 000000000..e562365e3 Binary files /dev/null and b/fonts/TewiFontOutline/229F.png differ diff --git a/fonts/TewiFontOutline/22A0.png b/fonts/TewiFontOutline/22A0.png new file mode 100644 index 000000000..27993cf99 Binary files /dev/null and b/fonts/TewiFontOutline/22A0.png differ diff --git a/fonts/TewiFontOutline/22A1.png b/fonts/TewiFontOutline/22A1.png new file mode 100644 index 000000000..9441fb007 Binary files /dev/null and b/fonts/TewiFontOutline/22A1.png differ diff --git a/fonts/TewiFontOutline/22A2.png b/fonts/TewiFontOutline/22A2.png new file mode 100644 index 000000000..bcaa4989e Binary files /dev/null and b/fonts/TewiFontOutline/22A2.png differ diff --git a/fonts/TewiFontOutline/22A3.png b/fonts/TewiFontOutline/22A3.png new file mode 100644 index 000000000..b0cf19df7 Binary files /dev/null and b/fonts/TewiFontOutline/22A3.png differ diff --git a/fonts/TewiFontOutline/22A4.png b/fonts/TewiFontOutline/22A4.png new file mode 100644 index 000000000..8be20fd30 Binary files /dev/null and b/fonts/TewiFontOutline/22A4.png differ diff --git a/fonts/TewiFontOutline/22A5.png b/fonts/TewiFontOutline/22A5.png new file mode 100644 index 000000000..818a01637 Binary files /dev/null and b/fonts/TewiFontOutline/22A5.png differ diff --git a/fonts/TewiFontOutline/22A6.png b/fonts/TewiFontOutline/22A6.png new file mode 100644 index 000000000..e8962fe27 Binary files /dev/null and b/fonts/TewiFontOutline/22A6.png differ diff --git a/fonts/TewiFontOutline/22A7.png b/fonts/TewiFontOutline/22A7.png new file mode 100644 index 000000000..b98f19d2c Binary files /dev/null and b/fonts/TewiFontOutline/22A7.png differ diff --git a/fonts/TewiFontOutline/22A8.png b/fonts/TewiFontOutline/22A8.png new file mode 100644 index 000000000..30671644d Binary files /dev/null and b/fonts/TewiFontOutline/22A8.png differ diff --git a/fonts/TewiFontOutline/22A9.png b/fonts/TewiFontOutline/22A9.png new file mode 100644 index 000000000..33e539698 Binary files /dev/null and b/fonts/TewiFontOutline/22A9.png differ diff --git a/fonts/TewiFontOutline/22AA.png b/fonts/TewiFontOutline/22AA.png new file mode 100644 index 000000000..39999d8ee Binary files /dev/null and b/fonts/TewiFontOutline/22AA.png differ diff --git a/fonts/TewiFontOutline/22AB.png b/fonts/TewiFontOutline/22AB.png new file mode 100644 index 000000000..448fbe3d9 Binary files /dev/null and b/fonts/TewiFontOutline/22AB.png differ diff --git a/fonts/TewiFontOutline/22AC.png b/fonts/TewiFontOutline/22AC.png new file mode 100644 index 000000000..451727f69 Binary files /dev/null and b/fonts/TewiFontOutline/22AC.png differ diff --git a/fonts/TewiFontOutline/22AD.png b/fonts/TewiFontOutline/22AD.png new file mode 100644 index 000000000..b8f36d117 Binary files /dev/null and b/fonts/TewiFontOutline/22AD.png differ diff --git a/fonts/TewiFontOutline/22AE.png b/fonts/TewiFontOutline/22AE.png new file mode 100644 index 000000000..e2fb8a470 Binary files /dev/null and b/fonts/TewiFontOutline/22AE.png differ diff --git a/fonts/TewiFontOutline/22AF.png b/fonts/TewiFontOutline/22AF.png new file mode 100644 index 000000000..ea9762748 Binary files /dev/null and b/fonts/TewiFontOutline/22AF.png differ diff --git a/fonts/TewiFontOutline/22B0.png b/fonts/TewiFontOutline/22B0.png new file mode 100644 index 000000000..510994f26 Binary files /dev/null and b/fonts/TewiFontOutline/22B0.png differ diff --git a/fonts/TewiFontOutline/22B1.png b/fonts/TewiFontOutline/22B1.png new file mode 100644 index 000000000..c1347787e Binary files /dev/null and b/fonts/TewiFontOutline/22B1.png differ diff --git a/fonts/TewiFontOutline/22B2.png b/fonts/TewiFontOutline/22B2.png new file mode 100644 index 000000000..aa0b66a16 Binary files /dev/null and b/fonts/TewiFontOutline/22B2.png differ diff --git a/fonts/TewiFontOutline/22B3.png b/fonts/TewiFontOutline/22B3.png new file mode 100644 index 000000000..04e308593 Binary files /dev/null and b/fonts/TewiFontOutline/22B3.png differ diff --git a/fonts/TewiFontOutline/22B4.png b/fonts/TewiFontOutline/22B4.png new file mode 100644 index 000000000..eeb644ab1 Binary files /dev/null and b/fonts/TewiFontOutline/22B4.png differ diff --git a/fonts/TewiFontOutline/22B5.png b/fonts/TewiFontOutline/22B5.png new file mode 100644 index 000000000..a6f72f229 Binary files /dev/null and b/fonts/TewiFontOutline/22B5.png differ diff --git a/fonts/TewiFontOutline/22B6.png b/fonts/TewiFontOutline/22B6.png new file mode 100644 index 000000000..9687e033e Binary files /dev/null and b/fonts/TewiFontOutline/22B6.png differ diff --git a/fonts/TewiFontOutline/22B7.png b/fonts/TewiFontOutline/22B7.png new file mode 100644 index 000000000..116a3cfd3 Binary files /dev/null and b/fonts/TewiFontOutline/22B7.png differ diff --git a/fonts/TewiFontOutline/22B8.png b/fonts/TewiFontOutline/22B8.png new file mode 100644 index 000000000..703fcc301 Binary files /dev/null and b/fonts/TewiFontOutline/22B8.png differ diff --git a/fonts/TewiFontOutline/22B9.png b/fonts/TewiFontOutline/22B9.png new file mode 100644 index 000000000..165660aab Binary files /dev/null and b/fonts/TewiFontOutline/22B9.png differ diff --git a/fonts/TewiFontOutline/22BA.png b/fonts/TewiFontOutline/22BA.png new file mode 100644 index 000000000..935921437 Binary files /dev/null and b/fonts/TewiFontOutline/22BA.png differ diff --git a/fonts/TewiFontOutline/22BB.png b/fonts/TewiFontOutline/22BB.png new file mode 100644 index 000000000..357121199 Binary files /dev/null and b/fonts/TewiFontOutline/22BB.png differ diff --git a/fonts/TewiFontOutline/22BC.png b/fonts/TewiFontOutline/22BC.png new file mode 100644 index 000000000..d46298955 Binary files /dev/null and b/fonts/TewiFontOutline/22BC.png differ diff --git a/fonts/TewiFontOutline/22BD.png b/fonts/TewiFontOutline/22BD.png new file mode 100644 index 000000000..54a101b80 Binary files /dev/null and b/fonts/TewiFontOutline/22BD.png differ diff --git a/fonts/TewiFontOutline/22BE.png b/fonts/TewiFontOutline/22BE.png new file mode 100644 index 000000000..4ac0212a7 Binary files /dev/null and b/fonts/TewiFontOutline/22BE.png differ diff --git a/fonts/TewiFontOutline/22BF.png b/fonts/TewiFontOutline/22BF.png new file mode 100644 index 000000000..f795be35a Binary files /dev/null and b/fonts/TewiFontOutline/22BF.png differ diff --git a/fonts/TewiFontOutline/22C0.png b/fonts/TewiFontOutline/22C0.png new file mode 100644 index 000000000..274d17d71 Binary files /dev/null and b/fonts/TewiFontOutline/22C0.png differ diff --git a/fonts/TewiFontOutline/22C1.png b/fonts/TewiFontOutline/22C1.png new file mode 100644 index 000000000..3cca0c469 Binary files /dev/null and b/fonts/TewiFontOutline/22C1.png differ diff --git a/fonts/TewiFontOutline/22C2.png b/fonts/TewiFontOutline/22C2.png new file mode 100644 index 000000000..0f39796cd Binary files /dev/null and b/fonts/TewiFontOutline/22C2.png differ diff --git a/fonts/TewiFontOutline/22C3.png b/fonts/TewiFontOutline/22C3.png new file mode 100644 index 000000000..5c8b36395 Binary files /dev/null and b/fonts/TewiFontOutline/22C3.png differ diff --git a/fonts/TewiFontOutline/22C4.png b/fonts/TewiFontOutline/22C4.png new file mode 100644 index 000000000..30ab37a2e Binary files /dev/null and b/fonts/TewiFontOutline/22C4.png differ diff --git a/fonts/TewiFontOutline/22C5.png b/fonts/TewiFontOutline/22C5.png new file mode 100644 index 000000000..dfe257f66 Binary files /dev/null and b/fonts/TewiFontOutline/22C5.png differ diff --git a/fonts/TewiFontOutline/22C6.png b/fonts/TewiFontOutline/22C6.png new file mode 100644 index 000000000..23d524451 Binary files /dev/null and b/fonts/TewiFontOutline/22C6.png differ diff --git a/fonts/TewiFontOutline/22C7.png b/fonts/TewiFontOutline/22C7.png new file mode 100644 index 000000000..8dd608911 Binary files /dev/null and b/fonts/TewiFontOutline/22C7.png differ diff --git a/fonts/TewiFontOutline/22C8.png b/fonts/TewiFontOutline/22C8.png new file mode 100644 index 000000000..ed0d037c6 Binary files /dev/null and b/fonts/TewiFontOutline/22C8.png differ diff --git a/fonts/TewiFontOutline/22C9.png b/fonts/TewiFontOutline/22C9.png new file mode 100644 index 000000000..07be78111 Binary files /dev/null and b/fonts/TewiFontOutline/22C9.png differ diff --git a/fonts/TewiFontOutline/22CA.png b/fonts/TewiFontOutline/22CA.png new file mode 100644 index 000000000..34296adba Binary files /dev/null and b/fonts/TewiFontOutline/22CA.png differ diff --git a/fonts/TewiFontOutline/22CB.png b/fonts/TewiFontOutline/22CB.png new file mode 100644 index 000000000..d083cf204 Binary files /dev/null and b/fonts/TewiFontOutline/22CB.png differ diff --git a/fonts/TewiFontOutline/22CC.png b/fonts/TewiFontOutline/22CC.png new file mode 100644 index 000000000..8a895dedd Binary files /dev/null and b/fonts/TewiFontOutline/22CC.png differ diff --git a/fonts/TewiFontOutline/22CD.png b/fonts/TewiFontOutline/22CD.png new file mode 100644 index 000000000..37876b4dc Binary files /dev/null and b/fonts/TewiFontOutline/22CD.png differ diff --git a/fonts/TewiFontOutline/22CE.png b/fonts/TewiFontOutline/22CE.png new file mode 100644 index 000000000..f56405136 Binary files /dev/null and b/fonts/TewiFontOutline/22CE.png differ diff --git a/fonts/TewiFontOutline/22CF.png b/fonts/TewiFontOutline/22CF.png new file mode 100644 index 000000000..8264acb1e Binary files /dev/null and b/fonts/TewiFontOutline/22CF.png differ diff --git a/fonts/TewiFontOutline/22D0.png b/fonts/TewiFontOutline/22D0.png new file mode 100644 index 000000000..d8975f50e Binary files /dev/null and b/fonts/TewiFontOutline/22D0.png differ diff --git a/fonts/TewiFontOutline/22D1.png b/fonts/TewiFontOutline/22D1.png new file mode 100644 index 000000000..a4b26bcf8 Binary files /dev/null and b/fonts/TewiFontOutline/22D1.png differ diff --git a/fonts/TewiFontOutline/22D2.png b/fonts/TewiFontOutline/22D2.png new file mode 100644 index 000000000..084a80095 Binary files /dev/null and b/fonts/TewiFontOutline/22D2.png differ diff --git a/fonts/TewiFontOutline/22D3.png b/fonts/TewiFontOutline/22D3.png new file mode 100644 index 000000000..89d43f16f Binary files /dev/null and b/fonts/TewiFontOutline/22D3.png differ diff --git a/fonts/TewiFontOutline/22D4.png b/fonts/TewiFontOutline/22D4.png new file mode 100644 index 000000000..57030212f Binary files /dev/null and b/fonts/TewiFontOutline/22D4.png differ diff --git a/fonts/TewiFontOutline/22D5.png b/fonts/TewiFontOutline/22D5.png new file mode 100644 index 000000000..e20754f22 Binary files /dev/null and b/fonts/TewiFontOutline/22D5.png differ diff --git a/fonts/TewiFontOutline/22D6.png b/fonts/TewiFontOutline/22D6.png new file mode 100644 index 000000000..348686558 Binary files /dev/null and b/fonts/TewiFontOutline/22D6.png differ diff --git a/fonts/TewiFontOutline/22D7.png b/fonts/TewiFontOutline/22D7.png new file mode 100644 index 000000000..b2d045561 Binary files /dev/null and b/fonts/TewiFontOutline/22D7.png differ diff --git a/fonts/TewiFontOutline/22D8.png b/fonts/TewiFontOutline/22D8.png new file mode 100644 index 000000000..999a38226 Binary files /dev/null and b/fonts/TewiFontOutline/22D8.png differ diff --git a/fonts/TewiFontOutline/22D9.png b/fonts/TewiFontOutline/22D9.png new file mode 100644 index 000000000..e6b1c081a Binary files /dev/null and b/fonts/TewiFontOutline/22D9.png differ diff --git a/fonts/TewiFontOutline/22DA.png b/fonts/TewiFontOutline/22DA.png new file mode 100644 index 000000000..39a94c4f0 Binary files /dev/null and b/fonts/TewiFontOutline/22DA.png differ diff --git a/fonts/TewiFontOutline/22DB.png b/fonts/TewiFontOutline/22DB.png new file mode 100644 index 000000000..6df9efe19 Binary files /dev/null and b/fonts/TewiFontOutline/22DB.png differ diff --git a/fonts/TewiFontOutline/22DC.png b/fonts/TewiFontOutline/22DC.png new file mode 100644 index 000000000..094d36903 Binary files /dev/null and b/fonts/TewiFontOutline/22DC.png differ diff --git a/fonts/TewiFontOutline/22DD.png b/fonts/TewiFontOutline/22DD.png new file mode 100644 index 000000000..3d300ec41 Binary files /dev/null and b/fonts/TewiFontOutline/22DD.png differ diff --git a/fonts/TewiFontOutline/22DE.png b/fonts/TewiFontOutline/22DE.png new file mode 100644 index 000000000..b13a39a71 Binary files /dev/null and b/fonts/TewiFontOutline/22DE.png differ diff --git a/fonts/TewiFontOutline/22DF.png b/fonts/TewiFontOutline/22DF.png new file mode 100644 index 000000000..2145ad580 Binary files /dev/null and b/fonts/TewiFontOutline/22DF.png differ diff --git a/fonts/TewiFontOutline/22E0.png b/fonts/TewiFontOutline/22E0.png new file mode 100644 index 000000000..49be92407 Binary files /dev/null and b/fonts/TewiFontOutline/22E0.png differ diff --git a/fonts/TewiFontOutline/22E1.png b/fonts/TewiFontOutline/22E1.png new file mode 100644 index 000000000..5fba2e1cb Binary files /dev/null and b/fonts/TewiFontOutline/22E1.png differ diff --git a/fonts/TewiFontOutline/22E2.png b/fonts/TewiFontOutline/22E2.png new file mode 100644 index 000000000..e3335528d Binary files /dev/null and b/fonts/TewiFontOutline/22E2.png differ diff --git a/fonts/TewiFontOutline/22E3.png b/fonts/TewiFontOutline/22E3.png new file mode 100644 index 000000000..0cbe06a67 Binary files /dev/null and b/fonts/TewiFontOutline/22E3.png differ diff --git a/fonts/TewiFontOutline/22E4.png b/fonts/TewiFontOutline/22E4.png new file mode 100644 index 000000000..9a98d0d17 Binary files /dev/null and b/fonts/TewiFontOutline/22E4.png differ diff --git a/fonts/TewiFontOutline/22E5.png b/fonts/TewiFontOutline/22E5.png new file mode 100644 index 000000000..4830815a9 Binary files /dev/null and b/fonts/TewiFontOutline/22E5.png differ diff --git a/fonts/TewiFontOutline/22E6.png b/fonts/TewiFontOutline/22E6.png new file mode 100644 index 000000000..6e03c5ffe Binary files /dev/null and b/fonts/TewiFontOutline/22E6.png differ diff --git a/fonts/TewiFontOutline/22E7.png b/fonts/TewiFontOutline/22E7.png new file mode 100644 index 000000000..a84ab4ea5 Binary files /dev/null and b/fonts/TewiFontOutline/22E7.png differ diff --git a/fonts/TewiFontOutline/22E8.png b/fonts/TewiFontOutline/22E8.png new file mode 100644 index 000000000..91e7ac899 Binary files /dev/null and b/fonts/TewiFontOutline/22E8.png differ diff --git a/fonts/TewiFontOutline/22E9.png b/fonts/TewiFontOutline/22E9.png new file mode 100644 index 000000000..7b1bdee30 Binary files /dev/null and b/fonts/TewiFontOutline/22E9.png differ diff --git a/fonts/TewiFontOutline/22EA.png b/fonts/TewiFontOutline/22EA.png new file mode 100644 index 000000000..88afcade2 Binary files /dev/null and b/fonts/TewiFontOutline/22EA.png differ diff --git a/fonts/TewiFontOutline/22EB.png b/fonts/TewiFontOutline/22EB.png new file mode 100644 index 000000000..2356d354f Binary files /dev/null and b/fonts/TewiFontOutline/22EB.png differ diff --git a/fonts/TewiFontOutline/22EC.png b/fonts/TewiFontOutline/22EC.png new file mode 100644 index 000000000..f50376862 Binary files /dev/null and b/fonts/TewiFontOutline/22EC.png differ diff --git a/fonts/TewiFontOutline/22ED.png b/fonts/TewiFontOutline/22ED.png new file mode 100644 index 000000000..4aef6f4a5 Binary files /dev/null and b/fonts/TewiFontOutline/22ED.png differ diff --git a/fonts/TewiFontOutline/22EE.png b/fonts/TewiFontOutline/22EE.png new file mode 100644 index 000000000..75ae15e15 Binary files /dev/null and b/fonts/TewiFontOutline/22EE.png differ diff --git a/fonts/TewiFontOutline/22EF.png b/fonts/TewiFontOutline/22EF.png new file mode 100644 index 000000000..4045b64a2 Binary files /dev/null and b/fonts/TewiFontOutline/22EF.png differ diff --git a/fonts/TewiFontOutline/22F0.png b/fonts/TewiFontOutline/22F0.png new file mode 100644 index 000000000..d18dc27e9 Binary files /dev/null and b/fonts/TewiFontOutline/22F0.png differ diff --git a/fonts/TewiFontOutline/22F1.png b/fonts/TewiFontOutline/22F1.png new file mode 100644 index 000000000..4b1bda5bd Binary files /dev/null and b/fonts/TewiFontOutline/22F1.png differ diff --git a/fonts/TewiFontOutline/22F2.png b/fonts/TewiFontOutline/22F2.png new file mode 100644 index 000000000..a0b266f2d Binary files /dev/null and b/fonts/TewiFontOutline/22F2.png differ diff --git a/fonts/TewiFontOutline/22F3.png b/fonts/TewiFontOutline/22F3.png new file mode 100644 index 000000000..3ed0cdf90 Binary files /dev/null and b/fonts/TewiFontOutline/22F3.png differ diff --git a/fonts/TewiFontOutline/22F4.png b/fonts/TewiFontOutline/22F4.png new file mode 100644 index 000000000..3ed0cdf90 Binary files /dev/null and b/fonts/TewiFontOutline/22F4.png differ diff --git a/fonts/TewiFontOutline/22F5.png b/fonts/TewiFontOutline/22F5.png new file mode 100644 index 000000000..3ee35a2bd Binary files /dev/null and b/fonts/TewiFontOutline/22F5.png differ diff --git a/fonts/TewiFontOutline/22F6.png b/fonts/TewiFontOutline/22F6.png new file mode 100644 index 000000000..76d9420c5 Binary files /dev/null and b/fonts/TewiFontOutline/22F6.png differ diff --git a/fonts/TewiFontOutline/22F7.png b/fonts/TewiFontOutline/22F7.png new file mode 100644 index 000000000..5860a44f3 Binary files /dev/null and b/fonts/TewiFontOutline/22F7.png differ diff --git a/fonts/TewiFontOutline/22F8.png b/fonts/TewiFontOutline/22F8.png new file mode 100644 index 000000000..64ec4afbf Binary files /dev/null and b/fonts/TewiFontOutline/22F8.png differ diff --git a/fonts/TewiFontOutline/22F9.png b/fonts/TewiFontOutline/22F9.png new file mode 100644 index 000000000..eb277fec4 Binary files /dev/null and b/fonts/TewiFontOutline/22F9.png differ diff --git a/fonts/TewiFontOutline/22FA.png b/fonts/TewiFontOutline/22FA.png new file mode 100644 index 000000000..2b5cacd3b Binary files /dev/null and b/fonts/TewiFontOutline/22FA.png differ diff --git a/fonts/TewiFontOutline/22FB.png b/fonts/TewiFontOutline/22FB.png new file mode 100644 index 000000000..75cb02686 Binary files /dev/null and b/fonts/TewiFontOutline/22FB.png differ diff --git a/fonts/TewiFontOutline/22FC.png b/fonts/TewiFontOutline/22FC.png new file mode 100644 index 000000000..75cb02686 Binary files /dev/null and b/fonts/TewiFontOutline/22FC.png differ diff --git a/fonts/TewiFontOutline/22FD.png b/fonts/TewiFontOutline/22FD.png new file mode 100644 index 000000000..68a03ad4f Binary files /dev/null and b/fonts/TewiFontOutline/22FD.png differ diff --git a/fonts/TewiFontOutline/22FE.png b/fonts/TewiFontOutline/22FE.png new file mode 100644 index 000000000..17e238767 Binary files /dev/null and b/fonts/TewiFontOutline/22FE.png differ diff --git a/fonts/TewiFontOutline/22FF.png b/fonts/TewiFontOutline/22FF.png new file mode 100644 index 000000000..c25eee51c Binary files /dev/null and b/fonts/TewiFontOutline/22FF.png differ diff --git a/fonts/TewiFontOutline/2300.png b/fonts/TewiFontOutline/2300.png new file mode 100644 index 000000000..3df97f463 Binary files /dev/null and b/fonts/TewiFontOutline/2300.png differ diff --git a/fonts/TewiFontOutline/2301.png b/fonts/TewiFontOutline/2301.png new file mode 100644 index 000000000..e0e9391a9 Binary files /dev/null and b/fonts/TewiFontOutline/2301.png differ diff --git a/fonts/TewiFontOutline/2302.png b/fonts/TewiFontOutline/2302.png new file mode 100644 index 000000000..808130f82 Binary files /dev/null and b/fonts/TewiFontOutline/2302.png differ diff --git a/fonts/TewiFontOutline/2303.png b/fonts/TewiFontOutline/2303.png new file mode 100644 index 000000000..7e8f2a4fe Binary files /dev/null and b/fonts/TewiFontOutline/2303.png differ diff --git a/fonts/TewiFontOutline/2304.png b/fonts/TewiFontOutline/2304.png new file mode 100644 index 000000000..4386b3b36 Binary files /dev/null and b/fonts/TewiFontOutline/2304.png differ diff --git a/fonts/TewiFontOutline/2305.png b/fonts/TewiFontOutline/2305.png new file mode 100644 index 000000000..9b7aecad4 Binary files /dev/null and b/fonts/TewiFontOutline/2305.png differ diff --git a/fonts/TewiFontOutline/2306.png b/fonts/TewiFontOutline/2306.png new file mode 100644 index 000000000..c5ce68b00 Binary files /dev/null and b/fonts/TewiFontOutline/2306.png differ diff --git a/fonts/TewiFontOutline/2307.png b/fonts/TewiFontOutline/2307.png new file mode 100644 index 000000000..59c69d4d6 Binary files /dev/null and b/fonts/TewiFontOutline/2307.png differ diff --git a/fonts/TewiFontOutline/2308.png b/fonts/TewiFontOutline/2308.png new file mode 100644 index 000000000..2c3d160e5 Binary files /dev/null and b/fonts/TewiFontOutline/2308.png differ diff --git a/fonts/TewiFontOutline/2309.png b/fonts/TewiFontOutline/2309.png new file mode 100644 index 000000000..37a143225 Binary files /dev/null and b/fonts/TewiFontOutline/2309.png differ diff --git a/fonts/TewiFontOutline/230A.png b/fonts/TewiFontOutline/230A.png new file mode 100644 index 000000000..d77cfd65f Binary files /dev/null and b/fonts/TewiFontOutline/230A.png differ diff --git a/fonts/TewiFontOutline/230B.png b/fonts/TewiFontOutline/230B.png new file mode 100644 index 000000000..a280f1440 Binary files /dev/null and b/fonts/TewiFontOutline/230B.png differ diff --git a/fonts/TewiFontOutline/230C.png b/fonts/TewiFontOutline/230C.png new file mode 100644 index 000000000..3d26afb35 Binary files /dev/null and b/fonts/TewiFontOutline/230C.png differ diff --git a/fonts/TewiFontOutline/230D.png b/fonts/TewiFontOutline/230D.png new file mode 100644 index 000000000..86ee36a4d Binary files /dev/null and b/fonts/TewiFontOutline/230D.png differ diff --git a/fonts/TewiFontOutline/230E.png b/fonts/TewiFontOutline/230E.png new file mode 100644 index 000000000..bd584d10e Binary files /dev/null and b/fonts/TewiFontOutline/230E.png differ diff --git a/fonts/TewiFontOutline/230F.png b/fonts/TewiFontOutline/230F.png new file mode 100644 index 000000000..eb19e0170 Binary files /dev/null and b/fonts/TewiFontOutline/230F.png differ diff --git a/fonts/TewiFontOutline/2310.png b/fonts/TewiFontOutline/2310.png new file mode 100644 index 000000000..a185cc3d4 Binary files /dev/null and b/fonts/TewiFontOutline/2310.png differ diff --git a/fonts/TewiFontOutline/2311.png b/fonts/TewiFontOutline/2311.png new file mode 100644 index 000000000..521826d0b Binary files /dev/null and b/fonts/TewiFontOutline/2311.png differ diff --git a/fonts/TewiFontOutline/2312.png b/fonts/TewiFontOutline/2312.png new file mode 100644 index 000000000..a1b5d79c7 Binary files /dev/null and b/fonts/TewiFontOutline/2312.png differ diff --git a/fonts/TewiFontOutline/2313.png b/fonts/TewiFontOutline/2313.png new file mode 100644 index 000000000..4c9ac08fd Binary files /dev/null and b/fonts/TewiFontOutline/2313.png differ diff --git a/fonts/TewiFontOutline/2314.png b/fonts/TewiFontOutline/2314.png new file mode 100644 index 000000000..bb36ad614 Binary files /dev/null and b/fonts/TewiFontOutline/2314.png differ diff --git a/fonts/TewiFontOutline/2315.png b/fonts/TewiFontOutline/2315.png new file mode 100644 index 000000000..0951b66f9 Binary files /dev/null and b/fonts/TewiFontOutline/2315.png differ diff --git a/fonts/TewiFontOutline/2316.png b/fonts/TewiFontOutline/2316.png new file mode 100644 index 000000000..cb4e5d43d Binary files /dev/null and b/fonts/TewiFontOutline/2316.png differ diff --git a/fonts/TewiFontOutline/2317.png b/fonts/TewiFontOutline/2317.png new file mode 100644 index 000000000..367d0651f Binary files /dev/null and b/fonts/TewiFontOutline/2317.png differ diff --git a/fonts/TewiFontOutline/2318.png b/fonts/TewiFontOutline/2318.png new file mode 100644 index 000000000..624bd748e Binary files /dev/null and b/fonts/TewiFontOutline/2318.png differ diff --git a/fonts/TewiFontOutline/2319.png b/fonts/TewiFontOutline/2319.png new file mode 100644 index 000000000..60b487c18 Binary files /dev/null and b/fonts/TewiFontOutline/2319.png differ diff --git a/fonts/TewiFontOutline/231A.png b/fonts/TewiFontOutline/231A.png new file mode 100644 index 000000000..d70a258c5 Binary files /dev/null and b/fonts/TewiFontOutline/231A.png differ diff --git a/fonts/TewiFontOutline/231B.png b/fonts/TewiFontOutline/231B.png new file mode 100644 index 000000000..c1e3e6723 Binary files /dev/null and b/fonts/TewiFontOutline/231B.png differ diff --git a/fonts/TewiFontOutline/231C.png b/fonts/TewiFontOutline/231C.png new file mode 100644 index 000000000..bce1bedbf Binary files /dev/null and b/fonts/TewiFontOutline/231C.png differ diff --git a/fonts/TewiFontOutline/231D.png b/fonts/TewiFontOutline/231D.png new file mode 100644 index 000000000..e032cf205 Binary files /dev/null and b/fonts/TewiFontOutline/231D.png differ diff --git a/fonts/TewiFontOutline/231E.png b/fonts/TewiFontOutline/231E.png new file mode 100644 index 000000000..b322eb28c Binary files /dev/null and b/fonts/TewiFontOutline/231E.png differ diff --git a/fonts/TewiFontOutline/231F.png b/fonts/TewiFontOutline/231F.png new file mode 100644 index 000000000..56b902363 Binary files /dev/null and b/fonts/TewiFontOutline/231F.png differ diff --git a/fonts/TewiFontOutline/2320.png b/fonts/TewiFontOutline/2320.png new file mode 100644 index 000000000..6f41e3a9b Binary files /dev/null and b/fonts/TewiFontOutline/2320.png differ diff --git a/fonts/TewiFontOutline/2322.png b/fonts/TewiFontOutline/2322.png new file mode 100644 index 000000000..9eff284b7 Binary files /dev/null and b/fonts/TewiFontOutline/2322.png differ diff --git a/fonts/TewiFontOutline/2323.png b/fonts/TewiFontOutline/2323.png new file mode 100644 index 000000000..5256f9268 Binary files /dev/null and b/fonts/TewiFontOutline/2323.png differ diff --git a/fonts/TewiFontOutline/2324.png b/fonts/TewiFontOutline/2324.png new file mode 100644 index 000000000..989ac17b5 Binary files /dev/null and b/fonts/TewiFontOutline/2324.png differ diff --git a/fonts/TewiFontOutline/2325.png b/fonts/TewiFontOutline/2325.png new file mode 100644 index 000000000..d6b3a6c6b Binary files /dev/null and b/fonts/TewiFontOutline/2325.png differ diff --git a/fonts/TewiFontOutline/2326.png b/fonts/TewiFontOutline/2326.png new file mode 100644 index 000000000..377b2a1c5 Binary files /dev/null and b/fonts/TewiFontOutline/2326.png differ diff --git a/fonts/TewiFontOutline/2327.png b/fonts/TewiFontOutline/2327.png new file mode 100644 index 000000000..eac08d5b8 Binary files /dev/null and b/fonts/TewiFontOutline/2327.png differ diff --git a/fonts/TewiFontOutline/2328.png b/fonts/TewiFontOutline/2328.png new file mode 100644 index 000000000..cafbfff3b Binary files /dev/null and b/fonts/TewiFontOutline/2328.png differ diff --git a/fonts/TewiFontOutline/232B.png b/fonts/TewiFontOutline/232B.png new file mode 100644 index 000000000..d4b8bc233 Binary files /dev/null and b/fonts/TewiFontOutline/232B.png differ diff --git a/fonts/TewiFontOutline/232D.png b/fonts/TewiFontOutline/232D.png new file mode 100644 index 000000000..66d8ce0b1 Binary files /dev/null and b/fonts/TewiFontOutline/232D.png differ diff --git a/fonts/TewiFontOutline/232F.png b/fonts/TewiFontOutline/232F.png new file mode 100644 index 000000000..0ba8351bf Binary files /dev/null and b/fonts/TewiFontOutline/232F.png differ diff --git a/fonts/TewiFontOutline/2330.png b/fonts/TewiFontOutline/2330.png new file mode 100644 index 000000000..fdc27470c Binary files /dev/null and b/fonts/TewiFontOutline/2330.png differ diff --git a/fonts/TewiFontOutline/2331.png b/fonts/TewiFontOutline/2331.png new file mode 100644 index 000000000..ea610db08 Binary files /dev/null and b/fonts/TewiFontOutline/2331.png differ diff --git a/fonts/TewiFontOutline/2332.png b/fonts/TewiFontOutline/2332.png new file mode 100644 index 000000000..3c62ecf41 Binary files /dev/null and b/fonts/TewiFontOutline/2332.png differ diff --git a/fonts/TewiFontOutline/2333.png b/fonts/TewiFontOutline/2333.png new file mode 100644 index 000000000..10c1fdd6e Binary files /dev/null and b/fonts/TewiFontOutline/2333.png differ diff --git a/fonts/TewiFontOutline/2334.png b/fonts/TewiFontOutline/2334.png new file mode 100644 index 000000000..c1fb22acf Binary files /dev/null and b/fonts/TewiFontOutline/2334.png differ diff --git a/fonts/TewiFontOutline/2335.png b/fonts/TewiFontOutline/2335.png new file mode 100644 index 000000000..4386b3b36 Binary files /dev/null and b/fonts/TewiFontOutline/2335.png differ diff --git a/fonts/TewiFontOutline/2336.png b/fonts/TewiFontOutline/2336.png new file mode 100644 index 000000000..c02c9319d Binary files /dev/null and b/fonts/TewiFontOutline/2336.png differ diff --git a/fonts/TewiFontOutline/2337.png b/fonts/TewiFontOutline/2337.png new file mode 100644 index 000000000..7ca9831e2 Binary files /dev/null and b/fonts/TewiFontOutline/2337.png differ diff --git a/fonts/TewiFontOutline/2338.png b/fonts/TewiFontOutline/2338.png new file mode 100644 index 000000000..777f8dd9d Binary files /dev/null and b/fonts/TewiFontOutline/2338.png differ diff --git a/fonts/TewiFontOutline/2339.png b/fonts/TewiFontOutline/2339.png new file mode 100644 index 000000000..888794f4b Binary files /dev/null and b/fonts/TewiFontOutline/2339.png differ diff --git a/fonts/TewiFontOutline/233A.png b/fonts/TewiFontOutline/233A.png new file mode 100644 index 000000000..c06aa7e7f Binary files /dev/null and b/fonts/TewiFontOutline/233A.png differ diff --git a/fonts/TewiFontOutline/233B.png b/fonts/TewiFontOutline/233B.png new file mode 100644 index 000000000..21cbb0916 Binary files /dev/null and b/fonts/TewiFontOutline/233B.png differ diff --git a/fonts/TewiFontOutline/233C.png b/fonts/TewiFontOutline/233C.png new file mode 100644 index 000000000..aa0e23b39 Binary files /dev/null and b/fonts/TewiFontOutline/233C.png differ diff --git a/fonts/TewiFontOutline/233D.png b/fonts/TewiFontOutline/233D.png new file mode 100644 index 000000000..6c31df387 Binary files /dev/null and b/fonts/TewiFontOutline/233D.png differ diff --git a/fonts/TewiFontOutline/233E.png b/fonts/TewiFontOutline/233E.png new file mode 100644 index 000000000..84c61aa74 Binary files /dev/null and b/fonts/TewiFontOutline/233E.png differ diff --git a/fonts/TewiFontOutline/233F.png b/fonts/TewiFontOutline/233F.png new file mode 100644 index 000000000..1ee4f731c Binary files /dev/null and b/fonts/TewiFontOutline/233F.png differ diff --git a/fonts/TewiFontOutline/2340.png b/fonts/TewiFontOutline/2340.png new file mode 100644 index 000000000..99c149c9d Binary files /dev/null and b/fonts/TewiFontOutline/2340.png differ diff --git a/fonts/TewiFontOutline/2341.png b/fonts/TewiFontOutline/2341.png new file mode 100644 index 000000000..8ee80100d Binary files /dev/null and b/fonts/TewiFontOutline/2341.png differ diff --git a/fonts/TewiFontOutline/2342.png b/fonts/TewiFontOutline/2342.png new file mode 100644 index 000000000..1d4c96428 Binary files /dev/null and b/fonts/TewiFontOutline/2342.png differ diff --git a/fonts/TewiFontOutline/2343.png b/fonts/TewiFontOutline/2343.png new file mode 100644 index 000000000..d3b0eaa79 Binary files /dev/null and b/fonts/TewiFontOutline/2343.png differ diff --git a/fonts/TewiFontOutline/2344.png b/fonts/TewiFontOutline/2344.png new file mode 100644 index 000000000..fc31c9bd4 Binary files /dev/null and b/fonts/TewiFontOutline/2344.png differ diff --git a/fonts/TewiFontOutline/2345.png b/fonts/TewiFontOutline/2345.png new file mode 100644 index 000000000..7d38a4907 Binary files /dev/null and b/fonts/TewiFontOutline/2345.png differ diff --git a/fonts/TewiFontOutline/2346.png b/fonts/TewiFontOutline/2346.png new file mode 100644 index 000000000..24abd6ea1 Binary files /dev/null and b/fonts/TewiFontOutline/2346.png differ diff --git a/fonts/TewiFontOutline/2347.png b/fonts/TewiFontOutline/2347.png new file mode 100644 index 000000000..98c92ef91 Binary files /dev/null and b/fonts/TewiFontOutline/2347.png differ diff --git a/fonts/TewiFontOutline/2348.png b/fonts/TewiFontOutline/2348.png new file mode 100644 index 000000000..edc30c130 Binary files /dev/null and b/fonts/TewiFontOutline/2348.png differ diff --git a/fonts/TewiFontOutline/2349.png b/fonts/TewiFontOutline/2349.png new file mode 100644 index 000000000..556276a58 Binary files /dev/null and b/fonts/TewiFontOutline/2349.png differ diff --git a/fonts/TewiFontOutline/234A.png b/fonts/TewiFontOutline/234A.png new file mode 100644 index 000000000..b0e9a0029 Binary files /dev/null and b/fonts/TewiFontOutline/234A.png differ diff --git a/fonts/TewiFontOutline/234B.png b/fonts/TewiFontOutline/234B.png new file mode 100644 index 000000000..fcd8bee9b Binary files /dev/null and b/fonts/TewiFontOutline/234B.png differ diff --git a/fonts/TewiFontOutline/234C.png b/fonts/TewiFontOutline/234C.png new file mode 100644 index 000000000..879b401ac Binary files /dev/null and b/fonts/TewiFontOutline/234C.png differ diff --git a/fonts/TewiFontOutline/234D.png b/fonts/TewiFontOutline/234D.png new file mode 100644 index 000000000..dfdc02f6e Binary files /dev/null and b/fonts/TewiFontOutline/234D.png differ diff --git a/fonts/TewiFontOutline/234E.png b/fonts/TewiFontOutline/234E.png new file mode 100644 index 000000000..51607c61d Binary files /dev/null and b/fonts/TewiFontOutline/234E.png differ diff --git a/fonts/TewiFontOutline/234F.png b/fonts/TewiFontOutline/234F.png new file mode 100644 index 000000000..24781929e Binary files /dev/null and b/fonts/TewiFontOutline/234F.png differ diff --git a/fonts/TewiFontOutline/2350.png b/fonts/TewiFontOutline/2350.png new file mode 100644 index 000000000..3bae38f8b Binary files /dev/null and b/fonts/TewiFontOutline/2350.png differ diff --git a/fonts/TewiFontOutline/2351.png b/fonts/TewiFontOutline/2351.png new file mode 100644 index 000000000..878b5ad4c Binary files /dev/null and b/fonts/TewiFontOutline/2351.png differ diff --git a/fonts/TewiFontOutline/2352.png b/fonts/TewiFontOutline/2352.png new file mode 100644 index 000000000..5b11572d9 Binary files /dev/null and b/fonts/TewiFontOutline/2352.png differ diff --git a/fonts/TewiFontOutline/2353.png b/fonts/TewiFontOutline/2353.png new file mode 100644 index 000000000..62c2aada5 Binary files /dev/null and b/fonts/TewiFontOutline/2353.png differ diff --git a/fonts/TewiFontOutline/2354.png b/fonts/TewiFontOutline/2354.png new file mode 100644 index 000000000..bac400ba8 Binary files /dev/null and b/fonts/TewiFontOutline/2354.png differ diff --git a/fonts/TewiFontOutline/2355.png b/fonts/TewiFontOutline/2355.png new file mode 100644 index 000000000..f324d1292 Binary files /dev/null and b/fonts/TewiFontOutline/2355.png differ diff --git a/fonts/TewiFontOutline/2356.png b/fonts/TewiFontOutline/2356.png new file mode 100644 index 000000000..74741b3a0 Binary files /dev/null and b/fonts/TewiFontOutline/2356.png differ diff --git a/fonts/TewiFontOutline/2357.png b/fonts/TewiFontOutline/2357.png new file mode 100644 index 000000000..660f5f162 Binary files /dev/null and b/fonts/TewiFontOutline/2357.png differ diff --git a/fonts/TewiFontOutline/2358.png b/fonts/TewiFontOutline/2358.png new file mode 100644 index 000000000..8ca9d1652 Binary files /dev/null and b/fonts/TewiFontOutline/2358.png differ diff --git a/fonts/TewiFontOutline/2359.png b/fonts/TewiFontOutline/2359.png new file mode 100644 index 000000000..6100a38c5 Binary files /dev/null and b/fonts/TewiFontOutline/2359.png differ diff --git a/fonts/TewiFontOutline/235A.png b/fonts/TewiFontOutline/235A.png new file mode 100644 index 000000000..4616449a6 Binary files /dev/null and b/fonts/TewiFontOutline/235A.png differ diff --git a/fonts/TewiFontOutline/235B.png b/fonts/TewiFontOutline/235B.png new file mode 100644 index 000000000..c9a64d361 Binary files /dev/null and b/fonts/TewiFontOutline/235B.png differ diff --git a/fonts/TewiFontOutline/235C.png b/fonts/TewiFontOutline/235C.png new file mode 100644 index 000000000..638240a9a Binary files /dev/null and b/fonts/TewiFontOutline/235C.png differ diff --git a/fonts/TewiFontOutline/235D.png b/fonts/TewiFontOutline/235D.png new file mode 100644 index 000000000..79e8f2c80 Binary files /dev/null and b/fonts/TewiFontOutline/235D.png differ diff --git a/fonts/TewiFontOutline/235E.png b/fonts/TewiFontOutline/235E.png new file mode 100644 index 000000000..ea7a49aae Binary files /dev/null and b/fonts/TewiFontOutline/235E.png differ diff --git a/fonts/TewiFontOutline/235F.png b/fonts/TewiFontOutline/235F.png new file mode 100644 index 000000000..f7596c5bd Binary files /dev/null and b/fonts/TewiFontOutline/235F.png differ diff --git a/fonts/TewiFontOutline/2360.png b/fonts/TewiFontOutline/2360.png new file mode 100644 index 000000000..a8bf6c9ec Binary files /dev/null and b/fonts/TewiFontOutline/2360.png differ diff --git a/fonts/TewiFontOutline/2361.png b/fonts/TewiFontOutline/2361.png new file mode 100644 index 000000000..7fdd551c0 Binary files /dev/null and b/fonts/TewiFontOutline/2361.png differ diff --git a/fonts/TewiFontOutline/2362.png b/fonts/TewiFontOutline/2362.png new file mode 100644 index 000000000..bdf21fab8 Binary files /dev/null and b/fonts/TewiFontOutline/2362.png differ diff --git a/fonts/TewiFontOutline/2363.png b/fonts/TewiFontOutline/2363.png new file mode 100644 index 000000000..63a550e55 Binary files /dev/null and b/fonts/TewiFontOutline/2363.png differ diff --git a/fonts/TewiFontOutline/2364.png b/fonts/TewiFontOutline/2364.png new file mode 100644 index 000000000..221781515 Binary files /dev/null and b/fonts/TewiFontOutline/2364.png differ diff --git a/fonts/TewiFontOutline/2365.png b/fonts/TewiFontOutline/2365.png new file mode 100644 index 000000000..5c0f0b715 Binary files /dev/null and b/fonts/TewiFontOutline/2365.png differ diff --git a/fonts/TewiFontOutline/2366.png b/fonts/TewiFontOutline/2366.png new file mode 100644 index 000000000..37d50b605 Binary files /dev/null and b/fonts/TewiFontOutline/2366.png differ diff --git a/fonts/TewiFontOutline/2367.png b/fonts/TewiFontOutline/2367.png new file mode 100644 index 000000000..e0180b9a5 Binary files /dev/null and b/fonts/TewiFontOutline/2367.png differ diff --git a/fonts/TewiFontOutline/2368.png b/fonts/TewiFontOutline/2368.png new file mode 100644 index 000000000..a5caffa95 Binary files /dev/null and b/fonts/TewiFontOutline/2368.png differ diff --git a/fonts/TewiFontOutline/2369.png b/fonts/TewiFontOutline/2369.png new file mode 100644 index 000000000..e98e69dd8 Binary files /dev/null and b/fonts/TewiFontOutline/2369.png differ diff --git a/fonts/TewiFontOutline/236A.png b/fonts/TewiFontOutline/236A.png new file mode 100644 index 000000000..567ffc519 Binary files /dev/null and b/fonts/TewiFontOutline/236A.png differ diff --git a/fonts/TewiFontOutline/236B.png b/fonts/TewiFontOutline/236B.png new file mode 100644 index 000000000..3e4bdab07 Binary files /dev/null and b/fonts/TewiFontOutline/236B.png differ diff --git a/fonts/TewiFontOutline/236C.png b/fonts/TewiFontOutline/236C.png new file mode 100644 index 000000000..941b94338 Binary files /dev/null and b/fonts/TewiFontOutline/236C.png differ diff --git a/fonts/TewiFontOutline/236D.png b/fonts/TewiFontOutline/236D.png new file mode 100644 index 000000000..94b3ee0ba Binary files /dev/null and b/fonts/TewiFontOutline/236D.png differ diff --git a/fonts/TewiFontOutline/236E.png b/fonts/TewiFontOutline/236E.png new file mode 100644 index 000000000..7cdd524d0 Binary files /dev/null and b/fonts/TewiFontOutline/236E.png differ diff --git a/fonts/TewiFontOutline/236F.png b/fonts/TewiFontOutline/236F.png new file mode 100644 index 000000000..0702eca89 Binary files /dev/null and b/fonts/TewiFontOutline/236F.png differ diff --git a/fonts/TewiFontOutline/2370.png b/fonts/TewiFontOutline/2370.png new file mode 100644 index 000000000..aa7948253 Binary files /dev/null and b/fonts/TewiFontOutline/2370.png differ diff --git a/fonts/TewiFontOutline/2371.png b/fonts/TewiFontOutline/2371.png new file mode 100644 index 000000000..2e4ec8446 Binary files /dev/null and b/fonts/TewiFontOutline/2371.png differ diff --git a/fonts/TewiFontOutline/2372.png b/fonts/TewiFontOutline/2372.png new file mode 100644 index 000000000..615f31dc1 Binary files /dev/null and b/fonts/TewiFontOutline/2372.png differ diff --git a/fonts/TewiFontOutline/2373.png b/fonts/TewiFontOutline/2373.png new file mode 100644 index 000000000..dbe400455 Binary files /dev/null and b/fonts/TewiFontOutline/2373.png differ diff --git a/fonts/TewiFontOutline/2374.png b/fonts/TewiFontOutline/2374.png new file mode 100644 index 000000000..58d72a591 Binary files /dev/null and b/fonts/TewiFontOutline/2374.png differ diff --git a/fonts/TewiFontOutline/2375.png b/fonts/TewiFontOutline/2375.png new file mode 100644 index 000000000..ff056c1c4 Binary files /dev/null and b/fonts/TewiFontOutline/2375.png differ diff --git a/fonts/TewiFontOutline/2376.png b/fonts/TewiFontOutline/2376.png new file mode 100644 index 000000000..af09f3204 Binary files /dev/null and b/fonts/TewiFontOutline/2376.png differ diff --git a/fonts/TewiFontOutline/2377.png b/fonts/TewiFontOutline/2377.png new file mode 100644 index 000000000..567f3eaa1 Binary files /dev/null and b/fonts/TewiFontOutline/2377.png differ diff --git a/fonts/TewiFontOutline/2378.png b/fonts/TewiFontOutline/2378.png new file mode 100644 index 000000000..3f432ee53 Binary files /dev/null and b/fonts/TewiFontOutline/2378.png differ diff --git a/fonts/TewiFontOutline/2379.png b/fonts/TewiFontOutline/2379.png new file mode 100644 index 000000000..c2f9a2790 Binary files /dev/null and b/fonts/TewiFontOutline/2379.png differ diff --git a/fonts/TewiFontOutline/237A.png b/fonts/TewiFontOutline/237A.png new file mode 100644 index 000000000..af09f3204 Binary files /dev/null and b/fonts/TewiFontOutline/237A.png differ diff --git a/fonts/TewiFontOutline/237B.png b/fonts/TewiFontOutline/237B.png new file mode 100644 index 000000000..a4283774b Binary files /dev/null and b/fonts/TewiFontOutline/237B.png differ diff --git a/fonts/TewiFontOutline/237C.png b/fonts/TewiFontOutline/237C.png new file mode 100644 index 000000000..ea93cd246 Binary files /dev/null and b/fonts/TewiFontOutline/237C.png differ diff --git a/fonts/TewiFontOutline/237D.png b/fonts/TewiFontOutline/237D.png new file mode 100644 index 000000000..32d131e3f Binary files /dev/null and b/fonts/TewiFontOutline/237D.png differ diff --git a/fonts/TewiFontOutline/237E.png b/fonts/TewiFontOutline/237E.png new file mode 100644 index 000000000..e588264ef Binary files /dev/null and b/fonts/TewiFontOutline/237E.png differ diff --git a/fonts/TewiFontOutline/2380.png b/fonts/TewiFontOutline/2380.png new file mode 100644 index 000000000..05cd5e34c Binary files /dev/null and b/fonts/TewiFontOutline/2380.png differ diff --git a/fonts/TewiFontOutline/2388.png b/fonts/TewiFontOutline/2388.png new file mode 100644 index 000000000..dd70e6244 Binary files /dev/null and b/fonts/TewiFontOutline/2388.png differ diff --git a/fonts/TewiFontOutline/238B.png b/fonts/TewiFontOutline/238B.png new file mode 100644 index 000000000..3ca19c1e5 Binary files /dev/null and b/fonts/TewiFontOutline/238B.png differ diff --git a/fonts/TewiFontOutline/23BA.png b/fonts/TewiFontOutline/23BA.png new file mode 100644 index 000000000..7219b9606 Binary files /dev/null and b/fonts/TewiFontOutline/23BA.png differ diff --git a/fonts/TewiFontOutline/23BB.png b/fonts/TewiFontOutline/23BB.png new file mode 100644 index 000000000..45ea01396 Binary files /dev/null and b/fonts/TewiFontOutline/23BB.png differ diff --git a/fonts/TewiFontOutline/23BC.png b/fonts/TewiFontOutline/23BC.png new file mode 100644 index 000000000..578c70d7f Binary files /dev/null and b/fonts/TewiFontOutline/23BC.png differ diff --git a/fonts/TewiFontOutline/23BD.png b/fonts/TewiFontOutline/23BD.png new file mode 100644 index 000000000..9de49d893 Binary files /dev/null and b/fonts/TewiFontOutline/23BD.png differ diff --git a/fonts/TewiFontOutline/23E9.png b/fonts/TewiFontOutline/23E9.png new file mode 100644 index 000000000..771ac8a1b Binary files /dev/null and b/fonts/TewiFontOutline/23E9.png differ diff --git a/fonts/TewiFontOutline/23EA.png b/fonts/TewiFontOutline/23EA.png new file mode 100644 index 000000000..30ef54e99 Binary files /dev/null and b/fonts/TewiFontOutline/23EA.png differ diff --git a/fonts/TewiFontOutline/23EB.png b/fonts/TewiFontOutline/23EB.png new file mode 100644 index 000000000..1b4ad912f Binary files /dev/null and b/fonts/TewiFontOutline/23EB.png differ diff --git a/fonts/TewiFontOutline/23EC.png b/fonts/TewiFontOutline/23EC.png new file mode 100644 index 000000000..bc72ff569 Binary files /dev/null and b/fonts/TewiFontOutline/23EC.png differ diff --git a/fonts/TewiFontOutline/23ED.png b/fonts/TewiFontOutline/23ED.png new file mode 100644 index 000000000..0f6fa3998 Binary files /dev/null and b/fonts/TewiFontOutline/23ED.png differ diff --git a/fonts/TewiFontOutline/23EE.png b/fonts/TewiFontOutline/23EE.png new file mode 100644 index 000000000..3f39ae3d7 Binary files /dev/null and b/fonts/TewiFontOutline/23EE.png differ diff --git a/fonts/TewiFontOutline/23EF.png b/fonts/TewiFontOutline/23EF.png new file mode 100644 index 000000000..736ee2e14 Binary files /dev/null and b/fonts/TewiFontOutline/23EF.png differ diff --git a/fonts/TewiFontOutline/2408.png b/fonts/TewiFontOutline/2408.png new file mode 100644 index 000000000..411866de9 Binary files /dev/null and b/fonts/TewiFontOutline/2408.png differ diff --git a/fonts/TewiFontOutline/2409.png b/fonts/TewiFontOutline/2409.png new file mode 100644 index 000000000..50c65952c Binary files /dev/null and b/fonts/TewiFontOutline/2409.png differ diff --git a/fonts/TewiFontOutline/240A.png b/fonts/TewiFontOutline/240A.png new file mode 100644 index 000000000..f5928ac6a Binary files /dev/null and b/fonts/TewiFontOutline/240A.png differ diff --git a/fonts/TewiFontOutline/240B.png b/fonts/TewiFontOutline/240B.png new file mode 100644 index 000000000..48e0f3534 Binary files /dev/null and b/fonts/TewiFontOutline/240B.png differ diff --git a/fonts/TewiFontOutline/240C.png b/fonts/TewiFontOutline/240C.png new file mode 100644 index 000000000..e252ff382 Binary files /dev/null and b/fonts/TewiFontOutline/240C.png differ diff --git a/fonts/TewiFontOutline/240D.png b/fonts/TewiFontOutline/240D.png new file mode 100644 index 000000000..c90ea8461 Binary files /dev/null and b/fonts/TewiFontOutline/240D.png differ diff --git a/fonts/TewiFontOutline/240E.png b/fonts/TewiFontOutline/240E.png new file mode 100644 index 000000000..4ffc9f333 Binary files /dev/null and b/fonts/TewiFontOutline/240E.png differ diff --git a/fonts/TewiFontOutline/240F.png b/fonts/TewiFontOutline/240F.png new file mode 100644 index 000000000..8171b8808 Binary files /dev/null and b/fonts/TewiFontOutline/240F.png differ diff --git a/fonts/TewiFontOutline/2423.png b/fonts/TewiFontOutline/2423.png new file mode 100644 index 000000000..d6b274e2b Binary files /dev/null and b/fonts/TewiFontOutline/2423.png differ diff --git a/fonts/TewiFontOutline/2424.png b/fonts/TewiFontOutline/2424.png new file mode 100644 index 000000000..ede6f4918 Binary files /dev/null and b/fonts/TewiFontOutline/2424.png differ diff --git a/fonts/TewiFontOutline/2425.png b/fonts/TewiFontOutline/2425.png new file mode 100644 index 000000000..f067cc533 Binary files /dev/null and b/fonts/TewiFontOutline/2425.png differ diff --git a/fonts/TewiFontOutline/2426.png b/fonts/TewiFontOutline/2426.png new file mode 100644 index 000000000..a4e023b8f Binary files /dev/null and b/fonts/TewiFontOutline/2426.png differ diff --git a/fonts/TewiFontOutline/2440.png b/fonts/TewiFontOutline/2440.png new file mode 100644 index 000000000..a155f9fd5 Binary files /dev/null and b/fonts/TewiFontOutline/2440.png differ diff --git a/fonts/TewiFontOutline/2441.png b/fonts/TewiFontOutline/2441.png new file mode 100644 index 000000000..eca4520f1 Binary files /dev/null and b/fonts/TewiFontOutline/2441.png differ diff --git a/fonts/TewiFontOutline/2442.png b/fonts/TewiFontOutline/2442.png new file mode 100644 index 000000000..4ef1ef04a Binary files /dev/null and b/fonts/TewiFontOutline/2442.png differ diff --git a/fonts/TewiFontOutline/2443.png b/fonts/TewiFontOutline/2443.png new file mode 100644 index 000000000..e85e6c07e Binary files /dev/null and b/fonts/TewiFontOutline/2443.png differ diff --git a/fonts/TewiFontOutline/2444.png b/fonts/TewiFontOutline/2444.png new file mode 100644 index 000000000..82a4f7176 Binary files /dev/null and b/fonts/TewiFontOutline/2444.png differ diff --git a/fonts/TewiFontOutline/2445.png b/fonts/TewiFontOutline/2445.png new file mode 100644 index 000000000..43836dc73 Binary files /dev/null and b/fonts/TewiFontOutline/2445.png differ diff --git a/fonts/TewiFontOutline/2446.png b/fonts/TewiFontOutline/2446.png new file mode 100644 index 000000000..27227b635 Binary files /dev/null and b/fonts/TewiFontOutline/2446.png differ diff --git a/fonts/TewiFontOutline/2447.png b/fonts/TewiFontOutline/2447.png new file mode 100644 index 000000000..45228fd5e Binary files /dev/null and b/fonts/TewiFontOutline/2447.png differ diff --git a/fonts/TewiFontOutline/2448.png b/fonts/TewiFontOutline/2448.png new file mode 100644 index 000000000..ebd8b0d48 Binary files /dev/null and b/fonts/TewiFontOutline/2448.png differ diff --git a/fonts/TewiFontOutline/2449.png b/fonts/TewiFontOutline/2449.png new file mode 100644 index 000000000..7f487f932 Binary files /dev/null and b/fonts/TewiFontOutline/2449.png differ diff --git a/fonts/TewiFontOutline/244A.png b/fonts/TewiFontOutline/244A.png new file mode 100644 index 000000000..18818ecf7 Binary files /dev/null and b/fonts/TewiFontOutline/244A.png differ diff --git a/fonts/TewiFontOutline/2460.png b/fonts/TewiFontOutline/2460.png new file mode 100644 index 000000000..8a70d7bcc Binary files /dev/null and b/fonts/TewiFontOutline/2460.png differ diff --git a/fonts/TewiFontOutline/2461.png b/fonts/TewiFontOutline/2461.png new file mode 100644 index 000000000..07bb2a428 Binary files /dev/null and b/fonts/TewiFontOutline/2461.png differ diff --git a/fonts/TewiFontOutline/2462.png b/fonts/TewiFontOutline/2462.png new file mode 100644 index 000000000..9bd876e45 Binary files /dev/null and b/fonts/TewiFontOutline/2462.png differ diff --git a/fonts/TewiFontOutline/2463.png b/fonts/TewiFontOutline/2463.png new file mode 100644 index 000000000..3841c1246 Binary files /dev/null and b/fonts/TewiFontOutline/2463.png differ diff --git a/fonts/TewiFontOutline/2464.png b/fonts/TewiFontOutline/2464.png new file mode 100644 index 000000000..a1e8889d7 Binary files /dev/null and b/fonts/TewiFontOutline/2464.png differ diff --git a/fonts/TewiFontOutline/2465.png b/fonts/TewiFontOutline/2465.png new file mode 100644 index 000000000..fa7a4a3e2 Binary files /dev/null and b/fonts/TewiFontOutline/2465.png differ diff --git a/fonts/TewiFontOutline/2466.png b/fonts/TewiFontOutline/2466.png new file mode 100644 index 000000000..cf21e8cd7 Binary files /dev/null and b/fonts/TewiFontOutline/2466.png differ diff --git a/fonts/TewiFontOutline/2467.png b/fonts/TewiFontOutline/2467.png new file mode 100644 index 000000000..633529fd2 Binary files /dev/null and b/fonts/TewiFontOutline/2467.png differ diff --git a/fonts/TewiFontOutline/2468.png b/fonts/TewiFontOutline/2468.png new file mode 100644 index 000000000..b2f110d7e Binary files /dev/null and b/fonts/TewiFontOutline/2468.png differ diff --git a/fonts/TewiFontOutline/2469.png b/fonts/TewiFontOutline/2469.png new file mode 100644 index 000000000..a66d1a6d3 Binary files /dev/null and b/fonts/TewiFontOutline/2469.png differ diff --git a/fonts/TewiFontOutline/246A.png b/fonts/TewiFontOutline/246A.png new file mode 100644 index 000000000..83e2980a8 Binary files /dev/null and b/fonts/TewiFontOutline/246A.png differ diff --git a/fonts/TewiFontOutline/246B.png b/fonts/TewiFontOutline/246B.png new file mode 100644 index 000000000..f1ce09694 Binary files /dev/null and b/fonts/TewiFontOutline/246B.png differ diff --git a/fonts/TewiFontOutline/246C.png b/fonts/TewiFontOutline/246C.png new file mode 100644 index 000000000..3d48a48d7 Binary files /dev/null and b/fonts/TewiFontOutline/246C.png differ diff --git a/fonts/TewiFontOutline/246D.png b/fonts/TewiFontOutline/246D.png new file mode 100644 index 000000000..2bd89ed2c Binary files /dev/null and b/fonts/TewiFontOutline/246D.png differ diff --git a/fonts/TewiFontOutline/246E.png b/fonts/TewiFontOutline/246E.png new file mode 100644 index 000000000..ebe8f0bb7 Binary files /dev/null and b/fonts/TewiFontOutline/246E.png differ diff --git a/fonts/TewiFontOutline/246F.png b/fonts/TewiFontOutline/246F.png new file mode 100644 index 000000000..8a54c0c7c Binary files /dev/null and b/fonts/TewiFontOutline/246F.png differ diff --git a/fonts/TewiFontOutline/2470.png b/fonts/TewiFontOutline/2470.png new file mode 100644 index 000000000..9e692272d Binary files /dev/null and b/fonts/TewiFontOutline/2470.png differ diff --git a/fonts/TewiFontOutline/2471.png b/fonts/TewiFontOutline/2471.png new file mode 100644 index 000000000..9dc4e4706 Binary files /dev/null and b/fonts/TewiFontOutline/2471.png differ diff --git a/fonts/TewiFontOutline/2472.png b/fonts/TewiFontOutline/2472.png new file mode 100644 index 000000000..622f73251 Binary files /dev/null and b/fonts/TewiFontOutline/2472.png differ diff --git a/fonts/TewiFontOutline/2473.png b/fonts/TewiFontOutline/2473.png new file mode 100644 index 000000000..e0e3aebfa Binary files /dev/null and b/fonts/TewiFontOutline/2473.png differ diff --git a/fonts/TewiFontOutline/2474.png b/fonts/TewiFontOutline/2474.png new file mode 100644 index 000000000..1f05e4afb Binary files /dev/null and b/fonts/TewiFontOutline/2474.png differ diff --git a/fonts/TewiFontOutline/2475.png b/fonts/TewiFontOutline/2475.png new file mode 100644 index 000000000..0eba2f227 Binary files /dev/null and b/fonts/TewiFontOutline/2475.png differ diff --git a/fonts/TewiFontOutline/2476.png b/fonts/TewiFontOutline/2476.png new file mode 100644 index 000000000..eb42dd465 Binary files /dev/null and b/fonts/TewiFontOutline/2476.png differ diff --git a/fonts/TewiFontOutline/2477.png b/fonts/TewiFontOutline/2477.png new file mode 100644 index 000000000..3c35654b3 Binary files /dev/null and b/fonts/TewiFontOutline/2477.png differ diff --git a/fonts/TewiFontOutline/2478.png b/fonts/TewiFontOutline/2478.png new file mode 100644 index 000000000..a6b750f15 Binary files /dev/null and b/fonts/TewiFontOutline/2478.png differ diff --git a/fonts/TewiFontOutline/2479.png b/fonts/TewiFontOutline/2479.png new file mode 100644 index 000000000..c7418c4f8 Binary files /dev/null and b/fonts/TewiFontOutline/2479.png differ diff --git a/fonts/TewiFontOutline/247A.png b/fonts/TewiFontOutline/247A.png new file mode 100644 index 000000000..f9b1393cf Binary files /dev/null and b/fonts/TewiFontOutline/247A.png differ diff --git a/fonts/TewiFontOutline/247B.png b/fonts/TewiFontOutline/247B.png new file mode 100644 index 000000000..47a9d120e Binary files /dev/null and b/fonts/TewiFontOutline/247B.png differ diff --git a/fonts/TewiFontOutline/247C.png b/fonts/TewiFontOutline/247C.png new file mode 100644 index 000000000..dd1bc3628 Binary files /dev/null and b/fonts/TewiFontOutline/247C.png differ diff --git a/fonts/TewiFontOutline/247D.png b/fonts/TewiFontOutline/247D.png new file mode 100644 index 000000000..1b8326c69 Binary files /dev/null and b/fonts/TewiFontOutline/247D.png differ diff --git a/fonts/TewiFontOutline/247E.png b/fonts/TewiFontOutline/247E.png new file mode 100644 index 000000000..1ecbc1f83 Binary files /dev/null and b/fonts/TewiFontOutline/247E.png differ diff --git a/fonts/TewiFontOutline/247F.png b/fonts/TewiFontOutline/247F.png new file mode 100644 index 000000000..779cf238c Binary files /dev/null and b/fonts/TewiFontOutline/247F.png differ diff --git a/fonts/TewiFontOutline/2480.png b/fonts/TewiFontOutline/2480.png new file mode 100644 index 000000000..f8edb1a93 Binary files /dev/null and b/fonts/TewiFontOutline/2480.png differ diff --git a/fonts/TewiFontOutline/2481.png b/fonts/TewiFontOutline/2481.png new file mode 100644 index 000000000..e122aa751 Binary files /dev/null and b/fonts/TewiFontOutline/2481.png differ diff --git a/fonts/TewiFontOutline/2482.png b/fonts/TewiFontOutline/2482.png new file mode 100644 index 000000000..ba4c8eaf3 Binary files /dev/null and b/fonts/TewiFontOutline/2482.png differ diff --git a/fonts/TewiFontOutline/2483.png b/fonts/TewiFontOutline/2483.png new file mode 100644 index 000000000..3b2b1ee3f Binary files /dev/null and b/fonts/TewiFontOutline/2483.png differ diff --git a/fonts/TewiFontOutline/2484.png b/fonts/TewiFontOutline/2484.png new file mode 100644 index 000000000..7fbe0b54e Binary files /dev/null and b/fonts/TewiFontOutline/2484.png differ diff --git a/fonts/TewiFontOutline/2485.png b/fonts/TewiFontOutline/2485.png new file mode 100644 index 000000000..d03311475 Binary files /dev/null and b/fonts/TewiFontOutline/2485.png differ diff --git a/fonts/TewiFontOutline/2486.png b/fonts/TewiFontOutline/2486.png new file mode 100644 index 000000000..84acd780e Binary files /dev/null and b/fonts/TewiFontOutline/2486.png differ diff --git a/fonts/TewiFontOutline/2487.png b/fonts/TewiFontOutline/2487.png new file mode 100644 index 000000000..f945d230f Binary files /dev/null and b/fonts/TewiFontOutline/2487.png differ diff --git a/fonts/TewiFontOutline/2488.png b/fonts/TewiFontOutline/2488.png new file mode 100644 index 000000000..8df885b70 Binary files /dev/null and b/fonts/TewiFontOutline/2488.png differ diff --git a/fonts/TewiFontOutline/2489.png b/fonts/TewiFontOutline/2489.png new file mode 100644 index 000000000..fbd2bb1a1 Binary files /dev/null and b/fonts/TewiFontOutline/2489.png differ diff --git a/fonts/TewiFontOutline/248A.png b/fonts/TewiFontOutline/248A.png new file mode 100644 index 000000000..959ecf787 Binary files /dev/null and b/fonts/TewiFontOutline/248A.png differ diff --git a/fonts/TewiFontOutline/248B.png b/fonts/TewiFontOutline/248B.png new file mode 100644 index 000000000..81a096bfb Binary files /dev/null and b/fonts/TewiFontOutline/248B.png differ diff --git a/fonts/TewiFontOutline/248C.png b/fonts/TewiFontOutline/248C.png new file mode 100644 index 000000000..2dad5cfe3 Binary files /dev/null and b/fonts/TewiFontOutline/248C.png differ diff --git a/fonts/TewiFontOutline/248D.png b/fonts/TewiFontOutline/248D.png new file mode 100644 index 000000000..feae5883d Binary files /dev/null and b/fonts/TewiFontOutline/248D.png differ diff --git a/fonts/TewiFontOutline/248E.png b/fonts/TewiFontOutline/248E.png new file mode 100644 index 000000000..05bb0c29b Binary files /dev/null and b/fonts/TewiFontOutline/248E.png differ diff --git a/fonts/TewiFontOutline/248F.png b/fonts/TewiFontOutline/248F.png new file mode 100644 index 000000000..fbaaeed7a Binary files /dev/null and b/fonts/TewiFontOutline/248F.png differ diff --git a/fonts/TewiFontOutline/2490.png b/fonts/TewiFontOutline/2490.png new file mode 100644 index 000000000..31493f4ca Binary files /dev/null and b/fonts/TewiFontOutline/2490.png differ diff --git a/fonts/TewiFontOutline/2491.png b/fonts/TewiFontOutline/2491.png new file mode 100644 index 000000000..6942abcc8 Binary files /dev/null and b/fonts/TewiFontOutline/2491.png differ diff --git a/fonts/TewiFontOutline/2492.png b/fonts/TewiFontOutline/2492.png new file mode 100644 index 000000000..416abafae Binary files /dev/null and b/fonts/TewiFontOutline/2492.png differ diff --git a/fonts/TewiFontOutline/2493.png b/fonts/TewiFontOutline/2493.png new file mode 100644 index 000000000..0ec3af893 Binary files /dev/null and b/fonts/TewiFontOutline/2493.png differ diff --git a/fonts/TewiFontOutline/2494.png b/fonts/TewiFontOutline/2494.png new file mode 100644 index 000000000..59449b45d Binary files /dev/null and b/fonts/TewiFontOutline/2494.png differ diff --git a/fonts/TewiFontOutline/2495.png b/fonts/TewiFontOutline/2495.png new file mode 100644 index 000000000..6c0961c4f Binary files /dev/null and b/fonts/TewiFontOutline/2495.png differ diff --git a/fonts/TewiFontOutline/2496.png b/fonts/TewiFontOutline/2496.png new file mode 100644 index 000000000..55a25a117 Binary files /dev/null and b/fonts/TewiFontOutline/2496.png differ diff --git a/fonts/TewiFontOutline/2497.png b/fonts/TewiFontOutline/2497.png new file mode 100644 index 000000000..f4306f7fe Binary files /dev/null and b/fonts/TewiFontOutline/2497.png differ diff --git a/fonts/TewiFontOutline/2498.png b/fonts/TewiFontOutline/2498.png new file mode 100644 index 000000000..ec40f468f Binary files /dev/null and b/fonts/TewiFontOutline/2498.png differ diff --git a/fonts/TewiFontOutline/2499.png b/fonts/TewiFontOutline/2499.png new file mode 100644 index 000000000..a632e3317 Binary files /dev/null and b/fonts/TewiFontOutline/2499.png differ diff --git a/fonts/TewiFontOutline/249A.png b/fonts/TewiFontOutline/249A.png new file mode 100644 index 000000000..f78aff0ab Binary files /dev/null and b/fonts/TewiFontOutline/249A.png differ diff --git a/fonts/TewiFontOutline/249B.png b/fonts/TewiFontOutline/249B.png new file mode 100644 index 000000000..5b16d65a8 Binary files /dev/null and b/fonts/TewiFontOutline/249B.png differ diff --git a/fonts/TewiFontOutline/249C.png b/fonts/TewiFontOutline/249C.png new file mode 100644 index 000000000..4ba57de52 Binary files /dev/null and b/fonts/TewiFontOutline/249C.png differ diff --git a/fonts/TewiFontOutline/249D.png b/fonts/TewiFontOutline/249D.png new file mode 100644 index 000000000..7359eb3cc Binary files /dev/null and b/fonts/TewiFontOutline/249D.png differ diff --git a/fonts/TewiFontOutline/249E.png b/fonts/TewiFontOutline/249E.png new file mode 100644 index 000000000..099857452 Binary files /dev/null and b/fonts/TewiFontOutline/249E.png differ diff --git a/fonts/TewiFontOutline/249F.png b/fonts/TewiFontOutline/249F.png new file mode 100644 index 000000000..8919d7d8b Binary files /dev/null and b/fonts/TewiFontOutline/249F.png differ diff --git a/fonts/TewiFontOutline/24A0.png b/fonts/TewiFontOutline/24A0.png new file mode 100644 index 000000000..b7b1f4c21 Binary files /dev/null and b/fonts/TewiFontOutline/24A0.png differ diff --git a/fonts/TewiFontOutline/24A1.png b/fonts/TewiFontOutline/24A1.png new file mode 100644 index 000000000..64f7deb10 Binary files /dev/null and b/fonts/TewiFontOutline/24A1.png differ diff --git a/fonts/TewiFontOutline/24A2.png b/fonts/TewiFontOutline/24A2.png new file mode 100644 index 000000000..11e21d6da Binary files /dev/null and b/fonts/TewiFontOutline/24A2.png differ diff --git a/fonts/TewiFontOutline/24A3.png b/fonts/TewiFontOutline/24A3.png new file mode 100644 index 000000000..896da27d4 Binary files /dev/null and b/fonts/TewiFontOutline/24A3.png differ diff --git a/fonts/TewiFontOutline/24A4.png b/fonts/TewiFontOutline/24A4.png new file mode 100644 index 000000000..9f7b70264 Binary files /dev/null and b/fonts/TewiFontOutline/24A4.png differ diff --git a/fonts/TewiFontOutline/24A5.png b/fonts/TewiFontOutline/24A5.png new file mode 100644 index 000000000..f095b9c23 Binary files /dev/null and b/fonts/TewiFontOutline/24A5.png differ diff --git a/fonts/TewiFontOutline/24A6.png b/fonts/TewiFontOutline/24A6.png new file mode 100644 index 000000000..d18674294 Binary files /dev/null and b/fonts/TewiFontOutline/24A6.png differ diff --git a/fonts/TewiFontOutline/24A7.png b/fonts/TewiFontOutline/24A7.png new file mode 100644 index 000000000..e506cb3fc Binary files /dev/null and b/fonts/TewiFontOutline/24A7.png differ diff --git a/fonts/TewiFontOutline/24A8.png b/fonts/TewiFontOutline/24A8.png new file mode 100644 index 000000000..f26555e76 Binary files /dev/null and b/fonts/TewiFontOutline/24A8.png differ diff --git a/fonts/TewiFontOutline/24A9.png b/fonts/TewiFontOutline/24A9.png new file mode 100644 index 000000000..2e954b8a5 Binary files /dev/null and b/fonts/TewiFontOutline/24A9.png differ diff --git a/fonts/TewiFontOutline/24AA.png b/fonts/TewiFontOutline/24AA.png new file mode 100644 index 000000000..8f77b8eef Binary files /dev/null and b/fonts/TewiFontOutline/24AA.png differ diff --git a/fonts/TewiFontOutline/24AB.png b/fonts/TewiFontOutline/24AB.png new file mode 100644 index 000000000..5e1e7e0da Binary files /dev/null and b/fonts/TewiFontOutline/24AB.png differ diff --git a/fonts/TewiFontOutline/24AC.png b/fonts/TewiFontOutline/24AC.png new file mode 100644 index 000000000..e7e7c1e69 Binary files /dev/null and b/fonts/TewiFontOutline/24AC.png differ diff --git a/fonts/TewiFontOutline/24AD.png b/fonts/TewiFontOutline/24AD.png new file mode 100644 index 000000000..923cd90df Binary files /dev/null and b/fonts/TewiFontOutline/24AD.png differ diff --git a/fonts/TewiFontOutline/24AE.png b/fonts/TewiFontOutline/24AE.png new file mode 100644 index 000000000..770f87a67 Binary files /dev/null and b/fonts/TewiFontOutline/24AE.png differ diff --git a/fonts/TewiFontOutline/24AF.png b/fonts/TewiFontOutline/24AF.png new file mode 100644 index 000000000..857bff775 Binary files /dev/null and b/fonts/TewiFontOutline/24AF.png differ diff --git a/fonts/TewiFontOutline/24B0.png b/fonts/TewiFontOutline/24B0.png new file mode 100644 index 000000000..07ff34d50 Binary files /dev/null and b/fonts/TewiFontOutline/24B0.png differ diff --git a/fonts/TewiFontOutline/24B1.png b/fonts/TewiFontOutline/24B1.png new file mode 100644 index 000000000..92e1a11e2 Binary files /dev/null and b/fonts/TewiFontOutline/24B1.png differ diff --git a/fonts/TewiFontOutline/24B2.png b/fonts/TewiFontOutline/24B2.png new file mode 100644 index 000000000..864ba4ec3 Binary files /dev/null and b/fonts/TewiFontOutline/24B2.png differ diff --git a/fonts/TewiFontOutline/24B3.png b/fonts/TewiFontOutline/24B3.png new file mode 100644 index 000000000..69f608cff Binary files /dev/null and b/fonts/TewiFontOutline/24B3.png differ diff --git a/fonts/TewiFontOutline/24B4.png b/fonts/TewiFontOutline/24B4.png new file mode 100644 index 000000000..27a4e5528 Binary files /dev/null and b/fonts/TewiFontOutline/24B4.png differ diff --git a/fonts/TewiFontOutline/24B5.png b/fonts/TewiFontOutline/24B5.png new file mode 100644 index 000000000..6ffe89498 Binary files /dev/null and b/fonts/TewiFontOutline/24B5.png differ diff --git a/fonts/TewiFontOutline/2500.png b/fonts/TewiFontOutline/2500.png new file mode 100644 index 000000000..ac1f2b36f Binary files /dev/null and b/fonts/TewiFontOutline/2500.png differ diff --git a/fonts/TewiFontOutline/2501.png b/fonts/TewiFontOutline/2501.png new file mode 100644 index 000000000..9d0aacca0 Binary files /dev/null and b/fonts/TewiFontOutline/2501.png differ diff --git a/fonts/TewiFontOutline/2502.png b/fonts/TewiFontOutline/2502.png new file mode 100644 index 000000000..d691112f6 Binary files /dev/null and b/fonts/TewiFontOutline/2502.png differ diff --git a/fonts/TewiFontOutline/2503.png b/fonts/TewiFontOutline/2503.png new file mode 100644 index 000000000..a4e392da3 Binary files /dev/null and b/fonts/TewiFontOutline/2503.png differ diff --git a/fonts/TewiFontOutline/2504.png b/fonts/TewiFontOutline/2504.png new file mode 100644 index 000000000..4f6566564 Binary files /dev/null and b/fonts/TewiFontOutline/2504.png differ diff --git a/fonts/TewiFontOutline/2505.png b/fonts/TewiFontOutline/2505.png new file mode 100644 index 000000000..9f34358e5 Binary files /dev/null and b/fonts/TewiFontOutline/2505.png differ diff --git a/fonts/TewiFontOutline/2506.png b/fonts/TewiFontOutline/2506.png new file mode 100644 index 000000000..3f18470c2 Binary files /dev/null and b/fonts/TewiFontOutline/2506.png differ diff --git a/fonts/TewiFontOutline/2507.png b/fonts/TewiFontOutline/2507.png new file mode 100644 index 000000000..5d7400dfd Binary files /dev/null and b/fonts/TewiFontOutline/2507.png differ diff --git a/fonts/TewiFontOutline/2508.png b/fonts/TewiFontOutline/2508.png new file mode 100644 index 000000000..4045b64a2 Binary files /dev/null and b/fonts/TewiFontOutline/2508.png differ diff --git a/fonts/TewiFontOutline/2509.png b/fonts/TewiFontOutline/2509.png new file mode 100644 index 000000000..33c7a8bf5 Binary files /dev/null and b/fonts/TewiFontOutline/2509.png differ diff --git a/fonts/TewiFontOutline/250A.png b/fonts/TewiFontOutline/250A.png new file mode 100644 index 000000000..c773f86fa Binary files /dev/null and b/fonts/TewiFontOutline/250A.png differ diff --git a/fonts/TewiFontOutline/250B.png b/fonts/TewiFontOutline/250B.png new file mode 100644 index 000000000..e809a239f Binary files /dev/null and b/fonts/TewiFontOutline/250B.png differ diff --git a/fonts/TewiFontOutline/250C.png b/fonts/TewiFontOutline/250C.png new file mode 100644 index 000000000..2c219ed21 Binary files /dev/null and b/fonts/TewiFontOutline/250C.png differ diff --git a/fonts/TewiFontOutline/250D.png b/fonts/TewiFontOutline/250D.png new file mode 100644 index 000000000..692a63bdc Binary files /dev/null and b/fonts/TewiFontOutline/250D.png differ diff --git a/fonts/TewiFontOutline/250E.png b/fonts/TewiFontOutline/250E.png new file mode 100644 index 000000000..ea8d9d628 Binary files /dev/null and b/fonts/TewiFontOutline/250E.png differ diff --git a/fonts/TewiFontOutline/250F.png b/fonts/TewiFontOutline/250F.png new file mode 100644 index 000000000..cc5d75cf8 Binary files /dev/null and b/fonts/TewiFontOutline/250F.png differ diff --git a/fonts/TewiFontOutline/2510.png b/fonts/TewiFontOutline/2510.png new file mode 100644 index 000000000..cd14ee3cb Binary files /dev/null and b/fonts/TewiFontOutline/2510.png differ diff --git a/fonts/TewiFontOutline/2511.png b/fonts/TewiFontOutline/2511.png new file mode 100644 index 000000000..ef57f3f0c Binary files /dev/null and b/fonts/TewiFontOutline/2511.png differ diff --git a/fonts/TewiFontOutline/2512.png b/fonts/TewiFontOutline/2512.png new file mode 100644 index 000000000..6f8c29f0c Binary files /dev/null and b/fonts/TewiFontOutline/2512.png differ diff --git a/fonts/TewiFontOutline/2513.png b/fonts/TewiFontOutline/2513.png new file mode 100644 index 000000000..82299e954 Binary files /dev/null and b/fonts/TewiFontOutline/2513.png differ diff --git a/fonts/TewiFontOutline/2514.png b/fonts/TewiFontOutline/2514.png new file mode 100644 index 000000000..c4509e92f Binary files /dev/null and b/fonts/TewiFontOutline/2514.png differ diff --git a/fonts/TewiFontOutline/2515.png b/fonts/TewiFontOutline/2515.png new file mode 100644 index 000000000..13f2a4264 Binary files /dev/null and b/fonts/TewiFontOutline/2515.png differ diff --git a/fonts/TewiFontOutline/2516.png b/fonts/TewiFontOutline/2516.png new file mode 100644 index 000000000..d02cd3ac1 Binary files /dev/null and b/fonts/TewiFontOutline/2516.png differ diff --git a/fonts/TewiFontOutline/2517.png b/fonts/TewiFontOutline/2517.png new file mode 100644 index 000000000..96abb366f Binary files /dev/null and b/fonts/TewiFontOutline/2517.png differ diff --git a/fonts/TewiFontOutline/2518.png b/fonts/TewiFontOutline/2518.png new file mode 100644 index 000000000..072d85780 Binary files /dev/null and b/fonts/TewiFontOutline/2518.png differ diff --git a/fonts/TewiFontOutline/2519.png b/fonts/TewiFontOutline/2519.png new file mode 100644 index 000000000..c82d6a43b Binary files /dev/null and b/fonts/TewiFontOutline/2519.png differ diff --git a/fonts/TewiFontOutline/251A.png b/fonts/TewiFontOutline/251A.png new file mode 100644 index 000000000..2a819d2a0 Binary files /dev/null and b/fonts/TewiFontOutline/251A.png differ diff --git a/fonts/TewiFontOutline/251B.png b/fonts/TewiFontOutline/251B.png new file mode 100644 index 000000000..c542e54ea Binary files /dev/null and b/fonts/TewiFontOutline/251B.png differ diff --git a/fonts/TewiFontOutline/251C.png b/fonts/TewiFontOutline/251C.png new file mode 100644 index 000000000..6c05b64ce Binary files /dev/null and b/fonts/TewiFontOutline/251C.png differ diff --git a/fonts/TewiFontOutline/251D.png b/fonts/TewiFontOutline/251D.png new file mode 100644 index 000000000..9e9766c42 Binary files /dev/null and b/fonts/TewiFontOutline/251D.png differ diff --git a/fonts/TewiFontOutline/251E.png b/fonts/TewiFontOutline/251E.png new file mode 100644 index 000000000..a8ca4749c Binary files /dev/null and b/fonts/TewiFontOutline/251E.png differ diff --git a/fonts/TewiFontOutline/251F.png b/fonts/TewiFontOutline/251F.png new file mode 100644 index 000000000..a77553527 Binary files /dev/null and b/fonts/TewiFontOutline/251F.png differ diff --git a/fonts/TewiFontOutline/2520.png b/fonts/TewiFontOutline/2520.png new file mode 100644 index 000000000..42de6393b Binary files /dev/null and b/fonts/TewiFontOutline/2520.png differ diff --git a/fonts/TewiFontOutline/2521.png b/fonts/TewiFontOutline/2521.png new file mode 100644 index 000000000..a4cb28f6e Binary files /dev/null and b/fonts/TewiFontOutline/2521.png differ diff --git a/fonts/TewiFontOutline/2522.png b/fonts/TewiFontOutline/2522.png new file mode 100644 index 000000000..e33937ac6 Binary files /dev/null and b/fonts/TewiFontOutline/2522.png differ diff --git a/fonts/TewiFontOutline/2523.png b/fonts/TewiFontOutline/2523.png new file mode 100644 index 000000000..8f5551a00 Binary files /dev/null and b/fonts/TewiFontOutline/2523.png differ diff --git a/fonts/TewiFontOutline/2524.png b/fonts/TewiFontOutline/2524.png new file mode 100644 index 000000000..d1759f8fc Binary files /dev/null and b/fonts/TewiFontOutline/2524.png differ diff --git a/fonts/TewiFontOutline/2525.png b/fonts/TewiFontOutline/2525.png new file mode 100644 index 000000000..50d9ddd85 Binary files /dev/null and b/fonts/TewiFontOutline/2525.png differ diff --git a/fonts/TewiFontOutline/2526.png b/fonts/TewiFontOutline/2526.png new file mode 100644 index 000000000..e4a0306f8 Binary files /dev/null and b/fonts/TewiFontOutline/2526.png differ diff --git a/fonts/TewiFontOutline/2527.png b/fonts/TewiFontOutline/2527.png new file mode 100644 index 000000000..38e57cb71 Binary files /dev/null and b/fonts/TewiFontOutline/2527.png differ diff --git a/fonts/TewiFontOutline/2528.png b/fonts/TewiFontOutline/2528.png new file mode 100644 index 000000000..0c58f052b Binary files /dev/null and b/fonts/TewiFontOutline/2528.png differ diff --git a/fonts/TewiFontOutline/2529.png b/fonts/TewiFontOutline/2529.png new file mode 100644 index 000000000..e09cacf08 Binary files /dev/null and b/fonts/TewiFontOutline/2529.png differ diff --git a/fonts/TewiFontOutline/252A.png b/fonts/TewiFontOutline/252A.png new file mode 100644 index 000000000..e36fe7797 Binary files /dev/null and b/fonts/TewiFontOutline/252A.png differ diff --git a/fonts/TewiFontOutline/252B.png b/fonts/TewiFontOutline/252B.png new file mode 100644 index 000000000..9cf5bb159 Binary files /dev/null and b/fonts/TewiFontOutline/252B.png differ diff --git a/fonts/TewiFontOutline/252C.png b/fonts/TewiFontOutline/252C.png new file mode 100644 index 000000000..db7ba804e Binary files /dev/null and b/fonts/TewiFontOutline/252C.png differ diff --git a/fonts/TewiFontOutline/252D.png b/fonts/TewiFontOutline/252D.png new file mode 100644 index 000000000..0d229d492 Binary files /dev/null and b/fonts/TewiFontOutline/252D.png differ diff --git a/fonts/TewiFontOutline/252E.png b/fonts/TewiFontOutline/252E.png new file mode 100644 index 000000000..be08f2e53 Binary files /dev/null and b/fonts/TewiFontOutline/252E.png differ diff --git a/fonts/TewiFontOutline/252F.png b/fonts/TewiFontOutline/252F.png new file mode 100644 index 000000000..01b22b940 Binary files /dev/null and b/fonts/TewiFontOutline/252F.png differ diff --git a/fonts/TewiFontOutline/2530.png b/fonts/TewiFontOutline/2530.png new file mode 100644 index 000000000..7bc8b6e2c Binary files /dev/null and b/fonts/TewiFontOutline/2530.png differ diff --git a/fonts/TewiFontOutline/2531.png b/fonts/TewiFontOutline/2531.png new file mode 100644 index 000000000..f97a579d5 Binary files /dev/null and b/fonts/TewiFontOutline/2531.png differ diff --git a/fonts/TewiFontOutline/2532.png b/fonts/TewiFontOutline/2532.png new file mode 100644 index 000000000..534ffe85d Binary files /dev/null and b/fonts/TewiFontOutline/2532.png differ diff --git a/fonts/TewiFontOutline/2533.png b/fonts/TewiFontOutline/2533.png new file mode 100644 index 000000000..bed8c8d8b Binary files /dev/null and b/fonts/TewiFontOutline/2533.png differ diff --git a/fonts/TewiFontOutline/2534.png b/fonts/TewiFontOutline/2534.png new file mode 100644 index 000000000..bb4be5013 Binary files /dev/null and b/fonts/TewiFontOutline/2534.png differ diff --git a/fonts/TewiFontOutline/2535.png b/fonts/TewiFontOutline/2535.png new file mode 100644 index 000000000..10b0adce8 Binary files /dev/null and b/fonts/TewiFontOutline/2535.png differ diff --git a/fonts/TewiFontOutline/2536.png b/fonts/TewiFontOutline/2536.png new file mode 100644 index 000000000..6879081cc Binary files /dev/null and b/fonts/TewiFontOutline/2536.png differ diff --git a/fonts/TewiFontOutline/2537.png b/fonts/TewiFontOutline/2537.png new file mode 100644 index 000000000..72446e81b Binary files /dev/null and b/fonts/TewiFontOutline/2537.png differ diff --git a/fonts/TewiFontOutline/2538.png b/fonts/TewiFontOutline/2538.png new file mode 100644 index 000000000..48c4e60a4 Binary files /dev/null and b/fonts/TewiFontOutline/2538.png differ diff --git a/fonts/TewiFontOutline/2539.png b/fonts/TewiFontOutline/2539.png new file mode 100644 index 000000000..22e0ca949 Binary files /dev/null and b/fonts/TewiFontOutline/2539.png differ diff --git a/fonts/TewiFontOutline/253A.png b/fonts/TewiFontOutline/253A.png new file mode 100644 index 000000000..ff7de0d56 Binary files /dev/null and b/fonts/TewiFontOutline/253A.png differ diff --git a/fonts/TewiFontOutline/253B.png b/fonts/TewiFontOutline/253B.png new file mode 100644 index 000000000..51d1ad142 Binary files /dev/null and b/fonts/TewiFontOutline/253B.png differ diff --git a/fonts/TewiFontOutline/253C.png b/fonts/TewiFontOutline/253C.png new file mode 100644 index 000000000..39ebae096 Binary files /dev/null and b/fonts/TewiFontOutline/253C.png differ diff --git a/fonts/TewiFontOutline/253D.png b/fonts/TewiFontOutline/253D.png new file mode 100644 index 000000000..db4122270 Binary files /dev/null and b/fonts/TewiFontOutline/253D.png differ diff --git a/fonts/TewiFontOutline/253E.png b/fonts/TewiFontOutline/253E.png new file mode 100644 index 000000000..02a2187f0 Binary files /dev/null and b/fonts/TewiFontOutline/253E.png differ diff --git a/fonts/TewiFontOutline/253F.png b/fonts/TewiFontOutline/253F.png new file mode 100644 index 000000000..e20182f38 Binary files /dev/null and b/fonts/TewiFontOutline/253F.png differ diff --git a/fonts/TewiFontOutline/2540.png b/fonts/TewiFontOutline/2540.png new file mode 100644 index 000000000..68e39beb7 Binary files /dev/null and b/fonts/TewiFontOutline/2540.png differ diff --git a/fonts/TewiFontOutline/2541.png b/fonts/TewiFontOutline/2541.png new file mode 100644 index 000000000..f4a725f40 Binary files /dev/null and b/fonts/TewiFontOutline/2541.png differ diff --git a/fonts/TewiFontOutline/2542.png b/fonts/TewiFontOutline/2542.png new file mode 100644 index 000000000..1a802da3e Binary files /dev/null and b/fonts/TewiFontOutline/2542.png differ diff --git a/fonts/TewiFontOutline/2543.png b/fonts/TewiFontOutline/2543.png new file mode 100644 index 000000000..abd063c40 Binary files /dev/null and b/fonts/TewiFontOutline/2543.png differ diff --git a/fonts/TewiFontOutline/2544.png b/fonts/TewiFontOutline/2544.png new file mode 100644 index 000000000..709f7968f Binary files /dev/null and b/fonts/TewiFontOutline/2544.png differ diff --git a/fonts/TewiFontOutline/2545.png b/fonts/TewiFontOutline/2545.png new file mode 100644 index 000000000..e64fd2089 Binary files /dev/null and b/fonts/TewiFontOutline/2545.png differ diff --git a/fonts/TewiFontOutline/2546.png b/fonts/TewiFontOutline/2546.png new file mode 100644 index 000000000..c90f49066 Binary files /dev/null and b/fonts/TewiFontOutline/2546.png differ diff --git a/fonts/TewiFontOutline/2547.png b/fonts/TewiFontOutline/2547.png new file mode 100644 index 000000000..06d7bcf80 Binary files /dev/null and b/fonts/TewiFontOutline/2547.png differ diff --git a/fonts/TewiFontOutline/2548.png b/fonts/TewiFontOutline/2548.png new file mode 100644 index 000000000..41f5e6b24 Binary files /dev/null and b/fonts/TewiFontOutline/2548.png differ diff --git a/fonts/TewiFontOutline/2549.png b/fonts/TewiFontOutline/2549.png new file mode 100644 index 000000000..dc1a41716 Binary files /dev/null and b/fonts/TewiFontOutline/2549.png differ diff --git a/fonts/TewiFontOutline/254A.png b/fonts/TewiFontOutline/254A.png new file mode 100644 index 000000000..580781531 Binary files /dev/null and b/fonts/TewiFontOutline/254A.png differ diff --git a/fonts/TewiFontOutline/254B.png b/fonts/TewiFontOutline/254B.png new file mode 100644 index 000000000..9c95f3a04 Binary files /dev/null and b/fonts/TewiFontOutline/254B.png differ diff --git a/fonts/TewiFontOutline/254C.png b/fonts/TewiFontOutline/254C.png new file mode 100644 index 000000000..6423feb0a Binary files /dev/null and b/fonts/TewiFontOutline/254C.png differ diff --git a/fonts/TewiFontOutline/254D.png b/fonts/TewiFontOutline/254D.png new file mode 100644 index 000000000..507ba4eaa Binary files /dev/null and b/fonts/TewiFontOutline/254D.png differ diff --git a/fonts/TewiFontOutline/254E.png b/fonts/TewiFontOutline/254E.png new file mode 100644 index 000000000..00d5228b9 Binary files /dev/null and b/fonts/TewiFontOutline/254E.png differ diff --git a/fonts/TewiFontOutline/254F.png b/fonts/TewiFontOutline/254F.png new file mode 100644 index 000000000..c6c040e91 Binary files /dev/null and b/fonts/TewiFontOutline/254F.png differ diff --git a/fonts/TewiFontOutline/2550.png b/fonts/TewiFontOutline/2550.png new file mode 100644 index 000000000..e054c2516 Binary files /dev/null and b/fonts/TewiFontOutline/2550.png differ diff --git a/fonts/TewiFontOutline/2551.png b/fonts/TewiFontOutline/2551.png new file mode 100644 index 000000000..c801a65e2 Binary files /dev/null and b/fonts/TewiFontOutline/2551.png differ diff --git a/fonts/TewiFontOutline/2552.png b/fonts/TewiFontOutline/2552.png new file mode 100644 index 000000000..8f43a3288 Binary files /dev/null and b/fonts/TewiFontOutline/2552.png differ diff --git a/fonts/TewiFontOutline/2553.png b/fonts/TewiFontOutline/2553.png new file mode 100644 index 000000000..a3d143390 Binary files /dev/null and b/fonts/TewiFontOutline/2553.png differ diff --git a/fonts/TewiFontOutline/2554.png b/fonts/TewiFontOutline/2554.png new file mode 100644 index 000000000..9d302c343 Binary files /dev/null and b/fonts/TewiFontOutline/2554.png differ diff --git a/fonts/TewiFontOutline/2555.png b/fonts/TewiFontOutline/2555.png new file mode 100644 index 000000000..13d7869fe Binary files /dev/null and b/fonts/TewiFontOutline/2555.png differ diff --git a/fonts/TewiFontOutline/2556.png b/fonts/TewiFontOutline/2556.png new file mode 100644 index 000000000..e36faccd5 Binary files /dev/null and b/fonts/TewiFontOutline/2556.png differ diff --git a/fonts/TewiFontOutline/2557.png b/fonts/TewiFontOutline/2557.png new file mode 100644 index 000000000..273a64554 Binary files /dev/null and b/fonts/TewiFontOutline/2557.png differ diff --git a/fonts/TewiFontOutline/2558.png b/fonts/TewiFontOutline/2558.png new file mode 100644 index 000000000..d71a7a956 Binary files /dev/null and b/fonts/TewiFontOutline/2558.png differ diff --git a/fonts/TewiFontOutline/2559.png b/fonts/TewiFontOutline/2559.png new file mode 100644 index 000000000..12678dcda Binary files /dev/null and b/fonts/TewiFontOutline/2559.png differ diff --git a/fonts/TewiFontOutline/255A.png b/fonts/TewiFontOutline/255A.png new file mode 100644 index 000000000..0c15c8b51 Binary files /dev/null and b/fonts/TewiFontOutline/255A.png differ diff --git a/fonts/TewiFontOutline/255B.png b/fonts/TewiFontOutline/255B.png new file mode 100644 index 000000000..b4bea87ac Binary files /dev/null and b/fonts/TewiFontOutline/255B.png differ diff --git a/fonts/TewiFontOutline/255C.png b/fonts/TewiFontOutline/255C.png new file mode 100644 index 000000000..76adfa922 Binary files /dev/null and b/fonts/TewiFontOutline/255C.png differ diff --git a/fonts/TewiFontOutline/255D.png b/fonts/TewiFontOutline/255D.png new file mode 100644 index 000000000..ed5cfadde Binary files /dev/null and b/fonts/TewiFontOutline/255D.png differ diff --git a/fonts/TewiFontOutline/255E.png b/fonts/TewiFontOutline/255E.png new file mode 100644 index 000000000..af9faa763 Binary files /dev/null and b/fonts/TewiFontOutline/255E.png differ diff --git a/fonts/TewiFontOutline/255F.png b/fonts/TewiFontOutline/255F.png new file mode 100644 index 000000000..45d04ef26 Binary files /dev/null and b/fonts/TewiFontOutline/255F.png differ diff --git a/fonts/TewiFontOutline/2560.png b/fonts/TewiFontOutline/2560.png new file mode 100644 index 000000000..35052450d Binary files /dev/null and b/fonts/TewiFontOutline/2560.png differ diff --git a/fonts/TewiFontOutline/2561.png b/fonts/TewiFontOutline/2561.png new file mode 100644 index 000000000..b71765f65 Binary files /dev/null and b/fonts/TewiFontOutline/2561.png differ diff --git a/fonts/TewiFontOutline/2562.png b/fonts/TewiFontOutline/2562.png new file mode 100644 index 000000000..eb3a55a48 Binary files /dev/null and b/fonts/TewiFontOutline/2562.png differ diff --git a/fonts/TewiFontOutline/2563.png b/fonts/TewiFontOutline/2563.png new file mode 100644 index 000000000..51094a23a Binary files /dev/null and b/fonts/TewiFontOutline/2563.png differ diff --git a/fonts/TewiFontOutline/2564.png b/fonts/TewiFontOutline/2564.png new file mode 100644 index 000000000..921b90537 Binary files /dev/null and b/fonts/TewiFontOutline/2564.png differ diff --git a/fonts/TewiFontOutline/2565.png b/fonts/TewiFontOutline/2565.png new file mode 100644 index 000000000..3a775c0fe Binary files /dev/null and b/fonts/TewiFontOutline/2565.png differ diff --git a/fonts/TewiFontOutline/2566.png b/fonts/TewiFontOutline/2566.png new file mode 100644 index 000000000..cc97eff43 Binary files /dev/null and b/fonts/TewiFontOutline/2566.png differ diff --git a/fonts/TewiFontOutline/2567.png b/fonts/TewiFontOutline/2567.png new file mode 100644 index 000000000..d84e2118b Binary files /dev/null and b/fonts/TewiFontOutline/2567.png differ diff --git a/fonts/TewiFontOutline/2568.png b/fonts/TewiFontOutline/2568.png new file mode 100644 index 000000000..cc5987c86 Binary files /dev/null and b/fonts/TewiFontOutline/2568.png differ diff --git a/fonts/TewiFontOutline/2569.png b/fonts/TewiFontOutline/2569.png new file mode 100644 index 000000000..db77de964 Binary files /dev/null and b/fonts/TewiFontOutline/2569.png differ diff --git a/fonts/TewiFontOutline/256A.png b/fonts/TewiFontOutline/256A.png new file mode 100644 index 000000000..087f8f5e2 Binary files /dev/null and b/fonts/TewiFontOutline/256A.png differ diff --git a/fonts/TewiFontOutline/256B.png b/fonts/TewiFontOutline/256B.png new file mode 100644 index 000000000..dbea3604e Binary files /dev/null and b/fonts/TewiFontOutline/256B.png differ diff --git a/fonts/TewiFontOutline/256C.png b/fonts/TewiFontOutline/256C.png new file mode 100644 index 000000000..fe933d456 Binary files /dev/null and b/fonts/TewiFontOutline/256C.png differ diff --git a/fonts/TewiFontOutline/256D.png b/fonts/TewiFontOutline/256D.png new file mode 100644 index 000000000..99bb75d73 Binary files /dev/null and b/fonts/TewiFontOutline/256D.png differ diff --git a/fonts/TewiFontOutline/256E.png b/fonts/TewiFontOutline/256E.png new file mode 100644 index 000000000..e2b87f6e6 Binary files /dev/null and b/fonts/TewiFontOutline/256E.png differ diff --git a/fonts/TewiFontOutline/256F.png b/fonts/TewiFontOutline/256F.png new file mode 100644 index 000000000..090347e5a Binary files /dev/null and b/fonts/TewiFontOutline/256F.png differ diff --git a/fonts/TewiFontOutline/2570.png b/fonts/TewiFontOutline/2570.png new file mode 100644 index 000000000..0ec97089d Binary files /dev/null and b/fonts/TewiFontOutline/2570.png differ diff --git a/fonts/TewiFontOutline/2571.png b/fonts/TewiFontOutline/2571.png new file mode 100644 index 000000000..9e2e2da1a Binary files /dev/null and b/fonts/TewiFontOutline/2571.png differ diff --git a/fonts/TewiFontOutline/2572.png b/fonts/TewiFontOutline/2572.png new file mode 100644 index 000000000..73320c9eb Binary files /dev/null and b/fonts/TewiFontOutline/2572.png differ diff --git a/fonts/TewiFontOutline/2573.png b/fonts/TewiFontOutline/2573.png new file mode 100644 index 000000000..10a468b43 Binary files /dev/null and b/fonts/TewiFontOutline/2573.png differ diff --git a/fonts/TewiFontOutline/2574.png b/fonts/TewiFontOutline/2574.png new file mode 100644 index 000000000..62f03a4c7 Binary files /dev/null and b/fonts/TewiFontOutline/2574.png differ diff --git a/fonts/TewiFontOutline/2575.png b/fonts/TewiFontOutline/2575.png new file mode 100644 index 000000000..2a068c7e5 Binary files /dev/null and b/fonts/TewiFontOutline/2575.png differ diff --git a/fonts/TewiFontOutline/2576.png b/fonts/TewiFontOutline/2576.png new file mode 100644 index 000000000..5ba677f3f Binary files /dev/null and b/fonts/TewiFontOutline/2576.png differ diff --git a/fonts/TewiFontOutline/2577.png b/fonts/TewiFontOutline/2577.png new file mode 100644 index 000000000..98cfd89ee Binary files /dev/null and b/fonts/TewiFontOutline/2577.png differ diff --git a/fonts/TewiFontOutline/2578.png b/fonts/TewiFontOutline/2578.png new file mode 100644 index 000000000..f22c4da51 Binary files /dev/null and b/fonts/TewiFontOutline/2578.png differ diff --git a/fonts/TewiFontOutline/2579.png b/fonts/TewiFontOutline/2579.png new file mode 100644 index 000000000..eec044606 Binary files /dev/null and b/fonts/TewiFontOutline/2579.png differ diff --git a/fonts/TewiFontOutline/257A.png b/fonts/TewiFontOutline/257A.png new file mode 100644 index 000000000..e73d69f84 Binary files /dev/null and b/fonts/TewiFontOutline/257A.png differ diff --git a/fonts/TewiFontOutline/257B.png b/fonts/TewiFontOutline/257B.png new file mode 100644 index 000000000..ca1b7f2fe Binary files /dev/null and b/fonts/TewiFontOutline/257B.png differ diff --git a/fonts/TewiFontOutline/257C.png b/fonts/TewiFontOutline/257C.png new file mode 100644 index 000000000..3001cf9bf Binary files /dev/null and b/fonts/TewiFontOutline/257C.png differ diff --git a/fonts/TewiFontOutline/257D.png b/fonts/TewiFontOutline/257D.png new file mode 100644 index 000000000..9d4fe8e10 Binary files /dev/null and b/fonts/TewiFontOutline/257D.png differ diff --git a/fonts/TewiFontOutline/257E.png b/fonts/TewiFontOutline/257E.png new file mode 100644 index 000000000..0ea434bb0 Binary files /dev/null and b/fonts/TewiFontOutline/257E.png differ diff --git a/fonts/TewiFontOutline/257F.png b/fonts/TewiFontOutline/257F.png new file mode 100644 index 000000000..58cd2b44e Binary files /dev/null and b/fonts/TewiFontOutline/257F.png differ diff --git a/fonts/TewiFontOutline/2580.png b/fonts/TewiFontOutline/2580.png new file mode 100644 index 000000000..e4e9ec042 Binary files /dev/null and b/fonts/TewiFontOutline/2580.png differ diff --git a/fonts/TewiFontOutline/2581.png b/fonts/TewiFontOutline/2581.png new file mode 100644 index 000000000..773f98e49 Binary files /dev/null and b/fonts/TewiFontOutline/2581.png differ diff --git a/fonts/TewiFontOutline/2582.png b/fonts/TewiFontOutline/2582.png new file mode 100644 index 000000000..ddbe28d3f Binary files /dev/null and b/fonts/TewiFontOutline/2582.png differ diff --git a/fonts/TewiFontOutline/2583.png b/fonts/TewiFontOutline/2583.png new file mode 100644 index 000000000..cd00b4981 Binary files /dev/null and b/fonts/TewiFontOutline/2583.png differ diff --git a/fonts/TewiFontOutline/2584.png b/fonts/TewiFontOutline/2584.png new file mode 100644 index 000000000..b8f81a74d Binary files /dev/null and b/fonts/TewiFontOutline/2584.png differ diff --git a/fonts/TewiFontOutline/2585.png b/fonts/TewiFontOutline/2585.png new file mode 100644 index 000000000..da8fd71cc Binary files /dev/null and b/fonts/TewiFontOutline/2585.png differ diff --git a/fonts/TewiFontOutline/2586.png b/fonts/TewiFontOutline/2586.png new file mode 100644 index 000000000..7afd99899 Binary files /dev/null and b/fonts/TewiFontOutline/2586.png differ diff --git a/fonts/TewiFontOutline/2587.png b/fonts/TewiFontOutline/2587.png new file mode 100644 index 000000000..aacddad5d Binary files /dev/null and b/fonts/TewiFontOutline/2587.png differ diff --git a/fonts/TewiFontOutline/2588.png b/fonts/TewiFontOutline/2588.png new file mode 100644 index 000000000..9a9482df6 Binary files /dev/null and b/fonts/TewiFontOutline/2588.png differ diff --git a/fonts/TewiFontOutline/2589.png b/fonts/TewiFontOutline/2589.png new file mode 100644 index 000000000..9a9482df6 Binary files /dev/null and b/fonts/TewiFontOutline/2589.png differ diff --git a/fonts/TewiFontOutline/258A.png b/fonts/TewiFontOutline/258A.png new file mode 100644 index 000000000..b0273fe8b Binary files /dev/null and b/fonts/TewiFontOutline/258A.png differ diff --git a/fonts/TewiFontOutline/258B.png b/fonts/TewiFontOutline/258B.png new file mode 100644 index 000000000..f84923f4b Binary files /dev/null and b/fonts/TewiFontOutline/258B.png differ diff --git a/fonts/TewiFontOutline/258C.png b/fonts/TewiFontOutline/258C.png new file mode 100644 index 000000000..83521206b Binary files /dev/null and b/fonts/TewiFontOutline/258C.png differ diff --git a/fonts/TewiFontOutline/258D.png b/fonts/TewiFontOutline/258D.png new file mode 100644 index 000000000..83521206b Binary files /dev/null and b/fonts/TewiFontOutline/258D.png differ diff --git a/fonts/TewiFontOutline/258E.png b/fonts/TewiFontOutline/258E.png new file mode 100644 index 000000000..c668731fb Binary files /dev/null and b/fonts/TewiFontOutline/258E.png differ diff --git a/fonts/TewiFontOutline/258F.png b/fonts/TewiFontOutline/258F.png new file mode 100644 index 000000000..f2eabd55f Binary files /dev/null and b/fonts/TewiFontOutline/258F.png differ diff --git a/fonts/TewiFontOutline/2590.png b/fonts/TewiFontOutline/2590.png new file mode 100644 index 000000000..a07203eda Binary files /dev/null and b/fonts/TewiFontOutline/2590.png differ diff --git a/fonts/TewiFontOutline/2591.png b/fonts/TewiFontOutline/2591.png new file mode 100644 index 000000000..6a370043d Binary files /dev/null and b/fonts/TewiFontOutline/2591.png differ diff --git a/fonts/TewiFontOutline/2592.png b/fonts/TewiFontOutline/2592.png new file mode 100644 index 000000000..f30ed8ae9 Binary files /dev/null and b/fonts/TewiFontOutline/2592.png differ diff --git a/fonts/TewiFontOutline/2593.png b/fonts/TewiFontOutline/2593.png new file mode 100644 index 000000000..6d234e9d2 Binary files /dev/null and b/fonts/TewiFontOutline/2593.png differ diff --git a/fonts/TewiFontOutline/2594.png b/fonts/TewiFontOutline/2594.png new file mode 100644 index 000000000..5ef23cc51 Binary files /dev/null and b/fonts/TewiFontOutline/2594.png differ diff --git a/fonts/TewiFontOutline/2595.png b/fonts/TewiFontOutline/2595.png new file mode 100644 index 000000000..437c2b1b7 Binary files /dev/null and b/fonts/TewiFontOutline/2595.png differ diff --git a/fonts/TewiFontOutline/2596.png b/fonts/TewiFontOutline/2596.png new file mode 100644 index 000000000..8008d56e3 Binary files /dev/null and b/fonts/TewiFontOutline/2596.png differ diff --git a/fonts/TewiFontOutline/2597.png b/fonts/TewiFontOutline/2597.png new file mode 100644 index 000000000..71f837d3d Binary files /dev/null and b/fonts/TewiFontOutline/2597.png differ diff --git a/fonts/TewiFontOutline/2598.png b/fonts/TewiFontOutline/2598.png new file mode 100644 index 000000000..38c86ab1b Binary files /dev/null and b/fonts/TewiFontOutline/2598.png differ diff --git a/fonts/TewiFontOutline/2599.png b/fonts/TewiFontOutline/2599.png new file mode 100644 index 000000000..03964e572 Binary files /dev/null and b/fonts/TewiFontOutline/2599.png differ diff --git a/fonts/TewiFontOutline/259A.png b/fonts/TewiFontOutline/259A.png new file mode 100644 index 000000000..f1c534a43 Binary files /dev/null and b/fonts/TewiFontOutline/259A.png differ diff --git a/fonts/TewiFontOutline/259B.png b/fonts/TewiFontOutline/259B.png new file mode 100644 index 000000000..2effa7925 Binary files /dev/null and b/fonts/TewiFontOutline/259B.png differ diff --git a/fonts/TewiFontOutline/259C.png b/fonts/TewiFontOutline/259C.png new file mode 100644 index 000000000..f3e0bb443 Binary files /dev/null and b/fonts/TewiFontOutline/259C.png differ diff --git a/fonts/TewiFontOutline/259D.png b/fonts/TewiFontOutline/259D.png new file mode 100644 index 000000000..bd1bcd656 Binary files /dev/null and b/fonts/TewiFontOutline/259D.png differ diff --git a/fonts/TewiFontOutline/259E.png b/fonts/TewiFontOutline/259E.png new file mode 100644 index 000000000..71e020fa9 Binary files /dev/null and b/fonts/TewiFontOutline/259E.png differ diff --git a/fonts/TewiFontOutline/259F.png b/fonts/TewiFontOutline/259F.png new file mode 100644 index 000000000..934eb5fb3 Binary files /dev/null and b/fonts/TewiFontOutline/259F.png differ diff --git a/fonts/TewiFontOutline/25A0.png b/fonts/TewiFontOutline/25A0.png new file mode 100644 index 000000000..44f834fdc Binary files /dev/null and b/fonts/TewiFontOutline/25A0.png differ diff --git a/fonts/TewiFontOutline/25A1.png b/fonts/TewiFontOutline/25A1.png new file mode 100644 index 000000000..584dd3713 Binary files /dev/null and b/fonts/TewiFontOutline/25A1.png differ diff --git a/fonts/TewiFontOutline/25A2.png b/fonts/TewiFontOutline/25A2.png new file mode 100644 index 000000000..3831d4fb0 Binary files /dev/null and b/fonts/TewiFontOutline/25A2.png differ diff --git a/fonts/TewiFontOutline/25A3.png b/fonts/TewiFontOutline/25A3.png new file mode 100644 index 000000000..532722028 Binary files /dev/null and b/fonts/TewiFontOutline/25A3.png differ diff --git a/fonts/TewiFontOutline/25A4.png b/fonts/TewiFontOutline/25A4.png new file mode 100644 index 000000000..ad21db6b7 Binary files /dev/null and b/fonts/TewiFontOutline/25A4.png differ diff --git a/fonts/TewiFontOutline/25A5.png b/fonts/TewiFontOutline/25A5.png new file mode 100644 index 000000000..35db94098 Binary files /dev/null and b/fonts/TewiFontOutline/25A5.png differ diff --git a/fonts/TewiFontOutline/25A6.png b/fonts/TewiFontOutline/25A6.png new file mode 100644 index 000000000..24294e3e2 Binary files /dev/null and b/fonts/TewiFontOutline/25A6.png differ diff --git a/fonts/TewiFontOutline/25A7.png b/fonts/TewiFontOutline/25A7.png new file mode 100644 index 000000000..4a95cf5bd Binary files /dev/null and b/fonts/TewiFontOutline/25A7.png differ diff --git a/fonts/TewiFontOutline/25A8.png b/fonts/TewiFontOutline/25A8.png new file mode 100644 index 000000000..fa16cbf9e Binary files /dev/null and b/fonts/TewiFontOutline/25A8.png differ diff --git a/fonts/TewiFontOutline/25A9.png b/fonts/TewiFontOutline/25A9.png new file mode 100644 index 000000000..45cfbf282 Binary files /dev/null and b/fonts/TewiFontOutline/25A9.png differ diff --git a/fonts/TewiFontOutline/25AA.png b/fonts/TewiFontOutline/25AA.png new file mode 100644 index 000000000..2c0e0f39f Binary files /dev/null and b/fonts/TewiFontOutline/25AA.png differ diff --git a/fonts/TewiFontOutline/25AB.png b/fonts/TewiFontOutline/25AB.png new file mode 100644 index 000000000..475c85ea3 Binary files /dev/null and b/fonts/TewiFontOutline/25AB.png differ diff --git a/fonts/TewiFontOutline/25AC.png b/fonts/TewiFontOutline/25AC.png new file mode 100644 index 000000000..81d9cecb8 Binary files /dev/null and b/fonts/TewiFontOutline/25AC.png differ diff --git a/fonts/TewiFontOutline/25AD.png b/fonts/TewiFontOutline/25AD.png new file mode 100644 index 000000000..0521dd214 Binary files /dev/null and b/fonts/TewiFontOutline/25AD.png differ diff --git a/fonts/TewiFontOutline/25AE.png b/fonts/TewiFontOutline/25AE.png new file mode 100644 index 000000000..71b598104 Binary files /dev/null and b/fonts/TewiFontOutline/25AE.png differ diff --git a/fonts/TewiFontOutline/25AF.png b/fonts/TewiFontOutline/25AF.png new file mode 100644 index 000000000..163f01ddd Binary files /dev/null and b/fonts/TewiFontOutline/25AF.png differ diff --git a/fonts/TewiFontOutline/25B0.png b/fonts/TewiFontOutline/25B0.png new file mode 100644 index 000000000..acc6a13a1 Binary files /dev/null and b/fonts/TewiFontOutline/25B0.png differ diff --git a/fonts/TewiFontOutline/25B1.png b/fonts/TewiFontOutline/25B1.png new file mode 100644 index 000000000..acb046a0b Binary files /dev/null and b/fonts/TewiFontOutline/25B1.png differ diff --git a/fonts/TewiFontOutline/25B2.png b/fonts/TewiFontOutline/25B2.png new file mode 100644 index 000000000..39256bba2 Binary files /dev/null and b/fonts/TewiFontOutline/25B2.png differ diff --git a/fonts/TewiFontOutline/25B3.png b/fonts/TewiFontOutline/25B3.png new file mode 100644 index 000000000..d9d22ba0e Binary files /dev/null and b/fonts/TewiFontOutline/25B3.png differ diff --git a/fonts/TewiFontOutline/25B4.png b/fonts/TewiFontOutline/25B4.png new file mode 100644 index 000000000..5e9628444 Binary files /dev/null and b/fonts/TewiFontOutline/25B4.png differ diff --git a/fonts/TewiFontOutline/25B5.png b/fonts/TewiFontOutline/25B5.png new file mode 100644 index 000000000..f76b4820d Binary files /dev/null and b/fonts/TewiFontOutline/25B5.png differ diff --git a/fonts/TewiFontOutline/25B6.png b/fonts/TewiFontOutline/25B6.png new file mode 100644 index 000000000..74c5de27e Binary files /dev/null and b/fonts/TewiFontOutline/25B6.png differ diff --git a/fonts/TewiFontOutline/25B7.png b/fonts/TewiFontOutline/25B7.png new file mode 100644 index 000000000..bc8906205 Binary files /dev/null and b/fonts/TewiFontOutline/25B7.png differ diff --git a/fonts/TewiFontOutline/25B8.png b/fonts/TewiFontOutline/25B8.png new file mode 100644 index 000000000..26030eec2 Binary files /dev/null and b/fonts/TewiFontOutline/25B8.png differ diff --git a/fonts/TewiFontOutline/25B9.png b/fonts/TewiFontOutline/25B9.png new file mode 100644 index 000000000..e116a94df Binary files /dev/null and b/fonts/TewiFontOutline/25B9.png differ diff --git a/fonts/TewiFontOutline/25BA.png b/fonts/TewiFontOutline/25BA.png new file mode 100644 index 000000000..74c5de27e Binary files /dev/null and b/fonts/TewiFontOutline/25BA.png differ diff --git a/fonts/TewiFontOutline/25BB.png b/fonts/TewiFontOutline/25BB.png new file mode 100644 index 000000000..bc8906205 Binary files /dev/null and b/fonts/TewiFontOutline/25BB.png differ diff --git a/fonts/TewiFontOutline/25BC.png b/fonts/TewiFontOutline/25BC.png new file mode 100644 index 000000000..829e3bd03 Binary files /dev/null and b/fonts/TewiFontOutline/25BC.png differ diff --git a/fonts/TewiFontOutline/25BD.png b/fonts/TewiFontOutline/25BD.png new file mode 100644 index 000000000..55c60f511 Binary files /dev/null and b/fonts/TewiFontOutline/25BD.png differ diff --git a/fonts/TewiFontOutline/25BE.png b/fonts/TewiFontOutline/25BE.png new file mode 100644 index 000000000..6331f25e3 Binary files /dev/null and b/fonts/TewiFontOutline/25BE.png differ diff --git a/fonts/TewiFontOutline/25BF.png b/fonts/TewiFontOutline/25BF.png new file mode 100644 index 000000000..a3b638bee Binary files /dev/null and b/fonts/TewiFontOutline/25BF.png differ diff --git a/fonts/TewiFontOutline/25C0.png b/fonts/TewiFontOutline/25C0.png new file mode 100644 index 000000000..616358f4b Binary files /dev/null and b/fonts/TewiFontOutline/25C0.png differ diff --git a/fonts/TewiFontOutline/25C1.png b/fonts/TewiFontOutline/25C1.png new file mode 100644 index 000000000..4565f65fb Binary files /dev/null and b/fonts/TewiFontOutline/25C1.png differ diff --git a/fonts/TewiFontOutline/25C2.png b/fonts/TewiFontOutline/25C2.png new file mode 100644 index 000000000..8c7d5933a Binary files /dev/null and b/fonts/TewiFontOutline/25C2.png differ diff --git a/fonts/TewiFontOutline/25C3.png b/fonts/TewiFontOutline/25C3.png new file mode 100644 index 000000000..3db2b77cb Binary files /dev/null and b/fonts/TewiFontOutline/25C3.png differ diff --git a/fonts/TewiFontOutline/25C4.png b/fonts/TewiFontOutline/25C4.png new file mode 100644 index 000000000..616358f4b Binary files /dev/null and b/fonts/TewiFontOutline/25C4.png differ diff --git a/fonts/TewiFontOutline/25C5.png b/fonts/TewiFontOutline/25C5.png new file mode 100644 index 000000000..4565f65fb Binary files /dev/null and b/fonts/TewiFontOutline/25C5.png differ diff --git a/fonts/TewiFontOutline/25C6.png b/fonts/TewiFontOutline/25C6.png new file mode 100644 index 000000000..7c18f0ff5 Binary files /dev/null and b/fonts/TewiFontOutline/25C6.png differ diff --git a/fonts/TewiFontOutline/25C7.png b/fonts/TewiFontOutline/25C7.png new file mode 100644 index 000000000..30ab37a2e Binary files /dev/null and b/fonts/TewiFontOutline/25C7.png differ diff --git a/fonts/TewiFontOutline/25C8.png b/fonts/TewiFontOutline/25C8.png new file mode 100644 index 000000000..405551432 Binary files /dev/null and b/fonts/TewiFontOutline/25C8.png differ diff --git a/fonts/TewiFontOutline/25C9.png b/fonts/TewiFontOutline/25C9.png new file mode 100644 index 000000000..52f81f8a3 Binary files /dev/null and b/fonts/TewiFontOutline/25C9.png differ diff --git a/fonts/TewiFontOutline/25CA.png b/fonts/TewiFontOutline/25CA.png new file mode 100644 index 000000000..5fe20b989 Binary files /dev/null and b/fonts/TewiFontOutline/25CA.png differ diff --git a/fonts/TewiFontOutline/25CB.png b/fonts/TewiFontOutline/25CB.png new file mode 100644 index 000000000..cc2cb7ee2 Binary files /dev/null and b/fonts/TewiFontOutline/25CB.png differ diff --git a/fonts/TewiFontOutline/25CC.png b/fonts/TewiFontOutline/25CC.png new file mode 100644 index 000000000..5d146fb15 Binary files /dev/null and b/fonts/TewiFontOutline/25CC.png differ diff --git a/fonts/TewiFontOutline/25CD.png b/fonts/TewiFontOutline/25CD.png new file mode 100644 index 000000000..2c3a0c4a9 Binary files /dev/null and b/fonts/TewiFontOutline/25CD.png differ diff --git a/fonts/TewiFontOutline/25CE.png b/fonts/TewiFontOutline/25CE.png new file mode 100644 index 000000000..52f81f8a3 Binary files /dev/null and b/fonts/TewiFontOutline/25CE.png differ diff --git a/fonts/TewiFontOutline/25CF.png b/fonts/TewiFontOutline/25CF.png new file mode 100644 index 000000000..b84676f84 Binary files /dev/null and b/fonts/TewiFontOutline/25CF.png differ diff --git a/fonts/TewiFontOutline/25D0.png b/fonts/TewiFontOutline/25D0.png new file mode 100644 index 000000000..7848b271d Binary files /dev/null and b/fonts/TewiFontOutline/25D0.png differ diff --git a/fonts/TewiFontOutline/25D1.png b/fonts/TewiFontOutline/25D1.png new file mode 100644 index 000000000..8a3167fc3 Binary files /dev/null and b/fonts/TewiFontOutline/25D1.png differ diff --git a/fonts/TewiFontOutline/25D2.png b/fonts/TewiFontOutline/25D2.png new file mode 100644 index 000000000..c3862591a Binary files /dev/null and b/fonts/TewiFontOutline/25D2.png differ diff --git a/fonts/TewiFontOutline/25D3.png b/fonts/TewiFontOutline/25D3.png new file mode 100644 index 000000000..f7f03049c Binary files /dev/null and b/fonts/TewiFontOutline/25D3.png differ diff --git a/fonts/TewiFontOutline/25D4.png b/fonts/TewiFontOutline/25D4.png new file mode 100644 index 000000000..926e480cb Binary files /dev/null and b/fonts/TewiFontOutline/25D4.png differ diff --git a/fonts/TewiFontOutline/25D5.png b/fonts/TewiFontOutline/25D5.png new file mode 100644 index 000000000..966725dd6 Binary files /dev/null and b/fonts/TewiFontOutline/25D5.png differ diff --git a/fonts/TewiFontOutline/25D6.png b/fonts/TewiFontOutline/25D6.png new file mode 100644 index 000000000..2acadb998 Binary files /dev/null and b/fonts/TewiFontOutline/25D6.png differ diff --git a/fonts/TewiFontOutline/25D7.png b/fonts/TewiFontOutline/25D7.png new file mode 100644 index 000000000..f7b55baa4 Binary files /dev/null and b/fonts/TewiFontOutline/25D7.png differ diff --git a/fonts/TewiFontOutline/25D8.png b/fonts/TewiFontOutline/25D8.png new file mode 100644 index 000000000..9a8edef07 Binary files /dev/null and b/fonts/TewiFontOutline/25D8.png differ diff --git a/fonts/TewiFontOutline/25D9.png b/fonts/TewiFontOutline/25D9.png new file mode 100644 index 000000000..a550be43c Binary files /dev/null and b/fonts/TewiFontOutline/25D9.png differ diff --git a/fonts/TewiFontOutline/25DA.png b/fonts/TewiFontOutline/25DA.png new file mode 100644 index 000000000..b03ada1fe Binary files /dev/null and b/fonts/TewiFontOutline/25DA.png differ diff --git a/fonts/TewiFontOutline/25DB.png b/fonts/TewiFontOutline/25DB.png new file mode 100644 index 000000000..2c99a5636 Binary files /dev/null and b/fonts/TewiFontOutline/25DB.png differ diff --git a/fonts/TewiFontOutline/25DC.png b/fonts/TewiFontOutline/25DC.png new file mode 100644 index 000000000..903978f6c Binary files /dev/null and b/fonts/TewiFontOutline/25DC.png differ diff --git a/fonts/TewiFontOutline/25DD.png b/fonts/TewiFontOutline/25DD.png new file mode 100644 index 000000000..cbf48d4ca Binary files /dev/null and b/fonts/TewiFontOutline/25DD.png differ diff --git a/fonts/TewiFontOutline/25DE.png b/fonts/TewiFontOutline/25DE.png new file mode 100644 index 000000000..adc113a72 Binary files /dev/null and b/fonts/TewiFontOutline/25DE.png differ diff --git a/fonts/TewiFontOutline/25DF.png b/fonts/TewiFontOutline/25DF.png new file mode 100644 index 000000000..910b06d34 Binary files /dev/null and b/fonts/TewiFontOutline/25DF.png differ diff --git a/fonts/TewiFontOutline/25E0.png b/fonts/TewiFontOutline/25E0.png new file mode 100644 index 000000000..9f6e58a25 Binary files /dev/null and b/fonts/TewiFontOutline/25E0.png differ diff --git a/fonts/TewiFontOutline/25E1.png b/fonts/TewiFontOutline/25E1.png new file mode 100644 index 000000000..6c9702064 Binary files /dev/null and b/fonts/TewiFontOutline/25E1.png differ diff --git a/fonts/TewiFontOutline/25E2.png b/fonts/TewiFontOutline/25E2.png new file mode 100644 index 000000000..a072deb25 Binary files /dev/null and b/fonts/TewiFontOutline/25E2.png differ diff --git a/fonts/TewiFontOutline/25E3.png b/fonts/TewiFontOutline/25E3.png new file mode 100644 index 000000000..978674eaf Binary files /dev/null and b/fonts/TewiFontOutline/25E3.png differ diff --git a/fonts/TewiFontOutline/25E4.png b/fonts/TewiFontOutline/25E4.png new file mode 100644 index 000000000..1381a3dc6 Binary files /dev/null and b/fonts/TewiFontOutline/25E4.png differ diff --git a/fonts/TewiFontOutline/25E5.png b/fonts/TewiFontOutline/25E5.png new file mode 100644 index 000000000..861b1460b Binary files /dev/null and b/fonts/TewiFontOutline/25E5.png differ diff --git a/fonts/TewiFontOutline/25E6.png b/fonts/TewiFontOutline/25E6.png new file mode 100644 index 000000000..cc2cb7ee2 Binary files /dev/null and b/fonts/TewiFontOutline/25E6.png differ diff --git a/fonts/TewiFontOutline/25E7.png b/fonts/TewiFontOutline/25E7.png new file mode 100644 index 000000000..faee2ffb6 Binary files /dev/null and b/fonts/TewiFontOutline/25E7.png differ diff --git a/fonts/TewiFontOutline/25E8.png b/fonts/TewiFontOutline/25E8.png new file mode 100644 index 000000000..99775d223 Binary files /dev/null and b/fonts/TewiFontOutline/25E8.png differ diff --git a/fonts/TewiFontOutline/25E9.png b/fonts/TewiFontOutline/25E9.png new file mode 100644 index 000000000..775827979 Binary files /dev/null and b/fonts/TewiFontOutline/25E9.png differ diff --git a/fonts/TewiFontOutline/25EA.png b/fonts/TewiFontOutline/25EA.png new file mode 100644 index 000000000..2b89ff9f7 Binary files /dev/null and b/fonts/TewiFontOutline/25EA.png differ diff --git a/fonts/TewiFontOutline/25EB.png b/fonts/TewiFontOutline/25EB.png new file mode 100644 index 000000000..35db94098 Binary files /dev/null and b/fonts/TewiFontOutline/25EB.png differ diff --git a/fonts/TewiFontOutline/25EC.png b/fonts/TewiFontOutline/25EC.png new file mode 100644 index 000000000..dbf97c57c Binary files /dev/null and b/fonts/TewiFontOutline/25EC.png differ diff --git a/fonts/TewiFontOutline/25ED.png b/fonts/TewiFontOutline/25ED.png new file mode 100644 index 000000000..fe9bba160 Binary files /dev/null and b/fonts/TewiFontOutline/25ED.png differ diff --git a/fonts/TewiFontOutline/25EE.png b/fonts/TewiFontOutline/25EE.png new file mode 100644 index 000000000..050fede18 Binary files /dev/null and b/fonts/TewiFontOutline/25EE.png differ diff --git a/fonts/TewiFontOutline/25EF.png b/fonts/TewiFontOutline/25EF.png new file mode 100644 index 000000000..3831d4fb0 Binary files /dev/null and b/fonts/TewiFontOutline/25EF.png differ diff --git a/fonts/TewiFontOutline/25F0.png b/fonts/TewiFontOutline/25F0.png new file mode 100644 index 000000000..dc3ea2f30 Binary files /dev/null and b/fonts/TewiFontOutline/25F0.png differ diff --git a/fonts/TewiFontOutline/25F1.png b/fonts/TewiFontOutline/25F1.png new file mode 100644 index 000000000..f0ce82936 Binary files /dev/null and b/fonts/TewiFontOutline/25F1.png differ diff --git a/fonts/TewiFontOutline/25F2.png b/fonts/TewiFontOutline/25F2.png new file mode 100644 index 000000000..1101be240 Binary files /dev/null and b/fonts/TewiFontOutline/25F2.png differ diff --git a/fonts/TewiFontOutline/25F3.png b/fonts/TewiFontOutline/25F3.png new file mode 100644 index 000000000..60270532c Binary files /dev/null and b/fonts/TewiFontOutline/25F3.png differ diff --git a/fonts/TewiFontOutline/25F4.png b/fonts/TewiFontOutline/25F4.png new file mode 100644 index 000000000..f6987c781 Binary files /dev/null and b/fonts/TewiFontOutline/25F4.png differ diff --git a/fonts/TewiFontOutline/25F5.png b/fonts/TewiFontOutline/25F5.png new file mode 100644 index 000000000..3acc75de6 Binary files /dev/null and b/fonts/TewiFontOutline/25F5.png differ diff --git a/fonts/TewiFontOutline/25F6.png b/fonts/TewiFontOutline/25F6.png new file mode 100644 index 000000000..c5b004811 Binary files /dev/null and b/fonts/TewiFontOutline/25F6.png differ diff --git a/fonts/TewiFontOutline/25F7.png b/fonts/TewiFontOutline/25F7.png new file mode 100644 index 000000000..82e880f00 Binary files /dev/null and b/fonts/TewiFontOutline/25F7.png differ diff --git a/fonts/TewiFontOutline/25F8.png b/fonts/TewiFontOutline/25F8.png new file mode 100644 index 000000000..fce865a85 Binary files /dev/null and b/fonts/TewiFontOutline/25F8.png differ diff --git a/fonts/TewiFontOutline/25F9.png b/fonts/TewiFontOutline/25F9.png new file mode 100644 index 000000000..3cc831288 Binary files /dev/null and b/fonts/TewiFontOutline/25F9.png differ diff --git a/fonts/TewiFontOutline/25FA.png b/fonts/TewiFontOutline/25FA.png new file mode 100644 index 000000000..574960b76 Binary files /dev/null and b/fonts/TewiFontOutline/25FA.png differ diff --git a/fonts/TewiFontOutline/25FB.png b/fonts/TewiFontOutline/25FB.png new file mode 100644 index 000000000..584dd3713 Binary files /dev/null and b/fonts/TewiFontOutline/25FB.png differ diff --git a/fonts/TewiFontOutline/25FC.png b/fonts/TewiFontOutline/25FC.png new file mode 100644 index 000000000..44f834fdc Binary files /dev/null and b/fonts/TewiFontOutline/25FC.png differ diff --git a/fonts/TewiFontOutline/25FD.png b/fonts/TewiFontOutline/25FD.png new file mode 100644 index 000000000..f330e0bfb Binary files /dev/null and b/fonts/TewiFontOutline/25FD.png differ diff --git a/fonts/TewiFontOutline/25FE.png b/fonts/TewiFontOutline/25FE.png new file mode 100644 index 000000000..1b690ff4d Binary files /dev/null and b/fonts/TewiFontOutline/25FE.png differ diff --git a/fonts/TewiFontOutline/25FF.png b/fonts/TewiFontOutline/25FF.png new file mode 100644 index 000000000..692537673 Binary files /dev/null and b/fonts/TewiFontOutline/25FF.png differ diff --git a/fonts/TewiFontOutline/2600.png b/fonts/TewiFontOutline/2600.png new file mode 100644 index 000000000..05508370a Binary files /dev/null and b/fonts/TewiFontOutline/2600.png differ diff --git a/fonts/TewiFontOutline/2601.png b/fonts/TewiFontOutline/2601.png new file mode 100644 index 000000000..f6e097353 Binary files /dev/null and b/fonts/TewiFontOutline/2601.png differ diff --git a/fonts/TewiFontOutline/2602.png b/fonts/TewiFontOutline/2602.png new file mode 100644 index 000000000..a8885554b Binary files /dev/null and b/fonts/TewiFontOutline/2602.png differ diff --git a/fonts/TewiFontOutline/2603.png b/fonts/TewiFontOutline/2603.png new file mode 100644 index 000000000..be1feb1d8 Binary files /dev/null and b/fonts/TewiFontOutline/2603.png differ diff --git a/fonts/TewiFontOutline/2604.png b/fonts/TewiFontOutline/2604.png new file mode 100644 index 000000000..d59ade4d6 Binary files /dev/null and b/fonts/TewiFontOutline/2604.png differ diff --git a/fonts/TewiFontOutline/2605.png b/fonts/TewiFontOutline/2605.png new file mode 100644 index 000000000..23d524451 Binary files /dev/null and b/fonts/TewiFontOutline/2605.png differ diff --git a/fonts/TewiFontOutline/2606.png b/fonts/TewiFontOutline/2606.png new file mode 100644 index 000000000..731c52884 Binary files /dev/null and b/fonts/TewiFontOutline/2606.png differ diff --git a/fonts/TewiFontOutline/2607.png b/fonts/TewiFontOutline/2607.png new file mode 100644 index 000000000..730dd8bbb Binary files /dev/null and b/fonts/TewiFontOutline/2607.png differ diff --git a/fonts/TewiFontOutline/2608.png b/fonts/TewiFontOutline/2608.png new file mode 100644 index 000000000..96c4bbc9a Binary files /dev/null and b/fonts/TewiFontOutline/2608.png differ diff --git a/fonts/TewiFontOutline/2609.png b/fonts/TewiFontOutline/2609.png new file mode 100644 index 000000000..60f2bb95b Binary files /dev/null and b/fonts/TewiFontOutline/2609.png differ diff --git a/fonts/TewiFontOutline/2610.png b/fonts/TewiFontOutline/2610.png new file mode 100644 index 000000000..584dd3713 Binary files /dev/null and b/fonts/TewiFontOutline/2610.png differ diff --git a/fonts/TewiFontOutline/2611.png b/fonts/TewiFontOutline/2611.png new file mode 100644 index 000000000..65c81e80a Binary files /dev/null and b/fonts/TewiFontOutline/2611.png differ diff --git a/fonts/TewiFontOutline/2614.png b/fonts/TewiFontOutline/2614.png new file mode 100644 index 000000000..6c8e7000d Binary files /dev/null and b/fonts/TewiFontOutline/2614.png differ diff --git a/fonts/TewiFontOutline/2616.png b/fonts/TewiFontOutline/2616.png new file mode 100644 index 000000000..56b33a87a Binary files /dev/null and b/fonts/TewiFontOutline/2616.png differ diff --git a/fonts/TewiFontOutline/2617.png b/fonts/TewiFontOutline/2617.png new file mode 100644 index 000000000..52da8a913 Binary files /dev/null and b/fonts/TewiFontOutline/2617.png differ diff --git a/fonts/TewiFontOutline/261E.png b/fonts/TewiFontOutline/261E.png new file mode 100644 index 000000000..7a0416204 Binary files /dev/null and b/fonts/TewiFontOutline/261E.png differ diff --git a/fonts/TewiFontOutline/2630.png b/fonts/TewiFontOutline/2630.png new file mode 100644 index 000000000..d78d8c51c Binary files /dev/null and b/fonts/TewiFontOutline/2630.png differ diff --git a/fonts/TewiFontOutline/2631.png b/fonts/TewiFontOutline/2631.png new file mode 100644 index 000000000..7591020fa Binary files /dev/null and b/fonts/TewiFontOutline/2631.png differ diff --git a/fonts/TewiFontOutline/2632.png b/fonts/TewiFontOutline/2632.png new file mode 100644 index 000000000..3c425a26b Binary files /dev/null and b/fonts/TewiFontOutline/2632.png differ diff --git a/fonts/TewiFontOutline/2633.png b/fonts/TewiFontOutline/2633.png new file mode 100644 index 000000000..85198dfee Binary files /dev/null and b/fonts/TewiFontOutline/2633.png differ diff --git a/fonts/TewiFontOutline/2634.png b/fonts/TewiFontOutline/2634.png new file mode 100644 index 000000000..a2b7756f2 Binary files /dev/null and b/fonts/TewiFontOutline/2634.png differ diff --git a/fonts/TewiFontOutline/2635.png b/fonts/TewiFontOutline/2635.png new file mode 100644 index 000000000..0f0a2ba1e Binary files /dev/null and b/fonts/TewiFontOutline/2635.png differ diff --git a/fonts/TewiFontOutline/2636.png b/fonts/TewiFontOutline/2636.png new file mode 100644 index 000000000..7b952a1c3 Binary files /dev/null and b/fonts/TewiFontOutline/2636.png differ diff --git a/fonts/TewiFontOutline/2637.png b/fonts/TewiFontOutline/2637.png new file mode 100644 index 000000000..beef207c0 Binary files /dev/null and b/fonts/TewiFontOutline/2637.png differ diff --git a/fonts/TewiFontOutline/263A.png b/fonts/TewiFontOutline/263A.png new file mode 100644 index 000000000..a1bb68561 Binary files /dev/null and b/fonts/TewiFontOutline/263A.png differ diff --git a/fonts/TewiFontOutline/263B.png b/fonts/TewiFontOutline/263B.png new file mode 100644 index 000000000..94b8079d5 Binary files /dev/null and b/fonts/TewiFontOutline/263B.png differ diff --git a/fonts/TewiFontOutline/263C.png b/fonts/TewiFontOutline/263C.png new file mode 100644 index 000000000..d8e609bb5 Binary files /dev/null and b/fonts/TewiFontOutline/263C.png differ diff --git a/fonts/TewiFontOutline/263F.png b/fonts/TewiFontOutline/263F.png new file mode 100644 index 000000000..e9e0decc9 Binary files /dev/null and b/fonts/TewiFontOutline/263F.png differ diff --git a/fonts/TewiFontOutline/2640.png b/fonts/TewiFontOutline/2640.png new file mode 100644 index 000000000..2ebc8f121 Binary files /dev/null and b/fonts/TewiFontOutline/2640.png differ diff --git a/fonts/TewiFontOutline/2641.png b/fonts/TewiFontOutline/2641.png new file mode 100644 index 000000000..19ffc9de3 Binary files /dev/null and b/fonts/TewiFontOutline/2641.png differ diff --git a/fonts/TewiFontOutline/2642.png b/fonts/TewiFontOutline/2642.png new file mode 100644 index 000000000..9b3780c07 Binary files /dev/null and b/fonts/TewiFontOutline/2642.png differ diff --git a/fonts/TewiFontOutline/2660.png b/fonts/TewiFontOutline/2660.png new file mode 100644 index 000000000..a7eb0b9ff Binary files /dev/null and b/fonts/TewiFontOutline/2660.png differ diff --git a/fonts/TewiFontOutline/2661.png b/fonts/TewiFontOutline/2661.png new file mode 100644 index 000000000..14ff341cc Binary files /dev/null and b/fonts/TewiFontOutline/2661.png differ diff --git a/fonts/TewiFontOutline/2662.png b/fonts/TewiFontOutline/2662.png new file mode 100644 index 000000000..0e52371ca Binary files /dev/null and b/fonts/TewiFontOutline/2662.png differ diff --git a/fonts/TewiFontOutline/2663.png b/fonts/TewiFontOutline/2663.png new file mode 100644 index 000000000..cc59aaa91 Binary files /dev/null and b/fonts/TewiFontOutline/2663.png differ diff --git a/fonts/TewiFontOutline/2664.png b/fonts/TewiFontOutline/2664.png new file mode 100644 index 000000000..5c308edd2 Binary files /dev/null and b/fonts/TewiFontOutline/2664.png differ diff --git a/fonts/TewiFontOutline/2665.png b/fonts/TewiFontOutline/2665.png new file mode 100644 index 000000000..e99475b61 Binary files /dev/null and b/fonts/TewiFontOutline/2665.png differ diff --git a/fonts/TewiFontOutline/2666.png b/fonts/TewiFontOutline/2666.png new file mode 100644 index 000000000..fe958e7bc Binary files /dev/null and b/fonts/TewiFontOutline/2666.png differ diff --git a/fonts/TewiFontOutline/2667.png b/fonts/TewiFontOutline/2667.png new file mode 100644 index 000000000..749b9091b Binary files /dev/null and b/fonts/TewiFontOutline/2667.png differ diff --git a/fonts/TewiFontOutline/2668.png b/fonts/TewiFontOutline/2668.png new file mode 100644 index 000000000..872a71b98 Binary files /dev/null and b/fonts/TewiFontOutline/2668.png differ diff --git a/fonts/TewiFontOutline/2669.png b/fonts/TewiFontOutline/2669.png new file mode 100644 index 000000000..606a1b7dc Binary files /dev/null and b/fonts/TewiFontOutline/2669.png differ diff --git a/fonts/TewiFontOutline/266A.png b/fonts/TewiFontOutline/266A.png new file mode 100644 index 000000000..ee3d5b6c1 Binary files /dev/null and b/fonts/TewiFontOutline/266A.png differ diff --git a/fonts/TewiFontOutline/266B.png b/fonts/TewiFontOutline/266B.png new file mode 100644 index 000000000..91920f03c Binary files /dev/null and b/fonts/TewiFontOutline/266B.png differ diff --git a/fonts/TewiFontOutline/266C.png b/fonts/TewiFontOutline/266C.png new file mode 100644 index 000000000..f888281fe Binary files /dev/null and b/fonts/TewiFontOutline/266C.png differ diff --git a/fonts/TewiFontOutline/266D.png b/fonts/TewiFontOutline/266D.png new file mode 100644 index 000000000..351ade302 Binary files /dev/null and b/fonts/TewiFontOutline/266D.png differ diff --git a/fonts/TewiFontOutline/266E.png b/fonts/TewiFontOutline/266E.png new file mode 100644 index 000000000..d417d5141 Binary files /dev/null and b/fonts/TewiFontOutline/266E.png differ diff --git a/fonts/TewiFontOutline/266F.png b/fonts/TewiFontOutline/266F.png new file mode 100644 index 000000000..989b54f15 Binary files /dev/null and b/fonts/TewiFontOutline/266F.png differ diff --git a/fonts/TewiFontOutline/26A2.png b/fonts/TewiFontOutline/26A2.png new file mode 100644 index 000000000..46d238302 Binary files /dev/null and b/fonts/TewiFontOutline/26A2.png differ diff --git a/fonts/TewiFontOutline/26A3.png b/fonts/TewiFontOutline/26A3.png new file mode 100644 index 000000000..33bdd02a7 Binary files /dev/null and b/fonts/TewiFontOutline/26A3.png differ diff --git a/fonts/TewiFontOutline/26A4.png b/fonts/TewiFontOutline/26A4.png new file mode 100644 index 000000000..d695ce1c2 Binary files /dev/null and b/fonts/TewiFontOutline/26A4.png differ diff --git a/fonts/TewiFontOutline/26A5.png b/fonts/TewiFontOutline/26A5.png new file mode 100644 index 000000000..2a3c9c073 Binary files /dev/null and b/fonts/TewiFontOutline/26A5.png differ diff --git a/fonts/TewiFontOutline/26A6.png b/fonts/TewiFontOutline/26A6.png new file mode 100644 index 000000000..376a923a0 Binary files /dev/null and b/fonts/TewiFontOutline/26A6.png differ diff --git a/fonts/TewiFontOutline/26A7.png b/fonts/TewiFontOutline/26A7.png new file mode 100644 index 000000000..d426d4bea Binary files /dev/null and b/fonts/TewiFontOutline/26A7.png differ diff --git a/fonts/TewiFontOutline/26A8.png b/fonts/TewiFontOutline/26A8.png new file mode 100644 index 000000000..fb2f316bc Binary files /dev/null and b/fonts/TewiFontOutline/26A8.png differ diff --git a/fonts/TewiFontOutline/26A9.png b/fonts/TewiFontOutline/26A9.png new file mode 100644 index 000000000..a30aa9ae6 Binary files /dev/null and b/fonts/TewiFontOutline/26A9.png differ diff --git a/fonts/TewiFontOutline/2708.png b/fonts/TewiFontOutline/2708.png new file mode 100644 index 000000000..3906c00e1 Binary files /dev/null and b/fonts/TewiFontOutline/2708.png differ diff --git a/fonts/TewiFontOutline/2713.png b/fonts/TewiFontOutline/2713.png new file mode 100644 index 000000000..aa2f94ef5 Binary files /dev/null and b/fonts/TewiFontOutline/2713.png differ diff --git a/fonts/TewiFontOutline/2714.png b/fonts/TewiFontOutline/2714.png new file mode 100644 index 000000000..19790c78c Binary files /dev/null and b/fonts/TewiFontOutline/2714.png differ diff --git a/fonts/TewiFontOutline/2715.png b/fonts/TewiFontOutline/2715.png new file mode 100644 index 000000000..dd7a926e6 Binary files /dev/null and b/fonts/TewiFontOutline/2715.png differ diff --git a/fonts/TewiFontOutline/2716.png b/fonts/TewiFontOutline/2716.png new file mode 100644 index 000000000..8231bfc22 Binary files /dev/null and b/fonts/TewiFontOutline/2716.png differ diff --git a/fonts/TewiFontOutline/2717.png b/fonts/TewiFontOutline/2717.png new file mode 100644 index 000000000..866b3543f Binary files /dev/null and b/fonts/TewiFontOutline/2717.png differ diff --git a/fonts/TewiFontOutline/2718.png b/fonts/TewiFontOutline/2718.png new file mode 100644 index 000000000..baf03ed0c Binary files /dev/null and b/fonts/TewiFontOutline/2718.png differ diff --git a/fonts/TewiFontOutline/271A.png b/fonts/TewiFontOutline/271A.png new file mode 100644 index 000000000..bac45413d Binary files /dev/null and b/fonts/TewiFontOutline/271A.png differ diff --git a/fonts/TewiFontOutline/271B.png b/fonts/TewiFontOutline/271B.png new file mode 100644 index 000000000..165660aab Binary files /dev/null and b/fonts/TewiFontOutline/271B.png differ diff --git a/fonts/TewiFontOutline/271C.png b/fonts/TewiFontOutline/271C.png new file mode 100644 index 000000000..f4ca6f5b7 Binary files /dev/null and b/fonts/TewiFontOutline/271C.png differ diff --git a/fonts/TewiFontOutline/271D.png b/fonts/TewiFontOutline/271D.png new file mode 100644 index 000000000..e0089b35d Binary files /dev/null and b/fonts/TewiFontOutline/271D.png differ diff --git a/fonts/TewiFontOutline/271E.png b/fonts/TewiFontOutline/271E.png new file mode 100644 index 000000000..63f45ad91 Binary files /dev/null and b/fonts/TewiFontOutline/271E.png differ diff --git a/fonts/TewiFontOutline/271F.png b/fonts/TewiFontOutline/271F.png new file mode 100644 index 000000000..f0c65668a Binary files /dev/null and b/fonts/TewiFontOutline/271F.png differ diff --git a/fonts/TewiFontOutline/2720.png b/fonts/TewiFontOutline/2720.png new file mode 100644 index 000000000..254ffb901 Binary files /dev/null and b/fonts/TewiFontOutline/2720.png differ diff --git a/fonts/TewiFontOutline/2721.png b/fonts/TewiFontOutline/2721.png new file mode 100644 index 000000000..2d99c99fb Binary files /dev/null and b/fonts/TewiFontOutline/2721.png differ diff --git a/fonts/TewiFontOutline/2724.png b/fonts/TewiFontOutline/2724.png new file mode 100644 index 000000000..38054d3e4 Binary files /dev/null and b/fonts/TewiFontOutline/2724.png differ diff --git a/fonts/TewiFontOutline/2725.png b/fonts/TewiFontOutline/2725.png new file mode 100644 index 000000000..d664f1637 Binary files /dev/null and b/fonts/TewiFontOutline/2725.png differ diff --git a/fonts/TewiFontOutline/2726.png b/fonts/TewiFontOutline/2726.png new file mode 100644 index 000000000..7c18f0ff5 Binary files /dev/null and b/fonts/TewiFontOutline/2726.png differ diff --git a/fonts/TewiFontOutline/2727.png b/fonts/TewiFontOutline/2727.png new file mode 100644 index 000000000..30ab37a2e Binary files /dev/null and b/fonts/TewiFontOutline/2727.png differ diff --git a/fonts/TewiFontOutline/2729.png b/fonts/TewiFontOutline/2729.png new file mode 100644 index 000000000..731c52884 Binary files /dev/null and b/fonts/TewiFontOutline/2729.png differ diff --git a/fonts/TewiFontOutline/272A.png b/fonts/TewiFontOutline/272A.png new file mode 100644 index 000000000..ef2f96e46 Binary files /dev/null and b/fonts/TewiFontOutline/272A.png differ diff --git a/fonts/TewiFontOutline/272B.png b/fonts/TewiFontOutline/272B.png new file mode 100644 index 000000000..731c52884 Binary files /dev/null and b/fonts/TewiFontOutline/272B.png differ diff --git a/fonts/TewiFontOutline/2733.png b/fonts/TewiFontOutline/2733.png new file mode 100644 index 000000000..992224c26 Binary files /dev/null and b/fonts/TewiFontOutline/2733.png differ diff --git a/fonts/TewiFontOutline/2736.png b/fonts/TewiFontOutline/2736.png new file mode 100644 index 000000000..2f4bcadf1 Binary files /dev/null and b/fonts/TewiFontOutline/2736.png differ diff --git a/fonts/TewiFontOutline/273F.png b/fonts/TewiFontOutline/273F.png new file mode 100644 index 000000000..b5410d614 Binary files /dev/null and b/fonts/TewiFontOutline/273F.png differ diff --git a/fonts/TewiFontOutline/2741.png b/fonts/TewiFontOutline/2741.png new file mode 100644 index 000000000..d58a1caeb Binary files /dev/null and b/fonts/TewiFontOutline/2741.png differ diff --git a/fonts/TewiFontOutline/274F.png b/fonts/TewiFontOutline/274F.png new file mode 100644 index 000000000..076663cfd Binary files /dev/null and b/fonts/TewiFontOutline/274F.png differ diff --git a/fonts/TewiFontOutline/2750.png b/fonts/TewiFontOutline/2750.png new file mode 100644 index 000000000..da9fa22b9 Binary files /dev/null and b/fonts/TewiFontOutline/2750.png differ diff --git a/fonts/TewiFontOutline/2751.png b/fonts/TewiFontOutline/2751.png new file mode 100644 index 000000000..076663cfd Binary files /dev/null and b/fonts/TewiFontOutline/2751.png differ diff --git a/fonts/TewiFontOutline/2752.png b/fonts/TewiFontOutline/2752.png new file mode 100644 index 000000000..da9fa22b9 Binary files /dev/null and b/fonts/TewiFontOutline/2752.png differ diff --git a/fonts/TewiFontOutline/275B.png b/fonts/TewiFontOutline/275B.png new file mode 100644 index 000000000..1fc213805 Binary files /dev/null and b/fonts/TewiFontOutline/275B.png differ diff --git a/fonts/TewiFontOutline/275C.png b/fonts/TewiFontOutline/275C.png new file mode 100644 index 000000000..782a9ee03 Binary files /dev/null and b/fonts/TewiFontOutline/275C.png differ diff --git a/fonts/TewiFontOutline/275D.png b/fonts/TewiFontOutline/275D.png new file mode 100644 index 000000000..84c96f214 Binary files /dev/null and b/fonts/TewiFontOutline/275D.png differ diff --git a/fonts/TewiFontOutline/275E.png b/fonts/TewiFontOutline/275E.png new file mode 100644 index 000000000..d9228279e Binary files /dev/null and b/fonts/TewiFontOutline/275E.png differ diff --git a/fonts/TewiFontOutline/275F.png b/fonts/TewiFontOutline/275F.png new file mode 100644 index 000000000..c59072946 Binary files /dev/null and b/fonts/TewiFontOutline/275F.png differ diff --git a/fonts/TewiFontOutline/2760.png b/fonts/TewiFontOutline/2760.png new file mode 100644 index 000000000..148d63868 Binary files /dev/null and b/fonts/TewiFontOutline/2760.png differ diff --git a/fonts/TewiFontOutline/2764.png b/fonts/TewiFontOutline/2764.png new file mode 100644 index 000000000..e99475b61 Binary files /dev/null and b/fonts/TewiFontOutline/2764.png differ diff --git a/fonts/TewiFontOutline/2765.png b/fonts/TewiFontOutline/2765.png new file mode 100644 index 000000000..a7a37e2da Binary files /dev/null and b/fonts/TewiFontOutline/2765.png differ diff --git a/fonts/TewiFontOutline/2766.png b/fonts/TewiFontOutline/2766.png new file mode 100644 index 000000000..a456af775 Binary files /dev/null and b/fonts/TewiFontOutline/2766.png differ diff --git a/fonts/TewiFontOutline/276C.png b/fonts/TewiFontOutline/276C.png new file mode 100644 index 000000000..223ce1bb5 Binary files /dev/null and b/fonts/TewiFontOutline/276C.png differ diff --git a/fonts/TewiFontOutline/276D.png b/fonts/TewiFontOutline/276D.png new file mode 100644 index 000000000..0a780c59b Binary files /dev/null and b/fonts/TewiFontOutline/276D.png differ diff --git a/fonts/TewiFontOutline/276E.png b/fonts/TewiFontOutline/276E.png new file mode 100644 index 000000000..cb1ac2549 Binary files /dev/null and b/fonts/TewiFontOutline/276E.png differ diff --git a/fonts/TewiFontOutline/276F.png b/fonts/TewiFontOutline/276F.png new file mode 100644 index 000000000..3314cac9b Binary files /dev/null and b/fonts/TewiFontOutline/276F.png differ diff --git a/fonts/TewiFontOutline/2770.png b/fonts/TewiFontOutline/2770.png new file mode 100644 index 000000000..2d364ea20 Binary files /dev/null and b/fonts/TewiFontOutline/2770.png differ diff --git a/fonts/TewiFontOutline/2771.png b/fonts/TewiFontOutline/2771.png new file mode 100644 index 000000000..8335fe8b8 Binary files /dev/null and b/fonts/TewiFontOutline/2771.png differ diff --git a/fonts/TewiFontOutline/278A.png b/fonts/TewiFontOutline/278A.png new file mode 100644 index 000000000..f56285aa2 Binary files /dev/null and b/fonts/TewiFontOutline/278A.png differ diff --git a/fonts/TewiFontOutline/278B.png b/fonts/TewiFontOutline/278B.png new file mode 100644 index 000000000..81957d313 Binary files /dev/null and b/fonts/TewiFontOutline/278B.png differ diff --git a/fonts/TewiFontOutline/278C.png b/fonts/TewiFontOutline/278C.png new file mode 100644 index 000000000..3f0e3101f Binary files /dev/null and b/fonts/TewiFontOutline/278C.png differ diff --git a/fonts/TewiFontOutline/278D.png b/fonts/TewiFontOutline/278D.png new file mode 100644 index 000000000..70c0efe4f Binary files /dev/null and b/fonts/TewiFontOutline/278D.png differ diff --git a/fonts/TewiFontOutline/278E.png b/fonts/TewiFontOutline/278E.png new file mode 100644 index 000000000..57911271a Binary files /dev/null and b/fonts/TewiFontOutline/278E.png differ diff --git a/fonts/TewiFontOutline/278F.png b/fonts/TewiFontOutline/278F.png new file mode 100644 index 000000000..5828d0446 Binary files /dev/null and b/fonts/TewiFontOutline/278F.png differ diff --git a/fonts/TewiFontOutline/2790.png b/fonts/TewiFontOutline/2790.png new file mode 100644 index 000000000..e809b3247 Binary files /dev/null and b/fonts/TewiFontOutline/2790.png differ diff --git a/fonts/TewiFontOutline/2791.png b/fonts/TewiFontOutline/2791.png new file mode 100644 index 000000000..83a346218 Binary files /dev/null and b/fonts/TewiFontOutline/2791.png differ diff --git a/fonts/TewiFontOutline/2792.png b/fonts/TewiFontOutline/2792.png new file mode 100644 index 000000000..47f6e1f52 Binary files /dev/null and b/fonts/TewiFontOutline/2792.png differ diff --git a/fonts/TewiFontOutline/2793.png b/fonts/TewiFontOutline/2793.png new file mode 100644 index 000000000..48d22b01b Binary files /dev/null and b/fonts/TewiFontOutline/2793.png differ diff --git a/fonts/TewiFontOutline/2794.png b/fonts/TewiFontOutline/2794.png new file mode 100644 index 000000000..36a12b455 Binary files /dev/null and b/fonts/TewiFontOutline/2794.png differ diff --git a/fonts/TewiFontOutline/2795.png b/fonts/TewiFontOutline/2795.png new file mode 100644 index 000000000..bac45413d Binary files /dev/null and b/fonts/TewiFontOutline/2795.png differ diff --git a/fonts/TewiFontOutline/2796.png b/fonts/TewiFontOutline/2796.png new file mode 100644 index 000000000..9a90f770b Binary files /dev/null and b/fonts/TewiFontOutline/2796.png differ diff --git a/fonts/TewiFontOutline/2797.png b/fonts/TewiFontOutline/2797.png new file mode 100644 index 000000000..fd848d036 Binary files /dev/null and b/fonts/TewiFontOutline/2797.png differ diff --git a/fonts/TewiFontOutline/2798.png b/fonts/TewiFontOutline/2798.png new file mode 100644 index 000000000..7f4a31085 Binary files /dev/null and b/fonts/TewiFontOutline/2798.png differ diff --git a/fonts/TewiFontOutline/2799.png b/fonts/TewiFontOutline/2799.png new file mode 100644 index 000000000..d9c1aab3d Binary files /dev/null and b/fonts/TewiFontOutline/2799.png differ diff --git a/fonts/TewiFontOutline/279A.png b/fonts/TewiFontOutline/279A.png new file mode 100644 index 000000000..57cc5fe6e Binary files /dev/null and b/fonts/TewiFontOutline/279A.png differ diff --git a/fonts/TewiFontOutline/279B.png b/fonts/TewiFontOutline/279B.png new file mode 100644 index 000000000..616c60935 Binary files /dev/null and b/fonts/TewiFontOutline/279B.png differ diff --git a/fonts/TewiFontOutline/27E8.png b/fonts/TewiFontOutline/27E8.png new file mode 100644 index 000000000..cc0250bf9 Binary files /dev/null and b/fonts/TewiFontOutline/27E8.png differ diff --git a/fonts/TewiFontOutline/27E9.png b/fonts/TewiFontOutline/27E9.png new file mode 100644 index 000000000..840851df2 Binary files /dev/null and b/fonts/TewiFontOutline/27E9.png differ diff --git a/fonts/TewiFontOutline/27F2.png b/fonts/TewiFontOutline/27F2.png new file mode 100644 index 000000000..cd49a6ccc Binary files /dev/null and b/fonts/TewiFontOutline/27F2.png differ diff --git a/fonts/TewiFontOutline/27F3.png b/fonts/TewiFontOutline/27F3.png new file mode 100644 index 000000000..175a19d92 Binary files /dev/null and b/fonts/TewiFontOutline/27F3.png differ diff --git a/fonts/TewiFontOutline/27F5.png b/fonts/TewiFontOutline/27F5.png new file mode 100644 index 000000000..bf48abc6b Binary files /dev/null and b/fonts/TewiFontOutline/27F5.png differ diff --git a/fonts/TewiFontOutline/27F6.png b/fonts/TewiFontOutline/27F6.png new file mode 100644 index 000000000..3aa028988 Binary files /dev/null and b/fonts/TewiFontOutline/27F6.png differ diff --git a/fonts/TewiFontOutline/27F8.png b/fonts/TewiFontOutline/27F8.png new file mode 100644 index 000000000..bb8fcd1dc Binary files /dev/null and b/fonts/TewiFontOutline/27F8.png differ diff --git a/fonts/TewiFontOutline/27F9.png b/fonts/TewiFontOutline/27F9.png new file mode 100644 index 000000000..861dd5cf6 Binary files /dev/null and b/fonts/TewiFontOutline/27F9.png differ diff --git a/fonts/TewiFontOutline/27FB.png b/fonts/TewiFontOutline/27FB.png new file mode 100644 index 000000000..b6abff9dd Binary files /dev/null and b/fonts/TewiFontOutline/27FB.png differ diff --git a/fonts/TewiFontOutline/27FC.png b/fonts/TewiFontOutline/27FC.png new file mode 100644 index 000000000..81bffe887 Binary files /dev/null and b/fonts/TewiFontOutline/27FC.png differ diff --git a/fonts/TewiFontOutline/27FD.png b/fonts/TewiFontOutline/27FD.png new file mode 100644 index 000000000..13bcf47f6 Binary files /dev/null and b/fonts/TewiFontOutline/27FD.png differ diff --git a/fonts/TewiFontOutline/27FE.png b/fonts/TewiFontOutline/27FE.png new file mode 100644 index 000000000..25bdba7fb Binary files /dev/null and b/fonts/TewiFontOutline/27FE.png differ diff --git a/fonts/TewiFontOutline/27FF.png b/fonts/TewiFontOutline/27FF.png new file mode 100644 index 000000000..b128ac477 Binary files /dev/null and b/fonts/TewiFontOutline/27FF.png differ diff --git a/fonts/TewiFontOutline/2801.png b/fonts/TewiFontOutline/2801.png new file mode 100644 index 000000000..9edabd920 Binary files /dev/null and b/fonts/TewiFontOutline/2801.png differ diff --git a/fonts/TewiFontOutline/2802.png b/fonts/TewiFontOutline/2802.png new file mode 100644 index 000000000..25a4c4961 Binary files /dev/null and b/fonts/TewiFontOutline/2802.png differ diff --git a/fonts/TewiFontOutline/2803.png b/fonts/TewiFontOutline/2803.png new file mode 100644 index 000000000..4493e479a Binary files /dev/null and b/fonts/TewiFontOutline/2803.png differ diff --git a/fonts/TewiFontOutline/2804.png b/fonts/TewiFontOutline/2804.png new file mode 100644 index 000000000..e1e4ff88b Binary files /dev/null and b/fonts/TewiFontOutline/2804.png differ diff --git a/fonts/TewiFontOutline/2805.png b/fonts/TewiFontOutline/2805.png new file mode 100644 index 000000000..31db8169e Binary files /dev/null and b/fonts/TewiFontOutline/2805.png differ diff --git a/fonts/TewiFontOutline/2806.png b/fonts/TewiFontOutline/2806.png new file mode 100644 index 000000000..bcb94147d Binary files /dev/null and b/fonts/TewiFontOutline/2806.png differ diff --git a/fonts/TewiFontOutline/2807.png b/fonts/TewiFontOutline/2807.png new file mode 100644 index 000000000..5d92c6dd1 Binary files /dev/null and b/fonts/TewiFontOutline/2807.png differ diff --git a/fonts/TewiFontOutline/2808.png b/fonts/TewiFontOutline/2808.png new file mode 100644 index 000000000..0f86c65d3 Binary files /dev/null and b/fonts/TewiFontOutline/2808.png differ diff --git a/fonts/TewiFontOutline/2809.png b/fonts/TewiFontOutline/2809.png new file mode 100644 index 000000000..874555a7b Binary files /dev/null and b/fonts/TewiFontOutline/2809.png differ diff --git a/fonts/TewiFontOutline/280A.png b/fonts/TewiFontOutline/280A.png new file mode 100644 index 000000000..441cd5b23 Binary files /dev/null and b/fonts/TewiFontOutline/280A.png differ diff --git a/fonts/TewiFontOutline/280B.png b/fonts/TewiFontOutline/280B.png new file mode 100644 index 000000000..c2c403b49 Binary files /dev/null and b/fonts/TewiFontOutline/280B.png differ diff --git a/fonts/TewiFontOutline/280C.png b/fonts/TewiFontOutline/280C.png new file mode 100644 index 000000000..df397b1e9 Binary files /dev/null and b/fonts/TewiFontOutline/280C.png differ diff --git a/fonts/TewiFontOutline/280D.png b/fonts/TewiFontOutline/280D.png new file mode 100644 index 000000000..bf8190b6a Binary files /dev/null and b/fonts/TewiFontOutline/280D.png differ diff --git a/fonts/TewiFontOutline/280E.png b/fonts/TewiFontOutline/280E.png new file mode 100644 index 000000000..eb91a59a7 Binary files /dev/null and b/fonts/TewiFontOutline/280E.png differ diff --git a/fonts/TewiFontOutline/280F.png b/fonts/TewiFontOutline/280F.png new file mode 100644 index 000000000..ba3bd5d3d Binary files /dev/null and b/fonts/TewiFontOutline/280F.png differ diff --git a/fonts/TewiFontOutline/2810.png b/fonts/TewiFontOutline/2810.png new file mode 100644 index 000000000..7eae28677 Binary files /dev/null and b/fonts/TewiFontOutline/2810.png differ diff --git a/fonts/TewiFontOutline/2811.png b/fonts/TewiFontOutline/2811.png new file mode 100644 index 000000000..32c9883b5 Binary files /dev/null and b/fonts/TewiFontOutline/2811.png differ diff --git a/fonts/TewiFontOutline/2812.png b/fonts/TewiFontOutline/2812.png new file mode 100644 index 000000000..7477a143c Binary files /dev/null and b/fonts/TewiFontOutline/2812.png differ diff --git a/fonts/TewiFontOutline/2813.png b/fonts/TewiFontOutline/2813.png new file mode 100644 index 000000000..6f0838e3a Binary files /dev/null and b/fonts/TewiFontOutline/2813.png differ diff --git a/fonts/TewiFontOutline/2814.png b/fonts/TewiFontOutline/2814.png new file mode 100644 index 000000000..ddfd85219 Binary files /dev/null and b/fonts/TewiFontOutline/2814.png differ diff --git a/fonts/TewiFontOutline/2815.png b/fonts/TewiFontOutline/2815.png new file mode 100644 index 000000000..6ffce6192 Binary files /dev/null and b/fonts/TewiFontOutline/2815.png differ diff --git a/fonts/TewiFontOutline/2816.png b/fonts/TewiFontOutline/2816.png new file mode 100644 index 000000000..8bd59de07 Binary files /dev/null and b/fonts/TewiFontOutline/2816.png differ diff --git a/fonts/TewiFontOutline/2817.png b/fonts/TewiFontOutline/2817.png new file mode 100644 index 000000000..164ecdd94 Binary files /dev/null and b/fonts/TewiFontOutline/2817.png differ diff --git a/fonts/TewiFontOutline/2818.png b/fonts/TewiFontOutline/2818.png new file mode 100644 index 000000000..ae1b71927 Binary files /dev/null and b/fonts/TewiFontOutline/2818.png differ diff --git a/fonts/TewiFontOutline/2819.png b/fonts/TewiFontOutline/2819.png new file mode 100644 index 000000000..52680f8d9 Binary files /dev/null and b/fonts/TewiFontOutline/2819.png differ diff --git a/fonts/TewiFontOutline/281A.png b/fonts/TewiFontOutline/281A.png new file mode 100644 index 000000000..4202ac513 Binary files /dev/null and b/fonts/TewiFontOutline/281A.png differ diff --git a/fonts/TewiFontOutline/281B.png b/fonts/TewiFontOutline/281B.png new file mode 100644 index 000000000..82fe2c0b0 Binary files /dev/null and b/fonts/TewiFontOutline/281B.png differ diff --git a/fonts/TewiFontOutline/281C.png b/fonts/TewiFontOutline/281C.png new file mode 100644 index 000000000..38394136c Binary files /dev/null and b/fonts/TewiFontOutline/281C.png differ diff --git a/fonts/TewiFontOutline/281D.png b/fonts/TewiFontOutline/281D.png new file mode 100644 index 000000000..0a76db0c3 Binary files /dev/null and b/fonts/TewiFontOutline/281D.png differ diff --git a/fonts/TewiFontOutline/281E.png b/fonts/TewiFontOutline/281E.png new file mode 100644 index 000000000..10a384fb0 Binary files /dev/null and b/fonts/TewiFontOutline/281E.png differ diff --git a/fonts/TewiFontOutline/281F.png b/fonts/TewiFontOutline/281F.png new file mode 100644 index 000000000..c8394d946 Binary files /dev/null and b/fonts/TewiFontOutline/281F.png differ diff --git a/fonts/TewiFontOutline/2820.png b/fonts/TewiFontOutline/2820.png new file mode 100644 index 000000000..b6b3fa8d6 Binary files /dev/null and b/fonts/TewiFontOutline/2820.png differ diff --git a/fonts/TewiFontOutline/2821.png b/fonts/TewiFontOutline/2821.png new file mode 100644 index 000000000..e65503779 Binary files /dev/null and b/fonts/TewiFontOutline/2821.png differ diff --git a/fonts/TewiFontOutline/2822.png b/fonts/TewiFontOutline/2822.png new file mode 100644 index 000000000..ca43b2e11 Binary files /dev/null and b/fonts/TewiFontOutline/2822.png differ diff --git a/fonts/TewiFontOutline/2823.png b/fonts/TewiFontOutline/2823.png new file mode 100644 index 000000000..45c7ccabe Binary files /dev/null and b/fonts/TewiFontOutline/2823.png differ diff --git a/fonts/TewiFontOutline/2824.png b/fonts/TewiFontOutline/2824.png new file mode 100644 index 000000000..03f35f461 Binary files /dev/null and b/fonts/TewiFontOutline/2824.png differ diff --git a/fonts/TewiFontOutline/2825.png b/fonts/TewiFontOutline/2825.png new file mode 100644 index 000000000..d2e4f6177 Binary files /dev/null and b/fonts/TewiFontOutline/2825.png differ diff --git a/fonts/TewiFontOutline/2826.png b/fonts/TewiFontOutline/2826.png new file mode 100644 index 000000000..a033c2d2d Binary files /dev/null and b/fonts/TewiFontOutline/2826.png differ diff --git a/fonts/TewiFontOutline/2827.png b/fonts/TewiFontOutline/2827.png new file mode 100644 index 000000000..58a0f14d8 Binary files /dev/null and b/fonts/TewiFontOutline/2827.png differ diff --git a/fonts/TewiFontOutline/2828.png b/fonts/TewiFontOutline/2828.png new file mode 100644 index 000000000..518406d84 Binary files /dev/null and b/fonts/TewiFontOutline/2828.png differ diff --git a/fonts/TewiFontOutline/2829.png b/fonts/TewiFontOutline/2829.png new file mode 100644 index 000000000..532cc3144 Binary files /dev/null and b/fonts/TewiFontOutline/2829.png differ diff --git a/fonts/TewiFontOutline/282A.png b/fonts/TewiFontOutline/282A.png new file mode 100644 index 000000000..e25915216 Binary files /dev/null and b/fonts/TewiFontOutline/282A.png differ diff --git a/fonts/TewiFontOutline/282B.png b/fonts/TewiFontOutline/282B.png new file mode 100644 index 000000000..bd7d9158f Binary files /dev/null and b/fonts/TewiFontOutline/282B.png differ diff --git a/fonts/TewiFontOutline/282C.png b/fonts/TewiFontOutline/282C.png new file mode 100644 index 000000000..3304e4ef4 Binary files /dev/null and b/fonts/TewiFontOutline/282C.png differ diff --git a/fonts/TewiFontOutline/282D.png b/fonts/TewiFontOutline/282D.png new file mode 100644 index 000000000..e679a673e Binary files /dev/null and b/fonts/TewiFontOutline/282D.png differ diff --git a/fonts/TewiFontOutline/282E.png b/fonts/TewiFontOutline/282E.png new file mode 100644 index 000000000..90c022030 Binary files /dev/null and b/fonts/TewiFontOutline/282E.png differ diff --git a/fonts/TewiFontOutline/282F.png b/fonts/TewiFontOutline/282F.png new file mode 100644 index 000000000..c0f9e8206 Binary files /dev/null and b/fonts/TewiFontOutline/282F.png differ diff --git a/fonts/TewiFontOutline/2830.png b/fonts/TewiFontOutline/2830.png new file mode 100644 index 000000000..7e1953947 Binary files /dev/null and b/fonts/TewiFontOutline/2830.png differ diff --git a/fonts/TewiFontOutline/2831.png b/fonts/TewiFontOutline/2831.png new file mode 100644 index 000000000..5dc4915d0 Binary files /dev/null and b/fonts/TewiFontOutline/2831.png differ diff --git a/fonts/TewiFontOutline/2832.png b/fonts/TewiFontOutline/2832.png new file mode 100644 index 000000000..1da9fdc8a Binary files /dev/null and b/fonts/TewiFontOutline/2832.png differ diff --git a/fonts/TewiFontOutline/2833.png b/fonts/TewiFontOutline/2833.png new file mode 100644 index 000000000..7ea16caa8 Binary files /dev/null and b/fonts/TewiFontOutline/2833.png differ diff --git a/fonts/TewiFontOutline/2834.png b/fonts/TewiFontOutline/2834.png new file mode 100644 index 000000000..4ab0d5e12 Binary files /dev/null and b/fonts/TewiFontOutline/2834.png differ diff --git a/fonts/TewiFontOutline/2835.png b/fonts/TewiFontOutline/2835.png new file mode 100644 index 000000000..131518dcc Binary files /dev/null and b/fonts/TewiFontOutline/2835.png differ diff --git a/fonts/TewiFontOutline/2836.png b/fonts/TewiFontOutline/2836.png new file mode 100644 index 000000000..0e0cd5da7 Binary files /dev/null and b/fonts/TewiFontOutline/2836.png differ diff --git a/fonts/TewiFontOutline/2837.png b/fonts/TewiFontOutline/2837.png new file mode 100644 index 000000000..a4d5dd600 Binary files /dev/null and b/fonts/TewiFontOutline/2837.png differ diff --git a/fonts/TewiFontOutline/2838.png b/fonts/TewiFontOutline/2838.png new file mode 100644 index 000000000..0aeb88c07 Binary files /dev/null and b/fonts/TewiFontOutline/2838.png differ diff --git a/fonts/TewiFontOutline/2839.png b/fonts/TewiFontOutline/2839.png new file mode 100644 index 000000000..91a117586 Binary files /dev/null and b/fonts/TewiFontOutline/2839.png differ diff --git a/fonts/TewiFontOutline/283A.png b/fonts/TewiFontOutline/283A.png new file mode 100644 index 000000000..91efe6894 Binary files /dev/null and b/fonts/TewiFontOutline/283A.png differ diff --git a/fonts/TewiFontOutline/283B.png b/fonts/TewiFontOutline/283B.png new file mode 100644 index 000000000..b569bb2e0 Binary files /dev/null and b/fonts/TewiFontOutline/283B.png differ diff --git a/fonts/TewiFontOutline/283C.png b/fonts/TewiFontOutline/283C.png new file mode 100644 index 000000000..ca7ed7f46 Binary files /dev/null and b/fonts/TewiFontOutline/283C.png differ diff --git a/fonts/TewiFontOutline/283D.png b/fonts/TewiFontOutline/283D.png new file mode 100644 index 000000000..d255be397 Binary files /dev/null and b/fonts/TewiFontOutline/283D.png differ diff --git a/fonts/TewiFontOutline/283E.png b/fonts/TewiFontOutline/283E.png new file mode 100644 index 000000000..9cd7eb784 Binary files /dev/null and b/fonts/TewiFontOutline/283E.png differ diff --git a/fonts/TewiFontOutline/283F.png b/fonts/TewiFontOutline/283F.png new file mode 100644 index 000000000..96a0f1ea4 Binary files /dev/null and b/fonts/TewiFontOutline/283F.png differ diff --git a/fonts/TewiFontOutline/2840.png b/fonts/TewiFontOutline/2840.png new file mode 100644 index 000000000..46f567054 Binary files /dev/null and b/fonts/TewiFontOutline/2840.png differ diff --git a/fonts/TewiFontOutline/2841.png b/fonts/TewiFontOutline/2841.png new file mode 100644 index 000000000..8d29979b9 Binary files /dev/null and b/fonts/TewiFontOutline/2841.png differ diff --git a/fonts/TewiFontOutline/2842.png b/fonts/TewiFontOutline/2842.png new file mode 100644 index 000000000..c93d25333 Binary files /dev/null and b/fonts/TewiFontOutline/2842.png differ diff --git a/fonts/TewiFontOutline/2843.png b/fonts/TewiFontOutline/2843.png new file mode 100644 index 000000000..0e860a541 Binary files /dev/null and b/fonts/TewiFontOutline/2843.png differ diff --git a/fonts/TewiFontOutline/2844.png b/fonts/TewiFontOutline/2844.png new file mode 100644 index 000000000..ee4b23603 Binary files /dev/null and b/fonts/TewiFontOutline/2844.png differ diff --git a/fonts/TewiFontOutline/2845.png b/fonts/TewiFontOutline/2845.png new file mode 100644 index 000000000..767ed0f5b Binary files /dev/null and b/fonts/TewiFontOutline/2845.png differ diff --git a/fonts/TewiFontOutline/2846.png b/fonts/TewiFontOutline/2846.png new file mode 100644 index 000000000..2cb0790e1 Binary files /dev/null and b/fonts/TewiFontOutline/2846.png differ diff --git a/fonts/TewiFontOutline/2847.png b/fonts/TewiFontOutline/2847.png new file mode 100644 index 000000000..593f41da7 Binary files /dev/null and b/fonts/TewiFontOutline/2847.png differ diff --git a/fonts/TewiFontOutline/2848.png b/fonts/TewiFontOutline/2848.png new file mode 100644 index 000000000..deede2ef2 Binary files /dev/null and b/fonts/TewiFontOutline/2848.png differ diff --git a/fonts/TewiFontOutline/2849.png b/fonts/TewiFontOutline/2849.png new file mode 100644 index 000000000..d6efefa63 Binary files /dev/null and b/fonts/TewiFontOutline/2849.png differ diff --git a/fonts/TewiFontOutline/284A.png b/fonts/TewiFontOutline/284A.png new file mode 100644 index 000000000..e6a3f5869 Binary files /dev/null and b/fonts/TewiFontOutline/284A.png differ diff --git a/fonts/TewiFontOutline/284B.png b/fonts/TewiFontOutline/284B.png new file mode 100644 index 000000000..ab13ca304 Binary files /dev/null and b/fonts/TewiFontOutline/284B.png differ diff --git a/fonts/TewiFontOutline/284C.png b/fonts/TewiFontOutline/284C.png new file mode 100644 index 000000000..fa1aeb360 Binary files /dev/null and b/fonts/TewiFontOutline/284C.png differ diff --git a/fonts/TewiFontOutline/284D.png b/fonts/TewiFontOutline/284D.png new file mode 100644 index 000000000..38d2cb701 Binary files /dev/null and b/fonts/TewiFontOutline/284D.png differ diff --git a/fonts/TewiFontOutline/284E.png b/fonts/TewiFontOutline/284E.png new file mode 100644 index 000000000..42c3777c4 Binary files /dev/null and b/fonts/TewiFontOutline/284E.png differ diff --git a/fonts/TewiFontOutline/284F.png b/fonts/TewiFontOutline/284F.png new file mode 100644 index 000000000..8a3d8fe97 Binary files /dev/null and b/fonts/TewiFontOutline/284F.png differ diff --git a/fonts/TewiFontOutline/2850.png b/fonts/TewiFontOutline/2850.png new file mode 100644 index 000000000..779923758 Binary files /dev/null and b/fonts/TewiFontOutline/2850.png differ diff --git a/fonts/TewiFontOutline/2851.png b/fonts/TewiFontOutline/2851.png new file mode 100644 index 000000000..92701f2d1 Binary files /dev/null and b/fonts/TewiFontOutline/2851.png differ diff --git a/fonts/TewiFontOutline/2852.png b/fonts/TewiFontOutline/2852.png new file mode 100644 index 000000000..7f7479554 Binary files /dev/null and b/fonts/TewiFontOutline/2852.png differ diff --git a/fonts/TewiFontOutline/2853.png b/fonts/TewiFontOutline/2853.png new file mode 100644 index 000000000..59355b7cd Binary files /dev/null and b/fonts/TewiFontOutline/2853.png differ diff --git a/fonts/TewiFontOutline/2854.png b/fonts/TewiFontOutline/2854.png new file mode 100644 index 000000000..45a8c3c3b Binary files /dev/null and b/fonts/TewiFontOutline/2854.png differ diff --git a/fonts/TewiFontOutline/2855.png b/fonts/TewiFontOutline/2855.png new file mode 100644 index 000000000..59e81f821 Binary files /dev/null and b/fonts/TewiFontOutline/2855.png differ diff --git a/fonts/TewiFontOutline/2856.png b/fonts/TewiFontOutline/2856.png new file mode 100644 index 000000000..9cd6df3c2 Binary files /dev/null and b/fonts/TewiFontOutline/2856.png differ diff --git a/fonts/TewiFontOutline/2857.png b/fonts/TewiFontOutline/2857.png new file mode 100644 index 000000000..191353ff0 Binary files /dev/null and b/fonts/TewiFontOutline/2857.png differ diff --git a/fonts/TewiFontOutline/2858.png b/fonts/TewiFontOutline/2858.png new file mode 100644 index 000000000..d8449b094 Binary files /dev/null and b/fonts/TewiFontOutline/2858.png differ diff --git a/fonts/TewiFontOutline/2859.png b/fonts/TewiFontOutline/2859.png new file mode 100644 index 000000000..fa136c4b9 Binary files /dev/null and b/fonts/TewiFontOutline/2859.png differ diff --git a/fonts/TewiFontOutline/285A.png b/fonts/TewiFontOutline/285A.png new file mode 100644 index 000000000..9a591cf62 Binary files /dev/null and b/fonts/TewiFontOutline/285A.png differ diff --git a/fonts/TewiFontOutline/285B.png b/fonts/TewiFontOutline/285B.png new file mode 100644 index 000000000..a699be4d7 Binary files /dev/null and b/fonts/TewiFontOutline/285B.png differ diff --git a/fonts/TewiFontOutline/285C.png b/fonts/TewiFontOutline/285C.png new file mode 100644 index 000000000..c2983c721 Binary files /dev/null and b/fonts/TewiFontOutline/285C.png differ diff --git a/fonts/TewiFontOutline/285D.png b/fonts/TewiFontOutline/285D.png new file mode 100644 index 000000000..10ad9302d Binary files /dev/null and b/fonts/TewiFontOutline/285D.png differ diff --git a/fonts/TewiFontOutline/285E.png b/fonts/TewiFontOutline/285E.png new file mode 100644 index 000000000..77fa25060 Binary files /dev/null and b/fonts/TewiFontOutline/285E.png differ diff --git a/fonts/TewiFontOutline/285F.png b/fonts/TewiFontOutline/285F.png new file mode 100644 index 000000000..3659beaba Binary files /dev/null and b/fonts/TewiFontOutline/285F.png differ diff --git a/fonts/TewiFontOutline/2860.png b/fonts/TewiFontOutline/2860.png new file mode 100644 index 000000000..640e40799 Binary files /dev/null and b/fonts/TewiFontOutline/2860.png differ diff --git a/fonts/TewiFontOutline/2861.png b/fonts/TewiFontOutline/2861.png new file mode 100644 index 000000000..6b0d813bb Binary files /dev/null and b/fonts/TewiFontOutline/2861.png differ diff --git a/fonts/TewiFontOutline/2862.png b/fonts/TewiFontOutline/2862.png new file mode 100644 index 000000000..1658e6cfa Binary files /dev/null and b/fonts/TewiFontOutline/2862.png differ diff --git a/fonts/TewiFontOutline/2863.png b/fonts/TewiFontOutline/2863.png new file mode 100644 index 000000000..74f79afc3 Binary files /dev/null and b/fonts/TewiFontOutline/2863.png differ diff --git a/fonts/TewiFontOutline/2864.png b/fonts/TewiFontOutline/2864.png new file mode 100644 index 000000000..cdece435c Binary files /dev/null and b/fonts/TewiFontOutline/2864.png differ diff --git a/fonts/TewiFontOutline/2865.png b/fonts/TewiFontOutline/2865.png new file mode 100644 index 000000000..9238c9657 Binary files /dev/null and b/fonts/TewiFontOutline/2865.png differ diff --git a/fonts/TewiFontOutline/2866.png b/fonts/TewiFontOutline/2866.png new file mode 100644 index 000000000..c4bd2b35e Binary files /dev/null and b/fonts/TewiFontOutline/2866.png differ diff --git a/fonts/TewiFontOutline/2867.png b/fonts/TewiFontOutline/2867.png new file mode 100644 index 000000000..aa5a0383a Binary files /dev/null and b/fonts/TewiFontOutline/2867.png differ diff --git a/fonts/TewiFontOutline/2868.png b/fonts/TewiFontOutline/2868.png new file mode 100644 index 000000000..c84b407ab Binary files /dev/null and b/fonts/TewiFontOutline/2868.png differ diff --git a/fonts/TewiFontOutline/2869.png b/fonts/TewiFontOutline/2869.png new file mode 100644 index 000000000..bbb1ffa4b Binary files /dev/null and b/fonts/TewiFontOutline/2869.png differ diff --git a/fonts/TewiFontOutline/286A.png b/fonts/TewiFontOutline/286A.png new file mode 100644 index 000000000..28e9b1ebe Binary files /dev/null and b/fonts/TewiFontOutline/286A.png differ diff --git a/fonts/TewiFontOutline/286B.png b/fonts/TewiFontOutline/286B.png new file mode 100644 index 000000000..07f6a0535 Binary files /dev/null and b/fonts/TewiFontOutline/286B.png differ diff --git a/fonts/TewiFontOutline/286C.png b/fonts/TewiFontOutline/286C.png new file mode 100644 index 000000000..d0c655c13 Binary files /dev/null and b/fonts/TewiFontOutline/286C.png differ diff --git a/fonts/TewiFontOutline/286D.png b/fonts/TewiFontOutline/286D.png new file mode 100644 index 000000000..ffd6fc5df Binary files /dev/null and b/fonts/TewiFontOutline/286D.png differ diff --git a/fonts/TewiFontOutline/286E.png b/fonts/TewiFontOutline/286E.png new file mode 100644 index 000000000..f736860dc Binary files /dev/null and b/fonts/TewiFontOutline/286E.png differ diff --git a/fonts/TewiFontOutline/286F.png b/fonts/TewiFontOutline/286F.png new file mode 100644 index 000000000..9327fb66b Binary files /dev/null and b/fonts/TewiFontOutline/286F.png differ diff --git a/fonts/TewiFontOutline/2870.png b/fonts/TewiFontOutline/2870.png new file mode 100644 index 000000000..ea3ec11bb Binary files /dev/null and b/fonts/TewiFontOutline/2870.png differ diff --git a/fonts/TewiFontOutline/2871.png b/fonts/TewiFontOutline/2871.png new file mode 100644 index 000000000..a00afbc8e Binary files /dev/null and b/fonts/TewiFontOutline/2871.png differ diff --git a/fonts/TewiFontOutline/2872.png b/fonts/TewiFontOutline/2872.png new file mode 100644 index 000000000..bb303c494 Binary files /dev/null and b/fonts/TewiFontOutline/2872.png differ diff --git a/fonts/TewiFontOutline/2873.png b/fonts/TewiFontOutline/2873.png new file mode 100644 index 000000000..b0fbd00d9 Binary files /dev/null and b/fonts/TewiFontOutline/2873.png differ diff --git a/fonts/TewiFontOutline/2874.png b/fonts/TewiFontOutline/2874.png new file mode 100644 index 000000000..34c271458 Binary files /dev/null and b/fonts/TewiFontOutline/2874.png differ diff --git a/fonts/TewiFontOutline/2875.png b/fonts/TewiFontOutline/2875.png new file mode 100644 index 000000000..5672ad8dd Binary files /dev/null and b/fonts/TewiFontOutline/2875.png differ diff --git a/fonts/TewiFontOutline/2876.png b/fonts/TewiFontOutline/2876.png new file mode 100644 index 000000000..b645acb2e Binary files /dev/null and b/fonts/TewiFontOutline/2876.png differ diff --git a/fonts/TewiFontOutline/2877.png b/fonts/TewiFontOutline/2877.png new file mode 100644 index 000000000..f826d5cb6 Binary files /dev/null and b/fonts/TewiFontOutline/2877.png differ diff --git a/fonts/TewiFontOutline/2878.png b/fonts/TewiFontOutline/2878.png new file mode 100644 index 000000000..cefa32c38 Binary files /dev/null and b/fonts/TewiFontOutline/2878.png differ diff --git a/fonts/TewiFontOutline/2879.png b/fonts/TewiFontOutline/2879.png new file mode 100644 index 000000000..ae3a5c500 Binary files /dev/null and b/fonts/TewiFontOutline/2879.png differ diff --git a/fonts/TewiFontOutline/287A.png b/fonts/TewiFontOutline/287A.png new file mode 100644 index 000000000..c9d022d8e Binary files /dev/null and b/fonts/TewiFontOutline/287A.png differ diff --git a/fonts/TewiFontOutline/287B.png b/fonts/TewiFontOutline/287B.png new file mode 100644 index 000000000..d813dca91 Binary files /dev/null and b/fonts/TewiFontOutline/287B.png differ diff --git a/fonts/TewiFontOutline/287C.png b/fonts/TewiFontOutline/287C.png new file mode 100644 index 000000000..ffe139c0a Binary files /dev/null and b/fonts/TewiFontOutline/287C.png differ diff --git a/fonts/TewiFontOutline/287D.png b/fonts/TewiFontOutline/287D.png new file mode 100644 index 000000000..9396b397d Binary files /dev/null and b/fonts/TewiFontOutline/287D.png differ diff --git a/fonts/TewiFontOutline/287E.png b/fonts/TewiFontOutline/287E.png new file mode 100644 index 000000000..a66c6d4f8 Binary files /dev/null and b/fonts/TewiFontOutline/287E.png differ diff --git a/fonts/TewiFontOutline/287F.png b/fonts/TewiFontOutline/287F.png new file mode 100644 index 000000000..fca40218a Binary files /dev/null and b/fonts/TewiFontOutline/287F.png differ diff --git a/fonts/TewiFontOutline/2880.png b/fonts/TewiFontOutline/2880.png new file mode 100644 index 000000000..9e62a7815 Binary files /dev/null and b/fonts/TewiFontOutline/2880.png differ diff --git a/fonts/TewiFontOutline/2881.png b/fonts/TewiFontOutline/2881.png new file mode 100644 index 000000000..6511c153a Binary files /dev/null and b/fonts/TewiFontOutline/2881.png differ diff --git a/fonts/TewiFontOutline/2882.png b/fonts/TewiFontOutline/2882.png new file mode 100644 index 000000000..3e1e59b94 Binary files /dev/null and b/fonts/TewiFontOutline/2882.png differ diff --git a/fonts/TewiFontOutline/2883.png b/fonts/TewiFontOutline/2883.png new file mode 100644 index 000000000..8f1671305 Binary files /dev/null and b/fonts/TewiFontOutline/2883.png differ diff --git a/fonts/TewiFontOutline/2884.png b/fonts/TewiFontOutline/2884.png new file mode 100644 index 000000000..a13e1aae7 Binary files /dev/null and b/fonts/TewiFontOutline/2884.png differ diff --git a/fonts/TewiFontOutline/2885.png b/fonts/TewiFontOutline/2885.png new file mode 100644 index 000000000..8ee3d9fb7 Binary files /dev/null and b/fonts/TewiFontOutline/2885.png differ diff --git a/fonts/TewiFontOutline/2886.png b/fonts/TewiFontOutline/2886.png new file mode 100644 index 000000000..615d811c7 Binary files /dev/null and b/fonts/TewiFontOutline/2886.png differ diff --git a/fonts/TewiFontOutline/2887.png b/fonts/TewiFontOutline/2887.png new file mode 100644 index 000000000..9f6a9791c Binary files /dev/null and b/fonts/TewiFontOutline/2887.png differ diff --git a/fonts/TewiFontOutline/2888.png b/fonts/TewiFontOutline/2888.png new file mode 100644 index 000000000..13c1f9d1c Binary files /dev/null and b/fonts/TewiFontOutline/2888.png differ diff --git a/fonts/TewiFontOutline/2889.png b/fonts/TewiFontOutline/2889.png new file mode 100644 index 000000000..f6839cdec Binary files /dev/null and b/fonts/TewiFontOutline/2889.png differ diff --git a/fonts/TewiFontOutline/288A.png b/fonts/TewiFontOutline/288A.png new file mode 100644 index 000000000..02b38938a Binary files /dev/null and b/fonts/TewiFontOutline/288A.png differ diff --git a/fonts/TewiFontOutline/288B.png b/fonts/TewiFontOutline/288B.png new file mode 100644 index 000000000..cae389bf1 Binary files /dev/null and b/fonts/TewiFontOutline/288B.png differ diff --git a/fonts/TewiFontOutline/288C.png b/fonts/TewiFontOutline/288C.png new file mode 100644 index 000000000..cc7a9c7e0 Binary files /dev/null and b/fonts/TewiFontOutline/288C.png differ diff --git a/fonts/TewiFontOutline/288D.png b/fonts/TewiFontOutline/288D.png new file mode 100644 index 000000000..fac6e150f Binary files /dev/null and b/fonts/TewiFontOutline/288D.png differ diff --git a/fonts/TewiFontOutline/288E.png b/fonts/TewiFontOutline/288E.png new file mode 100644 index 000000000..2ca7b6a02 Binary files /dev/null and b/fonts/TewiFontOutline/288E.png differ diff --git a/fonts/TewiFontOutline/288F.png b/fonts/TewiFontOutline/288F.png new file mode 100644 index 000000000..15f3f5f21 Binary files /dev/null and b/fonts/TewiFontOutline/288F.png differ diff --git a/fonts/TewiFontOutline/2890.png b/fonts/TewiFontOutline/2890.png new file mode 100644 index 000000000..b27512997 Binary files /dev/null and b/fonts/TewiFontOutline/2890.png differ diff --git a/fonts/TewiFontOutline/2891.png b/fonts/TewiFontOutline/2891.png new file mode 100644 index 000000000..7244d47ba Binary files /dev/null and b/fonts/TewiFontOutline/2891.png differ diff --git a/fonts/TewiFontOutline/2892.png b/fonts/TewiFontOutline/2892.png new file mode 100644 index 000000000..b2e139797 Binary files /dev/null and b/fonts/TewiFontOutline/2892.png differ diff --git a/fonts/TewiFontOutline/2893.png b/fonts/TewiFontOutline/2893.png new file mode 100644 index 000000000..48d73caf1 Binary files /dev/null and b/fonts/TewiFontOutline/2893.png differ diff --git a/fonts/TewiFontOutline/2894.png b/fonts/TewiFontOutline/2894.png new file mode 100644 index 000000000..4d3546b3a Binary files /dev/null and b/fonts/TewiFontOutline/2894.png differ diff --git a/fonts/TewiFontOutline/2895.png b/fonts/TewiFontOutline/2895.png new file mode 100644 index 000000000..a8bfbbb15 Binary files /dev/null and b/fonts/TewiFontOutline/2895.png differ diff --git a/fonts/TewiFontOutline/2896.png b/fonts/TewiFontOutline/2896.png new file mode 100644 index 000000000..8416c57cf Binary files /dev/null and b/fonts/TewiFontOutline/2896.png differ diff --git a/fonts/TewiFontOutline/2897.png b/fonts/TewiFontOutline/2897.png new file mode 100644 index 000000000..4b42c187b Binary files /dev/null and b/fonts/TewiFontOutline/2897.png differ diff --git a/fonts/TewiFontOutline/2898.png b/fonts/TewiFontOutline/2898.png new file mode 100644 index 000000000..43b813403 Binary files /dev/null and b/fonts/TewiFontOutline/2898.png differ diff --git a/fonts/TewiFontOutline/2899.png b/fonts/TewiFontOutline/2899.png new file mode 100644 index 000000000..71424369b Binary files /dev/null and b/fonts/TewiFontOutline/2899.png differ diff --git a/fonts/TewiFontOutline/289A.png b/fonts/TewiFontOutline/289A.png new file mode 100644 index 000000000..fcde08158 Binary files /dev/null and b/fonts/TewiFontOutline/289A.png differ diff --git a/fonts/TewiFontOutline/289B.png b/fonts/TewiFontOutline/289B.png new file mode 100644 index 000000000..cc45b7170 Binary files /dev/null and b/fonts/TewiFontOutline/289B.png differ diff --git a/fonts/TewiFontOutline/289C.png b/fonts/TewiFontOutline/289C.png new file mode 100644 index 000000000..c381a75f6 Binary files /dev/null and b/fonts/TewiFontOutline/289C.png differ diff --git a/fonts/TewiFontOutline/289D.png b/fonts/TewiFontOutline/289D.png new file mode 100644 index 000000000..775253a77 Binary files /dev/null and b/fonts/TewiFontOutline/289D.png differ diff --git a/fonts/TewiFontOutline/289E.png b/fonts/TewiFontOutline/289E.png new file mode 100644 index 000000000..39f2154c5 Binary files /dev/null and b/fonts/TewiFontOutline/289E.png differ diff --git a/fonts/TewiFontOutline/289F.png b/fonts/TewiFontOutline/289F.png new file mode 100644 index 000000000..8d62e17f5 Binary files /dev/null and b/fonts/TewiFontOutline/289F.png differ diff --git a/fonts/TewiFontOutline/28A0.png b/fonts/TewiFontOutline/28A0.png new file mode 100644 index 000000000..6b9d7a14f Binary files /dev/null and b/fonts/TewiFontOutline/28A0.png differ diff --git a/fonts/TewiFontOutline/28A1.png b/fonts/TewiFontOutline/28A1.png new file mode 100644 index 000000000..934857067 Binary files /dev/null and b/fonts/TewiFontOutline/28A1.png differ diff --git a/fonts/TewiFontOutline/28A2.png b/fonts/TewiFontOutline/28A2.png new file mode 100644 index 000000000..640e82d5a Binary files /dev/null and b/fonts/TewiFontOutline/28A2.png differ diff --git a/fonts/TewiFontOutline/28A3.png b/fonts/TewiFontOutline/28A3.png new file mode 100644 index 000000000..30c2ab0e3 Binary files /dev/null and b/fonts/TewiFontOutline/28A3.png differ diff --git a/fonts/TewiFontOutline/28A4.png b/fonts/TewiFontOutline/28A4.png new file mode 100644 index 000000000..31e6dcf51 Binary files /dev/null and b/fonts/TewiFontOutline/28A4.png differ diff --git a/fonts/TewiFontOutline/28A5.png b/fonts/TewiFontOutline/28A5.png new file mode 100644 index 000000000..53d7fe258 Binary files /dev/null and b/fonts/TewiFontOutline/28A5.png differ diff --git a/fonts/TewiFontOutline/28A6.png b/fonts/TewiFontOutline/28A6.png new file mode 100644 index 000000000..ea23d5ddd Binary files /dev/null and b/fonts/TewiFontOutline/28A6.png differ diff --git a/fonts/TewiFontOutline/28A7.png b/fonts/TewiFontOutline/28A7.png new file mode 100644 index 000000000..2ad155628 Binary files /dev/null and b/fonts/TewiFontOutline/28A7.png differ diff --git a/fonts/TewiFontOutline/28A8.png b/fonts/TewiFontOutline/28A8.png new file mode 100644 index 000000000..8cd40e040 Binary files /dev/null and b/fonts/TewiFontOutline/28A8.png differ diff --git a/fonts/TewiFontOutline/28A9.png b/fonts/TewiFontOutline/28A9.png new file mode 100644 index 000000000..44c014010 Binary files /dev/null and b/fonts/TewiFontOutline/28A9.png differ diff --git a/fonts/TewiFontOutline/28AA.png b/fonts/TewiFontOutline/28AA.png new file mode 100644 index 000000000..54251034b Binary files /dev/null and b/fonts/TewiFontOutline/28AA.png differ diff --git a/fonts/TewiFontOutline/28AB.png b/fonts/TewiFontOutline/28AB.png new file mode 100644 index 000000000..a7f3cb0db Binary files /dev/null and b/fonts/TewiFontOutline/28AB.png differ diff --git a/fonts/TewiFontOutline/28AC.png b/fonts/TewiFontOutline/28AC.png new file mode 100644 index 000000000..ed7882eec Binary files /dev/null and b/fonts/TewiFontOutline/28AC.png differ diff --git a/fonts/TewiFontOutline/28AD.png b/fonts/TewiFontOutline/28AD.png new file mode 100644 index 000000000..b748f4cbb Binary files /dev/null and b/fonts/TewiFontOutline/28AD.png differ diff --git a/fonts/TewiFontOutline/28AE.png b/fonts/TewiFontOutline/28AE.png new file mode 100644 index 000000000..8ca0edb34 Binary files /dev/null and b/fonts/TewiFontOutline/28AE.png differ diff --git a/fonts/TewiFontOutline/28AF.png b/fonts/TewiFontOutline/28AF.png new file mode 100644 index 000000000..6f25a9eac Binary files /dev/null and b/fonts/TewiFontOutline/28AF.png differ diff --git a/fonts/TewiFontOutline/28B0.png b/fonts/TewiFontOutline/28B0.png new file mode 100644 index 000000000..4da8f04db Binary files /dev/null and b/fonts/TewiFontOutline/28B0.png differ diff --git a/fonts/TewiFontOutline/28B1.png b/fonts/TewiFontOutline/28B1.png new file mode 100644 index 000000000..8584c00b9 Binary files /dev/null and b/fonts/TewiFontOutline/28B1.png differ diff --git a/fonts/TewiFontOutline/28B2.png b/fonts/TewiFontOutline/28B2.png new file mode 100644 index 000000000..7d9cd2524 Binary files /dev/null and b/fonts/TewiFontOutline/28B2.png differ diff --git a/fonts/TewiFontOutline/28B3.png b/fonts/TewiFontOutline/28B3.png new file mode 100644 index 000000000..faddadd57 Binary files /dev/null and b/fonts/TewiFontOutline/28B3.png differ diff --git a/fonts/TewiFontOutline/28B4.png b/fonts/TewiFontOutline/28B4.png new file mode 100644 index 000000000..238576015 Binary files /dev/null and b/fonts/TewiFontOutline/28B4.png differ diff --git a/fonts/TewiFontOutline/28B5.png b/fonts/TewiFontOutline/28B5.png new file mode 100644 index 000000000..6f5698f93 Binary files /dev/null and b/fonts/TewiFontOutline/28B5.png differ diff --git a/fonts/TewiFontOutline/28B6.png b/fonts/TewiFontOutline/28B6.png new file mode 100644 index 000000000..a78d6c400 Binary files /dev/null and b/fonts/TewiFontOutline/28B6.png differ diff --git a/fonts/TewiFontOutline/28B7.png b/fonts/TewiFontOutline/28B7.png new file mode 100644 index 000000000..69495590c Binary files /dev/null and b/fonts/TewiFontOutline/28B7.png differ diff --git a/fonts/TewiFontOutline/28B8.png b/fonts/TewiFontOutline/28B8.png new file mode 100644 index 000000000..3ea242071 Binary files /dev/null and b/fonts/TewiFontOutline/28B8.png differ diff --git a/fonts/TewiFontOutline/28B9.png b/fonts/TewiFontOutline/28B9.png new file mode 100644 index 000000000..d62ad9005 Binary files /dev/null and b/fonts/TewiFontOutline/28B9.png differ diff --git a/fonts/TewiFontOutline/28BA.png b/fonts/TewiFontOutline/28BA.png new file mode 100644 index 000000000..2d4c751ed Binary files /dev/null and b/fonts/TewiFontOutline/28BA.png differ diff --git a/fonts/TewiFontOutline/28BB.png b/fonts/TewiFontOutline/28BB.png new file mode 100644 index 000000000..352b94d8f Binary files /dev/null and b/fonts/TewiFontOutline/28BB.png differ diff --git a/fonts/TewiFontOutline/28BC.png b/fonts/TewiFontOutline/28BC.png new file mode 100644 index 000000000..4b7b28e14 Binary files /dev/null and b/fonts/TewiFontOutline/28BC.png differ diff --git a/fonts/TewiFontOutline/28BD.png b/fonts/TewiFontOutline/28BD.png new file mode 100644 index 000000000..f81857360 Binary files /dev/null and b/fonts/TewiFontOutline/28BD.png differ diff --git a/fonts/TewiFontOutline/28BE.png b/fonts/TewiFontOutline/28BE.png new file mode 100644 index 000000000..4b7b28e14 Binary files /dev/null and b/fonts/TewiFontOutline/28BE.png differ diff --git a/fonts/TewiFontOutline/28BF.png b/fonts/TewiFontOutline/28BF.png new file mode 100644 index 000000000..5456b756a Binary files /dev/null and b/fonts/TewiFontOutline/28BF.png differ diff --git a/fonts/TewiFontOutline/28C0.png b/fonts/TewiFontOutline/28C0.png new file mode 100644 index 000000000..123d12b61 Binary files /dev/null and b/fonts/TewiFontOutline/28C0.png differ diff --git a/fonts/TewiFontOutline/28C1.png b/fonts/TewiFontOutline/28C1.png new file mode 100644 index 000000000..0d495c856 Binary files /dev/null and b/fonts/TewiFontOutline/28C1.png differ diff --git a/fonts/TewiFontOutline/28C2.png b/fonts/TewiFontOutline/28C2.png new file mode 100644 index 000000000..1678c3ec1 Binary files /dev/null and b/fonts/TewiFontOutline/28C2.png differ diff --git a/fonts/TewiFontOutline/28C3.png b/fonts/TewiFontOutline/28C3.png new file mode 100644 index 000000000..270d9d5c7 Binary files /dev/null and b/fonts/TewiFontOutline/28C3.png differ diff --git a/fonts/TewiFontOutline/28C4.png b/fonts/TewiFontOutline/28C4.png new file mode 100644 index 000000000..7b209f48e Binary files /dev/null and b/fonts/TewiFontOutline/28C4.png differ diff --git a/fonts/TewiFontOutline/28C5.png b/fonts/TewiFontOutline/28C5.png new file mode 100644 index 000000000..e940d7987 Binary files /dev/null and b/fonts/TewiFontOutline/28C5.png differ diff --git a/fonts/TewiFontOutline/28C6.png b/fonts/TewiFontOutline/28C6.png new file mode 100644 index 000000000..8f89b658a Binary files /dev/null and b/fonts/TewiFontOutline/28C6.png differ diff --git a/fonts/TewiFontOutline/28C7.png b/fonts/TewiFontOutline/28C7.png new file mode 100644 index 000000000..95b72218f Binary files /dev/null and b/fonts/TewiFontOutline/28C7.png differ diff --git a/fonts/TewiFontOutline/28C8.png b/fonts/TewiFontOutline/28C8.png new file mode 100644 index 000000000..eff354a9e Binary files /dev/null and b/fonts/TewiFontOutline/28C8.png differ diff --git a/fonts/TewiFontOutline/28C9.png b/fonts/TewiFontOutline/28C9.png new file mode 100644 index 000000000..66d495c43 Binary files /dev/null and b/fonts/TewiFontOutline/28C9.png differ diff --git a/fonts/TewiFontOutline/28CA.png b/fonts/TewiFontOutline/28CA.png new file mode 100644 index 000000000..de0fc5d11 Binary files /dev/null and b/fonts/TewiFontOutline/28CA.png differ diff --git a/fonts/TewiFontOutline/28CB.png b/fonts/TewiFontOutline/28CB.png new file mode 100644 index 000000000..ec117ac3e Binary files /dev/null and b/fonts/TewiFontOutline/28CB.png differ diff --git a/fonts/TewiFontOutline/28CC.png b/fonts/TewiFontOutline/28CC.png new file mode 100644 index 000000000..e37bce0d0 Binary files /dev/null and b/fonts/TewiFontOutline/28CC.png differ diff --git a/fonts/TewiFontOutline/28CD.png b/fonts/TewiFontOutline/28CD.png new file mode 100644 index 000000000..18f3e436d Binary files /dev/null and b/fonts/TewiFontOutline/28CD.png differ diff --git a/fonts/TewiFontOutline/28CE.png b/fonts/TewiFontOutline/28CE.png new file mode 100644 index 000000000..c904ae18d Binary files /dev/null and b/fonts/TewiFontOutline/28CE.png differ diff --git a/fonts/TewiFontOutline/28CF.png b/fonts/TewiFontOutline/28CF.png new file mode 100644 index 000000000..c1a6d7b70 Binary files /dev/null and b/fonts/TewiFontOutline/28CF.png differ diff --git a/fonts/TewiFontOutline/28D0.png b/fonts/TewiFontOutline/28D0.png new file mode 100644 index 000000000..5515a3435 Binary files /dev/null and b/fonts/TewiFontOutline/28D0.png differ diff --git a/fonts/TewiFontOutline/28D1.png b/fonts/TewiFontOutline/28D1.png new file mode 100644 index 000000000..51c6f3b86 Binary files /dev/null and b/fonts/TewiFontOutline/28D1.png differ diff --git a/fonts/TewiFontOutline/28D2.png b/fonts/TewiFontOutline/28D2.png new file mode 100644 index 000000000..c7ce71905 Binary files /dev/null and b/fonts/TewiFontOutline/28D2.png differ diff --git a/fonts/TewiFontOutline/28D3.png b/fonts/TewiFontOutline/28D3.png new file mode 100644 index 000000000..2411e7e10 Binary files /dev/null and b/fonts/TewiFontOutline/28D3.png differ diff --git a/fonts/TewiFontOutline/28D4.png b/fonts/TewiFontOutline/28D4.png new file mode 100644 index 000000000..7d5dd627c Binary files /dev/null and b/fonts/TewiFontOutline/28D4.png differ diff --git a/fonts/TewiFontOutline/28D5.png b/fonts/TewiFontOutline/28D5.png new file mode 100644 index 000000000..2571cb92b Binary files /dev/null and b/fonts/TewiFontOutline/28D5.png differ diff --git a/fonts/TewiFontOutline/28D6.png b/fonts/TewiFontOutline/28D6.png new file mode 100644 index 000000000..d73e34e40 Binary files /dev/null and b/fonts/TewiFontOutline/28D6.png differ diff --git a/fonts/TewiFontOutline/28D7.png b/fonts/TewiFontOutline/28D7.png new file mode 100644 index 000000000..4110eb96e Binary files /dev/null and b/fonts/TewiFontOutline/28D7.png differ diff --git a/fonts/TewiFontOutline/28D8.png b/fonts/TewiFontOutline/28D8.png new file mode 100644 index 000000000..a3b1fd7ab Binary files /dev/null and b/fonts/TewiFontOutline/28D8.png differ diff --git a/fonts/TewiFontOutline/28D9.png b/fonts/TewiFontOutline/28D9.png new file mode 100644 index 000000000..28ee3c41e Binary files /dev/null and b/fonts/TewiFontOutline/28D9.png differ diff --git a/fonts/TewiFontOutline/28DA.png b/fonts/TewiFontOutline/28DA.png new file mode 100644 index 000000000..75f8d4f08 Binary files /dev/null and b/fonts/TewiFontOutline/28DA.png differ diff --git a/fonts/TewiFontOutline/28DB.png b/fonts/TewiFontOutline/28DB.png new file mode 100644 index 000000000..bd4ed88ae Binary files /dev/null and b/fonts/TewiFontOutline/28DB.png differ diff --git a/fonts/TewiFontOutline/28DC.png b/fonts/TewiFontOutline/28DC.png new file mode 100644 index 000000000..d555874d2 Binary files /dev/null and b/fonts/TewiFontOutline/28DC.png differ diff --git a/fonts/TewiFontOutline/28DD.png b/fonts/TewiFontOutline/28DD.png new file mode 100644 index 000000000..63b276bc3 Binary files /dev/null and b/fonts/TewiFontOutline/28DD.png differ diff --git a/fonts/TewiFontOutline/28DE.png b/fonts/TewiFontOutline/28DE.png new file mode 100644 index 000000000..7b1db1150 Binary files /dev/null and b/fonts/TewiFontOutline/28DE.png differ diff --git a/fonts/TewiFontOutline/28DF.png b/fonts/TewiFontOutline/28DF.png new file mode 100644 index 000000000..153c52f06 Binary files /dev/null and b/fonts/TewiFontOutline/28DF.png differ diff --git a/fonts/TewiFontOutline/28E0.png b/fonts/TewiFontOutline/28E0.png new file mode 100644 index 000000000..79beef71d Binary files /dev/null and b/fonts/TewiFontOutline/28E0.png differ diff --git a/fonts/TewiFontOutline/28E1.png b/fonts/TewiFontOutline/28E1.png new file mode 100644 index 000000000..8c40f5212 Binary files /dev/null and b/fonts/TewiFontOutline/28E1.png differ diff --git a/fonts/TewiFontOutline/28E2.png b/fonts/TewiFontOutline/28E2.png new file mode 100644 index 000000000..f056af416 Binary files /dev/null and b/fonts/TewiFontOutline/28E2.png differ diff --git a/fonts/TewiFontOutline/28E3.png b/fonts/TewiFontOutline/28E3.png new file mode 100644 index 000000000..04f859b75 Binary files /dev/null and b/fonts/TewiFontOutline/28E3.png differ diff --git a/fonts/TewiFontOutline/28E4.png b/fonts/TewiFontOutline/28E4.png new file mode 100644 index 000000000..59f3bcfa6 Binary files /dev/null and b/fonts/TewiFontOutline/28E4.png differ diff --git a/fonts/TewiFontOutline/28E5.png b/fonts/TewiFontOutline/28E5.png new file mode 100644 index 000000000..6dadaac0d Binary files /dev/null and b/fonts/TewiFontOutline/28E5.png differ diff --git a/fonts/TewiFontOutline/28E6.png b/fonts/TewiFontOutline/28E6.png new file mode 100644 index 000000000..f3f32a9f6 Binary files /dev/null and b/fonts/TewiFontOutline/28E6.png differ diff --git a/fonts/TewiFontOutline/28E7.png b/fonts/TewiFontOutline/28E7.png new file mode 100644 index 000000000..0a3df038a Binary files /dev/null and b/fonts/TewiFontOutline/28E7.png differ diff --git a/fonts/TewiFontOutline/28E8.png b/fonts/TewiFontOutline/28E8.png new file mode 100644 index 000000000..9308888a0 Binary files /dev/null and b/fonts/TewiFontOutline/28E8.png differ diff --git a/fonts/TewiFontOutline/28E9.png b/fonts/TewiFontOutline/28E9.png new file mode 100644 index 000000000..112ae9e5f Binary files /dev/null and b/fonts/TewiFontOutline/28E9.png differ diff --git a/fonts/TewiFontOutline/28EA.png b/fonts/TewiFontOutline/28EA.png new file mode 100644 index 000000000..d9938a2ec Binary files /dev/null and b/fonts/TewiFontOutline/28EA.png differ diff --git a/fonts/TewiFontOutline/28EB.png b/fonts/TewiFontOutline/28EB.png new file mode 100644 index 000000000..dc028a3ce Binary files /dev/null and b/fonts/TewiFontOutline/28EB.png differ diff --git a/fonts/TewiFontOutline/28EC.png b/fonts/TewiFontOutline/28EC.png new file mode 100644 index 000000000..4f38d65b2 Binary files /dev/null and b/fonts/TewiFontOutline/28EC.png differ diff --git a/fonts/TewiFontOutline/28ED.png b/fonts/TewiFontOutline/28ED.png new file mode 100644 index 000000000..941624f7c Binary files /dev/null and b/fonts/TewiFontOutline/28ED.png differ diff --git a/fonts/TewiFontOutline/28EE.png b/fonts/TewiFontOutline/28EE.png new file mode 100644 index 000000000..34eb9c4f8 Binary files /dev/null and b/fonts/TewiFontOutline/28EE.png differ diff --git a/fonts/TewiFontOutline/28EF.png b/fonts/TewiFontOutline/28EF.png new file mode 100644 index 000000000..88b5938f1 Binary files /dev/null and b/fonts/TewiFontOutline/28EF.png differ diff --git a/fonts/TewiFontOutline/28F0.png b/fonts/TewiFontOutline/28F0.png new file mode 100644 index 000000000..f31948053 Binary files /dev/null and b/fonts/TewiFontOutline/28F0.png differ diff --git a/fonts/TewiFontOutline/28F1.png b/fonts/TewiFontOutline/28F1.png new file mode 100644 index 000000000..9f3aa2e7d Binary files /dev/null and b/fonts/TewiFontOutline/28F1.png differ diff --git a/fonts/TewiFontOutline/28F2.png b/fonts/TewiFontOutline/28F2.png new file mode 100644 index 000000000..10fa1e709 Binary files /dev/null and b/fonts/TewiFontOutline/28F2.png differ diff --git a/fonts/TewiFontOutline/28F3.png b/fonts/TewiFontOutline/28F3.png new file mode 100644 index 000000000..c5f9622ca Binary files /dev/null and b/fonts/TewiFontOutline/28F3.png differ diff --git a/fonts/TewiFontOutline/28F4.png b/fonts/TewiFontOutline/28F4.png new file mode 100644 index 000000000..5d609310c Binary files /dev/null and b/fonts/TewiFontOutline/28F4.png differ diff --git a/fonts/TewiFontOutline/28F5.png b/fonts/TewiFontOutline/28F5.png new file mode 100644 index 000000000..560de6232 Binary files /dev/null and b/fonts/TewiFontOutline/28F5.png differ diff --git a/fonts/TewiFontOutline/28F6.png b/fonts/TewiFontOutline/28F6.png new file mode 100644 index 000000000..9753f71cc Binary files /dev/null and b/fonts/TewiFontOutline/28F6.png differ diff --git a/fonts/TewiFontOutline/28F7.png b/fonts/TewiFontOutline/28F7.png new file mode 100644 index 000000000..1f9d4f262 Binary files /dev/null and b/fonts/TewiFontOutline/28F7.png differ diff --git a/fonts/TewiFontOutline/28F8.png b/fonts/TewiFontOutline/28F8.png new file mode 100644 index 000000000..5578e896c Binary files /dev/null and b/fonts/TewiFontOutline/28F8.png differ diff --git a/fonts/TewiFontOutline/28F9.png b/fonts/TewiFontOutline/28F9.png new file mode 100644 index 000000000..30573e6bb Binary files /dev/null and b/fonts/TewiFontOutline/28F9.png differ diff --git a/fonts/TewiFontOutline/28FA.png b/fonts/TewiFontOutline/28FA.png new file mode 100644 index 000000000..1186f3060 Binary files /dev/null and b/fonts/TewiFontOutline/28FA.png differ diff --git a/fonts/TewiFontOutline/28FB.png b/fonts/TewiFontOutline/28FB.png new file mode 100644 index 000000000..33967fefd Binary files /dev/null and b/fonts/TewiFontOutline/28FB.png differ diff --git a/fonts/TewiFontOutline/28FC.png b/fonts/TewiFontOutline/28FC.png new file mode 100644 index 000000000..b34f8f267 Binary files /dev/null and b/fonts/TewiFontOutline/28FC.png differ diff --git a/fonts/TewiFontOutline/28FD.png b/fonts/TewiFontOutline/28FD.png new file mode 100644 index 000000000..be833cea6 Binary files /dev/null and b/fonts/TewiFontOutline/28FD.png differ diff --git a/fonts/TewiFontOutline/28FE.png b/fonts/TewiFontOutline/28FE.png new file mode 100644 index 000000000..93332b9a5 Binary files /dev/null and b/fonts/TewiFontOutline/28FE.png differ diff --git a/fonts/TewiFontOutline/28FF.png b/fonts/TewiFontOutline/28FF.png new file mode 100644 index 000000000..efe163f2b Binary files /dev/null and b/fonts/TewiFontOutline/28FF.png differ diff --git a/fonts/TewiFontOutline/2902.png b/fonts/TewiFontOutline/2902.png new file mode 100644 index 000000000..5b88d684b Binary files /dev/null and b/fonts/TewiFontOutline/2902.png differ diff --git a/fonts/TewiFontOutline/2903.png b/fonts/TewiFontOutline/2903.png new file mode 100644 index 000000000..873254fb1 Binary files /dev/null and b/fonts/TewiFontOutline/2903.png differ diff --git a/fonts/TewiFontOutline/2906.png b/fonts/TewiFontOutline/2906.png new file mode 100644 index 000000000..bdcc4a1c9 Binary files /dev/null and b/fonts/TewiFontOutline/2906.png differ diff --git a/fonts/TewiFontOutline/2907.png b/fonts/TewiFontOutline/2907.png new file mode 100644 index 000000000..1fbc1a399 Binary files /dev/null and b/fonts/TewiFontOutline/2907.png differ diff --git a/fonts/TewiFontOutline/2908.png b/fonts/TewiFontOutline/2908.png new file mode 100644 index 000000000..fd607a09c Binary files /dev/null and b/fonts/TewiFontOutline/2908.png differ diff --git a/fonts/TewiFontOutline/2909.png b/fonts/TewiFontOutline/2909.png new file mode 100644 index 000000000..5298ce8e2 Binary files /dev/null and b/fonts/TewiFontOutline/2909.png differ diff --git a/fonts/TewiFontOutline/290C.png b/fonts/TewiFontOutline/290C.png new file mode 100644 index 000000000..cbebce1ab Binary files /dev/null and b/fonts/TewiFontOutline/290C.png differ diff --git a/fonts/TewiFontOutline/290D.png b/fonts/TewiFontOutline/290D.png new file mode 100644 index 000000000..1b30606a6 Binary files /dev/null and b/fonts/TewiFontOutline/290D.png differ diff --git a/fonts/TewiFontOutline/290E.png b/fonts/TewiFontOutline/290E.png new file mode 100644 index 000000000..6f84ec775 Binary files /dev/null and b/fonts/TewiFontOutline/290E.png differ diff --git a/fonts/TewiFontOutline/290F.png b/fonts/TewiFontOutline/290F.png new file mode 100644 index 000000000..b44b0fada Binary files /dev/null and b/fonts/TewiFontOutline/290F.png differ diff --git a/fonts/TewiFontOutline/2912.png b/fonts/TewiFontOutline/2912.png new file mode 100644 index 000000000..8985b70bf Binary files /dev/null and b/fonts/TewiFontOutline/2912.png differ diff --git a/fonts/TewiFontOutline/2913.png b/fonts/TewiFontOutline/2913.png new file mode 100644 index 000000000..eca23919a Binary files /dev/null and b/fonts/TewiFontOutline/2913.png differ diff --git a/fonts/TewiFontOutline/2919.png b/fonts/TewiFontOutline/2919.png new file mode 100644 index 000000000..d8649b5f4 Binary files /dev/null and b/fonts/TewiFontOutline/2919.png differ diff --git a/fonts/TewiFontOutline/291A.png b/fonts/TewiFontOutline/291A.png new file mode 100644 index 000000000..b19b1e2a2 Binary files /dev/null and b/fonts/TewiFontOutline/291A.png differ diff --git a/fonts/TewiFontOutline/291B.png b/fonts/TewiFontOutline/291B.png new file mode 100644 index 000000000..5a3b490fa Binary files /dev/null and b/fonts/TewiFontOutline/291B.png differ diff --git a/fonts/TewiFontOutline/291C.png b/fonts/TewiFontOutline/291C.png new file mode 100644 index 000000000..82cf4caba Binary files /dev/null and b/fonts/TewiFontOutline/291C.png differ diff --git a/fonts/TewiFontOutline/291D.png b/fonts/TewiFontOutline/291D.png new file mode 100644 index 000000000..b6d4325a2 Binary files /dev/null and b/fonts/TewiFontOutline/291D.png differ diff --git a/fonts/TewiFontOutline/291E.png b/fonts/TewiFontOutline/291E.png new file mode 100644 index 000000000..759ca0c3e Binary files /dev/null and b/fonts/TewiFontOutline/291E.png differ diff --git a/fonts/TewiFontOutline/2921.png b/fonts/TewiFontOutline/2921.png new file mode 100644 index 000000000..feb5a1c87 Binary files /dev/null and b/fonts/TewiFontOutline/2921.png differ diff --git a/fonts/TewiFontOutline/2922.png b/fonts/TewiFontOutline/2922.png new file mode 100644 index 000000000..ecc727122 Binary files /dev/null and b/fonts/TewiFontOutline/2922.png differ diff --git a/fonts/TewiFontOutline/2923.png b/fonts/TewiFontOutline/2923.png new file mode 100644 index 000000000..9e3524526 Binary files /dev/null and b/fonts/TewiFontOutline/2923.png differ diff --git a/fonts/TewiFontOutline/2924.png b/fonts/TewiFontOutline/2924.png new file mode 100644 index 000000000..93e1ca43a Binary files /dev/null and b/fonts/TewiFontOutline/2924.png differ diff --git a/fonts/TewiFontOutline/2925.png b/fonts/TewiFontOutline/2925.png new file mode 100644 index 000000000..a2c79fa0a Binary files /dev/null and b/fonts/TewiFontOutline/2925.png differ diff --git a/fonts/TewiFontOutline/2926.png b/fonts/TewiFontOutline/2926.png new file mode 100644 index 000000000..5a7a7d29a Binary files /dev/null and b/fonts/TewiFontOutline/2926.png differ diff --git a/fonts/TewiFontOutline/2933.png b/fonts/TewiFontOutline/2933.png new file mode 100644 index 000000000..8fd5b7399 Binary files /dev/null and b/fonts/TewiFontOutline/2933.png differ diff --git a/fonts/TewiFontOutline/2934.png b/fonts/TewiFontOutline/2934.png new file mode 100644 index 000000000..2c5af847f Binary files /dev/null and b/fonts/TewiFontOutline/2934.png differ diff --git a/fonts/TewiFontOutline/2935.png b/fonts/TewiFontOutline/2935.png new file mode 100644 index 000000000..2673fc4af Binary files /dev/null and b/fonts/TewiFontOutline/2935.png differ diff --git a/fonts/TewiFontOutline/2936.png b/fonts/TewiFontOutline/2936.png new file mode 100644 index 000000000..4662e2e2c Binary files /dev/null and b/fonts/TewiFontOutline/2936.png differ diff --git a/fonts/TewiFontOutline/2937.png b/fonts/TewiFontOutline/2937.png new file mode 100644 index 000000000..28745f29e Binary files /dev/null and b/fonts/TewiFontOutline/2937.png differ diff --git a/fonts/TewiFontOutline/2938.png b/fonts/TewiFontOutline/2938.png new file mode 100644 index 000000000..fc5378057 Binary files /dev/null and b/fonts/TewiFontOutline/2938.png differ diff --git a/fonts/TewiFontOutline/2939.png b/fonts/TewiFontOutline/2939.png new file mode 100644 index 000000000..96f50799e Binary files /dev/null and b/fonts/TewiFontOutline/2939.png differ diff --git a/fonts/TewiFontOutline/293A.png b/fonts/TewiFontOutline/293A.png new file mode 100644 index 000000000..3db5c257f Binary files /dev/null and b/fonts/TewiFontOutline/293A.png differ diff --git a/fonts/TewiFontOutline/293B.png b/fonts/TewiFontOutline/293B.png new file mode 100644 index 000000000..8dcf3b24c Binary files /dev/null and b/fonts/TewiFontOutline/293B.png differ diff --git a/fonts/TewiFontOutline/293C.png b/fonts/TewiFontOutline/293C.png new file mode 100644 index 000000000..6392563ce Binary files /dev/null and b/fonts/TewiFontOutline/293C.png differ diff --git a/fonts/TewiFontOutline/293D.png b/fonts/TewiFontOutline/293D.png new file mode 100644 index 000000000..79d722fcd Binary files /dev/null and b/fonts/TewiFontOutline/293D.png differ diff --git a/fonts/TewiFontOutline/293E.png b/fonts/TewiFontOutline/293E.png new file mode 100644 index 000000000..d40248316 Binary files /dev/null and b/fonts/TewiFontOutline/293E.png differ diff --git a/fonts/TewiFontOutline/293F.png b/fonts/TewiFontOutline/293F.png new file mode 100644 index 000000000..852c94cec Binary files /dev/null and b/fonts/TewiFontOutline/293F.png differ diff --git a/fonts/TewiFontOutline/2940.png b/fonts/TewiFontOutline/2940.png new file mode 100644 index 000000000..d809e3404 Binary files /dev/null and b/fonts/TewiFontOutline/2940.png differ diff --git a/fonts/TewiFontOutline/2941.png b/fonts/TewiFontOutline/2941.png new file mode 100644 index 000000000..a4c833195 Binary files /dev/null and b/fonts/TewiFontOutline/2941.png differ diff --git a/fonts/TewiFontOutline/2942.png b/fonts/TewiFontOutline/2942.png new file mode 100644 index 000000000..6fa732c80 Binary files /dev/null and b/fonts/TewiFontOutline/2942.png differ diff --git a/fonts/TewiFontOutline/2943.png b/fonts/TewiFontOutline/2943.png new file mode 100644 index 000000000..a12dfa6cf Binary files /dev/null and b/fonts/TewiFontOutline/2943.png differ diff --git a/fonts/TewiFontOutline/2944.png b/fonts/TewiFontOutline/2944.png new file mode 100644 index 000000000..c50f0bbd1 Binary files /dev/null and b/fonts/TewiFontOutline/2944.png differ diff --git a/fonts/TewiFontOutline/2945.png b/fonts/TewiFontOutline/2945.png new file mode 100644 index 000000000..6305d712a Binary files /dev/null and b/fonts/TewiFontOutline/2945.png differ diff --git a/fonts/TewiFontOutline/2946.png b/fonts/TewiFontOutline/2946.png new file mode 100644 index 000000000..930b642d9 Binary files /dev/null and b/fonts/TewiFontOutline/2946.png differ diff --git a/fonts/TewiFontOutline/2949.png b/fonts/TewiFontOutline/2949.png new file mode 100644 index 000000000..76ebaf230 Binary files /dev/null and b/fonts/TewiFontOutline/2949.png differ diff --git a/fonts/TewiFontOutline/294A.png b/fonts/TewiFontOutline/294A.png new file mode 100644 index 000000000..446cf626e Binary files /dev/null and b/fonts/TewiFontOutline/294A.png differ diff --git a/fonts/TewiFontOutline/294B.png b/fonts/TewiFontOutline/294B.png new file mode 100644 index 000000000..cd17967d9 Binary files /dev/null and b/fonts/TewiFontOutline/294B.png differ diff --git a/fonts/TewiFontOutline/294C.png b/fonts/TewiFontOutline/294C.png new file mode 100644 index 000000000..e2494d3be Binary files /dev/null and b/fonts/TewiFontOutline/294C.png differ diff --git a/fonts/TewiFontOutline/294D.png b/fonts/TewiFontOutline/294D.png new file mode 100644 index 000000000..d56351e72 Binary files /dev/null and b/fonts/TewiFontOutline/294D.png differ diff --git a/fonts/TewiFontOutline/294F.png b/fonts/TewiFontOutline/294F.png new file mode 100644 index 000000000..b4f92fcd5 Binary files /dev/null and b/fonts/TewiFontOutline/294F.png differ diff --git a/fonts/TewiFontOutline/2951.png b/fonts/TewiFontOutline/2951.png new file mode 100644 index 000000000..a43206aa0 Binary files /dev/null and b/fonts/TewiFontOutline/2951.png differ diff --git a/fonts/TewiFontOutline/2952.png b/fonts/TewiFontOutline/2952.png new file mode 100644 index 000000000..72532cae2 Binary files /dev/null and b/fonts/TewiFontOutline/2952.png differ diff --git a/fonts/TewiFontOutline/2953.png b/fonts/TewiFontOutline/2953.png new file mode 100644 index 000000000..e163d9e68 Binary files /dev/null and b/fonts/TewiFontOutline/2953.png differ diff --git a/fonts/TewiFontOutline/2954.png b/fonts/TewiFontOutline/2954.png new file mode 100644 index 000000000..dea2bec32 Binary files /dev/null and b/fonts/TewiFontOutline/2954.png differ diff --git a/fonts/TewiFontOutline/2955.png b/fonts/TewiFontOutline/2955.png new file mode 100644 index 000000000..c33e9d6e5 Binary files /dev/null and b/fonts/TewiFontOutline/2955.png differ diff --git a/fonts/TewiFontOutline/2956.png b/fonts/TewiFontOutline/2956.png new file mode 100644 index 000000000..e01cdc28c Binary files /dev/null and b/fonts/TewiFontOutline/2956.png differ diff --git a/fonts/TewiFontOutline/2957.png b/fonts/TewiFontOutline/2957.png new file mode 100644 index 000000000..9993b7a60 Binary files /dev/null and b/fonts/TewiFontOutline/2957.png differ diff --git a/fonts/TewiFontOutline/2958.png b/fonts/TewiFontOutline/2958.png new file mode 100644 index 000000000..495396328 Binary files /dev/null and b/fonts/TewiFontOutline/2958.png differ diff --git a/fonts/TewiFontOutline/2959.png b/fonts/TewiFontOutline/2959.png new file mode 100644 index 000000000..2059cd87a Binary files /dev/null and b/fonts/TewiFontOutline/2959.png differ diff --git a/fonts/TewiFontOutline/295A.png b/fonts/TewiFontOutline/295A.png new file mode 100644 index 000000000..4931b4f1b Binary files /dev/null and b/fonts/TewiFontOutline/295A.png differ diff --git a/fonts/TewiFontOutline/295B.png b/fonts/TewiFontOutline/295B.png new file mode 100644 index 000000000..af045f7a7 Binary files /dev/null and b/fonts/TewiFontOutline/295B.png differ diff --git a/fonts/TewiFontOutline/295C.png b/fonts/TewiFontOutline/295C.png new file mode 100644 index 000000000..1fc105727 Binary files /dev/null and b/fonts/TewiFontOutline/295C.png differ diff --git a/fonts/TewiFontOutline/295D.png b/fonts/TewiFontOutline/295D.png new file mode 100644 index 000000000..05585026c Binary files /dev/null and b/fonts/TewiFontOutline/295D.png differ diff --git a/fonts/TewiFontOutline/295E.png b/fonts/TewiFontOutline/295E.png new file mode 100644 index 000000000..77e27b8b1 Binary files /dev/null and b/fonts/TewiFontOutline/295E.png differ diff --git a/fonts/TewiFontOutline/295F.png b/fonts/TewiFontOutline/295F.png new file mode 100644 index 000000000..013a80a19 Binary files /dev/null and b/fonts/TewiFontOutline/295F.png differ diff --git a/fonts/TewiFontOutline/2960.png b/fonts/TewiFontOutline/2960.png new file mode 100644 index 000000000..cd10ba7a0 Binary files /dev/null and b/fonts/TewiFontOutline/2960.png differ diff --git a/fonts/TewiFontOutline/2961.png b/fonts/TewiFontOutline/2961.png new file mode 100644 index 000000000..e08d84089 Binary files /dev/null and b/fonts/TewiFontOutline/2961.png differ diff --git a/fonts/TewiFontOutline/2962.png b/fonts/TewiFontOutline/2962.png new file mode 100644 index 000000000..fa7e30b39 Binary files /dev/null and b/fonts/TewiFontOutline/2962.png differ diff --git a/fonts/TewiFontOutline/2963.png b/fonts/TewiFontOutline/2963.png new file mode 100644 index 000000000..68e9ab265 Binary files /dev/null and b/fonts/TewiFontOutline/2963.png differ diff --git a/fonts/TewiFontOutline/2964.png b/fonts/TewiFontOutline/2964.png new file mode 100644 index 000000000..cf43a4ea5 Binary files /dev/null and b/fonts/TewiFontOutline/2964.png differ diff --git a/fonts/TewiFontOutline/2965.png b/fonts/TewiFontOutline/2965.png new file mode 100644 index 000000000..368ed55d6 Binary files /dev/null and b/fonts/TewiFontOutline/2965.png differ diff --git a/fonts/TewiFontOutline/2966.png b/fonts/TewiFontOutline/2966.png new file mode 100644 index 000000000..bb8831d36 Binary files /dev/null and b/fonts/TewiFontOutline/2966.png differ diff --git a/fonts/TewiFontOutline/2967.png b/fonts/TewiFontOutline/2967.png new file mode 100644 index 000000000..c011d3b7e Binary files /dev/null and b/fonts/TewiFontOutline/2967.png differ diff --git a/fonts/TewiFontOutline/2968.png b/fonts/TewiFontOutline/2968.png new file mode 100644 index 000000000..c320e91fe Binary files /dev/null and b/fonts/TewiFontOutline/2968.png differ diff --git a/fonts/TewiFontOutline/2969.png b/fonts/TewiFontOutline/2969.png new file mode 100644 index 000000000..1c0998171 Binary files /dev/null and b/fonts/TewiFontOutline/2969.png differ diff --git a/fonts/TewiFontOutline/296A.png b/fonts/TewiFontOutline/296A.png new file mode 100644 index 000000000..a012461b7 Binary files /dev/null and b/fonts/TewiFontOutline/296A.png differ diff --git a/fonts/TewiFontOutline/296B.png b/fonts/TewiFontOutline/296B.png new file mode 100644 index 000000000..305182f4b Binary files /dev/null and b/fonts/TewiFontOutline/296B.png differ diff --git a/fonts/TewiFontOutline/296C.png b/fonts/TewiFontOutline/296C.png new file mode 100644 index 000000000..59249d1e8 Binary files /dev/null and b/fonts/TewiFontOutline/296C.png differ diff --git a/fonts/TewiFontOutline/296D.png b/fonts/TewiFontOutline/296D.png new file mode 100644 index 000000000..84002b26b Binary files /dev/null and b/fonts/TewiFontOutline/296D.png differ diff --git a/fonts/TewiFontOutline/296E.png b/fonts/TewiFontOutline/296E.png new file mode 100644 index 000000000..fe4aa69d3 Binary files /dev/null and b/fonts/TewiFontOutline/296E.png differ diff --git a/fonts/TewiFontOutline/296F.png b/fonts/TewiFontOutline/296F.png new file mode 100644 index 000000000..b0253caaa Binary files /dev/null and b/fonts/TewiFontOutline/296F.png differ diff --git a/fonts/TewiFontOutline/2970.png b/fonts/TewiFontOutline/2970.png new file mode 100644 index 000000000..404ede996 Binary files /dev/null and b/fonts/TewiFontOutline/2970.png differ diff --git a/fonts/TewiFontOutline/2971.png b/fonts/TewiFontOutline/2971.png new file mode 100644 index 000000000..1010c2eb6 Binary files /dev/null and b/fonts/TewiFontOutline/2971.png differ diff --git a/fonts/TewiFontOutline/2972.png b/fonts/TewiFontOutline/2972.png new file mode 100644 index 000000000..6580f4440 Binary files /dev/null and b/fonts/TewiFontOutline/2972.png differ diff --git a/fonts/TewiFontOutline/2973.png b/fonts/TewiFontOutline/2973.png new file mode 100644 index 000000000..3b320a66a Binary files /dev/null and b/fonts/TewiFontOutline/2973.png differ diff --git a/fonts/TewiFontOutline/2974.png b/fonts/TewiFontOutline/2974.png new file mode 100644 index 000000000..1322b0aa4 Binary files /dev/null and b/fonts/TewiFontOutline/2974.png differ diff --git a/fonts/TewiFontOutline/2975.png b/fonts/TewiFontOutline/2975.png new file mode 100644 index 000000000..675481925 Binary files /dev/null and b/fonts/TewiFontOutline/2975.png differ diff --git a/fonts/TewiFontOutline/2976.png b/fonts/TewiFontOutline/2976.png new file mode 100644 index 000000000..12fc9472c Binary files /dev/null and b/fonts/TewiFontOutline/2976.png differ diff --git a/fonts/TewiFontOutline/2978.png b/fonts/TewiFontOutline/2978.png new file mode 100644 index 000000000..7399eb76e Binary files /dev/null and b/fonts/TewiFontOutline/2978.png differ diff --git a/fonts/TewiFontOutline/2979.png b/fonts/TewiFontOutline/2979.png new file mode 100644 index 000000000..4a71c594b Binary files /dev/null and b/fonts/TewiFontOutline/2979.png differ diff --git a/fonts/TewiFontOutline/297A.png b/fonts/TewiFontOutline/297A.png new file mode 100644 index 000000000..088f02672 Binary files /dev/null and b/fonts/TewiFontOutline/297A.png differ diff --git a/fonts/TewiFontOutline/297B.png b/fonts/TewiFontOutline/297B.png new file mode 100644 index 000000000..a38745fc9 Binary files /dev/null and b/fonts/TewiFontOutline/297B.png differ diff --git a/fonts/TewiFontOutline/297C.png b/fonts/TewiFontOutline/297C.png new file mode 100644 index 000000000..c1347787e Binary files /dev/null and b/fonts/TewiFontOutline/297C.png differ diff --git a/fonts/TewiFontOutline/297D.png b/fonts/TewiFontOutline/297D.png new file mode 100644 index 000000000..510994f26 Binary files /dev/null and b/fonts/TewiFontOutline/297D.png differ diff --git a/fonts/TewiFontOutline/297E.png b/fonts/TewiFontOutline/297E.png new file mode 100644 index 000000000..693fa3f4d Binary files /dev/null and b/fonts/TewiFontOutline/297E.png differ diff --git a/fonts/TewiFontOutline/297F.png b/fonts/TewiFontOutline/297F.png new file mode 100644 index 000000000..fe042e7d1 Binary files /dev/null and b/fonts/TewiFontOutline/297F.png differ diff --git a/fonts/TewiFontOutline/2B00.png b/fonts/TewiFontOutline/2B00.png new file mode 100644 index 000000000..73a4ef070 Binary files /dev/null and b/fonts/TewiFontOutline/2B00.png differ diff --git a/fonts/TewiFontOutline/2B01.png b/fonts/TewiFontOutline/2B01.png new file mode 100644 index 000000000..1803250d2 Binary files /dev/null and b/fonts/TewiFontOutline/2B01.png differ diff --git a/fonts/TewiFontOutline/2B02.png b/fonts/TewiFontOutline/2B02.png new file mode 100644 index 000000000..e8fd05ee1 Binary files /dev/null and b/fonts/TewiFontOutline/2B02.png differ diff --git a/fonts/TewiFontOutline/2B03.png b/fonts/TewiFontOutline/2B03.png new file mode 100644 index 000000000..ca4ecccd9 Binary files /dev/null and b/fonts/TewiFontOutline/2B03.png differ diff --git a/fonts/TewiFontOutline/2B05.png b/fonts/TewiFontOutline/2B05.png new file mode 100644 index 000000000..e2546ab45 Binary files /dev/null and b/fonts/TewiFontOutline/2B05.png differ diff --git a/fonts/TewiFontOutline/2B06.png b/fonts/TewiFontOutline/2B06.png new file mode 100644 index 000000000..792ec4f01 Binary files /dev/null and b/fonts/TewiFontOutline/2B06.png differ diff --git a/fonts/TewiFontOutline/2B07.png b/fonts/TewiFontOutline/2B07.png new file mode 100644 index 000000000..e3e58b9ba Binary files /dev/null and b/fonts/TewiFontOutline/2B07.png differ diff --git a/fonts/TewiFontOutline/2B08.png b/fonts/TewiFontOutline/2B08.png new file mode 100644 index 000000000..4d1cb3369 Binary files /dev/null and b/fonts/TewiFontOutline/2B08.png differ diff --git a/fonts/TewiFontOutline/2B09.png b/fonts/TewiFontOutline/2B09.png new file mode 100644 index 000000000..042bda6af Binary files /dev/null and b/fonts/TewiFontOutline/2B09.png differ diff --git a/fonts/TewiFontOutline/2B0A.png b/fonts/TewiFontOutline/2B0A.png new file mode 100644 index 000000000..fafd11c33 Binary files /dev/null and b/fonts/TewiFontOutline/2B0A.png differ diff --git a/fonts/TewiFontOutline/2B0B.png b/fonts/TewiFontOutline/2B0B.png new file mode 100644 index 000000000..2d5076391 Binary files /dev/null and b/fonts/TewiFontOutline/2B0B.png differ diff --git a/fonts/TewiFontOutline/2B0D.png b/fonts/TewiFontOutline/2B0D.png new file mode 100644 index 000000000..f1b866c7c Binary files /dev/null and b/fonts/TewiFontOutline/2B0D.png differ diff --git a/fonts/TewiFontOutline/2B0E.png b/fonts/TewiFontOutline/2B0E.png new file mode 100644 index 000000000..48c8ccc56 Binary files /dev/null and b/fonts/TewiFontOutline/2B0E.png differ diff --git a/fonts/TewiFontOutline/2B0F.png b/fonts/TewiFontOutline/2B0F.png new file mode 100644 index 000000000..3708fd314 Binary files /dev/null and b/fonts/TewiFontOutline/2B0F.png differ diff --git a/fonts/TewiFontOutline/2B10.png b/fonts/TewiFontOutline/2B10.png new file mode 100644 index 000000000..1ae14ce6e Binary files /dev/null and b/fonts/TewiFontOutline/2B10.png differ diff --git a/fonts/TewiFontOutline/2B11.png b/fonts/TewiFontOutline/2B11.png new file mode 100644 index 000000000..ae5d7b503 Binary files /dev/null and b/fonts/TewiFontOutline/2B11.png differ diff --git a/fonts/TewiFontOutline/2B12.png b/fonts/TewiFontOutline/2B12.png new file mode 100644 index 000000000..e0ef3a603 Binary files /dev/null and b/fonts/TewiFontOutline/2B12.png differ diff --git a/fonts/TewiFontOutline/2B13.png b/fonts/TewiFontOutline/2B13.png new file mode 100644 index 000000000..6e49a462b Binary files /dev/null and b/fonts/TewiFontOutline/2B13.png differ diff --git a/fonts/TewiFontOutline/2B14.png b/fonts/TewiFontOutline/2B14.png new file mode 100644 index 000000000..d461a0338 Binary files /dev/null and b/fonts/TewiFontOutline/2B14.png differ diff --git a/fonts/TewiFontOutline/2B15.png b/fonts/TewiFontOutline/2B15.png new file mode 100644 index 000000000..29e32ad64 Binary files /dev/null and b/fonts/TewiFontOutline/2B15.png differ diff --git a/fonts/TewiFontOutline/2B16.png b/fonts/TewiFontOutline/2B16.png new file mode 100644 index 000000000..16a02f5ec Binary files /dev/null and b/fonts/TewiFontOutline/2B16.png differ diff --git a/fonts/TewiFontOutline/2B17.png b/fonts/TewiFontOutline/2B17.png new file mode 100644 index 000000000..eac999a5d Binary files /dev/null and b/fonts/TewiFontOutline/2B17.png differ diff --git a/fonts/TewiFontOutline/2B18.png b/fonts/TewiFontOutline/2B18.png new file mode 100644 index 000000000..79ca13588 Binary files /dev/null and b/fonts/TewiFontOutline/2B18.png differ diff --git a/fonts/TewiFontOutline/2B19.png b/fonts/TewiFontOutline/2B19.png new file mode 100644 index 000000000..1e355cc20 Binary files /dev/null and b/fonts/TewiFontOutline/2B19.png differ diff --git a/fonts/TewiFontOutline/2B1A.png b/fonts/TewiFontOutline/2B1A.png new file mode 100644 index 000000000..89af37777 Binary files /dev/null and b/fonts/TewiFontOutline/2B1A.png differ diff --git a/fonts/TewiFontOutline/2B1B.png b/fonts/TewiFontOutline/2B1B.png new file mode 100644 index 000000000..1b690ff4d Binary files /dev/null and b/fonts/TewiFontOutline/2B1B.png differ diff --git a/fonts/TewiFontOutline/2B1C.png b/fonts/TewiFontOutline/2B1C.png new file mode 100644 index 000000000..f330e0bfb Binary files /dev/null and b/fonts/TewiFontOutline/2B1C.png differ diff --git a/fonts/TewiFontOutline/2B1D.png b/fonts/TewiFontOutline/2B1D.png new file mode 100644 index 000000000..f425c8845 Binary files /dev/null and b/fonts/TewiFontOutline/2B1D.png differ diff --git a/fonts/TewiFontOutline/2B1E.png b/fonts/TewiFontOutline/2B1E.png new file mode 100644 index 000000000..307580efa Binary files /dev/null and b/fonts/TewiFontOutline/2B1E.png differ diff --git a/fonts/TewiFontOutline/2B1F.png b/fonts/TewiFontOutline/2B1F.png new file mode 100644 index 000000000..764a9759e Binary files /dev/null and b/fonts/TewiFontOutline/2B1F.png differ diff --git a/fonts/TewiFontOutline/2B20.png b/fonts/TewiFontOutline/2B20.png new file mode 100644 index 000000000..e3be016b1 Binary files /dev/null and b/fonts/TewiFontOutline/2B20.png differ diff --git a/fonts/TewiFontOutline/2B21.png b/fonts/TewiFontOutline/2B21.png new file mode 100644 index 000000000..b60412074 Binary files /dev/null and b/fonts/TewiFontOutline/2B21.png differ diff --git a/fonts/TewiFontOutline/2B22.png b/fonts/TewiFontOutline/2B22.png new file mode 100644 index 000000000..118068f01 Binary files /dev/null and b/fonts/TewiFontOutline/2B22.png differ diff --git a/fonts/TewiFontOutline/2B23.png b/fonts/TewiFontOutline/2B23.png new file mode 100644 index 000000000..e11f750fa Binary files /dev/null and b/fonts/TewiFontOutline/2B23.png differ diff --git a/fonts/TewiFontOutline/2B24.png b/fonts/TewiFontOutline/2B24.png new file mode 100644 index 000000000..83b720354 Binary files /dev/null and b/fonts/TewiFontOutline/2B24.png differ diff --git a/fonts/TewiFontOutline/2B25.png b/fonts/TewiFontOutline/2B25.png new file mode 100644 index 000000000..30ab37a2e Binary files /dev/null and b/fonts/TewiFontOutline/2B25.png differ diff --git a/fonts/TewiFontOutline/2B26.png b/fonts/TewiFontOutline/2B26.png new file mode 100644 index 000000000..7c18f0ff5 Binary files /dev/null and b/fonts/TewiFontOutline/2B26.png differ diff --git a/fonts/TewiFontOutline/2B27.png b/fonts/TewiFontOutline/2B27.png new file mode 100644 index 000000000..abf7b4064 Binary files /dev/null and b/fonts/TewiFontOutline/2B27.png differ diff --git a/fonts/TewiFontOutline/2B28.png b/fonts/TewiFontOutline/2B28.png new file mode 100644 index 000000000..5fe20b989 Binary files /dev/null and b/fonts/TewiFontOutline/2B28.png differ diff --git a/fonts/TewiFontOutline/2B29.png b/fonts/TewiFontOutline/2B29.png new file mode 100644 index 000000000..dd2dcf08a Binary files /dev/null and b/fonts/TewiFontOutline/2B29.png differ diff --git a/fonts/TewiFontOutline/2B2A.png b/fonts/TewiFontOutline/2B2A.png new file mode 100644 index 000000000..d8d7762fd Binary files /dev/null and b/fonts/TewiFontOutline/2B2A.png differ diff --git a/fonts/TewiFontOutline/2B2B.png b/fonts/TewiFontOutline/2B2B.png new file mode 100644 index 000000000..33041ce0c Binary files /dev/null and b/fonts/TewiFontOutline/2B2B.png differ diff --git a/fonts/TewiFontOutline/2B2C.png b/fonts/TewiFontOutline/2B2C.png new file mode 100644 index 000000000..3804b37a2 Binary files /dev/null and b/fonts/TewiFontOutline/2B2C.png differ diff --git a/fonts/TewiFontOutline/2B2D.png b/fonts/TewiFontOutline/2B2D.png new file mode 100644 index 000000000..52a2cd43f Binary files /dev/null and b/fonts/TewiFontOutline/2B2D.png differ diff --git a/fonts/TewiFontOutline/2B2E.png b/fonts/TewiFontOutline/2B2E.png new file mode 100644 index 000000000..e0767ea39 Binary files /dev/null and b/fonts/TewiFontOutline/2B2E.png differ diff --git a/fonts/TewiFontOutline/2B2F.png b/fonts/TewiFontOutline/2B2F.png new file mode 100644 index 000000000..ba9f9841a Binary files /dev/null and b/fonts/TewiFontOutline/2B2F.png differ diff --git a/fonts/TewiFontOutline/2B30.png b/fonts/TewiFontOutline/2B30.png new file mode 100644 index 000000000..33e88d699 Binary files /dev/null and b/fonts/TewiFontOutline/2B30.png differ diff --git a/fonts/TewiFontOutline/2B31.png b/fonts/TewiFontOutline/2B31.png new file mode 100644 index 000000000..243b90301 Binary files /dev/null and b/fonts/TewiFontOutline/2B31.png differ diff --git a/fonts/TewiFontOutline/2B32.png b/fonts/TewiFontOutline/2B32.png new file mode 100644 index 000000000..6b394ff05 Binary files /dev/null and b/fonts/TewiFontOutline/2B32.png differ diff --git a/fonts/TewiFontOutline/2B38.png b/fonts/TewiFontOutline/2B38.png new file mode 100644 index 000000000..6f84ec775 Binary files /dev/null and b/fonts/TewiFontOutline/2B38.png differ diff --git a/fonts/TewiFontOutline/2B3F.png b/fonts/TewiFontOutline/2B3F.png new file mode 100644 index 000000000..3c825db38 Binary files /dev/null and b/fonts/TewiFontOutline/2B3F.png differ diff --git a/fonts/TewiFontOutline/2B40.png b/fonts/TewiFontOutline/2B40.png new file mode 100644 index 000000000..510a5df9d Binary files /dev/null and b/fonts/TewiFontOutline/2B40.png differ diff --git a/fonts/TewiFontOutline/2B41.png b/fonts/TewiFontOutline/2B41.png new file mode 100644 index 000000000..6cc5bd496 Binary files /dev/null and b/fonts/TewiFontOutline/2B41.png differ diff --git a/fonts/TewiFontOutline/2B42.png b/fonts/TewiFontOutline/2B42.png new file mode 100644 index 000000000..534a4953a Binary files /dev/null and b/fonts/TewiFontOutline/2B42.png differ diff --git a/fonts/TewiFontOutline/2B43.png b/fonts/TewiFontOutline/2B43.png new file mode 100644 index 000000000..60d85c95c Binary files /dev/null and b/fonts/TewiFontOutline/2B43.png differ diff --git a/fonts/TewiFontOutline/2B44.png b/fonts/TewiFontOutline/2B44.png new file mode 100644 index 000000000..fe630e99d Binary files /dev/null and b/fonts/TewiFontOutline/2B44.png differ diff --git a/fonts/TewiFontOutline/2B45.png b/fonts/TewiFontOutline/2B45.png new file mode 100644 index 000000000..f365e763e Binary files /dev/null and b/fonts/TewiFontOutline/2B45.png differ diff --git a/fonts/TewiFontOutline/2B46.png b/fonts/TewiFontOutline/2B46.png new file mode 100644 index 000000000..40a453425 Binary files /dev/null and b/fonts/TewiFontOutline/2B46.png differ diff --git a/fonts/TewiFontOutline/2B47.png b/fonts/TewiFontOutline/2B47.png new file mode 100644 index 000000000..d9264e7d5 Binary files /dev/null and b/fonts/TewiFontOutline/2B47.png differ diff --git a/fonts/TewiFontOutline/2B48.png b/fonts/TewiFontOutline/2B48.png new file mode 100644 index 000000000..1aeb4f963 Binary files /dev/null and b/fonts/TewiFontOutline/2B48.png differ diff --git a/fonts/TewiFontOutline/2B49.png b/fonts/TewiFontOutline/2B49.png new file mode 100644 index 000000000..555002b8b Binary files /dev/null and b/fonts/TewiFontOutline/2B49.png differ diff --git a/fonts/TewiFontOutline/2B4A.png b/fonts/TewiFontOutline/2B4A.png new file mode 100644 index 000000000..9290a293d Binary files /dev/null and b/fonts/TewiFontOutline/2B4A.png differ diff --git a/fonts/TewiFontOutline/2B4B.png b/fonts/TewiFontOutline/2B4B.png new file mode 100644 index 000000000..3f2a28424 Binary files /dev/null and b/fonts/TewiFontOutline/2B4B.png differ diff --git a/fonts/TewiFontOutline/2B4C.png b/fonts/TewiFontOutline/2B4C.png new file mode 100644 index 000000000..23f47be04 Binary files /dev/null and b/fonts/TewiFontOutline/2B4C.png differ diff --git a/fonts/TewiFontOutline/2B4D.png b/fonts/TewiFontOutline/2B4D.png new file mode 100644 index 000000000..ec6ad1726 Binary files /dev/null and b/fonts/TewiFontOutline/2B4D.png differ diff --git a/fonts/TewiFontOutline/2B4E.png b/fonts/TewiFontOutline/2B4E.png new file mode 100644 index 000000000..d9ec062bd Binary files /dev/null and b/fonts/TewiFontOutline/2B4E.png differ diff --git a/fonts/TewiFontOutline/2B4F.png b/fonts/TewiFontOutline/2B4F.png new file mode 100644 index 000000000..c3cb4605d Binary files /dev/null and b/fonts/TewiFontOutline/2B4F.png differ diff --git a/fonts/TewiFontOutline/2B50.png b/fonts/TewiFontOutline/2B50.png new file mode 100644 index 000000000..bef6e7c22 Binary files /dev/null and b/fonts/TewiFontOutline/2B50.png differ diff --git a/fonts/TewiFontOutline/2B51.png b/fonts/TewiFontOutline/2B51.png new file mode 100644 index 000000000..83f16cb07 Binary files /dev/null and b/fonts/TewiFontOutline/2B51.png differ diff --git a/fonts/TewiFontOutline/2B52.png b/fonts/TewiFontOutline/2B52.png new file mode 100644 index 000000000..2c04e9c8a Binary files /dev/null and b/fonts/TewiFontOutline/2B52.png differ diff --git a/fonts/TewiFontOutline/2B53.png b/fonts/TewiFontOutline/2B53.png new file mode 100644 index 000000000..8dc98fd16 Binary files /dev/null and b/fonts/TewiFontOutline/2B53.png differ diff --git a/fonts/TewiFontOutline/2B54.png b/fonts/TewiFontOutline/2B54.png new file mode 100644 index 000000000..53f49e607 Binary files /dev/null and b/fonts/TewiFontOutline/2B54.png differ diff --git a/fonts/TewiFontOutline/2B55.png b/fonts/TewiFontOutline/2B55.png new file mode 100644 index 000000000..cc2cb7ee2 Binary files /dev/null and b/fonts/TewiFontOutline/2B55.png differ diff --git a/fonts/TewiFontOutline/2B58.png b/fonts/TewiFontOutline/2B58.png new file mode 100644 index 000000000..cc2cb7ee2 Binary files /dev/null and b/fonts/TewiFontOutline/2B58.png differ diff --git a/fonts/TewiFontOutline/2B5A.png b/fonts/TewiFontOutline/2B5A.png new file mode 100644 index 000000000..f891f6a96 Binary files /dev/null and b/fonts/TewiFontOutline/2B5A.png differ diff --git a/fonts/TewiFontOutline/2B5B.png b/fonts/TewiFontOutline/2B5B.png new file mode 100644 index 000000000..929b82f17 Binary files /dev/null and b/fonts/TewiFontOutline/2B5B.png differ diff --git a/fonts/TewiFontOutline/2B5C.png b/fonts/TewiFontOutline/2B5C.png new file mode 100644 index 000000000..3ea682a20 Binary files /dev/null and b/fonts/TewiFontOutline/2B5C.png differ diff --git a/fonts/TewiFontOutline/2B5D.png b/fonts/TewiFontOutline/2B5D.png new file mode 100644 index 000000000..f15959e16 Binary files /dev/null and b/fonts/TewiFontOutline/2B5D.png differ diff --git a/fonts/TewiFontOutline/2B5E.png b/fonts/TewiFontOutline/2B5E.png new file mode 100644 index 000000000..8fbef19a1 Binary files /dev/null and b/fonts/TewiFontOutline/2B5E.png differ diff --git a/fonts/TewiFontOutline/2B5F.png b/fonts/TewiFontOutline/2B5F.png new file mode 100644 index 000000000..0f95f2208 Binary files /dev/null and b/fonts/TewiFontOutline/2B5F.png differ diff --git a/fonts/TewiFontOutline/2B60.png b/fonts/TewiFontOutline/2B60.png new file mode 100644 index 000000000..606c7e4e1 Binary files /dev/null and b/fonts/TewiFontOutline/2B60.png differ diff --git a/fonts/TewiFontOutline/2B61.png b/fonts/TewiFontOutline/2B61.png new file mode 100644 index 000000000..741a9a17a Binary files /dev/null and b/fonts/TewiFontOutline/2B61.png differ diff --git a/fonts/TewiFontOutline/2B62.png b/fonts/TewiFontOutline/2B62.png new file mode 100644 index 000000000..e98851f14 Binary files /dev/null and b/fonts/TewiFontOutline/2B62.png differ diff --git a/fonts/TewiFontOutline/2B63.png b/fonts/TewiFontOutline/2B63.png new file mode 100644 index 000000000..a6b55fb4d Binary files /dev/null and b/fonts/TewiFontOutline/2B63.png differ diff --git a/fonts/TewiFontOutline/2B65.png b/fonts/TewiFontOutline/2B65.png new file mode 100644 index 000000000..3f277f667 Binary files /dev/null and b/fonts/TewiFontOutline/2B65.png differ diff --git a/fonts/TewiFontOutline/2B66.png b/fonts/TewiFontOutline/2B66.png new file mode 100644 index 000000000..046559f33 Binary files /dev/null and b/fonts/TewiFontOutline/2B66.png differ diff --git a/fonts/TewiFontOutline/2B67.png b/fonts/TewiFontOutline/2B67.png new file mode 100644 index 000000000..f4bf806e7 Binary files /dev/null and b/fonts/TewiFontOutline/2B67.png differ diff --git a/fonts/TewiFontOutline/2B68.png b/fonts/TewiFontOutline/2B68.png new file mode 100644 index 000000000..170f0fe8b Binary files /dev/null and b/fonts/TewiFontOutline/2B68.png differ diff --git a/fonts/TewiFontOutline/2B69.png b/fonts/TewiFontOutline/2B69.png new file mode 100644 index 000000000..017e5d103 Binary files /dev/null and b/fonts/TewiFontOutline/2B69.png differ diff --git a/fonts/TewiFontOutline/2B6A.png b/fonts/TewiFontOutline/2B6A.png new file mode 100644 index 000000000..16584078c Binary files /dev/null and b/fonts/TewiFontOutline/2B6A.png differ diff --git a/fonts/TewiFontOutline/2B6B.png b/fonts/TewiFontOutline/2B6B.png new file mode 100644 index 000000000..b42bf7fc5 Binary files /dev/null and b/fonts/TewiFontOutline/2B6B.png differ diff --git a/fonts/TewiFontOutline/2B6C.png b/fonts/TewiFontOutline/2B6C.png new file mode 100644 index 000000000..397e29b34 Binary files /dev/null and b/fonts/TewiFontOutline/2B6C.png differ diff --git a/fonts/TewiFontOutline/2B6D.png b/fonts/TewiFontOutline/2B6D.png new file mode 100644 index 000000000..1ee8e3b13 Binary files /dev/null and b/fonts/TewiFontOutline/2B6D.png differ diff --git a/fonts/TewiFontOutline/2B6E.png b/fonts/TewiFontOutline/2B6E.png new file mode 100644 index 000000000..f7018a83c Binary files /dev/null and b/fonts/TewiFontOutline/2B6E.png differ diff --git a/fonts/TewiFontOutline/2B6F.png b/fonts/TewiFontOutline/2B6F.png new file mode 100644 index 000000000..26cc18418 Binary files /dev/null and b/fonts/TewiFontOutline/2B6F.png differ diff --git a/fonts/TewiFontOutline/2B70.png b/fonts/TewiFontOutline/2B70.png new file mode 100644 index 000000000..f70a69645 Binary files /dev/null and b/fonts/TewiFontOutline/2B70.png differ diff --git a/fonts/TewiFontOutline/2B71.png b/fonts/TewiFontOutline/2B71.png new file mode 100644 index 000000000..6421ce23d Binary files /dev/null and b/fonts/TewiFontOutline/2B71.png differ diff --git a/fonts/TewiFontOutline/2B72.png b/fonts/TewiFontOutline/2B72.png new file mode 100644 index 000000000..bfe9bcb1b Binary files /dev/null and b/fonts/TewiFontOutline/2B72.png differ diff --git a/fonts/TewiFontOutline/2B73.png b/fonts/TewiFontOutline/2B73.png new file mode 100644 index 000000000..8ab9d8c72 Binary files /dev/null and b/fonts/TewiFontOutline/2B73.png differ diff --git a/fonts/TewiFontOutline/2B76.png b/fonts/TewiFontOutline/2B76.png new file mode 100644 index 000000000..5d2e94dce Binary files /dev/null and b/fonts/TewiFontOutline/2B76.png differ diff --git a/fonts/TewiFontOutline/2B77.png b/fonts/TewiFontOutline/2B77.png new file mode 100644 index 000000000..4fb436bfc Binary files /dev/null and b/fonts/TewiFontOutline/2B77.png differ diff --git a/fonts/TewiFontOutline/2B78.png b/fonts/TewiFontOutline/2B78.png new file mode 100644 index 000000000..6313d14e0 Binary files /dev/null and b/fonts/TewiFontOutline/2B78.png differ diff --git a/fonts/TewiFontOutline/2B79.png b/fonts/TewiFontOutline/2B79.png new file mode 100644 index 000000000..c6969e846 Binary files /dev/null and b/fonts/TewiFontOutline/2B79.png differ diff --git a/fonts/TewiFontOutline/2B7E.png b/fonts/TewiFontOutline/2B7E.png new file mode 100644 index 000000000..0b92917b7 Binary files /dev/null and b/fonts/TewiFontOutline/2B7E.png differ diff --git a/fonts/TewiFontOutline/2B80.png b/fonts/TewiFontOutline/2B80.png new file mode 100644 index 000000000..f5f9a7a66 Binary files /dev/null and b/fonts/TewiFontOutline/2B80.png differ diff --git a/fonts/TewiFontOutline/2B82.png b/fonts/TewiFontOutline/2B82.png new file mode 100644 index 000000000..93b433e29 Binary files /dev/null and b/fonts/TewiFontOutline/2B82.png differ diff --git a/fonts/TewiFontOutline/2B88.png b/fonts/TewiFontOutline/2B88.png new file mode 100644 index 000000000..0a9bbe522 Binary files /dev/null and b/fonts/TewiFontOutline/2B88.png differ diff --git a/fonts/TewiFontOutline/2B89.png b/fonts/TewiFontOutline/2B89.png new file mode 100644 index 000000000..185cde19a Binary files /dev/null and b/fonts/TewiFontOutline/2B89.png differ diff --git a/fonts/TewiFontOutline/2B8A.png b/fonts/TewiFontOutline/2B8A.png new file mode 100644 index 000000000..c0f04a247 Binary files /dev/null and b/fonts/TewiFontOutline/2B8A.png differ diff --git a/fonts/TewiFontOutline/2B8B.png b/fonts/TewiFontOutline/2B8B.png new file mode 100644 index 000000000..0a0d5af05 Binary files /dev/null and b/fonts/TewiFontOutline/2B8B.png differ diff --git a/fonts/TewiFontOutline/2B8C.png b/fonts/TewiFontOutline/2B8C.png new file mode 100644 index 000000000..276ff9c6e Binary files /dev/null and b/fonts/TewiFontOutline/2B8C.png differ diff --git a/fonts/TewiFontOutline/2B8D.png b/fonts/TewiFontOutline/2B8D.png new file mode 100644 index 000000000..dfb64d078 Binary files /dev/null and b/fonts/TewiFontOutline/2B8D.png differ diff --git a/fonts/TewiFontOutline/2B8E.png b/fonts/TewiFontOutline/2B8E.png new file mode 100644 index 000000000..f98fbfbde Binary files /dev/null and b/fonts/TewiFontOutline/2B8E.png differ diff --git a/fonts/TewiFontOutline/2B8F.png b/fonts/TewiFontOutline/2B8F.png new file mode 100644 index 000000000..cffccbd69 Binary files /dev/null and b/fonts/TewiFontOutline/2B8F.png differ diff --git a/fonts/TewiFontOutline/2B90.png b/fonts/TewiFontOutline/2B90.png new file mode 100644 index 000000000..f54041e34 Binary files /dev/null and b/fonts/TewiFontOutline/2B90.png differ diff --git a/fonts/TewiFontOutline/2B91.png b/fonts/TewiFontOutline/2B91.png new file mode 100644 index 000000000..2020cfdab Binary files /dev/null and b/fonts/TewiFontOutline/2B91.png differ diff --git a/fonts/TewiFontOutline/2B92.png b/fonts/TewiFontOutline/2B92.png new file mode 100644 index 000000000..c67198b78 Binary files /dev/null and b/fonts/TewiFontOutline/2B92.png differ diff --git a/fonts/TewiFontOutline/2B93.png b/fonts/TewiFontOutline/2B93.png new file mode 100644 index 000000000..5bfe872ec Binary files /dev/null and b/fonts/TewiFontOutline/2B93.png differ diff --git a/fonts/TewiFontOutline/2B95.png b/fonts/TewiFontOutline/2B95.png new file mode 100644 index 000000000..7d00c30ae Binary files /dev/null and b/fonts/TewiFontOutline/2B95.png differ diff --git a/fonts/TewiFontOutline/2BA0.png b/fonts/TewiFontOutline/2BA0.png new file mode 100644 index 000000000..27d787b8b Binary files /dev/null and b/fonts/TewiFontOutline/2BA0.png differ diff --git a/fonts/TewiFontOutline/2BA1.png b/fonts/TewiFontOutline/2BA1.png new file mode 100644 index 000000000..aa2af0c68 Binary files /dev/null and b/fonts/TewiFontOutline/2BA1.png differ diff --git a/fonts/TewiFontOutline/2BA2.png b/fonts/TewiFontOutline/2BA2.png new file mode 100644 index 000000000..1aa447dc3 Binary files /dev/null and b/fonts/TewiFontOutline/2BA2.png differ diff --git a/fonts/TewiFontOutline/2BA3.png b/fonts/TewiFontOutline/2BA3.png new file mode 100644 index 000000000..fd853719a Binary files /dev/null and b/fonts/TewiFontOutline/2BA3.png differ diff --git a/fonts/TewiFontOutline/2BA4.png b/fonts/TewiFontOutline/2BA4.png new file mode 100644 index 000000000..5e94f04ee Binary files /dev/null and b/fonts/TewiFontOutline/2BA4.png differ diff --git a/fonts/TewiFontOutline/2BA5.png b/fonts/TewiFontOutline/2BA5.png new file mode 100644 index 000000000..174617f84 Binary files /dev/null and b/fonts/TewiFontOutline/2BA5.png differ diff --git a/fonts/TewiFontOutline/2BA6.png b/fonts/TewiFontOutline/2BA6.png new file mode 100644 index 000000000..d065b93e9 Binary files /dev/null and b/fonts/TewiFontOutline/2BA6.png differ diff --git a/fonts/TewiFontOutline/2BA7.png b/fonts/TewiFontOutline/2BA7.png new file mode 100644 index 000000000..098f2760c Binary files /dev/null and b/fonts/TewiFontOutline/2BA7.png differ diff --git a/fonts/TewiFontOutline/2BA8.png b/fonts/TewiFontOutline/2BA8.png new file mode 100644 index 000000000..de31dcc8b Binary files /dev/null and b/fonts/TewiFontOutline/2BA8.png differ diff --git a/fonts/TewiFontOutline/2BA9.png b/fonts/TewiFontOutline/2BA9.png new file mode 100644 index 000000000..35557fd7e Binary files /dev/null and b/fonts/TewiFontOutline/2BA9.png differ diff --git a/fonts/TewiFontOutline/2BAA.png b/fonts/TewiFontOutline/2BAA.png new file mode 100644 index 000000000..bd7d9d2df Binary files /dev/null and b/fonts/TewiFontOutline/2BAA.png differ diff --git a/fonts/TewiFontOutline/2BAB.png b/fonts/TewiFontOutline/2BAB.png new file mode 100644 index 000000000..80d52b006 Binary files /dev/null and b/fonts/TewiFontOutline/2BAB.png differ diff --git a/fonts/TewiFontOutline/2BAC.png b/fonts/TewiFontOutline/2BAC.png new file mode 100644 index 000000000..7d6e2086e Binary files /dev/null and b/fonts/TewiFontOutline/2BAC.png differ diff --git a/fonts/TewiFontOutline/2BAD.png b/fonts/TewiFontOutline/2BAD.png new file mode 100644 index 000000000..175f1dcd4 Binary files /dev/null and b/fonts/TewiFontOutline/2BAD.png differ diff --git a/fonts/TewiFontOutline/2BAE.png b/fonts/TewiFontOutline/2BAE.png new file mode 100644 index 000000000..0bae6df72 Binary files /dev/null and b/fonts/TewiFontOutline/2BAE.png differ diff --git a/fonts/TewiFontOutline/2BAF.png b/fonts/TewiFontOutline/2BAF.png new file mode 100644 index 000000000..d779bb5d7 Binary files /dev/null and b/fonts/TewiFontOutline/2BAF.png differ diff --git a/fonts/TewiFontOutline/2BB8.png b/fonts/TewiFontOutline/2BB8.png new file mode 100644 index 000000000..0ea0c6bfa Binary files /dev/null and b/fonts/TewiFontOutline/2BB8.png differ diff --git a/fonts/TewiFontOutline/2BC0.png b/fonts/TewiFontOutline/2BC0.png new file mode 100644 index 000000000..1b690ff4d Binary files /dev/null and b/fonts/TewiFontOutline/2BC0.png differ diff --git a/fonts/TewiFontOutline/2BC1.png b/fonts/TewiFontOutline/2BC1.png new file mode 100644 index 000000000..7c18f0ff5 Binary files /dev/null and b/fonts/TewiFontOutline/2BC1.png differ diff --git a/fonts/TewiFontOutline/2BC2.png b/fonts/TewiFontOutline/2BC2.png new file mode 100644 index 000000000..e2f482a33 Binary files /dev/null and b/fonts/TewiFontOutline/2BC2.png differ diff --git a/fonts/TewiFontOutline/2BC5.png b/fonts/TewiFontOutline/2BC5.png new file mode 100644 index 000000000..39256bba2 Binary files /dev/null and b/fonts/TewiFontOutline/2BC5.png differ diff --git a/fonts/TewiFontOutline/2BC6.png b/fonts/TewiFontOutline/2BC6.png new file mode 100644 index 000000000..829e3bd03 Binary files /dev/null and b/fonts/TewiFontOutline/2BC6.png differ diff --git a/fonts/TewiFontOutline/2BC7.png b/fonts/TewiFontOutline/2BC7.png new file mode 100644 index 000000000..b49bbb968 Binary files /dev/null and b/fonts/TewiFontOutline/2BC7.png differ diff --git a/fonts/TewiFontOutline/2BC8.png b/fonts/TewiFontOutline/2BC8.png new file mode 100644 index 000000000..f5cdee5d8 Binary files /dev/null and b/fonts/TewiFontOutline/2BC8.png differ diff --git a/fonts/TewiFontOutline/2BCA.png b/fonts/TewiFontOutline/2BCA.png new file mode 100644 index 000000000..2431b0dcc Binary files /dev/null and b/fonts/TewiFontOutline/2BCA.png differ diff --git a/fonts/TewiFontOutline/2BCB.png b/fonts/TewiFontOutline/2BCB.png new file mode 100644 index 000000000..7d4dd0623 Binary files /dev/null and b/fonts/TewiFontOutline/2BCB.png differ diff --git a/fonts/TewiFontOutline/2BCC.png b/fonts/TewiFontOutline/2BCC.png new file mode 100644 index 000000000..e7cf4b78d Binary files /dev/null and b/fonts/TewiFontOutline/2BCC.png differ diff --git a/fonts/TewiFontOutline/2BCD.png b/fonts/TewiFontOutline/2BCD.png new file mode 100644 index 000000000..8ddf87b1c Binary files /dev/null and b/fonts/TewiFontOutline/2BCD.png differ diff --git a/fonts/TewiFontOutline/2BCE.png b/fonts/TewiFontOutline/2BCE.png new file mode 100644 index 000000000..86147009c Binary files /dev/null and b/fonts/TewiFontOutline/2BCE.png differ diff --git a/fonts/TewiFontOutline/2BCF.png b/fonts/TewiFontOutline/2BCF.png new file mode 100644 index 000000000..521826d0b Binary files /dev/null and b/fonts/TewiFontOutline/2BCF.png differ diff --git a/fonts/TewiFontOutline/2BEC.png b/fonts/TewiFontOutline/2BEC.png new file mode 100644 index 000000000..fd12838d4 Binary files /dev/null and b/fonts/TewiFontOutline/2BEC.png differ diff --git a/fonts/TewiFontOutline/2BED.png b/fonts/TewiFontOutline/2BED.png new file mode 100644 index 000000000..3be80ba40 Binary files /dev/null and b/fonts/TewiFontOutline/2BED.png differ diff --git a/fonts/TewiFontOutline/2BEE.png b/fonts/TewiFontOutline/2BEE.png new file mode 100644 index 000000000..beb80db10 Binary files /dev/null and b/fonts/TewiFontOutline/2BEE.png differ diff --git a/fonts/TewiFontOutline/2BEF.png b/fonts/TewiFontOutline/2BEF.png new file mode 100644 index 000000000..0dd857843 Binary files /dev/null and b/fonts/TewiFontOutline/2BEF.png differ diff --git a/fonts/TewiFontOutline/2C60.png b/fonts/TewiFontOutline/2C60.png new file mode 100644 index 000000000..3488ef323 Binary files /dev/null and b/fonts/TewiFontOutline/2C60.png differ diff --git a/fonts/TewiFontOutline/2C61.png b/fonts/TewiFontOutline/2C61.png new file mode 100644 index 000000000..1b22d9c25 Binary files /dev/null and b/fonts/TewiFontOutline/2C61.png differ diff --git a/fonts/TewiFontOutline/2C62.png b/fonts/TewiFontOutline/2C62.png new file mode 100644 index 000000000..a82e64b86 Binary files /dev/null and b/fonts/TewiFontOutline/2C62.png differ diff --git a/fonts/TewiFontOutline/2C63.png b/fonts/TewiFontOutline/2C63.png new file mode 100644 index 000000000..1e048a522 Binary files /dev/null and b/fonts/TewiFontOutline/2C63.png differ diff --git a/fonts/TewiFontOutline/2C64.png b/fonts/TewiFontOutline/2C64.png new file mode 100644 index 000000000..683d859a0 Binary files /dev/null and b/fonts/TewiFontOutline/2C64.png differ diff --git a/fonts/TewiFontOutline/2C65.png b/fonts/TewiFontOutline/2C65.png new file mode 100644 index 000000000..2753e9d94 Binary files /dev/null and b/fonts/TewiFontOutline/2C65.png differ diff --git a/fonts/TewiFontOutline/2C66.png b/fonts/TewiFontOutline/2C66.png new file mode 100644 index 000000000..fbb89bfde Binary files /dev/null and b/fonts/TewiFontOutline/2C66.png differ diff --git a/fonts/TewiFontOutline/2C67.png b/fonts/TewiFontOutline/2C67.png new file mode 100644 index 000000000..07d96c81b Binary files /dev/null and b/fonts/TewiFontOutline/2C67.png differ diff --git a/fonts/TewiFontOutline/2C68.png b/fonts/TewiFontOutline/2C68.png new file mode 100644 index 000000000..7e2d2a05c Binary files /dev/null and b/fonts/TewiFontOutline/2C68.png differ diff --git a/fonts/TewiFontOutline/2C69.png b/fonts/TewiFontOutline/2C69.png new file mode 100644 index 000000000..7ac118892 Binary files /dev/null and b/fonts/TewiFontOutline/2C69.png differ diff --git a/fonts/TewiFontOutline/2C6A.png b/fonts/TewiFontOutline/2C6A.png new file mode 100644 index 000000000..78d30bc86 Binary files /dev/null and b/fonts/TewiFontOutline/2C6A.png differ diff --git a/fonts/TewiFontOutline/2C6B.png b/fonts/TewiFontOutline/2C6B.png new file mode 100644 index 000000000..dc0d0c369 Binary files /dev/null and b/fonts/TewiFontOutline/2C6B.png differ diff --git a/fonts/TewiFontOutline/2C6C.png b/fonts/TewiFontOutline/2C6C.png new file mode 100644 index 000000000..904ad3fe9 Binary files /dev/null and b/fonts/TewiFontOutline/2C6C.png differ diff --git a/fonts/TewiFontOutline/2C6D.png b/fonts/TewiFontOutline/2C6D.png new file mode 100644 index 000000000..9470df6e0 Binary files /dev/null and b/fonts/TewiFontOutline/2C6D.png differ diff --git a/fonts/TewiFontOutline/2C6E.png b/fonts/TewiFontOutline/2C6E.png new file mode 100644 index 000000000..2305e8e3c Binary files /dev/null and b/fonts/TewiFontOutline/2C6E.png differ diff --git a/fonts/TewiFontOutline/2C6F.png b/fonts/TewiFontOutline/2C6F.png new file mode 100644 index 000000000..68eb7ab18 Binary files /dev/null and b/fonts/TewiFontOutline/2C6F.png differ diff --git a/fonts/TewiFontOutline/2C70.png b/fonts/TewiFontOutline/2C70.png new file mode 100644 index 000000000..e046f33d9 Binary files /dev/null and b/fonts/TewiFontOutline/2C70.png differ diff --git a/fonts/TewiFontOutline/2C71.png b/fonts/TewiFontOutline/2C71.png new file mode 100644 index 000000000..599ff618a Binary files /dev/null and b/fonts/TewiFontOutline/2C71.png differ diff --git a/fonts/TewiFontOutline/2C72.png b/fonts/TewiFontOutline/2C72.png new file mode 100644 index 000000000..6252a87f0 Binary files /dev/null and b/fonts/TewiFontOutline/2C72.png differ diff --git a/fonts/TewiFontOutline/2C73.png b/fonts/TewiFontOutline/2C73.png new file mode 100644 index 000000000..cadab7159 Binary files /dev/null and b/fonts/TewiFontOutline/2C73.png differ diff --git a/fonts/TewiFontOutline/2C74.png b/fonts/TewiFontOutline/2C74.png new file mode 100644 index 000000000..29c7db77a Binary files /dev/null and b/fonts/TewiFontOutline/2C74.png differ diff --git a/fonts/TewiFontOutline/2C75.png b/fonts/TewiFontOutline/2C75.png new file mode 100644 index 000000000..7b176d977 Binary files /dev/null and b/fonts/TewiFontOutline/2C75.png differ diff --git a/fonts/TewiFontOutline/2C76.png b/fonts/TewiFontOutline/2C76.png new file mode 100644 index 000000000..c71f246fb Binary files /dev/null and b/fonts/TewiFontOutline/2C76.png differ diff --git a/fonts/TewiFontOutline/2C77.png b/fonts/TewiFontOutline/2C77.png new file mode 100644 index 000000000..2d3a48b1a Binary files /dev/null and b/fonts/TewiFontOutline/2C77.png differ diff --git a/fonts/TewiFontOutline/2C78.png b/fonts/TewiFontOutline/2C78.png new file mode 100644 index 000000000..1007fd356 Binary files /dev/null and b/fonts/TewiFontOutline/2C78.png differ diff --git a/fonts/TewiFontOutline/2C79.png b/fonts/TewiFontOutline/2C79.png new file mode 100644 index 000000000..dc3d790f0 Binary files /dev/null and b/fonts/TewiFontOutline/2C79.png differ diff --git a/fonts/TewiFontOutline/2C7A.png b/fonts/TewiFontOutline/2C7A.png new file mode 100644 index 000000000..29092187c Binary files /dev/null and b/fonts/TewiFontOutline/2C7A.png differ diff --git a/fonts/TewiFontOutline/2C7B.png b/fonts/TewiFontOutline/2C7B.png new file mode 100644 index 000000000..c39aacef8 Binary files /dev/null and b/fonts/TewiFontOutline/2C7B.png differ diff --git a/fonts/TewiFontOutline/2C7C.png b/fonts/TewiFontOutline/2C7C.png new file mode 100644 index 000000000..eec9534c3 Binary files /dev/null and b/fonts/TewiFontOutline/2C7C.png differ diff --git a/fonts/TewiFontOutline/2C7D.png b/fonts/TewiFontOutline/2C7D.png new file mode 100644 index 000000000..b673f7fd8 Binary files /dev/null and b/fonts/TewiFontOutline/2C7D.png differ diff --git a/fonts/TewiFontOutline/2C7E.png b/fonts/TewiFontOutline/2C7E.png new file mode 100644 index 000000000..0d1cfa8e8 Binary files /dev/null and b/fonts/TewiFontOutline/2C7E.png differ diff --git a/fonts/TewiFontOutline/2C7F.png b/fonts/TewiFontOutline/2C7F.png new file mode 100644 index 000000000..a497a6bb7 Binary files /dev/null and b/fonts/TewiFontOutline/2C7F.png differ diff --git a/fonts/TewiFontOutline/2E00.png b/fonts/TewiFontOutline/2E00.png new file mode 100644 index 000000000..efc495571 Binary files /dev/null and b/fonts/TewiFontOutline/2E00.png differ diff --git a/fonts/TewiFontOutline/2E01.png b/fonts/TewiFontOutline/2E01.png new file mode 100644 index 000000000..77cae6479 Binary files /dev/null and b/fonts/TewiFontOutline/2E01.png differ diff --git a/fonts/TewiFontOutline/2E02.png b/fonts/TewiFontOutline/2E02.png new file mode 100644 index 000000000..74832144c Binary files /dev/null and b/fonts/TewiFontOutline/2E02.png differ diff --git a/fonts/TewiFontOutline/2E03.png b/fonts/TewiFontOutline/2E03.png new file mode 100644 index 000000000..82b6c5360 Binary files /dev/null and b/fonts/TewiFontOutline/2E03.png differ diff --git a/fonts/TewiFontOutline/2E04.png b/fonts/TewiFontOutline/2E04.png new file mode 100644 index 000000000..b8e3e8e1e Binary files /dev/null and b/fonts/TewiFontOutline/2E04.png differ diff --git a/fonts/TewiFontOutline/2E05.png b/fonts/TewiFontOutline/2E05.png new file mode 100644 index 000000000..4da15092c Binary files /dev/null and b/fonts/TewiFontOutline/2E05.png differ diff --git a/fonts/TewiFontOutline/2E06.png b/fonts/TewiFontOutline/2E06.png new file mode 100644 index 000000000..1df15f0f2 Binary files /dev/null and b/fonts/TewiFontOutline/2E06.png differ diff --git a/fonts/TewiFontOutline/2E07.png b/fonts/TewiFontOutline/2E07.png new file mode 100644 index 000000000..950341d52 Binary files /dev/null and b/fonts/TewiFontOutline/2E07.png differ diff --git a/fonts/TewiFontOutline/2E08.png b/fonts/TewiFontOutline/2E08.png new file mode 100644 index 000000000..6b6316c92 Binary files /dev/null and b/fonts/TewiFontOutline/2E08.png differ diff --git a/fonts/TewiFontOutline/2E09.png b/fonts/TewiFontOutline/2E09.png new file mode 100644 index 000000000..5e16f2504 Binary files /dev/null and b/fonts/TewiFontOutline/2E09.png differ diff --git a/fonts/TewiFontOutline/2E0A.png b/fonts/TewiFontOutline/2E0A.png new file mode 100644 index 000000000..0c0ce52bc Binary files /dev/null and b/fonts/TewiFontOutline/2E0A.png differ diff --git a/fonts/TewiFontOutline/2E0B.png b/fonts/TewiFontOutline/2E0B.png new file mode 100644 index 000000000..ae459c2de Binary files /dev/null and b/fonts/TewiFontOutline/2E0B.png differ diff --git a/fonts/TewiFontOutline/2E0C.png b/fonts/TewiFontOutline/2E0C.png new file mode 100644 index 000000000..d5dc29d64 Binary files /dev/null and b/fonts/TewiFontOutline/2E0C.png differ diff --git a/fonts/TewiFontOutline/2E0D.png b/fonts/TewiFontOutline/2E0D.png new file mode 100644 index 000000000..e3873a9a9 Binary files /dev/null and b/fonts/TewiFontOutline/2E0D.png differ diff --git a/fonts/TewiFontOutline/2E0F.png b/fonts/TewiFontOutline/2E0F.png new file mode 100644 index 000000000..578c70d7f Binary files /dev/null and b/fonts/TewiFontOutline/2E0F.png differ diff --git a/fonts/TewiFontOutline/2E10.png b/fonts/TewiFontOutline/2E10.png new file mode 100644 index 000000000..ecd4bdcfc Binary files /dev/null and b/fonts/TewiFontOutline/2E10.png differ diff --git a/fonts/TewiFontOutline/2E11.png b/fonts/TewiFontOutline/2E11.png new file mode 100644 index 000000000..e33338722 Binary files /dev/null and b/fonts/TewiFontOutline/2E11.png differ diff --git a/fonts/TewiFontOutline/2E12.png b/fonts/TewiFontOutline/2E12.png new file mode 100644 index 000000000..5758105c7 Binary files /dev/null and b/fonts/TewiFontOutline/2E12.png differ diff --git a/fonts/TewiFontOutline/2E13.png b/fonts/TewiFontOutline/2E13.png new file mode 100644 index 000000000..84d3c214e Binary files /dev/null and b/fonts/TewiFontOutline/2E13.png differ diff --git a/fonts/TewiFontOutline/2E14.png b/fonts/TewiFontOutline/2E14.png new file mode 100644 index 000000000..3f82165af Binary files /dev/null and b/fonts/TewiFontOutline/2E14.png differ diff --git a/fonts/TewiFontOutline/2E15.png b/fonts/TewiFontOutline/2E15.png new file mode 100644 index 000000000..55788bfdc Binary files /dev/null and b/fonts/TewiFontOutline/2E15.png differ diff --git a/fonts/TewiFontOutline/2E16.png b/fonts/TewiFontOutline/2E16.png new file mode 100644 index 000000000..62f57097c Binary files /dev/null and b/fonts/TewiFontOutline/2E16.png differ diff --git a/fonts/TewiFontOutline/2E17.png b/fonts/TewiFontOutline/2E17.png new file mode 100644 index 000000000..4ba2ba877 Binary files /dev/null and b/fonts/TewiFontOutline/2E17.png differ diff --git a/fonts/TewiFontOutline/2E18.png b/fonts/TewiFontOutline/2E18.png new file mode 100644 index 000000000..bcb596d20 Binary files /dev/null and b/fonts/TewiFontOutline/2E18.png differ diff --git a/fonts/TewiFontOutline/2E1A.png b/fonts/TewiFontOutline/2E1A.png new file mode 100644 index 000000000..5b3fb5a8a Binary files /dev/null and b/fonts/TewiFontOutline/2E1A.png differ diff --git a/fonts/TewiFontOutline/2E1B.png b/fonts/TewiFontOutline/2E1B.png new file mode 100644 index 000000000..74b5d44ac Binary files /dev/null and b/fonts/TewiFontOutline/2E1B.png differ diff --git a/fonts/TewiFontOutline/2E1C.png b/fonts/TewiFontOutline/2E1C.png new file mode 100644 index 000000000..4d237a18e Binary files /dev/null and b/fonts/TewiFontOutline/2E1C.png differ diff --git a/fonts/TewiFontOutline/2E1D.png b/fonts/TewiFontOutline/2E1D.png new file mode 100644 index 000000000..85f796d1b Binary files /dev/null and b/fonts/TewiFontOutline/2E1D.png differ diff --git a/fonts/TewiFontOutline/2E1E.png b/fonts/TewiFontOutline/2E1E.png new file mode 100644 index 000000000..225b2a0e2 Binary files /dev/null and b/fonts/TewiFontOutline/2E1E.png differ diff --git a/fonts/TewiFontOutline/2E1F.png b/fonts/TewiFontOutline/2E1F.png new file mode 100644 index 000000000..35c1dabd2 Binary files /dev/null and b/fonts/TewiFontOutline/2E1F.png differ diff --git a/fonts/TewiFontOutline/2E20.png b/fonts/TewiFontOutline/2E20.png new file mode 100644 index 000000000..c9e759a31 Binary files /dev/null and b/fonts/TewiFontOutline/2E20.png differ diff --git a/fonts/TewiFontOutline/2E21.png b/fonts/TewiFontOutline/2E21.png new file mode 100644 index 000000000..84c441604 Binary files /dev/null and b/fonts/TewiFontOutline/2E21.png differ diff --git a/fonts/TewiFontOutline/2E22.png b/fonts/TewiFontOutline/2E22.png new file mode 100644 index 000000000..c068c07af Binary files /dev/null and b/fonts/TewiFontOutline/2E22.png differ diff --git a/fonts/TewiFontOutline/2E23.png b/fonts/TewiFontOutline/2E23.png new file mode 100644 index 000000000..84c441604 Binary files /dev/null and b/fonts/TewiFontOutline/2E23.png differ diff --git a/fonts/TewiFontOutline/2E24.png b/fonts/TewiFontOutline/2E24.png new file mode 100644 index 000000000..339a61eed Binary files /dev/null and b/fonts/TewiFontOutline/2E24.png differ diff --git a/fonts/TewiFontOutline/2E25.png b/fonts/TewiFontOutline/2E25.png new file mode 100644 index 000000000..a01c4734a Binary files /dev/null and b/fonts/TewiFontOutline/2E25.png differ diff --git a/fonts/TewiFontOutline/2E26.png b/fonts/TewiFontOutline/2E26.png new file mode 100644 index 000000000..9cd106d50 Binary files /dev/null and b/fonts/TewiFontOutline/2E26.png differ diff --git a/fonts/TewiFontOutline/2E27.png b/fonts/TewiFontOutline/2E27.png new file mode 100644 index 000000000..5020595ab Binary files /dev/null and b/fonts/TewiFontOutline/2E27.png differ diff --git a/fonts/TewiFontOutline/2E28.png b/fonts/TewiFontOutline/2E28.png new file mode 100644 index 000000000..cb01201a6 Binary files /dev/null and b/fonts/TewiFontOutline/2E28.png differ diff --git a/fonts/TewiFontOutline/2E29.png b/fonts/TewiFontOutline/2E29.png new file mode 100644 index 000000000..822fb2fa9 Binary files /dev/null and b/fonts/TewiFontOutline/2E29.png differ diff --git a/fonts/TewiFontOutline/2E2A.png b/fonts/TewiFontOutline/2E2A.png new file mode 100644 index 000000000..0205c683f Binary files /dev/null and b/fonts/TewiFontOutline/2E2A.png differ diff --git a/fonts/TewiFontOutline/2E2B.png b/fonts/TewiFontOutline/2E2B.png new file mode 100644 index 000000000..dee8a19d8 Binary files /dev/null and b/fonts/TewiFontOutline/2E2B.png differ diff --git a/fonts/TewiFontOutline/2E2C.png b/fonts/TewiFontOutline/2E2C.png new file mode 100644 index 000000000..517a64f59 Binary files /dev/null and b/fonts/TewiFontOutline/2E2C.png differ diff --git a/fonts/TewiFontOutline/2E2D.png b/fonts/TewiFontOutline/2E2D.png new file mode 100644 index 000000000..ef1607a5e Binary files /dev/null and b/fonts/TewiFontOutline/2E2D.png differ diff --git a/fonts/TewiFontOutline/2E2E.png b/fonts/TewiFontOutline/2E2E.png new file mode 100644 index 000000000..a4e023b8f Binary files /dev/null and b/fonts/TewiFontOutline/2E2E.png differ diff --git a/fonts/TewiFontOutline/2E2F.png b/fonts/TewiFontOutline/2E2F.png new file mode 100644 index 000000000..3d78d3781 Binary files /dev/null and b/fonts/TewiFontOutline/2E2F.png differ diff --git a/fonts/TewiFontOutline/2E30.png b/fonts/TewiFontOutline/2E30.png new file mode 100644 index 000000000..e8639eca9 Binary files /dev/null and b/fonts/TewiFontOutline/2E30.png differ diff --git a/fonts/TewiFontOutline/2E31.png b/fonts/TewiFontOutline/2E31.png new file mode 100644 index 000000000..bf28f90ae Binary files /dev/null and b/fonts/TewiFontOutline/2E31.png differ diff --git a/fonts/TewiFontOutline/2E32.png b/fonts/TewiFontOutline/2E32.png new file mode 100644 index 000000000..7815fc29a Binary files /dev/null and b/fonts/TewiFontOutline/2E32.png differ diff --git a/fonts/TewiFontOutline/2E33.png b/fonts/TewiFontOutline/2E33.png new file mode 100644 index 000000000..28270b539 Binary files /dev/null and b/fonts/TewiFontOutline/2E33.png differ diff --git a/fonts/TewiFontOutline/2E34.png b/fonts/TewiFontOutline/2E34.png new file mode 100644 index 000000000..51b32236e Binary files /dev/null and b/fonts/TewiFontOutline/2E34.png differ diff --git a/fonts/TewiFontOutline/2E35.png b/fonts/TewiFontOutline/2E35.png new file mode 100644 index 000000000..248c9821d Binary files /dev/null and b/fonts/TewiFontOutline/2E35.png differ diff --git a/fonts/TewiFontOutline/2E36.png b/fonts/TewiFontOutline/2E36.png new file mode 100644 index 000000000..ecdd272aa Binary files /dev/null and b/fonts/TewiFontOutline/2E36.png differ diff --git a/fonts/TewiFontOutline/2E37.png b/fonts/TewiFontOutline/2E37.png new file mode 100644 index 000000000..0ac347ded Binary files /dev/null and b/fonts/TewiFontOutline/2E37.png differ diff --git a/fonts/TewiFontOutline/2E38.png b/fonts/TewiFontOutline/2E38.png new file mode 100644 index 000000000..b6dce2ba7 Binary files /dev/null and b/fonts/TewiFontOutline/2E38.png differ diff --git a/fonts/TewiFontOutline/2E39.png b/fonts/TewiFontOutline/2E39.png new file mode 100644 index 000000000..e76e47315 Binary files /dev/null and b/fonts/TewiFontOutline/2E39.png differ diff --git a/fonts/TewiFontOutline/2E3A.png b/fonts/TewiFontOutline/2E3A.png new file mode 100644 index 000000000..13b7c235f Binary files /dev/null and b/fonts/TewiFontOutline/2E3A.png differ diff --git a/fonts/TewiFontOutline/2E3B.png b/fonts/TewiFontOutline/2E3B.png new file mode 100644 index 000000000..6039b1cb7 Binary files /dev/null and b/fonts/TewiFontOutline/2E3B.png differ diff --git a/fonts/TewiFontOutline/2E3C.png b/fonts/TewiFontOutline/2E3C.png new file mode 100644 index 000000000..1cf7b80a0 Binary files /dev/null and b/fonts/TewiFontOutline/2E3C.png differ diff --git a/fonts/TewiFontOutline/2E3D.png b/fonts/TewiFontOutline/2E3D.png new file mode 100644 index 000000000..f00ddb4a9 Binary files /dev/null and b/fonts/TewiFontOutline/2E3D.png differ diff --git a/fonts/TewiFontOutline/2E3E.png b/fonts/TewiFontOutline/2E3E.png new file mode 100644 index 000000000..5f9ce402f Binary files /dev/null and b/fonts/TewiFontOutline/2E3E.png differ diff --git a/fonts/TewiFontOutline/2E3F.png b/fonts/TewiFontOutline/2E3F.png new file mode 100644 index 000000000..e0b3e4c52 Binary files /dev/null and b/fonts/TewiFontOutline/2E3F.png differ diff --git a/fonts/TewiFontOutline/2E40.png b/fonts/TewiFontOutline/2E40.png new file mode 100644 index 000000000..c90951c25 Binary files /dev/null and b/fonts/TewiFontOutline/2E40.png differ diff --git a/fonts/TewiFontOutline/E0A0.png b/fonts/TewiFontOutline/E0A0.png new file mode 100644 index 000000000..781c6ce82 Binary files /dev/null and b/fonts/TewiFontOutline/E0A0.png differ diff --git a/fonts/TewiFontOutline/E0A1.png b/fonts/TewiFontOutline/E0A1.png new file mode 100644 index 000000000..cbff5c735 Binary files /dev/null and b/fonts/TewiFontOutline/E0A1.png differ diff --git a/fonts/TewiFontOutline/E0A2.png b/fonts/TewiFontOutline/E0A2.png new file mode 100644 index 000000000..1baf3d3c8 Binary files /dev/null and b/fonts/TewiFontOutline/E0A2.png differ diff --git a/fonts/TewiFontOutline/E0A5.png b/fonts/TewiFontOutline/E0A5.png new file mode 100644 index 000000000..bb2d7b459 Binary files /dev/null and b/fonts/TewiFontOutline/E0A5.png differ diff --git a/fonts/TewiFontOutline/E0A6.png b/fonts/TewiFontOutline/E0A6.png new file mode 100644 index 000000000..8f913a335 Binary files /dev/null and b/fonts/TewiFontOutline/E0A6.png differ diff --git a/fonts/TewiFontOutline/E0A7.png b/fonts/TewiFontOutline/E0A7.png new file mode 100644 index 000000000..20c16aa9a Binary files /dev/null and b/fonts/TewiFontOutline/E0A7.png differ diff --git a/fonts/TewiFontOutline/E0A8.png b/fonts/TewiFontOutline/E0A8.png new file mode 100644 index 000000000..1032c69a5 Binary files /dev/null and b/fonts/TewiFontOutline/E0A8.png differ diff --git a/fonts/TewiFontOutline/E0A9.png b/fonts/TewiFontOutline/E0A9.png new file mode 100644 index 000000000..699b61bfe Binary files /dev/null and b/fonts/TewiFontOutline/E0A9.png differ diff --git a/fonts/TewiFontOutline/E0AA.png b/fonts/TewiFontOutline/E0AA.png new file mode 100644 index 000000000..4f8060adb Binary files /dev/null and b/fonts/TewiFontOutline/E0AA.png differ diff --git a/fonts/TewiFontOutline/E0AB.png b/fonts/TewiFontOutline/E0AB.png new file mode 100644 index 000000000..9e43dc8f3 Binary files /dev/null and b/fonts/TewiFontOutline/E0AB.png differ diff --git a/fonts/TewiFontOutline/E0AC.png b/fonts/TewiFontOutline/E0AC.png new file mode 100644 index 000000000..48fc399ae Binary files /dev/null and b/fonts/TewiFontOutline/E0AC.png differ diff --git a/fonts/TewiFontOutline/E0B0.png b/fonts/TewiFontOutline/E0B0.png new file mode 100644 index 000000000..4d460dc5f Binary files /dev/null and b/fonts/TewiFontOutline/E0B0.png differ diff --git a/fonts/TewiFontOutline/E0B1.png b/fonts/TewiFontOutline/E0B1.png new file mode 100644 index 000000000..79138ac3a Binary files /dev/null and b/fonts/TewiFontOutline/E0B1.png differ diff --git a/fonts/TewiFontOutline/E0B2.png b/fonts/TewiFontOutline/E0B2.png new file mode 100644 index 000000000..59b71e2f6 Binary files /dev/null and b/fonts/TewiFontOutline/E0B2.png differ diff --git a/fonts/TewiFontOutline/E0B3.png b/fonts/TewiFontOutline/E0B3.png new file mode 100644 index 000000000..01e23cf4d Binary files /dev/null and b/fonts/TewiFontOutline/E0B3.png differ diff --git a/fonts/TewiFontOutline/E0B5.png b/fonts/TewiFontOutline/E0B5.png new file mode 100644 index 000000000..6f2ea9b87 Binary files /dev/null and b/fonts/TewiFontOutline/E0B5.png differ diff --git a/fonts/TewiFontOutline/E0B6.png b/fonts/TewiFontOutline/E0B6.png new file mode 100644 index 000000000..be020773f Binary files /dev/null and b/fonts/TewiFontOutline/E0B6.png differ diff --git a/fonts/TewiFontOutline/E0B7.png b/fonts/TewiFontOutline/E0B7.png new file mode 100644 index 000000000..771ac8a1b Binary files /dev/null and b/fonts/TewiFontOutline/E0B7.png differ diff --git a/fonts/TewiFontOutline/E0B8.png b/fonts/TewiFontOutline/E0B8.png new file mode 100644 index 000000000..e564bbfc1 Binary files /dev/null and b/fonts/TewiFontOutline/E0B8.png differ diff --git a/fonts/TewiFontOutline/E0C0.png b/fonts/TewiFontOutline/E0C0.png new file mode 100644 index 000000000..71c670633 Binary files /dev/null and b/fonts/TewiFontOutline/E0C0.png differ diff --git a/fonts/TewiFontOutline/E0C1.png b/fonts/TewiFontOutline/E0C1.png new file mode 100644 index 000000000..e081afe14 Binary files /dev/null and b/fonts/TewiFontOutline/E0C1.png differ diff --git a/fonts/TewiFontOutline/E0C2.png b/fonts/TewiFontOutline/E0C2.png new file mode 100644 index 000000000..39deb172b Binary files /dev/null and b/fonts/TewiFontOutline/E0C2.png differ diff --git a/fonts/TewiFontOutline/E0C3.png b/fonts/TewiFontOutline/E0C3.png new file mode 100644 index 000000000..02bfcbdbf Binary files /dev/null and b/fonts/TewiFontOutline/E0C3.png differ diff --git a/fonts/TewiFontOutline/E0C4.png b/fonts/TewiFontOutline/E0C4.png new file mode 100644 index 000000000..740eac3d2 Binary files /dev/null and b/fonts/TewiFontOutline/E0C4.png differ diff --git a/fonts/TewiFontOutline/E0C5.png b/fonts/TewiFontOutline/E0C5.png new file mode 100644 index 000000000..673d931c5 Binary files /dev/null and b/fonts/TewiFontOutline/E0C5.png differ diff --git a/fonts/TewiFontOutline/E0C6.png b/fonts/TewiFontOutline/E0C6.png new file mode 100644 index 000000000..c26ef1b33 Binary files /dev/null and b/fonts/TewiFontOutline/E0C6.png differ diff --git a/fonts/TewiFontOutline/E0C7.png b/fonts/TewiFontOutline/E0C7.png new file mode 100644 index 000000000..1630c4120 Binary files /dev/null and b/fonts/TewiFontOutline/E0C7.png differ diff --git a/fonts/TewiFontOutline/FB01.png b/fonts/TewiFontOutline/FB01.png new file mode 100644 index 000000000..234243312 Binary files /dev/null and b/fonts/TewiFontOutline/FB01.png differ diff --git a/fonts/TewiFontOutline/FB02.png b/fonts/TewiFontOutline/FB02.png new file mode 100644 index 000000000..fc18482fe Binary files /dev/null and b/fonts/TewiFontOutline/FB02.png differ diff --git a/fonts/TewiFontOutline/FF01.png b/fonts/TewiFontOutline/FF01.png new file mode 100644 index 000000000..b56df7e4d Binary files /dev/null and b/fonts/TewiFontOutline/FF01.png differ diff --git a/fonts/TewiFontOutline/FF02.png b/fonts/TewiFontOutline/FF02.png new file mode 100644 index 000000000..c30dc8276 Binary files /dev/null and b/fonts/TewiFontOutline/FF02.png differ diff --git a/fonts/TewiFontOutline/FF03.png b/fonts/TewiFontOutline/FF03.png new file mode 100644 index 000000000..966e6c4f5 Binary files /dev/null and b/fonts/TewiFontOutline/FF03.png differ diff --git a/fonts/TewiFontOutline/FF04.png b/fonts/TewiFontOutline/FF04.png new file mode 100644 index 000000000..f92a68b43 Binary files /dev/null and b/fonts/TewiFontOutline/FF04.png differ diff --git a/fonts/TewiFontOutline/FF05.png b/fonts/TewiFontOutline/FF05.png new file mode 100644 index 000000000..8fcc5faa7 Binary files /dev/null and b/fonts/TewiFontOutline/FF05.png differ diff --git a/fonts/TewiFontOutline/FF06.png b/fonts/TewiFontOutline/FF06.png new file mode 100644 index 000000000..517d10c15 Binary files /dev/null and b/fonts/TewiFontOutline/FF06.png differ diff --git a/fonts/TewiFontOutline/FF07.png b/fonts/TewiFontOutline/FF07.png new file mode 100644 index 000000000..5160e8abe Binary files /dev/null and b/fonts/TewiFontOutline/FF07.png differ diff --git a/fonts/TewiFontOutline/FF08.png b/fonts/TewiFontOutline/FF08.png new file mode 100644 index 000000000..47c9c7b67 Binary files /dev/null and b/fonts/TewiFontOutline/FF08.png differ diff --git a/fonts/TewiFontOutline/FF09.png b/fonts/TewiFontOutline/FF09.png new file mode 100644 index 000000000..70b11c7ee Binary files /dev/null and b/fonts/TewiFontOutline/FF09.png differ diff --git a/fonts/TewiFontOutline/FF0A.png b/fonts/TewiFontOutline/FF0A.png new file mode 100644 index 000000000..6235d7af6 Binary files /dev/null and b/fonts/TewiFontOutline/FF0A.png differ diff --git a/fonts/TewiFontOutline/FF0B.png b/fonts/TewiFontOutline/FF0B.png new file mode 100644 index 000000000..8a70241d4 Binary files /dev/null and b/fonts/TewiFontOutline/FF0B.png differ diff --git a/fonts/TewiFontOutline/FF0C.png b/fonts/TewiFontOutline/FF0C.png new file mode 100644 index 000000000..7c4c30565 Binary files /dev/null and b/fonts/TewiFontOutline/FF0C.png differ diff --git a/fonts/TewiFontOutline/FF0D.png b/fonts/TewiFontOutline/FF0D.png new file mode 100644 index 000000000..ea6d4c232 Binary files /dev/null and b/fonts/TewiFontOutline/FF0D.png differ diff --git a/fonts/TewiFontOutline/FF0E.png b/fonts/TewiFontOutline/FF0E.png new file mode 100644 index 000000000..7a293c8c8 Binary files /dev/null and b/fonts/TewiFontOutline/FF0E.png differ diff --git a/fonts/TewiFontOutline/FF0F.png b/fonts/TewiFontOutline/FF0F.png new file mode 100644 index 000000000..eb287a8ea Binary files /dev/null and b/fonts/TewiFontOutline/FF0F.png differ diff --git a/fonts/TewiFontOutline/FF10.png b/fonts/TewiFontOutline/FF10.png new file mode 100644 index 000000000..4b23271e2 Binary files /dev/null and b/fonts/TewiFontOutline/FF10.png differ diff --git a/fonts/TewiFontOutline/FF11.png b/fonts/TewiFontOutline/FF11.png new file mode 100644 index 000000000..d3f7f20ae Binary files /dev/null and b/fonts/TewiFontOutline/FF11.png differ diff --git a/fonts/TewiFontOutline/FF12.png b/fonts/TewiFontOutline/FF12.png new file mode 100644 index 000000000..bca33ae63 Binary files /dev/null and b/fonts/TewiFontOutline/FF12.png differ diff --git a/fonts/TewiFontOutline/FF13.png b/fonts/TewiFontOutline/FF13.png new file mode 100644 index 000000000..1c052029d Binary files /dev/null and b/fonts/TewiFontOutline/FF13.png differ diff --git a/fonts/TewiFontOutline/FF14.png b/fonts/TewiFontOutline/FF14.png new file mode 100644 index 000000000..f1b91219a Binary files /dev/null and b/fonts/TewiFontOutline/FF14.png differ diff --git a/fonts/TewiFontOutline/FF15.png b/fonts/TewiFontOutline/FF15.png new file mode 100644 index 000000000..3252187dd Binary files /dev/null and b/fonts/TewiFontOutline/FF15.png differ diff --git a/fonts/TewiFontOutline/FF16.png b/fonts/TewiFontOutline/FF16.png new file mode 100644 index 000000000..12f7e7d0b Binary files /dev/null and b/fonts/TewiFontOutline/FF16.png differ diff --git a/fonts/TewiFontOutline/FF17.png b/fonts/TewiFontOutline/FF17.png new file mode 100644 index 000000000..1c6b10228 Binary files /dev/null and b/fonts/TewiFontOutline/FF17.png differ diff --git a/fonts/TewiFontOutline/FF18.png b/fonts/TewiFontOutline/FF18.png new file mode 100644 index 000000000..8982af734 Binary files /dev/null and b/fonts/TewiFontOutline/FF18.png differ diff --git a/fonts/TewiFontOutline/FF19.png b/fonts/TewiFontOutline/FF19.png new file mode 100644 index 000000000..1a7305618 Binary files /dev/null and b/fonts/TewiFontOutline/FF19.png differ diff --git a/fonts/TewiFontOutline/FF1A.png b/fonts/TewiFontOutline/FF1A.png new file mode 100644 index 000000000..42c98f807 Binary files /dev/null and b/fonts/TewiFontOutline/FF1A.png differ diff --git a/fonts/TewiFontOutline/FF1B.png b/fonts/TewiFontOutline/FF1B.png new file mode 100644 index 000000000..f6ec297d1 Binary files /dev/null and b/fonts/TewiFontOutline/FF1B.png differ diff --git a/fonts/TewiFontOutline/FF1C.png b/fonts/TewiFontOutline/FF1C.png new file mode 100644 index 000000000..f6f9d3c6f Binary files /dev/null and b/fonts/TewiFontOutline/FF1C.png differ diff --git a/fonts/TewiFontOutline/FF1D.png b/fonts/TewiFontOutline/FF1D.png new file mode 100644 index 000000000..a5d0a1807 Binary files /dev/null and b/fonts/TewiFontOutline/FF1D.png differ diff --git a/fonts/TewiFontOutline/FF1E.png b/fonts/TewiFontOutline/FF1E.png new file mode 100644 index 000000000..0f93af4c3 Binary files /dev/null and b/fonts/TewiFontOutline/FF1E.png differ diff --git a/fonts/TewiFontOutline/FF1F.png b/fonts/TewiFontOutline/FF1F.png new file mode 100644 index 000000000..4d5d8e8c0 Binary files /dev/null and b/fonts/TewiFontOutline/FF1F.png differ diff --git a/fonts/TewiFontOutline/FF20.png b/fonts/TewiFontOutline/FF20.png new file mode 100644 index 000000000..b76ce2ce5 Binary files /dev/null and b/fonts/TewiFontOutline/FF20.png differ diff --git a/fonts/TewiFontOutline/FF21.png b/fonts/TewiFontOutline/FF21.png new file mode 100644 index 000000000..e05b9d143 Binary files /dev/null and b/fonts/TewiFontOutline/FF21.png differ diff --git a/fonts/TewiFontOutline/FF22.png b/fonts/TewiFontOutline/FF22.png new file mode 100644 index 000000000..a4cd5497d Binary files /dev/null and b/fonts/TewiFontOutline/FF22.png differ diff --git a/fonts/TewiFontOutline/FF23.png b/fonts/TewiFontOutline/FF23.png new file mode 100644 index 000000000..4955c665e Binary files /dev/null and b/fonts/TewiFontOutline/FF23.png differ diff --git a/fonts/TewiFontOutline/FF24.png b/fonts/TewiFontOutline/FF24.png new file mode 100644 index 000000000..41badd003 Binary files /dev/null and b/fonts/TewiFontOutline/FF24.png differ diff --git a/fonts/TewiFontOutline/FF25.png b/fonts/TewiFontOutline/FF25.png new file mode 100644 index 000000000..5e90791fd Binary files /dev/null and b/fonts/TewiFontOutline/FF25.png differ diff --git a/fonts/TewiFontOutline/FF26.png b/fonts/TewiFontOutline/FF26.png new file mode 100644 index 000000000..acf25d584 Binary files /dev/null and b/fonts/TewiFontOutline/FF26.png differ diff --git a/fonts/TewiFontOutline/FF27.png b/fonts/TewiFontOutline/FF27.png new file mode 100644 index 000000000..05dd880b5 Binary files /dev/null and b/fonts/TewiFontOutline/FF27.png differ diff --git a/fonts/TewiFontOutline/FF28.png b/fonts/TewiFontOutline/FF28.png new file mode 100644 index 000000000..a6e265b4f Binary files /dev/null and b/fonts/TewiFontOutline/FF28.png differ diff --git a/fonts/TewiFontOutline/FF29.png b/fonts/TewiFontOutline/FF29.png new file mode 100644 index 000000000..aad508ab2 Binary files /dev/null and b/fonts/TewiFontOutline/FF29.png differ diff --git a/fonts/TewiFontOutline/FF2A.png b/fonts/TewiFontOutline/FF2A.png new file mode 100644 index 000000000..9aeffe5f7 Binary files /dev/null and b/fonts/TewiFontOutline/FF2A.png differ diff --git a/fonts/TewiFontOutline/FF2B.png b/fonts/TewiFontOutline/FF2B.png new file mode 100644 index 000000000..1672719a0 Binary files /dev/null and b/fonts/TewiFontOutline/FF2B.png differ diff --git a/fonts/TewiFontOutline/FF2C.png b/fonts/TewiFontOutline/FF2C.png new file mode 100644 index 000000000..6cd904b41 Binary files /dev/null and b/fonts/TewiFontOutline/FF2C.png differ diff --git a/fonts/TewiFontOutline/FF2D.png b/fonts/TewiFontOutline/FF2D.png new file mode 100644 index 000000000..730e326e5 Binary files /dev/null and b/fonts/TewiFontOutline/FF2D.png differ diff --git a/fonts/TewiFontOutline/FF2E.png b/fonts/TewiFontOutline/FF2E.png new file mode 100644 index 000000000..bcaa22402 Binary files /dev/null and b/fonts/TewiFontOutline/FF2E.png differ diff --git a/fonts/TewiFontOutline/FF2F.png b/fonts/TewiFontOutline/FF2F.png new file mode 100644 index 000000000..578181d84 Binary files /dev/null and b/fonts/TewiFontOutline/FF2F.png differ diff --git a/fonts/TewiFontOutline/FF30.png b/fonts/TewiFontOutline/FF30.png new file mode 100644 index 000000000..90ea7f275 Binary files /dev/null and b/fonts/TewiFontOutline/FF30.png differ diff --git a/fonts/TewiFontOutline/FF31.png b/fonts/TewiFontOutline/FF31.png new file mode 100644 index 000000000..a2b6a34e2 Binary files /dev/null and b/fonts/TewiFontOutline/FF31.png differ diff --git a/fonts/TewiFontOutline/FF32.png b/fonts/TewiFontOutline/FF32.png new file mode 100644 index 000000000..a334ac22a Binary files /dev/null and b/fonts/TewiFontOutline/FF32.png differ diff --git a/fonts/TewiFontOutline/FF33.png b/fonts/TewiFontOutline/FF33.png new file mode 100644 index 000000000..95e4a5372 Binary files /dev/null and b/fonts/TewiFontOutline/FF33.png differ diff --git a/fonts/TewiFontOutline/FF34.png b/fonts/TewiFontOutline/FF34.png new file mode 100644 index 000000000..b8759014c Binary files /dev/null and b/fonts/TewiFontOutline/FF34.png differ diff --git a/fonts/TewiFontOutline/FF35.png b/fonts/TewiFontOutline/FF35.png new file mode 100644 index 000000000..32792e61c Binary files /dev/null and b/fonts/TewiFontOutline/FF35.png differ diff --git a/fonts/TewiFontOutline/FF36.png b/fonts/TewiFontOutline/FF36.png new file mode 100644 index 000000000..dec760e3a Binary files /dev/null and b/fonts/TewiFontOutline/FF36.png differ diff --git a/fonts/TewiFontOutline/FF37.png b/fonts/TewiFontOutline/FF37.png new file mode 100644 index 000000000..4796b2b61 Binary files /dev/null and b/fonts/TewiFontOutline/FF37.png differ diff --git a/fonts/TewiFontOutline/FF38.png b/fonts/TewiFontOutline/FF38.png new file mode 100644 index 000000000..98e2da821 Binary files /dev/null and b/fonts/TewiFontOutline/FF38.png differ diff --git a/fonts/TewiFontOutline/FF39.png b/fonts/TewiFontOutline/FF39.png new file mode 100644 index 000000000..63ec59475 Binary files /dev/null and b/fonts/TewiFontOutline/FF39.png differ diff --git a/fonts/TewiFontOutline/FF3A.png b/fonts/TewiFontOutline/FF3A.png new file mode 100644 index 000000000..a41dab75a Binary files /dev/null and b/fonts/TewiFontOutline/FF3A.png differ diff --git a/fonts/TewiFontOutline/FF3B.png b/fonts/TewiFontOutline/FF3B.png new file mode 100644 index 000000000..7468d6cb2 Binary files /dev/null and b/fonts/TewiFontOutline/FF3B.png differ diff --git a/fonts/TewiFontOutline/FF3C.png b/fonts/TewiFontOutline/FF3C.png new file mode 100644 index 000000000..c37212b2d Binary files /dev/null and b/fonts/TewiFontOutline/FF3C.png differ diff --git a/fonts/TewiFontOutline/FF3D.png b/fonts/TewiFontOutline/FF3D.png new file mode 100644 index 000000000..7a3dcc2e5 Binary files /dev/null and b/fonts/TewiFontOutline/FF3D.png differ diff --git a/fonts/TewiFontOutline/FF3E.png b/fonts/TewiFontOutline/FF3E.png new file mode 100644 index 000000000..2173bb5a0 Binary files /dev/null and b/fonts/TewiFontOutline/FF3E.png differ diff --git a/fonts/TewiFontOutline/FF3F.png b/fonts/TewiFontOutline/FF3F.png new file mode 100644 index 000000000..461b2e0cf Binary files /dev/null and b/fonts/TewiFontOutline/FF3F.png differ diff --git a/fonts/TewiFontOutline/FF40.png b/fonts/TewiFontOutline/FF40.png new file mode 100644 index 000000000..6a1a0dca2 Binary files /dev/null and b/fonts/TewiFontOutline/FF40.png differ diff --git a/fonts/TewiFontOutline/FF41.png b/fonts/TewiFontOutline/FF41.png new file mode 100644 index 000000000..412ee9ef5 Binary files /dev/null and b/fonts/TewiFontOutline/FF41.png differ diff --git a/fonts/TewiFontOutline/FF42.png b/fonts/TewiFontOutline/FF42.png new file mode 100644 index 000000000..f0b6dbd98 Binary files /dev/null and b/fonts/TewiFontOutline/FF42.png differ diff --git a/fonts/TewiFontOutline/FF43.png b/fonts/TewiFontOutline/FF43.png new file mode 100644 index 000000000..3336e76d6 Binary files /dev/null and b/fonts/TewiFontOutline/FF43.png differ diff --git a/fonts/TewiFontOutline/FF44.png b/fonts/TewiFontOutline/FF44.png new file mode 100644 index 000000000..240e8ed0e Binary files /dev/null and b/fonts/TewiFontOutline/FF44.png differ diff --git a/fonts/TewiFontOutline/FF45.png b/fonts/TewiFontOutline/FF45.png new file mode 100644 index 000000000..7664e56ed Binary files /dev/null and b/fonts/TewiFontOutline/FF45.png differ diff --git a/fonts/TewiFontOutline/FF46.png b/fonts/TewiFontOutline/FF46.png new file mode 100644 index 000000000..fc4cc992d Binary files /dev/null and b/fonts/TewiFontOutline/FF46.png differ diff --git a/fonts/TewiFontOutline/FF47.png b/fonts/TewiFontOutline/FF47.png new file mode 100644 index 000000000..5e1fc86ff Binary files /dev/null and b/fonts/TewiFontOutline/FF47.png differ diff --git a/fonts/TewiFontOutline/FF48.png b/fonts/TewiFontOutline/FF48.png new file mode 100644 index 000000000..01577cd0f Binary files /dev/null and b/fonts/TewiFontOutline/FF48.png differ diff --git a/fonts/TewiFontOutline/FF49.png b/fonts/TewiFontOutline/FF49.png new file mode 100644 index 000000000..6e42ad78a Binary files /dev/null and b/fonts/TewiFontOutline/FF49.png differ diff --git a/fonts/TewiFontOutline/FF4A.png b/fonts/TewiFontOutline/FF4A.png new file mode 100644 index 000000000..bb2590f1f Binary files /dev/null and b/fonts/TewiFontOutline/FF4A.png differ diff --git a/fonts/TewiFontOutline/FF4B.png b/fonts/TewiFontOutline/FF4B.png new file mode 100644 index 000000000..a4d909138 Binary files /dev/null and b/fonts/TewiFontOutline/FF4B.png differ diff --git a/fonts/TewiFontOutline/FF4C.png b/fonts/TewiFontOutline/FF4C.png new file mode 100644 index 000000000..aad508ab2 Binary files /dev/null and b/fonts/TewiFontOutline/FF4C.png differ diff --git a/fonts/TewiFontOutline/FF4D.png b/fonts/TewiFontOutline/FF4D.png new file mode 100644 index 000000000..a5d7de7b3 Binary files /dev/null and b/fonts/TewiFontOutline/FF4D.png differ diff --git a/fonts/TewiFontOutline/FF4E.png b/fonts/TewiFontOutline/FF4E.png new file mode 100644 index 000000000..402d75285 Binary files /dev/null and b/fonts/TewiFontOutline/FF4E.png differ diff --git a/fonts/TewiFontOutline/FF4F.png b/fonts/TewiFontOutline/FF4F.png new file mode 100644 index 000000000..4f5b405d9 Binary files /dev/null and b/fonts/TewiFontOutline/FF4F.png differ diff --git a/fonts/TewiFontOutline/FF50.png b/fonts/TewiFontOutline/FF50.png new file mode 100644 index 000000000..b04f13c33 Binary files /dev/null and b/fonts/TewiFontOutline/FF50.png differ diff --git a/fonts/TewiFontOutline/FF51.png b/fonts/TewiFontOutline/FF51.png new file mode 100644 index 000000000..9ac833b73 Binary files /dev/null and b/fonts/TewiFontOutline/FF51.png differ diff --git a/fonts/TewiFontOutline/FF52.png b/fonts/TewiFontOutline/FF52.png new file mode 100644 index 000000000..356249589 Binary files /dev/null and b/fonts/TewiFontOutline/FF52.png differ diff --git a/fonts/TewiFontOutline/FF53.png b/fonts/TewiFontOutline/FF53.png new file mode 100644 index 000000000..49e4f0bd2 Binary files /dev/null and b/fonts/TewiFontOutline/FF53.png differ diff --git a/fonts/TewiFontOutline/FF54.png b/fonts/TewiFontOutline/FF54.png new file mode 100644 index 000000000..60e4a69d7 Binary files /dev/null and b/fonts/TewiFontOutline/FF54.png differ diff --git a/fonts/TewiFontOutline/FF55.png b/fonts/TewiFontOutline/FF55.png new file mode 100644 index 000000000..db22e6cc3 Binary files /dev/null and b/fonts/TewiFontOutline/FF55.png differ diff --git a/fonts/TewiFontOutline/FF56.png b/fonts/TewiFontOutline/FF56.png new file mode 100644 index 000000000..0dcede0ab Binary files /dev/null and b/fonts/TewiFontOutline/FF56.png differ diff --git a/fonts/TewiFontOutline/FF57.png b/fonts/TewiFontOutline/FF57.png new file mode 100644 index 000000000..db58bfda5 Binary files /dev/null and b/fonts/TewiFontOutline/FF57.png differ diff --git a/fonts/TewiFontOutline/FF58.png b/fonts/TewiFontOutline/FF58.png new file mode 100644 index 000000000..c75924741 Binary files /dev/null and b/fonts/TewiFontOutline/FF58.png differ diff --git a/fonts/TewiFontOutline/FF59.png b/fonts/TewiFontOutline/FF59.png new file mode 100644 index 000000000..2f5067837 Binary files /dev/null and b/fonts/TewiFontOutline/FF59.png differ diff --git a/fonts/TewiFontOutline/FF5A.png b/fonts/TewiFontOutline/FF5A.png new file mode 100644 index 000000000..badbb4c63 Binary files /dev/null and b/fonts/TewiFontOutline/FF5A.png differ diff --git a/fonts/TewiFontOutline/FF5B.png b/fonts/TewiFontOutline/FF5B.png new file mode 100644 index 000000000..5f30d2ac6 Binary files /dev/null and b/fonts/TewiFontOutline/FF5B.png differ diff --git a/fonts/TewiFontOutline/FF5C.png b/fonts/TewiFontOutline/FF5C.png new file mode 100644 index 000000000..914a6c34f Binary files /dev/null and b/fonts/TewiFontOutline/FF5C.png differ diff --git a/fonts/TewiFontOutline/FF5D.png b/fonts/TewiFontOutline/FF5D.png new file mode 100644 index 000000000..0b8da83d5 Binary files /dev/null and b/fonts/TewiFontOutline/FF5D.png differ diff --git a/fonts/TewiFontOutline/FFE3.png b/fonts/TewiFontOutline/FFE3.png new file mode 100644 index 000000000..f34899496 Binary files /dev/null and b/fonts/TewiFontOutline/FFE3.png differ diff --git a/fonts/TewiFontOutline/FFE5.png b/fonts/TewiFontOutline/FFE5.png new file mode 100644 index 000000000..9f7bf64de Binary files /dev/null and b/fonts/TewiFontOutline/FFE5.png differ diff --git a/fonts/TewiFontOutline/FFFD.png b/fonts/TewiFontOutline/FFFD.png new file mode 100644 index 000000000..d1423cddf Binary files /dev/null and b/fonts/TewiFontOutline/FFFD.png differ diff --git a/fonts/TewiFontOutline/LICENSE b/fonts/TewiFontOutline/LICENSE new file mode 100644 index 000000000..beff238eb --- /dev/null +++ b/fonts/TewiFontOutline/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2017 lucy + +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. diff --git a/fonts/TewiFontOutline/font.inf b/fonts/TewiFontOutline/font.inf new file mode 100644 index 000000000..787cdbd90 --- /dev/null +++ b/fonts/TewiFontOutline/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 8 +Kerning -2 +FontHeight 14 diff --git a/fonts/TewiFontOutlineAlt/0021.png b/fonts/TewiFontOutlineAlt/0021.png new file mode 100644 index 000000000..a3cc3bf5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0021.png differ diff --git a/fonts/TewiFontOutlineAlt/0022.png b/fonts/TewiFontOutlineAlt/0022.png new file mode 100644 index 000000000..599718925 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0022.png differ diff --git a/fonts/TewiFontOutlineAlt/0023.png b/fonts/TewiFontOutlineAlt/0023.png new file mode 100644 index 000000000..3478a1cb6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0023.png differ diff --git a/fonts/TewiFontOutlineAlt/0024.png b/fonts/TewiFontOutlineAlt/0024.png new file mode 100644 index 000000000..71a3e2d58 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0024.png differ diff --git a/fonts/TewiFontOutlineAlt/0025.png b/fonts/TewiFontOutlineAlt/0025.png new file mode 100644 index 000000000..d1a00c200 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0025.png differ diff --git a/fonts/TewiFontOutlineAlt/0026.png b/fonts/TewiFontOutlineAlt/0026.png new file mode 100644 index 000000000..05cb6c451 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0026.png differ diff --git a/fonts/TewiFontOutlineAlt/0027.png b/fonts/TewiFontOutlineAlt/0027.png new file mode 100644 index 000000000..ff3db9e09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0027.png differ diff --git a/fonts/TewiFontOutlineAlt/0028.png b/fonts/TewiFontOutlineAlt/0028.png new file mode 100644 index 000000000..ea2373384 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0028.png differ diff --git a/fonts/TewiFontOutlineAlt/0029.png b/fonts/TewiFontOutlineAlt/0029.png new file mode 100644 index 000000000..b5fab14e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0029.png differ diff --git a/fonts/TewiFontOutlineAlt/002A.png b/fonts/TewiFontOutlineAlt/002A.png new file mode 100644 index 000000000..9075f2f81 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/002A.png differ diff --git a/fonts/TewiFontOutlineAlt/002B.png b/fonts/TewiFontOutlineAlt/002B.png new file mode 100644 index 000000000..a7c924672 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/002B.png differ diff --git a/fonts/TewiFontOutlineAlt/002C.png b/fonts/TewiFontOutlineAlt/002C.png new file mode 100644 index 000000000..8fa280943 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/002C.png differ diff --git a/fonts/TewiFontOutlineAlt/002D.png b/fonts/TewiFontOutlineAlt/002D.png new file mode 100644 index 000000000..9e63be8e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/002D.png differ diff --git a/fonts/TewiFontOutlineAlt/002E.png b/fonts/TewiFontOutlineAlt/002E.png new file mode 100644 index 000000000..a8b31c029 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/002E.png differ diff --git a/fonts/TewiFontOutlineAlt/002F.png b/fonts/TewiFontOutlineAlt/002F.png new file mode 100644 index 000000000..12dc718f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/002F.png differ diff --git a/fonts/TewiFontOutlineAlt/0030.png b/fonts/TewiFontOutlineAlt/0030.png new file mode 100644 index 000000000..0498f4590 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0030.png differ diff --git a/fonts/TewiFontOutlineAlt/0031.png b/fonts/TewiFontOutlineAlt/0031.png new file mode 100644 index 000000000..e3de76779 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0031.png differ diff --git a/fonts/TewiFontOutlineAlt/0032.png b/fonts/TewiFontOutlineAlt/0032.png new file mode 100644 index 000000000..c224a13cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0032.png differ diff --git a/fonts/TewiFontOutlineAlt/0033.png b/fonts/TewiFontOutlineAlt/0033.png new file mode 100644 index 000000000..cb0d68b45 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0033.png differ diff --git a/fonts/TewiFontOutlineAlt/0034.png b/fonts/TewiFontOutlineAlt/0034.png new file mode 100644 index 000000000..6cfc828fa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0034.png differ diff --git a/fonts/TewiFontOutlineAlt/0035.png b/fonts/TewiFontOutlineAlt/0035.png new file mode 100644 index 000000000..97b5a3f91 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0035.png differ diff --git a/fonts/TewiFontOutlineAlt/0036.png b/fonts/TewiFontOutlineAlt/0036.png new file mode 100644 index 000000000..fe0a197e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0036.png differ diff --git a/fonts/TewiFontOutlineAlt/0037.png b/fonts/TewiFontOutlineAlt/0037.png new file mode 100644 index 000000000..284b7b1d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0037.png differ diff --git a/fonts/TewiFontOutlineAlt/0038.png b/fonts/TewiFontOutlineAlt/0038.png new file mode 100644 index 000000000..d06f44e2a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0038.png differ diff --git a/fonts/TewiFontOutlineAlt/0039.png b/fonts/TewiFontOutlineAlt/0039.png new file mode 100644 index 000000000..2876f297e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0039.png differ diff --git a/fonts/TewiFontOutlineAlt/003A.png b/fonts/TewiFontOutlineAlt/003A.png new file mode 100644 index 000000000..4dcf22cee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/003A.png differ diff --git a/fonts/TewiFontOutlineAlt/003B.png b/fonts/TewiFontOutlineAlt/003B.png new file mode 100644 index 000000000..7b3b2cd49 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/003B.png differ diff --git a/fonts/TewiFontOutlineAlt/003C.png b/fonts/TewiFontOutlineAlt/003C.png new file mode 100644 index 000000000..92bae412e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/003C.png differ diff --git a/fonts/TewiFontOutlineAlt/003D.png b/fonts/TewiFontOutlineAlt/003D.png new file mode 100644 index 000000000..c4ebf3afd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/003D.png differ diff --git a/fonts/TewiFontOutlineAlt/003E.png b/fonts/TewiFontOutlineAlt/003E.png new file mode 100644 index 000000000..4ead0860f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/003E.png differ diff --git a/fonts/TewiFontOutlineAlt/003F.png b/fonts/TewiFontOutlineAlt/003F.png new file mode 100644 index 000000000..c5b65cb19 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/003F.png differ diff --git a/fonts/TewiFontOutlineAlt/0040.png b/fonts/TewiFontOutlineAlt/0040.png new file mode 100644 index 000000000..08ae2f936 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0040.png differ diff --git a/fonts/TewiFontOutlineAlt/0041.png b/fonts/TewiFontOutlineAlt/0041.png new file mode 100644 index 000000000..d65508266 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0041.png differ diff --git a/fonts/TewiFontOutlineAlt/0042.png b/fonts/TewiFontOutlineAlt/0042.png new file mode 100644 index 000000000..a22c35905 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0042.png differ diff --git a/fonts/TewiFontOutlineAlt/0043.png b/fonts/TewiFontOutlineAlt/0043.png new file mode 100644 index 000000000..0b783f296 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0043.png differ diff --git a/fonts/TewiFontOutlineAlt/0044.png b/fonts/TewiFontOutlineAlt/0044.png new file mode 100644 index 000000000..403b476a1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0044.png differ diff --git a/fonts/TewiFontOutlineAlt/0045.png b/fonts/TewiFontOutlineAlt/0045.png new file mode 100644 index 000000000..9d843fe93 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0045.png differ diff --git a/fonts/TewiFontOutlineAlt/0046.png b/fonts/TewiFontOutlineAlt/0046.png new file mode 100644 index 000000000..2d2b83bb3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0046.png differ diff --git a/fonts/TewiFontOutlineAlt/0047.png b/fonts/TewiFontOutlineAlt/0047.png new file mode 100644 index 000000000..beb8c8ec7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0047.png differ diff --git a/fonts/TewiFontOutlineAlt/0048.png b/fonts/TewiFontOutlineAlt/0048.png new file mode 100644 index 000000000..1980f7809 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0048.png differ diff --git a/fonts/TewiFontOutlineAlt/0049.png b/fonts/TewiFontOutlineAlt/0049.png new file mode 100644 index 000000000..3fe7efb78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0049.png differ diff --git a/fonts/TewiFontOutlineAlt/004A.png b/fonts/TewiFontOutlineAlt/004A.png new file mode 100644 index 000000000..5434b7ad0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/004A.png differ diff --git a/fonts/TewiFontOutlineAlt/004B.png b/fonts/TewiFontOutlineAlt/004B.png new file mode 100644 index 000000000..cfe63b31e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/004B.png differ diff --git a/fonts/TewiFontOutlineAlt/004C.png b/fonts/TewiFontOutlineAlt/004C.png new file mode 100644 index 000000000..f7507a77e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/004C.png differ diff --git a/fonts/TewiFontOutlineAlt/004D.png b/fonts/TewiFontOutlineAlt/004D.png new file mode 100644 index 000000000..0783e2389 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/004D.png differ diff --git a/fonts/TewiFontOutlineAlt/004E.png b/fonts/TewiFontOutlineAlt/004E.png new file mode 100644 index 000000000..423b9ac12 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/004E.png differ diff --git a/fonts/TewiFontOutlineAlt/004F.png b/fonts/TewiFontOutlineAlt/004F.png new file mode 100644 index 000000000..9ba6f7ad6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/004F.png differ diff --git a/fonts/TewiFontOutlineAlt/0050.png b/fonts/TewiFontOutlineAlt/0050.png new file mode 100644 index 000000000..5ccdfaa16 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0050.png differ diff --git a/fonts/TewiFontOutlineAlt/0051.png b/fonts/TewiFontOutlineAlt/0051.png new file mode 100644 index 000000000..17a0079df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0051.png differ diff --git a/fonts/TewiFontOutlineAlt/0052.png b/fonts/TewiFontOutlineAlt/0052.png new file mode 100644 index 000000000..33bdae769 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0052.png differ diff --git a/fonts/TewiFontOutlineAlt/0053.png b/fonts/TewiFontOutlineAlt/0053.png new file mode 100644 index 000000000..9ba2198b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0053.png differ diff --git a/fonts/TewiFontOutlineAlt/0054.png b/fonts/TewiFontOutlineAlt/0054.png new file mode 100644 index 000000000..af26dd564 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0054.png differ diff --git a/fonts/TewiFontOutlineAlt/0055.png b/fonts/TewiFontOutlineAlt/0055.png new file mode 100644 index 000000000..70af20ef0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0055.png differ diff --git a/fonts/TewiFontOutlineAlt/0056.png b/fonts/TewiFontOutlineAlt/0056.png new file mode 100644 index 000000000..eeb8ea730 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0056.png differ diff --git a/fonts/TewiFontOutlineAlt/0057.png b/fonts/TewiFontOutlineAlt/0057.png new file mode 100644 index 000000000..d3dc5a61a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0057.png differ diff --git a/fonts/TewiFontOutlineAlt/0058.png b/fonts/TewiFontOutlineAlt/0058.png new file mode 100644 index 000000000..1e696b3c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0058.png differ diff --git a/fonts/TewiFontOutlineAlt/0059.png b/fonts/TewiFontOutlineAlt/0059.png new file mode 100644 index 000000000..e496aa03c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0059.png differ diff --git a/fonts/TewiFontOutlineAlt/005A.png b/fonts/TewiFontOutlineAlt/005A.png new file mode 100644 index 000000000..ae7bc2443 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/005A.png differ diff --git a/fonts/TewiFontOutlineAlt/005B.png b/fonts/TewiFontOutlineAlt/005B.png new file mode 100644 index 000000000..37dd85bfa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/005B.png differ diff --git a/fonts/TewiFontOutlineAlt/005C.png b/fonts/TewiFontOutlineAlt/005C.png new file mode 100644 index 000000000..25eda8a15 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/005C.png differ diff --git a/fonts/TewiFontOutlineAlt/005D.png b/fonts/TewiFontOutlineAlt/005D.png new file mode 100644 index 000000000..d14330d70 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/005D.png differ diff --git a/fonts/TewiFontOutlineAlt/005E.png b/fonts/TewiFontOutlineAlt/005E.png new file mode 100644 index 000000000..d452e75db Binary files /dev/null and b/fonts/TewiFontOutlineAlt/005E.png differ diff --git a/fonts/TewiFontOutlineAlt/005F.png b/fonts/TewiFontOutlineAlt/005F.png new file mode 100644 index 000000000..d4148414e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/005F.png differ diff --git a/fonts/TewiFontOutlineAlt/0060.png b/fonts/TewiFontOutlineAlt/0060.png new file mode 100644 index 000000000..39e2b2e35 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0060.png differ diff --git a/fonts/TewiFontOutlineAlt/0061.png b/fonts/TewiFontOutlineAlt/0061.png new file mode 100644 index 000000000..7b1d76681 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0061.png differ diff --git a/fonts/TewiFontOutlineAlt/0062.png b/fonts/TewiFontOutlineAlt/0062.png new file mode 100644 index 000000000..791a530d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0062.png differ diff --git a/fonts/TewiFontOutlineAlt/0063.png b/fonts/TewiFontOutlineAlt/0063.png new file mode 100644 index 000000000..7f4947344 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0063.png differ diff --git a/fonts/TewiFontOutlineAlt/0064.png b/fonts/TewiFontOutlineAlt/0064.png new file mode 100644 index 000000000..990365921 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0064.png differ diff --git a/fonts/TewiFontOutlineAlt/0065.png b/fonts/TewiFontOutlineAlt/0065.png new file mode 100644 index 000000000..a41c23364 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0065.png differ diff --git a/fonts/TewiFontOutlineAlt/0066.png b/fonts/TewiFontOutlineAlt/0066.png new file mode 100644 index 000000000..82b51cf6d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0066.png differ diff --git a/fonts/TewiFontOutlineAlt/0067.png b/fonts/TewiFontOutlineAlt/0067.png new file mode 100644 index 000000000..ddf0ffdf2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0067.png differ diff --git a/fonts/TewiFontOutlineAlt/0068.png b/fonts/TewiFontOutlineAlt/0068.png new file mode 100644 index 000000000..2340eb992 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0068.png differ diff --git a/fonts/TewiFontOutlineAlt/0069.png b/fonts/TewiFontOutlineAlt/0069.png new file mode 100644 index 000000000..13c2f2cb5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0069.png differ diff --git a/fonts/TewiFontOutlineAlt/006A.png b/fonts/TewiFontOutlineAlt/006A.png new file mode 100644 index 000000000..8863486ec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/006A.png differ diff --git a/fonts/TewiFontOutlineAlt/006B.png b/fonts/TewiFontOutlineAlt/006B.png new file mode 100644 index 000000000..b32a4c635 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/006B.png differ diff --git a/fonts/TewiFontOutlineAlt/006C.png b/fonts/TewiFontOutlineAlt/006C.png new file mode 100644 index 000000000..e78626201 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/006C.png differ diff --git a/fonts/TewiFontOutlineAlt/006D.png b/fonts/TewiFontOutlineAlt/006D.png new file mode 100644 index 000000000..2f448a225 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/006D.png differ diff --git a/fonts/TewiFontOutlineAlt/006E.png b/fonts/TewiFontOutlineAlt/006E.png new file mode 100644 index 000000000..76cb10f6f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/006E.png differ diff --git a/fonts/TewiFontOutlineAlt/006F.png b/fonts/TewiFontOutlineAlt/006F.png new file mode 100644 index 000000000..cdb31f97c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/006F.png differ diff --git a/fonts/TewiFontOutlineAlt/0070.png b/fonts/TewiFontOutlineAlt/0070.png new file mode 100644 index 000000000..d538e64c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0070.png differ diff --git a/fonts/TewiFontOutlineAlt/0071.png b/fonts/TewiFontOutlineAlt/0071.png new file mode 100644 index 000000000..e3e01a473 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0071.png differ diff --git a/fonts/TewiFontOutlineAlt/0072.png b/fonts/TewiFontOutlineAlt/0072.png new file mode 100644 index 000000000..70b06f3d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0072.png differ diff --git a/fonts/TewiFontOutlineAlt/0073.png b/fonts/TewiFontOutlineAlt/0073.png new file mode 100644 index 000000000..21cf0b7cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0073.png differ diff --git a/fonts/TewiFontOutlineAlt/0074.png b/fonts/TewiFontOutlineAlt/0074.png new file mode 100644 index 000000000..ca994f975 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0074.png differ diff --git a/fonts/TewiFontOutlineAlt/0075.png b/fonts/TewiFontOutlineAlt/0075.png new file mode 100644 index 000000000..9deb09be4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0075.png differ diff --git a/fonts/TewiFontOutlineAlt/0076.png b/fonts/TewiFontOutlineAlt/0076.png new file mode 100644 index 000000000..9ebfd943d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0076.png differ diff --git a/fonts/TewiFontOutlineAlt/0077.png b/fonts/TewiFontOutlineAlt/0077.png new file mode 100644 index 000000000..745a11c10 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0077.png differ diff --git a/fonts/TewiFontOutlineAlt/0078.png b/fonts/TewiFontOutlineAlt/0078.png new file mode 100644 index 000000000..681a10240 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0078.png differ diff --git a/fonts/TewiFontOutlineAlt/0079.png b/fonts/TewiFontOutlineAlt/0079.png new file mode 100644 index 000000000..07e781abb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0079.png differ diff --git a/fonts/TewiFontOutlineAlt/007A.png b/fonts/TewiFontOutlineAlt/007A.png new file mode 100644 index 000000000..849e4cc78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/007A.png differ diff --git a/fonts/TewiFontOutlineAlt/007B.png b/fonts/TewiFontOutlineAlt/007B.png new file mode 100644 index 000000000..7184102e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/007B.png differ diff --git a/fonts/TewiFontOutlineAlt/007C.png b/fonts/TewiFontOutlineAlt/007C.png new file mode 100644 index 000000000..7a2348491 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/007C.png differ diff --git a/fonts/TewiFontOutlineAlt/007D.png b/fonts/TewiFontOutlineAlt/007D.png new file mode 100644 index 000000000..cf74d71a2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/007D.png differ diff --git a/fonts/TewiFontOutlineAlt/007E.png b/fonts/TewiFontOutlineAlt/007E.png new file mode 100644 index 000000000..afc00cad8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/007E.png differ diff --git a/fonts/TewiFontOutlineAlt/00A1.png b/fonts/TewiFontOutlineAlt/00A1.png new file mode 100644 index 000000000..e53d91bc1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A1.png differ diff --git a/fonts/TewiFontOutlineAlt/00A2.png b/fonts/TewiFontOutlineAlt/00A2.png new file mode 100644 index 000000000..6ea3a57fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A2.png differ diff --git a/fonts/TewiFontOutlineAlt/00A3.png b/fonts/TewiFontOutlineAlt/00A3.png new file mode 100644 index 000000000..8cd435283 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A3.png differ diff --git a/fonts/TewiFontOutlineAlt/00A4.png b/fonts/TewiFontOutlineAlt/00A4.png new file mode 100644 index 000000000..5220af3df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A4.png differ diff --git a/fonts/TewiFontOutlineAlt/00A5.png b/fonts/TewiFontOutlineAlt/00A5.png new file mode 100644 index 000000000..6865df540 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A5.png differ diff --git a/fonts/TewiFontOutlineAlt/00A6.png b/fonts/TewiFontOutlineAlt/00A6.png new file mode 100644 index 000000000..1806fa8ab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A6.png differ diff --git a/fonts/TewiFontOutlineAlt/00A7.png b/fonts/TewiFontOutlineAlt/00A7.png new file mode 100644 index 000000000..504a9b638 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A7.png differ diff --git a/fonts/TewiFontOutlineAlt/00A8.png b/fonts/TewiFontOutlineAlt/00A8.png new file mode 100644 index 000000000..02b5e758a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A8.png differ diff --git a/fonts/TewiFontOutlineAlt/00A9.png b/fonts/TewiFontOutlineAlt/00A9.png new file mode 100644 index 000000000..5a1d985cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00A9.png differ diff --git a/fonts/TewiFontOutlineAlt/00AA.png b/fonts/TewiFontOutlineAlt/00AA.png new file mode 100644 index 000000000..ac85d718f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00AA.png differ diff --git a/fonts/TewiFontOutlineAlt/00AB.png b/fonts/TewiFontOutlineAlt/00AB.png new file mode 100644 index 000000000..e0ad38956 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00AB.png differ diff --git a/fonts/TewiFontOutlineAlt/00AC.png b/fonts/TewiFontOutlineAlt/00AC.png new file mode 100644 index 000000000..84128a543 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00AC.png differ diff --git a/fonts/TewiFontOutlineAlt/00AE.png b/fonts/TewiFontOutlineAlt/00AE.png new file mode 100644 index 000000000..4079359ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00AE.png differ diff --git a/fonts/TewiFontOutlineAlt/00AF.png b/fonts/TewiFontOutlineAlt/00AF.png new file mode 100644 index 000000000..d2c21b0e1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00AF.png differ diff --git a/fonts/TewiFontOutlineAlt/00B0.png b/fonts/TewiFontOutlineAlt/00B0.png new file mode 100644 index 000000000..91e5b05b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B0.png differ diff --git a/fonts/TewiFontOutlineAlt/00B1.png b/fonts/TewiFontOutlineAlt/00B1.png new file mode 100644 index 000000000..732b4d1fb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B1.png differ diff --git a/fonts/TewiFontOutlineAlt/00B2.png b/fonts/TewiFontOutlineAlt/00B2.png new file mode 100644 index 000000000..7caeac320 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B2.png differ diff --git a/fonts/TewiFontOutlineAlt/00B3.png b/fonts/TewiFontOutlineAlt/00B3.png new file mode 100644 index 000000000..c7b4ae538 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B3.png differ diff --git a/fonts/TewiFontOutlineAlt/00B4.png b/fonts/TewiFontOutlineAlt/00B4.png new file mode 100644 index 000000000..18ffbf4c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B4.png differ diff --git a/fonts/TewiFontOutlineAlt/00B5.png b/fonts/TewiFontOutlineAlt/00B5.png new file mode 100644 index 000000000..1224b07aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B5.png differ diff --git a/fonts/TewiFontOutlineAlt/00B6.png b/fonts/TewiFontOutlineAlt/00B6.png new file mode 100644 index 000000000..bc8bab08a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B6.png differ diff --git a/fonts/TewiFontOutlineAlt/00B7.png b/fonts/TewiFontOutlineAlt/00B7.png new file mode 100644 index 000000000..2cfab1be6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B7.png differ diff --git a/fonts/TewiFontOutlineAlt/00B8.png b/fonts/TewiFontOutlineAlt/00B8.png new file mode 100644 index 000000000..25e110889 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B8.png differ diff --git a/fonts/TewiFontOutlineAlt/00B9.png b/fonts/TewiFontOutlineAlt/00B9.png new file mode 100644 index 000000000..907af963e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00B9.png differ diff --git a/fonts/TewiFontOutlineAlt/00BA.png b/fonts/TewiFontOutlineAlt/00BA.png new file mode 100644 index 000000000..61d95f649 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00BA.png differ diff --git a/fonts/TewiFontOutlineAlt/00BB.png b/fonts/TewiFontOutlineAlt/00BB.png new file mode 100644 index 000000000..b06a760e7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00BB.png differ diff --git a/fonts/TewiFontOutlineAlt/00BC.png b/fonts/TewiFontOutlineAlt/00BC.png new file mode 100644 index 000000000..555359a86 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00BC.png differ diff --git a/fonts/TewiFontOutlineAlt/00BD.png b/fonts/TewiFontOutlineAlt/00BD.png new file mode 100644 index 000000000..e45d432a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00BD.png differ diff --git a/fonts/TewiFontOutlineAlt/00BE.png b/fonts/TewiFontOutlineAlt/00BE.png new file mode 100644 index 000000000..4b9eeb030 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00BE.png differ diff --git a/fonts/TewiFontOutlineAlt/00BF.png b/fonts/TewiFontOutlineAlt/00BF.png new file mode 100644 index 000000000..449a83800 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00BF.png differ diff --git a/fonts/TewiFontOutlineAlt/00C0.png b/fonts/TewiFontOutlineAlt/00C0.png new file mode 100644 index 000000000..3656643a8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C0.png differ diff --git a/fonts/TewiFontOutlineAlt/00C1.png b/fonts/TewiFontOutlineAlt/00C1.png new file mode 100644 index 000000000..2fc4aed48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C1.png differ diff --git a/fonts/TewiFontOutlineAlt/00C2.png b/fonts/TewiFontOutlineAlt/00C2.png new file mode 100644 index 000000000..cc619e81b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C2.png differ diff --git a/fonts/TewiFontOutlineAlt/00C3.png b/fonts/TewiFontOutlineAlt/00C3.png new file mode 100644 index 000000000..72a73c175 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C3.png differ diff --git a/fonts/TewiFontOutlineAlt/00C4.png b/fonts/TewiFontOutlineAlt/00C4.png new file mode 100644 index 000000000..ef13d6c04 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C4.png differ diff --git a/fonts/TewiFontOutlineAlt/00C5.png b/fonts/TewiFontOutlineAlt/00C5.png new file mode 100644 index 000000000..cc619e81b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C5.png differ diff --git a/fonts/TewiFontOutlineAlt/00C6.png b/fonts/TewiFontOutlineAlt/00C6.png new file mode 100644 index 000000000..5d3555eef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C6.png differ diff --git a/fonts/TewiFontOutlineAlt/00C7.png b/fonts/TewiFontOutlineAlt/00C7.png new file mode 100644 index 000000000..5a8df467f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C7.png differ diff --git a/fonts/TewiFontOutlineAlt/00C8.png b/fonts/TewiFontOutlineAlt/00C8.png new file mode 100644 index 000000000..550d70bdb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C8.png differ diff --git a/fonts/TewiFontOutlineAlt/00C9.png b/fonts/TewiFontOutlineAlt/00C9.png new file mode 100644 index 000000000..8aea1982b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00C9.png differ diff --git a/fonts/TewiFontOutlineAlt/00CA.png b/fonts/TewiFontOutlineAlt/00CA.png new file mode 100644 index 000000000..bc09d53f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00CA.png differ diff --git a/fonts/TewiFontOutlineAlt/00CB.png b/fonts/TewiFontOutlineAlt/00CB.png new file mode 100644 index 000000000..a1628a9de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00CB.png differ diff --git a/fonts/TewiFontOutlineAlt/00CC.png b/fonts/TewiFontOutlineAlt/00CC.png new file mode 100644 index 000000000..08639b43a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00CC.png differ diff --git a/fonts/TewiFontOutlineAlt/00CD.png b/fonts/TewiFontOutlineAlt/00CD.png new file mode 100644 index 000000000..1d286101e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00CD.png differ diff --git a/fonts/TewiFontOutlineAlt/00CE.png b/fonts/TewiFontOutlineAlt/00CE.png new file mode 100644 index 000000000..61a6c339a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00CE.png differ diff --git a/fonts/TewiFontOutlineAlt/00CF.png b/fonts/TewiFontOutlineAlt/00CF.png new file mode 100644 index 000000000..bf6ae1c43 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00CF.png differ diff --git a/fonts/TewiFontOutlineAlt/00D0.png b/fonts/TewiFontOutlineAlt/00D0.png new file mode 100644 index 000000000..0e0288db0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D0.png differ diff --git a/fonts/TewiFontOutlineAlt/00D1.png b/fonts/TewiFontOutlineAlt/00D1.png new file mode 100644 index 000000000..aefe0cc07 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D1.png differ diff --git a/fonts/TewiFontOutlineAlt/00D2.png b/fonts/TewiFontOutlineAlt/00D2.png new file mode 100644 index 000000000..011b61d88 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D2.png differ diff --git a/fonts/TewiFontOutlineAlt/00D3.png b/fonts/TewiFontOutlineAlt/00D3.png new file mode 100644 index 000000000..e432825b3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D3.png differ diff --git a/fonts/TewiFontOutlineAlt/00D4.png b/fonts/TewiFontOutlineAlt/00D4.png new file mode 100644 index 000000000..86e52e84b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D4.png differ diff --git a/fonts/TewiFontOutlineAlt/00D5.png b/fonts/TewiFontOutlineAlt/00D5.png new file mode 100644 index 000000000..6ed4fcd60 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D5.png differ diff --git a/fonts/TewiFontOutlineAlt/00D6.png b/fonts/TewiFontOutlineAlt/00D6.png new file mode 100644 index 000000000..9ac011aa7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D6.png differ diff --git a/fonts/TewiFontOutlineAlt/00D7.png b/fonts/TewiFontOutlineAlt/00D7.png new file mode 100644 index 000000000..82b946bd3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D7.png differ diff --git a/fonts/TewiFontOutlineAlt/00D8.png b/fonts/TewiFontOutlineAlt/00D8.png new file mode 100644 index 000000000..0200bfa4f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D8.png differ diff --git a/fonts/TewiFontOutlineAlt/00D9.png b/fonts/TewiFontOutlineAlt/00D9.png new file mode 100644 index 000000000..db8d93905 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00D9.png differ diff --git a/fonts/TewiFontOutlineAlt/00DA.png b/fonts/TewiFontOutlineAlt/00DA.png new file mode 100644 index 000000000..240782c24 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00DA.png differ diff --git a/fonts/TewiFontOutlineAlt/00DB.png b/fonts/TewiFontOutlineAlt/00DB.png new file mode 100644 index 000000000..46b018f3f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00DB.png differ diff --git a/fonts/TewiFontOutlineAlt/00DC.png b/fonts/TewiFontOutlineAlt/00DC.png new file mode 100644 index 000000000..410bc35f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00DC.png differ diff --git a/fonts/TewiFontOutlineAlt/00DD.png b/fonts/TewiFontOutlineAlt/00DD.png new file mode 100644 index 000000000..a498dab05 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00DD.png differ diff --git a/fonts/TewiFontOutlineAlt/00DE.png b/fonts/TewiFontOutlineAlt/00DE.png new file mode 100644 index 000000000..088126f01 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00DE.png differ diff --git a/fonts/TewiFontOutlineAlt/00DF.png b/fonts/TewiFontOutlineAlt/00DF.png new file mode 100644 index 000000000..9bc234af6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00DF.png differ diff --git a/fonts/TewiFontOutlineAlt/00E0.png b/fonts/TewiFontOutlineAlt/00E0.png new file mode 100644 index 000000000..48230f985 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E0.png differ diff --git a/fonts/TewiFontOutlineAlt/00E1.png b/fonts/TewiFontOutlineAlt/00E1.png new file mode 100644 index 000000000..8c912027c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E1.png differ diff --git a/fonts/TewiFontOutlineAlt/00E2.png b/fonts/TewiFontOutlineAlt/00E2.png new file mode 100644 index 000000000..70791e758 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E2.png differ diff --git a/fonts/TewiFontOutlineAlt/00E3.png b/fonts/TewiFontOutlineAlt/00E3.png new file mode 100644 index 000000000..d72550877 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E3.png differ diff --git a/fonts/TewiFontOutlineAlt/00E4.png b/fonts/TewiFontOutlineAlt/00E4.png new file mode 100644 index 000000000..602a0d7c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E4.png differ diff --git a/fonts/TewiFontOutlineAlt/00E5.png b/fonts/TewiFontOutlineAlt/00E5.png new file mode 100644 index 000000000..1b048e76d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E5.png differ diff --git a/fonts/TewiFontOutlineAlt/00E6.png b/fonts/TewiFontOutlineAlt/00E6.png new file mode 100644 index 000000000..44b40781d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E6.png differ diff --git a/fonts/TewiFontOutlineAlt/00E7.png b/fonts/TewiFontOutlineAlt/00E7.png new file mode 100644 index 000000000..cb06fbe65 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E7.png differ diff --git a/fonts/TewiFontOutlineAlt/00E8.png b/fonts/TewiFontOutlineAlt/00E8.png new file mode 100644 index 000000000..586fcbf8e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E8.png differ diff --git a/fonts/TewiFontOutlineAlt/00E9.png b/fonts/TewiFontOutlineAlt/00E9.png new file mode 100644 index 000000000..ec4ca786a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00E9.png differ diff --git a/fonts/TewiFontOutlineAlt/00EA.png b/fonts/TewiFontOutlineAlt/00EA.png new file mode 100644 index 000000000..b9504ec70 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00EA.png differ diff --git a/fonts/TewiFontOutlineAlt/00EB.png b/fonts/TewiFontOutlineAlt/00EB.png new file mode 100644 index 000000000..c3c11071f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00EB.png differ diff --git a/fonts/TewiFontOutlineAlt/00EC.png b/fonts/TewiFontOutlineAlt/00EC.png new file mode 100644 index 000000000..e97f5371e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00EC.png differ diff --git a/fonts/TewiFontOutlineAlt/00ED.png b/fonts/TewiFontOutlineAlt/00ED.png new file mode 100644 index 000000000..8300d41b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00ED.png differ diff --git a/fonts/TewiFontOutlineAlt/00EE.png b/fonts/TewiFontOutlineAlt/00EE.png new file mode 100644 index 000000000..4eed7ce5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00EE.png differ diff --git a/fonts/TewiFontOutlineAlt/00EF.png b/fonts/TewiFontOutlineAlt/00EF.png new file mode 100644 index 000000000..f4fd46105 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00EF.png differ diff --git a/fonts/TewiFontOutlineAlt/00F0.png b/fonts/TewiFontOutlineAlt/00F0.png new file mode 100644 index 000000000..6bf7ee9ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F0.png differ diff --git a/fonts/TewiFontOutlineAlt/00F1.png b/fonts/TewiFontOutlineAlt/00F1.png new file mode 100644 index 000000000..2effc632c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F1.png differ diff --git a/fonts/TewiFontOutlineAlt/00F2.png b/fonts/TewiFontOutlineAlt/00F2.png new file mode 100644 index 000000000..3cab14b1f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F2.png differ diff --git a/fonts/TewiFontOutlineAlt/00F3.png b/fonts/TewiFontOutlineAlt/00F3.png new file mode 100644 index 000000000..6b6d4ea2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F3.png differ diff --git a/fonts/TewiFontOutlineAlt/00F4.png b/fonts/TewiFontOutlineAlt/00F4.png new file mode 100644 index 000000000..adfbc5839 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F4.png differ diff --git a/fonts/TewiFontOutlineAlt/00F5.png b/fonts/TewiFontOutlineAlt/00F5.png new file mode 100644 index 000000000..63ef9b510 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F5.png differ diff --git a/fonts/TewiFontOutlineAlt/00F6.png b/fonts/TewiFontOutlineAlt/00F6.png new file mode 100644 index 000000000..b0a8e7c7e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F6.png differ diff --git a/fonts/TewiFontOutlineAlt/00F7.png b/fonts/TewiFontOutlineAlt/00F7.png new file mode 100644 index 000000000..17e5ed63f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F7.png differ diff --git a/fonts/TewiFontOutlineAlt/00F8.png b/fonts/TewiFontOutlineAlt/00F8.png new file mode 100644 index 000000000..262a7fd5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F8.png differ diff --git a/fonts/TewiFontOutlineAlt/00F9.png b/fonts/TewiFontOutlineAlt/00F9.png new file mode 100644 index 000000000..2a981755f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00F9.png differ diff --git a/fonts/TewiFontOutlineAlt/00FA.png b/fonts/TewiFontOutlineAlt/00FA.png new file mode 100644 index 000000000..1d45dbc98 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00FA.png differ diff --git a/fonts/TewiFontOutlineAlt/00FB.png b/fonts/TewiFontOutlineAlt/00FB.png new file mode 100644 index 000000000..4e047874b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00FB.png differ diff --git a/fonts/TewiFontOutlineAlt/00FC.png b/fonts/TewiFontOutlineAlt/00FC.png new file mode 100644 index 000000000..4401d88d4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00FC.png differ diff --git a/fonts/TewiFontOutlineAlt/00FD.png b/fonts/TewiFontOutlineAlt/00FD.png new file mode 100644 index 000000000..b26de11aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00FD.png differ diff --git a/fonts/TewiFontOutlineAlt/00FE.png b/fonts/TewiFontOutlineAlt/00FE.png new file mode 100644 index 000000000..35a67f1cc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00FE.png differ diff --git a/fonts/TewiFontOutlineAlt/00FF.png b/fonts/TewiFontOutlineAlt/00FF.png new file mode 100644 index 000000000..a3d40ef7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/00FF.png differ diff --git a/fonts/TewiFontOutlineAlt/0100.png b/fonts/TewiFontOutlineAlt/0100.png new file mode 100644 index 000000000..e1c5ae547 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0100.png differ diff --git a/fonts/TewiFontOutlineAlt/0101.png b/fonts/TewiFontOutlineAlt/0101.png new file mode 100644 index 000000000..05cf531d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0101.png differ diff --git a/fonts/TewiFontOutlineAlt/0102.png b/fonts/TewiFontOutlineAlt/0102.png new file mode 100644 index 000000000..719f486b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0102.png differ diff --git a/fonts/TewiFontOutlineAlt/0103.png b/fonts/TewiFontOutlineAlt/0103.png new file mode 100644 index 000000000..ecedf24d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0103.png differ diff --git a/fonts/TewiFontOutlineAlt/0104.png b/fonts/TewiFontOutlineAlt/0104.png new file mode 100644 index 000000000..12bfa262e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0104.png differ diff --git a/fonts/TewiFontOutlineAlt/0105.png b/fonts/TewiFontOutlineAlt/0105.png new file mode 100644 index 000000000..198cfaf0a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0105.png differ diff --git a/fonts/TewiFontOutlineAlt/0106.png b/fonts/TewiFontOutlineAlt/0106.png new file mode 100644 index 000000000..ecf515fe4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0106.png differ diff --git a/fonts/TewiFontOutlineAlt/0107.png b/fonts/TewiFontOutlineAlt/0107.png new file mode 100644 index 000000000..3bd835e08 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0107.png differ diff --git a/fonts/TewiFontOutlineAlt/0108.png b/fonts/TewiFontOutlineAlt/0108.png new file mode 100644 index 000000000..6b5933346 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0108.png differ diff --git a/fonts/TewiFontOutlineAlt/0109.png b/fonts/TewiFontOutlineAlt/0109.png new file mode 100644 index 000000000..4bcdb2c80 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0109.png differ diff --git a/fonts/TewiFontOutlineAlt/010A.png b/fonts/TewiFontOutlineAlt/010A.png new file mode 100644 index 000000000..bcf2e180f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/010A.png differ diff --git a/fonts/TewiFontOutlineAlt/010B.png b/fonts/TewiFontOutlineAlt/010B.png new file mode 100644 index 000000000..29adc1651 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/010B.png differ diff --git a/fonts/TewiFontOutlineAlt/010C.png b/fonts/TewiFontOutlineAlt/010C.png new file mode 100644 index 000000000..ed0777a7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/010C.png differ diff --git a/fonts/TewiFontOutlineAlt/010D.png b/fonts/TewiFontOutlineAlt/010D.png new file mode 100644 index 000000000..a726e1252 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/010D.png differ diff --git a/fonts/TewiFontOutlineAlt/010E.png b/fonts/TewiFontOutlineAlt/010E.png new file mode 100644 index 000000000..8c6331c09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/010E.png differ diff --git a/fonts/TewiFontOutlineAlt/010F.png b/fonts/TewiFontOutlineAlt/010F.png new file mode 100644 index 000000000..59b1790a5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/010F.png differ diff --git a/fonts/TewiFontOutlineAlt/0110.png b/fonts/TewiFontOutlineAlt/0110.png new file mode 100644 index 000000000..0621f41e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0110.png differ diff --git a/fonts/TewiFontOutlineAlt/0111.png b/fonts/TewiFontOutlineAlt/0111.png new file mode 100644 index 000000000..34d1adfe8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0111.png differ diff --git a/fonts/TewiFontOutlineAlt/0112.png b/fonts/TewiFontOutlineAlt/0112.png new file mode 100644 index 000000000..edbcd07d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0112.png differ diff --git a/fonts/TewiFontOutlineAlt/0113.png b/fonts/TewiFontOutlineAlt/0113.png new file mode 100644 index 000000000..d5d38b9e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0113.png differ diff --git a/fonts/TewiFontOutlineAlt/0114.png b/fonts/TewiFontOutlineAlt/0114.png new file mode 100644 index 000000000..5dd0755c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0114.png differ diff --git a/fonts/TewiFontOutlineAlt/0115.png b/fonts/TewiFontOutlineAlt/0115.png new file mode 100644 index 000000000..13cbc5c27 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0115.png differ diff --git a/fonts/TewiFontOutlineAlt/0116.png b/fonts/TewiFontOutlineAlt/0116.png new file mode 100644 index 000000000..6a72da2bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0116.png differ diff --git a/fonts/TewiFontOutlineAlt/0117.png b/fonts/TewiFontOutlineAlt/0117.png new file mode 100644 index 000000000..9e7dbf2e3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0117.png differ diff --git a/fonts/TewiFontOutlineAlt/0118.png b/fonts/TewiFontOutlineAlt/0118.png new file mode 100644 index 000000000..15aca0f03 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0118.png differ diff --git a/fonts/TewiFontOutlineAlt/0119.png b/fonts/TewiFontOutlineAlt/0119.png new file mode 100644 index 000000000..0f24a4f29 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0119.png differ diff --git a/fonts/TewiFontOutlineAlt/011A.png b/fonts/TewiFontOutlineAlt/011A.png new file mode 100644 index 000000000..1f16af141 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/011A.png differ diff --git a/fonts/TewiFontOutlineAlt/011B.png b/fonts/TewiFontOutlineAlt/011B.png new file mode 100644 index 000000000..f6259e311 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/011B.png differ diff --git a/fonts/TewiFontOutlineAlt/011C.png b/fonts/TewiFontOutlineAlt/011C.png new file mode 100644 index 000000000..123db13e0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/011C.png differ diff --git a/fonts/TewiFontOutlineAlt/011D.png b/fonts/TewiFontOutlineAlt/011D.png new file mode 100644 index 000000000..053285abf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/011D.png differ diff --git a/fonts/TewiFontOutlineAlt/011E.png b/fonts/TewiFontOutlineAlt/011E.png new file mode 100644 index 000000000..c14200f7a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/011E.png differ diff --git a/fonts/TewiFontOutlineAlt/011F.png b/fonts/TewiFontOutlineAlt/011F.png new file mode 100644 index 000000000..07644d5fa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/011F.png differ diff --git a/fonts/TewiFontOutlineAlt/0120.png b/fonts/TewiFontOutlineAlt/0120.png new file mode 100644 index 000000000..827dfbe10 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0120.png differ diff --git a/fonts/TewiFontOutlineAlt/0121.png b/fonts/TewiFontOutlineAlt/0121.png new file mode 100644 index 000000000..59c926a8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0121.png differ diff --git a/fonts/TewiFontOutlineAlt/0122.png b/fonts/TewiFontOutlineAlt/0122.png new file mode 100644 index 000000000..3354536b8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0122.png differ diff --git a/fonts/TewiFontOutlineAlt/0123.png b/fonts/TewiFontOutlineAlt/0123.png new file mode 100644 index 000000000..49795a8c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0123.png differ diff --git a/fonts/TewiFontOutlineAlt/0124.png b/fonts/TewiFontOutlineAlt/0124.png new file mode 100644 index 000000000..67701a08c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0124.png differ diff --git a/fonts/TewiFontOutlineAlt/0125.png b/fonts/TewiFontOutlineAlt/0125.png new file mode 100644 index 000000000..80ffeda27 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0125.png differ diff --git a/fonts/TewiFontOutlineAlt/0126.png b/fonts/TewiFontOutlineAlt/0126.png new file mode 100644 index 000000000..eb6297350 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0126.png differ diff --git a/fonts/TewiFontOutlineAlt/0127.png b/fonts/TewiFontOutlineAlt/0127.png new file mode 100644 index 000000000..1a3cf725e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0127.png differ diff --git a/fonts/TewiFontOutlineAlt/0128.png b/fonts/TewiFontOutlineAlt/0128.png new file mode 100644 index 000000000..d8c9e1166 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0128.png differ diff --git a/fonts/TewiFontOutlineAlt/0129.png b/fonts/TewiFontOutlineAlt/0129.png new file mode 100644 index 000000000..0cc669358 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0129.png differ diff --git a/fonts/TewiFontOutlineAlt/012A.png b/fonts/TewiFontOutlineAlt/012A.png new file mode 100644 index 000000000..a185af38b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/012A.png differ diff --git a/fonts/TewiFontOutlineAlt/012B.png b/fonts/TewiFontOutlineAlt/012B.png new file mode 100644 index 000000000..6e6179cb0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/012B.png differ diff --git a/fonts/TewiFontOutlineAlt/012C.png b/fonts/TewiFontOutlineAlt/012C.png new file mode 100644 index 000000000..13cfc6494 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/012C.png differ diff --git a/fonts/TewiFontOutlineAlt/012D.png b/fonts/TewiFontOutlineAlt/012D.png new file mode 100644 index 000000000..c5f44bb43 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/012D.png differ diff --git a/fonts/TewiFontOutlineAlt/012E.png b/fonts/TewiFontOutlineAlt/012E.png new file mode 100644 index 000000000..814b1fbf8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/012E.png differ diff --git a/fonts/TewiFontOutlineAlt/012F.png b/fonts/TewiFontOutlineAlt/012F.png new file mode 100644 index 000000000..ead63fbe3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/012F.png differ diff --git a/fonts/TewiFontOutlineAlt/0130.png b/fonts/TewiFontOutlineAlt/0130.png new file mode 100644 index 000000000..b95f85c91 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0130.png differ diff --git a/fonts/TewiFontOutlineAlt/0131.png b/fonts/TewiFontOutlineAlt/0131.png new file mode 100644 index 000000000..ef2ddbeba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0131.png differ diff --git a/fonts/TewiFontOutlineAlt/0132.png b/fonts/TewiFontOutlineAlt/0132.png new file mode 100644 index 000000000..bbfe02712 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0132.png differ diff --git a/fonts/TewiFontOutlineAlt/0133.png b/fonts/TewiFontOutlineAlt/0133.png new file mode 100644 index 000000000..5bab53ca0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0133.png differ diff --git a/fonts/TewiFontOutlineAlt/0134.png b/fonts/TewiFontOutlineAlt/0134.png new file mode 100644 index 000000000..6d4b9a6df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0134.png differ diff --git a/fonts/TewiFontOutlineAlt/0135.png b/fonts/TewiFontOutlineAlt/0135.png new file mode 100644 index 000000000..fd07a076c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0135.png differ diff --git a/fonts/TewiFontOutlineAlt/0136.png b/fonts/TewiFontOutlineAlt/0136.png new file mode 100644 index 000000000..677f6f32f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0136.png differ diff --git a/fonts/TewiFontOutlineAlt/0137.png b/fonts/TewiFontOutlineAlt/0137.png new file mode 100644 index 000000000..78bbaf461 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0137.png differ diff --git a/fonts/TewiFontOutlineAlt/0138.png b/fonts/TewiFontOutlineAlt/0138.png new file mode 100644 index 000000000..c51bda208 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0138.png differ diff --git a/fonts/TewiFontOutlineAlt/0139.png b/fonts/TewiFontOutlineAlt/0139.png new file mode 100644 index 000000000..4badd0b21 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0139.png differ diff --git a/fonts/TewiFontOutlineAlt/013A.png b/fonts/TewiFontOutlineAlt/013A.png new file mode 100644 index 000000000..2ea1807a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/013A.png differ diff --git a/fonts/TewiFontOutlineAlt/013B.png b/fonts/TewiFontOutlineAlt/013B.png new file mode 100644 index 000000000..0f54dbb90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/013B.png differ diff --git a/fonts/TewiFontOutlineAlt/013C.png b/fonts/TewiFontOutlineAlt/013C.png new file mode 100644 index 000000000..6db208993 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/013C.png differ diff --git a/fonts/TewiFontOutlineAlt/013D.png b/fonts/TewiFontOutlineAlt/013D.png new file mode 100644 index 000000000..9a74d3eb2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/013D.png differ diff --git a/fonts/TewiFontOutlineAlt/013E.png b/fonts/TewiFontOutlineAlt/013E.png new file mode 100644 index 000000000..b33091595 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/013E.png differ diff --git a/fonts/TewiFontOutlineAlt/013F.png b/fonts/TewiFontOutlineAlt/013F.png new file mode 100644 index 000000000..81c5786b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/013F.png differ diff --git a/fonts/TewiFontOutlineAlt/0140.png b/fonts/TewiFontOutlineAlt/0140.png new file mode 100644 index 000000000..b8d48d573 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0140.png differ diff --git a/fonts/TewiFontOutlineAlt/0141.png b/fonts/TewiFontOutlineAlt/0141.png new file mode 100644 index 000000000..ed21459b7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0141.png differ diff --git a/fonts/TewiFontOutlineAlt/0142.png b/fonts/TewiFontOutlineAlt/0142.png new file mode 100644 index 000000000..73d409e43 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0142.png differ diff --git a/fonts/TewiFontOutlineAlt/0143.png b/fonts/TewiFontOutlineAlt/0143.png new file mode 100644 index 000000000..fca76e2d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0143.png differ diff --git a/fonts/TewiFontOutlineAlt/0144.png b/fonts/TewiFontOutlineAlt/0144.png new file mode 100644 index 000000000..d49f7b27b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0144.png differ diff --git a/fonts/TewiFontOutlineAlt/0145.png b/fonts/TewiFontOutlineAlt/0145.png new file mode 100644 index 000000000..a14057537 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0145.png differ diff --git a/fonts/TewiFontOutlineAlt/0146.png b/fonts/TewiFontOutlineAlt/0146.png new file mode 100644 index 000000000..51adefc8d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0146.png differ diff --git a/fonts/TewiFontOutlineAlt/0147.png b/fonts/TewiFontOutlineAlt/0147.png new file mode 100644 index 000000000..b71d7aead Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0147.png differ diff --git a/fonts/TewiFontOutlineAlt/0148.png b/fonts/TewiFontOutlineAlt/0148.png new file mode 100644 index 000000000..9ca7a5fa6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0148.png differ diff --git a/fonts/TewiFontOutlineAlt/0149.png b/fonts/TewiFontOutlineAlt/0149.png new file mode 100644 index 000000000..5c3b3a0b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0149.png differ diff --git a/fonts/TewiFontOutlineAlt/014A.png b/fonts/TewiFontOutlineAlt/014A.png new file mode 100644 index 000000000..6a975a3b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/014A.png differ diff --git a/fonts/TewiFontOutlineAlt/014B.png b/fonts/TewiFontOutlineAlt/014B.png new file mode 100644 index 000000000..953f3d488 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/014B.png differ diff --git a/fonts/TewiFontOutlineAlt/014C.png b/fonts/TewiFontOutlineAlt/014C.png new file mode 100644 index 000000000..01635fb37 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/014C.png differ diff --git a/fonts/TewiFontOutlineAlt/014D.png b/fonts/TewiFontOutlineAlt/014D.png new file mode 100644 index 000000000..920b9ce30 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/014D.png differ diff --git a/fonts/TewiFontOutlineAlt/014E.png b/fonts/TewiFontOutlineAlt/014E.png new file mode 100644 index 000000000..15ebc85ab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/014E.png differ diff --git a/fonts/TewiFontOutlineAlt/014F.png b/fonts/TewiFontOutlineAlt/014F.png new file mode 100644 index 000000000..499693904 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/014F.png differ diff --git a/fonts/TewiFontOutlineAlt/0150.png b/fonts/TewiFontOutlineAlt/0150.png new file mode 100644 index 000000000..e8285122d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0150.png differ diff --git a/fonts/TewiFontOutlineAlt/0151.png b/fonts/TewiFontOutlineAlt/0151.png new file mode 100644 index 000000000..9f43bce04 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0151.png differ diff --git a/fonts/TewiFontOutlineAlt/0152.png b/fonts/TewiFontOutlineAlt/0152.png new file mode 100644 index 000000000..d03308d35 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0152.png differ diff --git a/fonts/TewiFontOutlineAlt/0153.png b/fonts/TewiFontOutlineAlt/0153.png new file mode 100644 index 000000000..3c9084f24 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0153.png differ diff --git a/fonts/TewiFontOutlineAlt/0154.png b/fonts/TewiFontOutlineAlt/0154.png new file mode 100644 index 000000000..e4329f35f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0154.png differ diff --git a/fonts/TewiFontOutlineAlt/0155.png b/fonts/TewiFontOutlineAlt/0155.png new file mode 100644 index 000000000..c02927b5c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0155.png differ diff --git a/fonts/TewiFontOutlineAlt/0156.png b/fonts/TewiFontOutlineAlt/0156.png new file mode 100644 index 000000000..e1ae951f8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0156.png differ diff --git a/fonts/TewiFontOutlineAlt/0157.png b/fonts/TewiFontOutlineAlt/0157.png new file mode 100644 index 000000000..a9871af16 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0157.png differ diff --git a/fonts/TewiFontOutlineAlt/0158.png b/fonts/TewiFontOutlineAlt/0158.png new file mode 100644 index 000000000..f0519a74d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0158.png differ diff --git a/fonts/TewiFontOutlineAlt/0159.png b/fonts/TewiFontOutlineAlt/0159.png new file mode 100644 index 000000000..e6b53a7a4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0159.png differ diff --git a/fonts/TewiFontOutlineAlt/015A.png b/fonts/TewiFontOutlineAlt/015A.png new file mode 100644 index 000000000..268bc5d40 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/015A.png differ diff --git a/fonts/TewiFontOutlineAlt/015B.png b/fonts/TewiFontOutlineAlt/015B.png new file mode 100644 index 000000000..4c0ec93f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/015B.png differ diff --git a/fonts/TewiFontOutlineAlt/015C.png b/fonts/TewiFontOutlineAlt/015C.png new file mode 100644 index 000000000..1c239c173 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/015C.png differ diff --git a/fonts/TewiFontOutlineAlt/015D.png b/fonts/TewiFontOutlineAlt/015D.png new file mode 100644 index 000000000..7181e1f31 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/015D.png differ diff --git a/fonts/TewiFontOutlineAlt/015E.png b/fonts/TewiFontOutlineAlt/015E.png new file mode 100644 index 000000000..89c985098 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/015E.png differ diff --git a/fonts/TewiFontOutlineAlt/015F.png b/fonts/TewiFontOutlineAlt/015F.png new file mode 100644 index 000000000..8d08fc61b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/015F.png differ diff --git a/fonts/TewiFontOutlineAlt/0160.png b/fonts/TewiFontOutlineAlt/0160.png new file mode 100644 index 000000000..2a0126ecf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0160.png differ diff --git a/fonts/TewiFontOutlineAlt/0161.png b/fonts/TewiFontOutlineAlt/0161.png new file mode 100644 index 000000000..3d109c5e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0161.png differ diff --git a/fonts/TewiFontOutlineAlt/0162.png b/fonts/TewiFontOutlineAlt/0162.png new file mode 100644 index 000000000..b428e3f46 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0162.png differ diff --git a/fonts/TewiFontOutlineAlt/0163.png b/fonts/TewiFontOutlineAlt/0163.png new file mode 100644 index 000000000..ce9cf8967 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0163.png differ diff --git a/fonts/TewiFontOutlineAlt/0164.png b/fonts/TewiFontOutlineAlt/0164.png new file mode 100644 index 000000000..899409dc8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0164.png differ diff --git a/fonts/TewiFontOutlineAlt/0165.png b/fonts/TewiFontOutlineAlt/0165.png new file mode 100644 index 000000000..9be6ff698 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0165.png differ diff --git a/fonts/TewiFontOutlineAlt/0166.png b/fonts/TewiFontOutlineAlt/0166.png new file mode 100644 index 000000000..29d79b5a8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0166.png differ diff --git a/fonts/TewiFontOutlineAlt/0167.png b/fonts/TewiFontOutlineAlt/0167.png new file mode 100644 index 000000000..e3ef871cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0167.png differ diff --git a/fonts/TewiFontOutlineAlt/0168.png b/fonts/TewiFontOutlineAlt/0168.png new file mode 100644 index 000000000..554207f16 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0168.png differ diff --git a/fonts/TewiFontOutlineAlt/0169.png b/fonts/TewiFontOutlineAlt/0169.png new file mode 100644 index 000000000..fdbdd14cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0169.png differ diff --git a/fonts/TewiFontOutlineAlt/016A.png b/fonts/TewiFontOutlineAlt/016A.png new file mode 100644 index 000000000..7ae3c0fad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/016A.png differ diff --git a/fonts/TewiFontOutlineAlt/016B.png b/fonts/TewiFontOutlineAlt/016B.png new file mode 100644 index 000000000..6a9b7aa89 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/016B.png differ diff --git a/fonts/TewiFontOutlineAlt/016C.png b/fonts/TewiFontOutlineAlt/016C.png new file mode 100644 index 000000000..3ed1e03af Binary files /dev/null and b/fonts/TewiFontOutlineAlt/016C.png differ diff --git a/fonts/TewiFontOutlineAlt/016D.png b/fonts/TewiFontOutlineAlt/016D.png new file mode 100644 index 000000000..e71797e46 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/016D.png differ diff --git a/fonts/TewiFontOutlineAlt/016E.png b/fonts/TewiFontOutlineAlt/016E.png new file mode 100644 index 000000000..3ccb63571 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/016E.png differ diff --git a/fonts/TewiFontOutlineAlt/016F.png b/fonts/TewiFontOutlineAlt/016F.png new file mode 100644 index 000000000..f0dea4f54 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/016F.png differ diff --git a/fonts/TewiFontOutlineAlt/0170.png b/fonts/TewiFontOutlineAlt/0170.png new file mode 100644 index 000000000..e75bcd039 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0170.png differ diff --git a/fonts/TewiFontOutlineAlt/0171.png b/fonts/TewiFontOutlineAlt/0171.png new file mode 100644 index 000000000..93940b7f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0171.png differ diff --git a/fonts/TewiFontOutlineAlt/0172.png b/fonts/TewiFontOutlineAlt/0172.png new file mode 100644 index 000000000..8081b25a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0172.png differ diff --git a/fonts/TewiFontOutlineAlt/0173.png b/fonts/TewiFontOutlineAlt/0173.png new file mode 100644 index 000000000..1b4a93ccc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0173.png differ diff --git a/fonts/TewiFontOutlineAlt/0174.png b/fonts/TewiFontOutlineAlt/0174.png new file mode 100644 index 000000000..14999edb2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0174.png differ diff --git a/fonts/TewiFontOutlineAlt/0175.png b/fonts/TewiFontOutlineAlt/0175.png new file mode 100644 index 000000000..50d77eae9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0175.png differ diff --git a/fonts/TewiFontOutlineAlt/0176.png b/fonts/TewiFontOutlineAlt/0176.png new file mode 100644 index 000000000..c85d74350 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0176.png differ diff --git a/fonts/TewiFontOutlineAlt/0177.png b/fonts/TewiFontOutlineAlt/0177.png new file mode 100644 index 000000000..4f60bcc33 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0177.png differ diff --git a/fonts/TewiFontOutlineAlt/0178.png b/fonts/TewiFontOutlineAlt/0178.png new file mode 100644 index 000000000..75941e9c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0178.png differ diff --git a/fonts/TewiFontOutlineAlt/0179.png b/fonts/TewiFontOutlineAlt/0179.png new file mode 100644 index 000000000..ad8bad702 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0179.png differ diff --git a/fonts/TewiFontOutlineAlt/017A.png b/fonts/TewiFontOutlineAlt/017A.png new file mode 100644 index 000000000..107d02128 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/017A.png differ diff --git a/fonts/TewiFontOutlineAlt/017B.png b/fonts/TewiFontOutlineAlt/017B.png new file mode 100644 index 000000000..e98494f77 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/017B.png differ diff --git a/fonts/TewiFontOutlineAlt/017C.png b/fonts/TewiFontOutlineAlt/017C.png new file mode 100644 index 000000000..c0e96a2e8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/017C.png differ diff --git a/fonts/TewiFontOutlineAlt/017D.png b/fonts/TewiFontOutlineAlt/017D.png new file mode 100644 index 000000000..70b7e7101 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/017D.png differ diff --git a/fonts/TewiFontOutlineAlt/017E.png b/fonts/TewiFontOutlineAlt/017E.png new file mode 100644 index 000000000..11e7268d1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/017E.png differ diff --git a/fonts/TewiFontOutlineAlt/017F.png b/fonts/TewiFontOutlineAlt/017F.png new file mode 100644 index 000000000..7f331c1ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/017F.png differ diff --git a/fonts/TewiFontOutlineAlt/0180.png b/fonts/TewiFontOutlineAlt/0180.png new file mode 100644 index 000000000..76d2f64dc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0180.png differ diff --git a/fonts/TewiFontOutlineAlt/0181.png b/fonts/TewiFontOutlineAlt/0181.png new file mode 100644 index 000000000..97f90a281 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0181.png differ diff --git a/fonts/TewiFontOutlineAlt/0182.png b/fonts/TewiFontOutlineAlt/0182.png new file mode 100644 index 000000000..0631b6ba7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0182.png differ diff --git a/fonts/TewiFontOutlineAlt/0183.png b/fonts/TewiFontOutlineAlt/0183.png new file mode 100644 index 000000000..79ba135b7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0183.png differ diff --git a/fonts/TewiFontOutlineAlt/0184.png b/fonts/TewiFontOutlineAlt/0184.png new file mode 100644 index 000000000..3b820c655 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0184.png differ diff --git a/fonts/TewiFontOutlineAlt/0185.png b/fonts/TewiFontOutlineAlt/0185.png new file mode 100644 index 000000000..69d9d514a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0185.png differ diff --git a/fonts/TewiFontOutlineAlt/0186.png b/fonts/TewiFontOutlineAlt/0186.png new file mode 100644 index 000000000..cd4714cdd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0186.png differ diff --git a/fonts/TewiFontOutlineAlt/0187.png b/fonts/TewiFontOutlineAlt/0187.png new file mode 100644 index 000000000..ce29ef9a5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0187.png differ diff --git a/fonts/TewiFontOutlineAlt/0188.png b/fonts/TewiFontOutlineAlt/0188.png new file mode 100644 index 000000000..c16fdc962 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0188.png differ diff --git a/fonts/TewiFontOutlineAlt/0189.png b/fonts/TewiFontOutlineAlt/0189.png new file mode 100644 index 000000000..0621f41e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0189.png differ diff --git a/fonts/TewiFontOutlineAlt/018A.png b/fonts/TewiFontOutlineAlt/018A.png new file mode 100644 index 000000000..512b359f0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/018A.png differ diff --git a/fonts/TewiFontOutlineAlt/018B.png b/fonts/TewiFontOutlineAlt/018B.png new file mode 100644 index 000000000..e80150052 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/018B.png differ diff --git a/fonts/TewiFontOutlineAlt/018C.png b/fonts/TewiFontOutlineAlt/018C.png new file mode 100644 index 000000000..ccdc91735 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/018C.png differ diff --git a/fonts/TewiFontOutlineAlt/018D.png b/fonts/TewiFontOutlineAlt/018D.png new file mode 100644 index 000000000..68620f558 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/018D.png differ diff --git a/fonts/TewiFontOutlineAlt/018E.png b/fonts/TewiFontOutlineAlt/018E.png new file mode 100644 index 000000000..7b1f671e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/018E.png differ diff --git a/fonts/TewiFontOutlineAlt/018F.png b/fonts/TewiFontOutlineAlt/018F.png new file mode 100644 index 000000000..065226c42 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/018F.png differ diff --git a/fonts/TewiFontOutlineAlt/0190.png b/fonts/TewiFontOutlineAlt/0190.png new file mode 100644 index 000000000..5e92f1408 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0190.png differ diff --git a/fonts/TewiFontOutlineAlt/0191.png b/fonts/TewiFontOutlineAlt/0191.png new file mode 100644 index 000000000..421cab6b8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0191.png differ diff --git a/fonts/TewiFontOutlineAlt/0192.png b/fonts/TewiFontOutlineAlt/0192.png new file mode 100644 index 000000000..85bc6394b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0192.png differ diff --git a/fonts/TewiFontOutlineAlt/0193.png b/fonts/TewiFontOutlineAlt/0193.png new file mode 100644 index 000000000..f08ec6b83 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0193.png differ diff --git a/fonts/TewiFontOutlineAlt/0194.png b/fonts/TewiFontOutlineAlt/0194.png new file mode 100644 index 000000000..89b0e0d4b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0194.png differ diff --git a/fonts/TewiFontOutlineAlt/0195.png b/fonts/TewiFontOutlineAlt/0195.png new file mode 100644 index 000000000..a0328bf03 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0195.png differ diff --git a/fonts/TewiFontOutlineAlt/0196.png b/fonts/TewiFontOutlineAlt/0196.png new file mode 100644 index 000000000..50d74ca90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0196.png differ diff --git a/fonts/TewiFontOutlineAlt/0197.png b/fonts/TewiFontOutlineAlt/0197.png new file mode 100644 index 000000000..41715b941 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0197.png differ diff --git a/fonts/TewiFontOutlineAlt/0198.png b/fonts/TewiFontOutlineAlt/0198.png new file mode 100644 index 000000000..c12fd1706 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0198.png differ diff --git a/fonts/TewiFontOutlineAlt/0199.png b/fonts/TewiFontOutlineAlt/0199.png new file mode 100644 index 000000000..50a494492 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0199.png differ diff --git a/fonts/TewiFontOutlineAlt/019A.png b/fonts/TewiFontOutlineAlt/019A.png new file mode 100644 index 000000000..5d3c50399 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/019A.png differ diff --git a/fonts/TewiFontOutlineAlt/019B.png b/fonts/TewiFontOutlineAlt/019B.png new file mode 100644 index 000000000..d637677ac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/019B.png differ diff --git a/fonts/TewiFontOutlineAlt/019C.png b/fonts/TewiFontOutlineAlt/019C.png new file mode 100644 index 000000000..35c46fb90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/019C.png differ diff --git a/fonts/TewiFontOutlineAlt/019D.png b/fonts/TewiFontOutlineAlt/019D.png new file mode 100644 index 000000000..2d91813f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/019D.png differ diff --git a/fonts/TewiFontOutlineAlt/019E.png b/fonts/TewiFontOutlineAlt/019E.png new file mode 100644 index 000000000..b50753d19 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/019E.png differ diff --git a/fonts/TewiFontOutlineAlt/019F.png b/fonts/TewiFontOutlineAlt/019F.png new file mode 100644 index 000000000..293c0546f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/019F.png differ diff --git a/fonts/TewiFontOutlineAlt/01A0.png b/fonts/TewiFontOutlineAlt/01A0.png new file mode 100644 index 000000000..170d9529e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A0.png differ diff --git a/fonts/TewiFontOutlineAlt/01A1.png b/fonts/TewiFontOutlineAlt/01A1.png new file mode 100644 index 000000000..0ff70bf13 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A1.png differ diff --git a/fonts/TewiFontOutlineAlt/01A2.png b/fonts/TewiFontOutlineAlt/01A2.png new file mode 100644 index 000000000..81707ccdf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A2.png differ diff --git a/fonts/TewiFontOutlineAlt/01A3.png b/fonts/TewiFontOutlineAlt/01A3.png new file mode 100644 index 000000000..937ea798e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A3.png differ diff --git a/fonts/TewiFontOutlineAlt/01A4.png b/fonts/TewiFontOutlineAlt/01A4.png new file mode 100644 index 000000000..f5bb24f0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A4.png differ diff --git a/fonts/TewiFontOutlineAlt/01A5.png b/fonts/TewiFontOutlineAlt/01A5.png new file mode 100644 index 000000000..7ad367228 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A5.png differ diff --git a/fonts/TewiFontOutlineAlt/01A6.png b/fonts/TewiFontOutlineAlt/01A6.png new file mode 100644 index 000000000..7d5857c62 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A6.png differ diff --git a/fonts/TewiFontOutlineAlt/01A7.png b/fonts/TewiFontOutlineAlt/01A7.png new file mode 100644 index 000000000..571758d80 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A7.png differ diff --git a/fonts/TewiFontOutlineAlt/01A8.png b/fonts/TewiFontOutlineAlt/01A8.png new file mode 100644 index 000000000..c41fc2940 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A8.png differ diff --git a/fonts/TewiFontOutlineAlt/01A9.png b/fonts/TewiFontOutlineAlt/01A9.png new file mode 100644 index 000000000..deb9a7bd8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01A9.png differ diff --git a/fonts/TewiFontOutlineAlt/01AA.png b/fonts/TewiFontOutlineAlt/01AA.png new file mode 100644 index 000000000..e13da55de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01AA.png differ diff --git a/fonts/TewiFontOutlineAlt/01AB.png b/fonts/TewiFontOutlineAlt/01AB.png new file mode 100644 index 000000000..94a1a74de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01AB.png differ diff --git a/fonts/TewiFontOutlineAlt/01AC.png b/fonts/TewiFontOutlineAlt/01AC.png new file mode 100644 index 000000000..7442261e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01AC.png differ diff --git a/fonts/TewiFontOutlineAlt/01AD.png b/fonts/TewiFontOutlineAlt/01AD.png new file mode 100644 index 000000000..c71f66d7b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01AD.png differ diff --git a/fonts/TewiFontOutlineAlt/01AE.png b/fonts/TewiFontOutlineAlt/01AE.png new file mode 100644 index 000000000..454672bbb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01AE.png differ diff --git a/fonts/TewiFontOutlineAlt/01AF.png b/fonts/TewiFontOutlineAlt/01AF.png new file mode 100644 index 000000000..846bc698b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01AF.png differ diff --git a/fonts/TewiFontOutlineAlt/01B0.png b/fonts/TewiFontOutlineAlt/01B0.png new file mode 100644 index 000000000..e3910d4d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B0.png differ diff --git a/fonts/TewiFontOutlineAlt/01B1.png b/fonts/TewiFontOutlineAlt/01B1.png new file mode 100644 index 000000000..b37cfa6ec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B1.png differ diff --git a/fonts/TewiFontOutlineAlt/01B2.png b/fonts/TewiFontOutlineAlt/01B2.png new file mode 100644 index 000000000..b4f280549 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B2.png differ diff --git a/fonts/TewiFontOutlineAlt/01B3.png b/fonts/TewiFontOutlineAlt/01B3.png new file mode 100644 index 000000000..705277a78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B3.png differ diff --git a/fonts/TewiFontOutlineAlt/01B4.png b/fonts/TewiFontOutlineAlt/01B4.png new file mode 100644 index 000000000..ade531b56 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B4.png differ diff --git a/fonts/TewiFontOutlineAlt/01B5.png b/fonts/TewiFontOutlineAlt/01B5.png new file mode 100644 index 000000000..93f621ec2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B5.png differ diff --git a/fonts/TewiFontOutlineAlt/01B6.png b/fonts/TewiFontOutlineAlt/01B6.png new file mode 100644 index 000000000..66338b1cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B6.png differ diff --git a/fonts/TewiFontOutlineAlt/01B7.png b/fonts/TewiFontOutlineAlt/01B7.png new file mode 100644 index 000000000..d42ad16b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B7.png differ diff --git a/fonts/TewiFontOutlineAlt/01B8.png b/fonts/TewiFontOutlineAlt/01B8.png new file mode 100644 index 000000000..3fcd1de57 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B8.png differ diff --git a/fonts/TewiFontOutlineAlt/01B9.png b/fonts/TewiFontOutlineAlt/01B9.png new file mode 100644 index 000000000..02ccb8565 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01B9.png differ diff --git a/fonts/TewiFontOutlineAlt/01BA.png b/fonts/TewiFontOutlineAlt/01BA.png new file mode 100644 index 000000000..58834cfa5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01BA.png differ diff --git a/fonts/TewiFontOutlineAlt/01BB.png b/fonts/TewiFontOutlineAlt/01BB.png new file mode 100644 index 000000000..6e6b8698d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01BB.png differ diff --git a/fonts/TewiFontOutlineAlt/01BC.png b/fonts/TewiFontOutlineAlt/01BC.png new file mode 100644 index 000000000..fccc0324d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01BC.png differ diff --git a/fonts/TewiFontOutlineAlt/01BD.png b/fonts/TewiFontOutlineAlt/01BD.png new file mode 100644 index 000000000..ea5dd534d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01BD.png differ diff --git a/fonts/TewiFontOutlineAlt/01BE.png b/fonts/TewiFontOutlineAlt/01BE.png new file mode 100644 index 000000000..595f9fb85 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01BE.png differ diff --git a/fonts/TewiFontOutlineAlt/01BF.png b/fonts/TewiFontOutlineAlt/01BF.png new file mode 100644 index 000000000..329d1e050 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01BF.png differ diff --git a/fonts/TewiFontOutlineAlt/01C0.png b/fonts/TewiFontOutlineAlt/01C0.png new file mode 100644 index 000000000..7a2348491 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C0.png differ diff --git a/fonts/TewiFontOutlineAlt/01C1.png b/fonts/TewiFontOutlineAlt/01C1.png new file mode 100644 index 000000000..9b98f07ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C1.png differ diff --git a/fonts/TewiFontOutlineAlt/01C2.png b/fonts/TewiFontOutlineAlt/01C2.png new file mode 100644 index 000000000..4fa4cba63 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C2.png differ diff --git a/fonts/TewiFontOutlineAlt/01C3.png b/fonts/TewiFontOutlineAlt/01C3.png new file mode 100644 index 000000000..a3cc3bf5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C3.png differ diff --git a/fonts/TewiFontOutlineAlt/01C4.png b/fonts/TewiFontOutlineAlt/01C4.png new file mode 100644 index 000000000..854c39c67 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C4.png differ diff --git a/fonts/TewiFontOutlineAlt/01C5.png b/fonts/TewiFontOutlineAlt/01C5.png new file mode 100644 index 000000000..4be7e22e3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C5.png differ diff --git a/fonts/TewiFontOutlineAlt/01C6.png b/fonts/TewiFontOutlineAlt/01C6.png new file mode 100644 index 000000000..fdefab72d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C6.png differ diff --git a/fonts/TewiFontOutlineAlt/01C7.png b/fonts/TewiFontOutlineAlt/01C7.png new file mode 100644 index 000000000..df4f86212 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C7.png differ diff --git a/fonts/TewiFontOutlineAlt/01C8.png b/fonts/TewiFontOutlineAlt/01C8.png new file mode 100644 index 000000000..09bd6f2ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C8.png differ diff --git a/fonts/TewiFontOutlineAlt/01C9.png b/fonts/TewiFontOutlineAlt/01C9.png new file mode 100644 index 000000000..da20496f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01C9.png differ diff --git a/fonts/TewiFontOutlineAlt/01CA.png b/fonts/TewiFontOutlineAlt/01CA.png new file mode 100644 index 000000000..e97d4d006 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01CA.png differ diff --git a/fonts/TewiFontOutlineAlt/01CB.png b/fonts/TewiFontOutlineAlt/01CB.png new file mode 100644 index 000000000..712c31966 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01CB.png differ diff --git a/fonts/TewiFontOutlineAlt/01CC.png b/fonts/TewiFontOutlineAlt/01CC.png new file mode 100644 index 000000000..46f825ff5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01CC.png differ diff --git a/fonts/TewiFontOutlineAlt/01CD.png b/fonts/TewiFontOutlineAlt/01CD.png new file mode 100644 index 000000000..dfaee6910 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01CD.png differ diff --git a/fonts/TewiFontOutlineAlt/01CE.png b/fonts/TewiFontOutlineAlt/01CE.png new file mode 100644 index 000000000..8c42598e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01CE.png differ diff --git a/fonts/TewiFontOutlineAlt/01CF.png b/fonts/TewiFontOutlineAlt/01CF.png new file mode 100644 index 000000000..11b8bd9d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01CF.png differ diff --git a/fonts/TewiFontOutlineAlt/01D0.png b/fonts/TewiFontOutlineAlt/01D0.png new file mode 100644 index 000000000..53e9b326e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D0.png differ diff --git a/fonts/TewiFontOutlineAlt/01D1.png b/fonts/TewiFontOutlineAlt/01D1.png new file mode 100644 index 000000000..3cfc95765 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D1.png differ diff --git a/fonts/TewiFontOutlineAlt/01D2.png b/fonts/TewiFontOutlineAlt/01D2.png new file mode 100644 index 000000000..4457c8fa7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D2.png differ diff --git a/fonts/TewiFontOutlineAlt/01D3.png b/fonts/TewiFontOutlineAlt/01D3.png new file mode 100644 index 000000000..7724a41e7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D3.png differ diff --git a/fonts/TewiFontOutlineAlt/01D4.png b/fonts/TewiFontOutlineAlt/01D4.png new file mode 100644 index 000000000..08ae38f1f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D4.png differ diff --git a/fonts/TewiFontOutlineAlt/01D5.png b/fonts/TewiFontOutlineAlt/01D5.png new file mode 100644 index 000000000..8086b118f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D5.png differ diff --git a/fonts/TewiFontOutlineAlt/01D6.png b/fonts/TewiFontOutlineAlt/01D6.png new file mode 100644 index 000000000..062e2ff33 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D6.png differ diff --git a/fonts/TewiFontOutlineAlt/01D7.png b/fonts/TewiFontOutlineAlt/01D7.png new file mode 100644 index 000000000..5b1d32074 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D7.png differ diff --git a/fonts/TewiFontOutlineAlt/01D8.png b/fonts/TewiFontOutlineAlt/01D8.png new file mode 100644 index 000000000..c6edd7312 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D8.png differ diff --git a/fonts/TewiFontOutlineAlt/01D9.png b/fonts/TewiFontOutlineAlt/01D9.png new file mode 100644 index 000000000..8eda1ec42 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01D9.png differ diff --git a/fonts/TewiFontOutlineAlt/01DA.png b/fonts/TewiFontOutlineAlt/01DA.png new file mode 100644 index 000000000..51b4b7c14 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01DA.png differ diff --git a/fonts/TewiFontOutlineAlt/01DB.png b/fonts/TewiFontOutlineAlt/01DB.png new file mode 100644 index 000000000..af7cafd00 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01DB.png differ diff --git a/fonts/TewiFontOutlineAlt/01DC.png b/fonts/TewiFontOutlineAlt/01DC.png new file mode 100644 index 000000000..77f6e4efa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01DC.png differ diff --git a/fonts/TewiFontOutlineAlt/01DD.png b/fonts/TewiFontOutlineAlt/01DD.png new file mode 100644 index 000000000..30b819171 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01DD.png differ diff --git a/fonts/TewiFontOutlineAlt/01DE.png b/fonts/TewiFontOutlineAlt/01DE.png new file mode 100644 index 000000000..7223b86ac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01DE.png differ diff --git a/fonts/TewiFontOutlineAlt/01DF.png b/fonts/TewiFontOutlineAlt/01DF.png new file mode 100644 index 000000000..61b166196 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01DF.png differ diff --git a/fonts/TewiFontOutlineAlt/01E0.png b/fonts/TewiFontOutlineAlt/01E0.png new file mode 100644 index 000000000..85de46d42 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E0.png differ diff --git a/fonts/TewiFontOutlineAlt/01E1.png b/fonts/TewiFontOutlineAlt/01E1.png new file mode 100644 index 000000000..a9f9369c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E1.png differ diff --git a/fonts/TewiFontOutlineAlt/01E2.png b/fonts/TewiFontOutlineAlt/01E2.png new file mode 100644 index 000000000..1622d0b7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E2.png differ diff --git a/fonts/TewiFontOutlineAlt/01E3.png b/fonts/TewiFontOutlineAlt/01E3.png new file mode 100644 index 000000000..bfd6e3481 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E3.png differ diff --git a/fonts/TewiFontOutlineAlt/01E4.png b/fonts/TewiFontOutlineAlt/01E4.png new file mode 100644 index 000000000..b1034144e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E4.png differ diff --git a/fonts/TewiFontOutlineAlt/01E5.png b/fonts/TewiFontOutlineAlt/01E5.png new file mode 100644 index 000000000..101b3f8c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E5.png differ diff --git a/fonts/TewiFontOutlineAlt/01E6.png b/fonts/TewiFontOutlineAlt/01E6.png new file mode 100644 index 000000000..ce7a08f5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E6.png differ diff --git a/fonts/TewiFontOutlineAlt/01E7.png b/fonts/TewiFontOutlineAlt/01E7.png new file mode 100644 index 000000000..bc9a583bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E7.png differ diff --git a/fonts/TewiFontOutlineAlt/01E8.png b/fonts/TewiFontOutlineAlt/01E8.png new file mode 100644 index 000000000..cfe63b31e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E8.png differ diff --git a/fonts/TewiFontOutlineAlt/01E9.png b/fonts/TewiFontOutlineAlt/01E9.png new file mode 100644 index 000000000..b32a4c635 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01E9.png differ diff --git a/fonts/TewiFontOutlineAlt/01EA.png b/fonts/TewiFontOutlineAlt/01EA.png new file mode 100644 index 000000000..0a1b023fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01EA.png differ diff --git a/fonts/TewiFontOutlineAlt/01EB.png b/fonts/TewiFontOutlineAlt/01EB.png new file mode 100644 index 000000000..e67b714d4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01EB.png differ diff --git a/fonts/TewiFontOutlineAlt/01EC.png b/fonts/TewiFontOutlineAlt/01EC.png new file mode 100644 index 000000000..5bad7789d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01EC.png differ diff --git a/fonts/TewiFontOutlineAlt/01ED.png b/fonts/TewiFontOutlineAlt/01ED.png new file mode 100644 index 000000000..7e8e1448e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01ED.png differ diff --git a/fonts/TewiFontOutlineAlt/01EE.png b/fonts/TewiFontOutlineAlt/01EE.png new file mode 100644 index 000000000..4926b8d13 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01EE.png differ diff --git a/fonts/TewiFontOutlineAlt/01EF.png b/fonts/TewiFontOutlineAlt/01EF.png new file mode 100644 index 000000000..8948f905c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01EF.png differ diff --git a/fonts/TewiFontOutlineAlt/01F0.png b/fonts/TewiFontOutlineAlt/01F0.png new file mode 100644 index 000000000..414f80f5f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F0.png differ diff --git a/fonts/TewiFontOutlineAlt/01F1.png b/fonts/TewiFontOutlineAlt/01F1.png new file mode 100644 index 000000000..90d9d0fcc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F1.png differ diff --git a/fonts/TewiFontOutlineAlt/01F2.png b/fonts/TewiFontOutlineAlt/01F2.png new file mode 100644 index 000000000..411bb6cee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F2.png differ diff --git a/fonts/TewiFontOutlineAlt/01F3.png b/fonts/TewiFontOutlineAlt/01F3.png new file mode 100644 index 000000000..f16952eac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F3.png differ diff --git a/fonts/TewiFontOutlineAlt/01F4.png b/fonts/TewiFontOutlineAlt/01F4.png new file mode 100644 index 000000000..ce7a08f5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F4.png differ diff --git a/fonts/TewiFontOutlineAlt/01F5.png b/fonts/TewiFontOutlineAlt/01F5.png new file mode 100644 index 000000000..dbd8f7523 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F5.png differ diff --git a/fonts/TewiFontOutlineAlt/01F6.png b/fonts/TewiFontOutlineAlt/01F6.png new file mode 100644 index 000000000..397aa672a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F6.png differ diff --git a/fonts/TewiFontOutlineAlt/01F7.png b/fonts/TewiFontOutlineAlt/01F7.png new file mode 100644 index 000000000..845a4f7cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F7.png differ diff --git a/fonts/TewiFontOutlineAlt/01F8.png b/fonts/TewiFontOutlineAlt/01F8.png new file mode 100644 index 000000000..d08497984 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F8.png differ diff --git a/fonts/TewiFontOutlineAlt/01F9.png b/fonts/TewiFontOutlineAlt/01F9.png new file mode 100644 index 000000000..0a95a3921 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01F9.png differ diff --git a/fonts/TewiFontOutlineAlt/01FA.png b/fonts/TewiFontOutlineAlt/01FA.png new file mode 100644 index 000000000..93a1f251b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01FA.png differ diff --git a/fonts/TewiFontOutlineAlt/01FB.png b/fonts/TewiFontOutlineAlt/01FB.png new file mode 100644 index 000000000..3cd7c50c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01FB.png differ diff --git a/fonts/TewiFontOutlineAlt/01FC.png b/fonts/TewiFontOutlineAlt/01FC.png new file mode 100644 index 000000000..6dc2ba5bd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01FC.png differ diff --git a/fonts/TewiFontOutlineAlt/01FD.png b/fonts/TewiFontOutlineAlt/01FD.png new file mode 100644 index 000000000..575d14de2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01FD.png differ diff --git a/fonts/TewiFontOutlineAlt/01FE.png b/fonts/TewiFontOutlineAlt/01FE.png new file mode 100644 index 000000000..453c30506 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01FE.png differ diff --git a/fonts/TewiFontOutlineAlt/01FF.png b/fonts/TewiFontOutlineAlt/01FF.png new file mode 100644 index 000000000..53f158c10 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/01FF.png differ diff --git a/fonts/TewiFontOutlineAlt/0200.png b/fonts/TewiFontOutlineAlt/0200.png new file mode 100644 index 000000000..ecbf65d17 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0200.png differ diff --git a/fonts/TewiFontOutlineAlt/0201.png b/fonts/TewiFontOutlineAlt/0201.png new file mode 100644 index 000000000..a76c60f2b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0201.png differ diff --git a/fonts/TewiFontOutlineAlt/0202.png b/fonts/TewiFontOutlineAlt/0202.png new file mode 100644 index 000000000..68d0a561a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0202.png differ diff --git a/fonts/TewiFontOutlineAlt/0203.png b/fonts/TewiFontOutlineAlt/0203.png new file mode 100644 index 000000000..404fbf1bd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0203.png differ diff --git a/fonts/TewiFontOutlineAlt/0204.png b/fonts/TewiFontOutlineAlt/0204.png new file mode 100644 index 000000000..0ff6ae7cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0204.png differ diff --git a/fonts/TewiFontOutlineAlt/0205.png b/fonts/TewiFontOutlineAlt/0205.png new file mode 100644 index 000000000..27798279c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0205.png differ diff --git a/fonts/TewiFontOutlineAlt/0206.png b/fonts/TewiFontOutlineAlt/0206.png new file mode 100644 index 000000000..4c9b72df8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0206.png differ diff --git a/fonts/TewiFontOutlineAlt/0207.png b/fonts/TewiFontOutlineAlt/0207.png new file mode 100644 index 000000000..abd220e44 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0207.png differ diff --git a/fonts/TewiFontOutlineAlt/0208.png b/fonts/TewiFontOutlineAlt/0208.png new file mode 100644 index 000000000..0ff2d97a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0208.png differ diff --git a/fonts/TewiFontOutlineAlt/0209.png b/fonts/TewiFontOutlineAlt/0209.png new file mode 100644 index 000000000..7b8158783 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0209.png differ diff --git a/fonts/TewiFontOutlineAlt/020A.png b/fonts/TewiFontOutlineAlt/020A.png new file mode 100644 index 000000000..5a493b68d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/020A.png differ diff --git a/fonts/TewiFontOutlineAlt/020B.png b/fonts/TewiFontOutlineAlt/020B.png new file mode 100644 index 000000000..3343d4505 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/020B.png differ diff --git a/fonts/TewiFontOutlineAlt/020C.png b/fonts/TewiFontOutlineAlt/020C.png new file mode 100644 index 000000000..880fc59b1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/020C.png differ diff --git a/fonts/TewiFontOutlineAlt/020D.png b/fonts/TewiFontOutlineAlt/020D.png new file mode 100644 index 000000000..0ad3825e7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/020D.png differ diff --git a/fonts/TewiFontOutlineAlt/020E.png b/fonts/TewiFontOutlineAlt/020E.png new file mode 100644 index 000000000..a7b87c746 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/020E.png differ diff --git a/fonts/TewiFontOutlineAlt/020F.png b/fonts/TewiFontOutlineAlt/020F.png new file mode 100644 index 000000000..41b030ccd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/020F.png differ diff --git a/fonts/TewiFontOutlineAlt/0210.png b/fonts/TewiFontOutlineAlt/0210.png new file mode 100644 index 000000000..ea14b8df6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0210.png differ diff --git a/fonts/TewiFontOutlineAlt/0211.png b/fonts/TewiFontOutlineAlt/0211.png new file mode 100644 index 000000000..10fdde1eb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0211.png differ diff --git a/fonts/TewiFontOutlineAlt/0212.png b/fonts/TewiFontOutlineAlt/0212.png new file mode 100644 index 000000000..5f5c00c71 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0212.png differ diff --git a/fonts/TewiFontOutlineAlt/0213.png b/fonts/TewiFontOutlineAlt/0213.png new file mode 100644 index 000000000..9125aaee2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0213.png differ diff --git a/fonts/TewiFontOutlineAlt/0214.png b/fonts/TewiFontOutlineAlt/0214.png new file mode 100644 index 000000000..ef8aafd20 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0214.png differ diff --git a/fonts/TewiFontOutlineAlt/0215.png b/fonts/TewiFontOutlineAlt/0215.png new file mode 100644 index 000000000..c392aff96 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0215.png differ diff --git a/fonts/TewiFontOutlineAlt/0216.png b/fonts/TewiFontOutlineAlt/0216.png new file mode 100644 index 000000000..bac587bde Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0216.png differ diff --git a/fonts/TewiFontOutlineAlt/0217.png b/fonts/TewiFontOutlineAlt/0217.png new file mode 100644 index 000000000..7f51a1ae2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0217.png differ diff --git a/fonts/TewiFontOutlineAlt/0218.png b/fonts/TewiFontOutlineAlt/0218.png new file mode 100644 index 000000000..5a6c4c73d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0218.png differ diff --git a/fonts/TewiFontOutlineAlt/0219.png b/fonts/TewiFontOutlineAlt/0219.png new file mode 100644 index 000000000..25e3d4253 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0219.png differ diff --git a/fonts/TewiFontOutlineAlt/021A.png b/fonts/TewiFontOutlineAlt/021A.png new file mode 100644 index 000000000..b428e3f46 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/021A.png differ diff --git a/fonts/TewiFontOutlineAlt/021B.png b/fonts/TewiFontOutlineAlt/021B.png new file mode 100644 index 000000000..2dfeede39 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/021B.png differ diff --git a/fonts/TewiFontOutlineAlt/021C.png b/fonts/TewiFontOutlineAlt/021C.png new file mode 100644 index 000000000..a537fb30b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/021C.png differ diff --git a/fonts/TewiFontOutlineAlt/021D.png b/fonts/TewiFontOutlineAlt/021D.png new file mode 100644 index 000000000..cbd2a41c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/021D.png differ diff --git a/fonts/TewiFontOutlineAlt/021E.png b/fonts/TewiFontOutlineAlt/021E.png new file mode 100644 index 000000000..6189ab926 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/021E.png differ diff --git a/fonts/TewiFontOutlineAlt/021F.png b/fonts/TewiFontOutlineAlt/021F.png new file mode 100644 index 000000000..6a5f47775 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/021F.png differ diff --git a/fonts/TewiFontOutlineAlt/0220.png b/fonts/TewiFontOutlineAlt/0220.png new file mode 100644 index 000000000..1459bdac2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0220.png differ diff --git a/fonts/TewiFontOutlineAlt/0221.png b/fonts/TewiFontOutlineAlt/0221.png new file mode 100644 index 000000000..0bceb55ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0221.png differ diff --git a/fonts/TewiFontOutlineAlt/0222.png b/fonts/TewiFontOutlineAlt/0222.png new file mode 100644 index 000000000..31a46096d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0222.png differ diff --git a/fonts/TewiFontOutlineAlt/0223.png b/fonts/TewiFontOutlineAlt/0223.png new file mode 100644 index 000000000..24c0c7ced Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0223.png differ diff --git a/fonts/TewiFontOutlineAlt/0224.png b/fonts/TewiFontOutlineAlt/0224.png new file mode 100644 index 000000000..efc9df5da Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0224.png differ diff --git a/fonts/TewiFontOutlineAlt/0225.png b/fonts/TewiFontOutlineAlt/0225.png new file mode 100644 index 000000000..1044761ac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0225.png differ diff --git a/fonts/TewiFontOutlineAlt/0226.png b/fonts/TewiFontOutlineAlt/0226.png new file mode 100644 index 000000000..ae3a43a48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0226.png differ diff --git a/fonts/TewiFontOutlineAlt/0227.png b/fonts/TewiFontOutlineAlt/0227.png new file mode 100644 index 000000000..8587a65b1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0227.png differ diff --git a/fonts/TewiFontOutlineAlt/0228.png b/fonts/TewiFontOutlineAlt/0228.png new file mode 100644 index 000000000..bcea32ecd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0228.png differ diff --git a/fonts/TewiFontOutlineAlt/0229.png b/fonts/TewiFontOutlineAlt/0229.png new file mode 100644 index 000000000..733052a09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0229.png differ diff --git a/fonts/TewiFontOutlineAlt/022A.png b/fonts/TewiFontOutlineAlt/022A.png new file mode 100644 index 000000000..76e08bc65 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/022A.png differ diff --git a/fonts/TewiFontOutlineAlt/022B.png b/fonts/TewiFontOutlineAlt/022B.png new file mode 100644 index 000000000..ab799b58b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/022B.png differ diff --git a/fonts/TewiFontOutlineAlt/022C.png b/fonts/TewiFontOutlineAlt/022C.png new file mode 100644 index 000000000..e883b4e10 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/022C.png differ diff --git a/fonts/TewiFontOutlineAlt/022D.png b/fonts/TewiFontOutlineAlt/022D.png new file mode 100644 index 000000000..ba4137811 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/022D.png differ diff --git a/fonts/TewiFontOutlineAlt/022E.png b/fonts/TewiFontOutlineAlt/022E.png new file mode 100644 index 000000000..007b92780 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/022E.png differ diff --git a/fonts/TewiFontOutlineAlt/022F.png b/fonts/TewiFontOutlineAlt/022F.png new file mode 100644 index 000000000..77fcef894 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/022F.png differ diff --git a/fonts/TewiFontOutlineAlt/0230.png b/fonts/TewiFontOutlineAlt/0230.png new file mode 100644 index 000000000..ce447ff25 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0230.png differ diff --git a/fonts/TewiFontOutlineAlt/0231.png b/fonts/TewiFontOutlineAlt/0231.png new file mode 100644 index 000000000..6dafe6cdf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0231.png differ diff --git a/fonts/TewiFontOutlineAlt/0232.png b/fonts/TewiFontOutlineAlt/0232.png new file mode 100644 index 000000000..c0413ec64 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0232.png differ diff --git a/fonts/TewiFontOutlineAlt/0233.png b/fonts/TewiFontOutlineAlt/0233.png new file mode 100644 index 000000000..66fe97bf3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0233.png differ diff --git a/fonts/TewiFontOutlineAlt/0234.png b/fonts/TewiFontOutlineAlt/0234.png new file mode 100644 index 000000000..4878d8a38 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0234.png differ diff --git a/fonts/TewiFontOutlineAlt/0235.png b/fonts/TewiFontOutlineAlt/0235.png new file mode 100644 index 000000000..88212fc06 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0235.png differ diff --git a/fonts/TewiFontOutlineAlt/0236.png b/fonts/TewiFontOutlineAlt/0236.png new file mode 100644 index 000000000..4c17f14b1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0236.png differ diff --git a/fonts/TewiFontOutlineAlt/0237.png b/fonts/TewiFontOutlineAlt/0237.png new file mode 100644 index 000000000..56e76e5d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0237.png differ diff --git a/fonts/TewiFontOutlineAlt/0238.png b/fonts/TewiFontOutlineAlt/0238.png new file mode 100644 index 000000000..4af2c057e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0238.png differ diff --git a/fonts/TewiFontOutlineAlt/0239.png b/fonts/TewiFontOutlineAlt/0239.png new file mode 100644 index 000000000..a763a3305 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0239.png differ diff --git a/fonts/TewiFontOutlineAlt/023A.png b/fonts/TewiFontOutlineAlt/023A.png new file mode 100644 index 000000000..b45e939d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/023A.png differ diff --git a/fonts/TewiFontOutlineAlt/023B.png b/fonts/TewiFontOutlineAlt/023B.png new file mode 100644 index 000000000..c6102d080 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/023B.png differ diff --git a/fonts/TewiFontOutlineAlt/023C.png b/fonts/TewiFontOutlineAlt/023C.png new file mode 100644 index 000000000..4c22b5413 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/023C.png differ diff --git a/fonts/TewiFontOutlineAlt/023D.png b/fonts/TewiFontOutlineAlt/023D.png new file mode 100644 index 000000000..fcfddf7b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/023D.png differ diff --git a/fonts/TewiFontOutlineAlt/023E.png b/fonts/TewiFontOutlineAlt/023E.png new file mode 100644 index 000000000..9caac2286 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/023E.png differ diff --git a/fonts/TewiFontOutlineAlt/023F.png b/fonts/TewiFontOutlineAlt/023F.png new file mode 100644 index 000000000..cfcca9166 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/023F.png differ diff --git a/fonts/TewiFontOutlineAlt/0240.png b/fonts/TewiFontOutlineAlt/0240.png new file mode 100644 index 000000000..852eefff8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0240.png differ diff --git a/fonts/TewiFontOutlineAlt/0241.png b/fonts/TewiFontOutlineAlt/0241.png new file mode 100644 index 000000000..98cf85329 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0241.png differ diff --git a/fonts/TewiFontOutlineAlt/0242.png b/fonts/TewiFontOutlineAlt/0242.png new file mode 100644 index 000000000..c5e998b52 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0242.png differ diff --git a/fonts/TewiFontOutlineAlt/0243.png b/fonts/TewiFontOutlineAlt/0243.png new file mode 100644 index 000000000..a4485a602 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0243.png differ diff --git a/fonts/TewiFontOutlineAlt/0244.png b/fonts/TewiFontOutlineAlt/0244.png new file mode 100644 index 000000000..186045d9c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0244.png differ diff --git a/fonts/TewiFontOutlineAlt/0245.png b/fonts/TewiFontOutlineAlt/0245.png new file mode 100644 index 000000000..38aabb530 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0245.png differ diff --git a/fonts/TewiFontOutlineAlt/0246.png b/fonts/TewiFontOutlineAlt/0246.png new file mode 100644 index 000000000..8f226a473 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0246.png differ diff --git a/fonts/TewiFontOutlineAlt/0247.png b/fonts/TewiFontOutlineAlt/0247.png new file mode 100644 index 000000000..d7b32d879 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0247.png differ diff --git a/fonts/TewiFontOutlineAlt/0248.png b/fonts/TewiFontOutlineAlt/0248.png new file mode 100644 index 000000000..8248782ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0248.png differ diff --git a/fonts/TewiFontOutlineAlt/0249.png b/fonts/TewiFontOutlineAlt/0249.png new file mode 100644 index 000000000..6b6bd0d1a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0249.png differ diff --git a/fonts/TewiFontOutlineAlt/024A.png b/fonts/TewiFontOutlineAlt/024A.png new file mode 100644 index 000000000..fef27728b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/024A.png differ diff --git a/fonts/TewiFontOutlineAlt/024B.png b/fonts/TewiFontOutlineAlt/024B.png new file mode 100644 index 000000000..20868a478 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/024B.png differ diff --git a/fonts/TewiFontOutlineAlt/024C.png b/fonts/TewiFontOutlineAlt/024C.png new file mode 100644 index 000000000..0231856c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/024C.png differ diff --git a/fonts/TewiFontOutlineAlt/024D.png b/fonts/TewiFontOutlineAlt/024D.png new file mode 100644 index 000000000..d66e0404e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/024D.png differ diff --git a/fonts/TewiFontOutlineAlt/024E.png b/fonts/TewiFontOutlineAlt/024E.png new file mode 100644 index 000000000..f65dad7fc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/024E.png differ diff --git a/fonts/TewiFontOutlineAlt/024F.png b/fonts/TewiFontOutlineAlt/024F.png new file mode 100644 index 000000000..8d918f3bc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/024F.png differ diff --git a/fonts/TewiFontOutlineAlt/0250.png b/fonts/TewiFontOutlineAlt/0250.png new file mode 100644 index 000000000..2870c905f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0250.png differ diff --git a/fonts/TewiFontOutlineAlt/0251.png b/fonts/TewiFontOutlineAlt/0251.png new file mode 100644 index 000000000..59accf4a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0251.png differ diff --git a/fonts/TewiFontOutlineAlt/0252.png b/fonts/TewiFontOutlineAlt/0252.png new file mode 100644 index 000000000..62a19e427 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0252.png differ diff --git a/fonts/TewiFontOutlineAlt/0253.png b/fonts/TewiFontOutlineAlt/0253.png new file mode 100644 index 000000000..0555b5b50 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0253.png differ diff --git a/fonts/TewiFontOutlineAlt/0254.png b/fonts/TewiFontOutlineAlt/0254.png new file mode 100644 index 000000000..5e7e0c06c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0254.png differ diff --git a/fonts/TewiFontOutlineAlt/0255.png b/fonts/TewiFontOutlineAlt/0255.png new file mode 100644 index 000000000..326414461 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0255.png differ diff --git a/fonts/TewiFontOutlineAlt/0256.png b/fonts/TewiFontOutlineAlt/0256.png new file mode 100644 index 000000000..94630a137 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0256.png differ diff --git a/fonts/TewiFontOutlineAlt/0257.png b/fonts/TewiFontOutlineAlt/0257.png new file mode 100644 index 000000000..d132eff6c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0257.png differ diff --git a/fonts/TewiFontOutlineAlt/0258.png b/fonts/TewiFontOutlineAlt/0258.png new file mode 100644 index 000000000..d36760f15 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0258.png differ diff --git a/fonts/TewiFontOutlineAlt/0259.png b/fonts/TewiFontOutlineAlt/0259.png new file mode 100644 index 000000000..30b819171 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0259.png differ diff --git a/fonts/TewiFontOutlineAlt/025A.png b/fonts/TewiFontOutlineAlt/025A.png new file mode 100644 index 000000000..59159e1d3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/025A.png differ diff --git a/fonts/TewiFontOutlineAlt/025B.png b/fonts/TewiFontOutlineAlt/025B.png new file mode 100644 index 000000000..4c33f6a06 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/025B.png differ diff --git a/fonts/TewiFontOutlineAlt/025C.png b/fonts/TewiFontOutlineAlt/025C.png new file mode 100644 index 000000000..cb0d68b45 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/025C.png differ diff --git a/fonts/TewiFontOutlineAlt/025D.png b/fonts/TewiFontOutlineAlt/025D.png new file mode 100644 index 000000000..099c573a5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/025D.png differ diff --git a/fonts/TewiFontOutlineAlt/025E.png b/fonts/TewiFontOutlineAlt/025E.png new file mode 100644 index 000000000..f13a01ae8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/025E.png differ diff --git a/fonts/TewiFontOutlineAlt/025F.png b/fonts/TewiFontOutlineAlt/025F.png new file mode 100644 index 000000000..825e5cc91 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/025F.png differ diff --git a/fonts/TewiFontOutlineAlt/0260.png b/fonts/TewiFontOutlineAlt/0260.png new file mode 100644 index 000000000..71f2c3237 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0260.png differ diff --git a/fonts/TewiFontOutlineAlt/0261.png b/fonts/TewiFontOutlineAlt/0261.png new file mode 100644 index 000000000..ddf0ffdf2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0261.png differ diff --git a/fonts/TewiFontOutlineAlt/0262.png b/fonts/TewiFontOutlineAlt/0262.png new file mode 100644 index 000000000..7b5073a59 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0262.png differ diff --git a/fonts/TewiFontOutlineAlt/0263.png b/fonts/TewiFontOutlineAlt/0263.png new file mode 100644 index 000000000..68722a238 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0263.png differ diff --git a/fonts/TewiFontOutlineAlt/0264.png b/fonts/TewiFontOutlineAlt/0264.png new file mode 100644 index 000000000..cc4858977 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0264.png differ diff --git a/fonts/TewiFontOutlineAlt/0265.png b/fonts/TewiFontOutlineAlt/0265.png new file mode 100644 index 000000000..01e1171e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0265.png differ diff --git a/fonts/TewiFontOutlineAlt/0266.png b/fonts/TewiFontOutlineAlt/0266.png new file mode 100644 index 000000000..7e1413f53 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0266.png differ diff --git a/fonts/TewiFontOutlineAlt/0267.png b/fonts/TewiFontOutlineAlt/0267.png new file mode 100644 index 000000000..e9cc31a53 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0267.png differ diff --git a/fonts/TewiFontOutlineAlt/0268.png b/fonts/TewiFontOutlineAlt/0268.png new file mode 100644 index 000000000..cb4aa540e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0268.png differ diff --git a/fonts/TewiFontOutlineAlt/0269.png b/fonts/TewiFontOutlineAlt/0269.png new file mode 100644 index 000000000..9486f96e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0269.png differ diff --git a/fonts/TewiFontOutlineAlt/026A.png b/fonts/TewiFontOutlineAlt/026A.png new file mode 100644 index 000000000..8cf64de4c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/026A.png differ diff --git a/fonts/TewiFontOutlineAlt/026B.png b/fonts/TewiFontOutlineAlt/026B.png new file mode 100644 index 000000000..102d037cc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/026B.png differ diff --git a/fonts/TewiFontOutlineAlt/026C.png b/fonts/TewiFontOutlineAlt/026C.png new file mode 100644 index 000000000..e6ab2b7bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/026C.png differ diff --git a/fonts/TewiFontOutlineAlt/026D.png b/fonts/TewiFontOutlineAlt/026D.png new file mode 100644 index 000000000..a83f03631 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/026D.png differ diff --git a/fonts/TewiFontOutlineAlt/026E.png b/fonts/TewiFontOutlineAlt/026E.png new file mode 100644 index 000000000..ae364e84e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/026E.png differ diff --git a/fonts/TewiFontOutlineAlt/026F.png b/fonts/TewiFontOutlineAlt/026F.png new file mode 100644 index 000000000..35c46fb90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/026F.png differ diff --git a/fonts/TewiFontOutlineAlt/0270.png b/fonts/TewiFontOutlineAlt/0270.png new file mode 100644 index 000000000..177cd7aac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0270.png differ diff --git a/fonts/TewiFontOutlineAlt/0271.png b/fonts/TewiFontOutlineAlt/0271.png new file mode 100644 index 000000000..5a02ab886 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0271.png differ diff --git a/fonts/TewiFontOutlineAlt/0272.png b/fonts/TewiFontOutlineAlt/0272.png new file mode 100644 index 000000000..a67e252b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0272.png differ diff --git a/fonts/TewiFontOutlineAlt/0273.png b/fonts/TewiFontOutlineAlt/0273.png new file mode 100644 index 000000000..6e285c2f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0273.png differ diff --git a/fonts/TewiFontOutlineAlt/0274.png b/fonts/TewiFontOutlineAlt/0274.png new file mode 100644 index 000000000..9bc7f6d61 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0274.png differ diff --git a/fonts/TewiFontOutlineAlt/0275.png b/fonts/TewiFontOutlineAlt/0275.png new file mode 100644 index 000000000..5bd3083cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0275.png differ diff --git a/fonts/TewiFontOutlineAlt/0276.png b/fonts/TewiFontOutlineAlt/0276.png new file mode 100644 index 000000000..1937e0835 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0276.png differ diff --git a/fonts/TewiFontOutlineAlt/0277.png b/fonts/TewiFontOutlineAlt/0277.png new file mode 100644 index 000000000..20e41781a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0277.png differ diff --git a/fonts/TewiFontOutlineAlt/0278.png b/fonts/TewiFontOutlineAlt/0278.png new file mode 100644 index 000000000..49c430348 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0278.png differ diff --git a/fonts/TewiFontOutlineAlt/0279.png b/fonts/TewiFontOutlineAlt/0279.png new file mode 100644 index 000000000..6cfd147b0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0279.png differ diff --git a/fonts/TewiFontOutlineAlt/027A.png b/fonts/TewiFontOutlineAlt/027A.png new file mode 100644 index 000000000..99911b4ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/027A.png differ diff --git a/fonts/TewiFontOutlineAlt/027B.png b/fonts/TewiFontOutlineAlt/027B.png new file mode 100644 index 000000000..2cfe85a11 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/027B.png differ diff --git a/fonts/TewiFontOutlineAlt/027C.png b/fonts/TewiFontOutlineAlt/027C.png new file mode 100644 index 000000000..f2c7fd9bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/027C.png differ diff --git a/fonts/TewiFontOutlineAlt/027D.png b/fonts/TewiFontOutlineAlt/027D.png new file mode 100644 index 000000000..ee0594306 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/027D.png differ diff --git a/fonts/TewiFontOutlineAlt/027E.png b/fonts/TewiFontOutlineAlt/027E.png new file mode 100644 index 000000000..2e0e9694f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/027E.png differ diff --git a/fonts/TewiFontOutlineAlt/027F.png b/fonts/TewiFontOutlineAlt/027F.png new file mode 100644 index 000000000..eab60f6f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/027F.png differ diff --git a/fonts/TewiFontOutlineAlt/0280.png b/fonts/TewiFontOutlineAlt/0280.png new file mode 100644 index 000000000..ba232bc78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0280.png differ diff --git a/fonts/TewiFontOutlineAlt/0281.png b/fonts/TewiFontOutlineAlt/0281.png new file mode 100644 index 000000000..31f7148e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0281.png differ diff --git a/fonts/TewiFontOutlineAlt/0282.png b/fonts/TewiFontOutlineAlt/0282.png new file mode 100644 index 000000000..e3cc48918 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0282.png differ diff --git a/fonts/TewiFontOutlineAlt/0283.png b/fonts/TewiFontOutlineAlt/0283.png new file mode 100644 index 000000000..c1efcae65 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0283.png differ diff --git a/fonts/TewiFontOutlineAlt/0284.png b/fonts/TewiFontOutlineAlt/0284.png new file mode 100644 index 000000000..678539c44 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0284.png differ diff --git a/fonts/TewiFontOutlineAlt/0285.png b/fonts/TewiFontOutlineAlt/0285.png new file mode 100644 index 000000000..e573896c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0285.png differ diff --git a/fonts/TewiFontOutlineAlt/0286.png b/fonts/TewiFontOutlineAlt/0286.png new file mode 100644 index 000000000..ab64dc5b7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0286.png differ diff --git a/fonts/TewiFontOutlineAlt/0287.png b/fonts/TewiFontOutlineAlt/0287.png new file mode 100644 index 000000000..c43982b42 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0287.png differ diff --git a/fonts/TewiFontOutlineAlt/0288.png b/fonts/TewiFontOutlineAlt/0288.png new file mode 100644 index 000000000..a3535b122 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0288.png differ diff --git a/fonts/TewiFontOutlineAlt/0289.png b/fonts/TewiFontOutlineAlt/0289.png new file mode 100644 index 000000000..9171a1d33 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0289.png differ diff --git a/fonts/TewiFontOutlineAlt/028A.png b/fonts/TewiFontOutlineAlt/028A.png new file mode 100644 index 000000000..94ace6390 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/028A.png differ diff --git a/fonts/TewiFontOutlineAlt/028B.png b/fonts/TewiFontOutlineAlt/028B.png new file mode 100644 index 000000000..818df1b68 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/028B.png differ diff --git a/fonts/TewiFontOutlineAlt/028C.png b/fonts/TewiFontOutlineAlt/028C.png new file mode 100644 index 000000000..46cabd824 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/028C.png differ diff --git a/fonts/TewiFontOutlineAlt/028D.png b/fonts/TewiFontOutlineAlt/028D.png new file mode 100644 index 000000000..8014f3f69 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/028D.png differ diff --git a/fonts/TewiFontOutlineAlt/028E.png b/fonts/TewiFontOutlineAlt/028E.png new file mode 100644 index 000000000..0b4133130 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/028E.png differ diff --git a/fonts/TewiFontOutlineAlt/028F.png b/fonts/TewiFontOutlineAlt/028F.png new file mode 100644 index 000000000..689aa4257 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/028F.png differ diff --git a/fonts/TewiFontOutlineAlt/0290.png b/fonts/TewiFontOutlineAlt/0290.png new file mode 100644 index 000000000..a9ed88af7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0290.png differ diff --git a/fonts/TewiFontOutlineAlt/0291.png b/fonts/TewiFontOutlineAlt/0291.png new file mode 100644 index 000000000..fbfeea883 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0291.png differ diff --git a/fonts/TewiFontOutlineAlt/0292.png b/fonts/TewiFontOutlineAlt/0292.png new file mode 100644 index 000000000..c9ac418df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0292.png differ diff --git a/fonts/TewiFontOutlineAlt/0293.png b/fonts/TewiFontOutlineAlt/0293.png new file mode 100644 index 000000000..0a0036791 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0293.png differ diff --git a/fonts/TewiFontOutlineAlt/0294.png b/fonts/TewiFontOutlineAlt/0294.png new file mode 100644 index 000000000..98cf85329 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0294.png differ diff --git a/fonts/TewiFontOutlineAlt/0295.png b/fonts/TewiFontOutlineAlt/0295.png new file mode 100644 index 000000000..0e7b4d16c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0295.png differ diff --git a/fonts/TewiFontOutlineAlt/0296.png b/fonts/TewiFontOutlineAlt/0296.png new file mode 100644 index 000000000..0aa7dd1f0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0296.png differ diff --git a/fonts/TewiFontOutlineAlt/0297.png b/fonts/TewiFontOutlineAlt/0297.png new file mode 100644 index 000000000..cc433369a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0297.png differ diff --git a/fonts/TewiFontOutlineAlt/0298.png b/fonts/TewiFontOutlineAlt/0298.png new file mode 100644 index 000000000..a106b7327 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0298.png differ diff --git a/fonts/TewiFontOutlineAlt/0299.png b/fonts/TewiFontOutlineAlt/0299.png new file mode 100644 index 000000000..99c5065c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0299.png differ diff --git a/fonts/TewiFontOutlineAlt/029A.png b/fonts/TewiFontOutlineAlt/029A.png new file mode 100644 index 000000000..5e0a00ba4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/029A.png differ diff --git a/fonts/TewiFontOutlineAlt/029B.png b/fonts/TewiFontOutlineAlt/029B.png new file mode 100644 index 000000000..6c10c6c5f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/029B.png differ diff --git a/fonts/TewiFontOutlineAlt/029C.png b/fonts/TewiFontOutlineAlt/029C.png new file mode 100644 index 000000000..7644f0605 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/029C.png differ diff --git a/fonts/TewiFontOutlineAlt/029D.png b/fonts/TewiFontOutlineAlt/029D.png new file mode 100644 index 000000000..c0f0325f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/029D.png differ diff --git a/fonts/TewiFontOutlineAlt/029E.png b/fonts/TewiFontOutlineAlt/029E.png new file mode 100644 index 000000000..b3c93178b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/029E.png differ diff --git a/fonts/TewiFontOutlineAlt/029F.png b/fonts/TewiFontOutlineAlt/029F.png new file mode 100644 index 000000000..0db2c4c45 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/029F.png differ diff --git a/fonts/TewiFontOutlineAlt/02A0.png b/fonts/TewiFontOutlineAlt/02A0.png new file mode 100644 index 000000000..e123ee8cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A0.png differ diff --git a/fonts/TewiFontOutlineAlt/02A1.png b/fonts/TewiFontOutlineAlt/02A1.png new file mode 100644 index 000000000..c6fe08fc2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A1.png differ diff --git a/fonts/TewiFontOutlineAlt/02A2.png b/fonts/TewiFontOutlineAlt/02A2.png new file mode 100644 index 000000000..895198516 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A2.png differ diff --git a/fonts/TewiFontOutlineAlt/02A3.png b/fonts/TewiFontOutlineAlt/02A3.png new file mode 100644 index 000000000..f16952eac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A3.png differ diff --git a/fonts/TewiFontOutlineAlt/02A4.png b/fonts/TewiFontOutlineAlt/02A4.png new file mode 100644 index 000000000..e32e0e8dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A4.png differ diff --git a/fonts/TewiFontOutlineAlt/02A5.png b/fonts/TewiFontOutlineAlt/02A5.png new file mode 100644 index 000000000..3103ed47e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A5.png differ diff --git a/fonts/TewiFontOutlineAlt/02A6.png b/fonts/TewiFontOutlineAlt/02A6.png new file mode 100644 index 000000000..9b7a7a4b6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A6.png differ diff --git a/fonts/TewiFontOutlineAlt/02A7.png b/fonts/TewiFontOutlineAlt/02A7.png new file mode 100644 index 000000000..cf3321f4b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A7.png differ diff --git a/fonts/TewiFontOutlineAlt/02A8.png b/fonts/TewiFontOutlineAlt/02A8.png new file mode 100644 index 000000000..d9ca37c8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A8.png differ diff --git a/fonts/TewiFontOutlineAlt/02A9.png b/fonts/TewiFontOutlineAlt/02A9.png new file mode 100644 index 000000000..818ed6d2f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02A9.png differ diff --git a/fonts/TewiFontOutlineAlt/02AA.png b/fonts/TewiFontOutlineAlt/02AA.png new file mode 100644 index 000000000..8a4385630 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02AA.png differ diff --git a/fonts/TewiFontOutlineAlt/02AB.png b/fonts/TewiFontOutlineAlt/02AB.png new file mode 100644 index 000000000..e75d35919 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02AB.png differ diff --git a/fonts/TewiFontOutlineAlt/02AC.png b/fonts/TewiFontOutlineAlt/02AC.png new file mode 100644 index 000000000..c1579c7f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02AC.png differ diff --git a/fonts/TewiFontOutlineAlt/02AD.png b/fonts/TewiFontOutlineAlt/02AD.png new file mode 100644 index 000000000..29af187b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02AD.png differ diff --git a/fonts/TewiFontOutlineAlt/02AE.png b/fonts/TewiFontOutlineAlt/02AE.png new file mode 100644 index 000000000..bdd762365 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02AE.png differ diff --git a/fonts/TewiFontOutlineAlt/02AF.png b/fonts/TewiFontOutlineAlt/02AF.png new file mode 100644 index 000000000..16736056c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02AF.png differ diff --git a/fonts/TewiFontOutlineAlt/02B0.png b/fonts/TewiFontOutlineAlt/02B0.png new file mode 100644 index 000000000..88f328937 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B0.png differ diff --git a/fonts/TewiFontOutlineAlt/02B1.png b/fonts/TewiFontOutlineAlt/02B1.png new file mode 100644 index 000000000..2c64fea0f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B1.png differ diff --git a/fonts/TewiFontOutlineAlt/02B2.png b/fonts/TewiFontOutlineAlt/02B2.png new file mode 100644 index 000000000..4676b98fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B2.png differ diff --git a/fonts/TewiFontOutlineAlt/02B3.png b/fonts/TewiFontOutlineAlt/02B3.png new file mode 100644 index 000000000..8ed833097 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B3.png differ diff --git a/fonts/TewiFontOutlineAlt/02B4.png b/fonts/TewiFontOutlineAlt/02B4.png new file mode 100644 index 000000000..de1539784 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B4.png differ diff --git a/fonts/TewiFontOutlineAlt/02B5.png b/fonts/TewiFontOutlineAlt/02B5.png new file mode 100644 index 000000000..9a8ff51ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B5.png differ diff --git a/fonts/TewiFontOutlineAlt/02B6.png b/fonts/TewiFontOutlineAlt/02B6.png new file mode 100644 index 000000000..01ec00878 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B6.png differ diff --git a/fonts/TewiFontOutlineAlt/02B7.png b/fonts/TewiFontOutlineAlt/02B7.png new file mode 100644 index 000000000..1dedbda5b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B7.png differ diff --git a/fonts/TewiFontOutlineAlt/02B8.png b/fonts/TewiFontOutlineAlt/02B8.png new file mode 100644 index 000000000..eefd38e96 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B8.png differ diff --git a/fonts/TewiFontOutlineAlt/02B9.png b/fonts/TewiFontOutlineAlt/02B9.png new file mode 100644 index 000000000..a02a6d977 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02B9.png differ diff --git a/fonts/TewiFontOutlineAlt/02BA.png b/fonts/TewiFontOutlineAlt/02BA.png new file mode 100644 index 000000000..7762f3f86 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02BA.png differ diff --git a/fonts/TewiFontOutlineAlt/02BB.png b/fonts/TewiFontOutlineAlt/02BB.png new file mode 100644 index 000000000..d0f104318 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02BB.png differ diff --git a/fonts/TewiFontOutlineAlt/02BC.png b/fonts/TewiFontOutlineAlt/02BC.png new file mode 100644 index 000000000..1172e6ad9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02BC.png differ diff --git a/fonts/TewiFontOutlineAlt/02BD.png b/fonts/TewiFontOutlineAlt/02BD.png new file mode 100644 index 000000000..c3fdac3cc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02BD.png differ diff --git a/fonts/TewiFontOutlineAlt/02C2.png b/fonts/TewiFontOutlineAlt/02C2.png new file mode 100644 index 000000000..5e3af9107 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02C2.png differ diff --git a/fonts/TewiFontOutlineAlt/02C3.png b/fonts/TewiFontOutlineAlt/02C3.png new file mode 100644 index 000000000..8f131ee42 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02C3.png differ diff --git a/fonts/TewiFontOutlineAlt/02C4.png b/fonts/TewiFontOutlineAlt/02C4.png new file mode 100644 index 000000000..60b59685f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02C4.png differ diff --git a/fonts/TewiFontOutlineAlt/02C5.png b/fonts/TewiFontOutlineAlt/02C5.png new file mode 100644 index 000000000..c1009584f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02C5.png differ diff --git a/fonts/TewiFontOutlineAlt/02C6.png b/fonts/TewiFontOutlineAlt/02C6.png new file mode 100644 index 000000000..d452e75db Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02C6.png differ diff --git a/fonts/TewiFontOutlineAlt/02C7.png b/fonts/TewiFontOutlineAlt/02C7.png new file mode 100644 index 000000000..58fafc8fc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02C7.png differ diff --git a/fonts/TewiFontOutlineAlt/02C8.png b/fonts/TewiFontOutlineAlt/02C8.png new file mode 100644 index 000000000..47b25daf6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02C8.png differ diff --git a/fonts/TewiFontOutlineAlt/02C9.png b/fonts/TewiFontOutlineAlt/02C9.png new file mode 100644 index 000000000..de878b309 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02C9.png differ diff --git a/fonts/TewiFontOutlineAlt/02CA.png b/fonts/TewiFontOutlineAlt/02CA.png new file mode 100644 index 000000000..0bf5fccce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02CA.png differ diff --git a/fonts/TewiFontOutlineAlt/02CB.png b/fonts/TewiFontOutlineAlt/02CB.png new file mode 100644 index 000000000..48b829a1d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02CB.png differ diff --git a/fonts/TewiFontOutlineAlt/02D0.png b/fonts/TewiFontOutlineAlt/02D0.png new file mode 100644 index 000000000..fa4d3b433 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02D0.png differ diff --git a/fonts/TewiFontOutlineAlt/02D1.png b/fonts/TewiFontOutlineAlt/02D1.png new file mode 100644 index 000000000..9ecbe9f34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02D1.png differ diff --git a/fonts/TewiFontOutlineAlt/02D8.png b/fonts/TewiFontOutlineAlt/02D8.png new file mode 100644 index 000000000..ff8b45468 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02D8.png differ diff --git a/fonts/TewiFontOutlineAlt/02D9.png b/fonts/TewiFontOutlineAlt/02D9.png new file mode 100644 index 000000000..9bf90aec5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02D9.png differ diff --git a/fonts/TewiFontOutlineAlt/02DA.png b/fonts/TewiFontOutlineAlt/02DA.png new file mode 100644 index 000000000..b90383457 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02DA.png differ diff --git a/fonts/TewiFontOutlineAlt/02DB.png b/fonts/TewiFontOutlineAlt/02DB.png new file mode 100644 index 000000000..81c450651 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02DB.png differ diff --git a/fonts/TewiFontOutlineAlt/02DC.png b/fonts/TewiFontOutlineAlt/02DC.png new file mode 100644 index 000000000..488f253f8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02DC.png differ diff --git a/fonts/TewiFontOutlineAlt/02DD.png b/fonts/TewiFontOutlineAlt/02DD.png new file mode 100644 index 000000000..2490770f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02DD.png differ diff --git a/fonts/TewiFontOutlineAlt/02DE.png b/fonts/TewiFontOutlineAlt/02DE.png new file mode 100644 index 000000000..8b4873b91 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02DE.png differ diff --git a/fonts/TewiFontOutlineAlt/02E0.png b/fonts/TewiFontOutlineAlt/02E0.png new file mode 100644 index 000000000..26971efbc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02E0.png differ diff --git a/fonts/TewiFontOutlineAlt/02E4.png b/fonts/TewiFontOutlineAlt/02E4.png new file mode 100644 index 000000000..71c79e111 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02E4.png differ diff --git a/fonts/TewiFontOutlineAlt/02EE.png b/fonts/TewiFontOutlineAlt/02EE.png new file mode 100644 index 000000000..8bc973893 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/02EE.png differ diff --git a/fonts/TewiFontOutlineAlt/0300.png b/fonts/TewiFontOutlineAlt/0300.png new file mode 100644 index 000000000..1ae98d96f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0300.png differ diff --git a/fonts/TewiFontOutlineAlt/0301.png b/fonts/TewiFontOutlineAlt/0301.png new file mode 100644 index 000000000..d37d992f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0301.png differ diff --git a/fonts/TewiFontOutlineAlt/0302.png b/fonts/TewiFontOutlineAlt/0302.png new file mode 100644 index 000000000..ed8139dc8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0302.png differ diff --git a/fonts/TewiFontOutlineAlt/0303.png b/fonts/TewiFontOutlineAlt/0303.png new file mode 100644 index 000000000..488f253f8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0303.png differ diff --git a/fonts/TewiFontOutlineAlt/0304.png b/fonts/TewiFontOutlineAlt/0304.png new file mode 100644 index 000000000..2cda2b097 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0304.png differ diff --git a/fonts/TewiFontOutlineAlt/0305.png b/fonts/TewiFontOutlineAlt/0305.png new file mode 100644 index 000000000..9560fc4e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0305.png differ diff --git a/fonts/TewiFontOutlineAlt/0306.png b/fonts/TewiFontOutlineAlt/0306.png new file mode 100644 index 000000000..a4280d470 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0306.png differ diff --git a/fonts/TewiFontOutlineAlt/0307.png b/fonts/TewiFontOutlineAlt/0307.png new file mode 100644 index 000000000..04bacdbba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0307.png differ diff --git a/fonts/TewiFontOutlineAlt/0308.png b/fonts/TewiFontOutlineAlt/0308.png new file mode 100644 index 000000000..12402e3af Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0308.png differ diff --git a/fonts/TewiFontOutlineAlt/0309.png b/fonts/TewiFontOutlineAlt/0309.png new file mode 100644 index 000000000..1f7b22454 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0309.png differ diff --git a/fonts/TewiFontOutlineAlt/030A.png b/fonts/TewiFontOutlineAlt/030A.png new file mode 100644 index 000000000..b90383457 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/030A.png differ diff --git a/fonts/TewiFontOutlineAlt/030B.png b/fonts/TewiFontOutlineAlt/030B.png new file mode 100644 index 000000000..6bea87094 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/030B.png differ diff --git a/fonts/TewiFontOutlineAlt/030C.png b/fonts/TewiFontOutlineAlt/030C.png new file mode 100644 index 000000000..60bad179b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/030C.png differ diff --git a/fonts/TewiFontOutlineAlt/030D.png b/fonts/TewiFontOutlineAlt/030D.png new file mode 100644 index 000000000..b50312287 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/030D.png differ diff --git a/fonts/TewiFontOutlineAlt/030E.png b/fonts/TewiFontOutlineAlt/030E.png new file mode 100644 index 000000000..c3a853102 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/030E.png differ diff --git a/fonts/TewiFontOutlineAlt/0310.png b/fonts/TewiFontOutlineAlt/0310.png new file mode 100644 index 000000000..941421491 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0310.png differ diff --git a/fonts/TewiFontOutlineAlt/0311.png b/fonts/TewiFontOutlineAlt/0311.png new file mode 100644 index 000000000..52679d2ac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0311.png differ diff --git a/fonts/TewiFontOutlineAlt/0312.png b/fonts/TewiFontOutlineAlt/0312.png new file mode 100644 index 000000000..d987bfd69 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0312.png differ diff --git a/fonts/TewiFontOutlineAlt/0313.png b/fonts/TewiFontOutlineAlt/0313.png new file mode 100644 index 000000000..0675d518f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0313.png differ diff --git a/fonts/TewiFontOutlineAlt/0314.png b/fonts/TewiFontOutlineAlt/0314.png new file mode 100644 index 000000000..ad9d6f818 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0314.png differ diff --git a/fonts/TewiFontOutlineAlt/0315.png b/fonts/TewiFontOutlineAlt/0315.png new file mode 100644 index 000000000..0675d518f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0315.png differ diff --git a/fonts/TewiFontOutlineAlt/031A.png b/fonts/TewiFontOutlineAlt/031A.png new file mode 100644 index 000000000..897ee9842 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/031A.png differ diff --git a/fonts/TewiFontOutlineAlt/031C.png b/fonts/TewiFontOutlineAlt/031C.png new file mode 100644 index 000000000..01f41061d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/031C.png differ diff --git a/fonts/TewiFontOutlineAlt/031F.png b/fonts/TewiFontOutlineAlt/031F.png new file mode 100644 index 000000000..63acfc9ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/031F.png differ diff --git a/fonts/TewiFontOutlineAlt/0320.png b/fonts/TewiFontOutlineAlt/0320.png new file mode 100644 index 000000000..2d2179c6e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0320.png differ diff --git a/fonts/TewiFontOutlineAlt/0324.png b/fonts/TewiFontOutlineAlt/0324.png new file mode 100644 index 000000000..6055636c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0324.png differ diff --git a/fonts/TewiFontOutlineAlt/0325.png b/fonts/TewiFontOutlineAlt/0325.png new file mode 100644 index 000000000..a467a26d4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0325.png differ diff --git a/fonts/TewiFontOutlineAlt/032A.png b/fonts/TewiFontOutlineAlt/032A.png new file mode 100644 index 000000000..f7aef2998 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/032A.png differ diff --git a/fonts/TewiFontOutlineAlt/032C.png b/fonts/TewiFontOutlineAlt/032C.png new file mode 100644 index 000000000..89eb7b5f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/032C.png differ diff --git a/fonts/TewiFontOutlineAlt/0330.png b/fonts/TewiFontOutlineAlt/0330.png new file mode 100644 index 000000000..0a97750bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0330.png differ diff --git a/fonts/TewiFontOutlineAlt/0339.png b/fonts/TewiFontOutlineAlt/0339.png new file mode 100644 index 000000000..25e110889 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0339.png differ diff --git a/fonts/TewiFontOutlineAlt/033A.png b/fonts/TewiFontOutlineAlt/033A.png new file mode 100644 index 000000000..0fdbdf9e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/033A.png differ diff --git a/fonts/TewiFontOutlineAlt/033B.png b/fonts/TewiFontOutlineAlt/033B.png new file mode 100644 index 000000000..30e9a6add Binary files /dev/null and b/fonts/TewiFontOutlineAlt/033B.png differ diff --git a/fonts/TewiFontOutlineAlt/033C.png b/fonts/TewiFontOutlineAlt/033C.png new file mode 100644 index 000000000..099020d21 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/033C.png differ diff --git a/fonts/TewiFontOutlineAlt/0343.png b/fonts/TewiFontOutlineAlt/0343.png new file mode 100644 index 000000000..20e733270 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0343.png differ diff --git a/fonts/TewiFontOutlineAlt/0344.png b/fonts/TewiFontOutlineAlt/0344.png new file mode 100644 index 000000000..9ecbe9f34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0344.png differ diff --git a/fonts/TewiFontOutlineAlt/035C.png b/fonts/TewiFontOutlineAlt/035C.png new file mode 100644 index 000000000..bdcf4a847 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/035C.png differ diff --git a/fonts/TewiFontOutlineAlt/0361.png b/fonts/TewiFontOutlineAlt/0361.png new file mode 100644 index 000000000..52679d2ac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0361.png differ diff --git a/fonts/TewiFontOutlineAlt/0370.png b/fonts/TewiFontOutlineAlt/0370.png new file mode 100644 index 000000000..dce7f29d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0370.png differ diff --git a/fonts/TewiFontOutlineAlt/0371.png b/fonts/TewiFontOutlineAlt/0371.png new file mode 100644 index 000000000..86c2f3829 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0371.png differ diff --git a/fonts/TewiFontOutlineAlt/0372.png b/fonts/TewiFontOutlineAlt/0372.png new file mode 100644 index 000000000..f3fda2f88 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0372.png differ diff --git a/fonts/TewiFontOutlineAlt/0373.png b/fonts/TewiFontOutlineAlt/0373.png new file mode 100644 index 000000000..ce4596d65 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0373.png differ diff --git a/fonts/TewiFontOutlineAlt/0374.png b/fonts/TewiFontOutlineAlt/0374.png new file mode 100644 index 000000000..2bad1a05e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0374.png differ diff --git a/fonts/TewiFontOutlineAlt/0375.png b/fonts/TewiFontOutlineAlt/0375.png new file mode 100644 index 000000000..0841017cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0375.png differ diff --git a/fonts/TewiFontOutlineAlt/0376.png b/fonts/TewiFontOutlineAlt/0376.png new file mode 100644 index 000000000..f07ff83e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0376.png differ diff --git a/fonts/TewiFontOutlineAlt/0377.png b/fonts/TewiFontOutlineAlt/0377.png new file mode 100644 index 000000000..bfd0ab22c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0377.png differ diff --git a/fonts/TewiFontOutlineAlt/037A.png b/fonts/TewiFontOutlineAlt/037A.png new file mode 100644 index 000000000..c0f0ad529 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/037A.png differ diff --git a/fonts/TewiFontOutlineAlt/037B.png b/fonts/TewiFontOutlineAlt/037B.png new file mode 100644 index 000000000..5e7e0c06c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/037B.png differ diff --git a/fonts/TewiFontOutlineAlt/037C.png b/fonts/TewiFontOutlineAlt/037C.png new file mode 100644 index 000000000..2b9badc5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/037C.png differ diff --git a/fonts/TewiFontOutlineAlt/037D.png b/fonts/TewiFontOutlineAlt/037D.png new file mode 100644 index 000000000..950483b24 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/037D.png differ diff --git a/fonts/TewiFontOutlineAlt/037E.png b/fonts/TewiFontOutlineAlt/037E.png new file mode 100644 index 000000000..7b3b2cd49 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/037E.png differ diff --git a/fonts/TewiFontOutlineAlt/037F.png b/fonts/TewiFontOutlineAlt/037F.png new file mode 100644 index 000000000..596a28c51 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/037F.png differ diff --git a/fonts/TewiFontOutlineAlt/0384.png b/fonts/TewiFontOutlineAlt/0384.png new file mode 100644 index 000000000..0bf5fccce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0384.png differ diff --git a/fonts/TewiFontOutlineAlt/0385.png b/fonts/TewiFontOutlineAlt/0385.png new file mode 100644 index 000000000..74800ffab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0385.png differ diff --git a/fonts/TewiFontOutlineAlt/0386.png b/fonts/TewiFontOutlineAlt/0386.png new file mode 100644 index 000000000..38c4cb3fc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0386.png differ diff --git a/fonts/TewiFontOutlineAlt/0387.png b/fonts/TewiFontOutlineAlt/0387.png new file mode 100644 index 000000000..eb4d2a6e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0387.png differ diff --git a/fonts/TewiFontOutlineAlt/0388.png b/fonts/TewiFontOutlineAlt/0388.png new file mode 100644 index 000000000..2e3e4046c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0388.png differ diff --git a/fonts/TewiFontOutlineAlt/0389.png b/fonts/TewiFontOutlineAlt/0389.png new file mode 100644 index 000000000..2ba6356a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0389.png differ diff --git a/fonts/TewiFontOutlineAlt/038A.png b/fonts/TewiFontOutlineAlt/038A.png new file mode 100644 index 000000000..6200aec00 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/038A.png differ diff --git a/fonts/TewiFontOutlineAlt/038C.png b/fonts/TewiFontOutlineAlt/038C.png new file mode 100644 index 000000000..e42f32536 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/038C.png differ diff --git a/fonts/TewiFontOutlineAlt/038E.png b/fonts/TewiFontOutlineAlt/038E.png new file mode 100644 index 000000000..51aa91048 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/038E.png differ diff --git a/fonts/TewiFontOutlineAlt/038F.png b/fonts/TewiFontOutlineAlt/038F.png new file mode 100644 index 000000000..8204dcfed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/038F.png differ diff --git a/fonts/TewiFontOutlineAlt/0390.png b/fonts/TewiFontOutlineAlt/0390.png new file mode 100644 index 000000000..2055993ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0390.png differ diff --git a/fonts/TewiFontOutlineAlt/0391.png b/fonts/TewiFontOutlineAlt/0391.png new file mode 100644 index 000000000..d65508266 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0391.png differ diff --git a/fonts/TewiFontOutlineAlt/0392.png b/fonts/TewiFontOutlineAlt/0392.png new file mode 100644 index 000000000..a22c35905 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0392.png differ diff --git a/fonts/TewiFontOutlineAlt/0393.png b/fonts/TewiFontOutlineAlt/0393.png new file mode 100644 index 000000000..489977cd6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0393.png differ diff --git a/fonts/TewiFontOutlineAlt/0394.png b/fonts/TewiFontOutlineAlt/0394.png new file mode 100644 index 000000000..a25e70350 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0394.png differ diff --git a/fonts/TewiFontOutlineAlt/0395.png b/fonts/TewiFontOutlineAlt/0395.png new file mode 100644 index 000000000..9d843fe93 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0395.png differ diff --git a/fonts/TewiFontOutlineAlt/0396.png b/fonts/TewiFontOutlineAlt/0396.png new file mode 100644 index 000000000..ae7bc2443 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0396.png differ diff --git a/fonts/TewiFontOutlineAlt/0397.png b/fonts/TewiFontOutlineAlt/0397.png new file mode 100644 index 000000000..1980f7809 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0397.png differ diff --git a/fonts/TewiFontOutlineAlt/0398.png b/fonts/TewiFontOutlineAlt/0398.png new file mode 100644 index 000000000..ce154ee23 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0398.png differ diff --git a/fonts/TewiFontOutlineAlt/0399.png b/fonts/TewiFontOutlineAlt/0399.png new file mode 100644 index 000000000..3fe7efb78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0399.png differ diff --git a/fonts/TewiFontOutlineAlt/039A.png b/fonts/TewiFontOutlineAlt/039A.png new file mode 100644 index 000000000..cfe63b31e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/039A.png differ diff --git a/fonts/TewiFontOutlineAlt/039B.png b/fonts/TewiFontOutlineAlt/039B.png new file mode 100644 index 000000000..08aa58717 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/039B.png differ diff --git a/fonts/TewiFontOutlineAlt/039C.png b/fonts/TewiFontOutlineAlt/039C.png new file mode 100644 index 000000000..0783e2389 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/039C.png differ diff --git a/fonts/TewiFontOutlineAlt/039D.png b/fonts/TewiFontOutlineAlt/039D.png new file mode 100644 index 000000000..423b9ac12 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/039D.png differ diff --git a/fonts/TewiFontOutlineAlt/039E.png b/fonts/TewiFontOutlineAlt/039E.png new file mode 100644 index 000000000..055054413 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/039E.png differ diff --git a/fonts/TewiFontOutlineAlt/039F.png b/fonts/TewiFontOutlineAlt/039F.png new file mode 100644 index 000000000..9ba6f7ad6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/039F.png differ diff --git a/fonts/TewiFontOutlineAlt/03A0.png b/fonts/TewiFontOutlineAlt/03A0.png new file mode 100644 index 000000000..2e334804d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A0.png differ diff --git a/fonts/TewiFontOutlineAlt/03A1.png b/fonts/TewiFontOutlineAlt/03A1.png new file mode 100644 index 000000000..5ccdfaa16 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A1.png differ diff --git a/fonts/TewiFontOutlineAlt/03A3.png b/fonts/TewiFontOutlineAlt/03A3.png new file mode 100644 index 000000000..deb9a7bd8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A3.png differ diff --git a/fonts/TewiFontOutlineAlt/03A4.png b/fonts/TewiFontOutlineAlt/03A4.png new file mode 100644 index 000000000..af26dd564 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A4.png differ diff --git a/fonts/TewiFontOutlineAlt/03A5.png b/fonts/TewiFontOutlineAlt/03A5.png new file mode 100644 index 000000000..e496aa03c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A5.png differ diff --git a/fonts/TewiFontOutlineAlt/03A6.png b/fonts/TewiFontOutlineAlt/03A6.png new file mode 100644 index 000000000..822425890 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A6.png differ diff --git a/fonts/TewiFontOutlineAlt/03A7.png b/fonts/TewiFontOutlineAlt/03A7.png new file mode 100644 index 000000000..1e696b3c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A7.png differ diff --git a/fonts/TewiFontOutlineAlt/03A8.png b/fonts/TewiFontOutlineAlt/03A8.png new file mode 100644 index 000000000..e3684b45d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A8.png differ diff --git a/fonts/TewiFontOutlineAlt/03A9.png b/fonts/TewiFontOutlineAlt/03A9.png new file mode 100644 index 000000000..fe7cfbb1d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03A9.png differ diff --git a/fonts/TewiFontOutlineAlt/03AA.png b/fonts/TewiFontOutlineAlt/03AA.png new file mode 100644 index 000000000..bf6ae1c43 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03AA.png differ diff --git a/fonts/TewiFontOutlineAlt/03AB.png b/fonts/TewiFontOutlineAlt/03AB.png new file mode 100644 index 000000000..75941e9c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03AB.png differ diff --git a/fonts/TewiFontOutlineAlt/03AC.png b/fonts/TewiFontOutlineAlt/03AC.png new file mode 100644 index 000000000..7562ed3e1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03AC.png differ diff --git a/fonts/TewiFontOutlineAlt/03AD.png b/fonts/TewiFontOutlineAlt/03AD.png new file mode 100644 index 000000000..46ed2c4b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03AD.png differ diff --git a/fonts/TewiFontOutlineAlt/03AE.png b/fonts/TewiFontOutlineAlt/03AE.png new file mode 100644 index 000000000..88c138e7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03AE.png differ diff --git a/fonts/TewiFontOutlineAlt/03AF.png b/fonts/TewiFontOutlineAlt/03AF.png new file mode 100644 index 000000000..c85ef7bd7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03AF.png differ diff --git a/fonts/TewiFontOutlineAlt/03B0.png b/fonts/TewiFontOutlineAlt/03B0.png new file mode 100644 index 000000000..e601e5cba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B0.png differ diff --git a/fonts/TewiFontOutlineAlt/03B1.png b/fonts/TewiFontOutlineAlt/03B1.png new file mode 100644 index 000000000..59accf4a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B1.png differ diff --git a/fonts/TewiFontOutlineAlt/03B2.png b/fonts/TewiFontOutlineAlt/03B2.png new file mode 100644 index 000000000..57191d98a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B2.png differ diff --git a/fonts/TewiFontOutlineAlt/03B3.png b/fonts/TewiFontOutlineAlt/03B3.png new file mode 100644 index 000000000..3707134b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B3.png differ diff --git a/fonts/TewiFontOutlineAlt/03B4.png b/fonts/TewiFontOutlineAlt/03B4.png new file mode 100644 index 000000000..27d1e3818 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B4.png differ diff --git a/fonts/TewiFontOutlineAlt/03B5.png b/fonts/TewiFontOutlineAlt/03B5.png new file mode 100644 index 000000000..899d088e7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B5.png differ diff --git a/fonts/TewiFontOutlineAlt/03B6.png b/fonts/TewiFontOutlineAlt/03B6.png new file mode 100644 index 000000000..305f8b218 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B6.png differ diff --git a/fonts/TewiFontOutlineAlt/03B7.png b/fonts/TewiFontOutlineAlt/03B7.png new file mode 100644 index 000000000..3db1b1146 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B7.png differ diff --git a/fonts/TewiFontOutlineAlt/03B8.png b/fonts/TewiFontOutlineAlt/03B8.png new file mode 100644 index 000000000..fb4d8f5a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B8.png differ diff --git a/fonts/TewiFontOutlineAlt/03B9.png b/fonts/TewiFontOutlineAlt/03B9.png new file mode 100644 index 000000000..421d4ec03 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03B9.png differ diff --git a/fonts/TewiFontOutlineAlt/03BA.png b/fonts/TewiFontOutlineAlt/03BA.png new file mode 100644 index 000000000..afec3134f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03BA.png differ diff --git a/fonts/TewiFontOutlineAlt/03BB.png b/fonts/TewiFontOutlineAlt/03BB.png new file mode 100644 index 000000000..20b8b3641 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03BB.png differ diff --git a/fonts/TewiFontOutlineAlt/03BC.png b/fonts/TewiFontOutlineAlt/03BC.png new file mode 100644 index 000000000..1224b07aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03BC.png differ diff --git a/fonts/TewiFontOutlineAlt/03BD.png b/fonts/TewiFontOutlineAlt/03BD.png new file mode 100644 index 000000000..9ebfd943d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03BD.png differ diff --git a/fonts/TewiFontOutlineAlt/03BE.png b/fonts/TewiFontOutlineAlt/03BE.png new file mode 100644 index 000000000..a6cb2ed52 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03BE.png differ diff --git a/fonts/TewiFontOutlineAlt/03BF.png b/fonts/TewiFontOutlineAlt/03BF.png new file mode 100644 index 000000000..cdb31f97c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03BF.png differ diff --git a/fonts/TewiFontOutlineAlt/03C0.png b/fonts/TewiFontOutlineAlt/03C0.png new file mode 100644 index 000000000..2ddd8949b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C0.png differ diff --git a/fonts/TewiFontOutlineAlt/03C1.png b/fonts/TewiFontOutlineAlt/03C1.png new file mode 100644 index 000000000..6eaeefaf1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C1.png differ diff --git a/fonts/TewiFontOutlineAlt/03C2.png b/fonts/TewiFontOutlineAlt/03C2.png new file mode 100644 index 000000000..105c19df2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C2.png differ diff --git a/fonts/TewiFontOutlineAlt/03C3.png b/fonts/TewiFontOutlineAlt/03C3.png new file mode 100644 index 000000000..340098e05 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C3.png differ diff --git a/fonts/TewiFontOutlineAlt/03C4.png b/fonts/TewiFontOutlineAlt/03C4.png new file mode 100644 index 000000000..fb12fb85e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C4.png differ diff --git a/fonts/TewiFontOutlineAlt/03C5.png b/fonts/TewiFontOutlineAlt/03C5.png new file mode 100644 index 000000000..008805045 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C5.png differ diff --git a/fonts/TewiFontOutlineAlt/03C6.png b/fonts/TewiFontOutlineAlt/03C6.png new file mode 100644 index 000000000..2e01bec78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C6.png differ diff --git a/fonts/TewiFontOutlineAlt/03C7.png b/fonts/TewiFontOutlineAlt/03C7.png new file mode 100644 index 000000000..bc37a0ce8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C7.png differ diff --git a/fonts/TewiFontOutlineAlt/03C8.png b/fonts/TewiFontOutlineAlt/03C8.png new file mode 100644 index 000000000..fc1157db2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C8.png differ diff --git a/fonts/TewiFontOutlineAlt/03C9.png b/fonts/TewiFontOutlineAlt/03C9.png new file mode 100644 index 000000000..8f6264003 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03C9.png differ diff --git a/fonts/TewiFontOutlineAlt/03CA.png b/fonts/TewiFontOutlineAlt/03CA.png new file mode 100644 index 000000000..5e06785ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03CA.png differ diff --git a/fonts/TewiFontOutlineAlt/03CB.png b/fonts/TewiFontOutlineAlt/03CB.png new file mode 100644 index 000000000..a34cc0fea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03CB.png differ diff --git a/fonts/TewiFontOutlineAlt/03CC.png b/fonts/TewiFontOutlineAlt/03CC.png new file mode 100644 index 000000000..6b6d4ea2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03CC.png differ diff --git a/fonts/TewiFontOutlineAlt/03CD.png b/fonts/TewiFontOutlineAlt/03CD.png new file mode 100644 index 000000000..f5f6f21d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03CD.png differ diff --git a/fonts/TewiFontOutlineAlt/03CE.png b/fonts/TewiFontOutlineAlt/03CE.png new file mode 100644 index 000000000..33dff788e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03CE.png differ diff --git a/fonts/TewiFontOutlineAlt/03CF.png b/fonts/TewiFontOutlineAlt/03CF.png new file mode 100644 index 000000000..e7beb9520 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03CF.png differ diff --git a/fonts/TewiFontOutlineAlt/03D0.png b/fonts/TewiFontOutlineAlt/03D0.png new file mode 100644 index 000000000..468725299 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D0.png differ diff --git a/fonts/TewiFontOutlineAlt/03D1.png b/fonts/TewiFontOutlineAlt/03D1.png new file mode 100644 index 000000000..6beacd903 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D1.png differ diff --git a/fonts/TewiFontOutlineAlt/03D2.png b/fonts/TewiFontOutlineAlt/03D2.png new file mode 100644 index 000000000..cd16e62d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D2.png differ diff --git a/fonts/TewiFontOutlineAlt/03D3.png b/fonts/TewiFontOutlineAlt/03D3.png new file mode 100644 index 000000000..03b668ddd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D3.png differ diff --git a/fonts/TewiFontOutlineAlt/03D4.png b/fonts/TewiFontOutlineAlt/03D4.png new file mode 100644 index 000000000..46d3e76b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D4.png differ diff --git a/fonts/TewiFontOutlineAlt/03D5.png b/fonts/TewiFontOutlineAlt/03D5.png new file mode 100644 index 000000000..49c430348 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D5.png differ diff --git a/fonts/TewiFontOutlineAlt/03D6.png b/fonts/TewiFontOutlineAlt/03D6.png new file mode 100644 index 000000000..b9608dba2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D6.png differ diff --git a/fonts/TewiFontOutlineAlt/03D7.png b/fonts/TewiFontOutlineAlt/03D7.png new file mode 100644 index 000000000..ad43d3d24 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D7.png differ diff --git a/fonts/TewiFontOutlineAlt/03D8.png b/fonts/TewiFontOutlineAlt/03D8.png new file mode 100644 index 000000000..f52b8abb5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D8.png differ diff --git a/fonts/TewiFontOutlineAlt/03D9.png b/fonts/TewiFontOutlineAlt/03D9.png new file mode 100644 index 000000000..fb7200e74 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03D9.png differ diff --git a/fonts/TewiFontOutlineAlt/03DA.png b/fonts/TewiFontOutlineAlt/03DA.png new file mode 100644 index 000000000..da8e65c47 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03DA.png differ diff --git a/fonts/TewiFontOutlineAlt/03DB.png b/fonts/TewiFontOutlineAlt/03DB.png new file mode 100644 index 000000000..36569be79 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03DB.png differ diff --git a/fonts/TewiFontOutlineAlt/03DC.png b/fonts/TewiFontOutlineAlt/03DC.png new file mode 100644 index 000000000..2d2b83bb3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03DC.png differ diff --git a/fonts/TewiFontOutlineAlt/03DD.png b/fonts/TewiFontOutlineAlt/03DD.png new file mode 100644 index 000000000..a7ff303aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03DD.png differ diff --git a/fonts/TewiFontOutlineAlt/03DE.png b/fonts/TewiFontOutlineAlt/03DE.png new file mode 100644 index 000000000..6af8ff0c5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03DE.png differ diff --git a/fonts/TewiFontOutlineAlt/03DF.png b/fonts/TewiFontOutlineAlt/03DF.png new file mode 100644 index 000000000..435513d87 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03DF.png differ diff --git a/fonts/TewiFontOutlineAlt/03E0.png b/fonts/TewiFontOutlineAlt/03E0.png new file mode 100644 index 000000000..530521976 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E0.png differ diff --git a/fonts/TewiFontOutlineAlt/03E1.png b/fonts/TewiFontOutlineAlt/03E1.png new file mode 100644 index 000000000..da908e656 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E1.png differ diff --git a/fonts/TewiFontOutlineAlt/03E2.png b/fonts/TewiFontOutlineAlt/03E2.png new file mode 100644 index 000000000..db0f1e38c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E2.png differ diff --git a/fonts/TewiFontOutlineAlt/03E3.png b/fonts/TewiFontOutlineAlt/03E3.png new file mode 100644 index 000000000..204e0b8f9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E3.png differ diff --git a/fonts/TewiFontOutlineAlt/03E4.png b/fonts/TewiFontOutlineAlt/03E4.png new file mode 100644 index 000000000..174b249cc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E4.png differ diff --git a/fonts/TewiFontOutlineAlt/03E5.png b/fonts/TewiFontOutlineAlt/03E5.png new file mode 100644 index 000000000..d1f9c459f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E5.png differ diff --git a/fonts/TewiFontOutlineAlt/03E6.png b/fonts/TewiFontOutlineAlt/03E6.png new file mode 100644 index 000000000..489b569c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E6.png differ diff --git a/fonts/TewiFontOutlineAlt/03E7.png b/fonts/TewiFontOutlineAlt/03E7.png new file mode 100644 index 000000000..0c9daedac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E7.png differ diff --git a/fonts/TewiFontOutlineAlt/03E8.png b/fonts/TewiFontOutlineAlt/03E8.png new file mode 100644 index 000000000..2393992ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E8.png differ diff --git a/fonts/TewiFontOutlineAlt/03E9.png b/fonts/TewiFontOutlineAlt/03E9.png new file mode 100644 index 000000000..3f5686996 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03E9.png differ diff --git a/fonts/TewiFontOutlineAlt/03EA.png b/fonts/TewiFontOutlineAlt/03EA.png new file mode 100644 index 000000000..ff461eb21 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03EA.png differ diff --git a/fonts/TewiFontOutlineAlt/03EB.png b/fonts/TewiFontOutlineAlt/03EB.png new file mode 100644 index 000000000..63c4e7636 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03EB.png differ diff --git a/fonts/TewiFontOutlineAlt/03EC.png b/fonts/TewiFontOutlineAlt/03EC.png new file mode 100644 index 000000000..61223f14d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03EC.png differ diff --git a/fonts/TewiFontOutlineAlt/03ED.png b/fonts/TewiFontOutlineAlt/03ED.png new file mode 100644 index 000000000..f11eb1041 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03ED.png differ diff --git a/fonts/TewiFontOutlineAlt/03EE.png b/fonts/TewiFontOutlineAlt/03EE.png new file mode 100644 index 000000000..87a17176b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03EE.png differ diff --git a/fonts/TewiFontOutlineAlt/03EF.png b/fonts/TewiFontOutlineAlt/03EF.png new file mode 100644 index 000000000..13ac9e56b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03EF.png differ diff --git a/fonts/TewiFontOutlineAlt/03F0.png b/fonts/TewiFontOutlineAlt/03F0.png new file mode 100644 index 000000000..dde9c9727 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F0.png differ diff --git a/fonts/TewiFontOutlineAlt/03F1.png b/fonts/TewiFontOutlineAlt/03F1.png new file mode 100644 index 000000000..7b70dfb64 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F1.png differ diff --git a/fonts/TewiFontOutlineAlt/03F2.png b/fonts/TewiFontOutlineAlt/03F2.png new file mode 100644 index 000000000..5a6619946 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F2.png differ diff --git a/fonts/TewiFontOutlineAlt/03F3.png b/fonts/TewiFontOutlineAlt/03F3.png new file mode 100644 index 000000000..8863486ec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F3.png differ diff --git a/fonts/TewiFontOutlineAlt/03F4.png b/fonts/TewiFontOutlineAlt/03F4.png new file mode 100644 index 000000000..ce154ee23 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F4.png differ diff --git a/fonts/TewiFontOutlineAlt/03F5.png b/fonts/TewiFontOutlineAlt/03F5.png new file mode 100644 index 000000000..fc572655e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F5.png differ diff --git a/fonts/TewiFontOutlineAlt/03F6.png b/fonts/TewiFontOutlineAlt/03F6.png new file mode 100644 index 000000000..96d1a64c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F6.png differ diff --git a/fonts/TewiFontOutlineAlt/03F7.png b/fonts/TewiFontOutlineAlt/03F7.png new file mode 100644 index 000000000..e1bd5448b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F7.png differ diff --git a/fonts/TewiFontOutlineAlt/03F8.png b/fonts/TewiFontOutlineAlt/03F8.png new file mode 100644 index 000000000..35a67f1cc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F8.png differ diff --git a/fonts/TewiFontOutlineAlt/03F9.png b/fonts/TewiFontOutlineAlt/03F9.png new file mode 100644 index 000000000..0b783f296 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03F9.png differ diff --git a/fonts/TewiFontOutlineAlt/03FA.png b/fonts/TewiFontOutlineAlt/03FA.png new file mode 100644 index 000000000..0783e2389 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03FA.png differ diff --git a/fonts/TewiFontOutlineAlt/03FB.png b/fonts/TewiFontOutlineAlt/03FB.png new file mode 100644 index 000000000..79c972400 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03FB.png differ diff --git a/fonts/TewiFontOutlineAlt/03FC.png b/fonts/TewiFontOutlineAlt/03FC.png new file mode 100644 index 000000000..a760f443a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03FC.png differ diff --git a/fonts/TewiFontOutlineAlt/03FD.png b/fonts/TewiFontOutlineAlt/03FD.png new file mode 100644 index 000000000..cd4714cdd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03FD.png differ diff --git a/fonts/TewiFontOutlineAlt/03FE.png b/fonts/TewiFontOutlineAlt/03FE.png new file mode 100644 index 000000000..6b353dbfb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03FE.png differ diff --git a/fonts/TewiFontOutlineAlt/03FF.png b/fonts/TewiFontOutlineAlt/03FF.png new file mode 100644 index 000000000..29117c011 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/03FF.png differ diff --git a/fonts/TewiFontOutlineAlt/0400.png b/fonts/TewiFontOutlineAlt/0400.png new file mode 100644 index 000000000..550d70bdb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0400.png differ diff --git a/fonts/TewiFontOutlineAlt/0401.png b/fonts/TewiFontOutlineAlt/0401.png new file mode 100644 index 000000000..a1628a9de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0401.png differ diff --git a/fonts/TewiFontOutlineAlt/0402.png b/fonts/TewiFontOutlineAlt/0402.png new file mode 100644 index 000000000..f4ed88516 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0402.png differ diff --git a/fonts/TewiFontOutlineAlt/0403.png b/fonts/TewiFontOutlineAlt/0403.png new file mode 100644 index 000000000..a724d0d4a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0403.png differ diff --git a/fonts/TewiFontOutlineAlt/0404.png b/fonts/TewiFontOutlineAlt/0404.png new file mode 100644 index 000000000..4073e6fad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0404.png differ diff --git a/fonts/TewiFontOutlineAlt/0405.png b/fonts/TewiFontOutlineAlt/0405.png new file mode 100644 index 000000000..9ba2198b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0405.png differ diff --git a/fonts/TewiFontOutlineAlt/0406.png b/fonts/TewiFontOutlineAlt/0406.png new file mode 100644 index 000000000..68a5497d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0406.png differ diff --git a/fonts/TewiFontOutlineAlt/0407.png b/fonts/TewiFontOutlineAlt/0407.png new file mode 100644 index 000000000..fdb6c912e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0407.png differ diff --git a/fonts/TewiFontOutlineAlt/0408.png b/fonts/TewiFontOutlineAlt/0408.png new file mode 100644 index 000000000..5434b7ad0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0408.png differ diff --git a/fonts/TewiFontOutlineAlt/0409.png b/fonts/TewiFontOutlineAlt/0409.png new file mode 100644 index 000000000..76e32d1ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0409.png differ diff --git a/fonts/TewiFontOutlineAlt/040A.png b/fonts/TewiFontOutlineAlt/040A.png new file mode 100644 index 000000000..1a07f6733 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/040A.png differ diff --git a/fonts/TewiFontOutlineAlt/040B.png b/fonts/TewiFontOutlineAlt/040B.png new file mode 100644 index 000000000..a9480c5b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/040B.png differ diff --git a/fonts/TewiFontOutlineAlt/040C.png b/fonts/TewiFontOutlineAlt/040C.png new file mode 100644 index 000000000..5a622bcb7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/040C.png differ diff --git a/fonts/TewiFontOutlineAlt/040D.png b/fonts/TewiFontOutlineAlt/040D.png new file mode 100644 index 000000000..06cbbe6b6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/040D.png differ diff --git a/fonts/TewiFontOutlineAlt/040E.png b/fonts/TewiFontOutlineAlt/040E.png new file mode 100644 index 000000000..96a4002b1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/040E.png differ diff --git a/fonts/TewiFontOutlineAlt/040F.png b/fonts/TewiFontOutlineAlt/040F.png new file mode 100644 index 000000000..7b3808485 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/040F.png differ diff --git a/fonts/TewiFontOutlineAlt/0410.png b/fonts/TewiFontOutlineAlt/0410.png new file mode 100644 index 000000000..d65508266 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0410.png differ diff --git a/fonts/TewiFontOutlineAlt/0411.png b/fonts/TewiFontOutlineAlt/0411.png new file mode 100644 index 000000000..0dbd061a9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0411.png differ diff --git a/fonts/TewiFontOutlineAlt/0412.png b/fonts/TewiFontOutlineAlt/0412.png new file mode 100644 index 000000000..a22c35905 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0412.png differ diff --git a/fonts/TewiFontOutlineAlt/0413.png b/fonts/TewiFontOutlineAlt/0413.png new file mode 100644 index 000000000..f8ca2aad1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0413.png differ diff --git a/fonts/TewiFontOutlineAlt/0414.png b/fonts/TewiFontOutlineAlt/0414.png new file mode 100644 index 000000000..faf25007b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0414.png differ diff --git a/fonts/TewiFontOutlineAlt/0415.png b/fonts/TewiFontOutlineAlt/0415.png new file mode 100644 index 000000000..9d843fe93 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0415.png differ diff --git a/fonts/TewiFontOutlineAlt/0416.png b/fonts/TewiFontOutlineAlt/0416.png new file mode 100644 index 000000000..40e672b5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0416.png differ diff --git a/fonts/TewiFontOutlineAlt/0417.png b/fonts/TewiFontOutlineAlt/0417.png new file mode 100644 index 000000000..cb0d68b45 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0417.png differ diff --git a/fonts/TewiFontOutlineAlt/0418.png b/fonts/TewiFontOutlineAlt/0418.png new file mode 100644 index 000000000..ab67e3591 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0418.png differ diff --git a/fonts/TewiFontOutlineAlt/0419.png b/fonts/TewiFontOutlineAlt/0419.png new file mode 100644 index 000000000..0f916233b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0419.png differ diff --git a/fonts/TewiFontOutlineAlt/041A.png b/fonts/TewiFontOutlineAlt/041A.png new file mode 100644 index 000000000..cfe63b31e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/041A.png differ diff --git a/fonts/TewiFontOutlineAlt/041B.png b/fonts/TewiFontOutlineAlt/041B.png new file mode 100644 index 000000000..16aa1fea2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/041B.png differ diff --git a/fonts/TewiFontOutlineAlt/041C.png b/fonts/TewiFontOutlineAlt/041C.png new file mode 100644 index 000000000..0783e2389 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/041C.png differ diff --git a/fonts/TewiFontOutlineAlt/041D.png b/fonts/TewiFontOutlineAlt/041D.png new file mode 100644 index 000000000..1980f7809 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/041D.png differ diff --git a/fonts/TewiFontOutlineAlt/041E.png b/fonts/TewiFontOutlineAlt/041E.png new file mode 100644 index 000000000..9ba6f7ad6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/041E.png differ diff --git a/fonts/TewiFontOutlineAlt/041F.png b/fonts/TewiFontOutlineAlt/041F.png new file mode 100644 index 000000000..2e334804d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/041F.png differ diff --git a/fonts/TewiFontOutlineAlt/0420.png b/fonts/TewiFontOutlineAlt/0420.png new file mode 100644 index 000000000..5ccdfaa16 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0420.png differ diff --git a/fonts/TewiFontOutlineAlt/0421.png b/fonts/TewiFontOutlineAlt/0421.png new file mode 100644 index 000000000..0b783f296 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0421.png differ diff --git a/fonts/TewiFontOutlineAlt/0422.png b/fonts/TewiFontOutlineAlt/0422.png new file mode 100644 index 000000000..af26dd564 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0422.png differ diff --git a/fonts/TewiFontOutlineAlt/0423.png b/fonts/TewiFontOutlineAlt/0423.png new file mode 100644 index 000000000..4de896f54 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0423.png differ diff --git a/fonts/TewiFontOutlineAlt/0424.png b/fonts/TewiFontOutlineAlt/0424.png new file mode 100644 index 000000000..822425890 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0424.png differ diff --git a/fonts/TewiFontOutlineAlt/0425.png b/fonts/TewiFontOutlineAlt/0425.png new file mode 100644 index 000000000..1e696b3c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0425.png differ diff --git a/fonts/TewiFontOutlineAlt/0426.png b/fonts/TewiFontOutlineAlt/0426.png new file mode 100644 index 000000000..6df71e36c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0426.png differ diff --git a/fonts/TewiFontOutlineAlt/0427.png b/fonts/TewiFontOutlineAlt/0427.png new file mode 100644 index 000000000..a11259b19 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0427.png differ diff --git a/fonts/TewiFontOutlineAlt/0428.png b/fonts/TewiFontOutlineAlt/0428.png new file mode 100644 index 000000000..3227eea0d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0428.png differ diff --git a/fonts/TewiFontOutlineAlt/0429.png b/fonts/TewiFontOutlineAlt/0429.png new file mode 100644 index 000000000..5392580ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0429.png differ diff --git a/fonts/TewiFontOutlineAlt/042A.png b/fonts/TewiFontOutlineAlt/042A.png new file mode 100644 index 000000000..14ec390ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/042A.png differ diff --git a/fonts/TewiFontOutlineAlt/042B.png b/fonts/TewiFontOutlineAlt/042B.png new file mode 100644 index 000000000..484c43191 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/042B.png differ diff --git a/fonts/TewiFontOutlineAlt/042C.png b/fonts/TewiFontOutlineAlt/042C.png new file mode 100644 index 000000000..561f73918 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/042C.png differ diff --git a/fonts/TewiFontOutlineAlt/042D.png b/fonts/TewiFontOutlineAlt/042D.png new file mode 100644 index 000000000..d824bb735 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/042D.png differ diff --git a/fonts/TewiFontOutlineAlt/042E.png b/fonts/TewiFontOutlineAlt/042E.png new file mode 100644 index 000000000..a0f91c2dc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/042E.png differ diff --git a/fonts/TewiFontOutlineAlt/042F.png b/fonts/TewiFontOutlineAlt/042F.png new file mode 100644 index 000000000..069752575 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/042F.png differ diff --git a/fonts/TewiFontOutlineAlt/0430.png b/fonts/TewiFontOutlineAlt/0430.png new file mode 100644 index 000000000..7b1d76681 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0430.png differ diff --git a/fonts/TewiFontOutlineAlt/0431.png b/fonts/TewiFontOutlineAlt/0431.png new file mode 100644 index 000000000..a7b239d9b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0431.png differ diff --git a/fonts/TewiFontOutlineAlt/0432.png b/fonts/TewiFontOutlineAlt/0432.png new file mode 100644 index 000000000..99c5065c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0432.png differ diff --git a/fonts/TewiFontOutlineAlt/0433.png b/fonts/TewiFontOutlineAlt/0433.png new file mode 100644 index 000000000..a9189a514 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0433.png differ diff --git a/fonts/TewiFontOutlineAlt/0434.png b/fonts/TewiFontOutlineAlt/0434.png new file mode 100644 index 000000000..a3a9b70b8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0434.png differ diff --git a/fonts/TewiFontOutlineAlt/0435.png b/fonts/TewiFontOutlineAlt/0435.png new file mode 100644 index 000000000..a41c23364 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0435.png differ diff --git a/fonts/TewiFontOutlineAlt/0436.png b/fonts/TewiFontOutlineAlt/0436.png new file mode 100644 index 000000000..2effc3438 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0436.png differ diff --git a/fonts/TewiFontOutlineAlt/0437.png b/fonts/TewiFontOutlineAlt/0437.png new file mode 100644 index 000000000..e44521c37 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0437.png differ diff --git a/fonts/TewiFontOutlineAlt/0438.png b/fonts/TewiFontOutlineAlt/0438.png new file mode 100644 index 000000000..9a08c3736 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0438.png differ diff --git a/fonts/TewiFontOutlineAlt/0439.png b/fonts/TewiFontOutlineAlt/0439.png new file mode 100644 index 000000000..a60ffcd13 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0439.png differ diff --git a/fonts/TewiFontOutlineAlt/043A.png b/fonts/TewiFontOutlineAlt/043A.png new file mode 100644 index 000000000..afec3134f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/043A.png differ diff --git a/fonts/TewiFontOutlineAlt/043B.png b/fonts/TewiFontOutlineAlt/043B.png new file mode 100644 index 000000000..bc79ecda7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/043B.png differ diff --git a/fonts/TewiFontOutlineAlt/043C.png b/fonts/TewiFontOutlineAlt/043C.png new file mode 100644 index 000000000..6e095941a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/043C.png differ diff --git a/fonts/TewiFontOutlineAlt/043D.png b/fonts/TewiFontOutlineAlt/043D.png new file mode 100644 index 000000000..7644f0605 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/043D.png differ diff --git a/fonts/TewiFontOutlineAlt/043E.png b/fonts/TewiFontOutlineAlt/043E.png new file mode 100644 index 000000000..cdb31f97c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/043E.png differ diff --git a/fonts/TewiFontOutlineAlt/043F.png b/fonts/TewiFontOutlineAlt/043F.png new file mode 100644 index 000000000..7f9c80c1b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/043F.png differ diff --git a/fonts/TewiFontOutlineAlt/0440.png b/fonts/TewiFontOutlineAlt/0440.png new file mode 100644 index 000000000..d538e64c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0440.png differ diff --git a/fonts/TewiFontOutlineAlt/0441.png b/fonts/TewiFontOutlineAlt/0441.png new file mode 100644 index 000000000..5a6619946 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0441.png differ diff --git a/fonts/TewiFontOutlineAlt/0442.png b/fonts/TewiFontOutlineAlt/0442.png new file mode 100644 index 000000000..b8a2e996f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0442.png differ diff --git a/fonts/TewiFontOutlineAlt/0443.png b/fonts/TewiFontOutlineAlt/0443.png new file mode 100644 index 000000000..07e781abb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0443.png differ diff --git a/fonts/TewiFontOutlineAlt/0444.png b/fonts/TewiFontOutlineAlt/0444.png new file mode 100644 index 000000000..49c430348 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0444.png differ diff --git a/fonts/TewiFontOutlineAlt/0445.png b/fonts/TewiFontOutlineAlt/0445.png new file mode 100644 index 000000000..681a10240 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0445.png differ diff --git a/fonts/TewiFontOutlineAlt/0446.png b/fonts/TewiFontOutlineAlt/0446.png new file mode 100644 index 000000000..8653758d7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0446.png differ diff --git a/fonts/TewiFontOutlineAlt/0447.png b/fonts/TewiFontOutlineAlt/0447.png new file mode 100644 index 000000000..ebf720ace Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0447.png differ diff --git a/fonts/TewiFontOutlineAlt/0448.png b/fonts/TewiFontOutlineAlt/0448.png new file mode 100644 index 000000000..d8f32c150 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0448.png differ diff --git a/fonts/TewiFontOutlineAlt/0449.png b/fonts/TewiFontOutlineAlt/0449.png new file mode 100644 index 000000000..c26dac1fb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0449.png differ diff --git a/fonts/TewiFontOutlineAlt/044A.png b/fonts/TewiFontOutlineAlt/044A.png new file mode 100644 index 000000000..85fbe8f55 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/044A.png differ diff --git a/fonts/TewiFontOutlineAlt/044B.png b/fonts/TewiFontOutlineAlt/044B.png new file mode 100644 index 000000000..e32a97ee4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/044B.png differ diff --git a/fonts/TewiFontOutlineAlt/044C.png b/fonts/TewiFontOutlineAlt/044C.png new file mode 100644 index 000000000..d437915a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/044C.png differ diff --git a/fonts/TewiFontOutlineAlt/044D.png b/fonts/TewiFontOutlineAlt/044D.png new file mode 100644 index 000000000..6a8bb6ad8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/044D.png differ diff --git a/fonts/TewiFontOutlineAlt/044E.png b/fonts/TewiFontOutlineAlt/044E.png new file mode 100644 index 000000000..3ecea69dc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/044E.png differ diff --git a/fonts/TewiFontOutlineAlt/044F.png b/fonts/TewiFontOutlineAlt/044F.png new file mode 100644 index 000000000..313559a2a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/044F.png differ diff --git a/fonts/TewiFontOutlineAlt/0450.png b/fonts/TewiFontOutlineAlt/0450.png new file mode 100644 index 000000000..586fcbf8e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0450.png differ diff --git a/fonts/TewiFontOutlineAlt/0451.png b/fonts/TewiFontOutlineAlt/0451.png new file mode 100644 index 000000000..c3c11071f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0451.png differ diff --git a/fonts/TewiFontOutlineAlt/0452.png b/fonts/TewiFontOutlineAlt/0452.png new file mode 100644 index 000000000..3892542a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0452.png differ diff --git a/fonts/TewiFontOutlineAlt/0453.png b/fonts/TewiFontOutlineAlt/0453.png new file mode 100644 index 000000000..a7e46bcab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0453.png differ diff --git a/fonts/TewiFontOutlineAlt/0454.png b/fonts/TewiFontOutlineAlt/0454.png new file mode 100644 index 000000000..0a329d1e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0454.png differ diff --git a/fonts/TewiFontOutlineAlt/0455.png b/fonts/TewiFontOutlineAlt/0455.png new file mode 100644 index 000000000..21cf0b7cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0455.png differ diff --git a/fonts/TewiFontOutlineAlt/0456.png b/fonts/TewiFontOutlineAlt/0456.png new file mode 100644 index 000000000..e53d91bc1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0456.png differ diff --git a/fonts/TewiFontOutlineAlt/0457.png b/fonts/TewiFontOutlineAlt/0457.png new file mode 100644 index 000000000..2e12490b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0457.png differ diff --git a/fonts/TewiFontOutlineAlt/0458.png b/fonts/TewiFontOutlineAlt/0458.png new file mode 100644 index 000000000..b1a26507c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0458.png differ diff --git a/fonts/TewiFontOutlineAlt/0459.png b/fonts/TewiFontOutlineAlt/0459.png new file mode 100644 index 000000000..0ad117252 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0459.png differ diff --git a/fonts/TewiFontOutlineAlt/045A.png b/fonts/TewiFontOutlineAlt/045A.png new file mode 100644 index 000000000..450132333 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/045A.png differ diff --git a/fonts/TewiFontOutlineAlt/045B.png b/fonts/TewiFontOutlineAlt/045B.png new file mode 100644 index 000000000..032340b9b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/045B.png differ diff --git a/fonts/TewiFontOutlineAlt/045C.png b/fonts/TewiFontOutlineAlt/045C.png new file mode 100644 index 000000000..344ef715e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/045C.png differ diff --git a/fonts/TewiFontOutlineAlt/045D.png b/fonts/TewiFontOutlineAlt/045D.png new file mode 100644 index 000000000..b3dd522cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/045D.png differ diff --git a/fonts/TewiFontOutlineAlt/045E.png b/fonts/TewiFontOutlineAlt/045E.png new file mode 100644 index 000000000..7ad7b22d7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/045E.png differ diff --git a/fonts/TewiFontOutlineAlt/045F.png b/fonts/TewiFontOutlineAlt/045F.png new file mode 100644 index 000000000..8fafd1321 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/045F.png differ diff --git a/fonts/TewiFontOutlineAlt/0460.png b/fonts/TewiFontOutlineAlt/0460.png new file mode 100644 index 000000000..0220ef05e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0460.png differ diff --git a/fonts/TewiFontOutlineAlt/0461.png b/fonts/TewiFontOutlineAlt/0461.png new file mode 100644 index 000000000..cf2d03976 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0461.png differ diff --git a/fonts/TewiFontOutlineAlt/0462.png b/fonts/TewiFontOutlineAlt/0462.png new file mode 100644 index 000000000..dafde2ba8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0462.png differ diff --git a/fonts/TewiFontOutlineAlt/0463.png b/fonts/TewiFontOutlineAlt/0463.png new file mode 100644 index 000000000..5060b8c6b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0463.png differ diff --git a/fonts/TewiFontOutlineAlt/0464.png b/fonts/TewiFontOutlineAlt/0464.png new file mode 100644 index 000000000..8a4609644 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0464.png differ diff --git a/fonts/TewiFontOutlineAlt/0465.png b/fonts/TewiFontOutlineAlt/0465.png new file mode 100644 index 000000000..ea16aa997 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0465.png differ diff --git a/fonts/TewiFontOutlineAlt/0466.png b/fonts/TewiFontOutlineAlt/0466.png new file mode 100644 index 000000000..0489796ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0466.png differ diff --git a/fonts/TewiFontOutlineAlt/0467.png b/fonts/TewiFontOutlineAlt/0467.png new file mode 100644 index 000000000..35921cad5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0467.png differ diff --git a/fonts/TewiFontOutlineAlt/0468.png b/fonts/TewiFontOutlineAlt/0468.png new file mode 100644 index 000000000..a78bb4cde Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0468.png differ diff --git a/fonts/TewiFontOutlineAlt/0469.png b/fonts/TewiFontOutlineAlt/0469.png new file mode 100644 index 000000000..89f0d5a5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0469.png differ diff --git a/fonts/TewiFontOutlineAlt/046A.png b/fonts/TewiFontOutlineAlt/046A.png new file mode 100644 index 000000000..e9daaee45 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/046A.png differ diff --git a/fonts/TewiFontOutlineAlt/046B.png b/fonts/TewiFontOutlineAlt/046B.png new file mode 100644 index 000000000..2a73feb75 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/046B.png differ diff --git a/fonts/TewiFontOutlineAlt/046C.png b/fonts/TewiFontOutlineAlt/046C.png new file mode 100644 index 000000000..efb95ea64 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/046C.png differ diff --git a/fonts/TewiFontOutlineAlt/046D.png b/fonts/TewiFontOutlineAlt/046D.png new file mode 100644 index 000000000..9f6b1f336 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/046D.png differ diff --git a/fonts/TewiFontOutlineAlt/046E.png b/fonts/TewiFontOutlineAlt/046E.png new file mode 100644 index 000000000..5704ae9c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/046E.png differ diff --git a/fonts/TewiFontOutlineAlt/046F.png b/fonts/TewiFontOutlineAlt/046F.png new file mode 100644 index 000000000..66c422a34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/046F.png differ diff --git a/fonts/TewiFontOutlineAlt/0470.png b/fonts/TewiFontOutlineAlt/0470.png new file mode 100644 index 000000000..900008dee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0470.png differ diff --git a/fonts/TewiFontOutlineAlt/0471.png b/fonts/TewiFontOutlineAlt/0471.png new file mode 100644 index 000000000..6e7f8a381 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0471.png differ diff --git a/fonts/TewiFontOutlineAlt/0472.png b/fonts/TewiFontOutlineAlt/0472.png new file mode 100644 index 000000000..ce154ee23 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0472.png differ diff --git a/fonts/TewiFontOutlineAlt/0473.png b/fonts/TewiFontOutlineAlt/0473.png new file mode 100644 index 000000000..5bd3083cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0473.png differ diff --git a/fonts/TewiFontOutlineAlt/0474.png b/fonts/TewiFontOutlineAlt/0474.png new file mode 100644 index 000000000..f36f6f333 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0474.png differ diff --git a/fonts/TewiFontOutlineAlt/0475.png b/fonts/TewiFontOutlineAlt/0475.png new file mode 100644 index 000000000..94905ae2d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0475.png differ diff --git a/fonts/TewiFontOutlineAlt/0476.png b/fonts/TewiFontOutlineAlt/0476.png new file mode 100644 index 000000000..417c31252 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0476.png differ diff --git a/fonts/TewiFontOutlineAlt/0477.png b/fonts/TewiFontOutlineAlt/0477.png new file mode 100644 index 000000000..4f9761cec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0477.png differ diff --git a/fonts/TewiFontOutlineAlt/0478.png b/fonts/TewiFontOutlineAlt/0478.png new file mode 100644 index 000000000..8483abb55 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0478.png differ diff --git a/fonts/TewiFontOutlineAlt/0479.png b/fonts/TewiFontOutlineAlt/0479.png new file mode 100644 index 000000000..fefdd3ddc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0479.png differ diff --git a/fonts/TewiFontOutlineAlt/047A.png b/fonts/TewiFontOutlineAlt/047A.png new file mode 100644 index 000000000..dab1040bc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/047A.png differ diff --git a/fonts/TewiFontOutlineAlt/047B.png b/fonts/TewiFontOutlineAlt/047B.png new file mode 100644 index 000000000..ecb736ada Binary files /dev/null and b/fonts/TewiFontOutlineAlt/047B.png differ diff --git a/fonts/TewiFontOutlineAlt/047C.png b/fonts/TewiFontOutlineAlt/047C.png new file mode 100644 index 000000000..b74c4ed97 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/047C.png differ diff --git a/fonts/TewiFontOutlineAlt/047D.png b/fonts/TewiFontOutlineAlt/047D.png new file mode 100644 index 000000000..f0192d48f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/047D.png differ diff --git a/fonts/TewiFontOutlineAlt/047E.png b/fonts/TewiFontOutlineAlt/047E.png new file mode 100644 index 000000000..0a36ea261 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/047E.png differ diff --git a/fonts/TewiFontOutlineAlt/047F.png b/fonts/TewiFontOutlineAlt/047F.png new file mode 100644 index 000000000..0e65c59d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/047F.png differ diff --git a/fonts/TewiFontOutlineAlt/0480.png b/fonts/TewiFontOutlineAlt/0480.png new file mode 100644 index 000000000..3da497d7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0480.png differ diff --git a/fonts/TewiFontOutlineAlt/0481.png b/fonts/TewiFontOutlineAlt/0481.png new file mode 100644 index 000000000..534311547 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0481.png differ diff --git a/fonts/TewiFontOutlineAlt/0482.png b/fonts/TewiFontOutlineAlt/0482.png new file mode 100644 index 000000000..10b45b2b8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0482.png differ diff --git a/fonts/TewiFontOutlineAlt/0483.png b/fonts/TewiFontOutlineAlt/0483.png new file mode 100644 index 000000000..02178d7f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0483.png differ diff --git a/fonts/TewiFontOutlineAlt/0484.png b/fonts/TewiFontOutlineAlt/0484.png new file mode 100644 index 000000000..e52bc39ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0484.png differ diff --git a/fonts/TewiFontOutlineAlt/0485.png b/fonts/TewiFontOutlineAlt/0485.png new file mode 100644 index 000000000..cf2c45f7e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0485.png differ diff --git a/fonts/TewiFontOutlineAlt/0486.png b/fonts/TewiFontOutlineAlt/0486.png new file mode 100644 index 000000000..44efeb103 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0486.png differ diff --git a/fonts/TewiFontOutlineAlt/048A.png b/fonts/TewiFontOutlineAlt/048A.png new file mode 100644 index 000000000..43700df5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/048A.png differ diff --git a/fonts/TewiFontOutlineAlt/048B.png b/fonts/TewiFontOutlineAlt/048B.png new file mode 100644 index 000000000..4b0a6237c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/048B.png differ diff --git a/fonts/TewiFontOutlineAlt/048C.png b/fonts/TewiFontOutlineAlt/048C.png new file mode 100644 index 000000000..f32e39e31 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/048C.png differ diff --git a/fonts/TewiFontOutlineAlt/048D.png b/fonts/TewiFontOutlineAlt/048D.png new file mode 100644 index 000000000..5060b8c6b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/048D.png differ diff --git a/fonts/TewiFontOutlineAlt/048E.png b/fonts/TewiFontOutlineAlt/048E.png new file mode 100644 index 000000000..7dcfbb120 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/048E.png differ diff --git a/fonts/TewiFontOutlineAlt/048F.png b/fonts/TewiFontOutlineAlt/048F.png new file mode 100644 index 000000000..bc27bd9f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/048F.png differ diff --git a/fonts/TewiFontOutlineAlt/0490.png b/fonts/TewiFontOutlineAlt/0490.png new file mode 100644 index 000000000..e439015f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0490.png differ diff --git a/fonts/TewiFontOutlineAlt/0491.png b/fonts/TewiFontOutlineAlt/0491.png new file mode 100644 index 000000000..18e1ec4fc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0491.png differ diff --git a/fonts/TewiFontOutlineAlt/0492.png b/fonts/TewiFontOutlineAlt/0492.png new file mode 100644 index 000000000..e2813a215 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0492.png differ diff --git a/fonts/TewiFontOutlineAlt/0493.png b/fonts/TewiFontOutlineAlt/0493.png new file mode 100644 index 000000000..8a771cafb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0493.png differ diff --git a/fonts/TewiFontOutlineAlt/0494.png b/fonts/TewiFontOutlineAlt/0494.png new file mode 100644 index 000000000..16b5fcd95 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0494.png differ diff --git a/fonts/TewiFontOutlineAlt/0495.png b/fonts/TewiFontOutlineAlt/0495.png new file mode 100644 index 000000000..d36f62def Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0495.png differ diff --git a/fonts/TewiFontOutlineAlt/0496.png b/fonts/TewiFontOutlineAlt/0496.png new file mode 100644 index 000000000..3ce40dc65 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0496.png differ diff --git a/fonts/TewiFontOutlineAlt/0497.png b/fonts/TewiFontOutlineAlt/0497.png new file mode 100644 index 000000000..e013434d7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0497.png differ diff --git a/fonts/TewiFontOutlineAlt/0498.png b/fonts/TewiFontOutlineAlt/0498.png new file mode 100644 index 000000000..e45964fd0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0498.png differ diff --git a/fonts/TewiFontOutlineAlt/0499.png b/fonts/TewiFontOutlineAlt/0499.png new file mode 100644 index 000000000..bb029dc7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0499.png differ diff --git a/fonts/TewiFontOutlineAlt/049A.png b/fonts/TewiFontOutlineAlt/049A.png new file mode 100644 index 000000000..cf377a5a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/049A.png differ diff --git a/fonts/TewiFontOutlineAlt/049B.png b/fonts/TewiFontOutlineAlt/049B.png new file mode 100644 index 000000000..9c5b3a6ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/049B.png differ diff --git a/fonts/TewiFontOutlineAlt/049C.png b/fonts/TewiFontOutlineAlt/049C.png new file mode 100644 index 000000000..a69124858 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/049C.png differ diff --git a/fonts/TewiFontOutlineAlt/049D.png b/fonts/TewiFontOutlineAlt/049D.png new file mode 100644 index 000000000..80602274f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/049D.png differ diff --git a/fonts/TewiFontOutlineAlt/049E.png b/fonts/TewiFontOutlineAlt/049E.png new file mode 100644 index 000000000..63faa6107 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/049E.png differ diff --git a/fonts/TewiFontOutlineAlt/049F.png b/fonts/TewiFontOutlineAlt/049F.png new file mode 100644 index 000000000..4e46f943f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/049F.png differ diff --git a/fonts/TewiFontOutlineAlt/04A0.png b/fonts/TewiFontOutlineAlt/04A0.png new file mode 100644 index 000000000..31ff9904f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A0.png differ diff --git a/fonts/TewiFontOutlineAlt/04A1.png b/fonts/TewiFontOutlineAlt/04A1.png new file mode 100644 index 000000000..0252ebf92 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A1.png differ diff --git a/fonts/TewiFontOutlineAlt/04A2.png b/fonts/TewiFontOutlineAlt/04A2.png new file mode 100644 index 000000000..590b9329b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A2.png differ diff --git a/fonts/TewiFontOutlineAlt/04A3.png b/fonts/TewiFontOutlineAlt/04A3.png new file mode 100644 index 000000000..5a49af106 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A3.png differ diff --git a/fonts/TewiFontOutlineAlt/04A4.png b/fonts/TewiFontOutlineAlt/04A4.png new file mode 100644 index 000000000..dc8119801 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A4.png differ diff --git a/fonts/TewiFontOutlineAlt/04A5.png b/fonts/TewiFontOutlineAlt/04A5.png new file mode 100644 index 000000000..82c79bdf1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A5.png differ diff --git a/fonts/TewiFontOutlineAlt/04A6.png b/fonts/TewiFontOutlineAlt/04A6.png new file mode 100644 index 000000000..db0efdeea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A6.png differ diff --git a/fonts/TewiFontOutlineAlt/04A7.png b/fonts/TewiFontOutlineAlt/04A7.png new file mode 100644 index 000000000..9f018e016 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A7.png differ diff --git a/fonts/TewiFontOutlineAlt/04A8.png b/fonts/TewiFontOutlineAlt/04A8.png new file mode 100644 index 000000000..7c1d41e05 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A8.png differ diff --git a/fonts/TewiFontOutlineAlt/04A9.png b/fonts/TewiFontOutlineAlt/04A9.png new file mode 100644 index 000000000..039967171 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04A9.png differ diff --git a/fonts/TewiFontOutlineAlt/04AA.png b/fonts/TewiFontOutlineAlt/04AA.png new file mode 100644 index 000000000..96f470090 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04AA.png differ diff --git a/fonts/TewiFontOutlineAlt/04AB.png b/fonts/TewiFontOutlineAlt/04AB.png new file mode 100644 index 000000000..81c3fa000 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04AB.png differ diff --git a/fonts/TewiFontOutlineAlt/04AC.png b/fonts/TewiFontOutlineAlt/04AC.png new file mode 100644 index 000000000..7a3ed40f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04AC.png differ diff --git a/fonts/TewiFontOutlineAlt/04AD.png b/fonts/TewiFontOutlineAlt/04AD.png new file mode 100644 index 000000000..7dc16df0a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04AD.png differ diff --git a/fonts/TewiFontOutlineAlt/04AE.png b/fonts/TewiFontOutlineAlt/04AE.png new file mode 100644 index 000000000..e496aa03c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04AE.png differ diff --git a/fonts/TewiFontOutlineAlt/04AF.png b/fonts/TewiFontOutlineAlt/04AF.png new file mode 100644 index 000000000..0694b645a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04AF.png differ diff --git a/fonts/TewiFontOutlineAlt/04B0.png b/fonts/TewiFontOutlineAlt/04B0.png new file mode 100644 index 000000000..69d957477 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B0.png differ diff --git a/fonts/TewiFontOutlineAlt/04B1.png b/fonts/TewiFontOutlineAlt/04B1.png new file mode 100644 index 000000000..efc85e6cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B1.png differ diff --git a/fonts/TewiFontOutlineAlt/04B2.png b/fonts/TewiFontOutlineAlt/04B2.png new file mode 100644 index 000000000..d759e7a5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B2.png differ diff --git a/fonts/TewiFontOutlineAlt/04B3.png b/fonts/TewiFontOutlineAlt/04B3.png new file mode 100644 index 000000000..9bc1f76b0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B3.png differ diff --git a/fonts/TewiFontOutlineAlt/04B4.png b/fonts/TewiFontOutlineAlt/04B4.png new file mode 100644 index 000000000..da658f194 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B4.png differ diff --git a/fonts/TewiFontOutlineAlt/04B5.png b/fonts/TewiFontOutlineAlt/04B5.png new file mode 100644 index 000000000..519542831 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B5.png differ diff --git a/fonts/TewiFontOutlineAlt/04B6.png b/fonts/TewiFontOutlineAlt/04B6.png new file mode 100644 index 000000000..7376c99d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B6.png differ diff --git a/fonts/TewiFontOutlineAlt/04B7.png b/fonts/TewiFontOutlineAlt/04B7.png new file mode 100644 index 000000000..19f46dc1b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B7.png differ diff --git a/fonts/TewiFontOutlineAlt/04B8.png b/fonts/TewiFontOutlineAlt/04B8.png new file mode 100644 index 000000000..ad9094353 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B8.png differ diff --git a/fonts/TewiFontOutlineAlt/04B9.png b/fonts/TewiFontOutlineAlt/04B9.png new file mode 100644 index 000000000..f42a293b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04B9.png differ diff --git a/fonts/TewiFontOutlineAlt/04BA.png b/fonts/TewiFontOutlineAlt/04BA.png new file mode 100644 index 000000000..fff67f7c6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04BA.png differ diff --git a/fonts/TewiFontOutlineAlt/04BB.png b/fonts/TewiFontOutlineAlt/04BB.png new file mode 100644 index 000000000..3d17700e1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04BB.png differ diff --git a/fonts/TewiFontOutlineAlt/04BC.png b/fonts/TewiFontOutlineAlt/04BC.png new file mode 100644 index 000000000..d7956ef8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04BC.png differ diff --git a/fonts/TewiFontOutlineAlt/04BD.png b/fonts/TewiFontOutlineAlt/04BD.png new file mode 100644 index 000000000..916d64692 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04BD.png differ diff --git a/fonts/TewiFontOutlineAlt/04BE.png b/fonts/TewiFontOutlineAlt/04BE.png new file mode 100644 index 000000000..ad487e89e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04BE.png differ diff --git a/fonts/TewiFontOutlineAlt/04BF.png b/fonts/TewiFontOutlineAlt/04BF.png new file mode 100644 index 000000000..202e060b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04BF.png differ diff --git a/fonts/TewiFontOutlineAlt/04C0.png b/fonts/TewiFontOutlineAlt/04C0.png new file mode 100644 index 000000000..3fe7efb78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C0.png differ diff --git a/fonts/TewiFontOutlineAlt/04C1.png b/fonts/TewiFontOutlineAlt/04C1.png new file mode 100644 index 000000000..7df792fcd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C1.png differ diff --git a/fonts/TewiFontOutlineAlt/04C2.png b/fonts/TewiFontOutlineAlt/04C2.png new file mode 100644 index 000000000..2a1939384 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C2.png differ diff --git a/fonts/TewiFontOutlineAlt/04C3.png b/fonts/TewiFontOutlineAlt/04C3.png new file mode 100644 index 000000000..6c6821d9a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C3.png differ diff --git a/fonts/TewiFontOutlineAlt/04C4.png b/fonts/TewiFontOutlineAlt/04C4.png new file mode 100644 index 000000000..483fe2c47 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C4.png differ diff --git a/fonts/TewiFontOutlineAlt/04C5.png b/fonts/TewiFontOutlineAlt/04C5.png new file mode 100644 index 000000000..36fa15d49 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C5.png differ diff --git a/fonts/TewiFontOutlineAlt/04C6.png b/fonts/TewiFontOutlineAlt/04C6.png new file mode 100644 index 000000000..e5dcc9865 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C6.png differ diff --git a/fonts/TewiFontOutlineAlt/04C7.png b/fonts/TewiFontOutlineAlt/04C7.png new file mode 100644 index 000000000..40ecad3ab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C7.png differ diff --git a/fonts/TewiFontOutlineAlt/04C8.png b/fonts/TewiFontOutlineAlt/04C8.png new file mode 100644 index 000000000..a9023c020 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C8.png differ diff --git a/fonts/TewiFontOutlineAlt/04C9.png b/fonts/TewiFontOutlineAlt/04C9.png new file mode 100644 index 000000000..0b9ffbec9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04C9.png differ diff --git a/fonts/TewiFontOutlineAlt/04CA.png b/fonts/TewiFontOutlineAlt/04CA.png new file mode 100644 index 000000000..afd3b7a80 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04CA.png differ diff --git a/fonts/TewiFontOutlineAlt/04CB.png b/fonts/TewiFontOutlineAlt/04CB.png new file mode 100644 index 000000000..f0f7c8d97 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04CB.png differ diff --git a/fonts/TewiFontOutlineAlt/04CC.png b/fonts/TewiFontOutlineAlt/04CC.png new file mode 100644 index 000000000..8c03bcd38 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04CC.png differ diff --git a/fonts/TewiFontOutlineAlt/04CD.png b/fonts/TewiFontOutlineAlt/04CD.png new file mode 100644 index 000000000..8a8315498 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04CD.png differ diff --git a/fonts/TewiFontOutlineAlt/04CE.png b/fonts/TewiFontOutlineAlt/04CE.png new file mode 100644 index 000000000..3527962b6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04CE.png differ diff --git a/fonts/TewiFontOutlineAlt/04CF.png b/fonts/TewiFontOutlineAlt/04CF.png new file mode 100644 index 000000000..68a5497d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04CF.png differ diff --git a/fonts/TewiFontOutlineAlt/04D0.png b/fonts/TewiFontOutlineAlt/04D0.png new file mode 100644 index 000000000..a521734c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D0.png differ diff --git a/fonts/TewiFontOutlineAlt/04D1.png b/fonts/TewiFontOutlineAlt/04D1.png new file mode 100644 index 000000000..ecedf24d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D1.png differ diff --git a/fonts/TewiFontOutlineAlt/04D2.png b/fonts/TewiFontOutlineAlt/04D2.png new file mode 100644 index 000000000..ef13d6c04 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D2.png differ diff --git a/fonts/TewiFontOutlineAlt/04D3.png b/fonts/TewiFontOutlineAlt/04D3.png new file mode 100644 index 000000000..602a0d7c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D3.png differ diff --git a/fonts/TewiFontOutlineAlt/04D4.png b/fonts/TewiFontOutlineAlt/04D4.png new file mode 100644 index 000000000..5d3555eef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D4.png differ diff --git a/fonts/TewiFontOutlineAlt/04D5.png b/fonts/TewiFontOutlineAlt/04D5.png new file mode 100644 index 000000000..5e5606e2d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D5.png differ diff --git a/fonts/TewiFontOutlineAlt/04D6.png b/fonts/TewiFontOutlineAlt/04D6.png new file mode 100644 index 000000000..19399b878 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D6.png differ diff --git a/fonts/TewiFontOutlineAlt/04D7.png b/fonts/TewiFontOutlineAlt/04D7.png new file mode 100644 index 000000000..13cbc5c27 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D7.png differ diff --git a/fonts/TewiFontOutlineAlt/04D8.png b/fonts/TewiFontOutlineAlt/04D8.png new file mode 100644 index 000000000..065226c42 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D8.png differ diff --git a/fonts/TewiFontOutlineAlt/04D9.png b/fonts/TewiFontOutlineAlt/04D9.png new file mode 100644 index 000000000..ecbc14181 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04D9.png differ diff --git a/fonts/TewiFontOutlineAlt/04DA.png b/fonts/TewiFontOutlineAlt/04DA.png new file mode 100644 index 000000000..c97b8dd1e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04DA.png differ diff --git a/fonts/TewiFontOutlineAlt/04DB.png b/fonts/TewiFontOutlineAlt/04DB.png new file mode 100644 index 000000000..1f072d62e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04DB.png differ diff --git a/fonts/TewiFontOutlineAlt/04DC.png b/fonts/TewiFontOutlineAlt/04DC.png new file mode 100644 index 000000000..05f479f65 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04DC.png differ diff --git a/fonts/TewiFontOutlineAlt/04DD.png b/fonts/TewiFontOutlineAlt/04DD.png new file mode 100644 index 000000000..89b828459 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04DD.png differ diff --git a/fonts/TewiFontOutlineAlt/04DE.png b/fonts/TewiFontOutlineAlt/04DE.png new file mode 100644 index 000000000..139cd8a28 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04DE.png differ diff --git a/fonts/TewiFontOutlineAlt/04DF.png b/fonts/TewiFontOutlineAlt/04DF.png new file mode 100644 index 000000000..f3a892b1f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04DF.png differ diff --git a/fonts/TewiFontOutlineAlt/04E0.png b/fonts/TewiFontOutlineAlt/04E0.png new file mode 100644 index 000000000..5abf293f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E0.png differ diff --git a/fonts/TewiFontOutlineAlt/04E1.png b/fonts/TewiFontOutlineAlt/04E1.png new file mode 100644 index 000000000..3e77f5218 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E1.png differ diff --git a/fonts/TewiFontOutlineAlt/04E2.png b/fonts/TewiFontOutlineAlt/04E2.png new file mode 100644 index 000000000..0a4b8201f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E2.png differ diff --git a/fonts/TewiFontOutlineAlt/04E3.png b/fonts/TewiFontOutlineAlt/04E3.png new file mode 100644 index 000000000..cc73870d8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E3.png differ diff --git a/fonts/TewiFontOutlineAlt/04E4.png b/fonts/TewiFontOutlineAlt/04E4.png new file mode 100644 index 000000000..af34bb71b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E4.png differ diff --git a/fonts/TewiFontOutlineAlt/04E5.png b/fonts/TewiFontOutlineAlt/04E5.png new file mode 100644 index 000000000..4669a5104 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E5.png differ diff --git a/fonts/TewiFontOutlineAlt/04E6.png b/fonts/TewiFontOutlineAlt/04E6.png new file mode 100644 index 000000000..9ac011aa7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E6.png differ diff --git a/fonts/TewiFontOutlineAlt/04E7.png b/fonts/TewiFontOutlineAlt/04E7.png new file mode 100644 index 000000000..b0a8e7c7e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E7.png differ diff --git a/fonts/TewiFontOutlineAlt/04E8.png b/fonts/TewiFontOutlineAlt/04E8.png new file mode 100644 index 000000000..ce154ee23 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E8.png differ diff --git a/fonts/TewiFontOutlineAlt/04E9.png b/fonts/TewiFontOutlineAlt/04E9.png new file mode 100644 index 000000000..5bd3083cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04E9.png differ diff --git a/fonts/TewiFontOutlineAlt/04EA.png b/fonts/TewiFontOutlineAlt/04EA.png new file mode 100644 index 000000000..a13bc012c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04EA.png differ diff --git a/fonts/TewiFontOutlineAlt/04EB.png b/fonts/TewiFontOutlineAlt/04EB.png new file mode 100644 index 000000000..7642e7ae8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04EB.png differ diff --git a/fonts/TewiFontOutlineAlt/04EC.png b/fonts/TewiFontOutlineAlt/04EC.png new file mode 100644 index 000000000..d1f27ace3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04EC.png differ diff --git a/fonts/TewiFontOutlineAlt/04ED.png b/fonts/TewiFontOutlineAlt/04ED.png new file mode 100644 index 000000000..e1b867d64 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04ED.png differ diff --git a/fonts/TewiFontOutlineAlt/04EE.png b/fonts/TewiFontOutlineAlt/04EE.png new file mode 100644 index 000000000..9059b1610 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04EE.png differ diff --git a/fonts/TewiFontOutlineAlt/04EF.png b/fonts/TewiFontOutlineAlt/04EF.png new file mode 100644 index 000000000..66fe97bf3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04EF.png differ diff --git a/fonts/TewiFontOutlineAlt/04F0.png b/fonts/TewiFontOutlineAlt/04F0.png new file mode 100644 index 000000000..d52254416 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F0.png differ diff --git a/fonts/TewiFontOutlineAlt/04F1.png b/fonts/TewiFontOutlineAlt/04F1.png new file mode 100644 index 000000000..a3d40ef7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F1.png differ diff --git a/fonts/TewiFontOutlineAlt/04F2.png b/fonts/TewiFontOutlineAlt/04F2.png new file mode 100644 index 000000000..cad379e48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F2.png differ diff --git a/fonts/TewiFontOutlineAlt/04F3.png b/fonts/TewiFontOutlineAlt/04F3.png new file mode 100644 index 000000000..900b732ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F3.png differ diff --git a/fonts/TewiFontOutlineAlt/04F4.png b/fonts/TewiFontOutlineAlt/04F4.png new file mode 100644 index 000000000..8e69d4208 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F4.png differ diff --git a/fonts/TewiFontOutlineAlt/04F5.png b/fonts/TewiFontOutlineAlt/04F5.png new file mode 100644 index 000000000..7aba8b9fc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F5.png differ diff --git a/fonts/TewiFontOutlineAlt/04F6.png b/fonts/TewiFontOutlineAlt/04F6.png new file mode 100644 index 000000000..eae4a729d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F6.png differ diff --git a/fonts/TewiFontOutlineAlt/04F7.png b/fonts/TewiFontOutlineAlt/04F7.png new file mode 100644 index 000000000..7590b1429 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F7.png differ diff --git a/fonts/TewiFontOutlineAlt/04F8.png b/fonts/TewiFontOutlineAlt/04F8.png new file mode 100644 index 000000000..db2ef6786 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F8.png differ diff --git a/fonts/TewiFontOutlineAlt/04F9.png b/fonts/TewiFontOutlineAlt/04F9.png new file mode 100644 index 000000000..c60bad125 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04F9.png differ diff --git a/fonts/TewiFontOutlineAlt/04FA.png b/fonts/TewiFontOutlineAlt/04FA.png new file mode 100644 index 000000000..39e6ed100 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04FA.png differ diff --git a/fonts/TewiFontOutlineAlt/04FB.png b/fonts/TewiFontOutlineAlt/04FB.png new file mode 100644 index 000000000..3a3650ab6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04FB.png differ diff --git a/fonts/TewiFontOutlineAlt/04FC.png b/fonts/TewiFontOutlineAlt/04FC.png new file mode 100644 index 000000000..b366264d4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04FC.png differ diff --git a/fonts/TewiFontOutlineAlt/04FD.png b/fonts/TewiFontOutlineAlt/04FD.png new file mode 100644 index 000000000..2c2aa083c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04FD.png differ diff --git a/fonts/TewiFontOutlineAlt/04FE.png b/fonts/TewiFontOutlineAlt/04FE.png new file mode 100644 index 000000000..3703c210d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04FE.png differ diff --git a/fonts/TewiFontOutlineAlt/04FF.png b/fonts/TewiFontOutlineAlt/04FF.png new file mode 100644 index 000000000..77458d5b8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/04FF.png differ diff --git a/fonts/TewiFontOutlineAlt/05BE.png b/fonts/TewiFontOutlineAlt/05BE.png new file mode 100644 index 000000000..657e41af0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05BE.png differ diff --git a/fonts/TewiFontOutlineAlt/05C0.png b/fonts/TewiFontOutlineAlt/05C0.png new file mode 100644 index 000000000..05598229c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05C0.png differ diff --git a/fonts/TewiFontOutlineAlt/05C3.png b/fonts/TewiFontOutlineAlt/05C3.png new file mode 100644 index 000000000..4dcf22cee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05C3.png differ diff --git a/fonts/TewiFontOutlineAlt/05C6.png b/fonts/TewiFontOutlineAlt/05C6.png new file mode 100644 index 000000000..3396cba3f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05C6.png differ diff --git a/fonts/TewiFontOutlineAlt/05D0.png b/fonts/TewiFontOutlineAlt/05D0.png new file mode 100644 index 000000000..a61c0b0db Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D0.png differ diff --git a/fonts/TewiFontOutlineAlt/05D1.png b/fonts/TewiFontOutlineAlt/05D1.png new file mode 100644 index 000000000..dd39b9421 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D1.png differ diff --git a/fonts/TewiFontOutlineAlt/05D2.png b/fonts/TewiFontOutlineAlt/05D2.png new file mode 100644 index 000000000..1fcb5f1de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D2.png differ diff --git a/fonts/TewiFontOutlineAlt/05D3.png b/fonts/TewiFontOutlineAlt/05D3.png new file mode 100644 index 000000000..3df5fdbfd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D3.png differ diff --git a/fonts/TewiFontOutlineAlt/05D4.png b/fonts/TewiFontOutlineAlt/05D4.png new file mode 100644 index 000000000..f7498a4d1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D4.png differ diff --git a/fonts/TewiFontOutlineAlt/05D5.png b/fonts/TewiFontOutlineAlt/05D5.png new file mode 100644 index 000000000..37c1de5ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D5.png differ diff --git a/fonts/TewiFontOutlineAlt/05D6.png b/fonts/TewiFontOutlineAlt/05D6.png new file mode 100644 index 000000000..38138a917 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D6.png differ diff --git a/fonts/TewiFontOutlineAlt/05D7.png b/fonts/TewiFontOutlineAlt/05D7.png new file mode 100644 index 000000000..24fdcd223 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D7.png differ diff --git a/fonts/TewiFontOutlineAlt/05D8.png b/fonts/TewiFontOutlineAlt/05D8.png new file mode 100644 index 000000000..8f9ec435b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D8.png differ diff --git a/fonts/TewiFontOutlineAlt/05D9.png b/fonts/TewiFontOutlineAlt/05D9.png new file mode 100644 index 000000000..8b4cbc4ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05D9.png differ diff --git a/fonts/TewiFontOutlineAlt/05DA.png b/fonts/TewiFontOutlineAlt/05DA.png new file mode 100644 index 000000000..4d1237d64 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05DA.png differ diff --git a/fonts/TewiFontOutlineAlt/05DB.png b/fonts/TewiFontOutlineAlt/05DB.png new file mode 100644 index 000000000..19bb3e10e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05DB.png differ diff --git a/fonts/TewiFontOutlineAlt/05DC.png b/fonts/TewiFontOutlineAlt/05DC.png new file mode 100644 index 000000000..e702eb96b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05DC.png differ diff --git a/fonts/TewiFontOutlineAlt/05DD.png b/fonts/TewiFontOutlineAlt/05DD.png new file mode 100644 index 000000000..cf6faca94 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05DD.png differ diff --git a/fonts/TewiFontOutlineAlt/05DE.png b/fonts/TewiFontOutlineAlt/05DE.png new file mode 100644 index 000000000..b518448fc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05DE.png differ diff --git a/fonts/TewiFontOutlineAlt/05DF.png b/fonts/TewiFontOutlineAlt/05DF.png new file mode 100644 index 000000000..0cf01df7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05DF.png differ diff --git a/fonts/TewiFontOutlineAlt/05E0.png b/fonts/TewiFontOutlineAlt/05E0.png new file mode 100644 index 000000000..236f51077 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E0.png differ diff --git a/fonts/TewiFontOutlineAlt/05E1.png b/fonts/TewiFontOutlineAlt/05E1.png new file mode 100644 index 000000000..cdb31f97c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E1.png differ diff --git a/fonts/TewiFontOutlineAlt/05E2.png b/fonts/TewiFontOutlineAlt/05E2.png new file mode 100644 index 000000000..daf203eb7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E2.png differ diff --git a/fonts/TewiFontOutlineAlt/05E3.png b/fonts/TewiFontOutlineAlt/05E3.png new file mode 100644 index 000000000..fdbea92ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E3.png differ diff --git a/fonts/TewiFontOutlineAlt/05E4.png b/fonts/TewiFontOutlineAlt/05E4.png new file mode 100644 index 000000000..287a4be09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E4.png differ diff --git a/fonts/TewiFontOutlineAlt/05E5.png b/fonts/TewiFontOutlineAlt/05E5.png new file mode 100644 index 000000000..3b0a2200d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E5.png differ diff --git a/fonts/TewiFontOutlineAlt/05E6.png b/fonts/TewiFontOutlineAlt/05E6.png new file mode 100644 index 000000000..d54ab3e13 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E6.png differ diff --git a/fonts/TewiFontOutlineAlt/05E7.png b/fonts/TewiFontOutlineAlt/05E7.png new file mode 100644 index 000000000..990277b75 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E7.png differ diff --git a/fonts/TewiFontOutlineAlt/05E8.png b/fonts/TewiFontOutlineAlt/05E8.png new file mode 100644 index 000000000..a11e020b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E8.png differ diff --git a/fonts/TewiFontOutlineAlt/05E9.png b/fonts/TewiFontOutlineAlt/05E9.png new file mode 100644 index 000000000..eb411c4fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05E9.png differ diff --git a/fonts/TewiFontOutlineAlt/05EA.png b/fonts/TewiFontOutlineAlt/05EA.png new file mode 100644 index 000000000..70c1f76c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05EA.png differ diff --git a/fonts/TewiFontOutlineAlt/05EB.png b/fonts/TewiFontOutlineAlt/05EB.png new file mode 100644 index 000000000..7dfe78f1e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05EB.png differ diff --git a/fonts/TewiFontOutlineAlt/05EC.png b/fonts/TewiFontOutlineAlt/05EC.png new file mode 100644 index 000000000..4d8277bef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05EC.png differ diff --git a/fonts/TewiFontOutlineAlt/05ED.png b/fonts/TewiFontOutlineAlt/05ED.png new file mode 100644 index 000000000..61f9dd7f6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05ED.png differ diff --git a/fonts/TewiFontOutlineAlt/05EE.png b/fonts/TewiFontOutlineAlt/05EE.png new file mode 100644 index 000000000..58d305e07 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05EE.png differ diff --git a/fonts/TewiFontOutlineAlt/05EF.png b/fonts/TewiFontOutlineAlt/05EF.png new file mode 100644 index 000000000..b68cd284c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/05EF.png differ diff --git a/fonts/TewiFontOutlineAlt/0CA0.png b/fonts/TewiFontOutlineAlt/0CA0.png new file mode 100644 index 000000000..57727571a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0CA0.png differ diff --git a/fonts/TewiFontOutlineAlt/0E3F.png b/fonts/TewiFontOutlineAlt/0E3F.png new file mode 100644 index 000000000..86a514aa8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/0E3F.png differ diff --git a/fonts/TewiFontOutlineAlt/16A0.png b/fonts/TewiFontOutlineAlt/16A0.png new file mode 100644 index 000000000..999733bd9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16A0.png differ diff --git a/fonts/TewiFontOutlineAlt/16A2.png b/fonts/TewiFontOutlineAlt/16A2.png new file mode 100644 index 000000000..251f99165 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16A2.png differ diff --git a/fonts/TewiFontOutlineAlt/16A3.png b/fonts/TewiFontOutlineAlt/16A3.png new file mode 100644 index 000000000..9da5c83fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16A3.png differ diff --git a/fonts/TewiFontOutlineAlt/16A5.png b/fonts/TewiFontOutlineAlt/16A5.png new file mode 100644 index 000000000..8dceaab4f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16A5.png differ diff --git a/fonts/TewiFontOutlineAlt/16A6.png b/fonts/TewiFontOutlineAlt/16A6.png new file mode 100644 index 000000000..ad0d7603f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16A6.png differ diff --git a/fonts/TewiFontOutlineAlt/16A8.png b/fonts/TewiFontOutlineAlt/16A8.png new file mode 100644 index 000000000..d32c870f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16A8.png differ diff --git a/fonts/TewiFontOutlineAlt/16A9.png b/fonts/TewiFontOutlineAlt/16A9.png new file mode 100644 index 000000000..7a6597f52 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16A9.png differ diff --git a/fonts/TewiFontOutlineAlt/16AA.png b/fonts/TewiFontOutlineAlt/16AA.png new file mode 100644 index 000000000..eb300eea3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16AA.png differ diff --git a/fonts/TewiFontOutlineAlt/16AB.png b/fonts/TewiFontOutlineAlt/16AB.png new file mode 100644 index 000000000..f9faf8e62 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16AB.png differ diff --git a/fonts/TewiFontOutlineAlt/16AC.png b/fonts/TewiFontOutlineAlt/16AC.png new file mode 100644 index 000000000..86992ea4c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/16AC.png differ diff --git a/fonts/TewiFontOutlineAlt/1E00.png b/fonts/TewiFontOutlineAlt/1E00.png new file mode 100644 index 000000000..44ac5c14a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E00.png differ diff --git a/fonts/TewiFontOutlineAlt/1E01.png b/fonts/TewiFontOutlineAlt/1E01.png new file mode 100644 index 000000000..9d50ff78b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E01.png differ diff --git a/fonts/TewiFontOutlineAlt/1E02.png b/fonts/TewiFontOutlineAlt/1E02.png new file mode 100644 index 000000000..9e983a74f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E02.png differ diff --git a/fonts/TewiFontOutlineAlt/1E03.png b/fonts/TewiFontOutlineAlt/1E03.png new file mode 100644 index 000000000..79baf162a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E03.png differ diff --git a/fonts/TewiFontOutlineAlt/1E04.png b/fonts/TewiFontOutlineAlt/1E04.png new file mode 100644 index 000000000..682ec0db4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E04.png differ diff --git a/fonts/TewiFontOutlineAlt/1E05.png b/fonts/TewiFontOutlineAlt/1E05.png new file mode 100644 index 000000000..af7071098 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E05.png differ diff --git a/fonts/TewiFontOutlineAlt/1E06.png b/fonts/TewiFontOutlineAlt/1E06.png new file mode 100644 index 000000000..8b328b622 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E06.png differ diff --git a/fonts/TewiFontOutlineAlt/1E07.png b/fonts/TewiFontOutlineAlt/1E07.png new file mode 100644 index 000000000..72013b14c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E07.png differ diff --git a/fonts/TewiFontOutlineAlt/1E08.png b/fonts/TewiFontOutlineAlt/1E08.png new file mode 100644 index 000000000..318b957d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E08.png differ diff --git a/fonts/TewiFontOutlineAlt/1E09.png b/fonts/TewiFontOutlineAlt/1E09.png new file mode 100644 index 000000000..88465a286 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E09.png differ diff --git a/fonts/TewiFontOutlineAlt/1E0A.png b/fonts/TewiFontOutlineAlt/1E0A.png new file mode 100644 index 000000000..4045f18c5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E0A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E0B.png b/fonts/TewiFontOutlineAlt/1E0B.png new file mode 100644 index 000000000..269a8583e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E0B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E0C.png b/fonts/TewiFontOutlineAlt/1E0C.png new file mode 100644 index 000000000..49619cc6f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E0C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E0D.png b/fonts/TewiFontOutlineAlt/1E0D.png new file mode 100644 index 000000000..4c9340734 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E0D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E0E.png b/fonts/TewiFontOutlineAlt/1E0E.png new file mode 100644 index 000000000..2f714afa4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E0E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E0F.png b/fonts/TewiFontOutlineAlt/1E0F.png new file mode 100644 index 000000000..1cf936a23 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E0F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E10.png b/fonts/TewiFontOutlineAlt/1E10.png new file mode 100644 index 000000000..09b77b0de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E10.png differ diff --git a/fonts/TewiFontOutlineAlt/1E11.png b/fonts/TewiFontOutlineAlt/1E11.png new file mode 100644 index 000000000..5e7eab222 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E11.png differ diff --git a/fonts/TewiFontOutlineAlt/1E12.png b/fonts/TewiFontOutlineAlt/1E12.png new file mode 100644 index 000000000..b3382a4e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E12.png differ diff --git a/fonts/TewiFontOutlineAlt/1E13.png b/fonts/TewiFontOutlineAlt/1E13.png new file mode 100644 index 000000000..66fac0d7b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E13.png differ diff --git a/fonts/TewiFontOutlineAlt/1E14.png b/fonts/TewiFontOutlineAlt/1E14.png new file mode 100644 index 000000000..a99ef1e7e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E14.png differ diff --git a/fonts/TewiFontOutlineAlt/1E15.png b/fonts/TewiFontOutlineAlt/1E15.png new file mode 100644 index 000000000..21e8fbd67 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E15.png differ diff --git a/fonts/TewiFontOutlineAlt/1E16.png b/fonts/TewiFontOutlineAlt/1E16.png new file mode 100644 index 000000000..34e108120 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E16.png differ diff --git a/fonts/TewiFontOutlineAlt/1E17.png b/fonts/TewiFontOutlineAlt/1E17.png new file mode 100644 index 000000000..8dd028457 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E17.png differ diff --git a/fonts/TewiFontOutlineAlt/1E18.png b/fonts/TewiFontOutlineAlt/1E18.png new file mode 100644 index 000000000..08de68f38 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E18.png differ diff --git a/fonts/TewiFontOutlineAlt/1E19.png b/fonts/TewiFontOutlineAlt/1E19.png new file mode 100644 index 000000000..a3944a7dc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E19.png differ diff --git a/fonts/TewiFontOutlineAlt/1E1A.png b/fonts/TewiFontOutlineAlt/1E1A.png new file mode 100644 index 000000000..828cd2eaa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E1A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E1B.png b/fonts/TewiFontOutlineAlt/1E1B.png new file mode 100644 index 000000000..ea75d5b1d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E1B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E1C.png b/fonts/TewiFontOutlineAlt/1E1C.png new file mode 100644 index 000000000..8845c03ab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E1C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E1D.png b/fonts/TewiFontOutlineAlt/1E1D.png new file mode 100644 index 000000000..3ae052aa4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E1D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E1E.png b/fonts/TewiFontOutlineAlt/1E1E.png new file mode 100644 index 000000000..e31a1a674 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E1E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E1F.png b/fonts/TewiFontOutlineAlt/1E1F.png new file mode 100644 index 000000000..efe040994 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E1F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E20.png b/fonts/TewiFontOutlineAlt/1E20.png new file mode 100644 index 000000000..74fc9feee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E20.png differ diff --git a/fonts/TewiFontOutlineAlt/1E21.png b/fonts/TewiFontOutlineAlt/1E21.png new file mode 100644 index 000000000..d323aefab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E21.png differ diff --git a/fonts/TewiFontOutlineAlt/1E22.png b/fonts/TewiFontOutlineAlt/1E22.png new file mode 100644 index 000000000..804006c63 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E22.png differ diff --git a/fonts/TewiFontOutlineAlt/1E23.png b/fonts/TewiFontOutlineAlt/1E23.png new file mode 100644 index 000000000..22392c579 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E23.png differ diff --git a/fonts/TewiFontOutlineAlt/1E24.png b/fonts/TewiFontOutlineAlt/1E24.png new file mode 100644 index 000000000..0b2c23d3f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E24.png differ diff --git a/fonts/TewiFontOutlineAlt/1E25.png b/fonts/TewiFontOutlineAlt/1E25.png new file mode 100644 index 000000000..843116a86 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E25.png differ diff --git a/fonts/TewiFontOutlineAlt/1E26.png b/fonts/TewiFontOutlineAlt/1E26.png new file mode 100644 index 000000000..7807f4d7b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E26.png differ diff --git a/fonts/TewiFontOutlineAlt/1E27.png b/fonts/TewiFontOutlineAlt/1E27.png new file mode 100644 index 000000000..3c1ad4aaa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E27.png differ diff --git a/fonts/TewiFontOutlineAlt/1E28.png b/fonts/TewiFontOutlineAlt/1E28.png new file mode 100644 index 000000000..9a44b907a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E28.png differ diff --git a/fonts/TewiFontOutlineAlt/1E29.png b/fonts/TewiFontOutlineAlt/1E29.png new file mode 100644 index 000000000..2b9ddb91a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E29.png differ diff --git a/fonts/TewiFontOutlineAlt/1E2A.png b/fonts/TewiFontOutlineAlt/1E2A.png new file mode 100644 index 000000000..4d84763da Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E2A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E2B.png b/fonts/TewiFontOutlineAlt/1E2B.png new file mode 100644 index 000000000..94de6f0f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E2B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E2C.png b/fonts/TewiFontOutlineAlt/1E2C.png new file mode 100644 index 000000000..eaa739760 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E2C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E2D.png b/fonts/TewiFontOutlineAlt/1E2D.png new file mode 100644 index 000000000..d1c10fe49 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E2D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E2E.png b/fonts/TewiFontOutlineAlt/1E2E.png new file mode 100644 index 000000000..9641f1169 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E2E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E2F.png b/fonts/TewiFontOutlineAlt/1E2F.png new file mode 100644 index 000000000..1eb48da26 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E2F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E30.png b/fonts/TewiFontOutlineAlt/1E30.png new file mode 100644 index 000000000..5a622bcb7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E30.png differ diff --git a/fonts/TewiFontOutlineAlt/1E31.png b/fonts/TewiFontOutlineAlt/1E31.png new file mode 100644 index 000000000..c01a2b9b6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E31.png differ diff --git a/fonts/TewiFontOutlineAlt/1E32.png b/fonts/TewiFontOutlineAlt/1E32.png new file mode 100644 index 000000000..554547726 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E32.png differ diff --git a/fonts/TewiFontOutlineAlt/1E33.png b/fonts/TewiFontOutlineAlt/1E33.png new file mode 100644 index 000000000..6f56fce31 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E33.png differ diff --git a/fonts/TewiFontOutlineAlt/1E34.png b/fonts/TewiFontOutlineAlt/1E34.png new file mode 100644 index 000000000..6c936dd34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E34.png differ diff --git a/fonts/TewiFontOutlineAlt/1E35.png b/fonts/TewiFontOutlineAlt/1E35.png new file mode 100644 index 000000000..239cf39c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E35.png differ diff --git a/fonts/TewiFontOutlineAlt/1E36.png b/fonts/TewiFontOutlineAlt/1E36.png new file mode 100644 index 000000000..1f9dbd9f4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E36.png differ diff --git a/fonts/TewiFontOutlineAlt/1E37.png b/fonts/TewiFontOutlineAlt/1E37.png new file mode 100644 index 000000000..86d8002b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E37.png differ diff --git a/fonts/TewiFontOutlineAlt/1E38.png b/fonts/TewiFontOutlineAlt/1E38.png new file mode 100644 index 000000000..022f4d88d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E38.png differ diff --git a/fonts/TewiFontOutlineAlt/1E39.png b/fonts/TewiFontOutlineAlt/1E39.png new file mode 100644 index 000000000..2c4497f1c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E39.png differ diff --git a/fonts/TewiFontOutlineAlt/1E3A.png b/fonts/TewiFontOutlineAlt/1E3A.png new file mode 100644 index 000000000..c735c6f7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E3A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E3B.png b/fonts/TewiFontOutlineAlt/1E3B.png new file mode 100644 index 000000000..cce6ac514 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E3B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E3C.png b/fonts/TewiFontOutlineAlt/1E3C.png new file mode 100644 index 000000000..6dd4b7279 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E3C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E3D.png b/fonts/TewiFontOutlineAlt/1E3D.png new file mode 100644 index 000000000..3fa6be99a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E3D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E3E.png b/fonts/TewiFontOutlineAlt/1E3E.png new file mode 100644 index 000000000..267510d9d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E3E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E3F.png b/fonts/TewiFontOutlineAlt/1E3F.png new file mode 100644 index 000000000..a2e7cdac4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E3F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E40.png b/fonts/TewiFontOutlineAlt/1E40.png new file mode 100644 index 000000000..0a7ef6535 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E40.png differ diff --git a/fonts/TewiFontOutlineAlt/1E41.png b/fonts/TewiFontOutlineAlt/1E41.png new file mode 100644 index 000000000..dcd6a4b8a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E41.png differ diff --git a/fonts/TewiFontOutlineAlt/1E42.png b/fonts/TewiFontOutlineAlt/1E42.png new file mode 100644 index 000000000..5929c4817 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E42.png differ diff --git a/fonts/TewiFontOutlineAlt/1E43.png b/fonts/TewiFontOutlineAlt/1E43.png new file mode 100644 index 000000000..083a4e311 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E43.png differ diff --git a/fonts/TewiFontOutlineAlt/1E44.png b/fonts/TewiFontOutlineAlt/1E44.png new file mode 100644 index 000000000..0be54dcca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E44.png differ diff --git a/fonts/TewiFontOutlineAlt/1E45.png b/fonts/TewiFontOutlineAlt/1E45.png new file mode 100644 index 000000000..4dfcef074 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E45.png differ diff --git a/fonts/TewiFontOutlineAlt/1E46.png b/fonts/TewiFontOutlineAlt/1E46.png new file mode 100644 index 000000000..e27d07e6c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E46.png differ diff --git a/fonts/TewiFontOutlineAlt/1E47.png b/fonts/TewiFontOutlineAlt/1E47.png new file mode 100644 index 000000000..9015f4bed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E47.png differ diff --git a/fonts/TewiFontOutlineAlt/1E48.png b/fonts/TewiFontOutlineAlt/1E48.png new file mode 100644 index 000000000..094527d19 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E48.png differ diff --git a/fonts/TewiFontOutlineAlt/1E49.png b/fonts/TewiFontOutlineAlt/1E49.png new file mode 100644 index 000000000..d357e9a71 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E49.png differ diff --git a/fonts/TewiFontOutlineAlt/1E4A.png b/fonts/TewiFontOutlineAlt/1E4A.png new file mode 100644 index 000000000..c136dc07e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E4A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E4B.png b/fonts/TewiFontOutlineAlt/1E4B.png new file mode 100644 index 000000000..649270446 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E4B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E4C.png b/fonts/TewiFontOutlineAlt/1E4C.png new file mode 100644 index 000000000..fa747e56d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E4C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E4D.png b/fonts/TewiFontOutlineAlt/1E4D.png new file mode 100644 index 000000000..169e990c6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E4D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E4E.png b/fonts/TewiFontOutlineAlt/1E4E.png new file mode 100644 index 000000000..8f1536068 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E4E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E4F.png b/fonts/TewiFontOutlineAlt/1E4F.png new file mode 100644 index 000000000..113128a2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E4F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E50.png b/fonts/TewiFontOutlineAlt/1E50.png new file mode 100644 index 000000000..385a91e4f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E50.png differ diff --git a/fonts/TewiFontOutlineAlt/1E51.png b/fonts/TewiFontOutlineAlt/1E51.png new file mode 100644 index 000000000..36e887ed7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E51.png differ diff --git a/fonts/TewiFontOutlineAlt/1E52.png b/fonts/TewiFontOutlineAlt/1E52.png new file mode 100644 index 000000000..09a19f683 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E52.png differ diff --git a/fonts/TewiFontOutlineAlt/1E53.png b/fonts/TewiFontOutlineAlt/1E53.png new file mode 100644 index 000000000..b42b7bcce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E53.png differ diff --git a/fonts/TewiFontOutlineAlt/1E54.png b/fonts/TewiFontOutlineAlt/1E54.png new file mode 100644 index 000000000..5e445b4e7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E54.png differ diff --git a/fonts/TewiFontOutlineAlt/1E55.png b/fonts/TewiFontOutlineAlt/1E55.png new file mode 100644 index 000000000..1721d3d9b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E55.png differ diff --git a/fonts/TewiFontOutlineAlt/1E56.png b/fonts/TewiFontOutlineAlt/1E56.png new file mode 100644 index 000000000..ce4aec4c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E56.png differ diff --git a/fonts/TewiFontOutlineAlt/1E57.png b/fonts/TewiFontOutlineAlt/1E57.png new file mode 100644 index 000000000..78ee734fa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E57.png differ diff --git a/fonts/TewiFontOutlineAlt/1E58.png b/fonts/TewiFontOutlineAlt/1E58.png new file mode 100644 index 000000000..314af2997 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E58.png differ diff --git a/fonts/TewiFontOutlineAlt/1E59.png b/fonts/TewiFontOutlineAlt/1E59.png new file mode 100644 index 000000000..67d6e1b29 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E59.png differ diff --git a/fonts/TewiFontOutlineAlt/1E5A.png b/fonts/TewiFontOutlineAlt/1E5A.png new file mode 100644 index 000000000..612ddc93a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E5A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E5B.png b/fonts/TewiFontOutlineAlt/1E5B.png new file mode 100644 index 000000000..e540473ac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E5B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E5C.png b/fonts/TewiFontOutlineAlt/1E5C.png new file mode 100644 index 000000000..aeabb7406 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E5C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E5D.png b/fonts/TewiFontOutlineAlt/1E5D.png new file mode 100644 index 000000000..17968c876 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E5D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E5E.png b/fonts/TewiFontOutlineAlt/1E5E.png new file mode 100644 index 000000000..211617255 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E5E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E5F.png b/fonts/TewiFontOutlineAlt/1E5F.png new file mode 100644 index 000000000..b254a1a5f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E5F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E60.png b/fonts/TewiFontOutlineAlt/1E60.png new file mode 100644 index 000000000..83a887df5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E60.png differ diff --git a/fonts/TewiFontOutlineAlt/1E61.png b/fonts/TewiFontOutlineAlt/1E61.png new file mode 100644 index 000000000..a4f5e52a4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E61.png differ diff --git a/fonts/TewiFontOutlineAlt/1E62.png b/fonts/TewiFontOutlineAlt/1E62.png new file mode 100644 index 000000000..acdda1d9e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E62.png differ diff --git a/fonts/TewiFontOutlineAlt/1E63.png b/fonts/TewiFontOutlineAlt/1E63.png new file mode 100644 index 000000000..d22750a73 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E63.png differ diff --git a/fonts/TewiFontOutlineAlt/1E64.png b/fonts/TewiFontOutlineAlt/1E64.png new file mode 100644 index 000000000..ee5348862 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E64.png differ diff --git a/fonts/TewiFontOutlineAlt/1E65.png b/fonts/TewiFontOutlineAlt/1E65.png new file mode 100644 index 000000000..f57f6b8eb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E65.png differ diff --git a/fonts/TewiFontOutlineAlt/1E66.png b/fonts/TewiFontOutlineAlt/1E66.png new file mode 100644 index 000000000..3a1e8e1a9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E66.png differ diff --git a/fonts/TewiFontOutlineAlt/1E67.png b/fonts/TewiFontOutlineAlt/1E67.png new file mode 100644 index 000000000..09456814b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E67.png differ diff --git a/fonts/TewiFontOutlineAlt/1E68.png b/fonts/TewiFontOutlineAlt/1E68.png new file mode 100644 index 000000000..e48f15137 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E68.png differ diff --git a/fonts/TewiFontOutlineAlt/1E69.png b/fonts/TewiFontOutlineAlt/1E69.png new file mode 100644 index 000000000..bfe20a141 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E69.png differ diff --git a/fonts/TewiFontOutlineAlt/1E6A.png b/fonts/TewiFontOutlineAlt/1E6A.png new file mode 100644 index 000000000..942c6c093 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E6A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E6B.png b/fonts/TewiFontOutlineAlt/1E6B.png new file mode 100644 index 000000000..88964fd09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E6B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E6C.png b/fonts/TewiFontOutlineAlt/1E6C.png new file mode 100644 index 000000000..6495fb95b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E6C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E6D.png b/fonts/TewiFontOutlineAlt/1E6D.png new file mode 100644 index 000000000..386f36dd2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E6D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E6E.png b/fonts/TewiFontOutlineAlt/1E6E.png new file mode 100644 index 000000000..a472b459b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E6E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E6F.png b/fonts/TewiFontOutlineAlt/1E6F.png new file mode 100644 index 000000000..878b3ddae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E6F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E70.png b/fonts/TewiFontOutlineAlt/1E70.png new file mode 100644 index 000000000..cc2d2f683 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E70.png differ diff --git a/fonts/TewiFontOutlineAlt/1E71.png b/fonts/TewiFontOutlineAlt/1E71.png new file mode 100644 index 000000000..b36ebf0dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E71.png differ diff --git a/fonts/TewiFontOutlineAlt/1E72.png b/fonts/TewiFontOutlineAlt/1E72.png new file mode 100644 index 000000000..08e31e6ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E72.png differ diff --git a/fonts/TewiFontOutlineAlt/1E73.png b/fonts/TewiFontOutlineAlt/1E73.png new file mode 100644 index 000000000..3fa224cbe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E73.png differ diff --git a/fonts/TewiFontOutlineAlt/1E74.png b/fonts/TewiFontOutlineAlt/1E74.png new file mode 100644 index 000000000..2de570b81 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E74.png differ diff --git a/fonts/TewiFontOutlineAlt/1E75.png b/fonts/TewiFontOutlineAlt/1E75.png new file mode 100644 index 000000000..450fdcb9f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E75.png differ diff --git a/fonts/TewiFontOutlineAlt/1E76.png b/fonts/TewiFontOutlineAlt/1E76.png new file mode 100644 index 000000000..0df4b109f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E76.png differ diff --git a/fonts/TewiFontOutlineAlt/1E77.png b/fonts/TewiFontOutlineAlt/1E77.png new file mode 100644 index 000000000..6b93d77d7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E77.png differ diff --git a/fonts/TewiFontOutlineAlt/1E78.png b/fonts/TewiFontOutlineAlt/1E78.png new file mode 100644 index 000000000..2abaec565 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E78.png differ diff --git a/fonts/TewiFontOutlineAlt/1E79.png b/fonts/TewiFontOutlineAlt/1E79.png new file mode 100644 index 000000000..7b00efd7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E79.png differ diff --git a/fonts/TewiFontOutlineAlt/1E7A.png b/fonts/TewiFontOutlineAlt/1E7A.png new file mode 100644 index 000000000..3e8e4234b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E7A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E7B.png b/fonts/TewiFontOutlineAlt/1E7B.png new file mode 100644 index 000000000..d318e271d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E7B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E7C.png b/fonts/TewiFontOutlineAlt/1E7C.png new file mode 100644 index 000000000..953fe46ca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E7C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E7D.png b/fonts/TewiFontOutlineAlt/1E7D.png new file mode 100644 index 000000000..eee1220c3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E7D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E7E.png b/fonts/TewiFontOutlineAlt/1E7E.png new file mode 100644 index 000000000..65071d0d4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E7E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E7F.png b/fonts/TewiFontOutlineAlt/1E7F.png new file mode 100644 index 000000000..fc20e1ae1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E7F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E80.png b/fonts/TewiFontOutlineAlt/1E80.png new file mode 100644 index 000000000..30e5e5c2b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E80.png differ diff --git a/fonts/TewiFontOutlineAlt/1E81.png b/fonts/TewiFontOutlineAlt/1E81.png new file mode 100644 index 000000000..c64ea3b51 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E81.png differ diff --git a/fonts/TewiFontOutlineAlt/1E82.png b/fonts/TewiFontOutlineAlt/1E82.png new file mode 100644 index 000000000..7284ce866 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E82.png differ diff --git a/fonts/TewiFontOutlineAlt/1E83.png b/fonts/TewiFontOutlineAlt/1E83.png new file mode 100644 index 000000000..3123c335e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E83.png differ diff --git a/fonts/TewiFontOutlineAlt/1E84.png b/fonts/TewiFontOutlineAlt/1E84.png new file mode 100644 index 000000000..22f8536fe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E84.png differ diff --git a/fonts/TewiFontOutlineAlt/1E85.png b/fonts/TewiFontOutlineAlt/1E85.png new file mode 100644 index 000000000..b50ae1eae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E85.png differ diff --git a/fonts/TewiFontOutlineAlt/1E86.png b/fonts/TewiFontOutlineAlt/1E86.png new file mode 100644 index 000000000..62dbe3714 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E86.png differ diff --git a/fonts/TewiFontOutlineAlt/1E87.png b/fonts/TewiFontOutlineAlt/1E87.png new file mode 100644 index 000000000..42551241a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E87.png differ diff --git a/fonts/TewiFontOutlineAlt/1E88.png b/fonts/TewiFontOutlineAlt/1E88.png new file mode 100644 index 000000000..4287c6ee9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E88.png differ diff --git a/fonts/TewiFontOutlineAlt/1E89.png b/fonts/TewiFontOutlineAlt/1E89.png new file mode 100644 index 000000000..080c74bea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E89.png differ diff --git a/fonts/TewiFontOutlineAlt/1E8A.png b/fonts/TewiFontOutlineAlt/1E8A.png new file mode 100644 index 000000000..8e3ac7297 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E8A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E8B.png b/fonts/TewiFontOutlineAlt/1E8B.png new file mode 100644 index 000000000..4e486a85c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E8B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E8C.png b/fonts/TewiFontOutlineAlt/1E8C.png new file mode 100644 index 000000000..8aa5e595c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E8C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E8D.png b/fonts/TewiFontOutlineAlt/1E8D.png new file mode 100644 index 000000000..51a4632d3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E8D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E8E.png b/fonts/TewiFontOutlineAlt/1E8E.png new file mode 100644 index 000000000..fcb10d880 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E8E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E8F.png b/fonts/TewiFontOutlineAlt/1E8F.png new file mode 100644 index 000000000..098b5fbde Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E8F.png differ diff --git a/fonts/TewiFontOutlineAlt/1E90.png b/fonts/TewiFontOutlineAlt/1E90.png new file mode 100644 index 000000000..04f80a7c5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E90.png differ diff --git a/fonts/TewiFontOutlineAlt/1E91.png b/fonts/TewiFontOutlineAlt/1E91.png new file mode 100644 index 000000000..37681a5d3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E91.png differ diff --git a/fonts/TewiFontOutlineAlt/1E92.png b/fonts/TewiFontOutlineAlt/1E92.png new file mode 100644 index 000000000..a58d70ebb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E92.png differ diff --git a/fonts/TewiFontOutlineAlt/1E93.png b/fonts/TewiFontOutlineAlt/1E93.png new file mode 100644 index 000000000..e82e36235 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E93.png differ diff --git a/fonts/TewiFontOutlineAlt/1E94.png b/fonts/TewiFontOutlineAlt/1E94.png new file mode 100644 index 000000000..876f3ed7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E94.png differ diff --git a/fonts/TewiFontOutlineAlt/1E95.png b/fonts/TewiFontOutlineAlt/1E95.png new file mode 100644 index 000000000..6648e3323 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E95.png differ diff --git a/fonts/TewiFontOutlineAlt/1E96.png b/fonts/TewiFontOutlineAlt/1E96.png new file mode 100644 index 000000000..beb17776b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E96.png differ diff --git a/fonts/TewiFontOutlineAlt/1E97.png b/fonts/TewiFontOutlineAlt/1E97.png new file mode 100644 index 000000000..6a20b17ed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E97.png differ diff --git a/fonts/TewiFontOutlineAlt/1E98.png b/fonts/TewiFontOutlineAlt/1E98.png new file mode 100644 index 000000000..5f08e451e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E98.png differ diff --git a/fonts/TewiFontOutlineAlt/1E99.png b/fonts/TewiFontOutlineAlt/1E99.png new file mode 100644 index 000000000..0af8daa8d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E99.png differ diff --git a/fonts/TewiFontOutlineAlt/1E9A.png b/fonts/TewiFontOutlineAlt/1E9A.png new file mode 100644 index 000000000..12831b9e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E9A.png differ diff --git a/fonts/TewiFontOutlineAlt/1E9B.png b/fonts/TewiFontOutlineAlt/1E9B.png new file mode 100644 index 000000000..5e028532c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E9B.png differ diff --git a/fonts/TewiFontOutlineAlt/1E9C.png b/fonts/TewiFontOutlineAlt/1E9C.png new file mode 100644 index 000000000..79986a875 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E9C.png differ diff --git a/fonts/TewiFontOutlineAlt/1E9D.png b/fonts/TewiFontOutlineAlt/1E9D.png new file mode 100644 index 000000000..46a5de848 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E9D.png differ diff --git a/fonts/TewiFontOutlineAlt/1E9E.png b/fonts/TewiFontOutlineAlt/1E9E.png new file mode 100644 index 000000000..a4ab9538a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E9E.png differ diff --git a/fonts/TewiFontOutlineAlt/1E9F.png b/fonts/TewiFontOutlineAlt/1E9F.png new file mode 100644 index 000000000..a6bbc70b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1E9F.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA0.png b/fonts/TewiFontOutlineAlt/1EA0.png new file mode 100644 index 000000000..795c8d73a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA0.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA1.png b/fonts/TewiFontOutlineAlt/1EA1.png new file mode 100644 index 000000000..c7e6abe6e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA1.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA2.png b/fonts/TewiFontOutlineAlt/1EA2.png new file mode 100644 index 000000000..3656643a8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA2.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA3.png b/fonts/TewiFontOutlineAlt/1EA3.png new file mode 100644 index 000000000..e883388de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA3.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA4.png b/fonts/TewiFontOutlineAlt/1EA4.png new file mode 100644 index 000000000..72a73c175 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA4.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA5.png b/fonts/TewiFontOutlineAlt/1EA5.png new file mode 100644 index 000000000..d72550877 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA5.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA6.png b/fonts/TewiFontOutlineAlt/1EA6.png new file mode 100644 index 000000000..b14e70f59 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA6.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA7.png b/fonts/TewiFontOutlineAlt/1EA7.png new file mode 100644 index 000000000..153d1c2ab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA7.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA8.png b/fonts/TewiFontOutlineAlt/1EA8.png new file mode 100644 index 000000000..0c6457a41 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA8.png differ diff --git a/fonts/TewiFontOutlineAlt/1EA9.png b/fonts/TewiFontOutlineAlt/1EA9.png new file mode 100644 index 000000000..985a50746 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EA9.png differ diff --git a/fonts/TewiFontOutlineAlt/1EAB.png b/fonts/TewiFontOutlineAlt/1EAB.png new file mode 100644 index 000000000..deec25a1c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EAB.png differ diff --git a/fonts/TewiFontOutlineAlt/1EAC.png b/fonts/TewiFontOutlineAlt/1EAC.png new file mode 100644 index 000000000..3ffe7aa1d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EAC.png differ diff --git a/fonts/TewiFontOutlineAlt/1EAD.png b/fonts/TewiFontOutlineAlt/1EAD.png new file mode 100644 index 000000000..50e238a22 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EAD.png differ diff --git a/fonts/TewiFontOutlineAlt/1EAE.png b/fonts/TewiFontOutlineAlt/1EAE.png new file mode 100644 index 000000000..a8fa88bc2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EAE.png differ diff --git a/fonts/TewiFontOutlineAlt/1EAF.png b/fonts/TewiFontOutlineAlt/1EAF.png new file mode 100644 index 000000000..8e51bde8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EAF.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB0.png b/fonts/TewiFontOutlineAlt/1EB0.png new file mode 100644 index 000000000..e7a314093 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB0.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB1.png b/fonts/TewiFontOutlineAlt/1EB1.png new file mode 100644 index 000000000..9cfe6802f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB1.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB2.png b/fonts/TewiFontOutlineAlt/1EB2.png new file mode 100644 index 000000000..18364fe6c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB2.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB3.png b/fonts/TewiFontOutlineAlt/1EB3.png new file mode 100644 index 000000000..2ffbb8da1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB3.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB5.png b/fonts/TewiFontOutlineAlt/1EB5.png new file mode 100644 index 000000000..cb81e1107 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB5.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB6.png b/fonts/TewiFontOutlineAlt/1EB6.png new file mode 100644 index 000000000..3e3d52be6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB6.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB7.png b/fonts/TewiFontOutlineAlt/1EB7.png new file mode 100644 index 000000000..78430790b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB7.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB8.png b/fonts/TewiFontOutlineAlt/1EB8.png new file mode 100644 index 000000000..66259caaf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB8.png differ diff --git a/fonts/TewiFontOutlineAlt/1EB9.png b/fonts/TewiFontOutlineAlt/1EB9.png new file mode 100644 index 000000000..d1536b19e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EB9.png differ diff --git a/fonts/TewiFontOutlineAlt/1EBA.png b/fonts/TewiFontOutlineAlt/1EBA.png new file mode 100644 index 000000000..1b11e4d6c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EBA.png differ diff --git a/fonts/TewiFontOutlineAlt/1EBB.png b/fonts/TewiFontOutlineAlt/1EBB.png new file mode 100644 index 000000000..0dd2d5303 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EBB.png differ diff --git a/fonts/TewiFontOutlineAlt/1EBC.png b/fonts/TewiFontOutlineAlt/1EBC.png new file mode 100644 index 000000000..4d6a7510a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EBC.png differ diff --git a/fonts/TewiFontOutlineAlt/1EBD.png b/fonts/TewiFontOutlineAlt/1EBD.png new file mode 100644 index 000000000..0842fa84a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EBD.png differ diff --git a/fonts/TewiFontOutlineAlt/1EBE.png b/fonts/TewiFontOutlineAlt/1EBE.png new file mode 100644 index 000000000..36b79276b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EBE.png differ diff --git a/fonts/TewiFontOutlineAlt/1EBF.png b/fonts/TewiFontOutlineAlt/1EBF.png new file mode 100644 index 000000000..b41ea0e54 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EBF.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC0.png b/fonts/TewiFontOutlineAlt/1EC0.png new file mode 100644 index 000000000..c97ec47bd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC0.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC1.png b/fonts/TewiFontOutlineAlt/1EC1.png new file mode 100644 index 000000000..5ccfc7551 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC1.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC2.png b/fonts/TewiFontOutlineAlt/1EC2.png new file mode 100644 index 000000000..ce829ec52 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC2.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC3.png b/fonts/TewiFontOutlineAlt/1EC3.png new file mode 100644 index 000000000..1a45d09d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC3.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC5.png b/fonts/TewiFontOutlineAlt/1EC5.png new file mode 100644 index 000000000..1d5434348 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC5.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC6.png b/fonts/TewiFontOutlineAlt/1EC6.png new file mode 100644 index 000000000..005f1a186 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC6.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC7.png b/fonts/TewiFontOutlineAlt/1EC7.png new file mode 100644 index 000000000..09d95774f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC7.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC8.png b/fonts/TewiFontOutlineAlt/1EC8.png new file mode 100644 index 000000000..4a0721a46 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC8.png differ diff --git a/fonts/TewiFontOutlineAlt/1EC9.png b/fonts/TewiFontOutlineAlt/1EC9.png new file mode 100644 index 000000000..c9068c952 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EC9.png differ diff --git a/fonts/TewiFontOutlineAlt/1ECA.png b/fonts/TewiFontOutlineAlt/1ECA.png new file mode 100644 index 000000000..dd64d2982 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ECA.png differ diff --git a/fonts/TewiFontOutlineAlt/1ECB.png b/fonts/TewiFontOutlineAlt/1ECB.png new file mode 100644 index 000000000..6d28f32d7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ECB.png differ diff --git a/fonts/TewiFontOutlineAlt/1ECC.png b/fonts/TewiFontOutlineAlt/1ECC.png new file mode 100644 index 000000000..38264cd10 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ECC.png differ diff --git a/fonts/TewiFontOutlineAlt/1ECD.png b/fonts/TewiFontOutlineAlt/1ECD.png new file mode 100644 index 000000000..2b8dbf65b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ECD.png differ diff --git a/fonts/TewiFontOutlineAlt/1ECE.png b/fonts/TewiFontOutlineAlt/1ECE.png new file mode 100644 index 000000000..516c3ab94 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ECE.png differ diff --git a/fonts/TewiFontOutlineAlt/1ECF.png b/fonts/TewiFontOutlineAlt/1ECF.png new file mode 100644 index 000000000..e045c41c6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ECF.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED0.png b/fonts/TewiFontOutlineAlt/1ED0.png new file mode 100644 index 000000000..09dc05216 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED0.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED1.png b/fonts/TewiFontOutlineAlt/1ED1.png new file mode 100644 index 000000000..2001afacb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED1.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED2.png b/fonts/TewiFontOutlineAlt/1ED2.png new file mode 100644 index 000000000..7a1230abf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED2.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED3.png b/fonts/TewiFontOutlineAlt/1ED3.png new file mode 100644 index 000000000..bdc64c183 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED3.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED4.png b/fonts/TewiFontOutlineAlt/1ED4.png new file mode 100644 index 000000000..8635288b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED4.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED5.png b/fonts/TewiFontOutlineAlt/1ED5.png new file mode 100644 index 000000000..ab60ea61f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED5.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED6.png b/fonts/TewiFontOutlineAlt/1ED6.png new file mode 100644 index 000000000..03482e407 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED6.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED7.png b/fonts/TewiFontOutlineAlt/1ED7.png new file mode 100644 index 000000000..9a8bed32c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED7.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED8.png b/fonts/TewiFontOutlineAlt/1ED8.png new file mode 100644 index 000000000..ad0726c11 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED8.png differ diff --git a/fonts/TewiFontOutlineAlt/1ED9.png b/fonts/TewiFontOutlineAlt/1ED9.png new file mode 100644 index 000000000..d07eef555 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1ED9.png differ diff --git a/fonts/TewiFontOutlineAlt/1EDA.png b/fonts/TewiFontOutlineAlt/1EDA.png new file mode 100644 index 000000000..7202d9639 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EDA.png differ diff --git a/fonts/TewiFontOutlineAlt/1EDB.png b/fonts/TewiFontOutlineAlt/1EDB.png new file mode 100644 index 000000000..830e49bb9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EDB.png differ diff --git a/fonts/TewiFontOutlineAlt/1EDC.png b/fonts/TewiFontOutlineAlt/1EDC.png new file mode 100644 index 000000000..674815a66 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EDC.png differ diff --git a/fonts/TewiFontOutlineAlt/1EDD.png b/fonts/TewiFontOutlineAlt/1EDD.png new file mode 100644 index 000000000..669782b15 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EDD.png differ diff --git a/fonts/TewiFontOutlineAlt/1EDE.png b/fonts/TewiFontOutlineAlt/1EDE.png new file mode 100644 index 000000000..2a2554a30 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EDE.png differ diff --git a/fonts/TewiFontOutlineAlt/1EDF.png b/fonts/TewiFontOutlineAlt/1EDF.png new file mode 100644 index 000000000..01ae4d4bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EDF.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE0.png b/fonts/TewiFontOutlineAlt/1EE0.png new file mode 100644 index 000000000..258f6655e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE0.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE1.png b/fonts/TewiFontOutlineAlt/1EE1.png new file mode 100644 index 000000000..60da00d0a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE1.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE2.png b/fonts/TewiFontOutlineAlt/1EE2.png new file mode 100644 index 000000000..b34aa5406 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE2.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE3.png b/fonts/TewiFontOutlineAlt/1EE3.png new file mode 100644 index 000000000..dda46e765 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE3.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE4.png b/fonts/TewiFontOutlineAlt/1EE4.png new file mode 100644 index 000000000..506dd4560 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE4.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE5.png b/fonts/TewiFontOutlineAlt/1EE5.png new file mode 100644 index 000000000..4ebdd37d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE5.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE6.png b/fonts/TewiFontOutlineAlt/1EE6.png new file mode 100644 index 000000000..4add804b0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE6.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE7.png b/fonts/TewiFontOutlineAlt/1EE7.png new file mode 100644 index 000000000..99771430d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE7.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE8.png b/fonts/TewiFontOutlineAlt/1EE8.png new file mode 100644 index 000000000..7a61f9768 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE8.png differ diff --git a/fonts/TewiFontOutlineAlt/1EE9.png b/fonts/TewiFontOutlineAlt/1EE9.png new file mode 100644 index 000000000..800c51cde Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EE9.png differ diff --git a/fonts/TewiFontOutlineAlt/1EEA.png b/fonts/TewiFontOutlineAlt/1EEA.png new file mode 100644 index 000000000..7c68d7d55 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EEA.png differ diff --git a/fonts/TewiFontOutlineAlt/1EEB.png b/fonts/TewiFontOutlineAlt/1EEB.png new file mode 100644 index 000000000..4260756ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EEB.png differ diff --git a/fonts/TewiFontOutlineAlt/1EEC.png b/fonts/TewiFontOutlineAlt/1EEC.png new file mode 100644 index 000000000..b266d5da8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EEC.png differ diff --git a/fonts/TewiFontOutlineAlt/1EED.png b/fonts/TewiFontOutlineAlt/1EED.png new file mode 100644 index 000000000..c99fb2da8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EED.png differ diff --git a/fonts/TewiFontOutlineAlt/1EEE.png b/fonts/TewiFontOutlineAlt/1EEE.png new file mode 100644 index 000000000..a3f4ad82b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EEE.png differ diff --git a/fonts/TewiFontOutlineAlt/1EEF.png b/fonts/TewiFontOutlineAlt/1EEF.png new file mode 100644 index 000000000..b8afde710 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EEF.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF0.png b/fonts/TewiFontOutlineAlt/1EF0.png new file mode 100644 index 000000000..0c77c9d82 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF0.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF1.png b/fonts/TewiFontOutlineAlt/1EF1.png new file mode 100644 index 000000000..ddf93dc7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF1.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF2.png b/fonts/TewiFontOutlineAlt/1EF2.png new file mode 100644 index 000000000..da7b58788 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF2.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF3.png b/fonts/TewiFontOutlineAlt/1EF3.png new file mode 100644 index 000000000..fc158ef0b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF3.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF4.png b/fonts/TewiFontOutlineAlt/1EF4.png new file mode 100644 index 000000000..b2060148e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF4.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF5.png b/fonts/TewiFontOutlineAlt/1EF5.png new file mode 100644 index 000000000..a1151a8dc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF5.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF6.png b/fonts/TewiFontOutlineAlt/1EF6.png new file mode 100644 index 000000000..d655f546a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF6.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF7.png b/fonts/TewiFontOutlineAlt/1EF7.png new file mode 100644 index 000000000..8be8a73b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF7.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF8.png b/fonts/TewiFontOutlineAlt/1EF8.png new file mode 100644 index 000000000..4c4e4a91f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF8.png differ diff --git a/fonts/TewiFontOutlineAlt/1EF9.png b/fonts/TewiFontOutlineAlt/1EF9.png new file mode 100644 index 000000000..8b5b7e075 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EF9.png differ diff --git a/fonts/TewiFontOutlineAlt/1EFA.png b/fonts/TewiFontOutlineAlt/1EFA.png new file mode 100644 index 000000000..3bef9bceb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EFA.png differ diff --git a/fonts/TewiFontOutlineAlt/1EFB.png b/fonts/TewiFontOutlineAlt/1EFB.png new file mode 100644 index 000000000..b682ec7e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EFB.png differ diff --git a/fonts/TewiFontOutlineAlt/1EFC.png b/fonts/TewiFontOutlineAlt/1EFC.png new file mode 100644 index 000000000..922721d29 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EFC.png differ diff --git a/fonts/TewiFontOutlineAlt/1EFD.png b/fonts/TewiFontOutlineAlt/1EFD.png new file mode 100644 index 000000000..bb423a380 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EFD.png differ diff --git a/fonts/TewiFontOutlineAlt/1EFE.png b/fonts/TewiFontOutlineAlt/1EFE.png new file mode 100644 index 000000000..acde9e598 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EFE.png differ diff --git a/fonts/TewiFontOutlineAlt/1EFF.png b/fonts/TewiFontOutlineAlt/1EFF.png new file mode 100644 index 000000000..e67de552d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1EFF.png differ diff --git a/fonts/TewiFontOutlineAlt/1F00.png b/fonts/TewiFontOutlineAlt/1F00.png new file mode 100644 index 000000000..4de4e72d1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F00.png differ diff --git a/fonts/TewiFontOutlineAlt/1F01.png b/fonts/TewiFontOutlineAlt/1F01.png new file mode 100644 index 000000000..54f688738 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F01.png differ diff --git a/fonts/TewiFontOutlineAlt/1F02.png b/fonts/TewiFontOutlineAlt/1F02.png new file mode 100644 index 000000000..8e12f4615 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F02.png differ diff --git a/fonts/TewiFontOutlineAlt/1F03.png b/fonts/TewiFontOutlineAlt/1F03.png new file mode 100644 index 000000000..0806a0a26 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F03.png differ diff --git a/fonts/TewiFontOutlineAlt/1F04.png b/fonts/TewiFontOutlineAlt/1F04.png new file mode 100644 index 000000000..0cdba4e34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F04.png differ diff --git a/fonts/TewiFontOutlineAlt/1F05.png b/fonts/TewiFontOutlineAlt/1F05.png new file mode 100644 index 000000000..2e6d924ab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F05.png differ diff --git a/fonts/TewiFontOutlineAlt/1F06.png b/fonts/TewiFontOutlineAlt/1F06.png new file mode 100644 index 000000000..01396286f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F06.png differ diff --git a/fonts/TewiFontOutlineAlt/1F07.png b/fonts/TewiFontOutlineAlt/1F07.png new file mode 100644 index 000000000..e5829caef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F07.png differ diff --git a/fonts/TewiFontOutlineAlt/1F08.png b/fonts/TewiFontOutlineAlt/1F08.png new file mode 100644 index 000000000..b6a931020 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F08.png differ diff --git a/fonts/TewiFontOutlineAlt/1F09.png b/fonts/TewiFontOutlineAlt/1F09.png new file mode 100644 index 000000000..4602a6ce3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F09.png differ diff --git a/fonts/TewiFontOutlineAlt/1F0A.png b/fonts/TewiFontOutlineAlt/1F0A.png new file mode 100644 index 000000000..ffc156288 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F0A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F0B.png b/fonts/TewiFontOutlineAlt/1F0B.png new file mode 100644 index 000000000..5c478a381 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F0B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F0C.png b/fonts/TewiFontOutlineAlt/1F0C.png new file mode 100644 index 000000000..aa031dcca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F0C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F0D.png b/fonts/TewiFontOutlineAlt/1F0D.png new file mode 100644 index 000000000..9e0397995 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F0D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F0E.png b/fonts/TewiFontOutlineAlt/1F0E.png new file mode 100644 index 000000000..1eaa7ebd6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F0E.png differ diff --git a/fonts/TewiFontOutlineAlt/1F0F.png b/fonts/TewiFontOutlineAlt/1F0F.png new file mode 100644 index 000000000..ccefe48c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F0F.png differ diff --git a/fonts/TewiFontOutlineAlt/1F10.png b/fonts/TewiFontOutlineAlt/1F10.png new file mode 100644 index 000000000..21070d7a2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F10.png differ diff --git a/fonts/TewiFontOutlineAlt/1F11.png b/fonts/TewiFontOutlineAlt/1F11.png new file mode 100644 index 000000000..190d15155 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F11.png differ diff --git a/fonts/TewiFontOutlineAlt/1F12.png b/fonts/TewiFontOutlineAlt/1F12.png new file mode 100644 index 000000000..5b95d8c28 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F12.png differ diff --git a/fonts/TewiFontOutlineAlt/1F13.png b/fonts/TewiFontOutlineAlt/1F13.png new file mode 100644 index 000000000..5b95d8c28 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F13.png differ diff --git a/fonts/TewiFontOutlineAlt/1F14.png b/fonts/TewiFontOutlineAlt/1F14.png new file mode 100644 index 000000000..0ae523dad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F14.png differ diff --git a/fonts/TewiFontOutlineAlt/1F15.png b/fonts/TewiFontOutlineAlt/1F15.png new file mode 100644 index 000000000..e7fa45a8d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F15.png differ diff --git a/fonts/TewiFontOutlineAlt/1F18.png b/fonts/TewiFontOutlineAlt/1F18.png new file mode 100644 index 000000000..a308bb435 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F18.png differ diff --git a/fonts/TewiFontOutlineAlt/1F19.png b/fonts/TewiFontOutlineAlt/1F19.png new file mode 100644 index 000000000..b2dbf2651 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F19.png differ diff --git a/fonts/TewiFontOutlineAlt/1F1A.png b/fonts/TewiFontOutlineAlt/1F1A.png new file mode 100644 index 000000000..33566adc6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F1A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F1B.png b/fonts/TewiFontOutlineAlt/1F1B.png new file mode 100644 index 000000000..5674802a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F1B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F1C.png b/fonts/TewiFontOutlineAlt/1F1C.png new file mode 100644 index 000000000..fafd37923 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F1C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F1D.png b/fonts/TewiFontOutlineAlt/1F1D.png new file mode 100644 index 000000000..55f757821 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F1D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F20.png b/fonts/TewiFontOutlineAlt/1F20.png new file mode 100644 index 000000000..5018ed2a9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F20.png differ diff --git a/fonts/TewiFontOutlineAlt/1F21.png b/fonts/TewiFontOutlineAlt/1F21.png new file mode 100644 index 000000000..d33173d38 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F21.png differ diff --git a/fonts/TewiFontOutlineAlt/1F22.png b/fonts/TewiFontOutlineAlt/1F22.png new file mode 100644 index 000000000..1b6f22486 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F22.png differ diff --git a/fonts/TewiFontOutlineAlt/1F23.png b/fonts/TewiFontOutlineAlt/1F23.png new file mode 100644 index 000000000..28ffee4d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F23.png differ diff --git a/fonts/TewiFontOutlineAlt/1F24.png b/fonts/TewiFontOutlineAlt/1F24.png new file mode 100644 index 000000000..feb45c452 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F24.png differ diff --git a/fonts/TewiFontOutlineAlt/1F25.png b/fonts/TewiFontOutlineAlt/1F25.png new file mode 100644 index 000000000..94f67a743 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F25.png differ diff --git a/fonts/TewiFontOutlineAlt/1F26.png b/fonts/TewiFontOutlineAlt/1F26.png new file mode 100644 index 000000000..0e32e3089 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F26.png differ diff --git a/fonts/TewiFontOutlineAlt/1F27.png b/fonts/TewiFontOutlineAlt/1F27.png new file mode 100644 index 000000000..f4339bc34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F27.png differ diff --git a/fonts/TewiFontOutlineAlt/1F28.png b/fonts/TewiFontOutlineAlt/1F28.png new file mode 100644 index 000000000..2d0098427 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F28.png differ diff --git a/fonts/TewiFontOutlineAlt/1F29.png b/fonts/TewiFontOutlineAlt/1F29.png new file mode 100644 index 000000000..f4a41d7a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F29.png differ diff --git a/fonts/TewiFontOutlineAlt/1F2A.png b/fonts/TewiFontOutlineAlt/1F2A.png new file mode 100644 index 000000000..edcf7bee1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F2A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F2B.png b/fonts/TewiFontOutlineAlt/1F2B.png new file mode 100644 index 000000000..1fbe62c86 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F2B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F2C.png b/fonts/TewiFontOutlineAlt/1F2C.png new file mode 100644 index 000000000..317d2da6b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F2C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F2D.png b/fonts/TewiFontOutlineAlt/1F2D.png new file mode 100644 index 000000000..e35c30a67 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F2D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F2E.png b/fonts/TewiFontOutlineAlt/1F2E.png new file mode 100644 index 000000000..5d8a8c7c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F2E.png differ diff --git a/fonts/TewiFontOutlineAlt/1F2F.png b/fonts/TewiFontOutlineAlt/1F2F.png new file mode 100644 index 000000000..0bb3d5942 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F2F.png differ diff --git a/fonts/TewiFontOutlineAlt/1F30.png b/fonts/TewiFontOutlineAlt/1F30.png new file mode 100644 index 000000000..4ed6df22f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F30.png differ diff --git a/fonts/TewiFontOutlineAlt/1F31.png b/fonts/TewiFontOutlineAlt/1F31.png new file mode 100644 index 000000000..36bdab74d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F31.png differ diff --git a/fonts/TewiFontOutlineAlt/1F32.png b/fonts/TewiFontOutlineAlt/1F32.png new file mode 100644 index 000000000..a9c7a3e74 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F32.png differ diff --git a/fonts/TewiFontOutlineAlt/1F33.png b/fonts/TewiFontOutlineAlt/1F33.png new file mode 100644 index 000000000..f19c77c30 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F33.png differ diff --git a/fonts/TewiFontOutlineAlt/1F34.png b/fonts/TewiFontOutlineAlt/1F34.png new file mode 100644 index 000000000..8a1c5ccc5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F34.png differ diff --git a/fonts/TewiFontOutlineAlt/1F35.png b/fonts/TewiFontOutlineAlt/1F35.png new file mode 100644 index 000000000..19d36514d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F35.png differ diff --git a/fonts/TewiFontOutlineAlt/1F36.png b/fonts/TewiFontOutlineAlt/1F36.png new file mode 100644 index 000000000..ee1917703 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F36.png differ diff --git a/fonts/TewiFontOutlineAlt/1F37.png b/fonts/TewiFontOutlineAlt/1F37.png new file mode 100644 index 000000000..a9248e758 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F37.png differ diff --git a/fonts/TewiFontOutlineAlt/1F38.png b/fonts/TewiFontOutlineAlt/1F38.png new file mode 100644 index 000000000..cbb80beb6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F38.png differ diff --git a/fonts/TewiFontOutlineAlt/1F39.png b/fonts/TewiFontOutlineAlt/1F39.png new file mode 100644 index 000000000..e914bc026 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F39.png differ diff --git a/fonts/TewiFontOutlineAlt/1F3A.png b/fonts/TewiFontOutlineAlt/1F3A.png new file mode 100644 index 000000000..b099489d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F3A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F3B.png b/fonts/TewiFontOutlineAlt/1F3B.png new file mode 100644 index 000000000..7739cdb96 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F3B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F3C.png b/fonts/TewiFontOutlineAlt/1F3C.png new file mode 100644 index 000000000..ed1cc3b5a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F3C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F3D.png b/fonts/TewiFontOutlineAlt/1F3D.png new file mode 100644 index 000000000..5d6651972 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F3D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F3E.png b/fonts/TewiFontOutlineAlt/1F3E.png new file mode 100644 index 000000000..096f53385 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F3E.png differ diff --git a/fonts/TewiFontOutlineAlt/1F3F.png b/fonts/TewiFontOutlineAlt/1F3F.png new file mode 100644 index 000000000..fc85ea6b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F3F.png differ diff --git a/fonts/TewiFontOutlineAlt/1F40.png b/fonts/TewiFontOutlineAlt/1F40.png new file mode 100644 index 000000000..c4caa7af1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F40.png differ diff --git a/fonts/TewiFontOutlineAlt/1F41.png b/fonts/TewiFontOutlineAlt/1F41.png new file mode 100644 index 000000000..4379f0d82 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F41.png differ diff --git a/fonts/TewiFontOutlineAlt/1F42.png b/fonts/TewiFontOutlineAlt/1F42.png new file mode 100644 index 000000000..cea1d6717 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F42.png differ diff --git a/fonts/TewiFontOutlineAlt/1F43.png b/fonts/TewiFontOutlineAlt/1F43.png new file mode 100644 index 000000000..5e7572bb0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F43.png differ diff --git a/fonts/TewiFontOutlineAlt/1F44.png b/fonts/TewiFontOutlineAlt/1F44.png new file mode 100644 index 000000000..d22adc86f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F44.png differ diff --git a/fonts/TewiFontOutlineAlt/1F45.png b/fonts/TewiFontOutlineAlt/1F45.png new file mode 100644 index 000000000..c139b52bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F45.png differ diff --git a/fonts/TewiFontOutlineAlt/1F48.png b/fonts/TewiFontOutlineAlt/1F48.png new file mode 100644 index 000000000..4db36fe41 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F48.png differ diff --git a/fonts/TewiFontOutlineAlt/1F49.png b/fonts/TewiFontOutlineAlt/1F49.png new file mode 100644 index 000000000..04827091c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F49.png differ diff --git a/fonts/TewiFontOutlineAlt/1F4A.png b/fonts/TewiFontOutlineAlt/1F4A.png new file mode 100644 index 000000000..38d439a48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F4A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F4B.png b/fonts/TewiFontOutlineAlt/1F4B.png new file mode 100644 index 000000000..f54895d84 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F4B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F4C.png b/fonts/TewiFontOutlineAlt/1F4C.png new file mode 100644 index 000000000..784352a79 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F4C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F4D.png b/fonts/TewiFontOutlineAlt/1F4D.png new file mode 100644 index 000000000..4c5c85c78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F4D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F50.png b/fonts/TewiFontOutlineAlt/1F50.png new file mode 100644 index 000000000..dc3dfd359 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F50.png differ diff --git a/fonts/TewiFontOutlineAlt/1F51.png b/fonts/TewiFontOutlineAlt/1F51.png new file mode 100644 index 000000000..23aaa385e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F51.png differ diff --git a/fonts/TewiFontOutlineAlt/1F52.png b/fonts/TewiFontOutlineAlt/1F52.png new file mode 100644 index 000000000..a16f835ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F52.png differ diff --git a/fonts/TewiFontOutlineAlt/1F53.png b/fonts/TewiFontOutlineAlt/1F53.png new file mode 100644 index 000000000..514164845 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F53.png differ diff --git a/fonts/TewiFontOutlineAlt/1F54.png b/fonts/TewiFontOutlineAlt/1F54.png new file mode 100644 index 000000000..eb37482b0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F54.png differ diff --git a/fonts/TewiFontOutlineAlt/1F55.png b/fonts/TewiFontOutlineAlt/1F55.png new file mode 100644 index 000000000..da98f78b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F55.png differ diff --git a/fonts/TewiFontOutlineAlt/1F56.png b/fonts/TewiFontOutlineAlt/1F56.png new file mode 100644 index 000000000..f68c34c71 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F56.png differ diff --git a/fonts/TewiFontOutlineAlt/1F57.png b/fonts/TewiFontOutlineAlt/1F57.png new file mode 100644 index 000000000..adead02ec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F57.png differ diff --git a/fonts/TewiFontOutlineAlt/1F59.png b/fonts/TewiFontOutlineAlt/1F59.png new file mode 100644 index 000000000..c183b6a60 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F59.png differ diff --git a/fonts/TewiFontOutlineAlt/1F5B.png b/fonts/TewiFontOutlineAlt/1F5B.png new file mode 100644 index 000000000..5788369f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F5B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F5D.png b/fonts/TewiFontOutlineAlt/1F5D.png new file mode 100644 index 000000000..9377170d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F5D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F5F.png b/fonts/TewiFontOutlineAlt/1F5F.png new file mode 100644 index 000000000..e3ca65a6b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F5F.png differ diff --git a/fonts/TewiFontOutlineAlt/1F60.png b/fonts/TewiFontOutlineAlt/1F60.png new file mode 100644 index 000000000..6a61c7731 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F60.png differ diff --git a/fonts/TewiFontOutlineAlt/1F61.png b/fonts/TewiFontOutlineAlt/1F61.png new file mode 100644 index 000000000..ebb8813c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F61.png differ diff --git a/fonts/TewiFontOutlineAlt/1F62.png b/fonts/TewiFontOutlineAlt/1F62.png new file mode 100644 index 000000000..910a0fc0d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F62.png differ diff --git a/fonts/TewiFontOutlineAlt/1F63.png b/fonts/TewiFontOutlineAlt/1F63.png new file mode 100644 index 000000000..2ab96f709 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F63.png differ diff --git a/fonts/TewiFontOutlineAlt/1F64.png b/fonts/TewiFontOutlineAlt/1F64.png new file mode 100644 index 000000000..cbe41829c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F64.png differ diff --git a/fonts/TewiFontOutlineAlt/1F65.png b/fonts/TewiFontOutlineAlt/1F65.png new file mode 100644 index 000000000..1dd01e22a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F65.png differ diff --git a/fonts/TewiFontOutlineAlt/1F66.png b/fonts/TewiFontOutlineAlt/1F66.png new file mode 100644 index 000000000..b5caad43c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F66.png differ diff --git a/fonts/TewiFontOutlineAlt/1F67.png b/fonts/TewiFontOutlineAlt/1F67.png new file mode 100644 index 000000000..fc76fcfa3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F67.png differ diff --git a/fonts/TewiFontOutlineAlt/1F68.png b/fonts/TewiFontOutlineAlt/1F68.png new file mode 100644 index 000000000..998ca152e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F68.png differ diff --git a/fonts/TewiFontOutlineAlt/1F69.png b/fonts/TewiFontOutlineAlt/1F69.png new file mode 100644 index 000000000..7f7d6fcaf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F69.png differ diff --git a/fonts/TewiFontOutlineAlt/1F6A.png b/fonts/TewiFontOutlineAlt/1F6A.png new file mode 100644 index 000000000..c2d03e4a8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F6A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F6B.png b/fonts/TewiFontOutlineAlt/1F6B.png new file mode 100644 index 000000000..75e718476 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F6B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F6C.png b/fonts/TewiFontOutlineAlt/1F6C.png new file mode 100644 index 000000000..bf2946133 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F6C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F6D.png b/fonts/TewiFontOutlineAlt/1F6D.png new file mode 100644 index 000000000..4530836d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F6D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F6E.png b/fonts/TewiFontOutlineAlt/1F6E.png new file mode 100644 index 000000000..a5062faec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F6E.png differ diff --git a/fonts/TewiFontOutlineAlt/1F6F.png b/fonts/TewiFontOutlineAlt/1F6F.png new file mode 100644 index 000000000..24051dc69 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F6F.png differ diff --git a/fonts/TewiFontOutlineAlt/1F70.png b/fonts/TewiFontOutlineAlt/1F70.png new file mode 100644 index 000000000..6f97d7eab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F70.png differ diff --git a/fonts/TewiFontOutlineAlt/1F71.png b/fonts/TewiFontOutlineAlt/1F71.png new file mode 100644 index 000000000..7562ed3e1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F71.png differ diff --git a/fonts/TewiFontOutlineAlt/1F72.png b/fonts/TewiFontOutlineAlt/1F72.png new file mode 100644 index 000000000..a1878a290 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F72.png differ diff --git a/fonts/TewiFontOutlineAlt/1F73.png b/fonts/TewiFontOutlineAlt/1F73.png new file mode 100644 index 000000000..fce3fea37 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F73.png differ diff --git a/fonts/TewiFontOutlineAlt/1F74.png b/fonts/TewiFontOutlineAlt/1F74.png new file mode 100644 index 000000000..f63daba27 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F74.png differ diff --git a/fonts/TewiFontOutlineAlt/1F75.png b/fonts/TewiFontOutlineAlt/1F75.png new file mode 100644 index 000000000..88c138e7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F75.png differ diff --git a/fonts/TewiFontOutlineAlt/1F76.png b/fonts/TewiFontOutlineAlt/1F76.png new file mode 100644 index 000000000..bf4aa31a8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F76.png differ diff --git a/fonts/TewiFontOutlineAlt/1F77.png b/fonts/TewiFontOutlineAlt/1F77.png new file mode 100644 index 000000000..c85ef7bd7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F77.png differ diff --git a/fonts/TewiFontOutlineAlt/1F78.png b/fonts/TewiFontOutlineAlt/1F78.png new file mode 100644 index 000000000..3cab14b1f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F78.png differ diff --git a/fonts/TewiFontOutlineAlt/1F79.png b/fonts/TewiFontOutlineAlt/1F79.png new file mode 100644 index 000000000..6b6d4ea2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F79.png differ diff --git a/fonts/TewiFontOutlineAlt/1F7A.png b/fonts/TewiFontOutlineAlt/1F7A.png new file mode 100644 index 000000000..f8448204c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F7A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F7B.png b/fonts/TewiFontOutlineAlt/1F7B.png new file mode 100644 index 000000000..f5f6f21d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F7B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F7C.png b/fonts/TewiFontOutlineAlt/1F7C.png new file mode 100644 index 000000000..98fffdce7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F7C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F7D.png b/fonts/TewiFontOutlineAlt/1F7D.png new file mode 100644 index 000000000..33dff788e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F7D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F80.png b/fonts/TewiFontOutlineAlt/1F80.png new file mode 100644 index 000000000..0d6ae5bab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F80.png differ diff --git a/fonts/TewiFontOutlineAlt/1F81.png b/fonts/TewiFontOutlineAlt/1F81.png new file mode 100644 index 000000000..237cca88e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F81.png differ diff --git a/fonts/TewiFontOutlineAlt/1F82.png b/fonts/TewiFontOutlineAlt/1F82.png new file mode 100644 index 000000000..7b2d7410b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F82.png differ diff --git a/fonts/TewiFontOutlineAlt/1F83.png b/fonts/TewiFontOutlineAlt/1F83.png new file mode 100644 index 000000000..529ca8a59 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F83.png differ diff --git a/fonts/TewiFontOutlineAlt/1F84.png b/fonts/TewiFontOutlineAlt/1F84.png new file mode 100644 index 000000000..ba8154a1d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F84.png differ diff --git a/fonts/TewiFontOutlineAlt/1F85.png b/fonts/TewiFontOutlineAlt/1F85.png new file mode 100644 index 000000000..bcff2ac7a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F85.png differ diff --git a/fonts/TewiFontOutlineAlt/1F86.png b/fonts/TewiFontOutlineAlt/1F86.png new file mode 100644 index 000000000..2c525f372 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F86.png differ diff --git a/fonts/TewiFontOutlineAlt/1F87.png b/fonts/TewiFontOutlineAlt/1F87.png new file mode 100644 index 000000000..ec5b8908a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F87.png differ diff --git a/fonts/TewiFontOutlineAlt/1F88.png b/fonts/TewiFontOutlineAlt/1F88.png new file mode 100644 index 000000000..937e18f64 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F88.png differ diff --git a/fonts/TewiFontOutlineAlt/1F89.png b/fonts/TewiFontOutlineAlt/1F89.png new file mode 100644 index 000000000..27ac5e080 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F89.png differ diff --git a/fonts/TewiFontOutlineAlt/1F8A.png b/fonts/TewiFontOutlineAlt/1F8A.png new file mode 100644 index 000000000..805c59f30 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F8A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F8B.png b/fonts/TewiFontOutlineAlt/1F8B.png new file mode 100644 index 000000000..02aedc4c6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F8B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F8C.png b/fonts/TewiFontOutlineAlt/1F8C.png new file mode 100644 index 000000000..1aee42bd8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F8C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F8D.png b/fonts/TewiFontOutlineAlt/1F8D.png new file mode 100644 index 000000000..8dabedf9a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F8D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F8E.png b/fonts/TewiFontOutlineAlt/1F8E.png new file mode 100644 index 000000000..606d0cb8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F8E.png differ diff --git a/fonts/TewiFontOutlineAlt/1F8F.png b/fonts/TewiFontOutlineAlt/1F8F.png new file mode 100644 index 000000000..0adcc6662 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F8F.png differ diff --git a/fonts/TewiFontOutlineAlt/1F90.png b/fonts/TewiFontOutlineAlt/1F90.png new file mode 100644 index 000000000..408e88ff3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F90.png differ diff --git a/fonts/TewiFontOutlineAlt/1F91.png b/fonts/TewiFontOutlineAlt/1F91.png new file mode 100644 index 000000000..ff3774bcd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F91.png differ diff --git a/fonts/TewiFontOutlineAlt/1F92.png b/fonts/TewiFontOutlineAlt/1F92.png new file mode 100644 index 000000000..c54dd06cd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F92.png differ diff --git a/fonts/TewiFontOutlineAlt/1F93.png b/fonts/TewiFontOutlineAlt/1F93.png new file mode 100644 index 000000000..99eed0ad1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F93.png differ diff --git a/fonts/TewiFontOutlineAlt/1F94.png b/fonts/TewiFontOutlineAlt/1F94.png new file mode 100644 index 000000000..e510d8d0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F94.png differ diff --git a/fonts/TewiFontOutlineAlt/1F95.png b/fonts/TewiFontOutlineAlt/1F95.png new file mode 100644 index 000000000..c795372cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F95.png differ diff --git a/fonts/TewiFontOutlineAlt/1F96.png b/fonts/TewiFontOutlineAlt/1F96.png new file mode 100644 index 000000000..c54ea558b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F96.png differ diff --git a/fonts/TewiFontOutlineAlt/1F97.png b/fonts/TewiFontOutlineAlt/1F97.png new file mode 100644 index 000000000..535865a92 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F97.png differ diff --git a/fonts/TewiFontOutlineAlt/1F98.png b/fonts/TewiFontOutlineAlt/1F98.png new file mode 100644 index 000000000..66befa812 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F98.png differ diff --git a/fonts/TewiFontOutlineAlt/1F99.png b/fonts/TewiFontOutlineAlt/1F99.png new file mode 100644 index 000000000..9911e3a0f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F99.png differ diff --git a/fonts/TewiFontOutlineAlt/1F9A.png b/fonts/TewiFontOutlineAlt/1F9A.png new file mode 100644 index 000000000..6f400f332 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F9A.png differ diff --git a/fonts/TewiFontOutlineAlt/1F9B.png b/fonts/TewiFontOutlineAlt/1F9B.png new file mode 100644 index 000000000..1e8a5bc11 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F9B.png differ diff --git a/fonts/TewiFontOutlineAlt/1F9C.png b/fonts/TewiFontOutlineAlt/1F9C.png new file mode 100644 index 000000000..4afe8d345 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F9C.png differ diff --git a/fonts/TewiFontOutlineAlt/1F9D.png b/fonts/TewiFontOutlineAlt/1F9D.png new file mode 100644 index 000000000..eab004753 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F9D.png differ diff --git a/fonts/TewiFontOutlineAlt/1F9E.png b/fonts/TewiFontOutlineAlt/1F9E.png new file mode 100644 index 000000000..54cf257c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F9E.png differ diff --git a/fonts/TewiFontOutlineAlt/1F9F.png b/fonts/TewiFontOutlineAlt/1F9F.png new file mode 100644 index 000000000..389c92362 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1F9F.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA0.png b/fonts/TewiFontOutlineAlt/1FA0.png new file mode 100644 index 000000000..3f6f8054d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA0.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA1.png b/fonts/TewiFontOutlineAlt/1FA1.png new file mode 100644 index 000000000..05df588fc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA1.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA2.png b/fonts/TewiFontOutlineAlt/1FA2.png new file mode 100644 index 000000000..8ff3f84f4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA2.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA3.png b/fonts/TewiFontOutlineAlt/1FA3.png new file mode 100644 index 000000000..93ba64f37 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA3.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA4.png b/fonts/TewiFontOutlineAlt/1FA4.png new file mode 100644 index 000000000..da71fd418 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA4.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA5.png b/fonts/TewiFontOutlineAlt/1FA5.png new file mode 100644 index 000000000..8289b91ed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA5.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA6.png b/fonts/TewiFontOutlineAlt/1FA6.png new file mode 100644 index 000000000..d4ad6cf38 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA6.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA7.png b/fonts/TewiFontOutlineAlt/1FA7.png new file mode 100644 index 000000000..7864c0dce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA7.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA8.png b/fonts/TewiFontOutlineAlt/1FA8.png new file mode 100644 index 000000000..d6f75706e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA8.png differ diff --git a/fonts/TewiFontOutlineAlt/1FA9.png b/fonts/TewiFontOutlineAlt/1FA9.png new file mode 100644 index 000000000..7c7f478d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FA9.png differ diff --git a/fonts/TewiFontOutlineAlt/1FAA.png b/fonts/TewiFontOutlineAlt/1FAA.png new file mode 100644 index 000000000..b5df082c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FAA.png differ diff --git a/fonts/TewiFontOutlineAlt/1FAB.png b/fonts/TewiFontOutlineAlt/1FAB.png new file mode 100644 index 000000000..3ab24ecc1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FAB.png differ diff --git a/fonts/TewiFontOutlineAlt/1FAC.png b/fonts/TewiFontOutlineAlt/1FAC.png new file mode 100644 index 000000000..b29d87db8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FAC.png differ diff --git a/fonts/TewiFontOutlineAlt/1FAD.png b/fonts/TewiFontOutlineAlt/1FAD.png new file mode 100644 index 000000000..1f918d6c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FAD.png differ diff --git a/fonts/TewiFontOutlineAlt/1FAE.png b/fonts/TewiFontOutlineAlt/1FAE.png new file mode 100644 index 000000000..b69d848e0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FAE.png differ diff --git a/fonts/TewiFontOutlineAlt/1FAF.png b/fonts/TewiFontOutlineAlt/1FAF.png new file mode 100644 index 000000000..d896a0db4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FAF.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB0.png b/fonts/TewiFontOutlineAlt/1FB0.png new file mode 100644 index 000000000..608f94db8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB0.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB1.png b/fonts/TewiFontOutlineAlt/1FB1.png new file mode 100644 index 000000000..1beef2ce3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB1.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB2.png b/fonts/TewiFontOutlineAlt/1FB2.png new file mode 100644 index 000000000..34d0499de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB2.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB3.png b/fonts/TewiFontOutlineAlt/1FB3.png new file mode 100644 index 000000000..2b4039792 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB3.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB4.png b/fonts/TewiFontOutlineAlt/1FB4.png new file mode 100644 index 000000000..cdc1e51a4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB4.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB6.png b/fonts/TewiFontOutlineAlt/1FB6.png new file mode 100644 index 000000000..238e0d1df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB6.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB7.png b/fonts/TewiFontOutlineAlt/1FB7.png new file mode 100644 index 000000000..02bb66e87 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB7.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB8.png b/fonts/TewiFontOutlineAlt/1FB8.png new file mode 100644 index 000000000..a521734c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB8.png differ diff --git a/fonts/TewiFontOutlineAlt/1FB9.png b/fonts/TewiFontOutlineAlt/1FB9.png new file mode 100644 index 000000000..12fb79318 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FB9.png differ diff --git a/fonts/TewiFontOutlineAlt/1FBA.png b/fonts/TewiFontOutlineAlt/1FBA.png new file mode 100644 index 000000000..071962be2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FBA.png differ diff --git a/fonts/TewiFontOutlineAlt/1FBB.png b/fonts/TewiFontOutlineAlt/1FBB.png new file mode 100644 index 000000000..721eb8256 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FBB.png differ diff --git a/fonts/TewiFontOutlineAlt/1FBC.png b/fonts/TewiFontOutlineAlt/1FBC.png new file mode 100644 index 000000000..432556668 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FBC.png differ diff --git a/fonts/TewiFontOutlineAlt/1FBD.png b/fonts/TewiFontOutlineAlt/1FBD.png new file mode 100644 index 000000000..e8b826ecf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FBD.png differ diff --git a/fonts/TewiFontOutlineAlt/1FBE.png b/fonts/TewiFontOutlineAlt/1FBE.png new file mode 100644 index 000000000..f6089c0d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FBE.png differ diff --git a/fonts/TewiFontOutlineAlt/1FBF.png b/fonts/TewiFontOutlineAlt/1FBF.png new file mode 100644 index 000000000..e8b826ecf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FBF.png differ diff --git a/fonts/TewiFontOutlineAlt/1FC2.png b/fonts/TewiFontOutlineAlt/1FC2.png new file mode 100644 index 000000000..88b5fc430 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FC2.png differ diff --git a/fonts/TewiFontOutlineAlt/1FC3.png b/fonts/TewiFontOutlineAlt/1FC3.png new file mode 100644 index 000000000..39d9e6c12 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FC3.png differ diff --git a/fonts/TewiFontOutlineAlt/1FC4.png b/fonts/TewiFontOutlineAlt/1FC4.png new file mode 100644 index 000000000..282a2ef9e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FC4.png differ diff --git a/fonts/TewiFontOutlineAlt/1FC6.png b/fonts/TewiFontOutlineAlt/1FC6.png new file mode 100644 index 000000000..93dd1ff9f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FC6.png differ diff --git a/fonts/TewiFontOutlineAlt/1FC7.png b/fonts/TewiFontOutlineAlt/1FC7.png new file mode 100644 index 000000000..e73a5c29b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FC7.png differ diff --git a/fonts/TewiFontOutlineAlt/1FC8.png b/fonts/TewiFontOutlineAlt/1FC8.png new file mode 100644 index 000000000..e5416c509 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FC8.png differ diff --git a/fonts/TewiFontOutlineAlt/1FC9.png b/fonts/TewiFontOutlineAlt/1FC9.png new file mode 100644 index 000000000..2e3e4046c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FC9.png differ diff --git a/fonts/TewiFontOutlineAlt/1FCA.png b/fonts/TewiFontOutlineAlt/1FCA.png new file mode 100644 index 000000000..72dd5aa84 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FCA.png differ diff --git a/fonts/TewiFontOutlineAlt/1FCB.png b/fonts/TewiFontOutlineAlt/1FCB.png new file mode 100644 index 000000000..2ba6356a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FCB.png differ diff --git a/fonts/TewiFontOutlineAlt/1FCC.png b/fonts/TewiFontOutlineAlt/1FCC.png new file mode 100644 index 000000000..82588b124 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FCC.png differ diff --git a/fonts/TewiFontOutlineAlt/1FCD.png b/fonts/TewiFontOutlineAlt/1FCD.png new file mode 100644 index 000000000..888a22250 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FCD.png differ diff --git a/fonts/TewiFontOutlineAlt/1FCE.png b/fonts/TewiFontOutlineAlt/1FCE.png new file mode 100644 index 000000000..0fce37220 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FCE.png differ diff --git a/fonts/TewiFontOutlineAlt/1FCF.png b/fonts/TewiFontOutlineAlt/1FCF.png new file mode 100644 index 000000000..3c375461d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FCF.png differ diff --git a/fonts/TewiFontOutlineAlt/1FD0.png b/fonts/TewiFontOutlineAlt/1FD0.png new file mode 100644 index 000000000..98636949e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FD0.png differ diff --git a/fonts/TewiFontOutlineAlt/1FD1.png b/fonts/TewiFontOutlineAlt/1FD1.png new file mode 100644 index 000000000..a2aed8097 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FD1.png differ diff --git a/fonts/TewiFontOutlineAlt/1FD2.png b/fonts/TewiFontOutlineAlt/1FD2.png new file mode 100644 index 000000000..6a10bba60 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FD2.png differ diff --git a/fonts/TewiFontOutlineAlt/1FD3.png b/fonts/TewiFontOutlineAlt/1FD3.png new file mode 100644 index 000000000..2055993ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FD3.png differ diff --git a/fonts/TewiFontOutlineAlt/1FD6.png b/fonts/TewiFontOutlineAlt/1FD6.png new file mode 100644 index 000000000..03ba40125 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FD6.png differ diff --git a/fonts/TewiFontOutlineAlt/1FD7.png b/fonts/TewiFontOutlineAlt/1FD7.png new file mode 100644 index 000000000..0da5c46c1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FD7.png differ diff --git a/fonts/TewiFontOutlineAlt/1FD8.png b/fonts/TewiFontOutlineAlt/1FD8.png new file mode 100644 index 000000000..618e84390 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FD8.png differ diff --git a/fonts/TewiFontOutlineAlt/1FD9.png b/fonts/TewiFontOutlineAlt/1FD9.png new file mode 100644 index 000000000..a185af38b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FD9.png differ diff --git a/fonts/TewiFontOutlineAlt/1FDA.png b/fonts/TewiFontOutlineAlt/1FDA.png new file mode 100644 index 000000000..1b4bd9991 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FDA.png differ diff --git a/fonts/TewiFontOutlineAlt/1FDB.png b/fonts/TewiFontOutlineAlt/1FDB.png new file mode 100644 index 000000000..6200aec00 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FDB.png differ diff --git a/fonts/TewiFontOutlineAlt/1FDD.png b/fonts/TewiFontOutlineAlt/1FDD.png new file mode 100644 index 000000000..176a82350 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FDD.png differ diff --git a/fonts/TewiFontOutlineAlt/1FDE.png b/fonts/TewiFontOutlineAlt/1FDE.png new file mode 100644 index 000000000..31f1dc814 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FDE.png differ diff --git a/fonts/TewiFontOutlineAlt/1FDF.png b/fonts/TewiFontOutlineAlt/1FDF.png new file mode 100644 index 000000000..e3d843041 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FDF.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE0.png b/fonts/TewiFontOutlineAlt/1FE0.png new file mode 100644 index 000000000..c9eba75f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE0.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE1.png b/fonts/TewiFontOutlineAlt/1FE1.png new file mode 100644 index 000000000..47b2df96b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE1.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE2.png b/fonts/TewiFontOutlineAlt/1FE2.png new file mode 100644 index 000000000..2b974e1f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE2.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE3.png b/fonts/TewiFontOutlineAlt/1FE3.png new file mode 100644 index 000000000..e601e5cba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE3.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE4.png b/fonts/TewiFontOutlineAlt/1FE4.png new file mode 100644 index 000000000..8d098238a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE4.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE5.png b/fonts/TewiFontOutlineAlt/1FE5.png new file mode 100644 index 000000000..9e9b0308a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE5.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE6.png b/fonts/TewiFontOutlineAlt/1FE6.png new file mode 100644 index 000000000..ce1e5a43c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE6.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE7.png b/fonts/TewiFontOutlineAlt/1FE7.png new file mode 100644 index 000000000..b620fa18f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE7.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE8.png b/fonts/TewiFontOutlineAlt/1FE8.png new file mode 100644 index 000000000..138cc2b18 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE8.png differ diff --git a/fonts/TewiFontOutlineAlt/1FE9.png b/fonts/TewiFontOutlineAlt/1FE9.png new file mode 100644 index 000000000..c0413ec64 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FE9.png differ diff --git a/fonts/TewiFontOutlineAlt/1FEA.png b/fonts/TewiFontOutlineAlt/1FEA.png new file mode 100644 index 000000000..45a796047 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FEA.png differ diff --git a/fonts/TewiFontOutlineAlt/1FEB.png b/fonts/TewiFontOutlineAlt/1FEB.png new file mode 100644 index 000000000..51aa91048 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FEB.png differ diff --git a/fonts/TewiFontOutlineAlt/1FEC.png b/fonts/TewiFontOutlineAlt/1FEC.png new file mode 100644 index 000000000..4228cfa8f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FEC.png differ diff --git a/fonts/TewiFontOutlineAlt/1FED.png b/fonts/TewiFontOutlineAlt/1FED.png new file mode 100644 index 000000000..b68989c1b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FED.png differ diff --git a/fonts/TewiFontOutlineAlt/1FEE.png b/fonts/TewiFontOutlineAlt/1FEE.png new file mode 100644 index 000000000..c6196f3c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FEE.png differ diff --git a/fonts/TewiFontOutlineAlt/1FEF.png b/fonts/TewiFontOutlineAlt/1FEF.png new file mode 100644 index 000000000..dbdc11bdd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FEF.png differ diff --git a/fonts/TewiFontOutlineAlt/1FF2.png b/fonts/TewiFontOutlineAlt/1FF2.png new file mode 100644 index 000000000..f60b54e5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FF2.png differ diff --git a/fonts/TewiFontOutlineAlt/1FF3.png b/fonts/TewiFontOutlineAlt/1FF3.png new file mode 100644 index 000000000..a2641d9aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FF3.png differ diff --git a/fonts/TewiFontOutlineAlt/1FF4.png b/fonts/TewiFontOutlineAlt/1FF4.png new file mode 100644 index 000000000..ec2dc5978 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FF4.png differ diff --git a/fonts/TewiFontOutlineAlt/1FF6.png b/fonts/TewiFontOutlineAlt/1FF6.png new file mode 100644 index 000000000..059ca9f04 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FF6.png differ diff --git a/fonts/TewiFontOutlineAlt/1FF7.png b/fonts/TewiFontOutlineAlt/1FF7.png new file mode 100644 index 000000000..bab85c0e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FF7.png differ diff --git a/fonts/TewiFontOutlineAlt/1FF8.png b/fonts/TewiFontOutlineAlt/1FF8.png new file mode 100644 index 000000000..f0df1f60f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FF8.png differ diff --git a/fonts/TewiFontOutlineAlt/1FF9.png b/fonts/TewiFontOutlineAlt/1FF9.png new file mode 100644 index 000000000..e42f32536 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FF9.png differ diff --git a/fonts/TewiFontOutlineAlt/1FFA.png b/fonts/TewiFontOutlineAlt/1FFA.png new file mode 100644 index 000000000..fd53a2113 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FFA.png differ diff --git a/fonts/TewiFontOutlineAlt/1FFB.png b/fonts/TewiFontOutlineAlt/1FFB.png new file mode 100644 index 000000000..7b391b91b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FFB.png differ diff --git a/fonts/TewiFontOutlineAlt/1FFC.png b/fonts/TewiFontOutlineAlt/1FFC.png new file mode 100644 index 000000000..6bad006a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FFC.png differ diff --git a/fonts/TewiFontOutlineAlt/1FFD.png b/fonts/TewiFontOutlineAlt/1FFD.png new file mode 100644 index 000000000..0daf4c064 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FFD.png differ diff --git a/fonts/TewiFontOutlineAlt/1FFE.png b/fonts/TewiFontOutlineAlt/1FFE.png new file mode 100644 index 000000000..c02ab2ab5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/1FFE.png differ diff --git a/fonts/TewiFontOutlineAlt/2010.png b/fonts/TewiFontOutlineAlt/2010.png new file mode 100644 index 000000000..fbf4b8dcc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2010.png differ diff --git a/fonts/TewiFontOutlineAlt/2012.png b/fonts/TewiFontOutlineAlt/2012.png new file mode 100644 index 000000000..9e63be8e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2012.png differ diff --git a/fonts/TewiFontOutlineAlt/2013.png b/fonts/TewiFontOutlineAlt/2013.png new file mode 100644 index 000000000..9e63be8e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2013.png differ diff --git a/fonts/TewiFontOutlineAlt/2014.png b/fonts/TewiFontOutlineAlt/2014.png new file mode 100644 index 000000000..75cd3dfca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2014.png differ diff --git a/fonts/TewiFontOutlineAlt/2015.png b/fonts/TewiFontOutlineAlt/2015.png new file mode 100644 index 000000000..75cd3dfca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2015.png differ diff --git a/fonts/TewiFontOutlineAlt/2016.png b/fonts/TewiFontOutlineAlt/2016.png new file mode 100644 index 000000000..d1b290a7a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2016.png differ diff --git a/fonts/TewiFontOutlineAlt/2017.png b/fonts/TewiFontOutlineAlt/2017.png new file mode 100644 index 000000000..fc1605c96 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2017.png differ diff --git a/fonts/TewiFontOutlineAlt/2018.png b/fonts/TewiFontOutlineAlt/2018.png new file mode 100644 index 000000000..b92a846dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2018.png differ diff --git a/fonts/TewiFontOutlineAlt/2019.png b/fonts/TewiFontOutlineAlt/2019.png new file mode 100644 index 000000000..e8b826ecf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2019.png differ diff --git a/fonts/TewiFontOutlineAlt/201A.png b/fonts/TewiFontOutlineAlt/201A.png new file mode 100644 index 000000000..e2224d880 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/201A.png differ diff --git a/fonts/TewiFontOutlineAlt/201B.png b/fonts/TewiFontOutlineAlt/201B.png new file mode 100644 index 000000000..c02ab2ab5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/201B.png differ diff --git a/fonts/TewiFontOutlineAlt/201C.png b/fonts/TewiFontOutlineAlt/201C.png new file mode 100644 index 000000000..ed6353d5a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/201C.png differ diff --git a/fonts/TewiFontOutlineAlt/201D.png b/fonts/TewiFontOutlineAlt/201D.png new file mode 100644 index 000000000..b02029b6e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/201D.png differ diff --git a/fonts/TewiFontOutlineAlt/201E.png b/fonts/TewiFontOutlineAlt/201E.png new file mode 100644 index 000000000..fed9a563e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/201E.png differ diff --git a/fonts/TewiFontOutlineAlt/201F.png b/fonts/TewiFontOutlineAlt/201F.png new file mode 100644 index 000000000..eab4a42b1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/201F.png differ diff --git a/fonts/TewiFontOutlineAlt/2020.png b/fonts/TewiFontOutlineAlt/2020.png new file mode 100644 index 000000000..53c66fac5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2020.png differ diff --git a/fonts/TewiFontOutlineAlt/2021.png b/fonts/TewiFontOutlineAlt/2021.png new file mode 100644 index 000000000..93324a7cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2021.png differ diff --git a/fonts/TewiFontOutlineAlt/2022.png b/fonts/TewiFontOutlineAlt/2022.png new file mode 100644 index 000000000..320703b0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2022.png differ diff --git a/fonts/TewiFontOutlineAlt/2023.png b/fonts/TewiFontOutlineAlt/2023.png new file mode 100644 index 000000000..e7498c32c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2023.png differ diff --git a/fonts/TewiFontOutlineAlt/2024.png b/fonts/TewiFontOutlineAlt/2024.png new file mode 100644 index 000000000..a8b31c029 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2024.png differ diff --git a/fonts/TewiFontOutlineAlt/2025.png b/fonts/TewiFontOutlineAlt/2025.png new file mode 100644 index 000000000..401f37e32 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2025.png differ diff --git a/fonts/TewiFontOutlineAlt/2026.png b/fonts/TewiFontOutlineAlt/2026.png new file mode 100644 index 000000000..e5b0d5192 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2026.png differ diff --git a/fonts/TewiFontOutlineAlt/2027.png b/fonts/TewiFontOutlineAlt/2027.png new file mode 100644 index 000000000..2cfab1be6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2027.png differ diff --git a/fonts/TewiFontOutlineAlt/2030.png b/fonts/TewiFontOutlineAlt/2030.png new file mode 100644 index 000000000..000278872 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2030.png differ diff --git a/fonts/TewiFontOutlineAlt/2032.png b/fonts/TewiFontOutlineAlt/2032.png new file mode 100644 index 000000000..460cb369c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2032.png differ diff --git a/fonts/TewiFontOutlineAlt/2033.png b/fonts/TewiFontOutlineAlt/2033.png new file mode 100644 index 000000000..bf49655e1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2033.png differ diff --git a/fonts/TewiFontOutlineAlt/2034.png b/fonts/TewiFontOutlineAlt/2034.png new file mode 100644 index 000000000..bc46fd8dc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2034.png differ diff --git a/fonts/TewiFontOutlineAlt/2035.png b/fonts/TewiFontOutlineAlt/2035.png new file mode 100644 index 000000000..7c22371e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2035.png differ diff --git a/fonts/TewiFontOutlineAlt/2036.png b/fonts/TewiFontOutlineAlt/2036.png new file mode 100644 index 000000000..5339b5124 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2036.png differ diff --git a/fonts/TewiFontOutlineAlt/2037.png b/fonts/TewiFontOutlineAlt/2037.png new file mode 100644 index 000000000..5b8274a8f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2037.png differ diff --git a/fonts/TewiFontOutlineAlt/2038.png b/fonts/TewiFontOutlineAlt/2038.png new file mode 100644 index 000000000..1dd2e3f09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2038.png differ diff --git a/fonts/TewiFontOutlineAlt/2039.png b/fonts/TewiFontOutlineAlt/2039.png new file mode 100644 index 000000000..8e32ac167 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2039.png differ diff --git a/fonts/TewiFontOutlineAlt/203A.png b/fonts/TewiFontOutlineAlt/203A.png new file mode 100644 index 000000000..a416efadd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/203A.png differ diff --git a/fonts/TewiFontOutlineAlt/203C.png b/fonts/TewiFontOutlineAlt/203C.png new file mode 100644 index 000000000..8449b5982 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/203C.png differ diff --git a/fonts/TewiFontOutlineAlt/203D.png b/fonts/TewiFontOutlineAlt/203D.png new file mode 100644 index 000000000..5f980f109 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/203D.png differ diff --git a/fonts/TewiFontOutlineAlt/203E.png b/fonts/TewiFontOutlineAlt/203E.png new file mode 100644 index 000000000..82c3c8d32 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/203E.png differ diff --git a/fonts/TewiFontOutlineAlt/203F.png b/fonts/TewiFontOutlineAlt/203F.png new file mode 100644 index 000000000..bdcf4a847 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/203F.png differ diff --git a/fonts/TewiFontOutlineAlt/2040.png b/fonts/TewiFontOutlineAlt/2040.png new file mode 100644 index 000000000..797a4d407 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2040.png differ diff --git a/fonts/TewiFontOutlineAlt/2041.png b/fonts/TewiFontOutlineAlt/2041.png new file mode 100644 index 000000000..957642ea1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2041.png differ diff --git a/fonts/TewiFontOutlineAlt/2042.png b/fonts/TewiFontOutlineAlt/2042.png new file mode 100644 index 000000000..862438ce8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2042.png differ diff --git a/fonts/TewiFontOutlineAlt/2043.png b/fonts/TewiFontOutlineAlt/2043.png new file mode 100644 index 000000000..49b0ffad9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2043.png differ diff --git a/fonts/TewiFontOutlineAlt/2044.png b/fonts/TewiFontOutlineAlt/2044.png new file mode 100644 index 000000000..12dc718f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2044.png differ diff --git a/fonts/TewiFontOutlineAlt/2045.png b/fonts/TewiFontOutlineAlt/2045.png new file mode 100644 index 000000000..3dba1fe00 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2045.png differ diff --git a/fonts/TewiFontOutlineAlt/2046.png b/fonts/TewiFontOutlineAlt/2046.png new file mode 100644 index 000000000..81d727435 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2046.png differ diff --git a/fonts/TewiFontOutlineAlt/2047.png b/fonts/TewiFontOutlineAlt/2047.png new file mode 100644 index 000000000..dce29c053 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2047.png differ diff --git a/fonts/TewiFontOutlineAlt/2048.png b/fonts/TewiFontOutlineAlt/2048.png new file mode 100644 index 000000000..d740ca80d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2048.png differ diff --git a/fonts/TewiFontOutlineAlt/2049.png b/fonts/TewiFontOutlineAlt/2049.png new file mode 100644 index 000000000..db4d92c45 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2049.png differ diff --git a/fonts/TewiFontOutlineAlt/204A.png b/fonts/TewiFontOutlineAlt/204A.png new file mode 100644 index 000000000..be9519a90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/204A.png differ diff --git a/fonts/TewiFontOutlineAlt/204B.png b/fonts/TewiFontOutlineAlt/204B.png new file mode 100644 index 000000000..91c358881 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/204B.png differ diff --git a/fonts/TewiFontOutlineAlt/204C.png b/fonts/TewiFontOutlineAlt/204C.png new file mode 100644 index 000000000..e380f6967 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/204C.png differ diff --git a/fonts/TewiFontOutlineAlt/204D.png b/fonts/TewiFontOutlineAlt/204D.png new file mode 100644 index 000000000..09b12f520 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/204D.png differ diff --git a/fonts/TewiFontOutlineAlt/204E.png b/fonts/TewiFontOutlineAlt/204E.png new file mode 100644 index 000000000..cc45ecabb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/204E.png differ diff --git a/fonts/TewiFontOutlineAlt/204F.png b/fonts/TewiFontOutlineAlt/204F.png new file mode 100644 index 000000000..bdb11b7cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/204F.png differ diff --git a/fonts/TewiFontOutlineAlt/2050.png b/fonts/TewiFontOutlineAlt/2050.png new file mode 100644 index 000000000..239ddc535 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2050.png differ diff --git a/fonts/TewiFontOutlineAlt/2051.png b/fonts/TewiFontOutlineAlt/2051.png new file mode 100644 index 000000000..e1573f498 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2051.png differ diff --git a/fonts/TewiFontOutlineAlt/2052.png b/fonts/TewiFontOutlineAlt/2052.png new file mode 100644 index 000000000..e76225888 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2052.png differ diff --git a/fonts/TewiFontOutlineAlt/2053.png b/fonts/TewiFontOutlineAlt/2053.png new file mode 100644 index 000000000..77a06dbfc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2053.png differ diff --git a/fonts/TewiFontOutlineAlt/2054.png b/fonts/TewiFontOutlineAlt/2054.png new file mode 100644 index 000000000..67d46f50d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2054.png differ diff --git a/fonts/TewiFontOutlineAlt/2055.png b/fonts/TewiFontOutlineAlt/2055.png new file mode 100644 index 000000000..fd286726e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2055.png differ diff --git a/fonts/TewiFontOutlineAlt/2056.png b/fonts/TewiFontOutlineAlt/2056.png new file mode 100644 index 000000000..fb6056a93 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2056.png differ diff --git a/fonts/TewiFontOutlineAlt/2058.png b/fonts/TewiFontOutlineAlt/2058.png new file mode 100644 index 000000000..70de2a6bc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2058.png differ diff --git a/fonts/TewiFontOutlineAlt/2059.png b/fonts/TewiFontOutlineAlt/2059.png new file mode 100644 index 000000000..ae606395a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2059.png differ diff --git a/fonts/TewiFontOutlineAlt/205A.png b/fonts/TewiFontOutlineAlt/205A.png new file mode 100644 index 000000000..c8c505ea4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/205A.png differ diff --git a/fonts/TewiFontOutlineAlt/205B.png b/fonts/TewiFontOutlineAlt/205B.png new file mode 100644 index 000000000..3c01ac180 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/205B.png differ diff --git a/fonts/TewiFontOutlineAlt/205C.png b/fonts/TewiFontOutlineAlt/205C.png new file mode 100644 index 000000000..c1d05d0b8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/205C.png differ diff --git a/fonts/TewiFontOutlineAlt/205D.png b/fonts/TewiFontOutlineAlt/205D.png new file mode 100644 index 000000000..24b9dcac0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/205D.png differ diff --git a/fonts/TewiFontOutlineAlt/205E.png b/fonts/TewiFontOutlineAlt/205E.png new file mode 100644 index 000000000..e4d5161ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/205E.png differ diff --git a/fonts/TewiFontOutlineAlt/2070.png b/fonts/TewiFontOutlineAlt/2070.png new file mode 100644 index 000000000..806896946 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2070.png differ diff --git a/fonts/TewiFontOutlineAlt/2071.png b/fonts/TewiFontOutlineAlt/2071.png new file mode 100644 index 000000000..b3c638440 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2071.png differ diff --git a/fonts/TewiFontOutlineAlt/2074.png b/fonts/TewiFontOutlineAlt/2074.png new file mode 100644 index 000000000..8e3ecbc71 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2074.png differ diff --git a/fonts/TewiFontOutlineAlt/2075.png b/fonts/TewiFontOutlineAlt/2075.png new file mode 100644 index 000000000..9f7c1fd44 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2075.png differ diff --git a/fonts/TewiFontOutlineAlt/2076.png b/fonts/TewiFontOutlineAlt/2076.png new file mode 100644 index 000000000..7b94f3106 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2076.png differ diff --git a/fonts/TewiFontOutlineAlt/2077.png b/fonts/TewiFontOutlineAlt/2077.png new file mode 100644 index 000000000..f5c13411a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2077.png differ diff --git a/fonts/TewiFontOutlineAlt/2078.png b/fonts/TewiFontOutlineAlt/2078.png new file mode 100644 index 000000000..e2798c2ed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2078.png differ diff --git a/fonts/TewiFontOutlineAlt/2079.png b/fonts/TewiFontOutlineAlt/2079.png new file mode 100644 index 000000000..2bbc7ecdc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2079.png differ diff --git a/fonts/TewiFontOutlineAlt/207A.png b/fonts/TewiFontOutlineAlt/207A.png new file mode 100644 index 000000000..730b70eac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/207A.png differ diff --git a/fonts/TewiFontOutlineAlt/207B.png b/fonts/TewiFontOutlineAlt/207B.png new file mode 100644 index 000000000..ee6971f01 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/207B.png differ diff --git a/fonts/TewiFontOutlineAlt/207C.png b/fonts/TewiFontOutlineAlt/207C.png new file mode 100644 index 000000000..991e4cd50 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/207C.png differ diff --git a/fonts/TewiFontOutlineAlt/207D.png b/fonts/TewiFontOutlineAlt/207D.png new file mode 100644 index 000000000..97bcbfdfc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/207D.png differ diff --git a/fonts/TewiFontOutlineAlt/207E.png b/fonts/TewiFontOutlineAlt/207E.png new file mode 100644 index 000000000..c152ac7cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/207E.png differ diff --git a/fonts/TewiFontOutlineAlt/207F.png b/fonts/TewiFontOutlineAlt/207F.png new file mode 100644 index 000000000..abe2dfa82 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/207F.png differ diff --git a/fonts/TewiFontOutlineAlt/2080.png b/fonts/TewiFontOutlineAlt/2080.png new file mode 100644 index 000000000..371ed4d0e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2080.png differ diff --git a/fonts/TewiFontOutlineAlt/2081.png b/fonts/TewiFontOutlineAlt/2081.png new file mode 100644 index 000000000..b5495e4be Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2081.png differ diff --git a/fonts/TewiFontOutlineAlt/2082.png b/fonts/TewiFontOutlineAlt/2082.png new file mode 100644 index 000000000..d292f7843 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2082.png differ diff --git a/fonts/TewiFontOutlineAlt/2083.png b/fonts/TewiFontOutlineAlt/2083.png new file mode 100644 index 000000000..3e1a6b436 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2083.png differ diff --git a/fonts/TewiFontOutlineAlt/2084.png b/fonts/TewiFontOutlineAlt/2084.png new file mode 100644 index 000000000..349a5e9b3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2084.png differ diff --git a/fonts/TewiFontOutlineAlt/2085.png b/fonts/TewiFontOutlineAlt/2085.png new file mode 100644 index 000000000..3a0728304 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2085.png differ diff --git a/fonts/TewiFontOutlineAlt/2086.png b/fonts/TewiFontOutlineAlt/2086.png new file mode 100644 index 000000000..53d572a42 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2086.png differ diff --git a/fonts/TewiFontOutlineAlt/2087.png b/fonts/TewiFontOutlineAlt/2087.png new file mode 100644 index 000000000..dd80f8a03 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2087.png differ diff --git a/fonts/TewiFontOutlineAlt/2088.png b/fonts/TewiFontOutlineAlt/2088.png new file mode 100644 index 000000000..5042da50c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2088.png differ diff --git a/fonts/TewiFontOutlineAlt/2089.png b/fonts/TewiFontOutlineAlt/2089.png new file mode 100644 index 000000000..c457dacf2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2089.png differ diff --git a/fonts/TewiFontOutlineAlt/208A.png b/fonts/TewiFontOutlineAlt/208A.png new file mode 100644 index 000000000..e3ca44212 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/208A.png differ diff --git a/fonts/TewiFontOutlineAlt/208B.png b/fonts/TewiFontOutlineAlt/208B.png new file mode 100644 index 000000000..e9815ac18 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/208B.png differ diff --git a/fonts/TewiFontOutlineAlt/208C.png b/fonts/TewiFontOutlineAlt/208C.png new file mode 100644 index 000000000..71dd83faf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/208C.png differ diff --git a/fonts/TewiFontOutlineAlt/208D.png b/fonts/TewiFontOutlineAlt/208D.png new file mode 100644 index 000000000..82cf49415 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/208D.png differ diff --git a/fonts/TewiFontOutlineAlt/208E.png b/fonts/TewiFontOutlineAlt/208E.png new file mode 100644 index 000000000..234527df7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/208E.png differ diff --git a/fonts/TewiFontOutlineAlt/2090.png b/fonts/TewiFontOutlineAlt/2090.png new file mode 100644 index 000000000..5abc6014f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2090.png differ diff --git a/fonts/TewiFontOutlineAlt/2091.png b/fonts/TewiFontOutlineAlt/2091.png new file mode 100644 index 000000000..33b895bae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2091.png differ diff --git a/fonts/TewiFontOutlineAlt/2092.png b/fonts/TewiFontOutlineAlt/2092.png new file mode 100644 index 000000000..6610ee46a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2092.png differ diff --git a/fonts/TewiFontOutlineAlt/2093.png b/fonts/TewiFontOutlineAlt/2093.png new file mode 100644 index 000000000..144bae0b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2093.png differ diff --git a/fonts/TewiFontOutlineAlt/2094.png b/fonts/TewiFontOutlineAlt/2094.png new file mode 100644 index 000000000..a213f3b3c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2094.png differ diff --git a/fonts/TewiFontOutlineAlt/2095.png b/fonts/TewiFontOutlineAlt/2095.png new file mode 100644 index 000000000..70a742195 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2095.png differ diff --git a/fonts/TewiFontOutlineAlt/2096.png b/fonts/TewiFontOutlineAlt/2096.png new file mode 100644 index 000000000..9a1e859d3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2096.png differ diff --git a/fonts/TewiFontOutlineAlt/2097.png b/fonts/TewiFontOutlineAlt/2097.png new file mode 100644 index 000000000..54308a8bc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2097.png differ diff --git a/fonts/TewiFontOutlineAlt/2098.png b/fonts/TewiFontOutlineAlt/2098.png new file mode 100644 index 000000000..13d7885b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2098.png differ diff --git a/fonts/TewiFontOutlineAlt/2099.png b/fonts/TewiFontOutlineAlt/2099.png new file mode 100644 index 000000000..f9c791591 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2099.png differ diff --git a/fonts/TewiFontOutlineAlt/209A.png b/fonts/TewiFontOutlineAlt/209A.png new file mode 100644 index 000000000..89b92bcc7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/209A.png differ diff --git a/fonts/TewiFontOutlineAlt/209B.png b/fonts/TewiFontOutlineAlt/209B.png new file mode 100644 index 000000000..ec8557227 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/209B.png differ diff --git a/fonts/TewiFontOutlineAlt/209C.png b/fonts/TewiFontOutlineAlt/209C.png new file mode 100644 index 000000000..9ae1d9ec1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/209C.png differ diff --git a/fonts/TewiFontOutlineAlt/20A0.png b/fonts/TewiFontOutlineAlt/20A0.png new file mode 100644 index 000000000..f7ce6a8bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A0.png differ diff --git a/fonts/TewiFontOutlineAlt/20A1.png b/fonts/TewiFontOutlineAlt/20A1.png new file mode 100644 index 000000000..8d4411df3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A1.png differ diff --git a/fonts/TewiFontOutlineAlt/20A2.png b/fonts/TewiFontOutlineAlt/20A2.png new file mode 100644 index 000000000..925696a2e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A2.png differ diff --git a/fonts/TewiFontOutlineAlt/20A3.png b/fonts/TewiFontOutlineAlt/20A3.png new file mode 100644 index 000000000..c76ef3b02 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A3.png differ diff --git a/fonts/TewiFontOutlineAlt/20A4.png b/fonts/TewiFontOutlineAlt/20A4.png new file mode 100644 index 000000000..c0c0e37f0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A4.png differ diff --git a/fonts/TewiFontOutlineAlt/20A5.png b/fonts/TewiFontOutlineAlt/20A5.png new file mode 100644 index 000000000..2e14251bc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A5.png differ diff --git a/fonts/TewiFontOutlineAlt/20A6.png b/fonts/TewiFontOutlineAlt/20A6.png new file mode 100644 index 000000000..b819f4842 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A6.png differ diff --git a/fonts/TewiFontOutlineAlt/20A8.png b/fonts/TewiFontOutlineAlt/20A8.png new file mode 100644 index 000000000..3a8b82862 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A8.png differ diff --git a/fonts/TewiFontOutlineAlt/20A9.png b/fonts/TewiFontOutlineAlt/20A9.png new file mode 100644 index 000000000..93c5e59b0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20A9.png differ diff --git a/fonts/TewiFontOutlineAlt/20AA.png b/fonts/TewiFontOutlineAlt/20AA.png new file mode 100644 index 000000000..e474db92c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20AA.png differ diff --git a/fonts/TewiFontOutlineAlt/20AB.png b/fonts/TewiFontOutlineAlt/20AB.png new file mode 100644 index 000000000..8e5cd5bb6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20AB.png differ diff --git a/fonts/TewiFontOutlineAlt/20AC.png b/fonts/TewiFontOutlineAlt/20AC.png new file mode 100644 index 000000000..d644905ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20AC.png differ diff --git a/fonts/TewiFontOutlineAlt/20AD.png b/fonts/TewiFontOutlineAlt/20AD.png new file mode 100644 index 000000000..6ae82fda5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20AD.png differ diff --git a/fonts/TewiFontOutlineAlt/20AE.png b/fonts/TewiFontOutlineAlt/20AE.png new file mode 100644 index 000000000..ccf64bd48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20AE.png differ diff --git a/fonts/TewiFontOutlineAlt/20AF.png b/fonts/TewiFontOutlineAlt/20AF.png new file mode 100644 index 000000000..c6abfbf7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20AF.png differ diff --git a/fonts/TewiFontOutlineAlt/20B1.png b/fonts/TewiFontOutlineAlt/20B1.png new file mode 100644 index 000000000..e59833da3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20B1.png differ diff --git a/fonts/TewiFontOutlineAlt/20B2.png b/fonts/TewiFontOutlineAlt/20B2.png new file mode 100644 index 000000000..e8242a31f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20B2.png differ diff --git a/fonts/TewiFontOutlineAlt/20B3.png b/fonts/TewiFontOutlineAlt/20B3.png new file mode 100644 index 000000000..f6158f917 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20B3.png differ diff --git a/fonts/TewiFontOutlineAlt/20B5.png b/fonts/TewiFontOutlineAlt/20B5.png new file mode 100644 index 000000000..218d8d949 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20B5.png differ diff --git a/fonts/TewiFontOutlineAlt/20B6.png b/fonts/TewiFontOutlineAlt/20B6.png new file mode 100644 index 000000000..d4b126b63 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20B6.png differ diff --git a/fonts/TewiFontOutlineAlt/20B8.png b/fonts/TewiFontOutlineAlt/20B8.png new file mode 100644 index 000000000..fecb891fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20B8.png differ diff --git a/fonts/TewiFontOutlineAlt/20B9.png b/fonts/TewiFontOutlineAlt/20B9.png new file mode 100644 index 000000000..dfe7b8fd9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20B9.png differ diff --git a/fonts/TewiFontOutlineAlt/20BA.png b/fonts/TewiFontOutlineAlt/20BA.png new file mode 100644 index 000000000..76caef23c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20BA.png differ diff --git a/fonts/TewiFontOutlineAlt/20BC.png b/fonts/TewiFontOutlineAlt/20BC.png new file mode 100644 index 000000000..f02108beb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20BC.png differ diff --git a/fonts/TewiFontOutlineAlt/20BD.png b/fonts/TewiFontOutlineAlt/20BD.png new file mode 100644 index 000000000..7b8046d8d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/20BD.png differ diff --git a/fonts/TewiFontOutlineAlt/2100.png b/fonts/TewiFontOutlineAlt/2100.png new file mode 100644 index 000000000..037deb93a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2100.png differ diff --git a/fonts/TewiFontOutlineAlt/2101.png b/fonts/TewiFontOutlineAlt/2101.png new file mode 100644 index 000000000..cdf6549d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2101.png differ diff --git a/fonts/TewiFontOutlineAlt/2102.png b/fonts/TewiFontOutlineAlt/2102.png new file mode 100644 index 000000000..ee5d83a46 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2102.png differ diff --git a/fonts/TewiFontOutlineAlt/2103.png b/fonts/TewiFontOutlineAlt/2103.png new file mode 100644 index 000000000..7c6a17cce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2103.png differ diff --git a/fonts/TewiFontOutlineAlt/2104.png b/fonts/TewiFontOutlineAlt/2104.png new file mode 100644 index 000000000..9a5f016ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2104.png differ diff --git a/fonts/TewiFontOutlineAlt/2105.png b/fonts/TewiFontOutlineAlt/2105.png new file mode 100644 index 000000000..2b460f74e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2105.png differ diff --git a/fonts/TewiFontOutlineAlt/2106.png b/fonts/TewiFontOutlineAlt/2106.png new file mode 100644 index 000000000..c03f57bd0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2106.png differ diff --git a/fonts/TewiFontOutlineAlt/2107.png b/fonts/TewiFontOutlineAlt/2107.png new file mode 100644 index 000000000..13d3acc66 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2107.png differ diff --git a/fonts/TewiFontOutlineAlt/2108.png b/fonts/TewiFontOutlineAlt/2108.png new file mode 100644 index 000000000..62f96b221 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2108.png differ diff --git a/fonts/TewiFontOutlineAlt/2109.png b/fonts/TewiFontOutlineAlt/2109.png new file mode 100644 index 000000000..bc54c4496 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2109.png differ diff --git a/fonts/TewiFontOutlineAlt/210A.png b/fonts/TewiFontOutlineAlt/210A.png new file mode 100644 index 000000000..e0fd2a992 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/210A.png differ diff --git a/fonts/TewiFontOutlineAlt/210B.png b/fonts/TewiFontOutlineAlt/210B.png new file mode 100644 index 000000000..60e56da17 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/210B.png differ diff --git a/fonts/TewiFontOutlineAlt/2116.png b/fonts/TewiFontOutlineAlt/2116.png new file mode 100644 index 000000000..fef30745f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2116.png differ diff --git a/fonts/TewiFontOutlineAlt/2117.png b/fonts/TewiFontOutlineAlt/2117.png new file mode 100644 index 000000000..65a6355a4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2117.png differ diff --git a/fonts/TewiFontOutlineAlt/2122.png b/fonts/TewiFontOutlineAlt/2122.png new file mode 100644 index 000000000..a6fcb2dcb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2122.png differ diff --git a/fonts/TewiFontOutlineAlt/2125.png b/fonts/TewiFontOutlineAlt/2125.png new file mode 100644 index 000000000..035447ff9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2125.png differ diff --git a/fonts/TewiFontOutlineAlt/2126.png b/fonts/TewiFontOutlineAlt/2126.png new file mode 100644 index 000000000..fe7cfbb1d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2126.png differ diff --git a/fonts/TewiFontOutlineAlt/2127.png b/fonts/TewiFontOutlineAlt/2127.png new file mode 100644 index 000000000..b37cfa6ec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2127.png differ diff --git a/fonts/TewiFontOutlineAlt/212A.png b/fonts/TewiFontOutlineAlt/212A.png new file mode 100644 index 000000000..cfe63b31e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/212A.png differ diff --git a/fonts/TewiFontOutlineAlt/212B.png b/fonts/TewiFontOutlineAlt/212B.png new file mode 100644 index 000000000..cc619e81b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/212B.png differ diff --git a/fonts/TewiFontOutlineAlt/212F.png b/fonts/TewiFontOutlineAlt/212F.png new file mode 100644 index 000000000..e58bdcc00 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/212F.png differ diff --git a/fonts/TewiFontOutlineAlt/2133.png b/fonts/TewiFontOutlineAlt/2133.png new file mode 100644 index 000000000..b972aeb46 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2133.png differ diff --git a/fonts/TewiFontOutlineAlt/2134.png b/fonts/TewiFontOutlineAlt/2134.png new file mode 100644 index 000000000..3f6da1e09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2134.png differ diff --git a/fonts/TewiFontOutlineAlt/2160.png b/fonts/TewiFontOutlineAlt/2160.png new file mode 100644 index 000000000..68a5497d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2160.png differ diff --git a/fonts/TewiFontOutlineAlt/2161.png b/fonts/TewiFontOutlineAlt/2161.png new file mode 100644 index 000000000..8d7009f8b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2161.png differ diff --git a/fonts/TewiFontOutlineAlt/2162.png b/fonts/TewiFontOutlineAlt/2162.png new file mode 100644 index 000000000..67d1ab542 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2162.png differ diff --git a/fonts/TewiFontOutlineAlt/2163.png b/fonts/TewiFontOutlineAlt/2163.png new file mode 100644 index 000000000..5bc8b21d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2163.png differ diff --git a/fonts/TewiFontOutlineAlt/2164.png b/fonts/TewiFontOutlineAlt/2164.png new file mode 100644 index 000000000..47b16dc25 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2164.png differ diff --git a/fonts/TewiFontOutlineAlt/2165.png b/fonts/TewiFontOutlineAlt/2165.png new file mode 100644 index 000000000..254575896 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2165.png differ diff --git a/fonts/TewiFontOutlineAlt/2166.png b/fonts/TewiFontOutlineAlt/2166.png new file mode 100644 index 000000000..eb5b90ab0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2166.png differ diff --git a/fonts/TewiFontOutlineAlt/2168.png b/fonts/TewiFontOutlineAlt/2168.png new file mode 100644 index 000000000..3de3fec8a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2168.png differ diff --git a/fonts/TewiFontOutlineAlt/2169.png b/fonts/TewiFontOutlineAlt/2169.png new file mode 100644 index 000000000..a4fa1d8f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2169.png differ diff --git a/fonts/TewiFontOutlineAlt/216A.png b/fonts/TewiFontOutlineAlt/216A.png new file mode 100644 index 000000000..2a2da0d2a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/216A.png differ diff --git a/fonts/TewiFontOutlineAlt/216B.png b/fonts/TewiFontOutlineAlt/216B.png new file mode 100644 index 000000000..d00ae057a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/216B.png differ diff --git a/fonts/TewiFontOutlineAlt/216C.png b/fonts/TewiFontOutlineAlt/216C.png new file mode 100644 index 000000000..f7507a77e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/216C.png differ diff --git a/fonts/TewiFontOutlineAlt/216D.png b/fonts/TewiFontOutlineAlt/216D.png new file mode 100644 index 000000000..0b783f296 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/216D.png differ diff --git a/fonts/TewiFontOutlineAlt/216E.png b/fonts/TewiFontOutlineAlt/216E.png new file mode 100644 index 000000000..403b476a1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/216E.png differ diff --git a/fonts/TewiFontOutlineAlt/216F.png b/fonts/TewiFontOutlineAlt/216F.png new file mode 100644 index 000000000..0783e2389 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/216F.png differ diff --git a/fonts/TewiFontOutlineAlt/2170.png b/fonts/TewiFontOutlineAlt/2170.png new file mode 100644 index 000000000..dc2807b8a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2170.png differ diff --git a/fonts/TewiFontOutlineAlt/2171.png b/fonts/TewiFontOutlineAlt/2171.png new file mode 100644 index 000000000..18ef062ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2171.png differ diff --git a/fonts/TewiFontOutlineAlt/2172.png b/fonts/TewiFontOutlineAlt/2172.png new file mode 100644 index 000000000..17d7d413f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2172.png differ diff --git a/fonts/TewiFontOutlineAlt/2173.png b/fonts/TewiFontOutlineAlt/2173.png new file mode 100644 index 000000000..31295fcbb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2173.png differ diff --git a/fonts/TewiFontOutlineAlt/2174.png b/fonts/TewiFontOutlineAlt/2174.png new file mode 100644 index 000000000..b0b9db41b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2174.png differ diff --git a/fonts/TewiFontOutlineAlt/2175.png b/fonts/TewiFontOutlineAlt/2175.png new file mode 100644 index 000000000..edd99dc85 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2175.png differ diff --git a/fonts/TewiFontOutlineAlt/2176.png b/fonts/TewiFontOutlineAlt/2176.png new file mode 100644 index 000000000..8392a5b88 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2176.png differ diff --git a/fonts/TewiFontOutlineAlt/2178.png b/fonts/TewiFontOutlineAlt/2178.png new file mode 100644 index 000000000..70f15c7eb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2178.png differ diff --git a/fonts/TewiFontOutlineAlt/2179.png b/fonts/TewiFontOutlineAlt/2179.png new file mode 100644 index 000000000..c98a5f3ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2179.png differ diff --git a/fonts/TewiFontOutlineAlt/217A.png b/fonts/TewiFontOutlineAlt/217A.png new file mode 100644 index 000000000..a09660b5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/217A.png differ diff --git a/fonts/TewiFontOutlineAlt/217B.png b/fonts/TewiFontOutlineAlt/217B.png new file mode 100644 index 000000000..0f0e4433c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/217B.png differ diff --git a/fonts/TewiFontOutlineAlt/217C.png b/fonts/TewiFontOutlineAlt/217C.png new file mode 100644 index 000000000..e6cf08316 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/217C.png differ diff --git a/fonts/TewiFontOutlineAlt/217D.png b/fonts/TewiFontOutlineAlt/217D.png new file mode 100644 index 000000000..708fcb523 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/217D.png differ diff --git a/fonts/TewiFontOutlineAlt/217E.png b/fonts/TewiFontOutlineAlt/217E.png new file mode 100644 index 000000000..990365921 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/217E.png differ diff --git a/fonts/TewiFontOutlineAlt/217F.png b/fonts/TewiFontOutlineAlt/217F.png new file mode 100644 index 000000000..2f73319cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/217F.png differ diff --git a/fonts/TewiFontOutlineAlt/2180.png b/fonts/TewiFontOutlineAlt/2180.png new file mode 100644 index 000000000..4bb41387f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2180.png differ diff --git a/fonts/TewiFontOutlineAlt/2183.png b/fonts/TewiFontOutlineAlt/2183.png new file mode 100644 index 000000000..19bb3e10e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2183.png differ diff --git a/fonts/TewiFontOutlineAlt/2190.png b/fonts/TewiFontOutlineAlt/2190.png new file mode 100644 index 000000000..e7120a262 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2190.png differ diff --git a/fonts/TewiFontOutlineAlt/2191.png b/fonts/TewiFontOutlineAlt/2191.png new file mode 100644 index 000000000..aa13b5538 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2191.png differ diff --git a/fonts/TewiFontOutlineAlt/2192.png b/fonts/TewiFontOutlineAlt/2192.png new file mode 100644 index 000000000..d928eee3a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2192.png differ diff --git a/fonts/TewiFontOutlineAlt/2193.png b/fonts/TewiFontOutlineAlt/2193.png new file mode 100644 index 000000000..8701c01f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2193.png differ diff --git a/fonts/TewiFontOutlineAlt/2195.png b/fonts/TewiFontOutlineAlt/2195.png new file mode 100644 index 000000000..2a453be27 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2195.png differ diff --git a/fonts/TewiFontOutlineAlt/2196.png b/fonts/TewiFontOutlineAlt/2196.png new file mode 100644 index 000000000..928d697a9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2196.png differ diff --git a/fonts/TewiFontOutlineAlt/2197.png b/fonts/TewiFontOutlineAlt/2197.png new file mode 100644 index 000000000..d21293a27 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2197.png differ diff --git a/fonts/TewiFontOutlineAlt/2198.png b/fonts/TewiFontOutlineAlt/2198.png new file mode 100644 index 000000000..5a5e6b167 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2198.png differ diff --git a/fonts/TewiFontOutlineAlt/2199.png b/fonts/TewiFontOutlineAlt/2199.png new file mode 100644 index 000000000..20219650c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2199.png differ diff --git a/fonts/TewiFontOutlineAlt/219A.png b/fonts/TewiFontOutlineAlt/219A.png new file mode 100644 index 000000000..2e466aead Binary files /dev/null and b/fonts/TewiFontOutlineAlt/219A.png differ diff --git a/fonts/TewiFontOutlineAlt/219B.png b/fonts/TewiFontOutlineAlt/219B.png new file mode 100644 index 000000000..1f91a05d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/219B.png differ diff --git a/fonts/TewiFontOutlineAlt/219C.png b/fonts/TewiFontOutlineAlt/219C.png new file mode 100644 index 000000000..e576a039c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/219C.png differ diff --git a/fonts/TewiFontOutlineAlt/219D.png b/fonts/TewiFontOutlineAlt/219D.png new file mode 100644 index 000000000..f425460aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/219D.png differ diff --git a/fonts/TewiFontOutlineAlt/219E.png b/fonts/TewiFontOutlineAlt/219E.png new file mode 100644 index 000000000..743a91ca8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/219E.png differ diff --git a/fonts/TewiFontOutlineAlt/219F.png b/fonts/TewiFontOutlineAlt/219F.png new file mode 100644 index 000000000..2da3c38ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/219F.png differ diff --git a/fonts/TewiFontOutlineAlt/21A0.png b/fonts/TewiFontOutlineAlt/21A0.png new file mode 100644 index 000000000..97b555279 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A0.png differ diff --git a/fonts/TewiFontOutlineAlt/21A1.png b/fonts/TewiFontOutlineAlt/21A1.png new file mode 100644 index 000000000..6239f4fdf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A1.png differ diff --git a/fonts/TewiFontOutlineAlt/21A2.png b/fonts/TewiFontOutlineAlt/21A2.png new file mode 100644 index 000000000..8b39ca7ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A2.png differ diff --git a/fonts/TewiFontOutlineAlt/21A3.png b/fonts/TewiFontOutlineAlt/21A3.png new file mode 100644 index 000000000..d51cc2d64 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A3.png differ diff --git a/fonts/TewiFontOutlineAlt/21A4.png b/fonts/TewiFontOutlineAlt/21A4.png new file mode 100644 index 000000000..7d48f8a89 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A4.png differ diff --git a/fonts/TewiFontOutlineAlt/21A5.png b/fonts/TewiFontOutlineAlt/21A5.png new file mode 100644 index 000000000..237079829 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A5.png differ diff --git a/fonts/TewiFontOutlineAlt/21A6.png b/fonts/TewiFontOutlineAlt/21A6.png new file mode 100644 index 000000000..da6c0ef03 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A6.png differ diff --git a/fonts/TewiFontOutlineAlt/21A7.png b/fonts/TewiFontOutlineAlt/21A7.png new file mode 100644 index 000000000..5bc744007 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A7.png differ diff --git a/fonts/TewiFontOutlineAlt/21A8.png b/fonts/TewiFontOutlineAlt/21A8.png new file mode 100644 index 000000000..a5c17b497 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A8.png differ diff --git a/fonts/TewiFontOutlineAlt/21A9.png b/fonts/TewiFontOutlineAlt/21A9.png new file mode 100644 index 000000000..fa872a1a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21A9.png differ diff --git a/fonts/TewiFontOutlineAlt/21AA.png b/fonts/TewiFontOutlineAlt/21AA.png new file mode 100644 index 000000000..dacde4e12 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21AA.png differ diff --git a/fonts/TewiFontOutlineAlt/21AB.png b/fonts/TewiFontOutlineAlt/21AB.png new file mode 100644 index 000000000..6b5843212 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21AB.png differ diff --git a/fonts/TewiFontOutlineAlt/21AC.png b/fonts/TewiFontOutlineAlt/21AC.png new file mode 100644 index 000000000..0530544e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21AC.png differ diff --git a/fonts/TewiFontOutlineAlt/21AF.png b/fonts/TewiFontOutlineAlt/21AF.png new file mode 100644 index 000000000..20fc6db3d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21AF.png differ diff --git a/fonts/TewiFontOutlineAlt/21B0.png b/fonts/TewiFontOutlineAlt/21B0.png new file mode 100644 index 000000000..8188d6a10 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B0.png differ diff --git a/fonts/TewiFontOutlineAlt/21B1.png b/fonts/TewiFontOutlineAlt/21B1.png new file mode 100644 index 000000000..060d20568 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B1.png differ diff --git a/fonts/TewiFontOutlineAlt/21B2.png b/fonts/TewiFontOutlineAlt/21B2.png new file mode 100644 index 000000000..c5bc47458 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B2.png differ diff --git a/fonts/TewiFontOutlineAlt/21B3.png b/fonts/TewiFontOutlineAlt/21B3.png new file mode 100644 index 000000000..ff2587bef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B3.png differ diff --git a/fonts/TewiFontOutlineAlt/21B4.png b/fonts/TewiFontOutlineAlt/21B4.png new file mode 100644 index 000000000..1b05051ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B4.png differ diff --git a/fonts/TewiFontOutlineAlt/21B5.png b/fonts/TewiFontOutlineAlt/21B5.png new file mode 100644 index 000000000..46d816dfe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B5.png differ diff --git a/fonts/TewiFontOutlineAlt/21B6.png b/fonts/TewiFontOutlineAlt/21B6.png new file mode 100644 index 000000000..8a636d554 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B6.png differ diff --git a/fonts/TewiFontOutlineAlt/21B7.png b/fonts/TewiFontOutlineAlt/21B7.png new file mode 100644 index 000000000..717293761 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B7.png differ diff --git a/fonts/TewiFontOutlineAlt/21B8.png b/fonts/TewiFontOutlineAlt/21B8.png new file mode 100644 index 000000000..5add3d8c3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B8.png differ diff --git a/fonts/TewiFontOutlineAlt/21B9.png b/fonts/TewiFontOutlineAlt/21B9.png new file mode 100644 index 000000000..17da826b7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21B9.png differ diff --git a/fonts/TewiFontOutlineAlt/21BA.png b/fonts/TewiFontOutlineAlt/21BA.png new file mode 100644 index 000000000..96c2c8a6a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21BA.png differ diff --git a/fonts/TewiFontOutlineAlt/21BB.png b/fonts/TewiFontOutlineAlt/21BB.png new file mode 100644 index 000000000..68cae5caa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21BB.png differ diff --git a/fonts/TewiFontOutlineAlt/21BC.png b/fonts/TewiFontOutlineAlt/21BC.png new file mode 100644 index 000000000..24a03ca4a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21BC.png differ diff --git a/fonts/TewiFontOutlineAlt/21BD.png b/fonts/TewiFontOutlineAlt/21BD.png new file mode 100644 index 000000000..4d34ccea4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21BD.png differ diff --git a/fonts/TewiFontOutlineAlt/21BE.png b/fonts/TewiFontOutlineAlt/21BE.png new file mode 100644 index 000000000..bc21d962f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21BE.png differ diff --git a/fonts/TewiFontOutlineAlt/21BF.png b/fonts/TewiFontOutlineAlt/21BF.png new file mode 100644 index 000000000..972de6e9e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21BF.png differ diff --git a/fonts/TewiFontOutlineAlt/21C0.png b/fonts/TewiFontOutlineAlt/21C0.png new file mode 100644 index 000000000..8bde598a8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C0.png differ diff --git a/fonts/TewiFontOutlineAlt/21C1.png b/fonts/TewiFontOutlineAlt/21C1.png new file mode 100644 index 000000000..4065dae7f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C1.png differ diff --git a/fonts/TewiFontOutlineAlt/21C2.png b/fonts/TewiFontOutlineAlt/21C2.png new file mode 100644 index 000000000..b1fa41b86 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C2.png differ diff --git a/fonts/TewiFontOutlineAlt/21C3.png b/fonts/TewiFontOutlineAlt/21C3.png new file mode 100644 index 000000000..92e3ecdf5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C3.png differ diff --git a/fonts/TewiFontOutlineAlt/21C4.png b/fonts/TewiFontOutlineAlt/21C4.png new file mode 100644 index 000000000..47efc93ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C4.png differ diff --git a/fonts/TewiFontOutlineAlt/21C5.png b/fonts/TewiFontOutlineAlt/21C5.png new file mode 100644 index 000000000..86a9c3970 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C5.png differ diff --git a/fonts/TewiFontOutlineAlt/21C6.png b/fonts/TewiFontOutlineAlt/21C6.png new file mode 100644 index 000000000..e25c9a0d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C6.png differ diff --git a/fonts/TewiFontOutlineAlt/21C7.png b/fonts/TewiFontOutlineAlt/21C7.png new file mode 100644 index 000000000..94145c8f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C7.png differ diff --git a/fonts/TewiFontOutlineAlt/21C8.png b/fonts/TewiFontOutlineAlt/21C8.png new file mode 100644 index 000000000..3a5302949 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C8.png differ diff --git a/fonts/TewiFontOutlineAlt/21C9.png b/fonts/TewiFontOutlineAlt/21C9.png new file mode 100644 index 000000000..0bf80e27d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21C9.png differ diff --git a/fonts/TewiFontOutlineAlt/21CA.png b/fonts/TewiFontOutlineAlt/21CA.png new file mode 100644 index 000000000..74b8efcb5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21CA.png differ diff --git a/fonts/TewiFontOutlineAlt/21CB.png b/fonts/TewiFontOutlineAlt/21CB.png new file mode 100644 index 000000000..ae51d9428 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21CB.png differ diff --git a/fonts/TewiFontOutlineAlt/21CC.png b/fonts/TewiFontOutlineAlt/21CC.png new file mode 100644 index 000000000..0a10a015d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21CC.png differ diff --git a/fonts/TewiFontOutlineAlt/21CD.png b/fonts/TewiFontOutlineAlt/21CD.png new file mode 100644 index 000000000..89ae878b1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21CD.png differ diff --git a/fonts/TewiFontOutlineAlt/21CF.png b/fonts/TewiFontOutlineAlt/21CF.png new file mode 100644 index 000000000..b8a57db12 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21CF.png differ diff --git a/fonts/TewiFontOutlineAlt/21D0.png b/fonts/TewiFontOutlineAlt/21D0.png new file mode 100644 index 000000000..7322ecb38 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D0.png differ diff --git a/fonts/TewiFontOutlineAlt/21D1.png b/fonts/TewiFontOutlineAlt/21D1.png new file mode 100644 index 000000000..9adbd259e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D1.png differ diff --git a/fonts/TewiFontOutlineAlt/21D2.png b/fonts/TewiFontOutlineAlt/21D2.png new file mode 100644 index 000000000..6882ec0df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D2.png differ diff --git a/fonts/TewiFontOutlineAlt/21D3.png b/fonts/TewiFontOutlineAlt/21D3.png new file mode 100644 index 000000000..48888c57b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D3.png differ diff --git a/fonts/TewiFontOutlineAlt/21D5.png b/fonts/TewiFontOutlineAlt/21D5.png new file mode 100644 index 000000000..a984fd851 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D5.png differ diff --git a/fonts/TewiFontOutlineAlt/21D6.png b/fonts/TewiFontOutlineAlt/21D6.png new file mode 100644 index 000000000..f6e9dac83 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D6.png differ diff --git a/fonts/TewiFontOutlineAlt/21D7.png b/fonts/TewiFontOutlineAlt/21D7.png new file mode 100644 index 000000000..b2c017ef2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D7.png differ diff --git a/fonts/TewiFontOutlineAlt/21D8.png b/fonts/TewiFontOutlineAlt/21D8.png new file mode 100644 index 000000000..4f2ebf501 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D8.png differ diff --git a/fonts/TewiFontOutlineAlt/21D9.png b/fonts/TewiFontOutlineAlt/21D9.png new file mode 100644 index 000000000..f85f9ae0b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21D9.png differ diff --git a/fonts/TewiFontOutlineAlt/21DA.png b/fonts/TewiFontOutlineAlt/21DA.png new file mode 100644 index 000000000..fc9754a1b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21DA.png differ diff --git a/fonts/TewiFontOutlineAlt/21DB.png b/fonts/TewiFontOutlineAlt/21DB.png new file mode 100644 index 000000000..0a77672ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21DB.png differ diff --git a/fonts/TewiFontOutlineAlt/21DC.png b/fonts/TewiFontOutlineAlt/21DC.png new file mode 100644 index 000000000..d0863e69f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21DC.png differ diff --git a/fonts/TewiFontOutlineAlt/21DD.png b/fonts/TewiFontOutlineAlt/21DD.png new file mode 100644 index 000000000..ebc5d1386 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21DD.png differ diff --git a/fonts/TewiFontOutlineAlt/21DE.png b/fonts/TewiFontOutlineAlt/21DE.png new file mode 100644 index 000000000..673469ca3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21DE.png differ diff --git a/fonts/TewiFontOutlineAlt/21DF.png b/fonts/TewiFontOutlineAlt/21DF.png new file mode 100644 index 000000000..80d27941b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21DF.png differ diff --git a/fonts/TewiFontOutlineAlt/21E0.png b/fonts/TewiFontOutlineAlt/21E0.png new file mode 100644 index 000000000..00122ed3d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E0.png differ diff --git a/fonts/TewiFontOutlineAlt/21E1.png b/fonts/TewiFontOutlineAlt/21E1.png new file mode 100644 index 000000000..47c407924 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E1.png differ diff --git a/fonts/TewiFontOutlineAlt/21E2.png b/fonts/TewiFontOutlineAlt/21E2.png new file mode 100644 index 000000000..2333dce7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E2.png differ diff --git a/fonts/TewiFontOutlineAlt/21E3.png b/fonts/TewiFontOutlineAlt/21E3.png new file mode 100644 index 000000000..d3665c442 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E3.png differ diff --git a/fonts/TewiFontOutlineAlt/21E4.png b/fonts/TewiFontOutlineAlt/21E4.png new file mode 100644 index 000000000..26f0fcac7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E4.png differ diff --git a/fonts/TewiFontOutlineAlt/21E5.png b/fonts/TewiFontOutlineAlt/21E5.png new file mode 100644 index 000000000..b129d1b99 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E5.png differ diff --git a/fonts/TewiFontOutlineAlt/21E6.png b/fonts/TewiFontOutlineAlt/21E6.png new file mode 100644 index 000000000..a8b6216ea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E6.png differ diff --git a/fonts/TewiFontOutlineAlt/21E7.png b/fonts/TewiFontOutlineAlt/21E7.png new file mode 100644 index 000000000..ed867adbc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E7.png differ diff --git a/fonts/TewiFontOutlineAlt/21E8.png b/fonts/TewiFontOutlineAlt/21E8.png new file mode 100644 index 000000000..74c0e79c6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E8.png differ diff --git a/fonts/TewiFontOutlineAlt/21E9.png b/fonts/TewiFontOutlineAlt/21E9.png new file mode 100644 index 000000000..370d71ebd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21E9.png differ diff --git a/fonts/TewiFontOutlineAlt/21EA.png b/fonts/TewiFontOutlineAlt/21EA.png new file mode 100644 index 000000000..cb0dc1f35 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21EA.png differ diff --git a/fonts/TewiFontOutlineAlt/21EB.png b/fonts/TewiFontOutlineAlt/21EB.png new file mode 100644 index 000000000..c0b122567 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21EB.png differ diff --git a/fonts/TewiFontOutlineAlt/21EC.png b/fonts/TewiFontOutlineAlt/21EC.png new file mode 100644 index 000000000..986313caa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21EC.png differ diff --git a/fonts/TewiFontOutlineAlt/21ED.png b/fonts/TewiFontOutlineAlt/21ED.png new file mode 100644 index 000000000..87bda8e99 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21ED.png differ diff --git a/fonts/TewiFontOutlineAlt/21EE.png b/fonts/TewiFontOutlineAlt/21EE.png new file mode 100644 index 000000000..3e956b685 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21EE.png differ diff --git a/fonts/TewiFontOutlineAlt/21EF.png b/fonts/TewiFontOutlineAlt/21EF.png new file mode 100644 index 000000000..986313caa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21EF.png differ diff --git a/fonts/TewiFontOutlineAlt/21F1.png b/fonts/TewiFontOutlineAlt/21F1.png new file mode 100644 index 000000000..9a6ead97b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21F1.png differ diff --git a/fonts/TewiFontOutlineAlt/21F2.png b/fonts/TewiFontOutlineAlt/21F2.png new file mode 100644 index 000000000..40681ce80 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21F2.png differ diff --git a/fonts/TewiFontOutlineAlt/21F3.png b/fonts/TewiFontOutlineAlt/21F3.png new file mode 100644 index 000000000..42a5cc5b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21F3.png differ diff --git a/fonts/TewiFontOutlineAlt/21F4.png b/fonts/TewiFontOutlineAlt/21F4.png new file mode 100644 index 000000000..041630ab7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21F4.png differ diff --git a/fonts/TewiFontOutlineAlt/21F5.png b/fonts/TewiFontOutlineAlt/21F5.png new file mode 100644 index 000000000..851265515 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21F5.png differ diff --git a/fonts/TewiFontOutlineAlt/21F6.png b/fonts/TewiFontOutlineAlt/21F6.png new file mode 100644 index 000000000..4cdfa20a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21F6.png differ diff --git a/fonts/TewiFontOutlineAlt/21F7.png b/fonts/TewiFontOutlineAlt/21F7.png new file mode 100644 index 000000000..b6beea7ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21F7.png differ diff --git a/fonts/TewiFontOutlineAlt/21F8.png b/fonts/TewiFontOutlineAlt/21F8.png new file mode 100644 index 000000000..d9e55ed99 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21F8.png differ diff --git a/fonts/TewiFontOutlineAlt/21FA.png b/fonts/TewiFontOutlineAlt/21FA.png new file mode 100644 index 000000000..cbcbf2a31 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21FA.png differ diff --git a/fonts/TewiFontOutlineAlt/21FD.png b/fonts/TewiFontOutlineAlt/21FD.png new file mode 100644 index 000000000..a3675542d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21FD.png differ diff --git a/fonts/TewiFontOutlineAlt/21FE.png b/fonts/TewiFontOutlineAlt/21FE.png new file mode 100644 index 000000000..ebf5e922a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/21FE.png differ diff --git a/fonts/TewiFontOutlineAlt/2200.png b/fonts/TewiFontOutlineAlt/2200.png new file mode 100644 index 000000000..502612a0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2200.png differ diff --git a/fonts/TewiFontOutlineAlt/2201.png b/fonts/TewiFontOutlineAlt/2201.png new file mode 100644 index 000000000..068f8085c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2201.png differ diff --git a/fonts/TewiFontOutlineAlt/2202.png b/fonts/TewiFontOutlineAlt/2202.png new file mode 100644 index 000000000..6bbe17a71 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2202.png differ diff --git a/fonts/TewiFontOutlineAlt/2203.png b/fonts/TewiFontOutlineAlt/2203.png new file mode 100644 index 000000000..8ac836b5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2203.png differ diff --git a/fonts/TewiFontOutlineAlt/2204.png b/fonts/TewiFontOutlineAlt/2204.png new file mode 100644 index 000000000..f11ee7b1d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2204.png differ diff --git a/fonts/TewiFontOutlineAlt/2205.png b/fonts/TewiFontOutlineAlt/2205.png new file mode 100644 index 000000000..32a0d5570 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2205.png differ diff --git a/fonts/TewiFontOutlineAlt/2206.png b/fonts/TewiFontOutlineAlt/2206.png new file mode 100644 index 000000000..d512fdea6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2206.png differ diff --git a/fonts/TewiFontOutlineAlt/2207.png b/fonts/TewiFontOutlineAlt/2207.png new file mode 100644 index 000000000..ead2e67d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2207.png differ diff --git a/fonts/TewiFontOutlineAlt/2208.png b/fonts/TewiFontOutlineAlt/2208.png new file mode 100644 index 000000000..8d5d344af Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2208.png differ diff --git a/fonts/TewiFontOutlineAlt/2209.png b/fonts/TewiFontOutlineAlt/2209.png new file mode 100644 index 000000000..4d6c3c78a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2209.png differ diff --git a/fonts/TewiFontOutlineAlt/220A.png b/fonts/TewiFontOutlineAlt/220A.png new file mode 100644 index 000000000..a93ccb5d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/220A.png differ diff --git a/fonts/TewiFontOutlineAlt/220B.png b/fonts/TewiFontOutlineAlt/220B.png new file mode 100644 index 000000000..f379e4e5a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/220B.png differ diff --git a/fonts/TewiFontOutlineAlt/220C.png b/fonts/TewiFontOutlineAlt/220C.png new file mode 100644 index 000000000..fc5296ad6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/220C.png differ diff --git a/fonts/TewiFontOutlineAlt/220D.png b/fonts/TewiFontOutlineAlt/220D.png new file mode 100644 index 000000000..6a8bb6ad8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/220D.png differ diff --git a/fonts/TewiFontOutlineAlt/220E.png b/fonts/TewiFontOutlineAlt/220E.png new file mode 100644 index 000000000..90d161ebb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/220E.png differ diff --git a/fonts/TewiFontOutlineAlt/220F.png b/fonts/TewiFontOutlineAlt/220F.png new file mode 100644 index 000000000..2e334804d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/220F.png differ diff --git a/fonts/TewiFontOutlineAlt/2210.png b/fonts/TewiFontOutlineAlt/2210.png new file mode 100644 index 000000000..25985a4a2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2210.png differ diff --git a/fonts/TewiFontOutlineAlt/2211.png b/fonts/TewiFontOutlineAlt/2211.png new file mode 100644 index 000000000..deb9a7bd8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2211.png differ diff --git a/fonts/TewiFontOutlineAlt/2212.png b/fonts/TewiFontOutlineAlt/2212.png new file mode 100644 index 000000000..9e63be8e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2212.png differ diff --git a/fonts/TewiFontOutlineAlt/2213.png b/fonts/TewiFontOutlineAlt/2213.png new file mode 100644 index 000000000..95cbf49a8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2213.png differ diff --git a/fonts/TewiFontOutlineAlt/2214.png b/fonts/TewiFontOutlineAlt/2214.png new file mode 100644 index 000000000..d6f5e9a45 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2214.png differ diff --git a/fonts/TewiFontOutlineAlt/2215.png b/fonts/TewiFontOutlineAlt/2215.png new file mode 100644 index 000000000..12dc718f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2215.png differ diff --git a/fonts/TewiFontOutlineAlt/2216.png b/fonts/TewiFontOutlineAlt/2216.png new file mode 100644 index 000000000..25eda8a15 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2216.png differ diff --git a/fonts/TewiFontOutlineAlt/2217.png b/fonts/TewiFontOutlineAlt/2217.png new file mode 100644 index 000000000..9075f2f81 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2217.png differ diff --git a/fonts/TewiFontOutlineAlt/2218.png b/fonts/TewiFontOutlineAlt/2218.png new file mode 100644 index 000000000..78e988038 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2218.png differ diff --git a/fonts/TewiFontOutlineAlt/2219.png b/fonts/TewiFontOutlineAlt/2219.png new file mode 100644 index 000000000..601eac335 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2219.png differ diff --git a/fonts/TewiFontOutlineAlt/221A.png b/fonts/TewiFontOutlineAlt/221A.png new file mode 100644 index 000000000..645ff4567 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/221A.png differ diff --git a/fonts/TewiFontOutlineAlt/221B.png b/fonts/TewiFontOutlineAlt/221B.png new file mode 100644 index 000000000..ae6e41287 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/221B.png differ diff --git a/fonts/TewiFontOutlineAlt/221C.png b/fonts/TewiFontOutlineAlt/221C.png new file mode 100644 index 000000000..03f06a743 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/221C.png differ diff --git a/fonts/TewiFontOutlineAlt/221D.png b/fonts/TewiFontOutlineAlt/221D.png new file mode 100644 index 000000000..ad4960ca8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/221D.png differ diff --git a/fonts/TewiFontOutlineAlt/221E.png b/fonts/TewiFontOutlineAlt/221E.png new file mode 100644 index 000000000..0e864a01b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/221E.png differ diff --git a/fonts/TewiFontOutlineAlt/221F.png b/fonts/TewiFontOutlineAlt/221F.png new file mode 100644 index 000000000..984d624b0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/221F.png differ diff --git a/fonts/TewiFontOutlineAlt/2220.png b/fonts/TewiFontOutlineAlt/2220.png new file mode 100644 index 000000000..882bf2b0d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2220.png differ diff --git a/fonts/TewiFontOutlineAlt/2221.png b/fonts/TewiFontOutlineAlt/2221.png new file mode 100644 index 000000000..fe31c773d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2221.png differ diff --git a/fonts/TewiFontOutlineAlt/2222.png b/fonts/TewiFontOutlineAlt/2222.png new file mode 100644 index 000000000..12abf860b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2222.png differ diff --git a/fonts/TewiFontOutlineAlt/2223.png b/fonts/TewiFontOutlineAlt/2223.png new file mode 100644 index 000000000..2f383588d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2223.png differ diff --git a/fonts/TewiFontOutlineAlt/2224.png b/fonts/TewiFontOutlineAlt/2224.png new file mode 100644 index 000000000..ea6b58789 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2224.png differ diff --git a/fonts/TewiFontOutlineAlt/2225.png b/fonts/TewiFontOutlineAlt/2225.png new file mode 100644 index 000000000..9205c42b3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2225.png differ diff --git a/fonts/TewiFontOutlineAlt/2226.png b/fonts/TewiFontOutlineAlt/2226.png new file mode 100644 index 000000000..0edc628e3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2226.png differ diff --git a/fonts/TewiFontOutlineAlt/2227.png b/fonts/TewiFontOutlineAlt/2227.png new file mode 100644 index 000000000..d82e96d8e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2227.png differ diff --git a/fonts/TewiFontOutlineAlt/2228.png b/fonts/TewiFontOutlineAlt/2228.png new file mode 100644 index 000000000..bb730bd80 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2228.png differ diff --git a/fonts/TewiFontOutlineAlt/2229.png b/fonts/TewiFontOutlineAlt/2229.png new file mode 100644 index 000000000..27e237cb9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2229.png differ diff --git a/fonts/TewiFontOutlineAlt/222A.png b/fonts/TewiFontOutlineAlt/222A.png new file mode 100644 index 000000000..b9d6707f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/222A.png differ diff --git a/fonts/TewiFontOutlineAlt/222B.png b/fonts/TewiFontOutlineAlt/222B.png new file mode 100644 index 000000000..1424bdb0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/222B.png differ diff --git a/fonts/TewiFontOutlineAlt/222C.png b/fonts/TewiFontOutlineAlt/222C.png new file mode 100644 index 000000000..5c99ccfb3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/222C.png differ diff --git a/fonts/TewiFontOutlineAlt/222E.png b/fonts/TewiFontOutlineAlt/222E.png new file mode 100644 index 000000000..78d6fd9f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/222E.png differ diff --git a/fonts/TewiFontOutlineAlt/222F.png b/fonts/TewiFontOutlineAlt/222F.png new file mode 100644 index 000000000..37a36158f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/222F.png differ diff --git a/fonts/TewiFontOutlineAlt/2231.png b/fonts/TewiFontOutlineAlt/2231.png new file mode 100644 index 000000000..a638e8bad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2231.png differ diff --git a/fonts/TewiFontOutlineAlt/2232.png b/fonts/TewiFontOutlineAlt/2232.png new file mode 100644 index 000000000..1a055ea77 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2232.png differ diff --git a/fonts/TewiFontOutlineAlt/2233.png b/fonts/TewiFontOutlineAlt/2233.png new file mode 100644 index 000000000..f2da5fede Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2233.png differ diff --git a/fonts/TewiFontOutlineAlt/2234.png b/fonts/TewiFontOutlineAlt/2234.png new file mode 100644 index 000000000..7daa2bde7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2234.png differ diff --git a/fonts/TewiFontOutlineAlt/2235.png b/fonts/TewiFontOutlineAlt/2235.png new file mode 100644 index 000000000..951095437 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2235.png differ diff --git a/fonts/TewiFontOutlineAlt/2236.png b/fonts/TewiFontOutlineAlt/2236.png new file mode 100644 index 000000000..3491b50b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2236.png differ diff --git a/fonts/TewiFontOutlineAlt/2237.png b/fonts/TewiFontOutlineAlt/2237.png new file mode 100644 index 000000000..309355f68 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2237.png differ diff --git a/fonts/TewiFontOutlineAlt/2238.png b/fonts/TewiFontOutlineAlt/2238.png new file mode 100644 index 000000000..ed1e287df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2238.png differ diff --git a/fonts/TewiFontOutlineAlt/2239.png b/fonts/TewiFontOutlineAlt/2239.png new file mode 100644 index 000000000..9f6a24fae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2239.png differ diff --git a/fonts/TewiFontOutlineAlt/223A.png b/fonts/TewiFontOutlineAlt/223A.png new file mode 100644 index 000000000..f1b0f075e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/223A.png differ diff --git a/fonts/TewiFontOutlineAlt/223B.png b/fonts/TewiFontOutlineAlt/223B.png new file mode 100644 index 000000000..75d2280ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/223B.png differ diff --git a/fonts/TewiFontOutlineAlt/223C.png b/fonts/TewiFontOutlineAlt/223C.png new file mode 100644 index 000000000..afc00cad8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/223C.png differ diff --git a/fonts/TewiFontOutlineAlt/223D.png b/fonts/TewiFontOutlineAlt/223D.png new file mode 100644 index 000000000..73db78d3d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/223D.png differ diff --git a/fonts/TewiFontOutlineAlt/223E.png b/fonts/TewiFontOutlineAlt/223E.png new file mode 100644 index 000000000..8123d9428 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/223E.png differ diff --git a/fonts/TewiFontOutlineAlt/223F.png b/fonts/TewiFontOutlineAlt/223F.png new file mode 100644 index 000000000..c0b07ae60 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/223F.png differ diff --git a/fonts/TewiFontOutlineAlt/2240.png b/fonts/TewiFontOutlineAlt/2240.png new file mode 100644 index 000000000..ab7f6c510 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2240.png differ diff --git a/fonts/TewiFontOutlineAlt/2241.png b/fonts/TewiFontOutlineAlt/2241.png new file mode 100644 index 000000000..bf4abea7f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2241.png differ diff --git a/fonts/TewiFontOutlineAlt/2242.png b/fonts/TewiFontOutlineAlt/2242.png new file mode 100644 index 000000000..9a11de50c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2242.png differ diff --git a/fonts/TewiFontOutlineAlt/2243.png b/fonts/TewiFontOutlineAlt/2243.png new file mode 100644 index 000000000..e73be207a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2243.png differ diff --git a/fonts/TewiFontOutlineAlt/2244.png b/fonts/TewiFontOutlineAlt/2244.png new file mode 100644 index 000000000..63dc00e10 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2244.png differ diff --git a/fonts/TewiFontOutlineAlt/2245.png b/fonts/TewiFontOutlineAlt/2245.png new file mode 100644 index 000000000..e3531e1b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2245.png differ diff --git a/fonts/TewiFontOutlineAlt/2246.png b/fonts/TewiFontOutlineAlt/2246.png new file mode 100644 index 000000000..9d02f76ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2246.png differ diff --git a/fonts/TewiFontOutlineAlt/2247.png b/fonts/TewiFontOutlineAlt/2247.png new file mode 100644 index 000000000..d5ced8828 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2247.png differ diff --git a/fonts/TewiFontOutlineAlt/2248.png b/fonts/TewiFontOutlineAlt/2248.png new file mode 100644 index 000000000..3b79f1756 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2248.png differ diff --git a/fonts/TewiFontOutlineAlt/2249.png b/fonts/TewiFontOutlineAlt/2249.png new file mode 100644 index 000000000..cb04f17b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2249.png differ diff --git a/fonts/TewiFontOutlineAlt/224A.png b/fonts/TewiFontOutlineAlt/224A.png new file mode 100644 index 000000000..fe2f9c0fa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/224A.png differ diff --git a/fonts/TewiFontOutlineAlt/224B.png b/fonts/TewiFontOutlineAlt/224B.png new file mode 100644 index 000000000..a9f806290 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/224B.png differ diff --git a/fonts/TewiFontOutlineAlt/224C.png b/fonts/TewiFontOutlineAlt/224C.png new file mode 100644 index 000000000..e3531e1b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/224C.png differ diff --git a/fonts/TewiFontOutlineAlt/224D.png b/fonts/TewiFontOutlineAlt/224D.png new file mode 100644 index 000000000..743aff0af Binary files /dev/null and b/fonts/TewiFontOutlineAlt/224D.png differ diff --git a/fonts/TewiFontOutlineAlt/224E.png b/fonts/TewiFontOutlineAlt/224E.png new file mode 100644 index 000000000..968cf50c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/224E.png differ diff --git a/fonts/TewiFontOutlineAlt/224F.png b/fonts/TewiFontOutlineAlt/224F.png new file mode 100644 index 000000000..96d792115 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/224F.png differ diff --git a/fonts/TewiFontOutlineAlt/2250.png b/fonts/TewiFontOutlineAlt/2250.png new file mode 100644 index 000000000..e5ab145bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2250.png differ diff --git a/fonts/TewiFontOutlineAlt/2251.png b/fonts/TewiFontOutlineAlt/2251.png new file mode 100644 index 000000000..046e982b5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2251.png differ diff --git a/fonts/TewiFontOutlineAlt/2252.png b/fonts/TewiFontOutlineAlt/2252.png new file mode 100644 index 000000000..89c6a4f22 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2252.png differ diff --git a/fonts/TewiFontOutlineAlt/2253.png b/fonts/TewiFontOutlineAlt/2253.png new file mode 100644 index 000000000..178516346 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2253.png differ diff --git a/fonts/TewiFontOutlineAlt/2254.png b/fonts/TewiFontOutlineAlt/2254.png new file mode 100644 index 000000000..69f451657 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2254.png differ diff --git a/fonts/TewiFontOutlineAlt/2255.png b/fonts/TewiFontOutlineAlt/2255.png new file mode 100644 index 000000000..7fbe01cc6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2255.png differ diff --git a/fonts/TewiFontOutlineAlt/2256.png b/fonts/TewiFontOutlineAlt/2256.png new file mode 100644 index 000000000..78da288d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2256.png differ diff --git a/fonts/TewiFontOutlineAlt/2257.png b/fonts/TewiFontOutlineAlt/2257.png new file mode 100644 index 000000000..9b2894bea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2257.png differ diff --git a/fonts/TewiFontOutlineAlt/2258.png b/fonts/TewiFontOutlineAlt/2258.png new file mode 100644 index 000000000..8eccd7e25 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2258.png differ diff --git a/fonts/TewiFontOutlineAlt/2259.png b/fonts/TewiFontOutlineAlt/2259.png new file mode 100644 index 000000000..40b5ad56f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2259.png differ diff --git a/fonts/TewiFontOutlineAlt/225A.png b/fonts/TewiFontOutlineAlt/225A.png new file mode 100644 index 000000000..5d84348d1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/225A.png differ diff --git a/fonts/TewiFontOutlineAlt/225B.png b/fonts/TewiFontOutlineAlt/225B.png new file mode 100644 index 000000000..6f90a0778 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/225B.png differ diff --git a/fonts/TewiFontOutlineAlt/225C.png b/fonts/TewiFontOutlineAlt/225C.png new file mode 100644 index 000000000..062e55cbd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/225C.png differ diff --git a/fonts/TewiFontOutlineAlt/225E.png b/fonts/TewiFontOutlineAlt/225E.png new file mode 100644 index 000000000..45d26e578 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/225E.png differ diff --git a/fonts/TewiFontOutlineAlt/225F.png b/fonts/TewiFontOutlineAlt/225F.png new file mode 100644 index 000000000..946d92dab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/225F.png differ diff --git a/fonts/TewiFontOutlineAlt/2260.png b/fonts/TewiFontOutlineAlt/2260.png new file mode 100644 index 000000000..84d46f70f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2260.png differ diff --git a/fonts/TewiFontOutlineAlt/2261.png b/fonts/TewiFontOutlineAlt/2261.png new file mode 100644 index 000000000..8785004cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2261.png differ diff --git a/fonts/TewiFontOutlineAlt/2262.png b/fonts/TewiFontOutlineAlt/2262.png new file mode 100644 index 000000000..4a58b2ebf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2262.png differ diff --git a/fonts/TewiFontOutlineAlt/2263.png b/fonts/TewiFontOutlineAlt/2263.png new file mode 100644 index 000000000..bb20f925c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2263.png differ diff --git a/fonts/TewiFontOutlineAlt/2264.png b/fonts/TewiFontOutlineAlt/2264.png new file mode 100644 index 000000000..d39d6e348 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2264.png differ diff --git a/fonts/TewiFontOutlineAlt/2265.png b/fonts/TewiFontOutlineAlt/2265.png new file mode 100644 index 000000000..0ff25b8c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2265.png differ diff --git a/fonts/TewiFontOutlineAlt/2266.png b/fonts/TewiFontOutlineAlt/2266.png new file mode 100644 index 000000000..16f22abf1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2266.png differ diff --git a/fonts/TewiFontOutlineAlt/2267.png b/fonts/TewiFontOutlineAlt/2267.png new file mode 100644 index 000000000..a2693e3d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2267.png differ diff --git a/fonts/TewiFontOutlineAlt/2268.png b/fonts/TewiFontOutlineAlt/2268.png new file mode 100644 index 000000000..ae2f117d4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2268.png differ diff --git a/fonts/TewiFontOutlineAlt/2269.png b/fonts/TewiFontOutlineAlt/2269.png new file mode 100644 index 000000000..016d93593 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2269.png differ diff --git a/fonts/TewiFontOutlineAlt/226A.png b/fonts/TewiFontOutlineAlt/226A.png new file mode 100644 index 000000000..ac4e66484 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/226A.png differ diff --git a/fonts/TewiFontOutlineAlt/226B.png b/fonts/TewiFontOutlineAlt/226B.png new file mode 100644 index 000000000..a6f369e34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/226B.png differ diff --git a/fonts/TewiFontOutlineAlt/226C.png b/fonts/TewiFontOutlineAlt/226C.png new file mode 100644 index 000000000..d0c65303e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/226C.png differ diff --git a/fonts/TewiFontOutlineAlt/226D.png b/fonts/TewiFontOutlineAlt/226D.png new file mode 100644 index 000000000..23911ba5b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/226D.png differ diff --git a/fonts/TewiFontOutlineAlt/226E.png b/fonts/TewiFontOutlineAlt/226E.png new file mode 100644 index 000000000..5d4d9a144 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/226E.png differ diff --git a/fonts/TewiFontOutlineAlt/226F.png b/fonts/TewiFontOutlineAlt/226F.png new file mode 100644 index 000000000..5e26bc1b1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/226F.png differ diff --git a/fonts/TewiFontOutlineAlt/2270.png b/fonts/TewiFontOutlineAlt/2270.png new file mode 100644 index 000000000..771aad10f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2270.png differ diff --git a/fonts/TewiFontOutlineAlt/2271.png b/fonts/TewiFontOutlineAlt/2271.png new file mode 100644 index 000000000..df48a7d7a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2271.png differ diff --git a/fonts/TewiFontOutlineAlt/2272.png b/fonts/TewiFontOutlineAlt/2272.png new file mode 100644 index 000000000..66f34f114 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2272.png differ diff --git a/fonts/TewiFontOutlineAlt/2273.png b/fonts/TewiFontOutlineAlt/2273.png new file mode 100644 index 000000000..a27864674 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2273.png differ diff --git a/fonts/TewiFontOutlineAlt/2274.png b/fonts/TewiFontOutlineAlt/2274.png new file mode 100644 index 000000000..6f435e938 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2274.png differ diff --git a/fonts/TewiFontOutlineAlt/2275.png b/fonts/TewiFontOutlineAlt/2275.png new file mode 100644 index 000000000..ea527a02f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2275.png differ diff --git a/fonts/TewiFontOutlineAlt/2276.png b/fonts/TewiFontOutlineAlt/2276.png new file mode 100644 index 000000000..21f339719 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2276.png differ diff --git a/fonts/TewiFontOutlineAlt/2277.png b/fonts/TewiFontOutlineAlt/2277.png new file mode 100644 index 000000000..9737795e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2277.png differ diff --git a/fonts/TewiFontOutlineAlt/2278.png b/fonts/TewiFontOutlineAlt/2278.png new file mode 100644 index 000000000..f90ad7f2b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2278.png differ diff --git a/fonts/TewiFontOutlineAlt/2279.png b/fonts/TewiFontOutlineAlt/2279.png new file mode 100644 index 000000000..157ce599b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2279.png differ diff --git a/fonts/TewiFontOutlineAlt/227A.png b/fonts/TewiFontOutlineAlt/227A.png new file mode 100644 index 000000000..9d1d247ab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/227A.png differ diff --git a/fonts/TewiFontOutlineAlt/227B.png b/fonts/TewiFontOutlineAlt/227B.png new file mode 100644 index 000000000..22741c1c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/227B.png differ diff --git a/fonts/TewiFontOutlineAlt/227C.png b/fonts/TewiFontOutlineAlt/227C.png new file mode 100644 index 000000000..6a313ee9b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/227C.png differ diff --git a/fonts/TewiFontOutlineAlt/227D.png b/fonts/TewiFontOutlineAlt/227D.png new file mode 100644 index 000000000..3040e2058 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/227D.png differ diff --git a/fonts/TewiFontOutlineAlt/227E.png b/fonts/TewiFontOutlineAlt/227E.png new file mode 100644 index 000000000..4a5920bef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/227E.png differ diff --git a/fonts/TewiFontOutlineAlt/227F.png b/fonts/TewiFontOutlineAlt/227F.png new file mode 100644 index 000000000..55d2f965d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/227F.png differ diff --git a/fonts/TewiFontOutlineAlt/2280.png b/fonts/TewiFontOutlineAlt/2280.png new file mode 100644 index 000000000..3dca1f155 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2280.png differ diff --git a/fonts/TewiFontOutlineAlt/2281.png b/fonts/TewiFontOutlineAlt/2281.png new file mode 100644 index 000000000..d47fd01e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2281.png differ diff --git a/fonts/TewiFontOutlineAlt/2282.png b/fonts/TewiFontOutlineAlt/2282.png new file mode 100644 index 000000000..ba4f9d560 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2282.png differ diff --git a/fonts/TewiFontOutlineAlt/2283.png b/fonts/TewiFontOutlineAlt/2283.png new file mode 100644 index 000000000..17fa17e0e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2283.png differ diff --git a/fonts/TewiFontOutlineAlt/2284.png b/fonts/TewiFontOutlineAlt/2284.png new file mode 100644 index 000000000..8516f13bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2284.png differ diff --git a/fonts/TewiFontOutlineAlt/2285.png b/fonts/TewiFontOutlineAlt/2285.png new file mode 100644 index 000000000..5f739c29d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2285.png differ diff --git a/fonts/TewiFontOutlineAlt/2286.png b/fonts/TewiFontOutlineAlt/2286.png new file mode 100644 index 000000000..f43fe62d3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2286.png differ diff --git a/fonts/TewiFontOutlineAlt/2287.png b/fonts/TewiFontOutlineAlt/2287.png new file mode 100644 index 000000000..0f2a56634 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2287.png differ diff --git a/fonts/TewiFontOutlineAlt/2288.png b/fonts/TewiFontOutlineAlt/2288.png new file mode 100644 index 000000000..c33c285a4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2288.png differ diff --git a/fonts/TewiFontOutlineAlt/2289.png b/fonts/TewiFontOutlineAlt/2289.png new file mode 100644 index 000000000..be950b29b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2289.png differ diff --git a/fonts/TewiFontOutlineAlt/228A.png b/fonts/TewiFontOutlineAlt/228A.png new file mode 100644 index 000000000..c46247028 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/228A.png differ diff --git a/fonts/TewiFontOutlineAlt/228B.png b/fonts/TewiFontOutlineAlt/228B.png new file mode 100644 index 000000000..36d3454ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/228B.png differ diff --git a/fonts/TewiFontOutlineAlt/228C.png b/fonts/TewiFontOutlineAlt/228C.png new file mode 100644 index 000000000..78f8fb94a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/228C.png differ diff --git a/fonts/TewiFontOutlineAlt/228D.png b/fonts/TewiFontOutlineAlt/228D.png new file mode 100644 index 000000000..53dd1031b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/228D.png differ diff --git a/fonts/TewiFontOutlineAlt/228E.png b/fonts/TewiFontOutlineAlt/228E.png new file mode 100644 index 000000000..f59ddeab9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/228E.png differ diff --git a/fonts/TewiFontOutlineAlt/228F.png b/fonts/TewiFontOutlineAlt/228F.png new file mode 100644 index 000000000..609c31789 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/228F.png differ diff --git a/fonts/TewiFontOutlineAlt/2290.png b/fonts/TewiFontOutlineAlt/2290.png new file mode 100644 index 000000000..bb95344ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2290.png differ diff --git a/fonts/TewiFontOutlineAlt/2291.png b/fonts/TewiFontOutlineAlt/2291.png new file mode 100644 index 000000000..9a8841aac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2291.png differ diff --git a/fonts/TewiFontOutlineAlt/2292.png b/fonts/TewiFontOutlineAlt/2292.png new file mode 100644 index 000000000..f4c54b9e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2292.png differ diff --git a/fonts/TewiFontOutlineAlt/2293.png b/fonts/TewiFontOutlineAlt/2293.png new file mode 100644 index 000000000..f40380e33 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2293.png differ diff --git a/fonts/TewiFontOutlineAlt/2294.png b/fonts/TewiFontOutlineAlt/2294.png new file mode 100644 index 000000000..735e470b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2294.png differ diff --git a/fonts/TewiFontOutlineAlt/2295.png b/fonts/TewiFontOutlineAlt/2295.png new file mode 100644 index 000000000..c4ee20385 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2295.png differ diff --git a/fonts/TewiFontOutlineAlt/2296.png b/fonts/TewiFontOutlineAlt/2296.png new file mode 100644 index 000000000..293c0546f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2296.png differ diff --git a/fonts/TewiFontOutlineAlt/2297.png b/fonts/TewiFontOutlineAlt/2297.png new file mode 100644 index 000000000..3a5dd97cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2297.png differ diff --git a/fonts/TewiFontOutlineAlt/2298.png b/fonts/TewiFontOutlineAlt/2298.png new file mode 100644 index 000000000..ca54f89f6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2298.png differ diff --git a/fonts/TewiFontOutlineAlt/2299.png b/fonts/TewiFontOutlineAlt/2299.png new file mode 100644 index 000000000..476ebb55a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2299.png differ diff --git a/fonts/TewiFontOutlineAlt/229B.png b/fonts/TewiFontOutlineAlt/229B.png new file mode 100644 index 000000000..476ebb55a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/229B.png differ diff --git a/fonts/TewiFontOutlineAlt/229D.png b/fonts/TewiFontOutlineAlt/229D.png new file mode 100644 index 000000000..293c0546f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/229D.png differ diff --git a/fonts/TewiFontOutlineAlt/229E.png b/fonts/TewiFontOutlineAlt/229E.png new file mode 100644 index 000000000..3399c675b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/229E.png differ diff --git a/fonts/TewiFontOutlineAlt/229F.png b/fonts/TewiFontOutlineAlt/229F.png new file mode 100644 index 000000000..245d6f29c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/229F.png differ diff --git a/fonts/TewiFontOutlineAlt/22A0.png b/fonts/TewiFontOutlineAlt/22A0.png new file mode 100644 index 000000000..51bc87ad4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A0.png differ diff --git a/fonts/TewiFontOutlineAlt/22A1.png b/fonts/TewiFontOutlineAlt/22A1.png new file mode 100644 index 000000000..e5a0850ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A1.png differ diff --git a/fonts/TewiFontOutlineAlt/22A2.png b/fonts/TewiFontOutlineAlt/22A2.png new file mode 100644 index 000000000..b1a2c9437 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A2.png differ diff --git a/fonts/TewiFontOutlineAlt/22A3.png b/fonts/TewiFontOutlineAlt/22A3.png new file mode 100644 index 000000000..63a26eb2f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A3.png differ diff --git a/fonts/TewiFontOutlineAlt/22A4.png b/fonts/TewiFontOutlineAlt/22A4.png new file mode 100644 index 000000000..e0c57631c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A4.png differ diff --git a/fonts/TewiFontOutlineAlt/22A5.png b/fonts/TewiFontOutlineAlt/22A5.png new file mode 100644 index 000000000..e03c12462 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A5.png differ diff --git a/fonts/TewiFontOutlineAlt/22A6.png b/fonts/TewiFontOutlineAlt/22A6.png new file mode 100644 index 000000000..202019bd0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A6.png differ diff --git a/fonts/TewiFontOutlineAlt/22A7.png b/fonts/TewiFontOutlineAlt/22A7.png new file mode 100644 index 000000000..6db302e20 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A7.png differ diff --git a/fonts/TewiFontOutlineAlt/22A8.png b/fonts/TewiFontOutlineAlt/22A8.png new file mode 100644 index 000000000..8b732b8db Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A8.png differ diff --git a/fonts/TewiFontOutlineAlt/22A9.png b/fonts/TewiFontOutlineAlt/22A9.png new file mode 100644 index 000000000..bd7ed5f27 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22A9.png differ diff --git a/fonts/TewiFontOutlineAlt/22AA.png b/fonts/TewiFontOutlineAlt/22AA.png new file mode 100644 index 000000000..2f0abe66a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22AA.png differ diff --git a/fonts/TewiFontOutlineAlt/22AB.png b/fonts/TewiFontOutlineAlt/22AB.png new file mode 100644 index 000000000..c01deb729 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22AB.png differ diff --git a/fonts/TewiFontOutlineAlt/22AC.png b/fonts/TewiFontOutlineAlt/22AC.png new file mode 100644 index 000000000..118881513 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22AC.png differ diff --git a/fonts/TewiFontOutlineAlt/22AD.png b/fonts/TewiFontOutlineAlt/22AD.png new file mode 100644 index 000000000..88f2abe39 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22AD.png differ diff --git a/fonts/TewiFontOutlineAlt/22AE.png b/fonts/TewiFontOutlineAlt/22AE.png new file mode 100644 index 000000000..50bf0a949 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22AE.png differ diff --git a/fonts/TewiFontOutlineAlt/22AF.png b/fonts/TewiFontOutlineAlt/22AF.png new file mode 100644 index 000000000..ed68ba58a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22AF.png differ diff --git a/fonts/TewiFontOutlineAlt/22B0.png b/fonts/TewiFontOutlineAlt/22B0.png new file mode 100644 index 000000000..58d40be79 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B0.png differ diff --git a/fonts/TewiFontOutlineAlt/22B1.png b/fonts/TewiFontOutlineAlt/22B1.png new file mode 100644 index 000000000..1fa4b6aaa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B1.png differ diff --git a/fonts/TewiFontOutlineAlt/22B2.png b/fonts/TewiFontOutlineAlt/22B2.png new file mode 100644 index 000000000..3a49143ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B2.png differ diff --git a/fonts/TewiFontOutlineAlt/22B3.png b/fonts/TewiFontOutlineAlt/22B3.png new file mode 100644 index 000000000..4e6b49937 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B3.png differ diff --git a/fonts/TewiFontOutlineAlt/22B4.png b/fonts/TewiFontOutlineAlt/22B4.png new file mode 100644 index 000000000..1759de977 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B4.png differ diff --git a/fonts/TewiFontOutlineAlt/22B5.png b/fonts/TewiFontOutlineAlt/22B5.png new file mode 100644 index 000000000..54b00cd10 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B5.png differ diff --git a/fonts/TewiFontOutlineAlt/22B6.png b/fonts/TewiFontOutlineAlt/22B6.png new file mode 100644 index 000000000..37dacd701 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B6.png differ diff --git a/fonts/TewiFontOutlineAlt/22B7.png b/fonts/TewiFontOutlineAlt/22B7.png new file mode 100644 index 000000000..9c2e12463 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B7.png differ diff --git a/fonts/TewiFontOutlineAlt/22B8.png b/fonts/TewiFontOutlineAlt/22B8.png new file mode 100644 index 000000000..7c20d6e7e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B8.png differ diff --git a/fonts/TewiFontOutlineAlt/22B9.png b/fonts/TewiFontOutlineAlt/22B9.png new file mode 100644 index 000000000..e92fdbcd8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22B9.png differ diff --git a/fonts/TewiFontOutlineAlt/22BA.png b/fonts/TewiFontOutlineAlt/22BA.png new file mode 100644 index 000000000..6ceee7e66 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22BA.png differ diff --git a/fonts/TewiFontOutlineAlt/22BB.png b/fonts/TewiFontOutlineAlt/22BB.png new file mode 100644 index 000000000..c72040775 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22BB.png differ diff --git a/fonts/TewiFontOutlineAlt/22BC.png b/fonts/TewiFontOutlineAlt/22BC.png new file mode 100644 index 000000000..1a8451083 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22BC.png differ diff --git a/fonts/TewiFontOutlineAlt/22BD.png b/fonts/TewiFontOutlineAlt/22BD.png new file mode 100644 index 000000000..0d5066b88 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22BD.png differ diff --git a/fonts/TewiFontOutlineAlt/22BE.png b/fonts/TewiFontOutlineAlt/22BE.png new file mode 100644 index 000000000..2c628cc44 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22BE.png differ diff --git a/fonts/TewiFontOutlineAlt/22BF.png b/fonts/TewiFontOutlineAlt/22BF.png new file mode 100644 index 000000000..f60b93563 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22BF.png differ diff --git a/fonts/TewiFontOutlineAlt/22C0.png b/fonts/TewiFontOutlineAlt/22C0.png new file mode 100644 index 000000000..a5e1cbb95 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C0.png differ diff --git a/fonts/TewiFontOutlineAlt/22C1.png b/fonts/TewiFontOutlineAlt/22C1.png new file mode 100644 index 000000000..58ec93611 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C1.png differ diff --git a/fonts/TewiFontOutlineAlt/22C2.png b/fonts/TewiFontOutlineAlt/22C2.png new file mode 100644 index 000000000..86c017c2e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C2.png differ diff --git a/fonts/TewiFontOutlineAlt/22C3.png b/fonts/TewiFontOutlineAlt/22C3.png new file mode 100644 index 000000000..1be9a5b8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C3.png differ diff --git a/fonts/TewiFontOutlineAlt/22C4.png b/fonts/TewiFontOutlineAlt/22C4.png new file mode 100644 index 000000000..c92152c90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C4.png differ diff --git a/fonts/TewiFontOutlineAlt/22C5.png b/fonts/TewiFontOutlineAlt/22C5.png new file mode 100644 index 000000000..772255e25 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C5.png differ diff --git a/fonts/TewiFontOutlineAlt/22C6.png b/fonts/TewiFontOutlineAlt/22C6.png new file mode 100644 index 000000000..31c23e1d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C6.png differ diff --git a/fonts/TewiFontOutlineAlt/22C7.png b/fonts/TewiFontOutlineAlt/22C7.png new file mode 100644 index 000000000..329d2cdde Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C7.png differ diff --git a/fonts/TewiFontOutlineAlt/22C8.png b/fonts/TewiFontOutlineAlt/22C8.png new file mode 100644 index 000000000..fa8241d1c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C8.png differ diff --git a/fonts/TewiFontOutlineAlt/22C9.png b/fonts/TewiFontOutlineAlt/22C9.png new file mode 100644 index 000000000..5bad5956b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22C9.png differ diff --git a/fonts/TewiFontOutlineAlt/22CA.png b/fonts/TewiFontOutlineAlt/22CA.png new file mode 100644 index 000000000..52efeafed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22CA.png differ diff --git a/fonts/TewiFontOutlineAlt/22CB.png b/fonts/TewiFontOutlineAlt/22CB.png new file mode 100644 index 000000000..a01a864bc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22CB.png differ diff --git a/fonts/TewiFontOutlineAlt/22CC.png b/fonts/TewiFontOutlineAlt/22CC.png new file mode 100644 index 000000000..e83b62c70 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22CC.png differ diff --git a/fonts/TewiFontOutlineAlt/22CD.png b/fonts/TewiFontOutlineAlt/22CD.png new file mode 100644 index 000000000..5467c9e66 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22CD.png differ diff --git a/fonts/TewiFontOutlineAlt/22CE.png b/fonts/TewiFontOutlineAlt/22CE.png new file mode 100644 index 000000000..c6ad47a31 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22CE.png differ diff --git a/fonts/TewiFontOutlineAlt/22CF.png b/fonts/TewiFontOutlineAlt/22CF.png new file mode 100644 index 000000000..cef69e0e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22CF.png differ diff --git a/fonts/TewiFontOutlineAlt/22D0.png b/fonts/TewiFontOutlineAlt/22D0.png new file mode 100644 index 000000000..cf3038ae6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D0.png differ diff --git a/fonts/TewiFontOutlineAlt/22D1.png b/fonts/TewiFontOutlineAlt/22D1.png new file mode 100644 index 000000000..abee5d95c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D1.png differ diff --git a/fonts/TewiFontOutlineAlt/22D2.png b/fonts/TewiFontOutlineAlt/22D2.png new file mode 100644 index 000000000..6877c1153 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D2.png differ diff --git a/fonts/TewiFontOutlineAlt/22D3.png b/fonts/TewiFontOutlineAlt/22D3.png new file mode 100644 index 000000000..886c8d48c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D3.png differ diff --git a/fonts/TewiFontOutlineAlt/22D4.png b/fonts/TewiFontOutlineAlt/22D4.png new file mode 100644 index 000000000..be2854484 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D4.png differ diff --git a/fonts/TewiFontOutlineAlt/22D5.png b/fonts/TewiFontOutlineAlt/22D5.png new file mode 100644 index 000000000..c11f42b0a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D5.png differ diff --git a/fonts/TewiFontOutlineAlt/22D6.png b/fonts/TewiFontOutlineAlt/22D6.png new file mode 100644 index 000000000..bc157450a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D6.png differ diff --git a/fonts/TewiFontOutlineAlt/22D7.png b/fonts/TewiFontOutlineAlt/22D7.png new file mode 100644 index 000000000..051d4c656 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D7.png differ diff --git a/fonts/TewiFontOutlineAlt/22D8.png b/fonts/TewiFontOutlineAlt/22D8.png new file mode 100644 index 000000000..6ec611b89 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D8.png differ diff --git a/fonts/TewiFontOutlineAlt/22D9.png b/fonts/TewiFontOutlineAlt/22D9.png new file mode 100644 index 000000000..79da7456d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22D9.png differ diff --git a/fonts/TewiFontOutlineAlt/22DA.png b/fonts/TewiFontOutlineAlt/22DA.png new file mode 100644 index 000000000..de2c97c68 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22DA.png differ diff --git a/fonts/TewiFontOutlineAlt/22DB.png b/fonts/TewiFontOutlineAlt/22DB.png new file mode 100644 index 000000000..ecc3eaa4b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22DB.png differ diff --git a/fonts/TewiFontOutlineAlt/22DC.png b/fonts/TewiFontOutlineAlt/22DC.png new file mode 100644 index 000000000..e4157e572 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22DC.png differ diff --git a/fonts/TewiFontOutlineAlt/22DD.png b/fonts/TewiFontOutlineAlt/22DD.png new file mode 100644 index 000000000..868fd353a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22DD.png differ diff --git a/fonts/TewiFontOutlineAlt/22DE.png b/fonts/TewiFontOutlineAlt/22DE.png new file mode 100644 index 000000000..f31a72414 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22DE.png differ diff --git a/fonts/TewiFontOutlineAlt/22DF.png b/fonts/TewiFontOutlineAlt/22DF.png new file mode 100644 index 000000000..13b6214a1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22DF.png differ diff --git a/fonts/TewiFontOutlineAlt/22E0.png b/fonts/TewiFontOutlineAlt/22E0.png new file mode 100644 index 000000000..07b109e1f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E0.png differ diff --git a/fonts/TewiFontOutlineAlt/22E1.png b/fonts/TewiFontOutlineAlt/22E1.png new file mode 100644 index 000000000..038bd80dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E1.png differ diff --git a/fonts/TewiFontOutlineAlt/22E2.png b/fonts/TewiFontOutlineAlt/22E2.png new file mode 100644 index 000000000..000c7aaed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E2.png differ diff --git a/fonts/TewiFontOutlineAlt/22E3.png b/fonts/TewiFontOutlineAlt/22E3.png new file mode 100644 index 000000000..eb892c511 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E3.png differ diff --git a/fonts/TewiFontOutlineAlt/22E4.png b/fonts/TewiFontOutlineAlt/22E4.png new file mode 100644 index 000000000..f28491770 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E4.png differ diff --git a/fonts/TewiFontOutlineAlt/22E5.png b/fonts/TewiFontOutlineAlt/22E5.png new file mode 100644 index 000000000..69230e179 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E5.png differ diff --git a/fonts/TewiFontOutlineAlt/22E6.png b/fonts/TewiFontOutlineAlt/22E6.png new file mode 100644 index 000000000..94e20e901 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E6.png differ diff --git a/fonts/TewiFontOutlineAlt/22E7.png b/fonts/TewiFontOutlineAlt/22E7.png new file mode 100644 index 000000000..9d0dc9d76 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E7.png differ diff --git a/fonts/TewiFontOutlineAlt/22E8.png b/fonts/TewiFontOutlineAlt/22E8.png new file mode 100644 index 000000000..30b1621ea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E8.png differ diff --git a/fonts/TewiFontOutlineAlt/22E9.png b/fonts/TewiFontOutlineAlt/22E9.png new file mode 100644 index 000000000..e77422ab2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22E9.png differ diff --git a/fonts/TewiFontOutlineAlt/22EA.png b/fonts/TewiFontOutlineAlt/22EA.png new file mode 100644 index 000000000..d0033d692 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22EA.png differ diff --git a/fonts/TewiFontOutlineAlt/22EB.png b/fonts/TewiFontOutlineAlt/22EB.png new file mode 100644 index 000000000..957dc9281 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22EB.png differ diff --git a/fonts/TewiFontOutlineAlt/22EC.png b/fonts/TewiFontOutlineAlt/22EC.png new file mode 100644 index 000000000..38f58d7f8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22EC.png differ diff --git a/fonts/TewiFontOutlineAlt/22ED.png b/fonts/TewiFontOutlineAlt/22ED.png new file mode 100644 index 000000000..41129f894 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22ED.png differ diff --git a/fonts/TewiFontOutlineAlt/22EE.png b/fonts/TewiFontOutlineAlt/22EE.png new file mode 100644 index 000000000..cef14262c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22EE.png differ diff --git a/fonts/TewiFontOutlineAlt/22EF.png b/fonts/TewiFontOutlineAlt/22EF.png new file mode 100644 index 000000000..24e2f1a56 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22EF.png differ diff --git a/fonts/TewiFontOutlineAlt/22F0.png b/fonts/TewiFontOutlineAlt/22F0.png new file mode 100644 index 000000000..8035ddaa0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F0.png differ diff --git a/fonts/TewiFontOutlineAlt/22F1.png b/fonts/TewiFontOutlineAlt/22F1.png new file mode 100644 index 000000000..8f4e40cc9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F1.png differ diff --git a/fonts/TewiFontOutlineAlt/22F2.png b/fonts/TewiFontOutlineAlt/22F2.png new file mode 100644 index 000000000..cf213150a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F2.png differ diff --git a/fonts/TewiFontOutlineAlt/22F3.png b/fonts/TewiFontOutlineAlt/22F3.png new file mode 100644 index 000000000..b1fb1fd2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F3.png differ diff --git a/fonts/TewiFontOutlineAlt/22F4.png b/fonts/TewiFontOutlineAlt/22F4.png new file mode 100644 index 000000000..b1fb1fd2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F4.png differ diff --git a/fonts/TewiFontOutlineAlt/22F5.png b/fonts/TewiFontOutlineAlt/22F5.png new file mode 100644 index 000000000..4f93054ec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F5.png differ diff --git a/fonts/TewiFontOutlineAlt/22F6.png b/fonts/TewiFontOutlineAlt/22F6.png new file mode 100644 index 000000000..cae540a3c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F6.png differ diff --git a/fonts/TewiFontOutlineAlt/22F7.png b/fonts/TewiFontOutlineAlt/22F7.png new file mode 100644 index 000000000..36bb94d65 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F7.png differ diff --git a/fonts/TewiFontOutlineAlt/22F8.png b/fonts/TewiFontOutlineAlt/22F8.png new file mode 100644 index 000000000..c2e1d48d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F8.png differ diff --git a/fonts/TewiFontOutlineAlt/22F9.png b/fonts/TewiFontOutlineAlt/22F9.png new file mode 100644 index 000000000..f2c52c73b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22F9.png differ diff --git a/fonts/TewiFontOutlineAlt/22FA.png b/fonts/TewiFontOutlineAlt/22FA.png new file mode 100644 index 000000000..341bcda22 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22FA.png differ diff --git a/fonts/TewiFontOutlineAlt/22FB.png b/fonts/TewiFontOutlineAlt/22FB.png new file mode 100644 index 000000000..44ca1f143 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22FB.png differ diff --git a/fonts/TewiFontOutlineAlt/22FC.png b/fonts/TewiFontOutlineAlt/22FC.png new file mode 100644 index 000000000..44ca1f143 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22FC.png differ diff --git a/fonts/TewiFontOutlineAlt/22FD.png b/fonts/TewiFontOutlineAlt/22FD.png new file mode 100644 index 000000000..a9a71ff27 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22FD.png differ diff --git a/fonts/TewiFontOutlineAlt/22FE.png b/fonts/TewiFontOutlineAlt/22FE.png new file mode 100644 index 000000000..330adfdb9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22FE.png differ diff --git a/fonts/TewiFontOutlineAlt/22FF.png b/fonts/TewiFontOutlineAlt/22FF.png new file mode 100644 index 000000000..df5525fa5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/22FF.png differ diff --git a/fonts/TewiFontOutlineAlt/2300.png b/fonts/TewiFontOutlineAlt/2300.png new file mode 100644 index 000000000..7ce3d2b00 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2300.png differ diff --git a/fonts/TewiFontOutlineAlt/2301.png b/fonts/TewiFontOutlineAlt/2301.png new file mode 100644 index 000000000..8b277da80 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2301.png differ diff --git a/fonts/TewiFontOutlineAlt/2302.png b/fonts/TewiFontOutlineAlt/2302.png new file mode 100644 index 000000000..062d8e716 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2302.png differ diff --git a/fonts/TewiFontOutlineAlt/2303.png b/fonts/TewiFontOutlineAlt/2303.png new file mode 100644 index 000000000..76dcdce55 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2303.png differ diff --git a/fonts/TewiFontOutlineAlt/2304.png b/fonts/TewiFontOutlineAlt/2304.png new file mode 100644 index 000000000..3bdfbc1ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2304.png differ diff --git a/fonts/TewiFontOutlineAlt/2305.png b/fonts/TewiFontOutlineAlt/2305.png new file mode 100644 index 000000000..4f5a62ae8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2305.png differ diff --git a/fonts/TewiFontOutlineAlt/2306.png b/fonts/TewiFontOutlineAlt/2306.png new file mode 100644 index 000000000..d444e508a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2306.png differ diff --git a/fonts/TewiFontOutlineAlt/2307.png b/fonts/TewiFontOutlineAlt/2307.png new file mode 100644 index 000000000..699ee8113 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2307.png differ diff --git a/fonts/TewiFontOutlineAlt/2308.png b/fonts/TewiFontOutlineAlt/2308.png new file mode 100644 index 000000000..190a8d988 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2308.png differ diff --git a/fonts/TewiFontOutlineAlt/2309.png b/fonts/TewiFontOutlineAlt/2309.png new file mode 100644 index 000000000..a1bc2bfb8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2309.png differ diff --git a/fonts/TewiFontOutlineAlt/230A.png b/fonts/TewiFontOutlineAlt/230A.png new file mode 100644 index 000000000..3916ac352 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/230A.png differ diff --git a/fonts/TewiFontOutlineAlt/230B.png b/fonts/TewiFontOutlineAlt/230B.png new file mode 100644 index 000000000..c9829f9d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/230B.png differ diff --git a/fonts/TewiFontOutlineAlt/230C.png b/fonts/TewiFontOutlineAlt/230C.png new file mode 100644 index 000000000..3277f4a79 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/230C.png differ diff --git a/fonts/TewiFontOutlineAlt/230D.png b/fonts/TewiFontOutlineAlt/230D.png new file mode 100644 index 000000000..261e37881 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/230D.png differ diff --git a/fonts/TewiFontOutlineAlt/230E.png b/fonts/TewiFontOutlineAlt/230E.png new file mode 100644 index 000000000..770280d3a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/230E.png differ diff --git a/fonts/TewiFontOutlineAlt/230F.png b/fonts/TewiFontOutlineAlt/230F.png new file mode 100644 index 000000000..7c519ea26 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/230F.png differ diff --git a/fonts/TewiFontOutlineAlt/2310.png b/fonts/TewiFontOutlineAlt/2310.png new file mode 100644 index 000000000..1162824a2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2310.png differ diff --git a/fonts/TewiFontOutlineAlt/2311.png b/fonts/TewiFontOutlineAlt/2311.png new file mode 100644 index 000000000..5220af3df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2311.png differ diff --git a/fonts/TewiFontOutlineAlt/2312.png b/fonts/TewiFontOutlineAlt/2312.png new file mode 100644 index 000000000..edd280c4d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2312.png differ diff --git a/fonts/TewiFontOutlineAlt/2313.png b/fonts/TewiFontOutlineAlt/2313.png new file mode 100644 index 000000000..ffbab9ff1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2313.png differ diff --git a/fonts/TewiFontOutlineAlt/2314.png b/fonts/TewiFontOutlineAlt/2314.png new file mode 100644 index 000000000..fb9934f7f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2314.png differ diff --git a/fonts/TewiFontOutlineAlt/2315.png b/fonts/TewiFontOutlineAlt/2315.png new file mode 100644 index 000000000..f193f434b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2315.png differ diff --git a/fonts/TewiFontOutlineAlt/2316.png b/fonts/TewiFontOutlineAlt/2316.png new file mode 100644 index 000000000..5f492705f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2316.png differ diff --git a/fonts/TewiFontOutlineAlt/2317.png b/fonts/TewiFontOutlineAlt/2317.png new file mode 100644 index 000000000..3478a1cb6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2317.png differ diff --git a/fonts/TewiFontOutlineAlt/2318.png b/fonts/TewiFontOutlineAlt/2318.png new file mode 100644 index 000000000..09f52d78a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2318.png differ diff --git a/fonts/TewiFontOutlineAlt/2319.png b/fonts/TewiFontOutlineAlt/2319.png new file mode 100644 index 000000000..fb1b066dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2319.png differ diff --git a/fonts/TewiFontOutlineAlt/231A.png b/fonts/TewiFontOutlineAlt/231A.png new file mode 100644 index 000000000..f0762e325 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/231A.png differ diff --git a/fonts/TewiFontOutlineAlt/231B.png b/fonts/TewiFontOutlineAlt/231B.png new file mode 100644 index 000000000..2b1376809 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/231B.png differ diff --git a/fonts/TewiFontOutlineAlt/231C.png b/fonts/TewiFontOutlineAlt/231C.png new file mode 100644 index 000000000..d50772460 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/231C.png differ diff --git a/fonts/TewiFontOutlineAlt/231D.png b/fonts/TewiFontOutlineAlt/231D.png new file mode 100644 index 000000000..fe7d2adb7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/231D.png differ diff --git a/fonts/TewiFontOutlineAlt/231E.png b/fonts/TewiFontOutlineAlt/231E.png new file mode 100644 index 000000000..8c3de9c25 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/231E.png differ diff --git a/fonts/TewiFontOutlineAlt/231F.png b/fonts/TewiFontOutlineAlt/231F.png new file mode 100644 index 000000000..2815dcd84 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/231F.png differ diff --git a/fonts/TewiFontOutlineAlt/2320.png b/fonts/TewiFontOutlineAlt/2320.png new file mode 100644 index 000000000..321a89e04 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2320.png differ diff --git a/fonts/TewiFontOutlineAlt/2322.png b/fonts/TewiFontOutlineAlt/2322.png new file mode 100644 index 000000000..6d6997775 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2322.png differ diff --git a/fonts/TewiFontOutlineAlt/2323.png b/fonts/TewiFontOutlineAlt/2323.png new file mode 100644 index 000000000..1121264f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2323.png differ diff --git a/fonts/TewiFontOutlineAlt/2324.png b/fonts/TewiFontOutlineAlt/2324.png new file mode 100644 index 000000000..4091cd390 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2324.png differ diff --git a/fonts/TewiFontOutlineAlt/2325.png b/fonts/TewiFontOutlineAlt/2325.png new file mode 100644 index 000000000..6b5aa6293 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2325.png differ diff --git a/fonts/TewiFontOutlineAlt/2326.png b/fonts/TewiFontOutlineAlt/2326.png new file mode 100644 index 000000000..1d00de1c1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2326.png differ diff --git a/fonts/TewiFontOutlineAlt/2327.png b/fonts/TewiFontOutlineAlt/2327.png new file mode 100644 index 000000000..a538f2891 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2327.png differ diff --git a/fonts/TewiFontOutlineAlt/2328.png b/fonts/TewiFontOutlineAlt/2328.png new file mode 100644 index 000000000..03556556c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2328.png differ diff --git a/fonts/TewiFontOutlineAlt/232B.png b/fonts/TewiFontOutlineAlt/232B.png new file mode 100644 index 000000000..403108983 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/232B.png differ diff --git a/fonts/TewiFontOutlineAlt/232D.png b/fonts/TewiFontOutlineAlt/232D.png new file mode 100644 index 000000000..600d4e0e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/232D.png differ diff --git a/fonts/TewiFontOutlineAlt/232F.png b/fonts/TewiFontOutlineAlt/232F.png new file mode 100644 index 000000000..b13c1197b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/232F.png differ diff --git a/fonts/TewiFontOutlineAlt/2330.png b/fonts/TewiFontOutlineAlt/2330.png new file mode 100644 index 000000000..ef7e6ab9e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2330.png differ diff --git a/fonts/TewiFontOutlineAlt/2331.png b/fonts/TewiFontOutlineAlt/2331.png new file mode 100644 index 000000000..ac2120be1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2331.png differ diff --git a/fonts/TewiFontOutlineAlt/2332.png b/fonts/TewiFontOutlineAlt/2332.png new file mode 100644 index 000000000..3048f6929 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2332.png differ diff --git a/fonts/TewiFontOutlineAlt/2333.png b/fonts/TewiFontOutlineAlt/2333.png new file mode 100644 index 000000000..b1ffbb15b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2333.png differ diff --git a/fonts/TewiFontOutlineAlt/2334.png b/fonts/TewiFontOutlineAlt/2334.png new file mode 100644 index 000000000..91ea9448f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2334.png differ diff --git a/fonts/TewiFontOutlineAlt/2335.png b/fonts/TewiFontOutlineAlt/2335.png new file mode 100644 index 000000000..3bdfbc1ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2335.png differ diff --git a/fonts/TewiFontOutlineAlt/2336.png b/fonts/TewiFontOutlineAlt/2336.png new file mode 100644 index 000000000..6ffd729c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2336.png differ diff --git a/fonts/TewiFontOutlineAlt/2337.png b/fonts/TewiFontOutlineAlt/2337.png new file mode 100644 index 000000000..130290a78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2337.png differ diff --git a/fonts/TewiFontOutlineAlt/2338.png b/fonts/TewiFontOutlineAlt/2338.png new file mode 100644 index 000000000..73fe49830 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2338.png differ diff --git a/fonts/TewiFontOutlineAlt/2339.png b/fonts/TewiFontOutlineAlt/2339.png new file mode 100644 index 000000000..6f98aa470 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2339.png differ diff --git a/fonts/TewiFontOutlineAlt/233A.png b/fonts/TewiFontOutlineAlt/233A.png new file mode 100644 index 000000000..bfd82f9bc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/233A.png differ diff --git a/fonts/TewiFontOutlineAlt/233B.png b/fonts/TewiFontOutlineAlt/233B.png new file mode 100644 index 000000000..36b7c2837 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/233B.png differ diff --git a/fonts/TewiFontOutlineAlt/233C.png b/fonts/TewiFontOutlineAlt/233C.png new file mode 100644 index 000000000..c10603f29 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/233C.png differ diff --git a/fonts/TewiFontOutlineAlt/233D.png b/fonts/TewiFontOutlineAlt/233D.png new file mode 100644 index 000000000..d31599514 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/233D.png differ diff --git a/fonts/TewiFontOutlineAlt/233E.png b/fonts/TewiFontOutlineAlt/233E.png new file mode 100644 index 000000000..0cfa309d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/233E.png differ diff --git a/fonts/TewiFontOutlineAlt/233F.png b/fonts/TewiFontOutlineAlt/233F.png new file mode 100644 index 000000000..80c44c153 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/233F.png differ diff --git a/fonts/TewiFontOutlineAlt/2340.png b/fonts/TewiFontOutlineAlt/2340.png new file mode 100644 index 000000000..52a6ac57c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2340.png differ diff --git a/fonts/TewiFontOutlineAlt/2341.png b/fonts/TewiFontOutlineAlt/2341.png new file mode 100644 index 000000000..531f2f072 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2341.png differ diff --git a/fonts/TewiFontOutlineAlt/2342.png b/fonts/TewiFontOutlineAlt/2342.png new file mode 100644 index 000000000..91cd1014b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2342.png differ diff --git a/fonts/TewiFontOutlineAlt/2343.png b/fonts/TewiFontOutlineAlt/2343.png new file mode 100644 index 000000000..51bf04c5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2343.png differ diff --git a/fonts/TewiFontOutlineAlt/2344.png b/fonts/TewiFontOutlineAlt/2344.png new file mode 100644 index 000000000..4a4dd0f8b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2344.png differ diff --git a/fonts/TewiFontOutlineAlt/2345.png b/fonts/TewiFontOutlineAlt/2345.png new file mode 100644 index 000000000..a7d5b67c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2345.png differ diff --git a/fonts/TewiFontOutlineAlt/2346.png b/fonts/TewiFontOutlineAlt/2346.png new file mode 100644 index 000000000..056789dac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2346.png differ diff --git a/fonts/TewiFontOutlineAlt/2347.png b/fonts/TewiFontOutlineAlt/2347.png new file mode 100644 index 000000000..6f0e06927 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2347.png differ diff --git a/fonts/TewiFontOutlineAlt/2348.png b/fonts/TewiFontOutlineAlt/2348.png new file mode 100644 index 000000000..a2e6866f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2348.png differ diff --git a/fonts/TewiFontOutlineAlt/2349.png b/fonts/TewiFontOutlineAlt/2349.png new file mode 100644 index 000000000..d46bb9790 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2349.png differ diff --git a/fonts/TewiFontOutlineAlt/234A.png b/fonts/TewiFontOutlineAlt/234A.png new file mode 100644 index 000000000..0353c0fae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/234A.png differ diff --git a/fonts/TewiFontOutlineAlt/234B.png b/fonts/TewiFontOutlineAlt/234B.png new file mode 100644 index 000000000..c06f81b70 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/234B.png differ diff --git a/fonts/TewiFontOutlineAlt/234C.png b/fonts/TewiFontOutlineAlt/234C.png new file mode 100644 index 000000000..9c9c142dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/234C.png differ diff --git a/fonts/TewiFontOutlineAlt/234D.png b/fonts/TewiFontOutlineAlt/234D.png new file mode 100644 index 000000000..69f950828 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/234D.png differ diff --git a/fonts/TewiFontOutlineAlt/234E.png b/fonts/TewiFontOutlineAlt/234E.png new file mode 100644 index 000000000..1e5da0a35 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/234E.png differ diff --git a/fonts/TewiFontOutlineAlt/234F.png b/fonts/TewiFontOutlineAlt/234F.png new file mode 100644 index 000000000..d894f2027 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/234F.png differ diff --git a/fonts/TewiFontOutlineAlt/2350.png b/fonts/TewiFontOutlineAlt/2350.png new file mode 100644 index 000000000..6bf55c723 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2350.png differ diff --git a/fonts/TewiFontOutlineAlt/2351.png b/fonts/TewiFontOutlineAlt/2351.png new file mode 100644 index 000000000..0fa3603bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2351.png differ diff --git a/fonts/TewiFontOutlineAlt/2352.png b/fonts/TewiFontOutlineAlt/2352.png new file mode 100644 index 000000000..3c89d24b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2352.png differ diff --git a/fonts/TewiFontOutlineAlt/2353.png b/fonts/TewiFontOutlineAlt/2353.png new file mode 100644 index 000000000..88f9d94b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2353.png differ diff --git a/fonts/TewiFontOutlineAlt/2354.png b/fonts/TewiFontOutlineAlt/2354.png new file mode 100644 index 000000000..2d53190c1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2354.png differ diff --git a/fonts/TewiFontOutlineAlt/2355.png b/fonts/TewiFontOutlineAlt/2355.png new file mode 100644 index 000000000..8c61937f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2355.png differ diff --git a/fonts/TewiFontOutlineAlt/2356.png b/fonts/TewiFontOutlineAlt/2356.png new file mode 100644 index 000000000..26e799a1f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2356.png differ diff --git a/fonts/TewiFontOutlineAlt/2357.png b/fonts/TewiFontOutlineAlt/2357.png new file mode 100644 index 000000000..12626aa15 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2357.png differ diff --git a/fonts/TewiFontOutlineAlt/2358.png b/fonts/TewiFontOutlineAlt/2358.png new file mode 100644 index 000000000..b05a07d79 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2358.png differ diff --git a/fonts/TewiFontOutlineAlt/2359.png b/fonts/TewiFontOutlineAlt/2359.png new file mode 100644 index 000000000..f8c57f737 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2359.png differ diff --git a/fonts/TewiFontOutlineAlt/235A.png b/fonts/TewiFontOutlineAlt/235A.png new file mode 100644 index 000000000..d073645bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/235A.png differ diff --git a/fonts/TewiFontOutlineAlt/235B.png b/fonts/TewiFontOutlineAlt/235B.png new file mode 100644 index 000000000..91262bdbf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/235B.png differ diff --git a/fonts/TewiFontOutlineAlt/235C.png b/fonts/TewiFontOutlineAlt/235C.png new file mode 100644 index 000000000..52e8513ed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/235C.png differ diff --git a/fonts/TewiFontOutlineAlt/235D.png b/fonts/TewiFontOutlineAlt/235D.png new file mode 100644 index 000000000..02ef3255a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/235D.png differ diff --git a/fonts/TewiFontOutlineAlt/235E.png b/fonts/TewiFontOutlineAlt/235E.png new file mode 100644 index 000000000..6290ce5a2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/235E.png differ diff --git a/fonts/TewiFontOutlineAlt/235F.png b/fonts/TewiFontOutlineAlt/235F.png new file mode 100644 index 000000000..8285be03f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/235F.png differ diff --git a/fonts/TewiFontOutlineAlt/2360.png b/fonts/TewiFontOutlineAlt/2360.png new file mode 100644 index 000000000..2bf2d33f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2360.png differ diff --git a/fonts/TewiFontOutlineAlt/2361.png b/fonts/TewiFontOutlineAlt/2361.png new file mode 100644 index 000000000..3882421e1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2361.png differ diff --git a/fonts/TewiFontOutlineAlt/2362.png b/fonts/TewiFontOutlineAlt/2362.png new file mode 100644 index 000000000..ab219efe9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2362.png differ diff --git a/fonts/TewiFontOutlineAlt/2363.png b/fonts/TewiFontOutlineAlt/2363.png new file mode 100644 index 000000000..91a6e02f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2363.png differ diff --git a/fonts/TewiFontOutlineAlt/2364.png b/fonts/TewiFontOutlineAlt/2364.png new file mode 100644 index 000000000..8b155dd4e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2364.png differ diff --git a/fonts/TewiFontOutlineAlt/2365.png b/fonts/TewiFontOutlineAlt/2365.png new file mode 100644 index 000000000..b0a8e7c7e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2365.png differ diff --git a/fonts/TewiFontOutlineAlt/2366.png b/fonts/TewiFontOutlineAlt/2366.png new file mode 100644 index 000000000..f37073423 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2366.png differ diff --git a/fonts/TewiFontOutlineAlt/2367.png b/fonts/TewiFontOutlineAlt/2367.png new file mode 100644 index 000000000..739e71d02 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2367.png differ diff --git a/fonts/TewiFontOutlineAlt/2368.png b/fonts/TewiFontOutlineAlt/2368.png new file mode 100644 index 000000000..6850ac03a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2368.png differ diff --git a/fonts/TewiFontOutlineAlt/2369.png b/fonts/TewiFontOutlineAlt/2369.png new file mode 100644 index 000000000..d69bdd6ac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2369.png differ diff --git a/fonts/TewiFontOutlineAlt/236A.png b/fonts/TewiFontOutlineAlt/236A.png new file mode 100644 index 000000000..d3913e96c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/236A.png differ diff --git a/fonts/TewiFontOutlineAlt/236B.png b/fonts/TewiFontOutlineAlt/236B.png new file mode 100644 index 000000000..bc0a3368a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/236B.png differ diff --git a/fonts/TewiFontOutlineAlt/236C.png b/fonts/TewiFontOutlineAlt/236C.png new file mode 100644 index 000000000..56fc1569d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/236C.png differ diff --git a/fonts/TewiFontOutlineAlt/236D.png b/fonts/TewiFontOutlineAlt/236D.png new file mode 100644 index 000000000..3e98ec0ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/236D.png differ diff --git a/fonts/TewiFontOutlineAlt/236E.png b/fonts/TewiFontOutlineAlt/236E.png new file mode 100644 index 000000000..98efbdabe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/236E.png differ diff --git a/fonts/TewiFontOutlineAlt/236F.png b/fonts/TewiFontOutlineAlt/236F.png new file mode 100644 index 000000000..60e560678 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/236F.png differ diff --git a/fonts/TewiFontOutlineAlt/2370.png b/fonts/TewiFontOutlineAlt/2370.png new file mode 100644 index 000000000..a782b1e3a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2370.png differ diff --git a/fonts/TewiFontOutlineAlt/2371.png b/fonts/TewiFontOutlineAlt/2371.png new file mode 100644 index 000000000..048d1cb74 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2371.png differ diff --git a/fonts/TewiFontOutlineAlt/2372.png b/fonts/TewiFontOutlineAlt/2372.png new file mode 100644 index 000000000..eed964251 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2372.png differ diff --git a/fonts/TewiFontOutlineAlt/2373.png b/fonts/TewiFontOutlineAlt/2373.png new file mode 100644 index 000000000..9486f96e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2373.png differ diff --git a/fonts/TewiFontOutlineAlt/2374.png b/fonts/TewiFontOutlineAlt/2374.png new file mode 100644 index 000000000..6eaeefaf1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2374.png differ diff --git a/fonts/TewiFontOutlineAlt/2375.png b/fonts/TewiFontOutlineAlt/2375.png new file mode 100644 index 000000000..5ab8be075 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2375.png differ diff --git a/fonts/TewiFontOutlineAlt/2376.png b/fonts/TewiFontOutlineAlt/2376.png new file mode 100644 index 000000000..d8d96cd8e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2376.png differ diff --git a/fonts/TewiFontOutlineAlt/2377.png b/fonts/TewiFontOutlineAlt/2377.png new file mode 100644 index 000000000..61c13d0bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2377.png differ diff --git a/fonts/TewiFontOutlineAlt/2378.png b/fonts/TewiFontOutlineAlt/2378.png new file mode 100644 index 000000000..441d2fbc6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2378.png differ diff --git a/fonts/TewiFontOutlineAlt/2379.png b/fonts/TewiFontOutlineAlt/2379.png new file mode 100644 index 000000000..5c179dabb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2379.png differ diff --git a/fonts/TewiFontOutlineAlt/237A.png b/fonts/TewiFontOutlineAlt/237A.png new file mode 100644 index 000000000..d8d96cd8e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/237A.png differ diff --git a/fonts/TewiFontOutlineAlt/237B.png b/fonts/TewiFontOutlineAlt/237B.png new file mode 100644 index 000000000..742d92de5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/237B.png differ diff --git a/fonts/TewiFontOutlineAlt/237C.png b/fonts/TewiFontOutlineAlt/237C.png new file mode 100644 index 000000000..b8106f82a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/237C.png differ diff --git a/fonts/TewiFontOutlineAlt/237D.png b/fonts/TewiFontOutlineAlt/237D.png new file mode 100644 index 000000000..865debece Binary files /dev/null and b/fonts/TewiFontOutlineAlt/237D.png differ diff --git a/fonts/TewiFontOutlineAlt/237E.png b/fonts/TewiFontOutlineAlt/237E.png new file mode 100644 index 000000000..f8ebdc968 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/237E.png differ diff --git a/fonts/TewiFontOutlineAlt/2380.png b/fonts/TewiFontOutlineAlt/2380.png new file mode 100644 index 000000000..6b848a8ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2380.png differ diff --git a/fonts/TewiFontOutlineAlt/2388.png b/fonts/TewiFontOutlineAlt/2388.png new file mode 100644 index 000000000..9656e18d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2388.png differ diff --git a/fonts/TewiFontOutlineAlt/238B.png b/fonts/TewiFontOutlineAlt/238B.png new file mode 100644 index 000000000..4a365596e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/238B.png differ diff --git a/fonts/TewiFontOutlineAlt/23BA.png b/fonts/TewiFontOutlineAlt/23BA.png new file mode 100644 index 000000000..7088132f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23BA.png differ diff --git a/fonts/TewiFontOutlineAlt/23BB.png b/fonts/TewiFontOutlineAlt/23BB.png new file mode 100644 index 000000000..b0f6dc864 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23BB.png differ diff --git a/fonts/TewiFontOutlineAlt/23BC.png b/fonts/TewiFontOutlineAlt/23BC.png new file mode 100644 index 000000000..d4148414e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23BC.png differ diff --git a/fonts/TewiFontOutlineAlt/23BD.png b/fonts/TewiFontOutlineAlt/23BD.png new file mode 100644 index 000000000..3457f66cd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23BD.png differ diff --git a/fonts/TewiFontOutlineAlt/23E9.png b/fonts/TewiFontOutlineAlt/23E9.png new file mode 100644 index 000000000..e157eedb2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23E9.png differ diff --git a/fonts/TewiFontOutlineAlt/23EA.png b/fonts/TewiFontOutlineAlt/23EA.png new file mode 100644 index 000000000..7c93d8172 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23EA.png differ diff --git a/fonts/TewiFontOutlineAlt/23EB.png b/fonts/TewiFontOutlineAlt/23EB.png new file mode 100644 index 000000000..9165d5b1c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23EB.png differ diff --git a/fonts/TewiFontOutlineAlt/23EC.png b/fonts/TewiFontOutlineAlt/23EC.png new file mode 100644 index 000000000..cea0cffc1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23EC.png differ diff --git a/fonts/TewiFontOutlineAlt/23ED.png b/fonts/TewiFontOutlineAlt/23ED.png new file mode 100644 index 000000000..e5a51edc2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23ED.png differ diff --git a/fonts/TewiFontOutlineAlt/23EE.png b/fonts/TewiFontOutlineAlt/23EE.png new file mode 100644 index 000000000..3e8ced0a8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23EE.png differ diff --git a/fonts/TewiFontOutlineAlt/23EF.png b/fonts/TewiFontOutlineAlt/23EF.png new file mode 100644 index 000000000..f12af136a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/23EF.png differ diff --git a/fonts/TewiFontOutlineAlt/2408.png b/fonts/TewiFontOutlineAlt/2408.png new file mode 100644 index 000000000..d0cb91549 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2408.png differ diff --git a/fonts/TewiFontOutlineAlt/2409.png b/fonts/TewiFontOutlineAlt/2409.png new file mode 100644 index 000000000..85036aa79 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2409.png differ diff --git a/fonts/TewiFontOutlineAlt/240A.png b/fonts/TewiFontOutlineAlt/240A.png new file mode 100644 index 000000000..e5ded2ee8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/240A.png differ diff --git a/fonts/TewiFontOutlineAlt/240B.png b/fonts/TewiFontOutlineAlt/240B.png new file mode 100644 index 000000000..85b0887e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/240B.png differ diff --git a/fonts/TewiFontOutlineAlt/240C.png b/fonts/TewiFontOutlineAlt/240C.png new file mode 100644 index 000000000..8de7df8fa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/240C.png differ diff --git a/fonts/TewiFontOutlineAlt/240D.png b/fonts/TewiFontOutlineAlt/240D.png new file mode 100644 index 000000000..dc526ec18 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/240D.png differ diff --git a/fonts/TewiFontOutlineAlt/240E.png b/fonts/TewiFontOutlineAlt/240E.png new file mode 100644 index 000000000..1797ec77a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/240E.png differ diff --git a/fonts/TewiFontOutlineAlt/240F.png b/fonts/TewiFontOutlineAlt/240F.png new file mode 100644 index 000000000..a7374253d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/240F.png differ diff --git a/fonts/TewiFontOutlineAlt/2423.png b/fonts/TewiFontOutlineAlt/2423.png new file mode 100644 index 000000000..d535bbaa7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2423.png differ diff --git a/fonts/TewiFontOutlineAlt/2424.png b/fonts/TewiFontOutlineAlt/2424.png new file mode 100644 index 000000000..62fe61e52 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2424.png differ diff --git a/fonts/TewiFontOutlineAlt/2425.png b/fonts/TewiFontOutlineAlt/2425.png new file mode 100644 index 000000000..138253811 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2425.png differ diff --git a/fonts/TewiFontOutlineAlt/2426.png b/fonts/TewiFontOutlineAlt/2426.png new file mode 100644 index 000000000..3e95b56c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2426.png differ diff --git a/fonts/TewiFontOutlineAlt/2440.png b/fonts/TewiFontOutlineAlt/2440.png new file mode 100644 index 000000000..87d4f3071 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2440.png differ diff --git a/fonts/TewiFontOutlineAlt/2441.png b/fonts/TewiFontOutlineAlt/2441.png new file mode 100644 index 000000000..2fdbcb7a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2441.png differ diff --git a/fonts/TewiFontOutlineAlt/2442.png b/fonts/TewiFontOutlineAlt/2442.png new file mode 100644 index 000000000..91987b0be Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2442.png differ diff --git a/fonts/TewiFontOutlineAlt/2443.png b/fonts/TewiFontOutlineAlt/2443.png new file mode 100644 index 000000000..58d3a0fb9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2443.png differ diff --git a/fonts/TewiFontOutlineAlt/2444.png b/fonts/TewiFontOutlineAlt/2444.png new file mode 100644 index 000000000..7c0a84fe4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2444.png differ diff --git a/fonts/TewiFontOutlineAlt/2445.png b/fonts/TewiFontOutlineAlt/2445.png new file mode 100644 index 000000000..c63693a85 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2445.png differ diff --git a/fonts/TewiFontOutlineAlt/2446.png b/fonts/TewiFontOutlineAlt/2446.png new file mode 100644 index 000000000..05c0394bd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2446.png differ diff --git a/fonts/TewiFontOutlineAlt/2447.png b/fonts/TewiFontOutlineAlt/2447.png new file mode 100644 index 000000000..3539e3fe8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2447.png differ diff --git a/fonts/TewiFontOutlineAlt/2448.png b/fonts/TewiFontOutlineAlt/2448.png new file mode 100644 index 000000000..578fba80b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2448.png differ diff --git a/fonts/TewiFontOutlineAlt/2449.png b/fonts/TewiFontOutlineAlt/2449.png new file mode 100644 index 000000000..a73178345 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2449.png differ diff --git a/fonts/TewiFontOutlineAlt/244A.png b/fonts/TewiFontOutlineAlt/244A.png new file mode 100644 index 000000000..db2628098 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/244A.png differ diff --git a/fonts/TewiFontOutlineAlt/2460.png b/fonts/TewiFontOutlineAlt/2460.png new file mode 100644 index 000000000..e8f946807 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2460.png differ diff --git a/fonts/TewiFontOutlineAlt/2461.png b/fonts/TewiFontOutlineAlt/2461.png new file mode 100644 index 000000000..d1d08fdb0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2461.png differ diff --git a/fonts/TewiFontOutlineAlt/2462.png b/fonts/TewiFontOutlineAlt/2462.png new file mode 100644 index 000000000..d252c3072 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2462.png differ diff --git a/fonts/TewiFontOutlineAlt/2463.png b/fonts/TewiFontOutlineAlt/2463.png new file mode 100644 index 000000000..41a478bf5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2463.png differ diff --git a/fonts/TewiFontOutlineAlt/2464.png b/fonts/TewiFontOutlineAlt/2464.png new file mode 100644 index 000000000..cfa0850cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2464.png differ diff --git a/fonts/TewiFontOutlineAlt/2465.png b/fonts/TewiFontOutlineAlt/2465.png new file mode 100644 index 000000000..46f3f0392 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2465.png differ diff --git a/fonts/TewiFontOutlineAlt/2466.png b/fonts/TewiFontOutlineAlt/2466.png new file mode 100644 index 000000000..13ff97043 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2466.png differ diff --git a/fonts/TewiFontOutlineAlt/2467.png b/fonts/TewiFontOutlineAlt/2467.png new file mode 100644 index 000000000..2d10fe9db Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2467.png differ diff --git a/fonts/TewiFontOutlineAlt/2468.png b/fonts/TewiFontOutlineAlt/2468.png new file mode 100644 index 000000000..87d02cae5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2468.png differ diff --git a/fonts/TewiFontOutlineAlt/2469.png b/fonts/TewiFontOutlineAlt/2469.png new file mode 100644 index 000000000..e15eef4e8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2469.png differ diff --git a/fonts/TewiFontOutlineAlt/246A.png b/fonts/TewiFontOutlineAlt/246A.png new file mode 100644 index 000000000..8a4bee37b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/246A.png differ diff --git a/fonts/TewiFontOutlineAlt/246B.png b/fonts/TewiFontOutlineAlt/246B.png new file mode 100644 index 000000000..ff8239761 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/246B.png differ diff --git a/fonts/TewiFontOutlineAlt/246C.png b/fonts/TewiFontOutlineAlt/246C.png new file mode 100644 index 000000000..fc3f3ee84 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/246C.png differ diff --git a/fonts/TewiFontOutlineAlt/246D.png b/fonts/TewiFontOutlineAlt/246D.png new file mode 100644 index 000000000..cadc62268 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/246D.png differ diff --git a/fonts/TewiFontOutlineAlt/246E.png b/fonts/TewiFontOutlineAlt/246E.png new file mode 100644 index 000000000..cff98c4dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/246E.png differ diff --git a/fonts/TewiFontOutlineAlt/246F.png b/fonts/TewiFontOutlineAlt/246F.png new file mode 100644 index 000000000..88028422f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/246F.png differ diff --git a/fonts/TewiFontOutlineAlt/2470.png b/fonts/TewiFontOutlineAlt/2470.png new file mode 100644 index 000000000..2a8fce11d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2470.png differ diff --git a/fonts/TewiFontOutlineAlt/2471.png b/fonts/TewiFontOutlineAlt/2471.png new file mode 100644 index 000000000..6de7b9774 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2471.png differ diff --git a/fonts/TewiFontOutlineAlt/2472.png b/fonts/TewiFontOutlineAlt/2472.png new file mode 100644 index 000000000..7bc1ea4b6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2472.png differ diff --git a/fonts/TewiFontOutlineAlt/2473.png b/fonts/TewiFontOutlineAlt/2473.png new file mode 100644 index 000000000..effbf9985 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2473.png differ diff --git a/fonts/TewiFontOutlineAlt/2474.png b/fonts/TewiFontOutlineAlt/2474.png new file mode 100644 index 000000000..c9d177505 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2474.png differ diff --git a/fonts/TewiFontOutlineAlt/2475.png b/fonts/TewiFontOutlineAlt/2475.png new file mode 100644 index 000000000..bc27cae5b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2475.png differ diff --git a/fonts/TewiFontOutlineAlt/2476.png b/fonts/TewiFontOutlineAlt/2476.png new file mode 100644 index 000000000..7965a2c39 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2476.png differ diff --git a/fonts/TewiFontOutlineAlt/2477.png b/fonts/TewiFontOutlineAlt/2477.png new file mode 100644 index 000000000..5676badac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2477.png differ diff --git a/fonts/TewiFontOutlineAlt/2478.png b/fonts/TewiFontOutlineAlt/2478.png new file mode 100644 index 000000000..19c98172f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2478.png differ diff --git a/fonts/TewiFontOutlineAlt/2479.png b/fonts/TewiFontOutlineAlt/2479.png new file mode 100644 index 000000000..fb9889a1d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2479.png differ diff --git a/fonts/TewiFontOutlineAlt/247A.png b/fonts/TewiFontOutlineAlt/247A.png new file mode 100644 index 000000000..4464850ec Binary files /dev/null and b/fonts/TewiFontOutlineAlt/247A.png differ diff --git a/fonts/TewiFontOutlineAlt/247B.png b/fonts/TewiFontOutlineAlt/247B.png new file mode 100644 index 000000000..3c3c6c456 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/247B.png differ diff --git a/fonts/TewiFontOutlineAlt/247C.png b/fonts/TewiFontOutlineAlt/247C.png new file mode 100644 index 000000000..b07dd9ad2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/247C.png differ diff --git a/fonts/TewiFontOutlineAlt/247D.png b/fonts/TewiFontOutlineAlt/247D.png new file mode 100644 index 000000000..d23567570 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/247D.png differ diff --git a/fonts/TewiFontOutlineAlt/247E.png b/fonts/TewiFontOutlineAlt/247E.png new file mode 100644 index 000000000..1ea9e814a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/247E.png differ diff --git a/fonts/TewiFontOutlineAlt/247F.png b/fonts/TewiFontOutlineAlt/247F.png new file mode 100644 index 000000000..cc967cfe8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/247F.png differ diff --git a/fonts/TewiFontOutlineAlt/2480.png b/fonts/TewiFontOutlineAlt/2480.png new file mode 100644 index 000000000..0099ee318 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2480.png differ diff --git a/fonts/TewiFontOutlineAlt/2481.png b/fonts/TewiFontOutlineAlt/2481.png new file mode 100644 index 000000000..11879487a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2481.png differ diff --git a/fonts/TewiFontOutlineAlt/2482.png b/fonts/TewiFontOutlineAlt/2482.png new file mode 100644 index 000000000..9710d0fae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2482.png differ diff --git a/fonts/TewiFontOutlineAlt/2483.png b/fonts/TewiFontOutlineAlt/2483.png new file mode 100644 index 000000000..bbb87ef8d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2483.png differ diff --git a/fonts/TewiFontOutlineAlt/2484.png b/fonts/TewiFontOutlineAlt/2484.png new file mode 100644 index 000000000..445f3c7c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2484.png differ diff --git a/fonts/TewiFontOutlineAlt/2485.png b/fonts/TewiFontOutlineAlt/2485.png new file mode 100644 index 000000000..0617c78c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2485.png differ diff --git a/fonts/TewiFontOutlineAlt/2486.png b/fonts/TewiFontOutlineAlt/2486.png new file mode 100644 index 000000000..4822ab4bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2486.png differ diff --git a/fonts/TewiFontOutlineAlt/2487.png b/fonts/TewiFontOutlineAlt/2487.png new file mode 100644 index 000000000..896acc30a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2487.png differ diff --git a/fonts/TewiFontOutlineAlt/2488.png b/fonts/TewiFontOutlineAlt/2488.png new file mode 100644 index 000000000..f95b9dc23 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2488.png differ diff --git a/fonts/TewiFontOutlineAlt/2489.png b/fonts/TewiFontOutlineAlt/2489.png new file mode 100644 index 000000000..1891a7c5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2489.png differ diff --git a/fonts/TewiFontOutlineAlt/248A.png b/fonts/TewiFontOutlineAlt/248A.png new file mode 100644 index 000000000..926be62c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/248A.png differ diff --git a/fonts/TewiFontOutlineAlt/248B.png b/fonts/TewiFontOutlineAlt/248B.png new file mode 100644 index 000000000..08597cdf0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/248B.png differ diff --git a/fonts/TewiFontOutlineAlt/248C.png b/fonts/TewiFontOutlineAlt/248C.png new file mode 100644 index 000000000..db3c985cc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/248C.png differ diff --git a/fonts/TewiFontOutlineAlt/248D.png b/fonts/TewiFontOutlineAlt/248D.png new file mode 100644 index 000000000..049acccf9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/248D.png differ diff --git a/fonts/TewiFontOutlineAlt/248E.png b/fonts/TewiFontOutlineAlt/248E.png new file mode 100644 index 000000000..e9f76310a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/248E.png differ diff --git a/fonts/TewiFontOutlineAlt/248F.png b/fonts/TewiFontOutlineAlt/248F.png new file mode 100644 index 000000000..1b212741d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/248F.png differ diff --git a/fonts/TewiFontOutlineAlt/2490.png b/fonts/TewiFontOutlineAlt/2490.png new file mode 100644 index 000000000..7bab4722c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2490.png differ diff --git a/fonts/TewiFontOutlineAlt/2491.png b/fonts/TewiFontOutlineAlt/2491.png new file mode 100644 index 000000000..9be9e7e36 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2491.png differ diff --git a/fonts/TewiFontOutlineAlt/2492.png b/fonts/TewiFontOutlineAlt/2492.png new file mode 100644 index 000000000..ec83cfdef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2492.png differ diff --git a/fonts/TewiFontOutlineAlt/2493.png b/fonts/TewiFontOutlineAlt/2493.png new file mode 100644 index 000000000..52e64fc93 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2493.png differ diff --git a/fonts/TewiFontOutlineAlt/2494.png b/fonts/TewiFontOutlineAlt/2494.png new file mode 100644 index 000000000..5a257d472 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2494.png differ diff --git a/fonts/TewiFontOutlineAlt/2495.png b/fonts/TewiFontOutlineAlt/2495.png new file mode 100644 index 000000000..b4c035635 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2495.png differ diff --git a/fonts/TewiFontOutlineAlt/2496.png b/fonts/TewiFontOutlineAlt/2496.png new file mode 100644 index 000000000..58337ca28 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2496.png differ diff --git a/fonts/TewiFontOutlineAlt/2497.png b/fonts/TewiFontOutlineAlt/2497.png new file mode 100644 index 000000000..eedda67e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2497.png differ diff --git a/fonts/TewiFontOutlineAlt/2498.png b/fonts/TewiFontOutlineAlt/2498.png new file mode 100644 index 000000000..e7e2abb9f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2498.png differ diff --git a/fonts/TewiFontOutlineAlt/2499.png b/fonts/TewiFontOutlineAlt/2499.png new file mode 100644 index 000000000..24f96ed55 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2499.png differ diff --git a/fonts/TewiFontOutlineAlt/249A.png b/fonts/TewiFontOutlineAlt/249A.png new file mode 100644 index 000000000..4096fa4ea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/249A.png differ diff --git a/fonts/TewiFontOutlineAlt/249B.png b/fonts/TewiFontOutlineAlt/249B.png new file mode 100644 index 000000000..8fd22f919 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/249B.png differ diff --git a/fonts/TewiFontOutlineAlt/249C.png b/fonts/TewiFontOutlineAlt/249C.png new file mode 100644 index 000000000..7efdee9f6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/249C.png differ diff --git a/fonts/TewiFontOutlineAlt/249D.png b/fonts/TewiFontOutlineAlt/249D.png new file mode 100644 index 000000000..af2a391b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/249D.png differ diff --git a/fonts/TewiFontOutlineAlt/249E.png b/fonts/TewiFontOutlineAlt/249E.png new file mode 100644 index 000000000..75c652e42 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/249E.png differ diff --git a/fonts/TewiFontOutlineAlt/249F.png b/fonts/TewiFontOutlineAlt/249F.png new file mode 100644 index 000000000..fc3825179 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/249F.png differ diff --git a/fonts/TewiFontOutlineAlt/24A0.png b/fonts/TewiFontOutlineAlt/24A0.png new file mode 100644 index 000000000..53056f4dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A0.png differ diff --git a/fonts/TewiFontOutlineAlt/24A1.png b/fonts/TewiFontOutlineAlt/24A1.png new file mode 100644 index 000000000..0f0ad33d6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A1.png differ diff --git a/fonts/TewiFontOutlineAlt/24A2.png b/fonts/TewiFontOutlineAlt/24A2.png new file mode 100644 index 000000000..5769db23d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A2.png differ diff --git a/fonts/TewiFontOutlineAlt/24A3.png b/fonts/TewiFontOutlineAlt/24A3.png new file mode 100644 index 000000000..a5145c32a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A3.png differ diff --git a/fonts/TewiFontOutlineAlt/24A4.png b/fonts/TewiFontOutlineAlt/24A4.png new file mode 100644 index 000000000..4c4e03d89 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A4.png differ diff --git a/fonts/TewiFontOutlineAlt/24A5.png b/fonts/TewiFontOutlineAlt/24A5.png new file mode 100644 index 000000000..2fc548310 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A5.png differ diff --git a/fonts/TewiFontOutlineAlt/24A6.png b/fonts/TewiFontOutlineAlt/24A6.png new file mode 100644 index 000000000..b7554157b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A6.png differ diff --git a/fonts/TewiFontOutlineAlt/24A7.png b/fonts/TewiFontOutlineAlt/24A7.png new file mode 100644 index 000000000..aee1f4c1c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A7.png differ diff --git a/fonts/TewiFontOutlineAlt/24A8.png b/fonts/TewiFontOutlineAlt/24A8.png new file mode 100644 index 000000000..b04588e7e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A8.png differ diff --git a/fonts/TewiFontOutlineAlt/24A9.png b/fonts/TewiFontOutlineAlt/24A9.png new file mode 100644 index 000000000..8ae0fed73 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24A9.png differ diff --git a/fonts/TewiFontOutlineAlt/24AA.png b/fonts/TewiFontOutlineAlt/24AA.png new file mode 100644 index 000000000..d73de6c9b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24AA.png differ diff --git a/fonts/TewiFontOutlineAlt/24AB.png b/fonts/TewiFontOutlineAlt/24AB.png new file mode 100644 index 000000000..3d2ae5d15 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24AB.png differ diff --git a/fonts/TewiFontOutlineAlt/24AC.png b/fonts/TewiFontOutlineAlt/24AC.png new file mode 100644 index 000000000..e10002bc8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24AC.png differ diff --git a/fonts/TewiFontOutlineAlt/24AD.png b/fonts/TewiFontOutlineAlt/24AD.png new file mode 100644 index 000000000..aeb10a86d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24AD.png differ diff --git a/fonts/TewiFontOutlineAlt/24AE.png b/fonts/TewiFontOutlineAlt/24AE.png new file mode 100644 index 000000000..939f271a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24AE.png differ diff --git a/fonts/TewiFontOutlineAlt/24AF.png b/fonts/TewiFontOutlineAlt/24AF.png new file mode 100644 index 000000000..0ec6fa234 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24AF.png differ diff --git a/fonts/TewiFontOutlineAlt/24B0.png b/fonts/TewiFontOutlineAlt/24B0.png new file mode 100644 index 000000000..8fd6abd9e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24B0.png differ diff --git a/fonts/TewiFontOutlineAlt/24B1.png b/fonts/TewiFontOutlineAlt/24B1.png new file mode 100644 index 000000000..b5681eaa9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24B1.png differ diff --git a/fonts/TewiFontOutlineAlt/24B2.png b/fonts/TewiFontOutlineAlt/24B2.png new file mode 100644 index 000000000..4db8df224 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24B2.png differ diff --git a/fonts/TewiFontOutlineAlt/24B3.png b/fonts/TewiFontOutlineAlt/24B3.png new file mode 100644 index 000000000..d866b3029 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24B3.png differ diff --git a/fonts/TewiFontOutlineAlt/24B4.png b/fonts/TewiFontOutlineAlt/24B4.png new file mode 100644 index 000000000..42e5ae5c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24B4.png differ diff --git a/fonts/TewiFontOutlineAlt/24B5.png b/fonts/TewiFontOutlineAlt/24B5.png new file mode 100644 index 000000000..454d772b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/24B5.png differ diff --git a/fonts/TewiFontOutlineAlt/2500.png b/fonts/TewiFontOutlineAlt/2500.png new file mode 100644 index 000000000..75cd3dfca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2500.png differ diff --git a/fonts/TewiFontOutlineAlt/2501.png b/fonts/TewiFontOutlineAlt/2501.png new file mode 100644 index 000000000..f924627e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2501.png differ diff --git a/fonts/TewiFontOutlineAlt/2502.png b/fonts/TewiFontOutlineAlt/2502.png new file mode 100644 index 000000000..b7fad6c90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2502.png differ diff --git a/fonts/TewiFontOutlineAlt/2503.png b/fonts/TewiFontOutlineAlt/2503.png new file mode 100644 index 000000000..71ce4b482 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2503.png differ diff --git a/fonts/TewiFontOutlineAlt/2504.png b/fonts/TewiFontOutlineAlt/2504.png new file mode 100644 index 000000000..c18291e62 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2504.png differ diff --git a/fonts/TewiFontOutlineAlt/2505.png b/fonts/TewiFontOutlineAlt/2505.png new file mode 100644 index 000000000..d215adc7f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2505.png differ diff --git a/fonts/TewiFontOutlineAlt/2506.png b/fonts/TewiFontOutlineAlt/2506.png new file mode 100644 index 000000000..f4f20d851 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2506.png differ diff --git a/fonts/TewiFontOutlineAlt/2507.png b/fonts/TewiFontOutlineAlt/2507.png new file mode 100644 index 000000000..1e1f08667 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2507.png differ diff --git a/fonts/TewiFontOutlineAlt/2508.png b/fonts/TewiFontOutlineAlt/2508.png new file mode 100644 index 000000000..24e2f1a56 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2508.png differ diff --git a/fonts/TewiFontOutlineAlt/2509.png b/fonts/TewiFontOutlineAlt/2509.png new file mode 100644 index 000000000..4e416c357 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2509.png differ diff --git a/fonts/TewiFontOutlineAlt/250A.png b/fonts/TewiFontOutlineAlt/250A.png new file mode 100644 index 000000000..d5bac075d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/250A.png differ diff --git a/fonts/TewiFontOutlineAlt/250B.png b/fonts/TewiFontOutlineAlt/250B.png new file mode 100644 index 000000000..9f92f9469 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/250B.png differ diff --git a/fonts/TewiFontOutlineAlt/250C.png b/fonts/TewiFontOutlineAlt/250C.png new file mode 100644 index 000000000..41ad12ec2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/250C.png differ diff --git a/fonts/TewiFontOutlineAlt/250D.png b/fonts/TewiFontOutlineAlt/250D.png new file mode 100644 index 000000000..994034872 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/250D.png differ diff --git a/fonts/TewiFontOutlineAlt/250E.png b/fonts/TewiFontOutlineAlt/250E.png new file mode 100644 index 000000000..48251c42f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/250E.png differ diff --git a/fonts/TewiFontOutlineAlt/250F.png b/fonts/TewiFontOutlineAlt/250F.png new file mode 100644 index 000000000..8b204d71a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/250F.png differ diff --git a/fonts/TewiFontOutlineAlt/2510.png b/fonts/TewiFontOutlineAlt/2510.png new file mode 100644 index 000000000..78f62831f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2510.png differ diff --git a/fonts/TewiFontOutlineAlt/2511.png b/fonts/TewiFontOutlineAlt/2511.png new file mode 100644 index 000000000..03924a205 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2511.png differ diff --git a/fonts/TewiFontOutlineAlt/2512.png b/fonts/TewiFontOutlineAlt/2512.png new file mode 100644 index 000000000..364c8b8c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2512.png differ diff --git a/fonts/TewiFontOutlineAlt/2513.png b/fonts/TewiFontOutlineAlt/2513.png new file mode 100644 index 000000000..bf6b0cf50 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2513.png differ diff --git a/fonts/TewiFontOutlineAlt/2514.png b/fonts/TewiFontOutlineAlt/2514.png new file mode 100644 index 000000000..549ec847a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2514.png differ diff --git a/fonts/TewiFontOutlineAlt/2515.png b/fonts/TewiFontOutlineAlt/2515.png new file mode 100644 index 000000000..a62802dae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2515.png differ diff --git a/fonts/TewiFontOutlineAlt/2516.png b/fonts/TewiFontOutlineAlt/2516.png new file mode 100644 index 000000000..275f39435 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2516.png differ diff --git a/fonts/TewiFontOutlineAlt/2517.png b/fonts/TewiFontOutlineAlt/2517.png new file mode 100644 index 000000000..ae190ae5e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2517.png differ diff --git a/fonts/TewiFontOutlineAlt/2518.png b/fonts/TewiFontOutlineAlt/2518.png new file mode 100644 index 000000000..98175d134 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2518.png differ diff --git a/fonts/TewiFontOutlineAlt/2519.png b/fonts/TewiFontOutlineAlt/2519.png new file mode 100644 index 000000000..231d0ba6a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2519.png differ diff --git a/fonts/TewiFontOutlineAlt/251A.png b/fonts/TewiFontOutlineAlt/251A.png new file mode 100644 index 000000000..83f093b52 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/251A.png differ diff --git a/fonts/TewiFontOutlineAlt/251B.png b/fonts/TewiFontOutlineAlt/251B.png new file mode 100644 index 000000000..2714e7669 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/251B.png differ diff --git a/fonts/TewiFontOutlineAlt/251C.png b/fonts/TewiFontOutlineAlt/251C.png new file mode 100644 index 000000000..cc6ca0e71 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/251C.png differ diff --git a/fonts/TewiFontOutlineAlt/251D.png b/fonts/TewiFontOutlineAlt/251D.png new file mode 100644 index 000000000..f7667a670 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/251D.png differ diff --git a/fonts/TewiFontOutlineAlt/251E.png b/fonts/TewiFontOutlineAlt/251E.png new file mode 100644 index 000000000..b00a3c3dc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/251E.png differ diff --git a/fonts/TewiFontOutlineAlt/251F.png b/fonts/TewiFontOutlineAlt/251F.png new file mode 100644 index 000000000..050fb1e80 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/251F.png differ diff --git a/fonts/TewiFontOutlineAlt/2520.png b/fonts/TewiFontOutlineAlt/2520.png new file mode 100644 index 000000000..4d62516e5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2520.png differ diff --git a/fonts/TewiFontOutlineAlt/2521.png b/fonts/TewiFontOutlineAlt/2521.png new file mode 100644 index 000000000..a5b039c46 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2521.png differ diff --git a/fonts/TewiFontOutlineAlt/2522.png b/fonts/TewiFontOutlineAlt/2522.png new file mode 100644 index 000000000..f4d7d1d14 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2522.png differ diff --git a/fonts/TewiFontOutlineAlt/2523.png b/fonts/TewiFontOutlineAlt/2523.png new file mode 100644 index 000000000..95581eb0b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2523.png differ diff --git a/fonts/TewiFontOutlineAlt/2524.png b/fonts/TewiFontOutlineAlt/2524.png new file mode 100644 index 000000000..f7cec740f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2524.png differ diff --git a/fonts/TewiFontOutlineAlt/2525.png b/fonts/TewiFontOutlineAlt/2525.png new file mode 100644 index 000000000..1aa29e374 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2525.png differ diff --git a/fonts/TewiFontOutlineAlt/2526.png b/fonts/TewiFontOutlineAlt/2526.png new file mode 100644 index 000000000..111b122f4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2526.png differ diff --git a/fonts/TewiFontOutlineAlt/2527.png b/fonts/TewiFontOutlineAlt/2527.png new file mode 100644 index 000000000..c15c84280 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2527.png differ diff --git a/fonts/TewiFontOutlineAlt/2528.png b/fonts/TewiFontOutlineAlt/2528.png new file mode 100644 index 000000000..3c0f67075 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2528.png differ diff --git a/fonts/TewiFontOutlineAlt/2529.png b/fonts/TewiFontOutlineAlt/2529.png new file mode 100644 index 000000000..56eab396b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2529.png differ diff --git a/fonts/TewiFontOutlineAlt/252A.png b/fonts/TewiFontOutlineAlt/252A.png new file mode 100644 index 000000000..50454e04e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/252A.png differ diff --git a/fonts/TewiFontOutlineAlt/252B.png b/fonts/TewiFontOutlineAlt/252B.png new file mode 100644 index 000000000..030abf2f9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/252B.png differ diff --git a/fonts/TewiFontOutlineAlt/252C.png b/fonts/TewiFontOutlineAlt/252C.png new file mode 100644 index 000000000..f79482503 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/252C.png differ diff --git a/fonts/TewiFontOutlineAlt/252D.png b/fonts/TewiFontOutlineAlt/252D.png new file mode 100644 index 000000000..364527315 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/252D.png differ diff --git a/fonts/TewiFontOutlineAlt/252E.png b/fonts/TewiFontOutlineAlt/252E.png new file mode 100644 index 000000000..66e0a9912 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/252E.png differ diff --git a/fonts/TewiFontOutlineAlt/252F.png b/fonts/TewiFontOutlineAlt/252F.png new file mode 100644 index 000000000..673fc3760 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/252F.png differ diff --git a/fonts/TewiFontOutlineAlt/2530.png b/fonts/TewiFontOutlineAlt/2530.png new file mode 100644 index 000000000..e4274299e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2530.png differ diff --git a/fonts/TewiFontOutlineAlt/2531.png b/fonts/TewiFontOutlineAlt/2531.png new file mode 100644 index 000000000..1ea71ec61 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2531.png differ diff --git a/fonts/TewiFontOutlineAlt/2532.png b/fonts/TewiFontOutlineAlt/2532.png new file mode 100644 index 000000000..9db06b6e1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2532.png differ diff --git a/fonts/TewiFontOutlineAlt/2533.png b/fonts/TewiFontOutlineAlt/2533.png new file mode 100644 index 000000000..96637e7a1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2533.png differ diff --git a/fonts/TewiFontOutlineAlt/2534.png b/fonts/TewiFontOutlineAlt/2534.png new file mode 100644 index 000000000..09c9afbfe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2534.png differ diff --git a/fonts/TewiFontOutlineAlt/2535.png b/fonts/TewiFontOutlineAlt/2535.png new file mode 100644 index 000000000..574d1d500 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2535.png differ diff --git a/fonts/TewiFontOutlineAlt/2536.png b/fonts/TewiFontOutlineAlt/2536.png new file mode 100644 index 000000000..3b018bc9b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2536.png differ diff --git a/fonts/TewiFontOutlineAlt/2537.png b/fonts/TewiFontOutlineAlt/2537.png new file mode 100644 index 000000000..fd8fbb1c4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2537.png differ diff --git a/fonts/TewiFontOutlineAlt/2538.png b/fonts/TewiFontOutlineAlt/2538.png new file mode 100644 index 000000000..42fe7388e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2538.png differ diff --git a/fonts/TewiFontOutlineAlt/2539.png b/fonts/TewiFontOutlineAlt/2539.png new file mode 100644 index 000000000..e2f773e7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2539.png differ diff --git a/fonts/TewiFontOutlineAlt/253A.png b/fonts/TewiFontOutlineAlt/253A.png new file mode 100644 index 000000000..150016fcd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/253A.png differ diff --git a/fonts/TewiFontOutlineAlt/253B.png b/fonts/TewiFontOutlineAlt/253B.png new file mode 100644 index 000000000..9ec1d767a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/253B.png differ diff --git a/fonts/TewiFontOutlineAlt/253C.png b/fonts/TewiFontOutlineAlt/253C.png new file mode 100644 index 000000000..2c556631f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/253C.png differ diff --git a/fonts/TewiFontOutlineAlt/253D.png b/fonts/TewiFontOutlineAlt/253D.png new file mode 100644 index 000000000..9365b7963 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/253D.png differ diff --git a/fonts/TewiFontOutlineAlt/253E.png b/fonts/TewiFontOutlineAlt/253E.png new file mode 100644 index 000000000..a360e8b66 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/253E.png differ diff --git a/fonts/TewiFontOutlineAlt/253F.png b/fonts/TewiFontOutlineAlt/253F.png new file mode 100644 index 000000000..72c1dfc5c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/253F.png differ diff --git a/fonts/TewiFontOutlineAlt/2540.png b/fonts/TewiFontOutlineAlt/2540.png new file mode 100644 index 000000000..f66f8aca0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2540.png differ diff --git a/fonts/TewiFontOutlineAlt/2541.png b/fonts/TewiFontOutlineAlt/2541.png new file mode 100644 index 000000000..b1993eb7b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2541.png differ diff --git a/fonts/TewiFontOutlineAlt/2542.png b/fonts/TewiFontOutlineAlt/2542.png new file mode 100644 index 000000000..981a3c707 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2542.png differ diff --git a/fonts/TewiFontOutlineAlt/2543.png b/fonts/TewiFontOutlineAlt/2543.png new file mode 100644 index 000000000..1229e3bdf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2543.png differ diff --git a/fonts/TewiFontOutlineAlt/2544.png b/fonts/TewiFontOutlineAlt/2544.png new file mode 100644 index 000000000..0c7c5d576 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2544.png differ diff --git a/fonts/TewiFontOutlineAlt/2545.png b/fonts/TewiFontOutlineAlt/2545.png new file mode 100644 index 000000000..30518dc03 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2545.png differ diff --git a/fonts/TewiFontOutlineAlt/2546.png b/fonts/TewiFontOutlineAlt/2546.png new file mode 100644 index 000000000..299849a48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2546.png differ diff --git a/fonts/TewiFontOutlineAlt/2547.png b/fonts/TewiFontOutlineAlt/2547.png new file mode 100644 index 000000000..928cac2f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2547.png differ diff --git a/fonts/TewiFontOutlineAlt/2548.png b/fonts/TewiFontOutlineAlt/2548.png new file mode 100644 index 000000000..5903a0dfb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2548.png differ diff --git a/fonts/TewiFontOutlineAlt/2549.png b/fonts/TewiFontOutlineAlt/2549.png new file mode 100644 index 000000000..f8337d44a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2549.png differ diff --git a/fonts/TewiFontOutlineAlt/254A.png b/fonts/TewiFontOutlineAlt/254A.png new file mode 100644 index 000000000..25c6b31ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/254A.png differ diff --git a/fonts/TewiFontOutlineAlt/254B.png b/fonts/TewiFontOutlineAlt/254B.png new file mode 100644 index 000000000..0f405ba7b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/254B.png differ diff --git a/fonts/TewiFontOutlineAlt/254C.png b/fonts/TewiFontOutlineAlt/254C.png new file mode 100644 index 000000000..374896a38 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/254C.png differ diff --git a/fonts/TewiFontOutlineAlt/254D.png b/fonts/TewiFontOutlineAlt/254D.png new file mode 100644 index 000000000..4fa63b8d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/254D.png differ diff --git a/fonts/TewiFontOutlineAlt/254E.png b/fonts/TewiFontOutlineAlt/254E.png new file mode 100644 index 000000000..d64adb7f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/254E.png differ diff --git a/fonts/TewiFontOutlineAlt/254F.png b/fonts/TewiFontOutlineAlt/254F.png new file mode 100644 index 000000000..7a0e4e76c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/254F.png differ diff --git a/fonts/TewiFontOutlineAlt/2550.png b/fonts/TewiFontOutlineAlt/2550.png new file mode 100644 index 000000000..3d9ef40ea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2550.png differ diff --git a/fonts/TewiFontOutlineAlt/2551.png b/fonts/TewiFontOutlineAlt/2551.png new file mode 100644 index 000000000..f7bccc460 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2551.png differ diff --git a/fonts/TewiFontOutlineAlt/2552.png b/fonts/TewiFontOutlineAlt/2552.png new file mode 100644 index 000000000..c0250011c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2552.png differ diff --git a/fonts/TewiFontOutlineAlt/2553.png b/fonts/TewiFontOutlineAlt/2553.png new file mode 100644 index 000000000..fafde57ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2553.png differ diff --git a/fonts/TewiFontOutlineAlt/2554.png b/fonts/TewiFontOutlineAlt/2554.png new file mode 100644 index 000000000..689ef7467 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2554.png differ diff --git a/fonts/TewiFontOutlineAlt/2555.png b/fonts/TewiFontOutlineAlt/2555.png new file mode 100644 index 000000000..80a23d136 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2555.png differ diff --git a/fonts/TewiFontOutlineAlt/2556.png b/fonts/TewiFontOutlineAlt/2556.png new file mode 100644 index 000000000..33f5ae3d7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2556.png differ diff --git a/fonts/TewiFontOutlineAlt/2557.png b/fonts/TewiFontOutlineAlt/2557.png new file mode 100644 index 000000000..8b2d2e4e1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2557.png differ diff --git a/fonts/TewiFontOutlineAlt/2558.png b/fonts/TewiFontOutlineAlt/2558.png new file mode 100644 index 000000000..76b0d3f8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2558.png differ diff --git a/fonts/TewiFontOutlineAlt/2559.png b/fonts/TewiFontOutlineAlt/2559.png new file mode 100644 index 000000000..a5320a2c3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2559.png differ diff --git a/fonts/TewiFontOutlineAlt/255A.png b/fonts/TewiFontOutlineAlt/255A.png new file mode 100644 index 000000000..bc4140d35 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/255A.png differ diff --git a/fonts/TewiFontOutlineAlt/255B.png b/fonts/TewiFontOutlineAlt/255B.png new file mode 100644 index 000000000..fe9ca9fed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/255B.png differ diff --git a/fonts/TewiFontOutlineAlt/255C.png b/fonts/TewiFontOutlineAlt/255C.png new file mode 100644 index 000000000..f43cfbe68 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/255C.png differ diff --git a/fonts/TewiFontOutlineAlt/255D.png b/fonts/TewiFontOutlineAlt/255D.png new file mode 100644 index 000000000..5c48c24ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/255D.png differ diff --git a/fonts/TewiFontOutlineAlt/255E.png b/fonts/TewiFontOutlineAlt/255E.png new file mode 100644 index 000000000..b7bfd2804 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/255E.png differ diff --git a/fonts/TewiFontOutlineAlt/255F.png b/fonts/TewiFontOutlineAlt/255F.png new file mode 100644 index 000000000..9578e1a9d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/255F.png differ diff --git a/fonts/TewiFontOutlineAlt/2560.png b/fonts/TewiFontOutlineAlt/2560.png new file mode 100644 index 000000000..bbefc8d1f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2560.png differ diff --git a/fonts/TewiFontOutlineAlt/2561.png b/fonts/TewiFontOutlineAlt/2561.png new file mode 100644 index 000000000..2a74aec53 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2561.png differ diff --git a/fonts/TewiFontOutlineAlt/2562.png b/fonts/TewiFontOutlineAlt/2562.png new file mode 100644 index 000000000..3c8a0ff48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2562.png differ diff --git a/fonts/TewiFontOutlineAlt/2563.png b/fonts/TewiFontOutlineAlt/2563.png new file mode 100644 index 000000000..e35dbdb3f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2563.png differ diff --git a/fonts/TewiFontOutlineAlt/2564.png b/fonts/TewiFontOutlineAlt/2564.png new file mode 100644 index 000000000..c1e3b679b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2564.png differ diff --git a/fonts/TewiFontOutlineAlt/2565.png b/fonts/TewiFontOutlineAlt/2565.png new file mode 100644 index 000000000..ad1769d88 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2565.png differ diff --git a/fonts/TewiFontOutlineAlt/2566.png b/fonts/TewiFontOutlineAlt/2566.png new file mode 100644 index 000000000..c206eeae5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2566.png differ diff --git a/fonts/TewiFontOutlineAlt/2567.png b/fonts/TewiFontOutlineAlt/2567.png new file mode 100644 index 000000000..695ffa723 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2567.png differ diff --git a/fonts/TewiFontOutlineAlt/2568.png b/fonts/TewiFontOutlineAlt/2568.png new file mode 100644 index 000000000..54a4d15bc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2568.png differ diff --git a/fonts/TewiFontOutlineAlt/2569.png b/fonts/TewiFontOutlineAlt/2569.png new file mode 100644 index 000000000..00eab8e74 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2569.png differ diff --git a/fonts/TewiFontOutlineAlt/256A.png b/fonts/TewiFontOutlineAlt/256A.png new file mode 100644 index 000000000..6242b5a6d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/256A.png differ diff --git a/fonts/TewiFontOutlineAlt/256B.png b/fonts/TewiFontOutlineAlt/256B.png new file mode 100644 index 000000000..d9eb63a2d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/256B.png differ diff --git a/fonts/TewiFontOutlineAlt/256C.png b/fonts/TewiFontOutlineAlt/256C.png new file mode 100644 index 000000000..0f8f8cb92 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/256C.png differ diff --git a/fonts/TewiFontOutlineAlt/256D.png b/fonts/TewiFontOutlineAlt/256D.png new file mode 100644 index 000000000..f9b8a09b6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/256D.png differ diff --git a/fonts/TewiFontOutlineAlt/256E.png b/fonts/TewiFontOutlineAlt/256E.png new file mode 100644 index 000000000..98ce8549f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/256E.png differ diff --git a/fonts/TewiFontOutlineAlt/256F.png b/fonts/TewiFontOutlineAlt/256F.png new file mode 100644 index 000000000..9bd35b30d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/256F.png differ diff --git a/fonts/TewiFontOutlineAlt/2570.png b/fonts/TewiFontOutlineAlt/2570.png new file mode 100644 index 000000000..dab1a244a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2570.png differ diff --git a/fonts/TewiFontOutlineAlt/2571.png b/fonts/TewiFontOutlineAlt/2571.png new file mode 100644 index 000000000..6ebb91901 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2571.png differ diff --git a/fonts/TewiFontOutlineAlt/2572.png b/fonts/TewiFontOutlineAlt/2572.png new file mode 100644 index 000000000..dbe7fa462 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2572.png differ diff --git a/fonts/TewiFontOutlineAlt/2573.png b/fonts/TewiFontOutlineAlt/2573.png new file mode 100644 index 000000000..844dc5710 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2573.png differ diff --git a/fonts/TewiFontOutlineAlt/2574.png b/fonts/TewiFontOutlineAlt/2574.png new file mode 100644 index 000000000..d83660220 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2574.png differ diff --git a/fonts/TewiFontOutlineAlt/2575.png b/fonts/TewiFontOutlineAlt/2575.png new file mode 100644 index 000000000..ec9db3758 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2575.png differ diff --git a/fonts/TewiFontOutlineAlt/2576.png b/fonts/TewiFontOutlineAlt/2576.png new file mode 100644 index 000000000..7b0d887d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2576.png differ diff --git a/fonts/TewiFontOutlineAlt/2577.png b/fonts/TewiFontOutlineAlt/2577.png new file mode 100644 index 000000000..2f34e8735 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2577.png differ diff --git a/fonts/TewiFontOutlineAlt/2578.png b/fonts/TewiFontOutlineAlt/2578.png new file mode 100644 index 000000000..5241f9710 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2578.png differ diff --git a/fonts/TewiFontOutlineAlt/2579.png b/fonts/TewiFontOutlineAlt/2579.png new file mode 100644 index 000000000..622d447ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2579.png differ diff --git a/fonts/TewiFontOutlineAlt/257A.png b/fonts/TewiFontOutlineAlt/257A.png new file mode 100644 index 000000000..137417228 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/257A.png differ diff --git a/fonts/TewiFontOutlineAlt/257B.png b/fonts/TewiFontOutlineAlt/257B.png new file mode 100644 index 000000000..71b7959f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/257B.png differ diff --git a/fonts/TewiFontOutlineAlt/257C.png b/fonts/TewiFontOutlineAlt/257C.png new file mode 100644 index 000000000..1732e4583 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/257C.png differ diff --git a/fonts/TewiFontOutlineAlt/257D.png b/fonts/TewiFontOutlineAlt/257D.png new file mode 100644 index 000000000..a422c807a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/257D.png differ diff --git a/fonts/TewiFontOutlineAlt/257E.png b/fonts/TewiFontOutlineAlt/257E.png new file mode 100644 index 000000000..0d9b6ddf0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/257E.png differ diff --git a/fonts/TewiFontOutlineAlt/257F.png b/fonts/TewiFontOutlineAlt/257F.png new file mode 100644 index 000000000..6dee2c86c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/257F.png differ diff --git a/fonts/TewiFontOutlineAlt/2580.png b/fonts/TewiFontOutlineAlt/2580.png new file mode 100644 index 000000000..e12907e75 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2580.png differ diff --git a/fonts/TewiFontOutlineAlt/2581.png b/fonts/TewiFontOutlineAlt/2581.png new file mode 100644 index 000000000..2eda58668 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2581.png differ diff --git a/fonts/TewiFontOutlineAlt/2582.png b/fonts/TewiFontOutlineAlt/2582.png new file mode 100644 index 000000000..73a0aef5b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2582.png differ diff --git a/fonts/TewiFontOutlineAlt/2583.png b/fonts/TewiFontOutlineAlt/2583.png new file mode 100644 index 000000000..663d71851 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2583.png differ diff --git a/fonts/TewiFontOutlineAlt/2584.png b/fonts/TewiFontOutlineAlt/2584.png new file mode 100644 index 000000000..4c2bf33f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2584.png differ diff --git a/fonts/TewiFontOutlineAlt/2585.png b/fonts/TewiFontOutlineAlt/2585.png new file mode 100644 index 000000000..bc4d6da01 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2585.png differ diff --git a/fonts/TewiFontOutlineAlt/2586.png b/fonts/TewiFontOutlineAlt/2586.png new file mode 100644 index 000000000..2b1bdf30d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2586.png differ diff --git a/fonts/TewiFontOutlineAlt/2587.png b/fonts/TewiFontOutlineAlt/2587.png new file mode 100644 index 000000000..76a8cb7ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2587.png differ diff --git a/fonts/TewiFontOutlineAlt/2588.png b/fonts/TewiFontOutlineAlt/2588.png new file mode 100644 index 000000000..dabbc97f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2588.png differ diff --git a/fonts/TewiFontOutlineAlt/2589.png b/fonts/TewiFontOutlineAlt/2589.png new file mode 100644 index 000000000..dabbc97f7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2589.png differ diff --git a/fonts/TewiFontOutlineAlt/258A.png b/fonts/TewiFontOutlineAlt/258A.png new file mode 100644 index 000000000..1ddca73cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/258A.png differ diff --git a/fonts/TewiFontOutlineAlt/258B.png b/fonts/TewiFontOutlineAlt/258B.png new file mode 100644 index 000000000..44e296ba9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/258B.png differ diff --git a/fonts/TewiFontOutlineAlt/258C.png b/fonts/TewiFontOutlineAlt/258C.png new file mode 100644 index 000000000..1ec41412c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/258C.png differ diff --git a/fonts/TewiFontOutlineAlt/258D.png b/fonts/TewiFontOutlineAlt/258D.png new file mode 100644 index 000000000..1ec41412c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/258D.png differ diff --git a/fonts/TewiFontOutlineAlt/258E.png b/fonts/TewiFontOutlineAlt/258E.png new file mode 100644 index 000000000..42e8166f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/258E.png differ diff --git a/fonts/TewiFontOutlineAlt/258F.png b/fonts/TewiFontOutlineAlt/258F.png new file mode 100644 index 000000000..bbdfa5415 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/258F.png differ diff --git a/fonts/TewiFontOutlineAlt/2590.png b/fonts/TewiFontOutlineAlt/2590.png new file mode 100644 index 000000000..f3256d49b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2590.png differ diff --git a/fonts/TewiFontOutlineAlt/2591.png b/fonts/TewiFontOutlineAlt/2591.png new file mode 100644 index 000000000..7736fb926 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2591.png differ diff --git a/fonts/TewiFontOutlineAlt/2592.png b/fonts/TewiFontOutlineAlt/2592.png new file mode 100644 index 000000000..41ee925b3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2592.png differ diff --git a/fonts/TewiFontOutlineAlt/2593.png b/fonts/TewiFontOutlineAlt/2593.png new file mode 100644 index 000000000..1aafafe88 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2593.png differ diff --git a/fonts/TewiFontOutlineAlt/2594.png b/fonts/TewiFontOutlineAlt/2594.png new file mode 100644 index 000000000..b92910d53 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2594.png differ diff --git a/fonts/TewiFontOutlineAlt/2595.png b/fonts/TewiFontOutlineAlt/2595.png new file mode 100644 index 000000000..c9636d726 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2595.png differ diff --git a/fonts/TewiFontOutlineAlt/2596.png b/fonts/TewiFontOutlineAlt/2596.png new file mode 100644 index 000000000..d401eb205 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2596.png differ diff --git a/fonts/TewiFontOutlineAlt/2597.png b/fonts/TewiFontOutlineAlt/2597.png new file mode 100644 index 000000000..376c0c834 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2597.png differ diff --git a/fonts/TewiFontOutlineAlt/2598.png b/fonts/TewiFontOutlineAlt/2598.png new file mode 100644 index 000000000..d1b597111 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2598.png differ diff --git a/fonts/TewiFontOutlineAlt/2599.png b/fonts/TewiFontOutlineAlt/2599.png new file mode 100644 index 000000000..5ef91ab4f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2599.png differ diff --git a/fonts/TewiFontOutlineAlt/259A.png b/fonts/TewiFontOutlineAlt/259A.png new file mode 100644 index 000000000..747259b32 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/259A.png differ diff --git a/fonts/TewiFontOutlineAlt/259B.png b/fonts/TewiFontOutlineAlt/259B.png new file mode 100644 index 000000000..09cef1976 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/259B.png differ diff --git a/fonts/TewiFontOutlineAlt/259C.png b/fonts/TewiFontOutlineAlt/259C.png new file mode 100644 index 000000000..8c1288907 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/259C.png differ diff --git a/fonts/TewiFontOutlineAlt/259D.png b/fonts/TewiFontOutlineAlt/259D.png new file mode 100644 index 000000000..f9a128554 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/259D.png differ diff --git a/fonts/TewiFontOutlineAlt/259E.png b/fonts/TewiFontOutlineAlt/259E.png new file mode 100644 index 000000000..340e84c6c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/259E.png differ diff --git a/fonts/TewiFontOutlineAlt/259F.png b/fonts/TewiFontOutlineAlt/259F.png new file mode 100644 index 000000000..f9ebfcc60 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/259F.png differ diff --git a/fonts/TewiFontOutlineAlt/25A0.png b/fonts/TewiFontOutlineAlt/25A0.png new file mode 100644 index 000000000..c90056545 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A0.png differ diff --git a/fonts/TewiFontOutlineAlt/25A1.png b/fonts/TewiFontOutlineAlt/25A1.png new file mode 100644 index 000000000..24704229c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A1.png differ diff --git a/fonts/TewiFontOutlineAlt/25A2.png b/fonts/TewiFontOutlineAlt/25A2.png new file mode 100644 index 000000000..fe522bb20 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A2.png differ diff --git a/fonts/TewiFontOutlineAlt/25A3.png b/fonts/TewiFontOutlineAlt/25A3.png new file mode 100644 index 000000000..f08663621 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A3.png differ diff --git a/fonts/TewiFontOutlineAlt/25A4.png b/fonts/TewiFontOutlineAlt/25A4.png new file mode 100644 index 000000000..3c4df1ce8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A4.png differ diff --git a/fonts/TewiFontOutlineAlt/25A5.png b/fonts/TewiFontOutlineAlt/25A5.png new file mode 100644 index 000000000..358b6716e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A5.png differ diff --git a/fonts/TewiFontOutlineAlt/25A6.png b/fonts/TewiFontOutlineAlt/25A6.png new file mode 100644 index 000000000..ecc1b2864 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A6.png differ diff --git a/fonts/TewiFontOutlineAlt/25A7.png b/fonts/TewiFontOutlineAlt/25A7.png new file mode 100644 index 000000000..48288d612 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A7.png differ diff --git a/fonts/TewiFontOutlineAlt/25A8.png b/fonts/TewiFontOutlineAlt/25A8.png new file mode 100644 index 000000000..a97a3dae3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A8.png differ diff --git a/fonts/TewiFontOutlineAlt/25A9.png b/fonts/TewiFontOutlineAlt/25A9.png new file mode 100644 index 000000000..04dbc6321 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25A9.png differ diff --git a/fonts/TewiFontOutlineAlt/25AA.png b/fonts/TewiFontOutlineAlt/25AA.png new file mode 100644 index 000000000..c0dd355ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25AA.png differ diff --git a/fonts/TewiFontOutlineAlt/25AB.png b/fonts/TewiFontOutlineAlt/25AB.png new file mode 100644 index 000000000..8e933d561 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25AB.png differ diff --git a/fonts/TewiFontOutlineAlt/25AC.png b/fonts/TewiFontOutlineAlt/25AC.png new file mode 100644 index 000000000..cd5561c2d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25AC.png differ diff --git a/fonts/TewiFontOutlineAlt/25AD.png b/fonts/TewiFontOutlineAlt/25AD.png new file mode 100644 index 000000000..6a291068f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25AD.png differ diff --git a/fonts/TewiFontOutlineAlt/25AE.png b/fonts/TewiFontOutlineAlt/25AE.png new file mode 100644 index 000000000..43c58c10c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25AE.png differ diff --git a/fonts/TewiFontOutlineAlt/25AF.png b/fonts/TewiFontOutlineAlt/25AF.png new file mode 100644 index 000000000..ad330b428 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25AF.png differ diff --git a/fonts/TewiFontOutlineAlt/25B0.png b/fonts/TewiFontOutlineAlt/25B0.png new file mode 100644 index 000000000..4413a6661 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B0.png differ diff --git a/fonts/TewiFontOutlineAlt/25B1.png b/fonts/TewiFontOutlineAlt/25B1.png new file mode 100644 index 000000000..a4b9c7236 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B1.png differ diff --git a/fonts/TewiFontOutlineAlt/25B2.png b/fonts/TewiFontOutlineAlt/25B2.png new file mode 100644 index 000000000..48dda828a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B2.png differ diff --git a/fonts/TewiFontOutlineAlt/25B3.png b/fonts/TewiFontOutlineAlt/25B3.png new file mode 100644 index 000000000..4056bfc9d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B3.png differ diff --git a/fonts/TewiFontOutlineAlt/25B4.png b/fonts/TewiFontOutlineAlt/25B4.png new file mode 100644 index 000000000..ab7f5fe34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B4.png differ diff --git a/fonts/TewiFontOutlineAlt/25B5.png b/fonts/TewiFontOutlineAlt/25B5.png new file mode 100644 index 000000000..47a20c034 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B5.png differ diff --git a/fonts/TewiFontOutlineAlt/25B6.png b/fonts/TewiFontOutlineAlt/25B6.png new file mode 100644 index 000000000..31a348899 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B6.png differ diff --git a/fonts/TewiFontOutlineAlt/25B7.png b/fonts/TewiFontOutlineAlt/25B7.png new file mode 100644 index 000000000..c8f8751b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B7.png differ diff --git a/fonts/TewiFontOutlineAlt/25B8.png b/fonts/TewiFontOutlineAlt/25B8.png new file mode 100644 index 000000000..1ba06a1d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B8.png differ diff --git a/fonts/TewiFontOutlineAlt/25B9.png b/fonts/TewiFontOutlineAlt/25B9.png new file mode 100644 index 000000000..eca7b708f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25B9.png differ diff --git a/fonts/TewiFontOutlineAlt/25BA.png b/fonts/TewiFontOutlineAlt/25BA.png new file mode 100644 index 000000000..31a348899 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25BA.png differ diff --git a/fonts/TewiFontOutlineAlt/25BB.png b/fonts/TewiFontOutlineAlt/25BB.png new file mode 100644 index 000000000..c8f8751b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25BB.png differ diff --git a/fonts/TewiFontOutlineAlt/25BC.png b/fonts/TewiFontOutlineAlt/25BC.png new file mode 100644 index 000000000..d00493ea1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25BC.png differ diff --git a/fonts/TewiFontOutlineAlt/25BD.png b/fonts/TewiFontOutlineAlt/25BD.png new file mode 100644 index 000000000..a9cc55900 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25BD.png differ diff --git a/fonts/TewiFontOutlineAlt/25BE.png b/fonts/TewiFontOutlineAlt/25BE.png new file mode 100644 index 000000000..9084b2797 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25BE.png differ diff --git a/fonts/TewiFontOutlineAlt/25BF.png b/fonts/TewiFontOutlineAlt/25BF.png new file mode 100644 index 000000000..8243d9e6e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25BF.png differ diff --git a/fonts/TewiFontOutlineAlt/25C0.png b/fonts/TewiFontOutlineAlt/25C0.png new file mode 100644 index 000000000..4a9fc85e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C0.png differ diff --git a/fonts/TewiFontOutlineAlt/25C1.png b/fonts/TewiFontOutlineAlt/25C1.png new file mode 100644 index 000000000..5aa8f9b5a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C1.png differ diff --git a/fonts/TewiFontOutlineAlt/25C2.png b/fonts/TewiFontOutlineAlt/25C2.png new file mode 100644 index 000000000..148b85ce3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C2.png differ diff --git a/fonts/TewiFontOutlineAlt/25C3.png b/fonts/TewiFontOutlineAlt/25C3.png new file mode 100644 index 000000000..658c3c891 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C3.png differ diff --git a/fonts/TewiFontOutlineAlt/25C4.png b/fonts/TewiFontOutlineAlt/25C4.png new file mode 100644 index 000000000..4a9fc85e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C4.png differ diff --git a/fonts/TewiFontOutlineAlt/25C5.png b/fonts/TewiFontOutlineAlt/25C5.png new file mode 100644 index 000000000..5aa8f9b5a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C5.png differ diff --git a/fonts/TewiFontOutlineAlt/25C6.png b/fonts/TewiFontOutlineAlt/25C6.png new file mode 100644 index 000000000..ffd5c90d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C6.png differ diff --git a/fonts/TewiFontOutlineAlt/25C7.png b/fonts/TewiFontOutlineAlt/25C7.png new file mode 100644 index 000000000..c92152c90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C7.png differ diff --git a/fonts/TewiFontOutlineAlt/25C8.png b/fonts/TewiFontOutlineAlt/25C8.png new file mode 100644 index 000000000..b3c344687 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C8.png differ diff --git a/fonts/TewiFontOutlineAlt/25C9.png b/fonts/TewiFontOutlineAlt/25C9.png new file mode 100644 index 000000000..476ebb55a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25C9.png differ diff --git a/fonts/TewiFontOutlineAlt/25CA.png b/fonts/TewiFontOutlineAlt/25CA.png new file mode 100644 index 000000000..a4ad4749b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25CA.png differ diff --git a/fonts/TewiFontOutlineAlt/25CB.png b/fonts/TewiFontOutlineAlt/25CB.png new file mode 100644 index 000000000..60f385a41 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25CB.png differ diff --git a/fonts/TewiFontOutlineAlt/25CC.png b/fonts/TewiFontOutlineAlt/25CC.png new file mode 100644 index 000000000..ef9143c93 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25CC.png differ diff --git a/fonts/TewiFontOutlineAlt/25CD.png b/fonts/TewiFontOutlineAlt/25CD.png new file mode 100644 index 000000000..ad79129d1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25CD.png differ diff --git a/fonts/TewiFontOutlineAlt/25CE.png b/fonts/TewiFontOutlineAlt/25CE.png new file mode 100644 index 000000000..476ebb55a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25CE.png differ diff --git a/fonts/TewiFontOutlineAlt/25CF.png b/fonts/TewiFontOutlineAlt/25CF.png new file mode 100644 index 000000000..4e1316e52 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25CF.png differ diff --git a/fonts/TewiFontOutlineAlt/25D0.png b/fonts/TewiFontOutlineAlt/25D0.png new file mode 100644 index 000000000..f8f258b9b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D0.png differ diff --git a/fonts/TewiFontOutlineAlt/25D1.png b/fonts/TewiFontOutlineAlt/25D1.png new file mode 100644 index 000000000..412f7f55c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D1.png differ diff --git a/fonts/TewiFontOutlineAlt/25D2.png b/fonts/TewiFontOutlineAlt/25D2.png new file mode 100644 index 000000000..40c076c9d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D2.png differ diff --git a/fonts/TewiFontOutlineAlt/25D3.png b/fonts/TewiFontOutlineAlt/25D3.png new file mode 100644 index 000000000..1b4fd1f9b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D3.png differ diff --git a/fonts/TewiFontOutlineAlt/25D4.png b/fonts/TewiFontOutlineAlt/25D4.png new file mode 100644 index 000000000..25788e873 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D4.png differ diff --git a/fonts/TewiFontOutlineAlt/25D5.png b/fonts/TewiFontOutlineAlt/25D5.png new file mode 100644 index 000000000..dfab84b59 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D5.png differ diff --git a/fonts/TewiFontOutlineAlt/25D6.png b/fonts/TewiFontOutlineAlt/25D6.png new file mode 100644 index 000000000..5c5c2beef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D6.png differ diff --git a/fonts/TewiFontOutlineAlt/25D7.png b/fonts/TewiFontOutlineAlt/25D7.png new file mode 100644 index 000000000..6dfbefde8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D7.png differ diff --git a/fonts/TewiFontOutlineAlt/25D8.png b/fonts/TewiFontOutlineAlt/25D8.png new file mode 100644 index 000000000..c6f2ed0ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D8.png differ diff --git a/fonts/TewiFontOutlineAlt/25D9.png b/fonts/TewiFontOutlineAlt/25D9.png new file mode 100644 index 000000000..ef642a665 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25D9.png differ diff --git a/fonts/TewiFontOutlineAlt/25DA.png b/fonts/TewiFontOutlineAlt/25DA.png new file mode 100644 index 000000000..bd7ee8c56 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25DA.png differ diff --git a/fonts/TewiFontOutlineAlt/25DB.png b/fonts/TewiFontOutlineAlt/25DB.png new file mode 100644 index 000000000..210e59be2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25DB.png differ diff --git a/fonts/TewiFontOutlineAlt/25DC.png b/fonts/TewiFontOutlineAlt/25DC.png new file mode 100644 index 000000000..33d732563 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25DC.png differ diff --git a/fonts/TewiFontOutlineAlt/25DD.png b/fonts/TewiFontOutlineAlt/25DD.png new file mode 100644 index 000000000..e2059c72a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25DD.png differ diff --git a/fonts/TewiFontOutlineAlt/25DE.png b/fonts/TewiFontOutlineAlt/25DE.png new file mode 100644 index 000000000..a811b6bb8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25DE.png differ diff --git a/fonts/TewiFontOutlineAlt/25DF.png b/fonts/TewiFontOutlineAlt/25DF.png new file mode 100644 index 000000000..bf4a8e2d5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25DF.png differ diff --git a/fonts/TewiFontOutlineAlt/25E0.png b/fonts/TewiFontOutlineAlt/25E0.png new file mode 100644 index 000000000..b7296f61b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E0.png differ diff --git a/fonts/TewiFontOutlineAlt/25E1.png b/fonts/TewiFontOutlineAlt/25E1.png new file mode 100644 index 000000000..6cc338a14 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E1.png differ diff --git a/fonts/TewiFontOutlineAlt/25E2.png b/fonts/TewiFontOutlineAlt/25E2.png new file mode 100644 index 000000000..4791cc207 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E2.png differ diff --git a/fonts/TewiFontOutlineAlt/25E3.png b/fonts/TewiFontOutlineAlt/25E3.png new file mode 100644 index 000000000..32c8b3b72 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E3.png differ diff --git a/fonts/TewiFontOutlineAlt/25E4.png b/fonts/TewiFontOutlineAlt/25E4.png new file mode 100644 index 000000000..efb7c6d6f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E4.png differ diff --git a/fonts/TewiFontOutlineAlt/25E5.png b/fonts/TewiFontOutlineAlt/25E5.png new file mode 100644 index 000000000..cf2a96382 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E5.png differ diff --git a/fonts/TewiFontOutlineAlt/25E6.png b/fonts/TewiFontOutlineAlt/25E6.png new file mode 100644 index 000000000..60f385a41 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E6.png differ diff --git a/fonts/TewiFontOutlineAlt/25E7.png b/fonts/TewiFontOutlineAlt/25E7.png new file mode 100644 index 000000000..776cb6e8d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E7.png differ diff --git a/fonts/TewiFontOutlineAlt/25E8.png b/fonts/TewiFontOutlineAlt/25E8.png new file mode 100644 index 000000000..26d22e4a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E8.png differ diff --git a/fonts/TewiFontOutlineAlt/25E9.png b/fonts/TewiFontOutlineAlt/25E9.png new file mode 100644 index 000000000..ceb53be34 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25E9.png differ diff --git a/fonts/TewiFontOutlineAlt/25EA.png b/fonts/TewiFontOutlineAlt/25EA.png new file mode 100644 index 000000000..2917027f9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25EA.png differ diff --git a/fonts/TewiFontOutlineAlt/25EB.png b/fonts/TewiFontOutlineAlt/25EB.png new file mode 100644 index 000000000..358b6716e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25EB.png differ diff --git a/fonts/TewiFontOutlineAlt/25EC.png b/fonts/TewiFontOutlineAlt/25EC.png new file mode 100644 index 000000000..912429b59 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25EC.png differ diff --git a/fonts/TewiFontOutlineAlt/25ED.png b/fonts/TewiFontOutlineAlt/25ED.png new file mode 100644 index 000000000..529b8ec25 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25ED.png differ diff --git a/fonts/TewiFontOutlineAlt/25EE.png b/fonts/TewiFontOutlineAlt/25EE.png new file mode 100644 index 000000000..50d874d16 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25EE.png differ diff --git a/fonts/TewiFontOutlineAlt/25EF.png b/fonts/TewiFontOutlineAlt/25EF.png new file mode 100644 index 000000000..fe522bb20 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25EF.png differ diff --git a/fonts/TewiFontOutlineAlt/25F0.png b/fonts/TewiFontOutlineAlt/25F0.png new file mode 100644 index 000000000..a4ea37ff9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F0.png differ diff --git a/fonts/TewiFontOutlineAlt/25F1.png b/fonts/TewiFontOutlineAlt/25F1.png new file mode 100644 index 000000000..0ff5433e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F1.png differ diff --git a/fonts/TewiFontOutlineAlt/25F2.png b/fonts/TewiFontOutlineAlt/25F2.png new file mode 100644 index 000000000..c1727a2c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F2.png differ diff --git a/fonts/TewiFontOutlineAlt/25F3.png b/fonts/TewiFontOutlineAlt/25F3.png new file mode 100644 index 000000000..34060cc36 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F3.png differ diff --git a/fonts/TewiFontOutlineAlt/25F4.png b/fonts/TewiFontOutlineAlt/25F4.png new file mode 100644 index 000000000..bf2db9c5a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F4.png differ diff --git a/fonts/TewiFontOutlineAlt/25F5.png b/fonts/TewiFontOutlineAlt/25F5.png new file mode 100644 index 000000000..40652f2f8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F5.png differ diff --git a/fonts/TewiFontOutlineAlt/25F6.png b/fonts/TewiFontOutlineAlt/25F6.png new file mode 100644 index 000000000..5c16a14a0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F6.png differ diff --git a/fonts/TewiFontOutlineAlt/25F7.png b/fonts/TewiFontOutlineAlt/25F7.png new file mode 100644 index 000000000..c317e2c06 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F7.png differ diff --git a/fonts/TewiFontOutlineAlt/25F8.png b/fonts/TewiFontOutlineAlt/25F8.png new file mode 100644 index 000000000..8a51c5d9f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F8.png differ diff --git a/fonts/TewiFontOutlineAlt/25F9.png b/fonts/TewiFontOutlineAlt/25F9.png new file mode 100644 index 000000000..238fcc409 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25F9.png differ diff --git a/fonts/TewiFontOutlineAlt/25FA.png b/fonts/TewiFontOutlineAlt/25FA.png new file mode 100644 index 000000000..b7b076c82 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25FA.png differ diff --git a/fonts/TewiFontOutlineAlt/25FB.png b/fonts/TewiFontOutlineAlt/25FB.png new file mode 100644 index 000000000..24704229c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25FB.png differ diff --git a/fonts/TewiFontOutlineAlt/25FC.png b/fonts/TewiFontOutlineAlt/25FC.png new file mode 100644 index 000000000..c90056545 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25FC.png differ diff --git a/fonts/TewiFontOutlineAlt/25FD.png b/fonts/TewiFontOutlineAlt/25FD.png new file mode 100644 index 000000000..83caea18a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25FD.png differ diff --git a/fonts/TewiFontOutlineAlt/25FE.png b/fonts/TewiFontOutlineAlt/25FE.png new file mode 100644 index 000000000..7912080f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25FE.png differ diff --git a/fonts/TewiFontOutlineAlt/25FF.png b/fonts/TewiFontOutlineAlt/25FF.png new file mode 100644 index 000000000..90bf51dd5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/25FF.png differ diff --git a/fonts/TewiFontOutlineAlt/2600.png b/fonts/TewiFontOutlineAlt/2600.png new file mode 100644 index 000000000..a74bf6db0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2600.png differ diff --git a/fonts/TewiFontOutlineAlt/2601.png b/fonts/TewiFontOutlineAlt/2601.png new file mode 100644 index 000000000..cb0fee74c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2601.png differ diff --git a/fonts/TewiFontOutlineAlt/2602.png b/fonts/TewiFontOutlineAlt/2602.png new file mode 100644 index 000000000..4b326734e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2602.png differ diff --git a/fonts/TewiFontOutlineAlt/2603.png b/fonts/TewiFontOutlineAlt/2603.png new file mode 100644 index 000000000..037bea7d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2603.png differ diff --git a/fonts/TewiFontOutlineAlt/2604.png b/fonts/TewiFontOutlineAlt/2604.png new file mode 100644 index 000000000..c90351944 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2604.png differ diff --git a/fonts/TewiFontOutlineAlt/2605.png b/fonts/TewiFontOutlineAlt/2605.png new file mode 100644 index 000000000..31c23e1d0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2605.png differ diff --git a/fonts/TewiFontOutlineAlt/2606.png b/fonts/TewiFontOutlineAlt/2606.png new file mode 100644 index 000000000..e62808752 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2606.png differ diff --git a/fonts/TewiFontOutlineAlt/2607.png b/fonts/TewiFontOutlineAlt/2607.png new file mode 100644 index 000000000..c8e7c96d7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2607.png differ diff --git a/fonts/TewiFontOutlineAlt/2608.png b/fonts/TewiFontOutlineAlt/2608.png new file mode 100644 index 000000000..1d68b5390 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2608.png differ diff --git a/fonts/TewiFontOutlineAlt/2609.png b/fonts/TewiFontOutlineAlt/2609.png new file mode 100644 index 000000000..a106b7327 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2609.png differ diff --git a/fonts/TewiFontOutlineAlt/2610.png b/fonts/TewiFontOutlineAlt/2610.png new file mode 100644 index 000000000..24704229c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2610.png differ diff --git a/fonts/TewiFontOutlineAlt/2611.png b/fonts/TewiFontOutlineAlt/2611.png new file mode 100644 index 000000000..1fc5f4560 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2611.png differ diff --git a/fonts/TewiFontOutlineAlt/2614.png b/fonts/TewiFontOutlineAlt/2614.png new file mode 100644 index 000000000..f553e996c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2614.png differ diff --git a/fonts/TewiFontOutlineAlt/2616.png b/fonts/TewiFontOutlineAlt/2616.png new file mode 100644 index 000000000..2e0ef3986 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2616.png differ diff --git a/fonts/TewiFontOutlineAlt/2617.png b/fonts/TewiFontOutlineAlt/2617.png new file mode 100644 index 000000000..11aca7db4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2617.png differ diff --git a/fonts/TewiFontOutlineAlt/261E.png b/fonts/TewiFontOutlineAlt/261E.png new file mode 100644 index 000000000..49472a125 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/261E.png differ diff --git a/fonts/TewiFontOutlineAlt/2630.png b/fonts/TewiFontOutlineAlt/2630.png new file mode 100644 index 000000000..a13d9e34c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2630.png differ diff --git a/fonts/TewiFontOutlineAlt/2631.png b/fonts/TewiFontOutlineAlt/2631.png new file mode 100644 index 000000000..899a868cd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2631.png differ diff --git a/fonts/TewiFontOutlineAlt/2632.png b/fonts/TewiFontOutlineAlt/2632.png new file mode 100644 index 000000000..de9e6652e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2632.png differ diff --git a/fonts/TewiFontOutlineAlt/2633.png b/fonts/TewiFontOutlineAlt/2633.png new file mode 100644 index 000000000..c1eaed2aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2633.png differ diff --git a/fonts/TewiFontOutlineAlt/2634.png b/fonts/TewiFontOutlineAlt/2634.png new file mode 100644 index 000000000..6274da769 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2634.png differ diff --git a/fonts/TewiFontOutlineAlt/2635.png b/fonts/TewiFontOutlineAlt/2635.png new file mode 100644 index 000000000..5dd9d568b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2635.png differ diff --git a/fonts/TewiFontOutlineAlt/2636.png b/fonts/TewiFontOutlineAlt/2636.png new file mode 100644 index 000000000..09747b784 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2636.png differ diff --git a/fonts/TewiFontOutlineAlt/2637.png b/fonts/TewiFontOutlineAlt/2637.png new file mode 100644 index 000000000..23bfcd3db Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2637.png differ diff --git a/fonts/TewiFontOutlineAlt/263A.png b/fonts/TewiFontOutlineAlt/263A.png new file mode 100644 index 000000000..b298c0720 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/263A.png differ diff --git a/fonts/TewiFontOutlineAlt/263B.png b/fonts/TewiFontOutlineAlt/263B.png new file mode 100644 index 000000000..8ca10cafa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/263B.png differ diff --git a/fonts/TewiFontOutlineAlt/263C.png b/fonts/TewiFontOutlineAlt/263C.png new file mode 100644 index 000000000..8e322b4f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/263C.png differ diff --git a/fonts/TewiFontOutlineAlt/263F.png b/fonts/TewiFontOutlineAlt/263F.png new file mode 100644 index 000000000..71827f4a9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/263F.png differ diff --git a/fonts/TewiFontOutlineAlt/2640.png b/fonts/TewiFontOutlineAlt/2640.png new file mode 100644 index 000000000..f013e2979 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2640.png differ diff --git a/fonts/TewiFontOutlineAlt/2641.png b/fonts/TewiFontOutlineAlt/2641.png new file mode 100644 index 000000000..dd0a743da Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2641.png differ diff --git a/fonts/TewiFontOutlineAlt/2642.png b/fonts/TewiFontOutlineAlt/2642.png new file mode 100644 index 000000000..5a6816c82 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2642.png differ diff --git a/fonts/TewiFontOutlineAlt/2660.png b/fonts/TewiFontOutlineAlt/2660.png new file mode 100644 index 000000000..407085d9a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2660.png differ diff --git a/fonts/TewiFontOutlineAlt/2661.png b/fonts/TewiFontOutlineAlt/2661.png new file mode 100644 index 000000000..f4019a552 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2661.png differ diff --git a/fonts/TewiFontOutlineAlt/2662.png b/fonts/TewiFontOutlineAlt/2662.png new file mode 100644 index 000000000..d2c6047b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2662.png differ diff --git a/fonts/TewiFontOutlineAlt/2663.png b/fonts/TewiFontOutlineAlt/2663.png new file mode 100644 index 000000000..4a60c8f2a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2663.png differ diff --git a/fonts/TewiFontOutlineAlt/2664.png b/fonts/TewiFontOutlineAlt/2664.png new file mode 100644 index 000000000..032e6ef72 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2664.png differ diff --git a/fonts/TewiFontOutlineAlt/2665.png b/fonts/TewiFontOutlineAlt/2665.png new file mode 100644 index 000000000..67b3970eb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2665.png differ diff --git a/fonts/TewiFontOutlineAlt/2666.png b/fonts/TewiFontOutlineAlt/2666.png new file mode 100644 index 000000000..f29b952fb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2666.png differ diff --git a/fonts/TewiFontOutlineAlt/2667.png b/fonts/TewiFontOutlineAlt/2667.png new file mode 100644 index 000000000..4d799b7e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2667.png differ diff --git a/fonts/TewiFontOutlineAlt/2668.png b/fonts/TewiFontOutlineAlt/2668.png new file mode 100644 index 000000000..d11ea1a91 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2668.png differ diff --git a/fonts/TewiFontOutlineAlt/2669.png b/fonts/TewiFontOutlineAlt/2669.png new file mode 100644 index 000000000..4f2541601 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2669.png differ diff --git a/fonts/TewiFontOutlineAlt/266A.png b/fonts/TewiFontOutlineAlt/266A.png new file mode 100644 index 000000000..44e9dd009 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/266A.png differ diff --git a/fonts/TewiFontOutlineAlt/266B.png b/fonts/TewiFontOutlineAlt/266B.png new file mode 100644 index 000000000..d496bf79a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/266B.png differ diff --git a/fonts/TewiFontOutlineAlt/266C.png b/fonts/TewiFontOutlineAlt/266C.png new file mode 100644 index 000000000..58f6578ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/266C.png differ diff --git a/fonts/TewiFontOutlineAlt/266D.png b/fonts/TewiFontOutlineAlt/266D.png new file mode 100644 index 000000000..298ee1954 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/266D.png differ diff --git a/fonts/TewiFontOutlineAlt/266E.png b/fonts/TewiFontOutlineAlt/266E.png new file mode 100644 index 000000000..c29742f65 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/266E.png differ diff --git a/fonts/TewiFontOutlineAlt/266F.png b/fonts/TewiFontOutlineAlt/266F.png new file mode 100644 index 000000000..845b32396 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/266F.png differ diff --git a/fonts/TewiFontOutlineAlt/26A2.png b/fonts/TewiFontOutlineAlt/26A2.png new file mode 100644 index 000000000..3f20fcfb0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/26A2.png differ diff --git a/fonts/TewiFontOutlineAlt/26A3.png b/fonts/TewiFontOutlineAlt/26A3.png new file mode 100644 index 000000000..e3406d50d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/26A3.png differ diff --git a/fonts/TewiFontOutlineAlt/26A4.png b/fonts/TewiFontOutlineAlt/26A4.png new file mode 100644 index 000000000..54055d3b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/26A4.png differ diff --git a/fonts/TewiFontOutlineAlt/26A5.png b/fonts/TewiFontOutlineAlt/26A5.png new file mode 100644 index 000000000..dd636ac5c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/26A5.png differ diff --git a/fonts/TewiFontOutlineAlt/26A6.png b/fonts/TewiFontOutlineAlt/26A6.png new file mode 100644 index 000000000..55bd684ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/26A6.png differ diff --git a/fonts/TewiFontOutlineAlt/26A7.png b/fonts/TewiFontOutlineAlt/26A7.png new file mode 100644 index 000000000..c6f11ddda Binary files /dev/null and b/fonts/TewiFontOutlineAlt/26A7.png differ diff --git a/fonts/TewiFontOutlineAlt/26A8.png b/fonts/TewiFontOutlineAlt/26A8.png new file mode 100644 index 000000000..81bf503b4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/26A8.png differ diff --git a/fonts/TewiFontOutlineAlt/26A9.png b/fonts/TewiFontOutlineAlt/26A9.png new file mode 100644 index 000000000..b239e1cfe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/26A9.png differ diff --git a/fonts/TewiFontOutlineAlt/2708.png b/fonts/TewiFontOutlineAlt/2708.png new file mode 100644 index 000000000..75f861cbf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2708.png differ diff --git a/fonts/TewiFontOutlineAlt/2713.png b/fonts/TewiFontOutlineAlt/2713.png new file mode 100644 index 000000000..116d4b4ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2713.png differ diff --git a/fonts/TewiFontOutlineAlt/2714.png b/fonts/TewiFontOutlineAlt/2714.png new file mode 100644 index 000000000..a8bceb821 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2714.png differ diff --git a/fonts/TewiFontOutlineAlt/2715.png b/fonts/TewiFontOutlineAlt/2715.png new file mode 100644 index 000000000..681a10240 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2715.png differ diff --git a/fonts/TewiFontOutlineAlt/2716.png b/fonts/TewiFontOutlineAlt/2716.png new file mode 100644 index 000000000..2af4f8c97 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2716.png differ diff --git a/fonts/TewiFontOutlineAlt/2717.png b/fonts/TewiFontOutlineAlt/2717.png new file mode 100644 index 000000000..9a222bc76 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2717.png differ diff --git a/fonts/TewiFontOutlineAlt/2718.png b/fonts/TewiFontOutlineAlt/2718.png new file mode 100644 index 000000000..80df24eeb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2718.png differ diff --git a/fonts/TewiFontOutlineAlt/271A.png b/fonts/TewiFontOutlineAlt/271A.png new file mode 100644 index 000000000..82ccebc0b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/271A.png differ diff --git a/fonts/TewiFontOutlineAlt/271B.png b/fonts/TewiFontOutlineAlt/271B.png new file mode 100644 index 000000000..e92fdbcd8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/271B.png differ diff --git a/fonts/TewiFontOutlineAlt/271C.png b/fonts/TewiFontOutlineAlt/271C.png new file mode 100644 index 000000000..82770efac Binary files /dev/null and b/fonts/TewiFontOutlineAlt/271C.png differ diff --git a/fonts/TewiFontOutlineAlt/271D.png b/fonts/TewiFontOutlineAlt/271D.png new file mode 100644 index 000000000..0907024b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/271D.png differ diff --git a/fonts/TewiFontOutlineAlt/271E.png b/fonts/TewiFontOutlineAlt/271E.png new file mode 100644 index 000000000..a8b21dc74 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/271E.png differ diff --git a/fonts/TewiFontOutlineAlt/271F.png b/fonts/TewiFontOutlineAlt/271F.png new file mode 100644 index 000000000..92de6cd8f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/271F.png differ diff --git a/fonts/TewiFontOutlineAlt/2720.png b/fonts/TewiFontOutlineAlt/2720.png new file mode 100644 index 000000000..a0f429d85 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2720.png differ diff --git a/fonts/TewiFontOutlineAlt/2721.png b/fonts/TewiFontOutlineAlt/2721.png new file mode 100644 index 000000000..e9a474e2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2721.png differ diff --git a/fonts/TewiFontOutlineAlt/2724.png b/fonts/TewiFontOutlineAlt/2724.png new file mode 100644 index 000000000..4be27fd3b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2724.png differ diff --git a/fonts/TewiFontOutlineAlt/2725.png b/fonts/TewiFontOutlineAlt/2725.png new file mode 100644 index 000000000..6d4e4f0ed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2725.png differ diff --git a/fonts/TewiFontOutlineAlt/2726.png b/fonts/TewiFontOutlineAlt/2726.png new file mode 100644 index 000000000..ffd5c90d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2726.png differ diff --git a/fonts/TewiFontOutlineAlt/2727.png b/fonts/TewiFontOutlineAlt/2727.png new file mode 100644 index 000000000..c92152c90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2727.png differ diff --git a/fonts/TewiFontOutlineAlt/2729.png b/fonts/TewiFontOutlineAlt/2729.png new file mode 100644 index 000000000..e62808752 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2729.png differ diff --git a/fonts/TewiFontOutlineAlt/272A.png b/fonts/TewiFontOutlineAlt/272A.png new file mode 100644 index 000000000..ab9c4da18 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/272A.png differ diff --git a/fonts/TewiFontOutlineAlt/272B.png b/fonts/TewiFontOutlineAlt/272B.png new file mode 100644 index 000000000..e62808752 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/272B.png differ diff --git a/fonts/TewiFontOutlineAlt/2733.png b/fonts/TewiFontOutlineAlt/2733.png new file mode 100644 index 000000000..d27b5892c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2733.png differ diff --git a/fonts/TewiFontOutlineAlt/2736.png b/fonts/TewiFontOutlineAlt/2736.png new file mode 100644 index 000000000..f3491b7ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2736.png differ diff --git a/fonts/TewiFontOutlineAlt/273F.png b/fonts/TewiFontOutlineAlt/273F.png new file mode 100644 index 000000000..9c832ba7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/273F.png differ diff --git a/fonts/TewiFontOutlineAlt/2741.png b/fonts/TewiFontOutlineAlt/2741.png new file mode 100644 index 000000000..1580230cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2741.png differ diff --git a/fonts/TewiFontOutlineAlt/274F.png b/fonts/TewiFontOutlineAlt/274F.png new file mode 100644 index 000000000..d44ff6fc1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/274F.png differ diff --git a/fonts/TewiFontOutlineAlt/2750.png b/fonts/TewiFontOutlineAlt/2750.png new file mode 100644 index 000000000..f8106d12f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2750.png differ diff --git a/fonts/TewiFontOutlineAlt/2751.png b/fonts/TewiFontOutlineAlt/2751.png new file mode 100644 index 000000000..d44ff6fc1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2751.png differ diff --git a/fonts/TewiFontOutlineAlt/2752.png b/fonts/TewiFontOutlineAlt/2752.png new file mode 100644 index 000000000..f8106d12f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2752.png differ diff --git a/fonts/TewiFontOutlineAlt/275B.png b/fonts/TewiFontOutlineAlt/275B.png new file mode 100644 index 000000000..c29bafd50 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/275B.png differ diff --git a/fonts/TewiFontOutlineAlt/275C.png b/fonts/TewiFontOutlineAlt/275C.png new file mode 100644 index 000000000..b4ad2dcc8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/275C.png differ diff --git a/fonts/TewiFontOutlineAlt/275D.png b/fonts/TewiFontOutlineAlt/275D.png new file mode 100644 index 000000000..2a49e5094 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/275D.png differ diff --git a/fonts/TewiFontOutlineAlt/275E.png b/fonts/TewiFontOutlineAlt/275E.png new file mode 100644 index 000000000..fa4707e8a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/275E.png differ diff --git a/fonts/TewiFontOutlineAlt/275F.png b/fonts/TewiFontOutlineAlt/275F.png new file mode 100644 index 000000000..833e26d82 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/275F.png differ diff --git a/fonts/TewiFontOutlineAlt/2760.png b/fonts/TewiFontOutlineAlt/2760.png new file mode 100644 index 000000000..cb5c443d3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2760.png differ diff --git a/fonts/TewiFontOutlineAlt/2764.png b/fonts/TewiFontOutlineAlt/2764.png new file mode 100644 index 000000000..67b3970eb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2764.png differ diff --git a/fonts/TewiFontOutlineAlt/2765.png b/fonts/TewiFontOutlineAlt/2765.png new file mode 100644 index 000000000..84b2c6cb4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2765.png differ diff --git a/fonts/TewiFontOutlineAlt/2766.png b/fonts/TewiFontOutlineAlt/2766.png new file mode 100644 index 000000000..7ee4303f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2766.png differ diff --git a/fonts/TewiFontOutlineAlt/276C.png b/fonts/TewiFontOutlineAlt/276C.png new file mode 100644 index 000000000..2f34662bf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/276C.png differ diff --git a/fonts/TewiFontOutlineAlt/276D.png b/fonts/TewiFontOutlineAlt/276D.png new file mode 100644 index 000000000..bbf5af3c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/276D.png differ diff --git a/fonts/TewiFontOutlineAlt/276E.png b/fonts/TewiFontOutlineAlt/276E.png new file mode 100644 index 000000000..3fd7c964a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/276E.png differ diff --git a/fonts/TewiFontOutlineAlt/276F.png b/fonts/TewiFontOutlineAlt/276F.png new file mode 100644 index 000000000..1533d4ea4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/276F.png differ diff --git a/fonts/TewiFontOutlineAlt/2770.png b/fonts/TewiFontOutlineAlt/2770.png new file mode 100644 index 000000000..a67a19dea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2770.png differ diff --git a/fonts/TewiFontOutlineAlt/2771.png b/fonts/TewiFontOutlineAlt/2771.png new file mode 100644 index 000000000..9c9a5a235 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2771.png differ diff --git a/fonts/TewiFontOutlineAlt/278A.png b/fonts/TewiFontOutlineAlt/278A.png new file mode 100644 index 000000000..cced00ce7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/278A.png differ diff --git a/fonts/TewiFontOutlineAlt/278B.png b/fonts/TewiFontOutlineAlt/278B.png new file mode 100644 index 000000000..47a78e5b6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/278B.png differ diff --git a/fonts/TewiFontOutlineAlt/278C.png b/fonts/TewiFontOutlineAlt/278C.png new file mode 100644 index 000000000..d82e97c36 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/278C.png differ diff --git a/fonts/TewiFontOutlineAlt/278D.png b/fonts/TewiFontOutlineAlt/278D.png new file mode 100644 index 000000000..166da3ae1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/278D.png differ diff --git a/fonts/TewiFontOutlineAlt/278E.png b/fonts/TewiFontOutlineAlt/278E.png new file mode 100644 index 000000000..7addf1b46 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/278E.png differ diff --git a/fonts/TewiFontOutlineAlt/278F.png b/fonts/TewiFontOutlineAlt/278F.png new file mode 100644 index 000000000..9f8356b2f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/278F.png differ diff --git a/fonts/TewiFontOutlineAlt/2790.png b/fonts/TewiFontOutlineAlt/2790.png new file mode 100644 index 000000000..014808b4d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2790.png differ diff --git a/fonts/TewiFontOutlineAlt/2791.png b/fonts/TewiFontOutlineAlt/2791.png new file mode 100644 index 000000000..63347b9d1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2791.png differ diff --git a/fonts/TewiFontOutlineAlt/2792.png b/fonts/TewiFontOutlineAlt/2792.png new file mode 100644 index 000000000..136617065 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2792.png differ diff --git a/fonts/TewiFontOutlineAlt/2793.png b/fonts/TewiFontOutlineAlt/2793.png new file mode 100644 index 000000000..2896810ed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2793.png differ diff --git a/fonts/TewiFontOutlineAlt/2794.png b/fonts/TewiFontOutlineAlt/2794.png new file mode 100644 index 000000000..0f43e64aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2794.png differ diff --git a/fonts/TewiFontOutlineAlt/2795.png b/fonts/TewiFontOutlineAlt/2795.png new file mode 100644 index 000000000..82ccebc0b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2795.png differ diff --git a/fonts/TewiFontOutlineAlt/2796.png b/fonts/TewiFontOutlineAlt/2796.png new file mode 100644 index 000000000..ee699a652 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2796.png differ diff --git a/fonts/TewiFontOutlineAlt/2797.png b/fonts/TewiFontOutlineAlt/2797.png new file mode 100644 index 000000000..1b0ec68ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2797.png differ diff --git a/fonts/TewiFontOutlineAlt/2798.png b/fonts/TewiFontOutlineAlt/2798.png new file mode 100644 index 000000000..2091bcbb6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2798.png differ diff --git a/fonts/TewiFontOutlineAlt/2799.png b/fonts/TewiFontOutlineAlt/2799.png new file mode 100644 index 000000000..f99b30683 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2799.png differ diff --git a/fonts/TewiFontOutlineAlt/279A.png b/fonts/TewiFontOutlineAlt/279A.png new file mode 100644 index 000000000..32cc02b47 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/279A.png differ diff --git a/fonts/TewiFontOutlineAlt/279B.png b/fonts/TewiFontOutlineAlt/279B.png new file mode 100644 index 000000000..c86609fb3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/279B.png differ diff --git a/fonts/TewiFontOutlineAlt/27E8.png b/fonts/TewiFontOutlineAlt/27E8.png new file mode 100644 index 000000000..f7429218c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27E8.png differ diff --git a/fonts/TewiFontOutlineAlt/27E9.png b/fonts/TewiFontOutlineAlt/27E9.png new file mode 100644 index 000000000..4a664320f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27E9.png differ diff --git a/fonts/TewiFontOutlineAlt/27F2.png b/fonts/TewiFontOutlineAlt/27F2.png new file mode 100644 index 000000000..720fc6585 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27F2.png differ diff --git a/fonts/TewiFontOutlineAlt/27F3.png b/fonts/TewiFontOutlineAlt/27F3.png new file mode 100644 index 000000000..32ed7e9ca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27F3.png differ diff --git a/fonts/TewiFontOutlineAlt/27F5.png b/fonts/TewiFontOutlineAlt/27F5.png new file mode 100644 index 000000000..49d52316f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27F5.png differ diff --git a/fonts/TewiFontOutlineAlt/27F6.png b/fonts/TewiFontOutlineAlt/27F6.png new file mode 100644 index 000000000..1361c7fbe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27F6.png differ diff --git a/fonts/TewiFontOutlineAlt/27F8.png b/fonts/TewiFontOutlineAlt/27F8.png new file mode 100644 index 000000000..994dddb16 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27F8.png differ diff --git a/fonts/TewiFontOutlineAlt/27F9.png b/fonts/TewiFontOutlineAlt/27F9.png new file mode 100644 index 000000000..e76649802 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27F9.png differ diff --git a/fonts/TewiFontOutlineAlt/27FB.png b/fonts/TewiFontOutlineAlt/27FB.png new file mode 100644 index 000000000..81c0e3649 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27FB.png differ diff --git a/fonts/TewiFontOutlineAlt/27FC.png b/fonts/TewiFontOutlineAlt/27FC.png new file mode 100644 index 000000000..587af7767 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27FC.png differ diff --git a/fonts/TewiFontOutlineAlt/27FD.png b/fonts/TewiFontOutlineAlt/27FD.png new file mode 100644 index 000000000..a0a4a620e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27FD.png differ diff --git a/fonts/TewiFontOutlineAlt/27FE.png b/fonts/TewiFontOutlineAlt/27FE.png new file mode 100644 index 000000000..08a52ea88 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27FE.png differ diff --git a/fonts/TewiFontOutlineAlt/27FF.png b/fonts/TewiFontOutlineAlt/27FF.png new file mode 100644 index 000000000..3574aabf1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/27FF.png differ diff --git a/fonts/TewiFontOutlineAlt/2801.png b/fonts/TewiFontOutlineAlt/2801.png new file mode 100644 index 000000000..138c66a40 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2801.png differ diff --git a/fonts/TewiFontOutlineAlt/2802.png b/fonts/TewiFontOutlineAlt/2802.png new file mode 100644 index 000000000..8243f6cee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2802.png differ diff --git a/fonts/TewiFontOutlineAlt/2803.png b/fonts/TewiFontOutlineAlt/2803.png new file mode 100644 index 000000000..149b74bfd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2803.png differ diff --git a/fonts/TewiFontOutlineAlt/2804.png b/fonts/TewiFontOutlineAlt/2804.png new file mode 100644 index 000000000..751bfdec3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2804.png differ diff --git a/fonts/TewiFontOutlineAlt/2805.png b/fonts/TewiFontOutlineAlt/2805.png new file mode 100644 index 000000000..f65b05ea5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2805.png differ diff --git a/fonts/TewiFontOutlineAlt/2806.png b/fonts/TewiFontOutlineAlt/2806.png new file mode 100644 index 000000000..7a21dc345 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2806.png differ diff --git a/fonts/TewiFontOutlineAlt/2807.png b/fonts/TewiFontOutlineAlt/2807.png new file mode 100644 index 000000000..aa3ab1548 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2807.png differ diff --git a/fonts/TewiFontOutlineAlt/2808.png b/fonts/TewiFontOutlineAlt/2808.png new file mode 100644 index 000000000..72f33582a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2808.png differ diff --git a/fonts/TewiFontOutlineAlt/2809.png b/fonts/TewiFontOutlineAlt/2809.png new file mode 100644 index 000000000..77ad60555 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2809.png differ diff --git a/fonts/TewiFontOutlineAlt/280A.png b/fonts/TewiFontOutlineAlt/280A.png new file mode 100644 index 000000000..fd17587ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/280A.png differ diff --git a/fonts/TewiFontOutlineAlt/280B.png b/fonts/TewiFontOutlineAlt/280B.png new file mode 100644 index 000000000..d84cc96a0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/280B.png differ diff --git a/fonts/TewiFontOutlineAlt/280C.png b/fonts/TewiFontOutlineAlt/280C.png new file mode 100644 index 000000000..90e056443 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/280C.png differ diff --git a/fonts/TewiFontOutlineAlt/280D.png b/fonts/TewiFontOutlineAlt/280D.png new file mode 100644 index 000000000..829a0d5f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/280D.png differ diff --git a/fonts/TewiFontOutlineAlt/280E.png b/fonts/TewiFontOutlineAlt/280E.png new file mode 100644 index 000000000..ea576a4e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/280E.png differ diff --git a/fonts/TewiFontOutlineAlt/280F.png b/fonts/TewiFontOutlineAlt/280F.png new file mode 100644 index 000000000..781f55965 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/280F.png differ diff --git a/fonts/TewiFontOutlineAlt/2810.png b/fonts/TewiFontOutlineAlt/2810.png new file mode 100644 index 000000000..f851203af Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2810.png differ diff --git a/fonts/TewiFontOutlineAlt/2811.png b/fonts/TewiFontOutlineAlt/2811.png new file mode 100644 index 000000000..20dad7278 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2811.png differ diff --git a/fonts/TewiFontOutlineAlt/2812.png b/fonts/TewiFontOutlineAlt/2812.png new file mode 100644 index 000000000..00c48a4a0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2812.png differ diff --git a/fonts/TewiFontOutlineAlt/2813.png b/fonts/TewiFontOutlineAlt/2813.png new file mode 100644 index 000000000..ceaee4208 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2813.png differ diff --git a/fonts/TewiFontOutlineAlt/2814.png b/fonts/TewiFontOutlineAlt/2814.png new file mode 100644 index 000000000..f7d71fcc4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2814.png differ diff --git a/fonts/TewiFontOutlineAlt/2815.png b/fonts/TewiFontOutlineAlt/2815.png new file mode 100644 index 000000000..03ec2f4f9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2815.png differ diff --git a/fonts/TewiFontOutlineAlt/2816.png b/fonts/TewiFontOutlineAlt/2816.png new file mode 100644 index 000000000..1181d850c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2816.png differ diff --git a/fonts/TewiFontOutlineAlt/2817.png b/fonts/TewiFontOutlineAlt/2817.png new file mode 100644 index 000000000..f4d250a7b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2817.png differ diff --git a/fonts/TewiFontOutlineAlt/2818.png b/fonts/TewiFontOutlineAlt/2818.png new file mode 100644 index 000000000..0b4a88532 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2818.png differ diff --git a/fonts/TewiFontOutlineAlt/2819.png b/fonts/TewiFontOutlineAlt/2819.png new file mode 100644 index 000000000..6cd12fccc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2819.png differ diff --git a/fonts/TewiFontOutlineAlt/281A.png b/fonts/TewiFontOutlineAlt/281A.png new file mode 100644 index 000000000..a3d5ebb8e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/281A.png differ diff --git a/fonts/TewiFontOutlineAlt/281B.png b/fonts/TewiFontOutlineAlt/281B.png new file mode 100644 index 000000000..956664915 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/281B.png differ diff --git a/fonts/TewiFontOutlineAlt/281C.png b/fonts/TewiFontOutlineAlt/281C.png new file mode 100644 index 000000000..5dd36a814 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/281C.png differ diff --git a/fonts/TewiFontOutlineAlt/281D.png b/fonts/TewiFontOutlineAlt/281D.png new file mode 100644 index 000000000..49458ee5c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/281D.png differ diff --git a/fonts/TewiFontOutlineAlt/281E.png b/fonts/TewiFontOutlineAlt/281E.png new file mode 100644 index 000000000..49eb1fcdd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/281E.png differ diff --git a/fonts/TewiFontOutlineAlt/281F.png b/fonts/TewiFontOutlineAlt/281F.png new file mode 100644 index 000000000..c9f69cfdc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/281F.png differ diff --git a/fonts/TewiFontOutlineAlt/2820.png b/fonts/TewiFontOutlineAlt/2820.png new file mode 100644 index 000000000..ed9f7f009 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2820.png differ diff --git a/fonts/TewiFontOutlineAlt/2821.png b/fonts/TewiFontOutlineAlt/2821.png new file mode 100644 index 000000000..5dabb5bbe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2821.png differ diff --git a/fonts/TewiFontOutlineAlt/2822.png b/fonts/TewiFontOutlineAlt/2822.png new file mode 100644 index 000000000..26bca20cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2822.png differ diff --git a/fonts/TewiFontOutlineAlt/2823.png b/fonts/TewiFontOutlineAlt/2823.png new file mode 100644 index 000000000..618df5d4d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2823.png differ diff --git a/fonts/TewiFontOutlineAlt/2824.png b/fonts/TewiFontOutlineAlt/2824.png new file mode 100644 index 000000000..4bb55a75a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2824.png differ diff --git a/fonts/TewiFontOutlineAlt/2825.png b/fonts/TewiFontOutlineAlt/2825.png new file mode 100644 index 000000000..79cd2edd2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2825.png differ diff --git a/fonts/TewiFontOutlineAlt/2826.png b/fonts/TewiFontOutlineAlt/2826.png new file mode 100644 index 000000000..0c30567f6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2826.png differ diff --git a/fonts/TewiFontOutlineAlt/2827.png b/fonts/TewiFontOutlineAlt/2827.png new file mode 100644 index 000000000..aaae87148 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2827.png differ diff --git a/fonts/TewiFontOutlineAlt/2828.png b/fonts/TewiFontOutlineAlt/2828.png new file mode 100644 index 000000000..2a8280723 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2828.png differ diff --git a/fonts/TewiFontOutlineAlt/2829.png b/fonts/TewiFontOutlineAlt/2829.png new file mode 100644 index 000000000..7811db957 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2829.png differ diff --git a/fonts/TewiFontOutlineAlt/282A.png b/fonts/TewiFontOutlineAlt/282A.png new file mode 100644 index 000000000..a42afd24f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/282A.png differ diff --git a/fonts/TewiFontOutlineAlt/282B.png b/fonts/TewiFontOutlineAlt/282B.png new file mode 100644 index 000000000..02cbbd519 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/282B.png differ diff --git a/fonts/TewiFontOutlineAlt/282C.png b/fonts/TewiFontOutlineAlt/282C.png new file mode 100644 index 000000000..22c6c157e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/282C.png differ diff --git a/fonts/TewiFontOutlineAlt/282D.png b/fonts/TewiFontOutlineAlt/282D.png new file mode 100644 index 000000000..72b0df7a3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/282D.png differ diff --git a/fonts/TewiFontOutlineAlt/282E.png b/fonts/TewiFontOutlineAlt/282E.png new file mode 100644 index 000000000..79b312807 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/282E.png differ diff --git a/fonts/TewiFontOutlineAlt/282F.png b/fonts/TewiFontOutlineAlt/282F.png new file mode 100644 index 000000000..27401a32d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/282F.png differ diff --git a/fonts/TewiFontOutlineAlt/2830.png b/fonts/TewiFontOutlineAlt/2830.png new file mode 100644 index 000000000..279635d3d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2830.png differ diff --git a/fonts/TewiFontOutlineAlt/2831.png b/fonts/TewiFontOutlineAlt/2831.png new file mode 100644 index 000000000..fea363f9f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2831.png differ diff --git a/fonts/TewiFontOutlineAlt/2832.png b/fonts/TewiFontOutlineAlt/2832.png new file mode 100644 index 000000000..05cfefabe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2832.png differ diff --git a/fonts/TewiFontOutlineAlt/2833.png b/fonts/TewiFontOutlineAlt/2833.png new file mode 100644 index 000000000..bcfec6fca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2833.png differ diff --git a/fonts/TewiFontOutlineAlt/2834.png b/fonts/TewiFontOutlineAlt/2834.png new file mode 100644 index 000000000..18b905f07 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2834.png differ diff --git a/fonts/TewiFontOutlineAlt/2835.png b/fonts/TewiFontOutlineAlt/2835.png new file mode 100644 index 000000000..48018bb66 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2835.png differ diff --git a/fonts/TewiFontOutlineAlt/2836.png b/fonts/TewiFontOutlineAlt/2836.png new file mode 100644 index 000000000..113475a89 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2836.png differ diff --git a/fonts/TewiFontOutlineAlt/2837.png b/fonts/TewiFontOutlineAlt/2837.png new file mode 100644 index 000000000..c1ec361af Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2837.png differ diff --git a/fonts/TewiFontOutlineAlt/2838.png b/fonts/TewiFontOutlineAlt/2838.png new file mode 100644 index 000000000..2e486e312 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2838.png differ diff --git a/fonts/TewiFontOutlineAlt/2839.png b/fonts/TewiFontOutlineAlt/2839.png new file mode 100644 index 000000000..a88d684be Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2839.png differ diff --git a/fonts/TewiFontOutlineAlt/283A.png b/fonts/TewiFontOutlineAlt/283A.png new file mode 100644 index 000000000..95d5b71e8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/283A.png differ diff --git a/fonts/TewiFontOutlineAlt/283B.png b/fonts/TewiFontOutlineAlt/283B.png new file mode 100644 index 000000000..533440ea0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/283B.png differ diff --git a/fonts/TewiFontOutlineAlt/283C.png b/fonts/TewiFontOutlineAlt/283C.png new file mode 100644 index 000000000..9a93cf26e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/283C.png differ diff --git a/fonts/TewiFontOutlineAlt/283D.png b/fonts/TewiFontOutlineAlt/283D.png new file mode 100644 index 000000000..45fa18d6d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/283D.png differ diff --git a/fonts/TewiFontOutlineAlt/283E.png b/fonts/TewiFontOutlineAlt/283E.png new file mode 100644 index 000000000..f5a3160df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/283E.png differ diff --git a/fonts/TewiFontOutlineAlt/283F.png b/fonts/TewiFontOutlineAlt/283F.png new file mode 100644 index 000000000..58612f721 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/283F.png differ diff --git a/fonts/TewiFontOutlineAlt/2840.png b/fonts/TewiFontOutlineAlt/2840.png new file mode 100644 index 000000000..6a414b4c9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2840.png differ diff --git a/fonts/TewiFontOutlineAlt/2841.png b/fonts/TewiFontOutlineAlt/2841.png new file mode 100644 index 000000000..d54aa8cf0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2841.png differ diff --git a/fonts/TewiFontOutlineAlt/2842.png b/fonts/TewiFontOutlineAlt/2842.png new file mode 100644 index 000000000..b830e0f77 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2842.png differ diff --git a/fonts/TewiFontOutlineAlt/2843.png b/fonts/TewiFontOutlineAlt/2843.png new file mode 100644 index 000000000..197903124 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2843.png differ diff --git a/fonts/TewiFontOutlineAlt/2844.png b/fonts/TewiFontOutlineAlt/2844.png new file mode 100644 index 000000000..3a6f99494 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2844.png differ diff --git a/fonts/TewiFontOutlineAlt/2845.png b/fonts/TewiFontOutlineAlt/2845.png new file mode 100644 index 000000000..eb88175e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2845.png differ diff --git a/fonts/TewiFontOutlineAlt/2846.png b/fonts/TewiFontOutlineAlt/2846.png new file mode 100644 index 000000000..0ac6bc4fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2846.png differ diff --git a/fonts/TewiFontOutlineAlt/2847.png b/fonts/TewiFontOutlineAlt/2847.png new file mode 100644 index 000000000..f47e75e21 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2847.png differ diff --git a/fonts/TewiFontOutlineAlt/2848.png b/fonts/TewiFontOutlineAlt/2848.png new file mode 100644 index 000000000..79f46abfd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2848.png differ diff --git a/fonts/TewiFontOutlineAlt/2849.png b/fonts/TewiFontOutlineAlt/2849.png new file mode 100644 index 000000000..30ee61efa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2849.png differ diff --git a/fonts/TewiFontOutlineAlt/284A.png b/fonts/TewiFontOutlineAlt/284A.png new file mode 100644 index 000000000..10c82fc97 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/284A.png differ diff --git a/fonts/TewiFontOutlineAlt/284B.png b/fonts/TewiFontOutlineAlt/284B.png new file mode 100644 index 000000000..e51b3af4d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/284B.png differ diff --git a/fonts/TewiFontOutlineAlt/284C.png b/fonts/TewiFontOutlineAlt/284C.png new file mode 100644 index 000000000..c141f5d03 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/284C.png differ diff --git a/fonts/TewiFontOutlineAlt/284D.png b/fonts/TewiFontOutlineAlt/284D.png new file mode 100644 index 000000000..5d437aeeb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/284D.png differ diff --git a/fonts/TewiFontOutlineAlt/284E.png b/fonts/TewiFontOutlineAlt/284E.png new file mode 100644 index 000000000..bbafee5a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/284E.png differ diff --git a/fonts/TewiFontOutlineAlt/284F.png b/fonts/TewiFontOutlineAlt/284F.png new file mode 100644 index 000000000..90735a1cc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/284F.png differ diff --git a/fonts/TewiFontOutlineAlt/2850.png b/fonts/TewiFontOutlineAlt/2850.png new file mode 100644 index 000000000..58cf03758 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2850.png differ diff --git a/fonts/TewiFontOutlineAlt/2851.png b/fonts/TewiFontOutlineAlt/2851.png new file mode 100644 index 000000000..7c532c2a9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2851.png differ diff --git a/fonts/TewiFontOutlineAlt/2852.png b/fonts/TewiFontOutlineAlt/2852.png new file mode 100644 index 000000000..628fb4a9e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2852.png differ diff --git a/fonts/TewiFontOutlineAlt/2853.png b/fonts/TewiFontOutlineAlt/2853.png new file mode 100644 index 000000000..1b4ab8556 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2853.png differ diff --git a/fonts/TewiFontOutlineAlt/2854.png b/fonts/TewiFontOutlineAlt/2854.png new file mode 100644 index 000000000..994f75415 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2854.png differ diff --git a/fonts/TewiFontOutlineAlt/2855.png b/fonts/TewiFontOutlineAlt/2855.png new file mode 100644 index 000000000..3f78e778b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2855.png differ diff --git a/fonts/TewiFontOutlineAlt/2856.png b/fonts/TewiFontOutlineAlt/2856.png new file mode 100644 index 000000000..b668bcb19 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2856.png differ diff --git a/fonts/TewiFontOutlineAlt/2857.png b/fonts/TewiFontOutlineAlt/2857.png new file mode 100644 index 000000000..2f683bb38 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2857.png differ diff --git a/fonts/TewiFontOutlineAlt/2858.png b/fonts/TewiFontOutlineAlt/2858.png new file mode 100644 index 000000000..39f2d5ad6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2858.png differ diff --git a/fonts/TewiFontOutlineAlt/2859.png b/fonts/TewiFontOutlineAlt/2859.png new file mode 100644 index 000000000..5b6566679 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2859.png differ diff --git a/fonts/TewiFontOutlineAlt/285A.png b/fonts/TewiFontOutlineAlt/285A.png new file mode 100644 index 000000000..e7a7818df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/285A.png differ diff --git a/fonts/TewiFontOutlineAlt/285B.png b/fonts/TewiFontOutlineAlt/285B.png new file mode 100644 index 000000000..ad0071740 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/285B.png differ diff --git a/fonts/TewiFontOutlineAlt/285C.png b/fonts/TewiFontOutlineAlt/285C.png new file mode 100644 index 000000000..c7e8fb88a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/285C.png differ diff --git a/fonts/TewiFontOutlineAlt/285D.png b/fonts/TewiFontOutlineAlt/285D.png new file mode 100644 index 000000000..a9382f477 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/285D.png differ diff --git a/fonts/TewiFontOutlineAlt/285E.png b/fonts/TewiFontOutlineAlt/285E.png new file mode 100644 index 000000000..e3f0abfbd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/285E.png differ diff --git a/fonts/TewiFontOutlineAlt/285F.png b/fonts/TewiFontOutlineAlt/285F.png new file mode 100644 index 000000000..aba05bbf2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/285F.png differ diff --git a/fonts/TewiFontOutlineAlt/2860.png b/fonts/TewiFontOutlineAlt/2860.png new file mode 100644 index 000000000..6de6c5dd4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2860.png differ diff --git a/fonts/TewiFontOutlineAlt/2861.png b/fonts/TewiFontOutlineAlt/2861.png new file mode 100644 index 000000000..9b713dec4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2861.png differ diff --git a/fonts/TewiFontOutlineAlt/2862.png b/fonts/TewiFontOutlineAlt/2862.png new file mode 100644 index 000000000..eba1f357a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2862.png differ diff --git a/fonts/TewiFontOutlineAlt/2863.png b/fonts/TewiFontOutlineAlt/2863.png new file mode 100644 index 000000000..149431103 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2863.png differ diff --git a/fonts/TewiFontOutlineAlt/2864.png b/fonts/TewiFontOutlineAlt/2864.png new file mode 100644 index 000000000..408943a01 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2864.png differ diff --git a/fonts/TewiFontOutlineAlt/2865.png b/fonts/TewiFontOutlineAlt/2865.png new file mode 100644 index 000000000..86718a0d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2865.png differ diff --git a/fonts/TewiFontOutlineAlt/2866.png b/fonts/TewiFontOutlineAlt/2866.png new file mode 100644 index 000000000..746a8f111 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2866.png differ diff --git a/fonts/TewiFontOutlineAlt/2867.png b/fonts/TewiFontOutlineAlt/2867.png new file mode 100644 index 000000000..82dee662e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2867.png differ diff --git a/fonts/TewiFontOutlineAlt/2868.png b/fonts/TewiFontOutlineAlt/2868.png new file mode 100644 index 000000000..9bf42163e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2868.png differ diff --git a/fonts/TewiFontOutlineAlt/2869.png b/fonts/TewiFontOutlineAlt/2869.png new file mode 100644 index 000000000..13e369b47 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2869.png differ diff --git a/fonts/TewiFontOutlineAlt/286A.png b/fonts/TewiFontOutlineAlt/286A.png new file mode 100644 index 000000000..d1ba3d71f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/286A.png differ diff --git a/fonts/TewiFontOutlineAlt/286B.png b/fonts/TewiFontOutlineAlt/286B.png new file mode 100644 index 000000000..d0b6a9daa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/286B.png differ diff --git a/fonts/TewiFontOutlineAlt/286C.png b/fonts/TewiFontOutlineAlt/286C.png new file mode 100644 index 000000000..eb0dcf712 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/286C.png differ diff --git a/fonts/TewiFontOutlineAlt/286D.png b/fonts/TewiFontOutlineAlt/286D.png new file mode 100644 index 000000000..d96c7b883 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/286D.png differ diff --git a/fonts/TewiFontOutlineAlt/286E.png b/fonts/TewiFontOutlineAlt/286E.png new file mode 100644 index 000000000..43115a6fe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/286E.png differ diff --git a/fonts/TewiFontOutlineAlt/286F.png b/fonts/TewiFontOutlineAlt/286F.png new file mode 100644 index 000000000..ba9cf93c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/286F.png differ diff --git a/fonts/TewiFontOutlineAlt/2870.png b/fonts/TewiFontOutlineAlt/2870.png new file mode 100644 index 000000000..eba1dcb54 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2870.png differ diff --git a/fonts/TewiFontOutlineAlt/2871.png b/fonts/TewiFontOutlineAlt/2871.png new file mode 100644 index 000000000..6cbb5d22b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2871.png differ diff --git a/fonts/TewiFontOutlineAlt/2872.png b/fonts/TewiFontOutlineAlt/2872.png new file mode 100644 index 000000000..0a38cf545 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2872.png differ diff --git a/fonts/TewiFontOutlineAlt/2873.png b/fonts/TewiFontOutlineAlt/2873.png new file mode 100644 index 000000000..80e462a81 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2873.png differ diff --git a/fonts/TewiFontOutlineAlt/2874.png b/fonts/TewiFontOutlineAlt/2874.png new file mode 100644 index 000000000..68665a2de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2874.png differ diff --git a/fonts/TewiFontOutlineAlt/2875.png b/fonts/TewiFontOutlineAlt/2875.png new file mode 100644 index 000000000..60be967ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2875.png differ diff --git a/fonts/TewiFontOutlineAlt/2876.png b/fonts/TewiFontOutlineAlt/2876.png new file mode 100644 index 000000000..f8c268a20 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2876.png differ diff --git a/fonts/TewiFontOutlineAlt/2877.png b/fonts/TewiFontOutlineAlt/2877.png new file mode 100644 index 000000000..a8bcd027a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2877.png differ diff --git a/fonts/TewiFontOutlineAlt/2878.png b/fonts/TewiFontOutlineAlt/2878.png new file mode 100644 index 000000000..8c4219313 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2878.png differ diff --git a/fonts/TewiFontOutlineAlt/2879.png b/fonts/TewiFontOutlineAlt/2879.png new file mode 100644 index 000000000..4d90af3d9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2879.png differ diff --git a/fonts/TewiFontOutlineAlt/287A.png b/fonts/TewiFontOutlineAlt/287A.png new file mode 100644 index 000000000..e5fcf6a95 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/287A.png differ diff --git a/fonts/TewiFontOutlineAlt/287B.png b/fonts/TewiFontOutlineAlt/287B.png new file mode 100644 index 000000000..c13b9f43c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/287B.png differ diff --git a/fonts/TewiFontOutlineAlt/287C.png b/fonts/TewiFontOutlineAlt/287C.png new file mode 100644 index 000000000..875bff3e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/287C.png differ diff --git a/fonts/TewiFontOutlineAlt/287D.png b/fonts/TewiFontOutlineAlt/287D.png new file mode 100644 index 000000000..e8ae08116 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/287D.png differ diff --git a/fonts/TewiFontOutlineAlt/287E.png b/fonts/TewiFontOutlineAlt/287E.png new file mode 100644 index 000000000..d42132bfd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/287E.png differ diff --git a/fonts/TewiFontOutlineAlt/287F.png b/fonts/TewiFontOutlineAlt/287F.png new file mode 100644 index 000000000..6a7713a3b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/287F.png differ diff --git a/fonts/TewiFontOutlineAlt/2880.png b/fonts/TewiFontOutlineAlt/2880.png new file mode 100644 index 000000000..5962bdda8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2880.png differ diff --git a/fonts/TewiFontOutlineAlt/2881.png b/fonts/TewiFontOutlineAlt/2881.png new file mode 100644 index 000000000..924091889 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2881.png differ diff --git a/fonts/TewiFontOutlineAlt/2882.png b/fonts/TewiFontOutlineAlt/2882.png new file mode 100644 index 000000000..b7e8b2efa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2882.png differ diff --git a/fonts/TewiFontOutlineAlt/2883.png b/fonts/TewiFontOutlineAlt/2883.png new file mode 100644 index 000000000..ccd4d7acc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2883.png differ diff --git a/fonts/TewiFontOutlineAlt/2884.png b/fonts/TewiFontOutlineAlt/2884.png new file mode 100644 index 000000000..07ab7d8d8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2884.png differ diff --git a/fonts/TewiFontOutlineAlt/2885.png b/fonts/TewiFontOutlineAlt/2885.png new file mode 100644 index 000000000..269922f82 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2885.png differ diff --git a/fonts/TewiFontOutlineAlt/2886.png b/fonts/TewiFontOutlineAlt/2886.png new file mode 100644 index 000000000..fa53d0213 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2886.png differ diff --git a/fonts/TewiFontOutlineAlt/2887.png b/fonts/TewiFontOutlineAlt/2887.png new file mode 100644 index 000000000..cf660b71b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2887.png differ diff --git a/fonts/TewiFontOutlineAlt/2888.png b/fonts/TewiFontOutlineAlt/2888.png new file mode 100644 index 000000000..1e4641402 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2888.png differ diff --git a/fonts/TewiFontOutlineAlt/2889.png b/fonts/TewiFontOutlineAlt/2889.png new file mode 100644 index 000000000..534093e05 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2889.png differ diff --git a/fonts/TewiFontOutlineAlt/288A.png b/fonts/TewiFontOutlineAlt/288A.png new file mode 100644 index 000000000..1749fa003 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/288A.png differ diff --git a/fonts/TewiFontOutlineAlt/288B.png b/fonts/TewiFontOutlineAlt/288B.png new file mode 100644 index 000000000..eddfbbcc3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/288B.png differ diff --git a/fonts/TewiFontOutlineAlt/288C.png b/fonts/TewiFontOutlineAlt/288C.png new file mode 100644 index 000000000..cce01ccb3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/288C.png differ diff --git a/fonts/TewiFontOutlineAlt/288D.png b/fonts/TewiFontOutlineAlt/288D.png new file mode 100644 index 000000000..d375ffa2f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/288D.png differ diff --git a/fonts/TewiFontOutlineAlt/288E.png b/fonts/TewiFontOutlineAlt/288E.png new file mode 100644 index 000000000..57b6e4b4c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/288E.png differ diff --git a/fonts/TewiFontOutlineAlt/288F.png b/fonts/TewiFontOutlineAlt/288F.png new file mode 100644 index 000000000..35be93e6f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/288F.png differ diff --git a/fonts/TewiFontOutlineAlt/2890.png b/fonts/TewiFontOutlineAlt/2890.png new file mode 100644 index 000000000..b00dfaaa5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2890.png differ diff --git a/fonts/TewiFontOutlineAlt/2891.png b/fonts/TewiFontOutlineAlt/2891.png new file mode 100644 index 000000000..0dc166340 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2891.png differ diff --git a/fonts/TewiFontOutlineAlt/2892.png b/fonts/TewiFontOutlineAlt/2892.png new file mode 100644 index 000000000..d228623cd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2892.png differ diff --git a/fonts/TewiFontOutlineAlt/2893.png b/fonts/TewiFontOutlineAlt/2893.png new file mode 100644 index 000000000..870db1a11 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2893.png differ diff --git a/fonts/TewiFontOutlineAlt/2894.png b/fonts/TewiFontOutlineAlt/2894.png new file mode 100644 index 000000000..13e19a0e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2894.png differ diff --git a/fonts/TewiFontOutlineAlt/2895.png b/fonts/TewiFontOutlineAlt/2895.png new file mode 100644 index 000000000..41c9fd5d3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2895.png differ diff --git a/fonts/TewiFontOutlineAlt/2896.png b/fonts/TewiFontOutlineAlt/2896.png new file mode 100644 index 000000000..17c0297a5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2896.png differ diff --git a/fonts/TewiFontOutlineAlt/2897.png b/fonts/TewiFontOutlineAlt/2897.png new file mode 100644 index 000000000..b6e7bb358 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2897.png differ diff --git a/fonts/TewiFontOutlineAlt/2898.png b/fonts/TewiFontOutlineAlt/2898.png new file mode 100644 index 000000000..37cd0974f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2898.png differ diff --git a/fonts/TewiFontOutlineAlt/2899.png b/fonts/TewiFontOutlineAlt/2899.png new file mode 100644 index 000000000..5bdc906aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2899.png differ diff --git a/fonts/TewiFontOutlineAlt/289A.png b/fonts/TewiFontOutlineAlt/289A.png new file mode 100644 index 000000000..66f21d696 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/289A.png differ diff --git a/fonts/TewiFontOutlineAlt/289B.png b/fonts/TewiFontOutlineAlt/289B.png new file mode 100644 index 000000000..bd512e226 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/289B.png differ diff --git a/fonts/TewiFontOutlineAlt/289C.png b/fonts/TewiFontOutlineAlt/289C.png new file mode 100644 index 000000000..f79471a07 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/289C.png differ diff --git a/fonts/TewiFontOutlineAlt/289D.png b/fonts/TewiFontOutlineAlt/289D.png new file mode 100644 index 000000000..cdaaf1cfc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/289D.png differ diff --git a/fonts/TewiFontOutlineAlt/289E.png b/fonts/TewiFontOutlineAlt/289E.png new file mode 100644 index 000000000..36261e623 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/289E.png differ diff --git a/fonts/TewiFontOutlineAlt/289F.png b/fonts/TewiFontOutlineAlt/289F.png new file mode 100644 index 000000000..218566ca1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/289F.png differ diff --git a/fonts/TewiFontOutlineAlt/28A0.png b/fonts/TewiFontOutlineAlt/28A0.png new file mode 100644 index 000000000..7c5664af3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A0.png differ diff --git a/fonts/TewiFontOutlineAlt/28A1.png b/fonts/TewiFontOutlineAlt/28A1.png new file mode 100644 index 000000000..f48ca06a0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A1.png differ diff --git a/fonts/TewiFontOutlineAlt/28A2.png b/fonts/TewiFontOutlineAlt/28A2.png new file mode 100644 index 000000000..33bd7664a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A2.png differ diff --git a/fonts/TewiFontOutlineAlt/28A3.png b/fonts/TewiFontOutlineAlt/28A3.png new file mode 100644 index 000000000..3b86f74f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A3.png differ diff --git a/fonts/TewiFontOutlineAlt/28A4.png b/fonts/TewiFontOutlineAlt/28A4.png new file mode 100644 index 000000000..444f9d1ca Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A4.png differ diff --git a/fonts/TewiFontOutlineAlt/28A5.png b/fonts/TewiFontOutlineAlt/28A5.png new file mode 100644 index 000000000..ab9d111a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A5.png differ diff --git a/fonts/TewiFontOutlineAlt/28A6.png b/fonts/TewiFontOutlineAlt/28A6.png new file mode 100644 index 000000000..3114f2dab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A6.png differ diff --git a/fonts/TewiFontOutlineAlt/28A7.png b/fonts/TewiFontOutlineAlt/28A7.png new file mode 100644 index 000000000..4dab85672 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A7.png differ diff --git a/fonts/TewiFontOutlineAlt/28A8.png b/fonts/TewiFontOutlineAlt/28A8.png new file mode 100644 index 000000000..90e86f01a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A8.png differ diff --git a/fonts/TewiFontOutlineAlt/28A9.png b/fonts/TewiFontOutlineAlt/28A9.png new file mode 100644 index 000000000..914f989c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28A9.png differ diff --git a/fonts/TewiFontOutlineAlt/28AA.png b/fonts/TewiFontOutlineAlt/28AA.png new file mode 100644 index 000000000..9dbd79acc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28AA.png differ diff --git a/fonts/TewiFontOutlineAlt/28AB.png b/fonts/TewiFontOutlineAlt/28AB.png new file mode 100644 index 000000000..c7198af37 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28AB.png differ diff --git a/fonts/TewiFontOutlineAlt/28AC.png b/fonts/TewiFontOutlineAlt/28AC.png new file mode 100644 index 000000000..512ed5628 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28AC.png differ diff --git a/fonts/TewiFontOutlineAlt/28AD.png b/fonts/TewiFontOutlineAlt/28AD.png new file mode 100644 index 000000000..34987a29f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28AD.png differ diff --git a/fonts/TewiFontOutlineAlt/28AE.png b/fonts/TewiFontOutlineAlt/28AE.png new file mode 100644 index 000000000..1d940cc89 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28AE.png differ diff --git a/fonts/TewiFontOutlineAlt/28AF.png b/fonts/TewiFontOutlineAlt/28AF.png new file mode 100644 index 000000000..713477485 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28AF.png differ diff --git a/fonts/TewiFontOutlineAlt/28B0.png b/fonts/TewiFontOutlineAlt/28B0.png new file mode 100644 index 000000000..159ccac75 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B0.png differ diff --git a/fonts/TewiFontOutlineAlt/28B1.png b/fonts/TewiFontOutlineAlt/28B1.png new file mode 100644 index 000000000..1abf89473 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B1.png differ diff --git a/fonts/TewiFontOutlineAlt/28B2.png b/fonts/TewiFontOutlineAlt/28B2.png new file mode 100644 index 000000000..447a50732 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B2.png differ diff --git a/fonts/TewiFontOutlineAlt/28B3.png b/fonts/TewiFontOutlineAlt/28B3.png new file mode 100644 index 000000000..27c1c5c0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B3.png differ diff --git a/fonts/TewiFontOutlineAlt/28B4.png b/fonts/TewiFontOutlineAlt/28B4.png new file mode 100644 index 000000000..8a54acf93 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B4.png differ diff --git a/fonts/TewiFontOutlineAlt/28B5.png b/fonts/TewiFontOutlineAlt/28B5.png new file mode 100644 index 000000000..6e19907be Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B5.png differ diff --git a/fonts/TewiFontOutlineAlt/28B6.png b/fonts/TewiFontOutlineAlt/28B6.png new file mode 100644 index 000000000..12bd3a8a5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B6.png differ diff --git a/fonts/TewiFontOutlineAlt/28B7.png b/fonts/TewiFontOutlineAlt/28B7.png new file mode 100644 index 000000000..e96414bad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B7.png differ diff --git a/fonts/TewiFontOutlineAlt/28B8.png b/fonts/TewiFontOutlineAlt/28B8.png new file mode 100644 index 000000000..42431bf04 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B8.png differ diff --git a/fonts/TewiFontOutlineAlt/28B9.png b/fonts/TewiFontOutlineAlt/28B9.png new file mode 100644 index 000000000..46452162b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28B9.png differ diff --git a/fonts/TewiFontOutlineAlt/28BA.png b/fonts/TewiFontOutlineAlt/28BA.png new file mode 100644 index 000000000..50fb8436c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28BA.png differ diff --git a/fonts/TewiFontOutlineAlt/28BB.png b/fonts/TewiFontOutlineAlt/28BB.png new file mode 100644 index 000000000..6b87e1e83 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28BB.png differ diff --git a/fonts/TewiFontOutlineAlt/28BC.png b/fonts/TewiFontOutlineAlt/28BC.png new file mode 100644 index 000000000..ff724df36 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28BC.png differ diff --git a/fonts/TewiFontOutlineAlt/28BD.png b/fonts/TewiFontOutlineAlt/28BD.png new file mode 100644 index 000000000..efad8c942 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28BD.png differ diff --git a/fonts/TewiFontOutlineAlt/28BE.png b/fonts/TewiFontOutlineAlt/28BE.png new file mode 100644 index 000000000..ff724df36 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28BE.png differ diff --git a/fonts/TewiFontOutlineAlt/28BF.png b/fonts/TewiFontOutlineAlt/28BF.png new file mode 100644 index 000000000..a5725858a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28BF.png differ diff --git a/fonts/TewiFontOutlineAlt/28C0.png b/fonts/TewiFontOutlineAlt/28C0.png new file mode 100644 index 000000000..9f69f9f57 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C0.png differ diff --git a/fonts/TewiFontOutlineAlt/28C1.png b/fonts/TewiFontOutlineAlt/28C1.png new file mode 100644 index 000000000..2320c1e5d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C1.png differ diff --git a/fonts/TewiFontOutlineAlt/28C2.png b/fonts/TewiFontOutlineAlt/28C2.png new file mode 100644 index 000000000..e4ca4b3f6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C2.png differ diff --git a/fonts/TewiFontOutlineAlt/28C3.png b/fonts/TewiFontOutlineAlt/28C3.png new file mode 100644 index 000000000..21b454944 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C3.png differ diff --git a/fonts/TewiFontOutlineAlt/28C4.png b/fonts/TewiFontOutlineAlt/28C4.png new file mode 100644 index 000000000..6d2a661ce Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C4.png differ diff --git a/fonts/TewiFontOutlineAlt/28C5.png b/fonts/TewiFontOutlineAlt/28C5.png new file mode 100644 index 000000000..af0449721 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C5.png differ diff --git a/fonts/TewiFontOutlineAlt/28C6.png b/fonts/TewiFontOutlineAlt/28C6.png new file mode 100644 index 000000000..a14e53040 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C6.png differ diff --git a/fonts/TewiFontOutlineAlt/28C7.png b/fonts/TewiFontOutlineAlt/28C7.png new file mode 100644 index 000000000..7e45d7131 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C7.png differ diff --git a/fonts/TewiFontOutlineAlt/28C8.png b/fonts/TewiFontOutlineAlt/28C8.png new file mode 100644 index 000000000..d9a7849a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C8.png differ diff --git a/fonts/TewiFontOutlineAlt/28C9.png b/fonts/TewiFontOutlineAlt/28C9.png new file mode 100644 index 000000000..cf6a28ddb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28C9.png differ diff --git a/fonts/TewiFontOutlineAlt/28CA.png b/fonts/TewiFontOutlineAlt/28CA.png new file mode 100644 index 000000000..b7a7a2d70 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28CA.png differ diff --git a/fonts/TewiFontOutlineAlt/28CB.png b/fonts/TewiFontOutlineAlt/28CB.png new file mode 100644 index 000000000..a3ef06d4e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28CB.png differ diff --git a/fonts/TewiFontOutlineAlt/28CC.png b/fonts/TewiFontOutlineAlt/28CC.png new file mode 100644 index 000000000..d29e87fa5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28CC.png differ diff --git a/fonts/TewiFontOutlineAlt/28CD.png b/fonts/TewiFontOutlineAlt/28CD.png new file mode 100644 index 000000000..7aa035522 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28CD.png differ diff --git a/fonts/TewiFontOutlineAlt/28CE.png b/fonts/TewiFontOutlineAlt/28CE.png new file mode 100644 index 000000000..dfdc6f491 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28CE.png differ diff --git a/fonts/TewiFontOutlineAlt/28CF.png b/fonts/TewiFontOutlineAlt/28CF.png new file mode 100644 index 000000000..9fe6c5016 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28CF.png differ diff --git a/fonts/TewiFontOutlineAlt/28D0.png b/fonts/TewiFontOutlineAlt/28D0.png new file mode 100644 index 000000000..87a54fdb9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D0.png differ diff --git a/fonts/TewiFontOutlineAlt/28D1.png b/fonts/TewiFontOutlineAlt/28D1.png new file mode 100644 index 000000000..926a85397 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D1.png differ diff --git a/fonts/TewiFontOutlineAlt/28D2.png b/fonts/TewiFontOutlineAlt/28D2.png new file mode 100644 index 000000000..88ba8cf0d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D2.png differ diff --git a/fonts/TewiFontOutlineAlt/28D3.png b/fonts/TewiFontOutlineAlt/28D3.png new file mode 100644 index 000000000..aaee725a1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D3.png differ diff --git a/fonts/TewiFontOutlineAlt/28D4.png b/fonts/TewiFontOutlineAlt/28D4.png new file mode 100644 index 000000000..2562dcf91 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D4.png differ diff --git a/fonts/TewiFontOutlineAlt/28D5.png b/fonts/TewiFontOutlineAlt/28D5.png new file mode 100644 index 000000000..f46903654 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D5.png differ diff --git a/fonts/TewiFontOutlineAlt/28D6.png b/fonts/TewiFontOutlineAlt/28D6.png new file mode 100644 index 000000000..c79e50203 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D6.png differ diff --git a/fonts/TewiFontOutlineAlt/28D7.png b/fonts/TewiFontOutlineAlt/28D7.png new file mode 100644 index 000000000..23913c95e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D7.png differ diff --git a/fonts/TewiFontOutlineAlt/28D8.png b/fonts/TewiFontOutlineAlt/28D8.png new file mode 100644 index 000000000..faf3f96e0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D8.png differ diff --git a/fonts/TewiFontOutlineAlt/28D9.png b/fonts/TewiFontOutlineAlt/28D9.png new file mode 100644 index 000000000..ea6b6ea93 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28D9.png differ diff --git a/fonts/TewiFontOutlineAlt/28DA.png b/fonts/TewiFontOutlineAlt/28DA.png new file mode 100644 index 000000000..a3fa14de9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28DA.png differ diff --git a/fonts/TewiFontOutlineAlt/28DB.png b/fonts/TewiFontOutlineAlt/28DB.png new file mode 100644 index 000000000..527bf033a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28DB.png differ diff --git a/fonts/TewiFontOutlineAlt/28DC.png b/fonts/TewiFontOutlineAlt/28DC.png new file mode 100644 index 000000000..d55eceb57 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28DC.png differ diff --git a/fonts/TewiFontOutlineAlt/28DD.png b/fonts/TewiFontOutlineAlt/28DD.png new file mode 100644 index 000000000..b98a83901 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28DD.png differ diff --git a/fonts/TewiFontOutlineAlt/28DE.png b/fonts/TewiFontOutlineAlt/28DE.png new file mode 100644 index 000000000..df38947fe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28DE.png differ diff --git a/fonts/TewiFontOutlineAlt/28DF.png b/fonts/TewiFontOutlineAlt/28DF.png new file mode 100644 index 000000000..0aa03ad40 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28DF.png differ diff --git a/fonts/TewiFontOutlineAlt/28E0.png b/fonts/TewiFontOutlineAlt/28E0.png new file mode 100644 index 000000000..47033736d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E0.png differ diff --git a/fonts/TewiFontOutlineAlt/28E1.png b/fonts/TewiFontOutlineAlt/28E1.png new file mode 100644 index 000000000..4baf07ce2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E1.png differ diff --git a/fonts/TewiFontOutlineAlt/28E2.png b/fonts/TewiFontOutlineAlt/28E2.png new file mode 100644 index 000000000..3345f7165 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E2.png differ diff --git a/fonts/TewiFontOutlineAlt/28E3.png b/fonts/TewiFontOutlineAlt/28E3.png new file mode 100644 index 000000000..ec83da0c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E3.png differ diff --git a/fonts/TewiFontOutlineAlt/28E4.png b/fonts/TewiFontOutlineAlt/28E4.png new file mode 100644 index 000000000..d3561c366 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E4.png differ diff --git a/fonts/TewiFontOutlineAlt/28E5.png b/fonts/TewiFontOutlineAlt/28E5.png new file mode 100644 index 000000000..e4b32fe4d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E5.png differ diff --git a/fonts/TewiFontOutlineAlt/28E6.png b/fonts/TewiFontOutlineAlt/28E6.png new file mode 100644 index 000000000..b2e534b7f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E6.png differ diff --git a/fonts/TewiFontOutlineAlt/28E7.png b/fonts/TewiFontOutlineAlt/28E7.png new file mode 100644 index 000000000..8619458bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E7.png differ diff --git a/fonts/TewiFontOutlineAlt/28E8.png b/fonts/TewiFontOutlineAlt/28E8.png new file mode 100644 index 000000000..2c97687e0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E8.png differ diff --git a/fonts/TewiFontOutlineAlt/28E9.png b/fonts/TewiFontOutlineAlt/28E9.png new file mode 100644 index 000000000..8c21b4fb0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28E9.png differ diff --git a/fonts/TewiFontOutlineAlt/28EA.png b/fonts/TewiFontOutlineAlt/28EA.png new file mode 100644 index 000000000..aec52945a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28EA.png differ diff --git a/fonts/TewiFontOutlineAlt/28EB.png b/fonts/TewiFontOutlineAlt/28EB.png new file mode 100644 index 000000000..a114c8ed4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28EB.png differ diff --git a/fonts/TewiFontOutlineAlt/28EC.png b/fonts/TewiFontOutlineAlt/28EC.png new file mode 100644 index 000000000..d6ccf3e6a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28EC.png differ diff --git a/fonts/TewiFontOutlineAlt/28ED.png b/fonts/TewiFontOutlineAlt/28ED.png new file mode 100644 index 000000000..8335aa80e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28ED.png differ diff --git a/fonts/TewiFontOutlineAlt/28EE.png b/fonts/TewiFontOutlineAlt/28EE.png new file mode 100644 index 000000000..35eb0dffd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28EE.png differ diff --git a/fonts/TewiFontOutlineAlt/28EF.png b/fonts/TewiFontOutlineAlt/28EF.png new file mode 100644 index 000000000..6ee769d95 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28EF.png differ diff --git a/fonts/TewiFontOutlineAlt/28F0.png b/fonts/TewiFontOutlineAlt/28F0.png new file mode 100644 index 000000000..854bbd5df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F0.png differ diff --git a/fonts/TewiFontOutlineAlt/28F1.png b/fonts/TewiFontOutlineAlt/28F1.png new file mode 100644 index 000000000..8840a6306 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F1.png differ diff --git a/fonts/TewiFontOutlineAlt/28F2.png b/fonts/TewiFontOutlineAlt/28F2.png new file mode 100644 index 000000000..74909dd9c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F2.png differ diff --git a/fonts/TewiFontOutlineAlt/28F3.png b/fonts/TewiFontOutlineAlt/28F3.png new file mode 100644 index 000000000..1aac65a8a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F3.png differ diff --git a/fonts/TewiFontOutlineAlt/28F4.png b/fonts/TewiFontOutlineAlt/28F4.png new file mode 100644 index 000000000..5cd7536a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F4.png differ diff --git a/fonts/TewiFontOutlineAlt/28F5.png b/fonts/TewiFontOutlineAlt/28F5.png new file mode 100644 index 000000000..0cff10a4d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F5.png differ diff --git a/fonts/TewiFontOutlineAlt/28F6.png b/fonts/TewiFontOutlineAlt/28F6.png new file mode 100644 index 000000000..6971332f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F6.png differ diff --git a/fonts/TewiFontOutlineAlt/28F7.png b/fonts/TewiFontOutlineAlt/28F7.png new file mode 100644 index 000000000..5c96a50a0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F7.png differ diff --git a/fonts/TewiFontOutlineAlt/28F8.png b/fonts/TewiFontOutlineAlt/28F8.png new file mode 100644 index 000000000..e2d2a546f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F8.png differ diff --git a/fonts/TewiFontOutlineAlt/28F9.png b/fonts/TewiFontOutlineAlt/28F9.png new file mode 100644 index 000000000..e69c42983 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28F9.png differ diff --git a/fonts/TewiFontOutlineAlt/28FA.png b/fonts/TewiFontOutlineAlt/28FA.png new file mode 100644 index 000000000..6d39eb53c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28FA.png differ diff --git a/fonts/TewiFontOutlineAlt/28FB.png b/fonts/TewiFontOutlineAlt/28FB.png new file mode 100644 index 000000000..a45bb9355 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28FB.png differ diff --git a/fonts/TewiFontOutlineAlt/28FC.png b/fonts/TewiFontOutlineAlt/28FC.png new file mode 100644 index 000000000..890ecd129 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28FC.png differ diff --git a/fonts/TewiFontOutlineAlt/28FD.png b/fonts/TewiFontOutlineAlt/28FD.png new file mode 100644 index 000000000..315eb3ba3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28FD.png differ diff --git a/fonts/TewiFontOutlineAlt/28FE.png b/fonts/TewiFontOutlineAlt/28FE.png new file mode 100644 index 000000000..56eb56e48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28FE.png differ diff --git a/fonts/TewiFontOutlineAlt/28FF.png b/fonts/TewiFontOutlineAlt/28FF.png new file mode 100644 index 000000000..d4fb20286 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/28FF.png differ diff --git a/fonts/TewiFontOutlineAlt/2902.png b/fonts/TewiFontOutlineAlt/2902.png new file mode 100644 index 000000000..588a85b4f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2902.png differ diff --git a/fonts/TewiFontOutlineAlt/2903.png b/fonts/TewiFontOutlineAlt/2903.png new file mode 100644 index 000000000..385f388e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2903.png differ diff --git a/fonts/TewiFontOutlineAlt/2906.png b/fonts/TewiFontOutlineAlt/2906.png new file mode 100644 index 000000000..892c9b38f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2906.png differ diff --git a/fonts/TewiFontOutlineAlt/2907.png b/fonts/TewiFontOutlineAlt/2907.png new file mode 100644 index 000000000..1618c0323 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2907.png differ diff --git a/fonts/TewiFontOutlineAlt/2908.png b/fonts/TewiFontOutlineAlt/2908.png new file mode 100644 index 000000000..3dfd8327f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2908.png differ diff --git a/fonts/TewiFontOutlineAlt/2909.png b/fonts/TewiFontOutlineAlt/2909.png new file mode 100644 index 000000000..e8cc8faf8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2909.png differ diff --git a/fonts/TewiFontOutlineAlt/290C.png b/fonts/TewiFontOutlineAlt/290C.png new file mode 100644 index 000000000..11ba99f33 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/290C.png differ diff --git a/fonts/TewiFontOutlineAlt/290D.png b/fonts/TewiFontOutlineAlt/290D.png new file mode 100644 index 000000000..6cfbf2e8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/290D.png differ diff --git a/fonts/TewiFontOutlineAlt/290E.png b/fonts/TewiFontOutlineAlt/290E.png new file mode 100644 index 000000000..00122ed3d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/290E.png differ diff --git a/fonts/TewiFontOutlineAlt/290F.png b/fonts/TewiFontOutlineAlt/290F.png new file mode 100644 index 000000000..2333dce7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/290F.png differ diff --git a/fonts/TewiFontOutlineAlt/2912.png b/fonts/TewiFontOutlineAlt/2912.png new file mode 100644 index 000000000..b9914226c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2912.png differ diff --git a/fonts/TewiFontOutlineAlt/2913.png b/fonts/TewiFontOutlineAlt/2913.png new file mode 100644 index 000000000..62b604e09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2913.png differ diff --git a/fonts/TewiFontOutlineAlt/2919.png b/fonts/TewiFontOutlineAlt/2919.png new file mode 100644 index 000000000..7d68f9582 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2919.png differ diff --git a/fonts/TewiFontOutlineAlt/291A.png b/fonts/TewiFontOutlineAlt/291A.png new file mode 100644 index 000000000..7f8ec5fa1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/291A.png differ diff --git a/fonts/TewiFontOutlineAlt/291B.png b/fonts/TewiFontOutlineAlt/291B.png new file mode 100644 index 000000000..87a47b66b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/291B.png differ diff --git a/fonts/TewiFontOutlineAlt/291C.png b/fonts/TewiFontOutlineAlt/291C.png new file mode 100644 index 000000000..792efb0c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/291C.png differ diff --git a/fonts/TewiFontOutlineAlt/291D.png b/fonts/TewiFontOutlineAlt/291D.png new file mode 100644 index 000000000..794bfbbd0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/291D.png differ diff --git a/fonts/TewiFontOutlineAlt/291E.png b/fonts/TewiFontOutlineAlt/291E.png new file mode 100644 index 000000000..3bb271fcb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/291E.png differ diff --git a/fonts/TewiFontOutlineAlt/2921.png b/fonts/TewiFontOutlineAlt/2921.png new file mode 100644 index 000000000..ffc281e67 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2921.png differ diff --git a/fonts/TewiFontOutlineAlt/2922.png b/fonts/TewiFontOutlineAlt/2922.png new file mode 100644 index 000000000..d73fe273f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2922.png differ diff --git a/fonts/TewiFontOutlineAlt/2923.png b/fonts/TewiFontOutlineAlt/2923.png new file mode 100644 index 000000000..74136956a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2923.png differ diff --git a/fonts/TewiFontOutlineAlt/2924.png b/fonts/TewiFontOutlineAlt/2924.png new file mode 100644 index 000000000..6403336db Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2924.png differ diff --git a/fonts/TewiFontOutlineAlt/2925.png b/fonts/TewiFontOutlineAlt/2925.png new file mode 100644 index 000000000..aca067659 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2925.png differ diff --git a/fonts/TewiFontOutlineAlt/2926.png b/fonts/TewiFontOutlineAlt/2926.png new file mode 100644 index 000000000..22255fba8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2926.png differ diff --git a/fonts/TewiFontOutlineAlt/2933.png b/fonts/TewiFontOutlineAlt/2933.png new file mode 100644 index 000000000..aeeca7dc1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2933.png differ diff --git a/fonts/TewiFontOutlineAlt/2934.png b/fonts/TewiFontOutlineAlt/2934.png new file mode 100644 index 000000000..6d397f26f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2934.png differ diff --git a/fonts/TewiFontOutlineAlt/2935.png b/fonts/TewiFontOutlineAlt/2935.png new file mode 100644 index 000000000..561189d0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2935.png differ diff --git a/fonts/TewiFontOutlineAlt/2936.png b/fonts/TewiFontOutlineAlt/2936.png new file mode 100644 index 000000000..10c5b9c43 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2936.png differ diff --git a/fonts/TewiFontOutlineAlt/2937.png b/fonts/TewiFontOutlineAlt/2937.png new file mode 100644 index 000000000..4d48311df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2937.png differ diff --git a/fonts/TewiFontOutlineAlt/2938.png b/fonts/TewiFontOutlineAlt/2938.png new file mode 100644 index 000000000..2d8bbabf6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2938.png differ diff --git a/fonts/TewiFontOutlineAlt/2939.png b/fonts/TewiFontOutlineAlt/2939.png new file mode 100644 index 000000000..1f9002143 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2939.png differ diff --git a/fonts/TewiFontOutlineAlt/293A.png b/fonts/TewiFontOutlineAlt/293A.png new file mode 100644 index 000000000..caf6d62ea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/293A.png differ diff --git a/fonts/TewiFontOutlineAlt/293B.png b/fonts/TewiFontOutlineAlt/293B.png new file mode 100644 index 000000000..2648083c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/293B.png differ diff --git a/fonts/TewiFontOutlineAlt/293C.png b/fonts/TewiFontOutlineAlt/293C.png new file mode 100644 index 000000000..47208400f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/293C.png differ diff --git a/fonts/TewiFontOutlineAlt/293D.png b/fonts/TewiFontOutlineAlt/293D.png new file mode 100644 index 000000000..46cea6a2a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/293D.png differ diff --git a/fonts/TewiFontOutlineAlt/293E.png b/fonts/TewiFontOutlineAlt/293E.png new file mode 100644 index 000000000..6bbbd616a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/293E.png differ diff --git a/fonts/TewiFontOutlineAlt/293F.png b/fonts/TewiFontOutlineAlt/293F.png new file mode 100644 index 000000000..5aa38a8fa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/293F.png differ diff --git a/fonts/TewiFontOutlineAlt/2940.png b/fonts/TewiFontOutlineAlt/2940.png new file mode 100644 index 000000000..cce5a344d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2940.png differ diff --git a/fonts/TewiFontOutlineAlt/2941.png b/fonts/TewiFontOutlineAlt/2941.png new file mode 100644 index 000000000..d136d12f8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2941.png differ diff --git a/fonts/TewiFontOutlineAlt/2942.png b/fonts/TewiFontOutlineAlt/2942.png new file mode 100644 index 000000000..e432a578c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2942.png differ diff --git a/fonts/TewiFontOutlineAlt/2943.png b/fonts/TewiFontOutlineAlt/2943.png new file mode 100644 index 000000000..840fd42a0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2943.png differ diff --git a/fonts/TewiFontOutlineAlt/2944.png b/fonts/TewiFontOutlineAlt/2944.png new file mode 100644 index 000000000..28e0c73b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2944.png differ diff --git a/fonts/TewiFontOutlineAlt/2945.png b/fonts/TewiFontOutlineAlt/2945.png new file mode 100644 index 000000000..a4764c3bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2945.png differ diff --git a/fonts/TewiFontOutlineAlt/2946.png b/fonts/TewiFontOutlineAlt/2946.png new file mode 100644 index 000000000..0b6224544 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2946.png differ diff --git a/fonts/TewiFontOutlineAlt/2949.png b/fonts/TewiFontOutlineAlt/2949.png new file mode 100644 index 000000000..b54d72663 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2949.png differ diff --git a/fonts/TewiFontOutlineAlt/294A.png b/fonts/TewiFontOutlineAlt/294A.png new file mode 100644 index 000000000..2817c95f0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/294A.png differ diff --git a/fonts/TewiFontOutlineAlt/294B.png b/fonts/TewiFontOutlineAlt/294B.png new file mode 100644 index 000000000..a09a6a3e6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/294B.png differ diff --git a/fonts/TewiFontOutlineAlt/294C.png b/fonts/TewiFontOutlineAlt/294C.png new file mode 100644 index 000000000..3aa4f17c2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/294C.png differ diff --git a/fonts/TewiFontOutlineAlt/294D.png b/fonts/TewiFontOutlineAlt/294D.png new file mode 100644 index 000000000..91b81fc58 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/294D.png differ diff --git a/fonts/TewiFontOutlineAlt/294F.png b/fonts/TewiFontOutlineAlt/294F.png new file mode 100644 index 000000000..23d2546fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/294F.png differ diff --git a/fonts/TewiFontOutlineAlt/2951.png b/fonts/TewiFontOutlineAlt/2951.png new file mode 100644 index 000000000..95038d7fc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2951.png differ diff --git a/fonts/TewiFontOutlineAlt/2952.png b/fonts/TewiFontOutlineAlt/2952.png new file mode 100644 index 000000000..f326f574e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2952.png differ diff --git a/fonts/TewiFontOutlineAlt/2953.png b/fonts/TewiFontOutlineAlt/2953.png new file mode 100644 index 000000000..ec32208a2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2953.png differ diff --git a/fonts/TewiFontOutlineAlt/2954.png b/fonts/TewiFontOutlineAlt/2954.png new file mode 100644 index 000000000..88f6d6f22 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2954.png differ diff --git a/fonts/TewiFontOutlineAlt/2955.png b/fonts/TewiFontOutlineAlt/2955.png new file mode 100644 index 000000000..b13bc7642 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2955.png differ diff --git a/fonts/TewiFontOutlineAlt/2956.png b/fonts/TewiFontOutlineAlt/2956.png new file mode 100644 index 000000000..b0e7ca569 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2956.png differ diff --git a/fonts/TewiFontOutlineAlt/2957.png b/fonts/TewiFontOutlineAlt/2957.png new file mode 100644 index 000000000..2fa376d2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2957.png differ diff --git a/fonts/TewiFontOutlineAlt/2958.png b/fonts/TewiFontOutlineAlt/2958.png new file mode 100644 index 000000000..c4b598548 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2958.png differ diff --git a/fonts/TewiFontOutlineAlt/2959.png b/fonts/TewiFontOutlineAlt/2959.png new file mode 100644 index 000000000..0f540d89f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2959.png differ diff --git a/fonts/TewiFontOutlineAlt/295A.png b/fonts/TewiFontOutlineAlt/295A.png new file mode 100644 index 000000000..991fde342 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/295A.png differ diff --git a/fonts/TewiFontOutlineAlt/295B.png b/fonts/TewiFontOutlineAlt/295B.png new file mode 100644 index 000000000..7e2470ffa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/295B.png differ diff --git a/fonts/TewiFontOutlineAlt/295C.png b/fonts/TewiFontOutlineAlt/295C.png new file mode 100644 index 000000000..b1e033775 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/295C.png differ diff --git a/fonts/TewiFontOutlineAlt/295D.png b/fonts/TewiFontOutlineAlt/295D.png new file mode 100644 index 000000000..8a7096083 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/295D.png differ diff --git a/fonts/TewiFontOutlineAlt/295E.png b/fonts/TewiFontOutlineAlt/295E.png new file mode 100644 index 000000000..beaf4ded9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/295E.png differ diff --git a/fonts/TewiFontOutlineAlt/295F.png b/fonts/TewiFontOutlineAlt/295F.png new file mode 100644 index 000000000..4ca36770c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/295F.png differ diff --git a/fonts/TewiFontOutlineAlt/2960.png b/fonts/TewiFontOutlineAlt/2960.png new file mode 100644 index 000000000..4a36e390c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2960.png differ diff --git a/fonts/TewiFontOutlineAlt/2961.png b/fonts/TewiFontOutlineAlt/2961.png new file mode 100644 index 000000000..b7bc1dfbd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2961.png differ diff --git a/fonts/TewiFontOutlineAlt/2962.png b/fonts/TewiFontOutlineAlt/2962.png new file mode 100644 index 000000000..71d0cb562 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2962.png differ diff --git a/fonts/TewiFontOutlineAlt/2963.png b/fonts/TewiFontOutlineAlt/2963.png new file mode 100644 index 000000000..58af406cc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2963.png differ diff --git a/fonts/TewiFontOutlineAlt/2964.png b/fonts/TewiFontOutlineAlt/2964.png new file mode 100644 index 000000000..f9355aa36 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2964.png differ diff --git a/fonts/TewiFontOutlineAlt/2965.png b/fonts/TewiFontOutlineAlt/2965.png new file mode 100644 index 000000000..14e975b28 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2965.png differ diff --git a/fonts/TewiFontOutlineAlt/2966.png b/fonts/TewiFontOutlineAlt/2966.png new file mode 100644 index 000000000..831647c31 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2966.png differ diff --git a/fonts/TewiFontOutlineAlt/2967.png b/fonts/TewiFontOutlineAlt/2967.png new file mode 100644 index 000000000..d32789cd7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2967.png differ diff --git a/fonts/TewiFontOutlineAlt/2968.png b/fonts/TewiFontOutlineAlt/2968.png new file mode 100644 index 000000000..dea34ba01 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2968.png differ diff --git a/fonts/TewiFontOutlineAlt/2969.png b/fonts/TewiFontOutlineAlt/2969.png new file mode 100644 index 000000000..09e124756 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2969.png differ diff --git a/fonts/TewiFontOutlineAlt/296A.png b/fonts/TewiFontOutlineAlt/296A.png new file mode 100644 index 000000000..d8e0c654e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/296A.png differ diff --git a/fonts/TewiFontOutlineAlt/296B.png b/fonts/TewiFontOutlineAlt/296B.png new file mode 100644 index 000000000..6722c7028 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/296B.png differ diff --git a/fonts/TewiFontOutlineAlt/296C.png b/fonts/TewiFontOutlineAlt/296C.png new file mode 100644 index 000000000..d6618e17e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/296C.png differ diff --git a/fonts/TewiFontOutlineAlt/296D.png b/fonts/TewiFontOutlineAlt/296D.png new file mode 100644 index 000000000..68e9cdff9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/296D.png differ diff --git a/fonts/TewiFontOutlineAlt/296E.png b/fonts/TewiFontOutlineAlt/296E.png new file mode 100644 index 000000000..95c6c695e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/296E.png differ diff --git a/fonts/TewiFontOutlineAlt/296F.png b/fonts/TewiFontOutlineAlt/296F.png new file mode 100644 index 000000000..d1c05cbb0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/296F.png differ diff --git a/fonts/TewiFontOutlineAlt/2970.png b/fonts/TewiFontOutlineAlt/2970.png new file mode 100644 index 000000000..1510c99fe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2970.png differ diff --git a/fonts/TewiFontOutlineAlt/2971.png b/fonts/TewiFontOutlineAlt/2971.png new file mode 100644 index 000000000..03a8d9801 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2971.png differ diff --git a/fonts/TewiFontOutlineAlt/2972.png b/fonts/TewiFontOutlineAlt/2972.png new file mode 100644 index 000000000..7153ae836 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2972.png differ diff --git a/fonts/TewiFontOutlineAlt/2973.png b/fonts/TewiFontOutlineAlt/2973.png new file mode 100644 index 000000000..34035b868 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2973.png differ diff --git a/fonts/TewiFontOutlineAlt/2974.png b/fonts/TewiFontOutlineAlt/2974.png new file mode 100644 index 000000000..3a8a0858f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2974.png differ diff --git a/fonts/TewiFontOutlineAlt/2975.png b/fonts/TewiFontOutlineAlt/2975.png new file mode 100644 index 000000000..a931cdeda Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2975.png differ diff --git a/fonts/TewiFontOutlineAlt/2976.png b/fonts/TewiFontOutlineAlt/2976.png new file mode 100644 index 000000000..9fe4923b7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2976.png differ diff --git a/fonts/TewiFontOutlineAlt/2978.png b/fonts/TewiFontOutlineAlt/2978.png new file mode 100644 index 000000000..e3de6c330 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2978.png differ diff --git a/fonts/TewiFontOutlineAlt/2979.png b/fonts/TewiFontOutlineAlt/2979.png new file mode 100644 index 000000000..f52bd1ef2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2979.png differ diff --git a/fonts/TewiFontOutlineAlt/297A.png b/fonts/TewiFontOutlineAlt/297A.png new file mode 100644 index 000000000..5a21b0a0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/297A.png differ diff --git a/fonts/TewiFontOutlineAlt/297B.png b/fonts/TewiFontOutlineAlt/297B.png new file mode 100644 index 000000000..a7e04fc84 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/297B.png differ diff --git a/fonts/TewiFontOutlineAlt/297C.png b/fonts/TewiFontOutlineAlt/297C.png new file mode 100644 index 000000000..1fa4b6aaa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/297C.png differ diff --git a/fonts/TewiFontOutlineAlt/297D.png b/fonts/TewiFontOutlineAlt/297D.png new file mode 100644 index 000000000..58d40be79 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/297D.png differ diff --git a/fonts/TewiFontOutlineAlt/297E.png b/fonts/TewiFontOutlineAlt/297E.png new file mode 100644 index 000000000..5366c62ab Binary files /dev/null and b/fonts/TewiFontOutlineAlt/297E.png differ diff --git a/fonts/TewiFontOutlineAlt/297F.png b/fonts/TewiFontOutlineAlt/297F.png new file mode 100644 index 000000000..45a698dcc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/297F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B00.png b/fonts/TewiFontOutlineAlt/2B00.png new file mode 100644 index 000000000..3cf880d49 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B00.png differ diff --git a/fonts/TewiFontOutlineAlt/2B01.png b/fonts/TewiFontOutlineAlt/2B01.png new file mode 100644 index 000000000..73a3d16ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B01.png differ diff --git a/fonts/TewiFontOutlineAlt/2B02.png b/fonts/TewiFontOutlineAlt/2B02.png new file mode 100644 index 000000000..42bb5e05f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B02.png differ diff --git a/fonts/TewiFontOutlineAlt/2B03.png b/fonts/TewiFontOutlineAlt/2B03.png new file mode 100644 index 000000000..86de5adad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B03.png differ diff --git a/fonts/TewiFontOutlineAlt/2B05.png b/fonts/TewiFontOutlineAlt/2B05.png new file mode 100644 index 000000000..ff2b5d49f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B05.png differ diff --git a/fonts/TewiFontOutlineAlt/2B06.png b/fonts/TewiFontOutlineAlt/2B06.png new file mode 100644 index 000000000..47605badb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B06.png differ diff --git a/fonts/TewiFontOutlineAlt/2B07.png b/fonts/TewiFontOutlineAlt/2B07.png new file mode 100644 index 000000000..6e2e092fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B07.png differ diff --git a/fonts/TewiFontOutlineAlt/2B08.png b/fonts/TewiFontOutlineAlt/2B08.png new file mode 100644 index 000000000..479d1b375 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B08.png differ diff --git a/fonts/TewiFontOutlineAlt/2B09.png b/fonts/TewiFontOutlineAlt/2B09.png new file mode 100644 index 000000000..152343d92 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B09.png differ diff --git a/fonts/TewiFontOutlineAlt/2B0A.png b/fonts/TewiFontOutlineAlt/2B0A.png new file mode 100644 index 000000000..d647c3c08 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B0A.png differ diff --git a/fonts/TewiFontOutlineAlt/2B0B.png b/fonts/TewiFontOutlineAlt/2B0B.png new file mode 100644 index 000000000..b2be32a62 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B0B.png differ diff --git a/fonts/TewiFontOutlineAlt/2B0D.png b/fonts/TewiFontOutlineAlt/2B0D.png new file mode 100644 index 000000000..4c7804815 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B0D.png differ diff --git a/fonts/TewiFontOutlineAlt/2B0E.png b/fonts/TewiFontOutlineAlt/2B0E.png new file mode 100644 index 000000000..1b05051ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B0E.png differ diff --git a/fonts/TewiFontOutlineAlt/2B0F.png b/fonts/TewiFontOutlineAlt/2B0F.png new file mode 100644 index 000000000..2b7c70be9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B0F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B10.png b/fonts/TewiFontOutlineAlt/2B10.png new file mode 100644 index 000000000..7e93f62f6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B10.png differ diff --git a/fonts/TewiFontOutlineAlt/2B11.png b/fonts/TewiFontOutlineAlt/2B11.png new file mode 100644 index 000000000..27c73ea03 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B11.png differ diff --git a/fonts/TewiFontOutlineAlt/2B12.png b/fonts/TewiFontOutlineAlt/2B12.png new file mode 100644 index 000000000..48d15df92 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B12.png differ diff --git a/fonts/TewiFontOutlineAlt/2B13.png b/fonts/TewiFontOutlineAlt/2B13.png new file mode 100644 index 000000000..cbe566e66 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B13.png differ diff --git a/fonts/TewiFontOutlineAlt/2B14.png b/fonts/TewiFontOutlineAlt/2B14.png new file mode 100644 index 000000000..f3ed29f3a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B14.png differ diff --git a/fonts/TewiFontOutlineAlt/2B15.png b/fonts/TewiFontOutlineAlt/2B15.png new file mode 100644 index 000000000..e053d2e41 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B15.png differ diff --git a/fonts/TewiFontOutlineAlt/2B16.png b/fonts/TewiFontOutlineAlt/2B16.png new file mode 100644 index 000000000..3edb18580 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B16.png differ diff --git a/fonts/TewiFontOutlineAlt/2B17.png b/fonts/TewiFontOutlineAlt/2B17.png new file mode 100644 index 000000000..7608c4f50 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B17.png differ diff --git a/fonts/TewiFontOutlineAlt/2B18.png b/fonts/TewiFontOutlineAlt/2B18.png new file mode 100644 index 000000000..9c9c6504f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B18.png differ diff --git a/fonts/TewiFontOutlineAlt/2B19.png b/fonts/TewiFontOutlineAlt/2B19.png new file mode 100644 index 000000000..79c0302d7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B19.png differ diff --git a/fonts/TewiFontOutlineAlt/2B1A.png b/fonts/TewiFontOutlineAlt/2B1A.png new file mode 100644 index 000000000..8d7b16527 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B1A.png differ diff --git a/fonts/TewiFontOutlineAlt/2B1B.png b/fonts/TewiFontOutlineAlt/2B1B.png new file mode 100644 index 000000000..7912080f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B1B.png differ diff --git a/fonts/TewiFontOutlineAlt/2B1C.png b/fonts/TewiFontOutlineAlt/2B1C.png new file mode 100644 index 000000000..83caea18a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B1C.png differ diff --git a/fonts/TewiFontOutlineAlt/2B1D.png b/fonts/TewiFontOutlineAlt/2B1D.png new file mode 100644 index 000000000..c1a42b742 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B1D.png differ diff --git a/fonts/TewiFontOutlineAlt/2B1E.png b/fonts/TewiFontOutlineAlt/2B1E.png new file mode 100644 index 000000000..8471f78f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B1E.png differ diff --git a/fonts/TewiFontOutlineAlt/2B1F.png b/fonts/TewiFontOutlineAlt/2B1F.png new file mode 100644 index 000000000..9f2907440 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B1F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B20.png b/fonts/TewiFontOutlineAlt/2B20.png new file mode 100644 index 000000000..1783323da Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B20.png differ diff --git a/fonts/TewiFontOutlineAlt/2B21.png b/fonts/TewiFontOutlineAlt/2B21.png new file mode 100644 index 000000000..17b36848f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B21.png differ diff --git a/fonts/TewiFontOutlineAlt/2B22.png b/fonts/TewiFontOutlineAlt/2B22.png new file mode 100644 index 000000000..7fd783e8e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B22.png differ diff --git a/fonts/TewiFontOutlineAlt/2B23.png b/fonts/TewiFontOutlineAlt/2B23.png new file mode 100644 index 000000000..07c32729c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B23.png differ diff --git a/fonts/TewiFontOutlineAlt/2B24.png b/fonts/TewiFontOutlineAlt/2B24.png new file mode 100644 index 000000000..320703b0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B24.png differ diff --git a/fonts/TewiFontOutlineAlt/2B25.png b/fonts/TewiFontOutlineAlt/2B25.png new file mode 100644 index 000000000..c92152c90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B25.png differ diff --git a/fonts/TewiFontOutlineAlt/2B26.png b/fonts/TewiFontOutlineAlt/2B26.png new file mode 100644 index 000000000..ffd5c90d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B26.png differ diff --git a/fonts/TewiFontOutlineAlt/2B27.png b/fonts/TewiFontOutlineAlt/2B27.png new file mode 100644 index 000000000..ceb5acbd3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B27.png differ diff --git a/fonts/TewiFontOutlineAlt/2B28.png b/fonts/TewiFontOutlineAlt/2B28.png new file mode 100644 index 000000000..a4ad4749b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B28.png differ diff --git a/fonts/TewiFontOutlineAlt/2B29.png b/fonts/TewiFontOutlineAlt/2B29.png new file mode 100644 index 000000000..19ccbcf66 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B29.png differ diff --git a/fonts/TewiFontOutlineAlt/2B2A.png b/fonts/TewiFontOutlineAlt/2B2A.png new file mode 100644 index 000000000..85ced32ea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B2A.png differ diff --git a/fonts/TewiFontOutlineAlt/2B2B.png b/fonts/TewiFontOutlineAlt/2B2B.png new file mode 100644 index 000000000..7304ca43f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B2B.png differ diff --git a/fonts/TewiFontOutlineAlt/2B2C.png b/fonts/TewiFontOutlineAlt/2B2C.png new file mode 100644 index 000000000..79ff1e490 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B2C.png differ diff --git a/fonts/TewiFontOutlineAlt/2B2D.png b/fonts/TewiFontOutlineAlt/2B2D.png new file mode 100644 index 000000000..8061d1c0a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B2D.png differ diff --git a/fonts/TewiFontOutlineAlt/2B2E.png b/fonts/TewiFontOutlineAlt/2B2E.png new file mode 100644 index 000000000..3c71d9582 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B2E.png differ diff --git a/fonts/TewiFontOutlineAlt/2B2F.png b/fonts/TewiFontOutlineAlt/2B2F.png new file mode 100644 index 000000000..7354c9e6d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B2F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B30.png b/fonts/TewiFontOutlineAlt/2B30.png new file mode 100644 index 000000000..f037e6b62 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B30.png differ diff --git a/fonts/TewiFontOutlineAlt/2B31.png b/fonts/TewiFontOutlineAlt/2B31.png new file mode 100644 index 000000000..f2463eec2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B31.png differ diff --git a/fonts/TewiFontOutlineAlt/2B32.png b/fonts/TewiFontOutlineAlt/2B32.png new file mode 100644 index 000000000..d0863e69f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B32.png differ diff --git a/fonts/TewiFontOutlineAlt/2B38.png b/fonts/TewiFontOutlineAlt/2B38.png new file mode 100644 index 000000000..00122ed3d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B38.png differ diff --git a/fonts/TewiFontOutlineAlt/2B3F.png b/fonts/TewiFontOutlineAlt/2B3F.png new file mode 100644 index 000000000..434e71a0a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B3F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B40.png b/fonts/TewiFontOutlineAlt/2B40.png new file mode 100644 index 000000000..390caae44 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B40.png differ diff --git a/fonts/TewiFontOutlineAlt/2B41.png b/fonts/TewiFontOutlineAlt/2B41.png new file mode 100644 index 000000000..e649d0ac2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B41.png differ diff --git a/fonts/TewiFontOutlineAlt/2B42.png b/fonts/TewiFontOutlineAlt/2B42.png new file mode 100644 index 000000000..368fca1c3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B42.png differ diff --git a/fonts/TewiFontOutlineAlt/2B43.png b/fonts/TewiFontOutlineAlt/2B43.png new file mode 100644 index 000000000..ed86fae89 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B43.png differ diff --git a/fonts/TewiFontOutlineAlt/2B44.png b/fonts/TewiFontOutlineAlt/2B44.png new file mode 100644 index 000000000..27b867a26 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B44.png differ diff --git a/fonts/TewiFontOutlineAlt/2B45.png b/fonts/TewiFontOutlineAlt/2B45.png new file mode 100644 index 000000000..050b9e694 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B45.png differ diff --git a/fonts/TewiFontOutlineAlt/2B46.png b/fonts/TewiFontOutlineAlt/2B46.png new file mode 100644 index 000000000..800f42cef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B46.png differ diff --git a/fonts/TewiFontOutlineAlt/2B47.png b/fonts/TewiFontOutlineAlt/2B47.png new file mode 100644 index 000000000..45cb9a205 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B47.png differ diff --git a/fonts/TewiFontOutlineAlt/2B48.png b/fonts/TewiFontOutlineAlt/2B48.png new file mode 100644 index 000000000..963c37e36 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B48.png differ diff --git a/fonts/TewiFontOutlineAlt/2B49.png b/fonts/TewiFontOutlineAlt/2B49.png new file mode 100644 index 000000000..e583a0638 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B49.png differ diff --git a/fonts/TewiFontOutlineAlt/2B4A.png b/fonts/TewiFontOutlineAlt/2B4A.png new file mode 100644 index 000000000..15a0b3349 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B4A.png differ diff --git a/fonts/TewiFontOutlineAlt/2B4B.png b/fonts/TewiFontOutlineAlt/2B4B.png new file mode 100644 index 000000000..99d8ccf60 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B4B.png differ diff --git a/fonts/TewiFontOutlineAlt/2B4C.png b/fonts/TewiFontOutlineAlt/2B4C.png new file mode 100644 index 000000000..3674a8285 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B4C.png differ diff --git a/fonts/TewiFontOutlineAlt/2B4D.png b/fonts/TewiFontOutlineAlt/2B4D.png new file mode 100644 index 000000000..e60a61929 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B4D.png differ diff --git a/fonts/TewiFontOutlineAlt/2B4E.png b/fonts/TewiFontOutlineAlt/2B4E.png new file mode 100644 index 000000000..89fda5708 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B4E.png differ diff --git a/fonts/TewiFontOutlineAlt/2B4F.png b/fonts/TewiFontOutlineAlt/2B4F.png new file mode 100644 index 000000000..665771d79 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B4F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B50.png b/fonts/TewiFontOutlineAlt/2B50.png new file mode 100644 index 000000000..b131fc22d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B50.png differ diff --git a/fonts/TewiFontOutlineAlt/2B51.png b/fonts/TewiFontOutlineAlt/2B51.png new file mode 100644 index 000000000..42267b14d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B51.png differ diff --git a/fonts/TewiFontOutlineAlt/2B52.png b/fonts/TewiFontOutlineAlt/2B52.png new file mode 100644 index 000000000..602291965 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B52.png differ diff --git a/fonts/TewiFontOutlineAlt/2B53.png b/fonts/TewiFontOutlineAlt/2B53.png new file mode 100644 index 000000000..c75bd0251 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B53.png differ diff --git a/fonts/TewiFontOutlineAlt/2B54.png b/fonts/TewiFontOutlineAlt/2B54.png new file mode 100644 index 000000000..b43d68e94 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B54.png differ diff --git a/fonts/TewiFontOutlineAlt/2B55.png b/fonts/TewiFontOutlineAlt/2B55.png new file mode 100644 index 000000000..60f385a41 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B55.png differ diff --git a/fonts/TewiFontOutlineAlt/2B58.png b/fonts/TewiFontOutlineAlt/2B58.png new file mode 100644 index 000000000..60f385a41 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B58.png differ diff --git a/fonts/TewiFontOutlineAlt/2B5A.png b/fonts/TewiFontOutlineAlt/2B5A.png new file mode 100644 index 000000000..016fdc829 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B5A.png differ diff --git a/fonts/TewiFontOutlineAlt/2B5B.png b/fonts/TewiFontOutlineAlt/2B5B.png new file mode 100644 index 000000000..65c2fae6e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B5B.png differ diff --git a/fonts/TewiFontOutlineAlt/2B5C.png b/fonts/TewiFontOutlineAlt/2B5C.png new file mode 100644 index 000000000..88e58a600 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B5C.png differ diff --git a/fonts/TewiFontOutlineAlt/2B5D.png b/fonts/TewiFontOutlineAlt/2B5D.png new file mode 100644 index 000000000..8de33a2a1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B5D.png differ diff --git a/fonts/TewiFontOutlineAlt/2B5E.png b/fonts/TewiFontOutlineAlt/2B5E.png new file mode 100644 index 000000000..0b8c83d67 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B5E.png differ diff --git a/fonts/TewiFontOutlineAlt/2B5F.png b/fonts/TewiFontOutlineAlt/2B5F.png new file mode 100644 index 000000000..f690a9725 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B5F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B60.png b/fonts/TewiFontOutlineAlt/2B60.png new file mode 100644 index 000000000..b12fb1173 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B60.png differ diff --git a/fonts/TewiFontOutlineAlt/2B61.png b/fonts/TewiFontOutlineAlt/2B61.png new file mode 100644 index 000000000..d25a7fcb1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B61.png differ diff --git a/fonts/TewiFontOutlineAlt/2B62.png b/fonts/TewiFontOutlineAlt/2B62.png new file mode 100644 index 000000000..4491289b9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B62.png differ diff --git a/fonts/TewiFontOutlineAlt/2B63.png b/fonts/TewiFontOutlineAlt/2B63.png new file mode 100644 index 000000000..a0efa5904 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B63.png differ diff --git a/fonts/TewiFontOutlineAlt/2B65.png b/fonts/TewiFontOutlineAlt/2B65.png new file mode 100644 index 000000000..97038c53e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B65.png differ diff --git a/fonts/TewiFontOutlineAlt/2B66.png b/fonts/TewiFontOutlineAlt/2B66.png new file mode 100644 index 000000000..b3788b2cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B66.png differ diff --git a/fonts/TewiFontOutlineAlt/2B67.png b/fonts/TewiFontOutlineAlt/2B67.png new file mode 100644 index 000000000..d9c4f25dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B67.png differ diff --git a/fonts/TewiFontOutlineAlt/2B68.png b/fonts/TewiFontOutlineAlt/2B68.png new file mode 100644 index 000000000..67770ef48 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B68.png differ diff --git a/fonts/TewiFontOutlineAlt/2B69.png b/fonts/TewiFontOutlineAlt/2B69.png new file mode 100644 index 000000000..4cac43f7d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B69.png differ diff --git a/fonts/TewiFontOutlineAlt/2B6A.png b/fonts/TewiFontOutlineAlt/2B6A.png new file mode 100644 index 000000000..2e5fe8103 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B6A.png differ diff --git a/fonts/TewiFontOutlineAlt/2B6B.png b/fonts/TewiFontOutlineAlt/2B6B.png new file mode 100644 index 000000000..720c88fb1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B6B.png differ diff --git a/fonts/TewiFontOutlineAlt/2B6C.png b/fonts/TewiFontOutlineAlt/2B6C.png new file mode 100644 index 000000000..0034f958d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B6C.png differ diff --git a/fonts/TewiFontOutlineAlt/2B6D.png b/fonts/TewiFontOutlineAlt/2B6D.png new file mode 100644 index 000000000..1113c6adb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B6D.png differ diff --git a/fonts/TewiFontOutlineAlt/2B6E.png b/fonts/TewiFontOutlineAlt/2B6E.png new file mode 100644 index 000000000..68cae5caa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B6E.png differ diff --git a/fonts/TewiFontOutlineAlt/2B6F.png b/fonts/TewiFontOutlineAlt/2B6F.png new file mode 100644 index 000000000..96c2c8a6a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B6F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B70.png b/fonts/TewiFontOutlineAlt/2B70.png new file mode 100644 index 000000000..e15b9bd0f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B70.png differ diff --git a/fonts/TewiFontOutlineAlt/2B71.png b/fonts/TewiFontOutlineAlt/2B71.png new file mode 100644 index 000000000..e60d685e7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B71.png differ diff --git a/fonts/TewiFontOutlineAlt/2B72.png b/fonts/TewiFontOutlineAlt/2B72.png new file mode 100644 index 000000000..735f02f70 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B72.png differ diff --git a/fonts/TewiFontOutlineAlt/2B73.png b/fonts/TewiFontOutlineAlt/2B73.png new file mode 100644 index 000000000..0be99ebd2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B73.png differ diff --git a/fonts/TewiFontOutlineAlt/2B76.png b/fonts/TewiFontOutlineAlt/2B76.png new file mode 100644 index 000000000..ff6617be1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B76.png differ diff --git a/fonts/TewiFontOutlineAlt/2B77.png b/fonts/TewiFontOutlineAlt/2B77.png new file mode 100644 index 000000000..76b7370ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B77.png differ diff --git a/fonts/TewiFontOutlineAlt/2B78.png b/fonts/TewiFontOutlineAlt/2B78.png new file mode 100644 index 000000000..f7cf1812f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B78.png differ diff --git a/fonts/TewiFontOutlineAlt/2B79.png b/fonts/TewiFontOutlineAlt/2B79.png new file mode 100644 index 000000000..75417c94d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B79.png differ diff --git a/fonts/TewiFontOutlineAlt/2B7E.png b/fonts/TewiFontOutlineAlt/2B7E.png new file mode 100644 index 000000000..bd449e4dc Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B7E.png differ diff --git a/fonts/TewiFontOutlineAlt/2B80.png b/fonts/TewiFontOutlineAlt/2B80.png new file mode 100644 index 000000000..f64965626 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B80.png differ diff --git a/fonts/TewiFontOutlineAlt/2B82.png b/fonts/TewiFontOutlineAlt/2B82.png new file mode 100644 index 000000000..a09997186 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B82.png differ diff --git a/fonts/TewiFontOutlineAlt/2B88.png b/fonts/TewiFontOutlineAlt/2B88.png new file mode 100644 index 000000000..1d1a9cdda Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B88.png differ diff --git a/fonts/TewiFontOutlineAlt/2B89.png b/fonts/TewiFontOutlineAlt/2B89.png new file mode 100644 index 000000000..93adbe85d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B89.png differ diff --git a/fonts/TewiFontOutlineAlt/2B8A.png b/fonts/TewiFontOutlineAlt/2B8A.png new file mode 100644 index 000000000..fca4819f9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B8A.png differ diff --git a/fonts/TewiFontOutlineAlt/2B8B.png b/fonts/TewiFontOutlineAlt/2B8B.png new file mode 100644 index 000000000..b25a01f0a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B8B.png differ diff --git a/fonts/TewiFontOutlineAlt/2B8C.png b/fonts/TewiFontOutlineAlt/2B8C.png new file mode 100644 index 000000000..e6db2cdc5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B8C.png differ diff --git a/fonts/TewiFontOutlineAlt/2B8D.png b/fonts/TewiFontOutlineAlt/2B8D.png new file mode 100644 index 000000000..ba1142880 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B8D.png differ diff --git a/fonts/TewiFontOutlineAlt/2B8E.png b/fonts/TewiFontOutlineAlt/2B8E.png new file mode 100644 index 000000000..745f18bde Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B8E.png differ diff --git a/fonts/TewiFontOutlineAlt/2B8F.png b/fonts/TewiFontOutlineAlt/2B8F.png new file mode 100644 index 000000000..9c37bc88d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B8F.png differ diff --git a/fonts/TewiFontOutlineAlt/2B90.png b/fonts/TewiFontOutlineAlt/2B90.png new file mode 100644 index 000000000..205f9d69c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B90.png differ diff --git a/fonts/TewiFontOutlineAlt/2B91.png b/fonts/TewiFontOutlineAlt/2B91.png new file mode 100644 index 000000000..174b3dff0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B91.png differ diff --git a/fonts/TewiFontOutlineAlt/2B92.png b/fonts/TewiFontOutlineAlt/2B92.png new file mode 100644 index 000000000..3693d4694 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B92.png differ diff --git a/fonts/TewiFontOutlineAlt/2B93.png b/fonts/TewiFontOutlineAlt/2B93.png new file mode 100644 index 000000000..a311c964e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B93.png differ diff --git a/fonts/TewiFontOutlineAlt/2B95.png b/fonts/TewiFontOutlineAlt/2B95.png new file mode 100644 index 000000000..fc87aa877 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2B95.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA0.png b/fonts/TewiFontOutlineAlt/2BA0.png new file mode 100644 index 000000000..78cea7cef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA0.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA1.png b/fonts/TewiFontOutlineAlt/2BA1.png new file mode 100644 index 000000000..e9e8ec427 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA1.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA2.png b/fonts/TewiFontOutlineAlt/2BA2.png new file mode 100644 index 000000000..4718c8398 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA2.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA3.png b/fonts/TewiFontOutlineAlt/2BA3.png new file mode 100644 index 000000000..4391cfef3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA3.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA4.png b/fonts/TewiFontOutlineAlt/2BA4.png new file mode 100644 index 000000000..1645dd411 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA4.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA5.png b/fonts/TewiFontOutlineAlt/2BA5.png new file mode 100644 index 000000000..138ea34ea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA5.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA6.png b/fonts/TewiFontOutlineAlt/2BA6.png new file mode 100644 index 000000000..186fd6b3a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA6.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA7.png b/fonts/TewiFontOutlineAlt/2BA7.png new file mode 100644 index 000000000..807dece6f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA7.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA8.png b/fonts/TewiFontOutlineAlt/2BA8.png new file mode 100644 index 000000000..5624004f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA8.png differ diff --git a/fonts/TewiFontOutlineAlt/2BA9.png b/fonts/TewiFontOutlineAlt/2BA9.png new file mode 100644 index 000000000..0e4291bf0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BA9.png differ diff --git a/fonts/TewiFontOutlineAlt/2BAA.png b/fonts/TewiFontOutlineAlt/2BAA.png new file mode 100644 index 000000000..3751419e9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BAA.png differ diff --git a/fonts/TewiFontOutlineAlt/2BAB.png b/fonts/TewiFontOutlineAlt/2BAB.png new file mode 100644 index 000000000..e35101920 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BAB.png differ diff --git a/fonts/TewiFontOutlineAlt/2BAC.png b/fonts/TewiFontOutlineAlt/2BAC.png new file mode 100644 index 000000000..4cfa044f6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BAC.png differ diff --git a/fonts/TewiFontOutlineAlt/2BAD.png b/fonts/TewiFontOutlineAlt/2BAD.png new file mode 100644 index 000000000..8fd11d2aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BAD.png differ diff --git a/fonts/TewiFontOutlineAlt/2BAE.png b/fonts/TewiFontOutlineAlt/2BAE.png new file mode 100644 index 000000000..857859dbf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BAE.png differ diff --git a/fonts/TewiFontOutlineAlt/2BAF.png b/fonts/TewiFontOutlineAlt/2BAF.png new file mode 100644 index 000000000..dc5938a70 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BAF.png differ diff --git a/fonts/TewiFontOutlineAlt/2BB8.png b/fonts/TewiFontOutlineAlt/2BB8.png new file mode 100644 index 000000000..7c2cad39d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BB8.png differ diff --git a/fonts/TewiFontOutlineAlt/2BC0.png b/fonts/TewiFontOutlineAlt/2BC0.png new file mode 100644 index 000000000..7912080f1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BC0.png differ diff --git a/fonts/TewiFontOutlineAlt/2BC1.png b/fonts/TewiFontOutlineAlt/2BC1.png new file mode 100644 index 000000000..ffd5c90d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BC1.png differ diff --git a/fonts/TewiFontOutlineAlt/2BC2.png b/fonts/TewiFontOutlineAlt/2BC2.png new file mode 100644 index 000000000..41c79c126 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BC2.png differ diff --git a/fonts/TewiFontOutlineAlt/2BC5.png b/fonts/TewiFontOutlineAlt/2BC5.png new file mode 100644 index 000000000..48dda828a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BC5.png differ diff --git a/fonts/TewiFontOutlineAlt/2BC6.png b/fonts/TewiFontOutlineAlt/2BC6.png new file mode 100644 index 000000000..d00493ea1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BC6.png differ diff --git a/fonts/TewiFontOutlineAlt/2BC7.png b/fonts/TewiFontOutlineAlt/2BC7.png new file mode 100644 index 000000000..a77ce8253 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BC7.png differ diff --git a/fonts/TewiFontOutlineAlt/2BC8.png b/fonts/TewiFontOutlineAlt/2BC8.png new file mode 100644 index 000000000..e7498c32c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BC8.png differ diff --git a/fonts/TewiFontOutlineAlt/2BCA.png b/fonts/TewiFontOutlineAlt/2BCA.png new file mode 100644 index 000000000..4d753c6bb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BCA.png differ diff --git a/fonts/TewiFontOutlineAlt/2BCB.png b/fonts/TewiFontOutlineAlt/2BCB.png new file mode 100644 index 000000000..85ef1390c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BCB.png differ diff --git a/fonts/TewiFontOutlineAlt/2BCC.png b/fonts/TewiFontOutlineAlt/2BCC.png new file mode 100644 index 000000000..23f2681f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BCC.png differ diff --git a/fonts/TewiFontOutlineAlt/2BCD.png b/fonts/TewiFontOutlineAlt/2BCD.png new file mode 100644 index 000000000..2ba3c61ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BCD.png differ diff --git a/fonts/TewiFontOutlineAlt/2BCE.png b/fonts/TewiFontOutlineAlt/2BCE.png new file mode 100644 index 000000000..a7c0586e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BCE.png differ diff --git a/fonts/TewiFontOutlineAlt/2BCF.png b/fonts/TewiFontOutlineAlt/2BCF.png new file mode 100644 index 000000000..5220af3df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BCF.png differ diff --git a/fonts/TewiFontOutlineAlt/2BEC.png b/fonts/TewiFontOutlineAlt/2BEC.png new file mode 100644 index 000000000..e520e437e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BEC.png differ diff --git a/fonts/TewiFontOutlineAlt/2BED.png b/fonts/TewiFontOutlineAlt/2BED.png new file mode 100644 index 000000000..1cb1b1177 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BED.png differ diff --git a/fonts/TewiFontOutlineAlt/2BEE.png b/fonts/TewiFontOutlineAlt/2BEE.png new file mode 100644 index 000000000..0c498d522 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BEE.png differ diff --git a/fonts/TewiFontOutlineAlt/2BEF.png b/fonts/TewiFontOutlineAlt/2BEF.png new file mode 100644 index 000000000..e2f177255 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2BEF.png differ diff --git a/fonts/TewiFontOutlineAlt/2C60.png b/fonts/TewiFontOutlineAlt/2C60.png new file mode 100644 index 000000000..edb34bc9f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C60.png differ diff --git a/fonts/TewiFontOutlineAlt/2C61.png b/fonts/TewiFontOutlineAlt/2C61.png new file mode 100644 index 000000000..b40b58dd0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C61.png differ diff --git a/fonts/TewiFontOutlineAlt/2C62.png b/fonts/TewiFontOutlineAlt/2C62.png new file mode 100644 index 000000000..5f1ebfb74 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C62.png differ diff --git a/fonts/TewiFontOutlineAlt/2C63.png b/fonts/TewiFontOutlineAlt/2C63.png new file mode 100644 index 000000000..98feb096a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C63.png differ diff --git a/fonts/TewiFontOutlineAlt/2C64.png b/fonts/TewiFontOutlineAlt/2C64.png new file mode 100644 index 000000000..a0bf02722 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C64.png differ diff --git a/fonts/TewiFontOutlineAlt/2C65.png b/fonts/TewiFontOutlineAlt/2C65.png new file mode 100644 index 000000000..5b929b3f3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C65.png differ diff --git a/fonts/TewiFontOutlineAlt/2C66.png b/fonts/TewiFontOutlineAlt/2C66.png new file mode 100644 index 000000000..1bc7b5401 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C66.png differ diff --git a/fonts/TewiFontOutlineAlt/2C67.png b/fonts/TewiFontOutlineAlt/2C67.png new file mode 100644 index 000000000..590b9329b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C67.png differ diff --git a/fonts/TewiFontOutlineAlt/2C68.png b/fonts/TewiFontOutlineAlt/2C68.png new file mode 100644 index 000000000..3edd4f60e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C68.png differ diff --git a/fonts/TewiFontOutlineAlt/2C69.png b/fonts/TewiFontOutlineAlt/2C69.png new file mode 100644 index 000000000..a2f09967d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C69.png differ diff --git a/fonts/TewiFontOutlineAlt/2C6A.png b/fonts/TewiFontOutlineAlt/2C6A.png new file mode 100644 index 000000000..b70cffa17 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C6A.png differ diff --git a/fonts/TewiFontOutlineAlt/2C6B.png b/fonts/TewiFontOutlineAlt/2C6B.png new file mode 100644 index 000000000..35da2244e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C6B.png differ diff --git a/fonts/TewiFontOutlineAlt/2C6C.png b/fonts/TewiFontOutlineAlt/2C6C.png new file mode 100644 index 000000000..df37232fd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C6C.png differ diff --git a/fonts/TewiFontOutlineAlt/2C6D.png b/fonts/TewiFontOutlineAlt/2C6D.png new file mode 100644 index 000000000..904a47da7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C6D.png differ diff --git a/fonts/TewiFontOutlineAlt/2C6E.png b/fonts/TewiFontOutlineAlt/2C6E.png new file mode 100644 index 000000000..2796f5ff3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C6E.png differ diff --git a/fonts/TewiFontOutlineAlt/2C6F.png b/fonts/TewiFontOutlineAlt/2C6F.png new file mode 100644 index 000000000..186045d9c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C6F.png differ diff --git a/fonts/TewiFontOutlineAlt/2C70.png b/fonts/TewiFontOutlineAlt/2C70.png new file mode 100644 index 000000000..9f69454de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C70.png differ diff --git a/fonts/TewiFontOutlineAlt/2C71.png b/fonts/TewiFontOutlineAlt/2C71.png new file mode 100644 index 000000000..f443f3f9e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C71.png differ diff --git a/fonts/TewiFontOutlineAlt/2C72.png b/fonts/TewiFontOutlineAlt/2C72.png new file mode 100644 index 000000000..5c7ba9bc3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C72.png differ diff --git a/fonts/TewiFontOutlineAlt/2C73.png b/fonts/TewiFontOutlineAlt/2C73.png new file mode 100644 index 000000000..0812d6835 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C73.png differ diff --git a/fonts/TewiFontOutlineAlt/2C74.png b/fonts/TewiFontOutlineAlt/2C74.png new file mode 100644 index 000000000..6a5029985 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C74.png differ diff --git a/fonts/TewiFontOutlineAlt/2C75.png b/fonts/TewiFontOutlineAlt/2C75.png new file mode 100644 index 000000000..dce7f29d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C75.png differ diff --git a/fonts/TewiFontOutlineAlt/2C76.png b/fonts/TewiFontOutlineAlt/2C76.png new file mode 100644 index 000000000..6665e05ee Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C76.png differ diff --git a/fonts/TewiFontOutlineAlt/2C77.png b/fonts/TewiFontOutlineAlt/2C77.png new file mode 100644 index 000000000..3ac70bf2b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C77.png differ diff --git a/fonts/TewiFontOutlineAlt/2C78.png b/fonts/TewiFontOutlineAlt/2C78.png new file mode 100644 index 000000000..0e61e8325 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C78.png differ diff --git a/fonts/TewiFontOutlineAlt/2C79.png b/fonts/TewiFontOutlineAlt/2C79.png new file mode 100644 index 000000000..b103599e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C79.png differ diff --git a/fonts/TewiFontOutlineAlt/2C7A.png b/fonts/TewiFontOutlineAlt/2C7A.png new file mode 100644 index 000000000..ed9df56fa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C7A.png differ diff --git a/fonts/TewiFontOutlineAlt/2C7B.png b/fonts/TewiFontOutlineAlt/2C7B.png new file mode 100644 index 000000000..304837969 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C7B.png differ diff --git a/fonts/TewiFontOutlineAlt/2C7C.png b/fonts/TewiFontOutlineAlt/2C7C.png new file mode 100644 index 000000000..a43d93e4a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C7C.png differ diff --git a/fonts/TewiFontOutlineAlt/2C7D.png b/fonts/TewiFontOutlineAlt/2C7D.png new file mode 100644 index 000000000..ae4bda7a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C7D.png differ diff --git a/fonts/TewiFontOutlineAlt/2C7E.png b/fonts/TewiFontOutlineAlt/2C7E.png new file mode 100644 index 000000000..21425a460 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C7E.png differ diff --git a/fonts/TewiFontOutlineAlt/2C7F.png b/fonts/TewiFontOutlineAlt/2C7F.png new file mode 100644 index 000000000..97ba2130d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2C7F.png differ diff --git a/fonts/TewiFontOutlineAlt/2E00.png b/fonts/TewiFontOutlineAlt/2E00.png new file mode 100644 index 000000000..4688bc202 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E00.png differ diff --git a/fonts/TewiFontOutlineAlt/2E01.png b/fonts/TewiFontOutlineAlt/2E01.png new file mode 100644 index 000000000..dd428c4a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E01.png differ diff --git a/fonts/TewiFontOutlineAlt/2E02.png b/fonts/TewiFontOutlineAlt/2E02.png new file mode 100644 index 000000000..df8a2acf5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E02.png differ diff --git a/fonts/TewiFontOutlineAlt/2E03.png b/fonts/TewiFontOutlineAlt/2E03.png new file mode 100644 index 000000000..fafe57776 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E03.png differ diff --git a/fonts/TewiFontOutlineAlt/2E04.png b/fonts/TewiFontOutlineAlt/2E04.png new file mode 100644 index 000000000..4c3737d97 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E04.png differ diff --git a/fonts/TewiFontOutlineAlt/2E05.png b/fonts/TewiFontOutlineAlt/2E05.png new file mode 100644 index 000000000..05278e634 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E05.png differ diff --git a/fonts/TewiFontOutlineAlt/2E06.png b/fonts/TewiFontOutlineAlt/2E06.png new file mode 100644 index 000000000..2b644db7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E06.png differ diff --git a/fonts/TewiFontOutlineAlt/2E07.png b/fonts/TewiFontOutlineAlt/2E07.png new file mode 100644 index 000000000..bbf961e7c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E07.png differ diff --git a/fonts/TewiFontOutlineAlt/2E08.png b/fonts/TewiFontOutlineAlt/2E08.png new file mode 100644 index 000000000..d1909ca37 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E08.png differ diff --git a/fonts/TewiFontOutlineAlt/2E09.png b/fonts/TewiFontOutlineAlt/2E09.png new file mode 100644 index 000000000..8ed28e865 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E09.png differ diff --git a/fonts/TewiFontOutlineAlt/2E0A.png b/fonts/TewiFontOutlineAlt/2E0A.png new file mode 100644 index 000000000..5f07c1da2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E0A.png differ diff --git a/fonts/TewiFontOutlineAlt/2E0B.png b/fonts/TewiFontOutlineAlt/2E0B.png new file mode 100644 index 000000000..5787d6fed Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E0B.png differ diff --git a/fonts/TewiFontOutlineAlt/2E0C.png b/fonts/TewiFontOutlineAlt/2E0C.png new file mode 100644 index 000000000..39e2b2e35 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E0C.png differ diff --git a/fonts/TewiFontOutlineAlt/2E0D.png b/fonts/TewiFontOutlineAlt/2E0D.png new file mode 100644 index 000000000..18ffbf4c7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E0D.png differ diff --git a/fonts/TewiFontOutlineAlt/2E0F.png b/fonts/TewiFontOutlineAlt/2E0F.png new file mode 100644 index 000000000..d4148414e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E0F.png differ diff --git a/fonts/TewiFontOutlineAlt/2E10.png b/fonts/TewiFontOutlineAlt/2E10.png new file mode 100644 index 000000000..2d07b8ca6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E10.png differ diff --git a/fonts/TewiFontOutlineAlt/2E11.png b/fonts/TewiFontOutlineAlt/2E11.png new file mode 100644 index 000000000..20671eb13 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E11.png differ diff --git a/fonts/TewiFontOutlineAlt/2E12.png b/fonts/TewiFontOutlineAlt/2E12.png new file mode 100644 index 000000000..f508fa23e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E12.png differ diff --git a/fonts/TewiFontOutlineAlt/2E13.png b/fonts/TewiFontOutlineAlt/2E13.png new file mode 100644 index 000000000..2c24b5300 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E13.png differ diff --git a/fonts/TewiFontOutlineAlt/2E14.png b/fonts/TewiFontOutlineAlt/2E14.png new file mode 100644 index 000000000..1b9e267c5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E14.png differ diff --git a/fonts/TewiFontOutlineAlt/2E15.png b/fonts/TewiFontOutlineAlt/2E15.png new file mode 100644 index 000000000..dbdcfffb2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E15.png differ diff --git a/fonts/TewiFontOutlineAlt/2E16.png b/fonts/TewiFontOutlineAlt/2E16.png new file mode 100644 index 000000000..2d55854dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E16.png differ diff --git a/fonts/TewiFontOutlineAlt/2E17.png b/fonts/TewiFontOutlineAlt/2E17.png new file mode 100644 index 000000000..0cb1c00aa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E17.png differ diff --git a/fonts/TewiFontOutlineAlt/2E18.png b/fonts/TewiFontOutlineAlt/2E18.png new file mode 100644 index 000000000..ed9b0408c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E18.png differ diff --git a/fonts/TewiFontOutlineAlt/2E1A.png b/fonts/TewiFontOutlineAlt/2E1A.png new file mode 100644 index 000000000..af0641d02 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E1A.png differ diff --git a/fonts/TewiFontOutlineAlt/2E1B.png b/fonts/TewiFontOutlineAlt/2E1B.png new file mode 100644 index 000000000..1d1d2f617 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E1B.png differ diff --git a/fonts/TewiFontOutlineAlt/2E1C.png b/fonts/TewiFontOutlineAlt/2E1C.png new file mode 100644 index 000000000..e7628f0c3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E1C.png differ diff --git a/fonts/TewiFontOutlineAlt/2E1D.png b/fonts/TewiFontOutlineAlt/2E1D.png new file mode 100644 index 000000000..864364815 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E1D.png differ diff --git a/fonts/TewiFontOutlineAlt/2E1E.png b/fonts/TewiFontOutlineAlt/2E1E.png new file mode 100644 index 000000000..776fc5d82 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E1E.png differ diff --git a/fonts/TewiFontOutlineAlt/2E1F.png b/fonts/TewiFontOutlineAlt/2E1F.png new file mode 100644 index 000000000..58f9bbe28 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E1F.png differ diff --git a/fonts/TewiFontOutlineAlt/2E20.png b/fonts/TewiFontOutlineAlt/2E20.png new file mode 100644 index 000000000..30fe553b7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E20.png differ diff --git a/fonts/TewiFontOutlineAlt/2E21.png b/fonts/TewiFontOutlineAlt/2E21.png new file mode 100644 index 000000000..e247e0ccd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E21.png differ diff --git a/fonts/TewiFontOutlineAlt/2E22.png b/fonts/TewiFontOutlineAlt/2E22.png new file mode 100644 index 000000000..fad8d1f15 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E22.png differ diff --git a/fonts/TewiFontOutlineAlt/2E23.png b/fonts/TewiFontOutlineAlt/2E23.png new file mode 100644 index 000000000..e247e0ccd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E23.png differ diff --git a/fonts/TewiFontOutlineAlt/2E24.png b/fonts/TewiFontOutlineAlt/2E24.png new file mode 100644 index 000000000..b1f4f0139 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E24.png differ diff --git a/fonts/TewiFontOutlineAlt/2E25.png b/fonts/TewiFontOutlineAlt/2E25.png new file mode 100644 index 000000000..6801a3397 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E25.png differ diff --git a/fonts/TewiFontOutlineAlt/2E26.png b/fonts/TewiFontOutlineAlt/2E26.png new file mode 100644 index 000000000..318abb02c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E26.png differ diff --git a/fonts/TewiFontOutlineAlt/2E27.png b/fonts/TewiFontOutlineAlt/2E27.png new file mode 100644 index 000000000..eac2a180c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E27.png differ diff --git a/fonts/TewiFontOutlineAlt/2E28.png b/fonts/TewiFontOutlineAlt/2E28.png new file mode 100644 index 000000000..b2a9ce285 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E28.png differ diff --git a/fonts/TewiFontOutlineAlt/2E29.png b/fonts/TewiFontOutlineAlt/2E29.png new file mode 100644 index 000000000..586e6f9b2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E29.png differ diff --git a/fonts/TewiFontOutlineAlt/2E2A.png b/fonts/TewiFontOutlineAlt/2E2A.png new file mode 100644 index 000000000..68a8b6242 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E2A.png differ diff --git a/fonts/TewiFontOutlineAlt/2E2B.png b/fonts/TewiFontOutlineAlt/2E2B.png new file mode 100644 index 000000000..25292cb0c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E2B.png differ diff --git a/fonts/TewiFontOutlineAlt/2E2C.png b/fonts/TewiFontOutlineAlt/2E2C.png new file mode 100644 index 000000000..c8612e7e2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E2C.png differ diff --git a/fonts/TewiFontOutlineAlt/2E2D.png b/fonts/TewiFontOutlineAlt/2E2D.png new file mode 100644 index 000000000..dd0a9910f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E2D.png differ diff --git a/fonts/TewiFontOutlineAlt/2E2E.png b/fonts/TewiFontOutlineAlt/2E2E.png new file mode 100644 index 000000000..3e95b56c0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E2E.png differ diff --git a/fonts/TewiFontOutlineAlt/2E2F.png b/fonts/TewiFontOutlineAlt/2E2F.png new file mode 100644 index 000000000..a410691cb Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E2F.png differ diff --git a/fonts/TewiFontOutlineAlt/2E30.png b/fonts/TewiFontOutlineAlt/2E30.png new file mode 100644 index 000000000..355f5cc8d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E30.png differ diff --git a/fonts/TewiFontOutlineAlt/2E31.png b/fonts/TewiFontOutlineAlt/2E31.png new file mode 100644 index 000000000..f1d1c8762 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E31.png differ diff --git a/fonts/TewiFontOutlineAlt/2E32.png b/fonts/TewiFontOutlineAlt/2E32.png new file mode 100644 index 000000000..2f5aabd90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E32.png differ diff --git a/fonts/TewiFontOutlineAlt/2E33.png b/fonts/TewiFontOutlineAlt/2E33.png new file mode 100644 index 000000000..2cfab1be6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E33.png differ diff --git a/fonts/TewiFontOutlineAlt/2E34.png b/fonts/TewiFontOutlineAlt/2E34.png new file mode 100644 index 000000000..43cdfac29 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E34.png differ diff --git a/fonts/TewiFontOutlineAlt/2E35.png b/fonts/TewiFontOutlineAlt/2E35.png new file mode 100644 index 000000000..c68b4773e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E35.png differ diff --git a/fonts/TewiFontOutlineAlt/2E36.png b/fonts/TewiFontOutlineAlt/2E36.png new file mode 100644 index 000000000..d763c67be Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E36.png differ diff --git a/fonts/TewiFontOutlineAlt/2E37.png b/fonts/TewiFontOutlineAlt/2E37.png new file mode 100644 index 000000000..72cf429d2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E37.png differ diff --git a/fonts/TewiFontOutlineAlt/2E38.png b/fonts/TewiFontOutlineAlt/2E38.png new file mode 100644 index 000000000..465640606 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E38.png differ diff --git a/fonts/TewiFontOutlineAlt/2E39.png b/fonts/TewiFontOutlineAlt/2E39.png new file mode 100644 index 000000000..54155b7d3 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E39.png differ diff --git a/fonts/TewiFontOutlineAlt/2E3A.png b/fonts/TewiFontOutlineAlt/2E3A.png new file mode 100644 index 000000000..bc027a512 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E3A.png differ diff --git a/fonts/TewiFontOutlineAlt/2E3B.png b/fonts/TewiFontOutlineAlt/2E3B.png new file mode 100644 index 000000000..01b340515 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E3B.png differ diff --git a/fonts/TewiFontOutlineAlt/2E3C.png b/fonts/TewiFontOutlineAlt/2E3C.png new file mode 100644 index 000000000..48d4cf1e4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E3C.png differ diff --git a/fonts/TewiFontOutlineAlt/2E3D.png b/fonts/TewiFontOutlineAlt/2E3D.png new file mode 100644 index 000000000..980be8643 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E3D.png differ diff --git a/fonts/TewiFontOutlineAlt/2E3E.png b/fonts/TewiFontOutlineAlt/2E3E.png new file mode 100644 index 000000000..4a5922174 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E3E.png differ diff --git a/fonts/TewiFontOutlineAlt/2E3F.png b/fonts/TewiFontOutlineAlt/2E3F.png new file mode 100644 index 000000000..07b2eb93b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E3F.png differ diff --git a/fonts/TewiFontOutlineAlt/2E40.png b/fonts/TewiFontOutlineAlt/2E40.png new file mode 100644 index 000000000..a5702f298 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/2E40.png differ diff --git a/fonts/TewiFontOutlineAlt/E0A0.png b/fonts/TewiFontOutlineAlt/E0A0.png new file mode 100644 index 000000000..1890afd6b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0A0.png differ diff --git a/fonts/TewiFontOutlineAlt/E0A1.png b/fonts/TewiFontOutlineAlt/E0A1.png new file mode 100644 index 000000000..9067abd67 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0A1.png differ diff --git a/fonts/TewiFontOutlineAlt/E0A2.png b/fonts/TewiFontOutlineAlt/E0A2.png new file mode 100644 index 000000000..4d54b6bd1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0A2.png differ diff --git a/fonts/TewiFontOutlineAlt/E0A5.png b/fonts/TewiFontOutlineAlt/E0A5.png new file mode 100644 index 000000000..77d4205cd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0A5.png differ diff --git a/fonts/TewiFontOutlineAlt/E0A6.png b/fonts/TewiFontOutlineAlt/E0A6.png new file mode 100644 index 000000000..3a64adc72 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0A6.png differ diff --git a/fonts/TewiFontOutlineAlt/E0A7.png b/fonts/TewiFontOutlineAlt/E0A7.png new file mode 100644 index 000000000..81dfb61a2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0A7.png differ diff --git a/fonts/TewiFontOutlineAlt/E0A8.png b/fonts/TewiFontOutlineAlt/E0A8.png new file mode 100644 index 000000000..717c19fb8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0A8.png differ diff --git a/fonts/TewiFontOutlineAlt/E0A9.png b/fonts/TewiFontOutlineAlt/E0A9.png new file mode 100644 index 000000000..dbf34a7ff Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0A9.png differ diff --git a/fonts/TewiFontOutlineAlt/E0AA.png b/fonts/TewiFontOutlineAlt/E0AA.png new file mode 100644 index 000000000..1a5be0db9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0AA.png differ diff --git a/fonts/TewiFontOutlineAlt/E0AB.png b/fonts/TewiFontOutlineAlt/E0AB.png new file mode 100644 index 000000000..b1d34b194 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0AB.png differ diff --git a/fonts/TewiFontOutlineAlt/E0AC.png b/fonts/TewiFontOutlineAlt/E0AC.png new file mode 100644 index 000000000..c45818787 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0AC.png differ diff --git a/fonts/TewiFontOutlineAlt/E0B0.png b/fonts/TewiFontOutlineAlt/E0B0.png new file mode 100644 index 000000000..95fbca553 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0B0.png differ diff --git a/fonts/TewiFontOutlineAlt/E0B1.png b/fonts/TewiFontOutlineAlt/E0B1.png new file mode 100644 index 000000000..c8a939115 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0B1.png differ diff --git a/fonts/TewiFontOutlineAlt/E0B2.png b/fonts/TewiFontOutlineAlt/E0B2.png new file mode 100644 index 000000000..4a6e92b20 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0B2.png differ diff --git a/fonts/TewiFontOutlineAlt/E0B3.png b/fonts/TewiFontOutlineAlt/E0B3.png new file mode 100644 index 000000000..39b369b0f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0B3.png differ diff --git a/fonts/TewiFontOutlineAlt/E0B5.png b/fonts/TewiFontOutlineAlt/E0B5.png new file mode 100644 index 000000000..b48fbdb89 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0B5.png differ diff --git a/fonts/TewiFontOutlineAlt/E0B6.png b/fonts/TewiFontOutlineAlt/E0B6.png new file mode 100644 index 000000000..29319ef8d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0B6.png differ diff --git a/fonts/TewiFontOutlineAlt/E0B7.png b/fonts/TewiFontOutlineAlt/E0B7.png new file mode 100644 index 000000000..e157eedb2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0B7.png differ diff --git a/fonts/TewiFontOutlineAlt/E0B8.png b/fonts/TewiFontOutlineAlt/E0B8.png new file mode 100644 index 000000000..92c1df10f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0B8.png differ diff --git a/fonts/TewiFontOutlineAlt/E0C0.png b/fonts/TewiFontOutlineAlt/E0C0.png new file mode 100644 index 000000000..10e28cf49 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0C0.png differ diff --git a/fonts/TewiFontOutlineAlt/E0C1.png b/fonts/TewiFontOutlineAlt/E0C1.png new file mode 100644 index 000000000..5cec2c2a6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0C1.png differ diff --git a/fonts/TewiFontOutlineAlt/E0C2.png b/fonts/TewiFontOutlineAlt/E0C2.png new file mode 100644 index 000000000..352e679d1 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0C2.png differ diff --git a/fonts/TewiFontOutlineAlt/E0C3.png b/fonts/TewiFontOutlineAlt/E0C3.png new file mode 100644 index 000000000..648af120f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0C3.png differ diff --git a/fonts/TewiFontOutlineAlt/E0C4.png b/fonts/TewiFontOutlineAlt/E0C4.png new file mode 100644 index 000000000..3f70f532f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0C4.png differ diff --git a/fonts/TewiFontOutlineAlt/E0C5.png b/fonts/TewiFontOutlineAlt/E0C5.png new file mode 100644 index 000000000..e2cfa1cad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0C5.png differ diff --git a/fonts/TewiFontOutlineAlt/E0C6.png b/fonts/TewiFontOutlineAlt/E0C6.png new file mode 100644 index 000000000..9b631fd6d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0C6.png differ diff --git a/fonts/TewiFontOutlineAlt/E0C7.png b/fonts/TewiFontOutlineAlt/E0C7.png new file mode 100644 index 000000000..f33432965 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/E0C7.png differ diff --git a/fonts/TewiFontOutlineAlt/FB01.png b/fonts/TewiFontOutlineAlt/FB01.png new file mode 100644 index 000000000..46787c968 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FB01.png differ diff --git a/fonts/TewiFontOutlineAlt/FB02.png b/fonts/TewiFontOutlineAlt/FB02.png new file mode 100644 index 000000000..50e2e400c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FB02.png differ diff --git a/fonts/TewiFontOutlineAlt/FF01.png b/fonts/TewiFontOutlineAlt/FF01.png new file mode 100644 index 000000000..e9a723e51 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF01.png differ diff --git a/fonts/TewiFontOutlineAlt/FF02.png b/fonts/TewiFontOutlineAlt/FF02.png new file mode 100644 index 000000000..2ac4ba226 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF02.png differ diff --git a/fonts/TewiFontOutlineAlt/FF03.png b/fonts/TewiFontOutlineAlt/FF03.png new file mode 100644 index 000000000..acfe3501f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF03.png differ diff --git a/fonts/TewiFontOutlineAlt/FF04.png b/fonts/TewiFontOutlineAlt/FF04.png new file mode 100644 index 000000000..1ab262463 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF04.png differ diff --git a/fonts/TewiFontOutlineAlt/FF05.png b/fonts/TewiFontOutlineAlt/FF05.png new file mode 100644 index 000000000..d41fcddc0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF05.png differ diff --git a/fonts/TewiFontOutlineAlt/FF06.png b/fonts/TewiFontOutlineAlt/FF06.png new file mode 100644 index 000000000..82a3b1839 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF06.png differ diff --git a/fonts/TewiFontOutlineAlt/FF07.png b/fonts/TewiFontOutlineAlt/FF07.png new file mode 100644 index 000000000..1acf0e1cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF07.png differ diff --git a/fonts/TewiFontOutlineAlt/FF08.png b/fonts/TewiFontOutlineAlt/FF08.png new file mode 100644 index 000000000..2599badd2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF08.png differ diff --git a/fonts/TewiFontOutlineAlt/FF09.png b/fonts/TewiFontOutlineAlt/FF09.png new file mode 100644 index 000000000..d73e1d4ba Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF09.png differ diff --git a/fonts/TewiFontOutlineAlt/FF0A.png b/fonts/TewiFontOutlineAlt/FF0A.png new file mode 100644 index 000000000..12d2abf2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF0A.png differ diff --git a/fonts/TewiFontOutlineAlt/FF0B.png b/fonts/TewiFontOutlineAlt/FF0B.png new file mode 100644 index 000000000..36160e3ae Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF0B.png differ diff --git a/fonts/TewiFontOutlineAlt/FF0C.png b/fonts/TewiFontOutlineAlt/FF0C.png new file mode 100644 index 000000000..3d936f7c8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF0C.png differ diff --git a/fonts/TewiFontOutlineAlt/FF0D.png b/fonts/TewiFontOutlineAlt/FF0D.png new file mode 100644 index 000000000..282803dfe Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF0D.png differ diff --git a/fonts/TewiFontOutlineAlt/FF0E.png b/fonts/TewiFontOutlineAlt/FF0E.png new file mode 100644 index 000000000..99c00bd69 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF0E.png differ diff --git a/fonts/TewiFontOutlineAlt/FF0F.png b/fonts/TewiFontOutlineAlt/FF0F.png new file mode 100644 index 000000000..bb09fbcdf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF0F.png differ diff --git a/fonts/TewiFontOutlineAlt/FF10.png b/fonts/TewiFontOutlineAlt/FF10.png new file mode 100644 index 000000000..fe89277c5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF10.png differ diff --git a/fonts/TewiFontOutlineAlt/FF11.png b/fonts/TewiFontOutlineAlt/FF11.png new file mode 100644 index 000000000..b6719b71f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF11.png differ diff --git a/fonts/TewiFontOutlineAlt/FF12.png b/fonts/TewiFontOutlineAlt/FF12.png new file mode 100644 index 000000000..43b790813 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF12.png differ diff --git a/fonts/TewiFontOutlineAlt/FF13.png b/fonts/TewiFontOutlineAlt/FF13.png new file mode 100644 index 000000000..99b3051df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF13.png differ diff --git a/fonts/TewiFontOutlineAlt/FF14.png b/fonts/TewiFontOutlineAlt/FF14.png new file mode 100644 index 000000000..9fb2c782d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF14.png differ diff --git a/fonts/TewiFontOutlineAlt/FF15.png b/fonts/TewiFontOutlineAlt/FF15.png new file mode 100644 index 000000000..1840b6084 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF15.png differ diff --git a/fonts/TewiFontOutlineAlt/FF16.png b/fonts/TewiFontOutlineAlt/FF16.png new file mode 100644 index 000000000..868d61b90 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF16.png differ diff --git a/fonts/TewiFontOutlineAlt/FF17.png b/fonts/TewiFontOutlineAlt/FF17.png new file mode 100644 index 000000000..f43f62508 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF17.png differ diff --git a/fonts/TewiFontOutlineAlt/FF18.png b/fonts/TewiFontOutlineAlt/FF18.png new file mode 100644 index 000000000..127951fb7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF18.png differ diff --git a/fonts/TewiFontOutlineAlt/FF19.png b/fonts/TewiFontOutlineAlt/FF19.png new file mode 100644 index 000000000..17ba83e33 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF19.png differ diff --git a/fonts/TewiFontOutlineAlt/FF1A.png b/fonts/TewiFontOutlineAlt/FF1A.png new file mode 100644 index 000000000..3499cee94 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF1A.png differ diff --git a/fonts/TewiFontOutlineAlt/FF1B.png b/fonts/TewiFontOutlineAlt/FF1B.png new file mode 100644 index 000000000..badee6f09 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF1B.png differ diff --git a/fonts/TewiFontOutlineAlt/FF1C.png b/fonts/TewiFontOutlineAlt/FF1C.png new file mode 100644 index 000000000..fd63ea51f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF1C.png differ diff --git a/fonts/TewiFontOutlineAlt/FF1D.png b/fonts/TewiFontOutlineAlt/FF1D.png new file mode 100644 index 000000000..facf4163d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF1D.png differ diff --git a/fonts/TewiFontOutlineAlt/FF1E.png b/fonts/TewiFontOutlineAlt/FF1E.png new file mode 100644 index 000000000..d46a43f6c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF1E.png differ diff --git a/fonts/TewiFontOutlineAlt/FF1F.png b/fonts/TewiFontOutlineAlt/FF1F.png new file mode 100644 index 000000000..61e140ad7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF1F.png differ diff --git a/fonts/TewiFontOutlineAlt/FF20.png b/fonts/TewiFontOutlineAlt/FF20.png new file mode 100644 index 000000000..3ff92f986 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF20.png differ diff --git a/fonts/TewiFontOutlineAlt/FF21.png b/fonts/TewiFontOutlineAlt/FF21.png new file mode 100644 index 000000000..3250acfd4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF21.png differ diff --git a/fonts/TewiFontOutlineAlt/FF22.png b/fonts/TewiFontOutlineAlt/FF22.png new file mode 100644 index 000000000..873081961 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF22.png differ diff --git a/fonts/TewiFontOutlineAlt/FF23.png b/fonts/TewiFontOutlineAlt/FF23.png new file mode 100644 index 000000000..d9c22b660 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF23.png differ diff --git a/fonts/TewiFontOutlineAlt/FF24.png b/fonts/TewiFontOutlineAlt/FF24.png new file mode 100644 index 000000000..ac2bacfa9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF24.png differ diff --git a/fonts/TewiFontOutlineAlt/FF25.png b/fonts/TewiFontOutlineAlt/FF25.png new file mode 100644 index 000000000..820936608 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF25.png differ diff --git a/fonts/TewiFontOutlineAlt/FF26.png b/fonts/TewiFontOutlineAlt/FF26.png new file mode 100644 index 000000000..f9ef456f6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF26.png differ diff --git a/fonts/TewiFontOutlineAlt/FF27.png b/fonts/TewiFontOutlineAlt/FF27.png new file mode 100644 index 000000000..03874d062 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF27.png differ diff --git a/fonts/TewiFontOutlineAlt/FF28.png b/fonts/TewiFontOutlineAlt/FF28.png new file mode 100644 index 000000000..d20fc8ac4 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF28.png differ diff --git a/fonts/TewiFontOutlineAlt/FF29.png b/fonts/TewiFontOutlineAlt/FF29.png new file mode 100644 index 000000000..e9c69428a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF29.png differ diff --git a/fonts/TewiFontOutlineAlt/FF2A.png b/fonts/TewiFontOutlineAlt/FF2A.png new file mode 100644 index 000000000..3466a7f76 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF2A.png differ diff --git a/fonts/TewiFontOutlineAlt/FF2B.png b/fonts/TewiFontOutlineAlt/FF2B.png new file mode 100644 index 000000000..31129b221 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF2B.png differ diff --git a/fonts/TewiFontOutlineAlt/FF2C.png b/fonts/TewiFontOutlineAlt/FF2C.png new file mode 100644 index 000000000..155e5663e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF2C.png differ diff --git a/fonts/TewiFontOutlineAlt/FF2D.png b/fonts/TewiFontOutlineAlt/FF2D.png new file mode 100644 index 000000000..8a2a7734b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF2D.png differ diff --git a/fonts/TewiFontOutlineAlt/FF2E.png b/fonts/TewiFontOutlineAlt/FF2E.png new file mode 100644 index 000000000..6b4ac57df Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF2E.png differ diff --git a/fonts/TewiFontOutlineAlt/FF2F.png b/fonts/TewiFontOutlineAlt/FF2F.png new file mode 100644 index 000000000..2d8d5c657 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF2F.png differ diff --git a/fonts/TewiFontOutlineAlt/FF30.png b/fonts/TewiFontOutlineAlt/FF30.png new file mode 100644 index 000000000..875b6ab56 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF30.png differ diff --git a/fonts/TewiFontOutlineAlt/FF31.png b/fonts/TewiFontOutlineAlt/FF31.png new file mode 100644 index 000000000..a561ec5f2 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF31.png differ diff --git a/fonts/TewiFontOutlineAlt/FF32.png b/fonts/TewiFontOutlineAlt/FF32.png new file mode 100644 index 000000000..7751abf60 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF32.png differ diff --git a/fonts/TewiFontOutlineAlt/FF33.png b/fonts/TewiFontOutlineAlt/FF33.png new file mode 100644 index 000000000..d886da48a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF33.png differ diff --git a/fonts/TewiFontOutlineAlt/FF34.png b/fonts/TewiFontOutlineAlt/FF34.png new file mode 100644 index 000000000..277ed826a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF34.png differ diff --git a/fonts/TewiFontOutlineAlt/FF35.png b/fonts/TewiFontOutlineAlt/FF35.png new file mode 100644 index 000000000..1e99a538a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF35.png differ diff --git a/fonts/TewiFontOutlineAlt/FF36.png b/fonts/TewiFontOutlineAlt/FF36.png new file mode 100644 index 000000000..31afecb74 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF36.png differ diff --git a/fonts/TewiFontOutlineAlt/FF37.png b/fonts/TewiFontOutlineAlt/FF37.png new file mode 100644 index 000000000..be00af8f9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF37.png differ diff --git a/fonts/TewiFontOutlineAlt/FF38.png b/fonts/TewiFontOutlineAlt/FF38.png new file mode 100644 index 000000000..995462999 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF38.png differ diff --git a/fonts/TewiFontOutlineAlt/FF39.png b/fonts/TewiFontOutlineAlt/FF39.png new file mode 100644 index 000000000..fc6a67ad6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF39.png differ diff --git a/fonts/TewiFontOutlineAlt/FF3A.png b/fonts/TewiFontOutlineAlt/FF3A.png new file mode 100644 index 000000000..fcbf0b093 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF3A.png differ diff --git a/fonts/TewiFontOutlineAlt/FF3B.png b/fonts/TewiFontOutlineAlt/FF3B.png new file mode 100644 index 000000000..ea433ea5b Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF3B.png differ diff --git a/fonts/TewiFontOutlineAlt/FF3C.png b/fonts/TewiFontOutlineAlt/FF3C.png new file mode 100644 index 000000000..e25d7df8f Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF3C.png differ diff --git a/fonts/TewiFontOutlineAlt/FF3D.png b/fonts/TewiFontOutlineAlt/FF3D.png new file mode 100644 index 000000000..94af65a97 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF3D.png differ diff --git a/fonts/TewiFontOutlineAlt/FF3E.png b/fonts/TewiFontOutlineAlt/FF3E.png new file mode 100644 index 000000000..eee617d78 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF3E.png differ diff --git a/fonts/TewiFontOutlineAlt/FF3F.png b/fonts/TewiFontOutlineAlt/FF3F.png new file mode 100644 index 000000000..461b2e0cf Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF3F.png differ diff --git a/fonts/TewiFontOutlineAlt/FF40.png b/fonts/TewiFontOutlineAlt/FF40.png new file mode 100644 index 000000000..68b361760 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF40.png differ diff --git a/fonts/TewiFontOutlineAlt/FF41.png b/fonts/TewiFontOutlineAlt/FF41.png new file mode 100644 index 000000000..bec3e0313 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF41.png differ diff --git a/fonts/TewiFontOutlineAlt/FF42.png b/fonts/TewiFontOutlineAlt/FF42.png new file mode 100644 index 000000000..a41009e54 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF42.png differ diff --git a/fonts/TewiFontOutlineAlt/FF43.png b/fonts/TewiFontOutlineAlt/FF43.png new file mode 100644 index 000000000..b55ee9971 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF43.png differ diff --git a/fonts/TewiFontOutlineAlt/FF44.png b/fonts/TewiFontOutlineAlt/FF44.png new file mode 100644 index 000000000..a15234ef0 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF44.png differ diff --git a/fonts/TewiFontOutlineAlt/FF45.png b/fonts/TewiFontOutlineAlt/FF45.png new file mode 100644 index 000000000..ba2647627 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF45.png differ diff --git a/fonts/TewiFontOutlineAlt/FF46.png b/fonts/TewiFontOutlineAlt/FF46.png new file mode 100644 index 000000000..d2b35599d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF46.png differ diff --git a/fonts/TewiFontOutlineAlt/FF47.png b/fonts/TewiFontOutlineAlt/FF47.png new file mode 100644 index 000000000..8e26ae29e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF47.png differ diff --git a/fonts/TewiFontOutlineAlt/FF48.png b/fonts/TewiFontOutlineAlt/FF48.png new file mode 100644 index 000000000..5de00a28d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF48.png differ diff --git a/fonts/TewiFontOutlineAlt/FF49.png b/fonts/TewiFontOutlineAlt/FF49.png new file mode 100644 index 000000000..3118b90ef Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF49.png differ diff --git a/fonts/TewiFontOutlineAlt/FF4A.png b/fonts/TewiFontOutlineAlt/FF4A.png new file mode 100644 index 000000000..de6f0a69e Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF4A.png differ diff --git a/fonts/TewiFontOutlineAlt/FF4B.png b/fonts/TewiFontOutlineAlt/FF4B.png new file mode 100644 index 000000000..108ab1841 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF4B.png differ diff --git a/fonts/TewiFontOutlineAlt/FF4C.png b/fonts/TewiFontOutlineAlt/FF4C.png new file mode 100644 index 000000000..e9c69428a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF4C.png differ diff --git a/fonts/TewiFontOutlineAlt/FF4D.png b/fonts/TewiFontOutlineAlt/FF4D.png new file mode 100644 index 000000000..fff20f2a9 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF4D.png differ diff --git a/fonts/TewiFontOutlineAlt/FF4E.png b/fonts/TewiFontOutlineAlt/FF4E.png new file mode 100644 index 000000000..dc6107880 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF4E.png differ diff --git a/fonts/TewiFontOutlineAlt/FF4F.png b/fonts/TewiFontOutlineAlt/FF4F.png new file mode 100644 index 000000000..a0eddb78d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF4F.png differ diff --git a/fonts/TewiFontOutlineAlt/FF50.png b/fonts/TewiFontOutlineAlt/FF50.png new file mode 100644 index 000000000..7e3ccd9de Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF50.png differ diff --git a/fonts/TewiFontOutlineAlt/FF51.png b/fonts/TewiFontOutlineAlt/FF51.png new file mode 100644 index 000000000..e16fca172 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF51.png differ diff --git a/fonts/TewiFontOutlineAlt/FF52.png b/fonts/TewiFontOutlineAlt/FF52.png new file mode 100644 index 000000000..4d6bce4ad Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF52.png differ diff --git a/fonts/TewiFontOutlineAlt/FF53.png b/fonts/TewiFontOutlineAlt/FF53.png new file mode 100644 index 000000000..bfdb6e17d Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF53.png differ diff --git a/fonts/TewiFontOutlineAlt/FF54.png b/fonts/TewiFontOutlineAlt/FF54.png new file mode 100644 index 000000000..d0d4aec2c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF54.png differ diff --git a/fonts/TewiFontOutlineAlt/FF55.png b/fonts/TewiFontOutlineAlt/FF55.png new file mode 100644 index 000000000..158fda3da Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF55.png differ diff --git a/fonts/TewiFontOutlineAlt/FF56.png b/fonts/TewiFontOutlineAlt/FF56.png new file mode 100644 index 000000000..4ec867761 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF56.png differ diff --git a/fonts/TewiFontOutlineAlt/FF57.png b/fonts/TewiFontOutlineAlt/FF57.png new file mode 100644 index 000000000..a5acc1de6 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF57.png differ diff --git a/fonts/TewiFontOutlineAlt/FF58.png b/fonts/TewiFontOutlineAlt/FF58.png new file mode 100644 index 000000000..7250b98b8 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF58.png differ diff --git a/fonts/TewiFontOutlineAlt/FF59.png b/fonts/TewiFontOutlineAlt/FF59.png new file mode 100644 index 000000000..87f89bc8c Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF59.png differ diff --git a/fonts/TewiFontOutlineAlt/FF5A.png b/fonts/TewiFontOutlineAlt/FF5A.png new file mode 100644 index 000000000..7fb5ea0dd Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF5A.png differ diff --git a/fonts/TewiFontOutlineAlt/FF5B.png b/fonts/TewiFontOutlineAlt/FF5B.png new file mode 100644 index 000000000..c8c9acf6a Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF5B.png differ diff --git a/fonts/TewiFontOutlineAlt/FF5C.png b/fonts/TewiFontOutlineAlt/FF5C.png new file mode 100644 index 000000000..1ab47a558 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF5C.png differ diff --git a/fonts/TewiFontOutlineAlt/FF5D.png b/fonts/TewiFontOutlineAlt/FF5D.png new file mode 100644 index 000000000..5f5e5b1a7 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FF5D.png differ diff --git a/fonts/TewiFontOutlineAlt/FFE3.png b/fonts/TewiFontOutlineAlt/FFE3.png new file mode 100644 index 000000000..75d4120fa Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FFE3.png differ diff --git a/fonts/TewiFontOutlineAlt/FFE5.png b/fonts/TewiFontOutlineAlt/FFE5.png new file mode 100644 index 000000000..9617e53f5 Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FFE5.png differ diff --git a/fonts/TewiFontOutlineAlt/FFFD.png b/fonts/TewiFontOutlineAlt/FFFD.png new file mode 100644 index 000000000..45f2563ea Binary files /dev/null and b/fonts/TewiFontOutlineAlt/FFFD.png differ diff --git a/fonts/TewiFontOutlineAlt/LICENSE b/fonts/TewiFontOutlineAlt/LICENSE new file mode 100644 index 000000000..beff238eb --- /dev/null +++ b/fonts/TewiFontOutlineAlt/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2017 lucy + +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. diff --git a/fonts/TewiFontOutlineAlt/font.inf b/fonts/TewiFontOutlineAlt/font.inf new file mode 100644 index 000000000..787cdbd90 --- /dev/null +++ b/fonts/TewiFontOutlineAlt/font.inf @@ -0,0 +1,4 @@ +TranslationType Standard +SpaceWidth 8 +Kerning -2 +FontHeight 14 diff --git a/fonts/XekkasNum/0030.png b/fonts/XekkasNum/0030.png new file mode 100644 index 000000000..c0f1cdc92 Binary files /dev/null and b/fonts/XekkasNum/0030.png differ diff --git a/fonts/XekkasNum/0031.png b/fonts/XekkasNum/0031.png new file mode 100644 index 000000000..1cd919ec3 Binary files /dev/null and b/fonts/XekkasNum/0031.png differ diff --git a/fonts/XekkasNum/0032.png b/fonts/XekkasNum/0032.png new file mode 100644 index 000000000..34fc230a2 Binary files /dev/null and b/fonts/XekkasNum/0032.png differ diff --git a/fonts/XekkasNum/0033.png b/fonts/XekkasNum/0033.png new file mode 100644 index 000000000..fa4f1c891 Binary files /dev/null and b/fonts/XekkasNum/0033.png differ diff --git a/fonts/XekkasNum/0034.png b/fonts/XekkasNum/0034.png new file mode 100644 index 000000000..cffe28aea Binary files /dev/null and b/fonts/XekkasNum/0034.png differ diff --git a/fonts/XekkasNum/0035.png b/fonts/XekkasNum/0035.png new file mode 100644 index 000000000..8b4ea4afc Binary files /dev/null and b/fonts/XekkasNum/0035.png differ diff --git a/fonts/XekkasNum/0036.png b/fonts/XekkasNum/0036.png new file mode 100644 index 000000000..3171aecf7 Binary files /dev/null and b/fonts/XekkasNum/0036.png differ diff --git a/fonts/XekkasNum/0037.png b/fonts/XekkasNum/0037.png new file mode 100644 index 000000000..19c3af96b Binary files /dev/null and b/fonts/XekkasNum/0037.png differ diff --git a/fonts/XekkasNum/0038.png b/fonts/XekkasNum/0038.png new file mode 100644 index 000000000..c5717a982 Binary files /dev/null and b/fonts/XekkasNum/0038.png differ diff --git a/fonts/XekkasNum/0039.png b/fonts/XekkasNum/0039.png new file mode 100644 index 000000000..57e591f43 Binary files /dev/null and b/fonts/XekkasNum/0039.png differ diff --git a/fonts/XekkasNum/font.inf b/fonts/XekkasNum/font.inf new file mode 100644 index 000000000..bb45bc970 --- /dev/null +++ b/fonts/XekkasNum/font.inf @@ -0,0 +1,3 @@ +TranslationType Standard +SpaceWidth 4 +FontHeight 6 diff --git a/fonts/consolefont/0010.png b/fonts/consolefont/0010.png index 5262f4548..db0880061 100644 Binary files a/fonts/consolefont/0010.png and b/fonts/consolefont/0010.png differ diff --git a/fonts/consolefont/0011.png b/fonts/consolefont/0011.png index 9a5d5f62b..120982cc7 100644 Binary files a/fonts/consolefont/0011.png and b/fonts/consolefont/0011.png differ diff --git a/fonts/consolefont/0012.png b/fonts/consolefont/0012.png index e812b1f23..17ccd4728 100644 Binary files a/fonts/consolefont/0012.png and b/fonts/consolefont/0012.png differ diff --git a/fonts/consolefont/0013.png b/fonts/consolefont/0013.png index d0f847189..3b5b23675 100644 Binary files a/fonts/consolefont/0013.png and b/fonts/consolefont/0013.png differ diff --git a/gldefs.ammo b/gldefs.ammo deleted file mode 100644 index 4753a7ce5..000000000 --- a/gldefs.ammo +++ /dev/null @@ -1,181 +0,0 @@ -HardwareShader Texture "models/Shell_Gold.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Shell_Gold_mask.png" - Texture "envtex" "models/matcap/goldmap.png" -} -HardwareShader Texture "models/Shell_Gold_Used.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Shell_Gold_Used_mask.png" - Texture "envtex" "models/matcap/goldmap.png" -} -Brightmap Texture "models/SparksterAmmo.png" -{ - map "models/SparksterAmmo_bright.png" -} -HardwareShader Texture "models/SparksterAmmo.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/SparksterAmmo_mask.png" - Texture "envtex" "models/matcap/dekamap.png" -} -Brightmap Texture "models/Fabricator.png" -{ - map "models/Fabricator_bright.png" -} -Brightmap Texture "models/Fabricator_Tier2.png" -{ - map "models/Fabricator_bright.png" -} -Brightmap Texture "models/Fabricator_Tier3.png" -{ - map "models/Fabricator_bright.png" -} -Brightmap Texture "models/Fabricator_Tier4.png" -{ - map "models/Fabricator_bright.png" -} -HardwareShader Texture "models/Fabricator.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Fabricator_mask.png" - Texture "envtex" "models/matcap/silvermap.png" -} -HardwareShader Texture "models/Fabricator_Tier2.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Fabricator_mask.png" - Texture "envtex" "models/matcap/silvermap.png" -} -HardwareShader Texture "models/Fabricator.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Fabricator_mask.png" - Texture "envtex" "models/matcap/silvermap.png" -} -HardwareShader Texture "models/Fabricator_Tier4.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Fabricator_mask.png" - Texture "envtex" "models/matcap/goldmap.png" -} -Brightmap Texture "models/Embiggener.png" -{ - map "models/Embiggener_bright.png" -} -Brightmap Texture "models/Embiggener_Tier2.png" -{ - map "models/Embiggener_bright.png" -} -Brightmap Texture "models/Embiggener_Tier3.png" -{ - map "models/Embiggener_bright.png" -} -Brightmap Texture "models/Embiggener_Tier4.png" -{ - map "models/Embiggener_bright.png" -} -Brightmap Texture "models/Embiggener_Tier5.png" -{ - map "models/Embiggener_bright.png" -} -HardwareShader Texture "models/Embiggener.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Embiggener_mask.png" - Texture "envtex" "models/matcap/redmap.png" -} -HardwareShader Texture "models/Embiggener_Tier2.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Embiggener_mask.png" - Texture "envtex" "models/matcap/greenmap.png" -} -HardwareShader Texture "models/Embiggener_Tier3.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Embiggener_mask.png" - Texture "envtex" "models/matcap/blumap.png" -} -HardwareShader Texture "models/Embiggener_Tier4.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Embiggener_mask.png" - Texture "envtex" "models/matcap/purpmap.png" -} -HardwareShader Texture "models/Embiggener_Tier5.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Embiggener_mask.png" - Texture "envtex" "models/matcap/glassmap.png" -} - -PointLight GOLDSHELLLIGHT -{ - Color 0.7 0.6 0.2 - Size 12 - Offset 0 16 0 - Attenuate 1 -} -Object GoldShell -{ - Frame "XZW1" { light "GOLDSHELLLIGHT" } -} - -PointLight SPARKUNITLIGHT -{ - Color 0.25 0.15 0.3 - Size 20 - Offset 0 16 0 - Attenuate 1 -} -Object SparkUnit -{ - Frame "XZW1" { light "SPARKUNITLIGHT" } -} - -PointLight FABTIER1LIGHT -{ - Color 0.0 0.3 1.0 - Size 30 - Offset 0 16 0 - Attenuate 1 -} -PointLight FABTIER2LIGHT -{ - Color 0.0 1.0 0.3 - Size 30 - Offset 0 16 0 - Attenuate 1 -} -PointLight FABTIER3LIGHT -{ - Color 1.0 0.3 0.0 - Size 30 - Offset 0 16 0 - Attenuate 1 -} -PointLight FABTIER4LIGHT -{ - Color 1.0 0.9 0.3 - Size 30 - Offset 0 16 0 - Attenuate 1 -} -Object FabricatorTier1 -{ - Frame "XZW1" { light "FABTIER1LIGHT" } -} -Object FabricatorTier2 -{ - Frame "XZW1" { light "FABTIER2LIGHT" } -} -Object FabricatorTier3 -{ - Frame "XZW1" { light "FABTIER3LIGHT" } -} -Object FabricatorTier4 -{ - Frame "XZW1" { light "FABTIER4LIGHT" } -} diff --git a/gldefs.candygun b/gldefs.candygun deleted file mode 100644 index 6491d0260..000000000 --- a/gldefs.candygun +++ /dev/null @@ -1,12 +0,0 @@ -HardwareShader Texture "models/CandyGun.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/CandyGun_mask.png" - Texture "envtex" "models/matcap/pinkmap.png" -} -HardwareShader Texture "models/CandyGun_EmptyMag.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/CandyGun_mask.png" - Texture "envtex" "models/matcap/pinkmap.png" -} diff --git a/gldefs.demolitionist b/gldefs.demolitionist deleted file mode 100644 index eab29af77..000000000 --- a/gldefs.demolitionist +++ /dev/null @@ -1,56 +0,0 @@ -Brightmap Texture "models/DemoFace_Blank.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Blink.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Booty.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Dead.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Default.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Dizzy.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Evil.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Grin.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Hurt.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_HurtLeft.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_HurtRight.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Ouch.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoFace_Wink.png" -{ - Map "models/DemoFace_bright.png" -} -Brightmap Texture "models/DemoTags.png" -{ - Map "models/DemoTags_bright.png" -} diff --git a/gldefs.funstuff b/gldefs.funstuff deleted file mode 100644 index c769c53ac..000000000 --- a/gldefs.funstuff +++ /dev/null @@ -1,47 +0,0 @@ -Brightmap Texture "models/SayaBean.png" -{ - Map "models/SayaBean_bright.png" -} -Brightmap Texture "models/DemoPlush.png" -{ - Map "models/DemoPlush_bright.png" -} -Brightmap Texture "models/DemoPlush2.png" -{ - Map "models/DemoPlush2_bright.png" -} -Brightmap Texture "models/KirinPlush.png" -{ - Map "models/KirinPlush_bright.png" -} -HardwareShader Texture "models/PerfectlyGeneric.png" -{ - Shader "shaders/glsl/PerfectlyGeneric.fp" -} -Brightmap Texture "models/MothPlush.png" -{ - Map "models/MothPlush_bright.png" -} -Brightmap Texture "models/Chancebox.png" -{ - map "models/Chancebox_bright.png" -} -HardwareShader Texture "models/Chancebox.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Chancebox_mask.png" - Texture "envtex" "models/matcap/silvermap.png" -} - -PointLight CHANCELIGHT -{ - Color 1.0 0.7 0.2 - Size 50 - Offset 0 16 0 - Attenuate 1 -} - -Object Chancebox -{ - Frame "XZW2" { light "CHANCELIGHT" } -} diff --git a/gldefs.hellblazer b/gldefs.hellblazer deleted file mode 100644 index 19e0f48cd..000000000 --- a/gldefs.hellblazer +++ /dev/null @@ -1,32 +0,0 @@ -PointLight BLAZERLIGHT1 -{ - Color 1.0 0.8 0.3 - Size 120 - Attenuate 1 -} -PointLight BLAZERLIGHT2 -{ - Color 0.3 1.0 0.3 - Size 120 - Attenuate 1 -} -PointLight BLAZERLIGHT3 -{ - Color 1.0 0.3 0.3 - Size 120 - Attenuate 1 -} -PointLight BLAZERLIGHT4 -{ - Color 0.8 0.3 1.0 - Size 120 - Attenuate 1 -} - -Object HellblazerFlare -{ - Frame "HFLRA" { light "BLAZERLIGHT1" } - Frame "HFLRB" { light "BLAZERLIGHT2" } - Frame "HFLRC" { light "BLAZERLIGHT3" } - Frame "HFLRD" { light "BLAZERLIGHT4" } -} diff --git a/gldefs.keys b/gldefs.keys deleted file mode 100644 index fb5e3f9c2..000000000 --- a/gldefs.keys +++ /dev/null @@ -1,256 +0,0 @@ -Brightmap Texture "models/DoomRedKey.png" -{ - map "models/DoomKey_bright.png" -} -Brightmap Texture "models/DoomYellowKey.png" -{ - map "models/DoomKey_bright.png" -} -Brightmap Texture "models/DoomBlueKey.png" -{ - map "models/DoomKey_bright.png" -} -Brightmap Texture "models/DoomGreenKey.png" -{ - map "models/DoomKey_bright.png" -} -Brightmap Texture "models/DoomOrangeKey.png" -{ - map "models/DoomKey_bright.png" -} -Brightmap Texture "models/DoomBlackKey.png" -{ - map "models/DoomKey_bright.png" -} -Brightmap Texture "models/DoomWhiteKey.png" -{ - map "models/DoomKey_bright.png" -} -Brightmap Texture "models/DoomSilverKey.png" -{ - map "models/DoomKey_bright.png" -} -HardwareShader Texture "models/DoomRedKey.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomKey_mask.png" - Texture "envtex" "models/matcap/redmap.png" -} -HardwareShader Texture "models/DoomYellowKey.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomKey_mask.png" - Texture "envtex" "models/matcap/goldmap.png" -} -HardwareShader Texture "models/DoomBlueKey.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomKey_mask.png" - Texture "envtex" "models/matcap/blumap.png" -} -HardwareShader Texture "models/DoomGreenKey.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomKey_mask.png" - Texture "envtex" "models/matcap/greenmap.png" -} -HardwareShader Texture "models/DoomOrangeKey.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomKey_mask.png" - Texture "envtex" "models/matcap/goldmap.png" -} -HardwareShader Texture "models/DoomBlackKey.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomKey_mask.png" - Texture "envtex" "models/matcap/leadmap.png" -} -HardwareShader Texture "models/DoomWhiteKey.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomKey_mask.png" - Texture "envtex" "models/matcap/silvermap.png" -} -HardwareShader Texture "models/DoomSilverKey.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomKey_mask.png" - Texture "envtex" "models/matcap/silvermap.png" -} -Brightmap Texture "models/DoomKeyLight.png" -{ - Map "brightmaps/Fullbright.png" -} -HardwareShader Texture "models/DoomKeyLight3.png" -{ - Shader "shaders/glsl/KeyBlink.fp" -} - -Brightmap Texture "models/DoomRedSkull.png" -{ - map "models/DoomSkull_bright.png" -} -Brightmap Texture "models/DoomBlueSkull.png" -{ - map "models/DoomSkull_bright.png" -} -Brightmap Texture "models/DoomYellowSkull.png" -{ - map "models/DoomSkull_bright.png" -} -Brightmap Texture "models/DoomPurpleSkull.png" -{ - map "models/DoomSkull_bright.png" -} -HardwareShader Texture "models/DoomRedSkull.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomSkull_mask.png" - Texture "envtex" "models/matcap/redmap.png" -} -HardwareShader Texture "models/DoomBlueSkull.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomSkull_mask.png" - Texture "envtex" "models/matcap/blumap.png" -} -HardwareShader Texture "models/DoomYellowSkull.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomSkull_mask.png" - Texture "envtex" "models/matcap/goldmap.png" -} -HardwareShader Texture "models/DoomPurpleSkull.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DoomSkull_mask.png" - Texture "envtex" "models/matcap/purpmap.png" -} - -pointlight SWWMREDKEY -{ - color 1.0 0.0 0.0 - size 40 - attenuate 1 - offset 0 16 0 -} -pointlight SWWMYELLOWKEY -{ - color 1.0 1.0 0.0 - size 40 - attenuate 1 - offset 0 16 0 -} -pointlight SWWMBLUEKEY -{ - color 0.0 0.0 1.0 - size 40 - attenuate 1 - offset 0 16 0 -} -pointlight SWWMGREENKEY -{ - color 0.0 1.0 0.0 - size 40 - attenuate 1 - offset 0 16 0 -} -pointlight SWWMSILVERKEY -{ - color 0.8 0.9 1.0 - size 40 - attenuate 1 - offset 0 16 0 -} -pointlight SWWMORANGEKEY -{ - color 1.0 0.6 0.0 - size 40 - attenuate 1 - offset 0 16 0 -} -pointlight SWWMPURPLEKEY -{ - color 1.0 0.0 1.0 - size 40 - attenuate 1 - offset 0 16 0 -} -pointlight SWWMCARDLITE -{ - color 0.5 0.5 0.0 - size 20 - attenuate 1 - offset 0 16 0 -} - -object SWWMRedCard -{ - frame XZW1 { light SWWMREDKEY } - frame XZW1B { light SWWMCARDLITE } -} -object SWWMYellowCard -{ - frame XZW1 { light SWWMYELLOWKEY } - frame XZW1B { light SWWMCARDLITE } -} -object SWWMBlueCard -{ - frame XZW1 { light SWWMBLUEKEY } - frame XZW1B { light SWWMCARDLITE } -} -object SWWMGreenCard -{ - frame XZW1 { light SWWMGREENKEY } - frame XZW1B { light SWWMCARDLITE } -} -object SWWMSilverCardKDiZD -{ - frame XZW1 { light SWWMSILVERKEY } - frame XZW1B { light SWWMCARDLITE } -} -object SWWMGreenCardKDiZD -{ - frame XZW1 { light SWWMGREENKEY } - frame XZW1B { light SWWMCARDLITE } -} -object SWWMOrangeCardKDiZD -{ - frame XZW1 { light SWWMORANGEKEY } - frame XZW1B { light SWWMCARDLITE } -} - -object SWWMRedSkull -{ - frame XZW1 { light SWWMREDKEY } -} -object SWWMBlueSkull -{ - frame XZW1 { light SWWMBLUEKEY } -} -object SWWMYellowSkull -{ - frame XZW1 { light SWWMYELLOWKEY } -} -object SWWMPurpleSkull -{ - frame XZW1 { light SWWMPURPLEKEY } -} - -object SWWMKeyGreen -{ - frame XZW1 { light SWWMGREENKEY } -} -object SWWMKeyBlue -{ - frame XZW1 { light SWWMBLUEKEY } -} -object SWWMKeyYellow -{ - frame XZW1 { light SWWMYELLOWKEY } -} -object SWWMKeyRed -{ - frame XZW1 { light SWWMREDKEY } -} diff --git a/gldefs.misc b/gldefs.misc deleted file mode 100644 index c4a214b21..000000000 --- a/gldefs.misc +++ /dev/null @@ -1,284 +0,0 @@ -HardwareShader Texture "graphics/HUD/HealthBarS.png" -{ - Shader "shaders/glsl/Fuzz.fp" - Define "GRAY_COLORS" - Define "BASE_RES" = "vec2(100.,12.)" - Texture "noisetex" "textures/graynoise.png" -} -HardwareShader Texture "graphics/HUD/EnemyBarS.png" -{ - Shader "shaders/glsl/Fuzz.fp" - Define "GRAY_COLORS" - Define "BASE_RES" = "vec2(50.,3.)" - Texture "noisetex" "textures/graynoise.png" -} -HardwareShader Texture "graphics/HUD/FuelBarS.png" -{ - Shader "shaders/glsl/Fuzz.fp" - Define "GRAY_COLORS" - Define "BASE_RES" = "vec2(120.,3.)" - Texture "noisetex" "textures/graynoise.png" -} -HardwareShader Texture "graphics/HUD/HealthBarD.png" -{ - Shader "shaders/glsl/HealthBarD.fp" - Define "TEX_SIZE" = "vec2(120.,32.)" - Texture "noisetex" "textures/graynoise.png" -} -HardwareShader Texture "graphics/HUD/EnemyBarD.png" -{ - Shader "shaders/glsl/HealthBarD.fp" - Define "TEX_SIZE" = "vec2(70.,23.)" - Texture "noisetex" "textures/graynoise.png" -} -HardwareShader Texture "graphics/tempbg.png" -{ - Shader "shaders/glsl/Fuzz.fp" - Define "BASE_RES" = "vec2(640.,400.)" - Texture "noisetex" "textures/graynoise.png" -} -HardwareShader Texture "graphics/SWWMGZLogo.png" -{ - Shader "shaders/glsl/LogoAnimated.fp" - // what no 2d arrays does to a mf - Texture "Layer1" "graphics/SWWMGZLogo_Layer1.png" - Texture "Layer2" "graphics/SWWMGZLogo_Layer2.png" - Texture "Layer3" "graphics/SWWMGZLogo_Layer3.png" - Texture "Layer4" "graphics/SWWMGZLogo_Layer4.png" - Texture "Layer5" "graphics/SWWMGZLogo_Layer5.png" - Texture "Layer6" "graphics/SWWMGZLogo_Layer6.png" -} -HardwareShader Texture "graphics/M_SWWM.png" -{ - Shader "shaders/glsl/LogoAnimated.fp" - // what no 2d arrays does to a mf - Texture "Layer1" "graphics/M_SWWM_Layer1.png" - Texture "Layer2" "graphics/M_SWWM_Layer2.png" - Texture "Layer3" "graphics/M_SWWM_Layer3.png" - Texture "Layer4" "graphics/M_SWWM_Layer4.png" - Texture "Layer5" "graphics/M_SWWM_Layer5.png" - Texture "Layer6" "graphics/M_SWWM_Layer6.png" - Define "NO_BILINEAR" -} -HardwareShader Texture "graphics/NewLogo.png" -{ - Shader "shaders/glsl/NewLogoAnimated.fp" - // what no 2d arrays does to a mf - Texture "Layer1" "graphics/NewLogo_Layer1.png" - Texture "Layer2" "graphics/NewLogo_Layer2.png" - Texture "Layer3" "graphics/NewLogo_Layer3.png" - Texture "gradtex" "graphics/NewLogo_Grad.png" - Texture "fadetex" "LOGOFADE" -} -HardwareShader Texture "graphics/M_DEMOLITIONIST.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/DemoIcon.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_DEEPIMPACT.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_EXPLOGUN.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_SPREADGUN.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_WALLBUSTER.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_EVISCERATOR.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_HELLBLAZER.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_BIOSPARK.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_SILVERBULLET.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_CANDYGUN.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_YNYKRON.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_PUSHER.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_DAB.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_DOUBLEV.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_HEALTH.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_LOVE.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_RAGEKIT.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_SANDWICH.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_SHELLS.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_SKULL.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_THONK.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/M_DEMOCHAN_THUMBUP.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/UnSXLogo.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Sprite "MBRNB0" -{ - Shader "shaders/glsl/Whew.fp" -} -HardwareShader Texture "graphics/InterBG.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/CaptainJ.png" -{ - Shader "shaders/glsl/Oversample.fp" -} -HardwareShader Texture "graphics/Fanart/CaptainJ2.png" -{ - Shader "shaders/glsl/Oversample.fp" -} -HardwareShader Texture "graphics/Fanart/Endie.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa2.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa3.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa4.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa5.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa6.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa7.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa8.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa9.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa10.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa11.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa12.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa13.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa14.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa15.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Marisa16.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Monsoon.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Monsoon2.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Monsoon3.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Monsoon4.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/RedeadITA.png" -{ - Shader "shaders/glsl/Oversample.fp" -} -HardwareShader Texture "graphics/Fanart/S20TBL.jpg" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Shivers.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} -HardwareShader Texture "graphics/Fanart/Shivers2.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} diff --git a/gldefs.pickups b/gldefs.pickups deleted file mode 100644 index 0b7dfd17a..000000000 --- a/gldefs.pickups +++ /dev/null @@ -1,348 +0,0 @@ -Brightmap Texture "models/Nugget_Armor.png" -{ - map "models/Nugget_mask.png" -} -Brightmap Texture "models/Nugget.png" -{ - map "models/Nugget_mask.png" -} -Brightmap Texture "models/TetraHealth.png" -{ - map "models/TetraHealth_mask.png" -} -Brightmap Texture "models/CubeHealth.png" -{ - map "models/CubeHealth_mask.png" -} -Brightmap Texture "models/Refresher.png" -{ - map "models/Refresher_mask.png" -} -HardwareShader Texture "models/Nugget_Armor.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Nugget_mask.png" - Texture "envtex" "models/matcap/greenmap.png" -} -HardwareShader Texture "models/Nugget.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Nugget_mask.png" - Texture "envtex" "models/matcap/blumap.png" -} -HardwareShader Texture "models/TetraHealth.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/TetraHealth_mask.png" - Texture "envtex" "models/matcap/blumap.png" -} -HardwareShader Texture "models/CubeHealth.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/CubeHealth_mask.png" - Texture "envtex" "models/matcap/blumap.png" -} -HardwareShader Texture "models/Refresher.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Refresher_mask.png" - Texture "envtex" "models/matcap/purpmap.png" -} -Brightmap Texture "models/GhostArtifact.png" -{ - Map "models/GhostArtifact_bright.png" - DisableFullbright -} -Brightmap Texture "models/Gravity.png" -{ - Map "models/Gravity_bright.png" - DisableFullbright -} -Brightmap Texture "models/Ragekit.png" -{ - Map "models/Ragekit_bright.png" - DisableFullbright -} -Brightmap Texture "models/Omnisight.png" -{ - Map "models/Omnisight_bright.png" - DisableFullbright -} -Brightmap Texture "models/Lamp.png" -{ - Map "models/Lamp_bright.png" - DisableFullbright -} -Brightmap Texture "models/Invinciball.png" -{ - Map "brightmaps/nobright.png" - DisableFullbright -} -Brightmap Texture "models/Moth_Mashiro.png" -{ - Map "models/Moth_Mashiro_bright.png" -} -Brightmap Texture "models/Barrier.png" -{ - Map "models/Barrier_bright.png" - DisableFullbright -} -HardwareShader Sprite "MKRVA0" -{ - Shader "shaders/glsl/Mykradvo.fp" - Texture "warptex" "textures/warptex.png" - Texture "snoisetex" "textures/softnoise.png" -} -HardwareShader Texture "models/extra/AnomRingies.png" -{ - Shader "shaders/glsl/Mykradvo2.fp" - Texture "warptex" "textures/heattex.png" -} -HardwareShader Sprite "DVSPA0" -{ - Shader "shaders/glsl/Divine.fp" - Texture "snoisetex" "textures/softnoise.png" -} -HardwareShader Texture "models/DivineSprite.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DivineSprite_mask.png" - Texture "envtex" "models/matcap/pearlmap.png" -} -Brightmap Texture "models/DivineSprite.png" -{ - map "models/DivineSprite_mask.png" - DisableFullbright -} -HardwareShader Texture "models/DevaSigil.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/DevaSigil_mask.png" - Texture "envtex" "models/matcap/dekamap.png" -} -Brightmap Texture "models/SafetyTether.png" -{ - map "models/SafetyTether_bright.png" - DisableFullbright -} -HardwareShader Texture "models/SafetyTether.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/SafetyTether_mask.png" - Texture "envtex" "models/matcap/silvermap.png" -} -HardwareShader Texture "models/SafetyTether_off.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/SafetyTether_mask.png" - Texture "envtex" "models/matcap/silvermap.png" -} - -PointLight ARMORNUGGETLIGHT -{ - Color 0.6 1.0 0.3 - Size 16 - Offset 0 16 0 - Attenuate 1 -} -Object ArmorNuggetItem -{ - Frame "XZW1" { light "ARMORNUGGETLIGHT" } -} -PointLight HEALTHNUGGETLIGHT -{ - Color 0.2 0.4 1.0 - Size 16 - Offset 0 16 0 - Attenuate 1 -} -Object HealthNuggetItem -{ - Frame "XZW1" { light "HEALTHNUGGETLIGHT" } -} - -PointLight GEOMHEALTHLIGHT -{ - Color 0.2 0.4 1.0 - Size 30 - Offset 0 16 0 - Attenuate 1 -} -Object TetraHealthItem -{ - Frame "XZW1" { light "GEOMHEALTHLIGHT" } -} -Object CubeHealthItem -{ - Frame "XZW1" { light "GEOMHEALTHLIGHT" } -} - -PointLight REFRESHERLIGHT -{ - Color 0.7 0.2 1.0 - Size 40 - Offset 0 16 0 - Attenuate 1 -} -Object RefresherItem -{ - Frame "XZW1" { light "REFRESHERLIGHT" } -} - -PointLight GHOSTARTILIGHT -{ - Color 0.8 0.6 1.0 - Size 40 - Offset 0 16 0 - Attenuate 1 -} -Object GhostArtifact -{ - Frame "XZW1" { light "GHOSTARTILIGHT" } -} - -PointLight GRAVITYLIGHT -{ - Color 0.3 0.8 1.0 - Size 40 - Offset 0 16 0 - Attenuate 1 -} -Object GravitySuppressor -{ - Frame "XZW1" { light "GRAVITYLIGHT" } -} - -PointLight INVINCIBALLLIGHT -{ - Color 0.8 0.2 0.0 - Size 40 - Offset 0 16 0 - Attenuate 1 -} -Object FuckingInvinciball -{ - Frame "XZW1" { light "INVINCIBALLLIGHT" } -} - -PointLight RAGELIGHT -{ - Color 1.0 0.1 0.0 - Size 40 - Offset 0 16 0 - Attenuate 1 -} -Object Ragekit -{ - Frame "XZW1" { light "RAGELIGHT" } -} - -PointLight OMNISIGHTLIGHT -{ - Color 0.3 0.0 0.0 - Size 20 - Offset 0 16 0 - Attenuate 1 -} -Object Omnisight -{ - Frame "XZW1" { light "OMNISIGHTLIGHT" } -} - -FlickerLight2 LAMPLIGHT -{ - Color 0.6 1.0 0.7 - Size 350 - SecondarySize 358 - Interval 0.1 - Offset 0 8 0 - Attenuate 1 -} -Object CompanionLamp -{ - Frame "XZW1B" { light "LAMPLIGHT" } -} - -PointLight BARRIERLIGHT -{ - Color 0.1 1.0 0.0 - Size 40 - Offset 0 16 0 - Attenuate 1 -} -Object EBarrier -{ - Frame "XZW1" { light "BARRIERLIGHT" } -} - -FlickerLight2 MYKRADVOLIGHT1 -{ - Color 0.9 0.6 1.0 - Size 70 - SecondarySize 80 - Interval 0.1 - Attenuate 1 -} -PulseLight MYKRADVOLIGHT2 -{ - Color 0.4 0.1 0.7 - Size 90 - SecondarySize 60 - Interval 2 - Attenuate 1 -} -PulseLight MYKRADVOLIGHT3 -{ - Color 0.7 0.1 0.4 - Size 60 - SecondarySize 90 - Interval 2 - Attenuate 1 -} - -Object MykradvoX -{ - Frame "MKRV" { light "MYKRADVOLIGHT1" } -} -Object MykradvoX2 -{ - Frame "XZW1A" { light "MYKRADVOLIGHT2" } - Frame "XZW1B" { light "MYKRADVOLIGHT3" } -} - -PointLight DIVINESLIGHT -{ - Color 0.6 0.9 1.0 - Size 90 - Attenuate 1 -} - -Object DivineSpriteX -{ - Frame "DVSP" { light "DIVINESLIGHT" } -} - -PointLight DEVASLIGHT -{ - Color 0.7 0.9 1.0 - Size 90 - Attenuate 1 - Subtractive 1 -} - -Object AngerySigilX -{ - Frame "BLPS" { light "DEVASLIGHT" } -} - -PointLight SAFETYLIGHT -{ - Color 0.2 1.0 0.3 - Size 50 - Attenuate 1 -} - -Object SafetyTether -{ - Frame "XZW1B" { light "SAFETYLIGHT" } -} diff --git a/gldefs.pp b/gldefs.pp deleted file mode 100644 index 7cf061c5b..000000000 --- a/gldefs.pp +++ /dev/null @@ -1,111 +0,0 @@ -HardwareShader PostProcess beforebloom -{ - Name "WaterWarp" - Shader "shaders/pp/WaterWarp.fp" 330 - Texture warptex "textures/warptex.png" - Texture fluidtex "textures/wetwarp.png" - Uniform float dfact - Uniform float timer - Uniform vec3 lightcol -} -HardwareShader PostProcess beforebloom -{ - Name "LavaWarp" - Shader "shaders/pp/LavaWarp.fp" 330 - Texture warptex "textures/warptex.png" - Texture fluidtex "textures/lavawarp.png" - Uniform float dfact - Uniform float timer - Uniform vec3 lightcol -} -HardwareShader PostProcess beforebloom -{ - Name "SlimeWarp" - Shader "shaders/pp/SlimeWarp.fp" 330 - Texture warptex "textures/warptex.png" - Texture fluidtex "textures/slimewarp.png" - Uniform float dfact - Uniform float timer - Uniform vec3 lightcol -} -HardwareShader PostProcess beforebloom -{ - Name "ZoomBlur" - Shader "shaders/pp/ZoomBlur.fp" 330 - Uniform float Str - Uniform float Fade - Uniform vec2 CenterSpot -} -HardwareShader PostProcess beforebloom -{ - Name "SilverScope" - Shader "shaders/pp/SilverScope.fp" 330 -} -HardwareShader PostProcess beforebloom -{ - Name "BarrierShader" - Shader "shaders/pp/Barrier.fp" 330 - Texture WarpTex "textures/heattex.png" - Uniform float timer -} -HardwareShader PostProcess beforebloom -{ - Name "GhostShader" - Shader "shaders/pp/Ghostscreen.fp" 330 -} -HardwareShader PostProcess scene -{ - Name "InvinciShader" - Shader "shaders/pp/Invinciscreen.fp" 330 - Uniform float str -} - -HardwareShader PostProcess scene -{ - Name "RagekitShader" - Shader "shaders/pp/Ragescreen.fp" 330 - Texture WarpTex "textures/ragewarp.png" - Texture NoiseTex "textures/graynoise.png" - Uniform float timer - Uniform float xtrastr -} - -HardwareShader PostProcess scene -{ - Name "DevastationShader" - Shader "shaders/pp/Devascreen.fp" 330 - Texture BumpTex "textures/heattex.png" - Texture WarpTex1 "textures/devawarp1.png" - Texture WarpTex2 "textures/devawarp2.png" - Texture NoiseTex "textures/graynoise.png" - Uniform float timer - Uniform float xtrastr -} - -HardwareShader PostProcess scene -{ - Name "DivineShader" - Shader "shaders/pp/Diviscreen.fp" 330 - Texture BumpTex "textures/frosttex.png" - Texture WarpTex "textures/smoketex.png" - Texture NoiseTex "textures/graynoise.png" - Uniform float timer - Uniform float str -} - -HardwareShader PostProcess scene -{ - Name "Glitch" - Shader "shaders/pp/Glitch.fp" 330 - Uniform float Timer - Uniform float str1 - Uniform float str2 -} -HardwareShader PostProcess scene -{ - Name "Grain" - Shader "shaders/pp/Grain.fp" 330 - Uniform float Timer - Uniform float ni - Texture NoiseTexture "textures/rgbnoise.png" -} diff --git a/gldefs.shinemaps b/gldefs.shinemaps deleted file mode 100644 index 3baef3e64..000000000 --- a/gldefs.shinemaps +++ /dev/null @@ -1,83 +0,0 @@ -HardwareShader Texture "models/matcap/blumap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/darkmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/dekamap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/goldmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/greenmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/invincimap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/pinkmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/puromap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/purpmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/ragemap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/redmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/silvermap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/leadmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/barriermap.png" -{ - Shader "shaders/glsl/Shinemap.fp" - Define "BARRIER_MAP" - Texture "bartex" "models/barrierbar.png" -} -HardwareShader Texture "models/matcap/errormap.png" -{ - Shader "shaders/glsl/Shinemap.fp" - Define "AMBIENT_GLOW" -} -HardwareShader Texture "models/matcap/glassmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/kinymap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/nkrknmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/nokromap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} -HardwareShader Texture "models/matcap/pearlmap.png" -{ - Shader "shaders/glsl/Shinemap.fp" -} diff --git a/gldefs.silverbullet b/gldefs.silverbullet deleted file mode 100644 index b6591fc66..000000000 --- a/gldefs.silverbullet +++ /dev/null @@ -1,5 +0,0 @@ -HardwareShader Texture "models/SilverBulletJetSmoke.png" -{ - Shader "shaders/glsl/JetSmoke.fp" - Texture "smoketex" "models/SilverBulletJetNoise.png" -} diff --git a/gldefs.sparkster b/gldefs.sparkster deleted file mode 100644 index 632fdea0b..000000000 --- a/gldefs.sparkster +++ /dev/null @@ -1,39 +0,0 @@ -HardwareShader Texture "models/Sparkster.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/Sparkster_mask.png" - Texture "envtex" "models/matcap/dekamap.png" -} -HardwareShader Texture "models/SparksterBall.png" -{ - Shader "shaders/glsl/Shinemask.fp" - Texture "masktex" "models/SparksterBall_mask.png" - Texture "envtex" "models/matcap/dekamap.png" -} - -FlickerLight2 SPARKLIGHT -{ - Color 0.8 1.0 0.4 - Size 70 - SecondarySize 80 - Attenuate 1 - Interval 0.4 -} - -FlickerLight2 HUGESPARKLIGHT -{ - Color 0.8 1.0 0.4 - Size 150 - SecondarySize 160 - Attenuate 1 - Interval 0.4 -} - -Object BiosparkBall -{ - Frame "BSPK" { light "SPARKLIGHT" } -} -Object BigBiospark -{ - Frame "HSPK" { light "HUGESPARKLIGHT" } -} diff --git a/gldefs.txt b/gldefs.txt new file mode 100644 index 000000000..6581c8217 --- /dev/null +++ b/gldefs.txt @@ -0,0 +1,28 @@ +// base stuff +#include "gldefs/pp.txt" +#include "gldefs/envmaps.txt" +#include "gldefs/misc.txt" +#include "gldefs/demolitionist.txt" +// items +#include "gldefs/items/ammo.txt" +#include "gldefs/items/pickups.txt" +#include "gldefs/items/keys.txt" +#include "gldefs/items/funstuff.txt" +// weapons +#include "gldefs/weapons/deepimpact.txt" +#include "gldefs/weapons/explodiumgun.txt" +#include "gldefs/weapons/spreadgun.txt" +#include "gldefs/weapons/wallbuster.txt" +#include "gldefs/weapons/eviscerator.txt" +#include "gldefs/weapons/hellblazer.txt" +#include "gldefs/weapons/sparkster.txt" +#include "gldefs/weapons/silverbullet.txt" +#include "gldefs/weapons/candygun.txt" +#include "gldefs/weapons/ynykron.txt" +// dlc weaponset +#include "gldefs/dlc/dlcammo.txt" +#include "gldefs/dlc/hammer.txt" +//#include "gldefs/dlc/plasmablast.txt" +#include "gldefs/dlc/sheenhmg.txt" +#include "gldefs/dlc/quadravol.txt" +#include "gldefs/dlc/mortalrifle.txt" diff --git a/gldefs.ynykron b/gldefs.ynykron deleted file mode 100644 index 0fa89746d..000000000 --- a/gldefs.ynykron +++ /dev/null @@ -1,17 +0,0 @@ -HardwareShader Texture "models/YnykronSmoke.png" -{ - Shader "shaders/glsl/YnykronSmoke.fp" - Texture "smoketex" "models/YnykronSmokeNoise.png" -} - -PointLight YNYKRONHALOLIGHT -{ - Color 0.875 0.125 1.0 - Size 400 - Attenuate 1 -} - -Object YnykronHalo -{ - Frame "MHAL" { light "YNYKRONHALOLIGHT" } -} diff --git a/gldefs/demolitionist.txt b/gldefs/demolitionist.txt new file mode 100644 index 000000000..9bab1d83c --- /dev/null +++ b/gldefs/demolitionist.txt @@ -0,0 +1,486 @@ +// player + +Material Texture "models/DemoFace_Blank.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Blink.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Booty.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Dead.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Default.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Dizzy.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Evil.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Grin.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Hurt.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_HurtLeft.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_HurtRight.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Off.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Ouch.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_OuchLeft.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_OuchRight.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Sad.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Smug.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Unamused.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoFace_Wink.png" +{ + Brightmap "models/DemoFace_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoFace_mask.png" + Texture "envtex" "models/envmap/glss4env.png" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".6" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTags.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsBlue.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsCyan.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsDragonfly.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsGold.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsMagenta.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsOrange.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsPeach.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsPink.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsPurple.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsRed.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsViolet.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsWhite.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsYellow.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsBlack.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoTagsRust.png" +{ + Brightmap "models/DemoTags_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoTags_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/DemoArms.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoArms_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Texture "envtex2" "models/envmap/iceenv.png" + Texture "rimtex2" "models/envmap/icerim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1.5" "1.2" "1." + Uniform vec3 "RimFact" = "1.3" "1.4" "1." + Uniform vec3 "RimStep" = "0." "0." ".5" +} +Material Texture "models/DemoBody.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoBody_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Texture "envtex2" "models/envmap/iceenv.png" + Texture "rimtex2" "models/envmap/icerim.png" + Texture "envtex3" "models/envmap/ekaenv.png" + Texture "rimtex3" "models/envmap/ekarim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = "1.5" "1.2" ".8" + Uniform vec3 "RimFact" = "1.3" "1.4" ".9" + Uniform vec3 "RimStep" = "0." "0." "0." +} +Material Texture "models/DemoHead.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoHead_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Texture "envtex2" "models/envmap/iceenv.png" + Texture "rimtex2" "models/envmap/icerim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1.5" "1.2" "1." + Uniform vec3 "RimFact" = "1.3" "1.4" "1." + Uniform vec3 "RimStep" = "0." "0." ".5" +} +Material Texture "models/DemoLegs.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoLegs_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Texture "envtex2" "models/envmap/iceenv.png" + Texture "rimtex2" "models/envmap/icerim.png" + Texture "envtex3" "models/envmap/lavaenv.png" + Texture "rimtex3" "models/envmap/lavarim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = "1.5" "1.2" ".8" + Uniform vec3 "RimFact" = "1.3" "1.4" ".9" + Uniform vec3 "RimStep" = "0." "0." "0." +} +Material Texture "models/DemoKeys.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoKeys_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Texture "envtex2" "models/envmap/goldenv.png" + Texture "rimtex2" "models/envmap/goldrim.png" + Texture "envtex3" "models/envmap/iceenv.png" + Texture "rimtex3" "models/envmap/icerim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = ".9" ".8" ".5" + Uniform vec3 "RimFact" = "1.2" ".9" ".8" + Uniform vec3 "RimStep" = "0." "0." ".5" +} +Material Texture "models/DemoMisc.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoMisc_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Texture "envtex2" "models/envmap/silverenv.png" + Texture "rimtex2" "models/envmap/silverrim.png" + Texture "envtex3" "models/envmap/iceenv.png" + Texture "rimtex3" "models/envmap/icerim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = "1.2" ".9" ".5" + Uniform vec3 "RimFact" = "1.1" "1.2" ".8" + Uniform vec3 "RimStep" = ".2" "0." "0." +} +Material Texture "models/DemoSoft.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DemoSoft_mask.png" + Texture "envtex" "models/envmap/darkenv.png" + Texture "rimtex" "models/envmap/darkrim.png" + Uniform vec3 "EnvFact" = ".3" "1." "1." + Uniform vec3 "RimFact" = ".5" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" + Define "RIM_LIGHTING" + Define "ENVFACT" = ".3" + Define "RIMFACT" = ".5" + Define "RIMSTEP" = ".0" +} diff --git a/gldefs/dlc/dlcammo.txt b/gldefs/dlc/dlcammo.txt new file mode 100644 index 000000000..297eefe27 --- /dev/null +++ b/gldefs/dlc/dlcammo.txt @@ -0,0 +1,151 @@ +// dlc ammunition + +Material Texture "models/SheenBullet.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SheenBullet_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "envtex2" "models/envmap/telenv.png" + Texture "rimtex2" "models/envmap/telrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".9" "1.1" "1." + Uniform vec3 "RimFact" = ".8" "1.3" "1." + Uniform vec3 "RimStep" = ".2" "0." ".5" +} +Material Texture "models/SheenBullet_Fired.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SheenBullet_Fired_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "envtex2" "models/envmap/telenv.png" + Texture "rimtex2" "models/envmap/telrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".9" "1.1" "1." + Uniform vec3 "RimFact" = ".8" "1.3" "1." + Uniform vec3 "RimStep" = ".2" "0." ".5" +} +Material Texture "models/SheenAmmoBox.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SheenAmmoBox_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "envtex2" "models/envmap/telenv.png" + Texture "rimtex2" "models/envmap/telrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".7" ".8" "1." + Uniform vec3 "RimFact" = ".8" ".9" "1." + Uniform vec3 "RimStep" = ".2" "0." ".5" +} +Material Texture "models/QuadCell.png" +{ + Brightmap "models/QuadCell_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/QuadCell_mask.png" + Texture "envtex" "models/envmap/lavaenv.png" + Texture "rimtex" "models/envmap/lavarim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".8" ".8" "1." + Uniform vec3 "RimFact" = ".9" ".9" "1." + Uniform vec3 "RimStep" = "0." ".2" ".5" +} +Material Texture "models/QuadCell_Used.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/QuadCell_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".8" ".8" "1." + Uniform vec3 "RimFact" = ".9" ".9" "1." + Uniform vec3 "RimStep" = "0." ".2" ".5" +} + +PointLight QUADAMMOLIGHT +{ + Color 1.0 0.8 0.4 + Size 20 + Offset 0 16 0 + Attenuate 1 +} +Object QuadravolAmmo +{ + Frame XZW1 { light QUADAMMOLIGHT } +} +Object QuadravolAmmo2 +{ + Frame XZW1 { light QUADAMMOLIGHT } +} +Object QuadravolAmmo3 +{ + Frame XZW1 { light QUADAMMOLIGHT } +} + +/*PointLight KINYLUMAMMOLIGHT +{ + Color 0.2 0.8 1.0 + Size 20 + Offset 0 16 0 + Attenuate 1 +} +PointLight NOKRONAMMOLIGHT +{ + Color 1.0 0.2 0.8 + Size 20 + Offset 0 16 0 + Attenuate 1 +} +Object SparksterBAmmo +{ + Frame XZW1 { light KINYLUMAMMOLIGHT } +} +Object SparksterBAmmo2 +{ + Frame XZW1 { light KINYLUMAMMOLIGHT } +} +Object SparksterBAmmo3 +{ + Frame XZW1 { light KINYLUMAMMOLIGHT } +} +Object SparksterRAmmo +{ + Frame XZW1 { light NOKRONAMMOLIGHT } +} +Object SparksterRAmmo2 +{ + Frame XZW1 { light NOKRONAMMOLIGHT } +} +Object SparksterRAmmo3 +{ + Frame XZW1 { light NOKRONAMMOLIGHT } +}*/ + +PointLight MISTERAMMOLIGHT +{ + Color 0.5 0.2 0.4 + Size 20 + Offset 0 12 0 + Attenuate 1 +} +Object MisterAmmo +{ + Frame XZW1 { light MISTERAMMOLIGHT } +} + +PointLight MISTERGAMMOLIGHT +{ + Color 0.0 0.5 0.2 + Size 15 + Offset 0 16 0 + Attenuate 1 +} +Object MisterGAmmo +{ + Frame XZW1 { light MISTERGAMMOLIGHT } +} diff --git a/gldefs/dlc/hammer.txt b/gldefs/dlc/hammer.txt new file mode 100644 index 000000000..b229d9bf8 --- /dev/null +++ b/gldefs/dlc/hammer.txt @@ -0,0 +1,12 @@ +// itamex hammer + +Material Texture "models/CombatHammer.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/CombatHammer_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1.2" "1." "1." + Uniform vec3 "RimFact" = "1.5" "1." "1." + Uniform vec3 "RimStep" = ".4" ".5" ".5" +} diff --git a/gldefs/dlc/mortalrifle.txt b/gldefs/dlc/mortalrifle.txt new file mode 100644 index 000000000..b08f7893c --- /dev/null +++ b/gldefs/dlc/mortalrifle.txt @@ -0,0 +1,148 @@ +// mortal rifle + +Material Texture "models/MortalSight.png" +{ + Brightmap "brightmaps/fullbright.png" + Shader "shaders/glsl/Overbright.fp" + Uniform float "OverFact" = "4." +} +Material Texture "models/MortalRifle.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/MortalRifle_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Texture "envtex2" "models/envmap/iceenv.png" + Texture "rimtex2" "models/envmap/icerim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1.5" "1." "1." + Uniform vec3 "RimFact" = "1.2" "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/MortalMag.png" +{ + Brightmap "models/MortalMag_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/MortalMag_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Texture "envtex2" "models/envmap/iceenv.png" + Texture "rimtex2" "models/envmap/icerim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1.5" "1." "1." + Uniform vec3 "RimFact" = "1.2" "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/MortalMag_Empty.png" +{ + Brightmap "models/MortalMag_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/MortalMag_Empty_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1.5" "1." "1." + Uniform vec3 "RimFact" = "1.2" "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/MortalRound.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/MortalRound_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/MortalRound_Used.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/MortalRound_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/MortalGrenade.png" +{ + Brightmap "models/MortalGrenade_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/MortalGrenade_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/MortalGrenade_Used.png" +{ + Brightmap "models/MortalGrenade_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/MortalGrenade_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/MortalLED.png" +{ + Shader "shaders/glsl/CanvasProxy.fp" + Texture "scrtex" "MORTLED1" + Uniform int "CanvasFlags" = "0x00" +} +Material Texture "models/MortalLED2.png" +{ + Shader "shaders/glsl/CanvasProxy.fp" + Texture "scrtex" "MORTLED2" + Uniform int "CanvasFlags" = "0x04" // key out pure black +} + +PointLight MISTERRIFLELIGHT +{ + Color 0.5 0.2 0.4 + Size 20 + Offset 0 10 0 + Attenuate 1 +} +Object MisterRifle +{ + Frame XZW1 { light MISTERRIFLELIGHT } +} + +PointLight MISTERMAGLIGHT +{ + Color 0.5 0.2 0.4 + Size 20 + Offset 0 4 0 + Attenuate 1 +} +Object MisterMag +{ + Frame XZW1 { light MISTERMAGLIGHT } +} + +PointLight MISTERGRENADELIGHT +{ + Color 0.0 1.0 0.4 + Size 80 + Offset 0 3 0 + Attenuate 1 +} +Object MisterGrenade +{ + Frame XZW1 { light MISTERGRENADELIGHT } +} +PointLight MISTERSUBGRENADELIGHT +{ + Color 0.0 0.75 0.3 + Size 40 + Offset 0 2 0 + Attenuate 1 +} +Object MisterSubGrenade +{ + Frame XZW1 { light MISTERSUBGRENADELIGHT } +} + diff --git a/gldefs/dlc/plasmablast.txt b/gldefs/dlc/plasmablast.txt new file mode 100644 index 000000000..3bd182afa --- /dev/null +++ b/gldefs/dlc/plasmablast.txt @@ -0,0 +1,51 @@ +// plasma blaster + +Material Texture "models/PlasmaBlast.png" +{ + Brightmap "models/PlasmaBlast_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/PlasmaBlast_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/PlasmaLED_R.png" +{ + Shader "shaders/glsl/CanvasProxy.fp" + Texture "scrtex" "PLASBLDR" + Uniform int "CanvasFlags" = "0x00" +} +Material Texture "models/PlasmaLED_L.png" +{ + Shader "shaders/glsl/CanvasProxy.fp" + Texture "scrtex" "PLASBLDL" + Uniform int "CanvasFlags" = "0x00" +} +Material Texture "models/PlasmaBlast_1stR.png" +{ + Shader "shaders/glsl/PlasmaBlast.fp" + Texture "masktex" "models/PlasmaBlast_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "fadetex" "PLASBFDR" + Texture "battex" "models/PlasmaBlast_battery.png" + Texture "chgtex" "models/PlasmaBlast_charge.png" + Texture "gradtex" "models/PlasmaBlast_grad.png" + Texture "noisetex" "textures/roughwarp.png" + Uniform vec3 "EnvParams" = "1." "1." "0." +} +Material Texture "models/PlasmaBlast_1stL.png" +{ + Shader "shaders/glsl/PlasmaBlast.fp" + Texture "masktex" "models/PlasmaBlast_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "fadetex" "PLASBFDL" + Texture "battex" "models/PlasmaBlast_battery.png" + Texture "chgtex" "models/PlasmaBlast_charge.png" + Texture "gradtex" "models/PlasmaBlast_grad.png" + Texture "noisetex" "textures/roughwarp.png" + Uniform vec3 "EnvParams" = "1." "1." "0." +} diff --git a/gldefs/dlc/quadravol.txt b/gldefs/dlc/quadravol.txt new file mode 100644 index 000000000..05ebda24a --- /dev/null +++ b/gldefs/dlc/quadravol.txt @@ -0,0 +1,66 @@ +// quadravol + +Material Texture "models/Quadravol.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Quadravol_mask.png" + Texture "envtex" "models/envmap/darkenv.png" + Texture "rimtex" "models/envmap/darkrim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".4" ".8" "1." + Uniform vec3 "RimFact" = ".6" ".9" "1." + Uniform vec3 "RimStep" = "0." ".2" ".5" +} +Material Texture "models/QuadLED.png" +{ + Shader "shaders/glsl/CanvasProxy.fp" + Texture "scrtex" "QUADRLED" + Uniform int "CanvasFlags" = "0x00" +} + +PointLight QUADP1LIGHT +{ + Color 1.0 0.5 0.1 + Size 250 + Attenuate 1 +} +PointLight QUADP2LIGHT +{ + Color 1.0 0.5 0.1 + Size 300 + Attenuate 1 +} +PointLight QUADP3LIGHT +{ + Color 1.0 0.5 0.1 + Size 350 + Attenuate 1 +} +PointLight QUADPSLIGHT +{ + Color 1.0 0.5 0.1 + Size 150 + Attenuate 1 +} +Object QuadProj +{ + Frame QFBL { light QUADP1LIGHT } +} +Object QuadProj2 +{ + Frame QFBL { light QUADP2LIGHT } +} +Object QuadProj3 +{ + Frame QFBL { light QUADP3LIGHT } +} +Object QuadProjSub +{ + Frame QFBL { light QUADPSLIGHT } +} +Object QuadProjSub2 +{ + Frame QFBL { light QUADPSLIGHT } +} diff --git a/gldefs/dlc/sheenhmg.txt b/gldefs/dlc/sheenhmg.txt new file mode 100644 index 000000000..4c6ee0aa3 --- /dev/null +++ b/gldefs/dlc/sheenhmg.txt @@ -0,0 +1,32 @@ +// sheen hmg + +Material Texture "models/SheenHMG.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SheenHMG_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".7" ".6" "1." + Uniform vec3 "RimFact" = ".9" ".4" "1." + Uniform vec3 "RimStep" = "0." ".2" ".5" +} +Material Texture "models/SheenLED.png" +{ + Shader "shaders/glsl/CanvasProxy.fp" + Texture "scrtex" "SHEENLED" + Uniform int "CanvasFlags" = "0x00" +} + +PointLight SHEENTLIGHT +{ + Color 1.0 0.7 0.2 + Size 200 + Attenuate 1 +} +Object SheenTrail +{ + Frame "XZW1" { light "SHEENTLIGHT" } +} diff --git a/gldefs/envmaps.txt b/gldefs/envmaps.txt new file mode 100644 index 000000000..dce01eb7f --- /dev/null +++ b/gldefs/envmaps.txt @@ -0,0 +1,197 @@ +// base envmaps + +Material Texture "models/envmap/blodenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/blodrim.png" + Uniform vec3 "EnvParams" = ".5" "1.5" ".35" +} +Material Texture "models/envmap/bluenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/blurim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/darkenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/darkrim.png" + Uniform vec3 "EnvParams" = ".3" "1.1" ".5" +} +Material Texture "models/envmap/dekaenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/dekarim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/ekaenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/ekarim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/glassenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/glassrim.png" + Uniform vec3 "EnvParams" = ".5" "1." ".5" +} +Material Texture "models/envmap/glss2env.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/glss2rim.png" + Uniform vec3 "EnvParams" = ".5" "1." ".5" +} +Material Texture "models/envmap/glss3env.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/glss3rim.png" + Uniform vec3 "EnvParams" = ".5" "1." ".5" +} +Material Texture "models/envmap/glss4env.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/glss4rim.png" + Uniform vec3 "EnvParams" = ".5" "1." ".5" +} +Material Texture "models/envmap/glss5env.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/glss5rim.png" + Uniform vec3 "EnvParams" = ".5" "1." ".5" +} +Material Texture "models/envmap/glss6env.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/glss6rim.png" + Uniform vec3 "EnvParams" = ".5" "1." ".5" +} +Material Texture "models/envmap/goldenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/greenenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/greenrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/iceenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvParams" = ".6" "1." ".5" +} +Material Texture "models/envmap/kinyenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/kinyrim.png" + Uniform vec3 "EnvParams" = "1." "1.5" "0." +} +Material Texture "models/envmap/lavaenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/lavarim.png" + Uniform vec3 "EnvParams" = "1." "1.5" ".35" +} +Material Texture "models/envmap/leadenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/nokrenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/nokrrim.png" + Uniform vec3 "EnvParams" = "1." "1.5" "0." +} +Material Texture "models/envmap/nukenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/nukrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".25" +} +Material Texture "models/envmap/ockoenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/ockorim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/pronoenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/pronorim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/puroenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/purorim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/purpenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/purprim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/redenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/redrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/reflenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/reflrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/rfl2env.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/rfl2rim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/silverenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/tarenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/tarrim.png" + Uniform vec3 "EnvParams" = "1." "1.5" ".25" +} +Material Texture "models/envmap/telenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/telrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "models/envmap/watrenv.png" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/watrrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" +} +Material Texture "ERRORENV" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/redrim.png" + Uniform vec3 "EnvParams" = "1." "1." ".5" + Define "AMBIENT_GLOW" +} +Material Texture "BARRIENV" +{ + Shader "shaders/glsl/Envmap.fp" + Texture "rimtex" "models/envmap/glss3rim.png" + Texture "bartex" "models/barrierbar.png" + Uniform vec3 "EnvParams" = ".5" "2." ".3" + Define "BARRIER_MAP" +} diff --git a/gldefs/items/ammo.txt b/gldefs/items/ammo.txt new file mode 100644 index 000000000..9915832d0 --- /dev/null +++ b/gldefs/items/ammo.txt @@ -0,0 +1,389 @@ +// ammunition + +Material Texture "models/ExplodiumBullet.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumBullet_mask.png" + Texture "envtex" "models/envmap/lavaenv.png" + Texture "rimtex" "models/envmap/lavarim.png" + Uniform vec3 "EnvFact" = ".8" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/ExplodiumCasing.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumCasing_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/ExplodiumCasing_Used.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumCasing_Used_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Shell_Normal.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Shell_Normal_mask.png" + Texture "envtex" "models/envmap/ekaenv.png" + Texture "rimtex" "models/envmap/ekarim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Shell_Normal_Used.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Shell_Normal_Used_mask.png" + Texture "envtex" "models/envmap/ekaenv.png" + Texture "rimtex" "models/envmap/ekarim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Shell_Gold.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Shell_Gold_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Texture "envtex2" "models/envmap/goldenv.png" + Texture "rimtex2" "models/envmap/goldrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".4" ".6" "1." + Uniform vec3 "RimFact" = ".8" ".9" "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Shell_Gold_Used.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Shell_Gold_Used_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Texture "envtex2" "models/envmap/goldenv.png" + Texture "rimtex2" "models/envmap/goldrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".4" ".6" "1." + Uniform vec3 "RimFact" = ".8" ".9" "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/EvisceratorShell.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/EvisceratorShell_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = ".8" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/HellblazerMissile.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/HellblazerMissile_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/SparksterAmmo.png" +{ + Brightmap "models/SparksterAmmo_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SparksterAmmo_mask.png" + Texture "envtex" "models/envmap/dekaenv.png" + Texture "rimtex" "models/envmap/dekarim.png" + Uniform vec3 "EnvFact" = ".75" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/SilverBulletAmmo.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SilverBulletAmmo_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "envtex2" "models/envmap/goldenv.png" + Texture "rimtex2" "models/envmap/goldrim.png" + Texture "envtex3" "models/envmap/silverenv.png" + Texture "rimtex3" "models/envmap/silverrim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = ".6" "1.1" ".8" + Uniform vec3 "RimFact" = ".5" "1.3" ".9" + Uniform vec3 "RimStep" = "0." "0." ".2" +} +Material Texture "models/SilverBulletAmmo_Empty.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SilverBulletAmmo_Empty_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/SilverBulletBullet.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SilverBulletBullet_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Texture "envtex2" "models/envmap/silverenv.png" + Texture "rimtex2" "models/envmap/silverrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1.1" ".8" "1." + Uniform vec3 "RimFact" = "1.3" ".9" "1." + Uniform vec3 "RimStep" = "0." ".2" ".5" +} +Material Texture "models/SilverBulletBullet_Used.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SilverBulletBullet_Used_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Texture "envtex2" "models/envmap/silverenv.png" + Texture "rimtex2" "models/envmap/silverrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1.1" ".8" "1." + Uniform vec3 "RimFact" = "1.3" ".9" "1." + Uniform vec3 "RimStep" = "0." ".2" ".5" +} +Material Texture "models/CandyBullet.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumBullet_mask.png" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Uniform vec3 "EnvFact" = ".9" "1." "1." + Uniform vec3 "RimFact" = ".4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/CandyCasing.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumCasing_mask.png" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/CandyCasing_Used.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumCasing_Used_mask.png" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/YnykronAmmo.png" +{ + Brightmap "models/YnykronAmmo_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/YnykronAmmo_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Texture "envtex2" "models/envmap/dekaenv.png" + Texture "rimtex2" "models/envmap/dekarim.png" + Texture "envtex3" "models/envmap/puroenv.png" + Texture "rimtex3" "models/envmap/purorim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = ".8" "1.1" ".8" + Uniform vec3 "RimFact" = ".9" ".9" "1.1" + Uniform vec3 "RimStep" = "0." ".3" ".2" +} +Material Texture "models/YnykronRod.png" +{ + Brightmap "models/YnykronRod_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/YnykronRod_mask.png" + Texture "envtex" "models/envmap/puroenv.png" + Texture "rimtex" "models/envmap/purorim.png" + Uniform vec3 "EnvFact" = ".8" "1." "1." + Uniform vec3 "RimFact" = "1.1" "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/Fabricator.png" +{ + Brightmap "models/Fabricator_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Fabricator_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Fabricator_Tier2.png" +{ + Brightmap "models/Fabricator_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Fabricator_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Fabricator_Tier3.png" +{ + Brightmap "models/Fabricator_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Fabricator_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Fabricator_Tier4.png" +{ + Brightmap "models/Fabricator_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Fabricator_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvFact" = ".8" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Embiggener.png" +{ + Brightmap "models/Embiggener_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Embiggener_mask.png" + Texture "envtex" "models/envmap/redenv.png" + Texture "rimtex" "models/envmap/redrim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Embiggener_Tier2.png" +{ + Brightmap "models/Embiggener_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Embiggener_mask.png" + Texture "envtex" "models/envmap/greenenv.png" + Texture "rimtex" "models/envmap/greenrim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Embiggener_Tier3.png" +{ + Brightmap "models/Embiggener_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Embiggener_mask.png" + Texture "envtex" "models/envmap/bluenv.png" + Texture "rimtex" "models/envmap/blurim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Embiggener_Tier4.png" +{ + Brightmap "models/Embiggener_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Embiggener_mask.png" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Embiggener_Tier5.png" +{ + Brightmap "models/Embiggener_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Embiggener_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = ".6" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} + +PointLight GOLDSHELLLIGHT +{ + Color 0.7 0.6 0.2 + Size 12 + Offset 0 16 0 + Attenuate 1 +} +Object GoldShell +{ + Frame XZW1 { light GOLDSHELLLIGHT } +} + +PointLight SPARKUNITLIGHT +{ + Color 0.25 0.15 0.3 + Size 20 + Offset 0 16 0 + Attenuate 1 +} +Object SparkUnit +{ + Frame XZW1 { light SPARKUNITLIGHT } +} +Object SparkUnit2 +{ + Frame XZW1 { light SPARKUNITLIGHT } +} + +PointLight FABTIER1LIGHT +{ + Color 0.0 0.3 1.0 + Size 30 + Offset 0 16 0 + Attenuate 1 +} +PointLight FABTIER2LIGHT +{ + Color 0.0 1.0 0.3 + Size 30 + Offset 0 16 0 + Attenuate 1 +} +PointLight FABTIER3LIGHT +{ + Color 1.0 0.3 0.0 + Size 30 + Offset 0 16 0 + Attenuate 1 +} +PointLight FABTIER4LIGHT +{ + Color 1.0 0.9 0.3 + Size 30 + Offset 0 16 0 + Attenuate 1 +} +Object FabricatorTier1 +{ + Frame XZW1 { light FABTIER1LIGHT } +} +Object FabricatorTier2 +{ + Frame XZW1 { light FABTIER2LIGHT } +} +Object FabricatorTier3 +{ + Frame XZW1 { light FABTIER3LIGHT } +} +Object FabricatorTier4 +{ + Frame XZW1 { light FABTIER4LIGHT } +} diff --git a/gldefs/items/funstuff.txt b/gldefs/items/funstuff.txt new file mode 100644 index 000000000..0a8ca5dab --- /dev/null +++ b/gldefs/items/funstuff.txt @@ -0,0 +1,60 @@ +// collectibles and more + +Material Texture "models/SayaBean.png" +{ + Brightmap "models/SayaBean_bright.png" +} +Material Texture "models/SayasMug.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SayasMug_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = ".4" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".4" ".5" ".5" +} +Material Texture "models/DemoPlush.png" +{ + Brightmap "models/DemoPlush_bright.png" +} +Material Texture "models/DemoPlush2.png" +{ + Brightmap "models/DemoPlush2_bright.png" +} +Material Texture "models/KirinPlush.png" +{ + Brightmap "models/KirinPlush_bright.png" +} +Material Texture "models/PerfectlyGeneric.png" +{ + Shader "shaders/glsl/PerfectlyGeneric.fp" +} +Material Texture "models/MothPlush.png" +{ + Brightmap "models/MothPlush_bright.png" +} +Material Texture "models/Chancebox.png" +{ + Brightmap "models/Chancebox_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Chancebox_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvFact" = ".7" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} + +PointLight CHANCELIGHT +{ + Color 1.0 0.7 0.2 + Size 50 + Offset 0 16 0 + Attenuate 1 +} + +Object Chancebox +{ + Frame XZW2 { light CHANCELIGHT } +} diff --git a/gldefs/items/keys.txt b/gldefs/items/keys.txt new file mode 100644 index 000000000..f1f4a8478 --- /dev/null +++ b/gldefs/items/keys.txt @@ -0,0 +1,266 @@ +// keys + +Material Texture "models/DoomRedKey.png" +{ + Brightmap "models/DoomKey_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomKey_mask.png" + Texture "envtex" "models/envmap/redenv.png" + Texture "rimtex" "models/envmap/redrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DoomYellowKey.png" +{ + Brightmap "models/DoomKey_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomKey_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DoomBlueKey.png" +{ + Brightmap "models/DoomKey_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomKey_mask.png" + Texture "envtex" "models/envmap/bluenv.png" + Texture "rimtex" "models/envmap/blurim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DoomGreenKey.png" +{ + Brightmap "models/DoomKey_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomKey_mask.png" + Texture "envtex" "models/envmap/greenenv.png" + Texture "rimtex" "models/envmap/greenrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DoomOrangeKey.png" +{ + Brightmap "models/DoomKey_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomKey_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DoomBlackKey.png" +{ + Brightmap "models/DoomKey_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomKey_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DoomWhiteKey.png" +{ + Brightmap "models/DoomKey_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomKey_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DoomSilverKey.png" +{ + Brightmap "models/DoomKey_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomKey_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DoomKeyLight.png" +{ + Brightmap "brightmaps/Fullbright.png" +} + +Material Texture "models/DoomRedSkull.png" +{ + Brightmap "models/DoomSkull_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomSkull_mask.png" + Texture "envtex" "models/envmap/redenv.png" + Texture "rimtex" "models/envmap/redrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/DoomBlueSkull.png" +{ + Brightmap "models/DoomSkull_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomSkull_mask.png" + Texture "envtex" "models/envmap/bluenv.png" + Texture "rimtex" "models/envmap/blurim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/DoomYellowSkull.png" +{ + Brightmap "models/DoomSkull_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomSkull_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/DoomPurpleSkull.png" +{ + Brightmap "models/DoomSkull_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DoomSkull_mask.png" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} + +pointlight SWWMREDKEY +{ + color 1.0 0.0 0.0 + size 40 + attenuate 1 + offset 0 16 0 +} +pointlight SWWMYELLOWKEY +{ + color 1.0 1.0 0.0 + size 40 + attenuate 1 + offset 0 16 0 +} +pointlight SWWMBLUEKEY +{ + color 0.0 0.0 1.0 + size 40 + attenuate 1 + offset 0 16 0 +} +pointlight SWWMGREENKEY +{ + color 0.0 1.0 0.0 + size 40 + attenuate 1 + offset 0 16 0 +} +pointlight SWWMSILVERKEY +{ + color 0.8 0.9 1.0 + size 40 + attenuate 1 + offset 0 16 0 +} +pointlight SWWMORANGEKEY +{ + color 1.0 0.6 0.0 + size 40 + attenuate 1 + offset 0 16 0 +} +pointlight SWWMPURPLEKEY +{ + color 1.0 0.0 1.0 + size 40 + attenuate 1 + offset 0 16 0 +} +pointlight SWWMCARDLITE +{ + color 0.5 0.5 0.0 + size 20 + attenuate 1 + offset 0 16 0 +} + +object SWWMRedCard +{ + frame XZW1 { light SWWMREDKEY } + frame XZW1B { light SWWMCARDLITE } +} +object SWWMYellowCard +{ + frame XZW1 { light SWWMYELLOWKEY } + frame XZW1B { light SWWMCARDLITE } +} +object SWWMBlueCard +{ + frame XZW1 { light SWWMBLUEKEY } + frame XZW1B { light SWWMCARDLITE } +} +object SWWMGreenCard +{ + frame XZW1 { light SWWMGREENKEY } + frame XZW1B { light SWWMCARDLITE } +} +object SWWMSilverCardKDiZD +{ + frame XZW1 { light SWWMSILVERKEY } + frame XZW1B { light SWWMCARDLITE } +} +object SWWMGreenCardKDiZD +{ + frame XZW1 { light SWWMGREENKEY } + frame XZW1B { light SWWMCARDLITE } +} +object SWWMOrangeCardKDiZD +{ + frame XZW1 { light SWWMORANGEKEY } + frame XZW1B { light SWWMCARDLITE } +} + +object SWWMRedSkull +{ + frame XZW1 { light SWWMREDKEY } +} +object SWWMBlueSkull +{ + frame XZW1 { light SWWMBLUEKEY } +} +object SWWMYellowSkull +{ + frame XZW1 { light SWWMYELLOWKEY } +} +object SWWMPurpleSkull +{ + frame XZW1 { light SWWMPURPLEKEY } +} + +object SWWMKeyGreen +{ + frame XZW1 { light SWWMGREENKEY } +} +object SWWMKeyBlue +{ + frame XZW1 { light SWWMBLUEKEY } +} +object SWWMKeyYellow +{ + frame XZW1 { light SWWMYELLOWKEY } +} +object SWWMKeyRed +{ + frame XZW1 { light SWWMREDKEY } +} diff --git a/gldefs/items/pickups.txt b/gldefs/items/pickups.txt new file mode 100644 index 000000000..b06eb2ac7 --- /dev/null +++ b/gldefs/items/pickups.txt @@ -0,0 +1,442 @@ +// various pickups + +Material Texture "models/Nugget_Armor.png" +{ + Brightmap "models/Nugget_mask.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Nugget_mask.png" + Texture "envtex" "models/envmap/greenenv.png" + Texture "rimtex" "models/envmap/greenrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/Nugget.png" +{ + Brightmap "models/Nugget_mask.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Nugget_mask.png" + Texture "envtex" "models/envmap/bluenv.png" + Texture "rimtex" "models/envmap/blurim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/TetraHealth.png" +{ + Brightmap "models/TetraHealth_mask.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/TetraHealth_mask.png" + Texture "envtex" "models/envmap/bluenv.png" + Texture "rimtex" "models/envmap/blurim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/CubeHealth.png" +{ + Brightmap "models/CubeHealth_mask.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/CubeHealth_mask.png" + Texture "envtex" "models/envmap/bluenv.png" + Texture "rimtex" "models/envmap/blurim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Refresher.png" +{ + Brightmap "models/Refresher_mask.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Refresher_mask.png" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/BlastSuit.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/BlastSuit_mask.png" + Texture "envtex" "models/envmap/ekaenv.png" + Texture "rimtex" "models/envmap/ekarim.png" + Texture "envtex2" "models/envmap/darkenv.png" + Texture "rimtex2" "models/envmap/darkrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1." ".3" "1." + Uniform vec3 "RimFact" = "1." ".5" "1." + Uniform vec3 "RimStep" = ".5" "0." ".5" +} +Material Texture "models/WarArmor.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/WarArmor_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/GhostArtifact.png" +{ + Brightmap "models/GhostArtifact_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/GhostArtifact_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Gravity.png" +{ + Brightmap "models/Gravity_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Gravity_mask.png" + Texture "envtex" "models/envmap/ekaenv.png" + Texture "rimtex" "models/envmap/ekarim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Ragekit.png" +{ + Brightmap "models/Ragekit_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Ragekit_mask.png" + Texture "envtex" "models/envmap/ekaenv.png" + Texture "rimtex" "models/envmap/ekarim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Omnisight.png" +{ + Brightmap "models/Omnisight_bright.png" +} +Material Texture "models/Lamp.png" +{ + Brightmap "models/Lamp_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Lamp_mask.png" + Texture "envtex" "models/envmap/darkenv.png" + Texture "rimtex" "models/envmap/darkrim.png" + Texture "envtex2" "models/envmap/silverenv.png" + Texture "rimtex2" "models/envmap/silverrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Lamp_off.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Lamp_mask.png" + Texture "envtex" "models/envmap/darkenv.png" + Texture "rimtex" "models/envmap/darkrim.png" + Texture "envtex2" "models/envmap/silverenv.png" + Texture "rimtex2" "models/envmap/silverrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Invinciball.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Invinciball_mask.png" + Texture "envtex" "models/envmap/ekaenv.png" + Texture "rimtex" "models/envmap/ekarim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/Moth_White.png" +{ + Brightmap "models/Moth_White_bright.png" +} +Material Texture "models/Barrier.png" +{ + Brightmap "models/Barrier_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Barrier_mask.png" + Texture "envtex" "models/envmap/ekaenv.png" + Texture "rimtex" "models/envmap/ekarim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Sprite "MKRVA0" +{ + Shader "shaders/glsl/Mykradvo.fp" + Texture "warptex" "textures/warptex.png" + Texture "snoisetex" "textures/softnoise.png" +} +Material Texture "models/extra/AnomRingies.png" +{ + Shader "shaders/glsl/Mykradvo2.fp" + Texture "warptex" "textures/heattex.png" +} +Material Sprite "DVSPA0" +{ + Shader "shaders/glsl/Divine.fp" + Texture "snoisetex" "textures/softnoise.png" +} +Material Texture "models/DivineSprite.png" +{ + Brightmap "models/DivineSprite_mask.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DivineSprite_mask.png" + Texture "envtex" "models/envmap/puroenv.png" + Texture "rimtex" "models/envmap/purorim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/DevaSigil.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DevaSigil_mask.png" + Texture "envtex" "models/envmap/ekaenv.png" + Texture "rimtex" "models/envmap/ekarim.png" + Uniform vec3 "EnvFact" = ".5" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/SafetyTether.png" +{ + Brightmap "models/SafetyTether_bright.png" + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SafetyTether_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvFact" = ".5" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/SafetyTether_off.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SafetyTether_mask.png" + Texture "envtex" "models/envmap/silverenv.png" + Texture "rimtex" "models/envmap/silverrim.png" + Uniform vec3 "EnvFact" = ".5" "1." "1." + Uniform vec3 "RimFact" = ".8" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} + +PointLight ARMORNUGGETLIGHT +{ + Color 0.6 1.0 0.3 + Size 16 + Offset 0 16 0 + Attenuate 1 +} +Object ArmorNuggetItem +{ + Frame XZW1 { light ARMORNUGGETLIGHT } +} +PointLight HEALTHNUGGETLIGHT +{ + Color 0.2 0.4 1.0 + Size 16 + Offset 0 16 0 + Attenuate 1 +} +Object HealthNuggetItem +{ + Frame XZW1 { light HEALTHNUGGETLIGHT } +} + +PointLight GEOMHEALTHLIGHT +{ + Color 0.2 0.4 1.0 + Size 30 + Offset 0 16 0 + Attenuate 1 +} +Object TetraHealthItem +{ + Frame XZW1 { light GEOMHEALTHLIGHT } +} +Object CubeHealthItem +{ + Frame XZW1 { light GEOMHEALTHLIGHT } +} + +PointLight REFRESHERLIGHT +{ + Color 0.7 0.2 1.0 + Size 40 + Offset 0 16 0 + Attenuate 1 +} +Object RefresherItem +{ + Frame XZW1 { light REFRESHERLIGHT } +} + +PointLight GHOSTARTILIGHT +{ + Color 0.8 0.6 1.0 + Size 40 + Offset 0 16 0 + Attenuate 1 +} +Object GhostArtifact +{ + Frame XZW1 { light GHOSTARTILIGHT } +} + +PointLight GRAVITYLIGHT +{ + Color 0.3 0.8 1.0 + Size 40 + Offset 0 16 0 + Attenuate 1 +} +Object GravitySuppressor +{ + Frame XZW1 { light GRAVITYLIGHT } +} + +PointLight INVINCIBALLLIGHT +{ + Color 0.8 0.2 0.0 + Size 40 + Offset 0 16 0 + Attenuate 1 +} +Object FuckingInvinciball +{ + Frame XZW1 { light INVINCIBALLLIGHT } +} + +PointLight RAGELIGHT +{ + Color 1.0 0.1 0.0 + Size 40 + Offset 0 16 0 + Attenuate 1 +} +Object Ragekit +{ + Frame XZW1 { light RAGELIGHT } +} + +PointLight OMNISIGHTLIGHT +{ + Color 0.3 0.0 0.0 + Size 20 + Offset 0 16 0 + Attenuate 1 +} +Object Omnisight +{ + Frame XZW1 { light OMNISIGHTLIGHT } +} + +FlickerLight2 LAMPLIGHT +{ + Color 0.6 1.0 0.7 + Size 350 + SecondarySize 358 + Interval 0.1 + Offset 0 8 0 + Attenuate 1 +} +Object CompanionLamp +{ + Frame XZW1B { light LAMPLIGHT } +} + +PointLight BARRIERLIGHT +{ + Color 0.1 1.0 0.0 + Size 40 + Offset 0 16 0 + Attenuate 1 +} +Object EBarrier +{ + Frame XZW1 { light BARRIERLIGHT } +} + +FlickerLight2 MYKRADVOLIGHT1 +{ + Color 0.9 0.6 1.0 + Size 70 + SecondarySize 80 + Interval 0.1 + Offset 0 16 0 + Attenuate 1 +} +PulseLight MYKRADVOLIGHT2 +{ + Color 0.4 0.1 0.7 + Size 90 + SecondarySize 60 + Interval 2 + Offset 0 16 0 + Attenuate 1 +} +PulseLight MYKRADVOLIGHT3 +{ + Color 0.7 0.1 0.4 + Size 60 + SecondarySize 90 + Interval 2 + Offset 0 16 0 + Attenuate 1 +} + +Object MykradvoX +{ + Frame MKRV { light MYKRADVOLIGHT1 } +} +Object MykradvoX2 +{ + Frame XZW1A { light MYKRADVOLIGHT2 } + Frame XZW1B { light MYKRADVOLIGHT3 } +} + +PointLight DIVINESLIGHT +{ + Color 0.6 0.9 1.0 + Size 90 + Offset 0 16 0 + Attenuate 1 +} + +Object DivineSpriteX +{ + Frame DVSP { light DIVINESLIGHT } +} + +PointLight DEVASLIGHT +{ + Color 0.7 0.9 1.0 + Size 90 + Offset 0 16 0 + Attenuate 1 + Subtractive 1 +} + +Object AngerySigilX +{ + Frame BLPS { light DEVASLIGHT } +} + +PointLight SAFETYLIGHT +{ + Color 0.2 1.0 0.3 + Size 50 + Offset 0 16 0 + Attenuate 1 +} + +Object SafetyTether +{ + Frame XZW1B { light SAFETYLIGHT } +} diff --git a/gldefs/misc.txt b/gldefs/misc.txt new file mode 100644 index 000000000..ed4f746e4 --- /dev/null +++ b/gldefs/misc.txt @@ -0,0 +1,154 @@ +// placeholders + +Material Texture "chiptilb" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "chiptilw" + Texture "envtex" "models/envmap/bluenv.png" + Texture "rimtex" "models/envmap/blurim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "chiptilc" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "chiptilw" + Texture "envtex" "models/envmap/kinyenv.png" + Texture "rimtex" "models/envmap/kinyrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "chiptile" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "chiptilw" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "chiptilg" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "chiptilw" + Texture "envtex" "models/envmap/greenenv.png" + Texture "rimtex" "models/envmap/greenrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "chiptilm" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "chiptilw" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "chiptilr" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "chiptilw" + Texture "envtex" "models/envmap/redenv.png" + Texture "rimtex" "models/envmap/redrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "chiptilw" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "chiptilw" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "chiptily" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "chiptilw" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} + +// interface + +Material Texture "graphics/HUD/EnemyBarS.png" +{ + Shader "shaders/glsl/Fuzz.fp" + Define "GRAY_COLORS" + Uniform vec2 "BaseRes" = "50." "3." + Texture "noisetex" "textures/graynoise.png" +} +Material Texture "graphics/HUD/HealthBarS.png" +{ + Shader "shaders/glsl/Fuzz.fp" + Define "GRAY_COLORS" + Uniform vec2 "BaseRes" = "100." "5." + Texture "noisetex" "textures/graynoise.png" +} +Material Texture "graphics/HUD/FuelBarS.png" +{ + Shader "shaders/glsl/Fuzz.fp" + Define "GRAY_COLORS" + Uniform vec2 "BaseRes" = "120." "2." + Texture "noisetex" "textures/graynoise.png" +} +Material Texture "graphics/HUD/EnemyBarD.png" +{ + Shader "shaders/glsl/HealthBarD.fp" + Uniform vec2 "BaseRes" = "70." "23." + Define "TEX_SIZE" = "vec2(70.,23.)" + Texture "noisetex" "textures/graynoise.png" +} +Material Texture "graphics/HUD/HealthBarD.png" +{ + Shader "shaders/glsl/HealthBarD.fp" + Uniform vec2 "BaseRes" = "120." "25." + Texture "noisetex" "textures/graynoise.png" +} +Material Texture "graphics/dsmapfont.png" +{ + Shader "shaders/glsl/AreaName.fp" + Texture "gradtex" "graphics/areaname_grad.png" +} +Material Texture "graphics/dsmapfont_sub.png" +{ + Shader "shaders/glsl/AreaName.fp" + Texture "gradtex" "graphics/areaname_grad.png" +} +Material Texture "graphics/HUD/DemoFace_Barrier.png" +{ + Shader "shaders/glsl/BarrierFace.fp" + Texture "bartex" "models/barrierbar.png" +} +Material Texture "graphics/tempbg.png" +{ + Shader "shaders/glsl/Fuzz.fp" + Uniform vec2 "BaseRes" = "640." "400." + Texture "noisetex" "textures/graynoise.png" +} +Material Texture "graphics/NewLogo.png" +{ + Shader "shaders/glsl/NewLogoAnimated.fp" + // what no 2d arrays does to a mf + Texture "Layer1" "graphics/NewLogo_Layer1.png" + Texture "Layer2" "graphics/NewLogo_Layer2.png" + Texture "Layer3" "graphics/NewLogo_Layer3.png" + Texture "gradtex" "graphics/NewLogo_Grad.png" + Texture "fadetex" "LOGOFADE" +} +Material Sprite "MBRNB0" +{ + Shader "shaders/glsl/Whew.fp" +} diff --git a/gldefs/pp.txt b/gldefs/pp.txt new file mode 100644 index 000000000..3399dfbe6 --- /dev/null +++ b/gldefs/pp.txt @@ -0,0 +1,127 @@ +// postprocess shaders + +HardwareShader PostProcess beforebloom +{ + Name "WaterWarp" + Shader "shaders/pp/WaterWarp.fp" 330 + Texture warptex "textures/warptex.png" + Texture fluidtex "textures/wetwarp.png" + Uniform float dfact + Uniform float timer + Uniform vec3 lightcol +} +HardwareShader PostProcess beforebloom +{ + Name "LavaWarp" + Shader "shaders/pp/LavaWarp.fp" 330 + Texture warptex "textures/warptex.png" + Texture fluidtex "textures/lavawarp.png" + Uniform float dfact + Uniform float timer + Uniform vec3 lightcol +} +HardwareShader PostProcess beforebloom +{ + Name "SlimeWarp" + Shader "shaders/pp/SlimeWarp.fp" 330 + Texture warptex "textures/warptex.png" + Texture fluidtex "textures/slimewarp.png" + Uniform float dfact + Uniform float timer + Uniform vec3 lightcol +} +HardwareShader PostProcess beforebloom +{ + Name "ZoomBlur" + Shader "shaders/pp/ZoomBlur.fp" 330 + Uniform float Str + Uniform float Fade + Uniform vec2 CenterSpot +} +HardwareShader PostProcess beforebloom +{ + Name "WindBlur" + Shader "shaders/pp/WindBlur.fp" 330 + Uniform float Speed + Uniform float Fade + Uniform vec2 WindDir +} +HardwareShader PostProcess beforebloom +{ + Name "SilverScope" + Shader "shaders/pp/SilverScope.fp" 330 +} +HardwareShader PostProcess beforebloom +{ + Name "BarrierShader" + Shader "shaders/pp/Barrier.fp" 330 + Texture WarpTex "textures/heattex.png" + Uniform float timer +} +HardwareShader PostProcess beforebloom +{ + Name "GhostShader" + Shader "shaders/pp/Ghostscreen.fp" 330 +} +HardwareShader PostProcess scene +{ + Name "InvinciShader" + Shader "shaders/pp/Invinciscreen.fp" 330 + Uniform float str +} + +HardwareShader PostProcess scene +{ + Name "RagekitShader" + Shader "shaders/pp/Ragescreen.fp" 330 + Texture WarpTex "textures/ragewarp.png" + Texture NoiseTex "textures/graynoise.png" + Uniform float timer + Uniform float xtrastr +} + +HardwareShader PostProcess scene +{ + Name "DevastationShader" + Shader "shaders/pp/Devascreen.fp" 330 + Texture BumpTex "textures/heattex.png" + Texture WarpTex1 "textures/devawarp1.png" + Texture WarpTex2 "textures/devawarp2.png" + Texture NoiseTex "textures/graynoise.png" + Uniform float timer + Uniform float xtrastr +} + +HardwareShader PostProcess scene +{ + Name "DivineShader" + Shader "shaders/pp/Diviscreen.fp" 330 + Texture BumpTex "textures/frosttex.png" + Texture WarpTex "textures/smoketex.png" + Texture NoiseTex "textures/graynoise.png" + Uniform float timer + Uniform float str +} + +HardwareShader PostProcess scene +{ + Name "Glitch" + Shader "shaders/pp/Glitch.fp" 330 + Uniform float Timer + Uniform float str1 + Uniform float str2 +} +HardwareShader PostProcess scene +{ + Name "Grain" + Shader "shaders/pp/Grain.fp" 330 + Uniform float Timer + Uniform float ni + Texture NoiseTexture "textures/graynoise.png" +} +HardwareShader PostProcess scene +{ + Name "BokehSel" + Shader "shaders/pp/BokehSel.fp" 330 + Uniform float strength +} diff --git a/gldefs/weapons/candygun.txt b/gldefs/weapons/candygun.txt new file mode 100644 index 000000000..3e5d33992 --- /dev/null +++ b/gldefs/weapons/candygun.txt @@ -0,0 +1,28 @@ +// candy gun + +Material Texture "models/CandyGun.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumGun_mask.png" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".9" "1." "1." + Uniform vec3 "RimFact" = ".4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} +Material Texture "models/CandyGun_EmptyMag.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumGun_mask.png" + Texture "envtex" "models/envmap/purpenv.png" + Texture "rimtex" "models/envmap/purprim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".9" "1." "1." + Uniform vec3 "RimFact" = ".4" "1." "1." + Uniform vec3 "RimStep" = "0." ".5" ".5" +} diff --git a/gldefs/weapons/deepimpact.txt b/gldefs/weapons/deepimpact.txt new file mode 100644 index 000000000..d0a9ac8e1 --- /dev/null +++ b/gldefs/weapons/deepimpact.txt @@ -0,0 +1,12 @@ +// deep impact + +Material Texture "models/DeepImpact.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/DeepImpact_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} diff --git a/gldefs/weapons/eviscerator.txt b/gldefs/weapons/eviscerator.txt new file mode 100644 index 000000000..e139b0f2c --- /dev/null +++ b/gldefs/weapons/eviscerator.txt @@ -0,0 +1,12 @@ +// eviscerator + +Material Texture "models/Eviscerator.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Eviscerator_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} diff --git a/gldefs/weapons/explodiumgun.txt b/gldefs/weapons/explodiumgun.txt new file mode 100644 index 000000000..9e119aa47 --- /dev/null +++ b/gldefs/weapons/explodiumgun.txt @@ -0,0 +1,28 @@ +// explodium gun + +Material Texture "models/ExplodiumGun.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumGun_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".3" "1." "1." + Uniform vec3 "RimFact" = ".4" "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} +Material Texture "models/ExplodiumGun_EmptyMag.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/ExplodiumGun_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Define "ENV_LAYERS" = "2" + Uniform vec3 "EnvFact" = ".3" "1." "1." + Uniform vec3 "RimFact" = ".4" "1." "1." + Uniform vec3 "RimStep" = ".2" ".5" ".5" +} diff --git a/gldefs/weapons/hellblazer.txt b/gldefs/weapons/hellblazer.txt new file mode 100644 index 000000000..62618a8d6 --- /dev/null +++ b/gldefs/weapons/hellblazer.txt @@ -0,0 +1,29 @@ +// hellblazer + +Material Texture "models/Hellblazer.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Hellblazer_mask.png" + Texture "envtex" "models/envmap/goldenv.png" + Texture "rimtex" "models/envmap/goldrim.png" + Texture "envtex2" "models/envmap/leadenv.png" + Texture "rimtex2" "models/envmap/leadrim.png" + Texture "envtex3" "models/envmap/silverenv.png" + Texture "rimtex3" "models/envmap/silverrim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = ".3" "1.2" "1.1" + Uniform vec3 "RimFact" = ".2" ".8" "1.3" + Uniform vec3 "RimStep" = "0." ".2" "0." +} + +PointLight BLAZERLIGHT +{ + Color 1.0 0.8 0.3 + Size 120 + Attenuate 1 +} + +Object HellblazerMissile +{ + Frame XZW1 { light BLAZERLIGHT } +} diff --git a/gldefs/weapons/silverbullet.txt b/gldefs/weapons/silverbullet.txt new file mode 100644 index 000000000..d5af486c2 --- /dev/null +++ b/gldefs/weapons/silverbullet.txt @@ -0,0 +1,23 @@ +// silver bullet jet + +Material Texture "models/SilverBullet.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SilverBullet_mask.png" + Texture "envtex" "models/envmap/iceenv.png" + Texture "rimtex" "models/envmap/icerim.png" + Texture "envtex2" "models/envmap/ekaenv.png" + Texture "rimtex2" "models/envmap/ekarim.png" + Texture "envtex3" "models/envmap/goldenv.png" + Texture "rimtex3" "models/envmap/goldrim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = ".7" ".8" "1.1" + Uniform vec3 "RimFact" = ".8" ".9" "1.3" + Uniform vec3 "RimStep" = "0." ".2" "0." +} + +Material Texture "models/SilverBulletJetSmoke.png" +{ + Shader "shaders/glsl/JetSmoke.fp" + Texture "smoketex" "models/SilverBulletJetNoise.png" +} diff --git a/gldefs/weapons/sparkster.txt b/gldefs/weapons/sparkster.txt new file mode 100644 index 000000000..6fc9242b3 --- /dev/null +++ b/gldefs/weapons/sparkster.txt @@ -0,0 +1,51 @@ +// biospark carbine + +Material Texture "models/Sparkster.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Sparkster_mask.png" + Texture "envtex" "models/envmap/dekaenv.png" + Texture "rimtex" "models/envmap/dekarim.png" + Uniform int "EnvLayers" = 1 + Uniform vec3 "EnvFact" = ".75" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} +Material Texture "models/SparksterBall.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/SparksterBall_mask.png" + Texture "envtex" "models/envmap/dekaenv.png" + Texture "rimtex" "models/envmap/dekarim.png" + Uniform int "EnvLayers" = 1 + Uniform vec3 "EnvFact" = ".75" "1." "1." + Uniform vec3 "RimFact" = ".9" "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} + +FlickerLight2 SPARKLIGHT +{ + Color 0.8 1.0 0.4 + Size 70 + SecondarySize 80 + Attenuate 1 + Interval 0.4 +} + +FlickerLight2 HUGESPARKLIGHT +{ + Color 0.8 1.0 0.4 + Size 150 + SecondarySize 160 + Attenuate 1 + Interval 0.4 +} + +Object BiosparkBall +{ + Frame "BSPK" { light "SPARKLIGHT" } +} +Object BigBiospark +{ + Frame "HSPK" { light "HUGESPARKLIGHT" } +} diff --git a/gldefs/weapons/spreadgun.txt b/gldefs/weapons/spreadgun.txt new file mode 100644 index 000000000..f2231cdb0 --- /dev/null +++ b/gldefs/weapons/spreadgun.txt @@ -0,0 +1,12 @@ +// spreadgun + +Material Texture "models/Spreadgun.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Spreadgun_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} diff --git a/gldefs/weapons/wallbuster.txt b/gldefs/weapons/wallbuster.txt new file mode 100644 index 000000000..014243995 --- /dev/null +++ b/gldefs/weapons/wallbuster.txt @@ -0,0 +1,12 @@ +// wallbuster + +Material Texture "models/Wallbuster.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Wallbuster_mask.png" + Texture "envtex" "models/envmap/leadenv.png" + Texture "rimtex" "models/envmap/leadrim.png" + Uniform vec3 "EnvFact" = "1." "1." "1." + Uniform vec3 "RimFact" = "1." "1." "1." + Uniform vec3 "RimStep" = ".5" ".5" ".5" +} diff --git a/gldefs/weapons/ynykron.txt b/gldefs/weapons/ynykron.txt new file mode 100644 index 000000000..e17a3e1ba --- /dev/null +++ b/gldefs/weapons/ynykron.txt @@ -0,0 +1,35 @@ +// ynykron artifact + +Material Texture "models/Ynykron.png" +{ + Shader "shaders/glsl/Envmask.fp" + Texture "masktex" "models/Ynykron_mask.png" + Texture "envtex" "models/envmap/pronoenv.png" + Texture "rimtex" "models/envmap/pronorim.png" + Texture "envtex2" "models/envmap/ockoenv.png" + Texture "rimtex2" "models/envmap/ockorim.png" + Texture "envtex3" "models/envmap/dekaenv.png" + Texture "rimtex3" "models/envmap/dekarim.png" + Define "ENV_LAYERS" = "3" + Uniform vec3 "EnvFact" = ".5" ".9" "1.1" + Uniform vec3 "RimFact" = ".7" "1.1" ".9" + Uniform vec3 "RimStep" = "0." "0." ".3" +} + +Material Texture "models/YnykronSmoke.png" +{ + Shader "shaders/glsl/YnykronSmoke.fp" + Texture "smoketex" "models/YnykronSmokeNoise.png" +} + +PointLight YNYKRONHALOLIGHT +{ + Color 0.875 0.125 1.0 + Size 400 + Attenuate 1 +} + +Object YnykronHalo +{ + Frame "MHAL" { light "YNYKRONHALOLIGHT" } +} diff --git a/graphics/Achievements/AchievementAcid.png b/graphics/Achievements/AchievementAcid.png deleted file mode 100644 index 15a989a26..000000000 Binary files a/graphics/Achievements/AchievementAcid.png and /dev/null differ diff --git a/graphics/Achievements/AchievementAllColl.png b/graphics/Achievements/AchievementAllColl.png index 9deb35098..d3bbf3c56 100644 Binary files a/graphics/Achievements/AchievementAllColl.png and b/graphics/Achievements/AchievementAllColl.png differ diff --git a/graphics/Achievements/AchievementAllItems.png b/graphics/Achievements/AchievementAllItems.png index 8ec75e2e5..4481a4aec 100644 Binary files a/graphics/Achievements/AchievementAllItems.png and b/graphics/Achievements/AchievementAllItems.png differ diff --git a/graphics/Achievements/AchievementAllKills.png b/graphics/Achievements/AchievementAllKills.png index 3fd62ed0c..0a27da08a 100644 Binary files a/graphics/Achievements/AchievementAllKills.png and b/graphics/Achievements/AchievementAllKills.png differ diff --git a/graphics/Achievements/AchievementAllSecrets.png b/graphics/Achievements/AchievementAllSecrets.png index 1fb9ee579..679f9adf9 100644 Binary files a/graphics/Achievements/AchievementAllSecrets.png and b/graphics/Achievements/AchievementAllSecrets.png differ diff --git a/graphics/Achievements/AchievementAnOne.png b/graphics/Achievements/AchievementAnOne.png index c4a954ba7..d592f983a 100644 Binary files a/graphics/Achievements/AchievementAnOne.png and b/graphics/Achievements/AchievementAnOne.png differ diff --git a/graphics/Achievements/AchievementAnom.png b/graphics/Achievements/AchievementAnom.png index 59cdb0938..797277aa0 100644 Binary files a/graphics/Achievements/AchievementAnom.png and b/graphics/Achievements/AchievementAnom.png differ diff --git a/graphics/Achievements/AchievementBalls.png b/graphics/Achievements/AchievementBalls.png index 3b4db0807..a89968050 100644 Binary files a/graphics/Achievements/AchievementBalls.png and b/graphics/Achievements/AchievementBalls.png differ diff --git a/graphics/Achievements/AchievementBarrel.png b/graphics/Achievements/AchievementBarrel.png index e2f9a3003..a32a6ecd5 100644 Binary files a/graphics/Achievements/AchievementBarrel.png and b/graphics/Achievements/AchievementBarrel.png differ diff --git a/graphics/Achievements/AchievementBarrier.png b/graphics/Achievements/AchievementBarrier.png index c46f35ad7..4a4125318 100644 Binary files a/graphics/Achievements/AchievementBarrier.png and b/graphics/Achievements/AchievementBarrier.png differ diff --git a/graphics/Achievements/AchievementBaseball.png b/graphics/Achievements/AchievementBaseball.png index 3bd0a43d1..e08869031 100644 Binary files a/graphics/Achievements/AchievementBaseball.png and b/graphics/Achievements/AchievementBaseball.png differ diff --git a/graphics/Achievements/AchievementBlaze.png b/graphics/Achievements/AchievementBlaze.png index 6b43c77a2..e1c81f200 100644 Binary files a/graphics/Achievements/AchievementBlaze.png and b/graphics/Achievements/AchievementBlaze.png differ diff --git a/graphics/Achievements/AchievementBonk.png b/graphics/Achievements/AchievementBonk.png index 8a40a8f4f..014358203 100644 Binary files a/graphics/Achievements/AchievementBonk.png and b/graphics/Achievements/AchievementBonk.png differ diff --git a/graphics/Achievements/AchievementBossDash.png b/graphics/Achievements/AchievementBossDash.png index 2163c3923..6307e1f17 100644 Binary files a/graphics/Achievements/AchievementBossDash.png and b/graphics/Achievements/AchievementBossDash.png differ diff --git a/graphics/Achievements/AchievementBrake.png b/graphics/Achievements/AchievementBrake.png index 61604f29b..4ddea7264 100644 Binary files a/graphics/Achievements/AchievementBrake.png and b/graphics/Achievements/AchievementBrake.png differ diff --git a/graphics/Achievements/AchievementBune.png b/graphics/Achievements/AchievementBune.png index 9e21d2b40..22b0c7244 100644 Binary files a/graphics/Achievements/AchievementBune.png and b/graphics/Achievements/AchievementBune.png differ diff --git a/graphics/Achievements/AchievementBustin.png b/graphics/Achievements/AchievementBustin.png index dc655da6e..d5bab8a67 100644 Binary files a/graphics/Achievements/AchievementBustin.png and b/graphics/Achievements/AchievementBustin.png differ diff --git a/graphics/Achievements/AchievementButts.png b/graphics/Achievements/AchievementButts.png index 390c71024..6912c0293 100644 Binary files a/graphics/Achievements/AchievementButts.png and b/graphics/Achievements/AchievementButts.png differ diff --git a/graphics/Achievements/AchievementCandy.png b/graphics/Achievements/AchievementCandy.png index 2f81bce56..0f528c107 100644 Binary files a/graphics/Achievements/AchievementCandy.png and b/graphics/Achievements/AchievementCandy.png differ diff --git a/graphics/Achievements/AchievementCliffyB.png b/graphics/Achievements/AchievementCliffyB.png index 5cb0cb922..b5ed6d3f9 100644 Binary files a/graphics/Achievements/AchievementCliffyB.png and b/graphics/Achievements/AchievementCliffyB.png differ diff --git a/graphics/Achievements/AchievementClonk.png b/graphics/Achievements/AchievementClonk.png index c581d7a07..179b44ad3 100644 Binary files a/graphics/Achievements/AchievementClonk.png and b/graphics/Achievements/AchievementClonk.png differ diff --git a/graphics/Achievements/AchievementConga.png b/graphics/Achievements/AchievementConga.png index 6ffc61a0b..66e2ef4d9 100644 Binary files a/graphics/Achievements/AchievementConga.png and b/graphics/Achievements/AchievementConga.png differ diff --git a/graphics/Achievements/AchievementCrush.png b/graphics/Achievements/AchievementCrush.png index f64d1c5a6..0718d2605 100644 Binary files a/graphics/Achievements/AchievementCrush.png and b/graphics/Achievements/AchievementCrush.png differ diff --git a/graphics/Achievements/AchievementCybully.png b/graphics/Achievements/AchievementCybully.png index 0bec60999..dc15ea2ff 100644 Binary files a/graphics/Achievements/AchievementCybully.png and b/graphics/Achievements/AchievementCybully.png differ diff --git a/graphics/Achievements/AchievementDab.png b/graphics/Achievements/AchievementDab.png new file mode 100644 index 000000000..d5cb76e93 Binary files /dev/null and b/graphics/Achievements/AchievementDab.png differ diff --git a/graphics/Achievements/AchievementDakka.png b/graphics/Achievements/AchievementDakka.png new file mode 100644 index 000000000..ff411b3a1 Binary files /dev/null and b/graphics/Achievements/AchievementDakka.png differ diff --git a/graphics/Achievements/AchievementDeadeye.png b/graphics/Achievements/AchievementDeadeye.png index d07dd40a0..f42bb6a6e 100644 Binary files a/graphics/Achievements/AchievementDeadeye.png and b/graphics/Achievements/AchievementDeadeye.png differ diff --git a/graphics/Achievements/AchievementDeva.png b/graphics/Achievements/AchievementDeva.png index 26169ca09..e2927bca2 100644 Binary files a/graphics/Achievements/AchievementDeva.png and b/graphics/Achievements/AchievementDeva.png differ diff --git a/graphics/Achievements/AchievementDime.png b/graphics/Achievements/AchievementDime.png index be08e939d..ca371177e 100644 Binary files a/graphics/Achievements/AchievementDime.png and b/graphics/Achievements/AchievementDime.png differ diff --git a/graphics/Achievements/AchievementDivine.png b/graphics/Achievements/AchievementDivine.png index f2f63f83d..1d5af4b42 100644 Binary files a/graphics/Achievements/AchievementDivine.png and b/graphics/Achievements/AchievementDivine.png differ diff --git a/graphics/Achievements/AchievementDoodle.png b/graphics/Achievements/AchievementDoodle.png index 03d790b85..f67d2e6ae 100644 Binary files a/graphics/Achievements/AchievementDoodle.png and b/graphics/Achievements/AchievementDoodle.png differ diff --git a/graphics/Achievements/AchievementEverything.png b/graphics/Achievements/AchievementEverything.png index 36fe8035b..de9924864 100644 Binary files a/graphics/Achievements/AchievementEverything.png and b/graphics/Achievements/AchievementEverything.png differ diff --git a/graphics/Achievements/AchievementEzKill.png b/graphics/Achievements/AchievementEzKill.png index 91a6b5136..9415111e8 100644 Binary files a/graphics/Achievements/AchievementEzKill.png and b/graphics/Achievements/AchievementEzKill.png differ diff --git a/graphics/Achievements/AchievementFlight.png b/graphics/Achievements/AchievementFlight.png index 6e98a17a7..975fd2894 100644 Binary files a/graphics/Achievements/AchievementFlight.png and b/graphics/Achievements/AchievementFlight.png differ diff --git a/graphics/Achievements/AchievementFriend.png b/graphics/Achievements/AchievementFriend.png index c8858c648..6d3da2fdb 100644 Binary files a/graphics/Achievements/AchievementFriend.png and b/graphics/Achievements/AchievementFriend.png differ diff --git a/graphics/Achievements/AchievementFuel.png b/graphics/Achievements/AchievementFuel.png index 2d586b876..4e03a83d1 100644 Binary files a/graphics/Achievements/AchievementFuel.png and b/graphics/Achievements/AchievementFuel.png differ diff --git a/graphics/Achievements/AchievementFuller.png b/graphics/Achievements/AchievementFuller.png new file mode 100644 index 000000000..f07286074 Binary files /dev/null and b/graphics/Achievements/AchievementFuller.png differ diff --git a/graphics/Achievements/AchievementGCSandwich.png b/graphics/Achievements/AchievementGCSandwich.png index 4172259c6..de6232512 100644 Binary files a/graphics/Achievements/AchievementGCSandwich.png and b/graphics/Achievements/AchievementGCSandwich.png differ diff --git a/graphics/Achievements/AchievementGEPGun.png b/graphics/Achievements/AchievementGEPGun.png new file mode 100644 index 000000000..d9eea005a Binary files /dev/null and b/graphics/Achievements/AchievementGEPGun.png differ diff --git a/graphics/Achievements/AchievementGhost.png b/graphics/Achievements/AchievementGhost.png index 45eabd4c4..8eb6e5cc5 100644 Binary files a/graphics/Achievements/AchievementGhost.png and b/graphics/Achievements/AchievementGhost.png differ diff --git a/graphics/Achievements/AchievementGib.png b/graphics/Achievements/AchievementGib.png index dd09440d1..86a564c82 100644 Binary files a/graphics/Achievements/AchievementGib.png and b/graphics/Achievements/AchievementGib.png differ diff --git a/graphics/Achievements/AchievementGolden.png b/graphics/Achievements/AchievementGolden.png index 77c15e146..56115703d 100644 Binary files a/graphics/Achievements/AchievementGolden.png and b/graphics/Achievements/AchievementGolden.png differ diff --git a/graphics/Achievements/AchievementGravity.png b/graphics/Achievements/AchievementGravity.png index f98de339b..6b81fcd1c 100644 Binary files a/graphics/Achievements/AchievementGravity.png and b/graphics/Achievements/AchievementGravity.png differ diff --git a/graphics/Achievements/AchievementGrenade.png b/graphics/Achievements/AchievementGrenade.png index 645a6efa1..2dd821fe8 100644 Binary files a/graphics/Achievements/AchievementGrenade.png and b/graphics/Achievements/AchievementGrenade.png differ diff --git a/graphics/Achievements/AchievementHND.png b/graphics/Achievements/AchievementHND.png new file mode 100644 index 000000000..808d945b5 Binary files /dev/null and b/graphics/Achievements/AchievementHND.png differ diff --git a/graphics/Achievements/AchievementHurry.png b/graphics/Achievements/AchievementHurry.png index 9ce74b866..205294648 100644 Binary files a/graphics/Achievements/AchievementHurry.png and b/graphics/Achievements/AchievementHurry.png differ diff --git a/graphics/Achievements/AchievementJump.png b/graphics/Achievements/AchievementJump.png index 63dc3cd3d..b308d70ae 100644 Binary files a/graphics/Achievements/AchievementJump.png and b/graphics/Achievements/AchievementJump.png differ diff --git a/graphics/Achievements/AchievementKancho.png b/graphics/Achievements/AchievementKancho.png index 1cf6f158c..d4b0b172b 100644 Binary files a/graphics/Achievements/AchievementKancho.png and b/graphics/Achievements/AchievementKancho.png differ diff --git a/graphics/Achievements/AchievementKeen.png b/graphics/Achievements/AchievementKeen.png index 3c6a8bddd..1a8c6788c 100644 Binary files a/graphics/Achievements/AchievementKeen.png and b/graphics/Achievements/AchievementKeen.png differ diff --git a/graphics/Achievements/AchievementLead.png b/graphics/Achievements/AchievementLead.png index c4937e599..54626b3f1 100644 Binary files a/graphics/Achievements/AchievementLead.png and b/graphics/Achievements/AchievementLead.png differ diff --git a/graphics/Achievements/AchievementLightning.png b/graphics/Achievements/AchievementLightning.png new file mode 100644 index 000000000..3e9db09af Binary files /dev/null and b/graphics/Achievements/AchievementLightning.png differ diff --git a/graphics/Achievements/AchievementLigma.png b/graphics/Achievements/AchievementLigma.png index 4260f4762..57c46c3b3 100644 Binary files a/graphics/Achievements/AchievementLigma.png and b/graphics/Achievements/AchievementLigma.png differ diff --git a/graphics/Achievements/AchievementLove.png b/graphics/Achievements/AchievementLove.png index 3f9b09887..7f977fb62 100644 Binary files a/graphics/Achievements/AchievementLove.png and b/graphics/Achievements/AchievementLove.png differ diff --git a/graphics/Achievements/AchievementMBF.png b/graphics/Achievements/AchievementMBF.png index 9143823c8..1e9c44960 100644 Binary files a/graphics/Achievements/AchievementMBF.png and b/graphics/Achievements/AchievementMBF.png differ diff --git a/graphics/Achievements/AchievementMatryoshka.png b/graphics/Achievements/AchievementMatryoshka.png index eee41f503..b5c7602b4 100644 Binary files a/graphics/Achievements/AchievementMatryoshka.png and b/graphics/Achievements/AchievementMatryoshka.png differ diff --git a/graphics/Achievements/AchievementMega.png b/graphics/Achievements/AchievementMega.png index 816a92926..2e61b79b2 100644 Binary files a/graphics/Achievements/AchievementMega.png and b/graphics/Achievements/AchievementMega.png differ diff --git a/graphics/Achievements/AchievementMoth.png b/graphics/Achievements/AchievementMoth.png index 3484c1a83..0766c391d 100644 Binary files a/graphics/Achievements/AchievementMoth.png and b/graphics/Achievements/AchievementMoth.png differ diff --git a/graphics/Achievements/AchievementNice.png b/graphics/Achievements/AchievementNice.png index 7cb7c2ce6..5a8d64870 100644 Binary files a/graphics/Achievements/AchievementNice.png and b/graphics/Achievements/AchievementNice.png differ diff --git a/graphics/Achievements/AchievementOneGuy.png b/graphics/Achievements/AchievementOneGuy.png index 2205fa9b9..5cac946b9 100644 Binary files a/graphics/Achievements/AchievementOneGuy.png and b/graphics/Achievements/AchievementOneGuy.png differ diff --git a/graphics/Achievements/AchievementOneHP.png b/graphics/Achievements/AchievementOneHP.png index 8076506c2..f9a6daa3e 100644 Binary files a/graphics/Achievements/AchievementOneHP.png and b/graphics/Achievements/AchievementOneHP.png differ diff --git a/graphics/Achievements/AchievementOneStanding.png b/graphics/Achievements/AchievementOneStanding.png index ed8349186..609555900 100644 Binary files a/graphics/Achievements/AchievementOneStanding.png and b/graphics/Achievements/AchievementOneStanding.png differ diff --git a/graphics/Achievements/AchievementOopsie.png b/graphics/Achievements/AchievementOopsie.png index 90243c9a2..dc7b0cefa 100644 Binary files a/graphics/Achievements/AchievementOopsie.png and b/graphics/Achievements/AchievementOopsie.png differ diff --git a/graphics/Achievements/AchievementPar.png b/graphics/Achievements/AchievementPar.png index f2ef808e8..7591cb86d 100644 Binary files a/graphics/Achievements/AchievementPar.png and b/graphics/Achievements/AchievementPar.png differ diff --git a/graphics/Achievements/AchievementParry.png b/graphics/Achievements/AchievementParry.png index d55c59415..9d236d5b4 100644 Binary files a/graphics/Achievements/AchievementParry.png and b/graphics/Achievements/AchievementParry.png differ diff --git a/graphics/Achievements/AchievementPeace.png b/graphics/Achievements/AchievementPeace.png index cb46a37c8..3917b5a59 100644 Binary files a/graphics/Achievements/AchievementPeace.png and b/graphics/Achievements/AchievementPeace.png differ diff --git a/graphics/Achievements/AchievementPiss.png b/graphics/Achievements/AchievementPiss.png new file mode 100644 index 000000000..7ff25c236 Binary files /dev/null and b/graphics/Achievements/AchievementPiss.png differ diff --git a/graphics/Achievements/AchievementPlasma.png b/graphics/Achievements/AchievementPlasma.png new file mode 100644 index 000000000..82d75cc57 Binary files /dev/null and b/graphics/Achievements/AchievementPlasma.png differ diff --git a/graphics/Achievements/AchievementPlush.png b/graphics/Achievements/AchievementPlush.png index bedb29d43..8ff7c9496 100644 Binary files a/graphics/Achievements/AchievementPlush.png and b/graphics/Achievements/AchievementPlush.png differ diff --git a/graphics/Achievements/AchievementPuzzle.png b/graphics/Achievements/AchievementPuzzle.png index 6be08659a..7597c16c1 100644 Binary files a/graphics/Achievements/AchievementPuzzle.png and b/graphics/Achievements/AchievementPuzzle.png differ diff --git a/graphics/Achievements/AchievementRage.png b/graphics/Achievements/AchievementRage.png index 0b7fbdc1b..18e216c93 100644 Binary files a/graphics/Achievements/AchievementRage.png and b/graphics/Achievements/AchievementRage.png differ diff --git a/graphics/Achievements/AchievementRail.png b/graphics/Achievements/AchievementRail.png new file mode 100644 index 000000000..a8bf215d8 Binary files /dev/null and b/graphics/Achievements/AchievementRail.png differ diff --git a/graphics/Achievements/AchievementReflect.png b/graphics/Achievements/AchievementReflect.png index df21badf3..aad3191ce 100644 Binary files a/graphics/Achievements/AchievementReflect.png and b/graphics/Achievements/AchievementReflect.png differ diff --git a/graphics/Achievements/AchievementRefresh.png b/graphics/Achievements/AchievementRefresh.png index 65baf7a4a..7e0a3e697 100644 Binary files a/graphics/Achievements/AchievementRefresh.png and b/graphics/Achievements/AchievementRefresh.png differ diff --git a/graphics/Achievements/AchievementRoast.png b/graphics/Achievements/AchievementRoast.png new file mode 100644 index 000000000..e82d288a4 Binary files /dev/null and b/graphics/Achievements/AchievementRoast.png differ diff --git a/graphics/Achievements/AchievementSalt.png b/graphics/Achievements/AchievementSalt.png deleted file mode 100644 index 0b53ec1d5..000000000 Binary files a/graphics/Achievements/AchievementSalt.png and /dev/null differ diff --git a/graphics/Achievements/AchievementSanic.png b/graphics/Achievements/AchievementSanic.png index efb7f16ad..fd952e4f1 100644 Binary files a/graphics/Achievements/AchievementSanic.png and b/graphics/Achievements/AchievementSanic.png differ diff --git a/graphics/Achievements/AchievementSekiro.png b/graphics/Achievements/AchievementSekiro.png index d310adbc7..e09816c09 100644 Binary files a/graphics/Achievements/AchievementSekiro.png and b/graphics/Achievements/AchievementSekiro.png differ diff --git a/graphics/Achievements/AchievementShame.png b/graphics/Achievements/AchievementShame.png index f38fa0f8f..39f49e97c 100644 Binary files a/graphics/Achievements/AchievementShame.png and b/graphics/Achievements/AchievementShame.png differ diff --git a/graphics/Achievements/AchievementShock.png b/graphics/Achievements/AchievementShock.png index bdde5f937..339ce0a77 100644 Binary files a/graphics/Achievements/AchievementShock.png and b/graphics/Achievements/AchievementShock.png differ diff --git a/graphics/Achievements/AchievementSlayer.png b/graphics/Achievements/AchievementSlayer.png deleted file mode 100644 index 102b0fabf..000000000 Binary files a/graphics/Achievements/AchievementSlayer.png and /dev/null differ diff --git a/graphics/Achievements/AchievementSlemg.png b/graphics/Achievements/AchievementSlemg.png index 5b46b7f3b..7a7fd9ebc 100644 Binary files a/graphics/Achievements/AchievementSlemg.png and b/graphics/Achievements/AchievementSlemg.png differ diff --git a/graphics/Achievements/AchievementSneaky.png b/graphics/Achievements/AchievementSneaky.png index 197f554bd..2e5f18417 100644 Binary files a/graphics/Achievements/AchievementSneaky.png and b/graphics/Achievements/AchievementSneaky.png differ diff --git a/graphics/Achievements/AchievementSneeze.png b/graphics/Achievements/AchievementSneeze.png index ea0af8db2..dbe1c5794 100644 Binary files a/graphics/Achievements/AchievementSneeze.png and b/graphics/Achievements/AchievementSneeze.png differ diff --git a/graphics/Achievements/AchievementSpark.png b/graphics/Achievements/AchievementSpark.png new file mode 100644 index 000000000..d086087a5 Binary files /dev/null and b/graphics/Achievements/AchievementSpark.png differ diff --git a/graphics/Achievements/AchievementStep.png b/graphics/Achievements/AchievementStep.png index 3ee572cca..d709bdfad 100644 Binary files a/graphics/Achievements/AchievementStep.png and b/graphics/Achievements/AchievementStep.png differ diff --git a/graphics/Achievements/AchievementStomp.png b/graphics/Achievements/AchievementStomp.png index ad36c4449..880ca8166 100644 Binary files a/graphics/Achievements/AchievementStomp.png and b/graphics/Achievements/AchievementStomp.png differ diff --git a/graphics/Achievements/AchievementSunny.png b/graphics/Achievements/AchievementSunny.png index 7068ef77b..ef38aec08 100644 Binary files a/graphics/Achievements/AchievementSunny.png and b/graphics/Achievements/AchievementSunny.png differ diff --git a/graphics/Achievements/AchievementTele.png b/graphics/Achievements/AchievementTele.png index b3cfc10cd..a6293e134 100644 Binary files a/graphics/Achievements/AchievementTele.png and b/graphics/Achievements/AchievementTele.png differ diff --git a/graphics/Achievements/AchievementTender.png b/graphics/Achievements/AchievementTender.png deleted file mode 100644 index f2b171e99..000000000 Binary files a/graphics/Achievements/AchievementTender.png and /dev/null differ diff --git a/graphics/Achievements/AchievementThicc.png b/graphics/Achievements/AchievementThicc.png index e93bf49f1..f0451abe4 100644 Binary files a/graphics/Achievements/AchievementThicc.png and b/graphics/Achievements/AchievementThicc.png differ diff --git a/graphics/Achievements/AchievementThruWall.png b/graphics/Achievements/AchievementThruWall.png index 9457d184f..c382fbdfa 100644 Binary files a/graphics/Achievements/AchievementThruWall.png and b/graphics/Achievements/AchievementThruWall.png differ diff --git a/graphics/Achievements/AchievementTornado.png b/graphics/Achievements/AchievementTornado.png index c744cff27..0f210c6ae 100644 Binary files a/graphics/Achievements/AchievementTornado.png and b/graphics/Achievements/AchievementTornado.png differ diff --git a/graphics/Achievements/AchievementTrash.png b/graphics/Achievements/AchievementTrash.png index 2a2f34535..39077a071 100644 Binary files a/graphics/Achievements/AchievementTrash.png and b/graphics/Achievements/AchievementTrash.png differ diff --git a/graphics/Achievements/AchievementTravel.png b/graphics/Achievements/AchievementTravel.png index d9ec8cdcf..ade169dcc 100644 Binary files a/graphics/Achievements/AchievementTravel.png and b/graphics/Achievements/AchievementTravel.png differ diff --git a/graphics/Achievements/AchievementUntouchable.png b/graphics/Achievements/AchievementUntouchable.png index e21f7d639..33a364622 100644 Binary files a/graphics/Achievements/AchievementUntouchable.png and b/graphics/Achievements/AchievementUntouchable.png differ diff --git a/graphics/Achievements/AchievementWantDie.png b/graphics/Achievements/AchievementWantDie.png index 5016880f3..b1b14740e 100644 Binary files a/graphics/Achievements/AchievementWantDie.png and b/graphics/Achievements/AchievementWantDie.png differ diff --git a/graphics/Achievements/AchievementWave.png b/graphics/Achievements/AchievementWave.png index d7ca6ddc9..e9fa3d5f6 100644 Binary files a/graphics/Achievements/AchievementWave.png and b/graphics/Achievements/AchievementWave.png differ diff --git a/graphics/Achievements/AchievementYEET.png b/graphics/Achievements/AchievementYEET.png index 668ef0bc6..78bfde0cf 100644 Binary files a/graphics/Achievements/AchievementYEET.png and b/graphics/Achievements/AchievementYEET.png differ diff --git a/graphics/Achievements/BarAchievementDone.png b/graphics/Achievements/BarAchievementDone.png index 7f0c6c57e..32a46ffe4 100644 Binary files a/graphics/Achievements/BarAchievementDone.png and b/graphics/Achievements/BarAchievementDone.png differ diff --git a/graphics/Achievements/DefaultAchievement.png b/graphics/Achievements/DefaultAchievement.png index 58b32a898..518855212 100644 Binary files a/graphics/Achievements/DefaultAchievement.png and b/graphics/Achievements/DefaultAchievement.png differ diff --git a/graphics/Achievements/HiddenAchievement.png b/graphics/Achievements/HiddenAchievement.png index b18f28225..5e916d9e3 100644 Binary files a/graphics/Achievements/HiddenAchievement.png and b/graphics/Achievements/HiddenAchievement.png differ diff --git a/graphics/Achievements/NoAchievement.png b/graphics/Achievements/NoAchievement.png index e8a7a2078..fe319f8a6 100644 Binary files a/graphics/Achievements/NoAchievement.png and b/graphics/Achievements/NoAchievement.png differ diff --git a/graphics/Achievements/SelectAchievement.png b/graphics/Achievements/SelectAchievement.png index 9c9b72d46..b8bdc49be 100644 Binary files a/graphics/Achievements/SelectAchievement.png and b/graphics/Achievements/SelectAchievement.png differ diff --git a/graphics/BDScreen.png b/graphics/BDScreen.png deleted file mode 100644 index da05e08ec..000000000 Binary files a/graphics/BDScreen.png and /dev/null differ diff --git a/graphics/BDScreen/BDBorder.png b/graphics/BDScreen/BDBorder.png new file mode 100644 index 000000000..6a35b054e Binary files /dev/null and b/graphics/BDScreen/BDBorder.png differ diff --git a/graphics/BDScreen/BDBubble0.png b/graphics/BDScreen/BDBubble0.png new file mode 100644 index 000000000..01e329144 Binary files /dev/null and b/graphics/BDScreen/BDBubble0.png differ diff --git a/graphics/BDScreen/BDBubble1.png b/graphics/BDScreen/BDBubble1.png new file mode 100644 index 000000000..046b95960 Binary files /dev/null and b/graphics/BDScreen/BDBubble1.png differ diff --git a/graphics/BDScreen/BDBubble2.png b/graphics/BDScreen/BDBubble2.png new file mode 100644 index 000000000..ec3e63a58 Binary files /dev/null and b/graphics/BDScreen/BDBubble2.png differ diff --git a/graphics/BDScreen/BDBubble3.png b/graphics/BDScreen/BDBubble3.png new file mode 100644 index 000000000..45ebda1dc Binary files /dev/null and b/graphics/BDScreen/BDBubble3.png differ diff --git a/graphics/BDScreen/BDDemo.png b/graphics/BDScreen/BDDemo.png new file mode 100644 index 000000000..f53fe8cc8 Binary files /dev/null and b/graphics/BDScreen/BDDemo.png differ diff --git a/graphics/BDScreen/BDSaya.png b/graphics/BDScreen/BDSaya.png new file mode 100644 index 000000000..49ae1bf81 Binary files /dev/null and b/graphics/BDScreen/BDSaya.png differ diff --git a/graphics/Credits/MariSprite.png b/graphics/Credits/MariSprite.png new file mode 100644 index 000000000..cb2ea4f10 Binary files /dev/null and b/graphics/Credits/MariSprite.png differ diff --git a/graphics/Credits/MariSprite0.png b/graphics/Credits/MariSprite0.png deleted file mode 100644 index 4d05e28be..000000000 Binary files a/graphics/Credits/MariSprite0.png and /dev/null differ diff --git a/graphics/Credits/MariSprite1.png b/graphics/Credits/MariSprite1.png deleted file mode 100644 index f57cb0719..000000000 Binary files a/graphics/Credits/MariSprite1.png and /dev/null differ diff --git a/graphics/Credits/MariSprite10.png b/graphics/Credits/MariSprite10.png deleted file mode 100644 index 758d30607..000000000 Binary files a/graphics/Credits/MariSprite10.png and /dev/null differ diff --git a/graphics/Credits/MariSprite11.png b/graphics/Credits/MariSprite11.png deleted file mode 100644 index 3d889dd74..000000000 Binary files a/graphics/Credits/MariSprite11.png and /dev/null differ diff --git a/graphics/Credits/MariSprite12.png b/graphics/Credits/MariSprite12.png deleted file mode 100644 index 33229f31a..000000000 Binary files a/graphics/Credits/MariSprite12.png and /dev/null differ diff --git a/graphics/Credits/MariSprite13.png b/graphics/Credits/MariSprite13.png deleted file mode 100644 index f77155373..000000000 Binary files a/graphics/Credits/MariSprite13.png and /dev/null differ diff --git a/graphics/Credits/MariSprite14.png b/graphics/Credits/MariSprite14.png deleted file mode 100644 index fd8269c46..000000000 Binary files a/graphics/Credits/MariSprite14.png and /dev/null differ diff --git a/graphics/Credits/MariSprite2.png b/graphics/Credits/MariSprite2.png deleted file mode 100644 index 396d82209..000000000 Binary files a/graphics/Credits/MariSprite2.png and /dev/null differ diff --git a/graphics/Credits/MariSprite3.png b/graphics/Credits/MariSprite3.png deleted file mode 100644 index 07f3550c4..000000000 Binary files a/graphics/Credits/MariSprite3.png and /dev/null differ diff --git a/graphics/Credits/MariSprite4.png b/graphics/Credits/MariSprite4.png deleted file mode 100644 index 254493dbd..000000000 Binary files a/graphics/Credits/MariSprite4.png and /dev/null differ diff --git a/graphics/Credits/MariSprite5.png b/graphics/Credits/MariSprite5.png deleted file mode 100644 index b47c2a561..000000000 Binary files a/graphics/Credits/MariSprite5.png and /dev/null differ diff --git a/graphics/Credits/MariSprite6.png b/graphics/Credits/MariSprite6.png deleted file mode 100644 index 3a11c6df2..000000000 Binary files a/graphics/Credits/MariSprite6.png and /dev/null differ diff --git a/graphics/Credits/MariSprite7.png b/graphics/Credits/MariSprite7.png deleted file mode 100644 index 2d31d8784..000000000 Binary files a/graphics/Credits/MariSprite7.png and /dev/null differ diff --git a/graphics/Credits/MariSprite8.png b/graphics/Credits/MariSprite8.png deleted file mode 100644 index 2ca8455b8..000000000 Binary files a/graphics/Credits/MariSprite8.png and /dev/null differ diff --git a/graphics/Credits/MariSprite9.png b/graphics/Credits/MariSprite9.png deleted file mode 100644 index bcb908858..000000000 Binary files a/graphics/Credits/MariSprite9.png and /dev/null differ diff --git a/graphics/Decals/BoltMark.png b/graphics/Decals/BoltMark.png index 4edc117ff..bd0b0c9fe 100644 Binary files a/graphics/Decals/BoltMark.png and b/graphics/Decals/BoltMark.png differ diff --git a/graphics/Decals/SaltMark.png b/graphics/Decals/SaltMark.png index bdfdb767c..663cd12a3 100644 Binary files a/graphics/Decals/SaltMark.png and b/graphics/Decals/SaltMark.png differ diff --git a/graphics/Decals/WallCrk1.png b/graphics/Decals/WallCrk1.png index 6aefe77a6..ae15cb091 100644 Binary files a/graphics/Decals/WallCrk1.png and b/graphics/Decals/WallCrk1.png differ diff --git a/graphics/Decals/bigblast.png b/graphics/Decals/bigblast.png index e99c463bb..280b33d9e 100644 Binary files a/graphics/Decals/bigblast.png and b/graphics/Decals/bigblast.png differ diff --git a/graphics/Decals/blslide1.png b/graphics/Decals/blslide1.png new file mode 100644 index 000000000..a9cb5f05d Binary files /dev/null and b/graphics/Decals/blslide1.png differ diff --git a/graphics/Decals/blslide2.png b/graphics/Decals/blslide2.png new file mode 100644 index 000000000..7f73dfc5a Binary files /dev/null and b/graphics/Decals/blslide2.png differ diff --git a/graphics/Decals/blslide3.png b/graphics/Decals/blslide3.png new file mode 100644 index 000000000..7fa9303cf Binary files /dev/null and b/graphics/Decals/blslide3.png differ diff --git a/graphics/Decals/blslide4.png b/graphics/Decals/blslide4.png new file mode 100644 index 000000000..2d1239d97 Binary files /dev/null and b/graphics/Decals/blslide4.png differ diff --git a/graphics/Decals/blslide5.png b/graphics/Decals/blslide5.png new file mode 100644 index 000000000..a34e6392e Binary files /dev/null and b/graphics/Decals/blslide5.png differ diff --git a/graphics/Decals/blslide6.png b/graphics/Decals/blslide6.png new file mode 100644 index 000000000..84e91e881 Binary files /dev/null and b/graphics/Decals/blslide6.png differ diff --git a/graphics/Decals/blslide7.png b/graphics/Decals/blslide7.png new file mode 100644 index 000000000..6dd54a0be Binary files /dev/null and b/graphics/Decals/blslide7.png differ diff --git a/graphics/Decals/blslide8.png b/graphics/Decals/blslide8.png new file mode 100644 index 000000000..cbcb01b75 Binary files /dev/null and b/graphics/Decals/blslide8.png differ diff --git a/graphics/Decals/blsmear1.png b/graphics/Decals/blsmear1.png new file mode 100644 index 000000000..4f84f1232 Binary files /dev/null and b/graphics/Decals/blsmear1.png differ diff --git a/graphics/Decals/blsmear2.png b/graphics/Decals/blsmear2.png new file mode 100644 index 000000000..2c67c4f37 Binary files /dev/null and b/graphics/Decals/blsmear2.png differ diff --git a/graphics/Decals/blsplat1.png b/graphics/Decals/blsplat1.png new file mode 100644 index 000000000..21649fde9 Binary files /dev/null and b/graphics/Decals/blsplat1.png differ diff --git a/graphics/Decals/blsplat2.png b/graphics/Decals/blsplat2.png new file mode 100644 index 000000000..f567e2511 Binary files /dev/null and b/graphics/Decals/blsplat2.png differ diff --git a/graphics/Decals/blsplat3.png b/graphics/Decals/blsplat3.png new file mode 100644 index 000000000..79c9ccb8f Binary files /dev/null and b/graphics/Decals/blsplat3.png differ diff --git a/graphics/Decals/blsplat4.png b/graphics/Decals/blsplat4.png new file mode 100644 index 000000000..4807b6ee1 Binary files /dev/null and b/graphics/Decals/blsplat4.png differ diff --git a/graphics/Decals/blsplat5.png b/graphics/Decals/blsplat5.png new file mode 100644 index 000000000..aa8ca223a Binary files /dev/null and b/graphics/Decals/blsplat5.png differ diff --git a/graphics/Decals/blsplat6.png b/graphics/Decals/blsplat6.png new file mode 100644 index 000000000..387c821f0 Binary files /dev/null and b/graphics/Decals/blsplat6.png differ diff --git a/graphics/Decals/blsplat7.png b/graphics/Decals/blsplat7.png new file mode 100644 index 000000000..e7dcf31a6 Binary files /dev/null and b/graphics/Decals/blsplat7.png differ diff --git a/graphics/Decals/blsplat8.png b/graphics/Decals/blsplat8.png new file mode 100644 index 000000000..8b50248a1 Binary files /dev/null and b/graphics/Decals/blsplat8.png differ diff --git a/graphics/Decals/hearty.png b/graphics/Decals/hearty.png index 973ef8903..38ce47f40 100644 Binary files a/graphics/Decals/hearty.png and b/graphics/Decals/hearty.png differ diff --git a/graphics/Decals/hearty2.png b/graphics/Decals/hearty2.png index 3b039be5c..84086ee64 100644 Binary files a/graphics/Decals/hearty2.png and b/graphics/Decals/hearty2.png differ diff --git a/graphics/Decals/kinymk1.png b/graphics/Decals/kinymk1.png new file mode 100644 index 000000000..7fb43595a Binary files /dev/null and b/graphics/Decals/kinymk1.png differ diff --git a/graphics/Decals/kinymk2.png b/graphics/Decals/kinymk2.png new file mode 100644 index 000000000..f3bcff440 Binary files /dev/null and b/graphics/Decals/kinymk2.png differ diff --git a/graphics/Decals/kinymk3.png b/graphics/Decals/kinymk3.png new file mode 100644 index 000000000..c95a716f9 Binary files /dev/null and b/graphics/Decals/kinymk3.png differ diff --git a/graphics/Decals/kinymk4.png b/graphics/Decals/kinymk4.png new file mode 100644 index 000000000..cd22db119 Binary files /dev/null and b/graphics/Decals/kinymk4.png differ diff --git a/graphics/Decals/mcblast.png b/graphics/Decals/mcblast.png index feb79440d..2aa751502 100644 Binary files a/graphics/Decals/mcblast.png and b/graphics/Decals/mcblast.png differ diff --git a/graphics/Decals/mcglow.png b/graphics/Decals/mcglow.png index 11d389f44..756af642c 100644 Binary files a/graphics/Decals/mcglow.png and b/graphics/Decals/mcglow.png differ diff --git a/graphics/Decals/nkknmk1.png b/graphics/Decals/nkknmk1.png new file mode 100644 index 000000000..1597d5930 Binary files /dev/null and b/graphics/Decals/nkknmk1.png differ diff --git a/graphics/Decals/nkknmk2.png b/graphics/Decals/nkknmk2.png new file mode 100644 index 000000000..269a79807 Binary files /dev/null and b/graphics/Decals/nkknmk2.png differ diff --git a/graphics/Decals/nkknmk3.png b/graphics/Decals/nkknmk3.png new file mode 100644 index 000000000..d65aa7d22 Binary files /dev/null and b/graphics/Decals/nkknmk3.png differ diff --git a/graphics/Decals/nkknmk4.png b/graphics/Decals/nkknmk4.png new file mode 100644 index 000000000..1a6ba6a73 Binary files /dev/null and b/graphics/Decals/nkknmk4.png differ diff --git a/graphics/Decals/nokrmk1.png b/graphics/Decals/nokrmk1.png new file mode 100644 index 000000000..52de5ba31 Binary files /dev/null and b/graphics/Decals/nokrmk1.png differ diff --git a/graphics/Decals/nokrmk2.png b/graphics/Decals/nokrmk2.png new file mode 100644 index 000000000..f4b645829 Binary files /dev/null and b/graphics/Decals/nokrmk2.png differ diff --git a/graphics/Decals/nokrmk3.png b/graphics/Decals/nokrmk3.png new file mode 100644 index 000000000..b973d32ab Binary files /dev/null and b/graphics/Decals/nokrmk3.png differ diff --git a/graphics/Decals/nokrmk4.png b/graphics/Decals/nokrmk4.png new file mode 100644 index 000000000..565dfeee4 Binary files /dev/null and b/graphics/Decals/nokrmk4.png differ diff --git a/graphics/Decals/pock3.png b/graphics/Decals/pock3.png index 57433a3cd..e79b9ae98 100644 Binary files a/graphics/Decals/pock3.png and b/graphics/Decals/pock3.png differ diff --git a/graphics/Decals/pock5.png b/graphics/Decals/pock5.png index ccb52f58a..bb08453d6 100644 Binary files a/graphics/Decals/pock5.png and b/graphics/Decals/pock5.png differ diff --git a/graphics/Decals/ripblast.png b/graphics/Decals/ripblast.png index 54ea5b503..7cdb05788 100644 Binary files a/graphics/Decals/ripblast.png and b/graphics/Decals/ripblast.png differ diff --git a/graphics/Decals/rktblast.png b/graphics/Decals/rktblast.png index e7e23843a..be25b3670 100644 Binary files a/graphics/Decals/rktblast.png and b/graphics/Decals/rktblast.png differ diff --git a/graphics/Decals/shockmk2.png b/graphics/Decals/shockmk2.png index 34261739b..0f774081a 100644 Binary files a/graphics/Decals/shockmk2.png and b/graphics/Decals/shockmk2.png differ diff --git a/graphics/Decals/shockmk3.png b/graphics/Decals/shockmk3.png index 354c91cfb..7c890d190 100644 Binary files a/graphics/Decals/shockmk3.png and b/graphics/Decals/shockmk3.png differ diff --git a/graphics/Decals/shockmk4.png b/graphics/Decals/shockmk4.png index 817ce70a0..89cc32131 100644 Binary files a/graphics/Decals/shockmk4.png and b/graphics/Decals/shockmk4.png differ diff --git a/graphics/Decals/shockmk5.png b/graphics/Decals/shockmk5.png index b1ee39324..d3edf52cb 100644 Binary files a/graphics/Decals/shockmk5.png and b/graphics/Decals/shockmk5.png differ diff --git a/graphics/Decals/shockmrk.png b/graphics/Decals/shockmrk.png index 4ea38a2fe..3aed652f8 100644 Binary files a/graphics/Decals/shockmrk.png and b/graphics/Decals/shockmrk.png differ diff --git a/graphics/Decals/splatter1.png b/graphics/Decals/splatter1.png deleted file mode 100644 index b9a97d576..000000000 Binary files a/graphics/Decals/splatter1.png and /dev/null differ diff --git a/graphics/Decals/splatter2.png b/graphics/Decals/splatter2.png deleted file mode 100644 index 7a0dc54c8..000000000 Binary files a/graphics/Decals/splatter2.png and /dev/null differ diff --git a/graphics/Decals/splatter3.png b/graphics/Decals/splatter3.png deleted file mode 100644 index cf519481f..000000000 Binary files a/graphics/Decals/splatter3.png and /dev/null differ diff --git a/graphics/Decals/splatter4.png b/graphics/Decals/splatter4.png deleted file mode 100644 index 377f9c063..000000000 Binary files a/graphics/Decals/splatter4.png and /dev/null differ diff --git a/graphics/Decals/splatter5.png b/graphics/Decals/splatter5.png deleted file mode 100644 index ef766141a..000000000 Binary files a/graphics/Decals/splatter5.png and /dev/null differ diff --git a/graphics/Decals/splatter6.png b/graphics/Decals/splatter6.png deleted file mode 100644 index 747a16f91..000000000 Binary files a/graphics/Decals/splatter6.png and /dev/null differ diff --git a/graphics/Decals/ultimk1.png b/graphics/Decals/ultimk1.png new file mode 100644 index 000000000..ca2628d1b Binary files /dev/null and b/graphics/Decals/ultimk1.png differ diff --git a/graphics/Decals/ultimk2.png b/graphics/Decals/ultimk2.png new file mode 100644 index 000000000..d0ec59c8b Binary files /dev/null and b/graphics/Decals/ultimk2.png differ diff --git a/graphics/Decals/ultimk3.png b/graphics/Decals/ultimk3.png new file mode 100644 index 000000000..be997cc72 Binary files /dev/null and b/graphics/Decals/ultimk3.png differ diff --git a/graphics/Decals/ultimk4.png b/graphics/Decals/ultimk4.png new file mode 100644 index 000000000..2ab800867 Binary files /dev/null and b/graphics/Decals/ultimk4.png differ diff --git a/graphics/DemoIcon.png b/graphics/DemoIcon.png index 569e6a148..2c54916ed 100644 Binary files a/graphics/DemoIcon.png and b/graphics/DemoIcon.png differ diff --git a/graphics/FINALE1_noorb.png b/graphics/FINALE1_noorb.png index 8bbd3cae4..c17ee4d4e 100644 Binary files a/graphics/FINALE1_noorb.png and b/graphics/FINALE1_noorb.png differ diff --git a/graphics/FINALE2_splode.png b/graphics/FINALE2_splode.png index 585aba511..421c06c96 100644 Binary files a/graphics/FINALE2_splode.png and b/graphics/FINALE2_splode.png differ diff --git a/graphics/Fanart/CaptainJ.png b/graphics/Fanart/CaptainJ.png deleted file mode 100644 index 7d1ae960c..000000000 Binary files a/graphics/Fanart/CaptainJ.png and /dev/null differ diff --git a/graphics/Fanart/CaptainJ2.png b/graphics/Fanart/CaptainJ2.png deleted file mode 100644 index 6e07efb51..000000000 Binary files a/graphics/Fanart/CaptainJ2.png and /dev/null differ diff --git a/graphics/Fanart/Endie.jpg b/graphics/Fanart/Endie.jpg deleted file mode 100644 index 8266ed5a1..000000000 Binary files a/graphics/Fanart/Endie.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa.jpg b/graphics/Fanart/Marisa.jpg deleted file mode 100644 index 69dbcca65..000000000 Binary files a/graphics/Fanart/Marisa.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa10.jpg b/graphics/Fanart/Marisa10.jpg deleted file mode 100644 index 3b518b166..000000000 Binary files a/graphics/Fanart/Marisa10.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa11.jpg b/graphics/Fanart/Marisa11.jpg deleted file mode 100644 index 79158e341..000000000 Binary files a/graphics/Fanart/Marisa11.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa12.jpg b/graphics/Fanart/Marisa12.jpg deleted file mode 100644 index 6a5959648..000000000 Binary files a/graphics/Fanart/Marisa12.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa13.jpg b/graphics/Fanart/Marisa13.jpg deleted file mode 100644 index a1cf45283..000000000 Binary files a/graphics/Fanart/Marisa13.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa14.jpg b/graphics/Fanart/Marisa14.jpg deleted file mode 100644 index fe1e31e21..000000000 Binary files a/graphics/Fanart/Marisa14.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa15.jpg b/graphics/Fanart/Marisa15.jpg deleted file mode 100644 index 8d7d2e503..000000000 Binary files a/graphics/Fanart/Marisa15.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa16.jpg b/graphics/Fanart/Marisa16.jpg deleted file mode 100644 index a1ce76f0d..000000000 Binary files a/graphics/Fanart/Marisa16.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa2.jpg b/graphics/Fanart/Marisa2.jpg deleted file mode 100644 index c588dc974..000000000 Binary files a/graphics/Fanart/Marisa2.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa3.jpg b/graphics/Fanart/Marisa3.jpg deleted file mode 100644 index c5aa3ccb8..000000000 Binary files a/graphics/Fanart/Marisa3.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa4.jpg b/graphics/Fanart/Marisa4.jpg deleted file mode 100644 index a0a4a17c8..000000000 Binary files a/graphics/Fanart/Marisa4.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa5.jpg b/graphics/Fanart/Marisa5.jpg deleted file mode 100644 index 3988a6323..000000000 Binary files a/graphics/Fanart/Marisa5.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa6.jpg b/graphics/Fanart/Marisa6.jpg deleted file mode 100644 index 7d70cbcb1..000000000 Binary files a/graphics/Fanart/Marisa6.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa7.jpg b/graphics/Fanart/Marisa7.jpg deleted file mode 100644 index 2c8840876..000000000 Binary files a/graphics/Fanart/Marisa7.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa8.jpg b/graphics/Fanart/Marisa8.jpg deleted file mode 100644 index fdea42e4d..000000000 Binary files a/graphics/Fanart/Marisa8.jpg and /dev/null differ diff --git a/graphics/Fanart/Marisa9.jpg b/graphics/Fanart/Marisa9.jpg deleted file mode 100644 index b58e0a09f..000000000 Binary files a/graphics/Fanart/Marisa9.jpg and /dev/null differ diff --git a/graphics/Fanart/Monsoon.jpg b/graphics/Fanart/Monsoon.jpg deleted file mode 100644 index 1e8f06a5a..000000000 Binary files a/graphics/Fanart/Monsoon.jpg and /dev/null differ diff --git a/graphics/Fanart/Monsoon2.jpg b/graphics/Fanart/Monsoon2.jpg deleted file mode 100644 index b680479e4..000000000 Binary files a/graphics/Fanart/Monsoon2.jpg and /dev/null differ diff --git a/graphics/Fanart/Monsoon3.png b/graphics/Fanart/Monsoon3.png deleted file mode 100644 index e90c1457f..000000000 Binary files a/graphics/Fanart/Monsoon3.png and /dev/null differ diff --git a/graphics/Fanart/Monsoon4.png b/graphics/Fanart/Monsoon4.png deleted file mode 100644 index 2074fa5cc..000000000 Binary files a/graphics/Fanart/Monsoon4.png and /dev/null differ diff --git a/graphics/Fanart/RedeadITA.png b/graphics/Fanart/RedeadITA.png deleted file mode 100644 index 14dcbffe6..000000000 Binary files a/graphics/Fanart/RedeadITA.png and /dev/null differ diff --git a/graphics/Fanart/S20TBL.jpg b/graphics/Fanart/S20TBL.jpg deleted file mode 100644 index 6f07323b9..000000000 Binary files a/graphics/Fanart/S20TBL.jpg and /dev/null differ diff --git a/graphics/Fanart/Shivers.png b/graphics/Fanart/Shivers.png deleted file mode 100644 index d8c26527e..000000000 Binary files a/graphics/Fanart/Shivers.png and /dev/null differ diff --git a/graphics/Fanart/Shivers2.png b/graphics/Fanart/Shivers2.png deleted file mode 100644 index 21becf4e2..000000000 Binary files a/graphics/Fanart/Shivers2.png and /dev/null differ diff --git a/graphics/HDScreen.png b/graphics/HDScreen.png deleted file mode 100644 index 767ab6de2..000000000 Binary files a/graphics/HDScreen.png and /dev/null differ diff --git a/graphics/HDoom_Bonk.png b/graphics/HDoom_Bonk.png new file mode 100644 index 000000000..f3ef76e24 Binary files /dev/null and b/graphics/HDoom_Bonk.png differ diff --git a/graphics/HDoom_Bonked.png b/graphics/HDoom_Bonked.png new file mode 100644 index 000000000..e7a45ab3a Binary files /dev/null and b/graphics/HDoom_Bonked.png differ diff --git a/graphics/HDoom_Bonker.png b/graphics/HDoom_Bonker.png new file mode 100644 index 000000000..14413125e Binary files /dev/null and b/graphics/HDoom_Bonker.png differ diff --git a/graphics/HUD/AchievementNotification.png b/graphics/HUD/AchievementNotification.png index e7a048faf..9bafafa66 100644 Binary files a/graphics/HUD/AchievementNotification.png and b/graphics/HUD/AchievementNotification.png differ diff --git a/graphics/HUD/AmmoBoxB.png b/graphics/HUD/AmmoBoxB.png new file mode 100644 index 000000000..e39caa374 Binary files /dev/null and b/graphics/HUD/AmmoBoxB.png differ diff --git a/graphics/HUD/AmmoBoxM.png b/graphics/HUD/AmmoBoxM.png new file mode 100644 index 000000000..266cf5232 Binary files /dev/null and b/graphics/HUD/AmmoBoxM.png differ diff --git a/graphics/HUD/AmmoBoxT.png b/graphics/HUD/AmmoBoxT.png new file mode 100644 index 000000000..e0085d944 Binary files /dev/null and b/graphics/HUD/AmmoBoxT.png differ diff --git a/graphics/HUD/BiosparkBar.png b/graphics/HUD/BiosparkBar.png deleted file mode 100644 index 804110bf7..000000000 Binary files a/graphics/HUD/BiosparkBar.png and /dev/null differ diff --git a/graphics/HUD/BiosparkBarGray.png b/graphics/HUD/BiosparkBarGray.png deleted file mode 100644 index 898cf80bd..000000000 Binary files a/graphics/HUD/BiosparkBarGray.png and /dev/null differ diff --git a/graphics/HUD/BiosparkBarRed.png b/graphics/HUD/BiosparkBarRed.png deleted file mode 100644 index 8d1ee5d5c..000000000 Binary files a/graphics/HUD/BiosparkBarRed.png and /dev/null differ diff --git a/graphics/HUD/BiosparkBarSlim.png b/graphics/HUD/BiosparkBarSlim.png deleted file mode 100644 index 169a6f803..000000000 Binary files a/graphics/HUD/BiosparkBarSlim.png and /dev/null differ diff --git a/graphics/HUD/BiosparkBarSlimGray.png b/graphics/HUD/BiosparkBarSlimGray.png deleted file mode 100644 index 7cb53c462..000000000 Binary files a/graphics/HUD/BiosparkBarSlimGray.png and /dev/null differ diff --git a/graphics/HUD/BiosparkBarSlimRed.png b/graphics/HUD/BiosparkBarSlimRed.png deleted file mode 100644 index 1c3015bf4..000000000 Binary files a/graphics/HUD/BiosparkBarSlimRed.png and /dev/null differ diff --git a/graphics/HUD/BiosparkDisplay.png b/graphics/HUD/BiosparkDisplay.png index cd0b30843..35a1d3346 100644 Binary files a/graphics/HUD/BiosparkDisplay.png and b/graphics/HUD/BiosparkDisplay.png differ diff --git a/graphics/HUD/BiosparkRed.png b/graphics/HUD/BiosparkRed.png new file mode 100644 index 000000000..350eb7516 Binary files /dev/null and b/graphics/HUD/BiosparkRed.png differ diff --git a/graphics/HUD/BiosparkShot.png b/graphics/HUD/BiosparkShot.png new file mode 100644 index 000000000..873d7e54e Binary files /dev/null and b/graphics/HUD/BiosparkShot.png differ diff --git a/graphics/HUD/BlackShell.png b/graphics/HUD/BlackShell.png deleted file mode 100644 index 373f1e7e1..000000000 Binary files a/graphics/HUD/BlackShell.png and /dev/null differ diff --git a/graphics/HUD/BlastBar.png b/graphics/HUD/BlastBar.png new file mode 100644 index 000000000..a52f53cb8 Binary files /dev/null and b/graphics/HUD/BlastBar.png differ diff --git a/graphics/HUD/BlastDisplay.png b/graphics/HUD/BlastDisplay.png new file mode 100644 index 000000000..4641a8e95 Binary files /dev/null and b/graphics/HUD/BlastDisplay.png differ diff --git a/graphics/HUD/BlastRoundActive.png b/graphics/HUD/BlastRoundActive.png new file mode 100644 index 000000000..6c67d2700 Binary files /dev/null and b/graphics/HUD/BlastRoundActive.png differ diff --git a/graphics/HUD/BlastRoundInert.png b/graphics/HUD/BlastRoundInert.png new file mode 100644 index 000000000..788f420fb Binary files /dev/null and b/graphics/HUD/BlastRoundInert.png differ diff --git a/graphics/HUD/BlueShell.png b/graphics/HUD/BlueShell.png deleted file mode 100644 index fceedb0ef..000000000 Binary files a/graphics/HUD/BlueShell.png and /dev/null differ diff --git a/graphics/HUD/BossHealthBar.png b/graphics/HUD/BossHealthBar.png index 1ba37a410..fb8389170 100644 Binary files a/graphics/HUD/BossHealthBar.png and b/graphics/HUD/BossHealthBar.png differ diff --git a/graphics/HUD/BossHealthBarBox.png b/graphics/HUD/BossHealthBarBox.png index fed7aa36b..bd6dee7ed 100644 Binary files a/graphics/HUD/BossHealthBarBox.png and b/graphics/HUD/BossHealthBarBox.png differ diff --git a/graphics/HUD/BossHealthBarBoxSmol.png b/graphics/HUD/BossHealthBarBoxSmol.png new file mode 100644 index 000000000..443926649 Binary files /dev/null and b/graphics/HUD/BossHealthBarBoxSmol.png differ diff --git a/graphics/HUD/BossHealthBarDecay.png b/graphics/HUD/BossHealthBarDecay.png index cad0ec024..4070da777 100644 Binary files a/graphics/HUD/BossHealthBarDecay.png and b/graphics/HUD/BossHealthBarDecay.png differ diff --git a/graphics/HUD/BossHealthBarDecaySmol.png b/graphics/HUD/BossHealthBarDecaySmol.png new file mode 100644 index 000000000..f2aad2630 Binary files /dev/null and b/graphics/HUD/BossHealthBarDecaySmol.png differ diff --git a/graphics/HUD/BossHealthBarSmol.png b/graphics/HUD/BossHealthBarSmol.png new file mode 100644 index 000000000..92f1bb812 Binary files /dev/null and b/graphics/HUD/BossHealthBarSmol.png differ diff --git a/graphics/HUD/CandyRound.png b/graphics/HUD/CandyRound.png new file mode 100644 index 000000000..c2522502c Binary files /dev/null and b/graphics/HUD/CandyRound.png differ diff --git a/graphics/HUD/CandygunDisplay.png b/graphics/HUD/CandygunDisplay.png deleted file mode 100644 index 99c52b939..000000000 Binary files a/graphics/HUD/CandygunDisplay.png and /dev/null differ diff --git a/graphics/HUD/ChatBoxBottom.png b/graphics/HUD/ChatBoxBottom.png index 3cbf3db77..f15479e12 100644 Binary files a/graphics/HUD/ChatBoxBottom.png and b/graphics/HUD/ChatBoxBottom.png differ diff --git a/graphics/HUD/ChatBoxBottomSmol.png b/graphics/HUD/ChatBoxBottomSmol.png new file mode 100644 index 000000000..595349631 Binary files /dev/null and b/graphics/HUD/ChatBoxBottomSmol.png differ diff --git a/graphics/HUD/ChatBoxBottom_Smol.png b/graphics/HUD/ChatBoxBottom_Smol.png deleted file mode 100644 index 1db1250a1..000000000 Binary files a/graphics/HUD/ChatBoxBottom_Smol.png and /dev/null differ diff --git a/graphics/HUD/ChatBoxLine.png b/graphics/HUD/ChatBoxLine.png index 5047453c4..64429c17a 100644 Binary files a/graphics/HUD/ChatBoxLine.png and b/graphics/HUD/ChatBoxLine.png differ diff --git a/graphics/HUD/ChatBoxLineSmol.png b/graphics/HUD/ChatBoxLineSmol.png new file mode 100644 index 000000000..6fc1065ee Binary files /dev/null and b/graphics/HUD/ChatBoxLineSmol.png differ diff --git a/graphics/HUD/ChatBoxLine_Smol.png b/graphics/HUD/ChatBoxLine_Smol.png deleted file mode 100644 index 0c4857118..000000000 Binary files a/graphics/HUD/ChatBoxLine_Smol.png and /dev/null differ diff --git a/graphics/HUD/ChatBoxTop.png b/graphics/HUD/ChatBoxTop.png index dc6cbc3e2..f98ed11ff 100644 Binary files a/graphics/HUD/ChatBoxTop.png and b/graphics/HUD/ChatBoxTop.png differ diff --git a/graphics/HUD/ChatBoxTopSmol.png b/graphics/HUD/ChatBoxTopSmol.png new file mode 100644 index 000000000..0a7eef8ca Binary files /dev/null and b/graphics/HUD/ChatBoxTopSmol.png differ diff --git a/graphics/HUD/ChatBoxTop_Smol.png b/graphics/HUD/ChatBoxTop_Smol.png deleted file mode 100644 index 08ec5867f..000000000 Binary files a/graphics/HUD/ChatBoxTop_Smol.png and /dev/null differ diff --git a/graphics/HUD/DM/CythoAvatar.png b/graphics/HUD/DM/CythoAvatar.png index 61c9b290a..2c17f306f 100644 Binary files a/graphics/HUD/DM/CythoAvatar.png and b/graphics/HUD/DM/CythoAvatar.png differ diff --git a/graphics/HUD/DM/CythoAvatarBG.png b/graphics/HUD/DM/CythoAvatarBG.png index b9b0edce8..8dff3db96 100644 Binary files a/graphics/HUD/DM/CythoAvatarBG.png and b/graphics/HUD/DM/CythoAvatarBG.png differ diff --git a/graphics/HUD/DM/CythoAvatarTalk2.png b/graphics/HUD/DM/CythoAvatarTalk2.png index 034892998..8d85fb52c 100644 Binary files a/graphics/HUD/DM/CythoAvatarTalk2.png and b/graphics/HUD/DM/CythoAvatarTalk2.png differ diff --git a/graphics/HUD/DM/CythoAvatarTalk3.png b/graphics/HUD/DM/CythoAvatarTalk3.png index 1818380db..63ef4b661 100644 Binary files a/graphics/HUD/DM/CythoAvatarTalk3.png and b/graphics/HUD/DM/CythoAvatarTalk3.png differ diff --git a/graphics/HUD/DM/DirectMessageBox.png b/graphics/HUD/DM/DirectMessageBox.png index 1320dbf9d..bf822c152 100644 Binary files a/graphics/HUD/DM/DirectMessageBox.png and b/graphics/HUD/DM/DirectMessageBox.png differ diff --git a/graphics/HUD/DM/IbukiAvatar.png b/graphics/HUD/DM/IbukiAvatar.png index fbc9c5bd4..6d539d0c5 100644 Binary files a/graphics/HUD/DM/IbukiAvatar.png and b/graphics/HUD/DM/IbukiAvatar.png differ diff --git a/graphics/HUD/DM/IbukiAvatarBlink1.png b/graphics/HUD/DM/IbukiAvatarBlink1.png index 9a8a9b848..e46ed9422 100644 Binary files a/graphics/HUD/DM/IbukiAvatarBlink1.png and b/graphics/HUD/DM/IbukiAvatarBlink1.png differ diff --git a/graphics/HUD/DM/IbukiAvatarTalk0.png b/graphics/HUD/DM/IbukiAvatarTalk0.png index 9330e3c3e..5da495a9d 100644 Binary files a/graphics/HUD/DM/IbukiAvatarTalk0.png and b/graphics/HUD/DM/IbukiAvatarTalk0.png differ diff --git a/graphics/HUD/DM/IbukiAvatarTalk1.png b/graphics/HUD/DM/IbukiAvatarTalk1.png index 05ade7123..347f087db 100644 Binary files a/graphics/HUD/DM/IbukiAvatarTalk1.png and b/graphics/HUD/DM/IbukiAvatarTalk1.png differ diff --git a/graphics/HUD/DM/IbukiAvatarTalk2.png b/graphics/HUD/DM/IbukiAvatarTalk2.png index 2708500f0..b75a22923 100644 Binary files a/graphics/HUD/DM/IbukiAvatarTalk2.png and b/graphics/HUD/DM/IbukiAvatarTalk2.png differ diff --git a/graphics/HUD/DM/IbukiAvatarTalk3.png b/graphics/HUD/DM/IbukiAvatarTalk3.png index 75a683553..d65a4ba50 100644 Binary files a/graphics/HUD/DM/IbukiAvatarTalk3.png and b/graphics/HUD/DM/IbukiAvatarTalk3.png differ diff --git a/graphics/HUD/DM/IbukiAvatarTalk4.png b/graphics/HUD/DM/IbukiAvatarTalk4.png index e5a403c81..8e9bf53bb 100644 Binary files a/graphics/HUD/DM/IbukiAvatarTalk4.png and b/graphics/HUD/DM/IbukiAvatarTalk4.png differ diff --git a/graphics/HUD/DM/KirinAvatar.png b/graphics/HUD/DM/KirinAvatar.png index 2ed8f2ce3..a2f0c5912 100644 Binary files a/graphics/HUD/DM/KirinAvatar.png and b/graphics/HUD/DM/KirinAvatar.png differ diff --git a/graphics/HUD/DM/KirinAvatarBG.png b/graphics/HUD/DM/KirinAvatarBG.png index 23e648315..07c094076 100644 Binary files a/graphics/HUD/DM/KirinAvatarBG.png and b/graphics/HUD/DM/KirinAvatarBG.png differ diff --git a/graphics/HUD/DM/KirinAvatarBlink0.png b/graphics/HUD/DM/KirinAvatarBlink0.png index 37daa47de..700b23ddf 100644 Binary files a/graphics/HUD/DM/KirinAvatarBlink0.png and b/graphics/HUD/DM/KirinAvatarBlink0.png differ diff --git a/graphics/HUD/DM/KirinAvatarBlink1.png b/graphics/HUD/DM/KirinAvatarBlink1.png index d2b983e63..71874e0aa 100644 Binary files a/graphics/HUD/DM/KirinAvatarBlink1.png and b/graphics/HUD/DM/KirinAvatarBlink1.png differ diff --git a/graphics/HUD/DM/KirinAvatarTalk0.png b/graphics/HUD/DM/KirinAvatarTalk0.png index 39d94a863..56054eed0 100644 Binary files a/graphics/HUD/DM/KirinAvatarTalk0.png and b/graphics/HUD/DM/KirinAvatarTalk0.png differ diff --git a/graphics/HUD/DM/KirinAvatarTalk1.png b/graphics/HUD/DM/KirinAvatarTalk1.png index d67fa3bae..1d8789e17 100644 Binary files a/graphics/HUD/DM/KirinAvatarTalk1.png and b/graphics/HUD/DM/KirinAvatarTalk1.png differ diff --git a/graphics/HUD/DM/KirinAvatarTalk2.png b/graphics/HUD/DM/KirinAvatarTalk2.png index 3d3cca42f..ae97552ee 100644 Binary files a/graphics/HUD/DM/KirinAvatarTalk2.png and b/graphics/HUD/DM/KirinAvatarTalk2.png differ diff --git a/graphics/HUD/DM/KirinAvatarTalk3.png b/graphics/HUD/DM/KirinAvatarTalk3.png index 8d0bc4952..f54cd684d 100644 Binary files a/graphics/HUD/DM/KirinAvatarTalk3.png and b/graphics/HUD/DM/KirinAvatarTalk3.png differ diff --git a/graphics/HUD/DM/KirinAvatarTalk4.png b/graphics/HUD/DM/KirinAvatarTalk4.png index 61cd0dbd8..996702253 100644 Binary files a/graphics/HUD/DM/KirinAvatarTalk4.png and b/graphics/HUD/DM/KirinAvatarTalk4.png differ diff --git a/graphics/HUD/DM/SayaAvatar.png b/graphics/HUD/DM/SayaAvatar.png index 1f1d1f324..8bbaa6d5a 100644 Binary files a/graphics/HUD/DM/SayaAvatar.png and b/graphics/HUD/DM/SayaAvatar.png differ diff --git a/graphics/HUD/DM/SayaAvatarBG.png b/graphics/HUD/DM/SayaAvatarBG.png index af4e1c7fa..298074269 100644 Binary files a/graphics/HUD/DM/SayaAvatarBG.png and b/graphics/HUD/DM/SayaAvatarBG.png differ diff --git a/graphics/HUD/DM/SayaAvatarBlink0.png b/graphics/HUD/DM/SayaAvatarBlink0.png index 98a99dbc1..09a6c0422 100644 Binary files a/graphics/HUD/DM/SayaAvatarBlink0.png and b/graphics/HUD/DM/SayaAvatarBlink0.png differ diff --git a/graphics/HUD/DM/SayaAvatarBlink1.png b/graphics/HUD/DM/SayaAvatarBlink1.png index 5c5232562..be6ff2c18 100644 Binary files a/graphics/HUD/DM/SayaAvatarBlink1.png and b/graphics/HUD/DM/SayaAvatarBlink1.png differ diff --git a/graphics/HUD/DM/SayaAvatarTalk0.png b/graphics/HUD/DM/SayaAvatarTalk0.png index 7c7eef3b0..bcd838860 100644 Binary files a/graphics/HUD/DM/SayaAvatarTalk0.png and b/graphics/HUD/DM/SayaAvatarTalk0.png differ diff --git a/graphics/HUD/DM/SayaAvatarTalk1.png b/graphics/HUD/DM/SayaAvatarTalk1.png index 734416bb1..25246252d 100644 Binary files a/graphics/HUD/DM/SayaAvatarTalk1.png and b/graphics/HUD/DM/SayaAvatarTalk1.png differ diff --git a/graphics/HUD/DM/SayaAvatarTalk2.png b/graphics/HUD/DM/SayaAvatarTalk2.png index 9c38980e9..73a077007 100644 Binary files a/graphics/HUD/DM/SayaAvatarTalk2.png and b/graphics/HUD/DM/SayaAvatarTalk2.png differ diff --git a/graphics/HUD/DM/SayaAvatarTalk3.png b/graphics/HUD/DM/SayaAvatarTalk3.png index 9571785d2..65610a9a4 100644 Binary files a/graphics/HUD/DM/SayaAvatarTalk3.png and b/graphics/HUD/DM/SayaAvatarTalk3.png differ diff --git a/graphics/HUD/DM/SayaAvatarTalk4.png b/graphics/HUD/DM/SayaAvatarTalk4.png index 9255ddc99..6e7f9c0fe 100644 Binary files a/graphics/HUD/DM/SayaAvatarTalk4.png and b/graphics/HUD/DM/SayaAvatarTalk4.png differ diff --git a/graphics/HUD/DM/ZnvAvatar.png b/graphics/HUD/DM/ZnvAvatar.png index e76d4c42d..a0f9017a4 100644 Binary files a/graphics/HUD/DM/ZnvAvatar.png and b/graphics/HUD/DM/ZnvAvatar.png differ diff --git a/graphics/HUD/DM/ZnvAvatarBG.png b/graphics/HUD/DM/ZnvAvatarBG.png index 33a88136a..19261d345 100644 Binary files a/graphics/HUD/DM/ZnvAvatarBG.png and b/graphics/HUD/DM/ZnvAvatarBG.png differ diff --git a/graphics/HUD/DM/ZnvAvatarBlink0.png b/graphics/HUD/DM/ZnvAvatarBlink0.png index a81b86c35..3ab2d6908 100644 Binary files a/graphics/HUD/DM/ZnvAvatarBlink0.png and b/graphics/HUD/DM/ZnvAvatarBlink0.png differ diff --git a/graphics/HUD/DM/ZnvAvatarBlink1.png b/graphics/HUD/DM/ZnvAvatarBlink1.png index 2718d9009..4934576de 100644 Binary files a/graphics/HUD/DM/ZnvAvatarBlink1.png and b/graphics/HUD/DM/ZnvAvatarBlink1.png differ diff --git a/graphics/HUD/DM/ZnvAvatarTalk0.png b/graphics/HUD/DM/ZnvAvatarTalk0.png index abfb8c357..34442453c 100644 Binary files a/graphics/HUD/DM/ZnvAvatarTalk0.png and b/graphics/HUD/DM/ZnvAvatarTalk0.png differ diff --git a/graphics/HUD/DM/ZnvAvatarTalk1.png b/graphics/HUD/DM/ZnvAvatarTalk1.png index fe7897784..6bad3ab3e 100644 Binary files a/graphics/HUD/DM/ZnvAvatarTalk1.png and b/graphics/HUD/DM/ZnvAvatarTalk1.png differ diff --git a/graphics/HUD/DM/ZnvAvatarTalk2.png b/graphics/HUD/DM/ZnvAvatarTalk2.png index 7f82fe779..44c7d5feb 100644 Binary files a/graphics/HUD/DM/ZnvAvatarTalk2.png and b/graphics/HUD/DM/ZnvAvatarTalk2.png differ diff --git a/graphics/HUD/DM/ZnvAvatarTalk3.png b/graphics/HUD/DM/ZnvAvatarTalk3.png index 0dfdcaca7..7ce770838 100644 Binary files a/graphics/HUD/DM/ZnvAvatarTalk3.png and b/graphics/HUD/DM/ZnvAvatarTalk3.png differ diff --git a/graphics/HUD/DM/ZnvAvatarTalk4.png b/graphics/HUD/DM/ZnvAvatarTalk4.png index 3cb98d469..9215a3ffe 100644 Binary files a/graphics/HUD/DM/ZnvAvatarTalk4.png and b/graphics/HUD/DM/ZnvAvatarTalk4.png differ diff --git a/graphics/HUD/DashBar.png b/graphics/HUD/DashBar.png index d4cd3044b..17af102d1 100644 Binary files a/graphics/HUD/DashBar.png and b/graphics/HUD/DashBar.png differ diff --git a/graphics/HUD/DeepImpactBar.png b/graphics/HUD/DeepImpactBar.png index 22be335fc..359829e0d 100644 Binary files a/graphics/HUD/DeepImpactBar.png and b/graphics/HUD/DeepImpactBar.png differ diff --git a/graphics/HUD/DeepImpactDisplay.png b/graphics/HUD/DeepImpactDisplay.png index 7257cc9f9..4ce92d927 100644 Binary files a/graphics/HUD/DeepImpactDisplay.png and b/graphics/HUD/DeepImpactDisplay.png differ diff --git a/graphics/HUD/DemoFace_Angerage.png b/graphics/HUD/DemoFace_Angerage.png new file mode 100644 index 000000000..d25d0bca4 Binary files /dev/null and b/graphics/HUD/DemoFace_Angerage.png differ diff --git a/graphics/HUD/DemoFace_Angery.png b/graphics/HUD/DemoFace_Angery.png new file mode 100644 index 000000000..f22ad4859 Binary files /dev/null and b/graphics/HUD/DemoFace_Angery.png differ diff --git a/graphics/HUD/DemoFace_Barrier.png b/graphics/HUD/DemoFace_Barrier.png new file mode 100644 index 000000000..aaf75f97f Binary files /dev/null and b/graphics/HUD/DemoFace_Barrier.png differ diff --git a/graphics/HUD/DemoFace_Blink.png b/graphics/HUD/DemoFace_Blink.png new file mode 100644 index 000000000..58f8c6686 Binary files /dev/null and b/graphics/HUD/DemoFace_Blink.png differ diff --git a/graphics/HUD/DemoFace_Booty.png b/graphics/HUD/DemoFace_Booty.png new file mode 100644 index 000000000..12e77c2b8 Binary files /dev/null and b/graphics/HUD/DemoFace_Booty.png differ diff --git a/graphics/HUD/DemoFace_Dead.png b/graphics/HUD/DemoFace_Dead.png new file mode 100644 index 000000000..6c37438e3 Binary files /dev/null and b/graphics/HUD/DemoFace_Dead.png differ diff --git a/graphics/HUD/DemoFace_Default.png b/graphics/HUD/DemoFace_Default.png new file mode 100644 index 000000000..f88312b24 Binary files /dev/null and b/graphics/HUD/DemoFace_Default.png differ diff --git a/graphics/HUD/DemoFace_Dizzy.png b/graphics/HUD/DemoFace_Dizzy.png new file mode 100644 index 000000000..c336bd4bf Binary files /dev/null and b/graphics/HUD/DemoFace_Dizzy.png differ diff --git a/graphics/HUD/DemoFace_Evil.png b/graphics/HUD/DemoFace_Evil.png new file mode 100644 index 000000000..c2bfd7992 Binary files /dev/null and b/graphics/HUD/DemoFace_Evil.png differ diff --git a/graphics/HUD/DemoFace_Flash.png b/graphics/HUD/DemoFace_Flash.png new file mode 100644 index 000000000..30fc10997 Binary files /dev/null and b/graphics/HUD/DemoFace_Flash.png differ diff --git a/graphics/HUD/DemoFace_Grin.png b/graphics/HUD/DemoFace_Grin.png new file mode 100644 index 000000000..3a6b0f349 Binary files /dev/null and b/graphics/HUD/DemoFace_Grin.png differ diff --git a/graphics/HUD/DemoFace_Head.png b/graphics/HUD/DemoFace_Head.png new file mode 100644 index 000000000..1e2456a70 Binary files /dev/null and b/graphics/HUD/DemoFace_Head.png differ diff --git a/graphics/HUD/DemoFace_Hurt.png b/graphics/HUD/DemoFace_Hurt.png new file mode 100644 index 000000000..00609b7e2 Binary files /dev/null and b/graphics/HUD/DemoFace_Hurt.png differ diff --git a/graphics/HUD/DemoFace_HurtLeft.png b/graphics/HUD/DemoFace_HurtLeft.png new file mode 100644 index 000000000..935a9d45e Binary files /dev/null and b/graphics/HUD/DemoFace_HurtLeft.png differ diff --git a/graphics/HUD/DemoFace_HurtRight.png b/graphics/HUD/DemoFace_HurtRight.png new file mode 100644 index 000000000..2974e0235 Binary files /dev/null and b/graphics/HUD/DemoFace_HurtRight.png differ diff --git a/graphics/HUD/DemoFace_Off.png b/graphics/HUD/DemoFace_Off.png new file mode 100644 index 000000000..3beb4116b Binary files /dev/null and b/graphics/HUD/DemoFace_Off.png differ diff --git a/graphics/HUD/DemoFace_Ouch.png b/graphics/HUD/DemoFace_Ouch.png new file mode 100644 index 000000000..f2117f3b4 Binary files /dev/null and b/graphics/HUD/DemoFace_Ouch.png differ diff --git a/graphics/HUD/DemoFace_OuchLeft.png b/graphics/HUD/DemoFace_OuchLeft.png new file mode 100644 index 000000000..8d64f11b7 Binary files /dev/null and b/graphics/HUD/DemoFace_OuchLeft.png differ diff --git a/graphics/HUD/DemoFace_OuchRight.png b/graphics/HUD/DemoFace_OuchRight.png new file mode 100644 index 000000000..4058f5452 Binary files /dev/null and b/graphics/HUD/DemoFace_OuchRight.png differ diff --git a/graphics/HUD/DemoFace_Rage.png b/graphics/HUD/DemoFace_Rage.png new file mode 100644 index 000000000..0882dfd49 Binary files /dev/null and b/graphics/HUD/DemoFace_Rage.png differ diff --git a/graphics/HUD/DemoFace_Sad.png b/graphics/HUD/DemoFace_Sad.png new file mode 100644 index 000000000..02841cdf2 Binary files /dev/null and b/graphics/HUD/DemoFace_Sad.png differ diff --git a/graphics/HUD/DemoFace_Smug.png b/graphics/HUD/DemoFace_Smug.png new file mode 100644 index 000000000..85cfefb0b Binary files /dev/null and b/graphics/HUD/DemoFace_Smug.png differ diff --git a/graphics/HUD/DemoFace_Unamused.png b/graphics/HUD/DemoFace_Unamused.png new file mode 100644 index 000000000..2afb2f91e Binary files /dev/null and b/graphics/HUD/DemoFace_Unamused.png differ diff --git a/graphics/HUD/DemoFace_Wink.png b/graphics/HUD/DemoFace_Wink.png new file mode 100644 index 000000000..bd1de1842 Binary files /dev/null and b/graphics/HUD/DemoFace_Wink.png differ diff --git a/graphics/HUD/DualExplodiumDisplay.png b/graphics/HUD/DualExplodiumDisplay.png deleted file mode 100644 index 2629aa7c3..000000000 Binary files a/graphics/HUD/DualExplodiumDisplay.png and /dev/null differ diff --git a/graphics/HUD/EnemyBar.png b/graphics/HUD/EnemyBar.png new file mode 100644 index 000000000..374536301 Binary files /dev/null and b/graphics/HUD/EnemyBar.png differ diff --git a/graphics/HUD/EnemyBar0.png b/graphics/HUD/EnemyBar0.png deleted file mode 100644 index d8874e9f5..000000000 Binary files a/graphics/HUD/EnemyBar0.png and /dev/null differ diff --git a/graphics/HUD/EnemyBar1.png b/graphics/HUD/EnemyBar1.png index 7fc4eb3ca..67361d687 100644 Binary files a/graphics/HUD/EnemyBar1.png and b/graphics/HUD/EnemyBar1.png differ diff --git a/graphics/HUD/EnemyBar2.png b/graphics/HUD/EnemyBar2.png index f906c4d22..b4cae6221 100644 Binary files a/graphics/HUD/EnemyBar2.png and b/graphics/HUD/EnemyBar2.png differ diff --git a/graphics/HUD/EnemyBar3.png b/graphics/HUD/EnemyBar3.png index 176ee937a..667d3a8c9 100644 Binary files a/graphics/HUD/EnemyBar3.png and b/graphics/HUD/EnemyBar3.png differ diff --git a/graphics/HUD/EnemyBarD.png b/graphics/HUD/EnemyBarD.png index a41939815..a43d2e46d 100644 Binary files a/graphics/HUD/EnemyBarD.png and b/graphics/HUD/EnemyBarD.png differ diff --git a/graphics/HUD/EnemyBarL.png b/graphics/HUD/EnemyBarL.png new file mode 100644 index 000000000..613ecfe3e Binary files /dev/null and b/graphics/HUD/EnemyBarL.png differ diff --git a/graphics/HUD/EnemyBarS.png b/graphics/HUD/EnemyBarS.png index fb3306c3e..f7f09eced 100644 Binary files a/graphics/HUD/EnemyBarS.png and b/graphics/HUD/EnemyBarS.png differ diff --git a/graphics/HUD/EnemyBox.png b/graphics/HUD/EnemyBox.png index d43ebd9aa..d32edd9c6 100644 Binary files a/graphics/HUD/EnemyBox.png and b/graphics/HUD/EnemyBox.png differ diff --git a/graphics/HUD/EvisceratorDisplay.png b/graphics/HUD/EvisceratorDisplay.png index c8713bf81..877dfb3cb 100644 Binary files a/graphics/HUD/EvisceratorDisplay.png and b/graphics/HUD/EvisceratorDisplay.png differ diff --git a/graphics/HUD/EvisceratorRound.png b/graphics/HUD/EvisceratorRound.png new file mode 100644 index 000000000..a72af3d22 Binary files /dev/null and b/graphics/HUD/EvisceratorRound.png differ diff --git a/graphics/HUD/EvisceratorShell.png b/graphics/HUD/EvisceratorShell.png deleted file mode 100644 index 7b6f93e1f..000000000 Binary files a/graphics/HUD/EvisceratorShell.png and /dev/null differ diff --git a/graphics/HUD/EvisceratorTight.png b/graphics/HUD/EvisceratorTight.png new file mode 100644 index 000000000..25c564065 Binary files /dev/null and b/graphics/HUD/EvisceratorTight.png differ diff --git a/graphics/HUD/EvisceratorWide.png b/graphics/HUD/EvisceratorWide.png new file mode 100644 index 000000000..174b1bb38 Binary files /dev/null and b/graphics/HUD/EvisceratorWide.png differ diff --git a/graphics/HUD/ExplodiumDisplay.png b/graphics/HUD/ExplodiumDisplay.png index 6c595ec53..2de62a224 100644 Binary files a/graphics/HUD/ExplodiumDisplay.png and b/graphics/HUD/ExplodiumDisplay.png differ diff --git a/graphics/HUD/ExplodiumRound.png b/graphics/HUD/ExplodiumRound.png new file mode 100644 index 000000000..3d07b83a8 Binary files /dev/null and b/graphics/HUD/ExplodiumRound.png differ diff --git a/graphics/HUD/FuelBar.png b/graphics/HUD/FuelBar.png index 92fab99b3..b040e2fd7 100644 Binary files a/graphics/HUD/FuelBar.png and b/graphics/HUD/FuelBar.png differ diff --git a/graphics/HUD/FuelBarS.png b/graphics/HUD/FuelBarS.png index a9bc63aa1..8a982a921 100644 Binary files a/graphics/HUD/FuelBarS.png and b/graphics/HUD/FuelBarS.png differ diff --git a/graphics/HUD/GenericAmmoBoxL.png b/graphics/HUD/GenericAmmoBoxL.png index 0fde30421..16a6ea35f 100644 Binary files a/graphics/HUD/GenericAmmoBoxL.png and b/graphics/HUD/GenericAmmoBoxL.png differ diff --git a/graphics/HUD/GenericAmmoBoxM.png b/graphics/HUD/GenericAmmoBoxM.png index a0ac05e43..993414c91 100644 Binary files a/graphics/HUD/GenericAmmoBoxM.png and b/graphics/HUD/GenericAmmoBoxM.png differ diff --git a/graphics/HUD/GenericAmmoBoxR.png b/graphics/HUD/GenericAmmoBoxR.png index 7fd2e0d13..dee80cbe2 100644 Binary files a/graphics/HUD/GenericAmmoBoxR.png and b/graphics/HUD/GenericAmmoBoxR.png differ diff --git a/graphics/HUD/GoldShell.png b/graphics/HUD/GoldShell.png deleted file mode 100644 index 3514fbd80..000000000 Binary files a/graphics/HUD/GoldShell.png and /dev/null differ diff --git a/graphics/HUD/GreenShell.png b/graphics/HUD/GreenShell.png deleted file mode 100644 index abb6ade7a..000000000 Binary files a/graphics/HUD/GreenShell.png and /dev/null differ diff --git a/graphics/HUD/HealthBar0.png b/graphics/HUD/HealthBar0.png index f8428f436..dea5a2243 100644 Binary files a/graphics/HUD/HealthBar0.png and b/graphics/HUD/HealthBar0.png differ diff --git a/graphics/HUD/HealthBar1.png b/graphics/HUD/HealthBar1.png index 3abdfc30b..145f3bd84 100644 Binary files a/graphics/HUD/HealthBar1.png and b/graphics/HUD/HealthBar1.png differ diff --git a/graphics/HUD/HealthBar2.png b/graphics/HUD/HealthBar2.png index 2f33f438c..1e23f5a66 100644 Binary files a/graphics/HUD/HealthBar2.png and b/graphics/HUD/HealthBar2.png differ diff --git a/graphics/HUD/HealthBar3.png b/graphics/HUD/HealthBar3.png index 9ae091bdb..1dfdf59b5 100644 Binary files a/graphics/HUD/HealthBar3.png and b/graphics/HUD/HealthBar3.png differ diff --git a/graphics/HUD/HealthBarD.png b/graphics/HUD/HealthBarD.png index a84068c4c..f72f87fab 100644 Binary files a/graphics/HUD/HealthBarD.png and b/graphics/HUD/HealthBarD.png differ diff --git a/graphics/HUD/HealthBarF.png b/graphics/HUD/HealthBarF.png new file mode 100644 index 000000000..9391ece36 Binary files /dev/null and b/graphics/HUD/HealthBarF.png differ diff --git a/graphics/HUD/HealthBarL.png b/graphics/HUD/HealthBarL.png new file mode 100644 index 000000000..b33f43bbf Binary files /dev/null and b/graphics/HUD/HealthBarL.png differ diff --git a/graphics/HUD/HealthBarP.png b/graphics/HUD/HealthBarP.png new file mode 100644 index 000000000..878ed49ad Binary files /dev/null and b/graphics/HUD/HealthBarP.png differ diff --git a/graphics/HUD/HealthBarS.png b/graphics/HUD/HealthBarS.png index 7544045bd..8e506bbee 100644 Binary files a/graphics/HUD/HealthBarS.png and b/graphics/HUD/HealthBarS.png differ diff --git a/graphics/HUD/HellblazerCrackshot.png b/graphics/HUD/HellblazerCrackshot.png deleted file mode 100644 index 3dd898274..000000000 Binary files a/graphics/HUD/HellblazerCrackshot.png and /dev/null differ diff --git a/graphics/HUD/HellblazerCrackshotLoaded.png b/graphics/HUD/HellblazerCrackshotLoaded.png deleted file mode 100644 index 6c9860dc9..000000000 Binary files a/graphics/HUD/HellblazerCrackshotLoaded.png and /dev/null differ diff --git a/graphics/HUD/HellblazerCrackshotLock.png b/graphics/HUD/HellblazerCrackshotLock.png deleted file mode 100644 index ae1d4354b..000000000 Binary files a/graphics/HUD/HellblazerCrackshotLock.png and /dev/null differ diff --git a/graphics/HUD/HellblazerDisplay.png b/graphics/HUD/HellblazerDisplay.png index 4514f797a..300db1c93 100644 Binary files a/graphics/HUD/HellblazerDisplay.png and b/graphics/HUD/HellblazerDisplay.png differ diff --git a/graphics/HUD/HellblazerMissile.png b/graphics/HUD/HellblazerMissile.png index 2aeff31b3..d6ac4e897 100644 Binary files a/graphics/HUD/HellblazerMissile.png and b/graphics/HUD/HellblazerMissile.png differ diff --git a/graphics/HUD/HellblazerMissileLoaded.png b/graphics/HUD/HellblazerMissileLoaded.png deleted file mode 100644 index 3161ec2b2..000000000 Binary files a/graphics/HUD/HellblazerMissileLoaded.png and /dev/null differ diff --git a/graphics/HUD/HellblazerMissileLock.png b/graphics/HUD/HellblazerMissileLock.png index d63e7d508..b44fc8f86 100644 Binary files a/graphics/HUD/HellblazerMissileLock.png and b/graphics/HUD/HellblazerMissileLock.png differ diff --git a/graphics/HUD/HellblazerRavager.png b/graphics/HUD/HellblazerRavager.png deleted file mode 100644 index 9a32061b3..000000000 Binary files a/graphics/HUD/HellblazerRavager.png and /dev/null differ diff --git a/graphics/HUD/HellblazerRavagerLoaded.png b/graphics/HUD/HellblazerRavagerLoaded.png deleted file mode 100644 index 313a677c7..000000000 Binary files a/graphics/HUD/HellblazerRavagerLoaded.png and /dev/null differ diff --git a/graphics/HUD/HellblazerRavagerLock.png b/graphics/HUD/HellblazerRavagerLock.png deleted file mode 100644 index bdb603008..000000000 Binary files a/graphics/HUD/HellblazerRavagerLock.png and /dev/null differ diff --git a/graphics/HUD/HellblazerWarhead.png b/graphics/HUD/HellblazerWarhead.png deleted file mode 100644 index 34d90d66d..000000000 Binary files a/graphics/HUD/HellblazerWarhead.png and /dev/null differ diff --git a/graphics/HUD/HellblazerWarheadLoaded.png b/graphics/HUD/HellblazerWarheadLoaded.png deleted file mode 100644 index 78d86982c..000000000 Binary files a/graphics/HUD/HellblazerWarheadLoaded.png and /dev/null differ diff --git a/graphics/HUD/HellblazerWarheadLock.png b/graphics/HUD/HellblazerWarheadLock.png deleted file mode 100644 index 9076a69b8..000000000 Binary files a/graphics/HUD/HellblazerWarheadLock.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_CandyBullet.png b/graphics/HUD/Icons/A_CandyBullet.png deleted file mode 100644 index 8003a594d..000000000 Binary files a/graphics/HUD/Icons/A_CandyBullet.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_CandyGun.png b/graphics/HUD/Icons/A_CandyGun.png deleted file mode 100644 index ead6ec6bb..000000000 Binary files a/graphics/HUD/Icons/A_CandyGun.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_Eviscerator.png b/graphics/HUD/Icons/A_Eviscerator.png deleted file mode 100644 index f19e260a6..000000000 Binary files a/graphics/HUD/Icons/A_Eviscerator.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_HellblazerCrackshot.png b/graphics/HUD/Icons/A_HellblazerCrackshot.png deleted file mode 100644 index b92e92408..000000000 Binary files a/graphics/HUD/Icons/A_HellblazerCrackshot.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_HellblazerMissile.png b/graphics/HUD/Icons/A_HellblazerMissile.png deleted file mode 100644 index 330132b4f..000000000 Binary files a/graphics/HUD/Icons/A_HellblazerMissile.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_HellblazerRavager.png b/graphics/HUD/Icons/A_HellblazerRavager.png deleted file mode 100644 index 98aa4fe2f..000000000 Binary files a/graphics/HUD/Icons/A_HellblazerRavager.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_HellblazerWarhead.png b/graphics/HUD/Icons/A_HellblazerWarhead.png deleted file mode 100644 index 5357004d1..000000000 Binary files a/graphics/HUD/Icons/A_HellblazerWarhead.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_MRAmmo.png b/graphics/HUD/Icons/A_MRAmmo.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_MRAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_MRGrenade.png b/graphics/HUD/Icons/A_MRGrenade.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_MRGrenade.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_MRRound.png b/graphics/HUD/Icons/A_MRRound.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_MRRound.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_QuadAmmo.png b/graphics/HUD/Icons/A_QuadAmmo.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_QuadAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_RayAmmo.png b/graphics/HUD/Icons/A_RayAmmo.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_RayAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_RayBattery.png b/graphics/HUD/Icons/A_RayBattery.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_RayBattery.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_RayBolt.png b/graphics/HUD/Icons/A_RayBolt.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_RayBolt.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_SMW05Ammo.png b/graphics/HUD/Icons/A_SMW05Ammo.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_SMW05Ammo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_SheenAmmo.png b/graphics/HUD/Icons/A_SheenAmmo.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_SheenAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_ShellsBall.png b/graphics/HUD/Icons/A_ShellsBall.png deleted file mode 100644 index 8b07da4ad..000000000 Binary files a/graphics/HUD/Icons/A_ShellsBall.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_ShellsDragon.png b/graphics/HUD/Icons/A_ShellsDragon.png deleted file mode 100644 index e9bc0d47a..000000000 Binary files a/graphics/HUD/Icons/A_ShellsDragon.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_ShellsFuck.png b/graphics/HUD/Icons/A_ShellsFuck.png deleted file mode 100644 index b3484f4e1..000000000 Binary files a/graphics/HUD/Icons/A_ShellsFuck.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_ShellsGold.png b/graphics/HUD/Icons/A_ShellsGold.png deleted file mode 100644 index 745a45521..000000000 Binary files a/graphics/HUD/Icons/A_ShellsGold.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_ShellsKinylum.png b/graphics/HUD/Icons/A_ShellsKinylum.png deleted file mode 100644 index 1cab3f0d5..000000000 Binary files a/graphics/HUD/Icons/A_ShellsKinylum.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_ShellsNormal.png b/graphics/HUD/Icons/A_ShellsNormal.png deleted file mode 100644 index 65b339c3b..000000000 Binary files a/graphics/HUD/Icons/A_ShellsNormal.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_ShellsSlug.png b/graphics/HUD/Icons/A_ShellsSlug.png deleted file mode 100644 index ca030736f..000000000 Binary files a/graphics/HUD/Icons/A_ShellsSlug.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_SilverBullet.png b/graphics/HUD/Icons/A_SilverBullet.png deleted file mode 100644 index 591a16bd7..000000000 Binary files a/graphics/HUD/Icons/A_SilverBullet.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_SilverBullet2.png b/graphics/HUD/Icons/A_SilverBullet2.png deleted file mode 100644 index fe8df615e..000000000 Binary files a/graphics/HUD/Icons/A_SilverBullet2.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_SilverBulletBullet.png b/graphics/HUD/Icons/A_SilverBulletBullet.png deleted file mode 100644 index 6dfdf28d6..000000000 Binary files a/graphics/HUD/Icons/A_SilverBulletBullet.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_SilverBulletBullet2.png b/graphics/HUD/Icons/A_SilverBulletBullet2.png deleted file mode 100644 index ded4f8264..000000000 Binary files a/graphics/HUD/Icons/A_SilverBulletBullet2.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_SparkBAmmo.png b/graphics/HUD/Icons/A_SparkBAmmo.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_SparkBAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_SparkRAmmo.png b/graphics/HUD/Icons/A_SparkRAmmo.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_SparkRAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_Sparkster.png b/graphics/HUD/Icons/A_Sparkster.png deleted file mode 100644 index 856b4e650..000000000 Binary files a/graphics/HUD/Icons/A_Sparkster.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_UltimateAmmo.png b/graphics/HUD/Icons/A_UltimateAmmo.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_UltimateAmmo.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_UltimatePod.png b/graphics/HUD/Icons/A_UltimatePod.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/A_UltimatePod.png and /dev/null differ diff --git a/graphics/HUD/Icons/A_Ynykron.png b/graphics/HUD/Icons/A_Ynykron.png deleted file mode 100644 index 08eaff5a7..000000000 Binary files a/graphics/HUD/Icons/A_Ynykron.png and /dev/null differ diff --git a/graphics/HUD/Icons/I_ArmorNugget.png b/graphics/HUD/Icons/I_ArmorNugget.png index 7f13ff6a3..ac48cc8a6 100644 Binary files a/graphics/HUD/Icons/I_ArmorNugget.png and b/graphics/HUD/Icons/I_ArmorNugget.png differ diff --git a/graphics/HUD/Icons/I_Barrier.png b/graphics/HUD/Icons/I_Barrier.png index d3530447d..efc05e030 100644 Binary files a/graphics/HUD/Icons/I_Barrier.png and b/graphics/HUD/Icons/I_Barrier.png differ diff --git a/graphics/HUD/Icons/I_BlastSuit.png b/graphics/HUD/Icons/I_BlastSuit.png index 81ba9c2dd..f6c5252c7 100644 Binary files a/graphics/HUD/Icons/I_BlastSuit.png and b/graphics/HUD/Icons/I_BlastSuit.png differ diff --git a/graphics/HUD/Icons/I_Devastation.png b/graphics/HUD/Icons/I_Devastation.png index c25f643b6..26c33adef 100644 Binary files a/graphics/HUD/Icons/I_Devastation.png and b/graphics/HUD/Icons/I_Devastation.png differ diff --git a/graphics/HUD/Icons/I_Divine.png b/graphics/HUD/Icons/I_Divine.png index fc51f8862..9bae0f11b 100644 Binary files a/graphics/HUD/Icons/I_Divine.png and b/graphics/HUD/Icons/I_Divine.png differ diff --git a/graphics/HUD/Icons/I_Embiggener.png b/graphics/HUD/Icons/I_Embiggener.png deleted file mode 100644 index a756dbd0c..000000000 Binary files a/graphics/HUD/Icons/I_Embiggener.png and /dev/null differ diff --git a/graphics/HUD/Icons/I_Fabricator1.png b/graphics/HUD/Icons/I_Fabricator1.png deleted file mode 100644 index 6d791bc3b..000000000 Binary files a/graphics/HUD/Icons/I_Fabricator1.png and /dev/null differ diff --git a/graphics/HUD/Icons/I_Fabricator2.png b/graphics/HUD/Icons/I_Fabricator2.png deleted file mode 100644 index 505efb918..000000000 Binary files a/graphics/HUD/Icons/I_Fabricator2.png and /dev/null differ diff --git a/graphics/HUD/Icons/I_Fabricator3.png b/graphics/HUD/Icons/I_Fabricator3.png deleted file mode 100644 index 860f5f078..000000000 Binary files a/graphics/HUD/Icons/I_Fabricator3.png and /dev/null differ diff --git a/graphics/HUD/Icons/I_Fabricator4.png b/graphics/HUD/Icons/I_Fabricator4.png deleted file mode 100644 index 2f2f8f52c..000000000 Binary files a/graphics/HUD/Icons/I_Fabricator4.png and /dev/null differ diff --git a/graphics/HUD/Icons/I_Ghost.png b/graphics/HUD/Icons/I_Ghost.png index 56b2fe23a..5db85e56d 100644 Binary files a/graphics/HUD/Icons/I_Ghost.png and b/graphics/HUD/Icons/I_Ghost.png differ diff --git a/graphics/HUD/Icons/I_Gravity.png b/graphics/HUD/Icons/I_Gravity.png index 73f7d0163..2d8326e44 100644 Binary files a/graphics/HUD/Icons/I_Gravity.png and b/graphics/HUD/Icons/I_Gravity.png differ diff --git a/graphics/HUD/Icons/I_HealthCube.png b/graphics/HUD/Icons/I_HealthCube.png index eac317184..90d173d70 100644 Binary files a/graphics/HUD/Icons/I_HealthCube.png and b/graphics/HUD/Icons/I_HealthCube.png differ diff --git a/graphics/HUD/Icons/I_HealthNugget.png b/graphics/HUD/Icons/I_HealthNugget.png deleted file mode 100644 index f234a37d6..000000000 Binary files a/graphics/HUD/Icons/I_HealthNugget.png and /dev/null differ diff --git a/graphics/HUD/Icons/I_HealthTetra.png b/graphics/HUD/Icons/I_HealthTetra.png index cf3be4a99..ec858f6f9 100644 Binary files a/graphics/HUD/Icons/I_HealthTetra.png and b/graphics/HUD/Icons/I_HealthTetra.png differ diff --git a/graphics/HUD/Icons/I_Invinciball.png b/graphics/HUD/Icons/I_Invinciball.png index 9a4799a14..f3f7f1ea6 100644 Binary files a/graphics/HUD/Icons/I_Invinciball.png and b/graphics/HUD/Icons/I_Invinciball.png differ diff --git a/graphics/HUD/Icons/I_Lamp.png b/graphics/HUD/Icons/I_Lamp.png index 05650d258..f59062985 100644 Binary files a/graphics/HUD/Icons/I_Lamp.png and b/graphics/HUD/Icons/I_Lamp.png differ diff --git a/graphics/HUD/Icons/I_LampOff.png b/graphics/HUD/Icons/I_LampOff.png index d2cd588da..6f02f150d 100644 Binary files a/graphics/HUD/Icons/I_LampOff.png and b/graphics/HUD/Icons/I_LampOff.png differ diff --git a/graphics/HUD/Icons/I_Mykradvo.png b/graphics/HUD/Icons/I_Mykradvo.png index ca4dce2e9..b0119744b 100644 Binary files a/graphics/HUD/Icons/I_Mykradvo.png and b/graphics/HUD/Icons/I_Mykradvo.png differ diff --git a/graphics/HUD/Icons/I_Omnisight.png b/graphics/HUD/Icons/I_Omnisight.png deleted file mode 100644 index 9589f5c6d..000000000 Binary files a/graphics/HUD/Icons/I_Omnisight.png and /dev/null differ diff --git a/graphics/HUD/Icons/I_Ragekit.png b/graphics/HUD/Icons/I_Ragekit.png index 79247e25c..ba9f4aff7 100644 Binary files a/graphics/HUD/Icons/I_Ragekit.png and b/graphics/HUD/Icons/I_Ragekit.png differ diff --git a/graphics/HUD/Icons/I_Revive.png b/graphics/HUD/Icons/I_Revive.png index 6766e6907..c8c0ebb6a 100644 Binary files a/graphics/HUD/Icons/I_Revive.png and b/graphics/HUD/Icons/I_Revive.png differ diff --git a/graphics/HUD/Icons/I_Safety.png b/graphics/HUD/Icons/I_Safety.png index 4c3ab3dbc..d3aa29e92 100644 Binary files a/graphics/HUD/Icons/I_Safety.png and b/graphics/HUD/Icons/I_Safety.png differ diff --git a/graphics/HUD/Icons/I_SafetyNo.png b/graphics/HUD/Icons/I_SafetyNo.png index de478f1c0..7e1e3b79c 100644 Binary files a/graphics/HUD/Icons/I_SafetyNo.png and b/graphics/HUD/Icons/I_SafetyNo.png differ diff --git a/graphics/HUD/Icons/I_SafetyOn.png b/graphics/HUD/Icons/I_SafetyOn.png index 30b1ed93c..a6c31b032 100644 Binary files a/graphics/HUD/Icons/I_SafetyOn.png and b/graphics/HUD/Icons/I_SafetyOn.png differ diff --git a/graphics/HUD/Icons/I_Sandwich.png b/graphics/HUD/Icons/I_Sandwich.png index a5a575dde..303b0cb19 100644 Binary files a/graphics/HUD/Icons/I_Sandwich.png and b/graphics/HUD/Icons/I_Sandwich.png differ diff --git a/graphics/HUD/Icons/I_WarArmor.png b/graphics/HUD/Icons/I_WarArmor.png index 5e671999b..c101c45ee 100644 Binary files a/graphics/HUD/Icons/I_WarArmor.png and b/graphics/HUD/Icons/I_WarArmor.png differ diff --git a/graphics/HUD/Icons/W_CandyGun.png b/graphics/HUD/Icons/W_CandyGun.png index c4e5802e4..3b2295d12 100644 Binary files a/graphics/HUD/Icons/W_CandyGun.png and b/graphics/HUD/Icons/W_CandyGun.png differ diff --git a/graphics/HUD/Icons/W_DeepImpact.png b/graphics/HUD/Icons/W_DeepImpact.png index 01e07d9e3..1ec03ee0c 100644 Binary files a/graphics/HUD/Icons/W_DeepImpact.png and b/graphics/HUD/Icons/W_DeepImpact.png differ diff --git a/graphics/HUD/Icons/W_Eviscerator.png b/graphics/HUD/Icons/W_Eviscerator.png index f8dbcb485..651cb97e8 100644 Binary files a/graphics/HUD/Icons/W_Eviscerator.png and b/graphics/HUD/Icons/W_Eviscerator.png differ diff --git a/graphics/HUD/Icons/W_ExplodiumGun.png b/graphics/HUD/Icons/W_ExplodiumGun.png index e3b7e7656..527766457 100644 Binary files a/graphics/HUD/Icons/W_ExplodiumGun.png and b/graphics/HUD/Icons/W_ExplodiumGun.png differ diff --git a/graphics/HUD/Icons/W_ExplodiumGun2.png b/graphics/HUD/Icons/W_ExplodiumGun2.png deleted file mode 100644 index 3c4380d55..000000000 Binary files a/graphics/HUD/Icons/W_ExplodiumGun2.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_Hellblazer.png b/graphics/HUD/Icons/W_Hellblazer.png index de9368fec..47e1141a4 100644 Binary files a/graphics/HUD/Icons/W_Hellblazer.png and b/graphics/HUD/Icons/W_Hellblazer.png differ diff --git a/graphics/HUD/Icons/W_ItamexHammer.png b/graphics/HUD/Icons/W_ItamexHammer.png index b516b82d2..0bd19cc39 100644 Binary files a/graphics/HUD/Icons/W_ItamexHammer.png and b/graphics/HUD/Icons/W_ItamexHammer.png differ diff --git a/graphics/HUD/Icons/W_MortalRifle.png b/graphics/HUD/Icons/W_MortalRifle.png index b516b82d2..741eecef1 100644 Binary files a/graphics/HUD/Icons/W_MortalRifle.png and b/graphics/HUD/Icons/W_MortalRifle.png differ diff --git a/graphics/HUD/Icons/W_NewSparkster.png b/graphics/HUD/Icons/W_NewSparkster.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/W_NewSparkster.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_PlasmaBlast.png b/graphics/HUD/Icons/W_PlasmaBlast.png index b516b82d2..9c34be790 100644 Binary files a/graphics/HUD/Icons/W_PlasmaBlast.png and b/graphics/HUD/Icons/W_PlasmaBlast.png differ diff --git a/graphics/HUD/Icons/W_PlasmaBlast2.png b/graphics/HUD/Icons/W_PlasmaBlast2.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/W_PlasmaBlast2.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_PuntzerBeta.png b/graphics/HUD/Icons/W_PuntzerBeta.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/W_PuntzerBeta.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_PuntzerGamma.png b/graphics/HUD/Icons/W_PuntzerGamma.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/W_PuntzerGamma.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_Pusher.png b/graphics/HUD/Icons/W_Pusher.png deleted file mode 100644 index c4dd69998..000000000 Binary files a/graphics/HUD/Icons/W_Pusher.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_Quadravol.png b/graphics/HUD/Icons/W_Quadravol.png index b516b82d2..381cc3e6b 100644 Binary files a/graphics/HUD/Icons/W_Quadravol.png and b/graphics/HUD/Icons/W_Quadravol.png differ diff --git a/graphics/HUD/Icons/W_RafanKos.png b/graphics/HUD/Icons/W_RafanKos.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/W_RafanKos.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_RayKhom.png b/graphics/HUD/Icons/W_RayKhom.png deleted file mode 100644 index b516b82d2..000000000 Binary files a/graphics/HUD/Icons/W_RayKhom.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_SheenHMG.png b/graphics/HUD/Icons/W_SheenHMG.png index b516b82d2..3913dd081 100644 Binary files a/graphics/HUD/Icons/W_SheenHMG.png and b/graphics/HUD/Icons/W_SheenHMG.png differ diff --git a/graphics/HUD/Icons/W_SilverBullet.png b/graphics/HUD/Icons/W_SilverBullet.png index 3b9dddd5d..3fed65252 100644 Binary files a/graphics/HUD/Icons/W_SilverBullet.png and b/graphics/HUD/Icons/W_SilverBullet.png differ diff --git a/graphics/HUD/Icons/W_Sparkster.png b/graphics/HUD/Icons/W_Sparkster.png index 08fb60067..2816d9c57 100644 Binary files a/graphics/HUD/Icons/W_Sparkster.png and b/graphics/HUD/Icons/W_Sparkster.png differ diff --git a/graphics/HUD/Icons/W_Spreadgun.png b/graphics/HUD/Icons/W_Spreadgun.png index a48c50fcf..127f8fc8c 100644 Binary files a/graphics/HUD/Icons/W_Spreadgun.png and b/graphics/HUD/Icons/W_Spreadgun.png differ diff --git a/graphics/HUD/Icons/W_Wallbuster.png b/graphics/HUD/Icons/W_Wallbuster.png index 94b41b973..5869aa520 100644 Binary files a/graphics/HUD/Icons/W_Wallbuster.png and b/graphics/HUD/Icons/W_Wallbuster.png differ diff --git a/graphics/HUD/Icons/W_Ynykron.png b/graphics/HUD/Icons/W_Ynykron.png index 8351904d6..496721c6e 100644 Binary files a/graphics/HUD/Icons/W_Ynykron.png and b/graphics/HUD/Icons/W_Ynykron.png differ diff --git a/graphics/HUD/ItamexBar.png b/graphics/HUD/ItamexBar.png new file mode 100644 index 000000000..d21148e4c Binary files /dev/null and b/graphics/HUD/ItamexBar.png differ diff --git a/graphics/HUD/ItamexDisplay.png b/graphics/HUD/ItamexDisplay.png new file mode 100644 index 000000000..5642a7870 Binary files /dev/null and b/graphics/HUD/ItamexDisplay.png differ diff --git a/graphics/HUD/LoadedBlackShell.png b/graphics/HUD/LoadedBlackShell.png deleted file mode 100644 index ee2c8d4b9..000000000 Binary files a/graphics/HUD/LoadedBlackShell.png and /dev/null differ diff --git a/graphics/HUD/LoadedBlueShell.png b/graphics/HUD/LoadedBlueShell.png deleted file mode 100644 index ac091f4bd..000000000 Binary files a/graphics/HUD/LoadedBlueShell.png and /dev/null differ diff --git a/graphics/HUD/LoadedGoldShell.png b/graphics/HUD/LoadedGoldShell.png deleted file mode 100644 index bd97f7efa..000000000 Binary files a/graphics/HUD/LoadedGoldShell.png and /dev/null differ diff --git a/graphics/HUD/LoadedGreenShell.png b/graphics/HUD/LoadedGreenShell.png deleted file mode 100644 index 680f994e5..000000000 Binary files a/graphics/HUD/LoadedGreenShell.png and /dev/null differ diff --git a/graphics/HUD/LoadedPurpleShell.png b/graphics/HUD/LoadedPurpleShell.png deleted file mode 100644 index a9ee7a45d..000000000 Binary files a/graphics/HUD/LoadedPurpleShell.png and /dev/null differ diff --git a/graphics/HUD/LoadedRedShell.png b/graphics/HUD/LoadedRedShell.png deleted file mode 100644 index bd8841071..000000000 Binary files a/graphics/HUD/LoadedRedShell.png and /dev/null differ diff --git a/graphics/HUD/LoadedWhiteShell.png b/graphics/HUD/LoadedWhiteShell.png deleted file mode 100644 index 583d3f0f2..000000000 Binary files a/graphics/HUD/LoadedWhiteShell.png and /dev/null differ diff --git a/graphics/HUD/MinimapBox.png b/graphics/HUD/MinimapBox.png index 2b6d1cacf..e87fbff80 100644 Binary files a/graphics/HUD/MinimapBox.png and b/graphics/HUD/MinimapBox.png differ diff --git a/graphics/HUD/MinimapBoxSmol.png b/graphics/HUD/MinimapBoxSmol.png new file mode 100644 index 000000000..9c5ca7abd Binary files /dev/null and b/graphics/HUD/MinimapBoxSmol.png differ diff --git a/graphics/HUD/MisterDisplay.png b/graphics/HUD/MisterDisplay.png new file mode 100644 index 000000000..75b34822b Binary files /dev/null and b/graphics/HUD/MisterDisplay.png differ diff --git a/graphics/HUD/MisterGrenade.png b/graphics/HUD/MisterGrenade.png new file mode 100644 index 000000000..bf85af23b Binary files /dev/null and b/graphics/HUD/MisterGrenade.png differ diff --git a/graphics/HUD/MisterGrenadeCasing.png b/graphics/HUD/MisterGrenadeCasing.png new file mode 100644 index 000000000..e97c2afe1 Binary files /dev/null and b/graphics/HUD/MisterGrenadeCasing.png differ diff --git a/graphics/HUD/MisterRound.png b/graphics/HUD/MisterRound.png new file mode 100644 index 000000000..98970f7b5 Binary files /dev/null and b/graphics/HUD/MisterRound.png differ diff --git a/graphics/HUD/PuntzerBetaDisplay.png b/graphics/HUD/PuntzerBetaDisplay.png new file mode 100644 index 000000000..e2961fe4d Binary files /dev/null and b/graphics/HUD/PuntzerBetaDisplay.png differ diff --git a/graphics/HUD/PuntzerCasing.png b/graphics/HUD/PuntzerCasing.png new file mode 100644 index 000000000..f5d1bee3a Binary files /dev/null and b/graphics/HUD/PuntzerCasing.png differ diff --git a/graphics/HUD/PuntzerGammaDisplay.png b/graphics/HUD/PuntzerGammaDisplay.png new file mode 100644 index 000000000..aa6be355d Binary files /dev/null and b/graphics/HUD/PuntzerGammaDisplay.png differ diff --git a/graphics/HUD/PuntzerRound.png b/graphics/HUD/PuntzerRound.png new file mode 100644 index 000000000..16fb8f3c2 Binary files /dev/null and b/graphics/HUD/PuntzerRound.png differ diff --git a/graphics/HUD/PurpleShell.png b/graphics/HUD/PurpleShell.png deleted file mode 100644 index 9b778aa95..000000000 Binary files a/graphics/HUD/PurpleShell.png and /dev/null differ diff --git a/graphics/HUD/PusherBar.png b/graphics/HUD/PusherBar.png deleted file mode 100644 index a4e513f31..000000000 Binary files a/graphics/HUD/PusherBar.png and /dev/null differ diff --git a/graphics/HUD/PusherDisplay.png b/graphics/HUD/PusherDisplay.png deleted file mode 100644 index f6c8346da..000000000 Binary files a/graphics/HUD/PusherDisplay.png and /dev/null differ diff --git a/graphics/HUD/QuadravolCasing.png b/graphics/HUD/QuadravolCasing.png new file mode 100644 index 000000000..805444dad Binary files /dev/null and b/graphics/HUD/QuadravolCasing.png differ diff --git a/graphics/HUD/QuadravolDisplay.png b/graphics/HUD/QuadravolDisplay.png new file mode 100644 index 000000000..9c6e97320 Binary files /dev/null and b/graphics/HUD/QuadravolDisplay.png differ diff --git a/graphics/HUD/QuadravolRound.png b/graphics/HUD/QuadravolRound.png new file mode 100644 index 000000000..5fd1f7338 Binary files /dev/null and b/graphics/HUD/QuadravolRound.png differ diff --git a/graphics/HUD/RafankosCasing.png b/graphics/HUD/RafankosCasing.png new file mode 100644 index 000000000..d5e9c32fd Binary files /dev/null and b/graphics/HUD/RafankosCasing.png differ diff --git a/graphics/HUD/RafankosDisplay.png b/graphics/HUD/RafankosDisplay.png new file mode 100644 index 000000000..c57f213bf Binary files /dev/null and b/graphics/HUD/RafankosDisplay.png differ diff --git a/graphics/HUD/RafankosRound.png b/graphics/HUD/RafankosRound.png new file mode 100644 index 000000000..cb5af157b Binary files /dev/null and b/graphics/HUD/RafankosRound.png differ diff --git a/graphics/HUD/RafankosRoundGlow.png b/graphics/HUD/RafankosRoundGlow.png new file mode 100644 index 000000000..619718bb7 Binary files /dev/null and b/graphics/HUD/RafankosRoundGlow.png differ diff --git a/graphics/HUD/RayKhomBar.png b/graphics/HUD/RayKhomBar.png new file mode 100644 index 000000000..a17515023 Binary files /dev/null and b/graphics/HUD/RayKhomBar.png differ diff --git a/graphics/HUD/RayKhomDisplay.png b/graphics/HUD/RayKhomDisplay.png new file mode 100644 index 000000000..377650360 Binary files /dev/null and b/graphics/HUD/RayKhomDisplay.png differ diff --git a/graphics/HUD/RayKhomRound.png b/graphics/HUD/RayKhomRound.png new file mode 100644 index 000000000..43b1df2ad Binary files /dev/null and b/graphics/HUD/RayKhomRound.png differ diff --git a/graphics/HUD/RedShell.png b/graphics/HUD/RedShell.png deleted file mode 100644 index 59405cfee..000000000 Binary files a/graphics/HUD/RedShell.png and /dev/null differ diff --git a/graphics/HUD/ScoreBox.png b/graphics/HUD/ScoreBox.png new file mode 100644 index 000000000..35abbf3eb Binary files /dev/null and b/graphics/HUD/ScoreBox.png differ diff --git a/graphics/HUD/ScoreBoxL.png b/graphics/HUD/ScoreBoxL.png deleted file mode 100644 index 00839aed6..000000000 Binary files a/graphics/HUD/ScoreBoxL.png and /dev/null differ diff --git a/graphics/HUD/ScoreBoxM.png b/graphics/HUD/ScoreBoxM.png deleted file mode 100644 index 3b3f66d29..000000000 Binary files a/graphics/HUD/ScoreBoxM.png and /dev/null differ diff --git a/graphics/HUD/ScoreBoxR.png b/graphics/HUD/ScoreBoxR.png deleted file mode 100644 index a8aa673a4..000000000 Binary files a/graphics/HUD/ScoreBoxR.png and /dev/null differ diff --git a/graphics/HUD/SheenBar.png b/graphics/HUD/SheenBar.png new file mode 100644 index 000000000..f25f4ec2a Binary files /dev/null and b/graphics/HUD/SheenBar.png differ diff --git a/graphics/HUD/SheenCasing.png b/graphics/HUD/SheenCasing.png new file mode 100644 index 000000000..e8e7693cb Binary files /dev/null and b/graphics/HUD/SheenCasing.png differ diff --git a/graphics/HUD/SheenDisplay.png b/graphics/HUD/SheenDisplay.png new file mode 100644 index 000000000..d3649b252 Binary files /dev/null and b/graphics/HUD/SheenDisplay.png differ diff --git a/graphics/HUD/SheenRound.png b/graphics/HUD/SheenRound.png new file mode 100644 index 000000000..16723fb9e Binary files /dev/null and b/graphics/HUD/SheenRound.png differ diff --git a/graphics/HUD/SheenSpeed.png b/graphics/HUD/SheenSpeed.png new file mode 100644 index 000000000..536468b8f Binary files /dev/null and b/graphics/HUD/SheenSpeed.png differ diff --git a/graphics/HUD/ShellGold.png b/graphics/HUD/ShellGold.png new file mode 100644 index 000000000..0afa5a291 Binary files /dev/null and b/graphics/HUD/ShellGold.png differ diff --git a/graphics/HUD/ShellRed.png b/graphics/HUD/ShellRed.png new file mode 100644 index 000000000..0550bfb4f Binary files /dev/null and b/graphics/HUD/ShellRed.png differ diff --git a/graphics/HUD/ShellRedSmall.png b/graphics/HUD/ShellRedSmall.png new file mode 100644 index 000000000..7acf82085 Binary files /dev/null and b/graphics/HUD/ShellRedSmall.png differ diff --git a/graphics/HUD/SilverBulletCasing.png b/graphics/HUD/SilverBulletCasing.png new file mode 100644 index 000000000..a5491ef83 Binary files /dev/null and b/graphics/HUD/SilverBulletCasing.png differ diff --git a/graphics/HUD/SilverBulletDisplay.png b/graphics/HUD/SilverBulletDisplay.png index 5c62f0452..9b4d47ad1 100644 Binary files a/graphics/HUD/SilverBulletDisplay.png and b/graphics/HUD/SilverBulletDisplay.png differ diff --git a/graphics/HUD/SilverBulletFCB.png b/graphics/HUD/SilverBulletFCB.png deleted file mode 100644 index 10e59451c..000000000 Binary files a/graphics/HUD/SilverBulletFCB.png and /dev/null differ diff --git a/graphics/HUD/SilverBulletFCBMag.png b/graphics/HUD/SilverBulletFCBMag.png deleted file mode 100644 index e78d1646a..000000000 Binary files a/graphics/HUD/SilverBulletFCBMag.png and /dev/null differ diff --git a/graphics/HUD/SilverBulletRound.png b/graphics/HUD/SilverBulletRound.png new file mode 100644 index 000000000..591cc97f0 Binary files /dev/null and b/graphics/HUD/SilverBulletRound.png differ diff --git a/graphics/HUD/SilverBulletXSB.png b/graphics/HUD/SilverBulletXSB.png deleted file mode 100644 index b01292e92..000000000 Binary files a/graphics/HUD/SilverBulletXSB.png and /dev/null differ diff --git a/graphics/HUD/SilverBulletXSBMag.png b/graphics/HUD/SilverBulletXSBMag.png deleted file mode 100644 index 0f685940e..000000000 Binary files a/graphics/HUD/SilverBulletXSBMag.png and /dev/null differ diff --git a/graphics/HUD/SilverBulletZoomBar.png b/graphics/HUD/SilverBulletZoomBar.png index 99e182306..45146f351 100644 Binary files a/graphics/HUD/SilverBulletZoomBar.png and b/graphics/HUD/SilverBulletZoomBar.png differ diff --git a/graphics/HUD/SilverBulletZoomDisplay.png b/graphics/HUD/SilverBulletZoomDisplay.png index 39a71a799..2cccd8fa3 100644 Binary files a/graphics/HUD/SilverBulletZoomDisplay.png and b/graphics/HUD/SilverBulletZoomDisplay.png differ diff --git a/graphics/HUD/SparksterDisplay.png b/graphics/HUD/SparksterDisplay.png new file mode 100644 index 000000000..3b2bf1407 Binary files /dev/null and b/graphics/HUD/SparksterDisplay.png differ diff --git a/graphics/HUD/SparksterKinylumActive.png b/graphics/HUD/SparksterKinylumActive.png new file mode 100644 index 000000000..11ccc164c Binary files /dev/null and b/graphics/HUD/SparksterKinylumActive.png differ diff --git a/graphics/HUD/SparksterKinylumBar.png b/graphics/HUD/SparksterKinylumBar.png new file mode 100644 index 000000000..72e2178c6 Binary files /dev/null and b/graphics/HUD/SparksterKinylumBar.png differ diff --git a/graphics/HUD/SparksterKinylumInert.png b/graphics/HUD/SparksterKinylumInert.png new file mode 100644 index 000000000..956c670e1 Binary files /dev/null and b/graphics/HUD/SparksterKinylumInert.png differ diff --git a/graphics/HUD/SparksterNokronActive.png b/graphics/HUD/SparksterNokronActive.png new file mode 100644 index 000000000..1b151807e Binary files /dev/null and b/graphics/HUD/SparksterNokronActive.png differ diff --git a/graphics/HUD/SparksterNokronBar.png b/graphics/HUD/SparksterNokronBar.png new file mode 100644 index 000000000..656e2f6f8 Binary files /dev/null and b/graphics/HUD/SparksterNokronBar.png differ diff --git a/graphics/HUD/SparksterNokronInert.png b/graphics/HUD/SparksterNokronInert.png new file mode 100644 index 000000000..14a2e1410 Binary files /dev/null and b/graphics/HUD/SparksterNokronInert.png differ diff --git a/graphics/HUD/SpreadgunDisplay.png b/graphics/HUD/SpreadgunDisplay.png index cbf2e57de..d87e7031e 100644 Binary files a/graphics/HUD/SpreadgunDisplay.png and b/graphics/HUD/SpreadgunDisplay.png differ diff --git a/graphics/HUD/StatusBox.png b/graphics/HUD/StatusBox.png index 1692dd450..c418c5b34 100644 Binary files a/graphics/HUD/StatusBox.png and b/graphics/HUD/StatusBox.png differ diff --git a/graphics/HUD/WallbusterBlue.png b/graphics/HUD/WallbusterBlue.png deleted file mode 100644 index 725ef3395..000000000 Binary files a/graphics/HUD/WallbusterBlue.png and /dev/null differ diff --git a/graphics/HUD/WallbusterBlueUsed.png b/graphics/HUD/WallbusterBlueUsed.png deleted file mode 100644 index 9f55af8cf..000000000 Binary files a/graphics/HUD/WallbusterBlueUsed.png and /dev/null differ diff --git a/graphics/HUD/WallbusterCursor.png b/graphics/HUD/WallbusterCursor.png new file mode 100644 index 000000000..1d2b245de Binary files /dev/null and b/graphics/HUD/WallbusterCursor.png differ diff --git a/graphics/HUD/WallbusterDisplay.png b/graphics/HUD/WallbusterDisplay.png index 121820ae4..2ba9a7846 100644 Binary files a/graphics/HUD/WallbusterDisplay.png and b/graphics/HUD/WallbusterDisplay.png differ diff --git a/graphics/HUD/WallbusterEmpty.png b/graphics/HUD/WallbusterEmpty.png deleted file mode 100644 index bce7f1fb2..000000000 Binary files a/graphics/HUD/WallbusterEmpty.png and /dev/null differ diff --git a/graphics/HUD/WallbusterGreen.png b/graphics/HUD/WallbusterGreen.png deleted file mode 100644 index 216fb2c14..000000000 Binary files a/graphics/HUD/WallbusterGreen.png and /dev/null differ diff --git a/graphics/HUD/WallbusterGreenUsed.png b/graphics/HUD/WallbusterGreenUsed.png deleted file mode 100644 index 7f7fdd45d..000000000 Binary files a/graphics/HUD/WallbusterGreenUsed.png and /dev/null differ diff --git a/graphics/HUD/WallbusterMenu.png b/graphics/HUD/WallbusterMenu.png deleted file mode 100644 index 0f3bc7f78..000000000 Binary files a/graphics/HUD/WallbusterMenu.png and /dev/null differ diff --git a/graphics/HUD/WallbusterPurple.png b/graphics/HUD/WallbusterPurple.png deleted file mode 100644 index a07762bea..000000000 Binary files a/graphics/HUD/WallbusterPurple.png and /dev/null differ diff --git a/graphics/HUD/WallbusterPurpleUsed.png b/graphics/HUD/WallbusterPurpleUsed.png deleted file mode 100644 index 6f34f648f..000000000 Binary files a/graphics/HUD/WallbusterPurpleUsed.png and /dev/null differ diff --git a/graphics/HUD/WallbusterRed.png b/graphics/HUD/WallbusterRed.png deleted file mode 100644 index 9ae44f87a..000000000 Binary files a/graphics/HUD/WallbusterRed.png and /dev/null differ diff --git a/graphics/HUD/WallbusterRedUsed.png b/graphics/HUD/WallbusterRedUsed.png deleted file mode 100644 index 86e3ee0e2..000000000 Binary files a/graphics/HUD/WallbusterRedUsed.png and /dev/null differ diff --git a/graphics/HUD/WeaponBox.png b/graphics/HUD/WeaponBox.png index d41af5bd4..71898b066 100644 Binary files a/graphics/HUD/WeaponBox.png and b/graphics/HUD/WeaponBox.png differ diff --git a/graphics/HUD/WhiteShell.png b/graphics/HUD/WhiteShell.png deleted file mode 100644 index 745dc7839..000000000 Binary files a/graphics/HUD/WhiteShell.png and /dev/null differ diff --git a/graphics/HUD/YnykronBarA.png b/graphics/HUD/YnykronBarA.png deleted file mode 100644 index b3a69b3ad..000000000 Binary files a/graphics/HUD/YnykronBarA.png and /dev/null differ diff --git a/graphics/HUD/YnykronBarB.png b/graphics/HUD/YnykronBarB.png deleted file mode 100644 index 143e11b1e..000000000 Binary files a/graphics/HUD/YnykronBarB.png and /dev/null differ diff --git a/graphics/HUD/YnykronBarBeam.png b/graphics/HUD/YnykronBarBeam.png new file mode 100644 index 000000000..1830087d0 Binary files /dev/null and b/graphics/HUD/YnykronBarBeam.png differ diff --git a/graphics/HUD/YnykronBarVortex.png b/graphics/HUD/YnykronBarVortex.png new file mode 100644 index 000000000..5eeab45e2 Binary files /dev/null and b/graphics/HUD/YnykronBarVortex.png differ diff --git a/graphics/HUD/YnykronDisplay.png b/graphics/HUD/YnykronDisplay.png index 754791903..66fc1fa57 100644 Binary files a/graphics/HUD/YnykronDisplay.png and b/graphics/HUD/YnykronDisplay.png differ diff --git a/graphics/HUD/YnykronIconBeam.png b/graphics/HUD/YnykronIconBeam.png new file mode 100644 index 000000000..71fb68e88 Binary files /dev/null and b/graphics/HUD/YnykronIconBeam.png differ diff --git a/graphics/HUD/YnykronIconVortex.png b/graphics/HUD/YnykronIconVortex.png new file mode 100644 index 000000000..066af4585 Binary files /dev/null and b/graphics/HUD/YnykronIconVortex.png differ diff --git a/graphics/HUD/YnykronSideA.png b/graphics/HUD/YnykronSideA.png deleted file mode 100644 index e669cbb2e..000000000 Binary files a/graphics/HUD/YnykronSideA.png and /dev/null differ diff --git a/graphics/HUD/YnykronSideB.png b/graphics/HUD/YnykronSideB.png deleted file mode 100644 index a4942ff0f..000000000 Binary files a/graphics/HUD/YnykronSideB.png and /dev/null differ diff --git a/graphics/InterBG.png b/graphics/InterBG.png deleted file mode 100644 index cd35a0a9b..000000000 Binary files a/graphics/InterBG.png and /dev/null differ diff --git a/graphics/KBase/Drawing_Ibuki.png b/graphics/KBase/Drawing_Ibuki.png index cf9e5e47a..d0cedd541 100644 Binary files a/graphics/KBase/Drawing_Ibuki.png and b/graphics/KBase/Drawing_Ibuki.png differ diff --git a/graphics/KBase/Drawing_Kirin.png b/graphics/KBase/Drawing_Kirin.png index dd4c05fc5..7b31493fe 100644 Binary files a/graphics/KBase/Drawing_Kirin.png and b/graphics/KBase/Drawing_Kirin.png differ diff --git a/graphics/KBase/Drawing_Saya.png b/graphics/KBase/Drawing_Saya.png index c192f67b8..869bc175a 100644 Binary files a/graphics/KBase/Drawing_Saya.png and b/graphics/KBase/Drawing_Saya.png differ diff --git a/graphics/KBase/FrameTex.png b/graphics/KBase/FrameTex.png index 79a975e64..aaa93d584 100644 Binary files a/graphics/KBase/FrameTex.png and b/graphics/KBase/FrameTex.png differ diff --git a/graphics/KBase/HSepTex.png b/graphics/KBase/HSepTex.png index d7f1095b4..7a48ce716 100644 Binary files a/graphics/KBase/HSepTex.png and b/graphics/KBase/HSepTex.png differ diff --git a/graphics/KBase/PFP_Admun.png b/graphics/KBase/PFP_Admun.png new file mode 100644 index 000000000..a2ca3ed7e Binary files /dev/null and b/graphics/KBase/PFP_Admun.png differ diff --git a/graphics/KBase/PFP_Alakir.png b/graphics/KBase/PFP_Alakir.png new file mode 100644 index 000000000..2ad64dfaa Binary files /dev/null and b/graphics/KBase/PFP_Alakir.png differ diff --git a/graphics/KBase/PFP_Ashley.png b/graphics/KBase/PFP_Ashley.png index 425e3c0b9..e8a27d628 100644 Binary files a/graphics/KBase/PFP_Ashley.png and b/graphics/KBase/PFP_Ashley.png differ diff --git a/graphics/KBase/PFP_Bigshot.png b/graphics/KBase/PFP_Bigshot.png index 8c600d624..f467aa385 100644 Binary files a/graphics/KBase/PFP_Bigshot.png and b/graphics/KBase/PFP_Bigshot.png differ diff --git a/graphics/KBase/PFP_Cinnamon.png b/graphics/KBase/PFP_Cinnamon.png new file mode 100644 index 000000000..4b68d79d6 Binary files /dev/null and b/graphics/KBase/PFP_Cinnamon.png differ diff --git a/graphics/KBase/PFP_Cytho.png b/graphics/KBase/PFP_Cytho.png index 29a110a88..a0424cc0c 100644 Binary files a/graphics/KBase/PFP_Cytho.png and b/graphics/KBase/PFP_Cytho.png differ diff --git a/graphics/KBase/PFP_Dana.png b/graphics/KBase/PFP_Dana.png new file mode 100644 index 000000000..23bb402d4 Binary files /dev/null and b/graphics/KBase/PFP_Dana.png differ diff --git a/graphics/KBase/PFP_Doomguy.png b/graphics/KBase/PFP_Doomguy.png new file mode 100644 index 000000000..8963e0678 Binary files /dev/null and b/graphics/KBase/PFP_Doomguy.png differ diff --git a/graphics/KBase/PFP_Ellen.png b/graphics/KBase/PFP_Ellen.png index d09b2036b..2cd91a888 100644 Binary files a/graphics/KBase/PFP_Ellen.png and b/graphics/KBase/PFP_Ellen.png differ diff --git a/graphics/KBase/PFP_Hermann.png b/graphics/KBase/PFP_Hermann.png new file mode 100644 index 000000000..f4eea4d96 Binary files /dev/null and b/graphics/KBase/PFP_Hermann.png differ diff --git a/graphics/KBase/PFP_Ibuki.png b/graphics/KBase/PFP_Ibuki.png index 76b50f3e5..bd2685b29 100644 Binary files a/graphics/KBase/PFP_Ibuki.png and b/graphics/KBase/PFP_Ibuki.png differ diff --git a/graphics/KBase/PFP_ImanakiT.png b/graphics/KBase/PFP_ImanakiT.png new file mode 100644 index 000000000..329ccb868 Binary files /dev/null and b/graphics/KBase/PFP_ImanakiT.png differ diff --git a/graphics/KBase/PFP_JoJo.png b/graphics/KBase/PFP_JoJo.png new file mode 100644 index 000000000..b5b9aff67 Binary files /dev/null and b/graphics/KBase/PFP_JoJo.png differ diff --git a/graphics/KBase/PFP_Kirin.png b/graphics/KBase/PFP_Kirin.png index d250999e0..d02603ef6 100644 Binary files a/graphics/KBase/PFP_Kirin.png and b/graphics/KBase/PFP_Kirin.png differ diff --git a/graphics/KBase/PFP_Kmonn.png b/graphics/KBase/PFP_Kmonn.png index 6253f687d..3a1b97366 100644 Binary files a/graphics/KBase/PFP_Kmonn.png and b/graphics/KBase/PFP_Kmonn.png differ diff --git a/graphics/KBase/PFP_Locke.png b/graphics/KBase/PFP_Locke.png index d3710be34..baec2fed9 100644 Binary files a/graphics/KBase/PFP_Locke.png and b/graphics/KBase/PFP_Locke.png differ diff --git a/graphics/KBase/PFP_Madcat.png b/graphics/KBase/PFP_Madcat.png new file mode 100644 index 000000000..b98ac3c62 Binary files /dev/null and b/graphics/KBase/PFP_Madcat.png differ diff --git a/graphics/KBase/PFP_Maidbot.png b/graphics/KBase/PFP_Maidbot.png index 9d15fbfd3..e0a93b4e7 100644 Binary files a/graphics/KBase/PFP_Maidbot.png and b/graphics/KBase/PFP_Maidbot.png differ diff --git a/graphics/KBase/PFP_Marisa.png b/graphics/KBase/PFP_Marisa.png new file mode 100644 index 000000000..09a61fa4f Binary files /dev/null and b/graphics/KBase/PFP_Marisa.png differ diff --git a/graphics/KBase/PFP_Nana.png b/graphics/KBase/PFP_Nana.png index 088c63ccc..6fe5d0a9b 100644 Binary files a/graphics/KBase/PFP_Nana.png and b/graphics/KBase/PFP_Nana.png differ diff --git a/graphics/KBase/PFP_Nukritas1xx.png b/graphics/KBase/PFP_Nukritas1xx.png new file mode 100644 index 000000000..d2dc92f51 Binary files /dev/null and b/graphics/KBase/PFP_Nukritas1xx.png differ diff --git a/graphics/KBase/PFP_Nukritas2xx.png b/graphics/KBase/PFP_Nukritas2xx.png new file mode 100644 index 000000000..39f35d731 Binary files /dev/null and b/graphics/KBase/PFP_Nukritas2xx.png differ diff --git a/graphics/KBase/PFP_Parker.png b/graphics/KBase/PFP_Parker.png new file mode 100644 index 000000000..9c4cc78cb Binary files /dev/null and b/graphics/KBase/PFP_Parker.png differ diff --git a/graphics/KBase/PFP_Reubens.png b/graphics/KBase/PFP_Reubens.png new file mode 100644 index 000000000..ebdf867e5 Binary files /dev/null and b/graphics/KBase/PFP_Reubens.png differ diff --git a/graphics/KBase/PFP_Rika.png b/graphics/KBase/PFP_Rika.png new file mode 100644 index 000000000..e0da8fae9 Binary files /dev/null and b/graphics/KBase/PFP_Rika.png differ diff --git a/graphics/KBase/PFP_Ryuji.png b/graphics/KBase/PFP_Ryuji.png index 5fa4547e1..13cedff7d 100644 Binary files a/graphics/KBase/PFP_Ryuji.png and b/graphics/KBase/PFP_Ryuji.png differ diff --git a/graphics/KBase/PFP_Saya.png b/graphics/KBase/PFP_Saya.png index 6640007b4..4224e81de 100644 Binary files a/graphics/KBase/PFP_Saya.png and b/graphics/KBase/PFP_Saya.png differ diff --git a/graphics/KBase/PFP_Taro.png b/graphics/KBase/PFP_Taro.png index cd5fe629b..acf655246 100644 Binary files a/graphics/KBase/PFP_Taro.png and b/graphics/KBase/PFP_Taro.png differ diff --git a/graphics/KBase/PFP_Unissix.png b/graphics/KBase/PFP_Unissix.png index b9faab43e..85901d228 100644 Binary files a/graphics/KBase/PFP_Unissix.png and b/graphics/KBase/PFP_Unissix.png differ diff --git a/graphics/KBase/PFP_WhiteLady.png b/graphics/KBase/PFP_WhiteLady.png new file mode 100644 index 000000000..33e0d8fda Binary files /dev/null and b/graphics/KBase/PFP_WhiteLady.png differ diff --git a/graphics/KBase/PFP_Yui.png b/graphics/KBase/PFP_Yui.png index ca40a884a..a1723f6bf 100644 Binary files a/graphics/KBase/PFP_Yui.png and b/graphics/KBase/PFP_Yui.png differ diff --git a/graphics/KBase/PFP_Zanaveth2.png b/graphics/KBase/PFP_Zanaveth2.png index a0bdf04e3..8dbc724d3 100644 Binary files a/graphics/KBase/PFP_Zanaveth2.png and b/graphics/KBase/PFP_Zanaveth2.png differ diff --git a/graphics/KBase/PFP_Zanaveth3.png b/graphics/KBase/PFP_Zanaveth3.png index bcf4046b0..f107a4dc6 100644 Binary files a/graphics/KBase/PFP_Zanaveth3.png and b/graphics/KBase/PFP_Zanaveth3.png differ diff --git a/graphics/KBase/VSepTex.png b/graphics/KBase/VSepTex.png index aa8fcc3fa..481345c80 100644 Binary files a/graphics/KBase/VSepTex.png and b/graphics/KBase/VSepTex.png differ diff --git a/graphics/M_DEMOCHAN.png b/graphics/M_DEMOCHAN.png deleted file mode 100644 index 37ca23a48..000000000 Binary files a/graphics/M_DEMOCHAN.png and /dev/null differ diff --git a/graphics/M_DEMOCHAN_BIOSPARK.png b/graphics/M_DEMOCHAN_BIOSPARK.png index 19180f59e..16ca725bc 100644 Binary files a/graphics/M_DEMOCHAN_BIOSPARK.png and b/graphics/M_DEMOCHAN_BIOSPARK.png differ diff --git a/graphics/M_DEMOCHAN_CANDYGUN.png b/graphics/M_DEMOCHAN_CANDYGUN.png index 1b7e2e757..a089ab892 100644 Binary files a/graphics/M_DEMOCHAN_CANDYGUN.png and b/graphics/M_DEMOCHAN_CANDYGUN.png differ diff --git a/graphics/M_DEMOCHAN_DAB.png b/graphics/M_DEMOCHAN_DAB.png index ee4194464..edbc865a5 100644 Binary files a/graphics/M_DEMOCHAN_DAB.png and b/graphics/M_DEMOCHAN_DAB.png differ diff --git a/graphics/M_DEMOCHAN_DEEPIMPACT.png b/graphics/M_DEMOCHAN_DEEPIMPACT.png index a235c0ce9..2bef7be52 100644 Binary files a/graphics/M_DEMOCHAN_DEEPIMPACT.png and b/graphics/M_DEMOCHAN_DEEPIMPACT.png differ diff --git a/graphics/M_DEMOCHAN_DOUBLEV.png b/graphics/M_DEMOCHAN_DOUBLEV.png index dff26ef2f..7fee4f751 100644 Binary files a/graphics/M_DEMOCHAN_DOUBLEV.png and b/graphics/M_DEMOCHAN_DOUBLEV.png differ diff --git a/graphics/M_DEMOCHAN_EVISCERATOR.png b/graphics/M_DEMOCHAN_EVISCERATOR.png index 122837a26..b77fe67de 100644 Binary files a/graphics/M_DEMOCHAN_EVISCERATOR.png and b/graphics/M_DEMOCHAN_EVISCERATOR.png differ diff --git a/graphics/M_DEMOCHAN_EXPLOGUN.png b/graphics/M_DEMOCHAN_EXPLOGUN.png index 96785cf5f..85fd673e0 100644 Binary files a/graphics/M_DEMOCHAN_EXPLOGUN.png and b/graphics/M_DEMOCHAN_EXPLOGUN.png differ diff --git a/graphics/M_DEMOCHAN_HAMMER.png b/graphics/M_DEMOCHAN_HAMMER.png new file mode 100644 index 000000000..351c1af99 Binary files /dev/null and b/graphics/M_DEMOCHAN_HAMMER.png differ diff --git a/graphics/M_DEMOCHAN_HEALTH.png b/graphics/M_DEMOCHAN_HEALTH.png index d47ab5e2b..5c0d9ea35 100644 Binary files a/graphics/M_DEMOCHAN_HEALTH.png and b/graphics/M_DEMOCHAN_HEALTH.png differ diff --git a/graphics/M_DEMOCHAN_HELLBLAZER.png b/graphics/M_DEMOCHAN_HELLBLAZER.png index c0eaef577..c718c4a87 100644 Binary files a/graphics/M_DEMOCHAN_HELLBLAZER.png and b/graphics/M_DEMOCHAN_HELLBLAZER.png differ diff --git a/graphics/M_DEMOCHAN_LOVE.png b/graphics/M_DEMOCHAN_LOVE.png index c27ab00ce..c380cdc83 100644 Binary files a/graphics/M_DEMOCHAN_LOVE.png and b/graphics/M_DEMOCHAN_LOVE.png differ diff --git a/graphics/M_DEMOCHAN_MISTER.png b/graphics/M_DEMOCHAN_MISTER.png new file mode 100644 index 000000000..844471483 Binary files /dev/null and b/graphics/M_DEMOCHAN_MISTER.png differ diff --git a/graphics/M_DEMOCHAN_PLASMA.png b/graphics/M_DEMOCHAN_PLASMA.png new file mode 100644 index 000000000..ffeb55121 Binary files /dev/null and b/graphics/M_DEMOCHAN_PLASMA.png differ diff --git a/graphics/M_DEMOCHAN_PUSHER.png b/graphics/M_DEMOCHAN_PUSHER.png deleted file mode 100644 index 80f5c3cf7..000000000 Binary files a/graphics/M_DEMOCHAN_PUSHER.png and /dev/null differ diff --git a/graphics/M_DEMOCHAN_QUADRAVOL.png b/graphics/M_DEMOCHAN_QUADRAVOL.png new file mode 100644 index 000000000..1440c4422 Binary files /dev/null and b/graphics/M_DEMOCHAN_QUADRAVOL.png differ diff --git a/graphics/M_DEMOCHAN_RAGEKIT.png b/graphics/M_DEMOCHAN_RAGEKIT.png index 0b9ab6087..80d61dd95 100644 Binary files a/graphics/M_DEMOCHAN_RAGEKIT.png and b/graphics/M_DEMOCHAN_RAGEKIT.png differ diff --git a/graphics/M_DEMOCHAN_SANDWICH.png b/graphics/M_DEMOCHAN_SANDWICH.png index ab493fe14..aba4b44de 100644 Binary files a/graphics/M_DEMOCHAN_SANDWICH.png and b/graphics/M_DEMOCHAN_SANDWICH.png differ diff --git a/graphics/M_DEMOCHAN_SHEEN.png b/graphics/M_DEMOCHAN_SHEEN.png new file mode 100644 index 000000000..17ef1d68f Binary files /dev/null and b/graphics/M_DEMOCHAN_SHEEN.png differ diff --git a/graphics/M_DEMOCHAN_SHELLS.png b/graphics/M_DEMOCHAN_SHELLS.png index ccc052d7b..a6a77cc78 100644 Binary files a/graphics/M_DEMOCHAN_SHELLS.png and b/graphics/M_DEMOCHAN_SHELLS.png differ diff --git a/graphics/M_DEMOCHAN_SILVERBULLET.png b/graphics/M_DEMOCHAN_SILVERBULLET.png index b954e550f..b8f392426 100644 Binary files a/graphics/M_DEMOCHAN_SILVERBULLET.png and b/graphics/M_DEMOCHAN_SILVERBULLET.png differ diff --git a/graphics/M_DEMOCHAN_SKULL.png b/graphics/M_DEMOCHAN_SKULL.png index 79e9798ea..e4c657764 100644 Binary files a/graphics/M_DEMOCHAN_SKULL.png and b/graphics/M_DEMOCHAN_SKULL.png differ diff --git a/graphics/M_DEMOCHAN_SPREADGUN.png b/graphics/M_DEMOCHAN_SPREADGUN.png index 235ad2bc7..f55cd1573 100644 Binary files a/graphics/M_DEMOCHAN_SPREADGUN.png and b/graphics/M_DEMOCHAN_SPREADGUN.png differ diff --git a/graphics/M_DEMOCHAN_THONK.png b/graphics/M_DEMOCHAN_THONK.png index d13021f71..9bd5a27ed 100644 Binary files a/graphics/M_DEMOCHAN_THONK.png and b/graphics/M_DEMOCHAN_THONK.png differ diff --git a/graphics/M_DEMOCHAN_THUMBUP.png b/graphics/M_DEMOCHAN_THUMBUP.png index 8c06766a0..0d83faf72 100644 Binary files a/graphics/M_DEMOCHAN_THUMBUP.png and b/graphics/M_DEMOCHAN_THUMBUP.png differ diff --git a/graphics/M_DEMOCHAN_WALLBUSTER.png b/graphics/M_DEMOCHAN_WALLBUSTER.png index da2839e95..d5375a4ca 100644 Binary files a/graphics/M_DEMOCHAN_WALLBUSTER.png and b/graphics/M_DEMOCHAN_WALLBUSTER.png differ diff --git a/graphics/M_DEMOCHAN_YNYKRON.png b/graphics/M_DEMOCHAN_YNYKRON.png index 3c2151d3d..9e20ceeb0 100644 Binary files a/graphics/M_DEMOCHAN_YNYKRON.png and b/graphics/M_DEMOCHAN_YNYKRON.png differ diff --git a/graphics/M_DEMOLITIONIST.png b/graphics/M_DEMOLITIONIST.png index b9f3a1723..a8a046132 100644 Binary files a/graphics/M_DEMOLITIONIST.png and b/graphics/M_DEMOLITIONIST.png differ diff --git a/graphics/M_GRAD.png b/graphics/M_GRAD.png index 1793e8453..ae8671f35 100644 Binary files a/graphics/M_GRAD.png and b/graphics/M_GRAD.png differ diff --git a/graphics/M_SWWM.png b/graphics/M_SWWM.png deleted file mode 100644 index 25dcc958d..000000000 Binary files a/graphics/M_SWWM.png and /dev/null differ diff --git a/graphics/M_SWWM_Layer1.png b/graphics/M_SWWM_Layer1.png deleted file mode 100644 index 301d6b6e2..000000000 Binary files a/graphics/M_SWWM_Layer1.png and /dev/null differ diff --git a/graphics/M_SWWM_Layer2.png b/graphics/M_SWWM_Layer2.png deleted file mode 100644 index 6d61a520f..000000000 Binary files a/graphics/M_SWWM_Layer2.png and /dev/null differ diff --git a/graphics/M_SWWM_Layer3.png b/graphics/M_SWWM_Layer3.png deleted file mode 100644 index 0f6cb7036..000000000 Binary files a/graphics/M_SWWM_Layer3.png and /dev/null differ diff --git a/graphics/M_SWWM_Layer4.png b/graphics/M_SWWM_Layer4.png deleted file mode 100644 index 4b423de2a..000000000 Binary files a/graphics/M_SWWM_Layer4.png and /dev/null differ diff --git a/graphics/M_SWWM_Layer5.png b/graphics/M_SWWM_Layer5.png deleted file mode 100644 index e3a1c1698..000000000 Binary files a/graphics/M_SWWM_Layer5.png and /dev/null differ diff --git a/graphics/M_SWWM_Layer6.png b/graphics/M_SWWM_Layer6.png deleted file mode 100644 index a43598d03..000000000 Binary files a/graphics/M_SWWM_Layer6.png and /dev/null differ diff --git a/graphics/NETNOTCH.png b/graphics/NETNOTCH.png new file mode 100644 index 000000000..c8ccf2712 Binary files /dev/null and b/graphics/NETNOTCH.png differ diff --git a/graphics/NOTCH.png b/graphics/NOTCH.png new file mode 100644 index 000000000..f082f5923 Binary files /dev/null and b/graphics/NOTCH.png differ diff --git a/graphics/NewLogo.png b/graphics/NewLogo.png index 26e519b0d..53c7384f9 100644 Binary files a/graphics/NewLogo.png and b/graphics/NewLogo.png differ diff --git a/graphics/NewLogo_Grad.png b/graphics/NewLogo_Grad.png index ab24d4aae..287641cc1 100644 Binary files a/graphics/NewLogo_Grad.png and b/graphics/NewLogo_Grad.png differ diff --git a/graphics/NewLogo_Layer1.png b/graphics/NewLogo_Layer1.png index 8e54d66db..6950342ee 100644 Binary files a/graphics/NewLogo_Layer1.png and b/graphics/NewLogo_Layer1.png differ diff --git a/graphics/NewLogo_Layer2.png b/graphics/NewLogo_Layer2.png index e40010ac2..d4da5e879 100644 Binary files a/graphics/NewLogo_Layer2.png and b/graphics/NewLogo_Layer2.png differ diff --git a/graphics/NewLogo_Layer3.png b/graphics/NewLogo_Layer3.png index f6a3bf37a..04b80324f 100644 Binary files a/graphics/NewLogo_Layer3.png and b/graphics/NewLogo_Layer3.png differ diff --git a/graphics/NewLogo_Letter0.png b/graphics/NewLogo_Letter0.png index 1ebffda96..1f74ef0d1 100644 Binary files a/graphics/NewLogo_Letter0.png and b/graphics/NewLogo_Letter0.png differ diff --git a/graphics/NewLogo_Letter1.png b/graphics/NewLogo_Letter1.png index 05cb28140..b29c45d1c 100644 Binary files a/graphics/NewLogo_Letter1.png and b/graphics/NewLogo_Letter1.png differ diff --git a/graphics/NewLogo_Letter10.png b/graphics/NewLogo_Letter10.png index a6b3fb34b..e0abbbca6 100644 Binary files a/graphics/NewLogo_Letter10.png and b/graphics/NewLogo_Letter10.png differ diff --git a/graphics/NewLogo_Letter11.png b/graphics/NewLogo_Letter11.png index 2367c1676..84601e79b 100644 Binary files a/graphics/NewLogo_Letter11.png and b/graphics/NewLogo_Letter11.png differ diff --git a/graphics/NewLogo_Letter12.png b/graphics/NewLogo_Letter12.png index b82e01b0e..1c5ae2e62 100644 Binary files a/graphics/NewLogo_Letter12.png and b/graphics/NewLogo_Letter12.png differ diff --git a/graphics/NewLogo_Letter2.png b/graphics/NewLogo_Letter2.png index d34de4b4b..3f90edd53 100644 Binary files a/graphics/NewLogo_Letter2.png and b/graphics/NewLogo_Letter2.png differ diff --git a/graphics/NewLogo_Letter3.png b/graphics/NewLogo_Letter3.png index c7d6842cc..0d569c5e9 100644 Binary files a/graphics/NewLogo_Letter3.png and b/graphics/NewLogo_Letter3.png differ diff --git a/graphics/NewLogo_Letter4.png b/graphics/NewLogo_Letter4.png index 89eab4ef8..7f73691ae 100644 Binary files a/graphics/NewLogo_Letter4.png and b/graphics/NewLogo_Letter4.png differ diff --git a/graphics/NewLogo_Letter5.png b/graphics/NewLogo_Letter5.png index dfab5f003..72f373731 100644 Binary files a/graphics/NewLogo_Letter5.png and b/graphics/NewLogo_Letter5.png differ diff --git a/graphics/NewLogo_Letter6.png b/graphics/NewLogo_Letter6.png index 4d411999e..29787e691 100644 Binary files a/graphics/NewLogo_Letter6.png and b/graphics/NewLogo_Letter6.png differ diff --git a/graphics/NewLogo_Letter7.png b/graphics/NewLogo_Letter7.png index e3a2d69a9..83cf3d55d 100644 Binary files a/graphics/NewLogo_Letter7.png and b/graphics/NewLogo_Letter7.png differ diff --git a/graphics/NewLogo_Letter8.png b/graphics/NewLogo_Letter8.png index 65af7caea..b45228f9e 100644 Binary files a/graphics/NewLogo_Letter8.png and b/graphics/NewLogo_Letter8.png differ diff --git a/graphics/NewLogo_Letter9.png b/graphics/NewLogo_Letter9.png index 86dcd2692..f3a6b7353 100644 Binary files a/graphics/NewLogo_Letter9.png and b/graphics/NewLogo_Letter9.png differ diff --git a/graphics/Particles/xflare.png b/graphics/Particles/xflare.png new file mode 100644 index 000000000..6630bc480 Binary files /dev/null and b/graphics/Particles/xflare.png differ diff --git a/graphics/Particles/xpuff0.png b/graphics/Particles/xpuff0.png new file mode 100644 index 000000000..688c21bd8 Binary files /dev/null and b/graphics/Particles/xpuff0.png differ diff --git a/graphics/Particles/xpuff1.png b/graphics/Particles/xpuff1.png new file mode 100644 index 000000000..c7b2e7847 Binary files /dev/null and b/graphics/Particles/xpuff1.png differ diff --git a/graphics/Particles/xpuff2.png b/graphics/Particles/xpuff2.png new file mode 100644 index 000000000..6bee25426 Binary files /dev/null and b/graphics/Particles/xpuff2.png differ diff --git a/graphics/Particles/xpuff3.png b/graphics/Particles/xpuff3.png new file mode 100644 index 000000000..5ca54bce7 Binary files /dev/null and b/graphics/Particles/xpuff3.png differ diff --git a/graphics/Particles/xpuff4.png b/graphics/Particles/xpuff4.png new file mode 100644 index 000000000..a06bbd9b5 Binary files /dev/null and b/graphics/Particles/xpuff4.png differ diff --git a/graphics/Particles/xpuff5.png b/graphics/Particles/xpuff5.png new file mode 100644 index 000000000..891e70845 Binary files /dev/null and b/graphics/Particles/xpuff5.png differ diff --git a/graphics/Particles/xpuff6.png b/graphics/Particles/xpuff6.png new file mode 100644 index 000000000..3ed517fd2 Binary files /dev/null and b/graphics/Particles/xpuff6.png differ diff --git a/graphics/Particles/xpuff7.png b/graphics/Particles/xpuff7.png new file mode 100644 index 000000000..963501014 Binary files /dev/null and b/graphics/Particles/xpuff7.png differ diff --git a/graphics/Renders/ActionShot.jpg b/graphics/Renders/ActionShot.jpg new file mode 100644 index 000000000..0e077311d Binary files /dev/null and b/graphics/Renders/ActionShot.jpg differ diff --git a/graphics/Renders/BTSXE1.jpg b/graphics/Renders/BTSXE1.jpg new file mode 100644 index 000000000..7268ff98d Binary files /dev/null and b/graphics/Renders/BTSXE1.jpg differ diff --git a/graphics/Renders/BedTime.jpg b/graphics/Renders/BedTime.jpg new file mode 100644 index 000000000..3e21f3242 Binary files /dev/null and b/graphics/Renders/BedTime.jpg differ diff --git a/graphics/Renders/Booty.jpg b/graphics/Renders/Booty.jpg new file mode 100644 index 000000000..95fdbd40b Binary files /dev/null and b/graphics/Renders/Booty.jpg differ diff --git a/graphics/Renders/CandyGun.jpg b/graphics/Renders/CandyGun.jpg new file mode 100644 index 000000000..38484f12f Binary files /dev/null and b/graphics/Renders/CandyGun.jpg differ diff --git a/graphics/Renders/Costanza.jpg b/graphics/Renders/Costanza.jpg new file mode 100644 index 000000000..6c619ebff Binary files /dev/null and b/graphics/Renders/Costanza.jpg differ diff --git a/graphics/Renders/Cube.jpg b/graphics/Renders/Cube.jpg new file mode 100644 index 000000000..9bafde002 Binary files /dev/null and b/graphics/Renders/Cube.jpg differ diff --git a/graphics/Renders/E2M8.jpg b/graphics/Renders/E2M8.jpg new file mode 100644 index 000000000..3867d6258 Binary files /dev/null and b/graphics/Renders/E2M8.jpg differ diff --git a/graphics/Renders/FroggyGang.jpg b/graphics/Renders/FroggyGang.jpg new file mode 100644 index 000000000..18fd94e3e Binary files /dev/null and b/graphics/Renders/FroggyGang.jpg differ diff --git a/graphics/Renders/InAHurry.jpg b/graphics/Renders/InAHurry.jpg new file mode 100644 index 000000000..1295ca76b Binary files /dev/null and b/graphics/Renders/InAHurry.jpg differ diff --git a/graphics/Renders/MisaYnykron.jpg b/graphics/Renders/MisaYnykron.jpg new file mode 100644 index 000000000..875eb1574 Binary files /dev/null and b/graphics/Renders/MisaYnykron.jpg differ diff --git a/graphics/Renders/Nutso.jpg b/graphics/Renders/Nutso.jpg new file mode 100644 index 000000000..2ed638867 Binary files /dev/null and b/graphics/Renders/Nutso.jpg differ diff --git a/graphics/Renders/SayaBean.jpg b/graphics/Renders/SayaBean.jpg new file mode 100644 index 000000000..1a7efb5be Binary files /dev/null and b/graphics/Renders/SayaBean.jpg differ diff --git a/graphics/Renders/SayaGaming.jpg b/graphics/Renders/SayaGaming.jpg new file mode 100644 index 000000000..19fef09d0 Binary files /dev/null and b/graphics/Renders/SayaGaming.jpg differ diff --git a/graphics/Renders/Sheen.jpg b/graphics/Renders/Sheen.jpg new file mode 100644 index 000000000..e6879a247 Binary files /dev/null and b/graphics/Renders/Sheen.jpg differ diff --git a/graphics/Renders/Sunder.jpg b/graphics/Renders/Sunder.jpg new file mode 100644 index 000000000..cfc1df3e9 Binary files /dev/null and b/graphics/Renders/Sunder.jpg differ diff --git a/graphics/Renders/Ynykron.jpg b/graphics/Renders/Ynykron.jpg new file mode 100644 index 000000000..93b969e2f Binary files /dev/null and b/graphics/Renders/Ynykron.jpg differ diff --git a/graphics/SBReticle.png b/graphics/SBReticle.png index b3796bcdb..2958a1c79 100644 Binary files a/graphics/SBReticle.png and b/graphics/SBReticle.png differ diff --git a/graphics/SBScope.png b/graphics/SBScope.png index 9d660c303..691e42ae5 100644 Binary files a/graphics/SBScope.png and b/graphics/SBScope.png differ diff --git a/graphics/STARTUP.png b/graphics/STARTUP.png new file mode 100644 index 000000000..a1253aed5 Binary files /dev/null and b/graphics/STARTUP.png differ diff --git a/graphics/SWWMGZLogo.png b/graphics/SWWMGZLogo.png deleted file mode 100644 index 844269daf..000000000 Binary files a/graphics/SWWMGZLogo.png and /dev/null differ diff --git a/graphics/SWWMGZLogo_Layer1.png b/graphics/SWWMGZLogo_Layer1.png deleted file mode 100644 index 17a8a6224..000000000 Binary files a/graphics/SWWMGZLogo_Layer1.png and /dev/null differ diff --git a/graphics/SWWMGZLogo_Layer2.png b/graphics/SWWMGZLogo_Layer2.png deleted file mode 100644 index 9aa13d25b..000000000 Binary files a/graphics/SWWMGZLogo_Layer2.png and /dev/null differ diff --git a/graphics/SWWMGZLogo_Layer3.png b/graphics/SWWMGZLogo_Layer3.png deleted file mode 100644 index 88e434b15..000000000 Binary files a/graphics/SWWMGZLogo_Layer3.png and /dev/null differ diff --git a/graphics/SWWMGZLogo_Layer4.png b/graphics/SWWMGZLogo_Layer4.png deleted file mode 100644 index d640a566e..000000000 Binary files a/graphics/SWWMGZLogo_Layer4.png and /dev/null differ diff --git a/graphics/SWWMGZLogo_Layer5.png b/graphics/SWWMGZLogo_Layer5.png deleted file mode 100644 index 6e131dcbc..000000000 Binary files a/graphics/SWWMGZLogo_Layer5.png and /dev/null differ diff --git a/graphics/SWWMGZLogo_Layer6.png b/graphics/SWWMGZLogo_Layer6.png deleted file mode 100644 index 94113170f..000000000 Binary files a/graphics/SWWMGZLogo_Layer6.png and /dev/null differ diff --git a/graphics/UnSXLogo.png b/graphics/UnSXLogo.png deleted file mode 100644 index b029fd618..000000000 Binary files a/graphics/UnSXLogo.png and /dev/null differ diff --git a/graphics/areaname_grad.png b/graphics/areaname_grad.png new file mode 100644 index 000000000..a3f1038e5 Binary files /dev/null and b/graphics/areaname_grad.png differ diff --git a/graphics/bord_b.png b/graphics/bord_b.png index 3c84e7f8b..02dcafd7b 100644 Binary files a/graphics/bord_b.png and b/graphics/bord_b.png differ diff --git a/graphics/bord_br.png b/graphics/bord_br.png index 2966e5fef..e87d8ebc1 100644 Binary files a/graphics/bord_br.png and b/graphics/bord_br.png differ diff --git a/graphics/bord_flat.png b/graphics/bord_flat.png index 3c3ea3be5..123174ff4 100644 Binary files a/graphics/bord_flat.png and b/graphics/bord_flat.png differ diff --git a/graphics/bord_l.png b/graphics/bord_l.png index af34f4db8..42694d59d 100644 Binary files a/graphics/bord_l.png and b/graphics/bord_l.png differ diff --git a/graphics/bord_r.png b/graphics/bord_r.png index 754a0b6ef..17008186b 100644 Binary files a/graphics/bord_r.png and b/graphics/bord_r.png differ diff --git a/graphics/bord_tl.png b/graphics/bord_tl.png index 171ba8011..cf5bd7b87 100644 Binary files a/graphics/bord_tl.png and b/graphics/bord_tl.png differ diff --git a/graphics/bord_tr.png b/graphics/bord_tr.png index 68e3fc65d..a6aab4b87 100644 Binary files a/graphics/bord_tr.png and b/graphics/bord_tr.png differ diff --git a/graphics/dsmapfont.json b/graphics/dsmapfont.json new file mode 100644 index 000000000..0d1451479 --- /dev/null +++ b/graphics/dsmapfont.json @@ -0,0 +1,199 @@ +{ + "name": "EB Garamond Medium", + "size": 36, + "bold": false, + "italic": false, + "width": 597, + "height": 203, + "characters": { + "0":{"x":201,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "1":{"x":429,"y":130,"width":17,"height":27,"originX":-1,"originY":25,"advance":18}, + "2":{"x":159,"y":130,"width":21,"height":27,"originX":1,"originY":25,"advance":18}, + "3":{"x":274,"y":74,"width":19,"height":29,"originX":0,"originY":25,"advance":18}, + "4":{"x":71,"y":130,"width":22,"height":27,"originX":2,"originY":25,"advance":18}, + "5":{"x":293,"y":74,"width":18,"height":29,"originX":0,"originY":25,"advance":18}, + "6":{"x":469,"y":74,"width":19,"height":28,"originX":0,"originY":26,"advance":18}, + "7":{"x":408,"y":74,"width":21,"height":28,"originX":1,"originY":25,"advance":18}, + "8":{"x":301,"y":130,"width":19,"height":27,"originX":0,"originY":25,"advance":18}, + "9":{"x":449,"y":74,"width":20,"height":28,"originX":0,"originY":25,"advance":18}, + "!":{"x":0,"y":157,"width":9,"height":27,"originX":0,"originY":25,"advance":10}, + "\"":{"x":268,"y":184,"width":13,"height":13,"originX":0,"originY":26,"advance":13}, + "#":{"x":429,"y":74,"width":20,"height":28,"originX":2,"originY":23,"advance":17}, + "$":{"x":346,"y":40,"width":18,"height":33,"originX":1,"originY":27,"advance":16}, + "%":{"x":357,"y":74,"width":28,"height":28,"originX":2,"originY":25,"advance":24}, + "&":{"x":9,"y":157,"width":31,"height":26,"originX":1,"originY":24,"advance":28}, + "'":{"x":281,"y":184,"width":8,"height":13,"originX":0,"originY":26,"advance":8}, + "(":{"x":145,"y":0,"width":13,"height":37,"originX":1,"originY":27,"advance":11}, + ")":{"x":158,"y":0,"width":13,"height":37,"originX":1,"originY":27,"advance":11}, + "*":{"x":218,"y":184,"width":15,"height":15,"originX":1,"originY":26,"advance":12}, + "+":{"x":191,"y":157,"width":23,"height":22,"originX":1,"originY":20,"advance":21}, + ",":{"x":233,"y":184,"width":11,"height":14,"originX":2,"originY":7,"advance":9}, + "-":{"x":387,"y":184,"width":13,"height":8,"originX":1,"originY":11,"advance":10}, + ".":{"x":362,"y":184,"width":9,"height":9,"originX":0,"originY":7,"advance":9}, + "/":{"x":516,"y":40,"width":18,"height":30,"originX":2,"originY":25,"advance":14}, + ":":{"x":43,"y":184,"width":9,"height":19,"originX":0,"originY":17,"advance":9}, + ";":{"x":180,"y":157,"width":11,"height":24,"originX":2,"originY":16,"advance":8}, + "<":{"x":229,"y":157,"width":22,"height":21,"originX":1,"originY":19,"advance":20}, + "=":{"x":289,"y":184,"width":23,"height":12,"originX":1,"originY":15,"advance":21}, + ">":{"x":251,"y":157,"width":22,"height":21,"originX":1,"originY":19,"advance":20}, + "?":{"x":530,"y":130,"width":14,"height":27,"originX":0,"originY":25,"advance":14}, + "@":{"x":328,"y":74,"width":29,"height":28,"originX":1,"originY":21,"advance":27}, + "A":{"x":565,"y":40,"width":30,"height":29,"originX":2,"originY":27,"advance":25}, + "B":{"x":533,"y":103,"width":25,"height":27,"originX":2,"originY":25,"advance":22}, + "C":{"x":425,"y":103,"width":27,"height":27,"originX":1,"originY":25,"advance":26}, + "D":{"x":193,"y":103,"width":30,"height":27,"originX":1,"originY":25,"advance":27}, + "E":{"x":48,"y":130,"width":23,"height":27,"originX":1,"originY":25,"advance":20}, + "F":{"x":180,"y":130,"width":21,"height":27,"originX":1,"originY":25,"advance":19}, + "G":{"x":369,"y":103,"width":28,"height":27,"originX":1,"originY":25,"advance":26}, + "H":{"x":69,"y":103,"width":31,"height":27,"originX":1,"originY":25,"advance":29}, + "I":{"x":514,"y":130,"width":16,"height":27,"originX":2,"originY":25,"advance":13}, + "J":{"x":349,"y":0,"width":19,"height":35,"originX":5,"originY":25,"advance":13}, + "K":{"x":253,"y":103,"width":29,"height":27,"originX":1,"originY":25,"advance":26}, + "L":{"x":558,"y":103,"width":24,"height":27,"originX":1,"originY":25,"advance":21}, + "M":{"x":550,"y":74,"width":36,"height":27,"originX":2,"originY":25,"advance":33}, + "N":{"x":36,"y":103,"width":33,"height":27,"originX":2,"originY":25,"advance":29}, + "O":{"x":282,"y":103,"width":29,"height":27,"originX":1,"originY":25,"advance":27}, + "P":{"x":0,"y":130,"width":24,"height":27,"originX":2,"originY":25,"advance":21}, + "Q":{"x":38,"y":0,"width":35,"height":37,"originX":1,"originY":25,"advance":27}, + "R":{"x":100,"y":103,"width":31,"height":27,"originX":2,"originY":25,"advance":26}, + "S":{"x":320,"y":130,"width":19,"height":27,"originX":1,"originY":25,"advance":17}, + "T":{"x":0,"y":74,"width":28,"height":29,"originX":1,"originY":27,"advance":24}, + "U":{"x":131,"y":103,"width":31,"height":27,"originX":2,"originY":25,"advance":27}, + "V":{"x":311,"y":103,"width":29,"height":27,"originX":2,"originY":25,"advance":25}, + "W":{"x":511,"y":74,"width":39,"height":27,"originX":2,"originY":25,"advance":34}, + "X":{"x":162,"y":103,"width":31,"height":27,"originX":3,"originY":25,"advance":26}, + "Y":{"x":397,"y":103,"width":28,"height":27,"originX":2,"originY":25,"advance":22}, + "Z":{"x":56,"y":74,"width":24,"height":29,"originX":1,"originY":27,"advance":22}, + "[":{"x":217,"y":0,"width":12,"height":36,"originX":-2,"originY":27,"advance":12}, + "\\":{"x":534,"y":40,"width":18,"height":30,"originX":2,"originY":25,"advance":14}, + "]":{"x":204,"y":0,"width":13,"height":36,"originX":2,"originY":27,"advance":12}, + "^":{"x":183,"y":184,"width":20,"height":16,"originX":1,"originY":24,"advance":18}, + "_":{"x":414,"y":184,"width":24,"height":6,"originX":2,"originY":-3,"advance":19}, + "`":{"x":312,"y":184,"width":10,"height":11,"originX":1,"originY":25,"advance":8}, + "a":{"x":521,"y":157,"width":18,"height":19,"originX":1,"originY":17,"advance":15}, + "b":{"x":126,"y":74,"width":22,"height":29,"originX":2,"originY":27,"advance":19}, + "c":{"x":539,"y":157,"width":17,"height":19,"originX":1,"originY":17,"advance":15}, + "d":{"x":472,"y":40,"width":22,"height":30,"originX":1,"originY":27,"advance":19}, + "e":{"x":556,"y":157,"width":17,"height":19,"originX":1,"originY":17,"advance":14}, + "f":{"x":234,"y":74,"width":20,"height":29,"originX":2,"originY":27,"advance":12}, + "g":{"x":192,"y":74,"width":21,"height":29,"originX":2,"originY":17,"advance":16}, + "h":{"x":449,"y":40,"width":23,"height":30,"originX":2,"originY":28,"advance":19}, + "i":{"x":558,"y":130,"width":13,"height":27,"originX":2,"originY":25,"advance":9}, + "j":{"x":171,"y":0,"width":12,"height":37,"originX":3,"originY":25,"advance":9}, + "k":{"x":80,"y":74,"width":23,"height":29,"originX":2,"originY":27,"advance":18}, + "l":{"x":552,"y":40,"width":13,"height":30,"originX":2,"originY":28,"advance":9}, + "m":{"x":273,"y":157,"width":32,"height":20,"originX":2,"originY":18,"advance":28}, + "n":{"x":305,"y":157,"width":23,"height":20,"originX":2,"originY":18,"advance":19}, + "o":{"x":481,"y":157,"width":20,"height":19,"originX":1,"originY":17,"advance":18}, + "p":{"x":494,"y":40,"width":22,"height":30,"originX":2,"originY":18,"advance":19}, + "q":{"x":148,"y":74,"width":22,"height":29,"originX":1,"originY":17,"advance":19}, + "r":{"x":391,"y":157,"width":16,"height":20,"originX":1,"originY":18,"advance":13}, + "s":{"x":15,"y":184,"width":14,"height":19,"originX":1,"originY":17,"advance":12}, + "t":{"x":214,"y":157,"width":15,"height":22,"originX":1,"originY":20,"advance":12}, + "u":{"x":328,"y":157,"width":22,"height":20,"originX":1,"originY":18,"advance":19}, + "v":{"x":350,"y":157,"width":21,"height":20,"originX":2,"originY":17,"advance":16}, + "w":{"x":407,"y":157,"width":30,"height":19,"originX":2,"originY":17,"advance":26}, + "x":{"x":460,"y":157,"width":21,"height":19,"originX":2,"originY":17,"advance":16}, + "y":{"x":213,"y":74,"width":21,"height":29,"originX":2,"originY":17,"advance":16}, + "z":{"x":573,"y":157,"width":17,"height":19,"originX":1,"originY":17,"advance":14}, + "{":{"x":368,"y":0,"width":16,"height":35,"originX":1,"originY":27,"advance":14}, + "|":{"x":22,"y":0,"width":8,"height":39,"originX":-1,"originY":27,"advance":10}, + "}":{"x":384,"y":0,"width":16,"height":35,"originX":2,"originY":27,"advance":14}, + "~":{"x":332,"y":184,"width":20,"height":9,"originX":1,"originY":16,"advance":19}, + "¡":{"x":502,"y":74,"width":9,"height":28,"originX":0,"originY":20,"advance":10}, + "¢":{"x":162,"y":157,"width":18,"height":25,"originX":1,"originY":22,"advance":15}, + "£":{"x":385,"y":74,"width":23,"height":28,"originX":3,"originY":25,"advance":19}, + "¤":{"x":371,"y":157,"width":20,"height":20,"originX":1,"originY":19,"advance":18}, + "¥":{"x":452,"y":103,"width":27,"height":27,"originX":2,"originY":25,"advance":22}, + "¦":{"x":30,"y":0,"width":8,"height":39,"originX":-1,"originY":27,"advance":10}, + "§":{"x":364,"y":40,"width":17,"height":33,"originX":1,"originY":25,"advance":15}, + "¨":{"x":371,"y":184,"width":16,"height":8,"originX":2,"originY":24,"advance":11}, + "©":{"x":479,"y":103,"width":27,"height":27,"originX":1,"originY":25,"advance":24}, + "ª":{"x":29,"y":184,"width":14,"height":19,"originX":1,"originY":22,"advance":12}, + "«":{"x":52,"y":184,"width":22,"height":18,"originX":0,"originY":17,"advance":21}, + "¬":{"x":137,"y":184,"width":23,"height":17,"originX":1,"originY":16,"advance":22}, + "­":{"x":438,"y":184,"width":3,"height":3,"originX":1,"originY":1,"advance":0}, + "®":{"x":506,"y":103,"width":27,"height":27,"originX":1,"originY":25,"advance":24}, + "¯":{"x":400,"y":184,"width":14,"height":7,"originX":1,"originY":23,"advance":11}, + "°":{"x":254,"y":184,"width":14,"height":13,"originX":1,"originY":25,"advance":11}, + "±":{"x":139,"y":157,"width":23,"height":25,"originX":1,"originY":25,"advance":21}, + "²":{"x":203,"y":184,"width":15,"height":16,"originX":2,"originY":30,"advance":11}, + "³":{"x":160,"y":184,"width":12,"height":17,"originX":1,"originY":31,"advance":10}, + "´":{"x":322,"y":184,"width":10,"height":11,"originX":1,"originY":25,"advance":8}, + "µ":{"x":170,"y":74,"width":22,"height":29,"originX":0,"originY":17,"advance":20}, + "¶":{"x":100,"y":0,"width":24,"height":37,"originX":1,"originY":25,"advance":22}, + "·":{"x":352,"y":184,"width":10,"height":9,"originX":1,"originY":12,"advance":8}, + "¸":{"x":244,"y":184,"width":10,"height":14,"originX":1,"originY":2,"advance":8}, + "¹":{"x":172,"y":184,"width":11,"height":17,"originX":1,"originY":31,"advance":9}, + "º":{"x":0,"y":184,"width":15,"height":19,"originX":2,"originY":22,"advance":11}, + "»":{"x":74,"y":184,"width":22,"height":18,"originX":0,"originY":17,"advance":21}, + "¼":{"x":397,"y":40,"width":26,"height":31,"originX":1,"originY":27,"advance":24}, + "½":{"x":28,"y":74,"width":28,"height":29,"originX":1,"originY":25,"advance":26}, + "¾":{"x":423,"y":40,"width":26,"height":31,"originX":1,"originY":27,"advance":23}, + "¿":{"x":488,"y":74,"width":14,"height":28,"originX":0,"originY":20,"advance":14}, + "À":{"x":464,"y":0,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Á":{"x":494,"y":0,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Â":{"x":524,"y":0,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Ã":{"x":554,"y":0,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Ä":{"x":264,"y":40,"width":30,"height":33,"originX":2,"originY":31,"advance":25}, + "Å":{"x":0,"y":40,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Æ":{"x":0,"y":103,"width":36,"height":27,"originX":3,"originY":25,"advance":32}, + "Ç":{"x":73,"y":0,"width":27,"height":37,"originX":1,"originY":25,"advance":26}, + "È":{"x":116,"y":40,"width":23,"height":34,"originX":1,"originY":32,"advance":20}, + "É":{"x":139,"y":40,"width":23,"height":34,"originX":1,"originY":32,"advance":20}, + "Ê":{"x":162,"y":40,"width":23,"height":34,"originX":1,"originY":32,"advance":20}, + "Ë":{"x":323,"y":40,"width":23,"height":33,"originX":1,"originY":31,"advance":20}, + "Ì":{"x":185,"y":40,"width":16,"height":34,"originX":2,"originY":32,"advance":13}, + "Í":{"x":201,"y":40,"width":16,"height":34,"originX":2,"originY":32,"advance":13}, + "Î":{"x":217,"y":40,"width":16,"height":34,"originX":2,"originY":32,"advance":13}, + "Ï":{"x":381,"y":40,"width":16,"height":33,"originX":2,"originY":31,"advance":13}, + "Ð":{"x":223,"y":103,"width":30,"height":27,"originX":1,"originY":25,"advance":27}, + "Ñ":{"x":400,"y":0,"width":33,"height":34,"originX":2,"originY":32,"advance":29}, + "Ò":{"x":291,"y":0,"width":29,"height":35,"originX":1,"originY":33,"advance":27}, + "Ó":{"x":320,"y":0,"width":29,"height":35,"originX":1,"originY":33,"advance":27}, + "Ô":{"x":30,"y":40,"width":29,"height":34,"originX":1,"originY":32,"advance":27}, + "Õ":{"x":59,"y":40,"width":29,"height":34,"originX":1,"originY":32,"advance":27}, + "Ö":{"x":294,"y":40,"width":29,"height":33,"originX":1,"originY":31,"advance":27}, + "×":{"x":118,"y":184,"width":19,"height":18,"originX":-1,"originY":18,"advance":21}, + "Ø":{"x":340,"y":103,"width":29,"height":27,"originX":1,"originY":25,"advance":28}, + "Ù":{"x":229,"y":0,"width":31,"height":35,"originX":2,"originY":33,"advance":27}, + "Ú":{"x":260,"y":0,"width":31,"height":35,"originX":2,"originY":33,"advance":27}, + "Û":{"x":433,"y":0,"width":31,"height":34,"originX":2,"originY":32,"advance":27}, + "Ü":{"x":233,"y":40,"width":31,"height":33,"originX":2,"originY":31,"advance":27}, + "Ý":{"x":88,"y":40,"width":28,"height":34,"originX":2,"originY":32,"advance":22}, + "Þ":{"x":24,"y":130,"width":24,"height":27,"originX":2,"originY":25,"advance":21}, + "ß":{"x":103,"y":74,"width":23,"height":29,"originX":2,"originY":27,"advance":19}, + "à":{"x":339,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "á":{"x":357,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "â":{"x":375,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "ã":{"x":393,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "ä":{"x":105,"y":157,"width":18,"height":26,"originX":1,"originY":24,"advance":15}, + "å":{"x":411,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "æ":{"x":437,"y":157,"width":23,"height":19,"originX":1,"originY":17,"advance":21}, + "ç":{"x":311,"y":74,"width":17,"height":29,"originX":1,"originY":17,"advance":15}, + "è":{"x":446,"y":130,"width":17,"height":27,"originX":1,"originY":25,"advance":14}, + "é":{"x":463,"y":130,"width":17,"height":27,"originX":1,"originY":25,"advance":14}, + "ê":{"x":480,"y":130,"width":17,"height":27,"originX":1,"originY":25,"advance":14}, + "ë":{"x":497,"y":130,"width":17,"height":27,"originX":1,"originY":25,"advance":14}, + "ì":{"x":571,"y":130,"width":13,"height":27,"originX":2,"originY":25,"advance":9}, + "í":{"x":544,"y":130,"width":14,"height":27,"originX":2,"originY":25,"advance":9}, + "î":{"x":584,"y":130,"width":13,"height":27,"originX":2,"originY":25,"advance":9}, + "ï":{"x":123,"y":157,"width":16,"height":26,"originX":3,"originY":24,"advance":9}, + "ð":{"x":254,"y":74,"width":20,"height":29,"originX":1,"originY":27,"advance":18}, + "ñ":{"x":40,"y":157,"width":23,"height":26,"originX":2,"originY":24,"advance":19}, + "ò":{"x":221,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "ó":{"x":241,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "ô":{"x":261,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "õ":{"x":281,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "ö":{"x":85,"y":157,"width":20,"height":26,"originX":1,"originY":24,"advance":18}, + "÷":{"x":96,"y":184,"width":22,"height":18,"originX":0,"originY":18,"advance":21}, + "ø":{"x":501,"y":157,"width":20,"height":19,"originX":1,"originY":17,"advance":18}, + "ù":{"x":93,"y":130,"width":22,"height":27,"originX":1,"originY":25,"advance":19}, + "ú":{"x":115,"y":130,"width":22,"height":27,"originX":1,"originY":25,"advance":19}, + "û":{"x":137,"y":130,"width":22,"height":27,"originX":1,"originY":25,"advance":19}, + "ü":{"x":63,"y":157,"width":22,"height":26,"originX":1,"originY":24,"advance":19}, + "ý":{"x":124,"y":0,"width":21,"height":37,"originX":2,"originY":25,"advance":16}, + "þ":{"x":0,"y":0,"width":22,"height":40,"originX":2,"originY":28,"advance":19}, + "ÿ":{"x":183,"y":0,"width":21,"height":36,"originX":2,"originY":24,"advance":16} + } +} diff --git a/graphics/dsmapfont.license b/graphics/dsmapfont.license new file mode 100644 index 000000000..7436817b0 --- /dev/null +++ b/graphics/dsmapfont.license @@ -0,0 +1,93 @@ +Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/graphics/dsmapfont.png b/graphics/dsmapfont.png new file mode 100644 index 000000000..cd31de023 Binary files /dev/null and b/graphics/dsmapfont.png differ diff --git a/graphics/dsmapfont.txt b/graphics/dsmapfont.txt new file mode 100644 index 000000000..345dc361f --- /dev/null +++ b/graphics/dsmapfont.txt @@ -0,0 +1,257 @@ +36 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 7 +0 157 9 27 0 25 10 +268 184 13 13 0 26 13 +429 74 20 28 2 23 17 +346 40 18 33 1 27 16 +357 74 28 28 2 25 24 +9 157 31 26 1 24 28 +281 184 8 13 0 26 8 +145 0 13 37 1 27 11 +158 0 13 37 1 27 11 +218 184 15 15 1 26 12 +191 157 23 22 1 20 21 +233 184 11 14 2 7 9 +387 184 13 8 1 11 10 +362 184 9 9 0 7 9 +516 40 18 30 2 25 14 +201 130 20 27 1 25 18 +429 130 17 27 -1 25 18 +159 130 21 27 1 25 18 +274 74 19 29 0 25 18 +71 130 22 27 2 25 18 +293 74 18 29 0 25 18 +469 74 19 28 0 26 18 +408 74 21 28 1 25 18 +301 130 19 27 0 25 18 +449 74 20 28 0 25 18 +43 184 9 19 0 17 9 +180 157 11 24 2 16 8 +229 157 22 21 1 19 20 +289 184 23 12 1 15 21 +251 157 22 21 1 19 20 +530 130 14 27 0 25 14 +328 74 29 28 1 21 27 +565 40 30 29 2 27 25 +533 103 25 27 2 25 22 +425 103 27 27 1 25 26 +193 103 30 27 1 25 27 +48 130 23 27 1 25 20 +180 130 21 27 1 25 19 +369 103 28 27 1 25 26 +69 103 31 27 1 25 29 +514 130 16 27 2 25 13 +349 0 19 35 5 25 13 +253 103 29 27 1 25 26 +558 103 24 27 1 25 21 +550 74 36 27 2 25 33 +36 103 33 27 2 25 29 +282 103 29 27 1 25 27 +0 130 24 27 2 25 21 +38 0 35 37 1 25 27 +100 103 31 27 2 25 26 +320 130 19 27 1 25 17 +0 74 28 29 1 27 24 +131 103 31 27 2 25 27 +311 103 29 27 2 25 25 +511 74 39 27 2 25 34 +162 103 31 27 3 25 26 +397 103 28 27 2 25 22 +56 74 24 29 1 27 22 +217 0 12 36 -2 27 12 +534 40 18 30 2 25 14 +204 0 13 36 2 27 12 +183 184 20 16 1 24 18 +414 184 24 6 2 -3 19 +312 184 10 11 1 25 8 +521 157 18 19 1 17 15 +126 74 22 29 2 27 19 +539 157 17 19 1 17 15 +472 40 22 30 1 27 19 +556 157 17 19 1 17 14 +234 74 20 29 2 27 12 +192 74 21 29 2 17 16 +449 40 23 30 2 28 19 +558 130 13 27 2 25 9 +171 0 12 37 3 25 9 +80 74 23 29 2 27 18 +552 40 13 30 2 28 9 +273 157 32 20 2 18 28 +305 157 23 20 2 18 19 +481 157 20 19 1 17 18 +494 40 22 30 2 18 19 +148 74 22 29 1 17 19 +391 157 16 20 1 18 13 +15 184 14 19 1 17 12 +214 157 15 22 1 20 12 +328 157 22 20 1 18 19 +350 157 21 20 2 17 16 +407 157 30 19 2 17 26 +460 157 21 19 2 17 16 +213 74 21 29 2 17 16 +573 157 17 19 1 17 14 +368 0 16 35 1 27 14 +22 0 8 39 -1 27 10 +384 0 16 35 2 27 14 +332 184 20 9 1 16 19 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +502 74 9 28 0 20 10 +162 157 18 25 1 22 15 +385 74 23 28 3 25 19 +371 157 20 20 1 19 18 +452 103 27 27 2 25 22 +30 0 8 39 -1 27 10 +364 40 17 33 1 25 15 +371 184 16 8 2 24 11 +479 103 27 27 1 25 24 +29 184 14 19 1 22 12 +52 184 22 18 0 17 21 +137 184 23 17 1 16 22 +438 184 3 3 1 1 0 +506 103 27 27 1 25 24 +400 184 14 7 1 23 11 +254 184 14 13 1 25 11 +139 157 23 25 1 25 21 +203 184 15 16 2 30 11 +160 184 12 17 1 31 10 +322 184 10 11 1 25 8 +170 74 22 29 0 17 20 +100 0 24 37 1 25 22 +352 184 10 9 1 12 8 +244 184 10 14 1 2 8 +172 184 11 17 1 31 9 +0 184 15 19 2 22 11 +74 184 22 18 0 17 21 +397 40 26 31 1 27 24 +28 74 28 29 1 25 26 +423 40 26 31 1 27 23 +488 74 14 28 0 20 14 +464 0 30 34 2 32 25 +494 0 30 34 2 32 25 +524 0 30 34 2 32 25 +554 0 30 34 2 32 25 +264 40 30 33 2 31 25 +0 40 30 34 2 32 25 +0 103 36 27 3 25 32 +73 0 27 37 1 25 26 +116 40 23 34 1 32 20 +139 40 23 34 1 32 20 +162 40 23 34 1 32 20 +323 40 23 33 1 31 20 +185 40 16 34 2 32 13 +201 40 16 34 2 32 13 +217 40 16 34 2 32 13 +381 40 16 33 2 31 13 +223 103 30 27 1 25 27 +400 0 33 34 2 32 29 +291 0 29 35 1 33 27 +320 0 29 35 1 33 27 +30 40 29 34 1 32 27 +59 40 29 34 1 32 27 +294 40 29 33 1 31 27 +118 184 19 18 -1 18 21 +340 103 29 27 1 25 28 +229 0 31 35 2 33 27 +260 0 31 35 2 33 27 +433 0 31 34 2 32 27 +233 40 31 33 2 31 27 +88 40 28 34 2 32 22 +24 130 24 27 2 25 21 +103 74 23 29 2 27 19 +339 130 18 27 1 25 15 +357 130 18 27 1 25 15 +375 130 18 27 1 25 15 +393 130 18 27 1 25 15 +105 157 18 26 1 24 15 +411 130 18 27 1 25 15 +437 157 23 19 1 17 21 +311 74 17 29 1 17 15 +446 130 17 27 1 25 14 +463 130 17 27 1 25 14 +480 130 17 27 1 25 14 +497 130 17 27 1 25 14 +571 130 13 27 2 25 9 +544 130 14 27 2 25 9 +584 130 13 27 2 25 9 +123 157 16 26 3 24 9 +254 74 20 29 1 27 18 +40 157 23 26 2 24 19 +221 130 20 27 1 25 18 +241 130 20 27 1 25 18 +261 130 20 27 1 25 18 +281 130 20 27 1 25 18 +85 157 20 26 1 24 18 +96 184 22 18 0 18 21 +501 157 20 19 1 17 18 +93 130 22 27 1 25 19 +115 130 22 27 1 25 19 +137 130 22 27 1 25 19 +63 157 22 26 1 24 19 +124 0 21 37 2 25 16 +0 0 22 40 2 28 19 +183 0 21 36 2 24 16 diff --git a/graphics/dsmapfont_sub.json b/graphics/dsmapfont_sub.json new file mode 100644 index 000000000..63a8100aa --- /dev/null +++ b/graphics/dsmapfont_sub.json @@ -0,0 +1,199 @@ +{ + "name": "EB Garamond Medium", + "size": 12, + "bold": false, + "italic": false, + "width": 245, + "height": 100, + "characters": { + "0":{"x":65,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "1":{"x":60,"y":68,"width":9,"height":12,"originX":1,"originY":10,"advance":6}, + "2":{"x":75,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "3":{"x":85,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "4":{"x":95,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "5":{"x":69,"y":68,"width":9,"height":12,"originX":1,"originY":10,"advance":6}, + "6":{"x":105,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "7":{"x":115,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "8":{"x":125,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "9":{"x":135,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "!":{"x":175,"y":68,"width":7,"height":12,"originX":2,"originY":10,"advance":3}, + "\"":{"x":133,"y":91,"width":8,"height":7,"originX":2,"originY":10,"advance":4}, + "#":{"x":55,"y":56,"width":10,"height":12,"originX":2,"originY":9,"advance":6}, + "$":{"x":43,"y":30,"width":9,"height":13,"originX":2,"originY":10,"advance":5}, + "%":{"x":21,"y":30,"width":12,"height":13,"originX":2,"originY":10,"advance":8}, + "&":{"x":166,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "'":{"x":162,"y":91,"width":6,"height":7,"originX":2,"originY":10,"advance":3}, + "(":{"x":77,"y":0,"width":8,"height":15,"originX":2,"originY":10,"advance":4}, + ")":{"x":85,"y":0,"width":8,"height":15,"originX":2,"originY":10,"advance":4}, + "*":{"x":91,"y":91,"width":8,"height":8,"originX":2,"originY":10,"advance":4}, + "+":{"x":32,"y":80,"width":11,"height":10,"originX":2,"originY":8,"advance":7}, + ",":{"x":141,"y":91,"width":7,"height":7,"originX":2,"originY":3,"advance":3}, + "-":{"x":218,"y":91,"width":7,"height":5,"originX":2,"originY":5,"advance":3}, + ".":{"x":186,"y":91,"width":7,"height":6,"originX":2,"originY":4,"advance":3}, + "/":{"x":52,"y":30,"width":9,"height":13,"originX":2,"originY":10,"advance":5}, + ":":{"x":60,"y":91,"width":7,"height":9,"originX":2,"originY":7,"advance":3}, + ";":{"x":18,"y":80,"width":7,"height":11,"originX":2,"originY":7,"advance":3}, + "<":{"x":54,"y":80,"width":10,"height":10,"originX":2,"originY":8,"advance":7}, + "=":{"x":122,"y":91,"width":11,"height":7,"originX":2,"originY":6,"advance":7}, + ">":{"x":64,"y":80,"width":10,"height":10,"originX":2,"originY":8,"advance":7}, + "?":{"x":159,"y":68,"width":8,"height":12,"originX":2,"originY":10,"advance":5}, + "@":{"x":179,"y":30,"width":13,"height":12,"originX":2,"originY":8,"advance":9}, + "A":{"x":8,"y":30,"width":13,"height":13,"originX":2,"originY":11,"advance":8}, + "B":{"x":151,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "C":{"x":91,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":9}, + "D":{"x":192,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "E":{"x":162,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "F":{"x":145,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "G":{"x":205,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "H":{"x":138,"y":30,"width":14,"height":12,"originX":2,"originY":10,"advance":10}, + "I":{"x":167,"y":68,"width":8,"height":12,"originX":2,"originY":10,"advance":4}, + "J":{"x":197,"y":16,"width":9,"height":14,"originX":3,"originY":10,"advance":4}, + "K":{"x":218,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "L":{"x":173,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "M":{"x":108,"y":30,"width":15,"height":12,"originX":2,"originY":10,"advance":11}, + "N":{"x":152,"y":30,"width":14,"height":12,"originX":2,"originY":10,"advance":10}, + "O":{"x":231,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "P":{"x":184,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "Q":{"x":10,"y":0,"width":15,"height":15,"originX":2,"originY":10,"advance":9}, + "R":{"x":0,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "S":{"x":155,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "T":{"x":13,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":8}, + "U":{"x":26,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "V":{"x":39,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":8}, + "W":{"x":92,"y":30,"width":16,"height":12,"originX":2,"originY":10,"advance":11}, + "X":{"x":52,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "Y":{"x":103,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":7}, + "Z":{"x":195,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "[":{"x":109,"y":0,"width":7,"height":15,"originX":1,"originY":10,"advance":4}, + "\\":{"x":61,"y":30,"width":9,"height":13,"originX":2,"originY":10,"advance":5}, + "]":{"x":116,"y":0,"width":7,"height":15,"originX":2,"originY":10,"advance":4}, + "^":{"x":81,"y":91,"width":10,"height":8,"originX":2,"originY":9,"advance":6}, + "_":{"x":199,"y":91,"width":11,"height":5,"originX":2,"originY":1,"advance":6}, + "`":{"x":148,"y":91,"width":7,"height":7,"originX":2,"originY":10,"advance":3}, + "a":{"x":225,"y":80,"width":9,"height":9,"originX":2,"originY":7,"advance":5}, + "b":{"x":165,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "c":{"x":234,"y":80,"width":9,"height":9,"originX":2,"originY":7,"advance":5}, + "d":{"x":206,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":6}, + "e":{"x":0,"y":91,"width":9,"height":9,"originX":2,"originY":7,"advance":5}, + "f":{"x":175,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":4}, + "g":{"x":185,"y":56,"width":10,"height":12,"originX":2,"originY":7,"advance":6}, + "h":{"x":33,"y":30,"width":10,"height":13,"originX":2,"originY":11,"advance":6}, + "i":{"x":25,"y":80,"width":7,"height":11,"originX":2,"originY":9,"advance":3}, + "j":{"x":93,"y":0,"width":8,"height":15,"originX":3,"originY":10,"advance":3}, + "k":{"x":195,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "l":{"x":78,"y":30,"width":7,"height":13,"originX":2,"originY":11,"advance":3}, + "m":{"x":92,"y":80,"width":14,"height":9,"originX":2,"originY":7,"advance":9}, + "n":{"x":119,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "o":{"x":185,"y":80,"width":10,"height":9,"originX":2,"originY":7,"advance":6}, + "p":{"x":205,"y":56,"width":10,"height":12,"originX":2,"originY":7,"advance":6}, + "q":{"x":217,"y":44,"width":11,"height":12,"originX":2,"originY":7,"advance":6}, + "r":{"x":9,"y":91,"width":9,"height":9,"originX":2,"originY":7,"advance":4}, + "s":{"x":36,"y":91,"width":8,"height":9,"originX":2,"originY":7,"advance":4}, + "t":{"x":84,"y":80,"width":8,"height":10,"originX":2,"originY":8,"advance":4}, + "u":{"x":43,"y":80,"width":11,"height":10,"originX":2,"originY":8,"advance":6}, + "v":{"x":195,"y":80,"width":10,"height":9,"originX":2,"originY":7,"advance":5}, + "w":{"x":106,"y":80,"width":13,"height":9,"originX":2,"originY":7,"advance":9}, + "x":{"x":205,"y":80,"width":10,"height":9,"originX":2,"originY":7,"advance":5}, + "y":{"x":215,"y":56,"width":10,"height":12,"originX":2,"originY":7,"advance":5}, + "z":{"x":18,"y":91,"width":9,"height":9,"originX":2,"originY":7,"advance":5}, + "{":{"x":68,"y":0,"width":9,"height":15,"originX":2,"originY":10,"advance":5}, + "|":{"x":123,"y":0,"width":5,"height":15,"originX":1,"originY":10,"advance":3}, + "}":{"x":101,"y":0,"width":8,"height":15,"originX":2,"originY":10,"advance":5}, + "~":{"x":168,"y":91,"width":10,"height":6,"originX":2,"originY":7,"advance":6}, + "¡":{"x":85,"y":30,"width":7,"height":13,"originX":2,"originY":8,"advance":3}, + "¢":{"x":224,"y":68,"width":9,"height":11,"originX":2,"originY":9,"advance":5}, + "£":{"x":225,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "¤":{"x":74,"y":80,"width":10,"height":10,"originX":2,"originY":9,"advance":6}, + "¥":{"x":115,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":7}, + "¦":{"x":128,"y":0,"width":5,"height":15,"originX":1,"originY":10,"advance":3}, + "§":{"x":206,"y":16,"width":9,"height":14,"originX":2,"originY":10,"advance":5}, + "¨":{"x":178,"y":91,"width":8,"height":6,"originX":2,"originY":9,"advance":4}, + "©":{"x":127,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":8}, + "ª":{"x":44,"y":91,"width":8,"height":9,"originX":2,"originY":9,"advance":4}, + "«":{"x":130,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "¬":{"x":141,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "­":{"x":225,"y":91,"width":3,"height":3,"originX":1,"originY":1,"advance":0}, + "®":{"x":139,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":8}, + "¯":{"x":210,"y":91,"width":8,"height":5,"originX":2,"originY":9,"advance":4}, + "°":{"x":99,"y":91,"width":8,"height":8,"originX":2,"originY":10,"advance":4}, + "±":{"x":228,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "²":{"x":107,"y":91,"width":8,"height":8,"originX":2,"originY":12,"advance":4}, + "³":{"x":67,"y":91,"width":7,"height":9,"originX":2,"originY":13,"advance":3}, + "´":{"x":155,"y":91,"width":7,"height":7,"originX":2,"originY":10,"advance":3}, + "µ":{"x":235,"y":56,"width":10,"height":12,"originX":1,"originY":7,"advance":7}, + "¶":{"x":37,"y":0,"width":11,"height":15,"originX":2,"originY":10,"advance":7}, + "·":{"x":193,"y":91,"width":6,"height":6,"originX":2,"originY":6,"advance":3}, + "¸":{"x":115,"y":91,"width":7,"height":8,"originX":2,"originY":3,"advance":3}, + "¹":{"x":74,"y":91,"width":7,"height":9,"originX":2,"originY":13,"advance":3}, + "º":{"x":52,"y":91,"width":8,"height":9,"originX":2,"originY":9,"advance":4}, + "»":{"x":152,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "¼":{"x":117,"y":16,"width":12,"height":14,"originX":2,"originY":11,"advance":8}, + "½":{"x":147,"y":0,"width":13,"height":14,"originX":2,"originY":11,"advance":9}, + "¾":{"x":129,"y":16,"width":12,"height":14,"originX":2,"originY":11,"advance":8}, + "¿":{"x":70,"y":30,"width":8,"height":13,"originX":2,"originY":8,"advance":5}, + "À":{"x":160,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Á":{"x":173,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Â":{"x":186,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Ã":{"x":199,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Ä":{"x":212,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Å":{"x":225,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Æ":{"x":123,"y":30,"width":15,"height":12,"originX":2,"originY":10,"advance":11}, + "Ç":{"x":25,"y":0,"width":12,"height":15,"originX":2,"originY":10,"advance":9}, + "È":{"x":153,"y":16,"width":11,"height":14,"originX":2,"originY":12,"advance":7}, + "É":{"x":164,"y":16,"width":11,"height":14,"originX":2,"originY":12,"advance":7}, + "Ê":{"x":175,"y":16,"width":11,"height":14,"originX":2,"originY":12,"advance":7}, + "Ë":{"x":186,"y":16,"width":11,"height":14,"originX":2,"originY":12,"advance":7}, + "Ì":{"x":215,"y":16,"width":8,"height":14,"originX":2,"originY":12,"advance":4}, + "Í":{"x":223,"y":16,"width":8,"height":14,"originX":2,"originY":12,"advance":4}, + "Î":{"x":231,"y":16,"width":8,"height":14,"originX":2,"originY":12,"advance":4}, + "Ï":{"x":0,"y":30,"width":8,"height":14,"originX":2,"originY":12,"advance":4}, + "Ð":{"x":65,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "Ñ":{"x":133,"y":0,"width":14,"height":14,"originX":2,"originY":12,"advance":10}, + "Ò":{"x":0,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ó":{"x":13,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ô":{"x":26,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Õ":{"x":39,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ö":{"x":52,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "×":{"x":27,"y":91,"width":9,"height":9,"originX":1,"originY":8,"advance":7}, + "Ø":{"x":78,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "Ù":{"x":65,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ú":{"x":78,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Û":{"x":91,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ü":{"x":104,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ý":{"x":141,"y":16,"width":12,"height":14,"originX":2,"originY":12,"advance":7}, + "Þ":{"x":0,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "ß":{"x":0,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "à":{"x":78,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "á":{"x":87,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "â":{"x":96,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "ã":{"x":105,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "ä":{"x":233,"y":68,"width":9,"height":11,"originX":2,"originY":9,"advance":5}, + "å":{"x":114,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "æ":{"x":163,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "ç":{"x":123,"y":68,"width":9,"height":12,"originX":2,"originY":7,"advance":5}, + "è":{"x":132,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "é":{"x":141,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "ê":{"x":150,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "ë":{"x":0,"y":80,"width":9,"height":11,"originX":2,"originY":9,"advance":5}, + "ì":{"x":182,"y":68,"width":7,"height":12,"originX":2,"originY":10,"advance":3}, + "í":{"x":189,"y":68,"width":7,"height":12,"originX":2,"originY":10,"advance":3}, + "î":{"x":196,"y":68,"width":7,"height":12,"originX":2,"originY":10,"advance":3}, + "ï":{"x":9,"y":80,"width":9,"height":11,"originX":3,"originY":9,"advance":3}, + "ð":{"x":10,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "ñ":{"x":11,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "ò":{"x":20,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "ó":{"x":30,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "ô":{"x":40,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "õ":{"x":50,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "ö":{"x":214,"y":68,"width":10,"height":11,"originX":2,"originY":9,"advance":6}, + "÷":{"x":174,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "ø":{"x":215,"y":80,"width":10,"height":9,"originX":2,"originY":7,"advance":6}, + "ù":{"x":22,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":6}, + "ú":{"x":33,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":6}, + "û":{"x":44,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":6}, + "ü":{"x":203,"y":68,"width":11,"height":11,"originX":2,"originY":9,"advance":6}, + "ý":{"x":48,"y":0,"width":10,"height":15,"originX":2,"originY":10,"advance":5}, + "þ":{"x":0,"y":0,"width":10,"height":16,"originX":2,"originY":11,"advance":6}, + "ÿ":{"x":58,"y":0,"width":10,"height":15,"originX":2,"originY":10,"advance":5} + } +} diff --git a/graphics/dsmapfont_sub.png b/graphics/dsmapfont_sub.png new file mode 100644 index 000000000..ae145da15 Binary files /dev/null and b/graphics/dsmapfont_sub.png differ diff --git a/graphics/dsmapfont_sub.txt b/graphics/dsmapfont_sub.txt new file mode 100644 index 000000000..b6954092c --- /dev/null +++ b/graphics/dsmapfont_sub.txt @@ -0,0 +1,257 @@ +12 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 3 +175 68 7 12 2 10 3 +133 91 8 7 2 10 4 +55 56 10 12 2 9 6 +43 30 9 13 2 10 5 +21 30 12 13 2 10 8 +166 30 13 12 2 10 9 +162 91 6 7 2 10 3 +77 0 8 15 2 10 4 +85 0 8 15 2 10 4 +91 91 8 8 2 10 4 +32 80 11 10 2 8 7 +141 91 7 7 2 3 3 +218 91 7 5 2 5 3 +186 91 7 6 2 4 3 +52 30 9 13 2 10 5 +65 56 10 12 2 10 6 +60 68 9 12 1 10 6 +75 56 10 12 2 10 6 +85 56 10 12 2 10 6 +95 56 10 12 2 10 6 +69 68 9 12 1 10 6 +105 56 10 12 2 10 6 +115 56 10 12 2 10 6 +125 56 10 12 2 10 6 +135 56 10 12 2 10 6 +60 91 7 9 2 7 3 +18 80 7 11 2 7 3 +54 80 10 10 2 8 7 +122 91 11 7 2 6 7 +64 80 10 10 2 8 7 +159 68 8 12 2 10 5 +179 30 13 12 2 8 9 +8 30 13 13 2 11 8 +151 44 11 12 2 10 7 +91 44 12 12 2 10 9 +192 30 13 12 2 10 9 +162 44 11 12 2 10 7 +145 56 10 12 2 10 6 +205 30 13 12 2 10 9 +138 30 14 12 2 10 10 +167 68 8 12 2 10 4 +197 16 9 14 3 10 4 +218 30 13 12 2 10 9 +173 44 11 12 2 10 7 +108 30 15 12 2 10 11 +152 30 14 12 2 10 10 +231 30 13 12 2 10 9 +184 44 11 12 2 10 7 +10 0 15 15 2 10 9 +0 44 13 12 2 10 9 +155 56 10 12 2 10 6 +13 44 13 12 2 10 8 +26 44 13 12 2 10 9 +39 44 13 12 2 10 8 +92 30 16 12 2 10 11 +52 44 13 12 2 10 9 +103 44 12 12 2 10 7 +195 44 11 12 2 10 7 +109 0 7 15 1 10 4 +61 30 9 13 2 10 5 +116 0 7 15 2 10 4 +81 91 10 8 2 9 6 +199 91 11 5 2 1 6 +148 91 7 7 2 10 3 +225 80 9 9 2 7 5 +165 56 10 12 2 10 6 +234 80 9 9 2 7 5 +206 44 11 12 2 10 6 +0 91 9 9 2 7 5 +175 56 10 12 2 10 4 +185 56 10 12 2 7 6 +33 30 10 13 2 11 6 +25 80 7 11 2 9 3 +93 0 8 15 3 10 3 +195 56 10 12 2 10 6 +78 30 7 13 2 11 3 +92 80 14 9 2 7 9 +119 80 11 9 2 7 7 +185 80 10 9 2 7 6 +205 56 10 12 2 7 6 +217 44 11 12 2 7 6 +9 91 9 9 2 7 4 +36 91 8 9 2 7 4 +84 80 8 10 2 8 4 +43 80 11 10 2 8 6 +195 80 10 9 2 7 5 +106 80 13 9 2 7 9 +205 80 10 9 2 7 5 +215 56 10 12 2 7 5 +18 91 9 9 2 7 5 +68 0 9 15 2 10 5 +123 0 5 15 1 10 3 +101 0 8 15 2 10 5 +168 91 10 6 2 7 6 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +85 30 7 13 2 8 3 +224 68 9 11 2 9 5 +225 56 10 12 2 10 6 +74 80 10 10 2 9 6 +115 44 12 12 2 10 7 +128 0 5 15 1 10 3 +206 16 9 14 2 10 5 +178 91 8 6 2 9 4 +127 44 12 12 2 10 8 +44 91 8 9 2 9 4 +130 80 11 9 2 7 7 +141 80 11 9 2 7 7 +225 91 3 3 1 1 0 +139 44 12 12 2 10 8 +210 91 8 5 2 9 4 +99 91 8 8 2 10 4 +228 44 11 12 2 10 7 +107 91 8 8 2 12 4 +67 91 7 9 2 13 3 +155 91 7 7 2 10 3 +235 56 10 12 1 7 7 +37 0 11 15 2 10 7 +193 91 6 6 2 6 3 +115 91 7 8 2 3 3 +74 91 7 9 2 13 3 +52 91 8 9 2 9 4 +152 80 11 9 2 7 7 +117 16 12 14 2 11 8 +147 0 13 14 2 11 9 +129 16 12 14 2 11 8 +70 30 8 13 2 8 5 +160 0 13 14 2 12 8 +173 0 13 14 2 12 8 +186 0 13 14 2 12 8 +199 0 13 14 2 12 8 +212 0 13 14 2 12 8 +225 0 13 14 2 12 8 +123 30 15 12 2 10 11 +25 0 12 15 2 10 9 +153 16 11 14 2 12 7 +164 16 11 14 2 12 7 +175 16 11 14 2 12 7 +186 16 11 14 2 12 7 +215 16 8 14 2 12 4 +223 16 8 14 2 12 4 +231 16 8 14 2 12 4 +0 30 8 14 2 12 4 +65 44 13 12 2 10 9 +133 0 14 14 2 12 10 +0 16 13 14 2 12 9 +13 16 13 14 2 12 9 +26 16 13 14 2 12 9 +39 16 13 14 2 12 9 +52 16 13 14 2 12 9 +27 91 9 9 1 8 7 +78 44 13 12 2 10 9 +65 16 13 14 2 12 9 +78 16 13 14 2 12 9 +91 16 13 14 2 12 9 +104 16 13 14 2 12 9 +141 16 12 14 2 12 7 +0 56 11 12 2 10 7 +0 68 10 12 2 10 6 +78 68 9 12 2 10 5 +87 68 9 12 2 10 5 +96 68 9 12 2 10 5 +105 68 9 12 2 10 5 +233 68 9 11 2 9 5 +114 68 9 12 2 10 5 +163 80 11 9 2 7 7 +123 68 9 12 2 7 5 +132 68 9 12 2 10 5 +141 68 9 12 2 10 5 +150 68 9 12 2 10 5 +0 80 9 11 2 9 5 +182 68 7 12 2 10 3 +189 68 7 12 2 10 3 +196 68 7 12 2 10 3 +9 80 9 11 3 9 3 +10 68 10 12 2 10 6 +11 56 11 12 2 10 7 +20 68 10 12 2 10 6 +30 68 10 12 2 10 6 +40 68 10 12 2 10 6 +50 68 10 12 2 10 6 +214 68 10 11 2 9 6 +174 80 11 9 2 7 7 +215 80 10 9 2 7 6 +22 56 11 12 2 10 6 +33 56 11 12 2 10 6 +44 56 11 12 2 10 6 +203 68 11 11 2 9 6 +48 0 10 15 2 10 5 +0 0 10 16 2 11 6 +58 0 10 15 2 10 5 diff --git a/graphics/swwmback.png b/graphics/swwmback.png index e173f3f8d..6b53dcce0 100644 Binary files a/graphics/swwmback.png and b/graphics/swwmback.png differ diff --git a/graphics/swwmcurs.png b/graphics/swwmcurs.png index d551a3de8..501375c4d 100644 Binary files a/graphics/swwmcurs.png and b/graphics/swwmcurs.png differ diff --git a/graphics/xhairb99.png b/graphics/xhairb99.png deleted file mode 100644 index 4d7beb806..000000000 Binary files a/graphics/xhairb99.png and /dev/null differ diff --git a/graphics/xhairs99.png b/graphics/xhairs99.png deleted file mode 100644 index 7b58b30ab..000000000 Binary files a/graphics/xhairs99.png and /dev/null differ diff --git a/id1.lst b/id1.lst new file mode 100644 index 000000000..30bb42b24 --- /dev/null +++ b/id1.lst @@ -0,0 +1,17 @@ +4F9E705F55E45C1047FABF8BDF2B2399 +5FB5010F988FFAE2679A9BDD57460473 +7CABD8B043B69996D9777F7070C8BCCE +7F00D2FAA5F0B10A6028BE2FC5530EC9 +8A2C0869EAA69FB7B441CD2B648978D0 +95B94864754AC50446A456A88DA3E052 +867B6AD67389A077CE3C9E3CC896F484 +1283C3288A2F51B7455D817C5B7FCFAD +1699E255B8C0DB86EBB00E5B3C44B4AA +A3F7A58FC08C369F1360741A99F1497C +B6447217725A2A709D6D021CDE15FE10 +BF34C34C5DFC8BB47228CC304F9A6748 +C745F8D0D8824A1910F9DC8B7AB16AA2 +E2D2886FD22DC4354939E6E51690C34B +F5AED83945C8BDE642E55E72FE0D92AA +F206766043C4D9BA2C36F76106F96279 +FCF009C63BBA5F8CEE71ED5EC0B02CDA diff --git a/keyconf.txt b/keyconf.txt index 7bff60f04..fde1c597f 100644 --- a/keyconf.txt +++ b/keyconf.txt @@ -1,39 +1,36 @@ addkeysection "$SWWM_KEYS" "SWWM_GZ" -alias "+walk" "netevent swwmsetwalk 1" -alias "-walk" "netevent swwmsetwalk 0" addmenukey "$SWWM_PRIMARYFIRE" "+attack" addmenukey "$SWWM_SECONDARYFIRE" "+altattack" addmenukey "$SWWM_RELOADFIRE" "+reload" addmenukey "$SWWM_ZOOMFIRE" "+zoom" -addmenukey "$SWWM_EXTRAFIRE" "+user4" addmenukey "$SWWM_MELEE" "+user1" -addmenukey "$SWWM_WALK" "+walk" -addmenukey "$SWWM_SPRINT" "+speed" -addmenukey "$SWWM_TOGGLESPRINT" "toggle cl_run" +addmenukey "$SWWM_EXTRAFIRE" "+user4" addmenukey "$SWWM_DASH" "+user2" +addmenukey "$SWWM_KBASE" "event swwmdemomenu" +defaultbind "mouse1" "+attack" +defaultbind "mouse2" "+altattack" +defaultbind "r" "+reload" +defaultbind "e" "+zoom" +defaultbind "f" "+user1" +defaultbind "g" "+user4" +defaultbind "alt" "+user2" +defaultbind "q" "event swwmdemomenu" +addkeysection "$SWWM_OPTKEYS" "SWWM_GZ_OPTIONAL" +alias "+walk" "netevent swwmsetwalk 1" +alias "-walk" "netevent swwmsetwalk 0" +addmenukey "$SWWM_WALK" "+walk" addmenukey "$SWWM_ITEMSENSE" "+user3" addmenukey "$SWWM_GESTURE1" "netevent swwmgesture 0" addmenukey "$SWWM_GESTURE2" "netevent swwmgesture 1" addmenukey "$SWWM_GESTURE3" "netevent swwmgesture 2" addmenukey "$SWWM_GESTURE4" "netevent swwmgesture 3" -addmenukey "$SWWM_KBASE" "event swwmdemomenu" addmenukey "$SWWM_MINIMAPIN" "event swwmzoomin" addmenukey "$SWWM_MINIMAPOUT" "event swwmzoomout" -defaultbind "mouse1" "+attack" -defaultbind "mouse2" "+altattack" -defaultbind "r" "+reload" -defaultbind "e" "+zoom" -defaultbind "g" "+user4" -defaultbind "f" "+user1" defaultbind "ctrl" "+walk" -defaultbind "shift" "+speed" -defaultbind "capslock" "toggle cl_run" -defaultbind "alt" "+user2" defaultbind "i" "+user3" defaultbind "h" "netevent swwmgesture 0" defaultbind "j" "netevent swwmgesture 1" defaultbind "k" "netevent swwmgesture 2" defaultbind "l" "netevent swwmgesture 3" -defaultbind "q" "event swwmdemomenu" defaultbind "kp+" "event swwmzoomin" defaultbind "kp-" "event swwmzoomout" diff --git a/language.damnums b/language.damnums new file mode 100644 index 000000000..4f124550d --- /dev/null +++ b/language.damnums @@ -0,0 +1,25 @@ +[default] +// for those who want to use ye olde damnums instead of the mod's own damage numbers +DAMNUM_TYPECOLOR_LOVE = "DamCream"; +DAMNUM_TYPECOLOR_PUSH = "DamLightBlue"; +DAMNUM_TYPECOLOR_AIRRIP = "DamLightBlue"; +DAMNUM_TYPECOLOR_EXPLODIUM = "DamOrange"; +DAMNUM_TYPECOLOR_SHOT = "DamGold"; +DAMNUM_TYPECOLOR_SALT = "DamCyan"; +DAMNUM_TYPECOLOR_CONCUSSION = "DamPurple"; +DAMNUM_TYPECOLOR_CRITICALCONCUSSION = "DamPurple"; +DAMNUM_TYPECOLOR_WALLBUST = "DamDarkRed"; +DAMNUM_TYPECOLOR_SHRAPNEL = "DamBrick"; +DAMNUM_TYPECOLOR_SYDON = "DamOrange"; +DAMNUM_TYPECOLOR_BIOSPARK = "DamYellow"; +DAMNUM_TYPECOLOR_KINYLUM = "DamCyan"; +DAMNUM_TYPECOLOR_NOKRON = "DamRed"; +DAMNUM_TYPECOLOR_NOKOROKINYLUM = "DamPurple"; +DAMNUM_TYPECOLOR_SNIPED = "DamGold"; +DAMNUM_TYPECOLOR_JET = "DamWhite"; +DAMNUM_TYPECOLOR_DYRATIN = "DamGreen"; +DAMNUM_TYPECOLOR_CANDY = "DamCream"; +DAMNUM_TYPECOLOR_MORTAL = "DamCyan"; +DAMNUM_TYPECOLOR_YNYKRON = "DamPurple"; +DAMNUM_TYPECOLOR_YNYKRONALT = "DamPurple"; +DAMNUM_TYPECOLOR_KABBADON = "DamGold"; diff --git a/language.def_base b/language.def_base index 07c2f86f6..dc576c0dd 100644 --- a/language.def_base +++ b/language.def_base @@ -1,8 +1,6 @@ [default] // tags, pickups T_DEMOLITIONIST = "Demolitionist"; -T_PUSHER = "Pusher"; -I_PUSHER = "\"Pusher\" Microfusion Rotary Hammer"; T_DEEPIMPACT = "Deep Impact"; I_DEEPIMPACT = "\"Deep Impact\" Airblaster"; T_EXPLODIUM = "Explodium Gun"; @@ -12,7 +10,7 @@ I_SPREADGUN = "\"Rhino Stopper\" Spreadgun"; T_WALLBUSTER = "Wallbuster"; I_WALLBUSTER = "\"Wallbuster\" Heavy Armor Breaching Shotgun"; T_EVISCERATOR = "Eviscerator"; -I_EVISCERATOR = "\"Eviscerator\" High Load Flechette Cannon"; +I_EVISCERATOR = "\"Eviscerator\" High Load Shrapnel Cannon"; T_HELLBLAZER = "Hellblazer"; I_HELLBLAZER = "\"Hellblazer\" Rocket Launcher"; T_SPARKSTER = "Biospark Carbine"; @@ -35,21 +33,11 @@ T_QUADRAVOL = "Quadravol"; I_QUADRAVOL = "\"Quadravol\" Fireball Launcher"; T_NEWSPARKSTER = "Sparkster Rifle"; I_NEWSPARKSTER = "Series x3 Sparkster Rifle"; -T_MORTALRIFLE = "Mortal Rifle"; T_RAYKHOM = "Ray-Khom"; +T_MORTALRIFLE = "Mortal Rifle"; T_RAFANKOS = "Rafan-Kos"; T_REDSHELL = "Shell"; T_REDSHELLS = "Shells"; -T_GREENSHELL = "Slug"; -T_GREENSHELLS = "Slugs"; -T_WHITESHELL = "Dragon's Breath Round"; -T_WHITESHELLS = "Dragon's Breath Rounds"; -T_BLUESHELL = "Kinylum Saltshot Round"; -T_BLUESHELLS = "Kinylum Saltshot Rounds"; -T_BLACKSHELL = "Corrosive Round"; -T_BLACKSHELLS = "Corrosive Rounds"; -T_PURPLESHELL = "Lead Ball Round"; -T_PURPLESHELLS = "Lead Ball Rounds"; T_GOLDSHELL = "Golden Shell"; T_GOLDSHELLS = "Golden Shells"; T_EVISHELL = "Eviscerator Shell"; @@ -59,29 +47,13 @@ I_EVISHELLCLIP3 = "Eviscerator Trio Clip"; I_EVISHELLPAK = "Eviscerator 6-Pack"; T_HELLMISSILE = "Hellblazer Missile"; T_HELLMISSILES = "Hellblazer Missiles"; -T_HELLMISSILE2 = "2 Hellblazer Missiles"; -T_HELLMISSILE3 = "3 Hellblazer Missiles"; T_HELLMISSILEMAG = "Hellblazer Missile Mag"; -T_HELLCLUSTER = "Hellblazer Crackshot"; -T_HELLCLUSTERS = "Hellblazer Crackshots"; -T_HELLCLUSTER2 = "2 Hellblazer Crackshots"; -T_HELLCLUSTERMAG = "Hellblazer Crackshot Mag"; -T_HELLBURNINATOR = "Hellblazer Ravager"; -T_HELLBURNINATORS = "Hellblazer Ravagers"; -T_HELLBURNINATORMAG = "Hellblazer Ravager Mag"; -T_HELLNUKE = "Hellblazer Warhead"; -T_HELLNUKES = "Hellblazer Warheads"; -T_HELLNUKEMAG = "Hellblazer Warhead Mag"; T_SPARKUNIT = "Biospark Unit"; T_SPARKUNITS = "Biospark Units"; T_XSBMAG = "1.150 XSB Magazine"; T_XSBMAGS = "1.150 XSB Magazines"; -T_FCBMAG = "1.150 FCB Magazine"; -T_FCBMAGS = "1.150 FCB Magazines"; T_XSBBULLET = "1.150 XSB Bullet"; T_XSBBULLETS = "1.150 XSB Bullets"; -T_FCBBULLET = "1.150 FCB Bullet"; -T_FCBBULLETS = "1.150 FCB Bullets"; T_CANDYMAG = "Candy Gun Magazine"; T_CANDYMAGS = "Candy Gun Magazines"; T_CANDYBULLET = "Candy Gun Bullet"; @@ -100,18 +72,16 @@ T_SPARKBCELL = "Kinylum Cell"; T_SPARKBCELLS = "Kinylum Cells"; T_SPARKRCELL = "Nokron Cell"; T_SPARKRCELLS = "Nokron Cells"; +T_RAYBOLT = "Ray-Khom Bolt"; +T_RAYBOLTS = "Ray-Khom Bolts"; +T_RAYAMMO = "Ray-Khom Magazine"; +T_RAYAMMOS = "Ray-Khom Magazines"; T_MRROUND = "Mortal Round"; T_MRROUNDS = "Mortal Rounds"; T_MRAMMO = "Mortal Magazine"; T_MRAMMOS = "Mortal Magazines"; T_MRGRENADE = "Mortal Grenade"; T_MRGRENADES = "Mortal Grenades"; -T_RAYBOLT = "Ray-Khom Bolt"; -T_RAYBOLTS = "Ray-Khom Bolts"; -T_RAYAMMO = "Ray-Khom Magazine"; -T_RAYAMMOS = "Ray-Khom Magazines"; -T_RAYBATTERY = "Ray-Khom Battery"; -T_RAYBATTERYS = "Ray-Khom Batteries"; T_ULTIMATEPOD = "Rafan-Kos Pod"; T_ULTIMATEPODS = "Rafan-Kos Pods"; T_ULTIMATEAMMO = "Rafan-Kos Magazine"; @@ -132,7 +102,7 @@ T_LAMP = "Lämp"; I_LAMP = "Companion Lamp"; T_MOTH = "Moth"; T_WMOTH = "White Moth"; -T_MASHIRO = "White Lady"; +T_ANDIRA = "White Lady"; T_NUGGETH = "Health Nugget"; T_NUGGETA = "Armor Nugget"; T_OMNISIGHT = "Omnisight"; @@ -146,6 +116,10 @@ T_MYKRADVO = "Mykradvo Artifact"; T_SAFETY = "Safety Tether"; T_DEVASTATION = "Devastation Sigil"; T_DIVINE = "Divine Sprite"; +T_BALLS = "Ballsy Bomb"; +T_SENTRY = "Sentry"; +T_SENTRYMP = "%s's sentry"; +I_SENTRY = "\"Battle-Boi\" Deployable Sentry"; T_CHANCEBOX = "Lucky Chance Box"; T_FROGGY = "Froggy Chair"; T_PERFECTLYGENERIC = "Generic Cube"; @@ -159,8 +133,9 @@ T_PEACH = "Toot Froot™ Peach Juice"; T_MILKBREAD = "Akkouxhei Milk Bread"; T_KIRINMANGA = "Saya Miyamoto - I Married A Cherry Boy Emperor But It Turns Out He's Really Cute In Lingerie?!"; T_KIRINPLUSH = "Emperor Kirin Plush"; -T_MOTHPLUSH = "Mashiro Plush"; +T_MOTHPLUSH = "Moth Plush"; T_SAYASMUG = "Saya's Coffee Mug"; +T_SHARKPLUSH = "Shark Plush"; // colored tags for keys T_REDCARD = "\cgRed Keycard\c-"; T_BLUECARD = "\chBlue Keycard\c-"; @@ -195,8 +170,25 @@ GOTREDCARD = "Red Keycard"; GOTBLUESKUL = "Blue Skull Key"; GOTYELWSKUL = "Yellow Skull Key"; GOTREDSKUL = "Red Skull Key"; +// heretic and hexen keys actually have proper tags, so just redirect them +TAG_GOTYELLOWKEY = "$$T_KEYYELLOW"; +TAG_GOTGREENKEY = "$$T_KEYGREEN"; +TAG_GOTBLUEKEY = "$$T_KEYBLUE"; +TAG_KEY_STEEL = "$$T_KEYSTEEL"; +TAG_KEY_CAVE = "$$T_KEYCAVE"; +TAG_KEY_AXE = "$$T_KEYAXE"; +TAG_KEY_FIRE = "$$T_KEYFIRE"; +TAG_KEY_EMERALD = "$$T_KEYEMERALD"; +TAG_KEY_DUNGEON = "$$T_KEYDUNGEON"; +TAG_KEY_SILVER = "$$T_KEYSILVER"; +TAG_KEY_RUSTED = "$$T_KEYRUSTED"; +TAG_KEY_HORN = "$$T_KEYHORN"; +TAG_KEY_SWAMP = "$$T_KEYSWAMP"; +TAG_KEY_CASTLE = "$$T_KEYCASTLE"; // edited vanilla pickup messages TXT_DEFAULTPICKUPMSG = "Unidentified Item"; +// not our hero +CC_HERO = "Doomguy"; // quit messages QUITMSG = "You really want to go?\nWhat a shame..."; QUITMSG1 = "Wow, don't just go and leave!\nThere's still a lot of stuff to do!"; @@ -205,7 +197,7 @@ QUITMSG3 = "Thank you for playing.\nI hope to see you again soon."; QUITMSG4 = ""; QUITMSG5 = "Ah, fun time is over, I guess..."; QUITMSG6 = "My love for you is like a truck.\n\cg!!BERSERKER!!\c-"; -QUITMSG7 = "Don't go now, or \cfSaya\c- will talk\nshit about you on Twitter dot com."; +QUITMSG7 = "Don't go now, or \cgSaya\c- will talk\nshit about you on Twitter dot com."; QUITMSG8 = "TO QUOTE A BIBLE;\n\"THE WATER MONSTER IS RIGHT,\nCATMAN. THEY ARE AMONG US.\""; QUITMSG9 = "John Romero's about to\nhope you're doing well."; QUITMSG10 = "Don't go now, there's a scary\nmoth girl waiting in the darkness!"; @@ -216,14 +208,17 @@ QUITMSG14 = "To be continued?"; QUITMSG15 = "[Insert witty message here]"; QUITMSG16 = "AHDSAKAFAJDAGS!"; QUITMSG17 = "Butt bots gonna bot."; -QUITMSG18 = "WHO IN THEIR RIGHT MIND\nWOULD FROST A CAKE WITH THEIR BUTT?"; -QUITMSG19 = "World hard and cold,\ntiddy soft and warm."; +QUITMSG18 = "World hard and cold,\ntiddy soft and warm."; // startup (don't localize) STARTUP1 = "\n" -" \ck★\cf~\c- \cvDemo-chan says\c- \cf~\ck★\c-\n" +"\cvThere is much that can be said against war.\c-\n" "\n" -" \ck★\cf~\c- \cvTERFs can fuck off\c- \cf~\ck★\c-\n" +"\cvBut without war, there can be no peace afterwards.\c-\n" +"\n" +"\cvAnd no war is complete without weapons.\c-\n" +"\n" +"\cvLots and lots of weapons...\c-\n" "\n"; STARTUP2 = ""; STARTUP3 = ""; @@ -231,9 +226,9 @@ STARTUP4 = ""; STARTUP5 = ""; // crashout (don't localize) CRASHMSG1A = "Oopsie Woopsie!"; -CRASHMSG1B = "Looks like GZDoom made a fucky wucky! owo"; +CRASHMSG1B = "Looks like we made a fucky wucky! owo"; CRASHMSG2A = "Oh snap!"; -CRASHMSG2B = "GZDoom just went kaboom!"; +CRASHMSG2B = "The game just went kaboom!"; CRASHMSG3A = "Crash to console?"; CRASHMSG3B = "Golly gee that sure sounds like a problem."; CRASHMSG4A = ""; @@ -243,7 +238,7 @@ CRASHMSG5B = "There it goes."; CRASHMSG6A = "Oh no!"; CRASHMSG6B = "That doesn't look good."; CRASHMSG7A = "Hey, guess what?"; -CRASHMSG7B = "GZDoom just crashed."; +CRASHMSG7B = "The game just crashed."; CRASHMSG8A = "Uhhh..."; CRASHMSG8B = "That sure wasn't supposed to happen."; // Re-tagged monsters @@ -259,11 +254,12 @@ FN_SHOTGUN_FUN2 = "Elmer Fudd"; FN_SHOTGUN_FUN3 = "Baldy"; FN_SHOTGUN_FUN4 = "Shottyboi"; FN_SHOTGUN_FUN5 = "Baldo"; -FN_HEAVY_FUNN = "4"; +FN_HEAVY_FUNN = "5"; FN_HEAVY_FUN1 = "Annoyance"; FN_HEAVY_FUN2 = "Why Am I Losing Health?"; FN_HEAVY_FUN3 = "Plutonia"; FN_HEAVY_FUN4 = "Angery Dude"; +FN_HEAVY_FUN5 = "Hitscanning Scumbag"; FN_IMP_FUNN = "5"; FN_IMP_FUN1 = "Spiky Boi"; FN_IMP_FUN2 = "Brownie"; @@ -340,16 +336,56 @@ FN_SPIDER_FUN2 = "Big Momma"; FN_SPIDER_FUN3 = "Oversized Krang"; FN_SPIDER_FUN4 = "Not Mother Brain"; FN_SPIDER_FUN5 = "Massive Nerd"; -FN_CYBER_FUNN = "5"; +FN_CYBER_FUNN = "6"; FN_CYBER_FUN1 = "Dat Ass"; FN_CYBER_FUN2 = "An Arm And A Leg"; -FN_CYBER_FUN3 = "My Goat Is Augmented"; +FN_CYBER_FUN3 = "My Cow Is Augmented"; FN_CYBER_FUN4 = "Circlestrafe Practice"; FN_CYBER_FUN5 = "Shoot At It Until It Dies"; +FN_CYBER_FUN6 = "Moo Cow"; FN_WOLFSS_FUNN = "3"; FN_WOLFSS_FUN1 = "Mein Lieben"; FN_WOLFSS_FUN2 = "Blondie"; FN_WOLFSS_FUN3 = "Plain Ol' Nazi"; +FN_ID24BANSHEE_FUNN = "5"; +FN_ID24BANSHEE_FUN1 = "'Splode"; +FN_ID24BANSHEE_FUN2 = "Shouty McShoutface"; +FN_ID24BANSHEE_FUN3 = "Blastface"; +FN_ID24BANSHEE_FUN4 = "We Have To Explode"; +FN_ID24BANSHEE_FUN5 = "Volatile"; +FN_ID24GHOUL_FUNN = "6"; +FN_ID24GHOUL_FUN1 = "SKULL"; +FN_ID24GHOUL_FUN2 = "Grayface"; +FN_ID24GHOUL_FUN3 = "Floaty Head"; +FN_ID24GHOUL_FUN4 = "They Shoot Now"; +FN_ID24GHOUL_FUN5 = "Lil' Head"; +FN_ID24GHOUL_FUN6 = "Skully"; +FN_ID24MINDWEAVER_FUNN = "5"; +FN_ID24MINDWEAVER_FUN1 = "Dakka Spooder"; +FN_ID24MINDWEAVER_FUN2 = "Braingunner"; +FN_ID24MINDWEAVER_FUN3 = "Adolescent Spider"; +FN_ID24MINDWEAVER_FUN4 = "Momma's Favorite"; +FN_ID24MINDWEAVER_FUN5 = "Bullet Nerd"; +FN_ID24SHOCKTROOPER_FUNN = "5"; +FN_ID24SHOCKTROOPER_FUN1 = "Plasma Bastard"; +FN_ID24SHOCKTROOPER_FUN2 = "Zap Zombie"; +FN_ID24SHOCKTROOPER_FUN3 = "Asshole"; +FN_ID24SHOCKTROOPER_FUN4 = "Oof Ouch"; +FN_ID24SHOCKTROOPER_FUN5 = "Glass Cannon"; +FN_ID24TYRANT_FUNN = "6"; +FN_ID24TYRANT_FUN1 = "Hornless Behavior"; +FN_ID24TYRANT_FUN2 = "Downgraded Cow"; +FN_ID24TYRANT_FUN3 = "Less Augmented Cow"; +FN_ID24TYRANT_FUN4 = "Green Moo"; +FN_ID24TYRANT_FUN5 = "Also Shoot At It Until It Dies"; +FN_ID24TYRANT_FUN6 = "Arse"; +FN_ID24VASSAGO_FUNN = "6"; +FN_ID24VASSAGO_FUN1 = "Skullface"; +FN_ID24VASSAGO_FUN2 = "Fiery Fuck"; +FN_ID24VASSAGO_FUN3 = "Flamer"; +FN_ID24VASSAGO_FUN4 = "Winged Goat"; +FN_ID24VASSAGO_FUN5 = "Pie-Romancer"; +FN_ID24VASSAGO_FUN6 = "Door On Fire"; FN_DOG_FUN = "Goodest Boy"; FN_CHICKEN_FUN = "PECK"; FN_BEAST_FUN = "Друг"; @@ -382,16 +418,16 @@ FN_MUMMY_FUN1 = "Toilet Paper"; FN_MUMMY_FUN2 = "Mediocre Mummy"; FN_MUMMY_FUN3 = "Crappy Golem"; FN_MUMMYLEADER_FUNN = "3"; -FN_MUMMYLEADER_FUN1 = "Toilet Paper whomst Scream"; -FN_MUMMYLEADER_FUN2 = "Mediocre Mummy whomst Scream"; -FN_MUMMYLEADER_FUN3 = "Crappy Golem whomst Scream"; +FN_MUMMYLEADER_FUN1 = "Toilet Paper Whomst Scream"; +FN_MUMMYLEADER_FUN2 = "Mediocre Mummy Whomst Scream"; +FN_MUMMYLEADER_FUN3 = "Crappy Golem Whomst Scream"; FN_SNAKE_FUNN = "2"; FN_SNAKE_FUN1 = "Snek"; FN_SNAKE_FUN2 = "No Steppy"; FN_WIZARD_FUNN = "4"; -FN_WIZARD_FUN1 = "Yer a Wizard, Harry"; +FN_WIZARD_FUN1 = "Yer A Wizard, Harry"; FN_WIZARD_FUN2 = "A Wizard Did It"; -FN_WIZARD_FUN3 = "A Motherfucking Mage"; +FN_WIZARD_FUN3 = "Magic Man"; FN_WIZARD_FUN4 = "Floating Rags"; FN_FIREDEMON_FUNN = "3"; FN_FIREDEMON_FUN1 = "Hot Stuff"; @@ -404,18 +440,16 @@ FN_DEMON1_FUN3 = "Big Chomper"; FN_DEMON1_FUN4 = "Goatee Haver"; FN_ETTIN_FUNN = "3"; FN_ETTIN_FUN1 = "Double Boi"; -FN_ETTIN_FUN2 = "Idiot with Club"; +FN_ETTIN_FUN2 = "Idiot With Club"; FN_ETTIN_FUN3 = "Low Level Mook"; -FN_CENTAUR_FUNN = "4"; +FN_CENTAUR_FUNN = "3"; FN_CENTAUR_FUN1 = "Shield Idiot"; FN_CENTAUR_FUN2 = "Shield Asshole"; -FN_CENTAUR_FUN3 = "Shield Fucker"; -FN_CENTAUR_FUN4 = "Shield Cocksucker"; -FN_SLAUGHTAUR_FUNN = "4"; +FN_CENTAUR_FUN3 = "Shield Bastard"; +FN_SLAUGHTAUR_FUNN = "3"; FN_SLAUGHTAUR_FUN1 = "Shield Stupid Idiot"; FN_SLAUGHTAUR_FUN2 = "Shield Stinky Asshole"; -FN_SLAUGHTAUR_FUN3 = "Shield Bitchass Knobfuck"; -FN_SLAUGHTAUR_FUN4 = "Shield Knobgobbler"; +FN_SLAUGHTAUR_FUN3 = "Shield Bitch Bastard"; FN_BISHOP_FUNN = "3"; FN_BISHOP_FUN1 = "Hoodie Boi"; FN_BISHOP_FUN2 = "Green Guy"; @@ -436,12 +470,12 @@ FN_MBOSS_FUN = "Magic Boi"; FN_CBOSS_FUN = "Holy Boi"; FN_HERESIARCH_FUN = "Oh Lawd He Comin'"; // Additional tags -FN_BOSSBRAIN = "Marisa Kirisame"; -FN_BOSSBRAIN_FUN = "YOU WERE EXPECTING JOHN ROMERO BUT IT WAS ME, MARISA!"; +FN_BOSSBRAIN = "Boss Brain"; +FN_BOSSBRAIN_FUN = "Very Wrappy Oatmeal"; FN_KEEN = "Commander Keen"; FN_KEEN_FUN = "Ruined by Bethesda"; -FN_VOODOO = "Voodoo doll of %s"; -FN_VOODOO_NP = "Voodoo doll"; +FN_VOODOO = "%s?"; +FN_VOODOO_NP = "Doll?"; FN_PIG = "Pig"; FN_PIG_FUN = "Porker"; FN_WOLFGUARD = "Guard"; @@ -475,6 +509,82 @@ FN_NDEMON_FUNN = "3"; FN_NDEMON_FUN1 = "Greenie"; FN_NDEMON_FUN2 = "Angry Greens"; FN_NDEMON_FUN3 = "Spinach Demon"; +// eviternity 2 tags +FN_FCORPORAL = "Former Corporal"; +FN_FCORPORAL_FUNN = "3"; +FN_FCORPORAL_FUN1 = "Green Schmuck"; +FN_FCORPORAL_FUN2 = "Big Bullet Zomb"; +FN_FCORPORAL_FUN3 = "Zombogreen"; +FN_ASTRALARACH = "Astral Arachnotron"; +FN_ASTRALARACH_FUNN = "4"; +FN_ASTRALARACH_FUN1 = "Nasty Spammer"; +FN_ASTRALARACH_FUN2 = "Barrage Baby"; +FN_ASTRALARACH_FUN3 = "Lotsa Plasmas"; +FN_ASTRALARACH_FUN4 = "Grayed Spooder"; +FN_VEILIMP = "Veil Imp"; +FN_VEILIMP_FUNN = "5"; +FN_VEILIMP_FUN1 = "Hot Pink"; +FN_VEILIMP_FUN2 = "Blink Twink"; +FN_VEILIMP_FUN3 = "Fuchsia Boy"; +FN_VEILIMP_FUN4 = "He Teleport"; +FN_VEILIMP_FUN5 = "Oversaturated"; +FN_ASTRALGOLD = "Golden Astral Cacodemon"; +FN_ASTRALGOLD_FUNN = "5"; +FN_ASTRALGOLD_FUN1 = "Golden Boy"; +FN_ASTRALGOLD_FUN2 = "Ball O' Gold"; +FN_ASTRALGOLD_FUN3 = "Shiny Cacodemon"; +FN_ASTRALGOLD_FUN4 = "Bling Ball"; +FN_ASTRALGOLD_FUN5 = "Rich Friend"; +FN_DUKE = "Duke Of Hell"; +FN_DUKE_FUNN = "6"; +FN_DUKE_FUN1 = "Balls Of Green"; +FN_DUKE_FUN2 = "Duki Nuki"; +FN_DUKE_FUN3 = "Hell Duck"; +FN_DUKE_FUN4 = "Douche of Hell"; +FN_DUKE_FUN5 = "The Goat Is Green"; +FN_DUKE_FUN6 = "Brazil"; +FN_ASTRALBABY = "Astral Baby Cacodemon"; +FN_ASTRALBABY_FUNN = "4"; +FN_ASTRALBABY_FUN1 = "Smol Husk"; +FN_ASTRALBABY_FUN2 = "Adorable"; +FN_ASTRALBABY_FUN3 = "Little Gray Ball"; +FN_ASTRALBABY_FUN4 = "Fun-Sized Hisser"; +FN_NAC = "Nightmare Astral Cacodemon"; +FN_NAC_FUNN = "6"; +FN_NAC_FUN1 = "Holy Fuckball"; +FN_NAC_FUN2 = "Spooky Green Hiss"; +FN_NAC_FUN3 = "Horrifying"; +FN_NAC_FUN4 = "Terrifying"; +FN_NAC_FUN5 = "SCARY"; +FN_NAC_FUN6 = "Hardcore Meatball"; +FN_ASTRALFATSO = "Astral Mancubus"; +FN_ASTRALFATSO_FUNN = "4"; +FN_ASTRALFATSO_FUN1 = "Big Fuck"; +FN_ASTRALFATSO_FUN2 = "Fat Bastard"; +FN_ASTRALFATSO_FUN3 = "Dark Fats"; +FN_ASTRALFATSO_FUN4 = "Charred Lard"; +FN_NECROMENACE = "Necromenace"; +FN_NECROMENACE_FUNN = "5"; +FN_NECROMENACE_FUN1 = "Rise From Your Grave"; +FN_NECROMENACE_FUN2 = "Resurrector Bastard"; +FN_NECROMENACE_FUN3 = "Oh Fuck No"; +FN_NECROMENACE_FUN4 = "10000 Points Off"; +FN_NECROMENACE_FUN5 = "Hey Guess What"; +FN_ORIGIN = "The Origin"; +FN_ORIGIN_FUN = "Ball O' Wings"; +FN_SAC = "Spectral Astral Cacodemon"; +FN_SAC_FUNN = "3"; +FN_SAC_FUN1 = "Sneaky Gray Boy"; +FN_SAC_FUN2 = "Very Faded Meatball"; +FN_SAC_FUN3 = "Hidden Hissy Husk"; +FN_GDUKE = "Grand Duke Of Hell"; +FN_GDUKE_FUNN = "6"; +FN_GDUKE_FUN1 = "Balls Of Blue"; +FN_GDUKE_FUN2 = "Duki Le Nuki"; +FN_GDUKE_FUN3 = "Great Hell Duck"; +FN_GDUKE_FUN4 = "Great Douche of Hell"; +FN_GDUKE_FUN5 = "The Goat Is Blue"; +FN_GDUKE_FUN6 = "Brazil 2"; // ultimate doom 2 tags FN_ELITEZOMBIE = "Elite Zombie"; FN_ELITEZOMBIE_FUNN = "3"; @@ -482,27 +592,16 @@ FN_ELITEZOMBIE_FUN1 = "Fastzomb"; FN_ELITEZOMBIE_FUN2 = "He Schutt"; FN_ELITEZOMBIE_FUN3 = "Blondie Boy"; // obituaries -O_PUSHER = "%k carefully removed %o's cavities."; O_DEEPIMPACT = "%o was impacted deeply by %k."; O_DEEPIMPACT_WEAK = "%k coughed in %o's general direction."; O_EXPLODIUM = "%k inflicted severe knee explosions onto %o."; -O_SPREADGUN_RED = "%k gave %o a mouthful of shot."; -O_SPREADGUN_GREEN = "%o got slugged by %k."; -O_SPREADGUN_WHITE = "%k burninated %o."; -O_SPREADGUN_BLUE = "%k made %o very salty."; -O_SPREADGUN_BLACK = "%o received a very spiky treatment from %o."; -O_SPREADGUN_BLACK_DEBUFF = "%k turned %o into a corroded mess."; -O_SPREADGUN_PURPLE = "%o was conked by %k's lead ball."; +O_SPREADGUN = "%k gave %o a mouthful of shot."; O_SPREADGUN_GOLD = "%o ate up %k's golden blast."; -O_WALLBUSTER_RED = "%k gave %o a mighty busting."; -O_WALLBUSTER_GREEN = "%k turned %o into a donut."; -O_WALLBUSTER_BLUE = "%k made %o REALLY salty."; -O_WALLBUSTER_PURPLE = "%k inflicted lead ball torture onto %o."; +O_WALLBUSTER = "%k gave %o a mighty busting."; O_EVISCERATOR = "%o was eviscerated by %k."; O_HELLBLAZER = "%k blasted %o into burning bits."; O_SPARKSTER = "%o got sparked hard by %k."; -O_SILVERBULLET = "%o could not ignore the girth of %k's bullets."; -O_SILVERBULLET2 = "%o was blasted by %k's girthy bullets."; +O_SILVERBULLET = "%k blasted a very, very big hole through %o."; O_CANDYGUN = "%k made %o taste the sweetness (and death)."; O_YNYKRON = "%o was instantly removed by %k."; O_YNYKRONALT = "%o was furiously obliterated by %k."; @@ -514,10 +613,10 @@ O_SHEENHMG = "%k drowned %o in bullets."; O_QUADRAVOL = "%k made delicious barbecue out of %o."; O_QUADRAVOL2 = "%o was gravely roasted by %k."; O_NEWSPARKSTER = "%o witnessed the might of %k's plasma artillery."; -O_MORTALRIFLE = "%k killed %o very dead."; -O_MORTALRIFLEALT = "%o caught a very deadly grenade from %k."; O_RAYKHOM = "%o received an express delivery of deadly plasma from %k."; O_RAYKHOM2 = "%o witnessed %k's UNLIMITED POWER."; +O_MORTALRIFLE = "%k killed %o very dead."; +O_MORTALRIFLEALT = "%o caught a very deadly grenade from %k."; O_RAFANKOS = "%o stood no chance against %k's ultimate weapon."; O_POUND = "%o was very impressed by %k's landing."; O_DASH = "%o was discombobulated by a very fast moving %k."; @@ -529,15 +628,40 @@ O_DOKIDOKI = "%o was defeated by %k's power of love."; O_MOTH = "%o was assaulted by %k's moths."; O_MOTHSELF = "%o was assaulted by %p own moths."; O_MOTH2 = "%o was assaulted by moths."; -O_MASHIRO1 = "%o should have kept the lights on."; -O_MASHIRO2 = "%o now belongs to the White Lady."; -O_MASHIRO3 = "%o made a terrible mistake."; -O_MASHIRO4 = "%o mysteriously disappeared."; -O_MASHIRO5 = "%o angered the wrong moth."; -O_ENDLEVEL = "Looks like %o will have to pistol start."; +O_ANDIRA = "%o angered the wrong moth."; +O_ENDLEVEL = "%o had a peculiar teleportation-related mishap."; O_MYKRADVO = "%o couldn't hide from %k's vengeful wrath."; +O_LEADBALL = "%o was conked by %k's lead ball."; +O_SALTSHOT = "%k made %o very salty."; +// self obituaries +SO_EXPLODIUM = "%o forgot that %p gun deals splash damage."; +SO_EXPLODIUMALT = "%o tried to catch %p own grenade."; +SO_SPREADGUN_GOLD = "%o ate up %p own golden blast."; +SO_EVISCERATOR = "%o bounced some shrapnel right into %p own face."; +SO_EVISCERATORALT = "%o ain't no flak monkey."; +SO_HELLBLAZER = "%o is most definitely good at Doom."; +SO_SPARKSTER = "%o sparked %hself."; +SO_SILVERBULLET = "%o fired a 35mm round at point blank and now regrets it."; +SO_SILVERBULLET2 = "%o forgot that the Silver Bullet's exhaust is very hot."; +SO_CANDYGUN = "%o tried to taste %p own candy (and died)."; +SO_CANDYGUNALT = "%o tried to catch %p own candy grenade."; +SO_CANDYGUNCOMBO = "%o tried to catch %p own Candy Gun."; +SO_YNYKRON = "%o instantly removed %hself."; +SO_YNYKRONALT = "%o didn't keep %p distance from %p own singularity."; +SO_PLASMABLAST = "%o ate %p own plasma."; +SO_QUADRAVOL = "%o certainly is good at Doom."; +SO_QUADRAVOL2 = "%o failed the rocket jump."; +SO_QUADRAVOLF = "%o forgot to stop, drop and roll."; +SO_NEWSPARKSTER = "%o really shouldn't use plasma artillery at close range."; +SO_RAYKHOM = "%o forgot that the Ray-Khom is a long range weapon."; +SO_RAYKHOM2 = "%o can feel John Romero laughing at %h."; +SO_MORTALRIFLE = "%o made a very deadly mistake."; +SO_MORTALRIFLEALT = "%o should have kept %p distance from those very deadly grenades."; +SO_RAFANKOS = "%o shouldn't be using superweapons at point blank."; +SO_LEADBALL = "%o shouldn't be playing with %p own balls."; +SO_SALTSHOT = "%o got caught in the crossfire of %p own sentry."; // edited vanilla obituaries -OB_SUICIDE = "%o commited suikoden."; +OB_SUICIDE = "%o committed suikoden."; OB_FALLING = "%o sprained everything."; OB_CRUSH = "%o was pancaked."; OB_EXIT = "%o was not allowed to leave."; @@ -546,7 +670,7 @@ OB_SLIME = "%o got slimed."; OB_LAVA = "%o overheated"; OB_BARREL = "%o got barreled."; OB_SPLASH = "%o got a bit too close there."; -OB_R_SPLASH = "%o did an Icarus."; +OB_R_SPLASH = "%o is good at Doom."; OB_ROCKET = "%o ate a rocket."; OB_KILLEDSELF = "%o self-destructed."; OB_VOODOO = "%o shouldn't have touched that doll."; @@ -579,6 +703,12 @@ OB_KNIGHT = "%o was bruised by green plasma."; OB_SPIDER = "%o ate all those bullets."; OB_BABY = "%o angered the spider bab."; OB_CYBORG = "%o didn't follow the protip."; +ID24_OB_BANSHEE = "%o got ardently shouted at."; +ID24_OB_GHOUL = "%o got pelted by skullies."; +ID24_OB_MINDWEAVER = "%o did not expect the demons to give machine guns to children."; +ID24_OB_SHOCKTROOPER = "%o got plasma up the ass."; +ID24_OB_TYRANT = "%o still didn't follow the protip."; +ID24_OB_VASSAGO = "%o could not handle that much heat."; OB_DOG = "%o angered the doggo."; OB_CHICKEN = "%o got the PECK."; OB_BEAST = "%o got flamed by a big friend."; @@ -602,7 +732,9 @@ OB_WIZARD = "%o got magick'd."; OB_WIZARDHIT = "%o had a close encounter with a feckin' wizard."; OB_FIREDEMON = "%o was fired."; OB_DEMON1 = "%o ate a big lizard's fireball."; +OB_DEMON1HIT = "%o got chomp'd by a big lizard."; OB_DEMON2 = "%o ate a big lizard's snotball."; +OB_DEMON2HIT = "%o got chomp'd by a big lizard."; OB_ETTIN = "%o got smashed by a double boi."; OB_CENTAUR = "%o got slashed by a shield idiot."; OB_SLAUGHTAURHIT = "%o got slashed by a shield idioter."; @@ -619,18 +751,41 @@ OB_FBOSS = "%o was green'd by the fighty boi's Lame Sword."; OB_MBOSS = "%o was assploded by the magic boi's Explodey Staff."; OB_CBOSS = "%o was ghosted by the holy boi's Ghostpenis."; OB_HERESIARCH = "%o saw that coming."; -OB_PIG = "%o angered the hams."; // for when gzdoom fixes this (come on, graf) -DEFOB_PIG = "$$OB_PIG"; // gzdoom will look this up since it has no obituary assigned +OBITUARY_PIG = "%o angered the hams."; OB_WOLFGUARD = "%o got pelted by some weakling."; OB_WOLFSS_ORIG = "%o was pelted by blondies."; -OB_WOLFHANS = "%o couldn't withstand such sheer girthitude."; +OB_WOLFHANS = "%o couldn't withstand such sheer grosse-ness."; // eviternity obituaries -OB_FCAPTAIN = "%o was zapped by an angry green lad."; -OB_ANNIHIL = "%o was terminated by a cybergoat."; -OB_NDEMON = "%o got scronched."; +OBITUARY_FORMERCAPTAIN = "%o was zapped by an angry green lad."; +OBITUARY_ANNIHILATOR = "%o was terminated by a cybergoat."; +OBITUARY_NIGHTMAREDEMON = "%o got scronched."; OB_ANGEL1 = "%o pissed off that angel."; OB_ANGEL2 = "%o really pissed off that angel."; OB_ASTRAL = "%o got scorched by a gray ball friend."; +// eviternity 2 obituaries +OB_CORPORAL = "%o caught a big bullet from that green dude."; +OB_ASTRALBABY = "%o ate a whole lot of plasma."; +OB_NIGHTMARE = "$$OBITUARY_NIGHTMAREDEMON"; +OB_ANNIHILATOR = "$$OBITUARY_ANNIHILATOR"; +OB_ASTRALCACO = "$$OB_ASTRAL"; +OB_VEILIMP = "%o got scalded by some pink punk."; +OB_GOLDENCACO = "%o thinks that might have been a bit too much."; +OB_DUKE = "%o was sent to Brazil."; +OB_ASTRALKIRBY = "%o got scorched by a very small gray ball friend."; +OB_NAC = "%o couldn't outrun that green thing."; +OB_ASTRALFATSO = "%o REALLY got down with the thiccness."; +OB_NECRO = "%o got fucked over by that stupid necromancer."; +OB_NECROF = "%o was spooked by freaky ghosts."; +OB_GOLDENBOSS = "%o certainly believes that was too much."; +OB_ORIGIN1 = "%o messed with the wrong angel."; +OB_ORIGIN2 = "%o really pissed off that ball 'o wings."; +OB_ORIGIN3 = "%o did not expect there to be a third round."; +OB_XORIGIN1 = "$$OB_ORIGIN1"; +OB_XORIGIN2 = "$$OB_ORIGIN2"; +OB_XORIGIN3 = "$$OB_ORIGIN3"; +OB_XCAPTAIN = "$$OBITUARY_FORMERCAPTAIN"; +OB_XSAC = "%o got scorched by a stealthy gray ball."; +OB_XGDUKE = "%o was sent to Brazil, but harder."; // ultimate doom 2 obituaries OB_ELITEZOMBIE = "%o was shot rapidly by some elite guy."; // misc @@ -658,29 +813,26 @@ D_BARRIER = "The Elemental Coating wore off."; D_DEVASTATION = "The Sigil's power is no more."; D_SPRITE = "The Divine Sprite has breathed its last."; D_TETHERFAIL = "The Safety Tether link was obstructed."; -D_MASHIRO = "\cjShe knows where you are...\c-"; -SWWM_YNYKRONREADY = "Ynykron Artifact ready for firing."; -SWWM_SWAPWEAPON = "\cjPress \cfUse\cj to swap \cf%s\cj for \cf%s\cj.\c-"; -SWWM_TITLEPRESENTSA = "UnSX Team"; -SWWM_TITLEPRESENTSB = "presents"; -SWWM_TITLEPRESENTS = "presents"; -SWWM_TITLEMODBYA = "a mod by"; -SWWM_TITLEMODBYB = "Marisa Kirisame"; -SWWM_TITLEMODBY = "a mod by \cxMarisa Kirisame"; +D_SENTRYFIT = "You can't deploy here. Not enough space."; +D_SENTRYSLOPE = "You can't deploy here. Terrain is uneven."; +D_SENTRYDOWN = "Sentry has been destroyed!"; +D_SENTRYREST = "Sentry is fully repaired."; +D_SENTRYEMPTY = "Sentry has run our of ammo."; +D_SENTRYFAR = "You're too far to recall the sentry."; +D_ANDIRA = "\cjShe knows where you are...\c-"; +SWWM_YNYKRONREADY = "The Ynykron Artifact is ready for firing."; +SWWM_SWAPWEAPON = "\cjPress \cfUse\cj to swap\n\cf%s\cj for \cf%s\c-"; +SWWM_TODOWEAPON = "\cjThe \cf%s\cj is not yet implemented.\c-"; SWWM_TITLEINTROA = "On that day, humankind saw itself in dire danger, facing an impending doom."; SWWM_TITLEINTROB = "But one machine stood up, who fought back, who could end this whole invasion."; SWWM_TITLEINTROC = "The demons would learn to fear that machine, who they know only by one name..."; -SWWM_NTITLESCROLL = "9"; -SWWM_TITLESCROLL1 = "SWWM GZ ~ Cute Robutt Whomst Love To Explode Demons"; -SWWM_TITLESCROLL1_NEW = "Codename: Demolitionist ~ Cute Robutt Whomst Love To Explode Demons"; -SWWM_TITLESCROLL2 = "A wondrous GZDoom gameplay mod by Marisa Kirisame of UnSX Team"; +SWWM_NTITLESCROLL = "6"; +SWWM_TITLESCROLL1 = "Codename: Demolitionist ~ Cute Robutt Whomst Love To Explode Demons"; +SWWM_TITLESCROLL2 = "A wondrous Doom mod by Mari the Deer"; SWWM_TITLESCROLL3 = "Lovingly designed 3D models with hand-painted 256-color dithered textures"; -SWWM_TITLESCROLL4 = "Over 60k lines of ZScript, and still counting (god help me)"; +SWWM_TITLESCROLL4 = "Over 60k lines of bespoke ZScript code, and still counting (god help me)"; SWWM_TITLESCROLL5 = "The deepest lore this side of the Doom Modiverse"; SWWM_TITLESCROLL6 = "And much much more!"; -SWWM_TITLESCROLL7 = "Greetz to Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney and last but not least my beloved pet dragon"; -SWWM_TITLESCROLL8 = "I tried to squeeze as many names as possible in there, that I could remember, at least, so if you're not in there and want in, feel free to ask"; -SWWM_TITLESCROLL9 = "There's nothing else to see here, the scroll will now wrap around, see you again, have a nice day"; SWWM_NTITLESUB = "14"; SWWM_TITLESUB1 = "The World Is In Danger And We Have Just Sent\nThis Double-Cheeked Sassy Robot To Save It!?"; SWWM_TITLESUB2 = "&Knuckles"; @@ -696,6 +848,14 @@ SWWM_TITLESUB11 = "Slaughterwads too hard? No problem!\nJust play them with this SWWM_TITLESUB12 = " Did you know this subtitle is misaligned?"; SWWM_TITLESUB13 = "I like big explosions and I cannot lie"; SWWM_TITLESUB14 = "If you wrapped a cat in a tortilla,\nwould you call that a purrito?"; +SWWM_INTERDONE = "COMPLETED"; +SWWM_INTERNEXT = "NEXT STOP"; +SWWM_INTERKILLS = "MONSTERS DEFEATED:"; +SWWM_INTERITEMS = "ITEMS COLLECTED:"; +SWWM_INTERSECRETS = "SECRETS UNCOVERED:"; +SWWM_INTERTIME = "YOUR TIME:"; +SWWM_INTERPAR = "PAR TIME:"; +SWWM_INTERTOTAL = "TOTAL TIME:"; SWWM_UNIT_METER = "m"; SWWM_UNIT_KILOMETER = "km"; SWWM_UNIT_KPH = "kph"; @@ -705,16 +865,28 @@ SWWM_DOKIDOKI = "The Power of Love™"; SWWM_GRAVKILL = "Gravity"; SWWM_PARRYKILL = "Deflected Projectiles"; SWWM_SETSLOTSTRICT = "\cg!!!WARNING!!!\c-\n\cj\"setslotstrict\" is enabled. This will cause the mod's weapons to not have slots assigned. Please go into Miscellaneous Options and toggle the \"Strict KEYCONF Weapons/Players\" setting.\c-"; -SWWM_FCBSEL = "1.150 FCB"; -SWWM_XSBSEL = "1.150 XSB"; +SWWM_WARNALTHUD = "ALTERNATIVE HUD IS UNSUPPORTED"; +SWWM_GIVEALLWARN = "Not the best way to experience the mod, %s\c-.\nUse 'give %s' again if you insist."; SWWM_WIDESPREAD = "Wide Spread Mode"; SWWM_TIGHTSPREAD = "Tight Spread Mode"; SWWM_YNYKRONFORWARD = "Beam Mode"; // desya / forward SWWM_YNYKRONBACKWARD = "Vortex Mode"; // busa / backward +SWWM_GAMMASPEED1 = "Full Auto"; +SWWM_GAMMASPEED2 = "Fuller Auto"; +SWWM_SHEENSPEED1 = "300 RPM"; +SWWM_SHEENSPEED2 = "700 RPM"; +SWWM_SHEENSPEED3 = "2100 RPM"; SWWM_MRMODE1 = "Precision Shot"; SWWM_MRMODE2 = "Cluster Shot"; SWWM_MRMODE3 = "Stream Shot"; SWWM_MRMODE4 = "Overpressure Shot"; +SWWM_MRLOW = "LOW AMMO"; +SWWM_MRNONE = "EMPTY"; +SWWM_MRCHARGE = "CHARGING"; +SWWM_MRREADY = "READY"; +SWWM_SHEENREADY = "The Sheen HMG has cooled down."; +SWWM_RAYKHOMREADY = "The Ray-Khom's capacitors have recharged."; +SWWM_SENTRYFILL = "Press \cfUse\c- to restock the sentry (\cx¥\cf%d\c-)."; SWWM_DMRANK = "Rank:"; SWWM_DMSPREAD = "Spread:"; SWWM_PLACE1 = "1st"; @@ -723,9 +895,6 @@ SWWM_PLACE3 = "3rd"; SWWM_PAUSE = "PAUSED"; // weapon tooltips SWWM_TTNOTE = "Note: Weapon tooltips can be deactivated in DEMOLITIONIST Options."; -TT_PUSHER = -"\cfFire:\c- Drill.\n" -"\cfAltfire:\c- Charged attack."; TT_DEEPIMPACT = "\cfFire:\c- Air push.\n" "\cfAltfire:\c- Charged shot.\n" @@ -740,9 +909,8 @@ TT_EXPLODIUM2 = "\cfReload:\c- Reload weapon(s)."; TT_SPREADGUN = "\cfFire:\c- Shoot weapon.\n" -"\cfAltfire:\c- Select ammo.\n" -"\cfReload:\c- Reload / switch ammo.\n" -"\cfAltfire+Fire:\c- Unload ammo."; +"\cfAltfire:\c- Reload special ammo.\n" +"\cfReload:\c- Reload weapon."; TT_WALLBUSTER = "\cfFire:\c- Shoot one barrel.\n" "\cfAltfire:\c- Shoot one cylinder.\n" @@ -755,8 +923,7 @@ TT_EVISCERATOR = TT_HELLBLAZER = "\cfFire:\c- Load / shoot rockets.\n" "\cfAltfire:\c- Load / shoot grenades.\n" -"\cfZoom:\c- Select ammo.\n" -"\cfReload:\c- Reload / switch ammo.\n" +"\cfReload:\c- Reload weapon.\n" "\cx(More controls in library)\c-"; TT_SPARKSTER = "\cfFire:\c- Orb shot.\n" @@ -765,10 +932,9 @@ TT_SPARKSTER = "\cfReload:\c- Reload / double load."; TT_SILVERBULLET = "\cfFire:\c- Shoot weapon.\n" -"\cfAltfire:\c- Select ammo.\n" +"\cfAltfire:\c- Cycle bolt.\n" "\cfZoom:\c- Use scope.\n" -"\cfReload:\c- Reload / switch ammo.\n" -"\cfAltfire+Fire:\c- Manual bolt cycle."; +"\cfReload:\c- Reload weapon."; TT_CANDYGUN = "\cfFire:\c- Shoot weapon.\n" "\cfAltfire:\c- Throw magazine.\n" @@ -779,7 +945,7 @@ TT_YNYKRON = "\cfAltfire:\c- Flip magazine.\n" "\cfReload:\c- Reload weapon / cancel charge."; TT_HAMMER = -"\cfFire:\c- Side swings.\n" +"\cfFire:\c- Swift strikes.\n" "\cfAltfire:\c- Overhead swing.\n" "\cfZoom:\c- Spin attack."; TT_PLASMABLAST = @@ -795,35 +961,34 @@ TT_PUNTZERBETA = "\cfAltfire:\c- Quickshot mode.\n" "\cfReload:\c- Reload weapon."; TT_PUNTZERGAMMA = -"\cfFire:\c- Full-auto fire.\n" -"\cfAltfire:\c- Fuller-auto fire.\n" +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Switch speed.\n" "\cfReload:\c- Reload weapon."; TT_SHEENHMG = -"\cfFire:\c- Slow fire.\n" -"\cfAltfire:\c- Moderate fire.\n" -"\cfZoom:\c- Fast fire."; +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Increase speed.\n" +"\cfZoom:\c- Decrease speed."; TT_QUADRAVOL = "\cfFire:\c- Shoot weapon.\n" "\cfAltfire:\c- Pump weapon.\n" "\cfReload:\c- Load cells.\n" -"\cfZoom+Fire:\c- Toggle spread mode.\n" -"\cfZoom+Altfire:\c- Switch firing stance."; +"\cfZoom:\c- Switch firing stance."; TT_NEWSPARKSTER = "\cfFire:\c- Kinylum shot.\n" "\cfAltfire:\c- Nokron shot.\n" "\cfFire+Altfire:\c- Combined shot.\n" "\cfReload:\c- Load Kinylum.\n" "\cfZoom:\c- Load Nokron."; -TT_MORTALRIFLE = -"\cfFire:\c- Shoot weapon.\n" -"\cfAltfire:\c- Shoot grenade.\n" -"\cfZoom:\c- Cycle fire modes.\n" -"\cfReload:\c- Reload weapon."; TT_RAYKHOM = "\cfFire:\c- Shoot weapon.\n" "\cfAltfire:\c- Lightning attack.\n" "\cfReload:\c- Reload weapon.\n" -"\cfZoom:\c- Reload battery."; +"\cfZoom:\c- Use scope."; +TT_MORTALRIFLE = +"\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Shoot/reload grenade.\n" +"\cfZoom:\c- Cycle fire modes.\n" +"\cfReload:\c- Reload weapon."; TT_RAFANKOS = "\cfFire:\c- Single beam.\n" "\cfAltfire:\c- Multi beam.\n" @@ -836,6 +1001,9 @@ BT_SPIDER2 = "Spider Sibling"; BT_DIMPLE = "Demonic Biomech Squad"; BT_IOS = "Baramun, Icon of Sin"; BT_CYBIE2 = "Last Tyrant"; +BT_CYBIE3 = "Guardians of the Soul Silo"; +BT_TYRANT = "Child of Erebus"; +BT_TYRANT2 = "Last Children of Erebus"; BT_LICHES = "Iron Liches"; BT_MINOTAUR = "Maulotaur Servants"; BT_DSPARIL = "D'Sparil, Serpent Rider"; @@ -847,6 +1015,7 @@ BT_DRAGON = "Death Wyvern, Nether Beast"; BT_HERESIARCH = "Heresiarch, Demonic Sorcerer"; BT_KORAX = "Korax, Trickster Demon"; BT_DEATHKINGS = "Deathkings of the Dark Citadel"; +BT_DOOMTEST = "Test Map Boss"; // fun boss tags BT_BRUISERS_FUN = "Super Bruiser Bros"; BT_CYBIE_FUN = "Shoot It Until It Dies"; @@ -855,6 +1024,9 @@ BT_SPIDER2_FUN = "Big Brains Idiot Redux"; BT_DIMPLE_FUN = "Lard Lads and Spidey Squad"; BT_IOS_FUN = "Goaty McGoatface"; BT_CYBIE2_FUN = "Big Stupid Party Pooper"; +BT_CYBIE3_FUN = "An Assload of Cows"; +BT_TYRANT_FUN = "Shoot It Until It Dies, Now In Green"; +BT_TYRANT2_FUN = "Shoot Them All Until They Die, Still In Green"; BT_LICHES_FUN = "The Jolly Lad Squad"; BT_MINOTAUR_FUN = "AWAKEN MY MASTERS"; BT_DSPARIL_FUN = "Red Robed Wizard Dude and Lizard"; @@ -866,13 +1038,18 @@ BT_DRAGON_FUN = "A Motherfucking Dragon"; BT_HERESIARCH_FUN = "Very Pissed Off Red Dude"; BT_KORAX_FUN = "Korax the Big Stinky Ugly Bastard"; BT_DEATHKINGS_FUN = "A Very Anticlimactic Boss Rehash"; +BT_DOOMTEST = "Oatley, Bane of the Quakers"; // eviternity BT_ARCHANGELUS = "Archangelus, Celestial Agent"; BT_ARCHANGELUS_FUN = "Big Fucking Angel Dude"; +// eviternity 2 +BT_ORIGIN = "The Origin Of Astral Blight"; +BT_ORIGIN_FUN = "Biblically Accurate Angel"; // boss oneliners -BOSSLINE_IOS = "\crIcon of Sin\c-: !oremoR nhoJ ,em llik tsum uoy emag eht niw oT"; -BOSSLINE_DSPARIL = "\cgD'Sparil\c-: .hself ruoy erutrot lliw I"; -BOSSLINE_ARCHANGELUS = "\cfArchangelus\c-: Foolish mortal, only your death is eternal!"; +BOSSLINE_IOS = "\crIcon of Sin\c*: !oremoR nhoJ ,em llik tsum uoy emag eht niw oT\c*"; +BOSSLINE_DSPARIL = "\cgD'Sparil\c*: .hself ruoy erutrot lliw I\c*"; +BOSSLINE_ARCHANGELUS = "\cfArchangelus\c*: Foolish mortal, only your death is eternal!\c*"; +BOSSLINE_ROM3R0 = "\crROM3R-0\c*: .hctib ym emoceb dna ™xoB tsaeB ™LIGIS eht yuB .sremooD wollef ,olleH\c*"; // targetter SWWM_OVERKILL = "Overkill"; SWWM_MULTIKILL = "Multi Kill"; @@ -893,14 +1070,28 @@ SWWM_FROGGED = "RIBBIT"; SWWM_PARRY = "Parry"; SWWM_PPARRY = "Perfect Parry"; SWWM_TRESPAWN = "\cu[\cf%ds\c- to respawn\cu]\c-"; +SWWM_ASSKILL = "Double-Cheeked"; +SWWM_LOSKILL = "Unseen"; +SWWM_AIRKILL = "Aerial"; +SWWM_FLYKILL = "YEET"; +SWWM_TELEKILL = "OVERWRITE"; +SWWM_REVKILL = "Revenge"; +SWWM_FARKILL = "Longshot"; +SWWM_OPARRY = "Redirect"; // score messages -SWWM_FINDSECRET = "\cf%s\cf found a secret. +%d\c-"; -SWWM_FINDKEY = "\cf%s\cf got the %s\cf. +%d\c-"; -SWWM_LASTSECRET = "\cf%s\cf found the last secret. +%d\c-"; -SWWM_LASTITEM = "\cf%s\cf got the last item. +%d\c-"; -SWWM_LASTMONSTER = "\cf%s\cf killed the last monster. +%d\c-"; +SWWM_FINDSECRET = "\cfYou found a secret. +%d\c-"; +SWWM_FINDSECRETREM = "\cf%s\cf found a secret. +%d\c-"; +SWWM_FINDKEY = "\cfYou got the %s\cf. +%d\c-"; +SWWM_FINDKEYREM = "\cf%s\cf got the %s\cf. +%d\c-"; +SWWM_LASTSECRET = "\cfYou found the last secret. +%d\c-"; +SWWM_LASTSECRETREM = "\cf%s\cf found the last secret. +%d\c-"; +SWWM_LASTITEM = "\cfYou got the last item. +%d\c-"; +SWWM_LASTITEMREM = "\cf%s\cf got the last item. +%d\c-"; +SWWM_LASTMONSTER = "\cfYou killed the last monster. +%d\c-"; +SWWM_LASTMONSTERREM = "\cf%s\cf killed the last monster. +%d\c-"; SWWM_NEWLORE = "New entries have been added to the Library."; -SWWM_SELLEXTRA = "\cf%s\cf sold an extra %s\cf. +%d\c-"; +SWWM_SELLEXTRA = "\cfYou sold an extra %s\cf. +%d\c-"; +SWWM_SELLEXTRAREM = "\cf%s\cf sold an extra %s\cf. +%d\c-"; SWWM_ALLCLEAR = "\cxLevel all clear! \cf+%d\c-"; SWWM_NOTCLEAR = "\cxLevel not clear?\c-"; SWWM_ALLCLEARAGAIN = "\cxLevel all clear... again!? \cf+%d\c-"; @@ -909,20 +1100,20 @@ SWWM_NEWMISSION = "Mission briefing has been updated."; SWWM_CHEEVO = "\cxAchievement unlocked: \cf%s\c-"; SWWM_CHEEVOREM = "\cx%s \cxunlocked an achievement: \cf%s\c-"; // intermission tips -SWWM_NINTERTIP = "150"; +SWWM_NINTERTIP = "210"; SWWM_INTERTIP = "Tip #%d:"; SWWM_INTERTIP1 = "The Demolitionist is immune to drowning, poison and even fall damage (excluding instant kill pits)."; SWWM_INTERTIP2 = "The Explodium Gun's altfire has an explosive yield proportional to the bullets left in the mag."; SWWM_INTERTIP3 = "Your fuel regenerates over time, but the more you use the impulsor, the longer this will take."; -SWWM_INTERTIP4 = "The Pusher has a chance to slip off your hands on altfire if it doesn't land a hit, however as a ranged attack it may still be effective."; +SWWM_INTERTIP4 = "The Deep Impact may look like a toy, but it's really useful for making some distance from enemies, and it can even blow away incoming barrages of projectiles."; SWWM_INTERTIP5 = "Spare copies of items will be stashed away in your inventory if they can't be immediately used, this even includes health and armor."; SWWM_INTERTIP6 = "The Omnisight makes it easy to track down keys and secret exits in maps."; SWWM_INTERTIP7 = "True to its name, the Wallbuster can be used to completely obliterate doors and other obstacles, depending on their size and how many barrels you shoot."; SWWM_INTERTIP8 = "The Eviscerator can easily clear entire rooms and corridors, but keep in mind that some of the shrapnel might bounce right back at you if you're not careful."; SWWM_INTERTIP9 = "When on the move, the Silver Bullet's jet compensators will reduce most of the recoil from firing, but will also deal some damage if you're not wearing armor."; -SWWM_INTERTIP10 = "Just like other energy weapons of similar function, the Sparkster's primary and secondary fires can be combined with deadly results."; +SWWM_INTERTIP10 = "Just like other energy weapons of similar function, the Biospark Carbine's primary and secondary fires can be combined with deadly results."; SWWM_INTERTIP11 = "The Lämp has a chance to attract a rare type of moth that is much more aggressive than others in its attacks. It is easily recognizable by its white color and bigger size."; -SWWM_INTERTIP12 = "The Refresher will always auto-activate if you're about to die, though sometimes they may not be enough to really save you..."; +SWWM_INTERTIP12 = "The Refresher will always auto-activate if you're about to die, though sometimes that may not be enough to really save you..."; SWWM_INTERTIP13 = "The Ynykron Artifact will instantly kill everything you aim it at, unless it's really unkillable, though usually that's only the case for gods. You're not planning on going after any gods, right?"; SWWM_INTERTIP14 = "Do not be deceived by the Candy Gun, it may seem like a simple recolor, but it is A LOT stronger than your starting weapon."; SWWM_INTERTIP15 = "The Ragekit will greatly increase the strength of your melee attacks and reduce incoming damage, but it'll also make you scream, all the time."; @@ -930,24 +1121,24 @@ SWWM_INTERTIP16 = "Finding secrets, important items, and achieving certain miles SWWM_INTERTIP17 = "The Demolitionist Menu is very helpful, do not forget to bind a key to open it."; SWWM_INTERTIP18 = "All weapons have a quick melee attack available through a dedicated button. With one-handed weapons you will perform a punch, and with two-handed ones a bash."; SWWM_INTERTIP19 = "With the right combination of boosting and wall jumping, it is perfectly possible to remain in the air for extended periods of time."; -SWWM_INTERTIP20 = "Keys and collectibles will play a first-person animation when picked up. If you feel this gets in the way, it can be disabled in the mod options."; +SWWM_INTERTIP20 = "Special collectibles will play a first-person animation when picked up. If you feel this gets in the way, it can be disabled in the mod options."; SWWM_INTERTIP21 = "Aim for a high score! The more enemies you kill the better. Don't forget to put that cash to use at the in-game store when you can."; SWWM_INTERTIP22 = "With proper timing, you can use your quick melee attack to deflect projectiles. It is even possible to return these to the sender, with increased damage if you're under the effects of a Ragekit."; SWWM_INTERTIP23 = "Did you know that Saya really hates the UAC?\n\nWhat? You already knew that? Geez, then I have no idea what else to tell you."; SWWM_INTERTIP24 = "You can dash into enemies to push them out of the way. Some smaller ones may die immediately from the impact and go flying."; SWWM_INTERTIP25 = "If you do an air dash straight towards the ground, you might land with enough force to cause a shockwave, pushing away most enemies around you."; -SWWM_INTERTIP26 = "You can press switches and open doors by punching them. This can also be done with the Lead Ball ammunition from the Spreadgun, with the exception of exit switches."; -SWWM_INTERTIP27 = "The corrosive effects of the Spreadgun's Black Shells can stack, up to a lethal degree if you hit a target dead on. On top of that, nearby targets might also feel some extra pain from the toxic fumes that'll come out, and spread its effects even further beyond."; -SWWM_INTERTIP28 = "Incendiary ammunition is ineffective underwater, for obvious reasons."; -SWWM_INTERTIP29 = "Love is the most powerful thing in the world. Don't hate those who are different. We all must stand together."; +SWWM_INTERTIP26 = "You can press switches and open doors by punching them. If you're feeling violent, you can also activate them by dashing into them."; +SWWM_INTERTIP27 = "The Spreadgun may be unwieldy to use, but it compensates by being far more destructive than your typical shotgun."; +SWWM_INTERTIP28 = "The Demolitionist is too heavy to swim, and will sink quickly. Don't worry, though, the jet boosters work underwater too."; +SWWM_INTERTIP29 = "\"Anyone with a soul can cast magic, but only those with a loving heart can hope to truly master it.\"\n — LS"; SWWM_INTERTIP30 = "The Silver Bullet fires with such a force that its bullets leave shockwaves as they rip through the air (and enemies), dealing additional damage. It can also pierce through some walls."; SWWM_INTERTIP31 = "Going prone with the Silver Bullet will disengage the recoil compensators, allowing you to be free from their damaging heat, at the cost of mobility."; SWWM_INTERTIP32 = "The wondrous effects of the Grilled Cheese Sandwich allow you to survive pretty much everything on auto-activation. Including even the otherwise inevitable destruction from the Ynykron Artifact!"; SWWM_INTERTIP33 = "If you can line it up properly, dashing into enemies backwards will deal triple damage, due to certain specifics of your chassis.\n\n(Yes, I'm referring to that shiny metal butt)"; SWWM_INTERTIP34 = "While under the effects of a Ragekit, your dashing damage will be amplified to such a level you can even cleanly tear through doors and other obstacles along the way."; -SWWM_INTERTIP35 = "We live in a world where many of us are discriminated for our very identity. This is a sad reality, and one that we never chose. Sadder is however the existence of those who hate us."; +SWWM_INTERTIP35 = "\"Humans fear what they cannot comprehend. It is but a simple, primal response, and one our people have taken advantage of for countless centuries.\"\n — Anonymous"; SWWM_INTERTIP36 = "Demo-chan's favorite color is green."; -SWWM_INTERTIP37 = "Kinylum saltshot is potent enough to pierce through invulnerable enemies. This is also true of all weapons from slot 7 upwards."; +SWWM_INTERTIP37 = "All weapons from slot 7 upwards are capable of damaging otherwise invulnerable enemies."; SWWM_INTERTIP38 = "Even if you're not interested in reading the lore, it is still useful to check the entries of weapons and other items to learn more about their usage. Of course, you can also simply experiment by yourself."; SWWM_INTERTIP39 = "If you experience slowdowns when many sound effects are playing, it's recommended to disable HRTF in the OpenAL settings, if enabled."; SWWM_INTERTIP40 = "Item Sense can help you detect items that would be otherwise hard to see among the chaos of an after-battle corpse pile. With an Omnisight, you can even see where items are through walls!"; @@ -958,68 +1149,68 @@ SWWM_INTERTIP44 = "Demo-chan's adventures are often livestreamed for the whole w SWWM_INTERTIP45 = "This mod may contain politics™. If you are sensitive to politics™ please stop playing right now. I'd also advise you to stay away from the internet, I heard it's also full of politics™."; SWWM_INTERTIP46 = "Finding (or buying) a second Explodium Gun will allow you to switch to a dual-wield mode. Just for the sake of it (and because someone made fanart featuring this and I HAD to add it)."; SWWM_INTERTIP47 = "The duration of powerup effects will stack with each use."; -SWWM_INTERTIP48 = "Having been alone for so long in this vast world, humanity has made an enemy out of itself. It's nothing short of pathetic that we've invented so many ways to divide and exclude each other. Regardless of race, language or religion, we are all equal."; -SWWM_INTERTIP49 = "The quick grenade button will allow you to readily throw an Explodium Mag at any given moment, no matter what other weapon you were using. If looking at a wall or the floor, you will instead plant the mag there, quite useful for setting up traps."; -SWWM_INTERTIP50 = "\"Capitalism is a disease, a cancer that will bring this world to its ruin if we don't excise it soon.\" — Hynnykka the Great Witch"; -SWWM_INTERTIP51 = "If an item is ever so slightly out of reach to be picked up by touch, you can press use to manually take it. Do note that this only works for items from this mod. Do also note that walk triggers will still be activated, so you're not going to avoid any traps this way."; +SWWM_INTERTIP48 = "\"Having been alone for so long in this vast world, humanity has made an enemy out of itself. It's pitiful that you've created so many ways to divide and exclude each other.\"\n — Anuvakou Konokamushi"; +SWWM_INTERTIP49 = "The quick grenade button will allow you to readily throw an Explodium Mag at any given moment. If looking at a wall or the floor, you will instead plant the mag there, quite useful for setting up traps."; +SWWM_INTERTIP50 = "\"Capitalism is a disease, a cancer that will bring this world to its ruin if we don't excise it soon.\"\n — Hynnykka the Great Witch"; +SWWM_INTERTIP51 = "If an item from this mod is ever so slightly out of reach to be picked up by touch, you can press use to manually take it. Keep in mind walk triggers will still be activated, so you're not going to avoid any traps this way."; SWWM_INTERTIP52 = "Lucky Chanceboxes may sometimes appear in secret areas, rewarding you with lots of goodies, including unique collectibles."; SWWM_INTERTIP53 = "Mid-reload and have a Pinky trying to bite your face off? Just dash into it to shove it out of the way."; SWWM_INTERTIP54 = "You can pet the dog.\n\nYou can also pet the Cacodemon (but that one's a bit more dangerous to do)."; -SWWM_INTERTIP55 = "Fun things are fun."; +SWWM_INTERTIP55 = "\"Fun things are fun.\"\n — Yui Hirasawa"; SWWM_INTERTIP56 = "Some of these tips aren't really tips, but you probably already know that."; SWWM_INTERTIP57 = "Kinylum salt is not edible. Not only is it radioactive, but it would easily ignite in your stomach. Funny enough, it's popular as a hair dye."; -SWWM_INTERTIP58 = "Always keep your GZDoom up to date. Especially for mods like this one."; -SWWM_INTERTIP59 = "The Reinforced Combat Hammer is pretty strong on its own, but with a Ragekit active, it will be boosted into a beastly headsmasher."; +SWWM_INTERTIP58 = "A large chunk of the Doom community is not to be trusted. Be careful out there."; +SWWM_INTERTIP59 = "If you release alt fire with the Combat Hammer while airborne, you will perform a plunging attack. A certain man once said that this is the most reliable move in the game."; SWWM_INTERTIP60 = "Despite its seemingly puny size, the Plasma Blaster has a lot of destructive potential, especially through its charged alt fire."; SWWM_INTERTIP61 = "The Puntzer guns can easily pierce through solid objects or even thin walls. No enemy will ever be safe behind cover."; -SWWM_INTERTIP62 = "\"The Sheen HMG is such a delicious festival of dakka that the mere sound of it firing makes me unleash Leviathan in my panties, and you can quote me on that.\" — Saya Miyamoto"; +SWWM_INTERTIP62 = "\"The Sheen HMG is such a delicious festival of dakka that the mere sound of it firing makes me wild out. It's nuts!\"\n — Saya Miyamoto"; SWWM_INTERTIP63 = "Pressing fire immediately after hitting something with the Quadravol's blades will result in a boosted point-blank explosion that'll send whatever's at the other end of the gun flying."; -SWWM_INTERTIP64 = "Holding down the triggers with the Sparkster Rifle will gradually increase firing potency upon release. Fortunately, there is no potential here for the weapon to blow up if you keep them held long enough, only badly designed human weaponry could be so haphazard."; +SWWM_INTERTIP64 = "Holding down the triggers with the Sparkster Rifle will gradually increase firing potency upon release, up to a certain limit."; SWWM_INTERTIP65 = "The Sparkster Rifle can fire both ammo types simultaneously, blending them together into a deadly combo projectile."; -SWWM_INTERTIP66 = "The Mortal Rifle (\"Mister\" for short) was devised as a potential \"standard\" battle rifle for the X'Animen Coalition that \"even the Xekkians would consider powerful\". It seems to have succeeded in that aspect, considering how truly mortal it is, although it is not widely adopted... Yet."; -SWWM_INTERTIP67 = "Being primarily a coilgun, the Ray-Khom is almost entirely silent and perfect for stealthy kills. Do note though that the impact of the projectile itself will be very loud."; +SWWM_INTERTIP66 = "Being primarily a coilgun, the Ray-Khom is almost entirely silent and perfect for stealthy kills. Do note though that the impact of the projectile itself will be very loud."; +SWWM_INTERTIP67 = "The Mortal Rifle (\"Mister\" for short) was devised as a potential \"standard\" battle rifle for the X'Animen Coalition that \"even the Xekkians would consider powerful\". It seems to have succeeded in that aspect."; SWWM_INTERTIP68 = "The Rafan-Kos is truly an Ultimate Weapon, as its name implies."; SWWM_INTERTIP69 = "Nice."; SWWM_INTERTIP70 = "Did you know that even with seat belts people die all the time in car crashes? I thought that was interesting."; -SWWM_INTERTIP71 = "\"On the internet nobody can hear you being subtle.\" — Linus Torvalds"; +SWWM_INTERTIP71 = "\"On the internet nobody can hear you being subtle.\"\n — Linus Torvalds"; SWWM_INTERTIP72 = "There are approximately 9.3 billion demons bred solely for warfare in Hell. That is eight hundred and seventy six thousand times the monster count of nuts.wad, and that's terrible."; SWWM_INTERTIP73 = "People die if they are killed. But legends never die, they get back up and pwn you."; -SWWM_INTERTIP74 = "\"TREEEEEEEEEES!\" — Marty"; +SWWM_INTERTIP74 = "This tip intentionally left blank."; SWWM_INTERTIP75 = "Kobolds are small little creechers that go yip."; SWWM_INTERTIP76 = "I showed you my intermission tip pls respond."; SWWM_INTERTIP77 = "AAA gaming is rotten to the core, riddled with corporate torture of honest workers. Support small developers whenever you can."; SWWM_INTERTIP78 = "Xenia > Tux\n\nBring back the cool Linux fox girl. Penguins suck."; SWWM_INTERTIP79 = "Punching fascists is perfectly reasonable."; SWWM_INTERTIP80 = "Ceci n'est pas un conseil."; -SWWM_INTERTIP81 = "Age only affects appearance, and has no bearing on ability. Gender has no bearing on ability. Everyone has imperfections, prejudice births malcontents, become a dark spirit.\nTime for crab."; -SWWM_INTERTIP82 = "\"IF THE ZOO BANS ME FOR HOLLERING AT THE ANIMALS I WILL FACE GOD AND WALK BACKWARDS INTO HELL\" — dril"; -SWWM_INTERTIP83 = "This is truly some weird weapons mod for GZDoom."; -SWWM_INTERTIP84 = "\"In its vastness, the universe is no more than a mere grain of sand when compared to the limitless bounds of one's imagination.\" — Zanaveth Nekuraku III"; +SWWM_INTERTIP81 = "If the Earth was truly flat, a cat would have already pushed everything off the edge."; +SWWM_INTERTIP82 = "\"IF THE ZOO BANS ME FOR HOLLERING AT THE ANIMALS I WILL FACE GOD AND WALK BACKWARDS INTO HELL\"\n — dril"; +SWWM_INTERTIP83 = "This is truly some weird weapons mod."; +SWWM_INTERTIP84 = "\"In its vastness, the universe is no more than a mere grain of sand when compared to the limitless bounds of one's imagination.\"\n — Zanaveth Nekuraku III"; SWWM_INTERTIP85 = "You can shuffle the intermission art with Zoom, and these tips with Reload. Holding Altfire will hide the UI so you can see the art in full."; -SWWM_INTERTIP86 = "Add minced garlic, white pepper and basil to your tomato sauce, goes really well with pasta, you can thank me later."; -SWWM_INTERTIP87 = "This mod is compatible with H-Doom. No, seriously."; +SWWM_INTERTIP86 = "Add cumin and sweet paprika to marinara sauce, it'll really enhance the flavor, you can thank me later."; +SWWM_INTERTIP87 = "This is a tip."; SWWM_INTERTIP88 = "Some demons aren't actually evil. They'd rather just have a quiet life and enjoy a tasty hoagie every now and then."; SWWM_INTERTIP89 = "Saya's design for the Demolitionist was inspired by Raidemin, the main character of a famous Nukuri anime."; SWWM_INTERTIP90 = "As Nekuronbot AIs actually have a soul, they are capable of using magic. Saya taught Demo-chan the \"Blow Kiss\" spell just because she thought it'd be cute."; -SWWM_INTERTIP91 = "There is nothing wrong with being horny on main."; +SWWM_INTERTIP91 = "There is no tip."; SWWM_INTERTIP92 = "The existence of an insect called \"mosquito\" implies that of a much larger and dangerous threat:\n\n\"EL MOSCO\""; SWWM_INTERTIP93 = "Do not trust anyone named Icarus or Dime with handling explosives."; SWWM_INTERTIP94 = "This mod makes slaughterwads more bearable, but don't expect it to be a walk in the park."; -SWWM_INTERTIP95 = "Without love, it cannot be seen."; +SWWM_INTERTIP95 = "\"Without love, it cannot be seen.\"\n — Sankara proverb"; SWWM_INTERTIP96 = "Bunnies are soft."; SWWM_INTERTIP97 = "Staying hydrated is important."; SWWM_INTERTIP98 = "Some of the tips are actually filler, including this one."; SWWM_INTERTIP99 = "There are no Tim Allen references in this mod."; -SWWM_INTERTIP100 = "Marisa's personal pizza recipe: tomato sauce and cheese base, turkey slices, caramelized onion, green olives, minced tuna and top it all off with grated cheese. Alternatively, if you feel tuna makes it too dry, you can replace it with cod. The result will be a greasy mess, but a tasty mess."; -SWWM_INTERTIP101 = "Taiwan is an independent country. This is a fact."; +SWWM_INTERTIP100 = "Marisa's personal pizza recipe: tomato sauce and cheese base, turkey slices, caramelized onion, green olives, minced tuna and top it all off with grated cheese. It's delish!"; +SWWM_INTERTIP101 = "You can (more or less) play this mod on a Steam Deck."; SWWM_INTERTIP102 = "You can reduce stutter when switching weapons by enabling the Precache GL Textures option."; SWWM_INTERTIP103 = "Grilled cheese sandwiches are actually pretty tasty, as the author of this mod has personally tested."; SWWM_INTERTIP104 = "You can interact with collectible items from the Keychain tab of your Demolitionist Menu. You know, just in case you feel like playing around with them."; SWWM_INTERTIP105 = "Moths like lamps."; SWWM_INTERTIP106 = "No, covering yourself in oil won't allow you to fly when it rains."; -SWWM_INTERTIP107 = "Lead balls can deal random crits. Please don't hurt me, TF2 players."; -SWWM_INTERTIP108 = "This mod may contain horny, in small amounts."; -SWWM_INTERTIP109 = "Did you know the Hellblazer can show its magazine state when placed in the world? It's not really a very important thing, but I'm proud of my obsessive attention to detail."; +SWWM_INTERTIP107 = "\"I didn't know they put Shakespeare in comic books.\"\n — Demo Miyamoto"; +SWWM_INTERTIP108 = "This mod contains shiny metal butts."; +SWWM_INTERTIP109 = "The Hellblazer's missiles don't just deal direct blast damage, but also release an expanding wave of scorching heat."; SWWM_INTERTIP110 = "If you didn't know already, the mod can also be used with Heretic and Hexen. New things will be unlocked in each of them, as the overarching story of the mod progresses."; SWWM_INTERTIP111 = "Ironic shitposting is still shitposting."; SWWM_INTERTIP112 = "There are no buses in Gensokyo."; @@ -1029,7 +1220,7 @@ SWWM_INTERTIP115 = "There was a tip here, but it's gone now."; SWWM_INTERTIP116 = "Over thirteen billion devices run Java. It is already too late, we're all doomed."; SWWM_INTERTIP117 = "Food tastes best when you make it yourself."; SWWM_INTERTIP118 = "This tip mesage contains a typo."; -SWWM_INTERTIP119 = "If enemies are getting in your way while you're admiring the shiny new key you just found, you can punch them with your free hand."; +SWWM_INTERTIP119 = "Keyhunts bothering you? Get yourself a Wallbuster or a Combat Hammer and start tearing down those pesky locked doors."; SWWM_INTERTIP120 = "I find that if you just talk, your mouth comes up with stuff."; SWWM_INTERTIP121 = "Saya claims to enjoy black coffee, but she secretly adds sugar to it when no one's looking."; SWWM_INTERTIP122 = "From personal experience, Saya believes that there isn't a single arms manufacturer in the world who is straight."; @@ -1039,11 +1230,11 @@ SWWM_INTERTIP125 = "Saya knows how to swear in over 10 languages, most of them n SWWM_INTERTIP126 = "Saya personally decided to give the Demolitionist chassis a nicely sculpted curvy posterior as an excuse to make \"robutt\" puns."; SWWM_INTERTIP127 = "Saya's posture has baffled countless specialists, who wonder how it is even possible to bend and twist in the ways she does without developing back problems."; SWWM_INTERTIP128 = "Saya's general way of befriending aliens is to offer them pizza and challenge them to beat Dark Souls. It usually works."; -SWWM_INTERTIP129 = "Bunnyhopping can let you reach ludicrous speeds (thought not enough to go to plaid, unfortunately)."; +SWWM_INTERTIP129 = "Bunnyhopping can let you reach ludicrous speeds (though not enough to go to plaid, unfortunately)."; SWWM_INTERTIP130 = "The Ragekit's speed boost may make you violently bump against everything as you run around. This might become troublesome in enclosed spaces."; SWWM_INTERTIP131 = "In Heretic and Hexen, an item known as the Safety Tether may appear. If by any chance you get stuck in some seemingly inescapable trap, this will be your trump card."; SWWM_INTERTIP132 = "The Devastation Sigil is rather unstable, but provides a much higher boost of damage than the Ragekit, for ALL damage you may deal, including to yourself. Yeah, quite a dangerous little toy, that one."; -SWWM_INTERTIP133 = "The Divine Sprite can boost your health to absurd levels, but its effects fade quickly after a while. It is the most potent healing item you have in hand, but do keep in mind it has to be activated manually. Unlike most others, it won't come to save your ass by itself."; +SWWM_INTERTIP133 = "The Divine Sprite can boost your health to absurd levels, but its effects fade quickly after a while. It's the most potent healing item available, but keep in mind it has to be activated manually."; SWWM_INTERTIP134 = "The Demolitionist is not alone in their mission. Many more heroes have been known to be fighting out there as well."; SWWM_INTERTIP135 = "Demo-chan has a crush on a certain videogame robot who also kills demons in style."; SWWM_INTERTIP136 = "Generally, your enemies are stupid enough to run into your line of fire. If they were smarter, they wouldn't even try to fight you."; @@ -1051,7 +1242,7 @@ SWWM_INTERTIP137 = "Powerups exist to be used, so don't be afraid of \"wasting\" SWWM_INTERTIP138 = "The Demons avoided invading Australia for some reason. Maybe the climate there is worse than in Hell."; SWWM_INTERTIP139 = "If you feel the game is throwing way too much stuff at you, you can make some quick cash selling excess items."; SWWM_INTERTIP140 = "The Demolitionist's chassis carries a faint lime scent."; -SWWM_INTERTIP141 = "\"In the future, everything is Chrome.\"\n\nNever has a line from a children's cartoon rung more true after the inevitable rise of the web-app supremacy."; +SWWM_INTERTIP141 = "\"Everything is chrome in the future.\"\n\nNever has a line from a children's cartoon rung more true after the inevitable rise of the web-app supremacy."; SWWM_INTERTIP142 = "This mod is in constant development. Remember to report any bugs you may find."; SWWM_INTERTIP143 = "If you don't know how to use an item or weapon, remember that you can check the Demolitionist Menu at any time to look up information on it once you pick it up for the first time."; SWWM_INTERTIP144 = "Remember to stay hydrated."; @@ -1061,237 +1252,306 @@ SWWM_INTERTIP147 = "Help! I am trapped in a tip factory!"; SWWM_INTERTIP148 = "The Devastation Sigil and the Ragekit can actually be combined. You know, if you want to kill Cyberdemons with a single punch. Really makes you feel like a certain caped bald man."; SWWM_INTERTIP149 = "Always take breaks during long play sessions. You'll play better and bear less stress."; SWWM_INTERTIP150 = "This is the 150th tip. I can't believe I've written so many of them."; -// intermission fanart -SWWM_FANART = "Art: "; -SWWM_NFANART = "27"; -SWWM_FANART1 = "S20TBL.jpg;Substance20 (@S20_TBL)"; -SWWM_FANART2 = "CaptainJ.png;Captain J (@Jho7835)"; -SWWM_FANART3 = "RedeadITA.png;Redead-ITA"; -SWWM_FANART4 = "Shivers.png;Sgt. Shivers (@Sgt_Shivers_)"; -SWWM_FANART5 = "Shivers2.png;Sgt. Shivers (@Sgt_Shivers_)"; -SWWM_FANART6 = "Endie.jpg;Moa Dixøn / Endie (@MoaDixon)"; -SWWM_FANART7 = "CaptainJ2.png;Captain J (@Jho7835)"; -SWWM_FANART8 = "Marisa.jpg"; -SWWM_FANART9 = "Marisa2.jpg"; -SWWM_FANART10 = "Marisa3.jpg"; -SWWM_FANART11 = "Marisa4.jpg"; -SWWM_FANART12 = "Marisa5.jpg"; -SWWM_FANART13 = "Marisa6.jpg"; -SWWM_FANART14 = "Marisa7.jpg"; -SWWM_FANART15 = "Marisa8.jpg"; -SWWM_FANART16 = "Marisa9.jpg"; -SWWM_FANART17 = "Marisa10.jpg"; -SWWM_FANART18 = "Marisa11.jpg"; -SWWM_FANART19 = "Marisa12.jpg"; -SWWM_FANART20 = "Marisa13.jpg"; -SWWM_FANART21 = "Marisa14.jpg"; -SWWM_FANART22 = "Monsoon.jpg;Monsoon-Soft (@MonsoonSoft)"; -SWWM_FANART23 = "Monsoon2.jpg;Monsoon-Soft (@MonsoonSoft)"; -SWWM_FANART24 = "Monsoon3.png;Monsoon-Soft (@MonsoonSoft)"; -SWWM_FANART25 = "Monsoon4.png;Monsoon-Soft (@MonsoonSoft)"; -SWWM_FANART26 = "Marisa15.jpg"; -SWWM_FANART27 = "Marisa16.jpg"; +SWWM_INTERTIP151 = "You are not immune to propaganda."; +SWWM_INTERTIP152 = "It is advisable to not attempt to fit a square peg in a round hole. That said, every hole looks peggable to some people."; +SWWM_INTERTIP153 = "When all you have is a gun, every problem looks shootable. When everyone has a gun..."; +SWWM_INTERTIP154 = "There's no way anyone actually knows for real how money works. It's more likely that everyone has been pretending to for thousands of years."; +SWWM_INTERTIP155 = "You should probably clean up the rich very thoroughly before you eat them. I hear they're full of shit."; +SWWM_INTERTIP156 = "Gay is good."; +SWWM_INTERTIP157 = "Every megacorp eventually grows to cause some kind of world-threatening disaster, this has been proven time and time again."; +SWWM_INTERTIP158 = "A small number of these tips qualify as \"rent-lowering gunshots\". They've been surprisingly effective."; +SWWM_INTERTIP159 = "Don't let others silence you. Call out bigotry, as loudly as you can. If you don't speak out, you're giving them power."; +SWWM_INTERTIP160 = "I can't believe they're putting politics in our videogames! The nerve of these people!"; +SWWM_INTERTIP161 = "If you read this then you're dumb."; +SWWM_INTERTIP162 = "See those counters in the center of the screen over there? Some people make a big deal out of getting the kills and secrets to 100%, but never the items. What's up with that?"; +SWWM_INTERTIP163 = "Skill levels exist for a reason. If you think only one specific skill is valid, I cordially invite you to ingest an entire porcupine."; +SWWM_INTERTIP164 = "Not everything made of warm is for sits."; +SWWM_INTERTIP165 = "Be wary of people posting YouTube links with the id \"dQw4w9WgXcQ\"."; +SWWM_INTERTIP166 = "\"When you can't think straight, do you think gay?\"\n — Demo Miyamoto"; +SWWM_INTERTIP167 = "This mod is 100% free from generative AI usage or AI-assisted programming."; +SWWM_INTERTIP168 = "You shouldn't take some of these tips too seriously."; +SWWM_INTERTIP169 = "This mod won't mock you for cheating. If a map gives you shit, it's justified."; +SWWM_INTERTIP170 = "Those little tubes on the sides of the Demolitionist's head are smell receptors, by the way."; +SWWM_INTERTIP171 = "Unfortunately, space has long since been corrupted by capitalism. You can thank the amazing UAC for it."; +SWWM_INTERTIP172 = "Look where we're standing. Just when we thought the future couldn't get worse... It did get worse."; +SWWM_INTERTIP173 = "You ever wondered why is it that when things go to shit, it's always the working class that has to fix everything?"; +SWWM_INTERTIP174 = "\"Even in the 22nd century, some things never change. The internet is still full of porn, and the latest Sony console still has no games.\"\n — Saya Miyamoto"; +SWWM_INTERTIP175 = "You will always have the right to tell haters to eat your ass."; +SWWM_INTERTIP176 = "You don't need the latest fancy technologies to make a game worth playing."; +SWWM_INTERTIP177 = "Small breasts are a status symbol."; +SWWM_INTERTIP178 = "Short people have many tactical advantages."; +SWWM_INTERTIP179 = "Due to \"undisclosed circumstances\", Saya has been deemed untouchable by the Yakuza. They're apparently afraid of pissing off her mom."; +SWWM_INTERTIP180 = "Are you tired of death exits? Then you are in luck, for this mod simply doesn't care one bit about them."; +SWWM_INTERTIP181 = "Unlike the rapidly thrown quick grenades, the Explodium Gun's altfire will bounce on walls, allowing you to hit targets around corners."; +SWWM_INTERTIP182 = "The Sheen HMG sets the air on fire along each bullet's path, just from the sheer pressure of the cartridge used."; +SWWM_INTERTIP183 = "The rare golden shells allow you to cause extreme destruction in a large radius. Just be careful not to stand too close."; +SWWM_INTERTIP184 = "\"Life sometimes truly feels like a videogame.\"\n — Reubens C. Karnanaiahmani"; +SWWM_INTERTIP185 = "Once you're set ablaze by the Quadravol, the quickest solution is to shake those flames off. Shame that your enemies aren't smart enough to know that."; +SWWM_INTERTIP186 = "Somehow, the Quadravol can be used underwater. One has to wonder what those fireballs are made of."; +SWWM_INTERTIP187 = "The Ray-Khom's alternate fire is lethal in contact with water. Do apply some common sense with this information."; +SWWM_INTERTIP188 = "The Rafan-Kos can prepare a delicious cyberdemon roast in less than a second."; +SWWM_INTERTIP189 = "The Mortal Rifle allegedly uses \"mutating ammunition\", whatever the hell that's supposed to mean."; +SWWM_INTERTIP190 = "Demons tend to be very competitive, so friendly fire can easily turn them against each other."; +SWWM_INTERTIP191 = "The Wallbuster takes a while to fully load up, but once the deed's done, you've got a much faster firing shotgun in your hands."; +SWWM_INTERTIP192 = "The Demolitionist can directly interface with the Hellblazer to mark targets for seeking. This even works on grenades."; +SWWM_INTERTIP193 = "The Quadravol can be held with one hand. This has no tactical advantage, but you can do the cool spin and that's all that matters."; +SWWM_INTERTIP194 = "Xekkian weapons are very big, but so are the people who use them."; +SWWM_INTERTIP195 = "A legendary weapon known as the K-79D was going to be featured, but it was unfortunately erased from history. It's still in the mod, technically."; +SWWM_INTERTIP196 = "Some weapons are so deadly they even hurt the framerate. I fully take the blame for that one, it's just that I like making fancy explosions."; +SWWM_INTERTIP197 = "Homing projectiles will switch targets when deflected. Finally, you can take your revenge on those nasty skeleton boys."; +SWWM_INTERTIP198 = "You can disable pausing while the Demolitionist Menu is open. You'd be surprised how much this changes the whole experience. It's very... \"Souls-like\"."; +SWWM_INTERTIP199 = "Brutal Doom is dated as all hell. You people need to try playing other mods."; +SWWM_INTERTIP200 = "There are other Demolitionists, but Demo-chan is the very first."; +SWWM_INTERTIP201 = "The Combat Hammer's spin attack is almost impossible to control, but against an ambush, it can be devastating."; +SWWM_INTERTIP202 = "Holding the Use key for about a second will start to suck in nearby item drops. Sometimes one can't be bothered to pick them all up manually in the aftermath of a big fight."; +SWWM_INTERTIP203 = "The Quadravol's built-in display uses Xekkas numerals, but fortunately you're smart enough to figure them out, right?"; +SWWM_INTERTIP204 = "Do not be afraid to experiment with different play styles. Mix and match your weaponry to your heart's content. Figuring things out is part of the fun."; +SWWM_INTERTIP205 = "The Sheen HMG features such intense recoil that given enough firing speed, it could be used to glide around when aiming straight down."; +SWWM_INTERTIP206 = "Rocket jumping with the Quadravol is perfectly safe. You can trust me on this, I am a helpful tip after all."; +SWWM_INTERTIP207 = "The Sheen HMG's three speed options allow for optimal balancing between ammo conservation and sheer damage output."; +SWWM_INTERTIP208 = "\"Faster and farther than a plague only hatred can extend.\"\n — Nukurines Mei Mess"; +SWWM_INTERTIP209 = "This mod requires hardware rendering. If you've come this far without realizing that, you have a problem."; +SWWM_INTERTIP210 = "\"Ian Kelliher is like the Elon Musk of his generation, and I automatically hate him for that.\"\n — Saya Miyamoto"; +// intermission renders +SWWM_NRENDER = "17"; +SWWM_RENDER1 = "ActionShot.jpg"; +SWWM_RENDER2 = "Booty.jpg"; +SWWM_RENDER3 = "Ynykron.jpg"; +SWWM_RENDER4 = "SayaBean.jpg"; +SWWM_RENDER5 = "SayaGaming.jpg"; +SWWM_RENDER6 = "CandyGun.jpg"; +SWWM_RENDER7 = "InAHurry.jpg"; +SWWM_RENDER8 = "E2M8.jpg"; +SWWM_RENDER9 = "BTSXE1.jpg"; +SWWM_RENDER10 = "FroggyGang.jpg"; +SWWM_RENDER11 = "Nutso.jpg"; +SWWM_RENDER12 = "BedTime.jpg"; +SWWM_RENDER13 = "Costanza.jpg"; +SWWM_RENDER14 = "Cube.jpg"; +SWWM_RENDER15 = "MisaYnykron.jpg"; +SWWM_RENDER16 = "Sunder.jpg"; +SWWM_RENDER17 = "Sheen.jpg"; // achievements -SWWM_ACHIEVEMENT_ACID_TAG = "Fizzy Goodness"; -SWWM_ACHIEVEMENT_ACID_TXT = "Melt %d enemies with Telebrium Flechettes"; SWWM_ACHIEVEMENT_ALLCOLL_TAG = "The Full Set"; SWWM_ACHIEVEMENT_ALLCOLL_TXT = "Obtain all collectibles in a single save"; SWWM_ACHIEVEMENT_ALLITEMS_TAG = "Collector"; -SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtain 100%% items in %d maps"; +SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtain 100%% items in %s maps"; SWWM_ACHIEVEMENT_ALLKILLS_TAG = "Pest Control"; -SWWM_ACHIEVEMENT_ALLKILLS_TXT = "Obtain 100%% kills in %d maps"; +SWWM_ACHIEVEMENT_ALLKILLS_TXT = "Obtain 100%% kills in %s maps"; SWWM_ACHIEVEMENT_ALLSECRETS_TAG = "Premium Detective"; -SWWM_ACHIEVEMENT_ALLSECRETS_TXT = "Obtain 100%% secrets in %d maps"; +SWWM_ACHIEVEMENT_ALLSECRETS_TXT = "Obtain 100%% secrets in %s maps"; SWWM_ACHIEVEMENT_ANOM_TAG = "Anomalous"; -SWWM_ACHIEVEMENT_ANOM_TXT = "Use %d Mykradvo Artifacts"; +SWWM_ACHIEVEMENT_ANOM_TXT = "Use %s Mykradvo Artifacts"; SWWM_ACHIEVEMENT_ANONE_TAG = "Completely Necessary Use of Force"; SWWM_ACHIEVEMENT_ANONE_TXT = "Use the Mykradvo Artifact against a single non-boss enemy"; +SWWM_ACHIEVEMENT_ARA_TAG = "Ara Ara"; +SWWM_ACHIEVEMENT_ARA_TXT = "Have the White Lady kill a total of %s enemies"; +SWWM_ACHIEVEMENT_ARSE_TAG = "Arsenal of Olden Times"; +SWWM_ACHIEVEMENT_ARSE_TXT = "Find all classic UnSX weapons"; SWWM_ACHIEVEMENT_BALLS_TAG = "Slam your Balls"; -SWWM_ACHIEVEMENT_BALLS_TXT = "Land %d Lead Ball crits"; +SWWM_ACHIEVEMENT_BALLS_TXT = "Land %s Lead Ball crits"; +SWWM_ACHIEVEMENT_BALLSELF_TAG = "Dangerous Ball Action"; +SWWM_ACHIEVEMENT_BALLSELF_TXT = "Land a Lead Ball crit on yourself"; SWWM_ACHIEVEMENT_BARREL_TAG = "Environmental Disaster"; -SWWM_ACHIEVEMENT_BARREL_TXT = "Destroy %d barrels"; +SWWM_ACHIEVEMENT_BARREL_TXT = "Destroy %s barrels"; SWWM_ACHIEVEMENT_BARRIER_TAG = "Green Filter"; -SWWM_ACHIEVEMENT_BARRIER_TXT = "Use %d Elemental Barriers"; +SWWM_ACHIEVEMENT_BARRIER_TXT = "Use %s Elemental Barriers"; SWWM_ACHIEVEMENT_BASEBALL_TAG = "Oh That's a Baseball!"; SWWM_ACHIEVEMENT_BASEBALL_TXT = "Perfect parry a Lost Soul with the Silver Bullet"; SWWM_ACHIEVEMENT_BLAZE_TAG = "Blazing It"; SWWM_ACHIEVEMENT_BLAZE_TXT = "Beat a map in 4 minutes and 20 seconds"; SWWM_ACHIEVEMENT_BONK_TAG = "Shock Resistant"; -SWWM_ACHIEVEMENT_BONK_TXT = "Bump into stuff %d times"; +SWWM_ACHIEVEMENT_BONK_TXT = "Bump into stuff %s times"; SWWM_ACHIEVEMENT_BOSSDASH_TAG = "Headstrong"; -SWWM_ACHIEVEMENT_BOSSDASH_TXT = "Kill %d bosses by dashing into them"; +SWWM_ACHIEVEMENT_BOSSDASH_TXT = "Kill %s bosses by dashing into them"; SWWM_ACHIEVEMENT_BRAKE_TAG = "No Brakes"; -SWWM_ACHIEVEMENT_BRAKE_TXT = "Consume your full fuel supply in a single dash %d times"; +SWWM_ACHIEVEMENT_BRAKE_TXT = "Consume your full fuel supply in a single dash %s times"; SWWM_ACHIEVEMENT_BUNE_TAG = "Legendary Lagomorph"; -SWWM_ACHIEVEMENT_BUNE_TXT = "Bunnyhop %d times"; +SWWM_ACHIEVEMENT_BUNE_TXT = "Bunnyhop %s times"; SWWM_ACHIEVEMENT_BUSTIN_TAG = "Makes me Feel Good"; -SWWM_ACHIEVEMENT_BUSTIN_TXT = "Bust %d walls"; +SWWM_ACHIEVEMENT_BUSTIN_TXT = "Bust %s walls"; SWWM_ACHIEVEMENT_BUTTS_TAG = "Let's get to Bashing Butts"; -SWWM_ACHIEVEMENT_BUTTS_TXT = "Kill %d enemies by dashing backwards"; +SWWM_ACHIEVEMENT_BUTTS_TXT = "Kill %s enemies by dashing backwards"; SWWM_ACHIEVEMENT_CANDY_TAG = "Piece of Candy"; -SWWM_ACHIEVEMENT_CANDY_TXT = "Collect %d nuggets"; +SWWM_ACHIEVEMENT_CANDY_TXT = "Collect %s nuggets"; SWWM_ACHIEVEMENT_CLIFFYB_TAG = "Errand Boy Bullshit"; SWWM_ACHIEVEMENT_CLIFFYB_TXT = "Finish a map without collecting any keys"; SWWM_ACHIEVEMENT_CLONK_TAG = "CLONK"; SWWM_ACHIEVEMENT_CLONK_TXT = "Kill a boss with a Lead Ball crit"; +SWWM_ACHIEVEMENT_COMBO_TAG = "The Ultimate Combo"; +SWWM_ACHIEVEMENT_COMBO_TXT = "Hit a Ynykron singularity with a Ynykron beam"; SWWM_ACHIEVEMENT_CONGA_TAG = "Conga Line of Death"; -SWWM_ACHIEVEMENT_CONGA_TXT = "Kill %d enemies with a single XSB round"; +SWWM_ACHIEVEMENT_CONGA_TXT = "Kill %s enemies with a single XSB round"; SWWM_ACHIEVEMENT_CRUSH_TAG = "Under Pressure"; SWWM_ACHIEVEMENT_CRUSH_TXT = "Break a crusher"; SWWM_ACHIEVEMENT_CYBULLY_TAG = "Cyberbullying"; SWWM_ACHIEVEMENT_CYBULLY_TXT = "Kill a Cyberdemon with its own rocket"; -SWWM_ACHIEVEMENT_CUM_TAG = "Blasting Ropes"; -SWWM_ACHIEVEMENT_CUM_TXT = "Melt a grand total of %d enemies with the Rafan-Kos"; SWWM_ACHIEVEMENT_DAB_TAG = "HAHA DAB"; -SWWM_ACHIEVEMENT_DAB_TXT = "Gib %d enemies with the Itamex Hammer"; +SWWM_ACHIEVEMENT_DAB_TXT = "Gib %s enemies with the Itamex Hammer"; SWWM_ACHIEVEMENT_DAKKA_TAG = "Dakka"; -SWWM_ACHIEVEMENT_DAKKA_TXT = "Hold altfire with the Sheen HMG for one minute straight"; +SWWM_ACHIEVEMENT_DAKKA_TXT = "Fire the Sheen HMG at 700RPM for %s seconds straight"; +SWWM_ACHIEVEMENT_DBSUCC_TAG = "Double Succ"; +SWWM_ACHIEVEMENT_DBSUCC_TXT = "Merge two Ynykron singularities"; SWWM_ACHIEVEMENT_DEADEYE_TAG = "Deadeye"; -SWWM_ACHIEVEMENT_DEADEYE_TXT = "Land %d consecutive Explodium Gun shots without missing"; +SWWM_ACHIEVEMENT_DEADEYE_TXT = "Land %s consecutive Explodium Gun shots without missing"; SWWM_ACHIEVEMENT_DEVA_TAG = "Deva Station"; -SWWM_ACHIEVEMENT_DEVA_TXT = "Use %d Devastation Sigils"; -SWWM_ACHIEVEMENT_DIME_TAG = "Icarus Dimes"; +SWWM_ACHIEVEMENT_DEVA_TXT = "Use %s Devastation Sigils"; +SWWM_ACHIEVEMENT_DIME_TAG = "Good at Doom"; SWWM_ACHIEVEMENT_DIME_TXT = "Blow yourself up with your own explosives"; SWWM_ACHIEVEMENT_DIVINE_TAG = "Divine Delight"; -SWWM_ACHIEVEMENT_DIVINE_TXT = "Use %d Divine Sprites"; +SWWM_ACHIEVEMENT_DIVINE_TXT = "Use %s Divine Sprites"; SWWM_ACHIEVEMENT_DOODLE_TAG = "Graffiti Master"; -SWWM_ACHIEVEMENT_DOODLE_TXT = "Doodle mustaches on %d demon faces"; +SWWM_ACHIEVEMENT_DOODLE_TXT = "Doodle mustaches on %s demon faces"; +SWWM_ACHIEVEMENT_ENGINE_TAG = "Oops I Pressed It"; +SWWM_ACHIEVEMENT_ENGINE_TXT = "Turn the engine off"; SWWM_ACHIEVEMENT_EVERYTHING_TAG = "The Demolitionist"; SWWM_ACHIEVEMENT_EVERYTHING_TXT = "Unlock all achievements"; SWWM_ACHIEVEMENT_EZKILL_TAG = "Misa's Pride"; -SWWM_ACHIEVEMENT_EZKILL_TXT = "Kill %d enemies with a single Ynykron Artifact shot (excluding altfire)"; +SWWM_ACHIEVEMENT_EZKILL_TXT = "Kill %s enemies with a single Ynykron Artifact shot (excluding altfire)"; SWWM_ACHIEVEMENT_FLIGHT_TAG = "Blasting Off Again"; -SWWM_ACHIEVEMENT_FLIGHT_TXT = "Send an enemy flying over %d map units away"; +SWWM_ACHIEVEMENT_FLIGHT_TXT = "Send an enemy flying over %s map units away"; +SWWM_ACHIEVEMENT_FLUFFY_TAG = "Fluffy Moth"; +SWWM_ACHIEVEMENT_FLUFFY_TXT = "Pet the White Lady %s times"; SWWM_ACHIEVEMENT_FRIEND_TAG = "Do You Like Caco?"; $ifgame(heretic) SWWM_ACHIEVEMENT_FRIEND_TAG = "Друг"; $ifgame(hexen) SWWM_ACHIEVEMENT_FRIEND_TAG = "Double Dog"; -SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Cacodemons with headpats"; -$ifgame(heretic) SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Weredragons with headpats"; -$ifgame(hexen) SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Ettins with headpats"; +SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %s Cacodemons with headpats"; +$ifgame(heretic) SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %s Weredragons with headpats"; +$ifgame(hexen) SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %s Ettins with headpats"; SWWM_ACHIEVEMENT_FUEL_TAG = "Hydrogenated"; -SWWM_ACHIEVEMENT_FUEL_TXT = "Consume a total of %dL of fuel"; +SWWM_ACHIEVEMENT_FUEL_TXT = "Consume a total of %sL of fuel"; SWWM_ACHIEVEMENT_FULLER_TAG = "You Gained Brouzouf"; SWWM_ACHIEVEMENT_FULLER_TXT = "Unload an entire mag in fuller auto with the Puntzer Gamma without missing a single shot"; SWWM_ACHIEVEMENT_GCSANDWICH_TAG = "A Little Sandwich, as a Treat"; -SWWM_ACHIEVEMENT_GCSANDWICH_TXT = "Use %d Grilled Cheese Sandwiches"; +SWWM_ACHIEVEMENT_GCSANDWICH_TXT = "Use %s Grilled Cheese Sandwiches"; SWWM_ACHIEVEMENT_GEPGUN_TAG = "The Most Silent Takedown"; -SWWM_ACHIEVEMENT_GEPGUN_TXT = "Kill %d enemies with the Ray-Khom primary without alerting them"; +SWWM_ACHIEVEMENT_GEPGUN_TXT = "Kill %s enemies with the Ray-Khom primary without alerting them"; SWWM_ACHIEVEMENT_GHOST_TAG = "Cloak Engaged"; -SWWM_ACHIEVEMENT_GHOST_TXT = "Use %d Ghost Artifacts"; +SWWM_ACHIEVEMENT_GHOST_TXT = "Use %s Ghost Artifacts"; SWWM_ACHIEVEMENT_GIB_TAG = "Gibbitude"; -SWWM_ACHIEVEMENT_GIB_TXT = "Overkill %d enemies"; +SWWM_ACHIEVEMENT_GIB_TXT = "Overkill %s enemies"; SWWM_ACHIEVEMENT_GOLDEN_TAG = "Midas Massacre"; -SWWM_ACHIEVEMENT_GOLDEN_TXT = "Use %d golden shells"; +SWWM_ACHIEVEMENT_GOLDEN_TXT = "Use %s golden shells"; SWWM_ACHIEVEMENT_GRAVITY_TAG = "Decent Ascent"; -SWWM_ACHIEVEMENT_GRAVITY_TXT = "Use %d Gravity Suppressors"; +SWWM_ACHIEVEMENT_GRAVITY_TXT = "Use %s Gravity Suppressors"; SWWM_ACHIEVEMENT_GRENADE_TAG = "Kaboom"; -SWWM_ACHIEVEMENT_GRENADE_TXT = "Kill %d enemies with planted Explodium mags"; +SWWM_ACHIEVEMENT_GRENADE_TXT = "Kill %s enemies with planted Explodium mags"; SWWM_ACHIEVEMENT_HND_TAG = "High Noon"; -SWWM_ACHIEVEMENT_HND_TXT = "Land %d killing shots in a single Puntzer Beta reload"; +SWWM_ACHIEVEMENT_HND_TXT = "Land %s killing shots in a single Puntzer Beta reload"; SWWM_ACHIEVEMENT_HURRY_TAG = "In a Hurry"; SWWM_ACHIEVEMENT_HURRY_TXT = "Beat a map with 0 kills, items and secrets"; SWWM_ACHIEVEMENT_JUMP_TAG = "Verticality"; -SWWM_ACHIEVEMENT_JUMP_TXT = "Walljump %d times"; +SWWM_ACHIEVEMENT_JUMP_TXT = "Walljump %s times"; SWWM_ACHIEVEMENT_KANCHO_TAG = "Extreme Kancho"; SWWM_ACHIEVEMENT_KANCHO_TXT = "Break a stone spike"; SWWM_ACHIEVEMENT_KEEN_TAG = "Goodbye Franchise"; SWWM_ACHIEVEMENT_KEEN_TXT = "Rescue Commander Keen"; +SWWM_ACHIEVEMENT_KIRIN_TAG = "Power of Love"; +SWWM_ACHIEVEMENT_KIRIN_TXT = "Recover a total of %s health by kissing the Kirin Plush"; SWWM_ACHIEVEMENT_LEAD_TAG = "Lead Delivery"; -SWWM_ACHIEVEMENT_LEAD_TXT = "Hit an enemy dead-on with the Eviscerator secondary from over %d map units away"; +SWWM_ACHIEVEMENT_LEAD_TXT = "Hit an enemy dead-on with the Eviscerator secondary from over %s map units away"; SWWM_ACHIEVEMENT_LIGHTNING_TAG = "John Romero's Curse"; SWWM_ACHIEVEMENT_LIGHTNING_TXT = "Fry yourself by discharging an electric weapon in water"; SWWM_ACHIEVEMENT_LIGMA_TAG = "Who's Steve Jobs?"; SWWM_ACHIEVEMENT_LIGMA_TXT = "Kill an endgame boss with the Ynykron Artifact"; SWWM_ACHIEVEMENT_LOVE_TAG = "Lethal Love"; -SWWM_ACHIEVEMENT_LOVE_TXT = "Kill %d enemies with a blown kiss (not counting insta-kills)"; -SWWM_ACHIEVEMENT_MASHIRO_TAG = "Layers of White"; -SWWM_ACHIEVEMENT_MASHIRO_TXT = "Summon the White Lady"; +SWWM_ACHIEVEMENT_LOVE_TXT = "Kill %s enemies with a blown kiss (not counting insta-kills)"; +SWWM_ACHIEVEMENT_ANDIRA_TAG = "A Moth Contract"; +SWWM_ACHIEVEMENT_ANDIRA_TXT = "Summon the White Lady"; SWWM_ACHIEVEMENT_MATRYOSHKA_TAG = "Mishe Trickery"; SWWM_ACHIEVEMENT_MATRYOSHKA_TXT = "A Chancebox inside a Chancebox inside a Chancebox inside a Chancebox inside a..."; SWWM_ACHIEVEMENT_MBF_TAG = "You can Pet the Dog"; SWWM_ACHIEVEMENT_MBF_TXT = "Pet a dog"; SWWM_ACHIEVEMENT_MEGA_TAG = "Mass Massacre"; -SWWM_ACHIEVEMENT_MEGA_TXT = "Kill a grand total of %d enemies"; +SWWM_ACHIEVEMENT_MEGA_TXT = "Kill a grand total of %s enemies"; SWWM_ACHIEVEMENT_MOTH_TAG = "Mother"; -SWWM_ACHIEVEMENT_MOTH_TXT = "Gather %d moths"; +SWWM_ACHIEVEMENT_MOTH_TXT = "Gather %s moths"; SWWM_ACHIEVEMENT_NICE_TAG = "NICE"; SWWM_ACHIEVEMENT_NICE_TXT = "Finish a level with 69 health"; SWWM_ACHIEVEMENT_ONEGUY_TAG = "Fuck that Guy in Particular"; SWWM_ACHIEVEMENT_ONEGUY_TXT = "Use the Ynykron Artifact to kill a single non-boss enemy"; SWWM_ACHIEVEMENT_ONEHP_TAG = "...And a Dream"; -SWWM_ACHIEVEMENT_ONEHP_TXT = "Kill %d enemies while having only 1 HP"; +SWWM_ACHIEVEMENT_ONEHP_TXT = "Kill %s enemies while having only 1 HP"; SWWM_ACHIEVEMENT_ONESTANDING_TAG = "Where Did Everyone Go?"; SWWM_ACHIEVEMENT_ONESTANDING_TXT = "Finish a map with just one enemy left alive"; SWWM_ACHIEVEMENT_OOPSIE_TAG = "Big Oopsie"; SWWM_ACHIEVEMENT_OOPSIE_TXT = "Erase yourself with the Ynykron Artifact"; +SWWM_ACHIEVEMENT_PACHINKO_TAG = "Pachinko Code"; +SWWM_ACHIEVEMENT_PACHINKO_TXT = "Find the Secret Menu"; SWWM_ACHIEVEMENT_PARRY_TAG = "Parry King"; -SWWM_ACHIEVEMENT_PARRY_TXT = "Deflect %d projectiles"; +SWWM_ACHIEVEMENT_PARRY_TXT = "Deflect %s projectiles"; SWWM_ACHIEVEMENT_PAR_TAG = "Fast"; -SWWM_ACHIEVEMENT_PAR_TXT = "Beat the par time in %d maps"; +SWWM_ACHIEVEMENT_PAR_TXT = "Beat the par time in %s maps"; SWWM_ACHIEVEMENT_PEACE_TAG = "Pacifist"; SWWM_ACHIEVEMENT_PEACE_TXT = "Finish a map without dealing damage"; +SWWM_ACHIEVEMENT_PISS_TAG = "Super Laser Piss"; +SWWM_ACHIEVEMENT_PISS_TXT = "Melt a grand total of %s enemies with the Rafan-Kos"; SWWM_ACHIEVEMENT_PLASMA_TAG = "Blastin' Plasma"; -SWWM_ACHIEVEMENT_PLASMA_TXT = "Kill an enemy at full health with a Plasma Blaster charged shot %d times"; +SWWM_ACHIEVEMENT_PLASMA_TXT = "Kill an enemy at full health with a Plasma Blaster charged shot %s times"; SWWM_ACHIEVEMENT_PLUSH_TAG = "Lovestruck"; -SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya plush %d times in the same save"; -$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya or Kirin plushies %d times in the same save"; +SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya plush %s times in the same save"; +$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya or Kirin plushies %s times in the same save"; SWWM_ACHIEVEMENT_PUZZLE_TAG = "Even Kirin is Upset"; SWWM_ACHIEVEMENT_PUZZLE_TXT = "Solve all fractions of \"puzzles\" in the same save"; SWWM_ACHIEVEMENT_RAGE_TAG = "No Talk me Angy"; -SWWM_ACHIEVEMENT_RAGE_TXT = "Use %d Ragekits"; +SWWM_ACHIEVEMENT_RAGE_TXT = "Use %s Ragekits"; SWWM_ACHIEVEMENT_RAIL_TAG = "Railed Hard"; -SWWM_ACHIEVEMENT_RAIL_TXT = "Shoot through %d enemies with a single Mortal Rifle overpressure shot"; +SWWM_ACHIEVEMENT_RAIL_TXT = "Kill %s enemies with a single Mortal Rifle overpressure shot"; SWWM_ACHIEVEMENT_REFLECT_TAG = "Return to Sender"; -SWWM_ACHIEVEMENT_REFLECT_TXT = "Kill %d enemies with parried projectiles"; +SWWM_ACHIEVEMENT_REFLECT_TXT = "Kill %s enemies with parried projectiles"; SWWM_ACHIEVEMENT_REFRESH_TAG = "Stay Fresh"; -SWWM_ACHIEVEMENT_REFRESH_TXT = "Use %d Refreshers"; +SWWM_ACHIEVEMENT_REFRESH_TXT = "Use %s Refreshers"; SWWM_ACHIEVEMENT_ROAST_TAG = "Gravely Roast"; -SWWM_ACHIEVEMENT_ROAST_TXT = "Perform %d bayonet combos with the Quadravol"; -SWWM_ACHIEVEMENT_SALT_TAG = "Maximum Oversalt"; -SWWM_ACHIEVEMENT_SALT_TXT = "Shoot 25 Saltshot rounds simultaneously"; +SWWM_ACHIEVEMENT_ROAST_TXT = "Perform %s bayonet combos with the Quadravol"; SWWM_ACHIEVEMENT_SANIC_TAG = "CHILLI DOGS"; -SWWM_ACHIEVEMENT_SANIC_TXT = "Reach a top speed of %d kph"; +SWWM_ACHIEVEMENT_SANIC_TXT = "Reach a top speed of %s kph"; SWWM_ACHIEVEMENT_SEKIRO_TAG = "Hesitation is Defeat"; SWWM_ACHIEVEMENT_SEKIRO_TXT = "Die and reboot two times in the same map"; +SWWM_ACHIEVEMENT_SENTRY_TAG = "Engineer's Best Friend"; +SWWM_ACHIEVEMENT_SENTRY_TXT = "Score %s kills using sentries"; SWWM_ACHIEVEMENT_SHAME_TAG = "Shameful"; SWWM_ACHIEVEMENT_SHAME_TXT = "Kill a boss solely by using the Deep Impact primary"; SWWM_ACHIEVEMENT_SHOCK_TAG = "Shockmaster"; -SWWM_ACHIEVEMENT_SHOCK_TXT = "Perform %d Biospark combos"; -SWWM_ACHIEVEMENT_SLAYER_TAG = "I am Become Death"; -SWWM_ACHIEVEMENT_SLAYER_TXT = "Kill %d enemies with a single Slayer Warhead"; -SWWM_ACHIEVEMENT_SLEMG_TAG = "The Sledge Method"; -SWWM_ACHIEVEMENT_SLEMG_TXT = "Activate %d switches by punching them"; +SWWM_ACHIEVEMENT_SHOCK_TXT = "Perform %s Biospark combos"; +SWWM_ACHIEVEMENT_SLEMG_TAG = "Percussive Maintenance"; +SWWM_ACHIEVEMENT_SLEMG_TXT = "Activate %s switches by punching them"; SWWM_ACHIEVEMENT_SNEAKY_TAG = "Sneaky Retreat"; -SWWM_ACHIEVEMENT_SNEAKY_TXT = "Use %d Safety Tethers"; +SWWM_ACHIEVEMENT_SNEAKY_TXT = "Use %s Safety Tethers"; SWWM_ACHIEVEMENT_SNEEZE_TAG = "Humiliator"; -SWWM_ACHIEVEMENT_SNEEZE_TXT = "Kill %d enemies with the Deep Impact primary fire"; +SWWM_ACHIEVEMENT_SNEEZE_TXT = "Kill %s enemies with the Deep Impact primary fire"; SWWM_ACHIEVEMENT_SPARK_TAG = "A Fine Sparking"; -SWWM_ACHIEVEMENT_SPARK_TXT = "Kill %d enemies at once with a Sparkster Rifle combo shot"; +SWWM_ACHIEVEMENT_SPARK_TXT = "Kill %s enemies at once with a Sparkster Rifle combo shot"; +SWWM_ACHIEVEMENT_SPEEN_TAG = "Say the Line, Vinny"; +SWWM_ACHIEVEMENT_SPEEN_TXT = "Spin attack with the Itamex Hammer for %s seconds"; SWWM_ACHIEVEMENT_STEP_TAG = "Steppy"; -SWWM_ACHIEVEMENT_STEP_TXT = "Stand on a single enemy's head for %d seconds"; +SWWM_ACHIEVEMENT_STEP_TXT = "Stand on a single enemy's head for %s seconds"; SWWM_ACHIEVEMENT_STOMP_TAG = "Italian Plumber Complex"; -SWWM_ACHIEVEMENT_STOMP_TXT = "Kill %d enemies by standing on them"; +SWWM_ACHIEVEMENT_STOMP_TXT = "Kill %s enemies by standing on them"; SWWM_ACHIEVEMENT_SUNNY_TAG = "Sunny D"; -SWWM_ACHIEVEMENT_SUNNY_TXT = "Use %d Invinciballs"; +SWWM_ACHIEVEMENT_SUNNY_TXT = "Use %s Invinciballs"; +SWWM_ACHIEVEMENT_TBD_TAG = "Total Ball Destruction"; +SWWM_ACHIEVEMENT_TBD_TXT = "Deploy %s Ballsy Bombs"; SWWM_ACHIEVEMENT_TELE_TAG = "A Soldier's Pastime"; SWWM_ACHIEVEMENT_TELE_TXT = "Teleport some bread (a sandwich works too)"; -SWWM_ACHIEVEMENT_TENDER_TAG = "Thorough Tenderizing"; -SWWM_ACHIEVEMENT_TENDER_TXT = "Kill %d enemies with the Pusher"; SWWM_ACHIEVEMENT_THICC_TAG = "The Ass was Fat"; -SWWM_ACHIEVEMENT_THICC_TXT = "Kill %d enemies by ground pounding"; +SWWM_ACHIEVEMENT_THICC_TXT = "Kill %s enemies by ground pounding"; SWWM_ACHIEVEMENT_THRUWALL_TAG = "Knock Knock"; -SWWM_ACHIEVEMENT_THRUWALL_TXT = "Kill %d enemies through walls with the Silver Bullet"; +SWWM_ACHIEVEMENT_THRUWALL_TXT = "Kill %s enemies through walls with the Silver Bullet"; SWWM_ACHIEVEMENT_TORNADO_TAG = "What the Fuck?"; SWWM_ACHIEVEMENT_TORNADO_TXT = "Punch a tornado???"; SWWM_ACHIEVEMENT_TRASH_TAG = "Taking out the Trash"; SWWM_ACHIEVEMENT_TRASH_TXT = "Kill all nazis in the Doom 2 secret maps"; SWWM_ACHIEVEMENT_TRAVEL_TAG = "The Longest Journey"; -SWWM_ACHIEVEMENT_TRAVEL_TXT = "Walk a total of %d kilometers"; +SWWM_ACHIEVEMENT_TRAVEL_TXT = "Walk a total of %s kilometers"; +SWWM_ACHIEVEMENT_TROGDOR_TAG = "Burnination"; +SWWM_ACHIEVEMENT_TROGDOR_TXT = "Kill %s enemies with a single Hellblazer drum"; SWWM_ACHIEVEMENT_UNTOUCHABLE_TAG = "Untouchable"; SWWM_ACHIEVEMENT_UNTOUCHABLE_TXT = "Finish a map without taking damage"; SWWM_ACHIEVEMENT_WANTDIE_TAG = "How Am I Still Alive?"; SWWM_ACHIEVEMENT_WANTDIE_TXT = "Fully clear a single map in the hardest difficulty (without dying)"; SWWM_ACHIEVEMENT_WAVE_TAG = "Sayonara, Scumbag"; SWWM_ACHIEVEMENT_WAVE_TXT = "Wave at a dying enemy"; +SWWM_ACHIEVEMENT_WORDS_TAG = "Words Words Words"; +SWWM_ACHIEVEMENT_WORDS_TXT = "Read %s library entries"; SWWM_ACHIEVEMENT_YEET_TAG = "YEET"; SWWM_ACHIEVEMENT_YEET_TXT = "Throw a Candygun right into the Icon of Sin's brains"; diff --git a/language.def_dlg b/language.def_dlg index d7afa1853..6a72600e4 100644 --- a/language.def_dlg +++ b/language.def_dlg @@ -11,6 +11,20 @@ SWWM_KIRINNAME = "\cxKirin Xanai\c-"; SWWM_KIRINSNAME = "\cxKirin\c-"; SWWM_ZNVNAME = "\chZanaveth Nekuraku III\c-"; SWWM_ZNVSNAME = "\chZanaveth\c-"; +SWWM_1XXNAME = "\ctNukritas 1xx\c-"; +SWWM_1XXSNAME = "\ct1xx\c-"; +SWWM_2XXNAME = "\ctNukritas 2xx\c-"; +SWWM_2XXSNAME = "\ct2xx\c-"; +SWWM_AXNAME = "\ciAkedas Aximal\c-"; +SWWM_AXSNAME = "\ciAximal\c-"; +SWWM_MISANAME = "\cyMisa Azadeku Unissix\c-"; +SWWM_MISASNAME = "\cyMisa\c-"; +SWWM_DEMONAME = "\cdDemo Miyamoto\c-"; +SWWM_DEMOSNAME = "\cdDemo\c-"; +SWWM_MEIDONAME = "\cvMeido Miyamoto\c-"; +SWWM_MEIDOSNAME = "\cvMeido\c-"; +SWWM_RIKANAME = "\chRika\c-"; +SWWM_RIKASNAME = "\chRika Isuzu\c-"; // E1M8 SWWM_SAYAPHOBOS1 = "I kinda forgot to mention this in the briefing but... There's a bit of an issue here, \cdDemo-chan\c-."; SWWM_SAYAPHOBOS2 = "The gate to Deimos is guarded by two nasty pieces of work, and you're gonna have to get rid of them."; @@ -36,6 +50,11 @@ SWWM_CYTHOSIGIL1 = "\cdDemo\c-, this is \cvCytho\c-. I've got an important messa SWWM_CYTHOSIGIL2 = "Prince Baphomet is satisfied with your efforts, and has opened a gate for you to return to Earth."; SWWM_CYTHOSIGIL3 = "Unfortunately, the gate is guarded by high level military demons, two of them, in fact."; SWWM_CYTHOSIGIL4 = "... Although, knowing you, I'm certain this will not be an issue, correct?"; +// E6M8 +SWWM_CYTHOSIGIL21 = "Ah, good, you're pretty close to their rearguard."; +SWWM_CYTHOSIGIL22 = "If we play our cards right, this should catch them by surprise."; +SWWM_CYTHOSIGIL23 = "Neutralizing the lieutenants in this area will deal a major blow, no doubt about it."; +SWWM_CYTHOSIGIL24 = "They won't even know what hit them, they won't see you coming. Go for it, \cdDemo\c-!"; // MAP07 SWWM_SAYADIMPLE1 = "Hold up right there, \cdDemo-chan\c-. You're about to step in on dangerous territory."; SWWM_SAYADIMPLE2 = "This is the first line of defense that's been set up around the inner starport, and it's a bitch."; @@ -77,6 +96,34 @@ SWWM_CYTHONERVE2 = "Many other groups have already been suppressed worldwide, th SWWM_CYTHONERVE3 = "You, however, are up against a cybernetic lieutenant known as the \"Last Tyrant\". This will be tough."; SWWM_CYTHONERVE4 = "Nevertheless... You are the hero \cdDemolitionist\c-, and you are going to teach these vile fiends a lesson."; SWWM_CYTHONERVE5 = "Extinguish the flames of demonic corruption that tarnish this land.\nWe the Kuriste believe in you."; +// Eviternity MAP05 +SWWM_SAYADMN1 = "I think this is the right place, \cdDemo\c-. Getting some BIG energy readings."; +SWWM_SAYADMN2 = "Yup, plenty of demons waiting to jump on your ass. I mean, of course they'd be gathered here."; +SWWM_SAYADMN3 = "I have to warn you, though. These portals are unstable, so you might pass out in the process."; +SWWM_SAYADMN4 = "Oh, and by the way, bad news. You're going to lose all your shit once you cross over as well."; +SWWM_SAYADMN5 = "That NERD has reassured me that it's not on purpose, but I'm not buying it."; +SWWM_SAYADMN6 = "The most he can do is \"give you a set of starting equipment\" after the wipe."; +SWWM_SAYADMN7 = "I don't like how he seemed amused by this. Heard him mumble something about \"episode transitions\"."; +SWWM_SAYADMN8 = "Oh well, whatever... Damn nerd..."; +// Eviternity MAP10 +SWWM_SAYACRE1 = "I'm so going to lambast the UAC for all this shit I've witnessed. So much for that \"reparation\"."; +SWWM_SAYACRE2 = "Their bases are still riddled with demons. Come on, where's the cleaning squads?"; +SWWM_SAYACRE3 = "Wait... Are we the cleaning squad? Did they plan for US to do their job?"; +SWWM_SAYACRE4 = "If that manchild Kelliher hadn't blocked me, he would never hear the end of this, I swear."; +// Eviternity MAP15 +SWWM_SAYACRY1 = "This place is huge, holy shit!"; +SWWM_SAYACRY2 = "Alright. You got it, right? Look for the portal. Should be easy to find, well-signalled, etc."; +SWWM_SAYACRY3 = "Hopefully, once you cross over, you'll finally be right in Xevetha territory."; +SWWM_SAYACRY4 = "Mission stuff aside, I'm really hyped for this... Having you travel to a distant planet."; +SWWM_SAYACRY5 = "Get going, \cdDemo-chan\c-. A new world awaits you."; +// Eviternity MAP20 +SWWM_SAYACON1 = "Dense ardent energy readings again... We both know exactly what that means."; +SWWM_SAYACON2 = "Not sure where the next portal will take you, but hopefully it's further into enemy territory."; +SWWM_SAYACON3 = "We'll see when you get there. With each step, we're getting closer to their leader."; +SWWM_SAYACON4 = "I am so ready for you to kick his ass. Fucker thinks he can start shit just like that? Hell no."; +SWWM_SAYACON5 = "Go get 'em, \cdDemo\c-!"; +// Eviternity MAP25 +SWWM_SAYASLA1 = "I wanna get off this wild ride... Please, please let it be the end, I'm so tired of Hell..."; // Eviternity MAP30 SWWM_SAYAEVIA1 = "Psch... Look at this place. This dude couldn't be more of a pretentious show-off if he tried."; SWWM_SAYAEVIA2 = "However \"angelic\" he may look, he's just some dude in pretty armor, so you can kick his ass."; @@ -84,6 +131,61 @@ SWWM_SAYAEVIA3 = "This whole place, though... Damn, I sure hope you've taken a l SWWM_SAYAEVIA4 = "I'm gonna go grab some popcorn now. This is gonna be an epic battle for sure, kihihihihi..."; SWWM_SAYAEVIB1 = "What? This is some fucking videogame bullshit right there. You're telling me the guy has TWO HEALTHBARS???"; SWWM_SAYAEVIB2 = "Bullshit, fucking bullshit! Absolute trash garbage bullshit! Kill his ass, \cdDemo-chan\c-!"; +// Eviternity 2 MAP01 +SWWM_SAYAEV2A1 = "Damn, finally, your video feed's back online."; +SWWM_SAYAEV2A2 = "You had me worried there, \cdDemo\c-. We were basically blind for several minutes."; +SWWM_SAYAEV2A3 = "... And I can already see that shit's definitely gone down after you beat that winged bastard."; +SWWM_SAYAEV2A4 = "For now, better get out of there. I have this gut feeling that this isn't over yet."; +SWWM_SAYAEV2B1 = "Is that thing... ... No, not even moving. Guess those were under that guy's control."; +SWWM_SAYAEV2B2 = "You know, I'm still wondering what the hell those things even are."; +SWWM_SAYAEV2B3 = "Not your ordinary Cacodemon, obviously. Looks like one, yeah, but there's... Dunno..."; +SWWM_SAYAEV2B4 = "Damn thing gives me the creeps. Probably made as some weirdass experiment by these people."; +SWWM_SAYAEV2B5 = "Oh well... I'm just rambling here. Better get a move on."; +SWWM_SAYAEV2C1 = "... That thing's gone."; +SWWM_SAYAEV2C2 = "Now I REALLY have a bad feeling about this. Get out of there, right now."; +SWWM_SAYAEV2D1 = "Those things are still alive. They're still moving around. I don't like this."; +SWWM_SAYAEV2D2 = "Run, \cdDemo\c-. Please run."; +// Eviternity 2 MAP05 +SWWM_SAYAEV2E1 = "It's not over. We've seen that there's still demons prowling around, shit's falling apart, too..."; +SWWM_SAYAEV2E2 = "Really need to figure out what's happening. If that guy wasn't the \"big bad\", then..."; +SWWM_SAYAEV2E3 = "For now, it's best you get out of this place, while kicking some demon ass along the way, of course."; +SWWM_SAYAEV2E4 = "Good luck, \cdDemo-chan\c-. The mission's far from over, but you'll get through this, I know it."; +// Eviternity 2 MAP10 +SWWM_SAYAEV2F1 = "I think we've had enough of ancient tombs, yeah."; +SWWM_SAYAEV2F2 = "This was one unexpected detour, but the next stop should get us closer. It's a Faculty installation."; +SWWM_SAYAEV2F3 = "Oh, and by the way, I finally got in contact with our \"informant\"."; +SWWM_SAYAEV2F4 = "I'll send you the details on your mission log, once the interview is over."; +// Eviternity 2 MAP15 +SWWM_SAYAEV2G1 = "Almost there... Got word that the nearest portal out of here is a big one, so be prepared."; +SWWM_SAYAEV2G2 = "I was also told that it involves another detour, but after that we should be \"right where we need to be\"."; +SWWM_SAYAEV2G3 = "Honestly, I don't get this whole portal system. It's so impractical..."; +SWWM_SAYAEV2G4 = "One of these days, I'll make the Akari Project into a real thing. Now THAT will be good portal technology."; +// Eviternity 2 MAP20 +SWWM_SAYAEV2H1 = "Okay, enough of detours, enough of getting sidetracked, this is the one."; +SWWM_SAYAEV2H2 = "Miss Nona has been dropping some heavy lore lately. You won't believe how crazy this shit gets."; +SWWM_SAYAEV2H3 = "I'll try to squeeze it into the next mission log. You keep doing your thing, \cdDemo-chan\c-."; +// Eviternity 2 MAP25 +SWWM_SAYAEV2I1 = "I'm... Still shaking from that."; +SWWM_SAYAEV2I2 = "So THAT is the power of Qurensniv naval artillery. Holy... Crap."; +SWWM_SAYAEV2I3 = "A-anyway... ... We uh... Yeah, this is it. Last line of defense. Beyond that, \"Her Astral Domain\"."; +SWWM_SAYAEV2I4 = "I'm sending you all of my energy, \cdDemo-chan\c-. My energy and my love. Fight on!"; +// Eviternity 2 MAP26 +SWWM_SAYAEV2J1 = "I don't like this. I don't like this at all. It's too quiet..."; +SWWM_SAYAEV2J2 = "Please be careful, \cdDemo\c-."; +// Eviternity 2 MAP30 +SWWM_SAYAEV2K1 = "There is some wild-ass energy reading there. Something big, and ANGRY. This has to be it."; +SWWM_SAYAEV2K2 = "Draw that fucking thing out, tear her apart, blow her to bits. Let's end this madness, \cdDemo-chan\c-!"; +SWWM_SAYAEV2L1 = "Of course she's going for another round. This fucking thing is persistent, seriously."; +SWWM_SAYAEV2L2 = "Too bad, should've just run away, NOW you get to deal the killing blow."; +SWWM_SAYAEV2M1 = "Oh for fuck's sake... This fucking monster doesn't know when to give up?"; +// Bonus +SWWM_SAYAEV2N1 = "EXCUSE ME WHAT THE FUCK??? SHE SURVIVED A SHOT FROM THE YNYKRON???"; +SWWM_SAYAEV2N2 = "WHAT THE FUCK IS THAT THING??? HOW IS SHE STILL STANDING???"; +SWWM_SAYAEV2O1 = "WHY WON'T THIS THING DIE???"; +// Eviternity 2 MAP33 +SWWM_SAYAEV2P1 = "\cdDemo-chan\c-, I hope you're ready to run for your life."; +SWWM_SAYAEV2P2 = "Like... I think this whole place is going to blow up as soon as you press that button?"; +SWWM_SAYAEV2P3 = "Seriously, once you hit it, just fucking run and don't stop!"; // Heretic E1M8 SWWM_SAYAMAW1 = "Here we are, in \"Hell's Maw\"."; SWWM_SAYAMAW2 = "According to the Sidhe this houses the portal that connects to the demons' realm."; @@ -91,66 +193,67 @@ SWWM_SAYAMAW3 = "I think it's gonna be pretty interesting to visit another unive SWWM_SAYAMAW4 = "... And of course, it's going to be even more interesting to blow shit up in it, too, right?"; SWWM_SAYAMAW5 = "Just... Be on the lookout for whatever it is that's guarding the place."; // Heretic E2M8 -SWWM_SAYAMASTERS1 = "OK, so... We're one step closer to that serpent rider's home turf. But there's a problem."; -SWWM_SAYAMASTERS2 = "Specifically, several problems. Big, bulky, muscular problems."; -SWWM_SAYAMASTERS3 = "We're talking BIG MINOTAURS with BIG HAMMERS here."; -SWWM_SAYAMASTERS4 = "I don't know about you, but I'm already hearing the Pillar Men theme in my head."; -SWWM_SAYAMASTERS5 = "Go get them, \cdDemo Demostar\c-... ... ... OK maybe that's a terrible pun, forget about it."; +SWWM_SAYAPORTALS1 = "OK, so... We're one step closer to that serpent rider's home turf. But there's a problem."; +SWWM_SAYAPORTALS2 = "Specifically, several problems. Big, bulky, muscular problems."; +SWWM_SAYAPORTALS3 = "We're talking BIG MINOTAURS with BIG HAMMERS here."; +SWWM_SAYAPORTALS4 = "I don't know about you, but I'm already hearing the Pillar Men theme in my head."; +SWWM_SAYAPORTALS5 = "Go get them, \cdDemo Demostar\c-... ... ... OK maybe that's a terrible pun, forget about it."; // Heretic E3M8 SWWM_SAYADSPARIL1 = "This is it, \cdDemo-chan\c-. You're about to face that stupid-ass wizard."; SWWM_SAYADSPARIL2 = "You're gonna save another world, and all in record time. You're on a roll!"; SWWM_SAYADSPARIL3 = "... Oh, and remember, there's a surprise waiting for you at home. Oh, you're so gonna love it."; SWWM_SAYADSPARIL4 = "Splgslshglgh"; -SWWM_SAYADSPARIL5 = "Oh shit that got picked up by the voice recognition? Oops..."; +SWWM_SAYADSPARIL5 = "Oh shit! Damn it, there goes all the batter... Oh! Uh... Y-you didn't hear anything!"; // Heretic E4M8 SWWM_SAYAHEADS1 = "Geez, I'm getting impatient with all this stuff. I hope this really takes you back home."; -SWWM_SAYAHEADS2 = "And if not, well, more time for me to refine this \"present\" that I'm going to give ya."; -SWWM_SAYAHEADS3 = "Thanks to this, I've managed to improve its potency even further. This is going to be fun."; -SWWM_SAYAHEADS4 = "I seriously can't wait to try it, and I'm sure you're also dying to know..."; +SWWM_SAYAHEADS2 = "And if not, well, more time to prepare this present that is totally a surprise."; +SWWM_SAYAHEADS3 = "About what you heard last time, whatever you think it is, it is not that."; +SWWM_SAYAHEADS4 = "And also I totally did not mess it up and had to re-do it from scratch. No sir."; SWWM_SAYAHEADS5 = "Smite thy foes and come claim thy prize, o \cdDemolitionist\c-."; -SWWM_SAYAHEADS6 = "... I seriously just fucking said that..."; +SWWM_SAYAHEADS6 = "... I seriously just said that...?"; // Heretic E5M8 SWWM_SAYABULLS1 = "And it still keeps going, oh my god..."; SWWM_SAYABULLS2 = "It's like you're getting thrown around random realms. Look, I'm starting to get pissed."; SWWM_SAYABULLS3 = "I'm so pissed in fact that, if the next portal doesn't immediately send you back to Parthoris, I'll just..."; SWWM_SAYABULLS4 = "Yeah..."; -SWWM_SAYABULLS5 = "I NEED you to come back home, \cdDemo-chan\c-. I desperately need you here to test this."; +SWWM_SAYABULLS5 = "I NEED you to come back home, \cdDemo-chan\c-. Your present is starting to melt."; // Seven Portals SWWM_SAYAGREETA1 = "There it is, \cdDemo-chan\c-. That's your target, that big stinky ugly monster. That's Korax."; SWWM_SAYAGREETA2 = "... By the way, did you catch the guy's scent? It's bad, isn't it?"; SWWM_SAYAGREETA3 = "God, imagine the smell in person... Just thinking about it is making my stomach turn."; SWWM_SAYAGREETB1 = "Coward... Taunting us from afar..."; // Kirin reply -SWWM_SAYAGREETC1 = "Yeah, sneaky and stinky, telltale signs of an ugly bastard."; -SWWM_SAYAGREETD1 = "Ugly... Bastard?"; // Kirin reply -SWWM_SAYAGREETE1 = "I'd rather not explain, \cxKirin-kun\c-. You'd be very disappointed in all of humankind."; -SWWM_SAYAGREETF1 = "That's certainly not reassuring to hear..."; // Kirin reply +SWWM_SAYAGREETC1 = "Yeah, he's very sneaky... And also stinky. But not stinky in a good way like me."; +SWWM_SAYAGREETD1 = "\cgSayacchi\c-, you're not stinky."; // Kirin reply +SWWM_SAYAGREETE1 = "No, no, let me explain. There is BAD stink and GOOD stink."; +SWWM_SAYAGREETF1 = "I'm... Not sure I get it."; // Kirin reply // Shadow Wood SWWM_SAYABLOODA1 = "I don't know how this dude can even smell anything other than that rancid old dog fart stench he wafts."; SWWM_SAYABLOODA2 = "Like seriously, jesus fucking christ..."; -SWWM_SAYABLOODB1 = "That ugly bastard needs to take a bath."; // Ibuki reply -SWWM_SAYABLOODC1 = "Ugly bastard? What's this now, some lame-ass doujin?"; -SWWM_SAYABLOODD1 = "Heh, nice one, \cgSayacchi\c-."; // Ibuki reply +SWWM_SAYABLOODB1 = "Someone needs to take a bath."; // Ibuki reply +SWWM_SAYABLOODC1 = "Who, me? I showered this morning, I swear."; // Hypostyle SWWM_SAYAHYPO1 = "Here we are, after all that roaming around. Whatever lies here, we gotta slay it to catch the next portal."; SWWM_SAYAHYPO2 = "I sure hope it's not a fucking dragon. That'd be the most cheap-ass generic boss ever."; SWWM_SAYAHYPO3 = "Uh... I totally jinxed it, didn't I? I bet I did. Yeah, I bet it's a fucking dragon."; -SWWM_SAYAHYPO4 = "I bet THAT GUY is going to rise from the grave and fucking sell me his damn game for the thousandth time."; +SWWM_SAYAHYPO4 = "I bet THAT GUY is going to rise from the grave and sell me his damn game for the thousandth time."; // Heresiarch's Seminary SWWM_KIRINWORSHIPA1 = "Pathetic, disgusting creature...\nWho would ever think of worshipping a foul beast such as yourself?"; -SWWM_KIRINWORSHIPB1 = "The only thing I'd worship is that juicy cock of yours, \cxKirin-kun\c-~"; // Saya reply -SWWM_KIRINWORSHIPC1 = "PFFFFFFFFFFFFFF"; -SWWM_KIRINWORSHIPD1 = "Guh! \cxKiriiiiin\c-! You got cola all over me! God damn it you spit as hard as you cum!"; // Saya reply -SWWM_KIRINWORSHIPD2 = "O-oh... Wait, this thing's still on. Shit... \cdDemo-chan\c- just read all of that."; +SWWM_KIRINWORSHIPB1 = "In this household we only worship the good emperor \cxKirin Xanai\c-."; // Saya reply +SWWM_KIRINWORSHIPC1 = "Nnnn... \cgSayaaaa\c-... I'm not worthy of any worship."; +SWWM_KIRINWORSHIPD1 = "Nonsense, you are the goodest and bestest boy in this room, and that is a fact."; // Saya reply +SWWM_KIRINWORSHIPE1 = "Please, not in front of everyone, it's a bit embarrassing..."; +SWWM_KIRINWORSHIPF1 = "It's fine, they can't see you. But \cdDemo\c- can read that I made you all flustered. Hehe."; // Saya reply +SWWM_KIRINWORSHIPG1 = "Nnnnnnn..."; // Castle of Grief SWWM_SAYAGAMEA1 = "Wow, look at fucking mister chessmaster over here... Fuck you!"; -SWWM_SAYAGAMEA2 = "This guy is a fucking idiot and he's pissing me off even more. I so want to watch you beat his sorry ass..."; +SWWM_SAYAGAMEA2 = "This guy is an idiot and he's pissing me off even more. I so want to watch you beat his sorry ass..."; SWWM_SAYAGAMEB1 = "Chess nerd..."; // Ibuki SWWM_SAYAGAMEC1 = "I bet he was in the chess club."; // Necropolis SWWM_SAYAMASTERSA1 = "Masters, masters... Whose masters? Awaken my masters? Well, whatever, I don't care what he says."; SWWM_SAYAMASTERSA2 = "I so want you to kill this dude..."; SWWM_SAYAMASTERSB1 = "Are you strong enough to face the fact you SMELL?"; // Ibuki reply -SWWM_SAYAMASTERSC1 = "I showered this morning, \crIbuki\c-."; +SWWM_SAYAMASTERSC1 = "I told you I showered this morning, \crIbuki\c-."; SWWM_SAYAMASTERSD1 = "I meant the stinky boy over there. You smell nice."; // Ibuki reply SWWM_SAYAMASTERSE1 = "\cgSayacchi\c- definitely has a pleasant scent to her."; // Kirin reply SWWM_SAYAMASTERSF1 = "Guhuhuhu... Thanks."; @@ -169,7 +272,7 @@ SWWM_SAYAMAGE2 = "Yeah, he's more than tired of stuff like this. And apparently SWWM_SAYAMAGE3 = "Well, at least those are actual puzzles, and not whatever the fuck the other stuff was."; SWWM_SAYAMAGE4 = "Even if they're... You know... The really lame and piss-easy kind."; // Dark Crucible -SWWM_SAYAKORAXA1 = "This is it, \cdDemo\c-. The big stinky ugly bastard is waiting."; +SWWM_SAYAKORAXA1 = "This is it, \cdDemo\c-. The big stinky bastard is waiting."; SWWM_SAYAKORAXB1 = "At last, that vile schemer's evil reign shall end."; // Kirin reply SWWM_SAYAKORAXC1 = "Time for him to take a fucking bath. After you rearrange his knees, of course."; // Ibuki reply SWWM_SAYAKORAXD1 = "Even though \cvMeido\c- isn't watching, I can tell you the four of us are cheering you on."; @@ -226,16 +329,16 @@ SWWM_KIRINPUZZLEK1 = "Please... Make it stop..."; SWWM_KIRINPUZZLEL1 = "\cxKirin-kun\c-, hey... It's alright. Here... Drink up, it'll help you relax.\c-"; // Ibuki reply SWWM_KIRINPUZZLEM1 = "Gulp... Gulp... Gulp..."; SWWM_KIRINPUZZLEN1 = "Man, look at him go... Drinking it all up like a champ."; // Saya reply -SWWM_KIRINPUZZLEO1 = "You know how it is... Once they find a breast to suckle on, all their worries fade away..."; // Ibuki reply -SWWM_KIRINPUZZLEP1 = "You know \cdDemo-chan\c- can read what we're saying, right?"; // Saya reply -SWWM_KIRINPUZZLEQ1 = "Oh, I'm sure they'd be more than happy to have their turn once the mission's over, hm?"; // Ibuki reply +SWWM_KIRINPUZZLEO1 = "You know how it is... The Anarukon are natural born milk drinkers."; // Ibuki reply +SWWM_KIRINPUZZLEP1 = "\cdDemo-chan\c- can read what we're saying, you know..."; // Saya reply +SWWM_KIRINPUZZLEQ1 = "Oh, I do hope they're not getting some strange mental image of this. *giggle*"; // Ibuki reply // first puzzle switch on Constable's Gate SWWM_KIRINPUZZLER1 = "Let this be the last of these \"puzzles\" that we may encounter..."; SWWM_KIRINPUZZLER2 = "Urp..."; SWWM_KIRINPUZZLER3 = "My apologies."; SWWM_KIRINPUZZLES1 = "That was some good milk, wasn't it?"; // Saya reply SWWM_KIRINPUZZLET1 = "Certainly... I am grateful for \crIbuki\c-'s blessing."; -SWWM_KIRINPUZZLEU1 = "Making her able to lactate at will is a blessing, yeah. I'm sure \cdDemo\c- agrees too."; // Saya reply +SWWM_KIRINPUZZLEU1 = "She does take any chance she can get to promote her brand, though. Well, not that I mind."; // Saya reply // super secret cheats SWWM_ZNVTXT1 = "\cdDemolitionist\c-, it is me, \chZanaveth The Corruptor\c-. I have been witness of the act you have now acted, yes."; SWWM_ZNVTXT2 = "It is \cf%d\c- years since... and those magic words, I can see them again. Much impressed, very much impressed."; @@ -246,7 +349,60 @@ SWWM_ZNVTXT5 = "And now I have to take off. Please extend greetings to aunt \cgS SWWM_SAYAWASTEA1 = "Quit wasting ammo!"; SWWM_SAYAWASTEB1 = "You're still doing it? Seriously?"; SWWM_SAYAWASTEC1 = "OK, you're clearly just doing this for your own personal satisfaction."; -SWWM_SAYAWASTED1 = "It's almost like you're jerking it off, kinda..."; -SWWM_SAYAWASTED2 = "Uh, forget I said that."; +SWWM_SAYAWASTED1 = "It's almost like you're doing... You know what..."; +SWWM_SAYAWASTED2 = "Uh, forget what I said."; SWWM_SAYAWASTEE1 = "And still going... Rackin' it along."; SWWM_SAYAWASTEF1 = "OK, I promise I'll stop messaging you about it. You do you, I guess."; +// other easter egg +SWWM_SAYALEVERA1 = "You too, huh? Figured you'd also get hooked on lever action."; +SWWM_SAYALEVERB1 = "Uhhh... Yeah, it's satisfying and all, but I think you can stop now."; +SWWM_SAYALEVERC1 = "\cdDemo\c-... Please..."; +SWWM_SAYALEVERD1 = "God it's so... Ahhh..."; +SWWM_SAYALEVERE1 = "I... I swear... I'm gonna go insane... There's such a thing as too much action."; +SWWM_SAYALEVERF1 = "T-that thing's built to last, for sure. Good fucking god..."; +SWWM_SAYALEVERG1 = "..."; +SWWM_SAYALEVERG2 = "I think you just gave me an idea for an ASMR video."; +// april fools +SWWM_SAYAFOOL1 = "Uh... What's that text doing there?"; +SWWM_SAYAFOOL2 = "Shit, wait... Did I seriously forget to activate a license?"; +SWWM_SAYAFOOL3 = "... ... Hold on... Just hold the fuck on... What even is Ultracam?"; +SWWM_SAYAFOOL4 = "Oh for fuck's sake. This has to be \cgTaro-nii\c-'s doing. Can't believe I fell for it. Damn it all."; +SWWM_SAYAFOOL5 = "Well, I don't know how to get rid of it so... Just ignore it, I guess. I'll figure it out later."; +// corruption cards +SWWM_CYTHOCCA1 = "\cdDemolitionist\c-, do not be alarmed by what you've just witnessed."; +SWWM_CYTHOCCA2 = "This is all part of Prince Baphomet's plan. He has decided to test you."; +SWWM_CYTHOCCA3 = "I'm afraid there is no choice but for you to play along, and accept the cards you are being dealt."; +SWWM_CYTHOCCA4 = "Only time will tell if he's satisfied with the results."; +SWWM_CYTHOCCA5 = "All I can offer from my part is... To wish you luck. Good luck, \cdDemolitionist\c-."; +SWWM_CYTHOCCB1 = "What? And we gotta run with it, just like that? I'm calling a lawyer."; // Saya reply +SWWM_CYTHOCCC1 = "\cgSaya\c-, you wouldn't want to take legal action against the second prince of Hell. That's very unwise."; +// grace of lilith +SWWM_SAYALILITHA1 = "WHAT IN THE NAME OF FUCK IS GOING ON???"; +SWWM_SAYALILITHA2 = "HELLO??? IS REALITY JUST BREAKING APART IN FRONT OF OUR EYES???"; +SWWM_SAYALILITHB1 = "Stay calm, \cgSaya\c-, this is the power of Matriarch Lilith at work. It's all an illusion."; // Cytho reply +SWWM_SAYALILITHC1 = "Good fucking grief... Is this why the archdemon generals are afraid of her?"; +SWWM_SAYALILITHD1 = "In part, yes. Among our kind, only Archlord Aximal can compare to her."; // Cytho reply +SWWM_SAYALILITHE1 = "Fucking... Hell."; +// ROM3R-0 +SWWM_SAYAROMEROA1 = "What the fuck? Is that John Romero?? Why is he a giant robot???"; +SWWM_SAYAROMEROB1 = "It's a long story. Him and his games were definitely popular among our people, back in the day."; // Cytho reply +SWWM_SAYAROMEROC1 = "That doesn't explain the robot."; +SWWM_SAYAROMEROD1 = "I'll summarize by saying it's just a robot, and I don't know why Lord Baphomet brought it here."; // Cytho reply +SWWM_SAYAROMEROD2 = "It's simply the last obstacle in the \cdDemolitionist\c-'s path."; +SWWM_SAYAROMEROE1 = "Romerobot's about to make you his bitch, huh..."; +// another easter egg +SWWM_SAYACRANKA1 = "\cdDemo\c-... Can't you see it's already full? You're going to break it."; +SWWM_SAYACRANKB1 = "You're doing this stuff on purpose just to get a reaction out of me, aren't you?"; +SWWM_SAYACRANKB2 = "Well, congratulations, I am reacting and I think you should stop."; +SWWM_SAYACRANKC1 = "... Damn it, \cdDemo\c-, that's enough."; +SWWM_SAYACRANKD1 = "*sigh*"; +// Legacy of Rust E1E8 +SWWM_SAYALOR11 = "OK, by process of elimination, there HAS to be something in here, \cdDemo\c-."; +SWWM_SAYALOR12 = "Last chance to find those nukes, before those pieces of shit can use them."; +SWWM_SAYALOR13 = "Still fucked up that demons have literal WMDs... What was the UAC even thinking?"; +// Legacy of Rust E2E8 +SWWM_SAYALOR21 = "This is it... Ardent energy readings going nuts, it's the launch site for sure."; +SWWM_SAYALOR22 = "Goes without saying to expect resistance. These bastards won't give it up."; +SWWM_SAYALOR23 = "You know what would be funny, though? Heheheh..."; +SWWM_SAYALOR24 = "What if you were to, say, set up the nukes to detonate where they stand?"; +SWWM_SAYALOR25 = "OBVIOUSLY, from a safe distance, that is. Oh man... Let's do this, \cdDemo\c-."; diff --git a/language.def_lore b/language.def_lore index 6dc07187c..471663b4e 100644 --- a/language.def_lore +++ b/language.def_lore @@ -38,6 +38,42 @@ SWWM_LORETXT_ADMINISTRATORS = "\cfWhere do I even begin with this? I seriously have no fucking clue how I just keep moving up more and more. How the fuck did I reach this point, that I can just casually have a conversation about anime waifus with an 18 billion year old universe shaper? I seriously don't understand, really.\c-\n" "\n" "\cfI thought the forbidden knowledge I got from all those gods I've met was too much. WELL NOW IT'S EVEN WORSE! I KNOW THINGS THAT NO ONE SHOULD, AND I CANNOT SHARE THIS KNOWLEDGE WITH ANYONE OR I'LL INSTANTLY GET FUCKING DELETED FROM EXISTENCE!!!\c-"; +SWWM_LORETAG_ADMUN = "Tachmek-Smith, J.A."; +SWWM_LORETAB_ADMUN = "People"; +SWWM_LOREREL_ADMUN = "EngineTech;XAnimen;LunaEvent;Nukuri;Nekuratek;Xekke;Kmonn;WhiteScar;Saya"; +SWWM_LORETXT_ADMUN = +" \cxFull Name:\c-\n" +" \cf James Admun Tachmek-Smith\c-\n" +" \cxNationality:\c-\n" +" \cf Scottish\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 4673 BC\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO (Tach-Engine Technology Institute)\c-\n" +"\n" +"\n" +"\n" +"\n" +"Born in 4673 BC as \cfAdmun Tachmek\c-, firstborn of the late \cfKimun Tachmek\c-, \cfJames\c- is the founder and CEO of the \cfTach-Engine Technology Institute\c-, and also an exiled heir to the throne of \cfTerasana\c-, a position of leadership currently held by \cfSeras Tonkebis\c-, former advisor of his father.\n" +"\n" +"In 4607 BC, having been sentenced to exile for \cf\"failing to protect the crown of Terasana\"\c-, he was sent to the \cfSanais\c- colony of \cfEgypt\c-, where he spent his years performing various types of forced labor under inhumane conditions, unable to die due to a curse of undeath which had been placed on him by Tonkebis as punishment. This ordeal lasted until 783 BC, with the dissolution of the colony through an unspecified deal with the \cfYathai Empire\c-, after which he proceeded to roam the Earth in search of a place he could belong in.\n" +"\n" +"In 808, after many travels, he eventually settled somewhere in the \cfBritish\c- isles, working as a blacksmith and adopting the alias of \cfJames Smith\c-. As the years passed, people were somewhat wary due to his immortality, but had no qualms about his services. That is, until 1011, when a shoddy armor fitting job for a local king resulted in his imprisonment. He would not be freed until 1097, long after the king's passing. After this, he moved to \cfScotland\c-, where he's resided since.\n" +"\n" +"Not much is known of his life up until the foundation of the institute, but he had amassed quite a fortune beforehand through various odd jobs, effectively gathering several human lifetimes worth of money in the process. As stated by the man himself, those were the funds he would use for both the creation of the institute, and all of the various philanthropic enterprises he's regularly involved in to this day.\n" +"\n" +"Following the \cfLuna Event\c- of 2021, he pushed for a partnership with the \cfNukuri\c- tech giant \cfNekuratek\c-, one of many important business deals that would allow this surprisingly non-profit organization to rise in popularity and eventually contribute to turning Scotland into a world superpower.\n" +"\n" +"During the first commercial dealings with the people of \cfXekke\c- in 2048, he became quite close to the head of the \cfKmonn Shuna\c- company, \cfEushura Kmonn Jr.\c-, with rumors spreading of what kind of relationship the two had. Nevertheless, this resulted in even further advances for not just his organization, but all of humankind.\n" +"\n" +"Following the \cfWhite Scar\c- incident of 2077, he urged the Scottish government not to sign the treaty to cut contact with the Nukuri, as this would effectively bring economic ruin to the whole nation. Many others followed his example as well, notably \cfJapan\c-, who held the strongest ties to the Nukuri, as well as the \cfUnion of African Republics\c-, whose whole existence had come as a result of their alliance with the alien benefactors.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThe old man's got quite a backstory, gotta admit, even though the only source for most of this is the man himself. I said it on the article about the institute, and I say it here as well: I totally believe his story.\c-\n" +"\n" +"\cfHell, even the part where he told me that the god Anubis himself is his uncle from his mother's side.\c-\n" +"\n" +"\cfNo, seriously. I even saw the photos, jackal head and all (also it's a costume).\c-"; SWWM_LORETAG_AKARILABS = "Akari Labs"; SWWM_LORETAB_AKARILABS = "People"; SWWM_LOREREL_AKARILABS = "Saya;Taro;Maidbot;Ibuki;WhiteScar;Demolitionist;Mixom;Doomguy"; @@ -57,7 +93,7 @@ SWWM_LORETXT_AKARILABS = "\n" "The company was founded in 2010 by \cfSaya Miyamoto\c- and \cfTaro Miyamoto\c-, beginning its days as a small workshop in their garage. Over time, the rise in popularity of their ingenious inventions led to further expansion, and more people coming in to join them. As of 2148, there are around 170 employees, some coming from quite far away, too. Although the main headquarters are large enough to house most of them, some do work remotely, due to varying circumstances.\n" "\n" -"Among its many creations, the \cfMaidbots\c-, first introduced in 2017, and commercialized five years later, are the most well known. Life-like humanoid assistant robots that can be freely adopted by any household. Each and every unit has their own unique personality and preferences, and despite their robotic appearance, are very much no different from a real person, having the same rights and being subject to the same laws as one. All Maidbots are trained from birth on all sorts of tasks, from common housework to first aid or even self-defense techniques. Although most are adopted to assist with housework and not much else, there have been many cases of customers dating or even marrying them. The labs' official stance on this is that there is \"nothing wrong\" with such a thing, but one must not forget that despite the fact Maidbots are \"fully equipped for intimate acts\", they cannot bear children.\n" +"Among its many creations, the \cfMaidbots\c-, first introduced in 2017, and commercialized five years later, are the most well known. Life-like humanoid assistant robots that can be freely adopted by any household. All Maidbots are trained from birth on all sorts of tasks, from common housework to first aid or even self-defense techniques. Each and every unit has their own unique personality and preferences, and despite their robotic appearance, are very much no different from a real person, having the same rights and being subject to the same laws as one. There have even been cases of people dating or even marrying them, and the labs' official stance on this is that there is \"nothing wrong\" with such a thing, as \"not even the differences of flesh and metal could get in the way of love\".\n" "\n" "During the \cf2020 Tokyo Olympics\c-, Saya's own personal Maidbot was appointed to sing the national anthem. Her voice captivated millions, and kickstarted her career as an idol.\n" "\n" @@ -82,7 +118,7 @@ SWWM_LORETXT_AKARILABS2 = "\n" "The company was founded in 2010 by \cfSaya Miyamoto\c- and \cfTaro Miyamoto\c-, beginning its days as a small workshop in their garage. Over time, the rise in popularity of their ingenious inventions led to further expansion, and more people coming in to join them. As of 2148, there are around 170 employees, some coming from quite far away, too. Although the main headquarters are large enough to house most of them, some do work remotely, due to varying circumstances.\n" "\n" -"Among its many creations, the \cfMaidbots\c-, first introduced in 2017, are the most well known. Life-like humanoid assistant robots that can be freely adopted by any household. Each and every unit has their own unique personality and preferences, and despite their robotic appearance, are very much no different from a real person, having the same rights and being subject to the same laws as one. All Maidbots are trained from birth on all sorts of tasks, from common housework to first aid or even self-defense techniques. Although most are adopted to assist with housework and not much else, there have been many cases of customers dating or even marrying them. The labs' official stance on this is that there is \"nothing wrong\" with such a thing, but one must not forget that despite the fact Maidbots are \"fully equipped for intimate acts\", they cannot bear children.\n" +"Among its many creations, the \cfMaidbots\c-, first introduced in 2017, are the most well known. Life-like humanoid assistant robots that can be freely adopted by any household. All Maidbots are trained from birth on all sorts of tasks, from common housework to first aid or even self-defense techniques. Each and every unit has their own unique personality and preferences, and despite their robotic appearance, are very much no different from a real person, having the same rights and being subject to the same laws as one. There have even been cases of people dating or even marrying them, and the labs' official stance on this is that there is \"nothing wrong\" with such a thing, as \"not even the differences of flesh and metal could get in the way of love\".\n" "\n" "During the \cf2020 Tokyo Olympics\c-, Saya's own personal Maidbot was appointed to sing the national anthem. Her voice captivated millions, and kickstarted her career as an idol.\n" "\n" @@ -154,6 +190,42 @@ SWWM_LORETXT_AKARIPROJECT3 = "\cfOh also, remember the romance subplot? Kirishima and Ikana, yeah... huuuuuge parallels with me and Kirin-kun there, just with the genders swapped. Didn't play out exactly the same way, tho, but it's all good shit.\c-\n" "\n" "\cfI wonder if he'd enjoy reading this. Could be a good way to brush up on his English, too.\c-"; +SWWM_LORETAG_ALAKIR = "Alakir"; +SWWM_LORETAB_ALAKIR = "People"; +SWWM_LOREREL_ALAKIR = "Kirin;Saya"; +SWWM_LORETXT_ALAKIR = +" \cxFull Name:\c-\n" +" \cf Alakir of Kanaiarkar\c-\n" +" \cxTitle:\c-\n" +" \cf Representative of Esperkind in Arkai\c-\n" +" \cxNationality:\c-\n" +" \cf Deadlighter\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2031-12-31\c-\n" +" \cxOccupation:\c-\n" +" \cf Consul (Deadlight Republic)\c-\n" +"\n" +"\n" +"Alakir is the last surviving of the \cfIvory Espers\c-, who once inhabited the flourishing city of \cfKanaiarkar\c- in the west coast of the \cfDeadlight Republic\c-. He was the current mayor of the city at the time of the \cfSacrosanct Empire of Levlen\c-'s \cfFirst Esper Crusades\c- (2094), and one of the few who survived the event.\n" +"\n" +"Following this great massacre, he sought the help of the capital. It was then that he would truly learn how twisted and corrupted the very nation he called home was. Certainly, those in power had been made aware beforehand that the invasion would happen, but they chose not to act. As he had been told, the consequences of fighting back against the Sacrosanct Empire were thought far worse than simply letting it happen. The lives of hundreds of thousands of \cfEspers\c- had been deemed expendable in order to remain in good terms with their zealous southern neighbors.\n" +"\n" +"But, despite all that, he was offered a helping hand. Personal protection, as well as a promise of reconstruction, but at a price, that of his own body. Having no other options to help the other survivors, he accepted. Kanaiarkar and its neighboring settlements would be rebuilt, and survivors would be given food and shelter as needed. In public, the \"generosity\" of the Republic would be praised far and wide, while in private, payment would be regularly \"collected\" by various high ranking politicians, who would then fill their own pockets in the black market selling the unique blood of the only remaining Ivory Esper in existence.\n" +"\n" +"During his stay in the capital, he had a chance meeting with a young man who was visiting for diplomatic reasons: \cfKirin Xanai\c-, the leader of the northern \cfSykhai Empire\c-. Alakir could easily notice that this young man had a completely different air to him than all the other political figures he was acquainted with. Their time together did not last long, however, as he soon had to return to his newly reconstructed hometown.\n" +"\n" +"While redoing his life, trying to leave the past behind, he was approached by a woman, \cfRena\c-, who had heard of his story and greatly admired him. The two would eventually marry, although this union wouldn't last long. Months later, she would be recruited into the ranks of the \cfLevlen Inquisitors\c- through her family's influence, and forced to leave him.\n" +"\n" +"Things wouldn't stop there, as a second attack on the city happened. However, the invaders were repelled, not by the armies of the Republic, but by warriors from the Sykhai Empire, with Kirin himself at the lead. As it had turned out, Kirin had investigated the situation during his stay in the capital, and chose to keep close watch on the Esper communities should anything happen. Despite having been warned that this action would only increase the hostility the Sacrosanct Empire harbored towards them, he pushed back against the invaders. Aware of the Republic's negligence, the young emperor arranged for a full evacuation of all survivors, giving them all a temporary home in Akkou, and also for Alakir to take on the position of consul within.\n" +"\n" +"Following Kirin's wedding with \cfSaya Miyamoto\c- in 2171, she took notice of the fact that the two clearly had feelings for each other, and urged them to confess. Since then, Kirin and Alakir are dating, with plans for a future marriage once various arrangements are made.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfI'm sure you're as disgusted reading this as Taro-nii and I were writing it. Fuck's sake, what all those pigs did to him... The scars they left...\c-\n" +"\n" +"\cfOh yeah, I heard from Kirin-kun that they've been in talks with the royal family as part of those \"arrangements\" (yeah, the so-called \"Republic\" is actually a monarchy), and not only does it turn out that they weren't aware of the stuff that happened, but they're absolutely horrified by it. Something tells me that all of those bastards' heads will roll. Hopefully, we can then celebrate by pissing on their graves afterwards.\c-\n" +"\n" +"\cfThat aside, bless Kirin-kun for being his goddamn savior, seriously. Alakir-kun's life has been so full of shit... And it's all because of him that he's still alive to this day. God, if I already had plenty of reasons to love him, this one's the cherry on top.\c-"; SWWM_LORETAG_ANARUKON = "Anarukon"; SWWM_LORETAB_ANARUKON = "Lore"; SWWM_LOREREL_ANARUKON = "Gods;Novoskhana;Hell;Saya;Kirin;Luna;Ashley;UAC;Ellen;Maidbot;Ibuki;Demolitionist"; @@ -228,6 +300,135 @@ SWWM_LORETXT_ANGERYSIGIL = "\cfThis one was Maruku's idea. They're hard to come by, so don't squander them, okay? Also, be careful or you might absolutely obliterate yourself with this.\c-\n" "\n" "\cfI think I could totally beat you in a fight if I used this. I mean, not that I'd want to hurt you but... Just hypothetically speaking, you know.\c-"; +SWWM_LORETAG_ARCHDEMONS = "Archdemons"; +SWWM_LORETAB_ARCHDEMONS = "Lore"; +SWWM_LOREREL_ARCHDEMONS = "UAC;Hell;DemonInvasion;Cytho;Saya"; +SWWM_LORETXT_ARCHDEMONS = +"\cxName:\c-\n" +"\cf Archdemons\c-\n" +"\cxClassification:\c-\n" +"\cf Demon Elite\c-\n" +"\cxLocation:\c-\n" +"\cf Hell\c-\n" +"\n" +"When a member of \cfDemonkind\c- attains a very high status, be it through longevity and/or power, they earn the designation of \cfArchdemon\c-. Accounting for less than 0.01% of the population, the members of this \"elite\" class tend to hold important positions within the realm. The most well-known among them are the Archdemon generals, who lead \cfHell\c-'s military forces. Other figures of renown include the various archlords, former leaders of outer realms who once followed \cfFather Nostros\c-.\n" +"\n" +"Due to current circumstances, the Archdemon generals have garnered quite a lot of attention, having usurped the throne of Hell with grand marshall \cfErebus Arthamuz\c-, son of the late \cfArchlord Thamuz\c-, now ruling over the realm with an iron fist. Under this new ruling, and with the former royal family exiled, Hell has entered a new age of war and conquest, bolstered by various advances in the mass production of military units through genetic engineering and industrial-scale breeding.\n" +"\n" +"Much is to be said of each individual general, although for the sake of keeping this article concise, a summary will follow:\n" +"\n" +"\cfErebus Arthamuz:\c- Marshall of Hell's legions. Grand conqueror of the mountain that bears his name and former celebrity turned military leader. There are many who criticize his skills, but he is quick to silence any opposition. Together with his late father, they constructed the \cfSpire of Dis\c- at the heart of the capital, of which he additionally holds the position of keeper.\n" +"\n" +"\cfThaar Adarion:\c- Self-identified \"finest warrior of Hell\", though not without merit. Serves as the bodyguard of general Erebus, always by his side. There are rumors that he is romantically interested in him due to how close the two are.\n" +"\n" +"\cfTaeron Yraisamal:\c- Official propagandist and recruiter of Hell's military. Favored by the other generals as, despite his disinterest in the worship of the \cfTyrant\c-, he shows a deep disdain for the royal family and its roots.\n" +"\n" +"\cfKaume Irishtanar:\c- Baron of \cfHouse Irishtanar\c- and leader of the espionage forces, himself dedicated to keeping an eye on the exiled royal family. Known for leading the assassination of the rival \cfHouse Valathor\c-, of which only one member has survived.\n" +"\n" +"\cfVera Akerastora:\c- Overseer of the spawning grounds. Despite many well-known cannibalism scandals, he has held on to his position, and offers his services as breeder of military units in exchange for \"taking a cut\" of the production.\n" +"\n" +"\cfGyeran Rashaz:\c- Wife of general Erebus, herself also holding a position of general despite lacking any ability for the job. She oversees any movements in and out of the capital, as holder of the keys to the city.\n" +"\n" +"\cfUrthura Vexamal:\c- Main guard of the outer cities. As follower of an ancient deity known as the \cfHand of Hate\c-, her cruelty is said to be without match, those settled near the capital living in fear of her wrath.\n" +"\n" +"\cfDestora Arathon:\c- A so-called \"blood dancer\" who serves as the main trainer of the military forces, and is also worshipped as an idol by many a noble. She is responsible for the deployment of units both within and outside the realm.\n" +"\n" +"\cfBerias Ysharan:\c- One of the leading slavers in Hell, responsible for keeping the populace under submission. Deemed a traitor to his own kind for his involvement in the forced recruitment of civilians for various purposes.\n" +"\n" +"\cfAkedas Aximal:\c- Personal advisor of general Erebus and former Archlord. A twisted sorcerer rivaled only by \cfMatriarch Lilith\c- herself, and one of the first demons to be born on \cfEarth\c-. Aximal has witnessed not just the birth of his own kind, but also that of the realm of Hell itself, and most say that such experiences have left him deeply jaded.\n" +"\n" +"As of the time of writing, all the generals are actively involved in the invasion of Earth (see \cfDemon Invasion\c- article for more details).\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThe fat bastard and friends. We got the names of all of them, so once you're done with this first mission, you can guess who the next targets are. Man, if we didn't have to keep this one short, we would have gone into detail about ALL of the shit they have done. These fuckers need a serious ass-whooping, seriously. Especially that Kaume dude, he's the fucker who murdered Cytho-sama's family and burned down his entire hometown. Boy, when we were getting documented for this he had A LOT to say about him. I may have learned some swears in Kuristema in the process, which is handy, that way I know what to call these fuckers to their own faces.\c-\n" +"\n" +"\cfAnyway, some archdemons are nice, unlike this lot. I mean, I haven't met any of them directly, but the few demons I know speak highly of them. Cytho-sama especially brings up the lady that sits at the top of his old business, though he's a bit disappointed in her for not fighting back, because apparently, if all of his old colleagues joined forces, they could completely outclass the entire military in power (holy shit).\c-"; +SWWM_LORETXT_ARCHDEMONS2 = +"\cxName:\c-\n" +"\cf Archdemons\c-\n" +"\cxClassification:\c-\n" +"\cf Demon Elite\c-\n" +"\cxLocation:\c-\n" +"\cf Hell\c-\n" +"\n" +"When a member of \cfDemonkind\c- attains a very high status, be it through longevity and/or power, they earn the designation of \cfArchdemon\c-. Accounting for less than 0.01% of the population, the members of this \"elite\" class tend to hold important positions within the realm. The most well-known among them are the Archdemon generals, who lead \cfHell\c-'s military forces. Other figures of renown include the various archlords, former leaders of outer realms who once followed \cfFather Nostros\c-.\n" +"\n" +"Due to current circumstances, the Archdemon generals have garnered quite a lot of attention, having usurped the throne of Hell with grand marshall \cfErebus Arthamuz\c-, son of the late \cfArchlord Thamuz\c-, now ruling over the realm with an iron fist. Under this new ruling, and with the former royal family exiled, Hell has entered a new age of war and conquest, bolstered by various advances in the mass production of military units through genetic engineering and industrial-scale breeding.\n" +"\n" +"Much is to be said of each individual general, although for the sake of keeping this article concise, a summary will follow:\n" +"\n" +"\cfErebus Arthamuz:\c- Marshall of Hell's legions. Grand conqueror of the mountain that bears his name and former celebrity turned military leader. There are many who criticize his skills, but he is quick to silence any opposition. Together with his late father, they constructed the \cfSpire of Dis\c- at the heart of the capital, of which he additionally holds the position of keeper.\n" +"\n" +"\cfThaar Adarion:\c- Self-identified \"finest warrior of Hell\", though not without merit. Serves as the bodyguard of general Erebus, always by his side. There are rumors that he is romantically interested in him due to how close the two are.\n" +"\n" +"\cfTaeron Yraisamal:\c- Official propagandist and recruiter of Hell's military. Favored by the other generals as, despite his disinterest in the worship of the \cfTyrant\c-, he shows a deep disdain for the royal family and its roots.\n" +"\n" +"\cfKaume Irishtanar:\c- Baron of \cfHouse Irishtanar\c- and leader of the espionage forces, himself dedicated to keeping an eye on the exiled royal family. Known for leading the assassination of the rival \cfHouse Valathor\c-, of which only one member has survived.\n" +"\n" +"\cfVera Akerastora:\c- Overseer of the spawning grounds. Despite many well-known cannibalism scandals, he has held on to his position, and offers his services as breeder of military units in exchange for \"taking a cut\" of the production.\n" +"\n" +"\cfGyeran Rashaz:\c- Wife of general Erebus, herself also holding a position of general despite lacking any ability for the job. She oversees any movements in and out of the capital, as holder of the keys to the city.\n" +"\n" +"\cfUrthura Vexamal:\c- Main guard of the outer cities. As follower of an ancient deity known as the \cfHand of Hate\c-, her cruelty is said to be without match, those settled near the capital living in fear of her wrath.\n" +"\n" +"\cfDestora Arathon:\c- A so-called \"blood dancer\" who serves as the main trainer of the military forces, and is also worshipped as an idol by many a noble. Also responsible for the deployment of units both within and outside the realm.\n" +"\n" +"\cfBerias Ysharan:\c- One of the leading slavers in Hell, responsible for keeping the populace under submission. Deemed a traitor to his own kind for his involvement in the forced recruitment of civilians for various purposes.\n" +"\n" +"\cfAkedas Aximal:\c- Personal advisor of general Erebus and former Archlord. A twisted sorcerer rivaled only by \cfMatriarch Lilith\c- herself, and one of the first demons to be born on \cfEarth\c-. Aximal has witnessed not just the birth of his own kind, but also that of the realm of Hell itself, and most say that such experiences have left him deeply jaded.\n" +"\n" +"Following the disastrous first campaign on Earth (see \cfDemon Invasion\c- article), as well as other lesser skirmishes, the generals have been shuffling to maintain their armies under control despite the initial loss of their commander.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThe fat bastard and friends. We got the names of all of them, so once you're done with this first mission, you can guess who the next targets are. Man, if we didn't have to keep this one short, we would have gone into detail about ALL of the shit they have done. These fuckers need a serious ass-whooping, seriously. Especially that Kaume dude, he's the fucker who murdered Cytho-sama's family and burned down his entire hometown. Boy, when we were getting documented for this he had A LOT to say about him. I may have learned some swears in Kuristema in the process, which is handy, that way I know what to call these fuckers to their own faces.\c-\n" +"\n" +"\cfAnyway, some archdemons are nice, unlike this lot. I mean, I haven't met any of them directly, but the few demons I know speak highly of them. Cytho-sama especially brings up the lady that sits at the top of his old business, though he's a bit disappointed in her for not fighting back, because apparently, if all of his old colleagues joined forces, they could completely outclass the entire military in power (holy shit).\c-\n" +"\n" +"\cfUpdate: They're fucked, all of them. They may keep trying to act like they haven't been totally owned, but they're totally fucking grasping here. Maybe they think they can form some hasty alliances with some alien bastards, but that only shows how desperate they are. I am 100% betting they'll have their asses betrayed.\c-"; +SWWM_LORETXT_ARCHDEMONS3 = +"\cxName:\c-\n" +"\cf Archdemons\c-\n" +"\cxClassification:\c-\n" +"\cf Demon Elite\c-\n" +"\cxLocation:\c-\n" +"\cf Hell\c-\n" +"\n" +"When a member of \cfDemonkind\c- attains a very high status, be it through longevity and/or power, they earn the designation of \cfArchdemon\c-. Accounting for less than 0.01% of the population, the members of this \"elite\" class tend to hold important positions within the realm. The most well-known among them were the Archdemon generals, who once led \cfHell\c-'s military forces. Other figures of renown include the various archlords, former leaders of outer realms who once followed \cfFather Nostros\c-.\n" +"\n" +"The former Archdemon generals garnered quite a lot of attention, having usurped the throne of Hell with grand marshall \cfErebus Arthamuz\c-, son of the late \cfArchlord Thamuz\c-, then ruling over the realm with an iron fist. Under their ruling, with the royal family exiled at the time, Hell entered an age of war and conquest, bolstered by various advances in the mass production of military units through genetic engineering and industrial-scale breeding. Despite all their efforts, however, their time in control of the realm was cut short following their attempt to conquer \cfEarth\c-, and the resistance they encountered.\n" +"\n" +"Much is to be said of each individual general, although for the sake of keeping this article concise, a summary will follow:\n" +"\n" +"\cfErebus Arthamuz:\c- Former marshall of Hell's legions. Grand conqueror of the mountain that bears his name and former celebrity turned military leader. There are many who criticized his skills, but he was quick to silence any opposition. Together with his late father, they constructed the \cfSpire of Dis\c- at the heart of the capital, of which he held the position of keeper. Under the restored ruling, he is to be succeeded by \cfAstaroth\c-, granddaughter of \cfKing Akusei\c-.\n" +"\n" +"\cfThaar Adarion:\c- Once self-identified \"finest warrior of Hell\", though not without merit. Served as the bodyguard of general Erebus, always by his side. There were rumors that he was romantically interested in him due to how close the two were. His loyalty did waver once he faced an enemy stronger than him, however.\n" +"\n" +"\cfTaeron Yraisamal:\c- Former propagandist and recruiter of Hell's military. Favored by the other generals as, despite his disinterest in the worship of the \cfTyrant\c-, he showed a deep disdain for the royal family and its roots.\n" +"\n" +"\cfKaume Irishtanar:\c- Baron of \cfHouse Irishtanar\c- and former leader of the espionage forces, himself dedicated to keeping an eye on the exiled royal family. Known for leading the assassination of the rival \cfHouse Valathor\c-, of which only one member has survived.\n" +"\n" +"\cfVera Akerastora:\c- Former overseer of the now dismantled spawning grounds. Despite many well-known cannibalism scandals, he had held on to his position, offering his services as breeder of military units in exchange for \"taking a cut\" of the production.\n" +"\n" +"\cfGyeran Rashaz:\c- Late wife of general Erebus, herself also having held a position of general despite lacking any ability for the job. She oversaw any movements in and out of the capital, as holder of the keys to the city.\n" +"\n" +"\cfUrthura Vexamal:\c- Former main guard of the outer cities. As follower of an ancient deity known as the \cfHand of Hate\c-, her cruelty is said to have been without match, those settled near the capital having lived in fear of her wrath until her defeat.\n" +"\n" +"\cfDestora Arathon:\c- A so-called \"blood dancer\" who served as the main trainer of the military forces, and was once also worshipped as an idol by many a noble. She was responsible for the deployment of units both within and outside the realm.\n" +"\n" +"\cfBerias Ysharan:\c- Once one of the leading slavers in Hell, responsible for having kept the populace under submission. Deemed a traitor to his own kind for his involvement in the forced recruitment of civilians for various purposes.\n" +"\n" +"\cfAkedas Aximal:\c- Former personal advisor of general Erebus and now only remaining general still holding power over the realm after regaining his position of Archlord. A twisted sorcerer rivaled only by \cfMatriarch Lilith\c- herself, and one of the first demons to be born on Earth. Aximal has witnessed not just the birth of his own kind, but also that of the realm of Hell itself, and most say that such experiences have left him deeply jaded.\n" +"\n" +"Following the disastrous first campaign on Earth (see \cfDemon Invasion\c- article), as well as other lesser skirmishes, the generals shuffled to maintain their armies under control despite the initial loss of their commander. In 2165, following many other losses, including that of a newly recruited commander, with all their armies in disarray, the generals made their last stand, only to be assassinated one by one, with the exception of Akedas Aximal, who managed to flee, and still controls the realm from the shadows.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThe fat bastard and friends. We got the names of all of them, so once you're done with this first mission, you can guess who the next targets are. Man, if we didn't have to keep this one short, we would have gone into detail about ALL of the shit they have done. These fuckers need a serious ass-whooping, seriously. Especially that Kaume dude, he's the fucker who murdered Cytho-sama's family and burned down his entire hometown. Boy, when we were getting documented for this he had A LOT to say about him. I may have learned some swears in Kuristema in the process, which is handy, that way I know what to call these fuckers to their own faces.\c-\n" +"\n" +"\cfAnyway, some archdemons are nice, unlike this lot. I mean, I haven't met any of them directly, but the few demons I know speak highly of them. Cytho-sama especially brings up the lady that sits at the top of his old business, though he's a bit disappointed in her for not fighting back, because apparently, if all of his old colleagues joined forces, they could completely outclass the entire military in power (holy shit).\c-\n" +"\n" +"\cfUpdate: They're fucked, all of them. They may keep trying to act like they haven't been totally owned, but they're totally fucking grasping here. Maybe they think they can form some hasty alliances with some alien bastards, but that only shows how desperate they are. I am 100% betting they'll have their asses betrayed.\c-\n" +"\n" +"\cfUpdate 2: Hooooooooooooly shit they got fucked on, oh for sure they did. And that old fart won't last too long either. I say a couple more romps through his home turf and he'll die of a stroke from how much you piss him off. If we can't reach him directly, then that's the best solution we have.\c-"; SWWM_LORETAG_ASHLEY = "Knox, Ashley"; SWWM_LORETAB_ASHLEY = "People"; SWWM_LOREREL_ASHLEY = "Yui;Saya;Sankaideriha;Gods"; @@ -261,13 +462,32 @@ SWWM_LORETXT_ASHLEY = "\cxSaya's Notes:\c-\n" "\cfAhhhhhh man... Bless this lesbian, amen.\c- \cg♥\c-\n" "\n" -"\cfSeriously tho, Ashley-san is just amazing af, I love her music, I love her... everything. And fucking hell I'm SOOOOOOOOOOOOO jealous of Yu-chan, she gets to enjoy those soft witch tiddies anytime she wants, while I have to ask for hugs and sometimes she says no and... fuck. But come on, it's just a hug damn it, I just want to feel the softness™, what's wrong with that?\c-\n" +"\cfSeriously tho, Ashley-san is just amazing af, I love her music, I love her... everything. And fucking hell Yu-chan is SOOOOOOOOOOOOO lucky, that she gets to have a cool goth girlfriend who is also a witch and also a cool singer and does really cool furry art and stuff...\c-\n" "\n" -"\cfAnyway, horniness aside, the other peeps from her band, cool too, really. Good friends with all of them, heck, even the huge one, that Maruku gal. Well, she barely talks and looks a bit scary... but is actually really nice, and one hell of a chuuni. And Mykka... ho boi, all fucking charm. I actually learned most of what I know about gods and stuff from her. She's always happy to talk for hours and hours about \"lore\", and shows me really cool things she can do with her powers too (she can make candy appear out of nowhere, good shit).\c-\n" +"\cfAnyway, the other peeps from her band, cool too, really. Good friends with all of them, heck, even the huge one, that Maruku gal. Well, she barely talks and looks a bit scary... but is actually really nice, and one hell of a chuuni. And Mykka... ho boi, all fucking charm. I actually learned most of what I know about gods and stuff from her. She's always happy to talk for hours and hours about \"lore\", and shows me really cool things she can do with her powers too (she can make candy appear out of nowhere, good shit).\c-\n" "\n" -"\cfAnd last, in the case of Py, the smol pink girl... We're kinda maybe not really in very good terms because of some dumb comments I made which I honestly regret. Look, in my defense, I had no idea and I'm really REALLY blunt with the shit I say sometimes, I can't help it. And yes, sometimes I may casually ask someone who I find hot to \"send nudes\" or whatever but... ah, damn it all.\c-\n" +"\cfAnd last, in the case of Py, the smol pink girl... I expected her to be all cuteness but she's totally a badass. I hear she's even stronger than her boyfriend, which is crazy considering that guy has been in two world wars. Like... I saw this one thing she did where she grappled him and the guy just took it and... ... I think he liked it? Welp...\c-\n" "\n" -"\cfYes, I'm in her list of \"undesirables who have asked for dick pics\".\c-"; +"\cfYeah, Ashley-san and her friends are pretty cool.\c-"; +SWWM_LORETAG_BALLSBOMB = "Ballsy Bomb"; +SWWM_LORETAB_BALLSBOMB = "Item"; +SWWM_LOREREL_BALLSBOMB = "NosKora;Saya"; +SWWM_LORETXT_BALLSBOMB = +"\cxDesignation:\c-\n" +"\cf Ballsy Bomb\c-\n" +"\cxManufacturer:\c-\n" +"\cf Plutoni Incorporated\c-\n" +"\cxClassification:\c-\n" +"\cf Cluster Bomb\c-\n" +"\n" +"The \cfBallsy Bomb\c- is a special device designed for one thing and one thing only: The delivery of death. Devised by students of the \cfUniversity of Nos-Kora\c-, and featuring technology that is not quite understandable by the untrained mind, this explosive artifact is a must-have for those who want to let their enemies experience what it's like to be pelted by dozens of solid, high-velocity metal balls. When interviewed, the project leader simply stated: \"You're gonna love our balls\".\n" +"\n" +"\cfPlutoni Incorporated\c-, the armament distribution subsidiary of the university, should not be held responsible for any misuse of this device, and must not be questioned regarding any peculiar behavior that the device's payload may have.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cf\"Peculiar behavior\" is one way of putting it. I saw it during a test fire, I saw what one of the balls did to that chunk of ballistic gel: The whole thing EXPLODED while this fucking... Loud cartoon bonk noise could be heard. There was a flash of light and everything. I was told it's something that happens \"by random chance\"... Good fucking god...\c-\n" +"\n" +"\cfThose things can deal random crits. I'm not even joking, what the actual hell... No wonder that nerd recommended it to us.\c-"; SWWM_LORETAG_BELT = "Utility Belt"; SWWM_LORETAB_BELT = "Item"; SWWM_LOREREL_BELT = "Symnatek;Hammerspace;Keychain"; @@ -332,7 +552,7 @@ SWWM_LORETXT_BIGSHOT2 = "\cfHonestly I'm not surprised the guy survived the whole thing, probably blasted a thousand demons himself with the shit he's got in there, too. Also, no fucking clue what that thing about fights and faces and shit is, must've gone even crazier with all the demon invasion stuff happening.\c-"; SWWM_LORETAG_BLACKMANN = "Blackmann Arms"; SWWM_LORETAB_BLACKMANN = "People"; -SWWM_LOREREL_BLACKMANN = "BigShot;Saya"; +SWWM_LOREREL_BLACKMANN = "Hermann;BigShot;Saya"; SWWM_LORETXT_BLACKMANN = "\cxName:\c-\n" "\cf Blackmann Arms Ltd.\c-\n" @@ -345,14 +565,14 @@ SWWM_LORETXT_BLACKMANN = "\n" "\cfBlackmann Arms\c- was founded in 1924 by \cfDaniel Ischer\c-, initially under the name of \cfSchwarzmann Exotischwaffen\c-, as an \"exotic weapons\" workshop in Cologne, Germany. When the family migrated to America in 1933, in the beginnings of the \cfNazi Regime\c-, the shop \"americanized\" itself under its current name, and quickly rose to fame designing all sorts of ingenious weaponry for the allied forces, and taking all sorts of requests for original designs, their slogan becoming \"if you can imagine it, we can make it\".\n" "\n" -"Blackmann became quite popular due to not only the swiftness in designing all kinds of odd firearms clients would request, but also some of their own original inventions, such as the \cfSilver Bullet\c- series of ultra-high caliber sniper rifles, or the \cfPuntzer\c- series of firearms designed to \"penetrate any material, no matter how resilient\", thanks to their patented \cfSpin Motion Wedge (SMW)\c- bullet design.\n" +"Blackmann became quite popular due to not only the swiftness in designing all kinds of odd firearms clients would request, but also some of their own original inventions, such as the \cfSilver Bullet\c- series of ultra-high caliber anti-materiel rifles, or the \cfPuntzer\c- series of firearms designed to \"penetrate any material, no matter how resilient\", thanks to their patented \cfSpin Motion Wedge (SMW)\c- bullet design.\n" "\n" "As of 2148, the company is handled by \cfHermann E. Ischer\c- the great-great-grandson of its founder, who has made it his personal goal that any newly created weapon to come out of their factories capable of holding more than one bullet should have the ability to shoot out everything at once, or as quickly as possible. The man himself is also quite popular on social media due to his status as the world record holder for \"largest eyebrows\", often showing them off or talking in detail about the maintenance of such a thing.\n" "\n" "A big part of the company's funding comes from \cfMr. BIG SHOT\c-, who, according to reports by Hermann himself, regularly commissions all sorts of ludicrous shotgun designs that no sane man would ever think of using. Out of all these strictly private designs, one sole weapon was eventually made public, the \cfWallbuster\c-, a 25-barrel revolving shotgun, chambered in 6-gauge, and said to be capable of \"cleanly breaching through a barrier of pure lead half a meter thick\".\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfYeah, yeah. Cool guns, and stuff. Some even got the blessing of Gun Jesus himself, too (god how I fucking miss him). But, yeah... I did realize one thing when digging up stuff to write this entry. It's about the name itself of this whole company. I'm pretty sure it's a reference to something, yeah... something big... and black... you get it now? Yes, that's it. Of course it's a fucking joke about BBC, OF... FUCKING... COURSE. The fucking guy really wanted everyone to think about his DICK whenever they looked at the massive guns he made??? DUDE, GROSS!!!\c-"; +"\cfYeah, yeah. Cool guns and stuff, but yeah... The guy... You've seen them, we've all seen them, we've seen THOSE. How the hell he's managed to grow them so big is beyond me... And he never told me why, which is the worst part. Why the hell would he want to have the world's largest eyebrows? Is there a joke I'm not getting here???\c-"; SWWM_LORETAG_BLASTSUIT = "Blast Suit"; SWWM_LORETAB_BLASTSUIT = "Item"; SWWM_LOREREL_BLASTSUIT = "Symnatek;Cyrus"; @@ -386,9 +606,9 @@ SWWM_LORETXT_CANDYGUN = "\n" "\cfPrimary Fire:\c- Single shots of explosive sweetness. A direct hit should be lethal on most targets, but if they somehow don't drop dead from that, the additional crackles and pops might do the deed, or spread the damage to nearby targets, too.\n" "\n" -"\cfSecondary Fire:\c- Perform an \"explosive reload\", just like with a standard Explodium Gun. Note that unlike its weaker counterpart, the yield is much more extreme. It is best practice to always have one spare magazine at the ready for the reload, so you aren't left with an unusable weapon should your throw miss the target.\n" +"\cfSecondary Fire:\c- Perform an \"explosive reload\", just like with a standard Explodium Gun. Note that unlike its weaker counterpart, the yield is much more extreme. For the sake of practicality, you cannot perform this action unless you have some ammo to reload the weapon afterwards, and you need at least one round in the magazine for it to actually explode.\n" "\n" -"\cfCombo Fire:\c- By holding secondary and primary fire (in that order) you can opt to, instead of performing the usual explosive reload, leave the magazine in the gun, armed and ready, then throw the whole weapon as a grenade, for the ultimate destruction. As always, make sure you at least have a spare and more ammo, or you'll be left with nothing. Due to this disposable nature, you're allowed to carry up to 4 spares in your inventory. Use them well.\n" +"\cfCombo Fire:\c- By holding secondary and primary fire (in that order) you can opt to, instead of performing the usual explosive reload, leave the magazine in the gun, armed and ready, then throw the whole weapon as a grenade, for the ultimate destruction. Make sure you at least have a spare and more ammo, or you'll be left with nothing if you do this. You're allowed to carry up to 4 spares in your inventory.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfI don't get it, really don't. How is it that mixing that exploding shit with candy does this? Oh, whatever, I still love every second of it, but the pretty fireworks make me really nostalgic, for some reason...\c-\n" @@ -421,6 +641,38 @@ SWWM_LORETXT_CHANCEBOX = "\cfOK yeah maybe the moth girls thing is something that I WOULD want, but you get what I mean.\c-\n" "\n" "\cf... god I wish moth girls were real\c-"; +SWWM_LORETAG_CINNAMON = "Valentine, Cinnamon"; +SWWM_LORETAB_CINNAMON = "People"; +SWWM_LOREREL_CINNAMON = "Marisa;Ibuki;Hell;Anarukon;Saya"; +SWWM_LORETXT_CINNAMON = +" \cxFull Name:\c-\n" +" \cf Cinnamon Valentine\c-\n" +" \cxNationality:\c-\n" +" \cf Odmorian\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2013-04-10\c-\n" +" \cxOccupation:\c-\n" +" \cf Mercenary (ranger)\c-\n" +" \cxTwitter\c-\n" +" \cf @cinnamon_valentine\c-\n" +"\n" +"\n" +"Born in \cfNeimishi, Odmorian\c- as the youngest of three step-brothers. Much like his siblings, \cfCinnamon\c- never met his own father, as per the traditions of his people, and was solely raised by his mother, retired athlete \cfCocoa Valentine\c-. Upon reaching adulthood, he was conscripted into military service for his war-torn country, where he earned the title of \cf\"Blademaster\"\c-. Despite this, he has a preference towards the use of firearms, being a rather skilled marksman as well.\n" +"\n" +"How he came to meet \cfMarisa Azanth\c- is not well known. The couple refrains from speaking of this subject. Nevertheless, the two would marry in 2117, whereupon he moved to Earth with her, staying at the same house shared with \cfIbuki Miyamoto\c- and other acquaintances.\n" +"\n" +"Cinnamon appears to possess a special ability, granted by his wife, known as a \cfRevenant Curse\c-. His left eye is seemingly \"possessed\" by a fragment of a demon deity, so-called \cfThe Formless One\c-, which allows him to quickly return to life should he fall in battle, even if his whole body is destroyed. Though of a different nature, this is fairly similar to the true immortality that his \cfAnarukon\c- wife has. One would guess that she did this so the two could remain together for all of eternity.\n" +"\n" +"He regularly accompanies Marisa in her various adventures, assisting in combat and, as often stated humorously, providing \"emotional support\" for her.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThis guy, yup. Again not much to say besides what I mentioned in Mari-san's article. I could try lore-dumping about the Odmorian people or something, but I don't really know that much.\c-\n" +"\n" +"\cfThe whole thing with these folks, from a country also called Odmorian, is that they used to be all over a whole-ass continent, it was their homeland and stuff, but then a bunch of weirdos started invading from the south and like, took over most of their territory. Now they're pretty much relegated to three major cities in the north. Neimishi, the capital, and also Werm and Eexy, kinda funky names, yeah.\c-\n" +"\n" +"\cfWhat else is there... Ah, well, apparently there's this weird stuff going on where they can't reproduce among themselves, so the women basically have to seek out men of other species. Cinnamon's brothers have the same dad, but he's got another one. No info on who they are, seems like they'd rather stay anonymous.\c-\n" +"\n" +"\cfAlso, I touched his abs once. I asked for permission first, of course. I mean, obviously.\c-"; SWWM_LORETAG_COLLAR = "Lucky Collar"; SWWM_LORETAB_COLLAR = "Item"; SWWM_LOREREL_COLLAR = "Demolitionist;Saya;Ibuki;Yui;Ashley"; @@ -435,9 +687,9 @@ SWWM_LORETXT_COLLAR = "This is a very stylish and fashionable accessory, personally crafted by \cfSaya Miyamoto\c-, with much love and care, and additionally infused with protective magical energy by \cfAshley Knox\c-. As long as you wear this, your adventures will become much easier, especially if you're prone to accidentally hitting yourself with your own explosives. It can also absorb most of the damage you receive should you be in REAL danger, potentially allowing you to make an escape. One final detail of note is that no matter what, it will never break.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfFor the last time! It's NOT a BDSM thing, I swear to god. Everyone keeps poking me about it, and every time it's the same. It's just a damn cool thing that I thought would look good on you, and on Ibuki too, but people keep misinterpreting it, *sigh*...\c-\n" +"\cfIt's just such a cool accessory. It looks good on Ibuki, and so I thought it would look good on you, too.\c-\n" "\n" -"\cfI gotta say, tho, it really does look super cute on both of you. And damn, if Yu-chan's big tiddy goth gf can work some magic in there. I forgot to put it there in the main entry, but there's also another thing about the collar. Ashley-san taught me, that when whoever's wearing it is like... about to die, I can \"recall\" you here at will. So yeah, just so you know, if you go down in there and can't do an emergency reboot, you won't be lost forever, I'll make sure to bring you back and patch you up real nice, I promise.\c-"; +"\cfOh, also, I forgot to put it there in the main entry, but there's also another thing about the collar. Ashley-san taught me, that when whoever's wearing it is like... about to die, I can \"recall\" you here at will. So yeah, just so you know, if you go down in there and can't do an emergency reboot, you won't be lost forever, I'll make sure to bring you back and patch you up real nice, I promise.\c-"; SWWM_LORETAG_CRONOS = "Cronos"; SWWM_LORETAB_CRONOS = "Lore"; SWWM_LOREREL_CRONOS = "SerpentRiders;Saya;Ashley;Parthoris"; @@ -461,7 +713,7 @@ SWWM_LORETXT_CRONOS = "\cfOh yeah also... \"puzzles\"? Knowing our audience, chat's going to be flooded with ResidentSleeper every single time, I bet, huhuhuh...\c-"; SWWM_LORETAG_CYRUS = "Cyrus Enterprises"; SWWM_LORETAB_CYRUS = "People"; -SWWM_LOREREL_CYRUS = "Kereshnovka;Saya;Demolitionist"; +SWWM_LOREREL_CYRUS = "Reubens;Kereshnovka;Saya;Demolitionist"; SWWM_LORETXT_CYRUS = "\cxName:\c-\n" "\cf Cyrus Enterprises\c-\n" @@ -476,16 +728,14 @@ SWWM_LORETXT_CYRUS = "\n" "Cyrus is mainly focused on bringing highly advanced Qurensniv technology to humans. Among the company's most notable creations, there's \cfHammerspace™\c-, a method of \"offworld storage\" which allows individuals to travel light, needing only to carry a small device to store and deploy any objects they need at will. Many comments have been made on the rather \"nerdy\" naming of the company's various products, this being one of them.\n" "\n" -"In reference to the man himself, Reubens is well known for not only being a cunning inventor, but also an expert in hand to hand combat, being a ten times \cfKo-Ron-Jai\c- (Qurensniv martial arts) champion, and also an excellent sharpshooter, able to land a hit on the head of a matchstick from 1km away with a mere revolver (this last fact hasn't yet been confirmed, however). He's also an avid gamer, and is often noted to draw comparisons between real life and videogames, to a worrying degree at times.\n" -"\n" "Cyrus Enterprises, furthermore, is the current main backer of the \cfDemolitionist\c- program, providing the required equipment for their missions, and personally paying for every hostile target the Demolitionist takes down, among other things.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfHe's a nerd, NEEEEEEEERD, BIG STINKIN' NERD!\c-\n" +"\cfNerdguy's own business. All good and nerdy right there.\c-\n" "\n" -"\cfThere, I said it. Like, sure, the stuff he makes, cool and all, but GOOD LORD the guy pisses me off with his stupid videogamey nerdy crap. Not letting you go in fully armed and instead deciding to fucking YEET your shit all over the place for you to pick up? That's one thing. Deciding that after every mission you have to RETURN all the stuff you got, that's another, too. Dropping some cash every time you blow up baddies, that I can accept, though, helps cover the costs of everything.\c-\n" +"\cfI know I use that word a lot, yeah, but I'm just stating the facts. Guy's a big nerd.\c-\n" "\n" -"\cfYou know, he may get on my nerves sometimes, but the guy was the first serious business partner I ever had, and damn, he's not that bad outside of all the nerditude he expels... I mean, to be honest, I'm also a big stinky nerd too, and you can quote me on that.\c-"; +"\cf... And so am I, for that matter.\c-"; SWWM_LORETAG_CYTHO = "Valathor, Cytho"; SWWM_LORETAB_CYTHO = "People"; SWWM_LOREREL_CYTHO = "Hell;Ellen;Anarukon;DemonInvasion;UAC;Saya;AkariLabs;Demolitionist"; @@ -502,11 +752,11 @@ SWWM_LORETXT_CYTHO = " \cxTwitter:\c-\n" " \cf @incuvalathor\c-\n" "\n" -"Born in the now fallen Iskar township in 2008 as one of the youngest men of the humble \cfHouse Valathor\c-, \cfCytho\c- took to the family business upon reaching adulthood, quickly climbing the ranks of \cfHell\c-'s sex work industry, partly due to his innate beauty, but also the rapidly accumulating \"satisfied customers\" he would regularly service, and the many pupils he'd take under his wing. By 2028, he had made of Earth his second home, where he would open up an account on social media for a more modern method of attracting new clientele.\n" +"Born in the now fallen Iskar township in 2008 as one of the youngest men of the humble \cfHouse Valathor\c-, \cfCytho\c- took to the family business upon reaching adulthood, quickly climbing the ranks and garnering quite a lot of \"cred\" thanks to his various satisfied customers and the many pupils he'd take under his wing. By 2028, he had made of Earth his second home, where he would open up an account on social media for a more modern method of attracting new clientele.\n" "\n" -"One day, however, everything changed. A large number of incubi would report being \"creeped out\" by a woman's unreasonable requests. Curious, Cytho would then set forth to try and find her, to see what exactly his colleagues were finding so unreasonable. And that, is how he met \cfElena Yanikov XVI\c-, an \cfAnarukon\c- woman \"struck by the curse of eternal loneliness\", who so desperately wished to find a husband that she eventually resourced to summoning demons and begging for them to marry her. As expected, all of them had rejected her pleas, no matter how hard she tried, as many among demonkind were wary of her kind. Cytho, however, took pity on her, and accepted, on one condition: They would have to go on a date first.\n" +"One day, however, everything changed. Many of his colleagues would report being \"creeped out\" by a woman's unreasonable requests. Curious, Cytho would then set forth to try and find her, to see what exactly they were finding so unreasonable. And that, is how he met \cfElena Yanikov XVI\c-, an \cfAnarukon\c- woman \"struck by the curse of eternal loneliness\", who so desperately wished to find a husband that she eventually resourced to summoning demons and begging for them to marry her. As expected, all of them had rejected her pleas, no matter how hard she tried, as many among demonkind were wary of her kind. Cytho, however, took pity on her, and accepted, on one condition: They would have to go on a date first.\n" "\n" -"Some time later, the archduke announced his retirement from sex work, having \"reformed\" as the faithful husband to an Anarukon woman. While his friends and family celebrated, others saw this as an affront. House Valathor was heavily criticised for not rejecting him right there and then, to the point a small war broke out, as the rival \cfHouse Irishtanar\c- would crush their hometown in \"protest\". That day, Cytho closely witnessed the cruelty of his own kind, as the sole survivor of that massacre.\n" +"Some time later, the archduke announced his retirement from business, having \"reformed\" as the faithful husband to an Anarukon woman. While his friends and family celebrated, others saw this as an affront. House Valathor was heavily criticised for not rejecting him right there and then, to the point a small war broke out, as the rival \cfHouse Irishtanar\c- would crush their hometown in \"protest\". That day, Cytho closely witnessed the cruelty of his own kind, as the sole survivor of that massacre.\n" "\n" "Since then, he lives in Boston with his wife and their three children. His social media account's purpose has been shifted to communicating the news of what transpires in his home realm, sourced from the many contacts he's gathered over the years, as representative of the subjugated civilian population. Although the vast majority of Earth's population would not take him seriously, not until the \cfDemon Invasion\c- of 2148 began.\n" "\n" @@ -515,13 +765,45 @@ SWWM_LORETXT_CYTHO = "And thus, through their collaboration, the \cfDemolitionist\c- was born.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfSince the very moment I met him, back when I first visited Ellen-san's family, I knew he was more than just a cool, handsome femboy demon grandpa. Yeah, Cytho-sama's the real deal, and the blood that runs through his veins is more noble than that of any pesky, pompous trashlord with a fancy title out there.\c-\n" +"\cfSince the very moment I met him, back when I first visited Ellen-san's family, I knew he was more than just a cool, handsome demon grandpa. Yeah, Cytho-sama's the real deal, and the blood that runs through his veins is more noble than that of any pesky, pompous trashlord with a fancy title out there.\c-\n" "\n" "\cfAnd yeah, surprise surprise... He's your dad (well, kinda). But you already knew that, didn't you?\c-\n" "\n" -"\cfSeriously, if it wasn't for him, all of this would have never been possible. We owe a lot to him... I just hope I don't have to repay him with my body (not that I would mind, kihihihi).\c-\n" +"\cfSeriously, if it wasn't for him, all of this would have never been possible. We owe a lot to him... I just hope I don't have to repay him with my soul or something.\c-\n" "\n" "\cfPS: His name is pronounced \"Kaizo\", you kept saying it wrong every time. But don't worry, you're not the first.\c-"; +SWWM_LORETAG_DANA = "Blackwood, Dana"; +SWWM_LORETAB_DANA = "People"; +SWWM_LOREREL_DANA = "UAC;Ibuki;WhiteScar;UAC;DemonInvasion;Saya"; +SWWM_LORETXT_DANA = +" \cxFull Name:\c-\n" +" \cf Dana Arukan Blackwood\c-\n" +" \cxNationality:\c-\n" +" \cf Scottish-American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1985-02-02\c-\n" +" \cxOccupation:\c-\n" +" \cf Private Military Contractor\c-\n" +" \cxTwitter:\c-\n" +" \cf @boyhunter85\c-\n" +"\n" +"\n" +"Born in \cfMichigan\c-, as the single daughter of \cfScottish Navy General Lena Blackwood\c- and \cfKanethe Railway Engineer Menas Blackwood (né Arukan)\c-, \cfDana\c- is one very peculiar individual. Familiar with the harshness of the human condition since an early age, she strives to aid anyone in need, while also being very, very aggressively against the authorities that fail to do so every time, especially cops.\n" +"\n" +"One may think that this anti-authoritarian sentiment would contradict her long career as a gun-for-hire, sometimes under very specific companies, but she makes it a personal rule to never serve the interests of anyone but \"the good people\", which has caused many a headache for potential employers. Standing by protesters, taking part in rescue efforts following natural disasters, providing humanitarian aid in war zones... It's given her quite the reputation that many out there cannot ignore.\n" +"\n" +"Another thing she is known for, however, is her penchant for capturing the hearts of young men. Dubbed a \"cougar\" by fans, something she's personally embraced, it does not matter the circumstance, someone will eventually land in her sights, comically so at times.\n" +"\n" +"Following the events of the \cfWhite Scar\c-, she would make a name for herself patrolling the DC exclusion zone, where she eventually came across \cfIbuki Miyamoto\c-, the \cfRed Oni\c-. This resulted in a very special friendship, bonding over certain shared interests. Dana, however, remained in the wasteland to further assist with reconstruction efforts, eventually landing a position as an \cfUAC\c- mercenary.\n" +"\n" +"And indeed, she was one of the first responders when the \cfDemon Invasion\c- began, joining the quickly forming resistance force.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThe half-dwarf onee-san. Has good taste, both in men and in guns. I also like how she's kept the MRE review video scene alive, even showing off some of the stuff from other civilizations.\c-\n" +"\n" +"\cfI consider her one of the select few Americans I like. She's cool, except when she's drunk off her ass. Though at least that makes for some really funny interactions with Taro-nii, guhuhu...\c-\n" +"\n" +"\cfStill hold it against her that she worked for the stinkin' UAC, but it's not like she had much of a choice apparently. Oh well, at least now her contract has \"expired\", in a way.\c-"; SWWM_LORETAG_DECADEMECH = "Decade Mechanics"; SWWM_LORETAB_DECADEMECH = "Lore"; SWWM_LOREREL_DECADEMECH = "XAnimen;EngineTech;Nedoshiaan;Saya"; @@ -581,10 +863,10 @@ SWWM_LORETXT_DEEPIMPACT = "\cfReload:\c- Refilling the internal air tank is done by repeatedly pulling on the side lever. You will know the tank is full once a smart mechanism locks it in place, preventing the tank from being overfilled and potentially causing it to explode.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfI know you're hella strong, so you better not pull on it too hard. Wait, that sounds wrong... fuck. Forget I said that. Forget you read it, even.\c-"; +"\cfI know you're hella strong, so you better not pull on it too hard. Wait, that sounds wrong...\c-"; SWWM_LORETAG_DEMOLITIONIST = "Demolitionist"; SWWM_LORETAB_DEMOLITIONIST = "People"; -SWWM_LOREREL_DEMOLITIONIST = "AkariLabs;Ibuki;Saya;Zanaveth2;Hell;UAC;Nekuratek;Belt;Collar;Propulsor;Hammerspace;Display;Voicebox;Maidbot;EngineTech;Kirin;DemonInvasion;Cytho"; +SWWM_LOREREL_DEMOLITIONIST = "AkariLabs;Ibuki;Saya;Zanaveth2;Hell;Rika;UAC;Nekuratek;Belt;Collar;Propulsor;Hammerspace;Display;Voicebox;Maidbot;EngineTech;Kirin;DemonInvasion;Cytho"; SWWM_LORETXT_DEMOLITIONIST = " \cxFull Name:\c-\n" " \cf Akari Labs First Generation Autonomous Combat Unit\c-\n" @@ -605,14 +887,14 @@ SWWM_LORETXT_DEMOLITIONIST = "\n" "The AI core of the Demolitionist is built on the same technology as Akari Labs' \cfMaidbots\c-, the \cfNekuronbot AI Framework\c-, which had been provided to \cfSaya Miyamoto\c- herself as a gift of friendship from \cfZanaveth Nekuraku II\c-, the lead AI engineer and current CEO of \cfNekuratek\c-. Thanks to this technology, and combined with many other features such as the \cfCuteEmotion Display\c- that allows the unit to visibly show emotion through a set of simple animated faces or the \cfLoudboi Voicebox\c- that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.\n" "\n" -"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n" +"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 (following extensive in-house training by \cfRika Isuzu\c-) on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n" "\n" -"Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of \cfDemo Miyamoto\c-, and being referred to by Saya as her \"child\". Demo can be described as \"quite chatty\" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however.\n" +"Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having been given the full name of \cfDemo Miyamoto\c-. Demo can be described as \"quite chatty\" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfHeh, yeah... that stream was fun. People asked so many questions, and your answers sure caught some of them by surprise, huhu...\c-\n" "\n" -"\cfBy the way, there is also one more thing that makes you unique. It's that \"lucky collar\" I made for you, you know. Ibuki had one, and it sure helped her, so I thought that it was a good idea to give it to you too. Wish people weren't going all \"wow you gave them that BDSM thing?\", though. IT IS NOT, it has NOTHING to do with that.\c-\n" +"\cfBy the way, there is also one more thing that makes you unique. It's that \"lucky collar\" I made for you, you know. Ibuki had one, and it sure helped her, so I thought that it was a good idea to give it to you too. Wish people weren't going all \"wow, so you treat them like a pet or something?\", though. They're getting the wrong idea...\c-\n" "\n" "\cfAnyway, if you're finished reading about yourself, how about you get back to work? Yes, Demo-chan, I know you are reading this, at this very moment. OoOOoOoOoOooo... spooky, isn't it?\c-\n" "\n" @@ -637,16 +919,16 @@ SWWM_LORETXT_DEMOLITIONIST2 = "\n" "The AI core of the Demolitionist is built on the same technology as Akari Labs' \cfMaidbots\c-, the \cfNekuronbot AI Framework\c-, which had been provided to \cfSaya Miyamoto\c- herself as a gift of friendship from \cfZanaveth Nekuraku II\c-, the lead AI engineer and current CEO of \cfNekuratek\c-. Thanks to this technology, and combined with many other features such as the \cfCuteEmotion Display\c- that allows the unit to visibly show emotion through a set of simple animated faces or the \cfLoudboi Voicebox\c- that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.\n" "\n" -"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n" +"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 (following extensive in-house training by \cfRika Isuzu\c-) on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n" "\n" -"Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of \cfDemo Miyamoto\c-, and being referred to by Saya as her \"child\". Demo can be described as \"quite chatty\" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however.\n" +"Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having been given the full name of \cfDemo Miyamoto\c-. Demo can be described as \"quite chatty\" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however.\n" "\n" "Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the \"ultimate weapon\" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Meido and Ibuki.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou're so cute, Demo-chan. I really outdid myself with that Maidbot body, for sure. It seriously caught me by surprise when, as soon as you swapped over to it, you just... jumped in my arms like that and started kissing me all over and... whew~\c-\n" "\n" -"\cfI'm really happy that you're now part of our little Cutie Club (\c-\cg♥\c-\cf), you know. And yeah, I didn't want to just go around swapping it too so I did make a second collar for you to wear. Hey, come on, I'm still saying it's got nothing to do with some sort of BDSM kink or anything.\c-\n" +"\cfI'm really happy that you're now part of our little Cutie Club (\c-\cg♥\c-\cf), you know.\c-\n" "\n" "\cfAnyway, no more reading about yourself while you're working. Go away, silly.\c-"; SWWM_LORETXT_DEMOLITIONIST3 = @@ -669,21 +951,21 @@ SWWM_LORETXT_DEMOLITIONIST3 = "\n" "The AI core of the Demolitionist is built on the same technology as Akari Labs' \cfMaidbots\c-, the \cfNekuronbot AI Framework\c-, which had been provided to \cfSaya Miyamoto\c- herself as a gift of friendship from \cfZanaveth Nekuraku II\c-, the lead AI engineer and current CEO of \cfNekuratek\c-. Thanks to this technology, and combined with many other features such as the \cfCuteEmotion Display\c- that allows the unit to visibly show emotion through a set of simple animated faces or the \cfLoudboi Voicebox\c- that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all.\n" "\n" -"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n" +"The first unit, affectionately known as \cfDemo-chan\c- by Saya, was deployed in June of 2148 (following extensive in-house training by \cfRika Isuzu\c-) on \cfUnion States\c- territory in order to combat the demonic invasion brought upon by the \cfUAC\c-'s interventions on Hell.\n" "\n" -"Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of \cfDemo Miyamoto\c-, and being referred to by Saya as her \"child\". Demo can be described as \"quite chatty\" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however.\n" +"Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having been given the full name of \cfDemo Miyamoto\c-. Demo can be described as \"quite chatty\" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however.\n" "\n" "Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the \"ultimate weapon\" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Meido and Ibuki. Since May of 2171, they are also additionally engaged to \cfKirin Xanai\c-, leader of the \cfSykhai Empire of Akkou\c-.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou're so cute, Demo-chan. I really outdid myself with that Maidbot body, for sure. It seriously caught me by surprise when, as soon as you swapped over to it, you just... jumped in my arms like that and started kissing me all over and... whew~\c-\n" "\n" -"\cfI'm really happy that you're now part of our little Cutie Club (\c-\cg♥\c-\cf), you know. And yeah, I didn't want to just go around swapping it too so I did make a second collar for you to wear. Hey, come on, I'm still saying it's got nothing to do with some sort of BDSM kink or anything.\c-\n" +"\cfI'm really happy that you're now part of our little Cutie Club (\c-\cg♥\c-\cf), you know.\c-\n" "\n" "\cfAnyway, no more reading about yourself while you're working. Go away, silly.\c-"; SWWM_LORETAG_DEMONINVASION = "Demon Invasion"; SWWM_LORETAB_DEMONINVASION = "Lore"; -SWWM_LOREREL_DEMONINVASION = "Hell;UAC;Demolitionist;WhiteScar;Nukuri;Doomguy;Anarukon;Saya"; +SWWM_LOREREL_DEMONINVASION = "Hell;UAC;Demolitionist;WhiteScar;Nukuri;Doomguy;Anarukon;Saya;Archdemons"; SWWM_LORETXT_DEMONINVASION = "\cxName:\c-\n" "\cf Demon Invasion\c-\n" @@ -778,7 +1060,7 @@ SWWM_LORETXT_DEMONINVASION4 = "\cfUpdate: Haha and now I know everything. EVERYTHING about it. Boy, they're so fucked. You saw, too, we all did. Once we find the missing prince, it's game over for that stupid-ass illusionist schmuck. 9.3 billion demons bred for war? All of them won't stand a chance, it's going to be raining blood for days in hell, if what we heard about him is true.\c-"; SWWM_LORETAG_DEMOPLUSH = "Demo Plushie"; SWWM_LORETAB_DEMOPLUSH = "Item"; -SWWM_LOREREL_DEMOPLUSH = "Demolitionist;NosKora;Saya"; +SWWM_LOREREL_DEMOPLUSH = "Nukritas2xx;Demolitionist;Saya"; SWWM_LORETXT_DEMOPLUSH = "\cxDesignation:\c-\n" "\cf Demolitionist Plushie\c-\n" @@ -817,7 +1099,7 @@ SWWM_LORETXT_DEVANIKNA = "Lesser known facts about the Devanikan include their strong defense of racial purity. When princess \cfDevai Unissix\c-, current head of the clan, announced her marriage to \cfSerwand Nerukousei\c-, a chimera constructed by a wandering archwizard, he started receiving threats from the population, calling him a \"beast in man's form\" and accusing him of corrupting the Unissix bloodline as a means to take control of their nation. These threats extended towards their own children too, who were denoted as \"crossbred abominations\" of mixed Devanikan and chimeric blood. It wasn't until Deneva's first major achievements as a warrior that the persecution they faced eventually stopped. Ever since then, the hostility they faced has been gradually fading, as newer generations became much more accepting of race mixing.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfYeah, Misa's people are cool af. Well, excluding the whole racism part. That's a load of fucking shit, for sure. I heard from Zana-sama that if she hadn't met Misa back then, she would have probably taken her own life from all of that she went through. Fuck... But at least, she's living happily with Zana-sama (lucky devil), and yeah, things are getting better in there now at least.\c-\n" +"\cfYeah, Misa's people are cool af. Well, excluding the whole racism part. That's a load of fucking shit, for sure. I heard from Zana-sama that if she hadn't met Misa back then... Fuck... But at least, she's living happily with Zana-sama (lucky devil), and yeah, things are getting better in there now at least.\c-\n" "\n" "\cfYou know, all this stuff, it reminds me of this one old JRPG series I played many many years ago, that was also all about people of dragon blood too... can't even remember what it was called, though. Heck, I even had Misa play it once and she kept talking about all the parallels and shit. Oh well, cool dragon warriors, fuck yeah.\c-"; SWWM_LORETAG_DISPLAY = "CuteEmotion"; @@ -831,9 +1113,9 @@ SWWM_LORETXT_DISPLAY = "\cxClassification:\c-\n" "\cf Display Device\c-\n" "\n" -"The \cfCuteEmotion\c- is a display device designed for use on robots. It can be used to present a wide variety of facial expressions, selected from a user-configurable library of images, each associated to some particular emotion or sentiment the AI may want to convey, thus enhancing the naturality of social interaction with them. The display is one-sided, allowing it to be aligned with the visual receptors of the robot for a more accurate match with any simulated eye movement.\n" +"The \cfCuteEmotion\c- is a display device designed for use on robots. It can be used to present a wide variety of facial expressions, selected from a user-configurable library of images, each associated to some particular emotion or sentiment the AI may want to convey, thus enhancing the naturalness of social interaction with them. The display is one-sided, allowing it to be aligned with the visual receptors of the robot for a more accurate match with any simulated eye movement.\n" "\n" -"There are many versions of the device, but the best known is the \"Monoglow\" model, made popular thanks to its use by the \cfDemolitionist\c-.\n" +"There are many versions of the device, but the best known is the \"Monoglow\" model, made popular thanks to its use by the \cfDemolitionist\c-. Other more flexible and user-tweakable models also exist, which are known to be quite popular within certain corners of the furry community.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfY'know, that thing just makes you so cute and huggable... It's, I mean... TOO DAMN CUTE!!!\c-\n" @@ -859,23 +1141,23 @@ SWWM_LORETXT_DIVINESPRITE = "\n" "\cfAs you may expect, this is also another thing that my god buddies have recommended. Normally these are only provided to heroes by special request... And you are our hero, Demo-chan, so this is for you.\c-\n" "\n" -"\cfPS: Don't try to eat it.\c-"; +"\cfPS: Don't try to eat it. That is NOT how it feels to chew five gum.\c-"; SWWM_LORETAG_DOOMGUY = "Doom Marine"; SWWM_LORETAB_DOOMGUY = "People"; SWWM_LOREREL_DOOMGUY = "UAC;Hell;Saya;AkariLabs;Demolitionist;Cytho"; SWWM_LORETXT_DOOMGUY = -"\cxFull Name:\c-\n" -"\cf CLASSIFIED\c-\n" -"\cxOther Names:\c-\n" -"\cf Doom Marine\c-\n" -"\cf The Lone Marine\c-\n" -"\cf Doomguy\c-\n" -"\cxNationality:\c-\n" -"\cf American\c-\n" -"\cxDate of Birth:\c-\n" -"\cf CLASSIFIED\c-\n" -"\cxOccupation:\c-\n" -"\cf Marine (UAC)\c-\n" +" \cxFull Name:\c-\n" +" \cf [CLASSIFIED]\c-\n" +" \cxOther Names:\c-\n" +" \cf Doom Marine\c-\n" +" \cf The Lone Marine\c-\n" +" \cf Doomguy\c-\n" +" \cxNationality:\c-\n" +" \cf American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf [CLASSIFIED]\c-\n" +" \cxOccupation:\c-\n" +" \cf Marine (UAC)\c-\n" "\n" "The \cfDoom Marine\c- is the lone survivor of the demonic invasions on the \cfUAC\c- bases of Phobos and Deimos. Having been transferred to \cfMars City\c- not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to \cfHell\c- itself and coming back, he was appointed as the organization's \"problem solver\".\n" "\n" @@ -884,22 +1166,22 @@ SWWM_LORETXT_DOOMGUY = "\cxSaya's Notes:\c-\n" "\cfAlright, IMPORTANT THING: don't get close to this guy, don't say anything to him, do not interact. If you two come across each other, stand back and let him work, or he might just go and start shooting you too.\c-\n" "\n" -"\cfBy the way, my congratulations to those UAC goons for how well-guarded they keep all the info about him. We don't even know his actual goddamn name, or his history from before all this shit started. Like, what even is this guy like? I haven't heard much of that, apart from the little info Cytho-sama could get out of his previous romp through Hell, but there was some mention of him liking rabbits? Cute bunnies?\c-\n" +"\cfBy the way, my congratulations to those UAC grunts for how well-guarded they keep all the info about him. We don't even know his actual goddamn name, or his history from before all this shit started. Yeah, I haven't heard much of what this guy is like, apart from the little info Cytho-sama could get out of his previous romp through Hell, but there was some mention of him liking rabbits? Cute bunnies?\c-\n" "\n" "\cfWell, maybe then, if you pretend those horns of yours are some bun ears, he might not shoot you on sight, who knows...\c-"; SWWM_LORETXT_DOOMGUY2 = -"\cxFull Name:\c-\n" -"\cf CLASSIFIED\c-\n" -"\cxOther Names:\c-\n" -"\cf Doom Marine\c-\n" -"\cf The Lone Marine\c-\n" -"\cf Doomguy\c-\n" -"\cxNationality:\c-\n" -"\cf American\c-\n" -"\cxDate of Birth:\c-\n" -"\cf CLASSIFIED\c-\n" -"\cxOccupation:\c-\n" -"\cf N/A\c-\n" +" \cxFull Name:\c-\n" +" \cf John Blazkowicz\c-\n" +" \cxOther Names:\c-\n" +" \cf Doom Marine\c-\n" +" \cf The Lone Marine\c-\n" +" \cf Doomguy\c-\n" +" \cxNationality:\c-\n" +" \cf American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2132-03-20\c-\n" +" \cxOccupation:\c-\n" +" \cf N/A\c-\n" "\n" "The \cfDoom Marine\c- is the lone survivor of the demonic invasions on the \cfUAC\c- bases of Phobos and Deimos. Having been transferred to \cfMars City\c- not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to \cfHell\c- itself and coming back, he was appointed as the organization's \"problem solver\".\n" "\n" @@ -910,20 +1192,22 @@ SWWM_LORETXT_DOOMGUY2 = "\cxSaya's Notes:\c-\n" "\cfDude's pretty much retired, and boy is it a well deserved rest. He's been into deeper shit than you, being the one to survive all that stuff on Mars and then being thrown around random places to \"save the day\". Last I heard, from Cytho-sama's own words, he had to deal with two other titans that the demon armies had in store. Both pretty much standing at the same level as ol' Baramun.\c-\n" "\n" -"\cfWhat surprised me the most is hearing what he said in an interview. That he has no hard feelings about you stealing the spotlight back then, seems to be a fan of your work, even, saying you're \"damn fine at ripping and tearing demon guts\". Neat.\c-"; +"\cfWhat surprised me the most is hearing what he said in an interview. That he has no hard feelings about you stealing the spotlight back then, seems to be a fan of your work, even, saying you're \"damn fine at ripping and tearing demon guts\". Neat.\c-\n" +"\n" +"\cfFunny detail, turns out we have the same birthday.\c-"; SWWM_LORETXT_DOOMGUY3 = -"\cxFull Name:\c-\n" -"\cf CLASSIFIED\c-\n" -"\cxOther Names:\c-\n" -"\cf Doom Marine\c-\n" -"\cf The Lone Marine\c-\n" -"\cf Doomguy\c-\n" -"\cxNationality:\c-\n" -"\cf American\c-\n" -"\cxDate of Birth:\c-\n" -"\cf CLASSIFIED\c-\n" -"\cxOccupation:\c-\n" -"\cf N/A\c-\n" +" \cxFull Name:\c-\n" +" \cf John Blazkowicz\c-\n" +" \cxOther Names:\c-\n" +" \cf Doom Marine\c-\n" +" \cf The Lone Marine\c-\n" +" \cf Doomguy\c-\n" +" \cxNationality:\c-\n" +" \cf American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2132-03-20\c-\n" +" \cxOccupation:\c-\n" +" \cf N/A\c-\n" "\n" "The \cfDoom Marine\c- is the lone survivor of the demonic invasions on the \cfUAC\c- bases of Phobos and Deimos. Having been transferred to \cfMars City\c- not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to \cfHell\c- itself and coming back, he was appointed as the organization's \"problem solver\".\n" "\n" @@ -972,21 +1256,19 @@ SWWM_LORETXT_ELLEN = "\n" "From a young age she showed quite the interest in \"exploring\" every corner of the city, first starting with just nearby abandoned buildings, then further expanding to pretty much any point of interest she could identify in the whole city. She began recording her urban explorations while still in elementary school, and uploading them to video sharing sites, earning quite a lot of popularity.\n" "\n" -"In the aftermath of the \cfWhite Scar\c-, Ellen used the skills she had gained in exploration to work as a scavenger alongside her mother, scouring the wasteland for valuable resources to bring back to the various shelters in the area. Through this she eventually met \cfIbuki Miyamoto\c-, the \cfRed Oni\c-, who had wandered the wastes for many years, becoming a \"legendary warrior\" of sorts due to her various feats. In the process of Ibuki being recalled back to Japan by \cfTaro Miyamoto\c-, of \cfAkari Labs\c-, Ellen decided that she wanted to go with them, citing that \"wandering around this dump is really boring anyway and I really want to see the world out there\".\n" -"\n" -"During her stay in Japan, she'd often spend her time with Taro, the two of them eventually dating some weeks after. Something which was followed by an announcement from Taro on social media citing: \"my wizard privileges have been revoked\".\n" +"In the aftermath of the \cfWhite Scar\c-, Ellen used the skills she had gained in exploration to work as a scavenger alongside her mother, scouring the wasteland for valuable resources to bring back to the various shelters in the area. Through this she eventually met \cfIbuki Miyamoto\c-, the \cfRed Oni\c-, who had wandered the wastes for many years, becoming a \"legendary warrior\" of sorts due to her various feats. In the process of Ibuki being recalled back to Japan by \cfTaro Miyamoto\c-, of \cfAkari Labs\c-, Ellen decided that she wanted to go with them, citing that \"wandering around this dump is really boring anyway and I really want to see the world out there\". During her stay in Japan, she'd often spend her time with Taro, the two of them dating some weeks after.\n" "\n" "Apart from her shared ancestry with renowned singer/guitarist \cfAshley Knox\c-, she also shares a much closer relation to her due to the fact her father is the grandson of Ashley's ex-husband, the late \cfFredrik Steiner\c-. Through this, and the fact they both are engaged to members of the Miyamoto family, they have become quite close. Ellen has even considered joining the band at some point, though as of this article's writing, this hasn't yet happened.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfHeh, typical of Taro nii-san, announcing to the whole damn world that he lost his fucking virginity. He really couldn't be any more subtle about it if he tried. So yeah, between him and Yu-chan, the two have scored themselves some immortal cuties, making me jealous as all fuck in the process. Like, seriously, how the fuck could ANYONE even want to date my absolute loser of a brother? I don't know what Ellen-san sees in him...\c-\n" +"\cfSo yeah, between Taro-nii and Yu-chan, the two have scored themselves some immortal cuties, making me jealous as all fuck in the process. Like, seriously, how the fuck could ANYONE even want to date my absolute loser of a brother? I don't know what Ellen-san sees in him...\c-\n" "\n" "\cfOh yeah, speaking of Ellen-san. She's a goddamn massive prankster, like, the most awfully skilled troll you could ever imagine, even. See, there was this one time... actually, I think I'll keep quiet about it, because it was embarrassing as all hell. My ass is still sore from back then. I'm NOT going to explain, fuck no. Use your imagination, Demo-chan.\c-\n" "\n" -"\cfAh, also, one super good thing about having her around. She's got some interesting connections. Yeah, most people don't know, but her gramps is a demon. Like, actual demon, from Hell and all. Some real cutie too. Name's Cytho Valathor, and he says he's a \"reformed incubus\", whatever that means. Whenever I need to know anything about what's going on in the land of fire 'n brimstone, he's the guy I go to.\c-"; +"\cfAh, also, one super good thing about having her around. She's got some interesting connections. Yeah, I'm of course talking about her demon grandfather. A certain cutie you may know called Cytho Valathor. Of course, whenever I need to know anything about what's going on in the land of fire 'n brimstone, there's no better source than Ellen-san's gramps.\c-"; SWWM_LORETAG_ENGINETECH = "Tach-Engine"; SWWM_LORETAB_ENGINETECH = "People"; -SWWM_LOREREL_ENGINETECH = "UAC;Nukuri;DecadeMech;Saya;Nekuratek;WhiteScar"; +SWWM_LOREREL_ENGINETECH = "Admun;UAC;Nukuri;DecadeMech;Saya;Nekuratek;WhiteScar"; SWWM_LORETXT_ENGINETECH = "\cxName:\c-\n" "\cf Tach-Engine Technology Institute\c-\n" @@ -1014,7 +1296,7 @@ SWWM_LORETAB_EVISCERATOR = "Item"; SWWM_LOREREL_EVISCERATOR = "Cyrus;BigShot;Hammerspace;Saya"; SWWM_LORETXT_EVISCERATOR = "\cxDesignation:\c-\n" -"\cf \"Eviscerator\" High Load Flechette Cannon\c-\n" +"\cf \"Eviscerator\" High Load Shrapnel Cannon\c-\n" "\cxManufacturer:\c-\n" "\cf Cyrus Enterprises\c-\n" "\cf Design by Mr. BIG SHOT\c-\n" @@ -1039,7 +1321,7 @@ SWWM_LORETXT_EVISCERATOR = "\cfWhy is there an \"owo\" face scribbled on every shell? Who did this? I want answers!\c-"; SWWM_LORETAG_EXPLODIUM = "Explodium"; SWWM_LORETAB_EXPLODIUM = "Lore"; -SWWM_LOREREL_EXPLODIUM = "Munch;Saya;ExplodiumGun"; +SWWM_LOREREL_EXPLODIUM = "Parker;Munch;Saya;ExplodiumGun"; SWWM_LORETXT_EXPLODIUM = "\cxName:\c-\n" "\cf Explodium\c-\n" @@ -1109,11 +1391,11 @@ SWWM_LORETXT_FORX = "\cxClassification:\c-\n" "\cf Propulsion Engine Manufacturer\c-\n" "\cxLocation:\c-\n" -"\cf Kent, Southern Ireland\c-\n" +"\cf Kent, England\c-\n" "\cxWebsite:\c-\n" "\cf https://forx.ie\c-\n" "\n" -"Founded in 2029 by \cfHarold Forx\c-, this company is credited with singlehandedly rescuing Southern Ireland (formerly known as the United Kingdom) from its long fall into ruin after \cfBrexit\c- in 2020, the \cfScottish Independence\c- in 2022 and their losses in the 2026 \cfIrish Reconquest\c- (which happened in retalation to their declaration of war on the island the year prior). Despite these mortal blows, \cfForx Aeronautics\c-, having appeared seemingly out of nowhere, founded by a man who, only years prior had been spending his life scavenging around junkyards, managed to pull in enough cash to rescue the whole territory only mere months after its foundation.\n" +"Founded in 2029 by \cfHarold Forx\c-, this company is credited with singlehandedly rescuing England from its long fall into ruin after \cfBrexit\c- in 2020, the \cfScottish Independence\c- in 2022 and their losses in the 2026 \cfIrish Reconquest\c- (which happened in retaliation to the former \cfUnited Kingdom\c-'s declaration of war on the island the year prior). Despite these mortal blows, \cfForx Aeronautics\c-, having appeared seemingly out of nowhere, founded by a man who, only years prior had been spending his life scavenging around junkyards, managed to pull in enough cash to rescue the whole territory only mere months after its foundation.\n" "\n" "Forx is currently the #1 supplier of propulsion engines for all types of aircraft, be it commercial jet planes, or even spaceships. Their dominance extends all across the eastern side of the Atlantic, as overseas, in America, the \cfUAC\c- still reigns supreme, with their own in-house technologies.\n" "\n" @@ -1126,9 +1408,9 @@ SWWM_LORETXT_FORX = "\n" "\cfAlright, so as it goes, the guy first tried to tell them to fuck off from there and let him bulldoze the whole place to build some shit in there. They didn't even listen. Then, he goes there in person, and THIS is the fun part. After an argument with the director of the orphanage, who personally knew the guy, he got SLAPPED SO FUCKING HARD he did a complete 180 and ran away crying.\c-\n" "\n" -"\cfI fucking kid you not, Demo-chan, that is exactly what I saw. I've watched the archived footage like a hundred times, since it helps me feel better when I'm in a sour mood, and... every time, the part where he gets fucking backhanded across the face by the old geezer, it never fails. I always lose my shit. It's TOO GOOD.\c-\n" +"\cfI fucking kid you not, Demo-chan, that is exactly what I saw. I've watched the archived footage like a hundred times, since it helps me feel better when I'm in a sour mood, and... every time, the part where he gets backhanded across the face by the old geezer and thrown out the fucking door, it never fails. I always lose my shit. It's TOO GOOD.\c-\n" "\n" -"\cfSeriously, this is what all those people really need. You don't know how many times I wish I could just go and beat the crap out of that bastard manchild Kelliher. I'd surely feel much better, yeah. Fuck him, and the UAC too. \"Eat the rich\" is somehow still relevant, but I really want to popularize \"Beat the rich\".\c-"; +"\cfSeriously, this is what all those people really need. You don't know how many times I wish I could just go and defenestrate that bastard manchild Kelliher. I'd surely feel much better, yeah. Fuck him, and the UAC too. \"Eat the rich\" is somehow still relevant, but I really want to popularize \"Yeet the rich\".\c-"; SWWM_LORETAG_FRISPYCORN = "Frispy Corn Snack"; SWWM_LORETAB_FRISPYCORN = "Item"; SWWM_LOREREL_FRISPYCORN = "Saya;Vestal"; @@ -1168,10 +1450,10 @@ SWWM_LORETXT_FROGGYCHAIR = "\n" "\cfAnyway, I have to do this, I have to say it or they won't leave me alone:\c-\n" "\n" -"\cfWelcome to the \cfFroggy Gang\cf, Demo-chan.\c-"; +"\cfWelcome to the \cdFroggy Gang\cf, Demo-chan.\c-"; SWWM_LORETAG_GCSANDWICH = "Sandwich"; SWWM_LORETAB_GCSANDWICH = "Item"; -SWWM_LOREREL_GCSANDWICH = "NosKora;Saya"; +SWWM_LOREREL_GCSANDWICH = "Nukritas1xx;Saya"; SWWM_LORETXT_GCSANDWICH = "\cxDesignation:\c-\n" "\cf Grilled Cheese Sandwich\c-\n" @@ -1251,7 +1533,7 @@ SWWM_LORETXT_GENSOKYO = "Many attempts have been made to communicate with them following the initial research, with no successes to this day but one sole exception: The \cfMiyamoto family\c-, who initially came from that land, then migrated outside. As reported by \cfSaya Miyamoto\c- on social media, the family often travels across the barrier, in order to visit their distant relative, \cfPrincess Kaguya Houraisan\c-. Following these reports, many have tried to approach members of the Miyamoto family to ask for further information, but they have refused to talk about the subject.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfBoy, people sure are interested in that place, huh? But they just won't fucking understand, that things have to stay like this. Those are the rules, or some shit. Can't have both worlds mixing up together or whatever, it's what that old hag told me once. Yeah, the one that doesn't act her age and goes around with a buncha cosplayers. I'm pretty sure she's related to Ashley-san in some way, they've got the same exact eyes. But like hell am I going to go and ask her, the way she acts around me creeps me out.\c-"; +"\cfBoy, people sure are interested in that place, huh? But they just won't fucking understand, that things have to stay like this. Those are the rules, or some shit. Can't have both worlds mixing up together or whatever, it's what that old hag told me once. Yeah, the one that doesn't act her age and goes around with a buncha cosplayers. I'm pretty sure she's related to Ashley-san in some way, they've got the same exact eyes. But like hell am I going to go and ask her, I don't like her.\c-"; SWWM_LORETAG_GHOSTARTIFACT = "Ghost Artifact"; SWWM_LORETAB_GHOSTARTIFACT = "Item"; SWWM_LOREREL_GHOSTARTIFACT = "DecadeMech;EngineTech"; @@ -1455,11 +1737,21 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN = "\n" "While generally meant for mounted use, on-the-go operation is possible, provided the user is equipped with silver-rated power armor at minimum in order to handle its heavy recoil.\n" "\n" -"\cfPrimary Fire:\c- 700 RPM operation. Sustained fire in this mode is theoretically endless, as the heat produced can be efficiently nullified by the internal cooling systems, it is therefore the recommended mode for most situations.\n" +"The weapon is rated for three speeds:\n" "\n" -"\cfSecondary Fire:\c- 1050 RPM operation. Much faster spin, with moderate heat buildup. It's still possible to keep firing in this mode for about a minute or so from a cold start. If you need to deliver more pain and have the ammunition to spare, choose this.\n" +"\cf300 RPM:\c- A slow spin. Sustained fire in this mode is theoretically endless, as the heat produced can be efficiently nullified by the internal cooling systems, it is therefore the recommended mode for most situations.\n" "\n" -"\cfTertiary Fire:\c- 2100 RPM operation. Extremely fast, with the highest heat potential. Sustained fire in this mode may quickly trigger the weapon's safety lock should the rising heat get too close to non-operational temperature. If you want things dead fast and don't care about running out of ammo in a matter of seconds, do pick this.\n" +"\cf700 RPM:\c- Much faster spin, with moderate heat buildup. It's still possible to keep firing within operational temperature for an extended period of time, albeit less accurately. If you need to deliver more pain and have the ammunition to spare, choose this.\n" +"\n" +"\cf2100 RPM:\c- Extremely fast, with the highest heat potential. Sustained fire in this mode may quickly trigger the weapon's safety lock should the rising heat get too close to non-operational temperature. If you want things dead fast and don't care about running out of ammo in a matter of seconds, do pick this.\n" +"\n" +"By default, the safest firing speed is active. Other speeds can be selected by pulling or pushing on the trigger handle (note that the handle is locked in place while firing, so speed can't be changed on the fly).\n" +"\n" +"\cfPrimary Fire:\c- Fire at the selected speed. There is no wind up or wind down in this weapon's operation, so it will begin firing from the moment the trigger is squeezed, and immediately stop once it's released.\n" +"\n" +"\cfSecondary Fire:\c- Push the trigger handle to increase the firing speed.\n" +"\n" +"\cfTertiary Fire:\c- Pull the trigger handle to decrease the firing speed.\n" "\n" "\cfReloading:\c- There is absolutely no need whatsoever to reload this weapon, as it feeds directly off Hammerspace, requiring only a large supply of ammunition. Hammerspace containers will automatically link all necessary rounds for tethered feeding.\n" "\n" @@ -1470,10 +1762,10 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN = "\n" "\cfBy the way I know what you may be thinking and no, they're not tracer rounds. As I was told, they're actually going so fast they literally catch on fire from air friction. Pretty hardcore, ain't it? Bet the UAC will never beat this shit.\c-\n" "\n" -"\cfGod just seeing it in action is enough to make me wet. Hell, more than that. The Sheen HMG is such a delicious festival of dakka that the mere sound of it firing makes me unleash Leviathan in my panties, and you can quote me on that.\c-"; +"\cfGod just seeing it in action... Hell, more than that. The Sheen HMG is such a delicious festival of dakka that the mere sound of it firing makes me wild out. It's nuts!\c-"; SWWM_LORETAG_HELL = "Hell"; SWWM_LORETAB_HELL = "Lore"; -SWWM_LOREREL_HELL = "Imanaki;UAC;Saya;Ellen;Anarukon;Novoskhana;DemonInvasion;Cytho"; +SWWM_LOREREL_HELL = "Imanaki;UAC;Saya;Ellen;Anarukon;Novoskhana;DemonInvasion;Cytho;Archdemons"; SWWM_LORETXT_HELL = "\cxName:\c-\n" "\cf Hell\c-\n" @@ -1484,7 +1776,7 @@ SWWM_LORETXT_HELL = "\n" "In 149, following the disappearance of prince heir \cfManakei\c-, who had been summoned to Earth but never returned, internal conflicts arose within the ranks of Hell's royalty. These fights for the succession of the throne, however, never truly escalated as long as Nostros was there to keep the demons at bay. Many attempts were made to locate the heir and bring him back, unsuccessfully.\n" "\n" -"In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced \cfKing Akusei\c- in charge, the various archdemons, corrupt generals of the demon armies, took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the \cfUAC\c-'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of \cfMars City\c-, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the \cfDoom Marine\c-, they set their sights on Earth, and thus their final invasion began.\n" +"In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced \cfKing Akusei\c- in charge, the various corrupt \cfArchdemon Generals\c- took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the \cfUAC\c-'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of \cfMars City\c-, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the \cfDoom Marine\c-, they set their sights on Earth, and thus their final invasion began.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfOK, first of all, big thanks to Ellen-san's gramps for the info we could get on this. Cytho-sama is like, our only contact with that fucking place, and you won't even believe the things he's told me.\c-\n" @@ -1504,7 +1796,7 @@ SWWM_LORETXT_HELL2 = "\n" "In 149, following the disappearance of prince heir \cfManakei\c-, who had been summoned to Earth but never returned, internal conflicts arose within the ranks of Hell's royalty. These fights for the succession of the throne, however, never truly escalated as long as Nostros was there to keep the demons at bay. Many attempts were made to locate the heir and bring him back, unsuccessfully.\n" "\n" -"In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced \cfKing Akusei\c- in charge, the various archdemons, corrupt generals of the demon armies, took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the \cfUAC\c-'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of \cfMars City\c-, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the \cfDoom Marine\c-, they set their sights on Earth, bringing forth all of their legions, under the command of \cfBaramun\c-, the Titan of the East, who was given the title of \cfIcon of Sin\c-.\n" +"In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced \cfKing Akusei\c- in charge, the various corrupt \cfArchdemon Generals\c- took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the \cfUAC\c-'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of \cfMars City\c-, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the \cfDoom Marine\c-, they set their sights on Earth, bringing forth all of their legions, under the command of \cfBaramun\c-, the Titan of the East, who was given the title of \cfIcon of Sin\c-.\n" "\n" "Against all odds, humanity prevailed, and the invaders were defeated, along with their leader. Despite this major defeat, the demon generals organized several other attacks, using their remaining forces, but failed once more. Having realized that humanity was far more resilient than they could ever have imagined, they gave up.\n" "\n" @@ -1526,7 +1818,7 @@ SWWM_LORETXT_HELL3 = "\n" "In 149, following the disappearance of prince heir \cfManakei\c-, who had been summoned to Earth but never returned, internal conflicts arose within the ranks of Hell's royalty. These fights for the succession of the throne, however, never truly escalated as long as Nostros was there to keep the demons at bay. Many attempts were made to locate the heir and bring him back, unsuccessfully.\n" "\n" -"In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced \cfKing Akusei\c- in charge, the various archdemons, corrupt generals of the demon armies, took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the \cfUAC\c-'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of \cfMars City\c-, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the \cfDoom Marine\c-, they set their sights on Earth, bringing forth all of their legions, under the command of \cfBaramun\c-, the Titan of the East, who was given the title of \cfIcon of Sin\c-.\n" +"In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced \cfKing Akusei\c- in charge, the various corrupt \cfArchdemon Generals\c- took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the \cfUAC\c-'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of \cfMars City\c-, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the \cfDoom Marine\c-, they set their sights on Earth, bringing forth all of their legions, under the command of \cfBaramun\c-, the Titan of the East, who was given the title of \cfIcon of Sin\c-.\n" "\n" "Against all odds, humanity prevailed, and the invaders were defeated, along with their leader. Despite this major defeat, the demon generals organized several other attacks, using their remaining forces, but failed once more. Having realized that humanity was far more resilient than they could ever have imagined, they gave up. That is, until around August of 2160, when two demonic necromancers, the \cfResurrector Sisters\c-, made their appearance, and brought back to life all those who had fallen, prompting the UAC to recommission their \"problem solver\" once again, who made his way back towards Hell, exterminating the revived demons and swiftly eliminating both of the Resurrector Sisters. Once his initial rampage was over, he sent one final message back to Earth, saying that he had sworn to remain in Hell forever, in order to ensure that the demons would never attempt to attack humanity ever again.\n" "\n" @@ -1554,7 +1846,7 @@ SWWM_LORETXT_HELL4 = "\n" "In 149, following the disappearance of prince heir \cfManakei\c-, who had been summoned to Earth but never returned, internal conflicts arose within the ranks of Hell's royalty. These fights for the succession of the throne, however, never truly escalated as long as Nostros was there to keep the demons at bay. Many attempts were made to locate the heir and bring him back, unsuccessfully.\n" "\n" -"In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced \cfKing Akusei\c- in charge, the various archdemons, corrupt generals of the demon armies, took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the \cfUAC\c-'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of \cfMars City\c-, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the \cfDoom Marine\c-, they set their sights on Earth, bringing forth all of their legions, under the command of \cfBaramun\c-, the Titan of the East, who was given the title of \cfIcon of Sin\c-.\n" +"In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced \cfKing Akusei\c- in charge, the various corrupt \cfArchdemon Generals\c- took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the \cfUAC\c-'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of \cfMars City\c-, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the \cfDoom Marine\c-, they set their sights on Earth, bringing forth all of their legions, under the command of \cfBaramun\c-, the Titan of the East, who was given the title of \cfIcon of Sin\c-.\n" "\n" "Against all odds, humanity prevailed, and the invaders were defeated, along with their leader. Despite this major defeat, the demon generals organized several other attacks, using their remaining forces, but failed once more. Having realized that humanity was far more resilient than they could ever have imagined, they gave up. That is, until around August of 2160, when two demonic necromancers, the \cfResurrector Sisters\c-, made their appearance, and brought back to life all those who had fallen, prompting the UAC to recommission their \"problem solver\" once again, who made his way back towards Hell, exterminating the revived demons and swiftly eliminating both of the Resurrector Sisters. Once his initial rampage was over, he sent one final message back to Earth, saying that he had sworn to remain in Hell forever, in order to ensure that the demons would never attempt to attack humanity ever again.\n" "\n" @@ -1576,7 +1868,7 @@ SWWM_LORETXT_HELL4 = "\cfAnother Update: OK so, you know we met that Nostros guy at the wedding, right? And surely, I did do exactly what I had promised. I kicked him in the gut as hard as I could, over and over until his wife begged me to stop. Yeah, that's the thing, his wife, Azkhan, the \"Matriarch of Hell\". I had a bit of a private chat with her the next day. And she was really happy to hear of my plans. Ye... happy big goat lady. I've been thinking that, if I bring Azkhan with me when I run the search for that prince guy, it might be easier to bring him back. Y'know, maybe he'll answer goatmom's call or something. They never actually bothered to try that in the first place, even though it's like... real obvious.\c-"; SWWM_LORETAG_HELLBLAZER = "Hellblazer"; SWWM_LORETAB_HELLBLAZER = "Item"; -SWWM_LOREREL_HELLBLAZER = "Imanaki;UAC;Hell;Hammerspace"; +SWWM_LOREREL_HELLBLAZER = "Imanaki;UAC;Hell;Hammerspace;Saya;Nukuri"; SWWM_LORETXT_HELLBLAZER = "\cxDesignation:\c-\n" "\cf Hellfire Cannon Mk3 (\"Hellblazer\")\c-\n" @@ -1586,17 +1878,9 @@ SWWM_LORETXT_HELLBLAZER = "\cxClassification:\c-\n" "\cf Mini-Missile Launcher\c-\n" "\n" -"The \cfHellblazer\c- is the third incarnation of the \cfHellfire Cannon\c-, one of the many weapons that \cfImanaki Corp\c- had constructed based on their experiments with harnessing what they called \cfArdent Energy\c-, a power source from the depths of \cfHell\c- itself. It is a direct improvement of the Mark 2 model, the \cfHellrazer\c-, sporting burst-fire capabilities and a simple drum magazine system for easier reloads. It also features many more types of ammunition this time:\n" +"The \cfHellblazer\c- is the third incarnation of the \cfHellfire Cannon\c-, one of the many weapons that \cfImanaki Corp\c- had constructed based on their experiments with harnessing what they called \cfArdent Energy\c-, a power source from the depths of \cfHell\c- itself. It is a direct improvement of the Mark 2 model, the \cfHellrazer\c-, sporting burst-fire capabilities and a simple drum magazine system for easier reloads. As its ammunition, it employs 25mm \"Blazer\" grenades, highly explosive despite their small size, due to the materials contained within.\n" "\n" -"\cf\"Blazer\" grenades:\c- The standard ammunition. Highly explosive despite their small size, thanks to the highly condensed Ardent Energy contained within.\n" -"\n" -"\cf\"Crackshot\" cluster grenades:\c- These burst into smaller grenades which will spread on impact, bouncing around for a short time before detonating.\n" -"\n" -"\cf\"Ravager\" incendiary grenades:\c- Ravagers release a wave of unrefined Ardent Energy on detonation, covering a very wide area around themselves. Quite useful in tight spaces, where this scorching hot plasma won't dissipate as quickly, thoroughly roasting any targets within. For safety reasons this ammunition type cannot be employed in burst-fire.\n" -"\n" -"\cf\"Slayer\" warheads:\c- A returning favorite from the previous series. These miniature nukes contain within themselves highly enriched Ardent Energy that will cause total devastation in a large radius, bringing swift death to even the highest ranked demons in Hell's armies. Cannot operate in burst-fire mode either.\n" -"\n" -"The Hellblazer was discontinued following the destruction of the Imanaki Corp headquarters in 2009, but the \cfTach-Engine Technology Institute\c- had managed to reproduce this weapon following their demise. Replicated models do not actually employ this \"Ardent Energy\" however, so they are not as destructive as they were meant to be. Rather, they are powered by the highly volatile \cfNokron\c-, one of the two exotic elements involved in the process of Microfusion, as its potential for use in explosives is quite notable.\n" +"The Hellblazer was discontinued following the destruction of the Imanaki Corp headquarters in 2009, but the \cfTach-Engine Technology Institute\c- had managed to reproduce this weapon following their demise. Replicated models do not actually employ this \"Ardent Energy\" however, so they are not as destructive as they were meant to be. Rather, they are powered by the highly volatile \cfSydon\c-, one of the exotic elements involved in the creation of Ardent, as its potential for use in explosives is quite notable.\n" "\n" "Unlike its predecessor, which relied on simple proximity detection, this model can instead interface with targeting arrays in order to provide more precise selective target seeking.\n" "\n" @@ -1604,19 +1888,49 @@ SWWM_LORETXT_HELLBLAZER = "\n" "\cfSecondary Fire:\c- Lobs the loaded ammunition unarmed, as a bouncing grenade. Tap to fire one grenade, hold to preload up to 2 additional grenades (primary Fire cancels this process). Target seeking also affects grenades, as they will attempt to steer themselves towards the target on bounce.\n" "\n" -"\cfTertiary Fire:\c- Cycles the ammo type for the next reload.\n" +"\cfTertiary Fire:\c- Does nothing unless the weapon is locked for fire (see above).\n" "\n" -"\cfReloading:\c- During a reload, you may either refill the current mag (quite easy through the \cfHammerspace™\c- container), or swap it out for a different ammo type.\n" +"\cfReloading:\c- Refills the current magazine, quite easily through the \cfHammerspace™\c- container.\n" "\n" "\cfTechniques:\c- The grenades will automatically detonate on proximity to any hostile targets (unless explicitly seeking one), so you may still land the shot even if you merely grazed them. It is unclear how exactly they detect the targets, or know that they are hostile.\n" "\n" "\cxSaya's Notes:\c-\n" "\cf\"Ardent Energy\"? What's that? Energy extracted from a demon's ass after it ate too much curry? Whatever, anything coming from Hell is best left untouched, y'know. Just look at what happened to the fucking UAC, going around sticking their paws where they shouldn't.\c-\n" "\n" -"\cfActually, making the replicas use Nokron was a pretty clever thing. I had no idea that shit exploded. Really makes you think about all the safety mechanisms that go into Microfusion engines, definitely justified if THAT can happen.\c-"; +"\cfActually, making the replicas use Sydon was a pretty clever thing. That stuff's naturally occurring in a bunch of exoplanets so it's easy to come by. By the way, did you know the Nukuri use it as a hair dye? Well, they use a non-reactive isotope, but still...\c-"; +SWWM_LORETAG_HERMANN = "Ischer, Hermann E."; +SWWM_LORETAB_HERMANN = "People"; +SWWM_LOREREL_HERMANN = "Blackmann;WhiteScar;Saya"; +SWWM_LORETXT_HERMANN = +" \cxFull Name:\c-\n" +" \cf Hermann Edward Ischer\c-\n" +" \cxNationality:\c-\n" +" \cf German-American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2079-09-17\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO (Blackmann Arms)\c-\n" +" \cxTwitter:\c-\n" +" \cf @ischerman\c-\n" +"\n" +"\n" +"Born in \cfCologne, Germany\c- in 2079 as the older of two siblings, \cfHermann\c- was chosen by his father to lead the family business upon his retirement, much to the disappointment of his more competent younger sister.\n" +"\n" +"Known for his radiant charisma, the man is quite popular online, and made his fame through possibly one of the most peculiar methods: By growing out his eyebrows as much as possible. As of this article's writing, he still holds the world record for it.\n" +"\n" +"As a lover of fine weaponry, his main goal as head of \cfBlackmann Arms\c- would be to further expand on high-caliber weaponry, especially with the worldwide popularity of his grandfather's iconic \cf.50 OMG\c- cartridge. In the period of post-war following the \cfWhite Scar\c-, potent weaponry to defend the home front was highly requested, and thus came the \cf\"big booms\"\c- race, which he entered with the first incarnation of the \cfSilver Bullet\c- series of rifles, and the \cf.850 BIG\c- cartridge. The rest is history, but suffice to say, he did win that race.\n" +"\n" +"Hermann is also known to indulge in ways to maximize the speed of fully automatic fire, with mixed results, and somehow managing to get all-encroaching firearms regulation groups to look the other way. Some would say that the weaponry featuring these \"hilariously broken\" rates of fire were simply too ludicrous to even be taken seriously, and there was no need for any regulation when no one in their right mind would even dare to employ such a thing in actual warfare.\n" +"\n" +"In regards to his personal life, he is happily married to internet celebrity \cfJonathan Alfredo Bortson Borges III\c-, and sometimes appears as a guest in his husband's streams.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThe babyfaced man of massive eyebrows himself. As far as Americans go, he's pretty cool actually, and I like to hang out with him despite how cringe he can be about Japanese culture.\c-\n" +"\n" +"\cfThe boyfriend is... ... Well, special. He doesn't talk, beyond uttering a few grunts and mumbles every now and then, but he sure is eloquent as hell in text form. Now, look, I'm not going to judge, but his obsession with that one anime character... It goes places. Nice cosplay, though.\c-"; SWWM_LORETAG_IBUKI = "Miyamoto, Ibuki"; SWWM_LORETAB_IBUKI = "People"; -SWWM_LOREREL_IBUKI = "AkariLabs;WhiteScar;Taro;Saya"; +SWWM_LOREREL_IBUKI = "AkariLabs;WhiteScar;Taro;Saya;Madcat;Marisa"; SWWM_LORETXT_IBUKI = " \cxFull Name:\c-\n" " \cf Ibuki Miyamoto\c-\n" @@ -1626,29 +1940,28 @@ SWWM_LORETXT_IBUKI = " \cxDate of Birth:\c-\n" " \cf 2074-09-09\c-\n" " \cxOccupation:\c-\n" -" \cf Mercenary, Nude Model, Vlogger\c-\n" +" \cf Mercenary, Model, Vlogger\c-\n" " \cxTwitter\c-\n" -" \cf @lewd_ibuki (main)\c-\n" -" \cf @ibuki_tiddy (photosets)\c-\n" +" \cf @red_oni_74\c-\n" "\n" "\cfIbuki\c- is the result of the \cfRed Oni\c- supersoldier program, devised by \cfSaya Miyamoto\c- of \cfAkari Labs\c-. The existence of this project was kept completely secret until her public reveal in June of 2077. There was much controversy surrounding the Red Oni program, including Saya's personal involvement in it, having accepted a 40 billion USD payment in exchange for it (which was found to be related to Texas having been sold back to Mexico many weeks before). Despite her clear potential and outstanding combat abilities, she was deployed too late, as only moments later, the \cfWhite Scar\c- happened, and with it, the complete devastation of the \cfUnited States\c-.\n" "\n" -"Many years after the incident, Ibuki was successfully retrieved from the scorched wastelands, having spent a long time as a sort of \"roaming mercenary\". She returned to Japan in June of 2091, and once settled in, began working odd jobs until finding her true vocation as a nude model.\n" +"Many years after the incident, Ibuki was successfully retrieved from the scorched wastelands, having spent a long time as a sort of \"roaming mercenary\". She returned to Japan in June of 2091, and once settled in, began working odd jobs until finding her true vocation as a model. Other hobbies include vlogging (with varied topics), as well as still occasionally performing independent mercenary work.\n" "\n" -"Having been created from Saya's own DNA, she has effectively inherited the total immortality of the Miyamoto family, on top of this, further enhancements were performed which have given her increased strength and reflexes, along with effectively making her skin bulletproof. Saya has remarked that this last fact means she does not need to wear any clothing.\n" +"Having been created from Saya's own DNA, she has effectively inherited the total immortality of the Miyamoto family, on top of this, further enhancements were performed which have given her increased strength and reflexes, along with effectively making her skin bulletproof. It's even been proven that she can survive an orbital blast.\n" "\n" -"Additionally citing Saya's rather \"interesting\" decisions, there is the fact of her particular physical traits beyond those of her strength, including her blatantly obscene bust size, which some deem impractical, much to Saya's disagreement. When asked for further details, she went on a rather lengthy rant on Twitter about the subject of \"waifus\".\n" +"Additionally, citing Saya's rather \"interesting\" decisions, there is the fact of her particular physical traits beyond those of her strength, as despite being her own clone, the two barely resemble each other. When asked for details regarding these discrepancies, she refused to answer.\n" +"\n" +"Although Ibuki is legally part of the Miyamoto family, she opted to live on her own. She shares a house with two other mercenary friends, as well as other people who joined in later. Some of Ibuki's closest friends are individuals of renown, such as game developer \cfKris Danae\c-, or the demi-Anarukon witch-warrior \cfMarisa Azanth\c-.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfOK yes sure, I love giga-tiddies. But why does everyone have to call me out for it? Is there really ANYTHING wrong with that, huh? Yeah, thought so.\c-\n" +"\cfThose American idiots come to me with a shitload of cash and tell me to make them a supersoldier. Yeah, I suppose they were listening in on all that stuff I had been posting of getting into bioengineering and shit. Boy, they sure were desperate, huh... It was honestly pathetic.\c-\n" "\n" -"\cfSure, Ibuki was like, my biggest hornypost ever. I couldn't resist, you know. Fucking... American idiots come to me with a shitload of cash and tell me to make them a supersoldier. Yeah, I suppose they were listening in on all that stuff I had been posting of getting into bioengineering and shit. Boy, they sure were desperate, huh... It was honestly pathetic. BUT, I had an idea there. See... I was thirsty as all fuck, and I thought... what if... I made myself a super strong big tiddy gf, right there?\c-\n" +"\cfAnd now, it's time for me to confess... Given the chance to make a copy of myself, and to enhance said copy, I ended up fulfilling one of my fantasies. What if I could be taller? And prettier? ... In hindsight, it was really stupid of me, I guess. But there she is, a version of myself that is a big strong goth gf.\c-\n" "\n" -"\cfAaaaaand that's exactly what happened. I spent like three years on that whole thing, growing her in a damn tube. It was my first time doing all of that, but I somehow got lucky and it was a big success. Though... when they began to notice the \"abnormality in the subject's breast growth\" I started to get nervous. What if they pull the plug on it? I ended up admitting to it being intentional, saying some random shit that came through my mind, like \"distraction tactics\" or something, I forgot. In the end they let it slide.\c-\n" +"\cfI spent like three years on that whole thing, growing her in a damn tube. It was my first time doing all of that, but I somehow got lucky and it was a big success. Though... when they began to notice the \"abnormality in the subject's breast growth\" I started to get nervous. What if they pull the plug on it? I ended up admitting to it being intentional, saying some random shit that came through my mind, like \"distraction tactics\" or something, I forgot. In the end they let it slide.\c-\n" "\n" -"\cfOh yeah, did you know? Technically speaking, Ibuki is my clone. Yeah, there may have been some slight modifications, but if my growth hadn't stopped early, who knows, I could have looked that hot one day. Really makes you think huh...\c-\n" -"\n" -"\cfYes, I'm also aware that means I'm engaging in selfcest. So? Is there a problem with that too?\c-"; +"\cfDespite everything, even after confessing to her that I made her that way on purpose, even after all the stuff with the war, she loves me and she's thankful for being alive. She really is too nice to me, seriously...\c-"; SWWM_LORETAG_IMANAKI = "Imanaki Corp"; SWWM_LORETAB_IMANAKI = "People"; SWWM_LOREREL_IMANAKI = "ImanakiT;Kereshnovka;UAC;Hell;GhoulHunt;Saya;SUSAN"; @@ -1682,21 +1995,26 @@ SWWM_LORETAG_IMANAKIT = "Imanaki, Tetsuya"; SWWM_LORETAB_IMANAKIT = "People"; SWWM_LOREREL_IMANAKIT = "Onoke;Saya;GhoulHunt;Imanaki"; SWWM_LORETXT_IMANAKIT = -"\cxFull Name:\c-\n" -"\cf Tetsuya Imanaki\c-\n" -"\cxNationality:\c-\n" -"\cf Undetermined\c-\n" -"\cxDate of Birth:\c-\n" -"\cf Undetermined\c-\n" -"\cxOccupation:\c-\n" -"\cf CEO (Imanaki Corp)\c-\n" +" \cxFull Name:\c-\n" +" \cf Tetsuya Imanaki\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1983-01-01\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO (Imanaki Corp)\c-\n" "\n" -"The founder and CEO of \cfImanaki Corp\c-, and also last surviving member of the Imanaki family following the \cfOnoke Mansion Murders\c- of 2003. \cfTetsuya\c- had always been a very secretive individual, so nothing is really known of his personal life or history, nor even his appearance.\n" "\n" -"During the events of the \cfGhoul Hunt\c-, and later the \cfHellbound Incident\c-, he once again avoided death thanks to his absence from the Imanaki Corp installations. However, no one knew where he was exactly, and ever since these events he completely vanished.\n" +"\n" +"\n" +"The founder and CEO of \cfImanaki Corp\c-, and also last surviving member of the Imanaki family following the \cfOnoke Mansion Murders\c- of 2003. \cfTetsuya\c- had always been a very secretive individual, so nothing is really known of his personal life.\n" +"\n" +"During the events of the \cfGhoul Hunt\c-, and later the \cfHellbound Incident\c-, he once again avoided death thanks to his absence from the Imanaki Corp installations. However, no one knew where he was exactly, and ever since these events he's completely vanished. Some speculate that since he's the last of the Imanaki, this is in order to avoid being located by members of the \cfYanasha Clan\c-, rivals to the family for centuries.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfShort article, I know. There really is nothing on this guy, seriously. It's like... he never left any trace of himself other than just... the fact he once existed and was in charge of all that stuff.\c-"; +"\cfShort article, I know. There really is nothing on this guy, seriously. It's like... he never left any trace of himself other than just... the fact he once existed and was in charge of all that stuff.\c-\n" +"\n" +"\cfI mean, there's that one photo, although it's not clear if that's actually him. Either way I can't deny he looks really pretty...\c-"; SWWM_LORETAG_INVINCIBALL = "Invinciball"; SWWM_LORETAB_INVINCIBALL = "Item"; SWWM_LOREREL_INVINCIBALL = "Cyrus;Saya;Unissix"; @@ -1734,21 +2052,55 @@ SWWM_LORETXT_ITAMEXHAMMER = "\n" "The Reinforced Combat Hammer is primarily meant to be used in quickly dismantling barricades or tearing down reinforced barriers, but many have taken to more creative uses, such as in the destruction of armored vehicles, or improvised demolition work of whole buildings. It should also be noted that in actual combat it can prove to be very lethal (and bloody) against unarmored targets.\n" "\n" -"\cfPrimary Fire:\c- Rapid swings, from side to side. Good for quickly plowing through enemy hordes.\n" +"\cfPrimary Fire:\c- Rapid strikes. Good for quickly plowing through enemy hordes.\n" "\n" -"\cfSecondary Fire:\c- Hold to ready up a vertical swing, release to let the hammer drop on whatever poor fool is standing in front of you. The longer you hold, the stronger the hit.\n" +"\cfSecondary Fire:\c- Hold to raise the hammer over your head, release to let it drop on whatever poor fool is standing in front of you. The longer you hold, the stronger the hit. This attack can potentially break down doors, among other things.\n" "\n" -"\cfTertiary Fire:\c- Hold to ready up a wide horizontal swing, release to perform a potent spin attack, smashing away everything around you. Consecutive presses of tertiary fire while spinning will keep the motion going for longer. Being a combat robot, you should be free from any motion sickness that a human would typically develop while performing this action.\n" +"\cfTertiary Fire:\c- Perform a potent spin attack, smashing away everything around you. Consecutive presses of tertiary fire while spinning will keep the motion going for longer. Being a combat robot, you should be free from any motion sickness that a human would typically develop while performing this action. However, you won't be able to control where this spin move takes you.\n" "\n" "\cfReloading:\c- It's a sledgehammer. There's no reloading, go bash some skulls.\n" "\n" +"\cfTechniques:\c- Being a pure melee weapon, the hammer benefits directly from the effects of the \cfRagekit\c-, multiplying its damage potential eightfold.\n" +"\n" "\cxSaya's Notes:\c-\n" "\cfShit's strong AND good. Perfect for a Demolitionist such as yourself, huhu. And you know what else is good? It can be even MORE powerful once you pop a Ragekit. You'll become UNSTOPPABLE.\c-\n" "\n" "\cfOh yeah! Hammer time!\c-"; +SWWM_LORETAG_JOJO = "Josephson, Joanna"; +SWWM_LORETAB_JOJO = "People"; +SWWM_LOREREL_JOJO = "Symnatek;Mixom;Saya"; +SWWM_LORETXT_JOJO = +" \cxFull Name:\c-\n" +" \cf Joanna Josephson IV\c-\n" +" \cxNationality:\c-\n" +" \cf Australian\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2107-08-24\c-\n" +" \cxOccupation:\c-\n" +" \cf Chairman (Symnatek)\c-\n" +" \cf Chief of Engineering (Itamex)\c-\n" +"\n" +"\n" +"\n" +"Born in California in 2107, \cfJoanna\c- is the fourth heir to the \cfJosephson\c- lineage, and the current head of the \cfAlliance Industries (Symnaki Tekkanosei)\c- conglomerate, the largest and most powerful industry titan of the \cfAustralian\c- territory.\n" +"\n" +"Looming over others around her by standing at 6'11\", her imposing presence has ensured that no one even dares challenge the absolute reign of her company on its home turf. Despite this, however, it is known that she is in good terms with competitor \cfMixom\c-'s CEO \cfKasumi Tanaka\c-.\n" +"\n" +"While being the head of the main company, she is far more involved in the arms manufacturing side of the \cfItamex\c- subsidiary, both in terms of engineering and testing, as well as the promotion of company products.\n" +"\n" +"Joanna has certain fame due to her various feats of strength, including a bone-chilling encounter with a wild grizzly bear which turned out far more bone-chilling for the animal itself. When interviewed, she jokingly stated that the bear \cf\"will need a physiotherapist\"\c-.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThis woman has singlehandedly kept muscle girl artists afloat for ages, and it is very understandable. She is huge, built like a motherfucking truck, and I almost peed myself when I first met her.\c-\n" +"\n" +"\cf...\c-\n" +"\n" +"\cfPlease forget I said that last part.\c-\n" +"\n" +"\cfHuh? What do you mean the dictation system doesn't understand that?\c-"; SWWM_LORETAG_KERESHNOVKA = "Kereshnovka"; SWWM_LORETAB_KERESHNOVKA = "Lore"; -SWWM_LOREREL_KERESHNOVKA = "Cyrus;Saya;Onoke;GhoulHunt;Imanaki;SUSAN;Luna"; +SWWM_LOREREL_KERESHNOVKA = "Reubens;Saya;Onoke;GhoulHunt;Imanaki;SUSAN;Luna"; SWWM_LORETXT_KERESHNOVKA = "\cxName:\c-\n" "\cf Kereshnovka\c-\n" @@ -1800,27 +2152,19 @@ SWWM_LORETXT_KEYCHAIN = "\cxSaya's Notes:\c-\n" "\cfAh, yeah, I put some cute things in there that you might like. So, there's one of the bomb emoji, because I mean, you like exploding things don't you? It was kind of an obvious choice, that one.\c-\n" "\n" -"\cfNext is that silly thing that amused you so much, the \"butt bots gonna bot\" seal, heh. I have no clue what it references, or who this \"Nekohaku\" is and why they're an \"anal fiend\". Must be some in-joke in some community I guess...\c-\n" +"\cfNext is that silly thing that amused you so much, the \"butt bots gonna bot\" seal, heh. I have no clue what it even references, must be some obscure in-joke from somewhere...\c-\n" "\n" "\cfOf course, there's also a lil' chibi face of me. Think of it as a way for me to always be there with you, wherever you go, hehehe.\c-\n" "\n" -"\cfAND, very most importantly, oh yes. Don't you think I forgot about that, it sure got engraved right in my mind. Yeah, what happened on our little stream. You really are the sweetest and best bot, Demo-chan. Come on, say it with me, loud and clear:\c-\n" -"\n" -" \c[TransBlue]██████████████████████\c-\n" -" \c[TransPink]██████████████████████\c-\n" -" \cj██████████████████████\c-\n" -" \c[TransPink]██████████████████████\c-\n" -" \c[TransBlue]██████████████████████\c-\n" -"\n" -"\cfTRANS RIGHTS! FUCK YEAH!\c-"; +"\cfAND, very most importantly, oh yes. Don't you think I forgot about that. It makes certain people very fucking mad, and I hope they never miss even a single glimpse of THAT FLAG as you save the world. Yeah, fuck 'em. They'd side with the demons if it didn't turn out that they're all very sexually progressive as well.\c-"; SWWM_LORETAG_KIRIN = "Xanai, Kirin"; SWWM_LORETAB_KIRIN = "People"; -SWWM_LOREREL_KIRIN = "Anarukon;Novoskhana;Saya;GhoulHunt"; +SWWM_LOREREL_KIRIN = "Anarukon;Novoskhana;Saya;GhoulHunt;Alakir"; SWWM_LORETXT_KIRIN = " \cxFull Name:\c-\n" " \cf Kirin Xanai\c-\n" " \cxTitle:\c-\n" -" \cf Child Emperor of the Sykhai Empire of Akkou\c-\n" +" \cf Sykhai Emperor of Akkou\c-\n" " \cxNationality:\c-\n" " \cf Akkouxhei\c-\n" " \cxDate of Birth:\c-\n" @@ -1834,20 +2178,20 @@ SWWM_LORETXT_KIRIN = "\n" "Despite having the title of \"Emperor\", he actually holds no real power over the people of Akkou, and instead acts more like a political and economical advisor. As a matter of fact, the \cfSykhai Empire\c- couldn't be described as an empire either. Most would describe it as something closer to a collection of anarchist communes than anything else, unlike the actual, tyrannical \cfEmpire of Novoskhana\c- that they had seceded from.\n" "\n" -"For almost 80 whole years as the leader of Akkou, Kirin had remained single, as no one dared to approach him with the intention of marrying, for he was revered as an icon of \"untarnished purity\", in part due to his own name, Kirin, meaning \"innocence\" in the \cfAnarukon\c- language. It wasn't until a chance meeting with \cfSaya Miyamoto\c- in 2171 that this eventually changed. After a rather busy month, in which the young emperor additionally came to meet Saya's other partners, love bloomed, eventually culminating in a collective marriage (\cg♥\c-) in May 8th of 2171, with their union marking the beginning of a great alliance between mankind and the Anarukon, additionally helping heal the old wounds of the \cfHellbound Incident\c-, as this alliance extended to the \cfKurenai Kingdom\c- too, through the shared friendship with \cfQueen Andreki Anderken\c-.\n" +"For decades as the leader of Akkou, Kirin had remained single, as no one dared to approach him with the intention of marrying, for he was revered as an icon of \"untarnished purity\", in part due to his own name, Kirin, meaning \"innocence\" in the \cfAnarukon\c- language. It wasn't until a chance meeting with \cfSaya Miyamoto\c- in 2171 that this eventually changed. After a rather busy month, in which the young emperor additionally came to meet Saya's other partners, love bloomed, eventually culminating in a collective marriage (\cg♥\c-) in May 8th of 2171, with their union marking the beginning of a great alliance between mankind and the Anarukon, additionally helping heal the old wounds of the \cfHellbound Incident\c-, as this alliance extended to the \cfKurenai Kingdom\c- too, through the shared friendship with \cfQueen Andreki Anderken\c-. Outside of marriage, Kirin is additionally in a close relationship with \cfAlakir of Kanaiarkar\c-, consul of a neighboring nation he's assisted in the past.\n" "\n" "Kirin himself can be described as a rather \"down to earth\" leader. Being quite close to the people of Akkou, and fond of making friends. He is also absolutely adorable. When not attending his duties as advisor of the people, Kirin engages in many of his hobbies, such as painting (being quite skilled at drawing portraits, for example), or the practice of magic alongside his mother. He is also quite fond of videogames, anime, and many other forms of modern entertainment, and is often seen talking extensively on social media about the subject, happily introducing the people of Earth to popular games and shows from his homeworld.\n" "\n" "\cxSaya's Notes:\c-\n" "\cg♥\c- \caKIRIN-KUN!!!!!! YOU'RE SO CUTE!!!!!! I LOVE YOU!!!!\c- \cg♥\c-\n" "\n" -"\cfAhhhhh, Demo-chan, isn't he the best boyfriend ever? He just makes me so happy, and he's just so good and... yeah~\c- \cg♥\c-\n" +"\cfAhhhhh, Demo-chan, isn't he the best husband ever? He just makes me so happy, and he's just so good and... Yeah~\c- \cg♥\c-\n" "\n" -"\cfSeriously, I never.. NEVER EVER thought that this could happen. That I... that we all... could get our own wonderful immortal cutie. It really is a dream come true, you know...\c-\n" +"\cfSeriously, I never.. NEVER EVER thought that this could happen. That I... That we all... Could get our own wonderful immortal cutie. It really is a dream come true, you know...\c-\n" "\n" -"\cfI just can't stop thinking about him when he's not here... or hell, even when he IS here (guess what). Kirin-kun is just... nggghh... I'm going to go hug him right now.\c-\n" +"\cfI just can't stop thinking about him when he's not here... Or even when he IS here (guess what). Kirin-kun is just... Nggghh... I'm going to go hug him right now.\c-\n" "\n" -"\cfOh he says hi by the way. I told him this isn't a live chat but whatever, hi from our cute husband. Wait, actually... gonna let him write stuff here, why the hell not.\c-\n" +"\cfOh he says hi by the way. I told him this isn't a live chat but whatever, hi from our cute husband. Wait, actually... Gonna let him write stuff here, why the hell not.\c-\n" "\n" "\cgKirin's Notes:\c-\n" "\caHello, Demo-chan. I hope you are doing well in your adventures. I wish I could attend the live stream that Sayacchi makes of this, but I am currently a bit busy withghfghfdgsddfh\c-\n" @@ -1859,26 +2203,9 @@ SWWM_LORETXT_KIRIN = "\cxSaya's Notes:\c-\n" "\cfAAAAAAAAAAAAAAAAAAAAAAAA Oh my god that's so adorable!!!!\c-\n" "\n" -"\cfhehe, yeah, I did go straight for his feet again. His weak spot, huhuhu~\c-\n" +"\cfhehe, yeah, I did go straight for his waist again. His weak spot, huhuhu~\c-\n" "\n" -"\cfBTW don't tell him but... that \"important work\" he's busy with? It's actually just another game I got him to play. Seriously, it's been only a couple weeks and he's almost finished my whole library. Forget what he said about not watching you though, I'm definitely going to force him to if necessary. I really want to see how he reacts to your wacky antics.\c-"; -SWWM_LORETAG_KIRINCUMMIES = "Peach Juice"; -SWWM_LORETAB_KIRINCUMMIES = "Item"; -SWWM_LOREREL_KIRINCUMMIES = "Kirin;Vestal;Anarukon"; -SWWM_LORETXT_KIRINCUMMIES = -"\cxDesignation:\c-\n" -"\cf Toot Froot™ Peach Juice\c-\n" -"\cxManufacturer:\c-\n" -"\cf Vestal Foods\c-\n" -"\cxClassification:\c-\n" -"\cf Flavored Milk Beverage\c-\n" -"\n" -"Lactose intolerance? No problem! Our synthetic milk is perfectly safe for consumption by all, no odd side effects, no alien mutations, no apocalyptic effects! It's milk, in a box. Toot Froot™, the world's first synthetic milk beverage, with natural fruit flavoring.\n" -"\n" -"\cxSaya's Notes:\c-\n" -"\cfHehehe... the taste reminds me so much of Kirin-kun. Every sip is like... I'm sure you know too, you understand what the taste is like. Yeah, THAT. He's taken a liking to it, you know, and watching that suction force of his whenever I give him a box, and the face he makes, it's just... oh my. Naughty boy~\c-\n" -"\n" -"\cfMad props once again for the god of the Anarukon, for making them that way. Delicious peachy cummies...\c-"; +"\cfBTW don't tell him but... That \"important work\" he's busy with? It's actually just another game I got him to play. Seriously, it's been only a couple weeks and he's almost finished my whole library. Forget what he said about not watching you though, I'm definitely going to force him to if necessary. I really want to see how he reacts to your wacky antics.\c-"; SWWM_LORETAG_KIRINMANGA = "Cherry Boy Emperor"; SWWM_LORETAB_KIRINMANGA = "Item"; SWWM_LOREREL_KIRINMANGA = "Kirin;Saya"; @@ -1890,17 +2217,17 @@ SWWM_LORETXT_KIRINMANGA = "\cxGenre:\c-\n" "\cf Comedy, Ecchi, Romance\c-\n" "\n" -"\cfSynopsis:\c- When her family moved to the Ruby Empire, Alissa felt like a fish out of water. This was so much different to the rural lifestyle she was used to, everything was new and confusing, but then she met a handsome young boy, who happily helped her along. As the two grew closer, she would eventually be struck by the most unexpected of revelations: He was none other than the emperor of the land himself! Kind, caring, pure-hearted and innocent, he was a polar opposite of her, but despite their differences, the love they felt for each other would only grow stronger. One day, having been invited to the imperial palace, Alissa would bear witness to a side of the emperor he had never shown anyone before. And thus, her new life began.\n" +"\cfSynopsis:\c- When her family moved to the Ruby Empire, Alissa felt like a fish out of water. This was so much different to the rural lifestyle she was used to, everything was new and confusing, but then she met a handsome young man, who happily helped her along. As the two grew closer, she would eventually be struck by the most unexpected of revelations: He was none other than the emperor of the land himself! Kind, caring, pure-hearted and innocent, he was a polar opposite of her, but despite their differences, the love they felt for each other would only grow stronger. One day, having been invited to the imperial palace, Alissa would bear witness to a side of the emperor he had never shown anyone before. And thus, her new life began.\n" "\n" -"An unexpected return to manga writing from \cfSaya Miyamoto\c-, co-lead of \cfAkari Labs\c-, yet again a romantic story sprinkled with her signature \"wholesome and fun lewdness\". Despite its short length, it has received much praise online, many wishing for a sequel, or a spin-off centered around the emperor's charismatic maid. Saya herself has made no promises, but has stated that both of these may be considered, someday.\n" +"An unexpected return to manga writing from \cfSaya Miyamoto\c-, co-lead of \cfAkari Labs\c-, yet again a romantic story sprinkled with a comedic ecchi tone. Despite its short length, it has received much praise online, many wishing for a sequel, or a spin-off centered around the emperor's charismatic maid. Saya herself has made no promises, but has stated that both of these may be considered, someday.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfHeh, I wrote this in like three days. Drawing everything, however, took a whole week. Yeah, I'm not that good, I mean, even though I shamelessly trace over 3D models and all (that I make, at least).\c-\n" "\n" -"\cfIt's obvious what this is all based on. I mean come on, you'd have to be blind af not to realize. The first time we dressed Kirin-kun up just... gave me such a burst of inspiration that I HAD to write it all down. Oh it was just so adorable, wasn't it? Trying out all sorts of cute things on him... Obviously, we didn't take pics, that'd just be rude. But all of that is forever engraved in my mind (and yours).\c-"; +"\cfIt's obvious what this is all based on. I mean come on, you'd have to be blind af not to realize. The first time we dressed Kirin-kun up just... gave me such a burst of inspiration that I HAD to write it all down. Oh it was just so adorable, wasn't it? Trying out all sorts of cute things on him... Oh man...\c-"; SWWM_LORETAG_KIRINPLUSH = "Kirin Plush"; SWWM_LORETAB_KIRINPLUSH = "Item"; -SWWM_LOREREL_KIRINPLUSH = "Saya;Kirin;NosKora"; +SWWM_LOREREL_KIRINPLUSH = "Nukritas2xx;Saya;Kirin"; SWWM_LORETXT_KIRINPLUSH = "\cxDesignation:\c-\n" "\cf Emperor Kirin Plush\c-\n" @@ -1917,6 +2244,21 @@ SWWM_LORETXT_KIRINPLUSH = "\cfKIRIN-KUN GOT ONE TOO!!!! YESSSSSS!!!!\c- \cg♥\c-\n" "\n" "\cfHaaaaa... It's so cute, and you can hear him giggle when you squeeze it, oh my god it's just... absolutely adorable! I'm sure you'll be at the ready to squish and hug it once you get it, too. God damn... Kirin-kun... I need the real deal right now, gonna give the soft boi a BIG HUG!\c-"; +SWWM_LORETAG_KIRINSIPPY = "Peach Juice"; +SWWM_LORETAB_KIRINSIPPY = "Item"; +SWWM_LOREREL_KIRINSIPPY = "Kirin;Vestal;Anarukon"; +SWWM_LORETXT_KIRINSIPPY = +"\cxDesignation:\c-\n" +"\cf Toot Froot™ Peach Juice\c-\n" +"\cxManufacturer:\c-\n" +"\cf Vestal Foods\c-\n" +"\cxClassification:\c-\n" +"\cf Flavored Milk Beverage\c-\n" +"\n" +"Lactose intolerance? No problem! Our synthetic milk is perfectly safe for consumption by all, no odd side effects, no alien mutations, no apocalyptic effects! It's milk, in a box. Toot Froot™, the world's first synthetic milk beverage, with natural fruit flavoring.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfIf there's a bond that we all share, it has to be our love for this juice, ever since we met Kirin-kun.\c-"; SWWM_LORETAG_KMONN = "Kmonn, Eushura Jr."; SWWM_LORETAB_KMONN = "People"; SWWM_LOREREL_KMONN = "XAnimen;EngineTech;Gods;Xekke"; @@ -1940,7 +2282,7 @@ SWWM_LORETXT_KMONN = "Alongside his father, he was one of the many engineers behind the famous \cfK79-D Metareality Driver\c- project. A weapon of legend whose name is well known by many, but none remember what it did, not even those involved in its creation.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfWow this guy is OLD. I know that those peeps pretty much live forever but, wow, that's even more than the old man from Tach-Engine. Talk about an age gap they got going there (yeah).\c-\n" +"\cfWow this guy is OLD. I know that those peeps pretty much live forever but, wow, that's even more than the old man from Tach-Engine. I mean, I've met his father too, and oh boy... Beyond ancient.\c-\n" "\n" "\cfOh yeah, the article mentions the K79-D. Real fucking weird shit there. I actually DO know what happened to it, because Maruku-sama told me, since she was present, and is a god and all that. Apparently the weapon tried to directly violate causality during the test fire, so a \"self-preservation mechanism\" of the universe flipped out and it was erased instantly along with all the info on how it was created (even going as far as doing memory wipes, holy fuck).\c-"; SWWM_LORETAG_KNOWLEDGEBASE = "Library"; @@ -1983,7 +2325,7 @@ SWWM_LORETXT_LOCKE = "His insanity peaked in 2049, when he attempted to \"take over the world\". This event, however, backfired so spectacularly that afterwards he completely disappeared from the public eye. Once he was gone, the various deadly toys he had made found new life being resold as actual weapons in many online marketplaces.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfSo, yeah... guy's totally a lost case. aaaaall screws loose. But yeah, as you could read there, those \"toys\" of his, they're quite reliable weapons, so I got my hands on some of 'em and put them in your arsenal (wait, that sounds wrong if you don't read that last word in full, doesn't it).\c-\n" +"\cfSo, yeah... guy's totally a lost case. aaaaall screws loose. But yeah, as you could read there, those \"toys\" of his, they're quite reliable weapons, so I got my hands on some of 'em and shoved one in your arsenal (wait, that sounds wrong if you don't read that last word in full, doesn't it).\c-\n" "\n" "\cfJust in case, you better be REALLY careful with these things. Who knows... shit could probably backfire catastrophically at any moment, JUST LIKE HIS PLANS FOR WORLD DOMINATION DID WWWWWWWWWWWW\c-"; SWWM_LORETAG_LOVESIGNALSCD = "Love Signals"; @@ -2052,6 +2394,165 @@ SWWM_LORETXT_LUNA = "\cfAnyway, life was good back then, with all those Nukuri cuties hanging out with us. You could see so many of them in the street, and well, that was also when I met Zana-sama too, best goddamn Christmas gift of my life, heh. Really REALLY miss those days, you know, pretty much hanging out with her every weekend or so. Nowadays, life just plain sucks, and I can only ever get the chance to like, send and get messages super-rarely by passing them through the Lunar Embassy (when those stupid-ass rabbits actually do their jobs).\c-\n" "\n" "\cfI really wish things would go back to how they used to be. I mean, sure, since our country didn't sign the bullshit White Scar treaty we can still use their tech, but they can't come here themselves, nor are we allowed to go there either. Fuck all that shit.\c-"; +SWWM_LORETAG_MADCAT = "MADCAT"; +SWWM_LORETAB_MADCAT = "People"; +SWWM_LOREREL_MADCAT = "Saya;AkariLabs;Demolitionist;UAC;Ibuki"; +SWWM_LORETXT_MADCAT = +" \cxFull Name:\c-\n" +" \cf Kris \"MADCAT\" Danae\c-\n" +" \cxNationality:\c-\n" +" \cf German\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2124-06-07\c-\n" +" \cxOccupation:\c-\n" +" \cf Founder, Lead Programmer (MADCAT Studio)\c-\n" +" \cf Senior Software Engineer (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @danae_kris\c-\n" +"\n" +"\cfKris Danae\c- was born in 2124, as the younger sister of \cfStefan Danae\c-. Not much is known about her parents, but she has stated they're scientists from Bavaria, Germany, involved in genetic research. From this, it can be deduced that both herself and her brother are among the many documented \cfGenetically Engineered Catfolk\c- that have been appearing since the 2090s.\n" +"\n" +"Unlike her less skilled brother, Kris is highly intelligent, and excels in computer-related tasks. She has a knack for programming, which allowed her to earn quite a fame releasing retro games under the label of \cfMADCAT Studio\c-. The simple, yet addictive \cfCat Catcher\c- has been installed in over 10 billion mobile and desktop devices worldwide since its release in 2140. That same year, she was approached by \cfHamsick Co-op\c- in order to co-develop a revival of the popular \cfRed Roger\c- series, to be released on its 60th anniversary, two years later.\n" +"\n" +"Her popularity eventually drew the attention of \cfSaya Miyamoto\c-, of \cfAkari Labs\c-, who in 2143 offered her a position as senior software engineer, assisting in various aspects of interface design. In addition, she would later be given the task of creating \cfDemolitionist\c--themed games in order to promote the program (suspiciously around the same time the first person shooter \cfDoom\c-, themed after the \cfUAC\c-'s most famous marine, was announced).\n" +"\n" +"Not much is known of Kris's personal life. She lives with her brother in a small house in Aoshima, Japan, surrounded by many stray cats they feel a kinship towards. In regards to relationships, Kris has been found to be dating the \cfRed Oni\c-, \cfIbuki Miyamoto\c-, whom she pays visits to every weekend. Despite her new position at Akari Labs, she continues to develop independent titles.\n" +"\n" +"Body of Work:\n" +"\n" +"- MADCAT Minigames (2135)\n" +"- Stray Cat (2137)\n" +"- Stray Cat 2 (2137)\n" +"- Bandit Fang (2138)\n" +"- Nekoprint Solitaire (2138)\n" +"- Stray Cat 3: Catastrophe (2139)\n" +"- Cat Catcher (2140)\n" +"- Stray Cat Collection (2141)\n" +"- Red Roger Returns (2142, w/ Hamsick Co-op)\n" +"- Nekopocalypse (2143)\n" +"- Nekopocalypse EX (2144)\n" +"- Red Roger in Capital Struggle (2145, w/ Hamsick Co-op)\n" +"- DemolitionOS (2148, w/ Saya and Taro Miyamoto)\n" +"- Demo Land Adventure (2148)\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\n" +"\cfGood ol' Kris-san. Can't have enough of her mad skills, for sure. You know her, when she gets an idea, she has to make it into a game, that's just how it is. And most of her projects obviously have to be cat-themed. Nyaa and all that stuff.\c-\n" +"\n" +"\cfBy the way, all the visual interfaces you see through your eyes? She designed them. Pretty simplistic, sure, but it works nicely. I knew she'd be able to work flawlessly for a target resolution of 640x400. You know me, I'll forever be an advocate for the superiority of 16:10. Ultrawide be damned, that stupid fad hasn't died even in this century.\c-\n" +"\n" +"\cfUh, so what else is there to say... The two of us kinda think alike at times, and that amuses me. People even say we LOOK alike, but honestly, I ain't seeing it.\c-"; +SWWM_LORETXT_MADCAT2 = +" \cxFull Name:\c-\n" +" \cf Kris \"MADCAT\" Danae\c-\n" +" \cxNationality:\c-\n" +" \cf German\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2124-06-07\c-\n" +" \cxOccupation:\c-\n" +" \cf Founder, Lead Programmer (MADCAT Studio)\c-\n" +" \cf Senior Software Engineer (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @danae_kris\c-\n" +"\n" +"\cfKris Danae\c- was born in 2124, as the younger sister of \cfStefan Danae\c-. Not much is known about her parents, but she has stated they're scientists from Bavaria, Germany, involved in genetic research. From this, it can be deduced that both herself and her brother are among the many documented \cfGenetically Engineered Catfolk\c- that have been appearing since the 2090s.\n" +"\n" +"Unlike her less skilled brother, Kris is highly intelligent, and excels in computer-related tasks. She has a knack for programming, which allowed her to earn quite a fame releasing retro games under the label of \cfMADCAT Studio\c-. The simple, yet addictive \cfCat Catcher\c- has been installed in over 10 billion mobile and desktop devices worldwide since its release in 2140. That same year, she was approached by \cfHamsick Co-op\c- in order to co-develop a revival of the popular \cfRed Roger\c- series, to be released on its 60th anniversary, two years later.\n" +"\n" +"Her popularity eventually drew the attention of \cfSaya Miyamoto\c-, of \cfAkari Labs\c-, who in 2143 offered her a position as senior software engineer, assisting in various aspects of interface design. In addition, she would later be given the task of creating \cfDemolitionist\c--themed games in order to promote the program (suspiciously around the same time the first person shooter \cfDoom\c-, themed after the \cfUAC\c-'s most famous marine, was announced).\n" +"\n" +"Not much is known of Kris's personal life. She lives with her brother in a small house in Aoshima, Japan, surrounded by many stray cats they feel a kinship towards. In regards to relationships, Kris has been found to be dating the \cfRed Oni\c-, \cfIbuki Miyamoto\c-, whom she pays visits to every weekend. Despite her new position at Akari Labs, she continues to develop independent titles.\n" +"\n" +"Body of Work:\n" +"\n" +"- MADCAT Minigames (2135)\n" +"- Stray Cat (2137)\n" +"- Stray Cat 2 (2137)\n" +"- Bandit Fang (2138)\n" +"- Nekoprint Solitaire (2138)\n" +"- Stray Cat 3: Catastrophe (2139)\n" +"- Cat Catcher (2140)\n" +"- Stray Cat Collection (2141)\n" +"- Red Roger Returns (2142, w/ Hamsick Co-op)\n" +"- Nekopocalypse (2143)\n" +"- Nekopocalypse EX (2144)\n" +"- Red Roger in Capital Struggle (2145, w/ Hamsick Co-op)\n" +"- DemolitionOS (2148, w/ Saya and Taro Miyamoto)\n" +"- Demo Land Adventure (2148)\n" +"- Felix Arcana (2150)\n" +"- Red Roger and the Demon Deed (2151, w/ Hamsick Co-op)\n" +"- Felix Arcana 2 (2153)\n" +"- Felix Arcana 2: Sky Crown (2154)\n" +"- Felix Arcana 2: Blade Soul (2154)\n" +"- Cat Catcher Revolution (2158)\n" +"- Felix Arcana: Radiant Edition (2160)\n" +"- Red Roger vs. Blue Baron (2161, w/ Hamsick Co-op)\n" +"- Felix Arcana 3 (2163)\n" +"- Interstellar Demolitionist (2171)\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\n" +"\cfGood ol' Kris-san. Can't have enough of her mad skills, for sure. You know her, when she gets an idea, she has to make it into a game, that's just how it is. And most of her projects obviously have to be cat-themed. Nyaa and all that stuff.\c-\n" +"\n" +"\cfBy the way, all the visual interfaces you see through your eyes? She designed them. Pretty simplistic, sure, but it works nicely. I knew she'd be able to work flawlessly for a target resolution of 640x400. You know me, I'll forever be an advocate for the superiority of 16:10. Ultrawide be damned, that stupid fad hasn't died even in this century.\c-\n" +"\n" +"\cfUh, so what else is there to say... The two of us kinda think alike at times, and that amuses me. People even say we LOOK alike, but honestly, I ain't seeing it.\c-"; +SWWM_LORETXT_MADCAT3 = +" \cxFull Name:\c-\n" +" \cf Kris \"MADCAT\" Danae\c-\n" +" \cxNationality:\c-\n" +" \cf German\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2124-06-07\c-\n" +" \cxOccupation:\c-\n" +" \cf Founder, Lead Programmer (MADCAT Studio)\c-\n" +" \cf Senior Software Engineer (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @danae_kris\c-\n" +"\n" +"\cfKris Danae\c- was born in 2124, as the younger sister of \cfStefan Danae\c-. Not much is known about her parents, but she has stated they're scientists from Bavaria, Germany, involved in genetic research. From this, it can be deduced that both herself and her brother are among the many documented \cfGenetically Engineered Catfolk\c- that have been appearing since the 2090s.\n" +"\n" +"Unlike her less skilled brother, Kris is highly intelligent, and excels in computer-related tasks. She has a knack for programming, which allowed her to earn quite a fame releasing retro games under the label of \cfMADCAT Studio\c-. The simple, yet addictive \cfCat Catcher\c- has been installed in over 10 billion mobile and desktop devices worldwide since its release in 2140. That same year, she was approached by \cfHamsick Co-op\c- in order to co-develop a revival of the popular \cfRed Roger\c- series, to be released on its 60th anniversary, two years later.\n" +"\n" +"Her popularity eventually drew the attention of \cfSaya Miyamoto\c-, of \cfAkari Labs\c-, who in 2143 offered her a position as senior software engineer, assisting in various aspects of interface design. In addition, she would later be given the task of creating \cfDemolitionist\c--themed games in order to promote the program (suspiciously around the same time the first person shooter \cfDoom\c-, themed after the \cfUAC\c-'s most famous marine, was announced).\n" +"\n" +"Not much is known of Kris's personal life. She lives with her brother in a small house in Aoshima, Japan, surrounded by many stray cats they feel a kinship towards. In regards to relationships, Kris has been found to be dating the \cfRed Oni\c-, \cfIbuki Miyamoto\c-, whom she pays visits to every weekend. Despite her new position at Akari Labs, she continues to develop independent titles.\n" +"\n" +"Body of Work:\n" +"\n" +"- MADCAT Minigames (2135)\n" +"- Stray Cat (2137)\n" +"- Stray Cat 2 (2137)\n" +"- Bandit Fang (2138)\n" +"- Nekoprint Solitaire (2138)\n" +"- Stray Cat 3: Catastrophe (2139)\n" +"- Cat Catcher (2140)\n" +"- Stray Cat Collection (2141)\n" +"- Red Roger Returns (2142, w/ Hamsick Co-op)\n" +"- Nekopocalypse (2143)\n" +"- Nekopocalypse EX (2144)\n" +"- Red Roger in Capital Struggle (2145, w/ Hamsick Co-op)\n" +"- DemolitionOS (2148, w/ Saya and Taro Miyamoto)\n" +"- Demo Land Adventure (2148)\n" +"- Felix Arcana (2150)\n" +"- Red Roger and the Demon Deed (2151, w/ Hamsick Co-op)\n" +"- Felix Arcana 2 (2153)\n" +"- Felix Arcana 2: Sky Crown (2154)\n" +"- Felix Arcana 2: Blade Soul (2154)\n" +"- Cat Catcher Revolution (2158)\n" +"- Felix Arcana: Radiant Edition (2160)\n" +"- Red Roger vs. Blue Baron (2161, w/ Hamsick Co-op)\n" +"- Felix Arcana 3 (2163)\n" +"- Interstellar Demolitionist (2171)\n" +"- Demolition Quest (2171)\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\n" +"\cfGood ol' Kris-san. Can't have enough of her mad skills, for sure. You know her, when she gets an idea, she has to make it into a game, that's just how it is. And most of her projects obviously have to be cat-themed. Nyaa and all that stuff.\c-\n" +"\n" +"\cfBy the way, all the visual interfaces you see through your eyes? She designed them. Pretty simplistic, sure, but it works nicely. I knew she'd be able to work flawlessly for a target resolution of 640x400. You know me, I'll forever be an advocate for the superiority of 16:10. Ultrawide be damned, that stupid fad hasn't died even in this century.\c-\n" +"\n" +"\cfUh, so what else is there to say... The two of us kinda think alike at times, and that amuses me. People even say we LOOK alike, but honestly, I ain't seeing it.\c-"; SWWM_LORETAG_MAIDBOT = "Miyamoto, Meido"; SWWM_LORETAB_MAIDBOT = "People"; SWWM_LOREREL_MAIDBOT = "Saya;Ibuki;Luna;Nukuri;Zanaveth2;Nekuratek;AkariLabs;Kirin"; @@ -2085,9 +2586,7 @@ SWWM_LORETXT_MAIDBOT = "\n" "\cfIt's nice that you two are so close, like good sisters. Cutie robutts must stick together, indeed.\c-\n" "\n" -"\cfAh, Zana-sama, bless you and your super mad skills, making my dreams come true. I remember I'd always fantasize about Meido-chan becoming self-aware and confessing her love to me, and I'd think that was TOTALLY impossible. Heh... silly ol' me.\c-\n" -"\n" -"\cfHehe... I'm really quite proud of making her \"fully featured\", by the way... Best decision of my life. Let me tell you, when we do \"things\" together... it feels like heaven~\c- \cg♥\c-"; +"\cfAh, Zana-sama, bless you and your super mad skills, making my dreams come true. I remember I'd always fantasize about Meido-chan becoming self-aware and confessing her love to me, and I'd think that was TOTALLY impossible. Heh... silly ol' me.\c-"; SWWM_LORETXT_MAIDBOT2 = " \cxFull Name:\c-\n" " \cf Meido Miyamoto\c-\n" @@ -2122,9 +2621,115 @@ SWWM_LORETXT_MAIDBOT2 = "\n" "\cfAh, Zana-sama, bless you and your super mad skills, making my dreams come true. I remember I'd always fantasize about Meido-chan becoming self-aware and confessing her love to me, and I'd think that was TOTALLY impossible. Heh... silly ol' me.\c-\n" "\n" -"\cfHehe... I'm really quite proud of making her \"fully featured\", by the way... Best decision of my life. Let me tell you, when we do \"things\" together... it feels like heaven~\c- \cg♥\c-\n" -"\n" "\cfUpdate: By the way, I'm really happy that Kirin-kun managed to get her into singing again. Of course, how could she even resist his charms, right?\c-"; +SWWM_LORETAG_MARISA = "Azanth, Marisa"; +SWWM_LORETAB_MARISA = "People"; +SWWM_LOREREL_MARISA = "Ibuki;WhiteScar;Sankaideriha;Cinnamon;Saya;Hell;Anarukon;UAC;XAnimen;Parthoris;Kirin;Demolitionist"; +SWWM_LORETXT_MARISA = +" \cxFull Name:\c-\n" +" \cf Marisa Azanth\c-\n" +" \cf Child of Ash (nickname)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1989-10-04\c-\n" +" \cxOccupation:\c-\n" +" \cf Mercenary (Demon Hunter)\c-\n" +" \cxTwitter\c-\n" +" \cf @marisa_ashen\c-\n" +"\n" +"Born in \cfSankaideriha\c- from the union of the \cfDemonic\c- grim reaper \cfAkari Shiroko\c- and the nomadic \cfAnarukon\c- pyromancer \cfSarkha Azanth\c-, \cfMarisa\c- is the result of a blasphemous relationship between members of two conflicting civilizations, those of Demons and Anarukon. Despite their differences and the clear belonging to two factions at war, the love between her parents is undeniable, demonstrating that both sides can set aside their differences and enjoy a fruitful life together.\n" +"\n" +"Having been raised by such an odd couple of outcasts, Marisa lacks certain social aptitudes, but excels in other skills, such as magic and swordfighting. Upon reaching adulthood, she began to take odd jobs as a mercenary, slaying stray demons and other beasts throughout various locations. Around 2084, one of these jobs brought her to \cfEarth\c-. Specifically, to the \cfWashington DC\c- exclusion zone. While oblivious to the events of the \cfWhite Scar\c-, she was visibly confused by the ruined state of the city, but nevertheless, she tracked down her target. To her surprise, however, the kill had already been claimed, by none other than the \cfRed Oni\c-, \cfIbuki Miyamoto\c-.\n" +"\n" +"The two spent some time working together, and a peculiar friendship bloomed. Unfortunately, when it was time for her to return home, she realized that the warp gate she had used could only take one person. Ibuki let her go, with the promise that they'd surely meet again once all was over. And so, almost 10 years later, following the Red Oni's return to \cfJapan\c-, their awaited reunion took place. Marisa had settled down at her own home in \cfKasukabe\c-, and arranged for Ibuki to move there too. Along the way, their spacious shared home would seemingly grow more cramped with the introduction of various other roommates, as well as the occasional visits of Marisa's boyfriend, an \cfOdmorian\c- ranger called \cfCinnamon Valentine\c-.\n" +"\n" +"To this day, Marisa continues to slay demons as her main occupation, so, as expected, the ongoing invasion has kept her and many others busy. Aware of the \cfDemolitionist\c-'s mission, she's somewhat \"taking it easy\", however. As of this article's writing, she was last seen heading to \cfNagoya\c-, one of the main invasion hotspots in Japan, thanks in part to the existence of various \cfUAC\c- installations within.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfAh, now this is one gal you haven't personally met. I mean, what with her job basically keeping her out there slicing and dicing all day. Ibuki told me that she almost gave up at one point, but when she told her about you and your mission, she got a huge confidence boost. Of course, both her and Ibuki are out in the wild doing their work. I'm sure they turned this into a competition now that you've factored in on the whole situation. That's typical of them.\c-\n" +"\n" +"\cfAnd what can I say about her? Well, she's the quiet type, really. Less talking, more acting, you know. Lets her sword do the speaking, kinda. And boy, is it a sword. It's HUGE, the thing she has. I heard she even got a bigger one in reserve, a sort of award she got for being super-strong or whatever. Fucking thing is just a massive, raw hunk of metal, very... Gutsy.\c-\n" +"\n" +"\cfReally hope you get to meet her someday, bet she'll find you cute. Speaking of which, I know her weakness: Capybara. Yeah, put one of 'em in front of her and she'll melt away from cuteness. Little trick I learned from her boyfriend.\c-\n" +"\n" +"\cfOh, and the boyfriend? Well, a really cool guy. We don't talk much, but he's been my main source for learning about Odmorian culture. Cleared some misconceptions real fast, and was very nice about it, too. His name is cute, too. Cinnamon, heh. Mari-san calls him Cinnabun, which is even cuter. But don't be deceived, despite all the cuteness, he's also a battle-hardened warrior like her, real tough guy, even has this HUGE gun too.\c-\n" +"\n" +"\cfYou REALLY need to meet them, seriously.\c-"; +SWWM_LORETXT_MARISA2 = +" \cxFull Name:\c-\n" +" \cf Marisa Azanth\c-\n" +" \cf Child of Ash (nickname)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1989-10-04\c-\n" +" \cxOccupation:\c-\n" +" \cf Mercenary (Demon Hunter)\c-\n" +" \cxTwitter\c-\n" +" \cf @marisa_ashen\c-\n" +"\n" +"Born in \cfSankaideriha\c- from the union of the \cfDemonic\c- grim reaper \cfAkari Shiroko\c- and the nomadic \cfAnarukon\c- pyromancer \cfSarkha Azanth\c-, \cfMarisa\c- is the result of a blasphemous relationship between members of two conflicting civilizations, those of Demons and Anarukon. Despite their differences and the clear belonging to two factions at war, the love between her parents is undeniable, demonstrating that both sides can set aside their differences and enjoy a fruitful life together.\n" +"\n" +"Having been raised by such an odd couple of outcasts, Marisa lacks certain social aptitudes, but excels in other skills, such as magic and swordfighting. Upon reaching adulthood, she began to take odd jobs as a mercenary, slaying stray demons and other beasts throughout various locations. Around 2084, one of these jobs brought her to \cfEarth\c-. Specifically, to the \cfWashington DC\c- exclusion zone. While oblivious to the events of the \cfWhite Scar\c-, she was visibly confused by the ruined state of the city, but nevertheless, she tracked down her target. To her surprise, however, the kill had already been claimed, by none other than the \cfRed Oni\c-, \cfIbuki Miyamoto\c-.\n" +"\n" +"The two spent some time working together, and a peculiar friendship bloomed. Unfortunately, when it was time for her to return home, she realized that the warp gate she had used could only take one person. Ibuki let her go, with the promise that they'd surely meet again once all was over. And so, almost 10 years later, following the Red Oni's return to \cfJapan\c-, their awaited reunion took place. Marisa had settled down at her own home in \cfKasukabe\c-, and arranged for Ibuki to move there too. Along the way, their spacious shared home would seemingly grow more cramped with the introduction of various other roommates, as well as the occasional visits of Marisa's boyfriend, an \cfOdmorian\c- ranger called \cfCinnamon Valentine\c-.\n" +"\n" +"Her participation in the \cfDemon Invasion\c- of 2148 was commendable, with a body count in the tens of thousands, and a special, shared accolade with Ibuki Miyamoto for the swift cleanup of the demon-infested \cfUAC\c- installations in \cfNagoya\c-.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfAh, now this is one gal you haven't personally met. I mean, what with her job basically keeping her out there slicing and dicing all day. Ibuki told me that she almost gave up at one point, but when she told her about you and your mission, she got a huge confidence boost. Of course, both her and Ibuki are out in the wild doing their work. I'm sure they turned this into a competition now that you've factored in on the whole situation. That's typical of them.\c-\n" +"\n" +"\cfAnd what can I say about her? Well, she's the quiet type, really. Less talking, more acting, you know. Lets her sword do the speaking, kinda. And boy, is it a sword. It's HUGE, the thing she has. I heard she even got a bigger one in reserve, a sort of award she got for being super-strong or whatever. Fucking thing is just a massive, raw hunk of metal, very... Gutsy.\c-\n" +"\n" +"\cfReally hope you get to meet her someday, bet she'll find you cute. Speaking of which, I know her weakness: Capybara. Yeah, put one of 'em in front of her and she'll melt away from cuteness. Little trick I learned from her boyfriend.\c-\n" +"\n" +"\cfOh, and the boyfriend? Well, a really cool guy. We don't talk much, but he's been my main source for learning about Odmorian culture. Cleared some misconceptions real fast, and was very nice about it, too. His name is cute, too. Cinnamon, heh. Mari-san calls him Cinnabun, which is even cuter. But don't be deceived, despite all the cuteness, he's also a battle-hardened warrior like her, real tough guy, even has this HUGE gun too.\c-\n" +"\n" +"\cfYou REALLY need to meet them, seriously.\c-\n" +"\n" +"\cfUpdate: Oh boy, what an encounter. You know, I said it many times, I wish I could have snapped a pic of the face you made when you saw that gun she has. Yeah, should've told you she's not just about big swords, but also big guns. But hey, she admires you too, and that's pretty neat. Hell, I bet that once we put you into the mission to Parthoris, she'll want to go in right after. That's just how she is.\c-\n" +"\n" +"\cfI hope she doesn't cause too much trouble, because I also plan on sending Ibuki to do some scouting in a couple places.\c-"; +SWWM_LORETXT_MARISA3 = +" \cxFull Name:\c-\n" +" \cf Marisa Azanth\c-\n" +" \cf Child of Ash (nickname)\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1989-10-04\c-\n" +" \cxOccupation:\c-\n" +" \cf Mercenary (Demon Hunter)\c-\n" +" \cxTwitter\c-\n" +" \cf @marisa_ashen\c-\n" +"\n" +"Born in \cfSankaideriha\c- from the union of the \cfDemonic\c- grim reaper \cfAkari Shiroko\c- and the nomadic \cfAnarukon\c- pyromancer \cfSarkha Azanth\c-, \cfMarisa\c- is the result of a blasphemous relationship between members of two conflicting civilizations, those of Demons and Anarukon. Despite their differences and the clear belonging to two factions at war, the love between her parents is undeniable, demonstrating that both sides can set aside their differences and enjoy a fruitful life together.\n" +"\n" +"Having been raised by such an odd couple of outcasts, Marisa lacks certain social aptitudes, but excels in other skills, such as magic and swordfighting. Upon reaching adulthood, she began to take odd jobs as a mercenary, slaying stray demons and other beasts throughout various locations. Around 2084, one of these jobs brought her to \cfEarth\c-. Specifically, to the \cfWashington DC\c- exclusion zone. While oblivious to the events of the \cfWhite Scar\c-, she was visibly confused by the ruined state of the city, but nevertheless, she tracked down her target. To her surprise, however, the kill had already been claimed, by none other than the \cfRed Oni\c-, \cfIbuki Miyamoto\c-.\n" +"\n" +"The two spent some time working together, and a peculiar friendship bloomed. Unfortunately, when it was time for her to return home, she realized that the warp gate she had used could only take one person. Ibuki let her go, with the promise that they'd surely meet again once all was over. And so, almost 10 years later, following the Red Oni's return to \cfJapan\c-, their awaited reunion took place. Marisa had settled down at her own home in \cfKasukabe\c-, and arranged for Ibuki to move there too. Along the way, their spacious shared home would seemingly grow more cramped with the introduction of various other roommates, as well as the occasional visits of Marisa's boyfriend, an \cfOdmorian\c- ranger called \cfCinnamon Valentine\c-.\n" +"\n" +"Her participation in the \cfDemon Invasion\c- of 2148 was commendable, with a body count in the tens of thousands, and a special, shared accolade with Ibuki Miyamoto for the swift cleanup of the demon-infested \cfUAC\c- installations in \cfNagoya\c-.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfAh, now this is one gal you haven't personally met. I mean, what with her job basically keeping her out there slicing and dicing all day. Ibuki told me that she almost gave up at one point, but when she told her about you and your mission, she got a huge confidence boost. Of course, both her and Ibuki are out in the wild doing their work. I'm sure they turned this into a competition now that you've factored in on the whole situation. That's typical of them.\c-\n" +"\n" +"\cfAnd what can I say about her? Well, she's the quiet type, really. Less talking, more acting, you know. Lets her sword do the speaking, kinda. And boy, is it a sword. It's HUGE, the thing she has. I heard she even got a bigger one in reserve, a sort of award she got for being super-strong or whatever. Fucking thing is just a massive, raw hunk of metal, very... Gutsy.\c-\n" +"\n" +"\cfReally hope you get to meet her someday, bet she'll find you cute. Speaking of which, I know her weakness: Capybara. Yeah, put one of 'em in front of her and she'll melt away from cuteness. Little trick I learned from her boyfriend.\c-\n" +"\n" +"\cfOh, and the boyfriend? Well, a really cool guy. We don't talk much, but he's been my main source for learning about Odmorian culture. Cleared some misconceptions real fast, and was very nice about it, too. His name is cute, too. Cinnamon, heh. Mari-san calls him Cinnabun, which is even cuter. But don't be deceived, despite all the cuteness, he's also a battle-hardened warrior like her, real tough guy, even has this HUGE gun too.\c-\n" +"\n" +"\cfYou REALLY need to meet them, seriously.\c-\n" +"\n" +"\cfUpdate: Oh boy, what an encounter. You know, I said it many times, I wish I could have snapped a pic of the face you made when you saw that gun she has. Yeah, should've told you she's not just about big swords, but also big guns. But hey, she admires you too, and that's pretty neat. Hell, I bet that once we put you into the mission to Parthoris, she'll want to go in right after. That's just how she is.\c-\n" +"\n" +"\cfI hope she doesn't cause too much trouble, because I also plan on sending Ibuki to do some scouting in a couple places.\c-\n" +"\n" +"\cfUpdate 2: Can't believe it took until our wedding with Kirin to meet her parents. You saw, we all saw, that Sarkha gal is a total nutcase, I can see who she takes after, at least in part, because her other mom is the surprisingly nicest, kindest woman I've ever met. Like, even with the whole thing of being an assassin and stuff... Aaaaand then I learned, that she's descended from Hell royalty. No wonder the demons are so intimidated by her, makes a lot of sense.\c-\n" +"\n" +"\cfI swear, between her and her two moms, they all look like Dark Souls characters.\c-"; SWWM_LORETAG_MILKBREADS = "Milk Breads"; SWWM_LORETAB_MILKBREADS = "Item"; SWWM_LOREREL_MILKBREADS = "Kirin;Anarukon;Saya"; @@ -2136,7 +2741,7 @@ SWWM_LORETXT_MILKBREADS = "\cxClassification:\c-\n" "\cf Pastry\c-\n" "\n" -"A delicacy of Akkouxhei cuisine, \cfMilk Breads\c- as they are commonly called by the locals are a soft, sugary pastry typically eaten during special events, such as birthdays or weddings. Soft, fluffy buns of sweet bread enhanced with the refined sap of the native \cfYranakha\c- trees and mixed with condensed \cfGray Beast\c- milk, they melt in the mouth with each bite, becoming increasingly sweeter.\n" +"A delicacy of Akkouxhei cuisine, \cfMilk Breads\c- as they are commonly called by the locals are a soft, sugary pastry, akin to brioche, that are typically eaten during special events, such as birthdays or weddings. Soft, fluffy buns of sweet bread enhanced with the refined sap of the native \cfYranakha\c- trees and mixed with condensed \cfGray Beast\c- milk, they melt in the mouth with each bite, becoming increasingly sweeter.\n" "\n" "Though it is not generally a problem for the native \cfAnarukon\c-, the obscene sugar content of these has proven to be dangerous to mortals unless consumed in moderation, potentially resulting in the development of cardiovascular diseases or even death.\n" "\n" @@ -2145,11 +2750,11 @@ SWWM_LORETXT_MILKBREADS = "\cxSaya's Notes:\c-\n" "\cfYou know, learning that the milk comes from THOSE THINGS has absolutely not changed at all my opinion. This stuff is heavenly, it's the most delicious thing ever created, it's so sweet I'd just die for them. I mean, it kinda happened once when I overdosed on them (good god that was embarrassing). Yeah, no wonder I fucking died when I had more sugar than blood in my body. I remember Kirin-kun said he actually heard my heart explode, but I bet he was just being dramatic. There's no way that's what happened.\c-\n" "\n" -"\cfOh yeah, and there's a myth going around that if you eat enough of these your boobs will get huge. I totally don't believe that's possible, of course not. What kind of fool would purposefully overdose on them to grow a pair of real big honkers?\c-"; -SWWM_LORETAG_MISTERGUN = "Mortal Rifle"; -SWWM_LORETAB_MISTERGUN = "Item"; -SWWM_LOREREL_MISTERGUN = "NosKora;Saya"; -SWWM_LORETXT_MISTERGUN = +"\cfOh yeah, and there's a myth going around that if you eat enough of these your boobs will get huge. I totally don't believe that's possible, of course not. What kind of fool would purposefully overdose on them?\c-"; +SWWM_LORETAG_MISTERRIFLE = "Mortal Rifle"; +SWWM_LORETAB_MISTERRIFLE = "Item"; +SWWM_LOREREL_MISTERRIFLE = "NosKora;Saya"; +SWWM_LORETXT_MISTERRIFLE = "\cxDesignation:\c-\n" "\cf Mortal Rifle\c-\n" "\cf \"Mister\" (common nickname)\c-\n" @@ -2164,18 +2769,22 @@ SWWM_LORETXT_MISTERGUN = "\n" "\cfPrimary Fire:\c- Steady shooting of the primary ammunition.\n" "\n" -"\cfSecondary Fire:\c- Launches an under-barrel grenade. If empty, loads a new one.\n" +"\cfSecondary Fire:\c- Launches an under-barrel grenade. If empty, loads a new one. Best used against large groups of enemies, as this will allow a more uniform distribution of sub-grenade target designations for maximum damage coverage.\n" "\n" -"\cfTertiary Fire:\c- Alternates between operation modes for the rifle. Switching between \"precision shot\" (standard semi-auto), \"cluster shot\" (somehow behaving like a shotgun with the same ammunition), \"stream shot\" (behaves like full auto but appears to shoot four bullets per bullet?), and \"overpressure shot\" (somehow appearing to \"charge\" the ammunition before firing it out with higher potency and velocity).\n" +"\cfTertiary Fire:\c- Alternates between operation modes for the rifle. Switching between \"precision shot\" (semi-auto, pinpoint accuracy), \"cluster shot\" (15-round buckshot, high spread), \"stream shot\" (4-subround burst, low accuracy), and \"overpressure shot\" (high-power penetrating bolt).\n" "\n" -"\cfReload:\c- Does what you'd expect.\n" +"\cfReload:\c- One of the few operations that does what you'd logically expect.\n" +"\n" +"\cfTechniques:\c- Each of the fire modes has a specific situation they're optimimal for, make sure to experiment and study their behavior so you may then increase your efficiency in the battlefield.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfAt this point I can't even be bothered to be confused by anything that comes out of there, seriously.\c-\n" "\n" "\cfThis thing is an assault rifle, a shotgun, a machine gun and an anti-tank rifle all in one, with the same exact ammo. And it makes no sense, sure, but it works, however it does.\c-\n" "\n" -"\cfDon't get too comfortable with it, by the way. I bet once it starts to grow on you you won't be able to go back to any other weapon.\c-"; +"\cfAlso those grenades are even weirder. You put a ruler to them and they're clearly 25mm or so, but somehow they GROW to full size after they're shot. AND THE WHOLE AUTO-TARGET FUNCTIONALITY TERRIFIES ME CONCEPTUALLY. THIS WAS MADE WITH CARPET BOMBING IN MIND, 100% SURE OF IT.\c-\n" +"\n" +"\cfSeriously, don't get too comfortable with it. I bet once it starts to grow on you you won't be able to go back to any other weapon, and you'll be cursed for life or something.\c-"; SWWM_LORETAG_MIXOM = "Mixom"; SWWM_LORETAB_MIXOM = "People"; SWWM_LOREREL_MIXOM = "UAC;Symnatek;Saya"; @@ -2225,7 +2834,7 @@ SWWM_LORETXT_MODERNSPARKSTER = "\n" "\cfSecondary Reload:\c- Load in a Nokron cell. Same capacity.\n" "\n" -"\cfTechniques:\c- Projectile charge can be held indefinitely, as the weapon will vent regularly to stabilize the weapon's peak ignition potency. This could allow one to simply charge from cover and pop out to release the shot when needed. Additionally, the possibility to press both triggers at once is also documented, which allows for a potent release of Nokorokinylum plasma, comparable to a miniature nuke in destructive potential. It is not recommended to perform a combined attack unless the target is far away enough so as to not endanger the user.\n" +"\cfTechniques:\c- Projectile charge can be held indefinitely, as the weapon will vent regularly to stabilize its peak ignition potency. This could allow one to simply charge from cover and pop out to release the shot when needed. Additionally, the possibility to press both triggers at once is also documented, which allows for a potent release of Nokorokinylum plasma, comparable to a miniature nuke in destructive potential. It is not recommended to perform a combined attack unless the target is far away enough so as to not endanger the user.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYooooooooo this is the shit right here. It's kind of a pre-war relic, but it works so well that the x4 and x5 models are apparently just minor revisions of it, from what the old man told me. We can't have the new ones due to some deep White Scar Treaty fuckery, sadly, so this one will do.\c-\n" @@ -2255,21 +2864,19 @@ SWWM_LORETXT_MOTHLAMP = "\n" "\cfBut... actually, afterwards I think she did say that \"maybe\". Which honestly, does sound kinda... whew. In a way, I'd like the idea, but at the same time... I hope we don't end up regretting this.\c-\n" "\n" -"\cfOh god imagine if moth girls actually are real, I'd fucking... ffffffdfgdgfgsfgggghghffhghg\c-"; -SWWM_LORETAG_MOTHPLUSHY = "Moth Plushy"; +"\cfOh god imagine if moth girls actually are real, I'd just... ffffffdfgdgfgsfgggghghffhghg\c-"; +SWWM_LORETAG_MOTHPLUSHY = "Moth Plush"; SWWM_LORETAB_MOTHPLUSHY = "Item"; -SWWM_LOREREL_MOTHPLUSHY = "MothLamp;Saya;NosKora"; +SWWM_LOREREL_MOTHPLUSHY = "Nukritas2xx;MothLamp;Saya"; SWWM_LORETXT_MOTHPLUSHY = "\cxDesignation:\c-\n" -"\cf Mashiro the Moth Girl Plush\c-\n" +"\cf Moth Girl Plush\c-\n" "\cxManufacturer:\c-\n" "\cf Nukritas 2xx\c-\n" "\cxClassification:\c-\n" "\cf Plush Doll\c-\n" "\n" -"A lovely handcrafted plush doll of \cfMashiro\c-, the moth girl, for good boys and girls alike. Like all moths, she enjoys the light of a good lamp. If you provide her with the soothing glow of a \cfSankai Companion Lamp\c-, you may get yourself a reliable friend, perhaps a lover. Just, please do be quiet, you may startle her.\n" -"\n" -"We at \cfPlutoni Incorporated\c- shall not be held responsible should you find yourself trapped in a time loop with a fine moth girl friend to keep you company.\n" +"A lovely handcrafted moth girl plush doll. Like all moths, she enjoys the light of a good lamp. If you provide her with the soothing glow of a \cfSankai Companion Lamp\c-, you may get yourself a loyal friend. Just, please do be quiet, you may startle her.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfThere's a pile of these in my bedroom, you know. One for every time those two have pissed me off. It's scary that they know me so well, seriously.\c-\n" @@ -2277,7 +2884,7 @@ SWWM_LORETXT_MOTHPLUSHY = "\cfOh by the way, I've been told that that specific one you're getting, from their stupid gachashit, is potentially cursed. I do NOT like the sound of that... or maybe... What if you actually attract a real moth girl with it? Oh god oh man I want to see that please PLEASE.\c-"; SWWM_LORETAG_MUNCH = "Munch Innovations"; SWWM_LORETAB_MUNCH = "People"; -SWWM_LOREREL_MUNCH = "Saya;Explodium;ExplodiumGun"; +SWWM_LOREREL_MUNCH = "Parker;Saya;Explodium;ExplodiumGun"; SWWM_LORETXT_MUNCH = "\cxName:\c-\n" "\cf Munch Innovations\c-\n" @@ -2332,7 +2939,7 @@ SWWM_LORETXT_NANA = " \cxDate of Birth:\c-\n" " \cf 1907-07-07\c-\n" " \cxOccupation:\c-\n" -" \cf Housemaker\c-\n" +" \cf Homemaker\c-\n" "\n" "\n" "\n" @@ -2344,7 +2951,7 @@ SWWM_LORETXT_NANA = "Nana has three children, who, like her, have also inherited the immortal blood of the moon princess: \cfTaro\c-, \cfSaya\c- and \cfYui\c-. Each of them have been quite successful in their own exploits too, something Nana often extensively talks about, in a very proud manner.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfThe bestest mom in the world, not gonna lie. She may be strict at times, or get mad at me for staying up late (if she actually finds out, heh), but she really is the best. You haven't actually met her yet, Demo-chan, but I bet she'd really like you. I assure you she's real nice despite how scary she may look sometimes. She totally is not like Kaguya obaa-san, who I swear always has that aura about her that's like... no wonder guys are scared of her, always in constant fear of being CBT'd at any moment.\c-"; +"\cfThe bestest mom in the world, not gonna lie. She may be strict at times, or get mad at me for staying up late (if she actually finds out, heh), but she really is the best. You haven't actually met her yet, Demo-chan, but I bet she'd really like you. I assure you she's real nice despite how scary she may look sometimes. She totally is not like Kaguya obaa-san, who I swear always has that aura about her that's like... no wonder people are scared of her.\c-"; SWWM_LORETXT_NANA2 = " \cxFull Name:\c-\n" " \cf Nana Miyamoto\c-\n" @@ -2353,7 +2960,7 @@ SWWM_LORETXT_NANA2 = " \cxDate of Birth:\c-\n" " \cf 1907-07-07\c-\n" " \cxOccupation:\c-\n" -" \cf Housemaker\c-\n" +" \cf Homemaker\c-\n" "\n" "\n" "\n" @@ -2367,7 +2974,7 @@ SWWM_LORETXT_NANA2 = "\cxSaya's Notes:\c-\n" "\cfOkaa-san is so happy that you're out there doing good work. It was nice to see that she likes you. I did tell you, after all.\c-\n" "\n" -"\cfBy the way I did notice it, you know, when she hugged you, yes. She hasn't really tried to see other guys after dad was gone... But I think that maybe... she likes you kind of in a different way, y'know...\c-"; +"\cfMan, I swear she's started making tuna pie more often just because of you. It's nice that you get to eat your favorite dish and all, but you should know that what you need in your diet is carbs, right?\c-"; SWWM_LORETXT_NANA3 = " \cxFull Name:\c-\n" " \cf Nana Miyamoto\c-\n" @@ -2376,7 +2983,7 @@ SWWM_LORETXT_NANA3 = " \cxDate of Birth:\c-\n" " \cf 1907-07-07\c-\n" " \cxOccupation:\c-\n" -" \cf Housemaker\c-\n" +" \cf Homemaker\c-\n" "\n" "\n" "\n" @@ -2390,11 +2997,9 @@ SWWM_LORETXT_NANA3 = "\cxSaya's Notes:\c-\n" "\cfOkaa-san is so happy that you're out there doing good work. It was nice to see that she likes you. I did tell you, after all.\c-\n" "\n" -"\cfOh yeah, during the wedding, with Kirin... remember that? Turns out I was right, after all. She's gone to the \"other side\" now. God, I envy you all, having missed the scene. Seeing mom right there, making out with Ashley-san's... I wish I could unsee it, but now they even plan to get married. Wouldn't that make Yu-chan and Ashley-san sisters? Like, the two are already a couple and all... It's going to be weird.\c-\n" +"\cfMan, I swear she's started making tuna pie more often just because of you. It's nice that you get to eat your favorite dish and all, but you should know that what you need in your diet is carbs, right?\c-\n" "\n" -"\cfWait... If that's the case, then... THEN KIRIN-KUN AND I... I'LL BECOME HIS AUNT???\c-\n" -"\n" -"\cf... on second thought, it doesn't really matter. I was already a sinner anyway, considering there's you, Ibuki and Meido. You're technically my children (and also Ibuki is my own clone), after all.\c-"; +"\cfOh yeah, and what happened during the wedding... Man, that caught us by surprise. She went and got herself a girlfriend. And it was Ashley-san's mom, no less. It's still a bit awkward but... I guess it's fine since she's much happier now.\c-"; SWWM_LORETAG_NEDOSHIAAN = "Nedoshiaan"; SWWM_LORETAB_NEDOSHIAAN = "Lore"; SWWM_LOREREL_NEDOSHIAAN = "Devanikna;Unissix;Saya;XAnimen;Gods"; @@ -2459,7 +3064,7 @@ SWWM_LORETXT_NEKURATEK = "\cfAnyway, because of the stupid \"White Scar\" everything went to shit, and we haven't really been in touch, so I hope they're all doing okay. God, I miss Zana-sama... Absolute cutie...\c-"; SWWM_LORETAG_NOSKORA = "Nos-Kora"; SWWM_LORETAB_NOSKORA = "People"; -SWWM_LOREREL_NOSKORA = "Nukuri;Saya;"; +SWWM_LOREREL_NOSKORA = "Nukuri;Saya;Nukritas1xx;Nukritas2xx"; SWWM_LORETXT_NOSKORA = "\cxName:\c-\n" "\cf University of Nos-Kora\c-\n" @@ -2474,7 +3079,7 @@ SWWM_LORETXT_NOSKORA = "\n" "Being part of the Mishe, the two brothers have what can only be described as \"reality manipulation\" powers. This has only been witnessed on rare occasions, however, such as during the final moments of the \cfNukuri Seventh World War\c-, where one of them managed to singlehandedly put a stop to the conflict, shrugging off the attacks of imperial soldiers while making his way to the throne, whereupon reaching it, he punched emperor \cfLedora Yathai\c- off his seat, launching him across the room in a perfectly straight line towards the nearest window, and sending him off into low orbit. His body was never recovered, and he was presumed dead.\n" "\n" -"The popularity of the university skyrocketed following this success in dismantling a whole empire and ultimately bringing forth the creation of the \cfNukuri Unified Government\c-. Many people wish to learn of what these odd beings have to teach, although the various courses are quite difficult for the average individual.\n" +"The popularity of the university skyrocketed following this success in dismantling a whole empire and ultimately bringing forth the creation of the \cfNahkami Unified Government\c-. Many people wish to learn of what these odd beings have to teach, although the various courses are quite difficult for the average individual.\n" "\n" "Some of the more popular courses one can take at the University of Nos-Kora include:\n" "\n" @@ -2507,16 +3112,14 @@ SWWM_LORETXT_NOVOSKHANA = "\n" "The societal structure of the empire is strictly matriarchal, all men exist only to serve their wives and provide them with children. In addition, most if not all women born in Novoskhana are raised for warfare, especially those of lower classes. Due to this fact, no one has dared to start any sort of war or conflict with the empire, as it is always at the ready to strike back, with its unstoppable armies of immortal warriors.\n" "\n" -"The Eternal Empress and her many daughters hold absolute power over all of Novoskhana, and make all important decisions, including the creation of new laws. Of all the various laws that have come from them, many have become so controversial that it has resulted in large groups of people \"splitting off\" from the empire to form their own separate nations. The Empress's eldest granddaughter, Executioner Eryukha Yanikov, personally directs (and often herself delivers) all punishment of citizens that are deemed \cf\"Deviants\"\c-, a term used for all those who do not obey the empire's laws.\n" -"\n" -"There are countless ways one could be labeled an \"enemy of the state\", among them, showing signs of \"destabilizing the natural order of society\", which includes but is not limited to: Men who reject marriage or having children, men who father another man as their first child, or are incapable of having any descendants, men who are witnessed maintaining relationships with other men, any individual who shares a name with the empress, any individual who \"lives in disconnect from society\" (usually used to refer to those who remain unemployed for extended periods of time, or who lack a home), women who do not contribute to war efforts, women who are seen maintaining relationships with other women, \"divergent\" individuals (term used for those that don't fall under the male/female binary), etc.\n" +"The Eternal Empress and her many daughters hold absolute power over all of Novoskhana, and make all important decisions, including the creation of new laws. Of all the various laws that have come from them, many have become so controversial that it has resulted in large groups of people \"splitting off\" from the empire to form their own separate nations. The Empress's eldest granddaughter, Executioner Eryukha Yanikov, personally directs (and often herself delivers) all punishment of citizens that are deemed \cf\"Deviants\"\c-, a term used for all those who do not obey the empire's strict laws.\n" "\n" "Two of the major bodies that split from the Empire are the \cfKurenai Kingdom\c-, initially founded by the \cfVexx Sisterhood\c- as a safe haven for enemies of the state, and the \cfSykhai Empire\c-, an ironically named anarcho-communist collective founded by a branch of the Yanikov family that disagreed strongly with the \"broken system\" of the Empire. A large part of the free \cfAnarukon\c- population in the multiverse is contained in these two, while the rest have settled in various other places, including Earth.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfHoly shit, dude. If there ever was a contest for who's the most cartoonishly evil dictator in the history of the whole world, this fucker would get first place. Fucking... TERF empire. Wonderful, simply wonderful...\c-\n" +"\cfHoly shit, dude. If there ever was a contest for who's the most cartoonishly evil dictator in the history of the whole world, this fucker would get first place. Wonderful, simply wonderful...\c-\n" "\n" -"\cfYeah, I would never want to even get fucking close to that place, holy fuck. I'd get my head yeeted clean off for pretty much ALL reasons or something, as soon as I set foot in there. What I really don't understand is... like... HOW IN THE FUCK are there still people in there??? WHO THE FUCK EVEN would want to live there at all???\c-\n" +"\cfYeah, I would never want to even get close to that place, holy fuck. I'd get my head yeeted clean off for pretty much ALL reasons or something, as soon as I set foot in there. What I really don't understand is... Like, how anyone would want to live in there at all, under such an absurd dictatorship??\c-\n" "\n" "\cfOh, who am I kidding, of course there are people who'd be perfect with a shithole like that, there always are. If history has taught us anything, I mean... Yeah... Some people are shit enough to follow a leader like that, or worse...\c-"; SWWM_LORETXT_NOVOSKHANA2 = @@ -2531,16 +3134,14 @@ SWWM_LORETXT_NOVOSKHANA2 = "\n" "The societal structure of the empire is strictly matriarchal, all men exist only to serve their wives and provide them with children. In addition, most if not all women born in Novoskhana are raised for warfare, especially those of lower classes. Due to this fact, no one has dared to start any sort of war or conflict with the empire, as it is always at the ready to strike back, with its unstoppable armies of immortal warriors.\n" "\n" -"The Eternal Empress and her many daughters hold absolute power over all of Novoskhana, and make all important decisions, including the creation of new laws. Of all the various laws that have come from them, many have become so controversial that it has resulted in large groups of people \"splitting off\" from the empire to form their own separate nations. The Empress's eldest granddaughter, Executioner Eryukha Yanikov, personally directs (and often herself delivers) all punishment of citizens that are deemed \cf\"Deviants\"\c-, a term used for all those who do not obey the empire's laws.\n" -"\n" -"There are countless ways one could be labeled an \"enemy of the state\", among them, showing signs of \"destabilizing the natural order of society\", which includes but is not limited to: Men who reject marriage or having children, men who father another man as their first child, or are incapable of having any descendants, men who are witnessed maintaining relationships with other men, any individual who shares a name with the empress, any individual who \"lives in disconnect from society\" (usually used to refer to those who remain unemployed for extended periods of time, or who lack a home), women who do not contribute to war efforts, women who are seen maintaining relationships with other women, \"divergent\" individuals (term used for those that don't fall under the male/female binary), etc.\n" +"The Eternal Empress and her many daughters hold absolute power over all of Novoskhana, and make all important decisions, including the creation of new laws. Of all the various laws that have come from them, many have become so controversial that it has resulted in large groups of people \"splitting off\" from the empire to form their own separate nations. The Empress's eldest granddaughter, Executioner Eryukha Yanikov, personally directs (and often herself delivers) all punishment of citizens that are deemed \cf\"Deviants\"\c-, a term used for all those who do not obey the empire's strict laws.\n" "\n" "Two of the major bodies that split from the Empire are the \cfKurenai Kingdom\c-, initially founded by the \cfVexx Sisterhood\c- as a safe haven for enemies of the state, and the \cfSykhai Empire\c-, an ironically named anarcho-communist collective founded by a branch of the Yanikov family that disagreed strongly with the \"broken system\" of the Empire. A large part of the free \cfAnarukon\c- population in the multiverse is contained in these two, while the rest have settled in various other places, including Earth.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfHoly shit, dude. If there ever was a contest for who's the most cartoonishly evil dictator in the history of the whole world, this fucker would get first place. Fucking... TERF empire. Wonderful, simply wonderful...\c-\n" +"\cfHoly shit, dude. If there ever was a contest for who's the most cartoonishly evil dictator in the history of the whole world, this fucker would get first place. Wonderful, simply wonderful...\c-\n" "\n" -"\cfYeah, I would never want to even get fucking close to that place, holy fuck. I'd get my head yeeted clean off for pretty much ALL reasons or something, as soon as I set foot in there. What I really don't understand is... like... HOW IN THE FUCK are there still people in there??? WHO THE FUCK EVEN would want to live there at all???\c-\n" +"\cfYeah, I would never want to even get close to that place, holy fuck. I'd get my head yeeted clean off for pretty much ALL reasons or something, as soon as I set foot in there. What I really don't understand is... Like, how anyone would want to live in there at all, under such an absurd dictatorship??\c-\n" "\n" "\cfOh, who am I kidding, of course there are people who'd be perfect with a shithole like that, there always are. If history has taught us anything, I mean... Yeah... Some people are shit enough to follow a leader like that, or worse...\c-\n" "\n" @@ -2566,6 +3167,62 @@ SWWM_LORETXT_NUGGET = "\n" "\cxSaya's Notes:\c-\n" "\cfCan I just add that this shit is videogamey af? No, seriously. Stuff that you just go and touch and it heals you or gives you armor... I mean, come on. I bet that nerdboi would be all over this, he keeps talking about how life is like a videogame and shit.\c-"; +SWWM_LORETAG_NUKRITAS1XX = "Nukritas 1xx"; +SWWM_LORETAB_NUKRITAS1XX = "People"; +SWWM_LOREREL_NUKRITAS1XX = "NosKora;Nukritas2xx;XAnimen;Saya"; +SWWM_LORETXT_NUKRITAS1XX = +" \cxFull Name:\c-\n" +" \cf Subject 1xx, Sub-Type Nukritas\c-\n" +" \cxNationality:\c-\n" +" \cf Mishe\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1030-10-10\c-\n" +" \cxOccupation:\c-\n" +" \cf Director (University of Nos-Kora)\c-\n" +"\n" +"\n" +"\n" +"\n" +"\cfNukritas 1xx\c- is the second last of the \cfMishe\c- born aboard the artificial moon of \cfDeishe\c-, long after the destruction and subsequent extinction of all prior native Mishe in their home world in 8135 BC following a one-sided war with the neighboring \cfGoshun\c- race.\n" +"\n" +"Like his twin sister, he is designated as a \"Nukritas Sub-Type\", meaning he was born and raised for the purpose of representing the survivors of his race and propagate their knowledge through the \cfX'Animen Coalition\c-. For this, and together with his sister, they founded the \cfUniversity of Nos-Kora\c- in \cfNahkami\c-.\n" +"\n" +"Since these tasks don't really take much of his time, 1xx has taken to various hobbies, such as writing. He has penned various novels that not many have fully understood, though all claim to have definitely read from start to finish. He is also an avid cook, and enjoys learning of the various recipes of each civilization he meets together with his sister. His personal favorite is grilled cheese sandwiches.\n" +"\n" +"Like all members of the Mishe race, he is rather eccentric, his immense knowledge appears to be quite exhaustive, though the subjects he dominates are all over the place. It appears that him and his sister share a common train of thought, as they seamlessly continue each other's sentences during common conversations.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfYeah, I know, seems a bit bare-bones, but these two don't exactly have a biography or something that we can look up.\c-\n" +"\n" +"\cfThis guy... The way he smiles gives me the creeps sometimes. I wonder if he can read my thoughts or something.\c-"; +SWWM_LORETAG_NUKRITAS2XX = "Nukritas 2xx"; +SWWM_LORETAB_NUKRITAS2XX = "People"; +SWWM_LOREREL_NUKRITAS2XX = "NosKora;Nukritas1xx;XAnimen;Gods;Saya"; +SWWM_LORETXT_NUKRITAS2XX = +" \cxFull Name:\c-\n" +" \cf Subject 2xx, Sub-Type Nukritas\c-\n" +" \cxNationality:\c-\n" +" \cf Mishe\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 1030-10-10\c-\n" +" \cxOccupation:\c-\n" +" \cf Director (University of Nos-Kora)\c-\n" +"\n" +"\n" +"\n" +"\n" +"\cfNukritas 2xx\c- is the last of the \cfMishe\c- born aboard the artificial moon of \cfDeishe\c-, long after the destruction and subsequent extinction of all prior native Mishe in their home world in 8135 BC following a one-sided war with the neighboring \cfGoshun\c- race.\n" +"\n" +"Like her twin brother, she is designated as a \"Nukritas Sub-Type\", meaning she was born and raised for the purpose of representing the survivors of her race and propagate their knowledge through the \cfX'Animen Coalition\c-. For this, and together with her brother, they founded the \cfUniversity of Nos-Kora\c- in \cfNahkami\c-.\n" +"\n" +"Since these tasks don't really take much of her time, 2xx has taken to various hobbies, such as painting. She has crafted various art pieces that not many have fully understood, though all claim to have definitely seen them from top to bottom. She is also an avid doll maker, and enjoys creating plush dolls of the friends she makes together with her brother. Her personal favorite is a doll of the \cfBlue God\c-, who offered to become the patron of her people as thanks.\n" +"\n" +"Like all members of the Mishe race, she is rather eccentric, her immense knowledge appears to be quite exhaustive, though the subjects she dominates are all over the place. It appears that her and her brother share a common train of thought, as they seamlessly continue each other's sentences during common conversations.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfThis one's like the other, yeah. Not exactly a lot of information available out there, you know...\c-\n" +"\n" +"\cfI kinda like her, the dolls she makes are cute. I mean, you've seen them, right? They're just adorable!\c-"; SWWM_LORETAG_NUKURI = "Nukuri"; SWWM_LORETAB_NUKURI = "Lore"; SWWM_LOREREL_NUKURI = "Luna;XAnimen;Zanaveth2;Unissix;Saya"; @@ -2579,11 +3236,11 @@ SWWM_LORETXT_NUKURI = "\n" "The \cfNukuri\c- are a pale-skinned humanoid race native to \cfHebeku\c-'s frozen moon of \cfNahkami\c-, in the \cfXathar System\c- (part of the \cfX'Animen Coalition\c-). They are among the most technologically advanced within the entire Coalition, and are seen as a shining example of progress and dedication, although they've had an extensive history of war and conflict, along with having been involved in notable atrocities. Such a dark past is something they are well aware and ashamed of, ever since the end of their seventh world war and the massive political and economic reform they underwent afterwards.\n" "\n" -"In the past, Nahkami was a ruthless warmongering empire ruled with an iron fist by the \cfYathai\c- royal family. However, following the reform, and with emperor \cfLedora Yathai\c- being \"forced into exile\" by the founders of the \cfUniversity of Nos-Kora\c-, who led said reform, the \cfNukuri Unified Government\c- was created, with \cfZanata Nekuraku II\c- personally appointed as \"transitional\" prime minister.\n" +"In the past, Nahkami was a ruthless warmongering empire ruled with an iron fist by the \cfYathai\c- royal family. However, following the reform, and with emperor \cfLedora Yathai\c- being \"forced into exile\" by the founders of the \cfUniversity of Nos-Kora\c-, who led said reform, the \cfNahkami Unified Government\c- was created, with \cfZanata Nekuraku II\c- personally appointed as \"transitional\" prime minister.\n" "\n" "As someone who had suffered the loss of her mother and her husband in the previous wars, Zanata had always been opposed to the empire and its practices, including their decision to attack humanity at the peak of WW7, in what was known as the \cfWhite Scar\c- incident. Following the establishment of the new government, she attempted to make amends with us, but nothing came of it. After this had happened, she stepped down both from her position as prime minister, and also as leader of \cfNekuratek\c-, the company her family has run for many generations. As of this article's writing, the current prime minister of Nahkami, elected by the vast majority, is \cfSaya Kowayanau\c-, who is also the governor of the province of \cfSaya\c-.\n" "\n" -"The Nukuri Unified Government can be seen as one of the various examples of successful transitions away from dictatorial regimes to something more open. Its form of government is self-described as a \"communist omnicracy\", where everyone stands in equal terms and no voice is left unheard. Its method of allowing all its inhabitants to take part in decision-making, the \"fractal vote\", was widely praised by other neighboring nations. In a way, everything is ultimately decided by all people within the nation, no voice is left unheard. In terms of its economy, there are no concepts of currency, or private ownership. All previous businesses are now publicly owned, however with their founders still holding what's basically a \"symbolic\" position of leadership, being still involved in their management, under government supervision.\n" +"The Nahkami Unified Government can be seen as one of the various examples of successful transitions away from dictatorial regimes to something more open. Its form of government is self-described as a \"communist omnicracy\", where everyone stands in equal terms and no voice is left unheard. Its method of allowing all its inhabitants to take part in decision-making, the \"fractal vote\", was widely praised by other neighboring nations. In a way, everything is ultimately decided by all people within the nation, no voice is left unheard. In terms of its economy, there are no concepts of currency, or private ownership. All previous businesses are now publicly owned, however with their founders still holding what's basically a \"symbolic\" position of leadership, being still involved in their management, under government supervision.\n" "\n" "It's also well known that the Nukuri still possess a very strong military force, but they only serve to defend the nation from external threats (something that has rarely happened). In addition, the manufacture and use of weapons is heavily supervised, too.\n" "\n" @@ -2664,13 +3321,13 @@ SWWM_LORETXT_ONOKE = "\cxLocation:\c-\n" "\cf Kereshnovka\c-\n" "\n" -"In October of 2003, a fire broke out in the \cfOnoke Mansion\c-, at the outskirts of \cfKereshnovka\c-, during a meeting between the \cfImanaki\c- and \cfOnoke\c- families. When the firefighters arrived, they found everyone dead, all having been murdered in increasingly gruesome ways. The culprit was never found.\n" +"In October of 2003, a fire broke out in the \cfOnoke Mansion\c-, at the outskirts of \cfKereshnovka\c-, during a meeting between the \cfImanaki\c- and \cfOnoke\c- families. When the firefighters arrived, they found everyone dead, all having been poisoned and their bodies desecrated. The culprit was never found.\n" "\n" "There are many theories about what could have happened. Most point towards this having been the work of \cfHynnykka the Great Witch\c-, a serial killer from centuries ago (or a possible successor), remarking on the fact that her last note could have the potential interpretation of having been directed towards these two powerful families (\"everyone will die\"). This is not only seen as a considerable stretch, but there are clear doubts that something like this could have been done by a single individual.\n" "\n" "Another theory points to ritual suicide, though there would be no clear explanation for why such a thing would be done in the first place. Both families were in quite good standing, and this reunion had been in celebration of the marriage between two of their members, marking the start of a very beneficial partnership.\n" "\n" -"Many other theories, each increasingly wilder and crazier than the last, mention possibilities such as attacks by cultists, the town's ghouls, or some sort of clearly planned assassination by rival families (of which none are actually known).\n" +"Many other theories, each increasingly wilder and crazier than the last, mention possibilities such as attacks by cultists, the town's ghouls, or some sort of clearly planned assassination by rival families (none of which were known to be involved).\n" "\n" "To this day, no one knows exactly what had happened then, and the case remains unsolved. Only one person survived this, \cfTetsuya Imanaki\c-, CEO of \cfImanaki Corp\c-, but solely because he had been absent from the event.\n" "\n" @@ -2678,6 +3335,34 @@ SWWM_LORETXT_ONOKE = "\cfSome real shit in there, huh? I gotta say it's not as exciting as that one other murder mystery from the 80's, the one that happened here in Japan. Yeah, I still remember that shit, the theorizing and other nonsensical craziness about it took a while to die down. People actually still went on about it when I was a kid. I especially remember the meme about \"small bombs\" or some shit. It was a dumb meme theory but Taro and I thought it was really funny.\c-\n" "\n" "\cfOh yeah, that one gal from Ashley-san's band, Mykka, she was also all over it, being a self-professed \"detective\" and all. She was one of the few who pretty much pushed hard for all of it being the work of witches. Yeah, when you're one yourself that's what you'd go with, heh...\c-"; +SWWM_LORETAG_PARKER = "Munch, Parker"; +SWWM_LORETAB_PARKER = "People"; +SWWM_LOREREL_PARKER = "Munch;Explodium;Hermann;Saya"; +SWWM_LORETXT_PARKER = +" \cxFull Name:\c-\n" +" \cf Parker Edgar Munch III\c-\n" +" \cxNationality:\c-\n" +" \cf American\c-\n" +" \cxDate of Birth:\c-\n" +" \cf (Undisclosed)\c-\n" +" \cxOccupation:\c-\n" +" \cf Chief Engineer (Munch Innovations)\c-\n" +"\n" +"\n" +"\n" +"\n" +"Born and raised in \cfAustin, Texas\c-, \cfParker\c- is the eldest son of \cfMunch Innovations\c- founder and CEO \cfAllen Munch\c-. Unlike his father, however, his interests lie beyond the world of smart home appliances.\n" +"\n" +"As an avid collector of firearms, he would strive to create his own homemade weaponry, already from a young age. The various contraptions he'd create would get shared online. The feedback he'd receive helped him become more and more skilled in his craft, much to the disappointment of his father. However, the success of this side business was not to be ignored, and so, the little workshop he had created on his own soon became part of his father's company as well.\n" +"\n" +"Parker's most notable creation in recent years was that of the \cfExplodium Gun\c-, the very first firearm created to employ \cfExplodium\c- as a high-explosive payload through the proprietary \cf.387EX\c- cartridge.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfNow, I look at that picture and something still irks me. Why does he look so familiar? I swear to god, it's like it's right there in the back of my brain and I can't pick it out.\c-\n" +"\n" +"\cfI don't even know that much about this dude. Like I said, he just showed up out of nowhere and asked to have his gun be featured in your arsenal, and then casually walked out after we shook hands.\c-\n" +"\n" +"\cfAnd seriously, I also could barely find any info on him other than his short bio on the Munch website. Who even is this guy?\c-"; SWWM_LORETAG_PARTHORIS = "Parthoris"; SWWM_LORETAB_PARTHORIS = "Lore"; SWWM_LOREREL_PARTHORIS = "Saya"; @@ -2694,7 +3379,7 @@ SWWM_LORETXT_PARTHORIS = "\cxSaya's Notes:\c-\n" "\cfThere's a buncha stuff in here that's pretty interesting and I'm going to be keeping close watch on the livestream. This is pretty much the first time we're doing a full-on exploration here, you know, so I really REALLY want to see as much as possible of this place.\c-\n" "\n" -"\cfDunno if you're going to get any close to that one place, this \"Lair of Malumax\". I'm hella curious about it, the fact that somehow there's one guy with access to modern tech in this medieval fantasy wonderland.\c-"; +"\cfDunno if you're going to get any close to that one place. I'm hella curious about it, the fact that somehow there's one guy with access to modern tech in this medieval fantasy wonderland.\c-"; SWWM_LORETAG_PLASMABLAST = "Plasma Blaster"; SWWM_LORETAB_PLASMABLAST = "Item"; SWWM_LOREREL_PLASMABLAST = "Nuutek;Nekuratek;Saya;Zanaveth2"; @@ -2712,14 +3397,14 @@ SWWM_LORETXT_PLASMABLAST = "\n" "\cfSecondary Fire:\c- Charged shot. Hold and release. A slower, but much stronger and destructive projectile, especially if charged from a full cell. The gun has to be held with both hands, as the instability induced by internal plasma charge may make aiming far more difficult single-handed.\n" "\n" -"\cfReload:\c- Replace the ammo cell on the weapon. Each can power up to 15 shots.\n" +"\cfReload:\c- Replace the ammo cell on the weapon. Each can power up to 8 shots.\n" "\n" "\cfTechniques:\c- Obtaining a second Plasma Blaster allows switching to dual-wield mode. Secondary fire in this mode shoots the left hand gun.\n" "\n" "Due to the high availability of the materials used, and a shared friendship between Nuutek and their former competitor \cfNekuratek\c-, you have free access to a practically endless supply of ammunition for this weapon.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfY'know, if you feel like melting knees is cooler than exploding them, this one's a good option too. Heard there's a buncha crazy variants of this gun around, since it's open source and all. It's been turned into shotguns, rifles, even flamethrowers using Nokron plasma, whew.\c-\n" +"\cfY'know, if you feel like melting knees is cooler than exploding them, this one's a good option too. Heard there's a buncha crazy variants of this gun around, since it's open source and all. It's been turned into shotguns, rifles, even flamethrowers using Sydon plasma, whew.\c-\n" "\n" "\cfAlso because of my very valuable friendship with Zana-sama, as you can see there we get free ammo for the thing. Fairly convenient, that. Wish it could be the case for your entire arsenal, but life ain't that easy.\c-"; SWWM_LORETAG_PROPULSOR = "JetBurst Impulsor"; @@ -2738,36 +3423,36 @@ SWWM_LORETXT_PROPULSOR = "Thanks to its patented self-regenerating fuel cells, the unit is guaranteed to remain available for use for many years, needing only a constant supply of hydrogen (which may even come from just the air around itself).\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfYou know, Ibuki used to have one of these too, back when she was in America doing all that stuff she was supposed to (and afterwards). She could fly and pull other crazy stunts and whatnot, but I guess you really can't, actually. I mean, I'm not exactly calling you fat or anything... but... well, you do weight 500kg, that is a fact.\c-\n" +"\cfYou know, Ibuki used to have one of these too, as part of the whole armored exoskeleton they gave her for the war back then. She could fly and pull other crazy stunts and whatnot, but I guess you really can't, actually. I mean, I'm not exactly calling you fat or anything... but... well, you do weight 500kg, that is a fact.\c-\n" "\n" "\cfSeriously... had I known almasteel is that heavy, I wouldn't have used such thick plating on your body, like, I kinda did say I wanted it \"EXTRA THICC\" when Misa asked me, as a bit of a meme, but she really took it way too seriously.\c-\n" "\n" "\cf*sigh* If you were a bit lighter, I totally could have had you sit on my lap during that Q&A livestream. Ahhhhh, damn it...\c-"; SWWM_LORETAG_PUNTZERBETA = "Puntzer Beta"; SWWM_LORETAB_PUNTZERBETA = "Item"; -SWWM_LOREREL_PUNTZERBETA = "Blackmann;Saya;Hammerspace"; +SWWM_LOREREL_PUNTZERBETA = "Blackmann;Hermann;Saya;Hammerspace"; SWWM_LORETXT_PUNTZERBETA = "\cxDesignation:\c-\n" "\cf Puntzer \"Beta\" Revolver\c-\n" "\cxManufacturer:\c-\n" "\cf Blackmann Arms Ltd.\c-\n" "\cxClassification:\c-\n" -"\cf Single-Action Revolver\c-\n" +"\cf Semi-Automatic Revolver\c-\n" "\n" "The \cfPuntzer\c- series of weapons from \cfBlackmann Arms\c- are prime examples of the potential of their patented \cfSpin Motion Wedge (SMW)\c- perforating ammunition.\n" "\n" -"The \cfPuntzer Beta\c- is a six-barrel single-action top-break revolver, equipped with very robust parts, ideal for fans of fanning.\n" +"The \cfPuntzer Beta\c- is a six-round semi-automatic top-break revolver, equipped with very robust parts.\n" "\n" "\cfPrimary Fire:\c- Slow, accurate shots.\n" "\n" -"\cfSecondary Fire:\c- Hold to enter fanning mode, release to disengage. While in this mode, you can press/hold primary to shoot much faster, but with lower accuracy.\n" +"\cfSecondary Fire:\c- Engage \"quick unload\" mode, upon which the next pull of the trigger will cause six shots to go off in rapid succession.\n" "\n" "\cfTertiary Fire:\c- Twirl the hell out of the gun, for fun.\n" "\n" "\cfReloading:\c- Reloads the gun. Thanks to the rapid reloading system provided by your \cfHammerspace™ Container\c-, you merely need to hold your open palm over the cylinder, the bullets will be loaded automatically.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfAh, the revolver, a very classic gun, made famous by all those american \"wild west\" movies. But this one's special, oh yes. Those fucking corkscrew bullets are some serious shit, spinning like crazy and drilling through stuff. Hermann-senpai is feeding us with the \".05\" types specifically, which are the strongest of them all, and supposedly can drill cleanly through walls and everything. That's going to be fun.\c-"; +"\cfAh, the revolver, a very classic gun, made famous by all those american \"wild west\" movies. But this one's special, oh yes. It's a rarity to see a semi-auto revolver already, but one with a full auto mode? And those fucking corkscrew bullets are some serious shit too, spinning like crazy and drilling through stuff. Hermann-senpai is feeding us with the \".05\" types specifically, which are the strongest of them all, and supposedly can drill cleanly through walls and everything. That's going to be fun.\c-"; SWWM_LORETAG_PUNTZERGAMMA = "Puntzer Gamma"; SWWM_LORETAB_PUNTZERGAMMA = "Item"; SWWM_LOREREL_PUNTZERGAMMA = "Blackmann;Saya;Hammerspace"; @@ -2781,11 +3466,11 @@ SWWM_LORETXT_PUNTZERGAMMA = "\n" "The \cfPuntzer\c- series of weapons from \cfBlackmann Arms\c- are prime examples of the potential of their patented \cfSpin Motion Wedge (SMW)\c- perforating ammunition.\n" "\n" -"The \cfPuntzer Gamma\c- is a mostly compact bullpup submachine gun featuring a horizontal mag loading system akin to 21st century classics like the \cfBreakerTek P90\c-. The weapon is additionally capable of delivering \"Fuller Auto\" ultra-rapid fire, as seen in many other automatic weapons of Blackmann Arms manufacture.\n" +"The \cfPuntzer Gamma\c- is a mostly compact submachine gun, featuring a peculiar helical magazine arrangement where, unlike in other weapons where it's either top or bottom mounted, here it's lodged onto the side of the weapon's frame. The Gamma is also notorious for being capable of delivering \"Fuller Auto\" ultra-rapid fire, as seen in many other automatic weapons of Blackmann Arms manufacture, to deplete an entire magazine as quickly as possible.\n" "\n" "\cfPrimary Fire:\c- Full auto shooting.\n" "\n" -"\cfSecondary Fire:\c- \"Fuller auto\" unloading.\n" +"\cfSecondary Fire:\c- Switches between two firing speeds.\n" "\n" "\cfReloading:\c- Reloads, as expected. Your \cfHammerspace™ Container\c-'s autoloaders will provide you with a fresh mag every time.\n" "\n" @@ -2797,29 +3482,6 @@ SWWM_LORETXT_PUNTZERGAMMA = "\cfBy the way I just realized something: SMW bullets are 6.9mm.\c-\n" "\n" "\cfNice.\c-"; -SWWM_LORETAG_PUSHERWEAPON = "Pusher"; -SWWM_LORETAB_PUSHERWEAPON = "Item"; -SWWM_LOREREL_PUSHERWEAPON = "EngineTech;Mixom;UAC"; -SWWM_LORETXT_PUSHERWEAPON = -"\cxDesignation:\c-\n" -"\cf \"Pusher\" Microfusion Rotary Hammer\c-\n" -"\cxManufacturer:\c-\n" -"\cf Tach-Engine Technology Institute\c-\n" -"\cxClassification:\c-\n" -"\cf Mining Tool\c-\n" -"\n" -"The \cfPusher\c- is a somewhat portable rotary hammer meant for mining and construction work. Its portability comes in part from the usage of an internal microfusion battery, also courtesy of \cfTach-Engine Technologies\c-, providing enough power for 300 hours of constant use. Tach-Engine Technologies does not hold itself responsible for any misuse of this tool.\n" -"\n" -"\cfPrimary Fire:\c- Normal operation. Aim the drill bit at whatever you need to break, and hold the upper trigger.\n" -"\n" -"\cfSecondary Fire:\c- For those cases where you find some real tough material that's hard to crack. Twist the side handle until the drill bit has receded to what you feel is the adequate distance, then tap the primary trigger for it to strike at the target, with full force.\n" -"\n" -"\cfWARNING:\c- Inadequate grip during secondary operation may cause the tool to slip off, always keep the area clear to prevent collateral damages.\n" -"\n" -"\cxSaya's Notes:\c-\n" -"\cfYeah, chainsaws are a staple of \"tool turned weapon\", we all know this, but what about goddamn jackhammers?\c-\n" -"\n" -"\cfYou know actually, that reminded me of this one bigass blunder from Mixom. Those UAC nerds had requested a shipment of jackhammers to be sent to Mars City once, and these idiots go and send chainsaws instead. That's one hell of a mixup, don't ya think?\c-"; SWWM_LORETAG_QUADRAVOL = "Quadravol"; SWWM_LORETAB_QUADRAVOL = "Item"; SWWM_LOREREL_QUADRAVOL = "Kmonn;Xekke"; @@ -2829,7 +3491,7 @@ SWWM_LORETXT_QUADRAVOL = "\cxManufacturer:\c-\n" "\cf Eushura Kmonn Jr.\c-\n" "\cxClassification:\c-\n" -"\cf Igneous Projectile Launcher\c-\n" +"\cf Incendiary Pistol(?)\c-\n" "\n" "A powerful incendiary weapon coming from \cfKmonn Shuna\c-, prized among \cfXekkian\c- commanders. The \cfQuadravol\c- shoots blazing balls of fire that explode spectacularly in contact with anything, releasing intense heat and kinetic force. It is seen to be very useful against crowds as the force of impact is potent enough to disperse them quickly. One very distinctive trait of the weapon is the fact that the flames that burst out of it will burn brightly even underwater.\n" "\n" @@ -2841,20 +3503,32 @@ SWWM_LORETXT_QUADRAVOL = "\n" "The Ardent Cross was the name of the general's sword which, when imbued with magic, would release deadly cross slashes of burning flame.\n" "\n" -"\cfPrimary Fire:\c- Single, large fireball shot. Very minor drift, so its effective range is quite long. Ignites nearby targets on impact.\n" +"\cfPrimary Fire:\c- Large fireball shots, which will ignite nearby targets on impact.\n" "\n" "\cfSecondary Fire:\c- Pumps additional fuel, increasing the strength of your shots, but also their drift, making them less accurate. Excess overcharge will result in a wildly inaccurate misfire, but even this has its uses.\n" "\n" -"\cfTertiary Fire:\c- Hold and tap primary fire to toggle scatter shot mode for primary. Several smaller fireballs (number relative to charge), with increased drift and lower effective range, but very useful against multiple targets. Hold and tap secondary fire to switch weapon stances between two-handed and one-handed. This serves no real purpose other than looking cooler when pumping, your accuracy with the weapon is unaffected but you won't shoot it as quickly.\n" +"\cfTertiary Fire:\c- Switch weapon stances between two-handed and one-handed. This serves no real purpose other than looking cooler when pumping, your accuracy with the weapon is unaffected but you won't shoot it as quickly.\n" "\n" "\cfReloading:\c- Insert up to five fuel cells into the weapon's tube magazine. Each cell is immediately emptied into the weapon's internal \"crucible\", so you can keep loading additional ammo while boosting your charge.\n" "\n" "\cfTechniques:\c- The weapon has a certain \"extra effective\" special move should you be close enough to your target. Plunging the four bayonets into an enemy and immediately pulling the trigger afterwards will result in a potent point blank explosion that will send them flying, covered in flames.\n" "\n" +"The various charge levels of the internal crucible appear to dramatically alter the behavior of fired projectiles. The most notable changes are reflected as such:\n" +"\n" +"\cfLevel 1:\c- Fast and steady projectile, with moderate blast radius.\n" +"\n" +"\cfLevel 2:\c- Slower projectile with some drift, increased blast radius and damage.\n" +"\n" +"\cfLevel 3:\c- Slow, massive, erratic projectile, with much more dramatic blast potential. Ruptures into sub-projectiles on impact.\n" +"\n" +"\cfLevel 4:\c- Projectile splits into multiple fragments as it leaves the barrel. Each sub-projectile is only slightly weaker than a level 1 fireball.\n" +"\n" +"\cfLevel 5:\c- At this point, whatever projectile was to be fired will instantly explode outwards. This attack is very destructive, and its damage and range may increase further if a full cell is still chambered.\n" +"\n" "\cxSaya's Notes:\c-\n" "\cfTypical overly dramatic Xekkian stuff. The \"Ardent Cross\", really... But it's as badass as it sounds, at least.\c-\n" "\n" -"\cfAnd of course it's huge af too, even if the grip is supposedly adapted. It honestly weirds me out how you can do that thing of... making your hands bigger, but at least it lets you use stuff like that easily.\c-\n" +"\cfAnd of course it's huge af too for something that's supposedly a pistol. Honestly, with these people, you just never know. Their \"light sidearms\" are humongous.\c-\n" "\n" "\cfAnyway, motherfucking fireballs, that work underwater??? Gonna need to see the science behind this because that makes no fucking sense and yet... it's there.\c-\n" "\n" @@ -2872,20 +3546,24 @@ SWWM_LORETXT_RAFANKOS = "\n" "Devised by a reportedly \"insane\" and \"derranged\" engineer at \cfNekuratek\c-'s Advanced Arms Division, this weapon's development was cut short of its initial ambitious plans. Citing that this engineer whose name won't be revealed \"played too many videogames\", he was stopped before he could add a whopping 15 different modes of operation to the weapon, rendering it extremely convoluted, costly and \"completely ridiculous\".\n" "\n" -"The \cfRafan-Kos\c- project (\"Ultimate Weapon\" in Nukuribaku) would only be partially completed once chief engineer \cfZanaveth Nekuraku I\c- personally stepped in to ask for this \"inanity\" to cease. The end result seemed satisfactory enough despite complaints from its creator, and would be eventually commercialized.\n" +"The \cfRafan-Kos\c- project (\"Ultimate Weapon\" in Nukuribaku) would only be partially completed once chief engineer \cfZanaveth Nekuraku I\c- personally stepped in to ask for this \"inanity\" to cease. The end result seemed satisfactory enough despite complaints from its creator, and would be eventually commercialized... For a short time.\n" "\n" "The weapon employs \cfKabbadon\c- as fuel, a common byproduct of \cfNokorokinylum\c- fusion, thus making it fairly easy to produce. However, the density and degree of purity required in the creation of a single fuel pod make its price escalate dramatically.\n" "\n" -"\cfPrimary Fire:\c- Release a radiant blast of energy that punches its way through anything, sending sparks flying in all directions along its path and burning other nearby targets. The blast burns for up to five seconds before rapidly dissipating.\n" +"\cfPrimary Fire:\c- Release a radiant blast of energy that punches its way through anything, sending sparks flying in all directions along its path and burning other nearby targets. The blast burns for up to ten seconds at full pod charge.\n" "\n" -"\cfSecondary Fire:\c- Releases several scattered blasts in a wide cone, with similar destructive potential, but burning quicker, stronger, and dissipating more rapidly.\n" +"\cfSecondary Fire:\c- Releases several scattered blasts in a wide cone, with only a fraction of the full destructive potential in each. The pod will drain twice as fast in this mode.\n" "\n" -"\cfReload:\c- Loads in a new magazine, each holding four pods. The currently loaded pod must be fully discharged before a new one can be chambered in.\n" +"\cfReload:\c- Loads in a new magazine, each holding four pods. The currently loaded pod must be fully discharged before a new one can be chambered in (spent pod ejection is automated).\n" +"\n" +"\cfTechniques:\c- Due to using a singular trigger at different pressures, alternating between both fire modes is completely seamless.\n" "\n" "\cxSaya's Notes:\c-\n" "\cf\"Ultimate Weapon\"? Talk about pretentious... But you know, something about this was making my brains itch, and then it clicked. This is basically like that one spellcard, the Master Spark. Hell, it almost even sounds and looks the same...\c-\n" "\n" -"\cfThat's fucking cool, actually. I like it, so I put it in the same slot as the other massive fuckoff gun. You know, as a safer alternative that you're less likely to kill yourself with. Gotta admit, Misa-Misa sure loaded us up with some powerful material bringing these two along.\c-"; +"\cfThat's fucking cool, actually. I like it, so I put it in the same slot as the other massive fuckoff gun. You know, as a safer alternative that you're less likely to kill yourself with. Gotta admit, Misa-Misa sure loaded us up with some powerful material bringing these two along.\c-\n" +"\n" +"\cfPS: Don't try to eat the pods, okay?\c-"; SWWM_LORETAG_RAGEKIT = "Ragekit"; SWWM_LORETAB_RAGEKIT = "Item"; SWWM_LOREREL_RAGEKIT = "AkariLabs;Demolitionist;Saya;DecadeMech"; @@ -2942,15 +3620,15 @@ SWWM_LORETXT_RAYKHOM = "\n" "Ever since its creation by \cfProfessor Eushura Kmonn Jr.\c-, the \cfRay-Khom\c- has taken a permanent spot in every \cfXekkian\c- soldier's loadout. Reliable, efficient, needing little to no maintenance due to lacking any moving parts beyond its feeding mechanism. Ammunition is additionally quite easy to come by, at least locally, as exports carry with them heavy taxing.\n" "\n" -"The weapon is powered entirely by a compact quad-cell Korberon-Eneiebium battery pack, easy to replace when needed. Ammunition is fed from 20-round magazines. The ammunition itself, slim 40mm caseless magnetized bolts, fitted with a hyperdense Dyratin ignition charge, releasing potent discharges of ultra-high temperature plasma on impact, capable of melting quickly through anything short of high resonant Almasteel plating and causing strong, stinging burns to Xekkian skin (or severe corrosion of muscle and bone tissue to anything weaker).\n" +"The weapon is powered entirely by a compact quad-cell Korberon-Eneiebium battery pack, providing a plentiful supply of energy. Ammunition is fed from 10-round magazines. The ammunition itself, slim 40mm caseless magnetized bolts, fitted with a hyperdense Dyratin ignition charge, releasing potent discharges of ultra-high temperature plasma on impact, capable of melting quickly through anything short of high resonant Almasteel plating and causing strong, stinging burns to Xekkian skin (or severe corrosion of muscle and bone tissue to anything weaker).\n" "\n" "\cfPrimary Fire:\c- Steady shooting, quick and precise. Minimal recoil due to the electromagnetic operation, mostly quiet as the projectiles are shot ever so slightly below the speed of sound. Your enemies are guaranteed to not take notice of your attacks until it's too late.\n" "\n" -"\cfSecondary Fire:\c- Engages the concentrated pulse emitters along the weapon's blades, emitting a potent discharge of electricity in front of the user, temporarily stunning anything that stands too close. May cause death on weak targets. It is recommended to only use this sparingly, as it drains the battery quickly.\n" +"\cfSecondary Fire:\c- Engages the concentrated pulse emitters along the weapon's blades, emitting a potent discharge of electricity in front of the user, temporarily stunning anything that stands too close. May cause death on weak targets. Should be noted that this action mustn't be performed willy-nilly, as the capacitors require a long time to fully recharge, also temporarily disabling the main fire function.\n" "\n" -"\cfPrimary Reload:\c- Reloads the weapon.\n" +"\cfReload:\c- Reloads the weapon.\n" "\n" -"\cfSecondary Reload:\c- Swaps the battery. This action can only be performed once the charge is low enough, as it would be wasteful otherwise.\n" +"\cfZoom:\c- Use the scope for long distance shooting. Zoom level is automatically adjusted based on distance probes, and the reticle will furthermore simulate projectile trajectory on the fly, so you can know exactly where to aim.\n" "\n" "\cfTechniques:\c- Secondary fire increases in lethality if used on conductive liquids such as water. Just make sure to not be standing in it yourself.\n" "\n" @@ -2964,7 +3642,7 @@ SWWM_LORETXT_RAYKHOM = "\cfWhen she came through the door lugging that thing around on her shoulders I knew it had to be ours.\c-"; SWWM_LORETAG_REFRESHER = "Refresher"; SWWM_LORETAB_REFRESHER = "Item"; -SWWM_LOREREL_REFRESHER = "EngineTech"; +SWWM_LOREREL_REFRESHER = "EngineTech;Admun"; SWWM_LORETXT_REFRESHER = "\cxDesignation:\c-\n" "\cf Refresher\c-\n" @@ -2981,6 +3659,89 @@ SWWM_LORETXT_REFRESHER = "\n" "\cxSaya's Notes:\c-\n" "\cfAncient Egyptian Aliens™. Cool, neat, fun, good stuff. But these things sure are handy, it's almost like... ah, fuck, I'm going to sound like that nerdo here but yeah, it's like... extra lives, kinda?\c-"; +SWWM_LORETAG_REUBENS = "C.K., Reubens"; +SWWM_LORETAB_REUBENS = "People"; +SWWM_LOREREL_REUBENS = "Cyrus;Kereshnovka;Saya"; +SWWM_LORETXT_REUBENS = +" \cxFull Name:\c-\n" +" \cf Reubens Cyrus Karnanaiahmani\c-\n" +" \cxNationality:\c-\n" +" \cf Qurensniv\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 244 BC\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO, CTO (Cyrus Enterprises)\c-\n" +" \cxTwitter:\c-\n" +" \cf @rbkhmani\c-\n" +"\n" +"\n" +"\cfReubens\c- is the second child of the late \cfMarc Pyurgi Karnanaiahmani\c-, former leader of the old \cfKingdom of Karnanaiahma\c-, now reformed as the \cfRepublic of Karnanaiahma\c- by his older brother \cfRubin Mhul Karnanaiahmani\c-. During his late father's tyrannical rule, he fled the country together with various individuals who had been marked as \"traitors\" by the demented monarch, all as a result of a peculiar prophecy which claimed that \cf\"a Qurensniv man with blonde hair and green eyes will cause the downfall of the kingdom\"\c-. The result of this exodus was the foundation of the town of \cfKereshnovka\c- in central \cfSiberia\c-, of which he is the mayor to this day.\n" +"\n" +"In addition, as a man of great intellect and an interest in bolstering the evolution of technology, he founded his own startup, \cfCyrus Enterprises\c-, of which he's also the sole employee. Despite this, many great achievements have come of this small business, thanks mainly to the various other companies that offer funding and manufacturing resources for him to keep creating and selling all sorts of tech implements, especially those with military applications.\n" +"\n" +"Reubens is well known for not only being a cunning inventor, but also an expert in hand to hand combat, being a ten times \cfKo-Ron-Jai\c- (Qurensniv martial arts) champion, and also an excellent sharpshooter, able to land a hit on the head of a matchstick from 1km away with a mere revolver (this last fact hasn't yet been confirmed, however). He's also an avid gamer, and is often noted to draw comparisons between real life and videogames, to a worrying degree at times.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfHe's a nerd, NEEEEEEEERD, BIG STINKIN' NERD!\c-\n" +"\n" +"\cfThere, I said it. Like, sure, the stuff he makes, cool and all, but GOOD LORD he gets on my nerves sometimes with his videogamey nerdiness. Not letting you go in fully armed and instead deciding to fucking YEET your shit all over the place for you to pick up? That's one thing. Deciding that after every mission you have to RETURN all the stuff you got, that's another, too. Dropping some cash every time you blow up baddies, that I can accept, though, helps cover the costs of everything.\c-\n" +"\n" +"\cfYou know, he may get on my nerves, sure, but the guy was the first serious business partner I ever had, and damn, he's not that bad outside of all the nerditude he expels... I mean, to be honest, I'm also a big stinky nerd too, and you can quote me on that.\c-"; +SWWM_LORETAG_RIKA = "Isuzu, Rika"; +SWWM_LORETAB_RIKA = "People"; +SWWM_LOREREL_RIKA = "Maidbot;AkariLabs;Demolitionist;Ibuki;Saya"; +SWWM_LORETXT_RIKA = +" \cxFull Name:\c-\n" +" \cf Rika Isuzu\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2049-02-08\c-\n" +" \cxOccupation:\c-\n" +" \cf Combat Trainer (Akari Labs)\c-\n" +"\n" +"\n" +"\n" +"\n" +"\cfRika\c- was created in 2049 as one of the first among a batch of \cfMaidbots\c- built with male frames, initially designed for military purposes. Following her decommissioning and subsequent rehabilitation, however, she opted to don a more feminine form, thus becoming the very first known transgender Maidbot.\n" +"\n" +"Despite her popularity, she has not managed to yet find an adoptive family, and so she resides at \cfAkari Labs\c-, working part time as a security guard. Once the \cfDemolitionist\c- project came to be, however, she found her new vocation: Training the aforementioned combat robot.\n" +"\n" +"One of Rika's hobbies is cosplay, once donning a costume of one of \cfIbuki Miyamoto\c-'s favorite videogame characters for her birthday. Suffice to say, the success of this earned her a honorary spot among the \cfRed Oni\c-'s countless sweethearts.\n" +"\n" +"Another hobby of hers is target practice, for the self-professed purposes of \"not letting these mad skills go to waste\". She is responsible for setting up an indoor firing range within the Akari Labs installations, free to use by anyone, though usually frequented by her, Ibuki and \cfSaya Miyamoto\c-.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfIt's pretty cool that she volunteered to train you. I mean, it's not like Meido was going to do that job, you know she doesn't like guns and stuff.\c-\n" +"\n" +"\cfI'm sure you'll make her feel proud of ya, Demo-chan.\c-"; +SWWM_LORETXT_RIKA2 = +" \cxFull Name:\c-\n" +" \cf Rika Isuzu\c-\n" +" \cxNationality:\c-\n" +" \cf Japanese\c-\n" +" \cxDate of Birth:\c-\n" +" \cf 2049-02-08\c-\n" +" \cxOccupation:\c-\n" +" \cf Combat Trainer (Akari Labs)\c-\n" +"\n" +"\n" +"\n" +"\n" +"\cfRika\c- was created in 2049 as one of the first among a batch of \cfMaidbots\c- built with male frames, initially designed for military purposes. Following her decommissioning and subsequent rehabilitation, however, she opted to don a more feminine form, thus becoming the very first known transgender Maidbot.\n" +"\n" +"Despite her popularity, she has not managed to yet find an adoptive family, and so she resides at \cfAkari Labs\c-, working part time as a security guard. Once the \cfDemolitionist\c- project came to be, however, she found her new vocation: Training the aforementioned combat robot.\n" +"\n" +"One of Rika's hobbies is cosplay, once donning a costume of one of \cfIbuki Miyamoto\c-'s favorite videogame characters for her birthday. Suffice to say, the success of this earned her a honorary spot among the \cfRed Oni\c-'s countless sweethearts.\n" +"\n" +"Another hobby of hers is target practice, for the self-professed purposes of \"not letting these mad skills go to waste\". She is responsible for setting up an indoor firing range within the Akari Labs installations, free to use by anyone, though usually frequented by her, Ibuki and \cfSaya Miyamoto\c-.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfIt's pretty cool that she volunteered to train you. I mean, it's not like Meido was going to do that job, you know she doesn't like guns and stuff.\c-\n" +"\n" +"\cfI'm sure you'll make her feel proud of ya, Demo-chan.\c-\n" +"\n" +"\cfUpdate: The face she made when she saw your new maidbot body was worthy of putting on a frame. Look, Demo, if you two, y'know, want to \"get to know each other\" more, it's all ok with me. I mean, this is an open relationship we're all in. Wink wink.\c-"; SWWM_LORETAG_RYUJI = "Miyamoto, Ryuji"; SWWM_LORETAB_RYUJI = "People"; SWWM_LOREREL_RYUJI = "Nana;Taro;Saya;Yui;AkariLabs;Gensokyo"; @@ -3056,6 +3817,29 @@ SWWM_LORETXT_SAFETYTETHER2 = "\cfYeah, this is actually based on your collar, works similarly too, except I'm not the one who activates whenever you're in mortal danger, and its effects are more \"dramatic\" (you'll see). It's simple magic stuff, really. Those idiots at the UAC would shit themselves if they knew we've had the magic to do long distance teleports, even across universes, long before their experiments existed.\c-\n" "\n" "\cfI hope Misa doesn't mind that I pretty much repurposed one of her grenade designs for this.\c-"; +SWWM_LORETAG_SALTBOT = "Battle-Boi Sentry"; +SWWM_LORETAB_SALTBOT = "Item"; +SWWM_LOREREL_SALTBOT = "AkariLabs;Hammerspace;ScoreSystem;Saya"; +SWWM_LORETXT_SALTBOT = +"\cxDesignation:\c-\n" +"\cf Battle-Boi Sentry\c-\n" +"\cxManufacturer:\c-\n" +"\cf Akari Labs\c-\n" +"\cxClassification:\c-\n" +"\cf Portable Defense System\c-\n" +"\n" +"The \cfBattle-Boi\c- is a portable remote controlled turret equipped with dual, semi-automatic, \cfHammerspace\c--fed shotguns. There are multiple ammunition options available, but the units currently available for your mission are loaded with 10-gauge Kinylum saltshot, fairly useful for crowd control due to both its stopping power on direct impact, and the lingering radiation that the salt fragments leave along their path.\n" +"\n" +"Each unit can remain operational for days on end, provided they are resupplied when needed. \cfScore Points\c- are earned from any enemies they kill, so this may potentially reduce the cost of resupply.\n" +"\n" +"Should damage be taken, they can be repaired free of charge by returning them to storage. Keep in mind placed units are not recalled if you stray too far from the designated area. If you leave them behind, they will stay there and automatically deactivate.\n" +"\n" +"Due to the remote-controlled nature of the device, only one unit can be in use during your missions. Please be kind to the operator, as they cannot directly communicate with you in any way, and are simply trying their best to assist you.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfI won't tell you who's manning them. It's a secret.\c-\n" +"\n" +"\cfNo, it's not me. I can't stay awake 24/7.\c-"; SWWM_LORETAG_SANKAIDERIHA = "Sankaideriha"; SWWM_LORETAB_SANKAIDERIHA = "Lore"; SWWM_LOREREL_SANKAIDERIHA = "Nukuri;Saya;Ashley;Gods;Kirin"; @@ -3097,7 +3881,7 @@ SWWM_LORETXT_SANKAIDERIHA2 = "\cfOh yeah, first time I went, I met the big god. They're uhhhh... interesting, to say the least. Didn't mind having a chat with some random nobody like me who has super-mediocre magic skills, which was fun. One of these days, when Kirin-kun retires, we're going to move there and study lots of magic together. I'm so looking forward to it...\c-"; SWWM_LORETAG_SAYA = "Miyamoto, Saya"; SWWM_LORETAB_SAYA = "People"; -SWWM_LOREREL_SAYA = "Nana;Ryuji;Taro;Yui;Maidbot;Demolitionist;Kirin;AkariLabs;Ashley;UAC"; +SWWM_LOREREL_SAYA = "Nana;Ryuji;Taro;Yui;Maidbot;Demolitionist;Kirin;AkariLabs;Ashley;UAC;Ibuki"; SWWM_LORETXT_SAYA = " \cxFull Name:\c-\n" " \cf Saya Miyamoto\c-\n" @@ -3115,20 +3899,18 @@ SWWM_LORETXT_SAYA = "\n" "In 2010, together with her brother Taro, the two founded \cfAkari Labs\c-, where her first project was an autonomous house-cleaning robot, which would later evolve into the modern \cfMaidbot\c-, one of the most popular creations of their company. She also would devise many other types of robots, all driven by rather complex in-house AI that she had personally designed together with her brother.\n" "\n" -"In 2018, Saya \"ceased to age\", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that she would forever be stuck with her current physique, being \"short and flat\", something she absolutely hated.\n" +"In 2018, Saya \"ceased to age\", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that this meant she would outlive a lot of people in her life, and was not all too happy about that prospect.\n" "\n" "Saya would frequently be nicknamed \cf\"Not-Tomoko\"\c- around the net, in reference to a character from a popular manga series that people compared her with. It was noted that \"in term of personality and looks, the resemblance is definitely there\". Saya is well known for being quite blunt when talking to people, if she ever actually does so, as she's not very talkative in person. Online, however, she changes entirely, openly talking to anyone she comes across, casually shoving herself into random conversations, or extensively ranting about various topics, and debating fiercely with haters.\n" "\n" -"Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's \"always horny on main\", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is \"just a friendly thing, between friends\".\n" +"Saya's way of speaking is rather uncouth at times, as she's known to casually swear on the regular in the middle of conversations. It is one among various of her bad habits that she has trouble addressing, and which have resulted in multiple misunderstandings and awkward situations. Nevertheless, she is always quick to apologize when called out.\n" "\n" -"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" -"\n" -"Currently, Saya has two girlfriends: Meido Miyamoto and \cfIbuki Miyamoto\c-. Both of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against.\n" +"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Wife Is A Maid Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c-\n" "\n" -"\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. My top turn-ons are big tiddies, maids, femboys and heterochromia. My fav monster girl is the moth girl, and my waifu is Mashiro (specifically chapter 3 Mashiro, not the standard creepy yandere shotacon Mashiro, no thank you). Last thing: I may not shower very often, or use deodorant or anything, but I don't stink, I smell good, and people agree too, they say it's nice.\c-\n" +"\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. Also I love moth girls, they're cool and pretty. Oh, and maids, of course, and goth fashion, even though I'm too awkward to try dressing like that myself.\c-\n" "\n" "\cfWell, are you satisfied, Demo-chan? Have I sated your thirst for Saya Facts™? Good, then you should go back to work.\c-"; SWWM_LORETXT_SAYA2 = @@ -3148,20 +3930,18 @@ SWWM_LORETXT_SAYA2 = "\n" "In 2010, together with her brother Taro, the two founded \cfAkari Labs\c-, where her first project was an autonomous house-cleaning robot, which would later evolve into the modern \cfMaidbot\c-, one of the most popular creations of their company. She also would devise many other types of robots, all driven by rather complex in-house AI that she had personally designed together with her brother.\n" "\n" -"In 2018, Saya \"ceased to age\", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that she would forever be stuck with her current physique, being \"short and flat\", something she absolutely hated.\n" +"In 2018, Saya \"ceased to age\", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that this meant she would outlive a lot of people in her life, and was not all too happy about that prospect.\n" "\n" "Saya would frequently be nicknamed \cf\"Not-Tomoko\"\c- around the net, in reference to a character from a popular manga series that people compared her with. It was noted that \"in term of personality and looks, the resemblance is definitely there\". Saya is well known for being quite blunt when talking to people, if she ever actually does so, as she's not very talkative in person. Online, however, she changes entirely, openly talking to anyone she comes across, casually shoving herself into random conversations, or extensively ranting about various topics, and debating fiercely with haters.\n" "\n" -"Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's \"always horny on main\", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is \"just a friendly thing, between friends\".\n" +"Saya's way of speaking is rather uncouth at times, as she's known to casually swear on the regular in the middle of conversations. It is one among various of her bad habits that she has trouble addressing, and which have resulted in multiple misunderstandings and awkward situations. Nevertheless, she is always quick to apologize when called out.\n" "\n" -"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" -"\n" -"Currently, Saya has three girlfriends: Meido Miyamoto, \cfIbuki Miyamoto\c- and the \cfDemolitionist\c-. All of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against.\n" +"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Wife Is A Maid Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c-\n" "\n" -"\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. My top turn-ons are big tiddies, maids, femboys and heterochromia. My fav monster girl is the moth girl, and my waifu is Mashiro (specifically chapter 3 Mashiro, not the standard creepy yandere shotacon Mashiro, no thank you). Last thing: I may not shower very often, or use deodorant or anything, but I don't stink, I smell good, and people agree too, they say it's nice.\c-\n" +"\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. Also I love moth girls, they're cool and pretty. Oh, and maids, of course, and goth fashion, even though I'm too awkward to try dressing like that myself.\c-\n" "\n" "\cfSatisfied? Good, but here's one last Saya Fact™ for ya: I love you, Demo-chan~\c- \cg♥\c-\n" "\n" @@ -3183,27 +3963,27 @@ SWWM_LORETXT_SAYA3 = "\n" "In 2010, together with her brother Taro, the two founded \cfAkari Labs\c-, where her first project was an autonomous house-cleaning robot, which would later evolve into the modern \cfMaidbot\c-, one of the most popular creations of their company. She also would devise many other types of robots, all driven by rather complex in-house AI that she had personally designed together with her brother.\n" "\n" -"In 2018, Saya \"ceased to age\", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that she would forever be stuck with her current physique, being \"short and flat\", something she absolutely hated.\n" +"In 2018, Saya \"ceased to age\", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that this meant she would outlive a lot of people in her life, and was not all too happy about that prospect.\n" "\n" "Saya would frequently be nicknamed \cf\"Not-Tomoko\"\c- around the net, in reference to a character from a popular manga series that people compared her with. It was noted that \"in term of personality and looks, the resemblance is definitely there\". Saya is well known for being quite blunt when talking to people, if she ever actually does so, as she's not very talkative in person. Online, however, she changes entirely, openly talking to anyone she comes across, casually shoving herself into random conversations, or extensively ranting about various topics, and debating fiercely with haters.\n" "\n" -"Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's \"always horny on main\", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is \"just a friendly thing, between friends\".\n" +"Saya's way of speaking is rather uncouth at times, as she's known to casually swear on the regular in the middle of conversations. It is one among various of her bad habits that she has trouble addressing, and which have resulted in multiple misunderstandings and awkward situations. Nevertheless, she is always quick to apologize when called out.\n" "\n" -"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Maid Is A Sex Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" +"Saya has many hobbies, including programming (her language of choice being \cfHaskell\c-), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called \cfMy Wife Is A Maid Robot\c-, partially based around her experiences with dating \cfMeido Miyamoto\c-. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, \cfThe Akari Project\c-, a story about teleportation experiments and interdimensional travel \"that doesn't go to shit like all the others\". Following the disaster on the \cfUAC\c- bases in regards to teleportation, she announced that she wished to make the Akari Project real, \"just to fuck those idiots over\".\n" "\n" -"Currently, Saya and her creations Meido Miyamoto, \cfIbuki Miyamoto\c- and the \cfDemolitionist\c- are all engaged to \cfKirin Xanai\c-, leader of the \cfSykhai Empire\c- of \cfAkkou\c-.\n" +"Currently, Saya, as well as Meido Miyamoto, \cfIbuki Miyamoto\c- and the \cfDemolitionist\c-, are all engaged to \cfKirin Xanai\c-, leader of the \cfSykhai Empire\c- of \cfAkkou\c-.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c-\n" "\n" -"\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. My top turn-ons are big tiddies, maids, femboys and heterochromia. My fav monster girl is the moth girl, and my waifu is Mashiro (specifically chapter 3 Mashiro, not the standard creepy yandere shotacon Mashiro, no thank you). Last thing: I may not shower very often, or use deodorant or anything, but I don't stink, I smell good, and people agree too, they say it's nice.\c-\n" +"\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. Also I love moth girls, they're cool and pretty. Oh, and maids, of course, and goth fashion, even though I'm too awkward to try dressing like that myself.\c-\n" "\n" "\cfSatisfied? Good, but here's one last Saya Fact™ for ya: I love you, Demo-chan~\c- \cg♥\c-\n" "\n" "\cfNow go back to work, silly robutt.\c-"; SWWM_LORETAG_SAYABEAN = "Saya Bean Plush"; SWWM_LORETAB_SAYABEAN = "Item"; -SWWM_LOREREL_SAYABEAN = "Saya;NosKora"; +SWWM_LOREREL_SAYABEAN = "Nukritas2xx;Saya"; SWWM_LORETXT_SAYABEAN = "\cxDesignation:\c-\n" "\cf Haunted Saya Bean Plush\c-\n" @@ -3214,14 +3994,31 @@ SWWM_LORETXT_SAYABEAN = "\cxHaunted:\c-\n" "\cf Very Yes\c-\n" "\n" -"\cfHaunted Saya Bean Plush\c- that eats your snacks and calls you a horny.\n" +"\cfHaunted Saya Bean Plush\c- that eats your snacks and calls you a nerd.\n" "\n" "This object isn't actually haunted. Or is it...?\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfOK, considering who made it, I AM betting this thing's really haunted. And of course I can tell what this is referencing. How the fuck does she even know anyway? It has to be some reality bending nonsense again.\c-\n" +"\cfOK, considering who made it, I AM betting this thing's really haunted. And of course I can tell what this is referencing. Just how does she even know anyway? It has to be some reality bending nonsense again.\c-\n" "\n" -"\cfStill, it's beautiful... A work of art, yes. I'm sure you're squeezing it between your arms right now. Oh, I'll know. I will hear it giggle on stream when you do so.\c-"; +"\cfStill, it's beautiful... A work of art, yes. I'm sure you won't resist its cuteness and you'll already be squeezing it between your arms. Oh, I'll know, I will hear it giggle on stream when you do so.\c-"; +SWWM_LORETAG_SAYASMUG = "Saya's Mug"; +SWWM_LORETAB_SAYASMUG = "Item"; +SWWM_LOREREL_SAYASMUG = "Taro;Saya;Demolitionist"; +SWWM_LORETXT_SAYASMUG = +"\cxDesignation:\c-\n" +"\cf Moth Pussy Mug\c-\n" +"\cxManufacturer:\c-\n" +"\cf Taro Miyamoto\c-\n" +"\cxClassification:\c-\n" +"\cf Customized Gift\c-\n" +"\n" +"A customized coffee mug, once given as a birthday gift to \cfSaya Miyamoto\c- by her brother \cfTaro\c-, by personal request. The stencils on each side feature a picture of a moth girl, with the text \"MOTH PUSSY\" under it. When asked about what this references, the siblings simply said it was an \"ancient meme\".\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfMy love for moth girls is eternal, Demo-chan.\c-\n" +"\n" +"\cfBy the way, I made sure to wash it thoroughly before those two put it in their gacha nonsense, just in case the demons could track you by the scent of coffee.\c-"; SWWM_LORETAG_SCORESYSTEM = "Score System"; SWWM_LORETAB_SCORESYSTEM = "Item"; SWWM_LOREREL_SCORESYSTEM = "Demolitionist;Cyrus;Saya"; @@ -3239,7 +4036,7 @@ SWWM_LORETXT_SCORESYSTEM = "\n" "Carried items may also be refunded for additional points, allowing you to exchange them for anything else you'd prefer instead. This process is automated when obtaining weapons you already possess, or reach the carry limit for certain items.\n" "\n" -"Please do note that there is an imposed limit of 999,999,999,999,999,999 points, which, in practice, shouldn't even be remotely reachable.\n" +"Please do note that there is an imposed limit of 999999999 points, which, in practice, should take a very, very long time to reach.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfAlright, I'll be honest here: This is more videogamey stuff from nerdboy. But I think it's good, in a way. There's something about the rush of seeing the numbers go up, you know, and you can get something nice out of it too. I can't exactly hide this from you but it's something we both agreed on, for your sake.\c-\n" @@ -3289,7 +4086,26 @@ SWWM_LORETXT_SERPENTRIDERS2 = "It is unclear if these demons have an actual connection to the \cfHell\c- of our own universe, or if there are, perhaps, many different realms one could call \"Hell\" in each world across the vast multiverse. What is clear, however, is that they are a major threat to the peace of these worlds we have found, and must be eliminated.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfLittle red riding hood back there was such an easy kill, I doubt someone \"considerably stronger\" would make much of a difference, don't you think? Besides, you're smart enough to not fall for anyone's tricks and traps, aren't ya. He doesn't stand a chance, huhu...\c-"; +"\cfLittle red riding hood back there was such an easy kill, I doubt someone \"considerably stronger\" would make much of a difference, don't you think? Besides, you're smart enough to not fall for anyone's tricks and traps, aren't ya. He doesn't stand a chance, huhu...\c-\n" +"\n" +"\cfPS: Still think it's stupid they call themselves serpent riders when only one of them rides one.\c-"; +SWWM_LORETAG_SHARKPLUSH = "Shark Plush"; +SWWM_LORETAB_SHARKPLUSH = "Item"; +SWWM_LOREREL_SHARKPLUSH = "Nukritas2xx;Demolitionist;Saya"; +SWWM_LORETXT_SHARKPLUSH = +"\cxDesignation:\c-\n" +"\cf Dr. Shorky\c-\n" +"\cxManufacturer:\c-\n" +"\cf Nukritas 2xx\c-\n" +"\cxClassification:\c-\n" +"\cf Plush Doll\c-\n" +"\n" +"A handcrafted plush doll of a popular shark, dressed up with a doctor's coat and a stethoscope. Yet another of \cfNukritas 2xx\c-'s creations, commissioned as a gift to the \cfDemolitionist\c-.\n" +"\n" +"\cxSaya's Notes:\c-\n" +"\cfExplaining to people how we even came up with this would take hours, heheh.\c-\n" +"\n" +"\cfOh well, at least I figured that you'd want him along for the ride. Not like he's going to get damaged considering the ridiculous quality of whatever the hell it's made of. I never even asked her, really.\c-"; SWWM_LORETAG_SIDHE = "Sidhe"; SWWM_LORETAB_SIDHE = "Lore"; SWWM_LOREREL_SIDHE = "Parthoris;Saya;SerpentRiders;Demolitionist"; @@ -3321,19 +4137,17 @@ SWWM_LORETXT_SILVERBULLET = "\cf Blackmann Arms Ltd.\c-\n" "\cf Forx Aeronautics\c-\n" "\cxClassification:\c-\n" -"\cf Ultra-High Caliber Sniper Rifle\c-\n" +"\cf Ultra-High Caliber Anti-Materiel Rifle\c-\n" "\n" "The \cfSilver Bullet JET\c- is the 1.150 member of the \cfSilver Bullet\c- series of ultra-high caliber rifles manufactured by \cfBlackmann Arms\c-. It was created as a lighter, more \"reasonable\" alternative to the 1.350 \cfBehemoth\c- model. Weighing 43 kilograms and sporting a total length of 2.4 meters, it is sufficiently compact for non-augmented human use.\n" "\n" -"The main ammunition designed for this specific model is the 1.150 \cfXSB (eXplosive Super Burst)\c-. These beastly rounds are partially based on a NATO standard 30x113mm cartridge, and employ a low density \cfExplodium\c- shaped charge as propellant, allowing high velocity while still being safe for use. The bullets themselves are composed of a tungsten carbide core, snugly wrapped in an aluminum jacket, and decorated with a thin silver plating for aesthetic appearance (Silver Bullets are, indeed, NOT really made of silver). XSB rounds can penetrate several targets before eventually stopping, depending on their size, they may also do the same for thin walls.\n" -"\n" -"The secondary ammunition is the 1.150 \cfFCB (Fat Chode Bomb)\c-. Personally named by the CEO of Blackmann Arms himself, FCBs are quite similar to the standard XSB ammunition, but instead the bullets are full of additional Explodium, which on impact, is released violently, propagating its deadly blast through solid surfaces. Due to the volatility of these bullets, the propellant employed is slightly less potent, which results in a diminished potential for target penetration, but the blast definitely compensates for this. The explosive charge is so powerful that it can break some walls to pieces.\n" +"The ammunition designed for this specific model is the 1.150 \cfXSB (eXplosive Super Burst)\c-. This beastly 30x140mm cartridge employs a low density \cfExplodium\c- shaped charge as propellant, allowing high velocity while still being safe for use. The bullets themselves are composed of a tungsten carbide core, snugly wrapped in an aluminum jacket, and decorated with a thin silver plating for aesthetic appearance (Silver Bullets are, indeed, NOT really made of silver). XSB rounds can penetrate several targets before eventually stopping, depending on their size, they may also do the same for thin walls.\n" "\n" "In order to compensate for its massive recoil, the weapon redirects a part of the gasses from round ignition into a set of jet compensators designed by \cfForx Aeronautics\c-. Although partially cooled in the process, it is still hot enough to cause some damage to users not wearing adequate protection.\n" "\n" "\cfPrimary Fire:\c- Shoot the bullet. Any small targets hit by it are pretty much turned to paste. A second press after firing will chamber another round.\n" "\n" -"\cfSecondary Fire:\c- Tap to switch next reload between XSB and FCB ammunition, if available. Hold and then press primary fire to manually cock, allowing you to retrieve unfired rounds.\n" +"\cfSecondary Fire:\c- Cycle the bolt, chambering a new round if available. Note that you may eject unfired rounds as well.\n" "\n" "\cfReloading:\c- Reloads the weapon. Each magazine holds 5 rounds. An extra round can also be kept chambered.\n" "\n" @@ -3344,7 +4158,7 @@ SWWM_LORETXT_SILVERBULLET = "\cxSaya's Notes:\c-\n" "\cfWhat was that quote again, \"there is no kill like overkill\"? Yeah, sounds about right for this thing.\c-\n" "\n" -"\cfThe fuck are you even supposed to hunt with it, wild tanks? I suppose... bigass beefy demons could also count, but you're going to just turn them all to fucking paste.\c-"; +"\cfThe fuck are you even supposed to hunt with it, wild tanks? I suppose... bigass beefy demons could also count, but there's not going to be anything left of them other than a fine red mist.\c-"; SWWM_LORETAG_SPARKSTER = "Biospark Carbine"; SWWM_LORETAB_SPARKSTER = "Item"; SWWM_LOREREL_SPARKSTER = "DecadeMech;EngineTech;Saya"; @@ -3389,38 +4203,22 @@ SWWM_LORETXT_SPREADGUN = "\n" "The \cfSpreadgun\c- is a simple single-shot shotgun with a rather unconventional reload mechanism. Unlike other weapons of the same fashion, the Spreadgun employs an odd variant of break action that \cfBlackmann Arms\c- has described as \"slide-action\", whereas rather than being hinged, the barrel slides horizontally at the press of two side buttons, with a small metal bit springing up and ejecting the loaded shell. After loading in another round, the user merely has to push the barrel back into its closed position. Some have doubts about the practicality of this operation, or its safety, but it's been guaranteed that the gun will not misfire no matter the force exerted to push the barrel back in.\n" "\n" -"The weapon is chambered for rather sizable 6ga shells, and there's an exclusive assortment of ammunition types it can use, all handled by Blackmann Arms themselves. They are as follows:\n" +"The weapon is chambered for rather sizable 6ga shells. The ideal load that you'll find on the field are #00 buckshot rounds. Do note that the spread caused by the shortness of the barrel may make it difficult to reach distant targets, but at close range it should be very effective.\n" "\n" -"\cfStandard Buckshot:\c- Red shells. Exactly what it says on the tin. The spread caused by the shortness of the barrel may make it difficult to reach distant targets, but at close range it should be very effective.\n" +"There is additionally an exclusive secondary load available, so-called \cfGolden Shells\c-, highly rare and expensive, with unmatched destructive power. Each round fires a sabot packing a high-grade, high-density \cfExplodium\c- charge, along with gold glitter (which is apparently just for show). Anything directly hit by it is guaranteed to be completely vaporized by the ensuing blast.\n" "\n" -"\cfMetal Slug:\c- Green shells. Very potent slugs that have a decent accuracy, even at longer ranges. Due to their size and weight, they can potentially penetrate multiple small targets.\n" -"\n" -"\cfDragon's Breath:\c- White shells. A burst of flame in each shot, has considerable range. Ineffective underwater, for obvious reasons.\n" -"\n" -"\cfKinylum Saltshot:\c- Teal shells. Small chunks of Kinylum in its natural \"salt\" form. Once shot, they leave a trail of boiling hot plasma that remains in the air for a few moments before finally dissipating. In addition, the chunks will explode violently on contact with any surface, or once they \"destabilize\" (which unfortunately makes this type of ammunition ineffective at longer distances).\n" -"\n" -"\cfTelebrium Flechettes:\c- Black shells. Dozens of piercing projectiles tipped with pure Telebrium, an exotic element known for its potent corrosive effects when heated. Targets hit by these projectiles will experience a very painful discharge of corrosive toxins through their bodies (even non-organic ones), although the effects of this will dissipate in a couple seconds. Use of this ammunition is highly restricted, but you have been granted permission to use it against the invading forces.\n" -"\n" -"\cfLead Ball:\c- Purple shells. Coming from \cfPlutoni Incorporated\c-, these rounds shoot out a heavy ball of pure hurt. Despite the fact it's made of lead, it tends to keep its shape no matter how hard it hits something (some wonder if it actually IS made of lead, or if it's something else entirely). Having come out of such a place, it's no surprise that they also have some rather odd effects. It appears that, on certain occasions, the balls may emit odd sounds on impact, which in addition cause some form of potent shockwave around itself, increasing its speed in the process. This odd happening is listed as \"Random Crits\" in the store page.\n" -"\n" -"\cfGolden Shell:\c- Gold-plated shells with a heavy metal body. A highly rare and expensive type of ammunition, with unmatched destructive power. Each round fires a sabot packing a high-grade, high-density \cfExplodium\c- charge, along with gold glitter (which is apparently just for show). Anything directly hit by it is guaranteed to be completely vaporized by the ensuing blast.\n" -"\n" -"The wide range of compatible ammunition types makes the Spreadgun a rather versatile weapon, once you look past its tedious manual reloading. There are however plans to make a much more comfortable semi-automatic, recoil operated variant of this weapon, with prototypes already being tested.\n" +"The Spreadgun can be a versatile weapon, once you look past its tedious manual reloading. Still, there are plans to make a much more comfortable semi-automatic, recoil operated variant of this weapon, with prototypes already being tested.\n" "\n" "\cfPrimary Fire:\c- Shoot the loaded shell.\n" "\n" -"\cfSecondary Fire:\c- Tap to select the next ammo type to be used on reload. Hold and then press primary fire to unload the current shell and leave the weapon empty.\n" +"\cfSecondary Fire:\c- Reloads with golden shells, if available. Note that if the currently loaded round was not spent, it will be returned to its ammo pool. Should there not be enough storage space for it, it will be dropped on the ground instead.\n" "\n" -"\cfReloading:\c- Unload the current shell and load a new one. If the loaded shell was not spent, it will be returned to its ammo pool. Should there not be enough storage space for it, it will be dropped on the ground instead.\n" +"\cfReloading:\c- Reloads with standard ammunition, if available. Same rules apply here.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfYeah, this shit looks impractical af, and I don't know how no one has shot a hole through their hand reloading the damn thing. BUT, it does let you use all sorts of fun ammo. You've got the typical bread and butter of shells there, and then there's... Literal radioactive rock salt, that explodes, yeah, amazing. But then you look at what's right after that and... yeah.\c-\n" +"\cfYeah, this shit looks impractical af, and I don't know how no one has shot a hole through their hand reloading the damn thing. BUT it's powerful as all fuck, what with the absolute girth of that caliber and all.\c-\n" "\n" -"\cfHermann-senpai redirected me to nerdboi for those black shells, because they were his idea. So, let me explain. Telebrium is... a war crime. Plain and simple. We can kind of get away with it, though, because it's just mindless beasts that you're throwing it at. Still makes me uneasy, but hey, we're not using it on people, unlike the actual cases where it WAS used on people (good god, the stories about that).\c-\n" -"\n" -"\cfAnyway, enough about crimes, let's talk about the purple bois. So these things are a serious crime, and THOSE TWO had to be involved of course. I'm pretty sure those things are NOT made of lead. This looks like that weird metal they work with, that I swear to fuck I can't even pronounce the name of. And it has... yes, RANDOM CRITS. Therein lies the crime, Demo-chan. Can't believe we've got that shit going on now. I absolutely lost it when I first saw it in action, and I'm sure you will, too.\c-\n" -"\n" -"\cfLastly there's those golden bois. We can't buy them ourselves, so nerdo made another of his nerdy deals and said that he might reward you every now and then with one for eliminating \"high level targets\" or something like that. Can't wait to see what that shit is like, a fucking... golden shower of pain.\c-\n" +"\cfAlso, there's the whole thing of those golden bois. We can't buy them ourselves, so nerdo made another of his nerdy deals and said that he might reward you every now and then with one for eliminating \"high level targets\" or something like that. Can't wait to see what that shit is like, a fucking... golden shower of pain.\c-\n" "\n" "\cf*cough*\c-\n" "\n" @@ -3477,7 +4275,7 @@ SWWM_LORETXT_SUSAN = "\cfPS: Taro is currently seething in his seat. He can't stand religious crazery. Honestly, he'd be tipping his fedora if he had one.\c-"; SWWM_LORETAG_SYMNATEK = "Symnatek"; SWWM_LORETAB_SYMNATEK = "People"; -SWWM_LOREREL_SYMNATEK = "Mixom;Saya;Nukuri;WhiteScar"; +SWWM_LOREREL_SYMNATEK = "JoJo;Mixom;Saya;Nukuri;WhiteScar"; SWWM_LORETXT_SYMNATEK = "\cxName:\c-\n" "\cf Symnatek\c-\n" @@ -3495,7 +4293,7 @@ SWWM_LORETXT_SYMNATEK = "\cxSaya's Notes:\c-\n" "\cfAh yes, the well known strategy of \"if we're losing money, just contribute to the military\". Works every time, huh?\c-\n" "\n" -"\cfOh I bet you're going to think: \"But Saya, who are you to talk, when you made Ibuki for the US military?\", and to that I'll respond: \"Who said I made her for them?\"\c-"; +"\cfYes I know it sounds hypocritical of me to say that, what with the stuff with Ibuki, and my collaborations with the EDF, and all that... But think about it, it's almost like it's inevitable, in this day and age, in this economy, that you have to do stuff like that to stay afloat, isn't it?\c-"; SWWM_LORETAG_TARO = "Miyamoto, Taro"; SWWM_LORETAB_TARO = "People"; SWWM_LOREREL_TARO = "Nana;Ryuji;Saya;Ellen;Ibuki;WhiteScar;AkariLabs"; @@ -3516,19 +4314,17 @@ SWWM_LORETXT_TARO = "\n" "Taro is a highly skilled programmer, proficient in several languages, and has quite a lot of projects to his name, along with many contributions to notable open source projects, including the \cfLinux Kernel\c-. He's also a self-proclaimed \"culture archivist\", noting that he's basically a walking library when it comes to aspects of popular culture that for most are lost to time, thanks to the immortality inherited from his mother, and his strong memory. He's also quite popular online for his rather comedic anime reviews, under the persona of \cf\"The Waifu Wizard\"\c-.\n" "\n" -"In 2091, Taro was chosen to personally retrieve the \cfRed Oni\c-, \cfIbuki Miyamoto\c-, after the events of the \cfWhite Scar\c-. Following the tracking signal of her collar, he easily located her, and was about to take her back to Japan when a young girl approached him. It was \cfElena Yanikov XXI\c-, a scavenger who had befriended Ibuki during her time wandering that scorched wasteland. She asked Taro to bring her along, promising to \"be a good girl\". These words immediately made him accept her proposition.\n" -"\n" -"Not long after that, the two somehow started dating, eventually getting married in 2097.\n" +"In 2091, Taro was chosen to personally retrieve the \cfRed Oni\c-, \cfIbuki Miyamoto\c-, after the events of the \cfWhite Scar\c-. Following the tracking signal of her collar, he easily located her, and was about to take her back to Japan when a young girl approached him. It was \cfElena Yanikov XXI\c-, a scavenger who had befriended Ibuki during her time wandering that scorched wasteland. She asked Taro to bring her along, and he readily accepted. Not long after that, the two somehow started dating, eventually getting married in 2097.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfHOW IN THE NAME OF FUCK did my absolute loser of a brother get a girlfriend? I just don't understand. God, looking at the article after he's edited it, there's so much in there that's just him showing off, pathetic...\c-\n" +"\cfHOW EVEN did my absolute loser of a brother get a girlfriend? I just don't understand. God, looking at the article after he's edited it, there's so much in there that's just him showing off, pathetic...\c-\n" "\n" -"\cfYeah, he's that kinda guy. Acts like he's cool shit but once you get past his \"amazing skills and achievements\", he's just some asshole on the internet. I mean, I admit I kinda am to, a bit, but he's worse. I'd blame it on the fact he spent way too long on shitty forums.\c-\n" +"\cfYeah, he's that kinda guy. He loves to show off, what with all of his \"amazing skills and achievements\" and all. Not that I should be the one to complain when I'm also too proud at times of my own work. The two of us are alike a lot, it's why we're so close even if we fight sometimes over stupid shit. We're a pair of gremlins, and we're proud of it.\c-\n" "\n" -"\cfThough, he's also serious af when he wants. And at times like that he basically becomes the Tsukkomi to my Boke. If you don't know what that means you can go look it up, Demo-chan.\c-"; +"\cfThough, all that aside, Taro-nii can be very serious when he needs to. And at times like that he basically becomes the Tsukkomi to my Boke. If you don't know what that means you can go look it up, Demo-chan.\c-"; SWWM_LORETAG_UAC = "UAC"; SWWM_LORETAB_UAC = "People"; -SWWM_LOREREL_UAC = "Doomguy;Saya;Hell;DemonInvasion"; +SWWM_LOREREL_UAC = "Doomguy;Saya;Hell;DemonInvasion;Dana"; SWWM_LORETXT_UAC = "\cxName:\c-\n" "\cf Union Aerospace Corporation\c-\n" @@ -3554,9 +4350,9 @@ SWWM_LORETXT_UAC = "What happened then was the beginning of what's been called the \cfDoom Episodes\c-. As was told by the UAC following these events, one lone marine managed to, by his lonesome, defeat all the invading forces, taking the fight even to Hell itself. However, the exploits of the so-called \cfDoom Marine\c- only served to enrage the archdemon generals even more, and that's when the invasion of Earth began. Although most have seen this as \"the end of the world as we know it\", the UAC still sends a message of hope to all, saying that all will be resolved.\n" "\n" "\cxSaya's Note:\c-\n" -"\cfOh, the \"great and mighty\" UAC, bunch of shit-eating capitalist pigs, that's what they are. Look right here, this is what unchecked capitalism does to you, y'all. Yeah, you can guess by now that I fucking hate these people.\c-\n" +"\cfOh, the \"great and mighty\" UAC, bunch of capitalist pigs, that's what they are. Look right here, this is what unchecked capitalism does to you, y'all. Yeah, you can guess by now that I hate these people with the rage of a thousand suns.\c-\n" "\n" -"\cfSo... Illegal military experiments? Check. Fucking around with interdimensional travel? Check. Potentially causing the end of the world? Also check. These fuckers really ARE a stereotypical evil megacorp, fucking hell...\c-\n" +"\cfI've got so much insider info from a friend of Ibuki who used to work there (more info on her own article) that I could make one hell of a list of nasty shit they've done. So... Illegal military experiments? Check. Fucking around with interdimensional travel? Check. Potentially causing the end of the world? Also check. These bastards really ARE a stereotypical evil megacorp, fucking hell...\c-\n" "\n" "\cfBut you know what? I'm not going to sit on my ass and wait for their supposed \"problem fixer\" legendary hero soldier boy to fix it all up. As if THAT is going to happen. No, this is precisely why YOU are here, Demo-chan. This is what you are destined to change (wow ok I'm starting to sound a bit uhhhh, cliche-y here). But yeah, we've prepared you for it, you are the ultimate combat robot, the pride of Akari Labs and all that jazz, you CAN save the world, I'm sure of it.\c-"; SWWM_LORETXT_UAC2 = @@ -3592,7 +4388,7 @@ SWWM_LORETXT_UAC2 = "In 2150, the company finally closed off all of its teleportation experiments, and in a public announcement, CEO \cfIan Kelliher\c- states that the company will now shift its main focus into repairing all the damages that their actions had brought to Earth. Something which, according to initial estimates, may take over fifty years.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the \"most important man in the world\", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear.\c-"; +"\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the \"most important man in the world\", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear. Even Dana was a barrel of laughs when she heard the news. Yeah, she hates these pricks as much as I do.\c-"; SWWM_LORETXT_UAC3 = "\cxName:\c-\n" "\cf Union Aerospace Corporation\c-\n" @@ -3627,10 +4423,10 @@ SWWM_LORETXT_UAC3 = "\n" "Ten years after this announcement, some worrying news soon reached Earth. Demonic forces had been sighted on several abandoned UAC bases, which were previously thought to all having been thoroughly wiped by radiation bombings. Something had managed to survive there, and was steadily reviving the decayed corpses of the countless fallen demons. Seeing no other choice, the Doom Episodes are reopened, and the very disgruntled Doom Marine was re-commissioned and sent there, this time, after his eventual success, making the decision to stay in Hell, forever, to make sure the demons never attempt an attack ever again. Ever since then, no contact could be made with him.\n" "\n" -"What little information could be recovered from the other side of all this, that of Hell itself, is that his rampage was unstoppable. He defeated the remaining demon commanders. Tens of thousands of demons, in their mindless rage, all marched towards their deaths by his hand. There was hope among the civilian population that this one human, now rebaptized by the title of \cfDoom Slayer\c-, would put an end to the tyranny of the archdemon generals, but they had their plans for him. They were fully aware that should he make his way to the capital city of \cfDis\c- once again, they would not be able to stop him. So a trap was set, and he fell right into it. It was then that \cfErebus\c-, the leading general, banished him, far away, beyond the confines of this universe, so that he may never be able to return to this world.\n" +"What little information could be recovered from the other side of all this, that of Hell itself, is that his rampage was unstoppable. He defeated the remaining demon commanders. Tens of thousands of demons, in their mindless rage, all marched towards their deaths by his hand. There was hope among the civilian population that this one human soldier would put an end to the tyranny of the archdemon generals, but they had their plans for him. They were fully aware that should he make his way to the capital city of \cfDis\c- once again, they would not be able to stop him. So a trap was set, and he fell right into it. It was then that \cfErebus\c-, the leading general, banished him, far away, beyond the confines of this universe, so that he may never be able to return to this world.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the \"most important man in the world\", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear.\c-\n" +"\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the \"most important man in the world\", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear. Even Dana was a barrel of laughs when she heard the news. Yeah, she hates these pricks as much as I do.\c-\n" "\n" "\cfAnd so, here ends the story of these Dumb Epistles or whatever, one of the shining examples of the consequences of unchecked capitalism™.\c-"; SWWM_LORETAG_UNISSIX = "Unissix, Misa A."; @@ -3681,13 +4477,9 @@ SWWM_LORETXT_UNISSIX = "\n" "\cfOh yeah, also Misa is one hell of a pro gamer, holy shit. Anything I got her to play, she would just blaze through like it was nothing. Yeah, even THOSE games. It's fun to watch her, and she's specially fond of adventure stuff, I guess because it's the kinda thing she could never do irl.\c-\n" "\n" -"\cfAlso, funny story. The first time I visited them when they were in Sankaideriha, Misa gave me one hell of a scare with that sudden transformation she went through. It's like... she was a completely different person entirely. Like, I had never seen her so happy before, it was really something else, and honestly I was also happy for her too. Ah, and then that other thing happened, when uhhh... we went to a hot springs together. I... accidentally... saw... down there, yeah...\c-\n" +"\cfAlso, funny story. The first time I visited them when they were in Sankaideriha, Misa gave me one hell of a scare with that sudden transformation she went through. It's like... she was a completely different person entirely. Like, I had never seen her so happy before, it was really something else, and honestly I was also happy for her too.\c-\n" "\n" -"\cfGod, no wonder I could hear Zana-sama across the house when they'd go at it. Ah... you lucky devil...\c-\n" -"\n" -"\cfYes, that was when they were staying at my place. They're not the first I hear do it like wild beasts, actually. Yu-chan and that big tiddy goth gf of hers, they're quite something too. Seriously, no one knows that from my bedroom you can perfectly hear whatever's happening in the guest room. Dunno why, some sort of acoustics fuckery or something, but yeah.\c-\n" -"\n" -"\cf(I wish I could unhear the unholy noises Taro-niisan emitted when he brought Ellen-san, though)\c-"; +"\cfGod, they just are the cutest of couples. I can't stop saying it.\c-"; SWWM_LORETAG_VESTAL = "Vestal Foods"; SWWM_LORETAB_VESTAL = "People"; SWWM_LOREREL_VESTAL = "Saya;AkariLabs"; @@ -3721,7 +4513,7 @@ SWWM_LORETXT_VOICEBOX = "The \cfAkari Labs\c- community offers a variety of custom-made voice packs for this device, too. Please visit our forums for more information.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, just without the tiddy.\c-"; +"\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, but in cute robot form.\c-"; SWWM_LORETXT_VOICEBOX2 = "\cxDesignation:\c-\n" "\cf Loudboi Voicebox\c-\n" @@ -3735,12 +4527,12 @@ SWWM_LORETXT_VOICEBOX2 = "The \cfAkari Labs\c- community offers a variety of custom-made voice packs for this device, too. Please visit our forums for more information.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, just without the tiddy.\c-\n" +"\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, but in cute robot form.\c-\n" "\n" -"\cfUpdate: And then... Your true vocal chords as a maidbot came to be, no filters or anything, and my love for your charming voice only increased. My heart melts at the sound of it, hehehe...\c-"; +"\cfUpdate: And then... Your true vocal chords as a maidbot came to be, no filters or anything, and my love for your charming voice only increased. My heart melts at the sound of it, seriously...\c-"; SWWM_LORETAG_WALLBUSTER = "Wallbuster"; SWWM_LORETAB_WALLBUSTER = "Item"; -SWWM_LOREREL_WALLBUSTER = "Blackmann;Bigshot;Demolitionist;Saya;Taro;Belt"; +SWWM_LOREREL_WALLBUSTER = "Blackmann;Hermann;Bigshot;Demolitionist;Saya;Taro;Belt"; SWWM_LORETXT_WALLBUSTER = "\cxDesignation:\c-\n" "\cf \"Wallbuster\" Heavy Armor Breaching Shotgun\c-\n" @@ -3754,17 +4546,7 @@ SWWM_LORETXT_WALLBUSTER = "\n" "The internal mechanisms driving this weapon have such a degree of complexity that they've been described as \cf\"Kraut Deep Space Magic\"\c- by some. Only \cfHermann E. Ischer\c- himself knows every detail about their operation. With each twist of the main trigger, the topmost barrel is primed, and then its cylinder spins counter-clockwise, with the next round ready for shooting. On a complete rotation, or when the secondary trigger is used, the main body spins afterwards, switching to another cylinder.\n" "\n" -"The Wallbuster is compatible with most types of 6ga shells distributed by Blackmann, although there are safety restrictions on some, namely dragon's breath, flechettes, and golden shells. This limits the range of ammunition usable to only these four types:\n" -"\n" -"\cfStandard Buckshot:\c- Red shells. Exactly what it says on the tin. Quite lethal at short range, and with some extra reach due to the length of the weapon's barrels.\n" -"\n" -"\cfMetal Slug:\c- Green shells. Very potent slugs that have a decent accuracy, even at longer ranges. Due to their size and weight, they can potentially penetrate multiple small targets.\n" -"\n" -"\cfKinylum Saltshot:\c- Teal shells. Small chunks of Kinylum in its natural \"salt\" form. Once shot, they leave a trail of boiling hot plasma that remains in the air for a few moments before finally dissipating. In addition, the chunks will explode violently on contact with any surface, or once they \"destabilize\" (which unfortunately makes this type of ammunition ineffective at longer distances).\n" -"\n" -"\cfLead Ball:\c- Purple shells. Coming from \cfPlutoni Incorporated\c-, these rounds shoot out a heavy ball of pure hurt. Despite the fact it's made of lead, it tends to keep its shape no matter how hard it hits something (some wonder if it actually IS made of lead, or if it's something else entirely). Having come out of such a place, it's no surprise that they also have some rather odd effects. It appears that, on certain occasions, the balls may emit odd sounds on impact, which in addition cause some form of potent shockwave around itself, increasing its speed in the process. This odd happening is listed as \"Random Crits\" in the store page.\n" -"\n" -"Despite this limitation, with just these four types one can make of the Wallbuster a quite mighty companion. Especially taking into account the semi-automatic nature of the weapon, allowing for a quick succession of shots or even shooting multiple shells simultaneously.\n" +"Taking into account the semi-automatic nature of the weapon, allowing for a quick succession of shots or even shooting multiple shells simultaneously, the Wallbuster is a quite mighty companion.\n" "\n" "\cfPrimary Fire:\c- Shoots the topmost barrel.\n" "\n" @@ -3772,18 +4554,16 @@ SWWM_LORETXT_WALLBUSTER = "\n" "\cfTertiary Fire:\c- Shoots it all, if you really want to.\n" "\n" -"\cfReloading:\c- Once the side lever is pulled down, the cylinders can be safely detached and reloaded individually. For reloading on the go, it's recommended to have a \cfMagnetic Utility Belt\c- or similar at hand, as it will make this operation easier. Speed loaders are available for purchase from the Blackmann Arms website, or from authorized distributors. Clever operators might also choose to carry spare pre-loaded cylinders.\n" +"\cfReloading:\c- Once the side lever is pulled down, the cylinders can be safely detached and reloaded individually. A rapid reload routine will execute that automatically makes you top up the gun as much as possible, one cylinder at a time, for as long as the action is held.\n" "\n" "\cfTechniques:\c- True to its name, you can destroy all sorts of obstacles along the way, provided you're dealing enough damage relative to their size (requiring secondary or tertiary fire). This even includes locked doors, so you won't have to bother with key hunting anymore.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfOK so, this ballbusting hunk of metal. Yeah, now ain't that some good shit...\c-\n" +"\cfOK so, this hunk of metal. Yeah, now ain't that some good shit...\c-\n" "\n" -"\cfDon't worry about reloading this taking a long-ass time, btw. DemolitionOS comes with a quick reload routine that'll make it much easier for you. The ammo will be queued up in your Hammerspace, and then all you have to do is hold out your hand above the barrels, and they'll get deployed right inside. Nifty, huh? Taro did most of the work on that, so yeah, you can thank him.\c-\n" +"\cfDon't worry about reloading this taking a long-ass time, btw. DemolitionOS comes with a quick reload routine that'll make it nice and easy for you. The ammo will be queued up in your Hammerspace, and then all you have to do is hold out your hand above the barrels, and they'll get deployed right inside, takes around 10 seconds to top it up, more or less. Nifty, huh? Taro did most of the work on that, so yeah, you can thank him.\c-\n" "\n" -"\cfOh and... y'know... this whole thing, that name and all, kinda makes me think of grandma a bit. I mean, if you change the first letter... Oh, do you hear those drums and that guitar? 'cause I sure do...\c-\n" -"\n" -"\cfOld Days~ ♪\c-"; +"\cfOh and... y'know... this whole thing, that name and all... Well, the joke already makes itself.\c-"; SWWM_LORETAG_WARARMOR = "War Armor"; SWWM_LORETAB_WARARMOR = "Item"; SWWM_LOREREL_WARARMOR = "Unissix;Devanikna;Cyrus"; @@ -3803,7 +4583,7 @@ SWWM_LORETXT_WARARMOR = "\cxSaya's Notes:\c-\n" "\cfNerdboi and his \"armor analysis\" once again. This guy, seriously... Life isn't a goddamn videogame, so please PLEASE stop talking in terms like \"damage units\" and \"reduction factors\".\c-\n" "\n" -"\cfAaaaanyway, Misa makes some pretty nifty stuff. I feel that it's a bit redundant that you're wearing armor made of the same stuff as your chassis. I mean, a robot wearing armor... yeah, why not? Protection is always important, huhu...\c-"; +"\cfAaaaanyway, Misa makes some pretty nifty stuff. I feel that it's a bit redundant that you're wearing armor made of the same stuff as your chassis. I mean, a robot wearing armor... Well, nothing wrong with some extra protection, I guess.\c-"; SWWM_LORETAG_WHITELADY = "White Lady"; SWWM_LORETAB_WHITELADY = "People"; SWWM_LOREREL_WHITELADY = "MothPlushy;Chancebox;MothLamp;XAnimen;Demolitionist;Saya"; @@ -3826,28 +4606,15 @@ SWWM_LORETXT_WHITELADY = "\n" "The White Lady has worked for many individuals and organizations over the years, but recently, she's been hired by the \cfUniversity of Nos-Kora\c- in order to collaborate with the \cfDemolitionist\c- in their missions.\n" "\n" -"Demolitionist, this message is for you. Your love for the \cfMashiro Plush\c- from our \cfLucky Chanceboxes\c- has made her contract effective, and thus, whenever you have a \cfSankai Companion Lamp\c- in your possession, the White Lady shall readily work alongside you, and slay any enemies you may encounter.\n" +"Demolitionist, this message is for you. Your love for the \cfMoth Girl Plush\c- from our \cfLucky Chanceboxes\c- has made her contract effective, and thus, whenever you have a \cfSankai Companion Lamp\c- in your possession, the White Lady shall readily work alongside you, and slay any enemies you may encounter.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfGHFFFSDFHDGKHDFDKHGSFHFHGSFSH\c-\n" +"\cfPlease excuse me while I have a moment to wild out over the fact that moth girls actually exist.\c-\n" "\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\cfMOTH GIRLS ARE REAL\c-\n" -"\n" -"\cfI AM SO FUCKING BUILDING A GODDAMN SPACE SHIP TO TRAVEL TO THAT PLANET, FUCK THE LAWS, FUCK THE WHITE SCAR TREATY, FUCK EVERYTHING, I WANT TO SEE THE MOTH GIRLS. I'M BRINGING ALONG ALL THE LAMPS I CAN FIND, I'M BUILDING A FUCKING HAREM.\c-"; +"\cfGHFFFSDFHDGKHDFDKHGSFHFHGSFSH\c-"; SWWM_LORETAG_WHITESCAR = "The White Scar"; SWWM_LORETAB_WHITESCAR = "Lore"; -SWWM_LOREREL_WHITESCAR = "Nukuri;NosKora;Saya;Zanaveth2"; +SWWM_LOREREL_WHITESCAR = "Nukuri;NosKora;Nukritas1xx;Saya;Zanaveth2"; SWWM_LORETXT_WHITESCAR = "\cxName:\c-\n" "\cf The White Scar\c-\n" @@ -3860,7 +4627,7 @@ SWWM_LORETXT_WHITESCAR = "\n" "There were many losses on both sides, including civilians, in a chaotic confrontation between people who, not long before, had been peacefully allied for half a century. In three years, the vastly superior Nukuri armies neutralized all opposition, and set their sights on the very heart of the country. Wishing to \"slay the beast from within\", a small team managed to locate and capture the president. He was given one last choice, right there and then. He could either surrender and publicly apologize for his affront to the empire, or he could refuse, and watch as the \cfEmperor's Wrath\c- falls down upon him.\n" "\n" -"He chose the latter option, and what followed was nothing short of unimaginably despicable and cruel. All Nukuri forces retreated, and they evacuated any remaining civilian Nukuri who still remained. Then, in an instant, a succession of blinding flashes of scorching light reduced the whole United States territory to ashes, coming from the experimental orbital weapon the empire had built many years prior. It was its very first test fire, and the actual scale and effects of it were not yet known. Some say that the apocalyptic effects it had were not truly intended, that the plan was not to put an end to all life, but rather only cause destruction on a more \"technical\" level, disabling all electronic devices and machinery. Suffice to say, when the lead designer of this weapon, \cfZanaveth Nekuraku I\c-, saw what had happened, he suffered a severe mental breakdown, and disappeared from the public eye for many years.\n" +"He chose the latter option, and what followed was nothing short of unimaginably despicable and cruel. All Nukuri forces retreated, and they evacuated any remaining civilian Nukuri who still remained. Then, in an instant, a succession of blinding flashes of scorching light reduced all major cities along the United States' east coast to ashes, coming from the experimental orbital weapon the empire had built many years prior. It was its very first test fire, and the actual scale and effects of it were not yet known. Some say that the apocalyptic effects it had were not truly intended, that the plan was not to put an end to all life, but rather only cause destruction on a more \"technical\" level, disabling all electronic devices and machinery. Suffice to say, when the lead designer of this weapon, \cfZanaveth Nekuraku I\c-, saw what had happened, he suffered a severe mental breakdown, and disappeared from the public eye for many years.\n" "\n" "With this attack, the flames of the war against the empire only got stronger. In addition, all the remaining Nukuri on Earth were forced to leave, and with the exception of a select few countries, the \cfWhite Scar Treaty\c- was signed almost unanimously, putting an end to half a century of Nukuri contributions to the evolution of our science and technology. Those who had signed had to reject anything made by them, and no longer make any contact with any member of their species. In addition, they were no longer allowed to remain on their Moon colony either, forcing the \cfLuna Research Institute\c- to close its doors after almost four thousand years.\n" "\n" @@ -3868,16 +4635,16 @@ SWWM_LORETXT_WHITESCAR = "\n" "\cfNukritas 1xx\c- would then, by himself, walk all the way down from the northernmost region of Akane to the imperial capital in Vutaki. His advance could not be stopped, he shrugged off any attempts by imperial soldiers, he destroyed their weapons merely by looking at them. Once he reached the imperial palace, he kicked the doors open and made his way to the throne, there, emperor Ledora Yathai, frozen in terror, received a single punch across the gut from the Mishe ambassador, and was sent flying in a straight line out the window, reaching such a velocity that he completely vanished into the void of space. Then, the University made their announcement, the \cfNos-Kora Ultimatum\c-. The Nukuri race was given eight years to resolve their conflicts and make peace. Should they have failed to do so, the University would close its doors forever, and the Mishe would formally leave the \cfX'Animen Coalition\c-, taking their valuable knowledge with them.\n" "\n" -"This threat was taken very seriously, as the Mishe were one of the most important members of this interplanetary alliance, and so a massive reform followed. Both sides were now united in their mission to rebuild Nahkami in its entirety as a new nation. In 2108, only halfway through the time limit they had set, the \cfNukuri Unified Government\c- was finally established, with \cfZanata Nekuraku II\c- as \"transitional\" prime minister. Following this, an attempt was made to reestablish relations with Earth, but it was useless, they were completely ignored, save for two countries who had not signed the treaty: Scotland and Japan.\n" +"This threat was taken very seriously, as the Mishe were one of the most important members of this interplanetary alliance, and so a massive reform followed. Both sides were now united in their mission to rebuild Nahkami in its entirety as a new nation. In 2108, only halfway through the time limit they had set, the \cfNahkami Unified Government\c- was finally established, with \cfZanata Nekuraku II\c- as \"transitional\" prime minister. Following this, an attempt was made to reestablish relations with Earth, but it was useless, they were completely ignored, save for two countries who had not signed the treaty: Scotland and Japan.\n" "\n" "These two countries were host to powerful corporations that had been long time partners of Zanata's own company, \cfNekuratek\c-, and were fully aware of the truth of the situation, hence why they had refused to break bonds with them. Of note regarding this were various statements on social media from \cfSaya Miyamoto\c-, head of the Japanese \cfAkari Labs\c-, condemning all those who had signed the treaty for their \"gross generalization\" in seeing the entirety of the Nukuri as an enemy.\n" "\n" "No further attempts have been made ever since to try once again to reestablish the former alliance, not even during many major events that would threaten Earth once again, where they would have gladly come to our aid as they had done in the \cfLuna Event\c- of 2021. Earth was, in addition, barred from the possibility of entering the X'Animen Coalition due to this fierce opposition.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfLo and behold, here it be, the darkest moment in human history (to date). Seriously, it fucks me up thinking again about what had happened, it was some awful shit. Like, not just the whole fucking burnination of an entire country, but also what was going down on the other side too, all the stuff Zana-sama told me about.\c-\n" +"\cfLo and behold, here it be, the darkest moment in human history (to date). Seriously, it fucks me up thinking again about what had happened, it was some awful shit. Like, not just the whole burnination of an entire country, but also what was going down on the other side too, all the stuff Zana-sama told me about.\c-\n" "\n" -"\cfI mean, sure, from this one can guess that the Nukuri were anything but peaceful, but that's not even half of it. The empire, the fucking empire, it was all the goddamn stinking bitch-ass piece of shit empire. Fucking, megalomaniacal evil-ass genocidal shithead emperor running the show, doing whatever the fuck he wanted. All those wars, it was all people who wanted him gone, and he'd crush them, over and over, with no remorse. He ran the place, and he could do whatever he wanted to them, like the ugly bastard he was. Yeah, I heard all of it. The mass executions, going as far as to bringing not one, but TWO whole races to extinction, yeah, THAT was sure fucked up. Oh but what about, torturing and massacring people who were seen as \"traitors\" and \"deviants\", huh? Yeah, that shit too. Zana-sama lost a lot of her family because of that. Ugh, I swear, one day I'm going to nail down where that bastard was yeeted to, just so I can kick him into paste. I'll obviously start with the balls, for sure, that one's for the other thing he did, which I'm not going to talk about here because I mean, holy fuck, this got dark (and it gets even darker). I have GOOD reasons to hate someone as fucking disgustingly vile as this motherfucker, hell, \"motherfucker\" is not even close there, considering what he did. Yeah, I think you get the hint now, do you? I bet you'd want to get your hands on him too. God damn if only those crazy guys hadn't yeeted him into space...\c-"; +"\cfI mean, sure, from this one can guess that the Nukuri were anything but peaceful, but that's not even half of it. The empire, the fucking empire, it was all the goddamn stinking empire. That megalomaniacal evil-ass emperor running the show, doing whatever he wanted. All those wars, it was all people who wanted him gone, and he'd crush them, over and over, with no remorse. He ran the place, and he could do whatever he wanted to them. Yeah, I heard all of it. The executions, the torturing and massacring of people who were seen as \"traitors\" and \"deviants\"... Zana-sama lost a lot of her family because of that. I seriously hate that stuff like this keeps happening all over the world...\c-"; SWWM_LORETAG_XANIMEN = "X'Animen"; SWWM_LORETAB_XANIMEN = "Lore"; SWWM_LOREREL_XANIMEN = "Luna;Nukuri;Saya;Xekke;Devanikna;Gods"; @@ -3910,9 +4677,9 @@ SWWM_LORETXT_XANIMEN = "\n" "\cfKarnanaiahma:\c- A world of large oceans, and the homeworld of the \cfQurensniv\c-, a race almost indistinguishable from humans. Some of its inhabitants fled to Earth in 130 BC, forming the town of \cfKereshnovka\c-.\n" "\n" -"\cfBuran:\c- A formerly lush planet teeming with wildlife, which is now entirely covered by a matryoshka brain superstructure known as the \cfBleaknet\c-. It is the homeworld of the \cfBurakan\c- race, of which only one surviving member remains: the lead engineer of the Bleaknet project. This oddly named structure in addition serves as a nexus of information for the entire coalition, linking together their various networks through complex space-time distortion technology.\n" +"\cfBuran:\c- A formerly lush planet teeming with wildlife, which is now entirely covered by a matryoshka brain superstructure known as the \cfBleaknet\c-. It is the homeworld of the \cfBurakan\c- race, of which only one member resides within: the lead engineer of the Bleaknet project. This oddly named structure in addition serves as a nexus of information for the entire coalition, linking together their various networks through complex space-time distortion technology.\n" "\n" -"\cfSora, Yasakuna, Sunkaeze:\c- Two gast giants and one barren planet in the outer rim of the system. All uninhabitable, although it's been noted that \cfSunkaeze\c- once housed a facility owned by \cfDecade Mechanics\c-.\n" +"\cfSora, Yasakuna, Sunkaeze:\c- Two gas giants and one barren planet in the outer rim of the system. All uninhabitable, although it's been noted that \cfSunkaeze\c- once housed a facility owned by \cfDecade Mechanics\c-.\n" "\n" "\cxZenna:\c-\n" "The second most populated system, and with the most inhabited planetary bodies. It is located within the Triangulum galaxy.\n" @@ -3925,7 +4692,7 @@ SWWM_LORETXT_XANIMEN = "\n" "\cfNekemekya:\c- A semi-artificial planet covered by a large metallic shell. It is home to \cfIx Nemeke\c-, and the \cfMekyon\c-, a race of mechanical beings he had created.\n" "\n" -"\cfXeryuga:\c- A highly hostile magma-filled hellscape planet, inhabited by the unfairly adorable bunny-like \cfXeura\c- race, along with \cfIx Xeuriges\c-, their creator.\n" +"\cfXeryuga:\c- A highly hostile magma-filled hellscape planet, inhabited by the lagomorph-like \cfXeura\c- race, along with \cfIx Xeuriges\c-, their creator.\n" "\n" "\cfUrai, Erusa, Sethia:\c- A trio of gas giants rich in valuable materials. The exploitation of these resources is currently contested by members of the system.\n" "\n" @@ -3971,7 +4738,7 @@ SWWM_LORETXT_XANIMEN = "\cxSaya's Notes:\c-\n" "\cf\"Negotiations fell apart\" is one way to put it. God, imagine... just IMAGINE for a moment that things had gone better. We would be part of a huge interplanetary alliance! That stuff is like... straight out of some sci-fi novel or something.\c-\n" "\n" -"\cfBy the way, I don't know if you've just skimmed through it or actually read the whole thing, but did you SEE the entry on that one planet? What the fuck is up with that??? It's like some crazy overly creative elementary schooler came up with all that shit. Fucking hell. Did a god really do that? Or... is it just the most ridiculous fucking coincidence imaginable...?\c-\n" +"\cfBy the way, I don't know if you've just skimmed through it or actually read the whole thing, but did you SEE the entry on that one planet? What the fresh heck is up with that??? It's like some overly creative elementary schooler came up with all of that. Did a god really do that? Or... is it just the most ridiculous coincidence imaginable...?\c-\n" "\n" "\cfI don't even know, Demo-chan... at this point, anything could be, from what I've seen out there.\c-"; SWWM_LORETXT_XANIMEN2 = @@ -4006,7 +4773,7 @@ SWWM_LORETXT_XANIMEN2 = "\n" "\cfBuran:\c- A formerly lush planet teeming with wildlife, which is now entirely covered by a matryoshka brain superstructure known as the \cfBleaknet\c-. It is the homeworld of the \cfBurakan\c- race, of which only one surviving member remains: the lead engineer of the Bleaknet project. This oddly named structure in addition serves as a nexus of information for the entire coalition, linking together their various networks through complex space-time distortion technology.\n" "\n" -"\cfSora, Yasakuna, Sunkaeze:\c- Two gast giants and one barren planet in the outer rim of the system. All uninhabitable, although it's been noted that \cfSunkaeze\c- once housed a facility owned by \cfDecade Mechanics\c-.\n" +"\cfSora, Yasakuna, Sunkaeze:\c- Two gas giants and one barren planet in the outer rim of the system. All uninhabitable, although it's been noted that \cfSunkaeze\c- once housed a facility owned by \cfDecade Mechanics\c-.\n" "\n" "\cxZenna:\c-\n" "The second most populated system, and with the most inhabited planetary bodies. It is located within the Triangulum galaxy.\n" @@ -4019,7 +4786,7 @@ SWWM_LORETXT_XANIMEN2 = "\n" "\cfNekemekya:\c- A semi-artificial planet covered by a large metallic shell. It is home to \cfIx Nemeke\c-, and the \cfMekyon\c-, a race of mechanical beings he had created.\n" "\n" -"\cfXeryuga:\c- A highly hostile magma-filled hellscape planet, inhabited by the unfairly adorable bunny-like \cfXeura\c- race, along with \cfIx Xeuriges\c-, their creator.\n" +"\cfXeryuga:\c- A highly hostile magma-filled hellscape planet, inhabited by the lagomorph-like \cfXeura\c- race, along with \cfIx Xeuriges\c-, their creator.\n" "\n" "\cfUrai, Erusa, Sethia:\c- A trio of gas giants rich in valuable materials. The exploitation of these resources is currently contested by members of the system.\n" "\n" @@ -4074,7 +4841,7 @@ SWWM_LORETXT_XANIMEN2 = "\cxSaya's Notes:\c-\n" "\cf\"Negotiations fell apart\" is one way to put it. God, imagine... just IMAGINE for a moment that things had gone better. We would be part of a huge interplanetary alliance! That stuff is like... straight out of some sci-fi novel or something.\c-\n" "\n" -"\cfBy the way, I don't know if you've just skimmed through it or actually read the whole thing, but did you SEE the entry on that one planet? What the fuck is up with that??? It's like some crazy overly creative elementary schooler came up with all that shit. Fucking hell. Did a god really do that? Or... is it just the most ridiculous fucking coincidence imaginable...?\c-\n" +"\cfBy the way, I don't know if you've just skimmed through it or actually read the whole thing, but did you SEE the entry on that one planet? What the fresh heck is up with that??? It's like some overly creative elementary schooler came up with all of that. Geez. Did a god really do that? Or... is it just the most ridiculous coincidence imaginable...?\c-\n" "\n" "\cfI don't even know, Demo-chan... at this point, anything could be, from what I've seen out there.\c-\n" "\n" @@ -4103,9 +4870,7 @@ SWWM_LORETXT_XEKKE = "\cxSaya's Notes:\c-\n" "\cfI've only seen pics of the place, from Zana-sama. It's definitely cool, all those rocky mountains, the sprawling cities around them, the lakes and waterfalls, the volcanic areas with huge rivers of magma and PEOPLE BATHING IN IT (holy shit)...\c-\n" "\n" -"\cfAnd yeah, that's basically Maruku-sama's home right there. She's got the whole family and everything in there, including her... mom. Oh my fucking god don't even get me started on her mom. I'll just end up curled up in a corner again thinking about THAT one time.\c-\n" -"\n" -"\cfCan't believe a fucking five meter tall hot milf goddess proposed to have sex with me right there and then jesus fuck holy shit why did I have to fucking pass out I could have had THE BEST SEX OF MY FUCKING LIFE WITH THE MOTHERFUCKING GODDESS OF LUST.\c-"; +"\cfAnd yeah, that's basically Maruku-sama's home right there. She's got the whole family and everything in there. Heh, she even told me that being surrounded by titans makes her less self-conscious about being so huge.\c-"; SWWM_LORETAG_YNYKRON = "Ynykron Artifact"; SWWM_LORETAB_YNYKRON = "Item"; SWWM_LOREREL_YNYKRON = "Unissix;Nedoshiaan;Saya"; @@ -4139,11 +4904,11 @@ SWWM_LORETXT_YNYKRON = "\cxSaya's Notes:\c-\n" "\cfSometimes I wonder if Misa actually realizes the dangers of the stuff she makes. This thing... it's maybe a bit too much, you know... Even compared to all the other stuff in the arsenal. I still ended up accepting it, anyway, because you know how I am, and how cute Misa is. I can't say no to that face. Besides, she made it for us, specifically.\c-\n" "\n" -"\cfSo yeah, here it is, \"God's Cumshot\" in all its glory. A motherfucking blast of blinding whiteness that just... absolutely fucking obliterates everything it's aimed at. Sure is a weapon, huh?\c-\n" +"\cfSo yeah, here it is, the \"Divine Fury\" in all its glory. A blast of goddamn blinding whiteness that just... absolutely fucking obliterates everything it's aimed at. Sure is a weapon, huh?\c-\n" "\n" "\cfAlso, that alternate mode... I know you'll probably do it anyway out of curiosity. Just... be careful, okay?\c-\n" "\n" -"\cfOh, and just so you know, this thing is the reason why I make backups of your core before every mission. With any other weapon, I wouldn't be worried 'cause your body's pretty damn resilient, but this fucking thing is on a different level entirely. I gotta say it again, BE VERY CAREFUL. If you get caught in the blast you're gone forever, got it?\c-"; +"\cfOh, and just so you know, this thing is the reason why I make backups of your core before every mission. With any other weapon, I wouldn't be worried 'cause your body's pretty damn resilient, but this thing is on a different level entirely. I gotta say it again, BE VERY CAREFUL. If you get caught in the blast you're gone forever, got it?\c-"; SWWM_LORETXT_YNYKRON2 = "\cxDesignation:\c-\n" "\cf Ynykron Artifact\c-\n" @@ -4174,15 +4939,15 @@ SWWM_LORETXT_YNYKRON2 = "\cxSaya's Notes:\c-\n" "\cfSometimes I wonder if Misa actually realizes the dangers of the stuff she makes. This thing... it's maybe a bit too much, you know... Even compared to all the other stuff in the arsenal. I still ended up accepting it, anyway, because you know how I am, and how cute Misa is. I can't say no to that face. Besides, she made it for us, specifically.\c-\n" "\n" -"\cfSo yeah, here it is, \"God's Cumshot\" in all its glory. A motherfucking blast of blinding whiteness that just... absolutely fucking obliterates everything it's aimed at. Sure is a weapon, huh?\c-\n" +"\cfSo yeah, here it is, the \"Divine Fury\" in all its glory. A goddamn blast of blinding whiteness that just... absolutely fucking obliterates everything it's aimed at. Sure is a weapon, huh?\c-\n" "\n" "\cfAlso, that alternate mode... I know you'll probably do it anyway out of curiosity. Just... be careful, okay?\c-\n" "\n" -"\cfOh, and just so you know, this thing is the reason why I make backups of your core before every mission. With any other weapon, I wouldn't be worried 'cause your body's pretty damn resilient, but this fucking thing is on a different level entirely. I gotta say it again, BE VERY CAREFUL. If you get caught in the blast you're gone forever, got it?\c-\n" +"\cfOh, and just so you know, this thing is the reason why I make backups of your core before every mission. With any other weapon, I wouldn't be worried 'cause your body's pretty damn resilient, but this thing is on a different level entirely. I gotta say it again, BE VERY CAREFUL. If you get caught in the blast you're gone forever, got it?\c-\n" "\n" -"\cfPS: We've confirmed it (well, Misa did, directly), this thing is effective against gods too. Not enough to kill, but it does have some very... notable destructive effects. Pretty crazy story, right? The next day after our wedding, Misa just popped up carrying her personal Ynykron and challenged the fucking goddess of war to a duel, right there and then. She ate up the whole damn blast, burned through most of her body leaving bones exposed. After that very painful experience, Misa was declared the second strongest warrior in the fucking universe, just like that. Oh yeah, and Erika described the experience as \"being struck by a condensed supernova\". That's metal as fuck.\c-\n" +"\cfPS: We've confirmed it (well, Misa did, directly), it is effective against gods too. Not enough to kill, but it does have some very... notable destructive effects. Pretty crazy story, right? The next day after our wedding, Misa just popped up carrying her personal Ynykron and challenged the goddess of war herself to a duel, right there and then. She ate up the whole damn blast, burned through most of her body leaving bones exposed. After that very painful experience, Misa was declared the second strongest warrior in the universe, just like that. Oh yeah, and Erika described the experience as \"being struck by a condensed supernova\". That's metal as hell.\c-\n" "\n" -"\cfAh... and I think this will be the last time we can use ours in a mission. Misa wants nothing to do with this anymore. Once it's all over we have to deliver it to her for destruction. A shame, but come on, I totally understand, this kind of weapon shouldn't exist.\c-"; +"\cfAh... and I think this will be the last time we can use ours in a mission. Misa wants nothing to do with this anymore. Once it's all over we have to deliver it to her for destruction, and I totally understand, this kind of weapon maybe shouldn't exist.\c-"; SWWM_LORETAG_YUI = "Miyamoto, Yui"; SWWM_LORETAB_YUI = "People"; SWWM_LOREREL_YUI = "Nana;Ryuji;Taro;Saya;Ashley"; @@ -4210,11 +4975,9 @@ SWWM_LORETXT_YUI = "After the concert, she excitedly lined up to get an autograph, and that's when the impossible became possible. Once in front of the \cf\"Stylish Witch of the West\"\c-, Yui nervously asked her, but what she got instead were some words that left her frozen in place: \"You're a very cute gal. Wanna go out with me?\". Suffice to say, the two are now happily married.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfghfjksdhfsjkghsdkfjsfgj I was so happy for her but also JEALOUS, YES, VERY JEALOUS. God when that happened I thought she was going to pass out, big tiddy goth gf asking her out like that out of the blue, holy fucking shit...\c-\n" +"\cfghfjksdhfsjkghsdkfjsfgj I was so happy for her, but god, when that happened I thought she was going to pass out, cool goth witch asking her out like that out of the blue, good lord...\c-\n" "\n" -"\cfSo apparently, Yu-chan is EXACTLY her type, talk about a crazy coincidence, huh? A match made in fucking heaven right there. Honestly, this stinks so much of cliche-y love-at-first-sight romance that, whew... I bet it's hard to believe such a story. Ashley-san even jokingly said that \"love at first sight\" is something that runs in her family. Pffff...\c-\n" -"\n" -"\cfDamn her, having a hot big tiddy goth gf all for herself... I really was jealous. Well, I was, until I had Ibuki, heheheheh.\c-"; +"\cfSo apparently, Yu-chan is EXACTLY her type, talk about a crazy coincidence, huh? A match made in heaven right there. Honestly, this stinks so much of cliche-y love-at-first-sight romance that, whew... I bet it's hard to believe such a story. Ashley-san even jokingly said that \"love at first sight\" is something that runs in her family. Pffff... Come on...\c-"; SWWM_LORETAG_ZANAVETH2 = "Zanaveth II"; SWWM_LORETAB_ZANAVETH2 = "People"; SWWM_LOREREL_ZANAVETH2 = "Nukuri;Devanikna;Unissix;Nekuratek;Zanaveth3;Kirin;WhiteScar;XAnimen"; @@ -4245,14 +5008,14 @@ SWWM_LORETXT_ZANAVETH2 = "\n" "In the wake of the \cfNukuri Seventh World War\c- of 2068, Zanaveth II fled with her wife and child to \cfSankaideriha\c- with the help of Nukuri witch \cfSaniuke Okusainaya\c-, old friend of her family. Two years later, after showing notable difficulties settling in, the family decided to leave Zanaveth III in Saya's care. This would last until 2077, when the \cfWhite Scar\c- incident prompted the expulsion of all Nukuri on Earth. Zanaveth III was then sent to live with her grandparents for the time being, until the end of the war in 2104, when her parents returned to Nahkami once again.\n" "\n" -"Since the formation of the \cfNukuri Unified Government\c- in 2108, Zanaveth II holds the position of \"Minister of Interspecies Relations\", thanks in part to her outstanding achievements during her time as a student of the University of Nos-Kora.\n" +"Since the formation of the \cfNahkami Unified Government\c- in 2108, Zanaveth II holds the position of \"Minister of Interspecies Relations\", thanks in part to her outstanding achievements during her time as a student of the University of Nos-Kora.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfAhhhhhh, damn. She really is the sweetest and cutest gal I've ever met, let me tell ya. And it's one hell of an achievement for me to get this alien cutie to become a complete weeb too, heh...\c-\n" "\n" -"\cfOh man, meeting her was the best christmas gift ever. And also her smol cinnamon roll of a wife, too, huhuhu... Lucky devil, getting herself a girl like that. It was hella fun to hang out with them, especially because of how excited Zana-sama was about everything around the city. She was like a little kid in a candy shop at times. ABSOLUTELY FUCKING ADORABLE.\c-\n" +"\cfOh man, meeting her was the best christmas gift ever, and also her precious lil' cinnamon roll of a wife, too. It was hella fun to hang out with them, especially because of how excited Zana-sama was about everything around the city. She was like a little kid in a candy shop at times. ABSOLUTELY ADORABLE.\c-\n" "\n" -"\cfNowadays with the White Scar bullshit, we haven't been in touch much. Misa managed to visit a couple times, but it really wasn't the same, and I could tell that she wasn't enjoying it either. Yeah, fuck all that, I hope it ends someday and I can get the two in here again.\c-"; +"\cfNowadays with the White Scar bullshit, we haven't been in touch much. Misa managed to visit a couple times, but it really wasn't the same, and I could tell that she wasn't enjoying it either. Yeah, I hope it ends someday and I can get the two in here again.\c-"; SWWM_LORETXT_ZANAVETH22 = " \cxFull Name:\c-\n" " \cf Zanaveth Nekuraku II\c-\n" @@ -4280,16 +5043,16 @@ SWWM_LORETXT_ZANAVETH22 = "\n" "In the wake of the \cfNukuri Seventh World War\c- of 2068, Zanaveth II fled with her wife and child to \cfSankaideriha\c- with the help of Nukuri witch \cfSaniuke Okusainaya\c-, old friend of her family. Two years later, after showing notable difficulties settling in, the family decided to leave Zanaveth III in Saya's care. This would last until 2077, when the \cfWhite Scar\c- incident prompted the expulsion of all Nukuri on Earth. Zanaveth III was then sent to live with her grandparents for the time being, until the end of the war in 2104, when her parents returned to Nahkami once again.\n" "\n" -"Since the formation of the \cfNukuri Unified Government\c- in 2108, Zanaveth II holds the position of \"Minister of Interspecies Relations\", thanks in part to her outstanding achievements during her time as a student of the University of Nos-Kora.\n" +"Since the formation of the \cfNahkami Unified Government\c- in 2108, Zanaveth II holds the position of \"Minister of Interspecies Relations\", thanks in part to her outstanding achievements during her time as a student of the University of Nos-Kora.\n" "\n" "As of 2171, Zanaveth II has also been involved in negotiations with the \cfAnarukon\c- people, as part of a \"multiversal expansion\" of the \cfBleaknet\c-. In addition, through a deal with \cfAkari Labs\c-, Earth will also receive its own node to the Bleaknet Nexus. This last action is part of a greater plan to restore relations between Humans and Nukuri, putting an end to the White Scar Treaty.\n" "\n" "\cxSaya's Notes:\c-\n" "\cfAhhhhhh, damn. She really is the sweetest and cutest gal I've ever met, let me tell ya. And it's one hell of an achievement for me to get this alien cutie to become a complete weeb too, heh...\c-\n" "\n" -"\cfOh man, meeting her was the best christmas gift ever. And also her smol cinnamon roll of a wife, too, huhuhu... Lucky devil, getting herself a girl like that. It was hella fun to hang out with them, especially because of how excited Zana-sama was about everything around the city. She was like a little kid in a candy shop at times. ABSOLUTELY FUCKING ADORABLE.\c-\n" +"\cfOh man, meeting her was the best christmas gift ever, and also her precious lil' cinnamon roll of a wife, too. It was hella fun to hang out with them, especially because of how excited Zana-sama was about everything around the city. She was like a little kid in a candy shop at times. ABSOLUTELY ADORABLE.\c-\n" "\n" -"\cfNow that the White Scar trash garbage is going to get all torn to shreds, I'm definitely looking forward to seeing her around once again. God, when she popped up after the wedding with Kirin-kun I almost broke down crying. I missed her so goddamn much, like... seriously.\c-"; +"\cfNow that the White Scar trash treaty is going to get all torn to shreds, I'm definitely looking forward to seeing her around once again. God, when she popped up after the wedding with Kirin-kun I almost broke down crying. I missed her so much, like... seriously.\c-"; SWWM_LORETAG_ZANAVETH3 = "Zanaveth III"; SWWM_LORETAB_ZANAVETH3 = "People"; SWWM_LOREREL_ZANAVETH3 = "Nukuri;Unissix;Zanaveth2;NosKora;Saya;WhiteScar"; @@ -4310,7 +5073,7 @@ SWWM_LORETXT_ZANAVETH3 = "\n" "\cfZanaveth Nekuraku III\c- is the sole daughter of \cfZanaveth Nekuraku II\c- and \cfMisa Azadeku Unissix\c-. She spent most of her early childhood on Earth, where she was born, though her and her family had to move back to \cfNahkami\c- once she turned four, since by law, she had to study at a Nukuri school. It was in school that the young child began to have notable issues.\n" "\n" -"Zanaveth III was a frequent victim of bullying by her classmates, due to her odd personality and mannerisms, this was further intensified due to the effects of her Yikazoroi (lit. \"Stress Burst\"), a disorder prevalent among Nukuri children (though only developed by 1 in 200), which caused the constant bullying to eventually result in violent outbursts, which then further intensified the bullying. Due to the inaction of the school staff at the time, her mother sued them, and she had to be moved to a different school across the province.\n" +"Zanaveth III was a frequent victim of bullying by her classmates, due to her odd personality and mannerisms. Due to the inaction of the school staff at the time, her mother opted to move her to a different school across the province.\n" "\n" "In the wake of the \cfNukuri Seventh World War\c-, Zanaveth III and her parents fled temporarily to \cfSankaideriha\c-, aided by a friend of the Nekuraku family. During their stay there, it would be noted that their child had difficulty settling in, citing that being there gave her \"mind shock\". A formal diagnosis noted that she was reacting negatively to the natural flux of magic within the island, and it was suggested that she stayed with someone else, outside the island. The two eventually would put Zanaveth III in the care of \cfSaya Miyamoto\c-, a friend her mother had made during her first visit to Earth.\n" "\n" @@ -4321,9 +5084,9 @@ SWWM_LORETXT_ZANAVETH3 = "During her stay on Earth, Zanaveth III has had quite a noteworthy history on social media and online forums, arising from her strange personal dialect of English and nonsensical ramblings. Saya Miyamoto has come to label her as \cfChuunibyou\c-, an old Japanese term used to denote the kind of traits she shows, such as the noted self-importance and desire to stand out, along with pretending to have special powers / possess arcane knowledge, and other fanciful sentiments.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfLil' chuuni Zana-chan. Sure, she may look cold and distant and antisocial and stuff, but that really can be blamed on how shit people have been to her. God I wish I could just beat up all of her bullies. I remember how she'd often come to me crying, all angry and frustrated after getting into trouble and I'd just sit her down on my lap and give her headpats and hugs. Ahhhhh... really made me feel like a mommy right there.\c-\n" +"\cfLil' chuuni Zana-chan. Sure, she may look cold and distant and antisocial and stuff, but that really can be blamed on how shit people have been to her. God I wish I could just beat up all of her bullies. I remember how she'd often come to me crying, all angry and frustrated after getting into trouble and I'd just sit her down on my lap and give her headpats and hugs. I'm basically like a cool auntie to her, hehe.\c-\n" "\n" -"\cfI miss that stuff, I really do. Petting that soft fluffy blue hair of hers. Wish I knew what she's up to now, that whole thing of \"world domination\" totally does sound like her thing wwwww\c-\n" +"\cfI miss that stuff, I really do. Petting that soft fluffy blue hair of hers, listening to all of her stories, how she'd show me all the cool drawings of her characters and all that. Wish I knew what she's up to now, that whole thing of \"world domination\" totally does sound like her thing wwwww\c-\n" "\n" "\cfWell, if she comes here to Earth I'd welcome my new chuuni overlord with open arms.\c-"; SWWM_LORETXT_ZANAVETH32 = @@ -4356,8 +5119,6 @@ SWWM_LORETXT_ZANAVETH32 = "During a moment of confusion immediately after the demonic invasion of 2148, Zanaveth III made her appearance on Earth, setting forth a rather nonsensical plan for world domination, which backfired due to internal conflicts with one of her \"henchmen\". Following this defeat, she managed to evade the authorities for some time, hiding at the \cfAkari Labs\c- headquarters, but had to eventually return to Nahkami.\n" "\n" "\cxSaya's Notes:\c-\n" -"\cfAh, my precious little chuuni. It was such a surprise to see her pop up at my place out of nowhere like that, gave me a good scare. But there we were once again, reunited like in the old times. She was covered in bruises and burns and her makeup was all over the place from crying, poor thing. I gave her lots of hugs and pets, all she needed. Even went and gave her a bath like when she was little, hehehe.\c-\n" +"\cfAh, my precious little chuuni. It was such a surprise to see her pop up at my place out of nowhere like that, gave me a good scare. But there we were once again, reunited like in the old times. She was covered in bruises and burns and her makeup was all over the place from crying, poor thing. I gave her lots of hugs and pets, all she needed. After a nice warm bath and a delicious meal that I put my heart and soul into, she was all smiles again, hehe.\c-\n" "\n" -"\cfOh yeah, and also that thing. Yeah, I hope she keeps that a secret from Zana-sama. I may have um... well, I \"gave her a hand\", if you know what I mean. I thought it'd help her cheer up a bit, as silly as the idea was, but she liked it, huhuhu...\c-\n" -"\n" -"\cfAnd then just like that, she left again, *sigh*\c-"; +"\cfAnd then, just like that, she left again, *sigh*\c-"; diff --git a/language.def_menu b/language.def_menu index 47522c3f4..e9ac58be0 100644 --- a/language.def_menu +++ b/language.def_menu @@ -1,36 +1,38 @@ [default] // keybinds -SWWM_KEYS = "DEMOLITIONIST Bindings"; +SWWM_KEYS = "DEMOLITIONIST Bindings (Required)"; SWWM_PRIMARYFIRE = "Primary Fire"; SWWM_SECONDARYFIRE = "Secondary Fire"; SWWM_RELOADFIRE = "Reload"; SWWM_ZOOMFIRE = "Tertiary Fire / Zoom"; SWWM_MELEE = "Melee Attack"; -SWWM_WALK = "Walk"; -SWWM_SPRINT = "Sprint"; -SWWM_TOGGLESPRINT = "Toggle Sprint"; SWWM_DASH = "Dash"; -SWWM_ITEMSENSE = "Item Sense"; SWWM_EXTRAFIRE = "Quick Grenade"; +SWWM_KBASE = "Demolitionist Menu"; +SWWM_OPTKEYS = "DEMOLITIONIST Bindings (Optional)"; +SWWM_WALK = "Walk"; +SWWM_ITEMSENSE = "Item Sense"; SWWM_GESTURE1 = "Wave"; SWWM_GESTURE2 = "Thumbs Up"; SWWM_GESTURE3 = "Victory"; SWWM_GESTURE4 = "Blow Kiss"; -SWWM_KBASE = "Demolitionist Menu"; SWWM_MINIMAPIN = "Minimap Zoom In"; SWWM_MINIMAPOUT = "Minimap Zoom Out"; // skills SWWM_SKEASY = "\cvJust Blasting\c-"; SWWM_SKNORMAL = "\cdDemolition Day\c-"; SWWM_SKHARD = "\ciMostly Harmful\c-"; +SWWM_SKHARDCONFIRM = "\ciNot your usual Ultra-Violence.\nThings will be slightly tougher.\c-\n\n\cf1.25x monster damage\n25% extra aggressiveness\c-\n\n(Press Y to go fight)"; SWWM_SKHARDCORE = "\cgPain Sandwich\c-"; -SWWM_SKHARDCORECONFIRM = "\cgThis is the Nightmare equivalent.\nPrepare to get your ass kicked.\c-\n\n\cfFast monsters\n1.5x monster health & damage\n25% extra aggressiveness\nCheats are disabled\nCoop monsters will spawn\nThe store is disabled\nCan only revive once\c-\n\n(Press Y for a challenge)"; +SWWM_SKHARDCORECONFIRM = "\cgThis is the Nightmare equivalent.\nPrepare to get your ass kicked.\c-\n\n\cf1.5x monster damage\n50% extra aggressiveness\nCheats are disabled\nCoop monsters will spawn\nThe store is disabled\nCan only revive once\c-\n\n(Press Y for a challenge)"; SWWM_SKLUNATIC = "\crDemo Must Die\c-"; -SWWM_SKLUNATICCONFIRM = "\crAre you sure you want that?\nYou're gonna have a REAL bad time.\c-\n\n\cfAll changes from \cgPain Sandwich\cf\n+\n2x speedup for all enemy actions\nEnemy projectiles will multiply\nAdditional enemies may spawn\nEnemies react instantly\nEnemies don't flinch\nInfighting is disabled\c-\n\n(Press Y to die instantly)"; +SWWM_SKLUNATICCONFIRM = "\crAre you sure you want that?\nYou're gonna have a REAL bad time.\c-\n\n\cfAll changes from \cgPain Sandwich\cf\n+\n2x monster damage\nFast monsters\nEnemy projectiles will multiply\nAdditional enemies may spawn\nEnemies react instantly\nEnemies don't flinch\nInfighting is disabled\c-\n\n(Press Y for an ass whooping)"; +SWWM_SKDRAGON = "\cmΚυνικός Δράκων\c-"; +SWWM_SKDRAGONCONFIRM = "\cmThis skill level\nwas made for him.\c-\n\n(Press Y for certain death)"; // mod menu SWWM_MTITLE = "DEMOLITIONIST Options"; SWWM_PTITLE = "Player Options"; -SWWM_VOICETYPE = "Demolitionist Voice Pack"; +SWWM_VOICETYPE = "Voice Pack"; SWWM_MUTELEVEL = "Voice Muting Level"; SWWM_MUTENONE = "None"; SWWM_MUTECOMBAT = "Combat Comments"; @@ -40,97 +42,52 @@ SWWM_MUTEALL = "Everything"; SWWM_OTITLE = "Visual Options"; SWWM_FLASH = "Screen Flash Strength"; SWWM_HUDMARGIN = "HUD Margin"; -SWWM_MAXMSG = "Max Messages"; -SWWM_MAXMSGBIG = "Max Messages (Extended)"; -SWWM_MAXPICK = "Max Pickup Messages"; -SWWM_CHATLEN = "Chat Message Duration"; -SWWM_MSGLEN = "General Message Duration"; -SWWM_PICKLEN = "Pickup Message Duration"; SWWM_ITITLE = "Item Options"; -SWWM_ARMORUSE = "Automatically Use Armor"; -SWWM_HEALTHUSE = "Automatically Use Health"; SWWM_AMMOUSE = "Automatically Use Fabricators"; -SWWM_6DOF = "6DOF Flight"; SWWM_TARGET = "Show Healthbars"; +SWWM_T_MONSTERS = "Monsters Only"; +SWWM_T_FRIENDS = "Friends Only"; SWWM_TARGETTAG = "Show Monster Names"; -SWWM_DAMNUMS = "Show Damage/Heal Numbers"; +SWWM_DAMNUMS = "Show Damage Numbers"; SWWM_SCORENUMS = "Show Score Numbers"; -SWWM_SCOREBONUS = "Show Score Bonuses"; SWWM_POIS = "Show Points of Interest"; -SWWM_EARBUSTER = "Reduce Wallbuster Loudness"; SWWM_SHADERS = "Use Screen Shaders"; SWWM_REVIVE = "Emergency Reboot System"; SWWM_REVIVECOOLDOWN = "Reboot Cooldown"; SWWM_UNLIMITED = "Unlimited"; SWWM_ONERETRY = "One Retry"; SWWM_NONE = "None"; -SWWM_INTERART = "Intermission Art"; -SWWM_NORENDER = "Yes (Fanart Only)"; -SWWM_NOFANART = "Yes (Renders Only)"; -SWWM_BALLUSE = "Lead Balls can Activate Switches"; -SWWM_BOSSBAR = "Show Boss Healthbars"; SWWM_BTITLE = "Balance Options"; -SWWM_BOSSENHANCE = "Enhance Vanilla Bosses"; -SWWM_EXTRAALERT = "Extra Noise Alerts"; -SWWM_ACCDAMAGE = "Cumulative Damage Numbers"; -SWWM_MAXTARGETDIST = "Max. Healthbar Distance"; -SWWM_MAXTARGETS = "Max. Displayed Healthbars"; -SWWM_MAXDAMNUMS = "Max. Displayed Damage/Heal Numbers"; -SWWM_MAXSCORENUMS = "Max. Displayed Score Numbers"; -SWWM_HUDSCALE = "HUD Scaling"; -SWWM_BARSCALE = "Healthbar Scaling"; -SWWM_NUMSCALE = "Number Scaling"; -SWWM_SCRSCALE = "Score Scaling"; -SWWM_POISCALE = "POI Scaling"; -SWWM_DETSCALE = "Item Sense Scaling"; -SWWM_TFITSCALE = "Tight Fit"; -SWWM_LFITSCALE = "Loose Fit"; -SWWM_BLOOD = "Enable Custom Blood"; SWWM_FUZZ = "Enable Animated Menu BG"; -SWWM_BUSTERPAUSE = "Pause on Wallbuster Reload"; -SWWM_CBTALL = "Unlimited Wallbuster Destruction"; +SWWM_CBTALL = "Unrestricted Busting"; SWWM_DOOMFALL = "Force Monster Fall Damage"; -SWWM_CAPMCRANGE = "Cap Ynykron Chain Reaction"; SWWM_RESETSCORE = "Reset Score on Pistol Start"; -SWWM_NOTRACK = "Disable Combat Trackers"; -SWWM_YNYKRONALERT = "Cap Ynykron Alert"; SWWM_MENUPAUSE = "Pause on Demolitionist Menu"; SWWM_FTITLE = "Fun Options"; SWWM_FUNTAGS = "Monster Renaming"; SWWM_OMNIBUST = "Omni-Busting"; SWWM_SUPERFUEL = "Unlimited Fuel"; SWWM_PARTYTIME = "Super Fun Party Time"; -SWWM_SIMPLEFOG = "Simplified Teleport Fog"; SWWM_BIGTAGS = "Use Large Font for Names"; -SWWM_INTERMUSIC = "Use Original Intermission Music"; SWWM_MAXBLOOD = "Blood Limit"; SWWM_MAXGIBS = "Gib Limit"; +SWWM_MAXPOOLS = "Pool Limit"; SWWM_MAXCASINGS = "Casing Limit"; SWWM_MAXDEBRIS = "Debris Limit"; SWWM_ENEMYDROPS = "Enemy Ammo/Weapon Drops"; SWWM_DROPS_NONE = "Disabled"; SWWM_DROPS_AMMO = "Ammo Only"; SWWM_DROPS_WEAPONS = "Ammo And Weapons"; -SWWM_SHOTGIB = "Buckshot can Gib"; SWWM_COLLECTANIM = "Collectible Animations"; -SWWM_SHADOWS = "Simple Shadows"; SWWM_PRECISECROSSHAIR = "Precise Crosshair"; SWWM_MCTITLE = "Mod Compatibility Options"; SWWM_LDSPOIL = "Always Show Legendaries"; SWWM_ETITLE = "Effect Options"; -SWWM_CAMHUD = "Full HUD In Cameras"; SWWM_UNCAPALERT = "Uncap Alert Range"; -SWWM_COLLECTANIMKEY = "Key Animations"; -SWWM_DAMAGETARGET = "Healthbar Visibility"; -SWWM_TARGET_ALWAYS = "Always Visible"; -SWWM_TARGET_FIRSTHIT = "After First Hit"; -SWWM_TARGET_DAMAGED = "Below Full Health"; SWWM_STRICTUNTOUCHABLE = "Untouchable Bonus Strictness"; SWWM_UNTOUCHABLE_HEALTH = "Health Decrease"; SWWM_UNTOUCHABLE_ARMOR = "Armor Decrease"; SWWM_UNTOUCHABLE_ANYHIT = "Any Hit"; -SWWM_SILENCEMAP = "Cleared Map Music"; -SWWM_SHADOWDIST = "Shadow Distance"; SWWM_SWAPWEAPONS = "Weapon Swapping"; SWWM_FORCESTATS = "Always Show Map Stats"; SWWM_STATS_DISABLED = "Disabled"; @@ -148,17 +105,15 @@ SWWM_TRAILS_MAGENTA = "Magenta"; SWWM_TRAILS_RANDOM = "Random"; SWWM_TRAILS_RAINBOW = "Rainbow"; SWWM_TRAILS_TRANS = "TRANS RIGHTS"; +SWWM_TRAILS_DOSE = "Thanks, Doc"; +SWWM_TRAILS_CACO = "FIREBLU"; +SWWM_TRAILS_XMAS = "Christmas"; SWWM_PS_FULLRESET = "Pistol Start"; SWWM_PS_RESETAMMO = "Reset Ammo"; SWWM_PS_RESETITEMS = "Reset Items"; SWWM_PS_RESETHEALTH = "Reset Health"; SWWM_PISTOLSTART_MAP = "Per-Map"; SWWM_PISTOLSTART_CLUSTER = "Per-Cluster"; -SWWM_NUMCOLOR_SCR = "Score Number Color"; -SWWM_NUMCOLOR_BONUS = "Score Bonus Color"; -SWWM_NUMCOLOR_DMG = "Damage Number Color"; -SWWM_NUMCOLOR_HP = "Health Number Color"; -SWWM_NUMCOLOR_AP = "Armor Number Color"; SWWM_DRLASKILL = "DRLA Difficulty"; SWWM_DRLASKILL_BABY = "Very Easy"; SWWM_DRLASKILL_EASY = "Easy"; @@ -168,9 +123,7 @@ SWWM_DRLASKILL_NIGHTMARE = "Nightmare"; SWWM_DRLASKILL_TECHNOPHOBIA = "Technophobia"; SWWM_DRLASKILL_ARMAGEDDON = "Armageddon"; SWWM_DRLASKILL_ADAPTIVE = "Adaptive"; -SWWM_ITEMSPARKLES = "Item Sparkles"; SWWM_SINGLEFIRST = "Single Weapons Take Priority"; -SWWM_UNIQSTATS = "Omit Repeated Map Stats"; SWWM_FILTERACHIEVEMENTS = "Achievement Filtering"; SWWM_FILTER_NONE = "No Filter"; SWWM_FILTER_OBFUSCATE = "Obfuscate"; @@ -185,147 +138,112 @@ SWWM_TIME_HOURS = "hours"; SWWM_TIME_MINUTES = "minutes"; SWWM_TIME_SECONDS = "seconds"; SWWM_ATITLE = "Achievements"; -SWWM_SELFLIGHT = "Self-Lighting"; SWWM_USETOPICKUP = "Exclusive Use To Pickup"; -SWWM_MELEEPICKUP = "Allow Item Pickup Through Melee"; SWWM_BUTTSFX = "Clapping Buttcheeks"; -SWWM_ONDEMANDAMMO = "On Demand Ammo Placement"; -SWWM_BUMP = "FOV Bump Strength"; +SWWM_BUMP = "View Bump Strength"; SWWM_ENGINE = "Engine"; -SWWM_ITEMGLOWS = "Distant Items Glow"; SWWM_NOMAGDROP = "Drop Spent Mags"; -SWWM_BARRIERUSE = "Automatically Use Coating"; SWWM_NOMAPMSG = "Map Special Messages"; SWWM_WEAPONTOOLTIPS = "Weapon Tooltips"; SWWM_RESETTOOLTIPS = "Reset Weapon Tooltips"; SWWM_CRESET = "Reset to Defaults"; SWWM_ARESET = "Wipe Achievements"; -SWWM_NOINTERTIPS = "Hide Intermission Tips"; -SWWM_DEMOSLAYER = "Demoslayer Mode"; SWWM_BEEPBOOP = "Switch Emoting"; SWWM_VOICEAMP = "Voice Amplification"; SWWM_CLEARFX = "Clear All Effects"; -SWWM_OLDLOGO = "Old Branding"; -SWWM_NODEATHEXIT = "Disable Death Exits"; -SWWM_MMTITLE = "Minimap Settings"; +SWWM_VOICELOG = "Log Player Comments"; +SWWM_SKIPSKILL = "Skip Skill Confirmation"; +SWWM_HUDALLAMMO = "Show All Ammo"; +SWWM_NOINTROEX = "Skip Intro Explosions"; +SWWM_TAGCOLOR = "Tag Color"; +SWWM_COL_0 = "Green"; +SWWM_COL_1 = "Blue"; +SWWM_COL_2 = "Cyan"; +SWWM_COL_3 = "Dragonfly"; +SWWM_COL_4 = "Gold"; +SWWM_COL_5 = "Magenta"; +SWWM_COL_6 = "Orange"; +SWWM_COL_7 = "Peach"; +SWWM_COL_8 = "Pink"; +SWWM_COL_9 = "Purple"; +SWWM_COL_10 = "Red"; +SWWM_COL_11 = "Violet"; +SWWM_COL_12 = "White"; +SWWM_COL_13 = "Yellow"; +SWWM_COL_14 = "Black"; +SWWM_COL_15 = "Rust"; +SWWM_UTITLE = "Interface Options"; +SWWM_BONKHAMMER = "Bonk Hammer"; +SWWM_FRIENDLYFIRE = "Friendly Fire"; +SWWM_FF_UNRESTRICTED = "Unrestricted"; +SWWM_FF_INCOMING = "Block Incoming"; +SWWM_FF_ALL = "Block All"; +SWWM_DAMNUMS_COLOR = "Color Damage Numbers"; +SWWM_SHOWMAPTITLE = "Animated Map Title"; +SWWM_LOBDOUBLED = "LOB Double Death"; +SWWM_BARDIST = "Healthbar Distance"; +SWWM_USEWEAPONBAR = "Alternate Weapon Selection"; +SWWM_PERCENTSTATS = "Percentual Stats"; +SWWM_TARGETVAL = "Show Health Values"; +SWWM_HUDSCALE = "HUD Scale"; +SWWM_HUDSCALE0 = "Secondary HUD Scale"; +SWWM_HUDSCALE1 = "Tertiary HUD Scale"; +SWWM_HUDSCALE2 = "Quaternary HUD Scale"; +SWWM_HS_AUTO = "Auto"; +SWWM_HS_AUTOL = "Auto Loose"; +SWWM_HS_AUTOT = "Auto Tight"; +SWWM_ALTCLEAR = "Alternate 100% FX"; +SWWM_ANALOGMOVE = "Analog Movement"; +SWWM_HOLDRELOAD = "Hold To Reload"; SWWM_MM_ENABLE = "Show Minimap"; -SWWM_MM_ROTATE = "Rotate Minimap"; -SWWM_MM_GRID = "Show Grid"; -SWWM_MM_PORTALOVERLAY = "Overlay Portals"; -SWWM_MM_MISSILES = "Show Projectiles"; -SWWM_MM_COLORSET = "Minimap Color Set"; -SWWM_OWNCOLORS = "Our Colors"; -SWWM_GZDOOMCOLORS = "GZDoom Custom"; -SWWM_DOOMCOLORS = "Vanilla Doom"; -SWWM_STRIFECOLORS = "Vanilla Strife"; -SWWM_RAVENCOLORS = "Vanilla Raven"; -SWWM_MM_RESET = "Reset to Defaults"; -SWWM_MM_BACKCOLOR = "Background"; -SWWM_MM_YOURCOLOR = "You"; -SWWM_MM_WALLCOLOR = "1-sided walls"; -SWWM_MM_FDWALLCOLOR = "2-sided walls with different floors"; -SWWM_MM_CDWALLCOLOR = "2-sided walls with different ceilings"; -SWWM_MM_EFWALLCOLOR = "2-sided walls with 3D floors"; -SWWM_MM_GRIDCOLOR = "Map grid"; -SWWM_MM_XHAIRCOLOR = "Center point"; -SWWM_MM_NOTSEENCOLOR = "Not-yet-seen walls"; -SWWM_MM_LOCKEDCOLOR = "Locked doors"; -SWWM_MM_INTRALEVELCOLOR = "Teleported to the same map"; -SWWM_MM_INTERLEVELCOLOR = "Teleporter to a different map"; -SWWM_MM_SECRETSECTORCOLOR = "Secret sector"; -SWWM_MM_UNEXPLOREDSECRETCOLOR = "Unexplored secret"; -SWWM_MM_SPECIALWALLCOLOR = "Special trigger lines"; -SWWM_MM_PORTALCOLOR = "Portal Overlays"; -SWWM_MM_TSWALLCOLOR = "Invisible 2-sided walls"; -SWWM_MM_SECRETWALLCOLOR = "Secret walls"; -SWWM_MM_THINGCOLOR = "Actors"; -SWWM_MM_THINGCOLOR_MONSTER = "Monsters"; -SWWM_MM_THINGCOLOR_NCMONSTER = "Non-counting Monsters"; -SWWM_MM_THINGCOLOR_FRIEND = "Friends"; -SWWM_MM_THINGCOLOR_ITEM = "Items"; -SWWM_MM_THINGCOLOR_CITEM = "Count Items"; -SWWM_MM_THINGCOLOR_VIPITEM = "Important Items"; -SWWM_MM_THINGCOLOR_SHOOTABLE = "Shootable Actors"; -SWWM_MM_THINGCOLOR_MISSILE = "Projectiles"; +SWWM_MM_MISSILES = "Projectiles In Minimap"; +SWWM_MM_USECANVAS = "Fixed Scale Minimap"; +SWWM_MM_STEPTRACE = "Minimap Step Tracing"; +SWWM_MM_MAXSTEPS = "Minimap Max Steps"; +SWWM_MM_MINSTEP = "Minimap Step Size"; SWWM_AC_UNLOCKED = "Unlocked: "; SWWM_AC_INCOMPLETE = "Incomplete: "; SWWM_AC_UNDISCOVERED = "Undiscovered: "; SWWM_AC_COMPLETE1 = "You've unlocked all achievements!"; SWWM_AC_COMPLETE2 = "You are a true Demolitionist!"; -TOOLTIP_SWWM_VOICETYPE = "Sets the voice pack for the player."; +SWWM_DBGTITLE = "Debug Settings"; +SWWM_DBGWARN = "WARNING: These options and commands are for experienced users only."; +SWWM_DBG_DEBUGBLAST = "Visualize Explosion Radii"; +SWWM_DBG_DEBUGVIEW = "Visualize Actor Info"; +SWWM_DBG_FIXITEMCAPS = "Recalculate Item Caps"; +TOOLTIP_SWWM_VOICETYPE = "Sets the voice for the player (If any additional voice packs are installed)."; TOOLTIP_SWWM_MUTEVOICE = "Control what gets muted, if you'd rather have a more silent protagonist."; TOOLTIP_SWWM_FLASHSTRENGTH = "Screen flashes usually happen when firing some weapons, you can lower this if these effects are harmful for you."; TOOLTIP_SWWM_HUDMARGIN = "Margin around HUD elements, in (scaled) pixels."; -TOOLTIP_SWWM_MAXSHOWN = "Maximum messages (not lines) shown in the top left part of the HUD."; -TOOLTIP_SWWM_MAXSHOWNBIG = "Like the option above, but when the chat prompt is open."; -TOOLTIP_SWWM_MAXPICKUP = "Maximum pickup messages visible at any time."; -TOOLTIP_SWWM_CHATDURATION = "Duration of chat messages in seconds."; -TOOLTIP_SWWM_MSGDURATION = "Duration of obituaries and other messages in seconds."; -TOOLTIP_SWWM_PICKDURATION = "Duration of pickup messages in seconds."; -TOOLTIP_SWWM_AUTOUSEARMOR = "When enabled, spare armors will be automatically used when needed (new armors are always automatically worn)."; -TOOLTIP_SWWM_AUTOUSEHEALTH = "When enabled, health items are automatically used if they can heal (including spares). This excludes Refreshers since they count as powerups, and always autoactivate on fatal damage."; -TOOLTIP_SWWM_AUTOUSEAMMO = "When enabled, ammo fabricators are automatically used on pickup. This excludes Tier 4 fabricators since they count as powerups."; -TOOLTIP_SWWM_FLY6DOF = "Enable 6DOF movement when flying. Disable if this feature causes any discomfort."; TOOLTIP_SWWM_TARGETER = "Show enemy/player healthbars. Disable if you'd prefer to use another mod for this, such as Target Spy."; -TOOLTIP_SWWM_TARGETTAGS = "Show enemy names above their healthbars."; -TOOLTIP_SWWM_HEALTHNUMS = "Show damage/healing numbers. Disable if you'd prefer to use another mod for this, such as DamNums."; +TOOLTIP_SWWM_TARGETTAGS = "Show names above healthbars. This will always be enforced for players, regardless of this setting."; +TOOLTIP_SWWM_DAMNUMS = "Show damage numbers. Disable if you'd prefer to use another mod for this, such as DamNums."; TOOLTIP_SWWM_SCORENUMS = "Show score numbers."; -TOOLTIP_SWWM_SCOREBONUS = "Show additional bonus strings above score numbers (e.g.: multikill counters)."; TOOLTIP_SWWM_POIS = "Show points of interest (such as key items and exits) when you have Omnisight."; -TOOLTIP_SWWM_EARBUSTER = "The Wallbuster's firing sounds may be painfully loud at times. This setting will limit the loudness to something more bearable."; TOOLTIP_SWWM_SHADERS = "Use postprocess shaders for things like powerups and the Silver Bullet scope. You can disable this if you'd prefer something lighter on the eyes."; TOOLTIP_SWWM_REVIVE = "Allows the player to get back up after dying by pressing Fire. Has a configurable cooldown."; TOOLTIP_SWWM_REVIVECOOLDOWN = "Time in seconds of downtime after using a reboot, where if you die again, you can't get back up. Set to 0 to allow unlimited reboots. Alternatively, you can also set it to only allow one reboot per map (enforced on expert difficulties)."; -TOOLTIP_SWWM_INTERART = "If enabled, displays randomly selected fanart and official renders during intermissions. There are extra options to only show each category."; -TOOLTIP_SWWM_BALLUSE = "Lead Ball projectiles can remotely activate use switches (excluding exits). Potentially OP."; -TOOLTIP_SWWM_BOSSHEALTHBARS = "Show a healthbar for vanilla boss encounters at the bottom of the screen. Just like Dark Souls™!"; -TOOLTIP_SWWM_UPGRADEBOSSES = "Buffs the health of vanilla bosses in order to make the fights more \"fair\" with this mod, and less prone to instant wins."; -TOOLTIP_SWWM_EXTRAALERT = "Allows monsters to hear things such as bouncing projectiles, ricocheting bullets, and more. Due to the recursive nature of the A_AlertMonsters function, this has a MASSIVE performance hit on very complex maps."; -TOOLTIP_SWWM_ACCDAMAGE = "Damage dealt to a target within the same tic will be grouped into a single damage number, which may make the screen less cluttered in most cases."; -TOOLTIP_SWWM_MAXTARGETDIST = "Limit the farthest distance at which healthbars for hostile targets are shown. Non-hostiles are always shown at one quarter of this distance."; -TOOLTIP_SWWM_MAXTARGETS = "Limit the amount of healthbars to display on-screen. Helps keep the screen less cluttered."; -TOOLTIP_SWWM_MAXDAMNUMS = "Limit the amount of damage/healing numbers to display on-screen. Helps keep the screen less cluttered."; -TOOLTIP_SWWM_MAXSCORENUMS = "Limit the amount of score numbers to display on-screen. Helps keep the screen less cluttered."; -TOOLTIP_SWWM_HUDSCALE = "Scaling factor of the HUD. \"Tight\" scales to fit the width of the full HUD, while \"Loose\" is recommended for ultrawide to avoid overlaps."; -TOOLTIP_SWWM_BARSCALEREL = "Relative scaling factor for targetter healthbars. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_NUMSCALEREL = "Relative scaling factor for damage/healing numbers. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_SCRSCALEREL = "Relative scaling factor for score numbers. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_POISCALEREL = "Relative scaling factor for points of interest. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_DETSCALEREL = "Relative scaling factor for sensed items. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_BLOOD = "Enable custom blood and gore effects, adapted from Soundless Mound. I'd honestly recommend Nashgore instead, it's better."; TOOLTIP_SWWM_FUZZ = "Toggling this off is recommended if you're recording/streaming as this effect can harm video quality."; -TOOLTIP_SWWM_CBTPAUSE = "The game will pause while the Wallbuster reload menu is open (only in singleplayer)."; -TOOLTIP_SWWM_CBTALL = "Allows the Wallbuster to break pretty much anything, not just doors and platforms. Note that this can break some maps, which is why this option is here."; +TOOLTIP_SWWM_CBTALL = "Allows the Wallbuster and other weapons capable of map geometry destruction to break pretty much anything, not just doors and platforms. Note that this can break some maps, which is why this option is here."; TOOLTIP_SWWM_DOOMFALL = "Makes monsters take fall damage outside of Hexen. Requires map reload if previously disabled."; -TOOLTIP_SWWM_CAPMCRANGE = "By default the Ynykron's chain reactions will propagate until no more targets can be reached. This option limits this spread, making it at least somewhat more \"balanced\"."; TOOLTIP_SWWM_RESETSCORE = "Whenever a map transition or script resets the player inventory, also reset the score back to zero."; -TOOLTIP_SWWM_NOTRACK = "Completely disables combat tracking (responsible for healthbars). This is mainly useful in maps with extreme monstercounts, where the trackers would be extremely performance-intensive. Requires map restart."; -TOOLTIP_SWWM_YNYKRONALERT = "By default the Ynykron wakes all monsters in the map. This may sometimes cause issues (and would destroy your framerate with huge monstercounts)."; -TOOLTIP_SWWM_MENUPAUSE = "In single player, the Demolitionist Menu by default will pause everything. You can disable this if you want a more Souls-like experience (or if you want to have a read while actively waiting for some looooooooong elevator or other timed event)."; +TOOLTIP_SWWM_MENUPAUSE = "Mod menus pause the game by default. You can disable this if you want an added challenge."; TOOLTIP_SWWM_FUNTAGS = "Replaces the names of various vanilla monsters with funny alternatives."; TOOLTIP_SWWM_OMNIBUST = "Allows any weapon to potentially bust walls. This is obviously broken as fuck."; TOOLTIP_SWWM_SUPERFUEL = "Your fuel never runs out."; TOOLTIP_SWWM_PARTYTIME = "When something dies, it shoots out a cloud of confetti."; -TOOLTIP_SWWM_SIMPLEFOG = "Replaces particle-based teleport fogs with simple sprites. Useful if they cause performance issues."; TOOLTIP_SWWM_BIGTAGS = "By default name labels on healthbars are shown with a small, compact font. Enabling this will use a bigger one."; -TOOLTIP_SWWM_INTERMUSIC = "If enabled, intermission screens will use the original music from the current IWAD or map pack."; TOOLTIP_SWWM_MAXBLOOD = "Caps the maximum amount of blood effects. Surpassing this limit will cause the excess to fade out."; TOOLTIP_SWWM_MAXGIBS = "Caps the maximum amount of gibs. Surpassing this limit will cause the excess to fade out."; +TOOLTIP_SWWM_MAXPOOLS = "Caps the maximum amount of blood pools. Surpassing this limit will cause the excess to fade out."; TOOLTIP_SWWM_MAXCASINGS = "Caps the maximum amount of casings and spent magazines. Surpassing this limit will cause the excess to fade out."; TOOLTIP_SWWM_MAXDEBRIS = "Caps the maximum amount of rubble from explosions and others. Surpassing this limit will cause the excess to fade out."; TOOLTIP_SWWM_ENEMYDROPS = "By default, enemies only drop ammo for a better progression. In maps with excessive amounts of enemies, it's recommended to disable this entirely."; -TOOLTIP_SWWM_SHOTGIB = "Some people don't like this for some reason, so here it is as an option."; TOOLTIP_SWWM_COLLECTANIM = "Play special first person animations when picking up collectibles."; -TOOLTIP_SWWM_SHADOWS = "Enables round shadows for various entities, combine with sprite shadows for best effect. Requires a map restart."; -TOOLTIP_SWWM_PRECISECROSSHAIR = "Projects crosshair onto the spot the weapon will actually hit, rather than staying in the center of the screen."; +TOOLTIP_SWWM_PRECISECROSSHAIR = "Projects crosshair onto the spot the weapon will actually hit, rather than staying in the center of the screen. (\"Always\" will draw the crosshair even if it's normally toggled off, useful if you regularly switch to other mods where it's recommended to be disabled)"; TOOLTIP_SWWM_LDSPOIL = "[LegenDoom] Always show the \"Legendary\" prefix on healthbar tags, rather than after the monster has transformed. Disable if you'd rather not spoil the surprise."; -TOOLTIP_SWWM_CAMHUD = "By default, when the player is looking through a camera, most HUD elements excluding messages will be hidden. Set this to keep the full HUD."; TOOLTIP_SWWM_UNCAPALERT = "If enabled, all weapons and projectiles will have infinite noise radius. May fix maps that employ vanilla-style teleport traps."; -TOOLTIP_SWWM_COLLECTANIMKEY = "Play special first person animations when picking up keys."; -TOOLTIP_SWWM_DAMAGETARGET = "Select when targetter healthbars should be shown."; TOOLTIP_SWWM_STRICTUNTOUCHABLE = "By default, the \"Untouchable\" bonus is active until you take direct damage. If you feel this isn't strict enough, you can also make it end if armor absorbs the damage, or, for extra strictness, on ANY hit, even while invulnerable."; -TOOLTIP_SWWM_SILENCEMAP = "Chooses whether you want music to stop when you 100% a map."; -TOOLTIP_SWWM_SHADOWDIST = "Maximum distance at which to show blob shadows. May help performance."; TOOLTIP_SWWM_SWAPWEAPONS = "Allow only one weapon per slot (excluding Deep Impact). Disable if you'd rather throw balance out the window."; TOOLTIP_SWWM_FORCESTATS = "Shows map statistics in the HUD even when the automap isn't open."; TOOLTIP_SWWM_FUNTRAILS = "Recolors the trails left by slot 5 weapon projectiles."; @@ -333,77 +251,57 @@ TOOLTIP_SWWM_PS_FULLRESET = "Clears your entire inventory, excluding collectible TOOLTIP_SWWM_PS_RESETAMMO = "Clears all your carried ammo, excluding what is already loaded into your weapons."; TOOLTIP_SWWM_PS_RESETITEMS = "Clears all your carried items that aren't weapons or ammo. Excludes equipped armor."; TOOLTIP_SWWM_PS_RESETHEALTH = "Sets your health back to 100%, and removes all equipped armor."; -TOOLTIP_SWWM_NUMCOLOR_SCR = "Select the color for score numbers."; -TOOLTIP_SWWM_NUMCOLOR_BONUS = "Select the color for bonuses that may accompany score numbers."; -TOOLTIP_SWWM_NUMCOLOR_DMG = "Select the color for damage numbers."; -TOOLTIP_SWWM_NUMCOLOR_HP = "Select the color for health numbers."; -TOOLTIP_SWWM_NUMCOLOR_AP = "Select the color for armor numbers."; TOOLTIP_SWWM_DRLASKILL = "[DRLA Monsters] Sets the skill level for enemy spawns."; -TOOLTIP_SWWM_ITEMSPARKLES = "Nearby items will have particles around them, as a visual aid."; TOOLTIP_SWWM_SINGLEFIRST = "For weapons that have dual-wield variants, enabling this will always select the single weapon first."; -TOOLTIP_SWWM_UNIQSTATS = "Clears duplicate map entries in the mission stats tab, useful to unclutter the list when moving back and forth in hubs."; TOOLTIP_SWWM_FILTERACHIEVEMENTS = "Filters out achievements at 0% in the Demolitionist Menu, if you'd rather avoid spoiling the fun. The 'Obfuscate' option is recommended, as it will at least leave a hint of things to be discovered."; TOOLTIP_SWWM_PLAYTIME = "Your total play time with this mod loaded."; -TOOLTIP_SWWM_SELFLIGHT = "Emit blue light from the player's face. Disable if this causes performance issues."; -TOOLTIP_SWWM_USETOPICKUP = "Prevents picking up mod items through touch, exclusively requiring a use action instead."; -TOOLTIP_SWWM_MELEEPICKUP = "Allows picking up items though melee attacks. Do note that some weapons have an extended melee range, allowing you to grab things from farther away."; +TOOLTIP_SWWM_USETOPICKUP = "Prevents picking up mod items through touch, exclusively requiring a use action instead. Note that this disables the \"dropped item magnet\" feature when holding Use."; TOOLTIP_SWWM_BUTTSFX = "The Demolitionist's buttcheeks will VERY AUDIBLY clap upon executing a successful buttslam."; -TOOLTIP_SWWM_ONDEMANDAMMO = "Only ammo for weapons that are currently available (either in the player's inventory or in the map) will spawn in the map. May cause long load times on large maps."; -TOOLTIP_SWWM_BUMPSTRENGTH = "Controls how strong the bumping of the FOV is from weapon recoil and other actions."; +TOOLTIP_SWWM_BUMPSTRENGTH = "Controls how strong the bumping of FOV and view angles is from weapon recoil and other actions."; TOOLTIP_SWWM_ENGINE = "Don't touch this."; -TOOLTIP_SWWM_ITEMGLOWS = "If enabled, items that are far away from the player will display a shimmering glow (requires a map restart to take full effect)."; TOOLTIP_SWWM_NOMAGDROP = "By default, the Demolitionist will be somewhat environmentally conscious and not leave spent magazines lying around. Enable if you prefer the added clutter."; -TOOLTIP_SWWM_AUTOUSEBARRIER = "When enabled, elemental coating will be automatically used as needed if standing on damaging floors."; TOOLTIP_SWWM_NOMAPMSG = "Toggles special animated character messages on certain maps (usually vanilla)."; TOOLTIP_SWWM_WEAPONTOOLTIPS = "Shows a summary of controls when a weapon is selected for the first time."; TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resets weapon tooltips so you can see them all over again."; TOOLTIP_EVENT_SWWMRESETCVARS = "Resets all the mod's settings to their original values."; TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Erases all your archievement progress."; -TOOLTIP_SWWM_NOINTERTIPS = "Hides intermission tips, in case you don't want to see them."; -TOOLTIP_SWWM_DEMOSLAYER = "Killed enemies may drop health and armor orbs."; TOOLTIP_SWWM_BEEPBOOP = "The Demolitionist will make cute noises whenever pressing any usable line. This might get annoying, so it's optional."; TOOLTIP_SWWM_VOICEAMP = "At their default volume, the Demolitionist's voice lines might be drowned out by in-game audio. This sets an additional amplification level so they're louder than other sounds."; TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings."; -TOOLTIP_SWWM_OLDLOGO = "For those who miss the days of SWWM GZ, you can restore the old title screen and main menu with this."; -TOOLTIP_SWWM_NODEATHEXIT = "This option completely negates the effects of death exits, if you don't like losing all your stuff."; -TOOLTIP_SWWMMINIMAPMENU = "Configure the minimap."; +TOOLTIP_SWWM_VOICELOG = "Subtitled player comments will show up in the console."; +TOOLTIP_SWWM_SKIPSKILL = "Skips confirmation of skill selection, if you get tired of seeing it every time."; +TOOLTIP_SWWM_HUDALLAMMO = "Shows all ammo types in the HUD, rather than only those for currently carried weapons."; +TOOLTIP_SWWM_NOINTROEX = "Skips the explosion sequence over the original titlepic."; +TOOLTIP_SWWM_TAGCOLOR = "Changes the color for the glowing tags on various parts of the player's body."; +TOOLTIP_SWWM_BONKHAMMER = "The Combat Hammer will make funny sounds when hitting enemies."; +TOOLTIP_SWWM_FRIENDLYFIRE = "Controls whether friendlies can deal damage to or take damage from the player."; +TOOLTIP_SWWM_DAMNUMS_COLOR = "Damage numbers will change color based on the type of damage dealt. Otherwise, default to red."; +TOOLTIP_SWWM_SHOWMAPTITLE = "Shows an animated title card when entering a map. It's just like Dark Souls!"; +TOOLTIP_SWWM_LOBDOUBLED = "[Legion of Bones] Enables \"Double Death\", which makes enemies first spawn as their vanilla variants to then turn undead on defeat."; +TOOLTIP_SWWM_BARDIST = "Distance in map units at which healthbar visibility will begin to fade. Does not affect the healthbars of other players."; +TOOLTIP_SWWM_USEWEAPONBAR = "Enables an alternate method for scrolling through weapons akin to the inventory bar. Use Primary Fire to accept, and Alternate Fire to cancel."; +TOOLTIP_SWWM_PERCENTSTATS = "Shows kills/items/secrets in the HUD as percentages, rather than counters."; +TOOLTIP_SWWM_TARGETVALS = "Healthbars will show the current and maximum health values of the target."; +TOOLTIP_SWWM_HUDSCALE = "If higher than zero, manually set the scale of the HUD. Keep in mind that HUD elements may overlap if set too high."; +TOOLTIP_SWWM_HUDSCALE0 = "If higher than zero, manually set the scale of auxiliary HUD elements (centered text, pickup messages, etc.) and Damage Numbers. Usually, this is equal to the primary HUD scale."; +TOOLTIP_SWWM_HUDSCALE1 = "If higher than zero, manually set the scale of Healthbars, Score Numbers and Item Sense. Usually, this is one less than the primary HUD scale."; +TOOLTIP_SWWM_HUDSCALE2 = "If higher than zero, manually set the scale of Interest Points. Usually, this is two less than the primary HUD scale."; +TOOLTIP_SWWM_ALTCLEAR = "Use an alternate, less visually intense effect for getting 100% completion on a level."; +TOOLTIP_SWWM_ANALOGMOVE = "For gamepad users, this is a must. For keyboard and mouse users, this should be disabled."; +TOOLTIP_SWWM_HOLDRELOAD = "If enabled, you must keep the reload button held load multiple rounds in the Wallbuster, Quadravol and Sparkster Rifle. Some people actually like it that way."; TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements."; -TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter."; -TOOLTIP_SWWM_MM_ROTATE = "Rotates the minimap view."; -TOOLTIP_SWWM_MM_GRID = "Shows a 128x128 grid on the minimap."; -TOOLTIP_SWWM_MM_PORTALOVERLAY = "Overlays regions belonging to static portals, along with things contained within them."; +TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap on the top right corner of the screen."; TOOLTIP_SWWM_MM_MISSILES = "Displays projectiles in the minimap. Can be toggled if this clutters too much."; -TOOLTIP_SWWM_MM_COLORSET = "Choose what palette to use for the minimap."; -TOOLTIP_EVENT_SWWMRESETMMCOLORS = "Resets all these colors to their original values."; -TOOLTIP_SWWM_MM_BACKCOLOR = "Color of the minimap drawing area."; -TOOLTIP_SWWM_MM_YOURCOLOR = "Color of the central arrow."; -TOOLTIP_SWWM_MM_WALLCOLOR = "Color of all one-sided lines that have nothing special."; -TOOLTIP_SWWM_MM_FDWALLCOLOR = "Color of lines where the floor height changes."; -TOOLTIP_SWWM_MM_CDWALLCOLOR = "Color of lines where the ceiling height changes."; -TOOLTIP_SWWM_MM_EFWALLCOLOR = "Color of lines where there's a 3D floor boundary."; -TOOLTIP_SWWM_MM_GRIDCOLOR = "Color of the blockmap grid."; -TOOLTIP_SWWM_MM_XHAIRCOLOR = "Color of the central map point."; -TOOLTIP_SWWM_MM_NOTSEENCOLOR = "Color of walls that Omnisight revealed, but haven't yet been seen."; -TOOLTIP_SWWM_MM_LOCKEDCOLOR = "Color for locked doors (unless they have one defined)."; -TOOLTIP_SWWM_MM_INTRALEVELCOLOR = "Color of teleporters within the map."; -TOOLTIP_SWWM_MM_INTERLEVELCOLOR = "Color of teleporters that go to another map, or exits."; -TOOLTIP_SWWM_MM_SECRETSECTORCOLOR = "Color of revealed secret sectors."; -TOOLTIP_SWWM_MM_UNEXPLOREDSECRETCOLOR = "Color of secret sectors that haven't been explored yet."; -TOOLTIP_SWWM_MM_SPECIALWALLCOLOR = "Color of special lines that the player can activate."; -TOOLTIP_SWWM_MM_PORTALCOLOR = "Color to tint map lines belonging to a static portal, also used for things contained in it."; -TOOLTIP_SWWM_MM_TSWALLCOLOR = "Color of lines with no height difference, hidden unless using cheats."; -TOOLTIP_SWWM_MM_SECRETWALLCOLOR = "Color of lines that are flagged as secret, only shown using cheats."; -TOOLTIP_SWWM_MM_THINGCOLOR = "Color for general things in the map."; -TOOLTIP_SWWM_MM_THINGCOLOR_MONSTER = "Color for hostiles."; -TOOLTIP_SWWM_MM_THINGCOLOR_NCMONSTER = "Color for hostiles that don't count towards map tally."; -TOOLTIP_SWWM_MM_THINGCOLOR_FRIEND = "Color for allies."; -TOOLTIP_SWWM_MM_THINGCOLOR_ITEM = "Color for items."; -TOOLTIP_SWWM_MM_THINGCOLOR_CITEM = "Color for items that count towards map tally."; -TOOLTIP_SWWM_MM_THINGCOLOR_VIPITEM = "Color for very important items."; -TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color for things that can be damaged."; -TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color for projectiles."; +TOOLTIP_SWWM_MM_USECANVAS = "Rather than being drawn directly on-screen, the minimap will be drawn to a texture, maintaining the same pixel density as the rest of the HUD. Due to engine quirks, this causes the map to have a one-frame delay."; +TOOLTIP_SWWM_MM_STEPTRACE = "Traces the player's path on the minimap. Note: Previously recorded data will be erased when starting a new trace."; +TOOLTIP_SWWM_MM_MAXSTEPS = "Maximum player steps to hold in memory."; +TOOLTIP_SWWM_MM_MINSTEP = "Minimum distance in map units to count as an individual step."; +TOOLTIP_SWWMDEBUGMENU = "Don't touch this unless you know what you're doing."; +TOOLTIP_SWWM_DEBUGBLAST = "Shows radii of DoExplosion calls. Damaging explosions are green, with yellow for the hotspot. Non-damaging explosions are blue, with magenta for the hotspot."; +TOOLTIP_SWWM_DEBUGVIEW = "Shows collision, orientation and velocity of actors, as well as relationship lines to their target/tracer/master pointers (gold/orange/purple respectively)."; +TOOLTIP_NETEVENT_SWWMFIXITEMCAPS = "Recomputes carried item capacities. Only needed if loading an old save before the default values were changed."; // main menu poses (do not localize) -SWWM_NMENUPOSE = "21"; +SWWM_NMENUPOSE = "25"; SWWM_MENUPOSE1 = "graphics/M_DEMOCHAN_DEEPIMPACT.png"; SWWM_MENUPOSE2 = "graphics/M_DEMOCHAN_EXPLOGUN.png"; SWWM_MENUPOSE3 = "graphics/M_DEMOCHAN_SPREADGUN.png"; @@ -414,17 +312,31 @@ SWWM_MENUPOSE7 = "graphics/M_DEMOCHAN_BIOSPARK.png"; SWWM_MENUPOSE8 = "graphics/M_DEMOCHAN_SILVERBULLET.png"; SWWM_MENUPOSE9 = "graphics/M_DEMOCHAN_CANDYGUN.png"; SWWM_MENUPOSE10 = "graphics/M_DEMOCHAN_YNYKRON.png"; -SWWM_MENUPOSE11 = "graphics/M_DEMOCHAN_PUSHER.png"; -SWWM_MENUPOSE12 = "graphics/M_DEMOCHAN_DAB.png"; -SWWM_MENUPOSE13 = "graphics/M_DEMOCHAN_DOUBLEV.png"; -SWWM_MENUPOSE14 = "graphics/M_DEMOCHAN_HEALTH.png"; -SWWM_MENUPOSE15 = "graphics/M_DEMOCHAN_LOVE.png"; -SWWM_MENUPOSE16 = "graphics/M_DEMOCHAN_RAGEKIT.png"; -SWWM_MENUPOSE17 = "graphics/M_DEMOCHAN_SANDWICH.png"; -SWWM_MENUPOSE18 = "graphics/M_DEMOCHAN_SHELLS.png"; -SWWM_MENUPOSE19 = "graphics/M_DEMOCHAN_SKULL.png"; -SWWM_MENUPOSE20 = "graphics/M_DEMOCHAN_THONK.png"; -SWWM_MENUPOSE21 = "graphics/M_DEMOCHAN_THUMBUP.png"; +SWWM_MENUPOSE11 = "graphics/M_DEMOCHAN_DAB.png"; +SWWM_MENUPOSE12 = "graphics/M_DEMOCHAN_DOUBLEV.png"; +SWWM_MENUPOSE13 = "graphics/M_DEMOCHAN_HEALTH.png"; +SWWM_MENUPOSE14 = "graphics/M_DEMOCHAN_LOVE.png"; +SWWM_MENUPOSE15 = "graphics/M_DEMOCHAN_RAGEKIT.png"; +SWWM_MENUPOSE16 = "graphics/M_DEMOCHAN_SANDWICH.png"; +SWWM_MENUPOSE17 = "graphics/M_DEMOCHAN_SHELLS.png"; +SWWM_MENUPOSE18 = "graphics/M_DEMOCHAN_SKULL.png"; +SWWM_MENUPOSE19 = "graphics/M_DEMOCHAN_THONK.png"; +SWWM_MENUPOSE20 = "graphics/M_DEMOCHAN_THUMBUP.png"; +SWWM_MENUPOSE21 = "graphics/M_DEMOCHAN_HAMMER.png"; +SWWM_MENUPOSE22 = "graphics/M_DEMOCHAN_PLASMA.png"; +//SWWM_MENUPOSE23 = "graphics/M_DEMOCHAN_REVOLVER.png"; +//SWWM_MENUPOSE24 = "graphics/M_DEMOCHAN_SMG.png"; +SWWM_MENUPOSE23 = "graphics/M_DEMOCHAN_SHEEN.png"; // temp (25) +SWWM_MENUPOSE24 = "graphics/M_DEMOCHAN_QUADRAVOL.png"; // temp (26) +//SWWM_MENUPOSE27 = "graphics/M_DEMOCHAN_SPARKSTER.png"; +//SWWM_MENUPOSE28 = "graphics/M_DEMOCHAN_RAYKHOM.png"; +SWWM_MENUPOSE25 = "graphics/M_DEMOCHAN_MISTER.png"; // temp (29) +//SWWM_MENUPOSE30 = "graphics/M_DEMOCHAN_RAFANKOS.png"; +//SWWM_MENUPOSE31 = "graphics/M_DEMOCHAN_TRANSRIGHTS.png"; +//SWWM_MENUPOSE32 = "graphics/M_DEMOCHAN_PLUSH.png"; +//SWWM_MENUPOSE33 = "graphics/M_DEMOCHAN_MOTH.png"; +//SWWM_MENUPOSE34 = "graphics/M_DEMOCHAN_SAYA.png"; +//SWWM_MENUPOSE35 = "graphics/M_DEMOCHAN_MENACING.png"; // credits SWWM_MCREDS = "DEMOLITIONIST Credits"; SWWM_CSTITLE = "UnSX Side Story: Demolitionist"; @@ -432,43 +344,28 @@ SWWM_CSTITLE2 = "Cute Robutt Whomst Love To Explode Demons"; SWWM_CLEAD = "Development Lead:"; SWWM_CDEV2 = "Self-proclaimed ZScript Magician"; SWWM_CASSETS = "Additional Assets:"; -SWWM_ASSBARONS = "XDeath Sprites for Hell Nobles"; -SWWM_ASSOTHERS = "XDeath Sprites for Demon, Cacodemon, Revenant, Archvile"; -SWWM_ASSEXTRA = "XDeath Sprites for Arachnotron, Mancubus"; SWWM_ASSKEEN = "Less Mean-Spirited Keen Replacement"; SWWM_CMUSIC = "Music Tracks Used:"; SWWM_CVOICE = "Voices:"; -SWWM_CFANART = "Intermission Fanart:"; -SWWM_CPATRON = "Patreon Backers:"; +SWWM_CPATRON = "Patreon & Ko-fi Backers:"; SWWM_CTHANK = "Special Thanks:"; -SWWM_CMAB2 = "For being an amazing friend who believes in me, and for inspiring me to keep working on what I love. I'm really really happy to have met you."; -SWWM_CDRAGON2 = "For being a good pet dragon who cares about me."; +SWWM_CDRAGON2 = "For being a good pet dragon who cares about me. No matter what, our love will stay strong."; +SWWM_CVYOLETTE2 = "For your love and support during my hardest times. I can't thank you enough."; SWWM_CLUCY2 = "For the Tewi font, which I've used for many many years. I hope you're doing well, wherever you are."; -SWWM_CGUTA2 = "For the Gutamatics library, and for helping me with learning ZScript."; SWWM_CMIKO2 = "For the VERY useful ZPolyobject library."; SWWM_CKEKS2 = "For assistance with exception handling code, and also for being such a cool Touhou nerd."; SWWM_CZN2 = "For slope alignment code, and to Nash also for being a cool smart cactus dude."; -SWWM_CVAL2 = "For the custom Nashgore footprints, and for being a good friend and cute bun."; -SWWM_CKATHY2 = "For being one of my best friends ever and for collaborating with me on lore and character development. May your world flourish too."; SWWM_CBOUNCY2 = "For lots of help with testing and for letting me rant about lore for hours and being there to listen along. You're a wonderful friend."; +SWWM_CSPY2 = "For your deep love towards the mod and its characters and lore. Oh, and a bit of help with SFX stuff, too. Bless you, friend."; SWWM_CSLEDGE2 = "For being great buds, not just for me but for all of us. Your support and encouragement are something I value a lot, and I can't thank you enough."; -SWWM_CSPY2 = "For being so enthusiastic about everything in this mod, and for being the cute little brother I never had."; -SWWM_CINSP1 = "Combine Kegan, HyperUltra64, TerminusEst13, Yholl and friends"; +SWWM_CINSP1 = "Combine Kegan, HyperUltra64, Yholl and friends"; SWWM_CINSP2 = "For inspiration and also for being really cool people. Bless all of you, keep being amazing."; -SWWM_CCOMMUNITY1 = "All my amazing friends from the Doom community"; -SWWM_CCOMMUNITY2 = "For helping me keep this whole thing rolling, and for all the time we spend together. Here's to many more years of Dooming, stay awesome, everyone!"; -SWWM_CDEVS1 = "Randi, Graf, Rachael and the rest of the GZDoom dev team"; -SWWM_CDEVS2 = "For your work on the source port that brought back my faith in modding. I don't care what others think, you're great."; +SWWM_CCOMMUNITY1 = "All my amazing friends"; +SWWM_CCOMMUNITY2 = "For helping me keep this whole thing rolling, and for all the time we spend together. Stay awesome, everyone!"; SWWM_CYOU1 = "You"; SWWM_CYOU2 = "For playing this mod, thank you so much."; SWWM_CLOCAL = "Localization:"; -SWWM_LOCDE = "German"; SWWM_LOCES = "Spanish"; -SWWM_LOCFR = "French"; -SWWM_LOCIT = "Italian"; -SWWM_LOCJP = "Japanese"; -SWWM_LOCPL = "Polish"; -SWWM_LOCRU = "Russian"; // knowledge base SWWM_COMINGSOON = "(coming soon)"; SWWM_MISSTAB = "Mission"; @@ -512,6 +409,7 @@ SWWM_STATHISCORE = "Highest Score: "; SWWM_INVTAB = "Inventory"; SWWM_INVFAIL = "You can't use this right now."; SWWM_INVNDROP = "You can't drop this."; +SWWM_INVNAMMO = "This weapon is out of ammo."; SWWM_NOINV = "(inventory is empty)"; SWWM_KEYTAB = "Keychain"; SWWM_NOKEYS = "(no keys found)"; @@ -519,10 +417,10 @@ SWWM_KBASETAB = "Library"; SWWM_STORETAB = "Store"; SWWM_STOREFULL = "You can't hold more of that."; SWWM_STOREMUNS = "You don't have enough money."; -SWWM_NOSTORE = "(no items left to buy)"; +SWWM_STORESWAP = "You already own a weapon in the same slot: %s."; +SWWM_NOSTORE = "(store is not available)"; +SWWM_NOSTOREBUY = "(no items left to buy)"; SWWM_NOSTORESELL = "(no items to be sold)"; -SWWM_CHATTAB = "Messages"; -SWWM_NOCHAT = "(message history is empty)"; SWWM_SECRETTAB = "Secret"; SWWM_TODEMO = "\cx\"Fight for justice, Demo-chan! You can do it!\"\c- \cg♥\c- Ibuki & Saya"; SWWM_CUTIECLUB = "\cx\"Never lose hope, Demo-chan! We're all with you!\"\c- \cg♥\c- Cutie Club"; @@ -560,28 +458,28 @@ SWWM_HELPTXT = "\cxDemolitionist Menu - Basic Controls\c-\n" "\cx———————————————————————————————————\c-\n" "\n" -"\cf%s:\c- Open/Close Demolitionist menu\n" -"\cfPageUp/PageDown:\c- Switch tabs\n" +"\cfEsc:\c- Close Demolitionist menu\n" +"\cfPageUp, PageDown:\c- Switch tabs\n" "\cfF1:\c- Open/Close help tab\n" "\n" "\cxMission Tab - Controls\c-\n" "\cx——————————————————————\c-\n" "\n" -"\cfUp/Down:\c- Scroll\n" -"\cfLeft/Right:\c- Switch through entries\n" +"\cfUp, Down:\c- Scroll\n" +"\cfLeft, Right:\c- Switch through entries\n" "\n" "\cxStats Tab - Controls\c-\n" "\cx————————————————————\c-\n" "\n" -"\cfUp/Down:\c- Scroll\n" -"\cfLeft/Right:\c- Switch section\n" +"\cfUp, Down:\c- Scroll\n" +"\cfLeft, Right:\c- Switch section\n" "\n" "\cxInventory Tab - Controls\c-\n" "\cx————————————————————————\c-\n" "\n" "\cfArrow Keys:\c- Navigate\n" -"\cfEnter/Left Click:\c- Use selected item\n" -"\cfBackspace/Right Click:\c- Drop selected item\n" +"\cfEnter, Left Click:\c- Use selected item\n" +"\cfBackspace, Right Click:\c- Drop selected item\n" "\n" "\cxKeychain Tab - Controls\c-\n" "\cx———————————————————————\c-\n" @@ -591,48 +489,29 @@ SWWM_HELPTXT = "\cxLibrary Tab - Controls (Main)\c-\n" "\cx—————————————————————————————\c-\n" "\n" -"\cfUp/Down:\c- Scroll through entries\n" -"\cfLeft/Right:\c- Switch category\n" -"\cfEnter/Left Click:\c- Open entry\n" +"\cfUp, Down:\c- Scroll through entries\n" +"\cfLeft, Right:\c- Switch category\n" +"\cfEnter, Left Click:\c- Open entry\n" "\n" "\cxLibrary Tab - Controls (Entry Open)\c-\n" "\cx———————————————————————————————————\c-\n" "\n" -"\cfUp/Down:\c- Scroll\n" +"\cfUp, Down:\c- Scroll\n" "\cfBackspace:\c- Return to entry list\n" "\n" "\cxStore Tab - Controls (Buying)\c-\n" "\cx—————————————————————————————\c-\n" "\n" "\cfArrow Keys:\c- Navigate\n" -"\cfEnter/Left Click:\c- Buy\n" -"\cfBackspace/Right Click:\c- Switch to selling\n" +"\cfEnter, Left Click:\c- Buy\n" +"\cfBackspace, Right Click:\c- Switch to selling\n" "\n" "\cxStore Tab - Controls (Selling)\c-\n" "\cx——————————————————————————————\c-\n" "\n" "\cfArrow Keys:\c- Navigate\n" -"\cfEnter/Left Click:\c- Sell\n" -"\cfBackspace/Right Click:\c- Switch to buying\n" -"\n" -"\cxMessages Tab - Controls\c-\n" -"\cx———————————————————————\c-\n" -"\n" -"\cfUp/Down:\c- Scroll"; -// Wallbuster menu -SWWM_BUSTERTITLE = "Wallbuster - Easy Reload Menu"; -SWWM_BUSTERKEYS = -"\cfLeft/Right:\c- Select Ammo Type\n" -"\cfDown:\c- Add Ammo\n" -"\cfUp:\c- Remove Ammo\n" -"\cfPage Down:\c- Add 5 Ammo\n" -"\cfPage Up:\c- Remove 5 Ammo\n" -"\cfTab:\c- Shuffle Ammo\n" -"\cfBackspace:\c- Clear Ammo\n" -"\cfEnter:\c- Initiate Reload\n" -"\cfEnter (if empty):\c- Full Reload\n" -"\cfDelete:\c- Full Unload\n" -"\cfEsc:\c- Cancel Reload\n"; +"\cfEnter, Left Click:\c- Sell\n" +"\cfBackspace, Right Click:\c- Switch to buying"; // Help menu SWWM_HELP_STORY = "The Story So Far"; SWWM_HELP_STORYDOOM = @@ -678,9 +557,9 @@ SWWM_HELP_DEMOTXT = "Go forth, \cfDemolitionist\c-, be the hero this world needs."; SWWM_HELP_ARSE1 = "Demolitionist's Arsenal (Part 1: Weapons)"; SWWM_HELP_ARSE1TXT = -"Because this wouldn't be what it is without some fine weaponry, let's get to that here. There are quite a lot of weapons in this mod (eleven in total), ranging from slightly powerful to obscenely powerful. Truly, the arsenal of the \cfDemolitionist\c- is one of the most destructive one could find, composed of several weapons contributed by associates and acquaintances of \cfAkari Labs\c-.\n" +"Because this wouldn't be what it is without some fine weaponry, let's get to that here. There are quite a lot of weapons in this mod (twenty in total), ranging from slightly powerful to obscenely powerful. Truly, the arsenal of the \cfDemolitionist\c- is one of the most destructive one could find, composed of several weapons contributed by associates and acquaintances of \cfAkari Labs\c-.\n" "\n" -"The \cfDemolitionist\c- is well trained in each and every one of these guns, and they will be very efficiently operated, so you don't have to worry about long reload times, or pesky recoil climb making it hard to aim straight.\n" +"The \cfDemolitionist\c- is well trained in each and every one of these guns, and they will be very efficiently operated, so you don't have to worry about long reload times, or pesky recoil climb making it hard to aim straight. What you DO have to take care of, however, is your loadout. As there are so many weapons to pick from, you'll find that save for the melee slot, you can only carry one of each, requiring you to swap around what you already have.\n" "\n" "Do note that all weapons have at least two fire modes, in some cases maybe three. Plus a quick melee, too! Always remember to keep all the important keys bound, there's a lot to use in here."; SWWM_HELP_ARSE2 = "Demolitionist's Arsenal (Part 2: Items)"; @@ -708,13 +587,13 @@ SWWM_HELP_TECH = "Movement Techniques"; SWWM_HELP_TECHTXT = "Despite your massive weight (around 500 kilograms), you are quite mobile. The jets on your back allow some extra height to your jumps, and when dashing, you can easily cover long distances. In addition, your boots allow you to redirect some of the force of impact towards boosting subsequent jumps, a technique some call \"bunny hopping\". All of this will be really helpful, as you can imagine, but do note that you can easily bump into walls if going too fast.\n" "\n" -"Apart from all that, the \cfDemolitionist\c- is also quite capable of performing wall jumps, or even climbing. Truly, nothing can stop you (unless the map author disabled jumping). Not even the steepest slope can stand a chance (as long as you don't let yourself fall).\n" +"Apart from all that, the \cfDemolitionist\c- is also quite capable of performing wall jumps, or even climbing. Truly, nothing can stop you. Not even the steepest slope can stand a chance (as long as you don't let yourself fall).\n" "\n" "Oh, and don't forget that your weight is also a fairly good weapon, too. Not only can you easily ram through lesser enemies while dashing, but should you fall at a considerable speed, you may create a potent shockwave pushing enemies away and crushing anything under your feet.\n"; SWWM_HELP_TIPS = "Additional Tips"; SWWM_HELP_TIPSTXT = "Do note that you can also activate doors and switches by punching or dashing into them. The option is there, should you really want to, and are feeling especially intense.\n" "\n" -"Another thing to know is that items from this mod happen to have rather non-standard sized collision boxes, which might cause certain issues where you just can't pick them up by walking into them. In cases like these... just use your hands, obviously. You can press Use to pick up whatever you're looking at, as long as it's an item from this mod.\n" +"Another thing to know is that items from this mod can not only be picked up by walking over them, but also by using your hands. That is, you can press Use to pick them up, as long as your arms can reach. Furthermore, should you find a lot of scattered item drops in the battlefield, you can hold Use to pull them towards you.\n" "\n" "Last but not least, did you know you can pet certain enemies to turn them into allies? I don't think I need to tell you which ones you can pet. They're red, round and shaped like friends. You can also pet the dog, should a map you're playing employ MBF helper dogs (this tends to be rare, though)."; diff --git a/language.def_mission b/language.def_mission index 769444596..2b3b502b2 100644 --- a/language.def_mission +++ b/language.def_mission @@ -17,7 +17,7 @@ SWWM_MISSION_DOOM1 = SWWM_MISSION_DOOM2 = "Alright, \cfDemo-chan\c-, you're in the \cfDeimos Base\c- now. As you may see, everything's also pretty fucked over here, though since \cfThat Guy\c- last passed through, the demons probably have repopulated the place, as you could see back in \cfPhobos\c-.\n" "\n" -"So, about that ambush back there, you were out for a while, but thankfully they didn't have their way with you (oh god oh fuck). The unfortunate news however come from that DAMN NERD from \cfCyrus Enterprises\c-. Apparently he decided to empty out your entire \cfHammerspace Container\c- because this counts as \"a new episode\" or some dumb shit??? You're off to a fresh start, I guess. I'm powerless when it comes to these decisions, so fuck it.\n" +"So, about that ambush back there, you were out for a while, but thankfully they didn't start dismantling you or anything, you're still in one piece (phew, thank god). The unfortunate news however come from that DAMN NERD from \cfCyrus Enterprises\c-. Apparently he decided to empty out your entire \cfHammerspace Container\c- because this counts as \"a new episode\" or some dumb shit??? You're off to a fresh start, I guess. I'm powerless when it comes to these decisions, so fuck it.\n" "\n" "If what \cfCytho-sama\c- said is correct, there's a structure here known as the \cfTower of Babel\c- through which you can reach the surface of \cfHell\c-. He doesn't know the exact details though, so you'll be on your own there.\n" "\n" @@ -59,6 +59,17 @@ SWWM_MISSION_SIGIL = "\n" "Saya out."; SWWM_MISSION_DOOM25 = "$$SWWM_MISSION_SIGIL"; +SWWM_MISSION_SIGIL2 = +"We should have known that there would be an ambush on the other side, of course.\n" +"\n" +"This is definitely \cfEarth\c-, but damn, the demonic influence has fucked it all over beyond recognition. We gotta get out of here and fast.\n" +"\n" +"\cfCytho-sama\c- said that this is a good chance to deal some big damage, at least. The guys stationed here are some of the toughest around, and securing the area would definitely be a big help for others who are fighting.\n" +"\n" +"Still can't get over this whole sidetracking nonsense, though. I hope we get to the \cfUAC\c- starport in time, it's where the real battle is taking place, you know...\n" +"\n" +"Saya out."; +SWWM_MISSION_DOOM26 = "$$SWWM_MISSION_SIGIL2"; SWWM_MISSION_DOOM5 = "Welcome to your first mission, \cfDemolitionist\c-. I'll be very direct here, the situation is very fucked. Things don't look good at all. Those fucking \cfUAC\c- idiots have done their worst and now we're paying for it. FUCK... THE... UAC... Seriously. If that damn brat \cfKelliher\c- didn't have me blocked I'd be sending him all sorts of shit right now, you can't even begin to imagine HOW fucking pissed I am...\n" "\n" @@ -92,7 +103,7 @@ SWWM_MISSION_DOOM5_FROMDOOM1 = "\n" "Saya out."; SWWM_MISSION_DOOM6 = -"Alright, \cfDemo-chan\c-, mission update. Those fucks have hostages. Namely, a HUGE bunch of people, I'm reading five digits here. These people are the unlucky ones who couldn't evacuate in time, being caught right at the start of it all. And the shelters are all locked away through some demonic mechanism. Those fuckers are probably keeping them alive to \"use\" them later, and we're not going to give them the chance to take those lives.\n" +"Alright, \cfDemo-chan\c-, mission update. Those fucks have hostages. Namely, a HUGE bunch of people, I'm reading five digits here. These people are the unlucky ones who couldn't evacuate in time, being caught right at the start of it all. And the shelters are all locked away through some demonic mechanism. Those fuckers are probably keeping them alive to \"use\" them later, and we're not going to give them the chance to make emergency food out of them.\n" "\n" "So, first of all, you're going to see a lot more resistance, and some new faces too. This whole stretch is heavily fortified, but that won't be an issue, oh no, not for you. We're saving those people, all of them.\n" "\n" @@ -154,13 +165,35 @@ SWWM_MISSION_DOOM11 = "\n" "As you can figure, we had to hand over all your shit at the end of the previous mission, so you're starting fresh. That damn nerd's eyes lit up when we talked this over, and he wouldn't shut up about \"bonus episodes\" or whatever. I swear I'm just so tired now of all this...\n" "\n" -"Anyway... That's all I gotta say. You know what to do, and let me tell ya that THIS time, we'll definitely have our nice date when it's over. You really gotta get more enjoyment out of your maidbot frame.\n" +"Anyway... That's all I gotta say. You know what to do, and let me tell ya that THIS time, we'll definitely have our nice date when it's over. You really gotta get more enjoyment out of your maidbot frame, there are more gastronomic wonders in this world besides mom's tuna pie.\n" "\n" "I'm gonna hit the sack now, though, it's REALLY late, so you're on your own (not entirely, I'll be napping on the sofa next to your other body).\n" "\n" "Blast 'em to bits, \cfDemolitionist\c-!\n" "\n" "Saya out."; +SWWM_MISSION_DOOM28 = +"Welcome to this unexpected side mission, \cfDemo-chan\c-. So this is going to come out of nowhere, I know, we thought that the \cfUAC\c- would finally learn their lesson while they were cleaning up their own mess. Not so sure now.\n" +"\n" +"You're getting deployed to \cf\"New Eden\"\c-, an outpost around the northern coast of Hell's mainland. Thought to be abandoned, sure, but turns out a certain group of people, certain fucking desperate sore loser generals I will not name, have seized it due to one very critical mistake: The goddamn UAC put a shitload of nukes in there.\n" +"\n" +"Now, these idiots truly did sink to a new low. They had that shit in there, at the ready for launch, \"just in case\" something happened. Well, something sure did happen, because now the \cfArchdemon Generals\c-, no joke, have access to weapons of mass destruction, and as soon as they figure out how to use them, we're screwed.\n" +"\n" +"So, what's the plan? First, you need to hitch a ride through a portal, and then you'll be back in the ol' land of fire and brimstone. From there, you need to blast your way through the UAC facilities, watching out for any resistance in your path. There's not really any info on the layout of this place, so we either find those nukes by chance, by process of elimination, or you happen to locate an access point where you can fetch a detailed map of the whole installation.\n" +"\n" +"Time for some more action, \cfDemolitionist\c-!\n" +"\n" +"Saya out."; +SWWM_MISSION_DOOM29 = +"OK, so that was embarrassing. Yeah, the access point was obviously rigged, you walked right into a trap, and GUESS WHO also decided that, right after that happened, he had to dispose of your entire inventory. Yup.\n" +"\n" +"Now, the info we got just in the nick of time was very useful, with one caveat: The missiles are not on \cfNew Eden\c-, but somewhere else entirely. But guess what? I've tracked where those wacky winged weirdos took you, and they actually dropped you off not far from the missile silo.\n" +"\n" +"Of course, once you get there, expect the place to be very, very heavily guarded. But for now, you do need to get out of that cage and... Find more guns, again. *sigh*\n" +"\n" +"I really wish you the best of luck, \cfDemo\c-.\n" +"\n" +"Saya out."; SWWM_MISSION_EVITERNITY1 = "Welcome to this side mission, \cfDemolitionist\c-. So shit has hit the fan once again, after we thought all got fixed up, and guess WHO is behind it: The motherfucking \cfUAC\c-!\n" "\n" @@ -245,6 +278,84 @@ SWWM_MISSION_EVITERNITY8 = "Fuck 'em up, \cfDemo-chan\c-, and bust some walls while you're at it.\n" "\n" "Saya out."; +SWWM_MISSION_EVITERNITYII1 = +"Your video signal has dropped on our end, but I hope you can still read this.\n" +"\n" +"Something's gone very wrong up there. Some of our contacts report that \cf\"the capital is falling apart\"\c-, and I don't like the sound of that in the slightest. Still, just stay where you are until we get this technical issue solved.\n" +"\n" +"I'll contact you again as soon as possible, \cfDemo-chan\c-.\n" +"\n" +"Saya out."; +SWWM_MISSION_EVITERNITYII2 = +"Yup, this definitely doesn't look good. The locals say the skies are \"crying\", and yup, it's raining up a storm for sure. Never had such gloomy weather in ages, as far as I've been told.\n" +"\n" +"What happened back there... Triggered something very bad. Something that probably can't be undone. And that \cf\"Astral Cacodemon\"\c- you saw before... Yeah. At first I thought those things were some experiment of the faculty, but the fact they're still prowling around, that's a bad omen right there.\n" +"\n" +"I need to make some calls. We're not getting the whole picture here.\n" +"\n" +"Saya out."; +SWWM_MISSION_EVITERNITYII3 = +"\cfDemo\c-, I genuinely have no idea where you are. There is no data on wherever you got sent to.\n" +"\n" +"I'm still trying to gather some information, at least, so we're not entirely blind here.\n" +"\n" +"Got a lead, though, insider information, from the \cfFaculty of Illuminated Nobodies\c- no less. Yup, the ones who started this whole shitshow. At last, we'll get to the bottom of this mess.\n" +"\n" +"In the meantime, try to find a way out of there. Wherever you are, it definitely isn't a friendly place, there are \cfArdent Energy\c- readings popping up, so that means there's demons.\n" +"\n" +"Kick ass, \cfDemo-chan\c-.\n" +"\n" +"Saya out."; +SWWM_MISSION_EVITERNITYII4 = +"Alright, here's the details.\n" +"\n" +"Took some effort to get her to talk, but there she is, our \"informant\". She introduced herself as \cf\"Nona Nobody\"\c-, a very blatantly fake name, but whatever, she was apparently once a high-ranking member of the \cfFaculty of Illuminated Nobodies\c-, and even had close contact with \cfUruk'Anth\c- himself. Yeah, the guy who pretended to be God with a capital G.\n" +"\n" +"The stuff she's telling me, oh boy. The Faculty really was into some shit, cosmic horror shit, no less. They made a deal with some entity from another universe or some shit, and that's where these weird, mutated demons are coming from, among other things. Magical augmentation, dark powers, clairvoyance, god knows what else... They swore loyalty to some lovecraftian deity or some shit, and now that you beat the crap outta them, the deal is broken and it's beginning to \"take it back\".\n" +"\n" +"If we don't get to the bottom of this, apparently, it could spell doom for not just the \cfXevetha\c- homeworld, but also every single other place that the Faculty has touched. This, as you may expect, includes \cfEarth\c-.\n" +"\n" +"To say this is bad news is an understatement. I don't know yet what exactly \"It\" is, but you will definitely find a way to kick its eldritch ass and save the world, for sure.\n" +"\n" +"Saya out."; +SWWM_MISSION_EVITERNITYII5 = +"This isn't \cfEarth\c-... Looks like you're back in \cfUrkai\c-. Well, that's one hell of a detour, then.\n" +"\n" +"You know, I was thinking back to what we just saw before. Really fucked that they were collaborating all along, the \cfUAC\c- and the faculty. Yeah, ever since they dismantled \cfSUSAN\c-, should have seen that coming from a mile away.\n" +"\n" +"Anyway, onwards on this mission, \cfDemo\c-, we're getting there.\n" +"\n" +"Saya out."; +SWWM_MISSION_EVITERNITYII6 = +"Boy, oh boy... First of all, we're back in \cfSiberia\c-, and this is definitely another abandoned faculty installation, all frozen over and shit. But of course, now it's riddled with hellspawn... And astral spawn, as well.\n" +"\n" +"Incoming lore dump, by the way.\n" +"\n" +"So you know how the faculty is directly responsible for the birth of most of demonkind, right? Tens of thousands of years ago, when they first settled on our planet... Yeah, well, things get interesting when you ask how exactly they figured out that whole thing of the \"demonization\" process, to mutate humans into demons, and all. Turns out that this was some shit that the director, the old dude, kept a secret from everybody. The inner workings of that tech were definitely not of \cfXevetha\c- design, there was some deep magic shit going on, and no one was to ask questions about it.\n" +"\n" +"Well, now we finally know. It's obvious, he got it from THAT thing. And that thing... HER... Is the very origin of the madness that brought the faculty to exist in the first place. \cfUruk'Anth\c- accidentally discovered her, and saw that a pact with her would allow him and his disciples to reach godhood. This was after the \cfNedoshiaan incident\c-, y'know, when the tyrant god that he was working for was assassinated...\n" +"\n" +"OK, need to catch my breath here, this is a lot I've been writing, and there's still more.\n" +"\n" +"It's no secret that there are other universes, I've learned as much from the gods themselves. But it's generally rare for outside entities to just \"seep\" into our world, unless they are, well, OTHER gods.\n" +"\n" +"If that thing is really a goddess, she might be entirely immortal, and that's no good, \cfDemo-chan\c-.\n" +"\n" +"Still, you can definitely kick her ass until she can no longer stand up. Gods can bleed, after all, and you'll make her feel sorry for fucking with OUR world.\n" +"\n" +"Saya out."; +SWWM_MISSION_EVITERNITYII7 = +"Wherever you are, it's so far away we can't pinpoint it in any known starmap. Honestly, I'm surprised. With places like \cfHell\c-, that was still within our own universe, but somehow, everything still works just fine while you're... Outside.\n" +"\n" +"Props to the engineers behind the \cfBleaknet\c-, I guess, this whole system can somehow keep us in touch even between completely separate worlds. At least this way we can also guess that most fundamental laws are still the same, so there's that.\n" +"\n" +"Honestly, this whole thing of being in an entirely other universe... It's fascinating. I hope we get some spicy data on this place, heheh...\n" +"\n" +"Anyway, me nerding out aside, this is the supposed \cf\"Astral Realm\"\c-, the home of \cf\"The Origin\"\c-, as the folks from the faculty had known to name her. I assume there's a \"normal\" atmosphere in here, since your fuel supply is still being fed hydrogen from the environment... Other than that, yeah, complete alien territory.\n" +"\n" +"Be ready for anything, \cfDemo-chan\c-, you're in the final boss's lair now.\n" +"\n" +"Saya out."; SWWM_MISSION_HERETIC1 = "Welcome, \cfDemolitionist\c-, to this very special mission. While things have calmed down over here, we've been able to resume our work on the \cfAkari Project\c-. You know, the important one I've wanted to work on all my life. So far it's been a success, and you'll be the first to take part in the exploration of other worlds. We've scoured the multiverse for all sorts of interesting places, and this one in particular caught our eye. It is called \cfParthoris\c-, it's a realm of magic and elves and stuff, I dig it. Anyway, I hope the ride wasn't too bumpy, we haven't fine-tuned that yet.\n" "\n" @@ -252,9 +363,9 @@ SWWM_MISSION_HERETIC1 = "\n" "Your objective is a man called \cfD'Sparil\c-. He's a member of a triad of crazy-ass evil sorcerers called the \cfSerpent Riders\c-. Guy's tall, wears red robes, and talks backwards, can't miss him. He commands armies of undead and shit, nothing you can't deal with, I'm sure. First of all, you'll need to make contact with the Sidhe survivors, see if you can gather any more information on where to go and what to do. Maybe once it's all over we can probably form an alliance or something, and hopefully they won't be pissed that we use wooden furniture.\n" "\n" -"I'm sure, that once you come back you'll want to immediately transfer over to your \cfMaidbot\c- frame, so I'll be working on a couple \"extensions\" there to make things more... \"fun\", if you catch my drift. Oh, you'll have loads of fun... loads... heheh...\n" +"I'm sure, that once you come back you'll want to immediately transfer over to your \cfMaidbot\c- frame, so I'm going to prepare something for when you come back. It'll be something nice and sweet, but it's going to be a surprise, okay? I can't give you any more details, hehe...\n" "\n" -"So... uh... horniness aside, I'm sorry that we couldn't give you all your stuff. I'm taking the blame this time, I think I screwed something up with the deployment and it got scattered all over the place. It's possible that the locals may have moved it around so... good luck finding it all.\n" +"So... uh... that aside, I'm sorry that we couldn't give you all your stuff. I'm taking the blame this time, I think I screwed something up with the deployment and it got scattered all over the place. It's possible that the locals may have moved it around so... good luck finding it all.\n" "\n" "Go get 'em, \cfDemo-chan\c-. Kick some wizard ass.\n" "\n" @@ -264,7 +375,7 @@ SWWM_MISSION_HERETIC2 = "\n" "Did I seriously just write that?\n" "\n" -"Anyway, let's get on with it, once this place is wiped out we should get closer to that \cfD'Sparil\c- guy. I just uh... hope it will still be a bit of a challenge, because your \"enhancements\" are taking me some time, you know. Yeah, this is going to be fun, huhu.\n" +"Anyway, let's get on with it, once this place is wiped out we should get closer to that \cfD'Sparil\c- guy. I just uh... hope it will still be a bit of a challenge, because your present is taking me a bit longer than I expected. Yeah uh... Maybe I should have gone with something simpler.\n" "\n" "I'm not going to tell you what it is, silly. Focus on your mission, \cfDemo-chan\c-. You'll see it when it's done.\n" "\n" @@ -278,19 +389,19 @@ SWWM_MISSION_HERETIC3 = "\n" "Saya out."; SWWM_MISSION_HERETIC4 = -"OK, what the hell is going on? You're not back in \cfParthoris\c-, so where IS this place? Whoever's behind this is going to get their ass kicked, fucking ruining my plans to give you a nice and juicy...\n" +"OK, what the hell is going on? You're not back in \cfParthoris\c-, so where IS this place? Whoever's behind this is going to get their ass kicked, fucking ruining my plans to bake you a delicious-\n" "\n" "*cough*\n" "\n" "I overheard the \cfSidhe\c- mentioning that the other \cfSerpent Riders\c- may have taken notice of what you've done, and have decided to interfere. And so, the result of that is that your course has been changed to wherever the fuck this is. Yeah, that's a fucking dick move right there, fuck them. They can go choke on a metal cactus.\n" "\n" -"So then, change of plans, I guess. You've gotta mow down more stupid monsters to get out of here. Like you often say, it's time to get crazy, kill 'em all, \cfDemo-chan\c-!\n" +"So then, change of plans, I guess. You've gotta mow down more stupid monsters to get out of here. Like \cfIbuki\c- often says, it's time to get crazy, kill 'em all, \cfDemo-chan\c-!\n" "\n" "Saya out."; SWWM_MISSION_HERETIC5 = "It's not over, not yet. You still can't come back home. This is seriously pissing me off, you have no idea. I'd love to go there myself to kick their sorry asses for wasting my time. But I think it's better to watch you much more efficiently turn them into chunky salsa for their crimes.\n" "\n" -"I sure hope this is the last of their worlds you're pulled into. I WANT to try this out already, I've had so much extra time to perfect it and make it nice... you just need to come back safe and sound, that's all that matters.\n" +"I sure hope this is the last of their worlds you're pulled into. I WANT you to try this already, I've had so much extra time to perfect it and make it nice... you just need to come back safe and sound, that's all that matters.\n" "\n" "Come on, \cfDemo-chan\c-, don't leave me hanging here, your girlfriend needs you!\n" "\n" @@ -302,11 +413,11 @@ SWWM_MISSION_HEXEN1 = "\n" "Welcome to \cfCronos\c-. This place used to be nice, until that guy came in stomping around with his armies. Like the wizard dude, this fucker even got some of the locals on their side. Your target is called \cfKorax\c-, like the raven, huh, y'know, \"Corvus Corax\"... ah, forget it.\n" "\n" -"So the thing is, I'd like you to step in and take him out. Do NOT listen to anything he says, as I bet he'll probably try to get to you too. He's big, ugly, and doesn't look much like the type who'd be capable of riding a serpent, so maybe... he's the one who gets a riding... oh wait no, that doesn't sound very... UGH... baaaaad mental image, holy fuck. Where are \cfIbuki\c-'s tiddies when you need 'em, they're the best at making me forget about everything.\n" +"So the thing is, I'd like you to step in and take him out. Do NOT listen to anything he says, as I bet he'll probably try to get to you too. He's big, ugly, and doesn't ride a serpent. No, seriously, only the other guy does, for whatever reason, the others just... Go on foot. No idea why they have that name, then.\n" "\n" -"I know you'll want a nice reward for this so, here's what I have in mind. How about some more of that \"fun\" we had last time, hm? You, me... and I wonder... if \cfKirin-kun\c- also... hnnn... and then... *heavy breathing*\n" +"I know you'll want a nice reward for this so, here's what I have in mind. I heard that \cfKirin-kun\c- needs to do some drawing practice, so I got this crazy idea that he could do portraits of all of us. I bet he'll capture that cuteness of yours perfectly. And if not, well, we can always punish him with some tickles and make him try again. Practice makes perfect, after all, right?\n" "\n" -"OK, wow... phew. Saya, focus. No hornyposting on mission statements, not again. Anyway, bad-ish news??? We got a mixup on the ammo stuff and instead we got these weirdass \cf\"Fabricator\"\c- things from that nerdo. They do provide ammo, at least. As usual, your equipment will be strategically placed here and there, since we couldn't just... send you in with ALL of it at once, again. I don't know why nerdo boy insists on doing things like this. Does he really want everything to be so... ugh... videogamey?\n" +"Anyway, bad-ish news??? We got a mixup on the ammo stuff and instead we got these weirdass \cf\"Fabricator\"\c- things from that nerdo. They do provide ammo, at least. As usual, your equipment will be strategically placed here and there, since we couldn't just... send you in with ALL of it at once, again. I don't know why nerdo boy insists on doing things like this. Does he really want everything to be so... ugh... videogamey?\n" "\n" "Well, whatever. Go, \cfDemo-chan\c-, show 'em what you got!\n" "\n" @@ -320,7 +431,7 @@ SWWM_MISSION_HEXEN2 = "\n" "OK, yeah, sidetracking aside, more puzzling puzzles await us, I bet. I do wonder who came up with all this nonsense, just... pure bullshit. God, imagine something this obtuse in a game, it would be SO BAD it'd cease to exist before being released.\n" "\n" -"And with that, I wish you luck and lots of patience, \cfDemo-chan\c-. Keep it up and we'll do more than just cuddle when you come back.\n" +"And with that, I wish you luck and lots of patience, \cfDemo-chan\c-. Keep it up!\n" "\n" "Saya out."; SWWM_MISSION_HEXEN3 = @@ -336,8 +447,6 @@ SWWM_MISSION_HEXEN3 = "\n" "...\n" "\n" -"HAHAHA \"SEMINARY\" GET IT? TOTALLY MAKES YOU THINK OF SEMEN DOESN'T IT???\n" -"\n" "Saya out."; SWWM_MISSION_HEXEN4 = "That's a bigass tower. Think you can mow it down? Do a bit of... y'know, \"demolition work\"? Heh, of course not, that'd just cause more trouble than it's worth. And it wouldn't be fun to simply blow everything up effortlessly. The real fun is in going around blasting, hell yeah.\n" @@ -464,6 +573,20 @@ E5TEXT = "supposed to be doing. Let's just hope the\n" "UAC's boy didn't win the race by now, or I\n" "won't hear the end of it from those idiots.\""; +E6TEXT = +"Making your way to the UAC starport truly\n" +"proved to be a bumpy ride, having found\n" +"yourself amidst a demon encampment within\n" +"the ruins of a city ravaged beyond repair.\n" +"\n" +"With another set of cybernetic\n" +"lieutenants turned to mush by your\n" +"weaponry, you keep pushing onward.\n" +"\n" +"Saya has not interjected over comms, but\n" +"you can guess that she's growing even more\n" +"restless from all this sidetracking you\n" +"were put through..."; C1TEXT = "As you make your way through the demon\n" "infested starport, you begin to notice\n" @@ -555,6 +678,10 @@ NERVETEXT = "you stretch your joints, happily clap to\n" "yourself, and set forth on your long trip\n" "back home. That reward better be good..."; +INTERTEXT_ID1_E1 = +""; +INTERTEXT_ID1_E2 = +""; HE1TEXT = "Once you've beaten up those crazy\n" "laughing heads, you can now see the\n" @@ -596,7 +723,7 @@ HE3TEXT = "\n" "With that guy out of the way, you can\n" "now return home and see what Saya is\n" -"planning to \"reward\" you with...\n" +"planning to reward you with...\n" "\n" "However, that plan might change..."; HE4TEXT = @@ -621,10 +748,10 @@ HE5TEXT = "matter anymore. You can keep going\n" "forever, if you have to.\n" "\n" -"The desire to know what Saya has\n" -"planned for you back home gives you\n" -"the strength to push forward no\n" -"matter what.\n" +"You can easily deduce that Saya's\n" +"present is a home-made cake. And with\n" +"such a delicious reward in mind, you\n" +"have the strength to push on forward.\n" "\n" "\"I'll go through hell again if I have to,\n" "I'll do anything, even the impossible,\n" diff --git a/language.def_voice b/language.def_voice index 287263ba6..67b0f936c 100644 --- a/language.def_voice +++ b/language.def_voice @@ -1,7 +1,7 @@ [default] //// DEFAULT VOICE - Vyolette // voice name -SWWM_VOICENAME_DEFAULT = "Original"; +SWWM_VOICENAME_DEFAULT = "Demo-chan"; // new weapon received (generic, unspecified weapons) SWWM_SUBS_DEFAULT_NGETWEAPON = "13"; SWWM_SUBS_DEFAULT_GETWEAPON1 = "Neat."; @@ -18,13 +18,14 @@ SWWM_SUBS_DEFAULT_GETWEAPON11 = "I'll be taking this."; SWWM_SUBS_DEFAULT_GETWEAPON12 = "New gun, more fun."; SWWM_SUBS_DEFAULT_GETWEAPON13 = "You're coming with me."; // locked door -SWWM_SUBS_DEFAULT_NLOCKED = "6"; +SWWM_SUBS_DEFAULT_NLOCKED = "7"; SWWM_SUBS_DEFAULT_LOCKED1 = "Welp, it's locked."; SWWM_SUBS_DEFAULT_LOCKED2 = "Gonna need a key for this."; SWWM_SUBS_DEFAULT_LOCKED3 = "Gotta find a key."; SWWM_SUBS_DEFAULT_LOCKED4 = "Needs a key."; SWWM_SUBS_DEFAULT_LOCKED5 = "God I hate keyhunts..."; SWWM_SUBS_DEFAULT_LOCKED6 = "Goddamn keys..."; +SWWM_SUBS_DEFAULT_LOCKED7 = "What fresh bullfuckery is this?"; // jammed door SWWM_SUBS_DEFAULT_NJAMMED = "7"; SWWM_SUBS_DEFAULT_JAMMED1 = "Stuck."; @@ -51,7 +52,7 @@ SWWM_SUBS_DEFAULT_PUZZSUCC4 = "Good."; SWWM_SUBS_DEFAULT_PUZZSUCC5 = "Yeah, that's it."; SWWM_SUBS_DEFAULT_PUZZSUCC6 = "Abracadabra."; // first enemy encounter (20 seconds cooldown since all enemies dead) -SWWM_SUBS_DEFAULT_NFIGHTSTART = "21"; +SWWM_SUBS_DEFAULT_NFIGHTSTART = "22"; SWWM_SUBS_DEFAULT_FIGHTSTART1 = "Oh boy here we go."; SWWM_SUBS_DEFAULT_FIGHTSTART2 = "Alright, let's party."; SWWM_SUBS_DEFAULT_FIGHTSTART3 = "Oh, more baddies."; @@ -73,8 +74,9 @@ SWWM_SUBS_DEFAULT_FIGHTSTART18 = "Oh, finally, something to shoot."; SWWM_SUBS_DEFAULT_FIGHTSTART19 = "It's showtime!"; SWWM_SUBS_DEFAULT_FIGHTSTART20 = "Oh, you're dead."; SWWM_SUBS_DEFAULT_FIGHTSTART21 = "Good. Was wondering when you'd show up."; +SWWM_SUBS_DEFAULT_FIGHTSTART22 = "Ah shit, here we go again."; // played at map start -SWWM_SUBS_DEFAULT_NMAPSTART = "14"; +SWWM_SUBS_DEFAULT_NMAPSTART = "17"; SWWM_SUBS_DEFAULT_MAPSTART1 = "Ugh, fuck... This place reeks. I'd vomit if I could."; SWWM_SUBS_DEFAULT_MAPSTART2 = "Alright, let's get to work."; SWWM_SUBS_DEFAULT_MAPSTART3 = "Mission... start?"; @@ -89,6 +91,9 @@ SWWM_SUBS_DEFAULT_MAPSTART11 = "Well, let's not keep everyone waiting."; SWWM_SUBS_DEFAULT_MAPSTART12 = "I'll do my best."; SWWM_SUBS_DEFAULT_MAPSTART13 = "Let me say this: Anything I find, I keep."; SWWM_SUBS_DEFAULT_MAPSTART14 = "I'm here to chew bubblegum and kick ass... And I don't have a mouth."; +SWWM_SUBS_DEFAULT_MAPSTART15 = "Why did I move here? I guess it was the weather."; +SWWM_SUBS_DEFAULT_MAPSTART16 = "Ugh I hope there's no frickin' platforming..."; +SWWM_SUBS_DEFAULT_MAPSTART17 = "Now I can tell this is gonna be an interesting day."; // every time a secret is found SWWM_SUBS_DEFAULT_NFINDSECRET = "13"; SWWM_SUBS_DEFAULT_FINDSECRET1 = "Oh, that was a secret?"; @@ -105,7 +110,7 @@ SWWM_SUBS_DEFAULT_FINDSECRET11 = "That was good, wasn't it?"; SWWM_SUBS_DEFAULT_FINDSECRET12 = "Lucky me, huh?"; SWWM_SUBS_DEFAULT_FINDSECRET13 = "Well, I mean, I'm pretty good at this."; // frag taunts -SWWM_SUBS_DEFAULT_NSCOREKILL = "25"; +SWWM_SUBS_DEFAULT_NSCOREKILL = "28"; SWWM_SUBS_DEFAULT_SCOREKILL1 = "Get out."; SWWM_SUBS_DEFAULT_SCOREKILL2 = "One done."; SWWM_SUBS_DEFAULT_SCOREKILL3 = "Bye bye."; @@ -131,6 +136,9 @@ SWWM_SUBS_DEFAULT_SCOREKILL22 = "You're welcome."; SWWM_SUBS_DEFAULT_SCOREKILL23 = "Out of my way."; SWWM_SUBS_DEFAULT_SCOREKILL24 = "Here's your special serving of DIE."; SWWM_SUBS_DEFAULT_SCOREKILL25 = "Want more?"; +SWWM_SUBS_DEFAULT_SCOREKILL26 = "Get rekt."; +SWWM_SUBS_DEFAULT_SCOREKILL27 = "Now that's what I call a BRUH moment."; +SWWM_SUBS_DEFAULT_SCOREKILL28 = "Ded!"; // oopsies SWWM_SUBS_DEFAULT_NFRIENDKILL = "4"; SWWM_SUBS_DEFAULT_FRIENDKILL1 = "Oh no! No no no no I'm sorry oh my god!"; @@ -138,7 +146,7 @@ SWWM_SUBS_DEFAULT_FRIENDKILL2 = "Oh my god! I'm so sorry..."; SWWM_SUBS_DEFAULT_FRIENDKILL3 = "Oh... no..."; SWWM_SUBS_DEFAULT_FRIENDKILL4 = "Oh my god no no no please..."; // getting hurt by monsters -SWWM_SUBS_DEFAULT_NGETHIT = "19"; +SWWM_SUBS_DEFAULT_NGETHIT = "20"; SWWM_SUBS_DEFAULT_GETHIT1 = "Ow! Fuck you!"; SWWM_SUBS_DEFAULT_GETHIT2 = "*sigh*"; SWWM_SUBS_DEFAULT_GETHIT3 = "Yeah, lucky hit. Now die."; @@ -158,6 +166,7 @@ SWWM_SUBS_DEFAULT_GETHIT16 = "You are already dead..."; SWWM_SUBS_DEFAULT_GETHIT17 = "You're not getting out of here alive."; SWWM_SUBS_DEFAULT_GETHIT18 = "Okay, I get it."; SWWM_SUBS_DEFAULT_GETHIT19 = "Ugh! Just... fuck... off..."; +SWWM_SUBS_DEFAULT_GETHIT20 = "You sussy baka...!"; // getting hurt by friendlies SWWM_SUBS_DEFAULT_NFRIENDHIT = "7"; SWWM_SUBS_DEFAULT_FRIENDHIT1 = "Hey what was that about?"; @@ -273,7 +282,6 @@ SWWM_SUBS_DEFAULT_KORAXMASTERS9 = "Urgh... Please just shut the fuck up."; /// Extra lines that wouldn't be possible without original voice acting // per-weapon lines (alternative) SWWM_SUBS_DEFAULT_GETDEEPIMPACT = "I'll huff and I'll puff... and I'll blow your house in."; -SWWM_SUBS_DEFAULT_GETPUSHERWEAPON = "Anyone wants their cavities removed?"; SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN1 = "Ah, my trusty old friend."; SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN2 = "Twice the knee-exploding power."; SWWM_SUBS_DEFAULT_GETSPREADGUN = "Look at this pocket shotty."; @@ -289,7 +297,7 @@ SWWM_SUBS_DEFAULT_GETPLASMABLAST1 = "Blastin' plasma."; SWWM_SUBS_DEFAULT_GETPLASMABLAST2 = "Now we're talking. Double the fun."; SWWM_SUBS_DEFAULT_GETPUNTZERBETA = "Gonna drill some sense into y'all."; // said with a cheap cowboy accent SWWM_SUBS_DEFAULT_GETPUNTZERGAMMA = "Full auto and... fuller auto? Oh my..."; -SWWM_SUBS_DEFAULT_GETHEAVYMAHSHEENGUN = "Heavy Machine Gun!"; +SWWM_SUBS_DEFAULT_GETHEAVYMAHSHEENGUN = "Now I have a machine gun. Hohohoh~"; SWWM_SUBS_DEFAULT_GETQUADRAVOL = "For the flames of the Ardent Cross spread throughout the horde..."; SWWM_SUBS_DEFAULT_GETNEWSPARKSTER = "I like big plasma weapons."; SWWM_SUBS_DEFAULT_GETMORTALRIFLE = "Welcome aboard, Mister."; @@ -321,6 +329,7 @@ SWWM_SUBS_DEFAULT_NUTATCOGET = "NUTATCO?"; SWWM_SUBS_DEFAULT_FRISPYGET = "*giggle* Sayacchi's top snack."; SWWM_SUBS_DEFAULT_SAYAGET = "Squishy bean..."; SWWM_SUBS_DEFAULT_MOTHGET = "Ah, Sayacchi's waifu."; +SWWM_SUBS_DEFAULT_MUGGET = "Mussy..."; SWWM_SUBS_DEFAULT_DEMOGET = "Hehehe, my own plushie."; SWWM_SUBS_DEFAULT_PEACHGET = "Wait, this is... *snicker*"; SWWM_SUBS_DEFAULT_BREADGET = "Soft, squishy buns..."; @@ -357,6 +366,23 @@ SWWM_SUBS_DEFAULT_ARCHANGELUS5 = "Aw, look at you with your fancy lil' wings and SWWM_SUBS_DEFAULT_ARCHANGELUS6 = "Yeah yeah, it's always the same with you people."; SWWM_SUBS_DEFAULT_ARCHANGELUS7 = "Boy, you people really go hard on the pretend-god bullshit, huh?"; SWWM_SUBS_DEFAULT_ARCHANGELUS8 = "I think I'm going to have to beat some sense into you."; +// Eviternity II boss +SWWM_SUBS_DEFAULT_NORIGIN1 = "5"; +SWWM_SUBS_DEFAULT_ORIGIN11 = "What the heck are you?"; +SWWM_SUBS_DEFAULT_ORIGIN12 = "Whatever that is, it's pissed."; +SWWM_SUBS_DEFAULT_ORIGIN13 = "You're the one behind all of this, huh?"; +SWWM_SUBS_DEFAULT_ORIGIN14 = "It's final boss time..."; +SWWM_SUBS_DEFAULT_NORIGIN2 = "4"; +SWWM_SUBS_DEFAULT_ORIGIN21 = "Oh great, it's back."; +SWWM_SUBS_DEFAULT_ORIGIN22 = "Back for more? Bring it on!"; +SWWM_SUBS_DEFAULT_ORIGIN23 = "Alright, round two."; +SWWM_SUBS_DEFAULT_ORIGIN24 = "I'm not done with you."; +SWWM_SUBS_DEFAULT_NORIGIN3 = "5"; +SWWM_SUBS_DEFAULT_ORIGIN31 = "What the hell?"; +SWWM_SUBS_DEFAULT_ORIGIN32 = "Good lord it's still alive!"; +SWWM_SUBS_DEFAULT_ORIGIN33 = "Damn it, just die already!"; +SWWM_SUBS_DEFAULT_ORIGIN34 = "Round... Three?"; +SWWM_SUBS_DEFAULT_ORIGIN35 = "Welp, third time's the charm."; // "hself ruoy erutrot lliw I" (supposedly) SWWM_SUBS_DEFAULT_NDSPARILA = "3"; SWWM_SUBS_DEFAULT_DSPARILA1 = "Oh look at you, little red riding hood."; @@ -366,37 +392,15 @@ SWWM_SUBS_DEFAULT_NDSPARILB = "3"; SWWM_SUBS_DEFAULT_DSPARILB1 = "What's with you people and backwards speech?"; SWWM_SUBS_DEFAULT_DSPARILB2 = "Sorry, could you repeat that?"; SWWM_SUBS_DEFAULT_DSPARILB3 = ".oot sdrawkcab klat nac I"; // record this line normally then just reverse it, really -// (H-Doom compat) Demon girl petting -SWWM_SUBS_DEFAULT_NPETHDOOM = "9"; -SWWM_SUBS_DEFAULT_PETHDOOM1 = "That's a good girl~"; -SWWM_SUBS_DEFAULT_PETHDOOM2 = "Hey, there's no need to fight."; -SWWM_SUBS_DEFAULT_PETHDOOM3 = "I'm not going to hurt you."; -SWWM_SUBS_DEFAULT_PETHDOOM4 = "There, there..."; -SWWM_SUBS_DEFAULT_PETHDOOM5 = "It's okay, I'm your friend."; -SWWM_SUBS_DEFAULT_PETHDOOM6 = "Calm down, everything's fine."; -SWWM_SUBS_DEFAULT_PETHDOOM7 = "You're so cute~"; -SWWM_SUBS_DEFAULT_PETHDOOM8 = "Hehe... Your hair is so fluffy~"; -SWWM_SUBS_DEFAULT_PETHDOOM9 = "Good girl... Good girl..."; -// (H-Doom compat) Aroused demon girl petting -SWWM_SUBS_DEFAULT_NPETHDOOMFINISH = "9"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH1 = "You really like being pet, don't you?"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH2 = "There, it's all good..."; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH3 = "Getting off to my headpats, are you now?"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH4 = "I can do this much, at least."; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH5 = "It feels good, doesn't it?"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH6 = "A gentle touch is all you need~"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH7 = "Call me later, okay?"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH8 = "My, my... You're blushing so much..."; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH9 = "Hehe... You're welcome, anytime."; // White Lady petting -SWWM_SUBS_DEFAULT_NPETMASHIRO = "7"; -SWWM_SUBS_DEFAULT_PETMASHIRO1 = "Fluffy moth..."; -SWWM_SUBS_DEFAULT_PETMASHIRO2 = "You like my lamp, don't you?"; -SWWM_SUBS_DEFAULT_PETMASHIRO3 = "You're so pretty~"; -SWWM_SUBS_DEFAULT_PETMASHIRO4 = "Thanks for your help, miss."; -SWWM_SUBS_DEFAULT_PETMASHIRO5 = "There... good girl..."; -SWWM_SUBS_DEFAULT_PETMASHIRO6 = "Hehe... cute moth girl~"; -SWWM_SUBS_DEFAULT_PETMASHIRO7 = "Good friend~"; +SWWM_SUBS_DEFAULT_NPETANDIRA = "7"; +SWWM_SUBS_DEFAULT_PETANDIRA1 = "Fluffy moth..."; +SWWM_SUBS_DEFAULT_PETANDIRA2 = "You like my lamp, don't you?"; +SWWM_SUBS_DEFAULT_PETANDIRA3 = "You're so pretty~"; +SWWM_SUBS_DEFAULT_PETANDIRA4 = "Thanks for your help, miss."; +SWWM_SUBS_DEFAULT_PETANDIRA5 = "There... good girl..."; +SWWM_SUBS_DEFAULT_PETANDIRA6 = "Hehe... cute moth girl~"; +SWWM_SUBS_DEFAULT_PETANDIRA7 = "Good friend~"; // Button pushing SWWM_SUBS_DEFAULT_NBUTTONPUSH = "3"; SWWM_SUBS_DEFAULT_BUTTONPUSH1 = "Beep."; @@ -404,258 +408,99 @@ SWWM_SUBS_DEFAULT_BUTTONPUSH2 = "Boop."; SWWM_SUBS_DEFAULT_BUTTONPUSH3 = "Bop."; // Fall "scream" SWWM_SUBS_DEFAULT_FALLING = "Wheeeeeeeeeee~!"; -//// LEGACY VOICE - Fallout 4 JP Sole Survivor -SWWM_VOICENAME_LEGACY = "Classic"; -// new weapon received -SWWM_SUBS_LEGACY_NGETWEAPON = "13"; -SWWM_SUBS_LEGACY_GETWEAPON1 = "Not bad... Not bad at all..."; -SWWM_SUBS_LEGACY_GETWEAPON2 = "Good find..."; -SWWM_SUBS_LEGACY_GETWEAPON3 = "Mine now..."; -SWWM_SUBS_LEGACY_GETWEAPON4 = "Nice..."; -SWWM_SUBS_LEGACY_GETWEAPON5 = "Bingo..."; -SWWM_SUBS_LEGACY_GETWEAPON6 = "Hell yeah..."; -SWWM_SUBS_LEGACY_GETWEAPON7 = "Excellent..."; -SWWM_SUBS_LEGACY_GETWEAPON8 = "Yes..."; -SWWM_SUBS_LEGACY_GETWEAPON9 = "There we go..."; -SWWM_SUBS_LEGACY_GETWEAPON10 = "Perfect..."; -SWWM_SUBS_LEGACY_GETWEAPON11 = "I like it..."; -SWWM_SUBS_LEGACY_GETWEAPON12 = "That looks nice..."; -SWWM_SUBS_LEGACY_GETWEAPON13 = "It's probably worth a fortune..."; -// locked door -SWWM_SUBS_LEGACY_NLOCKED = "4"; -SWWM_SUBS_LEGACY_LOCKED1 = "Don't have the key."; -SWWM_SUBS_LEGACY_LOCKED2 = "Only opens with a key."; -SWWM_SUBS_LEGACY_LOCKED3 = "Would need the key."; -SWWM_SUBS_LEGACY_LOCKED4 = "Locked tight."; -// jammed door (strife) -SWWM_SUBS_LEGACY_NJAMMED = "4"; -SWWM_SUBS_LEGACY_JAMMED1 = "It's stuck."; -SWWM_SUBS_LEGACY_JAMMED2 = "No use."; -SWWM_SUBS_LEGACY_JAMMED3 = "Jammed."; -SWWM_SUBS_LEGACY_JAMMED4 = "Useless."; -// puzzle item failure -SWWM_SUBS_LEGACY_NPUZZFAIL = "6"; -SWWM_SUBS_LEGACY_PUZZFAIL1 = "Damn."; -SWWM_SUBS_LEGACY_PUZZFAIL2 = "Damn it."; -SWWM_SUBS_LEGACY_PUZZFAIL3 = "No good."; -SWWM_SUBS_LEGACY_PUZZFAIL4 = "Nope."; -SWWM_SUBS_LEGACY_PUZZFAIL5 = "Uh uh."; -SWWM_SUBS_LEGACY_PUZZFAIL6 = "Hmmm."; -// puzzle item success -SWWM_SUBS_LEGACY_NPUZZSUCC = "5"; -SWWM_SUBS_LEGACY_PUZZSUCC1 = "Nice."; -SWWM_SUBS_LEGACY_PUZZSUCC2 = "That's it."; -SWWM_SUBS_LEGACY_PUZZSUCC3 = "Got it."; -SWWM_SUBS_LEGACY_PUZZSUCC4 = "Yes."; -SWWM_SUBS_LEGACY_PUZZSUCC5 = "Sweet."; -// first enemy encounter (20 seconds cooldown since all enemies dead) -SWWM_SUBS_LEGACY_NFIGHTSTART = "21"; -SWWM_SUBS_LEGACY_FIGHTSTART1 = "Here we go again."; -SWWM_SUBS_LEGACY_FIGHTSTART2 = "Let's get this show on the road."; -SWWM_SUBS_LEGACY_FIGHTSTART3 = "Time to die."; -SWWM_SUBS_LEGACY_FIGHTSTART4 = "Bring it on."; -SWWM_SUBS_LEGACY_FIGHTSTART5 = "You are all going to die."; -SWWM_SUBS_LEGACY_FIGHTSTART6 = "I've been spoiling for a fight."; -SWWM_SUBS_LEGACY_FIGHTSTART7 = "Let's do this."; -SWWM_SUBS_LEGACY_FIGHTSTART8 = "Time to get crazy! Kill 'em all!"; -SWWM_SUBS_LEGACY_FIGHTSTART9 = "You really don't want to start a fight with me."; -SWWM_SUBS_LEGACY_FIGHTSTART10 = "Let's get on with it."; -SWWM_SUBS_LEGACY_FIGHTSTART11 = "Kill!"; -SWWM_SUBS_LEGACY_FIGHTSTART12 = "This won't be hard."; -SWWM_SUBS_LEGACY_FIGHTSTART13 = "Let's do it."; -SWWM_SUBS_LEGACY_FIGHTSTART14 = "Let's do this."; -SWWM_SUBS_LEGACY_FIGHTSTART15 = "Let's just get this over with."; -SWWM_SUBS_LEGACY_FIGHTSTART16 = "Well, this will be an interesting challenge."; -SWWM_SUBS_LEGACY_FIGHTSTART17 = "Okay. Let's get started."; -SWWM_SUBS_LEGACY_FIGHTSTART18 = "Oh, this is just what I need right now..."; -SWWM_SUBS_LEGACY_FIGHTSTART19 = "Time to put on a show."; -SWWM_SUBS_LEGACY_FIGHTSTART20 = "I'm putting you down."; -SWWM_SUBS_LEGACY_FIGHTSTART21 = "Oh, good. Here I was afraid I'd have nothing to do."; -// played at map start -SWWM_SUBS_LEGACY_NMAPSTART = "14"; -SWWM_SUBS_LEGACY_MAPSTART1 = "Ugh... this place smells horrible."; -SWWM_SUBS_LEGACY_MAPSTART2 = "Okay, let's get to work."; -SWWM_SUBS_LEGACY_MAPSTART3 = "Let's hurry this up."; -SWWM_SUBS_LEGACY_MAPSTART4 = "This place is all kinds of strange."; -SWWM_SUBS_LEGACY_MAPSTART5 = "I was born ready."; -SWWM_SUBS_LEGACY_MAPSTART6 = "It's a hard world. I do what I have to."; -SWWM_SUBS_LEGACY_MAPSTART7 = "No robot is superior to me."; -SWWM_SUBS_LEGACY_MAPSTART8 = "I've seen better."; -SWWM_SUBS_LEGACY_MAPSTART9 = "Okay. Let's head in."; -SWWM_SUBS_LEGACY_MAPSTART10 = "I don't want any trouble. I'm just passing through."; -SWWM_SUBS_LEGACY_MAPSTART11 = "Sorry to keep you waiting."; -SWWM_SUBS_LEGACY_MAPSTART12 = "I'll do my best."; -SWWM_SUBS_LEGACY_MAPSTART13 = "Just so we're clear: Anything good I find is mine."; -SWWM_SUBS_LEGACY_MAPSTART14 = "I bet the food here is terrible."; -// every time a secret is found -SWWM_SUBS_LEGACY_NFINDSECRET = "13"; -SWWM_SUBS_LEGACY_FINDSECRET1 = "Yeah, yeah, I'm the best."; -SWWM_SUBS_LEGACY_FINDSECRET2 = "It's true. I do know my shit."; -SWWM_SUBS_LEGACY_FINDSECRET3 = "What can I say? I'm good at what I do."; -SWWM_SUBS_LEGACY_FINDSECRET4 = "It was no big deal."; -SWWM_SUBS_LEGACY_FINDSECRET5 = "No trouble at all."; -SWWM_SUBS_LEGACY_FINDSECRET6 = "It was easy."; -SWWM_SUBS_LEGACY_FINDSECRET7 = "Thanks to me, yes."; -SWWM_SUBS_LEGACY_FINDSECRET8 = "It was a walk in the park."; -SWWM_SUBS_LEGACY_FINDSECRET9 = "It was a piece of cake."; -SWWM_SUBS_LEGACY_FINDSECRET10 = "I still got it."; -SWWM_SUBS_LEGACY_FINDSECRET11 = "I did good work, didn't I?"; -SWWM_SUBS_LEGACY_FINDSECRET12 = "Wow, that's pretty lucky!"; -SWWM_SUBS_LEGACY_FINDSECRET13 = "Yeah, well, I am pretty awesome."; -// frag taunts -SWWM_SUBS_LEGACY_NSCOREKILL = "26"; -SWWM_SUBS_LEGACY_SCOREKILL1 = "Good riddance."; -SWWM_SUBS_LEGACY_SCOREKILL2 = "One down."; -SWWM_SUBS_LEGACY_SCOREKILL3 = "Goodbye."; -SWWM_SUBS_LEGACY_SCOREKILL4 = "Heh! You can't stop me."; -SWWM_SUBS_LEGACY_SCOREKILL5 = "What a loser."; -SWWM_SUBS_LEGACY_SCOREKILL6 = "We're done."; -SWWM_SUBS_LEGACY_SCOREKILL7 = "Bye."; -SWWM_SUBS_LEGACY_SCOREKILL8 = "Dead as can be."; -SWWM_SUBS_LEGACY_SCOREKILL9 = "Another job done."; -SWWM_SUBS_LEGACY_SCOREKILL10 = "The pleasure was all mine."; -SWWM_SUBS_LEGACY_SCOREKILL11 = "How about something a little more challenging next time?"; -SWWM_SUBS_LEGACY_SCOREKILL12 = "I'm glad that's over with."; -SWWM_SUBS_LEGACY_SCOREKILL13 = "Well, it's over. That's that."; -SWWM_SUBS_LEGACY_SCOREKILL14 = "It's done."; -SWWM_SUBS_LEGACY_SCOREKILL15 = "Get lost."; -SWWM_SUBS_LEGACY_SCOREKILL16 = "Is that all?"; -SWWM_SUBS_LEGACY_SCOREKILL17 = "Is that the best you can do?"; -SWWM_SUBS_LEGACY_SCOREKILL18 = "You annoy me."; -SWWM_SUBS_LEGACY_SCOREKILL19 = "Going to have to try harder than that."; -SWWM_SUBS_LEGACY_SCOREKILL20 = "What? That it?"; -SWWM_SUBS_LEGACY_SCOREKILL21 = "Get outta here."; -SWWM_SUBS_LEGACY_SCOREKILL22 = "My pleasure."; -SWWM_SUBS_LEGACY_SCOREKILL23 = "Out of my way."; -SWWM_SUBS_LEGACY_SCOREKILL24 = "Get outta my way."; -SWWM_SUBS_LEGACY_SCOREKILL25 = "Want some more?"; -SWWM_SUBS_LEGACY_SCOREKILL26 = "Done and done."; -// oopsies -SWWM_SUBS_LEGACY_NFRIENDKILL = "4"; -SWWM_SUBS_LEGACY_FRIENDKILL1 = "Oh my god."; -SWWM_SUBS_LEGACY_FRIENDKILL2 = "My god. I'm so sorry."; -SWWM_SUBS_LEGACY_FRIENDKILL3 = "Oh god..."; -SWWM_SUBS_LEGACY_FRIENDKILL4 = "Oh my god. Are you alright?"; -// getting hurt by monsters -SWWM_SUBS_LEGACY_NGETHIT = "19"; -SWWM_SUBS_LEGACY_GETHIT1 = "Whatever..."; -SWWM_SUBS_LEGACY_GETHIT2 = "*sigh*"; -SWWM_SUBS_LEGACY_GETHIT3 = "Hm hmm."; -SWWM_SUBS_LEGACY_GETHIT4 = "Bitch."; -SWWM_SUBS_LEGACY_GETHIT5 = "Asshole..."; -SWWM_SUBS_LEGACY_GETHIT6 = "You annoy me."; -SWWM_SUBS_LEGACY_GETHIT7 = "Up yours."; -SWWM_SUBS_LEGACY_GETHIT8 = "You got my attention."; -SWWM_SUBS_LEGACY_GETHIT9 = "I'm ending this right now."; -SWWM_SUBS_LEGACY_GETHIT10 = "You're a pain in the ass."; -SWWM_SUBS_LEGACY_GETHIT11 = "That's bullshit."; -SWWM_SUBS_LEGACY_GETHIT12 = "Are you serious?"; -SWWM_SUBS_LEGACY_GETHIT13 = "Going to have to try harder than that."; -SWWM_SUBS_LEGACY_GETHIT14 = "Get outta here."; -SWWM_SUBS_LEGACY_GETHIT15 = "And now it's your turn."; -SWWM_SUBS_LEGACY_GETHIT16 = "Time to shut you up for good."; -SWWM_SUBS_LEGACY_GETHIT17 = "You're not leaving here in one piece."; -SWWM_SUBS_LEGACY_GETHIT18 = "You're obviously upset..."; -SWWM_SUBS_LEGACY_GETHIT19 = "Ugh. Just... go away."; -// getting hurt by friendlies -SWWM_SUBS_LEGACY_NFRIENDHIT = "7"; -SWWM_SUBS_LEGACY_FRIENDHIT1 = "Are you ticked off at me?"; -SWWM_SUBS_LEGACY_FRIENDHIT2 = "Are you serious?"; -SWWM_SUBS_LEGACY_FRIENDHIT3 = "What? Why?"; -SWWM_SUBS_LEGACY_FRIENDHIT4 = "That's awfully rude."; -SWWM_SUBS_LEGACY_FRIENDHIT5 = "Sorry, what?"; -SWWM_SUBS_LEGACY_FRIENDHIT6 = "Not very friendly, are you?"; -SWWM_SUBS_LEGACY_FRIENDHIT7 = "Whoa, whoa. Easy there."; -// hurting a friendly -SWWM_SUBS_LEGACY_NHITFRIEND = "3"; -SWWM_SUBS_LEGACY_HITFRIEND1 = "I... sorry."; -SWWM_SUBS_LEGACY_HITFRIEND2 = "I'm sorry."; -SWWM_SUBS_LEGACY_HITFRIEND3 = "Sorry."; -// greeting another player -SWWM_SUBS_LEGACY_NGREET = "7"; -SWWM_SUBS_LEGACY_GREET1 = "Hi."; -SWWM_SUBS_LEGACY_GREET2 = "Hey there."; -SWWM_SUBS_LEGACY_GREET3 = "Hey."; -SWWM_SUBS_LEGACY_GREET4 = "Hey."; -SWWM_SUBS_LEGACY_GREET5 = "Hey."; -SWWM_SUBS_LEGACY_GREET6 = "Well hello."; -SWWM_SUBS_LEGACY_GREET7 = "Hi there."; -// ragekit -SWWM_SUBS_LEGACY_NRAGEKIT = "6"; -SWWM_SUBS_LEGACY_RAGEKIT1 = "AAAAAAAAAAAAAAAAAAAAAA!!!!!"; -SWWM_SUBS_LEGACY_RAGEKIT2 = "FFFFFFUUUUUUUUUUUCKKKK!!!"; -SWWM_SUBS_LEGACY_RAGEKIT3 = "FUCKFUCKFUCCKKKK!!"; -SWWM_SUBS_LEGACY_RAGEKIT4 = "AAAAAAAAAARGH!!!!"; -SWWM_SUBS_LEGACY_RAGEKIT5 = "KILLLLL!!!!"; -SWWM_SUBS_LEGACY_RAGEKIT6 = "RAAAARGH!!! BRING IT!!!"; -// --- comebacks for korax hub lines --- -// "Greetings mortal, are you ready to die?" -SWWM_SUBS_LEGACY_NKORAXGREET = "13"; -SWWM_SUBS_LEGACY_KORAXGREET1 = "Oh boy. That's it. I'm outta here"; -SWWM_SUBS_LEGACY_KORAXGREET2 = "Great... That's just great."; -SWWM_SUBS_LEGACY_KORAXGREET3 = "I don't want whatever you're selling."; -SWWM_SUBS_LEGACY_KORAXGREET4 = "You're... not really my type."; -SWWM_SUBS_LEGACY_KORAXGREET5 = "The first word that comes to my mind is 'ugly'."; -SWWM_SUBS_LEGACY_KORAXGREET6 = "You look like something that was left in the fridge for too long."; -SWWM_SUBS_LEGACY_KORAXGREET7 = "I can see coming here was a mistake."; -SWWM_SUBS_LEGACY_KORAXGREET8 = "I'm not comfortable being watched so closely."; -SWWM_SUBS_LEGACY_KORAXGREET9 = "Nice attitude..."; -SWWM_SUBS_LEGACY_KORAXGREET10 = "I could ask you the same question."; -SWWM_SUBS_LEGACY_KORAXGREET11 = "I was about to ask you the same thing."; -SWWM_SUBS_LEGACY_KORAXGREET12 = "I'm just looking for the mayonnaise. Maybe you could grab it for me. Second shelf, right next to the pudding."; -SWWM_SUBS_LEGACY_KORAXGREET13 = "I'm here to pick up an order. Two large pepperoni and a calzone. Name is 'Fuck you'."; -// "My servants can smell your blood, human" -SWWM_SUBS_LEGACY_NKORAXBLOOD = "13"; -SWWM_SUBS_LEGACY_KORAXBLOOD1 = "Creep."; -SWWM_SUBS_LEGACY_KORAXBLOOD2 = "That's good to know."; -SWWM_SUBS_LEGACY_KORAXBLOOD3 = "Whatever you say."; -SWWM_SUBS_LEGACY_KORAXBLOOD4 = "I don't think so."; -SWWM_SUBS_LEGACY_KORAXBLOOD5 = "Um... yeah... I don't think so..."; -SWWM_SUBS_LEGACY_KORAXBLOOD6 = "If you say so."; -SWWM_SUBS_LEGACY_KORAXBLOOD7 = "I don't care."; -SWWM_SUBS_LEGACY_KORAXBLOOD8 = "Whatever. Not like I care anyway."; -SWWM_SUBS_LEGACY_KORAXBLOOD9 = "I don't really give a shit."; -SWWM_SUBS_LEGACY_KORAXBLOOD10 = "Like I give a shit..."; -SWWM_SUBS_LEGACY_KORAXBLOOD11 = "I think you're confusing me with someone who gives a shit."; -SWWM_SUBS_LEGACY_KORAXBLOOD12 = "I'm not so sure about that."; -SWWM_SUBS_LEGACY_KORAXBLOOD13 = "Just shut up."; -// "You have played this game too long, mortal, I think I shall remove you from the board" -SWWM_SUBS_LEGACY_NKORAXGAME = "14"; -SWWM_SUBS_LEGACY_KORAXGAME1 = "I really don't care."; -SWWM_SUBS_LEGACY_KORAXGAME2 = "Go fuck yourself."; -SWWM_SUBS_LEGACY_KORAXGAME3 = "Oh, go cough up a hairball."; -SWWM_SUBS_LEGACY_KORAXGAME4 = "Not gonna happen."; -SWWM_SUBS_LEGACY_KORAXGAME5 = "Your threats don't scare me."; -SWWM_SUBS_LEGACY_KORAXGAME6 = "Not a chance."; -SWWM_SUBS_LEGACY_KORAXGAME7 = "I don't take kindly to threats."; -SWWM_SUBS_LEGACY_KORAXGAME8 = "Anything else I should know?"; -SWWM_SUBS_LEGACY_KORAXGAME9 = "Shut up..."; -SWWM_SUBS_LEGACY_KORAXGAME10 = "No one talks to me like that. Screw you."; -SWWM_SUBS_LEGACY_KORAXGAME11 = "You won't talk when you're dead."; -SWWM_SUBS_LEGACY_KORAXGAME12 = "I'd like to see you try."; -SWWM_SUBS_LEGACY_KORAXGAME13 = "Oh, please try."; -SWWM_SUBS_LEGACY_KORAXGAME14 = "I don't know what you're talking about, and I don't care."; -// "Worship me and I may be yet merciful, then again, maybe not" -SWWM_SUBS_LEGACY_NKORAXWORSHIP = "11"; -SWWM_SUBS_LEGACY_KORAXWORSHIP1 = "What?"; -SWWM_SUBS_LEGACY_KORAXWORSHIP2 = "What a scumbag..."; -SWWM_SUBS_LEGACY_KORAXWORSHIP3 = "Pompous ass..."; -SWWM_SUBS_LEGACY_KORAXWORSHIP4 = "Someone's a little full of himself."; -SWWM_SUBS_LEGACY_KORAXWORSHIP5 = "So full of yourself..."; -SWWM_SUBS_LEGACY_KORAXWORSHIP6 = "I've heard enough of your bullshit."; -SWWM_SUBS_LEGACY_KORAXWORSHIP7 = "Blah, blah, blah..."; -SWWM_SUBS_LEGACY_KORAXWORSHIP8 = "What? I can't hear you over this ringing in my ears."; -SWWM_SUBS_LEGACY_KORAXWORSHIP9 = "You must think I'm an idiot."; -SWWM_SUBS_LEGACY_KORAXWORSHIP10 = "Do I look like an idiot?"; -SWWM_SUBS_LEGACY_KORAXWORSHIP11 = "You have an awfully high opinion of yourself."; -// "Are you strong enough to face your own masters?" -SWWM_SUBS_LEGACY_NKORAXMASTERS = "9"; -SWWM_SUBS_LEGACY_KORAXMASTERS1 = "Can we move this along? I've got places to be."; -SWWM_SUBS_LEGACY_KORAXMASTERS2 = "I don't appreciate people telling me what to do."; -SWWM_SUBS_LEGACY_KORAXMASTERS3 = "Uh... yes, that's right."; -SWWM_SUBS_LEGACY_KORAXMASTERS4 = "Suppose I've got nothing better to do."; -SWWM_SUBS_LEGACY_KORAXMASTERS5 = "I'm asking myself the same thing."; -SWWM_SUBS_LEGACY_KORAXMASTERS6 = "None of your damn business."; -SWWM_SUBS_LEGACY_KORAXMASTERS7 = "Yes, I am."; -SWWM_SUBS_LEGACY_KORAXMASTERS8 = "That's none of your business."; -SWWM_SUBS_LEGACY_KORAXMASTERS9 = "Just shut up already..."; +// Duplicate for hammer spin +SWWM_SUBS_DEFAULT_SPINNING = "$$SWWM_SUBS_DEFAULT_FALLING"; +/// Special kill messages (rare) +// Buttslam +SWWM_SUBS_DEFAULT_NASSKILL = "3"; +SWWM_SUBS_DEFAULT_ASSKILL1 = "It's ASS time!"; +SWWM_SUBS_DEFAULT_ASSKILL2 = "Putting the ASS in mASSacre!"; +SWWM_SUBS_DEFAULT_ASSKILL3 = "Alright, who wants to eat ASS?"; +// Lead ball crit +SWWM_SUBS_DEFAULT_NBALLSKILL = "2"; +SWWM_SUBS_DEFAULT_BALLSKILL1 = "Dangerous Ball Action!"; +SWWM_SUBS_DEFAULT_BALLSKILL2 = "Be careful playing with your balls, lads!"; +// Explosion kill +SWWM_SUBS_DEFAULT_NBLAST = "6"; +SWWM_SUBS_DEFAULT_BLAST1 = "Bang!"; +SWWM_SUBS_DEFAULT_BLAST2 = "Bangabangbangbang!"; +SWWM_SUBS_DEFAULT_BLAST3 = "Pew!"; +SWWM_SUBS_DEFAULT_BLAST4 = "Boom!"; +SWWM_SUBS_DEFAULT_BLAST5 = "Kapow!"; +SWWM_SUBS_DEFAULT_BLAST6 = "Kaboom."; +// Sheen HMG kill +SWWM_SUBS_DEFAULT_NSHEENKILL = "2"; +SWWM_SUBS_DEFAULT_SHEENKILL1 = "Dakka dakka dakka."; +SWWM_SUBS_DEFAULT_SHEENKILL2 = "Cry some more!"; +// Wall busting +SWWM_SUBS_DEFAULT_BUSTKILL = "Bustin' makes me feel good~ ♪"; +// Cyberdemon killed by parrying +SWWM_SUBS_DEFAULT_CYBULLY = "I'm just doing some cyberbullying..."; +// Cacodemon petting +SWWM_SUBS_DEFAULT_NPETCACO = "3"; +SWWM_SUBS_DEFAULT_PETCACO1 = "Caco!"; +SWWM_SUBS_DEFAULT_PETCACO2 = "Who's a good caco boy?"; +SWWM_SUBS_DEFAULT_PETCACO3 = "Meatball~"; +// (rare) skull key pickup gesture +SWWM_SUBS_DEFAULT_SKULLGET = "Alas, poor Yorick. I knew him, Horatio."; +// Grilled Cheese Sandwich eating +SWWM_SUBS_DEFAULT_NEAT = "5"; +SWWM_SUBS_DEFAULT_EAT1 = "Om nom nom... Om nom..."; +SWWM_SUBS_DEFAULT_EAT2 = "*eating*"; +SWWM_SUBS_DEFAULT_EAT3 = "Mmmmm..."; +SWWM_SUBS_DEFAULT_EAT4 = "Mmmm! Tasty!"; +SWWM_SUBS_DEFAULT_EAT5 = "Mah favorite!"; +// Hurtfloor damage (currently unused) +SWWM_SUBS_DEFAULT_NHURTFLOOR = "5"; +SWWM_SUBS_DEFAULT_HURTFLOOR1 = "Ffffff..."; +SWWM_SUBS_DEFAULT_HURTFLOOR2 = "Huff oof..."; +SWWM_SUBS_DEFAULT_HURTFLOOR3 = "Oooo ooo... Aaa aaah ooh..."; +SWWM_SUBS_DEFAULT_HURTFLOOR4 = "Ooh ah aahh... Ooh..."; +SWWM_SUBS_DEFAULT_HURTFLOOR5 = "Hot..."; +// Map Start but only for nuts +SWWM_SUBS_DEFAULT_NUTSTART = "Aw, nuts..."; +// Rare Sheen HMG pickup +SWWM_SUBS_DEFAULT_SHEENSPECIAL = "Heavy Mah-Sheen Gun!"; +// Mortal Rifle touchscreen +SWWM_SUBS_DEFAULT_NMRTOUCH = "4"; +SWWM_SUBS_DEFAULT_MRTOUCH1 = "Beep."; +SWWM_SUBS_DEFAULT_MRTOUCH2 = "Blip."; +SWWM_SUBS_DEFAULT_MRTOUCH3 = "Blop."; +SWWM_SUBS_DEFAULT_MRTOUCH4 = "Boop."; +// Mortal Rifle finger flick +SWWM_SUBS_DEFAULT_NMRFLICK = "2"; +SWWM_SUBS_DEFAULT_MRFLICK1 = "Click."; +SWWM_SUBS_DEFAULT_MRFLICK2 = "Clack."; +// Mirror interaction +SWWM_SUBS_DEFAULT_NMIRROR = "10"; +SWWM_SUBS_DEFAULT_MIRROR1 = "Who's that handsome robot? Oh! It's me~"; +SWWM_SUBS_DEFAULT_MIRROR2 = "Looking good..."; +SWWM_SUBS_DEFAULT_MIRROR3 = "Does this chassis make my ass look fat?"; +SWWM_SUBS_DEFAULT_MIRROR4 = "It's me, Demo-chan!"; +SWWM_SUBS_DEFAULT_MIRROR5 = "I think I look cute today."; +SWWM_SUBS_DEFAULT_MIRROR6 = "Hmmm... My body could use some nice polishing."; +SWWM_SUBS_DEFAULT_MIRROR7 = "That's a mirror."; +SWWM_SUBS_DEFAULT_MIRROR8 = "Nice and reflective, just how I like it."; +SWWM_SUBS_DEFAULT_MIRROR9 = "I should really try not to break this."; +SWWM_SUBS_DEFAULT_MIRROR10 = "I kinda like looking at myself... Not that it's wrong or anything."; +// Kiss hit +SWWM_SUBS_DEFAULT_NSMOOCH = "3"; +SWWM_SUBS_DEFAULT_SMOOCH1 = "Smoochies~"; +SWWM_SUBS_DEFAULT_SMOOCH2 = "$$SWWM_SUBS_DEFAULT_SMOOCH1"; // all subtitles are the same here, only the sound changes +SWWM_SUBS_DEFAULT_SMOOCH3 = "$$SWWM_SUBS_DEFAULT_SMOOCH1"; +// Sunlust MAP29 +SWWM_SUBS_DEFAULT_LUSTYSUNS = "Wait... What did that say?"; +// Invinciball use (no more Sundowner voiceclip) +SWWM_SUBS_DEFAULT_NINVINCIBALL = "3"; +SWWM_SUBS_DEFAULT_INVINCIBALL1 = "I'm frickin' invincible!"; +SWWM_SUBS_DEFAULT_INVINCIBALL2 = "$$SWWM_SUBS_DEFAULT_INVINCIBALL1"; // all subtitles are the same here, only the sound changes +SWWM_SUBS_DEFAULT_INVINCIBALL3 = "$$SWWM_SUBS_DEFAULT_INVINCIBALL1"; +// Randomization ranges for other voices +SWWM_DEFAULT_NGRUNT = "5"; +SWWM_DEFAULT_NUSEGRUNT = "4"; +SWWM_DEFAULT_NLOPAIN = "2"; +SWWM_DEFAULT_NPAIN = "3"; +SWWM_DEFAULT_NHIPAIN = "3"; +SWWM_DEFAULT_NDEATH = "8"; +SWWM_DEFAULT_NJUMP = "5"; +SWWM_DEFAULT_NKISS = "10"; diff --git a/language.es_base b/language.es_base index bedf919b0..95cbc234d 100644 --- a/language.es_base +++ b/language.es_base @@ -1,14 +1,13 @@ [es] // tags, pickups T_DEMOLITIONIST = "Demolicionista"; -I_PUSHER = "Taladro Percutor de Microfusión \"Pusher\""; I_DEEPIMPACT = "Pistola de Aire \"Deep Impact\""; T_EXPLODIUM = "Pistola de Explodium"; T_EXPLODIUM2 = "Pistolas de Explodium"; T_SPREADGUN = "Trabuco"; I_SPREADGUN = "Trabuco \"Rhino Stopper\""; I_WALLBUSTER = "Escopeta de Brecha de Armadura Pesada \"Wallbuster\""; -I_EVISCERATOR = "Cañón de Flechettes de Carga Pesada \"Eviscerator\""; +I_EVISCERATOR = "Cañón de Metralla de Carga Pesada \"Eviscerator\""; I_HELLBLAZER = "Lanzacohetes \"Hellblazer\""; T_SPARKSTER = "Carabina Biospark"; I_SPARKSTER = "Carabina Biospark Modelo S-5"; @@ -30,16 +29,6 @@ I_NEWSPARKSTER = "Rifle Sparkster Serie x3"; T_MORTALRIFLE = "Rifle Mortal"; T_REDSHELL = "Cartucho"; T_REDSHELLS = "Cartuchos"; -T_GREENSHELL = "Slug"; -T_GREENSHELLS = "Slugs"; -T_WHITESHELL = "Cartucho Dragon's Breath"; -T_WHITESHELLS = "Cartuchos Dragon's Breath"; -T_BLUESHELL = "Cartucho de Sal de Kinylum"; -T_BLUESHELLS = "Cartuchos de Sal de Kinylum"; -T_BLACKSHELL = "Cartucho Corrosivo"; -T_BLACKSHELLS = "Cartuchos Corrosivos"; -T_PURPLESHELL = "Cartucho de Bola de Plomo"; -T_PURPLESHELLS = "Cartuchos de Bola de Plomo"; T_GOLDSHELL = "Cartucho Dorado"; T_GOLDSHELLS = "Cartuchos Dorados"; T_EVISHELL = "Proyectil de Eviscerator"; @@ -49,26 +38,12 @@ I_EVISHELLCLIP3 = "Clip en Trio para Eviscerator"; I_EVISHELLPAK = "Pack de Seis para Eviscerator"; T_HELLMISSILE = "Misil Hellblazer"; T_HELLMISSILES = "Misiles Hellblazer"; -T_HELLMISSILEMAG = "Cargador de Misiles Hellblazer"; -T_HELLCLUSTER = "Estallador Hellblazer"; -T_HELLCLUSTERS = "Estalladores Hellblazer"; -T_HELLCLUSTERMAG = "Cargador de Estalladores Hellblazer"; -T_HELLBURNINATOR = "Ruinador Hellblazer"; -T_HELLBURNINATORS = "Ruinadores Hellblazer"; -T_HELLBURNINATORMAG = "Cargador de Ruinadores Hellblazer"; -T_HELLNUKE = "Cabeza Nuclear Hellblazer"; -T_HELLNUKES = "Cabezas Nucleares Hellblazer"; -T_HELLNUKEMAG = "Cargador de Cabezas Nucleares Hellblazer"; T_SPARKUNIT = "Unidad Biospark"; T_SPARKUNITS = "Unidades Biospark"; T_XSBMAG = "Cargador 1.150 XSB"; T_XSBMAGS = "Cargadores 1.150 XSB"; -T_FCBMAG = "Cargador 1.150 FCB"; -T_FCBMAGS = "Cargadores 1.150 FCB"; T_XSBBULLET = "Bala 1.150 XSB"; T_XSBBULLETS = "Balas 1.150 XSB"; -T_FCBBULLET = "Bala 1.150 FCB"; -T_FCBBULLETS = "Balas 1.150 FCB"; T_CANDYMAG = "Cargador de Pistola Caramelo"; T_CANDYMAGS = "Cargadores de Pistola Caramelo"; T_CANDYBULLET = "Bala de Pistola Caramelo"; @@ -87,18 +62,16 @@ T_SPARKBAMMO = "Célula de Kinylum"; T_SPARKBAMMOS = "Células de Kinylum"; T_SPARKRAMMO = "Célula de Nokron"; T_SPARKRAMMOS = "Células de Nokron"; +T_RAYBOLT = "Proyectil de Ray-Khom"; +T_RAYBOLTS = "Proyectiles de Ray-Khom"; +T_RAYAMMO = "Cargador de Ray-Khom"; +T_RAYAMMOS = "Cargadores de Ray-Khom"; T_MRROUND = "Bala Mortal"; T_MRROUNDS = "Balas Mortales"; T_MRAMMO = "Cargador Mortal"; T_MRAMMOS = "Cargadores Mortales"; T_MRGRENADE = "Granada Mortal"; T_MRGRENADES = "Granadas Mortales"; -T_RAYBOLT = "Proyectil de Ray-Khom"; -T_RAYBOLTS = "Proyectiles de Ray-Khom"; -T_RAYAMMO = "Cargador de Ray-Khom"; -T_RAYAMMOS = "Cargadores de Ray-Khom"; -T_RAYBATTERY = "Batería de Ray-Khom"; -T_RAYBATTERYS = "Baterías de Ray-Khom"; T_ULTIMATEPOD = "Cápsula de Rafan-Kos"; T_ULTIMATEPODS = "Cápsulas de Rafan-Kos"; T_ULTIMATEAMMO = "Cargador de Rafan-Kos"; @@ -119,7 +92,7 @@ T_LAMP = "Lämpara"; I_LAMP = "Lámpara Compañera"; T_MOTH = "Polilla"; T_WMOTH = "Polilla Blanca"; -T_MASHIRO = "Dama Blanca"; +T_ANDIRA = "Dama Blanca"; T_NUGGETH = "Pepita de Salud"; T_NUGGETA = "Pepita de Armadura"; T_OMNISIGHT = "Omnivisión"; @@ -132,6 +105,9 @@ T_MYKRADVO = "Artefacto Mykradvo"; T_SAFETY = "Enlace de Seguridad"; T_DEVASTATION = "Marca de Devastación"; T_DIVINE = "Sprite Divino"; +T_BALLS = "Bomba de Bolas"; +T_SENTRY = "Torreta"; +I_SENTRY = "Torreta Desplegable \"Battle-Boi\""; T_CHANCEBOX = "Caja Afortunada"; T_FROGGY = "Silla Rana"; T_PERFECTLYGENERIC = "Cubo Genérico"; @@ -144,8 +120,9 @@ T_PEACH = "Zumo de Melocotón Toot Froot™"; T_MILKBREAD = "Pan de Leche Akkouxhei"; T_KIRINMANGA = "Saya Miyamoto - Me Casé Con Un Emperador Virgen Pero Resulta Que Es Monísimo Con Lencería?!"; T_KIRINPLUSH = "Peluche de Emperador Kirin"; -T_MOTHPLUSH = "Peluche de Mashiro"; +T_MOTHPLUSH = "Peluche de Polilla"; T_SAYASMUG = "Taza de Café de Saya"; +T_SHARKPLUSH = "Peluche de Tiburón"; // colored tags for keys T_REDCARD = "\cgTarjeta Llave Roja\c-"; T_BLUECARD = "\chTarjeta Llave Azul\c-"; @@ -188,7 +165,7 @@ QUITMSG2 = "¿Oh, te marchas ya? Pues nada,\nnos vemos luego, supongo."; QUITMSG3 = "Gracias por jugar.\nEspero volverte a ver pronto."; QUITMSG5 = "Ah, se acabó la fiesta, supongo..."; QUITMSG6 = "Mi amor por ti es como un camión.\n\cg!!BERSERKER!!\c-"; -QUITMSG7 = "No te vayas ahora, o \cfSaya\c- hablará\nmal de ti en Twitter punto com."; +QUITMSG7 = "No te vayas ahora, o \cgSaya\c- hablará\nmal de ti en Twitter punto com."; QUITMSG8 = "Mucho texto."; QUITMSG9 = "John Romero va a\nesperar que estés bien."; QUITMSG10 = "No te vayas, ¡hay una temible chica\npolilla esperando en la oscuridad!"; @@ -197,149 +174,181 @@ QUITMSG12 = "Sí, yo también necesitaría un\ndescanso después de todo eso..." QUITMSG14 = "¿Continuará?"; QUITMSG15 = "[Insertar mensaje ingenioso aquí]"; QUITMSG16 = "¡AHDSAKAFAJDAGS!"; -QUITMSG18 = "¿QUIEN EN SU SANO JUICIO\nGLASEARÍA UNA TARTA CON SU CULO?"; -QUITMSG19 = "El mundo es duro y frío,\nlos pechotes suaves y calientes."; +QUITMSG18 = "El mundo es duro y frío,\nlos pechotes suaves y calientes."; // Re-tagged monsters FN_ZOMBIE_FUN1 = "Zombi"; FN_ZOMBIE_FUN2 = "Muertito"; FN_ZOMBIE_FUN3 = "El Zombito"; -FN_ZOMBIE_FUN4 = "Carne de cañón"; +FN_ZOMBIE_FUN4 = "Carne De Cañón"; FN_ZOMBIE_FUN5 = "Perdedor"; -FN_SHOTGUN_FUN1 = "Zombi calvete"; +FN_SHOTGUN_FUN1 = "Zombi Calvete"; FN_SHOTGUN_FUN2 = "Elmer Gruñón"; FN_SHOTGUN_FUN3 = "Calvo"; FN_SHOTGUN_FUN4 = "Escoputo"; FN_SHOTGUN_FUN5 = "Wismichu"; FN_HEAVY_FUN1 = "Tocacojones"; -FN_HEAVY_FUN2 = "¿Por que estoy perdiendo vida?"; -FN_HEAVY_FUN4 = "Tío cabreado"; +FN_HEAVY_FUN2 = "¿Por Que Estoy Perdiendo Vida?"; +FN_HEAVY_FUN4 = "Tío Cabreado"; +FN_HEAVY_FUN5 = "Capullo Con Metralleta"; FN_IMP_FUN1 = "Pinchitos"; FN_IMP_FUN3 = "Yogurín Infernal"; -FN_IMP_FUN5 = "Glúteos firmes"; +FN_IMP_FUN5 = "Glúteos Firmes"; FN_DEMON_FUN1 = "Rosita"; -FN_DEMON_FUN2 = "Gorila afeitado"; -FN_DEMON_FUN3 = "Mucha boca poco cerebro"; +FN_DEMON_FUN2 = "Gorila Afeitado"; +FN_DEMON_FUN3 = "Mucha Boca Poco Cerebro"; FN_DEMON_FUN4 = "Muerdesito"; FN_SPECTRE_FUN1 = "Borroncito"; -FN_SPECTRE_FUN2 = "Rosita camuflado"; -FN_SPECTRE_FUN3 = "Mordisquito sorpresa"; -FN_SPECTRE_FUN4 = "Gorila sigiloso"; +FN_SPECTRE_FUN2 = "Rosita Camuflado"; +FN_SPECTRE_FUN3 = "Mordisquito Sorpresa"; +FN_SPECTRE_FUN4 = "Gorila Sigiloso"; FN_LOST_FUN1 = "Calaverita"; FN_LOST_FUN2 = "Bicho"; -FN_LOST_FUN3 = "Cabeza tonta"; +FN_LOST_FUN3 = "Cabeza Tonta"; FN_LOST_FUN4 = "Idiota"; FN_CACO_FUN1 = "Tomatín"; FN_CACO_FUN2 = "Rojito"; -FN_CACO_FUN3 = "Albóndiga picante"; -FN_CACO_FUN4 = "Bola con forma de amigo"; -FN_CACO_FUN5 = "Bola acariciable"; -FN_HELL_FUN1 = "Barón de Hacendado"; -FN_HELL_FUN2 = "Cabra marrón"; -FN_HELL_FUN3 = "Primo del Señor Gruñón"; -FN_HELL_FUN4 = "Puerta con menos puntos de vida"; -FN_HELL_FUN5 = "Recorte de presupuesto"; +FN_CACO_FUN3 = "Albóndiga Picante"; +FN_CACO_FUN4 = "Bola Con Forma De Amigo"; +FN_CACO_FUN5 = "Bola Acariciable"; +FN_HELL_FUN1 = "Barón De Hacendado"; +FN_HELL_FUN2 = "Cabra Marrón"; +FN_HELL_FUN3 = "Primo Del Señor Gruñón"; +FN_HELL_FUN4 = "Puerta Con Menos Puntos De Vida"; +FN_HELL_FUN5 = "Recorte De Presupuesto"; FN_BARON_FUN1 = "Señor Gruñón"; -FN_BARON_FUN2 = "Puerta con puntos de vida"; -FN_BARON_FUN3 = "Ola k ase"; -FN_BARON_FUN4 = "Cabra roja cabreada"; -FN_BARON_FUN5 = "Bloquea tu camino"; -FN_ARACH_FUN1 = "Ñiño araña"; +FN_BARON_FUN2 = "Puerta Con Puntos De Vida"; +FN_BARON_FUN3 = "Ola K Ase"; +FN_BARON_FUN4 = "Cabra Roja Cabreada"; +FN_BARON_FUN5 = "Bloquea Tu Camino"; +FN_ARACH_FUN1 = "Ñiño Araña"; FN_ARACH_FUN2 = "Pequeñajo"; FN_ARACH_FUN3 = "Retaco"; -FN_ARACH_FUN5 = "Arruga andante"; -FN_PAIN_FUN1 = "Dolor de culo"; -FN_PAIN_FUN2 = "Puta mierda"; -FN_PAIN_FUN3 = "Demonio más odiado"; -FN_PAIN_FUN4 = "Se acabó la fiesta"; -FN_PAIN_FUN5 = "Mierda con brazos"; +FN_ARACH_FUN5 = "Arruga Andante"; +FN_PAIN_FUN1 = "Dolor De Culo"; +FN_PAIN_FUN2 = "Puta Mierda"; +FN_PAIN_FUN3 = "Demonio Más Odiado"; +FN_PAIN_FUN4 = "Se Acabó La Fiesta"; +FN_PAIN_FUN5 = "Mierda Con Brazos"; FN_REVEN_FUN2 = "Huesito Cabreado"; FN_REVEN_FUN3 = "Esqueletín"; FN_REVEN_FUN5 = "El Renasido"; FN_MANCU_FUN1 = "Gordaco"; FN_MANCU_FUN2 = "Don Tocino"; FN_MANCU_FUN3 = "Culogordo"; -FN_MANCU_FUN4 = "Tu madre"; +FN_MANCU_FUN4 = "Tu Madre"; FN_MANCU_FUN5 = "Gordo Cabrón"; -FN_ARCH_FUN1 = "1000 puntos menos"; +FN_ARCH_FUN1 = "1000 Puntos Menos"; FN_ARCH_FUN2 = "Marsianito"; -FN_ARCH_FUN3 = "No gracias"; -FN_ARCH_FUN4 = "Te jodes"; -FN_ARCH_FUN5 = "Tu día ha sido arruinado"; +FN_ARCH_FUN3 = "No Gracias"; +FN_ARCH_FUN4 = "Te Jodes"; +FN_ARCH_FUN5 = "Tu Día Ha Sido Arruinado"; FN_ARCH_FUN6 = "Nalgas Ardientes"; -FN_SPIDER_FUN1 = "Mami araña"; -FN_SPIDER_FUN2 = "Tu puta madre"; -FN_SPIDER_FUN3 = "Krang en grande"; -FN_SPIDER_FUN4 = "No es Mother Brain"; +FN_SPIDER_FUN1 = "Mami Araña"; +FN_SPIDER_FUN2 = "Tu Puta Madre"; +FN_SPIDER_FUN3 = "Krang En Grande"; +FN_SPIDER_FUN4 = "No Es Mother Brain"; FN_SPIDER_FUN5 = "Superfriki"; FN_CYBER_FUN1 = "Culazo"; -FN_CYBER_FUN2 = "Un brazo y una pierna"; -FN_CYBER_FUN3 = "Mi cabra está aumentada"; -FN_CYBER_FUN4 = "Práctica de esquivar"; -FN_CYBER_FUN5 = "Dispara hasta que muera"; -FN_WOLFSS_FUN1 = "Votante de VOX"; +FN_CYBER_FUN2 = "Un Brazo Y Una Pierna"; +FN_CYBER_FUN3 = "Mi Vaca Está Aumentada"; +FN_CYBER_FUN4 = "Práctica De Esquivar"; +FN_CYBER_FUN5 = "Dispara Hasta Que Muera"; +FN_CYBER_FUN6 = "Vaca Mú"; +FN_WOLFSS_FUN1 = "Votante De VOX"; FN_WOLFSS_FUN2 = "Rubito"; -FN_WOLFSS_FUN3 = "Cosas nasis"; +FN_WOLFSS_FUN3 = "Cosas Nasis"; +FN_ID24BANSHEE_FUN1 = "Esplota"; +FN_ID24BANSHEE_FUN2 = "Don Gritón"; +FN_ID24BANSHEE_FUN3 = "Bombajeta"; +FN_ID24BANSHEE_FUN4 = "Hay Que Explotar"; +FN_ID24BANSHEE_FUN5 = "Volátil"; +FN_ID24GHOUL_FUN1 = "CRÁNEO"; +FN_ID24GHOUL_FUN2 = "Caragris"; +FN_ID24GHOUL_FUN3 = "Cabeza Flotante"; +FN_ID24GHOUL_FUN4 = "Ahora Disparan"; +FN_ID24GHOUL_FUN5 = "Cabecín"; +FN_ID24GHOUL_FUN6 = "Calaverín"; +FN_ID24MINDWEAVER_FUN1 = "Araña Armada"; +FN_ID24MINDWEAVER_FUN2 = "Amenteralladora"; +FN_ID24MINDWEAVER_FUN3 = "Araña Adolescente"; +FN_ID24MINDWEAVER_FUN4 = "Favorita De Mamá"; +FN_ID24MINDWEAVER_FUN5 = "Friki Balístico"; +FN_ID24SHOCKTROOPER_FUN1 = "Bastardo De Plasma"; +FN_ID24SHOCKTROOPER_FUN2 = "Zombi Plasmado"; +FN_ID24SHOCKTROOPER_FUN3 = "Caraculo"; +FN_ID24SHOCKTROOPER_FUN4 = "Uf Ay"; +FN_ID24SHOCKTROOPER_FUN5 = "Cañón De Cristal"; +FN_ID24TYRANT_FUN1 = "Comportamiento Descornado"; +FN_ID24TYRANT_FUN2 = "Vaca Degradada"; +FN_ID24TYRANT_FUN3 = "Vaca Menos Aumentada"; +FN_ID24TYRANT_FUN4 = "Mú Verde"; +FN_ID24TYRANT_FUN5 = "Dispara También Hasta Que Muera"; +FN_ID24TYRANT_FUN6 = "Posaderas"; +FN_ID24VASSAGO_FUN1 = "Careta Calavera"; +FN_ID24VASSAGO_FUN2 = "Capullo Combustible"; +FN_ID24VASSAGO_FUN3 = "Un Quemao"; +FN_ID24VASSAGO_FUN4 = "Cabra Alada"; +FN_ID24VASSAGO_FUN5 = "Pi-Romántico"; +FN_ID24VASSAGO_FUN6 = "Puerta En Llamas"; FN_DOG_FUN = "Perrete"; FN_CHICKEN_FUN = "POLLO"; FN_CLINK_FUN1 = "Rasguñitos"; FN_CLINK_FUN2 = "Cacharro"; FN_CLINK_FUN3 = "Chatarra"; FN_DSPARIL_FUN = "Caperucita Roja"; -FN_HERETICIMP_FUN1 = "Bicho con Alas"; +FN_HERETICIMP_FUN1 = "Bicho Con Alas"; FN_HERETICIMP_FUN2 = "Minicapullo"; FN_HERETICIMP_FUN3 = "Murciélago Molesto"; -FN_HERETICIMP_FUN4 = "Incordio con Alas"; +FN_HERETICIMP_FUN4 = "Incordio Con Alas"; FN_IRONLICH_FUN1 = "Risitas"; FN_IRONLICH_FUN2 = "Cabezón"; FN_IRONLICH_FUN3 = "Sonrisitas"; FN_IRONLICH_FUN4 = "Graciosillo"; FN_BONEKNIGHT_FUN1 = "Huesos Agitados"; FN_BONEKNIGHT_FUN2 = "Huesitos"; -FN_BONEKNIGHT_FUN4 = "Caballero de Calcio"; +FN_BONEKNIGHT_FUN4 = "Caballero De Calcio"; FN_MINOTAUR_FUN1 = "Toro Ciclao"; FN_MINOTAUR_FUN2 = "Fuertote"; FN_MINOTAUR_FUN3 = "Muusculos"; -FN_MUMMY_FUN1 = "Papel de Culo"; +FN_MUMMY_FUN1 = "Papel De Culo"; FN_MUMMY_FUN2 = "Momia Mediocre"; FN_MUMMY_FUN3 = "Gólem Cutre"; -FN_MUMMYLEADER_FUN1 = "Papel de Culo que Grita"; -FN_MUMMYLEADER_FUN2 = "Momia Mediocre que Grita"; -FN_MUMMYLEADER_FUN3 = "Gólem Cutre que Grita"; +FN_MUMMYLEADER_FUN1 = "Papel De Culo Que Grita"; +FN_MUMMYLEADER_FUN2 = "Momia Mediocre Que Grita"; +FN_MUMMYLEADER_FUN3 = "Gólem Cutre Que Grita"; FN_SNAKE_FUN1 = "Culebrilla"; FN_SNAKE_FUN2 = "No Pisar"; FN_WIZARD_FUN1 = "Eres Un Mago, Harry"; FN_WIZARD_FUN2 = "Por Arte De Magia"; -FN_WIZARD_FUN3 = "Un Puto Mago"; +FN_WIZARD_FUN3 = "Mago Majo"; FN_WIZARD_FUN4 = "Trapo Volador"; FN_FIREDEMON_FUN1 = "Bicho Ardiente"; FN_FIREDEMON_FUN2 = "Inflamadito"; FN_FIREDEMON_FUN3 = "Alitas Picantes"; FN_DEMON1_FUN1 = "Lagarto Grandote"; -FN_DEMON1_FUN2 = "Dragón de Hacendado"; +FN_DEMON1_FUN2 = "Dragón De Hacendado"; FN_DEMON1_FUN3 = "Mordisquitos"; -FN_DEMON1_FUN4 = "Bicho con Perilla"; +FN_DEMON1_FUN4 = "Bicho Con Perilla"; FN_ETTIN_FUN1 = "Perrito Doble"; -FN_ETTIN_FUN2 = "Idiota con Garrote"; -FN_ETTIN_FUN3 = "Bicho de Bajo Nivel"; -FN_CENTAUR_FUN1 = "Idiota con Escudo"; -FN_CENTAUR_FUN2 = "Capullo con Escudo"; -FN_CENTAUR_FUN3 = "Hijoputa con Escudo"; -FN_CENTAUR_FUN4 = "Chupapollas con Escudo"; -FN_SLAUGHTAUR_FUN1 = "Idiota Estúpido con Escudo"; -FN_SLAUGHTAUR_FUN2 = "Capullo Asqueroso con Escudo"; -FN_SLAUGHTAUR_FUN3 = "Bastardo Hijoputa con Escudo"; -FN_SLAUGHTAUR_FUN4 = "Tragasables con Escudo"; +FN_ETTIN_FUN2 = "Idiota Con Garrote"; +FN_ETTIN_FUN3 = "Bicho De Bajo Nivel"; +FN_CENTAUR_FUN1 = "Idiota Con Escudo"; +FN_CENTAUR_FUN2 = "Capullo Con Escudo"; +FN_CENTAUR_FUN3 = "Bastardo Con Escudo"; +FN_SLAUGHTAUR_FUN1 = "Idiota Estúpido Con Escudo"; +FN_SLAUGHTAUR_FUN2 = "Capullo Asqueroso Con Escudo"; +FN_SLAUGHTAUR_FUN3 = "Bastardo Hijoperra Con Escudo"; FN_BISHOP_FUN1 = "Encapuchao"; -FN_BISHOP_FUN2 = "Tío de Verde"; +FN_BISHOP_FUN2 = "Tío De Verde"; FN_BISHOP_FUN3 = "Piñata Mágica"; FN_ICEGUY_FUN1 = "Cosa Fría"; FN_ICEGUY_FUN2 = "Refresquito"; -FN_ICEGUY_FUN3 = "Licor del Polo"; +FN_ICEGUY_FUN3 = "Licor Del Polo"; FN_ICEGUY_FUN4 = "Helado Andante"; FN_ICEGUY_FUN5 = "Frigo"; FN_ICEGUY_FUN6 = "Insertar Chiste De Hielo Aquí"; -FN_SERPENT_FUN = "Bicho de Pantano"; -FN_WRAITH_FUN = "Pariente de Fraga"; +FN_SERPENT_FUN = "Bicho De Pantano"; +FN_WRAITH_FUN = "Pariente De Fraga"; FN_DRAGON_FUN = "Compra Skyrim"; FN_KORAX_FUN = "El Tío Feo Ese"; FN_FBOSS_FUN = "Tío Ciclao"; @@ -347,61 +356,115 @@ FN_MBOSS_FUN = "Tío Mágico"; FN_CBOSS_FUN = "Tío Santurrón"; FN_HERESIARCH_FUN = "Hostia Puta"; // Additional tags -FN_BOSSBRAIN_FUN = "¡ESPERABAS A JOHN ROMERO PERO ERA YO, MARISA!"; +FN_BOSSBRAIN = "Cerebro De Jefe"; +FN_BOSSBRAIN_FUN = "Avenas Las Buenas"; FN_KEEN_FUN = "Arruinado por Bethesda"; -FN_VOODOO = "Muñeco Vudú de %s"; -FN_VOODOO_NP = "Muñeco Vudú"; +FN_VOODOO = "¿%s?" +FN_VOODOO_NP = "¿Muñeco?"; FN_PIG = "Cerdo"; FN_PIG_FUN = "Cochinillo"; -FN_WOLFGUARD_FUN1 = "Nazi de Bajo Presupuesto"; -FN_WOLFGUARD_FUN2 = "Chiquillo con Pistolilla"; +FN_WOLFGUARD_FUN1 = "Nazi De Bajo Presupuesto"; +FN_WOLFGUARD_FUN2 = "Chiquillo Con Pistolilla"; FN_WOLFGUARD_FUN3 = "Pantalones Marrones"; -FN_WOLFHANS_FUN = "Hans el Gordaco"; +FN_WOLFHANS_FUN = "Hans El Gordaco"; // eviternity tags +FN_ANGEL = "Arcángelus"; FN_ANGEL_FUN = "Un Puto Ángel"; FN_ASTRAL = "Cacodemonio Astral"; FN_ASTRAL_FUN1 = "Bolita Gris"; FN_ASTRAL_FUN2 = "Albóndiga Desaturada"; FN_ASTRAL_FUN3 = "Cáscara Siseante"; -FN_FCAPTAIN = "Capitan Zombi"; +FN_FCAPTAIN = "Capitán Zombi"; FN_FCAPTAIN_FUN1 = "Capullo Verde Tocanarices"; FN_FCAPTAIN_FUN2 = "Enemigo Basura Verde"; -FN_FCAPTAIN_FUN3 = "Huevos Verdes y Spam"; +FN_FCAPTAIN_FUN3 = "Huevos Verdes Y Spam"; FN_ANNIHIL = "Aniquilador"; FN_ANNIHIL_FUN1 = "Cabra Gris"; FN_ANNIHIL_FUN2 = "Cabrinator"; FN_ANNIHIL_FUN3 = "Cabra Mejorada"; -FN_NDEMON = "Demonio de Pesadilla"; +FN_NDEMON = "Demonio De Pesadilla"; FN_NDEMON_FUN1 = "Verdín"; FN_NDEMON_FUN2 = "Verde Cabreado"; -FN_NDEMON_FUN3 = "Demonio de Espinacas"; +FN_NDEMON_FUN3 = "Demonio De Espinacas"; +// eviternity 2 tags +FN_FCORPORAL = "Cabo Zombificado"; +FN_FCORPORAL_FUN1 = "Pasmao En Verde"; +FN_FCORPORAL_FUN2 = "Zombi Balazo"; +FN_FCORPORAL_FUN3 = "Zomboverde"; +FN_ASTRALARACH = "Aracnotrón Astral"; +FN_ASTRALARACH_FUN1 = "Asco De Spam"; +FN_ASTRALARACH_FUN2 = "Bebé Bombardero"; +FN_ASTRALARACH_FUN3 = "Muchos Plasmas"; +FN_ASTRALARACH_FUN4 = "Araña Agrisada"; +FN_VEILIMP = "Imp Encubierto"; +FN_VEILIMP_FUN1 = "Rosa Chillón"; +FN_VEILIMP_FUN2 = "Yogurín Escondido"; +FN_VEILIMP_FUN3 = "Chaval Fucsia"; +FN_VEILIMP_FUN4 = "Se Teletransporta"; +FN_VEILIMP_FUN5 = "Sobresaturado"; +FN_ASTRALGOLD = "Cacodemonio Astral Dorado"; +FN_ASTRALGOLD_FUN1 = "Chico De Oro"; +FN_ASTRALGOLD_FUN2 = "Bola De Oro"; +FN_ASTRALGOLD_FUN3 = "Cacodemon Reluciente"; +FN_ASTRALGOLD_FUN4 = "Bola Brillante"; +FN_ASTRALGOLD_FUN5 = "Amigo Rico"; +FN_DUKE = "Duque Del Infierno"; +FN_DUKE_FUN1 = "Bolas De Verde"; +FN_DUKE_FUN3 = "Dique Infernal"; +FN_DUKE_FUN4 = "Ducha Infernal"; +FN_DUKE_FUN5 = "La Cabra Es Verde"; +FN_DUKE_FUN6 = "Brasil"; +FN_ASTRALBABY = "Bebé Cacodemonio Astral"; +FN_ASTRALBABY_FUN1 = "Cascarilla"; +FN_ASTRALBABY_FUN2 = "Adorable"; +FN_ASTRALBABY_FUN3 = "Bolita Gris"; +FN_ASTRALBABY_FUN4 = "Bolita Siseante"; +FN_NAC = "Cacodemonio Astral De Pesadilla"; +FN_NAC_FUN1 = "La Puta Bola"; +FN_NAC_FUN2 = "Siseos Verdes"; +FN_NAC_FUN3 = "Horripilante"; +FN_NAC_FUN4 = "Terrorífico"; +FN_NAC_FUN5 = "DA CANGUELO"; +FN_NAC_FUN6 = "Albóndiga Hardcore"; +FN_ASTRALFATSO = "Mancubus Astral"; +FN_ASTRALFATSO_FUN1 = "Gran Capullo"; +FN_ASTRALFATSO_FUN2 = "Gordo Cabrón"; +FN_ASTRALFATSO_FUN3 = "Grasa Oscura"; +FN_ASTRALFATSO_FUN4 = "Tocino Tostado"; +FN_NECROMENACE = "Necroamenaca"; +FN_NECROMENACE_FUN1 = "Levántate De Tu Tumba"; +FN_NECROMENACE_FUN2 = "Bastardo Resurrector"; +FN_NECROMENACE_FUN3 = "Lo Que Faltaba"; +FN_NECROMENACE_FUN4 = "10000 Puntos Menos"; +FN_NECROMENACE_FUN5 = "Adivina Que"; +FN_ORIGIN = "El Orígen"; +FN_ORIGIN_FUN = "Bola De Alas"; +FN_SAC = "Cacodemonio Astral Espectro"; +FN_SAC_FUN1 = "Bolita Gris Sigilosa"; +FN_SAC_FUN2 = "Albóndiga Desvanecida"; +FN_SAC_FUN3 = "Cáscara Siseante Oculta"; +FN_GDUKE = "Gran Duque Del Infierno"; +FN_GDUKE_FUN1 = "Bolas De Azul"; +FN_GDUKE_FUN3 = "Gran Dique Infernal"; +FN_GDUKE_FUN4 = "Gran Ducha Infernal"; +FN_GDUKE_FUN5 = "La Cabra Es Azul"; +FN_GDUKE_FUN6 = "Brasil 2"; // ultimate doom 2 tags -FN_ELITEZOMBIE = "Zombi de Élite"; +FN_ELITEZOMBIE = "Zombi De Élite"; FN_ELITEZOMBIE_FUN1 = "Zomborápido"; FN_ELITEZOMBIE_FUN2 = "Te Dispara"; FN_ELITEZOMBIE_FUN3 = "Rubiales"; // obituaries -O_PUSHER = "%k le quitó cuidadosamente las caries a %o."; O_DEEPIMPACT = "%o fue impactad@[ao_esp] profundamente por %k."; O_DEEPIMPACT_WEAK = "%k tosió en la dirección general de %o."; O_EXPLODIUM = "%k infligió explosiones de rodilla severas a %o."; -O_SPREADGUN_RED = "%k le dio a %o un bocado de perdigones."; -O_SPREADGUN_GREEN = "%o fue sluggead@[ao_esp] por %k."; -O_SPREADGUN_WHITE = "%k incendificó a %o."; -O_SPREADGUN_BLUE = "%k puso a %o muy salad@[ao_esp]."; -O_SPREADGUN_BLACK = "%o recibió un trato muy puntiagudo de %k."; -O_SPREADGUN_BLACK_DEBUFF = "%k dejó a %o hech@[ao_esp] un desastre corroído."; -O_SPREADGUN_PURPLE = "A %o le salió un chichón con la bola de plomo de %k."; +O_SPREADGUN = "%k le dio a %o un bocado de perdigones."; O_SPREADGUN_GOLD = "%o se tragó la explosión dorada de %k."; -O_WALLBUSTER_RED = "%k ha destrozado a %o pero bien."; -O_WALLBUSTER_GREEN = "%k convirtió a %o en rosquilla."; -O_WALLBUSTER_BLUE = "%k puso a %o muy MUY salad@[ao_esp]."; -O_WALLBUSTER_PURPLE = "%k infligió una tortura de bolas de plomo a %o."; +O_WALLBUSTER = "%k ha destrozado a %o pero bien."; O_EVISCERATOR = "%o fue descuartizad@[ao_esp] por %k."; O_HELLBLAZER = "%k reventó a %o en cachitos humeantes."; O_SPARKSTER = "%o fue bien chispead@[ao_esp] por %k."; -O_SILVERBULLET = "%o no pudo ignorar el grosor de las balas de %k."; -O_SILVERBULLET2 = "%o fue reventad@[ao_esp] por las gruesas balas de %k."; +O_SILVERBULLET = "%k abrió un agujero muy, muy grande a través de %o."; O_CANDYGUN = "%k hizo probar a %o un sabor dulce (de muerte)."; O_YNYKRON = "%o fue borrad@[ao_esp] instantáneamente por %k."; O_YNYKRONALT = "%o fue aniquilad@[ao_esp] furiosamente por %k."; @@ -413,10 +476,10 @@ O_SHEENHMG = "%k ahogó a %o en balas."; O_QUADRAVOL = "%k hizo deliciosa barbacoa de %o."; O_QUADRAVOL2 = "%o fue ensartad@[ao_esp] por %k."; O_NEWSPARKSTER = "%o fue testigo del poder de la artillería de plasma de %k."; -O_MORTALRIFLE = "%k mató a %o bien muert@[ao_esp]."; -O_MORTALRIFLEALT = "%o atrapó una granada muy mortal de %k."; O_RAYKHOM = "%o recibió un envío exprés de plasma mortal de parte de %k."; O_RAYKHOM2 = "%o presenció el PODER ILIMITADO de %k."; +O_MORTALRIFLE = "%k mató a %o bien muert@[ao_esp]."; +O_MORTALRIFLEALT = "%o atrapó una granada muy mortal de %k."; O_RAFANKOS = "%o no pudo hacer nada contra el arma definitiva de %k."; O_POUND = "%o se llevó una gran impresión del aterrizaje de %k."; O_DASH = "%o fue descuajeringad@[ao_esp] a todo gas por %k."; @@ -428,13 +491,38 @@ O_DOKIDOKI = "%o fue derrotad@[ao_esp] por el poder del amor de %k."; O_MOTH = "%o fue asaltad@[ao_esp] por las polillas de %k."; O_MOTHSELF = "%o fue asaltad@[ao_esp] por sus propias polillas."; O_MOTH2 = "%o fue asaltad@[ao_esp] por polillas."; -O_MASHIRO1 = "%o debería haber dejado la luz encendida."; -O_MASHIRO2 = "%o ahora pertenece a la Dama Blanca."; -O_MASHIRO3 = "%o ha cometido un error terrible."; -O_MASHIRO4 = "%o desapareció misteriosamente."; -O_MASHIRO5 = "%o enfureció a la polilla equivocada."; -O_ENDLEVEL = "Parece que a %o le toca hacer pistol start."; +O_ANDIRA = "%o enfureció a la polilla equivocada."; +O_ENDLEVEL = "%o tuvo un peculiar contratiempo relacionado con el teletransporte."; O_MYKRADVO = "%o no pudo esconderse de la ira vengativa de %k."; +O_LEADBALL = "A %o le salió un chichón con la bola de plomo de %k."; +O_SALTSHOT = "%k puso a %o muy salad@[ao_esp]."; +// self obituaries +SO_EXPLODIUM = "%o olvidó que su pistola causa daño por área."; +SO_EXPLODIUMALT = "%o intentó atrapar su propia granada."; +SO_SPREADGUN_GOLD = "%o se tragó su propia explosión dorada."; +SO_EVISCERATOR = "%o hizo rebotar metralla en su propia cara."; +SO_EVISCERATORALT = "%o no es un@[a_esp] máquina del antiaéreo."; +SO_HELLBLAZER = "%o es definitivamente buen@[ao_esp] al Doom."; +SO_SPARKSTER = "%o se chispeó a sí mism@[ao_esp]."; +SO_SILVERBULLET = "%o disparó un proyectil de 35mm a bocajarro y ahora lo lamenta."; +SO_SILVERBULLET2 = "%o olvidó que los gases de escape del Silver Bullet están muy calientes."; +SO_CANDYGUN = "%o intentó probar su propio caramelo (y murió)."; +SO_CANDYGUNALT = "%o intentó atrapar su propia granada de caramelo."; +SO_CANDYGUNCOMBO = "%o intentó atrapar su propia Pistola de Caramelo."; +SO_YNYKRON = "%o se borró instantáneamente."; +SO_YNYKRONALT = "%o no mantuvo la distancia suficiente de su propia singularidad."; +SO_PLASMABLAST = "%o se tragó su propio plasma."; +SO_QUADRAVOL = "%o ciertamente es buen@[ao_esp] al Doom."; +SO_QUADRAVOL2 = "%o falló el salto con cohete.."; +SO_QUADRAVOLF = "%o olvidó tirarse al suelo y rodar."; +SO_NEWSPARKSTER = "%o realmente no debería usar artillería de plasma a una distancia tan corta."; +SO_RAYKHOM = "%o olvidó que la Ray-Khom es un arma de largo alcance."; +SO_RAYKHOM2 = "%o puede sentir como John Romero se ríe de %h."; +SO_MORTALRIFLE = "%o cometió un error muy mortal."; +SO_MORTALRIFLEALT = "%o debería haber mantenido la distancia de esas granadas tan mortales."; +SO_RAFANKOS = "%o no debería usar superarmas a bocajarro."; +SO_LEADBALL = "%o no debería jugar con sus propias bolas."; +SO_SALTSHOT = "%o se vio envuelt@[ao_esp] en el fuego cruzado de su propia torreta."; // edited vanilla obituaries OB_SUICIDE = "%o se hizo un sudoku."; OB_FALLING = "%o se partió las patas."; @@ -445,7 +533,7 @@ OB_SLIME = "%o fue moquead@[ao_esp]."; OB_LAVA = "%o se sobrecalentó."; OB_BARREL = "%o fue barrilead@[ao_esp]."; OB_SPLASH = "%o casi que se puso demasiado cerca de eso."; -OB_R_SPLASH = "%o hizo un Icarus."; +OB_R_SPLASH = "%o es buen@[ao_esp] al Doom."; OB_ROCKET = "%o se comió un cohete."; OB_KILLEDSELF = "%o se autodestruyó."; OB_VOODOO = "%o no debería haber tocado ese muñeco."; @@ -461,7 +549,7 @@ OB_UNDEADHIT = "%o recibió un tortazo huesudo."; OB_IMPHIT = "%o fue arañad@[ao_esp] hasta morir."; OB_CACOHIT = "%o fue comid@[ao_esp] por una albóndiga flotante."; OB_DEMONHIT = "%o fue mordisquead@[ao_esp]."; -OB_SPECTREHIT = "%o fue mordiquead@[ao_esp] sigilosamente."; +OB_SPECTREHIT = "%o fue mordisquead@[ao_esp] sigilosamente."; OB_BARONHIT = "%o fue azotad@[ao_esp] por un demonio tocho."; OB_KNIGHTHIT = "%o fue azotad@[ao_esp] por un demonio no tan tocho."; OB_ZOMBIE = "%o fue acribillad@[ao_esp] por un simple zombi."; @@ -478,6 +566,12 @@ OB_KNIGHT = "%o fue churruscad@[ao_esp] por plasma verde."; OB_SPIDER = "%o se comió todas esas balas."; OB_BABY = "%o hizo enfadar al ñiño araña."; OB_CYBORG = "%o no siguió el consejo."; +ID24_OB_BANSHEE = "%o recibió un ardiente grito en toda la cara."; +ID24_OB_GHOUL = "%o fue acribillado por las calaveritas."; +ID24_OB_MINDWEAVER = "%o no esperaba que los demonios les dieran ametralladoras a los niños."; +ID24_OB_SHOCKTROOPER = "%o se llevó un plasma de través."; +ID24_OB_TYRANT = "%o aun no siguió el consejo."; +ID24_OB_VASSAGO = "%o no pudo soportar tanto calor."; OB_DOG = "%o hizo enfadar al perrete."; OB_CHICKEN = "%o recibió el PICO."; OB_BEAST = "%o fue flambead@[ao_esp] por un amigo grandote."; @@ -501,7 +595,9 @@ OB_WIZARD = "%o se hizo chocapic."; OB_WIZARDHIT = "%o tuvo un encuentro íntimo con un puñetero mago."; OB_FIREDEMON = "%o se quemó."; OB_DEMON1 = "%o se comió la bola de fuego de un lagarto grandote."; +OB_DEMON1HIT = "%o se llevó un mordisco de un lagarto grandote."; OB_DEMON2 = "%o se comió los mocos de un lagarto grandote."; +OB_DEMON2HIT = "%o se llevó un mordisco de un lagarto grandote."; OB_ETTIN = "%o se llevó un coscorrón del perrito doble."; OB_CENTAUR = "%o fue acuchillad@[ao_esp] por un idiota con escudo."; OB_SLAUGHTAURHIT = "%o fue acuchillad@[ao_esp] por un superidiota con escudo."; @@ -518,17 +614,34 @@ OB_FBOSS = "%o fue verdeado por la espada esa del tío ciclao."; OB_MBOSS = "%o fue reventado por la varita explosiva esa del tío mágico."; OB_CBOSS = "%o fue fantasmado por la verga fantasma del tío santurrón."; OB_HERESIARCH = "%o lo vio venir."; -OB_PIG = "%o enfureció a los jamones."; // for when gzdoom fixes this (come on, graf) +OBITUARY_PIG = "%o enfureció a los jamones."; OB_WOLFGUARD = "%o fué balead@[ao_esp] por algún cobarde."; OB_WOLFSS_ORIG = "%o fue tiroteado por rubitos."; OB_WOLFHANS = "%o no pudo soportar semejante grosor."; // eviternity obituaries -OB_FCAPTAIN = "%o fue chispad@[ao_esp] por un tío verde cabreado."; -OB_ANNIHIL = "%o fue exterminad@[ao_esp] por una cibercabra."; -OB_NDEMON = "%o fue estronchad@[ao_esp]."; +OBITUARY_FORMERCAPTAIN = "%o fue chispad@[ao_esp] por un tío verde cabreado."; +OBITUARY_ANNIHILATOR = "%o fue exterminad@[ao_esp] por una cibercabra."; +OBITUARY_NIGHTMAREDEMON = "%o fue estronchad@[ao_esp]."; OB_ANGEL1 = "%o cabreó a ese ángel."; OB_ANGEL2 = "%o cabreó mucho a ese ángel."; OB_ASTRAL = "%o fue escaldad@[ao_esp] por una amigable bola gris."; +// eviternity 2 obituaries +OB_CORPORAL = "%o pilló una bala gorda del tío de verde."; +OB_ASTRALBABY = "%o se tragó un montón de plasma."; +OB_VEILIMP = "%o fue escaldad@[ao_esp] por un mocoso rosado."; +OB_GOLDENCACO = "%o cree que igual eso fue demasiado."; +OB_DUKE = "%o fue enviad@[ao_esp] a Brasil."; +OB_ASTRALKIRBY = "%o fue tostad@[ao_esp] por una pequeñita bola amigable."; +OB_NAC = "%o no pudo escapar de esa cosa verde."; +OB_ASTRALFATSO = "%o REALMENTE fue víctima de la gordura."; +OB_NECRO = "%o se hizo mierda por culpa de ese estúpido necromante."; +OB_NECROF = "%o se llevó un buen susto."; +OB_GOLDENBOSS = "%o ciertamente cree que eso ha sido demasiado."; +OB_ORIGIN1 = "%o se metió con la ángel equivocada."; +OB_ORIGIN2 = "%o realmente hizo cabrear esa bola de alas."; +OB_ORIGIN3 = "%o no esperaba que hubiese un tercer asalto."; +OB_XSAC = "%o fue escaldad@[ao_esp] por una sigilosa bola gris."; +OB_XGDUKE = "%o fue enviad@[ao_esp] a Brasil, pero más fuerte."; // ultimate doom 2 obituaries OB_ELITEZOMBIE = "%o fue disparad@[ao_esp] rápidamente por un tipo de élite."; // misc @@ -554,24 +667,19 @@ D_BARRIER = "El Revestimiento Elemental se ha desvanecido."; D_DEVASTATION = "El poder de la Marca se ha ido."; D_SPRITE = "El Sprite Divino ha soplado su último aliento."; D_TETHERFAIL = "El vínculo del Enlace de Seguridad fue obstruído."; -D_MASHIRO = "\cjSabe donde estás...\c-"; -SWWM_YNYKRONREADY = "Artefacto Ynykron listo para disparar."; -SWWM_SWAPWEAPON = "\cjPulsa \cfUsar\cj para cambiar \cf%s\cj por \cf%s\cj.\c-"; -SWWM_TITLEPRESENTSB = "presenta"; -SWWM_TITLEPRESENTS = "presenta"; -SWWM_TITLEMODBYA = "un mod de"; -SWWM_TITLEMODBY = "un mod de \cxMarisa Kirisame"; +D_ANDIRA = "\cjSabe donde estás...\c-"; +SWWM_YNYKRONREADY = "El Artefacto Ynykron está listo para disparar."; +SWWM_SWAPWEAPON = "\cjPulsa \cfUsar\cj para cambiar\n\cf%s\cj por \cf%s\c-"; +SWWM_TODOWEAPON = "\cjEl \cf%s\cj aun no está implementado.\c-"; +SWWM_TODOWEAPON_FEM = "\cjLa \cf%s\cj aun no está implementada.\c-"; SWWM_TITLEINTROA = "Ese día, la humanidad se vió en peligro, enfrentándose a su propia perdición."; SWWM_TITLEINTROB = "Pero una máquina se alzó, decidida a luchar, y poner fin a toda esta invasión."; SWWM_TITLEINTROC = "Los demonios aprenderían a temer la máquina, la cual conocen por un solo nombre..."; -SWWM_TITLESCROLL2 = "Un maravilleante mod de gameplay para GZDoom por Marisa Kirisame de UnSX Team"; +SWWM_TITLESCROLL2 = "Un maravilleante mod de Doom por Mari the Deer"; SWWM_TITLESCROLL3 = "Modelos 3D diseñados con cariño con texturas pintadas a mano de 256 colores con dithering"; -SWWM_TITLESCROLL4 = "Más de 60 mil líneas de ZScript, y aun contando (dios me ayude)"; +SWWM_TITLESCROLL4 = "Más de 60 mil líneas de código a medida en ZScript, y aun contando (dios me ayude)"; SWWM_TITLESCROLL5 = "El lore más profundo a este lado del Modiverso de Doom"; SWWM_TITLESCROLL6 = "¡Y mucho mucho más!"; -SWWM_TITLESCROLL7 = "Saludos a Mub, Ribbed, Slemg, Bunr, Kegbine, Term-kun, Hype64, Bartendy, Skelly, Mr. BIG SHOT WildWeasel, Endy, Mima-sama, Sinkie, BillowPlaster, Disgusting Dog Water, Dangle Logo, Lämp Paipu, Leek Spah, Boingy, MarTREE, Dusty Demon Bread, Roasted Rock, Ed the Netcode Boy, Thirst Cactus, JimJam, Cappy Jay, A Nom, Missy Fits, Minor Cookie, Squid Kid, YukiCute, MafSulk, FineRaff25, NetroRutcase, ShudTheFugUpRyan, Kobl, Cacous Seriodemon, Zomb, Man of Chins, Bun Pun, Zikeous Shadestructor, Blimyot, Baja Blast Tittums, DrySpy.py, Typo Gem, Wantopus, Morf, Daedalus, Popato, SpengRob, Sgt. Shellpost, Loud M, Snk, Donut, C.Kid, Emit Birb, You Go To Sleep, Rach, Le No Chicken, Murasa, Smart Cactus Dude, Phantomboobs, Sanae Kochiya, Gardeboy, Cat, HK417, Smol Koa, Joe Mama, Jahn, Guta, Glue, Atan, Schweet Prints, Angury Teeth Practitioner, Sell Her, MiSiFu, Portuguese Sausage, Scoob Stub, Actually Jabba, Very Honest Cat, Chiaki's Tit Mole, Homie, Snacks, Tubz, Toof, Teef, Frisp, Trashkat, Succ 'n Spicy, Melissa Follower When, Shokku, Scummyboi, Kat Gravity Rush, John Romero, John Carmack, Tim Allen, Tim Sweeney y por último pero no menos importante mi querido dragón mascota"; -SWWM_TITLESCROLL8 = "He intentado estrujar todos los nombres que he podido ahí, que haya podido recordar, por lo menos, así que si no estás ahí y quieres entrar, solo pídelo"; -SWWM_TITLESCROLL9 = "Ya no queda nada más que ver aquí, el scroll ahora hará bucle, see you again, have a nice day"; SWWM_TITLESUB1 = "El Mundo Está En Peligro Y Acabamos De Mandar\nEste Robot Culogordo Guasón Para Salvarlo!?"; SWWM_TITLESUB3 = "El mod anteriormente conocido como SWWM GZ"; SWWM_TITLESUB4 = "Lo siento mucho, Icarus, pero ya\nno puedes llamarlo Swim Jizz"; @@ -585,19 +693,37 @@ SWWM_TITLESUB11 = "¿Slaughterwads demasiado difíciles? ¡No hay problema!\n¡S SWWM_TITLESUB12 = " ¿Sabías que este subtítulo está desencuadrado?"; SWWM_TITLESUB13 = "Me gustan las grandes explosiones y no puedo mentir"; SWWM_TITLESUB14 = "Si las gafas son buenas para la vista,\n¿por que no llevan lentes?"; +SWWM_INTERDONE = "COMPLETADO"; +SWWM_INTERNEXT = "PRÓXIMA PARADA"; +SWWM_INTERKILLS = "MONSTRUOS DERROTADOS:"; +SWWM_INTERITEMS = "ÍTEMS RECOLECTADOS:"; +SWWM_INTERSECRETS = "SECRETOS DESCUBIERTOS:"; +SWWM_INTERTIME = "TU TIEMPO:"; +SWWM_INTERPAR = "TIEMPO PAR:"; +SWWM_INTERTOTAL = "TIEMPO TOTAL:"; SWWM_YOURSELF = "Tú"; SWWM_DOKIDOKI = "El Poder del Amor™"; SWWM_GRAVKILL = "Gravedad"; SWWM_PARRYKILL = "Proyectiles Devueltos"; SWWM_SETSLOTSTRICT = "\cg!!!ADVERTENCIA!!!\c-\n\cj\"setslotstrict\" está activado. Esto causará que las armas del mod no tengan ranuras asignadas. Por favor, ve a Opciones Misceláneas y cambia la opción de \"KEYCONF de Armas/Jugadores estricto\".\c-"; +SWWM_WARNALTHUD = "HUD ALTERNATIVO NO SOPORTADO"; +SWWM_GIVEALLWARN = "No es la mejor forma de experimentar el mod, %s\c-.\nUsa 'give %s' de nuevo si insistes."; SWWM_WIDESPREAD = "Modo Amplio"; SWWM_TIGHTSPREAD = "Modo Concentrado"; SWWM_YNYKRONFORWARD = "Modo de Rayo"; // desya / forward SWWM_YNYKRONBACKWARD = "Modo de Vórtice"; // busa / backward +SWWM_GAMMASPEED1 = "Automático"; +SWWM_GAMMASPEED2 = "Súper-Automático"; SWWM_MRMODE1 = "Disparo de Precisión"; SWWM_MRMODE2 = "Disparo en Clúster"; SWWM_MRMODE3 = "Disparo en Chorro"; SWWM_MRMODE4 = "Disparo de Presión"; +SWWM_MRLOW = "POCAS BALAS"; // "MUNICIÓN BAJA" is too long +SWWM_MRNONE = "VACÍO"; +SWWM_MRCHARGE = "CARGANDO"; +SWWM_MRREADY = "LISTO"; +SWWM_SHEENREADY = "La Ametralladora Sheen se ha enfriado."; +SWWM_RAYKHOMREADY = "Los condensadores de la Ray-Khom se han recargado."; SWWM_DMRANK = "Posición:"; SWWM_DMSPREAD = "Distancia:"; SWWM_PLACE1 = "1º"; @@ -609,9 +735,6 @@ SWWM_PLACE3_GENDER1 = "3ª"; SWWM_PAUSE = "PAUSA"; // weapon tooltips SWWM_TTNOTE = "Nota: La ayuda de armas se puede desactivar en Opciones de DEMOLITIONIST."; -TT_PUSHER = -"\cfPrimario:\c- Taladrar.\n" -"\cfSecundario:\c- Ataque cargado."; TT_DEEPIMPACT = "\cfPrimario:\c- Impulso de aire.\n" "\cfSecundario:\c- Disparo cargado.\n" @@ -626,9 +749,8 @@ TT_EXPLODIUM2 = "\cfRecarga:\c- Recargar arma(s)."; TT_SPREADGUN = "\cfPrimario:\c- Disparar arma.\n" -"\cfSecundario:\c- Seleccionar munición.\n" -"\cfRecarga:\c- Recargar / cambiar munición.\n" -"\cfSecundario+Primario:\c- Descargar munición."; +"\cfSecundario:\c- Recargar munición especial.\n" +"\cfRecarga:\c- Recargar arma."; TT_WALLBUSTER = "\cfPrimario:\c- Disparar un cañón.\n" "\cfSecundario:\c- Disparar un cilindro.\n" @@ -641,8 +763,7 @@ TT_EVISCERATOR = TT_HELLBLAZER = "\cfPrimario:\c- Cargar / disparar cohetes.\n" "\cfSecundario:\c- Cargar / disparar granadas.\n" -"\cfZoom:\c- Seleccionar munición.\n" -"\cfRecarga:\c- Recargar / cambiar munición.\n" +"\cfRecarga:\c- Recargar arma.\n" "\cx(Más controles en la biblioteca)\c-"; TT_SPARKSTER = "\cfPrimario:\c- Disparo de orbe.\n" @@ -651,10 +772,9 @@ TT_SPARKSTER = "\cfRecarga:\c- Recarga / doble carga."; TT_SILVERBULLET = "\cfPrimario:\c- Disparar arma.\n" -"\cfSecundario:\c- Seleccionar munición.\n" +"\cfSecundario:\c- Accionar perno.\n" "\cfZoom:\c- Usar mira.\n" -"\cfRecarga:\c- Recargar / cambiar munición.\n" -"\cfSecundario+Primario:\c- Accionar perno manualmente."; +"\cfRecarga:\c- Recargar arma."; TT_CANDYGUN = "\cfPrimario:\c- Disparar arma.\n" "\cfSecundario:\c- Lanzar cargador.\n" @@ -675,41 +795,40 @@ TT_PLASMABLAST = TT_PLASMABLAST2 = "\cfPrimario:\c- Disparar arma derecha.\n" "\cfSecundario:\c- Disparar arma izquierda.\n" -"\cfRecarga:\c- Recargar arna(s)."; +"\cfRecarga:\c- Recargar arma(s)."; TT_PUNTZERBETA = "\cfPrimario:\c- Disparar arma.\n" "\cfSecundario:\c- Modo de disparo rápido.\n" "\cfRecarga:\c- Recargar arma."; TT_PUNTZERGAMMA = -"\cfPrimario:\c- Fuego automático.\n" -"\cfSecundario:\c- Fuego super-automático.\n" +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Alternar velocidad.\n" "\cfRecarga:\c- Recargar arma."; TT_SHEENHMG = -"\cfPrimario:\c- Fuego lento.\n" -"\cfSecundario:\c- Fuego moderado.\n" -"\cfZoom:\c- Fuego rápido."; +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Incrementar velocidad.\n" +"\cfZoom:\c- Reducir velocidad."; TT_QUADRAVOL = "\cfPrimario:\c- Disparar arma.\n" "\cfSecundario:\c- Bombear arma.\n" "\cfRecarga:\c- Cargar células.\n" -"\cfZoom+Primario:\c- Alternar modo disperso.\n" -"\cfZoom+Secundario:\c- Cambiar postura de arma."; +"\cfZoom:\c- Cambiar postura de arma."; TT_NEWSPARKSTER = "\cfPrimario:\c- Disparo de Kinylum.\n" "\cfSecundario:\c- Disparo de Nokron.\n" "\cfPrimario+Secundario:\c- Disparo combinado.\n" "\cfRecarga:\c- Cargar Kinylum.\n" "\cfZoom:\c- Cargar Nokron."; -TT_MORTALRIFLE = -"\cfPrimario:\c- Disparar arma.\n" -"\cfSecundario:\c- Disparar granada.\n" -"\cfZoom:\c- Cambiar modo de disparo.\n" -"\cfRecarga:\c- Recargar arma."; TT_RAYKHOM = "\cfPrimario:\c- Disparar arma.\n" "\cfSecundario:\c- Ataque de rayo.\n" "\cfRecarga:\c- Recargar arma.\n" -"\cfZoom:\c- Recargar batería."; +"\cfZoom:\c- Usar mira."; +TT_MORTALRIFLE = +"\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Disparar/recargar granada.\n" +"\cfZoom:\c- Cambiar modo de disparo.\n" +"\cfRecarga:\c- Recargar arma."; TT_RAFANKOS = "\cfPrimario:\c- Haz singular.\n" "\cfSecundario:\c- Haz múltiple.\n" @@ -722,23 +841,31 @@ BT_SPIDER2 = "Hermana Arácnida"; BT_DIMPLE = "Escuadrón de Demonios Biomecánicos"; BT_IOS = "Baramún, Icono del Pecado"; BT_CYBIE2 = "El Último Tirano"; +BT_CYBIE3 = "Guardianes del Silo de Almas"; +BT_TYRANT = "Hijo de Erebus"; +BT_TYRANT2 = "Últimos Hijos de Erebus"; BT_LICHES = "Liches de Hierro"; BT_MINOTAUR = "Sirvientes Mazotauros"; BT_DSPARIL = "D'Sparil, Jinete de Serpiente"; BT_DSPARIL2 = "D'Sparil, Jinete de Serpiente"; BT_CLERIC = "Traductus, Patriarca de la Iglesia"; BT_FIGHTER = "Zedek, Mariscal de la Legión"; -BT_MAGE = "Menelkir, Archimago del Arcanum"; +BT_MAGE = "Menelkir, Archimago del Arcánum"; BT_DRAGON = "Wyvern Mortal, Bestia del Inframundo"; BT_HERESIARCH = "Heresiarca, Hechicero Demoníaco"; BT_KORAX = "Korax, Demonio Embaucador"; BT_DEATHKINGS = "Reyes de la Muerte de la Ciudadela Oscura"; +BT_DOOMTEST = "Jefe de Mapa de Test"; +// fun boss tags BT_CYBIE_FUN = "Dispara Hasta Que Muera"; BT_SPIDER_FUN = "Cerebrito Idiota"; BT_SPIDER2_FUN = "Cerebrito Idiota Bis"; BT_DIMPLE_FUN = "Gordos Grasientos y Armada Arácnida"; BT_IOS_FUN = "Cabra Emparedada"; -BT_CYBYE2_FUN = "Gran y Estúpido Aguafiestas"; +BT_CYBIE2_FUN = "Gran y Estúpido Aguafiestas"; +BT_CYBIE3_FUN = "La Hostia de Vacas"; +BT_TYRANT_FUN = "Dispara Hasta Que Muera, Ahora En Verde"; +BT_TYRANT2_FUN = "Dispara Hasta Que Mueran Todos, Aun En Verde"; BT_LICHES_FUN = "El Escuadrón Risitas"; BT_DSPARIL_FUN = "El Brujo Rojo Ese y Lagarto"; BT_DSPARIL2_FUN = "El Brujo Rojo Ese"; @@ -749,13 +876,17 @@ BT_DRAGON_FUN = "Un Puñetero Dragón"; BT_HERESIARCH_FUN = "Tío Rojo Muy Cabreado"; BT_KORAX_FUN = "Korax el Bastardo Feo Asqueroso"; BT_DEATHKINGS_FUN = "Un Refrito de Jefes muy Anticlimático"; +BT_DOOMTEST = "Avenino, Azote de los Cuáqueros"; // eviternity -BT_ARCHANGELUS = "Archangelus, Agente Celestial"; +BT_ARCHANGELUS = "Arcángelus, Agente Celestial"; BT_ARCHANGELUS_FUN = "Un Putísimo Ángel Enorme"; +// eviternity 2 +BT_ORIGIN = "El Orígen De La Plaga Astral"; +BT_ORIGIN_FUN = "Ángel Bíblicamente Correcto"; // boss oneliners -BOSSLINE_IOS = "\crIcono del Pecado\c-: !oremoR nhoJ ,ím a emratam sebed ogeuj le ranag araP¡"; -BOSSLINE_DSPARIL = "\cgD'Sparil\c-: .senrac sut érarutroT"; -BOSSLINE_ARCHANGELUS = "\cfArchangelus\c-: Mortal insensato, ¡solo tu muerte es eterna!"; +BOSSLINE_IOS = "\crIcono del Pecado\c*: !oremoR nhoJ ,ím a emratam sebed ogeuj le ranag araP¡\c*"; +BOSSLINE_DSPARIL = "\cgD'Sparil\c*: .senrac sut érarutroT\c*"; +BOSSLINE_ARCHANGELUS = "\cfArcángelus\c*: Mortal insensato, ¡solo tu muerte es eterna!\c*"; // targetter SWWM_OVERKILL = "Sobremuerte"; SWWM_MULTIKILL = "Racha"; @@ -774,15 +905,29 @@ SWWM_FROGGED = "CROAC"; SWWM_PARRY = "Parada"; SWWM_PPARRY = "Parada Perfecta"; SWWM_TRESPAWN = "\cu[\cf%ds\c- para reaparecer\cu]\c-"; +SWWM_ASSKILL = "De Culo"; +SWWM_LOSKILL = "No Visto"; +SWWM_AIRKILL = "Aéreo"; +SWWM_TELEKILL = "SOBREESCRITO"; +SWWM_REVKILL = "Venganza"; +SWWM_FARKILL = "A Distancia"; +SWWM_OPARRY = "Redirección"; // score messages -SWWM_FINDSECRET = "\cf%s\cf encontró un secreto. +%d\c-"; -SWWM_FINDKEY = "\cf%s\cf obtuvo la %s\cf. +%d\c-"; -SWWM_LASTSECRET = "\cf%s\cf encontró el último secreto. +%d\c-"; -SWWM_LASTITEM = "\cf%s\cf obtuvo el último ítem. +%d\c-"; -SWWM_LASTMONSTER = "\cf%s\cf mató al último enemigo. +%d\c-"; +SWWM_FINDSECRET = "\cfEncontraste un secreto. +%d\c-"; +SWWM_FINDSECRETREM = "\cf%s\cf encontró un secreto. +%d\c-"; +SWWM_FINDKEY = "\cfObtuviste la %s\cf. +%d\c-"; +SWWM_FINDKEYREM = "\cf%s\cf obtuvo la %s\cf. +%d\c-"; +SWWM_LASTSECRET = "\cfEncontraste el último secreto. +%d\c-"; +SWWM_LASTSECRETREM = "\cf%s\cf encontró el último secreto. +%d\c-"; +SWWM_LASTITEM = "\cfObtuviste el último ítem. +%d\c-"; +SWWM_LASTITEMREM = "\cf%s\cf obtuvo el último ítem. +%d\c-"; +SWWM_LASTMONSTER = "\cfMataste al último enemigo. +%d\c-"; +SWWM_LASTMONSTERREM = "\cf%s\cf mató al último enemigo. +%d\c-"; SWWM_NEWLORE = "Hay nuevas entradas disponibles en la Biblioteca."; -SWWM_SELLEXTRA = "\cf%s\cf vendió un %s\cf extra. +%d\c-"; -SWWM_SELLEXTRA_FEM = "\cf%s\cf vendió una %s\cf extra. +%d\c-"; +SWWM_SELLEXTRA = "\cfVendiste un %s\cf extra. +%d\c-"; +SWWM_SELLEXTRA_FEM = "\cfVendiste una %s\cf extra. +%d\c-"; +SWWM_SELLEXTRAREM = "\cf%s\cf vendió un %s\cf extra. +%d\c-"; +SWWM_SELLEXTRAREM_FEM = "\cf%s\cf vendió una %s\cf extra. +%d\c-"; SWWM_ALLCLEAR = "\cx¡Nivel despejado! \cf+%d\c-"; SWWM_NOTCLEAR = "\cx¿Nivel no despejado?\c-"; SWWM_ALLCLEARAGAIN = "\cx¿¡Nivel despejado... otra vez!? \cf+%d\c-"; @@ -795,13 +940,13 @@ SWWM_INTERTIP = "Consejo #%d:"; SWWM_INTERTIP1 = "La Demolicionista es inmune al ahogamiento, veneno e incluso daño por caída (excluyendo hoyos de muerte instantánea)."; SWWM_INTERTIP2 = "El fuego secundario de la Pistola de Explodium tiene una carga explosiva proporcional al número de balas restantes en el cargador."; SWWM_INTERTIP3 = "Tu combustible se regenera con el tiempo, pero cuanto más uses el propulsor, más tardará."; -SWWM_INTERTIP4 = "El Pusher puede resbalarse de tus manos con el fuego secundario si no le da a nada, sin embargo esto puede ser efectivo como ataque a distancia."; +SWWM_INTERTIP4 = "El Deep Impact parecerá un juguete, pero es muy útil para mantener la distancia con los enemigos, y puede hasta librarte de bombardeos de proyectiles de un soplido."; SWWM_INTERTIP5 = "Se guardarán copias extra de ítems en tu inventario si no pueden ser usados inmediatamente, esto incluye hasta salud y armadura."; SWWM_INTERTIP6 = "La Omnivisión facilita encontrar llaves y salidas secretas en los mapas."; SWWM_INTERTIP7 = "Tal como su nombre indica, la Wallbuster puede cargarse paredes y otros obstáculos, dependiendo de su tamaño y el número de cañones que dispares."; SWWM_INTERTIP8 = "El Eviscerator puede despejar salas y pasillos enteros, pero ten en cuenta que los fragmentos pueden rebotarte de vuelta si no tienes cuidado."; SWWM_INTERTIP9 = "Mientras caminas, los jets compensadores del Silver Bullet reducirán la mayoría del retroceso al disparar, pero puede que hagan algo de daño si no llevas armadura."; -SWWM_INTERTIP10 = "Al igual que otras armas de energía de funcionamiento similar, los fuegos primario y secundario del Sparkster se pueden combinar con resultados letales."; +SWWM_INTERTIP10 = "Al igual que otras armas de energía de funcionamiento similar, los fuegos primario y secundario de la Carabina Biospark se pueden combinar con resultados letales."; SWWM_INTERTIP11 = "La Lämpara puede atraer un tipo poco común de polilla que es mucho más agresiva que otras en sus ataques. Se reconoce fácilmente por su color blanco y mayor tamaño."; SWWM_INTERTIP12 = "El Refrescador siempre se autoactivará si estás a punto de morir, aunque a veces puede que no sea suficiente para salvarte..."; SWWM_INTERTIP13 = "El Artefacto Ynykron mata instantáneamente todo lo que tengas en el punto de mira, a menos que sea realmente indestructible, aunque normalmente eso solo puede ser si es un dios. ¿No estarás pensando en enfrentarte a algún dios, verdad?"; @@ -811,24 +956,24 @@ SWWM_INTERTIP16 = "Encontrar secretos, ítems importantes, y conseguir ciertos l SWWM_INTERTIP17 = "El Menú de Demolicionista es muy útil, no te olvides de asignar una tecla para abrirlo."; SWWM_INTERTIP18 = "Todas las armas tienen un ataque rápido a melé disponible a través de un botón dedicado. Con armas a una mano darás un puñetazo, con armas a dos manos golpearás con ellas."; SWWM_INTERTIP19 = "Con la combinación adecuada de impulsar y saltar por las paredes, es perfectamente posible mantenerse en el aire durante largos periodos de tiempo."; -SWWM_INTERTIP20 = "Las llaves y coleccionables tienen animaciones en primera persona al recogerse. Si esto resulta molesto puedes desactivarlo en las opciones del mod."; +SWWM_INTERTIP20 = "Los coleccionables especiales tienen animaciones en primera persona al recogerse. Si esto resulta molesto puedes desactivarlo en las opciones del mod."; SWWM_INTERTIP21 = "¡Aumenta tu puntuación! Cuantos más enemigos elimines, mejor. No te olvides de hacer uso de esos puntos en la tienda in-game cuando puedas."; SWWM_INTERTIP22 = "Con el ritmo adecuado, puedes usar el ataque rápido a melé para desviar proyectiles. Incluso es posible mandarlos de vuelta a su dueño, con daño incrementado si te encuentras bajo los efectos de un Ragekit."; SWWM_INTERTIP23 = "¿Sabías que Saya realmente odia la UAC?\n\n¿Que? ¿Ya sabías eso? Vaya, pues entonces ya no se me ocurre que otra cosa contarte."; SWWM_INTERTIP24 = "Puedes embestir contra enemigos para empujarlos fuera de tu camino. Los más débiles puede que mueran inmediatamente por el impacto y salgan volando."; SWWM_INTERTIP25 = "Si haces una embestida en el aire apuntando directamente al suelo, puede que aterrices con la fuerza suficiente para causar una onda de choque, apartando a la mayoría de enemigos a tu alrededor."; -SWWM_INTERTIP26 = "Puedes activar objetos y abrir puertas a puñetazos. Esto también se puede hacer con la munición de Bola de Plomo del Trabuco, a excepción de los botones de salida."; -SWWM_INTERTIP27 = "Los efectos corrosivos de los Cartuchos Negros del Trabuco pueden acoplarse, hasta un grado letal si alcanzas un objetivo de lleno. Además de eso, otros objetivos cercanos puede que también noten cierto dolor extra de los humos nocivos que se desprenderán, y dispersen sus efectos incluso más allá."; -SWWM_INTERTIP28 = "La munición incendiaria es inefectiva bajo el agua, por razones obvias."; -SWWM_INTERTIP29 = "El amor es lo más poderoso que existe en el mundo. No odies a los que son diferentes. Todos debemos permanecer unidos."; +SWWM_INTERTIP26 = "Puedes activar objetos y abrir puertas a puñetazos. Si te va la violencia, también puedes activarlos con una embestida."; +SWWM_INTERTIP27 = "El Trabuco puede ser complicado de usar, per compensa al ser mucho más destructivo que una escopeta típica."; +SWWM_INTERTIP28 = "La Demolicionista pesa demasiado para nadar y se hundirá rápidamente. Pero no te preocupes, los jets propulsores también funcionan bajo el agua."; +SWWM_INTERTIP29 = "\"Cualquiera con un alma puede usar magia, pero solo aquellos con amor en su corazón podrán realmente alcanzar su maestría.\"\n — LS"; SWWM_INTERTIP30 = "El Silver Bullet dispara con una fuerza tal que sus balas liberan ondas de choque al atravesar el aire (y los enemigos), causando daño adicional. También puede atravesar algunas paredes."; SWWM_INTERTIP31 = "Al tumbarte con el Silver Bullet se desacoplarán los compensadores de retroceso, librándote de su calor dañino, a costa de movilidad."; SWWM_INTERTIP32 = "Los maravillantes efectos del Sandwich de Queso a la Parrilla te permiten sobrevivir básicamente cualquier cosa al autoactivarse. ¡Incluyendo hasta la de otra forma inevitable destrucción del Artefacto Ynykron!"; SWWM_INTERTIP33 = "Si puedes alinearte correctamente, embestir hacia atrás hará que los enemigos reciban daño triple, debido a ciertas características de tu chasis.\n\n(Sí, me refiero a ese brillante y metálico trasero)"; SWWM_INTERTIP34 = "Bajo los efectos de un Ragekit, tu daño al embestir será amplificado hasta un nivel tal que puedes incluso atravesar limpiamente puertas y otros obstáculos por el camino."; -SWWM_INTERTIP35 = "Vivimos en un mundo en el que muchos somos discriminados por nuestra propia identidad. Es una triste realidad, y algo que no hemos elegido. Más triste es sin embargo la existencia de aquellos que nos odian."; +SWWM_INTERTIP35 = "\"Los humanos temen aquello que no pueden comprender. No es mas que una simple respuesta primitiva, y una de la que nuestra gente se ha aprovechado durante incontables siglos.\"\n — Anónimo"; SWWM_INTERTIP36 = "El color favorito de Demo-chan es el verde."; -SWWM_INTERTIP37 = "Los perdigones de sal de Kinylum son suficientemente potentes como para atravesar la invulnerabilidad de algunos enemigos. Esto es también cierto para todas las armas del puesto 7 en adelante."; +SWWM_INTERTIP37 = "Todas las armas del puesto 7 en adelante son capaces de dañar enemigos normalmente invulnerables."; SWWM_INTERTIP38 = "Aunque no te interese leer el lore, sigue siendo útil comprobar las entradas de armas y otros ítems para aprender más sobre su uso. Por supuesto, también puedes simplemente experimentar por tu cuenta."; SWWM_INTERTIP39 = "Si notas bajones cuando hay muchos efectos de sonido activos, se recomienda desactivar el HRTF en las opciones de OpenAL, si está activado."; SWWM_INTERTIP40 = "El Sensor de Ítems puede ayudar a detectar ítems que de otro modo serían difíciles de ver entre el caos de pilas de cuerpos tras una batalla. ¡Con una Omnivisión, puedes incluso ver donde hay ítems a través de las paredes!"; @@ -839,65 +984,66 @@ SWWM_INTERTIP44 = "Las aventuras de Demo-chan se muestran en directo para todo e SWWM_INTERTIP45 = "Este mod puede contener política™. Si eres sensible a la política™ por favor deja de jugar ahora mismo. También sugiero alejarse de internet, ya que tengo entendido que está también lleno de política™."; SWWM_INTERTIP46 = "Al encontrar (o comprar) una segunda Pistola de Explodium podrás alternar a un modo dual. Solo por que sí (y porque alguien hizo fanart con esto y TENÍA que añadirlo)."; SWWM_INTERTIP47 = "La duración de los efectos de potenciador se va apilando con cada uso."; -SWWM_INTERTIP48 = "Habiendo estado solos tanto tiempo en este mundo, la humanidad se ha hecho su propio enemigo. Es más que patético que hayamos inventado tantas formas de dividirnos y marginarnos mútuamente. Da igual la raza, idioma, o religión, todos somos iguales."; -SWWM_INTERTIP49 = "El botón de granada rápida te permitirá lanzar un Cargador de Explodium en cualquier momento, sin importar qué otra arma estés usando. Si estás mirando una pared o el suelo, plantarás el cargador ahí, muy útil para crear trampas."; -SWWM_INTERTIP50 = "\"El capitalismo es una enfermedad, un cáncer que conducirá este mundo a la ruina si no lo eliminamos pronto.\" — Hynnykka la Gran Bruja"; -SWWM_INTERTIP51 = "Si un ítem está casi a tu alcance pero no puedes tocarlo, puedes pulsar uso para recogerlo manualmente. Ten en cuenta que esto solo funciona con ítems de este mod. Ten también en cuenta que las trampas activadas por contacto se activarán igual, así que no vas a zafarte de ellas."; +SWWM_INTERTIP48 = "\"Habiendo estado solos tanto tiempo en este mundo, la humanidad se ha hecho su propio enemigo. Es algo lamentable que hayais creado tantas formas de dividiros y marginaros mútuamente.\"\n — Anuvakou Konokamushi"; +SWWM_INTERTIP49 = "El botón de granada rápida te permitirá lanzar un Cargador de Explodium en cualquier momento. Si estás mirando una pared o el suelo, plantarás el cargador ahí, muy útil para crear trampas."; +SWWM_INTERTIP50 = "\"El capitalismo es una enfermedad, un cáncer que conducirá este mundo a la ruina si no lo eliminamos pronto.\"\n — Hynnykka la Gran Bruja"; +SWWM_INTERTIP51 = "Si un ítem del mod está casi a tu alcance pero no puedes tocarlo, puedes pulsar uso para recogerlo manualmente. Ten en cuenta que las trampas activadas por contacto se activarán igual, así que no vas a zafarte de ellas."; SWWM_INTERTIP52 = "Las Cajas Afortunadas pueden aparecer a veces en zonas secretas, recompensándote con varios regalos, incluyendo coleccionables exclusivos."; SWWM_INTERTIP53 = "¿En medio de una recarga y tienes a un Pinky intentando comerte la jeta? No tienes más que embestirle encima para quitarlo de en medio."; SWWM_INTERTIP54 = "Puedes acariciar al perro.\n\nTambién puedes acariciar al Cacodemonio (pero eso es un poco más peligroso de hacer)."; -SWWM_INTERTIP55 = "Las cosas divertidas son divertidas."; +SWWM_INTERTIP55 = "\"Las cosas divertidas son divertidas.\"\n — Yui Hirasawa"; SWWM_INTERTIP56 = "Algunos de estos consejos no son realmente consejos, pero seguro que eso ya lo sabes."; SWWM_INTERTIP57 = "La sal de Kinylum no es comestible. No solo es radioactiva, si no que también explotará en tu estómago. Curiosamente, se usa popularmente como tinte de pelo."; -SWWM_INTERTIP58 = "Mantén siempre GZDoom actualizado. Especialmente para mods como este."; -SWWM_INTERTIP59 = "El Mazo de Combate Reforzado es bastante fuerte de por sí, pero con un Ragekit activo, se transformará en todo un revientacráneos."; +SWWM_INTERTIP58 = "Una parte considerable de la comunidad de Doom no es de fiar. Ten cuidado ahí afuera."; +SWWM_INTERTIP59 = "Si ejecutas el ataque secundario del Mazo de Combate en el aire, realizarás un ataque en caída. Cierto hombre una vez dijo que este es el movimiento más fiable del juego."; SWWM_INTERTIP60 = "A pesar de su aparentemente penoso tamaño, el Blaster de Plasma tiene mucho potencial destructivo, sobre todo a través de su fuego alternativo cargado."; SWWM_INTERTIP61 = "Las armas Puntzer pueden penetrar fácilmente objetos sólidos e incluso paredes de poco grosor. Ningún enemigo estará seguro detrás de su cobertura."; -SWWM_INTERTIP62 = "\"La Ametralladora Sheen es tal festival delicioso de dakka que el mero sonido de dispararla hace que desate a Leviatán en mis bragas, y puedes citarme en eso.\" — Saya Miyamoto"; +SWWM_INTERTIP62 = "\"La Ametralladora Sheen es tal festival delicioso de dakka que el mero sonido de dispararla hace que me ponga loca. ¡Es la leche!\"\n — Saya Miyamoto"; SWWM_INTERTIP63 = "Pulsando disparo inmediatamente después de golpear algo con las bayonetas del Quadravol resultará en una explosión aumentada a bocajarro que mandará a lo que sea que esté al otro lado volando."; -SWWM_INTERTIP64 = "Mantener los gatillos del Rifle Sparkster pulsados incrementará gradualmente la potencia de disparo al soltarlos. Afortunadamente, no existe la posibilidad de que el arma explote si los mantienes demasiado tiempo, solo un arma mal diseñada por humanos podría ser tan disfuncional."; +SWWM_INTERTIP64 = "Mantener los gatillos del Rifle Sparkster pulsados incrementará gradualmente la potencia de disparo al soltarlos, hasta cierto punto."; SWWM_INTERTIP65 = "El Rifle Sparkster puede disparar ambos tipos de munición simultáneamente, mezclando todo en un mortífero proyectil combinado."; -SWWM_INTERTIP66 = "El Rifle Mortal (\"Míster\" para los amigos) fue ideado como un posible rifle de batalla \"estándar\" para la Coalición X'Animen que \"incluso los Xekkian considerarían poderoso\". Parece que en ese aspecto ha sido un éxito, considerando lo verdaderamente mortal que es, aunque no tiene mucha adopción... Por ahora."; -SWWM_INTERTIP67 = "Siendo principalmente una pistola de bobina, la Ray-Khom es casi completamente silenciosa y perfecta para matar sigilosamente. Ten en cuenta sin embargo que el impacto del proyectil en sí será muy ruidoso."; +SWWM_INTERTIP66 = "Siendo principalmente una pistola de bobina, la Ray-Khom es casi completamente silenciosa y perfecta para matar sigilosamente. Ten en cuenta sin embargo que el impacto del proyectil en sí será muy ruidoso."; +SWWM_INTERTIP67 = "El Rifle Mortal (\"Míster\" para los amigos) fue ideado como un posible rifle de batalla \"estándar\" para la Coalición X'Animen que \"incluso los Xekkian considerarían poderoso\". Parece que en ese aspecto ha sido un éxito."; SWWM_INTERTIP68 = "La Rafan-Kos es ciertamente un Arma Definitiva, como su nombre implica."; SWWM_INTERTIP70 = "¿Sabíais que incluso con cinturones de seguridad la gente muere todo el tiempo en accidentes de coche? Pensé que era interesante."; -SWWM_INTERTIP71 = "\"En internet nadie puede escucharte ser sutil.\" — Linus Torvalds"; +SWWM_INTERTIP71 = "\"En internet nadie puede escucharte ser sutil.\"\n — Linus Torvalds"; SWWM_INTERTIP72 = "Hay aproximadamente 9.3 mil millones de demonios criados solo para la guerra en el Infierno. Eso es ochocientas setenta y seis mil veces el conteo de monstruos de nuts.wad, y eso es terrible."; SWWM_INTERTIP73 = "La gente muere si la matan. Pero las leyendas nunca mueren, se levantan de nuevo y te parten la badana."; +SWWM_INTERTIP74 = "Este consejo está intencionalmente en blanco."; SWWM_INTERTIP75 = "Los kobolds son pequeñas criaturitas que hacen yip."; SWWM_INTERTIP76 = "Te he enseñado mi consejo de intermisión contesta pls."; SWWM_INTERTIP77 = "El gaming AAA está podrido hasta la médula, plagado por la tortura corporativa de trabajadores honestos. Apoya a los pequeños desarrolladores siempre que puedas."; SWWM_INTERTIP78 = "Xenia > Tux\n\nDevolvednos a la chica zorro molona de Linux. Los pingüinos apestan."; SWWM_INTERTIP79 = "Abofetear fachas es perfectamente razonable."; -SWWM_INTERTIP81 = "La edad solo afecta a la apariencia, y no tiene relación a la habilidad. El género no tiene relación a la habilidad. Todo el mundo tiene imperfecciones, los prejuicios traen consigo malcontentos, conviertete en un espíritu oscuro.\nHora de cangrejo."; -SWWM_INTERTIP82 = "\"SI EL ZOO ME PROHIBE LA ENTRADA POR GRITAR A LOS ANIMALES PLANTARÉ CARA A DIOS Y CAMINARÉ DE ESPALDAS AL INFIERNO\" — dril"; -SWWM_INTERTIP83 = "Este es realmente un extraño mod de armas para GZDoom."; +SWWM_INTERTIP81 = "Si la Tierra fuese realmente plana, un gato ya lo habría empujado todo por el borde."; +SWWM_INTERTIP82 = "\"SI EL ZOO ME PROHIBE LA ENTRADA POR GRITAR A LOS ANIMALES PLANTARÉ CARA A DIOS Y CAMINARÉ DE ESPALDAS AL INFIERNO\"\n — dril"; +SWWM_INTERTIP83 = "Este es realmente un extraño mod de armas."; SWWM_INTERTIP84 = "\"En su inmensidad, el universo no es más que un mero grano de arena cuando se compara a los límites ilimitados de nuestra imaginación.\" — Zanaveth Nekuraku III"; SWWM_INTERTIP85 = "Puedes alternar el arte de intermisión con Zoom, y estos consejos con Recarga. Mantener Fuego Secundario ocultará la interfaz para que puedas ver el arte al completo."; -SWWM_INTERTIP86 = "Mezcla ajo molido, pimienta blanca y albahaca con tu salsa de tomate, va ideal con pasta, puedes darme las gracias luego."; -SWWM_INTERTIP87 = "Este mod es compatible con H-Doom. No, en serio."; +SWWM_INTERTIP86 = "Añade comino y pimentón dulce a la salsa marinara, potenciará mucho el sabor, puedes darme las gracias luego."; +SWWM_INTERTIP87 = "Esto es un consejo."; SWWM_INTERTIP88 = "Algunos demonios no son realmente malvados. Prefieren llevar una vida tranquila y disfrutar de un delicioso emparedado de vez en cuanto."; SWWM_INTERTIP89 = "El diseño de Saya para la Demolicionista fue inspirado por Raidemin, el protagonista de un famoso anime Nukuri."; SWWM_INTERTIP90 = "Ya que las IAs Nekuronbot resultan tener un alma, son capaces de usar magia. Saya le enseñó a Demo-chan el conjuro de \"Lanzar Beso\" solo porque pensaba que sería mono."; -SWWM_INTERTIP91 = "No hay nada malo en estar horny on main."; +SWWM_INTERTIP91 = "No hay un consejo."; SWWM_INTERTIP92 = "La existencia de un insecto llamado \"mosquito\" implica la de una mayor y peor amenaza:\n\n\"EL MOSCO\""; SWWM_INTERTIP93 = "No te fíes de nadie llamado Icarus o Dime para manejar explosivos."; SWWM_INTERTIP94 = "Este mod hace que los slaughterwads sean más llevaderos, pero no esperes que sea un paseo por el parque."; -SWWM_INTERTIP95 = "Sin amor, no puede ser visto."; +SWWM_INTERTIP95 = "\"Sin amor, no puede ser visto.\"\n — Proverbio Sankara"; SWWM_INTERTIP96 = "Los conejitos son suaves."; SWWM_INTERTIP97 = "Hidratarse es importante."; SWWM_INTERTIP98 = "Algunos de estos consejos son solo relleno, incluyendo este."; SWWM_INTERTIP99 = "No hay referencias a Tim Allen en este mod."; -SWWM_INTERTIP100 = "Receta personal de pizza de Marisa: base con salsa de tomate y queso, lonchas de pavo, cebolla caramelizada, aceitunas verdes, bonito y por encima queso para gratinar. Alternativamente, si te parece que el bonito es muy seco, puedes usar bacalao. El resultado será un desastre grasiento, pero un desastre delicioso."; -SWWM_INTERTIP101 = "Taiwan es un país independiente. Esta es la realidad."; +SWWM_INTERTIP100 = "Receta personal de pizza de Marisa: base con salsa de tomate y queso, lonchas de pavo, cebolla caramelizada, aceitunas verdes, bonito y por encima queso para gratinar. Está riquísima!"; +SWWM_INTERTIP101 = "Puedes (más o menos) jugar a este mod en una Steam Deck."; SWWM_INTERTIP102 = "Puedes reducir los parones al cambiar armas activando la opción de Precaché de Texturas GL."; SWWM_INTERTIP103 = "Los sándwiches de queso a la plancha están realmente buenos, como la autora de este mod ha comprobado personalmente."; SWWM_INTERTIP104 = "Puedes interactuar con ítems coleccionables desde la pestaña Llavero de tu Menú de Demolicionista. Ya sabes, por si te apetece jugar un poco con ellos."; SWWM_INTERTIP105 = "A las polillas les gustan las lámparas."; SWWM_INTERTIP106 = "No, cubrirte de aceite no te permitirá volar cuando llueve."; -SWWM_INTERTIP107 = "Las bolas de plomo pueden hacer críticos random. Por favor no me hagáis daño, jugadores de TF2."; -SWWM_INTERTIP108 = "Este mod puede contener horny, en pequeñas cantidades."; -SWWM_INTERTIP109 = "¿Sabías que el Hellblazer puede mostrar el estado de su cargador cuando está colocado en el mundo? No es algo realmente muy importante, pero me enorgullezco de mi obsesiva atención al detalle."; +SWWM_INTERTIP107 = "\"No sabía que hubieran metido a Shakespeare en los comics.\"\n — Demo Miyamoto"; +SWWM_INTERTIP108 = "Este mod contiene brillantes traseros metálicos."; +SWWM_INTERTIP109 = "Los misiles del Hellblazer no solo causan daño directo al explotar, si no que también liberan una onda expansiva de calor abrasador."; SWWM_INTERTIP110 = "Si no lo sabías ya, el mod puede ser usado también con Heretic y Hexen. Cosas nuevas serán desbloqueadas en cada uno, a medida que progresa la historia principal del mod."; SWWM_INTERTIP111 = "El shitposting irónico sigue siendo shitposting."; SWWM_INTERTIP112 = "No hay autobuses en Gensokyo."; @@ -907,7 +1053,7 @@ SWWM_INTERTIP115 = "Había un consejo aquí, pero se ha ido ahora."; SWWM_INTERTIP116 = "Más de trece mil millones de dispositivos ejecutan Java. Ya es demasiado tarde, estamos todos condenados."; SWWM_INTERTIP117 = "La comida sabe mejor cuando te la preparas tú."; SWWM_INTERTIP118 = "Este mesaje de consejo tiene una errata."; -SWWM_INTERTIP119 = "Si los enemigos se entrometen mientras estás admirando la brillante llave nueva que acabas de encontrar, puedes darles un puñetazo con tu mano libre."; +SWWM_INTERTIP119 = "¿Aborreces las cazas de llaves? Consigue una Wallbuster o un Mazo de Combate y empieza a echar abajo esas dichosas puertas bloqueadas."; SWWM_INTERTIP120 = "Me he dado cuenta de que si te pones a hablar, a tu boca se le van ocurriendo cosas."; SWWM_INTERTIP121 = "Saya afirma disfrutar el café solo, pero le echa azúcar en secreto cuando nadie mira."; SWWM_INTERTIP122 = "En base a experiencias personales, Saya cree que no hay ningún fabricante de armas en el mundo que sea hetero."; @@ -921,7 +1067,7 @@ SWWM_INTERTIP129 = "El bunnyhopping te permite alcanzar velocidades ridículas ( SWWM_INTERTIP130 = "El potenciado de velocidad del Ragekit puede hacerte rebotar violentamente contra todo mientras corres. Esto puede ser problemático en espacios cerrados."; SWWM_INTERTIP131 = "En Heretic y Hexen, un ítem conocido como el Enlace de Seguridad puede aparecer. Si por cualquier razón te has atascado en algún tipo de trampa de la que no parece que haya salida, este será tu as en la manga."; SWWM_INTERTIP132 = "La Marca de Devastación es bastante inestable, pero provee de un mayor potenciado de daño que el Ragekit, para TODO el daño que puedas causar, incluso a ti. Sí, un juguetito bastante peligroso, desde luego."; -SWWM_INTERTIP133 = "El Sprite Divino puede potenciar tu salud hasta niveles absurdos, pero sus efectos se desvanecen rápidamente después de un rato. Es el ítem de salud más potente que tienes al alcance, pero ten en cuenta que debe ser activado manualmente. A diferencia de muchos otros, no te va a salvar el trasero por su cuenta."; +SWWM_INTERTIP133 = "El Sprite Divino puede potenciar tu salud hasta niveles absurdos, pero sus efectos se desvanecen rápidamente después de un rato. Es el ítem de salud más potente que tienes al alcance, pero ten en cuenta que debe ser activado manualmente."; SWWM_INTERTIP134 = "La Demolicionista no está sola en su misión. Se sabe que hay muchos más héroes luchando ahí afuera también."; SWWM_INTERTIP135 = "A Demo-chan le gusta un cierto robot de videojuego que también mata demonios con estilo."; SWWM_INTERTIP136 = "Generalmente, tus enemigos son lo suficientemente estúpidos como para plantarse delante de tu línea de fuego. Si fueran más listos, no intentarían enfrentarse a ti."; @@ -929,7 +1075,7 @@ SWWM_INTERTIP137 = "Los potenciadores existen para ser usados, no tengas miedo d SWWM_INTERTIP138 = "Los demonios evitaron invadir Australia por alguna razón. Tal vez el clima de ahí es peor que en el Infierno."; SWWM_INTERTIP139 = "Si parece que el juego te está dando demasiadas cosas, puedes ganarte un dinero extra vendiendo lo que no necesites."; SWWM_INTERTIP140 = "El chasis de la Demolicionista tiene un ligero aroma a lima."; -SWWM_INTERTIP141 = "\"En el futuro, todo es Cromado.\"\n\nNunca una frase de una serie de dibujos pudo ser más acertada tras el inevitable auge de la supremacía web-app."; +SWWM_INTERTIP141 = "\"En el futuro todo está cromado.\"\n\nNunca una frase de una serie de dibujos pudo ser más acertada tras el inevitable auge de la supremacía web-app."; SWWM_INTERTIP142 = "Este mod está en desarrollo constante. Recuerda reportar cualquier bug que encuentres."; SWWM_INTERTIP143 = "Si no sabes como usar un ítem o arma, recuerda que puedes comprobar el Menú de Demolicionista en cualquier momento para buscar información sobre ello una vez lo recojas por primera vez."; SWWM_INTERTIP144 = "Recuerda mantenerte hidratad@[ao_esp]."; @@ -939,200 +1085,279 @@ SWWM_INTERTIP147 = "¿Ayuda! ¡Estoy atrapada en una fábrica de consejos!"; SWWM_INTERTIP148 = "La Marca de Devastación y el Ragekit se pueden combinar. Ya sabes, si quieres matar un Ciberdemonio con un solo puñetazo. Realmente hace que te sientas como cierto hombre calvo con capa."; SWWM_INTERTIP149 = "Toma siempre descansos durante sesiones de juego largas. Jugarás mejor y tendrás que soportar menos estrés."; SWWM_INTERTIP150 = "Este es el consejo número 150. No me puedo creer que haya escrito tantos."; -// intermission fanart -SWWM_FANART = "Arte: "; +SWWM_INTERTIP151 = "No eres inmune a la propaganda."; +SWWM_INTERTIP152 = "Es aconsejable no intentar meter un clavo cuadrado en un agujero redondo. Aun así, hay gente que la clava en cualquier agujero."; +SWWM_INTERTIP153 = "Cuando todo lo que tienes es un arma, cualquier problema parece algo a lo que disparar. Cuando todo el mundo tiene un arma..."; +SWWM_INTERTIP154 = "No puede ser que haya alguien que sepa de verdad como funciona el dinero. Es más probable que todo el mundo haya pretendido saberlo durante miles de años."; +SWWM_INTERTIP155 = "Tal vez deberías limpiar a los ricos a conciencia antes de comértelos. He oído que están llenos de mierda."; +SWWM_INTERTIP156 = "Gay es bien."; +SWWM_INTERTIP157 = "Toda megacorporación crece hasta finalmente causar algún tipo de desastre que amenace al mundo entero, algo que se ha demostrado una y otra vez."; +SWWM_INTERTIP158 = "Un pequeño número de estos consejos se pueden considerar \"disparos para bajar la renta\". Han sido sorprendentemente efectivos."; +SWWM_INTERTIP159 = "No dejes que otros te silencien. Denuncia la intolerancia, lo más alto que puedas. Si no dices nada, les estás dando poder."; +SWWM_INTERTIP160 = "¡No me puedo creer que estén metiendo política en nuestros videojuegos! ¡¿Como se atreve esta gente?!"; +SWWM_INTERTIP161 = "Tonto el que lo lea."; +SWWM_INTERTIP162 = "¿Ves esos recuentos ahí en el centro de la pantalla? Hay gente que da mucha importancia a que las bajas y secretos lleguen al 100%, pero nunca los ítems. ¿A que viene todo eso?"; +SWWM_INTERTIP163 = "Los niveles de dificultad existen para algo. Si crees que solo un nivel es válido, te invito cordialmente a ingerir un puercoespín entero."; +SWWM_INTERTIP164 = "No todo lo calentito es para sentarse."; +SWWM_INTERTIP165 = "Ten cuidado con la gente que postea enlaces de YouTube con el código \"dQw4w9WgXcQ\"."; +SWWM_INTERTIP166 = "\"Cuando no puedes pensar con claridad, ¿piensas con oscuridad?\"\n — Demo Miyamoto"; +SWWM_INTERTIP167 = "Este mod está 100% libre del uso de IA generativa o programación asistida por IA."; +SWWM_INTERTIP168 = "No deberías tomarte algunos de estos consejos muy en serio."; +SWWM_INTERTIP169 = "Este mod no te hará burla si usas trucos. Si un mapa te mete mierdas, está justificado."; +SWWM_INTERTIP170 = "Esos pequeños tubos a los lados de la cabeza de la Demolicionista son receptores de olor, por cierto."; +SWWM_INTERTIP171 = "Desafortunadamente, el espacio hace tiempo que ha sido corrompido por el capitalismo. Puedes agradecérselo todo a la maravillosa UAC."; +SWWM_INTERTIP172 = "Mira a donde hemos llegado. Justo cuando pensábamos que el futuro no podía ponerse peor... Se ha puesto peor."; +SWWM_INTERTIP173 = "¿Alguna vez de has preguntado por que cuando se va todo a la mierda, siempre es la clase obrera la que tiene que arreglarlo todo?"; +SWWM_INTERTIP174 = "\"Incluso en el siglo XXII, hay cosas que nunca cambian. Internet sigue estando repleto de porno, y la última consola de Sony sigue sin tener juegos.\"\n — Saya Miyamoto"; +SWWM_INTERTIP175 = "Siempre tendrás el derecho a decirle a los haters que te pueden comer el culo."; +SWWM_INTERTIP176 = "No necesitas las mejores tecnologías de última generación para crear algo digno de jugar."; +SWWM_INTERTIP177 = "Los pechos pequeños son un símbolo de estatus."; +SWWM_INTERTIP178 = "Las personas bajas tienen muchas ventajas tácticas."; +SWWM_INTERTIP179 = "Dadas \"circunstancias no especificadas\", Saya es considerada intocable por la Yakuza. Al parecer les da miedo hacer cabrear a su madre."; +SWWM_INTERTIP180 = "¿Te hartan las salidas de muerte? Entonces estás de suerte, porque este mod se las pasa por el forro."; +SWWM_INTERTIP181 = "A diferencia de las granadas rápidas, el fuego secundario de la Pistola de Explodium rebota en las paredes, permitiéndote alcanzar objetivos a la vuelta de la esquina."; +SWWM_INTERTIP182 = "La Ametralladora Sheen incendia el aire al paso de cada bala, solo con la altísima presión de la munición que usa."; +SWWM_INTERTIP183 = "Los poco comunes cartuchos dorados te permiten causar destrucción extrema en un radio amplio. Eso sí, ten cuidado de no estar demasiado cerca."; +SWWM_INTERTIP184 = "\"La vida a veces parece ciertamente ser como un videojuego.\"\n — Reubens C. Karnanaiahmani"; +SWWM_INTERTIP185 = "Una vez incendiado por la Quadravol, la solución más rápida es sacudirse fuera las llamas. Una pena que tus enemigos no sean tan listos como para saber eso."; +SWWM_INTERTIP186 = "De alguna forma, la Quadravol puede usarse bajo el agua. Uno solo puede preguntarse de qué están hechas esas bolas de fuego."; +SWWM_INTERTIP187 = "El fuego alternativo de la Ray-Khom es letal en contacto con el agua. Intenta aplicar el sentido común con esta información."; +SWWM_INTERTIP188 = "La Rafan-Kos puede preparar un delicioso asado de ciberdemonio en menos de un segundo."; +SWWM_INTERTIP189 = "El Rifle Mortal supuestamente usa \"munición mutante\", sea lo que sea que signifique eso."; +SWWM_INTERTIP190 = "Los demonios suelen ser muy competitivos, así que el fuego amigo puede volverlos fácilmente los unos contra los otros."; +SWWM_INTERTIP191 = "La Wallbuster tarda un poco en recargarse completamente, pero una vez quede todo hecho, tendrás una escopeta mucho más rápida en tus manos."; +SWWM_INTERTIP192 = "La Demolicionista puede interactuar directamente con el Hellblazer para marcar objetivos de búsqueda. Esto funciona hasta con las granadas."; +SWWM_INTERTIP193 = "La Quadravol se puede usar con una sola mano. Esto no ofrece ninguna ventaja táctica, pero puedes voltearla lo cual mola mucho, y eso es lo que importa."; +SWWM_INTERTIP194 = "Las armas Xekkian son muy grandes, pero también lo es la gente que las usa."; +SWWM_INTERTIP195 = "El mod iba a tener un arma legendaria conocida como K-79D, pero desafortunadamente fue borrada de la historia. Aun sigue ahí, técnicamente."; +SWWM_INTERTIP196 = "Algunas armas son tan letales que incluso dañan los frames. Asumo toda responsabilidad, es que me gusta hacer explosiones muy extravagantes."; +SWWM_INTERTIP197 = "Los proyectiles buscadores cambiarán de objetivo al ser reflejados. Al fin, podrás vengarte de esos malditos esqueloides."; +SWWM_INTERTIP198 = "Puedes desactivar el pausado mientras se usa el Menú de Demolicionista. Te sorprendería lo mucho que esto cambia toda la experiencia. Es muy... \"Souls-like\"."; +SWWM_INTERTIP199 = "Brutal Doom ya es viejo de cojones. A la peña os hace falta probar a jugar otros mods."; +SWWM_INTERTIP200 = "Hay otros Demolicionistas, pero Demo-chan es la primera de todos."; +SWWM_INTERTIP201 = "El ataque giratorio del Martillo de Combate es casi imposible de controlar, pero contra una emboscada, puede ser devastador."; +SWWM_INTERTIP202 = "Manteniendo pulsada la tecla de Usar durante al menos un segundo succionará drops de ítem cercanos. A veces a uno no le apetece recogerlos todos a mano despues de una gran batalla."; +SWWM_INTERTIP203 = "La pantalla integrada de la Quadravol usa números Xekkas, pero afortunadamente eres lo suficientemente inteligente como para entenderlos, verdad?"; +SWWM_INTERTIP204 = "No tengas miedo de experimentar con estilos de juego diferentes. Mezcla tu arsenal a placer. Aprender estas cosas es parte de la diversión."; +SWWM_INTERTIP205 = "La Ametralladora Sheen tiene un retroceso tan intenso que dada suficiente velocidad de disparo, se puede usar para planear mientras se dispara hacia abajo."; +SWWM_INTERTIP206 = "El salto de cohete con la Quadravol es perfectamente seguro. Puedes confiar en mi, soy un consejo útil al fin y al cabo."; +SWWM_INTERTIP207 = "Las tres opciones de velocidad de la Ametralladora Sheen permiten un balance óptimo entre conservar munición y pura potencia de daño."; +SWWM_INTERTIP208 = "\"Más veloz y lejano que una plaga solo el odio puede extenderse.\"\n — Nukurines Mei Mess"; +SWWM_INTERTIP209 = "Este mod requiere renderizado por hardware. Si has llegado hasta este punto sin darte cuenta de eso, tienes un problema."; +SWWM_INTERTIP210 = "\"Ian Kelliher es como el Elon Musk de su generación, y lo odio automáticamente por eso.\"\n — Saya Miyamoto"; // achievements -SWWM_ACHIEVEMENT_ACID_TAG = "La Buena Efervescencia"; -SWWM_ACHIEVEMENT_ACID_TXT = "Derrite %d enemigos con Flechettes de Telebrium"; SWWM_ACHIEVEMENT_ALLCOLL_TAG = "El Set Completo"; SWWM_ACHIEVEMENT_ALLCOLL_TXT = "Obtén todos los coleccionables en una sola partida"; SWWM_ACHIEVEMENT_ALLITEMS_TAG = "Recolector"; -SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtén 100%% ítems en %d mapas"; +SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtén 100%% ítems en %s mapas"; SWWM_ACHIEVEMENT_ALLKILLS_TAG = "Control de Plagas"; -SWWM_ACHIEVEMENT_ALLKILLS_TXT = "Obtén 100%% muertes en %d mapas"; +SWWM_ACHIEVEMENT_ALLKILLS_TXT = "Obtén 100%% muertes en %s mapas"; SWWM_ACHIEVEMENT_ALLSECRETS_TAG = "Detective Excelente"; -SWWM_ACHIEVEMENT_ALLSECRETS_TXT = "Obtén 100%% secretos en %d mapas"; +SWWM_ACHIEVEMENT_ALLSECRETS_TXT = "Obtén 100%% secretos en %s mapas"; SWWM_ACHIEVEMENT_ANOM_TAG = "Anómalo"; -SWWM_ACHIEVEMENT_ANOM_TXT = "Usa %d Artefactos Mykradvo"; +SWWM_ACHIEVEMENT_ANOM_TXT = "Usa %s Artefactos Mykradvo"; SWWM_ACHIEVEMENT_ANONE_TAG = "Uso Completamente Necesario de Fuerza"; SWWM_ACHIEVEMENT_ANONE_TXT = "Usa el Artefacto Mykradvo contra un único enemigo no-jefe"; +SWWM_ACHIEVEMENT_ARA_TXT = "Haz que la Dama Blanca mate un total de %s enemigos"; +SWWM_ACHIEVEMENT_ARSE_TAG = "Arsenal de Antaño"; +SWWM_ACHIEVEMENT_ARSE_TXT = "Encuentra todas las armas clásicas de UnSX"; SWWM_ACHIEVEMENT_BALLS_TAG = "Machácate las Bolas"; -SWWM_ACHIEVEMENT_BALLS_TXT = "Consigue %d críticos de Bola de Plomo"; +SWWM_ACHIEVEMENT_BALLS_TXT = "Consigue %s críticos de Bola de Plomo"; +SWWM_ACHIEVEMENT_BALLSELF_TAG = "Peligrosa Acción de Bolas"; +SWWM_ACHIEVEMENT_BALLSELF_TXT = "Hazte un crítico con tus propias Bolas de Plomo"; SWWM_ACHIEVEMENT_BARREL_TAG = "Desastre Medioambiental"; -SWWM_ACHIEVEMENT_BARREL_TXT = "Destruye %d barriles"; +SWWM_ACHIEVEMENT_BARREL_TXT = "Destruye %s barriles"; SWWM_ACHIEVEMENT_BARRIER_TAG = "Filtro Verde"; -SWWM_ACHIEVEMENT_BARRIER_TXT = "Usa %d Barreras Elementales"; +SWWM_ACHIEVEMENT_BARRIER_TXT = "Usa %s Barreras Elementales"; SWWM_ACHIEVEMENT_BASEBALL_TAG = "¡Oh es un Béisbol!"; SWWM_ACHIEVEMENT_BASEBALL_TXT = "Haz una parada perfecta a un Alma Perdida con el Silver Bullet"; SWWM_ACHIEVEMENT_BLAZE_TAG = "Echando Humo"; SWWM_ACHIEVEMENT_BLAZE_TXT = "Termina un mapa en 4 minutos y 20 segundos"; SWWM_ACHIEVEMENT_BONK_TAG = "Resistente a Choques"; -SWWM_ACHIEVEMENT_BONK_TXT = "Choca %d veces"; +SWWM_ACHIEVEMENT_BONK_TXT = "Choca %s veces"; SWWM_ACHIEVEMENT_BOSSDASH_TAG = "Cabezonería"; -SWWM_ACHIEVEMENT_BOSSDASH_TXT = "Mata %d jefes embistiendo contra ellos"; +SWWM_ACHIEVEMENT_BOSSDASH_TXT = "Mata %s jefes embistiendo contra ellos"; SWWM_ACHIEVEMENT_BRAKE_TAG = "Sin Frenos"; -SWWM_ACHIEVEMENT_BRAKE_TXT = "Consume toda tu capacidad de combustible en una sola embestida %d veces"; +SWWM_ACHIEVEMENT_BRAKE_TXT = "Consume toda tu capacidad de combustible en una sola embestida %s veces"; SWWM_ACHIEVEMENT_BUNE_TAG = "Lagomorfo Legendario"; -SWWM_ACHIEVEMENT_BUNE_TXT = "Realiza %d bunnyhops"; +SWWM_ACHIEVEMENT_BUNE_TXT = "Realiza %s bunnyhops"; SWWM_ACHIEVEMENT_BUSTIN_TAG = "Me Hace Sentir Bien"; -SWWM_ACHIEVEMENT_BUSTIN_TXT = "Revienta %d paredes"; +SWWM_ACHIEVEMENT_BUSTIN_TXT = "Revienta %s paredes"; SWWM_ACHIEVEMENT_BUTTS_TAG = "Esos Glúteos Firmes"; -SWWM_ACHIEVEMENT_BUTTS_TXT = "Mata %d enemigos embistiendo marcha atrás"; +SWWM_ACHIEVEMENT_BUTTS_TXT = "Mata %s enemigos embistiendo marcha atrás"; SWWM_ACHIEVEMENT_CANDY_TAG = "Oh un Caramelo"; -SWWM_ACHIEVEMENT_CANDY_TXT = "Recoge %d pepitas"; +SWWM_ACHIEVEMENT_CANDY_TXT = "Recoge %s pepitas"; SWWM_ACHIEVEMENT_CLIFFYB_TAG = "Mierdas de Recadero"; SWWM_ACHIEVEMENT_CLIFFYB_TXT = "Termina un mapa sin obtener ninguna llave"; SWWM_ACHIEVEMENT_CLONK_TAG = "CLONK"; SWWM_ACHIEVEMENT_CLONK_TXT = "Mata a un jefe con un crítico de Bola de Plomo"; +SWWM_ACHIEVEMENT_COMBO_TAG = "El Combo Definitivo"; +SWWM_ACHIEVEMENT_COMBO_TXT = "Alcanza una singularidad de Ynykron con un rayo de Ynykron"; SWWM_ACHIEVEMENT_CONGA_TAG = "Conga de la Muerte"; -SWWM_ACHIEVEMENT_CONGA_TXT = "Mata %d enemigos con una sola bala XSB"; +SWWM_ACHIEVEMENT_CONGA_TXT = "Mata %s enemigos con una sola bala XSB"; SWWM_ACHIEVEMENT_CRUSH_TAG = "Bajo Presión"; SWWM_ACHIEVEMENT_CRUSH_TXT = "Rompe una trituradora"; SWWM_ACHIEVEMENT_CYBULLY_TAG = "Ciberacoso"; SWWM_ACHIEVEMENT_CYBULLY_TXT = "Mata a un Ciberdemonio con su propio cohete"; -SWWM_ACHIEVEMENT_CUM_TAG = "Soltando Todo el Chorro"; -SWWM_ACHIEVEMENT_CUM_TXT = "Melt a grand total of %d enemies with the Rafan-Kos"; -SWWM_ACHIEVEMENT_DAB_TXT = "Revienta %d enemigos con el Mazo Itamex"; -SWWM_ACHIEVEMENT_DAKKA_TXT = "Mantén el fuego secundario de la Ametralladora Sheen durante un minuto entero"; +SWWM_ACHIEVEMENT_DAB_TXT = "Revienta %s enemigos con el Mazo Itamex"; +SWWM_ACHIEVEMENT_DAKKA_TXT = "Dispara la Ametralladora Sheen a 700RPM durante %s segundos consecutivos"; +SWWM_ACHIEVEMENT_DBSUCC_TAG = "Doble Succión"; +SWWM_ACHIEVEMENT_DBSUCC_TXT = "Combina dos singularidades de Ynykron"; SWWM_ACHIEVEMENT_DEADEYE_TAG = "En el Blanco"; -SWWM_ACHIEVEMENT_DEADEYE_TXT = "Realiza %d disparos consecutivos con la Pistola de Explodium sin fallar"; -SWWM_ACHIEVEMENT_DEVA_TXT = "Usa %d Marcas de Devastación"; +SWWM_ACHIEVEMENT_DEADEYE_TXT = "Realiza %s disparos consecutivos con la Pistola de Explodium sin fallar"; +SWWM_ACHIEVEMENT_DEVA_TXT = "Usa %s Marcas de Devastación"; +SWWM_ACHIEVEMENT_DIME_TAG = "Bueno al Doom"; SWWM_ACHIEVEMENT_DIME_TXT = "Reviéntate con tus propios explosivos"; SWWM_ACHIEVEMENT_DIVINE_TAG = "Deleite Divino"; -SWWM_ACHIEVEMENT_DIVINE_TXT = "Usa %d Sprites Divinos"; +SWWM_ACHIEVEMENT_DIVINE_TXT = "Usa %s Sprites Divinos"; SWWM_ACHIEVEMENT_DOODLE_TAG = "Maestro del Grafiti"; -SWWM_ACHIEVEMENT_DOODLE_TAG = "Garabatea mostachos en %d caras de demonio"; +SWWM_ACHIEVEMENT_DOODLE_TXT = "Garabatea mostachos en %s caras de demonio"; +SWWM_ACHIEVEMENT_ENGINE_TAG = "Uy se me Fue el Dedo"; +SWWM_ACHIEVEMENT_ENGINE_TXT = "Apaga el motor"; SWWM_ACHIEVEMENT_EVERYTHING_TAG = "La Demolicionista"; SWWM_ACHIEVEMENT_EVERYTHING_TXT = "Desbloquea todos los logros"; SWWM_ACHIEVEMENT_EZKILL_TAG = "El Orgullo de Misa"; -SWWM_ACHIEVEMENT_EZKILL_TXT = "Mata %d enemigos con un solo disparo de Artefacto Ynykron (excluyendo modo secundario)"; +SWWM_ACHIEVEMENT_EZKILL_TXT = "Mata %s enemigos con un solo disparo de Artefacto Ynykron (excluyendo modo secundario)"; SWWM_ACHIEVEMENT_FLIGHT_TAG = "Despega de Nuevo"; -SWWM_ACHIEVEMENT_FLIGHT_TXT = "Lanza a un enemigo en volandas más allá de %d unidades de mapa"; +SWWM_ACHIEVEMENT_FLIGHT_TXT = "Lanza a un enemigo en volandas más allá de %s unidades de mapa"; +SWWM_ACHIEVEMENT_FLUFFY_TAG = "Polilla Suave"; +SWWM_ACHIEVEMENT_FLUFFY_TXT = "Acaricia a la Dama Blanca %s veces"; SWWM_ACHIEVEMENT_FRIEND_TAG = "¿Te Gusta Caco?"; +$ifgame(heretic) SWWM_ACHIEVEMENT_FRIEND_TAG = "Друг"; // must be duplicated here or it will default to caco $ifgame(hexen) SWWM_ACHIEVEMENT_FRIEND_TAG = "Perrito Doble"; -SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Cacodemonios a base de caricias"; -$ifgame(heretic) SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Hombres-Dragón a base de caricias"; -$ifgame(hexen) SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Ettins a base de caricias"; +SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %s Cacodemonios a base de caricias"; +$ifgame(heretic) SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %s Hombres-Dragón a base de caricias"; +$ifgame(hexen) SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %s Ettins a base de caricias"; SWWM_ACHIEVEMENT_FUEL_TAG = "Hidrogenado"; -SWWM_ACHIEVEMENT_FUEL_TXT = "Consume un total de %dL de combustible"; +SWWM_ACHIEVEMENT_FUEL_TXT = "Consume un total de %sL de combustible"; SWWM_ACHIEVEMENT_FULLER_TAG = "Has Ganado Brouzouf"; SWWM_ACHIEVEMENT_FULLER_TXT = "Vacía un cargador entero en super-automático con el Puntzer Gamma sin fallar un solo disparo"; SWWM_ACHIEVEMENT_GCSANDWICH_TAG = "Un Poco de Sandwich, de Propina"; -SWWM_ACHIEVEMENT_GCSANDWICH_TXT = "Usa %d Sándwiches de Queso a la Plancha"; +SWWM_ACHIEVEMENT_GCSANDWICH_TXT = "Usa %s Sándwiches de Queso a la Plancha"; SWWM_ACHIEVEMENT_GEPGUN_TAG = "El Derribo Más Silencioso"; -SWWM_ACHIEVEMENT_GEPGUN_TXT = "Mata %d enemigos con el fuego primario de la Ray-Khom sin alertarlos"; +SWWM_ACHIEVEMENT_GEPGUN_TXT = "Mata %s enemigos con el fuego primario de la Ray-Khom sin alertarlos"; SWWM_ACHIEVEMENT_GHOST_TAG = "Camuflaje Activado"; -SWWM_ACHIEVEMENT_GHOST_TXT = "Usa %d Artefactos Fantasma"; +SWWM_ACHIEVEMENT_GHOST_TXT = "Usa %s Artefactos Fantasma"; SWWM_ACHIEVEMENT_GIB_TAG = "Carnaza"; -SWWM_ACHIEVEMENT_GIB_TXT = "Haz overkill a %d enemigos"; +SWWM_ACHIEVEMENT_GIB_TXT = "Haz overkill a %s enemigos"; SWWM_ACHIEVEMENT_GOLDEN_TAG = "Masacre de Midas"; -SWWM_ACHIEVEMENT_GOLDEN_TXT = "Usa %d cartuchos dorados"; +SWWM_ACHIEVEMENT_GOLDEN_TXT = "Usa %s cartuchos dorados"; SWWM_ACHIEVEMENT_GRAVITY_TAG = "Ascenso Decente"; -SWWM_ACHIEVEMENT_GRAVITY_TXT = "Usa %d Supresores de Gravedad"; +SWWM_ACHIEVEMENT_GRAVITY_TXT = "Usa %s Supresores de Gravedad"; SWWM_ACHIEVEMENT_GRENADE_TAG = "Cataplúm"; -SWWM_ACHIEVEMENT_GRENADE_TXT = "Mata %d enemigos con cargadores de Explodium plantados"; +SWWM_ACHIEVEMENT_GRENADE_TXT = "Mata %s enemigos con cargadores de Explodium plantados"; SWWM_ACHIEVEMENT_HND_TAG = "Mediodía"; -SWWM_ACHIEVEMENT_HND_TXT = "Realiza %d disparos mortales en una única recarga de Puntzer Beta"; +SWWM_ACHIEVEMENT_HND_TXT = "Realiza %s disparos mortales en una única recarga de Puntzer Beta"; SWWM_ACHIEVEMENT_HURRY_TAG = "Con Prisas"; SWWM_ACHIEVEMENT_HURRY_TXT = "Termina un mapa con 0 muertes, ítems y secretos"; SWWM_ACHIEVEMENT_JUMP_TAG = "Verticalidad"; -SWWM_ACHIEVEMENT_JUMP_TXT = "Salta paredes %d veces"; +SWWM_ACHIEVEMENT_JUMP_TXT = "Salta paredes %s veces"; SWWM_ACHIEVEMENT_KANCHO_TAG = "Kancho Extremo"; SWWM_ACHIEVEMENT_KANCHO_TXT = "Rompe una estaca de piedra"; SWWM_ACHIEVEMENT_KEEN_TAG = "Adiós Franquicia"; SWWM_ACHIEVEMENT_KEEN_TXT = "Rescata al Comandante Keen"; +SWWM_ACHIEVEMENT_KIRIN_TAG = "El Poder del Amor"; +SWWM_ACHIEVEMENT_KIRIN_TXT = "Recupera un total de %s puntos de salud besando el Peluche de Kirin"; SWWM_ACHIEVEMENT_LEAD_TAG = "Reparto de Plomo"; -SWWM_ACHIEVEMENT_LEAD_TXT = "Alcanza a un enemigo de lleno con el secundario del Eviscerator desde más de %d unidades de mapa"; +SWWM_ACHIEVEMENT_LEAD_TXT = "Alcanza a un enemigo de lleno con el secundario del Eviscerator desde más de %s unidades de mapa"; SWWM_ACHIEVEMENT_LIGHTNING_TAG = "Maldición de John Romero"; SWWM_ACHIEVEMENT_LIGHTNING_TXT = "Achichárrate descargando un arma eléctrica en el agua"; SWWM_ACHIEVEMENT_LIGMA_TAG = "¿Quien es Steve Jobs?"; SWWM_ACHIEVEMENT_LIGMA_TXT = "Mata a un jefe final con el Artefacto Ynykron"; SWWM_ACHIEVEMENT_LOVE_TAG = "Amor Letal"; -SWWM_ACHIEVEMENT_LOVE_TXT = "Mata %d enemigos con un beso lanzado (sin contar insta-kills)"; -SWWM_ACHIEVEMENT_MASHIRO_TAG = "Capas de Blanco"; -SWWM_ACHIEVEMENT_MASHIRO_TXT = "Invoca a la Dama Blanca"; +SWWM_ACHIEVEMENT_LOVE_TXT = "Mata %s enemigos con un beso lanzado (sin contar insta-kills)"; +SWWM_ACHIEVEMENT_ANDIRA_TAG = "El Contrato Polillar"; +SWWM_ACHIEVEMENT_ANDIRA_TXT = "Invoca a la Dama Blanca"; SWWM_ACHIEVEMENT_MATRYOSHKA_TAG = "Astucia Mishe"; SWWM_ACHIEVEMENT_MATRYOSHKA_TXT = "Una Caja Afortunada dentro de una Caja Afortunada dentro de una Caja Afortunada dentro de una Caja Afortunada dentro de..."; SWWM_ACHIEVEMENT_MBF_TAG = "Puedes Acariciar el Perro"; SWWM_ACHIEVEMENT_MBF_TXT = "Acaricia un perro"; SWWM_ACHIEVEMENT_MEGA_TAG = "Masacre Masiva"; -SWWM_ACHIEVEMENT_MEGA_TXT = "Mata un gran total de %d enemigos"; +SWWM_ACHIEVEMENT_MEGA_TXT = "Mata un gran total de %s enemigos"; SWWM_ACHIEVEMENT_MOTH_TAG = "Madre Polilla"; -SWWM_ACHIEVEMENT_MOTH_TXT = "Reúne %d polillas"; +SWWM_ACHIEVEMENT_MOTH_TXT = "Reúne %s polillas"; SWWM_ACHIEVEMENT_NICE_TXT = "Termina un nivel con 69 de vida"; SWWM_ACHIEVEMENT_ONEGUY_TAG = "A la Mierda el Tío Ese"; SWWM_ACHIEVEMENT_ONEGUY_TXT = "Usa el Artefacto Ynykron para matar a un único enemigo no-jefe"; SWWM_ACHIEVEMENT_ONEHP_TAG = "...Y un Sueño"; -SWWM_ACHIEVEMENT_ONEHP_TXT = "Mata %d enemigos mientras tienes sólo 1 HP"; +SWWM_ACHIEVEMENT_ONEHP_TXT = "Mata %s enemigos mientras tienes sólo 1 HP"; SWWM_ACHIEVEMENT_ONESTANDING_TAG = "¿Adonde Han Ido Todos?"; SWWM_ACHIEVEMENT_ONESTANDING_TXT = "Termina un mapa con solo un enemigo vivo"; SWWM_ACHIEVEMENT_OOPSIE_TAG = "Gran Errorcito"; SWWM_ACHIEVEMENT_OOPSIE_TXT = "Bórrate con el Artefacto Ynykron"; +SWWM_ACHIEVEMENT_PACHINKO_TAG = "Código Pachinko"; +SWWM_ACHIEVEMENT_PACHINKO_TXT = "Encuentra el Menú Secreto"; SWWM_ACHIEVEMENT_PARRY_TAG = "Rey del Parry"; -SWWM_ACHIEVEMENT_PARRY_TXT = "Desvía %d proyectiles"; +SWWM_ACHIEVEMENT_PARRY_TXT = "Desvía %s proyectiles"; SWWM_ACHIEVEMENT_PAR_TAG = "Rápido"; -SWWM_ACHIEVEMENT_PAR_TXT = "Supera el tiempo par en %d mapas"; +SWWM_ACHIEVEMENT_PAR_TXT = "Supera el tiempo par en %s mapas"; SWWM_ACHIEVEMENT_PEACE_TAG = "Pacifista"; SWWM_ACHIEVEMENT_PEACE_TXT = "Termina un mapa sin causar daño"; +SWWM_ACHIEVEMENT_PISS_TAG = "Super Láser de Pis"; +SWWM_ACHIEVEMENT_PISS_TXT = "Derrite un total de %s enemigos con la Rafan-Kos"; SWWM_ACHIEVEMENT_PLASMA_TAG = "Echando Plasmas"; -SWWM_ACHIEVEMENT_PLASMA_TXT = "Mata un enemigo a 100%% de salud con un disparo cargado del Blaster de Plasma %d veces"; +SWWM_ACHIEVEMENT_PLASMA_TXT = "Mata un enemigo a 100%% de salud con un disparo cargado del Blaster de Plasma %s veces"; SWWM_ACHIEVEMENT_PLUSH_TAG = "Amorcito"; -SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con el peluche de Saya %d veces en la misma partida"; -$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con los peluches de Saya o Kirin %d veces en la misma partida"; +SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con el peluche de Saya %s veces en la misma partida"; +$ifgame(hexen) SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con los peluches de Saya o Kirin %s veces en la misma partida"; SWWM_ACHIEVEMENT_PUZZLE_TAG = "Hasta Kirin está Cabreado"; SWWM_ACHIEVEMENT_PUZZLE_TXT = "Resuelve todas las partes de \"puzzles\" en la misma partida"; SWWM_ACHIEVEMENT_RAGE_TAG = "No Hablo me Enfado"; -SWWM_ACHIEVEMENT_RAGE_TXT = "Usa %d Ragekits"; +SWWM_ACHIEVEMENT_RAGE_TXT = "Usa %s Ragekits"; SWWM_ACHIEVEMENT_RAIL_TAG = "Metida de Través"; -SWWM_ACHIEVEMENT_RAIL_TXT = "Atraviesa %d enemigos con un solo disparo a presión del Rifle Mortal"; +SWWM_ACHIEVEMENT_RAIL_TXT = "Mata %s enemigos con un solo disparo a presión del Rifle Mortal"; SWWM_ACHIEVEMENT_REFLECT_TAG = "Devuelto a Remitente"; -SWWM_ACHIEVEMENT_REFLECT_TXT = "Mata %d enemigos con proyectiles desviados"; +SWWM_ACHIEVEMENT_REFLECT_TXT = "Mata %s enemigos con proyectiles desviados"; SWWM_ACHIEVEMENT_REFRESH_TAG = "Siempre Fresco"; -SWWM_ACHIEVEMENT_REFRESH_TXT = "Usa %d Refrescadores"; +SWWM_ACHIEVEMENT_REFRESH_TXT = "Usa %s Refrescadores"; SWWM_ACHIEVEMENT_ROAST_TAG = "Ensarta en los Fuegos del Hades"; -SWWM_ACHIEVEMENT_ROAST_TXT = "Realiza %d combos de bayoneta con la Quadravol"; -SWWM_ACHIEVEMENT_SALT_TAG = "Sobresalado Máximo"; -SWWM_ACHIEVEMENT_SALT_TXT = "Dispara 25 cartuchos de sal al mismo tiempo"; +SWWM_ACHIEVEMENT_ROAST_TXT = "Realiza %s combos de bayoneta con la Quadravol"; SWWM_ACHIEVEMENT_SANIC_TAG = "PERRITOS DE CHILE"; -SWWM_ACHIEVEMENT_SANIC_TXT = "Alcanza una velocidad punta de %d km/h"; +SWWM_ACHIEVEMENT_SANIC_TXT = "Alcanza una velocidad punta de %s km/h"; SWWM_ACHIEVEMENT_SEKIRO_TAG = "Dudar es Fracasar"; SWWM_ACHIEVEMENT_SEKIRO_TXT = "Muere y reinicia dos veces en el mismo mapa"; +SWWM_ACHIEVEMENT_SENTRY_TAG = "Mejor Amigo del Ingeniero"; +SWWM_ACHIEVEMENT_SENTRY_TXT = "Consigue %s bajas usando torretas"; SWWM_ACHIEVEMENT_SHAME_TAG = "Vergonzoso"; SWWM_ACHIEVEMENT_SHAME_TXT = "Mata un boss usando solo el modo primario de la Deep Impact"; -SWWM_ACHIEVEMENT_SHOCK_TXT = "Realiza %d combos de Biospark"; -SWWM_ACHIEVEMENT_SLAYER_TAG = "Me he Convertido en Muerte"; -SWWM_ACHIEVEMENT_SLAYER_TXT = "Mata %d enemigos con una sola Cabeza Nuclear Slayer"; -SWWM_ACHIEVEMENT_SLEMG_TAG = "El Método Sledge"; -SWWM_ACHIEVEMENT_SLEMG_TXT = "Activa %d interruptores a puñetazos"; +SWWM_ACHIEVEMENT_SHOCK_TXT = "Realiza %s combos de Biospark"; +SWWM_ACHIEVEMENT_SLEMG_TAG = "Un Toque Técnico"; +SWWM_ACHIEVEMENT_SLEMG_TXT = "Activa %s interruptores a puñetazos"; SWWM_ACHIEVEMENT_SNEAKY_TAG = "Retiro Furtivo"; -SWWM_ACHIEVEMENT_SNEAKY_TXT = "Usa %d Enlaces de Seguridad"; +SWWM_ACHIEVEMENT_SNEAKY_TXT = "Usa %s Enlaces de Seguridad"; SWWM_ACHIEVEMENT_SNEEZE_TAG = "Humillador"; -SWWM_ACHIEVEMENT_SNEEZE_TXT = "Mata %d enemigos con el fuego primario del Deep Impact"; +SWWM_ACHIEVEMENT_SNEEZE_TXT = "Mata %s enemigos con el fuego primario del Deep Impact"; SWWM_ACHIEVEMENT_SPARK_TAG = "El Buen Chispazo"; -SWWM_ACHIEVEMENT_SPARK_TXT = "Mata %d enemigos a la vez con un disparo combinado del Rifle Sparkster"; +SWWM_ACHIEVEMENT_SPARK_TXT = "Mata %s enemigos a la vez con un disparo combinado del Rifle Sparkster"; +SWWM_ACHIEVEMENT_SPEEN_TAG = "Di tu Frase, Vinny"; +SWWM_ACHIEVEMENT_SPEEN_TXT = "Haz un ataque giratorio con el Mazo Itamex durante %s segundos"; SWWM_ACHIEVEMENT_STEP_TAG = "Pisadita"; -SWWM_ACHIEVEMENT_STEP_TXT = "Mantente de pie en la cabeza de un solo enemigo durante %d segundos"; +SWWM_ACHIEVEMENT_STEP_TXT = "Mantente de pie en la cabeza de un solo enemigo durante %s segundos"; SWWM_ACHIEVEMENT_STOMP_TAG = "Complejo de Fontanero Italiano"; -SWWM_ACHIEVEMENT_STOMP_TXT = "Mata %d enemigos saltando encima"; -SWWM_ACHIEVEMENT_SUNNY_TXT = "Usa %d Invincibolas"; +SWWM_ACHIEVEMENT_STOMP_TXT = "Mata %s enemigos saltando encima"; +SWWM_ACHIEVEMENT_SUNNY_TXT = "Usa %s Invincibolas"; +SWWM_ACHIEVEMENT_TBD_TAG = "Destrucción Total de Bolas"; +SWWM_ACHIEVEMENT_TBD_TXT = "Despliega %s Bombas de Bolas"; SWWM_ACHIEVEMENT_TELE_TAG = "Pasatiempo de Soldado"; SWWM_ACHIEVEMENT_TELE_TXT = "Teletransporta pan (un sandwich también vale)"; -SWWM_ACHIEVEMENT_TENDER_TAG = "Eficiente Enternecido"; -SWWM_ACHIEVEMENT_TENDER_TXT = "Mata %d enemigos con el Pusher"; SWWM_ACHIEVEMENT_THICC_TAG = "El Culo era Gordo"; -SWWM_ACHIEVEMENT_THICC_TXT = "Mata %d enemigos a base de estampidas en el suelo"; +SWWM_ACHIEVEMENT_THICC_TXT = "Mata %s enemigos a base de estampidas en el suelo"; SWWM_ACHIEVEMENT_THRUWALL_TAG = "Toc Toc"; -SWWM_ACHIEVEMENT_THRUWALL_TXT = "Mata %d enemigos a través de las paredes con el Silver Bullet"; +SWWM_ACHIEVEMENT_THRUWALL_TXT = "Mata %s enemigos a través de las paredes con el Silver Bullet"; SWWM_ACHIEVEMENT_TORNADO_TAG = "¿Que Puñetas?"; SWWM_ACHIEVEMENT_TORNADO_TXT = "¿¿¿Aporrea un tornado???"; SWWM_ACHIEVEMENT_TRASH_TAG = "Sacando la Basura"; -SWWM_ACHIEVEMENT_TRASH_TAG = "Mata a todos los nazis en los mapas secretos de Doom 2"; +SWWM_ACHIEVEMENT_TRASH_TXT = "Mata a todos los nazis en los mapas secretos de Doom 2"; SWWM_ACHIEVEMENT_TRAVEL_TAG = "Un Viaje Muy Largo"; -SWWM_ACHIEVEMENT_TRAVEL_TXT = "Camina un total de %d kilómetros"; +SWWM_ACHIEVEMENT_TRAVEL_TXT = "Camina un total de %s kilómetros"; +SWWM_ACHIEVEMENT_TROGDOR_TAG = "Ardimiento"; +SWWM_ACHIEVEMENT_TROGDOR_TXT = "Mata %s enemigos con un solo cargador de Hellblazer"; SWWM_ACHIEVEMENT_UNTOUCHABLE_TAG = "Intocable"; SWWM_ACHIEVEMENT_UNTOUCHABLE_TXT = "Termina un mapa sin recibir daño"; SWWM_ACHIEVEMENT_WANTDIE_TAG = "¿Como Sigo con Vida?"; SWWM_ACHIEVEMENT_WANTDIE_TXT = "Despeja un mapa en la dificultad más alta (sin morir)"; SWWM_ACHIEVEMENT_WAVE_TAG = "Sayonara, Capullo"; SWWM_ACHIEVEMENT_WAVE_TXT = "Saluda a un enemigo muriéndose"; +SWWM_ACHIEVEMENT_WORDS_TAG = "Mucho Texto"; +SWWM_ACHIEVEMENT_WORDS_TXT = "Lee %s entradas de biblioteca"; SWWM_ACHIEVEMENT_YEET_TXT = "Lanza una Pistola Caramelo justo dentro del cerebro del Icono del Pecado"; diff --git a/language.es_dlg b/language.es_dlg index 4559c3ed1..87bbd1757 100644 --- a/language.es_dlg +++ b/language.es_dlg @@ -27,6 +27,11 @@ SWWM_CYTHOSIGIL1 = "\cdDemo\c-, soy \cvCytho\c-. Tengo un mensaje importante de SWWM_CYTHOSIGIL2 = "El príncipe Baphomet está satisfecho con tus esfuerzos, y ha abierto un portal para regresar a la Tierra."; SWWM_CYTHOSIGIL3 = "Desafortunadamente, dicho portal está guardado por demonios militares de alto rango, dos, de hecho."; SWWM_CYTHOSIGIL4 = "... Aunque, conociéndote, estoy seguro de que no será un problema, ¿cierto?"; +// E6M8 +SWWM_CYTHOSIGIL21 = "Ah, bien, te estás aproximando a su retaguardia."; +SWWM_CYTHOSIGIL22 = "Si jugamos bien nuestras cartas, esto debería pillarlos por sorpresa."; +SWWM_CYTHOSIGIL23 = "Neutralizar a los tenientes en esta zona será un golpe certero, sin lugar a duda."; +SWWM_CYTHOSIGIL24 = "No tienen ni idea de lo que les espera, no te verán venir. ¡Adelante, \cdDemo\c-!"; // MAP07 SWWM_SAYADIMPLE1 = "Alto ahí, \cdDemo-chan\c-. Estás a punto de meterte en terreno peligroso."; SWWM_SAYADIMPLE2 = "Esta es la primera línea de defensa que se ha montado alrededor del puerto interior, y es una jodienda."; @@ -42,7 +47,7 @@ SWWM_SAYACIRCLE5 = "Eso nos dará tiempo para pensar en el siguiente paso, supon // MAP20 SWWM_SAYAGOTCHA1 = "Este es el sitio, sí. Gran fortaleza rodeada de un lago de sangre tóxica. Muy demoníaco."; SWWM_SAYAGOTCHA2 = "Los tipejos estos tienen el sitio bien guardado, así que vas a encontrar mucha resistencia."; -SWWM_SAYAGOTCHA3 = "Tu revéntalo, mata a todos, y ya llegarás pronto al final."; +SWWM_SAYAGOTCHA3 = "Tu reviéntalo, mata a todos, y ya llegarás pronto al final."; SWWM_SAYAGOTCHA4 = "En cuanto llegues al portal, le daré un toque a \cvCytho-sama\c- para que nos diga como cerrarlo."; SWWM_SAYAGOTCHA5 = "Eso es todo, supongo. Buena suerte, mi \cdDemolicionista\c-."; // MAP20 special (Ultimate Doom 2) @@ -68,6 +73,34 @@ SWWM_CYTHONERVE2 = "Muchos otros grupos ya han sido suprimidos a escala mundial, SWWM_CYTHONERVE3 = "Tú, sin embargo, te enfrentas a un teniente cibernético conocido como el \"Último Tirano\". Será difícil."; SWWM_CYTHONERVE4 = "Sin embargo... Eres la heroica \cdDemolicionista\c-, y les darás una lección a estas viles bestias."; SWWM_CYTHONERVE5 = "Extingue las llamas de corrupción demoníaca que mancillan esta tierra. Los Kuriste creemos en ti."; +// Eviternity MAP05 +SWWM_SAYADMN1 = "Creo que este es el lugar correcto, \cdDemo\c-. Me salen lecturas TOCHAS de energía."; +SWWM_SAYADMN2 = "Sí, un puñado de demonios esperando para echarte el guante. A ver, claro que iban a estar aquí."; +SWWM_SAYADMN3 = "Una advertencia, por cierto. Estos portales son inestables, puede que te desmayes al cruzarlos."; +SWWM_SAYADMN4 = "Oh, y malas noticias ya de paso. También vas a perder todos los trastos en el proceso."; +SWWM_SAYADMN5 = "El FRIKI ese asegura que no es a propósito, pero yo no me lo trago."; +SWWM_SAYADMN6 = "Lo más que puede hacer es \"ofrecer un set de equipamiento inicial\" tras el borrado."; +SWWM_SAYADMN7 = "No me gusta como parecía alegrarle el tema. Cuchicheaba algo sobre \"transiciones de episodio\"."; +SWWM_SAYADMN8 = "Oh bueno, da lo mismo... Maldito friki..."; +// Eviternity MAP10 +SWWM_SAYACRE1 = "Es que voy a poner a caldo a la UAC con toda esta mierda. Y una polla lo de la \"reparación\"."; +SWWM_SAYACRE2 = "Sus bases siguen infestadas de demonios. A ver, ¿Donde están los escuadrones de limpieza?"; +SWWM_SAYACRE3 = "Espera... ¿Somos nosotros el escuadrón de limpieza? ¿Esperaban que NOSOTROS hiciéramos su trabajo?"; +SWWM_SAYACRE4 = "Si el niñato Kelliher ese no me hubiera bloqueado, es que se iba a enterar, en serio."; +// Eviternity MAP15 +SWWM_SAYACRY1 = "¡La madre, este sitio es enorme!"; +SWWM_SAYACRY2 = "A ver. Ya sabes, ¿no? Busca el portal. Debería ser fácil de encontrar, bien señalizado, etc."; +SWWM_SAYACRY3 = "Por suerte, en cuanto cruces, por fin estarás en territorio Xevetha."; +SWWM_SAYACRY4 = "Cosas de la misión aparte, tengo muchas ganas de esto... Que viajes a un planeta lejano."; +SWWM_SAYACRY5 = "Andando, \cdDemo-chan\c-. Un nuevo mundo te espera."; +// Eviternity MAP20 +SWWM_SAYACON1 = "Lecturas densas de energía ardiente otra vez... Ambas sabemos exactamente lo que significa."; +SWWM_SAYACON2 = "No tengo claro donde te llevará el próximo portal, pero espero que se adentre en territorio enemigo."; +SWWM_SAYACON3 = "Ya veremos cuando llegues. Con cada paso, nos estamos acercando a su líder."; +SWWM_SAYACON4 = "Que ganas tengo de que le partas el culo. ¿Este cretino se cree que puede liarla así como así? Pues no."; +SWWM_SAYACON5 = "¡A por ellos, \cdDemo\c-!"; +// Eviternity MAP25 +SWWM_SAYASLA1 = "Que alguien pare esta mierda... Por favor, que se acabe ya, estoy hartísima de tanto Infierno..."; // Eviternity MAP30 SWWM_SAYAEVIA1 = "Pst... Mira este sitio. Este tío no podía ser más pretencioso ni aunque lo intentara."; SWWM_SAYAEVIA2 = "Da igual lo \"angelical\" que parezca, es solo un tío con armadura bonita, le puedes patear el culo."; @@ -75,6 +108,61 @@ SWWM_SAYAEVIA3 = "Todo este sitio, es que... Joder, espero que hayas sacado much SWWM_SAYAEVIA4 = "Voy a por unas palomitas. Esto va a ser desde luego una batalla épica, jijijijiji..."; SWWM_SAYAEVIB1 = "¿Que? Pero menuda mierda salida de videojuego. ¿¿¿Me estás contando que el tío tiene DOS BARRAS DE VIDA???"; SWWM_SAYAEVIB2 = "¡Una mierda, una puta mierda así de grande! ¡Esto es una putísima mierda! ¡Cárgatelo, \cdDemo-chan\c-!"; +// Eviternity 2 MAP01 +SWWM_SAYAEV2A1 = "Oh, por fin, tu captura de video ha vuelto."; +SWWM_SAYAEV2A2 = "Me tenías preocupada, \cdDemo\c-. Estuvimos básicamente a ciegas durante varios minutos."; +SWWM_SAYAEV2A3 = "... Y ya puedo ver que se ha liado parda después de que te cargaras al bastardo con alas."; +SWWM_SAYAEV2A4 = "De momento, más te vale salir de ahí. Algo me dice que esto todavía no ha terminado."; +SWWM_SAYAEV2B1 = "Esa cosa... ... No, ni se mueve. Supongo que estaba bajo el control del tío ese."; +SWWM_SAYAEV2B2 = "Sabes, sigo prenguntándome que puñetas son esas cosas."; +SWWM_SAYAEV2B3 = "No es el típico Cacodemonio, obviamente. Parece uno, sí, pero es que... No sé..."; +SWWM_SAYAEV2B4 = "El bicho ese me da mal rollo. Probablemente salió de algún experimento de esta gente."; +SWWM_SAYAEV2B5 = "En fin... Estoy desvariando. Mejor largarse ya."; +SWWM_SAYAEV2C1 = "... Esa cosa se ha ido."; +SWWM_SAYAEV2C2 = "Ahora SÍ que esto me da mala espina. Sal de ahí, ya."; +SWWM_SAYAEV2D1 = "Esas cosas siguen vivas. Aun merodean por ahí. Esto no me gusta."; +SWWM_SAYAEV2D2 = "Corre, \cdDemo\c-. Por favor corre."; +// Eviternity 2 MAP05 +SWWM_SAYAEV2E1 = "No se ha acabado. Ya hemos visto que los demonios siguen vagando, y todo se va a la mierda, también..."; +SWWM_SAYAEV2E2 = "En serio tengo que averiguar que está pasando. Si ese tío no era el \"malo malísimo\", entonces..."; +SWWM_SAYAEV2E3 = "Por ahora, mejor que salgas de este sitio, mientras pateas traseros demoníacos por el camino, por supuesto."; +SWWM_SAYAEV2E4 = "Buena suerte,\cdDemo-chan\c-. La misión aun no se ha acabado, pero podrás salir de esta, lo sé."; +// Eviternity 2 MAP10 +SWWM_SAYAEV2F1 = "Creo que ya hemos visto suficientes tumbas antíguas, vaya que sí."; +SWWM_SAYAEV2F2 = "Este fue un desvío inesperado, pero la próxima parada nos debería dejar cerca. Es una instalación de la Facultad."; +SWWM_SAYAEV2F3 = "Oh, y por cierto, al final contacté con nuestro \"informante\"."; +SWWM_SAYAEV2F4 = "Te mandaré los detalles en tu registro de misión, en cuanto termine la entrevista."; +// Eviternity 2 MAP15 +SWWM_SAYAEV2G1 = "Ya casi... Me han dicho que el portal de salida más cercano es uno grande, así que prepárate."; +SWWM_SAYAEV2G2 = "También me han dicho que hay otro desvío de por medio, pero que luego deberíamos estar \"justo donde necesitamos\"."; +SWWM_SAYAEV2G3 = "Sinceramente, no entiendo todo este sistema de portales. Es tan poco práctico..."; +SWWM_SAYAEV2G4 = "Uno de estos días, voy a hacer el Proyecto Akari realidad. Eso SÍ que será buena tecnología de portales."; +// Eviternity 2 MAP20 +SWWM_SAYAEV2H1 = "Vale, ya basta de desvíos, basta de dar vueltas, este sí que sí."; +SWWM_SAYAEV2H2 = "Doña Nona ha estando soltando lore profundo últimamente. No vas a creer lo disparatado que se pone todo esto."; +SWWM_SAYAEV2H3 = "Intentaré meter todo en el próximo registro de misión. Tú sigue a lo tuyo, \cdDemo-chan\c-."; +// Eviternity 2 MAP25 +SWWM_SAYAEV2I1 = "A... Aun estoy temblando."; +SWWM_SAYAEV2I2 = "O sea que ESE es el poder de la artillería naval Qurensniv. Hostia... Puta."; +SWWM_SAYAEV2I3 = "E-en fin... ... A ver... Eso, ya está. Última línea de defensa. Luego de esto, \"Su Dominio Astral\"."; +SWWM_SAYAEV2I4 = "Te estoy enviando toda mi energía, \cdDemo-chan\c-. Mi energía y mi amor. ¡Sigue luchando!"; +// Eviternity 2 MAP26 +SWWM_SAYAEV2J1 = "Esto no me gusta. No me gusta para nada. Está todo muy tranquilo..."; +SWWM_SAYAEV2J2 = "Por favor ten cuidado, \cdDemo\c-."; +// Eviternity 2 MAP30 +SWWM_SAYAEV2K1 = "Hay una lectura de energía descoyuntante ahi. Algo grande, y CABREADO. Tiene que ser esto."; +SWWM_SAYAEV2K2 = "Haz que esa puta cosa salga, rómpela en pedazos, reviéntala a cachitos. ¡Acabemos con esta locura, \cdDemo-chan\c-!"; +SWWM_SAYAEV2L1 = "Por supuesto tenía que haber otra ronda. Esta cosa está muy enconada, en serio."; +SWWM_SAYAEV2L2 = "Pues mala suerte, debería haber escapado, AHORA si que le vas a dar el golpe de gracia."; +SWWM_SAYAEV2M1 = "La madre que la hizo... ¿Este puñetero bicho no sabe cuando rendirse?"; +// Bonus +SWWM_SAYAEV2N1 = "¿¿¿PERDONA PERO QUE COJONES??? ¿¿¿ACABA DE SOBREVIVIR UN DISPARO DEL YNYKRON???"; +SWWM_SAYAEV2N2 = "¿¿¿QUE COÑO ES ESA COSA??? ¿¿¿COMO PUEDE SEGUIR EN PIE????"; +SWWM_SAYAEV2O1 = "¿¿¿PERO POR QUE NO SE MUERE???"; +// Eviternity 2 MAP33 +SWWM_SAYAEV2P1 = "\cdDemo-chan\c-, espero que estés lista para salir corriendo."; +SWWM_SAYAEV2P2 = "A ver... ¿Es que creo que este sitio va a reventar en cuanto pulses ese botón?"; +SWWM_SAYAEV2P3 = "En serio, en cuanto le des, ¡sal cagando hostias y no pares!"; // Heretic E1M8 SWWM_SAYAMAW1 = "Y aquí estamos, en las \"Fauces del Infierno\"."; SWWM_SAYAMAW2 = "Según los Sidhe esto contiene el portal que conecta con el mundo de los demonios."; @@ -82,66 +170,66 @@ SWWM_SAYAMAW3 = "Creo que va a ser interesante visitar el equivalente al infiern SWWM_SAYAMAW4 = "... Y por supuesto, va a ser mucho más interesante reventarlo todo también, ¿verdad?"; SWWM_SAYAMAW5 = "Solo... Ten cuidado con lo que sea que guarde el sitio este."; // Heretic E2M8 -SWWM_SAYAMASTERS1 = "Vale, a ver... Estamos a un paso más de la guarida del jinete de serpiente ese. Pero hay un problema."; -SWWM_SAYAMASTERS2 = "Específicamente, varios problemas. Problemas grandes, tochos, y todo musculosos."; -SWWM_SAYAMASTERS3 = "Es que estamos hablando de MINOTAUROS ENORMES con MAZOS ENORMES."; -SWWM_SAYAMASTERS4 = "No se tú, pero yo ya estoy escuchando el tema de los Hombres del Pilar en mi cabeza."; -SWWM_SAYAMASTERS5 = "A por ellos, \cdDemo Demostar\c-... ... ... Vale puede que ese haya sido un chiste muy malo, olvídalo."; +SWWM_SAYAPORTALS1 = "Vale, a ver... Estamos a un paso más de la guarida del jinete de serpiente ese. Pero hay un problema."; +SWWM_SAYAPORTALS2 = "Específicamente, varios problemas. Problemas grandes, tochos, y todo musculosos."; +SWWM_SAYAPORTALS3 = "Es que estamos hablando de MINOTAUROS ENORMES con MAZOS ENORMES."; +SWWM_SAYAPORTALS4 = "No se tú, pero yo ya estoy escuchando el tema de los Hombres del Pilar en mi cabeza."; +SWWM_SAYAPORTALS5 = "A por ellos, \cdDemo Demostar\c-... ... ... Vale puede que ese haya sido un chiste muy malo, olvídalo."; // Heretic E3M8 SWWM_SAYADSPARIL1 = "Ya está, \cdDemo-chan\c-. Vas a enfrentarte al brujo capullo ese."; SWWM_SAYADSPARIL2 = "Vas a salvar otro mundo, y todo en tiempo récord. ¡Estás en racha!"; SWWM_SAYADSPARIL3 = "... Oh, y recuerda, te espera una sorpresa en casa. Oh, es que te va a encantar."; SWWM_SAYADSPARIL4 = "Splgslshglgh"; -SWWM_SAYADSPARIL5 = "Oh mierda ¿eso lo pillo el reconocimiento de voz? Ups..."; +SWWM_SAYADSPARIL5 = "¡Oh mierda! Hostia, ahí va toda la masa... ¡Oh! Eh... ¡N-no has oído nada!"; // Heretic E4M8 SWWM_SAYAHEADS1 = "Es que se me acaba la paciencia con todo. Espero que esto de verdad te traiga de vuelta a casa."; -SWWM_SAYAHEADS2 = "Y si no, bueno, más tiempo para refinar este \"regalo\" que te voy a dar."; -SWWM_SAYAHEADS3 = "Gracias a esto, he conseguido mejorar su potencia aun más. Nos divertiremos a tope."; -SWWM_SAYAHEADS4 = "En serio no puedo esperar a que lo pruebes, y estoy segura de que te mueres de ganas de saber que es..."; +SWWM_SAYAHEADS2 = "Y si no, bueno, más tiempo para preparar este regalo que es totalmente una sorpresa."; +SWWM_SAYAHEADS3 = "En cuanto a lo que oíste antes, lo que sea que creas que es, no es eso."; +SWWM_SAYAHEADS4 = "Y tampoco he montado un desastre total y he tenido que volver a empezar de cero. No señor."; SWWM_SAYAHEADS5 = "Eliminad aquestos enemigos y venid por vuestra recompensa, oh \cdDemolicionista\c-."; -SWWM_SAYAHEADS6 = "... Puto en serio acabo de decir eso..."; +SWWM_SAYAHEADS6 = "... En serio acabo de decir eso...?"; // Heretic E5M8 -SWWM_SAYABULLS1 = "Y es que sigue, su puta madre..."; +SWWM_SAYABULLS1 = "Y es que sigue, madre de dios..."; SWWM_SAYABULLS2 = "Es que te están mandando por mundos al azar. Mira, ya me estoy cabreando basto."; SWWM_SAYABULLS3 = "Estoy tan cabreada que, si el próximo portal no te trae de vuelta a Parthoris, es que..."; SWWM_SAYABULLS4 = "Eso..."; -SWWM_SAYABULLS5 = "NECESITO que vuelvas a casa, \cdDemo-chan\c-. Te necesito desesperadamente para probar esto."; +SWWM_SAYABULLS5 = "NECESITO que vuelvas a casa, \cdDemo-chan\c-. Tu regalo está empezando a derretirse."; // Seven Portals SWWM_SAYAGREETA1 = "Ahí lo tienes, \cdDemo-chan\c-. Ese es tu objetivo, ese bicho grande y feo apestoso. Ese es Korax."; SWWM_SAYAGREETA2 = "... Por cierto, te has fijado en como huele? Atufa, ¿a que sí?"; SWWM_SAYAGREETA3 = "Dios, imagina el olor en persona... Solo de pensarlo se me revuelve el estómago."; SWWM_SAYAGREETB1 = "Cobarde... Burlándose desde la distancia..."; // Kirin reply -SWWM_SAYAGREETC1 = "Sí, cobarde y asqueroso, los típicos signos de un bastardo feo."; -SWWM_SAYAGREETD1 = "¿Bastardo... Feo?"; // Kirin reply -SWWM_SAYAGREETE1 = "Es mejor no explicártelo, \cxKirin-kun\c-. Sentirías una decepción muy grande por toda la raza humana.."; -SWWM_SAYAGREETF1 = "Eso ciertamente no es tranquilizador de oír..."; // Kirin reply +SWWM_SAYAGREETC1 = "Sí, un cobarde... Y encima apesta. Pero no apesta bien, como yo."; +SWWM_SAYAGREETD1 = "\cgSayacchi\c-, tú no apestas."; // Kirin reply +SWWM_SAYAGREETE1 = "No, no, deja que te explique. Hay apestar MAL y hay apestar BIEN."; +SWWM_SAYAGREETF1 = "Yo... Creo que no lo entiendo."; // Kirin reply // Shadow Wood SWWM_SAYABLOODA1 = "No se como el tío este puede oler nada aparte de ese tufo de pedo de perro viejo que suelta."; SWWM_SAYABLOODA2 = "Es que en serio, la puta virgen..."; -SWWM_SAYABLOODB1 = "El bastardo feo ese necesita un baño."; // Ibuki reply -SWWM_SAYABLOODC1 = "¿Bastardo feo? ¿Que es esto ahora, un doujin cutre?"; -SWWM_SAYABLOODD1 = "Ja, muy buena, \cgSayacchi\c-."; // Ibuki reply +SWWM_SAYABLOODB1 = "Alguien necesita un baño."; // Ibuki reply +SWWM_SAYABLOODC1 = "¿Quien, yo? Si me he duchado esta mañana..."; // Hypostyle SWWM_SAYAHYPO1 = "Y ya, después de tantas vueltas. Lo que haya aquí, habrá que matarlo para pillar el siguiente portal."; SWWM_SAYAHYPO2 = "En serio espero que no sea un puto dragón. Sería el boss más cutre y genérico posible."; SWWM_SAYAHYPO3 = "Uh... Lo he gafado, ¿no? Seguro que sí. Ya, apuesto a que es un puto dragón."; -SWWM_SAYAHYPO4 = "Apuesto que el TÍO ESE va a salir de su tumba y puto venderme su maldito juego por milésima vez."; +SWWM_SAYAHYPO4 = "Apuesto que el TÍO ESE va a salir de su tumba y venderme su maldito juego por milésima vez."; // Heresiarch's Seminary SWWM_KIRINWORSHIPA1 = "Patética criatura repugnante...\n¿Quien pensaría jamas en adorar a una vil bestia como tú?"; -SWWM_KIRINWORSHIPB1 = "Pues yo lo que adoro es esa jugosa polla que tienes, \cxKirin-kun\c-~"; // Saya reply -SWWM_KIRINWORSHIPC1 = "PFFFFFFFFFFFFFF"; -SWWM_KIRINWORSHIPD1 = "¡Guh! \cx¡Kiriiiiin\c-! ¡Me acabas de echar cola todo por encima! ¡Joder escupes tan fuerte como te corres!"; // Saya reply -SWWM_KIRINWORSHIPD2 = "O-oh... Espera, esta cosa sigue encendida. Mierda... \cdDemo-chan\c- acaba de leer todo eso."; +SWWM_KIRINWORSHIPB1 = "En esta familia solo adoramos al buen emperador \cxKirin Xanai\c-."; // Saya reply +SWWM_KIRINWORSHIPC1 = "Nnnn... \cgSayaaaa\c-... No merezco ninguna adoración."; +SWWM_KIRINWORSHIPD1 = "Tonterías, eres un chico bueno super-adorable, y eso es toda la verdad."; // Saya reply +SWWM_KIRINWORSHIPE1 = "Por favor, delante de todos no, que me da vergüenza..."; +SWWM_KIRINWORSHIPF1 = "No pasa nada, no pueden verte. Pero \cdDemo\c- puede leer que te he puesto todo colorado. Jeje."; // Saya reply // Castle of Grief SWWM_SAYAGAMEA1 = "Guau, mira al puto maestro del ajedrez este... ¡Que te jodan!"; -SWWM_SAYAGAMEA2 = "Este tío es un puto idiota y me sigue cabreando más. Que ganas tengo de verte partirle el maldito culo..."; +SWWM_SAYAGAMEA2 = "Este tío es un idiota y me sigue cabreando más. Que ganas tengo de verte partirle el maldito culo..."; SWWM_SAYAGAMEB1 = "Friki del ajedrez..."; // Ibuki SWWM_SAYAGAMEC1 = "Apuesto a que estaba en el club de ajedrez."; // Necropolis SWWM_SAYAMASTERSA1 = "Maestros, maestros... ¿De quien? ¿Despertad mis maestros? Bueno, es igual, me da lo mismo lo que diga."; SWWM_SAYAMASTERSA2 = "Es que que ganas tengo de que te lo cargues..."; SWWM_SAYAMASTERSB1 = "¿Eres lo suficientemente fuerte para enfrentarte al hecho de que HUELES?"; // Ibuki reply -SWWM_SAYAMASTERSC1 = "Me duché esta mañana, \crIbuki\c-."; +SWWM_SAYAMASTERSC1 = "Ya te dije que me duché esta mañana, \crIbuki\c-."; SWWM_SAYAMASTERSD1 = "Me refiero al señorito apestoso de ahí. Tú hueles bien."; // Ibuki reply SWWM_SAYAMASTERSE1 = "\cgSayacchi\c- definitivamente posee un aroma agradable."; // Kirin reply SWWM_SAYAMASTERSF1 = "Jujujuju... Gracias."; @@ -158,9 +246,9 @@ SWWM_SAYACLERICC2 = "Los clérigos son una puta mierda..."; SWWM_SAYAMAGE1 = "La guarida de Menelkir, eh... ...\nOh dios, no se lo digas a \cxKirin-kun\c-, aquí hay puzzles."; SWWM_SAYAMAGE2 = "Sí, está ya más que cansado de todo este tema. Y aparentemente ahora los tenemos de coincidir dibujos."; SWWM_SAYAMAGE3 = "Bueno, al menos estos son puzzles de verdad, y no lo que coño sea que fuera todo aquello."; -SWWM_SAYAMAGE4 = "Aun que sean... Ya sabes... De los que son todo cutres y chupadísimos."; +SWWM_SAYAMAGE4 = "Aunque sean... Ya sabes... De los que son todo cutres y chupadísimos."; // Dark Crucible -SWWM_SAYAKORAXA1 = "Aquí estamos, \cdDemo\c-. El gran bastardo feo apestoso ese espera."; +SWWM_SAYAKORAXA1 = "Aquí estamos, \cdDemo\c-. El gran bastardo apestoso ese espera."; SWWM_SAYAKORAXB1 = "Al fin, el reinado maligno del vil conspirador encontrará su fin."; // Kirin reply SWWM_SAYAKORAXC1 = "Hora de que se dé un puto baño. Después de que le descoloques las rodillas, por supuesto."; // Ibuki reply SWWM_SAYAKORAXD1 = "Aunque \cvMeido\c- no lo esté viendo, te puedo decir que los cuatro te estamos dando ánimos."; @@ -217,16 +305,16 @@ SWWM_KIRINPUZZLEK1 = "Por favor... Haz que pare..."; SWWM_KIRINPUZZLEL1 = "\cxKirin-kun\c-, oye... No pasa nada. Toma... Bebe, te ayudará a relajarte.\c-"; // Ibuki reply SWWM_KIRINPUZZLEM1 = "Glu... Glu... Glu..."; SWWM_KIRINPUZZLEN1 = "Bueno, pero míralo... Ahí bebiéndolo todo como un campeón."; // Saya reply -SWWM_KIRINPUZZLEO1 = "Ya sabes como va... En cuanto encuentran una teta que mamar, se acabaron todos sus problemas..."; // Ibuki reply +SWWM_KIRINPUZZLEO1 = "Ya sabes como va... Los Anarukon son bebedores de leche natos."; // Ibuki reply SWWM_KIRINPUZZLEP1 = "Sabes que \cdDemo-chan\c- puede leer lo que decimos, ¿verdad?"; // Saya reply -SWWM_KIRINPUZZLEQ1 = "Oh, estoy segura de que le encantaría tomar su turno una vez se acabe la misión, ¿hm?"; // Ibuki reply +SWWM_KIRINPUZZLEQ1 = "Oh, pues espero que esto no le produzca imágenes mentales extrañas. *risita*"; // Ibuki reply // first puzzle switch on Constable's Gate SWWM_KIRINPUZZLER1 = "Más vale que este sea el último de estos \"puzzles\" que vayamos a encontrar..."; SWWM_KIRINPUZZLER2 = "Urp..."; SWWM_KIRINPUZZLER3 = "Mis disculpas."; SWWM_KIRINPUZZLES1 = "Estaba buena la leche, ¿a que sí?"; // Saya reply SWWM_KIRINPUZZLET1 = "Ciertamente... Doy gracias por la bendición de \crIbuki\c-."; -SWWM_KIRINPUZZLEU1 = "Hacer que pueda lactar a voluntad es una bendición, vaya que sí. Seguro que \cdDemo\c- está también de acuerdo."; // Saya reply +SWWM_KIRINPUZZLEU1 = "Desde luego aprovecha cualquier oportunidad para promocionar su marca. Bueno, tampoco me molesta."; // Saya reply // super secret cheats SWWM_ZNVTXT1 = "\cdDemolicionista\c-, soy yo, \chZanaveth El Corruptor\c-. He testificado del acto que has actuado, sí."; SWWM_ZNVTXT2 = "Son \cf%d\c- años... y las mágicas palabras veo en nuevo. Muy impresionada, mucho impresionada."; @@ -237,7 +325,60 @@ SWWM_ZNVTXT5 = "Debo dar marcha. A favor extender saludos a tía \cgSaya\c- en p SWWM_SAYAWASTEA1 = "¡Deja de malgastar balas!"; SWWM_SAYAWASTEB1 = "¿Aun sigues? ¿En serio?"; SWWM_SAYAWASTEC1 = "Vale, se nota que lo estás haciendo por tu propia satisfacción personal."; -SWWM_SAYAWASTED1 = "Es casi como si le estuvieras haciendo una paja, o algo..."; +SWWM_SAYAWASTED1 = "Es casi como si le estuvieras haciendo... Ya sabes qué..."; SWWM_SAYAWASTED2 = "Ehm, olvida lo que he dicho."; SWWM_SAYAWASTEE1 = "Y sigue... Dándole a la manivela."; SWWM_SAYAWASTEF1 = "Vale, te prometo que voy a dejar de mensajearte ya con todo esto. Tú a lo tuyo, supongo."; +// other easter egg +SWWM_SAYALEVERA1 = "¿Tu también, eh? Ya supuse que te engancharías a la acción de palanca."; +SWWM_SAYALEVERB1 = "Uhhh... Vale, satisfactorio y tal, pero creo que puedes parar ya."; +SWWM_SAYALEVERC1 = "\cdDemo\c-... Por favor..."; +SWWM_SAYALEVERD1 = "Dios es que... Ahhh..."; +SWWM_SAYALEVERE1 = "E... En serio... Es que me pone loca... El exceso de acción existe."; +SWWM_SAYALEVERF1 = "E-esa cosa está hecha para durar, desde luego. Su puta madre..."; +SWWM_SAYALEVERG1 = "..."; +SWWM_SAYALEVERG2 = "Creo que me acabas de dar una idea para un vídeo ASMR."; +// april fools +SWWM_SAYAFOOL1 = "Eh... ¿Que hace el texto ese ahí?"; +SWWM_SAYAFOOL2 = "Mierda, espera... ¿En serio olvidé activar una licencia?"; +SWWM_SAYAFOOL3 = "... ... Un momento... Espera un puto momento... ¿Que puñetas es Ultracam?"; +SWWM_SAYAFOOL4 = "Ay la puta hostia. Esto tiene que ser cosa de \cgTaro-nii\c-. No me puedo creer que haya picado. Hostia puta."; +SWWM_SAYAFOOL5 = "Bueno, no sé como quitarlo así que... Tú haz como si nada, supongo. Ya veré que hacer."; +// corruption cards +SWWM_CYTHOCCA1 = "\cdDemolicionista\c-, no te sientas alarmada por lo que has visto."; +SWWM_CYTHOCCA2 = "Es todo parte del plan del Príncipe Baphomet. Ha decidido ponerte a prueba."; +SWWM_CYTHOCCA3 = "Me temo que no tienes otra elección que jugar, aceptando las cartas que se te ofrecen."; +SWWM_CYTHOCCA4 = "Solo el tiempo dirá si se siente satisfecho con los resultados."; +SWWM_CYTHOCCA5 = "Lo único que puedo ofrecer de mi parte... Es desearte suerte. Buena suerte, \cdDemolicionista\c-."; +SWWM_CYTHOCCB1 = "¿Que? ¿Y se supone que tenemos que aceptarlo, así porque sí? Pienso llamar a un abogado."; // Saya reply +SWWM_CYTHOCCC1 = "\cgSaya\c-, no deberías tomar acciones legales contra el segundo príncipe del Infierno. Sería poco prudente."; +// grace of lilith +SWWM_SAYALILITHA1 = "¿¿¿PERO QUE COJONES ESTÁ PASANDO???"; +SWWM_SAYALILITHA2 = "¿¿¿HOLA??? ¿¿¿LA REALIDAD SE DESMORONA ANTE NUESTROS OJOS???"; +SWWM_SAYALILITHB1 = "Mantén la calma, \cgSaya\c-, este es el poder de la Matriarca Lilith. Es todo una ilusión."; // Cytho reply +SWWM_SAYALILITHC1 = "Ostias en vinagre... ¿Es por esto que los generales archidemonios le tienen miedo?"; +SWWM_SAYALILITHD1 = "En parte, sí. De entre nosotros, solo el Archiseñor Aximal puede compararse a ella."; // Cytho reply +SWWM_SAYALILITHE1 = "Hostia... Joder."; +// ROM3R-0 +SWWM_SAYAROMEROA1 = "¿Que cojones? ¿¿Es ese John Romero?? ¿¿¿Por que es un robot gigante???"; +SWWM_SAYAROMEROB1 = "Es una larga historia. Él y sus juegos fueron antaño definitivamente populares entre nuestra gente."; // Cytho reply +SWWM_SAYAROMEROC1 = "Eso no explica el robot."; +SWWM_SAYAROMEROD1 = "Resumiré diciendo que es solo un robot, y no sé por que Lord Baphomet lo ha traido aquí."; // Cytho reply +SWWM_SAYAROMEROD2 = "Es simplemente el último obstáculo en el camino de la \cdDemolicionista\c-."; +SWWM_SAYAROMEROE1 = "Romerobot está a punto de hacerte su perra, hm..."; +// another easter egg +SWWM_SAYACRANKA1 = "\cdDemo\c-... ¿No ves que ya está lleno? Lo vas a romper."; +SWWM_SAYACRANKB1 = "Estás haciendo esto a propósito solo por ver como reacciono, ¿verdad?"; +SWWM_SAYACRANKB2 = "Bueno, enhorabuena, estoy reaccionando y creo que deberías parar."; +SWWM_SAYACRANKC1 = "... Coño, \cdDemo\c-, ya vale."; +SWWM_SAYACRANKD1 = "*suspiro*"; +// Legacy of Rust E1E8 +SWWM_SAYALOR11 = "Vale, por proceso de eliminación, tiene que haber ALGO aquí, \cdDemo\c-."; +SWWM_SAYALOR12 = "Última oportunidad de encontrar esas bombas, antes de que esos cacho mierdas puedan usarlos."; +SWWM_SAYALOR13 = "Sigue siendo una jodienda que los demonios tengan literalmente armas de destrucción masiva... ¿Pero que estaba pensando la UAC?"; +// Legacy of Rust E2E8 +SWWM_SAYALOR21 = "Pues aquí estamos... Lecturas de energía ardiente a tope, definitivamente es la lanzadera."; +SWWM_SAYALOR22 = "No hace falta que diga que esperes resistencia. Estos bastardos no se van a rendir."; +SWWM_SAYALOR23 = "Pero ¿sabes lo que sería muy gracioso? Jejeje..."; +SWWM_SAYALOR24 = "¿Y si, digamos, fueras y prepararas las bombas para detonarse justo en su sitio?"; +SWWM_SAYALOR25 = "OBVIAMENTE, desde una distancia segura, eso es. Jo tío... Hay que hacerlo, \cdDemo\c-."; diff --git a/language.es_lore b/language.es_lore index f3f62a168..320846dbb 100644 --- a/language.es_lore +++ b/language.es_lore @@ -36,6 +36,39 @@ SWWM_LORETXT_ADMINISTRATORS = "\cf¿Es que por donde empiezo con esto? En serio que no puto entiendo como es que sigo subiendo y subiendo con esto. ¿Como coño he llegado a este punto, que puedo hasta casualmente tener una conversación sobre waifus de anime con un creador de universos de 18 mil millones de años? En serio que no lo entiendo, de verdad.\c-\n" "\n" "\cfPensé que el conocimiento prohibido que me dieron todos esos dioses que he conocido era demasiado. ¡BUENO PUES AHORA ES INCLUSO PEOR! ¡¡¡SÉ COSAS QUE NADIE DEBERÍA SABER, Y NO PUEDO COMPARTIR ESTE CONOCIMIENTO CON NADIE O ME BORRARÁN INSTANTÁNEAMENTE DE LA PUTA EXISTENCIA!!!\c-"; +SWWM_LORETXT_ADMUN = +" \cxNombre Completo:\c-\n" +" \cf James Admun Tachmek-Smith\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Escocesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 4673 AC\c-\n" +" \cxOcupación:\c-\n" +" \cf CEO (Instituto Tecnológico Tach-Engine)\c-\n" +"\n" +"\n" +"\n" +"\n" +"Nacido en el 4673 AC como \cfAdmun Tachmek\c-, primogénito del difunto \cfKimun Tachmek\c-, \cfJames\c- es el fundador y CEO del \cfInstituto Tecnológico Tach-Engine\c-, y también exiliado heredero al trono de \cfTerasana\c-, una posición de liderazgo actualmente tomada por \cfSeras Tonkebis\c-, anterior consejero de su padre.\n" +"\n" +"En el 4607 AC, siendo sentenciado al exilio por \cf\"no cumplir el deber de proteger la corona de Terasana\"\c- fue enviado a la colonia \cfSanais\c- de \cfEgipto\c-, donde pasó los años realizando varias tareas de labor forzada bajo condiciones inhumanas, incapaz de morir debido a una maldición de inmortalidad impuesta sobre él por Tonkebis como castigo. Este calvario duró hasta el 783 AC, con la disolución de a colonia a partir de un trato no especificado con el \cfImperio Yathai\c-, tras lo cual se dedicó a vagar la Tierra en busca de un hogar.\n" +"\n" +"En 808, tras muchos viajes, se asentó finalmente en algún lugar de las islas \cfBritánicas\c-, trabajando como herrero y adoptando el alias de \cfJames Smith\c-. Al pasar los años, la gente fue algo cautelosa dada su inmortalidad, pero no ponía pegas a sus servicios. Eso es, hasta 1011, cuando un lamentable trabajo al ajustar la armadura de un rey local resultó en su entrada en prisión. No sería liberado hasta 1097, mucho después de la muerte del rey. Tras esto, se mudó a \cfEscodia\c-, donde reside desde entonces.\n" +"\n" +"No se sabe mucho de su vida hasta la fundación del instituto, pero había amasado una gran fortuna con anterioridad a través de varios empleos, efectivamente acumulando el equivalente al sueldo de varias vidas humanas en el proceso. Tal y como relata el propio hombre, fueron esos los fondos que usaría tanto para la creación del instituto, como para las muchas iniciativas filantrópicas que encabeza regularmente hasta el día de hoy.\n" +"\n" +"Tras el \cfEvento Luna\c- de 2021, impulsó la colaboración con el gigante tecnológico \cfNukuri\c- de \cfNekuratek\c-, una de muchos tratos empresariales importantes que permitirían la escalada en popularidad de esta organización sorprendentemente sin ánimo de lucro y eventualmente contribuiría a convertir Escocia en una superpotencia mundial.\n" +"\n" +"Durante las primeras relaciones comerciales con la gente de \cfXekke\c- en 2048, tuvo un contacto estrecho con el líder de la compañía \cfKmonn Shuna\c-, \cfEushura Kmonn Jr.\c-, con lo cual se propagaron rumores sobre la clase de relación que ambos mantenían. Aun así, esto resultó en más avances para no solo su organización, si no toda la humanidad.\n" +"\n" +"Tras el incidente de la \cfCicatriz Blanca\c- de 2077, instó al gobierno Escocés de que no firmara el tratado para cortar lazos con los Nukuri, ya que esto efectivamente traería la ruína económica a toda la nación. Muchos otros siguieron también su ejemplo, notablemente \cfJapón\c-, teniendo lazos más estrechos con los Nukuri, junto con la \cfUnión de Repúblicas Africanas\c-, cuya existencia vino como resultado de su alianza con los benefactores alienígenas.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEl viejales tiene toda una historia detrás, he de admitir, aunque la única fuente de mucho de esto sea él mismo. Ya lo dije en el artículo del instituto, y lo digo también aquí: Me creo toda su historia.\c-\n" +"\n" +"\cfCoño, es que hasta la parte que me contó de que su tío materno es el mismísimo dios Anubis.\c-\n" +"\n" +"\cfNo, en serio. Hasta vi fotos, cabeza de chacal y todo (además es un disfraz).\c-"; SWWM_LORETXT_AKARILABS = "\cxNombre:\c-\n" "\cf Akari Labs\c-\n" @@ -52,7 +85,7 @@ SWWM_LORETXT_AKARILABS = "\n" "La compañía fue fundada en 2010 por \cfSaya Miyamoto\c- y \cfTaro Miyamoto\c-, comenzando sus días como un pequeño taller en su garaje. Con el tiempo, el incremento en popularidad de sus ingeniosos inventos trajo consigo una mayor expansión, y más gente atraída a trabajar con ellos. Aunque sus oficinas centrales son lo suficientemente grandes para alojar a todos sus empleados, algunos trabajan remotamente, debido a varias circunstancias.\n" "\n" -"Entre sus muchas creaciones, las \cfMaidbots\c-, inicialmente introducidas en 2017, y comercializadas cinco años más tarde, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Aunque la mayoría son adoptadas para ayudar en casa y poco más, han habido muchos casos de clientes que se han enamorado o incluso casado con ellas. La postura oficial de los laboratorios en cuanto a estos casos es que \"no hay nada malo\" en algo así, pero que uno no debe olvidar que aunque las Maidbots están \"totalmente equipadas para actos íntimos\", no pueden tener hijos.\n" +"Entre sus muchas creaciones, las \cfMaidbots\c-, inicialmente introducidas en 2017, y comercializadas cinco años más tarde, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Ha habido incluso casos de personas que han salido o incluso se han casado con ellas, y la posición oficial de los laboratorios al respecto es que \"no hay nada de malo\" en ello, ya que \"ni siquiera las diferencias entre la carne y el metal pueden entreponerse al amor\".\n" "\n" "Durante los \cfJuegos Olímpicos de Tokyo 2020\c-, la Maidbot personal de Saya fue elegida para cantar el himno nacional. Su voz cautivó a millones, y lanzó su carrera como idol.\n" "\n" @@ -77,7 +110,7 @@ SWWM_LORETXT_AKARILABS2 = "\n" "La compañía fue fundada en 2010 por \cfSaya Miyamoto\c- y \cfTaro Miyamoto\c-, comenzando sus días como un pequeño taller en su garaje. Con el tiempo, el incremento en popularidad de sus ingeniosos inventos trajo consigo una mayor expansión, y más gente atraída a trabajar con ellos. Aunque sus oficinas centrales son lo suficientemente grandes para alojar a todos sus empleados, algunos trabajan remotamente, debido a varias circunstancias.\n" "\n" -"Entre sus muchas creaciones, las \cfMaidbots\c-, inicialmente introducidas en 2017, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Aunque la mayoría son adoptadas para ayudar en casa y poco más, han habido muchos casos de clientes que se han enamorado o incluso casado con ellas. La postura oficial de los laboratorios en cuanto a estos casos es que \"no hay nada malo\" en algo así, pero que uno no debe olvidar que aunque las Maidbots están \"totalmente equipadas para actos íntimos\", no pueden tener hijos.\n" +"Entre sus muchas creaciones, las \cfMaidbots\c-, inicialmente introducidas en 2017, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Ha habido incluso casos de personas que han salido o incluso se han casado con ellas, y la posición oficial de los laboratorios al respecto es que \"no hay nada de malo\" en ello, ya que \"ni siquiera las diferencias entre la carne y el metal pueden entreponerse al amor\".\n" "\n" "Durante los \cfJuegos Olímpicos de Tokyo 2020\c-, la Maidbot personal de Saya fue elegida para cantar el himno nacional. Su voz cautivó a millones, y lanzó su carrera como idol.\n" "\n" @@ -125,7 +158,7 @@ SWWM_LORETXT_AKARIPROJECT2 = "\cfEl Proyecto Akari\c- es la primera entrada a la escritura de novelas de ciencia ficción de \cfSaya Miyamoto\c-, allá por el 2021, cuando la humanidad tuvo su primer contacto alienígena a través del \cfEvento Luna\c-. Fue anunciado como una posible visión del futuro que la alianza con los \cfNukuri\c- podría proveer, aunque hoy en día es visto más como una visión desafortunadamente \"demasiado optimista\" de dicho futuro. Sin embargo, su premisa principal aun puede hacerse realidad, al prometer la propia Saya liderar un Proyecto Akari real algún día, para que la humanidad cree sus propios portales hacia los rincones más lejanos del universo, y más allá.\n" "\n" "\cxNotas de Saya\c-\n" -"\cf... Y entonces todo se hizo realidad, más o menos. De puta madre que haya conseguido hacer el Proyecto Akari de verdad. Je, la UAC se puso TAAAAAAAN salty por esto, fue absolutamente delicioso. Todo el puto multiverso está abierto para nosotros ahora, y todo es seguro y libre de cualquier intervención demoníaca (a menos que lo usemos para ir al Infierno, claro).\c-\n" +"\cf... Y entonces todo se hizo realidad, más o menos. De puta madre que haya conseguido hacer el Proyecto Akari de verdad. Je, los de la UAC se quedaron TAAAAAAAN escocidos por eso, fue absolutamente delicioso. Todo el puto multiverso está abierto para nosotros ahora, y todo es seguro y libre de cualquier intervención demoníaca (a menos que lo usemos para ir al Infierno, claro).\c-\n" "\n" "\cfOh esto es realmente la buena mierda. Veo ahora la novela y me pregunto si esa subtrama romántica se hará realidad también. Ya sabes, cuando el Doctor Kirishima conoce a la Princesa Ikana, y se enamoran y... *suspiro* Tú imagina, una preciosidad de otro mundo juntándose con nosotras...\c-"; SWWM_LORETXT_AKARIPROJECT3 = @@ -143,11 +176,44 @@ SWWM_LORETXT_AKARIPROJECT3 = "\cfEl Proyecto Akari\c- es la primera entrada a la escritura de novelas de ciencia ficción de \cfSaya Miyamoto\c-, allá por el 2021, cuando la humanidad tuvo su primer contacto alienígena a través del \cfEvento Luna\c-. Fue anunciado como una posible visión del futuro que la alianza con los \cfNukuri\c- podría proveer, aunque hoy en día es visto más como una visión desafortunadamente \"demasiado optimista\" de dicho futuro. Sin embargo, su premisa principal aun puede hacerse realidad, al prometer la propia Saya liderar un Proyecto Akari real algún día, para que la humanidad cree sus propios portales hacia los rincones más lejanos del universo, y más allá.\n" "\n" "\cxNotas de Saya\c-\n" -"\cf... Y entonces todo se hizo realidad, más o menos. De puta madre que haya conseguido hacer el Proyecto Akari de verdad. Je, la UAC se puso TAAAAAAAN salty por esto, fue absolutamente delicioso. Todo el puto multiverso está abierto para nosotros ahora, y todo es seguro y libre de cualquier intervención demoníaca (a menos que lo usemos para ir al Infierno, claro).\c-\n" +"\cf... Y entonces todo se hizo realidad, más o menos. De puta madre que haya conseguido hacer el Proyecto Akari de verdad. Je, los de la UAC se quedaron TAAAAAAAN escocidos por eso, fue absolutamente delicioso. Todo el puto multiverso está abierto para nosotros ahora, y todo es seguro y libre de cualquier intervención demoníaca (a menos que lo usemos para ir al Infierno, claro).\c-\n" "\n" "\cfOh y también, ¿recuerdas la subtrama romántica? Kirishima e Ikana, sí... toooodo igualito a Kirin-kun y yo ahí, solo que con los géneros cambiados. No pasó exactamente igual, pero todo de putísima madre.\c-\n" "\n" "\cfMe pregunto si le gustaría leer esto. Sería una buena forma de pulir su Inglés, también.\c-"; +SWWM_LORETXT_ALAKIR = +" \cxNombre Completo:\c-\n" +" \cf Alakir de Kanaiarkar\c-\n" +" \cxTítulo:\c-\n" +" \cf Representante de los Ésper en Arkai\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Mortelucense\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2031-12-31\c-\n" +" \cxOcupación:\c-\n" +" \cf Cónsul (República Morteluz)\c-\n" +"\n" +"\n" +"Alakir es el último superviviente de los \cfÉspers de Marfil\c-, los cuales una vez habitaban la próspera ciudad de \cfKanaiarkar\c- en la costa oeste de la \cfRepública Morteluz\c-. Era el actual alcalde de la ciudad durante las \cfPrimeras Cruzadas Ésper\c- del \cfImperio Sacrosanto de Levlen\c- (2094), y uno de los pocos que sobrevivieron al evento.\n" +"\n" +"Tras esta gran masacre, buscó ayuda de la capital. Fue entonces que aprendería realmente lo retorcida y corrupta que era la nación que llamaba su hogar. Ciertamente, quienes se encontraban en el poder recibieron el aviso previo de que la invasión tendría lugar, pero eligieron no actuar. Tal como le dijeron, las consecuencias de contraatacar al Imperio Sacrosanto se pensaron mucho peores que simplemente dejarlo pasar. Las vidas de cientos de miles de \cfÉspers\c- fueron consideradas un sacrificio necesario para mantenerse en buenos términos con sus devotos vecinos sureños.\n" +"\n" +"Sin embargo, y a pesar de todo, se le ofreció ayuda. Protección personal, junto con la promesa de reconstrucción, pero por un precio, el de su propio cuerpo. Al no tener otra opción de ayudar a los otros supervivientes, aceptó. Kanaiarkar y sus asentamientos vecinos serían reconstruidos, y los supervivientes recibirían comida y refugio. En público, la \"generosidad\" de la República sería elogiada por doquier, mientras que en privado, un pago sería \"recolectado\" regularmente por varios políticos de alto cargo, los cuales llenarían luego sus propios bolsillos en el mercado negro vendiendo la sangre única del último Ésper de Marfil existente.\n" +"\n" +"Durante su estancia en la capital, tuvo la ocasión de conocer a un joven que se encontraba de visita por razones diplomáticas: \cfKirin Xanai\c-, el líder del \cfImperio Sykhai\c- al norte. Alakir pudo notar fácilmente que este joven tenía un aire completamente diferente al de otras figuras políticas a las que conocía. Sin embargo, su tiempo juntos no duraría mucho, ya que pronto tuvo que regresar a su nuevamente reconstruido pueblo natal.\n" +"\n" +"Mientras rehacía su vida, intentando dejar atrás el pasado, recibió la visita de una mujer, \cfRena\c-, quien había escuchado su historia y sentía una gran admiración por el. Los dos se casarían más tarde, aunque su unión no duraría mucho. Meses después, sería reclutada en las filas de los \cfInquisidores de Levlen\c- por medio de la influencia de su familia, y se vería forzada a abandonarlo.\n" +"\n" +"Las cosas no se detuvieron aquí, ya que tuvo lugar un segundo ataque a la ciudad. Sin embargo, los invasores fueron rechazados, no por los ejércitos de la República, si no por los guerreros del Imperio Sykhai, con el propio Kirin a la cabeza. Al parecer, Kirin había investigado la situación durante su estancia en la capital, y decidió vigilar cuidadosamente las comunidades Ésper en caso de que ocurriera algo. A pesar de haber sido advertido de que esta acción solo incrementaría la hostilidad del Imperio Sacrosanto hacia ellos, luchó contra los invasores. Consciente de la negligencia de la República, el joven emperador organizó la completa evacuación de todos los supervivientes, ofreciéndoles un hogar temporal en Akkou, y también que Alakir sirviera ahí como cónsul.\n" +"\n" +"Tras la boda de Kirin con \cfSaya Miyamoto\c- en 2171, ella pudo notar el hecho de que ambos claramente sentían algo el uno por el otro, y les empujó a confesar. Desde entonces, Kirin y Alakir están saliendo, con planes para un casamiento futuro una vez se resuelvan algunos acuerdos.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEstoy segura de que da todo el asco leer esto igual que nos lo dio a Taro-nii y a mi al escribirlo. Joder, lo que le hicieron los cerdos esos... Las cicatrices que le dejaron...\c-\n" +"\n" +"\cfOh ya, y tengo oído a Kirin-kun decir que están hablando con la familia real en cuanto a esos \"arreglos\" (sí, la así llamada \"República\" resulta ser una monarquía), y no solo resulta que no sabían nada de lo ocurrido, si no que están absolutamente horrorizados. Algo me dice que van a rodar las cabezas de todos esos bastardos. Con suerte, podremos celebrarlo luego meándonos en sus tumbas.\c-\n" +"\n" +"\cfTemas aparte, bendito Kirin-kun por ser su puñetero salvador, en serio. La vida de Alakir-kun estuvo tan hecha mierda... Y es todo gracias a él que sigue vivo hasta ahora. Dios, es que si ya tenia razones suficientes para amarlo, esta ya es la guinda final.\c-"; SWWM_LORETXT_ANARUKON = "\cxNombre:\c-\n" "\cf Anarukon (\"Imperecedero\")\c-\n" @@ -217,6 +283,133 @@ SWWM_LORETXT_ANGERYSIGIL = "\cfEsta fue idea de Maruku. Cuesta bastante pillarlas, así que no las malgastes, ¿vale? Oh y también, anda con cuidado o puede que te auto-descoyuntes a tope con esto.\c-\n" "\n" "\cfCreo que podría ganarte en una pelea si usara esto. A ver, tampoco es que quiera hacerte daño pero... Solo lo digo hipotéticamente, ya sabes.\c-"; +SWWM_LORETAG_ARCHDEMONS = "Archidemonios"; +SWWM_LORETXT_ARCHDEMONS = +"\cxNombre:\c-\n" +"\cf Archidemonios\c-\n" +"\cxClasificación:\c-\n" +"\cf Élite Demoníaca\c-\n" +"\cxLocalización:\c-\n" +"\cf Infierno\c-\n" +"\n" +"Cuando un miembro de la \cfEspecie Demoníaca\c- alcanza un alto estatus, sea por su longevidad y/o su poder, obtiene la designación de \cfArchidemonio\c-. Formando parte de algo menos del 0.01% de la población, los miembros de esta clase de \"élite\" tienden a mantener posiciones importantes dentro del reino. Los más famosos entre ellos son los generales Archidemonios, los cuales lideran las fuerzas armadas del \cfInfierno\c-. Otras figuras de renombre incluyen a los muchos archiseñores, anteriores líderes de reinos exteriores los cuales habían seguido al \cfPadre Nostros\c-.\n" +"\n" +"Dadas las circunstancias actuales, los generales Archidemonios han atraído mucha atención, habiendo usurpado el trono del Infierno con el gran mariscal \cfErebus Arthamuz\c-, hijo del difunto \cfArchiseñor Thamuz\c-, gobernando ahora el reino con mano dura. Bajo este nuevo reinado, y con la anterior familia real en el exilio, el Infierno ha entrado en una nueva era de guerra y conquista, reforzada por varios avances en la producción masiva de unidades militares a través de ingeniería genética y crianza a escala industrial.\n" +"\n" +"Mucho se puede decir de cada general individual, aunque en afán de mantener este artículo conciso, un sumario sigue:\n" +"\n" +"\cfErebus Arthamuz:\c- Mariscal de las legiones del Infierno. Gran conquistador del monte que lleva su nombre y anterior personaje famoso convertido en líder militar. Hay muchos que critican sus habilidades, pero silencia velozmente cualquier oposición. Junto con su difunto padre, ambos construyeron la \cfEspira de Dis\c- en el corazón de la capital, de la cual adicionalmente toma el cargo de guardián.\n" +"\n" +"\cfThaar Adarion:\c- Auto-identificado como \"el mejor guerrero del Infierno\", aunque no sin mérito. Sirve como guardaespaldas del general Erebus, siempre a su lado. Existen rumores de que tiene cierto interés romántico por él dada la estrecha relación entre ambos.\n" +"\n" +"\cfTaeron Yraisamal:\c- Propagandista y reclutador oficial del ejército del Infierno. Favorito de los generales dado que, a pesar de su desinterés por la adoración del \cfTirano\c-, muestra un profundo desdén por la familia real y sus raíces.\n" +"\n" +"\cfKaume Irishtanar:\c- Barón de la \cfCasa Irishtanar\c- y líder de las fuerzas de espionaje, él mismo dedicado a mantener vigilada a la familia real en el exilio. Conocido por liderar el asesinato de la rival \cfCasa Valathor\c-, de la cual solo un miembro ha sobrevivido.\n" +"\n" +"\cfVera Akerastora:\c- Supervisor de los campos de crianza. A pesar de varios bien conocidos escándalos de canibalismo, ha mantenido su posición, y ofrece sus servicios como criador de unidades militares a cambio de \"tomar una parte\" de la producción.\n" +"\n" +"\cfGyeran Rashaz:\c- Esposa del general Erebus, ella misma teniendo también la posición de general a pesar de su falta de habilidad para el trabajo. Supervisa todos los movimientos de entrada y salida de la capital, como guardiana de las llaves de la ciudad.\n" +"\n" +"\cfUrthura Vexamal:\c- Guardia principal de las ciudades exteriores. Como seguidora de la deidad ancestral conocida como la \cfMano del Odio\c-, se dice que su crueldad no tiene par, y aquellos asentados cerca de la capital viven con temor a sufrir su ira.\n" +"\n" +"\cfDestora Arathon:\c- Una así llamada \"bailarina sangrienta\" quien sirve como entrenadora principal de las fuerzas militares, y es además alabada como un ídolo de muchos nobles. Es responsable del despliegue de unidades tanto dentro como fuera del reino.\n" +"\n" +"\cfBerias Ysharan:\c- Uno de los principales negreros \cf[n.t.: no había otra palabra disponible]\c- del Infierno, responsable de mantener sometida a toda la población. Considerado un traidor de su propia gente al estar involucrado en el reclutamiento forzado de civiles para varios propósitos.\n" +"\n" +"\cfAkedas Aximal:\c- Consejero personal del general Erebus y antiguo Archiseñor. Un hechicero retorcido solo superado en poder por la mismísima \cfMatriarca Lilith\c-, y uno de los primeros demonios nacidos en la \cfTierra\c-. Aximal ha sido testigo no solo del nacimiento de su propia especie, si no también del nacimiento del propio Infierno en sí, y muchos dicen que tales experiencias lo han dejado profundamente marcado.\n" +"\n" +"Al tiempo de escribir esto, todos los generales están activamente envueltos en la invasión de la Tierra (ver artículo de \cfInvasión Demoníaca\c- para más detalles).\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEl gordo cabrón y sus amigos. Tenemos los nombres de todos, así que en cuanto termines esta primera misión, ya puedes adivinar quienes serán los próximos objetivos. Tía, es que si no tuviésemos que resumir, nos habríamos puesto a detallar sobre TODA la mierda que han montado. Estos capullos se merecen una buena patada en el culo, en serio. Especialmente el tal Kaume ese, es el capullo que mató a la familia de Cytho-sama y prendió fuego a todo su pueblo natal. Vamos, es que cuando nos estábamos documentando para esto tenía MUCHO que decir sobre él. Puede que haya aprendido algunos tacos en Kuristema en el proceso, lo cual es útil, así ya sé que puedo llamarles a la cara a los capullos estos.\c-\n" +"\n" +"\cfEn fin, algunos archidemonios son buenos, a diferencia de la peña esta. A ver, tampoco los he conocido directamente, pero los pocos demonios que conozco hablan bien de ellos. Cytho-sama especialmente habla de la señora que encabeza la empresa en la que estaba, aunque está algo mosqueado de que no quiera luchar, porque aparentemente, si todos sus antiguos compañeros aunaran fuerzas, podrían superar completamente en poder a todo el ejército (su puta madre).\c-"; +SWWM_LORETXT_ARCHDEMONS2 = +"\cxNombre:\c-\n" +"\cf Archidemonios\c-\n" +"\cxClasificación:\c-\n" +"\cf Élite Demoníaca\c-\n" +"\cxLocalización:\c-\n" +"\cf Infierno\c-\n" +"\n" +"Cuando un miembro de la \cfEspecie Demoníaca\c- alcanza un alto estatus, sea por su longevidad y/o su poder, obtiene la designación de \cfArchidemonio\c-. Formando parte de algo menos del 0.01% de la población, los miembros de esta clase de \"élite\" tienden a mantener posiciones importantes dentro del reino. Los más famosos entre ellos son los generales Archidemonios, los cuales lideran las fuerzas armadas del \cfInfierno\c-. Otras figuras de renombre incluyen a los muchos archiseñores, anteriores líderes de reinos exteriores los cuales habían seguido al \cfPadre Nostros\c-.\n" +"\n" +"Dadas las circunstancias actuales, los generales Archidemonios han atraído mucha atención, habiendo usurpado el trono del Infierno con el gran mariscal \cfErebus Arthamuz\c-, hijo del difunto \cfArchiseñor Thamuz\c-, gobernando ahora el reino con mano dura. Bajo este nuevo reinado, y con la anterior familia real en el exilio, el Infierno ha entrado en una nueva era de guerra y conquista, reforzada por varios avances en la producción masiva de unidades militares a través de ingeniería genética y crianza a escala industrial.\n" +"\n" +"Mucho se puede decir de cada general individual, aunque en afán de mantener este artículo conciso, un sumario sigue:\n" +"\n" +"\cfErebus Arthamuz:\c- Mariscal de las legiones del Infierno. Gran conquistador del monte que lleva su nombre y anterior personaje famoso convertido en líder militar. Hay muchos que critican sus habilidades, pero silencia velozmente cualquier oposición. Junto con su difunto padre, ambos construyeron la \cfEspira de Dis\c- en el corazón de la capital, de la cual adicionalmente toma el cargo de guardián.\n" +"\n" +"\cfThaar Adarion:\c- Auto-identificado como \"el mejor guerrero del Infierno\", aunque no sin mérito. Sirve como guardaespaldas del general Erebus, siempre a su lado. Existen rumores de que tiene cierto interés romántico por él dada la estrecha relación entre ambos.\n" +"\n" +"\cfTaeron Yraisamal:\c- Propagandista y reclutador oficial del ejército del Infierno. Favorito de los generales dado que, a pesar de su desinterés por la adoración del \cfTirano\c-, muestra un profundo desdén por la familia real y sus raíces.\n" +"\n" +"\cfKaume Irishtanar:\c- Barón de la \cfCasa Irishtanar\c- y líder de las fuerzas de espionaje, él mismo dedicado a mantener vigilada a la familia real en el exilio. Conocido por liderar el asesinato de la rival \cfCasa Valathor\c-, de la cual solo un miembro ha sobrevivido.\n" +"\n" +"\cfVera Akerastora:\c- Supervisor de los campos de crianza. A pesar de varios bien conocidos escándalos de canibalismo, ha mantenido su posición, y ofrece sus servicios como criador de unidades militares a cambio de \"tomar una parte\" de la producción.\n" +"\n" +"\cfGyeran Rashaz:\c- Esposa del general Erebus, ella misma teniendo también la posición de general a pesar de su falta de habilidad para el trabajo. Supervisa todos los movimientos de entrada y salida de la capital, como guardiana de las llaves de la ciudad.\n" +"\n" +"\cfUrthura Vexamal:\c- Guardia principal de las ciudades exteriores. Como seguidora de la deidad ancestral conocida como la \cfMano del Odio\c-, se dice que su crueldad no tiene par, y aquellos asentados cerca de la capital viven con temor a sufrir su ira.\n" +"\n" +"\cfDestora Arathon:\c- Una así llamada \"bailarina sangrienta\" quien sirve como entrenadora principal de las fuerzas militares, y es además alabada como un ídolo de muchos nobles. Es responsable del despliegue de unidades tanto dentro como fuera del reino.\n" +"\n" +"\cfBerias Ysharan:\c- Uno de los principales negreros \cf[n.t.: no había otra palabra disponible]\c- del Infierno, responsable de mantener sometida a toda la población. Considerado un traidor de su propia gente al estar involucrado en el reclutamiento forzado de civiles para varios propósitos.\n" +"\n" +"\cfAkedas Aximal:\c- Consejero personal del general Erebus y antiguo Archiseñor. Un hechicero retorcido solo superado en poder por la mismísima \cfMatriarca Lilith\c-, y uno de los primeros demonios nacidos en la \cfTierra\c-. Aximal ha sido testigo no solo del nacimiento de su propia especie, si no también del nacimiento del propio Infierno en sí, y muchos dicen que tales experiencias lo han dejado profundamente marcado.\n" +"\n" +"Tras la desastrosa primera campaña en la Tierra (véase artículo \cfInvasión Demoníaca\c-), junto con otras escaramuzas menores, los generales han estado barajando formas de mantener sus ejércitos bajo control a pesar de la pérdida inicial de su comandante.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEl gordo cabrón y sus amigos. Tenemos los nombres de todos, así que en cuanto termines esta primera misión, ya puedes adivinar quienes serán los próximos objetivos. Tía, es que si no tuviésemos que resumir, nos habríamos puesto a detallar sobre TODA la mierda que han montado. Estos capullos se merecen una buena patada en el culo, en serio. Especialmente el tal Kaume ese, es el capullo que mató a la familia de Cytho-sama y prendió fuego a todo su pueblo natal. Vamos, es que cuando nos estábamos documentando para esto tenía MUCHO que decir sobre él. Puede que haya aprendido algunos tacos en Kuristema en el proceso, lo cual es útil, así ya sé que puedo llamarles a la cara a los capullos estos.\c-\n" +"\n" +"\cfEn fin, algunos archidemonios son buenos, a diferencia de la peña esta. A ver, tampoco los he conocido directamente, pero los pocos demonios que conozco hablan bien de ellos. Cytho-sama especialmente habla de la señora que encabeza la empresa en la que estaba, aunque está algo mosqueado de que no quiera luchar, porque aparentemente, si todos sus antiguos compañeros aunaran fuerzas, podrían superar completamente en poder a todo el ejército (su puta madre).\c-\n" +"\n" +"\cfActualización: Están bien jodidos todos. Puede que sigan intentando que parezca que no lo están, pero es que van dando putos palos de ciego. A lo mejor se creen que pueden formar alguna alianza a las prisas con algunos bastardos alienígenas, pero eso solo muestra lo desesperados que están. Apuesto al 100% que les van a dar una puñalada trapera.\c-"; +SWWM_LORETXT_ARCHDEMONS3 = +"\cxNombre:\c-\n" +"\cf Archidemonios\c-\n" +"\cxClasificación:\c-\n" +"\cf Élite Demoníaca\c-\n" +"\cxLocalización:\c-\n" +"\cf Infierno\c-\n" +"\n" +"Cuando un miembro de la \cfEspecie Demoníaca\c- alcanza un alto estatus, sea por su longevidad y/o su poder, obtiene la designación de \cfArchidemonio\c-. Formando parte de algo menos del 0.01% de la población, los miembros de esta clase de \"élite\" tienden a mantener posiciones importantes dentro del reino. Los más famosos entre ellos fueron los generales Archidemonios, los cuales una vez lideraron las fuerzas armadas del \cfInfierno\c-. Otras figuras de renombre incluyen a los muchos archiseñores, anteriores líderes de reinos exteriores los cuales habían seguido al \cfPadre Nostros\c-.\n" +"\n" +"Los generales Archidemonios atrajeron mucha atención, habiendo usurpado el trono del Infierno con el gran mariscal \cfErebus Arthamuz\c-, hijo del difunto \cfArchiseñor Thamuz\c-, gobernando entonces el reino con mano dura. Bajo este nuevo reinado, y con la familia real entonces exiliada, el Infierno entró en una era de guerra y conquista, reforzada por varios avances en la producción masiva de unidades militares a través de ingeniería genética y crianza a escala industrial. Sin embargo, y a pesar de todos sus esfuerzos, su tiempo al mando del reino fue cortado abruptamente tras su intento de conquistar la \cfTierra\c-, y la resistencia que encontraron.\n" +"\n" +"Mucho se puede decir de cada general individual, aunque en afán de mantener este artículo conciso, un sumario sigue:\n" +"\n" +"\cfErebus Arthamuz:\c- Anterior mariscal de las legiones del Infierno. Gran conquistador del monte que lleva su nombre y anterior personaje famoso convertido en líder militar. Hubo muchos que criticaron sus habilidades, pero silenciaba velozmente cualquier oposición. Junto con su difunto padre, ambos construyeron la \cfEspira de Dis\c- en el corazón de la capital, de la cual adicionalmente tomaba el cargo de guardián. Bajo el liderazgo restaurado, será sucedido por \cfAstaroth\c-, nieta del \cfRey Akusei\c-.\n" +"\n" +"\cfThaar Adarion:\c- Una vez auto-identificado como \"el mejor guerrero del Infierno\", aunque no sin mérito. Sirvió como guardaespaldas del general Erebus, siempre a su lado. Hubo rumores de que tenía cierto interés romántico por él dada la estrecha relación entre ambos. Su lealtad, sin embargo, falló al verse superado por un oponente más fuerte.\n" +"\n" +"\cfTaeron Yraisamal:\c- Anterior propagandista y reclutador oficial del ejército del Infierno. Favorito de los generales dado que, a pesar de su desinterés por la adoración del \cfTirano\c-, mostraba un profundo desdén por la familia real y sus raíces.\n" +"\n" +"\cfKaume Irishtanar:\c- Barón de la \cfCasa Irishtanar\c- y anterior líder de las fuerzas de espionaje, él mismo dedicado a mantener vigilada a la familia real en el exilio. Conocido por liderar el asesinato de la rival \cfCasa Valathor\c-, de la cual solo un miembro ha sobrevivido.\n" +"\n" +"\cfVera Akerastora:\c- Anterior supervisor de los ahora desmontados campos de crianza. A pesar de varios bien conocidos escándalos de canibalismo, mantuvo su posición, ofreciendo sus servicios como criador de unidades militares a cambio de \"tomar una parte\" de la producción.\n" +"\n" +"\cfGyeran Rashaz:\c- Difunta esposa del general Erebus, ella misma teniendo también la posición de general a pesar de su falta de habilidad para el trabajo. Supervisaba todos los movimientos de entrada y salida de la capital, como guardiana de las llaves de la ciudad.\n" +"\n" +"\cfUrthura Vexamal:\c- Anterior guardia principal de las ciudades exteriores. Como seguidora de la deidad ancestral conocida como la \cfMano del Odio\c-, se dice que su crueldad no tuvo par, y aquellos asentados cerca de la capital vivían con temor a sufrir su ira.\n" +"\n" +"\cfDestora Arathon:\c- Una así llamada \"bailarina sangrienta\" quien sirvió como entrenadora principal de las fuerzas militares, y era además alabada como un ídolo de muchos nobles. Fue responsable del despliegue de unidades tanto dentro como fuera del reino.\n" +"\n" +"\cfBerias Ysharan:\c- Anteriormente uno de los principales negreros \cf[n.t.: no había otra palabra disponible]\c- del Infierno, responsable de haber mantenido sometida a toda la población. Considerado un traidor de su propia gente al haber estado involucrado en el reclutamiento forzado de civiles para varios propósitos.\n" +"\n" +"\cfAkedas Aximal:\c- Anteriormente el consejero personal del general Erebus y ahora el único general restante todavía manteniendo el poder sobre el reino tras recuperar su posición como Archiseñor. Un hechicero retorcido solo superado en poder por la mismísima \cfMatriarca Lilith\c-, y uno de los primeros demonios nacidos en la \cfTierra\c-. Aximal ha sido testigo no solo del nacimiento de su propia especie, si no también del nacimiento del propio Infierno en sí, y muchos dicen que tales experiencias lo han dejado profundamente marcado.\n" +"\n" +"Tras la desastrosa primera campaña en la Tierra (véase artículo \cfInvasión Demoníaca\c-), junto con otras escaramuzas menores, los generales barajaron formas de mantener sus ejércitos bajo control a pesar de la pérdida inicial de su comandante. En 2165, tras muchas otras pérdidas, incluyendo la de una comandante nuevamente reclutada, con todos sus ejércitos desordenados, los generales mantuvieron su última resistencia, siendo luego asesinados uno por uno, con la excepción de Akedas Aximal, quien consiguió huir, y todavía controla el reino desde las sombras.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEl gordo cabrón y sus amigos. Tenemos los nombres de todos, así que en cuanto termines esta primera misión, ya puedes adivinar quienes serán los próximos objetivos. Tía, es que si no tuviésemos que resumir, nos habríamos puesto a detallar sobre TODA la mierda que han montado. Estos capullos se merecen una buena patada en el culo, en serio. Especialmente el tal Kaume ese, es el capullo que mató a la familia de Cytho-sama y prendió fuego a todo su pueblo natal. Vamos, es que cuando nos estábamos documentando para esto tenía MUCHO que decir sobre él. Puede que haya aprendido algunos tacos en Kuristema en el proceso, lo cual es útil, así ya sé que puedo llamarles a la cara a los capullos estos.\c-\n" +"\n" +"\cfEn fin, algunos archidemonios son buenos, a diferencia de la peña esta. A ver, tampoco los he conocido directamente, pero los pocos demonios que conozco hablan bien de ellos. Cytho-sama especialmente habla de la señora que encabeza la empresa en la que estaba, aunque está algo mosqueado de que no quiera luchar, porque aparentemente, si todos sus antiguos compañeros aunaran fuerzas, podrían superar completamente en poder a todo el ejército (su puta madre).\c-\n" +"\n" +"\cfActualización: Están bien jodidos todos. Puede que sigan intentando que parezca que no lo están, pero es que van dando putos palos de ciego. A lo mejor se creen que pueden formar alguna alianza a las prisas con algunos bastardos alienígenas, pero eso solo muestra lo desesperados que están. Apuesto al 100% que les van a dar una puñalada trapera.\c-\n" +"\n" +"\cfActualización 2: Maaaaaaaaaaaadre de dios se jodieron pero bien, vaya que sí. Y el viejales ese tampoco va a durar mucho. Yo digo que unas cuantas aventuras más por su terreno y la va a palmar de un infarto de lo tanto que lo cabreas. Si no podemos llegar a él directamente, entonces es la mejor solución que tenemos.\c-"; SWWM_LORETXT_ASHLEY = " \cxNombre Completo:\c-\n" " \cf Ashley Knox\c-\n" @@ -234,7 +427,7 @@ SWWM_LORETXT_ASHLEY = "\n" "Nacida en Londres en 1887, hija de \cfYrikha Yanikov\c- y \cfMaxwell A. Knox\c-, \cfAshley\c- es la mayor de tres hijos, los otros siendo \cfAdrian Knox\c-, veterano de la Primera y Segunda Guerras Mundiales, y \cfViola Knox\c-, una bruja en prácticas (todavía hasta la fecha actual de 2148). Pasó la mayor parte de su infancia en Cornualles, después de que su madre tuviera que darse a la fuga por acusaciones de brujería (las cuales no eran exactamente falsas).\n" "\n" -"En 1983, se casó con \cfFredrik Steiner\c-, teniendo los dos un único hijo, \cfChristopher Knox\c-, en 1989. Sin embargo, tras descubrir que era una bruja se divorció de ella, dejándola sola al cuidado de su hijo. A pesar de las dificultades a las que se enfrentaron, Christopher creció y se convirtió en uno de las mentes más prodigiosas de la ciencia de principios del siglo XXI.\n" +"En 1983, se casó con \cfFredrik Steiner\c-, teniendo los dos un único hijo, \cfChristopher Knox\c-, en 1989. Sin embargo, tras descubrir que era una bruja se divorció de ella, dejándola sola al cuidado de su hijo. A pesar de las dificultades a las que se enfrentaron, Christopher creció y se convirtió en una de las mentes más prodigiosas de la ciencia de principios del siglo XXI.\n" "\n" "Ashley nunca destacó mucho hasta principios de los años 2000, cuando, tras varios años de práctica para convertirse en guitarrista, formó su propia banda con un grupo de amigos (algunos de los cuales había conocido durante su estancia en la ciudad mágica de \cfSankaideriha\c- donde estudió brujería).\n" "\n" @@ -247,13 +440,30 @@ SWWM_LORETXT_ASHLEY = "\cxNotas de Saya:\c-\n" "\cfAhhhhh tía... Bendita sea esta lesbiana, amén.\c- \cg♥\c-\n" "\n" -"\cfEn serio es que, Ashley-san mola muchísimo, me encanta su música, me encanta su... todo. Y joder es que estoy TAAAAAAAAAAAN celosa de Yu-chan, que puede disfrutar de esos suaves pechotes de bruja cuando le da la gana, mientras que yo solo puedo pedir abrazos y a veces me dice que no y... coño. Pero venga joder, es solo un abrazo, yo solo quiero poder sentir la suavidad™, ¿que problema hay con eso?\c-\n" +"\cfEn serio es que, Ashley-san mola muchísimo, me encanta su música, me encanta su... todo. Y joder es que Yu-chan es TAAAAAAAAAAAN suertuda, que consigue una novia gótica molona que además es una bruja y una cantante super guay y además hace arte furro que mola mucho y tal...\c-\n" "\n" -"\cfBueno, cachondismo aparte, las otras gentes de la banda, molan también, sí. Buen colegueo con todas, vamos, hasta con la grandota, Maruku. Bueno, casi no habla, y mete un poco de miedo... pero resulta ser maja, y una chuuni de cuidado. Luego Mykka... jo tía, todo un encanto. La verdad es que aprendí la mayoría de lo que sé de dioses y cosas de ella. Siempre le gusta hablar durante horas y horas de \"lore\", y me enseña cosas tope molonas que puede hacer con sus poderes (puede hacer aparecer caramelos de la nada, cosa fina).\c-\n" +"\cfEn fin, las otras gentes de la banda, molan también, sí. Buen colegueo con todas, vamos, hasta con la grandota, Maruku. Bueno, casi no habla, y mete un poco de miedo... pero resulta ser maja, y una chuuni de cuidado. Luego Mykka... jo tía, todo un encanto. La verdad es que aprendí la mayoría de lo que sé de dioses y cosas de ella. Siempre le gusta hablar durante horas y horas de \"lore\", y me enseña cosas tope molonas que puede hacer con sus poderes (puede hacer aparecer caramelos de la nada, cosa fina).\c-\n" "\n" -"\cfY al final, el caso con Py, la pequeñaja rosa... Puede que tal vez en cierto modo no estemos muy en buenos términos por unos comentarios estúpidos que hice que, sinceramente, ojalá no hubiera hecho. Mira, en mi defensa, no lo sabía y sabes que soy muy MUY directa con las mierdas que suelto a veces, no puedo evitarlo. Y sí, a veces puede que casualmente si alguien me pone voy y le pido que \"mande nudes\" y tal pero... ah, mierda joder.\c-\n" +"\cfY al final, el caso con Py, la pequeñaja rosa... Esperaba que fuese toda cuquismo pero resulta que es de armas tomar. Oí que hasta es más fuerte que su novio, lo cual es tremendo teniendo en cuenta que el tío estuvo en dos guerras mundiales. A ver... Vi una cosa que hizo donde lo agarraba y el tío se dejó tumbar y... ... ¿Creo que le gustaba? Madreeee...\c-\n" "\n" -"\cfSí, estoy en su lista de \"indeseables que me han pedido fotopolla\".\c-"; +"\cfPues eso, Ashley-san y sus amigas molan mucho.\c-"; +SWWM_LORETAG_BALLSBOMB = "Bomba de Bolas"; +SWWM_LORETXT_BALLSBOMB = +"\cxDesignación:\c-\n" +"\cf Bomba de Bolas\c-\n" +"\cxFabricante:\c-\n" +"\cf Plutoni Incorporated\c-\n" +"\cxClasificación:\c-\n" +"\cf Bomba de Clúster\c-\n" +"\n" +"La \cfBomba de Bolas\c- es un dispositivo especial diseñado para una sola cosa: Dispensar muerte. Ideada por estudiantes de la \cfUniversidad de Nos-Kora\c-, y empleando tecnología que no puede ser exactamente comprendida por una mente sin entrenar, este artefacto explosivo es esencial para quien quiera hacer que sus enemigos experimenten lo que se siente al ser bombardeados por docenas de bolas de denso metal a alta velocidad. En una entrevista, el líder del proyecto simplemente dijo: \"Os van a encantar nuestras bolas.\"\n" +"\n" +"\cfPlutoni Incorporated\c-, la filial de distribución armamentística de la universidad, no se hace responsable de cualquier mal uso del dispositivo, y no debe ser cuestionada en lo referente a cualquier comportamiento peculiar que la carga explosiva del dispositivo pueda tener.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cf\"Comportamiento peculiar\" es una forma de decirlo. Lo vi durante un fuego de prueba, vi lo que hizo una de esas bolas a un bloque de gel balístico: Lo hizo EXPLOTAR mientras que un... Ruido estridente de dibujo animado sonaba. Hubo hasta un destello de luz y todo. Me han dicho que eso es algo que pasa \"por pura casualidad\"... Su puta madre...\c-\n" +"\n" +"\cfEsas cosas hacen críticos random. No estoy de coña, pero que puñetas... No me extraña que el friki nos lo recomendara.\c-"; SWWM_LORETAG_BELT = "Cinturón Útil"; SWWM_LORETXT_BELT = "\cxDesignación:\c-\n" @@ -324,14 +534,14 @@ SWWM_LORETXT_BLACKMANN = "\n" "\cfBlackmann Arms\c- fue fundada en 1924 por \cfDaniel Ischer\c-, inicialmente bajo el nombre de \cfSchwartzmann Exotischwaffen\c-, como un taller de \"armas exóticas\" en Colonia, Alemania. Cuando la familia emigró a América en 1933, en los comienzos de la \cfDictadura Nazi\c-, la tienda se \"americanizó\" bajo su nombre actual, y alcanzó la fama rápidamente diseñando toda clase de ingeniosas armas para las fuerzas aliadas, y aceptando toda clase de peticiones de diseños originales, su eslogan era \"si puedes imaginarlo, podemos crearlo\".\n" "\n" -"Blackmann se popularizó no solo por la rapidez en diseñar toda clase de curiosas armas que sus clientes pedían, sino también por sus propios inventos originales, como la serie \cfSilver Bullet\c- de rifles de francotirador de calibre ultra-alto, o la serie \cfPuntzer\c- de armas diseñadas para \"penetrar cualquier material, sin importar su resistencia\", gracias a su patentado diseño de bala \cfSpin Motion Wedge (SMW)\c-.\n" +"Blackmann se popularizó no solo por la rapidez en diseñar toda clase de curiosas armas que sus clientes pedían, sino también por sus propios inventos originales, como la serie \cfSilver Bullet\c- de fusiles antimaterial de calibre ultra-alto, o la serie \cfPuntzer\c- de armas diseñadas para \"penetrar cualquier material, sin importar su resistencia\", gracias a su patentado diseño de bala \cfSpin Motion Wedge (SMW)\c-.\n" "\n" "A partir de 2148, la compañía está a cargo de \cfHermann E. Ischer\c- tataranieto de su fundador, quien ha hecho su objetivo personal que toda arma creada en sus fábricas capaz de tener más de una bala cargada debe tener la habilidad de dispararlo todo a la vez, o lo más rápido posible. El hombre es también popular en redes sociales dado su estatus por tener el record mundial de \"mayores cejas\", frecuentemente presumiendo de ellas o hablando en detalle de su mantenimiento.\n" "\n" "Una gran parte de los fondos de la compañía proviene de \cfDon BIG SHOT\c-, quien, segun reportajes del propio Hermann, regularmente encarga toda clase de descabellados diseños de escopetas que ningun hombre en su sano juicio pensaría usar. De estos muchos diseños estrictamente privados, una sola arma fue hecha pública, la \cfWallbuster\c-, una escopeta revólver de 25 cañones, del calibre 6, supuestamente capaz de \"abrir una brecha a través de una barrera de puro plomo con medio metro de grosor\".\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfSí, sí. Armas que molan mucho y tal. Algunas hasta tuvieron la bendición del mismísimo Gun Jesus (dios como lo echo de menos). Pero, sí... Me di cuenta de una cosa cuando rebuscaba cosas para escribir aquí. Es por el nombre de la empresa y tal. Seguro que es una referencia a algo, sí... algo grande... y negro... ¿lo pillas? Sí, eso es. Por supuesto que es un puto chiste de penes, POR... SUPUESTO... QUE SÍ. ¿¿¿El puto tío en serio quería que toda la gente pensara en su POLLA cada vez que vieran sus enormes armas??? ¡¡¡PUTO ASCO!!!\c-"; +"\cfSí, sí. Armas que molan mucho y tal, pero sí... El tío... Las has visto, todos las hemos visto, las hemos VISTO. Como puñetas las ha podido hacer crecer tanto es algo que no logro comprender... Y nunca me ha dicho por qué, esa es la peor parte. ¿Por que puñetas querrá tener las cejas más grandes del mundo? ¿¿¿Acaso hay un chiste aquí que no estoy entendiendo???\c-"; SWWM_LORETAG_BLASTSUIT = "Chaleco Antiexpl."; SWWM_LORETXT_BLASTSUIT = "\cxDesignación:\c-\n" @@ -361,9 +571,9 @@ SWWM_LORETXT_CANDYGUN = "\n" "\cfFuego Primario:\c- Disparos individuales de dulzura explosiva. Un impacto directo debería ser letal contra la mayoría de objetivos, pero si de alguna forma no la palman con eso, los consiguientes petardeos puede que lo hagan, o también dispersen el daño a objetivos cercanos.\n" "\n" -"\cfFuego Secundario:\c- Realiza una \"recarga explosiva\", al igual que la Pistola de Explodium estándar. Ten en cuenta que a diferencia de su débil homóloga, la carga explosiva es mucho más extrema. Se recomienda tener siempre un cargador de repuesto listo para la recarga, para no acabar con un arma inútil si el que has lanzado no alcanza su objetivo.\n" +"\cfFuego Secundario:\c- Realiza una \"recarga explosiva\", al igual que la Pistola de Explodium estándar. Ten en cuenta que a diferencia de su débil homóloga, la carga explosiva es mucho más extrema. Por razones prácticas, no puedes realizar esta acción a menos que tengas munición disponible para recargar el arma, y necesitas al menos una bala en el cargador para que este pueda explotar.\n" "\n" -"\cfFuego Combinado:\c- Manteniendo el fuego secundario y primario pulsados (en ese orden) puedes optar por, en lugar de realizar la típica recarga explosiva, dejar el cargador dentro de la pistola, armado y listo, y entonces lanzar el arma entera como una granada, para una destrucción total. Como siempre, asegúrate de tener al menos un repuesto y más munición, o acabarás con las manos vacías. Dada esta naturaleza desechable, se te permite llevar hasta 4 repuestos en tu inventario. Úsalos bien.\n" +"\cfFuego Combinado:\c- Manteniendo el fuego secundario y primario pulsados (en ese orden) puedes optar por, en lugar de realizar la típica recarga explosiva, dejar el cargador dentro de la pistola, armado y listo, y entonces lanzar el arma entera como una granada, para una destrucción total. Asegúrate de tener al menos un repuesto y más munición, o acabarás con las manos vacías. Se te permite llevar hasta 4 repuestos en tu inventario.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfNo lo pillo, en serio que no. ¿Como es que mezclando toda esa mierda explosiva con caramelo hace esto? Oh, es igual, me sigue molando mucho cada momento, pero los bonitos fuegos artificiales me dan como nostalgia, no sé por qué...\c-\n" @@ -394,6 +604,35 @@ SWWM_LORETXT_CHANCEBOX = "\cfOK vale puede que lo de las chicas polilla sea algo que YO QUIERO, pero entiendes lo que quiero decir.\c-\n" "\n" "\cf... dios ojalá las chicas polilla fueran reales\c-"; +SWWM_LORETXT_CINNAMON = +" \cxNombre Completo:\c-\n" +" \cf Cinnamon Valentine\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Odmorian\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2013-04-10\c-\n" +" \cxOcupación:\c-\n" +" \cf Mercenario (explorador)\c-\n" +" \cxTwitter\c-\n" +" \cf @cinnamon_valentine\c-\n" +"\n" +"\n" +"Nacido en \cfNeimishi, Odmorian\c- como el menor de tres hermanastros. Al igual que sus hermanos, \cfCinamon\c- nunca conoció a su propio padre, dadas las tradiciones de su gente, y fue criado en solitario por su madre, la atleta retirada \cfCocoa Valentine\c-. Al llegar a la madurez, fue reclutado en el ejército de su país en guerra, donde fue condecorado con el título de \cf\"Maestro de la espada\"\c-. A pesar de esto, tiene preferencia por las armas de fuego, siendo también un hábil francotirador.\n" +"\n" +"Como llegó a conocer a \cfMarisa Azanth\c- no está muy claro. La pareja evita hablar de este tema. De todos modos, los dos se casaron en 2117, tras lo cual se mudó a la Tierra con ella, viviendo en la misma casa compartida con \cfIbuki Miyamtoo\c- y otros conocidos.\n" +"\n" +"Cinnamon parece poseer una habilidad especial, otorgada por su mujer, conocida como una \cfMaldición de Renacido\c-. Su ojo izquierdo está aparentemente \"poseído\" por un fragmento de una deidad demoníaca, conocida como \cfLa Informe\c-, lo que le permite retornar rápidamente a la vida si cae en combate, incluso si su cuerpo entero es destruido. Aunque su naturaleza es distinta, esto es ciertamente similar a la verdadera inmortalidad de su esposa \cfAnarukon\c-. Se puede suponer que hizo esto para que los dos pudieran permanecer juntos para toda la eternidad.\n" +"\n" +"Él acompaña regularmente a Marisa en sus muchas aventuras, ayudándola en el combate y, a menudo mencionado jocosamente, proporcionándole \"apoyo emocional\".\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEste tío, pues sí. Otra vez igual no tengo mucho que decir aparte de lo que puse en el artículo de Mari-san. Podría intentar soltar un poco de lore de la gente Odmorian o algo, pero tampoco sé mucho.\c-\n" +"\n" +"\cfEl tema con esta peña, de un país que también se llama Odmorian, es que solían habitar un continente entero, era su tierra natal y eso, pero entonces un puñado de bichos raros empezaron a invadir desde el sur y tal, y acabaron conquistando la mayor parte de su territorio. Ahora pues están apretujados en tres ciudades al norte, Neimishi, la capital, y luego Werm y Eexy, nombres rarunos, pues sí.\c-\n" +"\n" +"\cfY qué más... Ah, bueno, aparentemente esta cosa rara que tienen que resulta que no pueden reproducirse entre ellos, así que las mujeres básicamente tienen que buscar hombres de otras especies. Los hermanos de Cinnamon tienen el mismo padre, pero él tiene otro. No tengo detalles de ninguno, parece que prefieren el anonimato.\c-\n" +"\n" +"\cfOh, y una vez le toqué los abdominales. Le pedí permiso primero, por supuesto. A ver, es que obviamente.\c-"; SWWM_LORETAG_COLLAR = "Collar de Suerte"; SWWM_LORETXT_COLLAR = "\cxDesignación:\c-\n" @@ -406,16 +645,16 @@ SWWM_LORETXT_COLLAR = "Éste es un accesorio muy estiloso y elegante, hecho personalmente por \cfSaya Miyamoto\c-, con mucho amor y cariño, y adicionalmente infundido con energía mágica protectora por \cfAshley Knox\c-. Mientras lo lleves, tus aventuras serán mucho más fáciles, especialmente si tiendes a reventarte accidentalmente con tus propios explosivos. También puede absorber la mayoría del daño que recibas si estás REALMENTE en peligro, potencialmente permitiendo tu escapada. Un último detalle a notar es que no importa lo que pase, nunca se romperá.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cf¡Por última vez! NO es nada de BDSM, hostia joder ya. Todo cristo se me echa encima, y siempre es lo mismo. Es solo una cosa guay que pensé que te quedaría bien, y a Ibuki también, pero la peña lo sigue malinterpretando, *suspiro*...\c-\n" +"\cfEs un complemento bastante guay. Le queda bien a Ibuki, así que pensé que te quedaría bien a ti, también.\c-\n" "\n" -"\cfAunque, admito que os queda monísimo a las dos. Y coño si la novia gótica tetuda de Yu-chan sabe hacer buena magia. Olvidé ponerlo ahí arriba, pero hay otra cosa con el collar. Ashley-san me enseñó, que cuando el que lo lleva está... a punto de estirar la pata, puedo \"reclamarlo\" aquí a voluntad. Pues eso, ya sabes, si la palmas por ahí y no puedes hacer un reinicio de emergencia, no te perderemos para siempre, me aseguraré de traerte de vuelta y curar todas tus pupitas, lo prometo.\c-"; +"\cfOh, olvidé ponerlo ahí arriba, pero hay otra cosa con el collar. Ashley-san me enseñó, que cuando el que lo lleva está... a punto de estirar la pata, puedo \"reclamarlo\" aquí a voluntad. Pues eso, ya sabes, si la palmas por ahí y no puedes hacer un reinicio de emergencia, no te perderemos para siempre, me aseguraré de traerte de vuelta y curar todas tus pupitas, lo prometo.\c-"; SWWM_LORETXT_CRONOS = "\cxNombre:\c-\n" "\cf Cronos\c-\n" "\cxClasificación:\c-\n" "\cf Clúster de pequeños mundos interconectados\c-\n" "\n" -"\cfCronos\c- es un lejano universo en miniatura compuesto de pequeños mundos autocontenidos, los cuales están conectados entre ellos por puertas cuánticas que los lugareños llaman \cfPortales Etéreos\c-. Investigaciones históricas demuestran que todos estos pequeños mundos fueron una vez parte de uno mayor y único, pero un \"cataclismo\" no especificado ocurrió hace miles de años, partiendo este mundo en fragmentos desperdigados, los cuales solo pudieron ser reunidos a través de estos portales, creaciones de un grupo de poderosos hechiceros conocidos como los \cfCuatro Sabios\c-. De todos ellos, actualmente solo queda el \cfSabio de Invierno\c-, y se dice que cuando él también muera, los Portales Etéreos desparecerán para siempre, dejando a los varios mundos de Cronos aislados para toda la eternidad.\n" +"\cfCronos\c- es un lejano universo en miniatura compuesto de pequeños mundos auto-contenidos, los cuales están conectados entre ellos por puertas cuánticas que los lugareños llaman \cfPortales Etéreos\c-. Investigaciones históricas demuestran que todos estos pequeños mundos fueron una vez parte de uno mayor y único, pero un \"cataclismo\" no especificado ocurrió hace miles de años, partiendo este mundo en fragmentos desperdigados, los cuales solo pudieron ser reunidos a través de estos portales, creaciones de un grupo de poderosos hechiceros conocidos como los \cfCuatro Sabios\c-. De todos ellos, actualmente solo queda el \cfSabio de Invierno\c-, y se dice que cuando él también muera, los Portales Etéreos desparecerán para siempre, dejando a los varios mundos de Cronos aislados para toda la eternidad.\n" "\n" "En estas tierras, hay tres facciones mayores, la \cfLegión\c-, el \cfArcanum\c-, y la \cfIglesia\c- (realmente llamada así). Anteriormente peleando constantemente entre ellos, ahora están todos bajo el control de \cfKorax\c-, el segundo de los \cfJinetes de Serpiente\c-, y recibieron un gran poder de él. Puede que tengas que combatir con ellos y sus líderes antes de poder enfrentarte al Jinete moviendo los hilos, pero viendo tu experiencia en misiones anteriores, está claro que esto no será un problema.\n" "\n" @@ -441,16 +680,14 @@ SWWM_LORETXT_CYRUS = "\n" "Cyrus se centra principalmente en traer tecnologías altamente avanzadas de los Qurensiv a la humanidad. Entre las creaciones más notables de la compañía, está el \cfHammerspace™\c-, un método de \"almacenamiento extradimensional\" que permite que un individuo viaje ligero, necesitando solo llevar un pequeño dispositivo para almacenar y recuperar cualquier objeto que necesite a voluntad. Muchos comentarios se han hecho sobre los nombres \"frikis\" de los varios productos de la compañía, siendo éste uno de ellos.\n" "\n" -"En referencia al hombre en sí, Reubens es bien conocido no solo por ser un inventor nato, sino también por ser todo un experto en combate cuerpo a cuerpo, siendo diez veces campeón de \cfKo-Ron-Jai\c- (artes marciales Qurensniv), y también un disparador excelente, capaz de alcanzar la cabeza de una cerilla desde un kilómetro de distancia con un simple revolver (aunque esto último no ha sido confirmado). También es un ávido gamer, y se le ha notado comparar muchas veces la vida real y los videojuegos, a veces hasta niveles preocupantes.\n" -"\n" -"Cyrus Enterprises, adicionalmente, es el patrocinador principal del proyecto \cfDemolicionista\c-, proporcionando el equipamiento requerido para sus misiones, y pagando de su propio bolsillo por cada objetivo eliminado por el Demilicionista, entre otras cosas.\n" +"Cyrus Enterprises, adicionalmente, es el patrocinador principal del proyecto \cfDemolicionista\c-, proporcionando el equipamiento requerido para sus misiones, y pagando de su propio bolsillo por cada objetivo eliminado por el Demolicionista, entre otras cosas.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfEs un friki, UN PUTO FRIKI, ¡UN FRIKAZO!\c-\n" +"\cfLa empresa del friki ese. Todo bien y muy friki.\c-\n" "\n" -"\cfHala, ya lo he dicho. Es que sí, vale, lo que hace, mola y tal, pero MADRE DE DIOS es que el tío me saca de quicio con toda su mierda friki de videojuegos. ¿No dejarte ir por ahí con todo equipado, y en vez de eso CISCÁNDOLO TODO POR AHÍ para que lo recojas? Esa es una. Que después de cada misión decida quitarte TODO lo que pillaste, es otra cosa también. Pero, que nos suelte unas pelillas cada vez que revientes a algún maleante, eso puedo aceptarlo, que nos vale para cubrir los costes de todo.\c-\n" +"\cfYa, sé que uso esa palabra mucho, pero solo estoy enunciando lo que es obvio. El tío es un frikazo.\c-\n" "\n" -"\cfA ver, puede que me ponga de los nervios a veces, pero el tío fue mi primer socio ahí en plan negocios serios, y joder, tampoco es tan malo aparte de todo el frikismo que suelta... Y bueno, siendo sincera, yo también soy toda una friki repelente, y puedes citarme en eso.\c-"; +"\cf... Y a ver, yo también lo soy.\c-"; SWWM_LORETXT_CYTHO = " \cxNombre Completo:\c-\n" " \cf Archiduque Cytho de la Casa Valathor\c-\n" @@ -464,26 +701,55 @@ SWWM_LORETXT_CYTHO = " \cxTwitter:\c-\n" " \cf @incuvalathor\c-\n" "\n" -"Nacido en la ahora caída villa de Iskar en 2008 como uno de los varones más jóvenes de la humilde \cfCasa Valathor\c-, \cfCytho\c- entró al negocio familiar al llegar a la edad adulta, rápidamente ascendiendo en rango en la industria del trabajo sexual del \cfInfierno\c-, en parte dada su belleza innata, pero también por la rápida acumulación de \"clientes satisfechos\" a los que daría servicio regularmente, y los muchos alumnos que tomó bajo su tutela. Ya en 2028, había hecho de la Tierra su segundo hogar, donde abriría una cuenta en redes sociales como una forma más moderna de atraer nueva clientela.\n" +"Nacido en la ahora caída villa de Iskar en 2008 como uno de los varones más jóvenes de la humilde \cfCasa Valathor\c-, \cfCytho\c- entró al negocio familiar al llegar a la edad adulta, rápidamente ascendiendo en rango y acumulando un gran \"crédito\" gracias a varios clientes satisfechos y los muchos alumnos que tomó bajo su tutela. Ya en 2028, había hecho de la Tierra su segundo hogar, donde abriría una cuenta en redes sociales como una forma más moderna de atraer nueva clientela.\n" "\n" -"Un día, sin embargo, todo cambió. Un gran número de íncubos reportaría verse \"horrorizados\" por las peticiones excesivas de una mujer. Curioso, Cytho entonces se decidió a encontrarla, para ver que era exactamente lo que sus colegas encontraban tan irrazonable. Y así fue como conoció a \cfElena Yanikov XVI\c-, una mujer Anarukon \"bajo la maldición de una eterna soltería\", la cual tan desesperadamente deseaba encontrar marido que había recurrido finalmente a invocar demonios y suplicarles que se casen con ella. Como era de esperar, todos habían rechazado sus plegarias, sin importar cuanto lo intentara, ya que muchos demonios desconfían de su especie. Cytho, sin embargo, fue compasivo con ella, y aceptó, con una condición: Que tendrían primero una cita.\n" +"Un día, sin embargo, todo cambió. Un gran número de sus colegas reportaría verse \"horrorizados\" por las peticiones excesivas de una mujer. Curioso, Cytho entonces se decidió a encontrarla, para ver que era exactamente lo que encontraban tan irrazonable. Y así fue como conoció a \cfElena Yanikov XVI\c-, una mujer Anarukon \"bajo la maldición de una eterna soltería\", la cual tan desesperadamente deseaba encontrar marido que había recurrido finalmente a invocar demonios y suplicarles que se casen con ella. Como era de esperar, todos habían rechazado sus plegarias, sin importar cuanto lo intentara, ya que muchos demonios desconfían de su especie. Cytho, sin embargo, fue compasivo con ella, y aceptó, con una condición: Que tendrían primero una cita.\n" "\n" -"Un tiempo después, el archiduque anunció su retiro del trabajo sexual, habiéndose \"reformado\" como el fiel marido de una mujer Anarukon. Mientras que sus amigos y familiares lo celebraron, otros vieron esto como una afrenta. La Casa Valathor fue criticada severamente por no renegar inmediatamente de él, hasta el punto que una pequeña guerra estalló, en la que la rival \cfCasa Irishtanar\c- arrasaría su pueblo natal como \"protesta\". Ese día, Cytho vería de cerca la crueldad de su propia gente, como único superviviente de aquella masacre.\n" +"Un tiempo después, el archiduque anunció su retiro del negocio, habiéndose \"reformado\" como el fiel marido de una mujer Anarukon. Mientras que sus amigos y familiares lo celebraron, otros vieron esto como una afrenta. La Casa Valathor fue criticada severamente por no renegar inmediatamente de él, hasta el punto que una pequeña guerra estalló, en la que la rival \cfCasa Irishtanar\c- arrasaría su pueblo natal como \"protesta\". Ese día, Cytho vería de cerca la crueldad de su propia gente, como único superviviente de aquella masacre.\n" "\n" "Desde entonces, vive en Boston con su mujer y sus tres hijas. El propósito de su cuenta en redes sociales ha cambiado al de comunicar las noticias de aquello que transcurre en su mundo natal, contrastadas con los muchos contactos que ha acumulado durante años, como representante de la subyugada población civil. Aunque la gran mayoría de la población de la Tierra no lo tomaría en serio, no hasta que empezara la \cfInvasión Demoníaca\c- de 2148.\n" "\n" -"Denunciando la intervención de la \cfUAC\c-, posteó sobre los eventos en \cfFobos\c- y \cfDeimos\c- mucho antes de que la UAC los hiciese públicos, y proclamó que una invasión en la Tierra era inminente. Aun así pocos lo tomaron en serio, pero una entre ellos era su amiga \cfSaya Miyamoto\c-, de \cfAkari Labs\c-. Como inversor en su compañía, ya había garantizado anteriormente que tuviese los recursos y mano de obra necesarios para la tarea que le encomendaría: Construir un robot de combata que lucharía contra los invasores.\n" +"Denunciando la intervención de la \cfUAC\c-, posteó sobre los eventos en \cfFobos\c- y \cfDeimos\c- mucho antes de que la UAC los hiciese públicos, y proclamó que una invasión en la Tierra era inminente. Aun así pocos lo tomaron en serio, pero una entre ellos era su amiga \cfSaya Miyamoto\c-, de \cfAkari Labs\c-. Como inversor en su compañía, ya había garantizado anteriormente que tuviese los recursos y mano de obra necesarios para la tarea que le encomendaría: Construir un robot de combate que lucharía contra los invasores.\n" "\n" "Y así, a partir de su colaboración, nació la \cfDemolicionista\c-.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfDesde el primer momento que lo conocí, aquella primera vez que visité a la familia de Ellen-san, ya sabía que era más que un guapo y molón abuelete femboy demonio. Sí, Cytho-sama es la caña, y la sangre que corre por sus venas es mucho más noble que la de cualquier capullo pomposo con título que vaya por ahí.\c-\n" +"\cfDesde el primer momento que lo conocí, aquella primera vez que visité a la familia de Ellen-san, ya sabía que era más que un guapo y molón abuelo demonio guapete. Sí, Cytho-sama es la caña, y la sangre que corre por sus venas es mucho más noble que la de cualquier capullo pomposo con título que vaya por ahí.\c-\n" "\n" "\cfY sí, sorpresa sorpresa... Es tu padre (bueno, algo así). Pero eso ya lo sabías, ¿verdad?\c-\n" "\n" -"\cfEn serio, si no fuera por él, todo esto nunca habría sido posible. Estamos en deuda con él... Solo espero que no tenga que pagarle con mi propio cuerpo (aunque tampoco me importaría, jijijiji).\c-\n" +"\cfEn serio, si no fuera por él, todo esto nunca habría sido posible. Estamos en deuda con él... Solo espero que no tenga que pagarle con mi alma o algo.\c-\n" "\n" "\cfPS: Su nombre se pronuncia \"Kaizo\", lo has dicho mal todo el rato. Pero no te preocupes, no eres la primera.\c-"; +SWWM_LORETXT_DANA = +" \cxNombre Completo:\c-\n" +" \cf Dana Arukan Blackwood\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Escocesa-Americana\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1985-02-02\c-\n" +" \cxOcupación:\c-\n" +" \cf Contratista de Defensa Privada\c-\n" +" \cxTwitter:\c-\n" +" \cf @boyhunter85\c-\n" +"\n" +"\n" +"Nacida en \cfMichigan\c-, como hija única de la \cfGeneral de la Marina Escocesa Lena Blackwood\c- y el \cfIngeniero de Ferrocarril Kanethe Menas Blackwood (de soltero Arukan)\c-, \cfDana\c- es una persona bastante peculiar. Familiarizada con la dureza de la condición humana desde una edad temprana, intenta ayudar a cualquiera que lo necesite, mientras se opone muy, muy agresivamente a las autoridades que incumplen su deber en todo momento, especialmente policías.\n" +"\n" +"Uno puede pensar que este sentimiento anti-autoritario podría contradecir su larga carrera como mercenaria a sueldo, a veces bajo el mando de empresas muy específicas, pero tiene la regla personal de nunca servir los intereses de nadie excepto \"la buena gente\", lo cual ha causado quebraderos de cabeza a muchos empleadores en potencia. Uniéndose a protestas, tomando parte en operaciones de rescate tras desastres naturales, ofreciendo ayuda humanitaria en zonas en guerra... Todo esto otorgándola de una reputación que pocos pueden ignorar.\n" +"\n" +"Algo más por lo que se le conoce, sin embargo, es por su predilección por cautivar los corazones de hombres jóvenes. Apodada \"cougar\" (puma) por sus fans, algo que ha aceptado personalmente, no importa circunstancia alguna, alguien tarde o temprano cae en su punto de mira, a veces de forma cómica.\n" +"\n" +"Tras los eventos de la \cfCicatriz Blanca\c-, ganaría más renombre a base de patrullar la zona de exclusión de DC, donde eventualmente se cruzaría con \cfIbuki Miyamoto\c-, el *Oni Rojo\cf. Ésto tuvo como resultado una amistad especial, unidas por ciertos intereses afines. Dana, sin embargo, se quedó en el yermo para asistir con los esfuerzos de reconstrucción, finalmente consiguiendo un puesto como mercenaria de la \c-UAC\cf.\n" +"\n" +"Y así es, que fue una de las primeras en responder al inicio de la \c-Invasión Demoníaca\cf, uniéndose al rápidamente formado cuerpo de resistencia.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfLa onee-san medio-enana. Tiene buen gusto, tanto en hombres como en armas. También me gusta cómo ha mantenido vivos los videos de reseñas de raciones de combate, incluso dando a conocer los de otras civilizaciones.\c-\n" +"\n" +"\cfLa considero una de las pocas personas Estadounidenses que me caen bien. Mola, excepto cuando se pilla una cogorza. Aunque al menos eso da lugar a momentos muy graciosos con Taro-nii, jujuju...\c-\n" +"\n" +"\cfAún le tengo en cuenta lo de que haya trabajado para la dichosa UAC, pero tampoco es que tuviera donde elegir, aparentemente. En fin, al menos ahora su contrato ha \"expirado\", por así decirlo.\c-"; SWWM_LORETXT_DECADEMECH = "\cxNombre:\c-\n" "\cf Decade Mechanics\c-\n" @@ -492,7 +758,7 @@ SWWM_LORETXT_DECADEMECH = "\cxLocalización:\c-\n" "\cf Sunkaeze, borde exterior de Xathar, Coalición X'Animen\c-\n" "\n" -"Las ruinas de una gran instalación enterrada por las arenas del planeta desierto de \cfSunkaeze\c-, en los límites de \cfXathar\c-. Es la única estructura encontrada ahí, y ha sido sujeto de mucha exploración y estudio. Aunque la mayoría de creaciones de su antiguo personal se han perdido, muchos han conseguido encontrar artefactos aun funcionales, completamente intactos, de varios tipos: dispositivos de invisibilidad, teletransporte personal, poderosas armas de energía, y muchos otros. Se desconoce la causa exacta de que este lugar cayera en la ruina, aunque segun algunos, puede que esté conectado con la muerte del único individuo referenciado en la mayoría de los planos y documentos recuperados, el semidiós mecánico \cfMaestre Mekes\c-.\n" +"Las ruinas de una gran instalación enterrada por las arenas del planeta desierto de \cfSunkaeze\c-, en los límites de \cfXathar\c-. Es la única estructura encontrada ahí, y ha sido sujeto de mucha exploración y estudio. Aunque la mayoría de creaciones de su antiguo personal se han perdido, muchos han conseguido encontrar artefactos aun funcionales, completamente intactos, de varios tipos: dispositivos de invisibilidad, teletransporte personal, poderosas armas de energía, y muchos otros. Se desconoce la causa exacta de que este lugar cayera en la ruina, aunque según algunos, puede que esté conectado con la muerte del único individuo nombrado en la mayoría de los planos y documentos recuperados, el semidiós mecánico \cfMaestre Mekes\c-.\n" "\n" "De los muchos productos recuperados con éxito, la \cfCarabina Biospark\c- es uno de los más notables. Fue ideada como el \"arma emblema de \cfDecade Mechanics\c-\", y es descrita como \"una lanza cortante de electricidad capaz de pensamiento profundo\". Nadie ha podido realizar una ingeniería inversa de esta extraña arma. Se estima que hay un total de 30.000 unidades almacenadas en la instalación, y su distribución está actualmente controlada por \cfTecnologías Tach-Engine\c-, siendo su fundador el descubridor principal de este arma, quien ha mostrado un gran interés en estudiarla en más detalle.\n" "\n" @@ -508,7 +774,7 @@ SWWM_LORETXT_DECADEMECH2 = "\cxLocalización:\c-\n" "\cf Sunkaeze, borde exterior de Xathar, Coalición X'Animen\c-\n" "\n" -"Las ruinas de una gran instalación enterrada por las arenas del planeta desierto de \cfSunkaeze\c-, en los límites de \cfXathar\c-. Es la única estructura encontrada ahí, y ha sido sujeto de mucha exploración y estudio. Aunque la mayoría de creaciones de su antiguo personal se han perdido, muchos han conseguido encontrar artefactos aun funcionales, completamente intactos, de varios tipos: dispositivos de invisibilidad, teletransporte personal, poderosas armas de energía, y muchos otros. Se desconoce la causa exacta de que este lugar cayera en la ruina, aunque segun algunos, puede que esté conectado con la muerte del único individuo referenciado en la mayoría de los planos y documentos recuperados, el semidiós mecánico \cfMaestre Mekes\c-.\n" +"Las ruinas de una gran instalación enterrada por las arenas del planeta desierto de \cfSunkaeze\c-, en los límites de \cfXathar\c-. Es la única estructura encontrada ahí, y ha sido sujeto de mucha exploración y estudio. Aunque la mayoría de creaciones de su antiguo personal se han perdido, muchos han conseguido encontrar artefactos aun funcionales, completamente intactos, de varios tipos: dispositivos de invisibilidad, teletransporte personal, poderosas armas de energía, y muchos otros. Se desconoce la causa exacta de que este lugar cayera en la ruina, aunque según algunos, puede que esté conectado con la muerte del único individuo nombrado en la mayoría de los planos y documentos recuperados, el semidiós mecánico \cfMaestre Mekes\c-.\n" "\n" "De los muchos productos recuperados con éxito, la \cfCarabina Biospark\c- es uno de los más notables. Fue ideada como el \"arma emblema de \cfDecade Mechanics\c-\", y es descrita como \"una lanza cortante de electricidad capaz de pensamiento profundo\". Nadie ha podido realizar una ingeniería inversa de esta extraña arma. Se estima que hay un total de 30.000 unidades almacenadas en la instalación, y su distribución está actualmente controlada por \cfTecnologías Tach-Engine\c-, siendo su fundador el descubridor principal de este arma, quien ha mostrado un gran interés en estudiarla en más detalle.\n" "\n" @@ -537,11 +803,11 @@ SWWM_LORETXT_DEEPIMPACT = "\cfRecarga:\c- Para rellenar el depósito interno de aire solo hay que tirar de la palanca lateral. Sabrás que el depósito está lleno cuando un mecanismo interno la bloquee, evitando la sobrecarga del depósito y la posibilidad de que reviente.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfSé que eres tope de fuerte, así que más te vale no darle mucho a la manivela. Espera, eso no suena muy bien... mierda. Olvida lo que acabo de decir. Olvida que lo has leído, también.\c-"; +"\cfSé que eres tope de fuerte, así que más te vale no darle mucho a la manivela. Espera, eso no suena muy bien...\c-"; SWWM_LORETAG_DEMOLITIONIST = "Demolicionista"; SWWM_LORETXT_DEMOLITIONIST = " \cxNombre Completo:\c-\n" -" \cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c-\n" +" \cf Unidad de Combate Autónoma de 1ª Generación de Akari Labs\c-\n" " \cf Demolicionista (nombre en clave)\c-\n" " \cf Demo Miyamoto (primera unidad)\c-\n" " \cxNacionalidad:\c-\n" @@ -559,29 +825,31 @@ SWWM_LORETXT_DEMOLITIONIST = "\n" "El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las \cfMaidbots\c- de Akari Labs, el \cfFramework de IA Nekuronbot\c-, que fue proporcionado a \cfSaya Miyamoto\c- como un regalo de amistad de \cfZanaveth Nekuraku II\c-, la ingeniera jefe de IA y actual CEO de \cfNekuratek\c-. Gracias a esta tecnología, y combinado con muchos otros componentes como el \cfDisplay CuteEmotion\c- que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la \cfCaja de Voz Loudboi\c- que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.\n" "\n" -"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n" +"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 (tras un entrenamiento intensivo por parte de \cfRika Isuzu\c-) en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n" "\n" -"De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de \cfDemo Miyamoto\c-, y Saya se refiere a ella como su \"hija\". Se puede describir a Demo como \"muy habladora\" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo.\n" +"De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, habiendo recibido el nombre completo de \cfDemo Miyamoto\c-. Se puede describir a Demo como \"muy habladora\" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfJeje, sí... el directo estuvo bien. La gente preguntaba tantas cosas, y tus respuestas desde luego fueron sorprendentes, juju...\c-\n" "\n" -"\cfPor cierto, hay algo mas que te hace tan única. Es ese \"collar de la suerte\" que te hice, ya sabes. Ibuki también tiene uno, y desde luego fue de mucha ayuda, así que pensé que sería una buena idea darte uno también. Aunque ojalá la gente no se pusiera tan de \"¿guau le diste esa cosa de BDSM?\". NO ES ESO, no tiene NADA que ver con eso.\c-\n" +"\cfPor cierto, hay algo mas que te hace tan única. Es ese \"collar de la suerte\" que te hice, ya sabes. Ibuki también tiene uno, y desde luego fue de mucha ayuda, así que pensé que sería una buena idea darte uno también. Aunque ojalá la gente no se pusiera tan de \"¿guau le tratas como una mascota?\". Están teniendo una idea equivocada...\c-\n" "\n" "\cfEn fin, si has terminado de leer sobre ti, ¿que tal si vuelves al trabajo? Sí, Demo-chan, sé que estás leyendo esto, justo en este momento. OoOOoOoOoOooo... da miedo, ¿verdad?\c-\n" "\n" "\cfVuelve al trabajo, robotita tontita.\c-"; SWWM_LORETXT_DEMOLITIONIST2 = -"\cxNombre Completo:\c-\n" -"\cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c-\n" -"\cf Demolicionista (nombre en clave)\c-\n" -"\cf Demo Miyamoto (primera unidad)\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2148-01-20\c-\n" -"\cxTwitter:\c-\n" -"\cf @demolitionist_bot\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Unidad de Combate Autónoma de 1ª Generación de Akari Labs\c-\n" +" \cf Demolicionista (nombre en clave)\c-\n" +" \cf Demo Miyamoto (primera unidad)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2148-01-20\c-\n" +" \cxOcupación:\c-\n" +" \cf Héroe Profesional\c-\n" +" \cxTwitter:\c-\n" +" \cf @demolitionist_bot\c-\n" "\n" "El \cfDemolicionista\c- es uno de los mayores logros de \cfAkari Labs\c- en el campo de la robótica. Una unidad de combate manejada por IA capaz de usar eficientemente todo tipo de armamento a su disposición, altamente resistente a todo tipo de daño y capaz de operar en cualquier entorno, incluyendo el vacío del espacio. Puede considerarse el sucesor espiritual del programa de supersoldado \cfOni Rojo\c-, en cierto modo, ya que también sirve el mismo propósito de defender a la Tierra de una fuerza invasora mayor. El proyecto ha sido financiado y patrocinado por los muchos socios de Akari Labs, y es fruto de la colaboración entre \cfSaya Miyamoto\c- y el \cfArchiduque Cytho Valathor\c-, representante de la población civil del \cfInfierno\c-.\n" "\n" @@ -589,21 +857,21 @@ SWWM_LORETXT_DEMOLITIONIST2 = "\n" "El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las \cfMaidbots\c- de Akari Labs, el \cfFramework de IA Nekuronbot\c-, que fue proporcionado a \cfSaya Miyamoto\c- como un regalo de amistad de \cfZanaveth Nekuraku II\c-, la ingeniera jefe de IA y actual CEO de \cfNekuratek\c-. Gracias a esta tecnología, y combinado con muchos otros componentes como el \cfDisplay CuteEmotion\c- que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la \cfCaja de Voz Loudboi\c- que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.\n" "\n" -"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n" +"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 (tras un entrenamiento intensivo por parte de \cfRika Isuzu\c-) en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n" "\n" -"De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de \cfDemo Miyamoto\c-, y Saya se refiere a ella como su \"hija\". Se puede describir a Demo como \"muy habladora\" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo.\n" +"De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, habiendo recibido el nombre completo de \cfDemo Miyamoto\c-. Se puede describir a Demo como \"muy habladora\" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo.\n" "\n" "Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el \"arma definitiva\" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Meido e Ibuki.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfEres tan mona, Demo-chan. Desde luego, mira que me he lucido con ese cuerpo de Maidbot. En serio me pilló por sorpresa cuando, justo al pasarte a él, así de repente... te me echaste encima abrazándome y besándome tanto y... buf~\c-\n" "\n" -"\cfMe alegro tanto de que ahora estés en nuestro pequeño Club Cuqui (\c-\cg♥\c-\cf), sabes. Y ya, no quería tener que ir pasándolo también entre los dos así que sí, te hice otro collar para llevar. Eh, venga, sigo diciendo que no tiene nada que ver con ningún fetiche de BDSM ni nada por el estilo.\c-\n" +"\cfMe alegro tanto de que ahora estés en nuestro pequeño Club Cuqui (\cg♥\cf), sabes.\c-\n" "\n" "\cfEn fin, ya vale de leer sobre ti mientras trabajas. Sal de aquí, tonti.\c-"; SWWM_LORETXT_DEMOLITIONIST3 = " \cxNombre Completo:\c-\n" -" \cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c-\n" +" \cf Unidad de Combate Autónoma de 1ª Generación de Akari Labs\c-\n" " \cf Demolicionista (nombre en clave)\c-\n" " \cf Demo Miyamoto (primera unidad)\c-\n" " \cxNacionalidad:\c-\n" @@ -621,16 +889,16 @@ SWWM_LORETXT_DEMOLITIONIST3 = "\n" "El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las \cfMaidbots\c- de Akari Labs, el \cfFramework de IA Nekuronbot\c-, que fue proporcionado a \cfSaya Miyamoto\c- como un regalo de amistad de \cfZanaveth Nekuraku II\c-, la ingeniera jefe de IA y actual CEO de \cfNekuratek\c-. Gracias a esta tecnología, y combinado con muchos otros componentes como el \cfDisplay CuteEmotion\c- que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la \cfCaja de Voz Loudboi\c- que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades.\n" "\n" -"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n" +"La primera unidad, conocida afectivamente como \cfDemo-chan\c- por Saya, fue desplegada en Junio de 2148 (tras un entrenamiento intensivo por parte de \cfRika Isuzu\c-) en el territorio de la \cfUnión de Estados\c- para combatir la invasión demoníaca atraída por las intervenciones de la \cfUAC\c- en el Infierno.\n" "\n" -"De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de \cfDemo Miyamoto\c-, y Saya se refiere a ella como su \"hija\". Se puede describir a Demo como \"muy habladora\" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo.\n" +"De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, habiendo recibido el nombre completo de \cfDemo Miyamoto\c-. Se puede describir a Demo como \"muy habladora\" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo.\n" "\n" "Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el \"arma definitiva\" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Meido e Ibuki. Desde Mayo de 2171, está adicionalmente casada con \cfKirin Xanai\c-, líder del \cfImperio Sykhai de Akkou\c-.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfEres tan mona, Demo-chan. Desde luego, mira que me he lucido con ese cuerpo de Maidbot. En serio me pilló por sorpresa cuando, justo al pasarte a él, así de repente... te me echaste encima abrazándome y besándome tanto y... buf~\c-\n" "\n" -"\cfMe alegro tanto de que ahora estés en nuestro pequeño Club Cuqui (\c-\cg♥\c-\cf), sabes. Y ya, no quería tener que ir pasándolo también entre los dos así que sí, te hice otro collar para llevar. Eh, venga, sigo diciendo que no tiene nada que ver con ningún fetiche de BDSM ni nada por el estilo.\c-\n" +"\cfMe alegro tanto de que ahora estés en nuestro pequeño Club Cuqui (\cg♥\cf), sabes.\c-\n" "\n" "\cfEn fin, ya vale de leer sobre ti mientras trabajas. Sal de aquí, tonti.\c-"; SWWM_LORETAG_DEMONINVASION = "Invasión Demoníaca"; @@ -762,7 +1030,7 @@ SWWM_LORETXT_DEVANIKNA = "Uno de los rasgos poco conocidos de los Devanikan es su fuerte defensa de la pureza racial. Cuando la princesa \cfDevai Unissix\c-, actual jefa del clan, anunció su enlace con \cfSerwand Nerukousei\c-, una quimera construida por un mago errante, su marido comenzó a recibir amenazas de la población, llamándolo \"bestia con forma de hombre\" y acusándolo de corromper el linaje Unissix con el propósito de tomar el control de la nación. Estas amenazas se extendieron también a sus hijos, los cuales fueron denotados como \"abominaciones cruzadas\" de sangre Devanikan y quimérica. No fue hasta los primeros grandes logros como guerrera de Deneva que la persecución que sufrieron terminó. Desde entonces, la hostilidad a la que se enfrentaban ha disminuido gradualmente, a medida que nuevas generaciones fueron aceptando la mezcla de razas.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfSí, la gente de Misa mola mucho. Bueno, menos por lo del racismo. Eso sí que es una mierda muy grande, desde luego. Oí de Zana-sama que si no hubiera conocido a Misa entonces, probablemente se habría quitado la vida por todo lo que estaba pasando. Joder... Pero al menos, ahora vive feliz con Zana-sama (suertuda), y sí, las cosas van mejorando comparadas con como eran antes.\c-\n" +"\cfSí, la gente de Misa mola mucho. Bueno, menos por lo del racismo. Eso sí que es una mierda muy grande, desde luego. Oí de Zana-sama que si no hubiera conocido a Misa entonces... Joder... Pero al menos, ahora vive feliz con Zana-sama (suertuda), y sí, las cosas van mejorando comparadas con como eran antes.\c-\n" "\n" "\cfSabes, todo este tema, me recuerda a una vieja serie de JRPGs a la que jugaba hace un porrón de años, que iba también de gente con sangre de dragón... pero ya ni me acuerdo de como se llamaba. Coño, si hasta puse a Misa a jugarlos y no paraba de hablar de todas las similitudes y cosas así. Oh bueno, guerreros molones de dragones, fuck yeah.\c-"; SWWM_LORETXT_DISPLAY = @@ -775,7 +1043,7 @@ SWWM_LORETXT_DISPLAY = "\n" "El \cfCuteEmotion\c- es un dispositivo de pantalla diseñado para el uso en robots. Se puede emplear para mostrar una amplia variedad de expresiones faciales, seleccionadas de una librería de imágenes configurada por el usuario, cada una asociada a una emoción o sentimiento en particular que la IA quiera poder mostrar, mejorando así la naturalidad de sus interacciones sociales. La pantalla es unidireccional, permitiendo ser alineada con los receptores visuales del robot para mayor precisión de cualquier movimiento de ojos simulado.\n" "\n" -"Hay varias versiones del dispositivo, pero la más conocida es el modelo \"Monoglow\", popularizado gracias a su uso por el \cfDemolicionista\c-.\n" +"Hay varias versiones del dispositivo, pero la más conocida es el modelo \"Monoglow\", popularizado gracias a su uso por el \cfDemolicionista\c-. Existen otros modelos más flexibles y configurables por el usuario, los cuales son conocidamente famosos en ciertos rincones de la comunidad furry.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfSabes, esa cosa te hace tan mona y abrazable... Es que, a ver... ¡¡¡ES MONÍSIMA!!!\c-\n" @@ -799,21 +1067,21 @@ SWWM_LORETXT_DIVINESPRITE = "\n" "\cfComo puedes esperar, esto es algo más que mis colegas dioses han recomendado. Normalmente se le dan a los héroes por petición especial... Y tu eres nuestra heroína, Demo-chan, así que esto es para ti.\c-\n" "\n" -"\cfPS: No intentes comértelo.\c-"; +"\cfPS: No intentes comértelo. Así NO es como se siente comer chicles five.\c-"; SWWM_LORETAG_DOOMGUY = "Marine de Doom"; SWWM_LORETXT_DOOMGUY = -"\cxNombre Completo:\c-\n" -"\cf CLASIFICADO\c-\n" -"\cxOtros Nombres:\c-\n" -"\cf Marine de Doom\c-\n" -"\cf El Marine Solitario\c-\n" -"\cf Doomguy\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Americano\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf CLASIFICADO\c-\n" -"\cxOcupación:\c-\n" -"\cf Marine (UAC)\c-\n" +" \cxNombre Completo:\c-\n" +" \cf [CLASIFICADO]\c-\n" +" \cxOtros Nombres:\c-\n" +" \cf Marine de Doom\c-\n" +" \cf El Marine Solitario\c-\n" +" \cf Doomguy\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Americano\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf [CLASIFICADO]\c-\n" +" \cxOcupación:\c-\n" +" \cf Marine (UAC)\c-\n" "\n" "El \cfMarine de Doom\c- es el único superviviente de las invasiones demoníacas en las bases de la \cfUAC\c- en Fobos y Deimos. Habiendo sido transferido a \cfMars City\c- no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo \cfInfierno\c- y haber vuelto, fue nombrado \"solucionador de problemas\" de la organización.\n" "\n" @@ -822,22 +1090,22 @@ SWWM_LORETXT_DOOMGUY = "\cxNotas de Saya:\c-\n" "\cfBien, COSA IMPORTANTE: no te acerques a este tío, no le digas nada, no te metas en medio. Si os cruzáis, quédate quieta y deja que trabaje, o si no puede que vaya y te pegue un tiro a ti también.\c-\n" "\n" -"\cfPor cierto, mi enhorabuena a los gorilas de la UAC por lo bien guardado que tienen todo sobre este tío. No sabemos ni como se llama, ni de su historial antes de que empezara toda esta mierda. Es que, ¿que clase de tío es? Tampoco he oído mucho de eso, aparte de la poca info que Cytho-sama pudo sacar de su anterior paseo por el Infierno, aunque ¿creo que mencionaron por ahí que le gustan los conejos? ¿conejillos monos?\c-\n" +"\cfPor cierto, mi enhorabuena a los gorilas de la UAC por lo bien guardado que tienen todo sobre este tío. No sabemos ni como se llama, ni de su historial antes de que empezara toda esta mierda. Pues sí, no he oído mucho de la clase de tío que es, aparte de la poca info que Cytho-sama pudo sacar de su anterior paseo por el Infierno, aunque ¿creo que mencionaron por ahí que le gustan los conejos? ¿conejillos monos?\c-\n" "\n" "\cfBueno, entonces, a lo mejor si haces como que esa cornamenta tuya son orejitas de conejo, puede que no te dispare, quien sabe...\c-"; SWWM_LORETXT_DOOMGUY2 = -"\cxNombre Completo:\c-\n" -"\cf CLASIFICADO\c-\n" -"\cxOtros Nombres:\c-\n" -"\cf Marine de Doom\c-\n" -"\cf El Marine Solitario\c-\n" -"\cf Doomguy\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Americano\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf CLASIFICADO\c-\n" -"\cxOcupación:\c-\n" -"\cf N/A\c-\n" +" \cxNombre Completo:\c-\n" +" \cf John Blazkowicz\c-\n" +" \cxOtros Nombres:\c-\n" +" \cf Marine de Doom\c-\n" +" \cf El Marine Solitario\c-\n" +" \cf Doomguy\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Americano\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2132-03-20\c-\n" +" \cxOcupación:\c-\n" +" \cf N/A\c-\n" "\n" "El \cfMarine de Doom\c- es el único superviviente de las invasiones demoníacas en las bases de la \cfUAC\c- en Fobos y Deimos. Habiendo sido transferido a \cfMars City\c- no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo \cfInfierno\c- y haber vuelto, fue nombrado \"solucionador de problemas\" de la organización.\n" "\n" @@ -848,20 +1116,22 @@ SWWM_LORETXT_DOOMGUY2 = "\cxNotas de Saya:\c-\n" "\cfEl tío básicamente se ha jubilado, y vaya si es un descanso bien merecido. Se ha metido en más mierda que tú, siendo el superviviente de todo lo de Marte y luego ir de mandado por ahí para \"salvar la situación\". Por lo que he oído, palabras propias de Cytho-sama, tuvo que lidiar con otros dos titanes que el ejército demoníaco tenía en reserva. Ambos básicamente al mismo nivel que el viejo Baramun.\c-\n" "\n" -"\cfLo que más me ha sorprendido es enterarme de lo que dijo en una entrevista. Que no se ha tomado mal lo de que le chafaras el trabajo, hasta parece que es fan de lo que has hecho, soltando que eres \"cojonuda desgarrando carne de demonio\". Mola.\c-"; +"\cfLo que más me ha sorprendido es enterarme de lo que dijo en una entrevista. Que no se ha tomado mal lo de que le chafaras el trabajo, hasta parece que es fan de lo que has hecho, soltando que eres \"cojonuda desgarrando carne de demonio\". Mola.\c-\n" +"\n" +"\cfDato curioso, resulta que tenemos el mismo cumpleaños.\c-"; SWWM_LORETXT_DOOMGUY3 = -"\cxNombre Completo:\c-\n" -"\cf CLASIFICADO\c-\n" -"\cxOtros Nombres:\c-\n" -"\cf Marine de Doom\c-\n" -"\cf El Marine Solitario\c-\n" -"\cf Doomguy\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Americano\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf CLASIFICADO\c-\n" -"\cxOcupación:\c-\n" -"\cf N/A\c-\n" +" \cxNombre Completo:\c-\n" +" \cf John Blazkowicz\c-\n" +" \cxOtros Nombres:\c-\n" +" \cf Marine de Doom\c-\n" +" \cf El Marine Solitario\c-\n" +" \cf Doomguy\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Americano\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2132-03-20\c-\n" +" \cxOcupación:\c-\n" +" \cf N/A\c-\n" "\n" "El \cfMarine de Doom\c- es el único superviviente de las invasiones demoníacas en las bases de la \cfUAC\c- en Fobos y Deimos. Habiendo sido transferido a \cfMars City\c- no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo \cfInfierno\c- y haber vuelto, fue nombrado \"solucionador de problemas\" de la organización.\n" "\n" @@ -906,18 +1176,16 @@ SWWM_LORETXT_ELLEN = "\n" "Desde una edad temprana mostró cierto interés en \"explorar\" cada rincón de la ciudad, comenzando primero con edificios abandonados cerca de su casa, expandiendo luego su alcance hasta cualquier punto de interés que pudiera encontrar en toda la ciudad. Comenzó a grabar sus exploraciones urbanas mientras estudiaba primaria, y las subió a páginas para compartir video, ganando mucha popularidad.\n" "\n" -"Tras los eventos de la \cfCicatriz Blanca\c-, Ellen puso a prueba las habilidades ganadas en la exploración para trabajar como recolectora junto a su madre, buscando recursos de valor en el yermo para traer de vuelta a los varios refugios de la zona. Fue así como finalmente conoció a \cfIbuki Miyamoto\c-, el \cfOni Rojo\c-, quien había vagado el yermo durante años, convirtiéndose en una especie de \"guerrera legendaria\" dadas sus varias hazañas. En el proceso de traer a Ibuki de vuelta a Japón por parte de \cfTaro Miyamoto\c-, de \cfAkari Labs\c-, Ellen decidió que quería ir con ellos, citando que \"andar por este vertedero es un rollo y me gustaría mucho ver el mundo de fuera\".\n" -"\n" -"Durante su estancia en Japón, solía pasar el tiempo con Taro, y los dos acabaron saliendo semanas después. Algo que fue seguido de un anuncio de Taro en redes citando: \"mis privilegios de mago han sido anulados\".\n" +"Tras los eventos de la \cfCicatriz Blanca\c-, Ellen puso a prueba las habilidades ganadas en la exploración para trabajar como recolectora junto a su madre, buscando recursos de valor en el yermo para traer de vuelta a los varios refugios de la zona. Fue así como finalmente conoció a \cfIbuki Miyamoto\c-, el \cfOni Rojo\c-, quien había vagado el yermo durante años, convirtiéndose en una especie de \"guerrera legendaria\" dadas sus varias hazañas. En el proceso de traer a Ibuki de vuelta a Japón por parte de \cfTaro Miyamoto\c-, de \cfAkari Labs\c-, Ellen decidió que quería ir con ellos, citando que \"andar por este vertedero es un rollo y me gustaría mucho ver el mundo de fuera\". Durante su estancia en Japón, solía pasar el tiempo con Taro, y los dos acabaron saliendo semanas después.\n" "\n" "Aparte de su ascendencia compartida con la conocida cantante/guitarrista \cfAshley Knox\c-, también comparte una relación mucho más cercana con ella, dado el hecho de que su padre es el nieto del exmarido de Ashley, el difunto \cfFredrik Steiner\c-. A partir de esto, y el hecho de que ambas están casadas con miembros de la familia Miyamoto, se han hecho grandes amigas. Ellen ha incluso considerado unirse a la banda algún día, aunque desde haberse escrito este artículo, todavía no ha ocurrido.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfJa, típico de Taro nii-san, anunciar a todo dios que acaba de perder su puta virginidad. Si es que no podía ser más sutil ni aunque lo intentara. Pues eso, entre él y Yu-chan, los dos se han pillado unas monadas inmortales, haciendo que me ponga jodidamente celosa en el proceso. Es que, en serio, ¿como coño puede ALGUIEN querer salir con el perdedor de mi hermano? No se que le ve Ellen-san...\c-\n" +"\cfPues eso, entre Taro-nii y Yu-chan, los dos se han pillado unas monadas inmortales, haciendo que me ponga jodidamente celosa en el proceso. Es que, en serio, ¿como coño puede ALGUIEN querer salir con el perdedor de mi hermano? No se que le ve Ellen-san...\c-\n" "\n" "\cfOh ya, hablando de Ellen-san. Es una puta bromista de cuidado, es que vamos, una súper troll de la vida. Mira, una vez... bueno, mejor creo que me lo voy a callar, porque es que me da muchísima vergüenza. Aún me duele el culo desde entonces. Que va, NO pienso explicarlo, coño si no. Usa tu imaginación, Demo-chan.\c-\n" "\n" -"\cfAh, y también, cosa tope de buena de tenerla por aquí. Tiene unos contactos muy interesantes. Sí, la mayoría de la gente no lo sabe, pero su abuelo es un demonio. Sí, uno de verdad, del Infierno y todo. Y es una monada, también. Se llama Cytho Valathor, y dice que es un \"íncubo reformado\", lo que sea que signifique eso. Siempre que necesite saber algo sobre lo que pasa en la tierra de fuego eterno, es el tío al que acudo.\c-"; +"\cfAh, y también, cosa tope de buena de tenerla por aquí. Tiene unos contactos muy interesantes. Sí, me refiero por supuesto a su abuelo demonio. Cierta monada que seguramente conocerás, de nombre Cytho Valathor. Por supuesto, siempre que necesite saber algo sobre lo que pasa en la tierra de fuego eterno, no hay mejor fuente de información que el abuelete de Ellen-san.\c-"; SWWM_LORETXT_ENGINETECH = "\cxNombre:\c-\n" "\cf Instituto Tecnológico Tach-Engine\c-\n" @@ -942,7 +1210,7 @@ SWWM_LORETXT_ENGINETECH = "\cfEn fin, ¿lo que soltó en la entrevista? Coño, si me lo creo. Tal y como está todo, me creería cualquier cosa. Hay alienígenas por todas partes, los dioses existen, múltiples universos, ángeles, demonios, todas esas mierdas, TODO es posible.\c-"; SWWM_LORETXT_EVISCERATOR = "\cxDesignación:\c-\n" -"\cf Cañón de Flechettes de Carga Pesada \"Eviscerator\"\c-\n" +"\cf Cañón de Metralla de Carga Pesada \"Eviscerator\"\c-\n" "\cxFabricante:\c-\n" "\cf Cyrus Enterprises\c-\n" "\cf Diseño de Don BIG SHOT\c-\n" @@ -1033,7 +1301,7 @@ SWWM_LORETXT_FORX = "\cxPágina Web:\c-\n" "\cf https://forx.ie\c-\n" "\n" -"Fundada en 2029 por \cfHarold Forx\c-, esta compañía es considerada como la única salvadora de Irlanda del Sur (anteriormente conocido como el Reino Unido) tras su larga caída en la ruina tras el \cfBrexit\c- en 2020, la \cfIndependencia de Escocia\c- en 2022 y la \cfReconquista Irlandesa\c- de 2026 (la cual ocurrió como respuesta a la declaración de guerra sobre la isla el año anterior). A pesar de estos golpes mortales, \cfAeronáutica Forx\c-, habiendo aparecido casi de la nada, fundada por un hombre que, hace solo pocos años pasaba su vida rebuscando en desguaces, consiguió atraer tanto dinero como para rescatar el territorio entero solo pocos meses después de ser fundada.\n" +"Fundada en 2029 por \cfHarold Forx\c-, esta compañía es considerada como la única salvadora de Inglaterra tras su larga caída en la ruina tras el \cfBrexit\c- en 2020, la \cfIndependencia de Escocia\c- en 2022 y la \cfReconquista Irlandesa\c- de 2026 (la cual ocurrió como respuesta a la declaración de guerra del antiguo \cfReino Unido\c- sobre la isla el año anterior). A pesar de estos golpes mortales, \cfAeronáutica Forx\c-, habiendo aparecido casi de la nada, fundada por un hombre que, hace solo pocos años pasaba su vida rebuscando en desguaces, consiguió atraer tanto dinero como para rescatar el territorio entero solo pocos meses después de ser fundada.\n" "\n" "Forx es actualmente el proveedor Nº1 de motores de propulsión para todo tipo de aeronaves, incluyendo jets comerciales e incluso naves espaciales. Su dominio se extiende por todo el lado este del Atlántico, ya que al otro lado, en América, la \cfUAC\c- aun reina soberana, con sus propias tecnologías.\n" "\n" @@ -1046,9 +1314,9 @@ SWWM_LORETXT_FORX = "\n" "\cfA ver, la cosa va así, el tío primero intenta decirles que se larguen de ahí y le dejen tirar abajo todo para construir mierdas por ahí. Ni puto caso. Entonces, va ahí en persona, y ESA es la mejor parte. Después de discutir con el director del orfanato, que conoce al tío personalmente, va y le METE UNA HOSTIA TREMENDA que el tío pega la media vuelta y corre fuera llorando.\c-\n" "\n" -"\cfNo es coña, Demo-chan, te juro que eso es lo que vi. He visto los vídeos de archivo cien veces, porque me ayudan a sentirme mejor cuando ando de mala hostia, y... siempre, la parte en la que el viejales le mete un hostiazo del revés al tío, nunca falla. Es que me desorino. Es BUENÍSIMO.\c-\n" +"\cfNo es coña, Demo-chan, te juro que eso es lo que vi. He visto los vídeos de archivo cien veces, porque me ayudan a sentirme mejor cuando ando de mala hostia, y... siempre, la parte en la que el viejales le mete un hostiazo del revés al tío y lo echa a la puta calle, nunca falla. Es que me desorino. Es BUENÍSIMO.\c-\n" "\n" -"\cfEn serio, eso es lo que se merece esta gente. No sabes cuantas veces he deseado poder ir ahí y darle una buena paliza al niñato bastardo ese de Kelliher. Desde luego me haría sentir mejor, sí. Que se joda, él y la UAC también. El meme ese de \"comer a los ricos\" sigue siendo relevante, pero yo digo que hay que poner de moda otra cosa, que lo que realmente necesitan es una buena somanta de hostias.\c-"; +"\cfEn serio, eso es lo que se merece esta gente. No sabes cuantas veces he deseado poder ir ahí y defenestrar al niñato bastardo ese de Kelliher. Desde luego me haría sentir mejor, sí. Que se joda, él y la UAC también. El meme ese de \"comer a los ricos\" sigue siendo relevante, pero yo digo que hay que poner de moda otra cosa, que lo que realmente necesitan es un buen viaje.\c-"; SWWM_LORETAG_FRISPYCORN = "Snack Maíz Frispy"; SWWM_LORETXT_FRISPYCORN = "\cxDesignación:\c-\n" @@ -1080,11 +1348,11 @@ SWWM_LORETXT_FROGGYCHAIR = "\n" "\cfEsos DOS ciertamente andan detrás de esto. No sé como lo has hecho, dijeron que solo necesitabas \"deletrear las palabras\" para invocarla, pero... eso, ahí la tienes. Es literalmente lo que es, y odio el hecho de que sepan lo que es esto y lo mucho que fue un MEME MASIVO en mis tiempos.\c-\n" "\n" -"\cfBueno, por lo que sé, esta cosa es indestructible y pesa más de lo que parece, así que probablemente puedas partír cráneos con ella. Y encima hace ruiditos, vaya que sí. Eso definitivamente no se va a volver nada molesto despues de un rato.\c-\n" +"\cfBueno, por lo que sé, esta cosa es indestructible y pesa más de lo que parece, así que probablemente puedas partir cráneos con ella. Y encima hace ruiditos, vaya que sí. Eso definitivamente no se va a volver nada molesto después de un rato.\c-\n" "\n" "\cfEn fin, tengo que hacer esto, tengo que decirlo o no me dejarán en paz:\c-\n" "\n" -"\cfBienvenida a la \cfFroggy Gang\c-, Demo-chan.\c-"; +"\cfBienvenida a la \cdFroggy Gang\cf, Demo-chan.\c-"; SWWM_LORETXT_GCSANDWICH = "\cxDesignación:\c-\n" "\cf Sandwich de Queso a la Plancha\c-\n" @@ -1099,7 +1367,7 @@ SWWM_LORETXT_GCSANDWICH = "\n" "Que no te engañe su simple apariencia, este artefacto comestible está imbuido del poder del mismísimo \cfNukritas 1xx\c-, y no solo provee a su consumidor de los beneficios anteriormente mencionados, sino también permite ser comido por aquellos cuyas características físicas no lo permitan, por mera fuerza de voluntad.\n" "\n" -"Incluso si no se come directamente, el sándwich todavía puede demostrar su utilidad en otros momentos. Mientras permanezca en tu posesión, podrá incluso dispersar su energía en el momento exacto de tu eventual fallecimiento, cancelándolo por completo. Realmente no te puede faltar este maravilleante artefacto.\n" +"Incluso si no se come directamente, el sándwich todavía puede demostrar su utilidad en otros momentos. Mientras permanezca en tu posesión, podrá incluso dispersar su energía en el momento exacto de tu eventual fallecimiento, cancelándolo por completo. Realmente no te puede faltar este maravillante artefacto.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfSí, los tipos estos escriben las entradas de sus cosas, fácil de notar, lo sé. Es que ya no entiendo, todo lo que tenga que ver con estos dos me fríe los sesos a conciencia, intentando comprender que pasa. Como cuando la primera vez que probamos la cosa esta, ¿recuerdas?\c-\n" @@ -1118,7 +1386,7 @@ SWWM_LORETXT_GENERICCUBE = "\n" "El \cfCubo Perfectamente Genérico\c- es un raro objeto que es perfectamente cúbico en forma y exactamente 128mm en cada arista. Se pueden encontrar a veces en los lugares más inesperados, y son bien conocidos como un popular objeto de coleccionista entre viajeros espaciales. Algunos sospechan que estos objetos puedan ser inimaginablemente antiguos, y posiblemente dejados atrás por una raza ancestral, mucho más antigua incluso que los tan venerados \cfMishe\c-, maestros de conocimiento arcano con incontables eones de historia.\n" "\n" -"Esa era la teoría, al menos, hasta que los dos Mishe fundadores de la \cfUniversidad de Nos-Kora\c- fueron cuestionados acerca de cualquier información sobre los artefactos. Como fue relatado, estos son de orígen divino, aunque el conocimiento de su verdadero propósito ha sido perdido. Sin embargo, pueden funcionar perfectamente como \"bonitos pisapapeles\".\n" +"Esa era la teoría, al menos, hasta que los dos Mishe fundadores de la \cfUniversidad de Nos-Kora\c- fueron cuestionados acerca de cualquier información sobre los artefactos. Como fue relatado, estos son de origen divino, aunque el conocimiento de su verdadero propósito ha sido perdido. Sin embargo, pueden funcionar perfectamente como \"bonitos pisapapeles\".\n" "\n" "\cxNotas de Saya:\c-\n" "\cfOh, los cosos esos. Son puto rarísimo, anda que sí. Recuerdo que una de las novias de Ibuki tiene uno, la cazarrecompensas esa, Erika, sí. A veces se pone a jugar con él cuando voy de visita.\c-\n" @@ -1134,7 +1402,7 @@ SWWM_LORETXT_GENERICCUBE2 = "\n" "El \cfCubo Perfectamente Genérico\c- es un raro objeto que es perfectamente cúbico en forma y exactamente 128mm en cada arista. Se pueden encontrar a veces en los lugares más inesperados, y son bien conocidos como un popular objeto de coleccionista entre viajeros espaciales. Algunos sospechan que estos objetos puedan ser inimaginablemente antiguos, y posiblemente dejados atrás por una raza ancestral, mucho más antigua incluso que los tan venerados \cfMishe\c-, maestros de conocimiento arcano con incontables eones de historia.\n" "\n" -"Esa era la teoría, al menos, hasta que los dos Mishe fundadores de la \cfUniversidad de Nos-Kora\c- fueron cuestionados acerca de cualquier información sobre los artefactos. Como fue relatado, estos son de orígen divino, aunque el conocimiento de su verdadero propósito ha sido perdido. Sin embargo, pueden funcionar perfectamente como \"bonitos pisapapeles\".\n" +"Esa era la teoría, al menos, hasta que los dos Mishe fundadores de la \cfUniversidad de Nos-Kora\c- fueron cuestionados acerca de cualquier información sobre los artefactos. Como fue relatado, estos son de origen divino, aunque el conocimiento de su verdadero propósito ha sido perdido. Sin embargo, pueden funcionar perfectamente como \"bonitos pisapapeles\".\n" "\n" "\cxNotas de Saya:\c-\n" "\cfOh, los cosos esos. Son puto rarísimo, anda que sí. Recuerdo que una de las novias de Ibuki tiene uno, la cazarrecompensas esa, Erika, sí. A veces se pone a jugar con él cuando voy de visita.\c-\n" @@ -1159,7 +1427,7 @@ SWWM_LORETXT_GENSOKYO = "Se ha intentado muchas veces establecer comunicaciones con ellos tras investigaciones iniciales, sin éxito hasta la fecha, aunque hay una excepción: La \cffamilia Miyamoto\c-, quienes inicialmente vinieron de este lugar, y luego emigraron al exterior. Tal y como cuenta \cfSaya Miyamoto\c- en redes sociales, la familia suele viajar a través de la barrera, para visitar a su pariente lejana, la \cfprincesa Kaguya Houraisan\c-. Tras esta revelación, muchos han intentado acercarse a los miembros de la familia Miyamoto para pedir más información, pero han rechazado hablar del tema.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfTío, mira que se interesa la peña por ese sitio, ¿verdad? Pero joder es que no entienden, que las cosas tienen que ser así. Esas son las reglas, o mierdas así. No se pueden mezclar los dos mundos y tal, es lo que dice la vieja esa. Sí, esa que se comporta como si tuviera diecisiete y anda por ahí con unas cosplayers. Creo que debe de ser pariente de Ashley-san, tienen los mismos ojos. Pero una mierda voy a ir a preguntarle, la tía me da mal rollo.\c-"; +"\cfTío, mira que se interesa la peña por ese sitio, ¿verdad? Pero joder es que no entienden, que las cosas tienen que ser así. Esas son las reglas, o mierdas así. No se pueden mezclar los dos mundos y tal, es lo que dice la vieja esa. Sí, esa que se comporta como si tuviera diecisiete y anda por ahí con unas cosplayers. Creo que debe de ser pariente de Ashley-san, tienen los mismos ojos. Pero una mierda voy a ir a preguntarle, la tía me cae mal.\c-"; SWWM_LORETAG_GHOSTARTIFACT = "Artef. Fantasma"; SWWM_LORETXT_GHOSTARTIFACT = "\cxDesignación:\c-\n" @@ -1287,7 +1555,7 @@ SWWM_LORETXT_HAMMERSPACE = "\cxClasificación:\c-\n" "\cf Dispositivo de Almacenamiento Extradimensional\c-\n" "\n" -"Una de las creaciones más ingeniosas de \cfCyrus Enterprises\c-, el contenedor de \cfHammerspace™\c- es un pequeño dispositivo que cabe en un bolsillo y permite al individuo tener acceso a su propio espacio extradimensional de almacenamiento, con la habilidad de almacenar y recuperar cualquier objeto de él a voluntad, al instante. Ha sido comparado frecuentemente con la \cfBolsa de Contención\c-, conocida por todo entusiasta de los juegos de rol, e incluso el fundador de la compañía ha confirmado que ciertamente esa fue la inspiración principal de este dispositivo. Lo ve como una forma de \"por fin traer las mecánicas de inventario de los videojuegos a la vida real\".\n" +"Una de las creaciones más ingeniosas de \cfCyrus Enterprises\c-, el contenedor de \cfHammerspace™\c- es un pequeño dispositivo que cabe en un bolsillo y permite al individuo tener acceso a su propio espacio extra-dimensional de almacenamiento, con la habilidad de almacenar y recuperar cualquier objeto de él a voluntad, al instante. Ha sido comparado frecuentemente con la \cfBolsa de Contención\c-, conocida por todo entusiasta de los juegos de rol, e incluso el fundador de la compañía ha confirmado que ciertamente esa fue la inspiración principal de este dispositivo. Lo ve como una forma de \"por fin traer las mecánicas de inventario de los videojuegos a la vida real\".\n" "\n" "Es de notar que la contención en Hammerspace™ no se puede usar para criaturas vivas. No hay una razón clara del porqué, aparte de \"anulará la garantía\".\n" "\n" @@ -1346,11 +1614,21 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN = "\n" "Aunque generalmente ideada para el uso montado, la operación al paso es posible, siempre y cuando el usuario tenga una servoarmadura de grado plata como mínimo para manejar el potente retroceso.\n" "\n" -"\cfFuego Primario:\c- Operación a 700 RPM. El fuego prolongado en este modo es en teoría infinito, ya que el calor producido puede ser anulado eficientemente por los sistemas de refrigeración internos, es entonces el modo recomendado para la mayoría de situaciones.\n" +"El arma está preparada para tres velocidades:\n" "\n" -"\cfFuego Secundario:\c- Operación a 1050 RPM. Mayor velocidad, con calentamiento moderado. Aun es posible el fuego continuado en este modo, durante al menos un minuto aproximadamente desde un inicio en frío. Si necesitas repartir más dolor y tienes munición de sobra, usa esto.\n" +"\cf300 RPM:\c- Velocidad lenta. El fuego prolongado en este modo es en teoría infinito, ya que el calor producido puede ser anulado eficientemente por los sistemas de refrigeración internos, es entonces el modo recomendado para la mayoría de situaciones.\n" "\n" -"\cfFuego Terciario:\c- Operación a 2100 RPM. Extremadamente rápido, con el mayor potencial de calor. El fuego prolongado en este modo puede activar rápidamente el bloqueo de seguridad del arma si el aumento de temperatura se acerca a niveles no operacionales. Si tienes prisa por matar y no te importa quedarte sin munición en pocos segundos, entonces elige esto.\n" +"\cf700 RPM:\c- Mayor velocidad, con calentamiento moderado. El fuego prolongado sigue siendo posible dentro de la temperatura recomendada, aunque esto afectará a la puntería. Si necesitas repartir más dolor y tienes munición de sobra, usa esto.\n" +"\n" +"\cf2100 RPM:\c- Extremadamente rápido, con el mayor potencial de calor. El fuego prolongado en este modo puede activar rápidamente el bloqueo de seguridad del arma si el aumento de temperatura se acerca a niveles no operacionales. Si tienes prisa por matar y no te importa quedarte sin munición en pocos segundos, entonces elige esto.\n" +"\n" +"La velocidad más segura viene seleccionada por defecto. Otras velocidades pueden seleccionarse al empujar o tirar del mango de disparo (ten en cuenta que el mango queda bloqueado mientras se dispara, así que no se puede cambiar la velocidad sobre la marcha).\n" +"\n" +"\cfFuego Primario:\c- Dispara con la velocidad seleccionada. El mecanismo del arma arranca y se detiene en seco, así que comenzará a disparar en cuanto se aprieta el gatillo, y parará inmediatamente después de soltarlo.\n" +"\n" +"\cfFuego Secundario:\c- Empuja el mango para incrementar la velocidad.\n" +"\n" +"\cfFuego Terciario:\c- Tira del mango para reducir la velocidad.\n" "\n" "\cfRecarga:\c- No se necesita absolutamente recargar el arma, ya que se alimenta directamente desde Hammerspace, requiriendo solo un gran suministro de munición. Los contenedores de Hammerspace automáticamente conectarán todas las rondas necesarias para la alimentación enlazada.\n" "\n" @@ -1361,7 +1639,7 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN = "\n" "\cfPor cierto sé lo que estarás pensando y no, no son balas trazadoras. Tal como me lo han explicado, resulta que van tan rápido que literalmente se encienden con la fricción del aire. Bastante hardcore, ¿a que sí? Apuesto a que la UAC no superará nunca esta mierda.\c-\n" "\n" -"\cfDios solo verla en acción es suficiente para ponerme a tope. Joder, más que eso. La Ametralladora Sheen es tal festival delicioso de dakka que el mero sonido de dispararla hace que desate a Leviatán en mis bragas, y puedes citarme en eso.\c-"; +"\cfDios solo verla en acción... Joder, más que eso. La Ametralladora Sheen es tal festival delicioso de dakka que el mero sonido de dispararla hace que me ponga loca. ¡Es la leche!\c-"; SWWM_LORETAG_HELL = "Infierno"; SWWM_LORETXT_HELL = "\cxNombre:\c-\n" @@ -1369,11 +1647,11 @@ SWWM_LORETXT_HELL = "\cxClasificación:\c-\n" "\cf Inframundo\c-\n" "\n" -"El \cfInfierno\c- es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como \cfKur\c-, un mundo pacífico que los \cfAnarukon\c- que abandonaron \cfNovoskhana\c- siguiendo a \cfNoskas Kurenai\c- buscaban como su \"tierra prometida\" donde vivirían en paz, lejos de la tiranía de la \cfEmperatriz Eterna\c-. La paz duró más de tres mil años, hasta que ocurrió la \cfTraición del Padre Nostros\c- en 10.675 AC, según la cual uno de los descendientes de los \cfNueve Reyes\c- de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como \"demonios\" y decidió tomar toda la tierra para sí y sus nuevos \"seguidores\". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como \"Infierno\", bajo el reinado de Nostros como su \"líder supremo\".\n" +"El \cfInfierno\c- es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como \cfKur\c-, un mundo pacífico que los \cfAnarukon\c- que abandonaron \cfNovoskhana\c- siguiendo a \cfNoskas Kurenai\c- buscaban como su \"tierra prometida\" donde vivirían en paz, lejos de la tiranía de la \cfEmperatriz Eterna\c-. La paz duró más de tres mil años, hasta que ocurrió la \cfTraición del Padre Nostros\c- en el 10.675 AC, según la cual uno de los descendientes de los \cfNueve Reyes\c- de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como \"demonios\" y decidió tomar toda la tierra para sí y sus nuevos \"seguidores\". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como \"Infierno\", bajo el reinado de Nostros como su \"líder supremo\".\n" "\n" "En 149, tras la desaparición del príncipe heredero \cfManakei\c-, quien había sido invocado en la Tierra pero nunca regresó, comenzaron conflictos internos entre los rangos de la realeza del Infierno. Estas luchas por la sucesión al trono, sin embargo, nunca llegaron a escalar mientras Nostros estuviera allí para mantener a los demonios a raya. Hubo muchos intentos de localizar al heredero y traerlo de vuelta, sin éxito.\n" "\n" -"En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto \cfRey Akusei\c-, los varios archidemonios, generales corruptos de los ejércitos de demonios, tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la \cfUAC\c-. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de \cfMars City\c-, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el \cfMarine de Doom\c-, pusieron el punto de mira en la Tierra, y entonces comenzó su invasión final.\n" +"En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto \cfRey Akusei\c-, los varios \cfGenerales Archidemonios\c- corruptos tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la \cfUAC\c-. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de \cfMars City\c-, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el \cfMarine de Doom\c-, pusieron el punto de mira en la Tierra, y entonces comenzó su invasión final.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfOK, lo primero, gracias muchas al abuelete de Ellen-san por toda la info que tenemos de esto. Cytho-sama es como que, nuestro único contacto con el puto sitio ese, y no te vas a creer las cosas que me ha contado.\c-\n" @@ -1389,11 +1667,11 @@ SWWM_LORETXT_HELL2 = "\cxClasificación:\c-\n" "\cf Inframundo\c-\n" "\n" -"El \cfInfierno\c- es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como \cfKur\c-, un mundo pacífico que los \cfAnarukon\c- que abandonaron \cfNovoskhana\c- siguiendo a \cfNoskas Kurenai\c- buscaban como su \"tierra prometida\" donde vivirían en paz, lejos de la tiranía de la \cfEmperatriz Eterna\c-. La paz duró más de tres mil años, hasta que ocurrió la \cfTraición del Padre Nostros\c- en 10.675 AC, según la cual uno de los descendientes de los \cfNueve Reyes\c- de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como \"demonios\" y decidió tomar toda la tierra para sí y sus nuevos \"seguidores\". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como \"Infierno\", bajo el reinado de Nostros como su \"líder supremo\".\n" +"El \cfInfierno\c- es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como \cfKur\c-, un mundo pacífico que los \cfAnarukon\c- que abandonaron \cfNovoskhana\c- siguiendo a \cfNoskas Kurenai\c- buscaban como su \"tierra prometida\" donde vivirían en paz, lejos de la tiranía de la \cfEmperatriz Eterna\c-. La paz duró más de tres mil años, hasta que ocurrió la \cfTraición del Padre Nostros\c- en el 10.675 AC, según la cual uno de los descendientes de los \cfNueve Reyes\c- de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como \"demonios\" y decidió tomar toda la tierra para sí y sus nuevos \"seguidores\". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como \"Infierno\", bajo el reinado de Nostros como su \"líder supremo\".\n" "\n" "En 149, tras la desaparición del príncipe heredero \cfManakei\c-, quien había sido invocado en la Tierra pero nunca regresó, comenzaron conflictos internos entre los rangos de la realeza del Infierno. Estas luchas por la sucesión al trono, sin embargo, nunca llegaron a escalar mientras Nostros estuviera allí para mantener a los demonios a raya. Hubo muchos intentos de localizar al heredero y traerlo de vuelta, sin éxito.\n" "\n" -"En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto \cfRey Akusei\c-, los varios archidemonios, generales corruptos de los ejercitos de demonios, tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la \cfUAC\c-. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de \cfMars City\c-, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el \cfMarine de Doom\c-, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de \cfBaramun\c- el Titan del Este, quien recibió el título de \cfIcono del Pecado\c-.\n" +"En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto \cfRey Akusei\c-, los varios \cfGenerales Archidemonios\c- corruptos tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la \cfUAC\c-. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de \cfMars City\c-, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el \cfMarine de Doom\c-, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de \cfBaramun\c- el Titan del Este, quien recibió el título de \cfIcono del Pecado\c-.\n" "\n" "Contra todo pronóstico, la humanidad triunfó, y los invasores fueron derrotados, junto con su líder. A pesar de esta gran derrota, los generales demoníacos organizaron otros varios ataques, usando sus fuerzas restantes, pero fallaron de nuevo. Habiéndose dado cuenta de que la humanidad era mucho más fuerte de lo que habían supuesto, abandonaron su lucha.\n" "\n" @@ -1411,11 +1689,11 @@ SWWM_LORETXT_HELL3 = "\cxClasificación:\c-\n" "\cf Inframundo\c-\n" "\n" -"El \cfInfierno\c- es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como \cfKur\c-, un mundo pacífico que los \cfAnarukon\c- que abandonaron \cfNovoskhana\c- siguiendo a \cfNoskas Kurenai\c- buscaban como su \"tierra prometida\" donde vivirían en paz, lejos de la tiranía de la \cfEmperatriz Eterna\c-. La paz duró más de tres mil años, hasta que ocurrió la \cfTraición del Padre Nostros\c- en 10.675 AC, según la cual uno de los descendientes de los \cfNueve Reyes\c- de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como \"demonios\" y decidió tomar toda la tierra para sí y sus nuevos \"seguidores\". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como \"Infierno\", bajo el reinado de Nostros como su \"líder supremo\".\n" +"El \cfInfierno\c- es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como \cfKur\c-, un mundo pacífico que los \cfAnarukon\c- que abandonaron \cfNovoskhana\c- siguiendo a \cfNoskas Kurenai\c- buscaban como su \"tierra prometida\" donde vivirían en paz, lejos de la tiranía de la \cfEmperatriz Eterna\c-. La paz duró más de tres mil años, hasta que ocurrió la \cfTraición del Padre Nostros\c- en el 10.675 AC, según la cual uno de los descendientes de los \cfNueve Reyes\c- de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como \"demonios\" y decidió tomar toda la tierra para sí y sus nuevos \"seguidores\". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como \"Infierno\", bajo el reinado de Nostros como su \"líder supremo\".\n" "\n" "En 149, tras la desaparición del príncipe heredero \cfManakei\c-, quien había sido invocado en la Tierra pero nunca regresó, comenzaron conflictos internos entre los rangos de la realeza del Infierno. Estas luchas por la sucesión al trono, sin embargo, nunca llegaron a escalar mientras Nostros estuviera allí para mantener a los demonios a raya. Hubo muchos intentos de localizar al heredero y traerlo de vuelta, sin éxito.\n" "\n" -"En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto \cfRey Akusei\c-, los varios archidemonios, generales corruptos de los ejercitos de demonios, tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la \cfUAC\c-. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de \cfMars City\c-, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el \cfMarine de Doom\c-, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de \cfBaramun\c- el Titan del Este, quien recibió el título de \cfIcono del Pecado\c-.\n" +"En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto \cfRey Akusei\c-, los varios \cfGenerales Archidemonios\c- corruptos tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la \cfUAC\c-. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de \cfMars City\c-, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el \cfMarine de Doom\c-, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de \cfBaramun\c- el Titan del Este, quien recibió el título de \cfIcono del Pecado\c-.\n" "\n" "Contra todo pronóstico, la humanidad triunfó, y los invasores fueron derrotados, junto con su líder. A pesar de esta gran derrota, los generales demoníacos organizaron otros varios ataques, usando sus fuerzas restantes, pero fallaron de nuevo. Habiéndose dado cuenta de que la humanidad era mucho más fuerte de lo que habían supuesto, abandonaron su lucha. Eso es, hasta Agosto de 2160, cuando dos nigromantes demoníacas, las \cfHermanas Resurrectoras\c-, entraron en escena, y revivieron a todos aquellos que habían caído, haciendo que la UAC trajese de vuelta a su \"solucionador de problemas\", el cual regresó al Infierno, exterminando a los demonios resucitados y eliminando a ambas Hermanas Resurrectoras. Al haber terminado su masacre inicial, envió un último mensaje a la Tierra, jurando que permanecería en el infierno para siempre, para asegurarse de que los demonios nunca jamás intentarían atacar a la humanidad.\n" "\n" @@ -1443,7 +1721,7 @@ SWWM_LORETXT_HELL4 = "\n" "En 149, tras la desaparición del príncipe heredero \cfManakei\c-, quien había sido invocado en la Tierra pero nunca regresó, comenzaron conflictos internos entre los rangos de la realeza del Infierno. Estas luchas por la sucesión al trono, sin embargo, nunca llegaron a escalar mientras Nostros estuviera allí para mantener a los demonios a raya. Hubo muchos intentos de localizar al heredero y traerlo de vuelta, sin éxito.\n" "\n" -"En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto \cfRey Akusei\c-, los varios archidemonios, generales corruptos de los ejercitos de demonios, tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la \cfUAC\c-. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de \cfMars City\c-, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el \cfMarine de Doom\c-, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de \cfBaramun\c- el Titan del Este, quien recibió el título de \cfIcono del Pecado\c-.\n" +"En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto \cfRey Akusei\c-, los varios \cfGenerales Archidemonios\c- corruptos tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la \cfUAC\c-. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de \cfMars City\c-, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el \cfMarine de Doom\c-, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de \cfBaramun\c- el Titan del Este, quien recibió el título de \cfIcono del Pecado\c-.\n" "\n" "Contra todo pronóstico, la humanidad triunfó, y los invasores fueron derrotados, junto con su líder. A pesar de esta gran derrota, los generales demoníacos organizaron otros varios ataques, usando sus fuerzas restantes, pero fallaron de nuevo. Habiéndose dado cuenta de que la humanidad era mucho más fuerte de lo que habían supuesto, abandonaron su lucha. Eso es, hasta Agosto de 2160, cuando dos nigromantes demoníacas, las \cfHermanas Resurrectoras\c-, entraron en escena, y revivieron a todos aquellos que habían caído, haciendo que la UAC trajese de vuelta a su \"solucionador de problemas\", el cual regresó al Infierno, exterminando a los demonios resucitados y eliminando a ambas Hermanas Resurrectoras. Al haber terminado su masacre inicial, envió un último mensaje a la Tierra, jurando que permanecería en el infierno para siempre, para asegurarse de que los demonios nunca jamás intentarían atacar a la humanidad.\n" "\n" @@ -1472,17 +1750,9 @@ SWWM_LORETXT_HELLBLAZER = "\cxClasificación:\c-\n" "\cf Lanzador de Minimisiles\c-\n" "\n" -"El \cfHellblazer\c- es la tercera encarnación del \cfCañón de Fuego Infernal\c-, una de las muchas armas que \cfImanaki Corp\c- había construido basándose en sus experimentos explotando lo que llamaron \cfEnergía Ardiente\c-, una fuente de poder de las profundidades del mismo \cfInfierno\c-. Es una mejora directa del modelo Mark 2, el \cfHellrazer\c-, poseyendo capacidades de fuego en ráfaga y un simple sistema de cargador en barril para facilitar recargas. También posee más tipos de munición esta vez:\n" +"El \cfHellblazer\c- es la tercera encarnación del \cfCañón de Fuego Infernal\c-, una de las muchas armas que \cfImanaki Corp\c- había construido basándose en sus experimentos explotando lo que llamaron \cfEnergía Ardiente\c-, una fuente de poder de las profundidades del mismo \cfInfierno\c-. Es una mejora directa del modelo Mark 2, el \cfHellrazer\c-, poseyendo capacidades de fuego en ráfaga y un simple sistema de cargador en barril para facilitar recargas. Como munición, emplea granadas de 25mm \"Blazer\", altamente explosivas a pesar de su diminuto tamaño, debido a los materiales que contiene.\n" "\n" -"\cfGranadas \"Blazer\":\c- La munición estándar. Altamente explosivas a pesar de su diminuto tamaño, gracias a la Energía Ardiente superconcentrada que contienen.\n" -"\n" -"\cfGranadas en clúster \"Crackshot\":\c- Éstas explotan en granadas más pequeñas que se dispersan en el impacto, rebotando durante un tiempo antes de detonar.\n" -"\n" -"\cfGranadas incendiarias \"Ravager\":\c- Las Ravagers liberan una onda de Energía Ardiente sin refinar cuando detonan, cubriendo una zona amplia a su alrededor. Muy útiles en espacios cerrados, donde su plasma abrasador no se disipará tan fácilmente, tostando a conciencia todos los objetivos encontrados. Por razones de seguridad este tipo de munición no se puede usar en ráfaga.\n" -"\n" -"\cfCabezas nucleares \"Slayer\":\c- Un favorito de la anterior serie. Estas bombas nucleares en miniatura contienen en su interior Energía Ardiente altamente enriquecida que causará una devastación total en un radio masivo, causando la muerte segura de incluso los demonios de mayor rango en los ejércitos del Infierno. Tampoco pueden usarse en ráfaga.\n" -"\n" -"El Hellblazer fue descontinuado tras la destrucción de las oficinas de Imanaki Corp en 2009, pero el \cfInstituto Tecnológico Tach-Engine\c- ha conseguido reproducir el arma tras su caída. Sin embargo, los modelos replicados no emplean esta \"Energía Ardiente\", así que no son tan destructivos como debían ser. En su lugar, usan el altamente volátil \cfNokron\c-, uno de los dos elementos exóticos empleados en el proceso de Microfusión, ya que su potencial para el uso en explosivos es bastante notable.\n" +"El Hellblazer fue descontinuado tras la destrucción de las oficinas de Imanaki Corp en 2009, pero el \cfInstituto Tecnológico Tach-Engine\c- ha conseguido reproducir el arma tras su caída. Sin embargo, los modelos replicados no emplean esta \"Energía Ardiente\", así que no son tan destructivos como debían ser. En su lugar, usan el altamente volátil \cfSydon\c-, uno de los elementos exóticos empleados en la creación de Ardiente, ya que su potencial para el uso en explosivos es bastante notable.\n" "\n" "A diferencia de su predecesor, el cual se basaba en simple detección de proximidad, este modelo en su lugar puede comunicarse con matrices de objetivos para proveer de una búsqueda selectiva de objetivos de mayor precisión.\n" "\n" @@ -1490,16 +1760,43 @@ SWWM_LORETXT_HELLBLAZER = "\n" "\cfFuego Secundario:\c- Lanza la munición cargada sin armar, como una granada. Pulsa para disparar una granada, mantén para precargar 2 granadas adicionales (el fuego primario cancela este proceso). La búsqueda de objetivos también afecta a las granadas, ya que intentarán guiarse hacia el objetivo con cada rebote.\n" "\n" -"\cfFuego Terciario:\c- Alterna entre las municiones a usar en la próxima recarga.\n" +"\cfFuego Terciario:\c- No hace nada a menos que el arma esté bloqueada para el tiro (ver arriba).\n" "\n" -"\cfRecarga:\c- Durante una recarga, puedes o bien rellenar el cargador actual (fácil a través del contenedor de \cfHammerspace™\c-), o cambiarlo por otro tipo de munición.\n" +"\cfRecarga:\c- Rellena el cargador actual, bastante fácil a través del contenedor de \cfHammerspace™\c-.\n" "\n" "\cfTécnicas:\c- Las granadas detonan automáticamente en proximidad a objetivos hostiles, así que todavía puedes alcanzar ese disparo aunque solo los hayas rozado. No está muy claro como detectan los objetivos, o como saben que son hostiles.\n" "\n" "\cxNotas de Saya:\c-\n" "\cf¿\"Energía Ardiente\"? ¿Coño es eso? ¿Energía que le sacan del ano a un demonio después de atiborrarse a curry? Más me da, cualquier cosa salida del Infierno es mejor no tocarla, sabes. Tú mira lo que le pasó a la puta UAC, metiendo las pezuñas donde no los llaman.\c-\n" "\n" -"\cfAhora que lo miro, lo de que las réplicas usen Nokron fue una buena idea. No sabía yo que esa cosa explotara. Realmente da que pensar sobre todos esos mecanismos de seguridad que tienen los motores de Microfusión, definitivamente justificados si ESO puede pasar.\c-"; +"\cfAhora que lo miro, lo de que las réplicas usen Sydon fue una buena idea. Esa cosa se puede encontrar naturalmente en un montón de exoplanetas así que es fácil de conseguir. Por cierto, ¿sabías que los Nukuri lo usan como tinte para el pelo? Bueno, usan un isótopo no reactivo, pero aun así...\c-"; +SWWM_LORETXT_HERMANN = +" \cxNombre Completo:\c-\n" +" \cf Hermann Edward Ischer\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Alemana-Americana\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2079-09-17\c-\n" +" \cxOcupación:\c-\n" +" \cf CEO (Blackmann Arms)\c-\n" +" \cxTwitter:\c-\n" +" \cf @ischerman\c-\n" +"\n" +"\n" +"Nacido en \cfColonia, Alemania\c- en 2079 como el mayor de dos hermanos, \cfHermann\c- fue elegido por su padre para liderar la empresa familiar tras su jubilación, lo cual decepcionó a su más competente hermana menor.\n" +"\n" +"Conocido por su carisma radiante, el hombre es muy popular en la red, y logró su fama de una de las formas posiblemente más peculiares: Dejándose crecer las cejas lo más largas posibles. En el momento de escribir este artículo, aun mantiene el récord mundial.\n" +"\n" +"Como amante de las finas armas, su objetivo principal encabezando \cfBlackmann Arms\c- sería una mayor expansión de armería de alto calibre, especialmente dada la popularidad mundial del icónico cartucho \cf.50 OMG\c- de su abuelo. Durante el periodo de posguerra tras la \cfCicatriz Blanca\c-, las armas potentes para defender el territorio estaban en alta demanda, y así fue que se inició la carrera de los \cfbúms grandes\c-, en la cual participó con la primera encarnación de la serie \cfSilver Bullet\c- de rifles, y el cartucho \cf.850 BIG\c-. El resto es historia, pero sobra añadir que ganó esa carrera.\n" +"\n" +"De Hermann también se sabe su satisfacción personal por maximizar la velocidad de armas automáticas, con resultados mixtos, y de alguna forma consiguiendo que los tan inmiscuidos grupos de regulación de armas hagan la vista gorda. Algunos dirían que el armamento con tales \"hilarantemente rotas\" velocidades de disparo era simplemente demasiado ridículo para tomarse en serio, y que no hacía falta ninguna regulación ya que nadie en su sano juicio se atrevería a emplear algo así en el campo de batalla.\n" +"\n" +"En lo que respecta a su vida personal, está felizmente casado con la celebridad de internet \cfJonathan Alfredo Bortson Borges III\c-, y a veces toma parte como invitado en los directos de su marido.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEl mismísimo hombre con cara de bebé y cejas enormes. En lo que respecta a Americanos, me cae bastante bien realmente, y me gusta pasar el rato con él a pesar de la vergüenza ajena que me da en cuanto a cultura Japonesa se refiere.\c-\n" +"\n" +"\cfEl novio es... ... Bueno, algo especial. No habla, aparte de soltar algún que otro quejido y murmullo de vez en cuando, pero desde luego es elocuente de cojones en forma textual. A ver, mira, no soy quien para juzgar, pero su obsesión con ese personaje de anime... Se pasa un poco. Aunque el cosplay está decente.\c-"; SWWM_LORETXT_IBUKI = " \cxNombre Completo:\c-\n" " \cf Ibuki Miyamoto\c-\n" @@ -1509,29 +1806,28 @@ SWWM_LORETXT_IBUKI = " \cxFecha de Nacimiento:\c-\n" " \cf 2074-09-09\c-\n" " \cxOcupación:\c-\n" -" \cf Mercenaria, Modelo de Desnudos, Vlogger\c-\n" +" \cf Mercenaria, Modelo, Vlogger\c-\n" " \cxTwitter\c-\n" -" \cf @lewd_ibuki (principal)\c-\n" -" \cf @ibuki_tiddy (fotos)\c-\n" +" \cf @red_oni_74\c-\n" "\n" "\cfIbuki\c- es el resultado del programa de supersoldado \cfOni Rojo\c-, ideado por \cfSaya Miyamoto\c- de \cfAkari Labs\c-. La existencia de este proyecto se mantuvo en secreto hasta su revelación pública en Junio de 2077. Hubo considerable controversia alrededor del programa Oni Rojo, incluyendo la implicación personal de Saya en él, habiendo aceptado un pago de 40 mil millones de dólares a cambio (lo cual se descubrió tener relación con la anterior venta del estado de Texas a México semanas antes). A pesar de su claro potencial y extraordinarias habilidades de combate, fue enviada demasiado tarde, ya que solo momentos después, la \cfCicatriz Blanca\c- ocurrió, y con ella, la devastación total de los \cfEstados Unidos\c-.\n" "\n" -"Muchos años después del incidente, Ibuki fue recuperada con éxito del incendiado yermo, habiendo pasado la mayor parte del tiempo como una especie de \"mercenaria ambulante\". Regresó a Japón en Junio de 2091, y una vez instalada, pasó por varios pequeños empleos hasta encontrar su verdadera vocación como modelo de desnudos.\n" +"Muchos años después del incidente, Ibuki fue recuperada con éxito del incendiado yermo, habiendo pasado la mayor parte del tiempo como una especie de \"mercenaria ambulante\". Regresó a Japón en Junio de 2091, y una vez instalada, pasó por varios pequeños empleos hasta encontrar su verdadera vocación como modelo. Otros hobbies incluyen el vlogging (sobre varios temas), junto con algún que otro trabajo independiente como mercenaria.\n" "\n" -"Al haber sido creada desde el ADN de Saya, ha efectivamente heredado la inmortalidad total de la familia Miyamoto, es más, también ha recibido varias mejoras por encima las cuales han aumentado su fuerza y reflejos, junto con hacer que su piel sea a prueba de balas. Saya ha comentado que esto último significa que no necesita llevar ropa.\n" +"Al haber sido creada desde el ADN de Saya, ha efectivamente heredado la inmortalidad total de la familia Miyamoto, es más, también ha recibido varias mejoras por encima las cuales han aumentado su fuerza y reflejos, junto con hacer que su piel sea a prueba de balas. Se ha demostrado incluso que es capaz de sobrevivir un ataque orbital.\n" "\n" -"Citando adicionalmente las \"interesantes\" decisiones de Saya, está el hecho de sus particulares rasgos físicos aparte de su fuerza, incluyendo su obviamente obsceno tamaño de busto, que muchos consideran poco práctico, totalmente en desacuerdo con Saya. Al preguntarle por más detalles, comenzó una extensa diatriba en Twitter centrada sobre \"waifus\".\n" +"Citando adicionalmente las \"interesantes\" decisiones de Saya, está el hecho de sus particulares rasgos físicos aparte de su fuerza, ya que a pesar de ser su clon, las dos casi ni se parecen entre sí. Al preguntarle por más detalles, Saya se negó a responder.\n" +"\n" +"Aunque Ibuki es legalmente parte de la familia Miyamoto, optó por vivir por su cuenta. Comparte una casa con otras dos amigas mercenarias, junto con otras personas que se unieron posteriormente. Algunas de sus amigas cercanas son personajes de renombre, como la desarrolladora de videojuegos \cfKris Danae\c-, o la guerrera-bruja demi-Anarukon \cfMarisa Azanth\c-.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfOK vale sí, me encantan los pechotes. Pero ¿por que todo dios tiene que soltarme mierda por eso? ¿Acaso hay ALGO malo en eso, eh? Ya, eso pensaba.\c-\n" +"\cfEsos Americanos idiotas se me acercan con una barbaridad de pasta y me dicen que les haga un supersoldado. Sí, supongo que estuvieron espiando todo el rollo ese que posteé sobre bioingeniería y tal. Madre, si es que estaban desesperados, pues sí... Era realmente patético.\c-\n" "\n" -"\cfVale, Ibuki fue como, mi mayor hornypost en la vida. No me pude aguantar, sabes. Putos... Americanos idiotas que se me acercan con una barbaridad de pasta y me dicen que les haga un supersoldado. Sí, supongo que estuvieron espiando todo el rollo ese que posteé sobre bioingeniería y tal. Madre, si es que estaban desesperados, pues sí... Era realmente patético. PERO, tuve una idea justo entonces. A ver... es que estaba thirsty a más no poder, y pensé... ¿y si.. me hiciera una superfuerte novia tetuda, justo ahí?\c-\n" +"\cfY ahora, es hora de que confiese... Dada la oportunidad de crear una copia de mi misma, y de poder mejorarla, acabé realizando mis fantasías. ¿Y si fuera más alta? ¿Y más guapa? ... Pensándolo ahora, fue algo muy estúpido por mi parte, supongo. Pero ahí está, una versión mía que es una novia gótica superfuerte.\c-\n" "\n" -"\cfY bueno... eso es justo lo que pasó. Pasé tres años con todo eso, criándola en ese tubo. Era mi primera vez haciendo algo así, pero tuve suerte y todo salió de puta madre. Aunque... cuando empezaron a notar lo de la \"anormalidad en el desarrollo de los pechos del sujeto\" me puse nerviosa. ¿Y si lo mandaban todo a la mierda? Acabé admitiendo que era intencionado, soltando no se qué mierda que se me pasó por la cabeza, algo de \"tácticas de distracción\" o así, ya ni me acuerdo. Al final lo dejaron pasar.\c-\n" +"\cfPasé tres años con todo eso, criándola en ese tubo. Era mi primera vez haciendo algo así, pero tuve suerte y todo salió de puta madre. Aunque... cuando empezaron a notar lo de la \"anormalidad en el desarrollo de los pechos del sujeto\" me puse nerviosa. ¿Y si lo mandaban todo a la mierda? Acabé admitiendo que era intencionado, soltando no se qué mierda que se me pasó por la cabeza, algo de \"tácticas de distracción\" o así, ya ni me acuerdo. Al final lo dejaron pasar.\c-\n" "\n" -"\cfOh ya, ¿sabias? Técnicamente, Ibuki es mi clon. Sí, puede que haya habido algún que otro cambio, pero si mi desarrollo no se hubiera parado así porque sí, quien sabe, a lo mejor me habría visto así de sexy algún día. Desde luego da que pensar, vaya...\c-\n" -"\n" -"\cfSí, también me he dado cuenta de que eso significa que en teoría lo estoy haciendo conmigo misma. ¿Y? ¿Acaso es eso un problema también?\c-"; +"\cfA pesar de todo, incluso después de haberle confesado que la creé así a propósito, incluso después de todo lo de la guerra, me quiere y me da gracias por estar viva. En serio, es demasiado buena conmigo...\c-"; SWWM_LORETXT_IMANAKI = "\cxNombre:\c-\n" "\cf Fundación de Investigación Imanaki\c-\n" @@ -1550,7 +1846,7 @@ SWWM_LORETXT_IMANAKI = "\n" "Ese hombre no era otro sino el \cfPríncipe Anthon Anderken\c-, uno de los miembros más importantes de la realeza \cfAnarukon\c-, quien, por pura casualidad, había llegado a la Tierra para capturar a ese ghoul específicamente, por razones no determinadas, justo en el momento exacto en que comenzó la caza. Tras recibir los disparos, el ghoul se enfureció, y empleó sus últimas fuerzas para envolver todo en fuego infernal. La fuerza de esta explosión de fuego cegador pudo oírse por todo el mundo. Ningún soldado sobrevivió, siendo todo el bosque reducido a cenizas en un instante. Se desconoce lo que ocurrió con Anthon y el ghoul, pero la mayoría asume que ambos sobrevivieron.\n" "\n" -"Tras este espectacular incidente, Imanki Corp resumió sus operaciones, ahora libre de la amenaza de los ghouls, aunque se enfrentaron a muchas críticas de los lugareños por su decisión de destruir lo que consideraban un \"tesoro nacional\". Esta paz relativa no duró mucho, ya que las consecuencias del ataque a Anthon finalmente los alcanzarían. En Diciembre de 2009, antes de otra expedición rutinaria al Infierno, sus portales fueron redirigidos por un atacante no identificado, y de ellos salió un enjambre de soldados Anarukon, aniquilando a todo aquel que encontraran en las instalaciones y sus alrededores. Las oficinas de Imanaki Corp fueron destruidas completamente, y las fuerzas Anarukon permanecieron en el pueblo durante días, hasta regresar a su mundo una vez satisfechos con la destrucción que habían causado como venganza.\n" +"Tras este espectacular incidente, Imanaki Corp resumió sus operaciones, ahora libre de la amenaza de los ghouls, aunque se enfrentaron a muchas críticas de los lugareños por su decisión de destruir lo que consideraban un \"tesoro nacional\". Esta paz relativa no duró mucho, ya que las consecuencias del ataque a Anthon finalmente los alcanzarían. En Diciembre de 2009, antes de otra expedición rutinaria al Infierno, sus portales fueron redirigidos por un atacante no identificado, y de ellos salió un enjambre de soldados Anarukon, aniquilando a todo aquel que encontraran en las instalaciones y sus alrededores. Las oficinas de Imanaki Corp fueron destruidas completamente, y las fuerzas Anarukon permanecieron en el pueblo durante días, hasta regresar a su mundo una vez satisfechos con la destrucción que habían causado como venganza.\n" "\n" "Un tiempo después de estos eventos, un pequeño equipo de reconocimiento consiguió recuperar algunos de los materiales de investigación y otros documentos de entre los escombros, los cuales caerían después en las manos de la \cfUAC\c-.\n" "\n" @@ -1559,21 +1855,26 @@ SWWM_LORETXT_IMANAKI = "\n" "\cfSabes, cuando empezaron a hablar de meterse en teletransportes y tal, LO SABÍA. Sabía perfectamente justo entonces que estaban usando toda esa mierda que robaron. Putos bastardos, hasta dijeron ser \"los primeros\", también.\c-"; SWWM_LORETXT_IMANAKIT = -"\cxNombre Completo:\c-\n" -"\cf Tetsuya Imanaki\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Indeterminado\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf Indeterminado\c-\n" -"\cxOcupación:\c-\n" -"\cf CEO (Imanaki Corp)\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Tetsuya Imanaki\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1983-01-01\c-\n" +" \cxOcupación:\c-\n" +" \cf CEO (Imanaki Corp)\c-\n" "\n" -"El fundador y CEO de \cfImanaki Corp\c-, y también el único miembro restante de la familia Imanaki tras los \cfAsesinatos de la Mansión Onoke\c- de 2003. \cfTetsuya\c- siempre ha mantenido mucho secretismo acerca de sí mismo, así que no se sabe nada realmente de su vida personal o historia, ni su apariencia física.\n" "\n" -"Durante los eventos de la \cfCaza de Ghouls\c-, y más tarde el \cfIncidente Hellbound\c-, una vez más evitó la muerte gracias a su ausencia de las instalaciones de Imanaki Corp. Sin embargo, nadie sabe donde se encontraba realmente, y desde entonces ha desaparecido por completo.\n" +"\n" +"\n" +"El fundador y CEO de \cfImanaki Corp\c-, y también el único miembro restante de la familia Imanaki tras los \cfAsesinatos de la Mansión Onoke\c- de 2003. \cfTetsuya\c- siempre ha mantenido mucho secretismo acerca de sí mismo, así que no se sabe nada realmente de su vida personal.\n" +"\n" +"Durante los eventos de la \cfCaza de Ghouls\c-, y más tarde el \cfIncidente Hellbound\c-, una vez más evitó la muerte gracias a su ausencia de las instalaciones de Imanaki Corp. Sin embargo, nadie sabe donde se encontraba realmente, y desde entonces ha desaparecido por completo. Algunos especulan que, dado que es el último de los Imanaki, esto es para evitar ser localizado por los miembros del \cfClan de los Yanasha\c-, rivales de la familia desde hace siglos.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfUn artículo corto, lo sé. En serio que no hay nada acerca de este tío. Es como si... nunca hubiera dejado ni un solo rastro aparte de... el hecho de que existió y estaba a cargo de todo eso.\c-"; +"\cfUn artículo corto, lo sé. En serio que no hay nada acerca de este tío. Es como si... nunca hubiera dejado ni un solo rastro aparte de... el hecho de que existió y estaba a cargo de todo eso.\c-\n" +"\n" +"\cfA ver, está la foto esa, pero tampoco está claro si es él. Aun así no puedo negar que es bastante guapo...\c-"; SWWM_LORETAG_INVINCIBALL = "Invincibola"; SWWM_LORETXT_INVINCIBALL = "\cxDesignación:\c-\n" @@ -1607,18 +1908,49 @@ SWWM_LORETXT_ITAMEXHAMMER = "\n" "El Martillo de Combate Reforzado es principalmente usado para desmantelar rápidamente barricadas o destruir barreras reforzadas, pero muchos han recurrido a usos más creativos, tales como la destrucción de vehículos blindados, o trabajos de demolición improvisados en edificios enteros. Se ha de notar también que en un combate real puede ser bastante letal (y sangriento) contra objetivos sin blindaje.\n" "\n" -"\cfFuego Primario:\c- Golpes rápidos, de lado a lado. Bueno para cargar a través de hordas enemigas.\n" +"\cfFuego Primario:\c- Golpes rápidos. Bueno para cargar a través de hordas enemigas.\n" "\n" -"\cfFuego Secundario:\c- Mantén para preparar un golpe vertical, suelta para dejar caer el martillo sobre cualquier pobre insensato que se te ponga delante. Cuanto más lo mantengas, más fuerte será el golpe.\n" +"\cfFuego Secundario:\c- Mantén para levantar el martillo sobre tu cabeza, suelta para dejarlo caer sobre cualquier pobre insensato que se te ponga delante. Cuanto más lo mantengas, más fuerte será el golpe. Este ataque puede potencialmente echar abajo puertas, entre otras cosas.\n" "\n" -"\cfFuego Terciario\c- Mantén para preparar un largo golpe vertical, suelta para ejecutar un potente ataque giratorio, destrozando todo a tu alrededor. Las pulsaciones consecutivas del fuego terciario mientras giras harán que se mantenga el movimiento durante más tiempo. Siendo un robot de combate, deberías estar libre de cualquier mareo por el movimiento que un humano típicamente desarrollaría haciendo algo así.\n" +"\cfFuego Terciario\c- Ejecuta un potente ataque giratorio, destrozando todo a tu alrededor. Las pulsaciones consecutivas del fuego terciario mientras giras harán que se mantenga el movimiento durante más tiempo. Siendo un robot de combate, deberías estar libre de cualquier mareo por el movimiento que un humano típicamente desarrollaría haciendo algo así. Sin embargo, no podrás controlar a donde te lleva este movimiento giratorio.\n" "\n" "\cfRecarga:\c- Es un martillo. No hay nada que recargar, ve y aplasta cráneos.\n" "\n" +"\cfTécnicas:\c- Al ser puramente un arma de combate a melé, el martillo puede beneficiarse directamente de los efectos del \cfRagekit\c-, multiplicando su potencial de daño por ocho.\n" +"\n" "\cxNotas de Saya:\c-\n" "\cfEsta mierda es fuerte Y buena. Perfecto para una Demolicionista como tú, juju. ¿Y sabes que es bueno también? Se puede hacer aun MÁS poderoso en cuanto te metas un Ragekit. Te harás IMPARABLE.\c-\n" "\n" "\cf¡Oh sí! ¡Hammer time!\c-"; +SWWM_LORETXT_JOJO = +" \cxNombre Completo:\c-\n" +" \cf Joanna Josephson IV\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Australiana\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2107-08-24\c-\n" +" \cxOcupación:\c-\n" +" \cf Presidenta (Symnatek)\c-\n" +" \cf Jefa de Ingeniería (Itamex)\c-\n" +"\n" +"\n" +"\n" +"Nacida en California en 2107, \cfJoanna\c- es la cuarta heredera del linaje \cfJosephson\c-, y la actual líder del conglomerado \cfIndustrias Aliadas (Symnaki Tekkanosei)\c-, el mayor y más poderoso titán de la industria del territorio \cfAustraliano\c-.\n" +"\n" +"Ensombreciendo a todos a su alrededor con sus 2.10m de altura, su imponente presencia ha asegurado que nadie se atreva a desafiar el reinado absoluto de su compañía en su territorio natal. Sin embargo, a pesar de esto se sabe que tiene buen trato con la CEO de la competidora \cfMixom\c-, \cfKasumi Tanaka\c-.\n" +"\n" +"Aunque encabeza la compañía principal, está mucho más involucrada en el tema de fábrica de armas de la subsidiaria \cfItamex\c-, tanto en lo que se refiere a ingeniería y pruebas, como a la promoción de sus productos.\n" +"\n" +"Joanna ha logrado cierta fama debido a sus proezas de fuerza física, incluyendo un escalofriante encuentro con un oso gris salvaje el cual resultó ser mucho más escalofriante para el propio animal. En una entrevista, bromeó diciendo que el oso \cf\"va a necesitar un fisioterapeuta\"\c-.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEsta tía ha logrado por su propia cuenta mantener a flote a todos los artistas de tías musculosas durante años, y es bastante comprensible. Es enorme, está mazadísima como un puto camión, y casi me meo encima cuando la conocí por primera vez.\c-\n" +"\n" +"\cf...\c-\n" +"\n" +"\cfPor favor olvida eso último que dije.c-\n" +"\n" +"\cf¿Que? ¿Como que el sistema de dictado no entiende eso?\c-"; SWWM_LORETXT_KERESHNOVKA = "\cxNombre:\c-\n" "\cf Kereshnovka\c-\n" @@ -1628,7 +1960,7 @@ SWWM_LORETXT_KERESHNOVKA = "\cxLocalización:\c-\n" "\cf Siberia\c-\n" "\n" -"\cfKereshnovka\c- es una pequeña región localizada en alguna parte del centro-norte de Siberia. No es posible tener una localización más exacta, ya que parece existir en una especie de burbuja de espacio aislada que desafía las leyes del espacio-tiempo. La región hospeda al pueblo que lleva su nombre, Kereshnovka, el cual está habitado casi exclusivamente por miembros de la raza \cfQurensniv\c- los cuales, en el 130 AC, habían huído de su planeta natal, escapando de la persecución del malvado rey dictador \cfMarc P. Karnanaiahmani\c-, en aquel entonces líder de todo el planeta de \cfKarnanaiahma\c-, en el vecino \cfSistema Xathar\c-. Desde su fundación, \cfReubens C. Karnanaiahmani\c-, segundo hijo de dicho rey y organizador de este éxodo masivo, ha actuado como alcalde del pueblo.\n" +"\cfKereshnovka\c- es una pequeña región localizada en alguna parte del centro-norte de Siberia. No es posible tener una localización más exacta, ya que parece existir en una especie de burbuja de espacio aislada que desafía las leyes del espacio-tiempo. La región hospeda al pueblo que lleva su nombre, Kereshnovka, el cual está habitado casi exclusivamente por miembros de la raza \cfQurensniv\c- los cuales, en el 130 AC, habían huido de su planeta natal, escapando de la persecución del malvado rey dictador \cfMarc P. Karnanaiahmani\c-, en aquel entonces líder de todo el planeta de \cfKarnanaiahma\c-, en el vecino \cfSistema Xathar\c-. Desde su fundación, \cfReubens C. Karnanaiahmani\c-, segundo hijo de dicho rey y organizador de este éxodo masivo, ha actuado como alcalde del pueblo.\n" "\n" "El pueblo de Kereshnovka está rodeado de varios puntos de referencia fuera de lugar que dificultan la tarea de deducir su localización exacta. Está delimitado por el mar al norte, y el terreno más cercano es la pequeña isla de Kopo (\"medianoche\" en Qurensniv). Extendiéndose por el este y sur, se encuentra el gran bosque de Nuskar, el cual está fuera de límite a los extranjeros debido a los \"ghouls\" que lo habitan y atacan a aquellos que no sean nativos a la región. Al oeste, más allá de una gran zona montañosa, está la aldea Bakie, un pequeño asentamiento rural, y al sur/suroeste, el árido desierto Yakendere.\n" "\n" @@ -1642,7 +1974,7 @@ SWWM_LORETXT_KERESHNOVKA = "\n" "\cfLos Asesinatos de la Mansión Onoke (2003):\c- Un gran incendio ocurre en la \cfMansión Onoke\c-, donde las familias \cfOnoke\c- e \cfImanaki\c- estaban actualmente reunidas para celebrar la unión de dos de sus miembros. Se encontró a todos asesinados brutalmente, en una extraña manera ritualista. El único superviviente de este incidente fue \cfTetsuya Imanaki\c-, quien decidió no haber acudido citando razones de trabajo importantes.\n" "\n" -"\cfLa Caza de Ghouls (2007):\c- Tras el asesinato de un miembro de alto rango de la \cfUAAF\c- por parte de uno de los ghouls locales, a partir de una visita de negocios a las oficinas de \cfImanaki Corp\c-, una caza comenzó inmediatamente contra las criaturas, a pesar de las quejas locales de \"destruír tesoros nacionales\". Esta caza duró dos años, y culminó en la reaparición del demonio que había causado el gran incendio de 149, quien, esta vez, prendió todo el bosque de Nuskar tras ser rodeado por soldados de la UAAF. Siguiendo esto, todos los ghouls desparecieron, junto con el mismo demonio.\n" +"\cfLa Caza de Ghouls (2007):\c- Tras el asesinato de un miembro de alto rango de la \cfUAAF\c- por parte de uno de los ghouls locales, a partir de una visita de negocios a las oficinas de \cfImanaki Corp\c-, una caza comenzó inmediatamente contra las criaturas, a pesar de las quejas locales de \"destruir tesoros nacionales\". Esta caza duró dos años, y culminó en la reaparición del demonio que había causado el gran incendio de 149, quien, esta vez, prendió todo el bosque de Nuskar tras ser rodeado por soldados de la UAAF. Siguiendo esto, todos los ghouls desparecieron, junto con el mismo demonio.\n" "\n" "\cfEl Incidente Hellbound (2009):\c- Durante un experimento de teletransporte rutinario en Imanaki Corp, sus sistemas fueron hackeados por un atacante desconocido, lo que alteró el destino de sus portales. Siguiendo esto, un ejército de soldados \cfAnarukon\c- comenzaron su masacre por toda la instalación, eliminando a todos los empleados de Imanaki junto con los soldados de la UAAF a cargo de la defensa. Después, el edificio entero fue destruido, y los guerreros permanecieron allí durante varios días, atacando a cualquiera que se acercase, hasta que el alcalde \cfReubens C. Karnanaiahmani\c- consiguió contactar con su líder y pedir que se marchen, ya que \"ya se ha derramado suficiente sangre humana\".\n" "\n" @@ -1668,24 +2000,16 @@ SWWM_LORETXT_KEYCHAIN = "\cxNotas de Saya:\c-\n" "\cfAh, sí, puse algunas cosas cuquis ahí que puede que te gusten. Pues, está la del emoji de bomba, porque a ver, te gusta hacer explotar cosas, ¿no? La elección era obvia, desde luego.\c-\n" "\n" -"\cfLuego está la chorrada esa que te hizo tanta gracia, la medalla esa de \"butt bots gonna bot\", je. Ni pajolera idea de de qué va todo esto, o de quien es la tal \"Nekohaku\" y de porqué es un \"demonio anal\". Debe de ser algún chiste de alguna comunidad supongo...\c-\n" +"\cfLuego está la chorrada esa que te hizo tanta gracia, la medalla esa de \"butt bots gonna bot\", je. Ni pajolera idea de de qué va todo esto, debe de ser algún chiste obscuro de algún lado...\c-\n" "\n" "\cfPor supuesto, también hay un careto chibi de mí. Piensa como que es una forma de que esté siempre contigo, no importa donde vayas, jejeje.\c-\n" "\n" -"\cfY CLARO, muy mucho importante, oh sí. No creas que me he olvidado de eso, lo tengo grabadísimo en la mente. Sí, lo que pasó en nuestro directo. Si es que eres la robotita mas dulce y más mejor, Demo-chan. Venga, conmigo, alto y claro:\c-\n" -"\n" -" \c[TransBlue]██████████████████████\c-\n" -" \c[TransPink]██████████████████████\c-\n" -" \cj██████████████████████\c-\n" -" \c[TransPink]██████████████████████\c-\n" -" \c[TransBlue]██████████████████████\c-\n" -"\n" -"\cfTRANS RIGHTS! FUCK YEAH!\c-"; +"\cfY CLARO, muy mucho importante, oh sí. No creas que me he olvidado de eso. Hace que ciertos tipos de gentuza se sientan jodidamente escocidos, y espero que tengan la imagen de ESA BANDERA grabada a cada momento mientras salvas el mundo. Si es que se pondrían del lado de los demonios si no fuera porque resulta que también son progres en cuanto a libertad sexual.\c-"; SWWM_LORETXT_KIRIN = " \cxNombre Completo:\c-\n" " \cf Kirin Xanai\c-\n" " \cxTítulo:\c-\n" -" \cf Emperador Infantil del Imperio Sykhai de Akkou\c-\n" +" \cf Emperador Sykhai de Akkou\c-\n" " \cxNacionalidad:\c-\n" " \cf Akkouxhei\c-\n" " \cxFecha de Nacimiento:\c-\n" @@ -1699,20 +2023,20 @@ SWWM_LORETXT_KIRIN = "\n" "A pesar de tener el título de \"Emperador\", realmente no tiene ningún poder sobre la gente de Akkou, y en su lugar actúa más como un consejero político y económico. De hecho, el \cfImperio Sykhai\c- en sí tampoco puede ser descrito como un imperio. Muchos lo describirían más bien como algo parecido a una colección de comunas anarquistas que otra cosa, a diferencia del verdadero, tiránico \cfImperio de Novoskhana\c- del que se separaron.\n" "\n" -"Durante casi 80 años como líder de Akkou, Kirin ha permanecido soltero, ya que nadie se atrevía a acercarse a él con el propósito de casarse, debido a que se le veneraba como un icono de \"pureza inmaculada\", en parte debido a que su nombre, Kirin, significa \"inocencia\" en el idioma \cfAnarukon\c-. No fue hasta un encuentro inesperado con \cfSaya Miyamoto\c- en 2171 que esto finalmente cambió. Tras un mes bastante ocupado, durante el cual el joven emperador adicionalmente conoció a las otras parejas de Saya, surgió el amor, eventualmente culminando en un casamiento colectivo (\cg♥\c-) el 8 de Mayo de 2171, con su unión marcando el inicio de una gran alianza entre la humanidad y los Anarukon, adicionalmente ayudando a curar las viejas heridas del \cfIncidente Hellbound\c-, ya que esta alianza se extendió también al \cfReino Kurenai\c-, a través de la amistad compartida con la \cfReina Andreki Anderken\c-.\n" +"Durante décadas como líder de Akkou, Kirin ha permanecido soltero, ya que nadie se atrevía a acercarse a él con el propósito de casarse, debido a que se le veneraba como un icono de \"pureza inmaculada\", en parte debido a que su nombre, Kirin, significa \"inocencia\" en el idioma \cfAnarukon\c-. No fue hasta un encuentro inesperado con \cfSaya Miyamoto\c- en 2171 que esto finalmente cambió. Tras un mes bastante ocupado, durante el cual el joven emperador adicionalmente conoció a las otras parejas de Saya, surgió el amor, eventualmente culminando en un casamiento colectivo (\cg♥\c-) el 8 de Mayo de 2171, con su unión marcando el inicio de una gran alianza entre la humanidad y los Anarukon, adicionalmente ayudando a curar las viejas heridas del \cfIncidente Hellbound\c-, ya que esta alianza se extendió también al \cfReino Kurenai\c-, a través de la amistad compartida con la \cfReina Andreki Anderken\c-. Fuera de su matrimonio, Kirin también mantiene una relación estrecha con \cfAlakir de Kanaiarkar\c-, cónsul de una nación vecina a quien ha ayudado en el pasado.\n" "\n" "Kirin en persona puede ser descrito como un líder bastante \"pragmático\". Siendo muy cercano a la gente de Akkou, y aficionado a entablar amistades. Es también absolutamente adorable. Cuando no está ocupado con sus deberes como consejero de la gente, Kirin se dedica a muchos de sus hobbies, tales como la pintura (teniendo una gran habilidad como retratista, por ejemplo), o la práctica de la magia junto a su madre. También tiene cierta afición a los videojuegos, anime, y otras formas de entretenimiento moderno, y suele ser visto hablando de forma extensa en redes sociales sobre el tema, felizmente introduciendo a la gente de la Tierra a los juegos y series populares de su mundo natal.\n" "\n" "\cxNotas de Saya:\c-\n" "\cg♥\c- \ca¡¡¡¡¡¡KIRIN-KUN!!!!!! ¡¡¡¡¡¡ERES UNA MONADA!!!!!! ¡¡¡¡TE QUIERO!!!!\c- \cg♥\c-\n" "\n" -"\cfAhhhhh, Demo-chan, ¿no es el mejor novio del mundo? Es que me hace tan feliz, y es tan bueno que... sí~\c- \cg♥\c-\n" +"\cfAhhhhh, Demo-chan, ¿no es el mejor marido del mundo? Es que me hace tan feliz, y es tan bueno que... Sí~\c- \cg♥\c-\n" "\n" -"\cfEn serio, que nunca... NUNCA NUNCA pensé que esto podría pasar. Que yo... que todas nosotras... nos pilláramos a nuestro propia monada inmortal. Es como un sueño hecho realidad, sabes...\c-\n" +"\cfEn serio, que nunca... NUNCA NUNCA pensé que esto podría pasar. Que yo... Que todas nosotras... Nos pilláramos a nuestro propia monada inmortal. Es como un sueño hecho realidad, sabes...\c-\n" "\n" -"\cfNo puedo dejar de pensar en él cuando no está aquí... o joder, incluso cuando SÍ está aquí (adivina). Kirin-kun es que es tan... nggghh... Voy a darle un abrazo ahora mismo.\c-\n" +"\cfNo puedo dejar de pensar en él cuando no está aquí... O incluso cuando SÍ está aquí (adivina). Kirin-kun es que es tan... Nggghh... Voy a darle un abrazo ahora mismo.\c-\n" "\n" -"\cfOh por cierto, dice hola. Le dije que esto no es un chat pero bueno en fin, hola de parte de nuestro monísimo marido. Espera, a ver... voy a dejar que escriba un poco por aquí, por qué no.\c-\n" +"\cfOh por cierto, dice hola. Le dije que esto no es un chat pero bueno en fin, hola de parte de nuestro monísimo marido. Espera, a ver... Voy a dejar que escriba un poco por aquí, por qué no.\c-\n" "\n" "\cgNotas de Kirin:\c-\n" "\caSaludos, Demo-chan. Espero que te encuentres bien en estas aventuras. Desearía poder estar presente en la transmisión en directo que Sayacchi hace de esto, pero actualmente me encuentro un poco ocupado conghfghfdgsddfh\c-\n" @@ -1724,24 +2048,9 @@ SWWM_LORETXT_KIRIN = "\cxNotas de Saya:\c-\n" "\cfAAAAAAAAAAAAAAAAAAAAAAAA ¡¡¡¡Oh dios mio eso es tan adorable!!!!\c-\n" "\n" -"\cfjeje, sí, fui justo a por los pies otra vez. Su punto débil, jujuju~\c-\n" +"\cfjeje, sí, fui justo a por su cintura otra vez. Su punto débil, jujuju~\c-\n" "\n" -"\cfPor cierto, no le digas nada pero... ¿ese \"trabajo importante\" con el que está tan ocupado? Resulta que es otro juego que le puse. En serio, han pasado solo un par de semanas y ya casi se ha ventilado toda mi colección. Ah, y olvida lo que dijo de no verte, si es que, aunque tenga que ser a la fuerza, voy a hacer que te vea. En serio quiero ver como reacciona a tus payasadas.\c-"; -SWWM_LORETAG_KIRINCUMMIES = "Zumo de Melocotón"; -SWWM_LORETXT_KIRINCUMMIES = -"\cxDesignación:\c-\n" -"\cf Zumo de Melocotón Toot Froot™\c-\n" -"\cxFabricante:\c-\n" -"\cf Alimentos Vestal\c-\n" -"\cxClasificación:\c-\n" -"\cf Bebida de Leche con Zumo\c-\n" -"\n" -"¿Intolerancia a la lactosa? ¡No hay problema! Nuestra leche sintética es perfectamente segura para todos, ¡sin efectos secundarios, sin mutaciones alienígenas, ni efectos apocalípticos! Es leche, en un cartón. Toot Froot™, la primera bebida de leche sintética del mundo, con zumo de fruta natural.\n" -"\n" -"\cxNotas de Saya:\c-\n" -"\cfJejeje... el sabor me recuerda tanto a Kirin-kun. Cada sorbo es como... Seguro que tú también lo sabes, entiendes as que se parece el sabor. Sí, ESO. También le ha pillado el gusto, sabes, y ver esa fuerza de succión cada vez que le doy un cartón, y la cara que pone, es tan... ay madre. Que traviesillo~\c-\n" -"\n" -"\cfGracias muchas otra vez más al dios de los Anarukon, por hacerlos así. Deliciosos lechazos con sabor a melocotón...\c-"; +"\cfPor cierto, no le digas nada pero... ¿Ese \"trabajo importante\" con el que está tan ocupado? Resulta que es otro juego que le puse. En serio, han pasado solo un par de semanas y ya casi se ha ventilado toda mi colección. Ah, y olvida lo que dijo de no verte, si es que, aunque tenga que ser a la fuerza, voy a hacer que te vea. En serio quiero ver como reacciona a tus payasadas.\c-"; SWWM_LORETAG_KIRINMANGA = "Emperador Virgen"; SWWM_LORETXT_KIRINMANGA = "\cxTítulo:\c-\n" @@ -1753,12 +2062,12 @@ SWWM_LORETXT_KIRINMANGA = "\n" "\cfSinopsis:\c- Cuando su familia se mudó al Imperio Rubí, Alissa se sintió como pez fuera del agua. Todo era tan diferente a la vida rural a la que estaba acostumbrada, tan nuevo y confuso, pero entonces conoció aun joven apuesto, quien felizmente le ayudaría a adaptarse. A medida que su relación se estrechó, se toparía finalmente con una revelación inesperada: ¡Era ni más ni menos que el mismísimo emperador de esas tierras! Amable, cariñoso, de corazón puro e inocente, era todo lo contrario a ella, pero a pesar de sus diferencias, el amor que sentían el uno por el otro solo siguió aumentando. Un día, habiendo sido invitada al palacio imperial, Alissa sería testigo de un lado del emperador que nunca antes había mostrado a nadie. Y asi, su nueva vida comienza.\n" "\n" -"Un inesperado retorno al manga de \cfSaya Miyamoto\c-, co-líder de \cfAkari Labs\c-, una vez más una historia romántica aderezada de su típica \"sana y divertida perversión\". A pesar de su corta extensión, ha recibido muchos halagos en internet, muchos pidiendo una secuela, o un spin-off centrado en la carismática asistenta del emperador. La propia Saya no ha hecho promesas, pero ha declarado considerar ambas opciones, algún día.\n" +"Un inesperado retorno al manga de \cfSaya Miyamoto\c-, co-líder de \cfAkari Labs\c-, una vez más una historia romántica aderezada con un tono de comedia ecchi. A pesar de su corta extensión, ha recibido muchos halagos en internet, muchos pidiendo una secuela, o un spin-off centrado en la carismática asistenta del emperador. La propia Saya no ha hecho promesas, pero ha declarado considerar ambas opciones, algún día.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfJe, lo escribí todo en unos tres días. Aunque dibujarlo todo, eso fue una semana entera. Sí, no soy tan buena, a ver, aunque no me avergüence de calcar sobre modelos en 3D y tal (que yo hago, al menos).\c-\n" "\n" -"\cfEs obvio en qué está basado todo esto. A ver vamos, tendría que estar ciego de cojones para no darte cuenta. La primera vez que vestimos a Kirin-kun es que... me vino tal explosión de inspiración que TENÍA que escribirlo todo. Oh es que era tan adorable, ¿verdad? Probándole toda clase de cosas monas... Obviamente, no hicimos fotos, eso estaría mal. Pero todo eso está grabado en mi mente (y la tuya).\c-"; +"\cfEs obvio en qué está basado todo esto. A ver vamos, tendría que estar tope de ciego para no darte cuenta. La primera vez que vestimos a Kirin-kun es que... me vino tal explosión de inspiración que TENÍA que escribirlo todo. Oh es que era tan adorable, ¿verdad? Probándole toda clase de cosas monas... Ay señor...\c-"; SWWM_LORETAG_KIRINPLUSH = "Peluche de Kirin"; SWWM_LORETXT_KIRINPLUSH = "\cxDesignación:\c-\n" @@ -1776,13 +2085,26 @@ SWWM_LORETXT_KIRINPLUSH = "\cf¡¡¡¡KIRIN-KUN TAMBIÉN TIENE UNO!!!! ¡¡¡¡SÍÍÍÍÍÍ!!!!\c- \cg♥\c-\n" "\n" "\cfAhhhh... Es tan mono, y puedes oírlo reír cuando lo aprietas, oh dios es tan... ¡absolutamente adorable! Seguro que vas a estar ya lista para darle todos los achuchones en cuanto lo tengas, también. Joder... Kirin-kun... necesito el de verdad ahora mismo, ¡voy a darle un ABRAZO ENORME!\c-"; +SWWM_LORETAG_KIRINSIPPY = "Zumo de Melocotón"; +SWWM_LORETXT_KIRINSIPPY = +"\cxDesignación:\c-\n" +"\cf Zumo de Melocotón Toot Froot™\c-\n" +"\cxFabricante:\c-\n" +"\cf Alimentos Vestal\c-\n" +"\cxClasificación:\c-\n" +"\cf Bebida de Leche con Zumo\c-\n" +"\n" +"¿Intolerancia a la lactosa? ¡No hay problema! Nuestra leche sintética es perfectamente segura para todos, ¡sin efectos secundarios, sin mutaciones alienígenas, ni efectos apocalípticos! Es leche, en un cartón. Toot Froot™, la primera bebida de leche sintética del mundo, con zumo de fruta natural.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfSi hay algo que nos une de verdad, es el amor que tenemos por este zumo, desde que conocimos a Kirin-kun.\c-"; SWWM_LORETXT_KMONN = " \cxNombre Completo:\c-\n" " \cf Eushura Kmonn Jr.\c-\n" " \cxNacionalidad:\c-\n" " \cf Xekkian\c-\n" " \cxFecha de Nacimiento:\c-\n" -" \cf 8731 BC\c-\n" +" \cf 8731 AC\c-\n" " \cxOcupación:\c-\n" " \cf CTO (Kmonn Shuna)\c-\n" " \cf Consejero (Instituto Tecnológico Tach-Engine)\c-\n" @@ -1791,12 +2113,12 @@ SWWM_LORETXT_KMONN = "\n" "\cfEushura Kmonn Jr.\c-, hijo de \cfEushura Kmonn Sr.\c-, es un gran inventor del \cfReino de Xekke\c-, en el planeta de \cfIxxeney\c-. Desde una edad temprana fue preparado para igualar la grandeza de su padre, y no tardó mucho en conseguir realizar su propia fama tras años de trabajo como su ayudante. Su creatividad e imaginación no tenían límites, y hay a su nombre un gran total de 279 logros notables en los campos tanto de la ofensa como defensa militar, lo cual ha ayudado a potenciar las fuerzas del reino, haciendo de ellos uno de los más fiables y reclamados por toda la \cfCoalición X'Animen\c- para tareas de defensa aliada.\n" "\n" -"Entre algunas de sus creaciones más notables, está la \cfRay-Khom, el arma estándar de soldados Xekkian, el \c-Motor Isonómico\cf, el cual hace funcionar los motores de velocidad luz de todas las naves de la coalición y el \c-Revestimiento Elemental\cf, un dispositivo de protección semi-mágico para el uso en entornos extremos.\n" +"Entre algunas de sus creaciones más notables, está la \cfRay-Khom\c-, el arma estándar de soldados Xekkian, el \cfMotor Isonómico\c-, el cual hace funcionar los motores de velocidad luz de todas las naves de la coalición y el \cfRevestimiento Elemental\c-, un dispositivo de protección semi-mágico para el uso en entornos extremos.\n" "\n" -"Junto a su padre, fue uno de los muchos ingenieros que trabajaron en el famoso proyecto del \c-Operador de Metarealidad K79-D\cf. Un arma legendaria cuyo nombre es conocido por muchos, pero ninguno recuerda lo que hacía, ni siquiera aquellos involucrados en su creación.\n" +"Junto a su padre, fue uno de los muchos ingenieros que trabajaron en el famoso proyecto del \cfOperador de Metarealidad K79-D\c-. Un arma legendaria cuyo nombre es conocido por muchos, pero ninguno recuerda lo que hacía, ni siquiera aquellos involucrados en su creación.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfBuah el tío este es VIEJO. Ya sé que la peña esa vive eternamente, pero hostia puta, si es que es más aun que el viejales de Tach-Engine. Vaya diferencia de edad que se tienen ahí (pos sí).\c-\n" +"\cfBuah el tío este es VIEJO. Ya sé que la peña esa vive eternamente, pero hostia puta, si es que es más aun que el viejales de Tach-Engine. A ver, hasta he conocido a su padre, y madre mía... Un súper-vejestorio.\c-\n" "\n" "\cfOh ya, el artículo menciona el K79-D. La cosa más puto extraña esa. Resulta que SÉ lo que pasó con eso, porque me lo contó Maruku-sama, ya que estaba presente, y es un dios y todo ese tema. Al parecer el arma intentó violar directamente la causalidad durante un disparo de prueba, así que un \"mecanismo de auto-conservación\" del universo se disparó a lo bestia y lo borró todo al instante incluyendo toda la info de como se hizo el arma (incluso haciendo borrados de memoria, madre de dios).\c-"; SWWM_LORETAG_KNOWLEDGEBASE = "Biblioteca"; @@ -1829,13 +2151,12 @@ SWWM_LORETXT_LOCKE = "\n" "\n" "\n" -"\n" -"\cfJanus Locke\c- es el hermano menor del difunto \cfDr. Häzel Hoodth\c- conocido por muchos como el \cfDoctor Chiflado de Kereshnovka\c-. Tras oír noticias de la muerte de Häzel en 1987 (especificamente, habiendo recibido dichas noticias 10 años después, mientras estudiaba en el extranjero), en la explosión de una plataforma petrolífera cercana al pueblo mientras realizaba sus experimentos para \"obtener la esencia de la inmortalidad\", Locke cambió por completo. Decidió continuar el trabajo de su hermano, mientras al mismo tiempo aun mantenía su empleo actual como fabricante de juguetes. Sin embargo, la locura en la que cayó se extendería también a eso, con los muchos productos que saldrían con su marca de \cfJuguetes Maravillosos del Dr. Locke\c- volviéndose cada vez más peligrosos, o incluso letales.\n" +"\cfJanus Locke\c- es el hermano menor del difunto \cfDr. Häzel Hoodth\c- conocido por muchos como el \cfDoctor Chiflado de Kereshnovka\c-. Tras oír noticias de la muerte de Häzel en 1987 (específicamente, habiendo recibido dichas noticias 10 años después, mientras estudiaba en el extranjero), en la explosión de una plataforma petrolífera cercana al pueblo mientras realizaba sus experimentos para \"obtener la esencia de la inmortalidad\", Locke cambió por completo. Decidió continuar el trabajo de su hermano, mientras al mismo tiempo aun mantenía su empleo actual como fabricante de juguetes. Sin embargo, la locura en la que cayó se extendería también a eso, con los muchos productos que saldrían con su marca de \cfJuguetes Maravillosos del Dr. Locke\c- volviéndose cada vez más peligrosos, o incluso letales.\n" "\n" "Su locura llegó a su apogeo en 2049, cuando intentó \"conquistar el mundo\". Este evento, sin embargo, falló de una forma tan espectacular que tras él desapareció por completo de la vida pública. Tras marcharse, los muchos juguetes mortíferos que había creado encontraron una nueva vida siendo revendidos como armas en muchas tiendas online.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfPues eso... el tío es un tolai perdido. Toooooodos los tornillos sueltos. Pero sí, como puedes leer ahí, los \"juguetes\" esos suyos, son armas bastante fiables, así que me pillé unas cuantas y te las metí en el arsenal [n.t: menos mal que el desafortunado juego de palabras no se traduce aquí].\c-\n" +"\cfPues eso... el tío es un tolai perdido. Toooooodos los tornillos sueltos. Pero sí, como puedes leer ahí, los \"juguetes\" esos suyos, son armas bastante fiables, así que me pillé unas cuantas y te metí una en el arsenal [n.t: menos mal que el desafortunado juego de palabras no se traduce aquí].\c-\n" "\n" "\cfEso sí, por si acaso, mas te vale andar con MUCHO cuidado con las cosas estas. Quien sabe... la chatarra esta podría fallar de forma catastrófica en cualquier momento, EXACTAMENTE IGUAL QUE SUS PLANES DE DOMINACIÓN MUNDIAL xDDDDDDDDDD\c-"; SWWM_LORETXT_LOVESIGNALSCD = @@ -1899,6 +2220,162 @@ SWWM_LORETXT_LUNA = "\cfEn fin, la vida era buena y tal entonces, con todas esas preciosidades Nukuri viviendo por aquí. Podías ver tantos por la calle, y bueno, también fue entonces cuando conocí a Zana-sama, mejor regalo de Navidad de mi vida, je. En serio que REALMENTE echo de menos esos días, sabes, quedando con ella prácticamente todos los findes y tal. Ahora, la vida es una mierda, y lo único que puedo hacer (a veces) es, mandar y recibir mensajes casi nunca pasándolos por la Embajada Lunar (cuando los estúpidos conejos hacen su trabajo).\c-\n" "\n" "\cfOjalá todo volviese a como era antes. A ver, ya, como nuestro país no firmó la mierda esa del tratado de la Cicatriz Blanca podemos seguir usando sus cosas, pero no pueden venir ellos aquí, ni se nos permite ir allá tampoco. Puta mierda todo.\c-"; +SWWM_LORETXT_MADCAT = +" \cxNombre Completo:\c-\n" +" \cf Kris \"MADCAT\" Danae\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Alemana\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2124-06-07\c-\n" +" \cxOcupación:\c-\n" +" \cf Fundadora, Programadora Jefe (MADCAT Studio)\c-\n" +" \cf Ingeniera de Software Senior (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @danae_kris\c-\n" +"\n" +"\cfKris Danae\c- nació en 2124, como hermana menor de \cfStefan Danae\c-. No se sabe mucho de sus padres, pero ha comentado que son científicos de Bavaria, Alemania, involucrados en investigación genética. De esto, se puede deducir que tanto ella como su hermano se encuentran entre las muchas \cfGentes Gato de Ingeniería Genética\c- documentadas que han ido apareciendo desde los años 2090.\n" +"\n" +"A diferencia de su poco hábil hermano, Kris posee una alta inteligencia, y sobresale en tareas relacionadas con ordenadores. Tiene un don para la programación, lo cual le ha permitido ganar fama publicando juegos retro a través de la marca de \cfMADCAT Studio\c-. El simple, pero adictivo \cfCat Catcher\c- ha sido instalado en más de 10 mil millones de dispositivos móviles y de sobremesa desde su salida en 2140. Ese mismo año, fue abordada por \cfHamsick Co-op\c- para co-desarrollar el resurgimiento de la popular serie \cfRed Roger\c-, publicándose en su sexagésimo aniversario, dos años después.\n" +"\n" +"Su popularidad finalmente atrajo la atención de \cfSaya Miyamoto\c-, de \cfAkari Labs\c-, quien en 2143 le ofreció una posición como ingeniera de software senior, asistiendo en varios aspectos de diseño de interfaces. Adicionalmente, se le daría luego la tarea de crear juegos con temática de \cfDemolicionista\c- para promover el programa (sospechosamente al mismo tiempo que el shooter en primera persona \cfDoom\c-, basado en el muy famoso marine de la \cfUAC\c-, fue anunciado).\n" +"\n" +"No se sabe mucho de la vida personal de Kris. Vive con su hermano en una pequeña casa en Aoshima, Japón, rodeados de una multitud de gatos callejeros hacia los que sienten afinidad. En cuanto a relaciones, se ha dado a conocer que Kris está saliendo con el \cfOni Rojo\c-, \cfIbuki Miyamoto\c-, a quien visita cada fin de semana. A pesar de su nueva posición en Akari Labs, sigue desarrollando títulos independientes.\n" +"\n" +"Cuerpo de trabajo:\n" +"\n" +"- MADCAT Minigames (2135)\n" +"- Stray Cat (2137)\n" +"- Stray Cat 2 (2137)\n" +"- Bandit Fang (2138)\n" +"- Nekoprint Solitaire (2138)\n" +"- Stray Cat 3: Catastrophe (2139)\n" +"- Cat Catcher (2140)\n" +"- Stray Cat Collection (2141)\n" +"- Red Roger Returns (2142, con Hamsick Co-op)\n" +"- Nekopocalypse (2143)\n" +"- Nekopocalypse EX (2144)\n" +"- Red Roger in Capital Struggle (2145, con Hamsick Co-op)\n" +"- DemolitionOS (2148, con Saya y Taro Miyamoto)\n" +"- Demo Land Adventure (2148)\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\n" +"\cfLa buena de Kris-san. Es que una no se cansa de lo buena que es, vaya que sí. Ya la conoces, en cuanto le surge una idea, tiene que convertirla en un juego, es que es así. Y la mayor parte de sus proyectos obviamente van de gatos. Nyaa y tal.\c-\n" +"\n" +"\cfPor cierto, ¿todas las interfaces visuales que ves por tus ojos? Las ha diseñado ella. Bastante simples, sí, pero funcionan de maravilla. Sabía que sería capaz de trabajar perfectamente para una resolución objetivo de 640x400. Ya me conoces, siempre seré partidaria de la superioridad de 16:10. A la porra el ultrawide, esa estúpida moda no se ha muerto ni en este siglo.\c-\n" +"\n" +"\cfUh, y que más queda por decir... Las dos casi pensamos igual a veces, lo cual es gracioso. Hay gente que dice que hasta nos PARECEMOS, pero sinceramente, yo no lo veo.\c-"; +SWWM_LORETXT_MADCAT2 = +" \cxNombre Completo:\c-\n" +" \cf Kris \"MADCAT\" Danae\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Alemana\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2124-06-07\c-\n" +" \cxOcupación:\c-\n" +" \cf Fundadora, Programadora Jefe (MADCAT Studio)\c-\n" +" \cf Ingeniera de Software Senior (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @danae_kris\c-\n" +"\n" +"\cfKris Danae\c- nació en 2124, como hermana menor de \cfStefan Danae\c-. No se sabe mucho de sus padres, pero ha comentado que son científicos de Bavaria, Alemania, involucrados en investigación genética. De esto, se puede deducir que tanto ella como su hermano se encuentran entre las muchas \cfGentes Gato de Ingeniería Genética\c- documentadas que han ido apareciendo desde los años 2090.\n" +"\n" +"A diferencia de su poco hábil hermano, Kris posee una alta inteligencia, y sobresale en tareas relacionadas con ordenadores. Tiene un don para la programación, lo cual le ha permitido ganar fama publicando juegos retro a través de la marca de \cfMADCAT Studio\c-. El simple, pero adictivo \cfCat Catcher\c- ha sido instalado en más de 10 mil millones de dispositivos móviles y de sobremesa desde su salida en 2140. Ese mismo año, fue abordada por \cfHamsick Co-op\c- para co-desarrollar el resurgimiento de la popular serie \cfRed Roger\c-, publicándose en su sexagésimo aniversario, dos años después.\n" +"\n" +"Su popularidad finalmente atrajo la atención de \cfSaya Miyamoto\c-, de \cfAkari Labs\c-, quien en 2143 le ofreció una posición como ingeniera de software senior, asistiendo en varios aspectos de diseño de interfaces. Adicionalmente, se le daría luego la tarea de crear juegos con temática de \cfDemolicionista\c- para promover el programa (sospechosamente al mismo tiempo que el shooter en primera persona \cfDoom\c-, basado en el muy famoso marine de la \cfUAC\c-, fue anunciado).\n" +"\n" +"No se sabe mucho de la vida personal de Kris. Vive con su hermano en una pequeña casa en Aoshima, Japón, rodeados de una multitud de gatos callejeros hacia los que sienten afinidad. En cuanto a relaciones, se ha dado a conocer que Kris está saliendo con el \cfOni Rojo\c-, \cfIbuki Miyamoto\c-, a quien visita cada fin de semana. A pesar de su nueva posición en Akari Labs, sigue desarrollando títulos independientes.\n" +"\n" +"Cuerpo de trabajo:\n" +"\n" +"- MADCAT Minigames (2135)\n" +"- Stray Cat (2137)\n" +"- Stray Cat 2 (2137)\n" +"- Bandit Fang (2138)\n" +"- Nekoprint Solitaire (2138)\n" +"- Stray Cat 3: Catastrophe (2139)\n" +"- Cat Catcher (2140)\n" +"- Stray Cat Collection (2141)\n" +"- Red Roger Returns (2142, con Hamsick Co-op)\n" +"- Nekopocalypse (2143)\n" +"- Nekopocalypse EX (2144)\n" +"- Red Roger in Capital Struggle (2145, con Hamsick Co-op)\n" +"- DemolitionOS (2148, con Saya y Taro Miyamoto)\n" +"- Demo Land Adventure (2148)\n" +"- Felix Arcana (2150)\n" +"- Red Roger and the Demon Deed (2151, con Hamsick Co-op)\n" +"- Felix Arcana 2 (2153)\n" +"- Felix Arcana 2: Sky Crown (2154)\n" +"- Felix Arcana 2: Blade Soul (2154)\n" +"- Cat Catcher Revolution (2158)\n" +"- Felix Arcana: Radiant Edition (2160)\n" +"- Red Roger vs. Blue Baron (2161, con Hamsick Co-op)\n" +"- Felix Arcana 3 (2163)\n" +"- Interstellar Demolitionist (2171)\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\n" +"\cfLa buena de Kris-san. Es que una no se cansa de lo buena que es, vaya que sí. Ya la conoces, en cuanto le surge una idea, tiene que convertirla en un juego, es que es así. Y la mayor parte de sus proyectos obviamente van de gatos. Nyaa y tal.\c-\n" +"\n" +"\cfPor cierto, ¿todas las interfaces visuales que ves por tus ojos? Las ha diseñado ella. Bastante simples, sí, pero funcionan de maravilla. Sabía que sería capaz de trabajar perfectamente para una resolución objetivo de 640x400. Ya me conoces, siempre seré partidaria de la superioridad de 16:10. A la porra el ultrawide, esa estúpida moda no se ha muerto ni en este siglo.\c-\n" +"\n" +"\cfUh, y que más queda por decir... Las dos casi pensamos igual a veces, lo cual es gracioso. Hay gente que dice que hasta nos PARECEMOS, pero sinceramente, yo no lo veo.\c-"; +SWWM_LORETXT_MADCAT3 = +" \cxNombre Completo:\c-\n" +" \cf Kris \"MADCAT\" Danae\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Alemana\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2124-06-07\c-\n" +" \cxOcupación:\c-\n" +" \cf Fundadora, Programadora Jefe (MADCAT Studio)\c-\n" +" \cf Ingeniera de Software Senior (Akari Labs)\c-\n" +" \cxTwitter:\c-\n" +" \cf @danae_kris\c-\n" +"\n" +"\cfKris Danae\c- nació en 2124, como hermana menor de \cfStefan Danae\c-. No se sabe mucho de sus padres, pero ha comentado que son científicos de Bavaria, Alemania, involucrados en investigación genética. De esto, se puede deducir que tanto ella como su hermano se encuentran entre las muchas \cfGentes Gato de Ingeniería Genética\c- documentadas que han ido apareciendo desde los años 2090.\n" +"\n" +"A diferencia de su poco hábil hermano, Kris posee una alta inteligencia, y sobresale en tareas relacionadas con ordenadores. Tiene un don para la programación, lo cual le ha permitido ganar fama publicando juegos retro a través de la marca de \cfMADCAT Studio\c-. El simple, pero adictivo \cfCat Catcher\c- ha sido instalado en más de 10 mil millones de dispositivos móviles y de sobremesa desde su salida en 2140. Ese mismo año, fue abordada por \cfHamsick Co-op\c- para co-desarrollar el resurgimiento de la popular serie \cfRed Roger\c-, publicándose en su sexagésimo aniversario, dos años después.\n" +"\n" +"Su popularidad finalmente atrajo la atención de \cfSaya Miyamoto\c-, de \cfAkari Labs\c-, quien en 2143 le ofreció una posición como ingeniera de software senior, asistiendo en varios aspectos de diseño de interfaces. Adicionalmente, se le daría luego la tarea de crear juegos con temática de \cfDemolicionista\c- para promover el programa (sospechosamente al mismo tiempo que el shooter en primera persona \cfDoom\c-, basado en el muy famoso marine de la \cfUAC\c-, fue anunciado).\n" +"\n" +"No se sabe mucho de la vida personal de Kris. Vive con su hermano en una pequeña casa en Aoshima, Japón, rodeados de una multitud de gatos callejeros hacia los que sienten afinidad. En cuanto a relaciones, se ha dado a conocer que Kris está saliendo con el \cfOni Rojo\c-, \cfIbuki Miyamoto\c-, a quien visita cada fin de semana. A pesar de su nueva posición en Akari Labs, sigue desarrollando títulos independientes.\n" +"\n" +"Cuerpo de trabajo:\n" +"\n" +"- MADCAT Minigames (2135)\n" +"- Stray Cat (2137)\n" +"- Stray Cat 2 (2137)\n" +"- Bandit Fang (2138)\n" +"- Nekoprint Solitaire (2138)\n" +"- Stray Cat 3: Catastrophe (2139)\n" +"- Cat Catcher (2140)\n" +"- Stray Cat Collection (2141)\n" +"- Red Roger Returns (2142, con Hamsick Co-op)\n" +"- Nekopocalypse (2143)\n" +"- Nekopocalypse EX (2144)\n" +"- Red Roger in Capital Struggle (2145, con Hamsick Co-op)\n" +"- DemolitionOS (2148, con Saya y Taro Miyamoto)\n" +"- Demo Land Adventure (2148)\n" +"- Felix Arcana (2150)\n" +"- Red Roger and the Demon Deed (2151, con Hamsick Co-op)\n" +"- Felix Arcana 2 (2153)\n" +"- Felix Arcana 2: Sky Crown (2154)\n" +"- Felix Arcana 2: Blade Soul (2154)\n" +"- Cat Catcher Revolution (2158)\n" +"- Felix Arcana: Radiant Edition (2160)\n" +"- Red Roger vs. Blue Baron (2161, con Hamsick Co-op)\n" +"- Felix Arcana 3 (2163)\n" +"- Interstellar Demolitionist (2171)\n" +"- Demolition Quest (2171)\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\n" +"\cfLa buena de Kris-san. Es que una no se cansa de lo buena que es, vaya que sí. Ya la conoces, en cuanto le surge una idea, tiene que convertirla en un juego, es que es así. Y la mayor parte de sus proyectos obviamente van de gatos. Nyaa y tal.\c-\n" +"\n" +"\cfPor cierto, ¿todas las interfaces visuales que ves por tus ojos? Las ha diseñado ella. Bastante simples, sí, pero funcionan de maravilla. Sabía que sería capaz de trabajar perfectamente para una resolución objetivo de 640x400. Ya me conoces, siempre seré partidaria de la superioridad de 16:10. A la porra el ultrawide, esa estúpida moda no se ha muerto ni en este siglo.\c-\n" +"\n" +"\cfUh, y que más queda por decir... Las dos casi pensamos igual a veces, lo cual es gracioso. Hay gente que dice que hasta nos PARECEMOS, pero sinceramente, yo no lo veo.\c-"; SWWM_LORETXT_MAIDBOT = " \cxNombre Completo:\c-\n" " \cf Meido Miyamoto\c-\n" @@ -1929,19 +2406,19 @@ SWWM_LORETXT_MAIDBOT = "\n" "\cfMe encanta que las dos os llevéis tan bien, como hermanitas. Las robotitas cuquis deben permanecer unidas, vaya que sí.\c-\n" "\n" -"\cfAh, Zana-sama, bendita seas tú y tus skills tope de guays, haciendo realidad mis sueños. Recuerdo que siempre soñaba que Meido-chan se volviera consciente y me confesara su amor, y pensaba que eso era TOTALMENTE imposible. Ja... tonta de mí.\c-\n" -"\n" -"\cfJeje... Desde luego me alegro mucho de hacerla \"completa\", por cierto... Mejor decisión de mi vida. Deja que te diga, cuando hacemos \"cositas\" las dos... es como estar en el cielo~\c- \cg♥\c-"; +"\cfAh, Zana-sama, bendita seas tú y tus skills tope de guays, haciendo realidad mis sueños. Recuerdo que siempre soñaba que Meido-chan se volviera consciente y me confesara su amor, y pensaba que eso era TOTALMENTE imposible. Ja... tonta de mí.\c-"; SWWM_LORETXT_MAIDBOT2 = -"\cxNombre Completo:\c-\n" -"\cf Meido Miyamoto\c-\n" -"\cf Meidobot (nombre artístico)\c-\n" -"\cxNacionalidad:\c-\n" -"\cf Japonesa\c-\n" -"\cxFecha de Nacimiento:\c-\n" -"\cf 2017-07-07\c-\n" -"\cxTwitter:\c-\n" -"\cf @meidobot\c-\n" +" \cxNombre Completo:\c-\n" +" \cf Meido Miyamoto\c-\n" +" \cf Meidobot (nombre artístico)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2017-07-07\c-\n" +" \cxOcupación:\c-\n" +" \cf Idol\c-\n" +" \cxTwitter:\c-\n" +" \cf @meidobot\c-\n" "\n" "Siendo el primer proyecto de IA de \cfSaya Miyamoto\c-, \cfMeido\c- inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Meido gradualmente parecía más \"real\", nunca era suficiente. Al final, era \"śolo una máquina\".\n" "\n" @@ -1964,9 +2441,112 @@ SWWM_LORETXT_MAIDBOT2 = "\n" "\cfAh, Zana-sama, bendita seas tú y tus skills tope de guays, haciendo realidad mis sueños. Recuerdo que siempre soñaba que Meido-chan se volviera consciente y me confesara su amor, y pensaba que eso era TOTALMENTE imposible. Ja... tonta de mí.\c-\n" "\n" -"\cfJeje... Desde luego me alegro mucho de hacerla \"completa\", por cierto... Mejor decisión de mi vida. Deja que te diga, cuando hacemos \"cositas\" las dos... es como estar en el cielo~\c- \cg♥\c-\n" -"\n" "\cfActualización: Por cierto, me alegro de que Kirin-kun consiguiera que volviese a cantar. Por supuesto, es que ¿como podría resistirse a sus encantos? ¿verdad?\c-"; +SWWM_LORETXT_MARISA = +" \cxNombre Completo:\c-\n" +" \cf Marisa Azanth\c-\n" +" \cf Hija de Ceniza (apodo)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1989-10-04\c-\n" +" \cxOcupación:\c-\n" +" \cf Mercenaria (Cazadora de Demonios)\c-\n" +" \cxTwitter\c-\n" +" \cf @marisa_ashen\c-\n" +"\n" +"Nacida en \cfSankaideriha\c- de la unión de la \cfDemoníaca\c- parca \cfAkari Shiroko\c- y la piromante nómada \cfAnarukon\c- \cfSarkha Azanth\c-, \cfMarisa\c- es el resultado de una relación blasfema entre miembros de dos civilizaciones en conflicto, las de Demonios y Anarukon. A pesar de sus diferencias y la clara pertenencia a dos facciones en guerra, el amor entre sus padres es innegable, demostrando que ambos bandos pueden poner sus diferencias aparte y disfrutar de una fructuosa vida juntos.\n" +"\n" +"Habiendo sido criada por tal peculiar pareja de proscritos, Marisa carece de ciertas aptitudes sociales, pero destaca en otras habilidades, tales como la magia y el manejo de la espada. Tras alcanzar la edad adulta, comenzó a hacer encargos como mercenaria, asesinando demonios errantes y otras bestias entre varios lugares. Cerca del 2084, uno de estos encargos la trajo a la \cfTierra\c-. Específicamente, a la zona de exclusión de \cfWashington DC\c-. Al ser ajena a los eventos de la \cfCicatriz Blanca\c-, se encontró visiblemente confusa ante el estado arruinado de la ciudad, pero aun así, siguió buscando su objetivo. Para su sorpresa, sin embargo, alguien ya le había dado muerte, nadie más que el \cfOni Rojo\c-, \cfIbuki Miyamoto\c-.\n" +"\n" +"Las dos pasaron un tiempo trabajando juntas, y surgió una peculiar amistad. Desafortunadamente, cuando llegó el momento de volver a casa, se dio cuenta de que el portal que había usado solo podía cruzarlo una persona. Ibuki la dejó marchar, con la promesa de que ciertamente se volverían a encontrar cuando acabara todo. Y así, casi 10 años después, tras el retorno del Oni Rojo a \cfJapón\c-, su esperada reunión tuvo lugar. Marisa se había asentado en su propia casa en \cfKasukabe\c-, y planeó que Ibuki se mudara a vivir con ella también. Por el camino, su espaciosa casa compartida se volvería aparentemente más apretada con la introducción de varios otros inquilinos, junto con las visitas ocasionales del novio de Marisa, un explorador \cfOdmorian\c- llamado \cfCinnamon Valentine\c-.\n" +"\n" +"Hasta fecha de hoy, Marisa continúa cazando demonios como ocupación principal, así que, como es de esperar, la actual invasión la ha mantenido a ella y muchos otros ocupados. Sin embargo, al conocer la misión de la \cfDemolicionista\c-, se lo está \"tomando un poco con calma\". Al momento de escribir este artículo, fue vista por última vez dirigiéndose a \cfNagoya\c-, uno de los principales puntos calientes de invasión en Japón, gracias en parte a la existencia de varias instalaciones de la \cfUAC\c- allí.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfAh, esta si que es una tía que no has conocido. A ver, con el chollo que tiene que básicamente tiene que estar ahí fuera partiendo la pana a diario. Ibuki me dijo que llegó un momento que estuvo casi a punto de rendirse, pero cuando le contó lo de tu misión, se vino arriba. Y claro, tanto ella como Ibuki andan por ahí ahora dándole al tema. Me apuesto a que han convertido todo esto en una competición ahora que formas parte de todo este asunto. Típico de ellas.\c-\n" +"\n" +"\cf¿Y que más puedo decir sobre ella? Bueno, es de las que hablan poco, la verdad. Menos hablar, más actuar, ya sabes. Deja que su espada lo diga todo, más o menos. Y madre, cacho espada. Es ENORME, la cosa que lleva. He oído que tiene otra más grande en reserva, una especie de premio por ser súper-fuerte o algo así. Que la puta cosa es un gigantesco trozo de cacho de puro metal, muy... Tipo Guts.\c-\n" +"\n" +"\cfEn serio espero que la puedas conocer algún día, seguro que te va a encontrar adorable. Y hablando de cosas adorables, conozco su punto débil: Carpincho. Sí, le pones uno delante y es que se derrite de cuquismo. Un pequeño truco que aprendí de su novio.\c-\n" +"\n" +"\cfOh, ¿y el novio? Bueno, un tío muy majo. No hablamos mucho, pero ha servido como mi fuente principal para aprender de la cultura Odmorian. Me ha despejado algunas dudas y malas interpretaciones bastante rápido, y todo siendo muy amable, también. Su nombre también es mono. Cinnamon, jeje. Mari-san lo llama Cinnabun, lo cual es más adorable. Pero que no te engañe, a pesar de tanto cuquismo, también es un duro y fuerte guerrero como ella, un tipo duro de verdad, hasta tiene un rifle ENORME y todo.\c-\n" +"\n" +"\cfEs que VAMOS, necesitas conocerlos, en serio.\c-"; +SWWM_LORETXT_MARISA2 = +" \cxNombre Completo:\c-\n" +" \cf Marisa Azanth\c-\n" +" \cf Hija de Ceniza (apodo)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1989-10-04\c-\n" +" \cxOcupación:\c-\n" +" \cf Mercenaria (Cazadora de Demonios)\c-\n" +" \cxTwitter\c-\n" +" \cf @marisa_ashen\c-\n" +"\n" +"Nacida en \cfSankaideriha\c- de la unión de la \cfDemoníaca\c- parca \cfAkari Shiroko\c- y la piromante nómada \cfAnarukon\c- \cfSarkha Azanth\c-, \cfMarisa\c- es el resultado de una relación blasfema entre miembros de dos civilizaciones en conflicto, las de Demonios y Anarukon. A pesar de sus diferencias y la clara pertenencia a dos facciones en guerra, el amor entre sus padres es innegable, demostrando que ambos bandos pueden poner sus diferencias aparte y disfrutar de una fructuosa vida juntos.\n" +"\n" +"Habiendo sido criada por tal peculiar pareja de proscritos, Marisa carece de ciertas aptitudes sociales, pero destaca en otras habilidades, tales como la magia y el manejo de la espada. Tras alcanzar la edad adulta, comenzó a hacer encargos como mercenaria, asesinando demonios errantes y otras bestias entre varios lugares. Cerca del 2084, uno de estos encargos la trajo a la \cfTierra\c-. Específicamente, a la zona de exclusión de \cfWashington DC\c-. Al ser ajena a los eventos de la \cfCicatriz Blanca\c-, se encontró visiblemente confusa ante el estado arruinado de la ciudad, pero aun así, siguió buscando su objetivo. Para su sorpresa, sin embargo, alguien ya le había dado muerte, nadie más que el \cfOni Rojo\c-, \cfIbuki Miyamoto\c-.\n" +"\n" +"Las dos pasaron un tiempo trabajando juntas, y surgió una peculiar amistad. Desafortunadamente, cuando llegó el momento de volver a casa, se dio cuenta de que el portal que había usado solo podía cruzarlo una persona. Ibuki la dejó marchar, con la promesa de que ciertamente se volverían a encontrar cuando acabara todo. Y así, casi 10 años después, tras el retorno del Oni Rojo a \cfJapón\c-, su esperada reunión tuvo lugar. Marisa se había asentado en su propia casa en \cfKasukabe\c-, y planeó que Ibuki se mudara a vivir con ella también. Por el camino, su espaciosa casa compartida se volvería aparentemente más apretada con la introducción de varios otros inquilinos, junto con las visitas ocasionales del novio de Marisa, un explorador \cfOdmorian\c- llamado \cfCinnamon Valentine\c-.\n" +"\n" +"Su participación en la \cfInvasión Demoníaca\c- de 2148 fue admirable, con un recuento de bajas enemigas de decenas de miles, y con un especial premio compartido con Ibuki Miyamoto por el eficiente trabajo de limpieza de las instalaciones infestadas de demonios de la \cfUAC\c- en \cfNagoya\c-.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfAh, esta si que es una tía que no has conocido. A ver, con el chollo que tiene que básicamente tiene que estar ahí fuera partiendo la pana a diario. Ibuki me dijo que llegó un momento que estuvo casi a punto de rendirse, pero cuando le contó lo de tu misión, se vino arriba. Y claro, tanto ella como Ibuki andan por ahí ahora dándole al tema. Me apuesto a que han convertido todo esto en una competición ahora que formas parte de todo este asunto. Típico de ellas.\c-\n" +"\n" +"\cf¿Y que más puedo decir sobre ella? Bueno, es de las que hablan poco, la verdad. Menos hablar, más actuar, ya sabes. Deja que su espada lo diga todo, más o menos. Y madre, cacho espada. Es ENORME, la cosa que lleva. He oído que tiene otra más grande en reserva, una especie de premio por ser súper-fuerte o algo así. Que la puta cosa es un gigantesco trozo de cacho de puro metal, muy... Tipo Guts.\c-\n" +"\n" +"\cfEn serio espero que la puedas conocer algún día, seguro que te va a encontrar adorable. Y hablando de cosas adorables, conozco su punto débil: Carpincho. Sí, le pones uno delante y es que se derrite de cuquismo. Un pequeño truco que aprendí de su novio.\c-\n" +"\n" +"\cfOh, ¿y el novio? Bueno, un tío muy majo. No hablamos mucho, pero ha servido como mi fuente principal para aprender de la cultura Odmorian. Me ha despejado algunas dudas y malas interpretaciones bastante rápido, y todo siendo muy amable, también. Su nombre también es mono. Cinnamon, jeje. Mari-san lo llama Cinnabun, lo cual es más adorable. Pero que no te engañe, a pesar de tanto cuquismo, también es un duro y fuerte guerrero como ella, un tipo duro de verdad, hasta tiene un rifle ENORME y todo.\c-\n" +"\n" +"\cfEs que VAMOS, necesitas conocerlos, en serio.\c-\n" +"\n" +"\cfActualización: Ay madre, menudo encuentro. Sabes, es que lo he dicho muchas veces, ojalá pudiera haber sacado una foto de la cara que pusiste cuando viste la pistola que tiene. Sí, debería haberte dicho que no solo le van las espadas enormes, también las armas enormes. Pero oye, también te admira, y eso mola mucho. Joder, apuesto a que en cuanto te mandemos a la misión en Parthoris, también va a querer meterse luego. Es que ella es muy así.\c-\n" +"\n" +"\cfEspero que no cause muchos problemas, porque también planeo enviar a Ibuki para hacer un reconocimiento de algunos sitios.\c-"; +SWWM_LORETXT_MARISA3 = +" \cxNombre Completo:\c-\n" +" \cf Marisa Azanth\c-\n" +" \cf Hija de Ceniza (apodo)\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1989-10-04\c-\n" +" \cxOcupación:\c-\n" +" \cf Mercenaria (Cazadora de Demonios)\c-\n" +" \cxTwitter\c-\n" +" \cf @marisa_ashen\c-\n" +"\n" +"Nacida en \cfSankaideriha\c- de la unión de la \cfDemoníaca\c- parca \cfAkari Shiroko\c- y la piromante nómada \cfAnarukon\c- \cfSarkha Azanth\c-, \cfMarisa\c- es el resultado de una relación blasfema entre miembros de dos civilizaciones en conflicto, las de Demonios y Anarukon. A pesar de sus diferencias y la clara pertenencia a dos facciones en guerra, el amor entre sus padres es innegable, demostrando que ambos bandos pueden poner sus diferencias aparte y disfrutar de una fructuosa vida juntos.\n" +"\n" +"Habiendo sido criada por tal peculiar pareja de proscritos, Marisa carece de ciertas aptitudes sociales, pero destaca en otras habilidades, tales como la magia y el manejo de la espada. Tras alcanzar la edad adulta, comenzó a hacer encargos como mercenaria, asesinando demonios errantes y otras bestias entre varios lugares. Cerca del 2084, uno de estos encargos la trajo a la \cfTierra\c-. Específicamente, a la zona de exclusión de \cfWashington DC\c-. Al ser ajena a los eventos de la \cfCicatriz Blanca\c-, se encontró visiblemente confusa ante el estado arruinado de la ciudad, pero aun así, siguió buscando su objetivo. Para su sorpresa, sin embargo, alguien ya le había dado muerte, nadie más que el \cfOni Rojo\c-, \cfIbuki Miyamoto\c-.\n" +"\n" +"Las dos pasaron un tiempo trabajando juntas, y surgió una peculiar amistad. Desafortunadamente, cuando llegó el momento de volver a casa, se dio cuenta de que el portal que había usado solo podía cruzarlo una persona. Ibuki la dejó marchar, con la promesa de que ciertamente se volverían a encontrar cuando acabara todo. Y así, casi 10 años después, tras el retorno del Oni Rojo a \cfJapón\c-, su esperada reunión tuvo lugar. Marisa se había asentado en su propia casa en \cfKasukabe\c-, y planeó que Ibuki se mudara a vivir con ella también. Por el camino, su espaciosa casa compartida se volvería aparentemente más apretada con la introducción de varios otros inquilinos, junto con las visitas ocasionales del novio de Marisa, un explorador \cfOdmorian\c- llamado \cfCinnamon Valentine\c-.\n" +"\n" +"Su participación en la \cfInvasión Demoníaca\c- de 2148 fue admirable, con un recuento de bajas enemigas de decenas de miles, y con un especial premio compartido con Ibuki Miyamoto por el eficiente trabajo de limpieza de las instalaciones infestadas de demonios de la \cfUAC\c- en \cfNagoya\c-.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfAh, esta si que es una tía que no has conocido. A ver, con el chollo que tiene que básicamente tiene que estar ahí fuera partiendo la pana a diario. Ibuki me dijo que llegó un momento que estuvo casi a punto de rendirse, pero cuando le contó lo de tu misión, se vino arriba. Y claro, tanto ella como Ibuki andan por ahí ahora dándole al tema. Me apuesto a que han convertido todo esto en una competición ahora que formas parte de todo este asunto. Típico de ellas.\c-\n" +"\n" +"\cf¿Y que más puedo decir sobre ella? Bueno, es de las que hablan poco, la verdad. Menos hablar, más actuar, ya sabes. Deja que su espada lo diga todo, más o menos. Y madre, cacho espada. Es ENORME, la cosa que lleva. He oído que tiene otra más grande en reserva, una especie de premio por ser súper-fuerte o algo así. Que la puta cosa es un gigantesco trozo de cacho de puro metal, muy... Tipo Guts.\c-\n" +"\n" +"\cfEn serio espero que la puedas conocer algún día, seguro que te va a encontrar adorable. Y hablando de cosas adorables, conozco su punto débil: Carpincho. Sí, le pones uno delante y es que se derrite de cuquismo. Un pequeño truco que aprendí de su novio.\c-\n" +"\n" +"\cfOh, ¿y el novio? Bueno, un tío muy majo. No hablamos mucho, pero ha servido como mi fuente principal para aprender de la cultura Odmorian. Me ha despejado algunas dudas y malas interpretaciones bastante rápido, y todo siendo muy amable, también. Su nombre también es mono. Cinnamon, jeje. Mari-san lo llama Cinnabun, lo cual es más adorable. Pero que no te engañe, a pesar de tanto cuquismo, también es un duro y fuerte guerrero como ella, un tipo duro de verdad, hasta tiene un rifle ENORME y todo.\c-\n" +"\n" +"\cfEs que VAMOS, necesitas conocerlos, en serio.\c-\n" +"\n" +"\cfActualización: Ay madre, menudo encuentro. Sabes, es que lo he dicho muchas veces, ojalá pudiera haber sacado una foto de la cara que pusiste cuando viste la pistola que tiene. Sí, debería haberte dicho que no solo le van las espadas enormes, también las armas enormes. Pero oye, también te admira, y eso mola mucho. Joder, apuesto a que en cuanto te mandemos a la misión en Parthoris, también va a querer meterse luego. Es que ella es muy así.\c-\n" +"\n" +"\cfEspero que no cause muchos problemas, porque también planeo enviar a Ibuki para hacer un reconocimiento de algunos sitios.\c-\n" +"\n" +"\cfActualización 2: No me puedo creer que no hayamos conocido a sus madres hasta nuestra boda con Kirin. Lo has visto, todos lo hemos visto, la tal Sarkha está como una regadera, ya veo a quien sale, al menos en parte, porque su otra madre es sorprendentemente la mujer más generosa y agradable que he conocido. Vamos, incluso con todo el tema ese de ser una asesina y tal... Y lueeeego, también he aprendido que desciende de realeza del Infierno. No me extraña que los demonios le tengan tanto miedo, tiene bastante sentido.\c-\n" +"\n" +"\cfJuro que entre ella y sus dos madres, parecen todas personajes salidos de Dark Souls.\c-"; SWWM_LORETAG_MILKBREADS = "Panes de Leche"; SWWM_LORETXT_MILKBREADS = "\cxDesignación:\c-\n" @@ -1976,18 +2556,18 @@ SWWM_LORETXT_MILKBREADS = "\cxClasificación:\c-\n" "\cf Postre\c-\n" "\n" -"Una delicia de la cocina Akkouxhei, los \cfPanes de Leche\c- así llamados comúnmente por los lugareños son un postre suave y dulce comido típicamente durante eventos especiales, como cumpleaños o bodas. Blandos y esponjosos bollitos de pan dulce realzados con la savia refinada de los árboles \cfYranakha\c- nativos y mezclados con leche condensada de \cfBestia Gris\c-, se derriten en la boca con cada mordisco, volviéndose más y más dulces.\n" +"Una delicia de la cocina Akkouxhei, los \cfPanes de Leche\c- así llamados comúnmente por los lugareños son un postre suave y dulce, similar al brioche, el cual se consume típicamente durante eventos especiales, como cumpleaños o bodas. Blandos y esponjosos bollitos de pan dulce realzados con la savia refinada de los árboles \cfYranakha\c- nativos y mezclados con leche condensada de \cfBestia Gris\c-, se derriten en la boca con cada mordisco, volviéndose más y más dulces.\n" "\n" -"Aunque no es generalmente un problema para los nativos \cfAnarukon\c-, el obsceno contenido de azucar de estos está confirmado como peligroso para mortales a menos que sean consumidos en moderación, potencialmente resultando en el desarrollo de enfermedades cardiovasculares o incluso la muerte.\n" +"Aunque no es generalmente un problema para los nativos \cfAnarukon\c-, el obsceno contenido de azúcar de estos está confirmado como peligroso para mortales a menos que sean consumidos en moderación, potencialmente resultando en el desarrollo de enfermedades cardiovasculares o incluso la muerte.\n" "\n" "Aun así, son muy populares por todo el mundo. Muchos visitan el \cfImperio Sykhai\c- solo para tener la oportunidad de comerlos, y puede que se queden para más. Se dice incluso que pueden ser uno de los secretos tras el rápido crecimiento de la nación.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfSabes, enterarme de que la leche viene de ESAS COSAS no ha cambiado en absoluto mi opinión. Esta cosa es celestial, es lo más delicioso jamás creado, es tan dulce que me moriría por ellos. A ver, casi que pasó eso justo cuando tuve una sobredosis de ellos (madre de dios que vergüenza). Sí, no me extraña que la palmase mucho cuando tenía más azúcar que sangre en el cuerpo. Kirin-kun dijo que incluso oyó explotar mi corazón, pero apuesto a que solo estaba siendo dramático, eso no puede haber pasado.\c-\n" "\n" -"\cfOh ya, y resulta que hay un mito por ahí de que si comes suficientes de estos tus tetas se ponen enormes. Pues mira que en serio no creo que sea eso posible, por supuesto que no. ¿Que clase de idiota se metería una sobredosis de estas cosas a propósito para que le crezcan unas domingas gigantes?\c-"; -SWWM_LORETAG_MISTERGUN = "Rifle Mortal"; -SWWM_LORETXT_MISTERGUN = +"\cfOh ya, y resulta que hay un mito por ahí de que si comes suficientes de estos tus tetas se ponen enormes. Pues mira que en serio no creo que sea eso posible, por supuesto que no. ¿Que clase de idiota se metería una sobredosis de estas cosas a propósito?\c-"; +SWWM_LORETAG_MISTERRIFLE = "Rifle Mortal"; +SWWM_LORETXT_MISTERRIFLE = "\cxDesignación:\c-\n" "\cf Rifle Mortal\c-\n" "\cf \"Míster\" (apodo común)\c-\n" @@ -2002,18 +2582,22 @@ SWWM_LORETXT_MISTERGUN = "\n" "\cfFuego Primario:\c- Disparo continuo de munición primaria.\n" "\n" -"\cfFuego Secundario:\c- Lanza una granada. Si no hay, carga una nueva.\n" +"\cfFuego Secundario:\c- Lanza una granada. Si no hay, carga una nueva. Recomendado contra grandes grupos de enemigos, ya que esto permitirá una distribución más uniforme de designaciones de objetivo a las sub-granadas para una cobertura máxima de daño.\n" "\n" -"\cfFuego Terciario:\c- Alterna entre modos de operación del rifle. Cambiando entre \"disparo de precisión\" (modo semiautomático estándar), \"disparo en clúster\" (de algún modo funcionando como una escopeta con la misma munición), \"disparo en chorro\" (funciona como automático pero ¿parece disparar cuatro balas por bala?), y \"disparo de presión\" (de alguna forma \"cargando\" la munición antes de dispararla con mayor potencia y velocidad).\n" +"\cfFuego Terciario:\c- Alterna entre modos de operación del rifle. Cambiando entre \"disparo de precisión\" (semi-auto, puntería perfecta), \"disparo en clúster\" (15 perdigones, gran dispersión), \"disparo en chorro\" (ráfaga de 4 subproyectiles, baja precisión), y \"disparo de presión\" (proyectil penetrante de alta potencia).\n" "\n" -"\cfRecarga:\c- Hace lo esperado.\n" +"\cfRecarga:\c- Una de las pocas operaciones que hace lo lógicamente esperado.\n" +"\n" +"\cfTécnicas:\c- Cada uno de los modos de disparo tiene una situación óptima en la que usarse, asegúrate de experimentar y estudiar su comportamiento para así poder aumentar tu eficiencia en el campo de batalla.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfLlegados a este punto ya me trae sin cuidado que me confunda cualquier cosa que salga de ahí, en serio.\c-\n" "\n" "\cfEsta cosa es un rifle de asalto, una escopeta, una ametralladora y un rifle anti-tanque todo en uno, con exactamente la misma munición. Y cierto, no tiene ningún sentido, pero funciona, sea como sea.\c-\n" "\n" -"\cfNo te pongas muy cómoda con esta, por cierto. Apuesto a que en cuanto le pilles el gusto no vas a ser capaz de volver a usar ninguna otra arma.\c-"; +"\cfAdemás esas granadas son aun más raras. Las mides con regla y son obviamente de 25mm, pero de alguna forma CRECEN a su tamaño original al salir disparadas. Y LUEGO TODO LO DE LA FUNCIONALIDAD DE AUTO-OBJETIVO ME ATERRA CONCEPTUALMENTE. ESTO LO HAN HECHO CON BOMBARDEOS EN ALFOMBRA EN MENTE, ESTOY SEGURA AL 100%.\c-\n" +"\n" +"\cfEn serio, no te pongas muy cómoda con esta. Apuesto a que en cuanto le pilles el gusto no vas a ser capaz de volver a usar ninguna otra arma, y acabarás maldita para toda la vida o algo.\c-"; SWWM_LORETXT_MIXOM = "\cxNombre:\c-\n" "\cf Herramientas Mixom\c-\n" @@ -2033,7 +2617,7 @@ SWWM_LORETXT_MIXOM = "\cxNotas de Saya:\c-\n" "\cfDinero y poder, dominio absoluto, mierda de capitalismo. Asco grande... Ojalá exploten todos.\c-\n" "\n" -"\cfMenos la presidenta, es la única persona cuerda que queda ahí pero es que no podían ser más rastreros cada vez que intenta cambiar las cosas. Es comendable, cierto, pero me parece una batalla perdida ya. Debería tirar la toalla y venirse a trabajar aquí.\c-\n" +"\cfMenos la presidenta, es la única persona cuerda que queda ahí pero es que no podían ser más rastreros cada vez que intenta cambiar las cosas. Es encomendable, cierto, pero me parece una batalla perdida ya. Debería tirar la toalla y venirse a trabajar aquí.\c-\n" "\n" "\cfPor cierto, no puedes dar dos pasos sin cruzarte con algo que han hecho, están EN PUTAS TODAS PARTES. Como, por ejemplo, ¿todos los tornillos en tu cuerpo? Marca Mixom. ¿La refrigeración líquida? También Mixom... Seguiría, pero es que me da todo el asco decir su nombre tanto.\c-"; SWWM_LORETAG_MODERNSPARKSTER = "Rifle Sparkster"; @@ -2058,7 +2642,7 @@ SWWM_LORETXT_MODERNSPARKSTER = "\n" "\cfRecarga Secundaria:\c- Carga una célula de Nokron. Misma capacidad.\n" "\n" -"\cfTécnicas:\c- La carga de proyectil puede mantenerse de forma indefinida, ya que el arma se ventilará regularmente para estabilizar la potencia pico de ignición del arma. Esto puede permitir que uno simplemente cargue desde cobertura y salga para soltar el disparo cuando sea necesario. Adicionalmente, la posibilidad de pulsar ambos gatillos a la vez también está documentada, lo cual permite una potente descarga de plasma de Nokorokinylum, comparable a una pequeña bomba nuclear en potencial destructor. No se recomienda realizar un ataque combinado a menos que el objetivo esté lo suficientemente lejos para no poner en peligro al usuario.\n" +"\cfTécnicas:\c- La carga de proyectil puede mantenerse de forma indefinida, ya que el arma se ventilará regularmente para estabilizar su potencia pico de ignición. Esto puede permitir que uno simplemente cargue desde cobertura y salga para soltar el disparo cuando sea necesario. Adicionalmente, la posibilidad de pulsar ambos gatillos a la vez también está documentada, lo cual permite una potente descarga de plasma de Nokorokinylum, comparable a una pequeña bomba nuclear en potencial destructor. No se recomienda realizar un ataque combinado a menos que el objetivo esté lo suficientemente lejos para no poner en peligro al usuario.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfOstiaaaaaaaa esto si que es buena mierda. Será una vieja gloria de antes de la guerra, pero funciona tan bien que resulta que los modelos x4 y x5 son solo revisiones menores, por lo que me contó el viejales ese. No podemos pillarnos las nuevas por culpa de no se qué mierdas del Tratado de la Cicatriz Blanca, una pena, pero con esta nos llega.\c-\n" @@ -2086,19 +2670,17 @@ SWWM_LORETXT_MOTHLAMP = "\n" "\cfPero... es que, justo luego creo que me dijo que \"quizás\". Lo que, sinceramente, suena un poco... uf. En cierto modo, me gusta la idea, pero a la vez... espero que no acabemos lamentándolo.\c-\n" "\n" -"\cfOh dios imagina que las chicas polilla son reales, es que joder yo iba y... ffffffdfgdgfgsfgggghghffhghg\c-"; +"\cfOh dios imagina que las chicas polilla son reales, es que yo ya... ffffffdfgdgfgsfgggghghffhghg\c-"; SWWM_LORETAG_MOTHPLUSHY = "Peluche de Polilla"; SWWM_LORETXT_MOTHPLUSHY = "\cxDesignación:\c-\n" -"\cf Peluche de Mashiro la Chica Polilla\c-\n" +"\cf Peluche de Chica Polilla\c-\n" "\cxFabricante:\c-\n" "\cf Nukritas 2xx\c-\n" "\cxClasificación:\c-\n" "\cf Muñeco de Peluche\c-\n" "\n" -"Un muñeco de peluche cariñosamente creado a mano de \cfMashiro\c-, la chica polilla, para buenos niños y niñas por igual. Como todas las polillas, le encanta la luz de una buena lámpara. Si la provees del calmante brillo de una \cfLámpara Compañera Sankai\c-, puede que tengas una amiga fiable, puede que incluso una amante. Solo, no hagas ruido, puede que la asustes.\n" -"\n" -"En \cfPlutoni Incorporated\c- no nos hacemos responsables si acabas atrapada en un bucle de tiempo con una buena chica polilla haciéndote compañía.\n" +"Un muñeco de peluche de una chica polilla cariñosamente creado a mano. Como todas las polillas, le encanta la luz de una buena lámpara. Si la provees del calmante brillo de una \cfLámpara Compañera Sankai\c-, puede que encuentres una amiga fiel. Eso sí, no hagas ruido, puede que la asustes.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfHay un montón de estas en mi dormitorio, sabes. Una por cada vez que esos dos me han cabreado. Da miedo que me conozcan tan bien, en serio.\c-\n" @@ -2159,7 +2741,6 @@ SWWM_LORETXT_NANA = "\n" "\n" "\n" -"\n" "\cfNana\c- es la hija única de \cfKaguya Houraisan\c-, la princesa \cfLunar\c- exiliada que hizo de \cfGensokyo\c- su hogar. Habiendo sido criada y educada completamente dentro de los confines de \cfEientei\c- no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con \cfRyuji Miyamoto\c- en los años 60. Habiendo huido de la \cfAldea Humana\c-, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese \"ver el mundo\". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia.\n" "\n" "Siendo parte de la realeza, Nana ha ganado bastante fama en Japón, apareciendo incluso en varios programas de entrevistas. También es bien conocida por sus habilidades en varias artes marciales, y ha ganado varios torneos durante años. Otros de sus hobbies también incluyen la pintura y talla de madera, y es una cocinera muy hábil.\n" @@ -2167,7 +2748,7 @@ SWWM_LORETXT_NANA = "Nana tiene tres hijos, los cuales, como ella, han heredado la sangre inmortal de la princesa lunar: \cfTaro\c-, \cfSaya\c- y \cfYui\c-. Cada uno de ellos ha tenido un gran éxito en sus propias hazañas, algo de lo que Nana habla en gran detalle, muy orgullosa.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfLa más mejor mamá del mundo, no voy a mentir. Puede que sea estricta a veces, o se enfade conmigo por estar despierta hasta muy tarde (si es que se da cuenta, je), pero realmente es la mejor. Aun no la has conocido, Demo-chan, pero seguro que le vas a caer muy bien. Te aseguro que es muy maja a pesar del miedo que da la pinta que tiene a veces. No es para nada como Kaguya obaa-san, que juro que siempre tiene ese aura que es como... normal que los tíos le tengan miedo, siempre con un miedo constante a que les haga CBT en cualquier momento.\c-"; +"\cfLa más mejor mamá del mundo, no voy a mentir. Puede que sea estricta a veces, o se enfade conmigo por estar despierta hasta muy tarde (si es que se da cuenta, je), pero realmente es la mejor. Aun no la has conocido, Demo-chan, pero seguro que le vas a caer muy bien. Te aseguro que es muy maja a pesar del miedo que da la pinta que tiene a veces. No es para nada como Kaguya obaa-san, que juro que siempre tiene ese aura que es como... normal que la gente le tenga miedo.\c-"; SWWM_LORETXT_NANA2 = " \cxNombre Completo:\c-\n" " \cf Nana Miyamoto\c-\n" @@ -2181,7 +2762,6 @@ SWWM_LORETXT_NANA2 = "\n" "\n" "\n" -"\n" "\cfNana\c- es la hija única de \cfKaguya Houraisan\c-, la princesa \cfLunar\c- exiliada que hizo de \cfGensokyo\c- su hogar. Habiendo sido criada y educada completamente dentro de los confines de \cfEientei\c- no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con \cfRyuji Miyamoto\c- en los años 60. Habiendo huido de la \cfAldea Humana\c-, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese \"ver el mundo\". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia.\n" "\n" "Siendo parte de la realeza, Nana ha ganado bastante fama en Japón, apareciendo incluso en varios programas de entrevistas. También es bien conocida por sus habilidades en varias artes marciales, y ha ganado varios torneos durante años. Otros de sus hobbies también incluyen la pintura y talla de madera, y es una cocinera muy hábil.\n" @@ -2191,7 +2771,7 @@ SWWM_LORETXT_NANA2 = "\cxNotas de Saya:\c-\n" "\cfOkaa-san es tan feliz de que vayas por ahí haciendo el bien. Me moló que le gustaras. Si es que te lo dije.\c-\n" "\n" -"\cfPor cierto, me di cuenta, sabes, cuando te dio ese abrazo, sí. No ha intentado ver a otros tíos desde que perdimos a papá... Pero creo que a lo mejor... puede que le gustes de una forma algo diferente, ya sabes...\c-"; +"\cfTía, es que juro que ha empezado a hacer empanada de atún más a menudo solo por ti. Está bien que puedas disfrutar de tu plato favorito y tal, pero deberías saber que lo que necesitas en tu dieta son carbohidratos, ¿no?\c-"; SWWM_LORETXT_NANA3 = " \cxNombre Completo:\c-\n" " \cf Nana Miyamoto\c-\n" @@ -2205,7 +2785,6 @@ SWWM_LORETXT_NANA3 = "\n" "\n" "\n" -"\n" "\cfNana\c- es la hija única de \cfKaguya Houraisan\c-, la princesa \cfLunar\c- exiliada que hizo de \cfGensokyo\c- su hogar. Habiendo sido criada y educada completamente dentro de los confines de \cfEientei\c- no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con \cfRyuji Miyamoto\c- en los años 60. Habiendo huido de la \cfAldea Humana\c-, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese \"ver el mundo\". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia.\n" "\n" "Siendo parte de la realeza, Nana ha ganado bastante fama en Japón, apareciendo incluso en varios programas de entrevistas. También es bien conocida por sus habilidades en varias artes marciales, y ha ganado varios torneos durante años. Otros de sus hobbies también incluyen la pintura y talla de madera, y es una cocinera muy hábil.\n" @@ -2215,11 +2794,9 @@ SWWM_LORETXT_NANA3 = "\cxNotas de Saya:\c-\n" "\cfOkaa-san es tan feliz de que vayas por ahí haciendo el bien. Me moló que le gustaras. Si es que te lo dije.\c-\n" "\n" -"\cfOh ya, en la boda, con Kirin... ¿recuerdas? Resulta que tenía razón, después de todo. Se ha pasado a la \"otra acera\" ahora. Dios, como os envidio a todas, habiéndoos perdido esa escena. Ver a mamá justo ahí, dándose el lote con la de Ashley-san... Desearía poder des-verlo, pero ahora hasta planean casarse. ¿Eso no haría que Yu-chan y Ashley-san fuesen hermanas? A ver, las dos ya son pareja y tal... Va a ser raro.\c-\n" +"\cfTía, es que juro que ha empezado a hacer empanada de atún más a menudo solo por ti. Está bien que puedas disfrutar de tu plato favorito y tal, pero deberías saber que lo que necesitas en tu dieta son carbohidratos, ¿no?\c-\n" "\n" -"\cfEspera... Si ese es el caso, entonces... ENTONCES KIRIN-KUN Y YO... ¿¿¿ME VOY A CONVERTIR EN SU TÍA???\c-\n" -"\n" -"\cf... ahora que lo pienso, la verdad es que no importa. Yo es que ya he pecado, considerando que estáis tú, Ibuki y Meido. Técnicamente sois mis hijas (y además Ibuki es mi propio clon), después de todo.\c-"; +"\cfOh ya, y lo que paso en la boda... Buf, es que nos pilló por sorpresa. Fue y se echó novia. Y va y resulta que fue con la madre de Ashley-san. La verdad es que me resulta un poco raro pero... Supongo que está bien si es algo que le hace más feliz.\c-"; SWWM_LORETXT_NEDOSHIAAN = "\cxNombre:\c-\n" "\cf Nedoshiaan\c-\n" @@ -2234,7 +2811,7 @@ SWWM_LORETXT_NEDOSHIAAN = "\n" "Solo cuatro artefactos fueron encontrados, de los cinco que supuestamente se construyeron. Es comúnmente aceptado que este quinto artefacto fue el responsable de la muerte de la deidad, y fue perdido en el proceso. Los artefactos conocidos son:\n" "\n" -"\cfMtkradvo:\c- Conocido también como la \cfGran Anomalía\c-, un orbe de energía pura que, en manos de un solo individuo, le permitiría eliminar a todos a su alrededor en un instante. Su poder es, sin embargo, muy limitado, y una gran cantidad de tiempo es necesaria para que se recargue tras cada uso, haciéndolo más un arma de último recurso para emergencias.\n" +"\cfMykradvo:\c- Conocido también como la \cfGran Anomalía\c-, un orbe de energía pura que, en manos de un solo individuo, le permitiría eliminar a todos a su alrededor en un instante. Su poder es, sin embargo, muy limitado, y una gran cantidad de tiempo es necesaria para que se recargue tras cada uso, haciéndolo más un arma de último recurso para emergencias.\n" "\n" "\cfKyshyje:\c- El \cfAmuleto de la Desdicha\c- que, cuando lo lleva un individuo, atrae destrucción y locura a todos los que deseen hacerle daño. Al menos, eso es lo que se suponía que debía hacer, ya que una vez probado, lo que realmente hacía era atraer la desgracia a su portador, probablemente como una forma de indicar que no es \"digno\" de usarlo, como muchos han especulado.\n" "\n" @@ -2244,7 +2821,7 @@ SWWM_LORETXT_NEDOSHIAAN = "\n" "\cfInshtrometanykha:\c- El quinto y perdido artefacto, el \cfMatadioses\c-. Llamado así debido al hecho de que esta era la única arma conocida que podía destruir a un dios a través de las tres capas de la realidad. Su efectividad es muy clara, teniendo en cuenta lo ocurrido. Solo dos deidades sobrevivieron el impacto, habiendo sido solamente rozadas por él, sin embargo una no pudo conservar su forma física, necesitando un cuerpo artificial, y la otra sufrió daños tales que fue puesta en un \"sueño profundo\".\n" "\n" -"De estos artefactos, el \cfYnykron\c- fue reproducido con éxito y reprogramado para un uso más \"mundano\", después de que \cfMisa Unissix\c- obtuviese sus planos originales del mismo Mei Mess. Por supuesto, su uso aun permanece controlado muy estrictamente.\n" +"De estos artefactos, el \cfYnykron\c- fue reproducido con éxito y re-programado para un uso más \"mundano\", después de que \cfMisa Unissix\c- obtuviese sus planos originales del mismo Mei Mess. Por supuesto, su uso aun permanece controlado muy estrictamente.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfDioses dictadores, armas de destrucción final, \"impulsado por almas torturadas\"... Todo esto es una puta locura, en serio. A este puto mundo nunca se le paran de ocurrir formas absurdas de sorprenderme.\c-\n" @@ -2290,7 +2867,7 @@ SWWM_LORETXT_NOSKORA = "\n" "Al ser parte de los Mishe, los dos hermanos poseen lo que solo puede ser descrito como poderes de \"manipulación de la realidad\". Sin embargo, esto solo ha sido presenciado en raras ocasiones, como por ejemplo los momentos finales de la \cfSéptima Guerra Mundial Nukuri\c-, donde uno de ellos consiguió poner fin al conflicto por su cuenta, ignorando los ataques de soldados imperiales mientras se acercaba al trono, y al alcanzarlo, mandar al emperador \cfLedora Yathai\c- volando fuera de su asiento de un puñetazo, lanzándolo a través de la sala en una línea recta hasta una ventana cercana, y enviándolo al espacio exterior. Su cuerpo nunca fue recuperado, y se supone muerto.\n" "\n" -"La popularidad de la universidad se disparó tras este éxito en desmantelar todo un imperio y finalmente traer consigo la creación del \cfGobierno Unificado Nukuri\c-. Mucha gente desea aprender lo que estas extrañas entidades ofrecen enseñar, aunque muchos de los cursos son bastante difíciles para la mayoría de personas.\n" +"La popularidad de la universidad se disparó tras este éxito en desmantelar todo un imperio y finalmente traer consigo la creación del \cfGobierno Unificado de Nahkami\c-. Mucha gente desea aprender lo que estas extrañas entidades ofrecen enseñar, aunque muchos de los cursos son bastante difíciles para la mayoría de personas.\n" "\n" "Algunos de los cursos más populares que uno puede estudiar en la Universidad de Nos-Kora son:\n" "\n" @@ -2320,16 +2897,14 @@ SWWM_LORETXT_NOVOSKHANA = "\n" "La estructura social del imperio es estrictamente matriarcal, todos los hombres existen solamente para servir a sus esposas y darles hijos. Adicionalmente, casi todas las mujeres nacidas en Novoskhana son entrenadas para la guerra, especialmente aquellas de clases bajas. Dado este hecho, nadie se ha atrevido a empezar ninguna guerra o conflicto con el imperio, ya que siempre está preparado para contraatacar, con sus ejércitos imparables de guerreras inmortales.\n" "\n" -"La Emperatriz Eterna y sus muchas hijas tienen poder absoluto sobre todo Novoskhana, y realizan todas las decisiones importantes, incluyendo la creación de nuevas leyes. De todas estas leyes varias que han venido de ellas, muchas han sido tan controvertidas que han resultado en que grandes grupos de gente se hayan \"separado\" del imperio para formar sus propias naciones. La nieta mayor de la Emperatriz, la Verdugo Eryukha Yanikov, dirige (y a veces imparte) personalmente todos los castigos de ciudadanos que son considerados \cfDesviados\c-, un término usado para todos aquellos que actúan en contra de las leyes del imperio.\n" -"\n" -"Hay incontables formas de ser etiquetado como un \"enemigo del estado\", entre ellas, mostrar signos de \"desestabilizar el orden natural de la sociedad\", lo cual incluye entre otros: Hombres que rechazan el matrimonio o tener descendientes, hombres cuyo primer descendiente es varón, o que son incapaces de tener descendencia, hombres que son vistos manteniendo relaciones con otros hombres, cualquier individuo que comparta un nombre con la emperatriz, cualquier individuo que \"viva desconectado de la sociedad\" (generalmente usado para referirse a aquellos que permanezcan desempleados durante extensos periodos, o no tengan un hogar), mujeres que no contribuyan en la guerra, mujeres que hayan sido vistas manteniendo relaciones con otras mujeres, individuos \"divergentes\" (término usado para aquellos que no caigan en el binario hombre/mujer), etc.\n" +"La Emperatriz Eterna y sus muchas hijas tienen poder absoluto sobre todo Novoskhana, y realizan todas las decisiones importantes, incluyendo la creación de nuevas leyes. De todas estas leyes varias que han venido de ellas, muchas han sido tan controvertidas que han resultado en que grandes grupos de gente se hayan \"separado\" del imperio para formar sus propias naciones. La nieta mayor de la Emperatriz, la Verdugo Eryukha Yanikov, dirige (y a veces imparte) personalmente todos los castigos de ciudadanos que son considerados \cfDesviados\c-, un término usado para todos aquellos que actúan en contra de las estrictas leyes del imperio.\n" "\n" "Dos de los mayores grupos separados del Imperio son el \cfReino Kurenai\c-, fundado inicialmente por la \cfHermandad Vexx\c- como un lugar seguro para enemigos del estado, y el \cfImperio Sykhai\c-, un colectivo anarco-comunista con nombre irónico fundado por una rama de la familia Yanikov que estaba fuertemente en desacuerdo con el \"sistema roto\" del Imperio. Una gran parte de la población libre \cfAnarukon\c- total del multiverso está contenida en estos dos, y el resto se ha asentado en otros lugares, incluyendo la Tierra.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfJoder, tía. Si hubiese una vez un concurso de quien es el dictador más ridículamente malvado de la historia del mundo, esta hijoputa tendría el primer puesto. Puto... imperio TERF. Maravilloso, simplemente maravilloso...\c-\n" +"\cfJoder, tía. Si hubiese una vez un concurso de quien es el dictador más ridículamente malvado de la historia del mundo, esta hijoputa tendría el primer puesto. Maravilloso, simplemente maravilloso...\c-\n" "\n" -"\cfSí, nunca jamás me puto acercaría a ese sito, hostia joder. Me arrancarían la cabeza por TODAS las razones o algo, nada mas poner un pie ahí. Lo que no entiendo es... que... ¿¿¿COMO COJONES sigue habiendo gente ahí??? ¿¿¿QUIEN COJONES querría vivir ahí???\c-\n" +"\cfSí, nunca jamás me acercaría a ese sito, la leche. Me arrancarían la cabeza por TODAS las razones o algo, nada mas poner un pie ahí. Lo que no entiendo es... Que, a ver, ¿¿como alguien querría vivir en un sitio así, bajo una dictadura tan absurda??\c-\n" "\n" "\cfOh, pero que digo, por supuesto que hay gente que estaría fenomenal con un puto infierno así, siempre. Si la historia nos ha enseñado algo, es que a ver... sí... Hay gente que es tan mierder como para seguir a líderes así, o peor...\c-"; SWWM_LORETXT_NOVOSKHANA2 = @@ -2344,16 +2919,14 @@ SWWM_LORETXT_NOVOSKHANA2 = "\n" "La estructura social del imperio es estrictamente matriarcal, todos los hombres existen solamente para servir a sus esposas y darles hijos. Adicionalmente, casi todas las mujeres nacidas en Novoskhana son entrenadas para la guerra, especialmente aquellas de clases bajas. Dado este hecho, nadie se ha atrevido a empezar ninguna guerra o conflicto con el imperio, ya que siempre está preparado para contraatacar, con sus ejércitos imparables de guerreras inmortales.\n" "\n" -"La Emperatriz Eterna y sus muchas hijas tienen poder absoluto sobre todo Novoskhana, y realizan todas las decisiones importantes, incluyendo la creación de nuevas leyes. De todas estas leyes varias que han venido de ellas, muchas han sido tan controvertidas que han resultado en que grandes grupos de gente se hayan \"separado\" del imperio para formar sus propias naciones. La nieta mayor de la Emperatriz, la Verdugo Eryukha Yanikov, dirige (y a veces imparte) personalmente todos los castigos de ciudadanos que son considerados \cfDesviados\c-, un término usado para todos aquellos que actúan en contra de las leyes del imperio.\n" -"\n" -"Hay incontables formas de ser etiquetado como un \"enemigo del estado\", entre ellas, mostrar signos de \"desestabilizar el orden natural de la sociedad\", lo cual incluye entre otros: Hombres que rechazan el matrimonio o tener descendientes, hombres cuyo primer descendiente es varón, o que son incapaces de tener descendencia, hombres que son vistos manteniendo relaciones con otros hombres, cualquier individuo que comparta un nombre con la emperatriz, cualquier individuo que \"viva desconectado de la sociedad\" (generalmente usado para referirse a aquellos que permanezcan desempleados durante extensos periodos, o no tengan un hogar), mujeres que no contribuyan en la guerra, mujeres que hayan sido vistas manteniendo relaciones con otras mujeres, individuos \"divergentes\" (término usado para aquellos que no caigan en el binario hombre/mujer), etc.\n" +"La Emperatriz Eterna y sus muchas hijas tienen poder absoluto sobre todo Novoskhana, y realizan todas las decisiones importantes, incluyendo la creación de nuevas leyes. De todas estas leyes varias que han venido de ellas, muchas han sido tan controvertidas que han resultado en que grandes grupos de gente se hayan \"separado\" del imperio para formar sus propias naciones. La nieta mayor de la Emperatriz, la Verdugo Eryukha Yanikov, dirige (y a veces imparte) personalmente todos los castigos de ciudadanos que son considerados \cfDesviados\c-, un término usado para todos aquellos que actúan en contra de las estrictas leyes del imperio.\n" "\n" "Dos de los mayores grupos separados del Imperio son el \cfReino Kurenai\c-, fundado inicialmente por la \cfHermandad Vexx\c- como un lugar seguro para enemigos del estado, y el \cfImperio Sykhai\c-, un colectivo anarco-comunista con nombre irónico fundado por una rama de la familia Yanikov que estaba fuertemente en desacuerdo con el \"sistema roto\" del Imperio. Una gran parte de la población libre \cfAnarukon\c- total del multiverso está contenida en estos dos, y el resto se ha asentado en otros lugares, incluyendo la Tierra.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfJoder, tía. Si hubiese una vez un concurso de quien es el dictador más ridículamente malvado de la historia del mundo, esta hijoputa tendría el primer puesto. Puto... imperio TERF. Maravilloso, simplemente maravilloso...\c-\n" +"\cfJoder, tía. Si hubiese una vez un concurso de quien es el dictador más ridículamente malvado de la historia del mundo, esta hijoputa tendría el primer puesto. Maravilloso, simplemente maravilloso...\c-\n" "\n" -"\cfSí, nunca jamás me puto acercaría a ese sito, hostia joder. Me arrancarían la cabeza por TODAS las razones o algo, nada mas poner un pie ahí. Lo que no entiendo es... que... ¿¿¿COMO COJONES sigue habiendo gente ahí??? ¿¿¿QUIEN COJONES querría vivir ahí???\c-\n" +"\cfSí, nunca jamás me acercaría a ese sito, la leche. Me arrancarían la cabeza por TODAS las razones o algo, nada mas poner un pie ahí. Lo que no entiendo es... Que, a ver, ¿¿como alguien querría vivir en un sitio así, bajo una dictadura tan absurda??\c-\n" "\n" "\cfOh, pero que digo, por supuesto que hay gente que estaría fenomenal con un puto infierno así, siempre. Si la historia nos ha enseñado algo, es que a ver... sí... Hay gente que es tan mierder como para seguir a líderes así, o peor...\c-\n" "\n" @@ -2377,6 +2950,56 @@ SWWM_LORETXT_NUGGET = "\n" "\cxNotas de Saya:\c-\n" "\cf¿Puedo añadir que esta mierda es MUY de videojuego? No, en serio. Cosas así que vas y tocas y te curan o dan armadura... A ver, venga ya. Apuesto a que el frikazo también estaría metido en todo esto, hablando siempre de como la vida es igual que un videojuego y mierdas.\c-"; +SWWM_LORETXT_NUKRITAS1XX = +" \cxNombre Completo:\c-\n" +" \cf Sujeto 1xx, Subtipo Nukritas\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Mishe\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1030-10-10\c-\n" +" \cxOcupación:\c-\n" +" \cf Director (Universidad de Nos-Kora)\c-\n" +"\n" +"\n" +"\n" +"\n" +"\cfNukritas 1xx\c- es el penúltimo de los \cfMishe\c- nacidos a bordo de la luna artificial de \cfDeishe\c-, mucho después de la destrucción y subsecuente extinción de todos los anteriormente nativos Mishe en su mundo natal en el 8135 AC tras una desigual guerra con la vecina raza \cfGoshun\c-.\n" +"\n" +"Al igual que su hermana gemela, ha sido designado como un \cfSubtipo Nukritas\c-, lo cual significa que nació y se crió para el propósito de representar a los supervivientes de su raza y propagar su conocimiento por toda la \cfCoalición X'Animen\c-. Para esto, y junto con su hermana, ambos fundaron la \cfUniversidad de Nos-Kora\c- en \cfNahkami\c-.\n" +"\n" +"Ya que estas tareas no toman mucho de su tiempo. 1xx se dedica también a otras aficiones, como la escritura. Ha escrito varias novelas que no muchos entienden del todo, aunque todos aseguran haberlas leído de principio a fin. También es un ávido cocinero, y disfruta al aprender las variadas recetas de cada civilización que conoce junto con su hermana. Su plato favorito es el sándwich de queso a la plancha.\n" +"\n" +"Como todos los miembros de la raza Mishe, es bastante excéntrico, su inmensa sabiduría parece ser muy exhaustiva, aunque los sujetos que domina son bastante inconexos. Parece que tanto él como su hermana comparten el pensamiento, ya que pueden continuarse las frases mutuamente en medio de cualquier conversación.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfYa, lo sé, no hay mucho que ver, pero es que estos dos no tienen una biografía o algo en la que rebuscar.\c-\n" +"\n" +"\cfEste tío... La forma en la que sonríe da un poco de miedo a veces. Me pregunto si es capaz de leerme la mente o algo.\c-"; +SWWM_LORETXT_NUKRITAS2XX = +" \cxNombre Completo:\c-\n" +" \cf Sujeto 2xx, Subtipo Nukritas\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Mishe\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 1030-10-10\c-\n" +" \cxOcupación:\c-\n" +" \cf Directora (Universidad de Nos-Kora)\c-\n" +"\n" +"\n" +"\n" +"\n" +"\cfNukritas 2xx\c- es la última de los \cfMishe\c- nacidos a bordo de la luna artificial de \cfDeishe\c-, mucho después de la destrucción y subsecuente extinción de todos los anteriormente nativos Mishe en su mundo natal en el 8135 AC tras una desigual guerra con la vecina raza \cfGoshun\c-.\n" +"\n" +"Al igual que su hermano gemelo, ha sido designada como un \cfSubtipo Nukritas\c-, lo cual significa que nació y se crió para el propósito de representar a los supervivientes de su raza y propagar su conocimiento por toda la \cfCoalición X'Animen\c-. Para esto, y junto con su hermano, ambos fundaron la \cfUniversidad de Nos-Kora\c- en \cfNahkami\c-.\n" +"\n" +"Ya que estas tareas no toman mucho de su tiempo. 2xx se dedica también a otras aficiones, como la pintura. Ha creado varias obras de arte que no muchos entienden del todo, aunque todos aseguran haberlas visto de arriba a abajo. También es una ávido fabricante de muñecas, y disfruta al crear varios muñecos de peluche de los amigos que conoce junto con su hermano. Su muñeco favorito es uno del \cfDios Azul\c-, quien se ofreció como patrón de su gente como agradecimiento.\n" +"\n" +"Como todos los miembros de la raza Mishe, es bastante excéntrica, su inmensa sabiduría parece ser muy exhaustiva, aunque los sujetos que domina son bastante inconexos. Parece que tanto ella como su hermano comparten el pensamiento, ya que pueden continuarse las frases mutuamente en medio de cualquier conversación.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEste es igual que el otro, sí. Tampoco hay mucha información por ahí, ya sabes...\c-\n" +"\n" +"\cfLa verdad es que me gusta, los muñecos que hace son monos. A ver, los has visto, ¿verdad? ¡Es que son adorables!\c-"; SWWM_LORETXT_NUKURI = "\cxNombre:\c-\n" "\cf Nukuri (lit.: \"Blanco\")\c-\n" @@ -2387,11 +3010,11 @@ SWWM_LORETXT_NUKURI = "\n" "Los \cfNukuri\c- son una raza humanoide de tez pálida nativos de la luna helada de \cfHebeku\c-, \cfNahkami\c-, en el \cfSistema Xathar\c- (parte de la \cfCoalición X'Animen\c-). Son una de las razas más avanzadas tecnológicamente en toda la Coalición, y son vistos como un gran ejemplo de progreso y dedicación, aunque han tenido una extensa historia de guerra y conflicto, junto con haberse involucrado en notables atrocidades. Este pasado tan oscuro es algo de lo que son plenamente conscientes y de lo que se avergüenzan, desde el fin de su séptima guerra mundial y la masiva reforma política y económica que transcurrió posteriormente.\n" "\n" -"En el pasado, Nahkami fue un cruel imperio belicista liderado con mano dura por la familia real \cfYathai\c-. Sin embargo, tras la reforma, y con el emperador \cfLedora Yathai\c- siendo \"forzado al exilio\" por los fundadores de la \cfUniversidad de Nos-Kora\c-, quienes lideraron dicha reforma, el \cfGobierno Unificado Nukuri\c- fue creado, con \cfZanata Nekuraku II\c- personalmente elegida como primera ministra \"de transición\".\n" +"En el pasado, Nahkami fue un cruel imperio belicista liderado con mano dura por la familia real \cfYathai\c-. Sin embargo, tras la reforma, y con el emperador \cfLedora Yathai\c- siendo \"forzado al exilio\" por los fundadores de la \cfUniversidad de Nos-Kora\c-, quienes lideraron dicha reforma, el \cfGobierno Unificado de Nahkami\c- fue creado, con \cfZanata Nekuraku II\c- personalmente elegida como primera ministra \"de transición\".\n" "\n" "Habiendo sufrido la pérdida de su madre y su marido en anteriores guerras, Zanata siempre se opuso al imperio y sus prácticas, incluyendo la decisión de atacar a la humanidad en el punto álgido de la Séptima Guerra Mundial, en lo que se conoció como el incidente de la \cfCicatriz Blanca\c-. Tras establecerse el nuevo gobierno, intentó compensar lo ocurrido, pero nada se pudo hacer. Pasado esto, renunció no solo a su puesto como primera ministra, sino también al de líder de \cfNekuratek\c-, la compañía que su familia había dirigido durante varias generaciones. A la fecha de escribirse este artículo, la actual primera ministra de Nahkami, elegida por la mayoría, es \cfSaya Kowayanau\c-, quien es también gobernadora de la provincia de \cfSaya\c-.\n" "\n" -"El Gobierno Unificado Nukuri puede verse como uno de los varios ejemplos de transiciones exitosas de regímenes dictatoriales a un sistema más abierto. Su sistema de gobierno es auto-descrito como \"omnicracia comunista\", donde todos son iguales y ninguna voz es ignorada. Su método para permitir que todos sus habitantes formen parte en la toma de decisiones, el \"voto fractal\", ha sido elogiado por otras naciones vecinas. En cierto modo, todo es fundamentalmente decidido por toda la gente de la nación, ninguna voz es ignorada. En cuanto a su economía, no existe el concepto de moneda, o de propiedad privada. Todos los negocios anteriormente privados son ahora públicos, aunque sus fundadores siguen manteniendo una posición de liderazgo \"simbólico\", estando todavía involucrados en su manejo, bajo supervisión del gobierno.\n" +"El Gobierno Unificado de Nahkami puede verse como uno de los varios ejemplos de transiciones exitosas de regímenes dictatoriales a un sistema más abierto. Su sistema de gobierno es auto-descrito como \"omnicracia comunista\", donde todos son iguales y ninguna voz es ignorada. Su método para permitir que todos sus habitantes formen parte en la toma de decisiones, el \"voto fractal\", ha sido elogiado por otras naciones vecinas. En cierto modo, todo es fundamentalmente decidido por toda la gente de la nación, ninguna voz es ignorada. En cuanto a su economía, no existe el concepto de moneda, o de propiedad privada. Todos los negocios anteriormente privados son ahora públicos, aunque sus fundadores siguen manteniendo una posición de liderazgo \"simbólico\", estando todavía involucrados en su manejo, bajo supervisión del gobierno.\n" "\n" "Se sabe también que los Nukuri todavía poseen una potente fuerza militar, aunque solo sirva para defender la nación de amenazas externas (algo que raramente ha ocurrido). Adicionalmente, la fabricación y uso de armas está estrictamente supervisado, también.\n" "\n" @@ -2438,7 +3061,7 @@ SWWM_LORETXT_NUUTEK = "\cxNotas de Saya:\c-\n" "\cfBuf, armas de plasma tan atrás. Los Nukuri desde luego que nos superaban MUY BASTO. A ver, es que casualmente se dieron un viaje desde otra galaxia a nuestra Luna y se montaron su propio complejo de investigación ahí cuando los humanos como que... aun estaban aprendiendo a usar hierro. Y encima, ni la barrera de la Capital Lunar los paró. Es que, es acojonante, tío.\c-\n" "\n" -"\cfVale, no nos salgamos del tema. Casi que no tengo ningún contacto con nadie de ahí, Zana-sama se encargó de todo eso, así que todo lo que nos den pasa por ella primero. Las pistolas de plasma molan, y podemos juguetear con uno de sus \"blasters\" tan famosos. Espero que sea tan derritecaras como suena.\c-"; +"\cfVale, no nos salgamos del tema. Casi que no tengo ningún contacto con nadie de ahí, Zana-sama se encargó de todo eso, así que todo lo que nos den pasa por ella primero. Las pistolas de plasma molan, y podemos juguetear con uno de sus \"blasters\" tan famosos. Espero que sea tan derrite-caras como suena.\c-"; SWWM_LORETAG_OMNISIGHT = "Omnivisión"; SWWM_LORETXT_OMNISIGHT = "\cxDesignación:\c-\n" @@ -2453,7 +3076,7 @@ SWWM_LORETXT_OMNISIGHT = "Los dispositivos de Omnivisión pueden ser fácilmente rellenados por operadores de reconocimiento gracias al software y hardware especializados de \cfAkari Labs\c-, compatibles directamente con la mayoría de distribuciones de Linux. Se pueden descargar drivers para otras plataformas de la página web de Akari Labs, aunque su estabilidad no está garantizada.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfPra que lo sepas, un monte de peña arriesga sus vidas metiendo los datos de estas cosas, así que más te vale pagar respetos cuando te encuentres una. Puede que sean voluntarios, pero sus vidas son tan valiosas como las de cualquier otro.\c-"; +"\cfPara que lo sepas, un monte de peña arriesga sus vidas metiendo los datos de estas cosas, así que más te vale pagar respetos cuando te encuentres una. Puede que sean voluntarios, pero sus vidas son tan valiosas como las de cualquier otro.\c-"; SWWM_LORETAG_ONOKE = "Asesinatos Onoke"; SWWM_LORETXT_ONOKE = "\cxNombre:\c-\n" @@ -2463,13 +3086,13 @@ SWWM_LORETXT_ONOKE = "\cxLocalización:\c-\n" "\cf Kereshnovka\c-\n" "\n" -"En Octubre de 2003, un incendio ocurrió en la \cfMansión Onoke\c-, a las afueras de \cfKereshnovka\c-, durante una reunión entre las familias \cfImanaki\c- y \cfOnoke\c-. Cuando los bomberos llegaron, encontraron a todos muertos, habiendo sido cada uno asesinado de formas más y más cruentas. El culpable nunca fue encontrado.\n" +"En Octubre de 2003, un incendio ocurrió en la \cfMansión Onoke\c-, a las afueras de \cfKereshnovka\c-, durante una reunión entre las familias \cfImanaki\c- y \cfOnoke\c-. Cuando los bomberos llegaron, encontraron a todos muertos, habiendo sido todos envenenados y sus cadáveres profanados. El culpable nunca fue encontrado.\n" "\n" "Hay muchas teorías sobre lo que pudo haber ocurrido. La mayoría apunta a que esto haya sido el trabajo de \cfHynnykka la Gran Bruja\c-, una asesina en serie de hace siglos (o un posible sucesor), mencionando el hecho de que su última nota puede tener la interpretación potencial de referirse a estas dos poderosas familias (\"todos morirán\"). Esto no solo ha sido visto como algo difícilmente relacionado, dada la vaga interpretación, sino también mucho más dudoso por que algo así no pudo ser hecho por un solo individuo.\n" "\n" "Otra teoría apunta a un suicidio ritual, aunque no hubiese una clara explicación de por que algo así se hubiera hecho. Ambas familias se encontraban en buenos términos, y esta reunión era en celebración del matrimonio entre dos de sus miembros, marcando el inicio de una alianza muy beneficiosa.\n" "\n" -"Muchas otras teorías, cada una más ridícula que la anterior, mencionan posibilidades de ataques por cultistas, los ghouls del pueblo, o una especie de asesinato planeado por familias rivales (de las cuales no se ha conocido ninguna).\n" +"Muchas otras teorías, cada una más ridícula que la anterior, mencionan posibilidades de ataques por cultistas, los ghouls del pueblo, o una especie de asesinato planeado por familias rivales (de cuya participación no se ha conocido ningún caso).\n" "\n" "A día de hoy, nadie sabe lo que realmente ocurrió entonces, y el caso sigue sin resolver. Solo una persona sobrevivió, \cfTetsuya Imanaki\c-, CEO de \cfImanaki Corp\c-, pero solo por su ausencia al evento.\n" "\n" @@ -2477,20 +3100,45 @@ SWWM_LORETXT_ONOKE = "\cfDesde luego, vaya cosa, ¿a que sí? Tengo que decir que no es tan interesante como aquel otro asesinato misterioso de los 80, el que pasó aquí en Japón. Sí, aun recuerdo toda ese rollo, las teorías y chorradas ridículas tardaron en pasar. La gente aun seguía con el tema cuando era una niña. Recuerdo especialmente el meme de las \"pequeñas bombas\" y esas mierdas. Era un meme ridículo pero Taro y yo pensábamos que tenía su gracia.\c-\n" "\n" "\cfOh ya, y la tipa esa de la banda de Ashley-san, Mykka, también estuvo metida en el rollo, siendo supuestamente \"detective\" y tal. Fue una de las pocas que apoyaba lo de que fue todo hecho por brujas. Sí, cuando tú eres una por supuesto que esa va a ser tu elección, je...\c-"; +SWWM_LORETXT_PARKER = +" \cxNombre Completo:\c-\n" +" \cf Parker Edgar Munch III\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Americana\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf (No especificada)\c-\n" +" \cxOcupación:\c-\n" +" \cf Ingeniero Jefe (Innovaciones Munch)\c-\n" +"\n" +"\n" +"\n" +"\n" +"Nacido y criado en \cfAustin, Texas\c-, \cfParker\c- es el hijo mayor del fundador y CEO de \cfInnovaciones Munch\c-, \cfAllen Munch\c-. A diferencia de su padre, sin embargo, sus intereses van más allá del mundo de los aparatos del hogar inteligentes.\n" +"\n" +"Como ávido coleccionista de armas, se impuso el crear su propio armamento casero, ya desde una edad temprana. Los muchos artilugios que crearía serían compartidos en línea. Los comentarios que recibiría le ayudarían a mejorar sus habilidades creativas más y más, a pesar de la indiferencia de su padre. Sin embargo, el éxito de su pequeña empresa no pudo ser ignorado, y así, el pequeño taller que había creado él solo pronto formó también parte de la compañía de su padre.\n" +"\n" +"La creación más notable de Parker en años recientes es la \cfPistola de Explodium\c-, la primera arma creada para el uso de \cfExplodium\c- como carga altamente explosiva a partir de sus cartuchos propietarios \cf.387 EX\c-.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfA ver, es que veo la foto y hay algo que me sigue inquietando. ¿Por que me resulta tan familiar? Es que lo juro, es como que lo tengo justo ahí en lo profundo de la mente y no puedo sacarlo.\c-\n" +"\n" +"\cfTampoco sé mucho del tío este. Como dije, apareció de repente y me pidió que su pistola formara parte de tu arsenal, y luego se fue como si nada después de apretarnos la mano.\c-\n" +"\n" +"\cfY en serio, es que tampoco he podido encontrar información de él aparte de la cortísima biografía en la página de Munch. ¿Pero quien es este tío?\c-"; SWWM_LORETXT_PARTHORIS = "\cxNombre:\c-\n" "\cf Parthoris\c-\n" "\cxClasificación:\c-\n" "\cf Mundo alternativo\c-\n" "\n" -"\cfParthoris\c- es uno de los varios mundos extra-universales que fueron descubiertos en las fases iniciales de los experimentos con interportales de \cfAkari Labs\c-, como parte del \cfProyecto Akari\c-. En su centro se encuentra una tierra dividida en siete naciones, en una fase de desarrollo que uno describiría como \"medieval\", aunque hay una clara presencia de fuerzas mágicas. Sin embargo, se ha reportado la presencia de de tecnología curiosamente avanzada, en una zona lejana, identificada como la guarida de una especie de poderoso lich.\n" +"\cfParthoris\c- es uno de los varios mundos extra-universales que fueron descubiertos en las fases iniciales de los experimentos con interportales de \cfAkari Labs\c-, como parte del \cfProyecto Akari\c-. En su centro se encuentra una tierra dividida en siete naciones, en una fase de desarrollo que uno describiría como \"medieval\", aunque hay una clara presencia de fuerzas mágicas. Sin embargo, se ha reportado la presencia de tecnología curiosamente avanzada, en una zona lejana, identificada como la guarida de una especie de poderoso lich.\n" "\n" -"Cuando este mundo fue localizado inicialmente, hubo signos claros de haber pasado por algún tipo de gran batalla. Las siete naciones estaban bajo el control de un individuo llamado \cfD'Sparil\c-, quien había tomado el mando por la fuerza con sus ejércitos. La causa exacta de esto se desconoce, pero al momento de escribirse este artículo, el \cfDemolicionista\c- ha sido enviado para investigar, y eliminar cualquier amenaza en el proceso.\n" +"Cuando este mundo fue localizado inicialmente, hubo signos claros de haber pasado por algún tipo de gran batalla. Las siete naciones estaban bajo el control de un individuo llamado \cfD'Sparil\c-, quien había tomado el mando por la fuerza con sus ejércitos. La causa exacta de esto se desconoce, pero al momento de escribirse este artículo, la \cfDemolicionista\c- ha sido enviado para investigar, y eliminar cualquier amenaza en el proceso.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfHay un monte de cosas interesantes por ahí y voy a estar muy pendiente del directo. Esta es la primerísima vez que hacemos una exploración de todo, sabes, así que quiero ver TODO lo que pueda haber aquí.\c-\n" "\n" -"\cfNo sé si te vas a acercar al sitio ese, la tal \"Guarida de Malumax\". Mira que tengo curiosidad por eso, el hecho de que haya un tío con acceso a cosas modernas en esta maravilleante tierra de fantasía medieval.\c-"; +"\cfNo sé si te vas a acercar al sitio ese. Mira que tengo curiosidad por eso, el hecho de que haya un tío con acceso a cosas modernas en esta maravillante tierra de fantasía medieval.\c-"; SWWM_LORETAG_PLASMABLAST = "Blaster de Plasma"; SWWM_LORETXT_PLASMABLAST = "\cxDesignación:\c-\n" @@ -2500,20 +3148,20 @@ SWWM_LORETXT_PLASMABLAST = "\cxClasificación:\c-\n" "\cf Pistola de Plasma\c-\n" "\n" -"Desarrollado antaño por \cfNuutek\c-, y actualmente descontinuado pero todavía siendo producido por entusiastas basándose en sus planos públicos, el \cfBlaster de Plasma\c- fue la primera arma de plasma de fabricación \cfNukuri\c-, diseñado para reemplazar el típico armamento balístico de aquella época. Liberando pequeñas descargas de \cfNokorokinylum\c- encendido, es capaz de neutralizar rápidamente cualquier objetivo menor.\n" +"Desarrollado antaño por \cfNuutek\c-, y actualmente descontinuado pero todavía siendo producido por entusiastas basándose en sus planos públicos, el \cfBlaster de Plasma\c- fue la primera arma de plasma de fabricación \cfNukuri\c-, diseñado para reemplazar el típico armamento balístico de aquella época. Liberando pequeñas descargas de \cfNokorokinylum\c- candente, es capaz de neutralizar rápidamente cualquier objetivo menor.\n" "\n" "\cfFuego Primario:\c- Rápidos disparos de plasma abrasador. Los proyectiles se desplazarán muy rápido, pero se disiparán tras pasar cierta distancia.\n" "\n" "\cfFuego Secundario:\c- Disparo cargado. Mantener y soltar. Un proyectil más lento, pero mucho más fuerte y destructivo, especialmente si se carga con una célula completa. El arma debe ser sujeta con ambas manos, ya que la inestabilidad inducida por la carga interna de plasma puede dificultar el apuntar con una sola mano.\n" "\n" -"\cfRecarga:\c- Reemplaza la célula de munición del arma. Cada una puede potenciar hasta 15 disparos.\n" +"\cfRecarga:\c- Reemplaza la célula de munición del arma. Cada una puede potenciar hasta 8 disparos.\n" "\n" "\cfTécnicas:\c- Obtener un segundo Blaster de Plasma permite alternar a modo dual. El fuego secundario en este modo dispara el arma a mano izquierda.\n" "\n" "Dada la alta disponibilidad de los materiales usados, y una amistad compartida entre Nuutek y su antiguo competidor \cfNekuratek\c-, tienes acceso gratuito a un abastecimiento prácticamente ilimitado de munición para este arma.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfYa sabes, si te parece que derretir rodillas mola más que hacerlas explotar, esta también es una buena opción. He oído que hay toda clase de variantes absurdas de la pistola esta por ahí, ya que es de código abierto y tal. Se han hecho escopetas, rifles, hasta lanzallamas usando plasma de Nokron, buf.\c-\n" +"\cfYa sabes, si te parece que derretir rodillas mola más que hacerlas explotar, esta también es una buena opción. He oído que hay toda clase de variantes absurdas de la pistola esta por ahí, ya que es de código abierto y tal. Se han hecho escopetas, rifles, hasta lanzallamas usando plasma de Sydon, buf.\c-\n" "\n" "\cfTambién gracias a mi muy valiosa amistad con Zana-sama, como puedes ver nos dan munición gratis para la cosa. Bastante cómodo, vaya. Ojalá fuese igual para todo tu arsenal entero, pero la vida no es tan fácil.\c-"; SWWM_LORETAG_PROPULSOR = "Impulsor JetBurst"; @@ -2530,7 +3178,7 @@ SWWM_LORETXT_PROPULSOR = "Gracias a sus células patentadas de energía autoregenerable, la unidad tiene la garantía de permanecer útil durante muchos años, requiriendo solo un suministro constante de hidrógeno (que puede incluso venir del aire alrededor de sí).\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfSabes, Ibuki solía llevar uno de estos también, cuando estaba en América haciendo todas esas cosas que se supone que tenía que hacer (y después). Podía volar por ahí y hacer toda clase de piruetas ridículas y tal, pero supongo que tú no puedes, claro. A ver, no te estoy llamando gorda ni nada... bueno... a ver, pesas 500kg, eso está claro.\c-\n" +"\cfSabes, Ibuki solía llevar uno de estos también, con todo el exoesqueleto blindado que llevaba para la guerra en aquellos tiempos. Podía volar por ahí y hacer toda clase de piruetas ridículas y tal, pero supongo que tú no puedes, claro. A ver, no te estoy llamando gorda ni nada... bueno... a ver, pesas 500kg, eso está claro.\c-\n" "\n" "\cfEn serio... si hubiera sabido que el almacero pesa tanto, no habría usado un blindaje tan pesado para tu cuerpo, porque a ver, si que dije lo de que lo quería \"EXTRA THICC\" cuando Misa me preguntó, en plan coña, pero se lo tomó muy en serio.\c-\n" "\n" @@ -2541,22 +3189,22 @@ SWWM_LORETXT_PUNTZERBETA = "\cxFabricante:\c-\n" "\cf Blackmann Arms S.L.\c-\n" "\cxClasificación:\c-\n" -"\cf Revólver de Acción Simple\c-\n" +"\cf Revólver Semiautomático\c-\n" "\n" "La serie \cfPuntzer\c- de armas de \cfBlackmann Arms\c- son el principal ejemplo del potencial de su patentada munición perforadora \cfSpin Motion Wedge (SMW)\c-.\n" "\n" -"El \cfPuntzer Beta\c- es un revólver de acción simple con cañón basculante de seis disparos, equipado con partes muy robustas, ideales para fanáticos del disparo en abanico.\n" +"El \cfPuntzer Beta\c- es un revólver semiautomático con cañón basculante de seis disparos, equipado con partes muy robustas.\n" "\n" "\cfFuego Primario:\c- Disparos lentos y precisos.\n" "\n" -"\cfFuego Secundario:\c- Mantén para entrar en modo abanico, suelta para salir. En este modo, puedes pulsar/mantener el fuego primario para disparar mucho más rápido, pero con menor precisión.\n" +"\cfFuego Secundario:\c- Activa el modo de \"descarga rápida\", tras lo cual apretar el gatillo causará que seis disparos se realicen en rápida sucesión.\n" "\n" "\cfFuego Terciario:\c- Gira el arma desenfrenadamente, por diversión.\n" "\n" "\cfRecarga:\c- Recarga el arma. Gracias al sistema de recarga rápida provisto por tu \cfContenedor de Hammerspace™\c-, simplemente tienes que mantener la palma abierta sobre el tambor, las balas serán cargadas automáticamente.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfAh, el revólver, un arma muy clásica, famoso por todas esas películas americanas del \"salvaje oeste\". Pero este es especial, oh sí. Esas putas balas espirales son un puto desmadre, girando a lo bestia y taladrando a través de todo. Hermann-senpai nos manda las de tipo \".05\" específicamente, que son las más potentes de todas, y supuestamente pueden taladrar a través de las paredes y todo. Eso va a ser divertido.\c-"; +"\cfAh, el revólver, un arma muy clásica, famoso por todas esas películas americanas del \"salvaje oeste\". Pero este es especial, oh sí. Es bastante raro ya encontrar un revólver semiautomático, ¿pero además uno con un modo automático? Y esas putas balas espirales son un puto desmadre también, girando a lo bestia y taladrando a través de todo. Hermann-senpai nos manda las de tipo \".05\" específicamente, que son las más potentes de todas, y supuestamente pueden taladrar a través de las paredes y todo. Eso va a ser divertido.\c-"; SWWM_LORETXT_PUNTZERGAMMA = "\cxDesignación:\c-\n" "\cf Carabina de Asalto Puntzer \"Gamma\"\c-\n" @@ -2567,11 +3215,11 @@ SWWM_LORETXT_PUNTZERGAMMA = "\n" "La serie \cfPuntzer\c- de armas de \cfBlackmann Arms\c- son el principal ejemplo del potencial de su patentada munición perforadora \cfSpin Motion Wedge (SMW)\c-.\n" "\n" -"El \cfPuntzer Gamma\c- es un subfusil bullpup mayormente compacto con un sistema de cargador horizontal similar a clásicos del siglo 21 como el \cfBreakerTek P90\c-. El arma es adicionalmente capaz de ejecutar un modo \"Súper-Automático\" de disparo ultrarrápido, visto también en otras armas automáticas fabricadas por Blackmann Arms.\n" +"El \cfPuntzer Gamma\c- es un subfusil mayormente compacto, que emplea una peculiar disposición de cargador en hélice donde, a diferencia de otras armas en las que el cargador se coloca por encima o por debajo, aquí se incrusta en el lateral del arma. El Gamma es bien conocido por ser capaz de ejecutar un modo \"Súper-Automático\" de disparo ultrarrápido, visto también en otras armas automáticas fabricadas por Blackmann Arms, para vaciar un cargador entero lo más rápido posible.\n" "\n" "\cfFuego Primario:\c- Disparo en modo automático.\n" "\n" -"\cfFuego Secundario:\c- Ráfaga en modo \"super-automático\".\n" +"\cfFuego Secundario:\c- Alterna entre dos velocidades de disparo.\n" "\n" "\cfRecarga:\c- Recarga, obviamente. Los autocargadores de tu \cfContenedor de Hammerspace™\c- te proveerán de un cargador nuevo en cada momento.\n" "\n" @@ -2583,33 +3231,13 @@ SWWM_LORETXT_PUNTZERGAMMA = "\cfPor cierto me acabo de dar cuenta de algo: Las balas SMW son de 6.9mm.\c-\n" "\n" "\cfNice.\c-"; -SWWM_LORETXT_PUSHERWEAPON = -"\cxDesignación:\c-\n" -"\cf Taladro Percutor de Microfusión \"Pusher\"\c-\n" -"\cxFabricante:\c-\n" -"\cf Instituto Tecnológico Tach-Engine\c-\n" -"\cxClasificación:\c-\n" -"\cf Herramienta de Minería\c-\n" -"\n" -"El \cfPusher\c- es un taladro percutor relativamente portátil hecho para tareas de minería y construcción. Su portabilidad viene en parte por el uso de una batería interna de microfusión, también cortesía de \cfTecnologías Tach-Engine\c-, ofreciendo suficiente potencia para 300 horas de uso constante. Tecnologías Tach-Engine no se hace responsable por el uso indebido de esta herramienta.\n" -"\n" -"\cfFuego Primario:\c- Operación normal. Apunta la broca hacia lo que necesites romper, y mantén pulsado el gatillo superior.\n" -"\n" -"\cfFuego Secundario:\c- Para aquellos casos en los que encuentres un material realmente duro y difícil de romper. Gira el mango lateral hasta que la broca haya retrocedido hasta una distancia que consideres adecuada, y luego pulsa el gatillo principal para golpear el objetivo, con la fuerza cargada.\n" -"\n" -"\cfADVERTENCIA:\c- La sujeción indebida durante la operación secundaria puede causar que la herramienta se resbale, mantén siempre el área libre para evitar daños colaterales.\n" -"\n" -"\cxNotas de Saya:\c-\n" -"\cfSí, las motosierras son lo típico en cuanto a \"herramienta hecha arma\", todos lo sabemos, pero, ¿y un puto martillo neumático?\c-\n" -"\n" -"\cfAhora que lo pienso, eso me recuerda a aquella metedura de pata tremenda de Mixom. Los frikis de la UAC pidieron un monte de martillos neumáticos para Mars City una vez, y los burros esos van y mandan motosierras. Pues vaya lío ese, ¿no crees?\c-"; SWWM_LORETXT_QUADRAVOL = "\cxDesignación:\c-\n" "\cf Quadravol (\"Cruz Ardiente\")\c-\n" "\cxFabricante:\c-\n" "\cf Eushura Kmonn Jr.\c-\n" "\cxClasificación:\c-\n" -"\cf Lanzadora de Proyectiles Ígneos\c-\n" +"\cf Pistola(?) Incendiaria\c-\n" "\n" "Una poderosa arma incendiaria proveniente de \cfKmonn Shuna\c-, preciada por comandantes \cfXekkian\c-. La \cfQuadravol\c- dispara bolas de fuego abrasador que explotan espectacularmente en contacto con cualquier cosa, liberando un intenso calor y fuerza cinética. Es considerada muy útil contra grupos ya que la fuerza de impacto es lo suficientemente potente para dispersarlos rápidamente. Un rasgo muy característico del arma es el hecho de que las llamas que salen de ella arderán con fuerza incluso bajo el agua.\n" "\n" @@ -2621,20 +3249,32 @@ SWWM_LORETXT_QUADRAVOL = "\n" "La Cruz Ardiente era el nombre de la espada del general la cual, al ser imbuida de magia, podía liberar mortíferos cortes cruzados de llamas fulminantes.\n" "\n" -"\cfFuego Primario:\c- Disparo de gran bola de fuego. Desvío mucho menor, por lo que su rango efectivo es muy largo. Incendia objetivos cercanos al impactar.\n" +"\cfFuego Primario:\c- Dispara grandes bolas de fuego, las cuales incendiarán objetivos cercanos al impactar.\n" "\n" "\cfFuego Secundario:\c- Bombea combustible adicional, incrementando la potencia de tus disparos, pero también su desvío, haciéndolos menos precisos. La sobrecarga excesiva puede resultar en una imprecisa descarga accidental, pero incluso esto tiene sus usos.\n" "\n" -"\cfFuego Terciario:\c- Mantén y pulsa fuego primario para alternar el modo de dispersión. Varias bolas de fuego menores (número relativo a la carga), con un desvío incrementado y rango efectivo menor, pero muy útil contra múltiples objetivos. Mantén y pulsa fuego secundario para alternar la postura de arma entre dos manos y una mano. Esto solo sirve para ser más vistoso al bombear, y no altera tu puntería pero si hace los disparos más lentos.\n" +"\cfFuego Terciario:\c- Alterna la postura de arma entre dos manos y una mano. Esto solo sirve para ser más vistoso al bombear, y no altera tu puntería pero si hace los disparos más lentos.\n" "\n" "\cfRecarga:\c- Inserta hasta cinco células de combustible en el tubo del arma. Cada célula es vaciada immediatemente en el \"crisol\" interno del arma, así que puedes cargar munición adicional mientras incrementas la carga.\n" "\n" "\cfTécnicas:\c- El arma tiene un cierto movimiento especial \"extra efectivo\" si te encuentras a poca distancia de tu objetivo. Hundiendo las cuatro bayonetas en el enemigo e inmediatamente después apretando el gatillo resultará en una potente explosión a bocajarro que lo enviará volando, cubierto en llamas.\n" "\n" +"Los diversos niveles de carga del crisol interno parecen alterar dramáticamente el comportamiento del proyectil. Los cambios más notables se reflejan aquí:\n" +"\n" +"\cfNivel 1:\c- Proyectil estable y veloz, con un radio de explosión moderado.\n" +"\n" +"\cfNivel 2:\c- Proyectil más lento con algo de desviación, mayor rango y daño de explosión.\n" +"\n" +"\cfNivel 3:\c- Proyectil lento, masivo, errático, con un potencial de explosión más dramático. Se rompe en sub-proyectiles al impactar.\n" +"\n" +"\cfNivel 4:\c- El proyectil se divide en múltiples fragmentos al salir del cañón. Cada sub-proyectil es solo ligeramente más débil que una bola de fuego de nivel 1.\n" +"\n" +"\cfNivel 5:\c- Llegado este punto, cualquier proyectil que fuera disparado explotará al instante hacia fuera. Este ataque es muy destructivo, y su daño y rango pueden incrementar aun más si todavía queda una célula llena en la recámara.\n" +"\n" "\cxNotas de Saya:\c-\n" "\cfTípicas ñoñerías superdramáticas de los Xekkian. La \"Cruz Ardiente\", en serio... Pero mola tanto como suena, al menos.\c-\n" "\n" -"\cfY por supuesto es jodidamente enorme, también, aunque la empuñadura está supuestamente adaptada. En serio que se me hace rarísimo como puedes hacer eso de... agrandar las manos, pero al menos te permite usar cosas así fácilmente.\c-\n" +"\cfY por supuesto es jodidamente enorme para lo que se supone que es una pistola. En serio, con esta gente, es que nunca se sabe. Hasta sus \"armas ligeras\" son gigantescas.\c-\n" "\n" "\cfEn fin, putas bolas de fuego, ¿¿¿que funcionan bajo el agua??? Voy a tener que echarle un ojo a la ciencia detrás de esto porque eso no tiene puto sentido y aun así... está ahí.\c-\n" "\n" @@ -2649,20 +3289,24 @@ SWWM_LORETXT_RAFANKOS = "\n" "Ideada por un supuestamente \"loco\" y \"desquiciado\" ingeniero de la División de Armas Avanzadas de \cfNekuratek\c-, el desarrollo de este arma se vio interrumpido mucho antes de alcanzar sus ambiciosos planes. Citando que este ingeniero cuyo nombre no será revelado \"jugó a demasiados videojuegos\", fue interrumpido antes de que llegara a implementar la friolera de 15 diferentes modos de operación del arma, haciéndola extremadamente complicada, costosa y \"completamente ridícula\".\n" "\n" -"El proyecto \cfRafan-Kos\c- (\"Arma Definitiva\" en Nukuribaku) solo sería completado en parte una vez el jefe de ingeniería \cfZanaveth Nekuraku I\c- se plantara personalmente para pedir que cesara tal \"inanidad\". El resultado final pareció satisfactorio a pesar de las quejas de su creador, y sería finalmente comercializado.\n" +"El proyecto \cfRafan-Kos\c- (\"Arma Definitiva\" en Nukuribaku) solo sería completado en parte una vez el jefe de ingeniería \cfZanaveth Nekuraku I\c- se plantara personalmente para pedir que cesara tal \"inanidad\". El resultado final pareció satisfactorio a pesar de las quejas de su creador, y sería finalmente comercializado... Durante poco tiempo.\n" "\n" "El arma emplea \cfKabbadon\c- como combustible, un subproducto común de la fusión de \cfNokorokinylum\c-, haciéndolo así fácil de fabricar. Sin embargo, dada la densidad y pureza requeridas en la creación de una sola cápsula de combustible hacen que su precio escale dramáticamente.\n" "\n" -"\cfFuego Primario:\c- Libera un radiante estallido de energía que se abre paso a través de todo, soltando chispas en todas direcciones a su paso y quemando objetivos cercanos. El estallido arde durante un máximo de cinco segundos antes de disiparse rápidamente.\n" +"\cfFuego Primario:\c- Libera un radiante estallido de energía que se abre paso a través de todo, soltando chispas en todas direcciones a su paso y quemando objetivos cercanos. El estallido arde durante un máximo de diez segundos con una cápsula cargada del todo.\n" "\n" -"\cfFuego Secundario:\c- Libera varios estallidos dispersos en un cono amplio, con un potencial destructivo similar, pero ardiendo más rápido, con mayor intensidad, y disipándose mucho antes.\n" +"\cfFuego Secundario:\c- Libera varios estallidos dispersos en un cono amplio, con una fracción del potencial destructivo total en cada uno. La cápsula se consumirá el doble de rápido en este modo.\n" "\n" -"\cfRecarga:\c- Coloca un nuevo cargador, cada uno almacenando cuatro cápsulas. La cápsula cargada debe gastarse completamente antes de poder insertar una nueva en la recámara.\n" +"\cfRecarga:\c- Coloca un nuevo cargador, cada uno almacenando cuatro cápsulas. La cápsula cargada debe gastarse completamente antes de poder insertar una nueva en la recámara (la eyección de la cápsula usada es automática).\n" +"\n" +"\cfTécnicas:\c- Al usar un solo gatillo con diferentes grados de presión, la acción de alternar entre ambos modos de disparo es completamente fluida.\n" "\n" "\cxNotas de Saya:\c-\n" "\cf¿\"Arma Definitiva\"? Menuda cursilada... Pero sabes, algo de todo esto hacía que me picotearan los sesos, y entonces todo encajó. Esta cosa es básicamente como esa carta de hechizo, la Chispa Maestra. Hostia, es que hasta suena y pinta igual...\c-\n" "\n" -"\cfJoder, si mola y todo, en serio. Me gusta, así que la puse en el mismo sitio que el otro armatoste súper descoyuntante. Ya sabes, como una alternativa más segura con la que tendrás menos posibilidades de matarte. He de admitir que Misa-Misa nos ha cargado con un material potente al traernos estas dos.\c-"; +"\cfJoder, si mola y todo, en serio. Me gusta, así que la puse en el mismo sitio que el otro armatoste súper descoyuntante. Ya sabes, como una alternativa más segura con la que tendrás menos posibilidades de matarte. He de admitir que Misa-Misa nos ha cargado con un material potente al traernos estas dos.\c-\n" +"\n" +"\cfPS: No intentes comer las cápsulas, ¿vale?\c-"; SWWM_LORETXT_RAGEKIT = "\cxDesignación:\c-\n" "\cf Ragekit\c-\n" @@ -2713,15 +3357,15 @@ SWWM_LORETXT_RAYKHOM = "\n" "Desde su creación por el \cfProfesor Eushura Kmonn Jr.\c-, la \cfRay-Khom\c- se ha quedado con un puesto permanente en el equipamiento de cada soldado \cfXekkian\c-. Fiable, eficiente, necesitando casi ningún mantenimiento al carecer de partes móviles a excepción de su mecanismo de carga. La munición es adicionalmente muy fácil de conseguir, al menos localmente, ya que la exportación lleva consigo severos impuestos.\n" "\n" -"El arma es potenciada en su totalidad por un compacto paquete de batería de cuatro celdas de Korberon-Eneiebium, fácil de reemplazar cuando se necesite. La munición viene en cargadores de 20. La munición en sí, proyectiles magnetizados sin casquillo de 40mm, incrustados de una carga de ignición hiperdensa de Dyratin, liberando potentes descargas de plasma ultracaliente, capaz de derretir rápidamente cualquier cosa a excepción de blindaje de Almacero de alta resonancia y causando potentes, urticantes quemaduras en piel Xekkian (o corrosión severa de tejido muscular y óseo en cualquier cosa más débil).\n" +"El arma es potenciada en su totalidad por un compacto paquete de batería de cuatro celdas de Korberon-Eneiebium, proporcionando un abundante suministro energético. La munición viene en cargadores de 10. La munición en sí, proyectiles magnetizados sin casquillo de 40mm, incrustados de una carga de ignición hiperdensa de Dyratin, liberando potentes descargas de plasma ultracaliente, capaz de derretir rápidamente cualquier cosa a excepción de blindaje de Almacero de alta resonancia y causando potentes, urticantes quemaduras en piel Xekkian (o corrosión severa de tejido muscular y óseo en cualquier cosa más débil).\n" "\n" "\cfFuego Primario:\c- Fuego continuo, rápido y preciso. Retroceso mínimo dada la operación electromagnética, mayormente silencioso ya que los proyectiles son disparados a una velocidad poco menor que la del sonido. Tus enemigos tienen la garantía de no enterarse de tu ataque hasta ser demasiado tarde.\n" "\n" -"\cfFuego Secundario:\c- Emplea los emisores de pulsos concentrados a lo largo de los filos del arma, emitiendo una potente descarga eléctrica delante del usuario, aturdiendo temporalmente todo lo que se acerque. Puede causar la muerte de objetivos débiles. Se recomienda usar con moderación, ya que consume rápidamente la batería.\n" +"\cfFuego Secundario:\c- Emplea los emisores de pulsos concentrados a lo largo de los filos del arma, emitiendo una potente descarga eléctrica delante del usuario, aturdiendo temporalmente todo lo que se acerque. Puede causar la muerte de objetivos débiles. Se ha de tener en cuenta que esta acción no se debe realizar así porque sí, ya que los condensadores requieren mucho tiempo para recargarse por completo, temporalmente desactivando también la función de fuego primario.\n" "\n" -"\cfRecarga Primaria:\c- Recarga el arma.\n" +"\cfRecarga:\c- Recarga el arma.\n" "\n" -"\cfRecarga Secundaria:\c- Cambia la batería. Esta acción solo puede hacerse en cuanto la carga sea lo suficientemente baja, ya que sería un derroche de otro modo.\n" +"\cfZoom:\c- Usa la mira para disparos a distancia. El nivel de aumento se ajusta automáticamente en base al sondeo de distancia, y la mira además simulará la trayectoria del proyectil sobre la marcha, para que puedas saber exactamente donde apuntar.\n" "\n" "\cfTécnicas:\c- El fuego secundario incrementa en letalidad al usarse en líquidos conductivos tales como el agua. Simplemente asegúrate de no estar en contacto con ella.\n" "\n" @@ -2737,7 +3381,7 @@ SWWM_LORETAG_REFRESHER = "Refrescador"; SWWM_LORETXT_REFRESHER = "\cxDesignación:\c-\n" "\cf Refrescador\c-\n" -"\cfFabricante:\c-\n" +"\cxFabricante:\c-\n" "\cf Desconocido\c-\n" "\cxClasificación:\c-\n" "\cf Artefacto Curativo\c-\n" @@ -2750,6 +3394,83 @@ SWWM_LORETXT_REFRESHER = "\n" "\cxNotas de Saya:\c-\n" "\cfAlienígenas Egipcios Antiguos™. Bien, mola, pues sí, cosa buena. Pero los chismes estos mira que son útiles, son casi como... ah, joder, voy a sonar como el friki ese pero sí, son como... vidas extra, ¿más o menos?\c-"; +SWWM_LORETXT_REUBENS = +" \cxNombre Completo:\c-\n" +" \cf Reubens Cyrus Karnanaiahmani\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Qurensniv\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 244 AC\c-\n" +" \cxOccupation:\c-\n" +" \cf CEO, CTO (Cyrus Enterprises)\c-\n" +" \cxTwitter:\c-\n" +" \cf @rbkhmani\c-\n" +"\n" +"\n" +"\cfReubens es el segundo hijo del difunto \c-Marc Pyurgi Karnanaiahmani\cf, anterior líder del viejo \c-Reino de Karnanaiahma\cf, ahora reformado como la \c-República de Karnanaiahma\cf por su hermano mayor \c-Rubin Mhul Karnanaiahmani\cf. Durante el reinado tiránico de su difunto padre, huyó del país junto con varios individuos los cuales habían sido señalados como \"traidores\" por el monarca demente, todo resultando de una peculiar profecía la cual decía que \c-\"un hombre Qurensniv de pelo rubio y ojos verdes causará el hundimiento del reino\"\cf. El resultado de este éxodo fue la formación del pueblo de \c-Kereshnovka\cf en \c-Siberia\cf central, del cual es alcalde hasta el día de hoy.\n" +"\n" +"Adicionalmente, como hombre de gran intelecto y con un interés en impulsar la evolución tecnológica, fundó su propio startup, \c-Cyrus Enterprises\cf, del cual es el único empleado. A pesar de esto, han surgido grandes logros de esta pequeña empresa, gracias principalmente a las muchas otras compañías que ofrecen financiación y recursos de manufactura para que siga creando y vendiendo toda clase de artilugios technológicos, especialmente aquellos con aplicaciones militares.\n" +"\n" +"Reubens es bien conocido no solo por ser un inventor nato, sino también por ser todo un experto en combate cuerpo a cuerpo, siendo diez veces campeón de \c-Ko-Ron-Jai\cf (artes marciales Qurensniv), y también un disparador excelente, capaz de alcanzar la cabeza de una cerilla desde un kilómetro de distancia con un simple revolver (aunque esto último no ha sido confirmado). También es un ávido gamer, y se le ha notado comparar muchas veces la vida real y los videojuegos, a veces hasta niveles preocupantes.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfEs un friki, UN PUTO FRIKI, ¡UN FRIKAZO!\c-\n" +"\n" +"\cfHala, ya lo he dicho. Es que sí, vale, lo que hace, mola y tal, pero MADRE DE DIOS es que el tío me pone de los nervios a veces con su frikismo de videojuegos. ¿No dejarte ir por ahí con todo equipado, y en vez de eso CISCÁNDOLO TODO POR AHÍ para que lo recojas? Esa es una. Que después de cada misión decida quitarte TODO lo que pillaste, es otra cosa también. Pero, que nos suelte unas pelillas cada vez que revientes a algún maleante, eso puedo aceptarlo, que nos vale para cubrir los costes de todo.\c-\n" +"\n" +"\cfA ver, puede que me ponga de los nervios, sí, pero el tío fue mi primer socio ahí en plan negocios serios, y joder, tampoco es tan malo aparte de todo el frikismo que suelta... Y bueno, siendo sincera, yo también soy toda una friki repelente, y puedes citarme en eso.\c-"; +SWWM_LORETXT_RIKA = +" \cxNombre Completo:\c-\n" +" \cf Rika Isuzu\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2049-02-08\c-\n" +" \cxOcupación:\c-\n" +" \cf Entrenadora de Combate (Akari Labs)\c-\n" +"\n" +"\n" +"\n" +"\n" +"\cfRika\c- fue creada en 2049 como una de las primeras en una serie de \cfMaidbots\c- creadas con cuerpos masculinos, diseñados inicialmente para uso militar. Sin embargo, tras su baja de servicio y consiguiente rehabilitación, optó por tomar una forma más femenina, convirtiéndose así en la primera Maidbot transgénero conocida.\n" +"\n" +"A pesar de su popularidad, aun no ha logrado encontrar una familia adoptiva, por lo que reside en \cfAkari Labs\c-, trabajando a tiempo parcial como guarda de seguridad. Eso sí, una vez se realizó el proyecto \cfDemolicionista\c-, encontró su nueva vocación: Entrenar al ya mencionado robot de combate.\n" +"\n" +"Una de las aficiones de Rika es el cosplay, una vez habiéndose disfrazado de uno de los personajes de videojuego favoritos de \cfIbuki Miyamoto\c- por su cumpleaños. Queda decir que el éxito del cual le concedió un lugar entre las innumerables novias del \cfOni Rojo\c-.\n" +"\n" +"Otra de sus aficiones es la práctica de tiro, para el auto-proclamado propósito de \"no dejar que se me pudra mi maestría tope guay\". Es la responsable de montar un campo de tiro interior dentro de las instalaciones de Akari Labs, para uso libre de cualquiera, aunque normalmente lo frecuentan ella, Ibuki y \cfSaya Miyamoto\c-.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfMola que se ofreciera voluntaria para entrenarte. A ver, es que tampoco iba Meido a hacer ese trabajo, ya sabes que no le gustan las armas y tal.\c-\n" +"\n" +"\cfSeguro que harás que se sienta orgullosa de ti, Demo-chan.\c-"; +SWWM_LORETXT_RIKA2 = +" \cxNombre Completo:\c-\n" +" \cf Rika Isuzu\c-\n" +" \cxNacionalidad:\c-\n" +" \cf Japonesa\c-\n" +" \cxFecha de Nacimiento:\c-\n" +" \cf 2049-02-08\c-\n" +" \cxOcupación:\c-\n" +" \cf Entrenadora de Combate (Akari Labs)\c-\n" +"\n" +"\n" +"\n" +"\n" +"\cfRika\c- fue creada en 2049 como una de las primeras en una serie de \cfMaidbots\c- creadas con cuerpos masculinos, diseñados inicialmente para uso militar. Sin embargo, tras su baja de servicio y consiguiente rehabilitación, optó por tomar una forma más femenina, convirtiéndose así en la primera Maidbot transgénero conocida.\n" +"\n" +"A pesar de su popularidad, aun no ha logrado encontrar una familia adoptiva, por lo que reside en \cfAkari Labs\c-, trabajando a tiempo parcial como guarda de seguridad. Eso sí, una vez se realizó el proyecto \cfDemolicionista\c-, encontró su nueva vocación: Entrenar al ya mencionado robot de combate.\n" +"\n" +"Una de las aficiones de Rika es el cosplay, una vez habiéndose disfrazado de uno de los personajes de videojuego favoritos de \cfIbuki Miyamoto\c- por su cumpleaños. Queda decir que el éxito del cual le concedió un lugar entre las innumerables novias del \cfOni Rojo\c-.\n" +"\n" +"Otra de sus aficiones es la práctica de tiro, para el auto-proclamado propósito de \"no dejar que se me pudra mi maestría tope guay\". Es la responsable de montar un campo de tiro interior dentro de las instalaciones de Akari Labs, para uso libre de cualquiera, aunque normalmente lo frecuentan ella, Ibuki y \cfSaya Miyamoto\c-.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfMola que se ofreciera voluntaria para entrenarte. A ver, es que tampoco iba Meido a hacer ese trabajo, ya sabes que no le gustan las armas y tal.\c-\n" +"\n" +"\cfSeguro que harás que se sienta orgullosa de ti, Demo-chan.\c-\n" +"\n" +"\cfActualización: La cara que puso al ver tu nuevo cuerpo de maidbot fue algo digno de enmarcar. Mira, Demo, si las dos, ya sabes, queréis \"conoceros mutuamente\" un poco más, por mí todo chachi. A ver, si es que estamos todas en una relación abierta. Guiño guiño.\c-"; SWWM_LORETXT_RYUJI = " \cxNombre Completo:\c-\n" " \cf Ryuji Miyamoto\c-\n" @@ -2763,7 +3484,7 @@ SWWM_LORETXT_RYUJI = " \cf Inventor\c-\n" "\n" "\n" -"\cfRyuji\c- nació en \cfGensokyo\c- en 1956, pasando la mayor parte de su vida en la \cfAldea Humana\c-, el único asentamiento de la región habitado completamente por humanos, en lugar de Youkai. Durante su adolescencia, se volvió bastante rebelde, deseando abandonar la aldea y tener \"aventuras\". Un día, escapó, y se perdió en el bosque de bambú rodeando \cfEientei\c-. Ahí, se cruzó con \cfNana\c-, la hija de \cfKaguya Houraisan\c-, y los dos se hicieron amigos. Después de ella lo guiara de vuelta a la aldea, Ryuji le prometió que regresaría un día, para casarse con ella, y llevarla con él a ver el mundo exterior.\n" +"\cfRyuji\c- nació en \cfGensokyo\c- en 1956, pasando la mayor parte de su vida en la \cfAldea Humana\c-, el único asentamiento de la región habitado completamente por humanos, en lugar de Youkai. Durante su adolescencia, se volvió bastante rebelde, deseando abandonar la aldea y tener \"aventuras\". Un día, escapó, y se perdió en el bosque de bambú rodeando \cfEientei\c-. Ahí, se cruzó con \cfNana\c-, la hija de \cfKaguya Houraisan\c-, y los dos se hicieron amigos. Después de que ella lo guiara de vuelta a la aldea, Ryuji le prometió que regresaría un día, para casarse con ella, y llevarla con él a ver el mundo exterior.\n" "\n" "Ryuji y Nana realizaron su \"fuga\" en 1973, y se asentaron en la ciudad de Kasukabe, donde los dos formaron una familia, comenzando con su primer hijo, \cfTaro\c- en 1985, quien sería seguido luego de \cfSaya\c- en 1993 y \cfYui\c- en 2009.\n" "\n" @@ -2796,7 +3517,7 @@ SWWM_LORETXT_SAFETYTETHER = "Simplemente gira ambos extremos en direcciones opuestas, y el dispositivo se encenderá. Si el usuario se encuentra ya cerca del punto de destino, el transporte será cancelado para evitar el uso accidental, de lo contrario, la luz se volverá azul y el transporte será realizado.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfAh, la forma perfecta de escapar una sala cerrada...\c-\n" +"\cfAh, la forma perfecta de escapar de una sala cerrada...\c-\n" "\n" "\cfPues sí, esto está basado en tu collar, funciona parecido también, excepto que no soy yo quien lo activa cuando estás en peligro de muerte, y sus efectos son más \"dramáticos\" (ya lo verás). Es magia simple, realmente. Esos idiotas de la UAC se cagarían los calzones si supieran que hemos tenido la magia para hacer teletransportes distantes, hasta entre universos, mucho antes de que existieran sus experimentos.\c-\n" "\n" @@ -2815,11 +3536,32 @@ SWWM_LORETXT_SAFETYTETHER2 = "Simplemente gira ambos extremos en direcciones opuestas, y el dispositivo se encenderá. Si el usuario se encuentra ya cerca del punto de destino, el transporte será cancelado para evitar el uso accidental, de lo contrario, la luz se volverá azul y el transporte será realizado.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfAh, la forma perfecta de escapar una sala cerrada...\c-\n" +"\cfAh, la forma perfecta de escapar de una sala cerrada...\c-\n" "\n" "\cfPues sí, esto está basado en tu collar, funciona parecido también, excepto que no soy yo quien lo activa cuando estás en peligro de muerte, y sus efectos son más \"dramáticos\" (ya lo verás). Es magia simple, realmente. Esos idiotas de la UAC se cagarían los calzones si supieran que hemos tenido la magia para hacer teletransportes distantes, hasta entre universos, mucho antes de que existieran sus experimentos.\c-\n" "\n" "\cfEspero que a Misa no le importe que haya reutilizado uno de sus diseños de granada para esto.\c-"; +SWWM_LORETAG_SALTBOT = "Torreta Battle-Boi"; +SWWM_LORETXT_SALTBOT = +"\cxDesignación:\c-\n" +"\cf Torreta Battle-Boi\c-\n" +"\cxFabricante:\c-\n" +"\cf Akari Labs\c-\n" +"\cxClasificación:\c-\n" +"\cf Sistema de Defensa Portátil\c-\n" +"\n" +"La \cfBattle-Boi\c- es una torreta portátil con control remoto equipada con dos escopetas semiautomáticas alimentadas por \cfHammerspace\c-. Hay múltiples opciones de munición disponibles, pero las unidades actualmente disponibles para tu misión están cargadas con cartuchos de sal de Kinylum del calibre diez, útil para el control de masas dada su potencia de impacto, junto con el rastro de radiación que los fragmentos de sal dejan a su paso.\n" +"\n" +"Cada unidad puede permanecer operativa durante días, siempre que se reabastezca cuando sea necesario. Conseguirás \cfPuntuación\c- por cada enemigo que eliminen, así que esto puede reducir potencialmente el coste de reabastecimiento.\n" +"\n" +"Si reciben daño, se pueden reparar de forma gratuita al colocarlas en almacenamiento. Ten en cuenta que las unidades emplazadas no serán devueltas si te alejas demasiado del área designada. Si las dejas atrás, se quedarán ahí y se desactivarán automáticamente.\n" +"\n" +"Dada la naturaleza del control remoto del dispositivo, solo una unidad puede estar activa durante tus misiones. Por favor, sé amable con el operador, ya que no puede comunicarse directamente contigo de ninguna forma, y simplemente está intentando ayudarte de la mejor forma que puede.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfNo te voy a decir quien las está controlando. Es un secreto.\c-\n" +"\n" +"\cfNo, no soy yo. No puedo aguantar despierta 24/7.\c-"; SWWM_LORETXT_SANKAIDERIHA = "\cxNombre:\c-\n" "\cf Sankaideriha (\"Capital de Magia\")\c-\n" @@ -2873,20 +3615,18 @@ SWWM_LORETXT_SAYA = "\n" "En 2010, junto con su hermano Taro, los dos fundaron \cfAkari Labs\c-, donde su primer proyecto fue un robot de limpieza autónomo, el cual evolucionaría en la \cfMaidbot\c- moderna, una de las creaciones más populares de su compañía. También idearía muchos otros tipos de robots, todos controlados por una IA compleja que ella misma había diseñado junto con su hermano.\n" "\n" -"En 2018, Saya \"dejó de envejecer\", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que mantendría para siempre su físico actual, siendo \"bajita y plana\", algo que odió mucho.\n" +"En 2018, Saya \"dejó de envejecer\", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que esto significaba que sobreviviría a muchas personas de su vida, y tal prospecto no le resultó nada agradable.\n" "\n" "Saya recibiría frecuentemente el apodo de \cfNo-Tomoko\c- en las redes, en referencia a un personaje de una popular serie de manga a quien la gente la comparaba. Es de notar que \"en cuanto a personalidad y apariencia, la similitud está ahí, definitivamente\". Saya es bien conocida por ser bastante directa al hablar con la gente, si es que lo hace, ya que no suele hablar mucho en persona. En línea, sin embargo, cambia completamente, discutiendo abiertamente con cualquiera que se le cruce, casualmente entremetiéndose en conversaciones aleatorias, o despotricando de forma extensiva sobre varios temas, y debatiendo furiosamente con haters.\n" "\n" -"Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está \"siempre horny on main\", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es \"sólo amistoso, entre amigos\".\n" +"La forma de hablar de Saya es más bien tosca en ocasiones, y se sabe que usa casualmente expresiones groseras con regularidad en medio de una conversación. Es uno de sus muchos malos hábitos de los cuales tiene dificultades para corregir, y esto ha resultado en múltiples malentendidos y situaciones embarazosas. Aun así, siempre se disculpa immediatamente si se le llama la atención.\n" "\n" -"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" -"\n" -"Actualmente, Saya tiene dos novias: Meido Miyamoto e \cfIbuki Miyamoto\c-. Ambas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente.\n" +"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Novia Es Una Sirvienta Robot\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" "\n" "\cxNotas de Saya:\c-\n" "\cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c-\n" "\n" -"\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. Mi top de fetiches incluye las tetas enormes, las maids, chicos afeminados y la heterocromía. Mi chica monstruo favorita es la chica polilla, y mi waifu es Mashiro (específicamente la Mashiro del capítulo 3, no la Mashiro pedófila yandere del resto, no gracias). Lo último: Puede que no me duche a menudo, o use desodorante o nada, pero no apesto, huelo bien, y la gente me dice que sí, que está muy bien.\c-\n" +"\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. También me encantan las chicas polilla, son bonitas y molan mucho. Oh, y las maids, claro está, y la moda gótica, aunque me da demasiado corte intentar vestirme así.\c-\n" "\n" "\cfBueno, ¿satisfecha, Demo-chan? ¿He saciado tu sed de Saya Facts™? Bien, entonces deberías volver al trabajo.\c-"; SWWM_LORETXT_SAYA2 = @@ -2906,20 +3646,18 @@ SWWM_LORETXT_SAYA2 = "\n" "En 2010, junto con su hermano Taro, los dos fundaron \cfAkari Labs\c-, donde su primer proyecto fue un robot de limpieza autónomo, el cual evolucionaría en la \cfMaidbot\c- moderna, una de las creaciones más populares de su compañía. También idearía muchos otros tipos de robots, todos controlados por una IA compleja que ella misma había diseñado junto con su hermano.\n" "\n" -"En 2018, Saya \"dejó de envejecer\", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que mantendría para siempre su físico actual, siendo \"bajita y plana\", algo que odió mucho.\n" +"En 2018, Saya \"dejó de envejecer\", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que esto significaba que sobreviviría a muchas personas de su vida, y tal prospecto no le resultó nada agradable.\n" "\n" "Saya recibiría frecuentemente el apodo de \cfNo-Tomoko\c- en las redes, en referencia a un personaje de una popular serie de manga a quien la gente la comparaba. Es de notar que \"en cuanto a personalidad y apariencia, la similitud está ahí, definitivamente\". Saya es bien conocida por ser bastante directa al hablar con la gente, si es que lo hace, ya que no suele hablar mucho en persona. En línea, sin embargo, cambia completamente, discutiendo abiertamente con cualquiera que se le cruce, casualmente entremetiéndose en conversaciones aleatorias, o despotricando de forma extensiva sobre varios temas, y debatiendo furiosamente con haters.\n" "\n" -"Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está \"siempre horny on main\", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es \"sólo amistoso, entre amigos\".\n" +"La forma de hablar de Saya es más bien tosca en ocasiones, y se sabe que usa casualmente expresiones groseras con regularidad en medio de una conversación. Es uno de sus muchos malos hábitos de los cuales tiene dificultades para corregir, y esto ha resultado en múltiples malentendidos y situaciones embarazosas. Aun así, siempre se disculpa immediatamente si se le llama la atención.\n" "\n" -"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" -"\n" -"Actualmente, Saya tiene tres novias: Meido Miyamoto, \cfIbuki Miyamoto\c- y el \cfDemolicionista\c-. Todas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente.\n" +"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Novia Es Una Sirvienta Robot\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" "\n" "\cxNotas de Saya:\c-\n" "\cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c-\n" "\n" -"\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. Mi top de fetiches incluye las tetas enormes, las maids, chicos afeminados y la heterocromía. Mi chica monstruo favorita es la chica polilla, y mi waifu es Mashiro (específicamente la Mashiro del capítulo 3, no la Mashiro pedófila yandere del resto, no gracias). Lo último: Puede que no me duche a menudo, o use desodorante o nada, pero no apesto, huelo bien, y la gente me dice que sí, que está muy bien.\c-\n" +"\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. También me encantan las chicas polilla, son bonitas y molan mucho. Oh, y las maids, claro está, y la moda gótica, aunque me da demasiado corte intentar vestirme así.\c-\n" "\n" "\cf¿Satisfecha? Bien, pero aquí tienes un último Saya Fact™: Te quiero, Demo-chan~\c- \cg♥\c-\n" "\n" @@ -2941,20 +3679,20 @@ SWWM_LORETXT_SAYA3 = "\n" "En 2010, junto con su hermano Taro, los dos fundaron \cfAkari Labs\c-, donde su primer proyecto fue un robot de limpieza autónomo, el cual evolucionaría en la \cfMaidbot\c- moderna, una de las creaciones más populares de su compañía. También idearía muchos otros tipos de robots, todos controlados por una IA compleja que ella misma había diseñado junto con su hermano.\n" "\n" -"En 2018, Saya \"dejó de envejecer\", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que mantendría para siempre su físico actual, siendo \"bajita y plana\", algo que odió mucho.\n" +"En 2018, Saya \"dejó de envejecer\", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que esto significaba que sobreviviría a muchas personas de su vida, y tal prospecto no le resultó nada agradable.\n" "\n" "Saya recibiría frecuentemente el apodo de \cfNo-Tomoko\c- en las redes, en referencia a un personaje de una popular serie de manga a quien la gente la comparaba. Es de notar que \"en cuanto a personalidad y apariencia, la similitud está ahí, definitivamente\". Saya es bien conocida por ser bastante directa al hablar con la gente, si es que lo hace, ya que no suele hablar mucho en persona. En línea, sin embargo, cambia completamente, discutiendo abiertamente con cualquiera que se le cruce, casualmente entremetiéndose en conversaciones aleatorias, o despotricando de forma extensiva sobre varios temas, y debatiendo furiosamente con haters.\n" "\n" -"Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está \"siempre horny on main\", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es \"sólo amistoso, entre amigos\".\n" +"La forma de hablar de Saya es más bien tosca en ocasiones, y se sabe que usa casualmente expresiones groseras con regularidad en medio de una conversación. Es uno de sus muchos malos hábitos de los cuales tiene dificultades para corregir, y esto ha resultado en múltiples malentendidos y situaciones embarazosas. Aun así, siempre se disculpa immediatamente si se le llama la atención.\n" "\n" -"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Maid Es Un Robot Del Sexo\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" +"Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo \cfHaskell\c-), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada \cfMi Novia Es Una Sirvienta Robot\c-, basado parcialmente en sus experiencias saliendo con \cfMeido Miyamoto\c-. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, \cfEl Proyecto Akari\c-, una historia sobre experimentos de teletransporte y viajes interdimensionales \"que no se va a la mierda como el resto\". Tras el desastre en las bases de la \cfUAC\c- en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, \"solo para joder a esos idiotas\".\n" "\n" -"Actualmente, Saya y sus creaciones Meido Miyamoto, \cfIbuki Miyamoto\c- y el \cfDemolicionista\c- están todas casadas con \cfKirin Xanai\c-, líder del \cfImperio Sykhai\c- de \cfAkkou\c-.\n" +"Actualmente, Saya, junto con Meido Miyamoto, \cfIbuki Miyamoto\c- y el \cfDemolicionista\c- están todas casadas con \cfKirin Xanai\c-, líder del \cfImperio Sykhai\c- de \cfAkkou\c-.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c-\n" "\n" -"\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. Mi top de fetiches incluye las tetas enormes, las maids, chicos afeminados y la heterocromía. Mi chica monstruo favorita es la chica polilla, y mi waifu es Mashiro (específicamente la Mashiro del capítulo 3, no la Mashiro pedófila yandere del resto, no gracias). Lo último: Puede que no me duche a menudo, o use desodorante o nada, pero no apesto, huelo bien, y la gente me dice que sí, que está muy bien.\c-\n" +"\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. También me encantan las chicas polilla, son bonitas y molan mucho. Oh, y las maids, claro está, y la moda gótica, aunque me da demasiado corte intentar vestirme así.\c-\n" "\n" "\cf¿Satisfecha? Bien, pero aquí tienes un último Saya Fact™: Te quiero, Demo-chan~\c- \cg♥\c-\n" "\n" @@ -2970,14 +3708,29 @@ SWWM_LORETXT_SAYABEAN = "\cxMaldito:\c-\n" "\cf Muy Sí\c-\n" "\n" -"\cfPeluche Bean Maldito de Saya\c- que se come tus aperitivos y te llama horny.\n" +"\cfPeluche Bean Maldito de Saya\c- que se come tus aperitivos y te llama friki.\n" "\n" "Este objeto no está realmente maldito. ¿O sí...?\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfOK, teniendo en cuenta quien lo ha hecho, SÍ que me apuesto a que esto está maldito. Y por supuesto sé también a que hace referencia. ¿Es que como coño lo sabe? Tiene que ser más de toda esa cosa de manipulación de realidad, otra vez.\c-\n" +"\cfOK, teniendo en cuenta quien lo ha hecho, SÍ que me apuesto a que esto está maldito. Y por supuesto sé también a que hace referencia. ¿Es que como diantres lo sabe? Tiene que ser más de toda esa cosa de manipulación de realidad, otra vez.\c-\n" "\n" -"\cfAun así, es precioso... Una obra de arte, sí. Estoy segura de que lo estás apretujando en tus brazos ahora mismo. Oh, lo sabré. Lo oiré reírse en el directo cuando lo hagas.\c-"; +"\cfAun así, es precioso... Una obra de arte, sí. Estoy segura de que no podrás resistir lo adorable que es y ya lo estarás apretujando en tus brazos. Oh, lo sabré, lo oiré reírse en el directo cuando lo hagas.\c-"; +SWWM_LORETAG_SAYASMUG = "Taza de Saya"; +SWWM_LORETXT_SAYASMUG = +"\cxDesignación:\c-\n" +"\cf Taza Moth Pussy\c-\n" +"\cxFabricante:\c-\n" +"\cf Taro Miyamoto\c-\n" +"\cxClasificación:\c-\n" +"\cf Regalo Personalizado\c-\n" +"\n" +"Una taza de café personalizada, la cual fue recibida como regalo de cumpleaños por \cfSaya Miyamoto\c- de parte de su hermano \cfTaro\c-, a petición personal. Los dibujos en ambos lados muestran una imagen de una chica polilla, con el texto \"MOTH PUSSY\" debajo. Al preguntarles sobre lo que significaba esto, los hermanos simplemente dijeron que era un \"meme antiguo\".\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfMi amor por las chicas polilla es eterno, Demo-chan.\c-\n" +"\n" +"\cfPor cierto, me aseguré de lavarla a fondo antes de que esos dos la metieran en su cosa de gacha esa, no vaya a ser que los demonios te puedan seguir el rastro por el olor a café.\c-"; SWWM_LORETAG_SCORESYSTEM = "Sistema de Puntos"; SWWM_LORETXT_SCORESYSTEM = "\cxDesignación:\c-\n" @@ -2993,7 +3746,7 @@ SWWM_LORETXT_SCORESYSTEM = "\n" "Los ítems obtenidos pueden también reembolsarse por puntos adicionales, permitiendo intercambiarlos por cualquier otra cosa que prefieras en su lugar. El proceso es automatizado al obtener armas que ya tengas, o alcances el límite de carga de ciertos ítems.\n" "\n" -"Por favor ten en cuenta que hay un límite impuesto de 999.999.999.999.999.999 puntos, el cual, en la práctica, no debería ser posible alcanzar.\n" +"Por favor ten en cuenta que hay un límite impuesto de 999999999 puntos, el cual, en la práctica, tomaría mucho, mucho tiempo alcanzar.\n" "\n" "\cxNotas de Saya:\c-\n" "\cfVale, voy a ser sincera: Esto es otra cosa de videojuego del friki ese. Pero creo que es algo bueno, en cierto modo. Hay algo en esa sensación tan estimulante de ver los números crecer, sabes, y además puedes pillarte cosas bonitas con eso. A ver es que no puedo ocultártelo pero esto es algo en lo que coincidimos los dos, por tu bien.\c-\n" @@ -3041,7 +3794,24 @@ SWWM_LORETXT_SERPENTRIDERS2 = "No está claro si estos demonios tienen alguna conexión con el \cfInfierno\c- de nuestro universo, o si es que, posiblemente, haya diferentes lugares que uno pueda llamar \"Infierno\" en cada mundo de este vasto multiverso. Sin embargo, lo que sí está claro, es que son una amenaza mayor a la paz en estos mundos que hemos encontrado, y deben ser eliminados.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfCaperucita roja fue visto y no visto la otra vez, así que dudo que alguien \"considerablemente más fuerte\" haga mucha diferencia, ¿no crees? Además, eres lo suficientemente lista para no caer en los trucos y trampas de nadie, vaya que sí. No va a poder contigo, juju...\c-"; +"\cfCaperucita roja fue visto y no visto la otra vez, así que dudo que alguien \"considerablemente más fuerte\" haga mucha diferencia, ¿no crees? Además, eres lo suficientemente lista para no caer en los trucos y trampas de nadie, vaya que sí. No va a poder contigo, juju...\c-\n" +"\n" +"\cfPD: Sigo pensando que es una estupidez que se llamen jinetes de serpiente cuando solo uno de ellos va montado en una.\c-"; +SWWM_LORETAG_SHARKPLUSH = "Peluche Tiburón"; +SWWM_LORETXT_SHARKPLUSH = +"\cxDesignación:\c-\n" +"\cf Dr. Shorky\c-\n" +"\cxFabricante:\c-\n" +"\cf Nukritas 2xx\c-\n" +"\cxClasificación:\c-\n" +"\cf Muñeco de Peluche\c-\n" +"\n" +"Un muñeco de peluche de un popular tiburón hecho a mano, equipado con un estetoscopio y una bata médica. Una más de las creaciones de \cfNukritas 2xx\c-, encargada como regalo a la \cfDemolicionista\c-.\n" +"\n" +"\cxNotas de Saya:\c-\n" +"\cfExplicarle a la gente como se nos ocurrió esto llevaría horas, jeje.\c-\n" +"\n" +"\cfEn fin, al menos se me ocurrió que lo querrías tener contigo. Tampoco es que se vaya a estropear considerando la calidad absurda de lo que se supone de que esté hecho. A ver, es que nunca se lo he preguntado.\c-"; SWWM_LORETXT_SIDHE = "\cxNombre:\c-\n" "\cf Sidhe\c-\n" @@ -3067,19 +3837,17 @@ SWWM_LORETXT_SILVERBULLET = "\cf Blackmann Arms S.L.\c-\n" "\cf Aeronáutica Forx\c-\n" "\cxClasificación:\c-\n" -"\cf Rifle de Francotirador de Calibre Ultra-Alto\c-\n" +"\cf Fusil Antimaterial de Calibre Ultra-Alto\c-\n" "\n" "El \cfSilver Bullet JET\c- es el miembro de calibre 1.150 de la serie \cfSilver Bullet\c- de rifles de calibre ultra-alto fabricados por \cfBlackmann Arms\c-. Fue creado como una alternativa ligera y más \"razonable\" del modelo \cfBehemoth\c- de calibre 1.350. Pesando 43 kilos y con una longitud total de 2.4 metros, es suficientemente compacto para el uso por humanos no mejorados.\n" "\n" -"La munición diseñada principalmente para este modelo son las balas \cfXSB (eXplosive Super Burst)\c- del calibre 1.150. Estas bestiales balas están basadas parcialmente en los cartuchos estándar de 30x113mm de la OTAN, y emplean una carga de baja densidad de \cfExplodium\c- como propulsor, permitiendo una alta velocidad siendo a la vez seguro de usar. Las balas en sí están compuestas de un núcleo de carburo de tungsteno, con una envoltura de aluminio, y decorado con una capa fina de plata para una apariencia más estética (estas Balas de Plata, ciertamente, NO están hechas de plata). Las balas XSB pueden penetrar varios objetivos antes de detenerse, dependiendo de su tamaño, pueden incluso hacer lo mismo con paredes ligeras.\n" -"\n" -"La munición secundaria son las balas \cfFCB (Fat Chode Bomb)\c- también de calibre 1.150. Llamadas así por el propio CEO de Blackmann Arms, las FCB son bastante similares a la munición XSB estándar, con la diferencia de que estas balas están llenas de Explodium, el cual, al impactar, es liberado violentamente, propagando su estallido mortífero a través de superficies sólidas. Dada la volatilidad de estas balas, el propulsor empleado es ligeramente menos potente, lo cual resulta en un disminuído potencial de penetración de objetivos, pero la explosión definitivamente lo compensa. La carga explosiva es tan potente que puede derribar completamente algunas paredes.\n" +"La munición diseñada para este modelo son las balas \cfXSB (eXplosive Super Burst)\c- del calibre 1.150. Este bestial cartucho de 30x140mm emplea una carga de baja densidad de \cfExplodium\c- como propulsor, permitiendo una alta velocidad siendo a la vez seguro de usar. Las balas en sí están compuestas de un núcleo de carburo de tungsteno, con una envoltura de aluminio, y decorado con una capa fina de plata para una apariencia más estética (estas Balas de Plata, ciertamente, NO están hechas de plata). Las balas XSB pueden penetrar varios objetivos antes de detenerse, dependiendo de su tamaño, pueden incluso hacer lo mismo con paredes ligeras.\n" "\n" "Para poder compensar su masivo retroceso, el arma redirige una parte de los gases de ignición hasta un grupo de jets compensadores diseñados por \cfAeronáutica Forx\c-. Aunque son parcialmente refrigerados en el proceso, son aun lo suficientemente cálidos para causar ligero daño a usuarios que no lleven la protección adecuada.\n" "\n" -"\cfFuego Primario:\c- Dispara la bala. Cualquier objetivo alcanzado por ella queda hecho papilla. Un segundo pulsado tras disparar cargará otra bala.\n" +"\cfFuego Primario:\c- Dispara la bala. Cualquier objetivo alcanzado por ella queda hecho papilla.\n" "\n" -"\cfFuego Secundario:\c- Pulsa para alternar entre balas XSB y FCB para la siguiente recarga, si están disponibles. Mantén y luego pulsa fuego primario para accionar el perno manualmente, permitiéndote recuperar balas sin usar.\n" +"\cfFuego Secundario:\c- Acciona el perno, insertando una nueva bala en la recámara si hay disponibles. Ten en cuenta que puedes eyectar balas sin usar.\n" "\n" "\cfRecarga:\c- Recarga el arma. Cada cargador tiene 5 balas. Se puede mantener también una bala extra en la recámara.\n" "\n" @@ -3090,7 +3858,7 @@ SWWM_LORETXT_SILVERBULLET = "\cxNotas de Saya:\c-\n" "\cfComo era la frase esa, ¿\"no hay kill como un overkill\"? Ya, pues queda perfecta para la cosa esta.\c-\n" "\n" -"\cf¿Y que coño se supone que cazas con esto, tanques salvajes? Supongo... demonios tó ciclaos también valdrían, pero al final solo van a acabar hechos mierda.\c-"; +"\cf¿Y que coño se supone que cazas con esto, tanques salvajes? Supongo... demonios tó ciclaos también valdrían, pero al final solo va a quedar de ellos una fina nube roja.\c-"; SWWM_LORETAG_SPARKSTER = "Carabina Biospark"; SWWM_LORETXT_SPARKSTER = "\cxDesignación:\c-\n" @@ -3131,38 +3899,22 @@ SWWM_LORETXT_SPREADGUN = "\n" "El \cfTrabuco\c- es una simple escopeta de un disparo con un mecanismo de recarga poco convencional. A diferencia de otras armas del mismo tipo, el Trabuco emplea una variante extraña del cañón basculante que \cfBlackmann Arms\c- ha descrito como \"cañón deslizante\", por la cual en lugar de usar una bisagra, el cañón se desliza horizontalmente al pulsar dos botones laterales, con una pequeña pieza metálica saltando y eyectando el cartucho cargado. Tras cargar el siguiente cartucho, el usuario simplemente tiene que empujar el cañón a su posición inicial. Algunos tienen dudas sobre la factibilidad de esta operación, o de su seguridad, pero han garantizado que el arma no disparará accidentalmente no importa la fuerza ejercida empujando de vuelta el cañón.\n" "\n" -"El arma emplea el ciertamente grande calibre 6, y hay un surtido exclusivo de munición que puede usar, todo manejado por Blackmann. Siendo estos:\n" +"El arma emplea el ciertamente grande calibre 6. La carga ideal que encontrarás en el campo son cartuchos de perdigones #00. Ten en cuenta que la dispersión causada por la poca longitud del cañón puede que dificulte alcanzar objetivos lejanos, pero a un rango más corto debería ser más efectivo.\n" "\n" -"\cfPerdigones Estándar:\c- Cartuchos rojos. Exactamente lo que pone. La dispersión causada por la poca longitud del cañón puede que dificulte alcanzar objetivos lejanos, pero a un rango más corto debería ser más efectivo.\n" +"También hay adicionalmente una carga secundaria exclusive, los llamados \cfCartuchos Dorados\c-, caros y muy poco comunes, con un poder destructor sin par. Cada cartucho dispara un proyectil que contiene una carga de \cfExplodium\c- de alta densidad y pureza, junto con brillantina dorada (que es aparentemente solo para quedar bonito). Se garantiza que cualquier cosa que reciba un impacto directo será vaporizada completamente por la explosión resultante.\n" "\n" -"\cfSlug Metálico:\c- Cartuchos verdes. Slugs muy potentes con una puntería decente, incluso en distancias largas. Dado su tamaño y peso, tienen el potencial de penetrar varios objetivos pequeños.\n" -"\n" -"\cfAliento de Dragón:\c- Cartuchos blancos. Un estallido de llamas con cada disparo, con rango considerable. Ineficaz bajo el agua, por razones obvias.\n" -"\n" -"\cfSal de Kinylum:\c- Cartuchos cian. Pequeños trozos de Kinylum en su forma natural de \"sal\". Ya disparados, dejan un rastro de plasma ardiente que permanece en el aire durante unos momentos hasta disiparse. Adicionalmente, los trozos explotarán violentamente en contacto con cualquier superficie, o una vez se \"desestabilicen\" (lo cual desafortunadamente hace que este tipo de munición pierda efectividad a larga distancia).\n" -"\n" -"\cfDardos de Telebrium:\c- Cartuchos negros. Docenas de proyectiles penetrantes cargados de Telebrium puro, un elemento exótico conocido por sus potentes efectos corrosivos al ser calentado. Los objetivos alcanzados por estos proyectiles experimentarán una muy dolorosa descarga de toxinas corrosivas por sus cuerpos (incluso los no orgánicos), aunque estos efectos se despejarán en cuestión de segundos. El uso de esta munición está altamente restringido, pero has obtenido permiso para usarla contra las fuerzas invasoras.\n" -"\n" -"\cfBola de Plomo:\c- Cartuchos violetas. Viniendo de \cfPlutoni Incorporated\c-, estos cartuchos disparan una bola pesada de dolor puro. A pesar del hecho de que son de plomo, tiende a mantener la forma da igual la fuerza de impacto contra algo (algunos dudan de que realmente sean de plomo, siendo más bien de cualquier otro material). Habiendo salido de tal lugar, no es sorprendente que tengan efectos extraños. Al parecer, en ciertas ocasiones, las bolas pueden emitir sonidos extraños al impactar, los cuales adicionalmente provocan potentes ondas de choque, incrementando su velocidad en el proceso. Este suceso extraño está listado como \"Golpes Críticos Aleatorios\" en la página de la tienda.\n" -"\n" -"\cfCartucho Dorado:\c- Cartuchos cubiertos de oro con un fuerte cuerpo metálico. Un tipo de munición caro y muy poco común, con un poder destructor sin par. Cada cartucho dispara un proyectil que contiene una carga de \cfExplodium\c- de alta densidad y pureza, junto con brillantina dorada (que es aparentemente solo para quedar bonito). Se garantiza que cualquier cosa que reciba un impacto directo será vaporizada completamente por la explosión resultante.\n" -"\n" -"El amplio rango de munición compatible hace del Trabuco un arma bastante versátil, una vez acostumbrado a su tediosa recarga manual. Hay sin embargo planes para crear una variante semiautomática más cómoda de usar, con prototipos ya probándose.\n" +"El Trabuco puede ser un arma bastante versátil, una vez acostumbrado a su tediosa recarga manual. Aun así, hay planes para crear una variante semiautomática más cómoda de usar, con prototipos ya probándose.\n" "\n" "\cfFuego Primario:\c- Dispara el cartucho cargado.\n" "\n" -"\cfFuego Secundario:\c- Pulsa para elegir el tipo de munición a usar en la siguiente recarga. Mantén y luego pulsa fuego primario para retirar el cartucho actual y dejar el arma vacía.\n" +"\cfFuego Secundario:\c- Recarga con cartuchos dorados, si están disponibles. Ten en cuenta que si el cartucho cargado no fue usado, se devolverá a su pila de munición. Si no queda suficiente espacio para almacenarlo, se dejará caer en el suelo.\n" "\n" -"\cfRecarga:\c- Retira el cartucho actual y carga uno nuevo. Si el cartucho cargado no fue gastado, se devolverá a su pila de munición. Si no queda suficiente espacio para almacenarlo, se dejará caer en el suelo.\n" +"\cfRecarga:\c- Recarga con munición estándar, si está disponible. Las mismas reglas se aplican.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfSí, la mierda esta es jodidamente poco práctica, y no sé como es que nadie se ha reventado la mano recargando la cosa esta. PERO, te deja usar toda clase de munición divertida. Tienes lo típico y normal de cada escopeta por ahí, y luego hay... Literalmente piedras de sal radioactiva, que explotan, pues sí, mola. Pero luego ves lo que hay justo después y es que... ya.\c-\n" +"\cfSí, la mierda esta es jodidamente poco práctica, y no sé como es que nadie se ha reventado la mano recargando la cosa esta. PERO es jodidamente potente, sobre todo con lo tremendamente tocho que es el calibre que usa y tal.\n" "\n" -"\cfHermann-senpai me pasó al friki por lo de los cartuchos negros, porque fueron idea suya. A ver, deja que explique. El Telebrium es... un crimen de guerra. Así de simple. Pero casi que podemos salirnos de rositas, porque lo estamos usando contra bestias desquiciadas. Me sigue sentando un poco mal, pero a ver, no lo estamos usando contra personas, a diferencia de los casos en los que REALMENTE se usó contra personas (joder, las historias sobre ese tema).\c-\n" -"\n" -"\cfEn fin, basta de hablar de crímenes, hablemos ahora de los cartuchos violetas esos. Pues resulta que en serio son un crimen, y ESOS DOS por supuesto están involucrados. Estoy segura de que esas cosas NO están hechas de plomo. Parece más ese metal raro con el que trabajan, que es que puto juro que no puedo ni pronunciar el nombre. Y tiene... sí, CRÍTICOS RANDOM. He aquí el crimen, Demo-chan. No puedo creerme que mierdas así existan ahora. Es que se me fue la olla la primera vez que lo vi en acción, y estoy segura de que a ti te pasará lo mismo.\c-\n" -"\n" -"\cfFinamente están las cosas doradas esas. No podemos comprarlas, así que el friki hizo otro de sus frikitratos y dijo que te recompensaría de vez en cuando por eliminar \"objetivos de alto nivel\" o algo así. Que ganas tengo de ver como es eso, una puta... lluvia dorada de dolor.\c-\n" +"\cfY también, está el tema de las cosas doradas esas. No podemos comprarlas, así que el friki hizo otro de sus frikitratos y dijo que te recompensaría de vez en cuando por eliminar \"objetivos de alto nivel\" o algo así. Que ganas tengo de ver como es eso, una puta... lluvia dorada de dolor.\c-\n" "\n" "\cf*tose*\c-\n" "\n" @@ -3232,7 +3984,7 @@ SWWM_LORETXT_SYMNATEK = "\cxNotas de Saya:\c-\n" "\cfAh sí, la gran estrategia de \"si perdemos pasta, pues a contribuir al ejército\". Nunca falla, ¿eh?\c-\n" "\n" -"\cfOh apuesto a que estarás pensando: \"Pero Saya, ¿como puedes decir eso, cuando hiciste a Ibuki para el ejército de los EEUU?\", y a eso contestaré: \"¿Quien ha dicho que la hice para ellos?\"\c-"; +"\cfSí, ya sé que suena hipócrita que diga esto, con todo el tema de Ibuki, y mis colaboraciones con la EDF, y todo eso... Pero piénsalo, es que es como si fuera inevitable, en estos tiempos, con esta economía, que tengas que recurrir a cosas así para mantenerte a flote, ¿no crees?\c-"; SWWM_LORETXT_TARO = " \cxNombre Completo:\c-\n" " \cf Taro Miyamoto\c-\n" @@ -3250,16 +4002,14 @@ SWWM_LORETXT_TARO = "\n" "Taro es un programador nato, competente en múltiples lenguajes, y tiene una gran cantidad de proyectos a su nombre, junto con muchas contribuciones a proyectos notables de código abierto, incluyendo el \cfKernel de Linux\c-. También es un auto-proclamado \"archivista cultural\", declarando que es básicamente una biblioteca andante en lo que respecta a aspectos de la cultura popular que para muchos se han perdido en el tiempo, gracias a la inmortalidad heredada de su madre, y su gran memoria. También es bastante popular en la red por sus reviews cómicas de anime, bajo la personalidad de \cf\"El Mago de Waifus\"\c-.\n" "\n" -"En 2091, Taro fue elegido para recuperar personalmente al \cfOni Rojo\c-, \cfIbuki Miyamoto\c-, tras los eventos de la \cfCicatriz Blanca\c-. Siguiendo la señal de rastreo de su collar, la encontró fácilmente, y cuando estaba a punto de traerla de vuelta a Japón una chica se le acercó. Era \cfElena Yanikov XXI\c-, quien había entablado amistad con Ibuki mientras vagaba por el yermo ardiente. Pidió a Taro que la llevara con él, prometiendo ser \"una chica buena\". Estas palabras inmediatamente hicieron que aceptara su proposición.\n" -"\n" -"No mucho después de eso, ambos comenzaron a salir, casándose finalmente en 2097.\n" +"En 2091, Taro fue elegido para recuperar personalmente al \cfOni Rojo\c-, \cfIbuki Miyamoto\c-, tras los eventos de la \cfCicatriz Blanca\c-. Siguiendo la señal de rastreo de su collar, la encontró fácilmente, y cuando estaba a punto de traerla de vuelta a Japón una chica se le acercó. Era \cfElena Yanikov XXI\c-, quien había entablado amistad con Ibuki mientras vagaba por el yermo ardiente. Pidió a Taro que la llevara con él, y aceptó sin poner ninguna pega. No mucho después de eso, ambos comenzaron a salir, casándose finalmente en 2097.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cf¿COMO PUTO COJONES pudo el absoluto perdedor de mi hermano echarse novia? Es que no lo entiendo. Dios, viendo el artículo después de que lo editara, hay tanta mierda ahí que se nota que es él fardando, patético...\c-\n" +"\cf¿PERO COMO pudo el absoluto perdedor de mi hermano echarse novia? Es que no lo entiendo. Dios, viendo el artículo después de que lo editara, hay tanto ahí que se nota que es él fardando, patético...\c-\n" "\n" -"\cfSí, es esa clase de tío. Se hace el chulo pero en cuanto miras más allá de sus \"impresionantes habilidades y logros\", no es más que un capullo en internet. A ver, admito que yo también lo soy, un poco, pero él es peor. La culpa es de que pase tanto tiempo en foros de mierda.\c-\n" +"\cfSí, es esa clase de tío. Le encanta presumir, con todo eso de sus \"impresionantes habilidades y logros\" y tall. Tampoco es que deba quejarme cuando yo también presumo a veces de lo que hago. Los dos nos parecemos mucho, así es que somos tan colegas unque a veces nos peleemos por chorradas estúpidas. Somos un par de gremlins, y a mucha honra.\c-\n" "\n" -"\cfAunque a ver, a veces se pone serio cuando quiere. Y en momentos así es que es básicamente el Tsukkomi de mi Boke. Si no sabes lo que significa todo eso puedes buscarlo, Demo-chan.\c-"; +"\cfAunque, cosas aparte, Taro-nii se puede poner muy serio cuando hace falta. Y en momentos así es que es básicamente el Tsukkomi de mi Boke. Si no sabes lo que significa todo eso puedes buscarlo, Demo-chan.\c-"; SWWM_LORETXT_UAC = "\cxNombre:\c-\n" "\cf Union Aerospace Corporation\c-\n" @@ -3285,9 +4035,9 @@ SWWM_LORETXT_UAC = "Lo que ocurrió después fue el principio de lo que se ha llamado \cfEpisodios de Doom\c-. Tal y como relató la UAC tras estos eventos, un único marine logró, por su cuenta, derrotar a todas las fuerzas invasoras, llevando su lucha hasta el mismísimo Infierno. Sin embargo, las hazañas del tal \cfMarine de Doom\c- solo sirvieron para enfurecer más a los archidemonios generales, y entonces fue cuando comenzó la invasión de la Tierra. Aunque muchos han visto esto como \"el fin del mundo tal y como lo conocemos\", la UAC sigue enviando un mensaje de esperanza para todos, jurando que todo será resuelto.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfOh, la \"gran y poderosa\" UAC, puñado de cerdos capitalistas comemierdas, eso es lo que son. Fijaos bien todos, esto es lo que os hace el capitalismo desenfrenado. Sí, creo que ya te has enterado bien de que odio a esta puta chusma.\c-\n" +"\cfOh, la \"gran y poderosa\" UAC, puñado de cerdos capitalistas, eso es lo que son. Fijaos bien todos, esto es lo que os hace el capitalismo desenfrenado. Sí, creo que ya te has enterado bien de que odio a esta chusma con la furia de mil soles.\c-\n" "\n" -"\cfA ver... ¿Experimentos militares ilegales? Sí. ¿Andar jodiendo con viajes interdimensionales? También. ¿Potencialmente causando el fin del mundo? Pues eso también. Si es que los muy hijos de puta estos REALMENTE son una jodida megacorporación malvada, hostia puta...\c-\n" +"\cfTengo tanta información de dentro gracias a una amiga de Ibuki que trabajaba allí (más info en su propio artículo) que podría montarme una lista de aúpa sólo con toda la mierda que han hecho. A ver... ¿Experimentos militares ilegales? Sí. ¿Andar jodiendo con viajes interdimensionales? También. ¿Potencialmente causando el fin del mundo? Pues eso también. Si es que los muy capullos estos REALMENTE son una jodida megacorporación malvada, hostia puta...\c-\n" "\n" "\cf¿Pero sabes que? No me voy a quedar aquí con el culo plantado esperando a que el supuesto \"solucionador de problemas\" este, su soldadito héroe legendario vaya y lo arregle todo. Como si ESO fuera a pasar. No, esta es precisamente la razón de que TÚ estés aquí, Demo-chan. Esto es lo que estás destinada a cambiar (buah, vale, ya estoy empezando a sonar tope de cliché). Pero sí, te hemos preparado para esto, eres el robot de combate definitivo, el orgullo de Akari Labs y todo ese rollo, tú PUEDES salvar el mundo, estoy segurísima.\c-"; SWWM_LORETXT_UAC2 = @@ -3314,16 +4064,16 @@ SWWM_LORETXT_UAC2 = "\n" "Lo que ocurrió después fue el principio de lo que se ha llamado \cfEpisodios de Doom\c-. Tal y como relató la UAC tras estos eventos, un único marine logró, por su cuenta, derrotar a todas las fuerzas invasoras, llevando su lucha hasta el mismísimo Infierno. Sin embargo, las hazañas del tal \cfMarine de Doom\c- solo sirvieron para enfurecer más a los archidemonios generales, y entonces fue cuando comenzó la invasión de la Tierra. Y tan rápido como empezó, fue igualmente terminada. El \cfDemolicionista\c-, una obra colaborativa de \cfAkari Labs\c- y sus muchos socios, por su propia cuenta, puso fin a la invasión, eliminando eficientemente a todo demonio que había salido de los portales, y después de eso, adentrándose hasta el mismo Infierno, al igual que el Marine de Doom, y derrotando al \cfIcono del Pecado\c-, quien comandaba los ejércitos invasores.\n" "\n" -"Tras este evento, la UAC sufrió una gran reconstrucción, ya que la mayor parte de su junta directiva falleció durante la invasión. Libre ahora de su control, el gobierno de la Unión de Estados supervisaba estrictamente sus acciones, asegurándose de nunca más fuesen un problema. Aun así, otros tres incidentes ocurrieron, a pesar de tener mejores protocolos de seguridad. En una de sus bases en Io, continuaron de nuevo los experimentos de teletransporte, esta vez preparados para cualquier cosa. Como fue previsto, un pequeño grupo de demonios apareció, pero fue eliminado rápidamente. Lo que NO habían previsto, sin embargo, fue que esto había sido solo una distracción. Una nave no identificada se había aproximado repentinamente a la base, aunque inicialmente se asumió que era el típico reparto de provisiones anuales. Esta nave era de construcción demoníaca, imitando la misma tecnología de la UAC. Una cantidad descomunal de demonios fueron desatados sobre la base, y muchos murieron rápidamente o fueron poseídos. Sin embargo, el Marine de Doom también estaba allí, y como fue de esperar, una vez más hizo lo que mejor sabía hacer.\n" +"Tras este evento, la UAC sufrió una gran reconstrucción, ya que la mayor parte de su junta directiva falleció durante la invasión. Libre ahora de su control, el gobierno de la Unión de Estados supervisaba estrictamente sus acciones, asegurándose de que nunca más fuesen un problema. Aun así, otros tres incidentes ocurrieron, a pesar de tener mejores protocolos de seguridad. En una de sus bases en Io, continuaron de nuevo los experimentos de teletransporte, esta vez preparados para cualquier cosa. Como fue previsto, un pequeño grupo de demonios apareció, pero fue eliminado rápidamente. Lo que NO habían previsto, sin embargo, fue que esto había sido solo una distracción. Una nave no identificada se había aproximado repentinamente a la base, aunque inicialmente se asumió que era el típico reparto de provisiones anuales. Esta nave era de construcción demoníaca, imitando la misma tecnología de la UAC. Una cantidad descomunal de demonios fueron desatados sobre la base, y muchos murieron rápidamente o fueron poseídos. Sin embargo, el Marine de Doom también estaba allí, y como fue de esperar, una vez más hizo lo que mejor sabía hacer.\n" "\n" -"Otro incidente más acabó sucediendo, en una instalación de investigación de posición desconocida. Allí, la UAC estaba trabajando en una forma de prevenir activamente que estas invasiones ocurriesen, a través de unos \cfDispositivos Aceleración Cuántica\c-. Estas máquinas supuestamente servirían para cerrar cualquier portal que los demonios pudieran producir para entrar en nuestro mundo, y eso hicieron, al principio. Un portal apareció en la instalación, y aunque algunos demonios consiguieron entrar, fue cerrado inmediatamente y esta pequeña invasión fue suprimida. Pareció entonces que el experimento fue un éxito, pero los demonios rápidamente se dieron cuenta de lo que estaba pasando, y al día siguiente, siete portales se abrieron simultáneamente por toda la instalación. Llevó una hora cerrar seis de ellos, pero llegado ese punto las fuerzas invasoras los superaban en número, y rápidamente cayó todo en el caos de nuevo. Y ciertamente, una vez más, la UAC decidió enviar a su formidable recadero para arreglarlo, y eso hizo, otra vez, como siempre. \cf[nota de ed.: Saya, se te ve el sarcasmo]\c-\n" +"Otro incidente más acabó sucediendo, en una instalación de investigación de posición desconocida. Allí, la UAC estaba trabajando en una forma de prevenir activamente que estas invasiones ocurriesen, a través de unos \cfDispositivos de Aceleración Cuántica\c-. Estas máquinas supuestamente servirían para cerrar cualquier portal que los demonios pudieran producir para entrar en nuestro mundo, y eso hicieron, al principio. Un portal apareció en la instalación, y aunque algunos demonios consiguieron entrar, fue cerrado inmediatamente y esta pequeña invasión fue suprimida. Pareció entonces que el experimento fue un éxito, pero los demonios rápidamente se dieron cuenta de lo que estaba pasando, y al día siguiente, siete portales se abrieron simultáneamente por toda la instalación. Llevó una hora cerrar seis de ellos, pero llegado ese punto las fuerzas invasoras los superaban en número, y rápidamente cayó todo en el caos de nuevo. Y ciertamente, una vez más, la UAC decidió enviar a su formidable recadero para arreglarlo, y eso hizo, otra vez, como siempre. \cf[nota de ed.: Saya, se te ve el sarcasmo]\c-\n" "\n" "Con un último golpe al \cf\"Portero\"\c-, el titánico demonio responsable de la creación de estos portales, pareció que las invasiones por fin terminarían para siempre. Y ciertamente, en los años siguientes, reinó la tranquilidad, y no se reportaron más incidentes. Los Episodios de Doom fueron entonces archivados, y el Marine de Doom fue retirado de servicio.\n" "\n" "En 2150, la compañía finalmente clausuró todos sus experimentos de teletransporte, y en un anuncio público, el CEO \cfIan Kelliher\c- declaró que la compañía ahora desviaría su atención principal a reparar todos los daños que sus actos trajeron a la Tierra. Algo que, según estimaciones iniciales, tardaría más de cincuenta años.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, puto idiota, que se creía el \"hombre más importante del mundo\", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me muero de la risa, oye.\c-"; +"\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, el muy idiota, que se creía el \"hombre más importante del mundo\", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me desorino, oye. Es que hasta Dana se partió la caja al enterarse de la noticia. Sí, odia a estos mendrugos tanto como yo.\c-"; SWWM_LORETXT_UAC3 = "\cxNombre:\c-\n" "\cf Union Aerospace Corporation\c-\n" @@ -3348,9 +4098,9 @@ SWWM_LORETXT_UAC3 = "\n" "Lo que ocurrió después fue el principio de lo que se ha llamado \cfEpisodios de Doom\c-. Tal y como relató la UAC tras estos eventos, un único marine logró, por su cuenta, derrotar a todas las fuerzas invasoras, llevando su lucha hasta el mismísimo Infierno. Sin embargo, las hazañas del tal \cfMarine de Doom\c- solo sirvieron para enfurecer más a los archidemonios generales, y entonces fue cuando comenzó la invasión de la Tierra. Y tan rápido como empezó, fue igualmente terminada. El \cfDemolicionista\c-, una obra colaborativa de \cfAkari Labs\c- y sus muchos socios, por su propia cuenta, puso fin a la invasión, eliminando eficientemente a todo demonio que había salido de los portales, y después de eso, adentrándose hasta el mismo Infierno, al igual que el Marine de Doom, y derrotando al \cfIcono del Pecado\c-, quien comandaba los ejércitos invasores.\n" "\n" -"Tras este evento, la UAC sufrió una gran reconstrucción, ya que la mayor parte de su junta directiva falleció durante la invasión. Libre ahora de su control, el gobierno de la Unión de Estados supervisaba estrictamente sus acciones, asegurándose de nunca más fuesen un problema. Aun así, otros tres incidentes ocurrieron, a pesar de tener mejores protocolos de seguridad. En una de sus bases en Io, continuaron de nuevo los experimentos de teletransporte, esta vez preparados para cualquier cosa. Como fue previsto, un pequeño grupo de demonios apareció, pero fue eliminado rápidamente. Lo que NO habían previsto, sin embargo, fue que esto había sido solo una distracción. Una nave no identificada se había aproximado repentinamente a la base, aunque inicialmente se asumió que era el típico reparto de provisiones anuales. Esta nave era de construcción demoníaca, imitando la misma tecnología de la UAC. Una cantidad descomunal de demonios fueron desatados sobre la base, y muchos murieron rápidamente o fueron poseídos. Sin embargo, el Marine de Doom también estaba allí, y como fue de esperar, una vez más hizo lo que mejor sabía hacer.\n" +"Tras este evento, la UAC sufrió una gran reconstrucción, ya que la mayor parte de su junta directiva falleció durante la invasión. Libre ahora de su control, el gobierno de la Unión de Estados supervisaba estrictamente sus acciones, asegurándose de que nunca más fuesen un problema. Aun así, otros tres incidentes ocurrieron, a pesar de tener mejores protocolos de seguridad. En una de sus bases en Io, continuaron de nuevo los experimentos de teletransporte, esta vez preparados para cualquier cosa. Como fue previsto, un pequeño grupo de demonios apareció, pero fue eliminado rápidamente. Lo que NO habían previsto, sin embargo, fue que esto había sido solo una distracción. Una nave no identificada se había aproximado repentinamente a la base, aunque inicialmente se asumió que era el típico reparto de provisiones anuales. Esta nave era de construcción demoníaca, imitando la misma tecnología de la UAC. Una cantidad descomunal de demonios fueron desatados sobre la base, y muchos murieron rápidamente o fueron poseídos. Sin embargo, el Marine de Doom también estaba allí, y como fue de esperar, una vez más hizo lo que mejor sabía hacer.\n" "\n" -"Otro incidente más acabó sucediendo, en una instalación de investigación de posición desconocida. Allí, la UAC estaba trabajando en una forma de prevenir activamente que estas invasiones ocurriesen, a través de unos \cfDispositivos Aceleración Cuántica\c-. Estas máquinas supuestamente servirían para cerrar cualquier portal que los demonios pudieran producir para entrar en nuestro mundo, y eso hicieron, al principio. Un portal apareció en la instalación, y aunque algunos demonios consiguieron entrar, fue cerrado inmediatamente y esta pequeña invasión fue suprimida. Pareció entonces que el experimento fue un éxito, pero los demonios rápidamente se dieron cuenta de lo que estaba pasando, y al día siguiente, siete portales se abrieron simultáneamente por toda la instalación. Llevó una hora cerrar seis de ellos, pero llegado ese punto las fuerzas invasoras los superaban en número, y rápidamente cayó todo en el caos de nuevo. Y ciertamente, una vez más, la UAC decidió enviar a su formidable recadero para arreglarlo, y eso hizo, otra vez, como siempre. \cf[nota de ed.: Saya, se te ve el sarcasmo]\c-\n" +"Otro incidente más acabó sucediendo, en una instalación de investigación de posición desconocida. Allí, la UAC estaba trabajando en una forma de prevenir activamente que estas invasiones ocurriesen, a través de unos \cfDispositivos de Aceleración Cuántica\c-. Estas máquinas supuestamente servirían para cerrar cualquier portal que los demonios pudieran producir para entrar en nuestro mundo, y eso hicieron, al principio. Un portal apareció en la instalación, y aunque algunos demonios consiguieron entrar, fue cerrado inmediatamente y esta pequeña invasión fue suprimida. Pareció entonces que el experimento fue un éxito, pero los demonios rápidamente se dieron cuenta de lo que estaba pasando, y al día siguiente, siete portales se abrieron simultáneamente por toda la instalación. Llevó una hora cerrar seis de ellos, pero llegado ese punto las fuerzas invasoras los superaban en número, y rápidamente cayó todo en el caos de nuevo. Y ciertamente, una vez más, la UAC decidió enviar a su formidable recadero para arreglarlo, y eso hizo, otra vez, como siempre. \cf[nota de ed.: Saya, se te ve el sarcasmo]\c-\n" "\n" "Con un último golpe al \cf\"Portero\"\c-, el titánico demonio responsable de la creación de estos portales, pareció que las invasiones por fin terminarían para siempre. Y ciertamente, en los años siguientes, reinó la tranquilidad, y no se reportaron más incidentes. Los Episodios de Doom fueron entonces archivados, y el Marine de Doom fue retirado de servicio.\n" "\n" @@ -3358,10 +4108,10 @@ SWWM_LORETXT_UAC3 = "\n" "Diez años después de este anuncio, unas noticias preocupantes llegaron a la Tierra. Se habían detectado fuerzas demoníacas en varias bases abandonadas de la UAC, las cuales se creyeron completamente limpiadas por un barrido de radiación. Algo, de alguna forma, sobrevivió allí, y estaba reviviendo uno por uno los cuerpos descompuestos de incontables demonios caídos. Viendo que no había otra elección, los Episodios de Doom fueron reabiertos, y el muy malhumorado Marine de Doom fue puesto en marcha de nuevo y enviado allí, esta vez, tras su eventual éxito, tomando la decisión de permanecer en el Infierno, para siempre, para asegurarse de que los demonios nunca jamás intenten atacar. Desde entonces, no se ha podido contactar con él.\n" "\n" -"De la poca información que se pudo recuperar del otro lado de todo esto, del propio Infierno, se sabe que su matanza fue imparable. Derrotó a los demonios comandantes que quedaban. Decenas de miles de demonios, en su furia ciega, marcharon todos hacia su propia muerte por su mano. Hubo esperanza entre la población civil de que este humano solitario, ahora rebautizado con el título de \cfDoom Slayer\c-, pondría fin a la tiranía de los archidemonios generales, pero ellos tenían sus propios planes para él. Sabían bien que si llegaba a la capital de \cfDis\c- una vez más, no podrían detenerlo. Así que una trampa fue preparada, y cayó en ella. Fue entonces que \cfErebus\c-, el líder de los generales, lo hizo desaparecer, muy lejos, más allá de los confines de este universo, para que nunca jamás pudiese volver a este mundo.\n" +"De la poca información que se pudo recuperar del otro lado de todo esto, del propio Infierno, se sabe que su matanza fue imparable. Derrotó a los demonios comandantes que quedaban. Decenas de miles de demonios, en su furia ciega, marcharon todos hacia su propia muerte por su mano. Hubo esperanza entre la población civil de que este soldado humano solitario pondría fin a la tiranía de los archidemonios generales, pero ellos tenían sus propios planes para él. Sabían bien que si llegaba a la capital de \cfDis\c- una vez más, no podrían detenerlo. Así que una trampa fue preparada, y cayó en ella. Fue entonces que \cfErebus\c-, el líder de los generales, lo hizo desaparecer, muy lejos, más allá de los confines de este universo, para que nunca jamás pudiese volver a este mundo.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, puto idiota, que se creía el \"hombre más importante del mundo\", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me muero de la risa, oye.\c-\n" +"\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, el muy idiota, que se creía el \"hombre más importante del mundo\", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me desorino, oye. Es que hasta Dana se partió la caja al enterarse de la noticia. Sí, odia a estos mendrugos tanto como yo.\c-\n" "\n" "\cfY aquí acaba la historia de la Epístolas de Dumbo estas o lo que sea, uno de los mayores ejemplos de las consecuencias del capitalismo desenfrenado™.\c-"; SWWM_LORETXT_UNISSIX = @@ -3384,7 +4134,7 @@ SWWM_LORETXT_UNISSIX = "\n" "Algo que la separaba de su hermana, era su notable falta de habilidad física, siendo \"demasiado débil\" y \"no apta para ser una guerrera de sangre de dragón\", se hizo notar también que a diferencia de otros, tampoco podía invocar una forma de dragón. Todo esto sería usado también en su contra por la gente que regularmente la acosaba. Su familia finalmente decidió que se quedara siempre en casa, aislada del mundo exterior. Fue a partir de esto que al final encontró su principal hobby: La herrería.\n" "\n" -"A Misa le encantaba crear toda clase de armadura y armamento, el cual sería usado luego por su familia, o vendido a otros clanes (los cuales desconocían quién lo hacía, pero estaban impresionados con su calidad), este fue el comienzo de \cfArtesanía Unissix\c-, su pequeño taller/tienda. El expresar su creatividad a través de esto ayudó mucho a distraerla de todo lo que pasaba fuera, y se sintió más relajada.\n" +"A Misa le encantaba crear toda clase de armaduras y armamento, las cuales sería usadas luego por su familia, o vendidas otros clanes (los cuales desconocían quién lo hacía, pero estaban impresionados con su calidad), este fue el comienzo de \cfArtesanía Unissix\c-, su pequeño taller/tienda. El expresar su creatividad a través de esto ayudó mucho a distraerla de todo lo que pasaba fuera, y se sintió más relajada.\n" "\n" "Con el tiempo, a medida que mejoraba sus habilidades, se interesó en buscar desafíos mayores, como crear armas mucho más complejas que simples espadas y otros. Para satisfacer este deseo, su familia le traía libros sobre \"armas de leyenda\", las cuales la joven Misa consiguió replicar casi a la perfección, con la consiguiente sorpresa de todos. Estaba muy orgullosa de lo que había logrado, y esto aumentó su popularidad, lo que resultó en peticiones personales para hacer más réplicas de muchas de esas armas.\n" "\n" @@ -3409,13 +4159,9 @@ SWWM_LORETXT_UNISSIX = "\n" "\cfOh ya, y Misa es una pro gamer de cuidado, joder. Cualquier cosa que le pongo para jugar, se lo ventila como si nada. Sí, incluso ESOS juegos. Mola ver como juega, y le encantan los de aventura sobre todo, supongo que porque es la clase de cosa que no puede hacer en la vida real.\c-\n" "\n" -"\cfOh ya, y cosa curiosa. La primera vez que las visité cuando estaban en Sankaideriha, Misa me dió todo un puto susto con la transformación esa por la que pasó. Es que... era una persona completamente diferente. Vamos, es que nunca antes la había visto tan feliz, fue tremendísimo, y a ver, yo me alegraba muchísimo por ella también. Ah, y luego la otra cosa que pasó, cuando uhhh... fuimos a las termas juntas. Yo... bueno, un poco por accidente... vi... eso, de ahí abajo, pues sí...\c-\n" +"\cfOh ya, y cosa curiosa. La primera vez que las visité cuando estaban en Sankaideriha, Misa me dió todo un puto susto con la transformación esa por la que pasó. Es que... era una persona completamente diferente. Vamos, es que nunca antes la había visto tan feliz, fue tremendísimo, y a ver, yo me alegraba muchísimo por ella también.\c-\n" "\n" -"\cfDios, normal que pudiera oír a Zana-sama desde el otro lado de la casa cuando se lo montaban. Ah... puta suertuda...\c-\n" -"\n" -"\cfSí, eso fue cuando se quedaron un tiempo por aquí. Aunque no son los primeros a los que oigo hacerlo como bestias salvajes. Yu-chan y esa novia gótica tetuda suya, menudas son también. En serio, si es que nadie sabe que desde mi dormitorio puedes oír perfectamente todo lo que pasa en la habitación de invitados. No sé por qué, será alguna ñordería de acústica o algo, pero sí.\c-\n" -"\n" -"\cf(Aunque, la verdad es que desearía poder des-oír los graznidos infernales que emitía Taro-niisan cuando se trajo a Ellen-san)\c-"; +"\cfDios, es que son la pareja mas adorable del mundo. No puedo parar de decirlo.\c-"; SWWM_LORETAG_VESTAL = "Alimentos Vestal"; SWWM_LORETXT_VESTAL = "\cxNombre:\c-\n" @@ -3445,7 +4191,7 @@ SWWM_LORETXT_VOICEBOX = "La comunidad de \cfAkari Labs\c- también ofrece una gran variedad de paquetes de voz personalizados para este dispositivo. Puedes visitar nuestros foros para más información.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que sin pechotes.\c-"; +"\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que en forma de robot cuqui.\c-"; SWWM_LORETXT_VOICEBOX2 = "\cxDesignación\c-\n" "\cf Caja de Voz Loudboi\c-\n" @@ -3459,9 +4205,9 @@ SWWM_LORETXT_VOICEBOX2 = "La comunidad de \cfAkari Labs\c- también ofrece una gran variedad de paquetes de voz personalizados para este dispositivo. Puedes visitar nuestros foros para más información.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que sin pechotes.\c-\n" +"\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que en forma de robot cuqui.\c-\n" "\n" -"\cfActualización: Y entonces... Vinieron tus verdaderas cuerdas vocales como maidbot, sin filtros ni nada, y mi amor por tu encantadora voz solo pudo aumentar. Se me derrite el corazón solo con oírla, jejeje...\c-"; +"\cfActualización: Y entonces... Vinieron tus verdaderas cuerdas vocales como maidbot, sin filtros ni nada, y mi amor por tu encantadora voz solo pudo aumentar. Es que se me derrite el corazón solo con oírla, en serio...\c-"; SWWM_LORETXT_WALLBUSTER = "\cxDesignación:\c-\n" "\cf Escopeta de Brecha de Armaduras Pesadas \"Wallbuster\"\c-\n" @@ -3475,17 +4221,7 @@ SWWM_LORETXT_WALLBUSTER = "\n" "Los mecanismos internos que empujan el funcionamiento de este arma tienen tal grado de complejidad que han sido descritos por algunos como \cfIngeniería Loca Alemana\c-. Solamente el propio \cfHermann E. Ischer\c- conoce todos los detalles de su operación. Con cada accionamiento del gatillo principal, el cañón superior es disparado, y luego su tambor gira a contrarreloj, con el siguiente cartucho listo para dispararse. Con una rotación completa, o cuando se usa el gatillo secundario, el cuerpo principal gira después, alternando a otro tambor.\n" "\n" -"La Wallbuster es compatible con la mayor parte de cartuchos de calibre 6, aunque hay restricciones de seguridad para algunas, específicamente los cartuchos dragon's breath, flechette y dorados. Esto limita el rango de munición utilizable a sólo estos cuatro tipos:\n" -"\n" -"\cfPerdigones Estándar:\c- Cartuchos rojos. Exactamente lo que pone. Bastante letal a corto rango, y con cierto alcance extra dada la longitud de los cañones del arma.\n" -"\n" -"\cfSlug Metálico:\c- Cartuchos verdes. Slugs muy potentes con una puntería decente, incluso en distancias largas. Dado su tamaño y peso, tienen el potencial de penetrar varios objetivos pequeños.\n" -"\n" -"\cfSal de Kinylum:\c- Cartuchos cian. Pequeños trozos de Kinylum en su forma natural de \"sal\". Ya disparados, dejan un rastro de plasma ardiente que permanece en el aire durante unos momentos hasta disiparse. Adicionalmente, los trozos explotarán violentamente en contacto con cualquier superficie, o una vez se \"desestabilicen\" (lo cual desafortunadamente hace que este tipo de munición pierda efectividad a larga distancia).\n" -"\n" -"\cfBola de Plomo:\c- Cartuchos violetas. Viniendo de \cfPlutoni Incorporated\c-, estos cartuchos disparan una bola pesada de dolor puro. A pesar del hecho de que son de plomo, tiende a mantener la forma da igual la fuerza de impacto contra algo (algunos dudan de que realmente sean de plomo, siendo más bien de cualquier otro material). Habiendo salido de tal lugar, no es sorprendente que tengan efectos extraños. Al parecer, en ciertas ocasiones, las bolas pueden emitir sonidos extraños al impactar, los cuales adicionalmente provocan potentes ondas de choque, incrementando su velocidad en el proceso. Este suceso extraño está listado como \"Golpes Críticos Aleatorios\" en la página de la tienda.\n" -"\n" -"A pesar de esta limitación, con solo estos cuatro tipos uno puede hacer de la Wallbuster una potente compañera. Especialmente teniendo en cuenta la naturaleza semi-automática del arma, permitiendo una rápida sucesión de disparos o incluso disparar varios cartuchos de forma simultánea.\n" +"Teniendo en cuenta la naturaleza semi-automática del arma, permitiendo una rápida sucesión de disparos o incluso disparar varios cartuchos de forma simultánea, la Wallbuster es una muy poderosa compañera.\n" "\n" "\cfFuego Primario:\c- Dispara el cañón superior.\n" "\n" @@ -3493,18 +4229,16 @@ SWWM_LORETXT_WALLBUSTER = "\n" "\cfFuego Terciario:\c- Lo dispara todo, si realmente quieres.\n" "\n" -"\cfRecarga:\c- Una vez se tira de la palanca lateral, los tambores pueden ser retirados y recargados individualmente. Para recargar por el camino, se recomienda tener un \cfCinturón Magnético Útil\c- o similar, ya que facilitará esta operación. Hay recargadores rápidos disponibles para comprar desde la página web de Blackmann Arms, o de distribuidores autorizados. Los operadores astutos también optarían por llevar encima tambores pre-cargados de repuesto.\n" +"\cfRecarga:\c- Una vez se tira de la palanca lateral, los tambores pueden ser retirados y recargados individualmente. Una rutina de recarga rápida se ejecutará y te hará llenar automáticamente lo máximo posible del arma, un tambor de cada vez, mientras la acción se mantenga activa.\n" "\n" "\cfTécnicas:\c- Tal y como su nombre indica, puedes destruir toda clase de obstáculos por el camino, siempre y cuando causes suficiente daño relativo a su tamaño (requiriendo fuego secundario o terciario). Esto incluye hasta puertas bloqueadas, por lo que nunca más necesitarás buscar llaves.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfOK a ver, la puta masa de metal rompecojones esta. Sí, esto sí que es la puta repera...\c-\n" +"\cfOK a ver, la masa de metal esta. Sí, esto sí que es la puta repera...\c-\n" "\n" -"\cfNo te preocupes por tardar un huevo en recargarla, por cierto. DemolitionOS viene con una rutina de recarga rápida que te lo pondrá más fácil. La munición se pone ahí en cola desde el Hammerspace, y luego todo lo que tienes que hacer es poner la mano encima de los cañones, y ya se mete todo ahí. Mola, ¿verdad? Taro hizo la mayor parte del chollo, así que eso, le puedes dar las gracias.\c-\n" +"\cfNo te preocupes por tardar un huevo en recargarla, por cierto. DemolitionOS viene con una rutina de recarga rápida que te lo pondrá más fácil. La munición se pone ahí en cola desde el Hammerspace, y luego todo lo que tienes que hacer es poner la mano encima de los cañones, y ya se mete todo ahí, lleva unos 10 segundos llenarlo todo, más o menos. Mola, ¿verdad? Taro hizo la mayor parte del chollo, así que eso, le puedes dar las gracias.\c-\n" "\n" -"\cfOh ya... sabes... la cosa esta, con el nombre y todo, casi que me recuerda a la abuela un poco. A ver, si cambias la primera letra... Oh, ¿puedes oír la batería y la guitarra? Porque yo sí...\c-\n" -"\n" -"\cfOld Days~ ♪\c-"; +"\cfOh ya... sabes... la cosa esta, con el nombre y todo... Bueno, el chiste ya se hace solo.\c-"; SWWM_LORETAG_WARARMOR = "Arm. de Guerra"; SWWM_LORETXT_WARARMOR = "\cxDesignación:\c-\n" @@ -3522,7 +4256,7 @@ SWWM_LORETXT_WARARMOR = "\cxNotas de Saya:\c-\n" "\cfEl friki este y su \"análisis de armadura\" otra vez. Este tío, en serio... La vida no es un puto videojuego, así que por favor POR FAVOR deja de hablar de mierdas como \"unidades de daño\" y \"factores de reducción\".\c-\n" "\n" -"\cfEeeeeen fin, Misa hace cosas tope de guays. Aunque me parece un poco redundante lo de que lleves armadura hecha de lo mismo que tu chasis. A ver, es que un robot llevando armadura.. ya, ¿por que no? Siempre es importante usar protección, juju...\c-"; +"\cfEeeeeen fin, Misa hace cosas tope de guays. Aunque me parece un poco redundante lo de que lleves armadura hecha de lo mismo que tu chasis. A ver, es que un robot llevando armadura.. Bueno, tampoco pasa nada por protegerse de más, supongo.\c-"; SWWM_LORETAG_WHITELADY = "Dama Blanca"; SWWM_LORETXT_WHITELADY = " \cxNombre Completo:\c-\n" @@ -3543,25 +4277,12 @@ SWWM_LORETXT_WHITELADY = "\n" "La Dama Blanca ha trabajado para muchas personas y organizaciones por muchos años, pero recientemente, ha sido contratada por la \cfUniversidad de Nos-Kora\c- para colaborar con la \cfDemolicionista\c- en sus misiones.\n" "\n" -"Demolicionista, este mensaje es para ti. Tu amor por el \cfPeluche de Mashiro\c- de nuestras \cfCajas Afortunadas\c- ha hecho efectivo su contrato, y así, cuando poseas una \cfLámpara Compañera Sankai\c-, la Dama Blanca estará dispuesta a trabajar junto a ti, y matar a todo enemigo que te encuentres.\n" +"Demolicionista, este mensaje es para ti. Tu amor por el \cfPeluche de Chica Polilla\c- de nuestras \cfCajas Afortunadas\c- ha hecho efectivo su contrato, y así, cuando poseas una \cfLámpara Compañera Sankai\c-, la Dama Blanca estará dispuesta a trabajar junto a ti, y matar a todo enemigo que te encuentres.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfGHFFFSDFHDGKHDFDKHGSFHFHGSFSH\c-\n" +"\cfPerdóname un momento mientras me pongo todo loca porque resulta que las chicas polilla existen de verdad.\c-\n" "\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\cfLAS CHICAS POLILLA EXISTEN\c-\n" -"\n" -"\cfES QUE ME VOY A CONSTRUIR UNA PUTA NAVE ESPACIAL PARA VIAJAR A ESE PLANETA, A LA MIERDA LAS LEYES, A LA MIERDA EL TRATADO DE CICATRIZ BLANCA, A LA MIERDA TODO, QUIERO VER A LAS CHICAS POLILLA. ME VOY A LLEVAR TODAS LAS LÁMPARAS QUE ENCUENTRE, ME VOY A MONTAR UN PUTO HARÉN.\c-"; +"\cfGHFFFSDFHDGKHDFDKHGSFHFHGSFSH\c-"; SWWM_LORETAG_WHITESCAR = "Cicatriz Blanca"; SWWM_LORETXT_WHITESCAR = "\cxNombre:\c-\n" @@ -3575,7 +4296,7 @@ SWWM_LORETXT_WHITESCAR = "\n" "Hubo muchas pérdidas en ambos bandos, incluyendo civiles, en un enfrentamiento caótico entre gente que, hace muy poco, había gozado de medio siglo de alianza pacífica. En tres años, los vastamente superiores ejércitos Nukuri neutralizaron toda oposición, y pusieron el punto de mira en el mismo corazón del país. Deseando \"matar a la bestia desde dentro\", un pequeño equipo consiguió localizar y capturar al presidente. Se le dio una última elección, ahí y entonces. Podía o bien rendirse y disculparse públicamente por su afrenta al imperio, o podría rechazar esto, y ver como la \cfIra del Emperador\c- caía sobre él.\n" "\n" -"Optó por elegir la segunda opción, y lo que siguió a esto fue algo que solo pudo ser descrito como inimaginablemente cruel y despiadado. Todas las fuerzas Nukuri se retiraron, y evacuaron a todos los civiles Nukuri restantes. Entonces, en un mero instante, una sucesión de destellos de luz cegadora redujeron todo el territorio de los Estados Unidos a cenizas, disparados desde un arma orbital experimental que el imperio había construido varios años antes. Fue su primera prueba de fuego, y su escala y efectos eran desconocidos hasta entonces. Algunos dicen que los efectos apocalípticos que tuvo no fueron intencionados, que el plan no era destruir toda forma de vida, sino solo causar destrucción a un nivel más \"técnico\", inutilizando toda maquinaria e infraestructura. Es suficiente con decir que, cuando el diseñador jefe de este arma, \cfZanaveth Nekuraku I\c-, fue testigo de lo que ocurrió, sufrió una crisis tremenda, y desapareció de la vida pública durante muchos años.\n" +"Optó por elegir la segunda opción, y lo que siguió a esto fue algo que solo pudo ser descrito como inimaginablemente cruel y despiadado. Todas las fuerzas Nukuri se retiraron, y evacuaron a todos los civiles Nukuri restantes. Entonces, en un mero instante, una sucesión de destellos de luz cegadora redujeron todas las grandes ciudades a lo largo de la costa este de los Estados Unidos a cenizas, disparados desde un arma orbital experimental que el imperio había construido varios años antes. Fue su primera prueba de fuego, y su escala y efectos eran desconocidos hasta entonces. Algunos dicen que los efectos apocalípticos que tuvo no fueron intencionados, que el plan no era destruir toda forma de vida, sino solo causar destrucción a un nivel más \"técnico\", inutilizando toda maquinaria e infraestructura. Es suficiente con decir que, cuando el diseñador jefe de este arma, \cfZanaveth Nekuraku I\c-, fue testigo de lo que ocurrió, sufrió una crisis tremenda, y desapareció de la vida pública durante muchos años.\n" "\n" "Con este ataque, las llamas de la guerra contra el imperio solo fueron avivadas. Adicionalmente, todos los Nukuri restantes en la Tierra fueron forzados a marcharse, y con la excepción de unos pocos países, el \cfTratado de la Cicatriz Blanca\c- fue firmado casi de forma unánime, poniendo fin a medio siglo de contribuciones de los Nukuri a la evolución de nuestra ciencia y tecnología. Aquellos que firmaron el tratado tuvieron que rechazar todo aquello creado por ellos, y no podían nunca más contactar con ningún miembro de la especie. Además, tampoco fue permitido que permaneciesen en su colonia Lunar, forzando al \cfInstituto Luna de Investigación\c- a cerrar sus puertas tras casi cuatro mil años.\n" "\n" @@ -3583,16 +4304,16 @@ SWWM_LORETXT_WHITESCAR = "\n" "Entonces, \cfNukritas 1xx\c-, por su cuenta, caminaría desde la punta norte de Akane hasta la capital imperial en Vutaki. Su avance no pudo ser detenido, ignoró todo intento por los soldados imperiales, destruyó sus armas solo con mirarlas. En cuanto llegó al palacio imperial, abrió las puertas de una patada y se aproximó al trono, donde el emperador Ledora Yathai, paralizado por el terror, recibió un puñetazo en el estómago del embajador Mishe, y salió despedido en una línea recta por la ventana, alcanzando tal velocidad que desapareció completamente en el vacío del espacio exterior. Luego, la Universidad hizo su anuncio, el \cfUltimátum de Nos-Kora\c-. Dieron a la raza Nukuri ocho años para resolver sus conflictos y hacer las paces. De no hacerlo, la Universidad cerraría sus puertas para siempre, y los Mishe abandonarían formalmente la \cfCoalición X'Animen\c-, llevándose consigo sus valiosos conocimientos.\n" "\n" -"Esta amenaza fue tomada muy en serio, ya que los Mishe eran los miembros más importantes de esta alianza interplanetaria, y por lo tanto una reforma masiva tuvo lugar. Ambos bandos estaban ahora unidos en su misión de reconstruir todo Nahkami como una nueva nación. En 2108, solo a la mitad del límite de tiempo que se les dio, el \cfGobierno Unificado Nukuri\c- fue establecido, con \cfZanata Nekuraku II\c- como primera ministra \"de transición\". Tras esto, hubo un intento de restablecer relaciones con la Tierra, pero fue inútil, siendo ignorados por completo, excepto por dos países que no firmaron el tratado: Escocia y Japón.\n" +"Esta amenaza fue tomada muy en serio, ya que los Mishe eran los miembros más importantes de esta alianza interplanetaria, y por lo tanto una reforma masiva tuvo lugar. Ambos bandos estaban ahora unidos en su misión de reconstruir todo Nahkami como una nueva nación. En 2108, solo a la mitad del límite de tiempo que se les dio, el \cfGobierno Unificado de Nahkami\c- fue establecido, con \cfZanata Nekuraku II\c- como primera ministra \"de transición\". Tras esto, hubo un intento de restablecer relaciones con la Tierra, pero fue inútil, siendo ignorados por completo, excepto por dos países que no firmaron el tratado: Escocia y Japón.\n" "\n" "Estos dos países eran el hogar de poderosas corporaciones aliadas desde hace tiempo con la propia compañía de Zanata, \cfNekuratek\c-, y eran plenamente conscientes de la verdad de toda esta situación, razón por la que habían rechazado romper su alianza con ellos. Ha de notarse que hubo mucho revuelo en redes sociales por parte de \cfSaya Miyamoto\c-, jefa de la Japonesa \cfAkari Labs\c-, quien condenaba a todos aquellos que habían firmado el tratado por su \"asquerosa generalización\" al ver a toda la raza Nukuri como un enemigo.\n" "\n" "No hubo más intentos desde entonces de restablecer la anterior alianza, ni siquiera incluso durante muchos eventos mayores que amenazarían a la Tierra de nuevo, cuando podrían haber aceptado con gusto ayudarnos de la misma forma que hicieron en el \cfEvento Luna\c- de 2021. Además, se prohibió a la Tierra entrar en la Coalición X'Animen debido a esta agresiva oposición.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfHe aquí, aquí está, el momento más oscuro de la historia de la humanidad (por ahora). En serio, es que me jode muchísimo recordar toda la mierda que pasó, fue horrible. Porque a ver, no fue solo el puto incendiamiento de un país entero, también estaba todo lo del otro lado, todo lo que me contó Zana-sama.\c-\n" +"\cfHe aquí, aquí está, el momento más oscuro de la historia de la humanidad (por ahora). En serio, es que me jode muchísimo recordar todo lo que pasó, fue horrible. Porque a ver, no fue solo el incendiamiento de un país entero, también estaba todo lo del otro lado, todo lo que me contó Zana-sama.\c-\n" "\n" -"\cfA ver, sí, de todo ésto uno puede sacar que los Nukuri no eran exactamente pacíficos, pero es que no es ni la mitad de todo. El imperio, el puto imperio, todo era culpa del puto apestoso asqueroso puta mierda de imperio. Puto, cerdo homicida megalómano asqueroso emperador detrás de toda la mierda, haciendo lo que le saliera de los putos cojones. Todas esas guerras, era todo gente que quería echarlo fuera, y él los pisoteaba, una y otra vez, sin ningún remordimiento. El mundo era suyo, y se lo follaba cuando quería, como el puto feo bastardo que era. Sí, lo he oído todo. Las ejecuciones en masa, llevando no solo a una, sino DOS razas enteras a la extinción, sí, ESO si que fue una jodienda. Oh pero que tal también, torturar y masacrar a la gente que veía como \"traidores\" y \"desviados\", ¿eh? Sí, esa mierda también. Zana-sama perdió a muchos familiares por culpa de eso. Blej, en serio, juro que un día voy a encontrar a donde mandaron al puto bastardo ese, solo para poder patearlo hasta hacerlo picadillo. Obviamente empezaré por los cojones, eso sí, eso por la otra cosa que hizo, de la que no voy a hablar aquí porque joder, es que esto ya se ha puesto muy negro (y aun es peor). Tengo BUENAS razones para odiar a alguien tan jodidamente asquerosamente vil como el hijoputa este, joder, \"hijoputa\" ni siquiera se acerca, teniendo en cuenta lo que hizo. Sí, creo que lo vas pillando, ¿verdad? Apuesto a que tú también querrías echarle mano. Joder, si no fuera porque los tíos esos lo mandaron al puto espacio...\c-"; +"\cfA ver, sí, de todo ésto uno puede sacar que los Nukuri no eran exactamente pacíficos, pero es que no es ni la mitad de todo. El imperio, el puto imperio, todo era culpa del maldito asqueroso imperio. El, megalómano emperador asqueroso ese detrás de todo, haciendo lo que le saliera de ahí. Todas esas guerras, era todo gente que quería echarlo fuera, y él los pisoteaba, una y otra vez, sin ningún remordimiento. El mundo era suyo, y hacía lo que le daba la gana con todos. Sí, todo ese tema. Las ejecuciones en masa, torturar y masacrar a la gente que veía como \"traidores\" y \"desviados\"... Zana-sama perdió a muchos familiares por culpa de eso. En serio odio que haya cosas así que sigan pasando por todo el mundo...\c-"; SWWM_LORETXT_XANIMEN = "\cxNombre:\c-\n" "\cf Coalición X'Animen\c-\n" @@ -3622,7 +4343,7 @@ SWWM_LORETXT_XANIMEN = "\n" "\cfKarnanaiahma:\c- Un mundo de vastos océanos, y el hogar natal de los \cfQurensniv\c-, una raza casi indistinguible de los humanos. Algunos de sus habitantes migraron a la Tierra en el 130 AC, fundando el pueblo de \cfKereshnovka\c-.\n" "\n" -"\cfBuran:\c- Un planeta anteriormente exuberante de bosques salvajes, el cual está ahora cubierto en su totalidad por la superestructura de cerebro de matrioshka conocida como la \cfBleaknet\c-. Es el hogar natal de la raza \cfBuran\c-, de la cual solo queda un miembro: el ingeniero jefe del proyecto Bleaknet. Esta estructura de curioso nombre adicionalmente sirve como un nexo de información para toda la coalición, enlazando todas sus redes a través de complicada tecnología de distorsión del espacio-tiempo.\n" +"\cfBuran:\c- Un planeta anteriormente exuberante de bosques salvajes, el cual está ahora cubierto en su totalidad por la superestructura de cerebro de matrioshka conocida como la \cfBleaknet\c-. Es el hogar natal de la raza \cfBuran\c-, de la cual solo queda un miembro residente: el ingeniero jefe del proyecto Bleaknet. Esta estructura de curioso nombre adicionalmente sirve como un nexo de información para toda la coalición, enlazando todas sus redes a través de complicada tecnología de distorsión del espacio-tiempo.\n" "\n" "\cfSora, Yasakuna, Sunkaeze:\c- Dos gigantes de gas y un planeta árido en el borde exterior del sistema. Todos inhabitables, aunque ha de notarse que \cfSunkaeze\c- una vez hospedó una instalación perteneciente a \cfDecade Mechanics\c-.\n" "\n" @@ -3637,7 +4358,7 @@ SWWM_LORETXT_XANIMEN = "\n" "\cfNekemekya:\c- Un planeta semi-artificial cubierto por una gran coraza metálica. Es el hogar de \cfIx Nemeke\c-, y de los \cfMekyon\c-, una raza de criaturas mecánicas que creó.\n" "\n" -"\cfXeryuga:\c- Un planeta infernal cubierto de magma altamente hostil, habitado por la injustamente adorable raza de los \cfXeura\c-, junto con \cfIx Xeuriges\c-, su creador.\n" +"\cfXeryuga:\c- Un planeta infernal cubierto de magma altamente hostil, habitado por la raza lagomórfica de los \cfXeura\c-, junto con \cfIx Xeuriges\c-, su creador.\n" "\n" "\cfUrai, Erusa, Sethia:\c- Un trío de gigantes de gas ricos en materiales valiosos. La explotación de estos recursos está actualmente impugnada por miembros del sistema.\n" "\n" @@ -3681,9 +4402,9 @@ SWWM_LORETXT_XANIMEN = "Adicionalmente, otros dos sistemas fueron considerados como candidatos para unirse. Las negociaciones fallaron con uno debido a hostilidades hacia otro miembro de la coalición, y el otro está pendiente, ya que su única especie nativa tiene varios conflictos internos sin resolver que deben ser manejados.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cf\"Las negociaciones fallaron\" es una forma de decirlo. Dios, imagina... solo IMAGINA por un momento que la cosa hubiese salido mejor. ¡Formaríamos parte de una alianza interplanetaria enorme! Es que eso es... casi sacado de una puta novela de ciencia ficción.\c-\n" +"\cf\"Las negociaciones fallaron\" es una forma de decirlo. Dios, imagina... solo IMAGINA por un momento que la cosa hubiese salido mejor. ¡Formaríamos parte de una alianza interplanetaria enorme! Es que eso es... casi sacado de una novela de ciencia ficción.\c-\n" "\n" -"\cfPor cierto, no sé si sólo lo has ojeado o si realmente te lo has leído todo, pero ¿has VISTO lo del planeta ese? ¿¿¿Que recontracojones es esa mierda??? Es como si se le hubiera ocurrido a un puto niño loco supercreativo. Joder. ¿En serio un dios hizo eso? O... ¿va y resulta que es la puta mayor coincidencia ridícula imaginable?\c-\n" +"\cfPor cierto, no sé si sólo lo has ojeado o si realmente te lo has leído todo, pero ¿has VISTO lo del planeta ese? ¿¿¿Que rayos es todo eso??? Es como si se le hubiera ocurrido a un niño de primaria supercreativo. La madre. ¿En serio un dios hizo eso? O... ¿va y resulta que es la mayor coincidencia ridícula imaginable?\c-\n" "\n" "\cfSi es que yo no sé, Demo-chan... llegado este punto, puede ser cualquier cosa, con lo que tengo visto por ahí.\c-"; SWWM_LORETXT_XANIMEN2 = @@ -3731,7 +4452,7 @@ SWWM_LORETXT_XANIMEN2 = "\n" "\cfNekemekya:\c- Un planeta semi-artificial cubierto por una gran coraza metálica. Es el hogar de \cfIx Nemeke\c-, y de los \cfMekyon\c-, una raza de criaturas mecánicas que creó.\n" "\n" -"\cfXeryuga:\c- Un planeta infernal cubierto de magma altamente hostil, habitado por la injustamente adorable raza de los \cfXeura\c-, junto con \cfIx Xeuriges\c-, su creador.\n" +"\cfXeryuga:\c- Un planeta infernal cubierto de magma altamente hostil, habitado por la raza lagomórfica de los \cfXeura\c-, junto con \cfIx Xeuriges\c-, su creador.\n" "\n" "\cfUrai, Erusa, Sethia:\c- Un trío de gigantes de gas ricos en materiales valiosos. La explotación de estos recursos está actualmente impugnada por miembros del sistema.\n" "\n" @@ -3784,9 +4505,9 @@ SWWM_LORETXT_XANIMEN2 = "Adicionalmente, otro sistema fue considerado como candidato para unirse, sin embargo las negociaciones fallaron debido a hostilidades hacia otro miembro de la coalición. Hay planes aun por parte de los Nukuri de restablecer la paz para que puedan formar parte de esta gran alianza, pero muchos lo ven como una causa perdida.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cf\"Las negociaciones fallaron\" es una forma de decirlo. Dios, imagina... solo IMAGINA por un momento que la cosa hubiese salido mejor. ¡Formaríamos parte de una alianza interplanetaria enorme! Es que eso es... casi sacado de una puta novela de ciencia ficción.\c-\n" +"\cf\"Las negociaciones fallaron\" es una forma de decirlo. Dios, imagina... solo IMAGINA por un momento que la cosa hubiese salido mejor. ¡Formaríamos parte de una alianza interplanetaria enorme! Es que eso es... casi sacado de una novela de ciencia ficción.\c-\n" "\n" -"\cfPor cierto, no sé si sólo lo has ojeado o si realmente te lo has leído todo, pero ¿has VISTO lo del planeta ese? ¿¿¿Que recontracojones es esa mierda??? Es como si se le hubiera ocurrido a un puto niño loco supercreativo. Joder. ¿En serio un dios hizo eso? O... ¿va y resulta que es la puta mayor coincidencia ridícula imaginable?\c-\n" +"\cfPor cierto, no sé si sólo lo has ojeado o si realmente te lo has leído todo, pero ¿has VISTO lo del planeta ese? ¿¿¿Que rayos es todo eso??? Es como si se le hubiera ocurrido a un niño de primaria supercreativo. La madre. ¿En serio un dios hizo eso? O... ¿va y resulta que es la mayor coincidencia ridícula imaginable?\c-\n" "\n" "\cfSi es que yo no sé, Demo-chan... llegado este punto, puede ser cualquier cosa, con lo que tengo visto por ahí.\c-\n" "\n" @@ -3812,9 +4533,7 @@ SWWM_LORETXT_XEKKE = "\cxNotas de Saya:\c-\n" "\cfSolo he visto fotos del sitio este, de Zana-sama. Definitivamente mola, todas esas montañas rocosas, las ciudades expandiéndose alrededor, los lagos y cataratas, las zonas volcánicas con ríos enormes de magma y GENTE BAÑÁNDOSE EN ELLA (madre de dios)...\c-\n" "\n" -"\cfY sí, ese es justo básicamente el hogar de Maruku-sama. Tiene ahí a toda la familia y todo, incluyendo a su... madre. Oh dios mío joder no hagas que empiece con su madre. Si es que voy a acabar otra vez encogida en un rincón pensando en AQUELLA vez.\c-\n" -"\n" -"\cfEs que no me lo creo una puñetera diosa milf de cinco metros todo buenorra va y me ofrece sexo justo ahí y entonces y luego puta joder me cago en todo por que tuve que ir y desmayarme joder es que podría haber tenido EL MEJOR SEXO DE MI PUTA VIDA CON LA PUTA DIOSA DE LA LUJURIA.\c-"; +"\cfY sí, ese es justo básicamente el hogar de Maruku-sama. Tiene ahí a toda la familia y todo. Je, hasta me ha dicho que al vivir rodeada de titanes no se siente tan acomplejada por ser tan gigantesca.\c-"; SWWM_LORETAG_YNYKRON = "Artefacto Ynykron"; SWWM_LORETXT_YNYKRON = "\cxDesignación:\c-\n" @@ -3846,11 +4565,11 @@ SWWM_LORETXT_YNYKRON = "\cxNotas de Saya:\c-\n" "\cfA veces me pregunto si Misa realmente se da cuenta del peligro de las cosas que hace. Este trasto... es demasiado, sabes... Incluso comparado con todas las otras cosas en tu arsenal. Acabé aceptándolo igual, porque ya sabes como soy, y lo adorable que es Misa. Es que no puedo decirle que no a esa cara tan mona. Además, lo hizo para nosotras, específicamente.\c-\n" "\n" -"\cfPues eso, he aquí el \"Lefazo de Dios\" en toda su gloria. Una puta explosión de blancura cegadora que vamos... se puto carga todo lo que pilla por delante. Vaya un arma, ¿verdad?\c-\n" +"\cfPues eso, he aquí la \"Furia Divina\" en toda su gloria. Una maldita explosión de blancura cegadora que vamos... se puto carga todo lo que pilla por delante. Vaya un arma, ¿verdad?\c-\n" "\n" "\cfOh ya, y el modo alternativo... Sé que lo vas a usar igual por curiosidad. Sólo... ten cuidado, ¿vale?\c-\n" "\n" -"\cfOh, y para que lo sepas, la cosa esta es la razón de que hago copias de seguridad de tu núcleo antes de cada misión. Con cualquier otra arma, no es que me preocupe porque tu cuerpo es jodidamente resistente, pero la puta cosa esta es que está a otro nivel completamente. Tengo que decirlo otra vez, TEN MUCHO CUIDADO. Si te pilla la explosión desapareces para siempre, ¿lo pillas?\c-"; +"\cfOh, y para que lo sepas, la cosa esta es la razón de que hago copias de seguridad de tu núcleo antes de cada misión. Con cualquier otra arma, no es que me preocupe porque tu cuerpo es jodidamente resistente, pero la cosa esta es que está a otro nivel completamente. Tengo que decirlo otra vez, TEN MUCHO CUIDADO. Si te pilla la explosión desapareces para siempre, ¿lo pillas?\c-"; SWWM_LORETXT_YNYKRON2 = "\cxDesignación:\c-\n" "\cf Artefacto Ynykron\c-\n" @@ -3881,15 +4600,15 @@ SWWM_LORETXT_YNYKRON2 = "\cxNotas de Saya:\c-\n" "\cfA veces me pregunto si Misa realmente se da cuenta del peligro de las cosas que hace. Este trasto... es demasiado, sabes... Incluso comparado con todas las otras cosas en tu arsenal. Acabé aceptándolo igual, porque ya sabes como soy, y lo adorable que es Misa. Es que no puedo decirle que no a esa cara tan mona. Además, lo hizo para nosotras, específicamente.\c-\n" "\n" -"\cfPues eso, he aquí el \"Lefazo de Dios\" en toda su gloria. Una puta explosión de blancura cegadora que vamos... se puto carga todo lo que pilla por delante. Vaya un arma, ¿verdad?\c-\n" +"\cfPues eso, he aquí la \"Furia Divina\" en toda su gloria. Una maldita explosión de blancura cegadora que vamos... se puto carga todo lo que pilla por delante. Vaya un arma, ¿verdad?\c-\n" "\n" "\cfOh ya, y el modo alternativo... Sé que lo vas a usar igual por curiosidad. Sólo... ten cuidado, ¿vale?\c-\n" "\n" -"\cfOh, y para que lo sepas, la cosa esta es la razón de que hago copias de seguridad de tu núcleo antes de cada misión. Con cualquier otra arma, no es que me preocupe porque tu cuerpo es jodidamente resistente, pero la puta cosa esta es que está a otro nivel completamente. Tengo que decirlo otra vez, TEN MUCHO CUIDADO. Si te pilla la explosión desapareces para siempre, ¿lo pillas?\c-\n" +"\cfOh, y para que lo sepas, la cosa esta es la razón de que hago copias de seguridad de tu núcleo antes de cada misión. Con cualquier otra arma, no es que me preocupe porque tu cuerpo es jodidamente resistente, pero la cosa esta es que está a otro nivel completamente. Tengo que decirlo otra vez, TEN MUCHO CUIDADO. Si te pilla la explosión desapareces para siempre, ¿lo pillas?\c-\n" "\n" -"\cfPS: Lo hemos confirmado (bueno, lo hizo Misa, directamente), esta cosa también funciona contra dioses. No como para matar, pero sí que se notan unos... efectos bastante destructivos. Curiosa historia, verdad? Justo el día después de nuestra boda, Misa se presentó ahí con su Ynykron personal a cuestas y desafió a la puta diosa de la guerra a un duelo, justo ahí. Se comió todo el puñetero disparo, le churruscó bien todo el cuerpo hasta dejarlo en los huesos. Después de esa experiencia tan dolorosa, va y declara a Misa como la segunda guerrera más fuerte del puto universo, tal que así. Oh, ya, y Erika describió la experiencia como \"ser golpeada por una supernova condensada\". Suena tope de heavy.\c-\n" +"\cfPS: Lo hemos confirmado (bueno, lo hizo Misa, directamente), esta cosa también funciona contra dioses. No como para matar, pero sí que se notan unos... efectos bastante destructivos. Curiosa historia, verdad? Justo el día después de nuestra boda, Misa se presentó ahí con su Ynykron personal a cuestas y desafió a la mismísima diosa de la guerra a un duelo, justo ahí. Se comió todo el puñetero disparo, le churruscó bien todo el cuerpo hasta dejarlo en los huesos. Después de esa experiencia tan dolorosa, va y declara a Misa como la segunda guerrera más fuerte del universo, tal que así. Oh, ya, y Erika describió la experiencia como \"ser golpeada por una supernova condensada\". Suena tope de heavy.\c-\n" "\n" -"\cfAh... y creo que esta va a ser la última vez que podamos usar la nuestra en una misión. Misa ya no quiere tener nada que ver con todo esto. En cuanto termine todo tenemos que llevársela para se destruida. Una pena, pero a ver, lo entiendo perfectamente, esta clase de arma no debería existir.\c-"; +"\cfAh... y creo que esta va a ser la última vez que podamos usar la nuestra en una misión. Misa ya no quiere tener nada que ver con todo esto. En cuanto termine todo tenemos que llevársela para se destruida, y lo entiendo perfectamente, esta clase de arma tal vez no debería existir.\c-"; SWWM_LORETXT_YUI = " \cxNombre Completo:\c-\n" " \cf Yui Miyamoto\c-\n" @@ -3914,11 +4633,9 @@ SWWM_LORETXT_YUI = "Tras el concierto, se puso en fila emocionada por tener un autógrafo, y fue entonces que lo imposible se hizo posible. Una vez delante de la \cfEstilosa Bruja del Oeste\c-, Yui se lo pidió, nerviosa, pero lo que recibió en su lugar fueron unas palabras que la dejaron paralizada: \"Eres una chavala monísima. ¿Quieres salir conmigo?\". Basta decir, que actualmente las dos están felizmente casadas.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfghfjksdhfsjkghsdkfjsfgj estaba tán contenta por ella pero también CELOSA, SÍ, CELOSÍSIMA. Dios cuando pasó pensé que se iba a desplomar, con la novia gótica tetuda preguntándole eso de repente, madre de dios...\c-\n" +"\cfghfjksdhfsjkghsdkfjsfgj estaba tán contenta por ella. pero dios, cuando pasó pensé que se iba a desplomar, con la bruja gótica molona preguntándole eso de repente, madre de dios...\c-\n" "\n" -"\cfPues aparentemente, Yu-chan resultó ser JUSTO su tipo, vaya una coincidencia, ¿eh? Puto hechas la una para la otra, justo ahí. Sinceramente, esto apesta tanto a cliché de romance a primera vista, buf... Apuesto a que cuesta mucho creer una historia así. Ashley-san hasta bromeaba diciendo que el \"amor a primera vista\" es algo normal en su familia. Pffff...\c-\n" -"\n" -"\cfJoder la envidia que tenía... con su novia gótica tetuda todo mazizorra... Bueno, la tenía, hasta que llegó Ibuki, jejejeje...\c-"; +"\cfPues aparentemente, Yu-chan resultó ser JUSTO su tipo, vaya una coincidencia, ¿eh? Hechas la una para la otra, justo ahí. Sinceramente, esto apesta tanto a cliché de romance a primera vista, buf... Apuesto a que cuesta mucho creer una historia así. Ashley-san hasta bromeaba diciendo que el \"amor a primera vista\" es algo normal en su familia. Pffff... Venga ya...\c-"; SWWM_LORETXT_ZANAVETH2 = " \cxNombre Completo:\c-\n" " \cf Zanaveth Nekuraku II\c-\n" @@ -3946,14 +4663,14 @@ SWWM_LORETXT_ZANAVETH2 = "\n" "A principios de la \cfSéptima Guerra Mundial Nukuri\c- de 2068, Zanaveth II huyó con su mujer y su hija a \cfSankaideriha\c-, ayudada de la bruja Nukuri \cfSaniuke Okusainaya\c-, vieja amiga de la familia. Dos años después, tras demostrar no poder acostumbrarse a vivir allí, la familia decidió dejar a Zanaveth III al cuidado de Saya. Esto duraría hasta 2077, cuando el incidente de la \cfCicatriz Blanca\c- dio lugar a la expulsión de todos los Nukuri en la Tierra. Zanaveth III fue enviada entonces a vivir con sus abuelos, hasta el final de la guerra en 2104, cuando sus padres regresaron de nuevo a Nahkami.\n" "\n" -"Desde la formación del \cfGobierno Unificado Nukuri\c- en 2108, Zanaveth II mantiene el puesto de \"Ministra de Relaciones Interespecie\", gracias en parte a sus brillantes logros durante el tiempo que pasó como estudiante de la Universidad de Nos-Kora.\n" +"Desde la formación del \cfGobierno Unificado de Nahkami\c- en 2108, Zanaveth II mantiene el puesto de \"Ministra de Relaciones Interespecie\", gracias en parte a sus brillantes logros durante el tiempo que pasó como estudiante de la Universidad de Nos-Kora.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfAhhhhhh, joder. Es la tipa más dulce y mona que he conocido jamás, te lo digo en serio. Y es un puto superlogro que haya convertido a esta monada alienígena en toda una otaku también, jeje...\c-\n" +"\cfAhhhhhh, dios. Es la tipa más dulce y mona que he conocido jamás, te lo digo en serio. Y es un superlogro que haya convertido a esta monada alienígena en toda una otaku también, jeje...\c-\n" "\n" -"\cfOh tía, conocerla fue el mejor regalo de navidad de la historia. Y al pequeñín rollito de canela de su mujer, también, jujuju... Suertuda que es, pillándose a un pivón como ese. Molaba mucho salir con ellas por ahí, especialmente por lo mucho que le impresionaba todo a Zana-sama yendo por la ciudad. Era como una niña en una tienda de chuches. ABSOLUTAMENTE ADORABLE, JODER.\c-\n" +"\cfOh tía, conocerla fue el mejor regalo de navidad de la historia, y al precioso rollito de canela de su mujer, también. Molaba mucho salir con ellas por ahí, especialmente por lo mucho que le impresionaba todo a Zana-sama yendo por la ciudad. Era como una niña en una tienda de chuches. ABSOLUTAMENTE ADORABLE.\c-\n" "\n" -"\cfAhora con la mierda esa de la Cicatriz Blanca, no nos hablamos mucho. Misa ha conseguido visitarme unas cuantas veces, pero no es lo mismo, y pude notar que tampoco lo pasaba bien. Sí, puta mierda, espero que un día se acabe todo y pueda tener a las dos aquí otra vez.\c-"; +"\cfAhora con la mierda esa de la Cicatriz Blanca, no nos hablamos mucho. Misa ha conseguido visitarme unas cuantas veces, pero no es lo mismo, y pude notar que tampoco lo pasaba bien. Sí, espero que un día se acabe todo y pueda tener a las dos aquí otra vez.\c-"; SWWM_LORETXT_ZANAVETH22 = " \cxNombre Completo:\c-\n" " \cf Zanaveth Nekuraku II\c-\n" @@ -3981,16 +4698,16 @@ SWWM_LORETXT_ZANAVETH22 = "\n" "A principios de la \cfSéptima Guerra Mundial Nukuri\c- de 2068, Zanaveth II huyó con su mujer y su hija a \cfSankaideriha\c-, ayudada de la bruja Nukuri \cfSaniuke Okusainaya\c-, vieja amiga de la familia. Dos años después, tras demostrar no poder acostumbrarse a vivir allí, la familia decidió dejar a Zanaveth III al cuidado de Saya. Esto duraría hasta 2077, cuando el incidente de la \cfCicatriz Blanca\c- dio lugar a la expulsión de todos los Nukuri en la Tierra. Zanaveth III fue enviada entonces a vivir con sus abuelos, hasta el final de la guerra en 2104, cuando sus padres regresaron de nuevo a Nahkami.\n" "\n" -"Desde la formación del \cfGobierno Unificado Nukuri\c- en 2108, Zanaveth II mantiene el puesto de \"Ministra de Relaciones Interespecie\", gracias en parte a sus brillantes logros durante el tiempo que pasó como estudiante de la Universidad de Nos-Kora.\n" +"Desde la formación del \cfGobierno Unificado de Nahkami\c- en 2108, Zanaveth II mantiene el puesto de \"Ministra de Relaciones Interespecie\", gracias en parte a sus brillantes logros durante el tiempo que pasó como estudiante de la Universidad de Nos-Kora.\n" "\n" "Desde 2171, Zanaveth II ha estado envuelta en negociaciones con los \cfAnarukon\c-, como parte de una \"expansión multiversal\" de la \cfBleaknet\c-. Adicionalmente, a partir de un trato con \cfAkari Labs\c-, la Tierra tendrá también su propio nodo con el Nexo de Bleaknet. Este último acto siendo parte de un plan mayor para restaurar las relaciones entre Humanos y Nukuri, poniendo fin al Tratado de la Cicatriz Blanca.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfAhhhhhh, joder. Es la tipa más dulce y mona que he conocido jamás, te lo digo en serio. Y es un puto superlogro que haya convertido a esta monada alienígena en toda una otaku también, jeje...\c-\n" +"\cfAhhhhhh, dios. Es la tipa más dulce y mona que he conocido jamás, te lo digo en serio. Y es un superlogro que haya convertido a esta monada alienígena en toda una otaku también, jeje...\c-\n" "\n" -"\cfOh tía, conocerla fue el mejor regalo de navidad de la historia. Y al pequeñín rollito de canela de su mujer, también, jujuju... Suertuda que es, pillándose a un pivón como ese. Molaba mucho salir con ellas por ahí, especialmente por lo mucho que le impresionaba todo a Zana-sama yendo por la ciudad. Era como una niña en una tienda de chuches. ABSOLUTAMENTE ADORABLE, JODER.\c-\n" +"\cfOh tía, conocerla fue el mejor regalo de navidad de la historia, y al precioso rollito de canela de su mujer, también. Molaba mucho salir con ellas por ahí, especialmente por lo mucho que le impresionaba todo a Zana-sama yendo por la ciudad. Era como una niña en una tienda de chuches. ABSOLUTAMENTE ADORABLE.\c-\n" "\n" -"\cfAhora que la puta basura esa de la Cicatriz Blanca se irá a tomar por culo, tengo unas ganas tremendas de poderla ver de nuevo por aquí. Dios, cuando apareció después de la boda con Kirin-kun casi me puse a llorar. La echaba jodidamente tanto de menos, es que... en serio.\c-"; +"\cfAhora que la basura esa de tratado la Cicatriz Blanca se irá a tomar viento, tengo unas ganas tremendas de poderla ver de nuevo por aquí. Dios, cuando apareció después de la boda con Kirin-kun casi me puse a llorar. La echaba tanto de menos, es que... en serio.\c-"; SWWM_LORETXT_ZANAVETH3 = " \cxNombre Completo:\c-\n" " \cf Zanaveth Nekuraku III\c-\n" @@ -4008,7 +4725,7 @@ SWWM_LORETXT_ZANAVETH3 = "\n" "\cfZanaveth Nekuraku III\c- es la hija única de \cfZanaveth Nekuraku II\c- y \cfMisa Azadeku Unissix\c-. Pasó la mayor parte de su infancia en la Tierra, donde había nacido, aunque ella y su familia tuvieron que mudarse de vuelta a \cfNahkami\c- una vez cumplió los cuatro años, ya que por ley, debía estudiar en un colegio Nukuri. Fue en el colegio donde la joven niña comenzaría a tener problemas notables.\n" "\n" -"Zanaveth III fue víctima frecuente de acoso por parte de sus compañeros, debido a su extraña personalidad y gestos, lo cual fue intensificado por los efectos de su Yikazoroi (lit. \"Explosión de Estrés\"), un desorden frecuente entre niños Nukuri (aunque solo desarrollado por uno entre doscientos), lo que causaba que el acoso constante resultara en arrebatos violentos, los cuales luego intensificaban el acoso aun más. Dada la inacción del personal del colegio entonces, su madre los demandaría, y sería trasladada a un colegio distinto al otro lado de la provincia.\n" +"Zanaveth III fue víctima frecuente de acoso por parte de sus compañeros, debido a su extraña personalidad y gestos. Dada la inacción del personal del colegio entonces, su madre optó por trasladarla a un colegio distinto al otro lado de la provincia.\n" "\n" "A comienzos de la \cfSéptima Guerra Mundial Nukuri\c-, Zanaveth III y sus madres huyeron temporalmente a \cfSankaideriha\c-, ayudadas por una amiga de la familia Nekuraku. Durante su estancia allí, notarían que su hija tenía dificultades para acostumbrarse, citando que estar allí le provocaba \"shock mental\". Un diagnóstico formal mostraría que estaba reaccionando de forma negativa al flujo natural de magia de la isla, y se sugirió que se quedara a vivir con otra persona, fuera de la isla. Las dos finalmente pusieron a Zanaveth III al cuidado de \cfSaya Miyamoto\c-, una amiga que su madre hizo durante su primera visita a la Tierra.\n" "\n" @@ -4019,9 +4736,9 @@ SWWM_LORETXT_ZANAVETH3 = "Durante su estancia en la Tierra, Zanaveth III tuvo un historial notable en redes sociales y foros online, derivado de su extraño dialecto personal de Inglés y sus desvaríos sin sentido. Saya Miyamoto ha llegado a etiquetarla como \cfChuunibyou\c-, un viejo término Japonés usado para identificar la clase de rasgos que muestra, como su notada auto-importancia y deseo de llamar la atención, junto con pretender tener poderes especiales / poseer conocimientos arcanos, y otros sentimientos fantásticos.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfLa pequeña chuuni Zana-chan. Sí, a ver, parecerá fría y distante y antisocial y tal, pero de eso se puede echar culpa a lo mierder que ha sido la gente con ella. Dios es que ojalá pudiera partirles la cara a todos esos abusones. Recuerdo como solía venirme toda llorando, cabreada y frustrada después de meterse en líos y yo la sentaba en mis rodillas y le daba abracitos y caricias. Ahhhhh... en serio que todo eso hacía que me sintiese como una madre.\c-\n" +"\cfLa pequeña chuuni Zana-chan. Sí, a ver, parecerá fría y distante y antisocial y tal, pero de eso se puede echar culpa a lo mierder que ha sido la gente con ella. Dios es que ojalá pudiera partirles la cara a todos esos abusones. Recuerdo como solía venirme toda llorando, cabreada y frustrada después de meterse en líos y yo la sentaba en mis rodillas y le daba abracitos y caricias. Soy básicamente como su tía guay, jeje.\c-\n" "\n" -"\cfLo echo de menos, de verdad. Acariciar ese pelo azul tan mullidito y suave que tiene. Me gustaría saber a que anda ahora, todo eso de la \"dominación mundial\" en serio suena a lo suyo xDDDDD\c-\n" +"\cfLo echo de menos, de verdad. Acariciar ese pelo azul tan mullidito y suave que tiene, escuchar como me contaba todas sus historias, como me enseñaba todos aquellos dibujos de sus personajes y tal. Me gustaría saber a que anda ahora, todo eso de la \"dominación mundial\" en serio suena a lo suyo xDDDDD\c-\n" "\n" "\cfBueno, si vuelve a la Tierra, yo por mí aceptaría con los brazos abiertos a mi nueva gran señora chuuni.\c-"; SWWM_LORETXT_ZANAVETH32 = @@ -4054,8 +4771,6 @@ SWWM_LORETXT_ZANAVETH32 = "Durante un momento de confusión inmediatamente después de la invasión demoníaca de 2148, Zanaveth III hizo presencia en la Tierra, dando lugar entonces a su incomprensible plan de dominación mundial, el cual acabó fallando debido a conflictos internos con uno de sus \"secuaces\". Tras esta derrota, consiguió evadir a las autoridades durante un tiempo, ocultándose en las oficinas de \cfAkari Labs\c-, pero al final tuvo que regresar a Nahkami.\n" "\n" "\cxNotas de Saya:\c-\n" -"\cfAh mi preciosa pequeña chuuni. Fue toda una sorpresa que apareciera de repente en casa así salida de la nada, susto que me dio. Pero ahí estábamos reunidas de nuevo, como en los viejos tiempos. Estaba llena de heridas y quemaduras y tenía todo el maquillaje hecho un desastre de llorar, pobrecita. Le di muchos abrazos y caricias, todo lo que necesitaba. Incluso fui y le di un baño como cuando era pequeña, jejeje.\c-\n" -"\n" -"\cfOh ya, y lo que pasó luego. Sí, espero que guarde el secreto y no le cuente nada a Zana-sama. Puede que... bueno, que le haya \"echado una mano\", si sabes a lo que me refiero. Pensé que le ayudaría un poco a sentirse mejor, por muy estúpido que suene, pero le gustó, jujuju...\c-\n" +"\cfAh mi preciosa pequeña chuuni. Fue toda una sorpresa que apareciera de repente en casa así salida de la nada, susto que me dio. Pero ahí estábamos reunidas de nuevo, como en los viejos tiempos. Estaba llena de heridas y quemaduras y tenía todo el maquillaje hecho un desastre de llorar, pobrecita. Le di muchos abrazos y caricias, todo lo que necesitaba. Despues de un baño calentito y una buena comida preparada con el amor del mundo, ya volvió a sonreir, jeje.\c-\n" "\n" "\cfY luego, así de repente, se marchó otra vez, *suspiro*\c-"; diff --git a/language.es_menu b/language.es_menu index 3ba59dd1f..ca3d22a0b 100644 --- a/language.es_menu +++ b/language.es_menu @@ -1,36 +1,37 @@ [es] // keybinds -SWWM_KEYS = "Controles de DEMOLITIONIST"; +SWWM_KEYS = "Controles de DEMOLITIONIST (Requeridos)"; SWWM_PRIMARYFIRE = "Fuego Primario"; SWWM_SECONDARYFIRE = "Fuego Secundario"; SWWM_RELOADFIRE = "Recargar"; SWWM_ZOOMFIRE = "Fuego Terciario / Zoom"; SWWM_MELEE = "Ataque a Melé"; -SWWM_WALK = "Caminar"; -SWWM_SPRINT = "Esprintar"; -SWWM_TOGGLESPRINT = "Alternar Esprintar"; SWWM_DASH = "Embestir"; -SWWM_ITEMSENSE = "Sensor de Ítems"; SWWM_EXTRAFIRE = "Granada Rápida"; +SWWM_KBASE = "Menú de Demolicionista"; +SWWM_OPTKEYS = "Controles de DEMOLITIONIST (Opcionales)"; +SWWM_WALK = "Caminar"; +SWWM_ITEMSENSE = "Sensor de Ítems"; SWWM_GESTURE1 = "Saludar"; SWWM_GESTURE2 = "Pulgar Arriba"; SWWM_GESTURE3 = "Victoria"; SWWM_GESTURE4 = "Soplar Beso"; -SWWM_KBASE = "Menú de Demolicionista"; SWWM_MINIMAPIN = "Acercar Zoom de Minimapa"; SWWM_MINIMAPOUT = "Alejar Zoom de Minimapa"; // skills SWWM_SKEASY = "\cvSimple Reventamiento\c-"; SWWM_SKNORMAL = "\cdDía De Demolición\c-"; SWWM_SKHARD = "\ciMayormente Dañino\c-"; +SWWM_SKHARDCONFIRM = "\ciNo es la típica Ultra-Violencia.\nLas cosas se pondrán algo más duras.\c-\n\n\cf1.25x daño de monstruos\n25% de agresividad extra\c-\n\n(Pulsa Y para luchar)"; SWWM_SKHARDCORE = "\cgBocata De Dolor\c-"; -SWWM_SKHARDCORECONFIRM = "\cgEsta dificultad equivale a Pesadilla.\nPrepárate para una patada en el culo.\c-\n\n\cfMonstruos rápidos\n1.5x salud y daño de monstruos\n25% de agresividad extra\nTrucos deshabilitados\nMonstruos de cooperativo\nLa tienda está desactivada\nSolo se puede revivir una vez\c-\n\n(Pulsa Y para un desafío)"; +SWWM_SKHARDCORECONFIRM = "\cgEsta dificultad equivale a Pesadilla.\nPrepárate para una patada en el culo.\c-\n\n\cf1.5x daño de monstruos\n50% de agresividad extra\nTrucos deshabilitados\nMonstruos de cooperativo\nLa tienda está desactivada\nSolo se puede revivir una vez\c-\n\n(Pulsa Y para un desafío)"; SWWM_SKLUNATIC = "\crDemo Debe Morir\c-"; -SWWM_SKLUNATICCONFIRM = "\cr¿Seguro que quieres eso?\nLo vas a pasar MUY mal.\c-\n\n\cfTodos los cambios de \cgBocata De Dolor\cf\n+\nDoble velocidad de enemigos\nProyectiles enemigos duplicados\nPueden aparecer enemigos extra\nReflejos instantáneos de enemigo\nLos enemigos no se estremecen\nLos enemigos no pelean entre si\c-\n\n(Pulsa Y para morir al instante)"; +SWWM_SKLUNATICCONFIRM = "\cr¿Seguro que quieres eso?\nLo vas a pasar MUY mal.\c-\n\n\cfTodos los cambios de \cgBocata De Dolor\cf\n+\n2x daño de monstruos\nMonstruos rápidos\nProyectiles enemigos duplicados\nPueden aparecer enemigos extra\nReflejos instantáneos de enemigo\nLos enemigos no se estremecen\nLos enemigos no pelean entre si\c-\n\n(Pulsa Y para que te zurren la badana)"; +SWWM_SKDRAGONCONFIRM = "\cmEsta dificultad\nfue hecha para él.\c-\n\n(Pulsa Y para una muerte certera)"; // mod menu SWWM_MTITLE = "Opciones de DEMOLITIONIST"; SWWM_PTITLE = "Opciones de Jugador"; -SWWM_VOICETYPE = "Pack de Voz de Demolicionista"; +SWWM_VOICETYPE = "Pack de Voz"; SWWM_MUTELEVEL = "Nivel de Muteo de Voz"; SWWM_MUTENONE = "Ninguno"; SWWM_MUTECOMBAT = "Comentarios de Combate"; @@ -40,97 +41,51 @@ SWWM_MUTEALL = "Todo"; SWWM_OTITLE = "Opciones Visuales"; SWWM_FLASH = "Intensidad de Destellos en Pantalla"; SWWM_HUDMARGIN = "Margen del HUD"; -SWWM_MAXMSG = "Mensajes Máximos"; -SWWM_MAXMSGBIG = "Mensajes Máximos (extendido)"; -SWWM_MAXPICK = "Mensajes de Ítem Máximos"; -SWWM_CHATLEN = "Duración de Mensajes de Chat"; -SWWM_MSGLEN = "Duración de Mensajes Generales"; -SWWM_PICKLEN = "Duración de Mensajes de Ítem"; SWWM_ITITLE = "Opciones de Ítems"; -SWWM_ARMORUSE = "Usar Armadura Automáticamente"; -SWWM_HEALTHUSE = "Usar Salud Automáticamente"; -SWWM_AMMOUSE = "Usar Fabricadores Automáticamente"; -SWWM_6DOF = "Vuelo con 6DOF"; SWWM_TARGET = "Mostrar Barras de Salud"; +SWWM_T_MONSTERS = "Solo Monstruos"; +SWWM_T_FRIENDS = "Solo Amigos"; SWWM_TARGETTAG = "Mostrar Nombres de Enemigos"; -SWWM_DAMNUMS = "Mostrar Números de Daño/Cura"; +SWWM_DAMNUMS = "Mostrar Números de Daño"; SWWM_SCORENUMS = "Mostrar Números de Puntuación"; -SWWM_SCOREBONUS = "Mostrar Bonificaciones de Puntuación"; SWWM_POIS = "Mostrar Puntos de Interés"; -SWWM_EARBUSTER = "Reducir Estruendo del Wallbuster"; SWWM_SHADERS = "Usar Shaders de Pantalla"; SWWM_REVIVE = "Sistema de Reinicio de Emergencia"; SWWM_REVIVECOOLDOWN = "Tiempo de recarga de Reinicio"; SWWM_UNLIMITED = "Ilimitado"; SWWM_ONERETRY = "Un Reintento"; SWWM_NONE = "Ninguno"; -SWWM_INTERART = "Arte de Intermisión"; -SWWM_NORENDER = "Sí (Sólo Fanart)"; -SWWM_NOFANART = "Sí (Sólo Renders)"; -SWWM_BALLUSE = "Las Bolas de Plomo Activan Botones"; -SWWM_BOSSBAR = "Mostrar Barras de Salud de Bosses"; SWWM_BTITLE = "Opciones de Balance"; -SWWM_BOSSENHANCE = "Mejorar Bosses Vanilla"; -SWWM_EXTRAALERT = "Alertas de Ruido Extra"; -SWWM_ACCDAMAGE = "Números de Daño Acumulativos"; -SWWM_MAXTARGETDIST = "Máx. Distancia de Barras de Salud"; -SWWM_MAXTARGETS = "Máx. Barras de Salud en Pantalla"; -SWWM_MAXDAMNUMS = "Máx. Números de Daño/Cura en Pantalla"; -SWWM_MAXSCORENUMS = "Máx. Números de Puntuación en Pantalla"; -SWWM_HUDSCALE = "Escala de HUD"; -SWWM_BARSCALE = "Escala de Barras de Salud"; -SWWM_NUMSCALE = "Escala de Números"; -SWWM_SCRSCALE = "Escala de Puntuaciones"; -SWWM_POISCALE = "Escala de Puntos de Interés"; -SWWM_DETSCALE = "Escala de Sensor de Ítems"; -SWWM_TFITSCALE = "Escalado Ajustado"; -SWWM_LFITSCALE = "Escalado Holgado"; -SWWM_BLOOD = "Habilitar Sangre Personalizada"; SWWM_FUZZ = "Habilitar Fondo Animado de Menú"; -SWWM_BUSTERPAUSE = "Pausar en Recarga de Wallbuster"; -SWWM_CBTALL = "Destrucción Ilimitada de Wallbuster"; +SWWM_CBTALL = "Reventamiento sin Restricciones"; SWWM_DOOMFALL = "Forzar Daño por Caída en Monstruos"; -SWWM_CAPMCRANGE = "Limitar Reacción en Cadena de Ynykron"; SWWM_RESETSCORE = "Resetear Puntuación en Pistol Starts"; -SWWM_NOTRACK = "Desactivar Rastreo de Combate"; -SWWM_YNYKRONALERT = "Limitar Alerta de Ynykron"; SWWM_MENUPAUSE = "Pausar en Menú de Demolicionista"; SWWM_FTITLE = "Opciones Divertidas"; SWWM_FUNTAGS = "Renombrar Monstruos"; SWWM_OMNIBUST = "Omni-Reventamiento"; SWWM_SUPERFUEL = "Combustible Ilimitado"; SWWM_PARTYTIME = "Modo Fiesta Tope"; -SWWM_SIMPLEFOG = "Efecto de Teletransporte Simple"; SWWM_BIGTAGS = "Usar Fuente Grande para Nombres"; -SWWM_INTERMUSIC = "Usar Música de Intermisión Original"; SWWM_MAXBLOOD = "Límite de Sangre"; SWWM_MAXGIBS = "Límite de Vísceras"; +SWWM_MAXPOOLS = "Límite de Charcos"; SWWM_MAXCASINGS = "Límite de Casquillos"; SWWM_MAXDEBRIS = "Límite de Escombros"; SWWM_ENEMYDROPS = "Drops de Armas y Munición de Enemigos"; SWWM_DROPS_NONE = "Desactivado"; SWWM_DROPS_AMMO = "Solo Munición"; SWWM_DROPS_WEAPONS = "Munición y Armas"; -SWWM_SHOTGIB = "Los Perdigones pueden Desviscerar"; SWWM_COLLECTANIM = "Animaciones de Coleccionables"; -SWWM_SHADOWS = "Sombras Simples"; SWWM_PRECISECROSSHAIR = "Mira Precisa"; SWWM_MCTITLE = "Opciones de Compatibilidad con Mods"; SWWM_LDSPOIL = "Mostrar Siempre Legendarios"; SWWM_ETITLE = "Opciones de Efectos"; -SWWM_CAMHUD = "HUD Completo en Cámaras"; SWWM_UNCAPALERT = "Rango de Alerta Ilimitado"; -SWWM_COLLECTANIMKEY = "Animaciones de Llaves"; -SWWM_DAMAGETARGET = "Visibilidad de Barras de Salud"; -SWWM_TARGET_ALWAYS = "Siempre Visible"; -SWWM_TARGET_FIRSTHIT = "Tras Primer Golpe"; -SWWM_TARGET_DAMAGED = "Debajo de Salud Completa"; SWWM_STRICTUNTOUCHABLE = "Rigurosidad de Bonus Intocable"; SWWM_UNTOUCHABLE_HEALTH = "Baja de Salud"; SWWM_UNTOUCHABLE_ARMOR = "Baja de Armadura"; SWWM_UNTOUCHABLE_ANYHIT = "Cualquier Golpe"; -SWWM_SILENCEMAP = "Música de Mapa Despejado"; -SWWM_SHADOWDIST = "Distancia de Sombras"; SWWM_SWAPWEAPONS = "Alternado de Armas"; SWWM_FORCESTATS = "Mostrar Siempre Estadísticas de Mapa"; SWWM_STATS_DISABLED = "Desactivado"; @@ -147,17 +102,14 @@ SWWM_TRAILS_BLUE = "Azul"; SWWM_TRAILS_MAGENTA = "Magenta"; SWWM_TRAILS_RANDOM = "Aleatorio"; SWWM_TRAILS_RAINBOW = "Arcoiris"; +SWWM_TRAILS_DOSE = "Gracias, Doc"; +SWWM_TRAILS_XMAS = "Navidad"; SWWM_PS_FULLRESET = "Reseteo Completo"; SWWM_PS_RESETAMMO = "Resetear Munición"; SWWM_PS_RESETITEMS = "Resetear Ítems"; SWWM_PS_RESETHEALTH = "Resetear Salud"; SWWM_PISTOLSTART_MAP = "Cada Nivel"; SWWM_PISTOLSTART_CLUSTER = "Cada Clúster"; -SWWM_NUMCOLOR_SCR = "Color de Números de Puntos"; -SWWM_NUMCOLOR_BONUS = "Color de Bónuses de Puntos"; -SWWM_NUMCOLOR_DMG = "Color de Números de Daño"; -SWWM_NUMCOLOR_HP = "Color de Números de Salud"; -SWWM_NUMCOLOR_AP = "Color de Números de Armadura"; SWWM_DRLASKILL = "Dificultad de DRLA"; SWWM_DRLASKILL_BABY = "Muy Fácil"; SWWM_DRLASKILL_EASY = "Fácil"; @@ -167,9 +119,7 @@ SWWM_DRLASKILL_NIGHTMARE = "Pesadilla"; SWWM_DRLASKILL_TECHNOPHOBIA = "Tecnofobia"; SWWM_DRLASKILL_ARMAGEDDON = "Armagedón"; SWWM_DRLASKILL_ADAPTIVE = "Adaptado"; -SWWM_ITEMSPARKLES = "Partículas de Ítem"; SWWM_SINGLEFIRST = "Arma Singular con Prioridad"; -SWWM_UNIQSTATS = "Omitir Estadísticas Repetidas de Mapa"; SWWM_FILTERACHIEVEMENTS = "Filtro de Logros"; SWWM_FILTER_NONE = "Sin Filtro"; SWWM_FILTER_OBFUSCATE = "Ofuscar"; @@ -184,151 +134,111 @@ SWWM_TIME_HOURS = "horas"; SWWM_TIME_MINUTES = "minutos"; SWWM_TIME_SECONDS = "segundos"; SWWM_ATITLE = "Logros"; -SWWM_SELFLIGHT = "Luz Propia"; SWWM_USETOPICKUP = "Uso Exclusivo para Recoger"; -SWWM_MELEEPICKUP = "Permitir Recoger Ítems con Melé"; SWWM_BUTTSFX = "Azote de Nalgas"; -SWWM_ONDEMANDAMMO = "Colocar Munición por Demanda"; -SWWM_BUMP = "Intensidad de Sacudida de FOV"; +SWWM_BUMP = "Intensidad de Sacudida de Vista"; SWWM_ENGINE = "Motor"; -SWWM_ITEMGLOWS = "Los Ítems Lejanos Brillan"; SWWM_NOMAGDROP = "Tirar Cargadores Usados"; -SWWM_BARRIERUSE = "Usar Revestimiento Automáticamente"; SWWM_NOMAPMSG = "Mensajes Especiales de Mapa"; SWWM_WEAPONTOOLTIPS = "Ayuda de Armas"; SWWM_RESETTOOLTIPS = "Resetear Ayuda de Armas"; SWWM_CRESET = "Restaurar Predeterminado"; SWWM_ARESET = "Borrar Logros"; -SWWM_NOINTERTIPS = "Ocultar Consejos de Intermisión"; -SWWM_DEMOSLAYER = "Modo Demoslayer"; SWWM_BEEPBOOP = "Ruiditos de Activación"; SWWM_VOICEAMP = "Amplificación de Voz"; SWWM_CLEARFX = "Limpiar todos los Efectos"; -SWWM_OLDLOGO = "Marca Antigua"; -SWWM_NODEATHEXIT = "Desactivar Salidas de Muerte"; -SWWM_MMTITLE = "Opciones de Minimapa"; +SWWM_VOICELOG = "Registrar Comentarios de Jugador"; +SWWM_SKIPSKILL = "Saltar Confirmación de Dificultad"; +SWWM_HUDALLAMMO = "Mostrar Toda la Munición"; +SWWM_NOINTROEX = "Saltar Intro de Explosiones"; +SWWM_TAGCOLOR = "Color de Marcas"; +SWWM_COL_0 = "Verde"; +SWWM_COL_1 = "Azul"; +SWWM_COL_2 = "Cian"; +SWWM_COL_3 = "Libélula"; +SWWM_COL_4 = "Dorado"; +SWWM_COL_6 = "Naranja"; +SWWM_COL_7 = "Melocotón"; +SWWM_COL_8 = "Rosa"; +SWWM_COL_9 = "Púrpura"; +SWWM_COL_10 = "Rojo"; +SWWM_COL_11 = "Violeta"; +SWWM_COL_12 = "Blanco"; +SWWM_COL_13 = "Amarillo"; +SWWM_COL_14 = "Negro"; +SWWM_COL_15 = "Óxido"; +SWWM_UTITLE = "Opciones de Interfaz"; +SWWM_BONKHAMMER = "Martillo Loco"; +SWWM_FRIENDLYFIRE = "Fuego Amigo"; +SWWM_FF_UNRESTRICTED = "Sin Restricción"; +SWWM_FF_INCOMING = "Bloquear Entrante"; +SWWM_FF_ALL = "Bloquear Todo"; +SWWM_DAMNUMS_COLOR = "Colorear Números de Daño"; +SWWM_SHOWMAPTITLE = "Título de Mapa Animado"; +SWWM_LOBDOUBLED = "LOB Doble Muerte"; +SWWM_BARDIST = "Distancia de Barras de Salud"; +SWWM_USEWEAPONBAR = "Selección Alternativa de Armas"; +SWWM_PERCENTSTATS = "Estadísticas Percentuales"; +SWWM_TARGETVAL = "Mostrar Valores de Salud"; +SWWM_HUDSCALE = "Escala de HUD"; +SWWM_HUDSCALE0 = "Escala Secundaria de HUD"; +SWWM_HUDSCALE1 = "Escala Terciaria de HUD"; +SWWM_HUDSCALE2 = "Escala Cuaternaria de HUD"; +SWWM_HS_AUTOL = "Auto. Holgado"; +SWWM_HS_AUTOT = "Auto. Ceñido"; +SWWM_ALTCLEAR = "Efecto Alternativo de 100%"; +SWWM_ANALOGMOVE = "Movimiento Analógico"; +SWWM_HOLDRELOAD = "Mantener Para Recarga"; SWWM_MM_ENABLE = "Mostrar Minimapa"; -SWWM_MM_ROTATE = "Rotar Minimapa"; -SWWM_MM_GRID = "Mostrar Cuadrícula"; -SWWM_MM_PORTALOVERLAY = "Superposición de Portales"; -SWWM_MM_MISSILES = "Mostrar Proyectiles"; -SWWM_MM_COLORSET = "Set de Colores de Minimapa"; -SWWM_OWNCOLORS = "Colores Propios"; -SWWM_GZDOOMCOLORS = "Personalizado de GZDoom"; -SWWM_DOOMCOLORS = "Doom Vanilla"; -SWWM_STRIFECOLORS = "Strife Vanilla"; -SWWM_RAVENCOLORS = "Raven Vanilla"; -SWWM_MM_RESET = "Restaurar Predeterminado"; -SWWM_MM_BACKCOLOR = "Fondo"; -SWWM_MM_YOURCOLOR = "Tú"; -SWWM_MM_WALLCOLOR = "Paredes de 1 lado"; -SWWM_MM_FDWALLCOLOR = "Paredes de 2 lados con pisos distintos"; -SWWM_MM_CDWALLCOLOR = "Paredes de 2 lados con techos distintos"; -SWWM_MM_EFWALLCOLOR = "Paredes de 2 lados con suelos 3D"; -SWWM_MM_GRIDCOLOR = "Cuadrícula del mapa"; -SWWM_MM_XHAIRCOLOR = "Punto central"; -SWWM_MM_NOTSEENCOLOR = "Paredes sin ver"; -SWWM_MM_LOCKEDCOLOR = "Puerdas bloqueadas"; -SWWM_MM_INTRALEVELCOLOR = "Telepuerto al mismo mapa"; -SWWM_MM_INTERLEVELCOLOR = "Telepuerto a un mapa diferente"; -SWWM_MM_SECRETSECTORCOLOR = "Sector secreto"; -SWWM_MM_UNEXPLOREDSECRETCOLOR = "Sector secreto inexplorado"; -SWWM_MM_SPECIALWALLCOLOR = "Lineas especiales de activación"; -SWWM_MM_PORTALCOLOR = "Sobreposición de portal"; -SWWM_MM_TSWALLCOLOR = "Paredes de 2 lados invisibles"; -SWWM_MM_SECRETWALLCOLOR = "Paredes secretas"; -SWWM_MM_THINGCOLOR = "Actores"; -SWWM_MM_THINGCOLOR_MONSTER = "Monstruos"; -SWWM_MM_THINGCOLOR_NCMONSTER = "Monstruos no contados"; -SWWM_MM_THINGCOLOR_FRIEND = "Amigos"; -SWWM_MM_THINGCOLOR_ITEM = "Objetos"; -SWWM_MM_THINGCOLOR_CITEM = "Objetos contados"; -SWWM_MM_THINGCOLOR_VIPITEM = "Objetos importantes"; -SWWM_MM_THINGCOLOR_SHOOTABLE = "Actores vulnerables"; -SWWM_MM_THINGCOLOR_MISSILE = "Proyectiles"; +SWWM_MM_MISSILES = "Proyectiles en Minimapa"; +SWWM_MM_USECANVAS = "Minimapa a Escala Fija"; +SWWM_MM_STEPTRACE = "Trazo de Pasos en Minimapa"; +SWWM_MM_MAXSTEPS = "Máx. de Pasos en Minimapa"; +SWWM_MM_MINSTEP = "Tam. de Pasos en Minimapa"; SWWM_AC_UNLOCKED = "Desbloqueados: "; SWWM_AC_INCOMPLETE = "Incompletos: "; SWWM_AC_UNDISCOVERED = "Sin descubrir: "; SWWM_AC_COMPLETE1 = "¡Has desbloqueado todos los logros!"; SWWM_AC_COMPLETE2 = "¡Eres un%s verdader@[ao_esp] Demolicionista!"; // has to be hotfixed in zscript for now -TOOLTIP_SWWM_VOICETYPE = "Selecciona el pack de voz para el jugador."; +SWWM_DBGTITLE = "Opciones de Depurado"; +SWWM_DBGWARN = "ADVERTENCIA: Estas opciones y comandos son solo para usuarios experimentados."; +SWWM_DBG_DEBUGBLAST = "Visualizar Radios de Explosión"; +SWWM_DBG_DEBUGVIEW = "Visualizar Información de Actor"; +SWWM_DBG_FIXITEMCAPS = "Recalcular Capacidades de Ítem"; +TOOLTIP_SWWM_VOICETYPE = "Selecciona la voz para el jugador (Si hay packs de voces adicionales instalados)."; TOOLTIP_SWWM_MUTEVOICE = "Controla lo que se mutea, si prefieres tener un protagonista más silencioso."; TOOLTIP_SWWM_FLASHSTRENGTH = "Los destellos en pantalla suelen ocurrir al disparar algunas armas, puedes reducirlo si este tipo de efectos te causan malestar."; TOOLTIP_SWWM_HUDMARGIN = "Margen alrededor de los elementos del HUD, en píxeles (escalados)."; -TOOLTIP_SWWM_MAXSHOWN = "Número máximo de mensajes (no líneas individuales) mostrados en la parte superior izquierda del HUD."; -TOOLTIP_SWWM_MAXSHOWNBIG = "Igual que la opción anterior, pero cuando la barra de chat está activa."; -TOOLTIP_SWWM_MAXPICKUP = "Numero máximo de mensajes de recogida de ítems visibles en todo momento."; -TOOLTIP_SWWM_CHATDURATION = "Duración de los mensajes de chat en segundos."; -TOOLTIP_SWWM_MSGDURATION = "Duración de los obituarios y otros mensajes en segundos."; -TOOLTIP_SWWM_PICKDURATION = "Duración de los mensajes de recogida de ítems en segundos."; TOOLTIP_SWWM_SHAREKEYS = "Cuando esto está activado, recoger una llave envía una copia a todos los otros jugadores."; -TOOLTIP_SWWM_AUTOUSEARMOR = "Cuando esto está activado, las copias extra de armadura se usarán automáticamente cuando sea necesario (las armaduras nuevas siempre se equipan automáticamente)."; -TOOLTIP_SWWM_AUTOUSEHEALTH = "Cuando esto está activado, los ítems de salud se usan automáticamente si pueden curar (incluyendo copias extra). Esto excluye los Refrescadores ya que cuentan como powerups, y siempre se activan automáticamente al recibir daño fatal."; -TOOLTIP_SWWM_AUTOUSEAMMO = "Cuando esto está activado, los fabricadores de munición se usan automáticamente al recoger. Esto excluye los fabricadores de Tier 4 ya que cuentan como powerups."; -TOOLTIP_SWWM_ENFORCEAUTOUSEARMOR = "Fuerza una opción específica de auto-uso de armadura para todos los jugadores, o respeta la opción de cada uno."; -TOOLTIP_SWWM_ENFORCEAUTOUSEHEALTH = "Fuerza una opción específica de auto-uso de salud para todos los jugadores, o respeta la opción de cada uno."; -TOOLTIP_SWWM_ENFORCEAUTOUSEAMMO = "Fuerza una opción específica de auto-uso de fabricadores para todos los jugadores, o respeta la opción de cada uno."; -TOOLTIP_SWWM_FLY6DOF = "Habilita el movimiento con seis ángulos de libertad al volar. Desactiva la opción si esto te causa incomodidad."; TOOLTIP_SWWM_TARGETER = "Muestra barras de vida de enemigos y jugadores. Desactiva la opción si prefieres usar otro mod para esto, por ejemplo Target Spy."; -TOOLTIP_SWWM_TARGETTAGS = "Muestra nombres encima de las barras de vida."; -TOOLTIP_SWWM_HEALTHNUMS = "Muestra números de daño/curación. Desactiva la opción si prefieres usar otro mod para esto, por ejemplo DamNums."; +TOOLTIP_SWWM_TARGETTAGS = "Muestra nombres encima de las barras de vida. Los nombres de jugadores se muestran siempre, sin importar esta opción."; +TOOLTIP_SWWM_DAMNUMS = "Muestra números de daño. Desactiva la opción si prefieres usar otro mod para esto, por ejemplo DamNums."; TOOLTIP_SWWM_SCORENUMS = "Muestra números de puntuación con cada baja."; -TOOLTIP_SWWM_SCOREBONUS = "Muestra textos de bonificación extra sobre los puntos (ej.: contadores de multikill)."; TOOLTIP_SWWM_POIS = "Muestra puntos de interés (tales como llaves y salidas) cuando tienes Omnivisión."; -TOOLTIP_SWWM_EARBUSTER = "Los sonidos de disparo del Wallbuster pueden a veces ser dolorosamente estridentes. Esta opción limitará la intensidad a un valor más soportable."; TOOLTIP_SWWM_SHADERS = "Usa shaders de postprocesado para cosas como potenciadores y la mira del Silver Bullet. Puedes desactivar esto si prefieres algo más ligero para la vista."; TOOLTIP_SWWM_REVIVE = "Permite al jugador volver a levantarse tras morir pulsando Fuego. Tiene un cooldown configurable."; TOOLTIP_SWWM_REVIVECOOLDOWN = "Tiempo en segundos tras reiniciar, durante el cual si mueres otra vez, no puedes volver a levantarte. Pon a 0 para permitir reinicios ilimitados. Alternativamente, puedes elegir que solo se permita un reinicio por mapa (forzado en dificultades expertas)."; -TOOLTIP_SWWM_INTERART = "Si está activado, muestra fanart y renders oficiales aleatorios durante intermisiones. Hay opciones extra para mostrar sólo una categoría."; -TOOLTIP_SWWM_BALLUSE = "Los proyectiles de Bola de Plomo pueden activar botones utilizables remotamente (excluyendo salidas). Potencialmente roto."; -TOOLTIP_SWWM_BOSSHEALTHBARS = "Muestra una barra de vida para bosses vanilla en la parte inferior de la pantalla. ¡Es justo como Dark Souls™!"; -TOOLTIP_SWWM_UPGRADEBOSSES = "Incrementa la salud de bosses vanilla para hacer que las peleas sean más \"justas\" con este mod, y no tan propensas a ganarse al instante."; -TOOLTIP_SWWM_EXTRAALERT = "Permite a los enemigos oír cosas como proyectiles y balas rebotando, entre otros. Debido a la naturaleza recursiva de la función A_AlertMonsters, esto puede tener un impacto MASIVO en el rendimiento en mapas muy complejos."; -TOOLTIP_SWWM_ACCDAMAGE = "El daño hecho a un objetivo en el mismo tic será agrupado en un único número, lo cual resultará en una pantalla más despejada en la mayoría de casos."; -TOOLTIP_SWWM_MAXTARGETDIST = "Limita la distancia máxima a la que se muestran las barras de salud de enemigos hostiles. Los objetivos no hostiles se muestran siempre a un cuarto de esta distancia."; -TOOLTIP_SWWM_MAXTARGETS = "Limita la cantidad de barras de salud a mostrar en pantalla. Ayuda a mantener la pantalla más despejada."; -TOOLTIP_SWWM_MAXDAMNUMS = "Limita la cantidad de números de daño/curación a mostrar en pantalla. Ayuda a mantener la pantalla más despejada."; -TOOLTIP_SWWM_MAXSCORENUMS = "Limita la cantidad de números de puntuación a mostrar en pantalla. Ayuda a mantener la pantalla más despejada."; -TOOLTIP_SWWM_HUDSCALE = "Factor de escalado del HUD. El escalado \"Ajustado\" intenta que quepa todo el HUD en el ancho de la pantalla, mientras que el \"Holgado\" está recomendado para pantallas ultrawide."; -TOOLTIP_SWWM_BARSCALEREL = "Factor de escalado relativo para las barras de salud. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_NUMSCALEREL = "Factor de escalado relativo para los números de daño/salud. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_SCRSCALEREL = "Factor de escalado relativo para los números de puntuación. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_POISCALEREL = "Factor de escalado relativo para los puntos de interés. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_DETSCALEREL = "Factor de escalado relativo para los ítems detectados. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_BLOOD = "Activa efectos de sangre y vísceras personalizados, adaptados de Soundless Mound. Sinceramente, recomendaría usar Nashgore, es mejor."; TOOLTIP_SWWM_FUZZ = "Desactivar esto es recomendado si estás grabando o haciendo streaming, ya que este effecto puede dañar la calidad del vídeo."; -TOOLTIP_SWWM_CBTPAUSE = "El juego será pausado mientras el menú de recarga de Wallbuster está abierto (sólo en modo de un jugador)."; -TOOLTIP_SWWM_CBTALL = "Permite a la Wallbuster romper casi cualquier cosa, no solo puertas y plataformas. Ten en cuenta que esto puede romper algunos mapas, razón de que haya esta opción."; +TOOLTIP_SWWM_CBTALL = "Permite a la Wallbuster y otras armas capaces de reventar geometría del mapa destruír casi cualquier cosa, no solo puertas y plataformas. Ten en cuenta que esto puede romper algunos mapas, razón de que haya esta opción."; TOOLTIP_SWWM_DOOMFALL = "Hace que los monstruos reciban daño por caída fuera de Hexen. Requiere reinicio de mapa si fue desactivado anteriormente."; -TOOLTIP_SWWM_CAPMCRANGE = "Por defecto las reacciones en cadena del Ynykron se propagarán hasta que no se puedan alcanzar más objetivos. Esta opción limita su extensión, haciéndolo al menos un poco más \"balanceado\"."; TOOLTIP_SWWM_RESETSCORE = "Cuando un cambio de mapa o script resetea tu inventario, tu puntuación también es reseteada a cero."; -TOOLTIP_SWWM_NOTRACK = "Desactiva completamente el rastreo de combate (responsable de las barras de salud). Esto es principalmente útil en mapas con un número extremo de monstruos, donde los rastreos tienen un impacto inmenso en el rendimiento. Requiere reinicio de mapa."; -TOOLTIP_SWWM_YNYKRONALERT = "Por defecto el Ynykron alerta a todos los monstruos en el mapa. Esto puede causar problemas a veces (o destruir tus frames con números enormes de monstruos)."; -TOOLTIP_SWWM_MENUPAUSE = "En modo de un jugador, el Menú de Demolicionista por defecto pausa todo. Puedes desactivar esto si quieres una experiencia más Souls-like (o si quieres leer un poco mientras esperas activamente algún ascensor leeeeeeento o algún otro evento temporizado)."; +TOOLTIP_SWWM_MENUPAUSE = "Los menús del mod pausan el juego por defecto. Puedes desactivar esto si te apetece un desafío extra."; TOOLTIP_SWWM_FUNTAGS = "Reemplaza los nombres de monstruos vanilla por alternativas graciosas."; TOOLTIP_SWWM_OMNIBUST = "Permite que cualquier arma puede potencialmente reventar paredes. Esto está obviamente rotísimo."; TOOLTIP_SWWM_SUPERFUEL = "Tu combustible no se agota nunca."; TOOLTIP_SWWM_PARTYTIME = "Cuando algo muere, expulsa una nube de confetti."; -TOOLTIP_SWWM_SIMPLEFOG = "Reemplaza los efectos de teletransporte basados en partículas con simples sprites. Útil si causan problemas de rendimiento."; TOOLTIP_SWWM_BIGTAGS = "Por defecto los nombres de las barras de vida usan una fuente pequeña. Activando esta opción, se cambiará por una mayor."; -TOOLTIP_SWWM_INTERMUSIC = "Al activar, las pantallas de intermisión usan la música original del IWAD o pack de mapas usado."; TOOLTIP_SWWM_MAXBLOOD = "Limita la cantidad máxima de efectos de sangre. Sobrepasar este límite causará que el exceso se desvanezca."; TOOLTIP_SWWM_MAXGIBS = "Limita la cantidad máxima de vísceras. Sobrepasar este límite causará que el exceso se desvanezca."; +TOOLTIP_SWWM_MAXPOOLS = "Limita la cantidad máxima de charcos de sangre. Sobrepasar este límite causará que el exceso se desvanezca."; TOOLTIP_SWWM_MAXCASINGS = "Limita la cantidad máxima de casquillos y cargadores usados. Sobrepasar este límite causará que el exceso se desvanezca."; TOOLTIP_SWWM_MAXDEBRIS = "Limita la cantidad máxima de escombros por explosiones y otros. Sobrepasar este límite causará que el exceso se desvanezca."; TOOLTIP_SWWM_ENEMYDROPS = "Por defecto, los enemigos solo dropean munición para una mejor progresión. En mapas con enemigos excesivos, se recomienda desactivar los drops por completo."; -TOOLTIP_SWWM_SHOTGIB = "Hay gente a la que no le gusta esto por alguna razón, así que aquí está como opción."; TOOLTIP_SWWM_COLLECTANIM = "Muestra animaciones especiales en primera persona al recoger coleccionables."; -TOOLTIP_SWWM_SHADOWS = "Activa sombras redondas para varias entidades, combina con sombras de sprites para un mejor efecto. Requiere un reinicio de mapa."; -TOOLTIP_SWWM_PRECISECROSSHAIR = "Proyecta la mira en el punto que el arma alcanzará, en vez de quedarse en el centro de la pantalla."; +TOOLTIP_SWWM_PRECISECROSSHAIR = "Proyecta la mira en el punto que el arma alcanzará, en vez de quedarse en el centro de la pantalla. (\"Siempre\" dibuja la mira aunque esté normalmente desactivada, útil si alternas regularmente con jugar mods en los que se recomienda desactivarla)"; TOOLTIP_SWWM_LDSPOIL = "[LegenDoom] Muestra siempre el sufijo de \"Legendario\" en las etiquetas de barra de vida, en lugar de despues de que el enemigo se haya transformado. Desactiva si prefieres no estropear la sorpresa."; -TOOLTIP_SWWM_CAMHUD = "Por defecto, cuando el jugador está mirando por una cámara, la mayor parte de elementos del HUD excluyendo mensajes son ocultados. Activa esto para mantener el HUD completo."; TOOLTIP_SWWM_UNCAPALERT = "Si se activa, todas las armas y proyectiles tendrán un rango de ruido ilimitado. Puede arreglar mapas que usan trampas de teletransporte estilo vanilla."; -TOOLTIP_SWWM_COLLECTANIMKEY = "Muestra animaciones especiales en primera persona al recoger llaves."; -TOOLTIP_SWWM_DAMAGETARGET = "Selecciona cuando deben mostrarse las barras de vida."; TOOLTIP_SWWM_STRICTUNTOUCHABLE = "Por defecto, el bonus \"Intocable\" permanece activo hasta que recibas daño directo. Si sientes que esto no es suficientemente estricto, también puedes hacer que termine si la armadura absorbe el daño, o, para mayor severidad, con CUALQUIER golpe, incluso siendo invulnerable."; -TOOLTIP_SWWM_SILENCEMAP = "Elige si quieres que la música se detenga cuando completas un mapa al 100%."; -TOOLTIP_SWWM_SHADOWDIST = "Distancia máxima a la que mostrar sombras. Puede ayudar al rendimiento."; TOOLTIP_SWWM_SWAPWEAPONS = "Permite solo un arma por puesto (excluyendo Deep Impact). Desactiva si prefieres tirar el balance por la ventana."; TOOLTIP_SWWM_FORCESTATS = "Muestra estadísticas de mapa en el HUD incluso cuando el automapa no está abierto."; TOOLTIP_SWWM_FUNTRAILS = "Recolorea los rastros dejados por proyectiles de armas de ranura 5."; @@ -336,118 +246,82 @@ TOOLTIP_SWWM_PS_FULLRESET = "Vacía todo tu inventario, excluyendo coleccionable TOOLTIP_SWWM_PS_RESETAMMO = "Vacía toda la munición que llevas, excluyendo la que ya esté cargada en tus armas."; TOOLTIP_SWWM_PS_RESETITEMS = "Vacía todos los ítems que llevas que no sean armas o munición. Excluye la armadura equipada."; TOOLTIP_SWWM_PS_RESETHEALTH = "Resetea tu salud de vuelta al 100%, y quita toda la armadura equipada."; -TOOLTIP_SWWM_NUMCOLOR_SCR = "Selecciona el color para los numeros de puntos."; -TOOLTIP_SWWM_NUMCOLOR_BONUS = "Selecciona el color para las bonificaciones que pueden acompañar a los números de puntos."; -TOOLTIP_SWWM_NUMCOLOR_DMG = "Selecciona el color para los números de daño."; -TOOLTIP_SWWM_NUMCOLOR_HP = "Selecciona el color para los números de salud."; -TOOLTIP_SWWM_NUMCOLOR_AP = "Selecciona el color para los números de armadura."; TOOLTIP_SWWM_DRLASKILL = "[DRLA Monsters] Elige el nivel de dificultad para spawns de enemigos."; -TOOLTIP_SWWM_ITEMSPARKLES = "Los ítems cercanos tendrán partículas alrededor, para mejor visibilidad."; TOOLTIP_SWWM_SINGLEFIRST = "Para armas que tienen variantes duales, activando esto selecionará siempre primero el arma singular."; -TOOLTIP_SWWM_UNIQSTATS = "Elimina entradas duplicadas de mapa en la pestaña de estadísticas de misión, útil para despejar la lista al moverse por hubs."; TOOLTIP_SWWM_FILTERACHIEVEMENTS = "Filtra logros al 0% en el Menú de Demolicionista, si prefieres no estropear la sorpresa. La opción de 'Ofuscar' es la recomendada, ya que al menos dejará pistas de cosas que quedan por descubrir."; TOOLTIP_SWWM_PLAYTIME = "Tu tiempo de juego total con este mod cargado."; -TOOLTIP_SWWM_SELFLIGHT = "Emite luz azul desde la cara del jugador. Desactiva si causa problemas de rendimiento."; -TOOLTIP_SWWM_USETOPICKUP = "Evita recoger ítems del mod al tocarlos, en su lugar requiriendo exclusivamente una acción de uso."; -TOOLTIP_SWWM_MELEEPICKUP = "Permite recoger ítems por medio de ataques a melé. Ten en cuenta que algunas armas tienen un rango de melé extendido, permitiéndote alcanzar cosas desde una mayor distancia."; +TOOLTIP_SWWM_USETOPICKUP = "Evita recoger ítems del mod al tocarlos, en su lugar requiriendo exclusivamente una acción de uso. Ten en cuenta que esto deshabilita el \"imán de ítems dropeados\" al mantener la tecla de Usar."; TOOLTIP_SWWM_BUTTSFX = "Las nalgas de la Demolicionista emitiran un azote MUY SONORO al ejecutar exitosamente un golpe de culo."; -TOOLTIP_SWWM_ONDEMANDAMMO = "Solo coloca en el mapa munición para armas que estén actualmente disponibles (tanto en el inventario del jugador como en el mapa). Puede causar tiempos de carga largos en mapas grandes."; -TOOLTIP_SWWM_BUMPSTRENGTH = "Controla lo intensa que es la sacudida del FOV por el retroceso de armas y otras acciones."; +TOOLTIP_SWWM_BUMPSTRENGTH = "Controla lo intensa que es la sacudida del FOV y la dirección visual por el retroceso de armas y otras acciones."; TOOLTIP_SWWM_ENGINE = "No toques esto."; -TOOLTIP_SWWM_ITEMGLOWS = "Al activar, los ítems que se encuentren lejos del jugador mostrarán un ligero destello (requiere un reinicio del mapa para tener efecto completamente)."; TOOLTIP_SWWM_NOMAGDROP = "Por defecto, la Demolicionista será un poco consciente con el medio ambiente y no dejará cargadores usados por ahí. Activa si prefieres la basura adicional."; -TOOLTIP_SWWM_AUTOUSEBARRIER = "Cuando esto está activado, el revestimiento elemental será usado automáticamente si es necesario al estar en suelos dañinos."; -TOOLTIP_SWWM_ENFORCEAUTOUSEBARRIER = "Fuerza una opción específica de auto-uso de revestimiento para todos los jugadores, o respeta la opción de cada uno."; TOOLTIP_SWWM_NOMAPMSG = "Activa mensajes especiales animados de personajes en ciertos mapas (usualmente vanilla)."; TOOLTIP_SWWM_WEAPONTOOLTIPS = "Muestra un resumen de controles cuando se selecciona un arma por primera vez."; TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resetea la ayuda de armas para que puedas volver a verla de nuevo."; TOOLTIP_EVENT_SWWMRESETCVARS = "Resetea todas las opciones del mod a sus valores originales."; TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Borra todo tu progreso de logros."; -TOOLTIP_SWWM_NOINTERTIPS = "Oculta los consejos de intermisión, por si no quieres verlos."; -TOOLTIP_SWWM_DEMOSLAYER = "Los enemigos que mates soltarán orbes de salud y armadura."; TOOLTIP_SWWM_BEEPBOOP = "La Demolicionista hará ruiditos adorables cuando pulse cualquier línea utilizable. Esto puede que resulte cansino, así que es opcional."; TOOLTIP_SWWM_VOICEAMP = "A su volumen normal, las voces de la Demolicionista pueden ser ahogadas por el audio del juego. Con esto se le dá un nivel de amplificación extra para que sean más estridentes que otros sonidos."; TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Desvanece cualquier sangre, vísceras, escombros y casquillos activos."; -TOOLTIP_SWWM_OLDLOGO = "Para quienes echan de menos los viejos tiempos de SWWM GZ, podeis restaurar la antigua pantalla de inicio y menú principal con esto."; -TOOLTIP_SWWM_NODEATHEXIT = "Esta opción invalida completamente los efectos de las salidas de muerte, si no te gusta perder todas tus cosas."; -TOOLTIP_SWWMMINIMAPMENU = "Configura el minimapa."; +TOOLTIP_SWWM_VOICELOG = "Los comentarios de jugador subtitulados aparecerán en la consola."; +TOOLTIP_SWWM_SKIPSKILL = "Salta la confirmación de selección de dificultad, si te has cansado de verla todo el tiempo."; +TOOLTIP_SWWM_HUDALLAMMO = "Muestra todos los tipos de munición en el HUD, en lugar de solo los de las armas obtenidas."; +TOOLTIP_SWWM_NOINTROEX = "Salta la secuencia de explosiones sobre la imagen de título original."; +TOOLTIP_SWWM_TAGCOLOR = "Cambia el color de las marcas brillantes en varias partes del cuerpo del jugador."; +TOOLTIP_SWWM_BONKHAMMER = "El Martillo de Combate hará ruídos graciosos al golpear enemigos."; +TOOLTIP_SWWM_FRIENDLYFIRE = "Controla el que los aliados puedan causar daño o ser dañados por el jugador."; +TOOLTIP_SWWM_DAMNUMS_COLOR = "Los números de daño cambiarán color en base al tipo de daño. De lo contrario, serán siempre rojos."; +TOOLTIP_SWWM_SHOWMAPTITLE = "Muestra una animación de título al entrar en un mapa. ¡Es igualito que Dark Souls!"; +TOOLTIP_SWWM_LOBDOUBLED = "[Legion of Bones] Habilita \"Doble Muerte\", lo cual hace que los enemigos aparezcan primero como sus variantes vanilla para luego volverse no-muertos al derrotarlos."; +TOOLTIP_SWWM_BARDIST = "Distancia en unidades de mapa a la cual la visibilidad de las barras de salud irá desvaneciendo. No afecta a las barras de salud de otros jugadores."; +TOOLTIP_SWWM_USEWEAPONBAR = "Habilita un método alternativo para hacer scroll por las armas similar a la barra de inventario. Usa el Fuego Primario para aceptar, y el Fuego Secundario para cancelar."; +TOOLTIP_SWWM_PERCENTSTATS = "Muestra las estadísticas de bajas/ítems/secretos en el HUD como porcentajes, en lugar de contadores."; +TOOLTIP_SWWM_TARGETVALS = "Las barras de salud mostrarán los valores de salud actual y máximo del objetivo."; +TOOLTIP_SWWM_HUDSCALE = "Si es mayor que cero, especifica manualmente la escala del HUD. Ten en cuenta que los elementos del HUD pueden solaparse si es muy alta."; +TOOLTIP_SWWM_HUDSCALE0 = "Si es mayor que cero, especifica manualmente la escala de los elementos auxiliares de HUD (texto centrado, ítems recogidos, etc.) y Números de Daño. Normalmente, es igual a la escala primaria del HUD."; +TOOLTIP_SWWM_HUDSCALE1 = "Si es mayor que cero, especifica manualmente la escala de las Barras de Salud, Números de Puntuación y Sensor de Ítems. Normalmente, es igual a dos menos que la escala primaria del HUD."; +TOOLTIP_SWWM_HUDSCALE2 = "Si es mayor que cero, especifica manualmente la escala de los Puntos de Interés. Normalmente, es igual a tres menos que la escala primaria del HUD."; +TOOLTIP_SWWM_ALTCLEAR = "Usa un efecto alternativo de menor intensidad visual al completar un nivel al 100%."; +TOOLTIP_SWWM_ANALOGMOVE = "Para usuarios de mando, esto es esencial. Para usuarios de teclado y ratón, esto debería estar desactivado."; +TOOLTIP_SWWM_HOLDRELOAD = "Al activar, debes mantener el boton de recarga para cargar múltiples cartuchos en la Wallbuster, Quadravol o el Rifle Sparkster. Algunas personas lo prefieren así."; TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros."; -TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación."; -TOOLTIP_SWWM_MM_ROTATE = "Gira la vista del minimapa."; -TOOLTIP_SWWM_MM_GRID = "Muestra una cuadrícula de 128x128 en el minimapa."; -TOOLTIP_SWWM_MM_PORTALOVERLAY = "Sobrepone regiones que pertenecen a portales estáticos, junto con los objetos que contengan."; +TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa en la esquina superior derecha de la pantalla."; TOOLTIP_SWWM_MM_MISSILES = "Muestra proyectiles en el minimapa. Puede ser desactivado si causa problemas de visibilidad."; -TOOLTIP_SWWM_MM_COLORSET = "Selecciona que paleta usar para el minimapa."; -TOOLTIP_EVENT_SWWMRESETMMCOLORS = "Resetea estos colores a sus valores originales."; -TOOLTIP_SWWM_MM_BACKCOLOR = "Color del área de dibujo del mapa."; -TOOLTIP_SWWM_MM_YOURCOLOR = "Color de la flecha central."; -TOOLTIP_SWWM_MM_WALLCOLOR = "Color de todas las líneas de una cara que no tienen nada de especial."; -TOOLTIP_SWWM_MM_FDWALLCOLOR = "Color de las líneas donde cambia la altura del suelo."; -TOOLTIP_SWWM_MM_CDWALLCOLOR = "Color de las líneas donde cambia la altura del techo."; -TOOLTIP_SWWM_MM_EFWALLCOLOR = "Color de las líneas donde hay un borde de suelo 3D."; -TOOLTIP_SWWM_MM_GRIDCOLOR = "Color de la cuadrícula de blockmap."; -TOOLTIP_SWWM_MM_XHAIRCOLOR = "Color del punto central del mapa."; -TOOLTIP_SWWM_MM_NOTSEENCOLOR = "Color de las paredes reveladas por Omnivisión, pero que no han sido vistas aún."; -TOOLTIP_SWWM_MM_LOCKEDCOLOR = "Color para puertas bloqueadas (a menos que tengan uno definido)."; -TOOLTIP_SWWM_MM_INTRALEVELCOLOR = "Color para teletransportes dentro del mapa."; -TOOLTIP_SWWM_MM_INTERLEVELCOLOR = "Color para teletransportes a otro mapa, o salidas."; -TOOLTIP_SWWM_MM_SECRETSECTORCOLOR = "Color de sectores secretos revelados."; -TOOLTIP_SWWM_MM_UNEXPLOREDSECRETCOLOR = "Color de sectores secretos que aun no han sido explorados."; -TOOLTIP_SWWM_MM_SPECIALWALLCOLOR = "Color de líneas especiales que el jugador puede activar."; -TOOLTIP_SWWM_MM_PORTALCOLOR = "Color que tiñe líneas de mapa que forman parte de un portal estático, también usado para objetos dentro del mismo."; -TOOLTIP_SWWM_MM_TSWALLCOLOR = "Color de líneas sin diferencia de altura, ocultas a menos que se usen trucos."; -TOOLTIP_SWWM_MM_SECRETWALLCOLOR = "Color de líneas marcadas como secretas, solo mostradas usando trucos."; -TOOLTIP_SWWM_MM_THINGCOLOR = "Color para cosas generales en el mapa."; -TOOLTIP_SWWM_MM_THINGCOLOR_MONSTER = "Color para hostiles."; -TOOLTIP_SWWM_MM_THINGCOLOR_NCMONSTER = "Color para hostiles que no cuentan para el tanteo del mapa."; -TOOLTIP_SWWM_MM_THINGCOLOR_FRIEND = "Color para aliados."; -TOOLTIP_SWWM_MM_THINGCOLOR_ITEM = "Color para ítems."; -TOOLTIP_SWWM_MM_THINGCOLOR_CITEM = "Color para ítems que cuentan para el tanteo del mapa."; -TOOLTIP_SWWM_MM_THINGCOLOR_VIPITEM = "Color para ítems muy importantes."; -TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color para cosas que pueden ser dañadas."; -TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color para proyectiles."; +TOOLTIP_SWWM_MM_USECANVAS = "En vez de dibujarse directamente a la pantalla, el mapa se dibujará en una texture, mantentiendo la misma densidad de píxel que el resto del HUD. Debido a peculiaridades del motor, esto causa que el mapa tenga un frame de retardo."; +TOOLTIP_SWWM_MM_STEPTRACE = "Traza el camino del jugador en el minimapa. Nota: Los datos anteriores serán borrados al comenzar un nuevo trazado."; +TOOLTIP_SWWM_MM_MAXSTEPS = "Pasos máximos a almacenar en memoria."; +TOOLTIP_SWWM_MM_MINSTEP = "Distancia mínima en unidades de mapa que cuente como un paso individual."; +TOOLTIP_SWWMDEBUGMENU = "No toques esto a menos que sepas lo que estás haciendo."; +TOOLTIP_SWWM_DEBUGBLAST = "Muestra el radio de funciones DoExplosion. Las explosiones con daño son verdes, con amarillo para su punto caliente. Las explosiones sin daño son azules, con magenta para su punto caliente."; +TOOLTIP_SWWM_DEBUGVIEW = "Muestra la colisión, orientación y velocidad de actores, junto con lineas de relación hacia sus punteros de objetivo/trazador/maestro (dorado/naranja/púrpura respectivamente)."; +TOOLTIP_NETEVENT_SWWMFIXITEMCAPS = "Recomputa las capacidades de los ítems en el inventario. Solo necesario al cargar una partida vieja antes de que se cambiaran los valores por defecto."; // credits SWWM_MCREDS = "Créditos de DEMOLITIONIST"; SWWM_CLEAD = "Desarrollo Principal:"; SWWM_CDEV2 = "Autoproclamada Maga de ZScript"; SWWM_CASSETS = "Assets Adicionales:"; -SWWM_ASSBARONS = "Sprites de XDeath para Nobles del Infierno"; -SWWM_ASSOTHERS = "Sprites de XDeath para Demonio, Cacodemonio, Renacido, Archvile"; -SWWM_ASSEXTRA = "Sprites de XDeath para Aracnotrón, Mancubus"; SWWM_ASSKEEN = "Reemplazo Menos Vil de Keen"; SWWM_CMUSIC = "Música Usada:"; SWWM_CVOICE = "Voces:"; -SWWM_CFANART = "Fanart de Intermisión:"; -SWWM_CPATRON = "Mecenas de Patreon:"; +SWWM_CPATRON = "Mecenas de Patreon y Ko-fi:"; SWWM_CTHANK = "Agradecimientos Especiales:"; -SWWM_CMAB2 = "Por ser una grandísima amiga que cree en mí, y por inspirarme a seguir trabajando en lo que me gusta. Me alegro muchísimo de haberte conocido."; -SWWM_CDRAGON2 = "Por ser un buen dragón mascota que se preocupa por mí."; +SWWM_CDRAGON2 = "Por ser un buen dragón mascota que se preocupa por mí. A pesar de todo, nuestro amor permanecerá fuerte."; +SWWM_CVYOLETTE2 = "Por tu cariño y apoyo durante mis peores momentos. No me sobran formas de agradecértelo."; SWWM_CLUCY2 = "Por la fuente Tewi, que he seguido usando todos estos años. Espero que estés donde estés, te encuentres bien."; -SWWM_CGUTA2 = "Por la librería de Gutamatics, y por ayudarme a aprender ZScript."; SWWM_CMIKO2 = "Por la MUY útil librería de ZPolyobject."; SWWM_CKEKS2 = "Por asistencia con el código de manejo de excepciones, y también por ser un friki tan guay de Touhou."; SWWM_CZN2 = "Por el código para alineación con superficies inclinadas, y a Nash además por ser un molón tío cactus listo."; -SWWM_CVAL2 = "Por las huellas personalizadas para Nashgore, y por ser una buena amiga y conejita mona."; -SWWM_CKATHY2 = "Por ser una de mis mejores amigas y por colaborar conmigo en lore y desarrollo de personajes. Deseo que tu mundo también prospere."; SWWM_CBOUNCY2 = "Por tu gran ayuda con el testeo y por dejar que suelte lore durante horas y estar ahí para escuchar. Eres un amigo maravilloso."; +SWWM_CSPY2 = "Por tu profundo amor por el mod y sus personajes y lore. Oh, y por una ayudita con temas de sonido, también. Bendito seas, amigo."; SWWM_CSLEDGE2 = "Por ser grandes colegas, no solo conmigo si no con todos nosotros. Vuestro apoyo y ánimo es algo que valoro muchísimo, y no hay forma de agradecéroslo suficientemente."; -SWWM_CSPY2 = "Por el nivel de entusiasmo mostrado por todo en este mod, y por ser el adorable hermano menor que nunca tuve."; -SWWM_CINSP1 = "Combine Kegan, HyperUltra64, TerminusEst13, Yholl y amigos"; +SWWM_CINSP1 = "Combine Kegan, HyperUltra64, Yholl y amigos"; SWWM_CINSP2 = "Por servir de inspiración y por ser gente muy molona. Benditos seáis todos, seguid siendo fenomenales."; -SWWM_CCOMMUNITY1 = "Todo mi súper colegueo de la comunidad de Doom"; -SWWM_CCOMMUNITY2 = "Por ayudarme a seguir trabajando en esto, y por todo el tiempo que compartimos. Por muchos más años de Doom. ¡Os adoro!"; -SWWM_CDEVS1 = "Randi, Graf, Rachael y el resto del equipo de desarrollo de GZDoom"; -SWWM_CDEVS2 = "Por vuestro trabajo en el source port que me ha devuelto la fe en el modding. No me importa lo que piensen los demás, sois la caña."; +SWWM_CCOMMUNITY1 = "Todo mi súper colegueo"; +SWWM_CCOMMUNITY2 = "Por ayudarme a seguir trabajando en esto, y por todo el tiempo que compartimos. ¡Os adoro!"; SWWM_CYOU1 = "Tú"; SWWM_CYOU2 = "Por jugar a este mod, muchísimas gracias."; SWWM_CLOCAL = "Traducción:"; -SWWM_LOCDE = "Alemán"; SWWM_LOCES = "Castellano"; -SWWM_LOCFR = "Francés"; -SWWM_LOCIT = "Italiano"; -SWWM_LOCJP = "Japonés"; -SWWM_LOCPL = "Polaco"; -SWWM_LOCRU = "Ruso"; // knowledge base SWWM_COMINGSOON = "(próximamente)"; SWWM_MISSTAB = "Misión"; @@ -473,7 +347,7 @@ SWWM_STATPPARRY = "Paradas Perfectas: "; SWWM_STATWPONCH = "Utilizables Aporreados: "; SWWM_STATBUSTS = "Paredes Reventadas: "; SWWM_STATBUTTS = "Golpes de Culo: "; -SWWM_STATPATS = "Caricias Dispensadas:"; +SWWM_STATPATS = "Caricias Dispensadas: "; SWWM_STATKISS = "Besos Enviados: "; SWWM_STATFRIENDS = "Enemigos Aliados: "; SWWM_STATITEMS = "Ítems Totales: "; @@ -491,6 +365,7 @@ SWWM_STATHISCORE = "Puntuación Máxima: "; SWWM_INVTAB = "Inventario"; SWWM_INVFAIL = "No puedes usar esto ahora."; SWWM_INVNDROP = "No puedes tirar esto."; +SWWM_INVNAMMO = "Este arma no tiene munición."; SWWM_NOINV = "(inventario vacío)"; SWWM_KEYTAB = "Llavero"; SWWM_NOKEYS = "(ninguna llave encontrada)"; @@ -498,10 +373,10 @@ SWWM_KBASETAB = "Biblioteca"; SWWM_STORETAB = "Tienda"; SWWM_STOREFULL = "No puedes llevar más de eso."; SWWM_STOREMUNS = "No tienes suficiente dinero."; -SWWM_NOSTORE = "(no queda nada que comprar)"; +SWWM_STORESWAP = "Ya posees un arma en la misma ranura: %s."; +SWWM_NOSTORE = "(tienda no disponible)"; +SWWM_NOSTOREBUY = "(no queda nada que comprar)"; SWWM_NOSTORESELL = "(no tienes ítems que vender)"; -SWWM_CHATTAB = "Mensajes"; -SWWM_NOCHAT = "(historial de mensajes vacío)"; SWWM_SECRETTAB = "Secreto"; SWWM_TODEMO = "\cx\"¡Lucha por la justicia, Demo-chan! ¡Tú puedes!\"\c- \cg♥\c- Ibuki y Saya"; SWWM_CUTIECLUB = "\cx\"¡Jamás pierdas la esperanza, Demo-chan! ¡Estamos todas contigo!\"\c- \cg♥\c- Club Cuqui"; @@ -520,7 +395,7 @@ SWWM_KIRINPOEM = "A tantos mundos me llevan tus ojos,\n" "guerra y muerte, de fuego todo bañado.\n" "Estando ahí, en tierras distantes,\n" -"Contigo voy, no me siento alejado.\n" +"contigo voy, no me siento alejado.\n" "\n" "Por mi amor te doy bendición,\n" "Demolicionista, sé valiente.\n" @@ -539,7 +414,7 @@ SWWM_HELPTXT = "\cxMenú de Demolicionista - Controles Básicos\c-\n" "\cx——————————————————————————————————————————\c-\n" "\n" -"\cf%s:\c- Abrir/Cerrar menú de Demolicionista\n" +"\cfEsc:\c- Cerrar menú de Demolicionista\n" "\cfRePág/AvPág:\c- Cambiar pestaña\n" "\cfF1:\c- Abrir/Cerrar pestaña de ayuda\n" "\n" @@ -592,26 +467,7 @@ SWWM_HELPTXT = "\n" "\cfFlechas:\c- Navegar\n" "\cfEnter/Click Izdo.:\c- Vender\n" -"\cfRetroceso/Click Dcho.:\c- Cambiar a compra\n" -"\n" -"\cxPestaña de Mensajes - Controles\c-\n" -"\cx———————————————————————————————\c-\n" -"\n" -"\cfArriba/Abajo:\c- Scroll"; -// Wallbuster menu -SWWM_BUSTERTITLE = "Wallbuster - Menú de Recarga Fácil"; -SWWM_BUSTERKEYS = -"\cfIzq/Dcha:\c- Seleccionar Munición\n" -"\cfAbajo:\c- Agregar Munición\n" -"\cfArriba:\c- Quitar Munición\n" -"\cfAv Pág:\c- Agregar 5 Munición\n" -"\cfRe Pág:\c- Quitar 5 Munición\n" -"\cfTab:\c- Barajar Munición\n" -"\cfRetroceso:\c- Limpiar Munición\n" -"\cfEnter:\c- Iniciar Recarga\n" -"\cfEnter (si vacío):\c- Recarga Completa\n" -"\cfSuprimir:\c- Vaciado Completo\n" -"\cfEsc:\c- Cancelar recarga\n"; +"\cfRetroceso/Click Dcho.:\c- Cambiar a compra"; // Help menu SWWM_HELP_STORY = "La Historia Hasta Ahora"; SWWM_HELP_STORYDOOM = @@ -623,7 +479,7 @@ SWWM_HELP_STORYDOOM = "\n" "Así que ve, \cfDemolicionista\c-, enséñales a todos lo que eres capaz de hacer."; SWWM_HELP_STORYEVITERNITY = -"Estamos en 2150. Dos años después del éxito de la \cfDemolicionista\c- al derrotar las fuerzas demoníacas invasoras en la \cfTierra\c-, un nuevo peligro ha surgido. Vienen noticias terribles del único contacto fiable que la humanidad tiene en el \cfInfierno\c-, el \cfArchiduque Cytho Valathor\c-:\n" +"Estamos en el 2150. Dos años después del éxito de la \cfDemolicionista\c- al derrotar las fuerzas demoníacas invasoras en la \cfTierra\c-, un nuevo peligro ha surgido. Vienen noticias terribles del único contacto fiable que la humanidad tiene en el \cfInfierno\c-, el \cfArchiduque Cytho Valathor\c-:\n" "\n" "\cf\"Usando tecnología robada de la UAC, los Demonios han tomado contacto con la raza de los Xevetha, y planean formar una alianza, una unión de fuerza infernal y celestial, para traer de nuevo su batalla a la Tierra.\"\c-\n" "\n" @@ -657,9 +513,9 @@ SWWM_HELP_DEMOTXT = "Adelante, \cfDemolicionista\c-, sé el héroe que este mundo necesita."; SWWM_HELP_ARSE1 = "Arsenal de Demolicionista (Parte 1: Armas)"; SWWM_HELP_ARSE1TXT = -"Porque esto no sería lo que es sin un buen armamento, hablemos del tema aquí. Hay toda clase de armas en este mod (once en total), pasando de ligeramente poderosas a obscenamente poderosas. Ciertamente, el arsenal de la \cfDemolicionista\c- es uno de los más destructivos que se puedan encontrar, compuesto de varias armas contribuidas por socios y conocidos de \cfAkari Labs\c-.\n" +"Porque esto no sería lo que es sin un buen armamento, hablemos del tema aquí. Hay toda clase de armas en este mod (veinte en total), pasando de ligeramente poderosas a obscenamente poderosas. Ciertamente, el arsenal de la \cfDemolicionista\c- es uno de los más destructivos que se puedan encontrar, compuesto de varias armas contribuidas por socios y conocidos de \cfAkari Labs\c-.\n" "\n" -"La \cfDemolicionista\c- está bien entrenada en el uso de todas y cada una de estas armas, y serán operadas con gran eficiencia, así que no tienes que preocuparte por largos tiempos de recarga, o molesto retroceso que cause problemas para apuntar.\n" +"La \cfDemolicionista\c- está bien entrenada en el uso de todas y cada una de estas armas, y serán operadas con gran eficiencia, así que no tienes que preocuparte por largos tiempos de recarga, o molesto retroceso que cause problemas para apuntar. A lo que SÍ tienes que prestar atención es a tu equipamiento. Ya que hay tantas armas entre las que elegir, verás que sin contar la ranura de melé, solo puedes llevar un arma de cada, teniendo que intercambiar con lo que ya lleves encima.\n" "\n" "Ten en cuenta que todas las armas tienen al menos dos modos de disparo, en algunos casos puede que tres. ¡Y también un rápido ataque cuerpo a cuerpo! Recuerda siempre tener todas las teclas importantes asignadas, hay mucho que usar aquí."; SWWM_HELP_ARSE2 = "Arsenal de Demolicionista (Parte 2: Ítems)"; @@ -687,13 +543,13 @@ SWWM_HELP_TECH = "Técnicas de Movimiento"; SWWM_HELP_TECHTXT = "A pesar de tu peso descomunal (alrededor de 500 kilos), eres bastante ágil. Los jets en tu espalda permiten ganar altura extra en tus saltos, y al impulsarte, puedes cubrir grandes distancias. Adicionalmente, tus botas permiten redirigir parte de la fuerza de impacto para impulsar consiguientes saltos, una técnica que algunos llaman \"bunny hopping\". Todo esto te será muy útil, como puedes imaginar, pero ten en cuenta que te chocarás fácilmente contra las paredes yendo tan rápido.\n" "\n" -"Aparte de todo eso, la \cfDemolicionista\c- es también bastante habilidosa saltando por las paredes, o incluso escalándolas. Ciertamente, nada puede detenerte (a menos que el autor del mapa haya deshabilitado saltar). Ni siquiera la más inclinada de las cuestas podrá contigo (siempre y cuando no te dejes caer).\n" +"Aparte de todo eso, la \cfDemolicionista\c- es también bastante habilidosa saltando por las paredes, o incluso escalándolas. Ciertamente, nada puede detenerte. Ni siquiera la más inclinada de las cuestas podrá contigo (siempre y cuando no te dejes caer).\n" "\n" "Oh, y no olvides que tu peso es también una buena arma. No solo puedes embestir con facilidad enemigos menores al impulsarte, pero también si aterrizas con una velocidad considerable, puedes crear una onda expansiva que empuje a tus enemigos por los aires y aplaste todo bajo tus pies.\n"; SWWM_HELP_TIPS = "Consejos Adicionales"; SWWM_HELP_TIPSTXT = "Ten en cuenta que puedes activar puertas y palancas a base de puñetazos o embistiendo contra ellas. La opción está ahí, si realmente quieres, y sientes una especial intensidad.\n" "\n" -"Otro tema a saber es que los ítems de este mod tienen colisiones un poco no-estándar, lo cual puede causar problemas al no poder recogerlos a pie. En casos como estos... simplemente usa las manos, obviamente. Puedes pulsar Usar para recoger cualquier cosa que tengas delante, siempre y cuando sea un ítem de este mod.\n" +"Otro tema a saber es que los ítems de este mod no solo se pueden recoger caminando sobre ellos, si no también usando las manos. Es decir, puedes pulsar Usar para recogerlos, siempre y cuando llegues con los brazos. Además, si te encuentras con muchos drops dispersos por el campo de batalla, puedes mantener Usar para atraerlos hacia ti.\n" "\n" "Por último pero no menos importante, ¿sabías que puedes acariciar ciertos enemigos para convertirlos en aliados? No creo que haga falta que te diga cuales. Son rojos, redondos y con forma de amigo. También puedes acariciar perros, si el mapa en el que estas resulta usar perros MBF (aunque esto suele ser poco común)."; diff --git a/language.es_mission b/language.es_mission index 2a70184fc..f2177dcaa 100644 --- a/language.es_mission +++ b/language.es_mission @@ -17,7 +17,7 @@ SWWM_MISSION_DOOM1 = SWWM_MISSION_DOOM2 = "Muy bien, \cfDemo-chan\c-, estás ahora en la \cfBase de Deimos\c-. Como puedes ver, todo está también muy jodido por aquí, aunque desde que \cfEl Tío Ese\c- pasó por última vez, los demonios probablemente hayan repoblado el lugar, como pudiste notar en \cfFobos\c-.\n" "\n" -"Bueno, y lo de la emboscada antes, estuviste fuera de combate un rato, pero por suerte no te metieron mano ni nada (ay dios ay joder). La mala noticia sin embargo viene del PUTO FRIKI de \cfCyrus Enterprises\c-. ¿¿¿Aparentemente ha decidido vaciar todo tu \cfContenedor de Hammerspace\c- porque esto cuenta como \"un nuevo episodio\" o no se que mierdas??? Vuelves a empezar desde cero, supongo. No puedo hacer nada en lo referente a estas decisiones, así que a la mierda.\n" +"Bueno, y lo de la emboscada antes, estuviste fuera de combate un rato, pero por suerte no te han desmontado nada, sigues de una pieza (buf, que alivio). La mala noticia sin embargo viene del PUTO FRIKI de \cfCyrus Enterprises\c-. ¿¿¿Aparentemente ha decidido vaciar todo tu \cfContenedor de Hammerspace\c- porque esto cuenta como \"un nuevo episodio\" o no se que mierdas??? Vuelves a empezar desde cero, supongo. No puedo hacer nada en lo referente a estas decisiones, así que a la mierda.\n" "\n" "Si lo que dijo \cfCytho-sama\c- es correcto, hay una estructura aquí conocida como la \cfTorre de Babel\c- por la cual puedes acceder a la superficie del \cfInfierno\c-. Aunque no sabe los detalles exactos, así que esa parte será cosa tuya.\n" "\n" @@ -58,6 +58,16 @@ SWWM_MISSION_SIGIL = "Pues si es así, entonces ya sabes que hacer, así que ¡ve a por ellos, \cfDemolicionista\c-!\n" "\n" " — Saya"; +SWWM_MISSION_SIGIL2 = +"Deberíamos haber visto venir una emboscada al otro lado, por supuesto.\n" +"\n" +"Esto es la \cfTierra\c-, definitivamente, pero hostia, la influencia demoníaca lo ha jodido todo hasta dejarlo irreconocible. Tenemos que salir de aquí y ya.\n" +"\n" +"\cfCytho-sama\c- dijo que esta sería una buena oportunidad para causar mucho daño, al menos. Los tipos estacionados aquí son de los duros, y asegurar la zona definitivamente será de ayuda para otros que estén luchando.\n" +"\n" +"La verdad es que aun me reconcome todo este lío de que nos desviáramos. Espero que podamos llegar al puerto estelar de la \cfUAC\c- a tiempo, ahí es donde está la verdadera batalla, ya sabes...\n" +"\n" +" — Saya"; SWWM_MISSION_DOOM5 = "Bienvenida a tu primera misión, \cfDemolicionista\c-. Seré franca, la situación es jodida. La cosa no pinta bien, para nada. Esos putos cazurros de la \cfUAC\c- la han liado parda y ahora lo estamos pagando. PUTA... MIERDA... LA UAC... en serio. Si el niñato ese de \cfKelliher\c- no me hubiera bloqueado, es que lo ponía a parir ya, ni te imaginas COMO de cabreada estoy ahora mismo...\n" "\n" @@ -91,7 +101,7 @@ SWWM_MISSION_DOOM5_FROMDOOM1 = "\n" " — Saya"; SWWM_MISSION_DOOM6 = -"A ver, \cfDemo-chan\c-, últimas noticias para tu misión. Esos capullos tienen rehenes. Específicamente, un montón ENORME de gente, estoy leyendo cinco dígitos aquí. Estas personas tuvieron la mala suerte de no poder evacuar a tiempo, quedando atrapadas al principio de todo. Y los refugios están todos bloqueados por algún tipo de mecanismo demoníaco. Esos capullos probablemente los mantienen con vida para \"usarlos\" luego, y no les vamos a dar el gusto de acabar con esas vidas.\n" +"A ver, \cfDemo-chan\c-, últimas noticias para tu misión. Esos capullos tienen rehenes. Específicamente, un montón ENORME de gente, estoy leyendo cinco dígitos aquí. Estas personas tuvieron la mala suerte de no poder evacuar a tiempo, quedando atrapadas al principio de todo. Y los refugios están todos bloqueados por algún tipo de mecanismo demoníaco. Esos capullos probablemente los mantienen con vida para \"usarlos\" luego, y no les vamos a dar el gusto de convertirlos en comida de emergencia.\n" "\n" "Pues, primero, vas a encontrar mucha más resistencia, y algunas caras nuevas también. Todo el trayecto está altamente fortificado, pero eso no será un problema, oh no, no para ti. Vamos a salvar a esa gente, a todos.\n" "\n" @@ -153,13 +163,35 @@ SWWM_MISSION_DOOM11 = "\n" "Como podrás adivinar, tuvimos que devolver todas tus mierdas al final de la otra misión, así que empiezas de cero. Es que como le brillaban los ojos al puto friki ese cuando lo hablamos, y no se callaba con lo de \"episodios extra\" o yo que sé qué. En serio es que estoy tan cansada ya de todo esto...\n" "\n" -"En fin... Eso es todo lo que tengo que decir. Ya sabes que hacer, y deja que te diga que ESTA vez, si que vamos a tener esa bonita cita cuando acabe todo. En serio necesitas disfrutar más de tu cuerpo de maidbot.\n" +"En fin... Eso es todo lo que tengo que decir. Ya sabes que hacer, y deja que te diga que ESTA vez, si que vamos a tener esa bonita cita cuando acabe todo. En serio necesitas disfrutar más de tu cuerpo de maidbot, hay otras maravillas gastronómicas en este mundo aparte de la empanada de atún de mamá.\n" "\n" "Ahora tengo que ir a sobar, que es TARDÍSIMO, así que vas a estar sola (no del todo, voy a dormir en el sofá pegada a tu otro cuerpo).\n" "\n" "¡Dales caña, \cfDemolicionista\c-!\n" "\n" " — Saya"; +SWWM_MISSION_DOOM28 = +"Bienvenida a esta inesperada misión extra, \cfDemo-chan\c-. Ya sé, todo esto viene así de repente, creíamos que la \cfUAC\c- por fin aprendería su lección mientras limpiaban el estropicio que montaron. Ahora no estamos tan seguros.\n" +"\n" +"Te vamos a mandar a \cf\"Nuevo Edén\"\c-, un puesto avanzado sobre la costa norte del Infierno continental. Supuestamente abandonada, ya, pero resulta que cierto grupo de gente, ciertos jodidamente desesperados mal perdedores generales que no voy a nombrar, ha tomado el control gracias a un error bastante crítico: La puñetera UAC colocó una burrada de bombas nucleares ahí.\n" +"\n" +"Ya, estos idiotas realmente han caído a lo más bajo. Tenían toda esa mierda ahí, lista para lanzar, \"por si acaso\" pasaba algo. Bueno, algo ciertamente pasó, porque ahora los \cfGenerales Archidemonios\c-, no es coña, tienen acceso a armas de destrucción masiva, y en cuanto averigüen como usarlas, estamos jodidos.\n" +"\n" +"En fin, ¿cual es el plan? Primero, tienes que meterte por un portal, y así estarás de vuelta en la vieja tierra de fuego y azufre. Desde allá, necesitas abrirte paso a través de las instalaciones de la UAC, sorteando cualquier resistencia en el camino. No hay mucha información realmente sobre planos generales de la zona, así que o bien encontramos esas bombas por casualidad, por proceso de eliminación, o consigues encontrar un punto de acceso para pillar un mapa detallado de la instalación.\n" +"\n" +"¡Es la hora de más acción, \cfDemolicionista\c-!\n" +"\n" +" — Saya"; +SWWM_MISSION_DOOM29 = +"Vale, eso ha sido algo embarazoso. Pues sí, el punto de acceso obviamente fue amañado, caíste de lleno en una trampa, y ADIVINA QUIEN también ha decidido que, justo después de que pasara eso, tenía que deshacerse de todo tu inventario. Sip.\n" +"\n" +"Ahora bien, la info que conseguimos justo en ese momento fue muy útil, con una pega: Los misiles no están en \cfNuevo Edén\c-, si no en otro lugar totalmente distinto. ¿Pero sabes que? Acabo de localizar donde esos bichos raros alados te han llevado, y resulta que te dejaron no muy lejos del silo de misiles.\n" +"\n" +"Por supuesto, en cuanto llegues allí, puedes imaginar que el lugar estará muy, pero que muy bien protegido. Pero ahora mismo, lo que necesitas es salir de esa jaula y... Encontrar más armas, otra vez. *suspiro*\n" +"\n" +"Realmente te deseo mucha suerte, \cfDemo\c-.\n" +"\n" +" — Saya"; SWWM_MISSION_EVITERNITY1 = "Bienvenida a esta misión extra, \cfDemolicionista\c-. Pues resulta que se ha liado parda otra vez, después de que pensáramos que estaba todo arreglado, y adivina QUIÉN está detrás: ¡la puta \cfUAC\c-!\n" "\n" @@ -225,7 +257,7 @@ SWWM_MISSION_EVITERNITY6 = "\n" "Basta de asombrarse, hay demonios que matar, e idiotas megalómanos que apalear. Vamos a traer esta lucha del infierno al cielo ahora, esto es jodidamente heavy.\n" "\n" -"Tu objetivo, por lo que he pillado, es un \cfXevetha\c- de alto rango de por aquí que se hace llamar el \cf\"Archangelus\"\c- (y viste como tal, también, con alas y todo). Es el que empezó todo el negocio este, y el que cree que puede hacer el trabajo de borrar a toda la humanidad que el último tío no pudo hacer. Ya, pues digo yo que no, va a caer pero BIEN en cuanto esté en tu punto de mira.\n" +"Tu objetivo, por lo que he pillado, es un \cfXevetha\c- de alto rango de por aquí que se hace llamar el \cf\"Arcángelus\"\c- (y viste como tal, también, con alas y todo). Es el que empezó todo el negocio este, y el que cree que puede hacer el trabajo de borrar a toda la humanidad que el último tío no pudo hacer. Ya, pues digo yo que no, va a caer pero BIEN en cuanto esté en tu punto de mira.\n" "\n" "¡Dales caña, \cfDemo-chan\c-!\n" "\n" @@ -244,6 +276,84 @@ SWWM_MISSION_EVITERNITY8 = "Dales duro, \cfDemo-chan\c-, y cárgate unas cuantas paredes ya que estás.\n" "\n" " — Saya"; +SWWM_MISSION_EVITERNITYII1 = +"Tu señal de video se nos ha caído, pero espero que aun puedas leer esto.\n" +"\n" +"Algo ha salido muy mal ahí arriba. Algunos de nuestros contactos cuentan que \cf\"la capital se está desmoronando\"\c-, y no me gusta como suena eso para nada. Aun así, tú quédate donde estás hasta que resolvamos este problema técnico.\n" +"\n" +"Volveré a contactarte lo antes posible, \cfDemo-chan\c-.\n" +"\n" +" — Saya"; +SWWM_MISSION_EVITERNITYII2 = +"Sí, desde luego esto tiene mala pinta. La gente de aquí dice que el cielo está \"llorando\", y sí, desde luego llueve bastante. Nunca ha habido un cielo tán lúgubre en décadas, segun me han dicho.\n" +"\n" +"Lo que pasó ahí atrás... Ha desencadenado algo muy malo. Algo que probablemente no pueda deshacerse. Y ese \cf\"Cacodemonio Astral\"\c- que viste antes... Pues eso. Al principio pensaba que esas cosas eran un experimento de la facultad, pero el hecho de que sigan merodeando por ahí, es un mal presagio.\n" +"\n" +"Necesito hacer unas llamadas. Faltan piezas en este puzzle.\n" +"\n" +" — Saya"; +SWWM_MISSION_EVITERNITYII3 = +"\cfDemo\c-, en serio que no tengo ni idea de donde estás. No hay datos sobre el lugar al que te han mandado.\n" +"\n" +"Yo sigo recabando información, al menos, así que no vamos totalmente a ciegas.\n" +"\n" +"Tengo una pista, sin embargo, información interna, de la \cFacultad de Iluminados Nadies\c-, vamos. Pues sí, los que empezaron todo este embrollo. Por fin, llegaremos al fondo de este lío.\n" +"\n" +"Mientras tanto, intenta buscar una salida de ahí. Donde sea que estés, no parece un sitio amigable, saltan lecturas de \cfEnergía Ardiente\c-, y eso significa que hay demonios.\n" +"\n" +"Dales caña, \cfDemo-chan\c-.\n" +"\n" +" — Saya"; +SWWM_MISSION_EVITERNITYII4 = +"Bueno, aquí vienen los detalles.\n" +"\n" +"Costó un poco hacerla hablar, pero ahí está, nuestra \"informante\". Se presentó como \cf\"Nona Nadie\"\c-, un nombre obviamente falso, pero da igual, aparementente fue miembro de alto rango de la \cfFacultad de Iluminados Nadies\c-, y hasta tuvo contacto cercano con el mismo \cfUruk'Anth\c-. Sí, el tío que se hizo pasar por Dios con D mayúscula.\n" +"\n" +"Las cosas que me está contando, madre mía. La Facultad realmente andaba metida en rollos, rollos de horror cósmico, encima. Hizieron un pacto con una especie de ente de otro universo o algo así, y de ahí es de donde estos demonios mutantes rarunos han salido, entre otras cosas. Mejoras mágicas, poderes oscuros, clarividencia, y dios sabe qué más... Juraron lealtad a una especie de deidad lovecraftiana y más mierdas, y ahora que les has pateado el trasero, el pacto se ha roto y está empezando a \"cobrarlo todo\".\n" +"\n" +"Si no llegamos al fondo de esto, aparentemente, podría significar la ruina de no solo el mundo \cfXevetha\c-, si no también de todos los otros lugares que la Facultad ha tocado. Esto, como podrás suponer, incluye la \cfTierra\c-.\n" +"\n" +"Decir que esto son malas noticias es quedarse corto. No sé aun qué es \"Eso\" exactamente, pero definitivamente encontrarás la forma de patear su sobrenatural culo y salvar el mundo, desde luego.\n" +"\n" +" — Saya"; +SWWM_MISSION_EVITERNITYII5 = +"Esto no es la \cfTierra\c-... Parece que has vuelto a \cfUrkai\c-. Bueno, pues menudo desvío, entonces.\n" +"\n" +"Sabes, he estado pensando en lo que hemos visto antes. Es una jodienda que estuvieran colaborando todo este tiempo, la \cfUAC\c- y la facultad. Sí, todo desde que desmantelaron \cfLANIR\c-, deberíamos haberlo visto venir a la legua.\n" +"\n" +"En fin, adelante con la misión, \cfDemo\c-, nos estamos acercando.\n" +"\n" +" — Saya"; +SWWM_MISSION_EVITERNITYII6 = +"Ay madre... En primer lugar, hemos vuelto a \cfSiberia\c-, y esto definitivamente tiene que ser otra instalación abandonada de la facultad, toda congelada y tal. Pero claro, ahora plagada de demonios... Y bichos astrales, también.\n" +"\n" +"Por cierto, aquí viene el lore.\n" +"\n" +"Ya sabes que la facultad es directamente responsable del nacimiento de la mayor parte de demonios, ¿no? Hace decenas de miles de años, cuando se asentaron por primera vez en nuestro planeta... Bueno, pues, las cosas se ponen interesantes cuando preguntas como exactamente se les ocurrió todo eso del proceso de \"demonización\", para transformar humanos en demonios, y tal. Resulta que toda esa mierda era algo que el director, el viejales, mantuvo en secreto absoluto. La mecánica interna de esa tecnología definitivamente no era un diseño \cfXevetha\c-, había magia oscura de entremedio, y nadie podía hacer preguntas al respecto.\n" +"\n" +"Bueno, ahora por fin lo sabemos. Es obvio, lo consiguió gracias a ESA cosa. Y esa cosa... ELLA... Es el mismísimo origen de la locura que llevó a la fundación de la facultad en primer lugar. \cfUruk'Anth\c- la descubrió por accidente, y vio que hacer un pacto con ella le permitiría a él y sus discípulos alcanzar la divinidad. Esto pasó despues del \cfincidente en Nedoshiaan\c-, ya sabes, cuando el dios tirano para el que trabajaba fue asesinado...\n" +"\n" +"Vale, necesito respirar un poco, estoy escribiendo mucho, y aun queda más.\n" +"\n" +"No es un secreto que hay otros universos, eso lo he aprendido de sobra gracias a los dioses. Pero es normalmente raro que entidades externas simplemente se \"cuelen\" en nuestro mundo, a menos que sean, bueno, OTROS dioses.\n" +"\n" +"Si esa cosa es realmente una diosa, puede que sea completamente inmortal, y eso no es nada bueno, \cfDemo-chan\c-.\n" +"\n" +"Aun así, seguro que puedes patearle el trasero hasta que no pueda levantarse. Los dioses pueden sangrar, después de todo, y vas a hacer que lamente haber jodido con NUESTRO mundo.\n" +"\n" +" — Saya"; +SWWM_MISSION_EVITERNITYII7 = +"Donde sea que estés, está tan lejos que no podemos cuadrarlo en ningún mapa estelar conocido. Sinceramente, me sorprende. Con sitios como el \cfInfierno\c-, eso aún quedaba dentro de nuestro universo, pero de alguna forma, todo sigue funcionando perfectamente mientras estás... Fuera.\n" +"\n" +"Gracias muchas a los ingenieros de la \cfBleaknet\c-, supongo, todo este sistema de alguna forma nos sigue manteniendo en contacto incluso entre mundos completamente separados. Al menos de esta forma podemos saber que la mayor parte de leyes fundamentales siguen siendo las mismas, pues mira tú.\n" +"\n" +"Honestamente, todo esto de estar en otro universo totalmente distinto... Es fascinante. Espero que podamos conseguir datos picantes de este sitio, jeje...\n" +"\n" +"En fin, frikismo mio aparte, este es el supuesto \cf\"Reino Astral\"\c-, el hogar del \cf\"Orígen\"\c-, tal como la gente de la facultad la llamaba. Supongo que hay una atmósfera \"normal\" ahí, ya que tu depósito de combustible sigue chupando hidrógeno del ambiente... Aparte de eso, pues sí, un territorio completamente alienígena.\n" +"\n" +"Estate preparada para todo, \cfDemo-chan\c-, ahora estás en la guarida del jefe final.\n" +"\n" +" — Saya"; SWWM_MISSION_HERETIC1 = "Bienvenida, \cfDemolicionista\c-, a una misión muy especial. Mientras se calma un poco la cosa por aquí, hemos podido retomar nuestro trabajo en el \cfProyecto Akari\c-. Ya sabes, ese tan importante en el que quise trabajar toda la vida. Por ahora todo bien, todo correcto, y vas a ser la primera en tomar parte en la exploración de otros mundos. Hemos rebuscado por el multiverso para encontrar algunos sitios interesantes, y este en particular nos llamó la atención. Se llama \cfParthoris\c-, es un reino de magia y elfos y tal, me mola. Pues eso, espero que el viaje no haya sido muy movido, aún no hemos afinado esa parte.\n" "\n" @@ -251,9 +361,9 @@ SWWM_MISSION_HERETIC1 = "\n" "Tu objetivo es un tal \cfD'Sparil\c-. Es miembro de una tríada de magos malosos chiflados que se llaman \cfJinetes de Serpiente\c-. El tío es más bien alto, encapuchado en rojo, y habla al revés, más fácil no puede ser. Manda sobre ejércitos de no muertos y otras mierdas, nada de lo que no puedas encargarte, seguro. Lo primero, necesitarás contactar con los supervivientes Sidhe, ver si puedes conseguir más información de donde ir y que hacer. A lo mejor cuando se acabe todo esto podemos formar una alianza o algo, y espero que no se cabreen porque usamos muebles de madera.\n" "\n" -"Estoy segura, que cuando te vengas de vuelta vas a querer cambiarte a tu cuerpo de \cfMaidbot\c- inmediatamente, así que estaré trabajando en unas cuantas \"extensiones\" ahí para hacer las cosas más... \"divertidas\", si pillas lo que digo. Oh, sí, todo un chorro de diversión.. a montones... jeje...\n" +"Estoy segura, que cuando te vengas de vuelta vas a querer cambiarte a tu cuerpo de \cfMaidbot\c- inmediatamente, así que voy a estar preparando algo para cuando vuelvas. Va a ser algo bonito y muy dulce, pero va a ser una sorpresa, ¿vale? No te puedo dar más detalles, jeje...\n" "\n" -"Bueno... uh... calenturas aparte, perdona que no te pudiéramos dar todas las cosas. La culpa es mía, creo que la he liado con algo de la distribución y se fue todo a tirar por ahí. Es posible que los lugareños hayan movido algunas cosas... así que buena suerte encontrándolo todo.\n" +"Bueno... uh... temas aparte, perdona que no te pudiéramos dar todas las cosas. La culpa es mía, creo que la he liado con algo de la distribución y se fue todo a tirar por ahí. Es posible que los lugareños hayan movido algunas cosas... así que buena suerte encontrándolo todo.\n" "\n" "A por ellos, \cfDemo-chan\c-. Párteles el culo a esos magos maleantes.\n" "\n" @@ -263,7 +373,7 @@ SWWM_MISSION_HERETIC2 = "\n" "¿En serio acabo de escribir eso?\n" "\n" -"En fin, pues al rollo, en cuanto limpiemos este sitio deberíamos poder acercarnos más al tal \cfD'Sparil\c- ese. Solo... espero que sea un desafío, porque tus \"mejoras\" están tardando un poco, sabes. Sí, esto va a ser divertido, juju.\n" +"En fin, pues al rollo, en cuanto limpiemos este sitio deberíamos poder acercarnos más al tal \cfD'Sparil\c- ese. Solo... espero que sea un desafío, porque tu regalo me está dando más trabajo del que esperaba. Ya bueno... Tal vez debería haber intentado algo más sencillo.\n" "\n" "No te voy a decir lo que es, tonti. Concéntrate en tu misión, \cfDemo-chan\c-. Ya lo verás cuando esté terminado.\n" "\n" @@ -277,19 +387,19 @@ SWWM_MISSION_HERETIC3 = "\n" " — Saya"; SWWM_MISSION_HERETIC4 = -"Vale, ¿que cojones está pasando? No estás de vuelta en \cfParthoris\c-, así que ¿donde ESTÁ este sitio? Quien sea que haya hecho esto va a recibir una buena patada en el trasero, puto arruinando mis planes de darte un buen y delicioso...\n" +"Vale, ¿que cojones está pasando? No estás de vuelta en \cfParthoris\c-, así que ¿donde ESTÁ este sitio? Quien sea que haya hecho esto va a recibir una buena patada en el trasero, puto arruinando mis planes de prepararte una deliciosa-\n" "\n" "*tose*\n" "\n" "He oído a los \cfSidhe\c- mencionar que otros \cfJinetes de Serpiente\c- deben de haberse enterado de lo que has hecho, y han decidido interferir. Y así, el resultado es que tu rumbo ha cambiado a donde coño que sea esto. Sí, todo cojonudo, pues pueden joderse. Ojalá se atraganten con un cactus de metal.\n" "\n" -"Pues eso, cambio de planes, supongo. Vas a tener que cargarte más monstruos estúpidos para salir de ahí. Como sueles decir, es hora de liarla, ¡a matarlos a todos, \cfDemo-chan\c-!\n" +"Pues eso, cambio de planes, supongo. Vas a tener que cargarte más monstruos estúpidos para salir de ahí. Como suele decir \cfIbuki\c-, es hora de liarla, ¡a matarlos a todos, \cfDemo-chan\c-!\n" "\n" " — Saya"; SWWM_MISSION_HERETIC5 = "Aun no ha terminado, no. Todavía no puedes volver a casa. Es que esto en serio me está tocando la moral, no tienes ni idea. Me encantaría ir ahí para patearles el culo por hacerme perder el tiempo. Pero creo que es mejor ver como los conviertes eficientemente en picadillo por sus crímenes.\n" "\n" -"En serio espero que este sea el último de sus mundos en el que te metan. Porque QUIERO probar esto ya, he tenido tanto tiempo extra para perfeccionarlo y dejarlo bonito... solo necesitas volver sana y a salvo, eso es todo lo que importa.\n" +"En serio espero que este sea el último de sus mundos en el que te metan. Porque QUIERO que pruebes esto ya, he tenido tanto tiempo extra para perfeccionarlo y dejarlo bonito... solo necesitas volver sana y a salvo, eso es todo lo que importa.\n" "\n" "Venga, \cfDemo-chan\c-, no me dejes aquí tirada, ¡tu novia te necesita!\n" "\n" @@ -301,11 +411,11 @@ SWWM_MISSION_HEXEN1 = "\n" "Bienvenida a \cfCronos\c-. Este sitio tenía buena pinta, hasta que el tío ese vino todo pisoteando con sus ejércitos. Como el brujales ese, el muy capullo también consiguió poner a algunos de los de aquí de su lado. Tu objetivo se llama \cfKorax\c-, como el cuervo, eh, ya sabes, \"Corvus Corax\"... ah, olvídalo.\n" "\n" -"Pues la cosa es que, me gustaría que fueras para ahí y lo quitaras de en medio. NO hagas caso de cualquier mierda que te suelte, que seguro que también te intentará comer el tarro. Es grande, feúcho, y no tiene mucha pinta de poder montar en una serpiente, así que a lo mejor... es que lo montan a él... oh espera no, no suena muy... UGH... dios la imagen mental, mierda joder. Donde están los pechotes de \cfIbuki\c- cuando los necesitas, son lo mejor para hacerme olvidar todo.\n" +"Pues la cosa es que, me gustaría que fueras para ahí y lo quitaras de en medio. NO hagas caso de cualquier mierda que te suelte, que seguro que también te intentará comer el tarro. Es grande, feúcho, y no va montado en una serpiente. No, en serio, solo el otro tío lo hace, por alguna razón, los otros pues... Van andando. A saber por qué el nombre, entonces.\n" "\n" -"Se que querrás una buena recompensa por esto así que, esto es lo que tengo en mente. ¿Que tal un poco más de \"diversión\" como la última vez, eh? Tú, yo... y no se... si \cfKirin-kun\c- también... hnnn... y luego... *jadeando*\n" +"Se que querrás una buena recompensa por esto así que, esto es lo que tengo en mente. Oí que \cfKirin-kun\c- necesita un poco de práctica de dibujo, así que se me vino la loca idea de que nos haga retratos a todas. Apuesto a que capturará perfectamente lo adorable que eres. Y si no, bueno, siempre podemos castigarlo con cosquillas y hacer que lo intente otra vez. Al fin y al cabo, todo sale con un poco de práctica, ¿no?\n" "\n" -"OK, wow... uf. Saya, concéntrate. Nada de hornyposting en los mensajes de misión, otra vez no. Ah y luego, noticias algo así como que ¿¿¿malas??? Nos hemos metido en un lío con lo de las municiones y nos han mandado estos cachivaches, estos \cf\"Fabricadores\"\c- del friki ese. Al menos te dan munición. Como siempre, tus cosas andarán por ahí colocadas estratégicamente, ya que no pudimos... mandarte con todo encima, como siempre. No sé por qué el muy friki insiste en hacerlo todo así. ¿Es que por qué se empeñará en que todo tenga que ser... ugh... como un videojuego?\n" +"Ah y luego, noticias algo así como que ¿¿¿malas??? Nos hemos metido en un lío con lo de las municiones y nos han mandado estos cachivaches, estos \cf\"Fabricadores\"\c- del friki ese. Al menos te dan munición. Como siempre, tus cosas andarán por ahí colocadas estratégicamente, ya que no pudimos... mandarte con todo encima, como siempre. No sé por qué el muy friki insiste en hacerlo todo así. ¿Es que por qué se empeñará en que todo tenga que ser... ugh... como un videojuego?\n" "\n" "Bueno, pues eso. Anda, \cfDemo-chan\c-, ¡enséñales lo que sabes hacer!\n" "\n" @@ -319,7 +429,7 @@ SWWM_MISSION_HEXEN2 = "\n" "Bueno, vale, temas aparte, más puzzles descoyuntantes nos esperan, seguro. Y me pregunto a quién se le ha ocurrido todo el rollo este, es que es... una puta mierda. Dios, imagina algo así de obtuso en un juego, sería TAN MALO que dejaría de existir antes de salir a la venta.\n" "\n" -"Y con eso, te deseo suerte y muchísima paciencia, \cfDemo-chan\c-. Sigue así y haremos algo más que abrazarnos cuando vuelvas.\n" +"Y con eso, te deseo suerte y muchísima paciencia, \cfDemo-chan\c-. Sigue así!\n" "\n" " — Saya"; SWWM_MISSION_HEXEN3 = @@ -335,8 +445,6 @@ SWWM_MISSION_HEXEN3 = "\n" "...\n" "\n" -"JAJAJA \"SEMINARIO\" ¿LO PILLAS? ¿¿¿TOTALMENTE HACE QUE PIENSES EN SEMEN VERDAD???\n" -"\n" " — Saya"; SWWM_MISSION_HEXEN4 = "Esa sí que es una torre enorme. ¿Crees que puedes echarla abajo? Hacer un poco de... ya sabes, ¿\"trabajo de demolición\"? Je, por supuesto que no, no vale la pena, solo daría más problemas. Y no sería divertido simplemente reventarlo todo sin esfuerzo. La diversión de verdad es ir por ahí a hostias, toma ya.\n" @@ -463,6 +571,21 @@ E5TEXT = "al menos que el de la UAC no haya ganado\n" "ya la carrera, o tendré que aguantar las\n" "mierdas de esos idiotas.\""; +E6TEXT = +"Abrirte paso al puerto estelar de la UAC\n" +"realmente ha sido duro, al haberte metido\n" +"de lleno en un campamento demoníaco\n" +"entre las ruínas de una ciudad totalmente\n" +"arrasada.\n" +"\n" +"Y con otro puñado de tenientes\n" +"cibernéticos hechos papilla por tu\n" +"arsenal, sigues tu camino adelante.\n" +"\n" +"Saya no se ha quejado por mensajes, pero\n" +"te puedes imaginar que está incluso más\n" +"enojada por culpa de todos estos desvíos\n" +"por los que te han mandado..."; C1TEXT = "A medida que te abres paso a través del\n" "puerto infestado, empiezas a notar algo:\n" @@ -554,6 +677,10 @@ NERVETEXT = "estiras un poco, te aplaudes felizmente, y\n" "comienzas el largo camino a casa. Más vale\n" "que la recompensa sea buena..."; +INTERTEXT_ID1_E1 = +""; +INTERTEXT_ID1_E2 = +""; HE1TEXT = "Una vez te has cargado esas cabezas\n" "locas que no paraban de reír, puedes\n" @@ -594,8 +721,8 @@ HE3TEXT = "\n" "Con ese tipejo fuera de juego, ya\n" "puedes volver a casa y ver que es\n" -"exactamente esa \"recompensa\" que\n" -"Saya planea darte...\n" +"exactamente esa recompensa que Saya\n" +"planea darte...\n" "\n" "Aun así, ese plan podría cambiar..."; HE4TEXT = @@ -620,9 +747,10 @@ HE5TEXT = "importa. Puedes seguir así para\n" "siempre, si hace falta.\n" "\n" -"El deseo de saber que tiene Saya\n" -"planeado para ti cuando vuelvas te\n" -"empuja a seguir, pase lo que pase.\n" +"Puedes deducir facilmente que el\n" +"regalo de Saya es una tarta casera.\n" +"Y con tal deliciosa recompensa en mente,\n" +"tienes más fuerzas para seguir adelante.\n" "\n" "\"¡Cruzaría de nuevo el infierno si\n" "fuese necesario, haría cualquier\n" diff --git a/language.es_voice b/language.es_voice index e6e8b708e..b387a029d 100644 --- a/language.es_voice +++ b/language.es_voice @@ -21,6 +21,7 @@ SWWM_SUBS_DEFAULT_LOCKED3 = "Tengo que encontrar la llave."; SWWM_SUBS_DEFAULT_LOCKED4 = "Necesita una llave."; SWWM_SUBS_DEFAULT_LOCKED5 = "Dios odio buscar llaves..."; SWWM_SUBS_DEFAULT_LOCKED6 = "Malditas llaves..."; +SWWM_SUBS_DEFAULT_LOCKED7 = "¿Pero que mierdas es esto?"; // jammed door SWWM_SUBS_DEFAULT_JAMMED1 = "Atascado."; SWWM_SUBS_DEFAULT_JAMMED2 = "No se mueve."; @@ -62,6 +63,7 @@ SWWM_SUBS_DEFAULT_FIGHTSTART18 = "Oh, por fin, algo que disparar."; SWWM_SUBS_DEFAULT_FIGHTSTART19 = "¡Empieza el show!"; SWWM_SUBS_DEFAULT_FIGHTSTART20 = "Oh, estás muerto."; SWWM_SUBS_DEFAULT_FIGHTSTART21 = "Bien. Ya me preguntaba cuando ibas a aparecer."; +SWWM_SUBS_DEFAULT_FIGHTSTART22 = "Oh mierda, allá vamos otra vez."; // played at map start SWWM_SUBS_DEFAULT_MAPSTART1 = "Ugh, joder... Este sitio apesta. Vomitaría si pudiera."; SWWM_SUBS_DEFAULT_MAPSTART2 = "Muy bien, manos a la obra."; @@ -77,6 +79,9 @@ SWWM_SUBS_DEFAULT_MAPSTART11 = "Bueno, mas vale no dejar a todos esperando."; SWWM_SUBS_DEFAULT_MAPSTART12 = "Me esforzaré al máximo."; SWWM_SUBS_DEFAULT_MAPSTART13 = "Deja que diga una cosa: Todo lo que encuentre, me lo quedo."; SWWM_SUBS_DEFAULT_MAPSTART14 = "Vengo a mascar chicle y patear traseros... Y no tengo boca."; +SWWM_SUBS_DEFAULT_MAPSTART15 = "¿Por qué me mudé aquí? Supongo que por el clima."; +SWWM_SUBS_DEFAULT_MAPSTART16 = "Ugh mas vale que no haya plataformas..."; +SWWM_SUBS_DEFAULT_MAPSTART17 = "Ya veo que este día va a ser interesante."; // every time a secret is found SWWM_SUBS_DEFAULT_FINDSECRET1 = "Oh, ¿eso era un secreto?"; SWWM_SUBS_DEFAULT_FINDSECRET2 = "Sí, molo bastante."; @@ -116,6 +121,9 @@ SWWM_SUBS_DEFAULT_SCOREKILL22 = "Un placer."; SWWM_SUBS_DEFAULT_SCOREKILL23 = "Fuera de mi camino."; SWWM_SUBS_DEFAULT_SCOREKILL24 = "Aquí tienes tu ración especial de MUERE."; SWWM_SUBS_DEFAULT_SCOREKILL25 = "¿Quieres más?"; +SWWM_SUBS_DEFAULT_SCOREKILL26 = "A joderse."; +SWWM_SUBS_DEFAULT_SCOREKILL27 = "Eso si que lo llamo un momento BRUH."; +SWWM_SUBS_DEFAULT_SCOREKILL28 = "¡Muerto!"; // oopsies SWWM_SUBS_DEFAULT_FRIENDKILL1 = "¡Oh no! ¡No no no no lo siento oh dios mío!"; SWWM_SUBS_DEFAULT_FRIENDKILL2 = "¡Oh dios mío! Lo siento mucho..."; @@ -131,7 +139,7 @@ SWWM_SUBS_DEFAULT_GETHIT7 = "¿Sí? ¡Pues que te jodan a ti también."; SWWM_SUBS_DEFAULT_GETHIT8 = "Vale, ya me has llamado la atención."; SWWM_SUBS_DEFAULT_GETHIT9 = "Esto acaba ahora."; SWWM_SUBS_DEFAULT_GETHIT10 = "Me estás cabreando."; -SWWM_SUBS_DEFAULT_GETHIT11 = "Y una polla como la manga de un abrigo (lo cual no estaría mal)."; +SWWM_SUBS_DEFAULT_GETHIT11 = "Ya estais dando por culo otra vez (y no en el buen sentido)."; SWWM_SUBS_DEFAULT_GETHIT12 = "¿En serio?"; SWWM_SUBS_DEFAULT_GETHIT13 = "Es solo un rasguño."; SWWM_SUBS_DEFAULT_GETHIT14 = "Oh, jódete."; @@ -140,6 +148,7 @@ SWWM_SUBS_DEFAULT_GETHIT16 = "Ya estás muerto..."; SWWM_SUBS_DEFAULT_GETHIT17 = "No vas a salir de aquí con vida."; SWWM_SUBS_DEFAULT_GETHIT18 = "Vale, ya lo pillo."; SWWM_SUBS_DEFAULT_GETHIT19 = "¡Ugh! Puto... déjame... joder..."; +SWWM_SUBS_DEFAULT_GETHIT20 = "¡Pero serás sussy baka...!"; // getting hurt by friendlies SWWM_SUBS_DEFAULT_FRIENDHIT1 = "¿Eh a que ha venido eso?"; SWWM_SUBS_DEFAULT_FRIENDHIT2 = "¿Que estas haciendo?"; @@ -245,7 +254,6 @@ SWWM_SUBS_DEFAULT_KORAXMASTERS9 = "Urgh... Por favor cállate la puta boca ya."; /// Extra lines that wouldn't be possible without original voice acting // per-weapon lines (alternative) SWWM_SUBS_DEFAULT_GETDEEPIMPACT = "Soplaré y soplaré... y vuestra casa derribaré."; -SWWM_SUBS_DEFAULT_GETPUSHERWEAPON = "¿Alguien quiere que le quite las caries?"; SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN1 = "Ah, mi fiel amigo."; SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN2 = "Doble poder revienta-rodillas."; SWWM_SUBS_DEFAULT_GETSPREADGUN = "Mira que escopetita."; @@ -261,7 +269,7 @@ SWWM_SUBS_DEFAULT_GETPLASMABLAST1 = "Soltando plasma."; SWWM_SUBS_DEFAULT_GETPLASMABLAST2 = "Ahora sí. El doble de diversión."; SWWM_SUBS_DEFAULT_GETPUNTZERBETA = "Os voy a taladrar bien taladrados."; // said with a cheap cowboy accent SWWM_SUBS_DEFAULT_GETPUNTZERGAMMA = "¿Automático y... superautomático? Vaya vaya..."; -SWWM_SUBS_DEFAULT_GETHEAVYMAHSHEENGUN = "¡Metralleta Pesada!"; +SWWM_SUBS_DEFAULT_GETHEAVYMAHSHEENGUN = "Ahora tengo una ametralladora. Jojojo~"; SWWM_SUBS_DEFAULT_GETQUADRAVOL = "Así las llamas de la Cruz Ardiente se propagaron a través de la horda..."; SWWM_SUBS_DEFAULT_GETNEWSPARKSTER = "Me gustan las armas de plasma grandes."; SWWM_SUBS_DEFAULT_GETMORTALRIFLE = "Bienvenido a bordo, Míster."; @@ -322,276 +330,102 @@ SWWM_SUBS_DEFAULT_ARCHANGELUS5 = "Oh, pero mírate con tus bonitas alitas y todo SWWM_SUBS_DEFAULT_ARCHANGELUS6 = "Ya ya, siempre es lo mismo con gente como tú."; SWWM_SUBS_DEFAULT_ARCHANGELUS7 = "Bueno, pero vosotros vais a tope con la mierda de pretender ser dioses, ¿no?"; SWWM_SUBS_DEFAULT_ARCHANGELUS8 = "Me parece que voy a tener que hacerte entenderlo a ostias."; +// Eviternity II boss +SWWM_SUBS_DEFAULT_ORIGIN11 = "¿Que diantres eres?"; +SWWM_SUBS_DEFAULT_ORIGIN12 = "Lo que sea que es eso, está cabreado."; +SWWM_SUBS_DEFAULT_ORIGIN13 = "Tú estás detrás de todo esto, ¿no?"; +SWWM_SUBS_DEFAULT_ORIGIN14 = "Hora del jefe final..."; +SWWM_SUBS_DEFAULT_ORIGIN21 = "Oh perfecto, ha vuelto."; +SWWM_SUBS_DEFAULT_ORIGIN22 = "¿Quieres más? ¡Pues vamos!"; +SWWM_SUBS_DEFAULT_ORIGIN23 = "Muy bien, segundo asalto."; +SWWM_SUBS_DEFAULT_ORIGIN24 = "Aun no he terminado contigo."; +SWWM_SUBS_DEFAULT_ORIGIN31 = "¿Que demonios?"; +SWWM_SUBS_DEFAULT_ORIGIN32 = "¡Madre mía aun sigue vivo!"; +SWWM_SUBS_DEFAULT_ORIGIN33 = "Leñe, ¡pero muerete ya!"; +SWWM_SUBS_DEFAULT_ORIGIN34 = "¿Tercer... Asalto?"; +SWWM_SUBS_DEFAULT_ORIGIN35 = "Bueno, a la tercera va la vencida."; // "hself ruoy erutrot lliw I" (supposedly) SWWM_SUBS_DEFAULT_DSPARILA1 = "Oh pero mírate, si es caperucita roja."; SWWM_SUBS_DEFAULT_DSPARILA2 = "¿Por que no te bajas de esa cosa y hablamos?"; SWWM_SUBS_DEFAULT_DSPARILA3 = "Voy a fregar el suelo contigo, friki."; SWWM_SUBS_DEFAULT_DSPARILB1 = "¿Pero que os pasa a todos con lo de hablar al revés?"; SWWM_SUBS_DEFAULT_DSPARILB2 = "Lo siento, ¿podrías repetir eso?"; -SWWM_SUBS_DEFAULT_DSPARILB3 = "séver la ralbah odeup néibmat oY."; // record this line normally then just reverse it, really -// (H-Doom compat) Demon girl petting -SWWM_SUBS_DEFAULT_PETHDOOM1 = "Buena chica~"; -SWWM_SUBS_DEFAULT_PETHDOOM2 = "Eh, no tienes por qué pelear."; -SWWM_SUBS_DEFAULT_PETHDOOM3 = "No te voy a hacer daño."; -SWWM_SUBS_DEFAULT_PETHDOOM4 = "Ya está, ya pasó..."; -SWWM_SUBS_DEFAULT_PETHDOOM5 = "No pasa nada, seamos amigas."; -SWWM_SUBS_DEFAULT_PETHDOOM6 = "Tranquila, todo está bien."; -SWWM_SUBS_DEFAULT_PETHDOOM7 = "Que mona eres~"; -SWWM_SUBS_DEFAULT_PETHDOOM8 = "Jeje... Tienes un pelo tan suave~"; -SWWM_SUBS_DEFAULT_PETHDOOM9 = "Buena chica... Buena chica..."; -// (H-Doom compat) Aroused demon girl petting -SWWM_SUBS_DEFAULT_PETHDOOMFINISH1 = "Te gusta que te acaricien, ¿no?"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH2 = "Ya está, todo va bien..."; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH3 = "Te ponen mis caricias, ¿a que sí?"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH4 = "Puedo hacer esto, por lo menos."; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH5 = "Sienta bien, ¿verdad?"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH6 = "Un tacto cariñoso es todo lo que necesitas~"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH7 = "Llámame luego, ¿vale?"; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH8 = "Vaya, vaya... Estás tan sonrojada..."; -SWWM_SUBS_DEFAULT_PETHDOOMFINISH9 = "Jeje... De nada."; +SWWM_SUBS_DEFAULT_DSPARILB3 = ".séver la ralbah odeup néibmat oY"; // record this line normally then just reverse it, really // White Lady petting -SWWM_SUBS_DEFAULT_PETMASHIRO1 = "Polilla suave..."; -SWWM_SUBS_DEFAULT_PETMASHIRO2 = "Te gusta mi lámpara, ¿verdad?"; -SWWM_SUBS_DEFAULT_PETMASHIRO3 = "Eres tan guapa~"; -SWWM_SUBS_DEFAULT_PETMASHIRO4 = "Gracias por tu ayuda, señorita."; -SWWM_SUBS_DEFAULT_PETMASHIRO5 = "Ya está... buena chica..."; -SWWM_SUBS_DEFAULT_PETMASHIRO6 = "Jeje... bonita chica polilla~"; -SWWM_SUBS_DEFAULT_PETMASHIRO7 = "Buena amiga~"; +SWWM_SUBS_DEFAULT_PETANDIRA1 = "Polilla suave..."; +SWWM_SUBS_DEFAULT_PETANDIRA2 = "Te gusta mi lámpara, ¿verdad?"; +SWWM_SUBS_DEFAULT_PETANDIRA3 = "Eres tan guapa~"; +SWWM_SUBS_DEFAULT_PETANDIRA4 = "Gracias por tu ayuda, señorita."; +SWWM_SUBS_DEFAULT_PETANDIRA5 = "Ya está... buena chica..."; +SWWM_SUBS_DEFAULT_PETANDIRA6 = "Jeje... bonita chica polilla~"; +SWWM_SUBS_DEFAULT_PETANDIRA7 = "Buena amiga~"; // Button pushing SWWM_SUBS_DEFAULT_BUTTONPUSH1 = "Bip."; SWWM_SUBS_DEFAULT_BUTTONPUSH2 = "Bup."; // Fall "scream" SWWM_SUBS_DEFAULT_FALLING = "¡Wiiiiiiiiiiii~!"; -//// LEGACY VOICE - Fallout 4 JP Sole Survivor -// voice name -SWWM_VOICENAME_DEFAULT = "Clásico"; -// new weapon received -SWWM_SUBS_LEGACY_GETWEAPON1 = "No está mal... No está mal para nada..."; -SWWM_SUBS_LEGACY_GETWEAPON2 = "Buena pesca..."; -SWWM_SUBS_LEGACY_GETWEAPON3 = "Ahora es mío..."; -SWWM_SUBS_LEGACY_GETWEAPON4 = "Bien..."; -SWWM_SUBS_LEGACY_GETWEAPON5 = "Bingo..."; -SWWM_SUBS_LEGACY_GETWEAPON6 = "Toma ya..."; -SWWM_SUBS_LEGACY_GETWEAPON7 = "Excelente..."; -SWWM_SUBS_LEGACY_GETWEAPON8 = "Sí..."; -SWWM_SUBS_LEGACY_GETWEAPON9 = "Eso es..."; -SWWM_SUBS_LEGACY_GETWEAPON10 = "Perfecto..."; -SWWM_SUBS_LEGACY_GETWEAPON11 = "Me gusta..."; -SWWM_SUBS_LEGACY_GETWEAPON12 = "Tiene buena pinta..."; -SWWM_SUBS_LEGACY_GETWEAPON13 = "Probablemente cueste una fortuna..."; -// locked door -SWWM_SUBS_LEGACY_LOCKED1 = "No tengo la llave."; -SWWM_SUBS_LEGACY_LOCKED2 = "Solo abre con una llave."; -SWWM_SUBS_LEGACY_LOCKED3 = "Necesitaría la llave."; -SWWM_SUBS_LEGACY_LOCKED4 = "Cerrado a cal y canto."; -// jammed door (strife) -SWWM_SUBS_LEGACY_JAMMED1 = "Está atrancada."; -SWWM_SUBS_LEGACY_JAMMED2 = "Nada."; -SWWM_SUBS_LEGACY_JAMMED3 = "Atrancada."; -SWWM_SUBS_LEGACY_JAMMED4 = "Es inútil."; -// puzzle item failure -SWWM_SUBS_LEGACY_PUZZFAIL1 = "Maldición."; -SWWM_SUBS_LEGACY_PUZZFAIL2 = "Maldita sea."; -SWWM_SUBS_LEGACY_PUZZFAIL3 = "No bueno."; -SWWM_SUBS_LEGACY_PUZZFAIL4 = "Pues no."; -// puzzle item success -SWWM_SUBS_LEGACY_PUZZSUCC1 = "Bien."; -SWWM_SUBS_LEGACY_PUZZSUCC2 = "Eso es."; -SWWM_SUBS_LEGACY_PUZZSUCC3 = "Lo tengo."; -SWWM_SUBS_LEGACY_PUZZSUCC4 = "Sí."; -SWWM_SUBS_LEGACY_PUZZSUCC5 = "Mola."; -// first enemy encounter (20 seconds cooldown since all enemies dead) -SWWM_SUBS_LEGACY_FIGHTSTART1 = "Ya estamos otra vez."; -SWWM_SUBS_LEGACY_FIGHTSTART2 = "Que empiece el espectáculo."; -SWWM_SUBS_LEGACY_FIGHTSTART3 = "Hora de morir."; -SWWM_SUBS_LEGACY_FIGHTSTART4 = "Ven a por mí."; -SWWM_SUBS_LEGACY_FIGHTSTART5 = "Vais a morir todos."; -SWWM_SUBS_LEGACY_FIGHTSTART6 = "Ya tenía ganas de pelea."; -SWWM_SUBS_LEGACY_FIGHTSTART7 = "Vamos con esto."; -SWWM_SUBS_LEGACY_FIGHTSTART8 = "¡Hora de liarla! ¡A matarlos a todos!"; -SWWM_SUBS_LEGACY_FIGHTSTART9 = "En serio que no querrías empezar una pelea conmigo."; -SWWM_SUBS_LEGACY_FIGHTSTART10 = "Vamos al asunto."; -SWWM_SUBS_LEGACY_FIGHTSTART11 = "¡Matar!"; -SWWM_SUBS_LEGACY_FIGHTSTART12 = "Esto no será difícil."; -SWWM_SUBS_LEGACY_FIGHTSTART13 = "Vamos allá."; -SWWM_SUBS_LEGACY_FIGHTSTART14 = "Hagamos esto."; -SWWM_SUBS_LEGACY_FIGHTSTART15 = "Acabemos con esto."; -SWWM_SUBS_LEGACY_FIGHTSTART16 = "Bueno, esto será un desafío interesante."; -SWWM_SUBS_LEGACY_FIGHTSTART17 = "OK. Empecemos con esto."; -SWWM_SUBS_LEGACY_FIGHTSTART18 = "Oh, esto es justo lo que necesitaba ahora..."; -SWWM_SUBS_LEGACY_FIGHTSTART19 = "Hora de montar un espectáculo."; -SWWM_SUBS_LEGACY_FIGHTSTART20 = "Te voy a eliminar."; -SWWM_SUBS_LEGACY_FIGHTSTART21 = "Oh, bien. Y yo que me temía no tener nada que hacer.."; -// played at map start -SWWM_SUBS_LEGACY_MAPSTART1 = "Ugh... este sitio apesta."; -SWWM_SUBS_LEGACY_MAPSTART2 = "OK, manos a la obra."; -SWWM_SUBS_LEGACY_MAPSTART3 = "Arreando que es gerundio."; -SWWM_SUBS_LEGACY_MAPSTART4 = "Este sitio tiene muy mala pinta."; -SWWM_SUBS_LEGACY_MAPSTART5 = "Nací preparada."; -SWWM_SUBS_LEGACY_MAPSTART6 = "La vida es dura, hago lo que tengo que hacer."; -SWWM_SUBS_LEGACY_MAPSTART7 = "Ningún robot es mejor que yo."; -SWWM_SUBS_LEGACY_MAPSTART8 = "Los he visto mejores."; -SWWM_SUBS_LEGACY_MAPSTART9 = "OK. Vamos para allá."; -SWWM_SUBS_LEGACY_MAPSTART10 = "No quiero problemas. Solo estoy de camino."; -SWWM_SUBS_LEGACY_MAPSTART11 = "Siento haceros esperar."; -SWWM_SUBS_LEGACY_MAPSTART12 = "Haré lo mejor que pueda."; -SWWM_SUBS_LEGACY_MAPSTART13 = "Que quede claro: Todo lo bueno que encuentre es mío."; -SWWM_SUBS_LEGACY_MAPSTART14 = "Seguro que la comida aquí es terrible."; -// every time a secret is found -SWWM_SUBS_LEGACY_FINDSECRET1 = "Sí, sí, soy la mejor."; -SWWM_SUBS_LEGACY_FINDSECRET2 = "Es verdad. Molo bastante."; -SWWM_SUBS_LEGACY_FINDSECRET3 = "¿Que puedo decir? Se me da bien lo que hago."; -SWWM_SUBS_LEGACY_FINDSECRET4 = "No ha sido para tanto."; -SWWM_SUBS_LEGACY_FINDSECRET5 = "Ningún problema en absoluto."; -SWWM_SUBS_LEGACY_FINDSECRET6 = "Fue fácil."; -SWWM_SUBS_LEGACY_FINDSECRET7 = "Gracias a mí, sí."; -SWWM_SUBS_LEGACY_FINDSECRET8 = "Fue visto y no visto."; -SWWM_SUBS_LEGACY_FINDSECRET9 = "Fue pan comido."; -SWWM_SUBS_LEGACY_FINDSECRET10 = "Todavía tengo mi don."; -SWWM_SUBS_LEGACY_FINDSECRET11 = "He hecho un buen trabajo, ¿verdad?"; -SWWM_SUBS_LEGACY_FINDSECRET12 = "Wow, ¡mira que suerte!"; -SWWM_SUBS_LEGACY_FINDSECRET13 = "Sí, bueno, soy bastante guay."; -// frag taunts -SWWM_SUBS_LEGACY_SCOREKILL1 = "A tomar viento."; -SWWM_SUBS_LEGACY_SCOREKILL2 = "Uno menos."; -SWWM_SUBS_LEGACY_SCOREKILL3 = "Adiós."; -SWWM_SUBS_LEGACY_SCOREKILL4 = "¡Heh! No puedes pararme."; -SWWM_SUBS_LEGACY_SCOREKILL5 = "Perdedor."; -SWWM_SUBS_LEGACY_SCOREKILL6 = "Se acabó lo nuestro."; -SWWM_SUBS_LEGACY_SCOREKILL7 = "Chao."; -SWWM_SUBS_LEGACY_SCOREKILL8 = "Bien muerto."; -SWWM_SUBS_LEGACY_SCOREKILL9 = "Otro trabajo hecho."; -SWWM_SUBS_LEGACY_SCOREKILL10 = "El placer ha sido mío."; -SWWM_SUBS_LEGACY_SCOREKILL11 = "¿Que tal algo más desafiante la próxima vez?"; -SWWM_SUBS_LEGACY_SCOREKILL12 = "Me alegro de que se haya terminado."; -SWWM_SUBS_LEGACY_SCOREKILL13 = "Bueno, se acabó. Ya está."; -SWWM_SUBS_LEGACY_SCOREKILL14 = "Hecho."; -SWWM_SUBS_LEGACY_SCOREKILL15 = "Piérdete."; -SWWM_SUBS_LEGACY_SCOREKILL16 = "¿Eso es todo?"; -SWWM_SUBS_LEGACY_SCOREKILL17 = "¿Eso es lo mejor que puedes hacer?"; -SWWM_SUBS_LEGACY_SCOREKILL18 = "Molestas."; -SWWM_SUBS_LEGACY_SCOREKILL19 = "Vas a tener que esforzarte más."; -SWWM_SUBS_LEGACY_SCOREKILL20 = "¿Que? ¿Ya está?"; -SWWM_SUBS_LEGACY_SCOREKILL21 = "Fuera de aquí."; -SWWM_SUBS_LEGACY_SCOREKILL22 = "Un placer."; -SWWM_SUBS_LEGACY_SCOREKILL23 = "Fuera de mi camino."; -SWWM_SUBS_LEGACY_SCOREKILL24 = "Quita de en medio."; -SWWM_SUBS_LEGACY_SCOREKILL25 = "¿Quieres más?"; -SWWM_SUBS_LEGACY_SCOREKILL26 = "Hecho y hecho."; -// oopsies -SWWM_SUBS_LEGACY_FRIENDKILL1 = "Oh dios mío."; -SWWM_SUBS_LEGACY_FRIENDKILL2 = "Dios mío. Lo siento mucho."; -SWWM_SUBS_LEGACY_FRIENDKILL3 = "Oh dios..."; -SWWM_SUBS_LEGACY_FRIENDKILL4 = "Oh dios mío. ¿Estás bien?"; -// getting hurt by monsters -SWWM_SUBS_LEGACY_GETHIT1 = "Pues vale..."; -SWWM_SUBS_LEGACY_GETHIT2 = "*suspiro*"; -SWWM_SUBS_LEGACY_GETHIT4 = "Perra."; -SWWM_SUBS_LEGACY_GETHIT5 = "Capullo..."; -SWWM_SUBS_LEGACY_GETHIT6 = "Molestas."; -SWWM_SUBS_LEGACY_GETHIT7 = "Que te den."; -SWWM_SUBS_LEGACY_GETHIT8 = "Tienes toda mi atención."; -SWWM_SUBS_LEGACY_GETHIT9 = "Voy a acabar con esto ahora mismo."; -SWWM_SUBS_LEGACY_GETHIT10 = "Mira que eres cansino."; -SWWM_SUBS_LEGACY_GETHIT11 = "Eso no ha valido."; -SWWM_SUBS_LEGACY_GETHIT12 = "¿En serio?"; -SWWM_SUBS_LEGACY_GETHIT13 = "Vas a tener que esforzarte más."; -SWWM_SUBS_LEGACY_GETHIT14 = "Fuera de aquí."; -SWWM_SUBS_LEGACY_GETHIT15 = "Y ahora es tu turno."; -SWWM_SUBS_LEGACY_GETHIT16 = "Hora de hacerte callar de una vez por todas."; -SWWM_SUBS_LEGACY_GETHIT17 = "No vas a salir de aquí de una pieza."; -SWWM_SUBS_LEGACY_GETHIT18 = "Parece que estás enfadado..."; -SWWM_SUBS_LEGACY_GETHIT19 = "Ugh. Déjame en paz."; -// getting hurt by friendlies -SWWM_SUBS_LEGACY_FRIENDHIT1 = "¿Te has enfadado conmigo?"; -SWWM_SUBS_LEGACY_FRIENDHIT2 = "¿En serio?"; -SWWM_SUBS_LEGACY_FRIENDHIT3 = "¿Que? ¿Por que?"; -SWWM_SUBS_LEGACY_FRIENDHIT4 = "Eso no ha sido muy educado."; -SWWM_SUBS_LEGACY_FRIENDHIT5 = "Perdona, ¿que?"; -SWWM_SUBS_LEGACY_FRIENDHIT6 = "No eres muy amigable, ¿verdad?"; -SWWM_SUBS_LEGACY_FRIENDHIT7 = "Eh, eh. Tranquilidad."; -// hurting a friendly -SWWM_SUBS_LEGACY_HITFRIEND1 = "Lo... siento."; -SWWM_SUBS_LEGACY_HITFRIEND2 = "Lo siento."; -SWWM_SUBS_LEGACY_HITFRIEND3 = "Perdón."; -// greeting another player -SWWM_SUBS_LEGACY_GREET1 = "Hola."; -SWWM_SUBS_LEGACY_GREET2 = "Hola que tal."; -SWWM_SUBS_LEGACY_GREET3 = "Ey."; -SWWM_SUBS_LEGACY_GREET4 = "Ey."; -SWWM_SUBS_LEGACY_GREET5 = "Ey."; -SWWM_SUBS_LEGACY_GREET6 = "Ey hola."; -SWWM_SUBS_LEGACY_GREET7 = "Buenas."; -// ragekit -SWWM_SUBS_LEGACY_RAGEKIT1 = "¡¡¡¡¡AAAAAAAAAAAAAAAAAAAAAA!!!!!"; -SWWM_SUBS_LEGACY_RAGEKIT2 = "¡¡¡JODEEEEEEEEERRRRRRRRRRR!!!"; -SWWM_SUBS_LEGACY_RAGEKIT3 = "¡¡JODERJODERJODERR!!"; -SWWM_SUBS_LEGACY_RAGEKIT4 = "¡¡¡¡AAAAAAAAAARGH!!!!"; -SWWM_SUBS_LEGACY_RAGEKIT5 = "¡¡¡¡MATARRRRRRR!!!!"; -SWWM_SUBS_LEGACY_RAGEKIT6 = "¡¡¡RAAAARGH!!! ¡¡¡VENGAAAA!!!"; -// --- comebacks for korax hub lines --- -// "Greetings mortal, are you ready to die?" -SWWM_SUBS_LEGACY_KORAXGREET1 = "Oh vaya. Ya está. Yo me largo."; -SWWM_SUBS_LEGACY_KORAXGREET2 = "Bien... todo muy bien."; -SWWM_SUBS_LEGACY_KORAXGREET3 = "No quiero lo que sea que me estés vendiendo."; -SWWM_SUBS_LEGACY_KORAXGREET4 = "La verdad... no eres mi tipo."; -SWWM_SUBS_LEGACY_KORAXGREET5 = "La primera palabra que tengo en mente es 'feo'."; -SWWM_SUBS_LEGACY_KORAXGREET6 = "Pareces como algo que quedó en la nevera demasiado tiempo."; -SWWM_SUBS_LEGACY_KORAXGREET7 = "Veo que venir aquí fue un error."; -SWWM_SUBS_LEGACY_KORAXGREET8 = "Me incomoda que me miren tan de cerca."; -SWWM_SUBS_LEGACY_KORAXGREET9 = "Buena actitud..."; -SWWM_SUBS_LEGACY_KORAXGREET10 = "Te podría preguntar lo mismo."; -SWWM_SUBS_LEGACY_KORAXGREET11 = "Te iba a preguntar lo mismo."; -SWWM_SUBS_LEGACY_KORAXGREET12 = "Solo busco la mayonesa. A lo mejor me la puedes dar. Segundo estante, justo al lado del flan."; -SWWM_SUBS_LEGACY_KORAXGREET13 = "Vengo a recoger un pedido. Dos de peperoni grandes y un calzone. A nombre de 'Jódete'."; -// "My servants can smell your blood, human" -SWWM_SUBS_LEGACY_KORAXBLOOD1 = "Pervertido."; -SWWM_SUBS_LEGACY_KORAXBLOOD2 = "Interesante saberlo."; -SWWM_SUBS_LEGACY_KORAXBLOOD3 = "Lo que tú digas."; -SWWM_SUBS_LEGACY_KORAXBLOOD4 = "Pues no creo yo."; -SWWM_SUBS_LEGACY_KORAXBLOOD5 = "Um... sí... no lo creo..."; -SWWM_SUBS_LEGACY_KORAXBLOOD6 = "Si tú lo dices."; -SWWM_SUBS_LEGACY_KORAXBLOOD7 = "Me da igual."; -SWWM_SUBS_LEGACY_KORAXBLOOD8 = "Lo que sea. Tampoco es que me importe."; -SWWM_SUBS_LEGACY_KORAXBLOOD9 = "Me importa un cagao."; -SWWM_SUBS_LEGACY_KORAXBLOOD10 = "Como si me importara una mierda..."; -SWWM_SUBS_LEGACY_KORAXBLOOD11 = "Creo que me confundes con alguien a quien le importara una mierda."; -SWWM_SUBS_LEGACY_KORAXBLOOD12 = "No estoy tan segura de eso."; -SWWM_SUBS_LEGACY_KORAXBLOOD13 = "Cállate ya."; -// "You have played this game too long, mortal, I think I shall remove you from the board" -SWWM_SUBS_LEGACY_KORAXGAME1 = "Me da lo mismo."; -SWWM_SUBS_LEGACY_KORAXGAME2 = "Vete a tomar por culo."; -SWWM_SUBS_LEGACY_KORAXGAME3 = "Oh, vete a tomar por saco."; -SWWM_SUBS_LEGACY_KORAXGAME4 = "No va a pasar."; -SWWM_SUBS_LEGACY_KORAXGAME5 = "Tus amenazas no me asustan."; -SWWM_SUBS_LEGACY_KORAXGAME6 = "Y una porra."; -SWWM_SUBS_LEGACY_KORAXGAME7 = "No me gusta que me amenacen."; -SWWM_SUBS_LEGACY_KORAXGAME8 = "¿Algo más que tenga que saber?"; -SWWM_SUBS_LEGACY_KORAXGAME9 = "Cállate..."; -SWWM_SUBS_LEGACY_KORAXGAME10 = "Nadie me habla así. Que te zurzan."; -SWWM_SUBS_LEGACY_KORAXGAME11 = "No hablarás cuando estés muerto."; -SWWM_SUBS_LEGACY_KORAXGAME12 = "Me gustaría verte intentarlo."; -SWWM_SUBS_LEGACY_KORAXGAME13 = "Oh, inténtalo."; -SWWM_SUBS_LEGACY_KORAXGAME14 = "No sé de que me hablas, y no me importa."; -// "Worship me and I may be yet merciful, then again, maybe not" -SWWM_SUBS_LEGACY_KORAXWORSHIP1 = "¿Que?"; -SWWM_SUBS_LEGACY_KORAXWORSHIP2 = "Menudo idiota..."; -SWWM_SUBS_LEGACY_KORAXWORSHIP3 = "Capullo presumido..."; -SWWM_SUBS_LEGACY_KORAXWORSHIP4 = "Parece que a alguien se le ha inflado el ego."; -SWWM_SUBS_LEGACY_KORAXWORSHIP5 = "Tan ensimismado..."; -SWWM_SUBS_LEGACY_KORAXWORSHIP6 = "Ya he oído bastantes chorradas tuyas."; -SWWM_SUBS_LEGACY_KORAXWORSHIP7 = "Bla, bla, bla..."; -SWWM_SUBS_LEGACY_KORAXWORSHIP8 = "¿Que? No te oigo con este zumbido en mis oidos."; -SWWM_SUBS_LEGACY_KORAXWORSHIP9 = "Debes de pensar que soy idiota."; -SWWM_SUBS_LEGACY_KORAXWORSHIP10 = "¿Te parezco idiota?"; -SWWM_SUBS_LEGACY_KORAXWORSHIP11 = "Tienes una opinión bastante elevada de ti mismo."; -// "Are you strong enough to face your own masters?" -SWWM_SUBS_LEGACY_KORAXMASTERS1 = "¿Podemos ir aligerando? Tengo sitios a los que ir."; -SWWM_SUBS_LEGACY_KORAXMASTERS2 = "No me gusta que la gente me diga lo que tengo que hacer."; -SWWM_SUBS_LEGACY_KORAXMASTERS3 = "Uh... sí, eso es."; -SWWM_SUBS_LEGACY_KORAXMASTERS4 = "Supongo que no tengo nada mejor que hacer."; -SWWM_SUBS_LEGACY_KORAXMASTERS5 = "Me estoy preguntando lo mismo."; -SWWM_SUBS_LEGACY_KORAXMASTERS6 = "No es asunto tuyo."; -SWWM_SUBS_LEGACY_KORAXMASTERS7 = "Sí, lo soy."; -SWWM_SUBS_LEGACY_KORAXMASTERS8 = "Eso no es asunto tuyo."; -SWWM_SUBS_LEGACY_KORAXMASTERS9 = "Por favor cállate ya..."; +/// Special kill messages (rare) +// Buttslam +SWWM_SUBS_DEFAULT_ASSKILL1 = "¡Es hora del CULO!"; +SWWM_SUBS_DEFAULT_ASSKILL2 = "¡Masacrando con las nalgas!"; +SWWM_SUBS_DEFAULT_ASSKILL3 = "Muy bien, ¿Quien quiere comer CULO?"; +// Lead ball crit +SWWM_SUBS_DEFAULT_BALLSKILL1 = "¡Peligrosa Acción de Pelotas!"; +SWWM_SUBS_DEFAULT_BALLSKILL2 = "¡Cuidado al jugar con vuestras pelotas, chavales!"; +// Explosion kill +SWWM_SUBS_DEFAULT_BLAST1 = "¡Bang!"; +SWWM_SUBS_DEFAULT_BLAST2 = "¡Bangabangbangbang!"; +SWWM_SUBS_DEFAULT_BLAST3 = "¡Píu!"; +SWWM_SUBS_DEFAULT_BLAST4 = "¡Bum!"; +SWWM_SUBS_DEFAULT_BLAST5 = "¡Kapow!"; +SWWM_SUBS_DEFAULT_BLAST6 = "Kabúm."; +// Sheen HMG kill +SWWM_SUBS_DEFAULT_SHEENKILL2 = "¡Llora un poco más!"; +// Wall busting +// Cyberdemon killed by parrying +SWWM_SUBS_DEFAULT_CYBULLY = "Solo estoy haciendo un poco de cyberbullying..."; +// Cacodemon petting +SWWM_SUBS_DEFAULT_PETCACO1 = "¡Caco!"; +SWWM_SUBS_DEFAULT_PETCACO2 = "¿Quien es un buen cacodemonio?"; +SWWM_SUBS_DEFAULT_PETCACO3 = "Albondiguilla~"; +// (rare) skull key pickup gesture +SWWM_SUBS_DEFAULT_SKULLGET = "Ay, pobre Yorick. Yo le conocía, Horacio."; +// Grilled Cheese Sandwich eating +SWWM_SUBS_DEFAULT_EAT1 = "Ñam ñam ñam... Ñam ñam..."; +SWWM_SUBS_DEFAULT_EAT2 = "*comiendo*"; +SWWM_SUBS_DEFAULT_EAT4 = "¡Mmmm! ¡Rico!"; +SWWM_SUBS_DEFAULT_EAT5 = "¡Mi favorito!"; +// Hurtfloor damage (currently unused) +SWWM_SUBS_DEFAULT_HURTFLOOR2 = "Buf uf..."; +SWWM_SUBS_DEFAULT_HURTFLOOR3 = "Uuuu uuu... Aaa aaaa ooo..."; +SWWM_SUBS_DEFAULT_HURTFLOOR4 = "Uuu aa aaaa... Ooo..."; +SWWM_SUBS_DEFAULT_HURTFLOOR5 = "Quema..."; +// Map Start but only for nuts +SWWM_SUBS_DEFAULT_NUTSTART = "Oh, nueces..."; +// Rare Sheen HMG pickup +SWWM_SUBS_DEFAULT_SHEENSPECIAL = "¡Heavy Mah-Sheen Gun!"; +// Mortal Rifle touchscreen +SWWM_SUBS_DEFAULT_MRTOUCH1 = "Bip."; +SWWM_SUBS_DEFAULT_MRTOUCH2 = "Blip."; +SWWM_SUBS_DEFAULT_MRTOUCH3 = "Blap."; +SWWM_SUBS_DEFAULT_MRTOUCH4 = "Bup."; +// Mortal Rifle finger flick +SWWM_SUBS_DEFAULT_MRFLICK1 = "Clic."; +SWWM_SUBS_DEFAULT_MRFLICK2 = "Clac."; +// Mirror interaction +SWWM_SUBS_DEFAULT_MIRROR1 = "¿Quien es ese robot tan guapo? ¡Oh! Soy yo~"; +SWWM_SUBS_DEFAULT_MIRROR2 = "Que vien me veo..."; +SWWM_SUBS_DEFAULT_MIRROR3 = "¿Este chasis me hace el culo gordo?"; +SWWM_SUBS_DEFAULT_MIRROR4 = "Soy yo, ¡Demo-chan!"; +SWWM_SUBS_DEFAULT_MIRROR5 = "Me veo bien bonita hoy."; +SWWM_SUBS_DEFAULT_MIRROR6 = "Hmmm... A mi cuerpo le vendría bien un buen abrillantado."; +SWWM_SUBS_DEFAULT_MIRROR7 = "Es un espejo."; +SWWM_SUBS_DEFAULT_MIRROR8 = "Todo bien reflejado, tal como me gusta."; +SWWM_SUBS_DEFAULT_MIRROR9 = "En serio debería intentar no romper esto."; +SWWM_SUBS_DEFAULT_MIRROR10 = "La verdad es que me gusta mirarme... Tampoco es que sea algo malo o tal."; +// Kiss hit +SWWM_SUBS_DEFAULT_SMOOCH1 = "Besitos~"; +// Sunlust MAP29 +SWWM_SUBS_DEFAULT_LUSTYSUNS = "Espera... ¿Que ponía ahí?"; +// Invinciball use (no more Sundowner voiceclip) +SWWM_SUBS_DEFAULT_INVINCIBALL1 = "¡Soy puñeteramente invencible!"; diff --git a/language.hdoomcompat b/language.hdoomcompat deleted file mode 100644 index 82078861c..000000000 --- a/language.hdoomcompat +++ /dev/null @@ -1,11 +0,0 @@ -[enu default] -VNS_BATHORY_STRING_ENTRY_3 = "Demo-chan"; -VNS_BATHORY_STRING_ENTRY_4 = "Of course I do, miss."; -VNS_BATHORY_STRING_ENTRY_5 = "I'm not equipped for that kind of thing, though.\nBut I do know how to use my fingers well."; -VNS_CERBERA_STRING_ENTRY_2 = "Erm, excuse me... \nMister... miss... robot?"; -VNS_CERBERA_STRING_ENTRY_3 = "Demo-chan"; -VNS_CERBERA_STRING_ENTRY_4 = "Yes?"; -VNS_CERBERA_STRING_ENTRY_7 = "Well, if it's alright, why not?"; -VNS_CERBERA_STRING_ENTRY_10 = "For a cute girl like you, I'd do anything."; -VNS_CERBERA_STRING_ENTRY_15 = "Ah wait, t-this body isn't equipped for that!"; -VNS_SHOTKUN_STRING_ENTRY_2 = "B-but Demo-senpai, I...\nI-I've never been fired before!"; diff --git a/language.spookcompat b/language.spookcompat deleted file mode 100644 index b2f8b7907..000000000 --- a/language.spookcompat +++ /dev/null @@ -1,7 +0,0 @@ -[enu default] -DEFPNAME = "the one they call \cfDemolitionist\c-"; -BOSSDLG2 = "DO YOU KNOW, MACHINE, WHAT YOU HAVE DONE? THE BARRIERS YOU HAVE DESTROYED WERE NOT OF MY CREATION."; -BEATDLG2 = "Well... if it isn't the little robot that's been \"exploding knees\" among Hell's forces."; -BEATDLG14 = "Here! I'm feeling generous tonight. I know it's not very modern like what you tend to carry around, but it'll do."; -BEATDLG22 = "Not ever in my thousand years as a witch have I seen someone like you! What sort of killer machine are you!?"; -BEATDLG27 = "\cgNO SMALL BOMBS WERE USED IN THE ROKKENJIMA MURDERS\c-"; diff --git a/language.version b/language.version index fe1e18839..e56c86b60 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r203 \cu(Sat 26 Mar 20:40:04 CET 2022)\c-"; -SWWM_SHORTVER="\cw1.2pre r203 \cu(2022-03-26 20:40:04)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1262 \cu(Mon Jun 29 11:36:23 CEST 2026)\c-"; +SWWM_SHORTVER="\cw1.3pre r1262 \cu(2026-06-29 11:36:23)\c-"; diff --git a/lore/default/admun.txt b/lore/default/admun.txt new file mode 100644 index 000000000..d1be1389b --- /dev/null +++ b/lore/default/admun.txt @@ -0,0 +1,39 @@ +TAG +Tachmek-Smith, J.A. +TAB +People +REL +EngineTech;XAnimen;LunaEvent;Nukuri;Nekuratek;Xekke;Kmonn;WhiteScar;Saya +TXT + \cxFull Name:\c- + \cf James Admun Tachmek-Smith\c- + \cxNationality:\c- + \cf Scottish\c- + \cxDate of Birth:\c- + \cf 4673 BC\c- + \cxOccupation:\c- + \cf CEO (Tach-Engine Technology Institute)\c- + + + + +Born in 4673 BC as **Admun Tachmek**, firstborn of the late **Kimun Tachmek**, **James** is the founder and CEO of the **Tach-Engine Technology Institute**, and also an exiled heir to the throne of **Terasana**, a position of leadership currently held by **Seras Tonkebis**, former advisor of his father. + +In 4607 BC, having been sentenced to exile for **"failing to protect the crown of Terasana"**, he was sent to the **Sanais** colony of **Egypt**, where he spent his years performing various types of forced labor under inhumane conditions, unable to die due to a curse of undeath which had been placed on him by Tonkebis as punishment. This ordeal lasted until 783 BC, with the dissolution of the colony through an unspecified deal with the **Yathai Empire**, after which he proceeded to roam the Earth in search of a place he could belong in. + +In 808, after many travels, he eventually settled somewhere in the **British** isles, working as a blacksmith and adopting the alias of **James Smith**. As the years passed, people were somewhat wary due to his immortality, but had no qualms about his services. That is, until 1011, when a shoddy armor fitting job for a local king resulted in his imprisonment. He would not be freed until 1097, long after the king's passing. After this, he moved to **Scotland**, where he's resided since. + +Not much is known of his life up until the foundation of the institute, but he had amassed quite a fortune beforehand through various odd jobs, effectively gathering several human lifetimes worth of money in the process. As stated by the man himself, those were the funds he would use for both the creation of the institute, and all of the various philanthropic enterprises he's regularly involved in to this day. + +Following the **Luna Event** of 2021, he pushed for a partnership with the **Nukuri** tech giant **Nekuratek**, one of many important business deals that would allow this surprisingly non-profit organization to rise in popularity and eventually contribute to turning Scotland into a world superpower. + +During the first commercial dealings with the people of **Xekke** in 2048, he became quite close to the head of the **Kmonn Shuna** company, **Eushura Kmonn Jr.**, with rumors spreading of what kind of relationship the two had. Nevertheless, this resulted in even further advances for not just his organization, but all of humankind. + +Following the **White Scar** incident of 2077, he urged the Scottish government not to sign the treaty to cut contact with the Nukuri, as this would effectively bring economic ruin to the whole nation. Many others followed his example as well, notably **Japan**, who held the strongest ties to the Nukuri, as well as the **Union of African Republics**, whose whole existence had come as a result of their alliance with the alien benefactors. + +\cxSaya's Notes:\c- +\cfThe old man's got quite a backstory, gotta admit, even though the only source for most of this is the man himself. I said it on the article about the institute, and I say it here as well: I totally believe his story.\c- + +\cfHell, even the part where he told me that the god Anubis himself is his uncle from his mother's side.\c- + +\cfNo, seriously. I even saw the photos, jackal head and all (also it's a costume).\c- diff --git a/lore/default/akarilabs.txt b/lore/default/akarilabs.txt index b84b4644d..a32ee7d76 100644 --- a/lore/default/akarilabs.txt +++ b/lore/default/akarilabs.txt @@ -20,7 +20,7 @@ TXT The company was founded in 2010 by **Saya Miyamoto** and **Taro Miyamoto**, beginning its days as a small workshop in their garage. Over time, the rise in popularity of their ingenious inventions led to further expansion, and more people coming in to join them. As of 2148, there are around 170 employees, some coming from quite far away, too. Although the main headquarters are large enough to house most of them, some do work remotely, due to varying circumstances. -Among its many creations, the **Maidbots**, first introduced in 2017, and commercialized five years later, are the most well known. Life-like humanoid assistant robots that can be freely adopted by any household. Each and every unit has their own unique personality and preferences, and despite their robotic appearance, are very much no different from a real person, having the same rights and being subject to the same laws as one. All Maidbots are trained from birth on all sorts of tasks, from common housework to first aid or even self-defense techniques. Although most are adopted to assist with housework and not much else, there have been many cases of customers dating or even marrying them. The labs' official stance on this is that there is "nothing wrong" with such a thing, but one must not forget that despite the fact Maidbots are "fully equipped for intimate acts", they cannot bear children. +Among its many creations, the **Maidbots**, first introduced in 2017, and commercialized five years later, are the most well known. Life-like humanoid assistant robots that can be freely adopted by any household. All Maidbots are trained from birth on all sorts of tasks, from common housework to first aid or even self-defense techniques. Each and every unit has their own unique personality and preferences, and despite their robotic appearance, are very much no different from a real person, having the same rights and being subject to the same laws as one. There have even been cases of people dating or even marrying them, and the labs' official stance on this is that there is "nothing wrong" with such a thing, as "not even the differences of flesh and metal could get in the way of love". During the **2020 Tokyo Olympics**, Saya's own personal Maidbot was appointed to sing the national anthem. Her voice captivated millions, and kickstarted her career as an idol. @@ -45,7 +45,7 @@ TXT The company was founded in 2010 by **Saya Miyamoto** and **Taro Miyamoto**, beginning its days as a small workshop in their garage. Over time, the rise in popularity of their ingenious inventions led to further expansion, and more people coming in to join them. As of 2148, there are around 170 employees, some coming from quite far away, too. Although the main headquarters are large enough to house most of them, some do work remotely, due to varying circumstances. -Among its many creations, the **Maidbots**, first introduced in 2017, are the most well known. Life-like humanoid assistant robots that can be freely adopted by any household. Each and every unit has their own unique personality and preferences, and despite their robotic appearance, are very much no different from a real person, having the same rights and being subject to the same laws as one. All Maidbots are trained from birth on all sorts of tasks, from common housework to first aid or even self-defense techniques. Although most are adopted to assist with housework and not much else, there have been many cases of customers dating or even marrying them. The labs' official stance on this is that there is "nothing wrong" with such a thing, but one must not forget that despite the fact Maidbots are "fully equipped for intimate acts", they cannot bear children. +Among its many creations, the **Maidbots**, first introduced in 2017, are the most well known. Life-like humanoid assistant robots that can be freely adopted by any household. All Maidbots are trained from birth on all sorts of tasks, from common housework to first aid or even self-defense techniques. Each and every unit has their own unique personality and preferences, and despite their robotic appearance, are very much no different from a real person, having the same rights and being subject to the same laws as one. There have even been cases of people dating or even marrying them, and the labs' official stance on this is that there is "nothing wrong" with such a thing, as "not even the differences of flesh and metal could get in the way of love". During the **2020 Tokyo Olympics**, Saya's own personal Maidbot was appointed to sing the national anthem. Her voice captivated millions, and kickstarted her career as an idol. diff --git a/lore/default/alakir.txt b/lore/default/alakir.txt new file mode 100644 index 000000000..c1abe71a2 --- /dev/null +++ b/lore/default/alakir.txt @@ -0,0 +1,39 @@ +TAG +Alakir +TAB +People +REL +Kirin;Saya +TXT + \cxFull Name:\c- + \cf Alakir of Kanaiarkar\c- + \cxTitle:\c- + \cf Representative of Esperkind in Arkai\c- + \cxNationality:\c- + \cf Deadlighter\c- + \cxDate of Birth:\c- + \cf 2031-12-31\c- + \cxOccupation:\c- + \cf Consul (Deadlight Republic)\c- + + +Alakir is the last surviving of the **Ivory Espers**, who once inhabited the flourishing city of **Kanaiarkar** in the west coast of the **Deadlight Republic**. He was the current mayor of the city at the time of the **Sacrosanct Empire of Levlen**'s **First Esper Crusades** (2094), and one of the few who survived the event. + +Following this great massacre, he sought the help of the capital. It was then that he would truly learn how twisted and corrupted the very nation he called home was. Certainly, those in power had been made aware beforehand that the invasion would happen, but they chose not to act. As he had been told, the consequences of fighting back against the Sacrosanct Empire were thought far worse than simply letting it happen. The lives of hundreds of thousands of **Espers** had been deemed expendable in order to remain in good terms with their zealous southern neighbors. + +But, despite all that, he was offered a helping hand. Personal protection, as well as a promise of reconstruction, but at a price, that of his own body. Having no other options to help the other survivors, he accepted. Kanaiarkar and its neighboring settlements would be rebuilt, and survivors would be given food and shelter as needed. In public, the "generosity" of the Republic would be praised far and wide, while in private, payment would be regularly "collected" by various high ranking politicians, who would then fill their own pockets in the black market selling the unique blood of the only remaining Ivory Esper in existence. + +During his stay in the capital, he had a chance meeting with a young man who was visiting for diplomatic reasons: **Kirin Xanai**, the leader of the northern **Sykhai Empire**. Alakir could easily notice that this young man had a completely different air to him than all the other political figures he was acquainted with. Their time together did not last long, however, as he soon had to return to his newly reconstructed hometown. + +While redoing his life, trying to leave the past behind, he was approached by a woman, **Rena**, who had heard of his story and greatly admired him. The two would eventually marry, although this union wouldn't last long. Months later, she would be recruited into the ranks of the **Levlen Inquisitors** through her family's influence, and forced to leave him. + +Things wouldn't stop there, as a second attack on the city happened. However, the invaders were repelled, not by the armies of the Republic, but by warriors from the Sykhai Empire, with Kirin himself at the lead. As it had turned out, Kirin had investigated the situation during his stay in the capital, and chose to keep close watch on the Esper communities should anything happen. Despite having been warned that this action would only increase the hostility the Sacrosanct Empire harbored towards them, he pushed back against the invaders. Aware of the Republic's negligence, the young emperor arranged for a full evacuation of all survivors, giving them all a temporary home in Akkou, and also for Alakir to take on the position of consul within. + +Following Kirin's wedding with **Saya Miyamoto** in 2171, she took notice of the fact that the two clearly had feelings for each other, and urged them to confess. Since then, Kirin and Alakir are dating, with plans for a future marriage once various arrangements are made. + +\cxSaya's Notes:\c- +\cfI'm sure you're as disgusted reading this as Taro-nii and I were writing it. Fuck's sake, what all those pigs did to him... The scars they left...\c- + +\cfOh yeah, I heard from Kirin-kun that they've been in talks with the royal family as part of those "arrangements" (yeah, the so-called "Republic" is actually a monarchy), and not only does it turn out that they weren't aware of the stuff that happened, but they're absolutely horrified by it. Something tells me that all of those bastards' heads will roll. Hopefully, we can then celebrate by pissing on their graves afterwards.\c- + +\cfThat aside, bless Kirin-kun for being his goddamn savior, seriously. Alakir-kun's life has been so full of shit... And it's all because of him that he's still alive to this day. God, if I already had plenty of reasons to love him, this one's the cherry on top.\c- diff --git a/lore/default/archdemons.txt b/lore/default/archdemons.txt new file mode 100644 index 000000000..ba5647fc5 --- /dev/null +++ b/lore/default/archdemons.txt @@ -0,0 +1,132 @@ +TAG +Archdemons +TAB +Lore +REL +UAC;Hell;DemonInvasion;Cytho;Saya +TXT +\cxName:\c- +\cf Archdemons\c- +\cxClassification:\c- +\cf Demon Elite\c- +\cxLocation:\c- +\cf Hell\c- + +When a member of **Demonkind** attains a very high status, be it through longevity and/or power, they earn the designation of **Archdemon**. Accounting for less than 0.01% of the population, the members of this "elite" class tend to hold important positions within the realm. The most well-known among them are the Archdemon generals, who lead **Hell**'s military forces. Other figures of renown include the various archlords, former leaders of outer realms who once followed **Father Nostros**. + +Due to current circumstances, the Archdemon generals have garnered quite a lot of attention, having usurped the throne of Hell with grand marshall **Erebus Arthamuz**, son of the late **Archlord Thamuz**, now ruling over the realm with an iron fist. Under this new ruling, and with the former royal family exiled, Hell has entered a new age of war and conquest, bolstered by various advances in the mass production of military units through genetic engineering and industrial-scale breeding. + +Much is to be said of each individual general, although for the sake of keeping this article concise, a summary will follow: + +\cfErebus Arthamuz:\c- Marshall of Hell's legions. Grand conqueror of the mountain that bears his name and former celebrity turned military leader. There are many who criticize his skills, but he is quick to silence any opposition. Together with his late father, they constructed the **Spire of Dis** at the heart of the capital, of which he additionally holds the position of keeper. + +\cfThaar Adarion:\c- Self-identified "finest warrior of Hell", though not without merit. Serves as the bodyguard of general Erebus, always by his side. There are rumors that he is romantically interested in him due to how close the two are. + +\cfTaeron Yraisamal:\c- Official propagandist and recruiter of Hell's military. Favored by the other generals as, despite his disinterest in the worship of the **Tyrant**, he shows a deep disdain for the royal family and its roots. + +\cfKaume Irishtanar:\c- Baron of **House Irishtanar** and leader of the espionage forces, himself dedicated to keeping an eye on the exiled royal family. Known for leading the assassination of the rival **House Valathor**, of which only one member has survived. + +\cfVera Akerastora:\c- Overseer of the spawning grounds. Despite many well-known cannibalism scandals, he has held on to his position, and offers his services as breeder of military units in exchange for "taking a cut" of the production. + +\cfGyeran Rashaz:\c- Wife of general Erebus, herself also holding a position of general despite lacking any ability for the job. She oversees any movements in and out of the capital, as holder of the keys to the city. + +\cfUrthura Vexamal:\c- Main guard of the outer cities. As follower of an ancient deity known as the **Hand of Hate**, her cruelty is said to be without match, those settled near the capital living in fear of her wrath. + +\cfDestora Arathon:\c- A so-called "blood dancer" who serves as the main trainer of the military forces, and is also worshipped as an idol by many a noble. She is responsible for the deployment of units both within and outside the realm. + +\cfBerias Ysharan:\c- One of the leading slavers in Hell, responsible for keeping the populace under submission. Deemed a traitor to his own kind for his involvement in the forced recruitment of civilians for various purposes. + +\cfAkedas Aximal:\c- Personal advisor of general Erebus and former Archlord. A twisted sorcerer rivaled only by **Matriarch Lilith** herself, and one of the first demons to be born on **Earth**. Aximal has witnessed not just the birth of his own kind, but also that of the realm of Hell itself, and most say that such experiences have left him deeply jaded. + +As of the time of writing, all the generals are actively involved in the invasion of Earth (see **Demon Invasion** article for more details). + +\cxSaya's Notes:\c- +\cfThe fat bastard and friends. We got the names of all of them, so once you're done with this first mission, you can guess who the next targets are. Man, if we didn't have to keep this one short, we would have gone into detail about ALL of the shit they have done. These fuckers need a serious ass-whooping, seriously. Especially that Kaume dude, he's the fucker who murdered Cytho-sama's family and burned down his entire hometown. Boy, when we were getting documented for this he had A LOT to say about him. I may have learned some swears in Kuristema in the process, which is handy, that way I know what to call these fuckers to their own faces.\c- + +\cfAnyway, some archdemons are nice, unlike this lot. I mean, I haven't met any of them directly, but the few demons I know speak highly of them. Cytho-sama especially brings up the lady that sits at the top of his old business, though he's a bit disappointed in her for not fighting back, because apparently, if all of his old colleagues joined forces, they could completely outclass the entire military in power (holy shit).\c- +TXT +\cxName:\c- +\cf Archdemons\c- +\cxClassification:\c- +\cf Demon Elite\c- +\cxLocation:\c- +\cf Hell\c- + +When a member of **Demonkind** attains a very high status, be it through longevity and/or power, they earn the designation of **Archdemon**. Accounting for less than 0.01% of the population, the members of this "elite" class tend to hold important positions within the realm. The most well-known among them are the Archdemon generals, who lead **Hell**'s military forces. Other figures of renown include the various archlords, former leaders of outer realms who once followed **Father Nostros**. + +Due to current circumstances, the Archdemon generals have garnered quite a lot of attention, having usurped the throne of Hell with grand marshall **Erebus Arthamuz**, son of the late **Archlord Thamuz**, now ruling over the realm with an iron fist. Under this new ruling, and with the former royal family exiled, Hell has entered a new age of war and conquest, bolstered by various advances in the mass production of military units through genetic engineering and industrial-scale breeding. + +Much is to be said of each individual general, although for the sake of keeping this article concise, a summary will follow: + +\cfErebus Arthamuz:\c- Marshall of Hell's legions. Grand conqueror of the mountain that bears his name and former celebrity turned military leader. There are many who criticize his skills, but he is quick to silence any opposition. Together with his late father, they constructed the **Spire of Dis** at the heart of the capital, of which he additionally holds the position of keeper. + +\cfThaar Adarion:\c- Self-identified "finest warrior of Hell", though not without merit. Serves as the bodyguard of general Erebus, always by his side. There are rumors that he is romantically interested in him due to how close the two are. + +\cfTaeron Yraisamal:\c- Official propagandist and recruiter of Hell's military. Favored by the other generals as, despite his disinterest in the worship of the **Tyrant**, he shows a deep disdain for the royal family and its roots. + +\cfKaume Irishtanar:\c- Baron of **House Irishtanar** and leader of the espionage forces, himself dedicated to keeping an eye on the exiled royal family. Known for leading the assassination of the rival **House Valathor**, of which only one member has survived. + +\cfVera Akerastora:\c- Overseer of the spawning grounds. Despite many well-known cannibalism scandals, he has held on to his position, and offers his services as breeder of military units in exchange for "taking a cut" of the production. + +\cfGyeran Rashaz:\c- Wife of general Erebus, herself also holding a position of general despite lacking any ability for the job. She oversees any movements in and out of the capital, as holder of the keys to the city. + +\cfUrthura Vexamal:\c- Main guard of the outer cities. As follower of an ancient deity known as the **Hand of Hate**, her cruelty is said to be without match, those settled near the capital living in fear of her wrath. + +\cfDestora Arathon:\c- A so-called "blood dancer" who serves as the main trainer of the military forces, and is also worshipped as an idol by many a noble. Also responsible for the deployment of units both within and outside the realm. + +\cfBerias Ysharan:\c- One of the leading slavers in Hell, responsible for keeping the populace under submission. Deemed a traitor to his own kind for his involvement in the forced recruitment of civilians for various purposes. + +\cfAkedas Aximal:\c- Personal advisor of general Erebus and former Archlord. A twisted sorcerer rivaled only by **Matriarch Lilith** herself, and one of the first demons to be born on **Earth**. Aximal has witnessed not just the birth of his own kind, but also that of the realm of Hell itself, and most say that such experiences have left him deeply jaded. + +Following the disastrous first campaign on Earth (see **Demon Invasion** article), as well as other lesser skirmishes, the generals have been shuffling to maintain their armies under control despite the initial loss of their commander. + +\cxSaya's Notes:\c- +\cfThe fat bastard and friends. We got the names of all of them, so once you're done with this first mission, you can guess who the next targets are. Man, if we didn't have to keep this one short, we would have gone into detail about ALL of the shit they have done. These fuckers need a serious ass-whooping, seriously. Especially that Kaume dude, he's the fucker who murdered Cytho-sama's family and burned down his entire hometown. Boy, when we were getting documented for this he had A LOT to say about him. I may have learned some swears in Kuristema in the process, which is handy, that way I know what to call these fuckers to their own faces.\c- + +\cfAnyway, some archdemons are nice, unlike this lot. I mean, I haven't met any of them directly, but the few demons I know speak highly of them. Cytho-sama especially brings up the lady that sits at the top of his old business, though he's a bit disappointed in her for not fighting back, because apparently, if all of his old colleagues joined forces, they could completely outclass the entire military in power (holy shit).\c- + +\cfUpdate: They're fucked, all of them. They may keep trying to act like they haven't been totally owned, but they're totally fucking grasping here. Maybe they think they can form some hasty alliances with some alien bastards, but that only shows how desperate they are. I am 100% betting they'll have their asses betrayed.\c- +TXT +\cxName:\c- +\cf Archdemons\c- +\cxClassification:\c- +\cf Demon Elite\c- +\cxLocation:\c- +\cf Hell\c- + +When a member of **Demonkind** attains a very high status, be it through longevity and/or power, they earn the designation of **Archdemon**. Accounting for less than 0.01% of the population, the members of this "elite" class tend to hold important positions within the realm. The most well-known among them were the Archdemon generals, who once led **Hell**'s military forces. Other figures of renown include the various archlords, former leaders of outer realms who once followed **Father Nostros**. + +The former Archdemon generals garnered quite a lot of attention, having usurped the throne of Hell with grand marshall **Erebus Arthamuz**, son of the late **Archlord Thamuz**, then ruling over the realm with an iron fist. Under their ruling, with the royal family exiled at the time, Hell entered an age of war and conquest, bolstered by various advances in the mass production of military units through genetic engineering and industrial-scale breeding. Despite all their efforts, however, their time in control of the realm was cut short following their attempt to conquer **Earth**, and the resistance they encountered. + +Much is to be said of each individual general, although for the sake of keeping this article concise, a summary will follow: + +\cfErebus Arthamuz:\c- Former marshall of Hell's legions. Grand conqueror of the mountain that bears his name and former celebrity turned military leader. There are many who criticized his skills, but he was quick to silence any opposition. Together with his late father, they constructed the **Spire of Dis** at the heart of the capital, of which he held the position of keeper. Under the restored ruling, he is to be succeeded by **Astaroth**, granddaughter of **King Akusei**. + +\cfThaar Adarion:\c- Once self-identified "finest warrior of Hell", though not without merit. Served as the bodyguard of general Erebus, always by his side. There were rumors that he was romantically interested in him due to how close the two were. His loyalty did waver once he faced an enemy stronger than him, however. + +\cfTaeron Yraisamal:\c- Former propagandist and recruiter of Hell's military. Favored by the other generals as, despite his disinterest in the worship of the **Tyrant**, he showed a deep disdain for the royal family and its roots. + +\cfKaume Irishtanar:\c- Baron of **House Irishtanar** and former leader of the espionage forces, himself dedicated to keeping an eye on the exiled royal family. Known for leading the assassination of the rival **House Valathor**, of which only one member has survived. + +\cfVera Akerastora:\c- Former overseer of the now dismantled spawning grounds. Despite many well-known cannibalism scandals, he had held on to his position, offering his services as breeder of military units in exchange for "taking a cut" of the production. + +\cfGyeran Rashaz:\c- Late wife of general Erebus, herself also having held a position of general despite lacking any ability for the job. She oversaw any movements in and out of the capital, as holder of the keys to the city. + +\cfUrthura Vexamal:\c- Former main guard of the outer cities. As follower of an ancient deity known as the **Hand of Hate**, her cruelty is said to have been without match, those settled near the capital having lived in fear of her wrath until her defeat. + +\cfDestora Arathon:\c- A so-called "blood dancer" who served as the main trainer of the military forces, and was once also worshipped as an idol by many a noble. She was responsible for the deployment of units both within and outside the realm. + +\cfBerias Ysharan:\c- Once one of the leading slavers in Hell, responsible for having kept the populace under submission. Deemed a traitor to his own kind for his involvement in the forced recruitment of civilians for various purposes. + +\cfAkedas Aximal:\c- Former personal advisor of general Erebus and now only remaining general still holding power over the realm after regaining his position of Archlord. A twisted sorcerer rivaled only by **Matriarch Lilith** herself, and one of the first demons to be born on Earth. Aximal has witnessed not just the birth of his own kind, but also that of the realm of Hell itself, and most say that such experiences have left him deeply jaded. + +Following the disastrous first campaign on Earth (see **Demon Invasion** article), as well as other lesser skirmishes, the generals shuffled to maintain their armies under control despite the initial loss of their commander. In 2165, following many other losses, including that of a newly recruited commander, with all their armies in disarray, the generals made their last stand, only to be assassinated one by one, with the exception of Akedas Aximal, who managed to flee, and still controls the realm from the shadows. + +\cxSaya's Notes:\c- +\cfThe fat bastard and friends. We got the names of all of them, so once you're done with this first mission, you can guess who the next targets are. Man, if we didn't have to keep this one short, we would have gone into detail about ALL of the shit they have done. These fuckers need a serious ass-whooping, seriously. Especially that Kaume dude, he's the fucker who murdered Cytho-sama's family and burned down his entire hometown. Boy, when we were getting documented for this he had A LOT to say about him. I may have learned some swears in Kuristema in the process, which is handy, that way I know what to call these fuckers to their own faces.\c- + +\cfAnyway, some archdemons are nice, unlike this lot. I mean, I haven't met any of them directly, but the few demons I know speak highly of them. Cytho-sama especially brings up the lady that sits at the top of his old business, though he's a bit disappointed in her for not fighting back, because apparently, if all of his old colleagues joined forces, they could completely outclass the entire military in power (holy shit).\c- + +\cfUpdate: They're fucked, all of them. They may keep trying to act like they haven't been totally owned, but they're totally fucking grasping here. Maybe they think they can form some hasty alliances with some alien bastards, but that only shows how desperate they are. I am 100% betting they'll have their asses betrayed.\c- + +\cfUpdate 2: Hooooooooooooly shit they got fucked on, oh for sure they did. And that old fart won't last too long either. I say a couple more romps through his home turf and he'll die of a stroke from how much you piss him off. If we can't reach him directly, then that's the best solution we have.\c- diff --git a/lore/default/ashley.txt b/lore/default/ashley.txt index d86b6062c..7d738e1b3 100644 --- a/lore/default/ashley.txt +++ b/lore/default/ashley.txt @@ -34,10 +34,10 @@ Months after her breakup, during a concert in Japan, Ashley met **Yui Miyamoto** \cxSaya's Notes:\c- \cfAhhhhhh man... Bless this lesbian, amen.\c- \cg♥\c- -\cfSeriously tho, Ashley-san is just amazing af, I love her music, I love her... everything. And fucking hell I'm SOOOOOOOOOOOOO jealous of Yu-chan, she gets to enjoy those soft witch tiddies anytime she wants, while I have to ask for hugs and sometimes she says no and... fuck. But come on, it's just a hug damn it, I just want to feel the softness™, what's wrong with that?\c- +\cfSeriously tho, Ashley-san is just amazing af, I love her music, I love her... everything. And fucking hell Yu-chan is SOOOOOOOOOOOOO lucky, that she gets to have a cool goth girlfriend who is also a witch and also a cool singer and does really cool furry art and stuff...\c- -\cfAnyway, horniness aside, the other peeps from her band, cool too, really. Good friends with all of them, heck, even the huge one, that Maruku gal. Well, she barely talks and looks a bit scary... but is actually really nice, and one hell of a chuuni. And Mykka... ho boi, all fucking charm. I actually learned most of what I know about gods and stuff from her. She's always happy to talk for hours and hours about "lore", and shows me really cool things she can do with her powers too (she can make candy appear out of nowhere, good shit).\c- +\cfAnyway, the other peeps from her band, cool too, really. Good friends with all of them, heck, even the huge one, that Maruku gal. Well, she barely talks and looks a bit scary... but is actually really nice, and one hell of a chuuni. And Mykka... ho boi, all fucking charm. I actually learned most of what I know about gods and stuff from her. She's always happy to talk for hours and hours about "lore", and shows me really cool things she can do with her powers too (she can make candy appear out of nowhere, good shit).\c- -\cfAnd last, in the case of Py, the smol pink girl... We're kinda maybe not really in very good terms because of some dumb comments I made which I honestly regret. Look, in my defense, I had no idea and I'm really REALLY blunt with the shit I say sometimes, I can't help it. And yes, sometimes I may casually ask someone who I find hot to "send nudes" or whatever but... ah, damn it all.\c- +\cfAnd last, in the case of Py, the smol pink girl... I expected her to be all cuteness but she's totally a badass. I hear she's even stronger than her boyfriend, which is crazy considering that guy has been in two world wars. Like... I saw this one thing she did where she grappled him and the guy just took it and... ... I think he liked it? Welp...\c- -\cfYes, I'm in her list of "undesirables who have asked for dick pics".\c- +\cfYeah, Ashley-san and her friends are pretty cool.\c- diff --git a/lore/default/ballsbomb.txt b/lore/default/ballsbomb.txt new file mode 100644 index 000000000..5e78c46f3 --- /dev/null +++ b/lore/default/ballsbomb.txt @@ -0,0 +1,22 @@ +TAG +Ballsy Bomb +TAB +Item +REL +NosKora;Saya +TXT +\cxDesignation:\c- +\cf Ballsy Bomb\c- +\cxManufacturer:\c- +\cf Plutoni Incorporated\c- +\cxClassification:\c- +\cf Cluster Bomb\c- + +The **Ballsy Bomb** is a special device designed for one thing and one thing only: The delivery of death. Devised by students of the **University of Nos-Kora**, and featuring technology that is not quite understandable by the untrained mind, this explosive artifact is a must-have for those who want to let their enemies experience what it's like to be pelted by dozens of solid, high-velocity metal balls. When interviewed, the project leader simply stated: "You're gonna love our balls". + +**Plutoni Incorporated**, the armament distribution subsidiary of the university, should not be held responsible for any misuse of this device, and must not be questioned regarding any peculiar behavior that the device's payload may have. + +\cxSaya's Notes:\c- +\cf"Peculiar behavior" is one way of putting it. I saw it during a test fire, I saw what one of the balls did to that chunk of ballistic gel: The whole thing EXPLODED while this fucking... Loud cartoon bonk noise could be heard. There was a flash of light and everything. I was told it's something that happens "by random chance"... Good fucking god...\c- + +\cfThose things can deal random crits. I'm not even joking, what the actual hell... No wonder that nerd recommended it to us.\c- diff --git a/lore/default/blackmann.txt b/lore/default/blackmann.txt index 6055c3fa3..1da8f538c 100644 --- a/lore/default/blackmann.txt +++ b/lore/default/blackmann.txt @@ -3,7 +3,7 @@ Blackmann Arms TAB People REL -BigShot;Saya +Hermann;BigShot;Saya TXT \cxName:\c- \cf Blackmann Arms Ltd.\c- @@ -16,11 +16,11 @@ TXT **Blackmann Arms** was founded in 1924 by **Daniel Ischer**, initially under the name of **Schwarzmann Exotischwaffen**, as an "exotic weapons" workshop in Cologne, Germany. When the family migrated to America in 1933, in the beginnings of the **Nazi Regime**, the shop "americanized" itself under its current name, and quickly rose to fame designing all sorts of ingenious weaponry for the allied forces, and taking all sorts of requests for original designs, their slogan becoming "if you can imagine it, we can make it". -Blackmann became quite popular due to not only the swiftness in designing all kinds of odd firearms clients would request, but also some of their own original inventions, such as the **Silver Bullet** series of ultra-high caliber sniper rifles, or the **Puntzer** series of firearms designed to "penetrate any material, no matter how resilient", thanks to their patented **Spin Motion Wedge (SMW)** bullet design. +Blackmann became quite popular due to not only the swiftness in designing all kinds of odd firearms clients would request, but also some of their own original inventions, such as the **Silver Bullet** series of ultra-high caliber anti-materiel rifles, or the **Puntzer** series of firearms designed to "penetrate any material, no matter how resilient", thanks to their patented **Spin Motion Wedge (SMW)** bullet design. As of 2148, the company is handled by **Hermann E. Ischer** the great-great-grandson of its founder, who has made it his personal goal that any newly created weapon to come out of their factories capable of holding more than one bullet should have the ability to shoot out everything at once, or as quickly as possible. The man himself is also quite popular on social media due to his status as the world record holder for "largest eyebrows", often showing them off or talking in detail about the maintenance of such a thing. A big part of the company's funding comes from **Mr. BIG SHOT**, who, according to reports by Hermann himself, regularly commissions all sorts of ludicrous shotgun designs that no sane man would ever think of using. Out of all these strictly private designs, one sole weapon was eventually made public, the **Wallbuster**, a 25-barrel revolving shotgun, chambered in 6-gauge, and said to be capable of "cleanly breaching through a barrier of pure lead half a meter thick". \cxSaya's Notes:\c- -\cfYeah, yeah. Cool guns, and stuff. Some even got the blessing of Gun Jesus himself, too (god how I fucking miss him). But, yeah... I did realize one thing when digging up stuff to write this entry. It's about the name itself of this whole company. I'm pretty sure it's a reference to something, yeah... something big... and black... you get it now? Yes, that's it. Of course it's a fucking joke about BBC, OF... FUCKING... COURSE. The fucking guy really wanted everyone to think about his DICK whenever they looked at the massive guns he made??? DUDE, GROSS!!!\c- +\cfYeah, yeah. Cool guns and stuff, but yeah... The guy... You've seen them, we've all seen them, we've seen THOSE. How the hell he's managed to grow them so big is beyond me... And he never told me why, which is the worst part. Why the hell would he want to have the world's largest eyebrows? Is there a joke I'm not getting here???\c- diff --git a/lore/default/candygun.txt b/lore/default/candygun.txt index 7a3d564e8..71a3ea3fe 100644 --- a/lore/default/candygun.txt +++ b/lore/default/candygun.txt @@ -16,9 +16,9 @@ A highly boosted variant of the standard **Explodium Gun**. Its magenta tint com \cfPrimary Fire:\c- Single shots of explosive sweetness. A direct hit should be lethal on most targets, but if they somehow don't drop dead from that, the additional crackles and pops might do the deed, or spread the damage to nearby targets, too. -\cfSecondary Fire:\c- Perform an "explosive reload", just like with a standard Explodium Gun. Note that unlike its weaker counterpart, the yield is much more extreme. It is best practice to always have one spare magazine at the ready for the reload, so you aren't left with an unusable weapon should your throw miss the target. +\cfSecondary Fire:\c- Perform an "explosive reload", just like with a standard Explodium Gun. Note that unlike its weaker counterpart, the yield is much more extreme. For the sake of practicality, you cannot perform this action unless you have some ammo to reload the weapon afterwards, and you need at least one round in the magazine for it to actually explode. -\cfCombo Fire:\c- By holding secondary and primary fire (in that order) you can opt to, instead of performing the usual explosive reload, leave the magazine in the gun, armed and ready, then throw the whole weapon as a grenade, for the ultimate destruction. As always, make sure you at least have a spare and more ammo, or you'll be left with nothing. Due to this disposable nature, you're allowed to carry up to 4 spares in your inventory. Use them well. +\cfCombo Fire:\c- By holding secondary and primary fire (in that order) you can opt to, instead of performing the usual explosive reload, leave the magazine in the gun, armed and ready, then throw the whole weapon as a grenade, for the ultimate destruction. Make sure you at least have a spare and more ammo, or you'll be left with nothing if you do this. You're allowed to carry up to 4 spares in your inventory. \cxSaya's Notes:\c- \cfI don't get it, really don't. How is it that mixing that exploding shit with candy does this? Oh, whatever, I still love every second of it, but the pretty fireworks make me really nostalgic, for some reason...\c- diff --git a/lore/default/cinnamon.txt b/lore/default/cinnamon.txt new file mode 100644 index 000000000..a2e7ed681 --- /dev/null +++ b/lore/default/cinnamon.txt @@ -0,0 +1,35 @@ +TAG +Valentine, Cinnamon +TAB +People +REL +Marisa;Ibuki;Hell;Anarukon;Saya +TXT + \cxFull Name:\c- + \cf Cinnamon Valentine\c- + \cxNationality:\c- + \cf Odmorian\c- + \cxDate of Birth:\c- + \cf 2013-04-10\c- + \cxOccupation:\c- + \cf Mercenary (ranger)\c- + \cxTwitter\c- + \cf @cinnamon_valentine\c- + + +Born in **Neimishi, Odmorian** as the youngest of three step-brothers. Much like his siblings, **Cinnamon** never met his own father, as per the traditions of his people, and was solely raised by his mother, retired athlete **Cocoa Valentine**. Upon reaching adulthood, he was conscripted into military service for his war-torn country, where he earned the title of **"Blademaster"**. Despite this, he has a preference towards the use of firearms, being a rather skilled marksman as well. + +How he came to meet **Marisa Azanth** is not well known. The couple refrains from speaking of this subject. Nevertheless, the two would marry in 2117, whereupon he moved to Earth with her, staying at the same house shared with **Ibuki Miyamoto** and other acquaintances. + +Cinnamon appears to possess a special ability, granted by his wife, known as a **Revenant Curse**. His left eye is seemingly "possessed" by a fragment of a demon deity, so-called **The Formless One**, which allows him to quickly return to life should he fall in battle, even if his whole body is destroyed. Though of a different nature, this is fairly similar to the true immortality that his **Anarukon** wife has. One would guess that she did this so the two could remain together for all of eternity. + +He regularly accompanies Marisa in her various adventures, assisting in combat and, as often stated humorously, providing "emotional support" for her. + +\cxSaya's Notes:\c- +\cfThis guy, yup. Again not much to say besides what I mentioned in Mari-san's article. I could try lore-dumping about the Odmorian people or something, but I don't really know that much.\c- + +\cfThe whole thing with these folks, from a country also called Odmorian, is that they used to be all over a whole-ass continent, it was their homeland and stuff, but then a bunch of weirdos started invading from the south and like, took over most of their territory. Now they're pretty much relegated to three major cities in the north. Neimishi, the capital, and also Werm and Eexy, kinda funky names, yeah.\c- + +\cfWhat else is there... Ah, well, apparently there's this weird stuff going on where they can't reproduce among themselves, so the women basically have to seek out men of other species. Cinnamon's brothers have the same dad, but he's got another one. No info on who they are, seems like they'd rather stay anonymous.\c- + +\cfAlso, I touched his abs once. I asked for permission first, of course. I mean, obviously.\c- diff --git a/lore/default/collar.txt b/lore/default/collar.txt index b26b14711..23b6345d2 100644 --- a/lore/default/collar.txt +++ b/lore/default/collar.txt @@ -15,6 +15,6 @@ TXT This is a very stylish and fashionable accessory, personally crafted by **Saya Miyamoto**, with much love and care, and additionally infused with protective magical energy by **Ashley Knox**. As long as you wear this, your adventures will become much easier, especially if you're prone to accidentally hitting yourself with your own explosives. It can also absorb most of the damage you receive should you be in REAL danger, potentially allowing you to make an escape. One final detail of note is that no matter what, it will never break. \cxSaya's Notes:\c- -\cfFor the last time! It's NOT a BDSM thing, I swear to god. Everyone keeps poking me about it, and every time it's the same. It's just a damn cool thing that I thought would look good on you, and on Ibuki too, but people keep misinterpreting it, *sigh*...\c- +\cfIt's just such a cool accessory. It looks good on Ibuki, and so I thought it would look good on you, too.\c- -\cfI gotta say, tho, it really does look super cute on both of you. And damn, if Yu-chan's big tiddy goth gf can work some magic in there. I forgot to put it there in the main entry, but there's also another thing about the collar. Ashley-san taught me, that when whoever's wearing it is like... about to die, I can "recall" you here at will. So yeah, just so you know, if you go down in there and can't do an emergency reboot, you won't be lost forever, I'll make sure to bring you back and patch you up real nice, I promise.\c- +\cfOh, also, I forgot to put it there in the main entry, but there's also another thing about the collar. Ashley-san taught me, that when whoever's wearing it is like... about to die, I can "recall" you here at will. So yeah, just so you know, if you go down in there and can't do an emergency reboot, you won't be lost forever, I'll make sure to bring you back and patch you up real nice, I promise.\c- diff --git a/lore/default/cyrus.txt b/lore/default/cyrus.txt index b4b49457e..9dde85f48 100644 --- a/lore/default/cyrus.txt +++ b/lore/default/cyrus.txt @@ -3,7 +3,7 @@ Cyrus Enterprises TAB People REL -Kereshnovka;Saya;Demolitionist +Reubens;Kereshnovka;Saya;Demolitionist TXT \cxName:\c- \cf Cyrus Enterprises\c- @@ -18,13 +18,11 @@ The personal tech company of **Reubens C. Karnanaiahmani**, acting mayor of the Cyrus is mainly focused on bringing highly advanced Qurensniv technology to humans. Among the company's most notable creations, there's **Hammerspace™**, a method of "offworld storage" which allows individuals to travel light, needing only to carry a small device to store and deploy any objects they need at will. Many comments have been made on the rather "nerdy" naming of the company's various products, this being one of them. -In reference to the man himself, Reubens is well known for not only being a cunning inventor, but also an expert in hand to hand combat, being a ten times **Ko-Ron-Jai** (Qurensniv martial arts) champion, and also an excellent sharpshooter, able to land a hit on the head of a matchstick from 1km away with a mere revolver (this last fact hasn't yet been confirmed, however). He's also an avid gamer, and is often noted to draw comparisons between real life and videogames, to a worrying degree at times. - Cyrus Enterprises, furthermore, is the current main backer of the **Demolitionist** program, providing the required equipment for their missions, and personally paying for every hostile target the Demolitionist takes down, among other things. \cxSaya's Notes:\c- -\cfHe's a nerd, NEEEEEEEERD, BIG STINKIN' NERD!\c- +\cfNerdguy's own business. All good and nerdy right there.\c- -\cfThere, I said it. Like, sure, the stuff he makes, cool and all, but GOOD LORD the guy pisses me off with his stupid videogamey nerdy crap. Not letting you go in fully armed and instead deciding to fucking YEET your shit all over the place for you to pick up? That's one thing. Deciding that after every mission you have to RETURN all the stuff you got, that's another, too. Dropping some cash every time you blow up baddies, that I can accept, though, helps cover the costs of everything.\c- +\cfI know I use that word a lot, yeah, but I'm just stating the facts. Guy's a big nerd.\c- -\cfYou know, he may get on my nerves sometimes, but the guy was the first serious business partner I ever had, and damn, he's not that bad outside of all the nerditude he expels... I mean, to be honest, I'm also a big stinky nerd too, and you can quote me on that.\c- +\cf... And so am I, for that matter.\c- diff --git a/lore/default/cytho.txt b/lore/default/cytho.txt index f91472ea7..d5b841b80 100644 --- a/lore/default/cytho.txt +++ b/lore/default/cytho.txt @@ -17,11 +17,11 @@ TXT \cxTwitter:\c- \cf @incuvalathor\c- -Born in the now fallen Iskar township in 2008 as one of the youngest men of the humble **House Valathor**, **Cytho** took to the family business upon reaching adulthood, quickly climbing the ranks of **Hell**'s sex work industry, partly due to his innate beauty, but also the rapidly accumulating "satisfied customers" he would regularly service, and the many pupils he'd take under his wing. By 2028, he had made of Earth his second home, where he would open up an account on social media for a more modern method of attracting new clientele. +Born in the now fallen Iskar township in 2008 as one of the youngest men of the humble **House Valathor**, **Cytho** took to the family business upon reaching adulthood, quickly climbing the ranks and garnering quite a lot of "cred" thanks to his various satisfied customers and the many pupils he'd take under his wing. By 2028, he had made of Earth his second home, where he would open up an account on social media for a more modern method of attracting new clientele. -One day, however, everything changed. A large number of incubi would report being "creeped out" by a woman's unreasonable requests. Curious, Cytho would then set forth to try and find her, to see what exactly his colleagues were finding so unreasonable. And that, is how he met **Elena Yanikov XVI**, an **Anarukon** woman "struck by the curse of eternal loneliness", who so desperately wished to find a husband that she eventually resourced to summoning demons and begging for them to marry her. As expected, all of them had rejected her pleas, no matter how hard she tried, as many among demonkind were wary of her kind. Cytho, however, took pity on her, and accepted, on one condition: They would have to go on a date first. +One day, however, everything changed. Many of his colleagues would report being "creeped out" by a woman's unreasonable requests. Curious, Cytho would then set forth to try and find her, to see what exactly they were finding so unreasonable. And that, is how he met **Elena Yanikov XVI**, an **Anarukon** woman "struck by the curse of eternal loneliness", who so desperately wished to find a husband that she eventually resourced to summoning demons and begging for them to marry her. As expected, all of them had rejected her pleas, no matter how hard she tried, as many among demonkind were wary of her kind. Cytho, however, took pity on her, and accepted, on one condition: They would have to go on a date first. -Some time later, the archduke announced his retirement from sex work, having "reformed" as the faithful husband to an Anarukon woman. While his friends and family celebrated, others saw this as an affront. House Valathor was heavily criticised for not rejecting him right there and then, to the point a small war broke out, as the rival **House Irishtanar** would crush their hometown in "protest". That day, Cytho closely witnessed the cruelty of his own kind, as the sole survivor of that massacre. +Some time later, the archduke announced his retirement from business, having "reformed" as the faithful husband to an Anarukon woman. While his friends and family celebrated, others saw this as an affront. House Valathor was heavily criticised for not rejecting him right there and then, to the point a small war broke out, as the rival **House Irishtanar** would crush their hometown in "protest". That day, Cytho closely witnessed the cruelty of his own kind, as the sole survivor of that massacre. Since then, he lives in Boston with his wife and their three children. His social media account's purpose has been shifted to communicating the news of what transpires in his home realm, sourced from the many contacts he's gathered over the years, as representative of the subjugated civilian population. Although the vast majority of Earth's population would not take him seriously, not until the **Demon Invasion** of 2148 began. @@ -30,10 +30,10 @@ Denouncing the **UAC**'s involvements, he posted about the events on **Phobos** And thus, through their collaboration, the **Demolitionist** was born. \cxSaya's Notes:\c- -\cfSince the very moment I met him, back when I first visited Ellen-san's family, I knew he was more than just a cool, handsome femboy demon grandpa. Yeah, Cytho-sama's the real deal, and the blood that runs through his veins is more noble than that of any pesky, pompous trashlord with a fancy title out there.\c- +\cfSince the very moment I met him, back when I first visited Ellen-san's family, I knew he was more than just a cool, handsome demon grandpa. Yeah, Cytho-sama's the real deal, and the blood that runs through his veins is more noble than that of any pesky, pompous trashlord with a fancy title out there.\c- \cfAnd yeah, surprise surprise... He's your dad (well, kinda). But you already knew that, didn't you?\c- -\cfSeriously, if it wasn't for him, all of this would have never been possible. We owe a lot to him... I just hope I don't have to repay him with my body (not that I would mind, kihihihi).\c- +\cfSeriously, if it wasn't for him, all of this would have never been possible. We owe a lot to him... I just hope I don't have to repay him with my soul or something.\c- \cfPS: His name is pronounced "Kaizo", you kept saying it wrong every time. But don't worry, you're not the first.\c- diff --git a/lore/default/dana.txt b/lore/default/dana.txt new file mode 100644 index 000000000..d4b83d2cb --- /dev/null +++ b/lore/default/dana.txt @@ -0,0 +1,35 @@ +TAG +Blackwood, Dana +TAB +People +REL +UAC;Ibuki;WhiteScar;UAC;DemonInvasion;Saya +TXT + \cxFull Name:\c- + \cf Dana Arukan Blackwood\c- + \cxNationality:\c- + \cf Scottish-American\c- + \cxDate of Birth:\c- + \cf 1985-02-02\c- + \cxOccupation:\c- + \cf Private Military Contractor\c- + \cxTwitter:\c- + \cf @boyhunter85\c- + + +Born in **Michigan**, as the single daughter of **Scottish Navy General Lena Blackwood** and **Kanethe Railway Engineer Menas Blackwood (né Arukan)**, **Dana** is one very peculiar individual. Familiar with the harshness of the human condition since an early age, she strives to aid anyone in need, while also being very, very aggressively against the authorities that fail to do so every time, especially cops. + +One may think that this anti-authoritarian sentiment would contradict her long career as a gun-for-hire, sometimes under very specific companies, but she makes it a personal rule to never serve the interests of anyone but "the good people", which has caused many a headache for potential employers. Standing by protesters, taking part in rescue efforts following natural disasters, providing humanitarian aid in war zones... It's given her quite the reputation that many out there cannot ignore. + +Another thing she is known for, however, is her penchant for capturing the hearts of young men. Dubbed a "cougar" by fans, something she's personally embraced, it does not matter the circumstance, someone will eventually land in her sights, comically so at times. + +Following the events of the **White Scar**, she would make a name for herself patrolling the DC exclusion zone, where she eventually came across **Ibuki Miyamoto**, the **Red Oni**. This resulted in a very special friendship, bonding over certain shared interests. Dana, however, remained in the wasteland to further assist with reconstruction efforts, eventually landing a position as an **UAC** mercenary. + +And indeed, she was one of the first responders when the **Demon Invasion** began, joining the quickly forming resistance force. + +\cxSaya's Notes:\c- +\cfThe half-dwarf onee-san. Has good taste, both in men and in guns. I also like how she's kept the MRE review video scene alive, even showing off some of the stuff from other civilizations.\c- + +\cfI consider her one of the select few Americans I like. She's cool, except when she's drunk off her ass. Though at least that makes for some really funny interactions with Taro-nii, guhuhu...\c- + +\cfStill hold it against her that she worked for the stinkin' UAC, but it's not like she had much of a choice apparently. Oh well, at least now her contract has "expired", in a way.\c- diff --git a/lore/default/deepimpact.txt b/lore/default/deepimpact.txt index bccc3dc4a..638cb37ba 100644 --- a/lore/default/deepimpact.txt +++ b/lore/default/deepimpact.txt @@ -21,4 +21,4 @@ The **Deep Impact**, also known by its former commercial name of **Dr. Locke's M \cfReload:\c- Refilling the internal air tank is done by repeatedly pulling on the side lever. You will know the tank is full once a smart mechanism locks it in place, preventing the tank from being overfilled and potentially causing it to explode. \cxSaya's Notes:\c- -\cfI know you're hella strong, so you better not pull on it too hard. Wait, that sounds wrong... fuck. Forget I said that. Forget you read it, even.\c- +\cfI know you're hella strong, so you better not pull on it too hard. Wait, that sounds wrong...\c- diff --git a/lore/default/demolitionist.txt b/lore/default/demolitionist.txt index 3ec2d0a2c..b1ce1a0e5 100644 --- a/lore/default/demolitionist.txt +++ b/lore/default/demolitionist.txt @@ -3,7 +3,7 @@ Demolitionist TAB People REL -AkariLabs;Ibuki;Saya;Zanaveth2;Hell;UAC;Nekuratek;Belt;Collar;Propulsor;Hammerspace;Display;Voicebox;Maidbot;EngineTech;Kirin;DemonInvasion;Cytho +AkariLabs;Ibuki;Saya;Zanaveth2;Hell;Rika;UAC;Nekuratek;Belt;Collar;Propulsor;Hammerspace;Display;Voicebox;Maidbot;EngineTech;Kirin;DemonInvasion;Cytho TXT \cxFull Name:\c- \cf Akari Labs First Generation Autonomous Combat Unit\c- @@ -24,14 +24,14 @@ Each unit is equipped with various third-party components of note, such as the * The AI core of the Demolitionist is built on the same technology as Akari Labs' **Maidbots**, the **Nekuronbot AI Framework**, which had been provided to **Saya Miyamoto** herself as a gift of friendship from **Zanaveth Nekuraku II**, the lead AI engineer and current CEO of **Nekuratek**. Thanks to this technology, and combined with many other features such as the **CuteEmotion Display** that allows the unit to visibly show emotion through a set of simple animated faces or the **Loudboi Voicebox** that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all. -The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell. +The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 (following extensive in-house training by **Rika Isuzu**) on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell. -Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of **Demo Miyamoto**, and being referred to by Saya as her "child". Demo can be described as "quite chatty" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however. +Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having been given the full name of **Demo Miyamoto**. Demo can be described as "quite chatty" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however. \cxSaya's Notes:\c- \cfHeh, yeah... that stream was fun. People asked so many questions, and your answers sure caught some of them by surprise, huhu...\c- -\cfBy the way, there is also one more thing that makes you unique. It's that "lucky collar" I made for you, you know. Ibuki had one, and it sure helped her, so I thought that it was a good idea to give it to you too. Wish people weren't going all "wow you gave them that BDSM thing?", though. IT IS NOT, it has NOTHING to do with that.\c- +\cfBy the way, there is also one more thing that makes you unique. It's that "lucky collar" I made for you, you know. Ibuki had one, and it sure helped her, so I thought that it was a good idea to give it to you too. Wish people weren't going all "wow, so you treat them like a pet or something?", though. They're getting the wrong idea...\c- \cfAnyway, if you're finished reading about yourself, how about you get back to work? Yes, Demo-chan, I know you are reading this, at this very moment. OoOOoOoOoOooo... spooky, isn't it?\c- @@ -56,16 +56,16 @@ Each unit is equipped with various third-party components of note, such as the * The AI core of the Demolitionist is built on the same technology as Akari Labs' **Maidbots**, the **Nekuronbot AI Framework**, which had been provided to **Saya Miyamoto** herself as a gift of friendship from **Zanaveth Nekuraku II**, the lead AI engineer and current CEO of **Nekuratek**. Thanks to this technology, and combined with many other features such as the **CuteEmotion Display** that allows the unit to visibly show emotion through a set of simple animated faces or the **Loudboi Voicebox** that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all. -The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell. +The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 (following extensive in-house training by **Rika Isuzu**) on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell. -Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of **Demo Miyamoto**, and being referred to by Saya as her "child". Demo can be described as "quite chatty" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however. +Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having been given the full name of **Demo Miyamoto**. Demo can be described as "quite chatty" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however. Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the "ultimate weapon" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Meido and Ibuki. \cxSaya's Notes:\c- \cfYou're so cute, Demo-chan. I really outdid myself with that Maidbot body, for sure. It seriously caught me by surprise when, as soon as you swapped over to it, you just... jumped in my arms like that and started kissing me all over and... whew~\c- -\cfI'm really happy that you're now part of our little Cutie Club (\c-\cg♥\c-\cf), you know. And yeah, I didn't want to just go around swapping it too so I did make a second collar for you to wear. Hey, come on, I'm still saying it's got nothing to do with some sort of BDSM kink or anything.\c- +\cfI'm really happy that you're now part of our little Cutie Club (\c-\cg♥\c-\cf), you know.\c- \cfAnyway, no more reading about yourself while you're working. Go away, silly.\c- TXT @@ -88,15 +88,15 @@ Each unit is equipped with various third-party components of note, such as the * The AI core of the Demolitionist is built on the same technology as Akari Labs' **Maidbots**, the **Nekuronbot AI Framework**, which had been provided to **Saya Miyamoto** herself as a gift of friendship from **Zanaveth Nekuraku II**, the lead AI engineer and current CEO of **Nekuratek**. Thanks to this technology, and combined with many other features such as the **CuteEmotion Display** that allows the unit to visibly show emotion through a set of simple animated faces or the **Loudboi Voicebox** that allows it to speak almost naturally, the Demolitionist is barely indistinguishable from a real person in its behavior and emotional response, making interaction with civilians much more comforting. It can even be said that the Demolitionist has its own little personality, with unique quirks and all. -The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell. +The first unit, affectionately known as **Demo-chan** by Saya, was deployed in June of 2148 (following extensive in-house training by **Rika Isuzu**) on **Union States** territory in order to combat the demonic invasion brought upon by the **UAC**'s interventions on Hell. -Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having the full name of **Demo Miyamoto**, and being referred to by Saya as her "child". Demo can be described as "quite chatty" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however. +Of this previously mentioned first unit, there are many details known thanks to a Q&A session that Saya had livestreamed months prior to the deployment. The unit has been acknowledged as being part of the Miyamoto household, having been given the full name of **Demo Miyamoto**. Demo can be described as "quite chatty" and fond of joking around to try and put a smile on people's faces, but also very serious and determined in their desire to protect those in need. They are also quite popular within the LGBTQIA+ community due to their fierce support of also protecting the rights of those who face discrimination for their identities, and has even publicly come out themself as non-binary. This didn't really come as a surprise to most due to Saya's own involvements with the collective, however. Following their success in fighting off Hell's armies, Saya realized that no other units would ever need to be made, so Demo themself became the "ultimate weapon" of Akari Labs, all by their lonesome. Furthermore, they were additionally rewarded with a separate maidbot frame, which Demo freely makes use of during their free time, and has allowed them to truly express their feelings for Saya, becoming her third partner, together with Meido and Ibuki. Since May of 2171, they are also additionally engaged to **Kirin Xanai**, leader of the **Sykhai Empire of Akkou**. \cxSaya's Notes:\c- \cfYou're so cute, Demo-chan. I really outdid myself with that Maidbot body, for sure. It seriously caught me by surprise when, as soon as you swapped over to it, you just... jumped in my arms like that and started kissing me all over and... whew~\c- -\cfI'm really happy that you're now part of our little Cutie Club (\c-\cg♥\c-\cf), you know. And yeah, I didn't want to just go around swapping it too so I did make a second collar for you to wear. Hey, come on, I'm still saying it's got nothing to do with some sort of BDSM kink or anything.\c- +\cfI'm really happy that you're now part of our little Cutie Club (\c-\cg♥\c-\cf), you know.\c- \cfAnyway, no more reading about yourself while you're working. Go away, silly.\c- diff --git a/lore/default/demoninvasion.txt b/lore/default/demoninvasion.txt index 1619c2cf8..2f145429b 100644 --- a/lore/default/demoninvasion.txt +++ b/lore/default/demoninvasion.txt @@ -3,7 +3,7 @@ Demon Invasion TAB Lore REL -Hell;UAC;Demolitionist;WhiteScar;Nukuri;Doomguy;Anarukon;Saya +Hell;UAC;Demolitionist;WhiteScar;Nukuri;Doomguy;Anarukon;Saya;Archdemons TXT \cxName:\c- \cf Demon Invasion\c- diff --git a/lore/default/demoplush.txt b/lore/default/demoplush.txt index 61ff6b33d..ac674aac9 100644 --- a/lore/default/demoplush.txt +++ b/lore/default/demoplush.txt @@ -3,7 +3,7 @@ Demo Plushie TAB Item REL -Demolitionist;NosKora;Saya +Nukritas2xx;Demolitionist;Saya TXT \cxDesignation:\c- \cf Demolitionist Plushie\c- diff --git a/lore/default/devanikna.txt b/lore/default/devanikna.txt index 438a3c036..e46502977 100644 --- a/lore/default/devanikna.txt +++ b/lore/default/devanikna.txt @@ -25,6 +25,6 @@ Among the many clans, there are quite a number of "heroes of legend" documented. Lesser known facts about the Devanikan include their strong defense of racial purity. When princess **Devai Unissix**, current head of the clan, announced her marriage to **Serwand Nerukousei**, a chimera constructed by a wandering archwizard, he started receiving threats from the population, calling him a "beast in man's form" and accusing him of corrupting the Unissix bloodline as a means to take control of their nation. These threats extended towards their own children too, who were denoted as "crossbred abominations" of mixed Devanikan and chimeric blood. It wasn't until Deneva's first major achievements as a warrior that the persecution they faced eventually stopped. Ever since then, the hostility they faced has been gradually fading, as newer generations became much more accepting of race mixing. \cxSaya's Notes:\c- -\cfYeah, Misa's people are cool af. Well, excluding the whole racism part. That's a load of fucking shit, for sure. I heard from Zana-sama that if she hadn't met Misa back then, she would have probably taken her own life from all of that she went through. Fuck... But at least, she's living happily with Zana-sama (lucky devil), and yeah, things are getting better in there now at least.\c- +\cfYeah, Misa's people are cool af. Well, excluding the whole racism part. That's a load of fucking shit, for sure. I heard from Zana-sama that if she hadn't met Misa back then... Fuck... But at least, she's living happily with Zana-sama (lucky devil), and yeah, things are getting better in there now at least.\c- \cfYou know, all this stuff, it reminds me of this one old JRPG series I played many many years ago, that was also all about people of dragon blood too... can't even remember what it was called, though. Heck, I even had Misa play it once and she kept talking about all the parallels and shit. Oh well, cool dragon warriors, fuck yeah.\c- diff --git a/lore/default/display.txt b/lore/default/display.txt index 1f7ea427e..bac102d7a 100644 --- a/lore/default/display.txt +++ b/lore/default/display.txt @@ -12,9 +12,9 @@ TXT \cxClassification:\c- \cf Display Device\c- -The **CuteEmotion** is a display device designed for use on robots. It can be used to present a wide variety of facial expressions, selected from a user-configurable library of images, each associated to some particular emotion or sentiment the AI may want to convey, thus enhancing the naturality of social interaction with them. The display is one-sided, allowing it to be aligned with the visual receptors of the robot for a more accurate match with any simulated eye movement. +The **CuteEmotion** is a display device designed for use on robots. It can be used to present a wide variety of facial expressions, selected from a user-configurable library of images, each associated to some particular emotion or sentiment the AI may want to convey, thus enhancing the naturalness of social interaction with them. The display is one-sided, allowing it to be aligned with the visual receptors of the robot for a more accurate match with any simulated eye movement. -There are many versions of the device, but the best known is the "Monoglow" model, made popular thanks to its use by the **Demolitionist**. +There are many versions of the device, but the best known is the "Monoglow" model, made popular thanks to its use by the **Demolitionist**. Other more flexible and user-tweakable models also exist, which are known to be quite popular within certain corners of the furry community. \cxSaya's Notes:\c- \cfY'know, that thing just makes you so cute and huggable... It's, I mean... TOO DAMN CUTE!!!\c- diff --git a/lore/default/divinesprite.txt b/lore/default/divinesprite.txt index 4e9fdece8..c40ed7f95 100644 --- a/lore/default/divinesprite.txt +++ b/lore/default/divinesprite.txt @@ -21,4 +21,4 @@ This shining gem invigorates even the puniest of mundane creatures when crushed \cfAs you may expect, this is also another thing that my god buddies have recommended. Normally these are only provided to heroes by special request... And you are our hero, Demo-chan, so this is for you.\c- -\cfPS: Don't try to eat it.\c- +\cfPS: Don't try to eat it. That is NOT how it feels to chew five gum.\c- diff --git a/lore/default/doomguy.txt b/lore/default/doomguy.txt index 9d4203866..ccab4267d 100644 --- a/lore/default/doomguy.txt +++ b/lore/default/doomguy.txt @@ -5,18 +5,18 @@ People REL UAC;Hell;Saya;AkariLabs;Demolitionist;Cytho TXT -\cxFull Name:\c- -\cf CLASSIFIED\c- -\cxOther Names:\c- -\cf Doom Marine\c- -\cf The Lone Marine\c- -\cf Doomguy\c- -\cxNationality:\c- -\cf American\c- -\cxDate of Birth:\c- -\cf CLASSIFIED\c- -\cxOccupation:\c- -\cf Marine (UAC)\c- + \cxFull Name:\c- + \cf [CLASSIFIED]\c- + \cxOther Names:\c- + \cf Doom Marine\c- + \cf The Lone Marine\c- + \cf Doomguy\c- + \cxNationality:\c- + \cf American\c- + \cxDate of Birth:\c- + \cf [CLASSIFIED]\c- + \cxOccupation:\c- + \cf Marine (UAC)\c- The **Doom Marine** is the lone survivor of the demonic invasions on the **UAC** bases of Phobos and Deimos. Having been transferred to **Mars City** not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to **Hell** itself and coming back, he was appointed as the organization's "problem solver". @@ -25,22 +25,22 @@ At the moment of this article's writing, the marine has been tasked with fightin \cxSaya's Notes:\c- \cfAlright, IMPORTANT THING: don't get close to this guy, don't say anything to him, do not interact. If you two come across each other, stand back and let him work, or he might just go and start shooting you too.\c- -\cfBy the way, my congratulations to those UAC goons for how well-guarded they keep all the info about him. We don't even know his actual goddamn name, or his history from before all this shit started. Like, what even is this guy like? I haven't heard much of that, apart from the little info Cytho-sama could get out of his previous romp through Hell, but there was some mention of him liking rabbits? Cute bunnies?\c- +\cfBy the way, my congratulations to those UAC grunts for how well-guarded they keep all the info about him. We don't even know his actual goddamn name, or his history from before all this shit started. Yeah, I haven't heard much of what this guy is like, apart from the little info Cytho-sama could get out of his previous romp through Hell, but there was some mention of him liking rabbits? Cute bunnies?\c- \cfWell, maybe then, if you pretend those horns of yours are some bun ears, he might not shoot you on sight, who knows...\c- TXT -\cxFull Name:\c- -\cf CLASSIFIED\c- -\cxOther Names:\c- -\cf Doom Marine\c- -\cf The Lone Marine\c- -\cf Doomguy\c- -\cxNationality:\c- -\cf American\c- -\cxDate of Birth:\c- -\cf CLASSIFIED\c- -\cxOccupation:\c- -\cf N/A\c- + \cxFull Name:\c- + \cf John Blazkowicz\c- + \cxOther Names:\c- + \cf Doom Marine\c- + \cf The Lone Marine\c- + \cf Doomguy\c- + \cxNationality:\c- + \cf American\c- + \cxDate of Birth:\c- + \cf 2132-03-20\c- + \cxOccupation:\c- + \cf N/A\c- The **Doom Marine** is the lone survivor of the demonic invasions on the **UAC** bases of Phobos and Deimos. Having been transferred to **Mars City** not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to **Hell** itself and coming back, he was appointed as the organization's "problem solver". @@ -52,19 +52,21 @@ Despite this "defeat", the UAC continued to make use of the Doom Marine for many \cfDude's pretty much retired, and boy is it a well deserved rest. He's been into deeper shit than you, being the one to survive all that stuff on Mars and then being thrown around random places to "save the day". Last I heard, from Cytho-sama's own words, he had to deal with two other titans that the demon armies had in store. Both pretty much standing at the same level as ol' Baramun.\c- \cfWhat surprised me the most is hearing what he said in an interview. That he has no hard feelings about you stealing the spotlight back then, seems to be a fan of your work, even, saying you're "damn fine at ripping and tearing demon guts". Neat.\c- + +\cfFunny detail, turns out we have the same birthday.\c- TXT -\cxFull Name:\c- -\cf CLASSIFIED\c- -\cxOther Names:\c- -\cf Doom Marine\c- -\cf The Lone Marine\c- -\cf Doomguy\c- -\cxNationality:\c- -\cf American\c- -\cxDate of Birth:\c- -\cf CLASSIFIED\c- -\cxOccupation:\c- -\cf N/A\c- + \cxFull Name:\c- + \cf John Blazkowicz\c- + \cxOther Names:\c- + \cf Doom Marine\c- + \cf The Lone Marine\c- + \cf Doomguy\c- + \cxNationality:\c- + \cf American\c- + \cxDate of Birth:\c- + \cf 2132-03-20\c- + \cxOccupation:\c- + \cf N/A\c- The **Doom Marine** is the lone survivor of the demonic invasions on the **UAC** bases of Phobos and Deimos. Having been transferred to **Mars City** not long before the initial incidents, he was part of the detachment sent to defend the Phobos bases from the invading demons who had somehow hijacked the teleportation systems the UAC was experimenting with. Following this impressive feat of, as a one man army, fighting off the invaders on both Phobos and Deimos, along with taking the fight to **Hell** itself and coming back, he was appointed as the organization's "problem solver". diff --git a/lore/default/ellen.txt b/lore/default/ellen.txt index 438bab41a..ca12c687c 100644 --- a/lore/default/ellen.txt +++ b/lore/default/ellen.txt @@ -21,15 +21,13 @@ Born in Boston in 2066, to **Elena Yanikov XIX** and **Gottfried Steiner**, **El From a young age she showed quite the interest in "exploring" every corner of the city, first starting with just nearby abandoned buildings, then further expanding to pretty much any point of interest she could identify in the whole city. She began recording her urban explorations while still in elementary school, and uploading them to video sharing sites, earning quite a lot of popularity. -In the aftermath of the **White Scar**, Ellen used the skills she had gained in exploration to work as a scavenger alongside her mother, scouring the wasteland for valuable resources to bring back to the various shelters in the area. Through this she eventually met **Ibuki Miyamoto**, the **Red Oni**, who had wandered the wastes for many years, becoming a "legendary warrior" of sorts due to her various feats. In the process of Ibuki being recalled back to Japan by **Taro Miyamoto**, of **Akari Labs**, Ellen decided that she wanted to go with them, citing that "wandering around this dump is really boring anyway and I really want to see the world out there". - -During her stay in Japan, she'd often spend her time with Taro, the two of them eventually dating some weeks after. Something which was followed by an announcement from Taro on social media citing: "my wizard privileges have been revoked". +In the aftermath of the **White Scar**, Ellen used the skills she had gained in exploration to work as a scavenger alongside her mother, scouring the wasteland for valuable resources to bring back to the various shelters in the area. Through this she eventually met **Ibuki Miyamoto**, the **Red Oni**, who had wandered the wastes for many years, becoming a "legendary warrior" of sorts due to her various feats. In the process of Ibuki being recalled back to Japan by **Taro Miyamoto**, of **Akari Labs**, Ellen decided that she wanted to go with them, citing that "wandering around this dump is really boring anyway and I really want to see the world out there". During her stay in Japan, she'd often spend her time with Taro, the two of them dating some weeks after. Apart from her shared ancestry with renowned singer/guitarist **Ashley Knox**, she also shares a much closer relation to her due to the fact her father is the grandson of Ashley's ex-husband, the late **Fredrik Steiner**. Through this, and the fact they both are engaged to members of the Miyamoto family, they have become quite close. Ellen has even considered joining the band at some point, though as of this article's writing, this hasn't yet happened. \cxSaya's Notes:\c- -\cfHeh, typical of Taro nii-san, announcing to the whole damn world that he lost his fucking virginity. He really couldn't be any more subtle about it if he tried. So yeah, between him and Yu-chan, the two have scored themselves some immortal cuties, making me jealous as all fuck in the process. Like, seriously, how the fuck could ANYONE even want to date my absolute loser of a brother? I don't know what Ellen-san sees in him...\c- +\cfSo yeah, between Taro-nii and Yu-chan, the two have scored themselves some immortal cuties, making me jealous as all fuck in the process. Like, seriously, how the fuck could ANYONE even want to date my absolute loser of a brother? I don't know what Ellen-san sees in him...\c- \cfOh yeah, speaking of Ellen-san. She's a goddamn massive prankster, like, the most awfully skilled troll you could ever imagine, even. See, there was this one time... actually, I think I'll keep quiet about it, because it was embarrassing as all hell. My ass is still sore from back then. I'm NOT going to explain, fuck no. Use your imagination, Demo-chan.\c- -\cfAh, also, one super good thing about having her around. She's got some interesting connections. Yeah, most people don't know, but her gramps is a demon. Like, actual demon, from Hell and all. Some real cutie too. Name's Cytho Valathor, and he says he's a "reformed incubus", whatever that means. Whenever I need to know anything about what's going on in the land of fire 'n brimstone, he's the guy I go to.\c- +\cfAh, also, one super good thing about having her around. She's got some interesting connections. Yeah, I'm of course talking about her demon grandfather. A certain cutie you may know called Cytho Valathor. Of course, whenever I need to know anything about what's going on in the land of fire 'n brimstone, there's no better source than Ellen-san's gramps.\c- diff --git a/lore/default/enginetech.txt b/lore/default/enginetech.txt index fd4bcd2d9..5535820cd 100644 --- a/lore/default/enginetech.txt +++ b/lore/default/enginetech.txt @@ -3,7 +3,7 @@ Tach-Engine TAB People REL -UAC;Nukuri;DecadeMech;Saya;Nekuratek;WhiteScar +Admun;UAC;Nukuri;DecadeMech;Saya;Nekuratek;WhiteScar TXT \cxName:\c- \cf Tach-Engine Technology Institute\c- diff --git a/lore/default/eviscerator.txt b/lore/default/eviscerator.txt index 0b753e536..81566cdd0 100644 --- a/lore/default/eviscerator.txt +++ b/lore/default/eviscerator.txt @@ -6,7 +6,7 @@ REL Cyrus;BigShot;Hammerspace;Saya TXT \cxDesignation:\c- -\cf "Eviscerator" High Load Flechette Cannon\c- +\cf "Eviscerator" High Load Shrapnel Cannon\c- \cxManufacturer:\c- \cf Cyrus Enterprises\c- \cf Design by Mr. BIG SHOT\c- diff --git a/lore/default/explodium.txt b/lore/default/explodium.txt index aab408e35..d2d66f810 100644 --- a/lore/default/explodium.txt +++ b/lore/default/explodium.txt @@ -3,7 +3,7 @@ Explodium TAB Lore REL -Munch;Saya;ExplodiumGun +Parker;Munch;Saya;ExplodiumGun TXT \cxName:\c- \cf Explodium\c- diff --git a/lore/default/forx.txt b/lore/default/forx.txt index 3cb63210e..024f7ea31 100644 --- a/lore/default/forx.txt +++ b/lore/default/forx.txt @@ -10,11 +10,11 @@ TXT \cxClassification:\c- \cf Propulsion Engine Manufacturer\c- \cxLocation:\c- -\cf Kent, Southern Ireland\c- +\cf Kent, England\c- \cxWebsite:\c- \cf https://forx.ie\c- -Founded in 2029 by **Harold Forx**, this company is credited with singlehandedly rescuing Southern Ireland (formerly known as the United Kingdom) from its long fall into ruin after **Brexit** in 2020, the **Scottish Independence** in 2022 and their losses in the 2026 **Irish Reconquest** (which happened in retalation to their declaration of war on the island the year prior). Despite these mortal blows, **Forx Aeronautics**, having appeared seemingly out of nowhere, founded by a man who, only years prior had been spending his life scavenging around junkyards, managed to pull in enough cash to rescue the whole territory only mere months after its foundation. +Founded in 2029 by **Harold Forx**, this company is credited with singlehandedly rescuing England from its long fall into ruin after **Brexit** in 2020, the **Scottish Independence** in 2022 and their losses in the 2026 **Irish Reconquest** (which happened in retaliation to the former **United Kingdom**'s declaration of war on the island the year prior). Despite these mortal blows, **Forx Aeronautics**, having appeared seemingly out of nowhere, founded by a man who, only years prior had been spending his life scavenging around junkyards, managed to pull in enough cash to rescue the whole territory only mere months after its foundation. Forx is currently the #1 supplier of propulsion engines for all types of aircraft, be it commercial jet planes, or even spaceships. Their dominance extends all across the eastern side of the Atlantic, as overseas, in America, the **UAC** still reigns supreme, with their own in-house technologies. @@ -27,6 +27,6 @@ Apart from aircraft engines, Forx has also adapted their patented jet propulsion \cfAlright, so as it goes, the guy first tried to tell them to fuck off from there and let him bulldoze the whole place to build some shit in there. They didn't even listen. Then, he goes there in person, and THIS is the fun part. After an argument with the director of the orphanage, who personally knew the guy, he got SLAPPED SO FUCKING HARD he did a complete 180 and ran away crying.\c- -\cfI fucking kid you not, Demo-chan, that is exactly what I saw. I've watched the archived footage like a hundred times, since it helps me feel better when I'm in a sour mood, and... every time, the part where he gets fucking backhanded across the face by the old geezer, it never fails. I always lose my shit. It's TOO GOOD.\c- +\cfI fucking kid you not, Demo-chan, that is exactly what I saw. I've watched the archived footage like a hundred times, since it helps me feel better when I'm in a sour mood, and... every time, the part where he gets backhanded across the face by the old geezer and thrown out the fucking door, it never fails. I always lose my shit. It's TOO GOOD.\c- -\cfSeriously, this is what all those people really need. You don't know how many times I wish I could just go and beat the crap out of that bastard manchild Kelliher. I'd surely feel much better, yeah. Fuck him, and the UAC too. "Eat the rich" is somehow still relevant, but I really want to popularize "Beat the rich".\c- +\cfSeriously, this is what all those people really need. You don't know how many times I wish I could just go and defenestrate that bastard manchild Kelliher. I'd surely feel much better, yeah. Fuck him, and the UAC too. "Eat the rich" is somehow still relevant, but I really want to popularize "Yeet the rich".\c- diff --git a/lore/default/froggychair.txt b/lore/default/froggychair.txt index 660b5bedc..aec1373ff 100644 --- a/lore/default/froggychair.txt +++ b/lore/default/froggychair.txt @@ -25,4 +25,4 @@ A small price to pay... \cfAnyway, I have to do this, I have to say it or they won't leave me alone:\c- -\cfWelcome to the \cfFroggy Gang\cf, Demo-chan.\c- +\cfWelcome to the \cdFroggy Gang\cf, Demo-chan.\c- diff --git a/lore/default/gcsandwich.txt b/lore/default/gcsandwich.txt index d3e72f3c2..96c5151b9 100644 --- a/lore/default/gcsandwich.txt +++ b/lore/default/gcsandwich.txt @@ -3,7 +3,7 @@ Sandwich TAB Item REL -NosKora;Saya +Nukritas1xx;Saya TXT \cxDesignation:\c- \cf Grilled Cheese Sandwich\c- diff --git a/lore/default/gensokyo.txt b/lore/default/gensokyo.txt index a25373eed..a28bb5e2b 100644 --- a/lore/default/gensokyo.txt +++ b/lore/default/gensokyo.txt @@ -19,4 +19,4 @@ The land of Gensokyo does not have a clear political structure, although it appe Many attempts have been made to communicate with them following the initial research, with no successes to this day but one sole exception: The **Miyamoto family**, who initially came from that land, then migrated outside. As reported by **Saya Miyamoto** on social media, the family often travels across the barrier, in order to visit their distant relative, **Princess Kaguya Houraisan**. Following these reports, many have tried to approach members of the Miyamoto family to ask for further information, but they have refused to talk about the subject. \cxSaya's Notes:\c- -\cfBoy, people sure are interested in that place, huh? But they just won't fucking understand, that things have to stay like this. Those are the rules, or some shit. Can't have both worlds mixing up together or whatever, it's what that old hag told me once. Yeah, the one that doesn't act her age and goes around with a buncha cosplayers. I'm pretty sure she's related to Ashley-san in some way, they've got the same exact eyes. But like hell am I going to go and ask her, the way she acts around me creeps me out.\c- +\cfBoy, people sure are interested in that place, huh? But they just won't fucking understand, that things have to stay like this. Those are the rules, or some shit. Can't have both worlds mixing up together or whatever, it's what that old hag told me once. Yeah, the one that doesn't act her age and goes around with a buncha cosplayers. I'm pretty sure she's related to Ashley-san in some way, they've got the same exact eyes. But like hell am I going to go and ask her, I don't like her.\c- diff --git a/lore/default/heavymahsheengun.txt b/lore/default/heavymahsheengun.txt index 8067790c5..5daa98300 100644 --- a/lore/default/heavymahsheengun.txt +++ b/lore/default/heavymahsheengun.txt @@ -18,11 +18,21 @@ The ammunition employed by this weapon are AP rounds of 14.5x114mm caliber. Unli While generally meant for mounted use, on-the-go operation is possible, provided the user is equipped with silver-rated power armor at minimum in order to handle its heavy recoil. -\cfPrimary Fire:\c- 700 RPM operation. Sustained fire in this mode is theoretically endless, as the heat produced can be efficiently nullified by the internal cooling systems, it is therefore the recommended mode for most situations. +The weapon is rated for three speeds: -\cfSecondary Fire:\c- 1050 RPM operation. Much faster spin, with moderate heat buildup. It's still possible to keep firing in this mode for about a minute or so from a cold start. If you need to deliver more pain and have the ammunition to spare, choose this. +\cf300 RPM:\c- A slow spin. Sustained fire in this mode is theoretically endless, as the heat produced can be efficiently nullified by the internal cooling systems, it is therefore the recommended mode for most situations. -\cfTertiary Fire:\c- 2100 RPM operation. Extremely fast, with the highest heat potential. Sustained fire in this mode may quickly trigger the weapon's safety lock should the rising heat get too close to non-operational temperature. If you want things dead fast and don't care about running out of ammo in a matter of seconds, do pick this. +\cf700 RPM:\c- Much faster spin, with moderate heat buildup. It's still possible to keep firing within operational temperature for an extended period of time, albeit less accurately. If you need to deliver more pain and have the ammunition to spare, choose this. + +\cf2100 RPM:\c- Extremely fast, with the highest heat potential. Sustained fire in this mode may quickly trigger the weapon's safety lock should the rising heat get too close to non-operational temperature. If you want things dead fast and don't care about running out of ammo in a matter of seconds, do pick this. + +By default, the safest firing speed is active. Other speeds can be selected by pulling or pushing on the trigger handle (note that the handle is locked in place while firing, so speed can't be changed on the fly). + +\cfPrimary Fire:\c- Fire at the selected speed. There is no wind up or wind down in this weapon's operation, so it will begin firing from the moment the trigger is squeezed, and immediately stop once it's released. + +\cfSecondary Fire:\c- Push the trigger handle to increase the firing speed. + +\cfTertiary Fire:\c- Pull the trigger handle to decrease the firing speed. \cfReloading:\c- There is absolutely no need whatsoever to reload this weapon, as it feeds directly off Hammerspace, requiring only a large supply of ammunition. Hammerspace containers will automatically link all necessary rounds for tethered feeding. @@ -33,4 +43,4 @@ While generally meant for mounted use, on-the-go operation is possible, provided \cfBy the way I know what you may be thinking and no, they're not tracer rounds. As I was told, they're actually going so fast they literally catch on fire from air friction. Pretty hardcore, ain't it? Bet the UAC will never beat this shit.\c- -\cfGod just seeing it in action is enough to make me wet. Hell, more than that. The Sheen HMG is such a delicious festival of dakka that the mere sound of it firing makes me unleash Leviathan in my panties, and you can quote me on that.\c- +\cfGod just seeing it in action... Hell, more than that. The Sheen HMG is such a delicious festival of dakka that the mere sound of it firing makes me wild out. It's nuts!\c- diff --git a/lore/default/hell.txt b/lore/default/hell.txt index cd13d380f..43a9db95d 100644 --- a/lore/default/hell.txt +++ b/lore/default/hell.txt @@ -3,7 +3,7 @@ Hell TAB Lore REL -Imanaki;UAC;Saya;Ellen;Anarukon;Novoskhana;DemonInvasion;Cytho +Imanaki;UAC;Saya;Ellen;Anarukon;Novoskhana;DemonInvasion;Cytho;Archdemons TXT \cxName:\c- \cf Hell\c- @@ -14,7 +14,7 @@ TXT In 149, following the disappearance of prince heir **Manakei**, who had been summoned to Earth but never returned, internal conflicts arose within the ranks of Hell's royalty. These fights for the succession of the throne, however, never truly escalated as long as Nostros was there to keep the demons at bay. Many attempts were made to locate the heir and bring him back, unsuccessfully. -In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced **King Akusei** in charge, the various archdemons, corrupt generals of the demon armies, took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the **UAC**'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of **Mars City**, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the **Doom Marine**, they set their sights on Earth, and thus their final invasion began. +In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced **King Akusei** in charge, the various corrupt **Archdemon Generals** took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the **UAC**'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of **Mars City**, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the **Doom Marine**, they set their sights on Earth, and thus their final invasion began. \cxSaya's Notes:\c- \cfOK, first of all, big thanks to Ellen-san's gramps for the info we could get on this. Cytho-sama is like, our only contact with that fucking place, and you won't even believe the things he's told me.\c- @@ -34,7 +34,7 @@ TXT In 149, following the disappearance of prince heir **Manakei**, who had been summoned to Earth but never returned, internal conflicts arose within the ranks of Hell's royalty. These fights for the succession of the throne, however, never truly escalated as long as Nostros was there to keep the demons at bay. Many attempts were made to locate the heir and bring him back, unsuccessfully. -In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced **King Akusei** in charge, the various archdemons, corrupt generals of the demon armies, took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the **UAC**'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of **Mars City**, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the **Doom Marine**, they set their sights on Earth, bringing forth all of their legions, under the command of **Baramun**, the Titan of the East, who was given the title of **Icon of Sin**. +In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced **King Akusei** in charge, the various corrupt **Archdemon Generals** took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the **UAC**'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of **Mars City**, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the **Doom Marine**, they set their sights on Earth, bringing forth all of their legions, under the command of **Baramun**, the Titan of the East, who was given the title of **Icon of Sin**. Against all odds, humanity prevailed, and the invaders were defeated, along with their leader. Despite this major defeat, the demon generals organized several other attacks, using their remaining forces, but failed once more. Having realized that humanity was far more resilient than they could ever have imagined, they gave up. @@ -56,7 +56,7 @@ TXT In 149, following the disappearance of prince heir **Manakei**, who had been summoned to Earth but never returned, internal conflicts arose within the ranks of Hell's royalty. These fights for the succession of the throne, however, never truly escalated as long as Nostros was there to keep the demons at bay. Many attempts were made to locate the heir and bring him back, unsuccessfully. -In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced **King Akusei** in charge, the various archdemons, corrupt generals of the demon armies, took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the **UAC**'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of **Mars City**, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the **Doom Marine**, they set their sights on Earth, bringing forth all of their legions, under the command of **Baramun**, the Titan of the East, who was given the title of **Icon of Sin**. +In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced **King Akusei** in charge, the various corrupt **Archdemon Generals** took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the **UAC**'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of **Mars City**, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the **Doom Marine**, they set their sights on Earth, bringing forth all of their legions, under the command of **Baramun**, the Titan of the East, who was given the title of **Icon of Sin**. Against all odds, humanity prevailed, and the invaders were defeated, along with their leader. Despite this major defeat, the demon generals organized several other attacks, using their remaining forces, but failed once more. Having realized that humanity was far more resilient than they could ever have imagined, they gave up. That is, until around August of 2160, when two demonic necromancers, the **Resurrector Sisters**, made their appearance, and brought back to life all those who had fallen, prompting the UAC to recommission their "problem solver" once again, who made his way back towards Hell, exterminating the revived demons and swiftly eliminating both of the Resurrector Sisters. Once his initial rampage was over, he sent one final message back to Earth, saying that he had sworn to remain in Hell forever, in order to ensure that the demons would never attempt to attack humanity ever again. @@ -84,7 +84,7 @@ TXT In 149, following the disappearance of prince heir **Manakei**, who had been summoned to Earth but never returned, internal conflicts arose within the ranks of Hell's royalty. These fights for the succession of the throne, however, never truly escalated as long as Nostros was there to keep the demons at bay. Many attempts were made to locate the heir and bring him back, unsuccessfully. -In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced **King Akusei** in charge, the various archdemons, corrupt generals of the demon armies, took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the **UAC**'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of **Mars City**, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the **Doom Marine**, they set their sights on Earth, bringing forth all of their legions, under the command of **Baramun**, the Titan of the East, who was given the title of **Icon of Sin**. +In 2145, after the supreme leader of Hell suddenly left the throne for unexplained reasons, leaving only his son, the inexperienced **King Akusei** in charge, the various corrupt **Archdemon Generals** took the chance to stage a coup and overthrow the main royal family, forcing them into exile. This event unfortunately coincided closely with the **UAC**'s first explorations of Hell. Although curious at first about these odd beings that had entered their realm, they made the decision of exterminating them once they began to show an interest in exploiting their natural resources and in addition had shown hostility when approached. They were almost successful in this, but their plans for sending a full fleet to our own world were swiftly stopped along with their initial invasion of **Mars City**, and couldn't be truly realized until much later, in 2148, when they managed to hijack the UAC's teleporters on Phobos and Deimos, completely overtaking both moon bases and even managing to pull in one of the two moons into their own realm. Following retaliation from a lone soldier, the **Doom Marine**, they set their sights on Earth, bringing forth all of their legions, under the command of **Baramun**, the Titan of the East, who was given the title of **Icon of Sin**. Against all odds, humanity prevailed, and the invaders were defeated, along with their leader. Despite this major defeat, the demon generals organized several other attacks, using their remaining forces, but failed once more. Having realized that humanity was far more resilient than they could ever have imagined, they gave up. That is, until around August of 2160, when two demonic necromancers, the **Resurrector Sisters**, made their appearance, and brought back to life all those who had fallen, prompting the UAC to recommission their "problem solver" once again, who made his way back towards Hell, exterminating the revived demons and swiftly eliminating both of the Resurrector Sisters. Once his initial rampage was over, he sent one final message back to Earth, saying that he had sworn to remain in Hell forever, in order to ensure that the demons would never attempt to attack humanity ever again. diff --git a/lore/default/hellblazer.txt b/lore/default/hellblazer.txt index a4059890e..60d956db6 100644 --- a/lore/default/hellblazer.txt +++ b/lore/default/hellblazer.txt @@ -3,7 +3,7 @@ Hellblazer TAB Item REL -Imanaki;UAC;Hell;Hammerspace +Imanaki;UAC;Hell;Hammerspace;Saya;Nukuri TXT \cxDesignation:\c- \cf Hellfire Cannon Mk3 ("Hellblazer")\c- @@ -13,17 +13,9 @@ TXT \cxClassification:\c- \cf Mini-Missile Launcher\c- -The **Hellblazer** is the third incarnation of the **Hellfire Cannon**, one of the many weapons that **Imanaki Corp** had constructed based on their experiments with harnessing what they called **Ardent Energy**, a power source from the depths of **Hell** itself. It is a direct improvement of the Mark 2 model, the **Hellrazer**, sporting burst-fire capabilities and a simple drum magazine system for easier reloads. It also features many more types of ammunition this time: +The **Hellblazer** is the third incarnation of the **Hellfire Cannon**, one of the many weapons that **Imanaki Corp** had constructed based on their experiments with harnessing what they called **Ardent Energy**, a power source from the depths of **Hell** itself. It is a direct improvement of the Mark 2 model, the **Hellrazer**, sporting burst-fire capabilities and a simple drum magazine system for easier reloads. As its ammunition, it employs 25mm "Blazer" grenades, highly explosive despite their small size, due to the materials contained within. -\cf"Blazer" grenades:\c- The standard ammunition. Highly explosive despite their small size, thanks to the highly condensed Ardent Energy contained within. - -\cf"Crackshot" cluster grenades:\c- These burst into smaller grenades which will spread on impact, bouncing around for a short time before detonating. - -\cf"Ravager" incendiary grenades:\c- Ravagers release a wave of unrefined Ardent Energy on detonation, covering a very wide area around themselves. Quite useful in tight spaces, where this scorching hot plasma won't dissipate as quickly, thoroughly roasting any targets within. For safety reasons this ammunition type cannot be employed in burst-fire. - -\cf"Slayer" warheads:\c- A returning favorite from the previous series. These miniature nukes contain within themselves highly enriched Ardent Energy that will cause total devastation in a large radius, bringing swift death to even the highest ranked demons in Hell's armies. Cannot operate in burst-fire mode either. - -The Hellblazer was discontinued following the destruction of the Imanaki Corp headquarters in 2009, but the **Tach-Engine Technology Institute** had managed to reproduce this weapon following their demise. Replicated models do not actually employ this "Ardent Energy" however, so they are not as destructive as they were meant to be. Rather, they are powered by the highly volatile **Nokron**, one of the two exotic elements involved in the process of Microfusion, as its potential for use in explosives is quite notable. +The Hellblazer was discontinued following the destruction of the Imanaki Corp headquarters in 2009, but the **Tach-Engine Technology Institute** had managed to reproduce this weapon following their demise. Replicated models do not actually employ this "Ardent Energy" however, so they are not as destructive as they were meant to be. Rather, they are powered by the highly volatile **Sydon**, one of the exotic elements involved in the creation of Ardent, as its potential for use in explosives is quite notable. Unlike its predecessor, which relied on simple proximity detection, this model can instead interface with targeting arrays in order to provide more precise selective target seeking. @@ -31,13 +23,13 @@ Unlike its predecessor, which relied on simple proximity detection, this model c \cfSecondary Fire:\c- Lobs the loaded ammunition unarmed, as a bouncing grenade. Tap to fire one grenade, hold to preload up to 2 additional grenades (primary Fire cancels this process). Target seeking also affects grenades, as they will attempt to steer themselves towards the target on bounce. -\cfTertiary Fire:\c- Cycles the ammo type for the next reload. +\cfTertiary Fire:\c- Does nothing unless the weapon is locked for fire (see above). -\cfReloading:\c- During a reload, you may either refill the current mag (quite easy through the **Hammerspace™** container), or swap it out for a different ammo type. +\cfReloading:\c- Refills the current magazine, quite easily through the **Hammerspace™** container. \cfTechniques:\c- The grenades will automatically detonate on proximity to any hostile targets (unless explicitly seeking one), so you may still land the shot even if you merely grazed them. It is unclear how exactly they detect the targets, or know that they are hostile. \cxSaya's Notes:\c- \cf"Ardent Energy"? What's that? Energy extracted from a demon's ass after it ate too much curry? Whatever, anything coming from Hell is best left untouched, y'know. Just look at what happened to the fucking UAC, going around sticking their paws where they shouldn't.\c- -\cfActually, making the replicas use Nokron was a pretty clever thing. I had no idea that shit exploded. Really makes you think about all the safety mechanisms that go into Microfusion engines, definitely justified if THAT can happen.\c- +\cfActually, making the replicas use Sydon was a pretty clever thing. That stuff's naturally occurring in a bunch of exoplanets so it's easy to come by. By the way, did you know the Nukuri use it as a hair dye? Well, they use a non-reactive isotope, but still...\c- diff --git a/lore/default/hermann.txt b/lore/default/hermann.txt new file mode 100644 index 000000000..6be98d50d --- /dev/null +++ b/lore/default/hermann.txt @@ -0,0 +1,33 @@ +TAG +Ischer, Hermann E. +TAB +People +REL +Blackmann;WhiteScar;Saya +TXT + \cxFull Name:\c- + \cf Hermann Edward Ischer\c- + \cxNationality:\c- + \cf German-American\c- + \cxDate of Birth:\c- + \cf 2079-09-17\c- + \cxOccupation:\c- + \cf CEO (Blackmann Arms)\c- + \cxTwitter:\c- + \cf @ischerman\c- + + +Born in **Cologne, Germany** in 2079 as the older of two siblings, **Hermann** was chosen by his father to lead the family business upon his retirement, much to the disappointment of his more competent younger sister. + +Known for his radiant charisma, the man is quite popular online, and made his fame through possibly one of the most peculiar methods: By growing out his eyebrows as much as possible. As of this article's writing, he still holds the world record for it. + +As a lover of fine weaponry, his main goal as head of **Blackmann Arms** would be to further expand on high-caliber weaponry, especially with the worldwide popularity of his grandfather's iconic **.50 OMG** cartridge. In the period of post-war following the **White Scar**, potent weaponry to defend the home front was highly requested, and thus came the **"big booms"** race, which he entered with the first incarnation of the **Silver Bullet** series of rifles, and the **.850 BIG** cartridge. The rest is history, but suffice to say, he did win that race. + +Hermann is also known to indulge in ways to maximize the speed of fully automatic fire, with mixed results, and somehow managing to get all-encroaching firearms regulation groups to look the other way. Some would say that the weaponry featuring these "hilariously broken" rates of fire were simply too ludicrous to even be taken seriously, and there was no need for any regulation when no one in their right mind would even dare to employ such a thing in actual warfare. + +In regards to his personal life, he is happily married to internet celebrity **Jonathan Alfredo Bortson Borges III**, and sometimes appears as a guest in his husband's streams. + +\cxSaya's Notes:\c- +\cfThe babyfaced man of massive eyebrows himself. As far as Americans go, he's pretty cool actually, and I like to hang out with him despite how cringe he can be about Japanese culture.\c- + +\cfThe boyfriend is... ... Well, special. He doesn't talk, beyond uttering a few grunts and mumbles every now and then, but he sure is eloquent as hell in text form. Now, look, I'm not going to judge, but his obsession with that one anime character... It goes places. Nice cosplay, though.\c- diff --git a/lore/default/ibuki.txt b/lore/default/ibuki.txt index 993048604..acae23ef4 100644 --- a/lore/default/ibuki.txt +++ b/lore/default/ibuki.txt @@ -3,7 +3,7 @@ Miyamoto, Ibuki TAB People REL -AkariLabs;WhiteScar;Taro;Saya +AkariLabs;WhiteScar;Taro;Saya;Madcat;Marisa TXT \cxFull Name:\c- \cf Ibuki Miyamoto\c- @@ -13,26 +13,25 @@ TXT \cxDate of Birth:\c- \cf 2074-09-09\c- \cxOccupation:\c- - \cf Mercenary, Nude Model, Vlogger\c- + \cf Mercenary, Model, Vlogger\c- \cxTwitter\c- - \cf @lewd_ibuki (main)\c- - \cf @ibuki_tiddy (photosets)\c- + \cf @red_oni_74\c- **Ibuki** is the result of the **Red Oni** supersoldier program, devised by **Saya Miyamoto** of **Akari Labs**. The existence of this project was kept completely secret until her public reveal in June of 2077. There was much controversy surrounding the Red Oni program, including Saya's personal involvement in it, having accepted a 40 billion USD payment in exchange for it (which was found to be related to Texas having been sold back to Mexico many weeks before). Despite her clear potential and outstanding combat abilities, she was deployed too late, as only moments later, the **White Scar** happened, and with it, the complete devastation of the **United States**. -Many years after the incident, Ibuki was successfully retrieved from the scorched wastelands, having spent a long time as a sort of "roaming mercenary". She returned to Japan in June of 2091, and once settled in, began working odd jobs until finding her true vocation as a nude model. +Many years after the incident, Ibuki was successfully retrieved from the scorched wastelands, having spent a long time as a sort of "roaming mercenary". She returned to Japan in June of 2091, and once settled in, began working odd jobs until finding her true vocation as a model. Other hobbies include vlogging (with varied topics), as well as still occasionally performing independent mercenary work. -Having been created from Saya's own DNA, she has effectively inherited the total immortality of the Miyamoto family, on top of this, further enhancements were performed which have given her increased strength and reflexes, along with effectively making her skin bulletproof. Saya has remarked that this last fact means she does not need to wear any clothing. +Having been created from Saya's own DNA, she has effectively inherited the total immortality of the Miyamoto family, on top of this, further enhancements were performed which have given her increased strength and reflexes, along with effectively making her skin bulletproof. It's even been proven that she can survive an orbital blast. -Additionally citing Saya's rather "interesting" decisions, there is the fact of her particular physical traits beyond those of her strength, including her blatantly obscene bust size, which some deem impractical, much to Saya's disagreement. When asked for further details, she went on a rather lengthy rant on Twitter about the subject of "waifus". +Additionally, citing Saya's rather "interesting" decisions, there is the fact of her particular physical traits beyond those of her strength, as despite being her own clone, the two barely resemble each other. When asked for details regarding these discrepancies, she refused to answer. + +Although Ibuki is legally part of the Miyamoto family, she opted to live on her own. She shares a house with two other mercenary friends, as well as other people who joined in later. Some of Ibuki's closest friends are individuals of renown, such as game developer **Kris Danae**, or the demi-Anarukon witch-warrior **Marisa Azanth**. \cxSaya's Notes:\c- -\cfOK yes sure, I love giga-tiddies. But why does everyone have to call me out for it? Is there really ANYTHING wrong with that, huh? Yeah, thought so.\c- +\cfThose American idiots come to me with a shitload of cash and tell me to make them a supersoldier. Yeah, I suppose they were listening in on all that stuff I had been posting of getting into bioengineering and shit. Boy, they sure were desperate, huh... It was honestly pathetic.\c- -\cfSure, Ibuki was like, my biggest hornypost ever. I couldn't resist, you know. Fucking... American idiots come to me with a shitload of cash and tell me to make them a supersoldier. Yeah, I suppose they were listening in on all that stuff I had been posting of getting into bioengineering and shit. Boy, they sure were desperate, huh... It was honestly pathetic. BUT, I had an idea there. See... I was thirsty as all fuck, and I thought... what if... I made myself a super strong big tiddy gf, right there?\c- +\cfAnd now, it's time for me to confess... Given the chance to make a copy of myself, and to enhance said copy, I ended up fulfilling one of my fantasies. What if I could be taller? And prettier? ... In hindsight, it was really stupid of me, I guess. But there she is, a version of myself that is a big strong goth gf.\c- -\cfAaaaaand that's exactly what happened. I spent like three years on that whole thing, growing her in a damn tube. It was my first time doing all of that, but I somehow got lucky and it was a big success. Though... when they began to notice the "abnormality in the subject's breast growth" I started to get nervous. What if they pull the plug on it? I ended up admitting to it being intentional, saying some random shit that came through my mind, like "distraction tactics" or something, I forgot. In the end they let it slide.\c- +\cfI spent like three years on that whole thing, growing her in a damn tube. It was my first time doing all of that, but I somehow got lucky and it was a big success. Though... when they began to notice the "abnormality in the subject's breast growth" I started to get nervous. What if they pull the plug on it? I ended up admitting to it being intentional, saying some random shit that came through my mind, like "distraction tactics" or something, I forgot. In the end they let it slide.\c- -\cfOh yeah, did you know? Technically speaking, Ibuki is my clone. Yeah, there may have been some slight modifications, but if my growth hadn't stopped early, who knows, I could have looked that hot one day. Really makes you think huh...\c- - -\cfYes, I'm also aware that means I'm engaging in selfcest. So? Is there a problem with that too?\c- +\cfDespite everything, even after confessing to her that I made her that way on purpose, even after all the stuff with the war, she loves me and she's thankful for being alive. She really is too nice to me, seriously...\c- diff --git a/lore/default/imanakit.txt b/lore/default/imanakit.txt index 0988e9f88..f25805d6e 100644 --- a/lore/default/imanakit.txt +++ b/lore/default/imanakit.txt @@ -5,18 +5,23 @@ People REL Onoke;Saya;GhoulHunt;Imanaki TXT -\cxFull Name:\c- -\cf Tetsuya Imanaki\c- -\cxNationality:\c- -\cf Undetermined\c- -\cxDate of Birth:\c- -\cf Undetermined\c- -\cxOccupation:\c- -\cf CEO (Imanaki Corp)\c- + \cxFull Name:\c- + \cf Tetsuya Imanaki\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1983-01-01\c- + \cxOccupation:\c- + \cf CEO (Imanaki Corp)\c- -The founder and CEO of **Imanaki Corp**, and also last surviving member of the Imanaki family following the **Onoke Mansion Murders** of 2003. **Tetsuya** had always been a very secretive individual, so nothing is really known of his personal life or history, nor even his appearance. -During the events of the **Ghoul Hunt**, and later the **Hellbound Incident**, he once again avoided death thanks to his absence from the Imanaki Corp installations. However, no one knew where he was exactly, and ever since these events he completely vanished. + + +The founder and CEO of **Imanaki Corp**, and also last surviving member of the Imanaki family following the **Onoke Mansion Murders** of 2003. **Tetsuya** had always been a very secretive individual, so nothing is really known of his personal life. + +During the events of the **Ghoul Hunt**, and later the **Hellbound Incident**, he once again avoided death thanks to his absence from the Imanaki Corp installations. However, no one knew where he was exactly, and ever since these events he's completely vanished. Some speculate that since he's the last of the Imanaki, this is in order to avoid being located by members of the **Yanasha Clan**, rivals to the family for centuries. \cxSaya's Notes:\c- \cfShort article, I know. There really is nothing on this guy, seriously. It's like... he never left any trace of himself other than just... the fact he once existed and was in charge of all that stuff.\c- + +\cfI mean, there's that one photo, although it's not clear if that's actually him. Either way I can't deny he looks really pretty...\c- diff --git a/lore/default/itamexhammer.txt b/lore/default/itamexhammer.txt index 3fbe43e4b..930cf8f65 100644 --- a/lore/default/itamexhammer.txt +++ b/lore/default/itamexhammer.txt @@ -16,14 +16,16 @@ Strong, reliable, and packing a mighty wallop, the **Reinforced Combat Hammer** The Reinforced Combat Hammer is primarily meant to be used in quickly dismantling barricades or tearing down reinforced barriers, but many have taken to more creative uses, such as in the destruction of armored vehicles, or improvised demolition work of whole buildings. It should also be noted that in actual combat it can prove to be very lethal (and bloody) against unarmored targets. -\cfPrimary Fire:\c- Rapid swings, from side to side. Good for quickly plowing through enemy hordes. +\cfPrimary Fire:\c- Rapid strikes. Good for quickly plowing through enemy hordes. -\cfSecondary Fire:\c- Hold to ready up a vertical swing, release to let the hammer drop on whatever poor fool is standing in front of you. The longer you hold, the stronger the hit. +\cfSecondary Fire:\c- Hold to raise the hammer over your head, release to let it drop on whatever poor fool is standing in front of you. The longer you hold, the stronger the hit. This attack can potentially break down doors, among other things. -\cfTertiary Fire:\c- Hold to ready up a wide horizontal swing, release to perform a potent spin attack, smashing away everything around you. Consecutive presses of tertiary fire while spinning will keep the motion going for longer. Being a combat robot, you should be free from any motion sickness that a human would typically develop while performing this action. +\cfTertiary Fire:\c- Perform a potent spin attack, smashing away everything around you. Consecutive presses of tertiary fire while spinning will keep the motion going for longer. Being a combat robot, you should be free from any motion sickness that a human would typically develop while performing this action. However, you won't be able to control where this spin move takes you. \cfReloading:\c- It's a sledgehammer. There's no reloading, go bash some skulls. +\cfTechniques:\c- Being a pure melee weapon, the hammer benefits directly from the effects of the **Ragekit**, multiplying its damage potential eightfold. + \cxSaya's Notes:\c- \cfShit's strong AND good. Perfect for a Demolitionist such as yourself, huhu. And you know what else is good? It can be even MORE powerful once you pop a Ragekit. You'll become UNSTOPPABLE.\c- diff --git a/lore/default/jojo.txt b/lore/default/jojo.txt new file mode 100644 index 000000000..6998555ee --- /dev/null +++ b/lore/default/jojo.txt @@ -0,0 +1,35 @@ +TAG +Josephson, Joanna +TAB +People +REL +Symnatek;Mixom;Saya +TXT + \cxFull Name:\c- + \cf Joanna Josephson IV\c- + \cxNationality:\c- + \cf Australian\c- + \cxDate of Birth:\c- + \cf 2107-08-24\c- + \cxOccupation:\c- + \cf Chairman (Symnatek)\c- + \cf Chief of Engineering (Itamex)\c- + + + +Born in California in 2107, **Joanna** is the fourth heir to the **Josephson** lineage, and the current head of the **Alliance Industries (Symnaki Tekkanosei)** conglomerate, the largest and most powerful industry titan of the **Australian** territory. + +Looming over others around her by standing at 6'11", her imposing presence has ensured that no one even dares challenge the absolute reign of her company on its home turf. Despite this, however, it is known that she is in good terms with competitor **Mixom**'s CEO **Kasumi Tanaka**. + +While being the head of the main company, she is far more involved in the arms manufacturing side of the **Itamex** subsidiary, both in terms of engineering and testing, as well as the promotion of company products. + +Joanna has certain fame due to her various feats of strength, including a bone-chilling encounter with a wild grizzly bear which turned out far more bone-chilling for the animal itself. When interviewed, she jokingly stated that the bear **"will need a physiotherapist"**. + +\cxSaya's Notes:\c- +\cfThis woman has singlehandedly kept muscle girl artists afloat for ages, and it is very understandable. She is huge, built like a motherfucking truck, and I almost peed myself when I first met her.\c- + +\cf...\c- + +\cfPlease forget I said that last part.\c- + +\cfHuh? What do you mean the dictation system doesn't understand that?\c- diff --git a/lore/default/kereshnovka.txt b/lore/default/kereshnovka.txt index aa8026c11..593e542a4 100644 --- a/lore/default/kereshnovka.txt +++ b/lore/default/kereshnovka.txt @@ -3,7 +3,7 @@ Kereshnovka TAB Lore REL -Cyrus;Saya;Onoke;GhoulHunt;Imanaki;SUSAN;Luna +Reubens;Saya;Onoke;GhoulHunt;Imanaki;SUSAN;Luna TXT \cxName:\c- \cf Kereshnovka\c- diff --git a/lore/default/keychain.txt b/lore/default/keychain.txt index eb12296c5..06083668d 100644 --- a/lore/default/keychain.txt +++ b/lore/default/keychain.txt @@ -19,16 +19,8 @@ Do note that this physical keychain you have on yourself is unrelated to the **K \cxSaya's Notes:\c- \cfAh, yeah, I put some cute things in there that you might like. So, there's one of the bomb emoji, because I mean, you like exploding things don't you? It was kind of an obvious choice, that one.\c- -\cfNext is that silly thing that amused you so much, the "butt bots gonna bot" seal, heh. I have no clue what it references, or who this "Nekohaku" is and why they're an "anal fiend". Must be some in-joke in some community I guess...\c- +\cfNext is that silly thing that amused you so much, the "butt bots gonna bot" seal, heh. I have no clue what it even references, must be some obscure in-joke from somewhere...\c- \cfOf course, there's also a lil' chibi face of me. Think of it as a way for me to always be there with you, wherever you go, hehehe.\c- -\cfAND, very most importantly, oh yes. Don't you think I forgot about that, it sure got engraved right in my mind. Yeah, what happened on our little stream. You really are the sweetest and best bot, Demo-chan. Come on, say it with me, loud and clear:\c- - - \c[TransBlue]██████████████████████\c- - \c[TransPink]██████████████████████\c- - \cj██████████████████████\c- - \c[TransPink]██████████████████████\c- - \c[TransBlue]██████████████████████\c- - -\cfTRANS RIGHTS! FUCK YEAH!\c- +\cfAND, very most importantly, oh yes. Don't you think I forgot about that. It makes certain people very fucking mad, and I hope they never miss even a single glimpse of THAT FLAG as you save the world. Yeah, fuck 'em. They'd side with the demons if it didn't turn out that they're all very sexually progressive as well.\c- diff --git a/lore/default/kirin.txt b/lore/default/kirin.txt index 2e43086ad..5bec7c60e 100644 --- a/lore/default/kirin.txt +++ b/lore/default/kirin.txt @@ -3,12 +3,12 @@ Xanai, Kirin TAB People REL -Anarukon;Novoskhana;Saya;GhoulHunt +Anarukon;Novoskhana;Saya;GhoulHunt;Alakir TXT \cxFull Name:\c- \cf Kirin Xanai\c- \cxTitle:\c- - \cf Child Emperor of the Sykhai Empire of Akkou\c- + \cf Sykhai Emperor of Akkou\c- \cxNationality:\c- \cf Akkouxhei\c- \cxDate of Birth:\c- @@ -22,20 +22,20 @@ Born in 2080 to **Syrakha Yanikov** and **Azya Xanai**, **Kirin** became the emp Despite having the title of "Emperor", he actually holds no real power over the people of Akkou, and instead acts more like a political and economical advisor. As a matter of fact, the **Sykhai Empire** couldn't be described as an empire either. Most would describe it as something closer to a collection of anarchist communes than anything else, unlike the actual, tyrannical **Empire of Novoskhana** that they had seceded from. -For almost 80 whole years as the leader of Akkou, Kirin had remained single, as no one dared to approach him with the intention of marrying, for he was revered as an icon of "untarnished purity", in part due to his own name, Kirin, meaning "innocence" in the **Anarukon** language. It wasn't until a chance meeting with **Saya Miyamoto** in 2171 that this eventually changed. After a rather busy month, in which the young emperor additionally came to meet Saya's other partners, love bloomed, eventually culminating in a collective marriage (\cg♥\c-) in May 8th of 2171, with their union marking the beginning of a great alliance between mankind and the Anarukon, additionally helping heal the old wounds of the **Hellbound Incident**, as this alliance extended to the **Kurenai Kingdom** too, through the shared friendship with **Queen Andreki Anderken**. +For decades as the leader of Akkou, Kirin had remained single, as no one dared to approach him with the intention of marrying, for he was revered as an icon of "untarnished purity", in part due to his own name, Kirin, meaning "innocence" in the **Anarukon** language. It wasn't until a chance meeting with **Saya Miyamoto** in 2171 that this eventually changed. After a rather busy month, in which the young emperor additionally came to meet Saya's other partners, love bloomed, eventually culminating in a collective marriage (\cg♥\c-) in May 8th of 2171, with their union marking the beginning of a great alliance between mankind and the Anarukon, additionally helping heal the old wounds of the **Hellbound Incident**, as this alliance extended to the **Kurenai Kingdom** too, through the shared friendship with **Queen Andreki Anderken**. Outside of marriage, Kirin is additionally in a close relationship with **Alakir of Kanaiarkar**, consul of a neighboring nation he's assisted in the past. Kirin himself can be described as a rather "down to earth" leader. Being quite close to the people of Akkou, and fond of making friends. He is also absolutely adorable. When not attending his duties as advisor of the people, Kirin engages in many of his hobbies, such as painting (being quite skilled at drawing portraits, for example), or the practice of magic alongside his mother. He is also quite fond of videogames, anime, and many other forms of modern entertainment, and is often seen talking extensively on social media about the subject, happily introducing the people of Earth to popular games and shows from his homeworld. \cxSaya's Notes:\c- \cg♥\c- \caKIRIN-KUN!!!!!! YOU'RE SO CUTE!!!!!! I LOVE YOU!!!!\c- \cg♥\c- -\cfAhhhhh, Demo-chan, isn't he the best boyfriend ever? He just makes me so happy, and he's just so good and... yeah~\c- \cg♥\c- +\cfAhhhhh, Demo-chan, isn't he the best husband ever? He just makes me so happy, and he's just so good and... Yeah~\c- \cg♥\c- -\cfSeriously, I never.. NEVER EVER thought that this could happen. That I... that we all... could get our own wonderful immortal cutie. It really is a dream come true, you know...\c- +\cfSeriously, I never.. NEVER EVER thought that this could happen. That I... That we all... Could get our own wonderful immortal cutie. It really is a dream come true, you know...\c- -\cfI just can't stop thinking about him when he's not here... or hell, even when he IS here (guess what). Kirin-kun is just... nggghh... I'm going to go hug him right now.\c- +\cfI just can't stop thinking about him when he's not here... Or even when he IS here (guess what). Kirin-kun is just... Nggghh... I'm going to go hug him right now.\c- -\cfOh he says hi by the way. I told him this isn't a live chat but whatever, hi from our cute husband. Wait, actually... gonna let him write stuff here, why the hell not.\c- +\cfOh he says hi by the way. I told him this isn't a live chat but whatever, hi from our cute husband. Wait, actually... Gonna let him write stuff here, why the hell not.\c- \cgKirin's Notes:\c- \caHello, Demo-chan. I hope you are doing well in your adventures. I wish I could attend the live stream that Sayacchi makes of this, but I am currently a bit busy withghfghfdgsddfh\c- @@ -47,6 +47,6 @@ Kirin himself can be described as a rather "down to earth" leader. Being quite c \cxSaya's Notes:\c- \cfAAAAAAAAAAAAAAAAAAAAAAAA Oh my god that's so adorable!!!!\c- -\cfhehe, yeah, I did go straight for his feet again. His weak spot, huhuhu~\c- +\cfhehe, yeah, I did go straight for his waist again. His weak spot, huhuhu~\c- -\cfBTW don't tell him but... that "important work" he's busy with? It's actually just another game I got him to play. Seriously, it's been only a couple weeks and he's almost finished my whole library. Forget what he said about not watching you though, I'm definitely going to force him to if necessary. I really want to see how he reacts to your wacky antics.\c- +\cfBTW don't tell him but... That "important work" he's busy with? It's actually just another game I got him to play. Seriously, it's been only a couple weeks and he's almost finished my whole library. Forget what he said about not watching you though, I'm definitely going to force him to if necessary. I really want to see how he reacts to your wacky antics.\c- diff --git a/lore/default/kirincummies.txt b/lore/default/kirincummies.txt deleted file mode 100644 index 3a4ec7399..000000000 --- a/lore/default/kirincummies.txt +++ /dev/null @@ -1,20 +0,0 @@ -TAG -Peach Juice -TAB -Item -REL -Kirin;Vestal;Anarukon -TXT -\cxDesignation:\c- -\cf Toot Froot™ Peach Juice\c- -\cxManufacturer:\c- -\cf Vestal Foods\c- -\cxClassification:\c- -\cf Flavored Milk Beverage\c- - -Lactose intolerance? No problem! Our synthetic milk is perfectly safe for consumption by all, no odd side effects, no alien mutations, no apocalyptic effects! It's milk, in a box. Toot Froot™, the world's first synthetic milk beverage, with natural fruit flavoring. - -\cxSaya's Notes:\c- -\cfHehehe... the taste reminds me so much of Kirin-kun. Every sip is like... I'm sure you know too, you understand what the taste is like. Yeah, THAT. He's taken a liking to it, you know, and watching that suction force of his whenever I give him a box, and the face he makes, it's just... oh my. Naughty boy~\c- - -\cfMad props once again for the god of the Anarukon, for making them that way. Delicious peachy cummies...\c- diff --git a/lore/default/kirinmanga.txt b/lore/default/kirinmanga.txt index 3c90409a4..03d041937 100644 --- a/lore/default/kirinmanga.txt +++ b/lore/default/kirinmanga.txt @@ -12,11 +12,11 @@ TXT \cxGenre:\c- \cf Comedy, Ecchi, Romance\c- -\cfSynopsis:\c- When her family moved to the Ruby Empire, Alissa felt like a fish out of water. This was so much different to the rural lifestyle she was used to, everything was new and confusing, but then she met a handsome young boy, who happily helped her along. As the two grew closer, she would eventually be struck by the most unexpected of revelations: He was none other than the emperor of the land himself! Kind, caring, pure-hearted and innocent, he was a polar opposite of her, but despite their differences, the love they felt for each other would only grow stronger. One day, having been invited to the imperial palace, Alissa would bear witness to a side of the emperor he had never shown anyone before. And thus, her new life began. +\cfSynopsis:\c- When her family moved to the Ruby Empire, Alissa felt like a fish out of water. This was so much different to the rural lifestyle she was used to, everything was new and confusing, but then she met a handsome young man, who happily helped her along. As the two grew closer, she would eventually be struck by the most unexpected of revelations: He was none other than the emperor of the land himself! Kind, caring, pure-hearted and innocent, he was a polar opposite of her, but despite their differences, the love they felt for each other would only grow stronger. One day, having been invited to the imperial palace, Alissa would bear witness to a side of the emperor he had never shown anyone before. And thus, her new life began. -An unexpected return to manga writing from **Saya Miyamoto**, co-lead of **Akari Labs**, yet again a romantic story sprinkled with her signature "wholesome and fun lewdness". Despite its short length, it has received much praise online, many wishing for a sequel, or a spin-off centered around the emperor's charismatic maid. Saya herself has made no promises, but has stated that both of these may be considered, someday. +An unexpected return to manga writing from **Saya Miyamoto**, co-lead of **Akari Labs**, yet again a romantic story sprinkled with a comedic ecchi tone. Despite its short length, it has received much praise online, many wishing for a sequel, or a spin-off centered around the emperor's charismatic maid. Saya herself has made no promises, but has stated that both of these may be considered, someday. \cxSaya's Notes:\c- \cfHeh, I wrote this in like three days. Drawing everything, however, took a whole week. Yeah, I'm not that good, I mean, even though I shamelessly trace over 3D models and all (that I make, at least).\c- -\cfIt's obvious what this is all based on. I mean come on, you'd have to be blind af not to realize. The first time we dressed Kirin-kun up just... gave me such a burst of inspiration that I HAD to write it all down. Oh it was just so adorable, wasn't it? Trying out all sorts of cute things on him... Obviously, we didn't take pics, that'd just be rude. But all of that is forever engraved in my mind (and yours).\c- +\cfIt's obvious what this is all based on. I mean come on, you'd have to be blind af not to realize. The first time we dressed Kirin-kun up just... gave me such a burst of inspiration that I HAD to write it all down. Oh it was just so adorable, wasn't it? Trying out all sorts of cute things on him... Oh man...\c- diff --git a/lore/default/kirinplush.txt b/lore/default/kirinplush.txt index 114595c6e..c60d5b3f0 100644 --- a/lore/default/kirinplush.txt +++ b/lore/default/kirinplush.txt @@ -3,7 +3,7 @@ Kirin Plush TAB Item REL -Saya;Kirin;NosKora +Nukritas2xx;Saya;Kirin TXT \cxDesignation:\c- \cf Emperor Kirin Plush\c- diff --git a/lore/default/kirinsippy.txt b/lore/default/kirinsippy.txt new file mode 100644 index 000000000..45b6f10ae --- /dev/null +++ b/lore/default/kirinsippy.txt @@ -0,0 +1,18 @@ +TAG +Peach Juice +TAB +Item +REL +Kirin;Vestal;Anarukon +TXT +\cxDesignation:\c- +\cf Toot Froot™ Peach Juice\c- +\cxManufacturer:\c- +\cf Vestal Foods\c- +\cxClassification:\c- +\cf Flavored Milk Beverage\c- + +Lactose intolerance? No problem! Our synthetic milk is perfectly safe for consumption by all, no odd side effects, no alien mutations, no apocalyptic effects! It's milk, in a box. Toot Froot™, the world's first synthetic milk beverage, with natural fruit flavoring. + +\cxSaya's Notes:\c- +\cfIf there's a bond that we all share, it has to be our love for this juice, ever since we met Kirin-kun.\c- diff --git a/lore/default/kmonn.txt b/lore/default/kmonn.txt index db7e188d3..8ac7105f1 100644 --- a/lore/default/kmonn.txt +++ b/lore/default/kmonn.txt @@ -24,6 +24,6 @@ Among some of his most notable creations, there's the **Ray-Khom**, the standard Alongside his father, he was one of the many engineers behind the famous **K79-D Metareality Driver** project. A weapon of legend whose name is well known by many, but none remember what it did, not even those involved in its creation. \cxSaya's Notes:\c- -\cfWow this guy is OLD. I know that those peeps pretty much live forever but, wow, that's even more than the old man from Tach-Engine. Talk about an age gap they got going there (yeah).\c- +\cfWow this guy is OLD. I know that those peeps pretty much live forever but, wow, that's even more than the old man from Tach-Engine. I mean, I've met his father too, and oh boy... Beyond ancient.\c- \cfOh yeah, the article mentions the K79-D. Real fucking weird shit there. I actually DO know what happened to it, because Maruku-sama told me, since she was present, and is a god and all that. Apparently the weapon tried to directly violate causality during the test fire, so a "self-preservation mechanism" of the universe flipped out and it was erased instantly along with all the info on how it was created (even going as far as doing memory wipes, holy fuck).\c- diff --git a/lore/default/locke.txt b/lore/default/locke.txt index e641a630c..2b2edd2b0 100644 --- a/lore/default/locke.txt +++ b/lore/default/locke.txt @@ -22,6 +22,6 @@ TXT His insanity peaked in 2049, when he attempted to "take over the world". This event, however, backfired so spectacularly that afterwards he completely disappeared from the public eye. Once he was gone, the various deadly toys he had made found new life being resold as actual weapons in many online marketplaces. \cxSaya's Notes:\c- -\cfSo, yeah... guy's totally a lost case. aaaaall screws loose. But yeah, as you could read there, those "toys" of his, they're quite reliable weapons, so I got my hands on some of 'em and put them in your arsenal (wait, that sounds wrong if you don't read that last word in full, doesn't it).\c- +\cfSo, yeah... guy's totally a lost case. aaaaall screws loose. But yeah, as you could read there, those "toys" of his, they're quite reliable weapons, so I got my hands on some of 'em and shoved one in your arsenal (wait, that sounds wrong if you don't read that last word in full, doesn't it).\c- \cfJust in case, you better be REALLY careful with these things. Who knows... shit could probably backfire catastrophically at any moment, JUST LIKE HIS PLANS FOR WORLD DOMINATION DID WWWWWWWWWWWW\c- diff --git a/lore/default/madcat.txt b/lore/default/madcat.txt new file mode 100644 index 000000000..cfb1eb1ba --- /dev/null +++ b/lore/default/madcat.txt @@ -0,0 +1,162 @@ +TAG +MADCAT +TAB +People +REL +Saya;AkariLabs;Demolitionist;UAC;Ibuki +TXT + \cxFull Name:\c- + \cf Kris "MADCAT" Danae\c- + \cxNationality:\c- + \cf German\c- + \cxDate of Birth:\c- + \cf 2124-06-07\c- + \cxOccupation:\c- + \cf Founder, Lead Programmer (MADCAT Studio)\c- + \cf Senior Software Engineer (Akari Labs)\c- + \cxTwitter:\c- + \cf @danae_kris\c- + +**Kris Danae** was born in 2124, as the younger sister of **Stefan Danae**. Not much is known about her parents, but she has stated they're scientists from Bavaria, Germany, involved in genetic research. From this, it can be deduced that both herself and her brother are among the many documented **Genetically Engineered Catfolk** that have been appearing since the 2090s. + +Unlike her less skilled brother, Kris is highly intelligent, and excels in computer-related tasks. She has a knack for programming, which allowed her to earn quite a fame releasing retro games under the label of **MADCAT Studio**. The simple, yet addictive **Cat Catcher** has been installed in over 10 billion mobile and desktop devices worldwide since its release in 2140. That same year, she was approached by **Hamsick Co-op** in order to co-develop a revival of the popular **Red Roger** series, to be released on its 60th anniversary, two years later. + +Her popularity eventually drew the attention of **Saya Miyamoto**, of **Akari Labs**, who in 2143 offered her a position as senior software engineer, assisting in various aspects of interface design. In addition, she would later be given the task of creating **Demolitionist**-themed games in order to promote the program (suspiciously around the same time the first person shooter **Doom**, themed after the **UAC**'s most famous marine, was announced). + +Not much is known of Kris's personal life. She lives with her brother in a small house in Aoshima, Japan, surrounded by many stray cats they feel a kinship towards. In regards to relationships, Kris has been found to be dating the **Red Oni**, **Ibuki Miyamoto**, whom she pays visits to every weekend. Despite her new position at Akari Labs, she continues to develop independent titles. + +Body of Work: + +- MADCAT Minigames (2135) +- Stray Cat (2137) +- Stray Cat 2 (2137) +- Bandit Fang (2138) +- Nekoprint Solitaire (2138) +- Stray Cat 3: Catastrophe (2139) +- Cat Catcher (2140) +- Stray Cat Collection (2141) +- Red Roger Returns (2142, w/ Hamsick Co-op) +- Nekopocalypse (2143) +- Nekopocalypse EX (2144) +- Red Roger in Capital Struggle (2145, w/ Hamsick Co-op) +- DemolitionOS (2148, w/ Saya and Taro Miyamoto) +- Demo Land Adventure (2148) + +\cxSaya's Notes:\c- + +\cfGood ol' Kris-san. Can't have enough of her mad skills, for sure. You know her, when she gets an idea, she has to make it into a game, that's just how it is. And most of her projects obviously have to be cat-themed. Nyaa and all that stuff.\c- + +\cfBy the way, all the visual interfaces you see through your eyes? She designed them. Pretty simplistic, sure, but it works nicely. I knew she'd be able to work flawlessly for a target resolution of 640x400. You know me, I'll forever be an advocate for the superiority of 16:10. Ultrawide be damned, that stupid fad hasn't died even in this century.\c- + +\cfUh, so what else is there to say... The two of us kinda think alike at times, and that amuses me. People even say we LOOK alike, but honestly, I ain't seeing it.\c- +TXT + \cxFull Name:\c- + \cf Kris "MADCAT" Danae\c- + \cxNationality:\c- + \cf German\c- + \cxDate of Birth:\c- + \cf 2124-06-07\c- + \cxOccupation:\c- + \cf Founder, Lead Programmer (MADCAT Studio)\c- + \cf Senior Software Engineer (Akari Labs)\c- + \cxTwitter:\c- + \cf @danae_kris\c- + +**Kris Danae** was born in 2124, as the younger sister of **Stefan Danae**. Not much is known about her parents, but she has stated they're scientists from Bavaria, Germany, involved in genetic research. From this, it can be deduced that both herself and her brother are among the many documented **Genetically Engineered Catfolk** that have been appearing since the 2090s. + +Unlike her less skilled brother, Kris is highly intelligent, and excels in computer-related tasks. She has a knack for programming, which allowed her to earn quite a fame releasing retro games under the label of **MADCAT Studio**. The simple, yet addictive **Cat Catcher** has been installed in over 10 billion mobile and desktop devices worldwide since its release in 2140. That same year, she was approached by **Hamsick Co-op** in order to co-develop a revival of the popular **Red Roger** series, to be released on its 60th anniversary, two years later. + +Her popularity eventually drew the attention of **Saya Miyamoto**, of **Akari Labs**, who in 2143 offered her a position as senior software engineer, assisting in various aspects of interface design. In addition, she would later be given the task of creating **Demolitionist**-themed games in order to promote the program (suspiciously around the same time the first person shooter **Doom**, themed after the **UAC**'s most famous marine, was announced). + +Not much is known of Kris's personal life. She lives with her brother in a small house in Aoshima, Japan, surrounded by many stray cats they feel a kinship towards. In regards to relationships, Kris has been found to be dating the **Red Oni**, **Ibuki Miyamoto**, whom she pays visits to every weekend. Despite her new position at Akari Labs, she continues to develop independent titles. + +Body of Work: + +- MADCAT Minigames (2135) +- Stray Cat (2137) +- Stray Cat 2 (2137) +- Bandit Fang (2138) +- Nekoprint Solitaire (2138) +- Stray Cat 3: Catastrophe (2139) +- Cat Catcher (2140) +- Stray Cat Collection (2141) +- Red Roger Returns (2142, w/ Hamsick Co-op) +- Nekopocalypse (2143) +- Nekopocalypse EX (2144) +- Red Roger in Capital Struggle (2145, w/ Hamsick Co-op) +- DemolitionOS (2148, w/ Saya and Taro Miyamoto) +- Demo Land Adventure (2148) +- Felix Arcana (2150) +- Red Roger and the Demon Deed (2151, w/ Hamsick Co-op) +- Felix Arcana 2 (2153) +- Felix Arcana 2: Sky Crown (2154) +- Felix Arcana 2: Blade Soul (2154) +- Cat Catcher Revolution (2158) +- Felix Arcana: Radiant Edition (2160) +- Red Roger vs. Blue Baron (2161, w/ Hamsick Co-op) +- Felix Arcana 3 (2163) +- Interstellar Demolitionist (2171) + +\cxSaya's Notes:\c- + +\cfGood ol' Kris-san. Can't have enough of her mad skills, for sure. You know her, when she gets an idea, she has to make it into a game, that's just how it is. And most of her projects obviously have to be cat-themed. Nyaa and all that stuff.\c- + +\cfBy the way, all the visual interfaces you see through your eyes? She designed them. Pretty simplistic, sure, but it works nicely. I knew she'd be able to work flawlessly for a target resolution of 640x400. You know me, I'll forever be an advocate for the superiority of 16:10. Ultrawide be damned, that stupid fad hasn't died even in this century.\c- + +\cfUh, so what else is there to say... The two of us kinda think alike at times, and that amuses me. People even say we LOOK alike, but honestly, I ain't seeing it.\c- +TXT + \cxFull Name:\c- + \cf Kris "MADCAT" Danae\c- + \cxNationality:\c- + \cf German\c- + \cxDate of Birth:\c- + \cf 2124-06-07\c- + \cxOccupation:\c- + \cf Founder, Lead Programmer (MADCAT Studio)\c- + \cf Senior Software Engineer (Akari Labs)\c- + \cxTwitter:\c- + \cf @danae_kris\c- + +**Kris Danae** was born in 2124, as the younger sister of **Stefan Danae**. Not much is known about her parents, but she has stated they're scientists from Bavaria, Germany, involved in genetic research. From this, it can be deduced that both herself and her brother are among the many documented **Genetically Engineered Catfolk** that have been appearing since the 2090s. + +Unlike her less skilled brother, Kris is highly intelligent, and excels in computer-related tasks. She has a knack for programming, which allowed her to earn quite a fame releasing retro games under the label of **MADCAT Studio**. The simple, yet addictive **Cat Catcher** has been installed in over 10 billion mobile and desktop devices worldwide since its release in 2140. That same year, she was approached by **Hamsick Co-op** in order to co-develop a revival of the popular **Red Roger** series, to be released on its 60th anniversary, two years later. + +Her popularity eventually drew the attention of **Saya Miyamoto**, of **Akari Labs**, who in 2143 offered her a position as senior software engineer, assisting in various aspects of interface design. In addition, she would later be given the task of creating **Demolitionist**-themed games in order to promote the program (suspiciously around the same time the first person shooter **Doom**, themed after the **UAC**'s most famous marine, was announced). + +Not much is known of Kris's personal life. She lives with her brother in a small house in Aoshima, Japan, surrounded by many stray cats they feel a kinship towards. In regards to relationships, Kris has been found to be dating the **Red Oni**, **Ibuki Miyamoto**, whom she pays visits to every weekend. Despite her new position at Akari Labs, she continues to develop independent titles. + +Body of Work: + +- MADCAT Minigames (2135) +- Stray Cat (2137) +- Stray Cat 2 (2137) +- Bandit Fang (2138) +- Nekoprint Solitaire (2138) +- Stray Cat 3: Catastrophe (2139) +- Cat Catcher (2140) +- Stray Cat Collection (2141) +- Red Roger Returns (2142, w/ Hamsick Co-op) +- Nekopocalypse (2143) +- Nekopocalypse EX (2144) +- Red Roger in Capital Struggle (2145, w/ Hamsick Co-op) +- DemolitionOS (2148, w/ Saya and Taro Miyamoto) +- Demo Land Adventure (2148) +- Felix Arcana (2150) +- Red Roger and the Demon Deed (2151, w/ Hamsick Co-op) +- Felix Arcana 2 (2153) +- Felix Arcana 2: Sky Crown (2154) +- Felix Arcana 2: Blade Soul (2154) +- Cat Catcher Revolution (2158) +- Felix Arcana: Radiant Edition (2160) +- Red Roger vs. Blue Baron (2161, w/ Hamsick Co-op) +- Felix Arcana 3 (2163) +- Interstellar Demolitionist (2171) +- Demolition Quest (2171) + +\cxSaya's Notes:\c- + +\cfGood ol' Kris-san. Can't have enough of her mad skills, for sure. You know her, when she gets an idea, she has to make it into a game, that's just how it is. And most of her projects obviously have to be cat-themed. Nyaa and all that stuff.\c- + +\cfBy the way, all the visual interfaces you see through your eyes? She designed them. Pretty simplistic, sure, but it works nicely. I knew she'd be able to work flawlessly for a target resolution of 640x400. You know me, I'll forever be an advocate for the superiority of 16:10. Ultrawide be damned, that stupid fad hasn't died even in this century.\c- + +\cfUh, so what else is there to say... The two of us kinda think alike at times, and that amuses me. People even say we LOOK alike, but honestly, I ain't seeing it.\c- diff --git a/lore/default/maidbot.txt b/lore/default/maidbot.txt index 0fb6a5b10..038e3aad5 100644 --- a/lore/default/maidbot.txt +++ b/lore/default/maidbot.txt @@ -35,8 +35,6 @@ After these events, Meido became a full member of the family, adopting the Miyam \cfIt's nice that you two are so close, like good sisters. Cutie robutts must stick together, indeed.\c- \cfAh, Zana-sama, bless you and your super mad skills, making my dreams come true. I remember I'd always fantasize about Meido-chan becoming self-aware and confessing her love to me, and I'd think that was TOTALLY impossible. Heh... silly ol' me.\c- - -\cfHehe... I'm really quite proud of making her "fully featured", by the way... Best decision of my life. Let me tell you, when we do "things" together... it feels like heaven~\c- \cg♥\c- TXT \cxFull Name:\c- \cf Meido Miyamoto\c- @@ -71,6 +69,4 @@ In May of 2171, together with Saya and her other partners, she married **Emperor \cfAh, Zana-sama, bless you and your super mad skills, making my dreams come true. I remember I'd always fantasize about Meido-chan becoming self-aware and confessing her love to me, and I'd think that was TOTALLY impossible. Heh... silly ol' me.\c- -\cfHehe... I'm really quite proud of making her "fully featured", by the way... Best decision of my life. Let me tell you, when we do "things" together... it feels like heaven~\c- \cg♥\c- - \cfUpdate: By the way, I'm really happy that Kirin-kun managed to get her into singing again. Of course, how could she even resist his charms, right?\c- diff --git a/lore/default/marisa.txt b/lore/default/marisa.txt new file mode 100644 index 000000000..c4b301149 --- /dev/null +++ b/lore/default/marisa.txt @@ -0,0 +1,111 @@ +TAG +Azanth, Marisa +TAB +People +REL +Ibuki;WhiteScar;Sankaideriha;Cinnamon;Saya;Hell;Anarukon;UAC;XAnimen;Parthoris;Kirin;Demolitionist +TXT + \cxFull Name:\c- + \cf Marisa Azanth\c- + \cf Child of Ash (nickname)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1989-10-04\c- + \cxOccupation:\c- + \cf Mercenary (Demon Hunter)\c- + \cxTwitter\c- + \cf @marisa_ashen\c- + +Born in **Sankaideriha** from the union of the **Demonic** grim reaper **Akari Shiroko** and the nomadic **Anarukon** pyromancer **Sarkha Azanth**, **Marisa** is the result of a blasphemous relationship between members of two conflicting civilizations, those of Demons and Anarukon. Despite their differences and the clear belonging to two factions at war, the love between her parents is undeniable, demonstrating that both sides can set aside their differences and enjoy a fruitful life together. + +Having been raised by such an odd couple of outcasts, Marisa lacks certain social aptitudes, but excels in other skills, such as magic and swordfighting. Upon reaching adulthood, she began to take odd jobs as a mercenary, slaying stray demons and other beasts throughout various locations. Around 2084, one of these jobs brought her to **Earth**. Specifically, to the **Washington DC** exclusion zone. While oblivious to the events of the **White Scar**, she was visibly confused by the ruined state of the city, but nevertheless, she tracked down her target. To her surprise, however, the kill had already been claimed, by none other than the **Red Oni**, **Ibuki Miyamoto**. + +The two spent some time working together, and a peculiar friendship bloomed. Unfortunately, when it was time for her to return home, she realized that the warp gate she had used could only take one person. Ibuki let her go, with the promise that they'd surely meet again once all was over. And so, almost 10 years later, following the Red Oni's return to **Japan**, their awaited reunion took place. Marisa had settled down at her own home in **Kasukabe**, and arranged for Ibuki to move there too. Along the way, their spacious shared home would seemingly grow more cramped with the introduction of various other roommates, as well as the occasional visits of Marisa's boyfriend, an **Odmorian** ranger called **Cinnamon Valentine**. + +To this day, Marisa continues to slay demons as her main occupation, so, as expected, the ongoing invasion has kept her and many others busy. Aware of the **Demolitionist**'s mission, she's somewhat "taking it easy", however. As of this article's writing, she was last seen heading to **Nagoya**, one of the main invasion hotspots in Japan, thanks in part to the existence of various **UAC** installations within. + +\cxSaya's Notes:\c- +\cfAh, now this is one gal you haven't personally met. I mean, what with her job basically keeping her out there slicing and dicing all day. Ibuki told me that she almost gave up at one point, but when she told her about you and your mission, she got a huge confidence boost. Of course, both her and Ibuki are out in the wild doing their work. I'm sure they turned this into a competition now that you've factored in on the whole situation. That's typical of them.\c- + +\cfAnd what can I say about her? Well, she's the quiet type, really. Less talking, more acting, you know. Lets her sword do the speaking, kinda. And boy, is it a sword. It's HUGE, the thing she has. I heard she even got a bigger one in reserve, a sort of award she got for being super-strong or whatever. Fucking thing is just a massive, raw hunk of metal, very... Gutsy.\c- + +\cfReally hope you get to meet her someday, bet she'll find you cute. Speaking of which, I know her weakness: Capybara. Yeah, put one of 'em in front of her and she'll melt away from cuteness. Little trick I learned from her boyfriend.\c- + +\cfOh, and the boyfriend? Well, a really cool guy. We don't talk much, but he's been my main source for learning about Odmorian culture. Cleared some misconceptions real fast, and was very nice about it, too. His name is cute, too. Cinnamon, heh. Mari-san calls him Cinnabun, which is even cuter. But don't be deceived, despite all the cuteness, he's also a battle-hardened warrior like her, real tough guy, even has this HUGE gun too.\c- + +\cfYou REALLY need to meet them, seriously.\c- +TXT + \cxFull Name:\c- + \cf Marisa Azanth\c- + \cf Child of Ash (nickname)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1989-10-04\c- + \cxOccupation:\c- + \cf Mercenary (Demon Hunter)\c- + \cxTwitter\c- + \cf @marisa_ashen\c- + +Born in **Sankaideriha** from the union of the **Demonic** grim reaper **Akari Shiroko** and the nomadic **Anarukon** pyromancer **Sarkha Azanth**, **Marisa** is the result of a blasphemous relationship between members of two conflicting civilizations, those of Demons and Anarukon. Despite their differences and the clear belonging to two factions at war, the love between her parents is undeniable, demonstrating that both sides can set aside their differences and enjoy a fruitful life together. + +Having been raised by such an odd couple of outcasts, Marisa lacks certain social aptitudes, but excels in other skills, such as magic and swordfighting. Upon reaching adulthood, she began to take odd jobs as a mercenary, slaying stray demons and other beasts throughout various locations. Around 2084, one of these jobs brought her to **Earth**. Specifically, to the **Washington DC** exclusion zone. While oblivious to the events of the **White Scar**, she was visibly confused by the ruined state of the city, but nevertheless, she tracked down her target. To her surprise, however, the kill had already been claimed, by none other than the **Red Oni**, **Ibuki Miyamoto**. + +The two spent some time working together, and a peculiar friendship bloomed. Unfortunately, when it was time for her to return home, she realized that the warp gate she had used could only take one person. Ibuki let her go, with the promise that they'd surely meet again once all was over. And so, almost 10 years later, following the Red Oni's return to **Japan**, their awaited reunion took place. Marisa had settled down at her own home in **Kasukabe**, and arranged for Ibuki to move there too. Along the way, their spacious shared home would seemingly grow more cramped with the introduction of various other roommates, as well as the occasional visits of Marisa's boyfriend, an **Odmorian** ranger called **Cinnamon Valentine**. + +Her participation in the **Demon Invasion** of 2148 was commendable, with a body count in the tens of thousands, and a special, shared accolade with Ibuki Miyamoto for the swift cleanup of the demon-infested **UAC** installations in **Nagoya**. + +\cxSaya's Notes:\c- +\cfAh, now this is one gal you haven't personally met. I mean, what with her job basically keeping her out there slicing and dicing all day. Ibuki told me that she almost gave up at one point, but when she told her about you and your mission, she got a huge confidence boost. Of course, both her and Ibuki are out in the wild doing their work. I'm sure they turned this into a competition now that you've factored in on the whole situation. That's typical of them.\c- + +\cfAnd what can I say about her? Well, she's the quiet type, really. Less talking, more acting, you know. Lets her sword do the speaking, kinda. And boy, is it a sword. It's HUGE, the thing she has. I heard she even got a bigger one in reserve, a sort of award she got for being super-strong or whatever. Fucking thing is just a massive, raw hunk of metal, very... Gutsy.\c- + +\cfReally hope you get to meet her someday, bet she'll find you cute. Speaking of which, I know her weakness: Capybara. Yeah, put one of 'em in front of her and she'll melt away from cuteness. Little trick I learned from her boyfriend.\c- + +\cfOh, and the boyfriend? Well, a really cool guy. We don't talk much, but he's been my main source for learning about Odmorian culture. Cleared some misconceptions real fast, and was very nice about it, too. His name is cute, too. Cinnamon, heh. Mari-san calls him Cinnabun, which is even cuter. But don't be deceived, despite all the cuteness, he's also a battle-hardened warrior like her, real tough guy, even has this HUGE gun too.\c- + +\cfYou REALLY need to meet them, seriously.\c- + +\cfUpdate: Oh boy, what an encounter. You know, I said it many times, I wish I could have snapped a pic of the face you made when you saw that gun she has. Yeah, should've told you she's not just about big swords, but also big guns. But hey, she admires you too, and that's pretty neat. Hell, I bet that once we put you into the mission to Parthoris, she'll want to go in right after. That's just how she is.\c- + +\cfI hope she doesn't cause too much trouble, because I also plan on sending Ibuki to do some scouting in a couple places.\c- +TXT + \cxFull Name:\c- + \cf Marisa Azanth\c- + \cf Child of Ash (nickname)\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 1989-10-04\c- + \cxOccupation:\c- + \cf Mercenary (Demon Hunter)\c- + \cxTwitter\c- + \cf @marisa_ashen\c- + +Born in **Sankaideriha** from the union of the **Demonic** grim reaper **Akari Shiroko** and the nomadic **Anarukon** pyromancer **Sarkha Azanth**, **Marisa** is the result of a blasphemous relationship between members of two conflicting civilizations, those of Demons and Anarukon. Despite their differences and the clear belonging to two factions at war, the love between her parents is undeniable, demonstrating that both sides can set aside their differences and enjoy a fruitful life together. + +Having been raised by such an odd couple of outcasts, Marisa lacks certain social aptitudes, but excels in other skills, such as magic and swordfighting. Upon reaching adulthood, she began to take odd jobs as a mercenary, slaying stray demons and other beasts throughout various locations. Around 2084, one of these jobs brought her to **Earth**. Specifically, to the **Washington DC** exclusion zone. While oblivious to the events of the **White Scar**, she was visibly confused by the ruined state of the city, but nevertheless, she tracked down her target. To her surprise, however, the kill had already been claimed, by none other than the **Red Oni**, **Ibuki Miyamoto**. + +The two spent some time working together, and a peculiar friendship bloomed. Unfortunately, when it was time for her to return home, she realized that the warp gate she had used could only take one person. Ibuki let her go, with the promise that they'd surely meet again once all was over. And so, almost 10 years later, following the Red Oni's return to **Japan**, their awaited reunion took place. Marisa had settled down at her own home in **Kasukabe**, and arranged for Ibuki to move there too. Along the way, their spacious shared home would seemingly grow more cramped with the introduction of various other roommates, as well as the occasional visits of Marisa's boyfriend, an **Odmorian** ranger called **Cinnamon Valentine**. + +Her participation in the **Demon Invasion** of 2148 was commendable, with a body count in the tens of thousands, and a special, shared accolade with Ibuki Miyamoto for the swift cleanup of the demon-infested **UAC** installations in **Nagoya**. + +\cxSaya's Notes:\c- +\cfAh, now this is one gal you haven't personally met. I mean, what with her job basically keeping her out there slicing and dicing all day. Ibuki told me that she almost gave up at one point, but when she told her about you and your mission, she got a huge confidence boost. Of course, both her and Ibuki are out in the wild doing their work. I'm sure they turned this into a competition now that you've factored in on the whole situation. That's typical of them.\c- + +\cfAnd what can I say about her? Well, she's the quiet type, really. Less talking, more acting, you know. Lets her sword do the speaking, kinda. And boy, is it a sword. It's HUGE, the thing she has. I heard she even got a bigger one in reserve, a sort of award she got for being super-strong or whatever. Fucking thing is just a massive, raw hunk of metal, very... Gutsy.\c- + +\cfReally hope you get to meet her someday, bet she'll find you cute. Speaking of which, I know her weakness: Capybara. Yeah, put one of 'em in front of her and she'll melt away from cuteness. Little trick I learned from her boyfriend.\c- + +\cfOh, and the boyfriend? Well, a really cool guy. We don't talk much, but he's been my main source for learning about Odmorian culture. Cleared some misconceptions real fast, and was very nice about it, too. His name is cute, too. Cinnamon, heh. Mari-san calls him Cinnabun, which is even cuter. But don't be deceived, despite all the cuteness, he's also a battle-hardened warrior like her, real tough guy, even has this HUGE gun too.\c- + +\cfYou REALLY need to meet them, seriously.\c- + +\cfUpdate: Oh boy, what an encounter. You know, I said it many times, I wish I could have snapped a pic of the face you made when you saw that gun she has. Yeah, should've told you she's not just about big swords, but also big guns. But hey, she admires you too, and that's pretty neat. Hell, I bet that once we put you into the mission to Parthoris, she'll want to go in right after. That's just how she is.\c- + +\cfI hope she doesn't cause too much trouble, because I also plan on sending Ibuki to do some scouting in a couple places.\c- + +\cfUpdate 2: Can't believe it took until our wedding with Kirin to meet her parents. You saw, we all saw, that Sarkha gal is a total nutcase, I can see who she takes after, at least in part, because her other mom is the surprisingly nicest, kindest woman I've ever met. Like, even with the whole thing of being an assassin and stuff... Aaaaand then I learned, that she's descended from Hell royalty. No wonder the demons are so intimidated by her, makes a lot of sense.\c- + +\cfI swear, between her and her two moms, they all look like Dark Souls characters.\c- diff --git a/lore/default/milkbreads.txt b/lore/default/milkbreads.txt index 67c406653..accb97a02 100644 --- a/lore/default/milkbreads.txt +++ b/lore/default/milkbreads.txt @@ -12,7 +12,7 @@ TXT \cxClassification:\c- \cf Pastry\c- -A delicacy of Akkouxhei cuisine, **Milk Breads** as they are commonly called by the locals are a soft, sugary pastry typically eaten during special events, such as birthdays or weddings. Soft, fluffy buns of sweet bread enhanced with the refined sap of the native **Yranakha** trees and mixed with condensed **Gray Beast** milk, they melt in the mouth with each bite, becoming increasingly sweeter. +A delicacy of Akkouxhei cuisine, **Milk Breads** as they are commonly called by the locals are a soft, sugary pastry, akin to brioche, that are typically eaten during special events, such as birthdays or weddings. Soft, fluffy buns of sweet bread enhanced with the refined sap of the native **Yranakha** trees and mixed with condensed **Gray Beast** milk, they melt in the mouth with each bite, becoming increasingly sweeter. Though it is not generally a problem for the native **Anarukon**, the obscene sugar content of these has proven to be dangerous to mortals unless consumed in moderation, potentially resulting in the development of cardiovascular diseases or even death. @@ -21,4 +21,4 @@ Nevertheless, they are quite popular around the world. Many visit the **Sykhai E \cxSaya's Notes:\c- \cfYou know, learning that the milk comes from THOSE THINGS has absolutely not changed at all my opinion. This stuff is heavenly, it's the most delicious thing ever created, it's so sweet I'd just die for them. I mean, it kinda happened once when I overdosed on them (good god that was embarrassing). Yeah, no wonder I fucking died when I had more sugar than blood in my body. I remember Kirin-kun said he actually heard my heart explode, but I bet he was just being dramatic. There's no way that's what happened.\c- -\cfOh yeah, and there's a myth going around that if you eat enough of these your boobs will get huge. I totally don't believe that's possible, of course not. What kind of fool would purposefully overdose on them to grow a pair of real big honkers?\c- +\cfOh yeah, and there's a myth going around that if you eat enough of these your boobs will get huge. I totally don't believe that's possible, of course not. What kind of fool would purposefully overdose on them?\c- diff --git a/lore/default/mistergun.txt b/lore/default/mistergun.txt deleted file mode 100644 index 1ab2d7896..000000000 --- a/lore/default/mistergun.txt +++ /dev/null @@ -1,33 +0,0 @@ -TAG -Mortal Rifle -TAB -Item -REL -NosKora;Saya -TXT -\cxDesignation:\c- -\cf Mortal Rifle\c- -\cf "Mister" (common nickname)\c- -\cxManufacturer:\c- -\cf Plutoni Incorporated\c- -\cxDesignation:\c- -\cf Multi-Purpose Battle Rifle\c- - -The **Mortal Rifle** was devised in the early 2100s by students of the **University of Nos-Kora** who thought there were simply too many different guns by different armies of different species, so... They would make something that'd be truly "universal" for everyone. - -It is chambered in a peculiar 4.44x44.4mm caliber, sporting a barrel length of 44.4cm, and employs odd square shaped ammunition, the nature of which, along with its firing mechanisms, are an enigma. These compact, high-explosive telescoped rounds pack more power in them than the ammunition of most human-made battle rifles of higher calibers. In addition, it also employs 44.4mm grenades from an under-barrel lobber. These grenades burst into lesser target-seeking bombs on impact, making them ideal for scattered targets. - -\cfPrimary Fire:\c- Steady shooting of the primary ammunition. - -\cfSecondary Fire:\c- Launches an under-barrel grenade. If empty, loads a new one. - -\cfTertiary Fire:\c- Alternates between operation modes for the rifle. Switching between "precision shot" (standard semi-auto), "cluster shot" (somehow behaving like a shotgun with the same ammunition), "stream shot" (behaves like full auto but appears to shoot four bullets per bullet?), and "overpressure shot" (somehow appearing to "charge" the ammunition before firing it out with higher potency and velocity). - -\cfReload:\c- Does what you'd expect. - -\cxSaya's Notes:\c- -\cfAt this point I can't even be bothered to be confused by anything that comes out of there, seriously.\c- - -\cfThis thing is an assault rifle, a shotgun, a machine gun and an anti-tank rifle all in one, with the same exact ammo. And it makes no sense, sure, but it works, however it does.\c- - -\cfDon't get too comfortable with it, by the way. I bet once it starts to grow on you you won't be able to go back to any other weapon.\c- diff --git a/lore/default/misterrifle.txt b/lore/default/misterrifle.txt new file mode 100644 index 000000000..e3d79fb80 --- /dev/null +++ b/lore/default/misterrifle.txt @@ -0,0 +1,37 @@ +TAG +Mortal Rifle +TAB +Item +REL +NosKora;Saya +TXT +\cxDesignation:\c- +\cf Mortal Rifle\c- +\cf "Mister" (common nickname)\c- +\cxManufacturer:\c- +\cf Plutoni Incorporated\c- +\cxDesignation:\c- +\cf Multi-Purpose Battle Rifle\c- + +The **Mortal Rifle** was devised in the early 2100s by students of the **University of Nos-Kora** who thought there were simply too many different guns by different armies of different species, so... They would make something that'd be truly "universal" for everyone. + +It is chambered in a peculiar 4.44x44.4mm caliber, sporting a barrel length of 44.4cm, and employs odd square shaped ammunition, the nature of which, along with its firing mechanisms, are an enigma. These compact, high-explosive telescoped rounds pack more power in them than the ammunition of most human-made battle rifles of higher calibers. In addition, it also employs 44.4mm grenades from an under-barrel lobber. These grenades burst into lesser target-seeking bombs on impact, making them ideal for scattered targets. + +\cfPrimary Fire:\c- Steady shooting of the primary ammunition. + +\cfSecondary Fire:\c- Launches an under-barrel grenade. If empty, loads a new one. Best used against large groups of enemies, as this will allow a more uniform distribution of sub-grenade target designations for maximum damage coverage. + +\cfTertiary Fire:\c- Alternates between operation modes for the rifle. Switching between "precision shot" (semi-auto, pinpoint accuracy), "cluster shot" (15-round buckshot, high spread), "stream shot" (4-subround burst, low accuracy), and "overpressure shot" (high-power penetrating bolt). + +\cfReload:\c- One of the few operations that does what you'd logically expect. + +\cfTechniques:\c- Each of the fire modes has a specific situation they're optimimal for, make sure to experiment and study their behavior so you may then increase your efficiency in the battlefield. + +\cxSaya's Notes:\c- +\cfAt this point I can't even be bothered to be confused by anything that comes out of there, seriously.\c- + +\cfThis thing is an assault rifle, a shotgun, a machine gun and an anti-tank rifle all in one, with the same exact ammo. And it makes no sense, sure, but it works, however it does.\c- + +\cfAlso those grenades are even weirder. You put a ruler to them and they're clearly 25mm or so, but somehow they GROW to full size after they're shot. AND THE WHOLE AUTO-TARGET FUNCTIONALITY TERRIFIES ME CONCEPTUALLY. THIS WAS MADE WITH CARPET BOMBING IN MIND, 100% SURE OF IT.\c- + +\cfSeriously, don't get too comfortable with it. I bet once it starts to grow on you you won't be able to go back to any other weapon, and you'll be cursed for life or something.\c- diff --git a/lore/default/modernsparkster.txt b/lore/default/modernsparkster.txt index 612981c77..6dbfe7493 100644 --- a/lore/default/modernsparkster.txt +++ b/lore/default/modernsparkster.txt @@ -25,7 +25,7 @@ Then, a breakthrough came: Why try to copy something that can't ever be truly un \cfSecondary Reload:\c- Load in a Nokron cell. Same capacity. -\cfTechniques:\c- Projectile charge can be held indefinitely, as the weapon will vent regularly to stabilize the weapon's peak ignition potency. This could allow one to simply charge from cover and pop out to release the shot when needed. Additionally, the possibility to press both triggers at once is also documented, which allows for a potent release of Nokorokinylum plasma, comparable to a miniature nuke in destructive potential. It is not recommended to perform a combined attack unless the target is far away enough so as to not endanger the user. +\cfTechniques:\c- Projectile charge can be held indefinitely, as the weapon will vent regularly to stabilize its peak ignition potency. This could allow one to simply charge from cover and pop out to release the shot when needed. Additionally, the possibility to press both triggers at once is also documented, which allows for a potent release of Nokorokinylum plasma, comparable to a miniature nuke in destructive potential. It is not recommended to perform a combined attack unless the target is far away enough so as to not endanger the user. \cxSaya's Notes:\c- \cfYooooooooo this is the shit right here. It's kind of a pre-war relic, but it works so well that the x4 and x5 models are apparently just minor revisions of it, from what the old man told me. We can't have the new ones due to some deep White Scar Treaty fuckery, sadly, so this one will do.\c- diff --git a/lore/default/mothlamp.txt b/lore/default/mothlamp.txt index 8cf6bdb6b..b95401328 100644 --- a/lore/default/mothlamp.txt +++ b/lore/default/mothlamp.txt @@ -25,4 +25,4 @@ The lamp always stays by its owner's side, without fail. Should they disappear f \cfBut... actually, afterwards I think she did say that "maybe". Which honestly, does sound kinda... whew. In a way, I'd like the idea, but at the same time... I hope we don't end up regretting this.\c- -\cfOh god imagine if moth girls actually are real, I'd fucking... ffffffdfgdgfgsfgggghghffhghg\c- +\cfOh god imagine if moth girls actually are real, I'd just... ffffffdfgdgfgsfgggghghffhghg\c- diff --git a/lore/default/mothplushy.txt b/lore/default/mothplushy.txt index 63b9f4956..8820e533c 100644 --- a/lore/default/mothplushy.txt +++ b/lore/default/mothplushy.txt @@ -1,20 +1,18 @@ TAG -Moth Plushy +Moth Plush TAB Item REL -MothLamp;Saya;NosKora +Nukritas2xx;MothLamp;Saya TXT \cxDesignation:\c- -\cf Mashiro the Moth Girl Plush\c- +\cf Moth Girl Plush\c- \cxManufacturer:\c- \cf Nukritas 2xx\c- \cxClassification:\c- \cf Plush Doll\c- -A lovely handcrafted plush doll of **Mashiro**, the moth girl, for good boys and girls alike. Like all moths, she enjoys the light of a good lamp. If you provide her with the soothing glow of a **Sankai Companion Lamp**, you may get yourself a reliable friend, perhaps a lover. Just, please do be quiet, you may startle her. - -We at **Plutoni Incorporated** shall not be held responsible should you find yourself trapped in a time loop with a fine moth girl friend to keep you company. +A lovely handcrafted moth girl plush doll. Like all moths, she enjoys the light of a good lamp. If you provide her with the soothing glow of a **Sankai Companion Lamp**, you may get yourself a loyal friend. Just, please do be quiet, you may startle her. \cxSaya's Notes:\c- \cfThere's a pile of these in my bedroom, you know. One for every time those two have pissed me off. It's scary that they know me so well, seriously.\c- diff --git a/lore/default/munch.txt b/lore/default/munch.txt index 1bc09fd24..d1d1860d2 100644 --- a/lore/default/munch.txt +++ b/lore/default/munch.txt @@ -3,7 +3,7 @@ Munch Innovations TAB People REL -Saya;Explodium;ExplodiumGun +Parker;Saya;Explodium;ExplodiumGun TXT \cxName:\c- \cf Munch Innovations\c- diff --git a/lore/default/nana.txt b/lore/default/nana.txt index 587e217b2..554642b23 100644 --- a/lore/default/nana.txt +++ b/lore/default/nana.txt @@ -12,7 +12,7 @@ TXT \cxDate of Birth:\c- \cf 1907-07-07\c- \cxOccupation:\c- - \cf Housemaker\c- + \cf Homemaker\c- @@ -24,7 +24,7 @@ Being related to royalty, Nana has become quite famous on Japan, even appearing Nana has three children, who, like her, have also inherited the immortal blood of the moon princess: **Taro**, **Saya** and **Yui**. Each of them have been quite successful in their own exploits too, something Nana often extensively talks about, in a very proud manner. \cxSaya's Notes:\c- -\cfThe bestest mom in the world, not gonna lie. She may be strict at times, or get mad at me for staying up late (if she actually finds out, heh), but she really is the best. You haven't actually met her yet, Demo-chan, but I bet she'd really like you. I assure you she's real nice despite how scary she may look sometimes. She totally is not like Kaguya obaa-san, who I swear always has that aura about her that's like... no wonder guys are scared of her, always in constant fear of being CBT'd at any moment.\c- +\cfThe bestest mom in the world, not gonna lie. She may be strict at times, or get mad at me for staying up late (if she actually finds out, heh), but she really is the best. You haven't actually met her yet, Demo-chan, but I bet she'd really like you. I assure you she's real nice despite how scary she may look sometimes. She totally is not like Kaguya obaa-san, who I swear always has that aura about her that's like... no wonder people are scared of her.\c- TXT \cxFull Name:\c- \cf Nana Miyamoto\c- @@ -33,7 +33,7 @@ TXT \cxDate of Birth:\c- \cf 1907-07-07\c- \cxOccupation:\c- - \cf Housemaker\c- + \cf Homemaker\c- @@ -47,7 +47,7 @@ Nana has three children, who, like her, have also inherited the immortal blood o \cxSaya's Notes:\c- \cfOkaa-san is so happy that you're out there doing good work. It was nice to see that she likes you. I did tell you, after all.\c- -\cfBy the way I did notice it, you know, when she hugged you, yes. She hasn't really tried to see other guys after dad was gone... But I think that maybe... she likes you kind of in a different way, y'know...\c- +\cfMan, I swear she's started making tuna pie more often just because of you. It's nice that you get to eat your favorite dish and all, but you should know that what you need in your diet is carbs, right?\c- TXT \cxFull Name:\c- \cf Nana Miyamoto\c- @@ -56,7 +56,7 @@ TXT \cxDate of Birth:\c- \cf 1907-07-07\c- \cxOccupation:\c- - \cf Housemaker\c- + \cf Homemaker\c- @@ -70,8 +70,6 @@ Nana has three children, who, like her, have also inherited the immortal blood o \cxSaya's Notes:\c- \cfOkaa-san is so happy that you're out there doing good work. It was nice to see that she likes you. I did tell you, after all.\c- -\cfOh yeah, during the wedding, with Kirin... remember that? Turns out I was right, after all. She's gone to the "other side" now. God, I envy you all, having missed the scene. Seeing mom right there, making out with Ashley-san's... I wish I could unsee it, but now they even plan to get married. Wouldn't that make Yu-chan and Ashley-san sisters? Like, the two are already a couple and all... It's going to be weird.\c- +\cfMan, I swear she's started making tuna pie more often just because of you. It's nice that you get to eat your favorite dish and all, but you should know that what you need in your diet is carbs, right?\c- -\cfWait... If that's the case, then... THEN KIRIN-KUN AND I... I'LL BECOME HIS AUNT???\c- - -\cf... on second thought, it doesn't really matter. I was already a sinner anyway, considering there's you, Ibuki and Meido. You're technically my children (and also Ibuki is my own clone), after all.\c- +\cfOh yeah, and what happened during the wedding... Man, that caught us by surprise. She went and got herself a girlfriend. And it was Ashley-san's mom, no less. It's still a bit awkward but... I guess it's fine since she's much happier now.\c- diff --git a/lore/default/noskora.txt b/lore/default/noskora.txt index 29a90cfdf..9c55bc0e7 100644 --- a/lore/default/noskora.txt +++ b/lore/default/noskora.txt @@ -3,7 +3,7 @@ Nos-Kora TAB People REL -Nukuri;Saya; +Nukuri;Saya;Nukritas1xx;Nukritas2xx TXT \cxName:\c- \cf University of Nos-Kora\c- @@ -18,7 +18,7 @@ The **University of Nos-Kora** was founded in 1308 by the brothers **Nukritas 1x Being part of the Mishe, the two brothers have what can only be described as "reality manipulation" powers. This has only been witnessed on rare occasions, however, such as during the final moments of the **Nukuri Seventh World War**, where one of them managed to singlehandedly put a stop to the conflict, shrugging off the attacks of imperial soldiers while making his way to the throne, whereupon reaching it, he punched emperor **Ledora Yathai** off his seat, launching him across the room in a perfectly straight line towards the nearest window, and sending him off into low orbit. His body was never recovered, and he was presumed dead. -The popularity of the university skyrocketed following this success in dismantling a whole empire and ultimately bringing forth the creation of the **Nukuri Unified Government**. Many people wish to learn of what these odd beings have to teach, although the various courses are quite difficult for the average individual. +The popularity of the university skyrocketed following this success in dismantling a whole empire and ultimately bringing forth the creation of the **Nahkami Unified Government**. Many people wish to learn of what these odd beings have to teach, although the various courses are quite difficult for the average individual. Some of the more popular courses one can take at the University of Nos-Kora include: diff --git a/lore/default/novoskhana.txt b/lore/default/novoskhana.txt index c10462c3a..e619d2c1e 100644 --- a/lore/default/novoskhana.txt +++ b/lore/default/novoskhana.txt @@ -16,16 +16,14 @@ The **Empire of Novoskhana** was founded in 45306 BC by **Eternal Empress Sythan The societal structure of the empire is strictly matriarchal, all men exist only to serve their wives and provide them with children. In addition, most if not all women born in Novoskhana are raised for warfare, especially those of lower classes. Due to this fact, no one has dared to start any sort of war or conflict with the empire, as it is always at the ready to strike back, with its unstoppable armies of immortal warriors. -The Eternal Empress and her many daughters hold absolute power over all of Novoskhana, and make all important decisions, including the creation of new laws. Of all the various laws that have come from them, many have become so controversial that it has resulted in large groups of people "splitting off" from the empire to form their own separate nations. The Empress's eldest granddaughter, Executioner Eryukha Yanikov, personally directs (and often herself delivers) all punishment of citizens that are deemed **"Deviants"**, a term used for all those who do not obey the empire's laws. - -There are countless ways one could be labeled an "enemy of the state", among them, showing signs of "destabilizing the natural order of society", which includes but is not limited to: Men who reject marriage or having children, men who father another man as their first child, or are incapable of having any descendants, men who are witnessed maintaining relationships with other men, any individual who shares a name with the empress, any individual who "lives in disconnect from society" (usually used to refer to those who remain unemployed for extended periods of time, or who lack a home), women who do not contribute to war efforts, women who are seen maintaining relationships with other women, "divergent" individuals (term used for those that don't fall under the male/female binary), etc. +The Eternal Empress and her many daughters hold absolute power over all of Novoskhana, and make all important decisions, including the creation of new laws. Of all the various laws that have come from them, many have become so controversial that it has resulted in large groups of people "splitting off" from the empire to form their own separate nations. The Empress's eldest granddaughter, Executioner Eryukha Yanikov, personally directs (and often herself delivers) all punishment of citizens that are deemed **"Deviants"**, a term used for all those who do not obey the empire's strict laws. Two of the major bodies that split from the Empire are the **Kurenai Kingdom**, initially founded by the **Vexx Sisterhood** as a safe haven for enemies of the state, and the **Sykhai Empire**, an ironically named anarcho-communist collective founded by a branch of the Yanikov family that disagreed strongly with the "broken system" of the Empire. A large part of the free **Anarukon** population in the multiverse is contained in these two, while the rest have settled in various other places, including Earth. \cxSaya's Notes:\c- -\cfHoly shit, dude. If there ever was a contest for who's the most cartoonishly evil dictator in the history of the whole world, this fucker would get first place. Fucking... TERF empire. Wonderful, simply wonderful...\c- +\cfHoly shit, dude. If there ever was a contest for who's the most cartoonishly evil dictator in the history of the whole world, this fucker would get first place. Wonderful, simply wonderful...\c- -\cfYeah, I would never want to even get fucking close to that place, holy fuck. I'd get my head yeeted clean off for pretty much ALL reasons or something, as soon as I set foot in there. What I really don't understand is... like... HOW IN THE FUCK are there still people in there??? WHO THE FUCK EVEN would want to live there at all???\c- +\cfYeah, I would never want to even get close to that place, holy fuck. I'd get my head yeeted clean off for pretty much ALL reasons or something, as soon as I set foot in there. What I really don't understand is... Like, how anyone would want to live in there at all, under such an absurd dictatorship??\c- \cfOh, who am I kidding, of course there are people who'd be perfect with a shithole like that, there always are. If history has taught us anything, I mean... Yeah... Some people are shit enough to follow a leader like that, or worse...\c- TXT @@ -40,16 +38,14 @@ The **Empire of Novoskhana** was founded in 45306 BC by **Eternal Empress Sythan The societal structure of the empire is strictly matriarchal, all men exist only to serve their wives and provide them with children. In addition, most if not all women born in Novoskhana are raised for warfare, especially those of lower classes. Due to this fact, no one has dared to start any sort of war or conflict with the empire, as it is always at the ready to strike back, with its unstoppable armies of immortal warriors. -The Eternal Empress and her many daughters hold absolute power over all of Novoskhana, and make all important decisions, including the creation of new laws. Of all the various laws that have come from them, many have become so controversial that it has resulted in large groups of people "splitting off" from the empire to form their own separate nations. The Empress's eldest granddaughter, Executioner Eryukha Yanikov, personally directs (and often herself delivers) all punishment of citizens that are deemed **"Deviants"**, a term used for all those who do not obey the empire's laws. - -There are countless ways one could be labeled an "enemy of the state", among them, showing signs of "destabilizing the natural order of society", which includes but is not limited to: Men who reject marriage or having children, men who father another man as their first child, or are incapable of having any descendants, men who are witnessed maintaining relationships with other men, any individual who shares a name with the empress, any individual who "lives in disconnect from society" (usually used to refer to those who remain unemployed for extended periods of time, or who lack a home), women who do not contribute to war efforts, women who are seen maintaining relationships with other women, "divergent" individuals (term used for those that don't fall under the male/female binary), etc. +The Eternal Empress and her many daughters hold absolute power over all of Novoskhana, and make all important decisions, including the creation of new laws. Of all the various laws that have come from them, many have become so controversial that it has resulted in large groups of people "splitting off" from the empire to form their own separate nations. The Empress's eldest granddaughter, Executioner Eryukha Yanikov, personally directs (and often herself delivers) all punishment of citizens that are deemed **"Deviants"**, a term used for all those who do not obey the empire's strict laws. Two of the major bodies that split from the Empire are the **Kurenai Kingdom**, initially founded by the **Vexx Sisterhood** as a safe haven for enemies of the state, and the **Sykhai Empire**, an ironically named anarcho-communist collective founded by a branch of the Yanikov family that disagreed strongly with the "broken system" of the Empire. A large part of the free **Anarukon** population in the multiverse is contained in these two, while the rest have settled in various other places, including Earth. \cxSaya's Notes:\c- -\cfHoly shit, dude. If there ever was a contest for who's the most cartoonishly evil dictator in the history of the whole world, this fucker would get first place. Fucking... TERF empire. Wonderful, simply wonderful...\c- +\cfHoly shit, dude. If there ever was a contest for who's the most cartoonishly evil dictator in the history of the whole world, this fucker would get first place. Wonderful, simply wonderful...\c- -\cfYeah, I would never want to even get fucking close to that place, holy fuck. I'd get my head yeeted clean off for pretty much ALL reasons or something, as soon as I set foot in there. What I really don't understand is... like... HOW IN THE FUCK are there still people in there??? WHO THE FUCK EVEN would want to live there at all???\c- +\cfYeah, I would never want to even get close to that place, holy fuck. I'd get my head yeeted clean off for pretty much ALL reasons or something, as soon as I set foot in there. What I really don't understand is... Like, how anyone would want to live in there at all, under such an absurd dictatorship??\c- \cfOh, who am I kidding, of course there are people who'd be perfect with a shithole like that, there always are. If history has taught us anything, I mean... Yeah... Some people are shit enough to follow a leader like that, or worse...\c- diff --git a/lore/default/nukritas1xx.txt b/lore/default/nukritas1xx.txt new file mode 100644 index 000000000..dffe5a6b1 --- /dev/null +++ b/lore/default/nukritas1xx.txt @@ -0,0 +1,31 @@ +TAG +Nukritas 1xx +TAB +People +REL +NosKora;Nukritas2xx;XAnimen;Saya +TXT + \cxFull Name:\c- + \cf Subject 1xx, Sub-Type Nukritas\c- + \cxNationality:\c- + \cf Mishe\c- + \cxDate of Birth:\c- + \cf 1030-10-10\c- + \cxOccupation:\c- + \cf Director (University of Nos-Kora)\c- + + + + +**Nukritas 1xx** is the second last of the **Mishe** born aboard the artificial moon of **Deishe**, long after the destruction and subsequent extinction of all prior native Mishe in their home world in 8135 BC following a one-sided war with the neighboring **Goshun** race. + +Like his twin sister, he is designated as a "Nukritas Sub-Type", meaning he was born and raised for the purpose of representing the survivors of his race and propagate their knowledge through the **X'Animen Coalition**. For this, and together with his sister, they founded the **University of Nos-Kora** in **Nahkami**. + +Since these tasks don't really take much of his time, 1xx has taken to various hobbies, such as writing. He has penned various novels that not many have fully understood, though all claim to have definitely read from start to finish. He is also an avid cook, and enjoys learning of the various recipes of each civilization he meets together with his sister. His personal favorite is grilled cheese sandwiches. + +Like all members of the Mishe race, he is rather eccentric, his immense knowledge appears to be quite exhaustive, though the subjects he dominates are all over the place. It appears that him and his sister share a common train of thought, as they seamlessly continue each other's sentences during common conversations. + +\cxSaya's Notes:\c- +\cfYeah, I know, seems a bit bare-bones, but these two don't exactly have a biography or something that we can look up.\c- + +\cfThis guy... The way he smiles gives me the creeps sometimes. I wonder if he can read my thoughts or something.\c- diff --git a/lore/default/nukritas2xx.txt b/lore/default/nukritas2xx.txt new file mode 100644 index 000000000..d967a8666 --- /dev/null +++ b/lore/default/nukritas2xx.txt @@ -0,0 +1,31 @@ +TAG +Nukritas 2xx +TAB +People +REL +NosKora;Nukritas1xx;XAnimen;Gods;Saya +TXT + \cxFull Name:\c- + \cf Subject 2xx, Sub-Type Nukritas\c- + \cxNationality:\c- + \cf Mishe\c- + \cxDate of Birth:\c- + \cf 1030-10-10\c- + \cxOccupation:\c- + \cf Director (University of Nos-Kora)\c- + + + + +**Nukritas 2xx** is the last of the **Mishe** born aboard the artificial moon of **Deishe**, long after the destruction and subsequent extinction of all prior native Mishe in their home world in 8135 BC following a one-sided war with the neighboring **Goshun** race. + +Like her twin brother, she is designated as a "Nukritas Sub-Type", meaning she was born and raised for the purpose of representing the survivors of her race and propagate their knowledge through the **X'Animen Coalition**. For this, and together with her brother, they founded the **University of Nos-Kora** in **Nahkami**. + +Since these tasks don't really take much of her time, 2xx has taken to various hobbies, such as painting. She has crafted various art pieces that not many have fully understood, though all claim to have definitely seen them from top to bottom. She is also an avid doll maker, and enjoys creating plush dolls of the friends she makes together with her brother. Her personal favorite is a doll of the **Blue God**, who offered to become the patron of her people as thanks. + +Like all members of the Mishe race, she is rather eccentric, her immense knowledge appears to be quite exhaustive, though the subjects she dominates are all over the place. It appears that her and her brother share a common train of thought, as they seamlessly continue each other's sentences during common conversations. + +\cxSaya's Notes:\c- +\cfThis one's like the other, yeah. Not exactly a lot of information available out there, you know...\c- + +\cfI kinda like her, the dolls she makes are cute. I mean, you've seen them, right? They're just adorable!\c- diff --git a/lore/default/nukuri.txt b/lore/default/nukuri.txt index 208961147..3e356c51b 100644 --- a/lore/default/nukuri.txt +++ b/lore/default/nukuri.txt @@ -14,11 +14,11 @@ TXT The **Nukuri** are a pale-skinned humanoid race native to **Hebeku**'s frozen moon of **Nahkami**, in the **Xathar System** (part of the **X'Animen Coalition**). They are among the most technologically advanced within the entire Coalition, and are seen as a shining example of progress and dedication, although they've had an extensive history of war and conflict, along with having been involved in notable atrocities. Such a dark past is something they are well aware and ashamed of, ever since the end of their seventh world war and the massive political and economic reform they underwent afterwards. -In the past, Nahkami was a ruthless warmongering empire ruled with an iron fist by the **Yathai** royal family. However, following the reform, and with emperor **Ledora Yathai** being "forced into exile" by the founders of the **University of Nos-Kora**, who led said reform, the **Nukuri Unified Government** was created, with **Zanata Nekuraku II** personally appointed as "transitional" prime minister. +In the past, Nahkami was a ruthless warmongering empire ruled with an iron fist by the **Yathai** royal family. However, following the reform, and with emperor **Ledora Yathai** being "forced into exile" by the founders of the **University of Nos-Kora**, who led said reform, the **Nahkami Unified Government** was created, with **Zanata Nekuraku II** personally appointed as "transitional" prime minister. As someone who had suffered the loss of her mother and her husband in the previous wars, Zanata had always been opposed to the empire and its practices, including their decision to attack humanity at the peak of WW7, in what was known as the **White Scar** incident. Following the establishment of the new government, she attempted to make amends with us, but nothing came of it. After this had happened, she stepped down both from her position as prime minister, and also as leader of **Nekuratek**, the company her family has run for many generations. As of this article's writing, the current prime minister of Nahkami, elected by the vast majority, is **Saya Kowayanau**, who is also the governor of the province of **Saya**. -The Nukuri Unified Government can be seen as one of the various examples of successful transitions away from dictatorial regimes to something more open. Its form of government is self-described as a "communist omnicracy", where everyone stands in equal terms and no voice is left unheard. Its method of allowing all its inhabitants to take part in decision-making, the "fractal vote", was widely praised by other neighboring nations. In a way, everything is ultimately decided by all people within the nation, no voice is left unheard. In terms of its economy, there are no concepts of currency, or private ownership. All previous businesses are now publicly owned, however with their founders still holding what's basically a "symbolic" position of leadership, being still involved in their management, under government supervision. +The Nahkami Unified Government can be seen as one of the various examples of successful transitions away from dictatorial regimes to something more open. Its form of government is self-described as a "communist omnicracy", where everyone stands in equal terms and no voice is left unheard. Its method of allowing all its inhabitants to take part in decision-making, the "fractal vote", was widely praised by other neighboring nations. In a way, everything is ultimately decided by all people within the nation, no voice is left unheard. In terms of its economy, there are no concepts of currency, or private ownership. All previous businesses are now publicly owned, however with their founders still holding what's basically a "symbolic" position of leadership, being still involved in their management, under government supervision. It's also well known that the Nukuri still possess a very strong military force, but they only serve to defend the nation from external threats (something that has rarely happened). In addition, the manufacture and use of weapons is heavily supervised, too. diff --git a/lore/default/onoke.txt b/lore/default/onoke.txt index 4275388a5..ed58b74bc 100644 --- a/lore/default/onoke.txt +++ b/lore/default/onoke.txt @@ -12,13 +12,13 @@ TXT \cxLocation:\c- \cf Kereshnovka\c- -In October of 2003, a fire broke out in the **Onoke Mansion**, at the outskirts of **Kereshnovka**, during a meeting between the **Imanaki** and **Onoke** families. When the firefighters arrived, they found everyone dead, all having been murdered in increasingly gruesome ways. The culprit was never found. +In October of 2003, a fire broke out in the **Onoke Mansion**, at the outskirts of **Kereshnovka**, during a meeting between the **Imanaki** and **Onoke** families. When the firefighters arrived, they found everyone dead, all having been poisoned and their bodies desecrated. The culprit was never found. There are many theories about what could have happened. Most point towards this having been the work of **Hynnykka the Great Witch**, a serial killer from centuries ago (or a possible successor), remarking on the fact that her last note could have the potential interpretation of having been directed towards these two powerful families ("everyone will die"). This is not only seen as a considerable stretch, but there are clear doubts that something like this could have been done by a single individual. Another theory points to ritual suicide, though there would be no clear explanation for why such a thing would be done in the first place. Both families were in quite good standing, and this reunion had been in celebration of the marriage between two of their members, marking the start of a very beneficial partnership. -Many other theories, each increasingly wilder and crazier than the last, mention possibilities such as attacks by cultists, the town's ghouls, or some sort of clearly planned assassination by rival families (of which none are actually known). +Many other theories, each increasingly wilder and crazier than the last, mention possibilities such as attacks by cultists, the town's ghouls, or some sort of clearly planned assassination by rival families (none of which were known to be involved). To this day, no one knows exactly what had happened then, and the case remains unsolved. Only one person survived this, **Tetsuya Imanaki**, CEO of **Imanaki Corp**, but solely because he had been absent from the event. diff --git a/lore/default/parker.txt b/lore/default/parker.txt new file mode 100644 index 000000000..b20323d37 --- /dev/null +++ b/lore/default/parker.txt @@ -0,0 +1,31 @@ +TAG +Munch, Parker +TAB +People +REL +Munch;Explodium;Hermann;Saya +TXT + \cxFull Name:\c- + \cf Parker Edgar Munch III\c- + \cxNationality:\c- + \cf American\c- + \cxDate of Birth:\c- + \cf (Undisclosed)\c- + \cxOccupation:\c- + \cf Chief Engineer (Munch Innovations)\c- + + + + +Born and raised in **Austin, Texas**, **Parker** is the eldest son of **Munch Innovations** founder and CEO **Allen Munch**. Unlike his father, however, his interests lie beyond the world of smart home appliances. + +As an avid collector of firearms, he would strive to create his own homemade weaponry, already from a young age. The various contraptions he'd create would get shared online. The feedback he'd receive helped him become more and more skilled in his craft, much to the disappointment of his father. However, the success of this side business was not to be ignored, and so, the little workshop he had created on his own soon became part of his father's company as well. + +Parker's most notable creation in recent years was that of the **Explodium Gun**, the very first firearm created to employ **Explodium** as a high-explosive payload through the proprietary **.387EX** cartridge. + +\cxSaya's Notes:\c- +\cfNow, I look at that picture and something still irks me. Why does he look so familiar? I swear to god, it's like it's right there in the back of my brain and I can't pick it out.\c- + +\cfI don't even know that much about this dude. Like I said, he just showed up out of nowhere and asked to have his gun be featured in your arsenal, and then casually walked out after we shook hands.\c- + +\cfAnd seriously, I also could barely find any info on him other than his short bio on the Munch website. Who even is this guy?\c- diff --git a/lore/default/parthoris.txt b/lore/default/parthoris.txt index 9d2129020..f262b6570 100644 --- a/lore/default/parthoris.txt +++ b/lore/default/parthoris.txt @@ -17,4 +17,4 @@ When this world was first located, clear signs were found of it having gone thro \cxSaya's Notes:\c- \cfThere's a buncha stuff in here that's pretty interesting and I'm going to be keeping close watch on the livestream. This is pretty much the first time we're doing a full-on exploration here, you know, so I really REALLY want to see as much as possible of this place.\c- -\cfDunno if you're going to get any close to that one place, this "Lair of Malumax". I'm hella curious about it, the fact that somehow there's one guy with access to modern tech in this medieval fantasy wonderland.\c- +\cfDunno if you're going to get any close to that one place. I'm hella curious about it, the fact that somehow there's one guy with access to modern tech in this medieval fantasy wonderland.\c- diff --git a/lore/default/plasmablast.txt b/lore/default/plasmablast.txt index 8ee115391..0ae1ba53f 100644 --- a/lore/default/plasmablast.txt +++ b/lore/default/plasmablast.txt @@ -18,13 +18,13 @@ Developed by **Nuutek** in their days of old, nowadays discontinued but still be \cfSecondary Fire:\c- Charged shot. Hold and release. A slower, but much stronger and destructive projectile, especially if charged from a full cell. The gun has to be held with both hands, as the instability induced by internal plasma charge may make aiming far more difficult single-handed. -\cfReload:\c- Replace the ammo cell on the weapon. Each can power up to 15 shots. +\cfReload:\c- Replace the ammo cell on the weapon. Each can power up to 8 shots. \cfTechniques:\c- Obtaining a second Plasma Blaster allows switching to dual-wield mode. Secondary fire in this mode shoots the left hand gun. Due to the high availability of the materials used, and a shared friendship between Nuutek and their former competitor **Nekuratek**, you have free access to a practically endless supply of ammunition for this weapon. \cxSaya's Notes:\c- -\cfY'know, if you feel like melting knees is cooler than exploding them, this one's a good option too. Heard there's a buncha crazy variants of this gun around, since it's open source and all. It's been turned into shotguns, rifles, even flamethrowers using Nokron plasma, whew.\c- +\cfY'know, if you feel like melting knees is cooler than exploding them, this one's a good option too. Heard there's a buncha crazy variants of this gun around, since it's open source and all. It's been turned into shotguns, rifles, even flamethrowers using Sydon plasma, whew.\c- \cfAlso because of my very valuable friendship with Zana-sama, as you can see there we get free ammo for the thing. Fairly convenient, that. Wish it could be the case for your entire arsenal, but life ain't that easy.\c- diff --git a/lore/default/propulsor.txt b/lore/default/propulsor.txt index 059e2f1a7..2077b0775 100644 --- a/lore/default/propulsor.txt +++ b/lore/default/propulsor.txt @@ -17,7 +17,7 @@ The **JetBurst™ Impulsor** is one of the very first truly portable jetpack uni Thanks to its patented self-regenerating fuel cells, the unit is guaranteed to remain available for use for many years, needing only a constant supply of hydrogen (which may even come from just the air around itself). \cxSaya's Notes:\c- -\cfYou know, Ibuki used to have one of these too, back when she was in America doing all that stuff she was supposed to (and afterwards). She could fly and pull other crazy stunts and whatnot, but I guess you really can't, actually. I mean, I'm not exactly calling you fat or anything... but... well, you do weight 500kg, that is a fact.\c- +\cfYou know, Ibuki used to have one of these too, as part of the whole armored exoskeleton they gave her for the war back then. She could fly and pull other crazy stunts and whatnot, but I guess you really can't, actually. I mean, I'm not exactly calling you fat or anything... but... well, you do weight 500kg, that is a fact.\c- \cfSeriously... had I known almasteel is that heavy, I wouldn't have used such thick plating on your body, like, I kinda did say I wanted it "EXTRA THICC" when Misa asked me, as a bit of a meme, but she really took it way too seriously.\c- diff --git a/lore/default/puntzerbeta.txt b/lore/default/puntzerbeta.txt index 7e9f23faf..e425662cb 100644 --- a/lore/default/puntzerbeta.txt +++ b/lore/default/puntzerbeta.txt @@ -3,26 +3,26 @@ Puntzer Beta TAB Item REL -Blackmann;Saya;Hammerspace +Blackmann;Hermann;Saya;Hammerspace TXT \cxDesignation:\c- \cf Puntzer "Beta" Revolver\c- \cxManufacturer:\c- \cf Blackmann Arms Ltd.\c- \cxClassification:\c- -\cf Single-Action Revolver\c- +\cf Semi-Automatic Revolver\c- The **Puntzer** series of weapons from **Blackmann Arms** are prime examples of the potential of their patented **Spin Motion Wedge (SMW)** perforating ammunition. -The **Puntzer Beta** is a six-barrel single-action top-break revolver, equipped with very robust parts, ideal for fans of fanning. +The **Puntzer Beta** is a six-round semi-automatic top-break revolver, equipped with very robust parts. \cfPrimary Fire:\c- Slow, accurate shots. -\cfSecondary Fire:\c- Hold to enter fanning mode, release to disengage. While in this mode, you can press/hold primary to shoot much faster, but with lower accuracy. +\cfSecondary Fire:\c- Engage "quick unload" mode, upon which the next pull of the trigger will cause six shots to go off in rapid succession. \cfTertiary Fire:\c- Twirl the hell out of the gun, for fun. \cfReloading:\c- Reloads the gun. Thanks to the rapid reloading system provided by your **Hammerspace™ Container**, you merely need to hold your open palm over the cylinder, the bullets will be loaded automatically. \cxSaya's Notes:\c- -\cfAh, the revolver, a very classic gun, made famous by all those american "wild west" movies. But this one's special, oh yes. Those fucking corkscrew bullets are some serious shit, spinning like crazy and drilling through stuff. Hermann-senpai is feeding us with the ".05" types specifically, which are the strongest of them all, and supposedly can drill cleanly through walls and everything. That's going to be fun.\c- +\cfAh, the revolver, a very classic gun, made famous by all those american "wild west" movies. But this one's special, oh yes. It's a rarity to see a semi-auto revolver already, but one with a full auto mode? And those fucking corkscrew bullets are some serious shit too, spinning like crazy and drilling through stuff. Hermann-senpai is feeding us with the ".05" types specifically, which are the strongest of them all, and supposedly can drill cleanly through walls and everything. That's going to be fun.\c- diff --git a/lore/default/puntzergamma.txt b/lore/default/puntzergamma.txt index 01ed47ce3..f210a5524 100644 --- a/lore/default/puntzergamma.txt +++ b/lore/default/puntzergamma.txt @@ -14,11 +14,11 @@ TXT The **Puntzer** series of weapons from **Blackmann Arms** are prime examples of the potential of their patented **Spin Motion Wedge (SMW)** perforating ammunition. -The **Puntzer Gamma** is a mostly compact bullpup submachine gun featuring a horizontal mag loading system akin to 21st century classics like the **BreakerTek P90**. The weapon is additionally capable of delivering "Fuller Auto" ultra-rapid fire, as seen in many other automatic weapons of Blackmann Arms manufacture. +The **Puntzer Gamma** is a mostly compact submachine gun, featuring a peculiar helical magazine arrangement where, unlike in other weapons where it's either top or bottom mounted, here it's lodged onto the side of the weapon's frame. The Gamma is also notorious for being capable of delivering "Fuller Auto" ultra-rapid fire, as seen in many other automatic weapons of Blackmann Arms manufacture, to deplete an entire magazine as quickly as possible. \cfPrimary Fire:\c- Full auto shooting. -\cfSecondary Fire:\c- "Fuller auto" unloading. +\cfSecondary Fire:\c- Switches between two firing speeds. \cfReloading:\c- Reloads, as expected. Your **Hammerspace™ Container**'s autoloaders will provide you with a fresh mag every time. diff --git a/lore/default/pusherweapon.txt b/lore/default/pusherweapon.txt deleted file mode 100644 index ec78a6ee3..000000000 --- a/lore/default/pusherweapon.txt +++ /dev/null @@ -1,26 +0,0 @@ -TAG -Pusher -TAB -Item -REL -EngineTech;Mixom;UAC -TXT -\cxDesignation:\c- -\cf "Pusher" Microfusion Rotary Hammer\c- -\cxManufacturer:\c- -\cf Tach-Engine Technology Institute\c- -\cxClassification:\c- -\cf Mining Tool\c- - -The **Pusher** is a somewhat portable rotary hammer meant for mining and construction work. Its portability comes in part from the usage of an internal microfusion battery, also courtesy of **Tach-Engine Technologies**, providing enough power for 300 hours of constant use. Tach-Engine Technologies does not hold itself responsible for any misuse of this tool. - -\cfPrimary Fire:\c- Normal operation. Aim the drill bit at whatever you need to break, and hold the upper trigger. - -\cfSecondary Fire:\c- For those cases where you find some real tough material that's hard to crack. Twist the side handle until the drill bit has receded to what you feel is the adequate distance, then tap the primary trigger for it to strike at the target, with full force. - -\cfWARNING:\c- Inadequate grip during secondary operation may cause the tool to slip off, always keep the area clear to prevent collateral damages. - -\cxSaya's Notes:\c- -\cfYeah, chainsaws are a staple of "tool turned weapon", we all know this, but what about goddamn jackhammers?\c- - -\cfYou know actually, that reminded me of this one bigass blunder from Mixom. Those UAC nerds had requested a shipment of jackhammers to be sent to Mars City once, and these idiots go and send chainsaws instead. That's one hell of a mixup, don't ya think?\c- diff --git a/lore/default/quadravol.txt b/lore/default/quadravol.txt index b7d03f1ea..7fc3ffd98 100644 --- a/lore/default/quadravol.txt +++ b/lore/default/quadravol.txt @@ -10,7 +10,7 @@ TXT \cxManufacturer:\c- \cf Eushura Kmonn Jr.\c- \cxClassification:\c- -\cf Igneous Projectile Launcher\c- +\cf Incendiary Pistol(?)\c- A powerful incendiary weapon coming from **Kmonn Shuna**, prized among **Xekkian** commanders. The **Quadravol** shoots blazing balls of fire that explode spectacularly in contact with anything, releasing intense heat and kinetic force. It is seen to be very useful against crowds as the force of impact is potent enough to disperse them quickly. One very distinctive trait of the weapon is the fact that the flames that burst out of it will burn brightly even underwater. @@ -22,20 +22,32 @@ The name of the weapon comes from the **Xekkas** language, and it stands for **" The Ardent Cross was the name of the general's sword which, when imbued with magic, would release deadly cross slashes of burning flame. -\cfPrimary Fire:\c- Single, large fireball shot. Very minor drift, so its effective range is quite long. Ignites nearby targets on impact. +\cfPrimary Fire:\c- Large fireball shots, which will ignite nearby targets on impact. \cfSecondary Fire:\c- Pumps additional fuel, increasing the strength of your shots, but also their drift, making them less accurate. Excess overcharge will result in a wildly inaccurate misfire, but even this has its uses. -\cfTertiary Fire:\c- Hold and tap primary fire to toggle scatter shot mode for primary. Several smaller fireballs (number relative to charge), with increased drift and lower effective range, but very useful against multiple targets. Hold and tap secondary fire to switch weapon stances between two-handed and one-handed. This serves no real purpose other than looking cooler when pumping, your accuracy with the weapon is unaffected but you won't shoot it as quickly. +\cfTertiary Fire:\c- Switch weapon stances between two-handed and one-handed. This serves no real purpose other than looking cooler when pumping, your accuracy with the weapon is unaffected but you won't shoot it as quickly. \cfReloading:\c- Insert up to five fuel cells into the weapon's tube magazine. Each cell is immediately emptied into the weapon's internal "crucible", so you can keep loading additional ammo while boosting your charge. \cfTechniques:\c- The weapon has a certain "extra effective" special move should you be close enough to your target. Plunging the four bayonets into an enemy and immediately pulling the trigger afterwards will result in a potent point blank explosion that will send them flying, covered in flames. +The various charge levels of the internal crucible appear to dramatically alter the behavior of fired projectiles. The most notable changes are reflected as such: + +\cfLevel 1:\c- Fast and steady projectile, with moderate blast radius. + +\cfLevel 2:\c- Slower projectile with some drift, increased blast radius and damage. + +\cfLevel 3:\c- Slow, massive, erratic projectile, with much more dramatic blast potential. Ruptures into sub-projectiles on impact. + +\cfLevel 4:\c- Projectile splits into multiple fragments as it leaves the barrel. Each sub-projectile is only slightly weaker than a level 1 fireball. + +\cfLevel 5:\c- At this point, whatever projectile was to be fired will instantly explode outwards. This attack is very destructive, and its damage and range may increase further if a full cell is still chambered. + \cxSaya's Notes:\c- \cfTypical overly dramatic Xekkian stuff. The "Ardent Cross", really... But it's as badass as it sounds, at least.\c- -\cfAnd of course it's huge af too, even if the grip is supposedly adapted. It honestly weirds me out how you can do that thing of... making your hands bigger, but at least it lets you use stuff like that easily.\c- +\cfAnd of course it's huge af too for something that's supposedly a pistol. Honestly, with these people, you just never know. Their "light sidearms" are humongous.\c- \cfAnyway, motherfucking fireballs, that work underwater??? Gonna need to see the science behind this because that makes no fucking sense and yet... it's there.\c- diff --git a/lore/default/rafankos.txt b/lore/default/rafankos.txt index 61f335d9c..56882d463 100644 --- a/lore/default/rafankos.txt +++ b/lore/default/rafankos.txt @@ -14,17 +14,21 @@ TXT Devised by a reportedly "insane" and "derranged" engineer at **Nekuratek**'s Advanced Arms Division, this weapon's development was cut short of its initial ambitious plans. Citing that this engineer whose name won't be revealed "played too many videogames", he was stopped before he could add a whopping 15 different modes of operation to the weapon, rendering it extremely convoluted, costly and "completely ridiculous". -The **Rafan-Kos** project ("Ultimate Weapon" in Nukuribaku) would only be partially completed once chief engineer **Zanaveth Nekuraku I** personally stepped in to ask for this "inanity" to cease. The end result seemed satisfactory enough despite complaints from its creator, and would be eventually commercialized. +The **Rafan-Kos** project ("Ultimate Weapon" in Nukuribaku) would only be partially completed once chief engineer **Zanaveth Nekuraku I** personally stepped in to ask for this "inanity" to cease. The end result seemed satisfactory enough despite complaints from its creator, and would be eventually commercialized... For a short time. The weapon employs **Kabbadon** as fuel, a common byproduct of **Nokorokinylum** fusion, thus making it fairly easy to produce. However, the density and degree of purity required in the creation of a single fuel pod make its price escalate dramatically. -\cfPrimary Fire:\c- Release a radiant blast of energy that punches its way through anything, sending sparks flying in all directions along its path and burning other nearby targets. The blast burns for up to five seconds before rapidly dissipating. +\cfPrimary Fire:\c- Release a radiant blast of energy that punches its way through anything, sending sparks flying in all directions along its path and burning other nearby targets. The blast burns for up to ten seconds at full pod charge. -\cfSecondary Fire:\c- Releases several scattered blasts in a wide cone, with similar destructive potential, but burning quicker, stronger, and dissipating more rapidly. +\cfSecondary Fire:\c- Releases several scattered blasts in a wide cone, with only a fraction of the full destructive potential in each. The pod will drain twice as fast in this mode. -\cfReload:\c- Loads in a new magazine, each holding four pods. The currently loaded pod must be fully discharged before a new one can be chambered in. +\cfReload:\c- Loads in a new magazine, each holding four pods. The currently loaded pod must be fully discharged before a new one can be chambered in (spent pod ejection is automated). + +\cfTechniques:\c- Due to using a singular trigger at different pressures, alternating between both fire modes is completely seamless. \cxSaya's Notes:\c- \cf"Ultimate Weapon"? Talk about pretentious... But you know, something about this was making my brains itch, and then it clicked. This is basically like that one spellcard, the Master Spark. Hell, it almost even sounds and looks the same...\c- \cfThat's fucking cool, actually. I like it, so I put it in the same slot as the other massive fuckoff gun. You know, as a safer alternative that you're less likely to kill yourself with. Gotta admit, Misa-Misa sure loaded us up with some powerful material bringing these two along.\c- + +\cfPS: Don't try to eat the pods, okay?\c- diff --git a/lore/default/raykhom.txt b/lore/default/raykhom.txt index 3a00416fa..ff5a1d66d 100644 --- a/lore/default/raykhom.txt +++ b/lore/default/raykhom.txt @@ -14,15 +14,15 @@ TXT Ever since its creation by **Professor Eushura Kmonn Jr.**, the **Ray-Khom** has taken a permanent spot in every **Xekkian** soldier's loadout. Reliable, efficient, needing little to no maintenance due to lacking any moving parts beyond its feeding mechanism. Ammunition is additionally quite easy to come by, at least locally, as exports carry with them heavy taxing. -The weapon is powered entirely by a compact quad-cell Korberon-Eneiebium battery pack, easy to replace when needed. Ammunition is fed from 20-round magazines. The ammunition itself, slim 40mm caseless magnetized bolts, fitted with a hyperdense Dyratin ignition charge, releasing potent discharges of ultra-high temperature plasma on impact, capable of melting quickly through anything short of high resonant Almasteel plating and causing strong, stinging burns to Xekkian skin (or severe corrosion of muscle and bone tissue to anything weaker). +The weapon is powered entirely by a compact quad-cell Korberon-Eneiebium battery pack, providing a plentiful supply of energy. Ammunition is fed from 10-round magazines. The ammunition itself, slim 40mm caseless magnetized bolts, fitted with a hyperdense Dyratin ignition charge, releasing potent discharges of ultra-high temperature plasma on impact, capable of melting quickly through anything short of high resonant Almasteel plating and causing strong, stinging burns to Xekkian skin (or severe corrosion of muscle and bone tissue to anything weaker). \cfPrimary Fire:\c- Steady shooting, quick and precise. Minimal recoil due to the electromagnetic operation, mostly quiet as the projectiles are shot ever so slightly below the speed of sound. Your enemies are guaranteed to not take notice of your attacks until it's too late. -\cfSecondary Fire:\c- Engages the concentrated pulse emitters along the weapon's blades, emitting a potent discharge of electricity in front of the user, temporarily stunning anything that stands too close. May cause death on weak targets. It is recommended to only use this sparingly, as it drains the battery quickly. +\cfSecondary Fire:\c- Engages the concentrated pulse emitters along the weapon's blades, emitting a potent discharge of electricity in front of the user, temporarily stunning anything that stands too close. May cause death on weak targets. Should be noted that this action mustn't be performed willy-nilly, as the capacitors require a long time to fully recharge, also temporarily disabling the main fire function. -\cfPrimary Reload:\c- Reloads the weapon. +\cfReload:\c- Reloads the weapon. -\cfSecondary Reload:\c- Swaps the battery. This action can only be performed once the charge is low enough, as it would be wasteful otherwise. +\cfZoom:\c- Use the scope for long distance shooting. Zoom level is automatically adjusted based on distance probes, and the reticle will furthermore simulate projectile trajectory on the fly, so you can know exactly where to aim. \cfTechniques:\c- Secondary fire increases in lethality if used on conductive liquids such as water. Just make sure to not be standing in it yourself. diff --git a/lore/default/refresher.txt b/lore/default/refresher.txt index 554d47227..1a6386be0 100644 --- a/lore/default/refresher.txt +++ b/lore/default/refresher.txt @@ -3,7 +3,7 @@ Refresher TAB Item REL -EngineTech +EngineTech;Admun TXT \cxDesignation:\c- \cf Refresher\c- diff --git a/lore/default/reubens.txt b/lore/default/reubens.txt new file mode 100644 index 000000000..7fcc23a0c --- /dev/null +++ b/lore/default/reubens.txt @@ -0,0 +1,31 @@ +TAG +C.K., Reubens +TAB +People +REL +Cyrus;Kereshnovka;Saya +TXT + \cxFull Name:\c- + \cf Reubens Cyrus Karnanaiahmani\c- + \cxNationality:\c- + \cf Qurensniv\c- + \cxDate of Birth:\c- + \cf 244 BC\c- + \cxOccupation:\c- + \cf CEO, CTO (Cyrus Enterprises)\c- + \cxTwitter:\c- + \cf @rbkhmani\c- + + +**Reubens** is the second child of the late **Marc Pyurgi Karnanaiahmani**, former leader of the old **Kingdom of Karnanaiahma**, now reformed as the **Republic of Karnanaiahma** by his older brother **Rubin Mhul Karnanaiahmani**. During his late father's tyrannical rule, he fled the country together with various individuals who had been marked as "traitors" by the demented monarch, all as a result of a peculiar prophecy which claimed that **"a Qurensniv man with blonde hair and green eyes will cause the downfall of the kingdom"**. The result of this exodus was the foundation of the town of **Kereshnovka** in central **Siberia**, of which he is the mayor to this day. + +In addition, as a man of great intellect and an interest in bolstering the evolution of technology, he founded his own startup, **Cyrus Enterprises**, of which he's also the sole employee. Despite this, many great achievements have come of this small business, thanks mainly to the various other companies that offer funding and manufacturing resources for him to keep creating and selling all sorts of tech implements, especially those with military applications. + +Reubens is well known for not only being a cunning inventor, but also an expert in hand to hand combat, being a ten times **Ko-Ron-Jai** (Qurensniv martial arts) champion, and also an excellent sharpshooter, able to land a hit on the head of a matchstick from 1km away with a mere revolver (this last fact hasn't yet been confirmed, however). He's also an avid gamer, and is often noted to draw comparisons between real life and videogames, to a worrying degree at times. + +\cxSaya's Notes:\c- +\cfHe's a nerd, NEEEEEEEERD, BIG STINKIN' NERD!\c- + +\cfThere, I said it. Like, sure, the stuff he makes, cool and all, but GOOD LORD he gets on my nerves sometimes with his videogamey nerdiness. Not letting you go in fully armed and instead deciding to fucking YEET your shit all over the place for you to pick up? That's one thing. Deciding that after every mission you have to RETURN all the stuff you got, that's another, too. Dropping some cash every time you blow up baddies, that I can accept, though, helps cover the costs of everything.\c- + +\cfYou know, he may get on my nerves, sure, but the guy was the first serious business partner I ever had, and damn, he's not that bad outside of all the nerditude he expels... I mean, to be honest, I'm also a big stinky nerd too, and you can quote me on that.\c- diff --git a/lore/default/rika.txt b/lore/default/rika.txt new file mode 100644 index 000000000..fcbef8eb2 --- /dev/null +++ b/lore/default/rika.txt @@ -0,0 +1,58 @@ +TAG +Isuzu, Rika +TAB +People +REL +Maidbot;AkariLabs;Demolitionist;Ibuki;Saya +TXT + \cxFull Name:\c- + \cf Rika Isuzu\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2049-02-08\c- + \cxOccupation:\c- + \cf Combat Trainer (Akari Labs)\c- + + + + +**Rika** was created in 2049 as one of the first among a batch of **Maidbots** built with male frames, initially designed for military purposes. Following her decommissioning and subsequent rehabilitation, however, she opted to don a more feminine form, thus becoming the very first known transgender Maidbot. + +Despite her popularity, she has not managed to yet find an adoptive family, and so she resides at **Akari Labs**, working part time as a security guard. Once the **Demolitionist** project came to be, however, she found her new vocation: Training the aforementioned combat robot. + +One of Rika's hobbies is cosplay, once donning a costume of one of **Ibuki Miyamoto**'s favorite videogame characters for her birthday. Suffice to say, the success of this earned her a honorary spot among the **Red Oni**'s countless sweethearts. + +Another hobby of hers is target practice, for the self-professed purposes of "not letting these mad skills go to waste". She is responsible for setting up an indoor firing range within the Akari Labs installations, free to use by anyone, though usually frequented by her, Ibuki and **Saya Miyamoto**. + +\cxSaya's Notes:\c- +\cfIt's pretty cool that she volunteered to train you. I mean, it's not like Meido was going to do that job, you know she doesn't like guns and stuff.\c- + +\cfI'm sure you'll make her feel proud of ya, Demo-chan.\c- +TXT + \cxFull Name:\c- + \cf Rika Isuzu\c- + \cxNationality:\c- + \cf Japanese\c- + \cxDate of Birth:\c- + \cf 2049-02-08\c- + \cxOccupation:\c- + \cf Combat Trainer (Akari Labs)\c- + + + + +**Rika** was created in 2049 as one of the first among a batch of **Maidbots** built with male frames, initially designed for military purposes. Following her decommissioning and subsequent rehabilitation, however, she opted to don a more feminine form, thus becoming the very first known transgender Maidbot. + +Despite her popularity, she has not managed to yet find an adoptive family, and so she resides at **Akari Labs**, working part time as a security guard. Once the **Demolitionist** project came to be, however, she found her new vocation: Training the aforementioned combat robot. + +One of Rika's hobbies is cosplay, once donning a costume of one of **Ibuki Miyamoto**'s favorite videogame characters for her birthday. Suffice to say, the success of this earned her a honorary spot among the **Red Oni**'s countless sweethearts. + +Another hobby of hers is target practice, for the self-professed purposes of "not letting these mad skills go to waste". She is responsible for setting up an indoor firing range within the Akari Labs installations, free to use by anyone, though usually frequented by her, Ibuki and **Saya Miyamoto**. + +\cxSaya's Notes:\c- +\cfIt's pretty cool that she volunteered to train you. I mean, it's not like Meido was going to do that job, you know she doesn't like guns and stuff.\c- + +\cfI'm sure you'll make her feel proud of ya, Demo-chan.\c- + +\cfUpdate: The face she made when she saw your new maidbot body was worthy of putting on a frame. Look, Demo, if you two, y'know, want to "get to know each other" more, it's all ok with me. I mean, this is an open relationship we're all in. Wink wink.\c- diff --git a/lore/default/saltbot.txt b/lore/default/saltbot.txt new file mode 100644 index 000000000..50ec2eea6 --- /dev/null +++ b/lore/default/saltbot.txt @@ -0,0 +1,26 @@ +TAG +Battle-Boi Sentry +TAB +Item +REL +AkariLabs;Hammerspace;ScoreSystem;Saya +TXT +\cxDesignation:\c- +\cf Battle-Boi Sentry\c- +\cxManufacturer:\c- +\cf Akari Labs\c- +\cxClassification:\c- +\cf Portable Defense System\c- + +The **Battle-Boi** is a portable remote controlled turret equipped with dual, semi-automatic, **Hammerspace**-fed shotguns. There are multiple ammunition options available, but the units currently available for your mission are loaded with 10-gauge Kinylum saltshot, fairly useful for crowd control due to both its stopping power on direct impact, and the lingering radiation that the salt fragments leave along their path. + +Each unit can remain operational for days on end, provided they are resupplied when needed. **Score Points** are earned from any enemies they kill, so this may potentially reduce the cost of resupply. + +Should damage be taken, they can be repaired free of charge by returning them to storage. Keep in mind placed units are not recalled if you stray too far from the designated area. If you leave them behind, they will stay there and automatically deactivate. + +Due to the remote-controlled nature of the device, only one unit can be in use during your missions. Please be kind to the operator, as they cannot directly communicate with you in any way, and are simply trying their best to assist you. + +\cxSaya's Notes:\c- +\cfI won't tell you who's manning them. It's a secret.\c- + +\cfNo, it's not me. I can't stay awake 24/7.\c- diff --git a/lore/default/saya.txt b/lore/default/saya.txt index dfba3a6ea..f1575951c 100644 --- a/lore/default/saya.txt +++ b/lore/default/saya.txt @@ -3,7 +3,7 @@ Miyamoto, Saya TAB People REL -Nana;Ryuji;Taro;Yui;Maidbot;Demolitionist;Kirin;AkariLabs;Ashley;UAC +Nana;Ryuji;Taro;Yui;Maidbot;Demolitionist;Kirin;AkariLabs;Ashley;UAC;Ibuki TXT \cxFull Name:\c- \cf Saya Miyamoto\c- @@ -21,20 +21,18 @@ TXT In 2010, together with her brother Taro, the two founded **Akari Labs**, where her first project was an autonomous house-cleaning robot, which would later evolve into the modern **Maidbot**, one of the most popular creations of their company. She also would devise many other types of robots, all driven by rather complex in-house AI that she had personally designed together with her brother. -In 2018, Saya "ceased to age", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that she would forever be stuck with her current physique, being "short and flat", something she absolutely hated. +In 2018, Saya "ceased to age", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that this meant she would outlive a lot of people in her life, and was not all too happy about that prospect. Saya would frequently be nicknamed **"Not-Tomoko"** around the net, in reference to a character from a popular manga series that people compared her with. It was noted that "in term of personality and looks, the resemblance is definitely there". Saya is well known for being quite blunt when talking to people, if she ever actually does so, as she's not very talkative in person. Online, however, she changes entirely, openly talking to anyone she comes across, casually shoving herself into random conversations, or extensively ranting about various topics, and debating fiercely with haters. -Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's "always horny on main", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is "just a friendly thing, between friends". +Saya's way of speaking is rather uncouth at times, as she's known to casually swear on the regular in the middle of conversations. It is one among various of her bad habits that she has trouble addressing, and which have resulted in multiple misunderstandings and awkward situations. Nevertheless, she is always quick to apologize when called out. -Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". - -Currently, Saya has two girlfriends: Meido Miyamoto and **Ibuki Miyamoto**. Both of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against. +Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Wife Is A Maid Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". \cxSaya's Notes:\c- \cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c- -\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. My top turn-ons are big tiddies, maids, femboys and heterochromia. My fav monster girl is the moth girl, and my waifu is Mashiro (specifically chapter 3 Mashiro, not the standard creepy yandere shotacon Mashiro, no thank you). Last thing: I may not shower very often, or use deodorant or anything, but I don't stink, I smell good, and people agree too, they say it's nice.\c- +\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. Also I love moth girls, they're cool and pretty. Oh, and maids, of course, and goth fashion, even though I'm too awkward to try dressing like that myself.\c- \cfWell, are you satisfied, Demo-chan? Have I sated your thirst for Saya Facts™? Good, then you should go back to work.\c- TXT @@ -54,20 +52,18 @@ TXT In 2010, together with her brother Taro, the two founded **Akari Labs**, where her first project was an autonomous house-cleaning robot, which would later evolve into the modern **Maidbot**, one of the most popular creations of their company. She also would devise many other types of robots, all driven by rather complex in-house AI that she had personally designed together with her brother. -In 2018, Saya "ceased to age", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that she would forever be stuck with her current physique, being "short and flat", something she absolutely hated. +In 2018, Saya "ceased to age", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that this meant she would outlive a lot of people in her life, and was not all too happy about that prospect. Saya would frequently be nicknamed **"Not-Tomoko"** around the net, in reference to a character from a popular manga series that people compared her with. It was noted that "in term of personality and looks, the resemblance is definitely there". Saya is well known for being quite blunt when talking to people, if she ever actually does so, as she's not very talkative in person. Online, however, she changes entirely, openly talking to anyone she comes across, casually shoving herself into random conversations, or extensively ranting about various topics, and debating fiercely with haters. -Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's "always horny on main", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is "just a friendly thing, between friends". +Saya's way of speaking is rather uncouth at times, as she's known to casually swear on the regular in the middle of conversations. It is one among various of her bad habits that she has trouble addressing, and which have resulted in multiple misunderstandings and awkward situations. Nevertheless, she is always quick to apologize when called out. -Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". - -Currently, Saya has three girlfriends: Meido Miyamoto, **Ibuki Miyamoto** and the **Demolitionist**. All of them being creations of her own, prompting people online to make incestuous remarks, which she frequently fights against. +Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Wife Is A Maid Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". \cxSaya's Notes:\c- \cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c- -\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. My top turn-ons are big tiddies, maids, femboys and heterochromia. My fav monster girl is the moth girl, and my waifu is Mashiro (specifically chapter 3 Mashiro, not the standard creepy yandere shotacon Mashiro, no thank you). Last thing: I may not shower very often, or use deodorant or anything, but I don't stink, I smell good, and people agree too, they say it's nice.\c- +\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. Also I love moth girls, they're cool and pretty. Oh, and maids, of course, and goth fashion, even though I'm too awkward to try dressing like that myself.\c- \cfSatisfied? Good, but here's one last Saya Fact™ for ya: I love you, Demo-chan~\c- \cg♥\c- @@ -89,20 +85,20 @@ TXT In 2010, together with her brother Taro, the two founded **Akari Labs**, where her first project was an autonomous house-cleaning robot, which would later evolve into the modern **Maidbot**, one of the most popular creations of their company. She also would devise many other types of robots, all driven by rather complex in-house AI that she had personally designed together with her brother. -In 2018, Saya "ceased to age", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that she would forever be stuck with her current physique, being "short and flat", something she absolutely hated. +In 2018, Saya "ceased to age", due to the effects of the immortality she had inherited from her mother. She initially saw this as a blessing, allowing her to work on everything she ever wanted, without any time limits, but afterwards, remarked on the fact that this meant she would outlive a lot of people in her life, and was not all too happy about that prospect. Saya would frequently be nicknamed **"Not-Tomoko"** around the net, in reference to a character from a popular manga series that people compared her with. It was noted that "in term of personality and looks, the resemblance is definitely there". Saya is well known for being quite blunt when talking to people, if she ever actually does so, as she's not very talkative in person. Online, however, she changes entirely, openly talking to anyone she comes across, casually shoving herself into random conversations, or extensively ranting about various topics, and debating fiercely with haters. -Saya is also known for being exaggeratedly flirty around attractive women, something which has resulted in many misunderstandings and awkward moments. She proudly states that she's "always horny on main", and never lets any chance to flirt with someone slip past her. She however remarks that this open flirting is "just a friendly thing, between friends". +Saya's way of speaking is rather uncouth at times, as she's known to casually swear on the regular in the middle of conversations. It is one among various of her bad habits that she has trouble addressing, and which have resulted in multiple misunderstandings and awkward situations. Nevertheless, she is always quick to apologize when called out. -Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Maid Is A Sex Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". +Saya has many hobbies, including programming (her language of choice being **Haskell**), collecting videogames (most of which she doesn't actually play), drawing, 3d modeling and writing. Her fascination with anime and manga got her to write her very own: a three-volume series called **My Wife Is A Maid Robot**, partially based around her experiences with dating **Meido Miyamoto**. It became so popular it managed to get its own anime adaptation years later. Saya also wrote a science fiction novel, **The Akari Project**, a story about teleportation experiments and interdimensional travel "that doesn't go to shit like all the others". Following the disaster on the **UAC** bases in regards to teleportation, she announced that she wished to make the Akari Project real, "just to fuck those idiots over". -Currently, Saya and her creations Meido Miyamoto, **Ibuki Miyamoto** and the **Demolitionist** are all engaged to **Kirin Xanai**, leader of the **Sykhai Empire** of **Akkou**. +Currently, Saya, as well as Meido Miyamoto, **Ibuki Miyamoto** and the **Demolitionist**, are all engaged to **Kirin Xanai**, leader of the **Sykhai Empire** of **Akkou**. \cxSaya's Notes:\c- \cfYou like reading about me, don't you? I bet you do, silly. Alright, here's some more about me, just for you.\c- -\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. My top turn-ons are big tiddies, maids, femboys and heterochromia. My fav monster girl is the moth girl, and my waifu is Mashiro (specifically chapter 3 Mashiro, not the standard creepy yandere shotacon Mashiro, no thank you). Last thing: I may not shower very often, or use deodorant or anything, but I don't stink, I smell good, and people agree too, they say it's nice.\c- +\cfMy favorite color is red, favorite animal is the otter and favorite dish is pepperoni pizza. Got that? Good, let's keep going then. I like a lot of music, including Industrial, Metal, Drone, Dark Ambient, and I guess Baroque Metal since Ashley-san's band is so good. I absolutely ABSOLUTELY despise peppers, and eggs (though I can make an exception for meringue, that shit's delicious). I also hate skirts. Make me wear a skirt and I'll punch you. I prefer pants a million times more, though it's best if they're not skin-tight, that stuff's weird. I don't like clothes being stuck to me like that, egh, so yeah, if it's nice and baggy, that's excellent, good shit. Alright, what else? My favorite editor is vim, and uh, btw I use Arch, I guess. Also I love moth girls, they're cool and pretty. Oh, and maids, of course, and goth fashion, even though I'm too awkward to try dressing like that myself.\c- \cfSatisfied? Good, but here's one last Saya Fact™ for ya: I love you, Demo-chan~\c- \cg♥\c- diff --git a/lore/default/sayabean.txt b/lore/default/sayabean.txt index d453a6551..1812879d7 100644 --- a/lore/default/sayabean.txt +++ b/lore/default/sayabean.txt @@ -3,7 +3,7 @@ Saya Bean Plush TAB Item REL -Saya;NosKora +Nukritas2xx;Saya TXT \cxDesignation:\c- \cf Haunted Saya Bean Plush\c- @@ -14,11 +14,11 @@ TXT \cxHaunted:\c- \cf Very Yes\c- -**Haunted Saya Bean Plush** that eats your snacks and calls you a horny. +**Haunted Saya Bean Plush** that eats your snacks and calls you a nerd. This object isn't actually haunted. Or is it...? \cxSaya's Notes:\c- -\cfOK, considering who made it, I AM betting this thing's really haunted. And of course I can tell what this is referencing. How the fuck does she even know anyway? It has to be some reality bending nonsense again.\c- +\cfOK, considering who made it, I AM betting this thing's really haunted. And of course I can tell what this is referencing. Just how does she even know anyway? It has to be some reality bending nonsense again.\c- -\cfStill, it's beautiful... A work of art, yes. I'm sure you're squeezing it between your arms right now. Oh, I'll know. I will hear it giggle on stream when you do so.\c- +\cfStill, it's beautiful... A work of art, yes. I'm sure you won't resist its cuteness and you'll already be squeezing it between your arms. Oh, I'll know, I will hear it giggle on stream when you do so.\c- diff --git a/lore/default/sayasmug.txt b/lore/default/sayasmug.txt new file mode 100644 index 000000000..7c74f5457 --- /dev/null +++ b/lore/default/sayasmug.txt @@ -0,0 +1,20 @@ +TAG +Saya's Mug +TAB +Item +REL +Taro;Saya;Demolitionist +TXT +\cxDesignation:\c- +\cf Moth Pussy Mug\c- +\cxManufacturer:\c- +\cf Taro Miyamoto\c- +\cxClassification:\c- +\cf Customized Gift\c- + +A customized coffee mug, once given as a birthday gift to **Saya Miyamoto** by her brother **Taro**, by personal request. The stencils on each side feature a picture of a moth girl, with the text "MOTH PUSSY" under it. When asked about what this references, the siblings simply said it was an "ancient meme". + +\cxSaya's Notes:\c- +\cfMy love for moth girls is eternal, Demo-chan.\c- + +\cfBy the way, I made sure to wash it thoroughly before those two put it in their gacha nonsense, just in case the demons could track you by the scent of coffee.\c- diff --git a/lore/default/scoresystem.txt b/lore/default/scoresystem.txt index c6095ec5d..20fb40038 100644 --- a/lore/default/scoresystem.txt +++ b/lore/default/scoresystem.txt @@ -18,7 +18,7 @@ Points are earned through the suppression of hostiles (relative to their threat Carried items may also be refunded for additional points, allowing you to exchange them for anything else you'd prefer instead. This process is automated when obtaining weapons you already possess, or reach the carry limit for certain items. -Please do note that there is an imposed limit of 999,999,999,999,999,999 points, which, in practice, shouldn't even be remotely reachable. +Please do note that there is an imposed limit of 999999999 points, which, in practice, should take a very, very long time to reach. \cxSaya's Notes:\c- \cfAlright, I'll be honest here: This is more videogamey stuff from nerdboy. But I think it's good, in a way. There's something about the rush of seeing the numbers go up, you know, and you can get something nice out of it too. I can't exactly hide this from you but it's something we both agreed on, for your sake.\c- diff --git a/lore/default/serpentriders.txt b/lore/default/serpentriders.txt index cabdb3cb8..64e706797 100644 --- a/lore/default/serpentriders.txt +++ b/lore/default/serpentriders.txt @@ -44,3 +44,5 @@ It is unclear if these demons have an actual connection to the **Hell** of our o \cxSaya's Notes:\c- \cfLittle red riding hood back there was such an easy kill, I doubt someone "considerably stronger" would make much of a difference, don't you think? Besides, you're smart enough to not fall for anyone's tricks and traps, aren't ya. He doesn't stand a chance, huhu...\c- + +\cfPS: Still think it's stupid they call themselves serpent riders when only one of them rides one.\c- diff --git a/lore/default/sharkplush.txt b/lore/default/sharkplush.txt new file mode 100644 index 000000000..d36660dec --- /dev/null +++ b/lore/default/sharkplush.txt @@ -0,0 +1,20 @@ +TAG +Shark Plush +TAB +Item +REL +Nukritas2xx;Demolitionist;Saya +TXT +\cxDesignation:\c- +\cf Dr. Shorky\c- +\cxManufacturer:\c- +\cf Nukritas 2xx\c- +\cxClassification:\c- +\cf Plush Doll\c- + +A handcrafted plush doll of a popular shark, dressed up with a doctor's coat and a stethoscope. Yet another of **Nukritas 2xx**'s creations, commissioned as a gift to the **Demolitionist**. + +\cxSaya's Notes:\c- +\cfExplaining to people how we even came up with this would take hours, heheh.\c- + +\cfOh well, at least I figured that you'd want him along for the ride. Not like he's going to get damaged considering the ridiculous quality of whatever the hell it's made of. I never even asked her, really.\c- diff --git a/lore/default/silverbullet.txt b/lore/default/silverbullet.txt index a640756be..d322232ae 100644 --- a/lore/default/silverbullet.txt +++ b/lore/default/silverbullet.txt @@ -11,19 +11,17 @@ TXT \cf Blackmann Arms Ltd.\c- \cf Forx Aeronautics\c- \cxClassification:\c- -\cf Ultra-High Caliber Sniper Rifle\c- +\cf Ultra-High Caliber Anti-Materiel Rifle\c- The **Silver Bullet JET** is the 1.150 member of the **Silver Bullet** series of ultra-high caliber rifles manufactured by **Blackmann Arms**. It was created as a lighter, more "reasonable" alternative to the 1.350 **Behemoth** model. Weighing 43 kilograms and sporting a total length of 2.4 meters, it is sufficiently compact for non-augmented human use. -The main ammunition designed for this specific model is the 1.150 **XSB (eXplosive Super Burst)**. These beastly rounds are partially based on a NATO standard 30x113mm cartridge, and employ a low density **Explodium** shaped charge as propellant, allowing high velocity while still being safe for use. The bullets themselves are composed of a tungsten carbide core, snugly wrapped in an aluminum jacket, and decorated with a thin silver plating for aesthetic appearance (Silver Bullets are, indeed, NOT really made of silver). XSB rounds can penetrate several targets before eventually stopping, depending on their size, they may also do the same for thin walls. - -The secondary ammunition is the 1.150 **FCB (Fat Chode Bomb)**. Personally named by the CEO of Blackmann Arms himself, FCBs are quite similar to the standard XSB ammunition, but instead the bullets are full of additional Explodium, which on impact, is released violently, propagating its deadly blast through solid surfaces. Due to the volatility of these bullets, the propellant employed is slightly less potent, which results in a diminished potential for target penetration, but the blast definitely compensates for this. The explosive charge is so powerful that it can break some walls to pieces. +The ammunition designed for this specific model is the 1.150 **XSB (eXplosive Super Burst)**. This beastly 30x140mm cartridge employs a low density **Explodium** shaped charge as propellant, allowing high velocity while still being safe for use. The bullets themselves are composed of a tungsten carbide core, snugly wrapped in an aluminum jacket, and decorated with a thin silver plating for aesthetic appearance (Silver Bullets are, indeed, NOT really made of silver). XSB rounds can penetrate several targets before eventually stopping, depending on their size, they may also do the same for thin walls. In order to compensate for its massive recoil, the weapon redirects a part of the gasses from round ignition into a set of jet compensators designed by **Forx Aeronautics**. Although partially cooled in the process, it is still hot enough to cause some damage to users not wearing adequate protection. \cfPrimary Fire:\c- Shoot the bullet. Any small targets hit by it are pretty much turned to paste. A second press after firing will chamber another round. -\cfSecondary Fire:\c- Tap to switch next reload between XSB and FCB ammunition, if available. Hold and then press primary fire to manually cock, allowing you to retrieve unfired rounds. +\cfSecondary Fire:\c- Cycle the bolt, chambering a new round if available. Note that you may eject unfired rounds as well. \cfReloading:\c- Reloads the weapon. Each magazine holds 5 rounds. An extra round can also be kept chambered. @@ -34,4 +32,4 @@ In order to compensate for its massive recoil, the weapon redirects a part of th \cxSaya's Notes:\c- \cfWhat was that quote again, "there is no kill like overkill"? Yeah, sounds about right for this thing.\c- -\cfThe fuck are you even supposed to hunt with it, wild tanks? I suppose... bigass beefy demons could also count, but you're going to just turn them all to fucking paste.\c- +\cfThe fuck are you even supposed to hunt with it, wild tanks? I suppose... bigass beefy demons could also count, but there's not going to be anything left of them other than a fine red mist.\c- diff --git a/lore/default/spreadgun.txt b/lore/default/spreadgun.txt index 799806c49..cb4b4a905 100644 --- a/lore/default/spreadgun.txt +++ b/lore/default/spreadgun.txt @@ -14,38 +14,22 @@ TXT The **Spreadgun** is a simple single-shot shotgun with a rather unconventional reload mechanism. Unlike other weapons of the same fashion, the Spreadgun employs an odd variant of break action that **Blackmann Arms** has described as "slide-action", whereas rather than being hinged, the barrel slides horizontally at the press of two side buttons, with a small metal bit springing up and ejecting the loaded shell. After loading in another round, the user merely has to push the barrel back into its closed position. Some have doubts about the practicality of this operation, or its safety, but it's been guaranteed that the gun will not misfire no matter the force exerted to push the barrel back in. -The weapon is chambered for rather sizable 6ga shells, and there's an exclusive assortment of ammunition types it can use, all handled by Blackmann Arms themselves. They are as follows: +The weapon is chambered for rather sizable 6ga shells. The ideal load that you'll find on the field are #00 buckshot rounds. Do note that the spread caused by the shortness of the barrel may make it difficult to reach distant targets, but at close range it should be very effective. -\cfStandard Buckshot:\c- Red shells. Exactly what it says on the tin. The spread caused by the shortness of the barrel may make it difficult to reach distant targets, but at close range it should be very effective. +There is additionally an exclusive secondary load available, so-called \cfGolden Shells\c-, highly rare and expensive, with unmatched destructive power. Each round fires a sabot packing a high-grade, high-density **Explodium** charge, along with gold glitter (which is apparently just for show). Anything directly hit by it is guaranteed to be completely vaporized by the ensuing blast. -\cfMetal Slug:\c- Green shells. Very potent slugs that have a decent accuracy, even at longer ranges. Due to their size and weight, they can potentially penetrate multiple small targets. - -\cfDragon's Breath:\c- White shells. A burst of flame in each shot, has considerable range. Ineffective underwater, for obvious reasons. - -\cfKinylum Saltshot:\c- Teal shells. Small chunks of Kinylum in its natural "salt" form. Once shot, they leave a trail of boiling hot plasma that remains in the air for a few moments before finally dissipating. In addition, the chunks will explode violently on contact with any surface, or once they "destabilize" (which unfortunately makes this type of ammunition ineffective at longer distances). - -\cfTelebrium Flechettes:\c- Black shells. Dozens of piercing projectiles tipped with pure Telebrium, an exotic element known for its potent corrosive effects when heated. Targets hit by these projectiles will experience a very painful discharge of corrosive toxins through their bodies (even non-organic ones), although the effects of this will dissipate in a couple seconds. Use of this ammunition is highly restricted, but you have been granted permission to use it against the invading forces. - -\cfLead Ball:\c- Purple shells. Coming from **Plutoni Incorporated**, these rounds shoot out a heavy ball of pure hurt. Despite the fact it's made of lead, it tends to keep its shape no matter how hard it hits something (some wonder if it actually IS made of lead, or if it's something else entirely). Having come out of such a place, it's no surprise that they also have some rather odd effects. It appears that, on certain occasions, the balls may emit odd sounds on impact, which in addition cause some form of potent shockwave around itself, increasing its speed in the process. This odd happening is listed as "Random Crits" in the store page. - -\cfGolden Shell:\c- Gold-plated shells with a heavy metal body. A highly rare and expensive type of ammunition, with unmatched destructive power. Each round fires a sabot packing a high-grade, high-density **Explodium** charge, along with gold glitter (which is apparently just for show). Anything directly hit by it is guaranteed to be completely vaporized by the ensuing blast. - -The wide range of compatible ammunition types makes the Spreadgun a rather versatile weapon, once you look past its tedious manual reloading. There are however plans to make a much more comfortable semi-automatic, recoil operated variant of this weapon, with prototypes already being tested. +The Spreadgun can be a versatile weapon, once you look past its tedious manual reloading. Still, there are plans to make a much more comfortable semi-automatic, recoil operated variant of this weapon, with prototypes already being tested. \cfPrimary Fire:\c- Shoot the loaded shell. -\cfSecondary Fire:\c- Tap to select the next ammo type to be used on reload. Hold and then press primary fire to unload the current shell and leave the weapon empty. +\cfSecondary Fire:\c- Reloads with golden shells, if available. Note that if the currently loaded round was not spent, it will be returned to its ammo pool. Should there not be enough storage space for it, it will be dropped on the ground instead. -\cfReloading:\c- Unload the current shell and load a new one. If the loaded shell was not spent, it will be returned to its ammo pool. Should there not be enough storage space for it, it will be dropped on the ground instead. +\cfReloading:\c- Reloads with standard ammunition, if available. Same rules apply here. \cxSaya's Notes:\c- -\cfYeah, this shit looks impractical af, and I don't know how no one has shot a hole through their hand reloading the damn thing. BUT, it does let you use all sorts of fun ammo. You've got the typical bread and butter of shells there, and then there's... Literal radioactive rock salt, that explodes, yeah, amazing. But then you look at what's right after that and... yeah.\c- +\cfYeah, this shit looks impractical af, and I don't know how no one has shot a hole through their hand reloading the damn thing. BUT it's powerful as all fuck, what with the absolute girth of that caliber and all.\c- -\cfHermann-senpai redirected me to nerdboi for those black shells, because they were his idea. So, let me explain. Telebrium is... a war crime. Plain and simple. We can kind of get away with it, though, because it's just mindless beasts that you're throwing it at. Still makes me uneasy, but hey, we're not using it on people, unlike the actual cases where it WAS used on people (good god, the stories about that).\c- - -\cfAnyway, enough about crimes, let's talk about the purple bois. So these things are a serious crime, and THOSE TWO had to be involved of course. I'm pretty sure those things are NOT made of lead. This looks like that weird metal they work with, that I swear to fuck I can't even pronounce the name of. And it has... yes, RANDOM CRITS. Therein lies the crime, Demo-chan. Can't believe we've got that shit going on now. I absolutely lost it when I first saw it in action, and I'm sure you will, too.\c- - -\cfLastly there's those golden bois. We can't buy them ourselves, so nerdo made another of his nerdy deals and said that he might reward you every now and then with one for eliminating "high level targets" or something like that. Can't wait to see what that shit is like, a fucking... golden shower of pain.\c- +\cfAlso, there's the whole thing of those golden bois. We can't buy them ourselves, so nerdo made another of his nerdy deals and said that he might reward you every now and then with one for eliminating "high level targets" or something like that. Can't wait to see what that shit is like, a fucking... golden shower of pain.\c- \cf*cough*\c- diff --git a/lore/default/symnatek.txt b/lore/default/symnatek.txt index e670361fc..b7226ca87 100644 --- a/lore/default/symnatek.txt +++ b/lore/default/symnatek.txt @@ -3,7 +3,7 @@ Symnatek TAB People REL -Mixom;Saya;Nukuri;WhiteScar +JoJo;Mixom;Saya;Nukuri;WhiteScar TXT \cxName:\c- \cf Symnatek\c- @@ -21,4 +21,4 @@ As of this article's writing, Symnatek remains king in its home turf, managing e \cxSaya's Notes:\c- \cfAh yes, the well known strategy of "if we're losing money, just contribute to the military". Works every time, huh?\c- -\cfOh I bet you're going to think: "But Saya, who are you to talk, when you made Ibuki for the US military?", and to that I'll respond: "Who said I made her for them?"\c- +\cfYes I know it sounds hypocritical of me to say that, what with the stuff with Ibuki, and my collaborations with the EDF, and all that... But think about it, it's almost like it's inevitable, in this day and age, in this economy, that you have to do stuff like that to stay afloat, isn't it?\c- diff --git a/lore/default/taro.txt b/lore/default/taro.txt index 3efe506b7..04b480c3b 100644 --- a/lore/default/taro.txt +++ b/lore/default/taro.txt @@ -21,13 +21,11 @@ Born in 1985 to **Nana** and **Ryuji Miyamoto**, **Taro** is the oldest of three Taro is a highly skilled programmer, proficient in several languages, and has quite a lot of projects to his name, along with many contributions to notable open source projects, including the **Linux Kernel**. He's also a self-proclaimed "culture archivist", noting that he's basically a walking library when it comes to aspects of popular culture that for most are lost to time, thanks to the immortality inherited from his mother, and his strong memory. He's also quite popular online for his rather comedic anime reviews, under the persona of **"The Waifu Wizard"**. -In 2091, Taro was chosen to personally retrieve the **Red Oni**, **Ibuki Miyamoto**, after the events of the **White Scar**. Following the tracking signal of her collar, he easily located her, and was about to take her back to Japan when a young girl approached him. It was **Elena Yanikov XXI**, a scavenger who had befriended Ibuki during her time wandering that scorched wasteland. She asked Taro to bring her along, promising to "be a good girl". These words immediately made him accept her proposition. - -Not long after that, the two somehow started dating, eventually getting married in 2097. +In 2091, Taro was chosen to personally retrieve the **Red Oni**, **Ibuki Miyamoto**, after the events of the **White Scar**. Following the tracking signal of her collar, he easily located her, and was about to take her back to Japan when a young girl approached him. It was **Elena Yanikov XXI**, a scavenger who had befriended Ibuki during her time wandering that scorched wasteland. She asked Taro to bring her along, and he readily accepted. Not long after that, the two somehow started dating, eventually getting married in 2097. \cxSaya's Notes:\c- -\cfHOW IN THE NAME OF FUCK did my absolute loser of a brother get a girlfriend? I just don't understand. God, looking at the article after he's edited it, there's so much in there that's just him showing off, pathetic...\c- +\cfHOW EVEN did my absolute loser of a brother get a girlfriend? I just don't understand. God, looking at the article after he's edited it, there's so much in there that's just him showing off, pathetic...\c- -\cfYeah, he's that kinda guy. Acts like he's cool shit but once you get past his "amazing skills and achievements", he's just some asshole on the internet. I mean, I admit I kinda am to, a bit, but he's worse. I'd blame it on the fact he spent way too long on shitty forums.\c- +\cfYeah, he's that kinda guy. He loves to show off, what with all of his "amazing skills and achievements" and all. Not that I should be the one to complain when I'm also too proud at times of my own work. The two of us are alike a lot, it's why we're so close even if we fight sometimes over stupid shit. We're a pair of gremlins, and we're proud of it.\c- -\cfThough, he's also serious af when he wants. And at times like that he basically becomes the Tsukkomi to my Boke. If you don't know what that means you can go look it up, Demo-chan.\c- +\cfThough, all that aside, Taro-nii can be very serious when he needs to. And at times like that he basically becomes the Tsukkomi to my Boke. If you don't know what that means you can go look it up, Demo-chan.\c- diff --git a/lore/default/uac.txt b/lore/default/uac.txt index 5bfc507d6..7e055a29f 100644 --- a/lore/default/uac.txt +++ b/lore/default/uac.txt @@ -3,7 +3,7 @@ UAC TAB People REL -Doomguy;Saya;Hell;DemonInvasion +Doomguy;Saya;Hell;DemonInvasion;Dana TXT \cxName:\c- \cf Union Aerospace Corporation\c- @@ -29,9 +29,9 @@ In early 2148, with the UAC not having learned their lesson, teleportation exper What happened then was the beginning of what's been called the **Doom Episodes**. As was told by the UAC following these events, one lone marine managed to, by his lonesome, defeat all the invading forces, taking the fight even to Hell itself. However, the exploits of the so-called **Doom Marine** only served to enrage the archdemon generals even more, and that's when the invasion of Earth began. Although most have seen this as "the end of the world as we know it", the UAC still sends a message of hope to all, saying that all will be resolved. \cxSaya's Note:\c- -\cfOh, the "great and mighty" UAC, bunch of shit-eating capitalist pigs, that's what they are. Look right here, this is what unchecked capitalism does to you, y'all. Yeah, you can guess by now that I fucking hate these people.\c- +\cfOh, the "great and mighty" UAC, bunch of capitalist pigs, that's what they are. Look right here, this is what unchecked capitalism does to you, y'all. Yeah, you can guess by now that I hate these people with the rage of a thousand suns.\c- -\cfSo... Illegal military experiments? Check. Fucking around with interdimensional travel? Check. Potentially causing the end of the world? Also check. These fuckers really ARE a stereotypical evil megacorp, fucking hell...\c- +\cfI've got so much insider info from a friend of Ibuki who used to work there (more info on her own article) that I could make one hell of a list of nasty shit they've done. So... Illegal military experiments? Check. Fucking around with interdimensional travel? Check. Potentially causing the end of the world? Also check. These bastards really ARE a stereotypical evil megacorp, fucking hell...\c- \cfBut you know what? I'm not going to sit on my ass and wait for their supposed "problem fixer" legendary hero soldier boy to fix it all up. As if THAT is going to happen. No, this is precisely why YOU are here, Demo-chan. This is what you are destined to change (wow ok I'm starting to sound a bit uhhhh, cliche-y here). But yeah, we've prepared you for it, you are the ultimate combat robot, the pride of Akari Labs and all that jazz, you CAN save the world, I'm sure of it.\c- TXT @@ -67,7 +67,7 @@ With one final strike to the **"Gatekeeper"**, the titanic demon responsible for In 2150, the company finally closed off all of its teleportation experiments, and in a public announcement, CEO **Ian Kelliher** states that the company will now shift its main focus into repairing all the damages that their actions had brought to Earth. Something which, according to initial estimates, may take over fifty years. \cxSaya's Notes:\c- -\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the "most important man in the world", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear.\c- +\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the "most important man in the world", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear. Even Dana was a barrel of laughs when she heard the news. Yeah, she hates these pricks as much as I do.\c- TXT \cxName:\c- \cf Union Aerospace Corporation\c- @@ -102,9 +102,9 @@ In 2150, the company finally closed off all of its teleportation experiments, an Ten years after this announcement, some worrying news soon reached Earth. Demonic forces had been sighted on several abandoned UAC bases, which were previously thought to all having been thoroughly wiped by radiation bombings. Something had managed to survive there, and was steadily reviving the decayed corpses of the countless fallen demons. Seeing no other choice, the Doom Episodes are reopened, and the very disgruntled Doom Marine was re-commissioned and sent there, this time, after his eventual success, making the decision to stay in Hell, forever, to make sure the demons never attempt an attack ever again. Ever since then, no contact could be made with him. -What little information could be recovered from the other side of all this, that of Hell itself, is that his rampage was unstoppable. He defeated the remaining demon commanders. Tens of thousands of demons, in their mindless rage, all marched towards their deaths by his hand. There was hope among the civilian population that this one human, now rebaptized by the title of **Doom Slayer**, would put an end to the tyranny of the archdemon generals, but they had their plans for him. They were fully aware that should he make his way to the capital city of **Dis** once again, they would not be able to stop him. So a trap was set, and he fell right into it. It was then that **Erebus**, the leading general, banished him, far away, beyond the confines of this universe, so that he may never be able to return to this world. +What little information could be recovered from the other side of all this, that of Hell itself, is that his rampage was unstoppable. He defeated the remaining demon commanders. Tens of thousands of demons, in their mindless rage, all marched towards their deaths by his hand. There was hope among the civilian population that this one human soldier would put an end to the tyranny of the archdemon generals, but they had their plans for him. They were fully aware that should he make his way to the capital city of **Dis** once again, they would not be able to stop him. So a trap was set, and he fell right into it. It was then that **Erebus**, the leading general, banished him, far away, beyond the confines of this universe, so that he may never be able to return to this world. \cxSaya's Notes:\c- -\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the "most important man in the world", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear.\c- +\cfCrazy stuff, all because of the UAC being shit and bad. I'm happy though, because I got to see that pathetic brat's fall from glory, that idiot, who once claimed to be the "most important man in the world", now turned into the US government's personal lap dog. It's so hilarious my sides have gone into orbit, I swear. Even Dana was a barrel of laughs when she heard the news. Yeah, she hates these pricks as much as I do.\c- \cfAnd so, here ends the story of these Dumb Epistles or whatever, one of the shining examples of the consequences of unchecked capitalism™.\c- diff --git a/lore/default/unissix.txt b/lore/default/unissix.txt index 7af5ac7c7..74918dbee 100644 --- a/lore/default/unissix.txt +++ b/lore/default/unissix.txt @@ -49,10 +49,6 @@ Misa and her wife stayed in the island until 2108, when they were notified about \cfOh yeah, also Misa is one hell of a pro gamer, holy shit. Anything I got her to play, she would just blaze through like it was nothing. Yeah, even THOSE games. It's fun to watch her, and she's specially fond of adventure stuff, I guess because it's the kinda thing she could never do irl.\c- -\cfAlso, funny story. The first time I visited them when they were in Sankaideriha, Misa gave me one hell of a scare with that sudden transformation she went through. It's like... she was a completely different person entirely. Like, I had never seen her so happy before, it was really something else, and honestly I was also happy for her too. Ah, and then that other thing happened, when uhhh... we went to a hot springs together. I... accidentally... saw... down there, yeah...\c- +\cfAlso, funny story. The first time I visited them when they were in Sankaideriha, Misa gave me one hell of a scare with that sudden transformation she went through. It's like... she was a completely different person entirely. Like, I had never seen her so happy before, it was really something else, and honestly I was also happy for her too.\c- -\cfGod, no wonder I could hear Zana-sama across the house when they'd go at it. Ah... you lucky devil...\c- - -\cfYes, that was when they were staying at my place. They're not the first I hear do it like wild beasts, actually. Yu-chan and that big tiddy goth gf of hers, they're quite something too. Seriously, no one knows that from my bedroom you can perfectly hear whatever's happening in the guest room. Dunno why, some sort of acoustics fuckery or something, but yeah.\c- - -\cf(I wish I could unhear the unholy noises Taro-niisan emitted when he brought Ellen-san, though)\c- +\cfGod, they just are the cutest of couples. I can't stop saying it.\c- diff --git a/lore/default/voicebox.txt b/lore/default/voicebox.txt index 73a2caeb0..58d1eeb2f 100644 --- a/lore/default/voicebox.txt +++ b/lore/default/voicebox.txt @@ -17,7 +17,7 @@ The **Loudboi** is a simple and lightweight device for AI units. Easy to install The **Akari Labs** community offers a variety of custom-made voice packs for this device, too. Please visit our forums for more information. \cxSaya's Notes:\c- -\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, just without the tiddy.\c- +\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, but in cute robot form.\c- TXT \cxDesignation:\c- \cf Loudboi Voicebox\c- @@ -31,6 +31,6 @@ The **Loudboi** is a simple and lightweight device for AI units. Easy to install The **Akari Labs** community offers a variety of custom-made voice packs for this device, too. Please visit our forums for more information. \cxSaya's Notes:\c- -\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, just without the tiddy.\c- +\cfHeh... I just love that cute voice you've got, it's a perfect complement to that sassy personality of yours. And what amuses me the most is how quickly you picked up all our little quirks and mannerisms, especially Ibuki's. In a way it's almost like you're sometimes a smol version of her, but in cute robot form.\c- -\cfUpdate: And then... Your true vocal chords as a maidbot came to be, no filters or anything, and my love for your charming voice only increased. My heart melts at the sound of it, hehehe...\c- +\cfUpdate: And then... Your true vocal chords as a maidbot came to be, no filters or anything, and my love for your charming voice only increased. My heart melts at the sound of it, seriously...\c- diff --git a/lore/default/wallbuster.txt b/lore/default/wallbuster.txt index a83280cd0..16a6aaff8 100644 --- a/lore/default/wallbuster.txt +++ b/lore/default/wallbuster.txt @@ -3,7 +3,7 @@ Wallbuster TAB Item REL -Blackmann;Bigshot;Demolitionist;Saya;Taro;Belt +Blackmann;Hermann;Bigshot;Demolitionist;Saya;Taro;Belt TXT \cxDesignation:\c- \cf "Wallbuster" Heavy Armor Breaching Shotgun\c- @@ -17,17 +17,7 @@ The **Wallbuster** is a beefy beast of a shotgun, sporting a total of 25 barrels The internal mechanisms driving this weapon have such a degree of complexity that they've been described as **"Kraut Deep Space Magic"** by some. Only **Hermann E. Ischer** himself knows every detail about their operation. With each twist of the main trigger, the topmost barrel is primed, and then its cylinder spins counter-clockwise, with the next round ready for shooting. On a complete rotation, or when the secondary trigger is used, the main body spins afterwards, switching to another cylinder. -The Wallbuster is compatible with most types of 6ga shells distributed by Blackmann, although there are safety restrictions on some, namely dragon's breath, flechettes, and golden shells. This limits the range of ammunition usable to only these four types: - -\cfStandard Buckshot:\c- Red shells. Exactly what it says on the tin. Quite lethal at short range, and with some extra reach due to the length of the weapon's barrels. - -\cfMetal Slug:\c- Green shells. Very potent slugs that have a decent accuracy, even at longer ranges. Due to their size and weight, they can potentially penetrate multiple small targets. - -\cfKinylum Saltshot:\c- Teal shells. Small chunks of Kinylum in its natural "salt" form. Once shot, they leave a trail of boiling hot plasma that remains in the air for a few moments before finally dissipating. In addition, the chunks will explode violently on contact with any surface, or once they "destabilize" (which unfortunately makes this type of ammunition ineffective at longer distances). - -\cfLead Ball:\c- Purple shells. Coming from **Plutoni Incorporated**, these rounds shoot out a heavy ball of pure hurt. Despite the fact it's made of lead, it tends to keep its shape no matter how hard it hits something (some wonder if it actually IS made of lead, or if it's something else entirely). Having come out of such a place, it's no surprise that they also have some rather odd effects. It appears that, on certain occasions, the balls may emit odd sounds on impact, which in addition cause some form of potent shockwave around itself, increasing its speed in the process. This odd happening is listed as "Random Crits" in the store page. - -Despite this limitation, with just these four types one can make of the Wallbuster a quite mighty companion. Especially taking into account the semi-automatic nature of the weapon, allowing for a quick succession of shots or even shooting multiple shells simultaneously. +Taking into account the semi-automatic nature of the weapon, allowing for a quick succession of shots or even shooting multiple shells simultaneously, the Wallbuster is a quite mighty companion. \cfPrimary Fire:\c- Shoots the topmost barrel. @@ -35,15 +25,13 @@ Despite this limitation, with just these four types one can make of the Wallbust \cfTertiary Fire:\c- Shoots it all, if you really want to. -\cfReloading:\c- Once the side lever is pulled down, the cylinders can be safely detached and reloaded individually. For reloading on the go, it's recommended to have a **Magnetic Utility Belt** or similar at hand, as it will make this operation easier. Speed loaders are available for purchase from the Blackmann Arms website, or from authorized distributors. Clever operators might also choose to carry spare pre-loaded cylinders. +\cfReloading:\c- Once the side lever is pulled down, the cylinders can be safely detached and reloaded individually. A rapid reload routine will execute that automatically makes you top up the gun as much as possible, one cylinder at a time, for as long as the action is held. \cfTechniques:\c- True to its name, you can destroy all sorts of obstacles along the way, provided you're dealing enough damage relative to their size (requiring secondary or tertiary fire). This even includes locked doors, so you won't have to bother with key hunting anymore. \cxSaya's Notes:\c- -\cfOK so, this ballbusting hunk of metal. Yeah, now ain't that some good shit...\c- +\cfOK so, this hunk of metal. Yeah, now ain't that some good shit...\c- -\cfDon't worry about reloading this taking a long-ass time, btw. DemolitionOS comes with a quick reload routine that'll make it much easier for you. The ammo will be queued up in your Hammerspace, and then all you have to do is hold out your hand above the barrels, and they'll get deployed right inside. Nifty, huh? Taro did most of the work on that, so yeah, you can thank him.\c- +\cfDon't worry about reloading this taking a long-ass time, btw. DemolitionOS comes with a quick reload routine that'll make it nice and easy for you. The ammo will be queued up in your Hammerspace, and then all you have to do is hold out your hand above the barrels, and they'll get deployed right inside, takes around 10 seconds to top it up, more or less. Nifty, huh? Taro did most of the work on that, so yeah, you can thank him.\c- -\cfOh and... y'know... this whole thing, that name and all, kinda makes me think of grandma a bit. I mean, if you change the first letter... Oh, do you hear those drums and that guitar? 'cause I sure do...\c- - -\cfOld Days~ ♪\c- +\cfOh and... y'know... this whole thing, that name and all... Well, the joke already makes itself.\c- diff --git a/lore/default/wararmor.txt b/lore/default/wararmor.txt index 5e5c6ac01..1e250435a 100644 --- a/lore/default/wararmor.txt +++ b/lore/default/wararmor.txt @@ -20,4 +20,4 @@ This piece of armor offers a massive reduction to incoming damage of basic eleme \cxSaya's Notes:\c- \cfNerdboi and his "armor analysis" once again. This guy, seriously... Life isn't a goddamn videogame, so please PLEASE stop talking in terms like "damage units" and "reduction factors".\c- -\cfAaaaanyway, Misa makes some pretty nifty stuff. I feel that it's a bit redundant that you're wearing armor made of the same stuff as your chassis. I mean, a robot wearing armor... yeah, why not? Protection is always important, huhu...\c- +\cfAaaaanyway, Misa makes some pretty nifty stuff. I feel that it's a bit redundant that you're wearing armor made of the same stuff as your chassis. I mean, a robot wearing armor... Well, nothing wrong with some extra protection, I guess.\c- diff --git a/lore/default/whitelady.txt b/lore/default/whitelady.txt index e46eae8a1..6be501f4f 100644 --- a/lore/default/whitelady.txt +++ b/lore/default/whitelady.txt @@ -23,22 +23,9 @@ Despite her gentle appearance, she's quite deadly, being able to quickly tear he The White Lady has worked for many individuals and organizations over the years, but recently, she's been hired by the **University of Nos-Kora** in order to collaborate with the **Demolitionist** in their missions. -Demolitionist, this message is for you. Your love for the **Mashiro Plush** from our **Lucky Chanceboxes** has made her contract effective, and thus, whenever you have a **Sankai Companion Lamp** in your possession, the White Lady shall readily work alongside you, and slay any enemies you may encounter. +Demolitionist, this message is for you. Your love for the **Moth Girl Plush** from our **Lucky Chanceboxes** has made her contract effective, and thus, whenever you have a **Sankai Companion Lamp** in your possession, the White Lady shall readily work alongside you, and slay any enemies you may encounter. \cxSaya's Notes:\c- +\cfPlease excuse me while I have a moment to wild out over the fact that moth girls actually exist.\c- + \cfGHFFFSDFHDGKHDFDKHGSFHFHGSFSH\c- - -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- -\cfMOTH GIRLS ARE REAL\c- - -\cfI AM SO FUCKING BUILDING A GODDAMN SPACE SHIP TO TRAVEL TO THAT PLANET, FUCK THE LAWS, FUCK THE WHITE SCAR TREATY, FUCK EVERYTHING, I WANT TO SEE THE MOTH GIRLS. I'M BRINGING ALONG ALL THE LAMPS I CAN FIND, I'M BUILDING A FUCKING HAREM.\c- diff --git a/lore/default/whitescar.txt b/lore/default/whitescar.txt index 78cc9efea..6c2cf1d7b 100644 --- a/lore/default/whitescar.txt +++ b/lore/default/whitescar.txt @@ -3,7 +3,7 @@ The White Scar TAB Lore REL -Nukuri;NosKora;Saya;Zanaveth2 +Nukuri;NosKora;Nukritas1xx;Saya;Zanaveth2 TXT \cxName:\c- \cf The White Scar\c- @@ -16,7 +16,7 @@ In June of 2073, the **Nukuri Seventh World War** began. It was one more attempt There were many losses on both sides, including civilians, in a chaotic confrontation between people who, not long before, had been peacefully allied for half a century. In three years, the vastly superior Nukuri armies neutralized all opposition, and set their sights on the very heart of the country. Wishing to "slay the beast from within", a small team managed to locate and capture the president. He was given one last choice, right there and then. He could either surrender and publicly apologize for his affront to the empire, or he could refuse, and watch as the **Emperor's Wrath** falls down upon him. -He chose the latter option, and what followed was nothing short of unimaginably despicable and cruel. All Nukuri forces retreated, and they evacuated any remaining civilian Nukuri who still remained. Then, in an instant, a succession of blinding flashes of scorching light reduced the whole United States territory to ashes, coming from the experimental orbital weapon the empire had built many years prior. It was its very first test fire, and the actual scale and effects of it were not yet known. Some say that the apocalyptic effects it had were not truly intended, that the plan was not to put an end to all life, but rather only cause destruction on a more "technical" level, disabling all electronic devices and machinery. Suffice to say, when the lead designer of this weapon, **Zanaveth Nekuraku I**, saw what had happened, he suffered a severe mental breakdown, and disappeared from the public eye for many years. +He chose the latter option, and what followed was nothing short of unimaginably despicable and cruel. All Nukuri forces retreated, and they evacuated any remaining civilian Nukuri who still remained. Then, in an instant, a succession of blinding flashes of scorching light reduced all major cities along the United States' east coast to ashes, coming from the experimental orbital weapon the empire had built many years prior. It was its very first test fire, and the actual scale and effects of it were not yet known. Some say that the apocalyptic effects it had were not truly intended, that the plan was not to put an end to all life, but rather only cause destruction on a more "technical" level, disabling all electronic devices and machinery. Suffice to say, when the lead designer of this weapon, **Zanaveth Nekuraku I**, saw what had happened, he suffered a severe mental breakdown, and disappeared from the public eye for many years. With this attack, the flames of the war against the empire only got stronger. In addition, all the remaining Nukuri on Earth were forced to leave, and with the exception of a select few countries, the **White Scar Treaty** was signed almost unanimously, putting an end to half a century of Nukuri contributions to the evolution of our science and technology. Those who had signed had to reject anything made by them, and no longer make any contact with any member of their species. In addition, they were no longer allowed to remain on their Moon colony either, forcing the **Luna Research Institute** to close its doors after almost four thousand years. @@ -24,13 +24,13 @@ Everyone wanted the emperor's head. Not only had it been a major mistake for hum **Nukritas 1xx** would then, by himself, walk all the way down from the northernmost region of Akane to the imperial capital in Vutaki. His advance could not be stopped, he shrugged off any attempts by imperial soldiers, he destroyed their weapons merely by looking at them. Once he reached the imperial palace, he kicked the doors open and made his way to the throne, there, emperor Ledora Yathai, frozen in terror, received a single punch across the gut from the Mishe ambassador, and was sent flying in a straight line out the window, reaching such a velocity that he completely vanished into the void of space. Then, the University made their announcement, the **Nos-Kora Ultimatum**. The Nukuri race was given eight years to resolve their conflicts and make peace. Should they have failed to do so, the University would close its doors forever, and the Mishe would formally leave the **X'Animen Coalition**, taking their valuable knowledge with them. -This threat was taken very seriously, as the Mishe were one of the most important members of this interplanetary alliance, and so a massive reform followed. Both sides were now united in their mission to rebuild Nahkami in its entirety as a new nation. In 2108, only halfway through the time limit they had set, the **Nukuri Unified Government** was finally established, with **Zanata Nekuraku II** as "transitional" prime minister. Following this, an attempt was made to reestablish relations with Earth, but it was useless, they were completely ignored, save for two countries who had not signed the treaty: Scotland and Japan. +This threat was taken very seriously, as the Mishe were one of the most important members of this interplanetary alliance, and so a massive reform followed. Both sides were now united in their mission to rebuild Nahkami in its entirety as a new nation. In 2108, only halfway through the time limit they had set, the **Nahkami Unified Government** was finally established, with **Zanata Nekuraku II** as "transitional" prime minister. Following this, an attempt was made to reestablish relations with Earth, but it was useless, they were completely ignored, save for two countries who had not signed the treaty: Scotland and Japan. These two countries were host to powerful corporations that had been long time partners of Zanata's own company, **Nekuratek**, and were fully aware of the truth of the situation, hence why they had refused to break bonds with them. Of note regarding this were various statements on social media from **Saya Miyamoto**, head of the Japanese **Akari Labs**, condemning all those who had signed the treaty for their "gross generalization" in seeing the entirety of the Nukuri as an enemy. No further attempts have been made ever since to try once again to reestablish the former alliance, not even during many major events that would threaten Earth once again, where they would have gladly come to our aid as they had done in the **Luna Event** of 2021. Earth was, in addition, barred from the possibility of entering the X'Animen Coalition due to this fierce opposition. \cxSaya's Notes:\c- -\cfLo and behold, here it be, the darkest moment in human history (to date). Seriously, it fucks me up thinking again about what had happened, it was some awful shit. Like, not just the whole fucking burnination of an entire country, but also what was going down on the other side too, all the stuff Zana-sama told me about.\c- +\cfLo and behold, here it be, the darkest moment in human history (to date). Seriously, it fucks me up thinking again about what had happened, it was some awful shit. Like, not just the whole burnination of an entire country, but also what was going down on the other side too, all the stuff Zana-sama told me about.\c- -\cfI mean, sure, from this one can guess that the Nukuri were anything but peaceful, but that's not even half of it. The empire, the fucking empire, it was all the goddamn stinking bitch-ass piece of shit empire. Fucking, megalomaniacal evil-ass genocidal shithead emperor running the show, doing whatever the fuck he wanted. All those wars, it was all people who wanted him gone, and he'd crush them, over and over, with no remorse. He ran the place, and he could do whatever he wanted to them, like the ugly bastard he was. Yeah, I heard all of it. The mass executions, going as far as to bringing not one, but TWO whole races to extinction, yeah, THAT was sure fucked up. Oh but what about, torturing and massacring people who were seen as "traitors" and "deviants", huh? Yeah, that shit too. Zana-sama lost a lot of her family because of that. Ugh, I swear, one day I'm going to nail down where that bastard was yeeted to, just so I can kick him into paste. I'll obviously start with the balls, for sure, that one's for the other thing he did, which I'm not going to talk about here because I mean, holy fuck, this got dark (and it gets even darker). I have GOOD reasons to hate someone as fucking disgustingly vile as this motherfucker, hell, "motherfucker" is not even close there, considering what he did. Yeah, I think you get the hint now, do you? I bet you'd want to get your hands on him too. God damn if only those crazy guys hadn't yeeted him into space...\c- +\cfI mean, sure, from this one can guess that the Nukuri were anything but peaceful, but that's not even half of it. The empire, the fucking empire, it was all the goddamn stinking empire. That megalomaniacal evil-ass emperor running the show, doing whatever he wanted. All those wars, it was all people who wanted him gone, and he'd crush them, over and over, with no remorse. He ran the place, and he could do whatever he wanted to them. Yeah, I heard all of it. The executions, the torturing and massacring of people who were seen as "traitors" and "deviants"... Zana-sama lost a lot of her family because of that. I seriously hate that stuff like this keeps happening all over the world...\c- diff --git a/lore/default/xanimen.txt b/lore/default/xanimen.txt index b60c6a047..844d0bed8 100644 --- a/lore/default/xanimen.txt +++ b/lore/default/xanimen.txt @@ -33,9 +33,9 @@ A system located within the Andromeda galaxy, and the most populated, despite on \cfKarnanaiahma:\c- A world of large oceans, and the homeworld of the **Qurensniv**, a race almost indistinguishable from humans. Some of its inhabitants fled to Earth in 130 BC, forming the town of **Kereshnovka**. -\cfBuran:\c- A formerly lush planet teeming with wildlife, which is now entirely covered by a matryoshka brain superstructure known as the **Bleaknet**. It is the homeworld of the **Burakan** race, of which only one surviving member remains: the lead engineer of the Bleaknet project. This oddly named structure in addition serves as a nexus of information for the entire coalition, linking together their various networks through complex space-time distortion technology. +\cfBuran:\c- A formerly lush planet teeming with wildlife, which is now entirely covered by a matryoshka brain superstructure known as the **Bleaknet**. It is the homeworld of the **Burakan** race, of which only one member resides within: the lead engineer of the Bleaknet project. This oddly named structure in addition serves as a nexus of information for the entire coalition, linking together their various networks through complex space-time distortion technology. -\cfSora, Yasakuna, Sunkaeze:\c- Two gast giants and one barren planet in the outer rim of the system. All uninhabitable, although it's been noted that **Sunkaeze** once housed a facility owned by **Decade Mechanics**. +\cfSora, Yasakuna, Sunkaeze:\c- Two gas giants and one barren planet in the outer rim of the system. All uninhabitable, although it's been noted that **Sunkaeze** once housed a facility owned by **Decade Mechanics**. \cxZenna:\c- The second most populated system, and with the most inhabited planetary bodies. It is located within the Triangulum galaxy. @@ -48,7 +48,7 @@ The second most populated system, and with the most inhabited planetary bodies. \cfNekemekya:\c- A semi-artificial planet covered by a large metallic shell. It is home to **Ix Nemeke**, and the **Mekyon**, a race of mechanical beings he had created. -\cfXeryuga:\c- A highly hostile magma-filled hellscape planet, inhabited by the unfairly adorable bunny-like **Xeura** race, along with **Ix Xeuriges**, their creator. +\cfXeryuga:\c- A highly hostile magma-filled hellscape planet, inhabited by the lagomorph-like **Xeura** race, along with **Ix Xeuriges**, their creator. \cfUrai, Erusa, Sethia:\c- A trio of gas giants rich in valuable materials. The exploitation of these resources is currently contested by members of the system. @@ -94,7 +94,7 @@ In addition, two other systems were considered for joining in. Negotiations fell \cxSaya's Notes:\c- \cf"Negotiations fell apart" is one way to put it. God, imagine... just IMAGINE for a moment that things had gone better. We would be part of a huge interplanetary alliance! That stuff is like... straight out of some sci-fi novel or something.\c- -\cfBy the way, I don't know if you've just skimmed through it or actually read the whole thing, but did you SEE the entry on that one planet? What the fuck is up with that??? It's like some crazy overly creative elementary schooler came up with all that shit. Fucking hell. Did a god really do that? Or... is it just the most ridiculous fucking coincidence imaginable...?\c- +\cfBy the way, I don't know if you've just skimmed through it or actually read the whole thing, but did you SEE the entry on that one planet? What the fresh heck is up with that??? It's like some overly creative elementary schooler came up with all of that. Did a god really do that? Or... is it just the most ridiculous coincidence imaginable...?\c- \cfI don't even know, Demo-chan... at this point, anything could be, from what I've seen out there.\c- TXT @@ -129,7 +129,7 @@ A system located within the Andromeda galaxy, and the most populated, despite on \cfBuran:\c- A formerly lush planet teeming with wildlife, which is now entirely covered by a matryoshka brain superstructure known as the **Bleaknet**. It is the homeworld of the **Burakan** race, of which only one surviving member remains: the lead engineer of the Bleaknet project. This oddly named structure in addition serves as a nexus of information for the entire coalition, linking together their various networks through complex space-time distortion technology. -\cfSora, Yasakuna, Sunkaeze:\c- Two gast giants and one barren planet in the outer rim of the system. All uninhabitable, although it's been noted that **Sunkaeze** once housed a facility owned by **Decade Mechanics**. +\cfSora, Yasakuna, Sunkaeze:\c- Two gas giants and one barren planet in the outer rim of the system. All uninhabitable, although it's been noted that **Sunkaeze** once housed a facility owned by **Decade Mechanics**. \cxZenna:\c- The second most populated system, and with the most inhabited planetary bodies. It is located within the Triangulum galaxy. @@ -142,7 +142,7 @@ The second most populated system, and with the most inhabited planetary bodies. \cfNekemekya:\c- A semi-artificial planet covered by a large metallic shell. It is home to **Ix Nemeke**, and the **Mekyon**, a race of mechanical beings he had created. -\cfXeryuga:\c- A highly hostile magma-filled hellscape planet, inhabited by the unfairly adorable bunny-like **Xeura** race, along with **Ix Xeuriges**, their creator. +\cfXeryuga:\c- A highly hostile magma-filled hellscape planet, inhabited by the lagomorph-like **Xeura** race, along with **Ix Xeuriges**, their creator. \cfUrai, Erusa, Sethia:\c- A trio of gas giants rich in valuable materials. The exploitation of these resources is currently contested by members of the system. @@ -197,7 +197,7 @@ In addition, one other system was considered for joining in, however negotiation \cxSaya's Notes:\c- \cf"Negotiations fell apart" is one way to put it. God, imagine... just IMAGINE for a moment that things had gone better. We would be part of a huge interplanetary alliance! That stuff is like... straight out of some sci-fi novel or something.\c- -\cfBy the way, I don't know if you've just skimmed through it or actually read the whole thing, but did you SEE the entry on that one planet? What the fuck is up with that??? It's like some crazy overly creative elementary schooler came up with all that shit. Fucking hell. Did a god really do that? Or... is it just the most ridiculous fucking coincidence imaginable...?\c- +\cfBy the way, I don't know if you've just skimmed through it or actually read the whole thing, but did you SEE the entry on that one planet? What the fresh heck is up with that??? It's like some overly creative elementary schooler came up with all of that. Geez. Did a god really do that? Or... is it just the most ridiculous coincidence imaginable...?\c- \cfI don't even know, Demo-chan... at this point, anything could be, from what I've seen out there.\c- diff --git a/lore/default/xekke.txt b/lore/default/xekke.txt index 9cb951456..cc9b670eb 100644 --- a/lore/default/xekke.txt +++ b/lore/default/xekke.txt @@ -25,6 +25,4 @@ Of the people themselves, what is first noted is their eloquence. The Xekkas lan \cxSaya's Notes:\c- \cfI've only seen pics of the place, from Zana-sama. It's definitely cool, all those rocky mountains, the sprawling cities around them, the lakes and waterfalls, the volcanic areas with huge rivers of magma and PEOPLE BATHING IN IT (holy shit)...\c- -\cfAnd yeah, that's basically Maruku-sama's home right there. She's got the whole family and everything in there, including her... mom. Oh my fucking god don't even get me started on her mom. I'll just end up curled up in a corner again thinking about THAT one time.\c- - -\cfCan't believe a fucking five meter tall hot milf goddess proposed to have sex with me right there and then jesus fuck holy shit why did I have to fucking pass out I could have had THE BEST SEX OF MY FUCKING LIFE WITH THE MOTHERFUCKING GODDESS OF LUST.\c- +\cfAnd yeah, that's basically Maruku-sama's home right there. She's got the whole family and everything in there. Heh, she even told me that being surrounded by titans makes her less self-conscious about being so huge.\c- diff --git a/lore/default/ynykron.txt b/lore/default/ynykron.txt index 72178e2e8..517cd6289 100644 --- a/lore/default/ynykron.txt +++ b/lore/default/ynykron.txt @@ -34,11 +34,11 @@ It should be noted that this weapon's usage is highly restricted. Special permis \cxSaya's Notes:\c- \cfSometimes I wonder if Misa actually realizes the dangers of the stuff she makes. This thing... it's maybe a bit too much, you know... Even compared to all the other stuff in the arsenal. I still ended up accepting it, anyway, because you know how I am, and how cute Misa is. I can't say no to that face. Besides, she made it for us, specifically.\c- -\cfSo yeah, here it is, "God's Cumshot" in all its glory. A motherfucking blast of blinding whiteness that just... absolutely fucking obliterates everything it's aimed at. Sure is a weapon, huh?\c- +\cfSo yeah, here it is, the "Divine Fury" in all its glory. A blast of goddamn blinding whiteness that just... absolutely fucking obliterates everything it's aimed at. Sure is a weapon, huh?\c- \cfAlso, that alternate mode... I know you'll probably do it anyway out of curiosity. Just... be careful, okay?\c- -\cfOh, and just so you know, this thing is the reason why I make backups of your core before every mission. With any other weapon, I wouldn't be worried 'cause your body's pretty damn resilient, but this fucking thing is on a different level entirely. I gotta say it again, BE VERY CAREFUL. If you get caught in the blast you're gone forever, got it?\c- +\cfOh, and just so you know, this thing is the reason why I make backups of your core before every mission. With any other weapon, I wouldn't be worried 'cause your body's pretty damn resilient, but this thing is on a different level entirely. I gotta say it again, BE VERY CAREFUL. If you get caught in the blast you're gone forever, got it?\c- TXT \cxDesignation:\c- \cf Ynykron Artifact\c- @@ -69,12 +69,12 @@ It should be noted that this weapon's usage is highly restricted. Special permis \cxSaya's Notes:\c- \cfSometimes I wonder if Misa actually realizes the dangers of the stuff she makes. This thing... it's maybe a bit too much, you know... Even compared to all the other stuff in the arsenal. I still ended up accepting it, anyway, because you know how I am, and how cute Misa is. I can't say no to that face. Besides, she made it for us, specifically.\c- -\cfSo yeah, here it is, "God's Cumshot" in all its glory. A motherfucking blast of blinding whiteness that just... absolutely fucking obliterates everything it's aimed at. Sure is a weapon, huh?\c- +\cfSo yeah, here it is, the "Divine Fury" in all its glory. A goddamn blast of blinding whiteness that just... absolutely fucking obliterates everything it's aimed at. Sure is a weapon, huh?\c- \cfAlso, that alternate mode... I know you'll probably do it anyway out of curiosity. Just... be careful, okay?\c- -\cfOh, and just so you know, this thing is the reason why I make backups of your core before every mission. With any other weapon, I wouldn't be worried 'cause your body's pretty damn resilient, but this fucking thing is on a different level entirely. I gotta say it again, BE VERY CAREFUL. If you get caught in the blast you're gone forever, got it?\c- +\cfOh, and just so you know, this thing is the reason why I make backups of your core before every mission. With any other weapon, I wouldn't be worried 'cause your body's pretty damn resilient, but this thing is on a different level entirely. I gotta say it again, BE VERY CAREFUL. If you get caught in the blast you're gone forever, got it?\c- -\cfPS: We've confirmed it (well, Misa did, directly), this thing is effective against gods too. Not enough to kill, but it does have some very... notable destructive effects. Pretty crazy story, right? The next day after our wedding, Misa just popped up carrying her personal Ynykron and challenged the fucking goddess of war to a duel, right there and then. She ate up the whole damn blast, burned through most of her body leaving bones exposed. After that very painful experience, Misa was declared the second strongest warrior in the fucking universe, just like that. Oh yeah, and Erika described the experience as "being struck by a condensed supernova". That's metal as fuck.\c- +\cfPS: We've confirmed it (well, Misa did, directly), it is effective against gods too. Not enough to kill, but it does have some very... notable destructive effects. Pretty crazy story, right? The next day after our wedding, Misa just popped up carrying her personal Ynykron and challenged the goddess of war herself to a duel, right there and then. She ate up the whole damn blast, burned through most of her body leaving bones exposed. After that very painful experience, Misa was declared the second strongest warrior in the universe, just like that. Oh yeah, and Erika described the experience as "being struck by a condensed supernova". That's metal as hell.\c- -\cfAh... and I think this will be the last time we can use ours in a mission. Misa wants nothing to do with this anymore. Once it's all over we have to deliver it to her for destruction. A shame, but come on, I totally understand, this kind of weapon shouldn't exist.\c- +\cfAh... and I think this will be the last time we can use ours in a mission. Misa wants nothing to do with this anymore. Once it's all over we have to deliver it to her for destruction, and I totally understand, this kind of weapon maybe shouldn't exist.\c- diff --git a/lore/default/yui.txt b/lore/default/yui.txt index a50ba9fb0..11417cb3b 100644 --- a/lore/default/yui.txt +++ b/lore/default/yui.txt @@ -28,8 +28,6 @@ All of this was clearly never going to happen, and she knew it, but one day, the After the concert, she excitedly lined up to get an autograph, and that's when the impossible became possible. Once in front of the **"Stylish Witch of the West"**, Yui nervously asked her, but what she got instead were some words that left her frozen in place: "You're a very cute gal. Wanna go out with me?". Suffice to say, the two are now happily married. \cxSaya's Notes:\c- -\cfghfjksdhfsjkghsdkfjsfgj I was so happy for her but also JEALOUS, YES, VERY JEALOUS. God when that happened I thought she was going to pass out, big tiddy goth gf asking her out like that out of the blue, holy fucking shit...\c- +\cfghfjksdhfsjkghsdkfjsfgj I was so happy for her, but god, when that happened I thought she was going to pass out, cool goth witch asking her out like that out of the blue, good lord...\c- -\cfSo apparently, Yu-chan is EXACTLY her type, talk about a crazy coincidence, huh? A match made in fucking heaven right there. Honestly, this stinks so much of cliche-y love-at-first-sight romance that, whew... I bet it's hard to believe such a story. Ashley-san even jokingly said that "love at first sight" is something that runs in her family. Pffff...\c- - -\cfDamn her, having a hot big tiddy goth gf all for herself... I really was jealous. Well, I was, until I had Ibuki, heheheheh.\c- +\cfSo apparently, Yu-chan is EXACTLY her type, talk about a crazy coincidence, huh? A match made in heaven right there. Honestly, this stinks so much of cliche-y love-at-first-sight romance that, whew... I bet it's hard to believe such a story. Ashley-san even jokingly said that "love at first sight" is something that runs in her family. Pffff... Come on...\c- diff --git a/lore/default/zanaveth2.txt b/lore/default/zanaveth2.txt index be273abbd..9e7960ec6 100644 --- a/lore/default/zanaveth2.txt +++ b/lore/default/zanaveth2.txt @@ -31,14 +31,14 @@ In August 20th of 2042, Zanaveth II and Misa had a child, **Zanaveth Nekuraku II In the wake of the **Nukuri Seventh World War** of 2068, Zanaveth II fled with her wife and child to **Sankaideriha** with the help of Nukuri witch **Saniuke Okusainaya**, old friend of her family. Two years later, after showing notable difficulties settling in, the family decided to leave Zanaveth III in Saya's care. This would last until 2077, when the **White Scar** incident prompted the expulsion of all Nukuri on Earth. Zanaveth III was then sent to live with her grandparents for the time being, until the end of the war in 2104, when her parents returned to Nahkami once again. -Since the formation of the **Nukuri Unified Government** in 2108, Zanaveth II holds the position of "Minister of Interspecies Relations", thanks in part to her outstanding achievements during her time as a student of the University of Nos-Kora. +Since the formation of the **Nahkami Unified Government** in 2108, Zanaveth II holds the position of "Minister of Interspecies Relations", thanks in part to her outstanding achievements during her time as a student of the University of Nos-Kora. \cxSaya's Notes:\c- \cfAhhhhhh, damn. She really is the sweetest and cutest gal I've ever met, let me tell ya. And it's one hell of an achievement for me to get this alien cutie to become a complete weeb too, heh...\c- -\cfOh man, meeting her was the best christmas gift ever. And also her smol cinnamon roll of a wife, too, huhuhu... Lucky devil, getting herself a girl like that. It was hella fun to hang out with them, especially because of how excited Zana-sama was about everything around the city. She was like a little kid in a candy shop at times. ABSOLUTELY FUCKING ADORABLE.\c- +\cfOh man, meeting her was the best christmas gift ever, and also her precious lil' cinnamon roll of a wife, too. It was hella fun to hang out with them, especially because of how excited Zana-sama was about everything around the city. She was like a little kid in a candy shop at times. ABSOLUTELY ADORABLE.\c- -\cfNowadays with the White Scar bullshit, we haven't been in touch much. Misa managed to visit a couple times, but it really wasn't the same, and I could tell that she wasn't enjoying it either. Yeah, fuck all that, I hope it ends someday and I can get the two in here again.\c- +\cfNowadays with the White Scar bullshit, we haven't been in touch much. Misa managed to visit a couple times, but it really wasn't the same, and I could tell that she wasn't enjoying it either. Yeah, I hope it ends someday and I can get the two in here again.\c- TXT \cxFull Name:\c- \cf Zanaveth Nekuraku II\c- @@ -66,13 +66,13 @@ In August 20th of 2042, Zanaveth II and Misa had a child, **Zanaveth Nekuraku II In the wake of the **Nukuri Seventh World War** of 2068, Zanaveth II fled with her wife and child to **Sankaideriha** with the help of Nukuri witch **Saniuke Okusainaya**, old friend of her family. Two years later, after showing notable difficulties settling in, the family decided to leave Zanaveth III in Saya's care. This would last until 2077, when the **White Scar** incident prompted the expulsion of all Nukuri on Earth. Zanaveth III was then sent to live with her grandparents for the time being, until the end of the war in 2104, when her parents returned to Nahkami once again. -Since the formation of the **Nukuri Unified Government** in 2108, Zanaveth II holds the position of "Minister of Interspecies Relations", thanks in part to her outstanding achievements during her time as a student of the University of Nos-Kora. +Since the formation of the **Nahkami Unified Government** in 2108, Zanaveth II holds the position of "Minister of Interspecies Relations", thanks in part to her outstanding achievements during her time as a student of the University of Nos-Kora. As of 2171, Zanaveth II has also been involved in negotiations with the **Anarukon** people, as part of a "multiversal expansion" of the **Bleaknet**. In addition, through a deal with **Akari Labs**, Earth will also receive its own node to the Bleaknet Nexus. This last action is part of a greater plan to restore relations between Humans and Nukuri, putting an end to the White Scar Treaty. \cxSaya's Notes:\c- \cfAhhhhhh, damn. She really is the sweetest and cutest gal I've ever met, let me tell ya. And it's one hell of an achievement for me to get this alien cutie to become a complete weeb too, heh...\c- -\cfOh man, meeting her was the best christmas gift ever. And also her smol cinnamon roll of a wife, too, huhuhu... Lucky devil, getting herself a girl like that. It was hella fun to hang out with them, especially because of how excited Zana-sama was about everything around the city. She was like a little kid in a candy shop at times. ABSOLUTELY FUCKING ADORABLE.\c- +\cfOh man, meeting her was the best christmas gift ever, and also her precious lil' cinnamon roll of a wife, too. It was hella fun to hang out with them, especially because of how excited Zana-sama was about everything around the city. She was like a little kid in a candy shop at times. ABSOLUTELY ADORABLE.\c- -\cfNow that the White Scar trash garbage is going to get all torn to shreds, I'm definitely looking forward to seeing her around once again. God, when she popped up after the wedding with Kirin-kun I almost broke down crying. I missed her so goddamn much, like... seriously.\c- +\cfNow that the White Scar trash treaty is going to get all torn to shreds, I'm definitely looking forward to seeing her around once again. God, when she popped up after the wedding with Kirin-kun I almost broke down crying. I missed her so much, like... seriously.\c- diff --git a/lore/default/zanaveth3.txt b/lore/default/zanaveth3.txt index 324e8c807..bfef4ec98 100644 --- a/lore/default/zanaveth3.txt +++ b/lore/default/zanaveth3.txt @@ -21,7 +21,7 @@ TXT **Zanaveth Nekuraku III** is the sole daughter of **Zanaveth Nekuraku II** and **Misa Azadeku Unissix**. She spent most of her early childhood on Earth, where she was born, though her and her family had to move back to **Nahkami** once she turned four, since by law, she had to study at a Nukuri school. It was in school that the young child began to have notable issues. -Zanaveth III was a frequent victim of bullying by her classmates, due to her odd personality and mannerisms, this was further intensified due to the effects of her Yikazoroi (lit. "Stress Burst"), a disorder prevalent among Nukuri children (though only developed by 1 in 200), which caused the constant bullying to eventually result in violent outbursts, which then further intensified the bullying. Due to the inaction of the school staff at the time, her mother sued them, and she had to be moved to a different school across the province. +Zanaveth III was a frequent victim of bullying by her classmates, due to her odd personality and mannerisms. Due to the inaction of the school staff at the time, her mother opted to move her to a different school across the province. In the wake of the **Nukuri Seventh World War**, Zanaveth III and her parents fled temporarily to **Sankaideriha**, aided by a friend of the Nekuraku family. During their stay there, it would be noted that their child had difficulty settling in, citing that being there gave her "mind shock". A formal diagnosis noted that she was reacting negatively to the natural flux of magic within the island, and it was suggested that she stayed with someone else, outside the island. The two eventually would put Zanaveth III in the care of **Saya Miyamoto**, a friend her mother had made during her first visit to Earth. @@ -32,9 +32,9 @@ In 2120, Zanaveth III enrolled in the **University of Nos-Kora**, taking on the During her stay on Earth, Zanaveth III has had quite a noteworthy history on social media and online forums, arising from her strange personal dialect of English and nonsensical ramblings. Saya Miyamoto has come to label her as **Chuunibyou**, an old Japanese term used to denote the kind of traits she shows, such as the noted self-importance and desire to stand out, along with pretending to have special powers / possess arcane knowledge, and other fanciful sentiments. \cxSaya's Notes:\c- -\cfLil' chuuni Zana-chan. Sure, she may look cold and distant and antisocial and stuff, but that really can be blamed on how shit people have been to her. God I wish I could just beat up all of her bullies. I remember how she'd often come to me crying, all angry and frustrated after getting into trouble and I'd just sit her down on my lap and give her headpats and hugs. Ahhhhh... really made me feel like a mommy right there.\c- +\cfLil' chuuni Zana-chan. Sure, she may look cold and distant and antisocial and stuff, but that really can be blamed on how shit people have been to her. God I wish I could just beat up all of her bullies. I remember how she'd often come to me crying, all angry and frustrated after getting into trouble and I'd just sit her down on my lap and give her headpats and hugs. I'm basically like a cool auntie to her, hehe.\c- -\cfI miss that stuff, I really do. Petting that soft fluffy blue hair of hers. Wish I knew what she's up to now, that whole thing of "world domination" totally does sound like her thing wwwww\c- +\cfI miss that stuff, I really do. Petting that soft fluffy blue hair of hers, listening to all of her stories, how she'd show me all the cool drawings of her characters and all that. Wish I knew what she's up to now, that whole thing of "world domination" totally does sound like her thing wwwww\c- \cfWell, if she comes here to Earth I'd welcome my new chuuni overlord with open arms.\c- TXT @@ -67,8 +67,6 @@ During her stay on Earth, Zanaveth III has had quite a noteworthy history on soc During a moment of confusion immediately after the demonic invasion of 2148, Zanaveth III made her appearance on Earth, setting forth a rather nonsensical plan for world domination, which backfired due to internal conflicts with one of her "henchmen". Following this defeat, she managed to evade the authorities for some time, hiding at the **Akari Labs** headquarters, but had to eventually return to Nahkami. \cxSaya's Notes:\c- -\cfAh, my precious little chuuni. It was such a surprise to see her pop up at my place out of nowhere like that, gave me a good scare. But there we were once again, reunited like in the old times. She was covered in bruises and burns and her makeup was all over the place from crying, poor thing. I gave her lots of hugs and pets, all she needed. Even went and gave her a bath like when she was little, hehehe.\c- +\cfAh, my precious little chuuni. It was such a surprise to see her pop up at my place out of nowhere like that, gave me a good scare. But there we were once again, reunited like in the old times. She was covered in bruises and burns and her makeup was all over the place from crying, poor thing. I gave her lots of hugs and pets, all she needed. After a nice warm bath and a delicious meal that I put my heart and soul into, she was all smiles again, hehe.\c- -\cfOh yeah, and also that thing. Yeah, I hope she keeps that a secret from Zana-sama. I may have um... well, I "gave her a hand", if you know what I mean. I thought it'd help her cheer up a bit, as silly as the idea was, but she liked it, huhuhu...\c- - -\cfAnd then just like that, she left again, *sigh*\c- +\cfAnd then, just like that, she left again, *sigh*\c- diff --git a/lore/es/admun.txt b/lore/es/admun.txt new file mode 100644 index 000000000..c3e4ddf20 --- /dev/null +++ b/lore/es/admun.txt @@ -0,0 +1,33 @@ +TXT + \cxNombre Completo:\c- + \cf James Admun Tachmek-Smith\c- + \cxNacionalidad:\c- + \cf Escocesa\c- + \cxFecha de Nacimiento:\c- + \cf 4673 AC\c- + \cxOcupación:\c- + \cf CEO (Instituto Tecnológico Tach-Engine)\c- + + + + +Nacido en el 4673 AC como **Admun Tachmek**, primogénito del difunto **Kimun Tachmek**, **James** es el fundador y CEO del **Instituto Tecnológico Tach-Engine**, y también exiliado heredero al trono de **Terasana**, una posición de liderazgo actualmente tomada por **Seras Tonkebis**, anterior consejero de su padre. + +En el 4607 AC, siendo sentenciado al exilio por **"no cumplir el deber de proteger la corona de Terasana"** fue enviado a la colonia **Sanais** de **Egipto**, donde pasó los años realizando varias tareas de labor forzada bajo condiciones inhumanas, incapaz de morir debido a una maldición de inmortalidad impuesta sobre él por Tonkebis como castigo. Este calvario duró hasta el 783 AC, con la disolución de a colonia a partir de un trato no especificado con el **Imperio Yathai**, tras lo cual se dedicó a vagar la Tierra en busca de un hogar. + +En 808, tras muchos viajes, se asentó finalmente en algún lugar de las islas **Británicas**, trabajando como herrero y adoptando el alias de **James Smith**. Al pasar los años, la gente fue algo cautelosa dada su inmortalidad, pero no ponía pegas a sus servicios. Eso es, hasta 1011, cuando un lamentable trabajo al ajustar la armadura de un rey local resultó en su entrada en prisión. No sería liberado hasta 1097, mucho después de la muerte del rey. Tras esto, se mudó a **Escodia**, donde reside desde entonces. + +No se sabe mucho de su vida hasta la fundación del instituto, pero había amasado una gran fortuna con anterioridad a través de varios empleos, efectivamente acumulando el equivalente al sueldo de varias vidas humanas en el proceso. Tal y como relata el propio hombre, fueron esos los fondos que usaría tanto para la creación del instituto, como para las muchas iniciativas filantrópicas que encabeza regularmente hasta el día de hoy. + +Tras el **Evento Luna** de 2021, impulsó la colaboración con el gigante tecnológico **Nukuri** de **Nekuratek**, una de muchos tratos empresariales importantes que permitirían la escalada en popularidad de esta organización sorprendentemente sin ánimo de lucro y eventualmente contribuiría a convertir Escocia en una superpotencia mundial. + +Durante las primeras relaciones comerciales con la gente de **Xekke** en 2048, tuvo un contacto estrecho con el líder de la compañía **Kmonn Shuna**, **Eushura Kmonn Jr.**, con lo cual se propagaron rumores sobre la clase de relación que ambos mantenían. Aun así, esto resultó en más avances para no solo su organización, si no toda la humanidad. + +Tras el incidente de la **Cicatriz Blanca** de 2077, instó al gobierno Escocés de que no firmara el tratado para cortar lazos con los Nukuri, ya que esto efectivamente traería la ruína económica a toda la nación. Muchos otros siguieron también su ejemplo, notablemente **Japón**, teniendo lazos más estrechos con los Nukuri, junto con la **Unión de Repúblicas Africanas**, cuya existencia vino como resultado de su alianza con los benefactores alienígenas. + +\cxNotas de Saya:\c- +\cfEl viejales tiene toda una historia detrás, he de admitir, aunque la única fuente de mucho de esto sea él mismo. Ya lo dije en el artículo del instituto, y lo digo también aquí: Me creo toda su historia.\c- + +\cfCoño, es que hasta la parte que me contó de que su tío materno es el mismísimo dios Anubis.\c- + +\cfNo, en serio. Hasta vi fotos, cabeza de chacal y todo (además es un disfraz).\c- diff --git a/lore/es/akarilabs.txt b/lore/es/akarilabs.txt index 158b777ff..a6178b513 100644 --- a/lore/es/akarilabs.txt +++ b/lore/es/akarilabs.txt @@ -14,7 +14,7 @@ TXT La compañía fue fundada en 2010 por **Saya Miyamoto** y **Taro Miyamoto**, comenzando sus días como un pequeño taller en su garaje. Con el tiempo, el incremento en popularidad de sus ingeniosos inventos trajo consigo una mayor expansión, y más gente atraída a trabajar con ellos. Aunque sus oficinas centrales son lo suficientemente grandes para alojar a todos sus empleados, algunos trabajan remotamente, debido a varias circunstancias. -Entre sus muchas creaciones, las **Maidbots**, inicialmente introducidas en 2017, y comercializadas cinco años más tarde, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Aunque la mayoría son adoptadas para ayudar en casa y poco más, han habido muchos casos de clientes que se han enamorado o incluso casado con ellas. La postura oficial de los laboratorios en cuanto a estos casos es que "no hay nada malo" en algo así, pero que uno no debe olvidar que aunque las Maidbots están "totalmente equipadas para actos íntimos", no pueden tener hijos. +Entre sus muchas creaciones, las **Maidbots**, inicialmente introducidas en 2017, y comercializadas cinco años más tarde, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Ha habido incluso casos de personas que han salido o incluso se han casado con ellas, y la posición oficial de los laboratorios al respecto es que "no hay nada de malo" en ello, ya que "ni siquiera las diferencias entre la carne y el metal pueden entreponerse al amor". Durante los **Juegos Olímpicos de Tokyo 2020**, la Maidbot personal de Saya fue elegida para cantar el himno nacional. Su voz cautivó a millones, y lanzó su carrera como idol. @@ -39,7 +39,7 @@ TXT La compañía fue fundada en 2010 por **Saya Miyamoto** y **Taro Miyamoto**, comenzando sus días como un pequeño taller en su garaje. Con el tiempo, el incremento en popularidad de sus ingeniosos inventos trajo consigo una mayor expansión, y más gente atraída a trabajar con ellos. Aunque sus oficinas centrales son lo suficientemente grandes para alojar a todos sus empleados, algunos trabajan remotamente, debido a varias circunstancias. -Entre sus muchas creaciones, las **Maidbots**, inicialmente introducidas en 2017, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Aunque la mayoría son adoptadas para ayudar en casa y poco más, han habido muchos casos de clientes que se han enamorado o incluso casado con ellas. La postura oficial de los laboratorios en cuanto a estos casos es que "no hay nada malo" en algo así, pero que uno no debe olvidar que aunque las Maidbots están "totalmente equipadas para actos íntimos", no pueden tener hijos. +Entre sus muchas creaciones, las **Maidbots**, inicialmente introducidas en 2017, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Ha habido incluso casos de personas que han salido o incluso se han casado con ellas, y la posición oficial de los laboratorios al respecto es que "no hay nada de malo" en ello, ya que "ni siquiera las diferencias entre la carne y el metal pueden entreponerse al amor". Durante los **Juegos Olímpicos de Tokyo 2020**, la Maidbot personal de Saya fue elegida para cantar el himno nacional. Su voz cautivó a millones, y lanzó su carrera como idol. diff --git a/lore/es/akariproject.txt b/lore/es/akariproject.txt index b58337d03..2441b0e0a 100644 --- a/lore/es/akariproject.txt +++ b/lore/es/akariproject.txt @@ -34,7 +34,7 @@ TXT **El Proyecto Akari** es la primera entrada a la escritura de novelas de ciencia ficción de **Saya Miyamoto**, allá por el 2021, cuando la humanidad tuvo su primer contacto alienígena a través del **Evento Luna**. Fue anunciado como una posible visión del futuro que la alianza con los **Nukuri** podría proveer, aunque hoy en día es visto más como una visión desafortunadamente "demasiado optimista" de dicho futuro. Sin embargo, su premisa principal aun puede hacerse realidad, al prometer la propia Saya liderar un Proyecto Akari real algún día, para que la humanidad cree sus propios portales hacia los rincones más lejanos del universo, y más allá. \cxNotas de Saya\c- -\cf... Y entonces todo se hizo realidad, más o menos. De puta madre que haya conseguido hacer el Proyecto Akari de verdad. Je, la UAC se puso TAAAAAAAN salty por esto, fue absolutamente delicioso. Todo el puto multiverso está abierto para nosotros ahora, y todo es seguro y libre de cualquier intervención demoníaca (a menos que lo usemos para ir al Infierno, claro).\c- +\cf... Y entonces todo se hizo realidad, más o menos. De puta madre que haya conseguido hacer el Proyecto Akari de verdad. Je, los de la UAC se quedaron TAAAAAAAN escocidos por eso, fue absolutamente delicioso. Todo el puto multiverso está abierto para nosotros ahora, y todo es seguro y libre de cualquier intervención demoníaca (a menos que lo usemos para ir al Infierno, claro).\c- \cfOh esto es realmente la buena mierda. Veo ahora la novela y me pregunto si esa subtrama romántica se hará realidad también. Ya sabes, cuando el Doctor Kirishima conoce a la Princesa Ikana, y se enamoran y... *suspiro* Tú imagina, una preciosidad de otro mundo juntándose con nosotras...\c- TXT @@ -52,7 +52,7 @@ TXT **El Proyecto Akari** es la primera entrada a la escritura de novelas de ciencia ficción de **Saya Miyamoto**, allá por el 2021, cuando la humanidad tuvo su primer contacto alienígena a través del **Evento Luna**. Fue anunciado como una posible visión del futuro que la alianza con los **Nukuri** podría proveer, aunque hoy en día es visto más como una visión desafortunadamente "demasiado optimista" de dicho futuro. Sin embargo, su premisa principal aun puede hacerse realidad, al prometer la propia Saya liderar un Proyecto Akari real algún día, para que la humanidad cree sus propios portales hacia los rincones más lejanos del universo, y más allá. \cxNotas de Saya\c- -\cf... Y entonces todo se hizo realidad, más o menos. De puta madre que haya conseguido hacer el Proyecto Akari de verdad. Je, la UAC se puso TAAAAAAAN salty por esto, fue absolutamente delicioso. Todo el puto multiverso está abierto para nosotros ahora, y todo es seguro y libre de cualquier intervención demoníaca (a menos que lo usemos para ir al Infierno, claro).\c- +\cf... Y entonces todo se hizo realidad, más o menos. De puta madre que haya conseguido hacer el Proyecto Akari de verdad. Je, los de la UAC se quedaron TAAAAAAAN escocidos por eso, fue absolutamente delicioso. Todo el puto multiverso está abierto para nosotros ahora, y todo es seguro y libre de cualquier intervención demoníaca (a menos que lo usemos para ir al Infierno, claro).\c- \cfOh y también, ¿recuerdas la subtrama romántica? Kirishima e Ikana, sí... toooodo igualito a Kirin-kun y yo ahí, solo que con los géneros cambiados. No pasó exactamente igual, pero todo de putísima madre.\c- diff --git a/lore/es/alakir.txt b/lore/es/alakir.txt new file mode 100644 index 000000000..2b21d2883 --- /dev/null +++ b/lore/es/alakir.txt @@ -0,0 +1,33 @@ +TXT + \cxNombre Completo:\c- + \cf Alakir de Kanaiarkar\c- + \cxTítulo:\c- + \cf Representante de los Ésper en Arkai\c- + \cxNacionalidad:\c- + \cf Mortelucense\c- + \cxFecha de Nacimiento:\c- + \cf 2031-12-31\c- + \cxOcupación:\c- + \cf Cónsul (República Morteluz)\c- + + +Alakir es el último superviviente de los **Éspers de Marfil**, los cuales una vez habitaban la próspera ciudad de **Kanaiarkar** en la costa oeste de la **República Morteluz**. Era el actual alcalde de la ciudad durante las **Primeras Cruzadas Ésper** del **Imperio Sacrosanto de Levlen** (2094), y uno de los pocos que sobrevivieron al evento. + +Tras esta gran masacre, buscó ayuda de la capital. Fue entonces que aprendería realmente lo retorcida y corrupta que era la nación que llamaba su hogar. Ciertamente, quienes se encontraban en el poder recibieron el aviso previo de que la invasión tendría lugar, pero eligieron no actuar. Tal como le dijeron, las consecuencias de contraatacar al Imperio Sacrosanto se pensaron mucho peores que simplemente dejarlo pasar. Las vidas de cientos de miles de **Éspers** fueron consideradas un sacrificio necesario para mantenerse en buenos términos con sus devotos vecinos sureños. + +Sin embargo, y a pesar de todo, se le ofreció ayuda. Protección personal, junto con la promesa de reconstrucción, pero por un precio, el de su propio cuerpo. Al no tener otra opción de ayudar a los otros supervivientes, aceptó. Kanaiarkar y sus asentamientos vecinos serían reconstruidos, y los supervivientes recibirían comida y refugio. En público, la "generosidad" de la República sería elogiada por doquier, mientras que en privado, un pago sería "recolectado" regularmente por varios políticos de alto cargo, los cuales llenarían luego sus propios bolsillos en el mercado negro vendiendo la sangre única del último Ésper de Marfil existente. + +Durante su estancia en la capital, tuvo la ocasión de conocer a un joven que se encontraba de visita por razones diplomáticas: **Kirin Xanai**, el líder del **Imperio Sykhai** al norte. Alakir pudo notar fácilmente que este joven tenía un aire completamente diferente al de otras figuras políticas a las que conocía. Sin embargo, su tiempo juntos no duraría mucho, ya que pronto tuvo que regresar a su nuevamente reconstruido pueblo natal. + +Mientras rehacía su vida, intentando dejar atrás el pasado, recibió la visita de una mujer, **Rena**, quien había escuchado su historia y sentía una gran admiración por el. Los dos se casarían más tarde, aunque su unión no duraría mucho. Meses después, sería reclutada en las filas de los **Inquisidores de Levlen** por medio de la influencia de su familia, y se vería forzada a abandonarlo. + +Las cosas no se detuvieron aquí, ya que tuvo lugar un segundo ataque a la ciudad. Sin embargo, los invasores fueron rechazados, no por los ejércitos de la República, si no por los guerreros del Imperio Sykhai, con el propio Kirin a la cabeza. Al parecer, Kirin había investigado la situación durante su estancia en la capital, y decidió vigilar cuidadosamente las comunidades Ésper en caso de que ocurriera algo. A pesar de haber sido advertido de que esta acción solo incrementaría la hostilidad del Imperio Sacrosanto hacia ellos, luchó contra los invasores. Consciente de la negligencia de la República, el joven emperador organizó la completa evacuación de todos los supervivientes, ofreciéndoles un hogar temporal en Akkou, y también que Alakir sirviera ahí como cónsul. + +Tras la boda de Kirin con **Saya Miyamoto** en 2171, ella pudo notar el hecho de que ambos claramente sentían algo el uno por el otro, y les empujó a confesar. Desde entonces, Kirin y Alakir están saliendo, con planes para un casamiento futuro una vez se resuelvan algunos acuerdos. + +\cxNotas de Saya:\c- +\cfEstoy segura de que da todo el asco leer esto igual que nos lo dio a Taro-nii y a mi al escribirlo. Joder, lo que le hicieron los cerdos esos... Las cicatrices que le dejaron...\c- + +\cfOh ya, y tengo oído a Kirin-kun decir que están hablando con la familia real en cuanto a esos "arreglos" (sí, la así llamada "República" resulta ser una monarquía), y no solo resulta que no sabían nada de lo ocurrido, si no que están absolutamente horrorizados. Algo me dice que van a rodar las cabezas de todos esos bastardos. Con suerte, podremos celebrarlo luego meándonos en sus tumbas.\c- + +\cfTemas aparte, bendito Kirin-kun por ser su puñetero salvador, en serio. La vida de Alakir-kun estuvo tan hecha mierda... Y es todo gracias a él que sigue vivo hasta ahora. Dios, es que si ya tenia razones suficientes para amarlo, esta ya es la guinda final.\c- diff --git a/lore/es/archdemons.txt b/lore/es/archdemons.txt new file mode 100644 index 000000000..2dcc5f094 --- /dev/null +++ b/lore/es/archdemons.txt @@ -0,0 +1,128 @@ +TAG +Archidemonios +TXT +\cxNombre:\c- +\cf Archidemonios\c- +\cxClasificación:\c- +\cf Élite Demoníaca\c- +\cxLocalización:\c- +\cf Infierno\c- + +Cuando un miembro de la **Especie Demoníaca** alcanza un alto estatus, sea por su longevidad y/o su poder, obtiene la designación de **Archidemonio**. Formando parte de algo menos del 0.01% de la población, los miembros de esta clase de "élite" tienden a mantener posiciones importantes dentro del reino. Los más famosos entre ellos son los generales Archidemonios, los cuales lideran las fuerzas armadas del **Infierno**. Otras figuras de renombre incluyen a los muchos archiseñores, anteriores líderes de reinos exteriores los cuales habían seguido al **Padre Nostros**. + +Dadas las circunstancias actuales, los generales Archidemonios han atraído mucha atención, habiendo usurpado el trono del Infierno con el gran mariscal **Erebus Arthamuz**, hijo del difunto **Archiseñor Thamuz**, gobernando ahora el reino con mano dura. Bajo este nuevo reinado, y con la anterior familia real en el exilio, el Infierno ha entrado en una nueva era de guerra y conquista, reforzada por varios avances en la producción masiva de unidades militares a través de ingeniería genética y crianza a escala industrial. + +Mucho se puede decir de cada general individual, aunque en afán de mantener este artículo conciso, un sumario sigue: + +\cfErebus Arthamuz:\c- Mariscal de las legiones del Infierno. Gran conquistador del monte que lleva su nombre y anterior personaje famoso convertido en líder militar. Hay muchos que critican sus habilidades, pero silencia velozmente cualquier oposición. Junto con su difunto padre, ambos construyeron la **Espira de Dis** en el corazón de la capital, de la cual adicionalmente toma el cargo de guardián. + +\cfThaar Adarion:\c- Auto-identificado como "el mejor guerrero del Infierno", aunque no sin mérito. Sirve como guardaespaldas del general Erebus, siempre a su lado. Existen rumores de que tiene cierto interés romántico por él dada la estrecha relación entre ambos. + +\cfTaeron Yraisamal:\c- Propagandista y reclutador oficial del ejército del Infierno. Favorito de los generales dado que, a pesar de su desinterés por la adoración del **Tirano**, muestra un profundo desdén por la familia real y sus raíces. + +\cfKaume Irishtanar:\c- Barón de la **Casa Irishtanar** y líder de las fuerzas de espionaje, él mismo dedicado a mantener vigilada a la familia real en el exilio. Conocido por liderar el asesinato de la rival **Casa Valathor**, de la cual solo un miembro ha sobrevivido. + +\cfVera Akerastora:\c- Supervisor de los campos de crianza. A pesar de varios bien conocidos escándalos de canibalismo, ha mantenido su posición, y ofrece sus servicios como criador de unidades militares a cambio de "tomar una parte" de la producción. + +\cfGyeran Rashaz:\c- Esposa del general Erebus, ella misma teniendo también la posición de general a pesar de su falta de habilidad para el trabajo. Supervisa todos los movimientos de entrada y salida de la capital, como guardiana de las llaves de la ciudad. + +\cfUrthura Vexamal:\c- Guardia principal de las ciudades exteriores. Como seguidora de la deidad ancestral conocida como la **Mano del Odio**, se dice que su crueldad no tiene par, y aquellos asentados cerca de la capital viven con temor a sufrir su ira. + +\cfDestora Arathon:\c- Una así llamada "bailarina sangrienta" quien sirve como entrenadora principal de las fuerzas militares, y es además alabada como un ídolo de muchos nobles. Es responsable del despliegue de unidades tanto dentro como fuera del reino. + +\cfBerias Ysharan:\c- Uno de los principales negreros \cf[n.t.: no había otra palabra disponible]\c- del Infierno, responsable de mantener sometida a toda la población. Considerado un traidor de su propia gente al estar involucrado en el reclutamiento forzado de civiles para varios propósitos. + +\cfAkedas Aximal:\c- Consejero personal del general Erebus y antiguo Archiseñor. Un hechicero retorcido solo superado en poder por la mismísima **Matriarca Lilith**, y uno de los primeros demonios nacidos en la **Tierra**. Aximal ha sido testigo no solo del nacimiento de su propia especie, si no también del nacimiento del propio Infierno en sí, y muchos dicen que tales experiencias lo han dejado profundamente marcado. + +Al tiempo de escribir esto, todos los generales están activamente envueltos en la invasión de la Tierra (ver artículo de **Invasión Demoníaca** para más detalles). + +\cxNotas de Saya:\c- +\cfEl gordo cabrón y sus amigos. Tenemos los nombres de todos, así que en cuanto termines esta primera misión, ya puedes adivinar quienes serán los próximos objetivos. Tía, es que si no tuviésemos que resumir, nos habríamos puesto a detallar sobre TODA la mierda que han montado. Estos capullos se merecen una buena patada en el culo, en serio. Especialmente el tal Kaume ese, es el capullo que mató a la familia de Cytho-sama y prendió fuego a todo su pueblo natal. Vamos, es que cuando nos estábamos documentando para esto tenía MUCHO que decir sobre él. Puede que haya aprendido algunos tacos en Kuristema en el proceso, lo cual es útil, así ya sé que puedo llamarles a la cara a los capullos estos.\c- + +\cfEn fin, algunos archidemonios son buenos, a diferencia de la peña esta. A ver, tampoco los he conocido directamente, pero los pocos demonios que conozco hablan bien de ellos. Cytho-sama especialmente habla de la señora que encabeza la empresa en la que estaba, aunque está algo mosqueado de que no quiera luchar, porque aparentemente, si todos sus antiguos compañeros aunaran fuerzas, podrían superar completamente en poder a todo el ejército (su puta madre).\c- +TXT +\cxNombre:\c- +\cf Archidemonios\c- +\cxClasificación:\c- +\cf Élite Demoníaca\c- +\cxLocalización:\c- +\cf Infierno\c- + +Cuando un miembro de la **Especie Demoníaca** alcanza un alto estatus, sea por su longevidad y/o su poder, obtiene la designación de **Archidemonio**. Formando parte de algo menos del 0.01% de la población, los miembros de esta clase de "élite" tienden a mantener posiciones importantes dentro del reino. Los más famosos entre ellos son los generales Archidemonios, los cuales lideran las fuerzas armadas del **Infierno**. Otras figuras de renombre incluyen a los muchos archiseñores, anteriores líderes de reinos exteriores los cuales habían seguido al **Padre Nostros**. + +Dadas las circunstancias actuales, los generales Archidemonios han atraído mucha atención, habiendo usurpado el trono del Infierno con el gran mariscal **Erebus Arthamuz**, hijo del difunto **Archiseñor Thamuz**, gobernando ahora el reino con mano dura. Bajo este nuevo reinado, y con la anterior familia real en el exilio, el Infierno ha entrado en una nueva era de guerra y conquista, reforzada por varios avances en la producción masiva de unidades militares a través de ingeniería genética y crianza a escala industrial. + +Mucho se puede decir de cada general individual, aunque en afán de mantener este artículo conciso, un sumario sigue: + +\cfErebus Arthamuz:\c- Mariscal de las legiones del Infierno. Gran conquistador del monte que lleva su nombre y anterior personaje famoso convertido en líder militar. Hay muchos que critican sus habilidades, pero silencia velozmente cualquier oposición. Junto con su difunto padre, ambos construyeron la **Espira de Dis** en el corazón de la capital, de la cual adicionalmente toma el cargo de guardián. + +\cfThaar Adarion:\c- Auto-identificado como "el mejor guerrero del Infierno", aunque no sin mérito. Sirve como guardaespaldas del general Erebus, siempre a su lado. Existen rumores de que tiene cierto interés romántico por él dada la estrecha relación entre ambos. + +\cfTaeron Yraisamal:\c- Propagandista y reclutador oficial del ejército del Infierno. Favorito de los generales dado que, a pesar de su desinterés por la adoración del **Tirano**, muestra un profundo desdén por la familia real y sus raíces. + +\cfKaume Irishtanar:\c- Barón de la **Casa Irishtanar** y líder de las fuerzas de espionaje, él mismo dedicado a mantener vigilada a la familia real en el exilio. Conocido por liderar el asesinato de la rival **Casa Valathor**, de la cual solo un miembro ha sobrevivido. + +\cfVera Akerastora:\c- Supervisor de los campos de crianza. A pesar de varios bien conocidos escándalos de canibalismo, ha mantenido su posición, y ofrece sus servicios como criador de unidades militares a cambio de "tomar una parte" de la producción. + +\cfGyeran Rashaz:\c- Esposa del general Erebus, ella misma teniendo también la posición de general a pesar de su falta de habilidad para el trabajo. Supervisa todos los movimientos de entrada y salida de la capital, como guardiana de las llaves de la ciudad. + +\cfUrthura Vexamal:\c- Guardia principal de las ciudades exteriores. Como seguidora de la deidad ancestral conocida como la **Mano del Odio**, se dice que su crueldad no tiene par, y aquellos asentados cerca de la capital viven con temor a sufrir su ira. + +\cfDestora Arathon:\c- Una así llamada "bailarina sangrienta" quien sirve como entrenadora principal de las fuerzas militares, y es además alabada como un ídolo de muchos nobles. Es responsable del despliegue de unidades tanto dentro como fuera del reino. + +\cfBerias Ysharan:\c- Uno de los principales negreros \cf[n.t.: no había otra palabra disponible]\c- del Infierno, responsable de mantener sometida a toda la población. Considerado un traidor de su propia gente al estar involucrado en el reclutamiento forzado de civiles para varios propósitos. + +\cfAkedas Aximal:\c- Consejero personal del general Erebus y antiguo Archiseñor. Un hechicero retorcido solo superado en poder por la mismísima **Matriarca Lilith**, y uno de los primeros demonios nacidos en la **Tierra**. Aximal ha sido testigo no solo del nacimiento de su propia especie, si no también del nacimiento del propio Infierno en sí, y muchos dicen que tales experiencias lo han dejado profundamente marcado. + +Tras la desastrosa primera campaña en la Tierra (véase artículo **Invasión Demoníaca**), junto con otras escaramuzas menores, los generales han estado barajando formas de mantener sus ejércitos bajo control a pesar de la pérdida inicial de su comandante. + +\cxNotas de Saya:\c- +\cfEl gordo cabrón y sus amigos. Tenemos los nombres de todos, así que en cuanto termines esta primera misión, ya puedes adivinar quienes serán los próximos objetivos. Tía, es que si no tuviésemos que resumir, nos habríamos puesto a detallar sobre TODA la mierda que han montado. Estos capullos se merecen una buena patada en el culo, en serio. Especialmente el tal Kaume ese, es el capullo que mató a la familia de Cytho-sama y prendió fuego a todo su pueblo natal. Vamos, es que cuando nos estábamos documentando para esto tenía MUCHO que decir sobre él. Puede que haya aprendido algunos tacos en Kuristema en el proceso, lo cual es útil, así ya sé que puedo llamarles a la cara a los capullos estos.\c- + +\cfEn fin, algunos archidemonios son buenos, a diferencia de la peña esta. A ver, tampoco los he conocido directamente, pero los pocos demonios que conozco hablan bien de ellos. Cytho-sama especialmente habla de la señora que encabeza la empresa en la que estaba, aunque está algo mosqueado de que no quiera luchar, porque aparentemente, si todos sus antiguos compañeros aunaran fuerzas, podrían superar completamente en poder a todo el ejército (su puta madre).\c- + +\cfActualización: Están bien jodidos todos. Puede que sigan intentando que parezca que no lo están, pero es que van dando putos palos de ciego. A lo mejor se creen que pueden formar alguna alianza a las prisas con algunos bastardos alienígenas, pero eso solo muestra lo desesperados que están. Apuesto al 100% que les van a dar una puñalada trapera.\c- +TXT +\cxNombre:\c- +\cf Archidemonios\c- +\cxClasificación:\c- +\cf Élite Demoníaca\c- +\cxLocalización:\c- +\cf Infierno\c- + +Cuando un miembro de la **Especie Demoníaca** alcanza un alto estatus, sea por su longevidad y/o su poder, obtiene la designación de **Archidemonio**. Formando parte de algo menos del 0.01% de la población, los miembros de esta clase de "élite" tienden a mantener posiciones importantes dentro del reino. Los más famosos entre ellos fueron los generales Archidemonios, los cuales una vez lideraron las fuerzas armadas del **Infierno**. Otras figuras de renombre incluyen a los muchos archiseñores, anteriores líderes de reinos exteriores los cuales habían seguido al **Padre Nostros**. + +Los generales Archidemonios atrajeron mucha atención, habiendo usurpado el trono del Infierno con el gran mariscal **Erebus Arthamuz**, hijo del difunto **Archiseñor Thamuz**, gobernando entonces el reino con mano dura. Bajo este nuevo reinado, y con la familia real entonces exiliada, el Infierno entró en una era de guerra y conquista, reforzada por varios avances en la producción masiva de unidades militares a través de ingeniería genética y crianza a escala industrial. Sin embargo, y a pesar de todos sus esfuerzos, su tiempo al mando del reino fue cortado abruptamente tras su intento de conquistar la **Tierra**, y la resistencia que encontraron. + +Mucho se puede decir de cada general individual, aunque en afán de mantener este artículo conciso, un sumario sigue: + +\cfErebus Arthamuz:\c- Anterior mariscal de las legiones del Infierno. Gran conquistador del monte que lleva su nombre y anterior personaje famoso convertido en líder militar. Hubo muchos que criticaron sus habilidades, pero silenciaba velozmente cualquier oposición. Junto con su difunto padre, ambos construyeron la **Espira de Dis** en el corazón de la capital, de la cual adicionalmente tomaba el cargo de guardián. Bajo el liderazgo restaurado, será sucedido por **Astaroth**, nieta del **Rey Akusei**. + +\cfThaar Adarion:\c- Una vez auto-identificado como "el mejor guerrero del Infierno", aunque no sin mérito. Sirvió como guardaespaldas del general Erebus, siempre a su lado. Hubo rumores de que tenía cierto interés romántico por él dada la estrecha relación entre ambos. Su lealtad, sin embargo, falló al verse superado por un oponente más fuerte. + +\cfTaeron Yraisamal:\c- Anterior propagandista y reclutador oficial del ejército del Infierno. Favorito de los generales dado que, a pesar de su desinterés por la adoración del **Tirano**, mostraba un profundo desdén por la familia real y sus raíces. + +\cfKaume Irishtanar:\c- Barón de la **Casa Irishtanar** y anterior líder de las fuerzas de espionaje, él mismo dedicado a mantener vigilada a la familia real en el exilio. Conocido por liderar el asesinato de la rival **Casa Valathor**, de la cual solo un miembro ha sobrevivido. + +\cfVera Akerastora:\c- Anterior supervisor de los ahora desmontados campos de crianza. A pesar de varios bien conocidos escándalos de canibalismo, mantuvo su posición, ofreciendo sus servicios como criador de unidades militares a cambio de "tomar una parte" de la producción. + +\cfGyeran Rashaz:\c- Difunta esposa del general Erebus, ella misma teniendo también la posición de general a pesar de su falta de habilidad para el trabajo. Supervisaba todos los movimientos de entrada y salida de la capital, como guardiana de las llaves de la ciudad. + +\cfUrthura Vexamal:\c- Anterior guardia principal de las ciudades exteriores. Como seguidora de la deidad ancestral conocida como la **Mano del Odio**, se dice que su crueldad no tuvo par, y aquellos asentados cerca de la capital vivían con temor a sufrir su ira. + +\cfDestora Arathon:\c- Una así llamada "bailarina sangrienta" quien sirvió como entrenadora principal de las fuerzas militares, y era además alabada como un ídolo de muchos nobles. Fue responsable del despliegue de unidades tanto dentro como fuera del reino. + +\cfBerias Ysharan:\c- Anteriormente uno de los principales negreros \cf[n.t.: no había otra palabra disponible]\c- del Infierno, responsable de haber mantenido sometida a toda la población. Considerado un traidor de su propia gente al haber estado involucrado en el reclutamiento forzado de civiles para varios propósitos. + +\cfAkedas Aximal:\c- Anteriormente el consejero personal del general Erebus y ahora el único general restante todavía manteniendo el poder sobre el reino tras recuperar su posición como Archiseñor. Un hechicero retorcido solo superado en poder por la mismísima **Matriarca Lilith**, y uno de los primeros demonios nacidos en la **Tierra**. Aximal ha sido testigo no solo del nacimiento de su propia especie, si no también del nacimiento del propio Infierno en sí, y muchos dicen que tales experiencias lo han dejado profundamente marcado. + +Tras la desastrosa primera campaña en la Tierra (véase artículo **Invasión Demoníaca**), junto con otras escaramuzas menores, los generales barajaron formas de mantener sus ejércitos bajo control a pesar de la pérdida inicial de su comandante. En 2165, tras muchas otras pérdidas, incluyendo la de una comandante nuevamente reclutada, con todos sus ejércitos desordenados, los generales mantuvieron su última resistencia, siendo luego asesinados uno por uno, con la excepción de Akedas Aximal, quien consiguió huir, y todavía controla el reino desde las sombras. + +\cxNotas de Saya:\c- +\cfEl gordo cabrón y sus amigos. Tenemos los nombres de todos, así que en cuanto termines esta primera misión, ya puedes adivinar quienes serán los próximos objetivos. Tía, es que si no tuviésemos que resumir, nos habríamos puesto a detallar sobre TODA la mierda que han montado. Estos capullos se merecen una buena patada en el culo, en serio. Especialmente el tal Kaume ese, es el capullo que mató a la familia de Cytho-sama y prendió fuego a todo su pueblo natal. Vamos, es que cuando nos estábamos documentando para esto tenía MUCHO que decir sobre él. Puede que haya aprendido algunos tacos en Kuristema en el proceso, lo cual es útil, así ya sé que puedo llamarles a la cara a los capullos estos.\c- + +\cfEn fin, algunos archidemonios son buenos, a diferencia de la peña esta. A ver, tampoco los he conocido directamente, pero los pocos demonios que conozco hablan bien de ellos. Cytho-sama especialmente habla de la señora que encabeza la empresa en la que estaba, aunque está algo mosqueado de que no quiera luchar, porque aparentemente, si todos sus antiguos compañeros aunaran fuerzas, podrían superar completamente en poder a todo el ejército (su puta madre).\c- + +\cfActualización: Están bien jodidos todos. Puede que sigan intentando que parezca que no lo están, pero es que van dando putos palos de ciego. A lo mejor se creen que pueden formar alguna alianza a las prisas con algunos bastardos alienígenas, pero eso solo muestra lo desesperados que están. Apuesto al 100% que les van a dar una puñalada trapera.\c- + +\cfActualización 2: Maaaaaaaaaaaadre de dios se jodieron pero bien, vaya que sí. Y el viejales ese tampoco va a durar mucho. Yo digo que unas cuantas aventuras más por su terreno y la va a palmar de un infarto de lo tanto que lo cabreas. Si no podemos llegar a él directamente, entonces es la mejor solución que tenemos.\c- diff --git a/lore/es/ashley.txt b/lore/es/ashley.txt index 564075b13..ed1329789 100644 --- a/lore/es/ashley.txt +++ b/lore/es/ashley.txt @@ -15,7 +15,7 @@ TXT Nacida en Londres en 1887, hija de **Yrikha Yanikov** y **Maxwell A. Knox**, **Ashley** es la mayor de tres hijos, los otros siendo **Adrian Knox**, veterano de la Primera y Segunda Guerras Mundiales, y **Viola Knox**, una bruja en prácticas (todavía hasta la fecha actual de 2148). Pasó la mayor parte de su infancia en Cornualles, después de que su madre tuviera que darse a la fuga por acusaciones de brujería (las cuales no eran exactamente falsas). -En 1983, se casó con **Fredrik Steiner**, teniendo los dos un único hijo, **Christopher Knox**, en 1989. Sin embargo, tras descubrir que era una bruja se divorció de ella, dejándola sola al cuidado de su hijo. A pesar de las dificultades a las que se enfrentaron, Christopher creció y se convirtió en uno de las mentes más prodigiosas de la ciencia de principios del siglo XXI. +En 1983, se casó con **Fredrik Steiner**, teniendo los dos un único hijo, **Christopher Knox**, en 1989. Sin embargo, tras descubrir que era una bruja se divorció de ella, dejándola sola al cuidado de su hijo. A pesar de las dificultades a las que se enfrentaron, Christopher creció y se convirtió en una de las mentes más prodigiosas de la ciencia de principios del siglo XXI. Ashley nunca destacó mucho hasta principios de los años 2000, cuando, tras varios años de práctica para convertirse en guitarrista, formó su propia banda con un grupo de amigos (algunos de los cuales había conocido durante su estancia en la ciudad mágica de **Sankaideriha** donde estudió brujería). @@ -28,10 +28,10 @@ Meses después de su ruptura, durante un concierto en Japón, Ashley conoció a \cxNotas de Saya:\c- \cfAhhhhh tía... Bendita sea esta lesbiana, amén.\c- \cg♥\c- -\cfEn serio es que, Ashley-san mola muchísimo, me encanta su música, me encanta su... todo. Y joder es que estoy TAAAAAAAAAAAN celosa de Yu-chan, que puede disfrutar de esos suaves pechotes de bruja cuando le da la gana, mientras que yo solo puedo pedir abrazos y a veces me dice que no y... coño. Pero venga joder, es solo un abrazo, yo solo quiero poder sentir la suavidad™, ¿que problema hay con eso?\c- +\cfEn serio es que, Ashley-san mola muchísimo, me encanta su música, me encanta su... todo. Y joder es que Yu-chan es TAAAAAAAAAAAN suertuda, que consigue una novia gótica molona que además es una bruja y una cantante super guay y además hace arte furro que mola mucho y tal...\c- -\cfBueno, cachondismo aparte, las otras gentes de la banda, molan también, sí. Buen colegueo con todas, vamos, hasta con la grandota, Maruku. Bueno, casi no habla, y mete un poco de miedo... pero resulta ser maja, y una chuuni de cuidado. Luego Mykka... jo tía, todo un encanto. La verdad es que aprendí la mayoría de lo que sé de dioses y cosas de ella. Siempre le gusta hablar durante horas y horas de "lore", y me enseña cosas tope molonas que puede hacer con sus poderes (puede hacer aparecer caramelos de la nada, cosa fina).\c- +\cfEn fin, las otras gentes de la banda, molan también, sí. Buen colegueo con todas, vamos, hasta con la grandota, Maruku. Bueno, casi no habla, y mete un poco de miedo... pero resulta ser maja, y una chuuni de cuidado. Luego Mykka... jo tía, todo un encanto. La verdad es que aprendí la mayoría de lo que sé de dioses y cosas de ella. Siempre le gusta hablar durante horas y horas de "lore", y me enseña cosas tope molonas que puede hacer con sus poderes (puede hacer aparecer caramelos de la nada, cosa fina).\c- -\cfY al final, el caso con Py, la pequeñaja rosa... Puede que tal vez en cierto modo no estemos muy en buenos términos por unos comentarios estúpidos que hice que, sinceramente, ojalá no hubiera hecho. Mira, en mi defensa, no lo sabía y sabes que soy muy MUY directa con las mierdas que suelto a veces, no puedo evitarlo. Y sí, a veces puede que casualmente si alguien me pone voy y le pido que "mande nudes" y tal pero... ah, mierda joder.\c- +\cfY al final, el caso con Py, la pequeñaja rosa... Esperaba que fuese toda cuquismo pero resulta que es de armas tomar. Oí que hasta es más fuerte que su novio, lo cual es tremendo teniendo en cuenta que el tío estuvo en dos guerras mundiales. A ver... Vi una cosa que hizo donde lo agarraba y el tío se dejó tumbar y... ... ¿Creo que le gustaba? Madreeee...\c- -\cfSí, estoy en su lista de "indeseables que me han pedido fotopolla".\c- +\cfPues eso, Ashley-san y sus amigas molan mucho.\c- diff --git a/lore/es/ballsbomb.txt b/lore/es/ballsbomb.txt new file mode 100644 index 000000000..47de41969 --- /dev/null +++ b/lore/es/ballsbomb.txt @@ -0,0 +1,18 @@ +TAG +Bomba de Bolas +TXT +\cxDesignación:\c- +\cf Bomba de Bolas\c- +\cxFabricante:\c- +\cf Plutoni Incorporated\c- +\cxClasificación:\c- +\cf Bomba de Clúster\c- + +La **Bomba de Bolas** es un dispositivo especial diseñado para una sola cosa: Dispensar muerte. Ideada por estudiantes de la **Universidad de Nos-Kora**, y empleando tecnología que no puede ser exactamente comprendida por una mente sin entrenar, este artefacto explosivo es esencial para quien quiera hacer que sus enemigos experimenten lo que se siente al ser bombardeados por docenas de bolas de denso metal a alta velocidad. En una entrevista, el líder del proyecto simplemente dijo: "Os van a encantar nuestras bolas." + +**Plutoni Incorporated**, la filial de distribución armamentística de la universidad, no se hace responsable de cualquier mal uso del dispositivo, y no debe ser cuestionada en lo referente a cualquier comportamiento peculiar que la carga explosiva del dispositivo pueda tener. + +\cxNotas de Saya:\c- +\cf"Comportamiento peculiar" es una forma de decirlo. Lo vi durante un fuego de prueba, vi lo que hizo una de esas bolas a un bloque de gel balístico: Lo hizo EXPLOTAR mientras que un... Ruido estridente de dibujo animado sonaba. Hubo hasta un destello de luz y todo. Me han dicho que eso es algo que pasa "por pura casualidad"... Su puta madre...\c- + +\cfEsas cosas hacen críticos random. No estoy de coña, pero que puñetas... No me extraña que el friki nos lo recomendara.\c- diff --git a/lore/es/blackmann.txt b/lore/es/blackmann.txt index 1db200086..a1be6480b 100644 --- a/lore/es/blackmann.txt +++ b/lore/es/blackmann.txt @@ -10,11 +10,11 @@ TXT **Blackmann Arms** fue fundada en 1924 por **Daniel Ischer**, inicialmente bajo el nombre de **Schwartzmann Exotischwaffen**, como un taller de "armas exóticas" en Colonia, Alemania. Cuando la familia emigró a América en 1933, en los comienzos de la **Dictadura Nazi**, la tienda se "americanizó" bajo su nombre actual, y alcanzó la fama rápidamente diseñando toda clase de ingeniosas armas para las fuerzas aliadas, y aceptando toda clase de peticiones de diseños originales, su eslogan era "si puedes imaginarlo, podemos crearlo". -Blackmann se popularizó no solo por la rapidez en diseñar toda clase de curiosas armas que sus clientes pedían, sino también por sus propios inventos originales, como la serie **Silver Bullet** de rifles de francotirador de calibre ultra-alto, o la serie **Puntzer** de armas diseñadas para "penetrar cualquier material, sin importar su resistencia", gracias a su patentado diseño de bala **Spin Motion Wedge (SMW)**. +Blackmann se popularizó no solo por la rapidez en diseñar toda clase de curiosas armas que sus clientes pedían, sino también por sus propios inventos originales, como la serie **Silver Bullet** de fusiles antimaterial de calibre ultra-alto, o la serie **Puntzer** de armas diseñadas para "penetrar cualquier material, sin importar su resistencia", gracias a su patentado diseño de bala **Spin Motion Wedge (SMW)**. A partir de 2148, la compañía está a cargo de **Hermann E. Ischer** tataranieto de su fundador, quien ha hecho su objetivo personal que toda arma creada en sus fábricas capaz de tener más de una bala cargada debe tener la habilidad de dispararlo todo a la vez, o lo más rápido posible. El hombre es también popular en redes sociales dado su estatus por tener el record mundial de "mayores cejas", frecuentemente presumiendo de ellas o hablando en detalle de su mantenimiento. Una gran parte de los fondos de la compañía proviene de **Don BIG SHOT**, quien, segun reportajes del propio Hermann, regularmente encarga toda clase de descabellados diseños de escopetas que ningun hombre en su sano juicio pensaría usar. De estos muchos diseños estrictamente privados, una sola arma fue hecha pública, la **Wallbuster**, una escopeta revólver de 25 cañones, del calibre 6, supuestamente capaz de "abrir una brecha a través de una barrera de puro plomo con medio metro de grosor". \cxNotas de Saya:\c- -\cfSí, sí. Armas que molan mucho y tal. Algunas hasta tuvieron la bendición del mismísimo Gun Jesus (dios como lo echo de menos). Pero, sí... Me di cuenta de una cosa cuando rebuscaba cosas para escribir aquí. Es por el nombre de la empresa y tal. Seguro que es una referencia a algo, sí... algo grande... y negro... ¿lo pillas? Sí, eso es. Por supuesto que es un puto chiste de penes, POR... SUPUESTO... QUE SÍ. ¿¿¿El puto tío en serio quería que toda la gente pensara en su POLLA cada vez que vieran sus enormes armas??? ¡¡¡PUTO ASCO!!!\c- +\cfSí, sí. Armas que molan mucho y tal, pero sí... El tío... Las has visto, todos las hemos visto, las hemos VISTO. Como puñetas las ha podido hacer crecer tanto es algo que no logro comprender... Y nunca me ha dicho por qué, esa es la peor parte. ¿Por que puñetas querrá tener las cejas más grandes del mundo? ¿¿¿Acaso hay un chiste aquí que no estoy entendiendo???\c- diff --git a/lore/es/candygun.txt b/lore/es/candygun.txt index a12ba60b3..a8d8cfb2d 100644 --- a/lore/es/candygun.txt +++ b/lore/es/candygun.txt @@ -12,9 +12,9 @@ Una variante altamente potenciada de la **Pistola de Explodium** estándar. Su c \cfFuego Primario:\c- Disparos individuales de dulzura explosiva. Un impacto directo debería ser letal contra la mayoría de objetivos, pero si de alguna forma no la palman con eso, los consiguientes petardeos puede que lo hagan, o también dispersen el daño a objetivos cercanos. -\cfFuego Secundario:\c- Realiza una "recarga explosiva", al igual que la Pistola de Explodium estándar. Ten en cuenta que a diferencia de su débil homóloga, la carga explosiva es mucho más extrema. Se recomienda tener siempre un cargador de repuesto listo para la recarga, para no acabar con un arma inútil si el que has lanzado no alcanza su objetivo. +\cfFuego Secundario:\c- Realiza una "recarga explosiva", al igual que la Pistola de Explodium estándar. Ten en cuenta que a diferencia de su débil homóloga, la carga explosiva es mucho más extrema. Por razones prácticas, no puedes realizar esta acción a menos que tengas munición disponible para recargar el arma, y necesitas al menos una bala en el cargador para que este pueda explotar. -\cfFuego Combinado:\c- Manteniendo el fuego secundario y primario pulsados (en ese orden) puedes optar por, en lugar de realizar la típica recarga explosiva, dejar el cargador dentro de la pistola, armado y listo, y entonces lanzar el arma entera como una granada, para una destrucción total. Como siempre, asegúrate de tener al menos un repuesto y más munición, o acabarás con las manos vacías. Dada esta naturaleza desechable, se te permite llevar hasta 4 repuestos en tu inventario. Úsalos bien. +\cfFuego Combinado:\c- Manteniendo el fuego secundario y primario pulsados (en ese orden) puedes optar por, en lugar de realizar la típica recarga explosiva, dejar el cargador dentro de la pistola, armado y listo, y entonces lanzar el arma entera como una granada, para una destrucción total. Asegúrate de tener al menos un repuesto y más munición, o acabarás con las manos vacías. Se te permite llevar hasta 4 repuestos en tu inventario. \cxNotas de Saya:\c- \cfNo lo pillo, en serio que no. ¿Como es que mezclando toda esa mierda explosiva con caramelo hace esto? Oh, es igual, me sigue molando mucho cada momento, pero los bonitos fuegos artificiales me dan como nostalgia, no sé por qué...\c- diff --git a/lore/es/cinnamon.txt b/lore/es/cinnamon.txt new file mode 100644 index 000000000..9ea12499e --- /dev/null +++ b/lore/es/cinnamon.txt @@ -0,0 +1,29 @@ +TXT + \cxNombre Completo:\c- + \cf Cinnamon Valentine\c- + \cxNacionalidad:\c- + \cf Odmorian\c- + \cxFecha de Nacimiento:\c- + \cf 2013-04-10\c- + \cxOcupación:\c- + \cf Mercenario (explorador)\c- + \cxTwitter\c- + \cf @cinnamon_valentine\c- + + +Nacido en **Neimishi, Odmorian** como el menor de tres hermanastros. Al igual que sus hermanos, **Cinamon** nunca conoció a su propio padre, dadas las tradiciones de su gente, y fue criado en solitario por su madre, la atleta retirada **Cocoa Valentine**. Al llegar a la madurez, fue reclutado en el ejército de su país en guerra, donde fue condecorado con el título de **"Maestro de la espada"**. A pesar de esto, tiene preferencia por las armas de fuego, siendo también un hábil francotirador. + +Como llegó a conocer a **Marisa Azanth** no está muy claro. La pareja evita hablar de este tema. De todos modos, los dos se casaron en 2117, tras lo cual se mudó a la Tierra con ella, viviendo en la misma casa compartida con **Ibuki Miyamtoo** y otros conocidos. + +Cinnamon parece poseer una habilidad especial, otorgada por su mujer, conocida como una **Maldición de Renacido**. Su ojo izquierdo está aparentemente "poseído" por un fragmento de una deidad demoníaca, conocida como **La Informe**, lo que le permite retornar rápidamente a la vida si cae en combate, incluso si su cuerpo entero es destruido. Aunque su naturaleza es distinta, esto es ciertamente similar a la verdadera inmortalidad de su esposa **Anarukon**. Se puede suponer que hizo esto para que los dos pudieran permanecer juntos para toda la eternidad. + +Él acompaña regularmente a Marisa en sus muchas aventuras, ayudándola en el combate y, a menudo mencionado jocosamente, proporcionándole "apoyo emocional". + +\cxNotas de Saya:\c- +\cfEste tío, pues sí. Otra vez igual no tengo mucho que decir aparte de lo que puse en el artículo de Mari-san. Podría intentar soltar un poco de lore de la gente Odmorian o algo, pero tampoco sé mucho.\c- + +\cfEl tema con esta peña, de un país que también se llama Odmorian, es que solían habitar un continente entero, era su tierra natal y eso, pero entonces un puñado de bichos raros empezaron a invadir desde el sur y tal, y acabaron conquistando la mayor parte de su territorio. Ahora pues están apretujados en tres ciudades al norte, Neimishi, la capital, y luego Werm y Eexy, nombres rarunos, pues sí.\c- + +\cfY qué más... Ah, bueno, aparentemente esta cosa rara que tienen que resulta que no pueden reproducirse entre ellos, así que las mujeres básicamente tienen que buscar hombres de otras especies. Los hermanos de Cinnamon tienen el mismo padre, pero él tiene otro. No tengo detalles de ninguno, parece que prefieren el anonimato.\c- + +\cfOh, y una vez le toqué los abdominales. Le pedí permiso primero, por supuesto. A ver, es que obviamente.\c- diff --git a/lore/es/collar.txt b/lore/es/collar.txt index 307eafd22..7050bfa6b 100644 --- a/lore/es/collar.txt +++ b/lore/es/collar.txt @@ -11,6 +11,6 @@ TXT Éste es un accesorio muy estiloso y elegante, hecho personalmente por **Saya Miyamoto**, con mucho amor y cariño, y adicionalmente infundido con energía mágica protectora por **Ashley Knox**. Mientras lo lleves, tus aventuras serán mucho más fáciles, especialmente si tiendes a reventarte accidentalmente con tus propios explosivos. También puede absorber la mayoría del daño que recibas si estás REALMENTE en peligro, potencialmente permitiendo tu escapada. Un último detalle a notar es que no importa lo que pase, nunca se romperá. \cxNotas de Saya:\c- -\cf¡Por última vez! NO es nada de BDSM, hostia joder ya. Todo cristo se me echa encima, y siempre es lo mismo. Es solo una cosa guay que pensé que te quedaría bien, y a Ibuki también, pero la peña lo sigue malinterpretando, *suspiro*...\c- +\cfEs un complemento bastante guay. Le queda bien a Ibuki, así que pensé que te quedaría bien a ti, también.\c- -\cfAunque, admito que os queda monísimo a las dos. Y coño si la novia gótica tetuda de Yu-chan sabe hacer buena magia. Olvidé ponerlo ahí arriba, pero hay otra cosa con el collar. Ashley-san me enseñó, que cuando el que lo lleva está... a punto de estirar la pata, puedo "reclamarlo" aquí a voluntad. Pues eso, ya sabes, si la palmas por ahí y no puedes hacer un reinicio de emergencia, no te perderemos para siempre, me aseguraré de traerte de vuelta y curar todas tus pupitas, lo prometo.\c- +\cfOh, olvidé ponerlo ahí arriba, pero hay otra cosa con el collar. Ashley-san me enseñó, que cuando el que lo lleva está... a punto de estirar la pata, puedo "reclamarlo" aquí a voluntad. Pues eso, ya sabes, si la palmas por ahí y no puedes hacer un reinicio de emergencia, no te perderemos para siempre, me aseguraré de traerte de vuelta y curar todas tus pupitas, lo prometo.\c- diff --git a/lore/es/cronos.txt b/lore/es/cronos.txt index 9dd9c218e..fb4c58659 100644 --- a/lore/es/cronos.txt +++ b/lore/es/cronos.txt @@ -4,7 +4,7 @@ TXT \cxClasificación:\c- \cf Clúster de pequeños mundos interconectados\c- -**Cronos** es un lejano universo en miniatura compuesto de pequeños mundos autocontenidos, los cuales están conectados entre ellos por puertas cuánticas que los lugareños llaman **Portales Etéreos**. Investigaciones históricas demuestran que todos estos pequeños mundos fueron una vez parte de uno mayor y único, pero un "cataclismo" no especificado ocurrió hace miles de años, partiendo este mundo en fragmentos desperdigados, los cuales solo pudieron ser reunidos a través de estos portales, creaciones de un grupo de poderosos hechiceros conocidos como los **Cuatro Sabios**. De todos ellos, actualmente solo queda el **Sabio de Invierno**, y se dice que cuando él también muera, los Portales Etéreos desparecerán para siempre, dejando a los varios mundos de Cronos aislados para toda la eternidad. +**Cronos** es un lejano universo en miniatura compuesto de pequeños mundos auto-contenidos, los cuales están conectados entre ellos por puertas cuánticas que los lugareños llaman **Portales Etéreos**. Investigaciones históricas demuestran que todos estos pequeños mundos fueron una vez parte de uno mayor y único, pero un "cataclismo" no especificado ocurrió hace miles de años, partiendo este mundo en fragmentos desperdigados, los cuales solo pudieron ser reunidos a través de estos portales, creaciones de un grupo de poderosos hechiceros conocidos como los **Cuatro Sabios**. De todos ellos, actualmente solo queda el **Sabio de Invierno**, y se dice que cuando él también muera, los Portales Etéreos desparecerán para siempre, dejando a los varios mundos de Cronos aislados para toda la eternidad. En estas tierras, hay tres facciones mayores, la **Legión**, el **Arcanum**, y la **Iglesia** (realmente llamada así). Anteriormente peleando constantemente entre ellos, ahora están todos bajo el control de **Korax**, el segundo de los **Jinetes de Serpiente**, y recibieron un gran poder de él. Puede que tengas que combatir con ellos y sus líderes antes de poder enfrentarte al Jinete moviendo los hilos, pero viendo tu experiencia en misiones anteriores, está claro que esto no será un problema. diff --git a/lore/es/cyrus.txt b/lore/es/cyrus.txt index a89819562..3bc7219c2 100644 --- a/lore/es/cyrus.txt +++ b/lore/es/cyrus.txt @@ -12,13 +12,11 @@ La compañía personal de **Reubens C. Karnanaiahmani**, actual alcalde del pueb Cyrus se centra principalmente en traer tecnologías altamente avanzadas de los Qurensiv a la humanidad. Entre las creaciones más notables de la compañía, está el **Hammerspace™**, un método de "almacenamiento extradimensional" que permite que un individuo viaje ligero, necesitando solo llevar un pequeño dispositivo para almacenar y recuperar cualquier objeto que necesite a voluntad. Muchos comentarios se han hecho sobre los nombres "frikis" de los varios productos de la compañía, siendo éste uno de ellos. -En referencia al hombre en sí, Reubens es bien conocido no solo por ser un inventor nato, sino también por ser todo un experto en combate cuerpo a cuerpo, siendo diez veces campeón de **Ko-Ron-Jai** (artes marciales Qurensniv), y también un disparador excelente, capaz de alcanzar la cabeza de una cerilla desde un kilómetro de distancia con un simple revolver (aunque esto último no ha sido confirmado). También es un ávido gamer, y se le ha notado comparar muchas veces la vida real y los videojuegos, a veces hasta niveles preocupantes. - -Cyrus Enterprises, adicionalmente, es el patrocinador principal del proyecto **Demolicionista**, proporcionando el equipamiento requerido para sus misiones, y pagando de su propio bolsillo por cada objetivo eliminado por el Demilicionista, entre otras cosas. +Cyrus Enterprises, adicionalmente, es el patrocinador principal del proyecto **Demolicionista**, proporcionando el equipamiento requerido para sus misiones, y pagando de su propio bolsillo por cada objetivo eliminado por el Demolicionista, entre otras cosas. \cxNotas de Saya:\c- -\cfEs un friki, UN PUTO FRIKI, ¡UN FRIKAZO!\c- +\cfLa empresa del friki ese. Todo bien y muy friki.\c- -\cfHala, ya lo he dicho. Es que sí, vale, lo que hace, mola y tal, pero MADRE DE DIOS es que el tío me saca de quicio con toda su mierda friki de videojuegos. ¿No dejarte ir por ahí con todo equipado, y en vez de eso CISCÁNDOLO TODO POR AHÍ para que lo recojas? Esa es una. Que después de cada misión decida quitarte TODO lo que pillaste, es otra cosa también. Pero, que nos suelte unas pelillas cada vez que revientes a algún maleante, eso puedo aceptarlo, que nos vale para cubrir los costes de todo.\c- +\cfYa, sé que uso esa palabra mucho, pero solo estoy enunciando lo que es obvio. El tío es un frikazo.\c- -\cfA ver, puede que me ponga de los nervios a veces, pero el tío fue mi primer socio ahí en plan negocios serios, y joder, tampoco es tan malo aparte de todo el frikismo que suelta... Y bueno, siendo sincera, yo también soy toda una friki repelente, y puedes citarme en eso.\c- +\cf... Y a ver, yo también lo soy.\c- diff --git a/lore/es/cytho.txt b/lore/es/cytho.txt index 1b3e65864..d68c5f948 100644 --- a/lore/es/cytho.txt +++ b/lore/es/cytho.txt @@ -11,23 +11,23 @@ TXT \cxTwitter:\c- \cf @incuvalathor\c- -Nacido en la ahora caída villa de Iskar en 2008 como uno de los varones más jóvenes de la humilde **Casa Valathor**, **Cytho** entró al negocio familiar al llegar a la edad adulta, rápidamente ascendiendo en rango en la industria del trabajo sexual del **Infierno**, en parte dada su belleza innata, pero también por la rápida acumulación de "clientes satisfechos" a los que daría servicio regularmente, y los muchos alumnos que tomó bajo su tutela. Ya en 2028, había hecho de la Tierra su segundo hogar, donde abriría una cuenta en redes sociales como una forma más moderna de atraer nueva clientela. +Nacido en la ahora caída villa de Iskar en 2008 como uno de los varones más jóvenes de la humilde **Casa Valathor**, **Cytho** entró al negocio familiar al llegar a la edad adulta, rápidamente ascendiendo en rango y acumulando un gran "crédito" gracias a varios clientes satisfechos y los muchos alumnos que tomó bajo su tutela. Ya en 2028, había hecho de la Tierra su segundo hogar, donde abriría una cuenta en redes sociales como una forma más moderna de atraer nueva clientela. -Un día, sin embargo, todo cambió. Un gran número de íncubos reportaría verse "horrorizados" por las peticiones excesivas de una mujer. Curioso, Cytho entonces se decidió a encontrarla, para ver que era exactamente lo que sus colegas encontraban tan irrazonable. Y así fue como conoció a **Elena Yanikov XVI**, una mujer Anarukon "bajo la maldición de una eterna soltería", la cual tan desesperadamente deseaba encontrar marido que había recurrido finalmente a invocar demonios y suplicarles que se casen con ella. Como era de esperar, todos habían rechazado sus plegarias, sin importar cuanto lo intentara, ya que muchos demonios desconfían de su especie. Cytho, sin embargo, fue compasivo con ella, y aceptó, con una condición: Que tendrían primero una cita. +Un día, sin embargo, todo cambió. Un gran número de sus colegas reportaría verse "horrorizados" por las peticiones excesivas de una mujer. Curioso, Cytho entonces se decidió a encontrarla, para ver que era exactamente lo que encontraban tan irrazonable. Y así fue como conoció a **Elena Yanikov XVI**, una mujer Anarukon "bajo la maldición de una eterna soltería", la cual tan desesperadamente deseaba encontrar marido que había recurrido finalmente a invocar demonios y suplicarles que se casen con ella. Como era de esperar, todos habían rechazado sus plegarias, sin importar cuanto lo intentara, ya que muchos demonios desconfían de su especie. Cytho, sin embargo, fue compasivo con ella, y aceptó, con una condición: Que tendrían primero una cita. -Un tiempo después, el archiduque anunció su retiro del trabajo sexual, habiéndose "reformado" como el fiel marido de una mujer Anarukon. Mientras que sus amigos y familiares lo celebraron, otros vieron esto como una afrenta. La Casa Valathor fue criticada severamente por no renegar inmediatamente de él, hasta el punto que una pequeña guerra estalló, en la que la rival **Casa Irishtanar** arrasaría su pueblo natal como "protesta". Ese día, Cytho vería de cerca la crueldad de su propia gente, como único superviviente de aquella masacre. +Un tiempo después, el archiduque anunció su retiro del negocio, habiéndose "reformado" como el fiel marido de una mujer Anarukon. Mientras que sus amigos y familiares lo celebraron, otros vieron esto como una afrenta. La Casa Valathor fue criticada severamente por no renegar inmediatamente de él, hasta el punto que una pequeña guerra estalló, en la que la rival **Casa Irishtanar** arrasaría su pueblo natal como "protesta". Ese día, Cytho vería de cerca la crueldad de su propia gente, como único superviviente de aquella masacre. Desde entonces, vive en Boston con su mujer y sus tres hijas. El propósito de su cuenta en redes sociales ha cambiado al de comunicar las noticias de aquello que transcurre en su mundo natal, contrastadas con los muchos contactos que ha acumulado durante años, como representante de la subyugada población civil. Aunque la gran mayoría de la población de la Tierra no lo tomaría en serio, no hasta que empezara la **Invasión Demoníaca** de 2148. -Denunciando la intervención de la **UAC**, posteó sobre los eventos en **Fobos** y **Deimos** mucho antes de que la UAC los hiciese públicos, y proclamó que una invasión en la Tierra era inminente. Aun así pocos lo tomaron en serio, pero una entre ellos era su amiga **Saya Miyamoto**, de **Akari Labs**. Como inversor en su compañía, ya había garantizado anteriormente que tuviese los recursos y mano de obra necesarios para la tarea que le encomendaría: Construir un robot de combata que lucharía contra los invasores. +Denunciando la intervención de la **UAC**, posteó sobre los eventos en **Fobos** y **Deimos** mucho antes de que la UAC los hiciese públicos, y proclamó que una invasión en la Tierra era inminente. Aun así pocos lo tomaron en serio, pero una entre ellos era su amiga **Saya Miyamoto**, de **Akari Labs**. Como inversor en su compañía, ya había garantizado anteriormente que tuviese los recursos y mano de obra necesarios para la tarea que le encomendaría: Construir un robot de combate que lucharía contra los invasores. Y así, a partir de su colaboración, nació la **Demolicionista**. \cxNotas de Saya:\c- -\cfDesde el primer momento que lo conocí, aquella primera vez que visité a la familia de Ellen-san, ya sabía que era más que un guapo y molón abuelete femboy demonio. Sí, Cytho-sama es la caña, y la sangre que corre por sus venas es mucho más noble que la de cualquier capullo pomposo con título que vaya por ahí.\c- +\cfDesde el primer momento que lo conocí, aquella primera vez que visité a la familia de Ellen-san, ya sabía que era más que un guapo y molón abuelo demonio guapete. Sí, Cytho-sama es la caña, y la sangre que corre por sus venas es mucho más noble que la de cualquier capullo pomposo con título que vaya por ahí.\c- \cfY sí, sorpresa sorpresa... Es tu padre (bueno, algo así). Pero eso ya lo sabías, ¿verdad?\c- -\cfEn serio, si no fuera por él, todo esto nunca habría sido posible. Estamos en deuda con él... Solo espero que no tenga que pagarle con mi propio cuerpo (aunque tampoco me importaría, jijijiji).\c- +\cfEn serio, si no fuera por él, todo esto nunca habría sido posible. Estamos en deuda con él... Solo espero que no tenga que pagarle con mi alma o algo.\c- \cfPS: Su nombre se pronuncia "Kaizo", lo has dicho mal todo el rato. Pero no te preocupes, no eres la primera.\c- diff --git a/lore/es/dana.txt b/lore/es/dana.txt new file mode 100644 index 000000000..714e4d82f --- /dev/null +++ b/lore/es/dana.txt @@ -0,0 +1,29 @@ +TXT + \cxNombre Completo:\c- + \cf Dana Arukan Blackwood\c- + \cxNacionalidad:\c- + \cf Escocesa-Americana\c- + \cxFecha de Nacimiento:\c- + \cf 1985-02-02\c- + \cxOcupación:\c- + \cf Contratista de Defensa Privada\c- + \cxTwitter:\c- + \cf @boyhunter85\c- + + +Nacida en **Michigan**, como hija única de la **General de la Marina Escocesa Lena Blackwood** y el **Ingeniero de Ferrocarril Kanethe Menas Blackwood (de soltero Arukan)**, **Dana** es una persona bastante peculiar. Familiarizada con la dureza de la condición humana desde una edad temprana, intenta ayudar a cualquiera que lo necesite, mientras se opone muy, muy agresivamente a las autoridades que incumplen su deber en todo momento, especialmente policías. + +Uno puede pensar que este sentimiento anti-autoritario podría contradecir su larga carrera como mercenaria a sueldo, a veces bajo el mando de empresas muy específicas, pero tiene la regla personal de nunca servir los intereses de nadie excepto "la buena gente", lo cual ha causado quebraderos de cabeza a muchos empleadores en potencia. Uniéndose a protestas, tomando parte en operaciones de rescate tras desastres naturales, ofreciendo ayuda humanitaria en zonas en guerra... Todo esto otorgándola de una reputación que pocos pueden ignorar. + +Algo más por lo que se le conoce, sin embargo, es por su predilección por cautivar los corazones de hombres jóvenes. Apodada "cougar" (puma) por sus fans, algo que ha aceptado personalmente, no importa circunstancia alguna, alguien tarde o temprano cae en su punto de mira, a veces de forma cómica. + +Tras los eventos de la **Cicatriz Blanca**, ganaría más renombre a base de patrullar la zona de exclusión de DC, donde eventualmente se cruzaría con **Ibuki Miyamoto**, el *Oni Rojo**. Ésto tuvo como resultado una amistad especial, unidas por ciertos intereses afines. Dana, sin embargo, se quedó en el yermo para asistir con los esfuerzos de reconstrucción, finalmente consiguiendo un puesto como mercenaria de la **UAC**. + +Y así es, que fue una de las primeras en responder al inicio de la **Invasión Demoníaca**, uniéndose al rápidamente formado cuerpo de resistencia. + +\cxNotas de Saya:\c- +\cfLa onee-san medio-enana. Tiene buen gusto, tanto en hombres como en armas. También me gusta cómo ha mantenido vivos los videos de reseñas de raciones de combate, incluso dando a conocer los de otras civilizaciones.\c- + +\cfLa considero una de las pocas personas Estadounidenses que me caen bien. Mola, excepto cuando se pilla una cogorza. Aunque al menos eso da lugar a momentos muy graciosos con Taro-nii, jujuju...\c- + +\cfAún le tengo en cuenta lo de que haya trabajado para la dichosa UAC, pero tampoco es que tuviera donde elegir, aparentemente. En fin, al menos ahora su contrato ha "expirado", por así decirlo.\c- diff --git a/lore/es/decademech.txt b/lore/es/decademech.txt index 4f675fc37..fb17764a1 100644 --- a/lore/es/decademech.txt +++ b/lore/es/decademech.txt @@ -6,7 +6,7 @@ TXT \cxLocalización:\c- \cf Sunkaeze, borde exterior de Xathar, Coalición X'Animen\c- -Las ruinas de una gran instalación enterrada por las arenas del planeta desierto de **Sunkaeze**, en los límites de **Xathar**. Es la única estructura encontrada ahí, y ha sido sujeto de mucha exploración y estudio. Aunque la mayoría de creaciones de su antiguo personal se han perdido, muchos han conseguido encontrar artefactos aun funcionales, completamente intactos, de varios tipos: dispositivos de invisibilidad, teletransporte personal, poderosas armas de energía, y muchos otros. Se desconoce la causa exacta de que este lugar cayera en la ruina, aunque segun algunos, puede que esté conectado con la muerte del único individuo referenciado en la mayoría de los planos y documentos recuperados, el semidiós mecánico **Maestre Mekes**. +Las ruinas de una gran instalación enterrada por las arenas del planeta desierto de **Sunkaeze**, en los límites de **Xathar**. Es la única estructura encontrada ahí, y ha sido sujeto de mucha exploración y estudio. Aunque la mayoría de creaciones de su antiguo personal se han perdido, muchos han conseguido encontrar artefactos aun funcionales, completamente intactos, de varios tipos: dispositivos de invisibilidad, teletransporte personal, poderosas armas de energía, y muchos otros. Se desconoce la causa exacta de que este lugar cayera en la ruina, aunque según algunos, puede que esté conectado con la muerte del único individuo nombrado en la mayoría de los planos y documentos recuperados, el semidiós mecánico **Maestre Mekes**. De los muchos productos recuperados con éxito, la **Carabina Biospark** es uno de los más notables. Fue ideada como el "arma emblema de **Decade Mechanics**", y es descrita como "una lanza cortante de electricidad capaz de pensamiento profundo". Nadie ha podido realizar una ingeniería inversa de esta extraña arma. Se estima que hay un total de 30.000 unidades almacenadas en la instalación, y su distribución está actualmente controlada por **Tecnologías Tach-Engine**, siendo su fundador el descubridor principal de este arma, quien ha mostrado un gran interés en estudiarla en más detalle. @@ -22,7 +22,7 @@ TXT \cxLocalización:\c- \cf Sunkaeze, borde exterior de Xathar, Coalición X'Animen\c- -Las ruinas de una gran instalación enterrada por las arenas del planeta desierto de **Sunkaeze**, en los límites de **Xathar**. Es la única estructura encontrada ahí, y ha sido sujeto de mucha exploración y estudio. Aunque la mayoría de creaciones de su antiguo personal se han perdido, muchos han conseguido encontrar artefactos aun funcionales, completamente intactos, de varios tipos: dispositivos de invisibilidad, teletransporte personal, poderosas armas de energía, y muchos otros. Se desconoce la causa exacta de que este lugar cayera en la ruina, aunque segun algunos, puede que esté conectado con la muerte del único individuo referenciado en la mayoría de los planos y documentos recuperados, el semidiós mecánico **Maestre Mekes**. +Las ruinas de una gran instalación enterrada por las arenas del planeta desierto de **Sunkaeze**, en los límites de **Xathar**. Es la única estructura encontrada ahí, y ha sido sujeto de mucha exploración y estudio. Aunque la mayoría de creaciones de su antiguo personal se han perdido, muchos han conseguido encontrar artefactos aun funcionales, completamente intactos, de varios tipos: dispositivos de invisibilidad, teletransporte personal, poderosas armas de energía, y muchos otros. Se desconoce la causa exacta de que este lugar cayera en la ruina, aunque según algunos, puede que esté conectado con la muerte del único individuo nombrado en la mayoría de los planos y documentos recuperados, el semidiós mecánico **Maestre Mekes**. De los muchos productos recuperados con éxito, la **Carabina Biospark** es uno de los más notables. Fue ideada como el "arma emblema de **Decade Mechanics**", y es descrita como "una lanza cortante de electricidad capaz de pensamiento profundo". Nadie ha podido realizar una ingeniería inversa de esta extraña arma. Se estima que hay un total de 30.000 unidades almacenadas en la instalación, y su distribución está actualmente controlada por **Tecnologías Tach-Engine**, siendo su fundador el descubridor principal de este arma, quien ha mostrado un gran interés en estudiarla en más detalle. diff --git a/lore/es/deepimpact.txt b/lore/es/deepimpact.txt index 78e178043..6b787237f 100644 --- a/lore/es/deepimpact.txt +++ b/lore/es/deepimpact.txt @@ -15,4 +15,4 @@ La **Deep Impact**, también conocida por su anterior nombre comercial de **Pist \cfRecarga:\c- Para rellenar el depósito interno de aire solo hay que tirar de la palanca lateral. Sabrás que el depósito está lleno cuando un mecanismo interno la bloquee, evitando la sobrecarga del depósito y la posibilidad de que reviente. \cxNotas de Saya:\c- -\cfSé que eres tope de fuerte, así que más te vale no darle mucho a la manivela. Espera, eso no suena muy bien... mierda. Olvida lo que acabo de decir. Olvida que lo has leído, también.\c- +\cfSé que eres tope de fuerte, así que más te vale no darle mucho a la manivela. Espera, eso no suena muy bien...\c- diff --git a/lore/es/demolitionist.txt b/lore/es/demolitionist.txt index 2fc5d8801..71e63ca3e 100644 --- a/lore/es/demolitionist.txt +++ b/lore/es/demolitionist.txt @@ -2,7 +2,7 @@ TAG Demolicionista TXT \cxNombre Completo:\c- - \cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c- + \cf Unidad de Combate Autónoma de 1ª Generación de Akari Labs\c- \cf Demolicionista (nombre en clave)\c- \cf Demo Miyamoto (primera unidad)\c- \cxNacionalidad:\c- @@ -20,29 +20,31 @@ Cada unidad está equipada con varios componentes de terceros, tal como los **Im El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las **Maidbots** de Akari Labs, el **Framework de IA Nekuronbot**, que fue proporcionado a **Saya Miyamoto** como un regalo de amistad de **Zanaveth Nekuraku II**, la ingeniera jefe de IA y actual CEO de **Nekuratek**. Gracias a esta tecnología, y combinado con muchos otros componentes como el **Display CuteEmotion** que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la **Caja de Voz Loudboi** que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades. -La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno. +La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 (tras un entrenamiento intensivo por parte de **Rika Isuzu**) en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno. -De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de **Demo Miyamoto**, y Saya se refiere a ella como su "hija". Se puede describir a Demo como "muy habladora" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo. +De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, habiendo recibido el nombre completo de **Demo Miyamoto**. Se puede describir a Demo como "muy habladora" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo. \cxNotas de Saya:\c- \cfJeje, sí... el directo estuvo bien. La gente preguntaba tantas cosas, y tus respuestas desde luego fueron sorprendentes, juju...\c- -\cfPor cierto, hay algo mas que te hace tan única. Es ese "collar de la suerte" que te hice, ya sabes. Ibuki también tiene uno, y desde luego fue de mucha ayuda, así que pensé que sería una buena idea darte uno también. Aunque ojalá la gente no se pusiera tan de "¿guau le diste esa cosa de BDSM?". NO ES ESO, no tiene NADA que ver con eso.\c- +\cfPor cierto, hay algo mas que te hace tan única. Es ese "collar de la suerte" que te hice, ya sabes. Ibuki también tiene uno, y desde luego fue de mucha ayuda, así que pensé que sería una buena idea darte uno también. Aunque ojalá la gente no se pusiera tan de "¿guau le tratas como una mascota?". Están teniendo una idea equivocada...\c- \cfEn fin, si has terminado de leer sobre ti, ¿que tal si vuelves al trabajo? Sí, Demo-chan, sé que estás leyendo esto, justo en este momento. OoOOoOoOoOooo... da miedo, ¿verdad?\c- \cfVuelve al trabajo, robotita tontita.\c- TXT -\cxNombre Completo:\c- -\cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c- -\cf Demolicionista (nombre en clave)\c- -\cf Demo Miyamoto (primera unidad)\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 2148-01-20\c- -\cxTwitter:\c- -\cf @demolitionist_bot\c- + \cxNombre Completo:\c- + \cf Unidad de Combate Autónoma de 1ª Generación de Akari Labs\c- + \cf Demolicionista (nombre en clave)\c- + \cf Demo Miyamoto (primera unidad)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2148-01-20\c- + \cxOcupación:\c- + \cf Héroe Profesional\c- + \cxTwitter:\c- + \cf @demolitionist_bot\c- El **Demolicionista** es uno de los mayores logros de **Akari Labs** en el campo de la robótica. Una unidad de combate manejada por IA capaz de usar eficientemente todo tipo de armamento a su disposición, altamente resistente a todo tipo de daño y capaz de operar en cualquier entorno, incluyendo el vacío del espacio. Puede considerarse el sucesor espiritual del programa de supersoldado **Oni Rojo**, en cierto modo, ya que también sirve el mismo propósito de defender a la Tierra de una fuerza invasora mayor. El proyecto ha sido financiado y patrocinado por los muchos socios de Akari Labs, y es fruto de la colaboración entre **Saya Miyamoto** y el **Archiduque Cytho Valathor**, representante de la población civil del **Infierno**. @@ -50,21 +52,21 @@ Cada unidad está equipada con varios componentes de terceros, tal como los **Im El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las **Maidbots** de Akari Labs, el **Framework de IA Nekuronbot**, que fue proporcionado a **Saya Miyamoto** como un regalo de amistad de **Zanaveth Nekuraku II**, la ingeniera jefe de IA y actual CEO de **Nekuratek**. Gracias a esta tecnología, y combinado con muchos otros componentes como el **Display CuteEmotion** que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la **Caja de Voz Loudboi** que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades. -La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno. +La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 (tras un entrenamiento intensivo por parte de **Rika Isuzu**) en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno. -De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de **Demo Miyamoto**, y Saya se refiere a ella como su "hija". Se puede describir a Demo como "muy habladora" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo. +De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, habiendo recibido el nombre completo de **Demo Miyamoto**. Se puede describir a Demo como "muy habladora" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo. Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el "arma definitiva" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Meido e Ibuki. \cxNotas de Saya:\c- \cfEres tan mona, Demo-chan. Desde luego, mira que me he lucido con ese cuerpo de Maidbot. En serio me pilló por sorpresa cuando, justo al pasarte a él, así de repente... te me echaste encima abrazándome y besándome tanto y... buf~\c- -\cfMe alegro tanto de que ahora estés en nuestro pequeño Club Cuqui (\c-\cg♥\c-\cf), sabes. Y ya, no quería tener que ir pasándolo también entre los dos así que sí, te hice otro collar para llevar. Eh, venga, sigo diciendo que no tiene nada que ver con ningún fetiche de BDSM ni nada por el estilo.\c- +\cfMe alegro tanto de que ahora estés en nuestro pequeño Club Cuqui (\cg♥\cf), sabes.\c- \cfEn fin, ya vale de leer sobre ti mientras trabajas. Sal de aquí, tonti.\c- TXT \cxNombre Completo:\c- - \cf Unidad de Combate Autónoma de Primera Generación de Akari Labs\c- + \cf Unidad de Combate Autónoma de 1ª Generación de Akari Labs\c- \cf Demolicionista (nombre en clave)\c- \cf Demo Miyamoto (primera unidad)\c- \cxNacionalidad:\c- @@ -82,15 +84,15 @@ Cada unidad está equipada con varios componentes de terceros, tal como los **Im El núcleo de IA del Demolicionista está construido sobre la misma tecnología que las **Maidbots** de Akari Labs, el **Framework de IA Nekuronbot**, que fue proporcionado a **Saya Miyamoto** como un regalo de amistad de **Zanaveth Nekuraku II**, la ingeniera jefe de IA y actual CEO de **Nekuratek**. Gracias a esta tecnología, y combinado con muchos otros componentes como el **Display CuteEmotion** que permite a la unidad mostrar visiblemente sus emociones a través de un conjunto de simples caras animadas o la **Caja de Voz Loudboi** que la permite hablar casi con naturalidad, el Demolicionista es casi indistinguible de una persona real en su comportamiento y respuesta emocional, haciendo la interacción con civiles mucho más reconfortante. Se puede decir incluso que el Demolicionista tiene su propia personalidad, con sus pequeñas peculiaridades. -La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno. +La primera unidad, conocida afectivamente como **Demo-chan** por Saya, fue desplegada en Junio de 2148 (tras un entrenamiento intensivo por parte de **Rika Isuzu**) en el territorio de la **Unión de Estados** para combatir la invasión demoníaca atraída por las intervenciones de la **UAC** en el Infierno. -De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, teniendo el nombre completo de **Demo Miyamoto**, y Saya se refiere a ella como su "hija". Se puede describir a Demo como "muy habladora" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo. +De esta primera unidad anteriormente mencionada, se conocen muchos más detalles gracias a la sesión de preguntas y respuestas que Saya realizó en directo meses antes del despliegue. La unidad es reconocida como parte de la familia Miyamoto, habiendo recibido el nombre completo de **Demo Miyamoto**. Se puede describir a Demo como "muy habladora" y aficionada a hacer chistes para poner una sonrisa en las caras de la gente, aunque también es muy seria y determinada en su deseo de proteger a quien lo necesita. También es bastante popular con la comunidad LGBTQIA+ dado su feroz soporte de proteger los derechos de aquellos que sufren discriminación por su identidad, e incluso ha anunciado públicamente ser no-binaria. Esto fue algo poco inesperado, dada la experiencia de Saya con el colectivo. Tras su éxito luchando contra los ejércitos del Infierno, Saya se dio cuenta de que no haría falta fabricar más unidades, así que Demo se convirtió en el "arma definitiva" de Akari Labs, ella sola. Además, fue recompensada adicionalmente con un cuerpo adjunto de Maidbot, el cual Demo usa libremente durante su tiempo libre, y le ha permitido expresar verdaderamente sus sentimientos hacia Saya, convirtiéndose en su tercera pareja, junto con Meido e Ibuki. Desde Mayo de 2171, está adicionalmente casada con **Kirin Xanai**, líder del **Imperio Sykhai de Akkou**. \cxNotas de Saya:\c- \cfEres tan mona, Demo-chan. Desde luego, mira que me he lucido con ese cuerpo de Maidbot. En serio me pilló por sorpresa cuando, justo al pasarte a él, así de repente... te me echaste encima abrazándome y besándome tanto y... buf~\c- -\cfMe alegro tanto de que ahora estés en nuestro pequeño Club Cuqui (\c-\cg♥\c-\cf), sabes. Y ya, no quería tener que ir pasándolo también entre los dos así que sí, te hice otro collar para llevar. Eh, venga, sigo diciendo que no tiene nada que ver con ningún fetiche de BDSM ni nada por el estilo.\c- +\cfMe alegro tanto de que ahora estés en nuestro pequeño Club Cuqui (\cg♥\cf), sabes.\c- \cfEn fin, ya vale de leer sobre ti mientras trabajas. Sal de aquí, tonti.\c- diff --git a/lore/es/devanikna.txt b/lore/es/devanikna.txt index 1353d992a..75b222898 100644 --- a/lore/es/devanikna.txt +++ b/lore/es/devanikna.txt @@ -19,6 +19,6 @@ Entre los varios clanes, hay un número considerable de "héroes de leyenda" doc Uno de los rasgos poco conocidos de los Devanikan es su fuerte defensa de la pureza racial. Cuando la princesa **Devai Unissix**, actual jefa del clan, anunció su enlace con **Serwand Nerukousei**, una quimera construida por un mago errante, su marido comenzó a recibir amenazas de la población, llamándolo "bestia con forma de hombre" y acusándolo de corromper el linaje Unissix con el propósito de tomar el control de la nación. Estas amenazas se extendieron también a sus hijos, los cuales fueron denotados como "abominaciones cruzadas" de sangre Devanikan y quimérica. No fue hasta los primeros grandes logros como guerrera de Deneva que la persecución que sufrieron terminó. Desde entonces, la hostilidad a la que se enfrentaban ha disminuido gradualmente, a medida que nuevas generaciones fueron aceptando la mezcla de razas. \cxNotas de Saya:\c- -\cfSí, la gente de Misa mola mucho. Bueno, menos por lo del racismo. Eso sí que es una mierda muy grande, desde luego. Oí de Zana-sama que si no hubiera conocido a Misa entonces, probablemente se habría quitado la vida por todo lo que estaba pasando. Joder... Pero al menos, ahora vive feliz con Zana-sama (suertuda), y sí, las cosas van mejorando comparadas con como eran antes.\c- +\cfSí, la gente de Misa mola mucho. Bueno, menos por lo del racismo. Eso sí que es una mierda muy grande, desde luego. Oí de Zana-sama que si no hubiera conocido a Misa entonces... Joder... Pero al menos, ahora vive feliz con Zana-sama (suertuda), y sí, las cosas van mejorando comparadas con como eran antes.\c- \cfSabes, todo este tema, me recuerda a una vieja serie de JRPGs a la que jugaba hace un porrón de años, que iba también de gente con sangre de dragón... pero ya ni me acuerdo de como se llamaba. Coño, si hasta puse a Misa a jugarlos y no paraba de hablar de todas las similitudes y cosas así. Oh bueno, guerreros molones de dragones, fuck yeah.\c- diff --git a/lore/es/display.txt b/lore/es/display.txt index 53edd2a58..9513e4807 100644 --- a/lore/es/display.txt +++ b/lore/es/display.txt @@ -8,7 +8,7 @@ TXT El **CuteEmotion** es un dispositivo de pantalla diseñado para el uso en robots. Se puede emplear para mostrar una amplia variedad de expresiones faciales, seleccionadas de una librería de imágenes configurada por el usuario, cada una asociada a una emoción o sentimiento en particular que la IA quiera poder mostrar, mejorando así la naturalidad de sus interacciones sociales. La pantalla es unidireccional, permitiendo ser alineada con los receptores visuales del robot para mayor precisión de cualquier movimiento de ojos simulado. -Hay varias versiones del dispositivo, pero la más conocida es el modelo "Monoglow", popularizado gracias a su uso por el **Demolicionista**. +Hay varias versiones del dispositivo, pero la más conocida es el modelo "Monoglow", popularizado gracias a su uso por el **Demolicionista**. Existen otros modelos más flexibles y configurables por el usuario, los cuales son conocidamente famosos en ciertos rincones de la comunidad furry. \cxNotas de Saya:\c- \cfSabes, esa cosa te hace tan mona y abrazable... Es que, a ver... ¡¡¡ES MONÍSIMA!!!\c- diff --git a/lore/es/divinesprite.txt b/lore/es/divinesprite.txt index 9bad5f4e1..0c09c3548 100644 --- a/lore/es/divinesprite.txt +++ b/lore/es/divinesprite.txt @@ -17,4 +17,4 @@ Esta brillante gema llena de vigor hasta a la más débil de las criaturas munda \cfComo puedes esperar, esto es algo más que mis colegas dioses han recomendado. Normalmente se le dan a los héroes por petición especial... Y tu eres nuestra heroína, Demo-chan, así que esto es para ti.\c- -\cfPS: No intentes comértelo.\c- +\cfPS: No intentes comértelo. Así NO es como se siente comer chicles five.\c- diff --git a/lore/es/doomguy.txt b/lore/es/doomguy.txt index 266b9c567..f431d3933 100644 --- a/lore/es/doomguy.txt +++ b/lore/es/doomguy.txt @@ -1,18 +1,18 @@ TAG Marine de Doom TXT -\cxNombre Completo:\c- -\cf CLASIFICADO\c- -\cxOtros Nombres:\c- -\cf Marine de Doom\c- -\cf El Marine Solitario\c- -\cf Doomguy\c- -\cxNacionalidad:\c- -\cf Americano\c- -\cxFecha de Nacimiento:\c- -\cf CLASIFICADO\c- -\cxOcupación:\c- -\cf Marine (UAC)\c- + \cxNombre Completo:\c- + \cf [CLASIFICADO]\c- + \cxOtros Nombres:\c- + \cf Marine de Doom\c- + \cf El Marine Solitario\c- + \cf Doomguy\c- + \cxNacionalidad:\c- + \cf Americano\c- + \cxFecha de Nacimiento:\c- + \cf [CLASIFICADO]\c- + \cxOcupación:\c- + \cf Marine (UAC)\c- El **Marine de Doom** es el único superviviente de las invasiones demoníacas en las bases de la **UAC** en Fobos y Deimos. Habiendo sido transferido a **Mars City** no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo **Infierno** y haber vuelto, fue nombrado "solucionador de problemas" de la organización. @@ -21,22 +21,22 @@ En el momento de escribir este artículo, el marine ha sido encargado de combati \cxNotas de Saya:\c- \cfBien, COSA IMPORTANTE: no te acerques a este tío, no le digas nada, no te metas en medio. Si os cruzáis, quédate quieta y deja que trabaje, o si no puede que vaya y te pegue un tiro a ti también.\c- -\cfPor cierto, mi enhorabuena a los gorilas de la UAC por lo bien guardado que tienen todo sobre este tío. No sabemos ni como se llama, ni de su historial antes de que empezara toda esta mierda. Es que, ¿que clase de tío es? Tampoco he oído mucho de eso, aparte de la poca info que Cytho-sama pudo sacar de su anterior paseo por el Infierno, aunque ¿creo que mencionaron por ahí que le gustan los conejos? ¿conejillos monos?\c- +\cfPor cierto, mi enhorabuena a los gorilas de la UAC por lo bien guardado que tienen todo sobre este tío. No sabemos ni como se llama, ni de su historial antes de que empezara toda esta mierda. Pues sí, no he oído mucho de la clase de tío que es, aparte de la poca info que Cytho-sama pudo sacar de su anterior paseo por el Infierno, aunque ¿creo que mencionaron por ahí que le gustan los conejos? ¿conejillos monos?\c- \cfBueno, entonces, a lo mejor si haces como que esa cornamenta tuya son orejitas de conejo, puede que no te dispare, quien sabe...\c- TXT -\cxNombre Completo:\c- -\cf CLASIFICADO\c- -\cxOtros Nombres:\c- -\cf Marine de Doom\c- -\cf El Marine Solitario\c- -\cf Doomguy\c- -\cxNacionalidad:\c- -\cf Americano\c- -\cxFecha de Nacimiento:\c- -\cf CLASIFICADO\c- -\cxOcupación:\c- -\cf N/A\c- + \cxNombre Completo:\c- + \cf John Blazkowicz\c- + \cxOtros Nombres:\c- + \cf Marine de Doom\c- + \cf El Marine Solitario\c- + \cf Doomguy\c- + \cxNacionalidad:\c- + \cf Americano\c- + \cxFecha de Nacimiento:\c- + \cf 2132-03-20\c- + \cxOcupación:\c- + \cf N/A\c- El **Marine de Doom** es el único superviviente de las invasiones demoníacas en las bases de la **UAC** en Fobos y Deimos. Habiendo sido transferido a **Mars City** no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo **Infierno** y haber vuelto, fue nombrado "solucionador de problemas" de la organización. @@ -48,19 +48,21 @@ A pesar de esta "derrota", la UAC siguió empleando al Marine de Doom en otras m \cfEl tío básicamente se ha jubilado, y vaya si es un descanso bien merecido. Se ha metido en más mierda que tú, siendo el superviviente de todo lo de Marte y luego ir de mandado por ahí para "salvar la situación". Por lo que he oído, palabras propias de Cytho-sama, tuvo que lidiar con otros dos titanes que el ejército demoníaco tenía en reserva. Ambos básicamente al mismo nivel que el viejo Baramun.\c- \cfLo que más me ha sorprendido es enterarme de lo que dijo en una entrevista. Que no se ha tomado mal lo de que le chafaras el trabajo, hasta parece que es fan de lo que has hecho, soltando que eres "cojonuda desgarrando carne de demonio". Mola.\c- + +\cfDato curioso, resulta que tenemos el mismo cumpleaños.\c- TXT -\cxNombre Completo:\c- -\cf CLASIFICADO\c- -\cxOtros Nombres:\c- -\cf Marine de Doom\c- -\cf El Marine Solitario\c- -\cf Doomguy\c- -\cxNacionalidad:\c- -\cf Americano\c- -\cxFecha de Nacimiento:\c- -\cf CLASIFICADO\c- -\cxOcupación:\c- -\cf N/A\c- + \cxNombre Completo:\c- + \cf John Blazkowicz\c- + \cxOtros Nombres:\c- + \cf Marine de Doom\c- + \cf El Marine Solitario\c- + \cf Doomguy\c- + \cxNacionalidad:\c- + \cf Americano\c- + \cxFecha de Nacimiento:\c- + \cf 2132-03-20\c- + \cxOcupación:\c- + \cf N/A\c- El **Marine de Doom** es el único superviviente de las invasiones demoníacas en las bases de la **UAC** en Fobos y Deimos. Habiendo sido transferido a **Mars City** no mucho antes de aquellos incidentes, formó parte del destacamento enviado a defender las bases de Fobos de los demonios invasores que habían de alguna forma tomado el control de los sistemas de teletransporte con los que la UAC estaba experimentando. Tras su impresionante hazaña de, solo por su cuenta, haber suprimido la invasión tanto en Fobos como Deimos, junto con haber llevado su batalla al mismo **Infierno** y haber vuelto, fue nombrado "solucionador de problemas" de la organización. diff --git a/lore/es/ellen.txt b/lore/es/ellen.txt index 9a2a1e383..117346fcf 100644 --- a/lore/es/ellen.txt +++ b/lore/es/ellen.txt @@ -15,15 +15,13 @@ Nacida en Boston en 2066, hija de **Elena Yanikov XIX** y **Gottfried Steiner**, Desde una edad temprana mostró cierto interés en "explorar" cada rincón de la ciudad, comenzando primero con edificios abandonados cerca de su casa, expandiendo luego su alcance hasta cualquier punto de interés que pudiera encontrar en toda la ciudad. Comenzó a grabar sus exploraciones urbanas mientras estudiaba primaria, y las subió a páginas para compartir video, ganando mucha popularidad. -Tras los eventos de la **Cicatriz Blanca**, Ellen puso a prueba las habilidades ganadas en la exploración para trabajar como recolectora junto a su madre, buscando recursos de valor en el yermo para traer de vuelta a los varios refugios de la zona. Fue así como finalmente conoció a **Ibuki Miyamoto**, el **Oni Rojo**, quien había vagado el yermo durante años, convirtiéndose en una especie de "guerrera legendaria" dadas sus varias hazañas. En el proceso de traer a Ibuki de vuelta a Japón por parte de **Taro Miyamoto**, de **Akari Labs**, Ellen decidió que quería ir con ellos, citando que "andar por este vertedero es un rollo y me gustaría mucho ver el mundo de fuera". - -Durante su estancia en Japón, solía pasar el tiempo con Taro, y los dos acabaron saliendo semanas después. Algo que fue seguido de un anuncio de Taro en redes citando: "mis privilegios de mago han sido anulados". +Tras los eventos de la **Cicatriz Blanca**, Ellen puso a prueba las habilidades ganadas en la exploración para trabajar como recolectora junto a su madre, buscando recursos de valor en el yermo para traer de vuelta a los varios refugios de la zona. Fue así como finalmente conoció a **Ibuki Miyamoto**, el **Oni Rojo**, quien había vagado el yermo durante años, convirtiéndose en una especie de "guerrera legendaria" dadas sus varias hazañas. En el proceso de traer a Ibuki de vuelta a Japón por parte de **Taro Miyamoto**, de **Akari Labs**, Ellen decidió que quería ir con ellos, citando que "andar por este vertedero es un rollo y me gustaría mucho ver el mundo de fuera". Durante su estancia en Japón, solía pasar el tiempo con Taro, y los dos acabaron saliendo semanas después. Aparte de su ascendencia compartida con la conocida cantante/guitarrista **Ashley Knox**, también comparte una relación mucho más cercana con ella, dado el hecho de que su padre es el nieto del exmarido de Ashley, el difunto **Fredrik Steiner**. A partir de esto, y el hecho de que ambas están casadas con miembros de la familia Miyamoto, se han hecho grandes amigas. Ellen ha incluso considerado unirse a la banda algún día, aunque desde haberse escrito este artículo, todavía no ha ocurrido. \cxNotas de Saya:\c- -\cfJa, típico de Taro nii-san, anunciar a todo dios que acaba de perder su puta virginidad. Si es que no podía ser más sutil ni aunque lo intentara. Pues eso, entre él y Yu-chan, los dos se han pillado unas monadas inmortales, haciendo que me ponga jodidamente celosa en el proceso. Es que, en serio, ¿como coño puede ALGUIEN querer salir con el perdedor de mi hermano? No se que le ve Ellen-san...\c- +\cfPues eso, entre Taro-nii y Yu-chan, los dos se han pillado unas monadas inmortales, haciendo que me ponga jodidamente celosa en el proceso. Es que, en serio, ¿como coño puede ALGUIEN querer salir con el perdedor de mi hermano? No se que le ve Ellen-san...\c- \cfOh ya, hablando de Ellen-san. Es una puta bromista de cuidado, es que vamos, una súper troll de la vida. Mira, una vez... bueno, mejor creo que me lo voy a callar, porque es que me da muchísima vergüenza. Aún me duele el culo desde entonces. Que va, NO pienso explicarlo, coño si no. Usa tu imaginación, Demo-chan.\c- -\cfAh, y también, cosa tope de buena de tenerla por aquí. Tiene unos contactos muy interesantes. Sí, la mayoría de la gente no lo sabe, pero su abuelo es un demonio. Sí, uno de verdad, del Infierno y todo. Y es una monada, también. Se llama Cytho Valathor, y dice que es un "íncubo reformado", lo que sea que signifique eso. Siempre que necesite saber algo sobre lo que pasa en la tierra de fuego eterno, es el tío al que acudo.\c- +\cfAh, y también, cosa tope de buena de tenerla por aquí. Tiene unos contactos muy interesantes. Sí, me refiero por supuesto a su abuelo demonio. Cierta monada que seguramente conocerás, de nombre Cytho Valathor. Por supuesto, siempre que necesite saber algo sobre lo que pasa en la tierra de fuego eterno, no hay mejor fuente de información que el abuelete de Ellen-san.\c- diff --git a/lore/es/eviscerator.txt b/lore/es/eviscerator.txt index 5a7a2bd5c..5f14a5e39 100644 --- a/lore/es/eviscerator.txt +++ b/lore/es/eviscerator.txt @@ -1,6 +1,6 @@ TXT \cxDesignación:\c- -\cf Cañón de Flechettes de Carga Pesada "Eviscerator"\c- +\cf Cañón de Metralla de Carga Pesada "Eviscerator"\c- \cxFabricante:\c- \cf Cyrus Enterprises\c- \cf Diseño de Don BIG SHOT\c- diff --git a/lore/es/forx.txt b/lore/es/forx.txt index f4b0ae994..348fca532 100644 --- a/lore/es/forx.txt +++ b/lore/es/forx.txt @@ -10,7 +10,7 @@ TXT \cxPágina Web:\c- \cf https://forx.ie\c- -Fundada en 2029 por **Harold Forx**, esta compañía es considerada como la única salvadora de Irlanda del Sur (anteriormente conocido como el Reino Unido) tras su larga caída en la ruina tras el **Brexit** en 2020, la **Independencia de Escocia** en 2022 y la **Reconquista Irlandesa** de 2026 (la cual ocurrió como respuesta a la declaración de guerra sobre la isla el año anterior). A pesar de estos golpes mortales, **Aeronáutica Forx**, habiendo aparecido casi de la nada, fundada por un hombre que, hace solo pocos años pasaba su vida rebuscando en desguaces, consiguió atraer tanto dinero como para rescatar el territorio entero solo pocos meses después de ser fundada. +Fundada en 2029 por **Harold Forx**, esta compañía es considerada como la única salvadora de Inglaterra tras su larga caída en la ruina tras el **Brexit** en 2020, la **Independencia de Escocia** en 2022 y la **Reconquista Irlandesa** de 2026 (la cual ocurrió como respuesta a la declaración de guerra del antiguo **Reino Unido** sobre la isla el año anterior). A pesar de estos golpes mortales, **Aeronáutica Forx**, habiendo aparecido casi de la nada, fundada por un hombre que, hace solo pocos años pasaba su vida rebuscando en desguaces, consiguió atraer tanto dinero como para rescatar el territorio entero solo pocos meses después de ser fundada. Forx es actualmente el proveedor Nº1 de motores de propulsión para todo tipo de aeronaves, incluyendo jets comerciales e incluso naves espaciales. Su dominio se extiende por todo el lado este del Atlántico, ya que al otro lado, en América, la **UAC** aun reina soberana, con sus propias tecnologías. @@ -23,6 +23,6 @@ Aparte de motores de nave, Forx también ha adaptado sus sistemas propietarios d \cfA ver, la cosa va así, el tío primero intenta decirles que se larguen de ahí y le dejen tirar abajo todo para construir mierdas por ahí. Ni puto caso. Entonces, va ahí en persona, y ESA es la mejor parte. Después de discutir con el director del orfanato, que conoce al tío personalmente, va y le METE UNA HOSTIA TREMENDA que el tío pega la media vuelta y corre fuera llorando.\c- -\cfNo es coña, Demo-chan, te juro que eso es lo que vi. He visto los vídeos de archivo cien veces, porque me ayudan a sentirme mejor cuando ando de mala hostia, y... siempre, la parte en la que el viejales le mete un hostiazo del revés al tío, nunca falla. Es que me desorino. Es BUENÍSIMO.\c- +\cfNo es coña, Demo-chan, te juro que eso es lo que vi. He visto los vídeos de archivo cien veces, porque me ayudan a sentirme mejor cuando ando de mala hostia, y... siempre, la parte en la que el viejales le mete un hostiazo del revés al tío y lo echa a la puta calle, nunca falla. Es que me desorino. Es BUENÍSIMO.\c- -\cfEn serio, eso es lo que se merece esta gente. No sabes cuantas veces he deseado poder ir ahí y darle una buena paliza al niñato bastardo ese de Kelliher. Desde luego me haría sentir mejor, sí. Que se joda, él y la UAC también. El meme ese de "comer a los ricos" sigue siendo relevante, pero yo digo que hay que poner de moda otra cosa, que lo que realmente necesitan es una buena somanta de hostias.\c- +\cfEn serio, eso es lo que se merece esta gente. No sabes cuantas veces he deseado poder ir ahí y defenestrar al niñato bastardo ese de Kelliher. Desde luego me haría sentir mejor, sí. Que se joda, él y la UAC también. El meme ese de "comer a los ricos" sigue siendo relevante, pero yo digo que hay que poner de moda otra cosa, que lo que realmente necesitan es un buen viaje.\c- diff --git a/lore/es/froggychair.txt b/lore/es/froggychair.txt index d158c55e4..402e41b38 100644 --- a/lore/es/froggychair.txt +++ b/lore/es/froggychair.txt @@ -17,8 +17,8 @@ Un pequeño precio a pagar... \cfEsos DOS ciertamente andan detrás de esto. No sé como lo has hecho, dijeron que solo necesitabas "deletrear las palabras" para invocarla, pero... eso, ahí la tienes. Es literalmente lo que es, y odio el hecho de que sepan lo que es esto y lo mucho que fue un MEME MASIVO en mis tiempos.\c- -\cfBueno, por lo que sé, esta cosa es indestructible y pesa más de lo que parece, así que probablemente puedas partír cráneos con ella. Y encima hace ruiditos, vaya que sí. Eso definitivamente no se va a volver nada molesto despues de un rato.\c- +\cfBueno, por lo que sé, esta cosa es indestructible y pesa más de lo que parece, así que probablemente puedas partir cráneos con ella. Y encima hace ruiditos, vaya que sí. Eso definitivamente no se va a volver nada molesto después de un rato.\c- \cfEn fin, tengo que hacer esto, tengo que decirlo o no me dejarán en paz:\c- -\cfBienvenida a la \cfFroggy Gang\c-, Demo-chan.\c- +\cfBienvenida a la \cdFroggy Gang\cf, Demo-chan.\c- diff --git a/lore/es/gcsandwich.txt b/lore/es/gcsandwich.txt index 7fcfa7fc4..1f99fbfa5 100644 --- a/lore/es/gcsandwich.txt +++ b/lore/es/gcsandwich.txt @@ -12,7 +12,7 @@ Este delicioso sándwich en específico ha sido creado con maestría por el cofu Que no te engañe su simple apariencia, este artefacto comestible está imbuido del poder del mismísimo **Nukritas 1xx**, y no solo provee a su consumidor de los beneficios anteriormente mencionados, sino también permite ser comido por aquellos cuyas características físicas no lo permitan, por mera fuerza de voluntad. -Incluso si no se come directamente, el sándwich todavía puede demostrar su utilidad en otros momentos. Mientras permanezca en tu posesión, podrá incluso dispersar su energía en el momento exacto de tu eventual fallecimiento, cancelándolo por completo. Realmente no te puede faltar este maravilleante artefacto. +Incluso si no se come directamente, el sándwich todavía puede demostrar su utilidad en otros momentos. Mientras permanezca en tu posesión, podrá incluso dispersar su energía en el momento exacto de tu eventual fallecimiento, cancelándolo por completo. Realmente no te puede faltar este maravillante artefacto. \cxNotas de Saya:\c- \cfSí, los tipos estos escriben las entradas de sus cosas, fácil de notar, lo sé. Es que ya no entiendo, todo lo que tenga que ver con estos dos me fríe los sesos a conciencia, intentando comprender que pasa. Como cuando la primera vez que probamos la cosa esta, ¿recuerdas?\c- diff --git a/lore/es/genericcube.txt b/lore/es/genericcube.txt index 5287b701c..5d01bc1e3 100644 --- a/lore/es/genericcube.txt +++ b/lore/es/genericcube.txt @@ -10,7 +10,7 @@ TXT El **Cubo Perfectamente Genérico** es un raro objeto que es perfectamente cúbico en forma y exactamente 128mm en cada arista. Se pueden encontrar a veces en los lugares más inesperados, y son bien conocidos como un popular objeto de coleccionista entre viajeros espaciales. Algunos sospechan que estos objetos puedan ser inimaginablemente antiguos, y posiblemente dejados atrás por una raza ancestral, mucho más antigua incluso que los tan venerados **Mishe**, maestros de conocimiento arcano con incontables eones de historia. -Esa era la teoría, al menos, hasta que los dos Mishe fundadores de la **Universidad de Nos-Kora** fueron cuestionados acerca de cualquier información sobre los artefactos. Como fue relatado, estos son de orígen divino, aunque el conocimiento de su verdadero propósito ha sido perdido. Sin embargo, pueden funcionar perfectamente como "bonitos pisapapeles". +Esa era la teoría, al menos, hasta que los dos Mishe fundadores de la **Universidad de Nos-Kora** fueron cuestionados acerca de cualquier información sobre los artefactos. Como fue relatado, estos son de origen divino, aunque el conocimiento de su verdadero propósito ha sido perdido. Sin embargo, pueden funcionar perfectamente como "bonitos pisapapeles". \cxNotas de Saya:\c- \cfOh, los cosos esos. Son puto rarísimo, anda que sí. Recuerdo que una de las novias de Ibuki tiene uno, la cazarrecompensas esa, Erika, sí. A veces se pone a jugar con él cuando voy de visita.\c- @@ -26,7 +26,7 @@ TXT El **Cubo Perfectamente Genérico** es un raro objeto que es perfectamente cúbico en forma y exactamente 128mm en cada arista. Se pueden encontrar a veces en los lugares más inesperados, y son bien conocidos como un popular objeto de coleccionista entre viajeros espaciales. Algunos sospechan que estos objetos puedan ser inimaginablemente antiguos, y posiblemente dejados atrás por una raza ancestral, mucho más antigua incluso que los tan venerados **Mishe**, maestros de conocimiento arcano con incontables eones de historia. -Esa era la teoría, al menos, hasta que los dos Mishe fundadores de la **Universidad de Nos-Kora** fueron cuestionados acerca de cualquier información sobre los artefactos. Como fue relatado, estos son de orígen divino, aunque el conocimiento de su verdadero propósito ha sido perdido. Sin embargo, pueden funcionar perfectamente como "bonitos pisapapeles". +Esa era la teoría, al menos, hasta que los dos Mishe fundadores de la **Universidad de Nos-Kora** fueron cuestionados acerca de cualquier información sobre los artefactos. Como fue relatado, estos son de origen divino, aunque el conocimiento de su verdadero propósito ha sido perdido. Sin embargo, pueden funcionar perfectamente como "bonitos pisapapeles". \cxNotas de Saya:\c- \cfOh, los cosos esos. Son puto rarísimo, anda que sí. Recuerdo que una de las novias de Ibuki tiene uno, la cazarrecompensas esa, Erika, sí. A veces se pone a jugar con él cuando voy de visita.\c- diff --git a/lore/es/gensokyo.txt b/lore/es/gensokyo.txt index a62cb181b..f6d5478bd 100644 --- a/lore/es/gensokyo.txt +++ b/lore/es/gensokyo.txt @@ -13,4 +13,4 @@ La tierra de Gensokyo no tiene una estructura política clara, aunque parece que Se ha intentado muchas veces establecer comunicaciones con ellos tras investigaciones iniciales, sin éxito hasta la fecha, aunque hay una excepción: La **familia Miyamoto**, quienes inicialmente vinieron de este lugar, y luego emigraron al exterior. Tal y como cuenta **Saya Miyamoto** en redes sociales, la familia suele viajar a través de la barrera, para visitar a su pariente lejana, la **princesa Kaguya Houraisan**. Tras esta revelación, muchos han intentado acercarse a los miembros de la familia Miyamoto para pedir más información, pero han rechazado hablar del tema. \cxNotas de Saya:\c- -\cfTío, mira que se interesa la peña por ese sitio, ¿verdad? Pero joder es que no entienden, que las cosas tienen que ser así. Esas son las reglas, o mierdas así. No se pueden mezclar los dos mundos y tal, es lo que dice la vieja esa. Sí, esa que se comporta como si tuviera diecisiete y anda por ahí con unas cosplayers. Creo que debe de ser pariente de Ashley-san, tienen los mismos ojos. Pero una mierda voy a ir a preguntarle, la tía me da mal rollo.\c- +\cfTío, mira que se interesa la peña por ese sitio, ¿verdad? Pero joder es que no entienden, que las cosas tienen que ser así. Esas son las reglas, o mierdas así. No se pueden mezclar los dos mundos y tal, es lo que dice la vieja esa. Sí, esa que se comporta como si tuviera diecisiete y anda por ahí con unas cosplayers. Creo que debe de ser pariente de Ashley-san, tienen los mismos ojos. Pero una mierda voy a ir a preguntarle, la tía me cae mal.\c- diff --git a/lore/es/hammerspace.txt b/lore/es/hammerspace.txt index 2718993ca..bc98193ba 100644 --- a/lore/es/hammerspace.txt +++ b/lore/es/hammerspace.txt @@ -6,7 +6,7 @@ TXT \cxClasificación:\c- \cf Dispositivo de Almacenamiento Extradimensional\c- -Una de las creaciones más ingeniosas de **Cyrus Enterprises**, el contenedor de **Hammerspace™** es un pequeño dispositivo que cabe en un bolsillo y permite al individuo tener acceso a su propio espacio extradimensional de almacenamiento, con la habilidad de almacenar y recuperar cualquier objeto de él a voluntad, al instante. Ha sido comparado frecuentemente con la **Bolsa de Contención**, conocida por todo entusiasta de los juegos de rol, e incluso el fundador de la compañía ha confirmado que ciertamente esa fue la inspiración principal de este dispositivo. Lo ve como una forma de "por fin traer las mecánicas de inventario de los videojuegos a la vida real". +Una de las creaciones más ingeniosas de **Cyrus Enterprises**, el contenedor de **Hammerspace™** es un pequeño dispositivo que cabe en un bolsillo y permite al individuo tener acceso a su propio espacio extra-dimensional de almacenamiento, con la habilidad de almacenar y recuperar cualquier objeto de él a voluntad, al instante. Ha sido comparado frecuentemente con la **Bolsa de Contención**, conocida por todo entusiasta de los juegos de rol, e incluso el fundador de la compañía ha confirmado que ciertamente esa fue la inspiración principal de este dispositivo. Lo ve como una forma de "por fin traer las mecánicas de inventario de los videojuegos a la vida real". Es de notar que la contención en Hammerspace™ no se puede usar para criaturas vivas. No hay una razón clara del porqué, aparte de "anulará la garantía". diff --git a/lore/es/heavymahsheengun.txt b/lore/es/heavymahsheengun.txt index afce84901..742d57979 100644 --- a/lore/es/heavymahsheengun.txt +++ b/lore/es/heavymahsheengun.txt @@ -14,11 +14,21 @@ La munición empleada por este arma son balas anti-armadura del calibre 14.5x114 Aunque generalmente ideada para el uso montado, la operación al paso es posible, siempre y cuando el usuario tenga una servoarmadura de grado plata como mínimo para manejar el potente retroceso. -\cfFuego Primario:\c- Operación a 700 RPM. El fuego prolongado en este modo es en teoría infinito, ya que el calor producido puede ser anulado eficientemente por los sistemas de refrigeración internos, es entonces el modo recomendado para la mayoría de situaciones. +El arma está preparada para tres velocidades: -\cfFuego Secundario:\c- Operación a 1050 RPM. Mayor velocidad, con calentamiento moderado. Aun es posible el fuego continuado en este modo, durante al menos un minuto aproximadamente desde un inicio en frío. Si necesitas repartir más dolor y tienes munición de sobra, usa esto. +\cf300 RPM:\c- Velocidad lenta. El fuego prolongado en este modo es en teoría infinito, ya que el calor producido puede ser anulado eficientemente por los sistemas de refrigeración internos, es entonces el modo recomendado para la mayoría de situaciones. -\cfFuego Terciario:\c- Operación a 2100 RPM. Extremadamente rápido, con el mayor potencial de calor. El fuego prolongado en este modo puede activar rápidamente el bloqueo de seguridad del arma si el aumento de temperatura se acerca a niveles no operacionales. Si tienes prisa por matar y no te importa quedarte sin munición en pocos segundos, entonces elige esto. +\cf700 RPM:\c- Mayor velocidad, con calentamiento moderado. El fuego prolongado sigue siendo posible dentro de la temperatura recomendada, aunque esto afectará a la puntería. Si necesitas repartir más dolor y tienes munición de sobra, usa esto. + +\cf2100 RPM:\c- Extremadamente rápido, con el mayor potencial de calor. El fuego prolongado en este modo puede activar rápidamente el bloqueo de seguridad del arma si el aumento de temperatura se acerca a niveles no operacionales. Si tienes prisa por matar y no te importa quedarte sin munición en pocos segundos, entonces elige esto. + +La velocidad más segura viene seleccionada por defecto. Otras velocidades pueden seleccionarse al empujar o tirar del mango de disparo (ten en cuenta que el mango queda bloqueado mientras se dispara, así que no se puede cambiar la velocidad sobre la marcha). + +\cfFuego Primario:\c- Dispara con la velocidad seleccionada. El mecanismo del arma arranca y se detiene en seco, así que comenzará a disparar en cuanto se aprieta el gatillo, y parará inmediatamente después de soltarlo. + +\cfFuego Secundario:\c- Empuja el mango para incrementar la velocidad. + +\cfFuego Terciario:\c- Tira del mango para reducir la velocidad. \cfRecarga:\c- No se necesita absolutamente recargar el arma, ya que se alimenta directamente desde Hammerspace, requiriendo solo un gran suministro de munición. Los contenedores de Hammerspace automáticamente conectarán todas las rondas necesarias para la alimentación enlazada. @@ -29,4 +39,4 @@ Aunque generalmente ideada para el uso montado, la operación al paso es posible \cfPor cierto sé lo que estarás pensando y no, no son balas trazadoras. Tal como me lo han explicado, resulta que van tan rápido que literalmente se encienden con la fricción del aire. Bastante hardcore, ¿a que sí? Apuesto a que la UAC no superará nunca esta mierda.\c- -\cfDios solo verla en acción es suficiente para ponerme a tope. Joder, más que eso. La Ametralladora Sheen es tal festival delicioso de dakka que el mero sonido de dispararla hace que desate a Leviatán en mis bragas, y puedes citarme en eso.\c- +\cfDios solo verla en acción... Joder, más que eso. La Ametralladora Sheen es tal festival delicioso de dakka que el mero sonido de dispararla hace que me ponga loca. ¡Es la leche!\c- diff --git a/lore/es/hell.txt b/lore/es/hell.txt index 600a8600b..c691b20e7 100644 --- a/lore/es/hell.txt +++ b/lore/es/hell.txt @@ -6,11 +6,11 @@ TXT \cxClasificación:\c- \cf Inframundo\c- -El **Infierno** es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como **Kur**, un mundo pacífico que los **Anarukon** que abandonaron **Novoskhana** siguiendo a **Noskas Kurenai** buscaban como su "tierra prometida" donde vivirían en paz, lejos de la tiranía de la **Emperatriz Eterna**. La paz duró más de tres mil años, hasta que ocurrió la **Traición del Padre Nostros** en 10.675 AC, según la cual uno de los descendientes de los **Nueve Reyes** de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como "demonios" y decidió tomar toda la tierra para sí y sus nuevos "seguidores". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como "Infierno", bajo el reinado de Nostros como su "líder supremo". +El **Infierno** es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como **Kur**, un mundo pacífico que los **Anarukon** que abandonaron **Novoskhana** siguiendo a **Noskas Kurenai** buscaban como su "tierra prometida" donde vivirían en paz, lejos de la tiranía de la **Emperatriz Eterna**. La paz duró más de tres mil años, hasta que ocurrió la **Traición del Padre Nostros** en el 10.675 AC, según la cual uno de los descendientes de los **Nueve Reyes** de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como "demonios" y decidió tomar toda la tierra para sí y sus nuevos "seguidores". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como "Infierno", bajo el reinado de Nostros como su "líder supremo". En 149, tras la desaparición del príncipe heredero **Manakei**, quien había sido invocado en la Tierra pero nunca regresó, comenzaron conflictos internos entre los rangos de la realeza del Infierno. Estas luchas por la sucesión al trono, sin embargo, nunca llegaron a escalar mientras Nostros estuviera allí para mantener a los demonios a raya. Hubo muchos intentos de localizar al heredero y traerlo de vuelta, sin éxito. -En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto **Rey Akusei**, los varios archidemonios, generales corruptos de los ejércitos de demonios, tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la **UAC**. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de **Mars City**, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el **Marine de Doom**, pusieron el punto de mira en la Tierra, y entonces comenzó su invasión final. +En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto **Rey Akusei**, los varios **Generales Archidemonios** corruptos tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la **UAC**. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de **Mars City**, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el **Marine de Doom**, pusieron el punto de mira en la Tierra, y entonces comenzó su invasión final. \cxNotas de Saya:\c- \cfOK, lo primero, gracias muchas al abuelete de Ellen-san por toda la info que tenemos de esto. Cytho-sama es como que, nuestro único contacto con el puto sitio ese, y no te vas a creer las cosas que me ha contado.\c- @@ -26,11 +26,11 @@ TXT \cxClasificación:\c- \cf Inframundo\c- -El **Infierno** es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como **Kur**, un mundo pacífico que los **Anarukon** que abandonaron **Novoskhana** siguiendo a **Noskas Kurenai** buscaban como su "tierra prometida" donde vivirían en paz, lejos de la tiranía de la **Emperatriz Eterna**. La paz duró más de tres mil años, hasta que ocurrió la **Traición del Padre Nostros** en 10.675 AC, según la cual uno de los descendientes de los **Nueve Reyes** de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como "demonios" y decidió tomar toda la tierra para sí y sus nuevos "seguidores". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como "Infierno", bajo el reinado de Nostros como su "líder supremo". +El **Infierno** es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como **Kur**, un mundo pacífico que los **Anarukon** que abandonaron **Novoskhana** siguiendo a **Noskas Kurenai** buscaban como su "tierra prometida" donde vivirían en paz, lejos de la tiranía de la **Emperatriz Eterna**. La paz duró más de tres mil años, hasta que ocurrió la **Traición del Padre Nostros** en el 10.675 AC, según la cual uno de los descendientes de los **Nueve Reyes** de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como "demonios" y decidió tomar toda la tierra para sí y sus nuevos "seguidores". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como "Infierno", bajo el reinado de Nostros como su "líder supremo". En 149, tras la desaparición del príncipe heredero **Manakei**, quien había sido invocado en la Tierra pero nunca regresó, comenzaron conflictos internos entre los rangos de la realeza del Infierno. Estas luchas por la sucesión al trono, sin embargo, nunca llegaron a escalar mientras Nostros estuviera allí para mantener a los demonios a raya. Hubo muchos intentos de localizar al heredero y traerlo de vuelta, sin éxito. -En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto **Rey Akusei**, los varios archidemonios, generales corruptos de los ejercitos de demonios, tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la **UAC**. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de **Mars City**, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el **Marine de Doom**, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de **Baramun** el Titan del Este, quien recibió el título de **Icono del Pecado**. +En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto **Rey Akusei**, los varios **Generales Archidemonios** corruptos tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la **UAC**. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de **Mars City**, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el **Marine de Doom**, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de **Baramun** el Titan del Este, quien recibió el título de **Icono del Pecado**. Contra todo pronóstico, la humanidad triunfó, y los invasores fueron derrotados, junto con su líder. A pesar de esta gran derrota, los generales demoníacos organizaron otros varios ataques, usando sus fuerzas restantes, pero fallaron de nuevo. Habiéndose dado cuenta de que la humanidad era mucho más fuerte de lo que habían supuesto, abandonaron su lucha. @@ -48,11 +48,11 @@ TXT \cxClasificación:\c- \cf Inframundo\c- -El **Infierno** es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como **Kur**, un mundo pacífico que los **Anarukon** que abandonaron **Novoskhana** siguiendo a **Noskas Kurenai** buscaban como su "tierra prometida" donde vivirían en paz, lejos de la tiranía de la **Emperatriz Eterna**. La paz duró más de tres mil años, hasta que ocurrió la **Traición del Padre Nostros** en 10.675 AC, según la cual uno de los descendientes de los **Nueve Reyes** de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como "demonios" y decidió tomar toda la tierra para sí y sus nuevos "seguidores". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como "Infierno", bajo el reinado de Nostros como su "líder supremo". +El **Infierno** es un mundo enorme separado del nuestro, pero aún contenido en nuestro universo. En sus inicios, era conocido como **Kur**, un mundo pacífico que los **Anarukon** que abandonaron **Novoskhana** siguiendo a **Noskas Kurenai** buscaban como su "tierra prometida" donde vivirían en paz, lejos de la tiranía de la **Emperatriz Eterna**. La paz duró más de tres mil años, hasta que ocurrió la **Traición del Padre Nostros** en el 10.675 AC, según la cual uno de los descendientes de los **Nueve Reyes** de Kur trajo consigo un ejército casi interminable de criaturas que solo podían ser descritas como "demonios" y decidió tomar toda la tierra para sí y sus nuevos "seguidores". Desde entonces, la tierra de Kur se ha convertido en lo que solo puede ser descrito como "Infierno", bajo el reinado de Nostros como su "líder supremo". En 149, tras la desaparición del príncipe heredero **Manakei**, quien había sido invocado en la Tierra pero nunca regresó, comenzaron conflictos internos entre los rangos de la realeza del Infierno. Estas luchas por la sucesión al trono, sin embargo, nunca llegaron a escalar mientras Nostros estuviera allí para mantener a los demonios a raya. Hubo muchos intentos de localizar al heredero y traerlo de vuelta, sin éxito. -En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto **Rey Akusei**, los varios archidemonios, generales corruptos de los ejercitos de demonios, tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la **UAC**. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de **Mars City**, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el **Marine de Doom**, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de **Baramun** el Titan del Este, quien recibió el título de **Icono del Pecado**. +En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto **Rey Akusei**, los varios **Generales Archidemonios** corruptos tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la **UAC**. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de **Mars City**, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el **Marine de Doom**, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de **Baramun** el Titan del Este, quien recibió el título de **Icono del Pecado**. Contra todo pronóstico, la humanidad triunfó, y los invasores fueron derrotados, junto con su líder. A pesar de esta gran derrota, los generales demoníacos organizaron otros varios ataques, usando sus fuerzas restantes, pero fallaron de nuevo. Habiéndose dado cuenta de que la humanidad era mucho más fuerte de lo que habían supuesto, abandonaron su lucha. Eso es, hasta Agosto de 2160, cuando dos nigromantes demoníacas, las **Hermanas Resurrectoras**, entraron en escena, y revivieron a todos aquellos que habían caído, haciendo que la UAC trajese de vuelta a su "solucionador de problemas", el cual regresó al Infierno, exterminando a los demonios resucitados y eliminando a ambas Hermanas Resurrectoras. Al haber terminado su masacre inicial, envió un último mensaje a la Tierra, jurando que permanecería en el infierno para siempre, para asegurarse de que los demonios nunca jamás intentarían atacar a la humanidad. @@ -80,7 +80,7 @@ El **Infierno** es un mundo enorme separado del nuestro, pero aún contenido en En 149, tras la desaparición del príncipe heredero **Manakei**, quien había sido invocado en la Tierra pero nunca regresó, comenzaron conflictos internos entre los rangos de la realeza del Infierno. Estas luchas por la sucesión al trono, sin embargo, nunca llegaron a escalar mientras Nostros estuviera allí para mantener a los demonios a raya. Hubo muchos intentos de localizar al heredero y traerlo de vuelta, sin éxito. -En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto **Rey Akusei**, los varios archidemonios, generales corruptos de los ejercitos de demonios, tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la **UAC**. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de **Mars City**, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el **Marine de Doom**, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de **Baramun** el Titan del Este, quien recibió el título de **Icono del Pecado**. +En 2145, tras la desaparición repentina del líder supremo del Infierno, dejando solo a su hijo a cargo, el inexperto **Rey Akusei**, los varios **Generales Archidemonios** corruptos tomaron la oportunidad para dar un golpe de estado y derrocar a la familia real principal, forzándolos al exilio. Este evento, desafortunadamente, coincidió con las primeras exploraciones del Infierno de la **UAC**. Aunque curiosos al principio con estas extrañas criaturas que habían aparecido en su mundo, tomaron la decisión de exterminarlas cuando comenzaron a mostrar interés en explotar sus recursos naturales y además mostrar hostilidad al acercarse. Casi lo consiguieron, pero sus planes de mandar una flota completa a nuestro mundo fueron detenidos junto con su invasión inicial de **Mars City**, y no pudieron continuar hasta mucho después, en 2148, cuando consiguieron tomar los teletransportadores de la UAC en Fobos y Deimos, dominando por completo ambas bases lunares e incluso consiguiendo traer una de las lunas a su mundo. Tras el contraataque de un único soldado, el **Marine de Doom**, pusieron el punto de mira en la Tierra, trayendo consigo todas sus legiones, bajo el comando de **Baramun** el Titan del Este, quien recibió el título de **Icono del Pecado**. Contra todo pronóstico, la humanidad triunfó, y los invasores fueron derrotados, junto con su líder. A pesar de esta gran derrota, los generales demoníacos organizaron otros varios ataques, usando sus fuerzas restantes, pero fallaron de nuevo. Habiéndose dado cuenta de que la humanidad era mucho más fuerte de lo que habían supuesto, abandonaron su lucha. Eso es, hasta Agosto de 2160, cuando dos nigromantes demoníacas, las **Hermanas Resurrectoras**, entraron en escena, y revivieron a todos aquellos que habían caído, haciendo que la UAC trajese de vuelta a su "solucionador de problemas", el cual regresó al Infierno, exterminando a los demonios resucitados y eliminando a ambas Hermanas Resurrectoras. Al haber terminado su masacre inicial, envió un último mensaje a la Tierra, jurando que permanecería en el infierno para siempre, para asegurarse de que los demonios nunca jamás intentarían atacar a la humanidad. diff --git a/lore/es/hellblazer.txt b/lore/es/hellblazer.txt index 52cf7d114..63bc8e2aa 100644 --- a/lore/es/hellblazer.txt +++ b/lore/es/hellblazer.txt @@ -7,17 +7,9 @@ TXT \cxClasificación:\c- \cf Lanzador de Minimisiles\c- -El **Hellblazer** es la tercera encarnación del **Cañón de Fuego Infernal**, una de las muchas armas que **Imanaki Corp** había construido basándose en sus experimentos explotando lo que llamaron **Energía Ardiente**, una fuente de poder de las profundidades del mismo **Infierno**. Es una mejora directa del modelo Mark 2, el **Hellrazer**, poseyendo capacidades de fuego en ráfaga y un simple sistema de cargador en barril para facilitar recargas. También posee más tipos de munición esta vez: +El **Hellblazer** es la tercera encarnación del **Cañón de Fuego Infernal**, una de las muchas armas que **Imanaki Corp** había construido basándose en sus experimentos explotando lo que llamaron **Energía Ardiente**, una fuente de poder de las profundidades del mismo **Infierno**. Es una mejora directa del modelo Mark 2, el **Hellrazer**, poseyendo capacidades de fuego en ráfaga y un simple sistema de cargador en barril para facilitar recargas. Como munición, emplea granadas de 25mm "Blazer", altamente explosivas a pesar de su diminuto tamaño, debido a los materiales que contiene. -\cfGranadas "Blazer":\c- La munición estándar. Altamente explosivas a pesar de su diminuto tamaño, gracias a la Energía Ardiente superconcentrada que contienen. - -\cfGranadas en clúster "Crackshot":\c- Éstas explotan en granadas más pequeñas que se dispersan en el impacto, rebotando durante un tiempo antes de detonar. - -\cfGranadas incendiarias "Ravager":\c- Las Ravagers liberan una onda de Energía Ardiente sin refinar cuando detonan, cubriendo una zona amplia a su alrededor. Muy útiles en espacios cerrados, donde su plasma abrasador no se disipará tan fácilmente, tostando a conciencia todos los objetivos encontrados. Por razones de seguridad este tipo de munición no se puede usar en ráfaga. - -\cfCabezas nucleares "Slayer":\c- Un favorito de la anterior serie. Estas bombas nucleares en miniatura contienen en su interior Energía Ardiente altamente enriquecida que causará una devastación total en un radio masivo, causando la muerte segura de incluso los demonios de mayor rango en los ejércitos del Infierno. Tampoco pueden usarse en ráfaga. - -El Hellblazer fue descontinuado tras la destrucción de las oficinas de Imanaki Corp en 2009, pero el **Instituto Tecnológico Tach-Engine** ha conseguido reproducir el arma tras su caída. Sin embargo, los modelos replicados no emplean esta "Energía Ardiente", así que no son tan destructivos como debían ser. En su lugar, usan el altamente volátil **Nokron**, uno de los dos elementos exóticos empleados en el proceso de Microfusión, ya que su potencial para el uso en explosivos es bastante notable. +El Hellblazer fue descontinuado tras la destrucción de las oficinas de Imanaki Corp en 2009, pero el **Instituto Tecnológico Tach-Engine** ha conseguido reproducir el arma tras su caída. Sin embargo, los modelos replicados no emplean esta "Energía Ardiente", así que no son tan destructivos como debían ser. En su lugar, usan el altamente volátil **Sydon**, uno de los elementos exóticos empleados en la creación de Ardiente, ya que su potencial para el uso en explosivos es bastante notable. A diferencia de su predecesor, el cual se basaba en simple detección de proximidad, este modelo en su lugar puede comunicarse con matrices de objetivos para proveer de una búsqueda selectiva de objetivos de mayor precisión. @@ -25,13 +17,13 @@ A diferencia de su predecesor, el cual se basaba en simple detección de proximi \cfFuego Secundario:\c- Lanza la munición cargada sin armar, como una granada. Pulsa para disparar una granada, mantén para precargar 2 granadas adicionales (el fuego primario cancela este proceso). La búsqueda de objetivos también afecta a las granadas, ya que intentarán guiarse hacia el objetivo con cada rebote. -\cfFuego Terciario:\c- Alterna entre las municiones a usar en la próxima recarga. +\cfFuego Terciario:\c- No hace nada a menos que el arma esté bloqueada para el tiro (ver arriba). -\cfRecarga:\c- Durante una recarga, puedes o bien rellenar el cargador actual (fácil a través del contenedor de **Hammerspace™**), o cambiarlo por otro tipo de munición. +\cfRecarga:\c- Rellena el cargador actual, bastante fácil a través del contenedor de **Hammerspace™**. \cfTécnicas:\c- Las granadas detonan automáticamente en proximidad a objetivos hostiles, así que todavía puedes alcanzar ese disparo aunque solo los hayas rozado. No está muy claro como detectan los objetivos, o como saben que son hostiles. \cxNotas de Saya:\c- \cf¿"Energía Ardiente"? ¿Coño es eso? ¿Energía que le sacan del ano a un demonio después de atiborrarse a curry? Más me da, cualquier cosa salida del Infierno es mejor no tocarla, sabes. Tú mira lo que le pasó a la puta UAC, metiendo las pezuñas donde no los llaman.\c- -\cfAhora que lo miro, lo de que las réplicas usen Nokron fue una buena idea. No sabía yo que esa cosa explotara. Realmente da que pensar sobre todos esos mecanismos de seguridad que tienen los motores de Microfusión, definitivamente justificados si ESO puede pasar.\c- +\cfAhora que lo miro, lo de que las réplicas usen Sydon fue una buena idea. Esa cosa se puede encontrar naturalmente en un montón de exoplanetas así que es fácil de conseguir. Por cierto, ¿sabías que los Nukuri lo usan como tinte para el pelo? Bueno, usan un isótopo no reactivo, pero aun así...\c- diff --git a/lore/es/hermann.txt b/lore/es/hermann.txt new file mode 100644 index 000000000..5560dac8c --- /dev/null +++ b/lore/es/hermann.txt @@ -0,0 +1,27 @@ +TXT + \cxNombre Completo:\c- + \cf Hermann Edward Ischer\c- + \cxNacionalidad:\c- + \cf Alemana-Americana\c- + \cxFecha de Nacimiento:\c- + \cf 2079-09-17\c- + \cxOcupación:\c- + \cf CEO (Blackmann Arms)\c- + \cxTwitter:\c- + \cf @ischerman\c- + + +Nacido en **Colonia, Alemania** en 2079 como el mayor de dos hermanos, **Hermann** fue elegido por su padre para liderar la empresa familiar tras su jubilación, lo cual decepcionó a su más competente hermana menor. + +Conocido por su carisma radiante, el hombre es muy popular en la red, y logró su fama de una de las formas posiblemente más peculiares: Dejándose crecer las cejas lo más largas posibles. En el momento de escribir este artículo, aun mantiene el récord mundial. + +Como amante de las finas armas, su objetivo principal encabezando **Blackmann Arms** sería una mayor expansión de armería de alto calibre, especialmente dada la popularidad mundial del icónico cartucho **.50 OMG** de su abuelo. Durante el periodo de posguerra tras la **Cicatriz Blanca**, las armas potentes para defender el territorio estaban en alta demanda, y así fue que se inició la carrera de los **búms grandes**, en la cual participó con la primera encarnación de la serie **Silver Bullet** de rifles, y el cartucho **.850 BIG**. El resto es historia, pero sobra añadir que ganó esa carrera. + +De Hermann también se sabe su satisfacción personal por maximizar la velocidad de armas automáticas, con resultados mixtos, y de alguna forma consiguiendo que los tan inmiscuidos grupos de regulación de armas hagan la vista gorda. Algunos dirían que el armamento con tales "hilarantemente rotas" velocidades de disparo era simplemente demasiado ridículo para tomarse en serio, y que no hacía falta ninguna regulación ya que nadie en su sano juicio se atrevería a emplear algo así en el campo de batalla. + +En lo que respecta a su vida personal, está felizmente casado con la celebridad de internet **Jonathan Alfredo Bortson Borges III**, y a veces toma parte como invitado en los directos de su marido. + +\cxNotas de Saya:\c- +\cfEl mismísimo hombre con cara de bebé y cejas enormes. En lo que respecta a Americanos, me cae bastante bien realmente, y me gusta pasar el rato con él a pesar de la vergüenza ajena que me da en cuanto a cultura Japonesa se refiere.\c- + +\cfEl novio es... ... Bueno, algo especial. No habla, aparte de soltar algún que otro quejido y murmullo de vez en cuando, pero desde luego es elocuente de cojones en forma textual. A ver, mira, no soy quien para juzgar, pero su obsesión con ese personaje de anime... Se pasa un poco. Aunque el cosplay está decente.\c- diff --git a/lore/es/ibuki.txt b/lore/es/ibuki.txt index 8759d34c0..0ee6b5867 100644 --- a/lore/es/ibuki.txt +++ b/lore/es/ibuki.txt @@ -7,26 +7,25 @@ TXT \cxFecha de Nacimiento:\c- \cf 2074-09-09\c- \cxOcupación:\c- - \cf Mercenaria, Modelo de Desnudos, Vlogger\c- + \cf Mercenaria, Modelo, Vlogger\c- \cxTwitter\c- - \cf @lewd_ibuki (principal)\c- - \cf @ibuki_tiddy (fotos)\c- + \cf @red_oni_74\c- **Ibuki** es el resultado del programa de supersoldado **Oni Rojo**, ideado por **Saya Miyamoto** de **Akari Labs**. La existencia de este proyecto se mantuvo en secreto hasta su revelación pública en Junio de 2077. Hubo considerable controversia alrededor del programa Oni Rojo, incluyendo la implicación personal de Saya en él, habiendo aceptado un pago de 40 mil millones de dólares a cambio (lo cual se descubrió tener relación con la anterior venta del estado de Texas a México semanas antes). A pesar de su claro potencial y extraordinarias habilidades de combate, fue enviada demasiado tarde, ya que solo momentos después, la **Cicatriz Blanca** ocurrió, y con ella, la devastación total de los **Estados Unidos**. -Muchos años después del incidente, Ibuki fue recuperada con éxito del incendiado yermo, habiendo pasado la mayor parte del tiempo como una especie de "mercenaria ambulante". Regresó a Japón en Junio de 2091, y una vez instalada, pasó por varios pequeños empleos hasta encontrar su verdadera vocación como modelo de desnudos. +Muchos años después del incidente, Ibuki fue recuperada con éxito del incendiado yermo, habiendo pasado la mayor parte del tiempo como una especie de "mercenaria ambulante". Regresó a Japón en Junio de 2091, y una vez instalada, pasó por varios pequeños empleos hasta encontrar su verdadera vocación como modelo. Otros hobbies incluyen el vlogging (sobre varios temas), junto con algún que otro trabajo independiente como mercenaria. -Al haber sido creada desde el ADN de Saya, ha efectivamente heredado la inmortalidad total de la familia Miyamoto, es más, también ha recibido varias mejoras por encima las cuales han aumentado su fuerza y reflejos, junto con hacer que su piel sea a prueba de balas. Saya ha comentado que esto último significa que no necesita llevar ropa. +Al haber sido creada desde el ADN de Saya, ha efectivamente heredado la inmortalidad total de la familia Miyamoto, es más, también ha recibido varias mejoras por encima las cuales han aumentado su fuerza y reflejos, junto con hacer que su piel sea a prueba de balas. Se ha demostrado incluso que es capaz de sobrevivir un ataque orbital. -Citando adicionalmente las "interesantes" decisiones de Saya, está el hecho de sus particulares rasgos físicos aparte de su fuerza, incluyendo su obviamente obsceno tamaño de busto, que muchos consideran poco práctico, totalmente en desacuerdo con Saya. Al preguntarle por más detalles, comenzó una extensa diatriba en Twitter centrada sobre "waifus". +Citando adicionalmente las "interesantes" decisiones de Saya, está el hecho de sus particulares rasgos físicos aparte de su fuerza, ya que a pesar de ser su clon, las dos casi ni se parecen entre sí. Al preguntarle por más detalles, Saya se negó a responder. + +Aunque Ibuki es legalmente parte de la familia Miyamoto, optó por vivir por su cuenta. Comparte una casa con otras dos amigas mercenarias, junto con otras personas que se unieron posteriormente. Algunas de sus amigas cercanas son personajes de renombre, como la desarrolladora de videojuegos **Kris Danae**, o la guerrera-bruja demi-Anarukon **Marisa Azanth**. \cxNotas de Saya:\c- -\cfOK vale sí, me encantan los pechotes. Pero ¿por que todo dios tiene que soltarme mierda por eso? ¿Acaso hay ALGO malo en eso, eh? Ya, eso pensaba.\c- +\cfEsos Americanos idiotas se me acercan con una barbaridad de pasta y me dicen que les haga un supersoldado. Sí, supongo que estuvieron espiando todo el rollo ese que posteé sobre bioingeniería y tal. Madre, si es que estaban desesperados, pues sí... Era realmente patético.\c- -\cfVale, Ibuki fue como, mi mayor hornypost en la vida. No me pude aguantar, sabes. Putos... Americanos idiotas que se me acercan con una barbaridad de pasta y me dicen que les haga un supersoldado. Sí, supongo que estuvieron espiando todo el rollo ese que posteé sobre bioingeniería y tal. Madre, si es que estaban desesperados, pues sí... Era realmente patético. PERO, tuve una idea justo entonces. A ver... es que estaba thirsty a más no poder, y pensé... ¿y si.. me hiciera una superfuerte novia tetuda, justo ahí?\c- +\cfY ahora, es hora de que confiese... Dada la oportunidad de crear una copia de mi misma, y de poder mejorarla, acabé realizando mis fantasías. ¿Y si fuera más alta? ¿Y más guapa? ... Pensándolo ahora, fue algo muy estúpido por mi parte, supongo. Pero ahí está, una versión mía que es una novia gótica superfuerte.\c- -\cfY bueno... eso es justo lo que pasó. Pasé tres años con todo eso, criándola en ese tubo. Era mi primera vez haciendo algo así, pero tuve suerte y todo salió de puta madre. Aunque... cuando empezaron a notar lo de la "anormalidad en el desarrollo de los pechos del sujeto" me puse nerviosa. ¿Y si lo mandaban todo a la mierda? Acabé admitiendo que era intencionado, soltando no se qué mierda que se me pasó por la cabeza, algo de "tácticas de distracción" o así, ya ni me acuerdo. Al final lo dejaron pasar.\c- +\cfPasé tres años con todo eso, criándola en ese tubo. Era mi primera vez haciendo algo así, pero tuve suerte y todo salió de puta madre. Aunque... cuando empezaron a notar lo de la "anormalidad en el desarrollo de los pechos del sujeto" me puse nerviosa. ¿Y si lo mandaban todo a la mierda? Acabé admitiendo que era intencionado, soltando no se qué mierda que se me pasó por la cabeza, algo de "tácticas de distracción" o así, ya ni me acuerdo. Al final lo dejaron pasar.\c- -\cfOh ya, ¿sabias? Técnicamente, Ibuki es mi clon. Sí, puede que haya habido algún que otro cambio, pero si mi desarrollo no se hubiera parado así porque sí, quien sabe, a lo mejor me habría visto así de sexy algún día. Desde luego da que pensar, vaya...\c- - -\cfSí, también me he dado cuenta de que eso significa que en teoría lo estoy haciendo conmigo misma. ¿Y? ¿Acaso es eso un problema también?\c- +\cfA pesar de todo, incluso después de haberle confesado que la creé así a propósito, incluso después de todo lo de la guerra, me quiere y me da gracias por estar viva. En serio, es demasiado buena conmigo...\c- diff --git a/lore/es/imanaki.txt b/lore/es/imanaki.txt index 000d658ca..86305a7ce 100644 --- a/lore/es/imanaki.txt +++ b/lore/es/imanaki.txt @@ -16,7 +16,7 @@ El último ghoul que encontraron probó ser mucho más duro que el resto, llevá Ese hombre no era otro sino el **Príncipe Anthon Anderken**, uno de los miembros más importantes de la realeza **Anarukon**, quien, por pura casualidad, había llegado a la Tierra para capturar a ese ghoul específicamente, por razones no determinadas, justo en el momento exacto en que comenzó la caza. Tras recibir los disparos, el ghoul se enfureció, y empleó sus últimas fuerzas para envolver todo en fuego infernal. La fuerza de esta explosión de fuego cegador pudo oírse por todo el mundo. Ningún soldado sobrevivió, siendo todo el bosque reducido a cenizas en un instante. Se desconoce lo que ocurrió con Anthon y el ghoul, pero la mayoría asume que ambos sobrevivieron. -Tras este espectacular incidente, Imanki Corp resumió sus operaciones, ahora libre de la amenaza de los ghouls, aunque se enfrentaron a muchas críticas de los lugareños por su decisión de destruir lo que consideraban un "tesoro nacional". Esta paz relativa no duró mucho, ya que las consecuencias del ataque a Anthon finalmente los alcanzarían. En Diciembre de 2009, antes de otra expedición rutinaria al Infierno, sus portales fueron redirigidos por un atacante no identificado, y de ellos salió un enjambre de soldados Anarukon, aniquilando a todo aquel que encontraran en las instalaciones y sus alrededores. Las oficinas de Imanaki Corp fueron destruidas completamente, y las fuerzas Anarukon permanecieron en el pueblo durante días, hasta regresar a su mundo una vez satisfechos con la destrucción que habían causado como venganza. +Tras este espectacular incidente, Imanaki Corp resumió sus operaciones, ahora libre de la amenaza de los ghouls, aunque se enfrentaron a muchas críticas de los lugareños por su decisión de destruir lo que consideraban un "tesoro nacional". Esta paz relativa no duró mucho, ya que las consecuencias del ataque a Anthon finalmente los alcanzarían. En Diciembre de 2009, antes de otra expedición rutinaria al Infierno, sus portales fueron redirigidos por un atacante no identificado, y de ellos salió un enjambre de soldados Anarukon, aniquilando a todo aquel que encontraran en las instalaciones y sus alrededores. Las oficinas de Imanaki Corp fueron destruidas completamente, y las fuerzas Anarukon permanecieron en el pueblo durante días, hasta regresar a su mundo una vez satisfechos con la destrucción que habían causado como venganza. Un tiempo después de estos eventos, un pequeño equipo de reconocimiento consiguió recuperar algunos de los materiales de investigación y otros documentos de entre los escombros, los cuales caerían después en las manos de la **UAC**. diff --git a/lore/es/imanakit.txt b/lore/es/imanakit.txt index f484ac8eb..d91447746 100644 --- a/lore/es/imanakit.txt +++ b/lore/es/imanakit.txt @@ -1,16 +1,21 @@ TXT -\cxNombre Completo:\c- -\cf Tetsuya Imanaki\c- -\cxNacionalidad:\c- -\cf Indeterminado\c- -\cxFecha de Nacimiento:\c- -\cf Indeterminado\c- -\cxOcupación:\c- -\cf CEO (Imanaki Corp)\c- + \cxNombre Completo:\c- + \cf Tetsuya Imanaki\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1983-01-01\c- + \cxOcupación:\c- + \cf CEO (Imanaki Corp)\c- -El fundador y CEO de **Imanaki Corp**, y también el único miembro restante de la familia Imanaki tras los **Asesinatos de la Mansión Onoke** de 2003. **Tetsuya** siempre ha mantenido mucho secretismo acerca de sí mismo, así que no se sabe nada realmente de su vida personal o historia, ni su apariencia física. -Durante los eventos de la **Caza de Ghouls**, y más tarde el **Incidente Hellbound**, una vez más evitó la muerte gracias a su ausencia de las instalaciones de Imanaki Corp. Sin embargo, nadie sabe donde se encontraba realmente, y desde entonces ha desaparecido por completo. + + +El fundador y CEO de **Imanaki Corp**, y también el único miembro restante de la familia Imanaki tras los **Asesinatos de la Mansión Onoke** de 2003. **Tetsuya** siempre ha mantenido mucho secretismo acerca de sí mismo, así que no se sabe nada realmente de su vida personal. + +Durante los eventos de la **Caza de Ghouls**, y más tarde el **Incidente Hellbound**, una vez más evitó la muerte gracias a su ausencia de las instalaciones de Imanaki Corp. Sin embargo, nadie sabe donde se encontraba realmente, y desde entonces ha desaparecido por completo. Algunos especulan que, dado que es el último de los Imanaki, esto es para evitar ser localizado por los miembros del **Clan de los Yanasha**, rivales de la familia desde hace siglos. \cxNotas de Saya:\c- \cfUn artículo corto, lo sé. En serio que no hay nada acerca de este tío. Es como si... nunca hubiera dejado ni un solo rastro aparte de... el hecho de que existió y estaba a cargo de todo eso.\c- + +\cfA ver, está la foto esa, pero tampoco está claro si es él. Aun así no puedo negar que es bastante guapo...\c- diff --git a/lore/es/itamexhammer.txt b/lore/es/itamexhammer.txt index 6a0d95def..a0208cf13 100644 --- a/lore/es/itamexhammer.txt +++ b/lore/es/itamexhammer.txt @@ -12,14 +12,16 @@ Duro, fiable, y con una gran fuerza de impacto, el **Martillo de Combate Reforza El Martillo de Combate Reforzado es principalmente usado para desmantelar rápidamente barricadas o destruir barreras reforzadas, pero muchos han recurrido a usos más creativos, tales como la destrucción de vehículos blindados, o trabajos de demolición improvisados en edificios enteros. Se ha de notar también que en un combate real puede ser bastante letal (y sangriento) contra objetivos sin blindaje. -\cfFuego Primario:\c- Golpes rápidos, de lado a lado. Bueno para cargar a través de hordas enemigas. +\cfFuego Primario:\c- Golpes rápidos. Bueno para cargar a través de hordas enemigas. -\cfFuego Secundario:\c- Mantén para preparar un golpe vertical, suelta para dejar caer el martillo sobre cualquier pobre insensato que se te ponga delante. Cuanto más lo mantengas, más fuerte será el golpe. +\cfFuego Secundario:\c- Mantén para levantar el martillo sobre tu cabeza, suelta para dejarlo caer sobre cualquier pobre insensato que se te ponga delante. Cuanto más lo mantengas, más fuerte será el golpe. Este ataque puede potencialmente echar abajo puertas, entre otras cosas. -\cfFuego Terciario\c- Mantén para preparar un largo golpe vertical, suelta para ejecutar un potente ataque giratorio, destrozando todo a tu alrededor. Las pulsaciones consecutivas del fuego terciario mientras giras harán que se mantenga el movimiento durante más tiempo. Siendo un robot de combate, deberías estar libre de cualquier mareo por el movimiento que un humano típicamente desarrollaría haciendo algo así. +\cfFuego Terciario\c- Ejecuta un potente ataque giratorio, destrozando todo a tu alrededor. Las pulsaciones consecutivas del fuego terciario mientras giras harán que se mantenga el movimiento durante más tiempo. Siendo un robot de combate, deberías estar libre de cualquier mareo por el movimiento que un humano típicamente desarrollaría haciendo algo así. Sin embargo, no podrás controlar a donde te lleva este movimiento giratorio. \cfRecarga:\c- Es un martillo. No hay nada que recargar, ve y aplasta cráneos. +\cfTécnicas:\c- Al ser puramente un arma de combate a melé, el martillo puede beneficiarse directamente de los efectos del **Ragekit**, multiplicando su potencial de daño por ocho. + \cxNotas de Saya:\c- \cfEsta mierda es fuerte Y buena. Perfecto para una Demolicionista como tú, juju. ¿Y sabes que es bueno también? Se puede hacer aun MÁS poderoso en cuanto te metas un Ragekit. Te harás IMPARABLE.\c- diff --git a/lore/es/jojo.txt b/lore/es/jojo.txt new file mode 100644 index 000000000..c251d7d3f --- /dev/null +++ b/lore/es/jojo.txt @@ -0,0 +1,29 @@ +TXT + \cxNombre Completo:\c- + \cf Joanna Josephson IV\c- + \cxNacionalidad:\c- + \cf Australiana\c- + \cxFecha de Nacimiento:\c- + \cf 2107-08-24\c- + \cxOcupación:\c- + \cf Presidenta (Symnatek)\c- + \cf Jefa de Ingeniería (Itamex)\c- + + + +Nacida en California en 2107, **Joanna** es la cuarta heredera del linaje **Josephson**, y la actual líder del conglomerado **Industrias Aliadas (Symnaki Tekkanosei)**, el mayor y más poderoso titán de la industria del territorio **Australiano**. + +Ensombreciendo a todos a su alrededor con sus 2.10m de altura, su imponente presencia ha asegurado que nadie se atreva a desafiar el reinado absoluto de su compañía en su territorio natal. Sin embargo, a pesar de esto se sabe que tiene buen trato con la CEO de la competidora **Mixom**, **Kasumi Tanaka**. + +Aunque encabeza la compañía principal, está mucho más involucrada en el tema de fábrica de armas de la subsidiaria **Itamex**, tanto en lo que se refiere a ingeniería y pruebas, como a la promoción de sus productos. + +Joanna ha logrado cierta fama debido a sus proezas de fuerza física, incluyendo un escalofriante encuentro con un oso gris salvaje el cual resultó ser mucho más escalofriante para el propio animal. En una entrevista, bromeó diciendo que el oso **"va a necesitar un fisioterapeuta"**. + +\cxNotas de Saya:\c- +\cfEsta tía ha logrado por su propia cuenta mantener a flote a todos los artistas de tías musculosas durante años, y es bastante comprensible. Es enorme, está mazadísima como un puto camión, y casi me meo encima cuando la conocí por primera vez.\c- + +\cf...\c- + +\cfPor favor olvida eso último que dije.c- + +\cf¿Que? ¿Como que el sistema de dictado no entiende eso?\c- diff --git a/lore/es/kereshnovka.txt b/lore/es/kereshnovka.txt index 5ccc19db6..2b4750d97 100644 --- a/lore/es/kereshnovka.txt +++ b/lore/es/kereshnovka.txt @@ -7,7 +7,7 @@ TXT \cxLocalización:\c- \cf Siberia\c- -**Kereshnovka** es una pequeña región localizada en alguna parte del centro-norte de Siberia. No es posible tener una localización más exacta, ya que parece existir en una especie de burbuja de espacio aislada que desafía las leyes del espacio-tiempo. La región hospeda al pueblo que lleva su nombre, Kereshnovka, el cual está habitado casi exclusivamente por miembros de la raza **Qurensniv** los cuales, en el 130 AC, habían huído de su planeta natal, escapando de la persecución del malvado rey dictador **Marc P. Karnanaiahmani**, en aquel entonces líder de todo el planeta de **Karnanaiahma**, en el vecino **Sistema Xathar**. Desde su fundación, **Reubens C. Karnanaiahmani**, segundo hijo de dicho rey y organizador de este éxodo masivo, ha actuado como alcalde del pueblo. +**Kereshnovka** es una pequeña región localizada en alguna parte del centro-norte de Siberia. No es posible tener una localización más exacta, ya que parece existir en una especie de burbuja de espacio aislada que desafía las leyes del espacio-tiempo. La región hospeda al pueblo que lleva su nombre, Kereshnovka, el cual está habitado casi exclusivamente por miembros de la raza **Qurensniv** los cuales, en el 130 AC, habían huido de su planeta natal, escapando de la persecución del malvado rey dictador **Marc P. Karnanaiahmani**, en aquel entonces líder de todo el planeta de **Karnanaiahma**, en el vecino **Sistema Xathar**. Desde su fundación, **Reubens C. Karnanaiahmani**, segundo hijo de dicho rey y organizador de este éxodo masivo, ha actuado como alcalde del pueblo. El pueblo de Kereshnovka está rodeado de varios puntos de referencia fuera de lugar que dificultan la tarea de deducir su localización exacta. Está delimitado por el mar al norte, y el terreno más cercano es la pequeña isla de Kopo ("medianoche" en Qurensniv). Extendiéndose por el este y sur, se encuentra el gran bosque de Nuskar, el cual está fuera de límite a los extranjeros debido a los "ghouls" que lo habitan y atacan a aquellos que no sean nativos a la región. Al oeste, más allá de una gran zona montañosa, está la aldea Bakie, un pequeño asentamiento rural, y al sur/suroeste, el árido desierto Yakendere. @@ -21,7 +21,7 @@ Otros eventos, en orden cronológico, incluyen: \cfLos Asesinatos de la Mansión Onoke (2003):\c- Un gran incendio ocurre en la **Mansión Onoke**, donde las familias **Onoke** e **Imanaki** estaban actualmente reunidas para celebrar la unión de dos de sus miembros. Se encontró a todos asesinados brutalmente, en una extraña manera ritualista. El único superviviente de este incidente fue **Tetsuya Imanaki**, quien decidió no haber acudido citando razones de trabajo importantes. -\cfLa Caza de Ghouls (2007):\c- Tras el asesinato de un miembro de alto rango de la **UAAF** por parte de uno de los ghouls locales, a partir de una visita de negocios a las oficinas de **Imanaki Corp**, una caza comenzó inmediatamente contra las criaturas, a pesar de las quejas locales de "destruír tesoros nacionales". Esta caza duró dos años, y culminó en la reaparición del demonio que había causado el gran incendio de 149, quien, esta vez, prendió todo el bosque de Nuskar tras ser rodeado por soldados de la UAAF. Siguiendo esto, todos los ghouls desparecieron, junto con el mismo demonio. +\cfLa Caza de Ghouls (2007):\c- Tras el asesinato de un miembro de alto rango de la **UAAF** por parte de uno de los ghouls locales, a partir de una visita de negocios a las oficinas de **Imanaki Corp**, una caza comenzó inmediatamente contra las criaturas, a pesar de las quejas locales de "destruir tesoros nacionales". Esta caza duró dos años, y culminó en la reaparición del demonio que había causado el gran incendio de 149, quien, esta vez, prendió todo el bosque de Nuskar tras ser rodeado por soldados de la UAAF. Siguiendo esto, todos los ghouls desparecieron, junto con el mismo demonio. \cfEl Incidente Hellbound (2009):\c- Durante un experimento de teletransporte rutinario en Imanaki Corp, sus sistemas fueron hackeados por un atacante desconocido, lo que alteró el destino de sus portales. Siguiendo esto, un ejército de soldados **Anarukon** comenzaron su masacre por toda la instalación, eliminando a todos los empleados de Imanaki junto con los soldados de la UAAF a cargo de la defensa. Después, el edificio entero fue destruido, y los guerreros permanecieron allí durante varios días, atacando a cualquiera que se acercase, hasta que el alcalde **Reubens C. Karnanaiahmani** consiguió contactar con su líder y pedir que se marchen, ya que "ya se ha derramado suficiente sangre humana". diff --git a/lore/es/keychain.txt b/lore/es/keychain.txt index 5f3966537..aa8c5e203 100644 --- a/lore/es/keychain.txt +++ b/lore/es/keychain.txt @@ -15,16 +15,8 @@ Ten en cuenta que este llavero físico que tienes en tu persona es independiente \cxNotas de Saya:\c- \cfAh, sí, puse algunas cosas cuquis ahí que puede que te gusten. Pues, está la del emoji de bomba, porque a ver, te gusta hacer explotar cosas, ¿no? La elección era obvia, desde luego.\c- -\cfLuego está la chorrada esa que te hizo tanta gracia, la medalla esa de "butt bots gonna bot", je. Ni pajolera idea de de qué va todo esto, o de quien es la tal "Nekohaku" y de porqué es un "demonio anal". Debe de ser algún chiste de alguna comunidad supongo...\c- +\cfLuego está la chorrada esa que te hizo tanta gracia, la medalla esa de "butt bots gonna bot", je. Ni pajolera idea de de qué va todo esto, debe de ser algún chiste obscuro de algún lado...\c- \cfPor supuesto, también hay un careto chibi de mí. Piensa como que es una forma de que esté siempre contigo, no importa donde vayas, jejeje.\c- -\cfY CLARO, muy mucho importante, oh sí. No creas que me he olvidado de eso, lo tengo grabadísimo en la mente. Sí, lo que pasó en nuestro directo. Si es que eres la robotita mas dulce y más mejor, Demo-chan. Venga, conmigo, alto y claro:\c- - - \c[TransBlue]██████████████████████\c- - \c[TransPink]██████████████████████\c- - \cj██████████████████████\c- - \c[TransPink]██████████████████████\c- - \c[TransBlue]██████████████████████\c- - -\cfTRANS RIGHTS! FUCK YEAH!\c- +\cfY CLARO, muy mucho importante, oh sí. No creas que me he olvidado de eso. Hace que ciertos tipos de gentuza se sientan jodidamente escocidos, y espero que tengan la imagen de ESA BANDERA grabada a cada momento mientras salvas el mundo. Si es que se pondrían del lado de los demonios si no fuera porque resulta que también son progres en cuanto a libertad sexual.\c- diff --git a/lore/es/kirin.txt b/lore/es/kirin.txt index 8efc16738..988a5deea 100644 --- a/lore/es/kirin.txt +++ b/lore/es/kirin.txt @@ -2,7 +2,7 @@ TXT \cxNombre Completo:\c- \cf Kirin Xanai\c- \cxTítulo:\c- - \cf Emperador Infantil del Imperio Sykhai de Akkou\c- + \cf Emperador Sykhai de Akkou\c- \cxNacionalidad:\c- \cf Akkouxhei\c- \cxFecha de Nacimiento:\c- @@ -16,20 +16,20 @@ Nacido en 2080, hijo de **Syrakha Yanikov** y **Azya Xanai**, **Kirin** se convi A pesar de tener el título de "Emperador", realmente no tiene ningún poder sobre la gente de Akkou, y en su lugar actúa más como un consejero político y económico. De hecho, el **Imperio Sykhai** en sí tampoco puede ser descrito como un imperio. Muchos lo describirían más bien como algo parecido a una colección de comunas anarquistas que otra cosa, a diferencia del verdadero, tiránico **Imperio de Novoskhana** del que se separaron. -Durante casi 80 años como líder de Akkou, Kirin ha permanecido soltero, ya que nadie se atrevía a acercarse a él con el propósito de casarse, debido a que se le veneraba como un icono de "pureza inmaculada", en parte debido a que su nombre, Kirin, significa "inocencia" en el idioma **Anarukon**. No fue hasta un encuentro inesperado con **Saya Miyamoto** en 2171 que esto finalmente cambió. Tras un mes bastante ocupado, durante el cual el joven emperador adicionalmente conoció a las otras parejas de Saya, surgió el amor, eventualmente culminando en un casamiento colectivo (\cg♥\c-) el 8 de Mayo de 2171, con su unión marcando el inicio de una gran alianza entre la humanidad y los Anarukon, adicionalmente ayudando a curar las viejas heridas del **Incidente Hellbound**, ya que esta alianza se extendió también al **Reino Kurenai**, a través de la amistad compartida con la **Reina Andreki Anderken**. +Durante décadas como líder de Akkou, Kirin ha permanecido soltero, ya que nadie se atrevía a acercarse a él con el propósito de casarse, debido a que se le veneraba como un icono de "pureza inmaculada", en parte debido a que su nombre, Kirin, significa "inocencia" en el idioma **Anarukon**. No fue hasta un encuentro inesperado con **Saya Miyamoto** en 2171 que esto finalmente cambió. Tras un mes bastante ocupado, durante el cual el joven emperador adicionalmente conoció a las otras parejas de Saya, surgió el amor, eventualmente culminando en un casamiento colectivo (\cg♥\c-) el 8 de Mayo de 2171, con su unión marcando el inicio de una gran alianza entre la humanidad y los Anarukon, adicionalmente ayudando a curar las viejas heridas del **Incidente Hellbound**, ya que esta alianza se extendió también al **Reino Kurenai**, a través de la amistad compartida con la **Reina Andreki Anderken**. Fuera de su matrimonio, Kirin también mantiene una relación estrecha con **Alakir de Kanaiarkar**, cónsul de una nación vecina a quien ha ayudado en el pasado. Kirin en persona puede ser descrito como un líder bastante "pragmático". Siendo muy cercano a la gente de Akkou, y aficionado a entablar amistades. Es también absolutamente adorable. Cuando no está ocupado con sus deberes como consejero de la gente, Kirin se dedica a muchos de sus hobbies, tales como la pintura (teniendo una gran habilidad como retratista, por ejemplo), o la práctica de la magia junto a su madre. También tiene cierta afición a los videojuegos, anime, y otras formas de entretenimiento moderno, y suele ser visto hablando de forma extensa en redes sociales sobre el tema, felizmente introduciendo a la gente de la Tierra a los juegos y series populares de su mundo natal. \cxNotas de Saya:\c- \cg♥\c- \ca¡¡¡¡¡¡KIRIN-KUN!!!!!! ¡¡¡¡¡¡ERES UNA MONADA!!!!!! ¡¡¡¡TE QUIERO!!!!\c- \cg♥\c- -\cfAhhhhh, Demo-chan, ¿no es el mejor novio del mundo? Es que me hace tan feliz, y es tan bueno que... sí~\c- \cg♥\c- +\cfAhhhhh, Demo-chan, ¿no es el mejor marido del mundo? Es que me hace tan feliz, y es tan bueno que... Sí~\c- \cg♥\c- -\cfEn serio, que nunca... NUNCA NUNCA pensé que esto podría pasar. Que yo... que todas nosotras... nos pilláramos a nuestro propia monada inmortal. Es como un sueño hecho realidad, sabes...\c- +\cfEn serio, que nunca... NUNCA NUNCA pensé que esto podría pasar. Que yo... Que todas nosotras... Nos pilláramos a nuestro propia monada inmortal. Es como un sueño hecho realidad, sabes...\c- -\cfNo puedo dejar de pensar en él cuando no está aquí... o joder, incluso cuando SÍ está aquí (adivina). Kirin-kun es que es tan... nggghh... Voy a darle un abrazo ahora mismo.\c- +\cfNo puedo dejar de pensar en él cuando no está aquí... O incluso cuando SÍ está aquí (adivina). Kirin-kun es que es tan... Nggghh... Voy a darle un abrazo ahora mismo.\c- -\cfOh por cierto, dice hola. Le dije que esto no es un chat pero bueno en fin, hola de parte de nuestro monísimo marido. Espera, a ver... voy a dejar que escriba un poco por aquí, por qué no.\c- +\cfOh por cierto, dice hola. Le dije que esto no es un chat pero bueno en fin, hola de parte de nuestro monísimo marido. Espera, a ver... Voy a dejar que escriba un poco por aquí, por qué no.\c- \cgNotas de Kirin:\c- \caSaludos, Demo-chan. Espero que te encuentres bien en estas aventuras. Desearía poder estar presente en la transmisión en directo que Sayacchi hace de esto, pero actualmente me encuentro un poco ocupado conghfghfdgsddfh\c- @@ -41,6 +41,6 @@ Kirin en persona puede ser descrito como un líder bastante "pragmático". Siend \cxNotas de Saya:\c- \cfAAAAAAAAAAAAAAAAAAAAAAAA ¡¡¡¡Oh dios mio eso es tan adorable!!!!\c- -\cfjeje, sí, fui justo a por los pies otra vez. Su punto débil, jujuju~\c- +\cfjeje, sí, fui justo a por su cintura otra vez. Su punto débil, jujuju~\c- -\cfPor cierto, no le digas nada pero... ¿ese "trabajo importante" con el que está tan ocupado? Resulta que es otro juego que le puse. En serio, han pasado solo un par de semanas y ya casi se ha ventilado toda mi colección. Ah, y olvida lo que dijo de no verte, si es que, aunque tenga que ser a la fuerza, voy a hacer que te vea. En serio quiero ver como reacciona a tus payasadas.\c- +\cfPor cierto, no le digas nada pero... ¿Ese "trabajo importante" con el que está tan ocupado? Resulta que es otro juego que le puse. En serio, han pasado solo un par de semanas y ya casi se ha ventilado toda mi colección. Ah, y olvida lo que dijo de no verte, si es que, aunque tenga que ser a la fuerza, voy a hacer que te vea. En serio quiero ver como reacciona a tus payasadas.\c- diff --git a/lore/es/kirincummies.txt b/lore/es/kirincummies.txt deleted file mode 100644 index a288e4c88..000000000 --- a/lore/es/kirincummies.txt +++ /dev/null @@ -1,16 +0,0 @@ -TAG -Zumo de Melocotón -TXT -\cxDesignación:\c- -\cf Zumo de Melocotón Toot Froot™\c- -\cxFabricante:\c- -\cf Alimentos Vestal\c- -\cxClasificación:\c- -\cf Bebida de Leche con Zumo\c- - -¿Intolerancia a la lactosa? ¡No hay problema! Nuestra leche sintética es perfectamente segura para todos, ¡sin efectos secundarios, sin mutaciones alienígenas, ni efectos apocalípticos! Es leche, en un cartón. Toot Froot™, la primera bebida de leche sintética del mundo, con zumo de fruta natural. - -\cxNotas de Saya:\c- -\cfJejeje... el sabor me recuerda tanto a Kirin-kun. Cada sorbo es como... Seguro que tú también lo sabes, entiendes as que se parece el sabor. Sí, ESO. También le ha pillado el gusto, sabes, y ver esa fuerza de succión cada vez que le doy un cartón, y la cara que pone, es tan... ay madre. Que traviesillo~\c- - -\cfGracias muchas otra vez más al dios de los Anarukon, por hacerlos así. Deliciosos lechazos con sabor a melocotón...\c- diff --git a/lore/es/kirinmanga.txt b/lore/es/kirinmanga.txt index 0ec4d48a1..93c860800 100644 --- a/lore/es/kirinmanga.txt +++ b/lore/es/kirinmanga.txt @@ -10,9 +10,9 @@ TXT \cfSinopsis:\c- Cuando su familia se mudó al Imperio Rubí, Alissa se sintió como pez fuera del agua. Todo era tan diferente a la vida rural a la que estaba acostumbrada, tan nuevo y confuso, pero entonces conoció aun joven apuesto, quien felizmente le ayudaría a adaptarse. A medida que su relación se estrechó, se toparía finalmente con una revelación inesperada: ¡Era ni más ni menos que el mismísimo emperador de esas tierras! Amable, cariñoso, de corazón puro e inocente, era todo lo contrario a ella, pero a pesar de sus diferencias, el amor que sentían el uno por el otro solo siguió aumentando. Un día, habiendo sido invitada al palacio imperial, Alissa sería testigo de un lado del emperador que nunca antes había mostrado a nadie. Y asi, su nueva vida comienza. -Un inesperado retorno al manga de **Saya Miyamoto**, co-líder de **Akari Labs**, una vez más una historia romántica aderezada de su típica "sana y divertida perversión". A pesar de su corta extensión, ha recibido muchos halagos en internet, muchos pidiendo una secuela, o un spin-off centrado en la carismática asistenta del emperador. La propia Saya no ha hecho promesas, pero ha declarado considerar ambas opciones, algún día. +Un inesperado retorno al manga de **Saya Miyamoto**, co-líder de **Akari Labs**, una vez más una historia romántica aderezada con un tono de comedia ecchi. A pesar de su corta extensión, ha recibido muchos halagos en internet, muchos pidiendo una secuela, o un spin-off centrado en la carismática asistenta del emperador. La propia Saya no ha hecho promesas, pero ha declarado considerar ambas opciones, algún día. \cxNotas de Saya:\c- \cfJe, lo escribí todo en unos tres días. Aunque dibujarlo todo, eso fue una semana entera. Sí, no soy tan buena, a ver, aunque no me avergüence de calcar sobre modelos en 3D y tal (que yo hago, al menos).\c- -\cfEs obvio en qué está basado todo esto. A ver vamos, tendría que estar ciego de cojones para no darte cuenta. La primera vez que vestimos a Kirin-kun es que... me vino tal explosión de inspiración que TENÍA que escribirlo todo. Oh es que era tan adorable, ¿verdad? Probándole toda clase de cosas monas... Obviamente, no hicimos fotos, eso estaría mal. Pero todo eso está grabado en mi mente (y la tuya).\c- +\cfEs obvio en qué está basado todo esto. A ver vamos, tendría que estar tope de ciego para no darte cuenta. La primera vez que vestimos a Kirin-kun es que... me vino tal explosión de inspiración que TENÍA que escribirlo todo. Oh es que era tan adorable, ¿verdad? Probándole toda clase de cosas monas... Ay señor...\c- diff --git a/lore/es/kirinsippy.txt b/lore/es/kirinsippy.txt new file mode 100644 index 000000000..bca263843 --- /dev/null +++ b/lore/es/kirinsippy.txt @@ -0,0 +1,14 @@ +TAG +Zumo de Melocotón +TXT +\cxDesignación:\c- +\cf Zumo de Melocotón Toot Froot™\c- +\cxFabricante:\c- +\cf Alimentos Vestal\c- +\cxClasificación:\c- +\cf Bebida de Leche con Zumo\c- + +¿Intolerancia a la lactosa? ¡No hay problema! Nuestra leche sintética es perfectamente segura para todos, ¡sin efectos secundarios, sin mutaciones alienígenas, ni efectos apocalípticos! Es leche, en un cartón. Toot Froot™, la primera bebida de leche sintética del mundo, con zumo de fruta natural. + +\cxNotas de Saya:\c- +\cfSi hay algo que nos une de verdad, es el amor que tenemos por este zumo, desde que conocimos a Kirin-kun.\c- diff --git a/lore/es/kmonn.txt b/lore/es/kmonn.txt index 3970a17e2..fa13d3118 100644 --- a/lore/es/kmonn.txt +++ b/lore/es/kmonn.txt @@ -4,7 +4,7 @@ TXT \cxNacionalidad:\c- \cf Xekkian\c- \cxFecha de Nacimiento:\c- - \cf 8731 BC\c- + \cf 8731 AC\c- \cxOcupación:\c- \cf CTO (Kmonn Shuna)\c- \cf Consejero (Instituto Tecnológico Tach-Engine)\c- @@ -13,11 +13,11 @@ TXT **Eushura Kmonn Jr.**, hijo de **Eushura Kmonn Sr.**, es un gran inventor del **Reino de Xekke**, en el planeta de **Ixxeney**. Desde una edad temprana fue preparado para igualar la grandeza de su padre, y no tardó mucho en conseguir realizar su propia fama tras años de trabajo como su ayudante. Su creatividad e imaginación no tenían límites, y hay a su nombre un gran total de 279 logros notables en los campos tanto de la ofensa como defensa militar, lo cual ha ayudado a potenciar las fuerzas del reino, haciendo de ellos uno de los más fiables y reclamados por toda la **Coalición X'Animen** para tareas de defensa aliada. -Entre algunas de sus creaciones más notables, está la **Ray-Khom, el arma estándar de soldados Xekkian, el **Motor Isonómico**, el cual hace funcionar los motores de velocidad luz de todas las naves de la coalición y el **Revestimiento Elemental**, un dispositivo de protección semi-mágico para el uso en entornos extremos. +Entre algunas de sus creaciones más notables, está la **Ray-Khom**, el arma estándar de soldados Xekkian, el **Motor Isonómico**, el cual hace funcionar los motores de velocidad luz de todas las naves de la coalición y el **Revestimiento Elemental**, un dispositivo de protección semi-mágico para el uso en entornos extremos. Junto a su padre, fue uno de los muchos ingenieros que trabajaron en el famoso proyecto del **Operador de Metarealidad K79-D**. Un arma legendaria cuyo nombre es conocido por muchos, pero ninguno recuerda lo que hacía, ni siquiera aquellos involucrados en su creación. \cxNotas de Saya:\c- -\cfBuah el tío este es VIEJO. Ya sé que la peña esa vive eternamente, pero hostia puta, si es que es más aun que el viejales de Tach-Engine. Vaya diferencia de edad que se tienen ahí (pos sí).\c- +\cfBuah el tío este es VIEJO. Ya sé que la peña esa vive eternamente, pero hostia puta, si es que es más aun que el viejales de Tach-Engine. A ver, hasta he conocido a su padre, y madre mía... Un súper-vejestorio.\c- \cfOh ya, el artículo menciona el K79-D. La cosa más puto extraña esa. Resulta que SÉ lo que pasó con eso, porque me lo contó Maruku-sama, ya que estaba presente, y es un dios y todo ese tema. Al parecer el arma intentó violar directamente la causalidad durante un disparo de prueba, así que un "mecanismo de auto-conservación" del universo se disparó a lo bestia y lo borró todo al instante incluyendo toda la info de como se hizo el arma (incluso haciendo borrados de memoria, madre de dios).\c- diff --git a/lore/es/locke.txt b/lore/es/locke.txt index 7ceb460c1..84950dac2 100644 --- a/lore/es/locke.txt +++ b/lore/es/locke.txt @@ -11,12 +11,11 @@ TXT - -**Janus Locke** es el hermano menor del difunto **Dr. Häzel Hoodth** conocido por muchos como el **Doctor Chiflado de Kereshnovka**. Tras oír noticias de la muerte de Häzel en 1987 (especificamente, habiendo recibido dichas noticias 10 años después, mientras estudiaba en el extranjero), en la explosión de una plataforma petrolífera cercana al pueblo mientras realizaba sus experimentos para "obtener la esencia de la inmortalidad", Locke cambió por completo. Decidió continuar el trabajo de su hermano, mientras al mismo tiempo aun mantenía su empleo actual como fabricante de juguetes. Sin embargo, la locura en la que cayó se extendería también a eso, con los muchos productos que saldrían con su marca de **Juguetes Maravillosos del Dr. Locke** volviéndose cada vez más peligrosos, o incluso letales. +**Janus Locke** es el hermano menor del difunto **Dr. Häzel Hoodth** conocido por muchos como el **Doctor Chiflado de Kereshnovka**. Tras oír noticias de la muerte de Häzel en 1987 (específicamente, habiendo recibido dichas noticias 10 años después, mientras estudiaba en el extranjero), en la explosión de una plataforma petrolífera cercana al pueblo mientras realizaba sus experimentos para "obtener la esencia de la inmortalidad", Locke cambió por completo. Decidió continuar el trabajo de su hermano, mientras al mismo tiempo aun mantenía su empleo actual como fabricante de juguetes. Sin embargo, la locura en la que cayó se extendería también a eso, con los muchos productos que saldrían con su marca de **Juguetes Maravillosos del Dr. Locke** volviéndose cada vez más peligrosos, o incluso letales. Su locura llegó a su apogeo en 2049, cuando intentó "conquistar el mundo". Este evento, sin embargo, falló de una forma tan espectacular que tras él desapareció por completo de la vida pública. Tras marcharse, los muchos juguetes mortíferos que había creado encontraron una nueva vida siendo revendidos como armas en muchas tiendas online. \cxNotas de Saya:\c- -\cfPues eso... el tío es un tolai perdido. Toooooodos los tornillos sueltos. Pero sí, como puedes leer ahí, los "juguetes" esos suyos, son armas bastante fiables, así que me pillé unas cuantas y te las metí en el arsenal [n.t: menos mal que el desafortunado juego de palabras no se traduce aquí].\c- +\cfPues eso... el tío es un tolai perdido. Toooooodos los tornillos sueltos. Pero sí, como puedes leer ahí, los "juguetes" esos suyos, son armas bastante fiables, así que me pillé unas cuantas y te metí una en el arsenal [n.t: menos mal que el desafortunado juego de palabras no se traduce aquí].\c- \cfEso sí, por si acaso, mas te vale andar con MUCHO cuidado con las cosas estas. Quien sabe... la chatarra esta podría fallar de forma catastrófica en cualquier momento, EXACTAMENTE IGUAL QUE SUS PLANES DE DOMINACIÓN MUNDIAL xDDDDDDDDDD\c- diff --git a/lore/es/madcat.txt b/lore/es/madcat.txt new file mode 100644 index 000000000..bc847c307 --- /dev/null +++ b/lore/es/madcat.txt @@ -0,0 +1,156 @@ +TXT + \cxNombre Completo:\c- + \cf Kris "MADCAT" Danae\c- + \cxNacionalidad:\c- + \cf Alemana\c- + \cxFecha de Nacimiento:\c- + \cf 2124-06-07\c- + \cxOcupación:\c- + \cf Fundadora, Programadora Jefe (MADCAT Studio)\c- + \cf Ingeniera de Software Senior (Akari Labs)\c- + \cxTwitter:\c- + \cf @danae_kris\c- + +**Kris Danae** nació en 2124, como hermana menor de **Stefan Danae**. No se sabe mucho de sus padres, pero ha comentado que son científicos de Bavaria, Alemania, involucrados en investigación genética. De esto, se puede deducir que tanto ella como su hermano se encuentran entre las muchas **Gentes Gato de Ingeniería Genética** documentadas que han ido apareciendo desde los años 2090. + +A diferencia de su poco hábil hermano, Kris posee una alta inteligencia, y sobresale en tareas relacionadas con ordenadores. Tiene un don para la programación, lo cual le ha permitido ganar fama publicando juegos retro a través de la marca de **MADCAT Studio**. El simple, pero adictivo **Cat Catcher** ha sido instalado en más de 10 mil millones de dispositivos móviles y de sobremesa desde su salida en 2140. Ese mismo año, fue abordada por **Hamsick Co-op** para co-desarrollar el resurgimiento de la popular serie **Red Roger**, publicándose en su sexagésimo aniversario, dos años después. + +Su popularidad finalmente atrajo la atención de **Saya Miyamoto**, de **Akari Labs**, quien en 2143 le ofreció una posición como ingeniera de software senior, asistiendo en varios aspectos de diseño de interfaces. Adicionalmente, se le daría luego la tarea de crear juegos con temática de **Demolicionista** para promover el programa (sospechosamente al mismo tiempo que el shooter en primera persona **Doom**, basado en el muy famoso marine de la **UAC**, fue anunciado). + +No se sabe mucho de la vida personal de Kris. Vive con su hermano en una pequeña casa en Aoshima, Japón, rodeados de una multitud de gatos callejeros hacia los que sienten afinidad. En cuanto a relaciones, se ha dado a conocer que Kris está saliendo con el **Oni Rojo**, **Ibuki Miyamoto**, a quien visita cada fin de semana. A pesar de su nueva posición en Akari Labs, sigue desarrollando títulos independientes. + +Cuerpo de trabajo: + +- MADCAT Minigames (2135) +- Stray Cat (2137) +- Stray Cat 2 (2137) +- Bandit Fang (2138) +- Nekoprint Solitaire (2138) +- Stray Cat 3: Catastrophe (2139) +- Cat Catcher (2140) +- Stray Cat Collection (2141) +- Red Roger Returns (2142, con Hamsick Co-op) +- Nekopocalypse (2143) +- Nekopocalypse EX (2144) +- Red Roger in Capital Struggle (2145, con Hamsick Co-op) +- DemolitionOS (2148, con Saya y Taro Miyamoto) +- Demo Land Adventure (2148) + +\cxNotas de Saya:\c- + +\cfLa buena de Kris-san. Es que una no se cansa de lo buena que es, vaya que sí. Ya la conoces, en cuanto le surge una idea, tiene que convertirla en un juego, es que es así. Y la mayor parte de sus proyectos obviamente van de gatos. Nyaa y tal.\c- + +\cfPor cierto, ¿todas las interfaces visuales que ves por tus ojos? Las ha diseñado ella. Bastante simples, sí, pero funcionan de maravilla. Sabía que sería capaz de trabajar perfectamente para una resolución objetivo de 640x400. Ya me conoces, siempre seré partidaria de la superioridad de 16:10. A la porra el ultrawide, esa estúpida moda no se ha muerto ni en este siglo.\c- + +\cfUh, y que más queda por decir... Las dos casi pensamos igual a veces, lo cual es gracioso. Hay gente que dice que hasta nos PARECEMOS, pero sinceramente, yo no lo veo.\c- +TXT + \cxNombre Completo:\c- + \cf Kris "MADCAT" Danae\c- + \cxNacionalidad:\c- + \cf Alemana\c- + \cxFecha de Nacimiento:\c- + \cf 2124-06-07\c- + \cxOcupación:\c- + \cf Fundadora, Programadora Jefe (MADCAT Studio)\c- + \cf Ingeniera de Software Senior (Akari Labs)\c- + \cxTwitter:\c- + \cf @danae_kris\c- + +**Kris Danae** nació en 2124, como hermana menor de **Stefan Danae**. No se sabe mucho de sus padres, pero ha comentado que son científicos de Bavaria, Alemania, involucrados en investigación genética. De esto, se puede deducir que tanto ella como su hermano se encuentran entre las muchas **Gentes Gato de Ingeniería Genética** documentadas que han ido apareciendo desde los años 2090. + +A diferencia de su poco hábil hermano, Kris posee una alta inteligencia, y sobresale en tareas relacionadas con ordenadores. Tiene un don para la programación, lo cual le ha permitido ganar fama publicando juegos retro a través de la marca de **MADCAT Studio**. El simple, pero adictivo **Cat Catcher** ha sido instalado en más de 10 mil millones de dispositivos móviles y de sobremesa desde su salida en 2140. Ese mismo año, fue abordada por **Hamsick Co-op** para co-desarrollar el resurgimiento de la popular serie **Red Roger**, publicándose en su sexagésimo aniversario, dos años después. + +Su popularidad finalmente atrajo la atención de **Saya Miyamoto**, de **Akari Labs**, quien en 2143 le ofreció una posición como ingeniera de software senior, asistiendo en varios aspectos de diseño de interfaces. Adicionalmente, se le daría luego la tarea de crear juegos con temática de **Demolicionista** para promover el programa (sospechosamente al mismo tiempo que el shooter en primera persona **Doom**, basado en el muy famoso marine de la **UAC**, fue anunciado). + +No se sabe mucho de la vida personal de Kris. Vive con su hermano en una pequeña casa en Aoshima, Japón, rodeados de una multitud de gatos callejeros hacia los que sienten afinidad. En cuanto a relaciones, se ha dado a conocer que Kris está saliendo con el **Oni Rojo**, **Ibuki Miyamoto**, a quien visita cada fin de semana. A pesar de su nueva posición en Akari Labs, sigue desarrollando títulos independientes. + +Cuerpo de trabajo: + +- MADCAT Minigames (2135) +- Stray Cat (2137) +- Stray Cat 2 (2137) +- Bandit Fang (2138) +- Nekoprint Solitaire (2138) +- Stray Cat 3: Catastrophe (2139) +- Cat Catcher (2140) +- Stray Cat Collection (2141) +- Red Roger Returns (2142, con Hamsick Co-op) +- Nekopocalypse (2143) +- Nekopocalypse EX (2144) +- Red Roger in Capital Struggle (2145, con Hamsick Co-op) +- DemolitionOS (2148, con Saya y Taro Miyamoto) +- Demo Land Adventure (2148) +- Felix Arcana (2150) +- Red Roger and the Demon Deed (2151, con Hamsick Co-op) +- Felix Arcana 2 (2153) +- Felix Arcana 2: Sky Crown (2154) +- Felix Arcana 2: Blade Soul (2154) +- Cat Catcher Revolution (2158) +- Felix Arcana: Radiant Edition (2160) +- Red Roger vs. Blue Baron (2161, con Hamsick Co-op) +- Felix Arcana 3 (2163) +- Interstellar Demolitionist (2171) + +\cxNotas de Saya:\c- + +\cfLa buena de Kris-san. Es que una no se cansa de lo buena que es, vaya que sí. Ya la conoces, en cuanto le surge una idea, tiene que convertirla en un juego, es que es así. Y la mayor parte de sus proyectos obviamente van de gatos. Nyaa y tal.\c- + +\cfPor cierto, ¿todas las interfaces visuales que ves por tus ojos? Las ha diseñado ella. Bastante simples, sí, pero funcionan de maravilla. Sabía que sería capaz de trabajar perfectamente para una resolución objetivo de 640x400. Ya me conoces, siempre seré partidaria de la superioridad de 16:10. A la porra el ultrawide, esa estúpida moda no se ha muerto ni en este siglo.\c- + +\cfUh, y que más queda por decir... Las dos casi pensamos igual a veces, lo cual es gracioso. Hay gente que dice que hasta nos PARECEMOS, pero sinceramente, yo no lo veo.\c- +TXT + \cxNombre Completo:\c- + \cf Kris "MADCAT" Danae\c- + \cxNacionalidad:\c- + \cf Alemana\c- + \cxFecha de Nacimiento:\c- + \cf 2124-06-07\c- + \cxOcupación:\c- + \cf Fundadora, Programadora Jefe (MADCAT Studio)\c- + \cf Ingeniera de Software Senior (Akari Labs)\c- + \cxTwitter:\c- + \cf @danae_kris\c- + +**Kris Danae** nació en 2124, como hermana menor de **Stefan Danae**. No se sabe mucho de sus padres, pero ha comentado que son científicos de Bavaria, Alemania, involucrados en investigación genética. De esto, se puede deducir que tanto ella como su hermano se encuentran entre las muchas **Gentes Gato de Ingeniería Genética** documentadas que han ido apareciendo desde los años 2090. + +A diferencia de su poco hábil hermano, Kris posee una alta inteligencia, y sobresale en tareas relacionadas con ordenadores. Tiene un don para la programación, lo cual le ha permitido ganar fama publicando juegos retro a través de la marca de **MADCAT Studio**. El simple, pero adictivo **Cat Catcher** ha sido instalado en más de 10 mil millones de dispositivos móviles y de sobremesa desde su salida en 2140. Ese mismo año, fue abordada por **Hamsick Co-op** para co-desarrollar el resurgimiento de la popular serie **Red Roger**, publicándose en su sexagésimo aniversario, dos años después. + +Su popularidad finalmente atrajo la atención de **Saya Miyamoto**, de **Akari Labs**, quien en 2143 le ofreció una posición como ingeniera de software senior, asistiendo en varios aspectos de diseño de interfaces. Adicionalmente, se le daría luego la tarea de crear juegos con temática de **Demolicionista** para promover el programa (sospechosamente al mismo tiempo que el shooter en primera persona **Doom**, basado en el muy famoso marine de la **UAC**, fue anunciado). + +No se sabe mucho de la vida personal de Kris. Vive con su hermano en una pequeña casa en Aoshima, Japón, rodeados de una multitud de gatos callejeros hacia los que sienten afinidad. En cuanto a relaciones, se ha dado a conocer que Kris está saliendo con el **Oni Rojo**, **Ibuki Miyamoto**, a quien visita cada fin de semana. A pesar de su nueva posición en Akari Labs, sigue desarrollando títulos independientes. + +Cuerpo de trabajo: + +- MADCAT Minigames (2135) +- Stray Cat (2137) +- Stray Cat 2 (2137) +- Bandit Fang (2138) +- Nekoprint Solitaire (2138) +- Stray Cat 3: Catastrophe (2139) +- Cat Catcher (2140) +- Stray Cat Collection (2141) +- Red Roger Returns (2142, con Hamsick Co-op) +- Nekopocalypse (2143) +- Nekopocalypse EX (2144) +- Red Roger in Capital Struggle (2145, con Hamsick Co-op) +- DemolitionOS (2148, con Saya y Taro Miyamoto) +- Demo Land Adventure (2148) +- Felix Arcana (2150) +- Red Roger and the Demon Deed (2151, con Hamsick Co-op) +- Felix Arcana 2 (2153) +- Felix Arcana 2: Sky Crown (2154) +- Felix Arcana 2: Blade Soul (2154) +- Cat Catcher Revolution (2158) +- Felix Arcana: Radiant Edition (2160) +- Red Roger vs. Blue Baron (2161, con Hamsick Co-op) +- Felix Arcana 3 (2163) +- Interstellar Demolitionist (2171) +- Demolition Quest (2171) + +\cxNotas de Saya:\c- + +\cfLa buena de Kris-san. Es que una no se cansa de lo buena que es, vaya que sí. Ya la conoces, en cuanto le surge una idea, tiene que convertirla en un juego, es que es así. Y la mayor parte de sus proyectos obviamente van de gatos. Nyaa y tal.\c- + +\cfPor cierto, ¿todas las interfaces visuales que ves por tus ojos? Las ha diseñado ella. Bastante simples, sí, pero funcionan de maravilla. Sabía que sería capaz de trabajar perfectamente para una resolución objetivo de 640x400. Ya me conoces, siempre seré partidaria de la superioridad de 16:10. A la porra el ultrawide, esa estúpida moda no se ha muerto ni en este siglo.\c- + +\cfUh, y que más queda por decir... Las dos casi pensamos igual a veces, lo cual es gracioso. Hay gente que dice que hasta nos PARECEMOS, pero sinceramente, yo no lo veo.\c- diff --git a/lore/es/maidbot.txt b/lore/es/maidbot.txt index 30593c973..f48b38636 100644 --- a/lore/es/maidbot.txt +++ b/lore/es/maidbot.txt @@ -29,18 +29,18 @@ Tras estos eventos, Meido pasó a formar parte de la familia, adoptando el apell \cfMe encanta que las dos os llevéis tan bien, como hermanitas. Las robotitas cuquis deben permanecer unidas, vaya que sí.\c- \cfAh, Zana-sama, bendita seas tú y tus skills tope de guays, haciendo realidad mis sueños. Recuerdo que siempre soñaba que Meido-chan se volviera consciente y me confesara su amor, y pensaba que eso era TOTALMENTE imposible. Ja... tonta de mí.\c- - -\cfJeje... Desde luego me alegro mucho de hacerla "completa", por cierto... Mejor decisión de mi vida. Deja que te diga, cuando hacemos "cositas" las dos... es como estar en el cielo~\c- \cg♥\c- TXT -\cxNombre Completo:\c- -\cf Meido Miyamoto\c- -\cf Meidobot (nombre artístico)\c- -\cxNacionalidad:\c- -\cf Japonesa\c- -\cxFecha de Nacimiento:\c- -\cf 2017-07-07\c- -\cxTwitter:\c- -\cf @meidobot\c- + \cxNombre Completo:\c- + \cf Meido Miyamoto\c- + \cf Meidobot (nombre artístico)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2017-07-07\c- + \cxOcupación:\c- + \cf Idol\c- + \cxTwitter:\c- + \cf @meidobot\c- Siendo el primer proyecto de IA de **Saya Miyamoto**, **Meido** inicialmente era poca cosa, sirviendo principalmente como un robot de limpieza con una inteligencia muy limitada, mayormente capaz de recibir órdenes simples. Con el tiempo, Saya expandiría sus habilidades, permitiendo una interactividad más compleja, pero aún limitada. Saya siempre sentía que a pesar de sus esfuerzos, a pesar de lo mucho que Meido gradualmente parecía más "real", nunca era suficiente. Al final, era "śolo una máquina". @@ -63,6 +63,4 @@ En Mayo de 2171, junto con Saya y sus otras parejas, se casó con el **Emperador \cfAh, Zana-sama, bendita seas tú y tus skills tope de guays, haciendo realidad mis sueños. Recuerdo que siempre soñaba que Meido-chan se volviera consciente y me confesara su amor, y pensaba que eso era TOTALMENTE imposible. Ja... tonta de mí.\c- -\cfJeje... Desde luego me alegro mucho de hacerla "completa", por cierto... Mejor decisión de mi vida. Deja que te diga, cuando hacemos "cositas" las dos... es como estar en el cielo~\c- \cg♥\c- - \cfActualización: Por cierto, me alegro de que Kirin-kun consiguiera que volviese a cantar. Por supuesto, es que ¿como podría resistirse a sus encantos? ¿verdad?\c- diff --git a/lore/es/marisa.txt b/lore/es/marisa.txt new file mode 100644 index 000000000..4f9652712 --- /dev/null +++ b/lore/es/marisa.txt @@ -0,0 +1,105 @@ +TXT + \cxNombre Completo:\c- + \cf Marisa Azanth\c- + \cf Hija de Ceniza (apodo)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1989-10-04\c- + \cxOcupación:\c- + \cf Mercenaria (Cazadora de Demonios)\c- + \cxTwitter\c- + \cf @marisa_ashen\c- + +Nacida en **Sankaideriha** de la unión de la **Demoníaca** parca **Akari Shiroko** y la piromante nómada **Anarukon** **Sarkha Azanth**, **Marisa** es el resultado de una relación blasfema entre miembros de dos civilizaciones en conflicto, las de Demonios y Anarukon. A pesar de sus diferencias y la clara pertenencia a dos facciones en guerra, el amor entre sus padres es innegable, demostrando que ambos bandos pueden poner sus diferencias aparte y disfrutar de una fructuosa vida juntos. + +Habiendo sido criada por tal peculiar pareja de proscritos, Marisa carece de ciertas aptitudes sociales, pero destaca en otras habilidades, tales como la magia y el manejo de la espada. Tras alcanzar la edad adulta, comenzó a hacer encargos como mercenaria, asesinando demonios errantes y otras bestias entre varios lugares. Cerca del 2084, uno de estos encargos la trajo a la **Tierra**. Específicamente, a la zona de exclusión de **Washington DC**. Al ser ajena a los eventos de la **Cicatriz Blanca**, se encontró visiblemente confusa ante el estado arruinado de la ciudad, pero aun así, siguió buscando su objetivo. Para su sorpresa, sin embargo, alguien ya le había dado muerte, nadie más que el **Oni Rojo**, **Ibuki Miyamoto**. + +Las dos pasaron un tiempo trabajando juntas, y surgió una peculiar amistad. Desafortunadamente, cuando llegó el momento de volver a casa, se dio cuenta de que el portal que había usado solo podía cruzarlo una persona. Ibuki la dejó marchar, con la promesa de que ciertamente se volverían a encontrar cuando acabara todo. Y así, casi 10 años después, tras el retorno del Oni Rojo a **Japón**, su esperada reunión tuvo lugar. Marisa se había asentado en su propia casa en **Kasukabe**, y planeó que Ibuki se mudara a vivir con ella también. Por el camino, su espaciosa casa compartida se volvería aparentemente más apretada con la introducción de varios otros inquilinos, junto con las visitas ocasionales del novio de Marisa, un explorador **Odmorian** llamado **Cinnamon Valentine**. + +Hasta fecha de hoy, Marisa continúa cazando demonios como ocupación principal, así que, como es de esperar, la actual invasión la ha mantenido a ella y muchos otros ocupados. Sin embargo, al conocer la misión de la **Demolicionista**, se lo está "tomando un poco con calma". Al momento de escribir este artículo, fue vista por última vez dirigiéndose a **Nagoya**, uno de los principales puntos calientes de invasión en Japón, gracias en parte a la existencia de varias instalaciones de la **UAC** allí. + +\cxNotas de Saya:\c- +\cfAh, esta si que es una tía que no has conocido. A ver, con el chollo que tiene que básicamente tiene que estar ahí fuera partiendo la pana a diario. Ibuki me dijo que llegó un momento que estuvo casi a punto de rendirse, pero cuando le contó lo de tu misión, se vino arriba. Y claro, tanto ella como Ibuki andan por ahí ahora dándole al tema. Me apuesto a que han convertido todo esto en una competición ahora que formas parte de todo este asunto. Típico de ellas.\c- + +\cf¿Y que más puedo decir sobre ella? Bueno, es de las que hablan poco, la verdad. Menos hablar, más actuar, ya sabes. Deja que su espada lo diga todo, más o menos. Y madre, cacho espada. Es ENORME, la cosa que lleva. He oído que tiene otra más grande en reserva, una especie de premio por ser súper-fuerte o algo así. Que la puta cosa es un gigantesco trozo de cacho de puro metal, muy... Tipo Guts.\c- + +\cfEn serio espero que la puedas conocer algún día, seguro que te va a encontrar adorable. Y hablando de cosas adorables, conozco su punto débil: Carpincho. Sí, le pones uno delante y es que se derrite de cuquismo. Un pequeño truco que aprendí de su novio.\c- + +\cfOh, ¿y el novio? Bueno, un tío muy majo. No hablamos mucho, pero ha servido como mi fuente principal para aprender de la cultura Odmorian. Me ha despejado algunas dudas y malas interpretaciones bastante rápido, y todo siendo muy amable, también. Su nombre también es mono. Cinnamon, jeje. Mari-san lo llama Cinnabun, lo cual es más adorable. Pero que no te engañe, a pesar de tanto cuquismo, también es un duro y fuerte guerrero como ella, un tipo duro de verdad, hasta tiene un rifle ENORME y todo.\c- + +\cfEs que VAMOS, necesitas conocerlos, en serio.\c- +TXT + \cxNombre Completo:\c- + \cf Marisa Azanth\c- + \cf Hija de Ceniza (apodo)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1989-10-04\c- + \cxOcupación:\c- + \cf Mercenaria (Cazadora de Demonios)\c- + \cxTwitter\c- + \cf @marisa_ashen\c- + +Nacida en **Sankaideriha** de la unión de la **Demoníaca** parca **Akari Shiroko** y la piromante nómada **Anarukon** **Sarkha Azanth**, **Marisa** es el resultado de una relación blasfema entre miembros de dos civilizaciones en conflicto, las de Demonios y Anarukon. A pesar de sus diferencias y la clara pertenencia a dos facciones en guerra, el amor entre sus padres es innegable, demostrando que ambos bandos pueden poner sus diferencias aparte y disfrutar de una fructuosa vida juntos. + +Habiendo sido criada por tal peculiar pareja de proscritos, Marisa carece de ciertas aptitudes sociales, pero destaca en otras habilidades, tales como la magia y el manejo de la espada. Tras alcanzar la edad adulta, comenzó a hacer encargos como mercenaria, asesinando demonios errantes y otras bestias entre varios lugares. Cerca del 2084, uno de estos encargos la trajo a la **Tierra**. Específicamente, a la zona de exclusión de **Washington DC**. Al ser ajena a los eventos de la **Cicatriz Blanca**, se encontró visiblemente confusa ante el estado arruinado de la ciudad, pero aun así, siguió buscando su objetivo. Para su sorpresa, sin embargo, alguien ya le había dado muerte, nadie más que el **Oni Rojo**, **Ibuki Miyamoto**. + +Las dos pasaron un tiempo trabajando juntas, y surgió una peculiar amistad. Desafortunadamente, cuando llegó el momento de volver a casa, se dio cuenta de que el portal que había usado solo podía cruzarlo una persona. Ibuki la dejó marchar, con la promesa de que ciertamente se volverían a encontrar cuando acabara todo. Y así, casi 10 años después, tras el retorno del Oni Rojo a **Japón**, su esperada reunión tuvo lugar. Marisa se había asentado en su propia casa en **Kasukabe**, y planeó que Ibuki se mudara a vivir con ella también. Por el camino, su espaciosa casa compartida se volvería aparentemente más apretada con la introducción de varios otros inquilinos, junto con las visitas ocasionales del novio de Marisa, un explorador **Odmorian** llamado **Cinnamon Valentine**. + +Su participación en la **Invasión Demoníaca** de 2148 fue admirable, con un recuento de bajas enemigas de decenas de miles, y con un especial premio compartido con Ibuki Miyamoto por el eficiente trabajo de limpieza de las instalaciones infestadas de demonios de la **UAC** en **Nagoya**. + +\cxNotas de Saya:\c- +\cfAh, esta si que es una tía que no has conocido. A ver, con el chollo que tiene que básicamente tiene que estar ahí fuera partiendo la pana a diario. Ibuki me dijo que llegó un momento que estuvo casi a punto de rendirse, pero cuando le contó lo de tu misión, se vino arriba. Y claro, tanto ella como Ibuki andan por ahí ahora dándole al tema. Me apuesto a que han convertido todo esto en una competición ahora que formas parte de todo este asunto. Típico de ellas.\c- + +\cf¿Y que más puedo decir sobre ella? Bueno, es de las que hablan poco, la verdad. Menos hablar, más actuar, ya sabes. Deja que su espada lo diga todo, más o menos. Y madre, cacho espada. Es ENORME, la cosa que lleva. He oído que tiene otra más grande en reserva, una especie de premio por ser súper-fuerte o algo así. Que la puta cosa es un gigantesco trozo de cacho de puro metal, muy... Tipo Guts.\c- + +\cfEn serio espero que la puedas conocer algún día, seguro que te va a encontrar adorable. Y hablando de cosas adorables, conozco su punto débil: Carpincho. Sí, le pones uno delante y es que se derrite de cuquismo. Un pequeño truco que aprendí de su novio.\c- + +\cfOh, ¿y el novio? Bueno, un tío muy majo. No hablamos mucho, pero ha servido como mi fuente principal para aprender de la cultura Odmorian. Me ha despejado algunas dudas y malas interpretaciones bastante rápido, y todo siendo muy amable, también. Su nombre también es mono. Cinnamon, jeje. Mari-san lo llama Cinnabun, lo cual es más adorable. Pero que no te engañe, a pesar de tanto cuquismo, también es un duro y fuerte guerrero como ella, un tipo duro de verdad, hasta tiene un rifle ENORME y todo.\c- + +\cfEs que VAMOS, necesitas conocerlos, en serio.\c- + +\cfActualización: Ay madre, menudo encuentro. Sabes, es que lo he dicho muchas veces, ojalá pudiera haber sacado una foto de la cara que pusiste cuando viste la pistola que tiene. Sí, debería haberte dicho que no solo le van las espadas enormes, también las armas enormes. Pero oye, también te admira, y eso mola mucho. Joder, apuesto a que en cuanto te mandemos a la misión en Parthoris, también va a querer meterse luego. Es que ella es muy así.\c- + +\cfEspero que no cause muchos problemas, porque también planeo enviar a Ibuki para hacer un reconocimiento de algunos sitios.\c- +TXT + \cxNombre Completo:\c- + \cf Marisa Azanth\c- + \cf Hija de Ceniza (apodo)\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 1989-10-04\c- + \cxOcupación:\c- + \cf Mercenaria (Cazadora de Demonios)\c- + \cxTwitter\c- + \cf @marisa_ashen\c- + +Nacida en **Sankaideriha** de la unión de la **Demoníaca** parca **Akari Shiroko** y la piromante nómada **Anarukon** **Sarkha Azanth**, **Marisa** es el resultado de una relación blasfema entre miembros de dos civilizaciones en conflicto, las de Demonios y Anarukon. A pesar de sus diferencias y la clara pertenencia a dos facciones en guerra, el amor entre sus padres es innegable, demostrando que ambos bandos pueden poner sus diferencias aparte y disfrutar de una fructuosa vida juntos. + +Habiendo sido criada por tal peculiar pareja de proscritos, Marisa carece de ciertas aptitudes sociales, pero destaca en otras habilidades, tales como la magia y el manejo de la espada. Tras alcanzar la edad adulta, comenzó a hacer encargos como mercenaria, asesinando demonios errantes y otras bestias entre varios lugares. Cerca del 2084, uno de estos encargos la trajo a la **Tierra**. Específicamente, a la zona de exclusión de **Washington DC**. Al ser ajena a los eventos de la **Cicatriz Blanca**, se encontró visiblemente confusa ante el estado arruinado de la ciudad, pero aun así, siguió buscando su objetivo. Para su sorpresa, sin embargo, alguien ya le había dado muerte, nadie más que el **Oni Rojo**, **Ibuki Miyamoto**. + +Las dos pasaron un tiempo trabajando juntas, y surgió una peculiar amistad. Desafortunadamente, cuando llegó el momento de volver a casa, se dio cuenta de que el portal que había usado solo podía cruzarlo una persona. Ibuki la dejó marchar, con la promesa de que ciertamente se volverían a encontrar cuando acabara todo. Y así, casi 10 años después, tras el retorno del Oni Rojo a **Japón**, su esperada reunión tuvo lugar. Marisa se había asentado en su propia casa en **Kasukabe**, y planeó que Ibuki se mudara a vivir con ella también. Por el camino, su espaciosa casa compartida se volvería aparentemente más apretada con la introducción de varios otros inquilinos, junto con las visitas ocasionales del novio de Marisa, un explorador **Odmorian** llamado **Cinnamon Valentine**. + +Su participación en la **Invasión Demoníaca** de 2148 fue admirable, con un recuento de bajas enemigas de decenas de miles, y con un especial premio compartido con Ibuki Miyamoto por el eficiente trabajo de limpieza de las instalaciones infestadas de demonios de la **UAC** en **Nagoya**. + +\cxNotas de Saya:\c- +\cfAh, esta si que es una tía que no has conocido. A ver, con el chollo que tiene que básicamente tiene que estar ahí fuera partiendo la pana a diario. Ibuki me dijo que llegó un momento que estuvo casi a punto de rendirse, pero cuando le contó lo de tu misión, se vino arriba. Y claro, tanto ella como Ibuki andan por ahí ahora dándole al tema. Me apuesto a que han convertido todo esto en una competición ahora que formas parte de todo este asunto. Típico de ellas.\c- + +\cf¿Y que más puedo decir sobre ella? Bueno, es de las que hablan poco, la verdad. Menos hablar, más actuar, ya sabes. Deja que su espada lo diga todo, más o menos. Y madre, cacho espada. Es ENORME, la cosa que lleva. He oído que tiene otra más grande en reserva, una especie de premio por ser súper-fuerte o algo así. Que la puta cosa es un gigantesco trozo de cacho de puro metal, muy... Tipo Guts.\c- + +\cfEn serio espero que la puedas conocer algún día, seguro que te va a encontrar adorable. Y hablando de cosas adorables, conozco su punto débil: Carpincho. Sí, le pones uno delante y es que se derrite de cuquismo. Un pequeño truco que aprendí de su novio.\c- + +\cfOh, ¿y el novio? Bueno, un tío muy majo. No hablamos mucho, pero ha servido como mi fuente principal para aprender de la cultura Odmorian. Me ha despejado algunas dudas y malas interpretaciones bastante rápido, y todo siendo muy amable, también. Su nombre también es mono. Cinnamon, jeje. Mari-san lo llama Cinnabun, lo cual es más adorable. Pero que no te engañe, a pesar de tanto cuquismo, también es un duro y fuerte guerrero como ella, un tipo duro de verdad, hasta tiene un rifle ENORME y todo.\c- + +\cfEs que VAMOS, necesitas conocerlos, en serio.\c- + +\cfActualización: Ay madre, menudo encuentro. Sabes, es que lo he dicho muchas veces, ojalá pudiera haber sacado una foto de la cara que pusiste cuando viste la pistola que tiene. Sí, debería haberte dicho que no solo le van las espadas enormes, también las armas enormes. Pero oye, también te admira, y eso mola mucho. Joder, apuesto a que en cuanto te mandemos a la misión en Parthoris, también va a querer meterse luego. Es que ella es muy así.\c- + +\cfEspero que no cause muchos problemas, porque también planeo enviar a Ibuki para hacer un reconocimiento de algunos sitios.\c- + +\cfActualización 2: No me puedo creer que no hayamos conocido a sus madres hasta nuestra boda con Kirin. Lo has visto, todos lo hemos visto, la tal Sarkha está como una regadera, ya veo a quien sale, al menos en parte, porque su otra madre es sorprendentemente la mujer más generosa y agradable que he conocido. Vamos, incluso con todo el tema ese de ser una asesina y tal... Y lueeeego, también he aprendido que desciende de realeza del Infierno. No me extraña que los demonios le tengan tanto miedo, tiene bastante sentido.\c- + +\cfJuro que entre ella y sus dos madres, parecen todas personajes salidos de Dark Souls.\c- diff --git a/lore/es/milkbreads.txt b/lore/es/milkbreads.txt index 5040f49d2..cda7a2513 100644 --- a/lore/es/milkbreads.txt +++ b/lore/es/milkbreads.txt @@ -8,13 +8,13 @@ TXT \cxClasificación:\c- \cf Postre\c- -Una delicia de la cocina Akkouxhei, los **Panes de Leche** así llamados comúnmente por los lugareños son un postre suave y dulce comido típicamente durante eventos especiales, como cumpleaños o bodas. Blandos y esponjosos bollitos de pan dulce realzados con la savia refinada de los árboles **Yranakha** nativos y mezclados con leche condensada de **Bestia Gris**, se derriten en la boca con cada mordisco, volviéndose más y más dulces. +Una delicia de la cocina Akkouxhei, los **Panes de Leche** así llamados comúnmente por los lugareños son un postre suave y dulce, similar al brioche, el cual se consume típicamente durante eventos especiales, como cumpleaños o bodas. Blandos y esponjosos bollitos de pan dulce realzados con la savia refinada de los árboles **Yranakha** nativos y mezclados con leche condensada de **Bestia Gris**, se derriten en la boca con cada mordisco, volviéndose más y más dulces. -Aunque no es generalmente un problema para los nativos **Anarukon**, el obsceno contenido de azucar de estos está confirmado como peligroso para mortales a menos que sean consumidos en moderación, potencialmente resultando en el desarrollo de enfermedades cardiovasculares o incluso la muerte. +Aunque no es generalmente un problema para los nativos **Anarukon**, el obsceno contenido de azúcar de estos está confirmado como peligroso para mortales a menos que sean consumidos en moderación, potencialmente resultando en el desarrollo de enfermedades cardiovasculares o incluso la muerte. Aun así, son muy populares por todo el mundo. Muchos visitan el **Imperio Sykhai** solo para tener la oportunidad de comerlos, y puede que se queden para más. Se dice incluso que pueden ser uno de los secretos tras el rápido crecimiento de la nación. \cxNotas de Saya:\c- \cfSabes, enterarme de que la leche viene de ESAS COSAS no ha cambiado en absoluto mi opinión. Esta cosa es celestial, es lo más delicioso jamás creado, es tan dulce que me moriría por ellos. A ver, casi que pasó eso justo cuando tuve una sobredosis de ellos (madre de dios que vergüenza). Sí, no me extraña que la palmase mucho cuando tenía más azúcar que sangre en el cuerpo. Kirin-kun dijo que incluso oyó explotar mi corazón, pero apuesto a que solo estaba siendo dramático, eso no puede haber pasado.\c- -\cfOh ya, y resulta que hay un mito por ahí de que si comes suficientes de estos tus tetas se ponen enormes. Pues mira que en serio no creo que sea eso posible, por supuesto que no. ¿Que clase de idiota se metería una sobredosis de estas cosas a propósito para que le crezcan unas domingas gigantes?\c- +\cfOh ya, y resulta que hay un mito por ahí de que si comes suficientes de estos tus tetas se ponen enormes. Pues mira que en serio no creo que sea eso posible, por supuesto que no. ¿Que clase de idiota se metería una sobredosis de estas cosas a propósito?\c- diff --git a/lore/es/mistergun.txt b/lore/es/mistergun.txt deleted file mode 100644 index 4efcce292..000000000 --- a/lore/es/mistergun.txt +++ /dev/null @@ -1,29 +0,0 @@ -TAG -Rifle Mortal -TXT -\cxDesignación:\c- -\cf Rifle Mortal\c- -\cf "Míster" (apodo común)\c- -\cxFabricante:\c- -\cf Plutoni Incorporated\c- -\cxDesignación:\c- -\cf Rifle de Combate Multiusos\c- - -El **Rifle Mortal** fue ideado a principios de los años 2100 por estudiantes de la **Universidad de Nos-Kora** los cuales pensaban que simplemente había demasiadas armas distintas de ejércitos distintos de especies distintas, así que... Crearían algo que sería realmente "universal" para todos. - -Fue hecha para un calibre peculiar de 4.44x44.4mm, con una longitud de cañón de 44.4cm, y emplea munición de una extraña forma cuadrada, cuya naturaleza, junto con sus mecanismos de disparo, son un enigma. Estas balas telescópicas explosivas compactas pegan más fuerte que la munición de la mayoría de rifles de combate de mayor calibre hechos por humanos. Adicionalmente, también emplea granadas de 44.4mm desde una lanzadera bajo el cañón. Estas granadas se dispersan entre pequeñas bombas con seguimiento de objetivos al impactar, haciéndolas ideales para objetivos dispersos. - -\cfFuego Primario:\c- Disparo continuo de munición primaria. - -\cfFuego Secundario:\c- Lanza una granada. Si no hay, carga una nueva. - -\cfFuego Terciario:\c- Alterna entre modos de operación del rifle. Cambiando entre "disparo de precisión" (modo semiautomático estándar), "disparo en clúster" (de algún modo funcionando como una escopeta con la misma munición), "disparo en chorro" (funciona como automático pero ¿parece disparar cuatro balas por bala?), y "disparo de presión" (de alguna forma "cargando" la munición antes de dispararla con mayor potencia y velocidad). - -\cfRecarga:\c- Hace lo esperado. - -\cxNotas de Saya:\c- -\cfLlegados a este punto ya me trae sin cuidado que me confunda cualquier cosa que salga de ahí, en serio.\c- - -\cfEsta cosa es un rifle de asalto, una escopeta, una ametralladora y un rifle anti-tanque todo en uno, con exactamente la misma munición. Y cierto, no tiene ningún sentido, pero funciona, sea como sea.\c- - -\cfNo te pongas muy cómoda con esta, por cierto. Apuesto a que en cuanto le pilles el gusto no vas a ser capaz de volver a usar ninguna otra arma.\c- diff --git a/lore/es/misterrifle.txt b/lore/es/misterrifle.txt new file mode 100644 index 000000000..3fcd31140 --- /dev/null +++ b/lore/es/misterrifle.txt @@ -0,0 +1,33 @@ +TAG +Rifle Mortal +TXT +\cxDesignación:\c- +\cf Rifle Mortal\c- +\cf "Míster" (apodo común)\c- +\cxFabricante:\c- +\cf Plutoni Incorporated\c- +\cxDesignación:\c- +\cf Rifle de Combate Multiusos\c- + +El **Rifle Mortal** fue ideado a principios de los años 2100 por estudiantes de la **Universidad de Nos-Kora** los cuales pensaban que simplemente había demasiadas armas distintas de ejércitos distintos de especies distintas, así que... Crearían algo que sería realmente "universal" para todos. + +Fue hecha para un calibre peculiar de 4.44x44.4mm, con una longitud de cañón de 44.4cm, y emplea munición de una extraña forma cuadrada, cuya naturaleza, junto con sus mecanismos de disparo, son un enigma. Estas balas telescópicas explosivas compactas pegan más fuerte que la munición de la mayoría de rifles de combate de mayor calibre hechos por humanos. Adicionalmente, también emplea granadas de 44.4mm desde una lanzadera bajo el cañón. Estas granadas se dispersan entre pequeñas bombas con seguimiento de objetivos al impactar, haciéndolas ideales para objetivos dispersos. + +\cfFuego Primario:\c- Disparo continuo de munición primaria. + +\cfFuego Secundario:\c- Lanza una granada. Si no hay, carga una nueva. Recomendado contra grandes grupos de enemigos, ya que esto permitirá una distribución más uniforme de designaciones de objetivo a las sub-granadas para una cobertura máxima de daño. + +\cfFuego Terciario:\c- Alterna entre modos de operación del rifle. Cambiando entre "disparo de precisión" (semi-auto, puntería perfecta), "disparo en clúster" (15 perdigones, gran dispersión), "disparo en chorro" (ráfaga de 4 subproyectiles, baja precisión), y "disparo de presión" (proyectil penetrante de alta potencia). + +\cfRecarga:\c- Una de las pocas operaciones que hace lo lógicamente esperado. + +\cfTécnicas:\c- Cada uno de los modos de disparo tiene una situación óptima en la que usarse, asegúrate de experimentar y estudiar su comportamiento para así poder aumentar tu eficiencia en el campo de batalla. + +\cxNotas de Saya:\c- +\cfLlegados a este punto ya me trae sin cuidado que me confunda cualquier cosa que salga de ahí, en serio.\c- + +\cfEsta cosa es un rifle de asalto, una escopeta, una ametralladora y un rifle anti-tanque todo en uno, con exactamente la misma munición. Y cierto, no tiene ningún sentido, pero funciona, sea como sea.\c- + +\cfAdemás esas granadas son aun más raras. Las mides con regla y son obviamente de 25mm, pero de alguna forma CRECEN a su tamaño original al salir disparadas. Y LUEGO TODO LO DE LA FUNCIONALIDAD DE AUTO-OBJETIVO ME ATERRA CONCEPTUALMENTE. ESTO LO HAN HECHO CON BOMBARDEOS EN ALFOMBRA EN MENTE, ESTOY SEGURA AL 100%.\c- + +\cfEn serio, no te pongas muy cómoda con esta. Apuesto a que en cuanto le pilles el gusto no vas a ser capaz de volver a usar ninguna otra arma, y acabarás maldita para toda la vida o algo.\c- diff --git a/lore/es/mixom.txt b/lore/es/mixom.txt index 0d7d31449..19994cf17 100644 --- a/lore/es/mixom.txt +++ b/lore/es/mixom.txt @@ -17,6 +17,6 @@ Mixom es, además, uno de los últimos bastiones del capitalismo restantes en el \cxNotas de Saya:\c- \cfDinero y poder, dominio absoluto, mierda de capitalismo. Asco grande... Ojalá exploten todos.\c- -\cfMenos la presidenta, es la única persona cuerda que queda ahí pero es que no podían ser más rastreros cada vez que intenta cambiar las cosas. Es comendable, cierto, pero me parece una batalla perdida ya. Debería tirar la toalla y venirse a trabajar aquí.\c- +\cfMenos la presidenta, es la única persona cuerda que queda ahí pero es que no podían ser más rastreros cada vez que intenta cambiar las cosas. Es encomendable, cierto, pero me parece una batalla perdida ya. Debería tirar la toalla y venirse a trabajar aquí.\c- \cfPor cierto, no puedes dar dos pasos sin cruzarte con algo que han hecho, están EN PUTAS TODAS PARTES. Como, por ejemplo, ¿todos los tornillos en tu cuerpo? Marca Mixom. ¿La refrigeración líquida? También Mixom... Seguiría, pero es que me da todo el asco decir su nombre tanto.\c- diff --git a/lore/es/modernsparkster.txt b/lore/es/modernsparkster.txt index 20990bb85..061009a5b 100644 --- a/lore/es/modernsparkster.txt +++ b/lore/es/modernsparkster.txt @@ -21,7 +21,7 @@ Entonces, un descubrimiento llegó: ¿Por qué intentar copiar algo que jamás p \cfRecarga Secundaria:\c- Carga una célula de Nokron. Misma capacidad. -\cfTécnicas:\c- La carga de proyectil puede mantenerse de forma indefinida, ya que el arma se ventilará regularmente para estabilizar la potencia pico de ignición del arma. Esto puede permitir que uno simplemente cargue desde cobertura y salga para soltar el disparo cuando sea necesario. Adicionalmente, la posibilidad de pulsar ambos gatillos a la vez también está documentada, lo cual permite una potente descarga de plasma de Nokorokinylum, comparable a una pequeña bomba nuclear en potencial destructor. No se recomienda realizar un ataque combinado a menos que el objetivo esté lo suficientemente lejos para no poner en peligro al usuario. +\cfTécnicas:\c- La carga de proyectil puede mantenerse de forma indefinida, ya que el arma se ventilará regularmente para estabilizar su potencia pico de ignición. Esto puede permitir que uno simplemente cargue desde cobertura y salga para soltar el disparo cuando sea necesario. Adicionalmente, la posibilidad de pulsar ambos gatillos a la vez también está documentada, lo cual permite una potente descarga de plasma de Nokorokinylum, comparable a una pequeña bomba nuclear en potencial destructor. No se recomienda realizar un ataque combinado a menos que el objetivo esté lo suficientemente lejos para no poner en peligro al usuario. \cxNotas de Saya:\c- \cfOstiaaaaaaaa esto si que es buena mierda. Será una vieja gloria de antes de la guerra, pero funciona tan bien que resulta que los modelos x4 y x5 son solo revisiones menores, por lo que me contó el viejales ese. No podemos pillarnos las nuevas por culpa de no se qué mierdas del Tratado de la Cicatriz Blanca, una pena, pero con esta nos llega.\c- diff --git a/lore/es/mothlamp.txt b/lore/es/mothlamp.txt index 3d2c18512..51cd88b0b 100644 --- a/lore/es/mothlamp.txt +++ b/lore/es/mothlamp.txt @@ -21,4 +21,4 @@ La lámpara se mantiene siempre cerca del dueño, sin fallo. Si desaparece de su \cfPero... es que, justo luego creo que me dijo que "quizás". Lo que, sinceramente, suena un poco... uf. En cierto modo, me gusta la idea, pero a la vez... espero que no acabemos lamentándolo.\c- -\cfOh dios imagina que las chicas polilla son reales, es que joder yo iba y... ffffffdfgdgfgsfgggghghffhghg\c- +\cfOh dios imagina que las chicas polilla son reales, es que yo ya... ffffffdfgdgfgsfgggghghffhghg\c- diff --git a/lore/es/mothplushy.txt b/lore/es/mothplushy.txt index 6a13f6daa..84fea20cb 100644 --- a/lore/es/mothplushy.txt +++ b/lore/es/mothplushy.txt @@ -2,15 +2,13 @@ TAG Peluche de Polilla TXT \cxDesignación:\c- -\cf Peluche de Mashiro la Chica Polilla\c- +\cf Peluche de Chica Polilla\c- \cxFabricante:\c- \cf Nukritas 2xx\c- \cxClasificación:\c- \cf Muñeco de Peluche\c- -Un muñeco de peluche cariñosamente creado a mano de **Mashiro**, la chica polilla, para buenos niños y niñas por igual. Como todas las polillas, le encanta la luz de una buena lámpara. Si la provees del calmante brillo de una **Lámpara Compañera Sankai**, puede que tengas una amiga fiable, puede que incluso una amante. Solo, no hagas ruido, puede que la asustes. - -En **Plutoni Incorporated** no nos hacemos responsables si acabas atrapada en un bucle de tiempo con una buena chica polilla haciéndote compañía. +Un muñeco de peluche de una chica polilla cariñosamente creado a mano. Como todas las polillas, le encanta la luz de una buena lámpara. Si la provees del calmante brillo de una **Lámpara Compañera Sankai**, puede que encuentres una amiga fiel. Eso sí, no hagas ruido, puede que la asustes. \cxNotas de Saya:\c- \cfHay un montón de estas en mi dormitorio, sabes. Una por cada vez que esos dos me han cabreado. Da miedo que me conozcan tan bien, en serio.\c- diff --git a/lore/es/nana.txt b/lore/es/nana.txt index 38c2a1cb9..bebd91d10 100644 --- a/lore/es/nana.txt +++ b/lore/es/nana.txt @@ -11,7 +11,6 @@ TXT - **Nana** es la hija única de **Kaguya Houraisan**, la princesa **Lunar** exiliada que hizo de **Gensokyo** su hogar. Habiendo sido criada y educada completamente dentro de los confines de **Eientei** no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con **Ryuji Miyamoto** en los años 60. Habiendo huido de la **Aldea Humana**, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese "ver el mundo". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia. Siendo parte de la realeza, Nana ha ganado bastante fama en Japón, apareciendo incluso en varios programas de entrevistas. También es bien conocida por sus habilidades en varias artes marciales, y ha ganado varios torneos durante años. Otros de sus hobbies también incluyen la pintura y talla de madera, y es una cocinera muy hábil. @@ -19,7 +18,7 @@ Siendo parte de la realeza, Nana ha ganado bastante fama en Japón, apareciendo Nana tiene tres hijos, los cuales, como ella, han heredado la sangre inmortal de la princesa lunar: **Taro**, **Saya** y **Yui**. Cada uno de ellos ha tenido un gran éxito en sus propias hazañas, algo de lo que Nana habla en gran detalle, muy orgullosa. \cxNotas de Saya:\c- -\cfLa más mejor mamá del mundo, no voy a mentir. Puede que sea estricta a veces, o se enfade conmigo por estar despierta hasta muy tarde (si es que se da cuenta, je), pero realmente es la mejor. Aun no la has conocido, Demo-chan, pero seguro que le vas a caer muy bien. Te aseguro que es muy maja a pesar del miedo que da la pinta que tiene a veces. No es para nada como Kaguya obaa-san, que juro que siempre tiene ese aura que es como... normal que los tíos le tengan miedo, siempre con un miedo constante a que les haga CBT en cualquier momento.\c- +\cfLa más mejor mamá del mundo, no voy a mentir. Puede que sea estricta a veces, o se enfade conmigo por estar despierta hasta muy tarde (si es que se da cuenta, je), pero realmente es la mejor. Aun no la has conocido, Demo-chan, pero seguro que le vas a caer muy bien. Te aseguro que es muy maja a pesar del miedo que da la pinta que tiene a veces. No es para nada como Kaguya obaa-san, que juro que siempre tiene ese aura que es como... normal que la gente le tenga miedo.\c- TXT \cxNombre Completo:\c- \cf Nana Miyamoto\c- @@ -33,7 +32,6 @@ TXT - **Nana** es la hija única de **Kaguya Houraisan**, la princesa **Lunar** exiliada que hizo de **Gensokyo** su hogar. Habiendo sido criada y educada completamente dentro de los confines de **Eientei** no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con **Ryuji Miyamoto** en los años 60. Habiendo huido de la **Aldea Humana**, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese "ver el mundo". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia. Siendo parte de la realeza, Nana ha ganado bastante fama en Japón, apareciendo incluso en varios programas de entrevistas. También es bien conocida por sus habilidades en varias artes marciales, y ha ganado varios torneos durante años. Otros de sus hobbies también incluyen la pintura y talla de madera, y es una cocinera muy hábil. @@ -43,7 +41,7 @@ Nana tiene tres hijos, los cuales, como ella, han heredado la sangre inmortal de \cxNotas de Saya:\c- \cfOkaa-san es tan feliz de que vayas por ahí haciendo el bien. Me moló que le gustaras. Si es que te lo dije.\c- -\cfPor cierto, me di cuenta, sabes, cuando te dio ese abrazo, sí. No ha intentado ver a otros tíos desde que perdimos a papá... Pero creo que a lo mejor... puede que le gustes de una forma algo diferente, ya sabes...\c- +\cfTía, es que juro que ha empezado a hacer empanada de atún más a menudo solo por ti. Está bien que puedas disfrutar de tu plato favorito y tal, pero deberías saber que lo que necesitas en tu dieta son carbohidratos, ¿no?\c- TXT \cxNombre Completo:\c- \cf Nana Miyamoto\c- @@ -57,7 +55,6 @@ TXT - **Nana** es la hija única de **Kaguya Houraisan**, la princesa **Lunar** exiliada que hizo de **Gensokyo** su hogar. Habiendo sido criada y educada completamente dentro de los confines de **Eientei** no sabía mucho del mundo exterior, y habría pasado el resto de su vida eterna ahí, de no haber sido por un encuentro inesperado con **Ryuji Miyamoto** en los años 60. Habiendo huido de la **Aldea Humana**, se cruzó con Nana. Los dos entablaron una amistad cercana, y el joven chico hizo la promesa de casarse con ella cuando creciera, y llevarla al exterior, para que pudiese "ver el mundo". Esto ocurriría en 1973, con los dos dejando atrás Gensokyo para formar una familia. Siendo parte de la realeza, Nana ha ganado bastante fama en Japón, apareciendo incluso en varios programas de entrevistas. También es bien conocida por sus habilidades en varias artes marciales, y ha ganado varios torneos durante años. Otros de sus hobbies también incluyen la pintura y talla de madera, y es una cocinera muy hábil. @@ -67,8 +64,6 @@ Nana tiene tres hijos, los cuales, como ella, han heredado la sangre inmortal de \cxNotas de Saya:\c- \cfOkaa-san es tan feliz de que vayas por ahí haciendo el bien. Me moló que le gustaras. Si es que te lo dije.\c- -\cfOh ya, en la boda, con Kirin... ¿recuerdas? Resulta que tenía razón, después de todo. Se ha pasado a la "otra acera" ahora. Dios, como os envidio a todas, habiéndoos perdido esa escena. Ver a mamá justo ahí, dándose el lote con la de Ashley-san... Desearía poder des-verlo, pero ahora hasta planean casarse. ¿Eso no haría que Yu-chan y Ashley-san fuesen hermanas? A ver, las dos ya son pareja y tal... Va a ser raro.\c- +\cfTía, es que juro que ha empezado a hacer empanada de atún más a menudo solo por ti. Está bien que puedas disfrutar de tu plato favorito y tal, pero deberías saber que lo que necesitas en tu dieta son carbohidratos, ¿no?\c- -\cfEspera... Si ese es el caso, entonces... ENTONCES KIRIN-KUN Y YO... ¿¿¿ME VOY A CONVERTIR EN SU TÍA???\c- - -\cf... ahora que lo pienso, la verdad es que no importa. Yo es que ya he pecado, considerando que estáis tú, Ibuki y Meido. Técnicamente sois mis hijas (y además Ibuki es mi propio clon), después de todo.\c- +\cfOh ya, y lo que paso en la boda... Buf, es que nos pilló por sorpresa. Fue y se echó novia. Y va y resulta que fue con la madre de Ashley-san. La verdad es que me resulta un poco raro pero... Supongo que está bien si es algo que le hace más feliz.\c- diff --git a/lore/es/nedoshiaan.txt b/lore/es/nedoshiaan.txt index 4d5a0ad07..037712313 100644 --- a/lore/es/nedoshiaan.txt +++ b/lore/es/nedoshiaan.txt @@ -12,7 +12,7 @@ En el año 2005, una expedición de aventureros **Devanikan** resultó en el des Solo cuatro artefactos fueron encontrados, de los cinco que supuestamente se construyeron. Es comúnmente aceptado que este quinto artefacto fue el responsable de la muerte de la deidad, y fue perdido en el proceso. Los artefactos conocidos son: -\cfMtkradvo:\c- Conocido también como la **Gran Anomalía**, un orbe de energía pura que, en manos de un solo individuo, le permitiría eliminar a todos a su alrededor en un instante. Su poder es, sin embargo, muy limitado, y una gran cantidad de tiempo es necesaria para que se recargue tras cada uso, haciéndolo más un arma de último recurso para emergencias. +\cfMykradvo:\c- Conocido también como la **Gran Anomalía**, un orbe de energía pura que, en manos de un solo individuo, le permitiría eliminar a todos a su alrededor en un instante. Su poder es, sin embargo, muy limitado, y una gran cantidad de tiempo es necesaria para que se recargue tras cada uso, haciéndolo más un arma de último recurso para emergencias. \cfKyshyje:\c- El **Amuleto de la Desdicha** que, cuando lo lleva un individuo, atrae destrucción y locura a todos los que deseen hacerle daño. Al menos, eso es lo que se suponía que debía hacer, ya que una vez probado, lo que realmente hacía era atraer la desgracia a su portador, probablemente como una forma de indicar que no es "digno" de usarlo, como muchos han especulado. @@ -22,7 +22,7 @@ Solo cuatro artefactos fueron encontrados, de los cinco que supuestamente se con \cfInshtrometanykha:\c- El quinto y perdido artefacto, el **Matadioses**. Llamado así debido al hecho de que esta era la única arma conocida que podía destruir a un dios a través de las tres capas de la realidad. Su efectividad es muy clara, teniendo en cuenta lo ocurrido. Solo dos deidades sobrevivieron el impacto, habiendo sido solamente rozadas por él, sin embargo una no pudo conservar su forma física, necesitando un cuerpo artificial, y la otra sufrió daños tales que fue puesta en un "sueño profundo". -De estos artefactos, el **Ynykron** fue reproducido con éxito y reprogramado para un uso más "mundano", después de que **Misa Unissix** obtuviese sus planos originales del mismo Mei Mess. Por supuesto, su uso aun permanece controlado muy estrictamente. +De estos artefactos, el **Ynykron** fue reproducido con éxito y re-programado para un uso más "mundano", después de que **Misa Unissix** obtuviese sus planos originales del mismo Mei Mess. Por supuesto, su uso aun permanece controlado muy estrictamente. \cxNotas de Saya:\c- \cfDioses dictadores, armas de destrucción final, "impulsado por almas torturadas"... Todo esto es una puta locura, en serio. A este puto mundo nunca se le paran de ocurrir formas absurdas de sorprenderme.\c- diff --git a/lore/es/noskora.txt b/lore/es/noskora.txt index 99d23e90e..a99a2375e 100644 --- a/lore/es/noskora.txt +++ b/lore/es/noskora.txt @@ -12,7 +12,7 @@ La **Universidad de Nos-Kora** fue fundada en 1308 por los hermanos **Nukritas 1 Al ser parte de los Mishe, los dos hermanos poseen lo que solo puede ser descrito como poderes de "manipulación de la realidad". Sin embargo, esto solo ha sido presenciado en raras ocasiones, como por ejemplo los momentos finales de la **Séptima Guerra Mundial Nukuri**, donde uno de ellos consiguió poner fin al conflicto por su cuenta, ignorando los ataques de soldados imperiales mientras se acercaba al trono, y al alcanzarlo, mandar al emperador **Ledora Yathai** volando fuera de su asiento de un puñetazo, lanzándolo a través de la sala en una línea recta hasta una ventana cercana, y enviándolo al espacio exterior. Su cuerpo nunca fue recuperado, y se supone muerto. -La popularidad de la universidad se disparó tras este éxito en desmantelar todo un imperio y finalmente traer consigo la creación del **Gobierno Unificado Nukuri**. Mucha gente desea aprender lo que estas extrañas entidades ofrecen enseñar, aunque muchos de los cursos son bastante difíciles para la mayoría de personas. +La popularidad de la universidad se disparó tras este éxito en desmantelar todo un imperio y finalmente traer consigo la creación del **Gobierno Unificado de Nahkami**. Mucha gente desea aprender lo que estas extrañas entidades ofrecen enseñar, aunque muchos de los cursos son bastante difíciles para la mayoría de personas. Algunos de los cursos más populares que uno puede estudiar en la Universidad de Nos-Kora son: diff --git a/lore/es/novoskhana.txt b/lore/es/novoskhana.txt index 878e3348e..3b4046dc5 100644 --- a/lore/es/novoskhana.txt +++ b/lore/es/novoskhana.txt @@ -10,16 +10,14 @@ El **Imperio de Novoskhana** fue fundado en el 45306 AC por la **Emperatriz Eter La estructura social del imperio es estrictamente matriarcal, todos los hombres existen solamente para servir a sus esposas y darles hijos. Adicionalmente, casi todas las mujeres nacidas en Novoskhana son entrenadas para la guerra, especialmente aquellas de clases bajas. Dado este hecho, nadie se ha atrevido a empezar ninguna guerra o conflicto con el imperio, ya que siempre está preparado para contraatacar, con sus ejércitos imparables de guerreras inmortales. -La Emperatriz Eterna y sus muchas hijas tienen poder absoluto sobre todo Novoskhana, y realizan todas las decisiones importantes, incluyendo la creación de nuevas leyes. De todas estas leyes varias que han venido de ellas, muchas han sido tan controvertidas que han resultado en que grandes grupos de gente se hayan "separado" del imperio para formar sus propias naciones. La nieta mayor de la Emperatriz, la Verdugo Eryukha Yanikov, dirige (y a veces imparte) personalmente todos los castigos de ciudadanos que son considerados **Desviados**, un término usado para todos aquellos que actúan en contra de las leyes del imperio. - -Hay incontables formas de ser etiquetado como un "enemigo del estado", entre ellas, mostrar signos de "desestabilizar el orden natural de la sociedad", lo cual incluye entre otros: Hombres que rechazan el matrimonio o tener descendientes, hombres cuyo primer descendiente es varón, o que son incapaces de tener descendencia, hombres que son vistos manteniendo relaciones con otros hombres, cualquier individuo que comparta un nombre con la emperatriz, cualquier individuo que "viva desconectado de la sociedad" (generalmente usado para referirse a aquellos que permanezcan desempleados durante extensos periodos, o no tengan un hogar), mujeres que no contribuyan en la guerra, mujeres que hayan sido vistas manteniendo relaciones con otras mujeres, individuos "divergentes" (término usado para aquellos que no caigan en el binario hombre/mujer), etc. +La Emperatriz Eterna y sus muchas hijas tienen poder absoluto sobre todo Novoskhana, y realizan todas las decisiones importantes, incluyendo la creación de nuevas leyes. De todas estas leyes varias que han venido de ellas, muchas han sido tan controvertidas que han resultado en que grandes grupos de gente se hayan "separado" del imperio para formar sus propias naciones. La nieta mayor de la Emperatriz, la Verdugo Eryukha Yanikov, dirige (y a veces imparte) personalmente todos los castigos de ciudadanos que son considerados **Desviados**, un término usado para todos aquellos que actúan en contra de las estrictas leyes del imperio. Dos de los mayores grupos separados del Imperio son el **Reino Kurenai**, fundado inicialmente por la **Hermandad Vexx** como un lugar seguro para enemigos del estado, y el **Imperio Sykhai**, un colectivo anarco-comunista con nombre irónico fundado por una rama de la familia Yanikov que estaba fuertemente en desacuerdo con el "sistema roto" del Imperio. Una gran parte de la población libre **Anarukon** total del multiverso está contenida en estos dos, y el resto se ha asentado en otros lugares, incluyendo la Tierra. \cxNotas de Saya:\c- -\cfJoder, tía. Si hubiese una vez un concurso de quien es el dictador más ridículamente malvado de la historia del mundo, esta hijoputa tendría el primer puesto. Puto... imperio TERF. Maravilloso, simplemente maravilloso...\c- +\cfJoder, tía. Si hubiese una vez un concurso de quien es el dictador más ridículamente malvado de la historia del mundo, esta hijoputa tendría el primer puesto. Maravilloso, simplemente maravilloso...\c- -\cfSí, nunca jamás me puto acercaría a ese sito, hostia joder. Me arrancarían la cabeza por TODAS las razones o algo, nada mas poner un pie ahí. Lo que no entiendo es... que... ¿¿¿COMO COJONES sigue habiendo gente ahí??? ¿¿¿QUIEN COJONES querría vivir ahí???\c- +\cfSí, nunca jamás me acercaría a ese sito, la leche. Me arrancarían la cabeza por TODAS las razones o algo, nada mas poner un pie ahí. Lo que no entiendo es... Que, a ver, ¿¿como alguien querría vivir en un sitio así, bajo una dictadura tan absurda??\c- \cfOh, pero que digo, por supuesto que hay gente que estaría fenomenal con un puto infierno así, siempre. Si la historia nos ha enseñado algo, es que a ver... sí... Hay gente que es tan mierder como para seguir a líderes así, o peor...\c- TXT @@ -34,16 +32,14 @@ El **Imperio de Novoskhana** fue fundado en el 45306 AC por la **Emperatriz Eter La estructura social del imperio es estrictamente matriarcal, todos los hombres existen solamente para servir a sus esposas y darles hijos. Adicionalmente, casi todas las mujeres nacidas en Novoskhana son entrenadas para la guerra, especialmente aquellas de clases bajas. Dado este hecho, nadie se ha atrevido a empezar ninguna guerra o conflicto con el imperio, ya que siempre está preparado para contraatacar, con sus ejércitos imparables de guerreras inmortales. -La Emperatriz Eterna y sus muchas hijas tienen poder absoluto sobre todo Novoskhana, y realizan todas las decisiones importantes, incluyendo la creación de nuevas leyes. De todas estas leyes varias que han venido de ellas, muchas han sido tan controvertidas que han resultado en que grandes grupos de gente se hayan "separado" del imperio para formar sus propias naciones. La nieta mayor de la Emperatriz, la Verdugo Eryukha Yanikov, dirige (y a veces imparte) personalmente todos los castigos de ciudadanos que son considerados **Desviados**, un término usado para todos aquellos que actúan en contra de las leyes del imperio. - -Hay incontables formas de ser etiquetado como un "enemigo del estado", entre ellas, mostrar signos de "desestabilizar el orden natural de la sociedad", lo cual incluye entre otros: Hombres que rechazan el matrimonio o tener descendientes, hombres cuyo primer descendiente es varón, o que son incapaces de tener descendencia, hombres que son vistos manteniendo relaciones con otros hombres, cualquier individuo que comparta un nombre con la emperatriz, cualquier individuo que "viva desconectado de la sociedad" (generalmente usado para referirse a aquellos que permanezcan desempleados durante extensos periodos, o no tengan un hogar), mujeres que no contribuyan en la guerra, mujeres que hayan sido vistas manteniendo relaciones con otras mujeres, individuos "divergentes" (término usado para aquellos que no caigan en el binario hombre/mujer), etc. +La Emperatriz Eterna y sus muchas hijas tienen poder absoluto sobre todo Novoskhana, y realizan todas las decisiones importantes, incluyendo la creación de nuevas leyes. De todas estas leyes varias que han venido de ellas, muchas han sido tan controvertidas que han resultado en que grandes grupos de gente se hayan "separado" del imperio para formar sus propias naciones. La nieta mayor de la Emperatriz, la Verdugo Eryukha Yanikov, dirige (y a veces imparte) personalmente todos los castigos de ciudadanos que son considerados **Desviados**, un término usado para todos aquellos que actúan en contra de las estrictas leyes del imperio. Dos de los mayores grupos separados del Imperio son el **Reino Kurenai**, fundado inicialmente por la **Hermandad Vexx** como un lugar seguro para enemigos del estado, y el **Imperio Sykhai**, un colectivo anarco-comunista con nombre irónico fundado por una rama de la familia Yanikov que estaba fuertemente en desacuerdo con el "sistema roto" del Imperio. Una gran parte de la población libre **Anarukon** total del multiverso está contenida en estos dos, y el resto se ha asentado en otros lugares, incluyendo la Tierra. \cxNotas de Saya:\c- -\cfJoder, tía. Si hubiese una vez un concurso de quien es el dictador más ridículamente malvado de la historia del mundo, esta hijoputa tendría el primer puesto. Puto... imperio TERF. Maravilloso, simplemente maravilloso...\c- +\cfJoder, tía. Si hubiese una vez un concurso de quien es el dictador más ridículamente malvado de la historia del mundo, esta hijoputa tendría el primer puesto. Maravilloso, simplemente maravilloso...\c- -\cfSí, nunca jamás me puto acercaría a ese sito, hostia joder. Me arrancarían la cabeza por TODAS las razones o algo, nada mas poner un pie ahí. Lo que no entiendo es... que... ¿¿¿COMO COJONES sigue habiendo gente ahí??? ¿¿¿QUIEN COJONES querría vivir ahí???\c- +\cfSí, nunca jamás me acercaría a ese sito, la leche. Me arrancarían la cabeza por TODAS las razones o algo, nada mas poner un pie ahí. Lo que no entiendo es... Que, a ver, ¿¿como alguien querría vivir en un sitio así, bajo una dictadura tan absurda??\c- \cfOh, pero que digo, por supuesto que hay gente que estaría fenomenal con un puto infierno así, siempre. Si la historia nos ha enseñado algo, es que a ver... sí... Hay gente que es tan mierder como para seguir a líderes así, o peor...\c- diff --git a/lore/es/nukritas1xx.txt b/lore/es/nukritas1xx.txt new file mode 100644 index 000000000..298d63c25 --- /dev/null +++ b/lore/es/nukritas1xx.txt @@ -0,0 +1,25 @@ +TXT + \cxNombre Completo:\c- + \cf Sujeto 1xx, Subtipo Nukritas\c- + \cxNacionalidad:\c- + \cf Mishe\c- + \cxFecha de Nacimiento:\c- + \cf 1030-10-10\c- + \cxOcupación:\c- + \cf Director (Universidad de Nos-Kora)\c- + + + + +**Nukritas 1xx** es el penúltimo de los **Mishe** nacidos a bordo de la luna artificial de **Deishe**, mucho después de la destrucción y subsecuente extinción de todos los anteriormente nativos Mishe en su mundo natal en el 8135 AC tras una desigual guerra con la vecina raza **Goshun**. + +Al igual que su hermana gemela, ha sido designado como un **Subtipo Nukritas**, lo cual significa que nació y se crió para el propósito de representar a los supervivientes de su raza y propagar su conocimiento por toda la **Coalición X'Animen**. Para esto, y junto con su hermana, ambos fundaron la **Universidad de Nos-Kora** en **Nahkami**. + +Ya que estas tareas no toman mucho de su tiempo. 1xx se dedica también a otras aficiones, como la escritura. Ha escrito varias novelas que no muchos entienden del todo, aunque todos aseguran haberlas leído de principio a fin. También es un ávido cocinero, y disfruta al aprender las variadas recetas de cada civilización que conoce junto con su hermana. Su plato favorito es el sándwich de queso a la plancha. + +Como todos los miembros de la raza Mishe, es bastante excéntrico, su inmensa sabiduría parece ser muy exhaustiva, aunque los sujetos que domina son bastante inconexos. Parece que tanto él como su hermana comparten el pensamiento, ya que pueden continuarse las frases mutuamente en medio de cualquier conversación. + +\cxNotas de Saya:\c- +\cfYa, lo sé, no hay mucho que ver, pero es que estos dos no tienen una biografía o algo en la que rebuscar.\c- + +\cfEste tío... La forma en la que sonríe da un poco de miedo a veces. Me pregunto si es capaz de leerme la mente o algo.\c- diff --git a/lore/es/nukritas2xx.txt b/lore/es/nukritas2xx.txt new file mode 100644 index 000000000..14db21343 --- /dev/null +++ b/lore/es/nukritas2xx.txt @@ -0,0 +1,25 @@ +TXT + \cxNombre Completo:\c- + \cf Sujeto 2xx, Subtipo Nukritas\c- + \cxNacionalidad:\c- + \cf Mishe\c- + \cxFecha de Nacimiento:\c- + \cf 1030-10-10\c- + \cxOcupación:\c- + \cf Directora (Universidad de Nos-Kora)\c- + + + + +**Nukritas 2xx** es la última de los **Mishe** nacidos a bordo de la luna artificial de **Deishe**, mucho después de la destrucción y subsecuente extinción de todos los anteriormente nativos Mishe en su mundo natal en el 8135 AC tras una desigual guerra con la vecina raza **Goshun**. + +Al igual que su hermano gemelo, ha sido designada como un **Subtipo Nukritas**, lo cual significa que nació y se crió para el propósito de representar a los supervivientes de su raza y propagar su conocimiento por toda la **Coalición X'Animen**. Para esto, y junto con su hermano, ambos fundaron la **Universidad de Nos-Kora** en **Nahkami**. + +Ya que estas tareas no toman mucho de su tiempo. 2xx se dedica también a otras aficiones, como la pintura. Ha creado varias obras de arte que no muchos entienden del todo, aunque todos aseguran haberlas visto de arriba a abajo. También es una ávido fabricante de muñecas, y disfruta al crear varios muñecos de peluche de los amigos que conoce junto con su hermano. Su muñeco favorito es uno del **Dios Azul**, quien se ofreció como patrón de su gente como agradecimiento. + +Como todos los miembros de la raza Mishe, es bastante excéntrica, su inmensa sabiduría parece ser muy exhaustiva, aunque los sujetos que domina son bastante inconexos. Parece que tanto ella como su hermano comparten el pensamiento, ya que pueden continuarse las frases mutuamente en medio de cualquier conversación. + +\cxNotas de Saya:\c- +\cfEste es igual que el otro, sí. Tampoco hay mucha información por ahí, ya sabes...\c- + +\cfLa verdad es que me gusta, los muñecos que hace son monos. A ver, los has visto, ¿verdad? ¡Es que son adorables!\c- diff --git a/lore/es/nukuri.txt b/lore/es/nukuri.txt index 72b9dfe02..021d67be5 100644 --- a/lore/es/nukuri.txt +++ b/lore/es/nukuri.txt @@ -8,11 +8,11 @@ TXT Los **Nukuri** son una raza humanoide de tez pálida nativos de la luna helada de **Hebeku**, **Nahkami**, en el **Sistema Xathar** (parte de la **Coalición X'Animen**). Son una de las razas más avanzadas tecnológicamente en toda la Coalición, y son vistos como un gran ejemplo de progreso y dedicación, aunque han tenido una extensa historia de guerra y conflicto, junto con haberse involucrado en notables atrocidades. Este pasado tan oscuro es algo de lo que son plenamente conscientes y de lo que se avergüenzan, desde el fin de su séptima guerra mundial y la masiva reforma política y económica que transcurrió posteriormente. -En el pasado, Nahkami fue un cruel imperio belicista liderado con mano dura por la familia real **Yathai**. Sin embargo, tras la reforma, y con el emperador **Ledora Yathai** siendo "forzado al exilio" por los fundadores de la **Universidad de Nos-Kora**, quienes lideraron dicha reforma, el **Gobierno Unificado Nukuri** fue creado, con **Zanata Nekuraku II** personalmente elegida como primera ministra "de transición". +En el pasado, Nahkami fue un cruel imperio belicista liderado con mano dura por la familia real **Yathai**. Sin embargo, tras la reforma, y con el emperador **Ledora Yathai** siendo "forzado al exilio" por los fundadores de la **Universidad de Nos-Kora**, quienes lideraron dicha reforma, el **Gobierno Unificado de Nahkami** fue creado, con **Zanata Nekuraku II** personalmente elegida como primera ministra "de transición". Habiendo sufrido la pérdida de su madre y su marido en anteriores guerras, Zanata siempre se opuso al imperio y sus prácticas, incluyendo la decisión de atacar a la humanidad en el punto álgido de la Séptima Guerra Mundial, en lo que se conoció como el incidente de la **Cicatriz Blanca**. Tras establecerse el nuevo gobierno, intentó compensar lo ocurrido, pero nada se pudo hacer. Pasado esto, renunció no solo a su puesto como primera ministra, sino también al de líder de **Nekuratek**, la compañía que su familia había dirigido durante varias generaciones. A la fecha de escribirse este artículo, la actual primera ministra de Nahkami, elegida por la mayoría, es **Saya Kowayanau**, quien es también gobernadora de la provincia de **Saya**. -El Gobierno Unificado Nukuri puede verse como uno de los varios ejemplos de transiciones exitosas de regímenes dictatoriales a un sistema más abierto. Su sistema de gobierno es auto-descrito como "omnicracia comunista", donde todos son iguales y ninguna voz es ignorada. Su método para permitir que todos sus habitantes formen parte en la toma de decisiones, el "voto fractal", ha sido elogiado por otras naciones vecinas. En cierto modo, todo es fundamentalmente decidido por toda la gente de la nación, ninguna voz es ignorada. En cuanto a su economía, no existe el concepto de moneda, o de propiedad privada. Todos los negocios anteriormente privados son ahora públicos, aunque sus fundadores siguen manteniendo una posición de liderazgo "simbólico", estando todavía involucrados en su manejo, bajo supervisión del gobierno. +El Gobierno Unificado de Nahkami puede verse como uno de los varios ejemplos de transiciones exitosas de regímenes dictatoriales a un sistema más abierto. Su sistema de gobierno es auto-descrito como "omnicracia comunista", donde todos son iguales y ninguna voz es ignorada. Su método para permitir que todos sus habitantes formen parte en la toma de decisiones, el "voto fractal", ha sido elogiado por otras naciones vecinas. En cierto modo, todo es fundamentalmente decidido por toda la gente de la nación, ninguna voz es ignorada. En cuanto a su economía, no existe el concepto de moneda, o de propiedad privada. Todos los negocios anteriormente privados son ahora públicos, aunque sus fundadores siguen manteniendo una posición de liderazgo "simbólico", estando todavía involucrados en su manejo, bajo supervisión del gobierno. Se sabe también que los Nukuri todavía poseen una potente fuerza militar, aunque solo sirva para defender la nación de amenazas externas (algo que raramente ha ocurrido). Adicionalmente, la fabricación y uso de armas está estrictamente supervisado, también. diff --git a/lore/es/nuutek.txt b/lore/es/nuutek.txt index 3b6551687..5da262abd 100644 --- a/lore/es/nuutek.txt +++ b/lore/es/nuutek.txt @@ -18,4 +18,4 @@ Desde entonces, la empresa ha redirigido sus esfuerzos a la fabricación de comp \cxNotas de Saya:\c- \cfBuf, armas de plasma tan atrás. Los Nukuri desde luego que nos superaban MUY BASTO. A ver, es que casualmente se dieron un viaje desde otra galaxia a nuestra Luna y se montaron su propio complejo de investigación ahí cuando los humanos como que... aun estaban aprendiendo a usar hierro. Y encima, ni la barrera de la Capital Lunar los paró. Es que, es acojonante, tío.\c- -\cfVale, no nos salgamos del tema. Casi que no tengo ningún contacto con nadie de ahí, Zana-sama se encargó de todo eso, así que todo lo que nos den pasa por ella primero. Las pistolas de plasma molan, y podemos juguetear con uno de sus "blasters" tan famosos. Espero que sea tan derritecaras como suena.\c- +\cfVale, no nos salgamos del tema. Casi que no tengo ningún contacto con nadie de ahí, Zana-sama se encargó de todo eso, así que todo lo que nos den pasa por ella primero. Las pistolas de plasma molan, y podemos juguetear con uno de sus "blasters" tan famosos. Espero que sea tan derrite-caras como suena.\c- diff --git a/lore/es/omnisight.txt b/lore/es/omnisight.txt index 401fec5ce..d459afb1f 100644 --- a/lore/es/omnisight.txt +++ b/lore/es/omnisight.txt @@ -13,4 +13,4 @@ La **Omnivisión** es un dispositivo adicional programable para el **Demolicioni Los dispositivos de Omnivisión pueden ser fácilmente rellenados por operadores de reconocimiento gracias al software y hardware especializados de **Akari Labs**, compatibles directamente con la mayoría de distribuciones de Linux. Se pueden descargar drivers para otras plataformas de la página web de Akari Labs, aunque su estabilidad no está garantizada. \cxNotas de Saya:\c- -\cfPra que lo sepas, un monte de peña arriesga sus vidas metiendo los datos de estas cosas, así que más te vale pagar respetos cuando te encuentres una. Puede que sean voluntarios, pero sus vidas son tan valiosas como las de cualquier otro.\c- +\cfPara que lo sepas, un monte de peña arriesga sus vidas metiendo los datos de estas cosas, así que más te vale pagar respetos cuando te encuentres una. Puede que sean voluntarios, pero sus vidas son tan valiosas como las de cualquier otro.\c- diff --git a/lore/es/onoke.txt b/lore/es/onoke.txt index bc98a68f3..9d537f5dd 100644 --- a/lore/es/onoke.txt +++ b/lore/es/onoke.txt @@ -8,13 +8,13 @@ TXT \cxLocalización:\c- \cf Kereshnovka\c- -En Octubre de 2003, un incendio ocurrió en la **Mansión Onoke**, a las afueras de **Kereshnovka**, durante una reunión entre las familias **Imanaki** y **Onoke**. Cuando los bomberos llegaron, encontraron a todos muertos, habiendo sido cada uno asesinado de formas más y más cruentas. El culpable nunca fue encontrado. +En Octubre de 2003, un incendio ocurrió en la **Mansión Onoke**, a las afueras de **Kereshnovka**, durante una reunión entre las familias **Imanaki** y **Onoke**. Cuando los bomberos llegaron, encontraron a todos muertos, habiendo sido todos envenenados y sus cadáveres profanados. El culpable nunca fue encontrado. Hay muchas teorías sobre lo que pudo haber ocurrido. La mayoría apunta a que esto haya sido el trabajo de **Hynnykka la Gran Bruja**, una asesina en serie de hace siglos (o un posible sucesor), mencionando el hecho de que su última nota puede tener la interpretación potencial de referirse a estas dos poderosas familias ("todos morirán"). Esto no solo ha sido visto como algo difícilmente relacionado, dada la vaga interpretación, sino también mucho más dudoso por que algo así no pudo ser hecho por un solo individuo. Otra teoría apunta a un suicidio ritual, aunque no hubiese una clara explicación de por que algo así se hubiera hecho. Ambas familias se encontraban en buenos términos, y esta reunión era en celebración del matrimonio entre dos de sus miembros, marcando el inicio de una alianza muy beneficiosa. -Muchas otras teorías, cada una más ridícula que la anterior, mencionan posibilidades de ataques por cultistas, los ghouls del pueblo, o una especie de asesinato planeado por familias rivales (de las cuales no se ha conocido ninguna). +Muchas otras teorías, cada una más ridícula que la anterior, mencionan posibilidades de ataques por cultistas, los ghouls del pueblo, o una especie de asesinato planeado por familias rivales (de cuya participación no se ha conocido ningún caso). A día de hoy, nadie sabe lo que realmente ocurrió entonces, y el caso sigue sin resolver. Solo una persona sobrevivió, **Tetsuya Imanaki**, CEO de **Imanaki Corp**, pero solo por su ausencia al evento. diff --git a/lore/es/parker.txt b/lore/es/parker.txt new file mode 100644 index 000000000..0e16405c9 --- /dev/null +++ b/lore/es/parker.txt @@ -0,0 +1,25 @@ +TXT + \cxNombre Completo:\c- + \cf Parker Edgar Munch III\c- + \cxNacionalidad:\c- + \cf Americana\c- + \cxFecha de Nacimiento:\c- + \cf (No especificada)\c- + \cxOcupación:\c- + \cf Ingeniero Jefe (Innovaciones Munch)\c- + + + + +Nacido y criado en **Austin, Texas**, **Parker** es el hijo mayor del fundador y CEO de **Innovaciones Munch**, **Allen Munch**. A diferencia de su padre, sin embargo, sus intereses van más allá del mundo de los aparatos del hogar inteligentes. + +Como ávido coleccionista de armas, se impuso el crear su propio armamento casero, ya desde una edad temprana. Los muchos artilugios que crearía serían compartidos en línea. Los comentarios que recibiría le ayudarían a mejorar sus habilidades creativas más y más, a pesar de la indiferencia de su padre. Sin embargo, el éxito de su pequeña empresa no pudo ser ignorado, y así, el pequeño taller que había creado él solo pronto formó también parte de la compañía de su padre. + +La creación más notable de Parker en años recientes es la **Pistola de Explodium**, la primera arma creada para el uso de **Explodium** como carga altamente explosiva a partir de sus cartuchos propietarios **.387 EX**. + +\cxNotas de Saya:\c- +\cfA ver, es que veo la foto y hay algo que me sigue inquietando. ¿Por que me resulta tan familiar? Es que lo juro, es como que lo tengo justo ahí en lo profundo de la mente y no puedo sacarlo.\c- + +\cfTampoco sé mucho del tío este. Como dije, apareció de repente y me pidió que su pistola formara parte de tu arsenal, y luego se fue como si nada después de apretarnos la mano.\c- + +\cfY en serio, es que tampoco he podido encontrar información de él aparte de la cortísima biografía en la página de Munch. ¿Pero quien es este tío?\c- diff --git a/lore/es/parthoris.txt b/lore/es/parthoris.txt index aa35f6032..4af9d6105 100644 --- a/lore/es/parthoris.txt +++ b/lore/es/parthoris.txt @@ -4,11 +4,11 @@ TXT \cxClasificación:\c- \cf Mundo alternativo\c- -**Parthoris** es uno de los varios mundos extra-universales que fueron descubiertos en las fases iniciales de los experimentos con interportales de **Akari Labs**, como parte del **Proyecto Akari**. En su centro se encuentra una tierra dividida en siete naciones, en una fase de desarrollo que uno describiría como "medieval", aunque hay una clara presencia de fuerzas mágicas. Sin embargo, se ha reportado la presencia de de tecnología curiosamente avanzada, en una zona lejana, identificada como la guarida de una especie de poderoso lich. +**Parthoris** es uno de los varios mundos extra-universales que fueron descubiertos en las fases iniciales de los experimentos con interportales de **Akari Labs**, como parte del **Proyecto Akari**. En su centro se encuentra una tierra dividida en siete naciones, en una fase de desarrollo que uno describiría como "medieval", aunque hay una clara presencia de fuerzas mágicas. Sin embargo, se ha reportado la presencia de tecnología curiosamente avanzada, en una zona lejana, identificada como la guarida de una especie de poderoso lich. -Cuando este mundo fue localizado inicialmente, hubo signos claros de haber pasado por algún tipo de gran batalla. Las siete naciones estaban bajo el control de un individuo llamado **D'Sparil**, quien había tomado el mando por la fuerza con sus ejércitos. La causa exacta de esto se desconoce, pero al momento de escribirse este artículo, el **Demolicionista** ha sido enviado para investigar, y eliminar cualquier amenaza en el proceso. +Cuando este mundo fue localizado inicialmente, hubo signos claros de haber pasado por algún tipo de gran batalla. Las siete naciones estaban bajo el control de un individuo llamado **D'Sparil**, quien había tomado el mando por la fuerza con sus ejércitos. La causa exacta de esto se desconoce, pero al momento de escribirse este artículo, la **Demolicionista** ha sido enviado para investigar, y eliminar cualquier amenaza en el proceso. \cxNotas de Saya:\c- \cfHay un monte de cosas interesantes por ahí y voy a estar muy pendiente del directo. Esta es la primerísima vez que hacemos una exploración de todo, sabes, así que quiero ver TODO lo que pueda haber aquí.\c- -\cfNo sé si te vas a acercar al sitio ese, la tal "Guarida de Malumax". Mira que tengo curiosidad por eso, el hecho de que haya un tío con acceso a cosas modernas en esta maravilleante tierra de fantasía medieval.\c- +\cfNo sé si te vas a acercar al sitio ese. Mira que tengo curiosidad por eso, el hecho de que haya un tío con acceso a cosas modernas en esta maravillante tierra de fantasía medieval.\c- diff --git a/lore/es/plasmablast.txt b/lore/es/plasmablast.txt index 9329f66a4..b61db1fed 100644 --- a/lore/es/plasmablast.txt +++ b/lore/es/plasmablast.txt @@ -8,19 +8,19 @@ TXT \cxClasificación:\c- \cf Pistola de Plasma\c- -Desarrollado antaño por **Nuutek**, y actualmente descontinuado pero todavía siendo producido por entusiastas basándose en sus planos públicos, el **Blaster de Plasma** fue la primera arma de plasma de fabricación **Nukuri**, diseñado para reemplazar el típico armamento balístico de aquella época. Liberando pequeñas descargas de **Nokorokinylum** encendido, es capaz de neutralizar rápidamente cualquier objetivo menor. +Desarrollado antaño por **Nuutek**, y actualmente descontinuado pero todavía siendo producido por entusiastas basándose en sus planos públicos, el **Blaster de Plasma** fue la primera arma de plasma de fabricación **Nukuri**, diseñado para reemplazar el típico armamento balístico de aquella época. Liberando pequeñas descargas de **Nokorokinylum** candente, es capaz de neutralizar rápidamente cualquier objetivo menor. \cfFuego Primario:\c- Rápidos disparos de plasma abrasador. Los proyectiles se desplazarán muy rápido, pero se disiparán tras pasar cierta distancia. \cfFuego Secundario:\c- Disparo cargado. Mantener y soltar. Un proyectil más lento, pero mucho más fuerte y destructivo, especialmente si se carga con una célula completa. El arma debe ser sujeta con ambas manos, ya que la inestabilidad inducida por la carga interna de plasma puede dificultar el apuntar con una sola mano. -\cfRecarga:\c- Reemplaza la célula de munición del arma. Cada una puede potenciar hasta 15 disparos. +\cfRecarga:\c- Reemplaza la célula de munición del arma. Cada una puede potenciar hasta 8 disparos. \cfTécnicas:\c- Obtener un segundo Blaster de Plasma permite alternar a modo dual. El fuego secundario en este modo dispara el arma a mano izquierda. Dada la alta disponibilidad de los materiales usados, y una amistad compartida entre Nuutek y su antiguo competidor **Nekuratek**, tienes acceso gratuito a un abastecimiento prácticamente ilimitado de munición para este arma. \cxNotas de Saya:\c- -\cfYa sabes, si te parece que derretir rodillas mola más que hacerlas explotar, esta también es una buena opción. He oído que hay toda clase de variantes absurdas de la pistola esta por ahí, ya que es de código abierto y tal. Se han hecho escopetas, rifles, hasta lanzallamas usando plasma de Nokron, buf.\c- +\cfYa sabes, si te parece que derretir rodillas mola más que hacerlas explotar, esta también es una buena opción. He oído que hay toda clase de variantes absurdas de la pistola esta por ahí, ya que es de código abierto y tal. Se han hecho escopetas, rifles, hasta lanzallamas usando plasma de Sydon, buf.\c- \cfTambién gracias a mi muy valiosa amistad con Zana-sama, como puedes ver nos dan munición gratis para la cosa. Bastante cómodo, vaya. Ojalá fuese igual para todo tu arsenal entero, pero la vida no es tan fácil.\c- diff --git a/lore/es/propulsor.txt b/lore/es/propulsor.txt index 5a77f0680..88cb85e38 100644 --- a/lore/es/propulsor.txt +++ b/lore/es/propulsor.txt @@ -13,7 +13,7 @@ El **Impulsor JetBurst™** es una de los primeras unidades de jetpack realmente Gracias a sus células patentadas de energía autoregenerable, la unidad tiene la garantía de permanecer útil durante muchos años, requiriendo solo un suministro constante de hidrógeno (que puede incluso venir del aire alrededor de sí). \cxNotas de Saya:\c- -\cfSabes, Ibuki solía llevar uno de estos también, cuando estaba en América haciendo todas esas cosas que se supone que tenía que hacer (y después). Podía volar por ahí y hacer toda clase de piruetas ridículas y tal, pero supongo que tú no puedes, claro. A ver, no te estoy llamando gorda ni nada... bueno... a ver, pesas 500kg, eso está claro.\c- +\cfSabes, Ibuki solía llevar uno de estos también, con todo el exoesqueleto blindado que llevaba para la guerra en aquellos tiempos. Podía volar por ahí y hacer toda clase de piruetas ridículas y tal, pero supongo que tú no puedes, claro. A ver, no te estoy llamando gorda ni nada... bueno... a ver, pesas 500kg, eso está claro.\c- \cfEn serio... si hubiera sabido que el almacero pesa tanto, no habría usado un blindaje tan pesado para tu cuerpo, porque a ver, si que dije lo de que lo quería "EXTRA THICC" cuando Misa me preguntó, en plan coña, pero se lo tomó muy en serio.\c- diff --git a/lore/es/puntzerbeta.txt b/lore/es/puntzerbeta.txt index f447a6bde..9108a9d2a 100644 --- a/lore/es/puntzerbeta.txt +++ b/lore/es/puntzerbeta.txt @@ -4,19 +4,19 @@ TXT \cxFabricante:\c- \cf Blackmann Arms S.L.\c- \cxClasificación:\c- -\cf Revólver de Acción Simple\c- +\cf Revólver Semiautomático\c- La serie **Puntzer** de armas de **Blackmann Arms** son el principal ejemplo del potencial de su patentada munición perforadora **Spin Motion Wedge (SMW)**. -El **Puntzer Beta** es un revólver de acción simple con cañón basculante de seis disparos, equipado con partes muy robustas, ideales para fanáticos del disparo en abanico. +El **Puntzer Beta** es un revólver semiautomático con cañón basculante de seis disparos, equipado con partes muy robustas. \cfFuego Primario:\c- Disparos lentos y precisos. -\cfFuego Secundario:\c- Mantén para entrar en modo abanico, suelta para salir. En este modo, puedes pulsar/mantener el fuego primario para disparar mucho más rápido, pero con menor precisión. +\cfFuego Secundario:\c- Activa el modo de "descarga rápida", tras lo cual apretar el gatillo causará que seis disparos se realicen en rápida sucesión. \cfFuego Terciario:\c- Gira el arma desenfrenadamente, por diversión. \cfRecarga:\c- Recarga el arma. Gracias al sistema de recarga rápida provisto por tu **Contenedor de Hammerspace™**, simplemente tienes que mantener la palma abierta sobre el tambor, las balas serán cargadas automáticamente. \cxNotas de Saya:\c- -\cfAh, el revólver, un arma muy clásica, famoso por todas esas películas americanas del "salvaje oeste". Pero este es especial, oh sí. Esas putas balas espirales son un puto desmadre, girando a lo bestia y taladrando a través de todo. Hermann-senpai nos manda las de tipo ".05" específicamente, que son las más potentes de todas, y supuestamente pueden taladrar a través de las paredes y todo. Eso va a ser divertido.\c- +\cfAh, el revólver, un arma muy clásica, famoso por todas esas películas americanas del "salvaje oeste". Pero este es especial, oh sí. Es bastante raro ya encontrar un revólver semiautomático, ¿pero además uno con un modo automático? Y esas putas balas espirales son un puto desmadre también, girando a lo bestia y taladrando a través de todo. Hermann-senpai nos manda las de tipo ".05" específicamente, que son las más potentes de todas, y supuestamente pueden taladrar a través de las paredes y todo. Eso va a ser divertido.\c- diff --git a/lore/es/puntzergamma.txt b/lore/es/puntzergamma.txt index 6b66f4484..9a0bfcfb0 100644 --- a/lore/es/puntzergamma.txt +++ b/lore/es/puntzergamma.txt @@ -8,11 +8,11 @@ TXT La serie **Puntzer** de armas de **Blackmann Arms** son el principal ejemplo del potencial de su patentada munición perforadora **Spin Motion Wedge (SMW)**. -El **Puntzer Gamma** es un subfusil bullpup mayormente compacto con un sistema de cargador horizontal similar a clásicos del siglo 21 como el **BreakerTek P90**. El arma es adicionalmente capaz de ejecutar un modo "Súper-Automático" de disparo ultrarrápido, visto también en otras armas automáticas fabricadas por Blackmann Arms. +El **Puntzer Gamma** es un subfusil mayormente compacto, que emplea una peculiar disposición de cargador en hélice donde, a diferencia de otras armas en las que el cargador se coloca por encima o por debajo, aquí se incrusta en el lateral del arma. El Gamma es bien conocido por ser capaz de ejecutar un modo "Súper-Automático" de disparo ultrarrápido, visto también en otras armas automáticas fabricadas por Blackmann Arms, para vaciar un cargador entero lo más rápido posible. \cfFuego Primario:\c- Disparo en modo automático. -\cfFuego Secundario:\c- Ráfaga en modo "super-automático". +\cfFuego Secundario:\c- Alterna entre dos velocidades de disparo. \cfRecarga:\c- Recarga, obviamente. Los autocargadores de tu **Contenedor de Hammerspace™** te proveerán de un cargador nuevo en cada momento. diff --git a/lore/es/pusherweapon.txt b/lore/es/pusherweapon.txt deleted file mode 100644 index 15b2dedcc..000000000 --- a/lore/es/pusherweapon.txt +++ /dev/null @@ -1,20 +0,0 @@ -TXT -\cxDesignación:\c- -\cf Taladro Percutor de Microfusión "Pusher"\c- -\cxFabricante:\c- -\cf Instituto Tecnológico Tach-Engine\c- -\cxClasificación:\c- -\cf Herramienta de Minería\c- - -El **Pusher** es un taladro percutor relativamente portátil hecho para tareas de minería y construcción. Su portabilidad viene en parte por el uso de una batería interna de microfusión, también cortesía de **Tecnologías Tach-Engine**, ofreciendo suficiente potencia para 300 horas de uso constante. Tecnologías Tach-Engine no se hace responsable por el uso indebido de esta herramienta. - -\cfFuego Primario:\c- Operación normal. Apunta la broca hacia lo que necesites romper, y mantén pulsado el gatillo superior. - -\cfFuego Secundario:\c- Para aquellos casos en los que encuentres un material realmente duro y difícil de romper. Gira el mango lateral hasta que la broca haya retrocedido hasta una distancia que consideres adecuada, y luego pulsa el gatillo principal para golpear el objetivo, con la fuerza cargada. - -\cfADVERTENCIA:\c- La sujeción indebida durante la operación secundaria puede causar que la herramienta se resbale, mantén siempre el área libre para evitar daños colaterales. - -\cxNotas de Saya:\c- -\cfSí, las motosierras son lo típico en cuanto a "herramienta hecha arma", todos lo sabemos, pero, ¿y un puto martillo neumático?\c- - -\cfAhora que lo pienso, eso me recuerda a aquella metedura de pata tremenda de Mixom. Los frikis de la UAC pidieron un monte de martillos neumáticos para Mars City una vez, y los burros esos van y mandan motosierras. Pues vaya lío ese, ¿no crees?\c- diff --git a/lore/es/quadravol.txt b/lore/es/quadravol.txt index 4ca4dc451..63085e988 100644 --- a/lore/es/quadravol.txt +++ b/lore/es/quadravol.txt @@ -4,7 +4,7 @@ TXT \cxFabricante:\c- \cf Eushura Kmonn Jr.\c- \cxClasificación:\c- -\cf Lanzadora de Proyectiles Ígneos\c- +\cf Pistola(?) Incendiaria\c- Una poderosa arma incendiaria proveniente de **Kmonn Shuna**, preciada por comandantes **Xekkian**. La **Quadravol** dispara bolas de fuego abrasador que explotan espectacularmente en contacto con cualquier cosa, liberando un intenso calor y fuerza cinética. Es considerada muy útil contra grupos ya que la fuerza de impacto es lo suficientemente potente para dispersarlos rápidamente. Un rasgo muy característico del arma es el hecho de que las llamas que salen de ella arderán con fuerza incluso bajo el agua. @@ -16,20 +16,32 @@ El nombre del arma viene del idioma **Xekkas**, y se traduce como **Cruz Ardient La Cruz Ardiente era el nombre de la espada del general la cual, al ser imbuida de magia, podía liberar mortíferos cortes cruzados de llamas fulminantes. -\cfFuego Primario:\c- Disparo de gran bola de fuego. Desvío mucho menor, por lo que su rango efectivo es muy largo. Incendia objetivos cercanos al impactar. +\cfFuego Primario:\c- Dispara grandes bolas de fuego, las cuales incendiarán objetivos cercanos al impactar. \cfFuego Secundario:\c- Bombea combustible adicional, incrementando la potencia de tus disparos, pero también su desvío, haciéndolos menos precisos. La sobrecarga excesiva puede resultar en una imprecisa descarga accidental, pero incluso esto tiene sus usos. -\cfFuego Terciario:\c- Mantén y pulsa fuego primario para alternar el modo de dispersión. Varias bolas de fuego menores (número relativo a la carga), con un desvío incrementado y rango efectivo menor, pero muy útil contra múltiples objetivos. Mantén y pulsa fuego secundario para alternar la postura de arma entre dos manos y una mano. Esto solo sirve para ser más vistoso al bombear, y no altera tu puntería pero si hace los disparos más lentos. +\cfFuego Terciario:\c- Alterna la postura de arma entre dos manos y una mano. Esto solo sirve para ser más vistoso al bombear, y no altera tu puntería pero si hace los disparos más lentos. \cfRecarga:\c- Inserta hasta cinco células de combustible en el tubo del arma. Cada célula es vaciada immediatemente en el "crisol" interno del arma, así que puedes cargar munición adicional mientras incrementas la carga. \cfTécnicas:\c- El arma tiene un cierto movimiento especial "extra efectivo" si te encuentras a poca distancia de tu objetivo. Hundiendo las cuatro bayonetas en el enemigo e inmediatamente después apretando el gatillo resultará en una potente explosión a bocajarro que lo enviará volando, cubierto en llamas. +Los diversos niveles de carga del crisol interno parecen alterar dramáticamente el comportamiento del proyectil. Los cambios más notables se reflejan aquí: + +\cfNivel 1:\c- Proyectil estable y veloz, con un radio de explosión moderado. + +\cfNivel 2:\c- Proyectil más lento con algo de desviación, mayor rango y daño de explosión. + +\cfNivel 3:\c- Proyectil lento, masivo, errático, con un potencial de explosión más dramático. Se rompe en sub-proyectiles al impactar. + +\cfNivel 4:\c- El proyectil se divide en múltiples fragmentos al salir del cañón. Cada sub-proyectil es solo ligeramente más débil que una bola de fuego de nivel 1. + +\cfNivel 5:\c- Llegado este punto, cualquier proyectil que fuera disparado explotará al instante hacia fuera. Este ataque es muy destructivo, y su daño y rango pueden incrementar aun más si todavía queda una célula llena en la recámara. + \cxNotas de Saya:\c- \cfTípicas ñoñerías superdramáticas de los Xekkian. La "Cruz Ardiente", en serio... Pero mola tanto como suena, al menos.\c- -\cfY por supuesto es jodidamente enorme, también, aunque la empuñadura está supuestamente adaptada. En serio que se me hace rarísimo como puedes hacer eso de... agrandar las manos, pero al menos te permite usar cosas así fácilmente.\c- +\cfY por supuesto es jodidamente enorme para lo que se supone que es una pistola. En serio, con esta gente, es que nunca se sabe. Hasta sus "armas ligeras" son gigantescas.\c- \cfEn fin, putas bolas de fuego, ¿¿¿que funcionan bajo el agua??? Voy a tener que echarle un ojo a la ciencia detrás de esto porque eso no tiene puto sentido y aun así... está ahí.\c- diff --git a/lore/es/rafankos.txt b/lore/es/rafankos.txt index 242ad29d2..f1b35f60d 100644 --- a/lore/es/rafankos.txt +++ b/lore/es/rafankos.txt @@ -8,17 +8,21 @@ TXT Ideada por un supuestamente "loco" y "desquiciado" ingeniero de la División de Armas Avanzadas de **Nekuratek**, el desarrollo de este arma se vio interrumpido mucho antes de alcanzar sus ambiciosos planes. Citando que este ingeniero cuyo nombre no será revelado "jugó a demasiados videojuegos", fue interrumpido antes de que llegara a implementar la friolera de 15 diferentes modos de operación del arma, haciéndola extremadamente complicada, costosa y "completamente ridícula". -El proyecto **Rafan-Kos** ("Arma Definitiva" en Nukuribaku) solo sería completado en parte una vez el jefe de ingeniería **Zanaveth Nekuraku I** se plantara personalmente para pedir que cesara tal "inanidad". El resultado final pareció satisfactorio a pesar de las quejas de su creador, y sería finalmente comercializado. +El proyecto **Rafan-Kos** ("Arma Definitiva" en Nukuribaku) solo sería completado en parte una vez el jefe de ingeniería **Zanaveth Nekuraku I** se plantara personalmente para pedir que cesara tal "inanidad". El resultado final pareció satisfactorio a pesar de las quejas de su creador, y sería finalmente comercializado... Durante poco tiempo. El arma emplea **Kabbadon** como combustible, un subproducto común de la fusión de **Nokorokinylum**, haciéndolo así fácil de fabricar. Sin embargo, dada la densidad y pureza requeridas en la creación de una sola cápsula de combustible hacen que su precio escale dramáticamente. -\cfFuego Primario:\c- Libera un radiante estallido de energía que se abre paso a través de todo, soltando chispas en todas direcciones a su paso y quemando objetivos cercanos. El estallido arde durante un máximo de cinco segundos antes de disiparse rápidamente. +\cfFuego Primario:\c- Libera un radiante estallido de energía que se abre paso a través de todo, soltando chispas en todas direcciones a su paso y quemando objetivos cercanos. El estallido arde durante un máximo de diez segundos con una cápsula cargada del todo. -\cfFuego Secundario:\c- Libera varios estallidos dispersos en un cono amplio, con un potencial destructivo similar, pero ardiendo más rápido, con mayor intensidad, y disipándose mucho antes. +\cfFuego Secundario:\c- Libera varios estallidos dispersos en un cono amplio, con una fracción del potencial destructivo total en cada uno. La cápsula se consumirá el doble de rápido en este modo. -\cfRecarga:\c- Coloca un nuevo cargador, cada uno almacenando cuatro cápsulas. La cápsula cargada debe gastarse completamente antes de poder insertar una nueva en la recámara. +\cfRecarga:\c- Coloca un nuevo cargador, cada uno almacenando cuatro cápsulas. La cápsula cargada debe gastarse completamente antes de poder insertar una nueva en la recámara (la eyección de la cápsula usada es automática). + +\cfTécnicas:\c- Al usar un solo gatillo con diferentes grados de presión, la acción de alternar entre ambos modos de disparo es completamente fluida. \cxNotas de Saya:\c- \cf¿"Arma Definitiva"? Menuda cursilada... Pero sabes, algo de todo esto hacía que me picotearan los sesos, y entonces todo encajó. Esta cosa es básicamente como esa carta de hechizo, la Chispa Maestra. Hostia, es que hasta suena y pinta igual...\c- \cfJoder, si mola y todo, en serio. Me gusta, así que la puse en el mismo sitio que el otro armatoste súper descoyuntante. Ya sabes, como una alternativa más segura con la que tendrás menos posibilidades de matarte. He de admitir que Misa-Misa nos ha cargado con un material potente al traernos estas dos.\c- + +\cfPS: No intentes comer las cápsulas, ¿vale?\c- diff --git a/lore/es/raykhom.txt b/lore/es/raykhom.txt index 99c1ce728..da2331d52 100644 --- a/lore/es/raykhom.txt +++ b/lore/es/raykhom.txt @@ -8,15 +8,15 @@ TXT Desde su creación por el **Profesor Eushura Kmonn Jr.**, la **Ray-Khom** se ha quedado con un puesto permanente en el equipamiento de cada soldado **Xekkian**. Fiable, eficiente, necesitando casi ningún mantenimiento al carecer de partes móviles a excepción de su mecanismo de carga. La munición es adicionalmente muy fácil de conseguir, al menos localmente, ya que la exportación lleva consigo severos impuestos. -El arma es potenciada en su totalidad por un compacto paquete de batería de cuatro celdas de Korberon-Eneiebium, fácil de reemplazar cuando se necesite. La munición viene en cargadores de 20. La munición en sí, proyectiles magnetizados sin casquillo de 40mm, incrustados de una carga de ignición hiperdensa de Dyratin, liberando potentes descargas de plasma ultracaliente, capaz de derretir rápidamente cualquier cosa a excepción de blindaje de Almacero de alta resonancia y causando potentes, urticantes quemaduras en piel Xekkian (o corrosión severa de tejido muscular y óseo en cualquier cosa más débil). +El arma es potenciada en su totalidad por un compacto paquete de batería de cuatro celdas de Korberon-Eneiebium, proporcionando un abundante suministro energético. La munición viene en cargadores de 10. La munición en sí, proyectiles magnetizados sin casquillo de 40mm, incrustados de una carga de ignición hiperdensa de Dyratin, liberando potentes descargas de plasma ultracaliente, capaz de derretir rápidamente cualquier cosa a excepción de blindaje de Almacero de alta resonancia y causando potentes, urticantes quemaduras en piel Xekkian (o corrosión severa de tejido muscular y óseo en cualquier cosa más débil). \cfFuego Primario:\c- Fuego continuo, rápido y preciso. Retroceso mínimo dada la operación electromagnética, mayormente silencioso ya que los proyectiles son disparados a una velocidad poco menor que la del sonido. Tus enemigos tienen la garantía de no enterarse de tu ataque hasta ser demasiado tarde. -\cfFuego Secundario:\c- Emplea los emisores de pulsos concentrados a lo largo de los filos del arma, emitiendo una potente descarga eléctrica delante del usuario, aturdiendo temporalmente todo lo que se acerque. Puede causar la muerte de objetivos débiles. Se recomienda usar con moderación, ya que consume rápidamente la batería. +\cfFuego Secundario:\c- Emplea los emisores de pulsos concentrados a lo largo de los filos del arma, emitiendo una potente descarga eléctrica delante del usuario, aturdiendo temporalmente todo lo que se acerque. Puede causar la muerte de objetivos débiles. Se ha de tener en cuenta que esta acción no se debe realizar así porque sí, ya que los condensadores requieren mucho tiempo para recargarse por completo, temporalmente desactivando también la función de fuego primario. -\cfRecarga Primaria:\c- Recarga el arma. +\cfRecarga:\c- Recarga el arma. -\cfRecarga Secundaria:\c- Cambia la batería. Esta acción solo puede hacerse en cuanto la carga sea lo suficientemente baja, ya que sería un derroche de otro modo. +\cfZoom:\c- Usa la mira para disparos a distancia. El nivel de aumento se ajusta automáticamente en base al sondeo de distancia, y la mira además simulará la trayectoria del proyectil sobre la marcha, para que puedas saber exactamente donde apuntar. \cfTécnicas:\c- El fuego secundario incrementa en letalidad al usarse en líquidos conductivos tales como el agua. Simplemente asegúrate de no estar en contacto con ella. diff --git a/lore/es/refresher.txt b/lore/es/refresher.txt index a9cf1cf8d..7a7daa20f 100644 --- a/lore/es/refresher.txt +++ b/lore/es/refresher.txt @@ -3,7 +3,7 @@ Refrescador TXT \cxDesignación:\c- \cf Refrescador\c- -\cfFabricante:\c- +\cxFabricante:\c- \cf Desconocido\c- \cxClasificación:\c- \cf Artefacto Curativo\c- diff --git a/lore/es/reubens.txt b/lore/es/reubens.txt new file mode 100644 index 000000000..1a087ea67 --- /dev/null +++ b/lore/es/reubens.txt @@ -0,0 +1,25 @@ +TXT + \cxNombre Completo:\c- + \cf Reubens Cyrus Karnanaiahmani\c- + \cxNacionalidad:\c- + \cf Qurensniv\c- + \cxFecha de Nacimiento:\c- + \cf 244 AC\c- + \cxOccupation:\c- + \cf CEO, CTO (Cyrus Enterprises)\c- + \cxTwitter:\c- + \cf @rbkhmani\c- + + +**Reubens es el segundo hijo del difunto **Marc Pyurgi Karnanaiahmani**, anterior líder del viejo **Reino de Karnanaiahma**, ahora reformado como la **República de Karnanaiahma** por su hermano mayor **Rubin Mhul Karnanaiahmani**. Durante el reinado tiránico de su difunto padre, huyó del país junto con varios individuos los cuales habían sido señalados como "traidores" por el monarca demente, todo resultando de una peculiar profecía la cual decía que **"un hombre Qurensniv de pelo rubio y ojos verdes causará el hundimiento del reino"**. El resultado de este éxodo fue la formación del pueblo de **Kereshnovka** en **Siberia** central, del cual es alcalde hasta el día de hoy. + +Adicionalmente, como hombre de gran intelecto y con un interés en impulsar la evolución tecnológica, fundó su propio startup, **Cyrus Enterprises**, del cual es el único empleado. A pesar de esto, han surgido grandes logros de esta pequeña empresa, gracias principalmente a las muchas otras compañías que ofrecen financiación y recursos de manufactura para que siga creando y vendiendo toda clase de artilugios technológicos, especialmente aquellos con aplicaciones militares. + +Reubens es bien conocido no solo por ser un inventor nato, sino también por ser todo un experto en combate cuerpo a cuerpo, siendo diez veces campeón de **Ko-Ron-Jai** (artes marciales Qurensniv), y también un disparador excelente, capaz de alcanzar la cabeza de una cerilla desde un kilómetro de distancia con un simple revolver (aunque esto último no ha sido confirmado). También es un ávido gamer, y se le ha notado comparar muchas veces la vida real y los videojuegos, a veces hasta niveles preocupantes. + +\cxNotas de Saya:\c- +\cfEs un friki, UN PUTO FRIKI, ¡UN FRIKAZO!\c- + +\cfHala, ya lo he dicho. Es que sí, vale, lo que hace, mola y tal, pero MADRE DE DIOS es que el tío me pone de los nervios a veces con su frikismo de videojuegos. ¿No dejarte ir por ahí con todo equipado, y en vez de eso CISCÁNDOLO TODO POR AHÍ para que lo recojas? Esa es una. Que después de cada misión decida quitarte TODO lo que pillaste, es otra cosa también. Pero, que nos suelte unas pelillas cada vez que revientes a algún maleante, eso puedo aceptarlo, que nos vale para cubrir los costes de todo.\c- + +\cfA ver, puede que me ponga de los nervios, sí, pero el tío fue mi primer socio ahí en plan negocios serios, y joder, tampoco es tan malo aparte de todo el frikismo que suelta... Y bueno, siendo sincera, yo también soy toda una friki repelente, y puedes citarme en eso.\c- diff --git a/lore/es/rika.txt b/lore/es/rika.txt new file mode 100644 index 000000000..03a2c256c --- /dev/null +++ b/lore/es/rika.txt @@ -0,0 +1,52 @@ +TXT + \cxNombre Completo:\c- + \cf Rika Isuzu\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2049-02-08\c- + \cxOcupación:\c- + \cf Entrenadora de Combate (Akari Labs)\c- + + + + +**Rika** fue creada en 2049 como una de las primeras en una serie de **Maidbots** creadas con cuerpos masculinos, diseñados inicialmente para uso militar. Sin embargo, tras su baja de servicio y consiguiente rehabilitación, optó por tomar una forma más femenina, convirtiéndose así en la primera Maidbot transgénero conocida. + +A pesar de su popularidad, aun no ha logrado encontrar una familia adoptiva, por lo que reside en **Akari Labs**, trabajando a tiempo parcial como guarda de seguridad. Eso sí, una vez se realizó el proyecto **Demolicionista**, encontró su nueva vocación: Entrenar al ya mencionado robot de combate. + +Una de las aficiones de Rika es el cosplay, una vez habiéndose disfrazado de uno de los personajes de videojuego favoritos de **Ibuki Miyamoto** por su cumpleaños. Queda decir que el éxito del cual le concedió un lugar entre las innumerables novias del **Oni Rojo**. + +Otra de sus aficiones es la práctica de tiro, para el auto-proclamado propósito de "no dejar que se me pudra mi maestría tope guay". Es la responsable de montar un campo de tiro interior dentro de las instalaciones de Akari Labs, para uso libre de cualquiera, aunque normalmente lo frecuentan ella, Ibuki y **Saya Miyamoto**. + +\cxNotas de Saya:\c- +\cfMola que se ofreciera voluntaria para entrenarte. A ver, es que tampoco iba Meido a hacer ese trabajo, ya sabes que no le gustan las armas y tal.\c- + +\cfSeguro que harás que se sienta orgullosa de ti, Demo-chan.\c- +TXT + \cxNombre Completo:\c- + \cf Rika Isuzu\c- + \cxNacionalidad:\c- + \cf Japonesa\c- + \cxFecha de Nacimiento:\c- + \cf 2049-02-08\c- + \cxOcupación:\c- + \cf Entrenadora de Combate (Akari Labs)\c- + + + + +**Rika** fue creada en 2049 como una de las primeras en una serie de **Maidbots** creadas con cuerpos masculinos, diseñados inicialmente para uso militar. Sin embargo, tras su baja de servicio y consiguiente rehabilitación, optó por tomar una forma más femenina, convirtiéndose así en la primera Maidbot transgénero conocida. + +A pesar de su popularidad, aun no ha logrado encontrar una familia adoptiva, por lo que reside en **Akari Labs**, trabajando a tiempo parcial como guarda de seguridad. Eso sí, una vez se realizó el proyecto **Demolicionista**, encontró su nueva vocación: Entrenar al ya mencionado robot de combate. + +Una de las aficiones de Rika es el cosplay, una vez habiéndose disfrazado de uno de los personajes de videojuego favoritos de **Ibuki Miyamoto** por su cumpleaños. Queda decir que el éxito del cual le concedió un lugar entre las innumerables novias del **Oni Rojo**. + +Otra de sus aficiones es la práctica de tiro, para el auto-proclamado propósito de "no dejar que se me pudra mi maestría tope guay". Es la responsable de montar un campo de tiro interior dentro de las instalaciones de Akari Labs, para uso libre de cualquiera, aunque normalmente lo frecuentan ella, Ibuki y **Saya Miyamoto**. + +\cxNotas de Saya:\c- +\cfMola que se ofreciera voluntaria para entrenarte. A ver, es que tampoco iba Meido a hacer ese trabajo, ya sabes que no le gustan las armas y tal.\c- + +\cfSeguro que harás que se sienta orgullosa de ti, Demo-chan.\c- + +\cfActualización: La cara que puso al ver tu nuevo cuerpo de maidbot fue algo digno de enmarcar. Mira, Demo, si las dos, ya sabes, queréis "conoceros mutuamente" un poco más, por mí todo chachi. A ver, si es que estamos todas en una relación abierta. Guiño guiño.\c- diff --git a/lore/es/ryuji.txt b/lore/es/ryuji.txt index e1b319e26..34275c981 100644 --- a/lore/es/ryuji.txt +++ b/lore/es/ryuji.txt @@ -11,7 +11,7 @@ TXT \cf Inventor\c- -**Ryuji** nació en **Gensokyo** en 1956, pasando la mayor parte de su vida en la **Aldea Humana**, el único asentamiento de la región habitado completamente por humanos, en lugar de Youkai. Durante su adolescencia, se volvió bastante rebelde, deseando abandonar la aldea y tener "aventuras". Un día, escapó, y se perdió en el bosque de bambú rodeando **Eientei**. Ahí, se cruzó con **Nana**, la hija de **Kaguya Houraisan**, y los dos se hicieron amigos. Después de ella lo guiara de vuelta a la aldea, Ryuji le prometió que regresaría un día, para casarse con ella, y llevarla con él a ver el mundo exterior. +**Ryuji** nació en **Gensokyo** en 1956, pasando la mayor parte de su vida en la **Aldea Humana**, el único asentamiento de la región habitado completamente por humanos, en lugar de Youkai. Durante su adolescencia, se volvió bastante rebelde, deseando abandonar la aldea y tener "aventuras". Un día, escapó, y se perdió en el bosque de bambú rodeando **Eientei**. Ahí, se cruzó con **Nana**, la hija de **Kaguya Houraisan**, y los dos se hicieron amigos. Después de que ella lo guiara de vuelta a la aldea, Ryuji le prometió que regresaría un día, para casarse con ella, y llevarla con él a ver el mundo exterior. Ryuji y Nana realizaron su "fuga" en 1973, y se asentaron en la ciudad de Kasukabe, donde los dos formaron una familia, comenzando con su primer hijo, **Taro** en 1985, quien sería seguido luego de **Saya** en 1993 y **Yui** en 2009. diff --git a/lore/es/safetytether.txt b/lore/es/safetytether.txt index 3b065f55b..f105ba66c 100644 --- a/lore/es/safetytether.txt +++ b/lore/es/safetytether.txt @@ -14,7 +14,7 @@ Lo que ves aquí es una extensión de la magia empleada en tu **Collar de la Sue Simplemente gira ambos extremos en direcciones opuestas, y el dispositivo se encenderá. Si el usuario se encuentra ya cerca del punto de destino, el transporte será cancelado para evitar el uso accidental, de lo contrario, la luz se volverá azul y el transporte será realizado. \cxNotas de Saya:\c- -\cfAh, la forma perfecta de escapar una sala cerrada...\c- +\cfAh, la forma perfecta de escapar de una sala cerrada...\c- \cfPues sí, esto está basado en tu collar, funciona parecido también, excepto que no soy yo quien lo activa cuando estás en peligro de muerte, y sus efectos son más "dramáticos" (ya lo verás). Es magia simple, realmente. Esos idiotas de la UAC se cagarían los calzones si supieran que hemos tenido la magia para hacer teletransportes distantes, hasta entre universos, mucho antes de que existieran sus experimentos.\c- @@ -33,7 +33,7 @@ Lo que ves aquí es una extensión de la magia empleada en tu **Collar de la Sue Simplemente gira ambos extremos en direcciones opuestas, y el dispositivo se encenderá. Si el usuario se encuentra ya cerca del punto de destino, el transporte será cancelado para evitar el uso accidental, de lo contrario, la luz se volverá azul y el transporte será realizado. \cxNotas de Saya:\c- -\cfAh, la forma perfecta de escapar una sala cerrada...\c- +\cfAh, la forma perfecta de escapar de una sala cerrada...\c- \cfPues sí, esto está basado en tu collar, funciona parecido también, excepto que no soy yo quien lo activa cuando estás en peligro de muerte, y sus efectos son más "dramáticos" (ya lo verás). Es magia simple, realmente. Esos idiotas de la UAC se cagarían los calzones si supieran que hemos tenido la magia para hacer teletransportes distantes, hasta entre universos, mucho antes de que existieran sus experimentos.\c- diff --git a/lore/es/saltbot.txt b/lore/es/saltbot.txt new file mode 100644 index 000000000..f7a1b1d0a --- /dev/null +++ b/lore/es/saltbot.txt @@ -0,0 +1,22 @@ +TAG +Torreta Battle-Boi +TXT +\cxDesignación:\c- +\cf Torreta Battle-Boi\c- +\cxFabricante:\c- +\cf Akari Labs\c- +\cxClasificación:\c- +\cf Sistema de Defensa Portátil\c- + +La **Battle-Boi** es una torreta portátil con control remoto equipada con dos escopetas semiautomáticas alimentadas por **Hammerspace**. Hay múltiples opciones de munición disponibles, pero las unidades actualmente disponibles para tu misión están cargadas con cartuchos de sal de Kinylum del calibre diez, útil para el control de masas dada su potencia de impacto, junto con el rastro de radiación que los fragmentos de sal dejan a su paso. + +Cada unidad puede permanecer operativa durante días, siempre que se reabastezca cuando sea necesario. Conseguirás **Puntuación** por cada enemigo que eliminen, así que esto puede reducir potencialmente el coste de reabastecimiento. + +Si reciben daño, se pueden reparar de forma gratuita al colocarlas en almacenamiento. Ten en cuenta que las unidades emplazadas no serán devueltas si te alejas demasiado del área designada. Si las dejas atrás, se quedarán ahí y se desactivarán automáticamente. + +Dada la naturaleza del control remoto del dispositivo, solo una unidad puede estar activa durante tus misiones. Por favor, sé amable con el operador, ya que no puede comunicarse directamente contigo de ninguna forma, y simplemente está intentando ayudarte de la mejor forma que puede. + +\cxNotas de Saya:\c- +\cfNo te voy a decir quien las está controlando. Es un secreto.\c- + +\cfNo, no soy yo. No puedo aguantar despierta 24/7.\c- diff --git a/lore/es/saya.txt b/lore/es/saya.txt index 5f91cd82b..e7e6aa5ac 100644 --- a/lore/es/saya.txt +++ b/lore/es/saya.txt @@ -15,20 +15,18 @@ TXT En 2010, junto con su hermano Taro, los dos fundaron **Akari Labs**, donde su primer proyecto fue un robot de limpieza autónomo, el cual evolucionaría en la **Maidbot** moderna, una de las creaciones más populares de su compañía. También idearía muchos otros tipos de robots, todos controlados por una IA compleja que ella misma había diseñado junto con su hermano. -En 2018, Saya "dejó de envejecer", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que mantendría para siempre su físico actual, siendo "bajita y plana", algo que odió mucho. +En 2018, Saya "dejó de envejecer", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que esto significaba que sobreviviría a muchas personas de su vida, y tal prospecto no le resultó nada agradable. Saya recibiría frecuentemente el apodo de **No-Tomoko** en las redes, en referencia a un personaje de una popular serie de manga a quien la gente la comparaba. Es de notar que "en cuanto a personalidad y apariencia, la similitud está ahí, definitivamente". Saya es bien conocida por ser bastante directa al hablar con la gente, si es que lo hace, ya que no suele hablar mucho en persona. En línea, sin embargo, cambia completamente, discutiendo abiertamente con cualquiera que se le cruce, casualmente entremetiéndose en conversaciones aleatorias, o despotricando de forma extensiva sobre varios temas, y debatiendo furiosamente con haters. -Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está "siempre horny on main", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es "sólo amistoso, entre amigos". +La forma de hablar de Saya es más bien tosca en ocasiones, y se sabe que usa casualmente expresiones groseras con regularidad en medio de una conversación. Es uno de sus muchos malos hábitos de los cuales tiene dificultades para corregir, y esto ha resultado en múltiples malentendidos y situaciones embarazosas. Aun así, siempre se disculpa immediatamente si se le llama la atención. -Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". - -Actualmente, Saya tiene dos novias: Meido Miyamoto e **Ibuki Miyamoto**. Ambas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente. +Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Novia Es Una Sirvienta Robot**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". \cxNotas de Saya:\c- \cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c- -\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. Mi top de fetiches incluye las tetas enormes, las maids, chicos afeminados y la heterocromía. Mi chica monstruo favorita es la chica polilla, y mi waifu es Mashiro (específicamente la Mashiro del capítulo 3, no la Mashiro pedófila yandere del resto, no gracias). Lo último: Puede que no me duche a menudo, o use desodorante o nada, pero no apesto, huelo bien, y la gente me dice que sí, que está muy bien.\c- +\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. También me encantan las chicas polilla, son bonitas y molan mucho. Oh, y las maids, claro está, y la moda gótica, aunque me da demasiado corte intentar vestirme así.\c- \cfBueno, ¿satisfecha, Demo-chan? ¿He saciado tu sed de Saya Facts™? Bien, entonces deberías volver al trabajo.\c- TXT @@ -48,20 +46,18 @@ TXT En 2010, junto con su hermano Taro, los dos fundaron **Akari Labs**, donde su primer proyecto fue un robot de limpieza autónomo, el cual evolucionaría en la **Maidbot** moderna, una de las creaciones más populares de su compañía. También idearía muchos otros tipos de robots, todos controlados por una IA compleja que ella misma había diseñado junto con su hermano. -En 2018, Saya "dejó de envejecer", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que mantendría para siempre su físico actual, siendo "bajita y plana", algo que odió mucho. +En 2018, Saya "dejó de envejecer", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que esto significaba que sobreviviría a muchas personas de su vida, y tal prospecto no le resultó nada agradable. Saya recibiría frecuentemente el apodo de **No-Tomoko** en las redes, en referencia a un personaje de una popular serie de manga a quien la gente la comparaba. Es de notar que "en cuanto a personalidad y apariencia, la similitud está ahí, definitivamente". Saya es bien conocida por ser bastante directa al hablar con la gente, si es que lo hace, ya que no suele hablar mucho en persona. En línea, sin embargo, cambia completamente, discutiendo abiertamente con cualquiera que se le cruce, casualmente entremetiéndose en conversaciones aleatorias, o despotricando de forma extensiva sobre varios temas, y debatiendo furiosamente con haters. -Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está "siempre horny on main", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es "sólo amistoso, entre amigos". +La forma de hablar de Saya es más bien tosca en ocasiones, y se sabe que usa casualmente expresiones groseras con regularidad en medio de una conversación. Es uno de sus muchos malos hábitos de los cuales tiene dificultades para corregir, y esto ha resultado en múltiples malentendidos y situaciones embarazosas. Aun así, siempre se disculpa immediatamente si se le llama la atención. -Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". - -Actualmente, Saya tiene tres novias: Meido Miyamoto, **Ibuki Miyamoto** y el **Demolicionista**. Todas siendo sus propias creaciones, lo que ha hecho que la gente haga comentarios incestuosos en las redes, contra los que lucha frecuentemente. +Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Novia Es Una Sirvienta Robot**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". \cxNotas de Saya:\c- \cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c- -\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. Mi top de fetiches incluye las tetas enormes, las maids, chicos afeminados y la heterocromía. Mi chica monstruo favorita es la chica polilla, y mi waifu es Mashiro (específicamente la Mashiro del capítulo 3, no la Mashiro pedófila yandere del resto, no gracias). Lo último: Puede que no me duche a menudo, o use desodorante o nada, pero no apesto, huelo bien, y la gente me dice que sí, que está muy bien.\c- +\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. También me encantan las chicas polilla, son bonitas y molan mucho. Oh, y las maids, claro está, y la moda gótica, aunque me da demasiado corte intentar vestirme así.\c- \cf¿Satisfecha? Bien, pero aquí tienes un último Saya Fact™: Te quiero, Demo-chan~\c- \cg♥\c- @@ -83,20 +79,20 @@ TXT En 2010, junto con su hermano Taro, los dos fundaron **Akari Labs**, donde su primer proyecto fue un robot de limpieza autónomo, el cual evolucionaría en la **Maidbot** moderna, una de las creaciones más populares de su compañía. También idearía muchos otros tipos de robots, todos controlados por una IA compleja que ella misma había diseñado junto con su hermano. -En 2018, Saya "dejó de envejecer", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que mantendría para siempre su físico actual, siendo "bajita y plana", algo que odió mucho. +En 2018, Saya "dejó de envejecer", debido a los efectos de la inmortalidad que había heredado de su madre. Inicialmente vio esto como una bendición, permitiéndole trabajar en todo lo que quisiera, sin límites de tiempo, pero luego, notó el hecho de que esto significaba que sobreviviría a muchas personas de su vida, y tal prospecto no le resultó nada agradable. Saya recibiría frecuentemente el apodo de **No-Tomoko** en las redes, en referencia a un personaje de una popular serie de manga a quien la gente la comparaba. Es de notar que "en cuanto a personalidad y apariencia, la similitud está ahí, definitivamente". Saya es bien conocida por ser bastante directa al hablar con la gente, si es que lo hace, ya que no suele hablar mucho en persona. En línea, sin embargo, cambia completamente, discutiendo abiertamente con cualquiera que se le cruce, casualmente entremetiéndose en conversaciones aleatorias, o despotricando de forma extensiva sobre varios temas, y debatiendo furiosamente con haters. -Saya es conocida también por ser exageradamente coqueta con mujeres atractivas, algo que ha resultado en muchos malentendidos y momentos incómodos. Con orgullo suele decir que está "siempre horny on main", y nunca deja pasar la oportunidad de flirtear con alguien. Sin embargo si menciona que este flirteo abierto es "sólo amistoso, entre amigos". +La forma de hablar de Saya es más bien tosca en ocasiones, y se sabe que usa casualmente expresiones groseras con regularidad en medio de una conversación. Es uno de sus muchos malos hábitos de los cuales tiene dificultades para corregir, y esto ha resultado en múltiples malentendidos y situaciones embarazosas. Aun así, siempre se disculpa immediatamente si se le llama la atención. -Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Maid Es Un Robot Del Sexo**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". +Saya tiene muchos hobbies, incluyendo la programación (su lenguaje preferido siendo **Haskell**), coleccionar videojuegos (la mayoría sin jugarlos), dibujar, modelar en 3D y escribir. Su fascinación por el anime y manga la llevó a escribir el suyo propio: una serie de tres volúmenes llamada **Mi Novia Es Una Sirvienta Robot**, basado parcialmente en sus experiencias saliendo con **Meido Miyamoto**. Se hizo tan popular que consiguió tener su propia adaptación al anime años después. Saya también escribió una novela de ciencia ficción, **El Proyecto Akari**, una historia sobre experimentos de teletransporte y viajes interdimensionales "que no se va a la mierda como el resto". Tras el desastre en las bases de la **UAC** en cuanto a teletransporte, anunció que deseaba hacer real el Proyecto Akari, "solo para joder a esos idiotas". -Actualmente, Saya y sus creaciones Meido Miyamoto, **Ibuki Miyamoto** y el **Demolicionista** están todas casadas con **Kirin Xanai**, líder del **Imperio Sykhai** de **Akkou**. +Actualmente, Saya, junto con Meido Miyamoto, **Ibuki Miyamoto** y el **Demolicionista** están todas casadas con **Kirin Xanai**, líder del **Imperio Sykhai** de **Akkou**. \cxNotas de Saya:\c- \cfTe gusta leer sobre mi, ¿verdad? Seguro que sí, tonti. Muy bien, pues aquí tienes mas cosas sobre mí, sólo para ti.\c- -\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. Mi top de fetiches incluye las tetas enormes, las maids, chicos afeminados y la heterocromía. Mi chica monstruo favorita es la chica polilla, y mi waifu es Mashiro (específicamente la Mashiro del capítulo 3, no la Mashiro pedófila yandere del resto, no gracias). Lo último: Puede que no me duche a menudo, o use desodorante o nada, pero no apesto, huelo bien, y la gente me dice que sí, que está muy bien.\c- +\cfMi color favorito es el rojo, animal favorito la nutria y comida favorita la pizza de peperoni. ¿Lo pillaste? Bien, sigamos entonces. Me gusta un montón de música, incluyendo Industrial, Metal, Drone, Dark Ambient, y supongo que Metal Barroco ya que la banda de Ashley-san me mola tanto. Odio, ODIO absolutamente los pimientos, y los huevos (aunque puedo hacer una excepción por el merengue, está de rechupete). También odio las faldas. Haz que me ponga falda y te parto las muelas. Prefiero los pantalones un millón de veces más, aunque, sólo si no son apretados, son muy raros. No me gusta que se me pegue la ropa así, aj, así que sí, si queda todo suelto, es excelente. Bien, ¿que más? Mi editor favorito es vim, y uh, btw I use Arch, supongo. También me encantan las chicas polilla, son bonitas y molan mucho. Oh, y las maids, claro está, y la moda gótica, aunque me da demasiado corte intentar vestirme así.\c- \cf¿Satisfecha? Bien, pero aquí tienes un último Saya Fact™: Te quiero, Demo-chan~\c- \cg♥\c- diff --git a/lore/es/sayabean.txt b/lore/es/sayabean.txt index 27bb04b6d..9924158b1 100644 --- a/lore/es/sayabean.txt +++ b/lore/es/sayabean.txt @@ -10,11 +10,11 @@ TXT \cxMaldito:\c- \cf Muy Sí\c- -**Peluche Bean Maldito de Saya** que se come tus aperitivos y te llama horny. +**Peluche Bean Maldito de Saya** que se come tus aperitivos y te llama friki. Este objeto no está realmente maldito. ¿O sí...? \cxNotas de Saya:\c- -\cfOK, teniendo en cuenta quien lo ha hecho, SÍ que me apuesto a que esto está maldito. Y por supuesto sé también a que hace referencia. ¿Es que como coño lo sabe? Tiene que ser más de toda esa cosa de manipulación de realidad, otra vez.\c- +\cfOK, teniendo en cuenta quien lo ha hecho, SÍ que me apuesto a que esto está maldito. Y por supuesto sé también a que hace referencia. ¿Es que como diantres lo sabe? Tiene que ser más de toda esa cosa de manipulación de realidad, otra vez.\c- -\cfAun así, es precioso... Una obra de arte, sí. Estoy segura de que lo estás apretujando en tus brazos ahora mismo. Oh, lo sabré. Lo oiré reírse en el directo cuando lo hagas.\c- +\cfAun así, es precioso... Una obra de arte, sí. Estoy segura de que no podrás resistir lo adorable que es y ya lo estarás apretujando en tus brazos. Oh, lo sabré, lo oiré reírse en el directo cuando lo hagas.\c- diff --git a/lore/es/sayasmug.txt b/lore/es/sayasmug.txt new file mode 100644 index 000000000..6c5f5a476 --- /dev/null +++ b/lore/es/sayasmug.txt @@ -0,0 +1,16 @@ +TAG +Taza de Saya +TXT +\cxDesignación:\c- +\cf Taza Moth Pussy\c- +\cxFabricante:\c- +\cf Taro Miyamoto\c- +\cxClasificación:\c- +\cf Regalo Personalizado\c- + +Una taza de café personalizada, la cual fue recibida como regalo de cumpleaños por **Saya Miyamoto** de parte de su hermano **Taro**, a petición personal. Los dibujos en ambos lados muestran una imagen de una chica polilla, con el texto "MOTH PUSSY" debajo. Al preguntarles sobre lo que significaba esto, los hermanos simplemente dijeron que era un "meme antiguo". + +\cxNotas de Saya:\c- +\cfMi amor por las chicas polilla es eterno, Demo-chan.\c- + +\cfPor cierto, me aseguré de lavarla a fondo antes de que esos dos la metieran en su cosa de gacha esa, no vaya a ser que los demonios te puedan seguir el rastro por el olor a café.\c- diff --git a/lore/es/scoresystem.txt b/lore/es/scoresystem.txt index 57df586a0..4123d6439 100644 --- a/lore/es/scoresystem.txt +++ b/lore/es/scoresystem.txt @@ -14,7 +14,7 @@ Los puntos se consiguen por medio de la supresión de hostiles (relativos a su n Los ítems obtenidos pueden también reembolsarse por puntos adicionales, permitiendo intercambiarlos por cualquier otra cosa que prefieras en su lugar. El proceso es automatizado al obtener armas que ya tengas, o alcances el límite de carga de ciertos ítems. -Por favor ten en cuenta que hay un límite impuesto de 999.999.999.999.999.999 puntos, el cual, en la práctica, no debería ser posible alcanzar. +Por favor ten en cuenta que hay un límite impuesto de 999999999 puntos, el cual, en la práctica, tomaría mucho, mucho tiempo alcanzar. \cxNotas de Saya:\c- \cfVale, voy a ser sincera: Esto es otra cosa de videojuego del friki ese. Pero creo que es algo bueno, en cierto modo. Hay algo en esa sensación tan estimulante de ver los números crecer, sabes, y además puedes pillarte cosas bonitas con eso. A ver es que no puedo ocultártelo pero esto es algo en lo que coincidimos los dos, por tu bien.\c- diff --git a/lore/es/serpentriders.txt b/lore/es/serpentriders.txt index b0b4e59dd..eca9eafd7 100644 --- a/lore/es/serpentriders.txt +++ b/lore/es/serpentriders.txt @@ -40,3 +40,5 @@ No está claro si estos demonios tienen alguna conexión con el **Infierno** de \cxNotas de Saya:\c- \cfCaperucita roja fue visto y no visto la otra vez, así que dudo que alguien "considerablemente más fuerte" haga mucha diferencia, ¿no crees? Además, eres lo suficientemente lista para no caer en los trucos y trampas de nadie, vaya que sí. No va a poder contigo, juju...\c- + +\cfPD: Sigo pensando que es una estupidez que se llamen jinetes de serpiente cuando solo uno de ellos va montado en una.\c- diff --git a/lore/es/sharkplush.txt b/lore/es/sharkplush.txt new file mode 100644 index 000000000..8569fc248 --- /dev/null +++ b/lore/es/sharkplush.txt @@ -0,0 +1,16 @@ +TAG +Peluche Tiburón +TXT +\cxDesignación:\c- +\cf Dr. Shorky\c- +\cxFabricante:\c- +\cf Nukritas 2xx\c- +\cxClasificación:\c- +\cf Muñeco de Peluche\c- + +Un muñeco de peluche de un popular tiburón hecho a mano, equipado con un estetoscopio y una bata médica. Una más de las creaciones de **Nukritas 2xx**, encargada como regalo a la **Demolicionista**. + +\cxNotas de Saya:\c- +\cfExplicarle a la gente como se nos ocurrió esto llevaría horas, jeje.\c- + +\cfEn fin, al menos se me ocurrió que lo querrías tener contigo. Tampoco es que se vaya a estropear considerando la calidad absurda de lo que se supone de que esté hecho. A ver, es que nunca se lo he preguntado.\c- diff --git a/lore/es/silverbullet.txt b/lore/es/silverbullet.txt index f3b19ccde..b059d3506 100644 --- a/lore/es/silverbullet.txt +++ b/lore/es/silverbullet.txt @@ -5,19 +5,17 @@ TXT \cf Blackmann Arms S.L.\c- \cf Aeronáutica Forx\c- \cxClasificación:\c- -\cf Rifle de Francotirador de Calibre Ultra-Alto\c- +\cf Fusil Antimaterial de Calibre Ultra-Alto\c- El **Silver Bullet JET** es el miembro de calibre 1.150 de la serie **Silver Bullet** de rifles de calibre ultra-alto fabricados por **Blackmann Arms**. Fue creado como una alternativa ligera y más "razonable" del modelo **Behemoth** de calibre 1.350. Pesando 43 kilos y con una longitud total de 2.4 metros, es suficientemente compacto para el uso por humanos no mejorados. -La munición diseñada principalmente para este modelo son las balas **XSB (eXplosive Super Burst)** del calibre 1.150. Estas bestiales balas están basadas parcialmente en los cartuchos estándar de 30x113mm de la OTAN, y emplean una carga de baja densidad de **Explodium** como propulsor, permitiendo una alta velocidad siendo a la vez seguro de usar. Las balas en sí están compuestas de un núcleo de carburo de tungsteno, con una envoltura de aluminio, y decorado con una capa fina de plata para una apariencia más estética (estas Balas de Plata, ciertamente, NO están hechas de plata). Las balas XSB pueden penetrar varios objetivos antes de detenerse, dependiendo de su tamaño, pueden incluso hacer lo mismo con paredes ligeras. - -La munición secundaria son las balas **FCB (Fat Chode Bomb)** también de calibre 1.150. Llamadas así por el propio CEO de Blackmann Arms, las FCB son bastante similares a la munición XSB estándar, con la diferencia de que estas balas están llenas de Explodium, el cual, al impactar, es liberado violentamente, propagando su estallido mortífero a través de superficies sólidas. Dada la volatilidad de estas balas, el propulsor empleado es ligeramente menos potente, lo cual resulta en un disminuído potencial de penetración de objetivos, pero la explosión definitivamente lo compensa. La carga explosiva es tan potente que puede derribar completamente algunas paredes. +La munición diseñada para este modelo son las balas **XSB (eXplosive Super Burst)** del calibre 1.150. Este bestial cartucho de 30x140mm emplea una carga de baja densidad de **Explodium** como propulsor, permitiendo una alta velocidad siendo a la vez seguro de usar. Las balas en sí están compuestas de un núcleo de carburo de tungsteno, con una envoltura de aluminio, y decorado con una capa fina de plata para una apariencia más estética (estas Balas de Plata, ciertamente, NO están hechas de plata). Las balas XSB pueden penetrar varios objetivos antes de detenerse, dependiendo de su tamaño, pueden incluso hacer lo mismo con paredes ligeras. Para poder compensar su masivo retroceso, el arma redirige una parte de los gases de ignición hasta un grupo de jets compensadores diseñados por **Aeronáutica Forx**. Aunque son parcialmente refrigerados en el proceso, son aun lo suficientemente cálidos para causar ligero daño a usuarios que no lleven la protección adecuada. -\cfFuego Primario:\c- Dispara la bala. Cualquier objetivo alcanzado por ella queda hecho papilla. Un segundo pulsado tras disparar cargará otra bala. +\cfFuego Primario:\c- Dispara la bala. Cualquier objetivo alcanzado por ella queda hecho papilla. -\cfFuego Secundario:\c- Pulsa para alternar entre balas XSB y FCB para la siguiente recarga, si están disponibles. Mantén y luego pulsa fuego primario para accionar el perno manualmente, permitiéndote recuperar balas sin usar. +\cfFuego Secundario:\c- Acciona el perno, insertando una nueva bala en la recámara si hay disponibles. Ten en cuenta que puedes eyectar balas sin usar. \cfRecarga:\c- Recarga el arma. Cada cargador tiene 5 balas. Se puede mantener también una bala extra en la recámara. @@ -28,4 +26,4 @@ Para poder compensar su masivo retroceso, el arma redirige una parte de los gase \cxNotas de Saya:\c- \cfComo era la frase esa, ¿"no hay kill como un overkill"? Ya, pues queda perfecta para la cosa esta.\c- -\cf¿Y que coño se supone que cazas con esto, tanques salvajes? Supongo... demonios tó ciclaos también valdrían, pero al final solo van a acabar hechos mierda.\c- +\cf¿Y que coño se supone que cazas con esto, tanques salvajes? Supongo... demonios tó ciclaos también valdrían, pero al final solo va a quedar de ellos una fina nube roja.\c- diff --git a/lore/es/spreadgun.txt b/lore/es/spreadgun.txt index ae940c258..68e308c47 100644 --- a/lore/es/spreadgun.txt +++ b/lore/es/spreadgun.txt @@ -10,38 +10,22 @@ TXT El **Trabuco** es una simple escopeta de un disparo con un mecanismo de recarga poco convencional. A diferencia de otras armas del mismo tipo, el Trabuco emplea una variante extraña del cañón basculante que **Blackmann Arms** ha descrito como "cañón deslizante", por la cual en lugar de usar una bisagra, el cañón se desliza horizontalmente al pulsar dos botones laterales, con una pequeña pieza metálica saltando y eyectando el cartucho cargado. Tras cargar el siguiente cartucho, el usuario simplemente tiene que empujar el cañón a su posición inicial. Algunos tienen dudas sobre la factibilidad de esta operación, o de su seguridad, pero han garantizado que el arma no disparará accidentalmente no importa la fuerza ejercida empujando de vuelta el cañón. -El arma emplea el ciertamente grande calibre 6, y hay un surtido exclusivo de munición que puede usar, todo manejado por Blackmann. Siendo estos: +El arma emplea el ciertamente grande calibre 6. La carga ideal que encontrarás en el campo son cartuchos de perdigones #00. Ten en cuenta que la dispersión causada por la poca longitud del cañón puede que dificulte alcanzar objetivos lejanos, pero a un rango más corto debería ser más efectivo. -\cfPerdigones Estándar:\c- Cartuchos rojos. Exactamente lo que pone. La dispersión causada por la poca longitud del cañón puede que dificulte alcanzar objetivos lejanos, pero a un rango más corto debería ser más efectivo. +También hay adicionalmente una carga secundaria exclusive, los llamados \cfCartuchos Dorados\c-, caros y muy poco comunes, con un poder destructor sin par. Cada cartucho dispara un proyectil que contiene una carga de **Explodium** de alta densidad y pureza, junto con brillantina dorada (que es aparentemente solo para quedar bonito). Se garantiza que cualquier cosa que reciba un impacto directo será vaporizada completamente por la explosión resultante. -\cfSlug Metálico:\c- Cartuchos verdes. Slugs muy potentes con una puntería decente, incluso en distancias largas. Dado su tamaño y peso, tienen el potencial de penetrar varios objetivos pequeños. - -\cfAliento de Dragón:\c- Cartuchos blancos. Un estallido de llamas con cada disparo, con rango considerable. Ineficaz bajo el agua, por razones obvias. - -\cfSal de Kinylum:\c- Cartuchos cian. Pequeños trozos de Kinylum en su forma natural de "sal". Ya disparados, dejan un rastro de plasma ardiente que permanece en el aire durante unos momentos hasta disiparse. Adicionalmente, los trozos explotarán violentamente en contacto con cualquier superficie, o una vez se "desestabilicen" (lo cual desafortunadamente hace que este tipo de munición pierda efectividad a larga distancia). - -\cfDardos de Telebrium:\c- Cartuchos negros. Docenas de proyectiles penetrantes cargados de Telebrium puro, un elemento exótico conocido por sus potentes efectos corrosivos al ser calentado. Los objetivos alcanzados por estos proyectiles experimentarán una muy dolorosa descarga de toxinas corrosivas por sus cuerpos (incluso los no orgánicos), aunque estos efectos se despejarán en cuestión de segundos. El uso de esta munición está altamente restringido, pero has obtenido permiso para usarla contra las fuerzas invasoras. - -\cfBola de Plomo:\c- Cartuchos violetas. Viniendo de **Plutoni Incorporated**, estos cartuchos disparan una bola pesada de dolor puro. A pesar del hecho de que son de plomo, tiende a mantener la forma da igual la fuerza de impacto contra algo (algunos dudan de que realmente sean de plomo, siendo más bien de cualquier otro material). Habiendo salido de tal lugar, no es sorprendente que tengan efectos extraños. Al parecer, en ciertas ocasiones, las bolas pueden emitir sonidos extraños al impactar, los cuales adicionalmente provocan potentes ondas de choque, incrementando su velocidad en el proceso. Este suceso extraño está listado como "Golpes Críticos Aleatorios" en la página de la tienda. - -\cfCartucho Dorado:\c- Cartuchos cubiertos de oro con un fuerte cuerpo metálico. Un tipo de munición caro y muy poco común, con un poder destructor sin par. Cada cartucho dispara un proyectil que contiene una carga de **Explodium** de alta densidad y pureza, junto con brillantina dorada (que es aparentemente solo para quedar bonito). Se garantiza que cualquier cosa que reciba un impacto directo será vaporizada completamente por la explosión resultante. - -El amplio rango de munición compatible hace del Trabuco un arma bastante versátil, una vez acostumbrado a su tediosa recarga manual. Hay sin embargo planes para crear una variante semiautomática más cómoda de usar, con prototipos ya probándose. +El Trabuco puede ser un arma bastante versátil, una vez acostumbrado a su tediosa recarga manual. Aun así, hay planes para crear una variante semiautomática más cómoda de usar, con prototipos ya probándose. \cfFuego Primario:\c- Dispara el cartucho cargado. -\cfFuego Secundario:\c- Pulsa para elegir el tipo de munición a usar en la siguiente recarga. Mantén y luego pulsa fuego primario para retirar el cartucho actual y dejar el arma vacía. +\cfFuego Secundario:\c- Recarga con cartuchos dorados, si están disponibles. Ten en cuenta que si el cartucho cargado no fue usado, se devolverá a su pila de munición. Si no queda suficiente espacio para almacenarlo, se dejará caer en el suelo. -\cfRecarga:\c- Retira el cartucho actual y carga uno nuevo. Si el cartucho cargado no fue gastado, se devolverá a su pila de munición. Si no queda suficiente espacio para almacenarlo, se dejará caer en el suelo. +\cfRecarga:\c- Recarga con munición estándar, si está disponible. Las mismas reglas se aplican. \cxNotas de Saya:\c- -\cfSí, la mierda esta es jodidamente poco práctica, y no sé como es que nadie se ha reventado la mano recargando la cosa esta. PERO, te deja usar toda clase de munición divertida. Tienes lo típico y normal de cada escopeta por ahí, y luego hay... Literalmente piedras de sal radioactiva, que explotan, pues sí, mola. Pero luego ves lo que hay justo después y es que... ya.\c- +\cfSí, la mierda esta es jodidamente poco práctica, y no sé como es que nadie se ha reventado la mano recargando la cosa esta. PERO es jodidamente potente, sobre todo con lo tremendamente tocho que es el calibre que usa y tal. -\cfHermann-senpai me pasó al friki por lo de los cartuchos negros, porque fueron idea suya. A ver, deja que explique. El Telebrium es... un crimen de guerra. Así de simple. Pero casi que podemos salirnos de rositas, porque lo estamos usando contra bestias desquiciadas. Me sigue sentando un poco mal, pero a ver, no lo estamos usando contra personas, a diferencia de los casos en los que REALMENTE se usó contra personas (joder, las historias sobre ese tema).\c- - -\cfEn fin, basta de hablar de crímenes, hablemos ahora de los cartuchos violetas esos. Pues resulta que en serio son un crimen, y ESOS DOS por supuesto están involucrados. Estoy segura de que esas cosas NO están hechas de plomo. Parece más ese metal raro con el que trabajan, que es que puto juro que no puedo ni pronunciar el nombre. Y tiene... sí, CRÍTICOS RANDOM. He aquí el crimen, Demo-chan. No puedo creerme que mierdas así existan ahora. Es que se me fue la olla la primera vez que lo vi en acción, y estoy segura de que a ti te pasará lo mismo.\c- - -\cfFinamente están las cosas doradas esas. No podemos comprarlas, así que el friki hizo otro de sus frikitratos y dijo que te recompensaría de vez en cuando por eliminar "objetivos de alto nivel" o algo así. Que ganas tengo de ver como es eso, una puta... lluvia dorada de dolor.\c- +\cfY también, está el tema de las cosas doradas esas. No podemos comprarlas, así que el friki hizo otro de sus frikitratos y dijo que te recompensaría de vez en cuando por eliminar "objetivos de alto nivel" o algo así. Que ganas tengo de ver como es eso, una puta... lluvia dorada de dolor.\c- \cf*tose*\c- diff --git a/lore/es/symnatek.txt b/lore/es/symnatek.txt index 608d8da12..2b2fa408c 100644 --- a/lore/es/symnatek.txt +++ b/lore/es/symnatek.txt @@ -15,4 +15,4 @@ A tiempo de ser escrito este artículo, Symnatek es el rey de su terreno local, \cxNotas de Saya:\c- \cfAh sí, la gran estrategia de "si perdemos pasta, pues a contribuir al ejército". Nunca falla, ¿eh?\c- -\cfOh apuesto a que estarás pensando: "Pero Saya, ¿como puedes decir eso, cuando hiciste a Ibuki para el ejército de los EEUU?", y a eso contestaré: "¿Quien ha dicho que la hice para ellos?"\c- +\cfSí, ya sé que suena hipócrita que diga esto, con todo el tema de Ibuki, y mis colaboraciones con la EDF, y todo eso... Pero piénsalo, es que es como si fuera inevitable, en estos tiempos, con esta economía, que tengas que recurrir a cosas así para mantenerte a flote, ¿no crees?\c- diff --git a/lore/es/taro.txt b/lore/es/taro.txt index 592567a18..f0e067ec1 100644 --- a/lore/es/taro.txt +++ b/lore/es/taro.txt @@ -15,13 +15,11 @@ Nacido en 1985, hijo de **Nana** y **Ryuji Miyamoto**, **Taro** es el mayor de t Taro es un programador nato, competente en múltiples lenguajes, y tiene una gran cantidad de proyectos a su nombre, junto con muchas contribuciones a proyectos notables de código abierto, incluyendo el **Kernel de Linux**. También es un auto-proclamado "archivista cultural", declarando que es básicamente una biblioteca andante en lo que respecta a aspectos de la cultura popular que para muchos se han perdido en el tiempo, gracias a la inmortalidad heredada de su madre, y su gran memoria. También es bastante popular en la red por sus reviews cómicas de anime, bajo la personalidad de **"El Mago de Waifus"**. -En 2091, Taro fue elegido para recuperar personalmente al **Oni Rojo**, **Ibuki Miyamoto**, tras los eventos de la **Cicatriz Blanca**. Siguiendo la señal de rastreo de su collar, la encontró fácilmente, y cuando estaba a punto de traerla de vuelta a Japón una chica se le acercó. Era **Elena Yanikov XXI**, quien había entablado amistad con Ibuki mientras vagaba por el yermo ardiente. Pidió a Taro que la llevara con él, prometiendo ser "una chica buena". Estas palabras inmediatamente hicieron que aceptara su proposición. - -No mucho después de eso, ambos comenzaron a salir, casándose finalmente en 2097. +En 2091, Taro fue elegido para recuperar personalmente al **Oni Rojo**, **Ibuki Miyamoto**, tras los eventos de la **Cicatriz Blanca**. Siguiendo la señal de rastreo de su collar, la encontró fácilmente, y cuando estaba a punto de traerla de vuelta a Japón una chica se le acercó. Era **Elena Yanikov XXI**, quien había entablado amistad con Ibuki mientras vagaba por el yermo ardiente. Pidió a Taro que la llevara con él, y aceptó sin poner ninguna pega. No mucho después de eso, ambos comenzaron a salir, casándose finalmente en 2097. \cxNotas de Saya:\c- -\cf¿COMO PUTO COJONES pudo el absoluto perdedor de mi hermano echarse novia? Es que no lo entiendo. Dios, viendo el artículo después de que lo editara, hay tanta mierda ahí que se nota que es él fardando, patético...\c- +\cf¿PERO COMO pudo el absoluto perdedor de mi hermano echarse novia? Es que no lo entiendo. Dios, viendo el artículo después de que lo editara, hay tanto ahí que se nota que es él fardando, patético...\c- -\cfSí, es esa clase de tío. Se hace el chulo pero en cuanto miras más allá de sus "impresionantes habilidades y logros", no es más que un capullo en internet. A ver, admito que yo también lo soy, un poco, pero él es peor. La culpa es de que pase tanto tiempo en foros de mierda.\c- +\cfSí, es esa clase de tío. Le encanta presumir, con todo eso de sus "impresionantes habilidades y logros" y tall. Tampoco es que deba quejarme cuando yo también presumo a veces de lo que hago. Los dos nos parecemos mucho, así es que somos tan colegas unque a veces nos peleemos por chorradas estúpidas. Somos un par de gremlins, y a mucha honra.\c- -\cfAunque a ver, a veces se pone serio cuando quiere. Y en momentos así es que es básicamente el Tsukkomi de mi Boke. Si no sabes lo que significa todo eso puedes buscarlo, Demo-chan.\c- +\cfAunque, cosas aparte, Taro-nii se puede poner muy serio cuando hace falta. Y en momentos así es que es básicamente el Tsukkomi de mi Boke. Si no sabes lo que significa todo eso puedes buscarlo, Demo-chan.\c- diff --git a/lore/es/uac.txt b/lore/es/uac.txt index 43c2a25b0..2fdcc948f 100644 --- a/lore/es/uac.txt +++ b/lore/es/uac.txt @@ -23,9 +23,9 @@ A principios de 2148, y con la UAC no habiendo aprendido su lección, los experi Lo que ocurrió después fue el principio de lo que se ha llamado **Episodios de Doom**. Tal y como relató la UAC tras estos eventos, un único marine logró, por su cuenta, derrotar a todas las fuerzas invasoras, llevando su lucha hasta el mismísimo Infierno. Sin embargo, las hazañas del tal **Marine de Doom** solo sirvieron para enfurecer más a los archidemonios generales, y entonces fue cuando comenzó la invasión de la Tierra. Aunque muchos han visto esto como "el fin del mundo tal y como lo conocemos", la UAC sigue enviando un mensaje de esperanza para todos, jurando que todo será resuelto. \cxNotas de Saya:\c- -\cfOh, la "gran y poderosa" UAC, puñado de cerdos capitalistas comemierdas, eso es lo que son. Fijaos bien todos, esto es lo que os hace el capitalismo desenfrenado. Sí, creo que ya te has enterado bien de que odio a esta puta chusma.\c- +\cfOh, la "gran y poderosa" UAC, puñado de cerdos capitalistas, eso es lo que son. Fijaos bien todos, esto es lo que os hace el capitalismo desenfrenado. Sí, creo que ya te has enterado bien de que odio a esta chusma con la furia de mil soles.\c- -\cfA ver... ¿Experimentos militares ilegales? Sí. ¿Andar jodiendo con viajes interdimensionales? También. ¿Potencialmente causando el fin del mundo? Pues eso también. Si es que los muy hijos de puta estos REALMENTE son una jodida megacorporación malvada, hostia puta...\c- +\cfTengo tanta información de dentro gracias a una amiga de Ibuki que trabajaba allí (más info en su propio artículo) que podría montarme una lista de aúpa sólo con toda la mierda que han hecho. A ver... ¿Experimentos militares ilegales? Sí. ¿Andar jodiendo con viajes interdimensionales? También. ¿Potencialmente causando el fin del mundo? Pues eso también. Si es que los muy capullos estos REALMENTE son una jodida megacorporación malvada, hostia puta...\c- \cf¿Pero sabes que? No me voy a quedar aquí con el culo plantado esperando a que el supuesto "solucionador de problemas" este, su soldadito héroe legendario vaya y lo arregle todo. Como si ESO fuera a pasar. No, esta es precisamente la razón de que TÚ estés aquí, Demo-chan. Esto es lo que estás destinada a cambiar (buah, vale, ya estoy empezando a sonar tope de cliché). Pero sí, te hemos preparado para esto, eres el robot de combate definitivo, el orgullo de Akari Labs y todo ese rollo, tú PUEDES salvar el mundo, estoy segurísima.\c- TXT @@ -52,16 +52,16 @@ A principios de 2148, y con la UAC no habiendo aprendido su lección, los experi Lo que ocurrió después fue el principio de lo que se ha llamado **Episodios de Doom**. Tal y como relató la UAC tras estos eventos, un único marine logró, por su cuenta, derrotar a todas las fuerzas invasoras, llevando su lucha hasta el mismísimo Infierno. Sin embargo, las hazañas del tal **Marine de Doom** solo sirvieron para enfurecer más a los archidemonios generales, y entonces fue cuando comenzó la invasión de la Tierra. Y tan rápido como empezó, fue igualmente terminada. El **Demolicionista**, una obra colaborativa de **Akari Labs** y sus muchos socios, por su propia cuenta, puso fin a la invasión, eliminando eficientemente a todo demonio que había salido de los portales, y después de eso, adentrándose hasta el mismo Infierno, al igual que el Marine de Doom, y derrotando al **Icono del Pecado**, quien comandaba los ejércitos invasores. -Tras este evento, la UAC sufrió una gran reconstrucción, ya que la mayor parte de su junta directiva falleció durante la invasión. Libre ahora de su control, el gobierno de la Unión de Estados supervisaba estrictamente sus acciones, asegurándose de nunca más fuesen un problema. Aun así, otros tres incidentes ocurrieron, a pesar de tener mejores protocolos de seguridad. En una de sus bases en Io, continuaron de nuevo los experimentos de teletransporte, esta vez preparados para cualquier cosa. Como fue previsto, un pequeño grupo de demonios apareció, pero fue eliminado rápidamente. Lo que NO habían previsto, sin embargo, fue que esto había sido solo una distracción. Una nave no identificada se había aproximado repentinamente a la base, aunque inicialmente se asumió que era el típico reparto de provisiones anuales. Esta nave era de construcción demoníaca, imitando la misma tecnología de la UAC. Una cantidad descomunal de demonios fueron desatados sobre la base, y muchos murieron rápidamente o fueron poseídos. Sin embargo, el Marine de Doom también estaba allí, y como fue de esperar, una vez más hizo lo que mejor sabía hacer. +Tras este evento, la UAC sufrió una gran reconstrucción, ya que la mayor parte de su junta directiva falleció durante la invasión. Libre ahora de su control, el gobierno de la Unión de Estados supervisaba estrictamente sus acciones, asegurándose de que nunca más fuesen un problema. Aun así, otros tres incidentes ocurrieron, a pesar de tener mejores protocolos de seguridad. En una de sus bases en Io, continuaron de nuevo los experimentos de teletransporte, esta vez preparados para cualquier cosa. Como fue previsto, un pequeño grupo de demonios apareció, pero fue eliminado rápidamente. Lo que NO habían previsto, sin embargo, fue que esto había sido solo una distracción. Una nave no identificada se había aproximado repentinamente a la base, aunque inicialmente se asumió que era el típico reparto de provisiones anuales. Esta nave era de construcción demoníaca, imitando la misma tecnología de la UAC. Una cantidad descomunal de demonios fueron desatados sobre la base, y muchos murieron rápidamente o fueron poseídos. Sin embargo, el Marine de Doom también estaba allí, y como fue de esperar, una vez más hizo lo que mejor sabía hacer. -Otro incidente más acabó sucediendo, en una instalación de investigación de posición desconocida. Allí, la UAC estaba trabajando en una forma de prevenir activamente que estas invasiones ocurriesen, a través de unos **Dispositivos Aceleración Cuántica**. Estas máquinas supuestamente servirían para cerrar cualquier portal que los demonios pudieran producir para entrar en nuestro mundo, y eso hicieron, al principio. Un portal apareció en la instalación, y aunque algunos demonios consiguieron entrar, fue cerrado inmediatamente y esta pequeña invasión fue suprimida. Pareció entonces que el experimento fue un éxito, pero los demonios rápidamente se dieron cuenta de lo que estaba pasando, y al día siguiente, siete portales se abrieron simultáneamente por toda la instalación. Llevó una hora cerrar seis de ellos, pero llegado ese punto las fuerzas invasoras los superaban en número, y rápidamente cayó todo en el caos de nuevo. Y ciertamente, una vez más, la UAC decidió enviar a su formidable recadero para arreglarlo, y eso hizo, otra vez, como siempre. \cf[nota de ed.: Saya, se te ve el sarcasmo]\c- +Otro incidente más acabó sucediendo, en una instalación de investigación de posición desconocida. Allí, la UAC estaba trabajando en una forma de prevenir activamente que estas invasiones ocurriesen, a través de unos **Dispositivos de Aceleración Cuántica**. Estas máquinas supuestamente servirían para cerrar cualquier portal que los demonios pudieran producir para entrar en nuestro mundo, y eso hicieron, al principio. Un portal apareció en la instalación, y aunque algunos demonios consiguieron entrar, fue cerrado inmediatamente y esta pequeña invasión fue suprimida. Pareció entonces que el experimento fue un éxito, pero los demonios rápidamente se dieron cuenta de lo que estaba pasando, y al día siguiente, siete portales se abrieron simultáneamente por toda la instalación. Llevó una hora cerrar seis de ellos, pero llegado ese punto las fuerzas invasoras los superaban en número, y rápidamente cayó todo en el caos de nuevo. Y ciertamente, una vez más, la UAC decidió enviar a su formidable recadero para arreglarlo, y eso hizo, otra vez, como siempre. \cf[nota de ed.: Saya, se te ve el sarcasmo]\c- Con un último golpe al **"Portero"**, el titánico demonio responsable de la creación de estos portales, pareció que las invasiones por fin terminarían para siempre. Y ciertamente, en los años siguientes, reinó la tranquilidad, y no se reportaron más incidentes. Los Episodios de Doom fueron entonces archivados, y el Marine de Doom fue retirado de servicio. En 2150, la compañía finalmente clausuró todos sus experimentos de teletransporte, y en un anuncio público, el CEO **Ian Kelliher** declaró que la compañía ahora desviaría su atención principal a reparar todos los daños que sus actos trajeron a la Tierra. Algo que, según estimaciones iniciales, tardaría más de cincuenta años. \cxNotas de Saya:\c- -\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, puto idiota, que se creía el "hombre más importante del mundo", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me muero de la risa, oye.\c- +\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, el muy idiota, que se creía el "hombre más importante del mundo", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me desorino, oye. Es que hasta Dana se partió la caja al enterarse de la noticia. Sí, odia a estos mendrugos tanto como yo.\c- TXT \cxNombre:\c- \cf Union Aerospace Corporation\c- @@ -86,9 +86,9 @@ A principios de 2148, y con la UAC no habiendo aprendido su lección, los experi Lo que ocurrió después fue el principio de lo que se ha llamado **Episodios de Doom**. Tal y como relató la UAC tras estos eventos, un único marine logró, por su cuenta, derrotar a todas las fuerzas invasoras, llevando su lucha hasta el mismísimo Infierno. Sin embargo, las hazañas del tal **Marine de Doom** solo sirvieron para enfurecer más a los archidemonios generales, y entonces fue cuando comenzó la invasión de la Tierra. Y tan rápido como empezó, fue igualmente terminada. El **Demolicionista**, una obra colaborativa de **Akari Labs** y sus muchos socios, por su propia cuenta, puso fin a la invasión, eliminando eficientemente a todo demonio que había salido de los portales, y después de eso, adentrándose hasta el mismo Infierno, al igual que el Marine de Doom, y derrotando al **Icono del Pecado**, quien comandaba los ejércitos invasores. -Tras este evento, la UAC sufrió una gran reconstrucción, ya que la mayor parte de su junta directiva falleció durante la invasión. Libre ahora de su control, el gobierno de la Unión de Estados supervisaba estrictamente sus acciones, asegurándose de nunca más fuesen un problema. Aun así, otros tres incidentes ocurrieron, a pesar de tener mejores protocolos de seguridad. En una de sus bases en Io, continuaron de nuevo los experimentos de teletransporte, esta vez preparados para cualquier cosa. Como fue previsto, un pequeño grupo de demonios apareció, pero fue eliminado rápidamente. Lo que NO habían previsto, sin embargo, fue que esto había sido solo una distracción. Una nave no identificada se había aproximado repentinamente a la base, aunque inicialmente se asumió que era el típico reparto de provisiones anuales. Esta nave era de construcción demoníaca, imitando la misma tecnología de la UAC. Una cantidad descomunal de demonios fueron desatados sobre la base, y muchos murieron rápidamente o fueron poseídos. Sin embargo, el Marine de Doom también estaba allí, y como fue de esperar, una vez más hizo lo que mejor sabía hacer. +Tras este evento, la UAC sufrió una gran reconstrucción, ya que la mayor parte de su junta directiva falleció durante la invasión. Libre ahora de su control, el gobierno de la Unión de Estados supervisaba estrictamente sus acciones, asegurándose de que nunca más fuesen un problema. Aun así, otros tres incidentes ocurrieron, a pesar de tener mejores protocolos de seguridad. En una de sus bases en Io, continuaron de nuevo los experimentos de teletransporte, esta vez preparados para cualquier cosa. Como fue previsto, un pequeño grupo de demonios apareció, pero fue eliminado rápidamente. Lo que NO habían previsto, sin embargo, fue que esto había sido solo una distracción. Una nave no identificada se había aproximado repentinamente a la base, aunque inicialmente se asumió que era el típico reparto de provisiones anuales. Esta nave era de construcción demoníaca, imitando la misma tecnología de la UAC. Una cantidad descomunal de demonios fueron desatados sobre la base, y muchos murieron rápidamente o fueron poseídos. Sin embargo, el Marine de Doom también estaba allí, y como fue de esperar, una vez más hizo lo que mejor sabía hacer. -Otro incidente más acabó sucediendo, en una instalación de investigación de posición desconocida. Allí, la UAC estaba trabajando en una forma de prevenir activamente que estas invasiones ocurriesen, a través de unos **Dispositivos Aceleración Cuántica**. Estas máquinas supuestamente servirían para cerrar cualquier portal que los demonios pudieran producir para entrar en nuestro mundo, y eso hicieron, al principio. Un portal apareció en la instalación, y aunque algunos demonios consiguieron entrar, fue cerrado inmediatamente y esta pequeña invasión fue suprimida. Pareció entonces que el experimento fue un éxito, pero los demonios rápidamente se dieron cuenta de lo que estaba pasando, y al día siguiente, siete portales se abrieron simultáneamente por toda la instalación. Llevó una hora cerrar seis de ellos, pero llegado ese punto las fuerzas invasoras los superaban en número, y rápidamente cayó todo en el caos de nuevo. Y ciertamente, una vez más, la UAC decidió enviar a su formidable recadero para arreglarlo, y eso hizo, otra vez, como siempre. \cf[nota de ed.: Saya, se te ve el sarcasmo]\c- +Otro incidente más acabó sucediendo, en una instalación de investigación de posición desconocida. Allí, la UAC estaba trabajando en una forma de prevenir activamente que estas invasiones ocurriesen, a través de unos **Dispositivos de Aceleración Cuántica**. Estas máquinas supuestamente servirían para cerrar cualquier portal que los demonios pudieran producir para entrar en nuestro mundo, y eso hicieron, al principio. Un portal apareció en la instalación, y aunque algunos demonios consiguieron entrar, fue cerrado inmediatamente y esta pequeña invasión fue suprimida. Pareció entonces que el experimento fue un éxito, pero los demonios rápidamente se dieron cuenta de lo que estaba pasando, y al día siguiente, siete portales se abrieron simultáneamente por toda la instalación. Llevó una hora cerrar seis de ellos, pero llegado ese punto las fuerzas invasoras los superaban en número, y rápidamente cayó todo en el caos de nuevo. Y ciertamente, una vez más, la UAC decidió enviar a su formidable recadero para arreglarlo, y eso hizo, otra vez, como siempre. \cf[nota de ed.: Saya, se te ve el sarcasmo]\c- Con un último golpe al **"Portero"**, el titánico demonio responsable de la creación de estos portales, pareció que las invasiones por fin terminarían para siempre. Y ciertamente, en los años siguientes, reinó la tranquilidad, y no se reportaron más incidentes. Los Episodios de Doom fueron entonces archivados, y el Marine de Doom fue retirado de servicio. @@ -96,9 +96,9 @@ En 2150, la compañía finalmente clausuró todos sus experimentos de teletransp Diez años después de este anuncio, unas noticias preocupantes llegaron a la Tierra. Se habían detectado fuerzas demoníacas en varias bases abandonadas de la UAC, las cuales se creyeron completamente limpiadas por un barrido de radiación. Algo, de alguna forma, sobrevivió allí, y estaba reviviendo uno por uno los cuerpos descompuestos de incontables demonios caídos. Viendo que no había otra elección, los Episodios de Doom fueron reabiertos, y el muy malhumorado Marine de Doom fue puesto en marcha de nuevo y enviado allí, esta vez, tras su eventual éxito, tomando la decisión de permanecer en el Infierno, para siempre, para asegurarse de que los demonios nunca jamás intenten atacar. Desde entonces, no se ha podido contactar con él. -De la poca información que se pudo recuperar del otro lado de todo esto, del propio Infierno, se sabe que su matanza fue imparable. Derrotó a los demonios comandantes que quedaban. Decenas de miles de demonios, en su furia ciega, marcharon todos hacia su propia muerte por su mano. Hubo esperanza entre la población civil de que este humano solitario, ahora rebautizado con el título de **Doom Slayer**, pondría fin a la tiranía de los archidemonios generales, pero ellos tenían sus propios planes para él. Sabían bien que si llegaba a la capital de **Dis** una vez más, no podrían detenerlo. Así que una trampa fue preparada, y cayó en ella. Fue entonces que **Erebus**, el líder de los generales, lo hizo desaparecer, muy lejos, más allá de los confines de este universo, para que nunca jamás pudiese volver a este mundo. +De la poca información que se pudo recuperar del otro lado de todo esto, del propio Infierno, se sabe que su matanza fue imparable. Derrotó a los demonios comandantes que quedaban. Decenas de miles de demonios, en su furia ciega, marcharon todos hacia su propia muerte por su mano. Hubo esperanza entre la población civil de que este soldado humano solitario pondría fin a la tiranía de los archidemonios generales, pero ellos tenían sus propios planes para él. Sabían bien que si llegaba a la capital de **Dis** una vez más, no podrían detenerlo. Así que una trampa fue preparada, y cayó en ella. Fue entonces que **Erebus**, el líder de los generales, lo hizo desaparecer, muy lejos, más allá de los confines de este universo, para que nunca jamás pudiese volver a este mundo. \cxNotas de Saya:\c- -\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, puto idiota, que se creía el "hombre más importante del mundo", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me muero de la risa, oye.\c- +\cfUn lío muy gordo, todo por que la UAC es una mierda y el mal. Aunque me alegro, porque pude ver como la caída del niñato patético ese, el muy idiota, que se creía el "hombre más importante del mundo", y ahora es el perrito faldero del gobierno de la Unión de Estados. Es que me desorino, oye. Es que hasta Dana se partió la caja al enterarse de la noticia. Sí, odia a estos mendrugos tanto como yo.\c- \cfY aquí acaba la historia de la Epístolas de Dumbo estas o lo que sea, uno de los mayores ejemplos de las consecuencias del capitalismo desenfrenado™.\c- diff --git a/lore/es/unissix.txt b/lore/es/unissix.txt index 1b8472008..5f15fb6f6 100644 --- a/lore/es/unissix.txt +++ b/lore/es/unissix.txt @@ -18,7 +18,7 @@ Al ser fruto de sangre mestiza (ya que su padre no es Devanikan, sino una "Quime Algo que la separaba de su hermana, era su notable falta de habilidad física, siendo "demasiado débil" y "no apta para ser una guerrera de sangre de dragón", se hizo notar también que a diferencia de otros, tampoco podía invocar una forma de dragón. Todo esto sería usado también en su contra por la gente que regularmente la acosaba. Su familia finalmente decidió que se quedara siempre en casa, aislada del mundo exterior. Fue a partir de esto que al final encontró su principal hobby: La herrería. -A Misa le encantaba crear toda clase de armadura y armamento, el cual sería usado luego por su familia, o vendido a otros clanes (los cuales desconocían quién lo hacía, pero estaban impresionados con su calidad), este fue el comienzo de **Artesanía Unissix**, su pequeño taller/tienda. El expresar su creatividad a través de esto ayudó mucho a distraerla de todo lo que pasaba fuera, y se sintió más relajada. +A Misa le encantaba crear toda clase de armaduras y armamento, las cuales sería usadas luego por su familia, o vendidas otros clanes (los cuales desconocían quién lo hacía, pero estaban impresionados con su calidad), este fue el comienzo de **Artesanía Unissix**, su pequeño taller/tienda. El expresar su creatividad a través de esto ayudó mucho a distraerla de todo lo que pasaba fuera, y se sintió más relajada. Con el tiempo, a medida que mejoraba sus habilidades, se interesó en buscar desafíos mayores, como crear armas mucho más complejas que simples espadas y otros. Para satisfacer este deseo, su familia le traía libros sobre "armas de leyenda", las cuales la joven Misa consiguió replicar casi a la perfección, con la consiguiente sorpresa de todos. Estaba muy orgullosa de lo que había logrado, y esto aumentó su popularidad, lo que resultó en peticiones personales para hacer más réplicas de muchas de esas armas. @@ -43,10 +43,6 @@ Misa y su mujer permanecieron en la isla hasta 2108, cuando fueron notificadas d \cfOh ya, y Misa es una pro gamer de cuidado, joder. Cualquier cosa que le pongo para jugar, se lo ventila como si nada. Sí, incluso ESOS juegos. Mola ver como juega, y le encantan los de aventura sobre todo, supongo que porque es la clase de cosa que no puede hacer en la vida real.\c- -\cfOh ya, y cosa curiosa. La primera vez que las visité cuando estaban en Sankaideriha, Misa me dió todo un puto susto con la transformación esa por la que pasó. Es que... era una persona completamente diferente. Vamos, es que nunca antes la había visto tan feliz, fue tremendísimo, y a ver, yo me alegraba muchísimo por ella también. Ah, y luego la otra cosa que pasó, cuando uhhh... fuimos a las termas juntas. Yo... bueno, un poco por accidente... vi... eso, de ahí abajo, pues sí...\c- +\cfOh ya, y cosa curiosa. La primera vez que las visité cuando estaban en Sankaideriha, Misa me dió todo un puto susto con la transformación esa por la que pasó. Es que... era una persona completamente diferente. Vamos, es que nunca antes la había visto tan feliz, fue tremendísimo, y a ver, yo me alegraba muchísimo por ella también.\c- -\cfDios, normal que pudiera oír a Zana-sama desde el otro lado de la casa cuando se lo montaban. Ah... puta suertuda...\c- - -\cfSí, eso fue cuando se quedaron un tiempo por aquí. Aunque no son los primeros a los que oigo hacerlo como bestias salvajes. Yu-chan y esa novia gótica tetuda suya, menudas son también. En serio, si es que nadie sabe que desde mi dormitorio puedes oír perfectamente todo lo que pasa en la habitación de invitados. No sé por qué, será alguna ñordería de acústica o algo, pero sí.\c- - -\cf(Aunque, la verdad es que desearía poder des-oír los graznidos infernales que emitía Taro-niisan cuando se trajo a Ellen-san)\c- +\cfDios, es que son la pareja mas adorable del mundo. No puedo parar de decirlo.\c- diff --git a/lore/es/voicebox.txt b/lore/es/voicebox.txt index 96eca4439..b9fcf1ae7 100644 --- a/lore/es/voicebox.txt +++ b/lore/es/voicebox.txt @@ -13,7 +13,7 @@ El **Loudboi** es un dispositivo simple y ligero para unidades de IA. Fácil de La comunidad de **Akari Labs** también ofrece una gran variedad de paquetes de voz personalizados para este dispositivo. Puedes visitar nuestros foros para más información. \cxNotas de Saya:\c- -\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que sin pechotes.\c- +\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que en forma de robot cuqui.\c- TXT \cxDesignación\c- \cf Caja de Voz Loudboi\c- @@ -27,6 +27,6 @@ El **Loudboi** es un dispositivo simple y ligero para unidades de IA. Fácil de La comunidad de **Akari Labs** también ofrece una gran variedad de paquetes de voz personalizados para este dispositivo. Puedes visitar nuestros foros para más información. \cxNotas de Saya:\c- -\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que sin pechotes.\c- +\cfJe... Es que me encanta esa voz tan adorable que tienes, complementa perfectamente esa personalidad tuya tan descarada. Y lo que me mola más es lo rápido que has pillado todas nuestras coletillas y temas, especialmente las de Ibuki. A veces eres como una versión mini suya, solo que en forma de robot cuqui.\c- -\cfActualización: Y entonces... Vinieron tus verdaderas cuerdas vocales como maidbot, sin filtros ni nada, y mi amor por tu encantadora voz solo pudo aumentar. Se me derrite el corazón solo con oírla, jejeje...\c- +\cfActualización: Y entonces... Vinieron tus verdaderas cuerdas vocales como maidbot, sin filtros ni nada, y mi amor por tu encantadora voz solo pudo aumentar. Es que se me derrite el corazón solo con oírla, en serio...\c- diff --git a/lore/es/wallbuster.txt b/lore/es/wallbuster.txt index 75678d8ad..fd0cc16ad 100644 --- a/lore/es/wallbuster.txt +++ b/lore/es/wallbuster.txt @@ -11,17 +11,7 @@ La **Wallbuster** es una escopeta bestial, teniendo un total de 25 cañones divi Los mecanismos internos que empujan el funcionamiento de este arma tienen tal grado de complejidad que han sido descritos por algunos como **Ingeniería Loca Alemana**. Solamente el propio **Hermann E. Ischer** conoce todos los detalles de su operación. Con cada accionamiento del gatillo principal, el cañón superior es disparado, y luego su tambor gira a contrarreloj, con el siguiente cartucho listo para dispararse. Con una rotación completa, o cuando se usa el gatillo secundario, el cuerpo principal gira después, alternando a otro tambor. -La Wallbuster es compatible con la mayor parte de cartuchos de calibre 6, aunque hay restricciones de seguridad para algunas, específicamente los cartuchos dragon's breath, flechette y dorados. Esto limita el rango de munición utilizable a sólo estos cuatro tipos: - -\cfPerdigones Estándar:\c- Cartuchos rojos. Exactamente lo que pone. Bastante letal a corto rango, y con cierto alcance extra dada la longitud de los cañones del arma. - -\cfSlug Metálico:\c- Cartuchos verdes. Slugs muy potentes con una puntería decente, incluso en distancias largas. Dado su tamaño y peso, tienen el potencial de penetrar varios objetivos pequeños. - -\cfSal de Kinylum:\c- Cartuchos cian. Pequeños trozos de Kinylum en su forma natural de "sal". Ya disparados, dejan un rastro de plasma ardiente que permanece en el aire durante unos momentos hasta disiparse. Adicionalmente, los trozos explotarán violentamente en contacto con cualquier superficie, o una vez se "desestabilicen" (lo cual desafortunadamente hace que este tipo de munición pierda efectividad a larga distancia). - -\cfBola de Plomo:\c- Cartuchos violetas. Viniendo de **Plutoni Incorporated**, estos cartuchos disparan una bola pesada de dolor puro. A pesar del hecho de que son de plomo, tiende a mantener la forma da igual la fuerza de impacto contra algo (algunos dudan de que realmente sean de plomo, siendo más bien de cualquier otro material). Habiendo salido de tal lugar, no es sorprendente que tengan efectos extraños. Al parecer, en ciertas ocasiones, las bolas pueden emitir sonidos extraños al impactar, los cuales adicionalmente provocan potentes ondas de choque, incrementando su velocidad en el proceso. Este suceso extraño está listado como "Golpes Críticos Aleatorios" en la página de la tienda. - -A pesar de esta limitación, con solo estos cuatro tipos uno puede hacer de la Wallbuster una potente compañera. Especialmente teniendo en cuenta la naturaleza semi-automática del arma, permitiendo una rápida sucesión de disparos o incluso disparar varios cartuchos de forma simultánea. +Teniendo en cuenta la naturaleza semi-automática del arma, permitiendo una rápida sucesión de disparos o incluso disparar varios cartuchos de forma simultánea, la Wallbuster es una muy poderosa compañera. \cfFuego Primario:\c- Dispara el cañón superior. @@ -29,15 +19,13 @@ A pesar de esta limitación, con solo estos cuatro tipos uno puede hacer de la W \cfFuego Terciario:\c- Lo dispara todo, si realmente quieres. -\cfRecarga:\c- Una vez se tira de la palanca lateral, los tambores pueden ser retirados y recargados individualmente. Para recargar por el camino, se recomienda tener un **Cinturón Magnético Útil** o similar, ya que facilitará esta operación. Hay recargadores rápidos disponibles para comprar desde la página web de Blackmann Arms, o de distribuidores autorizados. Los operadores astutos también optarían por llevar encima tambores pre-cargados de repuesto. +\cfRecarga:\c- Una vez se tira de la palanca lateral, los tambores pueden ser retirados y recargados individualmente. Una rutina de recarga rápida se ejecutará y te hará llenar automáticamente lo máximo posible del arma, un tambor de cada vez, mientras la acción se mantenga activa. \cfTécnicas:\c- Tal y como su nombre indica, puedes destruir toda clase de obstáculos por el camino, siempre y cuando causes suficiente daño relativo a su tamaño (requiriendo fuego secundario o terciario). Esto incluye hasta puertas bloqueadas, por lo que nunca más necesitarás buscar llaves. \cxNotas de Saya:\c- -\cfOK a ver, la puta masa de metal rompecojones esta. Sí, esto sí que es la puta repera...\c- +\cfOK a ver, la masa de metal esta. Sí, esto sí que es la puta repera...\c- -\cfNo te preocupes por tardar un huevo en recargarla, por cierto. DemolitionOS viene con una rutina de recarga rápida que te lo pondrá más fácil. La munición se pone ahí en cola desde el Hammerspace, y luego todo lo que tienes que hacer es poner la mano encima de los cañones, y ya se mete todo ahí. Mola, ¿verdad? Taro hizo la mayor parte del chollo, así que eso, le puedes dar las gracias.\c- +\cfNo te preocupes por tardar un huevo en recargarla, por cierto. DemolitionOS viene con una rutina de recarga rápida que te lo pondrá más fácil. La munición se pone ahí en cola desde el Hammerspace, y luego todo lo que tienes que hacer es poner la mano encima de los cañones, y ya se mete todo ahí, lleva unos 10 segundos llenarlo todo, más o menos. Mola, ¿verdad? Taro hizo la mayor parte del chollo, así que eso, le puedes dar las gracias.\c- -\cfOh ya... sabes... la cosa esta, con el nombre y todo, casi que me recuerda a la abuela un poco. A ver, si cambias la primera letra... Oh, ¿puedes oír la batería y la guitarra? Porque yo sí...\c- - -\cfOld Days~ ♪\c- +\cfOh ya... sabes... la cosa esta, con el nombre y todo... Bueno, el chiste ya se hace solo.\c- diff --git a/lore/es/wararmor.txt b/lore/es/wararmor.txt index 9997351b3..ae34c589f 100644 --- a/lore/es/wararmor.txt +++ b/lore/es/wararmor.txt @@ -16,4 +16,4 @@ Esta pieza de armadura ofrece una reducción masiva de daño entrante de natural \cxNotas de Saya:\c- \cfEl friki este y su "análisis de armadura" otra vez. Este tío, en serio... La vida no es un puto videojuego, así que por favor POR FAVOR deja de hablar de mierdas como "unidades de daño" y "factores de reducción".\c- -\cfEeeeeen fin, Misa hace cosas tope de guays. Aunque me parece un poco redundante lo de que lleves armadura hecha de lo mismo que tu chasis. A ver, es que un robot llevando armadura.. ya, ¿por que no? Siempre es importante usar protección, juju...\c- +\cfEeeeeen fin, Misa hace cosas tope de guays. Aunque me parece un poco redundante lo de que lleves armadura hecha de lo mismo que tu chasis. A ver, es que un robot llevando armadura.. Bueno, tampoco pasa nada por protegerse de más, supongo.\c- diff --git a/lore/es/whitelady.txt b/lore/es/whitelady.txt index d45c46f5b..52543bfd5 100644 --- a/lore/es/whitelady.txt +++ b/lore/es/whitelady.txt @@ -19,22 +19,9 @@ A pesar de su apariencia amable, es bastante letal, siendo capaz de despedazar r La Dama Blanca ha trabajado para muchas personas y organizaciones por muchos años, pero recientemente, ha sido contratada por la **Universidad de Nos-Kora** para colaborar con la **Demolicionista** en sus misiones. -Demolicionista, este mensaje es para ti. Tu amor por el **Peluche de Mashiro** de nuestras **Cajas Afortunadas** ha hecho efectivo su contrato, y así, cuando poseas una **Lámpara Compañera Sankai**, la Dama Blanca estará dispuesta a trabajar junto a ti, y matar a todo enemigo que te encuentres. +Demolicionista, este mensaje es para ti. Tu amor por el **Peluche de Chica Polilla** de nuestras **Cajas Afortunadas** ha hecho efectivo su contrato, y así, cuando poseas una **Lámpara Compañera Sankai**, la Dama Blanca estará dispuesta a trabajar junto a ti, y matar a todo enemigo que te encuentres. \cxNotas de Saya:\c- +\cfPerdóname un momento mientras me pongo todo loca porque resulta que las chicas polilla existen de verdad.\c- + \cfGHFFFSDFHDGKHDFDKHGSFHFHGSFSH\c- - -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- -\cfLAS CHICAS POLILLA EXISTEN\c- - -\cfES QUE ME VOY A CONSTRUIR UNA PUTA NAVE ESPACIAL PARA VIAJAR A ESE PLANETA, A LA MIERDA LAS LEYES, A LA MIERDA EL TRATADO DE CICATRIZ BLANCA, A LA MIERDA TODO, QUIERO VER A LAS CHICAS POLILLA. ME VOY A LLEVAR TODAS LAS LÁMPARAS QUE ENCUENTRE, ME VOY A MONTAR UN PUTO HARÉN.\c- diff --git a/lore/es/whitescar.txt b/lore/es/whitescar.txt index f6ff7f7b1..0a250c147 100644 --- a/lore/es/whitescar.txt +++ b/lore/es/whitescar.txt @@ -12,7 +12,7 @@ En Junio de 2073, la **Séptima Guerra Mundial Nukuri** comenzó. Fue otro inten Hubo muchas pérdidas en ambos bandos, incluyendo civiles, en un enfrentamiento caótico entre gente que, hace muy poco, había gozado de medio siglo de alianza pacífica. En tres años, los vastamente superiores ejércitos Nukuri neutralizaron toda oposición, y pusieron el punto de mira en el mismo corazón del país. Deseando "matar a la bestia desde dentro", un pequeño equipo consiguió localizar y capturar al presidente. Se le dio una última elección, ahí y entonces. Podía o bien rendirse y disculparse públicamente por su afrenta al imperio, o podría rechazar esto, y ver como la **Ira del Emperador** caía sobre él. -Optó por elegir la segunda opción, y lo que siguió a esto fue algo que solo pudo ser descrito como inimaginablemente cruel y despiadado. Todas las fuerzas Nukuri se retiraron, y evacuaron a todos los civiles Nukuri restantes. Entonces, en un mero instante, una sucesión de destellos de luz cegadora redujeron todo el territorio de los Estados Unidos a cenizas, disparados desde un arma orbital experimental que el imperio había construido varios años antes. Fue su primera prueba de fuego, y su escala y efectos eran desconocidos hasta entonces. Algunos dicen que los efectos apocalípticos que tuvo no fueron intencionados, que el plan no era destruir toda forma de vida, sino solo causar destrucción a un nivel más "técnico", inutilizando toda maquinaria e infraestructura. Es suficiente con decir que, cuando el diseñador jefe de este arma, **Zanaveth Nekuraku I**, fue testigo de lo que ocurrió, sufrió una crisis tremenda, y desapareció de la vida pública durante muchos años. +Optó por elegir la segunda opción, y lo que siguió a esto fue algo que solo pudo ser descrito como inimaginablemente cruel y despiadado. Todas las fuerzas Nukuri se retiraron, y evacuaron a todos los civiles Nukuri restantes. Entonces, en un mero instante, una sucesión de destellos de luz cegadora redujeron todas las grandes ciudades a lo largo de la costa este de los Estados Unidos a cenizas, disparados desde un arma orbital experimental que el imperio había construido varios años antes. Fue su primera prueba de fuego, y su escala y efectos eran desconocidos hasta entonces. Algunos dicen que los efectos apocalípticos que tuvo no fueron intencionados, que el plan no era destruir toda forma de vida, sino solo causar destrucción a un nivel más "técnico", inutilizando toda maquinaria e infraestructura. Es suficiente con decir que, cuando el diseñador jefe de este arma, **Zanaveth Nekuraku I**, fue testigo de lo que ocurrió, sufrió una crisis tremenda, y desapareció de la vida pública durante muchos años. Con este ataque, las llamas de la guerra contra el imperio solo fueron avivadas. Adicionalmente, todos los Nukuri restantes en la Tierra fueron forzados a marcharse, y con la excepción de unos pocos países, el **Tratado de la Cicatriz Blanca** fue firmado casi de forma unánime, poniendo fin a medio siglo de contribuciones de los Nukuri a la evolución de nuestra ciencia y tecnología. Aquellos que firmaron el tratado tuvieron que rechazar todo aquello creado por ellos, y no podían nunca más contactar con ningún miembro de la especie. Además, tampoco fue permitido que permaneciesen en su colonia Lunar, forzando al **Instituto Luna de Investigación** a cerrar sus puertas tras casi cuatro mil años. @@ -20,13 +20,13 @@ Todos querían la cabeza del emperador. No solo fue un gran error que la humanid Entonces, **Nukritas 1xx**, por su cuenta, caminaría desde la punta norte de Akane hasta la capital imperial en Vutaki. Su avance no pudo ser detenido, ignoró todo intento por los soldados imperiales, destruyó sus armas solo con mirarlas. En cuanto llegó al palacio imperial, abrió las puertas de una patada y se aproximó al trono, donde el emperador Ledora Yathai, paralizado por el terror, recibió un puñetazo en el estómago del embajador Mishe, y salió despedido en una línea recta por la ventana, alcanzando tal velocidad que desapareció completamente en el vacío del espacio exterior. Luego, la Universidad hizo su anuncio, el **Ultimátum de Nos-Kora**. Dieron a la raza Nukuri ocho años para resolver sus conflictos y hacer las paces. De no hacerlo, la Universidad cerraría sus puertas para siempre, y los Mishe abandonarían formalmente la **Coalición X'Animen**, llevándose consigo sus valiosos conocimientos. -Esta amenaza fue tomada muy en serio, ya que los Mishe eran los miembros más importantes de esta alianza interplanetaria, y por lo tanto una reforma masiva tuvo lugar. Ambos bandos estaban ahora unidos en su misión de reconstruir todo Nahkami como una nueva nación. En 2108, solo a la mitad del límite de tiempo que se les dio, el **Gobierno Unificado Nukuri** fue establecido, con **Zanata Nekuraku II** como primera ministra "de transición". Tras esto, hubo un intento de restablecer relaciones con la Tierra, pero fue inútil, siendo ignorados por completo, excepto por dos países que no firmaron el tratado: Escocia y Japón. +Esta amenaza fue tomada muy en serio, ya que los Mishe eran los miembros más importantes de esta alianza interplanetaria, y por lo tanto una reforma masiva tuvo lugar. Ambos bandos estaban ahora unidos en su misión de reconstruir todo Nahkami como una nueva nación. En 2108, solo a la mitad del límite de tiempo que se les dio, el **Gobierno Unificado de Nahkami** fue establecido, con **Zanata Nekuraku II** como primera ministra "de transición". Tras esto, hubo un intento de restablecer relaciones con la Tierra, pero fue inútil, siendo ignorados por completo, excepto por dos países que no firmaron el tratado: Escocia y Japón. Estos dos países eran el hogar de poderosas corporaciones aliadas desde hace tiempo con la propia compañía de Zanata, **Nekuratek**, y eran plenamente conscientes de la verdad de toda esta situación, razón por la que habían rechazado romper su alianza con ellos. Ha de notarse que hubo mucho revuelo en redes sociales por parte de **Saya Miyamoto**, jefa de la Japonesa **Akari Labs**, quien condenaba a todos aquellos que habían firmado el tratado por su "asquerosa generalización" al ver a toda la raza Nukuri como un enemigo. No hubo más intentos desde entonces de restablecer la anterior alianza, ni siquiera incluso durante muchos eventos mayores que amenazarían a la Tierra de nuevo, cuando podrían haber aceptado con gusto ayudarnos de la misma forma que hicieron en el **Evento Luna** de 2021. Además, se prohibió a la Tierra entrar en la Coalición X'Animen debido a esta agresiva oposición. \cxNotas de Saya:\c- -\cfHe aquí, aquí está, el momento más oscuro de la historia de la humanidad (por ahora). En serio, es que me jode muchísimo recordar toda la mierda que pasó, fue horrible. Porque a ver, no fue solo el puto incendiamiento de un país entero, también estaba todo lo del otro lado, todo lo que me contó Zana-sama.\c- +\cfHe aquí, aquí está, el momento más oscuro de la historia de la humanidad (por ahora). En serio, es que me jode muchísimo recordar todo lo que pasó, fue horrible. Porque a ver, no fue solo el incendiamiento de un país entero, también estaba todo lo del otro lado, todo lo que me contó Zana-sama.\c- -\cfA ver, sí, de todo ésto uno puede sacar que los Nukuri no eran exactamente pacíficos, pero es que no es ni la mitad de todo. El imperio, el puto imperio, todo era culpa del puto apestoso asqueroso puta mierda de imperio. Puto, cerdo homicida megalómano asqueroso emperador detrás de toda la mierda, haciendo lo que le saliera de los putos cojones. Todas esas guerras, era todo gente que quería echarlo fuera, y él los pisoteaba, una y otra vez, sin ningún remordimiento. El mundo era suyo, y se lo follaba cuando quería, como el puto feo bastardo que era. Sí, lo he oído todo. Las ejecuciones en masa, llevando no solo a una, sino DOS razas enteras a la extinción, sí, ESO si que fue una jodienda. Oh pero que tal también, torturar y masacrar a la gente que veía como "traidores" y "desviados", ¿eh? Sí, esa mierda también. Zana-sama perdió a muchos familiares por culpa de eso. Blej, en serio, juro que un día voy a encontrar a donde mandaron al puto bastardo ese, solo para poder patearlo hasta hacerlo picadillo. Obviamente empezaré por los cojones, eso sí, eso por la otra cosa que hizo, de la que no voy a hablar aquí porque joder, es que esto ya se ha puesto muy negro (y aun es peor). Tengo BUENAS razones para odiar a alguien tan jodidamente asquerosamente vil como el hijoputa este, joder, "hijoputa" ni siquiera se acerca, teniendo en cuenta lo que hizo. Sí, creo que lo vas pillando, ¿verdad? Apuesto a que tú también querrías echarle mano. Joder, si no fuera porque los tíos esos lo mandaron al puto espacio...\c- +\cfA ver, sí, de todo ésto uno puede sacar que los Nukuri no eran exactamente pacíficos, pero es que no es ni la mitad de todo. El imperio, el puto imperio, todo era culpa del maldito asqueroso imperio. El, megalómano emperador asqueroso ese detrás de todo, haciendo lo que le saliera de ahí. Todas esas guerras, era todo gente que quería echarlo fuera, y él los pisoteaba, una y otra vez, sin ningún remordimiento. El mundo era suyo, y hacía lo que le daba la gana con todos. Sí, todo ese tema. Las ejecuciones en masa, torturar y masacrar a la gente que veía como "traidores" y "desviados"... Zana-sama perdió a muchos familiares por culpa de eso. En serio odio que haya cosas así que sigan pasando por todo el mundo...\c- diff --git a/lore/es/xanimen.txt b/lore/es/xanimen.txt index a6bad678a..a6f979970 100644 --- a/lore/es/xanimen.txt +++ b/lore/es/xanimen.txt @@ -27,7 +27,7 @@ Un sistema localizado en la galaxia de Andromeda, y el más poblado, a pesar de \cfKarnanaiahma:\c- Un mundo de vastos océanos, y el hogar natal de los **Qurensniv**, una raza casi indistinguible de los humanos. Algunos de sus habitantes migraron a la Tierra en el 130 AC, fundando el pueblo de **Kereshnovka**. -\cfBuran:\c- Un planeta anteriormente exuberante de bosques salvajes, el cual está ahora cubierto en su totalidad por la superestructura de cerebro de matrioshka conocida como la **Bleaknet**. Es el hogar natal de la raza **Buran**, de la cual solo queda un miembro: el ingeniero jefe del proyecto Bleaknet. Esta estructura de curioso nombre adicionalmente sirve como un nexo de información para toda la coalición, enlazando todas sus redes a través de complicada tecnología de distorsión del espacio-tiempo. +\cfBuran:\c- Un planeta anteriormente exuberante de bosques salvajes, el cual está ahora cubierto en su totalidad por la superestructura de cerebro de matrioshka conocida como la **Bleaknet**. Es el hogar natal de la raza **Buran**, de la cual solo queda un miembro residente: el ingeniero jefe del proyecto Bleaknet. Esta estructura de curioso nombre adicionalmente sirve como un nexo de información para toda la coalición, enlazando todas sus redes a través de complicada tecnología de distorsión del espacio-tiempo. \cfSora, Yasakuna, Sunkaeze:\c- Dos gigantes de gas y un planeta árido en el borde exterior del sistema. Todos inhabitables, aunque ha de notarse que **Sunkaeze** una vez hospedó una instalación perteneciente a **Decade Mechanics**. @@ -42,7 +42,7 @@ El segundo sistema más poblado, y con el mayor número de planetas habitados. S \cfNekemekya:\c- Un planeta semi-artificial cubierto por una gran coraza metálica. Es el hogar de **Ix Nemeke**, y de los **Mekyon**, una raza de criaturas mecánicas que creó. -\cfXeryuga:\c- Un planeta infernal cubierto de magma altamente hostil, habitado por la injustamente adorable raza de los **Xeura**, junto con **Ix Xeuriges**, su creador. +\cfXeryuga:\c- Un planeta infernal cubierto de magma altamente hostil, habitado por la raza lagomórfica de los **Xeura**, junto con **Ix Xeuriges**, su creador. \cfUrai, Erusa, Sethia:\c- Un trío de gigantes de gas ricos en materiales valiosos. La explotación de estos recursos está actualmente impugnada por miembros del sistema. @@ -86,9 +86,9 @@ Un sistema de nuestra propia galaxia, solía habitar un único planeta, hasta qu Adicionalmente, otros dos sistemas fueron considerados como candidatos para unirse. Las negociaciones fallaron con uno debido a hostilidades hacia otro miembro de la coalición, y el otro está pendiente, ya que su única especie nativa tiene varios conflictos internos sin resolver que deben ser manejados. \cxNotas de Saya:\c- -\cf"Las negociaciones fallaron" es una forma de decirlo. Dios, imagina... solo IMAGINA por un momento que la cosa hubiese salido mejor. ¡Formaríamos parte de una alianza interplanetaria enorme! Es que eso es... casi sacado de una puta novela de ciencia ficción.\c- +\cf"Las negociaciones fallaron" es una forma de decirlo. Dios, imagina... solo IMAGINA por un momento que la cosa hubiese salido mejor. ¡Formaríamos parte de una alianza interplanetaria enorme! Es que eso es... casi sacado de una novela de ciencia ficción.\c- -\cfPor cierto, no sé si sólo lo has ojeado o si realmente te lo has leído todo, pero ¿has VISTO lo del planeta ese? ¿¿¿Que recontracojones es esa mierda??? Es como si se le hubiera ocurrido a un puto niño loco supercreativo. Joder. ¿En serio un dios hizo eso? O... ¿va y resulta que es la puta mayor coincidencia ridícula imaginable?\c- +\cfPor cierto, no sé si sólo lo has ojeado o si realmente te lo has leído todo, pero ¿has VISTO lo del planeta ese? ¿¿¿Que rayos es todo eso??? Es como si se le hubiera ocurrido a un niño de primaria supercreativo. La madre. ¿En serio un dios hizo eso? O... ¿va y resulta que es la mayor coincidencia ridícula imaginable?\c- \cfSi es que yo no sé, Demo-chan... llegado este punto, puede ser cualquier cosa, con lo que tengo visto por ahí.\c- TXT @@ -136,7 +136,7 @@ El segundo sistema más poblado, y con el mayor número de planetas habitados. S \cfNekemekya:\c- Un planeta semi-artificial cubierto por una gran coraza metálica. Es el hogar de **Ix Nemeke**, y de los **Mekyon**, una raza de criaturas mecánicas que creó. -\cfXeryuga:\c- Un planeta infernal cubierto de magma altamente hostil, habitado por la injustamente adorable raza de los **Xeura**, junto con **Ix Xeuriges**, su creador. +\cfXeryuga:\c- Un planeta infernal cubierto de magma altamente hostil, habitado por la raza lagomórfica de los **Xeura**, junto con **Ix Xeuriges**, su creador. \cfUrai, Erusa, Sethia:\c- Un trío de gigantes de gas ricos en materiales valiosos. La explotación de estos recursos está actualmente impugnada por miembros del sistema. @@ -189,9 +189,9 @@ Un sistema de nuestra propia galaxia, solía habitar un único planeta, hasta qu Adicionalmente, otro sistema fue considerado como candidato para unirse, sin embargo las negociaciones fallaron debido a hostilidades hacia otro miembro de la coalición. Hay planes aun por parte de los Nukuri de restablecer la paz para que puedan formar parte de esta gran alianza, pero muchos lo ven como una causa perdida. \cxNotas de Saya:\c- -\cf"Las negociaciones fallaron" es una forma de decirlo. Dios, imagina... solo IMAGINA por un momento que la cosa hubiese salido mejor. ¡Formaríamos parte de una alianza interplanetaria enorme! Es que eso es... casi sacado de una puta novela de ciencia ficción.\c- +\cf"Las negociaciones fallaron" es una forma de decirlo. Dios, imagina... solo IMAGINA por un momento que la cosa hubiese salido mejor. ¡Formaríamos parte de una alianza interplanetaria enorme! Es que eso es... casi sacado de una novela de ciencia ficción.\c- -\cfPor cierto, no sé si sólo lo has ojeado o si realmente te lo has leído todo, pero ¿has VISTO lo del planeta ese? ¿¿¿Que recontracojones es esa mierda??? Es como si se le hubiera ocurrido a un puto niño loco supercreativo. Joder. ¿En serio un dios hizo eso? O... ¿va y resulta que es la puta mayor coincidencia ridícula imaginable?\c- +\cfPor cierto, no sé si sólo lo has ojeado o si realmente te lo has leído todo, pero ¿has VISTO lo del planeta ese? ¿¿¿Que rayos es todo eso??? Es como si se le hubiera ocurrido a un niño de primaria supercreativo. La madre. ¿En serio un dios hizo eso? O... ¿va y resulta que es la mayor coincidencia ridícula imaginable?\c- \cfSi es que yo no sé, Demo-chan... llegado este punto, puede ser cualquier cosa, con lo que tengo visto por ahí.\c- diff --git a/lore/es/xekke.txt b/lore/es/xekke.txt index 775c17751..cd21f4c68 100644 --- a/lore/es/xekke.txt +++ b/lore/es/xekke.txt @@ -19,6 +19,4 @@ Sobre la gente en sí, lo primero que se hace notar es su elocuencia. El idioma \cxNotas de Saya:\c- \cfSolo he visto fotos del sitio este, de Zana-sama. Definitivamente mola, todas esas montañas rocosas, las ciudades expandiéndose alrededor, los lagos y cataratas, las zonas volcánicas con ríos enormes de magma y GENTE BAÑÁNDOSE EN ELLA (madre de dios)...\c- -\cfY sí, ese es justo básicamente el hogar de Maruku-sama. Tiene ahí a toda la familia y todo, incluyendo a su... madre. Oh dios mío joder no hagas que empiece con su madre. Si es que voy a acabar otra vez encogida en un rincón pensando en AQUELLA vez.\c- - -\cfEs que no me lo creo una puñetera diosa milf de cinco metros todo buenorra va y me ofrece sexo justo ahí y entonces y luego puta joder me cago en todo por que tuve que ir y desmayarme joder es que podría haber tenido EL MEJOR SEXO DE MI PUTA VIDA CON LA PUTA DIOSA DE LA LUJURIA.\c- +\cfY sí, ese es justo básicamente el hogar de Maruku-sama. Tiene ahí a toda la familia y todo. Je, hasta me ha dicho que al vivir rodeada de titanes no se siente tan acomplejada por ser tan gigantesca.\c- diff --git a/lore/es/ynykron.txt b/lore/es/ynykron.txt index a31b85270..94b790d20 100644 --- a/lore/es/ynykron.txt +++ b/lore/es/ynykron.txt @@ -30,11 +30,11 @@ Es importante notar que el uso de este arma es altamente restringido. Se requier \cxNotas de Saya:\c- \cfA veces me pregunto si Misa realmente se da cuenta del peligro de las cosas que hace. Este trasto... es demasiado, sabes... Incluso comparado con todas las otras cosas en tu arsenal. Acabé aceptándolo igual, porque ya sabes como soy, y lo adorable que es Misa. Es que no puedo decirle que no a esa cara tan mona. Además, lo hizo para nosotras, específicamente.\c- -\cfPues eso, he aquí el "Lefazo de Dios" en toda su gloria. Una puta explosión de blancura cegadora que vamos... se puto carga todo lo que pilla por delante. Vaya un arma, ¿verdad?\c- +\cfPues eso, he aquí la "Furia Divina" en toda su gloria. Una maldita explosión de blancura cegadora que vamos... se puto carga todo lo que pilla por delante. Vaya un arma, ¿verdad?\c- \cfOh ya, y el modo alternativo... Sé que lo vas a usar igual por curiosidad. Sólo... ten cuidado, ¿vale?\c- -\cfOh, y para que lo sepas, la cosa esta es la razón de que hago copias de seguridad de tu núcleo antes de cada misión. Con cualquier otra arma, no es que me preocupe porque tu cuerpo es jodidamente resistente, pero la puta cosa esta es que está a otro nivel completamente. Tengo que decirlo otra vez, TEN MUCHO CUIDADO. Si te pilla la explosión desapareces para siempre, ¿lo pillas?\c- +\cfOh, y para que lo sepas, la cosa esta es la razón de que hago copias de seguridad de tu núcleo antes de cada misión. Con cualquier otra arma, no es que me preocupe porque tu cuerpo es jodidamente resistente, pero la cosa esta es que está a otro nivel completamente. Tengo que decirlo otra vez, TEN MUCHO CUIDADO. Si te pilla la explosión desapareces para siempre, ¿lo pillas?\c- TXT \cxDesignación:\c- \cf Artefacto Ynykron\c- @@ -65,12 +65,12 @@ Es importante notar que el uso de este arma es altamente restringido. Se requier \cxNotas de Saya:\c- \cfA veces me pregunto si Misa realmente se da cuenta del peligro de las cosas que hace. Este trasto... es demasiado, sabes... Incluso comparado con todas las otras cosas en tu arsenal. Acabé aceptándolo igual, porque ya sabes como soy, y lo adorable que es Misa. Es que no puedo decirle que no a esa cara tan mona. Además, lo hizo para nosotras, específicamente.\c- -\cfPues eso, he aquí el "Lefazo de Dios" en toda su gloria. Una puta explosión de blancura cegadora que vamos... se puto carga todo lo que pilla por delante. Vaya un arma, ¿verdad?\c- +\cfPues eso, he aquí la "Furia Divina" en toda su gloria. Una maldita explosión de blancura cegadora que vamos... se puto carga todo lo que pilla por delante. Vaya un arma, ¿verdad?\c- \cfOh ya, y el modo alternativo... Sé que lo vas a usar igual por curiosidad. Sólo... ten cuidado, ¿vale?\c- -\cfOh, y para que lo sepas, la cosa esta es la razón de que hago copias de seguridad de tu núcleo antes de cada misión. Con cualquier otra arma, no es que me preocupe porque tu cuerpo es jodidamente resistente, pero la puta cosa esta es que está a otro nivel completamente. Tengo que decirlo otra vez, TEN MUCHO CUIDADO. Si te pilla la explosión desapareces para siempre, ¿lo pillas?\c- +\cfOh, y para que lo sepas, la cosa esta es la razón de que hago copias de seguridad de tu núcleo antes de cada misión. Con cualquier otra arma, no es que me preocupe porque tu cuerpo es jodidamente resistente, pero la cosa esta es que está a otro nivel completamente. Tengo que decirlo otra vez, TEN MUCHO CUIDADO. Si te pilla la explosión desapareces para siempre, ¿lo pillas?\c- -\cfPS: Lo hemos confirmado (bueno, lo hizo Misa, directamente), esta cosa también funciona contra dioses. No como para matar, pero sí que se notan unos... efectos bastante destructivos. Curiosa historia, verdad? Justo el día después de nuestra boda, Misa se presentó ahí con su Ynykron personal a cuestas y desafió a la puta diosa de la guerra a un duelo, justo ahí. Se comió todo el puñetero disparo, le churruscó bien todo el cuerpo hasta dejarlo en los huesos. Después de esa experiencia tan dolorosa, va y declara a Misa como la segunda guerrera más fuerte del puto universo, tal que así. Oh, ya, y Erika describió la experiencia como "ser golpeada por una supernova condensada". Suena tope de heavy.\c- +\cfPS: Lo hemos confirmado (bueno, lo hizo Misa, directamente), esta cosa también funciona contra dioses. No como para matar, pero sí que se notan unos... efectos bastante destructivos. Curiosa historia, verdad? Justo el día después de nuestra boda, Misa se presentó ahí con su Ynykron personal a cuestas y desafió a la mismísima diosa de la guerra a un duelo, justo ahí. Se comió todo el puñetero disparo, le churruscó bien todo el cuerpo hasta dejarlo en los huesos. Después de esa experiencia tan dolorosa, va y declara a Misa como la segunda guerrera más fuerte del universo, tal que así. Oh, ya, y Erika describió la experiencia como "ser golpeada por una supernova condensada". Suena tope de heavy.\c- -\cfAh... y creo que esta va a ser la última vez que podamos usar la nuestra en una misión. Misa ya no quiere tener nada que ver con todo esto. En cuanto termine todo tenemos que llevársela para se destruida. Una pena, pero a ver, lo entiendo perfectamente, esta clase de arma no debería existir.\c- +\cfAh... y creo que esta va a ser la última vez que podamos usar la nuestra en una misión. Misa ya no quiere tener nada que ver con todo esto. En cuanto termine todo tenemos que llevársela para se destruida, y lo entiendo perfectamente, esta clase de arma tal vez no debería existir.\c- diff --git a/lore/es/yui.txt b/lore/es/yui.txt index 642ffe889..9a939746e 100644 --- a/lore/es/yui.txt +++ b/lore/es/yui.txt @@ -22,8 +22,6 @@ Todo esto definitivamente nunca ocurriría, y lo sabía, pero un día, la banda Tras el concierto, se puso en fila emocionada por tener un autógrafo, y fue entonces que lo imposible se hizo posible. Una vez delante de la **Estilosa Bruja del Oeste**, Yui se lo pidió, nerviosa, pero lo que recibió en su lugar fueron unas palabras que la dejaron paralizada: "Eres una chavala monísima. ¿Quieres salir conmigo?". Basta decir, que actualmente las dos están felizmente casadas. \cxNotas de Saya:\c- -\cfghfjksdhfsjkghsdkfjsfgj estaba tán contenta por ella pero también CELOSA, SÍ, CELOSÍSIMA. Dios cuando pasó pensé que se iba a desplomar, con la novia gótica tetuda preguntándole eso de repente, madre de dios...\c- +\cfghfjksdhfsjkghsdkfjsfgj estaba tán contenta por ella. pero dios, cuando pasó pensé que se iba a desplomar, con la bruja gótica molona preguntándole eso de repente, madre de dios...\c- -\cfPues aparentemente, Yu-chan resultó ser JUSTO su tipo, vaya una coincidencia, ¿eh? Puto hechas la una para la otra, justo ahí. Sinceramente, esto apesta tanto a cliché de romance a primera vista, buf... Apuesto a que cuesta mucho creer una historia así. Ashley-san hasta bromeaba diciendo que el "amor a primera vista" es algo normal en su familia. Pffff...\c- - -\cfJoder la envidia que tenía... con su novia gótica tetuda todo mazizorra... Bueno, la tenía, hasta que llegó Ibuki, jejejeje...\c- +\cfPues aparentemente, Yu-chan resultó ser JUSTO su tipo, vaya una coincidencia, ¿eh? Hechas la una para la otra, justo ahí. Sinceramente, esto apesta tanto a cliché de romance a primera vista, buf... Apuesto a que cuesta mucho creer una historia así. Ashley-san hasta bromeaba diciendo que el "amor a primera vista" es algo normal en su familia. Pffff... Venga ya...\c- diff --git a/lore/es/zanaveth2.txt b/lore/es/zanaveth2.txt index 18b82efec..57c49a82e 100644 --- a/lore/es/zanaveth2.txt +++ b/lore/es/zanaveth2.txt @@ -25,14 +25,14 @@ El 20 de Agosto de 2042, Zanaveth II y Misa tuvieron una hija, **Zanaveth Nekura A principios de la **Séptima Guerra Mundial Nukuri** de 2068, Zanaveth II huyó con su mujer y su hija a **Sankaideriha**, ayudada de la bruja Nukuri **Saniuke Okusainaya**, vieja amiga de la familia. Dos años después, tras demostrar no poder acostumbrarse a vivir allí, la familia decidió dejar a Zanaveth III al cuidado de Saya. Esto duraría hasta 2077, cuando el incidente de la **Cicatriz Blanca** dio lugar a la expulsión de todos los Nukuri en la Tierra. Zanaveth III fue enviada entonces a vivir con sus abuelos, hasta el final de la guerra en 2104, cuando sus padres regresaron de nuevo a Nahkami. -Desde la formación del **Gobierno Unificado Nukuri** en 2108, Zanaveth II mantiene el puesto de "Ministra de Relaciones Interespecie", gracias en parte a sus brillantes logros durante el tiempo que pasó como estudiante de la Universidad de Nos-Kora. +Desde la formación del **Gobierno Unificado de Nahkami** en 2108, Zanaveth II mantiene el puesto de "Ministra de Relaciones Interespecie", gracias en parte a sus brillantes logros durante el tiempo que pasó como estudiante de la Universidad de Nos-Kora. \cxNotas de Saya:\c- -\cfAhhhhhh, joder. Es la tipa más dulce y mona que he conocido jamás, te lo digo en serio. Y es un puto superlogro que haya convertido a esta monada alienígena en toda una otaku también, jeje...\c- +\cfAhhhhhh, dios. Es la tipa más dulce y mona que he conocido jamás, te lo digo en serio. Y es un superlogro que haya convertido a esta monada alienígena en toda una otaku también, jeje...\c- -\cfOh tía, conocerla fue el mejor regalo de navidad de la historia. Y al pequeñín rollito de canela de su mujer, también, jujuju... Suertuda que es, pillándose a un pivón como ese. Molaba mucho salir con ellas por ahí, especialmente por lo mucho que le impresionaba todo a Zana-sama yendo por la ciudad. Era como una niña en una tienda de chuches. ABSOLUTAMENTE ADORABLE, JODER.\c- +\cfOh tía, conocerla fue el mejor regalo de navidad de la historia, y al precioso rollito de canela de su mujer, también. Molaba mucho salir con ellas por ahí, especialmente por lo mucho que le impresionaba todo a Zana-sama yendo por la ciudad. Era como una niña en una tienda de chuches. ABSOLUTAMENTE ADORABLE.\c- -\cfAhora con la mierda esa de la Cicatriz Blanca, no nos hablamos mucho. Misa ha conseguido visitarme unas cuantas veces, pero no es lo mismo, y pude notar que tampoco lo pasaba bien. Sí, puta mierda, espero que un día se acabe todo y pueda tener a las dos aquí otra vez.\c- +\cfAhora con la mierda esa de la Cicatriz Blanca, no nos hablamos mucho. Misa ha conseguido visitarme unas cuantas veces, pero no es lo mismo, y pude notar que tampoco lo pasaba bien. Sí, espero que un día se acabe todo y pueda tener a las dos aquí otra vez.\c- TXT \cxNombre Completo:\c- \cf Zanaveth Nekuraku II\c- @@ -60,13 +60,13 @@ El 20 de Agosto de 2042, Zanaveth II y Misa tuvieron una hija, **Zanaveth Nekura A principios de la **Séptima Guerra Mundial Nukuri** de 2068, Zanaveth II huyó con su mujer y su hija a **Sankaideriha**, ayudada de la bruja Nukuri **Saniuke Okusainaya**, vieja amiga de la familia. Dos años después, tras demostrar no poder acostumbrarse a vivir allí, la familia decidió dejar a Zanaveth III al cuidado de Saya. Esto duraría hasta 2077, cuando el incidente de la **Cicatriz Blanca** dio lugar a la expulsión de todos los Nukuri en la Tierra. Zanaveth III fue enviada entonces a vivir con sus abuelos, hasta el final de la guerra en 2104, cuando sus padres regresaron de nuevo a Nahkami. -Desde la formación del **Gobierno Unificado Nukuri** en 2108, Zanaveth II mantiene el puesto de "Ministra de Relaciones Interespecie", gracias en parte a sus brillantes logros durante el tiempo que pasó como estudiante de la Universidad de Nos-Kora. +Desde la formación del **Gobierno Unificado de Nahkami** en 2108, Zanaveth II mantiene el puesto de "Ministra de Relaciones Interespecie", gracias en parte a sus brillantes logros durante el tiempo que pasó como estudiante de la Universidad de Nos-Kora. Desde 2171, Zanaveth II ha estado envuelta en negociaciones con los **Anarukon**, como parte de una "expansión multiversal" de la **Bleaknet**. Adicionalmente, a partir de un trato con **Akari Labs**, la Tierra tendrá también su propio nodo con el Nexo de Bleaknet. Este último acto siendo parte de un plan mayor para restaurar las relaciones entre Humanos y Nukuri, poniendo fin al Tratado de la Cicatriz Blanca. \cxNotas de Saya:\c- -\cfAhhhhhh, joder. Es la tipa más dulce y mona que he conocido jamás, te lo digo en serio. Y es un puto superlogro que haya convertido a esta monada alienígena en toda una otaku también, jeje...\c- +\cfAhhhhhh, dios. Es la tipa más dulce y mona que he conocido jamás, te lo digo en serio. Y es un superlogro que haya convertido a esta monada alienígena en toda una otaku también, jeje...\c- -\cfOh tía, conocerla fue el mejor regalo de navidad de la historia. Y al pequeñín rollito de canela de su mujer, también, jujuju... Suertuda que es, pillándose a un pivón como ese. Molaba mucho salir con ellas por ahí, especialmente por lo mucho que le impresionaba todo a Zana-sama yendo por la ciudad. Era como una niña en una tienda de chuches. ABSOLUTAMENTE ADORABLE, JODER.\c- +\cfOh tía, conocerla fue el mejor regalo de navidad de la historia, y al precioso rollito de canela de su mujer, también. Molaba mucho salir con ellas por ahí, especialmente por lo mucho que le impresionaba todo a Zana-sama yendo por la ciudad. Era como una niña en una tienda de chuches. ABSOLUTAMENTE ADORABLE.\c- -\cfAhora que la puta basura esa de la Cicatriz Blanca se irá a tomar por culo, tengo unas ganas tremendas de poderla ver de nuevo por aquí. Dios, cuando apareció después de la boda con Kirin-kun casi me puse a llorar. La echaba jodidamente tanto de menos, es que... en serio.\c- +\cfAhora que la basura esa de tratado la Cicatriz Blanca se irá a tomar viento, tengo unas ganas tremendas de poderla ver de nuevo por aquí. Dios, cuando apareció después de la boda con Kirin-kun casi me puse a llorar. La echaba tanto de menos, es que... en serio.\c- diff --git a/lore/es/zanaveth3.txt b/lore/es/zanaveth3.txt index 2ea18d54f..cf87424c7 100644 --- a/lore/es/zanaveth3.txt +++ b/lore/es/zanaveth3.txt @@ -15,7 +15,7 @@ TXT **Zanaveth Nekuraku III** es la hija única de **Zanaveth Nekuraku II** y **Misa Azadeku Unissix**. Pasó la mayor parte de su infancia en la Tierra, donde había nacido, aunque ella y su familia tuvieron que mudarse de vuelta a **Nahkami** una vez cumplió los cuatro años, ya que por ley, debía estudiar en un colegio Nukuri. Fue en el colegio donde la joven niña comenzaría a tener problemas notables. -Zanaveth III fue víctima frecuente de acoso por parte de sus compañeros, debido a su extraña personalidad y gestos, lo cual fue intensificado por los efectos de su Yikazoroi (lit. "Explosión de Estrés"), un desorden frecuente entre niños Nukuri (aunque solo desarrollado por uno entre doscientos), lo que causaba que el acoso constante resultara en arrebatos violentos, los cuales luego intensificaban el acoso aun más. Dada la inacción del personal del colegio entonces, su madre los demandaría, y sería trasladada a un colegio distinto al otro lado de la provincia. +Zanaveth III fue víctima frecuente de acoso por parte de sus compañeros, debido a su extraña personalidad y gestos. Dada la inacción del personal del colegio entonces, su madre optó por trasladarla a un colegio distinto al otro lado de la provincia. A comienzos de la **Séptima Guerra Mundial Nukuri**, Zanaveth III y sus madres huyeron temporalmente a **Sankaideriha**, ayudadas por una amiga de la familia Nekuraku. Durante su estancia allí, notarían que su hija tenía dificultades para acostumbrarse, citando que estar allí le provocaba "shock mental". Un diagnóstico formal mostraría que estaba reaccionando de forma negativa al flujo natural de magia de la isla, y se sugirió que se quedara a vivir con otra persona, fuera de la isla. Las dos finalmente pusieron a Zanaveth III al cuidado de **Saya Miyamoto**, una amiga que su madre hizo durante su primera visita a la Tierra. @@ -26,9 +26,9 @@ En 2120, Zanaveth III entró en la **Universidad de Nos-Kora**, apuntándose al Durante su estancia en la Tierra, Zanaveth III tuvo un historial notable en redes sociales y foros online, derivado de su extraño dialecto personal de Inglés y sus desvaríos sin sentido. Saya Miyamoto ha llegado a etiquetarla como **Chuunibyou**, un viejo término Japonés usado para identificar la clase de rasgos que muestra, como su notada auto-importancia y deseo de llamar la atención, junto con pretender tener poderes especiales / poseer conocimientos arcanos, y otros sentimientos fantásticos. \cxNotas de Saya:\c- -\cfLa pequeña chuuni Zana-chan. Sí, a ver, parecerá fría y distante y antisocial y tal, pero de eso se puede echar culpa a lo mierder que ha sido la gente con ella. Dios es que ojalá pudiera partirles la cara a todos esos abusones. Recuerdo como solía venirme toda llorando, cabreada y frustrada después de meterse en líos y yo la sentaba en mis rodillas y le daba abracitos y caricias. Ahhhhh... en serio que todo eso hacía que me sintiese como una madre.\c- +\cfLa pequeña chuuni Zana-chan. Sí, a ver, parecerá fría y distante y antisocial y tal, pero de eso se puede echar culpa a lo mierder que ha sido la gente con ella. Dios es que ojalá pudiera partirles la cara a todos esos abusones. Recuerdo como solía venirme toda llorando, cabreada y frustrada después de meterse en líos y yo la sentaba en mis rodillas y le daba abracitos y caricias. Soy básicamente como su tía guay, jeje.\c- -\cfLo echo de menos, de verdad. Acariciar ese pelo azul tan mullidito y suave que tiene. Me gustaría saber a que anda ahora, todo eso de la "dominación mundial" en serio suena a lo suyo xDDDDD\c- +\cfLo echo de menos, de verdad. Acariciar ese pelo azul tan mullidito y suave que tiene, escuchar como me contaba todas sus historias, como me enseñaba todos aquellos dibujos de sus personajes y tal. Me gustaría saber a que anda ahora, todo eso de la "dominación mundial" en serio suena a lo suyo xDDDDD\c- \cfBueno, si vuelve a la Tierra, yo por mí aceptaría con los brazos abiertos a mi nueva gran señora chuuni.\c- TXT @@ -61,8 +61,6 @@ Durante su estancia en la Tierra, Zanaveth III tuvo un historial notable en rede Durante un momento de confusión inmediatamente después de la invasión demoníaca de 2148, Zanaveth III hizo presencia en la Tierra, dando lugar entonces a su incomprensible plan de dominación mundial, el cual acabó fallando debido a conflictos internos con uno de sus "secuaces". Tras esta derrota, consiguió evadir a las autoridades durante un tiempo, ocultándose en las oficinas de **Akari Labs**, pero al final tuvo que regresar a Nahkami. \cxNotas de Saya:\c- -\cfAh mi preciosa pequeña chuuni. Fue toda una sorpresa que apareciera de repente en casa así salida de la nada, susto que me dio. Pero ahí estábamos reunidas de nuevo, como en los viejos tiempos. Estaba llena de heridas y quemaduras y tenía todo el maquillaje hecho un desastre de llorar, pobrecita. Le di muchos abrazos y caricias, todo lo que necesitaba. Incluso fui y le di un baño como cuando era pequeña, jejeje.\c- - -\cfOh ya, y lo que pasó luego. Sí, espero que guarde el secreto y no le cuente nada a Zana-sama. Puede que... bueno, que le haya "echado una mano", si sabes a lo que me refiero. Pensé que le ayudaría un poco a sentirse mejor, por muy estúpido que suene, pero le gustó, jujuju...\c- +\cfAh mi preciosa pequeña chuuni. Fue toda una sorpresa que apareciera de repente en casa así salida de la nada, susto que me dio. Pero ahí estábamos reunidas de nuevo, como en los viejos tiempos. Estaba llena de heridas y quemaduras y tenía todo el maquillaje hecho un desastre de llorar, pobrecita. Le di muchos abrazos y caricias, todo lo que necesitaba. Despues de un baño calentito y una buena comida preparada con el amor del mundo, ya volvió a sonreir, jeje.\c- \cfY luego, así de repente, se marchó otra vez, *suspiro*\c- diff --git a/maps/TITLEMAP.wad b/maps/TITLEMAP.wad index d44cf107e..0add6fe78 100644 Binary files a/maps/TITLEMAP.wad and b/maps/TITLEMAP.wad differ diff --git a/menudef.txt b/menudef.txt index 7cdfaca39..3c17b8c34 100644 --- a/menudef.txt +++ b/menudef.txt @@ -6,11 +6,11 @@ OptionValue "SWWMVoice" 3, "$SWWM_MUTELINERS" 4, "$SWWM_MUTEALL" } -OptionValue "SWWMEnforce" +OptionValue "SWWMYesNoAlways" { - -1, "$SWWM_FORCEDISABLE" - 0, "$SWWM_USERSET" - 1, "$SWWM_FORCEENABLE" + 0, "$TXT_NO" + 1, "$TXT_YES" + 2, "$OPTVAL_ALWAYS" } OptionValue "SWWMEnemyDropType" { @@ -18,12 +18,6 @@ OptionValue "SWWMEnemyDropType" 0, "$SWWM_DROPS_AMMO" 1, "$SWWM_DROPS_WEAPONS" } -OptionValue "SWWMDamageTarget" -{ - 0, "$SWWM_TARGET_ALWAYS" - 1, "$SWWM_TARGET_FIRSTHIT" - 2, "$SWWM_TARGET_DAMAGED" -} OptionValue "SWWMUntouchableStrictness" { 0, "$SWWM_UNTOUCHABLE_HEALTH" @@ -49,6 +43,9 @@ OptionValue "SWWMFunTrails" 8, "$SWWM_TRAILS_RANDOM" 9, "$SWWM_TRAILS_RAINBOW" 10, "$SWWM_TRAILS_TRANS" + 11, "$SWWM_TRAILS_DOSE" + 12, "$SWWM_TRAILS_CACO" + 13, "$SWWM_TRAILS_XMAS" } OptionValue "SWWMDRLASkill" { @@ -73,116 +70,108 @@ OptionValue "SWWMPistolStart" 1, "$SWWM_PISTOLSTART_MAP" 2, "$SWWM_PISTOLSTART_CLUSTER" } -OptionValue "SWWMHUDScale" +OptionValue "SWWMTagColor" { - 0, "$SWWM_TFITSCALE" - 1, "$SWWM_LFITSCALE" + 0, "$SWWM_COL_0" + 1, "$SWWM_COL_1" + 2, "$SWWM_COL_2" + 3, "$SWWM_COL_3" + 4, "$SWWM_COL_4" + 5, "$SWWM_COL_5" + 6, "$SWWM_COL_6" + 7, "$SWWM_COL_7" + 8, "$SWWM_COL_8" + 9, "$SWWM_COL_9" + 10, "$SWWM_COL_10" + 11, "$SWWM_COL_11" + 12, "$SWWM_COL_12" + 13, "$SWWM_COL_13" + 14, "$SWWM_COL_14" + 15, "$SWWM_COL_15" } -OptionValue "SWWMInterArt" +OptionValue "SWWMFriendlyFire" +{ + 0, "$SWWM_FF_UNRESTRICTED" + 1, "$SWWM_FF_INCOMING" + 2, "$SWWM_FF_ALL" +} +OptionValue "SWWMTarget" { 0, "$TXT_NO" 1, "$TXT_YES" - 2, "$SWWM_NORENDER" - 3, "$SWWM_NOFANART" + 2, "$SWWM_T_MONSTERS" + 3, "$SWWM_T_FRIENDS" } OptionMenu "SWWMOptionMenu" { Class "SWWMOptionMenu" Title "$SWWM_MTITLE" - Submenu "$SWWM_MMTITLE", "SWWMMinimapMenu" SafeCommand "$SWWM_CRESET", "event swwmresetcvars" SafeCommand "$SWWM_ARESET", "event swwmresetachievements" + Submenu "$SWWM_DBGTITLE", "SWWMDebugMenu" StaticText " " - StaticText "$SWWM_PTITLE", 1 SWWMPlayTime "$SWWM_PLAYTIME", "swwm_playtime" SWWMVoiceOption "$SWWM_VOICETYPE", "swwm_voicetype" + Option "$SWWM_TAGCOLOR", "swwm_tagcolor", "SWWMTagColor" Option "$SWWM_MUTELEVEL", "swwm_mutevoice", "SWWMVoice" Slider "$SWWM_VOICEAMP", "swwm_voiceamp", 1, 4, 1, 0 + Option "$SWWM_VOICELOG", "swwm_voicelog", "YesNo" Option "$SWWM_BEEPBOOP", "swwm_beepboop", "YesNo" - IfGame(Heretic, Hexen) - { - Option "$SWWM_6DOF", "swwm_fly6dof", "YesNo" - } + Option "$SWWM_ANALOGMOVE", "swwm_analogmove", "YesNo" + Option "$SWWM_SKIPSKILL", "swwm_skipskill", "YesNo" Option "$SWWM_REVIVE", "swwm_revive", "YesNo" ScaleSliderFix "$SWWM_REVIVECOOLDOWN", "swwm_revivecooldown", -1, 300, 30, "$SWWM_UNLIMITED", "$SWWM_ONERETRY" - Option "$SWWM_MENUPAUSE", "swwm_menupause", "YesNo" - Option "$SWWM_PRECISECROSSHAIR", "swwm_precisecrosshair", "YesNo" - Option "$SWWM_SELFLIGHT", "swwm_selflight", "YesNo" Submenu "$SWWM_ATITLE", "SWWMAchievementMenu" StaticText " " StaticText "$SWWM_OTITLE", 1 Option "$SWWM_SHADERS", "swwm_shaders", "YesNo" Slider "$SWWM_FLASH", "swwm_flashstrength", 0.0, 1.0, 0.1, 1 Slider "$SWWM_BUMP", "swwm_bumpstrength", 0.0, 1.0, 0.1, 1 - Option "$SWWM_CAMHUD", "swwm_camhud", "YesNo" + Option "$SWWM_PRECISECROSSHAIR", "swwm_precisecrosshair", "SWWMYesNoAlways" + Option "$SWWM_FUZZ", "swwm_fuzz", "YesNo" + StaticText " " + StaticText "$SWWM_UTITLE", 1 + Option "$SWWM_MENUPAUSE", "swwm_menupause", "YesNo" Option "$SWWM_FORCESTATS", "swwm_forcestats", "SWWMForceStats" - Option "$SWWM_UNIQSTATS", "swwm_uniqstats", "YesNo" - Slider "$SWWM_HUDMARGIN", "swwm_hudmargin", 0, 40, 1, 0 - Slider "$SWWM_MAXMSG", "swwm_maxshown", 1, 10, 1, 0 - Slider "$SWWM_MAXMSGBIG", "swwm_maxshownbig", 1, 20, 1, 0 - Slider "$SWWM_MAXPICK", "swwm_maxpickup", 1, 10, 1, 0 - Slider "$SWWM_CHATLEN", "swwm_chatduration", 1, 30, 1, 0 - Slider "$SWWM_MSGLEN", "swwm_msgduration", 1, 30, 1, 0 - Slider "$SWWM_PICKLEN", "swwm_pickduration", 1, 30, 1, 0 - Option "$SWWM_TARGET", "swwm_targeter", "YesNo" + Option "$SWWM_PERCENTSTATS", "swwm_percentstats", "YesNo" + Slider "$SWWM_HUDMARGIN", "swwm_hudmargin", 0, 10, 1, 0 + SWWMScaleField "$SWWM_HUDSCALE", "swwm_hudscale", "$SWWM_HS_AUTOL", "$SWWM_HS_AUTOT" + SWWMScaleField "$SWWM_HUDSCALE0", "swwm_hudscale0", "$SWWM_HS_AUTOL", "$SWWM_HS_AUTOT" + SWWMScaleField "$SWWM_HUDSCALE1", "swwm_hudscale1", "$SWWM_HS_AUTOL", "$SWWM_HS_AUTOT" + SWWMScaleField "$SWWM_HUDSCALE2", "swwm_hudscale2", "$SWWM_HS_AUTOL", "$SWWM_HS_AUTOT" + Option "$SWWM_HUDALLAMMO", "swwm_hudallammo", "YesNo" + Option "$SWWM_MM_ENABLE", "swwm_mm_enable", "YesNo" + Option "$SWWM_MM_MISSILES", "swwm_mm_missiles", "YesNo" + Option "$SWWM_MM_USECANVAS", "swwm_mm_usecanvas", "YesNo" + Option "$SWWM_MM_STEPTRACE", "swwm_mm_steptrace", "YesNo" + Slider "$SWWM_MM_MAXSTEPS", "swwm_mm_maxsteps", 100, 8000, 100, 0 + Slider "$SWWM_MM_MINSTEP", "swwm_mm_minstep", 8, 256, 8, 0 + Option "$SWWM_TARGET", "swwm_targeter", "SWWMTarget" + ScaleSliderFix "$SWWM_BARDIST", "swwm_bardist", 0, 4000, 100, "$SWWM_UNLIMITED" + Option "$SWWM_TARGETVAL", "swwm_targetvals", "YesNo" Option "$SWWM_TARGETTAG", "swwm_targettags", "YesNo" - Option "$SWWM_DAMAGETARGET", "swwm_damagetarget", "SWWMDamageTarget" Option "$SWWM_BIGTAGS", "swwm_bigtags", "YesNo" - Option "$SWWM_BOSSBAR", "swwm_bosshealthbars", "YesNo" - Option "$SWWM_DAMNUMS", "swwm_healthnums", "YesNo" - Option "$SWWM_ACCDAMAGE", "swwm_accdamage", "YesNo" + Option "$SWWM_DAMNUMS", "swwm_damnums", "YesNo" + Option "$SWWM_DAMNUMS_COLOR", "swwm_damnums_color", "YesNo" Option "$SWWM_SCORENUMS", "swwm_scorenums", "YesNo" - Option "$SWWM_SCOREBONUS", "swwm_scorebonus", "YesNo" IfGame(Doom, Heretic) { Option "$SWWM_POIS", "swwm_pois", "YesNo" } Option "$SWWM_NOMAPMSG", "swwm_nomapmsg", "NoYes" - ScaleSlider "$SWWM_MAXTARGETDIST", "swwm_maxtargetdist", 0, 6000, 100, "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXTARGETS", "swwm_maxtargets", 0, 1000, 1, "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXDAMNUMS", "swwm_maxdamnums", 0, 1000, 1, "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXSCORENUMS", "swwm_maxscorenums", 0, 1000, 1, "$SWWM_UNLIMITED" - Option "$SWWM_HUDSCALE", "swwm_hudscale", "SWWMHudScale" - Slider "$SWWM_BARSCALE", "swwm_barscalerel", -4, 4, 1, 0 - Slider "$SWWM_NUMSCALE", "swwm_numscalerel", -4, 4, 1, 0 - Slider "$SWWM_SCRSCALE", "swwm_scrscalerel", -4, 4, 1, 0 - IfGame(Doom, Heretic) - { - Slider "$SWWM_POISCALE", "swwm_poiscalerel", -4, 4, 1, 0 - } - Slider "$SWWM_DETSCALE", "swwm_detscalerel", -4, 4, 1, 0 - Option "$SWWM_NUMCOLOR_SCR", "swwm_numcolor_scr", "TextColors" - Option "$SWWM_NUMCOLOR_BONUS", "swwm_numcolor_bonus", "TextColors" - Option "$SWWM_NUMCOLOR_DMG", "swwm_numcolor_dmg", "TextColors" - Option "$SWWM_NUMCOLOR_HP", "swwm_numcolor_hp", "TextColors" - Option "$SWWM_NUMCOLOR_AP", "swwm_numcolor_ap", "TextColors" - IfGame(Doom, Heretic) - { - Option "$SWWM_INTERART", "swwm_interart", "SWWMInterArt" - Option "$SWWM_NOINTERTIPS", "swwm_nointertips", "YesNo" - Option "$SWWM_INTERMUSIC", "swwm_intermusic", "YesNo" - } - Option "$SWWM_FUZZ", "swwm_fuzz", "YesNo" - Option "$SWWM_OLDLOGO", "swwm_oldlogo", "YesNo" - IfGame(Doom, Heretic) - { - Option "$SWWM_SILENCEMAP", "swwm_silencemap", "YesNo" - } + Option "$SWWM_NOINTROEX", "swwm_nointroex", "YesNo" Option "$SWWM_FILTERACHIEVEMENTS", "swwm_filterachievements", "SWWMFilterAchievements" + Option "$SWWM_SHOWMAPTITLE", "swwm_showmaptitle", "YesNo" StaticText " " StaticText "$SWWM_ETITLE", 1 - Option "$SWWM_SHADOWS", "swwm_shadows", "YesNo" - ScaleSlider "$SWWM_SHADOWDIST", "swwm_shadowdist", -1, 4000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED" - Option "$SWWM_ITEMSPARKLES", "swwm_itemsparkles", "YesNo" - Option "$SWWM_ITEMGLOWS", "swwm_itemglows", "YesNo" - Option "$SWWM_BLOOD", "swwm_blood", "YesNo" Option "$SWWM_NOMAGDROP", "swwm_nomagdrop", "NoYes" - ScaleSlider "$SWWM_MAXBLOOD", "swwm_maxblood", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXGIBS", "swwm_maxgibs", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXCASINGS", "swwm_maxcasings", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXDEBRIS", "swwm_maxdebris", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED" + ScaleSliderFix "$SWWM_MAXBLOOD", "swwm_maxblood", -1, 1000, 100, "$SWWM_NONE", "$SWWM_UNLIMITED" + ScaleSliderFix "$SWWM_MAXGIBS", "swwm_maxgibs", -1, 1000, 100, "$SWWM_NONE", "$SWWM_UNLIMITED" + ScaleSliderFix "$SWWM_MAXPOOLS", "swwm_maxpools", -1, 1000, 100, "$SWWM_NONE", "$SWWM_UNLIMITED" + ScaleSliderFix "$SWWM_MAXCASINGS", "swwm_maxcasings", -1, 1000, 100, "$SWWM_NONE", "$SWWM_UNLIMITED" + ScaleSliderFix "$SWWM_MAXDEBRIS", "swwm_maxdebris", -1, 1000, 100, "$SWWM_NONE", "$SWWM_UNLIMITED" SafeCommand "$SWWM_CLEARFX", "netevent swwmcleareffects" StaticText " " StaticText "$SWWM_FTITLE", 1 @@ -191,8 +180,9 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_OMNIBUST", "swwm_omnibust", "YesNo" Option "$SWWM_SUPERFUEL", "swwm_superfuel", "YesNo" Option "$SWWM_PARTYTIME", "swwm_partytime", "YesNo" - Option "$SWWM_DEMOSLAYER", "swwm_demoslayer", "YesNo" + Option "$SWWM_ALTCLEAR", "swwm_altclear", "YesNo" Option "$SWWM_FUNTRAILS", "swwm_funtrails", "SWWMFunTrails" + Option "$SWWM_BONKHAMMER", "swwm_bonkhammer", "YesNo" TrapOption "$SWWM_ENGINE", "swwm_engine" StaticText " " StaticText "$SWWM_BTITLE", 1 @@ -200,41 +190,24 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_PS_RESETAMMO", "swwm_ps_resetammo", "SWWMPistolStart" Option "$SWWM_PS_RESETITEMS", "swwm_ps_resetitems", "SWWMPistolStart" Option "$SWWM_PS_RESETHEALTH", "swwm_ps_resethealth", "SWWMPistolStart" - Option "$SWWM_NODEATHEXIT", "swwm_nodeathexit", "YesNo" Option "$SWWM_ENEMYDROPS", "swwm_enemydrops", "SWWMEnemyDropType" - Option "$SWWM_ONDEMANDAMMO", "swwm_ondemandammo", "YesNo" Option "$SWWM_RESETSCORE", "swwm_resetscore", "YesNo" - Option "$SWWM_EXTRAALERT", "swwm_extraalert", "YesNo" - Option "$SWWM_BOSSENHANCE", "swwm_upgradebosses", "YesNo" IfGame(Doom, Heretic) { Option "$SWWM_DOOMFALL", "swwm_doomfall", "YesNo" } - Option "$SWWM_BALLUSE", "swwm_balluse", "YesNo" Option "$SWWM_CBTALL", "swwm_cbtall", "YesNo" Option "$SWWM_UNCAPALERT", "swwm_uncapalert", "YesNo" - Option "$SWWM_CAPMCRANGE", "swwm_capmcrange", "YesNo" - Option "$SWWM_NOTRACK", "swwm_notrack", "YesNo" - Option "$SWWM_YNYKRONALERT", "swwm_ynykronalert", "YesNo" - Option "$SWWM_SIMPLEFOG", "swwm_simplefog", "YesNo" - Option "$SWWM_SHOTGIB", "swwm_shotgib", "YesNo" Option "$SWWM_STRICTUNTOUCHABLE", "swwm_strictuntouchable", "SWWMUntouchableStrictness" - //Option "$SWWM_SWAPWEAPONS", "swwm_swapweapons", "YesNo" // comment out until DLC1 + Option "$SWWM_FRIENDLYFIRE", "swwm_friendlyfire", "SWWMFriendlyFire" + Option "$SWWM_SWAPWEAPONS", "swwm_swapweapons", "YesNo" StaticText " " StaticText "$SWWM_ITITLE", 1 + Option "$SWWM_USEWEAPONBAR", "swwm_useweaponbar", "YesNo" Option "$SWWM_USETOPICKUP", "swwm_usetopickup", "YesNo" - Option "$SWWM_MELEEPICKUP", "swwm_meleepickup", "YesNo" - Option "$SWWM_ARMORUSE", "swwm_autousearmor", "YesNo" - Option "$SWWM_HEALTHUSE", "swwm_autousehealth", "YesNo" - IfGame(Doom) - { - Option "$SWWM_BARRIERUSE", "swwm_autousebarrier", "YesNo" - } Option "$SWWM_SINGLEFIRST", "swwm_singlefirst", "YesNo" - Option "$SWWM_EARBUSTER", "swwm_earbuster", "YesNo" - Option "$SWWM_BUSTERPAUSE", "swwm_cbtpause", "YesNo" + Option "$SWWM_HOLDRELOAD", "swwm_holdreload", "YesNo" Option "$SWWM_COLLECTANIM", "swwm_collectanim", "YesNo" - Option "$SWWM_COLLECTANIMKEY", "swwm_collectanimkey", "YesNo" Option "$SWWM_WEAPONTOOLTIPS", "swwm_weapontooltips", "YesNo" SafeCommand "$SWWM_RESETTOOLTIPS", "event swwmresettooltips" StaticText " " @@ -243,57 +216,20 @@ OptionMenu "SWWMOptionMenu" IfGame(Doom) { Option "$SWWM_DRLASKILL", "swwm_drlaskill", "SWWMDRLASkill" + Option "$SWWM_LOBDOUBLED", "swwm_lobdoubled", "YesNo" } } -OptionValue "SWWMMinimapColorset" -{ - 0, "$SWWM_OWNCOLORS" - 1, "$SWWM_GZDOOMCOLORS" - 2, "$SWWM_DOOMCOLORS" - 3, "$SWWM_STRIFECOLORS" - 4, "$SWWM_RAVENCOLORS" -} - -OptionMenu "SWWMMinimapMenu" +OptionMenu "SWWMDebugMenu" { Class "SWWMOptionMenu" - Title "$SWWM_MMTITLE" + Title "$SWWM_DBGTITLE" - Option "$SWWM_MM_ENABLE", "swwm_mm_enable", "YesNo" - Option "$SWWM_MM_ROTATE", "swwm_mm_rotate", "YesNo" - Option "$SWWM_MM_GRID", "swwm_mm_grid", "YesNo" - Option "$SWWM_MM_PORTALOVERLAY", "swwm_mm_portaloverlay", "YesNo" - Option "$SWWM_MM_MISSILES", "swwm_mm_missiles", "YesNo" - Option "$SWWM_MM_COLORSET", "swwm_mm_colorset", "SWWMMinimapColorset" - SafeCommand "$SWWM_MM_RESET", "event swwmresetmmcolors" + StaticText "$SWWM_DBGWARN", "DarkGray" StaticText " " - ColorPicker "$SWWM_MM_BACKCOLOR", "swwm_mm_backcolor" - ColorPicker "$SWWM_MM_YOURCOLOR", "swwm_mm_yourcolor" - ColorPicker "$SWWM_MM_WALLCOLOR", "swwm_mm_wallcolor" - ColorPicker "$SWWM_MM_FDWALLCOLOR", "swwm_mm_fdwallcolor" - ColorPicker "$SWWM_MM_CDWALLCOLOR", "swwm_mm_cdwallcolor" - ColorPicker "$SWWM_MM_EFWALLCOLOR", "swwm_mm_efwallcolor" - ColorPicker "$SWWM_MM_GRIDCOLOR", "swwm_mm_gridcolor" - ColorPicker "$SWWM_MM_XHAIRCOLOR", "swwm_mm_xhaircolor" - ColorPicker "$SWWM_MM_NOTSEENCOLOR", "swwm_mm_notseencolor" - ColorPicker "$SWWM_MM_LOCKEDCOLOR", "swwm_mm_lockedcolor" - ColorPicker "$SWWM_MM_INTRALEVELCOLOR", "swwm_mm_intralevelcolor" - ColorPicker "$SWWM_MM_INTERLEVELCOLOR", "swwm_mm_interlevelcolor" - ColorPicker "$SWWM_MM_SECRETSECTORCOLOR", "swwm_mm_secretsectorcolor" - ColorPicker "$SWWM_MM_UNEXPLOREDSECRETCOLOR", "swwm_mm_unexploredsecretcolor" - ColorPicker "$SWWM_MM_SPECIALWALLCOLOR", "swwm_mm_specialwallcolor" - ColorPicker "$SWWM_MM_PORTALCOLOR", "swwm_mm_portalcolor" - ColorPicker "$SWWM_MM_TSWALLCOLOR", "swwm_mm_tswallcolor" - ColorPicker "$SWWM_MM_SECRETWALLCOLOR", "swwm_mm_secretwallcolor" - ColorPicker "$SWWM_MM_THINGCOLOR", "swwm_mm_thingcolor" - ColorPicker "$SWWM_MM_THINGCOLOR_MONSTER", "swwm_mm_thingcolor_monster" - ColorPicker "$SWWM_MM_THINGCOLOR_NCMONSTER", "swwm_mm_thingcolor_ncmonster" - ColorPicker "$SWWM_MM_THINGCOLOR_FRIEND", "swwm_mm_thingcolor_friend" - ColorPicker "$SWWM_MM_THINGCOLOR_ITEM", "swwm_mm_thingcolor_item" - ColorPicker "$SWWM_MM_THINGCOLOR_CITEM", "swwm_mm_thingcolor_citem" - ColorPicker "$SWWM_MM_THINGCOLOR_VIPITEM", "swwm_mm_thingcolor_vipitem" - ColorPicker "$SWWM_MM_THINGCOLOR_SHOOTABLE", "swwm_mm_thingcolor_shootable" - ColorPicker "$SWWM_MM_THINGCOLOR_MISSILE", "swwm_mm_thingcolor_missile" + Option "$SWWM_DBG_DEBUGBLAST", "swwm_debugblast", "YesNo" + Option "$SWWM_DBG_DEBUGVIEW", "swwm_debugview", "YesNo" + StaticText " " + SafeCommand "$SWWM_DBG_FIXITEMCAPS", "netevent swwmfixitemcaps" } AddOptionMenu "OptionsMenu" { @@ -309,9 +245,10 @@ ListMenu "MainMenu" { Class "SWWMMainMenu" Size Clean - Font "BigFont", "White", "Sapphire" + Animated + Font "TewiFontOutline", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 - LineSpacing 36 + LineSpacing 32 SWWMLogo Position 0, 56 SWWMTextItemM "$MNU_NEWGAME", "n", "PlayerclassMenu" @@ -324,9 +261,10 @@ ListMenu "MainMenuTextOnly" { Class "SWWMMainMenu" Size Clean - Font "BigFont", "White", "Sapphire" + Animated + Font "TewiFontOutline", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 - LineSpacing 36 + LineSpacing 32 SWWMLogo Position 0, 56 SWWMTextItemM "$MNU_NEWGAME", "n", "PlayerclassMenu" @@ -339,17 +277,20 @@ ListMenu "GameFilesMenu" { Class "SWWMCleanMenu" Size Clean - Font "BigFont", "White", "Sapphire" + Animated + Font "TewiFontOutline", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 - LineSpacing 36 + LineSpacing 32 Position 0, 88 SWWMTextItemM "$MNU_LOADGAME", "l", "LoadGameMenu" SWWMTextItemM "$MNU_SAVEGAME", "s", "SaveGameMenu" } ListMenu "EpisodeMenu" { - Class "SWWMBigMenuHack" + Class "SWWMScrollMenu" Size Clean + Animated + ForceList IfGame(Doom, Heretic, Hexen, Strife) { NetgameMessage "$NEWGAME" @@ -358,20 +299,22 @@ ListMenu "EpisodeMenu" { NetgameMessage "$CNEWGAME" } - Font "BigFont", "White", "Sapphire" + Font "TewiFontOutline", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 - LineSpacing 0 + LineSpacing 32 SWWMStaticTextM 0, 0, "$MNU_EPISODE", "Blue" - Position 0, 0 + Position 0, 56 } ListMenu "SkillMenu" { - Class "SWWMBigMenuHack" + Class "SWWMScrollMenu" Size Clean - Font "BigFont", "White", "Sapphire" + Animated + ForceList + Font "TewiFontOutline", "White", "Sapphire" Selector "graphics/DemoIcon.png", -24, 0 - LineSpacing 0 + LineSpacing 32 SWWMStaticTextM 0, 0, "$MNU_CHOOSESKILL", "Blue" - Position 0, 0 + Position 0, 56 } diff --git a/modeldef.ammo b/modeldef.ammo deleted file mode 100644 index c02f73d18..000000000 --- a/modeldef.ammo +++ /dev/null @@ -1,743 +0,0 @@ -Model "RedShell" -{ - Path "models" - - Model 0 "ShellAmmo_One_d.3d" - Skin 0 "Shell_Normal.png" - Scale 0.024 0.024 0.024 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "RedShell2" -{ - Path "models" - - Model 0 "ShellAmmo_Two_d.3d" - Skin 0 "Shell_Normal.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "RedShell4" -{ - Path "models" - - Model 0 "ShellAmmo_Four_d.3d" - Skin 0 "Shell_Normal.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "GreenShell" -{ - Path "models" - - Model 0 "ShellAmmo_One_d.3d" - Skin 0 "Shell_Slug.png" - Scale 0.024 0.024 0.024 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "GreenShell2" -{ - Path "models" - - Model 0 "ShellAmmo_Two_d.3d" - Skin 0 "Shell_Slug.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "GreenShell4" -{ - Path "models" - - Model 0 "ShellAmmo_Four_d.3d" - Skin 0 "Shell_Slug.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "WhiteShell" -{ - Path "models" - - Model 0 "ShellAmmo_One_d.3d" - Skin 0 "Shell_Dragon.png" - Scale 0.024 0.024 0.024 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "WhiteShell2" -{ - Path "models" - - Model 0 "ShellAmmo_Two_d.3d" - Skin 0 "Shell_Dragon.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "WhiteShell4" -{ - Path "models" - - Model 0 "ShellAmmo_Four_d.3d" - Skin 0 "Shell_Dragon.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "BlueShell" -{ - Path "models" - - Model 0 "ShellAmmo_One_d.3d" - Skin 0 "Shell_Kinylum.png" - Scale 0.024 0.024 0.024 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "BlueShell2" -{ - Path "models" - - Model 0 "ShellAmmo_Two_d.3d" - Skin 0 "Shell_Kinylum.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "BlueShell4" -{ - Path "models" - - Model 0 "ShellAmmo_Four_d.3d" - Skin 0 "Shell_Kinylum.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "BlackShell" -{ - Path "models" - - Model 0 "ShellAmmo_One_d.3d" - Skin 0 "Shell_Fuck.png" - Scale 0.024 0.024 0.024 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "BlackShell2" -{ - Path "models" - - Model 0 "ShellAmmo_Two_d.3d" - Skin 0 "Shell_Fuck.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "BlackShell4" -{ - Path "models" - - Model 0 "ShellAmmo_Four_d.3d" - Skin 0 "Shell_Fuck.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "PurpleShell" -{ - Path "models" - - Model 0 "ShellAmmo_One_d.3d" - Skin 0 "Shell_Ball.png" - Scale 0.024 0.024 0.024 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "PurpleShell2" -{ - Path "models" - - Model 0 "ShellAmmo_Two_d.3d" - Skin 0 "Shell_Ball.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "PurpleShell4" -{ - Path "models" - - Model 0 "ShellAmmo_Four_d.3d" - Skin 0 "Shell_Ball.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "GoldShell" -{ - Path "models" - - Model 0 "ShellAmmo_One_d.3d" - Skin 0 "Shell_Gold.png" - Scale 0.024 0.024 0.024 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "GoldShell2" -{ - Path "models" - - Model 0 "ShellAmmo_Two_d.3d" - Skin 0 "Shell_Gold.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "GoldShell4" -{ - Path "models" - - Model 0 "ShellAmmo_Four_d.3d" - Skin 0 "Shell_Gold.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "EvisceratorShell" -{ - Path "models" - - Model 0 "EvisceratorProj_d.3d" - Skin 0 "EvisceratorShell.png" - Scale 0.18 0.18 0.18 - PitchOffset 45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "EvisceratorShell2" -{ - Path "models" - - Model 0 "EvisceratorClip_Two_d.3d" - SurfaceSkin 0 0 "EvisceratorShell.png" - SurfaceSkin 0 1 "EvisceratorClip.png" - Scale 0.18 0.18 0.18 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "EvisceratorShell3" -{ - Path "models" - - Model 0 "EvisceratorClip_Three_d.3d" - SurfaceSkin 0 0 "EvisceratorShell.png" - SurfaceSkin 0 1 "EvisceratorClip.png" - Scale 0.18 0.18 0.18 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "EvisceratorSixPack" -{ - Path "models" - - Model 0 "EvisceratorAmmo_d.3d" - SurfaceSkin 0 0 "EvisceratorAmmo.png" - SurfaceSkin 0 1 "EvisceratorShell.png" - Scale 0.08 0.08 0.08 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "HellblazerMissiles" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile.png" - Scale 0.16 0.16 0.16 - PitchOffset 45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerMissiles2" -{ - Path "models" - - Model 0 "HellblazerDuo_d.3d" - Skin 0 "HellblazerMissile.png" - Scale 0.16 0.16 0.16 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerMissiles3" -{ - Path "models" - - Model 0 "HellblazerTrio_d.3d" - Skin 0 "HellblazerMissile.png" - Scale 0.16 0.16 0.16 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerMissileMag" -{ - Path "models" - - Model 0 "HellblazerAmmo_d.3d" - SurfaceSkin 0 0 "HellblazerAmmo.png" - SurfaceSkin 0 1 "HellblazerMissile.png" - Scale 0.16 0.16 0.16 - PitchOffset -45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "HellblazerCrackshots" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Cluster.png" - Scale 0.16 0.16 0.16 - PitchOffset 45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerCrackshots2" -{ - Path "models" - - Model 0 "HellblazerDuo_d.3d" - Skin 0 "HellblazerMissile_Cluster.png" - Scale 0.16 0.16 0.16 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerCrackshotMag" -{ - Path "models" - - Model 0 "HellblazerAmmo_Three_d.3d" - SurfaceSkin 0 0 "HellblazerAmmo_Cluster.png" - SurfaceSkin 0 1 "HellblazerMissile_Cluster.png" - Scale 0.16 0.16 0.16 - PitchOffset -45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "HellblazerRavagers" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Fire.png" - Scale 0.16 0.16 0.16 - PitchOffset 45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerRavagerMag" -{ - Path "models" - - Model 0 "HellblazerAmmo_Three_d.3d" - SurfaceSkin 0 0 "HellblazerAmmo_Fire.png" - SurfaceSkin 0 1 "HellblazerMissile_Fire.png" - Scale 0.16 0.16 0.16 - PitchOffset -45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "HellblazerWarheads" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Nuke.png" - Scale 0.16 0.16 0.16 - PitchOffset 45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerWarheadMag" -{ - Path "models" - - Model 0 "HellblazerAmmo_Two_d.3d" - SurfaceSkin 0 0 "HellblazerAmmo_Nuke.png" - SurfaceSkin 0 1 "HellblazerMissile_Nuke.png" - Scale 0.16 0.16 0.16 - PitchOffset -45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "SparkUnit" -{ - Path "models" - - Model 0 "SparksterAmmo_d.3d" - Skin 0 "SparksterAmmo.png" - Scale 0.16 0.16 0.16 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparkUnit2" -{ - Path "models" - - Model 0 "SparksterAmmo2_d.3d" - Skin 0 "SparksterAmmo.png" - Scale 0.16 0.16 0.16 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "SilverBulletAmmo" -{ - Path "models" - - Model 0 "SilverbulletMag_d.3d" - Skin 0 "SilverbulletAmmo.png" - Scale 0.25 0.25 0.25 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBulletAmmo2" -{ - Path "models" - - Model 0 "SilverbulletMag_d.3d" - Skin 0 "SilverbulletAmmo_FCB.png" - Scale 0.25 0.25 0.25 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBullets" -{ - Path "models" - - Model 0 "SilverbulletBullet_d.3d" - Skin 0 "SilverbulletBullet.png" - Scale 0.05 0.05 0.05 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBullets_2" -{ - Path "models" - - Model 0 "SilverbulletBullet2_d.3d" - Skin 0 "SilverbulletBullet.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBullets_3" -{ - Path "models" - - Model 0 "SilverbulletBullet3_d.3d" - Skin 0 "SilverbulletBullet.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBullets2" -{ - Path "models" - - Model 0 "SilverbulletBullet_FCB_d.3d" - Skin 0 "SilverbulletBullet_FCB.png" - Scale 0.05 0.05 0.05 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBullets2_2" -{ - Path "models" - - Model 0 "SilverbulletBullet2_FCB_d.3d" - Skin 0 "SilverbulletBullet_FCB.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBullets2_3" -{ - Path "models" - - Model 0 "SilverbulletBullet3_FCB_d.3d" - Skin 0 "SilverbulletBullet_FCB.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "CandyGunAmmo" -{ - Path "models" - - Model 0 "ExplodiumMag_d.3d" - Skin 0 "CandyGun.png" - Scale 0.06 0.06 0.06 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "CandyGunBullets" -{ - Path "models" - - Model 0 "ExplodiumBullet_d.3d" - SurfaceSkin 0 0 "CandyBullet.png" - SurfaceSkin 0 1 "CandyCasing.png" - Scale 0.02 0.02 0.02 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "CandyGunBullets2" -{ - Path "models" - - Model 0 "ExplodiumBullet2_d.3d" - SurfaceSkin 0 0 "CandyBullet.png" - SurfaceSkin 0 1 "CandyCasing.png" - Scale 0.02 0.02 0.02 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "CandyGunBullets3" -{ - Path "models" - - Model 0 "ExplodiumBullet3_d.3d" - SurfaceSkin 0 0 "CandyBullet.png" - SurfaceSkin 0 1 "CandyCasing.png" - Scale 0.02 0.02 0.02 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "YnykronAmmo" -{ - Path "models" - - Model 0 "YnykronAmmo_d.3d" - Skin 0 "YnykronAmmo.png" - Scale 0.18 0.18 0.18 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "FabricatorTier1" -{ - Path "models" - - Model 0 "AmmoFabricator_d.3d" - Skin 0 "Fabricator.png" - Scale 0.038 0.038 0.038 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "FabricatorTier2" -{ - Path "models" - - Model 0 "AmmoFabricator_d.3d" - Skin 0 "Fabricator_Tier2.png" - Scale 0.042 0.042 0.042 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "FabricatorTier3" -{ - Path "models" - - Model 0 "AmmoFabricator_d.3d" - Skin 0 "Fabricator_Tier3.png" - Scale 0.048 0.048 0.048 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "FabricatorTier4" -{ - Path "models" - - Model 0 "AmmoFabricator_d.3d" - Skin 0 "Fabricator_Tier4.png" - Scale 0.054 0.054 0.054 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "HammerspaceEmbiggener" -{ - Path "models" - - Model 0 "Embiggener_d.3d" - Skin 0 "Embiggener.png" - Scale 0.03 0.03 0.03 - PitchOffset 20 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "BulkHammerspaceEmbiggener" -{ - Path "models" - - Model 0 "Embiggener_d.3d" - Skin 0 "Embiggener.png" - Scale 0.03 0.03 0.03 - PitchOffset 20 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 - Skin 0 "Embiggener_Tier2.png" - FrameIndex XZW1 B 0 0 - Skin 0 "Embiggener_Tier3.png" - FrameIndex XZW1 C 0 0 - Skin 0 "Embiggener_Tier4.png" - FrameIndex XZW1 D 0 0 - Skin 0 "Embiggener_Tier5.png" - FrameIndex XZW1 E 0 0 -} diff --git a/modeldef.candygun b/modeldef.candygun deleted file mode 100644 index 1a0e02467..000000000 --- a/modeldef.candygun +++ /dev/null @@ -1,519 +0,0 @@ -Model "CandyCasing" -{ - Path "models" - - Model 0 "ExplodiumCasing_d.3d" - Skin 0 "CandyCasing.png" - Scale 0.03 0.03 0.03 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 0.5 - FrameIndex XZW1 B 0 0 -} - -Model "CandyMag" -{ - Path "models" - - Model 0 "ExplodiumMag_d.3d" - Scale 0.03 0.03 0.03 - USEACTORPITCH - USEACTORROLL - - Skin 0 "CandyGun_EmptyMag.png" - FrameIndex XZW1 A 0 0 - RollOffset 90 - ZOffset 0.5 - FrameIndex XZW1 B 0 0 - RollOffset -90 - FrameIndex XZW1 C 0 0 -} -Model "CandyMagProj" -{ - Path "models" - - Model 0 "ExplodiumMag_d.3d" - Skin 0 "CandyGun.png" - Scale 0.03 0.03 0.03 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 1 -} - -Model "CandyGunProj" -{ - Path "models" - - Model 0 "ExplodiumGunPickup_d.3d" - Skin 0 "CandyGun.png" - Scale 0.03 0.03 0.03 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "CandyBeam" -{ - Path "models/extra" - - Model 0 "BaseBeam_d.3d" - Skin 0 "CandyTrail.png" - Scale 0.0625 0.04 0.04 - Offset 8 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "TinyCandyBeam" -{ - Path "models/extra" - - Model 0 "BaseBeam_d.3d" - Skin 0 "CandyTrail.png" - Scale 0.03125 0.01 0.01 - Offset 4 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "CandyGun" -{ - Path "models" - - Model 0 "ExplodiumGunPickup_d.3d" - SurfaceSkin 0 0 "CandyGun.png" - SurfaceSkin 0 1 "CandyGun.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "" - FrameIndex XZW1 B 0 0 -} - -Model "CandyGun" -{ - Path "models/extra" - - Model 2 "Flat_d.3d" - Scale 0.15 0.15 0.15 - Offset 16 -60 -12 - RollOffset 90 - AngleOffset 90 - - Skin 2 "CandyMuz0.png" - FrameIndex XZWZ A 2 0 - Skin 2 "CandyMuz1.png" - FrameIndex XZWZ B 2 0 - Skin 2 "CandyMuz2.png" - FrameIndex XZWZ C 2 0 - Skin 2 "CandyMuz3.png" - FrameIndex XZWZ D 2 0 - Skin 2 "CandyMuz4.png" - FrameIndex XZWZ E 2 0 - Skin 2 "CandyMuz5.png" - FrameIndex XZWZ F 2 0 - Skin 2 "CandyMuz6.png" - FrameIndex XZWZ G 2 0 - Skin 2 "CandyMuz7.png" - FrameIndex XZWZ H 2 0 - Skin 2 "CandyMuz8.png" - FrameIndex XZWZ I 2 0 - Skin 2 "CandyMuz9.png" - FrameIndex XZWZ J 2 0 -} - -Model "CandyGun" -{ - Path "models" - - Model 1 "ExplodiumGun1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "CandyGun.png" - SurfaceSkin 1 5 "CandyGun.png" - - Scale -0.005 0.0025 0.005 - AngleOffset -90 - Offset 0 0 -2 - - // Still - FrameIndex XZW2 A 1 0 - // Deselect - FrameIndex XZWA T 1 1 - FrameIndex XZWA U 1 2 - FrameIndex XZWA V 1 3 - FrameIndex XZWA W 1 4 - // Select - FrameIndex XZW2 B 1 5 - FrameIndex XZW2 C 1 6 - FrameIndex XZW2 D 1 7 - FrameIndex XZW2 E 1 8 - FrameIndex XZW2 F 1 9 - FrameIndex XZW2 G 1 10 - FrameIndex XZW2 H 1 11 - // Fire - FrameIndex XZW2 I 1 13 - FrameIndex XZW2 J 1 14 - FrameIndex XZW2 K 1 15 - FrameIndex XZW2 L 1 16 - FrameIndex XZW2 M 1 17 - FrameIndex XZW2 N 1 18 - FrameIndex XZW2 O 1 19 - FrameIndex XZW2 P 1 20 - FrameIndex XZW2 Q 1 21 - // unused - FrameIndex XZW2 R 1 22 - FrameIndex XZW2 S 1 23 - // Reload (Part 1) - FrameIndex XZW2 T 1 25 - FrameIndex XZW2 U 1 26 - FrameIndex XZW2 V 1 27 - FrameIndex XZW2 W 1 28 - FrameIndex XZW2 X 1 29 - FrameIndex XZW2 Y 1 30 - FrameIndex XZW2 Z 1 31 - FrameIndex XZW3 A 1 32 - FrameIndex XZW3 B 1 33 - FrameIndex XZW3 C 1 34 - FrameIndex XZW3 D 1 35 - FrameIndex XZW3 E 1 36 - FrameIndex XZW3 F 1 37 - FrameIndex XZW3 G 1 38 - FrameIndex XZW3 H 1 39 - FrameIndex XZW3 I 1 40 - // Reload (Part 1 w/ Empty Mag) - SurfaceSkin 1 5 "CandyGun_EmptyMag.png" // empty mag - FrameIndex XZW3 J 1 25 - FrameIndex XZW3 K 1 26 - FrameIndex XZW3 L 1 27 - FrameIndex XZW3 M 1 28 - FrameIndex XZW3 N 1 29 - FrameIndex XZW3 O 1 30 - FrameIndex XZW3 P 1 31 - FrameIndex XZW3 Q 1 32 - FrameIndex XZW3 R 1 33 - FrameIndex XZW3 S 1 34 - FrameIndex XZW3 T 1 35 - FrameIndex XZW3 U 1 36 - FrameIndex XZW3 V 1 37 - FrameIndex XZW3 W 1 38 - FrameIndex XZW3 X 1 39 - FrameIndex XZW3 Y 1 40 - // Reload (Part 2) - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "CandyGun.png" // show new mag - FrameIndex XZW3 Z 1 41 - FrameIndex XZW4 A 1 42 - FrameIndex XZW4 B 1 43 - FrameIndex XZW4 C 1 44 - FrameIndex XZW4 D 1 45 - FrameIndex XZW4 E 1 46 - FrameIndex XZW4 F 1 47 - FrameIndex XZW4 G 1 48 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZW4 H 1 49 - FrameIndex XZW4 I 1 50 - FrameIndex XZW4 J 1 51 - SurfaceSkin 1 5 "CandyGun.png" // show mag - FrameIndex XZW4 K 1 52 - FrameIndex XZW4 L 1 53 - FrameIndex XZW4 M 1 54 - FrameIndex XZW4 N 1 55 - FrameIndex XZW4 O 1 56 - FrameIndex XZW4 P 1 57 - FrameIndex XZW4 Q 1 58 - FrameIndex XZW4 R 1 59 - FrameIndex XZW4 S 1 60 - FrameIndex XZW4 T 1 61 - FrameIndex XZW4 U 1 62 - FrameIndex XZW4 V 1 63 - // Slide - FrameIndex XZW4 W 1 65 - FrameIndex XZW4 X 1 66 - FrameIndex XZW4 Y 1 67 - FrameIndex XZW4 Z 1 68 - FrameIndex XZW5 A 1 69 - FrameIndex XZW5 B 1 70 - FrameIndex XZW5 C 1 71 - FrameIndex XZW5 D 1 72 - FrameIndex XZW5 E 1 73 - FrameIndex XZW5 F 1 74 - FrameIndex XZW5 G 1 75 - FrameIndex XZW5 H 1 76 - FrameIndex XZW5 I 1 77 - FrameIndex XZW5 J 1 78 - FrameIndex XZW5 K 1 79 - FrameIndex XZW5 L 1 80 - FrameIndex XZW5 M 1 81 - // "Explosive" Reload - FrameIndex XZW5 N 1 83 - FrameIndex XZW5 O 1 84 - FrameIndex XZW5 P 1 85 - FrameIndex XZW5 Q 1 86 - FrameIndex XZW5 R 1 87 - FrameIndex XZW5 S 1 88 - FrameIndex XZW5 T 1 89 - FrameIndex XZW5 U 1 90 - FrameIndex XZW5 V 1 91 - FrameIndex XZW5 W 1 92 - FrameIndex XZW5 X 1 93 - FrameIndex XZW5 Y 1 94 - FrameIndex XZW5 Z 1 95 - FrameIndex XZW6 A 1 96 - FrameIndex XZW6 B 1 97 - FrameIndex XZW6 C 1 98 - FrameIndex XZW6 D 1 99 - FrameIndex XZW6 E 1 100 - FrameIndex XZW6 F 1 101 - FrameIndex XZW6 G 1 102 - FrameIndex XZW6 H 1 103 - FrameIndex XZW6 I 1 104 - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "CandyGun.png" // show new mag - FrameIndex XZW6 J 1 105 - FrameIndex XZW6 K 1 106 - FrameIndex XZW6 L 1 107 - FrameIndex XZW6 M 1 108 - FrameIndex XZW6 N 1 109 - FrameIndex XZW6 O 1 110 - FrameIndex XZW6 P 1 111 - FrameIndex XZW6 Q 1 112 - FrameIndex XZW6 R 1 113 - FrameIndex XZW6 S 1 114 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZW6 T 1 115 - FrameIndex XZW6 U 1 116 - FrameIndex XZW6 V 1 117 - FrameIndex XZW6 W 1 118 - FrameIndex XZW6 X 1 119 - FrameIndex XZW6 Y 1 120 - FrameIndex XZW6 Z 1 121 - SurfaceSkin 1 5 "CandyGun.png" // show mag - // Check Bullet - SurfaceSkin 1 4 "CandyCasing.png" // show casing - FrameIndex XZW7 A 1 157 - FrameIndex XZW7 B 1 158 - FrameIndex XZW7 C 1 159 - FrameIndex XZW7 D 1 160 - FrameIndex XZW7 E 1 161 - FrameIndex XZW7 F 1 162 - FrameIndex XZW7 G 1 163 - FrameIndex XZW7 H 1 164 - FrameIndex XZW7 I 1 165 - FrameIndex XZW7 J 1 166 - FrameIndex XZW7 K 1 167 - FrameIndex XZW7 L 1 168 - FrameIndex XZW7 M 1 169 - FrameIndex XZW7 N 1 170 - FrameIndex XZW7 O 1 171 - FrameIndex XZW7 P 1 172 - FrameIndex XZW7 Q 1 173 - FrameIndex XZW7 R 1 174 - FrameIndex XZW7 S 1 175 - SurfaceSkin 1 4 "" // hide casing - // Melee - FrameIndex XZW7 T 1 177 - FrameIndex XZW7 U 1 178 - FrameIndex XZW7 V 1 179 - FrameIndex XZW7 W 1 180 - FrameIndex XZW7 X 1 181 - FrameIndex XZW7 Y 1 182 - FrameIndex XZW7 Z 1 183 - FrameIndex XZW8 A 1 184 - FrameIndex XZW8 B 1 185 - FrameIndex XZW8 C 1 186 - FrameIndex XZW8 D 1 187 - FrameIndex XZW8 E 1 188 - FrameIndex XZW8 F 1 189 - // Check Gun - FrameIndex XZW8 G 1 192 - FrameIndex XZW8 H 1 193 - FrameIndex XZW8 I 1 194 - FrameIndex XZW8 J 1 195 - FrameIndex XZW8 K 1 196 - FrameIndex XZW8 L 1 197 - FrameIndex XZW8 M 1 198 - FrameIndex XZW8 N 1 199 - FrameIndex XZW8 O 1 200 - FrameIndex XZW8 P 1 201 - FrameIndex XZW8 Q 1 202 - FrameIndex XZW8 R 1 203 - FrameIndex XZW8 S 1 204 - FrameIndex XZW8 T 1 205 - FrameIndex XZW8 U 1 206 - FrameIndex XZW8 V 1 207 - FrameIndex XZW8 W 1 208 - FrameIndex XZW8 X 1 209 - FrameIndex XZW8 Y 1 210 - FrameIndex XZW8 Z 1 211 - // Spin Gun - FrameIndex XZW9 A 1 213 - FrameIndex XZW9 B 1 214 - FrameIndex XZW9 C 1 215 - FrameIndex XZW9 D 1 216 - FrameIndex XZW9 E 1 217 - FrameIndex XZW9 F 1 218 - FrameIndex XZW9 G 1 219 - FrameIndex XZW9 H 1 220 - FrameIndex XZW9 I 1 221 - FrameIndex XZW9 J 1 222 - FrameIndex XZW9 K 1 223 - FrameIndex XZW9 L 1 224 - FrameIndex XZW9 M 1 225 - FrameIndex XZW9 N 1 226 - FrameIndex XZW9 O 1 227 - FrameIndex XZW9 P 1 228 - FrameIndex XZW9 Q 1 229 - FrameIndex XZW9 R 1 230 - FrameIndex XZW9 S 1 231 - FrameIndex XZW9 T 1 232 - FrameIndex XZW9 U 1 233 - FrameIndex XZW9 V 1 234 - FrameIndex XZW9 W 1 235 - // Throw Gun - FrameIndex XZWA Z 1 128 - FrameIndex XZWB A 1 129 - FrameIndex XZWB B 1 130 - FrameIndex XZWB C 1 131 - FrameIndex XZWB D 1 132 - FrameIndex XZWB E 1 133 - FrameIndex XZWB F 1 134 - FrameIndex XZWB G 1 135 - FrameIndex XZWB H 1 136 - FrameIndex XZWB I 1 137 - FrameIndex XZWB J 1 138 - FrameIndex XZWB K 1 139 - FrameIndex XZWB L 1 140 - FrameIndex XZWB M 1 141 - FrameIndex XZWB N 1 142 - FrameIndex XZWB O 1 143 - FrameIndex XZWB P 1 144 - FrameIndex XZWB Q 1 145 - FrameIndex XZWB R 1 146 - SurfaceSkin 1 3 "" // hide gun - SurfaceSkin 1 5 "" // hide mag - FrameIndex XZWB S 1 147 - FrameIndex XZWB T 1 148 - FrameIndex XZWB U 1 149 - FrameIndex XZWB V 1 150 - FrameIndex XZWB W 1 151 - FrameIndex XZWB X 1 152 - FrameIndex XZWB Y 1 153 - FrameIndex XZWB Z 1 154 - // Casing - SurfaceSkin 1 0 "" - SurfaceSkin 1 1 "" - SurfaceSkin 1 2 "" - SurfaceSkin 1 3 "" - SurfaceSkin 1 4 "CandyCasing_Used.png" - SurfaceSkin 1 5 "" - FrameIndex XZWC A 1 14 - FrameIndex XZWC B 1 15 - FrameIndex XZWC C 1 16 - FrameIndex XZWC D 1 17 - FrameIndex XZWC E 1 18 - FrameIndex XZWC F 1 19 - FrameIndex XZWC G 1 20 - FrameIndex XZWC H 1 21 - FrameIndex XZWC I 1 22 - FrameIndex XZWC J 1 23 - /// LAST ROUND - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "CandyGun.png" - SurfaceSkin 1 4 "" - SurfaceSkin 1 5 "CandyGun.png" - // Fire - FrameIndex XZWC K 1 237 - FrameIndex XZWC L 1 238 - FrameIndex XZWC M 1 239 - FrameIndex XZWC N 1 240 - FrameIndex XZWC O 1 241 - FrameIndex XZWC P 1 242 - FrameIndex XZWC Q 1 243 - FrameIndex XZWC R 1 244 - FrameIndex XZWC S 1 245 - // Still - FrameIndex XZW9 X 1 248 - // Reload (Part 1) - SurfaceSkin 1 5 "CandyGun_EmptyMag.png" // empty mag - FrameIndex XZW9 Z 1 249 - FrameIndex XZWC X 1 250 - FrameIndex XZWC Y 1 251 - FrameIndex XZWC Z 1 252 - FrameIndex XZWD A 1 253 - FrameIndex XZWD B 1 254 - FrameIndex XZWD C 1 255 - FrameIndex XZWD D 1 256 - FrameIndex XZWD E 1 257 - FrameIndex XZWD F 1 258 - FrameIndex XZWD G 1 259 - FrameIndex XZWD H 1 260 - FrameIndex XZWD I 1 261 - FrameIndex XZWD J 1 262 - FrameIndex XZWD K 1 263 - FrameIndex XZWD L 1 264 - // Reload (Part 2) - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "CandyGun.png" // show new mag - FrameIndex XZWD M 1 265 - FrameIndex XZWD N 1 266 - FrameIndex XZWD O 1 267 - FrameIndex XZWD P 1 268 - FrameIndex XZWD Q 1 269 - FrameIndex XZWD R 1 270 - FrameIndex XZWD S 1 271 - FrameIndex XZWD T 1 272 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZWD U 1 273 - FrameIndex XZWD V 1 274 - FrameIndex XZWD W 1 275 - SurfaceSkin 1 5 "CandyGun.png" // show mag - FrameIndex XZWD X 1 276 - FrameIndex XZWD Y 1 277 - FrameIndex XZWD Z 1 278 - FrameIndex XZWE A 1 279 - FrameIndex XZWE B 1 280 - FrameIndex XZWE C 1 281 - FrameIndex XZWE D 1 282 - FrameIndex XZWE E 1 283 - FrameIndex XZWE F 1 284 - FrameIndex XZWE G 1 285 - FrameIndex XZWE H 1 286 - FrameIndex XZWE I 1 287 - FrameIndex XZWE J 1 288 - FrameIndex XZWE K 1 289 - FrameIndex XZWE L 1 290 - FrameIndex XZWE M 1 291 - FrameIndex XZWE N 1 292 - FrameIndex XZWE O 1 293 - FrameIndex XZWE P 1 294 - // Deselect - FrameIndex XZWE Q 1 297 - FrameIndex XZWE R 1 298 - FrameIndex XZWE S 1 299 - FrameIndex XZWE T 1 300 - // Select - FrameIndex XZWE U 1 301 - FrameIndex XZWE V 1 302 - FrameIndex XZWE W 1 303 - FrameIndex XZWE X 1 304 - FrameIndex XZWE Y 1 305 - FrameIndex XZWE Z 1 306 - FrameIndex XZWF A 1 307 - -} diff --git a/modeldef.collectibles b/modeldef.collectibles deleted file mode 100644 index 060003f5e..000000000 --- a/modeldef.collectibles +++ /dev/null @@ -1,157 +0,0 @@ -Model "GenericCube" -{ - Path "models" - - Model 0 "extra/BaseCube_d.3d" - Skin 0 "PerfectlyGeneric.png" - Scale 0.04 0.04 0.04 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "AkariProject" -{ - Path "models" - - Model 0 "Book_d.3d" - Skin 0 "AkariProject.png" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "LoveSignalsCD" -{ - Path "models" - - Model 0 "CD_d.3d" - Skin 0 "LoveSignals.png" - Scale 0.013 0.013 0.013 - ZOffset 16 - RollOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "NutatcoBar" -{ - Path "models" - - Model 0 "Nutatco_d.3d" - Skin 0 "Nutatco.png" - Scale 0.018 0.018 0.018 - ZOffset 16 - PitchOffset -60 - RollOffset 90 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "FrispyCorn" -{ - Path "models" - - Model 0 "FrispyCorn_d.3d" - Skin 0 "FrispyCorn.png" - Scale 0.025 0.025 0.025 - ZOffset 16 - RollOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SayaBean" -{ - Path "models" - - Model 0 "SayaBean_d.3d" - Skin 0 "SayaBean.png" - Scale 0.025 0.025 0.025 - ZOffset 16 - RollOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MothPlushy" -{ - Path "models" - - Model 0 "MothPlush_d.3d" - Skin 0 "MothPlush.png" - Scale 0.06 0.06 0.06 - ZOffset 20 - RollOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "DemoPlush" -{ - Path "models" - - Model 0 "DemoPlush_d.3d" - SurfaceSkin 0 0 "DemoPlush.png" - SurfaceSkin 0 1 "DemoPlush2.png" - Scale 0.075 0.075 0.075 - ZOffset 20 - RollOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "KirinCummies" -{ - Path "models" - - Model 0 "TootFroot_d.3d" - SurfaceSkin 0 0 "TootFroot.png" - SurfaceSkin 0 1 "matcap/silvermap.png" - Scale 0.015 0.015 0.015 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MilkBreads" -{ - Path "models" - - Model 0 "MilkBreads_d.3d" - Skin 0 "MilkBreads.png" - Scale 0.016 0.016 0.016 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "KirinManga" -{ - Path "models" - - Model 0 "Book_d.3d" - Skin 0 "KirinManga.png" - Scale 0.018 0.018 0.018 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "KirinPlush" -{ - Path "models" - - Model 0 "KirinPlush_d.3d" - Skin 0 "KirinPlush.png" - Scale 0.08 0.08 0.08 - ZOffset 20 - RollOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.deepimpact b/modeldef.deepimpact deleted file mode 100644 index 1449d87e0..000000000 --- a/modeldef.deepimpact +++ /dev/null @@ -1,111 +0,0 @@ -Model "DeepImpact" -{ - Path "models" - - Model 0 "DeepImpactPickup_d.3d" - Skin 0 "DeepImpact.png" - Scale 0.1 0.1 0.1 - AngleOffset 180 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "DeepImpact" -{ - Path "models" - - Model 1 "DeepImpact1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "DeepImpact.png" - - Scale -0.005 0.0025 0.005 - AngleOffset -90 - Offset 0 0 -2 - - // Still / Down / Select - FrameIndex XZW2 A 1 0 // still / down - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - FrameIndex XZW2 G 1 6 - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 // enddown / startselect - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - FrameIndex XZW2 M 1 12 - FrameIndex XZW2 N 1 13 - FrameIndex XZW2 O 1 14 - FrameIndex XZW2 P 1 15 - // Fire - FrameIndex XZW2 Q 1 17 - FrameIndex XZW2 R 1 18 - FrameIndex XZW2 S 1 19 - FrameIndex XZW2 T 1 20 - FrameIndex XZW2 U 1 21 - // AltFire - FrameIndex XZW2 V 1 23 - FrameIndex XZW2 W 1 24 - FrameIndex XZW2 X 1 25 - FrameIndex XZW2 Y 1 26 - FrameIndex XZW2 Z 1 27 - FrameIndex XZW3 A 1 28 - FrameIndex XZW3 B 1 29 - FrameIndex XZW3 C 1 30 - FrameIndex XZW3 D 1 31 - FrameIndex XZW3 E 1 32 - FrameIndex XZW3 F 1 33 - FrameIndex XZW3 G 1 34 - // ReloadBeg - FrameIndex XZW3 H 1 36 - FrameIndex XZW3 I 1 37 - FrameIndex XZW3 J 1 38 - // Reload - FrameIndex XZW3 K 1 39 - FrameIndex XZW3 L 1 40 - FrameIndex XZW3 M 1 41 - FrameIndex XZW3 N 1 42 - FrameIndex XZW3 O 1 43 - FrameIndex XZW3 P 1 44 - FrameIndex XZW3 Q 1 45 - // ReloadEnd - FrameIndex XZW3 R 1 47 - FrameIndex XZW3 S 1 48 - FrameIndex XZW3 T 1 49 - FrameIndex XZW3 U 1 50 - FrameIndex XZW3 V 1 51 - // CheckGun - FrameIndex XZW3 W 1 53 - FrameIndex XZW3 X 1 54 - FrameIndex XZW3 Y 1 55 - FrameIndex XZW3 Z 1 56 - FrameIndex XZW4 A 1 57 - FrameIndex XZW4 B 1 58 - FrameIndex XZW4 C 1 59 - FrameIndex XZW4 D 1 60 - FrameIndex XZW4 E 1 61 - FrameIndex XZW4 F 1 62 - FrameIndex XZW4 G 1 63 - // Melee - FrameIndex XZW4 H 1 65 - FrameIndex XZW4 I 1 66 - FrameIndex XZW4 J 1 67 - FrameIndex XZW4 K 1 68 - FrameIndex XZW4 L 1 69 - FrameIndex XZW4 M 1 70 - FrameIndex XZW4 N 1 71 - FrameIndex XZW4 O 1 72 - FrameIndex XZW4 P 1 73 - FrameIndex XZW4 Q 1 74 - FrameIndex XZW4 R 1 75 - FrameIndex XZW4 S 1 76 - FrameIndex XZW4 T 1 77 - FrameIndex XZW4 U 1 78 - FrameIndex XZW4 V 1 79 -} diff --git a/modeldef.demolitionist b/modeldef.demolitionist deleted file mode 100644 index 6d63ded14..000000000 --- a/modeldef.demolitionist +++ /dev/null @@ -1,613 +0,0 @@ -Model "Demolitionist" -{ - Path "models" - Model 0 "DemolitionistPlayer_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoFace_Default.png" - SurfaceSkin 0 2 "DemoBody.png" - SurfaceSkin 0 3 "DemoHead.png" - SurfaceSkin 0 4 "DemoArms.png" - SurfaceSkin 0 5 "DemoLegs.png" - SurfaceSkin 0 6 "DemoSoft.png" - SurfaceSkin 0 7 "DemoMisc.png" - SurfaceSkin 0 8 "DemoKeys.png" - SurfaceSkin 0 9 "ExplodiumGun.png" - SurfaceSkin 0 10 "ExplodiumGun.png" - Scale 0.0025 0.0025 0.0025 - IGNORETRANSLATION - - // Still/Walk - FrameIndex XZW1 A 0 1 - FrameIndex XZW1 B 0 2 - FrameIndex XZW1 C 0 3 - FrameIndex XZW1 D 0 4 - FrameIndex XZW1 E 0 5 // rstep - FrameIndex XZW1 F 0 6 - FrameIndex XZW1 G 0 7 - FrameIndex XZW1 H 0 8 - FrameIndex XZW1 I 0 9 - FrameIndex XZW1 J 0 10 - FrameIndex XZW1 K 0 11 - FrameIndex XZW1 L 0 12 - FrameIndex XZW1 M 0 13 // lstep - FrameIndex XZW1 N 0 14 - FrameIndex XZW1 O 0 15 - FrameIndex XZW1 P 0 16 - // Run - FrameIndex XZW1 Q 0 18 - FrameIndex XZW1 R 0 19 - FrameIndex XZW1 S 0 20 - // RunLoop - FrameIndex XZW1 T 0 21 - FrameIndex XZW1 U 0 22 - FrameIndex XZW1 V 0 23 // rstep - FrameIndex XZW1 W 0 24 - FrameIndex XZW1 X 0 25 - FrameIndex XZW1 Y 0 26 - FrameIndex XZW1 Z 0 27 - FrameIndex XZW2 A 0 28 - FrameIndex XZW2 B 0 29 - FrameIndex XZW2 C 0 30 // lstep - FrameIndex XZW2 D 0 31 - FrameIndex XZW2 E 0 32 - FrameIndex XZW2 F 0 33 - FrameIndex XZW2 G 0 34 - // RunEnd - FrameIndex XZW2 H 0 36 - FrameIndex XZW2 I 0 37 - FrameIndex XZW2 J 0 38 - FrameIndex XZW2 K 0 39 - FrameIndex XZW2 L 0 40 - // Pain - SurfaceSkin 0 1 "DemoFace_Hurt.png" - FrameIndex XZW2 M 0 42 - FrameIndex XZW2 N 0 43 - FrameIndex XZW2 O 0 44 - FrameIndex XZW2 P 0 45 - FrameIndex XZW2 Q 0 46 - SurfaceSkin 0 1 "DemoFace_Default.png" - // Death - SurfaceSkin 0 1 "DemoFace_Dead.png" - FrameIndex XZW2 R 0 48 - FrameIndex XZW2 S 0 49 - FrameIndex XZW2 T 0 50 - SurfaceSkin 0 1 "DemoFace_Off.png" - FrameIndex XZW2 U 0 51 - SurfaceSkin 0 1 "DemoFace_Dead.png" - FrameIndex XZW2 V 0 52 - SurfaceSkin 0 1 "DemoFace_Off.png" - FrameIndex XZW2 W 0 53 - FrameIndex XZW2 X 0 54 - SurfaceSkin 0 1 "DemoFace_Dead.png" - FrameIndex XZW2 Y 0 55 - SurfaceSkin 0 1 "DemoFace_Off.png" - FrameIndex XZW2 Z 0 56 - SurfaceSkin 0 1 "DemoFace_Dead.png" - FrameIndex XZW3 A 0 57 - SurfaceSkin 0 1 "DemoFace_Off.png" - FrameIndex XZW3 B 0 58 - FrameIndex XZW3 C 0 59 - SurfaceSkin 0 1 "DemoFace_Dead.png" - FrameIndex XZW3 D 0 60 - SurfaceSkin 0 1 "DemoFace_Off.png" - FrameIndex XZW3 E 0 61 - FrameIndex XZW3 F 0 62 - FrameIndex XZW3 G 0 63 - FrameIndex XZW3 H 0 64 - SurfaceSkin 0 1 "DemoFace_Default.png" - // Jump - FrameIndex XZW3 I 0 66 - FrameIndex XZW3 J 0 67 - FrameIndex XZW3 K 0 68 - FrameIndex XZW3 L 0 69 - FrameIndex XZW3 M 0 70 - FrameIndex XZW3 N 0 71 - FrameIndex XZW3 O 0 72 - // JumpStill - FrameIndex XZW3 P 0 73 - // JumpEndB - FrameIndex XZW3 Q 0 74 - FrameIndex XZW3 R 0 75 - FrameIndex XZW3 S 0 76 - FrameIndex XZW3 T 0 77 - FrameIndex XZW3 U 0 78 - FrameIndex XZW3 V 0 79 - FrameIndex XZW3 W 0 80 - // Fall - FrameIndex XZW3 X 0 82 - FrameIndex XZW3 Y 0 83 - FrameIndex XZW3 Z 0 84 - FrameIndex XZW4 A 0 85 - FrameIndex XZW4 B 0 86 - // FallLoop - FrameIndex XZW4 C 0 87 - FrameIndex XZW4 D 0 88 - FrameIndex XZW4 E 0 89 - FrameIndex XZW4 F 0 90 - FrameIndex XZW4 G 0 91 - FrameIndex XZW4 H 0 92 - // FallEnd - FrameIndex XZW4 I 0 93 - FrameIndex XZW4 J 0 94 - FrameIndex XZW4 K 0 95 - FrameIndex XZW4 L 0 96 - FrameIndex XZW4 M 0 97 - FrameIndex XZW4 N 0 98 - // Dash - FrameIndex XZW4 O 0 100 - // DashLoop - FrameIndex XZW4 P 0 101 - FrameIndex XZW4 Q 0 102 - FrameIndex XZW4 R 0 103 - FrameIndex XZW4 S 0 104 - // DashEnd - FrameIndex XZW4 T 0 106 - FrameIndex XZW4 U 0 107 - FrameIndex XZW4 V 0 108 - FrameIndex XZW4 W 0 109 - FrameIndex XZW4 X 0 110 - // Wave - FrameIndex XZW4 Y 0 112 - FrameIndex XZW4 Z 0 113 - FrameIndex XZW5 A 0 114 - FrameIndex XZW5 B 0 115 - FrameIndex XZW5 C 0 116 - FrameIndex XZW5 D 0 117 - FrameIndex XZW5 E 0 118 - FrameIndex XZW5 F 0 119 - FrameIndex XZW5 G 0 120 - FrameIndex XZW5 H 0 121 - FrameIndex XZW5 I 0 122 - FrameIndex XZW5 J 0 123 - FrameIndex XZW5 K 0 124 - FrameIndex XZW5 L 0 125 - FrameIndex XZW5 M 0 126 - // Thumbs Up - FrameIndex XZW5 N 0 128 - FrameIndex XZW5 O 0 129 - FrameIndex XZW5 P 0 130 - FrameIndex XZW5 Q 0 131 - FrameIndex XZW5 R 0 132 - SurfaceSkin 0 1 "DemoFace_Grin.png" - FrameIndex XZW5 S 0 133 - FrameIndex XZW5 T 0 134 - FrameIndex XZW5 U 0 135 - FrameIndex XZW5 V 0 136 - FrameIndex XZW5 W 0 137 - FrameIndex XZW5 X 0 138 - FrameIndex XZW5 Y 0 139 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZW5 Z 0 140 - FrameIndex XZW6 A 0 141 - FrameIndex XZW6 B 0 142 - FrameIndex XZW6 C 0 143 - FrameIndex XZW6 D 0 144 - // Victory - FrameIndex XZW6 E 0 146 - FrameIndex XZW6 F 0 147 - FrameIndex XZW6 G 0 148 - FrameIndex XZW6 H 0 149 - SurfaceSkin 0 1 "DemoFace_Grin.png" - FrameIndex XZW6 I 0 150 - FrameIndex XZW6 J 0 151 - FrameIndex XZW6 K 0 152 - FrameIndex XZW6 L 0 153 - FrameIndex XZW6 M 0 154 - FrameIndex XZW6 N 0 155 - FrameIndex XZW6 O 0 156 - FrameIndex XZW6 P 0 157 - FrameIndex XZW6 Q 0 158 - FrameIndex XZW6 R 0 159 - FrameIndex XZW6 S 0 160 - FrameIndex XZW6 T 0 161 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZW6 U 0 162 - FrameIndex XZW6 V 0 163 - FrameIndex XZW6 W 0 164 - // Attack - FrameIndex XZW6 X 0 166 - FrameIndex XZW6 Y 0 167 - FrameIndex XZW6 Z 0 168 - FrameIndex XZW7 A 0 169 - FrameIndex XZW7 B 0 170 - FrameIndex XZW7 C 0 171 - // Crouch - FrameIndex XZW7 D 0 173 - FrameIndex XZW7 E 0 174 - FrameIndex XZW7 F 0 175 - FrameIndex XZW7 G 0 176 - FrameIndex XZW7 H 0 177 - FrameIndex XZW7 I 0 178 - FrameIndex XZW7 J 0 179 - FrameIndex XZW7 K 0 180 - FrameIndex XZW7 L 0 181 - // Crawl - FrameIndex XZW7 M 0 182 - FrameIndex XZW7 N 0 183 - FrameIndex XZW7 O 0 184 - FrameIndex XZW7 P 0 185 // slither1 - FrameIndex XZW7 Q 0 186 - FrameIndex XZW7 R 0 187 - FrameIndex XZW7 S 0 188 - FrameIndex XZW7 T 0 189 // slither2 - FrameIndex XZW7 U 0 190 - FrameIndex XZW7 V 0 191 - // Crouched Attack - FrameIndex XZW7 W 0 193 - FrameIndex XZW7 X 0 194 - FrameIndex XZW7 Y 0 195 - FrameIndex XZW7 Z 0 196 - FrameIndex XZW8 A 0 197 - FrameIndex XZW8 B 0 198 - // Crouched Pain - SurfaceSkin 0 1 "DemoFace_Hurt.png" - FrameIndex XZW8 C 0 200 - FrameIndex XZW8 D 0 201 - FrameIndex XZW8 E 0 202 - FrameIndex XZW8 F 0 203 - SurfaceSkin 0 1 "DemoFace_Default.png" - // Crouched Death - SurfaceSkin 0 1 "DemoFace_Dead.png" - FrameIndex XZW8 G 0 205 - SurfaceSkin 0 1 "DemoFace_Off.png" - FrameIndex XZW8 H 0 206 - SurfaceSkin 0 1 "DemoFace_Dead.png" - FrameIndex XZW8 I 0 207 - FrameIndex XZW8 J 0 208 - SurfaceSkin 0 1 "DemoFace_Off.png" - FrameIndex XZW8 K 0 209 - FrameIndex XZW8 L 0 210 - SurfaceSkin 0 1 "DemoFace_Default.png" - // Uncrouch - FrameIndex XZW8 M 0 212 - FrameIndex XZW8 N 0 213 - FrameIndex XZW8 O 0 214 - FrameIndex XZW8 P 0 215 - FrameIndex XZW8 Q 0 216 - FrameIndex XZW8 R 0 217 - FrameIndex XZW8 S 0 218 - // Melee - FrameIndex XZW8 T 0 220 - FrameIndex XZW8 U 0 221 - FrameIndex XZW8 V 0 222 - FrameIndex XZW8 W 0 223 - FrameIndex XZW8 X 0 224 - FrameIndex XZW8 Y 0 225 - FrameIndex XZW8 Z 0 226 - FrameIndex XZW9 A 0 227 - FrameIndex XZW9 B 0 228 - FrameIndex XZW9 C 0 229 - FrameIndex XZW9 D 0 230 - FrameIndex XZW9 E 0 231 - FrameIndex XZW9 F 0 232 - // Reload - FrameIndex XZW9 G 0 234 - FrameIndex XZW9 H 0 235 - FrameIndex XZW9 I 0 236 - FrameIndex XZW9 J 0 237 - SurfaceSkin 0 10 "" - FrameIndex XZW9 K 0 238 - FrameIndex XZW9 L 0 239 - FrameIndex XZW9 M 0 240 - FrameIndex XZW9 N 0 241 - FrameIndex XZW9 O 0 242 - FrameIndex XZW9 P 0 243 - FrameIndex XZW9 Q 0 244 - SurfaceSkin 0 10 "ExplodiumGun.png" - FrameIndex XZW9 R 0 245 - FrameIndex XZW9 S 0 246 - FrameIndex XZW9 T 0 247 - FrameIndex XZW9 U 0 248 - FrameIndex XZW9 V 0 249 - FrameIndex XZW9 W 0 250 - FrameIndex XZW9 X 0 251 - FrameIndex XZW9 Y 0 252 - FrameIndex XZW9 Z 0 253 - FrameIndex XZWA A 0 254 - FrameIndex XZWA B 0 255 - FrameIndex XZWA C 0 256 - FrameIndex XZWA D 0 257 - FrameIndex XZWA E 0 258 - // Spin Gun - FrameIndex XZWA F 0 260 - FrameIndex XZWA G 0 261 - FrameIndex XZWA H 0 262 - FrameIndex XZWA I 0 263 - FrameIndex XZWA J 0 264 - FrameIndex XZWA K 0 265 - FrameIndex XZWA L 0 266 - FrameIndex XZWA M 0 267 - FrameIndex XZWA N 0 268 - FrameIndex XZWA O 0 269 - FrameIndex XZWA P 0 270 - FrameIndex XZWA Q 0 271 - FrameIndex XZWA R 0 272 - FrameIndex XZWA S 0 273 - FrameIndex XZWA T 0 274 - FrameIndex XZWA U 0 275 - FrameIndex XZWA V 0 276 - FrameIndex XZWA W 0 277 - FrameIndex XZWA X 0 278 - FrameIndex XZWA Y 0 279 - // Crouched Melee - FrameIndex XZWA Z 0 282 - FrameIndex XZWB A 0 283 - FrameIndex XZWB B 0 284 - FrameIndex XZWB C 0 285 - FrameIndex XZWB D 0 286 - FrameIndex XZWB E 0 287 - FrameIndex XZWB F 0 288 - FrameIndex XZWB G 0 289 - FrameIndex XZWB H 0 290 - FrameIndex XZWB I 0 291 - FrameIndex XZWB J 0 292 - FrameIndex XZWB K 0 293 - FrameIndex XZWB L 0 294 - // Crouched Reload - FrameIndex XZWB M 0 296 - FrameIndex XZWB N 0 297 - FrameIndex XZWB O 0 298 - FrameIndex XZWB P 0 299 - SurfaceSkin 0 10 "" - FrameIndex XZWB Q 0 300 - FrameIndex XZWB R 0 301 - FrameIndex XZWB S 0 302 - FrameIndex XZWB T 0 303 - FrameIndex XZWB U 0 304 - FrameIndex XZWB V 0 305 - FrameIndex XZWB W 0 306 - SurfaceSkin 0 10 "ExplodiumGun.png" - FrameIndex XZWB X 0 307 - FrameIndex XZWB Y 0 308 - FrameIndex XZWB Z 0 309 - FrameIndex XZWC A 0 310 - FrameIndex XZWC B 0 311 - FrameIndex XZWC C 0 312 - FrameIndex XZWC D 0 313 - FrameIndex XZWC E 0 314 - FrameIndex XZWC F 0 315 - FrameIndex XZWC G 0 316 - FrameIndex XZWC H 0 317 - FrameIndex XZWC I 0 318 - FrameIndex XZWC J 0 319 - // Crouched Spin Gun - FrameIndex XZWC K 0 321 - FrameIndex XZWC L 0 322 - FrameIndex XZWC M 0 323 - FrameIndex XZWC N 0 324 - FrameIndex XZWC O 0 325 - FrameIndex XZWC P 0 326 - FrameIndex XZWC Q 0 327 - FrameIndex XZWC R 0 328 - FrameIndex XZWC S 0 329 - FrameIndex XZWC T 0 330 - FrameIndex XZWC U 0 331 - FrameIndex XZWC V 0 332 - FrameIndex XZWC W 0 333 - FrameIndex XZWC X 0 334 - FrameIndex XZWC Y 0 335 - FrameIndex XZWC Z 0 336 - FrameIndex XZWD A 0 337 - FrameIndex XZWD B 0 338 - FrameIndex XZWD C 0 339 - FrameIndex XZWD D 0 340 - // Blow Kiss - FrameIndex XZWD E 0 343 - FrameIndex XZWD F 0 344 - FrameIndex XZWD G 0 345 - FrameIndex XZWD H 0 346 - SurfaceSkin 0 1 "DemoFace_Blink.png" - FrameIndex XZWD I 0 347 - FrameIndex XZWD J 0 348 - FrameIndex XZWD K 0 349 - FrameIndex XZWD L 0 350 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZWD M 0 351 - FrameIndex XZWD N 0 352 - FrameIndex XZWD O 0 353 - SurfaceSkin 0 1 "DemoFace_Wink.png" - FrameIndex XZWD P 0 354 - FrameIndex XZWD Q 0 355 - FrameIndex XZWD R 0 356 - FrameIndex XZWD S 0 357 - FrameIndex XZWD T 0 358 - FrameIndex XZWD U 0 359 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZWD V 0 360 - FrameIndex XZWD W 0 361 - // Float - FrameIndex XZWD X 0 363 - FrameIndex XZWD Y 0 364 - FrameIndex XZWD Z 0 365 - FrameIndex XZWE A 0 366 - FrameIndex XZWE B 0 367 - FrameIndex XZWE C 0 368 - FrameIndex XZWE D 0 369 - FrameIndex XZWE E 0 370 - FrameIndex XZWE F 0 371 - FrameIndex XZWE G 0 372 - FrameIndex XZWE H 0 373 - FrameIndex XZWE I 0 374 - // Swim Start - FrameIndex XZWE J 0 376 - FrameIndex XZWE K 0 377 - FrameIndex XZWE L 0 378 - // Swim - FrameIndex XZWE M 0 379 - FrameIndex XZWE N 0 380 - FrameIndex XZWE O 0 381 - FrameIndex XZWE P 0 382 - FrameIndex XZWE Q 0 383 - FrameIndex XZWE R 0 384 - FrameIndex XZWE S 0 385 - FrameIndex XZWE T 0 386 - FrameIndex XZWE U 0 387 - FrameIndex XZWE V 0 388 - FrameIndex XZWE W 0 389 - FrameIndex XZWE X 0 390 - // Swim End - FrameIndex XZWE Y 0 392 - FrameIndex XZWE Z 0 393 - // Crouched Wave - FrameIndex XZWF A 0 397 - FrameIndex XZWF B 0 398 - FrameIndex XZWF C 0 399 - FrameIndex XZWF D 0 400 - FrameIndex XZWF E 0 401 - FrameIndex XZWF F 0 402 - FrameIndex XZWF G 0 403 - FrameIndex XZWF H 0 404 - FrameIndex XZWF I 0 405 - FrameIndex XZWF J 0 406 - FrameIndex XZWF K 0 407 - FrameIndex XZWF L 0 408 - FrameIndex XZWF M 0 409 - FrameIndex XZWF N 0 410 - FrameIndex XZWF O 0 411 - // Crouched Thumbs Up - FrameIndex XZWF P 0 413 - FrameIndex XZWF Q 0 414 - FrameIndex XZWF R 0 415 - FrameIndex XZWF S 0 416 - FrameIndex XZWF T 0 417 - SurfaceSkin 0 1 "DemoFace_Grin.png" - FrameIndex XZWF U 0 418 - FrameIndex XZWF V 0 419 - FrameIndex XZWF W 0 420 - FrameIndex XZWF X 0 421 - FrameIndex XZWF Y 0 422 - FrameIndex XZWF Z 0 423 - FrameIndex XZWG A 0 424 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZWG B 0 425 - FrameIndex XZWG C 0 426 - FrameIndex XZWG D 0 427 - FrameIndex XZWG E 0 428 - FrameIndex XZWG F 0 429 - // Crouched Victory - FrameIndex XZWG G 0 431 - FrameIndex XZWG H 0 432 - FrameIndex XZWG I 0 433 - FrameIndex XZWG J 0 434 - SurfaceSkin 0 1 "DemoFace_Grin.png" - FrameIndex XZWG K 0 435 - FrameIndex XZWG L 0 436 - FrameIndex XZWG M 0 437 - FrameIndex XZWG N 0 438 - FrameIndex XZWG O 0 439 - FrameIndex XZWG P 0 440 - FrameIndex XZWG Q 0 441 - FrameIndex XZWG R 0 442 - FrameIndex XZWG S 0 443 - FrameIndex XZWG T 0 444 - FrameIndex XZWG U 0 445 - FrameIndex XZWG V 0 446 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZWG W 0 447 - FrameIndex XZWG X 0 448 - FrameIndex XZWG Y 0 449 - // Crouched Blow Kiss - FrameIndex XZWG Z 0 451 - FrameIndex XZWH A 0 452 - FrameIndex XZWH B 0 453 - FrameIndex XZWH C 0 454 - SurfaceSkin 0 1 "DemoFace_Blink.png" - FrameIndex XZWH D 0 455 - FrameIndex XZWH E 0 456 - FrameIndex XZWH F 0 457 - FrameIndex XZWH G 0 458 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZWH H 0 459 - FrameIndex XZWH I 0 460 - FrameIndex XZWH J 0 461 - SurfaceSkin 0 1 "DemoFace_Wink.png" - FrameIndex XZWH K 0 462 - FrameIndex XZWH L 0 463 - FrameIndex XZWH M 0 464 - FrameIndex XZWH N 0 465 - FrameIndex XZWH O 0 466 - FrameIndex XZWH P 0 467 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZWH Q 0 468 - FrameIndex XZWH R 0 469 - // Headpat - FrameIndex XZWH S 0 472 - FrameIndex XZWH T 0 473 - FrameIndex XZWH U 0 474 - SurfaceSkin 0 1 "DemoFace_Grin.png" - FrameIndex XZWH V 0 475 - FrameIndex XZWH W 0 476 - FrameIndex XZWH X 0 477 // PatStart - FrameIndex XZWH Y 0 478 - FrameIndex XZWH Z 0 479 - FrameIndex XZWI A 0 480 - FrameIndex XZWI B 0 481 - FrameIndex XZWI C 0 482 // PatPat - FrameIndex XZWI D 0 483 - FrameIndex XZWI E 0 484 - FrameIndex XZWI F 0 485 - FrameIndex XZWI G 0 486 - FrameIndex XZWI H 0 487 - FrameIndex XZWI I 0 488 // PatEnd - FrameIndex XZWI J 0 489 - FrameIndex XZWI K 0 490 - SurfaceSkin 0 1 "DemoFace_Default.png" - FrameIndex XZWI L 0 491 - FrameIndex XZWI M 0 492 - FrameIndex XZWI N 0 493 - FrameIndex XZWI O 0 494 - // Jog - FrameIndex XZWI P 0 496 - FrameIndex XZWI Q 0 497 - FrameIndex XZWI R 0 498 - FrameIndex XZWI S 0 499 // rstep - FrameIndex XZWI T 0 500 - FrameIndex XZWI U 0 501 - FrameIndex XZWI V 0 502 - FrameIndex XZWI W 0 503 - FrameIndex XZWI X 0 504 - FrameIndex XZWI Y 0 505 // lstep - FrameIndex XZWI Z 0 506 - // Jump - FrameIndex XZWJ A 0 508 - FrameIndex XZWJ B 0 509 - FrameIndex XZWJ C 0 510 - FrameIndex XZWJ D 0 511 - FrameIndex XZWJ E 0 512 - FrameIndex XZWJ F 0 513 -} - -// Voodoo Doll -Model "SWWMVoodooDoll" -{ - Path "models" - Model 1 "VoodooDoll_d.3d" - SurfaceSkin 1 0 "VoodooDoll.png" - SurfaceSkin 1 1 "VoodooDollFace.png" - Scale 0.0025 0.0025 0.0025 - AngleOffset -90 - IGNORETRANSLATION - - // Still - FrameIndex XZWZ A 1 1 - // Pain - FrameIndex XZWZ B 1 2 - FrameIndex XZWZ C 1 3 - FrameIndex XZWZ D 1 4 - FrameIndex XZWZ E 1 5 - FrameIndex XZWZ F 1 6 - // Death - FrameIndex XZWZ G 1 8 - FrameIndex XZWZ H 1 9 - FrameIndex XZWZ I 1 10 - FrameIndex XZWZ J 1 11 - FrameIndex XZWZ K 1 12 - FrameIndex XZWZ L 1 13 - FrameIndex XZWZ M 1 14 - FrameIndex XZWZ N 1 15 - FrameIndex XZWZ O 1 16 - FrameIndex XZWZ P 1 17 - FrameIndex XZWZ Q 1 18 - FrameIndex XZWZ R 1 19 - FrameIndex XZWZ S 1 20 -} diff --git a/modeldef.dlcammo b/modeldef.dlcammo deleted file mode 100644 index 832ceb53a..000000000 --- a/modeldef.dlcammo +++ /dev/null @@ -1,474 +0,0 @@ -Model "SMW05Ammo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SMW05Ammo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SMW05Ammo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SMW05SmallAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SMW05BigAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.03 0.03 0.03 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "SheenAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.015 0.015 0.015 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SheenAmmo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.015 0.015 0.015 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SheenAmmo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.015 0.015 0.015 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SheenTinyAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SheenSmallAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SheenBigAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.03 0.03 0.03 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "QuadravolAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "QuadravolAmmo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "QuadravolAmmo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "SparksterBAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterBAmmo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterBAmmo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterRAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterRAmmo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SparksterRAmmo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "MisterRound" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterRound2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterRound3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterRound5" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterRound10" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.03 0.03 0.03 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterGAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterGAmmo2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "MisterGAmmo3" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.03 0.03 0.03 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "RayBolt" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "RayBolt2" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "RayBolt5" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "RayAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.04 0.04 0.04 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "RayBattery" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.035 0.035 0.035 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "UltimatePod" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.03 0.03 0.03 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "UltimateAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.04 0.04 0.04 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.eviscerator b/modeldef.eviscerator deleted file mode 100644 index 5a93b4370..000000000 --- a/modeldef.eviscerator +++ /dev/null @@ -1,422 +0,0 @@ -Model "EvisceratorCasing" -{ - Path "models" - - Model 0 "EvisceratorShell_d.3d" - Skin 0 "EvisceratorShell.png" - Scale 0.08 0.08 0.08 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - PitchOffset 90 - FrameIndex XZW1 B 0 0 - PitchOffset -90 - FrameIndex XZW1 C 0 0 -} - -Model "EvisceratorChunkTrail" -{ - Path "models/extra" - - Model 0 "YBeam.obj" - Skin 0 "ChunkTrail.png" - Scale 1 1 0.6 - USEACTORPITCH - USEACTORROLL - DONTCULLBACKFACES - - FrameIndex XZW1 A 0 0 - // recolors wow - Skin 0 "ChunkTrail_White.png" - FrameIndex XZW1 B 0 0 - Skin 0 "ChunkTrail_Red.png" - FrameIndex XZW1 C 0 0 - Skin 0 "ChunkTrail_Yellow.png" - FrameIndex XZW1 D 0 0 - Skin 0 "ChunkTrail_Green.png" - FrameIndex XZW1 E 0 0 - Skin 0 "ChunkTrail_Cyan.png" - FrameIndex XZW1 F 0 0 - Skin 0 "ChunkTrail_Blue.png" - FrameIndex XZW1 G 0 0 - Skin 0 "ChunkTrail_Magenta.png" - FrameIndex XZW1 H 0 0 - Skin 0 "ChunkTrail_TransBlue.png" - FrameIndex XZW1 I 0 0 - Skin 0 "ChunkTrail_TransPink.png" - FrameIndex XZW1 J 0 0 -} - -Model "EvisceratorChunk" -{ - Path "models" - - Model 0 "Chunky_d.3d" - Skin 0 "Chunky.png" - Scale 0.01 0.01 0.01 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - ZOffset 0.1 - FrameIndex XZW2 A 0 0 - FrameIndex XZW2 B 0 1 - FrameIndex XZW2 C 0 2 - FrameIndex XZW2 D 0 3 - FrameIndex XZW2 E 0 4 - FrameIndex XZW2 F 0 5 - FrameIndex XZW2 G 0 6 - FrameIndex XZW2 H 0 7 -} - - -Model "EvisceratorProj" -{ - Path "models" - - Model 0 "EvisceratorProj_d.3d" - Skin 0 "EvisceratorShell.png" - Scale 0.08 0.08 0.08 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "Eviscerator" -{ - Path "models" - - Model 0 "EvisceratorPickup_d.3d" - Skin 0 "Eviscerator.png" - Scale 0.09 0.09 0.09 - AngleOffset 180 - ZOffset 20 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "Eviscerator" -{ - Path "models/extra" - - Model 2 "Flat_d.3d" - Offset 18 -60 -22 - RollOffset 90 - AngleOffset 90 - - Scale 0.3 0.3 0.3 - Skin 2 "EvisceratorMuz0.png" - FrameIndex XZWZ A 2 0 - Skin 2 "EvisceratorMuz1.png" - FrameIndex XZWZ B 2 0 - Skin 2 "EvisceratorMuz2.png" - FrameIndex XZWZ C 2 0 - Skin 2 "EvisceratorMuz3.png" - FrameIndex XZWZ D 2 0 - Scale 0.12 0.12 0.12 - Skin 2 "EvisceratorMuz0.png" - FrameIndex XZWZ E 2 0 - Skin 2 "EvisceratorMuz1.png" - FrameIndex XZWZ F 2 0 - Skin 2 "EvisceratorMuz2.png" - FrameIndex XZWZ G 2 0 - Skin 2 "EvisceratorMuz3.png" - FrameIndex XZWZ H 2 0 -} - -Model "Eviscerator" -{ - Path "models" - - Model 1 "Eviscerator1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Eviscerator.png" - Scale -0.005 0.0025 0.005 - AngleOffset -90 - Offset 0 2 0 - - ////// WIDE SPREAD BARREL - // Still / Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - FrameIndex XZW2 G 1 6 - FrameIndex XZW2 H 1 7 // Select - FrameIndex XZW2 I 1 8 - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - FrameIndex XZW2 M 1 12 - FrameIndex XZW2 N 1 13 - FrameIndex XZW2 O 1 14 - FrameIndex XZW2 P 1 15 - FrameIndex XZW2 Q 1 16 - FrameIndex XZW2 R 1 17 - // AltFire - FrameIndex XZW2 S 1 19 - FrameIndex XZW2 T 1 20 - FrameIndex XZW2 U 1 21 - FrameIndex XZW2 V 1 22 - FrameIndex XZW2 W 1 23 - FrameIndex XZW2 X 1 24 - FrameIndex XZW2 Y 1 25 - FrameIndex XZW2 Z 1 26 - FrameIndex XZW3 A 1 27 - FrameIndex XZW3 B 1 28 - FrameIndex XZW3 C 1 29 - FrameIndex XZW3 D 1 30 - // Fire - FrameIndex XZW3 E 1 32 - FrameIndex XZW3 F 1 33 - FrameIndex XZW3 G 1 34 - FrameIndex XZW3 H 1 35 - FrameIndex XZW3 I 1 36 - FrameIndex XZW3 J 1 37 - FrameIndex XZW3 K 1 38 - FrameIndex XZW3 L 1 39 - FrameIndex XZW3 M 1 40 - FrameIndex XZW3 N 1 41 - FrameIndex XZW3 O 1 42 - FrameIndex XZW3 P 1 43 - FrameIndex XZW3 Q 1 44 - FrameIndex XZW3 R 1 45 - // Eject - FrameIndex XZW3 S 1 47 - FrameIndex XZW3 T 1 48 - FrameIndex XZW3 U 1 49 - FrameIndex XZW3 V 1 50 - FrameIndex XZW3 W 1 51 - FrameIndex XZW3 X 1 52 - FrameIndex XZW3 Y 1 53 - FrameIndex XZW3 Z 1 54 - FrameIndex XZW4 A 1 55 - FrameIndex XZW4 B 1 56 - FrameIndex XZW4 C 1 57 - FrameIndex XZW4 D 1 58 - FrameIndex XZW4 E 1 59 - FrameIndex XZW4 F 1 60 - FrameIndex XZW4 G 1 61 - FrameIndex XZW4 H 1 62 - FrameIndex XZW4 I 1 63 - // Switch - FrameIndex XZW4 J 1 65 - FrameIndex XZW4 K 1 66 - FrameIndex XZW4 L 1 67 - FrameIndex XZW4 M 1 68 - FrameIndex XZW4 N 1 69 - FrameIndex XZW4 O 1 70 - FrameIndex XZW4 P 1 71 - FrameIndex XZW4 Q 1 72 - FrameIndex XZW4 R 1 73 - FrameIndex XZW4 S 1 74 - FrameIndex XZW4 T 1 75 - FrameIndex XZW4 U 1 76 - FrameIndex XZW4 V 1 77 - FrameIndex XZW4 W 1 78 - FrameIndex XZW4 X 1 79 - FrameIndex XZW4 Y 1 80 - ////// TIGHT SPREAD BARREL - // Still / Deselect - FrameIndex XZW4 Z 1 81 - FrameIndex XZW5 A 1 82 - FrameIndex XZW5 B 1 83 - FrameIndex XZW5 C 1 84 - FrameIndex XZW5 D 1 85 - FrameIndex XZW5 E 1 86 - FrameIndex XZW5 F 1 87 - FrameIndex XZW5 G 1 88 // Select - FrameIndex XZW5 H 1 89 - FrameIndex XZW5 I 1 90 - FrameIndex XZW5 J 1 91 - FrameIndex XZW5 K 1 92 - FrameIndex XZW5 L 1 93 - FrameIndex XZW5 M 1 94 - FrameIndex XZW5 N 1 95 - FrameIndex XZW5 O 1 96 - FrameIndex XZW5 P 1 97 - FrameIndex XZW5 Q 1 98 - // AltFire - FrameIndex XZW5 R 1 100 - FrameIndex XZW5 S 1 101 - FrameIndex XZW5 T 1 102 - FrameIndex XZW5 U 1 103 - FrameIndex XZW5 V 1 104 - FrameIndex XZW5 W 1 105 - FrameIndex XZW5 X 1 106 - FrameIndex XZW5 Y 1 107 - FrameIndex XZW5 Z 1 108 - FrameIndex XZW6 A 1 109 - FrameIndex XZW6 B 1 110 - FrameIndex XZW6 C 1 111 - // Fire - FrameIndex XZW6 D 1 113 - FrameIndex XZW6 E 1 114 - FrameIndex XZW6 F 1 115 - FrameIndex XZW6 G 1 116 - FrameIndex XZW6 H 1 117 - FrameIndex XZW6 I 1 118 - FrameIndex XZW6 J 1 119 - FrameIndex XZW6 K 1 120 - FrameIndex XZW6 L 1 121 - FrameIndex XZW6 M 1 122 - FrameIndex XZW6 N 1 123 - FrameIndex XZW6 O 1 124 - FrameIndex XZW6 P 1 125 - FrameIndex XZW6 Q 1 126 - // Eject - FrameIndex XZW6 R 1 128 - FrameIndex XZW6 S 1 129 - FrameIndex XZW6 T 1 130 - FrameIndex XZW6 U 1 131 - FrameIndex XZW6 V 1 132 - FrameIndex XZW6 W 1 133 - FrameIndex XZW6 X 1 134 - FrameIndex XZW6 Y 1 135 - FrameIndex XZW6 Z 1 136 - FrameIndex XZW7 A 1 137 - FrameIndex XZW7 B 1 138 - FrameIndex XZW7 C 1 139 - FrameIndex XZW7 D 1 140 - FrameIndex XZW7 E 1 141 - FrameIndex XZW7 F 1 142 - FrameIndex XZW7 G 1 143 - FrameIndex XZW7 H 1 144 - // Switch - FrameIndex XZW7 I 1 146 - FrameIndex XZW7 J 1 147 - FrameIndex XZW7 K 1 148 - FrameIndex XZW7 L 1 149 - FrameIndex XZW7 M 1 150 - FrameIndex XZW7 N 1 151 - FrameIndex XZW7 O 1 152 - FrameIndex XZW7 P 1 153 - FrameIndex XZW7 Q 1 154 - FrameIndex XZW7 R 1 155 - FrameIndex XZW7 S 1 156 - FrameIndex XZW7 T 1 157 - FrameIndex XZW7 U 1 158 - ////// WIDE SPREAD BARREL - // Idle - FrameIndex XZW7 V 1 160 - FrameIndex XZW7 W 1 161 - FrameIndex XZW7 X 1 162 - FrameIndex XZW7 Y 1 163 - FrameIndex XZW7 Z 1 164 - FrameIndex XZW8 A 1 165 - FrameIndex XZW8 B 1 166 - FrameIndex XZW8 C 1 167 - FrameIndex XZW8 D 1 168 - FrameIndex XZW8 E 1 169 - FrameIndex XZW8 F 1 170 - FrameIndex XZW8 G 1 171 - FrameIndex XZW8 H 1 172 - FrameIndex XZW8 I 1 173 - FrameIndex XZW8 J 1 174 - FrameIndex XZW8 K 1 175 - FrameIndex XZW8 L 1 176 - FrameIndex XZW8 M 1 177 - FrameIndex XZW8 N 1 178 - FrameIndex XZW8 O 1 179 - FrameIndex XZW8 P 1 180 - FrameIndex XZW8 Q 1 181 - FrameIndex XZW8 R 1 182 - FrameIndex XZW8 S 1 183 - FrameIndex XZW8 T 1 184 - FrameIndex XZW8 U 1 185 - FrameIndex XZW8 V 1 186 - // Melee - FrameIndex XZW8 W 1 188 - FrameIndex XZW8 X 1 189 - FrameIndex XZW8 Y 1 190 - FrameIndex XZW8 Z 1 191 - FrameIndex XZW9 A 1 192 - FrameIndex XZW9 B 1 193 - FrameIndex XZW9 C 1 194 - FrameIndex XZW9 D 1 195 - FrameIndex XZW9 E 1 196 - FrameIndex XZW9 F 1 197 - FrameIndex XZW9 G 1 198 - FrameIndex XZW9 H 1 199 - FrameIndex XZW9 I 1 200 - FrameIndex XZW9 J 1 201 - FrameIndex XZW9 K 1 202 - FrameIndex XZW9 L 1 203 - ////// TIGHT SPREAD BARREL - // Idle - FrameIndex XZW9 M 1 206 - FrameIndex XZW9 N 1 207 - FrameIndex XZW9 O 1 208 - FrameIndex XZW9 P 1 209 - FrameIndex XZW9 Q 1 210 - FrameIndex XZW9 R 1 211 - FrameIndex XZW9 S 1 212 - FrameIndex XZW9 T 1 213 - FrameIndex XZW9 U 1 214 - FrameIndex XZW9 V 1 215 - FrameIndex XZW9 W 1 216 - FrameIndex XZW9 X 1 217 - FrameIndex XZW9 Y 1 218 - FrameIndex XZW9 Z 1 219 - FrameIndex XZWA A 1 220 - FrameIndex XZWA B 1 221 - FrameIndex XZWA C 1 222 - FrameIndex XZWA D 1 223 - FrameIndex XZWA E 1 224 - FrameIndex XZWA F 1 225 - FrameIndex XZWA G 1 226 - FrameIndex XZWA H 1 227 - FrameIndex XZWA I 1 228 - FrameIndex XZWA J 1 229 - FrameIndex XZWA K 1 230 - FrameIndex XZWA L 1 231 - FrameIndex XZWA M 1 232 - // Melee - FrameIndex XZWA N 1 234 - FrameIndex XZWA O 1 235 - FrameIndex XZWA P 1 236 - FrameIndex XZWA Q 1 237 - FrameIndex XZWA R 1 238 - FrameIndex XZWA S 1 239 - FrameIndex XZWA T 1 240 - FrameIndex XZWA U 1 241 - FrameIndex XZWA V 1 242 - FrameIndex XZWA W 1 243 - FrameIndex XZWA X 1 244 - FrameIndex XZWA Y 1 245 - FrameIndex XZWA Z 1 246 - FrameIndex XZWB A 1 247 - FrameIndex XZWB B 1 248 - FrameIndex XZWB C 1 249 - // Casing Ejected - SurfaceSkin 1 0 "" - SurfaceSkin 1 1 "" - SurfaceSkin 1 2 "" - SurfaceSkin 1 3 "" - SurfaceSkin 1 4 "EvisceratorShell.png" - FrameIndex XZWB D 1 51 - FrameIndex XZWB E 1 52 - FrameIndex XZWB F 1 53 - FrameIndex XZWB G 1 54 - FrameIndex XZWB H 1 55 - FrameIndex XZWB I 1 56 - FrameIndex XZWB J 1 57 - FrameIndex XZWB K 1 58 - FrameIndex XZWB L 1 59 - FrameIndex XZWB M 1 60 -} diff --git a/modeldef.explodiumgun b/modeldef.explodiumgun deleted file mode 100644 index a3418ab3c..000000000 --- a/modeldef.explodiumgun +++ /dev/null @@ -1,448 +0,0 @@ -Model "ExplodiumCasing" -{ - Path "models" - - Model 0 "ExplodiumCasing_d.3d" - Skin 0 "ExplodiumCasing_Used.png" - Scale 0.03 0.03 0.03 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 0.5 - FrameIndex XZW1 B 0 0 -} - -Model "ExplodiumMag" -{ - Path "models" - - Model 0 "ExplodiumMag_d.3d" - Scale 0.03 0.03 0.03 - USEACTORPITCH - USEACTORROLL - - Skin 0 "ExplodiumGun_EmptyMag.png" - FrameIndex XZW1 A 0 0 - RollOffset 90 - ZOffset 0.5 - FrameIndex XZW1 B 0 0 - RollOffset -90 - FrameIndex XZW1 C 0 0 -} - -Model "ExplodiumMagProj" -{ - Path "models" - - Model 0 "ExplodiumMag_d.3d" - Skin 0 "ExplodiumGun.png" - Scale 0.03 0.03 0.03 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 1 -} -Model "ExplodiumMagAttach" -{ - Path "models" - - Model 0 "ExplodiumMag_d.3d" - Skin 0 "ExplodiumGun.png" - Scale 0.03 0.03 0.03 - USEACTORPITCH - USEACTORROLL - AngleOffset 90 - - FrameIndex XZW1 A 0 1 - RollOffset 90 - FrameIndex XZW1 B 0 1 - RollOffset -90 - FrameIndex XZW1 C 0 1 -} - -Model "ExplodiumGun" -{ - Path "models" - - Model 0 "ExplodiumGunPickup_d.3d" - Skin 0 "ExplodiumGun.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "ExplodiumGun" -{ - Path "models/extra" - - Model 2 "Flat_d.3d" - Scale 0.1 0.1 0.1 - Offset 16 -60 -12 - RollOffset 90 - AngleOffset 90 - - Skin 2 "ExploMuz0.png" - FrameIndex XZWZ A 2 0 - Skin 2 "ExploMuz1.png" - FrameIndex XZWZ B 2 0 - Skin 2 "ExploMuz2.png" - FrameIndex XZWZ C 2 0 - Skin 2 "ExploMuz3.png" - FrameIndex XZWZ D 2 0 - Skin 2 "ExploMuz4.png" - FrameIndex XZWZ E 2 0 - Skin 2 "ExploMuz5.png" - FrameIndex XZWZ F 2 0 - Skin 2 "ExploMuz6.png" - FrameIndex XZWZ G 2 0 - Skin 2 "ExploMuz7.png" - FrameIndex XZWZ H 2 0 - Skin 2 "ExploMuz8.png" - FrameIndex XZWZ I 2 0 - Skin 2 "ExploMuz9.png" - FrameIndex XZWZ J 2 0 -} - -Model "ExplodiumGun" -{ - Path "models" - - Model 1 "ExplodiumGun1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "ExplodiumGun.png" - SurfaceSkin 1 5 "ExplodiumGun.png" - - Scale -0.005 0.0025 0.005 - AngleOffset -90 - Offset 0 0 -2 - - // Still - FrameIndex XZW2 A 1 0 - // Deselect - FrameIndex XZWA T 1 1 - FrameIndex XZWA U 1 2 - FrameIndex XZWA V 1 3 - FrameIndex XZWA W 1 4 - // Select - FrameIndex XZW2 B 1 5 - FrameIndex XZW2 C 1 6 - FrameIndex XZW2 D 1 7 - FrameIndex XZW2 E 1 8 - FrameIndex XZW2 F 1 9 - FrameIndex XZW2 G 1 10 - FrameIndex XZW2 H 1 11 - // Fire - FrameIndex XZW2 I 1 13 - FrameIndex XZW2 J 1 14 - FrameIndex XZW2 K 1 15 - FrameIndex XZW2 L 1 16 - FrameIndex XZW2 M 1 17 - FrameIndex XZW2 N 1 18 - FrameIndex XZW2 O 1 19 - FrameIndex XZW2 P 1 20 - FrameIndex XZW2 Q 1 21 - // unused - FrameIndex XZW2 R 1 22 - FrameIndex XZW2 S 1 23 - // Reload (Part 1) - FrameIndex XZW2 T 1 25 - FrameIndex XZW2 U 1 26 - FrameIndex XZW2 V 1 27 - FrameIndex XZW2 W 1 28 - FrameIndex XZW2 X 1 29 - FrameIndex XZW2 Y 1 30 - FrameIndex XZW2 Z 1 31 - FrameIndex XZW3 A 1 32 - FrameIndex XZW3 B 1 33 - FrameIndex XZW3 C 1 34 - FrameIndex XZW3 D 1 35 - FrameIndex XZW3 E 1 36 - FrameIndex XZW3 F 1 37 - FrameIndex XZW3 G 1 38 - FrameIndex XZW3 H 1 39 - FrameIndex XZW3 I 1 40 - // Reload (Part 1 w/ Empty Mag) - SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag - FrameIndex XZW3 J 1 25 - FrameIndex XZW3 K 1 26 - FrameIndex XZW3 L 1 27 - FrameIndex XZW3 M 1 28 - FrameIndex XZW3 N 1 29 - FrameIndex XZW3 O 1 30 - FrameIndex XZW3 P 1 31 - FrameIndex XZW3 Q 1 32 - FrameIndex XZW3 R 1 33 - FrameIndex XZW3 S 1 34 - FrameIndex XZW3 T 1 35 - FrameIndex XZW3 U 1 36 - FrameIndex XZW3 V 1 37 - FrameIndex XZW3 W 1 38 - FrameIndex XZW3 X 1 39 - FrameIndex XZW3 Y 1 40 - // Reload (Part 2) - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag - FrameIndex XZW3 Z 1 41 - FrameIndex XZW4 A 1 42 - FrameIndex XZW4 B 1 43 - FrameIndex XZW4 C 1 44 - FrameIndex XZW4 D 1 45 - FrameIndex XZW4 E 1 46 - FrameIndex XZW4 F 1 47 - FrameIndex XZW4 G 1 48 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZW4 H 1 49 - FrameIndex XZW4 I 1 50 - FrameIndex XZW4 J 1 51 - SurfaceSkin 1 5 "ExplodiumGun.png" // show mag - FrameIndex XZW4 K 1 52 - FrameIndex XZW4 L 1 53 - FrameIndex XZW4 M 1 54 - FrameIndex XZW4 N 1 55 - FrameIndex XZW4 O 1 56 - FrameIndex XZW4 P 1 57 - FrameIndex XZW4 Q 1 58 - FrameIndex XZW4 R 1 59 - FrameIndex XZW4 S 1 60 - FrameIndex XZW4 T 1 61 - FrameIndex XZW4 U 1 62 - FrameIndex XZW4 V 1 63 - // Slide - FrameIndex XZW4 W 1 65 - FrameIndex XZW4 X 1 66 - FrameIndex XZW4 Y 1 67 - FrameIndex XZW4 Z 1 68 - FrameIndex XZW5 A 1 69 - FrameIndex XZW5 B 1 70 - FrameIndex XZW5 C 1 71 - FrameIndex XZW5 D 1 72 - FrameIndex XZW5 E 1 73 - FrameIndex XZW5 F 1 74 - FrameIndex XZW5 G 1 75 - FrameIndex XZW5 H 1 76 - FrameIndex XZW5 I 1 77 - FrameIndex XZW5 J 1 78 - FrameIndex XZW5 K 1 79 - FrameIndex XZW5 L 1 80 - FrameIndex XZW5 M 1 81 - // "Explosive" Reload - FrameIndex XZW5 N 1 83 - FrameIndex XZW5 O 1 84 - FrameIndex XZW5 P 1 85 - FrameIndex XZW5 Q 1 86 - FrameIndex XZW5 R 1 87 - FrameIndex XZW5 S 1 88 - FrameIndex XZW5 T 1 89 - FrameIndex XZW5 U 1 90 - FrameIndex XZW5 V 1 91 - FrameIndex XZW5 W 1 92 - FrameIndex XZW5 X 1 93 - FrameIndex XZW5 Y 1 94 - FrameIndex XZW5 Z 1 95 - FrameIndex XZW6 A 1 96 - FrameIndex XZW6 B 1 97 - FrameIndex XZW6 C 1 98 - FrameIndex XZW6 D 1 99 - FrameIndex XZW6 E 1 100 - FrameIndex XZW6 F 1 101 - FrameIndex XZW6 G 1 102 - FrameIndex XZW6 H 1 103 - FrameIndex XZW6 I 1 104 - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag - FrameIndex XZW6 J 1 105 - FrameIndex XZW6 K 1 106 - FrameIndex XZW6 L 1 107 - FrameIndex XZW6 M 1 108 - FrameIndex XZW6 N 1 109 - FrameIndex XZW6 O 1 110 - FrameIndex XZW6 P 1 111 - FrameIndex XZW6 Q 1 112 - FrameIndex XZW6 R 1 113 - FrameIndex XZW6 S 1 114 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZW6 T 1 115 - FrameIndex XZW6 U 1 116 - FrameIndex XZW6 V 1 117 - FrameIndex XZW6 W 1 118 - FrameIndex XZW6 X 1 119 - FrameIndex XZW6 Y 1 120 - FrameIndex XZW6 Z 1 121 - SurfaceSkin 1 5 "ExplodiumGun.png" // show mag - // Check Bullet - SurfaceSkin 1 4 "ExplodiumCasing.png" // show casing - FrameIndex XZW7 A 1 157 - FrameIndex XZW7 B 1 158 - FrameIndex XZW7 C 1 159 - FrameIndex XZW7 D 1 160 - FrameIndex XZW7 E 1 161 - FrameIndex XZW7 F 1 162 - FrameIndex XZW7 G 1 163 - FrameIndex XZW7 H 1 164 - FrameIndex XZW7 I 1 165 - FrameIndex XZW7 J 1 166 - FrameIndex XZW7 K 1 167 - FrameIndex XZW7 L 1 168 - FrameIndex XZW7 M 1 169 - FrameIndex XZW7 N 1 170 - FrameIndex XZW7 O 1 171 - FrameIndex XZW7 P 1 172 - FrameIndex XZW7 Q 1 173 - FrameIndex XZW7 R 1 174 - FrameIndex XZW7 S 1 175 - SurfaceSkin 1 4 "" // hide casing - // Melee - FrameIndex XZW7 T 1 177 - FrameIndex XZW7 U 1 178 - FrameIndex XZW7 V 1 179 - FrameIndex XZW7 W 1 180 - FrameIndex XZW7 X 1 181 - FrameIndex XZW7 Y 1 182 - FrameIndex XZW7 Z 1 183 - FrameIndex XZW8 A 1 184 - FrameIndex XZW8 B 1 185 - FrameIndex XZW8 C 1 186 - FrameIndex XZW8 D 1 187 - FrameIndex XZW8 E 1 188 - FrameIndex XZW8 F 1 189 - // Check Gun - FrameIndex XZW8 G 1 192 - FrameIndex XZW8 H 1 193 - FrameIndex XZW8 I 1 194 - FrameIndex XZW8 J 1 195 - FrameIndex XZW8 K 1 196 - FrameIndex XZW8 L 1 197 - FrameIndex XZW8 M 1 198 - FrameIndex XZW8 N 1 199 - FrameIndex XZW8 O 1 200 - FrameIndex XZW8 P 1 201 - FrameIndex XZW8 Q 1 202 - FrameIndex XZW8 R 1 203 - FrameIndex XZW8 S 1 204 - FrameIndex XZW8 T 1 205 - FrameIndex XZW8 U 1 206 - FrameIndex XZW8 V 1 207 - FrameIndex XZW8 W 1 208 - FrameIndex XZW8 X 1 209 - FrameIndex XZW8 Y 1 210 - FrameIndex XZW8 Z 1 211 - // Spin Gun - FrameIndex XZW9 A 1 213 - FrameIndex XZW9 B 1 214 - FrameIndex XZW9 C 1 215 - FrameIndex XZW9 D 1 216 - FrameIndex XZW9 E 1 217 - FrameIndex XZW9 F 1 218 - FrameIndex XZW9 G 1 219 - FrameIndex XZW9 H 1 220 - FrameIndex XZW9 I 1 221 - FrameIndex XZW9 J 1 222 - FrameIndex XZW9 K 1 223 - FrameIndex XZW9 L 1 224 - FrameIndex XZW9 M 1 225 - FrameIndex XZW9 N 1 226 - FrameIndex XZW9 O 1 227 - FrameIndex XZW9 P 1 228 - FrameIndex XZW9 Q 1 229 - FrameIndex XZW9 R 1 230 - FrameIndex XZW9 S 1 231 - FrameIndex XZW9 T 1 232 - FrameIndex XZW9 U 1 233 - FrameIndex XZW9 V 1 234 - FrameIndex XZW9 W 1 235 - // Casing - SurfaceSkin 1 0 "" - SurfaceSkin 1 1 "" - SurfaceSkin 1 2 "" - SurfaceSkin 1 3 "" - SurfaceSkin 1 4 "ExplodiumCasing_Used.png" - SurfaceSkin 1 5 "" - FrameIndex XZWA A 1 14 - FrameIndex XZWA B 1 15 - FrameIndex XZWA C 1 16 - FrameIndex XZWA D 1 17 - FrameIndex XZWA E 1 18 - FrameIndex XZWA F 1 19 - FrameIndex XZWA G 1 20 - FrameIndex XZWA H 1 21 - FrameIndex XZWA I 1 22 - FrameIndex XZWA J 1 23 - /// LAST ROUND - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "ExplodiumGun.png" - SurfaceSkin 1 4 "" - SurfaceSkin 1 5 "ExplodiumGun.png" - // Fire - FrameIndex XZWA K 1 237 - FrameIndex XZWA L 1 238 - FrameIndex XZWA M 1 239 - FrameIndex XZWA N 1 240 - FrameIndex XZWA O 1 241 - FrameIndex XZWA P 1 242 - FrameIndex XZWA Q 1 243 - FrameIndex XZWA R 1 244 - FrameIndex XZWA S 1 245 - // Still - FrameIndex XZW9 X 1 248 - // Reload (Part 1) - SurfaceSkin 1 5 "ExplodiumGun_EmptyMag.png" // empty mag - FrameIndex XZW9 Z 1 249 - FrameIndex XZWA X 1 250 - FrameIndex XZWA Y 1 251 - FrameIndex XZWA Z 1 252 - FrameIndex XZWB A 1 253 - FrameIndex XZWB B 1 254 - FrameIndex XZWB C 1 255 - FrameIndex XZWB D 1 256 - FrameIndex XZWB E 1 257 - FrameIndex XZWB F 1 258 - FrameIndex XZWB G 1 259 - FrameIndex XZWB H 1 260 - FrameIndex XZWB I 1 261 - FrameIndex XZWB J 1 262 - FrameIndex XZWB K 1 263 - FrameIndex XZWB L 1 264 - // Reload (Part 2) - SurfaceSkin 1 5 "" // hide mag - SurfaceSkin 1 6 "ExplodiumGun.png" // show new mag - FrameIndex XZWB M 1 265 - FrameIndex XZWB N 1 266 - FrameIndex XZWB O 1 267 - FrameIndex XZWB P 1 268 - FrameIndex XZWB Q 1 269 - FrameIndex XZWB R 1 270 - FrameIndex XZWB S 1 271 - FrameIndex XZWB T 1 272 - SurfaceSkin 1 6 "" // hide new mag - FrameIndex XZWB U 1 273 - FrameIndex XZWB V 1 274 - FrameIndex XZWB W 1 275 - SurfaceSkin 1 5 "ExplodiumGun.png" // show mag - FrameIndex XZWB X 1 276 - FrameIndex XZWB Y 1 277 - FrameIndex XZWB Z 1 278 - FrameIndex XZWC A 1 279 - FrameIndex XZWC B 1 280 - FrameIndex XZWC C 1 281 - FrameIndex XZWC D 1 282 - FrameIndex XZWC E 1 283 - FrameIndex XZWC F 1 284 - FrameIndex XZWC G 1 285 - FrameIndex XZWC H 1 286 - FrameIndex XZWC I 1 287 - FrameIndex XZWC J 1 288 - FrameIndex XZWC K 1 289 - FrameIndex XZWC L 1 290 - FrameIndex XZWC M 1 291 - FrameIndex XZWC N 1 292 - FrameIndex XZWC O 1 293 - FrameIndex XZWC P 1 294 -} - diff --git a/modeldef.explodiumgun2 b/modeldef.explodiumgun2 deleted file mode 100644 index 3779c0385..000000000 --- a/modeldef.explodiumgun2 +++ /dev/null @@ -1,537 +0,0 @@ -Model "DualExplodiumGun" -{ - Path "models/extra" - - Model 2 "Flat_d.3d" - Scale 0.1 0.1 0.1 - RollOffset 90 - AngleOffset 90 - - // Right - Offset 28 -60 -12 - Skin 2 "ExploMuz0.png" - FrameIndex XZWZ A 2 0 - Skin 2 "ExploMuz1.png" - FrameIndex XZWZ B 2 0 - Skin 2 "ExploMuz2.png" - FrameIndex XZWZ C 2 0 - Skin 2 "ExploMuz3.png" - FrameIndex XZWZ D 2 0 - Skin 2 "ExploMuz4.png" - FrameIndex XZWZ E 2 0 - Skin 2 "ExploMuz5.png" - FrameIndex XZWZ F 2 0 - Skin 2 "ExploMuz6.png" - FrameIndex XZWZ G 2 0 - Skin 2 "ExploMuz7.png" - FrameIndex XZWZ H 2 0 - Skin 2 "ExploMuz8.png" - FrameIndex XZWZ I 2 0 - Skin 2 "ExploMuz9.png" - FrameIndex XZWZ J 2 0 - - // Left - Offset -28 -60 -12 - Skin 2 "ExploMuz0.png" - FrameIndex XZWZ K 2 0 - Skin 2 "ExploMuz1.png" - FrameIndex XZWZ L 2 0 - Skin 2 "ExploMuz2.png" - FrameIndex XZWZ M 2 0 - Skin 2 "ExploMuz3.png" - FrameIndex XZWZ N 2 0 - Skin 2 "ExploMuz4.png" - FrameIndex XZWZ O 2 0 - Skin 2 "ExploMuz5.png" - FrameIndex XZWZ P 2 0 - Skin 2 "ExploMuz6.png" - FrameIndex XZWZ Q 2 0 - Skin 2 "ExploMuz7.png" - FrameIndex XZWZ R 2 0 - Skin 2 "ExploMuz8.png" - FrameIndex XZWZ S 2 0 - Skin 2 "ExploMuz9.png" - FrameIndex XZWZ T 2 0 -} - -Model "DualExplodiumGun" -{ - Path "models" - - Model 1 "ExplodiumGun1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "ExplodiumGun.png" - SurfaceSkin 1 5 "ExplodiumGun.png" - - Scale -0.005 0.0025 0.005 - AngleOffset -90 - Offset 3 0 -2 - - //// RIGHT - // Still - FrameIndex XZW2 A 1 0 - // Deselect - FrameIndex XZWA T 1 1 - FrameIndex XZWA U 1 2 - FrameIndex XZWA V 1 3 - FrameIndex XZWA W 1 4 - // Select - FrameIndex XZW2 B 1 5 - FrameIndex XZW2 C 1 6 - FrameIndex XZW2 D 1 7 - FrameIndex XZW2 E 1 8 - FrameIndex XZW2 F 1 9 - FrameIndex XZW2 G 1 10 - FrameIndex XZW2 H 1 11 - // Fire - FrameIndex XZW2 I 1 13 - FrameIndex XZW2 J 1 14 - FrameIndex XZW2 K 1 15 - FrameIndex XZW2 L 1 16 - FrameIndex XZW2 M 1 17 - FrameIndex XZW2 N 1 18 - FrameIndex XZW2 O 1 19 - FrameIndex XZW2 P 1 20 - FrameIndex XZW2 Q 1 21 - // unused - FrameIndex XZW2 R 1 22 - FrameIndex XZW2 S 1 23 - // Reload (Part 1) - FrameIndex XZW2 T 1 310 - FrameIndex XZW2 U 1 311 - FrameIndex XZW2 V 1 312 - FrameIndex XZW2 W 1 313 - FrameIndex XZW2 X 1 314 - FrameIndex XZW2 Y 1 315 - FrameIndex XZW2 Z 1 316 - FrameIndex XZW3 A 1 317 - FrameIndex XZW3 B 1 318 - FrameIndex XZW3 C 1 319 - FrameIndex XZW3 D 1 320 - FrameIndex XZW3 E 1 321 - FrameIndex XZW3 F 1 322 - FrameIndex XZW3 G 1 323 - FrameIndex XZW3 H 1 324 - // Reload (Part 1 w/ Empty Mag) - SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png" - FrameIndex XZW3 I 1 310 - FrameIndex XZW3 J 1 311 - FrameIndex XZW3 K 1 312 - FrameIndex XZW3 L 1 313 - FrameIndex XZW3 M 1 314 - FrameIndex XZW3 N 1 315 - FrameIndex XZW3 O 1 316 - FrameIndex XZW3 P 1 317 - FrameIndex XZW3 Q 1 318 - FrameIndex XZW3 R 1 319 - FrameIndex XZW3 S 1 320 - FrameIndex XZW3 T 1 321 - FrameIndex XZW3 U 1 322 - FrameIndex XZW3 V 1 323 - FrameIndex XZW3 W 1 324 - // Reload (Part 2) - SurfaceSkin 1 3 "ExplodiumGun.png" - FrameIndex XZW3 X 1 325 - FrameIndex XZW3 Y 1 326 - FrameIndex XZW3 Z 1 327 - FrameIndex XZW4 A 1 328 - FrameIndex XZW4 B 1 329 - FrameIndex XZW4 C 1 330 - FrameIndex XZW4 D 1 331 - FrameIndex XZW4 E 1 332 - FrameIndex XZW4 F 1 333 - FrameIndex XZW4 G 1 334 - FrameIndex XZW4 H 1 335 - FrameIndex XZW4 I 1 336 - FrameIndex XZW4 J 1 337 - FrameIndex XZW4 K 1 338 - FrameIndex XZW4 L 1 339 - FrameIndex XZW4 M 1 340 - FrameIndex XZW4 N 1 341 - FrameIndex XZW4 O 1 342 - FrameIndex XZW4 P 1 343 - // Slide - FrameIndex XZW4 W 1 65 - FrameIndex XZW4 X 1 66 - FrameIndex XZW4 Y 1 67 - FrameIndex XZW4 Z 1 68 - FrameIndex XZW5 A 1 69 - FrameIndex XZW5 B 1 70 - FrameIndex XZW5 C 1 71 - FrameIndex XZW5 D 1 72 - FrameIndex XZW5 E 1 73 - FrameIndex XZW5 F 1 74 - FrameIndex XZW5 G 1 75 - FrameIndex XZW5 H 1 76 - FrameIndex XZW5 I 1 77 - FrameIndex XZW5 J 1 78 - FrameIndex XZW5 K 1 79 - FrameIndex XZW5 L 1 80 - FrameIndex XZW5 M 1 81 - // Melee - FrameIndex XZW7 T 1 177 - FrameIndex XZW7 U 1 178 - FrameIndex XZW7 V 1 179 - Offset 0 0 -2 - FrameIndex XZW7 W 1 180 - FrameIndex XZW7 X 1 181 - FrameIndex XZW7 Y 1 182 - FrameIndex XZW7 Z 1 183 - FrameIndex XZW8 A 1 184 - FrameIndex XZW8 B 1 185 - FrameIndex XZW8 C 1 186 - FrameIndex XZW8 D 1 187 - FrameIndex XZW8 E 1 188 - FrameIndex XZW8 F 1 189 - Offset 3 0 -2 - // Spin Gun - FrameIndex XZW9 A 1 213 - FrameIndex XZW9 B 1 214 - FrameIndex XZW9 C 1 215 - FrameIndex XZW9 D 1 216 - FrameIndex XZW9 E 1 217 - FrameIndex XZW9 F 1 218 - FrameIndex XZW9 G 1 219 - FrameIndex XZW9 H 1 220 - FrameIndex XZW9 I 1 221 - FrameIndex XZW9 J 1 222 - FrameIndex XZW9 K 1 223 - FrameIndex XZW9 L 1 224 - FrameIndex XZW9 M 1 225 - FrameIndex XZW9 N 1 226 - FrameIndex XZW9 O 1 227 - FrameIndex XZW9 P 1 228 - FrameIndex XZW9 Q 1 229 - FrameIndex XZW9 R 1 230 - FrameIndex XZW9 S 1 231 - FrameIndex XZW9 T 1 232 - FrameIndex XZW9 U 1 233 - FrameIndex XZW9 V 1 234 - FrameIndex XZW9 W 1 235 - //// LEFT - Model 1 "ExplodiumGun1stL_d.3d" - Offset -3 0 -2 - // Still - FrameIndex XZWB A 1 0 - // Deselect - FrameIndex XZWA P 1 1 - FrameIndex XZWA Q 1 2 - FrameIndex XZWA R 1 3 - FrameIndex XZWA S 1 4 - // Select - FrameIndex XZWB B 1 5 - FrameIndex XZWB C 1 6 - FrameIndex XZWB D 1 7 - FrameIndex XZWB E 1 8 - FrameIndex XZWB F 1 9 - FrameIndex XZWB G 1 10 - FrameIndex XZWB H 1 11 - // Fire - FrameIndex XZWB I 1 13 - FrameIndex XZWB J 1 14 - FrameIndex XZWB K 1 15 - FrameIndex XZWB L 1 16 - FrameIndex XZWB M 1 17 - FrameIndex XZWB N 1 18 - FrameIndex XZWB O 1 19 - FrameIndex XZWB P 1 20 - FrameIndex XZWB Q 1 21 - // unused - FrameIndex XZWB R 1 22 - FrameIndex XZWB S 1 23 - // Reload (Part 1) - FrameIndex XZWB T 1 310 - FrameIndex XZWB U 1 311 - FrameIndex XZWB V 1 312 - FrameIndex XZWB W 1 313 - FrameIndex XZWB X 1 314 - FrameIndex XZWB Y 1 315 - FrameIndex XZWB Z 1 316 - FrameIndex XZWC A 1 317 - FrameIndex XZWC B 1 318 - FrameIndex XZWC C 1 319 - FrameIndex XZWC D 1 320 - FrameIndex XZWC E 1 321 - FrameIndex XZWC F 1 322 - FrameIndex XZWC G 1 323 - FrameIndex XZWC H 1 324 - // Reload (Part 1 w/ Empty Mag) - SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png" - FrameIndex XZWC I 1 310 - FrameIndex XZWC J 1 311 - FrameIndex XZWC K 1 312 - FrameIndex XZWC L 1 313 - FrameIndex XZWC M 1 314 - FrameIndex XZWC N 1 315 - FrameIndex XZWC O 1 316 - FrameIndex XZWC P 1 317 - FrameIndex XZWC Q 1 318 - FrameIndex XZWC R 1 319 - FrameIndex XZWC S 1 320 - FrameIndex XZWC T 1 321 - FrameIndex XZWC U 1 322 - FrameIndex XZWC V 1 323 - FrameIndex XZWC W 1 324 - // Reload (Part 2) - SurfaceSkin 1 3 "ExplodiumGun.png" - FrameIndex XZWC X 1 325 - FrameIndex XZWC Y 1 326 - FrameIndex XZWC Z 1 327 - FrameIndex XZWD A 1 328 - FrameIndex XZWD B 1 329 - FrameIndex XZWD C 1 330 - FrameIndex XZWD D 1 331 - FrameIndex XZWD E 1 332 - FrameIndex XZWD F 1 333 - FrameIndex XZWD G 1 334 - FrameIndex XZWD H 1 335 - FrameIndex XZWD I 1 336 - FrameIndex XZWD J 1 337 - FrameIndex XZWD K 1 338 - FrameIndex XZWD L 1 339 - FrameIndex XZWD M 1 340 - FrameIndex XZWD N 1 341 - FrameIndex XZWD O 1 342 - FrameIndex XZWD P 1 343 - // Slide - FrameIndex XZWD W 1 65 - FrameIndex XZWD X 1 66 - FrameIndex XZWD Y 1 67 - FrameIndex XZWD Z 1 68 - FrameIndex XZWE A 1 69 - FrameIndex XZWE B 1 70 - FrameIndex XZWE C 1 71 - FrameIndex XZWE D 1 72 - FrameIndex XZWE E 1 73 - FrameIndex XZWE F 1 74 - FrameIndex XZWE G 1 75 - FrameIndex XZWE H 1 76 - FrameIndex XZWE I 1 77 - FrameIndex XZWE J 1 78 - FrameIndex XZWE K 1 79 - FrameIndex XZWE L 1 80 - FrameIndex XZWE M 1 81 - // Melee - FrameIndex XZWG T 1 177 - FrameIndex XZWG U 1 178 - FrameIndex XZWG V 1 179 - FrameIndex XZWG W 1 180 - FrameIndex XZWG X 1 181 - FrameIndex XZWG Y 1 182 - FrameIndex XZWG Z 1 183 - FrameIndex XZWH A 1 184 - FrameIndex XZWH B 1 185 - FrameIndex XZWH C 1 186 - FrameIndex XZWH D 1 187 - FrameIndex XZWH E 1 188 - FrameIndex XZWH F 1 189 - // Spin Gun - FrameIndex XZWH A 1 213 - FrameIndex XZWH B 1 214 - FrameIndex XZWH C 1 215 - FrameIndex XZWH D 1 216 - FrameIndex XZWH E 1 217 - FrameIndex XZWH F 1 218 - FrameIndex XZWH G 1 219 - FrameIndex XZWH H 1 220 - FrameIndex XZWH I 1 221 - FrameIndex XZWH J 1 222 - FrameIndex XZWH K 1 223 - FrameIndex XZWH L 1 224 - FrameIndex XZWH M 1 225 - FrameIndex XZWH N 1 226 - FrameIndex XZWH O 1 227 - FrameIndex XZWH P 1 228 - FrameIndex XZWH Q 1 229 - FrameIndex XZWH R 1 230 - FrameIndex XZWH S 1 231 - FrameIndex XZWH T 1 232 - FrameIndex XZWH U 1 233 - FrameIndex XZWH V 1 234 - FrameIndex XZWH W 1 235 - // Casings - SurfaceSkin 1 0 "" - SurfaceSkin 1 1 "" - SurfaceSkin 1 2 "" - SurfaceSkin 1 3 "" - SurfaceSkin 1 4 "ExplodiumCasing_Used.png" - SurfaceSkin 1 5 "" - // RIGHT - Model 1 "ExplodiumGun1st_d.3d" - Offset 3 0 -2 - FrameIndex XZWA A 1 14 - FrameIndex XZWA B 1 15 - FrameIndex XZWA C 1 16 - FrameIndex XZWA D 1 17 - FrameIndex XZWA E 1 18 - FrameIndex XZWA F 1 19 - FrameIndex XZWA G 1 20 - FrameIndex XZWA H 1 21 - FrameIndex XZWA I 1 22 - FrameIndex XZWA J 1 23 - // LEFT - Model 1 "ExplodiumGun1stL_d.3d" - Offset -3 0 -2 - FrameIndex XZWI A 1 14 - FrameIndex XZWI B 1 15 - FrameIndex XZWI C 1 16 - FrameIndex XZWI D 1 17 - FrameIndex XZWI E 1 18 - FrameIndex XZWI F 1 19 - FrameIndex XZWI G 1 20 - FrameIndex XZWI H 1 21 - FrameIndex XZWI I 1 22 - FrameIndex XZWI J 1 23 - /// LAST ROUND - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "ExplodiumGun.png" - SurfaceSkin 1 4 "" - SurfaceSkin 1 5 "ExplodiumGun.png" - // RIGHT - Model 1 "ExplodiumGun1st_d.3d" - Offset 3 0 -2 - // Fire - FrameIndex XZWI K 1 237 - FrameIndex XZWI L 1 238 - FrameIndex XZWI M 1 239 - FrameIndex XZWI N 1 240 - FrameIndex XZWI O 1 241 - FrameIndex XZWI P 1 242 - FrameIndex XZWI Q 1 243 - FrameIndex XZWI R 1 244 - FrameIndex XZWI S 1 245 - // Still - FrameIndex XZWI V 1 248 - // Reload (Part 1) - SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png" - FrameIndex XZWI W 1 346 - FrameIndex XZWI X 1 347 - FrameIndex XZWI Y 1 348 - FrameIndex XZWI Z 1 349 - FrameIndex XZWJ A 1 350 - FrameIndex XZWJ B 1 351 - FrameIndex XZWJ C 1 352 - FrameIndex XZWJ D 1 353 - FrameIndex XZWJ E 1 354 - FrameIndex XZWJ F 1 355 - FrameIndex XZWJ G 1 356 - FrameIndex XZWJ H 1 357 - FrameIndex XZWJ I 1 358 - FrameIndex XZWJ J 1 359 - FrameIndex XZWJ K 1 360 - // Reload (Part 2) - FrameIndex XZWJ L 1 361 - FrameIndex XZWJ M 1 362 - FrameIndex XZWJ N 1 363 - FrameIndex XZWJ O 1 364 - FrameIndex XZWJ P 1 365 - FrameIndex XZWJ Q 1 366 - FrameIndex XZWJ R 1 367 - FrameIndex XZWJ S 1 368 - FrameIndex XZWJ T 1 369 - FrameIndex XZWJ U 1 370 - FrameIndex XZWJ V 1 371 - FrameIndex XZWJ W 1 372 - FrameIndex XZWJ X 1 373 - FrameIndex XZWJ Y 1 374 - FrameIndex XZWJ Z 1 375 - FrameIndex XZWK A 1 376 - FrameIndex XZWK B 1 377 - FrameIndex XZWK C 1 378 - FrameIndex XZWK D 1 379 - SurfaceSkin 1 3 "ExplodiumGun.png" - // Lower - FrameIndex XZWM U 1 297 - FrameIndex XZWM V 1 298 - FrameIndex XZWM W 1 299 - FrameIndex XZWM X 1 300 - FrameIndex XZWM Y 1 301 // Raise - FrameIndex XZWM Z 1 302 - FrameIndex XZWN A 1 303 - FrameIndex XZWN B 1 304 - FrameIndex XZWN C 1 305 - FrameIndex XZWN D 1 306 - FrameIndex XZWN E 1 307 - // LEFT - Model 1 "ExplodiumGun1stL_d.3d" - Offset -3 0 -2 - // Fire - FrameIndex XZWK Q 1 237 - FrameIndex XZWK R 1 238 - FrameIndex XZWK S 1 239 - FrameIndex XZWK T 1 240 - FrameIndex XZWK U 1 241 - FrameIndex XZWK V 1 242 - FrameIndex XZWK W 1 243 - FrameIndex XZWK X 1 244 - FrameIndex XZWK Y 1 245 - // Still - FrameIndex XZWK Z 1 248 - // Reload (Part 1) - SurfaceSkin 1 3 "ExplodiumGun_EmptyMag.png" - FrameIndex XZWL A 1 346 - FrameIndex XZWL B 1 347 - FrameIndex XZWL C 1 348 - FrameIndex XZWL D 1 349 - FrameIndex XZWL E 1 350 - FrameIndex XZWL F 1 351 - FrameIndex XZWL G 1 352 - FrameIndex XZWL H 1 353 - FrameIndex XZWL I 1 354 - FrameIndex XZWL J 1 355 - FrameIndex XZWL K 1 356 - FrameIndex XZWL L 1 357 - FrameIndex XZWL M 1 358 - FrameIndex XZWL N 1 359 - FrameIndex XZWL O 1 360 - // Reload (Part 2) - SurfaceSkin 1 3 "ExplodiumGun.png" - FrameIndex XZWL P 1 361 - FrameIndex XZWL Q 1 362 - FrameIndex XZWL R 1 363 - FrameIndex XZWL S 1 364 - FrameIndex XZWL T 1 365 - FrameIndex XZWL U 1 366 - FrameIndex XZWL V 1 367 - FrameIndex XZWL W 1 368 - FrameIndex XZWL X 1 369 - FrameIndex XZWL Y 1 370 - FrameIndex XZWL Z 1 371 - FrameIndex XZWM A 1 372 - FrameIndex XZWM B 1 373 - FrameIndex XZWM C 1 374 - FrameIndex XZWM D 1 375 - FrameIndex XZWM E 1 376 - FrameIndex XZWM F 1 377 - FrameIndex XZWM G 1 378 - FrameIndex XZWM H 1 379 - // Lower - FrameIndex XZWN F 1 297 - FrameIndex XZWN G 1 298 - FrameIndex XZWN H 1 299 - FrameIndex XZWN I 1 300 - FrameIndex XZWN J 1 301 // Raise - FrameIndex XZWN K 1 302 - FrameIndex XZWN L 1 303 - FrameIndex XZWN M 1 304 - FrameIndex XZWN N 1 305 - FrameIndex XZWN O 1 306 - FrameIndex XZWN P 1 307 -} - -Model "SWWMDualWeaponGiver" -{ - Path "models" - - Model 0 "ExplodiumGunPickupDual_d.3d" - Skin 0 "ExplodiumGun.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.funstuff b/modeldef.funstuff deleted file mode 100644 index 2170d109c..000000000 --- a/modeldef.funstuff +++ /dev/null @@ -1,348 +0,0 @@ -Model "FroggyChair" -{ - Path "models" - - Model 0 "ASmallPriceToPay_d.3d" - Skin 0 "ASmallPriceToPay.png" - Scale 0.16 0.16 0.2 - AngleOffset -90 - - FrameIndex XZW1 A 0 0 -} -Model "SWWMFlag" -{ - Path "models" - - Model 0 "SWWMFlag_d.3d" - Skin 0 "SWWMFlag.png" - Scale 0.5 0.5 0.5 - DONTCULLBACKFACES - - // Default - FrameIndex XZW1 A 0 0 - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - FrameIndex XZW1 U 0 20 - FrameIndex XZW1 V 0 21 - FrameIndex XZW1 W 0 22 - FrameIndex XZW1 X 0 23 - FrameIndex XZW1 Y 0 24 - FrameIndex XZW1 Z 0 25 - FrameIndex XZW2 A 0 26 - FrameIndex XZW2 B 0 27 - FrameIndex XZW2 C 0 28 - FrameIndex XZW2 D 0 29 - FrameIndex XZW2 E 0 30 - FrameIndex XZW2 F 0 31 - FrameIndex XZW2 G 0 32 - FrameIndex XZW2 H 0 33 - FrameIndex XZW2 I 0 34 - FrameIndex XZW2 J 0 35 - FrameIndex XZW2 K 0 36 - FrameIndex XZW2 L 0 37 - FrameIndex XZW2 M 0 38 - FrameIndex XZW2 N 0 39 - FrameIndex XZW2 O 0 40 - FrameIndex XZW2 P 0 41 - FrameIndex XZW2 Q 0 42 - FrameIndex XZW2 R 0 43 - FrameIndex XZW2 S 0 44 - FrameIndex XZW2 T 0 45 - FrameIndex XZW2 U 0 46 - FrameIndex XZW2 V 0 47 - FrameIndex XZW2 W 0 48 - FrameIndex XZW2 X 0 49 - FrameIndex XZW2 Y 0 50 - FrameIndex XZW2 Z 0 51 - FrameIndex XZW3 A 0 52 - FrameIndex XZW3 B 0 53 - FrameIndex XZW3 C 0 54 - FrameIndex XZW3 D 0 55 - FrameIndex XZW3 E 0 56 - FrameIndex XZW3 F 0 57 - FrameIndex XZW3 G 0 58 - FrameIndex XZW3 H 0 59 - // Pride - Skin 0 "SWWMFlag_Pride.png" - FrameIndex XZW3 I 0 0 - FrameIndex XZW3 J 0 1 - FrameIndex XZW3 K 0 2 - FrameIndex XZW3 L 0 3 - FrameIndex XZW3 M 0 4 - FrameIndex XZW3 N 0 5 - FrameIndex XZW3 O 0 6 - FrameIndex XZW3 P 0 7 - FrameIndex XZW3 Q 0 8 - FrameIndex XZW3 R 0 9 - FrameIndex XZW3 S 0 10 - FrameIndex XZW3 T 0 11 - FrameIndex XZW3 U 0 12 - FrameIndex XZW3 V 0 13 - FrameIndex XZW3 W 0 14 - FrameIndex XZW3 X 0 15 - FrameIndex XZW3 Y 0 16 - FrameIndex XZW3 Z 0 17 - FrameIndex XZW4 A 0 18 - FrameIndex XZW4 B 0 19 - FrameIndex XZW4 C 0 20 - FrameIndex XZW4 D 0 21 - FrameIndex XZW4 E 0 22 - FrameIndex XZW4 F 0 23 - FrameIndex XZW4 G 0 24 - FrameIndex XZW4 H 0 25 - FrameIndex XZW4 I 0 26 - FrameIndex XZW4 J 0 27 - FrameIndex XZW4 K 0 28 - FrameIndex XZW4 L 0 29 - FrameIndex XZW4 M 0 30 - FrameIndex XZW4 N 0 31 - FrameIndex XZW4 O 0 32 - FrameIndex XZW4 P 0 33 - FrameIndex XZW4 Q 0 34 - FrameIndex XZW4 R 0 35 - FrameIndex XZW4 S 0 36 - FrameIndex XZW4 T 0 37 - FrameIndex XZW4 U 0 38 - FrameIndex XZW4 V 0 39 - FrameIndex XZW4 W 0 40 - FrameIndex XZW4 X 0 41 - FrameIndex XZW4 Y 0 42 - FrameIndex XZW4 Z 0 43 - FrameIndex XZW5 A 0 44 - FrameIndex XZW5 B 0 45 - FrameIndex XZW5 C 0 46 - FrameIndex XZW5 D 0 47 - FrameIndex XZW5 E 0 48 - FrameIndex XZW5 F 0 49 - FrameIndex XZW5 G 0 50 - FrameIndex XZW5 H 0 51 - FrameIndex XZW5 I 0 52 - FrameIndex XZW5 J 0 53 - FrameIndex XZW5 K 0 54 - FrameIndex XZW5 L 0 55 - FrameIndex XZW5 M 0 56 - FrameIndex XZW5 N 0 57 - FrameIndex XZW5 O 0 58 - FrameIndex XZW5 P 0 59 - // Trans - Skin 0 "SWWMFlag_Trans.png" - FrameIndex XZW5 Q 0 0 - FrameIndex XZW5 R 0 1 - FrameIndex XZW5 S 0 2 - FrameIndex XZW5 T 0 3 - FrameIndex XZW5 U 0 4 - FrameIndex XZW5 V 0 5 - FrameIndex XZW5 W 0 6 - FrameIndex XZW5 X 0 7 - FrameIndex XZW5 Y 0 8 - FrameIndex XZW5 Z 0 9 - FrameIndex XZW6 A 0 10 - FrameIndex XZW6 B 0 11 - FrameIndex XZW6 C 0 12 - FrameIndex XZW6 D 0 13 - FrameIndex XZW6 E 0 14 - FrameIndex XZW6 F 0 15 - FrameIndex XZW6 G 0 16 - FrameIndex XZW6 H 0 17 - FrameIndex XZW6 I 0 18 - FrameIndex XZW6 J 0 19 - FrameIndex XZW6 K 0 20 - FrameIndex XZW6 L 0 21 - FrameIndex XZW6 M 0 22 - FrameIndex XZW6 N 0 23 - FrameIndex XZW6 O 0 24 - FrameIndex XZW6 P 0 25 - FrameIndex XZW6 Q 0 26 - FrameIndex XZW6 R 0 27 - FrameIndex XZW6 S 0 28 - FrameIndex XZW6 T 0 29 - FrameIndex XZW6 U 0 30 - FrameIndex XZW6 V 0 31 - FrameIndex XZW6 W 0 32 - FrameIndex XZW6 X 0 33 - FrameIndex XZW6 Y 0 34 - FrameIndex XZW6 Z 0 35 - FrameIndex XZW7 A 0 36 - FrameIndex XZW7 B 0 37 - FrameIndex XZW7 C 0 38 - FrameIndex XZW7 D 0 39 - FrameIndex XZW7 E 0 40 - FrameIndex XZW7 F 0 41 - FrameIndex XZW7 G 0 42 - FrameIndex XZW7 H 0 43 - FrameIndex XZW7 I 0 44 - FrameIndex XZW7 J 0 45 - FrameIndex XZW7 K 0 46 - FrameIndex XZW7 L 0 47 - FrameIndex XZW7 M 0 48 - FrameIndex XZW7 N 0 49 - FrameIndex XZW7 O 0 50 - FrameIndex XZW7 P 0 51 - FrameIndex XZW7 Q 0 52 - FrameIndex XZW7 R 0 53 - FrameIndex XZW7 S 0 54 - FrameIndex XZW7 T 0 55 - FrameIndex XZW7 U 0 56 - FrameIndex XZW7 V 0 57 - FrameIndex XZW7 W 0 58 - FrameIndex XZW7 X 0 59 - // Enby - Skin 0 "SWWMFlag_Enby.png" - FrameIndex XZW7 Y 0 0 - FrameIndex XZW7 Z 0 1 - FrameIndex XZW8 A 0 2 - FrameIndex XZW8 B 0 3 - FrameIndex XZW8 C 0 4 - FrameIndex XZW8 D 0 5 - FrameIndex XZW8 E 0 6 - FrameIndex XZW8 F 0 7 - FrameIndex XZW8 G 0 8 - FrameIndex XZW8 H 0 9 - FrameIndex XZW8 I 0 10 - FrameIndex XZW8 J 0 11 - FrameIndex XZW8 K 0 12 - FrameIndex XZW8 L 0 13 - FrameIndex XZW8 M 0 14 - FrameIndex XZW8 N 0 15 - FrameIndex XZW8 O 0 16 - FrameIndex XZW8 P 0 17 - FrameIndex XZW8 Q 0 18 - FrameIndex XZW8 R 0 19 - FrameIndex XZW8 S 0 20 - FrameIndex XZW8 T 0 21 - FrameIndex XZW8 U 0 22 - FrameIndex XZW8 V 0 23 - FrameIndex XZW8 W 0 24 - FrameIndex XZW8 X 0 25 - FrameIndex XZW8 Y 0 26 - FrameIndex XZW8 Z 0 27 - FrameIndex XZW9 A 0 28 - FrameIndex XZW9 B 0 29 - FrameIndex XZW9 C 0 30 - FrameIndex XZW9 D 0 31 - FrameIndex XZW9 E 0 32 - FrameIndex XZW9 F 0 33 - FrameIndex XZW9 G 0 34 - FrameIndex XZW9 H 0 35 - FrameIndex XZW9 I 0 36 - FrameIndex XZW9 J 0 37 - FrameIndex XZW9 K 0 38 - FrameIndex XZW9 L 0 39 - FrameIndex XZW9 M 0 40 - FrameIndex XZW9 N 0 41 - FrameIndex XZW9 O 0 42 - FrameIndex XZW9 P 0 43 - FrameIndex XZW9 Q 0 44 - FrameIndex XZW9 R 0 45 - FrameIndex XZW9 S 0 46 - FrameIndex XZW9 T 0 47 - FrameIndex XZW9 U 0 48 - FrameIndex XZW9 V 0 49 - FrameIndex XZW9 W 0 50 - FrameIndex XZW9 X 0 51 - FrameIndex XZW9 Y 0 52 - FrameIndex XZW9 Z 0 53 - FrameIndex XZWA A 0 54 - FrameIndex XZWA B 0 55 - FrameIndex XZWA C 0 56 - FrameIndex XZWA D 0 57 - FrameIndex XZWA E 0 58 - FrameIndex XZWA F 0 59 -} -Model "Chancebox" -{ - Path "models" - Model 0 "Chancebox_d.3d" - Skin 0 "Chancebox.png" - Scale 0.1875 0.1875 0.1875 - AngleOffset -90 - ZOffset 10 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - // deploy - FrameIndex XZW2 A 0 8 - FrameIndex XZW2 B 0 9 - FrameIndex XZW2 C 0 10 - FrameIndex XZW2 D 0 11 - FrameIndex XZW2 E 0 12 - FrameIndex XZW2 F 0 13 - FrameIndex XZW2 G 0 14 - FrameIndex XZW2 H 0 15 - FrameIndex XZW2 I 0 16 - FrameIndex XZW2 J 0 17 - FrameIndex XZW2 K 0 18 - FrameIndex XZW2 L 0 19 - FrameIndex XZW2 M 0 20 - FrameIndex XZW2 N 0 21 - FrameIndex XZW2 O 0 22 - FrameIndex XZW2 P 0 23 - FrameIndex XZW2 Q 0 24 -} -Model "ChanceboxTop" -{ - Path "models" - Model 0 "Chancebox_Top_d.3d" - Skin 0 "Chancebox.png" - Scale 0.1875 0.1875 0.1875 - AngleOffset -90 - ZOffset 2 - - FrameIndex XZW1 A 0 0 -} -Model "ChanceboxSide" -{ - Path "models" - Model 0 "Chancebox_Side_d.3d" - Skin 0 "Chancebox.png" - Scale 0.1875 0.1875 0.1875 - AngleOffset -90 - ZOffset 10 - - FrameIndex XZW1 A 0 0 -} -Model "SuperFancyTrail" -{ - Path "models/extra" - - Model 0 "YBeam.obj" - Scale 1 1 0.6 - USEACTORPITCH - USEACTORROLL - DONTCULLBACKFACES - - Skin 0 "FancyTrail0.png" - FrameIndex XZW1 A 0 0 - Skin 0 "FancyTrail1.png" - FrameIndex XZW1 B 0 0 - Skin 0 "FancyTrail2.png" - FrameIndex XZW1 C 0 0 - Skin 0 "FancyTrail3.png" - FrameIndex XZW1 D 0 0 - Skin 0 "FancyTrail4.png" - FrameIndex XZW1 E 0 0 - Skin 0 "FancyTrail5.png" - FrameIndex XZW1 F 0 0 - Skin 0 "FancyTrail6.png" - FrameIndex XZW1 G 0 0 - Skin 0 "FancyTrail7.png" - FrameIndex XZW1 H 0 0 -} diff --git a/modeldef.gesture b/modeldef.gesture deleted file mode 100644 index 6a9d8269a..000000000 --- a/modeldef.gesture +++ /dev/null @@ -1,190 +0,0 @@ -Model "SWWMGesture" -{ - Path "models" - Model 0 "GestureArms_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Initial - FrameIndex XZW1 A 0 0 - // Wave - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - // Thumbs Up - FrameIndex XZW1 Q 0 17 - FrameIndex XZW1 R 0 18 - FrameIndex XZW1 S 0 19 - FrameIndex XZW1 T 0 20 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - // Victory - FrameIndex XZW2 H 0 35 - FrameIndex XZW2 I 0 36 - FrameIndex XZW2 J 0 37 - FrameIndex XZW2 K 0 38 - FrameIndex XZW2 L 0 39 - FrameIndex XZW2 M 0 40 - FrameIndex XZW2 N 0 41 - FrameIndex XZW2 O 0 42 - FrameIndex XZW2 P 0 43 - FrameIndex XZW2 Q 0 44 - FrameIndex XZW2 R 0 45 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 50 - FrameIndex XZW2 X 0 51 - FrameIndex XZW2 Y 0 52 - FrameIndex XZW2 Z 0 53 - // Blow Kiss - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 // smooch - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 // blow - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - // Headpat - FrameIndex XZW3 T 0 75 - FrameIndex XZW3 U 0 76 - FrameIndex XZW3 V 0 77 - FrameIndex XZW3 W 0 78 - FrameIndex XZW3 X 0 79 - FrameIndex XZW3 Y 0 80 // patstart - FrameIndex XZW3 Z 0 81 - FrameIndex XZW4 A 0 82 - FrameIndex XZW4 B 0 83 - FrameIndex XZW4 C 0 84 - FrameIndex XZW4 D 0 85 // patpat - FrameIndex XZW4 E 0 86 - FrameIndex XZW4 F 0 87 - FrameIndex XZW4 G 0 88 - FrameIndex XZW4 H 0 89 - FrameIndex XZW4 I 0 90 - FrameIndex XZW4 J 0 91 // patend - FrameIndex XZW4 K 0 92 - FrameIndex XZW4 L 0 93 - FrameIndex XZW4 M 0 94 - FrameIndex XZW4 N 0 95 - FrameIndex XZW4 O 0 96 - FrameIndex XZW4 P 0 97 -} -Model "SWWMGesture" -{ - Path "models" - Model 0 "Grenade1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "ExplodiumGun.png" - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Quick Grenade - FrameIndex XZW4 Q 0 0 - FrameIndex XZW4 R 0 1 - FrameIndex XZW4 S 0 2 - FrameIndex XZW4 T 0 3 - FrameIndex XZW4 U 0 4 - FrameIndex XZW4 V 0 5 // arm - FrameIndex XZW4 W 0 6 - FrameIndex XZW4 X 0 7 - FrameIndex XZW4 Y 0 8 // check surface - FrameIndex XZW4 Z 0 9 - FrameIndex XZW5 A 0 10 - FrameIndex XZW5 B 0 11 // swing - FrameIndex XZW5 C 0 12 - FrameIndex XZW5 D 0 13 - FrameIndex XZW5 E 0 14 - FrameIndex XZW5 F 0 15 - SurfaceSkin 0 3 "" - FrameIndex XZW5 G 0 16 // throw - FrameIndex XZW5 H 0 17 - FrameIndex XZW5 I 0 18 - FrameIndex XZW5 J 0 19 - FrameIndex XZW5 K 0 20 - FrameIndex XZW5 L 0 21 - // Quick Grenade (Surface) - SurfaceSkin 0 3 "ExplodiumGun.png" - FrameIndex XZW5 M 0 31 - FrameIndex XZW5 N 0 32 - FrameIndex XZW5 O 0 33 - FrameIndex XZW5 P 0 34 - FrameIndex XZW5 Q 0 35 - FrameIndex XZW5 R 0 36 - FrameIndex XZW5 S 0 37 - FrameIndex XZW5 T 0 38 - FrameIndex XZW5 U 0 39 - SurfaceSkin 0 3 "" - FrameIndex XZW5 V 0 40 // plant - FrameIndex XZW5 W 0 41 - FrameIndex XZW5 X 0 42 - FrameIndex XZW5 Y 0 43 -} -Model "SWWMGesture" -{ - Path "models" - Model 0 "QuickPunch1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 0 0 - FrameIndex XZW0 B 0 1 - FrameIndex XZW0 C 0 2 - FrameIndex XZW0 D 0 3 - FrameIndex XZW0 E 0 4 - FrameIndex XZW0 F 0 5 - FrameIndex XZW0 G 0 6 - FrameIndex XZW0 H 0 7 - FrameIndex XZW0 I 0 8 - FrameIndex XZW0 J 0 9 - FrameIndex XZW0 K 0 10 - FrameIndex XZW0 L 0 11 - FrameIndex XZW0 M 0 12 - FrameIndex XZW0 N 0 13 -} diff --git a/modeldef.hammer b/modeldef.hammer deleted file mode 100644 index d54f2b479..000000000 --- a/modeldef.hammer +++ /dev/null @@ -1,13 +0,0 @@ -Model "ItamexHammer" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.04 0.04 0.04 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.hellblazer b/modeldef.hellblazer deleted file mode 100644 index a3e2535fb..000000000 --- a/modeldef.hellblazer +++ /dev/null @@ -1,980 +0,0 @@ -Model "HellblazerMissile" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile.png" - Scale 0.1 0.1 0.1 - USEACTORPITCH - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerMissile2" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile.png" - Scale 0.1 0.1 0.1 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerCrackshot" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Cluster.png" - Scale 0.1 0.1 0.1 - USEACTORPITCH - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerCrackshot2" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Cluster.png" - Scale 0.1 0.1 0.1 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerClusterMini" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Cluster.png" - Scale 0.05 0.05 0.05 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerRavager" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Fire.png" - Scale 0.1 0.1 0.1 - USEACTORPITCH - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerRavager2" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Fire.png" - Scale 0.1 0.1 0.1 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerWarhead" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Nuke.png" - Scale 0.1 0.1 0.1 - USEACTORPITCH - - FrameIndex XZW1 A 0 0 -} -Model "HellblazerWarhead2" -{ - Path "models" - - Model 0 "HellblazerProj_d.3d" - Skin 0 "HellblazerMissile_Nuke.png" - Scale 0.1 0.1 0.1 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "Hellblazer" -{ - Path "models" - - Model 0 "HellblazerPickup_d.3d" - SurfaceSkin 0 0 "Hellblazer.png" - Scale 0.11 0.11 0.11 - AngleOffset 180 - ZOffset 20 - ROTATING - - // Missiles - SurfaceSkin 0 2 "HellblazerAmmo.png" - SurfaceSkin 0 3 "HellblazerAmmo.png" - SurfaceSkin 0 4 "HellblazerAmmo.png" - SurfaceSkin 0 5 "HellblazerAmmo.png" - FrameIndex XZW1 A 0 0 - // Crackshots - SurfaceSkin 0 2 "HellblazerAmmo_Cluster.png" - SurfaceSkin 0 3 "" - SurfaceSkin 0 4 "HellblazerAmmo_Cluster.png" - SurfaceSkin 0 5 "" - FrameIndex XZW1 B 0 0 - // Ravagers - SurfaceSkin 0 2 "HellblazerAmmo_Fire.png" - SurfaceSkin 0 3 "" - SurfaceSkin 0 4 "HellblazerAmmo_Fire.png" - SurfaceSkin 0 5 "" - FrameIndex XZW1 C 0 0 - // Warheads - SurfaceSkin 0 2 "HellblazerAmmo_Nuke.png" - SurfaceSkin 0 3 "" - SurfaceSkin 0 4 "" - SurfaceSkin 0 5 "HellblazerAmmo_Nuke.png" - FrameIndex XZW1 D 0 0 -} - -// individual missiles for pickup model -Model "HellblazerXSub" -{ - Path "models" - - Model 0 "HellblazerPickup_d.3d" - Scale 0.11 0.11 0.11 - AngleOffset 180 - ZOffset 20 - ROTATING - - // Missiles - SurfaceSkin 0 6 "HellblazerMissile.png" - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 6 "" - SurfaceSkin 0 7 "HellblazerMissile.png" - FrameIndex XZW1 B 0 0 - SurfaceSkin 0 7 "" - SurfaceSkin 0 8 "HellblazerMissile.png" - FrameIndex XZW1 C 0 0 - SurfaceSkin 0 8 "" - SurfaceSkin 0 9 "HellblazerMissile.png" - FrameIndex XZW1 D 0 0 - SurfaceSkin 0 9 "" - SurfaceSkin 0 10 "HellblazerMissile.png" - FrameIndex XZW1 E 0 0 - SurfaceSkin 0 10 "" - SurfaceSkin 0 11 "HellblazerMissile.png" - FrameIndex XZW1 F 0 0 - SurfaceSkin 0 11 "" - // Crackshots - SurfaceSkin 0 6 "HellblazerMissile_Cluster.png" - FrameIndex XZW2 A 0 0 - SurfaceSkin 0 6 "" - SurfaceSkin 0 8 "HellblazerMissile_Cluster.png" - FrameIndex XZW2 B 0 0 - SurfaceSkin 0 8 "" - SurfaceSkin 0 10 "HellblazerMissile_Cluster.png" - FrameIndex XZW2 C 0 0 - SurfaceSkin 0 10 "" - // Ravagers - SurfaceSkin 0 6 "HellblazerMissile_Fire.png" - FrameIndex XZW3 A 0 0 - SurfaceSkin 0 6 "" - SurfaceSkin 0 8 "HellblazerMissile_Fire.png" - FrameIndex XZW3 B 0 0 - SurfaceSkin 0 8 "" - SurfaceSkin 0 10 "HellblazerMissile_Fire.png" - FrameIndex XZW3 C 0 0 - SurfaceSkin 0 10 "" - // Warheads - SurfaceSkin 0 6 "HellblazerMissile_Nuke.png" - FrameIndex XZW4 A 0 0 - SurfaceSkin 0 6 "" - SurfaceSkin 0 9 "HellblazerMissile_Nuke.png" - FrameIndex XZW4 B 0 0 -} -Model "HellblazerX" -{ - Path "models" - - Model 0 "HellblazerPickup_d.3d" - SurfaceSkin 0 1 "Hellblazer.png" - Scale 0.11 0.11 0.11 - AngleOffset 180 - ZOffset 20 - ROTATING - DONTCULLBACKFACES - - FrameIndex XZW1 A 0 0 -} - -// translucent part -Model "Hellblazer" -{ - Path "models" - - Model 2 "Hellblazer1st_d.3d" - SurfaceSkin 2 4 "Hellblazer.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - Offset -2 2 1 - - // Still / Deselect - FrameIndex XZWL S 2 0 - FrameIndex XZWL T 2 1 - FrameIndex XZWL U 2 2 - FrameIndex XZWL V 2 3 - FrameIndex XZWL W 2 4 - FrameIndex XZWL X 2 5 - FrameIndex XZWL Y 2 6 - FrameIndex XZWL Z 2 7 - FrameIndex XZWM A 2 8 // Select - FrameIndex XZWM B 2 9 - FrameIndex XZWM C 2 10 - FrameIndex XZWM D 2 11 - FrameIndex XZWM E 2 12 - FrameIndex XZWM F 2 13 - FrameIndex XZWM G 2 14 - FrameIndex XZWM H 2 15 - // Fire - FrameIndex XZWM I 2 17 - FrameIndex XZWM J 2 18 - FrameIndex XZWM K 2 19 - FrameIndex XZWM L 2 20 - FrameIndex XZWM M 2 21 - FrameIndex XZWM N 2 22 - FrameIndex XZWM O 2 23 - // AltFire - FrameIndex XZWM P 2 25 - FrameIndex XZWM Q 2 26 - FrameIndex XZWM R 2 27 - FrameIndex XZWM S 2 28 - FrameIndex XZWM T 2 29 - FrameIndex XZWM U 2 30 - FrameIndex XZWM V 2 31 - // CycleStart/End - FrameIndex XZWM W 2 33 - // Cycle1 - FrameIndex XZWM X 2 37 - FrameIndex XZWM Y 2 38 - FrameIndex XZWM Z 2 39 - FrameIndex XZWN A 2 40 - // Cycle2 - FrameIndex XZWN B 2 41 - FrameIndex XZWN C 2 42 - FrameIndex XZWN D 2 43 - FrameIndex XZWN E 2 44 - FrameIndex XZWN F 2 45 - FrameIndex XZWN G 2 46 - FrameIndex XZWN H 2 47 - // Cycle3 - FrameIndex XZWN I 2 48 - FrameIndex XZWN J 2 49 - FrameIndex XZWN K 2 50 - FrameIndex XZWN L 2 51 - FrameIndex XZWN M 2 52 - FrameIndex XZWN N 2 53 - FrameIndex XZWN O 2 54 - FrameIndex XZWN P 2 55 - FrameIndex XZWN Q 2 56 - FrameIndex XZWN R 2 57 - // Unload - FrameIndex XZWN S 2 59 - FrameIndex XZWN T 2 60 - FrameIndex XZWN U 2 61 - FrameIndex XZWN V 2 62 - FrameIndex XZWN W 2 63 - FrameIndex XZWN X 2 64 - FrameIndex XZWN Y 2 65 - FrameIndex XZWN Z 2 66 - FrameIndex XZWO A 2 67 - FrameIndex XZWO B 2 68 - FrameIndex XZWO C 2 69 - FrameIndex XZWO D 2 70 - FrameIndex XZWO E 2 71 - FrameIndex XZWO F 2 72 - FrameIndex XZWO G 2 73 - FrameIndex XZWO H 2 74 - FrameIndex XZWO I 2 75 - FrameIndex XZWO J 2 76 - FrameIndex XZWO K 2 77 - FrameIndex XZWO L 2 78 - FrameIndex XZWO M 2 79 - FrameIndex XZWO N 2 80 - FrameIndex XZWO O 2 81 - FrameIndex XZWO P 2 82 - FrameIndex XZWO Q 2 83 - FrameIndex XZWO R 2 84 - // Load - FrameIndex XZWO S 2 85 - FrameIndex XZWO T 2 86 - FrameIndex XZWO U 2 87 - FrameIndex XZWO V 2 88 - FrameIndex XZWO W 2 89 - FrameIndex XZWO X 2 90 - FrameIndex XZWO Y 2 91 - FrameIndex XZWO Z 2 92 - FrameIndex XZWP A 2 93 - FrameIndex XZWP B 2 94 - FrameIndex XZWP C 2 95 - FrameIndex XZWP D 2 96 - FrameIndex XZWP E 2 97 - FrameIndex XZWP F 2 98 - FrameIndex XZWP G 2 99 - FrameIndex XZWP H 2 100 - FrameIndex XZWP I 2 101 - FrameIndex XZWP J 2 102 - FrameIndex XZWP K 2 103 - FrameIndex XZWP L 2 104 - FrameIndex XZWP M 2 105 - FrameIndex XZWP N 2 106 - FrameIndex XZWP O 2 107 - FrameIndex XZWP P 2 108 - FrameIndex XZWP Q 2 109 - FrameIndex XZWP R 2 110 - FrameIndex XZWP S 2 111 - // Idle - FrameIndex XZWP T 2 113 - FrameIndex XZWP U 2 114 - FrameIndex XZWP V 2 115 - FrameIndex XZWP W 2 116 - FrameIndex XZWP X 2 117 - FrameIndex XZWP Y 2 118 - FrameIndex XZWP Z 2 119 - FrameIndex XZWQ A 2 120 - FrameIndex XZWQ B 2 121 - FrameIndex XZWQ C 2 122 - FrameIndex XZWQ D 2 123 - FrameIndex XZWQ E 2 124 - FrameIndex XZWQ F 2 125 - FrameIndex XZWQ G 2 126 - FrameIndex XZWQ H 2 127 - FrameIndex XZWQ I 2 128 - FrameIndex XZWQ J 2 129 - // Melee - FrameIndex XZWQ K 2 131 - FrameIndex XZWQ L 2 132 - FrameIndex XZWQ M 2 133 - FrameIndex XZWQ N 2 134 - FrameIndex XZWQ O 2 135 - FrameIndex XZWQ P 2 136 - FrameIndex XZWQ Q 2 137 - FrameIndex XZWQ R 2 138 - FrameIndex XZWQ S 2 139 - FrameIndex XZWQ T 2 140 - FrameIndex XZWQ U 2 141 - FrameIndex XZWQ V 2 142 - FrameIndex XZWQ W 2 143 - FrameIndex XZWQ X 2 144 - FrameIndex XZWQ Y 2 145 - FrameIndex XZWQ Z 2 146 - FrameIndex XZWR A 2 147 - FrameIndex XZWR B 2 148 - FrameIndex XZWR C 2 149 - FrameIndex XZWR D 2 150 - // ReloadInter - FrameIndex XZWR E 2 153 - FrameIndex XZWR F 2 154 - FrameIndex XZWR G 2 155 - FrameIndex XZWR H 2 156 - FrameIndex XZWR I 2 157 -} - -Model "Hellblazer" -{ - Path "models" - - Model 1 "Hellblazer1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Hellblazer.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - Offset -2 2 1 - - ////// MISSILES - SurfaceSkin 1 5 "HellblazerAmmo.png" - SurfaceSkin 1 6 "HellblazerAmmo.png" - SurfaceSkin 1 7 "HellblazerAmmo.png" - SurfaceSkin 1 8 "HellblazerAmmo.png" - // Still / Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - FrameIndex XZW2 G 1 6 - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 // Select - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - FrameIndex XZW2 M 1 12 - FrameIndex XZW2 N 1 13 - FrameIndex XZW2 O 1 14 - FrameIndex XZW2 P 1 15 - // Fire - FrameIndex XZW2 Q 1 17 - FrameIndex XZW2 R 1 18 - FrameIndex XZW2 S 1 19 - FrameIndex XZW2 T 1 20 - FrameIndex XZW2 U 1 21 - FrameIndex XZW2 V 1 22 - FrameIndex XZW2 W 1 23 - // AltFire - FrameIndex XZW2 X 1 25 - FrameIndex XZW2 Y 1 26 - FrameIndex XZW2 Z 1 27 - FrameIndex XZW3 A 1 28 - FrameIndex XZW3 B 1 29 - FrameIndex XZW3 C 1 30 - FrameIndex XZW3 D 1 31 - // CycleStart/End - FrameIndex XZW3 E 1 33 - // Cycle1 - FrameIndex XZW3 F 1 37 - FrameIndex XZW3 G 1 38 - FrameIndex XZW3 H 1 39 - FrameIndex XZW3 I 1 40 - // Unload - FrameIndex XZW3 J 1 59 - FrameIndex XZW3 K 1 60 - FrameIndex XZW3 L 1 61 - FrameIndex XZW3 M 1 62 - FrameIndex XZW3 N 1 63 - FrameIndex XZW3 O 1 64 - FrameIndex XZW3 P 1 65 - FrameIndex XZW3 Q 1 66 - FrameIndex XZW3 R 1 67 - FrameIndex XZW3 S 1 68 - FrameIndex XZW3 T 1 69 - FrameIndex XZW3 U 1 70 - FrameIndex XZW3 V 1 71 - FrameIndex XZW3 W 1 72 - FrameIndex XZW3 X 1 73 - FrameIndex XZW3 Y 1 74 - FrameIndex XZW3 Z 1 75 - FrameIndex XZW4 A 1 76 - FrameIndex XZW4 B 1 77 - FrameIndex XZW4 C 1 78 - FrameIndex XZW4 D 1 79 - FrameIndex XZW4 E 1 80 - FrameIndex XZW4 F 1 81 - FrameIndex XZW4 G 1 82 - FrameIndex XZW4 H 1 83 - FrameIndex XZW4 I 1 84 - // Load - FrameIndex XZW4 J 1 85 - FrameIndex XZW4 K 1 86 - FrameIndex XZW4 L 1 87 - FrameIndex XZW4 M 1 88 - FrameIndex XZW4 N 1 89 - FrameIndex XZW4 O 1 90 - FrameIndex XZW4 P 1 91 - FrameIndex XZW4 Q 1 92 - FrameIndex XZW4 R 1 93 - FrameIndex XZW4 S 1 94 - FrameIndex XZW4 T 1 95 - FrameIndex XZW4 U 1 96 - FrameIndex XZW4 V 1 97 - FrameIndex XZW4 W 1 98 - FrameIndex XZW4 X 1 99 - FrameIndex XZW4 Y 1 100 - FrameIndex XZW4 Z 1 101 - FrameIndex XZW5 A 1 102 - FrameIndex XZW5 B 1 103 - FrameIndex XZW5 C 1 104 - FrameIndex XZW5 D 1 105 - FrameIndex XZW5 E 1 106 - FrameIndex XZW5 F 1 107 - FrameIndex XZW5 G 1 108 - FrameIndex XZW5 H 1 109 - FrameIndex XZW5 I 1 110 - FrameIndex XZW5 J 1 111 - // Idle - FrameIndex XZW5 K 1 113 - FrameIndex XZW5 L 1 114 - FrameIndex XZW5 M 1 115 - FrameIndex XZW5 N 1 116 - FrameIndex XZW5 O 1 117 - FrameIndex XZW5 P 1 118 - FrameIndex XZW5 Q 1 119 - FrameIndex XZW5 R 1 120 - FrameIndex XZW5 S 1 121 - FrameIndex XZW5 T 1 122 - FrameIndex XZW5 U 1 123 - FrameIndex XZW5 V 1 124 - FrameIndex XZW5 W 1 125 - FrameIndex XZW5 X 1 126 - FrameIndex XZW5 Y 1 127 - FrameIndex XZW5 Z 1 128 - FrameIndex XZW6 A 1 129 - // Melee - FrameIndex XZW6 B 1 131 - FrameIndex XZW6 C 1 132 - FrameIndex XZW6 D 1 133 - FrameIndex XZW6 E 1 134 - FrameIndex XZW6 F 1 135 - FrameIndex XZW6 G 1 136 - FrameIndex XZW6 H 1 137 - FrameIndex XZW6 I 1 138 - FrameIndex XZW6 J 1 139 - FrameIndex XZW6 K 1 140 - FrameIndex XZW6 L 1 141 - FrameIndex XZW6 M 1 142 - FrameIndex XZW6 N 1 143 - FrameIndex XZW6 O 1 144 - FrameIndex XZW6 P 1 145 - FrameIndex XZW6 Q 1 146 - FrameIndex XZW6 R 1 147 - FrameIndex XZW6 S 1 148 - FrameIndex XZW6 T 1 149 - FrameIndex XZW6 U 1 150 - ////// CRACKSHOTS - SurfaceSkin 1 5 "HellblazerAmmo_Cluster.png" - SurfaceSkin 1 6 "" - SurfaceSkin 1 7 "HellblazerAmmo_Cluster.png" - SurfaceSkin 1 8 "" - // Still / Deselect - FrameIndex XZW6 V 1 0 - FrameIndex XZW6 W 1 1 - FrameIndex XZW6 X 1 2 - FrameIndex XZW6 Y 1 3 - FrameIndex XZW6 Z 1 4 - FrameIndex XZW7 A 1 5 - FrameIndex XZW7 B 1 6 - FrameIndex XZW7 C 1 7 - FrameIndex XZW7 D 1 8 // Select - FrameIndex XZW7 E 1 9 - FrameIndex XZW7 F 1 10 - FrameIndex XZW7 G 1 11 - FrameIndex XZW7 H 1 12 - FrameIndex XZW7 I 1 13 - FrameIndex XZW7 J 1 14 - FrameIndex XZW7 K 1 15 - // Fire - FrameIndex XZW7 L 1 17 - FrameIndex XZW7 M 1 18 - FrameIndex XZW7 N 1 19 - FrameIndex XZW7 O 1 20 - FrameIndex XZW7 P 1 21 - FrameIndex XZW7 Q 1 22 - FrameIndex XZW7 R 1 23 - // AltFire - FrameIndex XZW7 S 1 25 - FrameIndex XZW7 T 1 26 - FrameIndex XZW7 U 1 27 - FrameIndex XZW7 V 1 28 - FrameIndex XZW7 W 1 29 - FrameIndex XZW7 X 1 30 - FrameIndex XZW7 Y 1 31 - // CycleStart/End - FrameIndex XZW7 Z 1 33 - // Cycle2 - FrameIndex XZW8 A 1 41 - FrameIndex XZW8 B 1 42 - FrameIndex XZW8 C 1 43 - FrameIndex XZW8 D 1 44 - FrameIndex XZW8 E 1 45 - FrameIndex XZW8 F 1 46 - FrameIndex XZW8 G 1 47 - // Unload - FrameIndex XZW8 H 1 59 - FrameIndex XZW8 I 1 60 - FrameIndex XZW8 J 1 61 - FrameIndex XZW8 K 1 62 - FrameIndex XZW8 L 1 63 - FrameIndex XZW8 M 1 64 - FrameIndex XZW8 N 1 65 - FrameIndex XZW8 O 1 66 - FrameIndex XZW8 P 1 67 - FrameIndex XZW8 Q 1 68 - FrameIndex XZW8 R 1 69 - FrameIndex XZW8 S 1 70 - FrameIndex XZW8 T 1 71 - FrameIndex XZW8 U 1 72 - FrameIndex XZW8 V 1 73 - FrameIndex XZW8 W 1 74 - FrameIndex XZW8 X 1 75 - FrameIndex XZW8 Y 1 76 - FrameIndex XZW8 Z 1 77 - FrameIndex XZW9 A 1 78 - FrameIndex XZW9 B 1 79 - FrameIndex XZW9 C 1 80 - FrameIndex XZW9 D 1 81 - FrameIndex XZW9 E 1 82 - FrameIndex XZW9 F 1 83 - FrameIndex XZW9 G 1 84 - // Load - FrameIndex XZW9 H 1 85 - FrameIndex XZW9 I 1 86 - FrameIndex XZW9 J 1 87 - FrameIndex XZW9 K 1 88 - FrameIndex XZW9 L 1 89 - FrameIndex XZW9 M 1 90 - FrameIndex XZW9 N 1 91 - FrameIndex XZW9 O 1 92 - FrameIndex XZW9 P 1 93 - FrameIndex XZW9 Q 1 94 - FrameIndex XZW9 R 1 95 - FrameIndex XZW9 S 1 96 - FrameIndex XZW9 T 1 97 - FrameIndex XZW9 U 1 98 - FrameIndex XZW9 V 1 99 - FrameIndex XZW9 W 1 100 - FrameIndex XZW9 X 1 101 - FrameIndex XZW9 Y 1 102 - FrameIndex XZW9 Z 1 103 - FrameIndex XZWA A 1 104 - FrameIndex XZWA B 1 105 - FrameIndex XZWA C 1 106 - FrameIndex XZWA D 1 107 - FrameIndex XZWA E 1 108 - FrameIndex XZWA F 1 109 - FrameIndex XZWA G 1 110 - FrameIndex XZWA H 1 111 - // Idle - FrameIndex XZWA I 1 113 - FrameIndex XZWA J 1 114 - FrameIndex XZWA K 1 115 - FrameIndex XZWA L 1 116 - FrameIndex XZWA M 1 117 - FrameIndex XZWA N 1 118 - FrameIndex XZWA O 1 119 - FrameIndex XZWA P 1 120 - FrameIndex XZWA Q 1 121 - FrameIndex XZWA R 1 122 - FrameIndex XZWA S 1 123 - FrameIndex XZWA T 1 124 - FrameIndex XZWA U 1 125 - FrameIndex XZWA V 1 126 - FrameIndex XZWA W 1 127 - FrameIndex XZWA X 1 128 - FrameIndex XZWA Y 1 129 - // Melee - FrameIndex XZWA Z 1 131 - FrameIndex XZWB A 1 132 - FrameIndex XZWB B 1 133 - FrameIndex XZWB C 1 134 - FrameIndex XZWB D 1 135 - FrameIndex XZWB E 1 136 - FrameIndex XZWB F 1 137 - FrameIndex XZWB G 1 138 - FrameIndex XZWB H 1 139 - FrameIndex XZWB I 1 140 - FrameIndex XZWB J 1 141 - FrameIndex XZWB K 1 142 - FrameIndex XZWB L 1 143 - FrameIndex XZWB M 1 144 - FrameIndex XZWB N 1 145 - FrameIndex XZWB O 1 146 - FrameIndex XZWB P 1 147 - FrameIndex XZWB Q 1 148 - FrameIndex XZWB R 1 149 - FrameIndex XZWB S 1 150 - ////// RAVAGERS - SurfaceSkin 1 5 "HellblazerAmmo_Fire.png" - SurfaceSkin 1 6 "" - SurfaceSkin 1 7 "HellblazerAmmo_Fire.png" - SurfaceSkin 1 8 "" - // Still / Deselect - FrameIndex XZWB T 1 0 - FrameIndex XZWB U 1 1 - FrameIndex XZWB V 1 2 - FrameIndex XZWB W 1 3 - FrameIndex XZWB X 1 4 - FrameIndex XZWB Y 1 5 - FrameIndex XZWB Z 1 6 - FrameIndex XZWC A 1 7 - FrameIndex XZWC B 1 8 // Select - FrameIndex XZWC C 1 9 - FrameIndex XZWC D 1 10 - FrameIndex XZWC E 1 11 - FrameIndex XZWC F 1 12 - FrameIndex XZWC G 1 13 - FrameIndex XZWC H 1 14 - FrameIndex XZWC I 1 15 - // Fire - FrameIndex XZWC J 1 17 - FrameIndex XZWC K 1 18 - FrameIndex XZWC L 1 19 - FrameIndex XZWC M 1 20 - FrameIndex XZWC N 1 21 - FrameIndex XZWC O 1 22 - FrameIndex XZWC P 1 23 - // AltFire - FrameIndex XZWC Q 1 25 - FrameIndex XZWC R 1 26 - FrameIndex XZWC S 1 27 - FrameIndex XZWC T 1 28 - FrameIndex XZWC U 1 29 - FrameIndex XZWC V 1 30 - FrameIndex XZWC W 1 31 - // CycleStart/End - FrameIndex XZWC X 1 33 - // Cycle2 - FrameIndex XZWC Y 1 41 - FrameIndex XZWC Z 1 42 - FrameIndex XZWD A 1 43 - FrameIndex XZWD B 1 44 - FrameIndex XZWD C 1 45 - FrameIndex XZWD D 1 46 - FrameIndex XZWD E 1 47 - // Unload - FrameIndex XZWD F 1 59 - FrameIndex XZWD G 1 60 - FrameIndex XZWD H 1 61 - FrameIndex XZWD I 1 62 - FrameIndex XZWD J 1 63 - FrameIndex XZWD K 1 64 - FrameIndex XZWD L 1 65 - FrameIndex XZWD M 1 66 - FrameIndex XZWD N 1 67 - FrameIndex XZWD O 1 68 - FrameIndex XZWD P 1 69 - FrameIndex XZWD Q 1 70 - FrameIndex XZWD R 1 71 - FrameIndex XZWD S 1 72 - FrameIndex XZWD T 1 73 - FrameIndex XZWD U 1 74 - FrameIndex XZWD V 1 75 - FrameIndex XZWD W 1 76 - FrameIndex XZWD X 1 77 - FrameIndex XZWD Y 1 78 - FrameIndex XZWD Z 1 79 - FrameIndex XZWE A 1 80 - FrameIndex XZWE B 1 81 - FrameIndex XZWE C 1 82 - FrameIndex XZWE D 1 83 - FrameIndex XZWE E 1 84 - // Load - FrameIndex XZWE F 1 85 - FrameIndex XZWE G 1 86 - FrameIndex XZWE H 1 87 - FrameIndex XZWE I 1 88 - FrameIndex XZWE J 1 89 - FrameIndex XZWE K 1 90 - FrameIndex XZWE L 1 91 - FrameIndex XZWE M 1 92 - FrameIndex XZWE N 1 93 - FrameIndex XZWE O 1 94 - FrameIndex XZWE P 1 95 - FrameIndex XZWE Q 1 96 - FrameIndex XZWE R 1 97 - FrameIndex XZWE S 1 98 - FrameIndex XZWE T 1 99 - FrameIndex XZWE U 1 100 - FrameIndex XZWE V 1 101 - FrameIndex XZWE W 1 102 - FrameIndex XZWE X 1 103 - FrameIndex XZWE Y 1 104 - FrameIndex XZWE Z 1 105 - FrameIndex XZWF A 1 106 - FrameIndex XZWF B 1 107 - FrameIndex XZWF C 1 108 - FrameIndex XZWF D 1 109 - FrameIndex XZWF E 1 110 - FrameIndex XZWF F 1 111 - // Idle - FrameIndex XZWF G 1 113 - FrameIndex XZWF H 1 114 - FrameIndex XZWF I 1 115 - FrameIndex XZWF J 1 116 - FrameIndex XZWF K 1 117 - FrameIndex XZWF L 1 118 - FrameIndex XZWF M 1 119 - FrameIndex XZWF N 1 120 - FrameIndex XZWF O 1 121 - FrameIndex XZWF P 1 122 - FrameIndex XZWF Q 1 123 - FrameIndex XZWF R 1 124 - FrameIndex XZWF S 1 125 - FrameIndex XZWF T 1 126 - FrameIndex XZWF U 1 127 - FrameIndex XZWF V 1 128 - FrameIndex XZWF W 1 129 - // Melee - FrameIndex XZWF X 1 131 - FrameIndex XZWF Y 1 132 - FrameIndex XZWF Z 1 133 - FrameIndex XZWG A 1 134 - FrameIndex XZWG B 1 135 - FrameIndex XZWG C 1 136 - FrameIndex XZWG D 1 137 - FrameIndex XZWG E 1 138 - FrameIndex XZWG F 1 139 - FrameIndex XZWG G 1 140 - FrameIndex XZWG H 1 141 - FrameIndex XZWG I 1 142 - FrameIndex XZWG J 1 143 - FrameIndex XZWG K 1 144 - FrameIndex XZWG L 1 145 - FrameIndex XZWG M 1 146 - FrameIndex XZWG N 1 147 - FrameIndex XZWG O 1 148 - FrameIndex XZWG P 1 149 - FrameIndex XZWG Q 1 150 - ////// WARHEADS - SurfaceSkin 1 5 "HellblazerAmmo_Nuke.png" - SurfaceSkin 1 6 "" - SurfaceSkin 1 7 "" - SurfaceSkin 1 8 "HellblazerAmmo_Nuke.png" - // Still / Deselect - FrameIndex XZWG R 1 0 - FrameIndex XZWG S 1 1 - FrameIndex XZWG T 1 2 - FrameIndex XZWG U 1 3 - FrameIndex XZWG V 1 4 - FrameIndex XZWG W 1 5 - FrameIndex XZWG X 1 6 - FrameIndex XZWG Y 1 7 - FrameIndex XZWG Z 1 8 // Select - FrameIndex XZWH A 1 9 - FrameIndex XZWH B 1 10 - FrameIndex XZWH C 1 11 - FrameIndex XZWH D 1 12 - FrameIndex XZWH E 1 13 - FrameIndex XZWH F 1 14 - FrameIndex XZWH G 1 15 - // Fire - FrameIndex XZWH H 1 17 - FrameIndex XZWH I 1 18 - FrameIndex XZWH J 1 19 - FrameIndex XZWH K 1 20 - FrameIndex XZWH L 1 21 - FrameIndex XZWH M 1 22 - FrameIndex XZWH N 1 23 - // AltFire - FrameIndex XZWH O 1 25 - FrameIndex XZWH P 1 26 - FrameIndex XZWH Q 1 27 - FrameIndex XZWH R 1 28 - FrameIndex XZWH S 1 29 - FrameIndex XZWH T 1 30 - FrameIndex XZWH U 1 31 - // CycleStart/End - FrameIndex XZWH V 1 33 - // Cycle3 - FrameIndex XZWH W 1 48 - FrameIndex XZWH X 1 49 - FrameIndex XZWH Y 1 50 - FrameIndex XZWH Z 1 51 - FrameIndex XZWI A 1 52 - FrameIndex XZWI B 1 53 - FrameIndex XZWI C 1 54 - FrameIndex XZWI D 1 55 - FrameIndex XZWI E 1 56 - FrameIndex XZWI F 1 57 - // Unload - FrameIndex XZWI G 1 59 - FrameIndex XZWI H 1 60 - FrameIndex XZWI I 1 61 - FrameIndex XZWI J 1 62 - FrameIndex XZWI K 1 63 - FrameIndex XZWI L 1 64 - FrameIndex XZWI M 1 65 - FrameIndex XZWI N 1 66 - FrameIndex XZWI O 1 67 - FrameIndex XZWI P 1 68 - FrameIndex XZWI Q 1 69 - FrameIndex XZWI R 1 70 - FrameIndex XZWI S 1 71 - FrameIndex XZWI T 1 72 - FrameIndex XZWI U 1 73 - FrameIndex XZWI V 1 74 - FrameIndex XZWI W 1 75 - FrameIndex XZWI X 1 76 - FrameIndex XZWI Y 1 77 - FrameIndex XZWI Z 1 78 - FrameIndex XZWJ A 1 79 - FrameIndex XZWJ B 1 80 - FrameIndex XZWJ C 1 81 - FrameIndex XZWJ D 1 82 - FrameIndex XZWJ E 1 83 - FrameIndex XZWJ F 1 84 - // Load - FrameIndex XZWJ G 1 85 - FrameIndex XZWJ H 1 86 - FrameIndex XZWJ I 1 87 - FrameIndex XZWJ J 1 88 - FrameIndex XZWJ K 1 89 - FrameIndex XZWJ L 1 90 - FrameIndex XZWJ M 1 91 - FrameIndex XZWJ N 1 92 - FrameIndex XZWJ O 1 93 - FrameIndex XZWJ P 1 94 - FrameIndex XZWJ Q 1 95 - FrameIndex XZWJ R 1 96 - FrameIndex XZWJ S 1 97 - FrameIndex XZWJ T 1 98 - FrameIndex XZWJ U 1 99 - FrameIndex XZWJ V 1 100 - FrameIndex XZWJ W 1 101 - FrameIndex XZWJ X 1 102 - FrameIndex XZWJ Y 1 103 - FrameIndex XZWJ Z 1 104 - FrameIndex XZWK A 1 105 - FrameIndex XZWK B 1 106 - FrameIndex XZWK C 1 107 - FrameIndex XZWK D 1 108 - FrameIndex XZWK E 1 109 - FrameIndex XZWK F 1 110 - FrameIndex XZWK G 1 111 - // Idle - FrameIndex XZWK H 1 113 - FrameIndex XZWK I 1 114 - FrameIndex XZWK J 1 115 - FrameIndex XZWK K 1 116 - FrameIndex XZWK L 1 117 - FrameIndex XZWK M 1 118 - FrameIndex XZWK N 1 119 - FrameIndex XZWK O 1 120 - FrameIndex XZWK P 1 121 - FrameIndex XZWK Q 1 122 - FrameIndex XZWK R 1 123 - FrameIndex XZWK S 1 124 - FrameIndex XZWK T 1 125 - FrameIndex XZWK U 1 126 - FrameIndex XZWK V 1 127 - FrameIndex XZWK W 1 128 - FrameIndex XZWK X 1 129 - // Melee - FrameIndex XZWK Y 1 131 - FrameIndex XZWK Z 1 132 - FrameIndex XZWL A 1 133 - FrameIndex XZWL B 1 134 - FrameIndex XZWL C 1 135 - FrameIndex XZWL D 1 136 - FrameIndex XZWL E 1 137 - FrameIndex XZWL F 1 138 - FrameIndex XZWL G 1 139 - FrameIndex XZWL H 1 140 - FrameIndex XZWL I 1 141 - FrameIndex XZWL J 1 142 - FrameIndex XZWL K 1 143 - FrameIndex XZWL L 1 144 - FrameIndex XZWL M 1 145 - FrameIndex XZWL N 1 146 - FrameIndex XZWL O 1 147 - FrameIndex XZWL P 1 148 - FrameIndex XZWL Q 1 149 - FrameIndex XZWL R 1 150 - // ReloadInter - SurfaceSkin 1 5 "" - SurfaceSkin 1 6 "" - SurfaceSkin 1 7 "" - SurfaceSkin 1 8 "" - FrameIndex XZWR J 1 153 - FrameIndex XZWR K 1 154 - FrameIndex XZWR L 1 155 - FrameIndex XZWR M 1 156 - FrameIndex XZWR N 1 157 -} diff --git a/modeldef.itemgesture b/modeldef.itemgesture deleted file mode 100644 index 21ce2f2df..000000000 --- a/modeldef.itemgesture +++ /dev/null @@ -1,449 +0,0 @@ -Model "GenericCubeGesture" -{ - Path "models" - Model 0 "GenericCube1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "PerfectlyGeneric.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 -} -Model "AkariProjectGesture" -{ - Path "models" - Model 0 "AkariProject1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "AkariProject.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 -} -Model "LoveSignalsCDGesture" -{ - Path "models" - Model 0 "LoveSignalsCD1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "LoveSignals.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 -} -Model "NutatcoBarGesture" -{ - Path "models" - Model 0 "NutatcoBar1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "Nutatco.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 -} -Model "FrispyCornGesture" -{ - Path "models" - Model 0 "FrispyCorn1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "FrispyCorn.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 -} -Model "SayaBeanGesture" -{ - Path "models" - Model 0 "SayaBean1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "SayaBean.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 // Squish - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - FrameIndex XZW1 U 0 20 - FrameIndex XZW1 V 0 21 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 -} -Model "MothPlushyGesture" -{ - Path "models" - Model 0 "MothPlush1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "MothPlush.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - FrameIndex XZW1 U 0 20 - FrameIndex XZW1 V 0 21 - FrameIndex XZW1 W 0 22 - FrameIndex XZW1 X 0 23 - FrameIndex XZW1 Y 0 24 - FrameIndex XZW1 Z 0 25 - FrameIndex XZW2 A 0 26 - FrameIndex XZW2 B 0 27 - FrameIndex XZW2 C 0 28 - FrameIndex XZW2 D 0 29 -} -Model "DemoPlushGesture" -{ - Path "models" - Model 0 "DemoPlush1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DemoPlush.png" - SurfaceSkin 0 4 "DemoPlush2.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - FrameIndex XZW1 U 0 20 - FrameIndex XZW1 V 0 21 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 -} -Model "KirinCummiesGesture" -{ - Path "models" - Model 0 "TootFroot1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "TootFroot.png" - SurfaceSkin 0 4 "matcap/silvermap.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 -} -Model "MilkBreadsGesture" -{ - Path "models" - Model 0 "MilkBreads1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "MilkBreads.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 -} -Model "KirinMangaGesture" -{ - Path "models" - Model 0 "AkariProject1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "KirinManga.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 -} -Model "KirinPlushGesture" -{ - Path "models" - Model 0 "KirinPlush1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "KirinPlush.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 // bump - FrameIndex XZW1 Q 0 16 // smooch - FrameIndex XZW1 R 0 17 // giggle - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - FrameIndex XZW1 U 0 20 - FrameIndex XZW1 V 0 21 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 // demo giggle - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 -} diff --git a/modeldef.keygesture b/modeldef.keygesture deleted file mode 100644 index 64547ad90..000000000 --- a/modeldef.keygesture +++ /dev/null @@ -1,1700 +0,0 @@ -Model "SWWMRedCardGesture" -{ - Path "models" - Model 0 "DoomCard1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomRedKey.png" - SurfaceSkin 0 4 "DoomKeyLight3.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMRedCardGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMYellowCardGesture" -{ - Path "models" - Model 0 "DoomCard1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomYellowKey.png" - SurfaceSkin 0 4 "DoomKeyLight3.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMYellowCardGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMBlueCardGesture" -{ - Path "models" - Model 0 "DoomCard1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomBlueKey.png" - SurfaceSkin 0 4 "DoomKeyLight3.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMBlueCardGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMSilverCardGesture" -{ - Path "models" - Model 0 "DoomCard1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomSilverKey.png" - SurfaceSkin 0 4 "DoomKeyLight3.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMSilverCardGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMGreenCardGesture" -{ - Path "models" - Model 0 "DoomCard1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomGreenKey.png" - SurfaceSkin 0 4 "DoomKeyLight3.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMGreenCardGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMOrangeCardGesture" -{ - Path "models" - Model 0 "DoomCard1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomOrangeKey.png" - SurfaceSkin 0 4 "DoomKeyLight3.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMOrangeCardGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMRedSkullGesture" -{ - Path "models" - Model 0 "DoomSkull1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomRedSkull.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMRedSkullGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMYellowSkullGesture" -{ - Path "models" - Model 0 "DoomSkull1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomYellowSkull.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMYellowSkullGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMBlueSkullGesture" -{ - Path "models" - Model 0 "DoomSkull1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomBlueSkull.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMBlueSkullGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMPurpleSkullGesture" -{ - Path "models" - Model 0 "DoomSkull1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "DoomPurpleSkull.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMPurpleSkullGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMGreenKeyGesture" -{ - Path "models" - Model 0 "HereticGreen1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "matcap/greenmap.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMGreenKeyGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMBlueKeyGesture" -{ - Path "models" - Model 0 "HereticBlue1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "matcap/blumap.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMBlueKeyGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMYellowKeyGesture" -{ - Path "models" - Model 0 "HereticYellow1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "matcap/goldmap.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMYellowKeyGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} -Model "SWWMRedKeyGesture" -{ - Path "models" - Model 0 "HereticRed1st_d.3d" - SurfaceSkin 0 0 "DemoTags.png" - SurfaceSkin 0 1 "DemoArms.png" - SurfaceSkin 0 2 "DemoSoft.png" - SurfaceSkin 0 3 "matcap/redmap.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Base - FrameIndex XZW1 A 0 0 - // Pickup - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - FrameIndex XZW1 N 0 13 - FrameIndex XZW1 O 0 14 - FrameIndex XZW1 P 0 15 - FrameIndex XZW1 Q 0 16 - FrameIndex XZW1 R 0 17 - FrameIndex XZW1 S 0 18 - FrameIndex XZW1 T 0 19 - // Use 1 - FrameIndex XZW1 U 0 21 - FrameIndex XZW1 V 0 22 - FrameIndex XZW1 W 0 23 - FrameIndex XZW1 X 0 24 - FrameIndex XZW1 Y 0 25 - FrameIndex XZW1 Z 0 26 - FrameIndex XZW2 A 0 27 - FrameIndex XZW2 B 0 28 - FrameIndex XZW2 C 0 29 - FrameIndex XZW2 D 0 30 - FrameIndex XZW2 E 0 31 - FrameIndex XZW2 F 0 32 - FrameIndex XZW2 G 0 33 - FrameIndex XZW2 H 0 34 - FrameIndex XZW2 I 0 35 - FrameIndex XZW2 J 0 36 - FrameIndex XZW2 K 0 37 - FrameIndex XZW2 L 0 38 - FrameIndex XZW2 M 0 39 - FrameIndex XZW2 N 0 40 - FrameIndex XZW2 O 0 41 - FrameIndex XZW2 P 0 42 - FrameIndex XZW2 Q 0 43 - FrameIndex XZW2 R 0 44 - // Use 2 - FrameIndex XZW2 S 0 46 - FrameIndex XZW2 T 0 47 - FrameIndex XZW2 U 0 48 - FrameIndex XZW2 V 0 49 - FrameIndex XZW2 W 0 51 - FrameIndex XZW2 X 0 52 - FrameIndex XZW2 Y 0 53 - FrameIndex XZW2 Z 0 54 - FrameIndex XZW3 A 0 55 - FrameIndex XZW3 B 0 56 - FrameIndex XZW3 C 0 57 - FrameIndex XZW3 D 0 58 - FrameIndex XZW3 E 0 59 - FrameIndex XZW3 F 0 60 - FrameIndex XZW3 G 0 61 - FrameIndex XZW3 H 0 62 - FrameIndex XZW3 I 0 63 - FrameIndex XZW3 J 0 64 - FrameIndex XZW3 K 0 65 - FrameIndex XZW3 L 0 66 - FrameIndex XZW3 M 0 67 - FrameIndex XZW3 N 0 68 - FrameIndex XZW3 O 0 69 - FrameIndex XZW3 P 0 70 - FrameIndex XZW3 Q 0 71 - FrameIndex XZW3 R 0 72 - FrameIndex XZW3 S 0 73 - FrameIndex XZW3 T 0 74 - FrameIndex XZW3 U 0 75 - FrameIndex XZW3 V 0 76 - FrameIndex XZW3 W 0 77 - FrameIndex XZW3 X 0 78 - FrameIndex XZW3 Y 0 79 -} -Model "SWWMRedKeyGesture" -{ - Path "models" - Model 1 "QuickPunch1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Punch - FrameIndex XZW0 A 1 0 - FrameIndex XZW0 B 1 1 - FrameIndex XZW0 C 1 2 - FrameIndex XZW0 D 1 3 - FrameIndex XZW0 E 1 4 - FrameIndex XZW0 F 1 5 - FrameIndex XZW0 G 1 6 - FrameIndex XZW0 H 1 7 - FrameIndex XZW0 I 1 8 - FrameIndex XZW0 J 1 9 - FrameIndex XZW0 K 1 10 - FrameIndex XZW0 L 1 11 - FrameIndex XZW0 M 1 12 - FrameIndex XZW0 N 1 13 -} diff --git a/modeldef.keys b/modeldef.keys deleted file mode 100644 index 65de32746..000000000 --- a/modeldef.keys +++ /dev/null @@ -1,259 +0,0 @@ -Model "SWWMRedCard" -{ - Path "models" - Model 0 "DoomKeycard_d.3d" - SurfaceSkin 0 0 "DoomRedKey.png" - Scale 0.035 0.035 0.035 - AngleOffset 90 - PitchOffset 15 - ZOffset 16 - ROTATING - - SurfaceSkin 0 1 "DoomKeyLight2.png" - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "DoomKeyLight.png" - FrameIndex XZW1 B 0 0 -} -Model "SWWMYellowCard" -{ - Path "models" - Model 0 "DoomKeycard_d.3d" - SurfaceSkin 0 0 "DoomYellowKey.png" - Scale 0.035 0.035 0.035 - AngleOffset 90 - PitchOffset 15 - ZOffset 16 - ROTATING - - SurfaceSkin 0 1 "DoomKeyLight2.png" - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "DoomKeyLight.png" - FrameIndex XZW1 B 0 0 -} -Model "SWWMBlueCard" -{ - Path "models" - Model 0 "DoomKeycard_d.3d" - SurfaceSkin 0 0 "DoomBlueKey.png" - Scale 0.035 0.035 0.035 - AngleOffset 90 - PitchOffset 15 - ZOffset 16 - ROTATING - - SurfaceSkin 0 1 "DoomKeyLight2.png" - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "DoomKeyLight.png" - FrameIndex XZW1 B 0 0 -} -Model "SWWMGreenCard" -{ - Path "models" - Model 0 "DoomKeycard_d.3d" - SurfaceSkin 0 0 "DoomGreenKey.png" - Scale 0.035 0.035 0.035 - AngleOffset 90 - PitchOffset 15 - ZOffset 16 - ROTATING - - SurfaceSkin 0 1 "DoomKeyLight2.png" - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "DoomKeyLight.png" - FrameIndex XZW1 B 0 0 -} -Model "SWWMSilverCardKDiZD" -{ - Path "models" - Model 0 "DoomKeycard_d.3d" - SurfaceSkin 0 0 "DoomSilverKey.png" - Scale 0.035 0.035 0.035 - AngleOffset 90 - PitchOffset 15 - ZOffset 16 - ROTATING - - SurfaceSkin 0 1 "DoomKeyLight2.png" - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "DoomKeyLight.png" - FrameIndex XZW1 B 0 0 -} -Model "SWWMGreenCardKDiZD" -{ - Path "models" - Model 0 "DoomKeycard_d.3d" - SurfaceSkin 0 0 "DoomGreenKey.png" - Scale 0.035 0.035 0.035 - AngleOffset 90 - PitchOffset 15 - ZOffset 16 - ROTATING - - SurfaceSkin 0 1 "DoomKeyLight2.png" - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "DoomKeyLight.png" - FrameIndex XZW1 B 0 0 -} -Model "SWWMOrangeCardKDiZD" -{ - Path "models" - Model 0 "DoomKeycard_d.3d" - SurfaceSkin 0 0 "DoomOrangeKey.png" - Scale 0.035 0.035 0.035 - AngleOffset 90 - PitchOffset 15 - ZOffset 16 - ROTATING - - SurfaceSkin 0 1 "DoomKeyLight2.png" - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "DoomKeyLight.png" - FrameIndex XZW1 B 0 0 -} - -Model "SWWMRedSkull" -{ - Path "models" - Model 0 "DoomSkullKey_d.3d" - Skin 0 "DoomRedSkull.png" - Scale 0.035 0.035 0.035 - RollOffset 15 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SWWMBlueSkull" -{ - Path "models" - Model 0 "DoomSkullKey_d.3d" - Skin 0 "DoomBlueSkull.png" - Scale 0.035 0.035 0.035 - RollOffset 15 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SWWMYellowSkull" -{ - Path "models" - Model 0 "DoomSkullKey_d.3d" - Skin 0 "DoomYellowSkull.png" - Scale 0.035 0.035 0.035 - RollOffset 15 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SWWMPurpleSkull" -{ - Path "models" - Model 0 "DoomSkullKey_d.3d" - Skin 0 "DoomPurpleSkull.png" - Scale 0.035 0.035 0.035 - RollOffset 15 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "SWWMFakeRedSkull" -{ - Path "models" - Model 0 "DoomSkullKey_d.3d" - Skin 0 "DoomRedSkull.png" - Scale 0.035 0.035 0.035 - RollOffset 35 - AngleOffset 244 - ZOffset 5 - - FrameIndex XZW1 A 0 0 -} -Model "SWWMFakeBlueSkull" -{ - Path "models" - Model 0 "DoomSkullKey_d.3d" - Skin 0 "DoomBlueSkull.png" - Scale 0.035 0.035 0.035 - RollOffset 35 - AngleOffset 225 - ZOffset 5 - - FrameIndex XZW1 A 0 0 -} -Model "SWWMFakeYellowSkull" -{ - Path "models" - Model 0 "DoomSkullKey_d.3d" - Skin 0 "DoomYellowSkull.png" - Scale 0.035 0.035 0.035 - RollOffset 35 - AngleOffset 135 - ZOffset 5 - - FrameIndex XZW1 A 0 0 -} -Model "SWWMFakePurpleSkull" -{ - Path "models" - Model 0 "DoomSkullKey_d.3d" - Skin 0 "DoomPurpleSkull.png" - Scale 0.035 0.035 0.035 - RollOffset 35 - AngleOffset 116 - ZOffset 5 - - FrameIndex XZW1 A 0 0 -} - -Model "SWWMKeyGreen" -{ - Path "models" - Model 0 "HereticGreenKey_d.3d" - Skin 0 "matcap/greenmap.png" - Scale 0.05 0.05 0.05 - RollOffset 15 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SWWMKeyBlue" -{ - Path "models" - Model 0 "HereticBlueKey_d.3d" - Skin 0 "matcap/blumap.png" - Scale 0.04 0.04 0.04 - RollOffset 15 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SWWMKeyYellow" -{ - Path "models" - Model 0 "HereticYellowKey_d.3d" - Skin 0 "matcap/goldmap.png" - Scale 0.05 0.05 0.05 - RollOffset 15 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SWWMKeyRed" -{ - Path "models" - Model 0 "HereticRedKey_d.3d" - Skin 0 "matcap/redmap.png" - Scale 0.05 0.05 0.05 - RollOffset 15 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.misc b/modeldef.misc deleted file mode 100644 index 264d9fe1f..000000000 --- a/modeldef.misc +++ /dev/null @@ -1,306 +0,0 @@ -Model "Unknown" -{ - Path "models" - - Model 0 "extra/IAmError_d.3d" - Skin 0 "matcap/errormap.png" - Scale 0.0625 0.0625 0.0625 - AngleOffset 90 - ZOffset 32 - FrameIndex UNKN A 0 0 -} - -Model "FancyConfetti" -{ - Path "models" - - Model 0 "extra/Flat_d.3d" - Scale 0.003 0.003 0.003 - ZOffset 1 - USEACTORPITCH - USEACTORROLL - - Skin 0 "matcap/goldmap.png" - FrameIndex XZW1 A 0 0 - Skin 0 "matcap/blumap.png" - FrameIndex XZW1 B 0 0 - Skin 0 "matcap/darkmap.png" - FrameIndex XZW1 C 0 0 - Skin 0 "matcap/greenmap.png" - FrameIndex XZW1 D 0 0 - Skin 0 "matcap/invincimap.png" - FrameIndex XZW1 E 0 0 - Skin 0 "matcap/pinkmap.png" - FrameIndex XZW1 F 0 0 - Skin 0 "matcap/purpmap.png" - FrameIndex XZW1 G 0 0 - Skin 0 "matcap/ragemap.png" - FrameIndex XZW1 H 0 0 - Skin 0 "matcap/redmap.png" - FrameIndex XZW1 I 0 0 - Skin 0 "matcap/silvermap.png" - FrameIndex XZW1 J 0 0 - Skin 0 "matcap/dekamap.png" - FrameIndex XZW1 K 0 0 - Skin 0 "matcap/glassmap.png" - FrameIndex XZW1 L 0 0 - Skin 0 "matcap/leadmap.png" - FrameIndex XZW1 M 0 0 - Skin 0 "matcap/puromap.png" - FrameIndex XZW1 N 0 0 -} - -Model "SWWMSparkTrail" -{ - Path "models/extra" - - Model 0 "YBeam.obj" - Skin 0 "ChunkTrail.png" - Scale 1 1 0.6 - USEACTORPITCH - USEACTORROLL - DONTCULLBACKFACES - - FrameIndex XZW1 A 0 0 -} - -Model "SWWMChip" -{ - Path "models" - - Model 0 "Chunky_d.3d" - Skin 0 "Chunky.png" - Scale 0.02 0.02 0.02 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - ZOffset 0.2 - FrameIndex XZW2 A 0 0 - FrameIndex XZW2 B 0 1 - FrameIndex XZW2 C 0 2 - FrameIndex XZW2 D 0 3 - FrameIndex XZW2 E 0 4 - FrameIndex XZW2 F 0 5 - FrameIndex XZW2 G 0 6 - FrameIndex XZW2 H 0 7 -} - -Model "mkBloodDrop" -{ - Path "models/extra" - Model 0 "flat_d.3d" - Scale 0.06 0.06 0.06 - ZOffset 0.1 - USEACTORPITCH - USEACTORROLL - DONTCULLBACKFACES - - Skin 0 "BloodDrop1.png" - FrameIndex SBLD F 0 0 - Skin 0 "BloodDrop2.png" - FrameIndex SBLD G 0 0 - Skin 0 "BloodDrop3.png" - FrameIndex SBLD H 0 0 - Skin 0 "BloodDrop4.png" - FrameIndex SBLD I 0 0 -} - -Model "RadiusDebugSphere" -{ - Path "models/extra" - Model 0 "UnitSphere.obj" - Scale 1.0 1.0 1.0 - - FrameIndex XZW1 A 0 0 -} - -Model "DemolitionistRadiusShockwave" -{ - Path "models/extra" - Model 0 "flat_d.3d" - Skin 0 "Shockwave.png" - Scale 1.0 0.06 0.015 - RollOffset 90 - AngleOffset 90 - ZOffset 4 - USEACTORPITCH - DONTCULLBACKFACES - - FrameIndex XZW1 A 0 0 -} -Model "DemolitionistRadiusShockwaveTail" -{ - Path "models/extra" - Model 0 "flat_d.3d" - Skin 0 "Shockwave.png" - Scale 1.0 0.06 0.015 - RollOffset 90 - AngleOffset 90 - ZOffset 4 - USEACTORPITCH - DONTCULLBACKFACES - - FrameIndex XZW1 A 0 0 -} - -Model "MykradvoTendril" -{ - Path "models/extra" - - Model 0 "WarpBeam3_d.3d" - Skin 0 "AnomTrail.png" - Scale 0.25 0.25 0.25 - Offset 32 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // base - FrameIndex XZW1 A 0 0 - // low deviation - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - // mid deviation - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - // high deviation - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 -} -Model "MykradvoSmallTendril" -{ - Path "models/extra" - - Model 0 "WarpBeam2_d.3d" - Skin 0 "AnomTrail.png" - Scale 0.0625 0.125 0.125 - Offset 8 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // base - FrameIndex XZW1 A 0 0 - // low deviation - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - // mid deviation - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - // high deviation - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 -} -Model "MykradvoSmallNullTendril" -{ - Path "models/extra" - - Model 0 "WarpBeam2_d.3d" - Skin 0 "AnomTrail.png" - Scale 0.03125 0.0625 0.0625 - Offset 4 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // base - FrameIndex XZW1 A 0 0 - // low deviation - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - // mid deviation - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - // high deviation - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 -} - -Model "SWWMShadow" -{ - Path "models/extra" - Model 0 "flat_d.3d" - Skin 0 "BlobShadow.png" - Scale 0.06 0.06 0.06 - ZOffset 0.1 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "ShinemapDebugSphere" -{ - Path "models" - Model 0 "extra/UnitSphere.obj" - Scale 16.0 16.0 16.0 - ZOffset 32 - DONTCULLBACKFACES - - Skin 0 "matcap/barriermap.png" - FrameIndex XZW1 A 0 0 - Skin 0 "matcap/blumap.png" - FrameIndex XZW1 B 0 0 - Skin 0 "matcap/darkmap.png" - FrameIndex XZW1 C 0 0 - Skin 0 "matcap/dekamap.png" - FrameIndex XZW1 D 0 0 - Skin 0 "matcap/errormap.png" - FrameIndex XZW1 E 0 0 - Skin 0 "matcap/glassmap.png" - FrameIndex XZW1 F 0 0 - Skin 0 "matcap/goldmap.png" - FrameIndex XZW1 G 0 0 - Skin 0 "matcap/greenmap.png" - FrameIndex XZW1 H 0 0 - Skin 0 "matcap/invincimap.png" - FrameIndex XZW1 I 0 0 - Skin 0 "matcap/kinymap.png" - FrameIndex XZW1 J 0 0 - Skin 0 "matcap/leadmap.png" - FrameIndex XZW1 K 0 0 - Skin 0 "matcap/nkrknmap.png" - FrameIndex XZW1 L 0 0 - Skin 0 "matcap/nokromap.png" - FrameIndex XZW1 M 0 0 - Skin 0 "matcap/pearlmap.png" - FrameIndex XZW1 N 0 0 - Skin 0 "matcap/pinkmap.png" - FrameIndex XZW1 O 0 0 - Skin 0 "matcap/puromap.png" - FrameIndex XZW1 P 0 0 - Skin 0 "matcap/purpmap.png" - FrameIndex XZW1 Q 0 0 - Skin 0 "matcap/ragemap.png" - FrameIndex XZW1 R 0 0 - Skin 0 "matcap/redmap.png" - FrameIndex XZW1 S 0 0 - Skin 0 "matcap/silvermap.png" - FrameIndex XZW1 T 0 0 -} diff --git a/modeldef.mortalrifle b/modeldef.mortalrifle deleted file mode 100644 index b061c084e..000000000 --- a/modeldef.mortalrifle +++ /dev/null @@ -1,13 +0,0 @@ -Model "MisterRifle" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.05 0.05 0.05 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.newsparkster b/modeldef.newsparkster deleted file mode 100644 index 2feb8cc2f..000000000 --- a/modeldef.newsparkster +++ /dev/null @@ -1,13 +0,0 @@ -Model "ModernSparkster" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.05 0.05 0.05 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.pickups b/modeldef.pickups deleted file mode 100644 index 5b7c40940..000000000 --- a/modeldef.pickups +++ /dev/null @@ -1,340 +0,0 @@ -Model "ArmorNuggetItem" -{ - Path "models" - Model 0 "Nugget_d.3d" - Skin 0 "Nugget_Armor.png" - Scale 0.02 0.02 0.02 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 -} -Model "HealthNuggetItem" -{ - Path "models" - Model 0 "Nugget_d.3d" - Skin 0 "Nugget.png" - Scale 0.02 0.02 0.02 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 -} - -Model "TetraHealthItem" -{ - Path "models" - Model 0 "TetraHealth_d.3d" - Skin 0 "TetraHealth.png" - Scale 0.03 0.03 0.03 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "CubeHealthItem" -{ - Path "models" - Model 0 "CubeHealth_d.3d" - Skin 0 "CubeHealth.png" - Scale 0.025 0.025 0.025 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "RefresherItem" -{ - Path "models" - Model 0 "Refresher_d.3d" - Skin 0 "Refresher.png" - Scale 0.04 0.04 0.04 - ZOffset 16 - RollOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "BlastSuitItem" -{ - Path "models" - Model 0 "BlastSuit_d.3d" - Skin 0 "BlastSuit.png" - Scale 0.05 0.05 0.05 - ZOffset 20 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "WarArmorItem" -{ - Path "models" - Model 0 "WarArmor_d.3d" - Skin 0 "WarArmor.png" - Scale 0.07 0.07 0.07 - ZOffset 20 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "GrilledCheeseSandwich" -{ - Path "models" - Model 0 "Sandwich_d.3d" - SurfaceSkin 0 0 "matcap/goldmap.png" - SurfaceSkin 0 1 "Sandwich.png" - Scale 0.04 0.04 0.04 - PitchOffset -45 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "GhostArtifact" -{ - Path "models" - Model 0 "GhostArtifact_d.3d" - SurfaceSkin 0 1 "GhostArtifact.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "GhostArtifactX" -{ - Path "models" - Model 0 "GhostArtifact_d.3d" - SurfaceSkin 0 0 "matcap/darkmap.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - - FrameIndex XZW1 A 0 0 -} - -Model "GravitySuppressor" -{ - Path "models" - Model 0 "Gravity_d.3d" - SurfaceSkin 0 0 "Gravity.png" - Scale 0.06 0.06 0.06 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "GravityX" -{ - Path "models" - Model 0 "Gravity_d.3d" - SurfaceSkin 0 1 "matcap/silvermap.png" - Scale 0.06 0.06 0.06 - ZOffset 16 - - FrameIndex XZW1 A 0 0 -} - -Model "FuckingInvinciball" -{ - Path "models" - Model 0 "Invinciball_d.3d" - SurfaceSkin 0 0 "Invinciball.png" - Scale 0.04 0.04 0.04 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "InvinciballX" -{ - Path "models" - Model 0 "Invinciball_d.3d" - SurfaceSkin 0 1 "matcap/invincimap.png" - Scale 0.04 0.04 0.04 - ZOffset 16 - - FrameIndex XZW1 A 0 0 -} - -Model "Ragekit" -{ - Path "models" - Model 0 "Ragekit_d.3d" - SurfaceSkin 0 0 "Ragekit.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "RagekitX" -{ - Path "models" - Model 0 "Ragekit_d.3d" - SurfaceSkin 0 1 "matcap/ragemap.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - - FrameIndex XZW1 A 0 0 -} - -Model "Omnisight" -{ - Path "models" - Model 0 "Omnisight_d.3d" - Skin 0 "Omnisight.png" - Scale 0.04 0.04 0.04 - RollOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "LampMoth" -{ - Path "models" - Model 0 "Moth_d.3d" - Skin 0 "Moth.png" - Scale 0.005 0.005 0.005 - ZOffset 0.5 - USEACTORPITCH - DONTCULLBACKFACES - - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 -} -Model "LampMoth2" -{ - Path "models" - Model 0 "Moth_d.3d" - Skin 0 "Moth_Mashiro.png" - Scale 0.008 0.008 0.008 - ZOffset 0.5 - USEACTORPITCH - DONTCULLBACKFACES - - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 -} - -Model "CompanionLamp" -{ - Path "models" - Model 0 "Lamp_d.3d" - Skin 0 "Lamp_off.png" - Scale 0.03 0.03 0.03 - ZOffset 8 - - FrameIndex XZW1 A 0 0 - Skin 0 "Lamp.png" - FrameIndex XZW1 B 0 0 -} - -Model "SWWMLamp" -{ - Path "models" - Model 0 "Lamp_d.3d" - Skin 0 "Lamp_off.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "EBarrier" -{ - Path "models" - Model 0 "Barrier_d.3d" - SurfaceSkin 0 0 "Barrier.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "EBarrierX" -{ - Path "models" - Model 0 "Barrier_d.3d" - SurfaceSkin 0 1 "matcap/barriermap.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - DONTCULLBACKFACES - - FrameIndex XZW1 A 0 0 -} -Model "MykradvoX2" -{ - Path "models/extra" - Model 0 "Flat_d.3d" - Skin 0 "AnomRingies.png" - Scale 0.08 0.08 0.08 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - AngleOffset 180 - FrameIndex XZW1 B 0 0 -} -Model "SafetyTether" -{ - Path "models" - - Model 0 "SafetyTether_d.3d" - Skin 0 "SafetyTether_off.png" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 - Skin 0 "SafetyTether.png" - FrameIndex XZW1 B 0 0 -} -Model "AngerySigil" -{ - Path "models" - - Model 0 "DevaSigil_d.3d" - Skin 0 "DevaSigil.png" - Scale 0.07 0.07 0.07 - ZOffset 20 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "DivineSprite" -{ - Path "models" - - Model 0 "DivineSprite_d.3d" - Skin 0 "DivineSprite.png" - Scale 0.03 0.03 0.03 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.plasmablast b/modeldef.plasmablast deleted file mode 100644 index 560f0c5ae..000000000 --- a/modeldef.plasmablast +++ /dev/null @@ -1,13 +0,0 @@ -Model "PlasmaBlast" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.04 0.04 0.04 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.puntzerbeta b/modeldef.puntzerbeta deleted file mode 100644 index d834de2b3..000000000 --- a/modeldef.puntzerbeta +++ /dev/null @@ -1,13 +0,0 @@ -Model "PuntzerBeta" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.04 0.04 0.04 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.puntzergamma b/modeldef.puntzergamma deleted file mode 100644 index bbabcb626..000000000 --- a/modeldef.puntzergamma +++ /dev/null @@ -1,13 +0,0 @@ -Model "PuntzerGamma" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.045 0.045 0.045 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.pusher b/modeldef.pusher deleted file mode 100644 index b7ca22e7d..000000000 --- a/modeldef.pusher +++ /dev/null @@ -1,151 +0,0 @@ -Model "PusherProjectile" -{ - Path "models" - - Model 0 "PusherPickup_d.3d" - Skin 0 "Pusher.png" - Scale 0.15 0.15 0.15 - ZOffset 5 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "PusherWeapon" -{ - Path "models" - - Model 0 "PusherPickup_d.3d" - Skin 0 "Pusher.png" - Scale 0.15 0.15 0.15 - AngleOffset 180 - ZOffset 20 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "PusherWeapon" -{ - Path "models" - - Model 1 "Pusher1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Pusher.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - Offset 2 0 1 - - // Still / Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - // DeselectEnd / Select - FrameIndex XZW2 G 1 6 - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - // FireStart - FrameIndex XZW2 M 1 13 - // Fire - FrameIndex XZW2 N 1 14 - FrameIndex XZW2 O 1 15 - FrameIndex XZW2 P 1 16 - FrameIndex XZW2 Q 1 17 - FrameIndex XZW2 R 1 18 - FrameIndex XZW2 S 1 19 - // FireEnd - FrameIndex XZW2 T 1 21 - // AltFire - FrameIndex XZW2 U 1 23 - FrameIndex XZW2 V 1 24 - FrameIndex XZW2 W 1 25 - FrameIndex XZW2 X 1 26 - FrameIndex XZW2 Y 1 27 - FrameIndex XZW2 Z 1 28 - FrameIndex XZW3 A 1 29 - FrameIndex XZW3 B 1 30 - FrameIndex XZW3 C 1 31 - FrameIndex XZW3 D 1 32 - FrameIndex XZW3 E 1 33 - FrameIndex XZW3 F 1 34 - FrameIndex XZW3 G 1 35 - FrameIndex XZW3 H 1 36 - // AltFireRelease - FrameIndex XZW5 R 1 37 // oops, forgot this frame - FrameIndex XZW3 I 1 38 - FrameIndex XZW3 J 1 39 - FrameIndex XZW3 K 1 40 - FrameIndex XZW3 L 1 41 - FrameIndex XZW3 M 1 42 - FrameIndex XZW3 N 1 43 - FrameIndex XZW3 O 1 44 - FrameIndex XZW3 P 1 45 - // AltFireMiss - SurfaceSkin 1 3 "" - FrameIndex XZW3 Q 1 47 - FrameIndex XZW3 R 1 48 - FrameIndex XZW3 S 1 49 - FrameIndex XZW3 T 1 50 - FrameIndex XZW3 U 1 51 - FrameIndex XZW3 V 1 52 - FrameIndex XZW3 W 1 53 - SurfaceSkin 1 3 "Pusher.png" - // Idle - FrameIndex XZW3 X 1 55 - FrameIndex XZW3 Y 1 56 - FrameIndex XZW3 Z 1 57 - FrameIndex XZW4 A 1 58 - FrameIndex XZW4 B 1 59 - FrameIndex XZW4 C 1 60 - FrameIndex XZW4 D 1 61 - FrameIndex XZW4 E 1 62 - FrameIndex XZW4 F 1 63 - FrameIndex XZW4 G 1 64 - FrameIndex XZW4 H 1 65 - FrameIndex XZW4 I 1 66 - FrameIndex XZW4 J 1 67 - FrameIndex XZW4 K 1 68 - FrameIndex XZW4 L 1 69 - FrameIndex XZW4 M 1 70 - FrameIndex XZW4 N 1 71 - FrameIndex XZW4 O 1 72 - FrameIndex XZW4 P 1 73 - FrameIndex XZW4 Q 1 74 - FrameIndex XZW4 R 1 75 - FrameIndex XZW4 S 1 76 - FrameIndex XZW4 T 1 77 - FrameIndex XZW4 U 1 78 - FrameIndex XZW4 V 1 79 - FrameIndex XZW4 W 1 80 - FrameIndex XZW4 X 1 81 - FrameIndex XZW4 Y 1 82 - FrameIndex XZW4 Z 1 83 - // Melee - FrameIndex XZW5 A 1 85 - FrameIndex XZW5 B 1 86 - FrameIndex XZW5 C 1 87 - FrameIndex XZW5 D 1 88 - FrameIndex XZW5 E 1 89 - FrameIndex XZW5 F 1 90 - FrameIndex XZW5 G 1 91 - FrameIndex XZW5 H 1 92 - FrameIndex XZW5 I 1 93 - FrameIndex XZW5 J 1 94 - FrameIndex XZW5 K 1 95 - FrameIndex XZW5 L 1 96 - FrameIndex XZW5 M 1 97 - FrameIndex XZW5 N 1 98 - FrameIndex XZW5 O 1 99 - FrameIndex XZW5 P 1 100 - FrameIndex XZW5 Q 1 101 -} diff --git a/modeldef.quadravol b/modeldef.quadravol deleted file mode 100644 index 2cd0ae4e2..000000000 --- a/modeldef.quadravol +++ /dev/null @@ -1,13 +0,0 @@ -Model "Quadravol" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.05 0.05 0.05 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.rafankos b/modeldef.rafankos deleted file mode 100644 index 2de18920d..000000000 --- a/modeldef.rafankos +++ /dev/null @@ -1,13 +0,0 @@ -Model "RafanKos" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.055 0.055 0.055 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.raykhom b/modeldef.raykhom deleted file mode 100644 index 269b440c4..000000000 --- a/modeldef.raykhom +++ /dev/null @@ -1,13 +0,0 @@ -Model "RayKhom" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.055 0.055 0.055 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.sheenhmg b/modeldef.sheenhmg deleted file mode 100644 index 3931ee5ed..000000000 --- a/modeldef.sheenhmg +++ /dev/null @@ -1,13 +0,0 @@ -Model "HeavyMahSheenGun" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILR" - Scale 0.05 0.05 0.05 - ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.silverbullet b/modeldef.silverbullet deleted file mode 100644 index f715477d0..000000000 --- a/modeldef.silverbullet +++ /dev/null @@ -1,483 +0,0 @@ -Model "SilverBulletCasing" -{ - Path "models" - - Model 0 "SilverbulletCase_d.3d" - Skin 0 "SilverbulletBullet_Used.png" - Scale 0.04 0.04 0.04 - AngleOffset 90 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} -Model "SilverBulletCasing2" -{ - Path "models" - - Model 0 "SilverbulletCase_FCB_d.3d" - Skin 0 "SilverbulletBullet_FCB_Used.png" - Scale 0.04 0.04 0.04 - AngleOffset 90 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} -Model "SilverBulletMag" -{ - Path "models" - - Model 0 "SilverbulletMag_d.3d" - Skin 0 "SilverbulletAmmo_EmptyMag.png" - Scale 0.2 0.2 0.2 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - RollOffset 90 - ZOffset 1.8 - FrameIndex XZW1 B 0 0 - RollOffset -90 - FrameIndex XZW1 C 0 0 -} -Model "SilverBulletMag2" -{ - Path "models" - - Model 0 "SilverbulletMag_d.3d" - Skin 0 "SilverbulletAmmo_FCB_EmptyMag.png" - Scale 0.2 0.2 0.2 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - RollOffset 90 - ZOffset 1.8 - FrameIndex XZW1 B 0 0 - RollOffset -90 - FrameIndex XZW1 C 0 0 -} - -Model "SilverBullet" -{ - Path "models" - - Model 0 "SilverbulletPickup_d.3d" - SurfaceSkin 0 0 "Silverbullet.png" - SurfaceSkin 0 1 "SilverbulletAmmo.png" - Scale 0.25 0.25 0.25 - AngleOffset 180 - ZOffset 24 - ROTATING - - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "SilverbulletAmmo_FCB.png" - FrameIndex XZW1 B 0 0 -} - -Model "SilverBullet" -{ - Path "models/extra" - - Model 3 "Flat_d.3d" - Skin 3 "SilverMuz.png" - RollOffset 90 - AngleOffset 90 - Scale 0.48 0.24 0.24 - Offset 12 -90 -12 - - FrameIndex XZWZ A 3 0 -} - -Model "SilverBullet" -{ - Path "models" - - Model 2 "Silverbullet1st_d.3d" - AngleOffset -90 - Scale -0.005 0.0025 0.005 - DONTCULLBACKFACES - - // Casing (XSB) - SurfaceSkin 2 5 "SilverbulletBullet_Used.png" - FrameIndex XZW7 D 2 30 - FrameIndex XZW7 E 2 31 - FrameIndex XZW7 F 2 32 - FrameIndex XZW7 G 2 33 - FrameIndex XZW7 H 2 34 - FrameIndex XZW7 I 2 35 - FrameIndex XZW7 J 2 36 - FrameIndex XZW7 K 2 37 - FrameIndex XZW7 L 2 38 - FrameIndex XZW7 M 2 39 - FrameIndex XZW7 N 2 40 - FrameIndex XZW7 O 2 41 - // Casing (FCB) - SurfaceSkin 2 5 "SilverbulletBullet_FCB_Used.png" - FrameIndex XZWD D 2 30 - FrameIndex XZWD E 2 31 - FrameIndex XZWD F 2 32 - FrameIndex XZWD G 2 33 - FrameIndex XZWD H 2 34 - FrameIndex XZWD I 2 35 - FrameIndex XZWD J 2 36 - FrameIndex XZWD K 2 37 - FrameIndex XZWD L 2 38 - FrameIndex XZWD M 2 39 - FrameIndex XZWD N 2 40 - FrameIndex XZWD O 2 41 - // Jets - SurfaceSkin 2 5 "" - SurfaceSkin 2 6 "SilverbulletJetSmoke.png" - FrameIndex XZW7 P 2 16 - FrameIndex XZW7 Q 2 17 - FrameIndex XZW7 R 2 18 - FrameIndex XZW7 S 2 19 - FrameIndex XZW7 T 2 20 - FrameIndex XZW7 U 2 21 - FrameIndex XZW7 V 2 22 - FrameIndex XZW7 W 2 23 - FrameIndex XZW7 X 2 24 - // Bullet (XSB) - SurfaceSkin 2 6 "" - SurfaceSkin 2 5 "SilverbulletBullet.png" - SurfaceSkin 2 7 "SilverbulletBullet.png" - FrameIndex XZWD P 2 30 - FrameIndex XZWD Q 2 31 - FrameIndex XZWD R 2 32 - FrameIndex XZWD S 2 33 - FrameIndex XZWD T 2 34 - FrameIndex XZWD U 2 35 - FrameIndex XZWD V 2 36 - FrameIndex XZWD W 2 37 - FrameIndex XZWD X 2 38 - FrameIndex XZWD Y 2 39 - FrameIndex XZWD Z 2 40 - FrameIndex XZWE A 2 41 - // Bullet (FCB) - SurfaceSkin 2 5 "SilverbulletBullet_FCB.png" - SurfaceSkin 2 7 "SilverbulletBullet_FCB.png" - FrameIndex XZWE B 2 30 - FrameIndex XZWE C 2 31 - FrameIndex XZWE D 2 32 - FrameIndex XZWE E 2 33 - FrameIndex XZWE F 2 34 - FrameIndex XZWE G 2 35 - FrameIndex XZWE H 2 36 - FrameIndex XZWE I 2 37 - FrameIndex XZWE J 2 38 - FrameIndex XZWE K 2 39 - FrameIndex XZWE L 2 40 - FrameIndex XZWE M 2 41 -} - -Model "SilverBullet" -{ - Path "models" - - Model 1 "Silverbullet1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Silverbullet.png" - SurfaceSkin 1 4 "SilverbulletAmmo.png" - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // EXPLOSIVE SUPER BURST - // Still / Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - FrameIndex XZW2 G 1 6 // Select - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - FrameIndex XZW2 M 1 12 - FrameIndex XZW2 N 1 13 - // Fire - FrameIndex XZW2 O 1 15 - FrameIndex XZW2 P 1 16 - FrameIndex XZW2 Q 1 17 - FrameIndex XZW2 R 1 18 - FrameIndex XZW2 S 1 19 - FrameIndex XZW2 T 1 20 - FrameIndex XZW2 U 1 21 - FrameIndex XZW2 V 1 22 - FrameIndex XZW2 W 1 23 - // Bolt - FrameIndex XZW2 X 1 25 - FrameIndex XZW2 Y 1 26 - FrameIndex XZW2 Z 1 27 - FrameIndex XZW3 A 1 28 - FrameIndex XZW3 B 1 29 - FrameIndex XZW3 C 1 30 // StartCasing - FrameIndex XZW3 D 1 31 - FrameIndex XZW3 E 1 32 - FrameIndex XZW3 F 1 33 - FrameIndex XZW3 G 1 34 - FrameIndex XZW3 H 1 35 - FrameIndex XZW3 I 1 36 - FrameIndex XZW3 J 1 37 - FrameIndex XZW3 K 1 38 - FrameIndex XZW3 L 1 39 - FrameIndex XZW3 M 1 40 - FrameIndex XZW3 N 1 41 // EndCasing - FrameIndex XZW3 O 1 42 - FrameIndex XZW3 P 1 43 - FrameIndex XZW3 Q 1 44 - FrameIndex XZW3 R 1 45 - // ZoomIn - FrameIndex XZW3 S 1 47 - FrameIndex XZW3 T 1 48 - FrameIndex XZW3 U 1 49 - FrameIndex XZW3 V 1 50 - FrameIndex XZW3 W 1 51 - FrameIndex XZW3 X 1 52 // ZoomStill / ZoomOut - FrameIndex XZW3 Y 1 53 - FrameIndex XZW3 Z 1 54 - FrameIndex XZW4 A 1 55 - FrameIndex XZW4 B 1 56 - FrameIndex XZW4 C 1 57 - // Unload - FrameIndex XZW4 D 1 59 - FrameIndex XZW4 E 1 60 - FrameIndex XZW4 F 1 61 - FrameIndex XZW4 G 1 62 - FrameIndex XZW4 H 1 63 - FrameIndex XZW4 I 1 64 - FrameIndex XZW4 J 1 65 - FrameIndex XZW4 K 1 66 - FrameIndex XZW4 L 1 67 - FrameIndex XZW4 M 1 68 - FrameIndex XZW4 N 1 69 - // UnloadEmpty - SurfaceSkin 1 4 "SilverbulletAmmo_EmptyMag.png" - FrameIndex XZW4 O 1 59 - FrameIndex XZW4 P 1 60 - FrameIndex XZW4 Q 1 61 - FrameIndex XZW4 R 1 62 - FrameIndex XZW4 S 1 63 - FrameIndex XZW4 T 1 64 - FrameIndex XZW4 U 1 65 - FrameIndex XZW4 V 1 66 - FrameIndex XZW4 W 1 67 - FrameIndex XZW4 X 1 68 - FrameIndex XZW4 Y 1 69 - SurfaceSkin 1 4 "SilverbulletAmmo.png" - // Load - FrameIndex XZW4 Z 1 70 - FrameIndex XZW5 A 1 71 - FrameIndex XZW5 B 1 72 - FrameIndex XZW5 C 1 73 - FrameIndex XZW5 D 1 74 - FrameIndex XZW5 E 1 75 - FrameIndex XZW5 F 1 76 - FrameIndex XZW5 G 1 77 - FrameIndex XZW5 H 1 78 - FrameIndex XZW5 I 1 79 - FrameIndex XZW5 J 1 80 - FrameIndex XZW5 K 1 81 - FrameIndex XZW5 L 1 82 - FrameIndex XZW5 M 1 83 - FrameIndex XZW5 N 1 84 - // Idle - FrameIndex XZW5 O 1 86 - FrameIndex XZW5 P 1 87 - FrameIndex XZW5 Q 1 88 - FrameIndex XZW5 R 1 89 - FrameIndex XZW5 S 1 90 - FrameIndex XZW5 T 1 91 - FrameIndex XZW5 U 1 92 - FrameIndex XZW5 V 1 93 - FrameIndex XZW5 W 1 94 - FrameIndex XZW5 X 1 95 - FrameIndex XZW5 Y 1 96 - FrameIndex XZW5 Z 1 97 - FrameIndex XZW6 A 1 98 - FrameIndex XZW6 B 1 99 - FrameIndex XZW6 C 1 100 - FrameIndex XZW6 D 1 101 - FrameIndex XZW6 E 1 102 - FrameIndex XZW6 F 1 103 - FrameIndex XZW6 G 1 104 - FrameIndex XZW6 H 1 105 - // Melee - FrameIndex XZW6 I 1 107 - FrameIndex XZW6 J 1 108 - FrameIndex XZW6 K 1 109 - FrameIndex XZW6 L 1 110 - FrameIndex XZW6 M 1 111 - FrameIndex XZW6 N 1 112 - FrameIndex XZW6 O 1 113 - FrameIndex XZW6 P 1 114 - FrameIndex XZW6 Q 1 115 - FrameIndex XZW6 R 1 116 - FrameIndex XZW6 S 1 117 - FrameIndex XZW6 T 1 118 - FrameIndex XZW6 U 1 119 - FrameIndex XZW6 V 1 120 - FrameIndex XZW6 W 1 121 - FrameIndex XZW6 X 1 122 - FrameIndex XZW6 Y 1 123 - FrameIndex XZW6 Z 1 124 - FrameIndex XZW7 A 1 125 - FrameIndex XZW7 B 1 126 - FrameIndex XZW7 C 1 127 - //// FAT CHODE BOMB - SurfaceSkin 1 4 "SilverbulletAmmo_FCB.png" - // Still / Deselect - FrameIndex XZW8 A 1 0 - FrameIndex XZW8 B 1 1 - FrameIndex XZW8 C 1 2 - FrameIndex XZW8 D 1 3 - FrameIndex XZW8 E 1 4 - FrameIndex XZW8 F 1 5 - FrameIndex XZW8 G 1 6 // Select - FrameIndex XZW8 H 1 7 - FrameIndex XZW8 I 1 8 - FrameIndex XZW8 J 1 9 - FrameIndex XZW8 K 1 10 - FrameIndex XZW8 L 1 11 - FrameIndex XZW8 M 1 12 - FrameIndex XZW8 N 1 13 - // Fire - FrameIndex XZW8 O 1 15 - FrameIndex XZW8 P 1 16 - FrameIndex XZW8 Q 1 17 - FrameIndex XZW8 R 1 18 - FrameIndex XZW8 S 1 19 - FrameIndex XZW8 T 1 20 - FrameIndex XZW8 U 1 21 - FrameIndex XZW8 V 1 22 - FrameIndex XZW8 W 1 23 - // Bolt - FrameIndex XZW8 X 1 25 - FrameIndex XZW8 Y 1 26 - FrameIndex XZW8 Z 1 27 - FrameIndex XZW9 A 1 28 - FrameIndex XZW9 B 1 29 - FrameIndex XZW9 C 1 30 // StartCasing - FrameIndex XZW9 D 1 31 - FrameIndex XZW9 E 1 32 - FrameIndex XZW9 F 1 33 - FrameIndex XZW9 G 1 34 - FrameIndex XZW9 H 1 35 - FrameIndex XZW9 I 1 36 - FrameIndex XZW9 J 1 37 - FrameIndex XZW9 K 1 38 - FrameIndex XZW9 L 1 39 - FrameIndex XZW9 M 1 40 - FrameIndex XZW9 N 1 41 // EndCasing - FrameIndex XZW9 O 1 42 - FrameIndex XZW9 P 1 43 - FrameIndex XZW9 Q 1 44 - FrameIndex XZW9 R 1 45 - // ZoomIn - FrameIndex XZW9 S 1 47 - FrameIndex XZW9 T 1 48 - FrameIndex XZW9 U 1 49 - FrameIndex XZW9 V 1 50 - FrameIndex XZW9 W 1 51 - FrameIndex XZW9 X 1 52 // ZoomStill / ZoomOut - FrameIndex XZW9 Y 1 53 - FrameIndex XZW9 Z 1 54 - FrameIndex XZWA A 1 55 - FrameIndex XZWA B 1 56 - FrameIndex XZWA C 1 57 - // Unload - FrameIndex XZWA D 1 59 - FrameIndex XZWA E 1 60 - FrameIndex XZWA F 1 61 - FrameIndex XZWA G 1 62 - FrameIndex XZWA H 1 63 - FrameIndex XZWA I 1 64 - FrameIndex XZWA J 1 65 - FrameIndex XZWA K 1 66 - FrameIndex XZWA L 1 67 - FrameIndex XZWA M 1 68 - FrameIndex XZWA N 1 69 - // UnloadEmpty - SurfaceSkin 1 4 "SilverbulletAmmo_FCB_EmptyMag.png" - FrameIndex XZWA O 1 59 - FrameIndex XZWA P 1 60 - FrameIndex XZWA Q 1 61 - FrameIndex XZWA R 1 62 - FrameIndex XZWA S 1 63 - FrameIndex XZWA T 1 64 - FrameIndex XZWA U 1 65 - FrameIndex XZWA V 1 66 - FrameIndex XZWA W 1 67 - FrameIndex XZWA X 1 68 - FrameIndex XZWA Y 1 69 - SurfaceSkin 1 4 "SilverbulletAmmo_FCB.png" - // Load - FrameIndex XZWA Z 1 70 - FrameIndex XZWB A 1 71 - FrameIndex XZWB B 1 72 - FrameIndex XZWB C 1 73 - FrameIndex XZWB D 1 74 - FrameIndex XZWB E 1 75 - FrameIndex XZWB F 1 76 - FrameIndex XZWB G 1 77 - FrameIndex XZWB H 1 78 - FrameIndex XZWB I 1 79 - FrameIndex XZWB J 1 80 - FrameIndex XZWB K 1 81 - FrameIndex XZWB L 1 82 - FrameIndex XZWB M 1 83 - FrameIndex XZWB N 1 84 - // Idle - FrameIndex XZWB O 1 86 - FrameIndex XZWB P 1 87 - FrameIndex XZWB Q 1 88 - FrameIndex XZWB R 1 89 - FrameIndex XZWB S 1 90 - FrameIndex XZWB T 1 91 - FrameIndex XZWB U 1 92 - FrameIndex XZWB V 1 93 - FrameIndex XZWB W 1 94 - FrameIndex XZWB X 1 95 - FrameIndex XZWB Y 1 96 - FrameIndex XZWB Z 1 97 - FrameIndex XZWC A 1 98 - FrameIndex XZWC B 1 99 - FrameIndex XZWC C 1 100 - FrameIndex XZWC D 1 101 - FrameIndex XZWC E 1 102 - FrameIndex XZWC F 1 103 - FrameIndex XZWC G 1 104 - FrameIndex XZWC H 1 105 - // Melee - FrameIndex XZWC I 1 107 - FrameIndex XZWC J 1 108 - FrameIndex XZWC K 1 109 - FrameIndex XZWC L 1 110 - FrameIndex XZWC M 1 111 - FrameIndex XZWC N 1 112 - FrameIndex XZWC O 1 113 - FrameIndex XZWC P 1 114 - FrameIndex XZWC Q 1 115 - FrameIndex XZWC R 1 116 - FrameIndex XZWC S 1 117 - FrameIndex XZWC T 1 118 - FrameIndex XZWC U 1 119 - FrameIndex XZWC V 1 120 - FrameIndex XZWC W 1 121 - FrameIndex XZWC X 1 122 - FrameIndex XZWC Y 1 123 - FrameIndex XZWC Z 1 124 - FrameIndex XZWD A 1 125 - FrameIndex XZWD B 1 126 - FrameIndex XZWD C 1 127 -} diff --git a/modeldef.sparkster b/modeldef.sparkster deleted file mode 100644 index 07afb60e2..000000000 --- a/modeldef.sparkster +++ /dev/null @@ -1,525 +0,0 @@ -Model "SparksterMag" -{ - Path "models" - - Model 0 "SparksterAmmo_d.3d" - Skin 0 "SparksterAmmo.png" - Scale 0.07 0.07 0.07 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1.5 - FrameIndex XZW1 B 0 0 - RollOffset 90 - ZOffset 1.2 - FrameIndex XZW1 C 0 0 -} - -Model "BiosparkArc" -{ - Path "models/extra" - - Model 0 "WarpBeam_d.3d" - Skin 0 "SparksterBeam.png" - Scale 0.0625 0.16 0.16 - Offset 8 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 1 - FrameIndex XZW1 B 0 2 - FrameIndex XZW1 C 0 3 - FrameIndex XZW1 D 0 4 - FrameIndex XZW1 E 0 5 - FrameIndex XZW1 F 0 6 - FrameIndex XZW1 G 0 7 - FrameIndex XZW1 H 0 8 - FrameIndex XZW1 I 0 9 - FrameIndex XZW1 J 0 10 - FrameIndex XZW1 K 0 11 - FrameIndex XZW1 L 0 12 -} -Model "BiosparkArcSmall" -{ - Path "models/extra" - - Model 0 "WarpBeam_d.3d" - Skin 0 "SparksterBeam.png" - Scale 0.03125 0.08 0.08 - Offset 2 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 1 - FrameIndex XZW1 B 0 2 - FrameIndex XZW1 C 0 3 - FrameIndex XZW1 D 0 4 - FrameIndex XZW1 E 0 5 - FrameIndex XZW1 F 0 6 - FrameIndex XZW1 G 0 7 - FrameIndex XZW1 H 0 8 - FrameIndex XZW1 I 0 9 - FrameIndex XZW1 J 0 10 - FrameIndex XZW1 K 0 11 - FrameIndex XZW1 L 0 12 -} -Model "BiosparkArcBig" -{ - Path "models/extra" - - Model 0 "WarpBeam_d.3d" - Skin 0 "SparksterBeam.png" - Scale 0.25 0.64 0.64 - Offset 32 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 1 - FrameIndex XZW1 B 0 2 - FrameIndex XZW1 C 0 3 - FrameIndex XZW1 D 0 4 - FrameIndex XZW1 E 0 5 - FrameIndex XZW1 F 0 6 - FrameIndex XZW1 G 0 7 - FrameIndex XZW1 H 0 8 - FrameIndex XZW1 I 0 9 - FrameIndex XZW1 J 0 10 - FrameIndex XZW1 K 0 11 - FrameIndex XZW1 L 0 12 -} - -Model "BiosparkBeam" -{ - Path "models/extra" - - Model 0 "BaseBeam_d.3d" - Scale 1.0 0.2 0.2 - Offset 128 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - Skin 0 "SparksterBeamS.png" - FrameIndex XZW1 A 0 0 - Skin 0 "SparksterBeam.png" - FrameIndex XZW1 B 0 0 -} - -Model "BiosparkChildBeam" -{ - Path "models/extra" - - Model 0 "WarpBeam_d.3d" - Scale 1.0 1.0 1.0 - Offset 128 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - Skin 0 "SparksterBeamS.png" - FrameIndex XZW1 A 0 0 - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - Skin 0 "SparksterBeam.png" - FrameIndex XZW2 A 0 0 - FrameIndex XZW2 B 0 1 - FrameIndex XZW2 C 0 2 - FrameIndex XZW2 D 0 3 - FrameIndex XZW2 E 0 4 - FrameIndex XZW2 F 0 5 - FrameIndex XZW2 G 0 6 - FrameIndex XZW2 H 0 7 - FrameIndex XZW2 I 0 8 - FrameIndex XZW2 J 0 9 - FrameIndex XZW2 K 0 10 - FrameIndex XZW2 L 0 11 - FrameIndex XZW2 M 0 12 -} - -Model "BiosparkCore" -{ - Path "models" - - Model 0 "SparksterBall_d.3d" - Skin 0 "SparksterBall.png" - Scale 0.003 0.003 0.003 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "Sparkster" -{ - Path "models" - - Model 0 "SparksterPickup_d.3d" - SurfaceSkin 0 0 "Sparkster.png" - SurfaceSkin 0 1 "SparksterAmmo.png" - Scale 0.12 0.12 0.12 - AngleOffset 180 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 - SurfaceSkin 0 2 "SparksterAmmo.png" - FrameIndex XZW1 B 0 0 -} - -Model "Sparkster" -{ - Path "models/extra" - - Model 2 "Flat_d.3d" - Scale 0.3 0.15 0.15 - Offset 15 -60 -25 - RollOffset 90 - AngleOffset 90 - - Skin 2 "SparksterMuz.png" - FrameIndex XZWZ A 2 0 -} - -Model "Sparkster" -{ - Path "models/extra" - - Model 3 "SparksterVent_d.3d" - AngleOffset -90 - Scale -0.005 0.0025 0.005 - DONTCULLBACKFACES - - // Still Vent - Skin 3 "VentSmoke0.png" - FrameIndex XZWY A 3 0 - Skin 3 "VentSmoke1.png" - FrameIndex XZWY B 3 0 - Skin 3 "VentSmoke2.png" - FrameIndex XZWY C 3 0 - Skin 3 "VentSmoke3.png" - FrameIndex XZWY D 3 0 - Skin 3 "VentSmoke4.png" - FrameIndex XZWY E 3 0 - Skin 3 "VentSmoke5.png" - FrameIndex XZWY F 3 0 - Skin 3 "VentSmoke6.png" - FrameIndex XZWY G 3 0 - Skin 3 "VentSmoke7.png" - FrameIndex XZWY H 3 0 - Skin 3 "VentSmoke8.png" - FrameIndex XZWY I 3 0 - Skin 3 "VentSmoke9.png" - FrameIndex XZWY J 3 0 - Skin 3 "VentSmoke10.png" - FrameIndex XZWY K 3 0 - Skin 3 "VentSmoke11.png" - FrameIndex XZWY L 3 0 - Skin 3 "VentSmoke12.png" - FrameIndex XZWY M 3 0 - Skin 3 "VentSmoke13.png" - FrameIndex XZWY N 3 0 - Skin 3 "VentSmoke14.png" - FrameIndex XZWY O 3 0 - Skin 3 "VentSmoke15.png" - FrameIndex XZWY P 3 0 - Skin 3 "VentSmoke16.png" - FrameIndex XZWY Q 3 0 - Skin 3 "VentSmoke17.png" - FrameIndex XZWY R 3 0 - Skin 3 "VentSmoke18.png" - FrameIndex XZWY S 3 0 - Skin 3 "VentSmoke19.png" - FrameIndex XZWY T 3 0 - Skin 3 "VentSmoke20.png" - FrameIndex XZWY U 3 0 - Skin 3 "VentSmoke21.png" - FrameIndex XZWY V 3 0 - Skin 3 "VentSmoke22.png" - FrameIndex XZWY W 3 0 - Skin 3 "VentSmoke23.png" - FrameIndex XZWY X 3 0 -} - -Model "Sparkster" -{ - Path "models" - - Model 1 "Sparkster1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Sparkster.png" - SurfaceSkin 1 4 "SparksterAmmo.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Still / Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - FrameIndex XZW2 G 1 6 // Select - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - FrameIndex XZW2 M 1 12 - // Fire - FrameIndex XZW2 N 1 14 - FrameIndex XZW2 O 1 15 - FrameIndex XZW2 P 1 16 - FrameIndex XZW2 Q 1 17 - // AltFire - FrameIndex XZW2 R 1 19 - FrameIndex XZW2 S 1 20 - FrameIndex XZW2 T 1 21 - FrameIndex XZW2 U 1 22 - // ThirdFire - FrameIndex XZW2 V 1 24 - FrameIndex XZW2 W 1 25 - FrameIndex XZW2 X 1 26 - FrameIndex XZW2 Y 1 27 - FrameIndex XZW2 Z 1 28 - // Reload - FrameIndex XZW3 A 1 30 - FrameIndex XZW3 B 1 31 - FrameIndex XZW3 C 1 32 - FrameIndex XZW3 D 1 33 - FrameIndex XZW3 E 1 34 - FrameIndex XZW3 F 1 35 // MagOut - FrameIndex XZW3 G 1 36 - FrameIndex XZW3 H 1 37 - FrameIndex XZW3 I 1 38 - FrameIndex XZW3 J 1 39 - FrameIndex XZW3 K 1 40 - FrameIndex XZW3 L 1 41 - FrameIndex XZW3 M 1 42 - FrameIndex XZW3 N 1 43 // Reload2 - FrameIndex XZW3 O 1 44 - FrameIndex XZW3 P 1 45 - FrameIndex XZW3 Q 1 46 - FrameIndex XZW3 R 1 47 - FrameIndex XZW3 S 1 48 // MagIn - FrameIndex XZW3 T 1 49 - FrameIndex XZW3 U 1 50 - FrameIndex XZW3 V 1 51 - FrameIndex XZW3 W 1 52 // Reload3 - FrameIndex XZW3 X 1 53 - FrameIndex XZW3 Y 1 54 - FrameIndex XZW3 Z 1 55 - FrameIndex XZW4 A 1 56 - FrameIndex XZW4 B 1 57 - FrameIndex XZW4 C 1 58 - FrameIndex XZW4 D 1 59 - // Melee - FrameIndex XZW4 E 1 61 - FrameIndex XZW4 F 1 62 - FrameIndex XZW4 G 1 63 - FrameIndex XZW4 H 1 64 - FrameIndex XZW4 I 1 65 - FrameIndex XZW4 J 1 66 - FrameIndex XZW4 K 1 67 // Melee - FrameIndex XZW4 L 1 68 - FrameIndex XZW4 M 1 69 - FrameIndex XZW4 N 1 70 - FrameIndex XZW4 O 1 71 - FrameIndex XZW4 P 1 72 - FrameIndex XZW4 Q 1 73 - FrameIndex XZW4 R 1 74 - FrameIndex XZW4 S 1 75 - FrameIndex XZW4 T 1 76 - FrameIndex XZW4 U 1 77 - FrameIndex XZW4 V 1 78 - FrameIndex XZW4 W 1 79 - FrameIndex XZW4 X 1 80 - // Trigger1 - FrameIndex XZW4 Y 1 82 - // Trigger2 - FrameIndex XZW4 Z 1 83 - // Trigger3 - FrameIndex XZW5 A 1 84 - // Idle - FrameIndex XZW5 B 1 86 - FrameIndex XZW5 C 1 87 - FrameIndex XZW5 D 1 88 - FrameIndex XZW5 E 1 89 - FrameIndex XZW5 F 1 90 - FrameIndex XZW5 G 1 91 - FrameIndex XZW5 H 1 92 - FrameIndex XZW5 I 1 93 - FrameIndex XZW5 J 1 94 - FrameIndex XZW5 K 1 95 - FrameIndex XZW5 L 1 96 - FrameIndex XZW5 M 1 97 - FrameIndex XZW5 N 1 98 - FrameIndex XZW5 O 1 99 - FrameIndex XZW5 P 1 100 - FrameIndex XZW5 Q 1 101 - FrameIndex XZW5 R 1 102 - FrameIndex XZW5 S 1 103 - FrameIndex XZW5 T 1 104 - FrameIndex XZW5 U 1 105 - FrameIndex XZW5 V 1 106 - FrameIndex XZW5 W 1 107 - FrameIndex XZW5 X 1 108 - FrameIndex XZW5 Y 1 109 - //// DOUBLE MODE - // Still - FrameIndex XZW5 Z 1 129 // defined first just to get that Z out of the way - // AttachExtra - FrameIndex XZW6 A 1 111 - FrameIndex XZW6 B 1 112 - FrameIndex XZW6 C 1 113 - FrameIndex XZW6 D 1 114 - SurfaceSkin 1 5 "SparksterAmmo.png" - FrameIndex XZW6 E 1 115 - FrameIndex XZW6 F 1 116 - FrameIndex XZW6 G 1 117 - FrameIndex XZW6 H 1 118 - FrameIndex XZW6 I 1 119 - FrameIndex XZW6 J 1 120 // MagIn - FrameIndex XZW6 K 1 121 - FrameIndex XZW6 L 1 122 - FrameIndex XZW6 M 1 123 - FrameIndex XZW6 N 1 124 - FrameIndex XZW6 O 1 125 - FrameIndex XZW6 P 1 126 - FrameIndex XZW6 Q 1 127 - FrameIndex XZW6 R 1 128 - // Deselect - FrameIndex XZW6 S 1 130 - FrameIndex XZW6 T 1 131 - FrameIndex XZW6 U 1 132 - FrameIndex XZW6 V 1 133 - FrameIndex XZW6 W 1 134 - FrameIndex XZW6 X 1 135 // Select - FrameIndex XZW6 Y 1 136 - FrameIndex XZW6 Z 1 137 - FrameIndex XZW7 A 1 138 - FrameIndex XZW7 B 1 139 - FrameIndex XZW7 C 1 140 - FrameIndex XZW7 D 1 141 - // Fire - FrameIndex XZW7 E 1 143 - FrameIndex XZW7 F 1 144 - FrameIndex XZW7 G 1 145 - FrameIndex XZW7 H 1 146 - // AltFire - FrameIndex XZW7 I 1 148 - FrameIndex XZW7 J 1 149 - FrameIndex XZW7 K 1 150 - FrameIndex XZW7 L 1 151 - // ThirdFire - FrameIndex XZW7 M 1 153 - FrameIndex XZW7 N 1 154 - FrameIndex XZW7 O 1 155 - FrameIndex XZW7 P 1 156 - FrameIndex XZW7 Q 1 157 - // Melee - FrameIndex XZW7 R 1 159 - FrameIndex XZW7 S 1 160 - FrameIndex XZW7 T 1 161 - FrameIndex XZW7 U 1 162 - FrameIndex XZW7 V 1 163 - FrameIndex XZW7 W 1 164 - FrameIndex XZW7 X 1 165 // Melee - FrameIndex XZW7 Y 1 166 - FrameIndex XZW7 Z 1 167 - FrameIndex XZW8 A 1 168 - FrameIndex XZW8 B 1 169 - FrameIndex XZW8 C 1 170 - FrameIndex XZW8 D 1 171 - FrameIndex XZW8 E 1 172 - FrameIndex XZW8 F 1 173 - FrameIndex XZW8 G 1 174 - FrameIndex XZW8 H 1 175 - FrameIndex XZW8 I 1 176 - FrameIndex XZW8 J 1 177 - FrameIndex XZW8 K 1 178 - // Trigger1 - FrameIndex XZW8 L 1 180 - // Trigger2 - FrameIndex XZW8 M 1 181 - // Trigger3 - FrameIndex XZW8 N 1 182 - // Idle - FrameIndex XZW8 O 1 184 - FrameIndex XZW8 P 1 185 - FrameIndex XZW8 Q 1 186 - FrameIndex XZW8 R 1 187 - FrameIndex XZW8 S 1 188 - FrameIndex XZW8 T 1 189 - FrameIndex XZW8 U 1 190 - FrameIndex XZW8 V 1 191 - FrameIndex XZW8 W 1 192 - FrameIndex XZW8 X 1 193 - FrameIndex XZW8 Y 1 194 - FrameIndex XZW8 Z 1 195 - FrameIndex XZW9 A 1 196 - FrameIndex XZW9 B 1 197 - FrameIndex XZW9 C 1 198 - FrameIndex XZW9 D 1 199 - FrameIndex XZW9 E 1 200 - FrameIndex XZW9 F 1 201 - FrameIndex XZW9 G 1 202 - FrameIndex XZW9 H 1 203 - FrameIndex XZW9 I 1 204 - FrameIndex XZW9 J 1 205 - FrameIndex XZW9 K 1 206 - FrameIndex XZW9 L 1 207 - // UnloadExtra - FrameIndex XZW9 M 1 209 - FrameIndex XZW9 N 1 210 - FrameIndex XZW9 O 1 211 - FrameIndex XZW9 P 1 212 - FrameIndex XZW9 Q 1 213 - FrameIndex XZW9 R 1 214 // MagOut - FrameIndex XZW9 S 1 215 - FrameIndex XZW9 T 1 216 - FrameIndex XZW9 U 1 217 - FrameIndex XZW9 V 1 218 - FrameIndex XZW9 W 1 219 - FrameIndex XZW9 X 1 220 - FrameIndex XZW9 Y 1 221 - FrameIndex XZW9 Z 1 222 // ToReload2 - // DoubleStacc - SurfaceSkin 1 5 "" - FrameIndex XZWA A 1 223 // FromReload3 - FrameIndex XZWA B 1 224 - FrameIndex XZWA C 1 225 - FrameIndex XZWA D 1 226 - FrameIndex XZWA E 1 227 - SurfaceSkin 1 5 "SparksterAmmo.png" - FrameIndex XZWA F 1 228 - FrameIndex XZWA G 1 229 - FrameIndex XZWA H 1 230 // MagIn - FrameIndex XZWA I 1 231 - FrameIndex XZWA J 1 232 - FrameIndex XZWA K 1 233 - FrameIndex XZWA L 1 234 - FrameIndex XZWA M 1 235 - FrameIndex XZWA N 1 236 - FrameIndex XZWA O 1 237 - FrameIndex XZWA P 1 238 - FrameIndex XZWA Q 1 239 - FrameIndex XZWA R 1 240 - FrameIndex XZWA S 1 241 -} diff --git a/modeldef.spreadgun b/modeldef.spreadgun deleted file mode 100644 index 08b0adb10..000000000 --- a/modeldef.spreadgun +++ /dev/null @@ -1,1272 +0,0 @@ -Model "RedShellCasing" -{ - Path "models" - - Model 0 "ShotShell_d.3d" - Skin 0 "Shell_Normal_Used.png" - Scale 0.15 0.15 0.15 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} -Model "GreenShellCasing" -{ - Path "models" - - Model 0 "ShotShell_d.3d" - Skin 0 "Shell_Slug_Used.png" - Scale 0.15 0.15 0.15 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} -Model "WhiteShellCasing" -{ - Path "models" - - Model 0 "ShotShell_d.3d" - Skin 0 "Shell_Dragon_Used.png" - Scale 0.15 0.15 0.15 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} -Model "BlueShellCasing" -{ - Path "models" - - Model 0 "ShotShell_d.3d" - Skin 0 "Shell_Kinylum_Used.png" - Scale 0.15 0.15 0.15 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} -Model "BlackShellCasing" -{ - Path "models" - - Model 0 "ShotShell_d.3d" - Skin 0 "Shell_Fuck_Used.png" - Scale 0.15 0.15 0.15 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} -Model "PurpleShellCasing" -{ - Path "models" - - Model 0 "ShotShell_d.3d" - Skin 0 "Shell_Ball_Used.png" - Scale 0.15 0.15 0.15 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} -Model "GoldShellCasing" -{ - Path "models" - - Model 0 "ShotShell_d.3d" - Skin 0 "Shell_Gold_Used.png" - Scale 0.15 0.15 0.15 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} - -Model "SaltBeam" -{ - Path "models/extra" - - Model 0 "WarpBeam2_d.3d" - Scale 0.125 0.125 0.125 - Offset 16 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // starter - Skin 0 "SaltBeamS.png" - - // base - FrameIndex XZW1 A 0 0 - // low deviation - FrameIndex XZW1 B 0 1 - FrameIndex XZW1 C 0 2 - FrameIndex XZW1 D 0 3 - FrameIndex XZW1 E 0 4 - // mid deviation - FrameIndex XZW1 F 0 5 - FrameIndex XZW1 G 0 6 - FrameIndex XZW1 H 0 7 - FrameIndex XZW1 I 0 8 - // high deviation - FrameIndex XZW1 J 0 9 - FrameIndex XZW1 K 0 10 - FrameIndex XZW1 L 0 11 - FrameIndex XZW1 M 0 12 - - // other - Skin 0 "SaltBeam.png" - - // base - FrameIndex XZW2 A 0 0 - // low deviation - FrameIndex XZW2 B 0 1 - FrameIndex XZW2 C 0 2 - FrameIndex XZW2 D 0 3 - FrameIndex XZW2 E 0 4 - // mid deviation - FrameIndex XZW2 F 0 5 - FrameIndex XZW2 G 0 6 - FrameIndex XZW2 H 0 7 - FrameIndex XZW2 I 0 8 - // high deviation - FrameIndex XZW2 J 0 9 - FrameIndex XZW2 K 0 10 - FrameIndex XZW2 L 0 11 - FrameIndex XZW2 M 0 12 -} - -Model "CorrosiveFlechette" -{ - Path "models" - - Model 0 "Boolet_a.3d" - Skin 0 "Boolet_Flech.png" - Scale 0.01 0.001 0.001 - USEACTORPITCH - USEACTORROLL - AngleOffset -90 - - FrameIndex XZW1 A 0 0 -} - -Model "TheBall" -{ - Path "models" - - Model 0 "extra/BaseSphere_d.3d" - Skin 0 "matcap/leadmap.png" - Scale 0.006 0.006 0.006 - ZOffset 1 - - FrameIndex XZW1 A 0 0 -} - -Model "Spreadgun" -{ - Path "models" - - Model 0 "SpreadgunPickup_d.3d" - Skin 0 "Spreadgun.png" - Scale 0.04 0.04 0.04 - AngleOffset 180 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "Spreadgun" -{ - Path "models/extra" - - Model 2 "Flat_d.3d" - Offset 16 -60 -15 - RollOffset 90 - AngleOffset 90 - - // buckshot - Scale 0.13 0.13 0.13 - Skin 2 "ShotgMuz.png" - FrameIndex XZW0 A 2 0 - // slug - Scale 0.08 0.08 0.08 - Skin 2 "ShotgMuz.png" - FrameIndex XZW0 B 2 0 - // dragon - Scale 0.12 0.12 0.12 - Skin 2 "ShotgMuz.png" - FrameIndex XZW0 C 2 0 - // kinylum - Scale 0.13 0.13 0.13 - Skin 2 "ShotgMuzSalt.png" - FrameIndex XZW0 D 2 0 - // flechettes - Scale 0.1 0.1 0.1 - Skin 2 "ShotgMuz.png" - FrameIndex XZW0 E 2 0 - // ball - Scale 0.06 0.06 0.06 - Skin 2 "ShotgMuz.png" - FrameIndex XZW0 F 2 0 - // gold - Scale 0.2 0.2 0.2 - Skin 2 "GoldMuz.png" - FrameIndex XZW0 G 2 0 -} - -// AAAAAAAAAAAA -// We really need a scripted way of changing surface skins so I don't have -// to do this. Hell this damn thing uses ALL current dummy sprite names (though not all 936 frames) -Model "Spreadgun" -{ - Path "models" - - Model 1 "Spreadgun1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Spreadgun.png" - AngleOffset -90 - Offset -4 0 -2 - Scale -0.005 0.0025 0.005 - - ///// PRIMED - // Idle / Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - FrameIndex XZW2 G 1 6 - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 // Select - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - FrameIndex XZW2 M 1 12 - FrameIndex XZW2 N 1 13 - FrameIndex XZW2 O 1 14 - FrameIndex XZW2 P 1 15 - FrameIndex XZW2 Q 1 16 - // Fire - FrameIndex XZW2 R 1 18 - FrameIndex XZW2 S 1 19 - FrameIndex XZW2 T 1 20 - FrameIndex XZW2 U 1 21 - FrameIndex XZW2 V 1 22 - FrameIndex XZW2 W 1 23 - FrameIndex XZW2 X 1 24 - FrameIndex XZW2 Y 1 25 - ///// FIRED - // Idle / Deselect - FrameIndex XZW2 Z 1 26 - FrameIndex XZW3 A 1 27 - FrameIndex XZW3 B 1 28 - FrameIndex XZW3 C 1 29 - FrameIndex XZW3 D 1 30 - FrameIndex XZW3 E 1 31 - FrameIndex XZW3 F 1 32 - FrameIndex XZW3 G 1 33 - FrameIndex XZW3 H 1 34 // Select - FrameIndex XZW3 I 1 35 - FrameIndex XZW3 J 1 36 - FrameIndex XZW3 K 1 37 - FrameIndex XZW3 L 1 38 - FrameIndex XZW3 M 1 39 - FrameIndex XZW3 N 1 40 - FrameIndex XZW3 O 1 41 - FrameIndex XZW3 P 1 42 - // Unload (Red) - SurfaceSkin 1 4 "Shell_Normal_Used.png" - FrameIndex XZW3 Q 1 44 - FrameIndex XZW3 R 1 45 - FrameIndex XZW3 S 1 46 - FrameIndex XZW3 T 1 47 - FrameIndex XZW3 U 1 48 - FrameIndex XZW3 V 1 49 - FrameIndex XZW3 W 1 50 - FrameIndex XZW3 X 1 51 - FrameIndex XZW3 Y 1 52 - FrameIndex XZW3 Z 1 53 - FrameIndex XZW4 A 1 54 - FrameIndex XZW4 B 1 55 - FrameIndex XZW4 C 1 56 - FrameIndex XZW4 D 1 57 - FrameIndex XZW4 E 1 58 - FrameIndex XZW4 F 1 59 - FrameIndex XZW4 G 1 60 - SurfaceSkin 1 4 "" - FrameIndex XZW4 H 1 61 - // Unload (Green) - SurfaceSkin 1 4 "Shell_Slug_Used.png" - FrameIndex XZW4 I 1 44 - FrameIndex XZW4 J 1 45 - FrameIndex XZW4 K 1 46 - FrameIndex XZW4 L 1 47 - FrameIndex XZW4 M 1 48 - FrameIndex XZW4 N 1 49 - FrameIndex XZW4 O 1 50 - FrameIndex XZW4 P 1 51 - FrameIndex XZW4 Q 1 52 - FrameIndex XZW4 R 1 53 - FrameIndex XZW4 S 1 54 - FrameIndex XZW4 T 1 55 - FrameIndex XZW4 U 1 56 - FrameIndex XZW4 V 1 57 - FrameIndex XZW4 W 1 58 - FrameIndex XZW4 X 1 59 - FrameIndex XZW4 Y 1 60 - SurfaceSkin 1 4 "" - FrameIndex XZW4 Z 1 61 - // Unload (White) - SurfaceSkin 1 4 "Shell_Dragon_Used.png" - FrameIndex XZW5 A 1 44 - FrameIndex XZW5 B 1 45 - FrameIndex XZW5 C 1 46 - FrameIndex XZW5 D 1 47 - FrameIndex XZW5 E 1 48 - FrameIndex XZW5 F 1 49 - FrameIndex XZW5 G 1 50 - FrameIndex XZW5 H 1 51 - FrameIndex XZW5 I 1 52 - FrameIndex XZW5 J 1 53 - FrameIndex XZW5 K 1 54 - FrameIndex XZW5 L 1 55 - FrameIndex XZW5 M 1 56 - FrameIndex XZW5 N 1 57 - FrameIndex XZW5 O 1 58 - FrameIndex XZW5 P 1 59 - FrameIndex XZW5 Q 1 60 - SurfaceSkin 1 4 "" - FrameIndex XZW5 R 1 61 - // Unload (Blue) - SurfaceSkin 1 4 "Shell_Kinylum_Used.png" - FrameIndex XZW5 S 1 44 - FrameIndex XZW5 T 1 45 - FrameIndex XZW5 U 1 46 - FrameIndex XZW5 V 1 47 - FrameIndex XZW5 W 1 48 - FrameIndex XZW5 X 1 49 - FrameIndex XZW5 Y 1 50 - FrameIndex XZW5 Z 1 51 - FrameIndex XZW6 A 1 52 - FrameIndex XZW6 B 1 53 - FrameIndex XZW6 C 1 54 - FrameIndex XZW6 D 1 55 - FrameIndex XZW6 E 1 56 - FrameIndex XZW6 F 1 57 - FrameIndex XZW6 G 1 58 - FrameIndex XZW6 H 1 59 - FrameIndex XZW6 I 1 60 - SurfaceSkin 1 4 "" - FrameIndex XZW6 J 1 61 - // Unload (Black) - SurfaceSkin 1 4 "Shell_Fuck_Used.png" - FrameIndex XZW6 K 1 44 - FrameIndex XZW6 L 1 45 - FrameIndex XZW6 M 1 46 - FrameIndex XZW6 N 1 47 - FrameIndex XZW6 O 1 48 - FrameIndex XZW6 P 1 49 - FrameIndex XZW6 Q 1 50 - FrameIndex XZW6 R 1 51 - FrameIndex XZW6 S 1 52 - FrameIndex XZW6 T 1 53 - FrameIndex XZW6 U 1 54 - FrameIndex XZW6 V 1 55 - FrameIndex XZW6 W 1 56 - FrameIndex XZW6 X 1 57 - FrameIndex XZW6 Y 1 58 - FrameIndex XZW6 Z 1 59 - FrameIndex XZW7 A 1 60 - SurfaceSkin 1 4 "" - FrameIndex XZW7 B 1 61 - // Unload (Purple) - SurfaceSkin 1 4 "Shell_Ball_Used.png" - FrameIndex XZW7 C 1 44 - FrameIndex XZW7 D 1 45 - FrameIndex XZW7 E 1 46 - FrameIndex XZW7 F 1 47 - FrameIndex XZW7 G 1 48 - FrameIndex XZW7 H 1 49 - FrameIndex XZW7 I 1 50 - FrameIndex XZW7 J 1 51 - FrameIndex XZW7 K 1 52 - FrameIndex XZW7 L 1 53 - FrameIndex XZW7 M 1 54 - FrameIndex XZW7 N 1 55 - FrameIndex XZW7 O 1 56 - FrameIndex XZW7 P 1 57 - FrameIndex XZW7 Q 1 58 - FrameIndex XZW7 R 1 59 - FrameIndex XZW7 S 1 60 - SurfaceSkin 1 4 "" - FrameIndex XZW7 T 1 61 - // Unload (Gold) - SurfaceSkin 1 4 "Shell_Gold_Used.png" - FrameIndex XZW7 U 1 44 - FrameIndex XZW7 V 1 45 - FrameIndex XZW7 W 1 46 - FrameIndex XZW7 X 1 47 - FrameIndex XZW7 Y 1 48 - FrameIndex XZW7 Z 1 49 - FrameIndex XZW8 A 1 50 - FrameIndex XZW8 B 1 51 - FrameIndex XZW8 C 1 52 - FrameIndex XZW8 D 1 53 - FrameIndex XZW8 E 1 54 - FrameIndex XZW8 F 1 55 - FrameIndex XZW8 G 1 56 - FrameIndex XZW8 H 1 57 - FrameIndex XZW8 I 1 58 - FrameIndex XZW8 J 1 59 - FrameIndex XZW8 K 1 60 - SurfaceSkin 1 4 "" - FrameIndex XZW8 L 1 61 - // Load (Red) - SurfaceSkin 1 5 "Shell_Normal.png" - FrameIndex XZW8 M 1 62 - FrameIndex XZW8 N 1 63 - FrameIndex XZW8 O 1 64 - FrameIndex XZW8 P 1 65 - FrameIndex XZW8 Q 1 66 - FrameIndex XZW8 R 1 67 - FrameIndex XZW8 S 1 68 - FrameIndex XZW8 T 1 69 - FrameIndex XZW8 U 1 70 - FrameIndex XZW8 V 1 71 - FrameIndex XZW8 W 1 72 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Normal.png" - FrameIndex XZW8 X 1 73 - FrameIndex XZW8 Y 1 74 - FrameIndex XZW8 Z 1 75 - FrameIndex XZW9 A 1 76 - FrameIndex XZW9 B 1 77 - FrameIndex XZW9 C 1 78 - FrameIndex XZW9 D 1 79 - FrameIndex XZW9 E 1 80 - FrameIndex XZW9 F 1 81 - FrameIndex XZW9 G 1 82 - FrameIndex XZW9 H 1 83 - FrameIndex XZW9 I 1 84 - FrameIndex XZW9 J 1 85 - FrameIndex XZW9 K 1 86 - FrameIndex XZW9 L 1 87 - FrameIndex XZW9 M 1 88 - FrameIndex XZW9 N 1 89 - FrameIndex XZW9 O 1 90 - FrameIndex XZW9 P 1 91 - FrameIndex XZW9 Q 1 92 - FrameIndex XZW9 R 1 93 - FrameIndex XZW9 S 1 94 - SurfaceSkin 1 4 "" - // Load (Green) - SurfaceSkin 1 5 "Shell_Slug.png" - FrameIndex XZW9 T 1 62 - FrameIndex XZW9 U 1 63 - FrameIndex XZW9 V 1 64 - FrameIndex XZW9 W 1 65 - FrameIndex XZW9 X 1 66 - FrameIndex XZW9 Y 1 67 - FrameIndex XZW9 Z 1 68 - FrameIndex XZWA A 1 69 - FrameIndex XZWA B 1 70 - FrameIndex XZWA C 1 71 - FrameIndex XZWA D 1 72 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Slug.png" - FrameIndex XZWA E 1 73 - FrameIndex XZWA F 1 74 - FrameIndex XZWA G 1 75 - FrameIndex XZWA H 1 76 - FrameIndex XZWA I 1 77 - FrameIndex XZWA J 1 78 - FrameIndex XZWA K 1 79 - FrameIndex XZWA L 1 80 - FrameIndex XZWA M 1 81 - FrameIndex XZWA N 1 82 - FrameIndex XZWA O 1 83 - FrameIndex XZWA P 1 84 - FrameIndex XZWA Q 1 85 - FrameIndex XZWA R 1 86 - FrameIndex XZWA S 1 87 - FrameIndex XZWA T 1 88 - FrameIndex XZWA U 1 89 - FrameIndex XZWA V 1 90 - FrameIndex XZWA W 1 91 - FrameIndex XZWA X 1 92 - FrameIndex XZWA Y 1 93 - FrameIndex XZWA Z 1 94 - SurfaceSkin 1 4 "" - // Load (White) - SurfaceSkin 1 5 "Shell_Dragon.png" - FrameIndex XZWB A 1 62 - FrameIndex XZWB B 1 63 - FrameIndex XZWB C 1 64 - FrameIndex XZWB D 1 65 - FrameIndex XZWB E 1 66 - FrameIndex XZWB F 1 67 - FrameIndex XZWB G 1 68 - FrameIndex XZWB H 1 69 - FrameIndex XZWB I 1 70 - FrameIndex XZWB J 1 71 - FrameIndex XZWB K 1 72 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Dragon.png" - FrameIndex XZWB L 1 73 - FrameIndex XZWB M 1 74 - FrameIndex XZWB N 1 75 - FrameIndex XZWB O 1 76 - FrameIndex XZWB P 1 77 - FrameIndex XZWB Q 1 78 - FrameIndex XZWB R 1 79 - FrameIndex XZWB S 1 80 - FrameIndex XZWB T 1 81 - FrameIndex XZWB U 1 82 - FrameIndex XZWB V 1 83 - FrameIndex XZWB W 1 84 - FrameIndex XZWB X 1 85 - FrameIndex XZWB Y 1 86 - FrameIndex XZWB Z 1 87 - FrameIndex XZWC A 1 88 - FrameIndex XZWC B 1 89 - FrameIndex XZWC C 1 90 - FrameIndex XZWC D 1 91 - FrameIndex XZWC E 1 92 - FrameIndex XZWC F 1 93 - FrameIndex XZWC G 1 94 - SurfaceSkin 1 4 "" - // Load (Blue) - SurfaceSkin 1 5 "Shell_Kinylum.png" - FrameIndex XZWC H 1 62 - FrameIndex XZWC I 1 63 - FrameIndex XZWC J 1 64 - FrameIndex XZWC K 1 65 - FrameIndex XZWC L 1 66 - FrameIndex XZWC M 1 67 - FrameIndex XZWC N 1 68 - FrameIndex XZWC O 1 69 - FrameIndex XZWC P 1 70 - FrameIndex XZWC Q 1 71 - FrameIndex XZWC R 1 72 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Kinylum.png" - FrameIndex XZWC S 1 73 - FrameIndex XZWC T 1 74 - FrameIndex XZWC U 1 75 - FrameIndex XZWC V 1 76 - FrameIndex XZWC W 1 77 - FrameIndex XZWC X 1 78 - FrameIndex XZWC Y 1 79 - FrameIndex XZWC Z 1 80 - FrameIndex XZWD A 1 81 - FrameIndex XZWD B 1 82 - FrameIndex XZWD C 1 83 - FrameIndex XZWD D 1 84 - FrameIndex XZWD E 1 85 - FrameIndex XZWD F 1 86 - FrameIndex XZWD G 1 87 - FrameIndex XZWD H 1 88 - FrameIndex XZWD I 1 89 - FrameIndex XZWD J 1 90 - FrameIndex XZWD K 1 91 - FrameIndex XZWD L 1 92 - FrameIndex XZWD M 1 93 - FrameIndex XZWD N 1 94 - SurfaceSkin 1 4 "" - // Load (Black) - SurfaceSkin 1 5 "Shell_Fuck.png" - FrameIndex XZWD O 1 62 - FrameIndex XZWD P 1 63 - FrameIndex XZWD Q 1 64 - FrameIndex XZWD R 1 65 - FrameIndex XZWD S 1 66 - FrameIndex XZWD T 1 67 - FrameIndex XZWD U 1 68 - FrameIndex XZWD V 1 69 - FrameIndex XZWD W 1 70 - FrameIndex XZWD X 1 71 - FrameIndex XZWD Y 1 72 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Fuck.png" - FrameIndex XZWD Z 1 73 - FrameIndex XZWE A 1 74 - FrameIndex XZWE B 1 75 - FrameIndex XZWE C 1 76 - FrameIndex XZWE D 1 77 - FrameIndex XZWE E 1 78 - FrameIndex XZWE F 1 79 - FrameIndex XZWE G 1 80 - FrameIndex XZWE H 1 81 - FrameIndex XZWE I 1 82 - FrameIndex XZWE J 1 83 - FrameIndex XZWE K 1 84 - FrameIndex XZWE L 1 85 - FrameIndex XZWE M 1 86 - FrameIndex XZWE N 1 87 - FrameIndex XZWE O 1 88 - FrameIndex XZWE P 1 89 - FrameIndex XZWE Q 1 90 - FrameIndex XZWE R 1 91 - FrameIndex XZWE S 1 92 - FrameIndex XZWE T 1 93 - FrameIndex XZWE U 1 94 - SurfaceSkin 1 4 "" - // Load (Purple) - SurfaceSkin 1 5 "Shell_Ball.png" - FrameIndex XZWE V 1 62 - FrameIndex XZWE W 1 63 - FrameIndex XZWE X 1 64 - FrameIndex XZWE Y 1 65 - FrameIndex XZWE Z 1 66 - FrameIndex XZWF A 1 67 - FrameIndex XZWF B 1 68 - FrameIndex XZWF C 1 69 - FrameIndex XZWF D 1 70 - FrameIndex XZWF E 1 71 - FrameIndex XZWF F 1 72 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Ball.png" - FrameIndex XZWF G 1 73 - FrameIndex XZWF H 1 74 - FrameIndex XZWF I 1 75 - FrameIndex XZWF J 1 76 - FrameIndex XZWF K 1 77 - FrameIndex XZWF L 1 78 - FrameIndex XZWF M 1 79 - FrameIndex XZWF N 1 80 - FrameIndex XZWF O 1 81 - FrameIndex XZWF P 1 82 - FrameIndex XZWF Q 1 83 - FrameIndex XZWF R 1 84 - FrameIndex XZWF S 1 85 - FrameIndex XZWF T 1 86 - FrameIndex XZWF U 1 87 - FrameIndex XZWF V 1 88 - FrameIndex XZWF W 1 89 - FrameIndex XZWF X 1 90 - FrameIndex XZWF Y 1 91 - FrameIndex XZWF Z 1 92 - FrameIndex XZWG A 1 93 - FrameIndex XZWG B 1 94 - SurfaceSkin 1 4 "" - // Load (Gold) - SurfaceSkin 1 5 "Shell_Gold.png" - FrameIndex XZWG C 1 62 - FrameIndex XZWG D 1 63 - FrameIndex XZWG E 1 64 - FrameIndex XZWG F 1 65 - FrameIndex XZWG G 1 66 - FrameIndex XZWG H 1 67 - FrameIndex XZWG I 1 68 - FrameIndex XZWG J 1 69 - FrameIndex XZWG K 1 70 - FrameIndex XZWG L 1 71 - FrameIndex XZWG M 1 72 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Gold.png" - FrameIndex XZWG N 1 73 - FrameIndex XZWG O 1 74 - FrameIndex XZWG P 1 75 - FrameIndex XZWG Q 1 76 - FrameIndex XZWG R 1 77 - FrameIndex XZWG S 1 78 - FrameIndex XZWG T 1 79 - FrameIndex XZWG U 1 80 - FrameIndex XZWG V 1 81 - FrameIndex XZWG W 1 82 - FrameIndex XZWG X 1 83 - FrameIndex XZWG Y 1 84 - FrameIndex XZWG Z 1 85 - FrameIndex XZWH A 1 86 - FrameIndex XZWH B 1 87 - FrameIndex XZWH C 1 88 - FrameIndex XZWH D 1 89 - FrameIndex XZWH E 1 90 - FrameIndex XZWH F 1 91 - FrameIndex XZWH G 1 92 - FrameIndex XZWH H 1 93 - FrameIndex XZWH I 1 94 - SurfaceSkin 1 4 "" - ///// PRIMED (Again) - // Check out - FrameIndex XZWH J 1 96 - FrameIndex XZWH K 1 97 - FrameIndex XZWH L 1 98 - FrameIndex XZWH M 1 99 - FrameIndex XZWH N 1 100 - FrameIndex XZWH O 1 101 - FrameIndex XZWH P 1 102 - FrameIndex XZWH Q 1 103 - FrameIndex XZWH R 1 104 - FrameIndex XZWH S 1 105 - FrameIndex XZWH T 1 106 - FrameIndex XZWH U 1 107 - FrameIndex XZWH V 1 108 - FrameIndex XZWH W 1 109 - FrameIndex XZWH X 1 110 - FrameIndex XZWH Y 1 111 - FrameIndex XZWH Z 1 112 - FrameIndex XZWI A 1 113 - FrameIndex XZWI B 1 114 - FrameIndex XZWI C 1 115 - FrameIndex XZWI D 1 116 - FrameIndex XZWI E 1 117 - FrameIndex XZWI F 1 118 - FrameIndex XZWI G 1 119 - FrameIndex XZWI H 1 120 - FrameIndex XZWI I 1 121 - // Melee - FrameIndex XZWI J 1 123 - FrameIndex XZWI K 1 124 - FrameIndex XZWI L 1 125 - FrameIndex XZWI M 1 126 - FrameIndex XZWI N 1 127 - FrameIndex XZWI O 1 128 - FrameIndex XZWI P 1 129 - FrameIndex XZWI Q 1 130 - FrameIndex XZWI R 1 131 - FrameIndex XZWI S 1 132 - FrameIndex XZWI T 1 133 - FrameIndex XZWI U 1 134 - FrameIndex XZWI V 1 135 - ////// FIRED (Extra) - // Check out - FrameIndex XZWI W 1 138 - FrameIndex XZWI X 1 139 - FrameIndex XZWI Y 1 140 - FrameIndex XZWI Z 1 141 - FrameIndex XZWJ A 1 142 - FrameIndex XZWJ B 1 143 - FrameIndex XZWJ C 1 144 - FrameIndex XZWJ D 1 145 - FrameIndex XZWJ E 1 146 - FrameIndex XZWJ F 1 147 - FrameIndex XZWJ G 1 148 - FrameIndex XZWJ H 1 149 - FrameIndex XZWJ I 1 150 - FrameIndex XZWJ J 1 151 - FrameIndex XZWJ K 1 152 - FrameIndex XZWJ L 1 153 - FrameIndex XZWJ M 1 154 - FrameIndex XZWJ N 1 155 - FrameIndex XZWJ O 1 156 - FrameIndex XZWJ P 1 157 - FrameIndex XZWJ Q 1 158 - FrameIndex XZWJ R 1 159 - FrameIndex XZWJ S 1 160 - FrameIndex XZWJ T 1 161 - FrameIndex XZWJ U 1 162 - FrameIndex XZWJ V 1 163 - // Melee - FrameIndex XZWJ W 1 165 - FrameIndex XZWJ X 1 166 - FrameIndex XZWJ Y 1 167 - FrameIndex XZWJ Z 1 168 - FrameIndex XZWK A 1 169 - FrameIndex XZWK B 1 170 - FrameIndex XZWK C 1 171 - FrameIndex XZWK D 1 172 - FrameIndex XZWK E 1 173 - FrameIndex XZWK F 1 174 - FrameIndex XZWK G 1 175 - FrameIndex XZWK H 1 176 - FrameIndex XZWK I 1 177 - ////// PRIMED (Extra) - // Unload (Red) - SurfaceSkin 1 4 "Shell_Normal.png" - FrameIndex XZWK J 1 180 - FrameIndex XZWK K 1 181 - FrameIndex XZWK L 1 182 - FrameIndex XZWK M 1 183 - FrameIndex XZWK N 1 184 - FrameIndex XZWK O 1 185 - FrameIndex XZWK P 1 186 - FrameIndex XZWK Q 1 187 - FrameIndex XZWK R 1 188 - FrameIndex XZWK S 1 189 - FrameIndex XZWK T 1 190 - FrameIndex XZWK U 1 191 - FrameIndex XZWK V 1 192 - FrameIndex XZWK W 1 193 - FrameIndex XZWK X 1 194 - FrameIndex XZWK Y 1 195 - FrameIndex XZWK Z 1 196 - SurfaceSkin 1 4 "" - FrameIndex XZWL A 1 197 - // Unload (Green) - SurfaceSkin 1 4 "Shell_Slug.png" - FrameIndex XZWL B 1 180 - FrameIndex XZWL C 1 181 - FrameIndex XZWL D 1 182 - FrameIndex XZWL E 1 183 - FrameIndex XZWL F 1 184 - FrameIndex XZWL G 1 185 - FrameIndex XZWL H 1 186 - FrameIndex XZWL I 1 187 - FrameIndex XZWL J 1 188 - FrameIndex XZWL K 1 189 - FrameIndex XZWL L 1 190 - FrameIndex XZWL M 1 191 - FrameIndex XZWL N 1 192 - FrameIndex XZWL O 1 193 - FrameIndex XZWL P 1 194 - FrameIndex XZWL Q 1 195 - FrameIndex XZWL R 1 196 - SurfaceSkin 1 4 "" - FrameIndex XZWL S 1 197 - // Unload (White) - SurfaceSkin 1 4 "Shell_Dragon.png" - FrameIndex XZWL T 1 180 - FrameIndex XZWL U 1 181 - FrameIndex XZWL V 1 182 - FrameIndex XZWL W 1 183 - FrameIndex XZWL X 1 184 - FrameIndex XZWL Y 1 185 - FrameIndex XZWL Z 1 186 - FrameIndex XZWM A 1 187 - FrameIndex XZWM B 1 188 - FrameIndex XZWM C 1 189 - FrameIndex XZWM D 1 190 - FrameIndex XZWM E 1 191 - FrameIndex XZWM F 1 192 - FrameIndex XZWM G 1 193 - FrameIndex XZWM H 1 194 - FrameIndex XZWM I 1 195 - FrameIndex XZWM J 1 196 - SurfaceSkin 1 4 "" - FrameIndex XZWM K 1 197 - // Unload (Blue) - SurfaceSkin 1 4 "Shell_Kinylum.png" - FrameIndex XZWM L 1 180 - FrameIndex XZWM M 1 181 - FrameIndex XZWM N 1 182 - FrameIndex XZWM O 1 183 - FrameIndex XZWM P 1 184 - FrameIndex XZWM Q 1 185 - FrameIndex XZWM R 1 186 - FrameIndex XZWM S 1 187 - FrameIndex XZWM T 1 188 - FrameIndex XZWM U 1 189 - FrameIndex XZWM V 1 190 - FrameIndex XZWM W 1 191 - FrameIndex XZWM X 1 192 - FrameIndex XZWM Y 1 193 - FrameIndex XZWM Z 1 194 - FrameIndex XZWN A 1 195 - FrameIndex XZWN B 1 196 - SurfaceSkin 1 4 "" - FrameIndex XZWN C 1 197 - // Unload (Black) - SurfaceSkin 1 4 "Shell_Fuck.png" - FrameIndex XZWN D 1 180 - FrameIndex XZWN E 1 181 - FrameIndex XZWN F 1 182 - FrameIndex XZWN G 1 183 - FrameIndex XZWN H 1 184 - FrameIndex XZWN I 1 185 - FrameIndex XZWN J 1 186 - FrameIndex XZWN K 1 187 - FrameIndex XZWN L 1 188 - FrameIndex XZWN M 1 189 - FrameIndex XZWN N 1 190 - FrameIndex XZWN O 1 191 - FrameIndex XZWN P 1 192 - FrameIndex XZWN Q 1 193 - FrameIndex XZWN R 1 194 - FrameIndex XZWN S 1 195 - FrameIndex XZWN T 1 196 - SurfaceSkin 1 4 "" - FrameIndex XZWN U 1 197 - // Unload (Purple) - SurfaceSkin 1 4 "Shell_Ball.png" - FrameIndex XZWN V 1 180 - FrameIndex XZWN W 1 181 - FrameIndex XZWN X 1 182 - FrameIndex XZWN Y 1 183 - FrameIndex XZWN Z 1 184 - FrameIndex XZWO A 1 185 - FrameIndex XZWO B 1 186 - FrameIndex XZWO C 1 187 - FrameIndex XZWO D 1 188 - FrameIndex XZWO E 1 189 - FrameIndex XZWO F 1 190 - FrameIndex XZWO G 1 191 - FrameIndex XZWO H 1 192 - FrameIndex XZWO I 1 193 - FrameIndex XZWO J 1 194 - FrameIndex XZWO K 1 195 - FrameIndex XZWO L 1 196 - SurfaceSkin 1 4 "" - FrameIndex XZWO M 1 197 - // Unload (Gold) - SurfaceSkin 1 4 "Shell_Gold.png" - FrameIndex XZWO N 1 180 - FrameIndex XZWO O 1 181 - FrameIndex XZWO P 1 182 - FrameIndex XZWO Q 1 183 - FrameIndex XZWO R 1 184 - FrameIndex XZWO S 1 185 - FrameIndex XZWO T 1 186 - FrameIndex XZWO U 1 187 - FrameIndex XZWO V 1 188 - FrameIndex XZWO W 1 189 - FrameIndex XZWO X 1 190 - FrameIndex XZWO Y 1 191 - FrameIndex XZWO Z 1 192 - FrameIndex XZWP A 1 193 - FrameIndex XZWP B 1 194 - FrameIndex XZWP C 1 195 - FrameIndex XZWP D 1 196 - SurfaceSkin 1 4 "" - FrameIndex XZWP E 1 197 - // Load (Red) - SurfaceSkin 1 5 "Shell_Normal.png" - FrameIndex XZWP F 1 198 - FrameIndex XZWP G 1 199 - FrameIndex XZWP H 1 200 - FrameIndex XZWP I 1 201 - FrameIndex XZWP J 1 202 - FrameIndex XZWP K 1 203 - FrameIndex XZWP L 1 204 - FrameIndex XZWP M 1 205 - FrameIndex XZWP N 1 206 - FrameIndex XZWP O 1 207 - FrameIndex XZWP P 1 208 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Normal.png" - FrameIndex XZWP Q 1 209 - FrameIndex XZWP R 1 210 - FrameIndex XZWP S 1 211 - FrameIndex XZWP T 1 212 - FrameIndex XZWP U 1 213 - FrameIndex XZWP V 1 214 - FrameIndex XZWP W 1 215 - FrameIndex XZWP X 1 216 - FrameIndex XZWP Y 1 217 - FrameIndex XZWP Z 1 218 - FrameIndex XZWQ A 1 219 - FrameIndex XZWQ B 1 220 - FrameIndex XZWQ C 1 221 - FrameIndex XZWQ D 1 222 - FrameIndex XZWQ E 1 223 - FrameIndex XZWQ F 1 224 - FrameIndex XZWQ G 1 225 - FrameIndex XZWQ H 1 226 - FrameIndex XZWQ I 1 227 - FrameIndex XZWQ J 1 228 - FrameIndex XZWQ K 1 229 - FrameIndex XZWQ L 1 230 - SurfaceSkin 1 4 "" - // Load (Green) - SurfaceSkin 1 5 "Shell_Slug.png" - FrameIndex XZWQ M 1 198 - FrameIndex XZWQ N 1 199 - FrameIndex XZWQ O 1 200 - FrameIndex XZWQ P 1 201 - FrameIndex XZWQ Q 1 202 - FrameIndex XZWQ R 1 203 - FrameIndex XZWQ S 1 204 - FrameIndex XZWQ T 1 205 - FrameIndex XZWQ U 1 206 - FrameIndex XZWQ V 1 207 - FrameIndex XZWQ W 1 208 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Slug.png" - FrameIndex XZWQ X 1 209 - FrameIndex XZWQ Y 1 210 - FrameIndex XZWQ Z 1 211 - FrameIndex XZWR A 1 212 - FrameIndex XZWR B 1 213 - FrameIndex XZWR C 1 214 - FrameIndex XZWR D 1 215 - FrameIndex XZWR E 1 216 - FrameIndex XZWR F 1 217 - FrameIndex XZWR G 1 218 - FrameIndex XZWR H 1 219 - FrameIndex XZWR I 1 220 - FrameIndex XZWR J 1 221 - FrameIndex XZWR K 1 222 - FrameIndex XZWR L 1 223 - FrameIndex XZWR M 1 224 - FrameIndex XZWR N 1 225 - FrameIndex XZWR O 1 226 - FrameIndex XZWR P 1 227 - FrameIndex XZWR Q 1 228 - FrameIndex XZWR R 1 229 - FrameIndex XZWR S 1 230 - SurfaceSkin 1 4 "" - // Load (White) - SurfaceSkin 1 5 "Shell_Dragon.png" - FrameIndex XZWR T 1 198 - FrameIndex XZWR U 1 199 - FrameIndex XZWR V 1 200 - FrameIndex XZWR W 1 201 - FrameIndex XZWR X 1 202 - FrameIndex XZWR Y 1 203 - FrameIndex XZWR Z 1 204 - FrameIndex XZWS A 1 205 - FrameIndex XZWS B 1 206 - FrameIndex XZWS C 1 207 - FrameIndex XZWS D 1 208 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Dragon.png" - FrameIndex XZWS E 1 209 - FrameIndex XZWS F 1 210 - FrameIndex XZWS G 1 211 - FrameIndex XZWS H 1 212 - FrameIndex XZWS I 1 213 - FrameIndex XZWS J 1 214 - FrameIndex XZWS K 1 215 - FrameIndex XZWS L 1 216 - FrameIndex XZWS M 1 217 - FrameIndex XZWS N 1 218 - FrameIndex XZWS O 1 219 - FrameIndex XZWS P 1 220 - FrameIndex XZWS Q 1 221 - FrameIndex XZWS R 1 222 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Gold.png" - FrameIndex XZWS S 1 223 - FrameIndex XZWS T 1 224 - FrameIndex XZWS U 1 225 - FrameIndex XZWS V 1 226 - FrameIndex XZWS W 1 227 - FrameIndex XZWS X 1 228 - FrameIndex XZWS Y 1 229 - FrameIndex XZWS Z 1 230 - SurfaceSkin 1 4 "" - // Load (Blue) - SurfaceSkin 1 5 "Shell_Kinylum.png" - FrameIndex XZWT A 1 198 - FrameIndex XZWT B 1 199 - FrameIndex XZWT C 1 200 - FrameIndex XZWT D 1 201 - FrameIndex XZWT E 1 202 - FrameIndex XZWT F 1 203 - FrameIndex XZWT G 1 204 - FrameIndex XZWT H 1 205 - FrameIndex XZWT I 1 206 - FrameIndex XZWT J 1 207 - FrameIndex XZWT K 1 208 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Kinylum.png" - FrameIndex XZWT L 1 209 - FrameIndex XZWT M 1 210 - FrameIndex XZWT N 1 211 - FrameIndex XZWT O 1 212 - FrameIndex XZWT P 1 213 - FrameIndex XZWT Q 1 214 - FrameIndex XZWT R 1 215 - FrameIndex XZWT S 1 216 - FrameIndex XZWT T 1 217 - FrameIndex XZWT U 1 218 - FrameIndex XZWT V 1 219 - FrameIndex XZWT W 1 220 - FrameIndex XZWT X 1 221 - FrameIndex XZWT Y 1 222 - FrameIndex XZWT Z 1 223 - FrameIndex XZWU A 1 224 - FrameIndex XZWU B 1 225 - FrameIndex XZWU C 1 226 - FrameIndex XZWU D 1 227 - FrameIndex XZWU E 1 228 - FrameIndex XZWU F 1 229 - FrameIndex XZWU G 1 230 - SurfaceSkin 1 4 "" - // Load (Black) - SurfaceSkin 1 5 "Shell_Fuck.png" - FrameIndex XZWU H 1 198 - FrameIndex XZWU I 1 199 - FrameIndex XZWU J 1 200 - FrameIndex XZWU K 1 201 - FrameIndex XZWU L 1 202 - FrameIndex XZWU M 1 203 - FrameIndex XZWU N 1 204 - FrameIndex XZWU O 1 205 - FrameIndex XZWU P 1 206 - FrameIndex XZWU Q 1 207 - FrameIndex XZWU R 1 208 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Fuck.png" - FrameIndex XZWU S 1 209 - FrameIndex XZWU T 1 210 - FrameIndex XZWU U 1 211 - FrameIndex XZWU V 1 212 - FrameIndex XZWU W 1 213 - FrameIndex XZWU X 1 214 - FrameIndex XZWU Y 1 215 - FrameIndex XZWU Z 1 216 - FrameIndex XZWV A 1 217 - FrameIndex XZWV B 1 218 - FrameIndex XZWV C 1 219 - FrameIndex XZWV D 1 220 - FrameIndex XZWV E 1 221 - FrameIndex XZWV F 1 222 - FrameIndex XZWV G 1 223 - FrameIndex XZWV H 1 224 - FrameIndex XZWV I 1 225 - FrameIndex XZWV J 1 226 - FrameIndex XZWV K 1 227 - FrameIndex XZWV L 1 228 - FrameIndex XZWV M 1 229 - FrameIndex XZWV N 1 230 - SurfaceSkin 1 4 "" - // Load (Purple) - SurfaceSkin 1 5 "Shell_Ball.png" - FrameIndex XZWV O 1 198 - FrameIndex XZWV P 1 199 - FrameIndex XZWV Q 1 200 - FrameIndex XZWV R 1 201 - FrameIndex XZWV S 1 202 - FrameIndex XZWV T 1 203 - FrameIndex XZWV U 1 204 - FrameIndex XZWV V 1 205 - FrameIndex XZWV W 1 206 - FrameIndex XZWV X 1 207 - FrameIndex XZWV Y 1 208 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Ball.png" - FrameIndex XZWV Z 1 209 - FrameIndex XZWW A 1 210 - FrameIndex XZWW B 1 211 - FrameIndex XZWW C 1 212 - FrameIndex XZWW D 1 213 - FrameIndex XZWW E 1 214 - FrameIndex XZWW F 1 215 - FrameIndex XZWW G 1 216 - FrameIndex XZWW H 1 217 - FrameIndex XZWW I 1 218 - FrameIndex XZWW J 1 219 - FrameIndex XZWW K 1 220 - FrameIndex XZWW L 1 221 - FrameIndex XZWW M 1 222 - FrameIndex XZWW N 1 223 - FrameIndex XZWW O 1 224 - FrameIndex XZWW P 1 225 - FrameIndex XZWW Q 1 226 - FrameIndex XZWW R 1 227 - FrameIndex XZWW S 1 228 - FrameIndex XZWW T 1 229 - FrameIndex XZWW U 1 230 - SurfaceSkin 1 4 "" - // Load (Gold) - SurfaceSkin 1 5 "Shell_Gold.png" - FrameIndex XZWW V 1 198 - FrameIndex XZWW W 1 199 - FrameIndex XZWW X 1 200 - FrameIndex XZWW Y 1 201 - FrameIndex XZWW Z 1 202 - FrameIndex XZWX A 1 203 - FrameIndex XZWX B 1 204 - FrameIndex XZWX C 1 205 - FrameIndex XZWX D 1 206 - FrameIndex XZWX E 1 207 - FrameIndex XZWX F 1 208 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Gold.png" - FrameIndex XZWX G 1 209 - FrameIndex XZWX H 1 210 - FrameIndex XZWX I 1 211 - FrameIndex XZWX J 1 212 - FrameIndex XZWX K 1 213 - FrameIndex XZWX L 1 214 - FrameIndex XZWX M 1 215 - FrameIndex XZWX N 1 216 - FrameIndex XZWX O 1 217 - FrameIndex XZWX P 1 218 - FrameIndex XZWX Q 1 219 - FrameIndex XZWX R 1 220 - FrameIndex XZWX S 1 221 - FrameIndex XZWX T 1 222 - FrameIndex XZWX U 1 223 - FrameIndex XZWX V 1 224 - FrameIndex XZWX W 1 225 - FrameIndex XZWX X 1 226 - FrameIndex XZWX Y 1 227 - FrameIndex XZWX Z 1 228 - FrameIndex XZWY A 1 229 - FrameIndex XZWY B 1 230 - SurfaceSkin 1 4 "" - // Empty Unload - FrameIndex XZWY C 1 232 - FrameIndex XZWY D 1 233 - FrameIndex XZWY E 1 234 - FrameIndex XZWY F 1 235 - FrameIndex XZWY G 1 236 - FrameIndex XZWY H 1 237 - FrameIndex XZWY I 1 238 - FrameIndex XZWY J 1 239 - FrameIndex XZWY K 1 240 - FrameIndex XZWY L 1 241 - FrameIndex XZWY M 1 242 - FrameIndex XZWY N 1 243 - FrameIndex XZWY O 1 244 - FrameIndex XZWY P 1 245 - FrameIndex XZWY Q 1 246 - FrameIndex XZWY R 1 247 - FrameIndex XZWY S 1 248 - FrameIndex XZWY T 1 249 - FrameIndex XZWY U 1 250 - // Empty Load - FrameIndex XZWY V 1 251 - FrameIndex XZWY W 1 252 - FrameIndex XZWY X 1 253 - FrameIndex XZWY Y 1 254 - FrameIndex XZWY Z 1 255 - FrameIndex XZWZ A 1 256 - FrameIndex XZWZ B 1 257 - FrameIndex XZWZ C 1 258 - FrameIndex XZWZ D 1 259 - FrameIndex XZWZ E 1 260 - FrameIndex XZWZ F 1 261 - FrameIndex XZWZ G 1 262 - FrameIndex XZWZ H 1 263 - FrameIndex XZWZ I 1 264 - FrameIndex XZWZ J 1 265 - FrameIndex XZWZ K 1 266 - FrameIndex XZWZ L 1 267 - FrameIndex XZWZ M 1 268 - FrameIndex XZWZ N 1 269 - FrameIndex XZWZ O 1 270 - // Empty Load (Fired) - FrameIndex XZWZ P 1 272 - FrameIndex XZWZ Q 1 273 - FrameIndex XZWZ R 1 274 - FrameIndex XZWZ S 1 275 - FrameIndex XZWZ T 1 276 - FrameIndex XZWZ U 1 277 - FrameIndex XZWZ V 1 278 - FrameIndex XZWZ W 1 279 - FrameIndex XZWZ X 1 280 - FrameIndex XZWZ Y 1 281 - FrameIndex XZWZ Z 1 282 - FrameIndex XZW0 H 1 283 - FrameIndex XZW0 I 1 284 - FrameIndex XZW0 J 1 285 - FrameIndex XZW0 K 1 286 - FrameIndex XZW0 L 1 287 - FrameIndex XZW0 M 1 288 - FrameIndex XZW0 N 1 289 - FrameIndex XZW0 O 1 290 - FrameIndex XZW0 P 1 291 - FrameIndex XZW0 Q 1 292 -} diff --git a/modeldef.txt b/modeldef.txt new file mode 100644 index 000000000..7b3415884 --- /dev/null +++ b/modeldef.txt @@ -0,0 +1,34 @@ +// base stuff +#include "modeldef/misc.txt" +#include "modeldef/demolitionist.txt" +#include "modeldef/gesture.txt" +// items +#include "modeldef/items/ammo.txt" +#include "modeldef/items/pickups.txt" +#include "modeldef/items/keys.txt" +#include "modeldef/items/funstuff.txt" +#include "modeldef/items/collectibles.txt" +#include "modeldef/items/itemgesture.txt" +// weapons +#include "modeldef/weapons/deepimpact.txt" +#include "modeldef/weapons/explodiumgun.txt" +#include "modeldef/weapons/spreadgun.txt" +#include "modeldef/weapons/wallbuster.txt" +#include "modeldef/weapons/eviscerator.txt" +#include "modeldef/weapons/hellblazer.txt" +#include "modeldef/weapons/sparkster.txt" +#include "modeldef/weapons/silverbullet.txt" +#include "modeldef/weapons/candygun.txt" +#include "modeldef/weapons/ynykron.txt" +// dlc weaponset +#include "modeldef/dlc/dlcammo.txt" +#include "modeldef/dlc/hammer.txt" +//#include "modeldef/dlc/plasmablast.txt" +//#include "modeldef/dlc/puntzerbeta.txt" +//#include "modeldef/dlc/puntzergamma.txt" +#include "modeldef/dlc/sheenhmg.txt" +#include "modeldef/dlc/quadravol.txt" +//#include "modeldef/dlc/newsparkster.txt" +//#include "modeldef/dlc/raykhom.txt" +#include "modeldef/dlc/mortalrifle.txt" +//#include "modeldef/dlc/rafankos.txt" diff --git a/modeldef.wallbuster b/modeldef.wallbuster deleted file mode 100644 index 933805365..000000000 --- a/modeldef.wallbuster +++ /dev/null @@ -1,737 +0,0 @@ -Model "Wallbuster" -{ - Path "models" - - Model 0 "WallbusterPickup_d.3d" - Skin 0 "Wallbuster.png" - Scale 0.18 0.18 0.18 - AngleOffset 180 - ZOffset 28 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "Wallbuster" -{ - // muzzle flashes - Path "models/extra" - - Model 3 "Flat_d.3d" - RollOffset 90 - AngleOffset 90 - - // Base 12 -60 -24 - // Radius1 10 - // Radius2 3 - - // Buckshot - Scale 0.13 0.13 0.13 - Skin 3 "ShotgMuz.png" - Offset 12 -60 -11 - FrameIndex XZWW A 3 0 - Offset 14.8532 -60 -13.0729 - FrameIndex XZWW B 3 0 - Offset 13.7634 -60 -16.4271 - FrameIndex XZWW C 3 0 - Offset 10.2366 -60 -16.4271 - FrameIndex XZWW D 3 0 - Offset 9.14683 -60 -13.0729 - FrameIndex XZWW E 3 0 - Offset 24.3637 -60 -19.9828 - FrameIndex XZWW F 3 0 - Offset 23.2739 -60 -23.3369 - FrameIndex XZWW G 3 0 - Offset 19.7472 -60 -23.3369 - FrameIndex XZWW H 3 0 - Offset 18.6574 -60 -19.9828 - FrameIndex XZWW I 3 0 - Offset 21.5106 -60 -17.9098 - FrameIndex XZWW J 3 0 - Offset 19.6412 -60 -34.5172 - FrameIndex XZWW K 3 0 - Offset 16.1145 -60 -34.5172 - FrameIndex XZWW L 3 0 - Offset 15.0247 -60 -31.1631 - FrameIndex XZWW M 3 0 - Offset 17.8779 -60 -29.0902 - FrameIndex XZWW N 3 0 - Offset 20.731 -60 -31.1631 - FrameIndex XZWW O 3 0 - Offset 4.35879 -60 -34.5172 - FrameIndex XZWW P 3 0 - Offset 3.26898 -60 -31.1631 - FrameIndex XZWW Q 3 0 - Offset 6.12215 -60 -29.0902 - FrameIndex XZWW R 3 0 - Offset 8.97532 -60 -31.1631 - FrameIndex XZWW S 3 0 - Offset 7.8855 -60 -34.5172 - FrameIndex XZWW T 3 0 - Offset -0.363735 -60 -19.9828 - FrameIndex XZWW U 3 0 - Offset 2.48943 -60 -17.9098 - FrameIndex XZWW V 3 0 - Offset 5.3426 -60 -19.9828 - FrameIndex XZWW W 3 0 - Offset 4.25279 -60 -23.3369 - FrameIndex XZWW X 3 0 - Offset 0.726079 -60 -23.3369 - FrameIndex XZWW Y 3 0 - // Slug - Scale 0.08 0.08 0.08 - Skin 3 "ShotgMuz.png" - Offset 12 -60 -11 - FrameIndex XZWX A 3 0 - Offset 14.8532 -60 -13.0729 - FrameIndex XZWX B 3 0 - Offset 13.7634 -60 -16.4271 - FrameIndex XZWX C 3 0 - Offset 10.2366 -60 -16.4271 - FrameIndex XZWX D 3 0 - Offset 9.14683 -60 -13.0729 - FrameIndex XZWX E 3 0 - Offset 24.3637 -60 -19.9828 - FrameIndex XZWX F 3 0 - Offset 23.2739 -60 -23.3369 - FrameIndex XZWX G 3 0 - Offset 19.7472 -60 -23.3369 - FrameIndex XZWX H 3 0 - Offset 18.6574 -60 -19.9828 - FrameIndex XZWX I 3 0 - Offset 21.5106 -60 -17.9098 - FrameIndex XZWX J 3 0 - Offset 19.6412 -60 -34.5172 - FrameIndex XZWX K 3 0 - Offset 16.1145 -60 -34.5172 - FrameIndex XZWX L 3 0 - Offset 15.0247 -60 -31.1631 - FrameIndex XZWX M 3 0 - Offset 17.8779 -60 -29.0902 - FrameIndex XZWX N 3 0 - Offset 20.731 -60 -31.1631 - FrameIndex XZWX O 3 0 - Offset 4.35879 -60 -34.5172 - FrameIndex XZWX P 3 0 - Offset 3.26898 -60 -31.1631 - FrameIndex XZWX Q 3 0 - Offset 6.12215 -60 -29.0902 - FrameIndex XZWX R 3 0 - Offset 8.97532 -60 -31.1631 - FrameIndex XZWX S 3 0 - Offset 7.8855 -60 -34.5172 - FrameIndex XZWX T 3 0 - Offset -0.363735 -60 -19.9828 - FrameIndex XZWX U 3 0 - Offset 2.48943 -60 -17.9098 - FrameIndex XZWX V 3 0 - Offset 5.3426 -60 -19.9828 - FrameIndex XZWX W 3 0 - Offset 4.25279 -60 -23.3369 - FrameIndex XZWX X 3 0 - Offset 0.726079 -60 -23.3369 - FrameIndex XZWX Y 3 0 - // Kinylum - Scale 0.13 0.13 0.13 - Skin 3 "ShotgMuzSalt.png" - Offset 12 -60 -11 - FrameIndex XZWY A 3 0 - Offset 14.8532 -60 -13.0729 - FrameIndex XZWY B 3 0 - Offset 13.7634 -60 -16.4271 - FrameIndex XZWY C 3 0 - Offset 10.2366 -60 -16.4271 - FrameIndex XZWY D 3 0 - Offset 9.14683 -60 -13.0729 - FrameIndex XZWY E 3 0 - Offset 24.3637 -60 -19.9828 - FrameIndex XZWY F 3 0 - Offset 23.2739 -60 -23.3369 - FrameIndex XZWY G 3 0 - Offset 19.7472 -60 -23.3369 - FrameIndex XZWY H 3 0 - Offset 18.6574 -60 -19.9828 - FrameIndex XZWY I 3 0 - Offset 21.5106 -60 -17.9098 - FrameIndex XZWY J 3 0 - Offset 19.6412 -60 -34.5172 - FrameIndex XZWY K 3 0 - Offset 16.1145 -60 -34.5172 - FrameIndex XZWY L 3 0 - Offset 15.0247 -60 -31.1631 - FrameIndex XZWY M 3 0 - Offset 17.8779 -60 -29.0902 - FrameIndex XZWY N 3 0 - Offset 20.731 -60 -31.1631 - FrameIndex XZWY O 3 0 - Offset 4.35879 -60 -34.5172 - FrameIndex XZWY P 3 0 - Offset 3.26898 -60 -31.1631 - FrameIndex XZWY Q 3 0 - Offset 6.12215 -60 -29.0902 - FrameIndex XZWY R 3 0 - Offset 8.97532 -60 -31.1631 - FrameIndex XZWY S 3 0 - Offset 7.8855 -60 -34.5172 - FrameIndex XZWY T 3 0 - Offset -0.363735 -60 -19.9828 - FrameIndex XZWY U 3 0 - Offset 2.48943 -60 -17.9098 - FrameIndex XZWY V 3 0 - Offset 5.3426 -60 -19.9828 - FrameIndex XZWY W 3 0 - Offset 4.25279 -60 -23.3369 - FrameIndex XZWY X 3 0 - Offset 0.726079 -60 -23.3369 - FrameIndex XZWY Y 3 0 - // Ball - Scale 0.06 0.06 0.06 - Skin 3 "ShotgMuz.png" - Offset 12 -60 -11 - FrameIndex XZWZ A 3 0 - Offset 14.8532 -60 -13.0729 - FrameIndex XZWZ B 3 0 - Offset 13.7634 -60 -16.4271 - FrameIndex XZWZ C 3 0 - Offset 10.2366 -60 -16.4271 - FrameIndex XZWZ D 3 0 - Offset 9.14683 -60 -13.0729 - FrameIndex XZWZ E 3 0 - Offset 24.3637 -60 -19.9828 - FrameIndex XZWZ F 3 0 - Offset 23.2739 -60 -23.3369 - FrameIndex XZWZ G 3 0 - Offset 19.7472 -60 -23.3369 - FrameIndex XZWZ H 3 0 - Offset 18.6574 -60 -19.9828 - FrameIndex XZWZ I 3 0 - Offset 21.5106 -60 -17.9098 - FrameIndex XZWZ J 3 0 - Offset 19.6412 -60 -34.5172 - FrameIndex XZWZ K 3 0 - Offset 16.1145 -60 -34.5172 - FrameIndex XZWZ L 3 0 - Offset 15.0247 -60 -31.1631 - FrameIndex XZWZ M 3 0 - Offset 17.8779 -60 -29.0902 - FrameIndex XZWZ N 3 0 - Offset 20.731 -60 -31.1631 - FrameIndex XZWZ O 3 0 - Offset 4.35879 -60 -34.5172 - FrameIndex XZWZ P 3 0 - Offset 3.26898 -60 -31.1631 - FrameIndex XZWZ Q 3 0 - Offset 6.12215 -60 -29.0902 - FrameIndex XZWZ R 3 0 - Offset 8.97532 -60 -31.1631 - FrameIndex XZWZ S 3 0 - Offset 7.8855 -60 -34.5172 - FrameIndex XZWZ T 3 0 - Offset -0.363735 -60 -19.9828 - FrameIndex XZWZ U 3 0 - Offset 2.48943 -60 -17.9098 - FrameIndex XZWZ V 3 0 - Offset 5.3426 -60 -19.9828 - FrameIndex XZWZ W 3 0 - Offset 4.25279 -60 -23.3369 - FrameIndex XZWZ X 3 0 - Offset 0.726079 -60 -23.3369 - FrameIndex XZWZ Y 3 0 -} - -Model "Wallbuster" -{ - // shells - Path "models" - - Model 2 "Wallbuster1st_d.3d" - AngleOffset -93 - PitchOffset 0.4 - Offset 0 2 0 - Scale -0.005 0.0025 0.005 - - ////// Unfired - //// Shell0 - SurfaceSkin 2 4 "Shell_Normal.png" - // Detach - FrameIndex XZWA E 2 91 - FrameIndex XZWA F 2 92 - FrameIndex XZWA G 2 93 - FrameIndex XZWA H 2 94 - FrameIndex XZWA I 2 95 - FrameIndex XZWA J 2 96 - FrameIndex XZWA K 2 97 - FrameIndex XZWA L 2 98 - FrameIndex XZWA M 2 99 - FrameIndex XZWA N 2 100 - // Attach - FrameIndex XZWA O 2 116 - FrameIndex XZWA P 2 117 - FrameIndex XZWA Q 2 118 - FrameIndex XZWA R 2 119 - FrameIndex XZWA S 2 120 - FrameIndex XZWA T 2 121 - FrameIndex XZWA U 2 122 - FrameIndex XZWA V 2 123 - FrameIndex XZWA W 2 124 - FrameIndex XZWA X 2 125 - FrameIndex XZWA Y 2 126 - FrameIndex XZWA Z 2 127 - FrameIndex XZWB A 2 128 - FrameIndex XZWB B 2 129 - //// Shell1 - SurfaceSkin 2 4 "" - SurfaceSkin 2 5 "Shell_Normal.png" - // Detach - FrameIndex XZWB C 2 91 - FrameIndex XZWB D 2 92 - FrameIndex XZWB E 2 93 - FrameIndex XZWB F 2 94 - FrameIndex XZWB G 2 95 - FrameIndex XZWB H 2 96 - FrameIndex XZWB I 2 97 - FrameIndex XZWB J 2 98 - FrameIndex XZWB K 2 99 - FrameIndex XZWB L 2 100 - // Attach - FrameIndex XZWB M 2 116 - FrameIndex XZWB N 2 117 - FrameIndex XZWB O 2 118 - FrameIndex XZWB P 2 119 - FrameIndex XZWB Q 2 120 - FrameIndex XZWB R 2 121 - FrameIndex XZWB S 2 122 - FrameIndex XZWB T 2 123 - FrameIndex XZWB U 2 124 - FrameIndex XZWB V 2 125 - FrameIndex XZWB W 2 126 - FrameIndex XZWB X 2 127 - FrameIndex XZWB Y 2 128 - FrameIndex XZWB Z 2 129 - //// Shell2 - SurfaceSkin 2 5 "" - SurfaceSkin 2 6 "Shell_Normal.png" - // Detach - FrameIndex XZWC A 2 91 - FrameIndex XZWC B 2 92 - FrameIndex XZWC C 2 93 - FrameIndex XZWC D 2 94 - FrameIndex XZWC E 2 95 - FrameIndex XZWC F 2 96 - FrameIndex XZWC G 2 97 - FrameIndex XZWC H 2 98 - FrameIndex XZWC I 2 99 - FrameIndex XZWC J 2 100 - // Attach - FrameIndex XZWC K 2 116 - FrameIndex XZWC L 2 117 - FrameIndex XZWC M 2 118 - FrameIndex XZWC N 2 119 - FrameIndex XZWC O 2 120 - FrameIndex XZWC P 2 121 - FrameIndex XZWC Q 2 122 - FrameIndex XZWC R 2 123 - FrameIndex XZWC S 2 124 - FrameIndex XZWC T 2 125 - FrameIndex XZWC U 2 126 - FrameIndex XZWC V 2 127 - FrameIndex XZWC W 2 128 - FrameIndex XZWC X 2 129 - //// Shell3 - SurfaceSkin 2 6 "" - SurfaceSkin 2 7 "Shell_Normal.png" - // Detach - FrameIndex XZWC Y 2 91 - FrameIndex XZWC Z 2 92 - FrameIndex XZWD A 2 93 - FrameIndex XZWD B 2 94 - FrameIndex XZWD C 2 95 - FrameIndex XZWD D 2 96 - FrameIndex XZWD E 2 97 - FrameIndex XZWD F 2 98 - FrameIndex XZWD G 2 99 - FrameIndex XZWD H 2 100 - // Attach - FrameIndex XZWD I 2 116 - FrameIndex XZWD J 2 117 - FrameIndex XZWD K 2 118 - FrameIndex XZWD L 2 119 - FrameIndex XZWD M 2 120 - FrameIndex XZWD N 2 121 - FrameIndex XZWD O 2 122 - FrameIndex XZWD P 2 123 - FrameIndex XZWD Q 2 124 - FrameIndex XZWD R 2 125 - FrameIndex XZWD S 2 126 - FrameIndex XZWD T 2 127 - FrameIndex XZWD U 2 128 - FrameIndex XZWD V 2 129 - //// Shell4 - SurfaceSkin 2 7 "" - SurfaceSkin 2 8 "Shell_Normal.png" - // Detach - FrameIndex XZWD W 2 91 - FrameIndex XZWD X 2 92 - FrameIndex XZWD Y 2 93 - FrameIndex XZWD Z 2 94 - FrameIndex XZWE A 2 95 - FrameIndex XZWE B 2 96 - FrameIndex XZWE C 2 97 - FrameIndex XZWE D 2 98 - FrameIndex XZWE E 2 99 - FrameIndex XZWE F 2 100 - // Attach - FrameIndex XZWE G 2 116 - FrameIndex XZWE H 2 117 - FrameIndex XZWE I 2 118 - FrameIndex XZWE J 2 119 - FrameIndex XZWE K 2 120 - FrameIndex XZWE L 2 121 - FrameIndex XZWE M 2 122 - FrameIndex XZWE N 2 123 - FrameIndex XZWE O 2 124 - FrameIndex XZWE P 2 125 - FrameIndex XZWE Q 2 126 - FrameIndex XZWE R 2 127 - FrameIndex XZWE S 2 128 - FrameIndex XZWE T 2 129 - ////// Fired - //// Shell0 - SurfaceSkin 2 8 "" - SurfaceSkin 2 4 "Shell_Normal_Used.png" - // Detach - FrameIndex XZWF L 2 91 - FrameIndex XZWF M 2 92 - FrameIndex XZWF N 2 93 - FrameIndex XZWF O 2 94 - FrameIndex XZWF P 2 95 - FrameIndex XZWF Q 2 96 - FrameIndex XZWF R 2 97 - FrameIndex XZWF S 2 98 - FrameIndex XZWF T 2 99 - FrameIndex XZWF U 2 100 - //// Shell1 - SurfaceSkin 2 4 "" - SurfaceSkin 2 5 "Shell_Normal_Used.png" - // Detach - FrameIndex XZWF V 2 91 - FrameIndex XZWF W 2 92 - FrameIndex XZWF X 2 93 - FrameIndex XZWF Y 2 94 - FrameIndex XZWF Z 2 95 - FrameIndex XZWG A 2 96 - FrameIndex XZWG B 2 97 - FrameIndex XZWG C 2 98 - FrameIndex XZWG D 2 99 - FrameIndex XZWG E 2 100 - //// Shell2 - SurfaceSkin 2 5 "" - SurfaceSkin 2 6 "Shell_Normal_Used.png" - // Detach - FrameIndex XZWG F 2 91 - FrameIndex XZWG G 2 92 - FrameIndex XZWG H 2 93 - FrameIndex XZWG I 2 94 - FrameIndex XZWG J 2 95 - FrameIndex XZWG K 2 96 - FrameIndex XZWG L 2 97 - FrameIndex XZWG M 2 98 - FrameIndex XZWG N 2 99 - FrameIndex XZWG O 2 100 - //// Shell3 - SurfaceSkin 2 6 "" - SurfaceSkin 2 7 "Shell_Normal_Used.png" - // Detach - FrameIndex XZWG P 2 91 - FrameIndex XZWG Q 2 92 - FrameIndex XZWG R 2 93 - FrameIndex XZWG S 2 94 - FrameIndex XZWG T 2 95 - FrameIndex XZWG U 2 96 - FrameIndex XZWG V 2 97 - FrameIndex XZWG W 2 98 - FrameIndex XZWG X 2 99 - FrameIndex XZWG Y 2 100 - //// Shell4 - SurfaceSkin 2 7 "" - SurfaceSkin 2 8 "Shell_Normal_Used.png" - // Detach - FrameIndex XZWG Z 2 91 - FrameIndex XZWH A 2 92 - FrameIndex XZWH B 2 93 - FrameIndex XZWH C 2 94 - FrameIndex XZWH D 2 95 - FrameIndex XZWH E 2 96 - FrameIndex XZWH F 2 97 - FrameIndex XZWH G 2 98 - FrameIndex XZWH H 2 99 - FrameIndex XZWH I 2 100 -} - -Model "Wallbuster" -{ - // main - Path "models" - - Model 1 "Wallbuster1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Wallbuster.png" - AngleOffset -93 - PitchOffset 0.4 - Offset 0 2 0 - Scale -0.005 0.0025 0.005 - - // Still/Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - FrameIndex XZW2 G 1 6 // Select - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - FrameIndex XZW2 M 1 12 - FrameIndex XZW2 N 1 13 - FrameIndex XZW2 O 1 14 - FrameIndex XZW2 P 1 15 - // Fire One - FrameIndex XZW2 Q 1 17 - FrameIndex XZW2 R 1 18 - FrameIndex XZW2 S 1 19 - FrameIndex XZW2 T 1 20 - FrameIndex XZW2 U 1 21 - FrameIndex XZW2 V 1 22 - FrameIndex XZW2 W 1 23 - FrameIndex XZW2 X 1 24 - // Spin One - FrameIndex XZW2 Y 1 26 - FrameIndex XZW2 Z 1 27 - FrameIndex XZW3 A 1 28 - FrameIndex XZW3 B 1 29 - // Fire Five - FrameIndex XZW3 C 1 31 - FrameIndex XZW3 D 1 32 - FrameIndex XZW3 E 1 33 - FrameIndex XZW3 F 1 34 - FrameIndex XZW3 G 1 35 - FrameIndex XZW3 H 1 36 - FrameIndex XZW3 I 1 37 - FrameIndex XZW3 J 1 38 - FrameIndex XZW3 K 1 39 - // Spin Five - FrameIndex XZW3 L 1 41 - FrameIndex XZW3 M 1 42 - FrameIndex XZW3 N 1 43 - FrameIndex XZW3 O 1 44 - FrameIndex XZW3 P 1 45 - FrameIndex XZW3 Q 1 46 - FrameIndex XZW3 R 1 47 - // Fire Twenty-Five - FrameIndex XZW3 S 1 49 - FrameIndex XZW3 T 1 50 - FrameIndex XZW3 U 1 51 - FrameIndex XZW3 V 1 52 - FrameIndex XZW3 W 1 53 - FrameIndex XZW3 X 1 54 - FrameIndex XZW3 Y 1 55 - FrameIndex XZW3 Z 1 56 - FrameIndex XZW4 A 1 57 - FrameIndex XZW4 B 1 58 - FrameIndex XZW4 C 1 59 - // Unlock - FrameIndex XZW4 D 1 61 - FrameIndex XZW4 E 1 62 - FrameIndex XZW4 F 1 63 - FrameIndex XZW4 G 1 64 - FrameIndex XZW4 H 1 65 - FrameIndex XZW4 I 1 66 - FrameIndex XZW4 J 1 67 - FrameIndex XZW4 K 1 68 - FrameIndex XZW4 L 1 69 // LeverSnd - FrameIndex XZW4 M 1 70 - FrameIndex XZW4 N 1 71 - FrameIndex XZW4 O 1 72 - FrameIndex XZW4 P 1 73 - FrameIndex XZW4 Q 1 74 - FrameIndex XZW4 R 1 75 - FrameIndex XZW4 S 1 76 - FrameIndex XZW4 T 1 77 - FrameIndex XZW4 U 1 78 - FrameIndex XZW4 V 1 79 - FrameIndex XZW4 W 1 80 // StillFrm - // PreDetach - FrameIndex XZW4 X 1 81 - FrameIndex XZW4 Y 1 82 - FrameIndex XZW4 Z 1 83 - FrameIndex XZW5 A 1 84 - FrameIndex XZW5 B 1 85 - FrameIndex XZW5 C 1 86 - FrameIndex XZW5 D 1 87 - FrameIndex XZW5 E 1 88 - FrameIndex XZW5 F 1 89 - FrameIndex XZW5 G 1 90 // DetachSnd - // Detach - FrameIndex XZW5 H 1 91 // StartDetachOverlays - FrameIndex XZW5 I 1 92 - FrameIndex XZW5 J 1 93 - FrameIndex XZW5 K 1 94 - FrameIndex XZW5 L 1 95 - FrameIndex XZW5 M 1 96 - FrameIndex XZW5 N 1 97 - FrameIndex XZW5 O 1 98 - FrameIndex XZW5 P 1 99 - FrameIndex XZW5 Q 1 100 - FrameIndex XZW5 R 1 101 // DropShells - FrameIndex XZW5 S 1 102 - FrameIndex XZW5 T 1 103 - FrameIndex XZW5 U 1 104 - FrameIndex XZW5 V 1 105 // LoadShell - FrameIndex XZW5 W 1 106 - FrameIndex XZW5 X 1 107 // LoadShell - // Attach - FrameIndex XZW5 Y 1 108 - FrameIndex XZW5 Z 1 109 // LoadShell - FrameIndex XZW6 A 1 110 - FrameIndex XZW6 B 1 111 // LoadShell - FrameIndex XZW6 C 1 112 - FrameIndex XZW6 D 1 113 // LoadShell - FrameIndex XZW6 E 1 114 - FrameIndex XZW6 F 1 115 - FrameIndex XZW6 G 1 116 // StartAttachOverlays - FrameIndex XZW6 H 1 117 - FrameIndex XZW6 I 1 118 - FrameIndex XZW6 J 1 119 - FrameIndex XZW6 K 1 120 - FrameIndex XZW6 L 1 121 - FrameIndex XZW6 M 1 122 - FrameIndex XZW6 N 1 123 - FrameIndex XZW6 O 1 124 - FrameIndex XZW6 P 1 125 - FrameIndex XZW6 Q 1 126 // AttachSnd - FrameIndex XZW6 R 1 127 - FrameIndex XZW6 S 1 128 - FrameIndex XZW6 T 1 129 - FrameIndex XZW6 U 1 130 - FrameIndex XZW6 V 1 131 - FrameIndex XZW6 W 1 132 - FrameIndex XZW6 X 1 133 - FrameIndex XZW6 Y 1 134 - FrameIndex XZW6 Z 1 135 - FrameIndex XZW7 A 1 136 - FrameIndex XZW7 B 1 137 - FrameIndex XZW7 C 1 138 - // Attach + Spin - FrameIndex XZW7 D 1 139 - FrameIndex XZW7 E 1 140 // LoadShell - FrameIndex XZW7 F 1 141 - FrameIndex XZW7 G 1 142 // LoadShell - FrameIndex XZW7 H 1 143 - FrameIndex XZW7 I 1 144 // LoadShell - FrameIndex XZW7 J 1 145 - FrameIndex XZW7 K 1 146 - FrameIndex XZW7 L 1 147 // StartAttachOverlays - FrameIndex XZW7 M 1 148 - FrameIndex XZW7 N 1 149 - FrameIndex XZW7 O 1 150 - FrameIndex XZW7 P 1 151 - FrameIndex XZW7 Q 1 152 - FrameIndex XZW7 R 1 153 - FrameIndex XZW7 S 1 154 - FrameIndex XZW7 T 1 155 - FrameIndex XZW7 U 1 156 - FrameIndex XZW7 V 1 157 - FrameIndex XZW7 W 1 158 // AttachSnd - FrameIndex XZW7 X 1 159 - FrameIndex XZW7 Y 1 160 - FrameIndex XZW7 Z 1 161 - FrameIndex XZW8 A 1 162 - FrameIndex XZW8 B 1 163 - FrameIndex XZW8 C 1 164 - FrameIndex XZW8 D 1 165 // Speen - FrameIndex XZW8 E 1 166 - FrameIndex XZW8 F 1 167 - FrameIndex XZW8 G 1 168 - FrameIndex XZW8 H 1 169 - FrameIndex XZW8 I 1 170 - FrameIndex XZW8 J 1 171 - FrameIndex XZW8 K 1 172 - FrameIndex XZW8 L 1 173 - FrameIndex XZW8 M 1 174 // DetachSnd - FrameIndex XZW8 N 1 175 // duplicate of frame 91, but with spin applied - // Lock - FrameIndex XZW8 O 1 176 - FrameIndex XZW8 P 1 177 - FrameIndex XZW8 Q 1 178 - FrameIndex XZW8 R 1 179 - FrameIndex XZW8 S 1 180 - FrameIndex XZW8 T 1 181 // LeverSnd - FrameIndex XZW8 U 1 182 - FrameIndex XZW8 V 1 183 - FrameIndex XZW8 W 1 184 - FrameIndex XZW8 X 1 185 - FrameIndex XZW8 Y 1 186 - FrameIndex XZW8 Z 1 187 - FrameIndex XZW9 A 1 188 - FrameIndex XZW9 B 1 189 - FrameIndex XZW9 C 1 190 - FrameIndex XZW9 D 1 191 - FrameIndex XZW9 E 1 192 - FrameIndex XZW9 F 1 193 - // Melee - FrameIndex XZW9 G 1 195 - FrameIndex XZW9 H 1 196 - FrameIndex XZW9 I 1 197 - FrameIndex XZW9 J 1 198 - FrameIndex XZW9 K 1 199 - FrameIndex XZW9 L 1 200 - FrameIndex XZW9 M 1 201 - FrameIndex XZW9 N 1 202 - FrameIndex XZW9 O 1 203 // Impact - FrameIndex XZW9 P 1 204 - FrameIndex XZW9 Q 1 205 - FrameIndex XZW9 R 1 206 - FrameIndex XZW9 S 1 207 - FrameIndex XZW9 T 1 208 - FrameIndex XZW9 U 1 209 - FrameIndex XZW9 V 1 210 - FrameIndex XZW9 W 1 211 - FrameIndex XZW9 X 1 212 - FrameIndex XZW9 Y 1 213 - FrameIndex XZW9 Z 1 214 - FrameIndex XZWA A 1 215 - FrameIndex XZWA B 1 216 - FrameIndex XZWA C 1 217 - FrameIndex XZWA D 1 218 - // PreDetach + Spin - FrameIndex XZWE U 1 221 - FrameIndex XZWE V 1 222 - FrameIndex XZWE W 1 223 - FrameIndex XZWE X 1 224 - FrameIndex XZWE Y 1 225 - FrameIndex XZWE Z 1 226 - FrameIndex XZWF A 1 227 // Speen - FrameIndex XZWF B 1 228 - FrameIndex XZWF C 1 229 - FrameIndex XZWF D 1 230 - FrameIndex XZWF E 1 231 - FrameIndex XZWF F 1 232 - FrameIndex XZWF G 1 233 - FrameIndex XZWF H 1 234 - FrameIndex XZWF I 1 235 - FrameIndex XZWF J 1 236 // DetachSnd - FrameIndex XZWF K 1 237 // duplicate of frame 91, but with spin applied - // PreDetach InterSpin - FrameIndex XZWH J 1 238 // identical to 234, but unrotated - FrameIndex XZWH K 1 239 - FrameIndex XZWH L 1 240 - // Attach+Spin InterSpin - FrameIndex XZWH M 1 242 // identical to 172, but unrotated - FrameIndex XZWH N 1 243 - FrameIndex XZWH O 1 244 -} diff --git a/modeldef.ynykron b/modeldef.ynykron deleted file mode 100644 index 3e7665704..000000000 --- a/modeldef.ynykron +++ /dev/null @@ -1,608 +0,0 @@ -Model "AshenRemains" -{ - Path "models/extra" - - Model 0 "flat_d.3d" - Scale 0.1 0.1 0.1 - ZOffset 0.1 - USEACTORPITCH - USEACTORROLL - DONTCULLBACKFACES - - Skin 0 "BigBlast.png" - FrameIndex XZW1 A 0 0 -} - -Model "YnykronBeam" -{ - Path "models/extra" - - Model 0 "WarpBeam2_d.3d" - Scale 1.0 1.0 1.0 - Offset 128 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // starter - Skin 0 "MCBeamS.png" - - // base - FrameIndex XZW1 A 0 0 - // deviation - FrameIndex XZW1 B 0 5 - FrameIndex XZW1 C 0 6 - FrameIndex XZW1 D 0 7 - FrameIndex XZW1 E 0 8 - - // other - Skin 0 "MCBeam.png" - - // base - FrameIndex XZW2 A 0 0 - // deviation - FrameIndex XZW2 B 0 5 - FrameIndex XZW2 C 0 6 - FrameIndex XZW2 D 0 7 - FrameIndex XZW2 E 0 8 -} - -Model "YnykronRing" -{ - Model 0 "models/extra/Flat_d.3d" - RollOffset 90 - AngleOffset 90 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // boy this is a pain - Skin 0 "sprites/XRG4A0.png" - FrameIndex XRG4 A 0 0 - Skin 0 "sprites/XRG4B0.png" - FrameIndex XRG4 B 0 0 - Skin 0 "sprites/XRG4C0.png" - FrameIndex XRG4 C 0 0 - Skin 0 "sprites/XRG4D0.png" - FrameIndex XRG4 D 0 0 - Skin 0 "sprites/XRG4E0.png" - FrameIndex XRG4 E 0 0 - Skin 0 "sprites/XRG4F0.png" - FrameIndex XRG4 F 0 0 - Skin 0 "sprites/XRG4G0.png" - FrameIndex XRG4 G 0 0 - Skin 0 "sprites/XRG4H0.png" - FrameIndex XRG4 H 0 0 - Skin 0 "sprites/XRG4I0.png" - FrameIndex XRG4 I 0 0 - Skin 0 "sprites/XRG4J0.png" - FrameIndex XRG4 J 0 0 - Skin 0 "sprites/XRG4K0.png" - FrameIndex XRG4 K 0 0 - Skin 0 "sprites/XRG4L0.png" - FrameIndex XRG4 L 0 0 - Skin 0 "sprites/XRG4M0.png" - FrameIndex XRG4 M 0 0 - Skin 0 "sprites/XRG4N0.png" - FrameIndex XRG4 N 0 0 - Skin 0 "sprites/XRG4O0.png" - FrameIndex XRG4 O 0 0 - Skin 0 "sprites/XRG4P0.png" - FrameIndex XRG4 P 0 0 - Skin 0 "sprites/XRG4Q0.png" - FrameIndex XRG4 Q 0 0 - Skin 0 "sprites/XRG4R0.png" - FrameIndex XRG4 R 0 0 - Skin 0 "sprites/XRG4S0.png" - FrameIndex XRG4 S 0 0 - Skin 0 "sprites/XRG4T0.png" - FrameIndex XRG4 T 0 0 - Skin 0 "sprites/XRG4U0.png" - FrameIndex XRG4 U 0 0 - Skin 0 "sprites/XRG4V0.png" - FrameIndex XRG4 V 0 0 - Skin 0 "sprites/XRG4W0.png" - FrameIndex XRG4 W 0 0 - Skin 0 "sprites/XRG4X0.png" - FrameIndex XRG4 X 0 0 -} - -Model "YnykronAltBeam" -{ - Path "models/extra" - - Model 0 "WarpBeam2_d.3d" - Scale 0.5 0.5 0.5 - Offset 64 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // starter - Skin 0 "MCBeamS.png" - - // base - FrameIndex XZW1 A 0 0 - // deviation - FrameIndex XZW1 B 0 5 - FrameIndex XZW1 C 0 6 - FrameIndex XZW1 D 0 7 - FrameIndex XZW1 E 0 8 - - // other - Skin 0 "MCBeam.png" - - // base - FrameIndex XZW2 A 0 0 - // deviation - FrameIndex XZW2 B 0 5 - FrameIndex XZW2 C 0 6 - FrameIndex XZW2 D 0 7 - FrameIndex XZW2 E 0 8 -} - -Model "YnykronVoidBeam" -{ - Path "models/extra" - - Model 0 "BaseBeam_d.3d" - Scale 0.0625 0.05 0.05 - Offset 8 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // starter - Skin 0 "DarkRaysStart.png" - FrameIndex XZW1 A 0 0 - // trailer - Skin 0 "DarkRays.png" - FrameIndex XZW1 B 0 0 - // cap - Skin 0 "DarkRaysEnd.png" - FrameIndex XZW1 C 0 0 - // early cap - Skin 0 "DarkRaysStartEnd.png" - FrameIndex XZW1 D 0 0 -} -Model "YnykronVoidBeamTail" -{ - Path "models/extra" - - Model 0 "BaseBeam_d.3d" - Scale 0.0625 0.05 0.05 - Offset 8 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - // starter - Skin 0 "DarkRaysStart.png" - FrameIndex XZW1 A 0 0 - // trailer - Skin 0 "DarkRays.png" - FrameIndex XZW1 B 0 0 - // cap - Skin 0 "DarkRaysEnd.png" - FrameIndex XZW1 C 0 0 - // early cap - Skin 0 "DarkRaysStartEnd.png" - FrameIndex XZW1 D 0 0 -} - -Model "YnykronLightningArc" -{ - Path "models/extra" - - Model 0 "WarpBeam_d.3d" - Scale 0.5 0.8 0.8 - Offset 64 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - Skin 0 "VortexArcS.png" - FrameIndex XZW1 A 0 1 - FrameIndex XZW1 B 0 2 - FrameIndex XZW1 C 0 3 - FrameIndex XZW1 D 0 4 - FrameIndex XZW1 E 0 5 - FrameIndex XZW1 F 0 6 - FrameIndex XZW1 G 0 7 - FrameIndex XZW1 H 0 8 - FrameIndex XZW1 I 0 9 - FrameIndex XZW1 J 0 10 - FrameIndex XZW1 K 0 11 - FrameIndex XZW1 L 0 12 - Skin 0 "VortexArc.png" - FrameIndex XZW2 A 0 1 - FrameIndex XZW2 B 0 2 - FrameIndex XZW2 C 0 3 - FrameIndex XZW2 D 0 4 - FrameIndex XZW2 E 0 5 - FrameIndex XZW2 F 0 6 - FrameIndex XZW2 G 0 7 - FrameIndex XZW2 H 0 8 - FrameIndex XZW2 I 0 9 - FrameIndex XZW2 J 0 10 - FrameIndex XZW2 K 0 11 - FrameIndex XZW2 L 0 12 -} -Model "YnykronLightningArcSub" -{ - Path "models/extra" - - Model 0 "WarpBeam_d.3d" - Scale 0.125 0.2 0.2 - Offset 16 0 0 - DONTCULLBACKFACES - USEACTORPITCH - USEACTORROLL - - Skin 0 "VortexArcS.png" - FrameIndex XZW1 A 0 1 - FrameIndex XZW1 B 0 2 - FrameIndex XZW1 C 0 3 - FrameIndex XZW1 D 0 4 - FrameIndex XZW1 E 0 5 - FrameIndex XZW1 F 0 6 - FrameIndex XZW1 G 0 7 - FrameIndex XZW1 H 0 8 - FrameIndex XZW1 I 0 9 - FrameIndex XZW1 J 0 10 - FrameIndex XZW1 K 0 11 - FrameIndex XZW1 L 0 12 - Skin 0 "VortexArc.png" - FrameIndex XZW2 A 0 1 - FrameIndex XZW2 B 0 2 - FrameIndex XZW2 C 0 3 - FrameIndex XZW2 D 0 4 - FrameIndex XZW2 E 0 5 - FrameIndex XZW2 F 0 6 - FrameIndex XZW2 G 0 7 - FrameIndex XZW2 H 0 8 - FrameIndex XZW2 I 0 9 - FrameIndex XZW2 J 0 10 - FrameIndex XZW2 K 0 11 - FrameIndex XZW2 L 0 12 -} - -Model "YnykronSingularity" -{ - Path "models/extra" - - Model 0 "BaseSphere_d.3d" - Skin 0 "Black.png" - Scale 0.25 0.25 0.25 - - FrameIndex XZW1 A 0 0 -} - -Model "YnykronVoidSparkleTrail" -{ - Path "models/extra" - - Model 0 "YBeam.obj" - Skin 0 "DarkTrail.png" - Scale 1 1 0.6 - USEACTORPITCH - USEACTORROLL - DONTCULLBACKFACES - - FrameIndex XZW1 A 0 0 -} - -Model "Ynykron" -{ - Path "models" - - Model 0 "YnykronPickup_d.3d" - SurfaceSkin 0 0 "Ynykron.png" - SurfaceSkin 0 1 "YnykronAmmo.png" - Scale 0.18 0.18 0.18 - AngleOffset 180 - ZOffset 24 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "Ynykron" -{ - Path "models/extra" - - Model 3 "Flat_d.3d" - Skin 3 "MortalMuz.png" - RollOffset 90 - AngleOffset 90 - Scale 0.3 0.3 0.3 - Offset 32 -90 -8 - - FrameIndex XZWZ A 3 0 -} - -Model "Ynykron" -{ - Path "models" - - Model 2 "Ynykron1st_d.3d" - SurfaceSkin 2 5 "YnykronSmoke.png" - AngleOffset -90 - Scale -0.005 0.0025 0.005 - DONTCULLBACKFACES - - // FireVent - FrameIndex XZWA J 2 36 - FrameIndex XZWA K 2 37 - FrameIndex XZWA L 2 38 - FrameIndex XZWA M 2 39 - FrameIndex XZWA N 2 40 - FrameIndex XZWA O 2 41 - FrameIndex XZWA P 2 42 - FrameIndex XZWA Q 2 43 - FrameIndex XZWA R 2 44 - FrameIndex XZWA S 2 45 - // DischargeVent - FrameIndex XZWA T 2 152 - FrameIndex XZWA U 2 153 - FrameIndex XZWA V 2 154 - FrameIndex XZWA W 2 155 - FrameIndex XZWA X 2 156 - FrameIndex XZWA Y 2 157 - FrameIndex XZWA Z 2 158 // DischargeVentStill / DischargeVentEnd - FrameIndex XZWB A 2 159 - FrameIndex XZWB B 2 160 - FrameIndex XZWB C 2 161 - // ReadyVent - FrameIndex XZWB D 2 216 - FrameIndex XZWB E 2 217 - FrameIndex XZWB F 2 218 - FrameIndex XZWB G 2 219 - FrameIndex XZWB H 2 220 - FrameIndex XZWB I 2 221 - FrameIndex XZWB J 2 222 - FrameIndex XZWB K 2 223 - FrameIndex XZWB L 2 224 - FrameIndex XZWB M 2 225 -} - -Model "Ynykron" -{ - Path "models" - - Model 1 "Ynykron1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Ynykron.png" - SurfaceSkin 1 4 "YnykronAmmo.png" - AngleOffset -90 - Scale -0.005 0.0025 0.005 - - // Still / Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - FrameIndex XZW2 G 1 6 - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 // Select - FrameIndex XZW2 M 1 12 - FrameIndex XZW2 N 1 13 - FrameIndex XZW2 O 1 14 - FrameIndex XZW2 P 1 15 - FrameIndex XZW2 Q 1 16 - FrameIndex XZW2 R 1 17 - FrameIndex XZW2 S 1 18 - FrameIndex XZW2 T 1 19 - FrameIndex XZW2 U 1 20 - FrameIndex XZW2 V 1 21 - FrameIndex XZW2 W 1 22 - FrameIndex XZW2 X 1 23 - FrameIndex XZW2 Y 1 24 - FrameIndex XZW2 Z 1 25 - FrameIndex XZW3 A 1 26 - // Prepare - FrameIndex XZW3 B 1 28 - FrameIndex XZW3 C 1 29 - FrameIndex XZW3 D 1 30 - FrameIndex XZW3 E 1 31 - FrameIndex XZW3 F 1 32 - FrameIndex XZW3 G 1 33 - FrameIndex XZW3 H 1 34 - FrameIndex XZW3 I 1 35 - // Fire - FrameIndex XZW3 J 1 37 - FrameIndex XZW3 K 1 38 - FrameIndex XZW3 L 1 39 - FrameIndex XZW3 M 1 40 - FrameIndex XZW3 N 1 41 - FrameIndex XZW3 O 1 42 - FrameIndex XZW3 P 1 43 - FrameIndex XZW3 Q 1 44 - FrameIndex XZW3 R 1 45 - // Unload Normal - FrameIndex XZW3 S 1 47 - FrameIndex XZW3 T 1 48 - FrameIndex XZW3 U 1 49 - FrameIndex XZW3 V 1 50 - FrameIndex XZW3 W 1 51 - FrameIndex XZW3 X 1 52 - FrameIndex XZW3 Y 1 53 - FrameIndex XZW3 Z 1 54 - FrameIndex XZW4 A 1 55 - FrameIndex XZW4 B 1 56 - FrameIndex XZW4 C 1 57 - FrameIndex XZW4 D 1 58 - FrameIndex XZW4 E 1 59 - FrameIndex XZW4 F 1 60 - FrameIndex XZW4 G 1 61 - FrameIndex XZW4 H 1 62 - FrameIndex XZW4 I 1 63 - FrameIndex XZW4 J 1 64 - FrameIndex XZW4 K 1 65 - FrameIndex XZW4 L 1 66 - FrameIndex XZW4 M 1 67 - FrameIndex XZW4 N 1 68 - FrameIndex XZW4 O 1 69 - FrameIndex XZW4 P 1 70 // Load Normal - FrameIndex XZW4 Q 1 71 - FrameIndex XZW4 R 1 72 - FrameIndex XZW4 S 1 73 - FrameIndex XZW4 T 1 74 - FrameIndex XZW4 U 1 75 - FrameIndex XZW4 V 1 76 - FrameIndex XZW4 W 1 77 - FrameIndex XZW4 X 1 78 - FrameIndex XZW4 Y 1 79 - FrameIndex XZW4 Z 1 80 - FrameIndex XZW5 A 1 81 - FrameIndex XZW5 B 1 82 - FrameIndex XZW5 C 1 83 - FrameIndex XZW5 D 1 84 - FrameIndex XZW5 E 1 85 - FrameIndex XZW5 F 1 86 - FrameIndex XZW5 G 1 87 - FrameIndex XZW5 H 1 88 - FrameIndex XZW5 I 1 89 - FrameIndex XZW5 J 1 90 - FrameIndex XZW5 K 1 91 - FrameIndex XZW5 L 1 92 - FrameIndex XZW5 M 1 93 - FrameIndex XZW5 N 1 94 - FrameIndex XZW5 O 1 95 - // Unload Flipped - FrameIndex XZW5 P 1 97 // Flip Still (for jump cut) - FrameIndex XZW5 Q 1 98 - FrameIndex XZW5 R 1 99 - FrameIndex XZW5 S 1 100 - FrameIndex XZW5 T 1 101 - FrameIndex XZW5 U 1 102 - FrameIndex XZW5 V 1 103 - FrameIndex XZW5 W 1 104 - FrameIndex XZW5 X 1 105 - FrameIndex XZW5 Y 1 106 - FrameIndex XZW5 Z 1 107 - FrameIndex XZW6 A 1 108 - FrameIndex XZW6 B 1 109 - FrameIndex XZW6 C 1 110 - FrameIndex XZW6 D 1 111 - FrameIndex XZW6 E 1 112 - FrameIndex XZW6 F 1 113 - FrameIndex XZW6 G 1 114 - FrameIndex XZW6 H 1 115 - FrameIndex XZW6 I 1 116 - FrameIndex XZW6 J 1 117 - FrameIndex XZW6 K 1 118 - FrameIndex XZW6 L 1 119 - FrameIndex XZW6 M 1 120 - FrameIndex XZW6 N 1 121 // Load Flipped - FrameIndex XZW6 O 1 122 - FrameIndex XZW6 P 1 123 - FrameIndex XZW6 Q 1 124 - FrameIndex XZW6 R 1 125 - FrameIndex XZW6 S 1 126 - FrameIndex XZW6 T 1 127 - FrameIndex XZW6 U 1 128 - FrameIndex XZW6 V 1 129 - FrameIndex XZW6 W 1 130 - FrameIndex XZW6 X 1 131 - FrameIndex XZW6 Y 1 132 - FrameIndex XZW6 Z 1 133 - FrameIndex XZW7 A 1 134 - FrameIndex XZW7 B 1 135 - FrameIndex XZW7 C 1 136 - FrameIndex XZW7 D 1 137 - FrameIndex XZW7 E 1 138 - FrameIndex XZW7 F 1 139 - FrameIndex XZW7 G 1 140 - FrameIndex XZW7 H 1 141 - FrameIndex XZW7 I 1 142 - FrameIndex XZW7 J 1 143 - FrameIndex XZW7 K 1 144 - FrameIndex XZW7 L 1 145 - FrameIndex XZW7 M 1 146 - // Discharge - FrameIndex XZW7 N 1 149 - FrameIndex XZW7 O 1 150 - FrameIndex XZW7 P 1 151 - FrameIndex XZW7 Q 1 152 - FrameIndex XZW7 R 1 153 - FrameIndex XZW7 S 1 154 - FrameIndex XZW7 T 1 155 - FrameIndex XZW7 U 1 156 - FrameIndex XZW7 V 1 157 - FrameIndex XZW7 W 1 158 // DischargeStill / DischargeEnd - FrameIndex XZW7 X 1 159 - FrameIndex XZW7 Y 1 160 - FrameIndex XZW7 Z 1 161 - // Idle - FrameIndex XZW8 A 1 163 - FrameIndex XZW8 B 1 164 - FrameIndex XZW8 C 1 165 - FrameIndex XZW8 D 1 166 - FrameIndex XZW8 E 1 167 - FrameIndex XZW8 F 1 168 - FrameIndex XZW8 G 1 169 - FrameIndex XZW8 H 1 170 - FrameIndex XZW8 I 1 171 - FrameIndex XZW8 J 1 172 - FrameIndex XZW8 K 1 173 - FrameIndex XZW8 L 1 174 - FrameIndex XZW8 M 1 175 - FrameIndex XZW8 N 1 176 - FrameIndex XZW8 O 1 177 - FrameIndex XZW8 P 1 178 - FrameIndex XZW8 Q 1 179 - FrameIndex XZW8 R 1 180 - FrameIndex XZW8 S 1 181 - FrameIndex XZW8 T 1 182 - FrameIndex XZW8 U 1 183 - FrameIndex XZW8 V 1 184 - FrameIndex XZW8 W 1 185 - FrameIndex XZW8 X 1 186 - // Melee - FrameIndex XZW8 Y 1 188 - FrameIndex XZW8 Z 1 189 - FrameIndex XZW9 A 1 190 - FrameIndex XZW9 B 1 191 - FrameIndex XZW9 C 1 192 - FrameIndex XZW9 D 1 193 - FrameIndex XZW9 E 1 194 - FrameIndex XZW9 F 1 195 - FrameIndex XZW9 G 1 196 - FrameIndex XZW9 H 1 197 - FrameIndex XZW9 I 1 198 - FrameIndex XZW9 J 1 199 - FrameIndex XZW9 K 1 200 - FrameIndex XZW9 L 1 201 - FrameIndex XZW9 M 1 202 - FrameIndex XZW9 N 1 203 - FrameIndex XZW9 O 1 204 - FrameIndex XZW9 P 1 205 - FrameIndex XZW9 Q 1 206 - FrameIndex XZW9 R 1 207 - FrameIndex XZW9 S 1 208 - FrameIndex XZW9 T 1 209 - FrameIndex XZW9 U 1 210 - FrameIndex XZW9 V 1 211 - FrameIndex XZW9 W 1 212 - FrameIndex XZW9 X 1 213 - FrameIndex XZW9 Y 1 214 - FrameIndex XZW9 Z 1 215 - // Ready - FrameIndex XZWA A 1 217 - FrameIndex XZWA B 1 218 - FrameIndex XZWA C 1 219 - FrameIndex XZWA D 1 220 - FrameIndex XZWA E 1 221 - FrameIndex XZWA F 1 222 - FrameIndex XZWA G 1 223 - FrameIndex XZWA H 1 224 - FrameIndex XZWA I 1 225 -} diff --git a/modeldef/demolitionist.txt b/modeldef/demolitionist.txt new file mode 100644 index 000000000..cbc5b97e4 --- /dev/null +++ b/modeldef/demolitionist.txt @@ -0,0 +1,578 @@ +// The Demolitionist +Model "Demolitionist" +{ + Path "models" + Model 0 "DemolitionistPlayer.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoFace_Default.png" + SurfaceSkin 0 2 "DemoBody.png" + SurfaceSkin 0 3 "DemoHead.png" + SurfaceSkin 0 4 "DemoArms.png" + SurfaceSkin 0 5 "DemoLegs.png" + SurfaceSkin 0 6 "DemoSoft.png" + SurfaceSkin 0 7 "DemoMisc.png" + SurfaceSkin 0 8 "DemoKeys.png" + SurfaceSkin 0 9 "ExplodiumGun.png" + SurfaceSkin 0 10 "ExplodiumGun.png" + AngleOffset -90 + Scale 40.96 40.96 40.96 + IGNORETRANSLATION + FORCECULLBACKFACES + + // Still/Walk + FrameIndex XZW1 A 0 1 + FrameIndex XZW1 B 0 2 + FrameIndex XZW1 C 0 3 + FrameIndex XZW1 D 0 4 + FrameIndex XZW1 E 0 5 // rstep + FrameIndex XZW1 F 0 6 + FrameIndex XZW1 G 0 7 + FrameIndex XZW1 H 0 8 + FrameIndex XZW1 I 0 9 + FrameIndex XZW1 J 0 10 + FrameIndex XZW1 K 0 11 + FrameIndex XZW1 L 0 12 + FrameIndex XZW1 M 0 13 // lstep + FrameIndex XZW1 N 0 14 + FrameIndex XZW1 O 0 15 + FrameIndex XZW1 P 0 16 + // Run + FrameIndex XZW1 Q 0 18 + FrameIndex XZW1 R 0 19 + FrameIndex XZW1 S 0 20 + // RunLoop + FrameIndex XZW1 T 0 21 + FrameIndex XZW1 U 0 22 + FrameIndex XZW1 V 0 23 // rstep + FrameIndex XZW1 W 0 24 + FrameIndex XZW1 X 0 25 + FrameIndex XZW1 Y 0 26 + FrameIndex XZW1 Z 0 27 + FrameIndex XZW2 A 0 28 + FrameIndex XZW2 B 0 29 + FrameIndex XZW2 C 0 30 // lstep + FrameIndex XZW2 D 0 31 + FrameIndex XZW2 E 0 32 + FrameIndex XZW2 F 0 33 + FrameIndex XZW2 G 0 34 + // RunEnd + FrameIndex XZW2 H 0 36 + FrameIndex XZW2 I 0 37 + FrameIndex XZW2 J 0 38 + FrameIndex XZW2 K 0 39 + FrameIndex XZW2 L 0 40 + // Pain + FrameIndex XZW2 M 0 42 + FrameIndex XZW2 N 0 43 + FrameIndex XZW2 O 0 44 + FrameIndex XZW2 P 0 45 + FrameIndex XZW2 Q 0 46 + // Death + FrameIndex XZW2 R 0 48 + FrameIndex XZW2 S 0 49 + FrameIndex XZW2 T 0 50 + FrameIndex XZW2 U 0 51 + FrameIndex XZW2 V 0 52 + FrameIndex XZW2 W 0 53 + FrameIndex XZW2 X 0 54 + FrameIndex XZW2 Y 0 55 + FrameIndex XZW2 Z 0 56 + FrameIndex XZW3 A 0 57 + FrameIndex XZW3 B 0 58 + FrameIndex XZW3 C 0 59 + FrameIndex XZW3 D 0 60 + FrameIndex XZW3 E 0 61 + FrameIndex XZW3 F 0 62 + FrameIndex XZW3 G 0 63 + FrameIndex XZW3 H 0 64 + // Jump + FrameIndex XZW3 I 0 66 + FrameIndex XZW3 J 0 67 + FrameIndex XZW3 K 0 68 + FrameIndex XZW3 L 0 69 + FrameIndex XZW3 M 0 70 + FrameIndex XZW3 N 0 71 + FrameIndex XZW3 O 0 72 + // JumpStill + FrameIndex XZW3 P 0 73 + // JumpEndB + FrameIndex XZW3 Q 0 74 + FrameIndex XZW3 R 0 75 + FrameIndex XZW3 S 0 76 + FrameIndex XZW3 T 0 77 + FrameIndex XZW3 U 0 78 + FrameIndex XZW3 V 0 79 + FrameIndex XZW3 W 0 80 + // Fall + FrameIndex XZW3 X 0 82 + FrameIndex XZW3 Y 0 83 + FrameIndex XZW3 Z 0 84 + FrameIndex XZW4 A 0 85 + FrameIndex XZW4 B 0 86 + // FallLoop + FrameIndex XZW4 C 0 87 + FrameIndex XZW4 D 0 88 + FrameIndex XZW4 E 0 89 + FrameIndex XZW4 F 0 90 + FrameIndex XZW4 G 0 91 + FrameIndex XZW4 H 0 92 + // FallEnd + FrameIndex XZW4 I 0 93 + FrameIndex XZW4 J 0 94 + FrameIndex XZW4 K 0 95 + FrameIndex XZW4 L 0 96 + FrameIndex XZW4 M 0 97 + FrameIndex XZW4 N 0 98 + // Dash + FrameIndex XZW4 O 0 100 + // DashLoop + FrameIndex XZW4 P 0 101 + FrameIndex XZW4 Q 0 102 + FrameIndex XZW4 R 0 103 + FrameIndex XZW4 S 0 104 + // DashEnd + FrameIndex XZW4 T 0 106 + FrameIndex XZW4 U 0 107 + FrameIndex XZW4 V 0 108 + FrameIndex XZW4 W 0 109 + FrameIndex XZW4 X 0 110 + // Wave + FrameIndex XZW4 Y 0 112 + FrameIndex XZW4 Z 0 113 + FrameIndex XZW5 A 0 114 + FrameIndex XZW5 B 0 115 + FrameIndex XZW5 C 0 116 + FrameIndex XZW5 D 0 117 + FrameIndex XZW5 E 0 118 + FrameIndex XZW5 F 0 119 + FrameIndex XZW5 G 0 120 + FrameIndex XZW5 H 0 121 + FrameIndex XZW5 I 0 122 + FrameIndex XZW5 J 0 123 + FrameIndex XZW5 K 0 124 + FrameIndex XZW5 L 0 125 + FrameIndex XZW5 M 0 126 + // Thumbs Up + FrameIndex XZW5 N 0 128 + FrameIndex XZW5 O 0 129 + FrameIndex XZW5 P 0 130 + FrameIndex XZW5 Q 0 131 + FrameIndex XZW5 R 0 132 + FrameIndex XZW5 S 0 133 + FrameIndex XZW5 T 0 134 + FrameIndex XZW5 U 0 135 + FrameIndex XZW5 V 0 136 + FrameIndex XZW5 W 0 137 + FrameIndex XZW5 X 0 138 + FrameIndex XZW5 Y 0 139 + FrameIndex XZW5 Z 0 140 + FrameIndex XZW6 A 0 141 + FrameIndex XZW6 B 0 142 + FrameIndex XZW6 C 0 143 + FrameIndex XZW6 D 0 144 + // Victory + FrameIndex XZW6 E 0 146 + FrameIndex XZW6 F 0 147 + FrameIndex XZW6 G 0 148 + FrameIndex XZW6 H 0 149 + FrameIndex XZW6 I 0 150 + FrameIndex XZW6 J 0 151 + FrameIndex XZW6 K 0 152 + FrameIndex XZW6 L 0 153 + FrameIndex XZW6 M 0 154 + FrameIndex XZW6 N 0 155 + FrameIndex XZW6 O 0 156 + FrameIndex XZW6 P 0 157 + FrameIndex XZW6 Q 0 158 + FrameIndex XZW6 R 0 159 + FrameIndex XZW6 S 0 160 + FrameIndex XZW6 T 0 161 + FrameIndex XZW6 U 0 162 + FrameIndex XZW6 V 0 163 + FrameIndex XZW6 W 0 164 + // Attack + FrameIndex XZW6 X 0 166 + FrameIndex XZW6 Y 0 167 + FrameIndex XZW6 Z 0 168 + FrameIndex XZW7 A 0 169 + FrameIndex XZW7 B 0 170 + FrameIndex XZW7 C 0 171 + // Crouch + FrameIndex XZW7 D 0 173 + FrameIndex XZW7 E 0 174 + FrameIndex XZW7 F 0 175 + FrameIndex XZW7 G 0 176 + FrameIndex XZW7 H 0 177 + FrameIndex XZW7 I 0 178 + FrameIndex XZW7 J 0 179 + FrameIndex XZW7 K 0 180 + FrameIndex XZW7 L 0 181 + // Crawl + FrameIndex XZW7 M 0 182 + FrameIndex XZW7 N 0 183 + FrameIndex XZW7 O 0 184 + FrameIndex XZW7 P 0 185 // slither1 + FrameIndex XZW7 Q 0 186 + FrameIndex XZW7 R 0 187 + FrameIndex XZW7 S 0 188 + FrameIndex XZW7 T 0 189 // slither2 + FrameIndex XZW7 U 0 190 + FrameIndex XZW7 V 0 191 + // Crouched Attack + FrameIndex XZW7 W 0 193 + FrameIndex XZW7 X 0 194 + FrameIndex XZW7 Y 0 195 + FrameIndex XZW7 Z 0 196 + FrameIndex XZW8 A 0 197 + FrameIndex XZW8 B 0 198 + // Crouched Pain + FrameIndex XZW8 C 0 200 + FrameIndex XZW8 D 0 201 + FrameIndex XZW8 E 0 202 + FrameIndex XZW8 F 0 203 + // Crouched Death + FrameIndex XZW8 G 0 205 + FrameIndex XZW8 H 0 206 + FrameIndex XZW8 I 0 207 + FrameIndex XZW8 J 0 208 + FrameIndex XZW8 K 0 209 + FrameIndex XZW8 L 0 210 + // Uncrouch + FrameIndex XZW8 M 0 212 + FrameIndex XZW8 N 0 213 + FrameIndex XZW8 O 0 214 + FrameIndex XZW8 P 0 215 + FrameIndex XZW8 Q 0 216 + FrameIndex XZW8 R 0 217 + FrameIndex XZW8 S 0 218 + // Melee + FrameIndex XZW8 T 0 220 + FrameIndex XZW8 U 0 221 + FrameIndex XZW8 V 0 222 + FrameIndex XZW8 W 0 223 + FrameIndex XZW8 X 0 224 + FrameIndex XZW8 Y 0 225 + FrameIndex XZW8 Z 0 226 + FrameIndex XZW9 A 0 227 + FrameIndex XZW9 B 0 228 + FrameIndex XZW9 C 0 229 + FrameIndex XZW9 D 0 230 + FrameIndex XZW9 E 0 231 + FrameIndex XZW9 F 0 232 + // Reload + FrameIndex XZW9 G 0 234 + FrameIndex XZW9 H 0 235 + FrameIndex XZW9 I 0 236 + FrameIndex XZW9 J 0 237 + SurfaceSkin 0 10 "" + FrameIndex XZW9 K 0 238 + FrameIndex XZW9 L 0 239 + FrameIndex XZW9 M 0 240 + FrameIndex XZW9 N 0 241 + FrameIndex XZW9 O 0 242 + FrameIndex XZW9 P 0 243 + FrameIndex XZW9 Q 0 244 + SurfaceSkin 0 10 "ExplodiumGun.png" + FrameIndex XZW9 R 0 245 + FrameIndex XZW9 S 0 246 + FrameIndex XZW9 T 0 247 + FrameIndex XZW9 U 0 248 + FrameIndex XZW9 V 0 249 + FrameIndex XZW9 W 0 250 + FrameIndex XZW9 X 0 251 + FrameIndex XZW9 Y 0 252 + FrameIndex XZW9 Z 0 253 + FrameIndex XZWA A 0 254 + FrameIndex XZWA B 0 255 + FrameIndex XZWA C 0 256 + FrameIndex XZWA D 0 257 + FrameIndex XZWA E 0 258 + // Spin Gun + FrameIndex XZWA F 0 260 + FrameIndex XZWA G 0 261 + FrameIndex XZWA H 0 262 + FrameIndex XZWA I 0 263 + FrameIndex XZWA J 0 264 + FrameIndex XZWA K 0 265 + FrameIndex XZWA L 0 266 + FrameIndex XZWA M 0 267 + FrameIndex XZWA N 0 268 + FrameIndex XZWA O 0 269 + FrameIndex XZWA P 0 270 + FrameIndex XZWA Q 0 271 + FrameIndex XZWA R 0 272 + FrameIndex XZWA S 0 273 + FrameIndex XZWA T 0 274 + FrameIndex XZWA U 0 275 + FrameIndex XZWA V 0 276 + FrameIndex XZWA W 0 277 + FrameIndex XZWA X 0 278 + FrameIndex XZWA Y 0 279 + // Crouched Melee + FrameIndex XZWA Z 0 282 + FrameIndex XZWB A 0 283 + FrameIndex XZWB B 0 284 + FrameIndex XZWB C 0 285 + FrameIndex XZWB D 0 286 + FrameIndex XZWB E 0 287 + FrameIndex XZWB F 0 288 + FrameIndex XZWB G 0 289 + FrameIndex XZWB H 0 290 + FrameIndex XZWB I 0 291 + FrameIndex XZWB J 0 292 + FrameIndex XZWB K 0 293 + FrameIndex XZWB L 0 294 + // Crouched Reload + FrameIndex XZWB M 0 296 + FrameIndex XZWB N 0 297 + FrameIndex XZWB O 0 298 + FrameIndex XZWB P 0 299 + SurfaceSkin 0 10 "" + FrameIndex XZWB Q 0 300 + FrameIndex XZWB R 0 301 + FrameIndex XZWB S 0 302 + FrameIndex XZWB T 0 303 + FrameIndex XZWB U 0 304 + FrameIndex XZWB V 0 305 + FrameIndex XZWB W 0 306 + SurfaceSkin 0 10 "ExplodiumGun.png" + FrameIndex XZWB X 0 307 + FrameIndex XZWB Y 0 308 + FrameIndex XZWB Z 0 309 + FrameIndex XZWC A 0 310 + FrameIndex XZWC B 0 311 + FrameIndex XZWC C 0 312 + FrameIndex XZWC D 0 313 + FrameIndex XZWC E 0 314 + FrameIndex XZWC F 0 315 + FrameIndex XZWC G 0 316 + FrameIndex XZWC H 0 317 + FrameIndex XZWC I 0 318 + FrameIndex XZWC J 0 319 + // Crouched Spin Gun + FrameIndex XZWC K 0 321 + FrameIndex XZWC L 0 322 + FrameIndex XZWC M 0 323 + FrameIndex XZWC N 0 324 + FrameIndex XZWC O 0 325 + FrameIndex XZWC P 0 326 + FrameIndex XZWC Q 0 327 + FrameIndex XZWC R 0 328 + FrameIndex XZWC S 0 329 + FrameIndex XZWC T 0 330 + FrameIndex XZWC U 0 331 + FrameIndex XZWC V 0 332 + FrameIndex XZWC W 0 333 + FrameIndex XZWC X 0 334 + FrameIndex XZWC Y 0 335 + FrameIndex XZWC Z 0 336 + FrameIndex XZWD A 0 337 + FrameIndex XZWD B 0 338 + FrameIndex XZWD C 0 339 + FrameIndex XZWD D 0 340 + // Blow Kiss + FrameIndex XZWD E 0 343 + FrameIndex XZWD F 0 344 + FrameIndex XZWD G 0 345 + FrameIndex XZWD H 0 346 + FrameIndex XZWD I 0 347 + FrameIndex XZWD J 0 348 + FrameIndex XZWD K 0 349 + FrameIndex XZWD L 0 350 + FrameIndex XZWD M 0 351 + FrameIndex XZWD N 0 352 + FrameIndex XZWD O 0 353 + FrameIndex XZWD P 0 354 + FrameIndex XZWD Q 0 355 + FrameIndex XZWD R 0 356 + FrameIndex XZWD S 0 357 + FrameIndex XZWD T 0 358 + FrameIndex XZWD U 0 359 + FrameIndex XZWD V 0 360 + FrameIndex XZWD W 0 361 + // Float + FrameIndex XZWD X 0 363 + FrameIndex XZWD Y 0 364 + FrameIndex XZWD Z 0 365 + FrameIndex XZWE A 0 366 + FrameIndex XZWE B 0 367 + FrameIndex XZWE C 0 368 + FrameIndex XZWE D 0 369 + FrameIndex XZWE E 0 370 + FrameIndex XZWE F 0 371 + FrameIndex XZWE G 0 372 + FrameIndex XZWE H 0 373 + FrameIndex XZWE I 0 374 + // Swim Start + FrameIndex XZWE J 0 376 + FrameIndex XZWE K 0 377 + FrameIndex XZWE L 0 378 + // Swim + FrameIndex XZWE M 0 379 + FrameIndex XZWE N 0 380 + FrameIndex XZWE O 0 381 + FrameIndex XZWE P 0 382 + FrameIndex XZWE Q 0 383 + FrameIndex XZWE R 0 384 + FrameIndex XZWE S 0 385 + FrameIndex XZWE T 0 386 + FrameIndex XZWE U 0 387 + FrameIndex XZWE V 0 388 + FrameIndex XZWE W 0 389 + FrameIndex XZWE X 0 390 + // Swim End + FrameIndex XZWE Y 0 392 + FrameIndex XZWE Z 0 393 + // Crouched Wave + FrameIndex XZWF A 0 397 + FrameIndex XZWF B 0 398 + FrameIndex XZWF C 0 399 + FrameIndex XZWF D 0 400 + FrameIndex XZWF E 0 401 + FrameIndex XZWF F 0 402 + FrameIndex XZWF G 0 403 + FrameIndex XZWF H 0 404 + FrameIndex XZWF I 0 405 + FrameIndex XZWF J 0 406 + FrameIndex XZWF K 0 407 + FrameIndex XZWF L 0 408 + FrameIndex XZWF M 0 409 + FrameIndex XZWF N 0 410 + FrameIndex XZWF O 0 411 + // Crouched Thumbs Up + FrameIndex XZWF P 0 413 + FrameIndex XZWF Q 0 414 + FrameIndex XZWF R 0 415 + FrameIndex XZWF S 0 416 + FrameIndex XZWF T 0 417 + FrameIndex XZWF U 0 418 + FrameIndex XZWF V 0 419 + FrameIndex XZWF W 0 420 + FrameIndex XZWF X 0 421 + FrameIndex XZWF Y 0 422 + FrameIndex XZWF Z 0 423 + FrameIndex XZWG A 0 424 + FrameIndex XZWG B 0 425 + FrameIndex XZWG C 0 426 + FrameIndex XZWG D 0 427 + FrameIndex XZWG E 0 428 + FrameIndex XZWG F 0 429 + // Crouched Victory + FrameIndex XZWG G 0 431 + FrameIndex XZWG H 0 432 + FrameIndex XZWG I 0 433 + FrameIndex XZWG J 0 434 + FrameIndex XZWG K 0 435 + FrameIndex XZWG L 0 436 + FrameIndex XZWG M 0 437 + FrameIndex XZWG N 0 438 + FrameIndex XZWG O 0 439 + FrameIndex XZWG P 0 440 + FrameIndex XZWG Q 0 441 + FrameIndex XZWG R 0 442 + FrameIndex XZWG S 0 443 + FrameIndex XZWG T 0 444 + FrameIndex XZWG U 0 445 + FrameIndex XZWG V 0 446 + FrameIndex XZWG W 0 447 + FrameIndex XZWG X 0 448 + FrameIndex XZWG Y 0 449 + // Crouched Blow Kiss + FrameIndex XZWG Z 0 451 + FrameIndex XZWH A 0 452 + FrameIndex XZWH B 0 453 + FrameIndex XZWH C 0 454 + FrameIndex XZWH D 0 455 + FrameIndex XZWH E 0 456 + FrameIndex XZWH F 0 457 + FrameIndex XZWH G 0 458 + FrameIndex XZWH H 0 459 + FrameIndex XZWH I 0 460 + FrameIndex XZWH J 0 461 + FrameIndex XZWH K 0 462 + FrameIndex XZWH L 0 463 + FrameIndex XZWH M 0 464 + FrameIndex XZWH N 0 465 + FrameIndex XZWH O 0 466 + FrameIndex XZWH P 0 467 + FrameIndex XZWH Q 0 468 + FrameIndex XZWH R 0 469 + // Headpat + FrameIndex XZWH S 0 472 + FrameIndex XZWH T 0 473 + FrameIndex XZWH U 0 474 + FrameIndex XZWH V 0 475 + FrameIndex XZWH W 0 476 + FrameIndex XZWH X 0 477 // PatStart + FrameIndex XZWH Y 0 478 + FrameIndex XZWH Z 0 479 + FrameIndex XZWI A 0 480 + FrameIndex XZWI B 0 481 + FrameIndex XZWI C 0 482 // PatPat + FrameIndex XZWI D 0 483 + FrameIndex XZWI E 0 484 + FrameIndex XZWI F 0 485 + FrameIndex XZWI G 0 486 + FrameIndex XZWI H 0 487 + FrameIndex XZWI I 0 488 // PatEnd + FrameIndex XZWI J 0 489 + FrameIndex XZWI K 0 490 + FrameIndex XZWI L 0 491 + FrameIndex XZWI M 0 492 + FrameIndex XZWI N 0 493 + FrameIndex XZWI O 0 494 + // Jog + FrameIndex XZWI P 0 496 + FrameIndex XZWI Q 0 497 + FrameIndex XZWI R 0 498 + FrameIndex XZWI S 0 499 // rstep + FrameIndex XZWI T 0 500 + FrameIndex XZWI U 0 501 + FrameIndex XZWI V 0 502 + FrameIndex XZWI W 0 503 + FrameIndex XZWI X 0 504 + FrameIndex XZWI Y 0 505 // lstep + FrameIndex XZWI Z 0 506 + // Jump + FrameIndex XZWJ A 0 508 + FrameIndex XZWJ B 0 509 + FrameIndex XZWJ C 0 510 + FrameIndex XZWJ D 0 511 + FrameIndex XZWJ E 0 512 + FrameIndex XZWJ F 0 513 +} + +// Voodoo Doll +Model "SWWMVoodooDoll" +{ + Path "models" + Model 0 "VoodooDoll.iqm" + Animation 0 "VoodooDoll.iqm" + SurfaceSkin 0 0 "VoodooDoll.png" + Scale 40.96 40.96 40.96 + AngleOffset -90 + IGNORETRANSLATION + + // Still + FrameIndex XZW1 A 0 1 + // Pain + FrameIndex XZW1 B 0 2 + FrameIndex XZW1 C 0 3 + FrameIndex XZW1 D 0 4 + FrameIndex XZW1 E 0 5 + FrameIndex XZW1 F 0 6 + // Death + FrameIndex XZW1 G 0 8 + FrameIndex XZW1 H 0 9 + FrameIndex XZW1 I 0 10 + FrameIndex XZW1 J 0 11 + FrameIndex XZW1 K 0 12 + FrameIndex XZW1 L 0 13 + FrameIndex XZW1 M 0 14 + FrameIndex XZW1 N 0 15 + FrameIndex XZW1 O 0 16 + FrameIndex XZW1 P 0 17 + FrameIndex XZW1 Q 0 18 + FrameIndex XZW1 R 0 19 + FrameIndex XZW1 S 0 20 +} diff --git a/modeldef/dlc/dlcammo.txt b/modeldef/dlc/dlcammo.txt new file mode 100644 index 000000000..e311e32ca --- /dev/null +++ b/modeldef/dlc/dlcammo.txt @@ -0,0 +1,427 @@ +// dlc ammunition + +/*Model "SMW05Ammo" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SMW05Ammo2" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SMW05Ammo3" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SMW05SmallAmmo" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 6 6 6 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SMW05BigAmmo" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 8 8 8 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +}*/ + +Model "SheenAmmo" +{ + Path "models" + + Model 0 "SheenBullet.iqm" + Skin 0 "SheenBullet.png" + Scale 6 6 6 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SheenAmmo2" +{ + Path "models" + + Model 0 "SheenBullet2.iqm" + Skin 0 "SheenBullet.png" + Scale 6 6 6 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SheenAmmo3" +{ + Path "models" + + Model 0 "SheenBullet3.iqm" + Skin 0 "SheenBullet.png" + Scale 6 6 6 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SheenSmallAmmo" +{ + Path "models" + + Model 0 "SheenBullet10.iqm" + SurfaceSkin 0 0 "SheenBullet.png" + SurfaceSkin 0 1 "SheenAmmoBand.png" + Scale 6 6 6 + ZOffset 16 + + FrameIndex XZW1 A 0 0 +} +Model "SheenBigAmmo" +{ + Path "models" + + Model 0 "SheenBullet50.iqm" + Skin 0 "SheenAmmoBox.png" + Scale 12 12 12 + AngleOffset -90 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "QuadravolAmmo" +{ + Path "models" + + Model 0 "QuadravolAmmo.iqm" + Skin 0 "QuadCell.png" + Scale 5 5 5 + ZOffset 16 + RollOffset -30 + AngleOffset -90 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "QuadravolAmmo2" +{ + Path "models" + + Model 0 "QuadravolAmmo_Two.iqm" + Skin 0 "QuadCell.png" + Scale 5 5 5 + ZOffset 16 + AngleOffset -90 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "QuadravolAmmo3" +{ + Path "models" + + Model 0 "QuadravolAmmo_Three.iqm" + Skin 0 "QuadCell.png" + Scale 5 5 5 + ZOffset 16 + AngleOffset -90 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +/*Model "SparksterBAmmo" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SparksterBAmmo2" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SparksterBAmmo3" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SparksterRAmmo" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SparksterRAmmo2" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SparksterRAmmo3" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "RayBolt" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 6 6 6 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "RayBolt2" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 6 6 6 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "RayBolt5" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 6 6 6 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "RayAmmo" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 10 10 10 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +}*/ + +Model "MisterRound" +{ + Path "models" + + Model 0 "MortalRound1.iqm" + Skin 0 "MortalRound.png" + Scale 8 8 8 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "MisterRound2" +{ + Path "models" + + Model 0 "MortalRound2.iqm" + Skin 0 "MortalRound.png" + Scale 8 8 8 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "MisterRound3" +{ + Path "models" + + Model 0 "MortalRound3.iqm" + Skin 0 "MortalRound.png" + Scale 8 8 8 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "MisterRound5" +{ + Path "models" + + Model 0 "MortalRound5.iqm" + Skin 0 "MortalRound.png" + Scale 8 8 8 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "MisterAmmo" +{ + Path "models" + + Model 0 "MortalMag.iqm" + Skin 0 "MortalMag.png" + Scale 8 8 8 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "MisterGAmmo" +{ + Path "models" + + Model 0 "MortalGrenadeAmmo.iqm" + Skin 0 "MortalGrenade.png" + Scale 8 8 8 + ZOffset 16 + AngleOffset -90 + RollOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +/*Model "UltimatePod" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 8 8 8 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "UltimateAmmo" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILY" + Scale 10 10 10 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +}*/ diff --git a/modeldef/dlc/hammer.txt b/modeldef/dlc/hammer.txt new file mode 100644 index 000000000..f3cbd799e --- /dev/null +++ b/modeldef/dlc/hammer.txt @@ -0,0 +1,252 @@ +// itamex hammer + +Model "HammerRadiusShockwave" +{ + Path "models/extra" + Model 0 "Flat.obj" + Skin 0 "Shockwave.png" + Scale 200 12 3 + PitchOffset 90 + ZOffset 4 + USEACTORPITCH + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} + +Model "ItamexHammer" +{ + Path "models" + + Model 0 "CombatHammerPickup.iqm" + Skin 0 "CombatHammer.png" + Scale 50 50 50 + ZOffset 28 + AngleOffset -90 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "ItamexHammer" +{ + Path "models" + + Model 1 "CombatHammer1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "CombatHammer.png" + + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + // Still + FrameIndex XZW2 A 1 0 + // Deselect + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 // Select + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + FrameIndex XZW2 Q 1 16 + FrameIndex XZW2 R 1 17 + FrameIndex XZW2 S 1 18 + FrameIndex XZW2 T 1 19 + // Swing + FrameIndex XZW2 U 1 20 + FrameIndex XZW2 V 1 21 + FrameIndex XZW2 W 1 22 + FrameIndex XZW2 X 1 23 + FrameIndex XZW2 Y 1 24 + FrameIndex XZW2 Z 1 25 + FrameIndex XZW3 A 1 26 + FrameIndex XZW3 B 1 27 + FrameIndex XZW3 C 1 28 + FrameIndex XZW3 D 1 29 + FrameIndex XZW3 E 1 30 + FrameIndex XZW3 F 1 31 // Melee / HitStop + FrameIndex XZW3 G 1 32 + FrameIndex XZW3 H 1 33 + FrameIndex XZW3 I 1 34 + FrameIndex XZW3 J 1 35 + FrameIndex XZW3 K 1 36 + FrameIndex XZW3 L 1 37 + FrameIndex XZW3 M 1 38 + FrameIndex XZW3 N 1 39 + FrameIndex XZW3 O 1 40 + FrameIndex XZW3 P 1 41 + FrameIndex XZW3 Q 1 42 + FrameIndex XZW3 R 1 43 + // SwingHit (jump from HitStop) + FrameIndex XZW3 S 1 46 + FrameIndex XZW3 T 1 47 + FrameIndex XZW3 U 1 48 + FrameIndex XZW3 V 1 49 + FrameIndex XZW3 W 1 50 + FrameIndex XZW3 X 1 51 + FrameIndex XZW3 Y 1 52 + FrameIndex XZW3 Z 1 53 + FrameIndex XZW4 A 1 54 + FrameIndex XZW4 B 1 55 + FrameIndex XZW4 C 1 56 + // AltPrepare + FrameIndex XZW4 D 1 58 + FrameIndex XZW4 E 1 59 + FrameIndex XZW4 F 1 60 + FrameIndex XZW4 G 1 61 + FrameIndex XZW4 H 1 62 + FrameIndex XZW4 I 1 63 + FrameIndex XZW4 J 1 64 + FrameIndex XZW4 K 1 65 + FrameIndex XZW4 L 1 66 + FrameIndex XZW4 M 1 67 + FrameIndex XZW4 N 1 68 + FrameIndex XZW4 O 1 69 + FrameIndex XZW4 P 1 70 + FrameIndex XZW4 Q 1 71 + FrameIndex XZW4 R 1 72 + FrameIndex XZW4 S 1 73 + FrameIndex XZW4 T 1 74 + FrameIndex XZW4 U 1 75 + // AltHold + FrameIndex XZW4 V 1 76 + // AltRelease + FrameIndex XZW4 W 1 77 + FrameIndex XZW4 X 1 78 + FrameIndex XZW4 Y 1 79 + FrameIndex XZW4 Z 1 80 + FrameIndex XZW5 A 1 81 + FrameIndex XZW5 B 1 82 // Hit + FrameIndex XZW5 C 1 83 + FrameIndex XZW5 D 1 84 + FrameIndex XZW5 E 1 85 // Slam + FrameIndex XZW5 F 1 86 + FrameIndex XZW5 G 1 87 + FrameIndex XZW5 H 1 88 + FrameIndex XZW5 I 1 89 + FrameIndex XZW5 J 1 90 + FrameIndex XZW5 K 1 91 + FrameIndex XZW5 L 1 92 + FrameIndex XZW5 M 1 93 + FrameIndex XZW5 N 1 94 + FrameIndex XZW5 O 1 95 + FrameIndex XZW5 P 1 96 + FrameIndex XZW5 Q 1 97 + FrameIndex XZW5 R 1 98 + FrameIndex XZW5 S 1 99 + FrameIndex XZW5 T 1 100 + FrameIndex XZW5 U 1 101 + FrameIndex XZW5 V 1 102 + FrameIndex XZW5 W 1 103 + // StartSpin + FrameIndex XZW5 X 1 105 + FrameIndex XZW5 Y 1 106 + FrameIndex XZW5 Z 1 107 + FrameIndex XZW6 A 1 108 + FrameIndex XZW6 B 1 109 + FrameIndex XZW6 C 1 110 + FrameIndex XZW6 D 1 111 + FrameIndex XZW6 E 1 112 + FrameIndex XZW6 F 1 113 + // SpinHold + FrameIndex XZW6 G 1 114 + // SpinRelease + FrameIndex XZW6 H 1 115 + FrameIndex XZW6 I 1 116 + FrameIndex XZW6 J 1 117 + FrameIndex XZW6 K 1 118 + FrameIndex XZW6 L 1 119 + FrameIndex XZW6 M 1 120 + FrameIndex XZW6 N 1 121 + FrameIndex XZW6 O 1 122 + FrameIndex XZW6 P 1 123 + FrameIndex XZW6 Q 1 124 + FrameIndex XZW6 R 1 125 + FrameIndex XZW6 S 1 126 + FrameIndex XZW6 T 1 127 + FrameIndex XZW6 U 1 128 + FrameIndex XZW6 V 1 129 + FrameIndex XZW6 W 1 130 + // Idle + FrameIndex XZW6 X 1 132 + FrameIndex XZW6 Y 1 133 + FrameIndex XZW6 Z 1 134 + FrameIndex XZW7 A 1 135 + FrameIndex XZW7 B 1 136 + FrameIndex XZW7 C 1 137 + FrameIndex XZW7 D 1 138 + FrameIndex XZW7 E 1 139 + FrameIndex XZW7 F 1 140 + FrameIndex XZW7 G 1 141 + FrameIndex XZW7 H 1 142 + FrameIndex XZW7 I 1 143 + FrameIndex XZW7 J 1 144 + FrameIndex XZW7 K 1 145 + FrameIndex XZW7 L 1 146 + FrameIndex XZW7 M 1 147 + FrameIndex XZW7 N 1 148 + FrameIndex XZW7 O 1 149 + FrameIndex XZW7 P 1 150 + FrameIndex XZW7 Q 1 151 + FrameIndex XZW7 R 1 152 + FrameIndex XZW7 S 1 153 + FrameIndex XZW7 T 1 154 + FrameIndex XZW7 U 1 155 + FrameIndex XZW7 V 1 156 + FrameIndex XZW7 W 1 157 + FrameIndex XZW7 X 1 158 + FrameIndex XZW7 Y 1 159 + FrameIndex XZW7 Z 1 160 + FrameIndex XZW8 A 1 161 // RotationSnap + FrameIndex XZW8 B 1 162 + FrameIndex XZW8 C 1 163 + FrameIndex XZW8 D 1 164 + FrameIndex XZW8 E 1 165 + FrameIndex XZW8 F 1 166 + FrameIndex XZW8 G 1 167 + FrameIndex XZW8 H 1 168 + FrameIndex XZW8 I 1 169 + // Melee + FrameIndex XZW8 J 1 171 // MeleeStart + FrameIndex XZW8 K 1 172 + FrameIndex XZW8 L 1 173 + FrameIndex XZW8 M 1 174 + FrameIndex XZW8 N 1 175 + FrameIndex XZW8 O 1 176 + FrameIndex XZW8 P 1 177 + FrameIndex XZW8 Q 1 178 + FrameIndex XZW8 R 1 179 // Parry + FrameIndex XZW8 S 1 180 + FrameIndex XZW8 T 1 181 // Melee + FrameIndex XZW8 U 1 182 + FrameIndex XZW8 V 1 183 + FrameIndex XZW8 W 1 184 + FrameIndex XZW8 X 1 185 + FrameIndex XZW8 Y 1 186 + FrameIndex XZW8 Z 1 187 + FrameIndex XZW9 A 1 188 + FrameIndex XZW9 B 1 189 + FrameIndex XZW9 C 1 190 + FrameIndex XZW9 D 1 191 // MeleeEnd + FrameIndex XZW9 E 1 192 + FrameIndex XZW9 F 1 193 + FrameIndex XZW9 G 1 194 + FrameIndex XZW9 H 1 195 + FrameIndex XZW9 I 1 196 + FrameIndex XZW9 J 1 197 + FrameIndex XZW9 K 1 198 + FrameIndex XZW9 L 1 199 +} diff --git a/modeldef/dlc/mortalrifle.txt b/modeldef/dlc/mortalrifle.txt new file mode 100644 index 000000000..98008d018 --- /dev/null +++ b/modeldef/dlc/mortalrifle.txt @@ -0,0 +1,686 @@ +// mortal rifle + +Model "MisterCasing" +{ + Path "models" + + Model 0 "MortalCasing.iqm" + Skin 0 "MortalRound_Used.png" + Scale 8 8 8 + AngleOffset 90 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 0.35 + FrameIndex XZW1 B 0 0 + PitchOffset 90 + FrameIndex XZW1 C 0 0 + PitchOffset 180 + FrameIndex XZW1 D 0 0 + PitchOffset 270 + FrameIndex XZW1 E 0 0 +} + +Model "MisterGCasing" +{ + Path "models" + + Model 0 "MortalGrenadeCasing.iqm" + Skin 0 "MortalGrenade_Used.png" + Scale 8 8 8 + AngleOffset 90 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 1.1 + FrameIndex XZW1 B 0 0 +} + +Model "MisterMag" +{ + Path "models" + + Model 0 "MortalMag.iqm" + Scale 8 8 8 + AngleOffset 90 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + Skin 0 "MortalMag_Empty.png" + FrameIndex XZW1 A 0 0 + ZOffset 0.8 + PitchOffset 90 + FrameIndex XZW1 B 0 0 + PitchOffset -90 + FrameIndex XZW1 C 0 0 +} + +Model "MisterGrenade" +{ + Path "models" + + Model 0 "MortalGrenade.iqm" + Skin 0 "MortalGrenade.png" + Scale 24 24 24 + AngleOffset 90 + ZOffset 3.3 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "MisterSubGrenade" +{ + Path "models" + + Model 0 "MortalGrenade.iqm" + Skin 0 "MortalGrenade.png" + Scale 8 8 8 + AngleOffset 90 + ZOffset 1.1 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "MisterRailBeam" +{ + Path "models/extra" + + Model 0 "YBeam.obj" + Skin 0 "MRBolt.png" + Scale 1 1 1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 + Skin 0 "MRBoltS.png" + FrameIndex XZW1 B 0 0 +} +Model "MisterRailChildBeam" +{ + Path "models/extra" + + Model 0 "YBeam.obj" + Skin 0 "MRBolt.png" + Scale 1 1 1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 + Skin 0 "MRBoltS.png" + FrameIndex XZW1 B 0 0 +} + +Model "MisterRifle" +{ + Path "models" + + Model 0 "MortalRiflePickup.iqm" + SurfaceSkin 0 0 "MortalRifle.png" + SurfaceSkin 0 1 "NoLED.png" + SurfaceSkin 0 2 "-notex-" + SurfaceSkin 0 3 "MortalSight.png" + SurfaceSkin 0 4 "MortalMag.png" + Scale 64 64 64 + ZOffset 20 + AngleOffset -90 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 +} + +Model "MisterRifle" +{ + Path "models/extra" + + Model 2 "Flat.obj" + Scale -30 30 30 + Offset 15 -90 -15 + PitchOffset 90 + + Skin 2 "MRMuz0.png" + FrameIndex XZW0 A 2 0 + Skin 2 "MRMuz1.png" + FrameIndex XZW0 B 2 0 + Skin 2 "MRMuz2.png" + FrameIndex XZW0 C 2 0 + Skin 2 "MRMuz3.png" + FrameIndex XZW0 D 2 0 + + Scale -50 50 50 + + Skin 2 "RailMuz0.png" + FrameIndex XZW0 E 2 0 + Skin 2 "RailMuz1.png" + FrameIndex XZW0 F 2 0 + Skin 2 "RailMuz2.png" + FrameIndex XZW0 G 2 0 + Skin 2 "RailMuz3.png" + FrameIndex XZW0 H 2 0 + + Scale -20 20 20 + Offset 15 -80 -26 + + Skin 2 "MRMuz0.png" + FrameIndex XZW0 I 2 0 + Skin 2 "MRMuz1.png" + FrameIndex XZW0 J 2 0 + Skin 2 "MRMuz2.png" + FrameIndex XZW0 K 2 0 + Skin 2 "MRMuz3.png" + FrameIndex XZW0 L 2 0 +} + +Model "MisterRifle" +{ + Path "models" + + Model 1 "MortalRifle1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "MortalRifle.png" + SurfaceSkin 1 4 "MortalLED.png" + SurfaceSkin 1 5 "MortalLED2.png" + SurfaceSkin 1 6 "MortalSight.png" + + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + //// UNLOCKED + // Still / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 // Select + FrameIndex XZW2 Q 1 16 + FrameIndex XZW2 R 1 17 + FrameIndex XZW2 S 1 18 + FrameIndex XZW2 T 1 19 + FrameIndex XZW2 U 1 20 + FrameIndex XZW2 V 1 21 + FrameIndex XZW2 W 1 22 + FrameIndex XZW2 X 1 23 + FrameIndex XZW2 Y 1 24 + FrameIndex XZW2 Z 1 25 + FrameIndex XZW3 A 1 26 + FrameIndex XZW3 B 1 27 + FrameIndex XZW3 C 1 28 + FrameIndex XZW3 D 1 29 + // Semi Fire + FrameIndex XZW3 E 1 31 + FrameIndex XZW3 F 1 32 + FrameIndex XZW3 G 1 33 + FrameIndex XZW3 H 1 34 + FrameIndex XZW3 I 1 35 + FrameIndex XZW3 J 1 36 + FrameIndex XZW3 K 1 37 + // Scatter Fire + FrameIndex XZW3 L 1 39 + FrameIndex XZW3 M 1 40 + FrameIndex XZW3 N 1 41 + FrameIndex XZW3 O 1 42 + FrameIndex XZW3 P 1 43 + FrameIndex XZW3 Q 1 44 + FrameIndex XZW3 R 1 45 + FrameIndex XZW3 S 1 46 + // Stream Fire + FrameIndex XZW3 T 1 48 + FrameIndex XZW3 U 1 49 + FrameIndex XZW3 V 1 50 + FrameIndex XZW3 W 1 51 + FrameIndex XZW3 X 1 52 + FrameIndex XZW3 Y 1 53 + FrameIndex XZW3 Z 1 54 + FrameIndex XZW4 A 1 55 + FrameIndex XZW4 B 1 56 + FrameIndex XZW4 C 1 57 + // Sniper Pre-Fire + FrameIndex XZW4 D 1 59 + FrameIndex XZW4 E 1 60 + FrameIndex XZW4 F 1 61 // Hold + // Sniper Fire + FrameIndex XZW4 G 1 62 + FrameIndex XZW4 H 1 63 + FrameIndex XZW4 I 1 64 + FrameIndex XZW4 J 1 65 + FrameIndex XZW4 K 1 66 + FrameIndex XZW4 L 1 67 + FrameIndex XZW4 M 1 68 + FrameIndex XZW4 N 1 69 + // Grenade Fire + FrameIndex XZW4 O 1 71 + FrameIndex XZW4 P 1 72 + FrameIndex XZW4 Q 1 73 + FrameIndex XZW4 R 1 74 + FrameIndex XZW4 S 1 75 + FrameIndex XZW4 T 1 76 + FrameIndex XZW4 U 1 77 + FrameIndex XZW4 V 1 78 + FrameIndex XZW4 W 1 79 + // Grenade Reload + FrameIndex XZW4 X 1 81 + FrameIndex XZW4 Y 1 82 + FrameIndex XZW4 Z 1 83 + FrameIndex XZW5 A 1 84 + FrameIndex XZW5 B 1 85 // Open + FrameIndex XZW5 C 1 86 + FrameIndex XZW5 D 1 87 + FrameIndex XZW5 E 1 88 + FrameIndex XZW5 F 1 89 + FrameIndex XZW5 G 1 90 // DropGrenadeCasing + FrameIndex XZW5 H 1 91 + FrameIndex XZW5 I 1 92 // StartReload + FrameIndex XZW5 J 1 93 + FrameIndex XZW5 K 1 94 + FrameIndex XZW5 L 1 95 + FrameIndex XZW5 M 1 96 // Insert + FrameIndex XZW5 N 1 97 + FrameIndex XZW5 O 1 98 + FrameIndex XZW5 P 1 99 + FrameIndex XZW5 Q 1 100 + FrameIndex XZW5 R 1 101 + FrameIndex XZW5 S 1 102 + FrameIndex XZW5 T 1 103 // Close + FrameIndex XZW5 U 1 104 + FrameIndex XZW5 V 1 105 + FrameIndex XZW5 W 1 106 + FrameIndex XZW5 X 1 107 + FrameIndex XZW5 Y 1 108 + FrameIndex XZW5 Z 1 109 + FrameIndex XZW6 A 1 110 + FrameIndex XZW6 B 1 111 + FrameIndex XZW6 C 1 112 + FrameIndex XZW6 D 1 113 + FrameIndex XZW6 E 1 114 + FrameIndex XZW6 F 1 115 + FrameIndex XZW6 G 1 116 + // Cycle + FrameIndex XZW6 H 1 118 // BoltBack + FrameIndex XZW6 I 1 119 + FrameIndex XZW6 J 1 120 + FrameIndex XZW6 K 1 121 // BoltForward + FrameIndex XZW6 L 1 122 + FrameIndex XZW6 M 1 123 + FrameIndex XZW6 N 1 124 + FrameIndex XZW6 O 1 125 // DropCasing + // FireSelect + FrameIndex XZW6 P 1 127 + FrameIndex XZW6 Q 1 128 + FrameIndex XZW6 R 1 129 + FrameIndex XZW6 S 1 130 + FrameIndex XZW6 T 1 131 + FrameIndex XZW6 U 1 132 + FrameIndex XZW6 V 1 133 + FrameIndex XZW6 W 1 134 + FrameIndex XZW6 X 1 135 // FireSel + FrameIndex XZW6 Y 1 136 + FrameIndex XZW6 Z 1 137 + FrameIndex XZW7 A 1 138 + FrameIndex XZW7 B 1 139 + FrameIndex XZW7 C 1 140 + FrameIndex XZW7 D 1 141 + FrameIndex XZW7 E 1 142 + FrameIndex XZW7 F 1 143 + FrameIndex XZW7 G 1 144 + FrameIndex XZW7 H 1 145 + FrameIndex XZW7 I 1 146 + // Idle + FrameIndex XZW7 J 1 148 + FrameIndex XZW7 K 1 149 + FrameIndex XZW7 L 1 150 + FrameIndex XZW7 M 1 151 + FrameIndex XZW7 N 1 152 + FrameIndex XZW7 O 1 153 + FrameIndex XZW7 P 1 154 + FrameIndex XZW7 Q 1 155 + FrameIndex XZW7 R 1 156 + FrameIndex XZW7 S 1 157 + FrameIndex XZW7 T 1 158 + FrameIndex XZW7 U 1 159 + FrameIndex XZW7 V 1 160 + FrameIndex XZW7 W 1 161 + FrameIndex XZW7 X 1 162 + FrameIndex XZW7 Y 1 163 + FrameIndex XZW7 Z 1 164 + FrameIndex XZW8 A 1 165 + FrameIndex XZW8 B 1 166 + FrameIndex XZW8 C 1 167 + FrameIndex XZW8 D 1 168 + FrameIndex XZW8 E 1 169 + FrameIndex XZW8 F 1 170 + FrameIndex XZW8 G 1 171 + FrameIndex XZW8 H 1 172 + FrameIndex XZW8 I 1 173 + FrameIndex XZW8 J 1 174 + FrameIndex XZW8 K 1 175 + FrameIndex XZW8 L 1 176 + // Melee + FrameIndex XZW8 M 1 178 + FrameIndex XZW8 N 1 179 + FrameIndex XZW8 O 1 180 + FrameIndex XZW8 P 1 181 + FrameIndex XZW8 Q 1 182 + FrameIndex XZW8 R 1 183 + FrameIndex XZW8 S 1 184 // Parry + FrameIndex XZW8 T 1 185 + FrameIndex XZW8 U 1 186 // Melee + FrameIndex XZW8 V 1 187 + FrameIndex XZW8 W 1 188 + FrameIndex XZW8 X 1 189 + FrameIndex XZW8 Y 1 190 + FrameIndex XZW8 Z 1 191 + FrameIndex XZW9 A 1 192 + FrameIndex XZW9 B 1 193 + FrameIndex XZW9 C 1 194 + FrameIndex XZW9 D 1 195 + FrameIndex XZW9 E 1 196 + FrameIndex XZW9 F 1 197 + FrameIndex XZW9 G 1 198 + FrameIndex XZW9 H 1 199 + FrameIndex XZW9 I 1 200 + FrameIndex XZW9 J 1 201 + // Reload + FrameIndex XZW9 K 1 203 + FrameIndex XZW9 L 1 204 + FrameIndex XZW9 M 1 205 + FrameIndex XZW9 N 1 206 + FrameIndex XZW9 O 1 207 + FrameIndex XZW9 P 1 208 + FrameIndex XZW9 Q 1 209 + FrameIndex XZW9 R 1 210 + FrameIndex XZW9 S 1 211 + FrameIndex XZW9 T 1 212 + FrameIndex XZW9 U 1 213 // MagOut + FrameIndex XZW9 V 1 214 + FrameIndex XZW9 W 1 215 + FrameIndex XZW9 X 1 216 + FrameIndex XZW9 Y 1 217 + FrameIndex XZW9 Z 1 218 + FrameIndex XZWA A 1 219 + FrameIndex XZWA B 1 220 + FrameIndex XZWA C 1 221 + FrameIndex XZWA D 1 222 // MagDrop + FrameIndex XZWA E 1 223 + FrameIndex XZWA F 1 224 // MagGrab + FrameIndex XZWA G 1 225 + FrameIndex XZWA H 1 226 + FrameIndex XZWA I 1 227 + FrameIndex XZWA J 1 228 // MagIn + FrameIndex XZWA K 1 229 + FrameIndex XZWA L 1 230 // MagReallyIn + FrameIndex XZWA M 1 231 + FrameIndex XZWA N 1 232 + FrameIndex XZWA O 1 233 + FrameIndex XZWA P 1 234 + FrameIndex XZWA Q 1 235 + FrameIndex XZWA R 1 236 + FrameIndex XZWA S 1 237 + FrameIndex XZWA T 1 238 + FrameIndex XZWA U 1 239 + FrameIndex XZWA V 1 240 + // CycleLock + FrameIndex XZWA W 1 242 // BoltBack + FrameIndex XZWA X 1 243 + FrameIndex XZWA Y 1 244 + FrameIndex XZWA Z 1 245 + FrameIndex XZWB A 1 246 + FrameIndex XZWB B 1 247 + FrameIndex XZWB C 1 248 + FrameIndex XZWB D 1 249 // DropCasing + //// LOCKED + // Still / Deselect + FrameIndex XZWB E 1 250 + FrameIndex XZWB F 1 251 + FrameIndex XZWB G 1 252 + FrameIndex XZWB H 1 253 + FrameIndex XZWB I 1 254 + FrameIndex XZWB J 1 255 + FrameIndex XZWB K 1 256 + FrameIndex XZWB L 1 257 + FrameIndex XZWB M 1 258 + FrameIndex XZWB N 1 259 + FrameIndex XZWB O 1 260 + FrameIndex XZWB P 1 261 + FrameIndex XZWB Q 1 262 + FrameIndex XZWB R 1 263 + FrameIndex XZWB S 1 264 + FrameIndex XZWB T 1 265 // Select + FrameIndex XZWB U 1 266 + FrameIndex XZWB V 1 267 + FrameIndex XZWB W 1 268 + FrameIndex XZWB X 1 269 + FrameIndex XZWB Y 1 270 + FrameIndex XZWB Z 1 271 + FrameIndex XZWC A 1 272 + FrameIndex XZWC B 1 273 + FrameIndex XZWC C 1 274 + FrameIndex XZWC D 1 275 + FrameIndex XZWC E 1 276 + FrameIndex XZWC F 1 277 + FrameIndex XZWC G 1 278 + FrameIndex XZWC H 1 279 + // Grenade Fire + FrameIndex XZWC I 1 281 + FrameIndex XZWC J 1 282 + FrameIndex XZWC K 1 283 + FrameIndex XZWC L 1 284 + FrameIndex XZWC M 1 285 + FrameIndex XZWC N 1 286 + FrameIndex XZWC O 1 287 + FrameIndex XZWC P 1 288 + FrameIndex XZWC Q 1 289 + // Grenade Reload + FrameIndex XZWC R 1 291 + FrameIndex XZWC S 1 292 + FrameIndex XZWC T 1 293 + FrameIndex XZWC U 1 294 + FrameIndex XZWC V 1 295 // Open + FrameIndex XZWC W 1 296 + FrameIndex XZWC X 1 297 + FrameIndex XZWC Y 1 298 + FrameIndex XZWC Z 1 299 + FrameIndex XZWD A 1 300 // DropGrenadeCasing + FrameIndex XZWD B 1 301 + FrameIndex XZWD C 1 302 // StartReload + FrameIndex XZWD D 1 303 + FrameIndex XZWD E 1 304 + FrameIndex XZWD F 1 305 + FrameIndex XZWD G 1 306 // Insert + FrameIndex XZWD H 1 307 + FrameIndex XZWD I 1 308 + FrameIndex XZWD J 1 309 + FrameIndex XZWD K 1 310 + FrameIndex XZWD L 1 311 + FrameIndex XZWD M 1 312 + FrameIndex XZWD N 1 313 // Close + FrameIndex XZWD O 1 314 + FrameIndex XZWD P 1 315 + FrameIndex XZWD Q 1 316 + FrameIndex XZWD R 1 317 + FrameIndex XZWD S 1 318 + FrameIndex XZWD T 1 319 + FrameIndex XZWD U 1 320 + FrameIndex XZWD V 1 321 + FrameIndex XZWD W 1 322 + FrameIndex XZWD X 1 323 + FrameIndex XZWD Y 1 324 + FrameIndex XZWD Z 1 325 + FrameIndex XZWE A 1 326 + // FireSelect + FrameIndex XZWE B 1 328 + FrameIndex XZWE C 1 329 + FrameIndex XZWE D 1 330 + FrameIndex XZWE E 1 331 + FrameIndex XZWE F 1 332 + FrameIndex XZWE G 1 333 + FrameIndex XZWE H 1 334 + FrameIndex XZWE I 1 335 + FrameIndex XZWE J 1 336 // FireSel + FrameIndex XZWE K 1 337 + FrameIndex XZWE L 1 338 + FrameIndex XZWE M 1 339 + FrameIndex XZWE N 1 340 + FrameIndex XZWE O 1 341 + FrameIndex XZWE P 1 342 + FrameIndex XZWE Q 1 343 + FrameIndex XZWE R 1 344 + FrameIndex XZWE S 1 345 + FrameIndex XZWE T 1 346 + FrameIndex XZWE U 1 347 + // Idle + FrameIndex XZWE V 1 349 + FrameIndex XZWE W 1 350 + FrameIndex XZWE X 1 351 + FrameIndex XZWE Y 1 352 + FrameIndex XZWE Z 1 353 + FrameIndex XZWF A 1 354 + FrameIndex XZWF B 1 355 + FrameIndex XZWF C 1 356 + FrameIndex XZWF D 1 357 + FrameIndex XZWF E 1 358 + FrameIndex XZWF F 1 359 + FrameIndex XZWF G 1 360 + FrameIndex XZWF H 1 361 + FrameIndex XZWF I 1 362 + FrameIndex XZWF J 1 363 + FrameIndex XZWF K 1 364 + FrameIndex XZWF L 1 365 + FrameIndex XZWF M 1 366 + FrameIndex XZWF N 1 367 + FrameIndex XZWF O 1 368 + FrameIndex XZWF P 1 369 + FrameIndex XZWF Q 1 370 + FrameIndex XZWF R 1 371 + FrameIndex XZWF S 1 372 + FrameIndex XZWF T 1 373 + FrameIndex XZWF U 1 374 + FrameIndex XZWF V 1 375 + FrameIndex XZWF W 1 376 + FrameIndex XZWF X 1 377 + // Melee + FrameIndex XZWF Y 1 379 + FrameIndex XZWF Z 1 380 + FrameIndex XZWG A 1 381 + FrameIndex XZWG B 1 382 + FrameIndex XZWG C 1 383 + FrameIndex XZWG D 1 384 + FrameIndex XZWG E 1 385 // Parry + FrameIndex XZWG F 1 386 + FrameIndex XZWG G 1 387 // Melee + FrameIndex XZWG H 1 388 + FrameIndex XZWG I 1 389 + FrameIndex XZWG J 1 390 + FrameIndex XZWG K 1 391 + FrameIndex XZWG L 1 392 + FrameIndex XZWG M 1 393 + FrameIndex XZWG N 1 394 + FrameIndex XZWG O 1 395 + FrameIndex XZWG P 1 396 + FrameIndex XZWG Q 1 397 + FrameIndex XZWG R 1 398 + FrameIndex XZWG S 1 399 + FrameIndex XZWG T 1 400 + FrameIndex XZWG U 1 401 + FrameIndex XZWG V 1 402 + // Reload + FrameIndex XZWG W 1 404 + FrameIndex XZWG X 1 405 + FrameIndex XZWG Y 1 406 + FrameIndex XZWG Z 1 407 + FrameIndex XZWH A 1 408 + FrameIndex XZWH B 1 409 + FrameIndex XZWH C 1 410 + FrameIndex XZWH D 1 411 + FrameIndex XZWH E 1 412 + FrameIndex XZWH F 1 413 + FrameIndex XZWH G 1 414 // MagOut + FrameIndex XZWH H 1 415 + FrameIndex XZWH I 1 416 + FrameIndex XZWH J 1 417 + FrameIndex XZWH K 1 418 + FrameIndex XZWH L 1 419 + FrameIndex XZWH M 1 420 + FrameIndex XZWH N 1 421 + FrameIndex XZWH O 1 422 + FrameIndex XZWH P 1 423 // MagDrop + FrameIndex XZWH Q 1 424 + FrameIndex XZWH R 1 425 // MagGet + FrameIndex XZWH S 1 426 + FrameIndex XZWH T 1 427 + FrameIndex XZWH U 1 428 + FrameIndex XZWH V 1 429 // MagIn + FrameIndex XZWH W 1 430 + FrameIndex XZWH X 1 431 // MagReallyIn + FrameIndex XZWH Y 1 432 + FrameIndex XZWH Z 1 433 + FrameIndex XZWI A 1 434 + FrameIndex XZWI B 1 435 + FrameIndex XZWI C 1 436 + FrameIndex XZWI D 1 437 + FrameIndex XZWI E 1 438 + FrameIndex XZWI F 1 439 + FrameIndex XZWI G 1 440 + FrameIndex XZWI H 1 441 // BoltForward + FrameIndex XZWI I 1 442 + FrameIndex XZWI J 1 443 + FrameIndex XZWI K 1 444 + FrameIndex XZWI L 1 445 + FrameIndex XZWI M 1 446 + FrameIndex XZWI N 1 447 + FrameIndex XZWI O 1 448 + FrameIndex XZWI P 1 449 + FrameIndex XZWI Q 1 450 + //// BONUS + // SelectCycle + FrameIndex XZWI R 1 451 + FrameIndex XZWI S 1 452 + FrameIndex XZWI T 1 453 + FrameIndex XZWI U 1 454 + FrameIndex XZWI V 1 455 + FrameIndex XZWI W 1 456 + FrameIndex XZWI X 1 457 + FrameIndex XZWI Y 1 458 + FrameIndex XZWI Z 1 459 + FrameIndex XZWJ A 1 460 // BoltBack + FrameIndex XZWJ B 1 461 + FrameIndex XZWJ C 1 462 + FrameIndex XZWJ D 1 463 // BoltForward + FrameIndex XZWJ E 1 464 + FrameIndex XZWJ F 1 465 + FrameIndex XZWJ G 1 466 + FrameIndex XZWJ H 1 467 + FrameIndex XZWJ I 1 468 + FrameIndex XZWJ J 1 469 + FrameIndex XZWJ K 1 470 + FrameIndex XZWJ L 1 471 + FrameIndex XZWJ M 1 472 + FrameIndex XZWJ N 1 473 + FrameIndex XZWJ O 1 474 +} diff --git a/modeldef/dlc/newsparkster.txt b/modeldef/dlc/newsparkster.txt new file mode 100644 index 000000000..10af5b662 --- /dev/null +++ b/modeldef/dlc/newsparkster.txt @@ -0,0 +1,15 @@ +// sparkster rifle + +Model "ModernSparkster" +{ + Path "models" + + Model 0 "ModernSparksterPickup.iqm" + Skin 0 "DefaultT" + Scale 50 50 50 + ZOffset 20 + AngleOffset -90 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/dlc/plasmablast.txt b/modeldef/dlc/plasmablast.txt new file mode 100644 index 000000000..7af84b47f --- /dev/null +++ b/modeldef/dlc/plasmablast.txt @@ -0,0 +1,16 @@ +// plasma blaster + +Model "PlasmaBlast" +{ + Path "models" + + Model 0 "PlasmaBlastPickup.iqm" + SurfaceSkin 0 0 "PlasmaBlast.png" + SurfaceSkin 0 1 "NoLED.png" + Scale 120 120 120 + ZOffset 16 + AngleOffset -90 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/dlc/puntzerbeta.txt b/modeldef/dlc/puntzerbeta.txt new file mode 100644 index 000000000..20e001927 --- /dev/null +++ b/modeldef/dlc/puntzerbeta.txt @@ -0,0 +1,16 @@ +// puntzer beta + +Model "PuntzerBeta" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILR" + Scale 10 10 10 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/dlc/puntzergamma.txt b/modeldef/dlc/puntzergamma.txt new file mode 100644 index 000000000..24ffd9dbe --- /dev/null +++ b/modeldef/dlc/puntzergamma.txt @@ -0,0 +1,16 @@ +// puntzer gamma + +Model "PuntzerGamma" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILR" + Scale 12 12 12 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/dlc/quadravol.txt b/modeldef/dlc/quadravol.txt new file mode 100644 index 000000000..2d40a545e --- /dev/null +++ b/modeldef/dlc/quadravol.txt @@ -0,0 +1,527 @@ +// quadravol + +Model "QuadravolCasing" +{ + Path "models" + + Model 0 "QuadravolCasing.iqm" + Skin 0 "QuadCell_Used.png" + Scale 5 5 5 + AngleOffset -90 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 1 + FrameIndex XZW1 B 0 0 +} + +Model "Quadravol" +{ + Path "models" + + Model 0 "QuadravolPickup.iqm" + SurfaceSkin 0 0 "Quadravol.png" + SurfaceSkin 0 1 "Quadravol.png" + SurfaceSkin 0 2 "NoLED.png" + Scale 100 100 100 + ZOffset 20 + AngleOffset -90 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "Quadravol" +{ + Path "models" + Model 2 "Quadravol1st_Casing.iqm" // this was done very awkwardly + SurfaceSkin 2 0 "QuadCell.png" + + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + // Eject + FrameIndex XZWZ A 2 87 + FrameIndex XZWZ B 2 88 + FrameIndex XZWZ C 2 89 + FrameIndex XZWZ D 2 90 + FrameIndex XZWZ E 2 91 + FrameIndex XZWZ F 2 92 + FrameIndex XZWZ G 2 93 // Drop + // Load + FrameIndex XZWZ H 2 100 + FrameIndex XZWZ I 2 101 + FrameIndex XZWZ J 2 102 + FrameIndex XZWZ K 2 103 + FrameIndex XZWZ L 2 104 + FrameIndex XZWZ M 2 105 + FrameIndex XZWZ N 2 106 + FrameIndex XZWZ O 2 107 + // 1H Eject + FrameIndex XZWZ P 2 267 + FrameIndex XZWZ Q 2 268 + FrameIndex XZWZ R 2 269 + FrameIndex XZWZ S 2 270 + FrameIndex XZWZ T 2 271 + FrameIndex XZWZ U 2 272 + FrameIndex XZWZ V 2 273 + FrameIndex XZWZ W 2 274 + FrameIndex XZWZ X 2 275 +} + +Model "Quadravol" +{ + Path "models/extra" + Model 3 "Flat.obj" + Scale -20 20 20 + Offset 12 -60 -10 + PitchOffset 90 + + Skin 3 "QuadMuz0.png" + FrameIndex XZW0 A 3 0 + Skin 3 "QuadMuz1.png" + FrameIndex XZW0 B 3 0 + Skin 3 "QuadMuz2.png" + FrameIndex XZW0 C 3 0 + Skin 3 "QuadMuz3.png" + FrameIndex XZW0 D 3 0 + Skin 3 "QuadMuz4.png" + FrameIndex XZW0 E 3 0 + Skin 3 "QuadMuz5.png" + FrameIndex XZW0 F 3 0 + Skin 3 "QuadMuz6.png" + FrameIndex XZW0 G 3 0 + Skin 3 "QuadMuz7.png" + FrameIndex XZW0 H 3 0 + Skin 3 "QuadMuz8.png" + FrameIndex XZW0 I 3 0 + Skin 3 "QuadMuz9.png" + FrameIndex XZW0 J 3 0 + + Offset 13 -60 -9 + Skin 3 "QuadMuz0.png" + FrameIndex XZW0 K 3 0 + Skin 3 "QuadMuz1.png" + FrameIndex XZW0 L 3 0 + Skin 3 "QuadMuz2.png" + FrameIndex XZW0 M 3 0 + Skin 3 "QuadMuz3.png" + FrameIndex XZW0 N 3 0 + Skin 3 "QuadMuz4.png" + FrameIndex XZW0 O 3 0 + Skin 3 "QuadMuz5.png" + FrameIndex XZW0 P 3 0 + Skin 3 "QuadMuz6.png" + FrameIndex XZW0 Q 3 0 + Skin 3 "QuadMuz7.png" + FrameIndex XZW0 R 3 0 + Skin 3 "QuadMuz8.png" + FrameIndex XZW0 S 3 0 + Skin 3 "QuadMuz9.png" + FrameIndex XZW0 T 3 0 +} + +Model "Quadravol" +{ + Path "models" + Model 1 "Quadravol1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Quadravol.png" + SurfaceSkin 1 4 "QuadLED.png" + + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + //// TWO HANDED + // Still + FrameIndex XZW2 A 1 0 + // Deselect + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + FrameIndex XZW2 Q 1 16 + FrameIndex XZW2 R 1 17 // Select + FrameIndex XZW2 S 1 18 + FrameIndex XZW2 T 1 19 + FrameIndex XZW2 U 1 20 + FrameIndex XZW2 V 1 21 + FrameIndex XZW2 W 1 22 + FrameIndex XZW2 X 1 23 + FrameIndex XZW2 Y 1 24 + FrameIndex XZW2 Z 1 25 + FrameIndex XZW3 A 1 26 + FrameIndex XZW3 B 1 27 + FrameIndex XZW3 C 1 28 + FrameIndex XZW3 D 1 29 + FrameIndex XZW3 E 1 30 + FrameIndex XZW3 F 1 31 + FrameIndex XZW3 G 1 32 + FrameIndex XZW3 H 1 33 + FrameIndex XZW3 I 1 34 + FrameIndex XZW3 J 1 35 + FrameIndex XZW3 K 1 36 + FrameIndex XZW3 L 1 37 + FrameIndex XZW3 M 1 38 + FrameIndex XZW3 N 1 39 + // FireOne + FrameIndex XZW3 O 1 41 + FrameIndex XZW3 P 1 42 + FrameIndex XZW3 Q 1 43 + FrameIndex XZW3 R 1 44 + FrameIndex XZW3 S 1 45 + FrameIndex XZW3 T 1 46 + FrameIndex XZW3 U 1 47 + FrameIndex XZW3 V 1 48 + // FireTwo + FrameIndex XZW3 W 1 50 + FrameIndex XZW3 X 1 51 + FrameIndex XZW3 Y 1 52 + FrameIndex XZW3 Z 1 53 + FrameIndex XZW4 A 1 54 + FrameIndex XZW4 B 1 55 + FrameIndex XZW4 C 1 56 + FrameIndex XZW4 D 1 57 + // FireThree + FrameIndex XZW4 E 1 59 + FrameIndex XZW4 F 1 60 + FrameIndex XZW4 G 1 61 + FrameIndex XZW4 H 1 62 + FrameIndex XZW4 I 1 63 + FrameIndex XZW4 J 1 64 + FrameIndex XZW4 K 1 65 + FrameIndex XZW4 L 1 66 + // FireFour + FrameIndex XZW4 M 1 68 + FrameIndex XZW4 N 1 69 + FrameIndex XZW4 O 1 70 + FrameIndex XZW4 P 1 71 + FrameIndex XZW4 Q 1 72 + FrameIndex XZW4 R 1 73 + FrameIndex XZW4 S 1 74 + FrameIndex XZW4 T 1 75 + // FireFive + FrameIndex XZW4 U 1 77 + FrameIndex XZW4 V 1 78 + FrameIndex XZW4 W 1 79 + FrameIndex XZW4 X 1 80 + FrameIndex XZW4 Y 1 81 + FrameIndex XZW4 Z 1 82 + FrameIndex XZW5 A 1 83 + FrameIndex XZW5 B 1 84 + // LeverAct + FrameIndex XZW5 C 1 86 + FrameIndex XZW5 D 1 87 // LeverForward + FrameIndex XZW5 E 1 88 // Eject + FrameIndex XZW5 F 1 89 + FrameIndex XZW5 G 1 90 + FrameIndex XZW5 H 1 91 // LeverBack + FrameIndex XZW5 I 1 92 + FrameIndex XZW5 J 1 93 // Chamber + FrameIndex XZW5 K 1 94 + FrameIndex XZW5 L 1 95 + // LoadStart + FrameIndex XZW5 M 1 97 + FrameIndex XZW5 N 1 98 + FrameIndex XZW5 O 1 99 + // LoadLoop + FrameIndex XZW5 P 1 100 // LoadOverlay + FrameIndex XZW5 Q 1 101 + FrameIndex XZW5 R 1 102 + FrameIndex XZW5 S 1 103 // LoadSnd + FrameIndex XZW5 T 1 104 + FrameIndex XZW5 U 1 105 + FrameIndex XZW5 V 1 106 + FrameIndex XZW5 W 1 107 // LoadCell + FrameIndex XZW5 X 1 108 + FrameIndex XZW5 Y 1 109 + FrameIndex XZW5 Z 1 110 + FrameIndex XZW6 A 1 111 + // LoadEnd + FrameIndex XZW6 B 1 113 + FrameIndex XZW6 C 1 114 + FrameIndex XZW6 D 1 115 + FrameIndex XZW6 E 1 116 + FrameIndex XZW6 F 1 117 + FrameIndex XZW6 G 1 118 + FrameIndex XZW6 H 1 119 + FrameIndex XZW6 I 1 120 + FrameIndex XZW6 J 1 121 + FrameIndex XZW6 K 1 122 + // Idle + FrameIndex XZW6 L 1 124 + FrameIndex XZW6 M 1 125 + FrameIndex XZW6 N 1 126 + FrameIndex XZW6 O 1 127 + FrameIndex XZW6 P 1 128 + FrameIndex XZW6 Q 1 129 + FrameIndex XZW6 R 1 130 + FrameIndex XZW6 S 1 131 + FrameIndex XZW6 T 1 132 + FrameIndex XZW6 U 1 133 + FrameIndex XZW6 V 1 134 + FrameIndex XZW6 W 1 135 + FrameIndex XZW6 X 1 136 + FrameIndex XZW6 Y 1 137 + FrameIndex XZW6 Z 1 138 + FrameIndex XZW7 A 1 139 + // Melee + FrameIndex XZW7 B 1 141 + FrameIndex XZW7 C 1 142 + FrameIndex XZW7 D 1 143 + FrameIndex XZW7 E 1 144 + FrameIndex XZW7 F 1 145 + FrameIndex XZW7 G 1 146 + FrameIndex XZW7 H 1 147 + FrameIndex XZW7 I 1 148 + FrameIndex XZW7 J 1 149 // MeleeHit + FrameIndex XZW7 K 1 150 + FrameIndex XZW7 L 1 151 + FrameIndex XZW7 M 1 152 + FrameIndex XZW7 N 1 153 + FrameIndex XZW7 O 1 154 + FrameIndex XZW7 P 1 155 + FrameIndex XZW7 Q 1 156 + FrameIndex XZW7 R 1 157 + FrameIndex XZW7 S 1 158 + FrameIndex XZW7 T 1 159 + FrameIndex XZW7 U 1 160 + FrameIndex XZW7 V 1 161 + FrameIndex XZW7 W 1 162 + FrameIndex XZW7 X 1 163 + // Bayonet + FrameIndex XZW7 Y 1 166 + FrameIndex XZW7 Z 1 167 + FrameIndex XZW8 A 1 168 + FrameIndex XZW8 B 1 169 + FrameIndex XZW8 C 1 170 // BayonetEnd + FrameIndex XZW8 D 1 171 + FrameIndex XZW8 E 1 172 + FrameIndex XZW8 F 1 173 + FrameIndex XZW8 G 1 174 + FrameIndex XZW8 H 1 175 + FrameIndex XZW8 I 1 176 + FrameIndex XZW8 J 1 177 + FrameIndex XZW8 K 1 178 + FrameIndex XZW8 L 1 179 + // BayonetFire + FrameIndex XZW8 M 1 182 + FrameIndex XZW8 N 1 183 + FrameIndex XZW8 O 1 184 + FrameIndex XZW8 P 1 185 + FrameIndex XZW8 Q 1 186 + FrameIndex XZW8 R 1 187 + FrameIndex XZW8 S 1 188 + FrameIndex XZW8 T 1 189 + FrameIndex XZW8 U 1 190 + FrameIndex XZW8 V 1 191 + FrameIndex XZW8 W 1 192 + FrameIndex XZW8 X 1 193 + FrameIndex XZW8 Y 1 194 + // ToOneHand + FrameIndex XZW8 Z 1 196 + FrameIndex XZW9 A 1 197 + FrameIndex XZW9 B 1 198 + FrameIndex XZW9 C 1 199 + FrameIndex XZW9 D 1 200 + FrameIndex XZW9 E 1 201 + FrameIndex XZW9 F 1 202 + //// ONE HANDED + // Still + FrameIndex XZW9 G 1 203 + // Deselect + FrameIndex XZW9 H 1 204 + FrameIndex XZW9 I 1 205 + FrameIndex XZW9 J 1 206 + FrameIndex XZW9 K 1 207 + FrameIndex XZW9 L 1 208 + FrameIndex XZW9 M 1 209 + FrameIndex XZW9 N 1 210 // Select + FrameIndex XZW9 O 1 211 + FrameIndex XZW9 P 1 212 + FrameIndex XZW9 Q 1 213 + FrameIndex XZW9 R 1 214 + FrameIndex XZW9 S 1 215 + FrameIndex XZW9 T 1 216 + FrameIndex XZW9 U 1 217 + FrameIndex XZW9 V 1 218 + FrameIndex XZW9 W 1 219 + // FireOne + FrameIndex XZW9 X 1 221 + FrameIndex XZW9 Y 1 222 + FrameIndex XZW9 Z 1 223 + FrameIndex XZWA A 1 224 + FrameIndex XZWA B 1 225 + FrameIndex XZWA C 1 226 + FrameIndex XZWA D 1 227 + FrameIndex XZWA E 1 228 + // FireTwo + FrameIndex XZWA F 1 230 + FrameIndex XZWA G 1 231 + FrameIndex XZWA H 1 232 + FrameIndex XZWA I 1 233 + FrameIndex XZWA J 1 234 + FrameIndex XZWA K 1 235 + FrameIndex XZWA L 1 236 + FrameIndex XZWA M 1 237 + // FireThree + FrameIndex XZWA N 1 239 + FrameIndex XZWA O 1 240 + FrameIndex XZWA P 1 241 + FrameIndex XZWA Q 1 242 + FrameIndex XZWA R 1 243 + FrameIndex XZWA S 1 244 + FrameIndex XZWA T 1 245 + FrameIndex XZWA U 1 246 + // FireFour + FrameIndex XZWA V 1 248 + FrameIndex XZWA W 1 249 + FrameIndex XZWA X 1 250 + FrameIndex XZWA Y 1 251 + FrameIndex XZWA Z 1 252 + FrameIndex XZWB A 1 253 + FrameIndex XZWB B 1 254 + FrameIndex XZWB C 1 255 + // FireFive + FrameIndex XZWB D 1 257 + FrameIndex XZWB E 1 258 + FrameIndex XZWB F 1 259 + FrameIndex XZWB G 1 260 + FrameIndex XZWB H 1 261 + FrameIndex XZWB I 1 262 + FrameIndex XZWB J 1 263 + FrameIndex XZWB K 1 264 + // LeverAct + FrameIndex XZWB L 1 266 + FrameIndex XZWB M 1 267 // LeverForward, Eject + FrameIndex XZWB N 1 268 + FrameIndex XZWB O 1 269 + FrameIndex XZWB P 1 270 + FrameIndex XZWB Q 1 271 + FrameIndex XZWB R 1 272 + FrameIndex XZWB S 1 273 + FrameIndex XZWB T 1 274 + FrameIndex XZWB U 1 275 + FrameIndex XZWB V 1 276 + FrameIndex XZWB W 1 277 + FrameIndex XZWB X 1 278 + FrameIndex XZWB Y 1 279 + FrameIndex XZWB Z 1 280 // LeverBack + FrameIndex XZWC A 1 281 + FrameIndex XZWC B 1 282 // Chamber + FrameIndex XZWC C 1 283 + FrameIndex XZWC D 1 284 + FrameIndex XZWC E 1 285 + FrameIndex XZWC F 1 286 + // LoadStart (to 2H) + FrameIndex XZWC G 1 288 + // LoadEnd (from 2H) + FrameIndex XZWC H 1 290 + FrameIndex XZWC I 1 291 + // Idle + FrameIndex XZWC J 1 293 + FrameIndex XZWC K 1 294 + FrameIndex XZWC L 1 295 + FrameIndex XZWC M 1 296 + FrameIndex XZWC N 1 297 + FrameIndex XZWC O 1 298 + FrameIndex XZWC P 1 299 + FrameIndex XZWC Q 1 300 + FrameIndex XZWC R 1 301 + FrameIndex XZWC S 1 302 + FrameIndex XZWC T 1 303 + FrameIndex XZWC U 1 304 + FrameIndex XZWC V 1 305 + FrameIndex XZWC W 1 306 + FrameIndex XZWC X 1 307 + FrameIndex XZWC Y 1 308 + // Melee + FrameIndex XZWC Z 1 310 + FrameIndex XZWD A 1 311 + FrameIndex XZWD B 1 312 + FrameIndex XZWD C 1 313 + FrameIndex XZWD D 1 314 + FrameIndex XZWD E 1 315 + FrameIndex XZWD F 1 316 + FrameIndex XZWD G 1 317 + FrameIndex XZWD H 1 318 // MeleeHit + FrameIndex XZWD I 1 319 + FrameIndex XZWD J 1 320 + FrameIndex XZWD K 1 321 + FrameIndex XZWD L 1 322 + FrameIndex XZWD M 1 323 + FrameIndex XZWD N 1 324 + FrameIndex XZWD O 1 325 + FrameIndex XZWD P 1 326 + FrameIndex XZWD Q 1 327 + FrameIndex XZWD R 1 328 + FrameIndex XZWD S 1 329 + FrameIndex XZWD T 1 330 + FrameIndex XZWD U 1 331 + FrameIndex XZWD V 1 332 + // Bayonet + FrameIndex XZWD W 1 335 + FrameIndex XZWD X 1 336 + FrameIndex XZWD Y 1 337 + FrameIndex XZWD Z 1 338 + FrameIndex XZWE A 1 339 // BayonetEnd + FrameIndex XZWE B 1 340 + FrameIndex XZWE C 1 341 + FrameIndex XZWE D 1 342 + FrameIndex XZWE E 1 343 + FrameIndex XZWE F 1 344 + FrameIndex XZWE G 1 345 + FrameIndex XZWE H 1 346 + FrameIndex XZWE I 1 347 + FrameIndex XZWE J 1 348 + // BayonetFire + FrameIndex XZWE K 1 351 + FrameIndex XZWE L 1 352 + FrameIndex XZWE M 1 353 + FrameIndex XZWE N 1 354 + FrameIndex XZWE O 1 355 + FrameIndex XZWE P 1 356 + FrameIndex XZWE Q 1 357 + FrameIndex XZWE R 1 358 + FrameIndex XZWE S 1 359 + FrameIndex XZWE T 1 360 + FrameIndex XZWE U 1 361 + FrameIndex XZWE V 1 362 + FrameIndex XZWE W 1 363 + // ToTwoHanded + FrameIndex XZWE X 1 365 + FrameIndex XZWE Y 1 366 + FrameIndex XZWE Z 1 367 + FrameIndex XZWF A 1 368 + FrameIndex XZWF B 1 369 + FrameIndex XZWF C 1 370 + FrameIndex XZWF D 1 371 + FrameIndex XZWF E 1 372 + FrameIndex XZWF F 1 373 + FrameIndex XZWF G 1 374 + FrameIndex XZWF H 1 375 + FrameIndex XZWF I 1 376 + FrameIndex XZWF J 1 377 + FrameIndex XZWF K 1 378 + FrameIndex XZWF L 1 379 + // Spin Skip (needed for skeletal animation) + FrameIndex XZWF M 1 381 // Copy of frame 280 with rotation quat inverted +} diff --git a/modeldef/dlc/rafankos.txt b/modeldef/dlc/rafankos.txt new file mode 100644 index 000000000..292b0238d --- /dev/null +++ b/modeldef/dlc/rafankos.txt @@ -0,0 +1,16 @@ +// rafan-kos + +Model "RafanKos" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILR" + Scale 15 15 15 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/dlc/raykhom.txt b/modeldef/dlc/raykhom.txt new file mode 100644 index 000000000..f4ce4e36f --- /dev/null +++ b/modeldef/dlc/raykhom.txt @@ -0,0 +1,16 @@ +// ray-khom + +Model "RayKhom" +{ + Path "models/extra" + + Model 0 "BaseCube.obj" + Skin 0 "CHIPTILR" + Scale 15 15 15 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/dlc/sheenhmg.txt b/modeldef/dlc/sheenhmg.txt new file mode 100644 index 000000000..d68572611 --- /dev/null +++ b/modeldef/dlc/sheenhmg.txt @@ -0,0 +1,326 @@ +// sheen hmg + +Model "SheenTrail" +{ + Path "models/extra" + + Model 0 "BaseBeam.obj" + Scale 400 12 12 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + Skin 0 "SheenTracer.png" + FrameIndex XZW1 A 0 0 +} +Model "SheenPhantom" +{ + Path "models/extra" + + Model 0 "BaseBeam.obj" + Scale 50 6 6 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + Skin 0 "ChunkTrail.png" + FrameIndex XZW1 A 0 0 + // recolors, whew + Skin 0 "ChunkTrail_White.png" + FrameIndex XZW1 B 0 0 + Skin 0 "ChunkTrail_Red.png" + FrameIndex XZW1 C 0 0 + Skin 0 "ChunkTrail_Yellow.png" + FrameIndex XZW1 D 0 0 + Skin 0 "ChunkTrail_Green.png" + FrameIndex XZW1 E 0 0 + Skin 0 "ChunkTrail_Cyan.png" + FrameIndex XZW1 F 0 0 + Skin 0 "ChunkTrail_Blue.png" + FrameIndex XZW1 G 0 0 + Skin 0 "ChunkTrail_Magenta.png" + FrameIndex XZW1 H 0 0 + Skin 0 "ChunkTrail_TransBlue.png" + FrameIndex XZW1 I 0 0 + Skin 0 "ChunkTrail_TransPink.png" + FrameIndex XZW1 J 0 0 +} + +Model "SheenCasing" +{ + Path "models" + + Model 0 "SheenBulletCase.iqm" + Skin 0 "SheenBullet_Fired.png" + Scale 6 6 6 + AngleOffset -90 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 0.75 + FrameIndex XZW1 B 0 0 +} + +Model "HeavyMahSheenGun" +{ + Path "models" + + Model 0 "SheenHMGPickup.iqm" + SurfaceSkin 0 0 "SheenHMG.png" + SurfaceSkin 0 1 "NoLED.png" + Scale 100 100 100 + AngleOffset -90 + ZOffset 20 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "HeavyMahSheenGun" +{ + Path "models/extra" + + Model 2 "Flat.obj" + Offset 0 -60 -15 + PitchOffset 90 + + Skin 2 "SheenMuz0.png" + Scale -24 24 24 + FrameIndex XZW0 A 2 0 + Scale -22 22 22 + FrameIndex XZW0 B 2 0 + Scale -20 20 20 + FrameIndex XZW0 C 2 0 + Skin 2 "SheenMuz1.png" + Scale -24 24 24 + FrameIndex XZW0 D 2 0 + Scale -22 22 22 + FrameIndex XZW0 E 2 0 + Scale -20 20 20 + FrameIndex XZW0 F 2 0 + Skin 2 "SheenMuz2.png" + Scale -24 24 24 + FrameIndex XZW0 G 2 0 + Scale -22 22 22 + FrameIndex XZW0 H 2 0 + Scale -20 20 20 + FrameIndex XZW0 I 2 0 + Skin 2 "SheenMuz3.png" + Scale -24 24 24 + FrameIndex XZW0 J 2 0 + Scale -22 22 22 + FrameIndex XZW0 K 2 0 + Scale -20 20 20 + FrameIndex XZW0 L 2 0 + Skin 2 "SheenMuz4.png" + Scale -24 24 24 + FrameIndex XZW0 M 2 0 + Scale -22 22 22 + FrameIndex XZW0 N 2 0 + Scale -20 20 20 + FrameIndex XZW0 O 2 0 + Skin 2 "SheenMuz5.png" + Scale -24 24 24 + FrameIndex XZW0 P 2 0 + Scale -22 22 22 + FrameIndex XZW0 Q 2 0 + Scale -20 20 20 + FrameIndex XZW0 R 2 0 + Skin 2 "SheenMuz6.png" + Scale -24 24 24 + FrameIndex XZW0 S 2 0 + Scale -22 22 22 + FrameIndex XZW0 T 2 0 + Scale -20 20 20 + FrameIndex XZW0 U 2 0 + Skin 2 "SheenMuz7.png" + Scale -24 24 24 + FrameIndex XZW0 V 2 0 + Scale -22 22 22 + FrameIndex XZW0 W 2 0 + Scale -20 20 20 + FrameIndex XZW0 X 2 0 +} + +Model "HeavyMahSheenGun" +{ + Path "models" + + Model 1 "SheenHMG1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "SheenHMG.png" + SurfaceSkin 1 4 "SheenLED.png" + + AngleOffset -90 + Scale -128 64 128 + Offset 0 -1 -2 + FORCECULLBACKFACES + + // Still + FrameIndex XZW2 A 1 0 + // Deselect + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 // Select + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + FrameIndex XZW2 Q 1 16 + FrameIndex XZW2 R 1 17 + FrameIndex XZW2 S 1 18 + FrameIndex XZW2 T 1 19 + FrameIndex XZW2 U 1 20 + FrameIndex XZW2 V 1 21 + FrameIndex XZW2 W 1 22 + FrameIndex XZW2 X 1 23 + // StartFire + FrameIndex XZW2 Z 1 25 // Tween from Still + // SlowFireOne + FrameIndex XZW3 A 1 26 + FrameIndex XZW3 B 1 27 + FrameIndex XZW3 C 1 28 + FrameIndex XZW3 D 1 29 + FrameIndex XZW3 E 1 30 + FrameIndex XZW3 F 1 31 + FrameIndex XZW3 G 1 32 // Snap to StartFire + // SlowFireTwo + FrameIndex XZW3 H 1 34 + FrameIndex XZW3 I 1 35 + FrameIndex XZW3 J 1 36 + FrameIndex XZW3 K 1 37 + FrameIndex XZW3 L 1 38 + FrameIndex XZW3 M 1 39 + FrameIndex XZW3 N 1 40 // Snap to StartFire + // SlowFireThree + FrameIndex XZW3 O 1 42 + FrameIndex XZW3 P 1 43 + FrameIndex XZW3 Q 1 44 + FrameIndex XZW3 R 1 45 + FrameIndex XZW3 S 1 46 + FrameIndex XZW3 T 1 47 + FrameIndex XZW3 U 1 48 // Snap to StartFire + // FastFireOne + FrameIndex XZW3 V 1 50 + FrameIndex XZW3 W 1 51 + FrameIndex XZW3 X 1 52 // Snap to StartFire + // FastFireTwo + FrameIndex XZW3 Y 1 54 + FrameIndex XZW3 Z 1 55 + FrameIndex XZW4 A 1 56 // Snap to StartFire + // FastFireThree + FrameIndex XZW4 B 1 58 + FrameIndex XZW4 C 1 59 + FrameIndex XZW4 D 1 60 + // VERYFASTFIRE + FrameIndex XZW4 E 1 62 // 45 + FrameIndex XZW4 F 1 63 // 90 + FrameIndex XZW4 G 1 64 // 135 + FrameIndex XZW4 H 1 65 // 180 + FrameIndex XZW4 I 1 66 // 225 + FrameIndex XZW4 J 1 67 // 270 + FrameIndex XZW4 K 1 68 // 315 + FrameIndex XZW4 L 1 69 // 360 Snap back to previous frame + // EndFireFAST7 + FrameIndex XZW4 M 1 70 // 315+ + FrameIndex XZW4 N 1 71 + FrameIndex XZW4 O 1 72 // Tween to Still + // EndFireFAST6 + FrameIndex XZW4 P 1 74 // 270 + FrameIndex XZW4 Q 1 75 + FrameIndex XZW4 R 1 76 // Tween to Still + // EndFireFAST5 + FrameIndex XZW4 S 1 78 // 225 + FrameIndex XZW4 T 1 79 + FrameIndex XZW4 U 1 80 // Tween to Still + // EndFireFAST4 + FrameIndex XZW4 V 1 82 // 180 + FrameIndex XZW4 W 1 83 + FrameIndex XZW4 X 1 84 // Tween to Still + // EndFireFAST3 + FrameIndex XZW4 Y 1 86 // 135 + FrameIndex XZW4 Z 1 87 + FrameIndex XZW5 A 1 88 // Tween to Still + // EndFireFAST2 + FrameIndex XZW5 B 1 90 // 90 + FrameIndex XZW5 C 1 91 + FrameIndex XZW5 D 1 92 // Tween to Still + // EndFireFAST1 + FrameIndex XZW5 E 1 94 // 45 + FrameIndex XZW5 F 1 95 + FrameIndex XZW5 G 1 96 // Tween to Still + // SpeedUp + FrameIndex XZW5 H 1 98 // CrankIn + FrameIndex XZW5 I 1 99 + FrameIndex XZW5 J 1 100 + FrameIndex XZW5 K 1 101 // SpeedUp + FrameIndex XZW5 L 1 102 // CrankOut + FrameIndex XZW5 M 1 103 // Tween to Still + // SlowDown + FrameIndex XZW5 N 1 105 // CrankIn + FrameIndex XZW5 O 1 106 + FrameIndex XZW5 P 1 107 + FrameIndex XZW5 Q 1 108 // SlowDown + FrameIndex XZW5 R 1 109 // CrankOut + FrameIndex XZW5 S 1 110 // Tween to Still + // Idle + FrameIndex XZW5 T 1 112 // StartSnd + FrameIndex XZW5 U 1 113 + FrameIndex XZW5 V 1 114 + FrameIndex XZW5 W 1 115 + FrameIndex XZW5 X 1 116 + FrameIndex XZW5 Y 1 117 + FrameIndex XZW5 Z 1 118 + FrameIndex XZW6 A 1 119 + FrameIndex XZW6 B 1 120 // EndSnd + FrameIndex XZW6 C 1 121 + FrameIndex XZW6 D 1 122 + FrameIndex XZW6 E 1 123 + FrameIndex XZW6 F 1 124 + FrameIndex XZW6 G 1 125 + FrameIndex XZW6 H 1 126 + FrameIndex XZW6 I 1 127 + FrameIndex XZW6 J 1 128 + FrameIndex XZW6 K 1 129 + FrameIndex XZW6 L 1 130 + // Melee + FrameIndex XZW6 M 1 132 // StartSnd + FrameIndex XZW6 N 1 133 + FrameIndex XZW6 O 1 134 + FrameIndex XZW6 P 1 135 + FrameIndex XZW6 Q 1 136 + FrameIndex XZW6 R 1 137 + FrameIndex XZW6 S 1 138 // Swing + FrameIndex XZW6 T 1 139 + FrameIndex XZW6 U 1 140 // Parry (6) + FrameIndex XZW6 V 1 141 + FrameIndex XZW6 W 1 142 // Melee + FrameIndex XZW6 X 1 143 + FrameIndex XZW6 Y 1 144 + FrameIndex XZW6 Z 1 145 + FrameIndex XZW7 A 1 146 + FrameIndex XZW7 B 1 147 + FrameIndex XZW7 C 1 148 // EndSnd + FrameIndex XZW7 D 1 149 + FrameIndex XZW7 E 1 150 + FrameIndex XZW7 F 1 151 + FrameIndex XZW7 G 1 152 + FrameIndex XZW7 H 1 153 + FrameIndex XZW7 I 1 154 + FrameIndex XZW7 J 1 155 + FrameIndex XZW7 K 1 156 + FrameIndex XZW7 L 1 157 +} diff --git a/modeldef/gesture.txt b/modeldef/gesture.txt new file mode 100644 index 000000000..4ea1bbe91 --- /dev/null +++ b/modeldef/gesture.txt @@ -0,0 +1,196 @@ +// base gestures +Model "SWWMGesture" +{ + Path "models" + Model 0 "GestureArms.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + // Initial + FrameIndex XZW1 A 0 0 + // Wave + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + // Thumbs Up + FrameIndex XZW1 Q 0 17 + FrameIndex XZW1 R 0 18 + FrameIndex XZW1 S 0 19 + FrameIndex XZW1 T 0 20 + FrameIndex XZW1 U 0 21 + FrameIndex XZW1 V 0 22 + FrameIndex XZW1 W 0 23 + FrameIndex XZW1 X 0 24 + FrameIndex XZW1 Y 0 25 + FrameIndex XZW1 Z 0 26 + FrameIndex XZW2 A 0 27 + FrameIndex XZW2 B 0 28 + FrameIndex XZW2 C 0 29 + FrameIndex XZW2 D 0 30 + FrameIndex XZW2 E 0 31 + FrameIndex XZW2 F 0 32 + FrameIndex XZW2 G 0 33 + // Victory + FrameIndex XZW2 H 0 35 + FrameIndex XZW2 I 0 36 + FrameIndex XZW2 J 0 37 + FrameIndex XZW2 K 0 38 + FrameIndex XZW2 L 0 39 + FrameIndex XZW2 M 0 40 + FrameIndex XZW2 N 0 41 + FrameIndex XZW2 O 0 42 + FrameIndex XZW2 P 0 43 + FrameIndex XZW2 Q 0 44 + FrameIndex XZW2 R 0 45 + FrameIndex XZW2 S 0 46 + FrameIndex XZW2 T 0 47 + FrameIndex XZW2 U 0 48 + FrameIndex XZW2 V 0 49 + FrameIndex XZW2 W 0 50 + FrameIndex XZW2 X 0 51 + FrameIndex XZW2 Y 0 52 + FrameIndex XZW2 Z 0 53 + // Blow Kiss + FrameIndex XZW3 A 0 55 + FrameIndex XZW3 B 0 56 + FrameIndex XZW3 C 0 57 + FrameIndex XZW3 D 0 58 + FrameIndex XZW3 E 0 59 + FrameIndex XZW3 F 0 60 // smooch + FrameIndex XZW3 G 0 61 + FrameIndex XZW3 H 0 62 + FrameIndex XZW3 I 0 63 + FrameIndex XZW3 J 0 64 + FrameIndex XZW3 K 0 65 + FrameIndex XZW3 L 0 66 // blow + FrameIndex XZW3 M 0 67 + FrameIndex XZW3 N 0 68 + FrameIndex XZW3 O 0 69 + FrameIndex XZW3 P 0 70 + FrameIndex XZW3 Q 0 71 + FrameIndex XZW3 R 0 72 + FrameIndex XZW3 S 0 73 + // Headpat + FrameIndex XZW3 T 0 75 + FrameIndex XZW3 U 0 76 + FrameIndex XZW3 V 0 77 + FrameIndex XZW3 W 0 78 + FrameIndex XZW3 X 0 79 + FrameIndex XZW3 Y 0 80 // patstart + FrameIndex XZW3 Z 0 81 + FrameIndex XZW4 A 0 82 + FrameIndex XZW4 B 0 83 + FrameIndex XZW4 C 0 84 + FrameIndex XZW4 D 0 85 // patpat + FrameIndex XZW4 E 0 86 + FrameIndex XZW4 F 0 87 + FrameIndex XZW4 G 0 88 + FrameIndex XZW4 H 0 89 + FrameIndex XZW4 I 0 90 + FrameIndex XZW4 J 0 91 // patend + FrameIndex XZW4 K 0 92 + FrameIndex XZW4 L 0 93 + FrameIndex XZW4 M 0 94 + FrameIndex XZW4 N 0 95 + FrameIndex XZW4 O 0 96 + FrameIndex XZW4 P 0 97 +} +// quick grenade +Model "SWWMGesture" +{ + Path "models" + Model 0 "Grenade1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "ExplodiumGun.png" + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + // Quick Grenade + FrameIndex XZW4 Q 0 0 + FrameIndex XZW4 R 0 1 + FrameIndex XZW4 S 0 2 + FrameIndex XZW4 T 0 3 + FrameIndex XZW4 U 0 4 + FrameIndex XZW4 V 0 5 // arm + FrameIndex XZW4 W 0 6 + FrameIndex XZW4 X 0 7 + FrameIndex XZW4 Y 0 8 // check surface + FrameIndex XZW4 Z 0 9 + FrameIndex XZW5 A 0 10 + FrameIndex XZW5 B 0 11 // swing + FrameIndex XZW5 C 0 12 + FrameIndex XZW5 D 0 13 + FrameIndex XZW5 E 0 14 + FrameIndex XZW5 F 0 15 + SurfaceSkin 0 3 "" + FrameIndex XZW5 G 0 16 // throw + FrameIndex XZW5 H 0 17 + FrameIndex XZW5 I 0 18 + FrameIndex XZW5 J 0 19 + FrameIndex XZW5 K 0 20 + FrameIndex XZW5 L 0 21 + // Quick Grenade (Surface) + SurfaceSkin 0 3 "ExplodiumGun.png" + FrameIndex XZW5 M 0 31 + FrameIndex XZW5 N 0 32 + FrameIndex XZW5 O 0 33 + FrameIndex XZW5 P 0 34 + FrameIndex XZW5 Q 0 35 + FrameIndex XZW5 R 0 36 + FrameIndex XZW5 S 0 37 + FrameIndex XZW5 T 0 38 + FrameIndex XZW5 U 0 39 + SurfaceSkin 0 3 "" + FrameIndex XZW5 V 0 40 // plant + FrameIndex XZW5 W 0 41 + FrameIndex XZW5 X 0 42 + FrameIndex XZW5 Y 0 43 +} +// quick punch +Model "SWWMGesture" +{ + Path "models" + Model 0 "QuickPunch1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + FORCECULLBACKFACES + + AngleOffset -90 + Scale -128 64 128 + + // Punch + FrameIndex XZW0 A 0 0 + FrameIndex XZW0 B 0 1 + FrameIndex XZW0 C 0 2 + FrameIndex XZW0 D 0 3 + FrameIndex XZW0 E 0 4 + FrameIndex XZW0 F 0 5 + FrameIndex XZW0 G 0 6 + FrameIndex XZW0 H 0 7 + FrameIndex XZW0 I 0 8 + FrameIndex XZW0 J 0 9 + FrameIndex XZW0 K 0 10 + FrameIndex XZW0 L 0 11 + FrameIndex XZW0 M 0 12 + FrameIndex XZW0 N 0 13 +} diff --git a/modeldef/items/ammo.txt b/modeldef/items/ammo.txt new file mode 100644 index 000000000..6b9249aa5 --- /dev/null +++ b/modeldef/items/ammo.txt @@ -0,0 +1,412 @@ +Model "RedShell" +{ + Path "models" + + Model 0 "ShellAmmo_One.iqm" + Skin 0 "Shell_Normal.png" + Scale 6 6 6 + PitchOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "RedShell2" +{ + Path "models" + + Model 0 "ShellAmmo_Two.iqm" + Skin 0 "Shell_Normal.png" + Scale 6 6 6 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "RedShell4" +{ + Path "models" + + Model 0 "ShellAmmo_Four.iqm" + Skin 0 "Shell_Normal.png" + Scale 6 6 6 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "RedShell6" +{ + Path "models" + + Model 0 "ShellAmmo_Six.iqm" + SurfaceSkin 0 0 "Shell_Normal.png" + SurfaceSkin 0 1 "envmap/silverenv.png" + Scale 6 6 6 + ZOffset 16 + + FrameIndex XZW1 A 0 0 +} + +Model "GoldShell" +{ + Path "models" + + Model 0 "ShellAmmo_One.iqm" + Skin 0 "Shell_Gold.png" + Scale 6 6 6 + PitchOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "EvisceratorShell" +{ + Path "models" + + Model 0 "EvisceratorProj.iqm" + Skin 0 "EvisceratorShell.png" + Scale 45 45 45 + PitchOffset 45 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "EvisceratorShell2" +{ + Path "models" + + Model 0 "EvisceratorClip_Two.iqm" + SurfaceSkin 0 0 "EvisceratorShell.png" + SurfaceSkin 0 1 "EvisceratorClip.png" + Scale 45 45 45 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "EvisceratorShell3" +{ + Path "models" + + Model 0 "EvisceratorClip_Three.iqm" + SurfaceSkin 0 0 "EvisceratorShell.png" + SurfaceSkin 0 1 "EvisceratorClip.png" + Scale 45 45 45 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "EvisceratorSixPack" +{ + Path "models" + + Model 0 "EvisceratorAmmo.iqm" + SurfaceSkin 0 0 "EvisceratorAmmo.png" + SurfaceSkin 0 1 "EvisceratorShell.png" + Scale 20 20 20 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "HellblazerMissiles" +{ + Path "models" + + Model 0 "HellblazerProj.iqm" + Skin 0 "HellblazerMissile.png" + Scale 40 40 40 + PitchOffset 45 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "HellblazerMissiles2" +{ + Path "models" + + Model 0 "HellblazerDuo.iqm" + Skin 0 "HellblazerMissile.png" + Scale 40 40 40 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "HellblazerMissiles3" +{ + Path "models" + + Model 0 "HellblazerTrio.iqm" + Skin 0 "HellblazerMissile.png" + Scale 40 40 40 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "HellblazerMissileMag" +{ + Path "models" + + Model 0 "HellblazerAmmo.iqm" + SurfaceSkin 0 0 "HellblazerAmmo.png" + SurfaceSkin 0 1 "HellblazerMissile.png" + Scale 40 40 40 + PitchOffset -45 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "SparkUnit" +{ + Path "models" + + Model 0 "SparksterAmmo.iqm" + Skin 0 "SparksterAmmo.png" + Scale 40 40 40 + PitchOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SparkUnit2" +{ + Path "models" + + Model 0 "SparksterAmmo2.iqm" + Skin 0 "SparksterAmmo.png" + Scale 40 40 40 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "SilverBulletAmmo" +{ + Path "models" + + Model 0 "SilverbulletMag.iqm" + Skin 0 "SilverbulletAmmo.png" + Scale 64 64 64 + PitchOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SilverBullets" +{ + Path "models" + + Model 0 "SilverbulletBullet.iqm" + Skin 0 "SilverbulletBullet.png" + Scale 12 12 12 + PitchOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SilverBullets2" +{ + Path "models" + + Model 0 "SilverbulletBullet2.iqm" + Skin 0 "SilverbulletBullet.png" + Scale 12 12 12 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SilverBullets3" +{ + Path "models" + + Model 0 "SilverbulletBullet3.iqm" + Skin 0 "SilverbulletBullet.png" + Scale 12 12 12 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "CandyGunAmmo" +{ + Path "models" + + Model 0 "ExplodiumMag.iqm" + Skin 0 "CandyGun.png" + Scale 15 15 15 + PitchOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "CandyGunBullets" +{ + Path "models" + + Model 0 "ExplodiumBullet.iqm" + SurfaceSkin 0 0 "CandyBullet.png" + SurfaceSkin 0 1 "CandyCasing.png" + Scale 5 5 5 + PitchOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "CandyGunBullets2" +{ + Path "models" + + Model 0 "ExplodiumBullet2.iqm" + SurfaceSkin 0 0 "CandyBullet.png" + SurfaceSkin 0 1 "CandyCasing.png" + Scale 5 5 5 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "CandyGunBullets3" +{ + Path "models" + + Model 0 "ExplodiumBullet3.iqm" + SurfaceSkin 0 0 "CandyBullet.png" + SurfaceSkin 0 1 "CandyCasing.png" + Scale 5 5 5 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "YnykronAmmo" +{ + Path "models" + + Model 0 "YnykronAmmo.iqm" + Skin 0 "YnykronAmmo.png" + Scale 45 45 45 + PitchOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "FabricatorTier1" +{ + Path "models" + + Model 0 "AmmoFabricator.iqm" + Skin 0 "Fabricator.png" + Scale 32 32 32 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "FabricatorTier2" +{ + Path "models" + + Model 0 "AmmoFabricator.iqm" + Skin 0 "Fabricator_Tier2.png" + Scale 34 34 34 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "FabricatorTier3" +{ + Path "models" + + Model 0 "AmmoFabricator.iqm" + Skin 0 "Fabricator_Tier3.png" + Scale 36 36 36 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "FabricatorTier4" +{ + Path "models" + + Model 0 "AmmoFabricator.iqm" + Skin 0 "Fabricator_Tier4.png" + Scale 40 40 40 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "HammerspaceEmbiggener" +{ + Path "models" + + Model 0 "Embiggener.iqm" + Skin 0 "Embiggener.png" + Scale 64 64 64 + AngleOffset -90 + PitchOffset 20 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "BulkHammerspaceEmbiggener" +{ + Path "models" + + Model 0 "Embiggener.iqm" + Skin 0 "Embiggener.png" + Scale 64 64 64 + AngleOffset -90 + PitchOffset 20 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + Skin 0 "Embiggener_Tier2.png" + FrameIndex XZW1 B 0 0 + Skin 0 "Embiggener_Tier3.png" + FrameIndex XZW1 C 0 0 + Skin 0 "Embiggener_Tier4.png" + FrameIndex XZW1 D 0 0 + Skin 0 "Embiggener_Tier5.png" + FrameIndex XZW1 E 0 0 +} diff --git a/modeldef/items/collectibles.txt b/modeldef/items/collectibles.txt new file mode 100644 index 000000000..c32111790 --- /dev/null +++ b/modeldef/items/collectibles.txt @@ -0,0 +1,180 @@ +Model "GenericCube" +{ + Path "models" + + Model 0 "extra/BaseCube.obj" + Skin 0 "PerfectlyGeneric.png" + Scale 10 10 10 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "AkariProject" +{ + Path "models" + + Model 0 "Book.iqm" + Skin 0 "AkariProject.png" + Scale 60 60 60 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "LoveSignalsCD" +{ + Path "models" + + Model 0 "CD.iqm" + Skin 0 "LoveSignals.png" + Scale 40 40 40 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "NutatcoBar" +{ + Path "models" + + Model 0 "Nutatco.iqm" + Skin 0 "Nutatco.png" + Scale 4 4 4 + ZOffset 16 + PitchOffset -60 + RollOffset 90 + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} +Model "FrispyCorn" +{ + Path "models" + + Model 0 "FrispyCorn.iqm" + Skin 0 "FrispyCorn.png" + Scale 6 6 6 + ZOffset 16 + AngleOffset -90 + RollOffset 30 + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} +Model "SayaBean" +{ + Path "models" + + Model 0 "SayaBean.iqm" + Skin 0 "SayaBean.png" + Scale 6 6 6 + ZOffset 16 + AngleOffset -90 + RollOffset 30 + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} +Model "MothPlushy" +{ + Path "models" + + Model 0 "MothPlush.iqm" + Skin 0 "MothPlush.png" + Scale 15 15 15 + ZOffset 20 + AngleOffset -90 + RollOffset 30 + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} +Model "SayasMug" +{ + Path "models" + + Model 0 "SayasMug.iqm" + Skin 0 "SayasMug.png" + Scale 50 50 50 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "DemoPlush" +{ + Path "models" + + Model 0 "DemoPlush.iqm" + SurfaceSkin 0 0 "DemoPlush.png" + SurfaceSkin 0 1 "DemoPlush2.png" + Scale 15 15 15 + ZOffset 20 + AngleOffset -90 + RollOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "KirinSippy" +{ + Path "models" + + Model 0 "TootFroot.iqm" + SurfaceSkin 0 0 "TootFroot.png" + SurfaceSkin 0 1 "envmap/silverenv.png" + Scale 4 4 4 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} +Model "MilkBreads" +{ + Path "models" + + Model 0 "MilkBreads.iqm" + Skin 0 "MilkBreads.png" + Scale 4 4 4 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "KirinManga" +{ + Path "models" + + Model 0 "Book.iqm" + Skin 0 "KirinManga.png" + Scale 50 50 50 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "KirinPlush" +{ + Path "models" + + Model 0 "KirinPlush.iqm" + Skin 0 "KirinPlush.png" + Scale 40 40 40 + ZOffset 20 + AngleOffset -90 + RollOffset 30 + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/items/funstuff.txt b/modeldef/items/funstuff.txt new file mode 100644 index 000000000..3bba8cf17 --- /dev/null +++ b/modeldef/items/funstuff.txt @@ -0,0 +1,169 @@ +Model "FroggyChair" +{ + Path "models" + + Model 0 "ASmallPriceToPay.iqm" + Skin 0 "ASmallPriceToPay.png" + Scale 40 40 50 + AngleOffset -90 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMFlag" +{ + Path "models" + + Model 0 "SWWMFlag.md3" + Skin 0 "SWWMFlag.png" + Scale 0.5 0.5 0.5 + AngleOffset -90 + DONTCULLBACKFACES + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 + FrameIndex XZW1 U 0 20 + FrameIndex XZW1 V 0 21 + FrameIndex XZW1 W 0 22 + FrameIndex XZW1 X 0 23 + FrameIndex XZW1 Y 0 24 + FrameIndex XZW1 Z 0 25 + FrameIndex XZW2 A 0 26 + FrameIndex XZW2 B 0 27 + FrameIndex XZW2 C 0 28 + FrameIndex XZW2 D 0 29 + FrameIndex XZW2 E 0 30 + FrameIndex XZW2 F 0 31 + FrameIndex XZW2 G 0 32 + FrameIndex XZW2 H 0 33 + FrameIndex XZW2 I 0 34 + FrameIndex XZW2 J 0 35 + FrameIndex XZW2 K 0 36 + FrameIndex XZW2 L 0 37 + FrameIndex XZW2 M 0 38 + FrameIndex XZW2 N 0 39 + FrameIndex XZW2 O 0 40 + FrameIndex XZW2 P 0 41 + FrameIndex XZW2 Q 0 42 + FrameIndex XZW2 R 0 43 + FrameIndex XZW2 S 0 44 + FrameIndex XZW2 T 0 45 + FrameIndex XZW2 U 0 46 + FrameIndex XZW2 V 0 47 + FrameIndex XZW2 W 0 48 + FrameIndex XZW2 X 0 49 + FrameIndex XZW2 Y 0 50 + FrameIndex XZW2 Z 0 51 + FrameIndex XZW3 A 0 52 + FrameIndex XZW3 B 0 53 + FrameIndex XZW3 C 0 54 + FrameIndex XZW3 D 0 55 + FrameIndex XZW3 E 0 56 + FrameIndex XZW3 F 0 57 + FrameIndex XZW3 G 0 58 + FrameIndex XZW3 H 0 59 +} +Model "Chancebox" +{ + Path "models" + Model 0 "Chancebox.iqm" + Animation 0 "Chancebox.iqm" + Skin 0 "Chancebox.png" + Scale 24 24 24 + AngleOffset -90 + ZOffset 10 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + // deploy + FrameIndex XZW2 A 0 8 + FrameIndex XZW2 B 0 9 + FrameIndex XZW2 C 0 10 + FrameIndex XZW2 D 0 11 + FrameIndex XZW2 E 0 12 + FrameIndex XZW2 F 0 13 + FrameIndex XZW2 G 0 14 + FrameIndex XZW2 H 0 15 + FrameIndex XZW2 I 0 16 + FrameIndex XZW2 J 0 17 + FrameIndex XZW2 K 0 18 + FrameIndex XZW2 L 0 19 + FrameIndex XZW2 M 0 20 + FrameIndex XZW2 N 0 21 + FrameIndex XZW2 O 0 22 + FrameIndex XZW2 P 0 23 + FrameIndex XZW2 Q 0 24 +} +Model "ChanceboxTop" +{ + Path "models" + Model 0 "Chancebox_Top.iqm" + Skin 0 "Chancebox.png" + Scale 24 24 24 + AngleOffset -90 + ZOffset 2 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "ChanceboxSide" +{ + Path "models" + Model 0 "Chancebox_Side.iqm" + Skin 0 "Chancebox.png" + Scale 24 24 24 + AngleOffset -90 + ZOffset 10 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SuperFancyTrail" +{ + Path "models/extra" + + Model 0 "YBeam.obj" + Scale 1 1 1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + Skin 0 "FancyTrail0.png" + FrameIndex XZW1 A 0 0 + Skin 0 "FancyTrail1.png" + FrameIndex XZW1 B 0 0 + Skin 0 "FancyTrail2.png" + FrameIndex XZW1 C 0 0 + Skin 0 "FancyTrail3.png" + FrameIndex XZW1 D 0 0 + Skin 0 "FancyTrail4.png" + FrameIndex XZW1 E 0 0 + Skin 0 "FancyTrail5.png" + FrameIndex XZW1 F 0 0 + Skin 0 "FancyTrail6.png" + FrameIndex XZW1 G 0 0 + Skin 0 "FancyTrail7.png" + FrameIndex XZW1 H 0 0 +} diff --git a/modeldef/items/itemgesture.txt b/modeldef/items/itemgesture.txt new file mode 100644 index 000000000..bffbfb571 --- /dev/null +++ b/modeldef/items/itemgesture.txt @@ -0,0 +1,521 @@ +Model "GenericCubeGesture" +{ + Path "models" + Model 0 "GenericCube1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "PerfectlyGeneric.png" + FORCECULLBACKFACES + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 +} +Model "AkariProjectGesture" +{ + Path "models" + Model 0 "AkariProject1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "AkariProject.png" + FORCECULLBACKFACES + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 +} +Model "LoveSignalsCDGesture" +{ + Path "models" + Model 0 "LoveSignalsCD1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "LoveSignals.png" + FORCECULLBACKFACES + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 +} +Model "NutatcoBarGesture" +{ + Path "models" + Model 0 "NutatcoBar1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "Nutatco.png" + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 +} +Model "FrispyCornGesture" +{ + Path "models" + Model 0 "FrispyCorn1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "FrispyCorn.png" + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 +} +Model "SayaBeanGesture" +{ + Path "models" + Model 0 "SayaBean1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "SayaBean.png" + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 // Squish + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 + FrameIndex XZW1 U 0 20 + FrameIndex XZW1 V 0 21 + FrameIndex XZW1 W 0 23 + FrameIndex XZW1 X 0 24 +} +Model "MothPlushyGesture" +{ + Path "models" + Model 0 "MothPlush1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "MothPlush.png" + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 + FrameIndex XZW1 U 0 20 + FrameIndex XZW1 V 0 21 + FrameIndex XZW1 W 0 22 + FrameIndex XZW1 X 0 23 + FrameIndex XZW1 Y 0 24 + FrameIndex XZW1 Z 0 25 + FrameIndex XZW2 A 0 26 + FrameIndex XZW2 B 0 27 + FrameIndex XZW2 C 0 28 + FrameIndex XZW2 D 0 29 +} +Model "SayasMugGesture" +{ + Path "models" + Model 0 "SayasMug1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "SayasMug.png" + FORCECULLBACKFACES + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 + FrameIndex XZW1 U 0 20 + FrameIndex XZW1 V 0 21 + FrameIndex XZW1 W 0 22 + FrameIndex XZW1 X 0 23 + FrameIndex XZW1 Y 0 24 + FrameIndex XZW1 Z 0 25 + FrameIndex XZW2 A 0 26 + FrameIndex XZW2 B 0 27 + FrameIndex XZW2 C 0 28 + FrameIndex XZW2 D 0 29 + FrameIndex XZW2 E 0 30 + FrameIndex XZW2 F 0 31 + FrameIndex XZW2 G 0 32 + FrameIndex XZW2 H 0 33 + FrameIndex XZW2 I 0 34 + FrameIndex XZW2 J 0 35 + FrameIndex XZW2 K 0 36 + FrameIndex XZW2 L 0 37 + FrameIndex XZW2 M 0 38 + FrameIndex XZW2 N 0 39 + FrameIndex XZW2 O 0 40 + FrameIndex XZW2 P 0 41 + FrameIndex XZW2 Q 0 42 + FrameIndex XZW2 R 0 43 + FrameIndex XZW2 S 0 44 + FrameIndex XZW2 T 0 45 + FrameIndex XZW2 U 0 46 + FrameIndex XZW2 V 0 47 + FrameIndex XZW2 W 0 48 + FrameIndex XZW2 X 0 49 +} +Model "DemoPlushGesture" +{ + Path "models" + Model 0 "DemoPlush1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "DemoPlush.png" + SurfaceSkin 0 4 "DemoPlush2.png" + FORCECULLBACKFACES + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 + FrameIndex XZW1 U 0 20 + FrameIndex XZW1 V 0 21 + FrameIndex XZW1 W 0 23 + FrameIndex XZW1 X 0 24 +} +Model "KirinSippyGesture" +{ + Path "models" + Model 0 "TootFroot1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "TootFroot.png" + SurfaceSkin 0 4 "envmap/silverenv.png" + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 +} +Model "MilkBreadsGesture" +{ + Path "models" + Model 0 "MilkBreads1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "MilkBreads.png" + FORCECULLBACKFACES + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 +} +Model "KirinMangaGesture" +{ + Path "models" + Model 0 "KirinManga1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "KirinManga.png" + FORCECULLBACKFACES + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 + FrameIndex XZW1 Q 0 16 + FrameIndex XZW1 R 0 17 + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 +} +Model "KirinPlushGesture" +{ + Path "models" + Model 0 "KirinPlush1st.iqm" + SurfaceSkin 0 0 "DemoTags.png" + SurfaceSkin 0 1 "DemoArms.png" + SurfaceSkin 0 2 "DemoSoft.png" + SurfaceSkin 0 3 "KirinPlush.png" + + AngleOffset -90 + Scale -128 64 128 + + // Base + FrameIndex XZW1 A 0 0 + // Pickup + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + FrameIndex XZW1 N 0 13 + FrameIndex XZW1 O 0 14 + FrameIndex XZW1 P 0 15 // bump + FrameIndex XZW1 Q 0 16 // smooch + FrameIndex XZW1 R 0 17 // giggle + FrameIndex XZW1 S 0 18 + FrameIndex XZW1 T 0 19 + FrameIndex XZW1 U 0 20 + FrameIndex XZW1 V 0 21 + FrameIndex XZW1 W 0 23 + FrameIndex XZW1 X 0 24 // demo giggle + FrameIndex XZW1 Y 0 25 + FrameIndex XZW1 Z 0 26 + FrameIndex XZW2 A 0 27 + FrameIndex XZW2 B 0 28 + FrameIndex XZW2 C 0 29 +} diff --git a/modeldef/items/keys.txt b/modeldef/items/keys.txt new file mode 100644 index 000000000..2ad8d852e --- /dev/null +++ b/modeldef/items/keys.txt @@ -0,0 +1,283 @@ +Model "SWWMRedCard" +{ + Path "models" + Model 0 "DoomKeycard.iqm" + SurfaceSkin 0 0 "DoomRedKey.png" + Scale 160 160 160 + PitchOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + SurfaceSkin 0 1 "DoomKeyLight2.png" + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 1 "DoomKeyLight.png" + FrameIndex XZW1 B 0 0 +} +Model "SWWMYellowCard" +{ + Path "models" + Model 0 "DoomKeycard.iqm" + SurfaceSkin 0 0 "DoomYellowKey.png" + Scale 160 160 160 + PitchOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + SurfaceSkin 0 1 "DoomKeyLight2.png" + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 1 "DoomKeyLight.png" + FrameIndex XZW1 B 0 0 +} +Model "SWWMBlueCard" +{ + Path "models" + Model 0 "DoomKeycard.iqm" + SurfaceSkin 0 0 "DoomBlueKey.png" + Scale 160 160 160 + PitchOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + SurfaceSkin 0 1 "DoomKeyLight2.png" + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 1 "DoomKeyLight.png" + FrameIndex XZW1 B 0 0 +} +Model "SWWMGreenCard" +{ + Path "models" + Model 0 "DoomKeycard.iqm" + SurfaceSkin 0 0 "DoomGreenKey.png" + Scale 160 160 160 + PitchOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + SurfaceSkin 0 1 "DoomKeyLight2.png" + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 1 "DoomKeyLight.png" + FrameIndex XZW1 B 0 0 +} +Model "SWWMSilverCardKDiZD" +{ + Path "models" + Model 0 "DoomKeycard.iqm" + SurfaceSkin 0 0 "DoomSilverKey.png" + Scale 160 160 160 + PitchOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + SurfaceSkin 0 1 "DoomKeyLight2.png" + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 1 "DoomKeyLight.png" + FrameIndex XZW1 B 0 0 +} +Model "SWWMGreenCardKDiZD" +{ + Path "models" + Model 0 "DoomKeycard.iqm" + SurfaceSkin 0 0 "DoomGreenKey.png" + Scale 160 160 160 + PitchOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + SurfaceSkin 0 1 "DoomKeyLight2.png" + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 1 "DoomKeyLight.png" + FrameIndex XZW1 B 0 0 +} +Model "SWWMOrangeCardKDiZD" +{ + Path "models" + Model 0 "DoomKeycard.iqm" + SurfaceSkin 0 0 "DoomOrangeKey.png" + Scale 160 160 160 + PitchOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + SurfaceSkin 0 1 "DoomKeyLight2.png" + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 1 "DoomKeyLight.png" + FrameIndex XZW1 B 0 0 +} + +Model "SWWMRedSkull" +{ + Path "models" + Model 0 "DoomSkullKey.iqm" + Skin 0 "DoomRedSkull.png" + Scale 160 160 160 + AngleOffset -90 + RollOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMBlueSkull" +{ + Path "models" + Model 0 "DoomSkullKey.iqm" + Skin 0 "DoomBlueSkull.png" + Scale 160 160 160 + AngleOffset -90 + RollOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMYellowSkull" +{ + Path "models" + Model 0 "DoomSkullKey.iqm" + Skin 0 "DoomYellowSkull.png" + Scale 160 160 160 + AngleOffset -90 + RollOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMPurpleSkull" +{ + Path "models" + Model 0 "DoomSkullKey.iqm" + Skin 0 "DoomPurpleSkull.png" + Scale 160 160 160 + AngleOffset -90 + RollOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "SWWMFakeRedSkull" +{ + Path "models" + Model 0 "DoomSkullKey.iqm" + Skin 0 "DoomRedSkull.png" + Scale 160 160 160 + RollOffset 35 + AngleOffset 244 + ZOffset 5 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMFakeBlueSkull" +{ + Path "models" + Model 0 "DoomSkullKey.iqm" + Skin 0 "DoomBlueSkull.png" + Scale 160 160 160 + RollOffset 35 + AngleOffset 225 + ZOffset 5 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMFakeYellowSkull" +{ + Path "models" + Model 0 "DoomSkullKey.iqm" + Skin 0 "DoomYellowSkull.png" + Scale 160 160 160 + RollOffset 35 + AngleOffset 135 + ZOffset 5 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMFakePurpleSkull" +{ + Path "models" + Model 0 "DoomSkullKey.iqm" + Skin 0 "DoomPurpleSkull.png" + Scale 160 160 160 + RollOffset 35 + AngleOffset 116 + ZOffset 5 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "SWWMKeyGreen" +{ + Path "models" + Model 0 "HereticGreenKey.iqm" + Skin 0 "envmap/greenenv.png" + Scale 10 10 10 + AngleOffset -90 + RollOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMKeyBlue" +{ + Path "models" + Model 0 "HereticBlueKey.iqm" + Skin 0 "envmap/bluenv.png" + Scale 10 10 10 + AngleOffset -90 + RollOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMKeyYellow" +{ + Path "models" + Model 0 "HereticYellowKey.iqm" + Skin 0 "envmap/goldenv.png" + Scale 10 10 10 + AngleOffset -90 + RollOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "SWWMKeyRed" +{ + Path "models" + Model 0 "HereticRedKey.iqm" + Skin 0 "envmap/redenv.png" + Scale 10 10 10 + AngleOffset -90 + RollOffset 15 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/items/pickups.txt b/modeldef/items/pickups.txt new file mode 100644 index 000000000..2a9bf9d8e --- /dev/null +++ b/modeldef/items/pickups.txt @@ -0,0 +1,354 @@ +Model "ArmorNuggetItem" +{ + Path "models" + Model 0 "Nugget.md3" + Skin 0 "Nugget_Armor.png" + Scale 0.05 0.05 0.05 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 +} +Model "HealthNuggetItem" +{ + Path "models" + Model 0 "Nugget.md3" + Skin 0 "Nugget.png" + Scale 0.05 0.05 0.05 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 +} + +Model "TetraHealthItem" +{ + Path "models" + Model 0 "TetraHealth.iqm" + Skin 0 "TetraHealth.png" + Scale 8 8 8 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "CubeHealthItem" +{ + Path "models" + Model 0 "CubeHealth.iqm" + Skin 0 "CubeHealth.png" + Scale 8 8 8 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "RefresherItem" +{ + Path "models" + Model 0 "Refresher.iqm" + Skin 0 "Refresher.png" + Scale 10 10 10 + ZOffset 16 + AngleOffset -90 + RollOffset 30 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "BlastSuitItem" +{ + Path "models" + Model 0 "BlastSuit.iqm" + Skin 0 "BlastSuit.png" + Scale 24 24 24 + ZOffset 20 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "WarArmorItem" +{ + Path "models" + Model 0 "WarArmor.iqm" + Skin 0 "WarArmor.png" + Scale 18 18 18 + ZOffset 20 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "GrilledCheeseSandwich" +{ + Path "models" + Model 0 "Sandwich.iqm" + SurfaceSkin 0 0 "envmap/goldenv.png" + SurfaceSkin 0 1 "Sandwich.png" + Scale 10 10 10 + PitchOffset -45 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "GhostArtifact" +{ + Path "models" + Model 0 "GhostArtifact.iqm" + Skin 0 "GhostArtifact.png" + Scale 12 12 12 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "GhostArtifactX" +{ + Path "models" + Model 0 "GhostArtifactX.iqm" + Skin 0 "envmap/darkenv.png" + Scale 12 12 12 + ZOffset 16 + + FrameIndex XZW1 A 0 0 +} + +Model "GravitySuppressor" +{ + Path "models" + Model 0 "Gravity.iqm" + Skin 0 "Gravity.png" + Scale 16 16 16 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "GravityX" +{ + Path "models" + Model 0 "GravityX.iqm" + Skin 0 "envmap/watrenv.png" + Scale 16 16 16 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "FuckingInvinciball" +{ + Path "models" + Model 0 "Invinciball.iqm" + Skin 0 "Invinciball.png" + Scale 10 10 10 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "InvinciballX" +{ + Path "models" + Model 0 "InvinciballX.iqm" + Skin 0 "envmap/redenv.png" + Scale 10 10 10 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "Ragekit" +{ + Path "models" + Model 0 "Ragekit.iqm" + Skin 0 "Ragekit.png" + Scale 12 12 12 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "RagekitX" +{ + Path "models" + Model 0 "RagekitX.iqm" + Skin 0 "envmap/lavaenv.png" + Scale 12 12 12 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "Omnisight" +{ + Path "models" + Model 0 "Omnisight.iqm" + Skin 0 "Omnisight.png" + Scale 8 8 8 + RollOffset 30 + ZOffset 16 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "LampMoth" +{ + Path "models" + Model 0 "Moth.md3" + Skin 0 "Moth.png" + Scale 0.008 0.008 0.008 + ZOffset 0.5 + AngleOffset -90 + USEACTORPITCH + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 +} +Model "LampMoth2" +{ + Path "models" + Model 0 "Moth.md3" + Skin 0 "Moth_White.png" + Scale 0.012 0.012 0.012 + ZOffset 0.5 + AngleOffset -90 + USEACTORPITCH + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 +} + +Model "CompanionLamp" +{ + Path "models" + Model 0 "Lamp.iqm" + Skin 0 "Lamp_off.png" + Scale 8 8 8 + ZOffset 8 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + Skin 0 "Lamp.png" + FrameIndex XZW1 B 0 0 +} + +Model "SWWMLamp" +{ + Path "models" + Model 0 "Lamp.iqm" + Skin 0 "Lamp_off.png" + Scale 12 12 12 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "EBarrier" +{ + Path "models" + Model 0 "Barrier.iqm" + Skin 0 "Barrier.png" + Scale 24 24 24 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "EBarrierX" +{ + Path "models" + Model 0 "BarrierX.iqm" + Skin 0 "BARRIENV" + Scale 24 24 24 + ZOffset 16 + DONTCULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "MykradvoX2" +{ + Path "models/extra" + Model 0 "Flat.obj" + Skin 0 "AnomRingies.png" + Scale 20 20 20 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 + AngleOffset 180 + FrameIndex XZW1 B 0 0 +} +Model "SafetyTether" +{ + Path "models" + + Model 0 "SafetyTether.iqm" + Skin 0 "SafetyTether_off.png" + Scale 5 5 5 + ZOffset 16 + PitchOffset 30 + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + Skin 0 "SafetyTether.png" + FrameIndex XZW1 B 0 0 +} +Model "AngerySigil" +{ + Path "models" + + Model 0 "DevaSigil.iqm" + Skin 0 "DevaSigil.png" + Scale 18 18 18 + AngleOffset -90 + ZOffset 20 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "DivineSprite" +{ + Path "models" + + Model 0 "DivineSprite.iqm" + Skin 0 "DivineSprite.png" + Scale 8 8 8 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/misc.txt b/modeldef/misc.txt new file mode 100644 index 000000000..875240041 --- /dev/null +++ b/modeldef/misc.txt @@ -0,0 +1,491 @@ +// misc. models + +Model "Unknown" +{ + Path "models" + + Model 0 "extra/IAmError.obj" + Skin 0 "ERRORENV" + Scale 32 32 48 + ZOffset 28 + FORCECULLBACKFACES + FrameIndex UNKN A 0 0 +} + +Model "FancyConfetti" +{ + Path "models" + + Model 0 "extra/Flat.obj" + Scale 1 1 1 + ZOffset 0.1 + USEACTORPITCH + USEACTORROLL + + Skin 0 "envmap/goldenv.png" + FrameIndex XZW1 A 0 0 + Skin 0 "envmap/bluenv.png" + FrameIndex XZW1 B 0 0 + Skin 0 "envmap/darkenv.png" + FrameIndex XZW1 C 0 0 + Skin 0 "envmap/greenenv.png" + FrameIndex XZW1 D 0 0 + Skin 0 "envmap/ekaenv.png" + FrameIndex XZW1 E 0 0 + Skin 0 "envmap/watrenv.png" + FrameIndex XZW1 F 0 0 + Skin 0 "envmap/purpenv.png" + FrameIndex XZW1 G 0 0 + Skin 0 "envmap/telenv.png" + FrameIndex XZW1 H 0 0 + Skin 0 "envmap/redenv.png" + FrameIndex XZW1 I 0 0 + Skin 0 "envmap/silverenv.png" + FrameIndex XZW1 J 0 0 + Skin 0 "envmap/dekaenv.png" + FrameIndex XZW1 K 0 0 + Skin 0 "envmap/iceenv.png" + FrameIndex XZW1 L 0 0 + Skin 0 "envmap/leadenv.png" + FrameIndex XZW1 M 0 0 + Skin 0 "envmap/puroenv.png" + FrameIndex XZW1 N 0 0 +} + +Model "SWWMSparkTrail" +{ + Path "models/extra" + + Model 0 "YBeam.obj" + Skin 0 "ChunkTrail.png" + Scale 1 1 1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} + +Model "SWWMChip" +{ + Path "models" + + Model 0 "Chunky.md3" + Skin 0 "Chunky.png" + Scale 0.02 0.02 0.02 + USEROTATIONCENTER + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + Rotation-Center 0 0 0.1 + ZOffset 0.2 + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 +} + +Model "mkBloodDrop" +{ + Path "models/extra" + Model 0 "Flat.obj" + Scale 12 12 12 + ZOffset 0.1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + + Skin 0 "BloodDrop1.png" + FrameIndex SBLD F 0 0 + Skin 0 "BloodDrop2.png" + FrameIndex SBLD G 0 0 + Skin 0 "BloodDrop3.png" + FrameIndex SBLD H 0 0 + Skin 0 "BloodDrop4.png" + FrameIndex SBLD I 0 0 + Skin 0 "BloodDrop5.png" + FrameIndex SBLD J 0 0 + Skin 0 "BloodDrop6.png" + FrameIndex SBLD K 0 0 + Skin 0 "BloodDrop7.png" + FrameIndex SBLD L 0 0 + Skin 0 "BloodDrop8.png" + FrameIndex SBLD M 0 0 + ZOffset -0.1 + Skin 0 "BloodSplat1.png" + FrameIndex SBLD N 0 0 + Skin 0 "BloodSplat2.png" + FrameIndex SBLD O 0 0 + Skin 0 "BloodSplat3.png" + FrameIndex SBLD P 0 0 + Skin 0 "BloodSplat4.png" + FrameIndex SBLD Q 0 0 + Skin 0 "BloodSplat1.png" + FrameIndex SBLD R 0 0 + Skin 0 "BloodSplat2.png" + FrameIndex SBLD S 0 0 + Skin 0 "BloodSplat3.png" + FrameIndex SBLD T 0 0 + Skin 0 "BloodSplat4.png" + FrameIndex SBLD U 0 0 +} + +Model "mkBloodBlast" +{ + Path "models/extra" + Model 0 "Flat.obj" + Scale 120 120 120 + ZOffset 0.1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + + Skin 0 "BloodBlast.png" + FrameIndex XZW1 A 0 0 +} + +Model "mkBloodPool" +{ + Path "models/extra" + Model 0 "Flat.obj" + Scale 60 60 60 + ZOffset 0.1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + + Skin 0 "blodpool.png" + FrameIndex XZW1 A 0 0 + // do not use for sprite-based monsters + Skin 0 "blodpool_shaded.png" + FrameIndex XZW1 B 0 0 +} + +Model "mkBloodStep" +{ + Path "models/extra" + Model 0 "Flat.obj" + Scale 4 4 4 + ZOffset 0.1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + + // texture ought to be assigned by script + Skin 0 "-noflat-" + FrameIndex XZW1 A 0 0 + Scale 4 -4 4 + FrameIndex XZW1 B 0 0 +} + +Model "mkFlyingGib" +{ + Path "models" + + Model 0 "ChunkyMeat.md3" + Skin 0 "ChunkyMeat.png" + Scale 0.05 0.05 0.05 + USEROTATIONCENTER + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + Rotation-Center 0 0 1 + ZOffset 2 + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 +} + +Model "RadiusDebugSphere" +{ + Path "models/extra" + Model 0 "UnitSphere.obj" + Scale 1 1 1 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "DemolitionistRadiusShockwave" +{ + Path "models/extra" + Model 0 "Flat.obj" + Skin 0 "Shockwave.png" + Scale 200 12 3 + PitchOffset 90 + ZOffset 4 + USEACTORPITCH + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} +Model "DemolitionistRadiusShockwaveTail" +{ + Path "models/extra" + Model 0 "Flat.obj" + Skin 0 "Shockwave.png" + Scale 200 12 3 + PitchOffset 90 + ZOffset 4 + USEACTORPITCH + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} + +Model "MykradvoTendril" +{ + Path "models/extra" + + Model 0 "WarpBeam3.md3" + Skin 0 "AnomTrail.png" + Scale 1 1 1 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + // base + FrameIndex XZW1 A 0 0 + // low deviation + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + // mid deviation + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + // high deviation + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 +} +Model "MykradvoSmallTendril" +{ + Path "models/extra" + + Model 0 "WarpBeam2.md3" + Skin 0 "AnomTrail.png" + Scale 0.25 0.5 0.5 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + // base + FrameIndex XZW1 A 0 0 + // low deviation + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + // mid deviation + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + // high deviation + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 +} +Model "MykradvoSmallNullTendril" +{ + Path "models/extra" + + Model 0 "WarpBeam2.md3" + Skin 0 "AnomTrail.png" + Scale 0.125 0.25 0.25 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + // base + FrameIndex XZW1 A 0 0 + // low deviation + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + // mid deviation + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + // high deviation + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 +} + +Model "SaltBeam" +{ + Path "models/extra" + + Model 0 "WarpBeam2.md3" + Scale 0.5 0.5 0.5 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + // starter + Skin 0 "SaltBeamS.png" + + // base + FrameIndex XZW1 A 0 0 + // low deviation + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + // mid deviation + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + // high deviation + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + + // other + Skin 0 "SaltBeam.png" + + // base + FrameIndex XZW2 A 0 0 + // low deviation + FrameIndex XZW2 B 0 1 + FrameIndex XZW2 C 0 2 + FrameIndex XZW2 D 0 3 + FrameIndex XZW2 E 0 4 + // mid deviation + FrameIndex XZW2 F 0 5 + FrameIndex XZW2 G 0 6 + FrameIndex XZW2 H 0 7 + FrameIndex XZW2 I 0 8 + // high deviation + FrameIndex XZW2 J 0 9 + FrameIndex XZW2 K 0 10 + FrameIndex XZW2 L 0 11 + FrameIndex XZW2 M 0 12 +} + +Model "TheBall" +{ + Path "models" + + Model 0 "extra/BaseSphere.obj" + Skin 0 "envmap/leadenv.png" + Scale 2 2 2 + ZOffset 1 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "SWWMShadow" +{ + Path "models/extra" + Model 0 "Flat.obj" + Skin 0 "BlobShadow.png" + Scale 12 12 12 // slightly smaller on purpose + ZOffset 0.1 + USEACTORPITCH + USEACTORROLL + + FrameIndex XZW1 A 0 0 +} + +Model "EnvmapDebugSphere" +{ + Path "models" + Model 0 "extra/UnitSphere.obj" + Scale 16 16 16 + ZOffset 32 + DONTCULLBACKFACES + + Skin 0 "envmap/blodenv.png" + FrameIndex XZW1 A 0 0 + Skin 0 "envmap/bluenv.png" + FrameIndex XZW1 B 0 0 + Skin 0 "envmap/darkenv.png" + FrameIndex XZW1 C 0 0 + Skin 0 "envmap/dekaenv.png" + FrameIndex XZW1 D 0 0 + Skin 0 "envmap/ekaenv.png" + FrameIndex XZW1 E 0 0 + Skin 0 "envmap/glassenv.png" + FrameIndex XZW1 F 0 0 + Skin 0 "envmap/glss2env.png" + FrameIndex XZW1 G 0 0 + Skin 0 "envmap/glss3env.png" + FrameIndex XZW1 H 0 0 + Skin 0 "envmap/glss4env.png" + FrameIndex XZW1 I 0 0 + Skin 0 "envmap/glss5env.png" + FrameIndex XZW1 J 0 0 + Skin 0 "envmap/glss6env.png" + FrameIndex XZW1 K 0 0 + Skin 0 "envmap/goldenv.png" + FrameIndex XZW1 L 0 0 + Skin 0 "envmap/greenenv.png" + FrameIndex XZW1 M 0 0 + Skin 0 "envmap/iceenv.png" + FrameIndex XZW1 N 0 0 + Skin 0 "envmap/kinyenv.png" + FrameIndex XZW1 O 0 0 + Skin 0 "envmap/lavaenv.png" + FrameIndex XZW1 P 0 0 + Skin 0 "envmap/leadenv.png" + FrameIndex XZW1 Q 0 0 + Skin 0 "envmap/nokrenv.png" + FrameIndex XZW1 R 0 0 + Skin 0 "envmap/nukenv.png" + FrameIndex XZW1 S 0 0 + Skin 0 "envmap/ockoenv.png" + FrameIndex XZW1 T 0 0 + Skin 0 "envmap/pronoenv.png" + FrameIndex XZW1 U 0 0 + Skin 0 "envmap/puroenv.png" + FrameIndex XZW1 V 0 0 + Skin 0 "envmap/purpenv.png" + FrameIndex XZW1 W 0 0 + Skin 0 "envmap/redenv.png" + FrameIndex XZW1 X 0 0 + Skin 0 "envmap/reflenv.png" + FrameIndex XZW1 Y 0 0 + Skin 0 "envmap/rfl2env.png" + FrameIndex XZW1 Z 0 0 + Skin 0 "envmap/silverenv.png" + FrameIndex XZW2 A 0 0 + Skin 0 "envmap/tarenv.png" + FrameIndex XZW2 B 0 0 + Skin 0 "envmap/telenv.png" + FrameIndex XZW2 C 0 0 + Skin 0 "envmap/watrenv.png" + FrameIndex XZW2 D 0 0 + Skin 0 "ERRORENV" + FrameIndex XZW2 E 0 0 + Skin 0 "BARRIENV" + FrameIndex XZW2 F 0 0 +} diff --git a/modeldef/weapons/candygun.txt b/modeldef/weapons/candygun.txt new file mode 100644 index 000000000..3506c0c7d --- /dev/null +++ b/modeldef/weapons/candygun.txt @@ -0,0 +1,551 @@ +Model "CandyCasing" +{ + Path "models" + + Model 0 "ExplodiumCasing.iqm" + Skin 0 "CandyCasing.png" + Scale 5 5 5 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 0.5 + FrameIndex XZW1 B 0 0 +} + +Model "CandyMag" +{ + Path "models" + + Model 0 "ExplodiumMag.iqm" + Scale 8 8 8 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + Skin 0 "CandyGun_EmptyMag.png" + FrameIndex XZW1 A 0 0 + RollOffset 90 + ZOffset 0.5 + FrameIndex XZW1 B 0 0 + RollOffset -90 + FrameIndex XZW1 C 0 0 +} +Model "CandyMagProj" +{ + Path "models" + + Model 0 "ExplodiumMag.iqm" + Skin 0 "CandyGun.png" + Scale 8 8 8 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 1 +} + +Model "CandyGunProj" +{ + Path "models" + + Model 0 "ExplodiumGunPickup.iqm" + Skin 0 "CandyGun.png" + Scale 8 8 8 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "CandyBeam" +{ + Path "models/extra" + + Model 0 "BaseBeam.obj" + Skin 0 "CandyTrail.png" + Scale 16 8 8 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex XZW1 A 0 0 +} + +Model "TinyCandyBeam" +{ + Path "models/extra" + + Model 0 "BaseBeam.obj" + Skin 0 "CandyTrail.png" + Scale 8 4 4 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex XZW1 A 0 0 +} + +Model "CandyGun" +{ + Path "models" + + Model 0 "ExplodiumGunPickup.iqm" + SurfaceSkin 0 0 "CandyGun.png" + Scale 12 12 12 + ZOffset 16 + AngleOffset 180 + FORCECULLBACKFACES + + SurfaceSkin 0 1 "CandyGun.png" + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 1 "" + FrameIndex XZW1 B 0 0 + SurfaceSkin 0 1 "CandyGun_EmptyMag.png" + FrameIndex XZW1 C 0 1 +} + +Model "CandyGun" +{ + Path "models/extra" + + Model 2 "Flat.obj" + Scale -30 30 30 + Offset 16 -60 -12 + PitchOffset 90 + + Skin 2 "CandyMuz0.png" + FrameIndex XZWZ A 2 0 + Skin 2 "CandyMuz1.png" + FrameIndex XZWZ B 2 0 + Skin 2 "CandyMuz2.png" + FrameIndex XZWZ C 2 0 + Skin 2 "CandyMuz3.png" + FrameIndex XZWZ D 2 0 + Skin 2 "CandyMuz4.png" + FrameIndex XZWZ E 2 0 + Skin 2 "CandyMuz5.png" + FrameIndex XZWZ F 2 0 + Skin 2 "CandyMuz6.png" + FrameIndex XZWZ G 2 0 + Skin 2 "CandyMuz7.png" + FrameIndex XZWZ H 2 0 + Skin 2 "CandyMuz8.png" + FrameIndex XZWZ I 2 0 + Skin 2 "CandyMuz9.png" + FrameIndex XZWZ J 2 0 +} + +Model "CandyGun" +{ + Path "models" + + Model 3 "ExplodiumGun1st_Casing.iqm" + SurfaceSkin 3 0 "CandyCasing_Used.png" + + Scale -128 64 128 + AngleOffset -90 + Offset 0 0 -2 + FORCECULLBACKFACES + + // Casing Drop + FrameIndex XZWC A 3 14 + FrameIndex XZWC B 3 15 + FrameIndex XZWC C 3 16 + FrameIndex XZWC D 3 17 + FrameIndex XZWC E 3 18 + FrameIndex XZWC F 3 19 + FrameIndex XZWC G 3 20 + FrameIndex XZWC H 3 21 + FrameIndex XZWC I 3 22 + FrameIndex XZWC J 3 23 + // Casing Check + SurfaceSkin 3 0 "CandyCasing.png" + FrameIndex XZWF B 3 157 + FrameIndex XZWF C 3 158 + FrameIndex XZWF D 3 159 + FrameIndex XZWF E 3 160 + FrameIndex XZWF F 3 161 + FrameIndex XZWF G 3 162 + FrameIndex XZWF H 3 163 + FrameIndex XZWF I 3 164 + FrameIndex XZWF J 3 165 + FrameIndex XZWF K 3 166 + FrameIndex XZWF L 3 167 + FrameIndex XZWF M 3 168 + FrameIndex XZWF N 3 169 + FrameIndex XZWF O 3 170 + FrameIndex XZWF P 3 171 + FrameIndex XZWF Q 3 172 + FrameIndex XZWF R 3 173 + FrameIndex XZWF S 3 174 + FrameIndex XZWF T 3 175 +} + +Model "CandyGun" +{ + Path "models" + + Model 1 "ExplodiumGun1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "CandyGun.png" + SurfaceSkin 1 4 "CandyGun.png" + + Scale -128 64 128 + AngleOffset -90 + Offset 0 0 -2 + FORCECULLBACKFACES + + // Still + FrameIndex XZW2 A 1 0 + // Deselect + FrameIndex XZWA T 1 1 + FrameIndex XZWA U 1 2 + FrameIndex XZWA V 1 3 + FrameIndex XZWA W 1 4 + // Select + FrameIndex XZW2 B 1 5 + FrameIndex XZW2 C 1 6 + FrameIndex XZW2 D 1 7 + FrameIndex XZW2 E 1 8 + FrameIndex XZW2 F 1 9 + FrameIndex XZW2 G 1 10 + FrameIndex XZW2 H 1 11 + // Fire + FrameIndex XZW2 I 1 13 + FrameIndex XZW2 J 1 14 + FrameIndex XZW2 K 1 15 + FrameIndex XZW2 L 1 16 + FrameIndex XZW2 M 1 17 + FrameIndex XZW2 N 1 18 + FrameIndex XZW2 O 1 19 + FrameIndex XZW2 P 1 20 + FrameIndex XZW2 Q 1 21 + // unused + FrameIndex XZW2 R 1 22 + FrameIndex XZW2 S 1 23 + // Reload (Part 1) + FrameIndex XZW2 T 1 25 + FrameIndex XZW2 U 1 26 + FrameIndex XZW2 V 1 27 + FrameIndex XZW2 W 1 28 + FrameIndex XZW2 X 1 29 + FrameIndex XZW2 Y 1 30 + FrameIndex XZW2 Z 1 31 + FrameIndex XZW3 A 1 32 + FrameIndex XZW3 B 1 33 + FrameIndex XZW3 C 1 34 + FrameIndex XZW3 D 1 35 + FrameIndex XZW3 E 1 36 + FrameIndex XZW3 F 1 37 + FrameIndex XZW3 G 1 38 + FrameIndex XZW3 H 1 39 + FrameIndex XZW3 I 1 40 + // Reload (Part 1 w/ Empty Mag) + SurfaceSkin 1 4 "CandyGun_EmptyMag.png" // empty mag + FrameIndex XZW3 J 1 25 + FrameIndex XZW3 K 1 26 + FrameIndex XZW3 L 1 27 + FrameIndex XZW3 M 1 28 + FrameIndex XZW3 N 1 29 + FrameIndex XZW3 O 1 30 + FrameIndex XZW3 P 1 31 + FrameIndex XZW3 Q 1 32 + FrameIndex XZW3 R 1 33 + FrameIndex XZW3 S 1 34 + FrameIndex XZW3 T 1 35 + FrameIndex XZW3 U 1 36 + FrameIndex XZW3 V 1 37 + FrameIndex XZW3 W 1 38 + FrameIndex XZW3 X 1 39 + FrameIndex XZW3 Y 1 40 + // Reload (Part 2) + SurfaceSkin 1 4 "" // hide mag + SurfaceSkin 1 5 "CandyGun.png" // show new mag + FrameIndex XZW3 Z 1 41 + FrameIndex XZW4 A 1 42 + FrameIndex XZW4 B 1 43 + FrameIndex XZW4 C 1 44 + FrameIndex XZW4 D 1 45 + FrameIndex XZW4 E 1 46 + FrameIndex XZW4 F 1 47 + FrameIndex XZW4 G 1 48 + SurfaceSkin 1 5 "" // hide new mag + FrameIndex XZW4 H 1 49 + FrameIndex XZW4 I 1 50 + FrameIndex XZW4 J 1 51 + SurfaceSkin 1 4 "CandyGun.png" // show mag + FrameIndex XZW4 K 1 52 + FrameIndex XZW4 L 1 53 + FrameIndex XZW4 M 1 54 + FrameIndex XZW4 N 1 55 + FrameIndex XZW4 O 1 56 + FrameIndex XZW4 P 1 57 + FrameIndex XZW4 Q 1 58 + FrameIndex XZW4 R 1 59 + FrameIndex XZW4 S 1 60 + FrameIndex XZW4 T 1 61 + FrameIndex XZW4 U 1 62 + FrameIndex XZW4 V 1 63 + // Slide + FrameIndex XZW4 W 1 65 + FrameIndex XZW4 X 1 66 + FrameIndex XZW4 Y 1 67 + FrameIndex XZW4 Z 1 68 + FrameIndex XZW5 A 1 69 + FrameIndex XZW5 B 1 70 + FrameIndex XZW5 C 1 71 + FrameIndex XZW5 D 1 72 + FrameIndex XZW5 E 1 73 + FrameIndex XZW5 F 1 74 + FrameIndex XZW5 G 1 75 + FrameIndex XZW5 H 1 76 + FrameIndex XZW5 I 1 77 + FrameIndex XZW5 J 1 78 + FrameIndex XZW5 K 1 79 + FrameIndex XZW5 L 1 80 + FrameIndex XZW5 M 1 81 + // "Explosive" Reload + FrameIndex XZW5 N 1 83 + FrameIndex XZW5 O 1 84 + FrameIndex XZW5 P 1 85 + FrameIndex XZW5 Q 1 86 + FrameIndex XZW5 R 1 87 + FrameIndex XZW5 S 1 88 + FrameIndex XZW5 T 1 89 + FrameIndex XZW5 U 1 90 + FrameIndex XZW5 V 1 91 + FrameIndex XZW5 W 1 92 + FrameIndex XZW5 X 1 93 + FrameIndex XZW5 Y 1 94 + FrameIndex XZW5 Z 1 95 + FrameIndex XZW6 A 1 96 + FrameIndex XZW6 B 1 97 + FrameIndex XZW6 C 1 98 + FrameIndex XZW6 D 1 99 + FrameIndex XZW6 E 1 100 + FrameIndex XZW6 F 1 101 + FrameIndex XZW6 G 1 102 + FrameIndex XZW6 H 1 103 + FrameIndex XZW6 I 1 104 + SurfaceSkin 1 4 "" // hide mag + SurfaceSkin 1 5 "CandyGun.png" // show new mag + FrameIndex XZW6 J 1 105 + FrameIndex XZW6 K 1 106 + FrameIndex XZW6 L 1 107 + FrameIndex XZW6 M 1 108 + FrameIndex XZW6 N 1 109 + FrameIndex XZW6 O 1 110 + FrameIndex XZW6 P 1 111 + FrameIndex XZW6 Q 1 112 + FrameIndex XZW6 R 1 113 + FrameIndex XZW6 S 1 114 + SurfaceSkin 1 5 "" // hide new mag + FrameIndex XZW6 T 1 115 + FrameIndex XZW6 U 1 116 + FrameIndex XZW6 V 1 117 + FrameIndex XZW6 W 1 118 + FrameIndex XZW6 X 1 119 + FrameIndex XZW6 Y 1 120 + FrameIndex XZW6 Z 1 121 + SurfaceSkin 1 4 "CandyGun.png" // show mag + // Check Bullet + FrameIndex XZW7 A 1 157 + FrameIndex XZW7 B 1 158 + FrameIndex XZW7 C 1 159 + FrameIndex XZW7 D 1 160 + FrameIndex XZW7 E 1 161 + FrameIndex XZW7 F 1 162 + FrameIndex XZW7 G 1 163 + FrameIndex XZW7 H 1 164 + FrameIndex XZW7 I 1 165 + FrameIndex XZW7 J 1 166 + FrameIndex XZW7 K 1 167 + FrameIndex XZW7 L 1 168 + FrameIndex XZW7 M 1 169 + FrameIndex XZW7 N 1 170 + FrameIndex XZW7 O 1 171 + FrameIndex XZW7 P 1 172 + FrameIndex XZW7 Q 1 173 + FrameIndex XZW7 R 1 174 + FrameIndex XZW7 S 1 175 + // Melee + FrameIndex XZW7 T 1 177 + FrameIndex XZW7 U 1 178 + FrameIndex XZW7 V 1 179 + FrameIndex XZW7 W 1 180 + FrameIndex XZW7 X 1 181 + FrameIndex XZW7 Y 1 182 + FrameIndex XZW7 Z 1 183 + FrameIndex XZW8 A 1 184 + FrameIndex XZW8 B 1 185 + FrameIndex XZW8 C 1 186 + FrameIndex XZW8 D 1 187 + FrameIndex XZW8 E 1 188 + FrameIndex XZW8 F 1 189 + // Check Gun + FrameIndex XZW8 G 1 192 + FrameIndex XZW8 H 1 193 + FrameIndex XZW8 I 1 194 + FrameIndex XZW8 J 1 195 + FrameIndex XZW8 K 1 196 + FrameIndex XZW8 L 1 197 + FrameIndex XZW8 M 1 198 + FrameIndex XZW8 N 1 199 + FrameIndex XZW8 O 1 200 + FrameIndex XZW8 P 1 201 + FrameIndex XZW8 Q 1 202 + FrameIndex XZW8 R 1 203 + FrameIndex XZW8 S 1 204 + FrameIndex XZW8 T 1 205 + FrameIndex XZW8 U 1 206 + FrameIndex XZW8 V 1 207 + FrameIndex XZW8 W 1 208 + FrameIndex XZW8 X 1 209 + FrameIndex XZW8 Y 1 210 + FrameIndex XZW8 Z 1 211 + // Spin Gun + FrameIndex XZW9 A 1 213 + FrameIndex XZW9 B 1 214 + FrameIndex XZW9 C 1 215 + FrameIndex XZW9 D 1 216 + FrameIndex XZW9 E 1 217 + FrameIndex XZW9 F 1 218 + FrameIndex XZW9 G 1 219 + FrameIndex XZW9 H 1 220 + FrameIndex XZW9 I 1 221 + FrameIndex XZW9 J 1 222 + FrameIndex XZW9 K 1 223 + FrameIndex XZW9 L 1 224 + FrameIndex XZW9 M 1 225 + FrameIndex XZW9 N 1 226 + FrameIndex XZW9 O 1 227 + FrameIndex XZW9 P 1 228 + FrameIndex XZW9 Q 1 229 + FrameIndex XZW9 R 1 230 + FrameIndex XZW9 S 1 231 + FrameIndex XZW9 T 1 232 + FrameIndex XZW9 U 1 233 + FrameIndex XZW9 V 1 234 + FrameIndex XZW9 W 1 235 + // Throw Gun + FrameIndex XZWA Z 1 128 + FrameIndex XZWB A 1 129 + FrameIndex XZWB B 1 130 + FrameIndex XZWB C 1 131 + FrameIndex XZWB D 1 132 + FrameIndex XZWB E 1 133 + FrameIndex XZWB F 1 134 + FrameIndex XZWB G 1 135 + FrameIndex XZWB H 1 136 + FrameIndex XZWB I 1 137 + FrameIndex XZWB J 1 138 + FrameIndex XZWB K 1 139 + FrameIndex XZWB L 1 140 + FrameIndex XZWB M 1 141 + FrameIndex XZWB N 1 142 + FrameIndex XZWB O 1 143 + FrameIndex XZWB P 1 144 + FrameIndex XZWB Q 1 145 + FrameIndex XZWB R 1 146 + SurfaceSkin 1 3 "" // hide gun + SurfaceSkin 1 4 "" // hide mag + FrameIndex XZWB S 1 147 + FrameIndex XZWB T 1 148 + FrameIndex XZWB U 1 149 + FrameIndex XZWB V 1 150 + FrameIndex XZWB W 1 151 + FrameIndex XZWB X 1 152 + FrameIndex XZWB Y 1 153 + FrameIndex XZWB Z 1 154 + /// LAST ROUND + SurfaceSkin 1 3 "CandyGun.png" + SurfaceSkin 1 4 "CandyGun.png" + // Fire + FrameIndex XZWC K 1 237 + FrameIndex XZWC L 1 238 + FrameIndex XZWC M 1 239 + FrameIndex XZWC N 1 240 + FrameIndex XZWC O 1 241 + FrameIndex XZWC P 1 242 + FrameIndex XZWC Q 1 243 + FrameIndex XZWC R 1 244 + FrameIndex XZWC S 1 245 + // Still + FrameIndex XZW9 X 1 248 + // Reload (Part 1) + SurfaceSkin 1 4 "CandyGun_EmptyMag.png" // empty mag + FrameIndex XZW9 Z 1 249 + FrameIndex XZWC X 1 250 + FrameIndex XZWC Y 1 251 + FrameIndex XZWC Z 1 252 + FrameIndex XZWD A 1 253 + FrameIndex XZWD B 1 254 + FrameIndex XZWD C 1 255 + FrameIndex XZWD D 1 256 + FrameIndex XZWD E 1 257 + FrameIndex XZWD F 1 258 + FrameIndex XZWD G 1 259 + FrameIndex XZWD H 1 260 + FrameIndex XZWD I 1 261 + FrameIndex XZWD J 1 262 + FrameIndex XZWD K 1 263 + FrameIndex XZWD L 1 264 + // Reload (Part 2) + SurfaceSkin 1 4 "" // hide mag + SurfaceSkin 1 5 "CandyGun.png" // show new mag + FrameIndex XZWD M 1 265 + FrameIndex XZWD N 1 266 + FrameIndex XZWD O 1 267 + FrameIndex XZWD P 1 268 + FrameIndex XZWD Q 1 269 + FrameIndex XZWD R 1 270 + FrameIndex XZWD S 1 271 + FrameIndex XZWD T 1 272 + SurfaceSkin 1 5 "" // hide new mag + FrameIndex XZWD U 1 273 + FrameIndex XZWD V 1 274 + FrameIndex XZWD W 1 275 + SurfaceSkin 1 4 "CandyGun.png" // show mag + FrameIndex XZWD X 1 276 + FrameIndex XZWD Y 1 277 + FrameIndex XZWD Z 1 278 + FrameIndex XZWE A 1 279 + FrameIndex XZWE B 1 280 + FrameIndex XZWE C 1 281 + FrameIndex XZWE D 1 282 + FrameIndex XZWE E 1 283 + FrameIndex XZWE F 1 284 + FrameIndex XZWE G 1 285 + FrameIndex XZWE H 1 286 + FrameIndex XZWE I 1 287 + FrameIndex XZWE J 1 288 + FrameIndex XZWE K 1 289 + FrameIndex XZWE L 1 290 + FrameIndex XZWE M 1 291 + FrameIndex XZWE N 1 292 + FrameIndex XZWE O 1 293 + FrameIndex XZWE P 1 294 + // Deselect + FrameIndex XZWE Q 1 297 + FrameIndex XZWE R 1 298 + FrameIndex XZWE S 1 299 + FrameIndex XZWE T 1 300 + // Select + FrameIndex XZWE U 1 301 + FrameIndex XZWE V 1 302 + FrameIndex XZWE W 1 303 + FrameIndex XZWE X 1 304 + FrameIndex XZWE Y 1 305 + FrameIndex XZWE Z 1 306 + FrameIndex XZWF A 1 307 + +} diff --git a/modeldef/weapons/deepimpact.txt b/modeldef/weapons/deepimpact.txt new file mode 100644 index 000000000..f1ed186ba --- /dev/null +++ b/modeldef/weapons/deepimpact.txt @@ -0,0 +1,111 @@ +Model "DeepImpact" +{ + Path "models" + + Model 0 "DeepImpactPickup.iqm" + Skin 0 "DeepImpact.png" + Scale 25 25 25 + ZOffset 20 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "DeepImpact" +{ + Path "models" + + Model 1 "DeepImpact1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "DeepImpact.png" + + Scale -128 64 128 + AngleOffset -90 + Offset 0 0 -2 + FORCECULLBACKFACES + + // Still / Down / Select + FrameIndex XZW2 A 1 0 // still / down + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 // enddown / startselect + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + // Fire + FrameIndex XZW2 Q 1 17 + FrameIndex XZW2 R 1 18 + FrameIndex XZW2 S 1 19 + FrameIndex XZW2 T 1 20 + FrameIndex XZW2 U 1 21 + // AltFire + FrameIndex XZW2 V 1 23 + FrameIndex XZW2 W 1 24 + FrameIndex XZW2 X 1 25 + FrameIndex XZW2 Y 1 26 + FrameIndex XZW2 Z 1 27 + FrameIndex XZW3 A 1 28 + FrameIndex XZW3 B 1 29 + FrameIndex XZW3 C 1 30 + FrameIndex XZW3 D 1 31 + FrameIndex XZW3 E 1 32 + FrameIndex XZW3 F 1 33 + FrameIndex XZW3 G 1 34 + // ReloadBeg + FrameIndex XZW3 H 1 36 + FrameIndex XZW3 I 1 37 + FrameIndex XZW3 J 1 38 + // Reload + FrameIndex XZW3 K 1 39 + FrameIndex XZW3 L 1 40 + FrameIndex XZW3 M 1 41 + FrameIndex XZW3 N 1 42 + FrameIndex XZW3 O 1 43 + FrameIndex XZW3 P 1 44 + FrameIndex XZW3 Q 1 45 + // ReloadEnd + FrameIndex XZW3 R 1 47 + FrameIndex XZW3 S 1 48 + FrameIndex XZW3 T 1 49 + FrameIndex XZW3 U 1 50 + FrameIndex XZW3 V 1 51 + // CheckGun + FrameIndex XZW3 W 1 53 + FrameIndex XZW3 X 1 54 + FrameIndex XZW3 Y 1 55 + FrameIndex XZW3 Z 1 56 + FrameIndex XZW4 A 1 57 + FrameIndex XZW4 B 1 58 + FrameIndex XZW4 C 1 59 + FrameIndex XZW4 D 1 60 + FrameIndex XZW4 E 1 61 + FrameIndex XZW4 F 1 62 + FrameIndex XZW4 G 1 63 + // Melee + FrameIndex XZW4 H 1 65 + FrameIndex XZW4 I 1 66 + FrameIndex XZW4 J 1 67 + FrameIndex XZW4 K 1 68 + FrameIndex XZW4 L 1 69 + FrameIndex XZW4 M 1 70 + FrameIndex XZW4 N 1 71 + FrameIndex XZW4 O 1 72 + FrameIndex XZW4 P 1 73 + FrameIndex XZW4 Q 1 74 + FrameIndex XZW4 R 1 75 + FrameIndex XZW4 S 1 76 + FrameIndex XZW4 T 1 77 + FrameIndex XZW4 U 1 78 + FrameIndex XZW4 V 1 79 +} diff --git a/modeldef/weapons/eviscerator.txt b/modeldef/weapons/eviscerator.txt new file mode 100644 index 000000000..7b9581adf --- /dev/null +++ b/modeldef/weapons/eviscerator.txt @@ -0,0 +1,430 @@ +Model "EvisceratorCasing" +{ + Path "models" + + Model 0 "EvisceratorShell.iqm" + Skin 0 "EvisceratorShell.png" + Scale 20 20 20 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 1 + PitchOffset 90 + FrameIndex XZW1 B 0 0 + PitchOffset -90 + FrameIndex XZW1 C 0 0 +} + +Model "EvisceratorChunkTrail" +{ + Path "models/extra" + + Model 0 "YBeam.obj" + Skin 0 "ChunkTrail.png" + Scale 1 1 1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 + // recolors wow + Skin 0 "ChunkTrail_White.png" + FrameIndex XZW1 B 0 0 + Skin 0 "ChunkTrail_Red.png" + FrameIndex XZW1 C 0 0 + Skin 0 "ChunkTrail_Yellow.png" + FrameIndex XZW1 D 0 0 + Skin 0 "ChunkTrail_Green.png" + FrameIndex XZW1 E 0 0 + Skin 0 "ChunkTrail_Cyan.png" + FrameIndex XZW1 F 0 0 + Skin 0 "ChunkTrail_Blue.png" + FrameIndex XZW1 G 0 0 + Skin 0 "ChunkTrail_Magenta.png" + FrameIndex XZW1 H 0 0 + Skin 0 "ChunkTrail_TransBlue.png" + FrameIndex XZW1 I 0 0 + Skin 0 "ChunkTrail_TransPink.png" + FrameIndex XZW1 J 0 0 +} + +Model "EvisceratorChunk" +{ + Path "models" + + Model 0 "Chunky.md3" + Skin 0 "Chunky.png" + Scale 0.02 0.02 0.02 + USEROTATIONCENTER + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + Rotation-Center 0 0 0.1 + ZOffset 0.2 + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 +} + +Model "EvisceratorProj" +{ + Path "models" + + Model 0 "EvisceratorProj.iqm" + Skin 0 "EvisceratorShell.png" + Scale 20 20 20 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "Eviscerator" +{ + Path "models" + + Model 0 "EvisceratorPickup.iqm" + Skin 0 "Eviscerator.png" + Scale 24 24 24 + ZOffset 20 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 +} + +Model "Eviscerator" +{ + Path "models/extra" + + Model 2 "Flat.obj" + Offset 18 -60 -22 + PitchOffset 90 + + Scale -60 60 60 + Skin 2 "EvisceratorMuz0.png" + FrameIndex XZWZ A 2 0 + Skin 2 "EvisceratorMuz1.png" + FrameIndex XZWZ B 2 0 + Skin 2 "EvisceratorMuz2.png" + FrameIndex XZWZ C 2 0 + Skin 2 "EvisceratorMuz3.png" + FrameIndex XZWZ D 2 0 + Scale -24 24 24 + Skin 2 "EvisceratorMuz0.png" + FrameIndex XZWZ E 2 0 + Skin 2 "EvisceratorMuz1.png" + FrameIndex XZWZ F 2 0 + Skin 2 "EvisceratorMuz2.png" + FrameIndex XZWZ G 2 0 + Skin 2 "EvisceratorMuz3.png" + FrameIndex XZWZ H 2 0 +} + +Model "Eviscerator" +{ + Path "models" + + Model 3 "Eviscerator1st_Casing.iqm" + SurfaceSkin 3 0 "EvisceratorShell.png" + Scale -128 64 128 + AngleOffset -90 + Offset 0 2 0 + FORCECULLBACKFACES + + // Casing Ejected + FrameIndex XZWB D 3 51 + FrameIndex XZWB E 3 52 + FrameIndex XZWB F 3 53 + FrameIndex XZWB G 3 54 + FrameIndex XZWB H 3 55 + FrameIndex XZWB I 3 56 + FrameIndex XZWB J 3 57 + FrameIndex XZWB K 3 58 + FrameIndex XZWB L 3 59 + FrameIndex XZWB M 3 60 +} + +Model "Eviscerator" +{ + Path "models" + + Model 1 "Eviscerator1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Eviscerator.png" + Scale -128 64 128 + AngleOffset -90 + Offset 0 2 0 + FORCECULLBACKFACES + + ////// WIDE SPREAD BARREL + // Still / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 // Select + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + FrameIndex XZW2 Q 1 16 + FrameIndex XZW2 R 1 17 + // AltFire + FrameIndex XZW2 S 1 19 + FrameIndex XZW2 T 1 20 + FrameIndex XZW2 U 1 21 + FrameIndex XZW2 V 1 22 + FrameIndex XZW2 W 1 23 + FrameIndex XZW2 X 1 24 + FrameIndex XZW2 Y 1 25 + FrameIndex XZW2 Z 1 26 + FrameIndex XZW3 A 1 27 + FrameIndex XZW3 B 1 28 + FrameIndex XZW3 C 1 29 + FrameIndex XZW3 D 1 30 + // Fire + FrameIndex XZW3 E 1 32 + FrameIndex XZW3 F 1 33 + FrameIndex XZW3 G 1 34 + FrameIndex XZW3 H 1 35 + FrameIndex XZW3 I 1 36 + FrameIndex XZW3 J 1 37 + FrameIndex XZW3 K 1 38 + FrameIndex XZW3 L 1 39 + FrameIndex XZW3 M 1 40 + FrameIndex XZW3 N 1 41 + FrameIndex XZW3 O 1 42 + FrameIndex XZW3 P 1 43 + FrameIndex XZW3 Q 1 44 + FrameIndex XZW3 R 1 45 + // Eject + FrameIndex XZW3 S 1 47 + FrameIndex XZW3 T 1 48 + FrameIndex XZW3 U 1 49 + FrameIndex XZW3 V 1 50 + FrameIndex XZW3 W 1 51 + FrameIndex XZW3 X 1 52 + FrameIndex XZW3 Y 1 53 + FrameIndex XZW3 Z 1 54 + FrameIndex XZW4 A 1 55 + FrameIndex XZW4 B 1 56 + FrameIndex XZW4 C 1 57 + FrameIndex XZW4 D 1 58 + FrameIndex XZW4 E 1 59 + FrameIndex XZW4 F 1 60 + FrameIndex XZW4 G 1 61 + FrameIndex XZW4 H 1 62 + FrameIndex XZW4 I 1 63 + // Switch + FrameIndex XZW4 J 1 65 + FrameIndex XZW4 K 1 66 + FrameIndex XZW4 L 1 67 + FrameIndex XZW4 M 1 68 + FrameIndex XZW4 N 1 69 + FrameIndex XZW4 O 1 70 + FrameIndex XZW4 P 1 71 + FrameIndex XZW4 Q 1 72 + FrameIndex XZW4 R 1 73 + FrameIndex XZW4 S 1 74 + FrameIndex XZW4 T 1 75 + FrameIndex XZW4 U 1 76 + FrameIndex XZW4 V 1 77 + FrameIndex XZW4 W 1 78 + FrameIndex XZW4 X 1 79 + FrameIndex XZW4 Y 1 80 + ////// TIGHT SPREAD BARREL + // Still / Deselect + FrameIndex XZW4 Z 1 81 + FrameIndex XZW5 A 1 82 + FrameIndex XZW5 B 1 83 + FrameIndex XZW5 C 1 84 + FrameIndex XZW5 D 1 85 + FrameIndex XZW5 E 1 86 + FrameIndex XZW5 F 1 87 + FrameIndex XZW5 G 1 88 // Select + FrameIndex XZW5 H 1 89 + FrameIndex XZW5 I 1 90 + FrameIndex XZW5 J 1 91 + FrameIndex XZW5 K 1 92 + FrameIndex XZW5 L 1 93 + FrameIndex XZW5 M 1 94 + FrameIndex XZW5 N 1 95 + FrameIndex XZW5 O 1 96 + FrameIndex XZW5 P 1 97 + FrameIndex XZW5 Q 1 98 + // AltFire + FrameIndex XZW5 R 1 100 + FrameIndex XZW5 S 1 101 + FrameIndex XZW5 T 1 102 + FrameIndex XZW5 U 1 103 + FrameIndex XZW5 V 1 104 + FrameIndex XZW5 W 1 105 + FrameIndex XZW5 X 1 106 + FrameIndex XZW5 Y 1 107 + FrameIndex XZW5 Z 1 108 + FrameIndex XZW6 A 1 109 + FrameIndex XZW6 B 1 110 + FrameIndex XZW6 C 1 111 + // Fire + FrameIndex XZW6 D 1 113 + FrameIndex XZW6 E 1 114 + FrameIndex XZW6 F 1 115 + FrameIndex XZW6 G 1 116 + FrameIndex XZW6 H 1 117 + FrameIndex XZW6 I 1 118 + FrameIndex XZW6 J 1 119 + FrameIndex XZW6 K 1 120 + FrameIndex XZW6 L 1 121 + FrameIndex XZW6 M 1 122 + FrameIndex XZW6 N 1 123 + FrameIndex XZW6 O 1 124 + FrameIndex XZW6 P 1 125 + FrameIndex XZW6 Q 1 126 + // Eject + FrameIndex XZW6 R 1 128 + FrameIndex XZW6 S 1 129 + FrameIndex XZW6 T 1 130 + FrameIndex XZW6 U 1 131 + FrameIndex XZW6 V 1 132 + FrameIndex XZW6 W 1 133 + FrameIndex XZW6 X 1 134 + FrameIndex XZW6 Y 1 135 + FrameIndex XZW6 Z 1 136 + FrameIndex XZW7 A 1 137 + FrameIndex XZW7 B 1 138 + FrameIndex XZW7 C 1 139 + FrameIndex XZW7 D 1 140 + FrameIndex XZW7 E 1 141 + FrameIndex XZW7 F 1 142 + FrameIndex XZW7 G 1 143 + FrameIndex XZW7 H 1 144 + // Switch + FrameIndex XZW7 I 1 146 + FrameIndex XZW7 J 1 147 + FrameIndex XZW7 K 1 148 + FrameIndex XZW7 L 1 149 + FrameIndex XZW7 M 1 150 + FrameIndex XZW7 N 1 151 + FrameIndex XZW7 O 1 152 + FrameIndex XZW7 P 1 153 + FrameIndex XZW7 Q 1 154 + FrameIndex XZW7 R 1 155 + FrameIndex XZW7 S 1 156 + FrameIndex XZW7 T 1 157 + FrameIndex XZW7 U 1 158 + ////// WIDE SPREAD BARREL + // Idle + FrameIndex XZW7 V 1 160 + FrameIndex XZW7 W 1 161 + FrameIndex XZW7 X 1 162 + FrameIndex XZW7 Y 1 163 + FrameIndex XZW7 Z 1 164 + FrameIndex XZW8 A 1 165 + FrameIndex XZW8 B 1 166 + FrameIndex XZW8 C 1 167 + FrameIndex XZW8 D 1 168 + FrameIndex XZW8 E 1 169 + FrameIndex XZW8 F 1 170 + FrameIndex XZW8 G 1 171 + FrameIndex XZW8 H 1 172 + FrameIndex XZW8 I 1 173 + FrameIndex XZW8 J 1 174 + FrameIndex XZW8 K 1 175 + FrameIndex XZW8 L 1 176 + FrameIndex XZW8 M 1 177 + FrameIndex XZW8 N 1 178 + FrameIndex XZW8 O 1 179 + FrameIndex XZW8 P 1 180 + FrameIndex XZW8 Q 1 181 + FrameIndex XZW8 R 1 182 + FrameIndex XZW8 S 1 183 + FrameIndex XZW8 T 1 184 + FrameIndex XZW8 U 1 185 + FrameIndex XZW8 V 1 186 + // Melee + FrameIndex XZW8 W 1 188 + FrameIndex XZW8 X 1 189 + FrameIndex XZW8 Y 1 190 + FrameIndex XZW8 Z 1 191 + FrameIndex XZW9 A 1 192 + FrameIndex XZW9 B 1 193 + FrameIndex XZW9 C 1 194 + FrameIndex XZW9 D 1 195 + FrameIndex XZW9 E 1 196 + FrameIndex XZW9 F 1 197 + FrameIndex XZW9 G 1 198 + FrameIndex XZW9 H 1 199 + FrameIndex XZW9 I 1 200 + FrameIndex XZW9 J 1 201 + FrameIndex XZW9 K 1 202 + FrameIndex XZW9 L 1 203 + ////// TIGHT SPREAD BARREL + // Idle + FrameIndex XZW9 M 1 206 + FrameIndex XZW9 N 1 207 + FrameIndex XZW9 O 1 208 + FrameIndex XZW9 P 1 209 + FrameIndex XZW9 Q 1 210 + FrameIndex XZW9 R 1 211 + FrameIndex XZW9 S 1 212 + FrameIndex XZW9 T 1 213 + FrameIndex XZW9 U 1 214 + FrameIndex XZW9 V 1 215 + FrameIndex XZW9 W 1 216 + FrameIndex XZW9 X 1 217 + FrameIndex XZW9 Y 1 218 + FrameIndex XZW9 Z 1 219 + FrameIndex XZWA A 1 220 + FrameIndex XZWA B 1 221 + FrameIndex XZWA C 1 222 + FrameIndex XZWA D 1 223 + FrameIndex XZWA E 1 224 + FrameIndex XZWA F 1 225 + FrameIndex XZWA G 1 226 + FrameIndex XZWA H 1 227 + FrameIndex XZWA I 1 228 + FrameIndex XZWA J 1 229 + FrameIndex XZWA K 1 230 + FrameIndex XZWA L 1 231 + FrameIndex XZWA M 1 232 + // Melee + FrameIndex XZWA N 1 234 + FrameIndex XZWA O 1 235 + FrameIndex XZWA P 1 236 + FrameIndex XZWA Q 1 237 + FrameIndex XZWA R 1 238 + FrameIndex XZWA S 1 239 + FrameIndex XZWA T 1 240 + FrameIndex XZWA U 1 241 + FrameIndex XZWA V 1 242 + FrameIndex XZWA W 1 243 + FrameIndex XZWA X 1 244 + FrameIndex XZWA Y 1 245 + FrameIndex XZWA Z 1 246 + FrameIndex XZWB A 1 247 + FrameIndex XZWB B 1 248 + FrameIndex XZWB C 1 249 +} diff --git a/modeldef/weapons/explodiumgun.txt b/modeldef/weapons/explodiumgun.txt new file mode 100644 index 000000000..682b02cac --- /dev/null +++ b/modeldef/weapons/explodiumgun.txt @@ -0,0 +1,1018 @@ +Model "ExplodiumCasing" +{ + Path "models" + + Model 0 "ExplodiumCasing.iqm" + Skin 0 "ExplodiumCasing_Used.png" + Scale 5 5 5 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 0.5 + FrameIndex XZW1 B 0 0 +} + +Model "ExplodiumMag" +{ + Path "models" + + Model 0 "ExplodiumMag.iqm" + Scale 8 8 8 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + Skin 0 "ExplodiumGun_EmptyMag.png" + FrameIndex XZW1 A 0 0 + RollOffset 90 + ZOffset 0.5 + FrameIndex XZW1 B 0 0 + RollOffset -90 + FrameIndex XZW1 C 0 0 +} + +Model "ExplodiumMagProj" +{ + Path "models" + + Model 0 "ExplodiumMag.iqm" + Skin 0 "ExplodiumGun.png" + Scale 8 8 8 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 1 +} +Model "ExplodiumMagAttach" +{ + Path "models" + + Model 0 "ExplodiumMag.iqm" + Skin 0 "ExplodiumGun.png" + Scale 8 8 8 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + AngleOffset 90 + + FrameIndex XZW1 A 0 1 + RollOffset 90 + FrameIndex XZW1 B 0 1 + RollOffset -90 + FrameIndex XZW1 C 0 1 +} + +Model "ExplodiumGun" +{ + Path "models" + + Model 0 "ExplodiumGunPickup.iqm" + Skin 0 "ExplodiumGun.png" + Scale 12 12 12 + ZOffset 16 + AngleOffset 180 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "ExplodiumGun" +{ + Path "models/extra" + + Model 2 "Flat.obj" + Scale -20 20 20 + Offset 16 -60 -12 + PitchOffset 90 + + Skin 2 "ExploMuz0.png" + FrameIndex XZWZ A 2 0 + Skin 2 "ExploMuz1.png" + FrameIndex XZWZ B 2 0 + Skin 2 "ExploMuz2.png" + FrameIndex XZWZ C 2 0 + Skin 2 "ExploMuz3.png" + FrameIndex XZWZ D 2 0 + Skin 2 "ExploMuz4.png" + FrameIndex XZWZ E 2 0 + Skin 2 "ExploMuz5.png" + FrameIndex XZWZ F 2 0 + Skin 2 "ExploMuz6.png" + FrameIndex XZWZ G 2 0 + Skin 2 "ExploMuz7.png" + FrameIndex XZWZ H 2 0 + Skin 2 "ExploMuz8.png" + FrameIndex XZWZ I 2 0 + Skin 2 "ExploMuz9.png" + FrameIndex XZWZ J 2 0 +} + +Model "ExplodiumGun" +{ + Path "models" + + Model 3 "ExplodiumGun1st_Casing.iqm" + + Scale -128 64 128 + AngleOffset -90 + Offset 0 0 -2 + FORCECULLBACKFACES + + // Casing Drop + SurfaceSkin 3 0 "ExplodiumCasing_Used.png" + FrameIndex XZWA A 3 14 + FrameIndex XZWA B 3 15 + FrameIndex XZWA C 3 16 + FrameIndex XZWA D 3 17 + FrameIndex XZWA E 3 18 + FrameIndex XZWA F 3 19 + FrameIndex XZWA G 3 20 + FrameIndex XZWA H 3 21 + FrameIndex XZWA I 3 22 + FrameIndex XZWA J 3 23 + // Casing Check + SurfaceSkin 3 0 "ExplodiumCasing.png" + FrameIndex XZWC Q 3 157 + FrameIndex XZWC R 3 158 + FrameIndex XZWC S 3 159 + FrameIndex XZWC T 3 160 + FrameIndex XZWC U 3 161 + FrameIndex XZWC V 3 162 + FrameIndex XZWC W 3 163 + FrameIndex XZWC X 3 164 + FrameIndex XZWC Y 3 165 + FrameIndex XZWC Z 3 166 + FrameIndex XZWD A 3 167 + FrameIndex XZWD B 3 168 + FrameIndex XZWD C 3 169 + FrameIndex XZWD D 3 170 + FrameIndex XZWD E 3 171 + FrameIndex XZWD F 3 172 + FrameIndex XZWD G 3 173 + FrameIndex XZWD H 3 174 + FrameIndex XZWD I 3 175 +} + +Model "ExplodiumGun" +{ + Path "models" + + Model 1 "ExplodiumGun1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "ExplodiumGun.png" + SurfaceSkin 1 4 "ExplodiumGun.png" + + Scale -128 64 128 + AngleOffset -90 + Offset 0 0 -2 + FORCECULLBACKFACES + + // Still + FrameIndex XZW2 A 1 0 + // Deselect + FrameIndex XZWA T 1 1 + FrameIndex XZWA U 1 2 + FrameIndex XZWA V 1 3 + FrameIndex XZWA W 1 4 + // Select + FrameIndex XZW2 B 1 5 + FrameIndex XZW2 C 1 6 + FrameIndex XZW2 D 1 7 + FrameIndex XZW2 E 1 8 + FrameIndex XZW2 F 1 9 + FrameIndex XZW2 G 1 10 + FrameIndex XZW2 H 1 11 + // Fire + FrameIndex XZW2 I 1 13 + FrameIndex XZW2 J 1 14 + FrameIndex XZW2 K 1 15 + FrameIndex XZW2 L 1 16 + FrameIndex XZW2 M 1 17 + FrameIndex XZW2 N 1 18 + FrameIndex XZW2 O 1 19 + FrameIndex XZW2 P 1 20 + FrameIndex XZW2 Q 1 21 + // unused + FrameIndex XZW2 R 1 22 + FrameIndex XZW2 S 1 23 + // Reload (Part 1) + FrameIndex XZW2 T 1 25 + FrameIndex XZW2 U 1 26 + FrameIndex XZW2 V 1 27 + FrameIndex XZW2 W 1 28 + FrameIndex XZW2 X 1 29 + FrameIndex XZW2 Y 1 30 + FrameIndex XZW2 Z 1 31 + FrameIndex XZW3 A 1 32 + FrameIndex XZW3 B 1 33 + FrameIndex XZW3 C 1 34 + FrameIndex XZW3 D 1 35 + FrameIndex XZW3 E 1 36 + FrameIndex XZW3 F 1 37 + FrameIndex XZW3 G 1 38 + FrameIndex XZW3 H 1 39 + FrameIndex XZW3 I 1 40 + // Reload (Part 1 w/ Empty Mag) + SurfaceSkin 1 4 "ExplodiumGun_EmptyMag.png" // empty mag + FrameIndex XZW3 J 1 25 + FrameIndex XZW3 K 1 26 + FrameIndex XZW3 L 1 27 + FrameIndex XZW3 M 1 28 + FrameIndex XZW3 N 1 29 + FrameIndex XZW3 O 1 30 + FrameIndex XZW3 P 1 31 + FrameIndex XZW3 Q 1 32 + FrameIndex XZW3 R 1 33 + FrameIndex XZW3 S 1 34 + FrameIndex XZW3 T 1 35 + FrameIndex XZW3 U 1 36 + FrameIndex XZW3 V 1 37 + FrameIndex XZW3 W 1 38 + FrameIndex XZW3 X 1 39 + FrameIndex XZW3 Y 1 40 + // Reload (Part 2) + SurfaceSkin 1 4 "" // hide mag + SurfaceSkin 1 5 "ExplodiumGun.png" // show new mag + FrameIndex XZW3 Z 1 41 + FrameIndex XZW4 A 1 42 + FrameIndex XZW4 B 1 43 + FrameIndex XZW4 C 1 44 + FrameIndex XZW4 D 1 45 + FrameIndex XZW4 E 1 46 + FrameIndex XZW4 F 1 47 + FrameIndex XZW4 G 1 48 + SurfaceSkin 1 5 "" // hide new mag + FrameIndex XZW4 H 1 49 + FrameIndex XZW4 I 1 50 + FrameIndex XZW4 J 1 51 + SurfaceSkin 1 4 "ExplodiumGun.png" // show mag + FrameIndex XZW4 K 1 52 + FrameIndex XZW4 L 1 53 + FrameIndex XZW4 M 1 54 + FrameIndex XZW4 N 1 55 + FrameIndex XZW4 O 1 56 + FrameIndex XZW4 P 1 57 + FrameIndex XZW4 Q 1 58 + FrameIndex XZW4 R 1 59 + FrameIndex XZW4 S 1 60 + FrameIndex XZW4 T 1 61 + FrameIndex XZW4 U 1 62 + FrameIndex XZW4 V 1 63 + // Slide + FrameIndex XZW4 W 1 65 + FrameIndex XZW4 X 1 66 + FrameIndex XZW4 Y 1 67 + FrameIndex XZW4 Z 1 68 + FrameIndex XZW5 A 1 69 + FrameIndex XZW5 B 1 70 + FrameIndex XZW5 C 1 71 + FrameIndex XZW5 D 1 72 + FrameIndex XZW5 E 1 73 + FrameIndex XZW5 F 1 74 + FrameIndex XZW5 G 1 75 + FrameIndex XZW5 H 1 76 + FrameIndex XZW5 I 1 77 + FrameIndex XZW5 J 1 78 + FrameIndex XZW5 K 1 79 + FrameIndex XZW5 L 1 80 + FrameIndex XZW5 M 1 81 + // "Explosive" Reload + FrameIndex XZW5 N 1 83 + FrameIndex XZW5 O 1 84 + FrameIndex XZW5 P 1 85 + FrameIndex XZW5 Q 1 86 + FrameIndex XZW5 R 1 87 + FrameIndex XZW5 S 1 88 + FrameIndex XZW5 T 1 89 + FrameIndex XZW5 U 1 90 + FrameIndex XZW5 V 1 91 + FrameIndex XZW5 W 1 92 + FrameIndex XZW5 X 1 93 + FrameIndex XZW5 Y 1 94 + FrameIndex XZW5 Z 1 95 + FrameIndex XZW6 A 1 96 + FrameIndex XZW6 B 1 97 + FrameIndex XZW6 C 1 98 + FrameIndex XZW6 D 1 99 + FrameIndex XZW6 E 1 100 + FrameIndex XZW6 F 1 101 + FrameIndex XZW6 G 1 102 + FrameIndex XZW6 H 1 103 + FrameIndex XZW6 I 1 104 + SurfaceSkin 1 4 "" // hide mag + SurfaceSkin 1 5 "ExplodiumGun.png" // show new mag + FrameIndex XZW6 J 1 105 + FrameIndex XZW6 K 1 106 + FrameIndex XZW6 L 1 107 + FrameIndex XZW6 M 1 108 + FrameIndex XZW6 N 1 109 + FrameIndex XZW6 O 1 110 + FrameIndex XZW6 P 1 111 + FrameIndex XZW6 Q 1 112 + FrameIndex XZW6 R 1 113 + FrameIndex XZW6 S 1 114 + SurfaceSkin 1 5 "" // hide new mag + FrameIndex XZW6 T 1 115 + FrameIndex XZW6 U 1 116 + FrameIndex XZW6 V 1 117 + FrameIndex XZW6 W 1 118 + FrameIndex XZW6 X 1 119 + FrameIndex XZW6 Y 1 120 + FrameIndex XZW6 Z 1 121 + SurfaceSkin 1 4 "ExplodiumGun.png" // show mag + // Check Bullet + FrameIndex XZW7 A 1 157 + FrameIndex XZW7 B 1 158 + FrameIndex XZW7 C 1 159 + FrameIndex XZW7 D 1 160 + FrameIndex XZW7 E 1 161 + FrameIndex XZW7 F 1 162 + FrameIndex XZW7 G 1 163 + FrameIndex XZW7 H 1 164 + FrameIndex XZW7 I 1 165 + FrameIndex XZW7 J 1 166 + FrameIndex XZW7 K 1 167 + FrameIndex XZW7 L 1 168 + FrameIndex XZW7 M 1 169 + FrameIndex XZW7 N 1 170 + FrameIndex XZW7 O 1 171 + FrameIndex XZW7 P 1 172 + FrameIndex XZW7 Q 1 173 + FrameIndex XZW7 R 1 174 + FrameIndex XZW7 S 1 175 + // Melee + FrameIndex XZW7 T 1 177 + FrameIndex XZW7 U 1 178 + FrameIndex XZW7 V 1 179 + FrameIndex XZW7 W 1 180 + FrameIndex XZW7 X 1 181 + FrameIndex XZW7 Y 1 182 + FrameIndex XZW7 Z 1 183 + FrameIndex XZW8 A 1 184 + FrameIndex XZW8 B 1 185 + FrameIndex XZW8 C 1 186 + FrameIndex XZW8 D 1 187 + FrameIndex XZW8 E 1 188 + FrameIndex XZW8 F 1 189 + // Check Gun + FrameIndex XZW8 G 1 192 + FrameIndex XZW8 H 1 193 + FrameIndex XZW8 I 1 194 + FrameIndex XZW8 J 1 195 + FrameIndex XZW8 K 1 196 + FrameIndex XZW8 L 1 197 + FrameIndex XZW8 M 1 198 + FrameIndex XZW8 N 1 199 + FrameIndex XZW8 O 1 200 + FrameIndex XZW8 P 1 201 + FrameIndex XZW8 Q 1 202 + FrameIndex XZW8 R 1 203 + FrameIndex XZW8 S 1 204 + FrameIndex XZW8 T 1 205 + FrameIndex XZW8 U 1 206 + FrameIndex XZW8 V 1 207 + FrameIndex XZW8 W 1 208 + FrameIndex XZW8 X 1 209 + FrameIndex XZW8 Y 1 210 + FrameIndex XZW8 Z 1 211 + // Spin Gun + FrameIndex XZW9 A 1 213 + FrameIndex XZW9 B 1 214 + FrameIndex XZW9 C 1 215 + FrameIndex XZW9 D 1 216 + FrameIndex XZW9 E 1 217 + FrameIndex XZW9 F 1 218 + FrameIndex XZW9 G 1 219 + FrameIndex XZW9 H 1 220 + FrameIndex XZW9 I 1 221 + FrameIndex XZW9 J 1 222 + FrameIndex XZW9 K 1 223 + FrameIndex XZW9 L 1 224 + FrameIndex XZW9 M 1 225 + FrameIndex XZW9 N 1 226 + FrameIndex XZW9 O 1 227 + FrameIndex XZW9 P 1 228 + FrameIndex XZW9 Q 1 229 + FrameIndex XZW9 R 1 230 + FrameIndex XZW9 S 1 231 + FrameIndex XZW9 T 1 232 + FrameIndex XZW9 U 1 233 + FrameIndex XZW9 V 1 234 + FrameIndex XZW9 W 1 235 + /// LAST ROUND + // Fire + FrameIndex XZWA K 1 237 + FrameIndex XZWA L 1 238 + FrameIndex XZWA M 1 239 + FrameIndex XZWA N 1 240 + FrameIndex XZWA O 1 241 + FrameIndex XZWA P 1 242 + FrameIndex XZWA Q 1 243 + FrameIndex XZWA R 1 244 + FrameIndex XZWA S 1 245 + // Still + FrameIndex XZW9 X 1 248 + // Reload (Part 1) + SurfaceSkin 1 4 "ExplodiumGun_EmptyMag.png" // empty mag + FrameIndex XZW9 Z 1 249 + FrameIndex XZWA X 1 250 + FrameIndex XZWA Y 1 251 + FrameIndex XZWA Z 1 252 + FrameIndex XZWB A 1 253 + FrameIndex XZWB B 1 254 + FrameIndex XZWB C 1 255 + FrameIndex XZWB D 1 256 + FrameIndex XZWB E 1 257 + FrameIndex XZWB F 1 258 + FrameIndex XZWB G 1 259 + FrameIndex XZWB H 1 260 + FrameIndex XZWB I 1 261 + FrameIndex XZWB J 1 262 + FrameIndex XZWB K 1 263 + FrameIndex XZWB L 1 264 + // Reload (Part 2) + SurfaceSkin 1 4 "" // hide mag + SurfaceSkin 1 5 "ExplodiumGun.png" // show new mag + FrameIndex XZWB M 1 265 + FrameIndex XZWB N 1 266 + FrameIndex XZWB O 1 267 + FrameIndex XZWB P 1 268 + FrameIndex XZWB Q 1 269 + FrameIndex XZWB R 1 270 + FrameIndex XZWB S 1 271 + FrameIndex XZWB T 1 272 + SurfaceSkin 1 5 "" // hide new mag + FrameIndex XZWB U 1 273 + FrameIndex XZWB V 1 274 + FrameIndex XZWB W 1 275 + SurfaceSkin 1 4 "ExplodiumGun.png" // show mag + FrameIndex XZWB X 1 276 + FrameIndex XZWB Y 1 277 + FrameIndex XZWB Z 1 278 + FrameIndex XZWC A 1 279 + FrameIndex XZWC B 1 280 + FrameIndex XZWC C 1 281 + FrameIndex XZWC D 1 282 + FrameIndex XZWC E 1 283 + FrameIndex XZWC F 1 284 + FrameIndex XZWC G 1 285 + FrameIndex XZWC H 1 286 + FrameIndex XZWC I 1 287 + FrameIndex XZWC J 1 288 + FrameIndex XZWC K 1 289 + FrameIndex XZWC L 1 290 + FrameIndex XZWC M 1 291 + FrameIndex XZWC N 1 292 + FrameIndex XZWC O 1 293 + FrameIndex XZWC P 1 294 +} + +Model "DualExplodiumGun" +{ + Path "models/extra" + + Model 2 "Flat.obj" + Scale -20 20 20 + PitchOffset 90 + + // Right + Offset 28 -60 -12 + Skin 2 "ExploMuz0.png" + FrameIndex XZWZ A 2 0 + Skin 2 "ExploMuz1.png" + FrameIndex XZWZ B 2 0 + Skin 2 "ExploMuz2.png" + FrameIndex XZWZ C 2 0 + Skin 2 "ExploMuz3.png" + FrameIndex XZWZ D 2 0 + Skin 2 "ExploMuz4.png" + FrameIndex XZWZ E 2 0 + Skin 2 "ExploMuz5.png" + FrameIndex XZWZ F 2 0 + Skin 2 "ExploMuz6.png" + FrameIndex XZWZ G 2 0 + Skin 2 "ExploMuz7.png" + FrameIndex XZWZ H 2 0 + Skin 2 "ExploMuz8.png" + FrameIndex XZWZ I 2 0 + Skin 2 "ExploMuz9.png" + FrameIndex XZWZ J 2 0 + + // Left + Offset -28 -60 -12 + Skin 2 "ExploMuz0.png" + FrameIndex XZWZ K 2 0 + Skin 2 "ExploMuz1.png" + FrameIndex XZWZ L 2 0 + Skin 2 "ExploMuz2.png" + FrameIndex XZWZ M 2 0 + Skin 2 "ExploMuz3.png" + FrameIndex XZWZ N 2 0 + Skin 2 "ExploMuz4.png" + FrameIndex XZWZ O 2 0 + Skin 2 "ExploMuz5.png" + FrameIndex XZWZ P 2 0 + Skin 2 "ExploMuz6.png" + FrameIndex XZWZ Q 2 0 + Skin 2 "ExploMuz7.png" + FrameIndex XZWZ R 2 0 + Skin 2 "ExploMuz8.png" + FrameIndex XZWZ S 2 0 + Skin 2 "ExploMuz9.png" + FrameIndex XZWZ T 2 0 +} + +Model "DualExplodiumGun" +{ + Path "models" + + Model 2 "ExplodiumGun1stL_Casing.iqm" + SurfaceSkin 2 0 "ExplodiumCasing_Used.png" + + Scale -128 64 128 + AngleOffset -90 + Offset -3 0 -2 + // normals are currently screwed up, keep this commented out until I + // re-do the model in 1.4 + //FORCECULLBACKFACES + + // Casings + // LEFT + FrameIndex XZWI A 2 14 + FrameIndex XZWI B 2 15 + FrameIndex XZWI C 2 16 + FrameIndex XZWI D 2 17 + FrameIndex XZWI E 2 18 + FrameIndex XZWI F 2 19 + FrameIndex XZWI G 2 20 + FrameIndex XZWI H 2 21 + FrameIndex XZWI I 2 22 + FrameIndex XZWI J 2 23 +} + +Model "DualExplodiumGun" +{ + Path "models" + + Model 2 "ExplodiumGun1st_Casing.iqm" + SurfaceSkin 2 0 "ExplodiumCasing_Used.png" + + Scale -128 64 128 + AngleOffset -90 + Offset 3 0 -2 + FORCECULLBACKFACES + + // Casings + // RIGHT + FrameIndex XZWA A 2 14 + FrameIndex XZWA B 2 15 + FrameIndex XZWA C 2 16 + FrameIndex XZWA D 2 17 + FrameIndex XZWA E 2 18 + FrameIndex XZWA F 2 19 + FrameIndex XZWA G 2 20 + FrameIndex XZWA H 2 21 + FrameIndex XZWA I 2 22 + FrameIndex XZWA J 2 23 +} + +Model "DualExplodiumGun" +{ + Path "models" + + Model 3 "ExplodiumGun1stL.iqm" + SurfaceSkin 3 0 "DemoTags.png" + SurfaceSkin 3 1 "DemoArms.png" + SurfaceSkin 3 2 "DemoSoft.png" + SurfaceSkin 3 3 "ExplodiumGun.png" + SurfaceSkin 3 4 "ExplodiumGun.png" + + Scale -128 64 128 + AngleOffset -90 + Offset -3 0 -2 + // normals are currently screwed up, keep this commented out until I + // re-do the model in 1.4 + //FORCECULLBACKFACES + + //// LEFT + // Still + FrameIndex XZWB A 3 0 + // Deselect + FrameIndex XZWA P 3 1 + FrameIndex XZWA Q 3 2 + FrameIndex XZWA R 3 3 + FrameIndex XZWA S 3 4 + // Select + FrameIndex XZWB B 3 5 + FrameIndex XZWB C 3 6 + FrameIndex XZWB D 3 7 + FrameIndex XZWB E 3 8 + FrameIndex XZWB F 3 9 + FrameIndex XZWB G 3 10 + FrameIndex XZWB H 3 11 + // Fire + FrameIndex XZWB I 3 13 + FrameIndex XZWB J 3 14 + FrameIndex XZWB K 3 15 + FrameIndex XZWB L 3 16 + FrameIndex XZWB M 3 17 + FrameIndex XZWB N 3 18 + FrameIndex XZWB O 3 19 + FrameIndex XZWB P 3 20 + FrameIndex XZWB Q 3 21 + // unused + FrameIndex XZWB R 3 22 + FrameIndex XZWB S 3 23 + // Reload (Part 1) + FrameIndex XZWB T 3 310 + FrameIndex XZWB U 3 311 + FrameIndex XZWB V 3 312 + FrameIndex XZWB W 3 313 + FrameIndex XZWB X 3 314 + FrameIndex XZWB Y 3 315 + FrameIndex XZWB Z 3 316 + FrameIndex XZWC A 3 317 + FrameIndex XZWC B 3 318 + FrameIndex XZWC C 3 319 + FrameIndex XZWC D 3 320 + FrameIndex XZWC E 3 321 + FrameIndex XZWC F 3 322 + FrameIndex XZWC G 3 323 + FrameIndex XZWC H 3 324 + // Reload (Part 1 w/ Empty Mag) + SurfaceSkin 3 4 "ExplodiumGun_EmptyMag.png" + FrameIndex XZWC I 3 310 + FrameIndex XZWC J 3 311 + FrameIndex XZWC K 3 312 + FrameIndex XZWC L 3 313 + FrameIndex XZWC M 3 314 + FrameIndex XZWC N 3 315 + FrameIndex XZWC O 3 316 + FrameIndex XZWC P 3 317 + FrameIndex XZWC Q 3 318 + FrameIndex XZWC R 3 319 + FrameIndex XZWC S 3 320 + FrameIndex XZWC T 3 321 + FrameIndex XZWC U 3 322 + FrameIndex XZWC V 3 323 + FrameIndex XZWC W 3 324 + // Reload (Part 2) + SurfaceSkin 3 4 "ExplodiumGun.png" + FrameIndex XZWC X 3 325 + FrameIndex XZWC Y 3 326 + FrameIndex XZWC Z 3 327 + FrameIndex XZWD A 3 328 + FrameIndex XZWD B 3 329 + FrameIndex XZWD C 3 330 + FrameIndex XZWD D 3 331 + FrameIndex XZWD E 3 332 + FrameIndex XZWD F 3 333 + FrameIndex XZWD G 3 334 + FrameIndex XZWD H 3 335 + FrameIndex XZWD I 3 336 + FrameIndex XZWD J 3 337 + FrameIndex XZWD K 3 338 + FrameIndex XZWD L 3 339 + FrameIndex XZWD M 3 340 + FrameIndex XZWD N 3 341 + FrameIndex XZWD O 3 342 + FrameIndex XZWD P 3 343 + // Slide + FrameIndex XZWD W 3 65 + FrameIndex XZWD X 3 66 + FrameIndex XZWD Y 3 67 + FrameIndex XZWD Z 3 68 + FrameIndex XZWE A 3 69 + FrameIndex XZWE B 3 70 + FrameIndex XZWE C 3 71 + FrameIndex XZWE D 3 72 + FrameIndex XZWE E 3 73 + FrameIndex XZWE F 3 74 + FrameIndex XZWE G 3 75 + FrameIndex XZWE H 3 76 + FrameIndex XZWE I 3 77 + FrameIndex XZWE J 3 78 + FrameIndex XZWE K 3 79 + FrameIndex XZWE L 3 80 + FrameIndex XZWE M 3 81 + // Melee + FrameIndex XZWG T 3 177 + FrameIndex XZWG U 3 178 + FrameIndex XZWG V 3 179 + FrameIndex XZWG W 3 180 + FrameIndex XZWG X 3 181 + FrameIndex XZWG Y 3 182 + FrameIndex XZWG Z 3 183 + FrameIndex XZWH A 3 184 + FrameIndex XZWH B 3 185 + FrameIndex XZWH C 3 186 + FrameIndex XZWH D 3 187 + FrameIndex XZWH E 3 188 + FrameIndex XZWH F 3 189 + // Spin Gun + FrameIndex XZWH A 3 213 + FrameIndex XZWH B 3 214 + FrameIndex XZWH C 3 215 + FrameIndex XZWH D 3 216 + FrameIndex XZWH E 3 217 + FrameIndex XZWH F 3 218 + FrameIndex XZWH G 3 219 + FrameIndex XZWH H 3 220 + FrameIndex XZWH I 3 221 + FrameIndex XZWH J 3 222 + FrameIndex XZWH K 3 223 + FrameIndex XZWH L 3 224 + FrameIndex XZWH M 3 225 + FrameIndex XZWH N 3 226 + FrameIndex XZWH O 3 227 + FrameIndex XZWH P 3 228 + FrameIndex XZWH Q 3 229 + FrameIndex XZWH R 3 230 + FrameIndex XZWH S 3 231 + FrameIndex XZWH T 3 232 + FrameIndex XZWH U 3 233 + FrameIndex XZWH V 3 234 + FrameIndex XZWH W 3 235 + /// LAST ROUND + // Fire + FrameIndex XZWK Q 3 237 + FrameIndex XZWK R 3 238 + FrameIndex XZWK S 3 239 + FrameIndex XZWK T 3 240 + FrameIndex XZWK U 3 241 + FrameIndex XZWK V 3 242 + FrameIndex XZWK W 3 243 + FrameIndex XZWK X 3 244 + FrameIndex XZWK Y 3 245 + // Still + FrameIndex XZWK Z 3 248 + // Reload (Part 1) + SurfaceSkin 3 4 "ExplodiumGun_EmptyMag.png" + FrameIndex XZWL A 3 346 + FrameIndex XZWL B 3 347 + FrameIndex XZWL C 3 348 + FrameIndex XZWL D 3 349 + FrameIndex XZWL E 3 350 + FrameIndex XZWL F 3 351 + FrameIndex XZWL G 3 352 + FrameIndex XZWL H 3 353 + FrameIndex XZWL I 3 354 + FrameIndex XZWL J 3 355 + FrameIndex XZWL K 3 356 + FrameIndex XZWL L 3 357 + FrameIndex XZWL M 3 358 + FrameIndex XZWL N 3 359 + FrameIndex XZWL O 3 360 + // Reload (Part 2) + SurfaceSkin 3 4 "ExplodiumGun.png" + FrameIndex XZWL P 3 361 + FrameIndex XZWL Q 3 362 + FrameIndex XZWL R 3 363 + FrameIndex XZWL S 3 364 + FrameIndex XZWL T 3 365 + FrameIndex XZWL U 3 366 + FrameIndex XZWL V 3 367 + FrameIndex XZWL W 3 368 + FrameIndex XZWL X 3 369 + FrameIndex XZWL Y 3 370 + FrameIndex XZWL Z 3 371 + FrameIndex XZWM A 3 372 + FrameIndex XZWM B 3 373 + FrameIndex XZWM C 3 374 + FrameIndex XZWM D 3 375 + FrameIndex XZWM E 3 376 + FrameIndex XZWM F 3 377 + FrameIndex XZWM G 3 378 + FrameIndex XZWM H 3 379 +} + +Model "DualExplodiumGun" +{ + Path "models" + + Model 1 "ExplodiumGun1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "ExplodiumGun.png" + SurfaceSkin 1 4 "ExplodiumGun.png" + + Scale -128 64 128 + AngleOffset -90 + Offset 3 0 -2 + FORCECULLBACKFACES + + //// RIGHT + // Still + FrameIndex XZW2 A 1 0 + // Deselect + FrameIndex XZWA T 1 1 + FrameIndex XZWA U 1 2 + FrameIndex XZWA V 1 3 + FrameIndex XZWA W 1 4 + // Select + FrameIndex XZW2 B 1 5 + FrameIndex XZW2 C 1 6 + FrameIndex XZW2 D 1 7 + FrameIndex XZW2 E 1 8 + FrameIndex XZW2 F 1 9 + FrameIndex XZW2 G 1 10 + FrameIndex XZW2 H 1 11 + // Fire + FrameIndex XZW2 I 1 13 + FrameIndex XZW2 J 1 14 + FrameIndex XZW2 K 1 15 + FrameIndex XZW2 L 1 16 + FrameIndex XZW2 M 1 17 + FrameIndex XZW2 N 1 18 + FrameIndex XZW2 O 1 19 + FrameIndex XZW2 P 1 20 + FrameIndex XZW2 Q 1 21 + // unused + FrameIndex XZW2 R 1 22 + FrameIndex XZW2 S 1 23 + // Reload (Part 1) + FrameIndex XZW2 T 1 310 + FrameIndex XZW2 U 1 311 + FrameIndex XZW2 V 1 312 + FrameIndex XZW2 W 1 313 + FrameIndex XZW2 X 1 314 + FrameIndex XZW2 Y 1 315 + FrameIndex XZW2 Z 1 316 + FrameIndex XZW3 A 1 317 + FrameIndex XZW3 B 1 318 + FrameIndex XZW3 C 1 319 + FrameIndex XZW3 D 1 320 + FrameIndex XZW3 E 1 321 + FrameIndex XZW3 F 1 322 + FrameIndex XZW3 G 1 323 + FrameIndex XZW3 H 1 324 + // Reload (Part 1 w/ Empty Mag) + SurfaceSkin 1 4 "ExplodiumGun_EmptyMag.png" + FrameIndex XZW3 I 1 310 + FrameIndex XZW3 J 1 311 + FrameIndex XZW3 K 1 312 + FrameIndex XZW3 L 1 313 + FrameIndex XZW3 M 1 314 + FrameIndex XZW3 N 1 315 + FrameIndex XZW3 O 1 316 + FrameIndex XZW3 P 1 317 + FrameIndex XZW3 Q 1 318 + FrameIndex XZW3 R 1 319 + FrameIndex XZW3 S 1 320 + FrameIndex XZW3 T 1 321 + FrameIndex XZW3 U 1 322 + FrameIndex XZW3 V 1 323 + FrameIndex XZW3 W 1 324 + // Reload (Part 2) + SurfaceSkin 1 4 "ExplodiumGun.png" + FrameIndex XZW3 X 1 325 + FrameIndex XZW3 Y 1 326 + FrameIndex XZW3 Z 1 327 + FrameIndex XZW4 A 1 328 + FrameIndex XZW4 B 1 329 + FrameIndex XZW4 C 1 330 + FrameIndex XZW4 D 1 331 + FrameIndex XZW4 E 1 332 + FrameIndex XZW4 F 1 333 + FrameIndex XZW4 G 1 334 + FrameIndex XZW4 H 1 335 + FrameIndex XZW4 I 1 336 + FrameIndex XZW4 J 1 337 + FrameIndex XZW4 K 1 338 + FrameIndex XZW4 L 1 339 + FrameIndex XZW4 M 1 340 + FrameIndex XZW4 N 1 341 + FrameIndex XZW4 O 1 342 + FrameIndex XZW4 P 1 343 + // Slide + FrameIndex XZW4 W 1 65 + FrameIndex XZW4 X 1 66 + FrameIndex XZW4 Y 1 67 + FrameIndex XZW4 Z 1 68 + FrameIndex XZW5 A 1 69 + FrameIndex XZW5 B 1 70 + FrameIndex XZW5 C 1 71 + FrameIndex XZW5 D 1 72 + FrameIndex XZW5 E 1 73 + FrameIndex XZW5 F 1 74 + FrameIndex XZW5 G 1 75 + FrameIndex XZW5 H 1 76 + FrameIndex XZW5 I 1 77 + FrameIndex XZW5 J 1 78 + FrameIndex XZW5 K 1 79 + FrameIndex XZW5 L 1 80 + FrameIndex XZW5 M 1 81 + // Melee + FrameIndex XZW7 T 1 177 + FrameIndex XZW7 U 1 178 + FrameIndex XZW7 V 1 179 + Offset 0 0 -2 + FrameIndex XZW7 W 1 180 + FrameIndex XZW7 X 1 181 + FrameIndex XZW7 Y 1 182 + FrameIndex XZW7 Z 1 183 + FrameIndex XZW8 A 1 184 + FrameIndex XZW8 B 1 185 + FrameIndex XZW8 C 1 186 + FrameIndex XZW8 D 1 187 + FrameIndex XZW8 E 1 188 + FrameIndex XZW8 F 1 189 + Offset 3 0 -2 + // Spin Gun + FrameIndex XZW9 A 1 213 + FrameIndex XZW9 B 1 214 + FrameIndex XZW9 C 1 215 + FrameIndex XZW9 D 1 216 + FrameIndex XZW9 E 1 217 + FrameIndex XZW9 F 1 218 + FrameIndex XZW9 G 1 219 + FrameIndex XZW9 H 1 220 + FrameIndex XZW9 I 1 221 + FrameIndex XZW9 J 1 222 + FrameIndex XZW9 K 1 223 + FrameIndex XZW9 L 1 224 + FrameIndex XZW9 M 1 225 + FrameIndex XZW9 N 1 226 + FrameIndex XZW9 O 1 227 + FrameIndex XZW9 P 1 228 + FrameIndex XZW9 Q 1 229 + FrameIndex XZW9 R 1 230 + FrameIndex XZW9 S 1 231 + FrameIndex XZW9 T 1 232 + FrameIndex XZW9 U 1 233 + FrameIndex XZW9 V 1 234 + FrameIndex XZW9 W 1 235 + /// LAST ROUND + // Fire + FrameIndex XZWI K 1 237 + FrameIndex XZWI L 1 238 + FrameIndex XZWI M 1 239 + FrameIndex XZWI N 1 240 + FrameIndex XZWI O 1 241 + FrameIndex XZWI P 1 242 + FrameIndex XZWI Q 1 243 + FrameIndex XZWI R 1 244 + FrameIndex XZWI S 1 245 + // Still + FrameIndex XZWI V 1 248 + // Reload (Part 1) + SurfaceSkin 1 4 "ExplodiumGun_EmptyMag.png" + FrameIndex XZWI W 1 346 + FrameIndex XZWI X 1 347 + FrameIndex XZWI Y 1 348 + FrameIndex XZWI Z 1 349 + FrameIndex XZWJ A 1 350 + FrameIndex XZWJ B 1 351 + FrameIndex XZWJ C 1 352 + FrameIndex XZWJ D 1 353 + FrameIndex XZWJ E 1 354 + FrameIndex XZWJ F 1 355 + FrameIndex XZWJ G 1 356 + FrameIndex XZWJ H 1 357 + FrameIndex XZWJ I 1 358 + FrameIndex XZWJ J 1 359 + FrameIndex XZWJ K 1 360 + // Reload (Part 2) + FrameIndex XZWJ L 1 361 + FrameIndex XZWJ M 1 362 + FrameIndex XZWJ N 1 363 + FrameIndex XZWJ O 1 364 + FrameIndex XZWJ P 1 365 + FrameIndex XZWJ Q 1 366 + FrameIndex XZWJ R 1 367 + FrameIndex XZWJ S 1 368 + FrameIndex XZWJ T 1 369 + FrameIndex XZWJ U 1 370 + FrameIndex XZWJ V 1 371 + FrameIndex XZWJ W 1 372 + FrameIndex XZWJ X 1 373 + FrameIndex XZWJ Y 1 374 + FrameIndex XZWJ Z 1 375 + FrameIndex XZWK A 1 376 + FrameIndex XZWK B 1 377 + FrameIndex XZWK C 1 378 + FrameIndex XZWK D 1 379 +} + +Model "SWWMDualWeaponGiver" +{ + Path "models" + + Model 0 "ExplodiumGunPickupDual.iqm" + Skin 0 "ExplodiumGun.png" + Scale 12 12 12 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} diff --git a/modeldef/weapons/hellblazer.txt b/modeldef/weapons/hellblazer.txt new file mode 100644 index 000000000..575ffa5e1 --- /dev/null +++ b/modeldef/weapons/hellblazer.txt @@ -0,0 +1,367 @@ +Model "HellblazerMissile" +{ + Path "models" + + Model 0 "HellblazerProj.iqm" + Skin 0 "HellblazerMissile.png" + Scale 25 25 25 + USEACTORPITCH + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} +Model "HellblazerMissile2" +{ + Path "models" + + Model 0 "HellblazerProj.iqm" + Skin 0 "HellblazerMissile.png" + Scale 25 25 25 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "Hellblazer" +{ + Path "models" + + Model 0 "HellblazerPickup.iqm" + SurfaceSkin 0 0 "Hellblazer.png" + SurfaceSkin 0 1 "HellblazerAmmo.png" + Scale 28 28 28 + ZOffset 20 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "HellblazerX" +{ + Path "models" + + Model 0 "HellblazerPickupX.iqm" + Skin 0 "Hellblazer.png" + Scale 28 28 28 + ZOffset 20 + DONTCULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +// translucent part +Model "Hellblazer" +{ + Path "models" + + Model 2 "Hellblazer1stX.iqm" + SurfaceSkin 2 0 "Hellblazer.png" + + AngleOffset -90 + Scale -128 64 128 + Offset -2 2 1 + + // Still / Deselect + FrameIndex XZW7 A 2 0 + FrameIndex XZW7 B 2 1 + FrameIndex XZW7 C 2 2 + FrameIndex XZW7 D 2 3 + FrameIndex XZW7 E 2 4 + FrameIndex XZW7 F 2 5 + FrameIndex XZW7 G 2 6 + FrameIndex XZW7 H 2 7 + FrameIndex XZW7 I 2 8 // Select + FrameIndex XZW7 J 2 9 + FrameIndex XZW7 K 2 10 + FrameIndex XZW7 L 2 11 + FrameIndex XZW7 M 2 12 + FrameIndex XZW7 N 2 13 + FrameIndex XZW7 O 2 14 + FrameIndex XZW7 P 2 15 + // Fire + FrameIndex XZW7 Q 2 17 + FrameIndex XZW7 R 2 18 + FrameIndex XZW7 S 2 19 + FrameIndex XZW7 T 2 20 + FrameIndex XZW7 U 2 21 + FrameIndex XZW7 V 2 22 + FrameIndex XZW7 W 2 23 + // AltFire + FrameIndex XZW7 X 2 25 + FrameIndex XZW7 Y 2 26 + FrameIndex XZW7 Z 2 27 + FrameIndex XZW8 A 2 28 + FrameIndex XZW8 B 2 29 + FrameIndex XZW8 C 2 30 + FrameIndex XZW8 D 2 31 + // CycleStart/End + FrameIndex XZW8 E 2 33 + // Cycle1 + FrameIndex XZW8 F 2 37 + FrameIndex XZW8 G 2 38 + FrameIndex XZW8 H 2 39 + FrameIndex XZW8 I 2 40 + // Unload + FrameIndex XZW8 J 2 59 + FrameIndex XZW8 K 2 60 + FrameIndex XZW8 L 2 61 + FrameIndex XZW8 M 2 62 + FrameIndex XZW8 N 2 63 + FrameIndex XZW8 O 2 64 + FrameIndex XZW8 P 2 65 + FrameIndex XZW8 Q 2 66 + FrameIndex XZW8 R 2 67 + FrameIndex XZW8 S 2 68 + FrameIndex XZW8 T 2 69 + FrameIndex XZW8 U 2 70 + FrameIndex XZW8 V 2 71 + FrameIndex XZW8 W 2 72 + FrameIndex XZW8 X 2 73 + FrameIndex XZW8 Y 2 74 + FrameIndex XZW8 Z 2 75 + FrameIndex XZW9 A 2 76 + FrameIndex XZW9 B 2 77 + FrameIndex XZW9 C 2 78 + FrameIndex XZW9 D 2 79 + FrameIndex XZW9 E 2 80 + FrameIndex XZW9 F 2 81 + FrameIndex XZW9 G 2 82 + FrameIndex XZW9 H 2 83 + FrameIndex XZW9 I 2 84 + // Load + FrameIndex XZW9 J 2 85 + FrameIndex XZW9 K 2 86 + FrameIndex XZW9 L 2 87 + FrameIndex XZW9 M 2 88 + FrameIndex XZW9 N 2 89 + FrameIndex XZW9 O 2 90 + FrameIndex XZW9 P 2 91 + FrameIndex XZW9 Q 2 92 + FrameIndex XZW9 R 2 93 + FrameIndex XZW9 S 2 94 + FrameIndex XZW9 T 2 95 + FrameIndex XZW9 U 2 96 + FrameIndex XZW9 V 2 97 + FrameIndex XZW9 W 2 98 + FrameIndex XZW9 X 2 99 + FrameIndex XZW9 Y 2 100 + FrameIndex XZW9 Z 2 101 + FrameIndex XZWA A 2 102 + FrameIndex XZWA B 2 103 + FrameIndex XZWA C 2 104 + FrameIndex XZWA D 2 105 + FrameIndex XZWA E 2 106 + FrameIndex XZWA F 2 107 + FrameIndex XZWA G 2 108 + FrameIndex XZWA H 2 109 + FrameIndex XZWA I 2 110 + FrameIndex XZWA J 2 111 + // Idle + FrameIndex XZWA K 2 113 + FrameIndex XZWA L 2 114 + FrameIndex XZWA M 2 115 + FrameIndex XZWA N 2 116 + FrameIndex XZWA O 2 117 + FrameIndex XZWA P 2 118 + FrameIndex XZWA Q 2 119 + FrameIndex XZWA R 2 120 + FrameIndex XZWA S 2 121 + FrameIndex XZWA T 2 122 + FrameIndex XZWA U 2 123 + FrameIndex XZWA V 2 124 + FrameIndex XZWA W 2 125 + FrameIndex XZWA X 2 126 + FrameIndex XZWA Y 2 127 + FrameIndex XZWA Z 2 128 + FrameIndex XZWB A 2 129 + // Melee + FrameIndex XZWB B 2 131 + FrameIndex XZWB C 2 132 + FrameIndex XZWB D 2 133 + FrameIndex XZWB E 2 134 + FrameIndex XZWB F 2 135 + FrameIndex XZWB G 2 136 + FrameIndex XZWB H 2 137 + FrameIndex XZWB I 2 138 + FrameIndex XZWB J 2 139 + FrameIndex XZWB K 2 140 + FrameIndex XZWB L 2 141 + FrameIndex XZWB M 2 142 + FrameIndex XZWB N 2 143 + FrameIndex XZWB O 2 144 + FrameIndex XZWB P 2 145 + FrameIndex XZWB Q 2 146 + FrameIndex XZWB R 2 147 + FrameIndex XZWB S 2 148 + FrameIndex XZWB T 2 149 + FrameIndex XZWB U 2 150 + // ReloadInter + FrameIndex XZWB V 2 153 + FrameIndex XZWB W 2 154 + FrameIndex XZWB X 2 155 + FrameIndex XZWB Y 2 156 + FrameIndex XZWB Z 2 157 +} + +Model "Hellblazer" +{ + Path "models" + + Model 1 "Hellblazer1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Hellblazer.png" + SurfaceSkin 1 4 "HellblazerAmmo.png" + + AngleOffset -90 + Scale -128 64 128 + Offset -2 2 1 + FORCECULLBACKFACES + + // Still / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 // Select + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + // Fire + FrameIndex XZW2 Q 1 17 + FrameIndex XZW2 R 1 18 + FrameIndex XZW2 S 1 19 + FrameIndex XZW2 T 1 20 + FrameIndex XZW2 U 1 21 + FrameIndex XZW2 V 1 22 + FrameIndex XZW2 W 1 23 + // AltFire + FrameIndex XZW2 X 1 25 + FrameIndex XZW2 Y 1 26 + FrameIndex XZW2 Z 1 27 + FrameIndex XZW3 A 1 28 + FrameIndex XZW3 B 1 29 + FrameIndex XZW3 C 1 30 + FrameIndex XZW3 D 1 31 + // CycleStart/End + FrameIndex XZW3 E 1 33 + // Cycle1 + FrameIndex XZW3 F 1 37 + FrameIndex XZW3 G 1 38 + FrameIndex XZW3 H 1 39 + FrameIndex XZW3 I 1 40 + // Unload + FrameIndex XZW3 J 1 59 + FrameIndex XZW3 K 1 60 + FrameIndex XZW3 L 1 61 + FrameIndex XZW3 M 1 62 + FrameIndex XZW3 N 1 63 + FrameIndex XZW3 O 1 64 + FrameIndex XZW3 P 1 65 + FrameIndex XZW3 Q 1 66 + FrameIndex XZW3 R 1 67 + FrameIndex XZW3 S 1 68 + FrameIndex XZW3 T 1 69 + FrameIndex XZW3 U 1 70 + FrameIndex XZW3 V 1 71 + FrameIndex XZW3 W 1 72 + FrameIndex XZW3 X 1 73 + FrameIndex XZW3 Y 1 74 + FrameIndex XZW3 Z 1 75 + FrameIndex XZW4 A 1 76 + FrameIndex XZW4 B 1 77 + FrameIndex XZW4 C 1 78 + FrameIndex XZW4 D 1 79 + FrameIndex XZW4 E 1 80 + FrameIndex XZW4 F 1 81 + FrameIndex XZW4 G 1 82 + FrameIndex XZW4 H 1 83 + FrameIndex XZW4 I 1 84 + // Load + FrameIndex XZW4 J 1 85 + FrameIndex XZW4 K 1 86 + FrameIndex XZW4 L 1 87 + FrameIndex XZW4 M 1 88 + FrameIndex XZW4 N 1 89 + FrameIndex XZW4 O 1 90 + FrameIndex XZW4 P 1 91 + FrameIndex XZW4 Q 1 92 + FrameIndex XZW4 R 1 93 + FrameIndex XZW4 S 1 94 + FrameIndex XZW4 T 1 95 + FrameIndex XZW4 U 1 96 + FrameIndex XZW4 V 1 97 + FrameIndex XZW4 W 1 98 + FrameIndex XZW4 X 1 99 + FrameIndex XZW4 Y 1 100 + FrameIndex XZW4 Z 1 101 + FrameIndex XZW5 A 1 102 + FrameIndex XZW5 B 1 103 + FrameIndex XZW5 C 1 104 + FrameIndex XZW5 D 1 105 + FrameIndex XZW5 E 1 106 + FrameIndex XZW5 F 1 107 + FrameIndex XZW5 G 1 108 + FrameIndex XZW5 H 1 109 + FrameIndex XZW5 I 1 110 + FrameIndex XZW5 J 1 111 + // Idle + FrameIndex XZW5 K 1 113 + FrameIndex XZW5 L 1 114 + FrameIndex XZW5 M 1 115 + FrameIndex XZW5 N 1 116 + FrameIndex XZW5 O 1 117 + FrameIndex XZW5 P 1 118 + FrameIndex XZW5 Q 1 119 + FrameIndex XZW5 R 1 120 + FrameIndex XZW5 S 1 121 + FrameIndex XZW5 T 1 122 + FrameIndex XZW5 U 1 123 + FrameIndex XZW5 V 1 124 + FrameIndex XZW5 W 1 125 + FrameIndex XZW5 X 1 126 + FrameIndex XZW5 Y 1 127 + FrameIndex XZW5 Z 1 128 + FrameIndex XZW6 A 1 129 + // Melee + FrameIndex XZW6 B 1 131 + FrameIndex XZW6 C 1 132 + FrameIndex XZW6 D 1 133 + FrameIndex XZW6 E 1 134 + FrameIndex XZW6 F 1 135 + FrameIndex XZW6 G 1 136 + FrameIndex XZW6 H 1 137 + FrameIndex XZW6 I 1 138 + FrameIndex XZW6 J 1 139 + FrameIndex XZW6 K 1 140 + FrameIndex XZW6 L 1 141 + FrameIndex XZW6 M 1 142 + FrameIndex XZW6 N 1 143 + FrameIndex XZW6 O 1 144 + FrameIndex XZW6 P 1 145 + FrameIndex XZW6 Q 1 146 + FrameIndex XZW6 R 1 147 + FrameIndex XZW6 S 1 148 + FrameIndex XZW6 T 1 149 + FrameIndex XZW6 U 1 150 + // ReloadInter + SurfaceSkin 1 4 "" + FrameIndex XZW6 V 1 153 + FrameIndex XZW6 W 1 154 + FrameIndex XZW6 X 1 155 + FrameIndex XZW6 Y 1 156 + FrameIndex XZW6 Z 1 157 +} diff --git a/modeldef/weapons/silverbullet.txt b/modeldef/weapons/silverbullet.txt new file mode 100644 index 000000000..a74049437 --- /dev/null +++ b/modeldef/weapons/silverbullet.txt @@ -0,0 +1,272 @@ +Model "SilverBulletCasing" +{ + Path "models" + + Model 0 "SilverbulletCase.iqm" + Skin 0 "SilverbulletBullet_Used.png" + Scale 10 10 10 + AngleOffset 90 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 1 + FrameIndex XZW1 B 0 0 +} +Model "SilverBulletMag" +{ + Path "models" + + Model 0 "SilverbulletMag.iqm" + Skin 0 "SilverbulletAmmo_Empty.png" + Scale 50 50 50 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + RollOffset 90 + ZOffset 1.8 + FrameIndex XZW1 B 0 0 + RollOffset -90 + FrameIndex XZW1 C 0 0 +} + +Model "SilverBullet" +{ + Path "models" + + Model 0 "SilverbulletPickup.iqm" + SurfaceSkin 0 0 "Silverbullet.png" + SurfaceSkin 0 1 "SilverbulletAmmo.png" + Scale 64 64 64 + ZOffset 24 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "SilverBullet" +{ + Path "models/extra" + + Model 3 "Flat.obj" + Skin 3 "SilverMuz.png" + PitchOffset 90 + Scale -96 48 48 + Offset 12 -90 -12 + + FrameIndex XZWZ A 3 0 +} + +Model "SilverBullet" +{ + Path "models" + + Model 2 "Silverbullet1st_Casing.iqm" + AngleOffset -90 + Scale -128 64 128 + DONTCULLBACKFACES + FORCECULLBACKFACES + + // Casing + SurfaceSkin 2 0 "SilverbulletBullet_Used.png" + FrameIndex XZW7 S 2 30 + FrameIndex XZW7 T 2 31 + FrameIndex XZW7 U 2 32 + FrameIndex XZW7 V 2 33 + FrameIndex XZW7 W 2 34 + FrameIndex XZW7 X 2 35 + FrameIndex XZW7 Y 2 36 + FrameIndex XZW7 Z 2 37 + FrameIndex XZW8 A 2 38 + FrameIndex XZW8 B 2 39 + FrameIndex XZW8 C 2 40 + FrameIndex XZW8 D 2 41 + // Bullet + SurfaceSkin 2 0 "SilverbulletBullet.png" + SurfaceSkin 2 1 "SilverbulletBullet.png" + FrameIndex XZW8 E 2 30 + FrameIndex XZW8 F 2 31 + FrameIndex XZW8 G 2 32 + FrameIndex XZW8 H 2 33 + FrameIndex XZW8 I 2 34 + FrameIndex XZW8 J 2 35 + FrameIndex XZW8 K 2 36 + FrameIndex XZW8 L 2 37 + FrameIndex XZW8 M 2 38 + FrameIndex XZW8 N 2 39 + FrameIndex XZW8 O 2 40 + FrameIndex XZW8 P 2 41 +} + +Model "SilverBullet" +{ + Path "models" + + Model 2 "Silverbullet1st_Smoke.iqm" + AngleOffset -90 + Scale -128 64 128 + DONTCULLBACKFACES + + // Jets + SurfaceSkin 2 0 "SilverbulletJetSmoke.png" + FrameIndex XZW8 Q 2 16 + FrameIndex XZW8 R 2 17 + FrameIndex XZW8 S 2 18 + FrameIndex XZW8 T 2 19 + FrameIndex XZW8 U 2 20 + FrameIndex XZW8 V 2 21 + FrameIndex XZW8 W 2 22 + FrameIndex XZW8 X 2 23 + FrameIndex XZW8 Y 2 24 +} + +Model "SilverBullet" +{ + Path "models" + + Model 1 "Silverbullet1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Silverbullet.png" + SurfaceSkin 1 4 "SilverbulletAmmo.png" + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + // Still / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 // Select + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + // Fire + FrameIndex XZW2 O 1 15 + FrameIndex XZW2 P 1 16 + FrameIndex XZW2 Q 1 17 + FrameIndex XZW2 R 1 18 + FrameIndex XZW2 S 1 19 + FrameIndex XZW2 T 1 20 + FrameIndex XZW2 U 1 21 + FrameIndex XZW2 V 1 22 + FrameIndex XZW2 W 1 23 + // Bolt + FrameIndex XZW2 X 1 25 + FrameIndex XZW2 Y 1 26 + FrameIndex XZW2 Z 1 27 + FrameIndex XZW3 A 1 28 + FrameIndex XZW3 B 1 29 + FrameIndex XZW3 C 1 30 // StartCasing + FrameIndex XZW3 D 1 31 + FrameIndex XZW3 E 1 32 + FrameIndex XZW3 F 1 33 + FrameIndex XZW3 G 1 34 + FrameIndex XZW3 H 1 35 + FrameIndex XZW3 I 1 36 + FrameIndex XZW3 J 1 37 + FrameIndex XZW3 K 1 38 + FrameIndex XZW3 L 1 39 + FrameIndex XZW3 M 1 40 + FrameIndex XZW3 N 1 41 // EndCasing + FrameIndex XZW3 O 1 42 + FrameIndex XZW3 P 1 43 + FrameIndex XZW3 Q 1 44 + FrameIndex XZW3 R 1 45 + // ZoomIn + FrameIndex XZW3 S 1 47 + FrameIndex XZW3 T 1 48 + FrameIndex XZW3 U 1 49 + FrameIndex XZW3 V 1 50 + FrameIndex XZW3 W 1 51 + FrameIndex XZW3 X 1 52 // ZoomStill / ZoomOut + FrameIndex XZW3 Y 1 53 + FrameIndex XZW3 Z 1 54 + FrameIndex XZW4 A 1 55 + FrameIndex XZW4 B 1 56 + FrameIndex XZW4 C 1 57 + // Unload + FrameIndex XZW4 D 1 59 + FrameIndex XZW4 E 1 60 + FrameIndex XZW4 F 1 61 + FrameIndex XZW4 G 1 62 + FrameIndex XZW4 H 1 63 + FrameIndex XZW4 I 1 64 + FrameIndex XZW4 J 1 65 + FrameIndex XZW4 K 1 66 + FrameIndex XZW4 L 1 67 + FrameIndex XZW4 M 1 68 + FrameIndex XZW4 N 1 69 + // Load + FrameIndex XZW4 O 1 70 + FrameIndex XZW4 P 1 71 + FrameIndex XZW4 Q 1 72 + FrameIndex XZW4 R 1 73 + FrameIndex XZW4 S 1 74 + FrameIndex XZW4 T 1 75 + FrameIndex XZW4 U 1 76 + FrameIndex XZW4 V 1 77 + FrameIndex XZW4 W 1 78 + FrameIndex XZW4 X 1 79 + FrameIndex XZW4 Y 1 80 + FrameIndex XZW4 Z 1 81 + FrameIndex XZW5 A 1 82 + FrameIndex XZW5 B 1 83 + FrameIndex XZW5 C 1 84 + // Idle + FrameIndex XZW5 D 1 86 + FrameIndex XZW5 E 1 87 + FrameIndex XZW5 F 1 88 + FrameIndex XZW5 G 1 89 + FrameIndex XZW5 H 1 90 + FrameIndex XZW5 I 1 91 + FrameIndex XZW5 J 1 92 + FrameIndex XZW5 K 1 93 + FrameIndex XZW5 L 1 94 + FrameIndex XZW5 M 1 95 + FrameIndex XZW5 N 1 96 + FrameIndex XZW5 O 1 97 + FrameIndex XZW5 P 1 98 + FrameIndex XZW5 Q 1 99 + FrameIndex XZW5 R 1 100 + FrameIndex XZW5 S 1 101 + FrameIndex XZW5 T 1 102 + FrameIndex XZW5 U 1 103 + FrameIndex XZW5 V 1 104 + FrameIndex XZW5 W 1 105 + // Melee + FrameIndex XZW5 X 1 107 + FrameIndex XZW5 Y 1 108 + FrameIndex XZW5 Z 1 109 + FrameIndex XZW6 A 1 110 + FrameIndex XZW6 B 1 111 + FrameIndex XZW6 C 1 112 + FrameIndex XZW6 D 1 113 + FrameIndex XZW6 E 1 114 + FrameIndex XZW6 F 1 115 + FrameIndex XZW6 G 1 116 + FrameIndex XZW6 H 1 117 + FrameIndex XZW6 I 1 118 + FrameIndex XZW6 J 1 119 + FrameIndex XZW6 K 1 120 + FrameIndex XZW6 L 1 121 + FrameIndex XZW6 M 1 122 + FrameIndex XZW6 N 1 123 + FrameIndex XZW6 O 1 124 + FrameIndex XZW6 P 1 125 + FrameIndex XZW6 Q 1 126 + FrameIndex XZW6 R 1 127 +} diff --git a/modeldef/weapons/sparkster.txt b/modeldef/weapons/sparkster.txt new file mode 100644 index 000000000..efdafa800 --- /dev/null +++ b/modeldef/weapons/sparkster.txt @@ -0,0 +1,532 @@ +Model "SparksterMag" +{ + Path "models" + + Model 0 "SparksterAmmo.iqm" + Skin 0 "SparksterAmmo.png" + Scale 18 18 18 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 1.5 + FrameIndex XZW1 B 0 0 + RollOffset 90 + ZOffset 1.2 + FrameIndex XZW1 C 0 0 +} + +Model "BiosparkArc" +{ + Path "models/extra" + + Model 0 "WarpBeam.md3" + Skin 0 "SparksterBeam.png" + Scale 0.25 0.625 0.625 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + NOINTERPOLATION + + FrameIndex XZW1 A 0 1 + FrameIndex XZW1 B 0 2 + FrameIndex XZW1 C 0 3 + FrameIndex XZW1 D 0 4 + FrameIndex XZW1 E 0 5 + FrameIndex XZW1 F 0 6 + FrameIndex XZW1 G 0 7 + FrameIndex XZW1 H 0 8 + FrameIndex XZW1 I 0 9 + FrameIndex XZW1 J 0 10 + FrameIndex XZW1 K 0 11 + FrameIndex XZW1 L 0 12 +} +Model "BiosparkArcSmall" +{ + Path "models/extra" + + Model 0 "WarpBeam.md3" + Skin 0 "SparksterBeam.png" + Scale 0.125 0.3125 0.3125 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + NOINTERPOLATION + + FrameIndex XZW1 A 0 1 + FrameIndex XZW1 B 0 2 + FrameIndex XZW1 C 0 3 + FrameIndex XZW1 D 0 4 + FrameIndex XZW1 E 0 5 + FrameIndex XZW1 F 0 6 + FrameIndex XZW1 G 0 7 + FrameIndex XZW1 H 0 8 + FrameIndex XZW1 I 0 9 + FrameIndex XZW1 J 0 10 + FrameIndex XZW1 K 0 11 + FrameIndex XZW1 L 0 12 +} +Model "BiosparkArcBig" +{ + Path "models/extra" + + Model 0 "WarpBeam.md3" + Skin 0 "SparksterBeam.png" + Scale 1 2.5 2.5 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + NOINTERPOLATION + + FrameIndex XZW1 A 0 1 + FrameIndex XZW1 B 0 2 + FrameIndex XZW1 C 0 3 + FrameIndex XZW1 D 0 4 + FrameIndex XZW1 E 0 5 + FrameIndex XZW1 F 0 6 + FrameIndex XZW1 G 0 7 + FrameIndex XZW1 H 0 8 + FrameIndex XZW1 I 0 9 + FrameIndex XZW1 J 0 10 + FrameIndex XZW1 K 0 11 + FrameIndex XZW1 L 0 12 +} + +Model "BiosparkBeam" +{ + Path "models/extra" + + Model 0 "BaseBeam.obj" + Scale 256 32 32 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + Skin 0 "SparksterBeamS.png" + FrameIndex XZW1 A 0 0 + Skin 0 "SparksterBeam.png" + FrameIndex XZW1 B 0 0 +} + +Model "BiosparkChildBeam" +{ + Path "models/extra" + + Model 0 "WarpBeam.md3" + Scale 4 8 8 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + Skin 0 "SparksterBeamS.png" + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 + FrameIndex XZW1 C 0 2 + FrameIndex XZW1 D 0 3 + FrameIndex XZW1 E 0 4 + FrameIndex XZW1 F 0 5 + FrameIndex XZW1 G 0 6 + FrameIndex XZW1 H 0 7 + FrameIndex XZW1 I 0 8 + FrameIndex XZW1 J 0 9 + FrameIndex XZW1 K 0 10 + FrameIndex XZW1 L 0 11 + FrameIndex XZW1 M 0 12 + Skin 0 "SparksterBeam.png" + FrameIndex XZW2 A 0 0 + FrameIndex XZW2 B 0 1 + FrameIndex XZW2 C 0 2 + FrameIndex XZW2 D 0 3 + FrameIndex XZW2 E 0 4 + FrameIndex XZW2 F 0 5 + FrameIndex XZW2 G 0 6 + FrameIndex XZW2 H 0 7 + FrameIndex XZW2 I 0 8 + FrameIndex XZW2 J 0 9 + FrameIndex XZW2 K 0 10 + FrameIndex XZW2 L 0 11 + FrameIndex XZW2 M 0 12 +} + +Model "BiosparkCore" +{ + Path "models" + + Model 0 "SparksterBall.iqm" + Skin 0 "SparksterBall.png" + Scale 0.75 0.75 0.75 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "Sparkster" +{ + Path "models" + + Model 0 "SparksterPickup.iqm" + SurfaceSkin 0 0 "Sparkster.png" + SurfaceSkin 0 1 "SparksterAmmo.png" + Scale 30 30 30 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + SurfaceSkin 0 2 "SparksterAmmo.png" + FrameIndex XZW1 B 0 0 +} + +Model "Sparkster" +{ + Path "models/extra" + + Model 2 "Flat.obj" + Scale -60 30 30 + Offset 15 -60 -25 + PitchOffset 90 + + Skin 2 "SparksterMuz.png" + FrameIndex XZWZ A 2 0 +} + +Model "Sparkster" +{ + Path "models" + + Model 3 "SparksterVent.obj" + AngleOffset -90 + Scale -128 64 128 + DONTCULLBACKFACES + + // Still Vent + Skin 3 "VentSmoke0.png" + FrameIndex XZWY A 3 0 + Skin 3 "VentSmoke1.png" + FrameIndex XZWY B 3 0 + Skin 3 "VentSmoke2.png" + FrameIndex XZWY C 3 0 + Skin 3 "VentSmoke3.png" + FrameIndex XZWY D 3 0 + Skin 3 "VentSmoke4.png" + FrameIndex XZWY E 3 0 + Skin 3 "VentSmoke5.png" + FrameIndex XZWY F 3 0 + Skin 3 "VentSmoke6.png" + FrameIndex XZWY G 3 0 + Skin 3 "VentSmoke7.png" + FrameIndex XZWY H 3 0 + Skin 3 "VentSmoke8.png" + FrameIndex XZWY I 3 0 + Skin 3 "VentSmoke9.png" + FrameIndex XZWY J 3 0 + Skin 3 "VentSmoke10.png" + FrameIndex XZWY K 3 0 + Skin 3 "VentSmoke11.png" + FrameIndex XZWY L 3 0 + Skin 3 "VentSmoke12.png" + FrameIndex XZWY M 3 0 + Skin 3 "VentSmoke13.png" + FrameIndex XZWY N 3 0 + Skin 3 "VentSmoke14.png" + FrameIndex XZWY O 3 0 + Skin 3 "VentSmoke15.png" + FrameIndex XZWY P 3 0 + Skin 3 "VentSmoke16.png" + FrameIndex XZWY Q 3 0 + Skin 3 "VentSmoke17.png" + FrameIndex XZWY R 3 0 + Skin 3 "VentSmoke18.png" + FrameIndex XZWY S 3 0 + Skin 3 "VentSmoke19.png" + FrameIndex XZWY T 3 0 + Skin 3 "VentSmoke20.png" + FrameIndex XZWY U 3 0 + Skin 3 "VentSmoke21.png" + FrameIndex XZWY V 3 0 + Skin 3 "VentSmoke22.png" + FrameIndex XZWY W 3 0 + Skin 3 "VentSmoke23.png" + FrameIndex XZWY X 3 0 +} + +Model "Sparkster" +{ + Path "models" + + Model 1 "Sparkster1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Sparkster.png" + SurfaceSkin 1 4 "SparksterAmmo.png" + + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + // Still / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 // Select + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + // Fire + FrameIndex XZW2 N 1 14 + FrameIndex XZW2 O 1 15 + FrameIndex XZW2 P 1 16 + FrameIndex XZW2 Q 1 17 + // AltFire + FrameIndex XZW2 R 1 19 + FrameIndex XZW2 S 1 20 + FrameIndex XZW2 T 1 21 + FrameIndex XZW2 U 1 22 + // ThirdFire + FrameIndex XZW2 V 1 24 + FrameIndex XZW2 W 1 25 + FrameIndex XZW2 X 1 26 + FrameIndex XZW2 Y 1 27 + FrameIndex XZW2 Z 1 28 + // Reload + FrameIndex XZW3 A 1 30 + FrameIndex XZW3 B 1 31 + FrameIndex XZW3 C 1 32 + FrameIndex XZW3 D 1 33 + FrameIndex XZW3 E 1 34 + FrameIndex XZW3 F 1 35 // MagOut + FrameIndex XZW3 G 1 36 + FrameIndex XZW3 H 1 37 + FrameIndex XZW3 I 1 38 + FrameIndex XZW3 J 1 39 + FrameIndex XZW3 K 1 40 + SurfaceSkin 1 4 "" + FrameIndex XZW3 L 1 41 + FrameIndex XZW3 M 1 42 + SurfaceSkin 1 4 "SparksterAmmo.png" + FrameIndex XZW3 N 1 43 // Reload2 + FrameIndex XZW3 O 1 44 + FrameIndex XZW3 P 1 45 + FrameIndex XZW3 Q 1 46 + FrameIndex XZW3 R 1 47 + FrameIndex XZW3 S 1 48 // MagIn + FrameIndex XZW3 T 1 49 + FrameIndex XZW3 U 1 50 + FrameIndex XZW3 V 1 51 + FrameIndex XZW3 W 1 52 // Reload3 + FrameIndex XZW3 X 1 53 + FrameIndex XZW3 Y 1 54 + FrameIndex XZW3 Z 1 55 + FrameIndex XZW4 A 1 56 + FrameIndex XZW4 B 1 57 + FrameIndex XZW4 C 1 58 + FrameIndex XZW4 D 1 59 + // Melee + FrameIndex XZW4 E 1 61 + FrameIndex XZW4 F 1 62 + FrameIndex XZW4 G 1 63 + FrameIndex XZW4 H 1 64 + FrameIndex XZW4 I 1 65 + FrameIndex XZW4 J 1 66 + FrameIndex XZW4 K 1 67 // Melee + FrameIndex XZW4 L 1 68 + FrameIndex XZW4 M 1 69 + FrameIndex XZW4 N 1 70 + FrameIndex XZW4 O 1 71 + FrameIndex XZW4 P 1 72 + FrameIndex XZW4 Q 1 73 + FrameIndex XZW4 R 1 74 + FrameIndex XZW4 S 1 75 + FrameIndex XZW4 T 1 76 + FrameIndex XZW4 U 1 77 + FrameIndex XZW4 V 1 78 + FrameIndex XZW4 W 1 79 + FrameIndex XZW4 X 1 80 + // Trigger1 + FrameIndex XZW4 Y 1 82 + // Trigger2 + FrameIndex XZW4 Z 1 83 + // Trigger3 + FrameIndex XZW5 A 1 84 + // Idle + FrameIndex XZW5 B 1 86 + FrameIndex XZW5 C 1 87 + FrameIndex XZW5 D 1 88 + FrameIndex XZW5 E 1 89 + FrameIndex XZW5 F 1 90 + FrameIndex XZW5 G 1 91 + FrameIndex XZW5 H 1 92 + FrameIndex XZW5 I 1 93 + FrameIndex XZW5 J 1 94 + FrameIndex XZW5 K 1 95 + FrameIndex XZW5 L 1 96 + FrameIndex XZW5 M 1 97 + FrameIndex XZW5 N 1 98 + FrameIndex XZW5 O 1 99 + FrameIndex XZW5 P 1 100 + FrameIndex XZW5 Q 1 101 + FrameIndex XZW5 R 1 102 + FrameIndex XZW5 S 1 103 + FrameIndex XZW5 T 1 104 + FrameIndex XZW5 U 1 105 + FrameIndex XZW5 V 1 106 + FrameIndex XZW5 W 1 107 + FrameIndex XZW5 X 1 108 + FrameIndex XZW5 Y 1 109 + //// DOUBLE MODE + // Still + SurfaceSkin 1 5 "SparksterAmmo.png" + FrameIndex XZW5 Z 1 129 // defined first just to get that Z out of the way + SurfaceSkin 1 5 "" + // AttachExtra + FrameIndex XZW6 A 1 111 + FrameIndex XZW6 B 1 112 + FrameIndex XZW6 C 1 113 + FrameIndex XZW6 D 1 114 + SurfaceSkin 1 5 "SparksterAmmo.png" + FrameIndex XZW6 E 1 115 + FrameIndex XZW6 F 1 116 + FrameIndex XZW6 G 1 117 + FrameIndex XZW6 H 1 118 + FrameIndex XZW6 I 1 119 + FrameIndex XZW6 J 1 120 // MagIn + FrameIndex XZW6 K 1 121 + FrameIndex XZW6 L 1 122 + FrameIndex XZW6 M 1 123 + FrameIndex XZW6 N 1 124 + FrameIndex XZW6 O 1 125 + FrameIndex XZW6 P 1 126 + FrameIndex XZW6 Q 1 127 + FrameIndex XZW6 R 1 128 + // Deselect + FrameIndex XZW6 S 1 130 + FrameIndex XZW6 T 1 131 + FrameIndex XZW6 U 1 132 + FrameIndex XZW6 V 1 133 + FrameIndex XZW6 W 1 134 + FrameIndex XZW6 X 1 135 // Select + FrameIndex XZW6 Y 1 136 + FrameIndex XZW6 Z 1 137 + FrameIndex XZW7 A 1 138 + FrameIndex XZW7 B 1 139 + FrameIndex XZW7 C 1 140 + FrameIndex XZW7 D 1 141 + // Fire + FrameIndex XZW7 E 1 143 + FrameIndex XZW7 F 1 144 + FrameIndex XZW7 G 1 145 + FrameIndex XZW7 H 1 146 + // AltFire + FrameIndex XZW7 I 1 148 + FrameIndex XZW7 J 1 149 + FrameIndex XZW7 K 1 150 + FrameIndex XZW7 L 1 151 + // ThirdFire + FrameIndex XZW7 M 1 153 + FrameIndex XZW7 N 1 154 + FrameIndex XZW7 O 1 155 + FrameIndex XZW7 P 1 156 + FrameIndex XZW7 Q 1 157 + // Melee + FrameIndex XZW7 R 1 159 + FrameIndex XZW7 S 1 160 + FrameIndex XZW7 T 1 161 + FrameIndex XZW7 U 1 162 + FrameIndex XZW7 V 1 163 + FrameIndex XZW7 W 1 164 + FrameIndex XZW7 X 1 165 // Melee + FrameIndex XZW7 Y 1 166 + FrameIndex XZW7 Z 1 167 + FrameIndex XZW8 A 1 168 + FrameIndex XZW8 B 1 169 + FrameIndex XZW8 C 1 170 + FrameIndex XZW8 D 1 171 + FrameIndex XZW8 E 1 172 + FrameIndex XZW8 F 1 173 + FrameIndex XZW8 G 1 174 + FrameIndex XZW8 H 1 175 + FrameIndex XZW8 I 1 176 + FrameIndex XZW8 J 1 177 + FrameIndex XZW8 K 1 178 + // Trigger1 + FrameIndex XZW8 L 1 180 + // Trigger2 + FrameIndex XZW8 M 1 181 + // Trigger3 + FrameIndex XZW8 N 1 182 + // Idle + FrameIndex XZW8 O 1 184 + FrameIndex XZW8 P 1 185 + FrameIndex XZW8 Q 1 186 + FrameIndex XZW8 R 1 187 + FrameIndex XZW8 S 1 188 + FrameIndex XZW8 T 1 189 + FrameIndex XZW8 U 1 190 + FrameIndex XZW8 V 1 191 + FrameIndex XZW8 W 1 192 + FrameIndex XZW8 X 1 193 + FrameIndex XZW8 Y 1 194 + FrameIndex XZW8 Z 1 195 + FrameIndex XZW9 A 1 196 + FrameIndex XZW9 B 1 197 + FrameIndex XZW9 C 1 198 + FrameIndex XZW9 D 1 199 + FrameIndex XZW9 E 1 200 + FrameIndex XZW9 F 1 201 + FrameIndex XZW9 G 1 202 + FrameIndex XZW9 H 1 203 + FrameIndex XZW9 I 1 204 + FrameIndex XZW9 J 1 205 + FrameIndex XZW9 K 1 206 + FrameIndex XZW9 L 1 207 + // UnloadExtra + FrameIndex XZW9 M 1 209 + FrameIndex XZW9 N 1 210 + FrameIndex XZW9 O 1 211 + FrameIndex XZW9 P 1 212 + FrameIndex XZW9 Q 1 213 + FrameIndex XZW9 R 1 214 // MagOut + FrameIndex XZW9 S 1 215 + FrameIndex XZW9 T 1 216 + FrameIndex XZW9 U 1 217 + FrameIndex XZW9 V 1 218 + FrameIndex XZW9 W 1 219 + SurfaceSkin 1 4 "" + FrameIndex XZW9 X 1 220 + FrameIndex XZW9 Y 1 221 + SurfaceSkin 1 4 "SparksterAmmo.png" + FrameIndex XZW9 Z 1 222 // ToReload2 + // DoubleStacc + SurfaceSkin 1 5 "" + FrameIndex XZWA A 1 223 // FromReload3 + FrameIndex XZWA B 1 224 + FrameIndex XZWA C 1 225 + FrameIndex XZWA D 1 226 + FrameIndex XZWA E 1 227 + SurfaceSkin 1 5 "SparksterAmmo.png" + FrameIndex XZWA F 1 228 + FrameIndex XZWA G 1 229 + FrameIndex XZWA H 1 230 // MagIn + FrameIndex XZWA I 1 231 + FrameIndex XZWA J 1 232 + FrameIndex XZWA K 1 233 + FrameIndex XZWA L 1 234 + FrameIndex XZWA M 1 235 + FrameIndex XZWA N 1 236 + FrameIndex XZWA O 1 237 + FrameIndex XZWA P 1 238 + FrameIndex XZWA Q 1 239 + FrameIndex XZWA R 1 240 + FrameIndex XZWA S 1 241 +} diff --git a/modeldef/weapons/spreadgun.txt b/modeldef/weapons/spreadgun.txt new file mode 100644 index 000000000..c1451958b --- /dev/null +++ b/modeldef/weapons/spreadgun.txt @@ -0,0 +1,320 @@ +Model "RedShellCasing" +{ + Path "models" + + Model 0 "ShotShell.iqm" + Skin 0 "Shell_Normal_Used.png" + Scale 40 40 40 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 1 + FrameIndex XZW1 B 0 0 +} +Model "GoldShellCasing" +{ + Path "models" + + Model 0 "ShotShell.iqm" + Skin 0 "Shell_Gold_Used.png" + Scale 40 40 40 + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + ZOffset 1 + FrameIndex XZW1 B 0 0 +} + +Model "Spreadgun" +{ + Path "models" + + Model 0 "SpreadgunPickup.iqm" + Skin 0 "Spreadgun.png" + Scale 10 10 10 + ZOffset 16 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 + FrameIndex XZW1 B 0 1 +} + +Model "Spreadgun" +{ + Path "models/extra" + + Model 2 "Flat.obj" + Offset 16 -60 -15 + PitchOffset 90 + + // buckshot + Scale -26 26 26 + Skin 2 "ShotgMuz.png" + FrameIndex XZW0 A 2 0 + // gold + Scale -40 40 40 + Skin 2 "GoldMuz.png" + FrameIndex XZW0 B 2 0 +} + +Model "Spreadgun" +{ + Path "models" + + Model 1 "Spreadgun1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Spreadgun.png" + AngleOffset -90 + Offset -4 0 -2 + Scale -128 64 128 + FORCECULLBACKFACES + + ///// PRIMED + // Idle / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 // Select + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + FrameIndex XZW2 Q 1 16 + // Fire + FrameIndex XZW2 R 1 18 + FrameIndex XZW2 S 1 19 + FrameIndex XZW2 T 1 20 + FrameIndex XZW2 U 1 21 + FrameIndex XZW2 V 1 22 + FrameIndex XZW2 W 1 23 + FrameIndex XZW2 X 1 24 + FrameIndex XZW2 Y 1 25 + ///// FIRED + // Idle / Deselect + FrameIndex XZW2 Z 1 26 + FrameIndex XZW3 A 1 27 + FrameIndex XZW3 B 1 28 + FrameIndex XZW3 C 1 29 + FrameIndex XZW3 D 1 30 + FrameIndex XZW3 E 1 31 + FrameIndex XZW3 F 1 32 + FrameIndex XZW3 G 1 33 + FrameIndex XZW3 H 1 34 // Select + FrameIndex XZW3 I 1 35 + FrameIndex XZW3 J 1 36 + FrameIndex XZW3 K 1 37 + FrameIndex XZW3 L 1 38 + FrameIndex XZW3 M 1 39 + FrameIndex XZW3 N 1 40 + FrameIndex XZW3 O 1 41 + FrameIndex XZW3 P 1 42 + // Unload + FrameIndex XZW3 Q 1 44 // Set SurfaceSkin 4 + FrameIndex XZW3 R 1 45 + FrameIndex XZW3 S 1 46 + FrameIndex XZW3 T 1 47 + FrameIndex XZW3 U 1 48 + FrameIndex XZW3 V 1 49 + FrameIndex XZW3 W 1 50 + FrameIndex XZW3 X 1 51 + FrameIndex XZW3 Y 1 52 + FrameIndex XZW3 Z 1 53 + FrameIndex XZW4 A 1 54 + FrameIndex XZW4 B 1 55 + FrameIndex XZW4 C 1 56 + FrameIndex XZW4 D 1 57 + FrameIndex XZW4 E 1 58 + FrameIndex XZW4 F 1 59 + FrameIndex XZW4 G 1 60 + FrameIndex XZW4 H 1 61 // Unset SurfaceSkin 4 + // Load + FrameIndex XZW4 I 1 62 // Set SurfaceSkin 5 + FrameIndex XZW4 J 1 63 + FrameIndex XZW4 K 1 64 + FrameIndex XZW4 L 1 65 + FrameIndex XZW4 M 1 66 + FrameIndex XZW4 N 1 67 + FrameIndex XZW4 O 1 68 + FrameIndex XZW4 P 1 69 + FrameIndex XZW4 Q 1 70 + FrameIndex XZW4 R 1 71 + FrameIndex XZW4 S 1 72 // Unset SurfaceSkin 5 + FrameIndex XZW4 T 1 73 // Set SurfaceSkin 4 + FrameIndex XZW4 U 1 74 + FrameIndex XZW4 V 1 75 + FrameIndex XZW4 W 1 76 + FrameIndex XZW4 X 1 77 + FrameIndex XZW4 Y 1 78 + FrameIndex XZW4 Z 1 79 + FrameIndex XZW5 A 1 80 + FrameIndex XZW5 B 1 81 + FrameIndex XZW5 C 1 82 + FrameIndex XZW5 D 1 83 + FrameIndex XZW5 E 1 84 + FrameIndex XZW5 F 1 85 + FrameIndex XZW5 G 1 86 + FrameIndex XZW5 H 1 87 + FrameIndex XZW5 I 1 88 + FrameIndex XZW5 J 1 89 + FrameIndex XZW5 K 1 90 + FrameIndex XZW5 L 1 91 + FrameIndex XZW5 M 1 92 + FrameIndex XZW5 N 1 93 + FrameIndex XZW5 O 1 94 // Unset SurfaceSkin 4 + ///// PRIMED (Again) + // Check out + FrameIndex XZW5 P 1 96 + FrameIndex XZW5 Q 1 97 + FrameIndex XZW5 R 1 98 + FrameIndex XZW5 S 1 99 + FrameIndex XZW5 T 1 100 + FrameIndex XZW5 U 1 101 + FrameIndex XZW5 V 1 102 + FrameIndex XZW5 W 1 103 + FrameIndex XZW5 X 1 104 + FrameIndex XZW5 Y 1 105 + FrameIndex XZW5 Z 1 106 + FrameIndex XZW6 A 1 107 + FrameIndex XZW6 B 1 108 + FrameIndex XZW6 C 1 109 + FrameIndex XZW6 D 1 110 + FrameIndex XZW6 E 1 111 + FrameIndex XZW6 F 1 112 + FrameIndex XZW6 G 1 113 + FrameIndex XZW6 H 1 114 + FrameIndex XZW6 I 1 115 + FrameIndex XZW6 J 1 116 + FrameIndex XZW6 K 1 117 + FrameIndex XZW6 L 1 118 + FrameIndex XZW6 M 1 119 + FrameIndex XZW6 N 1 120 + FrameIndex XZW6 O 1 121 + // Melee + FrameIndex XZW7 P 1 123 + FrameIndex XZW7 Q 1 124 + FrameIndex XZW7 R 1 125 + FrameIndex XZW7 S 1 126 + FrameIndex XZW7 T 1 127 + FrameIndex XZW7 U 1 128 + FrameIndex XZW7 V 1 129 + FrameIndex XZW7 W 1 130 + FrameIndex XZW7 X 1 131 + FrameIndex XZW7 Y 1 132 + FrameIndex XZW7 Z 1 133 + FrameIndex XZW8 A 1 134 + FrameIndex XZW8 B 1 135 + ////// FIRED (Extra) + // Check out + FrameIndex XZW8 C 1 138 + FrameIndex XZW8 D 1 139 + FrameIndex XZW8 E 1 140 + FrameIndex XZW8 F 1 141 + FrameIndex XZW8 G 1 142 + FrameIndex XZW8 H 1 143 + FrameIndex XZW8 I 1 144 + FrameIndex XZW8 J 1 145 + FrameIndex XZW8 K 1 146 + FrameIndex XZW8 L 1 147 + FrameIndex XZW8 M 1 148 + FrameIndex XZW8 N 1 149 + FrameIndex XZW8 O 1 150 + FrameIndex XZW8 P 1 151 + FrameIndex XZW8 Q 1 152 + FrameIndex XZW8 R 1 153 + FrameIndex XZW8 S 1 154 + FrameIndex XZW8 T 1 155 + FrameIndex XZW8 U 1 156 + FrameIndex XZW8 V 1 157 + FrameIndex XZW8 W 1 158 + FrameIndex XZW8 X 1 159 + FrameIndex XZW8 Y 1 160 + FrameIndex XZW8 Z 1 161 + FrameIndex XZW9 A 1 162 + FrameIndex XZW9 B 1 163 + // Melee + FrameIndex XZW9 C 1 165 + FrameIndex XZW9 D 1 166 + FrameIndex XZW9 E 1 167 + FrameIndex XZW9 F 1 168 + FrameIndex XZW9 G 1 169 + FrameIndex XZW9 H 1 170 + FrameIndex XZW9 I 1 171 + FrameIndex XZW9 J 1 172 + FrameIndex XZW9 K 1 173 + FrameIndex XZW9 L 1 174 + FrameIndex XZW9 M 1 175 + FrameIndex XZW9 N 1 176 + FrameIndex XZW9 O 1 177 + ////// PRIMED (Extra) + // Unload + FrameIndex XZW9 P 1 180 // Set SurfaceSkin 4 + FrameIndex XZW9 Q 1 181 + FrameIndex XZW9 R 1 182 + FrameIndex XZW9 S 1 183 + FrameIndex XZW9 T 1 184 + FrameIndex XZW9 U 1 185 + FrameIndex XZW9 V 1 186 + FrameIndex XZW9 W 1 187 + FrameIndex XZW9 X 1 188 + FrameIndex XZW9 Y 1 189 + FrameIndex XZW9 Z 1 190 + FrameIndex XZWA A 1 191 + FrameIndex XZWA B 1 192 + FrameIndex XZWA C 1 193 + FrameIndex XZWA D 1 194 + FrameIndex XZWA E 1 195 + FrameIndex XZWA F 1 196 + FrameIndex XZWA G 1 197 // Unset SurfaceSkin 4 + // Load + FrameIndex XZWA H 1 198 // Set SurfaceSkin 5 + FrameIndex XZWA I 1 199 + FrameIndex XZWA J 1 200 + FrameIndex XZWA K 1 201 + FrameIndex XZWA L 1 202 + FrameIndex XZWA M 1 203 + FrameIndex XZWA N 1 204 + FrameIndex XZWA O 1 205 + FrameIndex XZWA P 1 206 + FrameIndex XZWA Q 1 207 + FrameIndex XZWA R 1 208 // Unset SurfaceSkin 5 + FrameIndex XZWA S 1 209 // Set SurfaceSkin 4 + FrameIndex XZWA T 1 210 + FrameIndex XZWA U 1 211 + FrameIndex XZWA V 1 212 + FrameIndex XZWA W 1 213 + FrameIndex XZWA X 1 214 + FrameIndex XZWA Y 1 215 + FrameIndex XZWA Z 1 216 + FrameIndex XZWB A 1 217 + FrameIndex XZWB B 1 218 + FrameIndex XZWB C 1 219 + FrameIndex XZWB D 1 220 + FrameIndex XZWB E 1 221 + FrameIndex XZWB F 1 222 + FrameIndex XZWB G 1 223 + FrameIndex XZWB H 1 224 + FrameIndex XZWB I 1 225 + FrameIndex XZWB J 1 226 + FrameIndex XZWB K 1 227 + FrameIndex XZWB L 1 228 + FrameIndex XZWB M 1 229 + FrameIndex XZWB N 1 230 // Unset SurfaceSkin 4 + + // Empty unload/load frames no longer needed +} diff --git a/modeldef/weapons/wallbuster.txt b/modeldef/weapons/wallbuster.txt new file mode 100644 index 000000000..531072648 --- /dev/null +++ b/modeldef/weapons/wallbuster.txt @@ -0,0 +1,348 @@ +Model "Wallbuster" +{ + Path "models" + + Model 0 "WallbusterPickup.iqm" + Skin 0 "Wallbuster.png" + Scale 45 45 45 + ZOffset 28 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "Wallbuster" +{ + // muzzle flashes + Path "models/extra" + + Model 3 "Flat.obj" + PitchOffset 90 + + // Base 12 -60 -24 + // Radius1 10 + // Radius2 3 + + // Buckshot + Scale -26 26 26 + Skin 3 "ShotgMuz.png" + Offset 12 -60 -11 + FrameIndex XZWW A 3 0 + Offset 14.8532 -60 -13.0729 + FrameIndex XZWW B 3 0 + Offset 13.7634 -60 -16.4271 + FrameIndex XZWW C 3 0 + Offset 10.2366 -60 -16.4271 + FrameIndex XZWW D 3 0 + Offset 9.14683 -60 -13.0729 + FrameIndex XZWW E 3 0 + Offset 24.3637 -60 -19.9828 + FrameIndex XZWW F 3 0 + Offset 23.2739 -60 -23.3369 + FrameIndex XZWW G 3 0 + Offset 19.7472 -60 -23.3369 + FrameIndex XZWW H 3 0 + Offset 18.6574 -60 -19.9828 + FrameIndex XZWW I 3 0 + Offset 21.5106 -60 -17.9098 + FrameIndex XZWW J 3 0 + Offset 19.6412 -60 -34.5172 + FrameIndex XZWW K 3 0 + Offset 16.1145 -60 -34.5172 + FrameIndex XZWW L 3 0 + Offset 15.0247 -60 -31.1631 + FrameIndex XZWW M 3 0 + Offset 17.8779 -60 -29.0902 + FrameIndex XZWW N 3 0 + Offset 20.731 -60 -31.1631 + FrameIndex XZWW O 3 0 + Offset 4.35879 -60 -34.5172 + FrameIndex XZWW P 3 0 + Offset 3.26898 -60 -31.1631 + FrameIndex XZWW Q 3 0 + Offset 6.12215 -60 -29.0902 + FrameIndex XZWW R 3 0 + Offset 8.97532 -60 -31.1631 + FrameIndex XZWW S 3 0 + Offset 7.8855 -60 -34.5172 + FrameIndex XZWW T 3 0 + Offset -0.363735 -60 -19.9828 + FrameIndex XZWW U 3 0 + Offset 2.48943 -60 -17.9098 + FrameIndex XZWW V 3 0 + Offset 5.3426 -60 -19.9828 + FrameIndex XZWW W 3 0 + Offset 4.25279 -60 -23.3369 + FrameIndex XZWW X 3 0 + Offset 0.726079 -60 -23.3369 + FrameIndex XZWW Y 3 0 +} + +Model "Wallbuster" +{ + // main + Path "models" + + Model 1 "Wallbuster1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Wallbuster.png" + AngleOffset -93 + PitchOffset 0.4 + Offset 0 2 0 + Scale -128 64 128 + FORCECULLBACKFACES + + // Still/Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 // Select + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + // Fire One + FrameIndex XZW2 Q 1 17 + FrameIndex XZW2 R 1 18 + FrameIndex XZW2 S 1 19 + FrameIndex XZW2 T 1 20 + FrameIndex XZW2 U 1 21 + FrameIndex XZW2 V 1 22 + FrameIndex XZW2 W 1 23 + FrameIndex XZW2 X 1 24 + // Spin One + FrameIndex XZW2 Y 1 26 + FrameIndex XZW2 Z 1 27 + FrameIndex XZW3 A 1 28 + FrameIndex XZW3 B 1 29 + // Fire Five + FrameIndex XZW3 C 1 31 + FrameIndex XZW3 D 1 32 + FrameIndex XZW3 E 1 33 + FrameIndex XZW3 F 1 34 + FrameIndex XZW3 G 1 35 + FrameIndex XZW3 H 1 36 + FrameIndex XZW3 I 1 37 + FrameIndex XZW3 J 1 38 + FrameIndex XZW3 K 1 39 + // Spin Five + FrameIndex XZW3 L 1 41 + FrameIndex XZW3 M 1 42 + FrameIndex XZW3 N 1 43 + FrameIndex XZW3 O 1 44 + FrameIndex XZW3 P 1 45 + FrameIndex XZW3 Q 1 46 + FrameIndex XZW3 R 1 47 + // Fire Twenty-Five + FrameIndex XZW3 S 1 49 + FrameIndex XZW3 T 1 50 + FrameIndex XZW3 U 1 51 + FrameIndex XZW3 V 1 52 + FrameIndex XZW3 W 1 53 + FrameIndex XZW3 X 1 54 + FrameIndex XZW3 Y 1 55 + FrameIndex XZW3 Z 1 56 + FrameIndex XZW4 A 1 57 + FrameIndex XZW4 B 1 58 + FrameIndex XZW4 C 1 59 + // Unlock + FrameIndex XZW4 D 1 61 + FrameIndex XZW4 E 1 62 + FrameIndex XZW4 F 1 63 + FrameIndex XZW4 G 1 64 + FrameIndex XZW4 H 1 65 + FrameIndex XZW4 I 1 66 + FrameIndex XZW4 J 1 67 + FrameIndex XZW4 K 1 68 + FrameIndex XZW4 L 1 69 // LeverSnd + FrameIndex XZW4 M 1 70 + FrameIndex XZW4 N 1 71 + FrameIndex XZW4 O 1 72 + FrameIndex XZW4 P 1 73 + FrameIndex XZW4 Q 1 74 + FrameIndex XZW4 R 1 75 + FrameIndex XZW4 S 1 76 + FrameIndex XZW4 T 1 77 + FrameIndex XZW4 U 1 78 + FrameIndex XZW4 V 1 79 + FrameIndex XZW4 W 1 80 // StillFrm + // PreDetach + FrameIndex XZW4 X 1 81 + FrameIndex XZW4 Y 1 82 + FrameIndex XZW4 Z 1 83 + FrameIndex XZW5 A 1 84 + FrameIndex XZW5 B 1 85 + FrameIndex XZW5 C 1 86 + FrameIndex XZW5 D 1 87 + FrameIndex XZW5 E 1 88 + FrameIndex XZW5 F 1 89 + FrameIndex XZW5 G 1 90 // DetachSnd + // Detach + FrameIndex XZW5 H 1 91 // StartDetachOverlays + FrameIndex XZW5 I 1 92 + FrameIndex XZW5 J 1 93 + FrameIndex XZW5 K 1 94 + FrameIndex XZW5 L 1 95 + FrameIndex XZW5 M 1 96 + FrameIndex XZW5 N 1 97 + FrameIndex XZW5 O 1 98 + FrameIndex XZW5 P 1 99 + FrameIndex XZW5 Q 1 100 + FrameIndex XZW5 R 1 101 // DropShells + FrameIndex XZW5 S 1 102 + FrameIndex XZW5 T 1 103 + FrameIndex XZW5 U 1 104 + FrameIndex XZW5 V 1 105 // LoadShell + FrameIndex XZW5 W 1 106 + FrameIndex XZW5 X 1 107 // LoadShell + // Attach + FrameIndex XZW5 Y 1 108 + FrameIndex XZW5 Z 1 109 // LoadShell + FrameIndex XZW6 A 1 110 + FrameIndex XZW6 B 1 111 // LoadShell + FrameIndex XZW6 C 1 112 + FrameIndex XZW6 D 1 113 // LoadShell + FrameIndex XZW6 E 1 114 + FrameIndex XZW6 F 1 115 + FrameIndex XZW6 G 1 116 // StartAttachOverlays + FrameIndex XZW6 H 1 117 + FrameIndex XZW6 I 1 118 + FrameIndex XZW6 J 1 119 + FrameIndex XZW6 K 1 120 + FrameIndex XZW6 L 1 121 + FrameIndex XZW6 M 1 122 + FrameIndex XZW6 N 1 123 + FrameIndex XZW6 O 1 124 + FrameIndex XZW6 P 1 125 + FrameIndex XZW6 Q 1 126 // AttachSnd + FrameIndex XZW6 R 1 127 + FrameIndex XZW6 S 1 128 + FrameIndex XZW6 T 1 129 + FrameIndex XZW6 U 1 130 + FrameIndex XZW6 V 1 131 + FrameIndex XZW6 W 1 132 + FrameIndex XZW6 X 1 133 + FrameIndex XZW6 Y 1 134 + FrameIndex XZW6 Z 1 135 + FrameIndex XZW7 A 1 136 + FrameIndex XZW7 B 1 137 + FrameIndex XZW7 C 1 138 + // Attach + Spin + FrameIndex XZW7 D 1 139 + FrameIndex XZW7 E 1 140 // LoadShell + FrameIndex XZW7 F 1 141 + FrameIndex XZW7 G 1 142 // LoadShell + FrameIndex XZW7 H 1 143 + FrameIndex XZW7 I 1 144 // LoadShell + FrameIndex XZW7 J 1 145 + FrameIndex XZW7 K 1 146 + FrameIndex XZW7 L 1 147 // StartAttachOverlays + FrameIndex XZW7 M 1 148 + FrameIndex XZW7 N 1 149 + FrameIndex XZW7 O 1 150 + FrameIndex XZW7 P 1 151 + FrameIndex XZW7 Q 1 152 + FrameIndex XZW7 R 1 153 + FrameIndex XZW7 S 1 154 + FrameIndex XZW7 T 1 155 + FrameIndex XZW7 U 1 156 + FrameIndex XZW7 V 1 157 + FrameIndex XZW7 W 1 158 // AttachSnd + FrameIndex XZW7 X 1 159 + FrameIndex XZW7 Y 1 160 + FrameIndex XZW7 Z 1 161 + FrameIndex XZW8 A 1 162 + FrameIndex XZW8 B 1 163 + FrameIndex XZW8 C 1 164 + FrameIndex XZW8 D 1 165 // Speen + FrameIndex XZW8 E 1 166 + FrameIndex XZW8 F 1 167 + FrameIndex XZW8 G 1 168 + FrameIndex XZW8 H 1 169 + FrameIndex XZW8 I 1 170 + FrameIndex XZW8 J 1 171 + FrameIndex XZW8 K 1 172 + FrameIndex XZW8 L 1 173 + FrameIndex XZW8 M 1 174 // DetachSnd + FrameIndex XZW8 N 1 175 // duplicate of frame 91, but with spin applied + // Lock + FrameIndex XZW8 O 1 176 + FrameIndex XZW8 P 1 177 + FrameIndex XZW8 Q 1 178 + FrameIndex XZW8 R 1 179 + FrameIndex XZW8 S 1 180 + FrameIndex XZW8 T 1 181 // LeverSnd + FrameIndex XZW8 U 1 182 + FrameIndex XZW8 V 1 183 + FrameIndex XZW8 W 1 184 + FrameIndex XZW8 X 1 185 + FrameIndex XZW8 Y 1 186 + FrameIndex XZW8 Z 1 187 + FrameIndex XZW9 A 1 188 + FrameIndex XZW9 B 1 189 + FrameIndex XZW9 C 1 190 + FrameIndex XZW9 D 1 191 + FrameIndex XZW9 E 1 192 + FrameIndex XZW9 F 1 193 + // Melee + FrameIndex XZW9 G 1 195 + FrameIndex XZW9 H 1 196 + FrameIndex XZW9 I 1 197 + FrameIndex XZW9 J 1 198 + FrameIndex XZW9 K 1 199 + FrameIndex XZW9 L 1 200 + FrameIndex XZW9 M 1 201 + FrameIndex XZW9 N 1 202 + FrameIndex XZW9 O 1 203 // Impact + FrameIndex XZW9 P 1 204 + FrameIndex XZW9 Q 1 205 + FrameIndex XZW9 R 1 206 + FrameIndex XZW9 S 1 207 + FrameIndex XZW9 T 1 208 + FrameIndex XZW9 U 1 209 + FrameIndex XZW9 V 1 210 + FrameIndex XZW9 W 1 211 + FrameIndex XZW9 X 1 212 + FrameIndex XZW9 Y 1 213 + FrameIndex XZW9 Z 1 214 + FrameIndex XZWA A 1 215 + FrameIndex XZWA B 1 216 + FrameIndex XZWA C 1 217 + FrameIndex XZWA D 1 218 + // PreDetach + Spin + FrameIndex XZWE U 1 221 + FrameIndex XZWE V 1 222 + FrameIndex XZWE W 1 223 + FrameIndex XZWE X 1 224 + FrameIndex XZWE Y 1 225 + FrameIndex XZWE Z 1 226 + FrameIndex XZWF A 1 227 // Speen + FrameIndex XZWF B 1 228 + FrameIndex XZWF C 1 229 + FrameIndex XZWF D 1 230 + FrameIndex XZWF E 1 231 + FrameIndex XZWF F 1 232 + FrameIndex XZWF G 1 233 + FrameIndex XZWF H 1 234 + FrameIndex XZWF I 1 235 + FrameIndex XZWF J 1 236 // DetachSnd + FrameIndex XZWF K 1 237 // duplicate of frame 91, but with spin applied + // PreDetach InterSpin + FrameIndex XZWH J 1 238 // identical to 234, but unrotated + FrameIndex XZWH K 1 239 + FrameIndex XZWH L 1 240 + // Attach+Spin InterSpin + FrameIndex XZWH M 1 242 // identical to 172, but unrotated + FrameIndex XZWH N 1 243 + FrameIndex XZWH O 1 244 +} diff --git a/modeldef/weapons/ynykron.txt b/modeldef/weapons/ynykron.txt new file mode 100644 index 000000000..d16640720 --- /dev/null +++ b/modeldef/weapons/ynykron.txt @@ -0,0 +1,603 @@ +Model "AshenRemains" +{ + Path "models/extra" + + Model 0 "Flat.obj" + Scale 20 20 20 + ZOffset 0.1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + + Skin 0 "BloodBlast.png" + FrameIndex XZW1 A 0 0 +} + +Model "YnykronBeam" +{ + Path "models/extra" + + Model 0 "WarpBeam2.md3" + Scale 4 4 4 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + // starter + Skin 0 "MCBeamS.png" + + // base + FrameIndex XZW1 A 0 0 + // deviation + FrameIndex XZW1 B 0 5 + FrameIndex XZW1 C 0 6 + FrameIndex XZW1 D 0 7 + FrameIndex XZW1 E 0 8 + + // other + Skin 0 "MCBeam.png" + + // base + FrameIndex XZW2 A 0 0 + // deviation + FrameIndex XZW2 B 0 5 + FrameIndex XZW2 C 0 6 + FrameIndex XZW2 D 0 7 + FrameIndex XZW2 E 0 8 +} + +Model "YnykronRing" +{ + Model 0 "models/extra/Flat.obj" + Scale 100 100 100 + PitchOffset 90 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + CORRECTPIXELSTRETCH + + // boy this is a pain + Skin 0 "sprites/XRG4A0.png" + FrameIndex XRG4 A 0 0 + Skin 0 "sprites/XRG4B0.png" + FrameIndex XRG4 B 0 0 + Skin 0 "sprites/XRG4C0.png" + FrameIndex XRG4 C 0 0 + Skin 0 "sprites/XRG4D0.png" + FrameIndex XRG4 D 0 0 + Skin 0 "sprites/XRG4E0.png" + FrameIndex XRG4 E 0 0 + Skin 0 "sprites/XRG4F0.png" + FrameIndex XRG4 F 0 0 + Skin 0 "sprites/XRG4G0.png" + FrameIndex XRG4 G 0 0 + Skin 0 "sprites/XRG4H0.png" + FrameIndex XRG4 H 0 0 + Skin 0 "sprites/XRG4I0.png" + FrameIndex XRG4 I 0 0 + Skin 0 "sprites/XRG4J0.png" + FrameIndex XRG4 J 0 0 + Skin 0 "sprites/XRG4K0.png" + FrameIndex XRG4 K 0 0 + Skin 0 "sprites/XRG4L0.png" + FrameIndex XRG4 L 0 0 + Skin 0 "sprites/XRG4M0.png" + FrameIndex XRG4 M 0 0 + Skin 0 "sprites/XRG4N0.png" + FrameIndex XRG4 N 0 0 + Skin 0 "sprites/XRG4O0.png" + FrameIndex XRG4 O 0 0 + Skin 0 "sprites/XRG4P0.png" + FrameIndex XRG4 P 0 0 + Skin 0 "sprites/XRG4Q0.png" + FrameIndex XRG4 Q 0 0 + Skin 0 "sprites/XRG4R0.png" + FrameIndex XRG4 R 0 0 + Skin 0 "sprites/XRG4S0.png" + FrameIndex XRG4 S 0 0 + Skin 0 "sprites/XRG4T0.png" + FrameIndex XRG4 T 0 0 + Skin 0 "sprites/XRG4U0.png" + FrameIndex XRG4 U 0 0 + Skin 0 "sprites/XRG4V0.png" + FrameIndex XRG4 V 0 0 + Skin 0 "sprites/XRG4W0.png" + FrameIndex XRG4 W 0 0 + Skin 0 "sprites/XRG4X0.png" + FrameIndex XRG4 X 0 0 +} + +Model "YnykronAltBeam" +{ + Path "models/extra" + + Model 0 "WarpBeam2.md3" + Scale 2 2 2 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + // starter + Skin 0 "MCBeamS.png" + + // base + FrameIndex XZW1 A 0 0 + // deviation + FrameIndex XZW1 B 0 5 + FrameIndex XZW1 C 0 6 + FrameIndex XZW1 D 0 7 + FrameIndex XZW1 E 0 8 + + // other + Skin 0 "MCBeam.png" + + // base + FrameIndex XZW2 A 0 0 + // deviation + FrameIndex XZW2 B 0 5 + FrameIndex XZW2 C 0 6 + FrameIndex XZW2 D 0 7 + FrameIndex XZW2 E 0 8 +} + +Model "YnykronVoidBeam" +{ + Path "models/extra" + + Model 0 "BaseBeam.obj" + Scale 16 12 12 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + // starter + Skin 0 "DarkRaysStart.png" + FrameIndex XZW1 A 0 0 + // trailer + Skin 0 "DarkRays.png" + FrameIndex XZW1 B 0 0 + // cap + Skin 0 "DarkRaysEnd.png" + FrameIndex XZW1 C 0 0 + // early cap + Skin 0 "DarkRaysStartEnd.png" + FrameIndex XZW1 D 0 0 +} +Model "YnykronVoidBeamTail" +{ + Path "models/extra" + + Model 0 "BaseBeam.obj" + Scale 16 12 12 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + // starter + Skin 0 "DarkRaysStart.png" + FrameIndex XZW1 A 0 0 + // trailer + Skin 0 "DarkRays.png" + FrameIndex XZW1 B 0 0 + // cap + Skin 0 "DarkRaysEnd.png" + FrameIndex XZW1 C 0 0 + // early cap + Skin 0 "DarkRaysStartEnd.png" + FrameIndex XZW1 D 0 0 +} + +Model "YnykronLightningArc" +{ + Path "models/extra" + + Model 0 "WarpBeam.md3" + Scale 2 2 2 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + Skin 0 "VortexArcS.png" + FrameIndex XZW1 A 0 1 + FrameIndex XZW1 B 0 2 + FrameIndex XZW1 C 0 3 + FrameIndex XZW1 D 0 4 + FrameIndex XZW1 E 0 5 + FrameIndex XZW1 F 0 6 + FrameIndex XZW1 G 0 7 + FrameIndex XZW1 H 0 8 + FrameIndex XZW1 I 0 9 + FrameIndex XZW1 J 0 10 + FrameIndex XZW1 K 0 11 + FrameIndex XZW1 L 0 12 + Skin 0 "VortexArc.png" + FrameIndex XZW2 A 0 1 + FrameIndex XZW2 B 0 2 + FrameIndex XZW2 C 0 3 + FrameIndex XZW2 D 0 4 + FrameIndex XZW2 E 0 5 + FrameIndex XZW2 F 0 6 + FrameIndex XZW2 G 0 7 + FrameIndex XZW2 H 0 8 + FrameIndex XZW2 I 0 9 + FrameIndex XZW2 J 0 10 + FrameIndex XZW2 K 0 11 + FrameIndex XZW2 L 0 12 +} +Model "YnykronLightningArcSub" +{ + Path "models/extra" + + Model 0 "WarpBeam.md3" + Scale 0.5 0.5 0.5 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + Skin 0 "VortexArcS.png" + FrameIndex XZW1 A 0 1 + FrameIndex XZW1 B 0 2 + FrameIndex XZW1 C 0 3 + FrameIndex XZW1 D 0 4 + FrameIndex XZW1 E 0 5 + FrameIndex XZW1 F 0 6 + FrameIndex XZW1 G 0 7 + FrameIndex XZW1 H 0 8 + FrameIndex XZW1 I 0 9 + FrameIndex XZW1 J 0 10 + FrameIndex XZW1 K 0 11 + FrameIndex XZW1 L 0 12 + Skin 0 "VortexArc.png" + FrameIndex XZW2 A 0 1 + FrameIndex XZW2 B 0 2 + FrameIndex XZW2 C 0 3 + FrameIndex XZW2 D 0 4 + FrameIndex XZW2 E 0 5 + FrameIndex XZW2 F 0 6 + FrameIndex XZW2 G 0 7 + FrameIndex XZW2 H 0 8 + FrameIndex XZW2 I 0 9 + FrameIndex XZW2 J 0 10 + FrameIndex XZW2 K 0 11 + FrameIndex XZW2 L 0 12 +} + +Model "YnykronSingularity" +{ + Path "models/extra" + + Model 0 "BaseSphere.obj" + Skin 0 "Black.png" + Scale 64 64 64 + + FrameIndex XZW1 A 0 0 +} + +Model "YnykronVoidSparkleTrail" +{ + Path "models/extra" + + Model 0 "YBeam.obj" + Skin 0 "DarkTrail.png" + Scale 1 1 1 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + CORRECTPIXELSTRETCH + + FrameIndex XZW1 A 0 0 +} + +Model "Ynykron" +{ + Path "models" + + Model 0 "YnykronPickup.iqm" + SurfaceSkin 0 0 "Ynykron.png" + SurfaceSkin 0 1 "YnykronAmmo.png" + Scale 45 45 45 + ZOffset 24 + FORCECULLBACKFACES + + FrameIndex XZW1 A 0 0 +} + +Model "Ynykron" +{ + Path "models/extra" + + Model 3 "Flat.obj" + Skin 3 "MortalMuz.png" + PitchOffset 90 + Scale -60 60 60 + Offset 32 -90 -8 + + FrameIndex XZWZ A 3 0 +} + +Model "Ynykron" +{ + Path "models" + + Model 2 "Ynykron1st_Smoke.iqm" + SurfaceSkin 2 0 "YnykronSmoke.png" + AngleOffset -90 + Scale -128 64 128 + DONTCULLBACKFACES + + // FireVent + FrameIndex XZWA J 2 36 + FrameIndex XZWA K 2 37 + FrameIndex XZWA L 2 38 + FrameIndex XZWA M 2 39 + FrameIndex XZWA N 2 40 + FrameIndex XZWA O 2 41 + FrameIndex XZWA P 2 42 + FrameIndex XZWA Q 2 43 + FrameIndex XZWA R 2 44 + FrameIndex XZWA S 2 45 + // DischargeVent + FrameIndex XZWA T 2 152 + FrameIndex XZWA U 2 153 + FrameIndex XZWA V 2 154 + FrameIndex XZWA W 2 155 + FrameIndex XZWA X 2 156 + FrameIndex XZWA Y 2 157 + FrameIndex XZWA Z 2 158 // DischargeVentStill / DischargeVentEnd + FrameIndex XZWB A 2 159 + FrameIndex XZWB B 2 160 + FrameIndex XZWB C 2 161 + // ReadyVent + FrameIndex XZWB D 2 216 + FrameIndex XZWB E 2 217 + FrameIndex XZWB F 2 218 + FrameIndex XZWB G 2 219 + FrameIndex XZWB H 2 220 + FrameIndex XZWB I 2 221 + FrameIndex XZWB J 2 222 + FrameIndex XZWB K 2 223 + FrameIndex XZWB L 2 224 + FrameIndex XZWB M 2 225 +} + +Model "Ynykron" +{ + Path "models" + + Model 1 "Ynykron1st.iqm" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Ynykron.png" + SurfaceSkin 1 4 "YnykronAmmo.png" + AngleOffset -90 + Scale -128 64 128 + FORCECULLBACKFACES + + // Still / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 // Select + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + FrameIndex XZW2 Q 1 16 + FrameIndex XZW2 R 1 17 + FrameIndex XZW2 S 1 18 + FrameIndex XZW2 T 1 19 + FrameIndex XZW2 U 1 20 + FrameIndex XZW2 V 1 21 + FrameIndex XZW2 W 1 22 + FrameIndex XZW2 X 1 23 + FrameIndex XZW2 Y 1 24 + FrameIndex XZW2 Z 1 25 + FrameIndex XZW3 A 1 26 + // Prepare + FrameIndex XZW3 B 1 28 + FrameIndex XZW3 C 1 29 + FrameIndex XZW3 D 1 30 + FrameIndex XZW3 E 1 31 + FrameIndex XZW3 F 1 32 + FrameIndex XZW3 G 1 33 + FrameIndex XZW3 H 1 34 + FrameIndex XZW3 I 1 35 + // Fire + FrameIndex XZW3 J 1 37 + FrameIndex XZW3 K 1 38 + FrameIndex XZW3 L 1 39 + FrameIndex XZW3 M 1 40 + FrameIndex XZW3 N 1 41 + FrameIndex XZW3 O 1 42 + FrameIndex XZW3 P 1 43 + FrameIndex XZW3 Q 1 44 + FrameIndex XZW3 R 1 45 + // Unload Normal + FrameIndex XZW3 S 1 47 + FrameIndex XZW3 T 1 48 + FrameIndex XZW3 U 1 49 + FrameIndex XZW3 V 1 50 + FrameIndex XZW3 W 1 51 + FrameIndex XZW3 X 1 52 + FrameIndex XZW3 Y 1 53 + FrameIndex XZW3 Z 1 54 + FrameIndex XZW4 A 1 55 + FrameIndex XZW4 B 1 56 + FrameIndex XZW4 C 1 57 + FrameIndex XZW4 D 1 58 + FrameIndex XZW4 E 1 59 + FrameIndex XZW4 F 1 60 + FrameIndex XZW4 G 1 61 + FrameIndex XZW4 H 1 62 + FrameIndex XZW4 I 1 63 + FrameIndex XZW4 J 1 64 + FrameIndex XZW4 K 1 65 + FrameIndex XZW4 L 1 66 + FrameIndex XZW4 M 1 67 + FrameIndex XZW4 N 1 68 + FrameIndex XZW4 O 1 69 + FrameIndex XZW4 P 1 70 // Load Normal + FrameIndex XZW4 Q 1 71 + FrameIndex XZW4 R 1 72 + FrameIndex XZW4 S 1 73 + FrameIndex XZW4 T 1 74 + FrameIndex XZW4 U 1 75 + FrameIndex XZW4 V 1 76 + FrameIndex XZW4 W 1 77 + FrameIndex XZW4 X 1 78 + FrameIndex XZW4 Y 1 79 + FrameIndex XZW4 Z 1 80 + FrameIndex XZW5 A 1 81 + FrameIndex XZW5 B 1 82 + FrameIndex XZW5 C 1 83 + FrameIndex XZW5 D 1 84 + FrameIndex XZW5 E 1 85 + FrameIndex XZW5 F 1 86 + FrameIndex XZW5 G 1 87 + FrameIndex XZW5 H 1 88 + FrameIndex XZW5 I 1 89 + FrameIndex XZW5 J 1 90 + FrameIndex XZW5 K 1 91 + FrameIndex XZW5 L 1 92 + FrameIndex XZW5 M 1 93 + FrameIndex XZW5 N 1 94 + FrameIndex XZW5 O 1 95 + // Unload Flipped + FrameIndex XZW5 P 1 97 // Flip Still (for jump cut) + FrameIndex XZW5 Q 1 98 + FrameIndex XZW5 R 1 99 + FrameIndex XZW5 S 1 100 + FrameIndex XZW5 T 1 101 + FrameIndex XZW5 U 1 102 + FrameIndex XZW5 V 1 103 + FrameIndex XZW5 W 1 104 + FrameIndex XZW5 X 1 105 + FrameIndex XZW5 Y 1 106 + FrameIndex XZW5 Z 1 107 + FrameIndex XZW6 A 1 108 + FrameIndex XZW6 B 1 109 + FrameIndex XZW6 C 1 110 + FrameIndex XZW6 D 1 111 + FrameIndex XZW6 E 1 112 + FrameIndex XZW6 F 1 113 + FrameIndex XZW6 G 1 114 + FrameIndex XZW6 H 1 115 + FrameIndex XZW6 I 1 116 + FrameIndex XZW6 J 1 117 + FrameIndex XZW6 K 1 118 + FrameIndex XZW6 L 1 119 + FrameIndex XZW6 M 1 120 + FrameIndex XZW6 N 1 121 // Load Flipped + FrameIndex XZW6 O 1 122 + FrameIndex XZW6 P 1 123 + FrameIndex XZW6 Q 1 124 + FrameIndex XZW6 R 1 125 + FrameIndex XZW6 S 1 126 + FrameIndex XZW6 T 1 127 + FrameIndex XZW6 U 1 128 + FrameIndex XZW6 V 1 129 + FrameIndex XZW6 W 1 130 + FrameIndex XZW6 X 1 131 + FrameIndex XZW6 Y 1 132 + FrameIndex XZW6 Z 1 133 + FrameIndex XZW7 A 1 134 + FrameIndex XZW7 B 1 135 + FrameIndex XZW7 C 1 136 + FrameIndex XZW7 D 1 137 + FrameIndex XZW7 E 1 138 + FrameIndex XZW7 F 1 139 + FrameIndex XZW7 G 1 140 + FrameIndex XZW7 H 1 141 + FrameIndex XZW7 I 1 142 + FrameIndex XZW7 J 1 143 + FrameIndex XZW7 K 1 144 + FrameIndex XZW7 L 1 145 + FrameIndex XZW7 M 1 146 + // Discharge + FrameIndex XZW7 N 1 149 + FrameIndex XZW7 O 1 150 + FrameIndex XZW7 P 1 151 + FrameIndex XZW7 Q 1 152 + FrameIndex XZW7 R 1 153 + FrameIndex XZW7 S 1 154 + FrameIndex XZW7 T 1 155 + FrameIndex XZW7 U 1 156 + FrameIndex XZW7 V 1 157 + FrameIndex XZW7 W 1 158 // DischargeStill / DischargeEnd + FrameIndex XZW7 X 1 159 + FrameIndex XZW7 Y 1 160 + FrameIndex XZW7 Z 1 161 + // Idle + FrameIndex XZW8 A 1 163 + FrameIndex XZW8 B 1 164 + FrameIndex XZW8 C 1 165 + FrameIndex XZW8 D 1 166 + FrameIndex XZW8 E 1 167 + FrameIndex XZW8 F 1 168 + FrameIndex XZW8 G 1 169 + FrameIndex XZW8 H 1 170 + FrameIndex XZW8 I 1 171 + FrameIndex XZW8 J 1 172 + FrameIndex XZW8 K 1 173 + FrameIndex XZW8 L 1 174 + FrameIndex XZW8 M 1 175 + FrameIndex XZW8 N 1 176 + FrameIndex XZW8 O 1 177 + FrameIndex XZW8 P 1 178 + FrameIndex XZW8 Q 1 179 + FrameIndex XZW8 R 1 180 + FrameIndex XZW8 S 1 181 + FrameIndex XZW8 T 1 182 + FrameIndex XZW8 U 1 183 + FrameIndex XZW8 V 1 184 + FrameIndex XZW8 W 1 185 + FrameIndex XZW8 X 1 186 + // Melee + FrameIndex XZW8 Y 1 188 + FrameIndex XZW8 Z 1 189 + FrameIndex XZW9 A 1 190 + FrameIndex XZW9 B 1 191 + FrameIndex XZW9 C 1 192 + FrameIndex XZW9 D 1 193 + FrameIndex XZW9 E 1 194 + FrameIndex XZW9 F 1 195 + FrameIndex XZW9 G 1 196 + FrameIndex XZW9 H 1 197 + FrameIndex XZW9 I 1 198 + FrameIndex XZW9 J 1 199 + FrameIndex XZW9 K 1 200 + FrameIndex XZW9 L 1 201 + FrameIndex XZW9 M 1 202 + FrameIndex XZW9 N 1 203 + FrameIndex XZW9 O 1 204 + FrameIndex XZW9 P 1 205 + FrameIndex XZW9 Q 1 206 + FrameIndex XZW9 R 1 207 + FrameIndex XZW9 S 1 208 + FrameIndex XZW9 T 1 209 + FrameIndex XZW9 U 1 210 + FrameIndex XZW9 V 1 211 + FrameIndex XZW9 W 1 212 + FrameIndex XZW9 X 1 213 + FrameIndex XZW9 Y 1 214 + FrameIndex XZW9 Z 1 215 + // Ready + FrameIndex XZWA A 1 217 + FrameIndex XZWA B 1 218 + FrameIndex XZWA C 1 219 + FrameIndex XZWA D 1 220 + FrameIndex XZWA E 1 221 + FrameIndex XZWA F 1 222 + FrameIndex XZWA G 1 223 + FrameIndex XZWA H 1 224 + FrameIndex XZWA I 1 225 +} diff --git a/models/.gitignore b/models/.gitignore new file mode 100644 index 000000000..d1b0ff416 --- /dev/null +++ b/models/.gitignore @@ -0,0 +1 @@ +*.blend1 diff --git a/models/ASmallPriceToPay.iqm b/models/ASmallPriceToPay.iqm new file mode 100644 index 000000000..03333c7c3 Binary files /dev/null and b/models/ASmallPriceToPay.iqm differ diff --git a/models/ASmallPriceToPay.png b/models/ASmallPriceToPay.png index cbc194db5..6da3eaaca 100644 Binary files a/models/ASmallPriceToPay.png and b/models/ASmallPriceToPay.png differ diff --git a/models/ASmallPriceToPay_a.3d b/models/ASmallPriceToPay_a.3d deleted file mode 100644 index 49004bec8..000000000 Binary files a/models/ASmallPriceToPay_a.3d and /dev/null differ diff --git a/models/ASmallPriceToPay_d.3d b/models/ASmallPriceToPay_d.3d deleted file mode 100644 index 145ef8d47..000000000 Binary files a/models/ASmallPriceToPay_d.3d and /dev/null differ diff --git a/models/AkariProject.png b/models/AkariProject.png index a8ea05170..7bffe7b4c 100644 Binary files a/models/AkariProject.png and b/models/AkariProject.png differ diff --git a/models/AkariProject1st.blend b/models/AkariProject1st.blend index 022846608..92a110422 100644 Binary files a/models/AkariProject1st.blend and b/models/AkariProject1st.blend differ diff --git a/models/AkariProject1st.iqm b/models/AkariProject1st.iqm new file mode 100644 index 000000000..18ecf30cc Binary files /dev/null and b/models/AkariProject1st.iqm differ diff --git a/models/AkariProject1st_a.3d b/models/AkariProject1st_a.3d deleted file mode 100644 index d601a40d1..000000000 Binary files a/models/AkariProject1st_a.3d and /dev/null differ diff --git a/models/AkariProject1st_d.3d b/models/AkariProject1st_d.3d deleted file mode 100644 index 9bf28fb5e..000000000 Binary files a/models/AkariProject1st_d.3d and /dev/null differ diff --git a/models/AmmoFabricator.iqm b/models/AmmoFabricator.iqm new file mode 100644 index 000000000..03ac65548 Binary files /dev/null and b/models/AmmoFabricator.iqm differ diff --git a/models/AmmoFabricator_a.3d b/models/AmmoFabricator_a.3d deleted file mode 100644 index 2a5c20ef7..000000000 Binary files a/models/AmmoFabricator_a.3d and /dev/null differ diff --git a/models/AmmoFabricator_d.3d b/models/AmmoFabricator_d.3d deleted file mode 100644 index 039d24b57..000000000 Binary files a/models/AmmoFabricator_d.3d and /dev/null differ diff --git a/models/Barrier.iqm b/models/Barrier.iqm new file mode 100644 index 000000000..b20a961e5 Binary files /dev/null and b/models/Barrier.iqm differ diff --git a/models/Barrier.png b/models/Barrier.png index efdb09f4c..d14e6a92d 100644 Binary files a/models/Barrier.png and b/models/Barrier.png differ diff --git a/models/BarrierX.iqm b/models/BarrierX.iqm new file mode 100644 index 000000000..9cca68c2a Binary files /dev/null and b/models/BarrierX.iqm differ diff --git a/models/Barrier_a.3d b/models/Barrier_a.3d deleted file mode 100644 index 7316b3b0c..000000000 Binary files a/models/Barrier_a.3d and /dev/null differ diff --git a/models/Barrier_bright.png b/models/Barrier_bright.png index 1896f1239..d30675415 100644 Binary files a/models/Barrier_bright.png and b/models/Barrier_bright.png differ diff --git a/models/Barrier_d.3d b/models/Barrier_d.3d deleted file mode 100644 index 6dbd77ea5..000000000 Binary files a/models/Barrier_d.3d and /dev/null differ diff --git a/models/Barrier_mask.png b/models/Barrier_mask.png new file mode 100644 index 000000000..c7e6cafdd Binary files /dev/null and b/models/Barrier_mask.png differ diff --git a/models/BlastSuit.iqm b/models/BlastSuit.iqm new file mode 100644 index 000000000..1adb0867e Binary files /dev/null and b/models/BlastSuit.iqm differ diff --git a/models/BlastSuit.png b/models/BlastSuit.png index 2dbb213db..c8c18165b 100644 Binary files a/models/BlastSuit.png and b/models/BlastSuit.png differ diff --git a/models/BlastSuit_a.3d b/models/BlastSuit_a.3d deleted file mode 100644 index 7e6b455f7..000000000 Binary files a/models/BlastSuit_a.3d and /dev/null differ diff --git a/models/BlastSuit_d.3d b/models/BlastSuit_d.3d deleted file mode 100644 index f3b61fb94..000000000 Binary files a/models/BlastSuit_d.3d and /dev/null differ diff --git a/models/BlastSuit_mask.png b/models/BlastSuit_mask.png new file mode 100644 index 000000000..60d3c1eba Binary files /dev/null and b/models/BlastSuit_mask.png differ diff --git a/models/Book.blend b/models/Book.blend index f14c5f535..7e86fefdc 100644 Binary files a/models/Book.blend and b/models/Book.blend differ diff --git a/models/Book.iqm b/models/Book.iqm new file mode 100644 index 000000000..3cdeca924 Binary files /dev/null and b/models/Book.iqm differ diff --git a/models/Book_a.3d b/models/Book_a.3d deleted file mode 100644 index 35fb78b1c..000000000 Binary files a/models/Book_a.3d and /dev/null differ diff --git a/models/Book_d.3d b/models/Book_d.3d deleted file mode 100644 index f6337bfeb..000000000 Binary files a/models/Book_d.3d and /dev/null differ diff --git a/models/Boolet.png b/models/Boolet.png deleted file mode 100644 index 9fbf7219b..000000000 Binary files a/models/Boolet.png and /dev/null differ diff --git a/models/Boolet_Candy.png b/models/Boolet_Candy.png deleted file mode 100644 index 73e4c69e5..000000000 Binary files a/models/Boolet_Candy.png and /dev/null differ diff --git a/models/Boolet_Explodium.png b/models/Boolet_Explodium.png deleted file mode 100644 index c783de7ef..000000000 Binary files a/models/Boolet_Explodium.png and /dev/null differ diff --git a/models/Boolet_Flech.png b/models/Boolet_Flech.png deleted file mode 100644 index 3f2c1d20e..000000000 Binary files a/models/Boolet_Flech.png and /dev/null differ diff --git a/models/Boolet_a.3d b/models/Boolet_a.3d deleted file mode 100644 index 4ffa3f119..000000000 Binary files a/models/Boolet_a.3d and /dev/null differ diff --git a/models/Boolet_d.3d b/models/Boolet_d.3d deleted file mode 100644 index a506c66ae..000000000 Binary files a/models/Boolet_d.3d and /dev/null differ diff --git a/models/CD.blend b/models/CD.blend index 80fc4d816..f66a7cb0a 100644 Binary files a/models/CD.blend and b/models/CD.blend differ diff --git a/models/CD.iqm b/models/CD.iqm new file mode 100644 index 000000000..32c7d7787 Binary files /dev/null and b/models/CD.iqm differ diff --git a/models/CD_a.3d b/models/CD_a.3d deleted file mode 100644 index 487712c16..000000000 Binary files a/models/CD_a.3d and /dev/null differ diff --git a/models/CD_d.3d b/models/CD_d.3d deleted file mode 100644 index 9910d53f1..000000000 Binary files a/models/CD_d.3d and /dev/null differ diff --git a/models/CandyBullet.png b/models/CandyBullet.png index 8a76d9da5..6e34923ae 100644 Binary files a/models/CandyBullet.png and b/models/CandyBullet.png differ diff --git a/models/CandyCasing.png b/models/CandyCasing.png index 4b1e7da82..071d01b9e 100644 Binary files a/models/CandyCasing.png and b/models/CandyCasing.png differ diff --git a/models/CandyCasing_Used.png b/models/CandyCasing_Used.png index 3dece754d..6ba141ed2 100644 Binary files a/models/CandyCasing_Used.png and b/models/CandyCasing_Used.png differ diff --git a/models/CandyGun.png b/models/CandyGun.png index 383955f94..5b5e5544c 100644 Binary files a/models/CandyGun.png and b/models/CandyGun.png differ diff --git a/models/CandyGun_EmptyMag.png b/models/CandyGun_EmptyMag.png index 6f6f95382..c7940fcd8 100644 Binary files a/models/CandyGun_EmptyMag.png and b/models/CandyGun_EmptyMag.png differ diff --git a/models/CandyGun_mask.png b/models/CandyGun_mask.png deleted file mode 100644 index ac1cc20a3..000000000 Binary files a/models/CandyGun_mask.png and /dev/null differ diff --git a/models/Chancebox.iqm b/models/Chancebox.iqm new file mode 100644 index 000000000..886192c5b Binary files /dev/null and b/models/Chancebox.iqm differ diff --git a/models/Chancebox.png b/models/Chancebox.png index e6c8a73bf..a34ba8a0d 100644 Binary files a/models/Chancebox.png and b/models/Chancebox.png differ diff --git a/models/Chancebox_Side.iqm b/models/Chancebox_Side.iqm new file mode 100644 index 000000000..56f8baecf Binary files /dev/null and b/models/Chancebox_Side.iqm differ diff --git a/models/Chancebox_Side_a.3d b/models/Chancebox_Side_a.3d deleted file mode 100644 index e5aacfd97..000000000 Binary files a/models/Chancebox_Side_a.3d and /dev/null differ diff --git a/models/Chancebox_Side_d.3d b/models/Chancebox_Side_d.3d deleted file mode 100644 index 085fc0d61..000000000 Binary files a/models/Chancebox_Side_d.3d and /dev/null differ diff --git a/models/Chancebox_Top.iqm b/models/Chancebox_Top.iqm new file mode 100644 index 000000000..9236c7163 Binary files /dev/null and b/models/Chancebox_Top.iqm differ diff --git a/models/Chancebox_Top_a.3d b/models/Chancebox_Top_a.3d deleted file mode 100644 index 6f4f91b1a..000000000 Binary files a/models/Chancebox_Top_a.3d and /dev/null differ diff --git a/models/Chancebox_Top_d.3d b/models/Chancebox_Top_d.3d deleted file mode 100644 index ce1081bdf..000000000 Binary files a/models/Chancebox_Top_d.3d and /dev/null differ diff --git a/models/Chancebox_a.3d b/models/Chancebox_a.3d deleted file mode 100644 index d3de061dc..000000000 Binary files a/models/Chancebox_a.3d and /dev/null differ diff --git a/models/Chancebox_bright.png b/models/Chancebox_bright.png index 9ab85cf2a..25630eb46 100644 Binary files a/models/Chancebox_bright.png and b/models/Chancebox_bright.png differ diff --git a/models/Chancebox_d.3d b/models/Chancebox_d.3d deleted file mode 100644 index e5dba32b6..000000000 Binary files a/models/Chancebox_d.3d and /dev/null differ diff --git a/models/Chancebox_mask.png b/models/Chancebox_mask.png index 49d314bd2..25c8fdf76 100644 Binary files a/models/Chancebox_mask.png and b/models/Chancebox_mask.png differ diff --git a/models/Chunky.md3 b/models/Chunky.md3 new file mode 100644 index 000000000..1f56092e7 Binary files /dev/null and b/models/Chunky.md3 differ diff --git a/models/Chunky.png b/models/Chunky.png index f55673388..dd196bf3e 100644 Binary files a/models/Chunky.png and b/models/Chunky.png differ diff --git a/models/ChunkyMeat.md3 b/models/ChunkyMeat.md3 new file mode 100644 index 000000000..1cf17029c Binary files /dev/null and b/models/ChunkyMeat.md3 differ diff --git a/models/ChunkyMeat.png b/models/ChunkyMeat.png new file mode 100644 index 000000000..105c858c3 Binary files /dev/null and b/models/ChunkyMeat.png differ diff --git a/models/Chunky_a.3d b/models/Chunky_a.3d deleted file mode 100644 index 2778d8af2..000000000 Binary files a/models/Chunky_a.3d and /dev/null differ diff --git a/models/Chunky_d.3d b/models/Chunky_d.3d deleted file mode 100644 index 0366bc4fa..000000000 Binary files a/models/Chunky_d.3d and /dev/null differ diff --git a/models/CombatHammer.blend b/models/CombatHammer.blend new file mode 100644 index 000000000..a1a9554bc Binary files /dev/null and b/models/CombatHammer.blend differ diff --git a/models/CombatHammer.png b/models/CombatHammer.png new file mode 100644 index 000000000..9064170f6 Binary files /dev/null and b/models/CombatHammer.png differ diff --git a/models/CombatHammer1st.blend b/models/CombatHammer1st.blend new file mode 100644 index 000000000..b4038b5b5 Binary files /dev/null and b/models/CombatHammer1st.blend differ diff --git a/models/CombatHammer1st.iqm b/models/CombatHammer1st.iqm new file mode 100644 index 000000000..88d303034 Binary files /dev/null and b/models/CombatHammer1st.iqm differ diff --git a/models/CombatHammerPickup.iqm b/models/CombatHammerPickup.iqm new file mode 100644 index 000000000..226e22731 Binary files /dev/null and b/models/CombatHammerPickup.iqm differ diff --git a/models/CombatHammer_mask.png b/models/CombatHammer_mask.png new file mode 100644 index 000000000..4b6b27cd1 Binary files /dev/null and b/models/CombatHammer_mask.png differ diff --git a/models/CubeHealth.iqm b/models/CubeHealth.iqm new file mode 100644 index 000000000..dadaf9224 Binary files /dev/null and b/models/CubeHealth.iqm differ diff --git a/models/CubeHealth.png b/models/CubeHealth.png index e69d7f0ad..b8b660d9d 100644 Binary files a/models/CubeHealth.png and b/models/CubeHealth.png differ diff --git a/models/CubeHealth_a.3d b/models/CubeHealth_a.3d deleted file mode 100644 index 342944852..000000000 Binary files a/models/CubeHealth_a.3d and /dev/null differ diff --git a/models/CubeHealth_d.3d b/models/CubeHealth_d.3d deleted file mode 100644 index a952fc15d..000000000 Binary files a/models/CubeHealth_d.3d and /dev/null differ diff --git a/models/CubeHealth_mask.png b/models/CubeHealth_mask.png index ada1d6728..edcb7ab0d 100644 Binary files a/models/CubeHealth_mask.png and b/models/CubeHealth_mask.png differ diff --git a/models/DeepImpact.blend b/models/DeepImpact.blend index 6922c8f57..9e7d42a7d 100644 Binary files a/models/DeepImpact.blend and b/models/DeepImpact.blend differ diff --git a/models/DeepImpact.png b/models/DeepImpact.png index 3bda34373..5fd6f9b61 100644 Binary files a/models/DeepImpact.png and b/models/DeepImpact.png differ diff --git a/models/DeepImpact1st.blend b/models/DeepImpact1st.blend index d80ae11a7..cc705b47c 100644 Binary files a/models/DeepImpact1st.blend and b/models/DeepImpact1st.blend differ diff --git a/models/DeepImpact1st.iqm b/models/DeepImpact1st.iqm new file mode 100644 index 000000000..1be152cf1 Binary files /dev/null and b/models/DeepImpact1st.iqm differ diff --git a/models/DeepImpact1st_a.3d b/models/DeepImpact1st_a.3d deleted file mode 100644 index acf00214d..000000000 Binary files a/models/DeepImpact1st_a.3d and /dev/null differ diff --git a/models/DeepImpact1st_d.3d b/models/DeepImpact1st_d.3d deleted file mode 100644 index 92b7c84ef..000000000 Binary files a/models/DeepImpact1st_d.3d and /dev/null differ diff --git a/models/DeepImpactPickup.iqm b/models/DeepImpactPickup.iqm new file mode 100644 index 000000000..33e84e97a Binary files /dev/null and b/models/DeepImpactPickup.iqm differ diff --git a/models/DeepImpactPickup_a.3d b/models/DeepImpactPickup_a.3d deleted file mode 100644 index 0e80cb1b6..000000000 Binary files a/models/DeepImpactPickup_a.3d and /dev/null differ diff --git a/models/DeepImpactPickup_d.3d b/models/DeepImpactPickup_d.3d deleted file mode 100644 index 5928de6ff..000000000 Binary files a/models/DeepImpactPickup_d.3d and /dev/null differ diff --git a/models/DeepImpact_mask.png b/models/DeepImpact_mask.png new file mode 100644 index 000000000..8c5046883 Binary files /dev/null and b/models/DeepImpact_mask.png differ diff --git a/models/DemoArms.png b/models/DemoArms.png index 6eb43108b..10206a15f 100644 Binary files a/models/DemoArms.png and b/models/DemoArms.png differ diff --git a/models/DemoArms_mask.png b/models/DemoArms_mask.png new file mode 100644 index 000000000..464353218 Binary files /dev/null and b/models/DemoArms_mask.png differ diff --git a/models/DemoBody.png b/models/DemoBody.png index 3a046b419..7eee96a03 100644 Binary files a/models/DemoBody.png and b/models/DemoBody.png differ diff --git a/models/DemoBody_mask.png b/models/DemoBody_mask.png new file mode 100644 index 000000000..93e3e9d92 Binary files /dev/null and b/models/DemoBody_mask.png differ diff --git a/models/DemoFace.xcf b/models/DemoFace.xcf deleted file mode 100644 index 1da0dced1..000000000 Binary files a/models/DemoFace.xcf and /dev/null differ diff --git a/models/DemoFace_Blink.png b/models/DemoFace_Blink.png index f9aabb7cf..68cc231c3 100644 Binary files a/models/DemoFace_Blink.png and b/models/DemoFace_Blink.png differ diff --git a/models/DemoFace_Booty.png b/models/DemoFace_Booty.png index 43a5f2b4b..bdced76c9 100644 Binary files a/models/DemoFace_Booty.png and b/models/DemoFace_Booty.png differ diff --git a/models/DemoFace_Dead.png b/models/DemoFace_Dead.png index bd0ce6f85..49e4c9c7e 100644 Binary files a/models/DemoFace_Dead.png and b/models/DemoFace_Dead.png differ diff --git a/models/DemoFace_Default.png b/models/DemoFace_Default.png index 4c06c9a8c..eb4fd05f3 100644 Binary files a/models/DemoFace_Default.png and b/models/DemoFace_Default.png differ diff --git a/models/DemoFace_Dizzy.png b/models/DemoFace_Dizzy.png index 31cf93f5c..1ac45f2c4 100644 Binary files a/models/DemoFace_Dizzy.png and b/models/DemoFace_Dizzy.png differ diff --git a/models/DemoFace_Evil.png b/models/DemoFace_Evil.png index 019106615..3a41df1a4 100644 Binary files a/models/DemoFace_Evil.png and b/models/DemoFace_Evil.png differ diff --git a/models/DemoFace_Head.png b/models/DemoFace_Head.png deleted file mode 100644 index 23fca1ba4..000000000 Binary files a/models/DemoFace_Head.png and /dev/null differ diff --git a/models/DemoFace_Hurt.png b/models/DemoFace_Hurt.png index 52cfae024..7060c94ed 100644 Binary files a/models/DemoFace_Hurt.png and b/models/DemoFace_Hurt.png differ diff --git a/models/DemoFace_HurtLeft.png b/models/DemoFace_HurtLeft.png index fa67f3f0b..1f40d7b7a 100644 Binary files a/models/DemoFace_HurtLeft.png and b/models/DemoFace_HurtLeft.png differ diff --git a/models/DemoFace_HurtRight.png b/models/DemoFace_HurtRight.png index aa7fa2470..6cab24c83 100644 Binary files a/models/DemoFace_HurtRight.png and b/models/DemoFace_HurtRight.png differ diff --git a/models/DemoFace_Off.png b/models/DemoFace_Off.png index 6c9148bed..fde2acd4d 100644 Binary files a/models/DemoFace_Off.png and b/models/DemoFace_Off.png differ diff --git a/models/DemoFace_Ouch.png b/models/DemoFace_Ouch.png index 51a988f0d..9bc29bb87 100644 Binary files a/models/DemoFace_Ouch.png and b/models/DemoFace_Ouch.png differ diff --git a/models/DemoFace_OuchLeft.png b/models/DemoFace_OuchLeft.png new file mode 100644 index 000000000..320f0b214 Binary files /dev/null and b/models/DemoFace_OuchLeft.png differ diff --git a/models/DemoFace_OuchRight.png b/models/DemoFace_OuchRight.png new file mode 100644 index 000000000..87002fc5b Binary files /dev/null and b/models/DemoFace_OuchRight.png differ diff --git a/models/DemoFace_Sad.png b/models/DemoFace_Sad.png index 9da677453..bce11bb89 100644 Binary files a/models/DemoFace_Sad.png and b/models/DemoFace_Sad.png differ diff --git a/models/DemoFace_Smug.png b/models/DemoFace_Smug.png index 22fac6c82..e6c6127b3 100644 Binary files a/models/DemoFace_Smug.png and b/models/DemoFace_Smug.png differ diff --git a/models/DemoFace_bright.png b/models/DemoFace_bright.png index a467b9420..2c3bb6302 100644 Binary files a/models/DemoFace_bright.png and b/models/DemoFace_bright.png differ diff --git a/models/DemoFace_mask.png b/models/DemoFace_mask.png new file mode 100644 index 000000000..15c53fd84 Binary files /dev/null and b/models/DemoFace_mask.png differ diff --git a/models/DemoHead.png b/models/DemoHead.png index 0662e72a7..5044f8e31 100644 Binary files a/models/DemoHead.png and b/models/DemoHead.png differ diff --git a/models/DemoHead_mask.png b/models/DemoHead_mask.png new file mode 100644 index 000000000..5ccf3c3db Binary files /dev/null and b/models/DemoHead_mask.png differ diff --git a/models/DemoKeys.png b/models/DemoKeys.png index b7ae7d284..2d62d8a9e 100644 Binary files a/models/DemoKeys.png and b/models/DemoKeys.png differ diff --git a/models/DemoKeys_mask.png b/models/DemoKeys_mask.png new file mode 100644 index 000000000..f25fbcd68 Binary files /dev/null and b/models/DemoKeys_mask.png differ diff --git a/models/DemoLegs.png b/models/DemoLegs.png index dbb74412f..38ca077ea 100644 Binary files a/models/DemoLegs.png and b/models/DemoLegs.png differ diff --git a/models/DemoLegs_mask.png b/models/DemoLegs_mask.png new file mode 100644 index 000000000..65a9b15d1 Binary files /dev/null and b/models/DemoLegs_mask.png differ diff --git a/models/DemoMisc.png b/models/DemoMisc.png index 81d6a44cc..15251179b 100644 Binary files a/models/DemoMisc.png and b/models/DemoMisc.png differ diff --git a/models/DemoMisc_mask.png b/models/DemoMisc_mask.png new file mode 100644 index 000000000..7c9be55eb Binary files /dev/null and b/models/DemoMisc_mask.png differ diff --git a/models/DemoPlush.blend b/models/DemoPlush.blend index 054ca8608..0da8ed917 100644 Binary files a/models/DemoPlush.blend and b/models/DemoPlush.blend differ diff --git a/models/DemoPlush.iqm b/models/DemoPlush.iqm new file mode 100644 index 000000000..2a76cd23c Binary files /dev/null and b/models/DemoPlush.iqm differ diff --git a/models/DemoPlush.png b/models/DemoPlush.png index 46cce8d8e..70c663432 100644 Binary files a/models/DemoPlush.png and b/models/DemoPlush.png differ diff --git a/models/DemoPlush1st.blend b/models/DemoPlush1st.blend index ae680d3bc..2359601ce 100644 Binary files a/models/DemoPlush1st.blend and b/models/DemoPlush1st.blend differ diff --git a/models/DemoPlush1st.iqm b/models/DemoPlush1st.iqm new file mode 100644 index 000000000..87737db46 Binary files /dev/null and b/models/DemoPlush1st.iqm differ diff --git a/models/DemoPlush1st_a.3d b/models/DemoPlush1st_a.3d deleted file mode 100644 index 7b5d584b7..000000000 Binary files a/models/DemoPlush1st_a.3d and /dev/null differ diff --git a/models/DemoPlush1st_d.3d b/models/DemoPlush1st_d.3d deleted file mode 100644 index 392a02a2a..000000000 Binary files a/models/DemoPlush1st_d.3d and /dev/null differ diff --git a/models/DemoPlush2.png b/models/DemoPlush2.png index 1f6a40f3e..f8cec829e 100644 Binary files a/models/DemoPlush2.png and b/models/DemoPlush2.png differ diff --git a/models/DemoPlush2_bright.png b/models/DemoPlush2_bright.png index 9c3a21562..acd9ce904 100644 Binary files a/models/DemoPlush2_bright.png and b/models/DemoPlush2_bright.png differ diff --git a/models/DemoPlush_a.3d b/models/DemoPlush_a.3d deleted file mode 100644 index cff217898..000000000 Binary files a/models/DemoPlush_a.3d and /dev/null differ diff --git a/models/DemoPlush_bright.png b/models/DemoPlush_bright.png index 1a54cec59..77d8dc049 100644 Binary files a/models/DemoPlush_bright.png and b/models/DemoPlush_bright.png differ diff --git a/models/DemoPlush_d.3d b/models/DemoPlush_d.3d deleted file mode 100644 index 4212eee3c..000000000 Binary files a/models/DemoPlush_d.3d and /dev/null differ diff --git a/models/DemoSoft.png b/models/DemoSoft.png index 042e94ec6..e36b7d09f 100644 Binary files a/models/DemoSoft.png and b/models/DemoSoft.png differ diff --git a/models/DemoSoft_mask.png b/models/DemoSoft_mask.png new file mode 100644 index 000000000..707b34b61 Binary files /dev/null and b/models/DemoSoft_mask.png differ diff --git a/models/DemoTags.png b/models/DemoTags.png index bd223d3b3..d9e5875bf 100644 Binary files a/models/DemoTags.png and b/models/DemoTags.png differ diff --git a/models/DemoTagsBlack.png b/models/DemoTagsBlack.png new file mode 100644 index 000000000..98ef1adcb Binary files /dev/null and b/models/DemoTagsBlack.png differ diff --git a/models/DemoTagsBlue.png b/models/DemoTagsBlue.png new file mode 100644 index 000000000..b54207b2c Binary files /dev/null and b/models/DemoTagsBlue.png differ diff --git a/models/DemoTagsCyan.png b/models/DemoTagsCyan.png new file mode 100644 index 000000000..cf9d15b1d Binary files /dev/null and b/models/DemoTagsCyan.png differ diff --git a/models/DemoTagsDragonfly.png b/models/DemoTagsDragonfly.png new file mode 100644 index 000000000..fa6dfc2b6 Binary files /dev/null and b/models/DemoTagsDragonfly.png differ diff --git a/models/DemoTagsGold.png b/models/DemoTagsGold.png new file mode 100644 index 000000000..e58b8c177 Binary files /dev/null and b/models/DemoTagsGold.png differ diff --git a/models/DemoTagsMagenta.png b/models/DemoTagsMagenta.png new file mode 100644 index 000000000..40387cffe Binary files /dev/null and b/models/DemoTagsMagenta.png differ diff --git a/models/DemoTagsOrange.png b/models/DemoTagsOrange.png new file mode 100644 index 000000000..10061b527 Binary files /dev/null and b/models/DemoTagsOrange.png differ diff --git a/models/DemoTagsPeach.png b/models/DemoTagsPeach.png new file mode 100644 index 000000000..073f5dfdb Binary files /dev/null and b/models/DemoTagsPeach.png differ diff --git a/models/DemoTagsPink.png b/models/DemoTagsPink.png new file mode 100644 index 000000000..afc892783 Binary files /dev/null and b/models/DemoTagsPink.png differ diff --git a/models/DemoTagsPurple.png b/models/DemoTagsPurple.png new file mode 100644 index 000000000..bb5b09c32 Binary files /dev/null and b/models/DemoTagsPurple.png differ diff --git a/models/DemoTagsRed.png b/models/DemoTagsRed.png new file mode 100644 index 000000000..4a1b72cc7 Binary files /dev/null and b/models/DemoTagsRed.png differ diff --git a/models/DemoTagsRust.png b/models/DemoTagsRust.png new file mode 100644 index 000000000..addde45af Binary files /dev/null and b/models/DemoTagsRust.png differ diff --git a/models/DemoTagsViolet.png b/models/DemoTagsViolet.png new file mode 100644 index 000000000..0fa39f0b2 Binary files /dev/null and b/models/DemoTagsViolet.png differ diff --git a/models/DemoTagsWhite.png b/models/DemoTagsWhite.png new file mode 100644 index 000000000..8f62394b5 Binary files /dev/null and b/models/DemoTagsWhite.png differ diff --git a/models/DemoTagsYellow.png b/models/DemoTagsYellow.png new file mode 100644 index 000000000..45fa2cf7f Binary files /dev/null and b/models/DemoTagsYellow.png differ diff --git a/models/DemoTags_bright.png b/models/DemoTags_bright.png index 7456d2cd9..9fa023da9 100644 Binary files a/models/DemoTags_bright.png and b/models/DemoTags_bright.png differ diff --git a/models/DemoTags_mask.png b/models/DemoTags_mask.png new file mode 100644 index 000000000..35205d4f4 Binary files /dev/null and b/models/DemoTags_mask.png differ diff --git a/models/Demolitionist.blend b/models/Demolitionist.blend index 63d80e4ee..62d3fa38f 100644 Binary files a/models/Demolitionist.blend and b/models/Demolitionist.blend differ diff --git a/models/DemolitionistArmDup.blend b/models/DemolitionistArmDup.blend index e25551e9f..29ae66f73 100644 Binary files a/models/DemolitionistArmDup.blend and b/models/DemolitionistArmDup.blend differ diff --git a/models/DemolitionistArms.blend b/models/DemolitionistArms.blend index dd319d63f..b14401159 100644 Binary files a/models/DemolitionistArms.blend and b/models/DemolitionistArms.blend differ diff --git a/models/DemolitionistArms_IK.blend b/models/DemolitionistArms_IK.blend new file mode 100644 index 000000000..76e8d2a6b Binary files /dev/null and b/models/DemolitionistArms_IK.blend differ diff --git a/models/DemolitionistInter.blend b/models/DemolitionistInter.blend deleted file mode 100644 index 8f834daa2..000000000 Binary files a/models/DemolitionistInter.blend and /dev/null differ diff --git a/models/DemolitionistPlayer.blend b/models/DemolitionistPlayer.blend index f2a53dd9d..ffa86b734 100644 Binary files a/models/DemolitionistPlayer.blend and b/models/DemolitionistPlayer.blend differ diff --git a/models/DemolitionistPlayer.iqm b/models/DemolitionistPlayer.iqm new file mode 100644 index 000000000..9cb9a2dd5 Binary files /dev/null and b/models/DemolitionistPlayer.iqm differ diff --git a/models/DemolitionistPlayer_a.3d b/models/DemolitionistPlayer_a.3d deleted file mode 100644 index 7e6cd166b..000000000 Binary files a/models/DemolitionistPlayer_a.3d and /dev/null differ diff --git a/models/DemolitionistPlayer_d.3d b/models/DemolitionistPlayer_d.3d deleted file mode 100644 index b6b0a5a0b..000000000 Binary files a/models/DemolitionistPlayer_d.3d and /dev/null differ diff --git a/models/Demolitionist_IK.blend b/models/Demolitionist_IK.blend index 1c70cd196..3ffad3dba 100644 Binary files a/models/Demolitionist_IK.blend and b/models/Demolitionist_IK.blend differ diff --git a/models/DevaSigil.blend b/models/DevaSigil.blend index 08af7d87a..f2fc67126 100644 Binary files a/models/DevaSigil.blend and b/models/DevaSigil.blend differ diff --git a/models/DevaSigil.iqm b/models/DevaSigil.iqm new file mode 100644 index 000000000..2d7686fa4 Binary files /dev/null and b/models/DevaSigil.iqm differ diff --git a/models/DevaSigil.png b/models/DevaSigil.png index c48a5e2e5..c6f8676ab 100644 Binary files a/models/DevaSigil.png and b/models/DevaSigil.png differ diff --git a/models/DevaSigil_a.3d b/models/DevaSigil_a.3d deleted file mode 100644 index b675185c5..000000000 Binary files a/models/DevaSigil_a.3d and /dev/null differ diff --git a/models/DevaSigil_d.3d b/models/DevaSigil_d.3d deleted file mode 100644 index 4563648cc..000000000 Binary files a/models/DevaSigil_d.3d and /dev/null differ diff --git a/models/DevaSigil_mask.png b/models/DevaSigil_mask.png index 5edfcab58..90712a73e 100644 Binary files a/models/DevaSigil_mask.png and b/models/DevaSigil_mask.png differ diff --git a/models/DivineSprite.blend b/models/DivineSprite.blend index 49ee5aefa..7de1d21b4 100644 Binary files a/models/DivineSprite.blend and b/models/DivineSprite.blend differ diff --git a/models/DivineSprite.iqm b/models/DivineSprite.iqm new file mode 100644 index 000000000..f68d4ece4 Binary files /dev/null and b/models/DivineSprite.iqm differ diff --git a/models/DivineSprite.png b/models/DivineSprite.png index b569511c7..c921e9746 100644 Binary files a/models/DivineSprite.png and b/models/DivineSprite.png differ diff --git a/models/DivineSprite_a.3d b/models/DivineSprite_a.3d deleted file mode 100644 index 06d4eef1b..000000000 Binary files a/models/DivineSprite_a.3d and /dev/null differ diff --git a/models/DivineSprite_d.3d b/models/DivineSprite_d.3d deleted file mode 100644 index b5c6291b2..000000000 Binary files a/models/DivineSprite_d.3d and /dev/null differ diff --git a/models/DivineSprite_mask.png b/models/DivineSprite_mask.png index 1520b0555..1bdebfe75 100644 Binary files a/models/DivineSprite_mask.png and b/models/DivineSprite_mask.png differ diff --git a/models/DoomBlackKey.png b/models/DoomBlackKey.png index 7cb1572dc..8477d9dbd 100644 Binary files a/models/DoomBlackKey.png and b/models/DoomBlackKey.png differ diff --git a/models/DoomBlueKey.png b/models/DoomBlueKey.png index 609bb7b68..fd62250b7 100644 Binary files a/models/DoomBlueKey.png and b/models/DoomBlueKey.png differ diff --git a/models/DoomBlueSkull.png b/models/DoomBlueSkull.png index 21b9ce519..8f020d5c5 100644 Binary files a/models/DoomBlueSkull.png and b/models/DoomBlueSkull.png differ diff --git a/models/DoomCard1st.blend b/models/DoomCard1st.blend deleted file mode 100644 index 7241314db..000000000 Binary files a/models/DoomCard1st.blend and /dev/null differ diff --git a/models/DoomCard1st_a.3d b/models/DoomCard1st_a.3d deleted file mode 100644 index 2c501d541..000000000 Binary files a/models/DoomCard1st_a.3d and /dev/null differ diff --git a/models/DoomCard1st_d.3d b/models/DoomCard1st_d.3d deleted file mode 100644 index 4a1625198..000000000 Binary files a/models/DoomCard1st_d.3d and /dev/null differ diff --git a/models/DoomGreenKey.png b/models/DoomGreenKey.png index 13f8ec7fc..4fd0e06c1 100644 Binary files a/models/DoomGreenKey.png and b/models/DoomGreenKey.png differ diff --git a/models/DoomKeyLight.png b/models/DoomKeyLight.png index ae477224d..f94063771 100644 Binary files a/models/DoomKeyLight.png and b/models/DoomKeyLight.png differ diff --git a/models/DoomKeyLight2.png b/models/DoomKeyLight2.png index 0b03f811a..575d4b89e 100644 Binary files a/models/DoomKeyLight2.png and b/models/DoomKeyLight2.png differ diff --git a/models/DoomKeyLight3.png b/models/DoomKeyLight3.png deleted file mode 100644 index a0d8187b0..000000000 Binary files a/models/DoomKeyLight3.png and /dev/null differ diff --git a/models/DoomKey_bright.png b/models/DoomKey_bright.png index 7296a51b1..8c1f6d520 100644 Binary files a/models/DoomKey_bright.png and b/models/DoomKey_bright.png differ diff --git a/models/DoomKey_mask.png b/models/DoomKey_mask.png index 1329bd39f..d3412d44b 100644 Binary files a/models/DoomKey_mask.png and b/models/DoomKey_mask.png differ diff --git a/models/DoomKeycard.iqm b/models/DoomKeycard.iqm new file mode 100644 index 000000000..1ee21c641 Binary files /dev/null and b/models/DoomKeycard.iqm differ diff --git a/models/DoomKeycard_a.3d b/models/DoomKeycard_a.3d deleted file mode 100644 index 21333e35f..000000000 Binary files a/models/DoomKeycard_a.3d and /dev/null differ diff --git a/models/DoomKeycard_d.3d b/models/DoomKeycard_d.3d deleted file mode 100644 index 95a5ff541..000000000 Binary files a/models/DoomKeycard_d.3d and /dev/null differ diff --git a/models/DoomOrangeKey.png b/models/DoomOrangeKey.png index 4d924afb5..1ef1239cb 100644 Binary files a/models/DoomOrangeKey.png and b/models/DoomOrangeKey.png differ diff --git a/models/DoomPurpleSkull.png b/models/DoomPurpleSkull.png index 2c10724c8..37fa05813 100644 Binary files a/models/DoomPurpleSkull.png and b/models/DoomPurpleSkull.png differ diff --git a/models/DoomRedKey.png b/models/DoomRedKey.png index ce3fc4885..0fdf0647a 100644 Binary files a/models/DoomRedKey.png and b/models/DoomRedKey.png differ diff --git a/models/DoomRedSkull.png b/models/DoomRedSkull.png index ff43ee771..0328c28e4 100644 Binary files a/models/DoomRedSkull.png and b/models/DoomRedSkull.png differ diff --git a/models/DoomSilverKey.png b/models/DoomSilverKey.png index 26716641a..fe0567dc9 100644 Binary files a/models/DoomSilverKey.png and b/models/DoomSilverKey.png differ diff --git a/models/DoomSkull1st.blend b/models/DoomSkull1st.blend deleted file mode 100644 index f303ab69a..000000000 Binary files a/models/DoomSkull1st.blend and /dev/null differ diff --git a/models/DoomSkull1st_a.3d b/models/DoomSkull1st_a.3d deleted file mode 100644 index dea7c57b6..000000000 Binary files a/models/DoomSkull1st_a.3d and /dev/null differ diff --git a/models/DoomSkull1st_d.3d b/models/DoomSkull1st_d.3d deleted file mode 100644 index 079900fe7..000000000 Binary files a/models/DoomSkull1st_d.3d and /dev/null differ diff --git a/models/DoomSkullKey.iqm b/models/DoomSkullKey.iqm new file mode 100644 index 000000000..4a1b236c6 Binary files /dev/null and b/models/DoomSkullKey.iqm differ diff --git a/models/DoomSkullKey_a.3d b/models/DoomSkullKey_a.3d deleted file mode 100644 index 77f0faaba..000000000 Binary files a/models/DoomSkullKey_a.3d and /dev/null differ diff --git a/models/DoomSkullKey_d.3d b/models/DoomSkullKey_d.3d deleted file mode 100644 index 6d0ccdbbb..000000000 Binary files a/models/DoomSkullKey_d.3d and /dev/null differ diff --git a/models/DoomSkull_bright.png b/models/DoomSkull_bright.png index 8d7de9b4f..2ed9943dd 100644 Binary files a/models/DoomSkull_bright.png and b/models/DoomSkull_bright.png differ diff --git a/models/DoomSkull_mask.png b/models/DoomSkull_mask.png index 4dbde1f26..4607554ae 100644 Binary files a/models/DoomSkull_mask.png and b/models/DoomSkull_mask.png differ diff --git a/models/DoomWhiteKey.png b/models/DoomWhiteKey.png index 5d6402a92..2c0ae4c2c 100644 Binary files a/models/DoomWhiteKey.png and b/models/DoomWhiteKey.png differ diff --git a/models/DoomYellowKey.png b/models/DoomYellowKey.png index ee2fdee98..8bfe69d56 100644 Binary files a/models/DoomYellowKey.png and b/models/DoomYellowKey.png differ diff --git a/models/DoomYellowSkull.png b/models/DoomYellowSkull.png index be875a53c..a787047a6 100644 Binary files a/models/DoomYellowSkull.png and b/models/DoomYellowSkull.png differ diff --git a/models/Embiggener.iqm b/models/Embiggener.iqm new file mode 100644 index 000000000..6a0ab220f Binary files /dev/null and b/models/Embiggener.iqm differ diff --git a/models/Embiggener.png b/models/Embiggener.png index 4865035f4..f005b09bb 100644 Binary files a/models/Embiggener.png and b/models/Embiggener.png differ diff --git a/models/Embiggener_Tier2.png b/models/Embiggener_Tier2.png index 63721c22c..b18c09de7 100644 Binary files a/models/Embiggener_Tier2.png and b/models/Embiggener_Tier2.png differ diff --git a/models/Embiggener_Tier3.png b/models/Embiggener_Tier3.png index 081b9ab32..cfc824343 100644 Binary files a/models/Embiggener_Tier3.png and b/models/Embiggener_Tier3.png differ diff --git a/models/Embiggener_Tier4.png b/models/Embiggener_Tier4.png index 58aeb2316..4c27e8ee8 100644 Binary files a/models/Embiggener_Tier4.png and b/models/Embiggener_Tier4.png differ diff --git a/models/Embiggener_Tier5.png b/models/Embiggener_Tier5.png index 072911bc3..1e3ba5f46 100644 Binary files a/models/Embiggener_Tier5.png and b/models/Embiggener_Tier5.png differ diff --git a/models/Embiggener_a.3d b/models/Embiggener_a.3d deleted file mode 100644 index 365403bfc..000000000 Binary files a/models/Embiggener_a.3d and /dev/null differ diff --git a/models/Embiggener_bright.png b/models/Embiggener_bright.png index 6228a3c86..7767f99ce 100644 Binary files a/models/Embiggener_bright.png and b/models/Embiggener_bright.png differ diff --git a/models/Embiggener_d.3d b/models/Embiggener_d.3d deleted file mode 100644 index af45e4330..000000000 Binary files a/models/Embiggener_d.3d and /dev/null differ diff --git a/models/Embiggener_mask.png b/models/Embiggener_mask.png index 1029a3884..936c6ca81 100644 Binary files a/models/Embiggener_mask.png and b/models/Embiggener_mask.png differ diff --git a/models/Eviscerator.blend b/models/Eviscerator.blend index bba594913..312a7375c 100644 Binary files a/models/Eviscerator.blend and b/models/Eviscerator.blend differ diff --git a/models/Eviscerator.png b/models/Eviscerator.png index 37ccfe4b1..434fe9a6c 100644 Binary files a/models/Eviscerator.png and b/models/Eviscerator.png differ diff --git a/models/Eviscerator1st.blend b/models/Eviscerator1st.blend index eb81ab34f..2b9dd8c9c 100644 Binary files a/models/Eviscerator1st.blend and b/models/Eviscerator1st.blend differ diff --git a/models/Eviscerator1st.iqm b/models/Eviscerator1st.iqm new file mode 100644 index 000000000..b0e362dec Binary files /dev/null and b/models/Eviscerator1st.iqm differ diff --git a/models/Eviscerator1st_Casing.iqm b/models/Eviscerator1st_Casing.iqm new file mode 100644 index 000000000..a19c826ab Binary files /dev/null and b/models/Eviscerator1st_Casing.iqm differ diff --git a/models/Eviscerator1st_a.3d b/models/Eviscerator1st_a.3d deleted file mode 100644 index 00a34ce97..000000000 Binary files a/models/Eviscerator1st_a.3d and /dev/null differ diff --git a/models/Eviscerator1st_d.3d b/models/Eviscerator1st_d.3d deleted file mode 100644 index e22a1c340..000000000 Binary files a/models/Eviscerator1st_d.3d and /dev/null differ diff --git a/models/EvisceratorAmmo.iqm b/models/EvisceratorAmmo.iqm new file mode 100644 index 000000000..589535a45 Binary files /dev/null and b/models/EvisceratorAmmo.iqm differ diff --git a/models/EvisceratorAmmo.png b/models/EvisceratorAmmo.png index ad78786d9..b60a8475c 100644 Binary files a/models/EvisceratorAmmo.png and b/models/EvisceratorAmmo.png differ diff --git a/models/EvisceratorAmmo_a.3d b/models/EvisceratorAmmo_a.3d deleted file mode 100644 index 50d37eb41..000000000 Binary files a/models/EvisceratorAmmo_a.3d and /dev/null differ diff --git a/models/EvisceratorAmmo_d.3d b/models/EvisceratorAmmo_d.3d deleted file mode 100644 index 92eebdf81..000000000 Binary files a/models/EvisceratorAmmo_d.3d and /dev/null differ diff --git a/models/EvisceratorClip.png b/models/EvisceratorClip.png index f2f644573..45b622165 100644 Binary files a/models/EvisceratorClip.png and b/models/EvisceratorClip.png differ diff --git a/models/EvisceratorClip_Three.iqm b/models/EvisceratorClip_Three.iqm new file mode 100644 index 000000000..b055ce5fe Binary files /dev/null and b/models/EvisceratorClip_Three.iqm differ diff --git a/models/EvisceratorClip_Three_a.3d b/models/EvisceratorClip_Three_a.3d deleted file mode 100644 index f15c5bae5..000000000 Binary files a/models/EvisceratorClip_Three_a.3d and /dev/null differ diff --git a/models/EvisceratorClip_Three_d.3d b/models/EvisceratorClip_Three_d.3d deleted file mode 100644 index d48269ff2..000000000 Binary files a/models/EvisceratorClip_Three_d.3d and /dev/null differ diff --git a/models/EvisceratorClip_Two.iqm b/models/EvisceratorClip_Two.iqm new file mode 100644 index 000000000..370df5a9e Binary files /dev/null and b/models/EvisceratorClip_Two.iqm differ diff --git a/models/EvisceratorClip_Two_a.3d b/models/EvisceratorClip_Two_a.3d deleted file mode 100644 index 65bb10335..000000000 Binary files a/models/EvisceratorClip_Two_a.3d and /dev/null differ diff --git a/models/EvisceratorClip_Two_d.3d b/models/EvisceratorClip_Two_d.3d deleted file mode 100644 index 0e7954d2a..000000000 Binary files a/models/EvisceratorClip_Two_d.3d and /dev/null differ diff --git a/models/EvisceratorPickup.iqm b/models/EvisceratorPickup.iqm new file mode 100644 index 000000000..b835f1ac6 Binary files /dev/null and b/models/EvisceratorPickup.iqm differ diff --git a/models/EvisceratorPickup_a.3d b/models/EvisceratorPickup_a.3d deleted file mode 100644 index 67346ae6f..000000000 Binary files a/models/EvisceratorPickup_a.3d and /dev/null differ diff --git a/models/EvisceratorPickup_d.3d b/models/EvisceratorPickup_d.3d deleted file mode 100644 index 7245e3016..000000000 Binary files a/models/EvisceratorPickup_d.3d and /dev/null differ diff --git a/models/EvisceratorProj.iqm b/models/EvisceratorProj.iqm new file mode 100644 index 000000000..2b1c9e2f3 Binary files /dev/null and b/models/EvisceratorProj.iqm differ diff --git a/models/EvisceratorProj_a.3d b/models/EvisceratorProj_a.3d deleted file mode 100644 index 2297ad047..000000000 Binary files a/models/EvisceratorProj_a.3d and /dev/null differ diff --git a/models/EvisceratorProj_d.3d b/models/EvisceratorProj_d.3d deleted file mode 100644 index 77bce4a35..000000000 Binary files a/models/EvisceratorProj_d.3d and /dev/null differ diff --git a/models/EvisceratorShell.iqm b/models/EvisceratorShell.iqm new file mode 100644 index 000000000..64429341d Binary files /dev/null and b/models/EvisceratorShell.iqm differ diff --git a/models/EvisceratorShell.png b/models/EvisceratorShell.png index e1ee94a2e..0a45ba308 100644 Binary files a/models/EvisceratorShell.png and b/models/EvisceratorShell.png differ diff --git a/models/EvisceratorShell_a.3d b/models/EvisceratorShell_a.3d deleted file mode 100644 index e93585a20..000000000 Binary files a/models/EvisceratorShell_a.3d and /dev/null differ diff --git a/models/EvisceratorShell_d.3d b/models/EvisceratorShell_d.3d deleted file mode 100644 index b98e2f766..000000000 Binary files a/models/EvisceratorShell_d.3d and /dev/null differ diff --git a/models/EvisceratorShell_mask.png b/models/EvisceratorShell_mask.png new file mode 100644 index 000000000..830bddcab Binary files /dev/null and b/models/EvisceratorShell_mask.png differ diff --git a/models/Eviscerator_mask.png b/models/Eviscerator_mask.png new file mode 100644 index 000000000..27cff2ed2 Binary files /dev/null and b/models/Eviscerator_mask.png differ diff --git a/models/ExplodiumBullet.iqm b/models/ExplodiumBullet.iqm new file mode 100644 index 000000000..07dd5bee2 Binary files /dev/null and b/models/ExplodiumBullet.iqm differ diff --git a/models/ExplodiumBullet.png b/models/ExplodiumBullet.png index 5f7b73dc4..0a6810d9a 100644 Binary files a/models/ExplodiumBullet.png and b/models/ExplodiumBullet.png differ diff --git a/models/ExplodiumBullet2.iqm b/models/ExplodiumBullet2.iqm new file mode 100644 index 000000000..23c5767cb Binary files /dev/null and b/models/ExplodiumBullet2.iqm differ diff --git a/models/ExplodiumBullet2_a.3d b/models/ExplodiumBullet2_a.3d deleted file mode 100644 index d8fdfe291..000000000 Binary files a/models/ExplodiumBullet2_a.3d and /dev/null differ diff --git a/models/ExplodiumBullet2_d.3d b/models/ExplodiumBullet2_d.3d deleted file mode 100644 index 58f017256..000000000 Binary files a/models/ExplodiumBullet2_d.3d and /dev/null differ diff --git a/models/ExplodiumBullet3.iqm b/models/ExplodiumBullet3.iqm new file mode 100644 index 000000000..ba0d4e69b Binary files /dev/null and b/models/ExplodiumBullet3.iqm differ diff --git a/models/ExplodiumBullet3_a.3d b/models/ExplodiumBullet3_a.3d deleted file mode 100644 index cb4b7611d..000000000 Binary files a/models/ExplodiumBullet3_a.3d and /dev/null differ diff --git a/models/ExplodiumBullet3_d.3d b/models/ExplodiumBullet3_d.3d deleted file mode 100644 index b77c57757..000000000 Binary files a/models/ExplodiumBullet3_d.3d and /dev/null differ diff --git a/models/ExplodiumBullet_a.3d b/models/ExplodiumBullet_a.3d deleted file mode 100644 index 5e9aea0cb..000000000 Binary files a/models/ExplodiumBullet_a.3d and /dev/null differ diff --git a/models/ExplodiumBullet_d.3d b/models/ExplodiumBullet_d.3d deleted file mode 100644 index 666d8bad5..000000000 Binary files a/models/ExplodiumBullet_d.3d and /dev/null differ diff --git a/models/ExplodiumBullet_mask.png b/models/ExplodiumBullet_mask.png new file mode 100644 index 000000000..776f7e821 Binary files /dev/null and b/models/ExplodiumBullet_mask.png differ diff --git a/models/ExplodiumCasing.iqm b/models/ExplodiumCasing.iqm new file mode 100644 index 000000000..4597f416b Binary files /dev/null and b/models/ExplodiumCasing.iqm differ diff --git a/models/ExplodiumCasing.png b/models/ExplodiumCasing.png index 15a214d61..59ca52bfa 100644 Binary files a/models/ExplodiumCasing.png and b/models/ExplodiumCasing.png differ diff --git a/models/ExplodiumCasing_Used.png b/models/ExplodiumCasing_Used.png index 658f8e7f8..a0b72d899 100644 Binary files a/models/ExplodiumCasing_Used.png and b/models/ExplodiumCasing_Used.png differ diff --git a/models/ExplodiumCasing_Used_mask.png b/models/ExplodiumCasing_Used_mask.png new file mode 100644 index 000000000..acbec45a6 Binary files /dev/null and b/models/ExplodiumCasing_Used_mask.png differ diff --git a/models/ExplodiumCasing_a.3d b/models/ExplodiumCasing_a.3d deleted file mode 100644 index ef9a4efac..000000000 Binary files a/models/ExplodiumCasing_a.3d and /dev/null differ diff --git a/models/ExplodiumCasing_d.3d b/models/ExplodiumCasing_d.3d deleted file mode 100644 index f126c76fd..000000000 Binary files a/models/ExplodiumCasing_d.3d and /dev/null differ diff --git a/models/ExplodiumCasing_mask.png b/models/ExplodiumCasing_mask.png new file mode 100644 index 000000000..c3a7894b1 Binary files /dev/null and b/models/ExplodiumCasing_mask.png differ diff --git a/models/ExplodiumGun.blend b/models/ExplodiumGun.blend index f1042b87a..3e7794a2d 100644 Binary files a/models/ExplodiumGun.blend and b/models/ExplodiumGun.blend differ diff --git a/models/ExplodiumGun.png b/models/ExplodiumGun.png index 2b67f22c3..8cfe6d0e5 100644 Binary files a/models/ExplodiumGun.png and b/models/ExplodiumGun.png differ diff --git a/models/ExplodiumGun1st.blend b/models/ExplodiumGun1st.blend index 9a912d7f6..c3749e832 100644 Binary files a/models/ExplodiumGun1st.blend and b/models/ExplodiumGun1st.blend differ diff --git a/models/ExplodiumGun1st.iqm b/models/ExplodiumGun1st.iqm new file mode 100644 index 000000000..d56066322 Binary files /dev/null and b/models/ExplodiumGun1st.iqm differ diff --git a/models/ExplodiumGun1stL.iqm b/models/ExplodiumGun1stL.iqm new file mode 100644 index 000000000..0110a6de8 Binary files /dev/null and b/models/ExplodiumGun1stL.iqm differ diff --git a/models/ExplodiumGun1stL_Casing.iqm b/models/ExplodiumGun1stL_Casing.iqm new file mode 100644 index 000000000..1ae132acd Binary files /dev/null and b/models/ExplodiumGun1stL_Casing.iqm differ diff --git a/models/ExplodiumGun1stL_a.3d b/models/ExplodiumGun1stL_a.3d deleted file mode 100644 index 314993e0b..000000000 Binary files a/models/ExplodiumGun1stL_a.3d and /dev/null differ diff --git a/models/ExplodiumGun1stL_d.3d b/models/ExplodiumGun1stL_d.3d deleted file mode 100644 index ffc69d204..000000000 Binary files a/models/ExplodiumGun1stL_d.3d and /dev/null differ diff --git a/models/ExplodiumGun1st_Casing.iqm b/models/ExplodiumGun1st_Casing.iqm new file mode 100644 index 000000000..920dd2460 Binary files /dev/null and b/models/ExplodiumGun1st_Casing.iqm differ diff --git a/models/ExplodiumGun1st_a.3d b/models/ExplodiumGun1st_a.3d deleted file mode 100644 index 33ba085b7..000000000 Binary files a/models/ExplodiumGun1st_a.3d and /dev/null differ diff --git a/models/ExplodiumGun1st_d.3d b/models/ExplodiumGun1st_d.3d deleted file mode 100644 index 136b7aecb..000000000 Binary files a/models/ExplodiumGun1st_d.3d and /dev/null differ diff --git a/models/ExplodiumGunPickup.iqm b/models/ExplodiumGunPickup.iqm new file mode 100644 index 000000000..27cafb91d Binary files /dev/null and b/models/ExplodiumGunPickup.iqm differ diff --git a/models/ExplodiumGunPickupDual.iqm b/models/ExplodiumGunPickupDual.iqm new file mode 100644 index 000000000..2b3a6be61 Binary files /dev/null and b/models/ExplodiumGunPickupDual.iqm differ diff --git a/models/ExplodiumGunPickupDual_a.3d b/models/ExplodiumGunPickupDual_a.3d deleted file mode 100644 index a7e512b88..000000000 Binary files a/models/ExplodiumGunPickupDual_a.3d and /dev/null differ diff --git a/models/ExplodiumGunPickupDual_d.3d b/models/ExplodiumGunPickupDual_d.3d deleted file mode 100644 index 0bc243ca8..000000000 Binary files a/models/ExplodiumGunPickupDual_d.3d and /dev/null differ diff --git a/models/ExplodiumGunPickup_a.3d b/models/ExplodiumGunPickup_a.3d deleted file mode 100644 index 99c68391a..000000000 Binary files a/models/ExplodiumGunPickup_a.3d and /dev/null differ diff --git a/models/ExplodiumGunPickup_d.3d b/models/ExplodiumGunPickup_d.3d deleted file mode 100644 index 83562105d..000000000 Binary files a/models/ExplodiumGunPickup_d.3d and /dev/null differ diff --git a/models/ExplodiumGun_EmptyMag.png b/models/ExplodiumGun_EmptyMag.png index 47f796919..7889c544f 100644 Binary files a/models/ExplodiumGun_EmptyMag.png and b/models/ExplodiumGun_EmptyMag.png differ diff --git a/models/ExplodiumGun_mask.png b/models/ExplodiumGun_mask.png new file mode 100644 index 000000000..7c1e9e861 Binary files /dev/null and b/models/ExplodiumGun_mask.png differ diff --git a/models/ExplodiumMag.iqm b/models/ExplodiumMag.iqm new file mode 100644 index 000000000..a53c5e8c7 Binary files /dev/null and b/models/ExplodiumMag.iqm differ diff --git a/models/ExplodiumMagPrimed.iqm b/models/ExplodiumMagPrimed.iqm new file mode 100644 index 000000000..715ccde6c Binary files /dev/null and b/models/ExplodiumMagPrimed.iqm differ diff --git a/models/ExplodiumMag_a.3d b/models/ExplodiumMag_a.3d deleted file mode 100644 index 59fe44381..000000000 Binary files a/models/ExplodiumMag_a.3d and /dev/null differ diff --git a/models/ExplodiumMag_d.3d b/models/ExplodiumMag_d.3d deleted file mode 100644 index e6f183f28..000000000 Binary files a/models/ExplodiumMag_d.3d and /dev/null differ diff --git a/models/Fabricator.png b/models/Fabricator.png index 2925015bb..91af18a1f 100644 Binary files a/models/Fabricator.png and b/models/Fabricator.png differ diff --git a/models/Fabricator_Tier2.png b/models/Fabricator_Tier2.png index 3a6f0ed98..761fa825b 100644 Binary files a/models/Fabricator_Tier2.png and b/models/Fabricator_Tier2.png differ diff --git a/models/Fabricator_Tier3.png b/models/Fabricator_Tier3.png index 04fa94ebb..70420d242 100644 Binary files a/models/Fabricator_Tier3.png and b/models/Fabricator_Tier3.png differ diff --git a/models/Fabricator_Tier4.png b/models/Fabricator_Tier4.png index 131f5270e..a60c807f3 100644 Binary files a/models/Fabricator_Tier4.png and b/models/Fabricator_Tier4.png differ diff --git a/models/Fabricator_bright.png b/models/Fabricator_bright.png index d264715de..eb9ac150e 100644 Binary files a/models/Fabricator_bright.png and b/models/Fabricator_bright.png differ diff --git a/models/Fabricator_mask.png b/models/Fabricator_mask.png index 88fcf4647..42cc05816 100644 Binary files a/models/Fabricator_mask.png and b/models/Fabricator_mask.png differ diff --git a/models/FrispyCorn.iqm b/models/FrispyCorn.iqm new file mode 100644 index 000000000..198c022cf Binary files /dev/null and b/models/FrispyCorn.iqm differ diff --git a/models/FrispyCorn.png b/models/FrispyCorn.png index f8fa54691..22cb2f099 100644 Binary files a/models/FrispyCorn.png and b/models/FrispyCorn.png differ diff --git a/models/FrispyCorn1st.blend b/models/FrispyCorn1st.blend index f5ea06fb6..7d18bca65 100644 Binary files a/models/FrispyCorn1st.blend and b/models/FrispyCorn1st.blend differ diff --git a/models/FrispyCorn1st.iqm b/models/FrispyCorn1st.iqm new file mode 100644 index 000000000..66cf59a3d Binary files /dev/null and b/models/FrispyCorn1st.iqm differ diff --git a/models/FrispyCorn1st_a.3d b/models/FrispyCorn1st_a.3d deleted file mode 100644 index 4476c7846..000000000 Binary files a/models/FrispyCorn1st_a.3d and /dev/null differ diff --git a/models/FrispyCorn1st_d.3d b/models/FrispyCorn1st_d.3d deleted file mode 100644 index f5e31b406..000000000 Binary files a/models/FrispyCorn1st_d.3d and /dev/null differ diff --git a/models/FrispyCorn_a.3d b/models/FrispyCorn_a.3d deleted file mode 100644 index cba508c6c..000000000 Binary files a/models/FrispyCorn_a.3d and /dev/null differ diff --git a/models/FrispyCorn_d.3d b/models/FrispyCorn_d.3d deleted file mode 100644 index 6e267d4dc..000000000 Binary files a/models/FrispyCorn_d.3d and /dev/null differ diff --git a/models/GenericCube1st.blend b/models/GenericCube1st.blend index 2e4b45f09..a894fac92 100644 Binary files a/models/GenericCube1st.blend and b/models/GenericCube1st.blend differ diff --git a/models/GenericCube1st.iqm b/models/GenericCube1st.iqm new file mode 100644 index 000000000..52af70cbf Binary files /dev/null and b/models/GenericCube1st.iqm differ diff --git a/models/GenericCube1st_a.3d b/models/GenericCube1st_a.3d deleted file mode 100644 index 2b1ee4b0c..000000000 Binary files a/models/GenericCube1st_a.3d and /dev/null differ diff --git a/models/GenericCube1st_d.3d b/models/GenericCube1st_d.3d deleted file mode 100644 index 825fa92d7..000000000 Binary files a/models/GenericCube1st_d.3d and /dev/null differ diff --git a/models/GestureArms.blend b/models/GestureArms.blend index 38aaaa938..22b76ea8c 100644 Binary files a/models/GestureArms.blend and b/models/GestureArms.blend differ diff --git a/models/GestureArms.iqm b/models/GestureArms.iqm new file mode 100644 index 000000000..c95220c0e Binary files /dev/null and b/models/GestureArms.iqm differ diff --git a/models/GestureArms_a.3d b/models/GestureArms_a.3d deleted file mode 100644 index 49e9d110c..000000000 Binary files a/models/GestureArms_a.3d and /dev/null differ diff --git a/models/GestureArms_d.3d b/models/GestureArms_d.3d deleted file mode 100644 index 36a38de1b..000000000 Binary files a/models/GestureArms_d.3d and /dev/null differ diff --git a/models/GhostArtifact.iqm b/models/GhostArtifact.iqm new file mode 100644 index 000000000..4cc72db07 Binary files /dev/null and b/models/GhostArtifact.iqm differ diff --git a/models/GhostArtifact.png b/models/GhostArtifact.png index 73559860a..d561f7b18 100644 Binary files a/models/GhostArtifact.png and b/models/GhostArtifact.png differ diff --git a/models/GhostArtifactX.iqm b/models/GhostArtifactX.iqm new file mode 100644 index 000000000..0b217d76a Binary files /dev/null and b/models/GhostArtifactX.iqm differ diff --git a/models/GhostArtifact_a.3d b/models/GhostArtifact_a.3d deleted file mode 100644 index 189f46d69..000000000 Binary files a/models/GhostArtifact_a.3d and /dev/null differ diff --git a/models/GhostArtifact_bright.png b/models/GhostArtifact_bright.png index 7c49b4345..7cc0a6aec 100644 Binary files a/models/GhostArtifact_bright.png and b/models/GhostArtifact_bright.png differ diff --git a/models/GhostArtifact_d.3d b/models/GhostArtifact_d.3d deleted file mode 100644 index ce8586083..000000000 Binary files a/models/GhostArtifact_d.3d and /dev/null differ diff --git a/models/GhostArtifact_mask.png b/models/GhostArtifact_mask.png new file mode 100644 index 000000000..86232cb05 Binary files /dev/null and b/models/GhostArtifact_mask.png differ diff --git a/models/GibBreast.png b/models/GibBreast.png index 0e8713283..7f8e76855 100644 Binary files a/models/GibBreast.png and b/models/GibBreast.png differ diff --git a/models/GibBreast_a.3d b/models/GibBreast_a.3d deleted file mode 100644 index ccd2a102c..000000000 Binary files a/models/GibBreast_a.3d and /dev/null differ diff --git a/models/GibBreast_d.3d b/models/GibBreast_d.3d deleted file mode 100644 index 20f66c5eb..000000000 Binary files a/models/GibBreast_d.3d and /dev/null differ diff --git a/models/GibDrumstick.png b/models/GibDrumstick.png index a2d7493f6..3bcd7c1e4 100644 Binary files a/models/GibDrumstick.png and b/models/GibDrumstick.png differ diff --git a/models/GibDrumstick_a.3d b/models/GibDrumstick_a.3d deleted file mode 100644 index e9d4c22e5..000000000 Binary files a/models/GibDrumstick_a.3d and /dev/null differ diff --git a/models/GibDrumstick_d.3d b/models/GibDrumstick_d.3d deleted file mode 100644 index 9533fb649..000000000 Binary files a/models/GibDrumstick_d.3d and /dev/null differ diff --git a/models/GibModels.blend b/models/GibModels.blend index b1ce7ebfa..fc0784971 100644 Binary files a/models/GibModels.blend and b/models/GibModels.blend differ diff --git a/models/GibSteak.png b/models/GibSteak.png index 444457040..c3ff5068d 100644 Binary files a/models/GibSteak.png and b/models/GibSteak.png differ diff --git a/models/GibSteak_a.3d b/models/GibSteak_a.3d deleted file mode 100644 index 454c16317..000000000 Binary files a/models/GibSteak_a.3d and /dev/null differ diff --git a/models/GibSteak_d.3d b/models/GibSteak_d.3d deleted file mode 100644 index 07932d77a..000000000 Binary files a/models/GibSteak_d.3d and /dev/null differ diff --git a/models/Gravity.iqm b/models/Gravity.iqm new file mode 100644 index 000000000..c3f07b0f5 Binary files /dev/null and b/models/Gravity.iqm differ diff --git a/models/Gravity.png b/models/Gravity.png index 557c07bb5..bc7a2b9cf 100644 Binary files a/models/Gravity.png and b/models/Gravity.png differ diff --git a/models/GravityX.iqm b/models/GravityX.iqm new file mode 100644 index 000000000..b971cedd4 Binary files /dev/null and b/models/GravityX.iqm differ diff --git a/models/Gravity_a.3d b/models/Gravity_a.3d deleted file mode 100644 index 3c9171f9a..000000000 Binary files a/models/Gravity_a.3d and /dev/null differ diff --git a/models/Gravity_bright.png b/models/Gravity_bright.png index 97c4426a1..ed6af65d6 100644 Binary files a/models/Gravity_bright.png and b/models/Gravity_bright.png differ diff --git a/models/Gravity_d.3d b/models/Gravity_d.3d deleted file mode 100644 index 662d6d04c..000000000 Binary files a/models/Gravity_d.3d and /dev/null differ diff --git a/models/Gravity_mask.png b/models/Gravity_mask.png new file mode 100644 index 000000000..fe2e52eda Binary files /dev/null and b/models/Gravity_mask.png differ diff --git a/models/Grenade1st.blend b/models/Grenade1st.blend index 8b2325381..815ff7e31 100644 Binary files a/models/Grenade1st.blend and b/models/Grenade1st.blend differ diff --git a/models/Grenade1st.iqm b/models/Grenade1st.iqm new file mode 100644 index 000000000..12902aacc Binary files /dev/null and b/models/Grenade1st.iqm differ diff --git a/models/Grenade1st_a.3d b/models/Grenade1st_a.3d deleted file mode 100644 index 28d16b482..000000000 Binary files a/models/Grenade1st_a.3d and /dev/null differ diff --git a/models/Grenade1st_d.3d b/models/Grenade1st_d.3d deleted file mode 100644 index 97dd515fb..000000000 Binary files a/models/Grenade1st_d.3d and /dev/null differ diff --git a/models/Hellblazer.blend b/models/Hellblazer.blend index 0813ace59..c29f95044 100644 Binary files a/models/Hellblazer.blend and b/models/Hellblazer.blend differ diff --git a/models/Hellblazer.png b/models/Hellblazer.png index 0dd11e59e..6fa87bc56 100644 Binary files a/models/Hellblazer.png and b/models/Hellblazer.png differ diff --git a/models/Hellblazer1st.blend b/models/Hellblazer1st.blend index eb92c57d6..7b8985f36 100644 Binary files a/models/Hellblazer1st.blend and b/models/Hellblazer1st.blend differ diff --git a/models/Hellblazer1st.iqm b/models/Hellblazer1st.iqm new file mode 100644 index 000000000..13f9b62af Binary files /dev/null and b/models/Hellblazer1st.iqm differ diff --git a/models/Hellblazer1stX.iqm b/models/Hellblazer1stX.iqm new file mode 100644 index 000000000..e44722cf2 Binary files /dev/null and b/models/Hellblazer1stX.iqm differ diff --git a/models/Hellblazer1st_a.3d b/models/Hellblazer1st_a.3d deleted file mode 100644 index 2d02c8cb6..000000000 Binary files a/models/Hellblazer1st_a.3d and /dev/null differ diff --git a/models/Hellblazer1st_d.3d b/models/Hellblazer1st_d.3d deleted file mode 100644 index a1d8f9967..000000000 Binary files a/models/Hellblazer1st_d.3d and /dev/null differ diff --git a/models/HellblazerAmmo.iqm b/models/HellblazerAmmo.iqm new file mode 100644 index 000000000..28423c316 Binary files /dev/null and b/models/HellblazerAmmo.iqm differ diff --git a/models/HellblazerAmmo.png b/models/HellblazerAmmo.png index 4a21bf5cb..026224107 100644 Binary files a/models/HellblazerAmmo.png and b/models/HellblazerAmmo.png differ diff --git a/models/HellblazerAmmo_Cluster.png b/models/HellblazerAmmo_Cluster.png deleted file mode 100644 index 9fe97e8b7..000000000 Binary files a/models/HellblazerAmmo_Cluster.png and /dev/null differ diff --git a/models/HellblazerAmmo_Fire.png b/models/HellblazerAmmo_Fire.png deleted file mode 100644 index a6c42961f..000000000 Binary files a/models/HellblazerAmmo_Fire.png and /dev/null differ diff --git a/models/HellblazerAmmo_Nuke.png b/models/HellblazerAmmo_Nuke.png deleted file mode 100644 index e0e581abd..000000000 Binary files a/models/HellblazerAmmo_Nuke.png and /dev/null differ diff --git a/models/HellblazerAmmo_Three_a.3d b/models/HellblazerAmmo_Three_a.3d deleted file mode 100644 index c551c4f73..000000000 Binary files a/models/HellblazerAmmo_Three_a.3d and /dev/null differ diff --git a/models/HellblazerAmmo_Three_d.3d b/models/HellblazerAmmo_Three_d.3d deleted file mode 100644 index 2611ee16b..000000000 Binary files a/models/HellblazerAmmo_Three_d.3d and /dev/null differ diff --git a/models/HellblazerAmmo_Two_a.3d b/models/HellblazerAmmo_Two_a.3d deleted file mode 100644 index 996dd190d..000000000 Binary files a/models/HellblazerAmmo_Two_a.3d and /dev/null differ diff --git a/models/HellblazerAmmo_Two_d.3d b/models/HellblazerAmmo_Two_d.3d deleted file mode 100644 index af03de58d..000000000 Binary files a/models/HellblazerAmmo_Two_d.3d and /dev/null differ diff --git a/models/HellblazerAmmo_a.3d b/models/HellblazerAmmo_a.3d deleted file mode 100644 index f0e6d1727..000000000 Binary files a/models/HellblazerAmmo_a.3d and /dev/null differ diff --git a/models/HellblazerAmmo_d.3d b/models/HellblazerAmmo_d.3d deleted file mode 100644 index be89b1339..000000000 Binary files a/models/HellblazerAmmo_d.3d and /dev/null differ diff --git a/models/HellblazerDuo.iqm b/models/HellblazerDuo.iqm new file mode 100644 index 000000000..206972cc1 Binary files /dev/null and b/models/HellblazerDuo.iqm differ diff --git a/models/HellblazerDuo_a.3d b/models/HellblazerDuo_a.3d deleted file mode 100644 index 8c256c83a..000000000 Binary files a/models/HellblazerDuo_a.3d and /dev/null differ diff --git a/models/HellblazerDuo_d.3d b/models/HellblazerDuo_d.3d deleted file mode 100644 index 9c99d3d18..000000000 Binary files a/models/HellblazerDuo_d.3d and /dev/null differ diff --git a/models/HellblazerMissile.png b/models/HellblazerMissile.png index 132aaa727..f055fccbb 100644 Binary files a/models/HellblazerMissile.png and b/models/HellblazerMissile.png differ diff --git a/models/HellblazerMissile_Cluster.png b/models/HellblazerMissile_Cluster.png deleted file mode 100644 index 8c1bfa7f6..000000000 Binary files a/models/HellblazerMissile_Cluster.png and /dev/null differ diff --git a/models/HellblazerMissile_Fire.png b/models/HellblazerMissile_Fire.png deleted file mode 100644 index d0f81a050..000000000 Binary files a/models/HellblazerMissile_Fire.png and /dev/null differ diff --git a/models/HellblazerMissile_Nuke.png b/models/HellblazerMissile_Nuke.png deleted file mode 100644 index 09464e43a..000000000 Binary files a/models/HellblazerMissile_Nuke.png and /dev/null differ diff --git a/models/HellblazerMissile_mask.png b/models/HellblazerMissile_mask.png new file mode 100644 index 000000000..0bdd0cbee Binary files /dev/null and b/models/HellblazerMissile_mask.png differ diff --git a/models/HellblazerPickup.iqm b/models/HellblazerPickup.iqm new file mode 100644 index 000000000..913218d79 Binary files /dev/null and b/models/HellblazerPickup.iqm differ diff --git a/models/HellblazerPickupX.iqm b/models/HellblazerPickupX.iqm new file mode 100644 index 000000000..bd1c442ed Binary files /dev/null and b/models/HellblazerPickupX.iqm differ diff --git a/models/HellblazerPickup_a.3d b/models/HellblazerPickup_a.3d deleted file mode 100644 index bec7fa07c..000000000 Binary files a/models/HellblazerPickup_a.3d and /dev/null differ diff --git a/models/HellblazerPickup_d.3d b/models/HellblazerPickup_d.3d deleted file mode 100644 index af9230c9a..000000000 Binary files a/models/HellblazerPickup_d.3d and /dev/null differ diff --git a/models/HellblazerProj.iqm b/models/HellblazerProj.iqm new file mode 100644 index 000000000..590b053ac Binary files /dev/null and b/models/HellblazerProj.iqm differ diff --git a/models/HellblazerProj_a.3d b/models/HellblazerProj_a.3d deleted file mode 100644 index 78f851fb8..000000000 Binary files a/models/HellblazerProj_a.3d and /dev/null differ diff --git a/models/HellblazerProj_d.3d b/models/HellblazerProj_d.3d deleted file mode 100644 index fbc4c4049..000000000 Binary files a/models/HellblazerProj_d.3d and /dev/null differ diff --git a/models/HellblazerTrio.iqm b/models/HellblazerTrio.iqm new file mode 100644 index 000000000..222dd9f4b Binary files /dev/null and b/models/HellblazerTrio.iqm differ diff --git a/models/HellblazerTrio_a.3d b/models/HellblazerTrio_a.3d deleted file mode 100644 index 1b69d81c3..000000000 Binary files a/models/HellblazerTrio_a.3d and /dev/null differ diff --git a/models/HellblazerTrio_d.3d b/models/HellblazerTrio_d.3d deleted file mode 100644 index aee734a3f..000000000 Binary files a/models/HellblazerTrio_d.3d and /dev/null differ diff --git a/models/Hellblazer_mask.png b/models/Hellblazer_mask.png new file mode 100644 index 000000000..389db5a14 Binary files /dev/null and b/models/Hellblazer_mask.png differ diff --git a/models/HereticBlue1st.blend b/models/HereticBlue1st.blend deleted file mode 100644 index 3bab871b5..000000000 Binary files a/models/HereticBlue1st.blend and /dev/null differ diff --git a/models/HereticBlue1st_a.3d b/models/HereticBlue1st_a.3d deleted file mode 100644 index 1fa3303ac..000000000 Binary files a/models/HereticBlue1st_a.3d and /dev/null differ diff --git a/models/HereticBlue1st_d.3d b/models/HereticBlue1st_d.3d deleted file mode 100644 index 6f3c6bb09..000000000 Binary files a/models/HereticBlue1st_d.3d and /dev/null differ diff --git a/models/HereticBlueKey.iqm b/models/HereticBlueKey.iqm new file mode 100644 index 000000000..6969e584c Binary files /dev/null and b/models/HereticBlueKey.iqm differ diff --git a/models/HereticBlueKey_a.3d b/models/HereticBlueKey_a.3d deleted file mode 100644 index 88b0054f1..000000000 Binary files a/models/HereticBlueKey_a.3d and /dev/null differ diff --git a/models/HereticBlueKey_d.3d b/models/HereticBlueKey_d.3d deleted file mode 100644 index 010f3991c..000000000 Binary files a/models/HereticBlueKey_d.3d and /dev/null differ diff --git a/models/HereticGreen1st.blend b/models/HereticGreen1st.blend deleted file mode 100644 index 8f8bbdbce..000000000 Binary files a/models/HereticGreen1st.blend and /dev/null differ diff --git a/models/HereticGreen1st_a.3d b/models/HereticGreen1st_a.3d deleted file mode 100644 index c707c6ffb..000000000 Binary files a/models/HereticGreen1st_a.3d and /dev/null differ diff --git a/models/HereticGreen1st_d.3d b/models/HereticGreen1st_d.3d deleted file mode 100644 index f4c87ea5f..000000000 Binary files a/models/HereticGreen1st_d.3d and /dev/null differ diff --git a/models/HereticGreenKey.iqm b/models/HereticGreenKey.iqm new file mode 100644 index 000000000..b4ff07396 Binary files /dev/null and b/models/HereticGreenKey.iqm differ diff --git a/models/HereticGreenKey_a.3d b/models/HereticGreenKey_a.3d deleted file mode 100644 index 664bff951..000000000 Binary files a/models/HereticGreenKey_a.3d and /dev/null differ diff --git a/models/HereticGreenKey_d.3d b/models/HereticGreenKey_d.3d deleted file mode 100644 index b224b8680..000000000 Binary files a/models/HereticGreenKey_d.3d and /dev/null differ diff --git a/models/HereticRed1st.blend b/models/HereticRed1st.blend deleted file mode 100644 index d4ff518ab..000000000 Binary files a/models/HereticRed1st.blend and /dev/null differ diff --git a/models/HereticRed1st_a.3d b/models/HereticRed1st_a.3d deleted file mode 100644 index 8fd89a304..000000000 Binary files a/models/HereticRed1st_a.3d and /dev/null differ diff --git a/models/HereticRed1st_d.3d b/models/HereticRed1st_d.3d deleted file mode 100644 index d70a6671b..000000000 Binary files a/models/HereticRed1st_d.3d and /dev/null differ diff --git a/models/HereticRedKey.iqm b/models/HereticRedKey.iqm new file mode 100644 index 000000000..b0996062b Binary files /dev/null and b/models/HereticRedKey.iqm differ diff --git a/models/HereticRedKey_a.3d b/models/HereticRedKey_a.3d deleted file mode 100644 index 7b085a182..000000000 Binary files a/models/HereticRedKey_a.3d and /dev/null differ diff --git a/models/HereticRedKey_d.3d b/models/HereticRedKey_d.3d deleted file mode 100644 index b767f956c..000000000 Binary files a/models/HereticRedKey_d.3d and /dev/null differ diff --git a/models/HereticYellow1st.blend b/models/HereticYellow1st.blend deleted file mode 100644 index a61d412bd..000000000 Binary files a/models/HereticYellow1st.blend and /dev/null differ diff --git a/models/HereticYellow1st_a.3d b/models/HereticYellow1st_a.3d deleted file mode 100644 index a80bc1cd4..000000000 Binary files a/models/HereticYellow1st_a.3d and /dev/null differ diff --git a/models/HereticYellow1st_d.3d b/models/HereticYellow1st_d.3d deleted file mode 100644 index 5b5892113..000000000 Binary files a/models/HereticYellow1st_d.3d and /dev/null differ diff --git a/models/HereticYellowKey.iqm b/models/HereticYellowKey.iqm new file mode 100644 index 000000000..d6df43b7d Binary files /dev/null and b/models/HereticYellowKey.iqm differ diff --git a/models/HereticYellowKey_a.3d b/models/HereticYellowKey_a.3d deleted file mode 100644 index f12aca97d..000000000 Binary files a/models/HereticYellowKey_a.3d and /dev/null differ diff --git a/models/HereticYellowKey_d.3d b/models/HereticYellowKey_d.3d deleted file mode 100644 index 722324d2d..000000000 Binary files a/models/HereticYellowKey_d.3d and /dev/null differ diff --git a/models/Invinciball.iqm b/models/Invinciball.iqm new file mode 100644 index 000000000..27396a3f7 Binary files /dev/null and b/models/Invinciball.iqm differ diff --git a/models/Invinciball.png b/models/Invinciball.png index f8add6b15..bf5c758f0 100644 Binary files a/models/Invinciball.png and b/models/Invinciball.png differ diff --git a/models/InvinciballX.iqm b/models/InvinciballX.iqm new file mode 100644 index 000000000..b9df5d706 Binary files /dev/null and b/models/InvinciballX.iqm differ diff --git a/models/Invinciball_a.3d b/models/Invinciball_a.3d deleted file mode 100644 index 9ab806259..000000000 Binary files a/models/Invinciball_a.3d and /dev/null differ diff --git a/models/Invinciball_d.3d b/models/Invinciball_d.3d deleted file mode 100644 index 95d7aef21..000000000 Binary files a/models/Invinciball_d.3d and /dev/null differ diff --git a/models/Invinciball_mask.png b/models/Invinciball_mask.png new file mode 100644 index 000000000..0da7c9f28 Binary files /dev/null and b/models/Invinciball_mask.png differ diff --git a/models/KirinManga.png b/models/KirinManga.png index 8fe0ab63b..f48b1d4a6 100644 Binary files a/models/KirinManga.png and b/models/KirinManga.png differ diff --git a/models/KirinManga1st.blend b/models/KirinManga1st.blend index 0da3f7c06..d45b11ab2 100644 Binary files a/models/KirinManga1st.blend and b/models/KirinManga1st.blend differ diff --git a/models/KirinManga1st.iqm b/models/KirinManga1st.iqm new file mode 100644 index 000000000..2c3df934b Binary files /dev/null and b/models/KirinManga1st.iqm differ diff --git a/models/KirinManga1st_a.3d b/models/KirinManga1st_a.3d deleted file mode 100644 index 6db9ba540..000000000 Binary files a/models/KirinManga1st_a.3d and /dev/null differ diff --git a/models/KirinManga1st_d.3d b/models/KirinManga1st_d.3d deleted file mode 100644 index 9bf28fb5e..000000000 Binary files a/models/KirinManga1st_d.3d and /dev/null differ diff --git a/models/KirinPlush.blend b/models/KirinPlush.blend index 78190c733..768a302a3 100644 Binary files a/models/KirinPlush.blend and b/models/KirinPlush.blend differ diff --git a/models/KirinPlush.iqm b/models/KirinPlush.iqm new file mode 100644 index 000000000..7c0a860bd Binary files /dev/null and b/models/KirinPlush.iqm differ diff --git a/models/KirinPlush.png b/models/KirinPlush.png index e2e5ed4f5..23d1356ca 100644 Binary files a/models/KirinPlush.png and b/models/KirinPlush.png differ diff --git a/models/KirinPlush1st.blend b/models/KirinPlush1st.blend index 703c7dc1d..dd0ceb59e 100644 Binary files a/models/KirinPlush1st.blend and b/models/KirinPlush1st.blend differ diff --git a/models/KirinPlush1st.iqm b/models/KirinPlush1st.iqm new file mode 100644 index 000000000..0b25d7cbb Binary files /dev/null and b/models/KirinPlush1st.iqm differ diff --git a/models/KirinPlush1st_a.3d b/models/KirinPlush1st_a.3d deleted file mode 100644 index 8f7b19637..000000000 Binary files a/models/KirinPlush1st_a.3d and /dev/null differ diff --git a/models/KirinPlush1st_d.3d b/models/KirinPlush1st_d.3d deleted file mode 100644 index 657f4bec8..000000000 Binary files a/models/KirinPlush1st_d.3d and /dev/null differ diff --git a/models/KirinPlush_a.3d b/models/KirinPlush_a.3d deleted file mode 100644 index 62c4c7340..000000000 Binary files a/models/KirinPlush_a.3d and /dev/null differ diff --git a/models/KirinPlush_bright.png b/models/KirinPlush_bright.png index 68f95631a..ec2677a91 100644 Binary files a/models/KirinPlush_bright.png and b/models/KirinPlush_bright.png differ diff --git a/models/KirinPlush_d.3d b/models/KirinPlush_d.3d deleted file mode 100644 index 715322750..000000000 Binary files a/models/KirinPlush_d.3d and /dev/null differ diff --git a/models/Lamp.iqm b/models/Lamp.iqm new file mode 100644 index 000000000..3da16b956 Binary files /dev/null and b/models/Lamp.iqm differ diff --git a/models/Lamp.png b/models/Lamp.png index 3c768e903..450aeb173 100644 Binary files a/models/Lamp.png and b/models/Lamp.png differ diff --git a/models/Lamp_a.3d b/models/Lamp_a.3d deleted file mode 100644 index e8efdd223..000000000 Binary files a/models/Lamp_a.3d and /dev/null differ diff --git a/models/Lamp_bright.png b/models/Lamp_bright.png index 954f8cd2a..774793120 100644 Binary files a/models/Lamp_bright.png and b/models/Lamp_bright.png differ diff --git a/models/Lamp_d.3d b/models/Lamp_d.3d deleted file mode 100644 index f61e955ec..000000000 Binary files a/models/Lamp_d.3d and /dev/null differ diff --git a/models/Lamp_mask.png b/models/Lamp_mask.png new file mode 100644 index 000000000..71c76ef05 Binary files /dev/null and b/models/Lamp_mask.png differ diff --git a/models/Lamp_off.png b/models/Lamp_off.png index 4c0c91cd5..773350d12 100644 Binary files a/models/Lamp_off.png and b/models/Lamp_off.png differ diff --git a/models/Lootbox.blend b/models/Lootbox.blend index 7ce387322..a29b7508e 100644 Binary files a/models/Lootbox.blend and b/models/Lootbox.blend differ diff --git a/models/LoveSignals.png b/models/LoveSignals.png index 38cca96fa..752012ae6 100644 Binary files a/models/LoveSignals.png and b/models/LoveSignals.png differ diff --git a/models/LoveSignalsCD1st.blend b/models/LoveSignalsCD1st.blend index aaa711b3d..5681aa84a 100644 Binary files a/models/LoveSignalsCD1st.blend and b/models/LoveSignalsCD1st.blend differ diff --git a/models/LoveSignalsCD1st.iqm b/models/LoveSignalsCD1st.iqm new file mode 100644 index 000000000..7cb7bd945 Binary files /dev/null and b/models/LoveSignalsCD1st.iqm differ diff --git a/models/LoveSignalsCD1st_a.3d b/models/LoveSignalsCD1st_a.3d deleted file mode 100644 index 94fbcb3a0..000000000 Binary files a/models/LoveSignalsCD1st_a.3d and /dev/null differ diff --git a/models/LoveSignalsCD1st_d.3d b/models/LoveSignalsCD1st_d.3d deleted file mode 100644 index 6637c47f1..000000000 Binary files a/models/LoveSignalsCD1st_d.3d and /dev/null differ diff --git a/models/MilkBreads.blend b/models/MilkBreads.blend index 754dceb50..4d101ed25 100644 Binary files a/models/MilkBreads.blend and b/models/MilkBreads.blend differ diff --git a/models/MilkBreads.iqm b/models/MilkBreads.iqm new file mode 100644 index 000000000..8020ac056 Binary files /dev/null and b/models/MilkBreads.iqm differ diff --git a/models/MilkBreads.png b/models/MilkBreads.png index d2b9e08c1..76c185238 100644 Binary files a/models/MilkBreads.png and b/models/MilkBreads.png differ diff --git a/models/MilkBreads1st.blend b/models/MilkBreads1st.blend index 1370ad427..e269394da 100644 Binary files a/models/MilkBreads1st.blend and b/models/MilkBreads1st.blend differ diff --git a/models/MilkBreads1st.iqm b/models/MilkBreads1st.iqm new file mode 100644 index 000000000..7a2ec069c Binary files /dev/null and b/models/MilkBreads1st.iqm differ diff --git a/models/MilkBreads1st_a.3d b/models/MilkBreads1st_a.3d deleted file mode 100644 index b839cce71..000000000 Binary files a/models/MilkBreads1st_a.3d and /dev/null differ diff --git a/models/MilkBreads1st_d.3d b/models/MilkBreads1st_d.3d deleted file mode 100644 index d2c0e2b72..000000000 Binary files a/models/MilkBreads1st_d.3d and /dev/null differ diff --git a/models/MilkBreads_a.3d b/models/MilkBreads_a.3d deleted file mode 100644 index 710c44bd4..000000000 Binary files a/models/MilkBreads_a.3d and /dev/null differ diff --git a/models/MilkBreads_d.3d b/models/MilkBreads_d.3d deleted file mode 100644 index a975d1f58..000000000 Binary files a/models/MilkBreads_d.3d and /dev/null differ diff --git a/models/ModernSparkster.blend b/models/ModernSparkster.blend new file mode 100644 index 000000000..f51ac070e Binary files /dev/null and b/models/ModernSparkster.blend differ diff --git a/models/ModernSparksterPickup.iqm b/models/ModernSparksterPickup.iqm new file mode 100644 index 000000000..064eb883a Binary files /dev/null and b/models/ModernSparksterPickup.iqm differ diff --git a/models/MortalCasing.iqm b/models/MortalCasing.iqm new file mode 100644 index 000000000..a921da0cf Binary files /dev/null and b/models/MortalCasing.iqm differ diff --git a/models/MortalGrenade.iqm b/models/MortalGrenade.iqm new file mode 100644 index 000000000..da596eb34 Binary files /dev/null and b/models/MortalGrenade.iqm differ diff --git a/models/MortalGrenade.png b/models/MortalGrenade.png new file mode 100644 index 000000000..114d072f8 Binary files /dev/null and b/models/MortalGrenade.png differ diff --git a/models/MortalGrenadeAmmo.iqm b/models/MortalGrenadeAmmo.iqm new file mode 100644 index 000000000..3428799cf Binary files /dev/null and b/models/MortalGrenadeAmmo.iqm differ diff --git a/models/MortalGrenadeCasing.iqm b/models/MortalGrenadeCasing.iqm new file mode 100644 index 000000000..1953b8419 Binary files /dev/null and b/models/MortalGrenadeCasing.iqm differ diff --git a/models/MortalGrenade_Used.png b/models/MortalGrenade_Used.png new file mode 100644 index 000000000..25cf00226 Binary files /dev/null and b/models/MortalGrenade_Used.png differ diff --git a/models/MortalGrenade_bright.png b/models/MortalGrenade_bright.png new file mode 100644 index 000000000..a5399249b Binary files /dev/null and b/models/MortalGrenade_bright.png differ diff --git a/models/MortalGrenade_mask.png b/models/MortalGrenade_mask.png new file mode 100644 index 000000000..eb85b5c76 Binary files /dev/null and b/models/MortalGrenade_mask.png differ diff --git a/models/MortalLED.png b/models/MortalLED.png new file mode 100644 index 000000000..a87781e07 Binary files /dev/null and b/models/MortalLED.png differ diff --git a/models/MortalLED2.png b/models/MortalLED2.png new file mode 100644 index 000000000..fa3958458 Binary files /dev/null and b/models/MortalLED2.png differ diff --git a/models/MortalMag.iqm b/models/MortalMag.iqm new file mode 100644 index 000000000..7488ed290 Binary files /dev/null and b/models/MortalMag.iqm differ diff --git a/models/MortalMag.png b/models/MortalMag.png new file mode 100644 index 000000000..45cda4c2a Binary files /dev/null and b/models/MortalMag.png differ diff --git a/models/MortalMag_Empty.png b/models/MortalMag_Empty.png new file mode 100644 index 000000000..0b39786d3 Binary files /dev/null and b/models/MortalMag_Empty.png differ diff --git a/models/MortalMag_Empty_mask.png b/models/MortalMag_Empty_mask.png new file mode 100644 index 000000000..d16ddb42f Binary files /dev/null and b/models/MortalMag_Empty_mask.png differ diff --git a/models/MortalMag_bright.png b/models/MortalMag_bright.png new file mode 100644 index 000000000..c80b081c4 Binary files /dev/null and b/models/MortalMag_bright.png differ diff --git a/models/MortalMag_mask.png b/models/MortalMag_mask.png new file mode 100644 index 000000000..10e8314a7 Binary files /dev/null and b/models/MortalMag_mask.png differ diff --git a/models/MortalRifle.blend b/models/MortalRifle.blend new file mode 100644 index 000000000..7d45cc4f3 Binary files /dev/null and b/models/MortalRifle.blend differ diff --git a/models/MortalRifle.png b/models/MortalRifle.png new file mode 100644 index 000000000..9c9ab1a8b Binary files /dev/null and b/models/MortalRifle.png differ diff --git a/models/MortalRifle1st.blend b/models/MortalRifle1st.blend new file mode 100644 index 000000000..770224621 Binary files /dev/null and b/models/MortalRifle1st.blend differ diff --git a/models/MortalRifle1st.iqm b/models/MortalRifle1st.iqm new file mode 100644 index 000000000..11d091e24 Binary files /dev/null and b/models/MortalRifle1st.iqm differ diff --git a/models/MortalRiflePickup.iqm b/models/MortalRiflePickup.iqm new file mode 100644 index 000000000..4fe3c8f1e Binary files /dev/null and b/models/MortalRiflePickup.iqm differ diff --git a/models/MortalRifle_mask.png b/models/MortalRifle_mask.png new file mode 100644 index 000000000..d6309e8af Binary files /dev/null and b/models/MortalRifle_mask.png differ diff --git a/models/MortalRound.png b/models/MortalRound.png new file mode 100644 index 000000000..4e7750397 Binary files /dev/null and b/models/MortalRound.png differ diff --git a/models/MortalRound1.iqm b/models/MortalRound1.iqm new file mode 100644 index 000000000..51cd48d18 Binary files /dev/null and b/models/MortalRound1.iqm differ diff --git a/models/MortalRound2.iqm b/models/MortalRound2.iqm new file mode 100644 index 000000000..ec28c80b9 Binary files /dev/null and b/models/MortalRound2.iqm differ diff --git a/models/MortalRound3.iqm b/models/MortalRound3.iqm new file mode 100644 index 000000000..d3691f617 Binary files /dev/null and b/models/MortalRound3.iqm differ diff --git a/models/MortalRound5.iqm b/models/MortalRound5.iqm new file mode 100644 index 000000000..b8ef8a45a Binary files /dev/null and b/models/MortalRound5.iqm differ diff --git a/models/MortalRound_Used.png b/models/MortalRound_Used.png new file mode 100644 index 000000000..4e6058903 Binary files /dev/null and b/models/MortalRound_Used.png differ diff --git a/models/MortalRound_mask.png b/models/MortalRound_mask.png new file mode 100644 index 000000000..7c5c84773 Binary files /dev/null and b/models/MortalRound_mask.png differ diff --git a/models/MortalSight.png b/models/MortalSight.png new file mode 100644 index 000000000..102dd820a Binary files /dev/null and b/models/MortalSight.png differ diff --git a/models/Moth.md3 b/models/Moth.md3 new file mode 100644 index 000000000..eba4cb33c Binary files /dev/null and b/models/Moth.md3 differ diff --git a/models/Moth.png b/models/Moth.png index a381204e0..4053201ad 100644 Binary files a/models/Moth.png and b/models/Moth.png differ diff --git a/models/MothPlush.blend b/models/MothPlush.blend index 225272253..d21f4e60b 100644 Binary files a/models/MothPlush.blend and b/models/MothPlush.blend differ diff --git a/models/MothPlush.iqm b/models/MothPlush.iqm new file mode 100644 index 000000000..d44ae8cee Binary files /dev/null and b/models/MothPlush.iqm differ diff --git a/models/MothPlush.png b/models/MothPlush.png index be2bd411a..8a8322d85 100644 Binary files a/models/MothPlush.png and b/models/MothPlush.png differ diff --git a/models/MothPlush1st.blend b/models/MothPlush1st.blend index 494dbc46a..83dbc7804 100644 Binary files a/models/MothPlush1st.blend and b/models/MothPlush1st.blend differ diff --git a/models/MothPlush1st.iqm b/models/MothPlush1st.iqm new file mode 100644 index 000000000..52e55b130 Binary files /dev/null and b/models/MothPlush1st.iqm differ diff --git a/models/MothPlush1st_a.3d b/models/MothPlush1st_a.3d deleted file mode 100644 index 4ed7d33b2..000000000 Binary files a/models/MothPlush1st_a.3d and /dev/null differ diff --git a/models/MothPlush1st_d.3d b/models/MothPlush1st_d.3d deleted file mode 100644 index 01514aaf8..000000000 Binary files a/models/MothPlush1st_d.3d and /dev/null differ diff --git a/models/MothPlush_a.3d b/models/MothPlush_a.3d deleted file mode 100644 index ae7cc8a91..000000000 Binary files a/models/MothPlush_a.3d and /dev/null differ diff --git a/models/MothPlush_bright.png b/models/MothPlush_bright.png index 7c19e1672..9ede017d8 100644 Binary files a/models/MothPlush_bright.png and b/models/MothPlush_bright.png differ diff --git a/models/MothPlush_d.3d b/models/MothPlush_d.3d deleted file mode 100644 index 167a9aff2..000000000 Binary files a/models/MothPlush_d.3d and /dev/null differ diff --git a/models/Moth_Mashiro.png b/models/Moth_Mashiro.png deleted file mode 100644 index 12cdefe30..000000000 Binary files a/models/Moth_Mashiro.png and /dev/null differ diff --git a/models/Moth_Mashiro_bright.png b/models/Moth_Mashiro_bright.png deleted file mode 100644 index 57d23365e..000000000 Binary files a/models/Moth_Mashiro_bright.png and /dev/null differ diff --git a/models/Moth_White.png b/models/Moth_White.png new file mode 100644 index 000000000..53289983a Binary files /dev/null and b/models/Moth_White.png differ diff --git a/models/Moth_White_bright.png b/models/Moth_White_bright.png new file mode 100644 index 000000000..346e08dc8 Binary files /dev/null and b/models/Moth_White_bright.png differ diff --git a/models/Moth_a.3d b/models/Moth_a.3d deleted file mode 100644 index 706f306d9..000000000 Binary files a/models/Moth_a.3d and /dev/null differ diff --git a/models/Moth_d.3d b/models/Moth_d.3d deleted file mode 100644 index a77c64e12..000000000 Binary files a/models/Moth_d.3d and /dev/null differ diff --git a/models/NoLED.png b/models/NoLED.png new file mode 100644 index 000000000..1f0679bde Binary files /dev/null and b/models/NoLED.png differ diff --git a/models/Nugget.md3 b/models/Nugget.md3 new file mode 100644 index 000000000..34e9387a0 Binary files /dev/null and b/models/Nugget.md3 differ diff --git a/models/Nugget.png b/models/Nugget.png index 817a1c6f0..1090bcf57 100644 Binary files a/models/Nugget.png and b/models/Nugget.png differ diff --git a/models/Nugget_Armor.png b/models/Nugget_Armor.png index 0d46b3960..36c20f4e9 100644 Binary files a/models/Nugget_Armor.png and b/models/Nugget_Armor.png differ diff --git a/models/Nugget_a.3d b/models/Nugget_a.3d deleted file mode 100644 index 68e470940..000000000 Binary files a/models/Nugget_a.3d and /dev/null differ diff --git a/models/Nugget_d.3d b/models/Nugget_d.3d deleted file mode 100644 index 6bfa6fd8b..000000000 Binary files a/models/Nugget_d.3d and /dev/null differ diff --git a/models/Nugget_mask.png b/models/Nugget_mask.png index e02df9a52..2a57da755 100644 Binary files a/models/Nugget_mask.png and b/models/Nugget_mask.png differ diff --git a/models/Nutatco.blend b/models/Nutatco.blend index 6fc77fba6..abfa80cd0 100644 Binary files a/models/Nutatco.blend and b/models/Nutatco.blend differ diff --git a/models/Nutatco.iqm b/models/Nutatco.iqm new file mode 100644 index 000000000..e880c612f Binary files /dev/null and b/models/Nutatco.iqm differ diff --git a/models/Nutatco.png b/models/Nutatco.png index 1d2531401..d7f16c123 100644 Binary files a/models/Nutatco.png and b/models/Nutatco.png differ diff --git a/models/NutatcoBar1st.blend b/models/NutatcoBar1st.blend index 1b106043c..4968b793b 100644 Binary files a/models/NutatcoBar1st.blend and b/models/NutatcoBar1st.blend differ diff --git a/models/NutatcoBar1st.iqm b/models/NutatcoBar1st.iqm new file mode 100644 index 000000000..f8fe5a5fc Binary files /dev/null and b/models/NutatcoBar1st.iqm differ diff --git a/models/NutatcoBar1st_a.3d b/models/NutatcoBar1st_a.3d deleted file mode 100644 index d1b486ab3..000000000 Binary files a/models/NutatcoBar1st_a.3d and /dev/null differ diff --git a/models/NutatcoBar1st_d.3d b/models/NutatcoBar1st_d.3d deleted file mode 100644 index 0661de23c..000000000 Binary files a/models/NutatcoBar1st_d.3d and /dev/null differ diff --git a/models/Nutatco_a.3d b/models/Nutatco_a.3d deleted file mode 100644 index 9916859a6..000000000 Binary files a/models/Nutatco_a.3d and /dev/null differ diff --git a/models/Nutatco_d.3d b/models/Nutatco_d.3d deleted file mode 100644 index 460d1e0f6..000000000 Binary files a/models/Nutatco_d.3d and /dev/null differ diff --git a/models/Omnisight.iqm b/models/Omnisight.iqm new file mode 100644 index 000000000..a8d4a4c33 Binary files /dev/null and b/models/Omnisight.iqm differ diff --git a/models/Omnisight.png b/models/Omnisight.png index 1b9377c90..3ce6a1a46 100644 Binary files a/models/Omnisight.png and b/models/Omnisight.png differ diff --git a/models/Omnisight_a.3d b/models/Omnisight_a.3d deleted file mode 100644 index cfd192f7f..000000000 Binary files a/models/Omnisight_a.3d and /dev/null differ diff --git a/models/Omnisight_bright.png b/models/Omnisight_bright.png index 395f8c9c2..837413773 100644 Binary files a/models/Omnisight_bright.png and b/models/Omnisight_bright.png differ diff --git a/models/Omnisight_d.3d b/models/Omnisight_d.3d deleted file mode 100644 index 8108e429c..000000000 Binary files a/models/Omnisight_d.3d and /dev/null differ diff --git a/models/PerfectlyGeneric.png b/models/PerfectlyGeneric.png index e5982fabf..130440b38 100644 Binary files a/models/PerfectlyGeneric.png and b/models/PerfectlyGeneric.png differ diff --git a/models/PlasmaBlast.blend b/models/PlasmaBlast.blend new file mode 100644 index 000000000..6186bfdc8 Binary files /dev/null and b/models/PlasmaBlast.blend differ diff --git a/models/PlasmaBlast.png b/models/PlasmaBlast.png new file mode 100644 index 000000000..bec14d3f6 Binary files /dev/null and b/models/PlasmaBlast.png differ diff --git a/models/PlasmaBlastMag.iqm b/models/PlasmaBlastMag.iqm new file mode 100644 index 000000000..598380221 Binary files /dev/null and b/models/PlasmaBlastMag.iqm differ diff --git a/models/PlasmaBlastPickup.iqm b/models/PlasmaBlastPickup.iqm new file mode 100644 index 000000000..d62f3bfb4 Binary files /dev/null and b/models/PlasmaBlastPickup.iqm differ diff --git a/models/PlasmaBlast_1stL.png b/models/PlasmaBlast_1stL.png new file mode 100644 index 000000000..bec14d3f6 Binary files /dev/null and b/models/PlasmaBlast_1stL.png differ diff --git a/models/PlasmaBlast_1stR.png b/models/PlasmaBlast_1stR.png new file mode 100644 index 000000000..bec14d3f6 Binary files /dev/null and b/models/PlasmaBlast_1stR.png differ diff --git a/models/PlasmaBlast_battery.png b/models/PlasmaBlast_battery.png new file mode 100644 index 000000000..ab064fd5a Binary files /dev/null and b/models/PlasmaBlast_battery.png differ diff --git a/models/PlasmaBlast_bright.png b/models/PlasmaBlast_bright.png new file mode 100644 index 000000000..b4a8fdf2d Binary files /dev/null and b/models/PlasmaBlast_bright.png differ diff --git a/models/PlasmaBlast_charge.png b/models/PlasmaBlast_charge.png new file mode 100644 index 000000000..97d8f7093 Binary files /dev/null and b/models/PlasmaBlast_charge.png differ diff --git a/models/PlasmaBlast_grad.png b/models/PlasmaBlast_grad.png new file mode 100644 index 000000000..69e7d6018 Binary files /dev/null and b/models/PlasmaBlast_grad.png differ diff --git a/models/PlasmaBlast_mask.png b/models/PlasmaBlast_mask.png new file mode 100644 index 000000000..4e85ca718 Binary files /dev/null and b/models/PlasmaBlast_mask.png differ diff --git a/models/PlasmaGlob.md3 b/models/PlasmaGlob.md3 new file mode 100644 index 000000000..02a7bd516 Binary files /dev/null and b/models/PlasmaGlob.md3 differ diff --git a/models/PlasmaLED_L.png b/models/PlasmaLED_L.png new file mode 100644 index 000000000..5d243b434 Binary files /dev/null and b/models/PlasmaLED_L.png differ diff --git a/models/PlasmaLED_R.png b/models/PlasmaLED_R.png new file mode 100644 index 000000000..5d243b434 Binary files /dev/null and b/models/PlasmaLED_R.png differ diff --git a/models/Pusher.blend b/models/Pusher.blend deleted file mode 100644 index f07fb0dae..000000000 Binary files a/models/Pusher.blend and /dev/null differ diff --git a/models/Pusher.png b/models/Pusher.png deleted file mode 100644 index 7c6c85d1e..000000000 Binary files a/models/Pusher.png and /dev/null differ diff --git a/models/Pusher1st.blend b/models/Pusher1st.blend deleted file mode 100644 index 56daad1ab..000000000 Binary files a/models/Pusher1st.blend and /dev/null differ diff --git a/models/Pusher1st_a.3d b/models/Pusher1st_a.3d deleted file mode 100644 index 3822d3648..000000000 Binary files a/models/Pusher1st_a.3d and /dev/null differ diff --git a/models/Pusher1st_d.3d b/models/Pusher1st_d.3d deleted file mode 100644 index 57c1243c5..000000000 Binary files a/models/Pusher1st_d.3d and /dev/null differ diff --git a/models/PusherPickup_a.3d b/models/PusherPickup_a.3d deleted file mode 100644 index 6538d14cf..000000000 Binary files a/models/PusherPickup_a.3d and /dev/null differ diff --git a/models/PusherPickup_d.3d b/models/PusherPickup_d.3d deleted file mode 100644 index e5532f2f9..000000000 Binary files a/models/PusherPickup_d.3d and /dev/null differ diff --git a/models/QuadCell.png b/models/QuadCell.png new file mode 100644 index 000000000..fb02d01f1 Binary files /dev/null and b/models/QuadCell.png differ diff --git a/models/QuadCell_Used.png b/models/QuadCell_Used.png new file mode 100644 index 000000000..b52f89d04 Binary files /dev/null and b/models/QuadCell_Used.png differ diff --git a/models/QuadCell_bright.png b/models/QuadCell_bright.png new file mode 100644 index 000000000..737f9df6e Binary files /dev/null and b/models/QuadCell_bright.png differ diff --git a/models/QuadCell_mask.png b/models/QuadCell_mask.png new file mode 100644 index 000000000..793cf4f8a Binary files /dev/null and b/models/QuadCell_mask.png differ diff --git a/models/QuadLED.png b/models/QuadLED.png new file mode 100644 index 000000000..f50bb3756 Binary files /dev/null and b/models/QuadLED.png differ diff --git a/models/Quadravol.blend b/models/Quadravol.blend new file mode 100644 index 000000000..9de0ff95f Binary files /dev/null and b/models/Quadravol.blend differ diff --git a/models/Quadravol.png b/models/Quadravol.png new file mode 100644 index 000000000..1bf45d265 Binary files /dev/null and b/models/Quadravol.png differ diff --git a/models/Quadravol1st.blend b/models/Quadravol1st.blend new file mode 100644 index 000000000..8161271a7 Binary files /dev/null and b/models/Quadravol1st.blend differ diff --git a/models/Quadravol1st.iqm b/models/Quadravol1st.iqm new file mode 100644 index 000000000..fdb3f6cac Binary files /dev/null and b/models/Quadravol1st.iqm differ diff --git a/models/Quadravol1st_Casing.iqm b/models/Quadravol1st_Casing.iqm new file mode 100644 index 000000000..b4af9a391 Binary files /dev/null and b/models/Quadravol1st_Casing.iqm differ diff --git a/models/QuadravolAmmo.iqm b/models/QuadravolAmmo.iqm new file mode 100644 index 000000000..e893d2a3b Binary files /dev/null and b/models/QuadravolAmmo.iqm differ diff --git a/models/QuadravolAmmo_Three.iqm b/models/QuadravolAmmo_Three.iqm new file mode 100644 index 000000000..a207d71a8 Binary files /dev/null and b/models/QuadravolAmmo_Three.iqm differ diff --git a/models/QuadravolAmmo_Two.iqm b/models/QuadravolAmmo_Two.iqm new file mode 100644 index 000000000..8f0e14ae6 Binary files /dev/null and b/models/QuadravolAmmo_Two.iqm differ diff --git a/models/QuadravolCasing.iqm b/models/QuadravolCasing.iqm new file mode 100644 index 000000000..d23113dad Binary files /dev/null and b/models/QuadravolCasing.iqm differ diff --git a/models/QuadravolPickup.iqm b/models/QuadravolPickup.iqm new file mode 100644 index 000000000..144964652 Binary files /dev/null and b/models/QuadravolPickup.iqm differ diff --git a/models/Quadravol_mask.png b/models/Quadravol_mask.png new file mode 100644 index 000000000..949f6e54c Binary files /dev/null and b/models/Quadravol_mask.png differ diff --git a/models/QuickPunch1st.blend b/models/QuickPunch1st.blend index d006ef35c..d7b4d1071 100644 Binary files a/models/QuickPunch1st.blend and b/models/QuickPunch1st.blend differ diff --git a/models/QuickPunch1st.iqm b/models/QuickPunch1st.iqm new file mode 100644 index 000000000..6671665cf Binary files /dev/null and b/models/QuickPunch1st.iqm differ diff --git a/models/QuickPunch1st_a.3d b/models/QuickPunch1st_a.3d deleted file mode 100644 index 9ea23b446..000000000 Binary files a/models/QuickPunch1st_a.3d and /dev/null differ diff --git a/models/QuickPunch1st_d.3d b/models/QuickPunch1st_d.3d deleted file mode 100644 index 7fabf5734..000000000 Binary files a/models/QuickPunch1st_d.3d and /dev/null differ diff --git a/models/Ragekit.iqm b/models/Ragekit.iqm new file mode 100644 index 000000000..d6aa74f6e Binary files /dev/null and b/models/Ragekit.iqm differ diff --git a/models/Ragekit.png b/models/Ragekit.png index 4c118982b..c3ff7fcd9 100644 Binary files a/models/Ragekit.png and b/models/Ragekit.png differ diff --git a/models/RagekitX.iqm b/models/RagekitX.iqm new file mode 100644 index 000000000..8fb68ad85 Binary files /dev/null and b/models/RagekitX.iqm differ diff --git a/models/Ragekit_a.3d b/models/Ragekit_a.3d deleted file mode 100644 index 6e798c8aa..000000000 Binary files a/models/Ragekit_a.3d and /dev/null differ diff --git a/models/Ragekit_bright.png b/models/Ragekit_bright.png index 14a507f94..141c473e4 100644 Binary files a/models/Ragekit_bright.png and b/models/Ragekit_bright.png differ diff --git a/models/Ragekit_d.3d b/models/Ragekit_d.3d deleted file mode 100644 index c11b5e9ca..000000000 Binary files a/models/Ragekit_d.3d and /dev/null differ diff --git a/models/Ragekit_mask.png b/models/Ragekit_mask.png new file mode 100644 index 000000000..23a9bc4f1 Binary files /dev/null and b/models/Ragekit_mask.png differ diff --git a/models/Refresher.iqm b/models/Refresher.iqm new file mode 100644 index 000000000..a2beaeb57 Binary files /dev/null and b/models/Refresher.iqm differ diff --git a/models/Refresher.png b/models/Refresher.png index 341bfe397..1f61e103e 100644 Binary files a/models/Refresher.png and b/models/Refresher.png differ diff --git a/models/Refresher_a.3d b/models/Refresher_a.3d deleted file mode 100644 index aa5e39869..000000000 Binary files a/models/Refresher_a.3d and /dev/null differ diff --git a/models/Refresher_d.3d b/models/Refresher_d.3d deleted file mode 100644 index 59be26be5..000000000 Binary files a/models/Refresher_d.3d and /dev/null differ diff --git a/models/Refresher_mask.png b/models/Refresher_mask.png index 370e21810..73b8de828 100644 Binary files a/models/Refresher_mask.png and b/models/Refresher_mask.png differ diff --git a/models/SWWMFlag.blend b/models/SWWMFlag.blend index f525b900b..304a3b6c4 100644 Binary files a/models/SWWMFlag.blend and b/models/SWWMFlag.blend differ diff --git a/models/SWWMFlag.md3 b/models/SWWMFlag.md3 new file mode 100644 index 000000000..41f8b283c Binary files /dev/null and b/models/SWWMFlag.md3 differ diff --git a/models/SWWMFlag.png b/models/SWWMFlag.png index b01b28db7..b1e0e6cb0 100644 Binary files a/models/SWWMFlag.png and b/models/SWWMFlag.png differ diff --git a/models/SWWMFlag.xcf b/models/SWWMFlag.xcf index 795fad452..88790a64f 100644 Binary files a/models/SWWMFlag.xcf and b/models/SWWMFlag.xcf differ diff --git a/models/SWWMFlag_Enby.png b/models/SWWMFlag_Enby.png index d63224106..e0cc46a5a 100644 Binary files a/models/SWWMFlag_Enby.png and b/models/SWWMFlag_Enby.png differ diff --git a/models/SWWMFlag_Pride.png b/models/SWWMFlag_Pride.png index 0c190b292..f8c170be3 100644 Binary files a/models/SWWMFlag_Pride.png and b/models/SWWMFlag_Pride.png differ diff --git a/models/SWWMFlag_Trans.png b/models/SWWMFlag_Trans.png index 75fbef98b..03ec3f3fd 100644 Binary files a/models/SWWMFlag_Trans.png and b/models/SWWMFlag_Trans.png differ diff --git a/models/SWWMFlag_a.3d b/models/SWWMFlag_a.3d deleted file mode 100644 index b551ad070..000000000 Binary files a/models/SWWMFlag_a.3d and /dev/null differ diff --git a/models/SWWMFlag_d.3d b/models/SWWMFlag_d.3d deleted file mode 100644 index 388abdd39..000000000 Binary files a/models/SWWMFlag_d.3d and /dev/null differ diff --git a/models/SafetyTether.blend b/models/SafetyTether.blend index 6b6a8727e..aaeae24da 100644 Binary files a/models/SafetyTether.blend and b/models/SafetyTether.blend differ diff --git a/models/SafetyTether.iqm b/models/SafetyTether.iqm new file mode 100644 index 000000000..aef5309a5 Binary files /dev/null and b/models/SafetyTether.iqm differ diff --git a/models/SafetyTether.png b/models/SafetyTether.png index ceb2c4e96..299fd049d 100644 Binary files a/models/SafetyTether.png and b/models/SafetyTether.png differ diff --git a/models/SafetyTether_a.3d b/models/SafetyTether_a.3d deleted file mode 100644 index ce13e5e75..000000000 Binary files a/models/SafetyTether_a.3d and /dev/null differ diff --git a/models/SafetyTether_blue.png b/models/SafetyTether_blue.png index 3695cb17e..809c63e4d 100644 Binary files a/models/SafetyTether_blue.png and b/models/SafetyTether_blue.png differ diff --git a/models/SafetyTether_bright.png b/models/SafetyTether_bright.png index 422127c28..63441eaaf 100644 Binary files a/models/SafetyTether_bright.png and b/models/SafetyTether_bright.png differ diff --git a/models/SafetyTether_d.3d b/models/SafetyTether_d.3d deleted file mode 100644 index b43dfbbc4..000000000 Binary files a/models/SafetyTether_d.3d and /dev/null differ diff --git a/models/SafetyTether_mask.png b/models/SafetyTether_mask.png index b7feb44b4..45666dfc4 100644 Binary files a/models/SafetyTether_mask.png and b/models/SafetyTether_mask.png differ diff --git a/models/SafetyTether_off.png b/models/SafetyTether_off.png index b326c0668..9639ff943 100644 Binary files a/models/SafetyTether_off.png and b/models/SafetyTether_off.png differ diff --git a/models/SafetyTether_red.png b/models/SafetyTether_red.png index 008972df4..b35bd8d91 100644 Binary files a/models/SafetyTether_red.png and b/models/SafetyTether_red.png differ diff --git a/models/Sandwich.iqm b/models/Sandwich.iqm new file mode 100644 index 000000000..6fee5db77 Binary files /dev/null and b/models/Sandwich.iqm differ diff --git a/models/Sandwich.png b/models/Sandwich.png index cd0b24356..ef63fc986 100644 Binary files a/models/Sandwich.png and b/models/Sandwich.png differ diff --git a/models/Sandwich_a.3d b/models/Sandwich_a.3d deleted file mode 100644 index 2784d8353..000000000 Binary files a/models/Sandwich_a.3d and /dev/null differ diff --git a/models/Sandwich_d.3d b/models/Sandwich_d.3d deleted file mode 100644 index a813d45f5..000000000 Binary files a/models/Sandwich_d.3d and /dev/null differ diff --git a/models/SayaBean.blend b/models/SayaBean.blend index e585eb7a9..fb47c7eeb 100644 Binary files a/models/SayaBean.blend and b/models/SayaBean.blend differ diff --git a/models/SayaBean.iqm b/models/SayaBean.iqm new file mode 100644 index 000000000..0a937f158 Binary files /dev/null and b/models/SayaBean.iqm differ diff --git a/models/SayaBean.png b/models/SayaBean.png index 08ed007e0..e3cb62681 100644 Binary files a/models/SayaBean.png and b/models/SayaBean.png differ diff --git a/models/SayaBean1st.blend b/models/SayaBean1st.blend index 4ddd2de3e..7c508643a 100644 Binary files a/models/SayaBean1st.blend and b/models/SayaBean1st.blend differ diff --git a/models/SayaBean1st.iqm b/models/SayaBean1st.iqm new file mode 100644 index 000000000..f0f9e1563 Binary files /dev/null and b/models/SayaBean1st.iqm differ diff --git a/models/SayaBean1st_a.3d b/models/SayaBean1st_a.3d deleted file mode 100644 index 775ac9729..000000000 Binary files a/models/SayaBean1st_a.3d and /dev/null differ diff --git a/models/SayaBean1st_d.3d b/models/SayaBean1st_d.3d deleted file mode 100644 index 53fff01fd..000000000 Binary files a/models/SayaBean1st_d.3d and /dev/null differ diff --git a/models/SayaBean_a.3d b/models/SayaBean_a.3d deleted file mode 100644 index d1d351051..000000000 Binary files a/models/SayaBean_a.3d and /dev/null differ diff --git a/models/SayaBean_bright.png b/models/SayaBean_bright.png index 1d4e75a0b..e029f2a45 100644 Binary files a/models/SayaBean_bright.png and b/models/SayaBean_bright.png differ diff --git a/models/SayaBean_d.3d b/models/SayaBean_d.3d deleted file mode 100644 index 0ec30b299..000000000 Binary files a/models/SayaBean_d.3d and /dev/null differ diff --git a/models/SayasMug.blend b/models/SayasMug.blend new file mode 100644 index 000000000..802d87d71 Binary files /dev/null and b/models/SayasMug.blend differ diff --git a/models/SayasMug.iqm b/models/SayasMug.iqm new file mode 100644 index 000000000..0f80cb117 Binary files /dev/null and b/models/SayasMug.iqm differ diff --git a/models/SayasMug.png b/models/SayasMug.png new file mode 100644 index 000000000..a365b3819 Binary files /dev/null and b/models/SayasMug.png differ diff --git a/models/SayasMug1st.blend b/models/SayasMug1st.blend new file mode 100644 index 000000000..9c7756f37 Binary files /dev/null and b/models/SayasMug1st.blend differ diff --git a/models/SayasMug1st.iqm b/models/SayasMug1st.iqm new file mode 100644 index 000000000..3b888ec8a Binary files /dev/null and b/models/SayasMug1st.iqm differ diff --git a/models/SayasMug_mask.png b/models/SayasMug_mask.png new file mode 100644 index 000000000..e9736448d Binary files /dev/null and b/models/SayasMug_mask.png differ diff --git a/models/SheenAmmoBand.png b/models/SheenAmmoBand.png new file mode 100644 index 000000000..c1a9cdc01 Binary files /dev/null and b/models/SheenAmmoBand.png differ diff --git a/models/SheenAmmoBox.png b/models/SheenAmmoBox.png new file mode 100644 index 000000000..ab7221350 Binary files /dev/null and b/models/SheenAmmoBox.png differ diff --git a/models/SheenAmmoBox_mask.png b/models/SheenAmmoBox_mask.png new file mode 100644 index 000000000..2c945daf6 Binary files /dev/null and b/models/SheenAmmoBox_mask.png differ diff --git a/models/SheenBullet.iqm b/models/SheenBullet.iqm new file mode 100644 index 000000000..4e85a94b6 Binary files /dev/null and b/models/SheenBullet.iqm differ diff --git a/models/SheenBullet.png b/models/SheenBullet.png new file mode 100644 index 000000000..3bf09f1f6 Binary files /dev/null and b/models/SheenBullet.png differ diff --git a/models/SheenBullet10.iqm b/models/SheenBullet10.iqm new file mode 100644 index 000000000..6b909ad2f Binary files /dev/null and b/models/SheenBullet10.iqm differ diff --git a/models/SheenBullet2.iqm b/models/SheenBullet2.iqm new file mode 100644 index 000000000..a555ab737 Binary files /dev/null and b/models/SheenBullet2.iqm differ diff --git a/models/SheenBullet3.iqm b/models/SheenBullet3.iqm new file mode 100644 index 000000000..812570b1b Binary files /dev/null and b/models/SheenBullet3.iqm differ diff --git a/models/SheenBullet50.iqm b/models/SheenBullet50.iqm new file mode 100644 index 000000000..ef98af86a Binary files /dev/null and b/models/SheenBullet50.iqm differ diff --git a/models/SheenBulletCase.iqm b/models/SheenBulletCase.iqm new file mode 100644 index 000000000..e9cca0071 Binary files /dev/null and b/models/SheenBulletCase.iqm differ diff --git a/models/SheenBullet_Fired.png b/models/SheenBullet_Fired.png new file mode 100644 index 000000000..9bb74cf18 Binary files /dev/null and b/models/SheenBullet_Fired.png differ diff --git a/models/SheenBullet_Fired_mask.png b/models/SheenBullet_Fired_mask.png new file mode 100644 index 000000000..7a30a09c5 Binary files /dev/null and b/models/SheenBullet_Fired_mask.png differ diff --git a/models/SheenBullet_mask.png b/models/SheenBullet_mask.png new file mode 100644 index 000000000..a79502a28 Binary files /dev/null and b/models/SheenBullet_mask.png differ diff --git a/models/SheenHMG.blend b/models/SheenHMG.blend new file mode 100644 index 000000000..79db0339f Binary files /dev/null and b/models/SheenHMG.blend differ diff --git a/models/SheenHMG.png b/models/SheenHMG.png new file mode 100644 index 000000000..efb09ee53 Binary files /dev/null and b/models/SheenHMG.png differ diff --git a/models/SheenHMG1st.blend b/models/SheenHMG1st.blend new file mode 100644 index 000000000..8cf6ab1c3 Binary files /dev/null and b/models/SheenHMG1st.blend differ diff --git a/models/SheenHMG1st.iqm b/models/SheenHMG1st.iqm new file mode 100644 index 000000000..cb3adbe43 Binary files /dev/null and b/models/SheenHMG1st.iqm differ diff --git a/models/SheenHMGPickup.iqm b/models/SheenHMGPickup.iqm new file mode 100644 index 000000000..acbfb13ed Binary files /dev/null and b/models/SheenHMGPickup.iqm differ diff --git a/models/SheenHMG_mask.png b/models/SheenHMG_mask.png new file mode 100644 index 000000000..42622b0a4 Binary files /dev/null and b/models/SheenHMG_mask.png differ diff --git a/models/SheenLED.png b/models/SheenLED.png new file mode 100644 index 000000000..1f0679bde Binary files /dev/null and b/models/SheenLED.png differ diff --git a/models/ShellAmmo_Eight_a.3d b/models/ShellAmmo_Eight_a.3d deleted file mode 100644 index 2935bd23a..000000000 Binary files a/models/ShellAmmo_Eight_a.3d and /dev/null differ diff --git a/models/ShellAmmo_Eight_d.3d b/models/ShellAmmo_Eight_d.3d deleted file mode 100644 index 2fba63884..000000000 Binary files a/models/ShellAmmo_Eight_d.3d and /dev/null differ diff --git a/models/ShellAmmo_Four.iqm b/models/ShellAmmo_Four.iqm new file mode 100644 index 000000000..30070ca98 Binary files /dev/null and b/models/ShellAmmo_Four.iqm differ diff --git a/models/ShellAmmo_Four_a.3d b/models/ShellAmmo_Four_a.3d deleted file mode 100644 index e29c73c5b..000000000 Binary files a/models/ShellAmmo_Four_a.3d and /dev/null differ diff --git a/models/ShellAmmo_Four_d.3d b/models/ShellAmmo_Four_d.3d deleted file mode 100644 index 0991f2947..000000000 Binary files a/models/ShellAmmo_Four_d.3d and /dev/null differ diff --git a/models/ShellAmmo_One.iqm b/models/ShellAmmo_One.iqm new file mode 100644 index 000000000..64047bf48 Binary files /dev/null and b/models/ShellAmmo_One.iqm differ diff --git a/models/ShellAmmo_One_a.3d b/models/ShellAmmo_One_a.3d deleted file mode 100644 index 70b681d77..000000000 Binary files a/models/ShellAmmo_One_a.3d and /dev/null differ diff --git a/models/ShellAmmo_One_d.3d b/models/ShellAmmo_One_d.3d deleted file mode 100644 index eb6eee040..000000000 Binary files a/models/ShellAmmo_One_d.3d and /dev/null differ diff --git a/models/ShellAmmo_Six.iqm b/models/ShellAmmo_Six.iqm new file mode 100644 index 000000000..4908ba890 Binary files /dev/null and b/models/ShellAmmo_Six.iqm differ diff --git a/models/ShellAmmo_Sixteen_a.3d b/models/ShellAmmo_Sixteen_a.3d deleted file mode 100644 index 3dac8400c..000000000 Binary files a/models/ShellAmmo_Sixteen_a.3d and /dev/null differ diff --git a/models/ShellAmmo_Sixteen_d.3d b/models/ShellAmmo_Sixteen_d.3d deleted file mode 100644 index d6959b43d..000000000 Binary files a/models/ShellAmmo_Sixteen_d.3d and /dev/null differ diff --git a/models/ShellAmmo_Twelve_a.3d b/models/ShellAmmo_Twelve_a.3d deleted file mode 100644 index 06b664679..000000000 Binary files a/models/ShellAmmo_Twelve_a.3d and /dev/null differ diff --git a/models/ShellAmmo_Twelve_d.3d b/models/ShellAmmo_Twelve_d.3d deleted file mode 100644 index 31e2a30d2..000000000 Binary files a/models/ShellAmmo_Twelve_d.3d and /dev/null differ diff --git a/models/ShellAmmo_Two.iqm b/models/ShellAmmo_Two.iqm new file mode 100644 index 000000000..e281453f5 Binary files /dev/null and b/models/ShellAmmo_Two.iqm differ diff --git a/models/ShellAmmo_Two_a.3d b/models/ShellAmmo_Two_a.3d deleted file mode 100644 index bccd622c3..000000000 Binary files a/models/ShellAmmo_Two_a.3d and /dev/null differ diff --git a/models/ShellAmmo_Two_d.3d b/models/ShellAmmo_Two_d.3d deleted file mode 100644 index d9fe273eb..000000000 Binary files a/models/ShellAmmo_Two_d.3d and /dev/null differ diff --git a/models/Shell_Ball.png b/models/Shell_Ball.png deleted file mode 100644 index 1e9432f88..000000000 Binary files a/models/Shell_Ball.png and /dev/null differ diff --git a/models/Shell_Ball_Used.png b/models/Shell_Ball_Used.png deleted file mode 100644 index d44658d45..000000000 Binary files a/models/Shell_Ball_Used.png and /dev/null differ diff --git a/models/Shell_Dragon.png b/models/Shell_Dragon.png deleted file mode 100644 index 03bbc7481..000000000 Binary files a/models/Shell_Dragon.png and /dev/null differ diff --git a/models/Shell_Dragon_Used.png b/models/Shell_Dragon_Used.png deleted file mode 100644 index 98a7f7b89..000000000 Binary files a/models/Shell_Dragon_Used.png and /dev/null differ diff --git a/models/Shell_Fuck.png b/models/Shell_Fuck.png deleted file mode 100644 index a8f034e73..000000000 Binary files a/models/Shell_Fuck.png and /dev/null differ diff --git a/models/Shell_Fuck_Used.png b/models/Shell_Fuck_Used.png deleted file mode 100644 index 5407b103a..000000000 Binary files a/models/Shell_Fuck_Used.png and /dev/null differ diff --git a/models/Shell_Gold.png b/models/Shell_Gold.png index 48bd872ba..01b43878e 100644 Binary files a/models/Shell_Gold.png and b/models/Shell_Gold.png differ diff --git a/models/Shell_Gold_Used.png b/models/Shell_Gold_Used.png index 3def959d9..092b46305 100644 Binary files a/models/Shell_Gold_Used.png and b/models/Shell_Gold_Used.png differ diff --git a/models/Shell_Gold_Used_mask.png b/models/Shell_Gold_Used_mask.png index 7f8290d91..0210945e0 100644 Binary files a/models/Shell_Gold_Used_mask.png and b/models/Shell_Gold_Used_mask.png differ diff --git a/models/Shell_Gold_mask.png b/models/Shell_Gold_mask.png index 79e388daa..db50d29d5 100644 Binary files a/models/Shell_Gold_mask.png and b/models/Shell_Gold_mask.png differ diff --git a/models/Shell_Kinylum.png b/models/Shell_Kinylum.png deleted file mode 100644 index f821782aa..000000000 Binary files a/models/Shell_Kinylum.png and /dev/null differ diff --git a/models/Shell_Kinylum_Used.png b/models/Shell_Kinylum_Used.png deleted file mode 100644 index 515fa3d6b..000000000 Binary files a/models/Shell_Kinylum_Used.png and /dev/null differ diff --git a/models/Shell_Normal.png b/models/Shell_Normal.png index 8c3889180..dba2f457a 100644 Binary files a/models/Shell_Normal.png and b/models/Shell_Normal.png differ diff --git a/models/Shell_Normal_Used.png b/models/Shell_Normal_Used.png index 8ef9274f2..ce2e06ccf 100644 Binary files a/models/Shell_Normal_Used.png and b/models/Shell_Normal_Used.png differ diff --git a/models/Shell_Normal_Used_mask.png b/models/Shell_Normal_Used_mask.png new file mode 100644 index 000000000..56c35afeb Binary files /dev/null and b/models/Shell_Normal_Used_mask.png differ diff --git a/models/Shell_Normal_mask.png b/models/Shell_Normal_mask.png new file mode 100644 index 000000000..5ce63087c Binary files /dev/null and b/models/Shell_Normal_mask.png differ diff --git a/models/Shell_Slug.png b/models/Shell_Slug.png deleted file mode 100644 index 164241a4a..000000000 Binary files a/models/Shell_Slug.png and /dev/null differ diff --git a/models/Shell_Slug_Used.png b/models/Shell_Slug_Used.png deleted file mode 100644 index b51cb5f75..000000000 Binary files a/models/Shell_Slug_Used.png and /dev/null differ diff --git a/models/ShotShell.iqm b/models/ShotShell.iqm new file mode 100644 index 000000000..2ebb48835 Binary files /dev/null and b/models/ShotShell.iqm differ diff --git a/models/ShotShell_a.3d b/models/ShotShell_a.3d deleted file mode 100644 index d8b2edb71..000000000 Binary files a/models/ShotShell_a.3d and /dev/null differ diff --git a/models/ShotShell_d.3d b/models/ShotShell_d.3d deleted file mode 100644 index eb6eee040..000000000 Binary files a/models/ShotShell_d.3d and /dev/null differ diff --git a/models/Silverbullet.blend b/models/Silverbullet.blend index bc6fa272c..d25b2fbe0 100644 Binary files a/models/Silverbullet.blend and b/models/Silverbullet.blend differ diff --git a/models/Silverbullet.png b/models/Silverbullet.png index fe139a65f..edf90dc01 100644 Binary files a/models/Silverbullet.png and b/models/Silverbullet.png differ diff --git a/models/Silverbullet1st.blend b/models/Silverbullet1st.blend index b6bafe312..3d02537c9 100644 Binary files a/models/Silverbullet1st.blend and b/models/Silverbullet1st.blend differ diff --git a/models/Silverbullet1st.iqm b/models/Silverbullet1st.iqm new file mode 100644 index 000000000..e787108ae Binary files /dev/null and b/models/Silverbullet1st.iqm differ diff --git a/models/Silverbullet1st_Casing.iqm b/models/Silverbullet1st_Casing.iqm new file mode 100644 index 000000000..692848e9b Binary files /dev/null and b/models/Silverbullet1st_Casing.iqm differ diff --git a/models/Silverbullet1st_Smoke.iqm b/models/Silverbullet1st_Smoke.iqm new file mode 100644 index 000000000..ec33b0436 Binary files /dev/null and b/models/Silverbullet1st_Smoke.iqm differ diff --git a/models/Silverbullet1st_a.3d b/models/Silverbullet1st_a.3d deleted file mode 100644 index b9a295e73..000000000 Binary files a/models/Silverbullet1st_a.3d and /dev/null differ diff --git a/models/Silverbullet1st_d.3d b/models/Silverbullet1st_d.3d deleted file mode 100644 index e7e20d366..000000000 Binary files a/models/Silverbullet1st_d.3d and /dev/null differ diff --git a/models/SilverbulletAmmo.png b/models/SilverbulletAmmo.png index 95500dfeb..6998fd87d 100644 Binary files a/models/SilverbulletAmmo.png and b/models/SilverbulletAmmo.png differ diff --git a/models/SilverbulletAmmo_Empty.png b/models/SilverbulletAmmo_Empty.png new file mode 100644 index 000000000..daaf4bd2d Binary files /dev/null and b/models/SilverbulletAmmo_Empty.png differ diff --git a/models/SilverbulletAmmo_EmptyMag.png b/models/SilverbulletAmmo_EmptyMag.png deleted file mode 100644 index bdbd85ad7..000000000 Binary files a/models/SilverbulletAmmo_EmptyMag.png and /dev/null differ diff --git a/models/SilverbulletAmmo_Empty_mask.png b/models/SilverbulletAmmo_Empty_mask.png new file mode 100644 index 000000000..c94ae138a Binary files /dev/null and b/models/SilverbulletAmmo_Empty_mask.png differ diff --git a/models/SilverbulletAmmo_FCB.png b/models/SilverbulletAmmo_FCB.png deleted file mode 100644 index 6786d5eb5..000000000 Binary files a/models/SilverbulletAmmo_FCB.png and /dev/null differ diff --git a/models/SilverbulletAmmo_FCB_EmptyMag.png b/models/SilverbulletAmmo_FCB_EmptyMag.png deleted file mode 100644 index b0f4c0bd4..000000000 Binary files a/models/SilverbulletAmmo_FCB_EmptyMag.png and /dev/null differ diff --git a/models/SilverbulletAmmo_mask.png b/models/SilverbulletAmmo_mask.png new file mode 100644 index 000000000..0bca60c27 Binary files /dev/null and b/models/SilverbulletAmmo_mask.png differ diff --git a/models/SilverbulletAmmo_maskB.png b/models/SilverbulletAmmo_maskB.png new file mode 100644 index 000000000..59895c7ff Binary files /dev/null and b/models/SilverbulletAmmo_maskB.png differ diff --git a/models/SilverbulletAmmo_maskG.png b/models/SilverbulletAmmo_maskG.png new file mode 100644 index 000000000..652543b1e Binary files /dev/null and b/models/SilverbulletAmmo_maskG.png differ diff --git a/models/SilverbulletBullet.iqm b/models/SilverbulletBullet.iqm new file mode 100644 index 000000000..c018defec Binary files /dev/null and b/models/SilverbulletBullet.iqm differ diff --git a/models/SilverbulletBullet.png b/models/SilverbulletBullet.png index 40f12d8d5..b6c6b5d45 100644 Binary files a/models/SilverbulletBullet.png and b/models/SilverbulletBullet.png differ diff --git a/models/SilverbulletBullet2.iqm b/models/SilverbulletBullet2.iqm new file mode 100644 index 000000000..d5e374c11 Binary files /dev/null and b/models/SilverbulletBullet2.iqm differ diff --git a/models/SilverbulletBullet2_FCB_a.3d b/models/SilverbulletBullet2_FCB_a.3d deleted file mode 100644 index 90e3e3c40..000000000 Binary files a/models/SilverbulletBullet2_FCB_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet2_FCB_d.3d b/models/SilverbulletBullet2_FCB_d.3d deleted file mode 100644 index 55e2b762b..000000000 Binary files a/models/SilverbulletBullet2_FCB_d.3d and /dev/null differ diff --git a/models/SilverbulletBullet2_a.3d b/models/SilverbulletBullet2_a.3d deleted file mode 100644 index 43f264e99..000000000 Binary files a/models/SilverbulletBullet2_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet2_d.3d b/models/SilverbulletBullet2_d.3d deleted file mode 100644 index 55e2b762b..000000000 Binary files a/models/SilverbulletBullet2_d.3d and /dev/null differ diff --git a/models/SilverbulletBullet3.iqm b/models/SilverbulletBullet3.iqm new file mode 100644 index 000000000..75b411753 Binary files /dev/null and b/models/SilverbulletBullet3.iqm differ diff --git a/models/SilverbulletBullet3_FCB_a.3d b/models/SilverbulletBullet3_FCB_a.3d deleted file mode 100644 index 00a0d2943..000000000 Binary files a/models/SilverbulletBullet3_FCB_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet3_FCB_d.3d b/models/SilverbulletBullet3_FCB_d.3d deleted file mode 100644 index b238a06ae..000000000 Binary files a/models/SilverbulletBullet3_FCB_d.3d and /dev/null differ diff --git a/models/SilverbulletBullet3_a.3d b/models/SilverbulletBullet3_a.3d deleted file mode 100644 index dd4665ba3..000000000 Binary files a/models/SilverbulletBullet3_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet3_d.3d b/models/SilverbulletBullet3_d.3d deleted file mode 100644 index b238a06ae..000000000 Binary files a/models/SilverbulletBullet3_d.3d and /dev/null differ diff --git a/models/SilverbulletBullet_FCB.png b/models/SilverbulletBullet_FCB.png deleted file mode 100644 index c2f89d5d4..000000000 Binary files a/models/SilverbulletBullet_FCB.png and /dev/null differ diff --git a/models/SilverbulletBullet_FCB_Used.png b/models/SilverbulletBullet_FCB_Used.png deleted file mode 100644 index be0ffa304..000000000 Binary files a/models/SilverbulletBullet_FCB_Used.png and /dev/null differ diff --git a/models/SilverbulletBullet_FCB_a.3d b/models/SilverbulletBullet_FCB_a.3d deleted file mode 100644 index 65153c54c..000000000 Binary files a/models/SilverbulletBullet_FCB_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet_FCB_d.3d b/models/SilverbulletBullet_FCB_d.3d deleted file mode 100644 index 1d507e3bd..000000000 Binary files a/models/SilverbulletBullet_FCB_d.3d and /dev/null differ diff --git a/models/SilverbulletBullet_Used.png b/models/SilverbulletBullet_Used.png index 9b5d92adf..9c8f56c7c 100644 Binary files a/models/SilverbulletBullet_Used.png and b/models/SilverbulletBullet_Used.png differ diff --git a/models/SilverbulletBullet_Used_mask.png b/models/SilverbulletBullet_Used_mask.png new file mode 100644 index 000000000..14bc4bd05 Binary files /dev/null and b/models/SilverbulletBullet_Used_mask.png differ diff --git a/models/SilverbulletBullet_a.3d b/models/SilverbulletBullet_a.3d deleted file mode 100644 index 844e24119..000000000 Binary files a/models/SilverbulletBullet_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet_d.3d b/models/SilverbulletBullet_d.3d deleted file mode 100644 index 1d507e3bd..000000000 Binary files a/models/SilverbulletBullet_d.3d and /dev/null differ diff --git a/models/SilverbulletBullet_mask.png b/models/SilverbulletBullet_mask.png new file mode 100644 index 000000000..4b5a9ae32 Binary files /dev/null and b/models/SilverbulletBullet_mask.png differ diff --git a/models/SilverbulletCase.iqm b/models/SilverbulletCase.iqm new file mode 100644 index 000000000..3889fc65e Binary files /dev/null and b/models/SilverbulletCase.iqm differ diff --git a/models/SilverbulletCase_FCB_a.3d b/models/SilverbulletCase_FCB_a.3d deleted file mode 100644 index 6f940f816..000000000 Binary files a/models/SilverbulletCase_FCB_a.3d and /dev/null differ diff --git a/models/SilverbulletCase_FCB_d.3d b/models/SilverbulletCase_FCB_d.3d deleted file mode 100644 index 5ed24aec2..000000000 Binary files a/models/SilverbulletCase_FCB_d.3d and /dev/null differ diff --git a/models/SilverbulletCase_a.3d b/models/SilverbulletCase_a.3d deleted file mode 100644 index c8ae8a62a..000000000 Binary files a/models/SilverbulletCase_a.3d and /dev/null differ diff --git a/models/SilverbulletCase_d.3d b/models/SilverbulletCase_d.3d deleted file mode 100644 index 6ef745fd1..000000000 Binary files a/models/SilverbulletCase_d.3d and /dev/null differ diff --git a/models/SilverbulletJetNoise.png b/models/SilverbulletJetNoise.png index d9fde0298..e931c93f5 100644 Binary files a/models/SilverbulletJetNoise.png and b/models/SilverbulletJetNoise.png differ diff --git a/models/SilverbulletJetSmoke.png b/models/SilverbulletJetSmoke.png index ed831e246..d92061cf2 100644 Binary files a/models/SilverbulletJetSmoke.png and b/models/SilverbulletJetSmoke.png differ diff --git a/models/SilverbulletMag.iqm b/models/SilverbulletMag.iqm new file mode 100644 index 000000000..ab3941bef Binary files /dev/null and b/models/SilverbulletMag.iqm differ diff --git a/models/SilverbulletMag_a.3d b/models/SilverbulletMag_a.3d deleted file mode 100644 index e47181336..000000000 Binary files a/models/SilverbulletMag_a.3d and /dev/null differ diff --git a/models/SilverbulletMag_d.3d b/models/SilverbulletMag_d.3d deleted file mode 100644 index 95f03d9e6..000000000 Binary files a/models/SilverbulletMag_d.3d and /dev/null differ diff --git a/models/SilverbulletPickup.iqm b/models/SilverbulletPickup.iqm new file mode 100644 index 000000000..077479096 Binary files /dev/null and b/models/SilverbulletPickup.iqm differ diff --git a/models/SilverbulletPickup_a.3d b/models/SilverbulletPickup_a.3d deleted file mode 100644 index 6d540089d..000000000 Binary files a/models/SilverbulletPickup_a.3d and /dev/null differ diff --git a/models/SilverbulletPickup_d.3d b/models/SilverbulletPickup_d.3d deleted file mode 100644 index d80d68547..000000000 Binary files a/models/SilverbulletPickup_d.3d and /dev/null differ diff --git a/models/SilverbulletProjectile_a.3d b/models/SilverbulletProjectile_a.3d deleted file mode 100644 index 65aec978c..000000000 Binary files a/models/SilverbulletProjectile_a.3d and /dev/null differ diff --git a/models/SilverbulletProjectile_d.3d b/models/SilverbulletProjectile_d.3d deleted file mode 100644 index 66f87336a..000000000 Binary files a/models/SilverbulletProjectile_d.3d and /dev/null differ diff --git a/models/Silverbullet_mask.png b/models/Silverbullet_mask.png new file mode 100644 index 000000000..0319fc8d9 Binary files /dev/null and b/models/Silverbullet_mask.png differ diff --git a/models/Sparkster.blend b/models/Sparkster.blend index 56c47720a..222b41071 100644 Binary files a/models/Sparkster.blend and b/models/Sparkster.blend differ diff --git a/models/Sparkster.png b/models/Sparkster.png index 5f4ffccaa..2bfd08390 100644 Binary files a/models/Sparkster.png and b/models/Sparkster.png differ diff --git a/models/Sparkster1st.blend b/models/Sparkster1st.blend index 150985782..6398d46ce 100644 Binary files a/models/Sparkster1st.blend and b/models/Sparkster1st.blend differ diff --git a/models/Sparkster1st.iqm b/models/Sparkster1st.iqm new file mode 100644 index 000000000..4963eccc9 Binary files /dev/null and b/models/Sparkster1st.iqm differ diff --git a/models/Sparkster1st_a.3d b/models/Sparkster1st_a.3d deleted file mode 100644 index 3d8cc6716..000000000 Binary files a/models/Sparkster1st_a.3d and /dev/null differ diff --git a/models/Sparkster1st_d.3d b/models/Sparkster1st_d.3d deleted file mode 100644 index 0050623bb..000000000 Binary files a/models/Sparkster1st_d.3d and /dev/null differ diff --git a/models/SparksterAmmo.iqm b/models/SparksterAmmo.iqm new file mode 100644 index 000000000..f0921217b Binary files /dev/null and b/models/SparksterAmmo.iqm differ diff --git a/models/SparksterAmmo.png b/models/SparksterAmmo.png index 44a5a83d5..a1cfbaa53 100644 Binary files a/models/SparksterAmmo.png and b/models/SparksterAmmo.png differ diff --git a/models/SparksterAmmo2.iqm b/models/SparksterAmmo2.iqm new file mode 100644 index 000000000..18aa4cdcf Binary files /dev/null and b/models/SparksterAmmo2.iqm differ diff --git a/models/SparksterAmmo2_a.3d b/models/SparksterAmmo2_a.3d deleted file mode 100644 index a44789032..000000000 Binary files a/models/SparksterAmmo2_a.3d and /dev/null differ diff --git a/models/SparksterAmmo2_d.3d b/models/SparksterAmmo2_d.3d deleted file mode 100644 index d1d50093e..000000000 Binary files a/models/SparksterAmmo2_d.3d and /dev/null differ diff --git a/models/SparksterAmmo_a.3d b/models/SparksterAmmo_a.3d deleted file mode 100644 index bb4d68b3a..000000000 Binary files a/models/SparksterAmmo_a.3d and /dev/null differ diff --git a/models/SparksterAmmo_bright.png b/models/SparksterAmmo_bright.png index 982a1f706..e74e7ce9c 100644 Binary files a/models/SparksterAmmo_bright.png and b/models/SparksterAmmo_bright.png differ diff --git a/models/SparksterAmmo_d.3d b/models/SparksterAmmo_d.3d deleted file mode 100644 index 2824f65e7..000000000 Binary files a/models/SparksterAmmo_d.3d and /dev/null differ diff --git a/models/SparksterAmmo_mask.png b/models/SparksterAmmo_mask.png index 95cb70870..42a0cc1b2 100644 Binary files a/models/SparksterAmmo_mask.png and b/models/SparksterAmmo_mask.png differ diff --git a/models/SparksterBall.iqm b/models/SparksterBall.iqm new file mode 100644 index 000000000..5231522e2 Binary files /dev/null and b/models/SparksterBall.iqm differ diff --git a/models/SparksterBall.png b/models/SparksterBall.png index c24b70e59..a6e2e5681 100644 Binary files a/models/SparksterBall.png and b/models/SparksterBall.png differ diff --git a/models/SparksterBall_a.3d b/models/SparksterBall_a.3d deleted file mode 100644 index bdbb60969..000000000 Binary files a/models/SparksterBall_a.3d and /dev/null differ diff --git a/models/SparksterBall_d.3d b/models/SparksterBall_d.3d deleted file mode 100644 index 4f3194a80..000000000 Binary files a/models/SparksterBall_d.3d and /dev/null differ diff --git a/models/SparksterBall_mask.png b/models/SparksterBall_mask.png index 915ffd51e..7e7a93198 100644 Binary files a/models/SparksterBall_mask.png and b/models/SparksterBall_mask.png differ diff --git a/models/SparksterPickup.iqm b/models/SparksterPickup.iqm new file mode 100644 index 000000000..75b5404e6 Binary files /dev/null and b/models/SparksterPickup.iqm differ diff --git a/models/SparksterPickup_a.3d b/models/SparksterPickup_a.3d deleted file mode 100644 index 4c1f79bc0..000000000 Binary files a/models/SparksterPickup_a.3d and /dev/null differ diff --git a/models/SparksterPickup_d.3d b/models/SparksterPickup_d.3d deleted file mode 100644 index f7ee6a83a..000000000 Binary files a/models/SparksterPickup_d.3d and /dev/null differ diff --git a/models/SparksterVent.obj b/models/SparksterVent.obj new file mode 100644 index 000000000..8880a1c2e --- /dev/null +++ b/models/SparksterVent.obj @@ -0,0 +1,22 @@ +v 0.110535 -0.053528 -0.593323 +v 0.190918 -0.133850 -0.593323 +v 0.262634 0.098572 -0.593323 +v 0.343018 0.018250 -0.593323 +v -0.033630 -0.133911 -0.593323 +v 0.053467 -0.060852 -0.593323 +v -0.171875 0.030884 -0.593323 +v -0.084839 0.103943 -0.593323 +vn -0.0000 -0.0000 1.0000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 0.003906 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +s off +f 2/2/1 3/3/1 1/1/1 +f 2/2/1 4/4/1 3/3/1 +f 6/6/1 7/7/1 5/5/1 +f 6/6/1 8/8/1 7/7/1 diff --git a/models/Sparkster_mask.png b/models/Sparkster_mask.png index 46d8f5e17..96ebbb087 100644 Binary files a/models/Sparkster_mask.png and b/models/Sparkster_mask.png differ diff --git a/models/Spreadgun.blend b/models/Spreadgun.blend index 84d51c423..5b98c7f3f 100644 Binary files a/models/Spreadgun.blend and b/models/Spreadgun.blend differ diff --git a/models/Spreadgun.png b/models/Spreadgun.png index 836dc12a9..19bb21e16 100644 Binary files a/models/Spreadgun.png and b/models/Spreadgun.png differ diff --git a/models/Spreadgun1st.blend b/models/Spreadgun1st.blend index cc3aee971..d922115ae 100644 Binary files a/models/Spreadgun1st.blend and b/models/Spreadgun1st.blend differ diff --git a/models/Spreadgun1st.iqm b/models/Spreadgun1st.iqm new file mode 100644 index 000000000..bfa0f91b3 Binary files /dev/null and b/models/Spreadgun1st.iqm differ diff --git a/models/Spreadgun1st_a.3d b/models/Spreadgun1st_a.3d deleted file mode 100644 index f185c3546..000000000 Binary files a/models/Spreadgun1st_a.3d and /dev/null differ diff --git a/models/Spreadgun1st_d.3d b/models/Spreadgun1st_d.3d deleted file mode 100644 index fab8932eb..000000000 Binary files a/models/Spreadgun1st_d.3d and /dev/null differ diff --git a/models/SpreadgunPickup.iqm b/models/SpreadgunPickup.iqm new file mode 100644 index 000000000..c941fb4ac Binary files /dev/null and b/models/SpreadgunPickup.iqm differ diff --git a/models/SpreadgunPickup_a.3d b/models/SpreadgunPickup_a.3d deleted file mode 100644 index cc19595d3..000000000 Binary files a/models/SpreadgunPickup_a.3d and /dev/null differ diff --git a/models/SpreadgunPickup_d.3d b/models/SpreadgunPickup_d.3d deleted file mode 100644 index 1e4d5e3c9..000000000 Binary files a/models/SpreadgunPickup_d.3d and /dev/null differ diff --git a/models/Spreadgun_mask.png b/models/Spreadgun_mask.png new file mode 100644 index 000000000..a175b98fa Binary files /dev/null and b/models/Spreadgun_mask.png differ diff --git a/models/TetraHealth.iqm b/models/TetraHealth.iqm new file mode 100644 index 000000000..ae0d33e0d Binary files /dev/null and b/models/TetraHealth.iqm differ diff --git a/models/TetraHealth.png b/models/TetraHealth.png index 8ed851a9e..3ce133c9c 100644 Binary files a/models/TetraHealth.png and b/models/TetraHealth.png differ diff --git a/models/TetraHealth_a.3d b/models/TetraHealth_a.3d deleted file mode 100644 index ab2b60871..000000000 Binary files a/models/TetraHealth_a.3d and /dev/null differ diff --git a/models/TetraHealth_d.3d b/models/TetraHealth_d.3d deleted file mode 100644 index 560ab08b7..000000000 Binary files a/models/TetraHealth_d.3d and /dev/null differ diff --git a/models/TetraHealth_mask.png b/models/TetraHealth_mask.png index 234f48243..0094ceaa9 100644 Binary files a/models/TetraHealth_mask.png and b/models/TetraHealth_mask.png differ diff --git a/models/TootFroot.blend b/models/TootFroot.blend index fbcd79fdb..5dc95d721 100644 Binary files a/models/TootFroot.blend and b/models/TootFroot.blend differ diff --git a/models/TootFroot.iqm b/models/TootFroot.iqm new file mode 100644 index 000000000..5010db8ad Binary files /dev/null and b/models/TootFroot.iqm differ diff --git a/models/TootFroot.png b/models/TootFroot.png index cfaee5904..1980e6650 100644 Binary files a/models/TootFroot.png and b/models/TootFroot.png differ diff --git a/models/TootFroot1st.blend b/models/TootFroot1st.blend index 117e27868..24e76b098 100644 Binary files a/models/TootFroot1st.blend and b/models/TootFroot1st.blend differ diff --git a/models/TootFroot1st.iqm b/models/TootFroot1st.iqm new file mode 100644 index 000000000..439b0432f Binary files /dev/null and b/models/TootFroot1st.iqm differ diff --git a/models/TootFroot1st_a.3d b/models/TootFroot1st_a.3d deleted file mode 100644 index c108ecbbd..000000000 Binary files a/models/TootFroot1st_a.3d and /dev/null differ diff --git a/models/TootFroot1st_d.3d b/models/TootFroot1st_d.3d deleted file mode 100644 index c4589adaa..000000000 Binary files a/models/TootFroot1st_d.3d and /dev/null differ diff --git a/models/TootFroot_a.3d b/models/TootFroot_a.3d deleted file mode 100644 index 76a484bce..000000000 Binary files a/models/TootFroot_a.3d and /dev/null differ diff --git a/models/TootFroot_d.3d b/models/TootFroot_d.3d deleted file mode 100644 index f1d8c69f8..000000000 Binary files a/models/TootFroot_d.3d and /dev/null differ diff --git a/models/VentSmoke0.png b/models/VentSmoke0.png new file mode 100644 index 000000000..45c7d71ff Binary files /dev/null and b/models/VentSmoke0.png differ diff --git a/models/VentSmoke1.png b/models/VentSmoke1.png new file mode 100644 index 000000000..7bb716a99 Binary files /dev/null and b/models/VentSmoke1.png differ diff --git a/models/VentSmoke10.png b/models/VentSmoke10.png new file mode 100644 index 000000000..fa0ca3443 Binary files /dev/null and b/models/VentSmoke10.png differ diff --git a/models/VentSmoke11.png b/models/VentSmoke11.png new file mode 100644 index 000000000..efd1cabbe Binary files /dev/null and b/models/VentSmoke11.png differ diff --git a/models/VentSmoke12.png b/models/VentSmoke12.png new file mode 100644 index 000000000..cb0ada86b Binary files /dev/null and b/models/VentSmoke12.png differ diff --git a/models/VentSmoke13.png b/models/VentSmoke13.png new file mode 100644 index 000000000..eb1f9afb1 Binary files /dev/null and b/models/VentSmoke13.png differ diff --git a/models/VentSmoke14.png b/models/VentSmoke14.png new file mode 100644 index 000000000..1121d8f8e Binary files /dev/null and b/models/VentSmoke14.png differ diff --git a/models/VentSmoke15.png b/models/VentSmoke15.png new file mode 100644 index 000000000..955856733 Binary files /dev/null and b/models/VentSmoke15.png differ diff --git a/models/VentSmoke16.png b/models/VentSmoke16.png new file mode 100644 index 000000000..f28bd8bb1 Binary files /dev/null and b/models/VentSmoke16.png differ diff --git a/models/VentSmoke17.png b/models/VentSmoke17.png new file mode 100644 index 000000000..a9be446b8 Binary files /dev/null and b/models/VentSmoke17.png differ diff --git a/models/VentSmoke18.png b/models/VentSmoke18.png new file mode 100644 index 000000000..d8aadf1b2 Binary files /dev/null and b/models/VentSmoke18.png differ diff --git a/models/VentSmoke19.png b/models/VentSmoke19.png new file mode 100644 index 000000000..0410e5382 Binary files /dev/null and b/models/VentSmoke19.png differ diff --git a/models/VentSmoke2.png b/models/VentSmoke2.png new file mode 100644 index 000000000..5006b958e Binary files /dev/null and b/models/VentSmoke2.png differ diff --git a/models/VentSmoke20.png b/models/VentSmoke20.png new file mode 100644 index 000000000..89c4155fe Binary files /dev/null and b/models/VentSmoke20.png differ diff --git a/models/VentSmoke21.png b/models/VentSmoke21.png new file mode 100644 index 000000000..9c39133be Binary files /dev/null and b/models/VentSmoke21.png differ diff --git a/models/VentSmoke22.png b/models/VentSmoke22.png new file mode 100644 index 000000000..f0dd9ee16 Binary files /dev/null and b/models/VentSmoke22.png differ diff --git a/models/VentSmoke23.png b/models/VentSmoke23.png new file mode 100644 index 000000000..25de48478 Binary files /dev/null and b/models/VentSmoke23.png differ diff --git a/models/VentSmoke3.png b/models/VentSmoke3.png new file mode 100644 index 000000000..c611833c5 Binary files /dev/null and b/models/VentSmoke3.png differ diff --git a/models/VentSmoke4.png b/models/VentSmoke4.png new file mode 100644 index 000000000..3d2a25aa6 Binary files /dev/null and b/models/VentSmoke4.png differ diff --git a/models/VentSmoke5.png b/models/VentSmoke5.png new file mode 100644 index 000000000..a8d07137f Binary files /dev/null and b/models/VentSmoke5.png differ diff --git a/models/VentSmoke6.png b/models/VentSmoke6.png new file mode 100644 index 000000000..713724a02 Binary files /dev/null and b/models/VentSmoke6.png differ diff --git a/models/VentSmoke7.png b/models/VentSmoke7.png new file mode 100644 index 000000000..57840b03d Binary files /dev/null and b/models/VentSmoke7.png differ diff --git a/models/VentSmoke8.png b/models/VentSmoke8.png new file mode 100644 index 000000000..5159a4e38 Binary files /dev/null and b/models/VentSmoke8.png differ diff --git a/models/VentSmoke9.png b/models/VentSmoke9.png new file mode 100644 index 000000000..91ef94738 Binary files /dev/null and b/models/VentSmoke9.png differ diff --git a/models/VoodooDoll.blend b/models/VoodooDoll.blend index 796a9c2d7..416bdeb1a 100644 Binary files a/models/VoodooDoll.blend and b/models/VoodooDoll.blend differ diff --git a/models/VoodooDoll.iqm b/models/VoodooDoll.iqm new file mode 100644 index 000000000..f00b9bb43 Binary files /dev/null and b/models/VoodooDoll.iqm differ diff --git a/models/VoodooDoll.png b/models/VoodooDoll.png index bc68f40b5..605c46125 100644 Binary files a/models/VoodooDoll.png and b/models/VoodooDoll.png differ diff --git a/models/VoodooDollFace.png b/models/VoodooDollFace.png index 0785942e7..0cdb58040 100644 Binary files a/models/VoodooDollFace.png and b/models/VoodooDollFace.png differ diff --git a/models/VoodooDollNoFace.png b/models/VoodooDollNoFace.png new file mode 100644 index 000000000..81bee391a Binary files /dev/null and b/models/VoodooDollNoFace.png differ diff --git a/models/VoodooDoll_a.3d b/models/VoodooDoll_a.3d deleted file mode 100644 index 14fd66eb0..000000000 Binary files a/models/VoodooDoll_a.3d and /dev/null differ diff --git a/models/VoodooDoll_d.3d b/models/VoodooDoll_d.3d deleted file mode 100644 index c9dba2dd8..000000000 Binary files a/models/VoodooDoll_d.3d and /dev/null differ diff --git a/models/Wallbuster.blend b/models/Wallbuster.blend index 45bdd1471..ef3cdc34f 100644 Binary files a/models/Wallbuster.blend and b/models/Wallbuster.blend differ diff --git a/models/Wallbuster.png b/models/Wallbuster.png index 45c049f41..f84c52f29 100644 Binary files a/models/Wallbuster.png and b/models/Wallbuster.png differ diff --git a/models/Wallbuster1st.blend b/models/Wallbuster1st.blend index ef98f6e7a..a9cc3b6f8 100644 Binary files a/models/Wallbuster1st.blend and b/models/Wallbuster1st.blend differ diff --git a/models/Wallbuster1st.iqm b/models/Wallbuster1st.iqm new file mode 100644 index 000000000..1b762c83a Binary files /dev/null and b/models/Wallbuster1st.iqm differ diff --git a/models/Wallbuster1st_a.3d b/models/Wallbuster1st_a.3d deleted file mode 100644 index 54cf54901..000000000 Binary files a/models/Wallbuster1st_a.3d and /dev/null differ diff --git a/models/Wallbuster1st_d.3d b/models/Wallbuster1st_d.3d deleted file mode 100644 index 9c08df5e8..000000000 Binary files a/models/Wallbuster1st_d.3d and /dev/null differ diff --git a/models/WallbusterPickup.iqm b/models/WallbusterPickup.iqm new file mode 100644 index 000000000..0a49629f4 Binary files /dev/null and b/models/WallbusterPickup.iqm differ diff --git a/models/WallbusterPickup_a.3d b/models/WallbusterPickup_a.3d deleted file mode 100644 index 5781974c6..000000000 Binary files a/models/WallbusterPickup_a.3d and /dev/null differ diff --git a/models/WallbusterPickup_d.3d b/models/WallbusterPickup_d.3d deleted file mode 100644 index c0f55c07f..000000000 Binary files a/models/WallbusterPickup_d.3d and /dev/null differ diff --git a/models/Wallbuster_mask.png b/models/Wallbuster_mask.png new file mode 100644 index 000000000..12189a58a Binary files /dev/null and b/models/Wallbuster_mask.png differ diff --git a/models/WarArmor.iqm b/models/WarArmor.iqm new file mode 100644 index 000000000..c6c69444c Binary files /dev/null and b/models/WarArmor.iqm differ diff --git a/models/WarArmor.png b/models/WarArmor.png index 1c3f4f9e5..d699dd1f9 100644 Binary files a/models/WarArmor.png and b/models/WarArmor.png differ diff --git a/models/WarArmor_a.3d b/models/WarArmor_a.3d deleted file mode 100644 index be7aa5a77..000000000 Binary files a/models/WarArmor_a.3d and /dev/null differ diff --git a/models/WarArmor_d.3d b/models/WarArmor_d.3d deleted file mode 100644 index 3e63c260a..000000000 Binary files a/models/WarArmor_d.3d and /dev/null differ diff --git a/models/WarArmor_mask.png b/models/WarArmor_mask.png new file mode 100644 index 000000000..5b0e67b60 Binary files /dev/null and b/models/WarArmor_mask.png differ diff --git a/models/Ynykron.blend b/models/Ynykron.blend index 851fdbd68..e9242cd5a 100644 Binary files a/models/Ynykron.blend and b/models/Ynykron.blend differ diff --git a/models/Ynykron.png b/models/Ynykron.png index 74e232acf..28fda2ada 100644 Binary files a/models/Ynykron.png and b/models/Ynykron.png differ diff --git a/models/Ynykron1st.blend b/models/Ynykron1st.blend index 0051963f2..a7a91841a 100644 Binary files a/models/Ynykron1st.blend and b/models/Ynykron1st.blend differ diff --git a/models/Ynykron1st.iqm b/models/Ynykron1st.iqm new file mode 100644 index 000000000..9ae6fc184 Binary files /dev/null and b/models/Ynykron1st.iqm differ diff --git a/models/Ynykron1st_Smoke.iqm b/models/Ynykron1st_Smoke.iqm new file mode 100644 index 000000000..4ea2edc4d Binary files /dev/null and b/models/Ynykron1st_Smoke.iqm differ diff --git a/models/Ynykron1st_a.3d b/models/Ynykron1st_a.3d deleted file mode 100644 index 2292015cf..000000000 Binary files a/models/Ynykron1st_a.3d and /dev/null differ diff --git a/models/Ynykron1st_d.3d b/models/Ynykron1st_d.3d deleted file mode 100644 index da4aa8636..000000000 Binary files a/models/Ynykron1st_d.3d and /dev/null differ diff --git a/models/YnykronAmmo.iqm b/models/YnykronAmmo.iqm new file mode 100644 index 000000000..3844ac038 Binary files /dev/null and b/models/YnykronAmmo.iqm differ diff --git a/models/YnykronAmmo.png b/models/YnykronAmmo.png index f2989e59a..2656445ad 100644 Binary files a/models/YnykronAmmo.png and b/models/YnykronAmmo.png differ diff --git a/models/YnykronAmmo_a.3d b/models/YnykronAmmo_a.3d deleted file mode 100644 index 438d023e3..000000000 Binary files a/models/YnykronAmmo_a.3d and /dev/null differ diff --git a/models/YnykronAmmo_bright.png b/models/YnykronAmmo_bright.png new file mode 100644 index 000000000..46a77ac2f Binary files /dev/null and b/models/YnykronAmmo_bright.png differ diff --git a/models/YnykronAmmo_d.3d b/models/YnykronAmmo_d.3d deleted file mode 100644 index 9b091fb2e..000000000 Binary files a/models/YnykronAmmo_d.3d and /dev/null differ diff --git a/models/YnykronAmmo_mask.png b/models/YnykronAmmo_mask.png new file mode 100644 index 000000000..22d725959 Binary files /dev/null and b/models/YnykronAmmo_mask.png differ diff --git a/models/YnykronPickup.iqm b/models/YnykronPickup.iqm new file mode 100644 index 000000000..7da79fc08 Binary files /dev/null and b/models/YnykronPickup.iqm differ diff --git a/models/YnykronPickup_a.3d b/models/YnykronPickup_a.3d deleted file mode 100644 index 417a74bfd..000000000 Binary files a/models/YnykronPickup_a.3d and /dev/null differ diff --git a/models/YnykronPickup_d.3d b/models/YnykronPickup_d.3d deleted file mode 100644 index a22ee775d..000000000 Binary files a/models/YnykronPickup_d.3d and /dev/null differ diff --git a/models/YnykronRod.iqm b/models/YnykronRod.iqm new file mode 100644 index 000000000..713a480a3 Binary files /dev/null and b/models/YnykronRod.iqm differ diff --git a/models/YnykronRod.png b/models/YnykronRod.png index 38b4bf57c..07ccf0253 100644 Binary files a/models/YnykronRod.png and b/models/YnykronRod.png differ diff --git a/models/YnykronRod_a.3d b/models/YnykronRod_a.3d deleted file mode 100644 index b8c529084..000000000 Binary files a/models/YnykronRod_a.3d and /dev/null differ diff --git a/models/YnykronRod_bright.png b/models/YnykronRod_bright.png index ff0a81dcf..68c9633e4 100644 Binary files a/models/YnykronRod_bright.png and b/models/YnykronRod_bright.png differ diff --git a/models/YnykronRod_d.3d b/models/YnykronRod_d.3d deleted file mode 100644 index e74db39b8..000000000 Binary files a/models/YnykronRod_d.3d and /dev/null differ diff --git a/models/YnykronRod_mask.png b/models/YnykronRod_mask.png index ce134bf63..edc54585b 100644 Binary files a/models/YnykronRod_mask.png and b/models/YnykronRod_mask.png differ diff --git a/models/YnykronSmoke.png b/models/YnykronSmoke.png index ddaac39bc..0a5ffdcf8 100644 Binary files a/models/YnykronSmoke.png and b/models/YnykronSmoke.png differ diff --git a/models/Ynykron_mask.png b/models/Ynykron_mask.png new file mode 100644 index 000000000..5dfd977bc Binary files /dev/null and b/models/Ynykron_mask.png differ diff --git a/models/barrierbar.png b/models/barrierbar.png index 5dbd8f18f..8a6551ac6 100644 Binary files a/models/barrierbar.png and b/models/barrierbar.png differ diff --git a/models/canvas/MortalBG.png b/models/canvas/MortalBG.png new file mode 100644 index 000000000..8effa7958 Binary files /dev/null and b/models/canvas/MortalBG.png differ diff --git a/models/canvas/MortalFireIcons.png b/models/canvas/MortalFireIcons.png new file mode 100644 index 000000000..4e1834824 Binary files /dev/null and b/models/canvas/MortalFireIcons.png differ diff --git a/models/canvas/MortalFlatChars.png b/models/canvas/MortalFlatChars.png new file mode 100644 index 000000000..e12b5abd8 Binary files /dev/null and b/models/canvas/MortalFlatChars.png differ diff --git a/models/canvas/MortalFrameTex.png b/models/canvas/MortalFrameTex.png new file mode 100644 index 000000000..fc83df0b4 Binary files /dev/null and b/models/canvas/MortalFrameTex.png differ diff --git a/models/canvas/MortalGrenadeIcons.png b/models/canvas/MortalGrenadeIcons.png new file mode 100644 index 000000000..e4df08419 Binary files /dev/null and b/models/canvas/MortalGrenadeIcons.png differ diff --git a/models/canvas/NukuriFnt.png b/models/canvas/NukuriFnt.png new file mode 100644 index 000000000..fb113d957 Binary files /dev/null and b/models/canvas/NukuriFnt.png differ diff --git a/models/canvas/NukuriFnt.txt b/models/canvas/NukuriFnt.txt new file mode 100644 index 000000000..2451c01c1 --- /dev/null +++ b/models/canvas/NukuriFnt.txt @@ -0,0 +1,109 @@ +0,0,0,1,8 +1,9,0,5,8 +2,18,0,7,8 +3,27,0,7,8 +4,36,0,4,8 +5,45,0,7,8 +6,54,0,7,8 +7,63,0,7,8 +8,72,0,8,8 +9,81,0,5,8 +A,0,9,8,8 +E,9,9,8,8 +I,18,9,8,8 +Y,27,9,8,8 +U,36,9,8,8 +O,45,9,8,8 +H,54,9,2,8 +W,0,18,6,8 +WA,9,18,8,8 +WE,18,18,8,8 +WI,27,18,6,8 +WY,36,18,8,8 +WU,45,18,8,8 +WO,54,18,8,8 +D,0,27,6,8 +DA,9,27,8,8 +DE,18,27,8,8 +DI,27,27,6,8 +DY,36,27,8,8 +DU,45,27,8,8 +DO,54,27,8,8 +V,0,36,4,8 +VA,9,36,6,8 +VE,18,36,8,8 +VI,27,36,5,8 +VY,36,36,8,8 +VU,45,36,8,8 +VO,54,36,8,8 +Z,0,45,6,8 +ZA,9,45,8,8 +ZE,18,45,8,8 +ZI,27,45,6,8 +ZY,36,45,8,8 +ZU,45,45,8,8 +ZO,54,45,8,8 +M,0,54,6,8 +MA,9,54,8,8 +ME,18,54,8,8 +MI,27,54,6,8 +MY,36,54,8,8 +MU,45,54,8,8 +MO,54,54,8,8 +L,0,63,6,8 +LA,9,63,8,8 +LE,18,63,8,8 +LI,27,63,6,8 +LY,36,63,8,8 +LU,45,63,8,8 +LO,54,63,8,8 +B,0,72,6,8 +BA,9,72,8,8 +BE,18,72,8,8 +BI,27,72,6,8 +BY,36,72,8,8 +BU,45,72,8,8 +BO,54,72,8,8 +R,0,81,6,8 +RA,9,81,8,8 +RE,18,81,8,8 +RI,27,81,6,8 +RY,36,81,8,8 +RU,45,81,8,8 +RO,54,81,8,8 +S,0,90,6,8 +SA,9,90,8,8 +SE,18,90,8,8 +SI,27,90,6,8 +SY,36,90,8,8 +SU,45,90,8,8 +SO,54,90,8,8 +T,0,99,6,8 +TA,9,99,8,8 +TE,18,99,8,8 +TI,27,99,6,8 +TY,36,99,8,8 +TU,45,99,8,8 +TO,54,99,8,8 +N,0,108,6,8 +NA,9,108,8,8 +NE,18,108,8,8 +NI,27,108,6,8 +NY,36,108,8,8 +NU,45,108,8,8 +NO,54,108,8,8 +X,0,117,6,8 +XA,9,117,8,8 +XE,18,117,8,8 +XI,27,117,6,8 +XY,36,117,8,8 +XU,45,117,8,8 +XO,54,117,8,8 +K,0,126,6,8 +KA,9,126,8,8 +KE,18,126,8,8 +KI,27,126,6,8 +KY,36,126,8,8 +KU,45,126,8,8 +KO,54,126,8,8 +�,0,135,8,8 diff --git a/models/canvas/QuadLEDBase.png b/models/canvas/QuadLEDBase.png new file mode 100644 index 000000000..634cb1b49 Binary files /dev/null and b/models/canvas/QuadLEDBase.png differ diff --git a/models/canvas/QuadLEDCharge.png b/models/canvas/QuadLEDCharge.png new file mode 100644 index 000000000..b9242687c Binary files /dev/null and b/models/canvas/QuadLEDCharge.png differ diff --git a/models/canvas/QuadLEDRound.png b/models/canvas/QuadLEDRound.png new file mode 100644 index 000000000..243aeb360 Binary files /dev/null and b/models/canvas/QuadLEDRound.png differ diff --git a/models/canvas/RayZap.png b/models/canvas/RayZap.png new file mode 100644 index 000000000..6c62e5080 Binary files /dev/null and b/models/canvas/RayZap.png differ diff --git a/models/canvas/SheenLEDBar.png b/models/canvas/SheenLEDBar.png new file mode 100644 index 000000000..b49973145 Binary files /dev/null and b/models/canvas/SheenLEDBar.png differ diff --git a/models/canvas/SheenLEDBase.png b/models/canvas/SheenLEDBase.png new file mode 100644 index 000000000..3b45ecdd8 Binary files /dev/null and b/models/canvas/SheenLEDBase.png differ diff --git a/models/canvas/SheenLEDNums.png b/models/canvas/SheenLEDNums.png new file mode 100644 index 000000000..b1d9dc49e Binary files /dev/null and b/models/canvas/SheenLEDNums.png differ diff --git a/models/canvas/SheenLEDSpeed.png b/models/canvas/SheenLEDSpeed.png new file mode 100644 index 000000000..3b3c86aea Binary files /dev/null and b/models/canvas/SheenLEDSpeed.png differ diff --git a/models/envmap/blodenv.png b/models/envmap/blodenv.png new file mode 100644 index 000000000..d5d9b00f2 Binary files /dev/null and b/models/envmap/blodenv.png differ diff --git a/models/envmap/blodrim.png b/models/envmap/blodrim.png new file mode 100644 index 000000000..242415b17 Binary files /dev/null and b/models/envmap/blodrim.png differ diff --git a/models/envmap/bluenv.png b/models/envmap/bluenv.png new file mode 100644 index 000000000..2601341c1 Binary files /dev/null and b/models/envmap/bluenv.png differ diff --git a/models/envmap/blurim.png b/models/envmap/blurim.png new file mode 100644 index 000000000..dadc40ee5 Binary files /dev/null and b/models/envmap/blurim.png differ diff --git a/models/envmap/darkenv.png b/models/envmap/darkenv.png new file mode 100644 index 000000000..6891a1fd6 Binary files /dev/null and b/models/envmap/darkenv.png differ diff --git a/models/envmap/darkrim.png b/models/envmap/darkrim.png new file mode 100644 index 000000000..d794d6fed Binary files /dev/null and b/models/envmap/darkrim.png differ diff --git a/models/envmap/dekaenv.png b/models/envmap/dekaenv.png new file mode 100644 index 000000000..21a83ee31 Binary files /dev/null and b/models/envmap/dekaenv.png differ diff --git a/models/envmap/dekarim.png b/models/envmap/dekarim.png new file mode 100644 index 000000000..af9b074b3 Binary files /dev/null and b/models/envmap/dekarim.png differ diff --git a/models/envmap/ekaenv.png b/models/envmap/ekaenv.png new file mode 100644 index 000000000..57e6de409 Binary files /dev/null and b/models/envmap/ekaenv.png differ diff --git a/models/envmap/ekarim.png b/models/envmap/ekarim.png new file mode 100644 index 000000000..9c2a7408d Binary files /dev/null and b/models/envmap/ekarim.png differ diff --git a/models/envmap/glassenv.png b/models/envmap/glassenv.png new file mode 100644 index 000000000..3c0f3a3ce Binary files /dev/null and b/models/envmap/glassenv.png differ diff --git a/models/envmap/glassrim.png b/models/envmap/glassrim.png new file mode 100644 index 000000000..38d3617c9 Binary files /dev/null and b/models/envmap/glassrim.png differ diff --git a/models/envmap/glss2env.png b/models/envmap/glss2env.png new file mode 100644 index 000000000..98c44fe71 Binary files /dev/null and b/models/envmap/glss2env.png differ diff --git a/models/envmap/glss2rim.png b/models/envmap/glss2rim.png new file mode 100644 index 000000000..115fe53c9 Binary files /dev/null and b/models/envmap/glss2rim.png differ diff --git a/models/envmap/glss3env.png b/models/envmap/glss3env.png new file mode 100644 index 000000000..23c78102d Binary files /dev/null and b/models/envmap/glss3env.png differ diff --git a/models/envmap/glss3rim.png b/models/envmap/glss3rim.png new file mode 100644 index 000000000..a9b79b5d5 Binary files /dev/null and b/models/envmap/glss3rim.png differ diff --git a/models/envmap/glss4env.png b/models/envmap/glss4env.png new file mode 100644 index 000000000..c6377152d Binary files /dev/null and b/models/envmap/glss4env.png differ diff --git a/models/envmap/glss4rim.png b/models/envmap/glss4rim.png new file mode 100644 index 000000000..b1b5d4db9 Binary files /dev/null and b/models/envmap/glss4rim.png differ diff --git a/models/envmap/glss5env.png b/models/envmap/glss5env.png new file mode 100644 index 000000000..83ffb43ef Binary files /dev/null and b/models/envmap/glss5env.png differ diff --git a/models/envmap/glss5rim.png b/models/envmap/glss5rim.png new file mode 100644 index 000000000..bf6fba2d7 Binary files /dev/null and b/models/envmap/glss5rim.png differ diff --git a/models/envmap/glss6env.png b/models/envmap/glss6env.png new file mode 100644 index 000000000..62be2312e Binary files /dev/null and b/models/envmap/glss6env.png differ diff --git a/models/envmap/glss6rim.png b/models/envmap/glss6rim.png new file mode 100644 index 000000000..a63698c93 Binary files /dev/null and b/models/envmap/glss6rim.png differ diff --git a/models/envmap/goldenv.png b/models/envmap/goldenv.png new file mode 100644 index 000000000..e83cb0d25 Binary files /dev/null and b/models/envmap/goldenv.png differ diff --git a/models/envmap/goldrim.png b/models/envmap/goldrim.png new file mode 100644 index 000000000..4ae8e64e7 Binary files /dev/null and b/models/envmap/goldrim.png differ diff --git a/models/envmap/greenenv.png b/models/envmap/greenenv.png new file mode 100644 index 000000000..1dc7a72b2 Binary files /dev/null and b/models/envmap/greenenv.png differ diff --git a/models/envmap/greenrim.png b/models/envmap/greenrim.png new file mode 100644 index 000000000..31e6e41f1 Binary files /dev/null and b/models/envmap/greenrim.png differ diff --git a/models/envmap/iceenv.png b/models/envmap/iceenv.png new file mode 100644 index 000000000..658fcae3a Binary files /dev/null and b/models/envmap/iceenv.png differ diff --git a/models/envmap/icerim.png b/models/envmap/icerim.png new file mode 100644 index 000000000..87ea12e9d Binary files /dev/null and b/models/envmap/icerim.png differ diff --git a/models/envmap/kinyenv.png b/models/envmap/kinyenv.png new file mode 100644 index 000000000..43cb2d642 Binary files /dev/null and b/models/envmap/kinyenv.png differ diff --git a/models/envmap/kinyrim.png b/models/envmap/kinyrim.png new file mode 100644 index 000000000..719f0a7e7 Binary files /dev/null and b/models/envmap/kinyrim.png differ diff --git a/models/envmap/lavaenv.png b/models/envmap/lavaenv.png new file mode 100644 index 000000000..d747f608c Binary files /dev/null and b/models/envmap/lavaenv.png differ diff --git a/models/envmap/lavarim.png b/models/envmap/lavarim.png new file mode 100644 index 000000000..d5aa7a736 Binary files /dev/null and b/models/envmap/lavarim.png differ diff --git a/models/envmap/leadenv.png b/models/envmap/leadenv.png new file mode 100644 index 000000000..61b85b11f Binary files /dev/null and b/models/envmap/leadenv.png differ diff --git a/models/envmap/leadrim.png b/models/envmap/leadrim.png new file mode 100644 index 000000000..476fce585 Binary files /dev/null and b/models/envmap/leadrim.png differ diff --git a/models/envmap/nkknenv.png b/models/envmap/nkknenv.png new file mode 100644 index 000000000..80732d762 Binary files /dev/null and b/models/envmap/nkknenv.png differ diff --git a/models/envmap/nkknrim.png b/models/envmap/nkknrim.png new file mode 100644 index 000000000..eafdb634e Binary files /dev/null and b/models/envmap/nkknrim.png differ diff --git a/models/envmap/nokrenv.png b/models/envmap/nokrenv.png new file mode 100644 index 000000000..f7052c98e Binary files /dev/null and b/models/envmap/nokrenv.png differ diff --git a/models/envmap/nokrrim.png b/models/envmap/nokrrim.png new file mode 100644 index 000000000..987c6a051 Binary files /dev/null and b/models/envmap/nokrrim.png differ diff --git a/models/envmap/nukenv.png b/models/envmap/nukenv.png new file mode 100644 index 000000000..07e126aef Binary files /dev/null and b/models/envmap/nukenv.png differ diff --git a/models/envmap/nukrim.png b/models/envmap/nukrim.png new file mode 100644 index 000000000..f91f1b1dc Binary files /dev/null and b/models/envmap/nukrim.png differ diff --git a/models/envmap/ockoenv.png b/models/envmap/ockoenv.png new file mode 100644 index 000000000..ada444ba7 Binary files /dev/null and b/models/envmap/ockoenv.png differ diff --git a/models/envmap/ockorim.png b/models/envmap/ockorim.png new file mode 100644 index 000000000..a627d0c03 Binary files /dev/null and b/models/envmap/ockorim.png differ diff --git a/models/envmap/pronoenv.png b/models/envmap/pronoenv.png new file mode 100644 index 000000000..251b36a7a Binary files /dev/null and b/models/envmap/pronoenv.png differ diff --git a/models/envmap/pronorim.png b/models/envmap/pronorim.png new file mode 100644 index 000000000..0552d49c5 Binary files /dev/null and b/models/envmap/pronorim.png differ diff --git a/models/envmap/puroenv.png b/models/envmap/puroenv.png new file mode 100644 index 000000000..22c9b0ff1 Binary files /dev/null and b/models/envmap/puroenv.png differ diff --git a/models/envmap/purorim.png b/models/envmap/purorim.png new file mode 100644 index 000000000..960dcb1cf Binary files /dev/null and b/models/envmap/purorim.png differ diff --git a/models/envmap/purpenv.png b/models/envmap/purpenv.png new file mode 100644 index 000000000..a074d72f4 Binary files /dev/null and b/models/envmap/purpenv.png differ diff --git a/models/envmap/purprim.png b/models/envmap/purprim.png new file mode 100644 index 000000000..eef445323 Binary files /dev/null and b/models/envmap/purprim.png differ diff --git a/models/envmap/redenv.png b/models/envmap/redenv.png new file mode 100644 index 000000000..496123cbb Binary files /dev/null and b/models/envmap/redenv.png differ diff --git a/models/envmap/redrim.png b/models/envmap/redrim.png new file mode 100644 index 000000000..368ae3e1f Binary files /dev/null and b/models/envmap/redrim.png differ diff --git a/models/envmap/reflenv.png b/models/envmap/reflenv.png new file mode 100644 index 000000000..2168a7667 Binary files /dev/null and b/models/envmap/reflenv.png differ diff --git a/models/envmap/reflrim.png b/models/envmap/reflrim.png new file mode 100644 index 000000000..d4d23e29b Binary files /dev/null and b/models/envmap/reflrim.png differ diff --git a/models/envmap/rfl2env.png b/models/envmap/rfl2env.png new file mode 100644 index 000000000..c81fa381c Binary files /dev/null and b/models/envmap/rfl2env.png differ diff --git a/models/envmap/rfl2rim.png b/models/envmap/rfl2rim.png new file mode 100644 index 000000000..53c3965c9 Binary files /dev/null and b/models/envmap/rfl2rim.png differ diff --git a/models/envmap/silverenv.png b/models/envmap/silverenv.png new file mode 100644 index 000000000..0e81cef17 Binary files /dev/null and b/models/envmap/silverenv.png differ diff --git a/models/envmap/silverrim.png b/models/envmap/silverrim.png new file mode 100644 index 000000000..0e992cfb1 Binary files /dev/null and b/models/envmap/silverrim.png differ diff --git a/models/envmap/tarenv.png b/models/envmap/tarenv.png new file mode 100644 index 000000000..306491324 Binary files /dev/null and b/models/envmap/tarenv.png differ diff --git a/models/envmap/tarrim.png b/models/envmap/tarrim.png new file mode 100644 index 000000000..e8b7066db Binary files /dev/null and b/models/envmap/tarrim.png differ diff --git a/models/envmap/telenv.png b/models/envmap/telenv.png new file mode 100644 index 000000000..507dfb2f9 Binary files /dev/null and b/models/envmap/telenv.png differ diff --git a/models/envmap/telrim.png b/models/envmap/telrim.png new file mode 100644 index 000000000..4a5414806 Binary files /dev/null and b/models/envmap/telrim.png differ diff --git a/models/envmap/watrenv.png b/models/envmap/watrenv.png new file mode 100644 index 000000000..a849bf250 Binary files /dev/null and b/models/envmap/watrenv.png differ diff --git a/models/envmap/watrrim.png b/models/envmap/watrrim.png new file mode 100644 index 000000000..141bec652 Binary files /dev/null and b/models/envmap/watrrim.png differ diff --git a/models/extra/AnomRingies.png b/models/extra/AnomRingies.png index 85c63eaef..2ae6b3de0 100644 Binary files a/models/extra/AnomRingies.png and b/models/extra/AnomRingies.png differ diff --git a/models/extra/AnomTrail.png b/models/extra/AnomTrail.png index 69d399786..5fc75253f 100644 Binary files a/models/extra/AnomTrail.png and b/models/extra/AnomTrail.png differ diff --git a/models/extra/BaseBeam.obj b/models/extra/BaseBeam.obj new file mode 100644 index 000000000..5169a15fc --- /dev/null +++ b/models/extra/BaseBeam.obj @@ -0,0 +1,44 @@ +# Blender 3.3.1 +# www.blender.org +o Plane +v -0.000000 0.000000 0.500000 +v 1.000000 0.000000 0.500000 +v 0.000000 0.000000 -0.500000 +v 1.000000 0.000000 -0.500000 +v -0.000000 -0.353553 0.353553 +v 1.000000 -0.353553 0.353553 +v 0.000000 0.353553 -0.353553 +v 1.000000 0.353553 -0.353553 +v -0.000000 -0.500000 0.000000 +v 1.000000 -0.500000 0.000000 +v 0.000000 0.500000 0.000000 +v 1.000000 0.500000 0.000000 +v -0.000000 -0.353553 -0.353553 +v 1.000000 -0.353553 -0.353553 +v 0.000000 0.353553 0.353553 +v 1.000000 0.353553 0.353553 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 0.7071 0.7071 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -0.7071 0.7071 +vt 0.999999 0.000001 +vt 1.000001 1.000000 +vt -0.000001 -0.000000 +vt 0.000001 1.000000 +vt 0.999999 0.000001 +vt 1.000001 1.000000 +vt -0.000001 -0.000000 +vt 0.000001 1.000000 +vt 0.999999 0.000001 +vt 1.000001 1.000000 +vt -0.000001 -0.000000 +vt 0.000001 1.000000 +vt 0.999999 0.000001 +vt 1.000001 1.000000 +vt -0.000001 -0.000000 +vt 0.000001 1.000000 +s 0 +f 1/1/1 2/2/1 4/4/1 3/3/1 +f 5/5/2 6/6/2 8/8/2 7/7/2 +f 9/9/3 10/10/3 12/12/3 11/11/3 +f 13/13/4 14/14/4 16/16/4 15/15/4 diff --git a/models/extra/BaseBeam_a.3d b/models/extra/BaseBeam_a.3d deleted file mode 100644 index 43403c81a..000000000 Binary files a/models/extra/BaseBeam_a.3d and /dev/null differ diff --git a/models/extra/BaseBeam_d.3d b/models/extra/BaseBeam_d.3d deleted file mode 100644 index 23e7e843c..000000000 Binary files a/models/extra/BaseBeam_d.3d and /dev/null differ diff --git a/models/extra/BaseCube.obj b/models/extra/BaseCube.obj new file mode 100644 index 000000000..deff9804d --- /dev/null +++ b/models/extra/BaseCube.obj @@ -0,0 +1,44 @@ +# Blender 3.3.1 +# www.blender.org +o Cube +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 1.000000 -0.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 -0.000000 +vt 1.000000 -0.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +s 0 +f 1/2/1 2/3/1 4/10/1 3/6/1 +f 3/7/2 4/9/2 8/19/2 7/16/2 +f 7/17/3 8/20/3 6/13/3 5/12/3 +f 5/11/4 6/14/4 2/4/4 1/1/4 +f 3/8/5 7/18/5 5/12/5 1/2/5 +f 8/20/6 4/10/6 2/5/6 6/15/6 diff --git a/models/extra/BaseCube_a.3d b/models/extra/BaseCube_a.3d deleted file mode 100644 index 1122fd2a8..000000000 Binary files a/models/extra/BaseCube_a.3d and /dev/null differ diff --git a/models/extra/BaseCube_d.3d b/models/extra/BaseCube_d.3d deleted file mode 100644 index f8de80c2e..000000000 Binary files a/models/extra/BaseCube_d.3d and /dev/null differ diff --git a/models/extra/BaseSphere.obj b/models/extra/BaseSphere.obj new file mode 100644 index 000000000..ec1e58277 --- /dev/null +++ b/models/extra/BaseSphere.obj @@ -0,0 +1,670 @@ +# Blender 3.3.1 +# www.blender.org +o Cube +v -0.297283 -0.297283 -0.297283 +v -0.297283 0.297283 -0.297283 +v 0.297283 -0.297283 -0.297283 +v 0.297283 0.297283 -0.297283 +v -0.297283 -0.297283 0.297283 +v -0.297283 0.297283 0.297283 +v 0.297283 -0.297283 0.297283 +v 0.297283 0.297283 0.297283 +v 0.339551 -0.185857 -0.339551 +v 0.361341 -0.063223 -0.361341 +v 0.361341 0.063223 -0.361341 +v 0.339551 0.185857 -0.339551 +v -0.339551 -0.185857 -0.339551 +v -0.361341 -0.063223 -0.361341 +v -0.361341 0.063223 -0.361341 +v -0.339551 0.185857 -0.339551 +v -0.185857 -0.339551 -0.339551 +v -0.063223 -0.361341 -0.361341 +v 0.063223 -0.361341 -0.361341 +v 0.185857 -0.339551 -0.339551 +v -0.185857 0.339551 -0.339551 +v -0.063223 0.361341 -0.361341 +v 0.063223 0.361341 -0.361341 +v 0.185857 0.339551 -0.339551 +v -0.339551 -0.339551 -0.185857 +v -0.361341 -0.361341 -0.063223 +v -0.361341 -0.361341 0.063223 +v -0.339551 -0.339551 0.185857 +v -0.339551 -0.185857 0.339551 +v -0.361341 -0.063223 0.361341 +v -0.361341 0.063223 0.361341 +v -0.339551 0.185857 0.339551 +v 0.339551 -0.339551 -0.185857 +v 0.361341 -0.361341 -0.063223 +v 0.361341 -0.361341 0.063223 +v 0.339551 -0.339551 0.185857 +v 0.339551 0.339551 -0.185857 +v 0.361341 0.361341 -0.063223 +v 0.361341 0.361341 0.063223 +v 0.339551 0.339551 0.185857 +v -0.339551 0.339551 -0.185857 +v -0.361341 0.361341 -0.063223 +v -0.361341 0.361341 0.063223 +v -0.339551 0.339551 0.185857 +v -0.185857 0.339551 0.339551 +v -0.063223 0.361341 0.361341 +v 0.063223 0.361341 0.361341 +v 0.185857 0.339551 0.339551 +v 0.339551 -0.185857 0.339551 +v 0.361341 -0.063223 0.361341 +v 0.361341 0.063223 0.361341 +v 0.339551 0.185857 0.339551 +v -0.185857 -0.339551 0.339551 +v -0.063223 -0.361341 0.361341 +v 0.063223 -0.361341 0.361341 +v 0.185857 -0.339551 0.339551 +v 0.215219 0.407446 0.226594 +v 0.073701 0.442805 0.247810 +v -0.073701 0.442805 0.247810 +v -0.215219 0.407445 0.226594 +v 0.231595 0.452261 0.081407 +v 0.079736 0.500000 0.090955 +v -0.079736 0.500000 0.090955 +v -0.231595 0.452261 0.081407 +v 0.231595 0.452261 -0.081407 +v 0.079736 0.500000 -0.090955 +v -0.079736 0.500000 -0.090955 +v -0.231595 0.452261 -0.081407 +v 0.215219 0.407446 -0.226594 +v 0.073701 0.442805 -0.247810 +v -0.073701 0.442805 -0.247810 +v -0.215219 0.407446 -0.226594 +v 0.215219 -0.407446 -0.226594 +v 0.073701 -0.442805 -0.247810 +v -0.073701 -0.442805 -0.247810 +v -0.215219 -0.407446 -0.226594 +v 0.231595 -0.452261 -0.081407 +v 0.079736 -0.500000 -0.090955 +v -0.079736 -0.500000 -0.090955 +v -0.231595 -0.452261 -0.081407 +v 0.231595 -0.452261 0.081407 +v 0.079736 -0.500000 0.090955 +v -0.079736 -0.500000 0.090955 +v -0.231595 -0.452261 0.081407 +v 0.215219 -0.407446 0.226594 +v 0.073701 -0.442805 0.247810 +v -0.073701 -0.442805 0.247810 +v -0.215219 -0.407445 0.226594 +v -0.407446 -0.226594 0.215219 +v -0.442805 -0.247810 0.073701 +v -0.442805 -0.247810 -0.073701 +v -0.407446 -0.226594 -0.215219 +v -0.452261 -0.081407 0.231595 +v -0.500000 -0.090955 0.079736 +v -0.500000 -0.090955 -0.079736 +v -0.452261 -0.081407 -0.231595 +v -0.452261 0.081407 0.231595 +v -0.500000 0.090955 0.079736 +v -0.500000 0.090955 -0.079736 +v -0.452261 0.081407 -0.231595 +v -0.407446 0.226594 0.215219 +v -0.442805 0.247810 0.073701 +v -0.442805 0.247810 -0.073701 +v -0.407445 0.226594 -0.215219 +v 0.215219 -0.226594 0.407446 +v 0.073701 -0.247810 0.442805 +v -0.073701 -0.247810 0.442805 +v -0.215219 -0.226594 0.407446 +v 0.231595 -0.081407 0.452261 +v 0.079736 -0.090955 0.500000 +v -0.079736 -0.090955 0.500000 +v -0.231595 -0.081407 0.452261 +v 0.231595 0.081407 0.452261 +v 0.079736 0.090955 0.500000 +v -0.079736 0.090955 0.500000 +v -0.231595 0.081407 0.452261 +v 0.215219 0.226594 0.407446 +v 0.073701 0.247810 0.442805 +v -0.073701 0.247810 0.442805 +v -0.215219 0.226594 0.407446 +v 0.407446 -0.226594 -0.215219 +v 0.442805 -0.247810 -0.073701 +v 0.442805 -0.247810 0.073701 +v 0.407446 -0.226594 0.215219 +v 0.452261 -0.081407 -0.231595 +v 0.500000 -0.090955 -0.079736 +v 0.500000 -0.090955 0.079736 +v 0.452261 -0.081407 0.231595 +v 0.452261 0.081407 -0.231595 +v 0.500000 0.090955 -0.079736 +v 0.500000 0.090955 0.079736 +v 0.452261 0.081407 0.231595 +v 0.407446 0.226594 -0.215219 +v 0.442805 0.247810 -0.073701 +v 0.442805 0.247810 0.073701 +v 0.407445 0.226594 0.215219 +v -0.215219 -0.226594 -0.407446 +v -0.073701 -0.247810 -0.442805 +v 0.073701 -0.247810 -0.442805 +v 0.215219 -0.226594 -0.407446 +v -0.231595 -0.081407 -0.452261 +v -0.079736 -0.090955 -0.500000 +v 0.079736 -0.090955 -0.500000 +v 0.231595 -0.081407 -0.452261 +v -0.231595 0.081407 -0.452261 +v -0.079736 0.090955 -0.500000 +v 0.079736 0.090955 -0.500000 +v 0.231595 0.081407 -0.452261 +v -0.215219 0.226594 -0.407446 +v -0.073701 0.247810 -0.442805 +v 0.073701 0.247810 -0.442805 +v 0.215219 0.226594 -0.407446 +vn 0.4091 0.4247 -0.8076 +vn 0.3676 0.6576 -0.6576 +vn 0.5774 0.5774 -0.5774 +vn 0.6569 0.3700 -0.6569 +vn 0.8076 0.4247 0.4091 +vn 0.6556 0.6589 0.3688 +vn 0.5774 0.5774 0.5774 +vn 0.6569 0.3700 0.6569 +vn -0.4091 0.4247 0.8076 +vn -0.3676 0.6576 0.6576 +vn -0.5774 0.5774 0.5774 +vn -0.6569 0.3700 0.6569 +vn -0.8076 0.4247 -0.4091 +vn -0.6556 0.6589 -0.3688 +vn -0.5774 0.5774 -0.5774 +vn -0.6569 0.3700 -0.6569 +vn -0.4091 -0.8076 0.4247 +vn -0.3676 -0.6576 0.6576 +vn -0.5774 -0.5774 0.5774 +vn -0.6556 -0.6589 0.3688 +vn -0.4091 0.8076 -0.4247 +vn -0.3676 0.6576 -0.6576 +vn -0.4091 0.8076 0.4247 +vn -0.6556 0.6589 0.3688 +vn -0.4377 0.8859 0.1534 +vn -0.6981 0.7047 0.1270 +vn -0.4377 0.8859 -0.1534 +vn -0.6981 0.7047 -0.1270 +vn 0.4091 0.8076 0.4247 +vn 0.3676 0.6576 0.6576 +vn 0.1399 0.8754 0.4627 +vn 0.1255 0.7015 0.7015 +vn -0.1399 0.8754 0.4627 +vn -0.1255 0.7015 0.7015 +vn 0.6981 0.7047 0.1270 +vn 0.4377 0.8859 0.1534 +vn 0.1502 0.9736 0.1717 +vn -0.1502 0.9736 0.1717 +vn 0.6981 0.7047 -0.1270 +vn 0.4377 0.8859 -0.1534 +vn 0.1502 0.9736 -0.1717 +vn -0.1502 0.9736 -0.1717 +vn 0.6556 0.6589 -0.3688 +vn 0.4091 0.8076 -0.4247 +vn 0.1399 0.8754 -0.4627 +vn -0.1399 0.8754 -0.4627 +vn 0.1255 0.7015 -0.7015 +vn -0.1255 0.7015 -0.7015 +vn -0.3676 -0.6576 -0.6576 +vn -0.4091 -0.8076 -0.4247 +vn -0.6556 -0.6589 -0.3688 +vn -0.5774 -0.5774 -0.5774 +vn -0.4377 -0.8859 -0.1534 +vn -0.6981 -0.7047 -0.1270 +vn -0.4377 -0.8859 0.1534 +vn -0.6981 -0.7047 0.1270 +vn 0.5774 -0.5774 -0.5774 +vn 0.6556 -0.6589 -0.3688 +vn 0.4091 -0.8076 -0.4247 +vn 0.3676 -0.6576 -0.6576 +vn 0.1399 -0.8754 -0.4627 +vn 0.1255 -0.7015 -0.7015 +vn -0.1399 -0.8754 -0.4627 +vn -0.1255 -0.7015 -0.7015 +vn 0.6981 -0.7047 -0.1270 +vn 0.4377 -0.8859 -0.1534 +vn 0.1502 -0.9736 -0.1717 +vn -0.1502 -0.9736 -0.1717 +vn 0.6981 -0.7047 0.1270 +vn 0.4377 -0.8859 0.1534 +vn 0.1502 -0.9736 0.1717 +vn -0.1502 -0.9736 0.1717 +vn 0.6556 -0.6589 0.3688 +vn 0.4091 -0.8076 0.4247 +vn 0.1399 -0.8754 0.4627 +vn -0.1399 -0.8754 0.4627 +vn 0.5774 -0.5774 0.5774 +vn 0.3676 -0.6576 0.6576 +vn 0.1255 -0.7015 0.7015 +vn -0.1255 -0.7015 0.7015 +vn -0.8076 -0.4247 -0.4091 +vn -0.6569 -0.3700 -0.6569 +vn -0.8859 -0.1534 -0.4377 +vn -0.7012 -0.1285 -0.7012 +vn -0.8859 0.1534 -0.4377 +vn -0.7012 0.1285 -0.7012 +vn -0.6569 -0.3700 0.6569 +vn -0.8076 -0.4247 0.4091 +vn -0.8754 -0.4627 0.1399 +vn -0.8754 -0.4627 -0.1399 +vn -0.7012 -0.1285 0.7012 +vn -0.8859 -0.1534 0.4377 +vn -0.9736 -0.1717 0.1502 +vn -0.9736 -0.1717 -0.1502 +vn -0.7012 0.1285 0.7012 +vn -0.8859 0.1534 0.4377 +vn -0.9736 0.1717 0.1502 +vn -0.9736 0.1717 -0.1502 +vn -0.8076 0.4247 0.4091 +vn -0.8754 0.4627 0.1399 +vn -0.8754 0.4627 -0.1399 +vn -0.4091 -0.4247 0.8076 +vn -0.4377 -0.1534 0.8859 +vn -0.4377 0.1534 0.8859 +vn 0.6569 -0.3700 0.6569 +vn 0.4091 -0.4247 0.8076 +vn 0.1399 -0.4627 0.8754 +vn -0.1399 -0.4627 0.8754 +vn 0.7012 -0.1285 0.7012 +vn 0.4377 -0.1534 0.8859 +vn 0.1502 -0.1717 0.9736 +vn -0.1502 -0.1717 0.9736 +vn 0.7012 0.1285 0.7012 +vn 0.4377 0.1534 0.8859 +vn 0.1502 0.1717 0.9736 +vn -0.1502 0.1717 0.9736 +vn 0.4091 0.4247 0.8076 +vn 0.1399 0.4627 0.8754 +vn -0.1399 0.4627 0.8754 +vn 0.8076 -0.4247 0.4091 +vn 0.8859 -0.1534 0.4377 +vn 0.8859 0.1534 0.4377 +vn 0.6569 -0.3700 -0.6569 +vn 0.8076 -0.4247 -0.4091 +vn 0.8754 -0.4627 -0.1399 +vn 0.8754 -0.4627 0.1399 +vn 0.7012 -0.1285 -0.7012 +vn 0.8859 -0.1534 -0.4377 +vn 0.9736 -0.1717 -0.1502 +vn 0.9736 -0.1717 0.1502 +vn 0.7012 0.1285 -0.7012 +vn 0.8859 0.1534 -0.4377 +vn 0.9736 0.1717 -0.1502 +vn 0.9736 0.1717 0.1502 +vn 0.8076 0.4247 -0.4091 +vn 0.8754 0.4627 -0.1399 +vn 0.8754 0.4627 0.1399 +vn 0.4091 -0.4247 -0.8076 +vn 0.4377 -0.1534 -0.8859 +vn 0.4377 0.1534 -0.8859 +vn -0.4091 -0.4247 -0.8076 +vn -0.1399 -0.4627 -0.8754 +vn 0.1399 -0.4627 -0.8754 +vn -0.4377 -0.1534 -0.8859 +vn -0.1502 -0.1717 -0.9736 +vn 0.1502 -0.1717 -0.9736 +vn -0.4377 0.1534 -0.8859 +vn -0.1502 0.1717 -0.9736 +vn 0.1502 0.1717 -0.9736 +vn -0.4091 0.4247 -0.8076 +vn -0.1399 0.4627 -0.8754 +vn 0.1399 0.4627 -0.8754 +vt -0.000000 0.000000 +vt 1.000000 -0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt -0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 -0.000000 +vt -0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 1.000000 -0.000000 +vt 0.000000 -0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.200000 +vt -0.000000 0.200000 +vt 1.000000 0.400000 +vt -0.000000 0.400000 +vt 1.000000 0.600000 +vt -0.000000 0.600000 +vt 1.000000 0.800000 +vt -0.000000 0.800000 +vt -0.000000 0.200000 +vt 1.000000 0.200000 +vt -0.000000 0.400000 +vt 1.000000 0.400000 +vt -0.000000 0.600000 +vt 1.000000 0.600000 +vt -0.000000 0.800000 +vt 1.000000 0.800000 +vt 1.000000 0.200000 +vt 0.800000 -0.000000 +vt 1.000000 0.400000 +vt 0.600000 -0.000000 +vt 1.000000 0.600000 +vt 0.400000 -0.000000 +vt 1.000000 0.800000 +vt 0.200000 -0.000000 +vt 0.000000 0.200000 +vt 0.800000 1.000000 +vt 0.000000 0.400000 +vt 0.600000 1.000000 +vt 0.000000 0.600000 +vt 0.400000 1.000000 +vt 0.000000 0.800000 +vt 0.200000 1.000000 +vt 0.800000 0.000000 +vt 0.200000 -0.000000 +vt 0.600000 0.000000 +vt 0.400000 -0.000000 +vt 0.400000 0.000000 +vt 0.600000 -0.000000 +vt 0.200000 0.000000 +vt 0.800000 -0.000000 +vt 1.000000 0.200000 +vt -0.000000 0.200000 +vt 1.000000 0.400000 +vt -0.000000 0.400000 +vt 1.000000 0.600000 +vt -0.000000 0.600000 +vt 1.000000 0.800000 +vt -0.000000 0.800000 +vt 0.800000 1.000000 +vt 0.800000 -0.000000 +vt 0.600000 1.000000 +vt 0.600000 -0.000000 +vt 0.400000 1.000000 +vt 0.400000 -0.000000 +vt 0.200000 1.000000 +vt 0.200000 -0.000000 +vt 0.200000 1.000000 +vt 0.800000 1.000000 +vt 0.400000 1.000000 +vt 0.600000 1.000000 +vt 0.600000 1.000000 +vt 0.400000 1.000000 +vt 0.800000 1.000000 +vt 0.200000 1.000000 +vt 0.200000 0.000000 +vt 0.200000 1.000000 +vt 0.400000 0.000000 +vt 0.400000 1.000000 +vt 0.600000 0.000000 +vt 0.600000 1.000000 +vt 0.800000 0.000000 +vt 0.800000 1.000000 +vt 1.000000 0.200000 +vt 0.200000 1.000000 +vt 1.000000 0.400000 +vt 0.400000 1.000000 +vt 1.000000 0.600000 +vt 0.600000 1.000000 +vt 1.000000 0.800000 +vt 0.800000 1.000000 +vt 1.000000 0.200000 +vt 0.000000 0.200000 +vt 1.000000 0.400000 +vt 0.000000 0.400000 +vt 1.000000 0.600000 +vt 0.000000 0.600000 +vt 1.000000 0.800000 +vt 0.000000 0.800000 +vt 0.000000 0.200000 +vt 0.200000 -0.000000 +vt 0.000000 0.400000 +vt 0.400000 -0.000000 +vt 0.000000 0.600000 +vt 0.600000 -0.000000 +vt 0.000000 0.800000 +vt 0.800000 -0.000000 +vt 0.800000 0.800000 +vt 0.800000 0.600000 +vt 0.800000 0.400000 +vt 0.800000 0.200000 +vt 0.600000 0.800000 +vt 0.600000 0.600000 +vt 0.600000 0.400000 +vt 0.600000 0.200000 +vt 0.400000 0.800000 +vt 0.400000 0.600000 +vt 0.400000 0.400000 +vt 0.400000 0.200000 +vt 0.200000 0.800000 +vt 0.200000 0.600000 +vt 0.200000 0.400000 +vt 0.200000 0.200000 +vt 0.800000 0.800000 +vt 0.800000 0.600000 +vt 0.800000 0.400000 +vt 0.800000 0.200000 +vt 0.600000 0.800000 +vt 0.600000 0.600000 +vt 0.600000 0.400000 +vt 0.600000 0.200000 +vt 0.400000 0.800000 +vt 0.400000 0.600000 +vt 0.400000 0.400000 +vt 0.400000 0.200000 +vt 0.200000 0.800000 +vt 0.200000 0.600000 +vt 0.200000 0.400000 +vt 0.200000 0.200000 +vt 0.800000 0.200000 +vt 0.600000 0.200000 +vt 0.400000 0.200000 +vt 0.200000 0.200000 +vt 0.800000 0.400000 +vt 0.600000 0.400000 +vt 0.400000 0.400000 +vt 0.200000 0.400000 +vt 0.800000 0.600000 +vt 0.600000 0.600000 +vt 0.400000 0.600000 +vt 0.200000 0.600000 +vt 0.800000 0.800000 +vt 0.600000 0.800000 +vt 0.400000 0.800000 +vt 0.200000 0.800000 +vt 0.800000 0.200000 +vt 0.600000 0.200000 +vt 0.400000 0.200000 +vt 0.200000 0.200000 +vt 0.800000 0.400000 +vt 0.600000 0.400000 +vt 0.400000 0.400000 +vt 0.200000 0.400000 +vt 0.800000 0.600000 +vt 0.600000 0.600000 +vt 0.400000 0.600000 +vt 0.200000 0.600000 +vt 0.800000 0.800000 +vt 0.600000 0.800000 +vt 0.400000 0.800000 +vt 0.200000 0.800000 +vt 0.800000 0.200000 +vt 0.600000 0.200000 +vt 0.400000 0.200000 +vt 0.200000 0.200000 +vt 0.800000 0.400000 +vt 0.600000 0.400000 +vt 0.400000 0.400000 +vt 0.200000 0.400000 +vt 0.800000 0.600000 +vt 0.600000 0.600000 +vt 0.400000 0.600000 +vt 0.200000 0.600000 +vt 0.800000 0.800000 +vt 0.600000 0.800000 +vt 0.400000 0.800000 +vt 0.200000 0.800000 +vt 0.800000 0.200000 +vt 0.600000 0.200000 +vt 0.400000 0.200000 +vt 0.200000 0.200000 +vt 0.800000 0.400000 +vt 0.600000 0.400000 +vt 0.400000 0.400000 +vt 0.200000 0.400000 +vt 0.800000 0.600000 +vt 0.600000 0.600000 +vt 0.400000 0.600000 +vt 0.200000 0.600000 +vt 0.800000 0.800000 +vt 0.600000 0.800000 +vt 0.400000 0.800000 +vt 0.200000 0.800000 +s 1 +f 152/212/1 24/52/2 4/9/3 12/28/4 +f 136/196/5 40/84/6 8/19/7 52/108/8 +f 120/180/9 45/94/10 6/13/11 32/68/12 +f 104/164/13 41/86/14 2/3/15 16/35/16 +f 88/148/17 53/109/18 5/12/19 28/59/20 +f 72/132/21 21/45/22 2/4/15 41/85/14 +f 45/93/10 60/120/23 44/91/24 6/14/11 +f 60/120/23 64/124/25 43/89/26 44/91/24 +f 64/124/25 68/128/27 42/87/28 43/89/26 +f 68/128/27 72/132/21 41/85/14 42/87/28 +f 8/20/7 40/83/6 57/117/29 48/99/30 +f 48/99/30 57/117/29 58/118/31 47/97/32 +f 47/97/32 58/118/31 59/119/33 46/95/34 +f 46/95/34 59/119/33 60/120/23 45/93/10 +f 40/83/6 39/81/35 61/121/36 57/117/29 +f 57/117/29 61/121/36 62/122/37 58/118/31 +f 58/118/31 62/122/37 63/123/38 59/119/33 +f 59/119/33 63/123/38 64/124/25 60/120/23 +f 39/81/35 38/79/39 65/125/40 61/121/36 +f 61/121/36 65/125/40 66/126/41 62/122/37 +f 62/122/37 66/126/41 67/127/42 63/123/38 +f 63/123/38 67/127/42 68/128/27 64/124/25 +f 38/79/39 37/77/43 69/129/44 65/125/40 +f 65/125/40 69/129/44 70/130/45 66/126/41 +f 66/126/41 70/130/45 71/131/46 67/127/42 +f 67/127/42 71/131/46 72/132/21 68/128/27 +f 37/77/43 4/9/3 24/51/2 69/129/44 +f 69/129/44 24/51/2 23/49/47 70/130/45 +f 70/130/45 23/49/47 22/47/48 71/131/46 +f 71/131/46 22/47/48 21/45/22 72/132/21 +f 17/37/49 76/136/50 25/53/51 1/2/52 +f 76/136/50 80/140/53 26/55/54 25/53/51 +f 80/140/53 84/144/55 27/57/56 26/55/54 +f 84/144/55 88/148/17 28/59/20 27/57/56 +f 3/6/57 33/69/58 73/133/59 20/43/60 +f 20/43/60 73/133/59 74/134/61 19/41/62 +f 19/41/62 74/134/61 75/135/63 18/39/64 +f 18/39/64 75/135/63 76/136/50 17/37/49 +f 33/69/58 34/71/65 77/137/66 73/133/59 +f 73/133/59 77/137/66 78/138/67 74/134/61 +f 74/134/61 78/138/67 79/139/68 75/135/63 +f 75/135/63 79/139/68 80/140/53 76/136/50 +f 34/71/65 35/73/69 81/141/70 77/137/66 +f 77/137/66 81/141/70 82/142/71 78/138/67 +f 78/138/67 82/142/71 83/143/72 79/139/68 +f 79/139/68 83/143/72 84/144/55 80/140/53 +f 35/73/69 36/75/73 85/145/74 81/141/70 +f 81/141/70 85/145/74 86/146/75 82/142/71 +f 82/142/71 86/146/75 87/147/76 83/143/72 +f 83/143/72 87/147/76 88/148/17 84/144/55 +f 36/75/73 7/16/77 56/115/78 85/145/74 +f 85/145/74 56/115/78 55/113/79 86/146/75 +f 86/146/75 55/113/79 54/111/80 87/147/76 +f 87/147/76 54/111/80 53/109/18 88/148/17 +f 25/54/51 92/152/81 13/29/82 1/1/52 +f 92/152/81 96/156/83 14/31/84 13/29/82 +f 96/156/83 100/160/85 15/33/86 14/31/84 +f 100/160/85 104/164/13 16/35/16 15/33/86 +f 5/11/19 29/61/87 89/149/88 28/60/20 +f 28/60/20 89/149/88 90/150/89 27/58/56 +f 27/58/56 90/150/89 91/151/90 26/56/54 +f 26/56/54 91/151/90 92/152/81 25/54/51 +f 29/61/87 30/63/91 93/153/92 89/149/88 +f 89/149/88 93/153/92 94/154/93 90/150/89 +f 90/150/89 94/154/93 95/155/94 91/151/90 +f 91/151/90 95/155/94 96/156/83 92/152/81 +f 30/63/91 31/65/95 97/157/96 93/153/92 +f 93/153/92 97/157/96 98/158/97 94/154/93 +f 94/154/93 98/158/97 99/159/98 95/155/94 +f 95/155/94 99/159/98 100/160/85 96/156/83 +f 31/65/95 32/67/12 101/161/99 97/157/96 +f 97/157/96 101/161/99 102/162/100 98/158/97 +f 98/158/97 102/162/100 103/163/101 99/159/98 +f 99/159/98 103/163/101 104/164/13 100/160/85 +f 32/67/12 6/15/11 44/92/24 101/161/99 +f 101/161/99 44/92/24 43/90/26 102/162/100 +f 102/162/100 43/90/26 42/88/28 103/163/101 +f 103/163/101 42/88/28 41/86/14 104/164/13 +f 53/110/18 108/168/102 29/62/87 5/12/19 +f 108/168/102 112/172/103 30/64/91 29/62/87 +f 112/172/103 116/176/104 31/66/95 30/64/91 +f 116/176/104 120/180/9 32/68/12 31/66/95 +f 7/17/77 49/101/105 105/165/106 56/116/78 +f 56/116/78 105/165/106 106/166/107 55/114/79 +f 55/114/79 106/166/107 107/167/108 54/112/80 +f 54/112/80 107/167/108 108/168/102 53/110/18 +f 49/101/105 50/103/109 109/169/110 105/165/106 +f 105/165/106 109/169/110 110/170/111 106/166/107 +f 106/166/107 110/170/111 111/171/112 107/167/108 +f 107/167/108 111/171/112 112/172/103 108/168/102 +f 50/103/109 51/105/113 113/173/114 109/169/110 +f 109/169/110 113/173/114 114/174/115 110/170/111 +f 110/170/111 114/174/115 115/175/116 111/171/112 +f 111/171/112 115/175/116 116/176/104 112/172/103 +f 51/105/113 52/107/8 117/177/117 113/173/114 +f 113/173/114 117/177/117 118/178/118 114/174/115 +f 114/174/115 118/178/118 119/179/119 115/175/116 +f 115/175/116 119/179/119 120/180/9 116/176/104 +f 52/107/8 8/20/7 48/100/30 117/177/117 +f 117/177/117 48/100/30 47/98/32 118/178/118 +f 118/178/118 47/98/32 46/96/34 119/179/119 +f 119/179/119 46/96/34 45/94/10 120/180/9 +f 36/76/73 124/184/120 49/102/105 7/18/77 +f 124/184/120 128/188/121 50/104/109 49/102/105 +f 128/188/121 132/192/122 51/106/113 50/104/109 +f 132/192/122 136/196/5 52/108/8 51/106/113 +f 3/7/57 9/21/123 121/181/124 33/70/58 +f 33/70/58 121/181/124 122/182/125 34/72/65 +f 34/72/65 122/182/125 123/183/126 35/74/69 +f 35/74/69 123/183/126 124/184/120 36/76/73 +f 9/21/123 10/23/127 125/185/128 121/181/124 +f 121/181/124 125/185/128 126/186/129 122/182/125 +f 122/182/125 126/186/129 127/187/130 123/183/126 +f 123/183/126 127/187/130 128/188/121 124/184/120 +f 10/23/127 11/25/131 129/189/132 125/185/128 +f 125/185/128 129/189/132 130/190/133 126/186/129 +f 126/186/129 130/190/133 131/191/134 127/187/130 +f 127/187/130 131/191/134 132/192/122 128/188/121 +f 11/25/131 12/27/4 133/193/135 129/189/132 +f 129/189/132 133/193/135 134/194/136 130/190/133 +f 130/190/133 134/194/136 135/195/137 131/191/134 +f 131/191/134 135/195/137 136/196/5 132/192/122 +f 12/27/4 4/10/3 37/78/43 133/193/135 +f 133/193/135 37/78/43 38/80/39 134/194/136 +f 134/194/136 38/80/39 39/82/35 135/195/137 +f 135/195/137 39/82/35 40/84/6 136/196/5 +f 20/44/60 140/200/138 9/22/123 3/8/57 +f 140/200/138 144/204/139 10/24/127 9/22/123 +f 144/204/139 148/208/140 11/26/131 10/24/127 +f 148/208/140 152/212/1 12/28/4 11/26/131 +f 1/2/52 13/30/82 137/197/141 17/38/49 +f 17/38/49 137/197/141 138/198/142 18/40/64 +f 18/40/64 138/198/142 139/199/143 19/42/62 +f 19/42/62 139/199/143 140/200/138 20/44/60 +f 13/30/82 14/32/84 141/201/144 137/197/141 +f 137/197/141 141/201/144 142/202/145 138/198/142 +f 138/198/142 142/202/145 143/203/146 139/199/143 +f 139/199/143 143/203/146 144/204/139 140/200/138 +f 14/32/84 15/34/86 145/205/147 141/201/144 +f 141/201/144 145/205/147 146/206/148 142/202/145 +f 142/202/145 146/206/148 147/207/149 143/203/146 +f 143/203/146 147/207/149 148/208/140 144/204/139 +f 15/34/86 16/36/16 149/209/150 145/205/147 +f 145/205/147 149/209/150 150/210/151 146/206/148 +f 146/206/148 150/210/151 151/211/152 147/207/149 +f 147/207/149 151/211/152 152/212/1 148/208/140 +f 16/36/16 2/5/15 21/46/22 149/209/150 +f 149/209/150 21/46/22 22/48/48 150/210/151 +f 150/210/151 22/48/48 23/50/47 151/211/152 +f 151/211/152 23/50/47 24/52/2 152/212/1 diff --git a/models/extra/BaseSphere_a.3d b/models/extra/BaseSphere_a.3d deleted file mode 100644 index dcb588afb..000000000 Binary files a/models/extra/BaseSphere_a.3d and /dev/null differ diff --git a/models/extra/BaseSphere_d.3d b/models/extra/BaseSphere_d.3d deleted file mode 100644 index 8fe05cfaa..000000000 Binary files a/models/extra/BaseSphere_d.3d and /dev/null differ diff --git a/models/extra/BigBlast.png b/models/extra/BigBlast.png deleted file mode 100644 index e99c463bb..000000000 Binary files a/models/extra/BigBlast.png and /dev/null differ diff --git a/models/extra/BlastMuz0.png b/models/extra/BlastMuz0.png new file mode 100644 index 000000000..3b399da94 Binary files /dev/null and b/models/extra/BlastMuz0.png differ diff --git a/models/extra/BlastMuz1.png b/models/extra/BlastMuz1.png new file mode 100644 index 000000000..e7ea024db Binary files /dev/null and b/models/extra/BlastMuz1.png differ diff --git a/models/extra/BlastMuz2.png b/models/extra/BlastMuz2.png new file mode 100644 index 000000000..1a9299765 Binary files /dev/null and b/models/extra/BlastMuz2.png differ diff --git a/models/extra/BlastMuz3.png b/models/extra/BlastMuz3.png new file mode 100644 index 000000000..6bb114e54 Binary files /dev/null and b/models/extra/BlastMuz3.png differ diff --git a/models/extra/BlastMuz4.png b/models/extra/BlastMuz4.png new file mode 100644 index 000000000..a0ef4ecfc Binary files /dev/null and b/models/extra/BlastMuz4.png differ diff --git a/models/extra/BlastMuz5.png b/models/extra/BlastMuz5.png new file mode 100644 index 000000000..cfa046114 Binary files /dev/null and b/models/extra/BlastMuz5.png differ diff --git a/models/extra/BlastMuz6.png b/models/extra/BlastMuz6.png new file mode 100644 index 000000000..9d0ecef93 Binary files /dev/null and b/models/extra/BlastMuz6.png differ diff --git a/models/extra/BlastMuz7.png b/models/extra/BlastMuz7.png new file mode 100644 index 000000000..1d2d2413d Binary files /dev/null and b/models/extra/BlastMuz7.png differ diff --git a/models/extra/BlastMuz8.png b/models/extra/BlastMuz8.png new file mode 100644 index 000000000..6db1e2630 Binary files /dev/null and b/models/extra/BlastMuz8.png differ diff --git a/models/extra/BlastMuz9.png b/models/extra/BlastMuz9.png new file mode 100644 index 000000000..2bcf19f93 Binary files /dev/null and b/models/extra/BlastMuz9.png differ diff --git a/models/extra/BlobShadow.png b/models/extra/BlobShadow.png index a066540c4..d7102a856 100644 Binary files a/models/extra/BlobShadow.png and b/models/extra/BlobShadow.png differ diff --git a/models/extra/BloodBlast.png b/models/extra/BloodBlast.png new file mode 100644 index 000000000..3bb088c55 Binary files /dev/null and b/models/extra/BloodBlast.png differ diff --git a/models/extra/BloodDrop1.png b/models/extra/BloodDrop1.png index b8d74c3fc..92714be34 100644 Binary files a/models/extra/BloodDrop1.png and b/models/extra/BloodDrop1.png differ diff --git a/models/extra/BloodDrop2.png b/models/extra/BloodDrop2.png index d4ecf2292..3e62984e7 100644 Binary files a/models/extra/BloodDrop2.png and b/models/extra/BloodDrop2.png differ diff --git a/models/extra/BloodDrop3.png b/models/extra/BloodDrop3.png index af6a442e0..5dfe7d932 100644 Binary files a/models/extra/BloodDrop3.png and b/models/extra/BloodDrop3.png differ diff --git a/models/extra/BloodDrop4.png b/models/extra/BloodDrop4.png index c638400d5..790f1a169 100644 Binary files a/models/extra/BloodDrop4.png and b/models/extra/BloodDrop4.png differ diff --git a/models/extra/BloodDrop5.png b/models/extra/BloodDrop5.png new file mode 100644 index 000000000..9df59ab50 Binary files /dev/null and b/models/extra/BloodDrop5.png differ diff --git a/models/extra/BloodDrop6.png b/models/extra/BloodDrop6.png new file mode 100644 index 000000000..b2e909f7d Binary files /dev/null and b/models/extra/BloodDrop6.png differ diff --git a/models/extra/BloodDrop7.png b/models/extra/BloodDrop7.png new file mode 100644 index 000000000..9be17e3cf Binary files /dev/null and b/models/extra/BloodDrop7.png differ diff --git a/models/extra/BloodDrop8.png b/models/extra/BloodDrop8.png new file mode 100644 index 000000000..9cb657cbc Binary files /dev/null and b/models/extra/BloodDrop8.png differ diff --git a/models/extra/BloodFoot1.png b/models/extra/BloodFoot1.png new file mode 100644 index 000000000..9f64aab7d Binary files /dev/null and b/models/extra/BloodFoot1.png differ diff --git a/models/extra/BloodFoot2.png b/models/extra/BloodFoot2.png new file mode 100644 index 000000000..062b3de80 Binary files /dev/null and b/models/extra/BloodFoot2.png differ diff --git a/models/extra/BloodFoot3.png b/models/extra/BloodFoot3.png new file mode 100644 index 000000000..ab1915c76 Binary files /dev/null and b/models/extra/BloodFoot3.png differ diff --git a/models/extra/BloodFoot4.png b/models/extra/BloodFoot4.png new file mode 100644 index 000000000..f0360bf0f Binary files /dev/null and b/models/extra/BloodFoot4.png differ diff --git a/models/extra/BloodSplat1.png b/models/extra/BloodSplat1.png new file mode 100644 index 000000000..a96017cc3 Binary files /dev/null and b/models/extra/BloodSplat1.png differ diff --git a/models/extra/BloodSplat2.png b/models/extra/BloodSplat2.png new file mode 100644 index 000000000..656a96a9b Binary files /dev/null and b/models/extra/BloodSplat2.png differ diff --git a/models/extra/BloodSplat3.png b/models/extra/BloodSplat3.png new file mode 100644 index 000000000..dd182957e Binary files /dev/null and b/models/extra/BloodSplat3.png differ diff --git a/models/extra/BloodSplat4.png b/models/extra/BloodSplat4.png new file mode 100644 index 000000000..5232b01e1 Binary files /dev/null and b/models/extra/BloodSplat4.png differ diff --git a/models/extra/BloodSplat5.png b/models/extra/BloodSplat5.png new file mode 100644 index 000000000..e5ef705d6 Binary files /dev/null and b/models/extra/BloodSplat5.png differ diff --git a/models/extra/BloodSplat6.png b/models/extra/BloodSplat6.png new file mode 100644 index 000000000..79f1ed321 Binary files /dev/null and b/models/extra/BloodSplat6.png differ diff --git a/models/extra/BloodSplat7.png b/models/extra/BloodSplat7.png new file mode 100644 index 000000000..98216dacb Binary files /dev/null and b/models/extra/BloodSplat7.png differ diff --git a/models/extra/BloodSplat8.png b/models/extra/BloodSplat8.png new file mode 100644 index 000000000..76c3a707f Binary files /dev/null and b/models/extra/BloodSplat8.png differ diff --git a/models/extra/CandyMuz0.png b/models/extra/CandyMuz0.png index 8b5c07a35..5ddd25654 100644 Binary files a/models/extra/CandyMuz0.png and b/models/extra/CandyMuz0.png differ diff --git a/models/extra/CandyMuz1.png b/models/extra/CandyMuz1.png index 62e65f138..4ad023480 100644 Binary files a/models/extra/CandyMuz1.png and b/models/extra/CandyMuz1.png differ diff --git a/models/extra/CandyMuz2.png b/models/extra/CandyMuz2.png index d5d57ab3c..33e34076c 100644 Binary files a/models/extra/CandyMuz2.png and b/models/extra/CandyMuz2.png differ diff --git a/models/extra/CandyMuz3.png b/models/extra/CandyMuz3.png index 6f303263b..e640e3d61 100644 Binary files a/models/extra/CandyMuz3.png and b/models/extra/CandyMuz3.png differ diff --git a/models/extra/CandyMuz4.png b/models/extra/CandyMuz4.png index 2109b28af..4bd27663f 100644 Binary files a/models/extra/CandyMuz4.png and b/models/extra/CandyMuz4.png differ diff --git a/models/extra/CandyMuz5.png b/models/extra/CandyMuz5.png index 9fcaed46b..32a7612b9 100644 Binary files a/models/extra/CandyMuz5.png and b/models/extra/CandyMuz5.png differ diff --git a/models/extra/CandyMuz6.png b/models/extra/CandyMuz6.png index d40c386cb..0ad3080d2 100644 Binary files a/models/extra/CandyMuz6.png and b/models/extra/CandyMuz6.png differ diff --git a/models/extra/CandyMuz7.png b/models/extra/CandyMuz7.png index 25b2cb22b..f9bb86e0d 100644 Binary files a/models/extra/CandyMuz7.png and b/models/extra/CandyMuz7.png differ diff --git a/models/extra/CandyMuz8.png b/models/extra/CandyMuz8.png index 25400f7a4..17c08b1da 100644 Binary files a/models/extra/CandyMuz8.png and b/models/extra/CandyMuz8.png differ diff --git a/models/extra/CandyMuz9.png b/models/extra/CandyMuz9.png index d2a945f02..b2a2acaed 100644 Binary files a/models/extra/CandyMuz9.png and b/models/extra/CandyMuz9.png differ diff --git a/models/extra/CandyTrail.png b/models/extra/CandyTrail.png index a5fc3a6b5..bb78b6410 100644 Binary files a/models/extra/CandyTrail.png and b/models/extra/CandyTrail.png differ diff --git a/models/extra/ChunkTrail.png b/models/extra/ChunkTrail.png index f82f68324..182507e7d 100644 Binary files a/models/extra/ChunkTrail.png and b/models/extra/ChunkTrail.png differ diff --git a/models/extra/ChunkTrail_Blue.png b/models/extra/ChunkTrail_Blue.png index 9ef688851..40687330b 100644 Binary files a/models/extra/ChunkTrail_Blue.png and b/models/extra/ChunkTrail_Blue.png differ diff --git a/models/extra/ChunkTrail_Cyan.png b/models/extra/ChunkTrail_Cyan.png index 10118af2b..2a55ed308 100644 Binary files a/models/extra/ChunkTrail_Cyan.png and b/models/extra/ChunkTrail_Cyan.png differ diff --git a/models/extra/ChunkTrail_Green.png b/models/extra/ChunkTrail_Green.png index e40c0053a..b71403dd4 100644 Binary files a/models/extra/ChunkTrail_Green.png and b/models/extra/ChunkTrail_Green.png differ diff --git a/models/extra/ChunkTrail_Magenta.png b/models/extra/ChunkTrail_Magenta.png index 18b033c1f..616e7214e 100644 Binary files a/models/extra/ChunkTrail_Magenta.png and b/models/extra/ChunkTrail_Magenta.png differ diff --git a/models/extra/ChunkTrail_Red.png b/models/extra/ChunkTrail_Red.png index 2b819803f..7ff351a62 100644 Binary files a/models/extra/ChunkTrail_Red.png and b/models/extra/ChunkTrail_Red.png differ diff --git a/models/extra/ChunkTrail_TransBlue.png b/models/extra/ChunkTrail_TransBlue.png index ed75635a7..c6de4a7f9 100644 Binary files a/models/extra/ChunkTrail_TransBlue.png and b/models/extra/ChunkTrail_TransBlue.png differ diff --git a/models/extra/ChunkTrail_TransPink.png b/models/extra/ChunkTrail_TransPink.png index 2ab23ee81..427845f8c 100644 Binary files a/models/extra/ChunkTrail_TransPink.png and b/models/extra/ChunkTrail_TransPink.png differ diff --git a/models/extra/ChunkTrail_White.png b/models/extra/ChunkTrail_White.png index c8129226d..469c1d3db 100644 Binary files a/models/extra/ChunkTrail_White.png and b/models/extra/ChunkTrail_White.png differ diff --git a/models/extra/ChunkTrail_Yellow.png b/models/extra/ChunkTrail_Yellow.png index 1256efe37..b1dffa2bf 100644 Binary files a/models/extra/ChunkTrail_Yellow.png and b/models/extra/ChunkTrail_Yellow.png differ diff --git a/models/extra/DarkRays.png b/models/extra/DarkRays.png index dd4507b11..d9ce77ee8 100644 Binary files a/models/extra/DarkRays.png and b/models/extra/DarkRays.png differ diff --git a/models/extra/DarkRaysEnd.png b/models/extra/DarkRaysEnd.png index 01fdcda69..c5a60cd66 100644 Binary files a/models/extra/DarkRaysEnd.png and b/models/extra/DarkRaysEnd.png differ diff --git a/models/extra/DarkRaysStart.png b/models/extra/DarkRaysStart.png index b2b5255db..b772164a4 100644 Binary files a/models/extra/DarkRaysStart.png and b/models/extra/DarkRaysStart.png differ diff --git a/models/extra/DarkRaysStartEnd.png b/models/extra/DarkRaysStartEnd.png index f015934ae..a8ceca321 100644 Binary files a/models/extra/DarkRaysStartEnd.png and b/models/extra/DarkRaysStartEnd.png differ diff --git a/models/extra/EvisceratorMuz0.png b/models/extra/EvisceratorMuz0.png index d78d7454b..a5921b8a5 100644 Binary files a/models/extra/EvisceratorMuz0.png and b/models/extra/EvisceratorMuz0.png differ diff --git a/models/extra/EvisceratorMuz1.png b/models/extra/EvisceratorMuz1.png index 2b982335e..f5983a045 100644 Binary files a/models/extra/EvisceratorMuz1.png and b/models/extra/EvisceratorMuz1.png differ diff --git a/models/extra/EvisceratorMuz2.png b/models/extra/EvisceratorMuz2.png index 176604144..8aac254c3 100644 Binary files a/models/extra/EvisceratorMuz2.png and b/models/extra/EvisceratorMuz2.png differ diff --git a/models/extra/EvisceratorMuz3.png b/models/extra/EvisceratorMuz3.png index 063cc5b98..2abdab6ea 100644 Binary files a/models/extra/EvisceratorMuz3.png and b/models/extra/EvisceratorMuz3.png differ diff --git a/models/extra/ExploMuz0.png b/models/extra/ExploMuz0.png index a067a2d55..b5fa74994 100644 Binary files a/models/extra/ExploMuz0.png and b/models/extra/ExploMuz0.png differ diff --git a/models/extra/ExploMuz1.png b/models/extra/ExploMuz1.png index 2bd8527c4..84a886b60 100644 Binary files a/models/extra/ExploMuz1.png and b/models/extra/ExploMuz1.png differ diff --git a/models/extra/ExploMuz2.png b/models/extra/ExploMuz2.png index 5c3e47cbc..4acb68237 100644 Binary files a/models/extra/ExploMuz2.png and b/models/extra/ExploMuz2.png differ diff --git a/models/extra/ExploMuz3.png b/models/extra/ExploMuz3.png index 301266f89..6c45ff3d5 100644 Binary files a/models/extra/ExploMuz3.png and b/models/extra/ExploMuz3.png differ diff --git a/models/extra/ExploMuz4.png b/models/extra/ExploMuz4.png index f3518e392..0d1b8fbb0 100644 Binary files a/models/extra/ExploMuz4.png and b/models/extra/ExploMuz4.png differ diff --git a/models/extra/ExploMuz5.png b/models/extra/ExploMuz5.png index 3c48b040a..7aeed2c9d 100644 Binary files a/models/extra/ExploMuz5.png and b/models/extra/ExploMuz5.png differ diff --git a/models/extra/ExploMuz6.png b/models/extra/ExploMuz6.png index 7250be896..6231405da 100644 Binary files a/models/extra/ExploMuz6.png and b/models/extra/ExploMuz6.png differ diff --git a/models/extra/ExploMuz7.png b/models/extra/ExploMuz7.png index e3511e6ad..685bad5ab 100644 Binary files a/models/extra/ExploMuz7.png and b/models/extra/ExploMuz7.png differ diff --git a/models/extra/ExploMuz8.png b/models/extra/ExploMuz8.png index 2cf35e41a..5a17af8e8 100644 Binary files a/models/extra/ExploMuz8.png and b/models/extra/ExploMuz8.png differ diff --git a/models/extra/ExploMuz9.png b/models/extra/ExploMuz9.png index ff95de516..d0ff7fea1 100644 Binary files a/models/extra/ExploMuz9.png and b/models/extra/ExploMuz9.png differ diff --git a/models/extra/FancyTrail0.png b/models/extra/FancyTrail0.png index 68776c88a..b4bd9c9eb 100644 Binary files a/models/extra/FancyTrail0.png and b/models/extra/FancyTrail0.png differ diff --git a/models/extra/FancyTrail1.png b/models/extra/FancyTrail1.png index 2fd09db5c..c473645fd 100644 Binary files a/models/extra/FancyTrail1.png and b/models/extra/FancyTrail1.png differ diff --git a/models/extra/FancyTrail2.png b/models/extra/FancyTrail2.png index 0cf989419..5bc3b7f8d 100644 Binary files a/models/extra/FancyTrail2.png and b/models/extra/FancyTrail2.png differ diff --git a/models/extra/FancyTrail3.png b/models/extra/FancyTrail3.png index 8eddf8da6..49faaf09f 100644 Binary files a/models/extra/FancyTrail3.png and b/models/extra/FancyTrail3.png differ diff --git a/models/extra/FancyTrail4.png b/models/extra/FancyTrail4.png index 467028850..057a2e238 100644 Binary files a/models/extra/FancyTrail4.png and b/models/extra/FancyTrail4.png differ diff --git a/models/extra/FancyTrail5.png b/models/extra/FancyTrail5.png index e978a3170..fd2d645fa 100644 Binary files a/models/extra/FancyTrail5.png and b/models/extra/FancyTrail5.png differ diff --git a/models/extra/FancyTrail6.png b/models/extra/FancyTrail6.png index d3d248cec..1a744e532 100644 Binary files a/models/extra/FancyTrail6.png and b/models/extra/FancyTrail6.png differ diff --git a/models/extra/Flat.obj b/models/extra/Flat.obj new file mode 100644 index 000000000..589621367 --- /dev/null +++ b/models/extra/Flat.obj @@ -0,0 +1,14 @@ +# Blender 3.3.1 +# www.blender.org +o Plane +v -1.000000 0.000000 -1.000000 +v -1.000000 0.000000 1.000000 +v 1.000000 0.000000 -1.000000 +v 1.000000 0.000000 1.000000 +vn 0.0000 1.0000 0.0000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +s 0 +f 1/1/1 2/2/1 4/4/1 3/3/1 diff --git a/models/extra/Flat_a.3d b/models/extra/Flat_a.3d deleted file mode 100644 index b1485e743..000000000 Binary files a/models/extra/Flat_a.3d and /dev/null differ diff --git a/models/extra/Flat_d.3d b/models/extra/Flat_d.3d deleted file mode 100644 index 62aff60b5..000000000 Binary files a/models/extra/Flat_d.3d and /dev/null differ diff --git a/models/extra/GoldMuz.png b/models/extra/GoldMuz.png index 471708f54..988b927ab 100644 Binary files a/models/extra/GoldMuz.png and b/models/extra/GoldMuz.png differ diff --git a/models/extra/IAmError.obj b/models/extra/IAmError.obj new file mode 100644 index 000000000..e699e92d9 --- /dev/null +++ b/models/extra/IAmError.obj @@ -0,0 +1,3255 @@ +# Blender 3.3.1 +# www.blender.org +o Text +v 0.110000 0.165430 -0.798321 +v 0.110000 0.158511 -0.858065 +v 0.110000 0.105205 -0.929479 +v 0.110000 0.060182 -0.938839 +v 0.110000 0.024309 -0.932226 +v 0.110000 -0.006368 -0.912387 +v 0.110000 -0.029802 -0.879321 +v 0.110000 -0.043947 -0.833030 +v 0.110000 -0.052887 -0.860584 +v 0.110000 -0.225332 -0.989223 +v 0.110000 -0.242127 -0.989223 +v 0.110000 -0.245696 -0.968090 +v 0.110000 -0.245093 -0.916935 +v 0.110000 -0.227091 -0.888804 +v 0.110000 -0.210217 -0.882296 +v 0.110000 -0.084998 -0.843807 +v 0.110000 -0.065430 -0.829531 +v 0.110000 -0.054575 -0.808328 +v 0.110000 -0.220294 -0.735619 +v 0.110000 -0.225332 -0.627012 +v 0.110000 0.148635 -0.627012 +v 0.110000 -0.006368 -0.865221 +v 0.110000 0.096177 -0.885200 +v 0.110000 0.146956 -0.791043 +v 0.110000 0.118055 -0.253674 +v 0.110000 0.160278 -0.311958 +v 0.110000 0.118894 -0.511267 +v 0.110000 0.051898 -0.550840 +v 0.110000 -0.038349 -0.565430 +v 0.110000 -0.251085 -0.382365 +v 0.110000 -0.236818 -0.311958 +v 0.110000 0.036232 -0.503998 +v 0.110000 0.154794 -0.382365 +v 0.110000 -0.038349 -0.252484 +v 0.110000 -0.113252 -0.260812 +v 0.110000 -0.174878 -0.285514 +v 0.110000 -0.174878 -0.479426 +v 0.110000 -0.038349 -0.512246 +v 0.110000 0.138209 -0.072498 +v 0.110000 0.060182 -0.109167 +v 0.110000 -0.043947 -0.003359 +v 0.110000 -0.052887 -0.030913 +v 0.110000 -0.117285 -0.073898 +v 0.110000 -0.242127 -0.159552 +v 0.110000 -0.244096 -0.149510 +v 0.110000 -0.246772 -0.125857 +v 0.110000 -0.245093 -0.087264 +v 0.110000 -0.238558 -0.070259 +v 0.110000 -0.210217 -0.052624 +v 0.110000 -0.114486 -0.024633 +v 0.110000 -0.054575 0.021344 +v 0.110000 -0.051225 0.052624 +v 0.110000 -0.220294 0.094052 +v 0.110000 -0.225332 0.035269 +v 0.110000 -0.225332 0.202659 +v 0.110000 -0.220294 0.144996 +v 0.110000 0.144157 0.144996 +v 0.110000 0.165430 0.202659 +v 0.110000 -0.033310 0.037509 +v 0.110000 0.023137 -0.054916 +v 0.110000 0.059622 -0.061582 +v 0.110000 0.146956 0.038628 +v 0.110000 0.158511 0.371886 +v 0.110000 0.138209 0.327782 +v 0.110000 0.105205 0.300472 +v 0.110000 0.024309 0.297726 +v 0.110000 -0.029802 0.350630 +v 0.110000 -0.052887 0.369367 +v 0.110000 -0.088821 0.336302 +v 0.110000 -0.117285 0.326382 +v 0.110000 -0.221414 0.295031 +v 0.110000 -0.225332 0.240728 +v 0.110000 -0.244096 0.250770 +v 0.110000 -0.246772 0.274423 +v 0.110000 -0.245093 0.313016 +v 0.110000 -0.238558 0.330021 +v 0.110000 -0.227091 0.341148 +v 0.110000 -0.210217 0.347656 +v 0.110000 -0.114486 0.375647 +v 0.110000 -0.054575 0.421624 +v 0.110000 -0.051225 0.452904 +v 0.110000 -0.225332 0.435549 +v 0.110000 -0.225332 0.602939 +v 0.110000 -0.220294 0.545276 +v 0.110000 0.144157 0.545276 +v 0.110000 -0.033310 0.437789 +v 0.110000 0.059622 0.338698 +v 0.110000 0.096177 0.344752 +v 0.110000 -0.033310 0.495451 +v 0.110000 -0.026032 0.760812 +v 0.110000 0.032750 0.753534 +v 0.110000 0.032750 0.733940 +v 0.110000 -0.102169 0.733940 +v 0.110000 -0.102169 0.753534 +v 0.110000 -0.044507 0.859902 +v 0.110000 -0.223093 0.859342 +v 0.110000 -0.139678 0.657243 +v 0.110000 -0.242127 0.660602 +v 0.110000 -0.242127 0.967950 +v 0.110000 -0.225332 0.967950 +v 0.110000 0.064661 0.666760 +v -0.110000 -0.225332 -0.627012 +v -0.110000 -0.033310 -0.734500 +v -0.110000 0.050953 -0.213970 +v -0.110000 0.174948 -0.382365 +v -0.110000 0.118894 -0.511267 +v -0.110000 0.051898 -0.550840 +v -0.110000 -0.127799 -0.550840 +v -0.110000 0.036232 -0.503998 +v -0.110000 0.139416 -0.438795 +v -0.110000 0.154794 -0.382365 +v -0.110000 0.139416 -0.326172 +v -0.110000 0.097691 -0.285514 +v -0.110000 0.036232 -0.260812 +v -0.110000 -0.038349 -0.252484 +v -0.110000 -0.113252 -0.260812 +v -0.110000 -0.174878 -0.285514 +v -0.110000 -0.216664 -0.438795 +v -0.110000 -0.174878 -0.479426 +v -0.110000 0.105205 -0.099808 +v -0.110000 -0.247166 -0.111407 +v -0.110000 -0.245093 -0.087264 +v -0.110000 -0.210217 -0.052624 +v -0.110000 -0.065430 0.000140 +v -0.110000 -0.225332 0.035269 +v -0.110000 0.144157 0.144997 +v -0.110000 0.146956 0.094052 +v -0.110000 0.138209 0.327782 +v -0.110000 0.024309 0.297726 +v -0.110000 -0.006368 0.317565 +v -0.110000 -0.225332 0.240728 +v -0.110000 -0.225332 0.602939 +v -0.110000 -0.220294 0.545276 +v -0.110000 0.165430 0.602939 +v -0.110000 -0.033310 0.437789 +v -0.110000 -0.006368 0.364731 +v -0.110000 0.146956 0.494332 +v -0.110000 -0.026032 0.859902 +v -0.110000 -0.026032 0.760812 +v -0.110000 0.032750 0.733940 +v -0.110000 -0.102169 0.753534 +v -0.110000 -0.044507 0.760812 +v -0.110000 -0.223093 0.696991 +v -0.110000 -0.139678 0.680756 +v -0.110000 -0.139678 0.657243 +v -0.110000 -0.242127 0.967950 +v -0.110000 -0.220294 0.910287 +v -0.110000 0.144157 0.910287 +v -0.110000 0.148635 0.967950 +v -0.110000 0.064661 0.666760 +v -0.110000 0.145836 0.859342 +v -0.107071 0.138765 0.852327 +v -0.100000 0.135836 0.849421 +v 0.100000 0.135836 0.849421 +v 0.107071 0.138765 0.852327 +v 0.110000 0.145836 0.859342 +v -0.107071 -0.018961 0.852830 +v -0.100000 -0.016032 0.849900 +v 0.100000 -0.016032 0.849900 +v 0.107071 -0.018961 0.852830 +v 0.110000 -0.026032 0.859902 +v -0.107071 -0.018961 0.767061 +v -0.100000 -0.016032 0.769650 +v 0.100000 -0.016032 0.769650 +v 0.107071 -0.018961 0.767061 +v -0.110000 0.032750 0.753534 +v -0.107071 0.039821 0.759784 +v -0.100000 0.042750 0.762372 +v 0.100000 0.042750 0.762372 +v 0.107071 0.039821 0.759784 +v -0.107071 0.039821 0.726869 +v -0.100000 0.042750 0.723940 +v 0.100000 0.042750 0.723940 +v 0.107071 0.039821 0.726869 +v -0.110000 -0.102169 0.733940 +v -0.107071 -0.109240 0.726869 +v -0.100000 -0.112169 0.723940 +v 0.100000 -0.112169 0.723940 +v 0.107071 -0.109240 0.726869 +v -0.107071 -0.109240 0.759769 +v -0.100000 -0.112169 0.762351 +v 0.100000 -0.112169 0.762351 +v 0.107071 -0.109240 0.759769 +v -0.107071 -0.051578 0.767047 +v -0.100000 -0.054507 0.769629 +v 0.100000 -0.054507 0.769629 +v 0.107071 -0.051578 0.767047 +v 0.110000 -0.044507 0.760812 +v -0.107071 -0.051578 0.852830 +v -0.100000 -0.054507 0.849900 +v 0.100000 -0.054507 0.849900 +v 0.107071 -0.051578 0.852830 +v -0.110000 -0.223093 0.859342 +v -0.107071 -0.216022 0.852326 +v -0.100000 -0.213093 0.849419 +v 0.100000 -0.213093 0.849419 +v 0.107071 -0.216022 0.852326 +v -0.107071 -0.216022 0.702819 +v -0.100000 -0.213093 0.705232 +v 0.100000 -0.213093 0.705232 +v 0.107071 -0.216022 0.702819 +v 0.110000 -0.223093 0.696991 +v -0.107071 -0.132607 0.686583 +v -0.100000 -0.129678 0.688997 +v 0.100000 -0.129678 0.688997 +v 0.107071 -0.132607 0.686583 +v 0.110000 -0.139678 0.680756 +v -0.107071 -0.132607 0.649936 +v -0.100000 -0.129678 0.646910 +v 0.100000 -0.129678 0.646910 +v 0.107071 -0.132607 0.649936 +v -0.110000 -0.242127 0.660602 +v -0.107071 -0.249199 0.653759 +v -0.100000 -0.252127 0.650924 +v 0.100000 -0.252127 0.650924 +v 0.107071 -0.249198 0.653759 +v -0.107071 -0.249199 0.975021 +v -0.100000 -0.252127 0.977950 +v 0.100000 -0.252127 0.977950 +v 0.107071 -0.249198 0.975021 +v -0.110000 -0.225332 0.967950 +v -0.107071 -0.218852 0.975021 +v -0.100000 -0.216168 0.977950 +v 0.100000 -0.216168 0.977950 +v 0.107071 -0.218852 0.975021 +v -0.107071 -0.213809 0.917308 +v -0.100000 -0.211123 0.920215 +v 0.100000 -0.211123 0.920215 +v 0.107071 -0.213809 0.917308 +v 0.110000 -0.220294 0.910287 +v -0.107071 0.137610 0.917308 +v -0.100000 0.134898 0.920215 +v 0.100000 0.134898 0.920215 +v 0.107071 0.137610 0.917308 +v 0.110000 0.144157 0.910287 +v -0.107071 0.142092 0.975021 +v -0.100000 0.139382 0.977950 +v 0.100000 0.139382 0.977950 +v 0.107071 0.142092 0.975021 +v 0.110000 0.148635 0.967950 +v -0.110000 0.165430 0.967950 +v -0.107071 0.172501 0.975021 +v -0.100000 0.175430 0.977950 +v 0.100000 0.175430 0.977950 +v 0.107071 0.172501 0.975021 +v 0.110000 0.165430 0.967950 +v -0.110000 0.165430 0.670679 +v -0.107071 0.172501 0.663877 +v -0.100000 0.175430 0.661060 +v 0.100000 0.175430 0.661060 +v 0.107071 0.172501 0.663877 +v 0.110000 0.165430 0.670679 +v -0.107071 0.057590 0.659409 +v -0.100000 0.054661 0.656364 +v 0.100000 0.054661 0.656364 +v 0.107071 0.057590 0.659409 +v -0.110000 0.064661 0.690833 +v -0.107071 0.057590 0.696669 +v -0.100000 0.054661 0.699087 +v 0.100000 0.054661 0.699087 +v 0.107071 0.057590 0.696669 +v 0.110000 0.064661 0.690833 +v -0.110000 0.145836 0.706508 +v -0.107071 0.138765 0.712344 +v -0.100000 0.135836 0.714762 +v 0.100000 0.135836 0.714762 +v 0.107071 0.138765 0.712344 +v 0.110000 0.145836 0.706508 +v -0.107071 0.172501 0.431223 +v -0.100000 0.175430 0.431053 +v 0.100000 0.175430 0.431053 +v 0.107071 0.172501 0.431222 +v 0.110000 0.165430 0.431631 +v -0.107071 0.165406 0.369953 +v -0.100000 0.168261 0.369152 +v 0.100000 0.168261 0.369152 +v 0.107071 0.165406 0.369953 +v -0.107071 0.143958 0.323361 +v -0.100000 0.146339 0.321530 +v 0.100000 0.146339 0.321530 +v 0.107071 0.143958 0.323361 +v -0.107071 0.108361 0.293906 +v -0.100000 0.109669 0.291187 +v 0.100000 0.109669 0.291187 +v 0.107071 0.108361 0.293906 +v -0.107071 0.060264 0.283907 +v -0.100000 0.060297 0.280923 +v 0.100000 0.060297 0.280923 +v 0.107071 0.060264 0.283907 +v 0.110000 0.060182 0.291113 +v -0.107071 0.021647 0.291026 +v -0.100000 0.020545 0.288251 +v 0.100000 0.020545 0.288251 +v 0.107071 0.021647 0.291026 +v -0.107071 -0.011350 0.312366 +v -0.100000 -0.013414 0.310213 +v 0.100000 -0.013414 0.310213 +v 0.107071 -0.011350 0.312366 +v 0.110000 -0.006368 0.317565 +v -0.107071 -0.036231 0.347472 +v -0.100000 -0.038894 0.346164 +v 0.100000 -0.038894 0.346164 +v 0.107071 -0.036231 0.347472 +v -0.110000 -0.043947 0.396921 +v -0.107071 -0.044149 0.373385 +v -0.100000 -0.044063 0.364158 +v 0.100000 -0.044063 0.364158 +v 0.107071 -0.044149 0.373385 +v 0.110000 -0.043947 0.396921 +v -0.107071 -0.046528 0.366053 +v 0.107071 -0.046528 0.366053 +v -0.110000 -0.067600 0.349895 +v -0.107071 -0.062721 0.344623 +v -0.100000 -0.060700 0.342439 +v 0.100000 -0.060700 0.342439 +v 0.107071 -0.062721 0.344623 +v 0.110000 -0.067600 0.349895 +v -0.107071 -0.085708 0.329898 +v -0.100000 -0.084418 0.327246 +v 0.100000 -0.084418 0.327246 +v 0.107071 -0.085708 0.329898 +v -0.107071 -0.115101 0.319655 +v -0.100000 -0.114197 0.316869 +v 0.100000 -0.114197 0.316869 +v 0.107071 -0.115101 0.319655 +v -0.107071 -0.214711 0.289665 +v -0.100000 -0.211935 0.287442 +v 0.100000 -0.211935 0.287442 +v 0.107071 -0.214711 0.289665 +v -0.107071 -0.218753 0.233657 +v -0.100000 -0.216028 0.230728 +v 0.100000 -0.216028 0.230728 +v 0.107071 -0.218753 0.233657 +v -0.107071 -0.247947 0.233657 +v -0.100000 -0.250358 0.230728 +v 0.100000 -0.250358 0.230728 +v 0.107071 -0.247947 0.233657 +v 0.110000 -0.242127 0.240728 +v -0.110000 -0.244096 0.250770 +v -0.107071 -0.251069 0.249584 +v -0.100000 -0.253957 0.249093 +v 0.100000 -0.253957 0.249093 +v 0.107071 -0.251069 0.249584 +v -0.107071 -0.252724 0.261054 +v -0.100000 -0.255635 0.260720 +v 0.100000 -0.255635 0.260720 +v 0.107071 -0.252724 0.261054 +v 0.110000 -0.245696 0.261861 +v -0.107071 -0.253835 0.274024 +v -0.100000 -0.256761 0.273859 +v 0.100000 -0.256761 0.273859 +v 0.107071 -0.253835 0.274024 +v -0.107071 -0.254245 0.289080 +v -0.100000 -0.257178 0.289166 +v 0.100000 -0.257178 0.289166 +v 0.107071 -0.254245 0.289080 +v 0.110000 -0.247166 0.288873 +v -0.107071 -0.252052 0.314618 +v -0.100000 -0.254935 0.315282 +v 0.100000 -0.254935 0.315282 +v 0.107071 -0.252052 0.314618 +v -0.107071 -0.244600 0.334011 +v -0.100000 -0.247103 0.335664 +v 0.100000 -0.247103 0.335664 +v 0.107071 -0.244600 0.334011 +v -0.107071 -0.230980 0.347226 +v -0.100000 -0.232591 0.349744 +v 0.100000 -0.232591 0.349744 +v 0.107071 -0.230980 0.347226 +v -0.107071 -0.212485 0.354360 +v -0.100000 -0.213425 0.357136 +v 0.100000 -0.213425 0.357136 +v 0.107071 -0.212485 0.354360 +v -0.107071 -0.116665 0.382377 +v -0.100000 -0.117568 0.385165 +v 0.100000 -0.117568 0.385165 +v 0.107071 -0.116665 0.382377 +v -0.107071 -0.088337 0.392462 +v -0.100000 -0.089719 0.395078 +v 0.100000 -0.089719 0.395078 +v 0.107071 -0.088337 0.392462 +v 0.110000 -0.084998 0.386144 +v -0.110000 -0.065430 0.400420 +v -0.107071 -0.070958 0.405140 +v -0.100000 -0.073247 0.407096 +v 0.100000 -0.073247 0.407096 +v 0.107071 -0.070958 0.405140 +v 0.110000 -0.065430 0.400420 +v -0.107071 -0.061466 0.423680 +v -0.100000 -0.064321 0.424531 +v 0.100000 -0.064321 0.424531 +v 0.107071 -0.061466 0.423680 +v -0.107071 -0.058296 0.453282 +v -0.100000 -0.061225 0.453438 +v 0.100000 -0.061225 0.453438 +v 0.107071 -0.058296 0.453282 +v -0.107071 -0.058296 0.488378 +v -0.100000 -0.061225 0.485447 +v 0.100000 -0.061225 0.485447 +v 0.107071 -0.058296 0.488378 +v 0.110000 -0.051225 0.495451 +v -0.107071 -0.213794 0.487363 +v -0.100000 -0.211102 0.484476 +v 0.100000 -0.211102 0.484476 +v 0.107071 -0.213794 0.487362 +v 0.110000 -0.220294 0.494332 +v -0.107071 -0.218842 0.428478 +v -0.100000 -0.216153 0.425549 +v 0.100000 -0.216153 0.425549 +v 0.107071 -0.218842 0.428478 +v -0.107071 -0.249199 0.428478 +v -0.100000 -0.252127 0.425549 +v 0.100000 -0.252127 0.425549 +v 0.107071 -0.249198 0.428478 +v 0.110000 -0.242127 0.435549 +v -0.107071 -0.249199 0.610010 +v -0.100000 -0.252127 0.612939 +v 0.100000 -0.252127 0.612939 +v 0.107071 -0.249198 0.610010 +v 0.110000 -0.242127 0.602939 +v -0.107071 -0.218852 0.610010 +v -0.100000 -0.216168 0.612939 +v 0.100000 -0.216168 0.612939 +v 0.107071 -0.218852 0.610010 +v -0.107071 -0.213809 0.552297 +v -0.100000 -0.211123 0.555205 +v 0.100000 -0.211123 0.555205 +v 0.107071 -0.213809 0.552297 +v -0.107071 0.137610 0.552297 +v -0.100000 0.134898 0.555205 +v 0.100000 0.134898 0.555205 +v 0.107071 0.137610 0.552297 +v -0.110000 0.148635 0.602939 +v -0.107071 0.142092 0.610010 +v -0.100000 0.139382 0.612939 +v 0.100000 0.139382 0.612939 +v 0.107071 0.142092 0.610010 +v 0.110000 0.148635 0.602939 +v -0.107071 0.172501 0.610010 +v -0.100000 0.175430 0.612939 +v 0.100000 0.175430 0.612939 +v 0.107071 0.172501 0.610010 +v 0.110000 0.165430 0.602939 +v -0.107071 -0.026239 0.438391 +v -0.100000 -0.023310 0.438641 +v 0.100000 -0.023310 0.438641 +v 0.107071 -0.026239 0.438391 +v -0.107071 -0.019381 0.398446 +v -0.100000 -0.016594 0.399519 +v 0.100000 -0.016594 0.399519 +v 0.107071 -0.019381 0.398446 +v 0.110000 -0.026111 0.395854 +v -0.107071 -0.001214 0.369806 +v -0.100000 0.000921 0.371908 +v 0.100000 0.000921 0.371908 +v 0.107071 -0.001214 0.369806 +v 0.110000 -0.006368 0.364731 +v -0.107071 0.025818 0.352062 +v -0.100000 0.026929 0.354837 +v 0.100000 0.026929 0.354837 +v 0.107071 0.025818 0.352062 +v 0.110000 0.023137 0.345364 +v -0.107071 0.059682 0.345876 +v -0.100000 0.059706 0.348849 +v 0.100000 0.059706 0.348848 +v 0.107071 0.059682 0.345876 +v -0.107071 0.093510 0.351477 +v -0.100000 0.092405 0.354263 +v 0.100000 0.092405 0.354263 +v 0.107071 0.093510 0.351477 +v -0.107071 0.118294 0.368110 +v -0.100000 0.116074 0.370148 +v 0.100000 0.116074 0.370148 +v 0.107071 0.118294 0.368110 +v 0.110000 0.123653 0.363191 +v -0.107071 0.134117 0.396699 +v -0.100000 0.131288 0.397637 +v 0.100000 0.131288 0.397636 +v 0.107071 0.134117 0.396699 +v 0.110000 0.140947 0.394437 +v -0.107071 0.139885 0.439384 +v -0.100000 0.136956 0.439581 +v 0.100000 0.136956 0.439581 +v 0.107071 0.139885 0.439384 +v 0.110000 0.146956 0.438908 +v -0.107071 0.139885 0.487370 +v -0.100000 0.136956 0.484486 +v 0.100000 0.136956 0.484486 +v 0.107071 0.139885 0.487370 +v 0.110000 0.146956 0.494332 +v -0.110000 -0.033310 0.495451 +v -0.107071 -0.026239 0.488378 +v -0.100000 -0.023310 0.485448 +v 0.100000 -0.023310 0.485448 +v 0.107071 -0.026239 0.488378 +v -0.110000 0.165430 0.031351 +v -0.107071 0.172501 0.030942 +v -0.100000 0.175430 0.030773 +v 0.100000 0.175430 0.030773 +v 0.107071 0.172501 0.030942 +v 0.110000 0.165430 0.031351 +v -0.110000 0.158511 -0.028394 +v -0.107071 0.165406 -0.030327 +v -0.100000 0.168261 -0.031128 +v 0.100000 0.168261 -0.031128 +v 0.107071 0.165406 -0.030327 +v 0.110000 0.158511 -0.028394 +v -0.107071 0.143958 -0.076919 +v -0.100000 0.146339 -0.078750 +v 0.100000 0.146339 -0.078750 +v 0.107071 0.143958 -0.076919 +v -0.107071 0.108361 -0.106374 +v -0.100000 0.109669 -0.109093 +v 0.100000 0.109669 -0.109093 +v 0.107071 0.108361 -0.106374 +v 0.110000 0.105205 -0.099808 +v -0.110000 0.060182 -0.109167 +v -0.107071 0.060264 -0.116373 +v -0.100000 0.060297 -0.119357 +v 0.100000 0.060297 -0.119357 +v 0.107071 0.060264 -0.116373 +v -0.107071 0.021647 -0.109254 +v -0.100000 0.020545 -0.112029 +v 0.100000 0.020545 -0.112029 +v 0.107071 0.021647 -0.109254 +v 0.110000 0.024309 -0.102554 +v -0.107071 -0.011350 -0.087914 +v -0.100000 -0.013414 -0.090067 +v 0.100000 -0.013414 -0.090067 +v 0.107071 -0.011350 -0.087914 +v 0.110000 -0.006368 -0.082715 +v -0.110000 -0.029802 -0.049650 +v -0.107071 -0.036231 -0.052808 +v -0.100000 -0.038894 -0.054116 +v 0.100000 -0.038894 -0.054116 +v 0.107071 -0.036231 -0.052808 +v 0.110000 -0.029802 -0.049650 +v -0.107071 -0.044149 -0.026895 +v -0.100000 -0.044063 -0.036122 +v 0.100000 -0.044063 -0.036122 +v 0.107071 -0.044149 -0.026895 +v -0.107071 -0.046528 -0.034227 +v 0.107071 -0.046528 -0.034227 +v -0.110000 -0.067600 -0.050385 +v -0.107071 -0.062721 -0.055657 +v -0.100000 -0.060700 -0.057841 +v 0.100000 -0.060700 -0.057841 +v 0.107071 -0.062721 -0.055657 +v 0.110000 -0.067600 -0.050385 +v -0.107071 -0.085708 -0.070382 +v -0.100000 -0.084418 -0.073034 +v 0.100000 -0.084418 -0.073034 +v 0.107071 -0.085708 -0.070382 +v 0.110000 -0.088821 -0.063978 +v -0.107071 -0.115101 -0.080625 +v -0.100000 -0.114197 -0.083411 +v 0.100000 -0.114197 -0.083411 +v 0.107071 -0.115101 -0.080625 +v -0.107071 -0.214711 -0.110615 +v -0.100000 -0.211935 -0.112838 +v 0.100000 -0.211935 -0.112838 +v 0.107071 -0.214711 -0.110615 +v 0.110000 -0.221414 -0.105248 +v -0.107071 -0.218753 -0.166623 +v -0.100000 -0.216028 -0.169552 +v 0.100000 -0.216028 -0.169552 +v 0.107071 -0.218753 -0.166623 +v 0.110000 -0.225332 -0.159552 +v -0.107071 -0.247947 -0.166623 +v -0.100000 -0.250358 -0.169552 +v 0.100000 -0.250358 -0.169552 +v 0.107071 -0.247947 -0.166623 +v -0.107071 -0.251069 -0.150696 +v -0.100000 -0.253957 -0.151187 +v 0.100000 -0.253957 -0.151187 +v 0.107071 -0.251069 -0.150696 +v -0.107071 -0.252724 -0.139226 +v -0.100000 -0.255635 -0.139560 +v 0.100000 -0.255635 -0.139560 +v 0.107071 -0.252724 -0.139226 +v 0.110000 -0.245696 -0.138419 +v -0.107071 -0.253835 -0.126256 +v -0.100000 -0.256761 -0.126421 +v 0.100000 -0.256761 -0.126421 +v 0.107071 -0.253835 -0.126256 +v -0.107071 -0.254245 -0.111200 +v -0.100000 -0.257178 -0.111114 +v 0.100000 -0.257178 -0.111114 +v 0.107071 -0.254245 -0.111200 +v 0.110000 -0.247166 -0.111407 +v -0.107071 -0.252052 -0.085662 +v -0.100000 -0.254935 -0.084998 +v 0.100000 -0.254935 -0.084998 +v 0.107071 -0.252052 -0.085662 +v -0.107071 -0.244600 -0.066269 +v -0.100000 -0.247103 -0.064616 +v 0.100000 -0.247103 -0.064616 +v 0.107071 -0.244600 -0.066269 +v -0.107071 -0.230980 -0.053054 +v -0.100000 -0.232591 -0.050536 +v 0.100000 -0.232591 -0.050536 +v 0.107071 -0.230980 -0.053054 +v 0.110000 -0.227091 -0.059132 +v -0.107071 -0.212485 -0.045920 +v -0.100000 -0.213425 -0.043144 +v 0.100000 -0.213425 -0.043144 +v 0.107071 -0.212485 -0.045920 +v -0.110000 -0.114486 -0.024633 +v -0.107071 -0.116665 -0.017903 +v -0.100000 -0.117568 -0.015115 +v 0.100000 -0.117568 -0.015115 +v 0.107071 -0.116665 -0.017903 +v -0.110000 -0.084998 -0.014136 +v -0.107071 -0.088337 -0.007818 +v -0.100000 -0.089719 -0.005202 +v 0.100000 -0.089719 -0.005202 +v 0.107071 -0.088337 -0.007818 +v 0.110000 -0.084998 -0.014136 +v -0.107071 -0.070958 0.004860 +v -0.100000 -0.073247 0.006816 +v 0.100000 -0.073247 0.006816 +v 0.107071 -0.070958 0.004860 +v 0.110000 -0.065430 0.000140 +v -0.107071 -0.061466 0.023400 +v -0.100000 -0.064321 0.024251 +v 0.100000 -0.064321 0.024251 +v 0.107071 -0.061466 0.023400 +v -0.107071 -0.058296 0.053002 +v -0.100000 -0.061225 0.053158 +v 0.100000 -0.061225 0.053158 +v 0.107071 -0.058296 0.053002 +v -0.107071 -0.058296 0.088098 +v -0.100000 -0.061225 0.085167 +v 0.100000 -0.061225 0.085167 +v 0.107071 -0.058296 0.088098 +v 0.110000 -0.051225 0.095171 +v -0.107071 -0.213794 0.087083 +v -0.100000 -0.211102 0.084196 +v 0.100000 -0.211102 0.084196 +v 0.107071 -0.213794 0.087082 +v -0.107071 -0.218842 0.028198 +v -0.100000 -0.216153 0.025269 +v 0.100000 -0.216153 0.025269 +v 0.107071 -0.218842 0.028198 +v -0.107071 -0.249199 0.028198 +v -0.100000 -0.252127 0.025269 +v 0.100000 -0.252127 0.025269 +v 0.107071 -0.249198 0.028198 +v 0.110000 -0.242127 0.035269 +v -0.107071 -0.249199 0.209730 +v -0.100000 -0.252127 0.212659 +v 0.100000 -0.252127 0.212659 +v 0.107071 -0.249198 0.209730 +v 0.110000 -0.242127 0.202659 +v -0.107071 -0.218852 0.209730 +v -0.100000 -0.216168 0.212659 +v 0.100000 -0.216168 0.212659 +v 0.107071 -0.218852 0.209730 +v -0.107071 -0.213809 0.152017 +v -0.100000 -0.211123 0.154925 +v 0.100000 -0.211123 0.154925 +v 0.107071 -0.213809 0.152017 +v -0.107071 0.137610 0.152017 +v -0.100000 0.134898 0.154925 +v 0.100000 0.134898 0.154925 +v 0.107071 0.137610 0.152017 +v -0.107071 0.142092 0.209730 +v -0.100000 0.139382 0.212659 +v 0.100000 0.139382 0.212659 +v 0.107071 0.142092 0.209730 +v 0.110000 0.148635 0.202659 +v -0.107071 0.172501 0.209730 +v -0.100000 0.175430 0.212659 +v 0.100000 0.175430 0.212659 +v 0.107071 0.172501 0.209730 +v -0.107071 -0.026239 0.038111 +v -0.100000 -0.023310 0.038361 +v 0.100000 -0.023310 0.038361 +v 0.107071 -0.026239 0.038111 +v -0.107071 -0.019381 -0.001834 +v -0.100000 -0.016594 -0.000761 +v 0.100000 -0.016594 -0.000761 +v 0.107071 -0.019381 -0.001834 +v 0.110000 -0.026111 -0.004426 +v -0.107071 -0.001214 -0.030474 +v -0.100000 0.000921 -0.028372 +v 0.100000 0.000921 -0.028372 +v 0.107071 -0.001214 -0.030474 +v 0.110000 -0.006368 -0.035549 +v -0.107071 0.025818 -0.048218 +v -0.100000 0.026929 -0.045443 +v 0.100000 0.026929 -0.045443 +v 0.107071 0.025818 -0.048218 +v -0.110000 0.059622 -0.061582 +v -0.107071 0.059682 -0.054404 +v -0.100000 0.059706 -0.051431 +v 0.100000 0.059706 -0.051431 +v 0.107071 0.059682 -0.054404 +v -0.107071 0.093510 -0.048803 +v -0.100000 0.092405 -0.046017 +v 0.100000 0.092405 -0.046017 +v 0.107071 0.093510 -0.048803 +v 0.110000 0.096177 -0.055528 +v -0.110000 0.123653 -0.037089 +v -0.107071 0.118294 -0.032170 +v -0.100000 0.116074 -0.030132 +v 0.100000 0.116074 -0.030132 +v 0.107071 0.118294 -0.032170 +v 0.110000 0.123653 -0.037089 +v -0.110000 0.140946 -0.005843 +v -0.107071 0.134117 -0.003581 +v -0.100000 0.131288 -0.002644 +v 0.100000 0.131288 -0.002644 +v 0.107071 0.134117 -0.003581 +v 0.110000 0.140947 -0.005843 +v -0.107071 0.139885 0.039104 +v -0.100000 0.136956 0.039301 +v 0.100000 0.136956 0.039301 +v 0.107071 0.139885 0.039104 +v -0.107071 0.139885 0.087090 +v -0.100000 0.136956 0.084206 +v 0.100000 0.136956 0.084206 +v 0.107071 0.139885 0.087090 +v 0.110000 0.146956 0.094052 +v -0.107071 -0.026239 0.088098 +v -0.100000 -0.023310 0.085168 +v 0.100000 -0.023310 0.085168 +v 0.107071 -0.026239 0.088098 +v 0.110000 -0.033310 0.095171 +v -0.107071 0.053411 -0.207207 +v -0.100000 0.054429 -0.204406 +v 0.100000 0.054429 -0.204406 +v 0.107071 0.053411 -0.207207 +v 0.110000 0.050953 -0.213970 +v -0.110000 0.118055 -0.253674 +v -0.107071 0.122919 -0.248336 +v -0.100000 0.124934 -0.246125 +v 0.100000 0.124934 -0.246125 +v 0.107071 0.122919 -0.248336 +v -0.110000 0.160278 -0.311958 +v -0.107071 0.166892 -0.309034 +v -0.100000 0.169632 -0.307823 +v 0.100000 0.169632 -0.307824 +v 0.107071 0.166892 -0.309034 +v -0.107071 0.182167 -0.382347 +v -0.100000 0.185157 -0.382340 +v 0.100000 0.185157 -0.382340 +v 0.107071 0.182167 -0.382348 +v 0.110000 0.174948 -0.382365 +v -0.110000 0.160593 -0.453009 +v -0.107071 0.167222 -0.455897 +v -0.100000 0.169968 -0.457093 +v 0.100000 0.169968 -0.457093 +v 0.107071 0.167222 -0.455897 +v 0.110000 0.160593 -0.453009 +v -0.107071 0.123776 -0.516596 +v -0.100000 0.125797 -0.518803 +v 0.100000 0.125798 -0.518803 +v 0.107071 0.123776 -0.516596 +v -0.107071 0.054345 -0.557607 +v -0.100000 0.055358 -0.560410 +v 0.100000 0.055358 -0.560410 +v 0.107071 0.054345 -0.557607 +v -0.110000 -0.038349 -0.565430 +v -0.107071 -0.038354 -0.572594 +v -0.100000 -0.038356 -0.575561 +v 0.100000 -0.038356 -0.575561 +v 0.107071 -0.038354 -0.572594 +v -0.107071 -0.130253 -0.557604 +v -0.100000 -0.131269 -0.560406 +v 0.100000 -0.131269 -0.560406 +v 0.107071 -0.130253 -0.557604 +v 0.110000 -0.127799 -0.550840 +v -0.110000 -0.194682 -0.511267 +v -0.107071 -0.199557 -0.516598 +v -0.100000 -0.201577 -0.518806 +v 0.100000 -0.201577 -0.518806 +v 0.107071 -0.199557 -0.516598 +v 0.110000 -0.194682 -0.511267 +v -0.110000 -0.236582 -0.453009 +v -0.107071 -0.243204 -0.455911 +v -0.100000 -0.245948 -0.457113 +v 0.100000 -0.245948 -0.457113 +v 0.107071 -0.243204 -0.455911 +v 0.110000 -0.236582 -0.453009 +v -0.110000 -0.251085 -0.382365 +v -0.107071 -0.258301 -0.382375 +v -0.100000 -0.261291 -0.382378 +v 0.100000 -0.261291 -0.382378 +v 0.107071 -0.258301 -0.382375 +v -0.110000 -0.236818 -0.311958 +v -0.107071 -0.243449 -0.309080 +v -0.100000 -0.246196 -0.307888 +v 0.100000 -0.246196 -0.307888 +v 0.107071 -0.243449 -0.309080 +v -0.110000 -0.195311 -0.253674 +v -0.107071 -0.200206 -0.248357 +v -0.100000 -0.202234 -0.246155 +v 0.100000 -0.202234 -0.246155 +v 0.107071 -0.200206 -0.248357 +v 0.110000 -0.195311 -0.253674 +v -0.110000 -0.128508 -0.213970 +v -0.107071 -0.130967 -0.207206 +v -0.100000 -0.131986 -0.204404 +v 0.100000 -0.131986 -0.204404 +v 0.107071 -0.130967 -0.207206 +v 0.110000 -0.128508 -0.213970 +v -0.110000 -0.038349 -0.199300 +v -0.107071 -0.038343 -0.192135 +v -0.100000 -0.038341 -0.189167 +v 0.100000 -0.038341 -0.189167 +v 0.107071 -0.038343 -0.192135 +v 0.110000 -0.038349 -0.199300 +v -0.107071 0.034499 -0.497075 +v -0.100000 0.033781 -0.494208 +v 0.100000 0.033781 -0.494208 +v 0.107071 0.034499 -0.497075 +v -0.110000 0.097691 -0.479426 +v -0.107071 0.093763 -0.473381 +v -0.100000 0.092136 -0.470877 +v 0.100000 0.092136 -0.470878 +v 0.107071 0.093763 -0.473381 +v 0.110000 0.097691 -0.479426 +v -0.107071 0.133101 -0.435074 +v -0.100000 0.130485 -0.433533 +v 0.100000 0.130485 -0.433534 +v 0.107071 0.133101 -0.435075 +v 0.110000 0.139416 -0.438795 +v -0.107071 0.147464 -0.382369 +v -0.100000 0.144427 -0.382371 +v 0.100000 0.144427 -0.382371 +v 0.107071 0.147464 -0.382369 +v -0.107071 0.133103 -0.329894 +v -0.100000 0.130488 -0.331436 +v 0.100000 0.130488 -0.331436 +v 0.107071 0.133103 -0.329894 +v 0.110000 0.139416 -0.326172 +v -0.107071 0.093757 -0.291554 +v -0.100000 0.092127 -0.294056 +v 0.100000 0.092127 -0.294056 +v 0.107071 0.093757 -0.291554 +v 0.110000 0.097691 -0.285514 +v -0.107071 0.034489 -0.267732 +v -0.100000 0.033767 -0.270599 +v 0.100000 0.033767 -0.270599 +v 0.107071 0.034489 -0.267732 +v 0.110000 0.036232 -0.260812 +v -0.107071 -0.038350 -0.259599 +v -0.100000 -0.038351 -0.262546 +v 0.100000 -0.038351 -0.262546 +v 0.107071 -0.038350 -0.259599 +v -0.107071 -0.111515 -0.267733 +v -0.100000 -0.110795 -0.270600 +v 0.100000 -0.110795 -0.270600 +v 0.107071 -0.111515 -0.267733 +v -0.107071 -0.170949 -0.291557 +v -0.100000 -0.169321 -0.294061 +v 0.100000 -0.169321 -0.294061 +v 0.107071 -0.170949 -0.291557 +v -0.110000 -0.216664 -0.326172 +v -0.107071 -0.210352 -0.329897 +v -0.100000 -0.207738 -0.331440 +v 0.100000 -0.207738 -0.331440 +v 0.107071 -0.210352 -0.329897 +v 0.110000 -0.216664 -0.326172 +v -0.110000 -0.232050 -0.382365 +v -0.107071 -0.224720 -0.382369 +v -0.100000 -0.221684 -0.382371 +v 0.100000 -0.221684 -0.382371 +v 0.107071 -0.224720 -0.382369 +v 0.110000 -0.232050 -0.382365 +v -0.107071 -0.210350 -0.435071 +v -0.100000 -0.207734 -0.433529 +v 0.100000 -0.207734 -0.433529 +v 0.107071 -0.210350 -0.435071 +v 0.110000 -0.216664 -0.438795 +v -0.107071 -0.170955 -0.473378 +v -0.100000 -0.169330 -0.470873 +v 0.100000 -0.169330 -0.470873 +v 0.107071 -0.170955 -0.473378 +v -0.110000 -0.113252 -0.503998 +v -0.107071 -0.111525 -0.497074 +v -0.100000 -0.110809 -0.494206 +v 0.100000 -0.110809 -0.494206 +v 0.107071 -0.111525 -0.497074 +v 0.110000 -0.113252 -0.503998 +v -0.110000 -0.038349 -0.512246 +v -0.107071 -0.038350 -0.505132 +v -0.100000 -0.038351 -0.502186 +v 0.100000 -0.038351 -0.502186 +v 0.107071 -0.038350 -0.505132 +v -0.107071 0.172501 -0.798729 +v -0.100000 0.175430 -0.798898 +v 0.100000 0.175430 -0.798898 +v 0.107071 0.172501 -0.798729 +v -0.107071 0.165406 -0.859998 +v -0.100000 0.168261 -0.860799 +v 0.100000 0.168261 -0.860799 +v 0.107071 0.165406 -0.859998 +v -0.107071 0.143958 -0.906590 +v -0.100000 0.146339 -0.908421 +v 0.100000 0.146339 -0.908421 +v 0.107071 0.143958 -0.906590 +v 0.110000 0.138209 -0.902170 +v -0.107071 0.108361 -0.936045 +v -0.100000 0.109669 -0.938765 +v 0.100000 0.109669 -0.938765 +v 0.107071 0.108361 -0.936045 +v -0.107071 0.060264 -0.946044 +v -0.100000 0.060297 -0.949028 +v 0.100000 0.060297 -0.949028 +v 0.107071 0.060264 -0.946044 +v -0.107071 0.021647 -0.938925 +v -0.100000 0.020545 -0.941700 +v 0.100000 0.020545 -0.941700 +v 0.107071 0.021647 -0.938925 +v -0.107071 -0.011350 -0.917585 +v -0.100000 -0.013414 -0.919739 +v 0.100000 -0.013414 -0.919739 +v 0.107071 -0.011350 -0.917585 +v -0.107071 -0.036231 -0.882479 +v -0.100000 -0.038894 -0.883787 +v 0.100000 -0.038894 -0.883787 +v 0.107071 -0.036231 -0.882479 +v -0.107071 -0.044149 -0.856566 +v -0.100000 -0.044063 -0.865793 +v 0.100000 -0.044063 -0.865793 +v 0.107071 -0.044149 -0.856566 +v -0.107071 -0.046528 -0.863898 +v 0.107071 -0.046528 -0.863898 +v -0.107071 -0.062721 -0.885328 +v -0.100000 -0.060700 -0.887512 +v 0.100000 -0.060700 -0.887512 +v 0.107071 -0.062721 -0.885328 +v 0.110000 -0.067600 -0.880056 +v -0.107071 -0.085708 -0.900053 +v -0.100000 -0.084418 -0.902705 +v 0.100000 -0.084418 -0.902705 +v 0.107071 -0.085708 -0.900053 +v 0.110000 -0.088821 -0.893650 +v -0.107071 -0.115101 -0.910296 +v -0.100000 -0.114197 -0.913083 +v 0.100000 -0.114197 -0.913083 +v 0.107071 -0.115101 -0.910296 +v 0.110000 -0.117285 -0.903569 +v -0.107071 -0.214711 -0.940287 +v -0.100000 -0.211935 -0.942509 +v 0.100000 -0.211935 -0.942509 +v 0.107071 -0.214711 -0.940287 +v 0.110000 -0.221414 -0.934920 +v -0.107071 -0.218753 -0.996294 +v -0.100000 -0.216028 -0.999223 +v 0.100000 -0.216028 -0.999223 +v 0.107071 -0.218753 -0.996294 +v -0.107071 -0.247947 -0.996294 +v -0.100000 -0.250358 -0.999223 +v 0.100000 -0.250358 -0.999223 +v 0.107071 -0.247947 -0.996294 +v -0.107071 -0.251069 -0.980367 +v -0.100000 -0.253957 -0.980858 +v 0.100000 -0.253957 -0.980858 +v 0.107071 -0.251069 -0.980367 +v 0.110000 -0.244096 -0.979181 +v -0.107071 -0.252724 -0.968897 +v -0.100000 -0.255635 -0.969232 +v 0.100000 -0.255635 -0.969232 +v 0.107071 -0.252724 -0.968897 +v -0.107071 -0.253835 -0.955927 +v -0.100000 -0.256761 -0.956092 +v 0.100000 -0.256761 -0.956092 +v 0.107071 -0.253835 -0.955927 +v 0.110000 -0.246772 -0.955528 +v -0.107071 -0.254245 -0.940871 +v -0.100000 -0.257178 -0.940785 +v 0.100000 -0.257178 -0.940785 +v 0.107071 -0.254245 -0.940871 +v 0.110000 -0.247166 -0.941078 +v -0.107071 -0.252052 -0.915333 +v -0.100000 -0.254935 -0.914669 +v 0.100000 -0.254935 -0.914669 +v 0.107071 -0.252052 -0.915333 +v -0.107071 -0.244600 -0.895940 +v -0.100000 -0.247103 -0.894287 +v 0.100000 -0.247103 -0.894287 +v 0.107071 -0.244600 -0.895940 +v 0.110000 -0.238558 -0.899930 +v -0.107071 -0.230980 -0.882725 +v -0.100000 -0.232591 -0.880207 +v 0.100000 -0.232591 -0.880207 +v 0.107071 -0.230980 -0.882725 +v -0.107071 -0.212485 -0.875592 +v -0.100000 -0.213425 -0.872815 +v 0.100000 -0.213425 -0.872815 +v 0.107071 -0.212485 -0.875592 +v -0.107071 -0.116665 -0.847574 +v -0.100000 -0.117568 -0.844787 +v 0.100000 -0.117568 -0.844787 +v 0.107071 -0.116665 -0.847574 +v 0.110000 -0.114486 -0.854304 +v -0.107071 -0.088337 -0.837490 +v -0.100000 -0.089719 -0.834873 +v 0.100000 -0.089719 -0.834873 +v 0.107071 -0.088337 -0.837490 +v -0.107071 -0.070958 -0.824811 +v -0.100000 -0.073247 -0.822856 +v 0.100000 -0.073247 -0.822856 +v 0.107071 -0.070958 -0.824811 +v -0.107071 -0.061466 -0.806272 +v -0.100000 -0.064321 -0.805420 +v 0.100000 -0.064321 -0.805420 +v 0.107071 -0.061466 -0.806272 +v -0.107071 -0.058296 -0.776669 +v -0.100000 -0.061225 -0.776513 +v 0.100000 -0.061225 -0.776513 +v 0.107071 -0.058296 -0.776669 +v 0.110000 -0.051225 -0.777047 +v -0.110000 -0.051225 -0.734500 +v -0.107071 -0.058296 -0.741574 +v -0.100000 -0.061225 -0.744504 +v 0.100000 -0.061225 -0.744504 +v 0.107071 -0.058296 -0.741574 +v 0.110000 -0.051225 -0.734500 +v -0.107071 -0.213794 -0.742589 +v -0.100000 -0.211102 -0.745476 +v 0.100000 -0.211102 -0.745476 +v 0.107071 -0.213794 -0.742589 +v -0.107071 -0.218842 -0.801473 +v -0.100000 -0.216153 -0.804402 +v 0.100000 -0.216153 -0.804402 +v 0.107071 -0.218842 -0.801473 +v 0.110000 -0.225332 -0.794402 +v -0.107071 -0.249199 -0.801473 +v -0.100000 -0.252127 -0.804402 +v 0.100000 -0.252127 -0.804402 +v 0.107071 -0.249198 -0.801473 +v 0.110000 -0.242127 -0.794402 +v -0.107071 -0.249199 -0.619941 +v -0.100000 -0.252127 -0.617012 +v 0.100000 -0.252127 -0.617012 +v 0.107071 -0.249198 -0.619941 +v 0.110000 -0.242127 -0.627012 +v -0.107071 -0.218852 -0.619941 +v -0.100000 -0.216168 -0.617012 +v 0.100000 -0.216168 -0.617012 +v 0.107071 -0.218852 -0.619941 +v -0.110000 -0.220294 -0.684675 +v -0.107071 -0.213809 -0.677654 +v -0.100000 -0.211123 -0.674746 +v 0.100000 -0.211123 -0.674746 +v 0.107071 -0.213809 -0.677654 +v 0.110000 -0.220294 -0.684675 +v -0.107071 0.137610 -0.677654 +v -0.100000 0.134898 -0.674746 +v 0.100000 0.134898 -0.674746 +v 0.107071 0.137610 -0.677654 +v 0.110000 0.144157 -0.684675 +v -0.107071 0.142092 -0.619941 +v -0.100000 0.139382 -0.617012 +v 0.100000 0.139382 -0.617012 +v 0.107071 0.142092 -0.619941 +v -0.110000 0.165430 -0.627012 +v -0.107071 0.172501 -0.619941 +v -0.100000 0.175430 -0.617012 +v 0.100000 0.175430 -0.617012 +v 0.107071 0.172501 -0.619941 +v 0.110000 0.165430 -0.627012 +v -0.107071 -0.026239 -0.791560 +v -0.100000 -0.023310 -0.791310 +v 0.100000 -0.023310 -0.791310 +v 0.107071 -0.026239 -0.791560 +v 0.110000 -0.033310 -0.792163 +v -0.107071 -0.019381 -0.831506 +v -0.100000 -0.016594 -0.830432 +v 0.100000 -0.016594 -0.830432 +v 0.107071 -0.019381 -0.831506 +v 0.110000 -0.026111 -0.834098 +v -0.107071 -0.001214 -0.860146 +v -0.100000 0.000921 -0.858044 +v 0.100000 0.000921 -0.858044 +v 0.107071 -0.001214 -0.860146 +v -0.107071 0.025818 -0.877889 +v -0.100000 0.026929 -0.875115 +v 0.100000 0.026929 -0.875115 +v 0.107071 0.025818 -0.877889 +v 0.110000 0.023137 -0.884587 +v -0.107071 0.059682 -0.884076 +v -0.100000 0.059706 -0.881103 +v 0.100000 0.059706 -0.881103 +v 0.107071 0.059682 -0.884076 +v 0.110000 0.059622 -0.891253 +v -0.107071 0.093510 -0.878474 +v -0.100000 0.092405 -0.875688 +v 0.100000 0.092405 -0.875688 +v 0.107071 0.093510 -0.878474 +v -0.107071 0.118294 -0.861841 +v -0.100000 0.116074 -0.859803 +v 0.100000 0.116074 -0.859803 +v 0.107071 0.118294 -0.861841 +v 0.110000 0.123653 -0.866760 +v -0.107071 0.134117 -0.833252 +v -0.100000 0.131288 -0.832315 +v 0.100000 0.131288 -0.832315 +v 0.107071 0.134117 -0.833252 +v 0.110000 0.140947 -0.835515 +v -0.107071 0.139885 -0.790567 +v -0.100000 0.136956 -0.790370 +v 0.100000 0.136956 -0.790370 +v 0.107071 0.139885 -0.790567 +v -0.107071 0.139885 -0.742581 +v -0.100000 0.136956 -0.745465 +v 0.100000 0.136956 -0.745465 +v 0.107071 0.139885 -0.742581 +v 0.110000 0.146956 -0.735619 +v -0.107071 -0.026239 -0.741573 +v -0.100000 -0.023310 -0.744503 +v 0.100000 -0.023310 -0.744503 +v 0.107071 -0.026239 -0.741573 +v 0.110000 -0.033310 -0.734500 +v -0.110000 0.158511 0.371886 +v -0.110000 -0.029802 0.350630 +v -0.110000 -0.052887 0.369367 +v -0.110000 -0.088821 0.336302 +v -0.110000 -0.117285 0.326382 +v -0.110000 -0.221414 0.295032 +v -0.110000 -0.246772 0.274423 +v -0.110000 -0.245093 0.313016 +v -0.110000 -0.238559 0.330021 +v -0.110000 -0.227091 0.341148 +v -0.110000 -0.210217 0.347656 +v -0.110000 -0.114486 0.375647 +v -0.110000 -0.054575 0.421624 +v -0.110000 -0.051225 0.452904 +v -0.110000 -0.225332 0.435549 +v -0.110000 0.144157 0.545276 +v -0.110000 0.059622 0.338698 +v -0.110000 0.096177 0.344752 +v -0.110000 0.165430 0.431631 +v -0.110000 0.060182 0.291113 +v -0.110000 -0.242127 0.240728 +v -0.110000 -0.245696 0.261861 +v -0.110000 -0.247166 0.288873 +v -0.110000 -0.084998 0.386144 +v -0.110000 -0.051225 0.495451 +v -0.110000 -0.220294 0.494332 +v -0.110000 -0.242127 0.435549 +v -0.110000 -0.242127 0.602939 +v -0.110000 -0.026111 0.395854 +v -0.110000 0.023137 0.345364 +v -0.110000 0.123653 0.363191 +v -0.110000 0.140947 0.394437 +v -0.110000 0.146956 0.438908 +v -0.110000 -0.238559 -0.070259 +v -0.110000 -0.051225 0.052624 +v -0.110000 -0.225332 0.202659 +v -0.110000 0.165430 0.202659 +v -0.110000 -0.088821 -0.063978 +v -0.110000 -0.227091 -0.059132 +v -0.110000 -0.051225 0.095171 +v -0.110000 -0.179313 0.094699 +v -0.110000 -0.242127 0.202659 +v -0.110000 0.148635 0.202659 +v -0.110000 -0.033310 0.095171 +v -0.110000 0.165430 -0.798321 +v -0.110000 0.158511 -0.858065 +v -0.110000 0.105205 -0.929479 +v -0.110000 0.060182 -0.938839 +v -0.110000 0.024309 -0.932226 +v -0.110000 -0.006368 -0.912387 +v -0.110000 -0.029802 -0.879321 +v -0.110000 -0.043947 -0.833030 +v -0.110000 -0.052887 -0.860584 +v -0.110000 -0.225332 -0.989223 +v -0.110000 -0.242127 -0.989223 +v -0.110000 -0.245696 -0.968090 +v -0.110000 -0.245093 -0.916935 +v -0.110000 -0.227091 -0.888804 +v -0.110000 -0.210217 -0.882296 +v -0.110000 -0.084998 -0.843807 +v -0.110000 -0.065430 -0.829531 +v -0.110000 -0.054575 -0.808328 +v -0.110000 -0.220294 -0.735619 +v -0.110000 0.148635 -0.627012 +v -0.110000 -0.006368 -0.865221 +v -0.110000 0.096177 -0.885200 +v -0.110000 0.146956 -0.791043 +v -0.110000 0.138209 -0.072498 +v -0.110000 -0.043947 -0.003359 +v -0.110000 -0.052887 -0.030913 +v -0.110000 -0.117285 -0.073898 +v -0.110000 -0.242127 -0.159552 +v -0.110000 -0.244096 -0.149510 +v -0.110000 -0.246772 -0.125857 +v -0.110000 -0.054575 0.021344 +v -0.110000 -0.220294 0.094052 +v -0.110000 -0.220294 0.144996 +v -0.110000 -0.033310 0.037509 +v -0.110000 0.023137 -0.054916 +v -0.110000 0.146956 0.038628 +v -0.110000 0.105205 0.300472 +v -0.110000 -0.044507 0.859902 +v -0.110000 0.024309 -0.102554 +v -0.110000 -0.006368 -0.082715 +v -0.110000 -0.221414 -0.105248 +v -0.110000 -0.225332 -0.159552 +v -0.110000 -0.245696 -0.138419 +v -0.110000 -0.242127 0.035269 +v -0.110000 -0.026111 -0.004426 +v -0.110000 -0.006368 -0.035549 +v -0.110000 0.096177 -0.055528 +v -0.110000 0.138209 -0.902170 +v -0.110000 -0.067600 -0.880056 +v -0.110000 -0.088821 -0.893650 +v -0.110000 -0.117285 -0.903569 +v -0.110000 -0.221414 -0.934920 +v -0.110000 -0.244096 -0.979181 +v -0.110000 -0.246772 -0.955528 +v -0.110000 -0.247166 -0.941078 +v -0.110000 -0.238558 -0.899930 +v -0.110000 -0.114486 -0.854304 +v -0.110000 -0.051225 -0.777047 +v -0.110000 -0.225332 -0.794402 +v -0.110000 -0.242127 -0.794402 +v -0.110000 -0.242127 -0.627012 +v -0.110000 0.144157 -0.684675 +v -0.110000 -0.033310 -0.792163 +v -0.110000 -0.026111 -0.834098 +v -0.110000 0.023137 -0.884587 +v -0.110000 0.059622 -0.891253 +v -0.110000 0.123653 -0.866760 +v -0.110000 0.140947 -0.835515 +v -0.110000 0.146956 -0.735619 +vn -0.0000 0.9168 -0.3994 +vn -0.0000 1.0000 0.0025 +vn 0.9265 0.3512 0.1353 +vn 0.9269 0.2674 0.2633 +vn 0.7394 0.4798 0.4724 +vn 0.7368 0.6310 0.2430 +vn -0.3827 -0.0000 0.9239 +vn -0.5812 -0.0000 0.8138 +vn -0.5894 -0.0000 0.8079 +vn -0.0000 0.7126 0.7016 +vn -0.0000 0.9332 0.3594 +vn 0.9239 -0.3819 -0.0215 +vn 0.7037 -0.7094 -0.0400 +vn 0.7037 -0.7058 -0.0811 +vn 0.9239 -0.3801 -0.0437 +vn -0.3827 -0.0303 -0.9234 +vn -0.5847 -0.0266 -0.8108 +vn -0.5777 -0.0267 -0.8158 +vn -0.0000 0.9962 0.0871 +vn -0.0000 0.9146 0.4043 +vn -0.0000 0.6736 0.7391 +vn 0.7107 -0.2168 0.6692 +vn 0.7276 -0.3205 0.6065 +vn 0.3861 -0.4310 0.8156 +vn 0.3828 -0.2847 0.8789 +vn -0.7433 -0.5086 0.4344 +vn -0.9275 -0.2842 0.2427 +vn -0.9253 -0.1772 0.3353 +vn -0.7276 -0.3205 0.6065 +vn -0.3827 -0.9239 -0.0000 +vn -0.7928 -0.6095 -0.0000 +vn -0.7140 -0.6991 0.0373 +vn -0.3832 -0.9224 0.0492 +vn -0.6886 -0.3908 0.6108 +vn -0.9266 -0.2027 0.3168 +vn -0.9270 -0.3129 0.2067 +vn -0.6876 -0.6058 0.4001 +vn 0.7159 -0.6966 0.0469 +vn 0.3834 -0.9215 0.0620 +vn 0.3884 -0.8747 0.2898 +vn 0.7346 -0.6440 0.2134 +vn -0.0000 -1.0000 -0.0000 +vn -0.7046 0.2191 -0.6750 +vn -0.9239 0.1181 -0.3639 +vn -0.9248 0.1664 -0.3422 +vn -0.6948 0.3144 -0.6468 +vn -0.3889 0.0104 -0.9212 +vn -0.3890 -0.3401 -0.8561 +vn -0.6889 -0.2676 -0.6736 +vn -0.6890 0.0082 -0.7247 +vn -0.3901 0.6561 0.6460 +vn -0.3893 0.3423 0.8551 +vn -0.7372 0.2511 0.6273 +vn -0.7394 0.4798 0.4724 +vn -0.6915 0.6956 -0.1950 +vn -0.6872 0.5759 -0.4428 +vn -0.9272 0.2969 -0.2283 +vn -0.9256 0.3646 -0.1022 +vn 0.9270 -0.3129 0.2067 +vn 0.6876 -0.6058 0.4001 +vn 0.6929 -0.7027 0.1618 +vn 0.9252 -0.3698 0.0851 +vn -0.7342 -0.6506 0.1941 +vn -0.9241 -0.3817 0.0204 +vn -0.9261 -0.3615 0.1078 +vn -0.5943 -0.8043 -0.0000 +vn -0.5812 -0.8138 -0.0000 +vn 0.9257 0.3353 -0.1748 +vn 0.6929 0.6409 -0.3304 +vn 0.8554 0.4927 -0.1599 +vn 0.9239 0.3640 -0.1181 +vn 0.5812 -0.8138 -0.0000 +vn 0.5943 -0.8043 -0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.9268 0.3442 -0.1499 +vn 0.6880 0.6653 -0.2898 +vn 0.6885 0.7253 0.0018 +vn 0.9266 0.3760 0.0009 +vn 0.9266 -0.2027 0.3168 +vn 0.9240 -0.1226 0.3622 +vn 0.7023 -0.2282 0.6744 +vn 0.6886 -0.3908 0.6108 +vn -0.3763 -0.8332 -0.4052 +vn -0.6870 -0.6532 -0.3183 +vn -0.6893 -0.5013 -0.5231 +vn -0.3887 -0.6375 -0.6652 +vn -0.0000 -0.0328 -0.9995 +vn -0.7860 -0.6183 -0.0000 +vn -0.0000 1.0000 -0.0005 +vn -0.0000 0.8612 -0.5083 +vn -0.0000 -0.0000 1.0000 +vn 0.6889 -0.2676 -0.6736 +vn 0.6893 -0.5013 -0.5231 +vn 0.3886 -0.6375 -0.6652 +vn 0.3890 -0.3401 -0.8561 +vn -0.0000 -0.0060 -1.0000 +vn -0.9239 -0.3827 -0.0000 +vn -0.3857 0.2247 -0.8948 +vn -0.7262 0.1674 -0.6668 +vn -0.7224 -0.0002 -0.6915 +vn -0.3847 -0.0002 -0.9230 +vn 0.9259 0.0031 0.3778 +vn 0.7324 0.0056 0.6809 +vn 0.7372 0.2511 0.6273 +vn 0.9266 0.1398 0.3492 +vn 0.7433 -0.5086 0.4344 +vn 0.3917 -0.6996 0.5975 +vn 0.9247 -0.0001 0.3807 +vn 0.7222 -0.0002 0.6917 +vn 0.7261 0.1665 0.6671 +vn 0.9251 0.0919 0.3684 +vn 0.9242 -0.3811 0.0256 +vn 0.9262 -0.3579 0.1186 +vn -0.3857 -0.2240 0.8950 +vn -0.7262 -0.1669 0.6669 +vn -0.7222 -0.0002 0.6917 +vn -0.3846 -0.0002 0.9231 +vn -0.0000 0.4333 -0.9013 +vn -0.0000 0.7928 -0.6095 +vn -0.7497 0.6618 -0.0004 +vn -0.9286 0.3710 -0.0002 +vn -0.9286 0.3196 -0.1886 +vn -0.7495 0.5701 -0.3365 +vn 0.9260 0.2565 -0.2771 +vn 0.6922 0.4894 -0.5304 +vn 0.3829 -0.2961 0.8750 +vn 0.3894 -0.4964 0.7759 +vn -0.0000 0.1910 0.9816 +vn -0.3870 0.0007 0.9221 +vn -0.3884 0.3147 0.8661 +vn -0.6896 0.2474 0.6807 +vn -0.6912 0.0006 0.7226 +vn 0.9239 -0.0000 0.3827 +vn 0.5812 -0.0000 0.8138 +vn 0.5894 -0.0000 0.8079 +vn -0.0000 -0.9745 0.2243 +vn -0.0000 -0.9996 0.0292 +vn -0.3827 0.9239 -0.0000 +vn -0.3839 0.9201 0.0784 +vn -0.7185 0.6930 0.0591 +vn -0.7928 0.6095 -0.0000 +vn -0.3890 0.5013 0.7729 +vn -0.3857 0.2234 0.8952 +vn -0.7261 0.1665 0.6671 +vn -0.7365 0.3681 0.5675 +vn 0.9286 -0.3197 -0.1885 +vn 0.7495 -0.5703 -0.3362 +vn 0.7497 -0.6618 -0.0004 +vn 0.9286 -0.3711 -0.0002 +vn 0.7007 -0.7131 0.0208 +vn 0.9241 -0.3820 0.0112 +vn 0.9239 -0.3827 -0.0000 +vn 0.6011 -0.7843 -0.1537 +vn 0.7041 -0.7000 -0.1190 +vn 0.3828 -0.9108 -0.1549 +vn 0.3827 -0.9066 -0.1777 +vn -0.0000 1.0000 -0.0000 +vn -0.7861 0.6181 -0.0000 +vn -0.9239 0.3827 -0.0000 +vn -0.3891 0.8596 0.3311 +vn -0.7367 0.6310 0.2430 +vn 0.7045 0.2191 -0.6750 +vn 0.7733 0.1828 -0.6071 +vn 0.3827 0.2664 -0.8847 +vn 0.3827 0.2852 -0.8787 +vn -0.7917 0.0040 -0.6109 +vn -0.7864 0.0040 -0.6177 +vn -0.9229 0.0025 -0.3851 +vn 0.6881 0.4901 -0.5351 +vn 0.6895 0.2463 -0.6811 +vn 0.3884 0.3133 -0.8666 +vn 0.3898 0.6220 -0.6791 +vn -0.7824 0.6228 -0.0000 +vn -0.7924 0.6100 -0.0000 +vn 0.6009 0.1527 0.7846 +vn 0.3827 0.1765 0.9069 +vn 0.7824 0.1190 0.6113 +vn -0.3828 -0.9108 -0.1549 +vn -0.7041 -0.7000 -0.1190 +vn -0.6011 -0.7843 -0.1537 +vn -0.3827 -0.9066 -0.1777 +vn -0.9265 -0.1390 -0.3498 +vn -0.9264 0.0043 -0.3765 +vn -0.7006 0.7124 -0.0411 +vn -0.9241 0.3815 -0.0220 +vn -0.4493 0.6974 -0.5584 +vn -0.8288 0.4368 -0.3498 +vn -0.3827 0.2852 -0.8787 +vn -0.8672 -0.3376 0.3659 +vn -0.7049 -0.4817 0.5206 +vn -0.9568 -0.1976 0.2135 +vn -0.9565 -0.1984 0.2140 +vn -0.6886 -0.7252 -0.0009 +vn -0.9266 -0.3761 -0.0005 +vn -0.9268 -0.3439 -0.1507 +vn -0.6880 -0.6647 -0.2913 +vn 0.7367 0.6310 0.2430 +vn 0.3901 0.6561 0.6460 +vn 0.3891 0.8596 0.3311 +vn 0.9253 -0.1772 0.3353 +vn 0.9275 -0.2842 0.2427 +vn 0.9286 0.3196 0.1885 +vn 0.7497 0.5701 0.3362 +vn 0.7497 0.6618 -0.0004 +vn 0.9286 0.3710 -0.0002 +vn 0.5903 -0.0000 0.8071 +vn -0.3945 0.7914 -0.4670 +vn -0.7364 0.3688 -0.5672 +vn -0.3890 0.5021 -0.7723 +vn -0.7881 -0.6137 0.0477 +vn -0.5893 -0.8055 0.0626 +vn -0.9239 -0.3816 0.0296 +vn -0.0000 0.3716 0.9284 +vn 0.9229 -0.0000 0.3850 +vn 0.7872 -0.0000 0.6167 +vn 0.7867 -0.0000 0.6174 +vn -0.0000 -0.7367 0.6762 +vn -0.0000 -0.3687 0.9296 +vn -0.0000 -0.9977 0.0671 +vn -0.0000 -0.9493 0.3145 +vn -0.3827 0.9204 0.0804 +vn -0.7876 0.6138 0.0536 +vn -0.5903 0.8041 0.0703 +vn -0.0000 -0.2428 0.9701 +vn -0.0000 -0.0002 1.0000 +vn -0.7037 -0.7094 -0.0400 +vn -0.7007 -0.7131 0.0208 +vn -0.9241 -0.3820 0.0112 +vn -0.9239 -0.3819 -0.0215 +vn 0.9239 0.3827 -0.0000 +vn 0.5853 0.8108 -0.0000 +vn 0.5812 0.8138 -0.0000 +vn 0.6008 -0.1516 0.7849 +vn 0.7825 -0.1181 0.6114 +vn 0.3828 -0.1752 0.9071 +vn -0.7919 -0.6106 -0.0000 +vn -0.7159 -0.6966 0.0469 +vn -0.3834 -0.9215 0.0620 +vn -0.3894 -0.9210 -0.0012 +vn -0.3901 -0.8434 -0.3696 +vn 0.7495 0.5701 -0.3365 +vn 0.3946 0.9189 -0.0005 +vn 0.3945 0.7914 -0.4670 +vn -0.9239 -0.1179 0.3639 +vn -0.7107 -0.2168 0.6692 +vn -0.7873 0.6144 -0.0527 +vn -0.5902 0.8043 -0.0689 +vn -0.9239 0.3813 -0.0327 +vn -0.5812 0.8138 -0.0000 +vn -0.5940 0.8044 -0.0000 +vn 0.9278 0.1616 -0.3362 +vn 0.6862 0.3151 -0.6556 +vn 0.6872 0.5759 -0.4428 +vn 0.9272 0.2969 -0.2283 +vn -0.0000 0.6768 -0.7362 +vn -0.0000 0.7939 -0.6081 +vn -0.0000 -0.2442 -0.9697 +vn -0.0000 -0.5458 -0.8379 +vn 0.9265 -0.1390 -0.3498 +vn 0.9263 -0.2607 -0.2720 +vn -0.7825 -0.1181 0.6114 +vn -0.9239 -0.0726 0.3758 +vn -0.6008 -0.1516 0.7849 +vn 0.7224 -0.0002 -0.6915 +vn 0.3847 -0.0002 -0.9230 +vn 0.3857 -0.2253 -0.8947 +vn 0.7263 -0.1679 -0.6666 +vn -0.7440 -0.4923 0.4518 +vn -0.9276 -0.2752 0.2526 +vn -0.9269 -0.1383 0.3488 +vn -0.7396 -0.2481 0.6256 +vn -0.0000 -0.9984 -0.0563 +vn -0.3828 -0.9178 -0.1054 +vn -0.3829 -0.9223 -0.0520 +vn -0.7037 -0.7058 -0.0811 +vn -0.7368 0.6310 0.2430 +vn 0.7006 0.7124 -0.0411 +vn 0.3832 0.9221 -0.0532 +vn 0.3827 0.9239 -0.0000 +vn 0.9228 -0.0024 -0.3852 +vn 0.7916 -0.0037 -0.6110 +vn 0.7910 -0.0037 -0.6117 +vn -0.6882 -0.4914 0.5338 +vn -0.9268 -0.2544 0.2763 +vn -0.9268 -0.3445 0.1495 +vn -0.6881 -0.6657 0.2888 +vn 0.9268 -0.3439 -0.1507 +vn 0.6880 -0.6647 -0.2913 +vn 0.6882 -0.4896 -0.5354 +vn 0.9267 -0.2536 -0.2773 +vn -0.9262 0.1288 0.3544 +vn -0.9256 0.0003 0.3784 +vn -0.0000 0.3400 -0.9404 +vn -0.0000 0.6754 -0.7374 +vn 0.9256 -0.3397 -0.1669 +vn 0.6870 -0.6532 -0.3183 +vn 0.9264 0.0043 -0.3765 +vn 0.6890 0.0082 -0.7247 +vn 0.6862 0.3152 -0.6556 +vn -0.4915 -0.5915 0.6392 +vn -0.5055 0.6101 0.6101 +vn -0.7106 0.4975 0.4975 +vn 0.7262 0.1674 -0.6668 +vn 0.7364 0.3688 -0.5672 +vn 0.3890 0.5021 -0.7723 +vn 0.3857 0.2247 -0.8948 +vn -0.3886 -0.6375 -0.6652 +vn -0.0000 0.9964 0.0849 +vn -0.0000 -0.1896 0.9819 +vn 0.6896 0.2474 0.6807 +vn 0.3884 0.3147 0.8661 +vn 0.3870 0.0007 0.9221 +vn 0.6912 0.0006 0.7226 +vn 0.9265 -0.2051 0.3156 +vn 0.9286 -0.3197 0.1884 +vn 0.7496 -0.5703 0.3360 +vn 0.7364 -0.3686 0.5673 +vn 0.9239 -0.0726 0.3758 +vn 0.9239 0.0149 -0.3824 +vn 0.5770 0.0317 -0.8161 +vn 0.5853 0.0315 -0.8102 +vn -0.6929 -0.7027 0.1618 +vn -0.9252 -0.3698 0.0851 +vn -0.3833 -0.9232 0.0270 +vn 0.6881 -0.6657 0.2888 +vn 0.3900 -0.8447 0.3665 +vn 0.3894 -0.9210 -0.0012 +vn 0.6886 -0.7252 -0.0009 +vn -0.6929 0.6409 -0.3304 +vn -0.6922 0.4894 -0.5304 +vn -0.9260 0.2565 -0.2771 +vn -0.9257 0.3353 -0.1748 +vn 0.3888 0.0104 -0.9213 +vn 0.3925 0.3985 -0.8289 +vn -0.0000 -0.0000 -1.0000 +vn 0.7365 0.3681 0.5675 +vn 0.9265 0.2048 0.3158 +vn 0.6915 0.6955 -0.1950 +vn 0.3868 0.8879 -0.2490 +vn -0.7923 -0.6101 -0.0000 +vn -0.7825 -0.6227 -0.0000 +vn -0.9278 0.1616 -0.3362 +vn -0.6862 0.3151 -0.6556 +vn -0.3910 0.7297 -0.5610 +vn -0.3925 0.3985 -0.8289 +vn -0.3895 0.9210 0.0023 +vn -0.6885 0.7253 0.0018 +vn -0.6880 0.6638 0.2934 +vn -0.3901 0.8422 0.3722 +vn -0.3803 -0.0000 0.9248 +vn -0.7872 -0.0000 0.6167 +vn -0.7867 -0.0000 0.6173 +vn 0.9239 0.1181 -0.3639 +vn 0.9239 0.1103 -0.3664 +vn 0.7046 0.2191 -0.6750 +vn -0.0000 0.9974 -0.0720 +vn -0.3890 -0.5028 -0.7719 +vn -0.3857 -0.2253 -0.8947 +vn -0.7263 -0.1679 -0.6666 +vn -0.7363 -0.3693 -0.5670 +vn -0.0000 0.0113 -0.9999 +vn 0.7262 -0.1669 0.6669 +vn 0.3856 -0.2240 0.8950 +vn 0.3846 -0.0002 0.9231 +vn -0.7496 -0.5703 0.3359 +vn -0.9286 -0.3197 0.1884 +vn -0.9265 -0.2051 0.3156 +vn -0.7365 -0.3686 0.5672 +vn 0.9262 0.1288 0.3544 +vn 0.9256 0.0003 0.3784 +vn -0.0000 0.9629 -0.2700 +vn -0.0000 0.9983 -0.0576 +vn -0.0000 -0.9970 0.0774 +vn 0.3829 -0.9223 -0.0520 +vn 0.3828 -0.9178 -0.1054 +vn -0.3802 -0.0056 -0.9249 +vn -0.7916 -0.0037 -0.6110 +vn -0.7910 -0.0037 -0.6117 +vn -0.3937 0.7860 -0.4767 +vn -0.3929 0.6233 -0.6761 +vn 0.9239 -0.0000 -0.3827 +vn 0.6011 -0.0000 -0.7992 +vn 0.5888 -0.0000 -0.8083 +vn -0.8554 0.4927 -0.1599 +vn -0.3903 -0.3394 0.8558 +vn -0.7324 0.0056 0.6809 +vn -0.3876 0.0077 0.9218 +vn -0.3613 -0.8936 -0.2664 +vn -0.8546 -0.4971 -0.1505 +vn 0.8545 -0.4971 -0.1505 +vn 0.3613 -0.8936 -0.2664 +vn 0.3763 -0.8332 -0.4052 +vn -0.3827 0.9215 -0.0665 +vn -0.5888 0.8062 -0.0582 +vn -0.7733 0.6324 -0.0456 +vn -0.6862 0.3152 -0.6556 +vn 0.3827 -0.0000 -0.9239 +vn 0.6895 -0.2470 -0.6809 +vn 0.9262 -0.1286 -0.3544 +vn 0.5940 0.8044 -0.0000 +vn 0.6008 -0.7994 -0.0000 +vn 0.5770 -0.8167 -0.0000 +vn 0.3860 -0.8990 0.2070 +vn 0.3833 -0.9232 0.0270 +vn 0.7922 -0.0020 -0.6103 +vn 0.3815 -0.0029 -0.9244 +vn 0.7919 -0.0020 -0.6107 +vn -0.3849 0.4035 -0.8301 +vn -0.9239 -0.0000 0.3827 +vn 0.7923 -0.6101 -0.0000 +vn 0.7825 -0.6227 -0.0000 +vn -0.3917 -0.6996 0.5975 +vn -0.3882 -0.8831 0.2635 +vn -0.7433 -0.5087 0.4344 +vn 0.7396 -0.2481 0.6256 +vn 0.7440 -0.4923 0.4518 +vn 0.3921 -0.6777 0.6221 +vn 0.3903 -0.3394 0.8558 +vn -0.9229 -0.0000 0.3850 +vn -0.7867 -0.0000 0.6174 +vn 0.9261 -0.3615 0.1078 +vn 0.7342 -0.6506 0.1941 +vn -0.7497 -0.6618 -0.0004 +vn -0.7495 -0.5703 -0.3362 +vn -0.9286 -0.3197 -0.1885 +vn -0.9286 -0.3711 -0.0002 +vn -0.3884 -0.8747 0.2898 +vn -0.7346 -0.6440 0.2134 +vn -0.0000 -0.9935 -0.1142 +vn -0.0000 -0.9859 -0.1676 +vn 0.3905 -0.7682 0.5073 +vn 0.7867 -0.0000 0.6173 +vn 0.3803 -0.0000 0.9248 +vn 0.5888 0.8062 -0.0582 +vn 0.3827 0.9215 -0.0665 +vn 0.7733 0.6324 -0.0456 +vn -0.3830 -0.2961 0.8750 +vn -0.7023 -0.2282 0.6744 +vn -0.3894 -0.4964 0.7758 +vn -0.3832 0.9221 -0.0532 +vn -0.3868 0.8879 -0.2490 +vn 0.9241 -0.3817 0.0204 +vn 0.7140 -0.6991 0.0373 +vn -0.9239 -0.3660 -0.1118 +vn -0.9256 -0.3397 -0.1669 +vn 0.9239 -0.3755 -0.0736 +vn 0.9239 -0.3772 -0.0641 +vn -0.9259 0.0031 0.3778 +vn -0.0000 -0.6919 -0.7220 +vn -0.0000 -0.3692 -0.9293 +vn -0.0000 0.9963 -0.0854 +vn 0.9239 0.3812 0.0333 +vn 0.7876 0.6138 0.0536 +vn 0.5903 0.8041 0.0703 +vn 0.3830 -0.2961 0.8750 +vn -0.3826 -0.9239 -0.0000 +vn -0.5846 -0.8113 -0.0000 +vn 0.3803 0.0060 -0.9248 +vn 0.7917 0.0040 -0.6109 +vn 0.7864 0.0040 -0.6177 +vn -0.0000 -0.9986 0.0533 +vn -0.0000 -0.9583 0.2859 +vn -0.9239 -0.0125 -0.3825 +vn 0.3802 -0.0000 0.9249 +vn 0.3827 0.9204 0.0804 +vn -0.3829 -0.2961 0.8750 +vn -0.3894 -0.4964 0.7759 +vn -0.3860 -0.8990 0.2070 +vn 0.3898 -0.6215 -0.6796 +vn 0.3884 -0.3142 -0.8663 +vn -0.0000 0.2883 -0.9575 +vn -0.0000 0.3088 -0.9511 +vn 0.5893 -0.8055 0.0626 +vn 0.3827 -0.9211 0.0715 +vn 0.7881 -0.6137 0.0477 +vn -0.9253 -0.1772 0.3354 +vn -0.6895 -0.2475 0.6807 +vn -0.3885 -0.3149 0.8660 +vn -0.3903 -0.3395 0.8558 +vn 0.5812 -0.0000 -0.8138 +vn 0.5902 -0.0000 -0.8073 +vn -0.5904 -0.0000 0.8071 +vn -0.3804 0.0060 -0.9248 +vn -0.7904 0.0040 -0.6125 +vn -0.7957 0.0040 -0.6056 +vn -0.6913 -0.0005 -0.7226 +vn -0.6895 -0.2470 -0.6809 +vn -0.9262 -0.1286 -0.3544 +vn -0.9256 -0.0003 -0.3785 +vn 0.9239 -0.1179 0.3639 +vn -0.9265 0.3512 0.1353 +vn -0.9244 0.3801 0.0324 +vn -0.7037 -0.7059 -0.0811 +vn -0.9239 -0.3820 -0.0215 +vn -0.9239 -0.3801 -0.0437 +vn 0.3910 0.7297 -0.5610 +vn -0.9239 0.3817 -0.0275 +vn 0.7185 0.6930 0.0591 +vn 0.3839 0.9201 0.0784 +vn -0.9239 0.3812 0.0333 +vn -0.7107 -0.2168 0.6693 +vn -0.9239 -0.1179 0.3640 +vn -0.9240 -0.1226 0.3622 +vn 0.3945 -0.7917 0.4664 +vn 0.3890 -0.5019 0.7725 +vn -0.9228 -0.0024 -0.3852 +vn -0.3946 -0.9188 -0.0005 +vn -0.3945 -0.7915 -0.4667 +vn -0.3890 -0.5019 0.7725 +vn -0.3850 0.4035 -0.8300 +vn -0.9239 -0.3772 -0.0641 +vn 0.3876 0.0077 0.9218 +vn 0.3893 0.3423 0.8551 +vn -0.0000 -0.8344 0.5511 +vn -0.9266 0.0025 -0.3762 +vn -0.9263 -0.2607 -0.2720 +vn -0.9262 -0.1288 0.3542 +vn 0.5904 -0.0000 0.8071 +vn 0.3827 -0.0000 0.9239 +vn -0.6915 0.6955 -0.1950 +vn -0.9256 0.3645 -0.1022 +vn -0.0000 0.3415 0.9399 +vn -0.0000 -0.9813 -0.1923 +vn 0.9264 0.0043 -0.3766 +vn 0.3802 -0.0056 -0.9249 +vn 0.7928 -0.6095 -0.0000 +vn 0.3832 -0.9224 0.0493 +vn -0.3827 -0.9211 0.0715 +vn -0.0000 -0.9159 -0.4014 +vn -0.0000 -0.6749 -0.7379 +vn 0.7919 -0.6106 -0.0000 +vn 0.7861 0.6181 -0.0000 +vn 0.7928 0.6095 -0.0000 +vn 0.7860 -0.6183 -0.0000 +vn -0.9269 0.2675 0.2633 +vn 0.9251 -0.0922 0.3683 +vn 0.6948 0.3144 -0.6468 +vn 0.3849 0.4035 -0.8300 +vn 0.3945 -0.7915 -0.4667 +vn 0.3946 -0.9188 -0.0005 +vn -0.3888 0.0104 -0.9212 +vn -0.6884 0.4886 0.5361 +vn -0.9267 0.2532 0.2778 +vn 0.3894 -0.4964 0.7758 +vn 0.9276 -0.2752 0.2526 +vn 0.3929 0.6233 -0.6761 +vn -0.9239 0.3640 -0.1181 +vn 0.9256 0.3645 -0.1022 +vn 0.9241 0.3815 -0.0220 +vn 0.6880 0.6638 0.2934 +vn 0.3895 0.9210 0.0023 +vn 0.3900 0.8422 0.3722 +vn 0.9239 0.3817 -0.0275 +vn -0.9251 -0.0927 -0.3682 +vn -0.9264 -0.2055 -0.3154 +vn -0.3921 -0.6777 0.6221 +vn 0.6913 -0.0005 -0.7226 +vn 0.9256 -0.0003 -0.3785 +vn -0.3804 -0.0000 0.9248 +vn 0.3882 -0.8831 0.2635 +vn 0.7433 -0.5087 0.4344 +vn -0.9264 -0.1390 -0.3499 +vn -0.9264 0.0043 -0.3766 +vn -0.8545 -0.4971 -0.1505 +vn -0.9256 -0.3398 -0.1669 +vn -0.7733 0.1828 -0.6071 +vn -0.9239 0.1103 -0.3664 +vn 0.9269 0.2675 0.2633 +vn -0.3828 -0.2847 0.8789 +vn 0.9239 -0.3660 -0.1118 +vn 0.9269 -0.1383 0.3488 +vn -0.0000 -0.7604 0.6494 +vn -0.3900 -0.8447 0.3665 +vn -0.0000 -0.4672 0.8841 +vn -0.6011 -0.0000 -0.7992 +vn -0.9239 -0.0000 -0.3827 +vn -0.5888 -0.0000 -0.8083 +vn -0.3946 -0.7917 0.4664 +vn 0.3937 0.7860 -0.4767 +vn 0.7919 0.0019 -0.6106 +vn 0.3815 0.0028 -0.9244 +vn 0.7922 0.0019 -0.6102 +vn 0.8546 -0.4971 -0.1505 +vn -0.3827 0.9205 -0.0789 +vn 0.5847 -0.8113 -0.0000 +vn 0.3889 0.0104 -0.9212 +vn -0.9597 0.1988 0.1988 +vn -0.3832 -0.9224 0.0493 +vn 0.3900 0.8442 -0.3678 +vn -0.3827 0.2664 -0.8847 +vn -0.0000 -0.9611 -0.2761 +vn -0.0000 -0.9013 -0.4333 +vn -0.0000 0.0008 1.0000 +vn -0.0000 -0.3417 0.9398 +vn -0.5903 -0.0000 0.8072 +vn -0.0000 0.0083 1.0000 +vn -0.3946 0.9189 -0.0005 +vn 0.9239 -0.0125 -0.3825 +vn 0.5847 -0.0266 -0.8108 +vn 0.5777 -0.0267 -0.8158 +vn 0.3832 -0.9224 0.0492 +vn 0.9262 0.1282 -0.3545 +vn -0.3828 -0.9178 -0.1055 +vn 0.9239 -0.0479 0.3797 +vn 0.7860 -0.0774 0.6134 +vn 0.5942 -0.1007 0.7980 +vn -0.3899 -0.6237 0.6775 +vn -0.0000 -0.3205 0.9472 +vn -0.0000 -0.5390 0.8423 +vn -0.3861 -0.4310 0.8156 +vn -0.0000 -0.3081 0.9513 +vn -0.5777 0.8163 -0.0000 +vn -0.6010 0.7993 -0.0000 +vn -0.0000 0.0065 -1.0000 +vn -0.0000 0.3087 -0.9511 +vn -0.0000 -0.0007 -1.0000 +vn -0.0000 -0.9174 0.3980 +vn -0.0000 -1.0000 -0.0013 +vn -0.9266 0.1398 0.3492 +vn 0.3828 -0.9178 -0.1055 +vn 0.5777 0.8163 -0.0000 +vn 0.6010 0.7993 -0.0000 +vn -0.3905 -0.7682 0.5073 +vn 0.5902 0.8043 -0.0689 +vn 0.3827 0.9205 -0.0789 +vn 0.7873 0.6144 -0.0527 +vn 0.9251 -0.0927 -0.3682 +vn 0.7363 -0.3693 -0.5670 +vn 0.9264 -0.2055 -0.3154 +vn 0.9244 0.3801 0.0324 +vn -0.9263 -0.2607 -0.2721 +vn 0.9239 -0.3816 0.0296 +vn -0.0000 -0.8616 0.5076 +vn -0.0000 -0.5449 0.8385 +vn 0.9248 0.1663 -0.3421 +vn -0.0000 0.5442 0.8390 +vn -0.0000 0.8614 0.5079 +vn -0.3827 -0.0000 -0.9239 +vn -0.5812 -0.0000 -0.8138 +vn -0.5902 -0.0000 -0.8073 +vn -0.5903 -0.0000 0.8071 +vn -0.9242 -0.3811 0.0256 +vn 0.3903 -0.3395 0.8558 +vn -0.3827 0.0359 -0.9232 +vn -0.5770 0.0317 -0.8161 +vn -0.5853 0.0315 -0.8102 +vn 0.3946 0.7915 0.4667 +vn -0.6008 -0.7994 -0.0000 +vn -0.5770 -0.8167 -0.0000 +vn -0.7824 0.1190 0.6113 +vn -0.6009 0.1527 0.7846 +vn -0.9239 0.0731 0.3756 +vn 0.6915 0.6956 -0.1950 +vn -0.0000 -0.6773 0.7357 +vn -0.9251 0.0919 0.3684 +vn -0.9265 0.2048 0.3158 +vn 0.7824 0.6228 -0.0000 +vn 0.7924 0.6100 -0.0000 +vn -0.3946 0.7915 0.4667 +vn -0.7497 0.5701 0.3362 +vn 0.3890 0.5013 0.7729 +vn 0.9229 0.0025 -0.3851 +vn 0.9267 0.2532 0.2778 +vn 0.6884 0.4886 0.5361 +vn -0.9248 0.1663 -0.3421 +vn -0.9251 -0.0922 0.3683 +vn -0.9247 -0.0001 0.3807 +vn -0.6895 0.2463 -0.6812 +vn -0.9262 0.1282 -0.3545 +vn -0.9268 0.2537 -0.2770 +vn -0.6881 0.4901 -0.5351 +vn -0.3849 0.4035 -0.8300 +vn 0.3896 0.6204 0.6807 +vn -0.9262 -0.3580 0.1186 +vn -0.3898 -0.6215 -0.6796 +vn -0.6882 -0.4896 -0.5354 +vn -0.0000 -0.3410 -0.9401 +vn 0.3901 -0.8434 -0.3696 +vn 0.9268 0.2537 -0.2770 +vn -0.7922 -0.0020 -0.6103 +vn -0.9233 -0.0012 -0.3840 +vn -0.7919 -0.0020 -0.6107 +vn -0.3884 -0.3142 -0.8663 +vn 0.3887 -0.6375 -0.6652 +vn 0.9286 0.3196 -0.1886 +vn -0.3815 -0.0029 -0.9244 +vn 0.9269 0.3434 0.1518 +vn -0.4901 -0.5912 0.6405 +vn -0.3802 -0.0000 0.9249 +vn -0.9267 -0.2536 -0.2773 +vn -0.0000 0.4372 -0.8994 +vn -0.7347 -0.6440 0.2134 +vn 0.9268 -0.2544 0.2763 +vn 0.9262 -0.1288 0.3542 +vn 0.6895 -0.2475 0.6807 +vn 0.6882 -0.4914 0.5338 +vn -0.3827 0.1135 0.9169 +vn -0.5940 0.0988 0.7984 +vn -0.7861 0.0759 0.6134 +vn 0.9251 0.0925 -0.3683 +vn 0.9264 0.2052 -0.3156 +vn 0.7876 0.6139 0.0536 +vn -0.3898 0.6220 -0.6791 +vn -0.6880 0.6653 -0.2898 +vn -0.3900 0.8442 -0.3678 +vn -0.9239 -0.3826 -0.0000 +vn 0.3827 -0.0303 -0.9234 +vn -0.9262 -0.3579 0.1186 +vn -0.0000 0.1229 0.9924 +vn -0.0000 -0.0002 -1.0000 +vn 0.9247 -0.0001 -0.3807 +vn -0.9251 0.0925 -0.3683 +vn -0.9247 -0.0001 -0.3807 +vn -0.3869 -0.0006 -0.9221 +vn -0.3888 0.0104 -0.9213 +vn -0.9286 0.3196 0.1885 +vn -0.0000 0.2435 -0.9699 +vn 0.9264 -0.1390 -0.3498 +vn 0.3850 0.4035 -0.8300 +vn 0.3899 -0.6237 0.6775 +vn -0.5853 0.8108 -0.0000 +vn -0.3803 0.0060 -0.9248 +vn 0.9266 -0.3761 -0.0005 +vn -0.0000 -0.8614 -0.5079 +vn -0.0000 -1.0000 -0.0005 +vn -0.0000 0.4372 -0.8993 +vn 0.9248 0.1663 -0.3422 +vn -0.9268 0.3442 -0.1499 +vn -0.9266 0.3760 0.0009 +vn -0.0000 0.0030 -1.0000 +vn -0.3896 0.6204 0.6807 +vn 0.9239 0.3813 -0.0327 +vn -0.9239 -0.3755 -0.0736 +vn -0.0000 0.2421 0.9702 +vn 0.9234 0.0012 -0.3839 +vn -0.7922 0.0019 -0.6102 +vn -0.7919 0.0019 -0.6106 +vn -0.9234 0.0012 -0.3839 +vn 0.9253 -0.1772 0.3354 +vn 0.3902 -0.3394 0.8559 +vn 0.3888 0.0104 -0.9212 +vn 0.9239 0.1103 -0.3665 +vn -0.0000 0.0389 -0.9992 +vn -0.3826 -0.1157 0.9166 +vn -0.7860 -0.0774 0.6134 +vn -0.5942 -0.1007 0.7980 +vn 0.3885 -0.3149 0.8660 +vn -0.9264 0.2052 -0.3156 +vn -0.9269 0.3434 0.1518 +vn -0.9239 0.0470 0.3798 +vn 0.9268 -0.3445 0.1495 +vn 0.9239 0.0731 0.3756 +vn 0.9233 -0.0012 -0.3840 +vn 0.3826 -0.1157 0.9166 +vn 0.3869 -0.0006 -0.9221 +vn -0.3815 0.0028 -0.9244 +vn -0.3827 0.1765 0.9069 +vn -0.9239 0.0149 -0.3824 +vn -0.9464 0.2520 -0.2018 +vn 0.3890 -0.5028 -0.7719 +vn 0.9239 -0.3815 0.0296 +vn 0.9239 0.0470 0.3798 +vn 0.5940 0.0988 0.7984 +vn 0.7861 0.0759 0.6134 +vn 0.3827 0.0359 -0.9232 +vn -0.3828 -0.1752 0.9071 +vn 0.3827 0.1135 0.9169 +vn -0.0000 0.5451 -0.8384 +vn -0.9239 -0.0479 0.3797 +vn -0.0000 -0.9858 -0.1676 +vn -0.3884 0.3133 -0.8666 +vn -0.0000 -0.1252 0.9921 +vn -0.0000 -0.0032 -1.0000 +vn 0.3857 0.2234 0.8952 +vn 0.3804 -0.0000 0.9248 +vn -1.0000 -0.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +s 1 +f 753//1 752//1 746//2 747//2 +f 1076//3 22//4 1080//5 1075//6 +f 668//7 673//7 672//8 667//9 +f 687//10 686//10 681//11 682//11 +f 972//12 971//13 967//14 12//15 +f 214//16 213//17 208//18 209//16 +f 228//19 227//19 223//19 224//19 +f 743//20 742//20 737//21 738//21 +f 998//22 1003//23 1002//24 997//25 +f 384//26 383//27 1142//28 378//29 +f 1019//30 1018//31 1012//32 1013//33 +f 366//34 1128//35 1127//36 362//37 +f 484//38 483//39 478//40 479//41 +f 154//42 153//42 265//42 266//42 +f 941//43 1213//44 1212//45 936//46 +f 910//47 914//48 913//49 909//50 +f 454//51 459//52 458//53 453//54 +f 896//55 900//56 1210//57 1164//58 +f 76//59 365//60 361//61 75//62 +f 1008//63 1012//32 1220//64 1180//65 +f 181//30 180//66 176//67 177//30 +f 42//68 543//69 541//70 41//71 +f 179//72 183//73 182//74 178//74 +f 755//75 754//76 748//77 749//78 +f 603//79 49//80 607//81 602//82 +f 922//83 921//84 917//85 918//86 +f 215//87 214//87 209//87 210//87 +f 190//30 189//31 184//88 185//30 +f 869//89 868//89 862//90 863//90 +f 224//91 223//91 218//91 219//91 +f 525//92 530//93 529//94 524//95 +f 722//96 727//96 726//96 721//96 +f 180//66 141//97 175//97 176//67 +f 853//98 852//99 848//100 849//101 +f 1090//102 1089//103 1084//104 1085//105 +f 381//23 387//106 386//107 380//24 +f 38//108 891//109 885//110 886//111 +f 24//112 1108//38 1103//41 1104//113 +f 815//114 814//115 888//116 889//117 +f 284//118 283//118 279//119 280//119 +f 867//120 866//121 860//122 861//123 +f 935//124 934//125 930//69 9//68 +f 369//82 373//81 372//126 368//127 +f 205//128 204//128 199//128 200//128 +f 810//129 731//130 730//131 809//132 +f 1066//133 1065//134 1060//135 21//133 +f 593//136 592//136 587//137 588//137 +f 726//138 677//139 676//140 725//141 +f 878//142 883//143 882//144 877//145 +f 837//146 836//147 832//148 33//149 +f 47//62 594//61 589//150 590//151 +f 93//152 94//152 183//73 179//72 +f 572//153 576//154 575//155 571//156 +f 200//157 199//157 195//157 196//157 +f 157//141 162//158 139//159 138//159 +f 681//160 680//161 676//140 677//139 +f 325//162 329//163 328//164 324//165 +f 1018//166 1023//167 1181//168 1017//168 +f 246//133 245//134 239//135 240//133 +f 759//169 763//170 762//171 758//172 +f 195//138 199//138 198//173 194//174 +f 206//175 205//176 200//176 201//177 +f 341//178 340//179 334//180 335//181 +f 286//50 291//49 129//182 1138//183 +f 892//184 896//55 1164//58 1163//185 +f 560//186 559//187 555//43 556//188 +f 231//189 236//190 149//191 148//192 +f 787//193 786//194 780//195 781//196 +f 683//197 688//5 687//198 682//199 +f 618//200 623//201 622//106 617//23 +f 876//202 875//203 870//204 871//205 +f 99//133 100//133 225//206 220//134 +f 862//207 861//123 856//208 857//209 +f 429//210 434//211 433//212 1134//212 +f 692//213 691//213 686//10 687//10 +f 230//214 235//214 234//215 229//216 +f 707//217 706//217 700//218 701//218 +f 718//219 717//219 712//220 713//220 +f 227//221 226//222 222//223 223//221 +f 816//224 815//224 889//225 890//225 +f 514//118 513//118 509//119 510//119 +f 349//226 353//227 1141//228 1125//229 +f 246//230 252//230 251//231 245//232 +f 261//233 267//234 266//235 260//235 +f 721//30 720//236 716//237 717//238 +f 788//239 787//193 781//196 782//240 +f 864//241 870//204 869//242 863//243 +f 378//29 1142//28 1130//244 374//245 +f 637//246 641//247 125//248 1194//248 +f 986//59 14//79 990//82 985//60 +f 168//138 172//138 171//249 167//250 +f 516//251 515//252 511//253 39//254 +f 986//59 985//60 981//61 13//62 +f 315//255 314//255 306//256 307//256 +f 845//257 844//257 839//258 840//258 +f 66//259 299//260 298//93 294//92 +f 264//261 263//262 257//262 258//263 +f 851//264 850//265 845//266 846//267 +f 705//268 704//269 1209//270 699//271 +f 455//10 454//10 449//11 450//11 +f 975//137 974//137 969//272 970//272 +f 345//273 350//274 349//226 344//275 +f 1078//51 1077//54 1072//276 1073//160 +f 442//232 272//277 271//278 441//279 +f 1118//280 1117//281 1112//282 1113//280 +f 397//166 402//167 1144//168 1143//168 +f 797//283 796//284 791//285 792//286 +f 785//287 784//288 778//289 779//290 +f 809//132 730//131 104//291 808//292 +f 762//293 761//293 757//294 758//294 +f 531//260 537//295 536//296 530//93 +f 65//251 290//297 289//298 285//299 +f 237//300 243//301 242//302 236//190 +f 855//303 859//304 858//305 854//306 +f 301//83 300//84 295//85 296//307 +f 614//29 613//28 608//244 609//245 +f 682//11 681//11 677//308 678//308 +f 674//91 673//91 668//91 669//91 +f 266//309 265//309 259//309 260//309 +f 733//310 732//311 811//312 812//313 +f 823//314 828//315 827//316 822//317 +f 262//318 268//318 267//234 261//233 +f 101//319 256//320 251//321 252//319 +f 358//322 362//37 1127//36 1126//323 +f 969//274 974//324 973//227 968//226 +f 795//325 794//326 789//327 790//328 +f 310//329 313//330 312//331 1121//332 +f 515//252 521//298 520//333 514//334 +f 1034//335 1033//335 1028//335 1029//335 +f 886//111 885//110 880//336 37//337 +f 277//338 276//339 271//278 272//277 +f 153//30 152//340 264//341 265//30 +f 286//50 1138//183 1199//342 282//343 +f 279//344 283//345 282//343 278//56 +f 746//346 745//347 741//348 742//349 +f 430//350 429//351 425//352 426//350 +f 43//353 563//354 562//163 558//355 +f 953//356 952//356 947//356 948//356 +f 839//357 844//358 843//359 838//360 +f 288//361 287//361 283//118 284//118 +f 891//109 817//362 816//363 890//364 +f 824//365 110//366 818//367 819//368 +f 734//369 733//310 812//313 813//370 +f 898//371 897//371 893//372 894//372 +f 238//373 237//373 232//373 233//373 +f 585//13 584//374 579//375 580//14 +f 929//329 931//330 1211//331 1171//332 +f 493//376 492//377 486//378 487//376 +f 306//379 314//380 313//330 310//329 +f 568//381 44//381 572//382 567//383 +f 306//379 310//329 305//384 +f 468//385 467//271 463//386 464//387 +f 306//388 305//389 300//84 301//83 +f 303//296 308//390 307//391 302//392 +f 327//393 331//393 330//394 326//395 +f 901//344 906//345 905//396 900//56 +f 1110//96 1111//96 1116//96 1115//96 +f 567//383 572//382 571//397 566//397 +f 260//42 259//42 254//42 255//42 +f 779//290 778//289 772//398 773//399 +f 92//230 174//232 170//400 91//230 +f 101//152 262//152 261//401 256//402 +f 361//61 360//403 355//404 356//150 +f 160//405 159//406 154//406 155//407 +f 551//408 550//46 545//330 546//380 +f 336//335 335//335 331//335 332//335 +f 667//9 672//8 1155//409 1161//409 +f 356//150 355//404 351//374 352//13 +f 268//152 156//152 155//410 267//411 +f 632//31 1158//97 1153//64 628//32 +f 1005//412 1009//413 1008//63 1004//414 +f 702//415 708//416 707//417 701//418 +f 231//189 148//192 147//419 226//420 +f 355//137 354//137 350//272 351//272 +f 51//421 627//422 622//106 623//201 +f 829//423 833//424 112//425 111//426 +f 443//133 442//134 437//135 438//133 +f 712//427 717//238 716//237 711//428 +f 700//385 699//271 695//386 696//387 +f 346//429 345//429 341//430 342//430 +f 365//60 369//82 368//127 364//431 +f 428//432 432//215 431//433 427//433 +f 539//379 546//380 545//330 542//329 +f 333//434 332//435 328//435 329//436 +f 992//437 991//438 987//34 988//439 +f 893//440 897//441 896//55 892//184 +f 389//63 393//32 1132//64 1131//65 +f 347//14 346//375 342//155 343//154 +f 1016//442 1015//443 1011//422 18//421 +f 305//389 304//444 1120//445 300//84 +f 338//446 73//447 343//154 337//153 +f 44//446 45//447 576//154 572//153 +f 256//402 261//401 260//74 255//74 +f 467//271 1136//270 1135//448 463//386 +f 297//449 296//449 292//450 293//450 +f 353//227 358//322 1126//323 1141//228 +f 643//451 642//451 638//451 639//451 +f 556//188 555//43 550//46 551//408 +f 425//352 429//351 1134//419 133//419 +f 46//12 585//13 580//14 581//15 +f 20//452 1051//452 1050//453 1045//454 +f 516//251 40//297 521//298 515//252 +f 994//81 998//22 997//25 993//455 +f 214//456 218//456 217//67 213//457 +f 404//458 399//458 400//459 405//460 +f 395//461 394//461 390//462 391//462 +f 213//17 212//463 145//463 208//18 +f 234//215 233//464 228//464 229//216 +f 658//454 662//453 661//465 657//465 +f 371//466 370//438 366//34 367//467 +f 587//324 592//468 591//322 586//227 +f 778//289 777//469 771//470 772//398 +f 948//471 947//471 942//472 943//472 +f 239//473 238//474 233//474 234//475 +f 699//271 1209//270 694//448 695//386 +f 1004//414 1179//27 1178//476 1000//29 +f 810//129 809//132 803//477 804//478 +f 1092//479 1091//271 1086//386 1087//387 +f 498//440 497//184 672//249 673//138 +f 414//480 413//397 409//397 410//481 +f 1043//7 1042//482 1037//8 1038//7 +f 633//483 638//483 637//484 632//485 +f 765//486 769//487 108//488 764//489 +f 79//490 382//200 381//23 377//22 +f 589//150 588//404 584//374 585//13 +f 448//161 1147//491 135//492 444//140 +f 964//493 968//226 1216//494 1174//495 +f 722//42 721//42 717//219 718//219 +f 281//253 280//496 276//339 277//338 +f 946//395 951//394 1172//497 1214//497 +f 679//498 683//197 682//199 678//499 +f 226//222 147//500 221//500 222//223 +f 995//501 1219//502 1177//503 991//438 +f 822//317 827//316 826//504 821//505 +f 686//51 691//52 690//53 685//54 +f 486//378 492//377 491//506 137//506 +f 830//507 834//508 833//424 829//423 +f 669//373 668//373 664//373 665//373 +f 908//252 907//334 902//496 903//253 +f 915//450 914//450 910//361 911//361 +f 298//93 303//296 302//392 297//94 +f 820//509 819//368 814//115 815//114 +f 459//52 464//387 463//386 458//53 +f 725//377 1162//506 127//506 720//378 +f 656//7 655//482 650//8 651//7 +f 509//344 513//345 512//343 508//56 +f 937//510 936//46 931//330 932//380 +f 573//179 577//493 1205//495 1191//511 +f 377//22 381//23 380//24 376//25 +f 460//213 459//213 454//10 455//10 +f 586//227 591//322 122//323 121//228 +f 466//103 465//512 460//513 461//104 +f 597//514 596//514 592//136 593//136 +f 430//91 426//91 427//91 431//91 +f 1159//515 1158//515 632//485 637//484 1194//515 +f 295//85 130//516 129//182 291//49 +f 803//477 802//517 796//284 797//283 +f 653//134 658//518 657//519 652//519 +f 924//296 928//390 927//391 923//392 +f 269//184 274//520 1119//521 1137//185 +f 738//21 737//21 731//522 732//522 +f 1048//221 1047//222 1042//223 1043//221 +f 607//81 612//22 611//25 606//455 +f 342//430 341//430 335//523 336//523 +f 3//251 4//524 912//298 908//252 +f 722//525 723//282 728//281 727//525 +f 271//372 270//372 440//157 441//157 +f 483//219 482//219 477//220 478//220 +f 631//443 635//526 634//74 630//527 +f 430//528 435//528 434//211 429//210 +f 1041//152 1040//72 1035//72 1036//152 +f 492//141 444//140 135//492 491//159 +f 783//529 782//529 776//530 777//530 +f 62//112 724//152 723//531 719//38 +f 189//31 1200//97 142//97 184//88 +f 90//230 165//532 160//533 161//230 +f 187//534 192//526 191//74 186//74 +f 453//54 136//535 1147//491 448//161 +f 32//536 823//314 822//317 817//362 +f 81//442 401//152 400//526 396//443 +f 415//381 414//480 410//481 82//381 +f 321//537 325//162 324//165 320//538 +f 977//151 976//150 971//13 972//12 +f 484//38 489//531 488//74 483//39 +f 232//91 227//91 228//91 233//91 +f 836//147 835//539 831//540 832//148 +f 77//79 78//80 373//81 369//82 +f 287//541 286//50 282//343 283//345 +f 487//30 486//236 481//237 482//238 +f 526//259 525//92 521//298 40//297 +f 730//131 736//542 735//543 104//291 +f 1115//376 1114//377 1109//378 1110//376 +f 693//104 692//513 687//198 688//5 +f 990//82 994//81 993//455 989//544 +f 715//113 714//41 708//416 709//545 +f 548//125 553//537 552//538 547//546 +f 925//384 929//329 1171//332 1170//547 +f 507//548 506//338 500//277 501//549 +f 744//550 748//77 747//551 743//552 +f 10//553 954//434 949//436 950//553 +f 838//360 843//359 114//554 113//555 +f 472//556 471//268 467//271 468//385 +f 1065//232 895//277 894//278 1064//279 +f 396//443 400//526 399//74 395//527 +f 280//119 279//119 275//371 276//371 +f 773//399 772//398 768//557 29//558 +f 851//264 855//303 854//306 850//265 +f 1053//559 1052//351 1047//352 1048//559 +f 588//137 587//137 583//272 584//272 +f 1011//422 1010//560 1006//107 1007//561 +f 480//113 479//41 474//416 475//545 +f 83//452 84//452 428//453 424//454 +f 909//50 913//49 1167//562 1166//563 +f 925//564 1170//444 1169//565 921//84 +f 442//134 441//519 436//519 437//135 +f 960//178 959//179 955//180 956//181 +f 660//221 659//222 655//223 656//221 +f 946//566 1214//567 1213//44 941//43 +f 684//3 689//568 688//5 683//197 +f 397//31 1143//97 1132//64 393//32 +f 996//569 995//501 991//438 992//437 +f 547//255 546//255 539//256 540//256 +f 384//26 389//63 1131//65 383//27 +f 568//553 567//434 562//436 563//553 +f 538//564 1187//444 532//445 533//84 +f 7//295 8//570 928//390 924//296 +f 714//41 713//40 707//417 708//416 +f 508//56 512//343 120//342 1186//57 +f 373//81 377//22 376//25 372//126 +f 1020//42 1019//42 1013//461 1014//461 +f 567//434 566//435 561//435 562//436 +f 583//274 587//324 586//227 582//226 +f 88//571 475//545 474//416 470//415 +f 391//462 390//462 385//572 386//572 +f 364//514 363//514 359//136 360//136 +f 566//356 565//356 560//356 561//356 +f 719//38 723//531 722//74 718//39 +f 788//239 793//573 792//286 787//193 +f 621//572 620//572 615//574 616//574 +f 1108//38 1107//39 1102//40 1103//41 +f 334//575 1139//576 131//576 330//577 +f 1045//454 1050//453 1049//465 1044//465 +f 428//432 84//214 85//214 432//215 +f 539//388 538//564 533//84 534//83 +f 299//260 67//295 303//296 298//93 +f 539//379 542//329 538//384 +f 830//507 829//423 824//365 825//578 +f 87//102 88//571 470//415 466//103 +f 548//125 547//546 540//579 543//69 +f 197//580 196//581 191//581 192//582 +f 536//296 541//583 540//391 535//392 +f 638//584 642//584 641//247 637//246 +f 174//232 173//279 169//279 170//400 +f 99//152 220//72 216//585 98//152 +f 916//92 915//95 911//586 912//298 +f 58//230 501//549 500//277 675//232 +f 580//14 579//375 575//155 576//154 +f 525//92 524//95 520//333 521//298 +f 579//429 578//429 574//430 575//430 +f 236//190 242//302 241//587 149//191 +f 399//42 398//42 394//461 395//461 +f 625//413 629//588 628//32 624//63 +f 678//308 677//308 726//157 727//157 +f 631//443 630//527 626//560 627//422 +f 419//134 424//206 423//519 418//519 +f 158//138 163//138 162//158 157//141 +f 529//449 528//449 523//450 524//450 +f 542//329 545//330 544//331 1188//332 +f 754//76 759//169 758//172 753//589 +f 538//384 542//329 1188//332 1187//547 +f 1102//220 1101//220 1096//217 1097//217 +f 974//324 979//468 978//322 973//227 +f 327//590 326//566 322//43 323//188 +f 48//59 603//79 602//82 598//60 +f 604//438 123//503 1157//35 599//34 +f 270//440 269//184 439//249 440//138 +f 461//104 460//513 455//198 456//5 +f 524//450 523//450 519//361 520//361 +f 582//226 586//227 121//228 1192//229 +f 540//591 539//591 534//592 535//592 +f 811//593 810//593 804//594 805//594 +f 222//595 221//409 146//409 217//8 +f 174//480 179//480 178//397 173//397 +f 553//537 558//355 557//165 552//538 +f 465//596 464//596 459//213 460//213 +f 1042//482 102//409 1223//409 1037//8 +f 594//61 593//403 588//404 589//150 +f 664//91 660//91 661//91 665//91 +f 868//597 867//120 861//123 862//207 +f 97//598 98//598 216//599 211//600 +f 1015//443 1014//601 1010//560 1011//422 +f 28//602 29//558 768//557 763//170 +f 471//268 1149//269 1136//270 467//271 +f 49//80 50//490 612//22 607//81 +f 446//308 445//308 493//157 494//157 +f 960//178 965//603 964//493 959//179 +f 61//102 698//103 693//104 60//105 +f 827//316 832//148 831//540 826//504 +f 591//322 595//37 1152//36 122//323 +f 94//604 188//604 187//605 183//606 +f 48//59 598//60 594//61 47//62 +f 605//437 604//438 599//34 600//467 +f 804//478 803//477 797//283 798//607 +f 993//608 992//608 988//609 989//609 +f 1058//7 1063//7 1062//8 1057//9 +f 732//522 731//522 810//593 811//593 +f 615//610 614//29 609//245 610//569 +f 616//574 615//574 610//611 611//611 +f 204//138 209//138 208//612 203//613 +f 1002//574 1001//574 996//611 997//611 +f 1085//105 1084//104 1080//5 22//4 +f 639//614 638//614 633//614 634//614 +f 326//395 330//394 131//497 1124//497 +f 978//322 982//37 1218//36 1175//323 +f 328//471 327//471 323//615 324//615 +f 1091//271 1184//270 1228//448 1086//386 +f 893//440 892//184 1062//249 1063//138 +f 3//251 908//252 903//253 904//254 +f 767//616 766//616 761//293 762//293 +f 64//254 281//253 277//338 63//548 +f 713//220 712//220 706//217 707//217 +f 640//460 639//458 634//458 635//459 +f 794//617 793//617 788//618 789//618 +f 1077//54 1081//53 1227//619 1183//535 +f 959//179 964//493 1174//495 1215//511 +f 341//178 345//273 344//275 340//179 +f 967//14 966//620 961//155 962//154 +f 619//26 124//27 613//28 614//29 +f 817//362 822//317 821//505 816//363 +f 165//532 164//279 159//279 160//533 +f 97//230 211//621 206//622 207//230 +f 828//315 33//149 832//148 827//316 +f 367//467 366//34 362//37 363//623 +f 58//133 675//134 670//135 671//133 +f 506//338 505//339 499//278 500//277 +f 398//30 397//31 393//32 394//588 +f 1030//624 1029//625 1025//625 1026//626 +f 847//627 846//267 841//628 842//629 +f 654//152 653//72 648//72 649//152 +f 979//468 983//623 982//37 978//322 +f 646//456 651//456 650//67 645//67 +f 1056//214 1055//215 1050//432 1051//214 +f 1066//230 1//549 895//277 1065//232 +f 1073//160 1072//276 1067//140 1068//139 +f 86//630 452//3 451//197 447//498 +f 1111//525 1112//282 1117//281 1116//525 +f 661//19 660//19 656//19 657//19 +f 560//186 565//393 564//394 559//187 +f 598//60 602//82 601//127 597//431 +f 497//184 496//185 1155//159 672//249 +f 436//373 435//373 430//373 431//373 +f 479//41 478//40 473//417 474//416 +f 1101//427 1106//238 1105//237 1100//428 +f 921//84 1169//565 1168//631 917//85 +f 276//371 275//371 270//372 271//372 +f 649//381 648//480 644//481 54//381 +f 418//42 417//42 412//42 413//42 +f 675//134 674//519 669//519 670//135 +f 671//632 670//473 666//475 57//632 +f 685//54 1208//535 1207//491 680//161 +f 55//452 56//452 662//453 658//454 +f 826//633 825//633 820//634 821//634 +f 60//105 693//104 688//5 689//568 +f 61//102 703//571 702//415 698//103 +f 14//79 15//80 994//81 990//82 +f 997//611 996//611 992//608 993//608 +f 69//635 70//353 325//162 321//537 +f 535//592 534//592 528//449 529//449 +f 664//528 668//528 667//211 663//210 +f 879//636 878//636 873//637 874//637 +f 408//638 412//638 411//639 407//640 +f 210//157 209//157 204//157 205//157 +f 1082//52 1087//387 1086//386 1081//53 +f 354//324 359//468 358//322 353//227 +f 670//473 669//474 665//474 666//475 +f 690//53 695//386 694//448 1197//619 +f 1010//462 1009//462 1005//572 1006//572 +f 62//112 719//38 714//41 715//113 +f 422//7 421//641 416//8 417//7 +f 518//50 522//49 1201//182 517//183 +f 317//124 69//635 321//537 316//125 +f 486//236 137//97 1151//642 481//237 +f 59//630 679//498 728//533 729//230 +f 1089//103 1094//415 1093//643 1088//512 +f 249//644 254//644 253//645 248//646 +f 352//13 351//374 346//375 347//14 +f 875//203 874//647 869//242 870//204 +f 1104//113 1103//41 1098//416 1099//545 +f 63//548 277//338 272//277 273//549 +f 167//250 171//249 140//159 166//159 +f 178//335 177//335 172//335 173//335 +f 23//571 1099//545 1098//416 1094//415 +f 259//30 258//648 253//649 254//30 +f 198//650 203//651 144//652 143//652 +f 488//42 487//42 482//219 483//219 +f 223//7 222//595 217//8 218//7 +f 497//184 503//520 502//521 496//185 +f 87//102 466//103 461//104 462//105 +f 50//490 618//200 617//23 612//22 +f 76//59 77//79 369//82 365//60 +f 385//412 390//413 389//63 384//26 +f 679//498 678//499 727//279 728//533 +f 899//653 898//339 894//278 895//277 +f 641//640 645//639 1206//576 125//576 +f 805//594 804//594 798//654 799//654 +f 569//575 1190//576 1204//576 564//577 +f 505//371 504//371 498//372 499//372 +f 701//218 700//218 696//596 697//596 +f 877//145 882//144 881//655 119//656 +f 528//307 527//85 522//49 523//48 +f 202//230 201//657 197//658 96//230 +f 873//659 878//142 877//145 872//660 +f 1040//134 1045//206 1044//519 1039//519 +f 485//112 484//38 479//41 480//113 +f 554//635 43//353 558//355 553//537 +f 335//638 334//575 330//577 331//638 +f 1111//42 1110//42 1106//219 1107//219 +f 396//443 395//527 391//560 392//422 +f 880//336 879//661 874//647 875//203 +f 382//200 388//201 387//106 381//23 +f 636//662 53//662 640//460 635//459 +f 25//663 739//664 733//310 734//369 +f 220//72 219//74 215//74 216//585 +f 550//46 1156//665 544//331 545//330 +f 814//115 109//666 887//667 888//116 +f 760//668 107//669 106//670 756//671 +f 555//43 1189//44 1156//665 550//46 +f 1040//72 1039//74 1034//74 1035//72 +f 319//672 318//46 313//330 314//380 +f 609//245 608//244 123//503 604//438 +f 942//188 941//43 936//46 937//510 +f 744//550 743//552 738//673 739//664 +f 765//486 764//489 107//669 760//668 +f 1114//377 103//506 1231//506 1109//378 +f 711//428 716//237 1198//642 710//674 +f 776//675 782//240 781//196 775//676 +f 754//76 753//589 747//551 748//77 +f 10//381 11//381 958//382 954//383 +f 453//54 458//53 1148//619 136//535 +f 1003//23 1007//561 1006//107 1002//24 +f 777//530 776//530 770//677 771//677 +f 1083//213 1082//213 1078//10 1079//10 +f 784//288 783//678 777//469 778//289 +f 1052//210 1057//211 1182//212 1224//212 +f 755//75 27//679 759//169 754//76 +f 1077//54 1183//535 1226//491 1072//276 +f 664//350 663//351 659//420 660//350 +f 503//520 508//56 1186//57 502//521 +f 157//680 138//681 151//681 152//682 +f 770//683 776//675 775//676 769//487 +f 920//93 924//296 923//392 919//684 +f 578//273 583//274 582//226 577//493 +f 65//251 285//299 281//253 64//254 +f 515//252 514//334 510//496 511//253 +f 976//150 975//404 970//374 971//13 +f 275//441 279//344 278//56 274//520 +f 571//335 570//335 565//335 566//335 +f 1075//6 1080//5 1079//198 1074//199 +f 191//42 190//42 185//42 186//42 +f 865//685 871//205 870//204 864//241 +f 240//632 239//473 234//475 235//632 +f 357//151 356//150 352//13 74//12 +f 220//134 225//206 224//519 219//519 +f 882//144 888//116 887//667 881//655 +f 158//686 157//680 152//682 153//686 +f 1089//103 1088//512 1083//513 1084//104 +f 787//193 792//286 791//285 786//194 +f 26//687 744//550 739//664 25//663 +f 350//274 354//324 353//227 349//226 +f 784//288 790//328 789//327 783//678 +f 232//688 231//189 226//420 227//689 +f 798//607 797//283 792//286 793//573 +f 775//676 781//196 780//195 774//690 +f 577//493 582//226 1192//229 1205//495 +f 324//615 323//615 319//691 320//691 +f 359//468 363//623 362//37 358//322 +f 477//427 482//238 481//237 476//692 +f 801//693 807//694 806//695 800//696 +f 163//697 168//697 167//698 162//699 +f 857//209 856//208 852//99 853//98 +f 527//85 1202//516 1201//182 522//49 +f 504//441 509//344 508//56 503//520 +f 447//498 446//499 494//279 495//533 +f 450//11 449//11 445//308 446//308 +f 35//700 36//701 859//304 855//303 +f 1114//141 1067//140 1225//492 103//159 +f 100//452 230//452 229//702 225//454 +f 570//638 569//575 564//577 565//638 +f 757//703 756//671 751//704 752//705 +f 918//86 917//85 913//49 914//48 +f 645//67 650//67 1160//706 1206//706 +f 520//361 519//361 513//118 514//118 +f 211//600 216//599 215//707 210//707 +f 471//268 476//692 1150//708 1149//269 +f 169//709 168//709 163//709 164//709 +f 819//368 818//367 109//666 814//115 +f 908//252 912//298 911//586 907//334 +f 663//210 667//211 1161//212 126//212 +f 374//245 1130//244 1129//503 370//438 +f 859//304 864//241 863//243 858//305 +f 78//80 79//490 377//22 373//81 +f 874//637 873//637 868//89 869//89 +f 294//92 298//93 297//94 293//95 +f 72//381 338//381 337//382 333//383 +f 850//710 849//710 844//257 845//257 +f 574//178 578//273 577//493 573//179 +f 1074//11 1073//11 1068//308 1069//308 +f 903//253 902//496 898//339 899//653 +f 203//613 208//612 145//159 144//159 +f 38//108 32//536 817//362 891//109 +f 533//84 532//445 1202//516 527//85 +f 34//711 35//700 855//303 851//264 +f 316//125 315//546 307//579 311//69 +f 274//520 278//56 128//57 1119//521 +f 182//42 181//42 177//42 178//42 +f 852//99 116//712 115//713 848//100 +f 390//413 394//588 393//32 389//63 +f 766//714 770//683 769//487 765//486 +f 75//62 361//61 356//150 357//151 +f 323//188 322//43 318//46 319//672 +f 923//592 922//592 918//449 919//449 +f 519//715 518//50 512//343 513//345 +f 872//660 877//145 119//656 118//716 +f 927//591 926//591 922//592 923//592 +f 1009//413 1013//33 1012//32 1008//63 +f 449//160 448//161 444//140 445//139 +f 916//92 920//93 919//684 915//95 +f 675//232 500//277 499//278 674//279 +f 945//353 950//354 949//163 944//355 +f 883//143 889//117 888//116 882//144 +f 1000//29 1178//476 1219//502 995//501 +f 854//717 853//717 849//710 850//710 +f 907//118 906//118 901//119 902//119 +f 519//715 523//48 522//49 518//50 +f 900//56 905//396 1165//342 1210//57 +f 1015//443 1021//526 1020//74 1014//601 +f 904//254 903//253 899//653 2//548 +f 985//60 990//82 989//544 984//431 +f 12//15 967//14 962//154 963//447 +f 5//718 6//260 920//93 916//92 +f 809//132 808//292 802//517 803//477 +f 469//218 468//218 464//596 465//596 +f 278//56 282//343 1199//342 128//57 +f 720//236 127//97 1198//642 716//237 +f 386//572 385//572 379//574 380//574 +f 225//454 229//702 228//465 224//465 +f 939//537 944//355 943//165 938//719 +f 795//325 800//696 799//720 794//326 +f 248//721 247//159 241//587 242//302 +f 919//449 918//449 914//450 915//450 +f 1023//167 1018//166 1019//722 1024//722 +f 785//287 30//723 790//328 784//288 +f 1020//458 1021//459 1026//460 1025//458 +f 926//379 929//329 925//384 +f 305//384 310//329 1121//332 304//547 +f 934//125 933//546 927//579 930//69 +f 426//221 425//222 421//223 422//221 +f 926//388 925//564 921//84 922//83 +f 1006//572 1005//572 1001//574 1002//574 +f 1064//91 1063//91 1058//91 1059//91 +f 902//119 901//119 897//371 898//371 +f 601//609 600//609 596//514 597//514 +f 835//724 834//724 830//725 831//725 +f 1019//614 1020//614 1025//614 1024//614 +f 954//383 958//382 957//397 953//397 +f 829//423 111//426 110//366 824//365 +f 86//630 447//498 495//533 89//230 +f 943//472 942//472 937//726 938//726 +f 6//260 7//295 924//296 920//93 +f 610//569 609//245 604//438 605//437 +f 940//727 945//353 944//355 939//537 +f 1070//498 1075//6 1074//199 1069//499 +f 947//590 946//566 941//43 942//188 +f 745//347 751//704 750//728 105//729 +f 840//258 839//258 834//724 835//724 +f 987//34 1176//35 1218//36 982//37 +f 769//487 775//676 774//690 108//488 +f 372//608 371//608 367//609 368//609 +f 80//421 392//422 387//106 388//201 +f 5//718 916//92 912//298 4//524 +f 644//624 643//625 639//625 640//626 +f 980//136 979//136 974//137 975//137 +f 626//462 625//462 620//572 621//572 +f 909//50 1166//563 1165//342 905//396 +f 935//124 940//727 939//537 934//125 +f 1088//596 1087//596 1082//213 1083//213 +f 195//730 190//730 191//730 196//730 +f 619//26 624//63 1193//65 124//27 +f 612//22 617//23 616//24 611//25 +f 971//13 970//374 966//620 967//14 +f 737//731 742//349 741//348 736//542 +f 82//732 410//624 405//626 406//732 +f 404//614 403//614 398//614 399//614 +f 989//609 988//609 983//514 984//514 +f 1023//246 1027//247 1221//248 1181//248 +f 74//12 352//13 347//14 348//15 +f 59//630 684//3 683//197 679//498 +f 573//179 1191//511 1190//733 569//180 +f 385//412 384//26 378//29 379//610 +f 620//412 625//413 624//63 619//26 +f 194//174 198//173 143//159 193//159 +f 890//225 889//225 883//734 884//734 +f 197//580 192//582 95//735 96//735 +f 188//152 95//152 192//526 187//534 +f 189//736 194//737 193//738 1200//738 +f 723//282 724//280 729//280 728//281 +f 574//178 573//179 569//180 570//181 +f 1001//610 1000//29 995//501 996//569 +f 16//739 17//201 1007//561 1003//23 +f 590//151 589//150 585//13 46//12 +f 1035//480 1034//397 1029//397 1030//481 +f 917//85 1168//631 1167//562 913//49 +f 376//611 375//611 371//608 372//608 +f 438//632 437//473 432//475 85//632 +f 1004//414 1008//63 1180//65 1179//27 +f 470//415 474//416 473//417 469//740 +f 258//648 257//97 150//97 253//649 +f 981//61 980//403 975//404 976//150 +f 991//438 1177//503 1176//35 987//34 +f 1041//133 20//133 1045//206 1040//134 +f 697//596 696//596 691//213 692//213 +f 294//92 293//95 288//741 289//298 +f 379//610 378//29 374//245 375//569 +f 947//393 952//393 951//394 946//395 +f 698//103 697//512 692//513 693//104 +f 984//514 983//514 979//136 980//136 +f 317//124 316//125 311//69 68//68 +f 66//259 294//92 289//298 290//297 +f 462//105 461//104 456//5 457//568 +f 1079//10 1078//10 1073//11 1074//11 +f 293//450 292//450 287//361 288//361 +f 332//356 331//356 327//356 328//356 +f 427//19 426//19 422//19 423//19 +f 821//634 820//634 815//224 816//224 +f 70//353 71//742 329//163 325//162 +f 606//608 605//608 600//609 601//609 +f 1039//42 1038//42 1033//42 1034//42 +f 1053//528 1058//528 1057//211 1052//210 +f 81//442 396//443 392//422 80//421 +f 1047//222 1046//500 102//500 1042//223 +f 1014//461 1013//461 1009//462 1010//462 +f 1031//732 1030//624 1026//626 19//732 +f 934//125 939//537 938//719 933//546 +f 1028//638 1033//638 1032//639 1027//640 +f 348//15 347//14 343//154 73//447 +f 425//222 133//500 132//500 421//223 +f 884//734 883//734 878//636 879//636 +f 1038//456 1037//67 1032//67 1033//456 +f 719//38 718//39 713//40 714//41 +f 575//430 574//430 570//523 571//523 +f 957//335 956//335 952//335 953//335 +f 219//42 218//42 214//42 215//42 +f 706//556 705//268 699//271 700//385 +f 322//43 1123//44 1122//665 318//46 +f 685//54 690//53 1197//619 1208//535 +f 437//473 436//474 431//474 432//475 +f 52//442 631//443 627//422 51//421 +f 255//743 254//743 249//743 250//743 +f 867//120 872//660 118//716 866//121 +f 185//744 184//745 180//746 181//744 +f 447//498 451//197 450//199 446//499 +f 910//47 909//50 905//396 906//345 +f 375//569 374//245 370//438 371//466 +f 756//671 106//670 750//728 751//704 +f 1037//67 1223//97 1222//97 1032//67 +f 72//553 333//434 329//436 71//553 +f 789//618 788//618 782//529 783//529 +f 1081//53 1086//386 1228//448 1227//619 +f 421//641 132//409 1146//409 416//8 +f 894//372 893//372 1063//157 1064//157 +f 771//677 770//677 766//616 767//616 +f 454//51 453//54 448//161 449//160 +f 705//268 711//428 710//674 704//269 +f 721//376 726//376 725//377 720//378 +f 552//691 551//691 546//255 547//255 +f 478//220 477//220 472//217 473//217 +f 747//2 746//2 742//20 743//20 +f 67//295 309//570 308//390 303//296 +f 1065//134 1064//519 1059//519 1060//135 +f 806//695 812//313 811//312 805//747 +f 861//123 860//122 117//748 856//208 +f 745//347 105//729 740//749 741//348 +f 663//351 126//419 1195//419 659//420 +f 1093//218 1092//218 1087//596 1088//596 +f 1107//219 1106//219 1101//220 1102//220 +f 499//372 498//372 673//157 674//157 +f 807//694 813//370 812//313 806//695 +f 368//609 367//609 363//514 364//514 +f 162//699 167//698 166//750 139//750 +f 1059//373 1058//373 1053//373 1054//373 +f 458//53 463//386 1135//448 1148//619 +f 476//692 481//237 1151//642 1150//708 +f 177//638 176//639 171//639 172//638 +f 451//197 456//5 455//198 450//199 +f 344//275 349//226 1125//229 1140//495 +f 624//63 628//32 1153//64 1193//65 +f 9//68 930//69 928//70 8//71 +f 892//184 1163//185 1061//159 1062//249 +f 419//72 418//74 413//74 414//72 +f 52//442 636//152 635//526 631//443 +f 244//91 243//91 237//91 238//91 +f 472//556 477//427 476//692 471//268 +f 1094//415 1098//416 1097//417 1093//643 +f 409//451 408//451 403//451 404//451 +f 296//307 295//85 291//49 292//48 +f 31//751 795//325 790//328 30//723 +f 36//701 865//685 864//241 859//304 +f 1100//428 1105//237 1185//642 1230//708 +f 561//471 560//471 556//615 557//615 +f 152//340 151//97 263//97 264//341 +f 495//281 489//282 490//280 89//280 +f 207//752 206//175 201//177 202//752 +f 1110//30 1109//236 1105//237 1106//238 +f 739//664 738//673 732//311 733//310 +f 1054//91 1053//91 1048//91 1049//91 +f 655//482 1154//409 1160//409 650//8 +f 959//179 1215//511 1173//733 955//180 +f 530//93 536//296 535//392 529//94 +f 441//91 440//91 435//91 436//91 +f 833//424 838//360 113//555 112//425 +f 156//753 161//753 160//405 155//407 +f 493//96 487//96 488//96 494//96 +f 652//42 651//42 646//42 647//42 +f 183//606 187//605 186//754 182//754 +f 473//217 472//217 468//218 469//218 +f 250//157 249//157 243//157 244//157 +f 617//23 622//106 621//107 616//24 +f 1060//473 1059//474 1054//474 1055//475 +f 825//578 824//365 819//368 820//509 +f 1069//308 1068//308 1115//157 1116//157 +f 698//103 702//415 701//418 697//512 +f 410//624 409//625 404//625 405//626 +f 1090//102 23//571 1094//415 1089//103 +f 642//638 646//638 645//639 641//640 +f 1096//556 1101//427 1100//428 1095//268 +f 654//133 55//133 658//518 653//134 +f 211//621 210//279 205//279 206//622 +f 2//548 899//653 895//277 1//549 +f 558//355 562//163 561//164 557//165 +f 232//688 237//300 236//190 231//189 +f 634//42 633//42 629//461 630//461 +f 285//299 289//298 288//741 284//334 +f 772//398 771//470 767//755 768//557 +f 31//751 801//693 800//696 795//325 +f 307//591 306//591 301//592 302//592 +f 39//254 511//253 506//338 507//548 +f 557//615 556//615 551//691 552//691 +f 194//737 189//736 190//756 195//756 +f 1027//640 1032//639 1222//576 1221//576 +f 201//657 200//279 196//279 197//658 +f 199//757 204//757 203//651 198//650 +f 1005//412 1004//414 1000//29 1001//610 +f 831//725 830//725 825//633 826//633 +f 485//112 490//152 489//531 484//38 +f 868//597 873//659 872//660 867//120 +f 392//422 391//560 386//107 387//106 +f 630//461 629//461 625//462 626//462 +f 1071//630 1076//3 1075//6 1070//498 +f 1096//556 1095//268 1091//271 1092//479 +f 1103//41 1102//40 1097//417 1098//416 +f 666//215 665//433 661//433 662//432 +f 248//646 253//645 150//758 247//758 +f 308//70 311//69 307//579 +f 559//187 1203//759 1189//44 555//43 +f 340//179 344//275 1140//495 339//511 +f 736//542 741//348 740//749 735//543 +f 541//70 543//69 540//579 +f 171//639 176//639 175//576 140//576 +f 928//70 930//69 927//579 +f 965//603 969//274 968//226 964//493 +f 954//434 953//435 948//435 949//436 +f 1095//268 1100//428 1230//708 1229//269 +f 537//295 41//570 541//583 536//296 +f 846//267 845//266 840//760 841//628 +f 933//255 932//255 926//256 927//256 +f 245//134 244//519 238//519 239//135 +f 21//761 1060//473 1055//475 1056//761 +f 911//361 910//361 906//118 907//118 +f 417//456 416//67 411//67 412//456 +f 758//294 757//294 752//1 753//1 +f 300//84 1120//445 130//516 295//85 +f 1021//459 1022//662 19//662 1026//460 +f 648//480 647//397 643//397 644//481 +f 424//454 428//453 427//465 423//465 +f 1016//442 1022//152 1021//526 1015//443 +f 657//91 656//91 651//91 652//91 +f 405//460 400//459 401//662 406//662 +f 337//153 343//154 342//155 336//156 +f 13//62 981//61 976//150 977//151 +f 91//762 170//763 165//764 90//762 +f 27//679 28//602 763//170 759//169 +f 413//335 412//335 408//335 409//335 +f 985//60 984//431 980//403 981//61 +f 256//320 255//765 250//765 251//321 +f 559//187 564//394 1204//497 1203//759 +f 666//215 662//432 56//214 57//214 +f 1095//268 1229//269 1184//270 1091//271 +f 407//640 411//639 1145//576 1133//576 +f 265//766 264//261 258//263 259//766 +f 598//60 597//431 593//403 594//61 +f 970//272 969//272 965//429 966//429 +f 267//411 155//410 154//74 266//74 +f 452//3 457//568 456//5 451//197 +f 34//711 851//264 846//267 847//627 +f 403//584 408//584 407//247 402//246 +f 968//226 973//227 1217//228 1216//494 +f 510//119 509//119 504//371 505//371 +f 600//467 599//34 595//37 596//623 +f 380//574 379//574 375//611 376//611 +f 285//299 284//334 280//496 281//253 +f 599//34 1157//35 1152//36 595//37 +f 856//208 117//748 116//712 852//99 +f 402//246 407//247 1133//248 1144//248 +f 245//232 251//231 250//279 244//279 +f 326//566 1124//567 1123//44 322//43 +f 170//763 169//767 164//767 165//764 +f 360//136 359//136 354//137 355//137 +f 863//90 862//90 857//768 858//768 +f 434//9 439//8 134//409 433//409 +f 1049//19 1048//19 1043//19 1044//19 +f 703//571 709//545 708//416 702//415 +f 841//628 840//760 835//539 836//147 +f 316//125 321//537 320//538 315//546 +f 620//412 619//26 614//29 615//610 +f 184//745 142//769 141//769 180//746 +f 420//133 83//133 424//206 419//134 +f 1108//38 1112//531 1111//74 1107//39 +f 518//50 517//183 120//342 512//343 +f 173//157 172//157 168//157 169//157 +f 270//440 275//441 274//520 269//184 +f 966//429 965//429 960//770 961//770 +f 534//83 533//84 527//85 528//307 +f 761//771 760//668 756//671 757//703 +f 1057//9 1062//8 1061//409 1182//409 +f 186//772 185//772 181//772 182//772 +f 333//383 337//382 336//397 332//397 +f 691//52 696//387 695//386 690//53 +f 493//138 445//139 444//140 492//141 +f 763//170 768//557 767//755 762//171 +f 799//654 798//654 793//617 794//617 +f 18//421 1011//422 1007//561 17//201 +f 11//446 963//447 962//154 958//153 +f 800//696 806//695 805//747 799//720 +f 999//490 16//739 1003//23 998//22 +f 647//335 646//335 642//335 643//335 +f 581//15 580//14 576//154 45//447 +f 611//611 610//611 605//608 606//608 +f 213//457 217//67 146//706 212//706 +f 1115//138 1068//139 1067//140 1114//141 +f 1109//236 1231//97 1185//642 1105//237 +f 1097//217 1096//217 1092//218 1093//218 +f 1071//630 1070//498 1117//533 1118//230 +f 897//441 901//344 900//56 896//55 +f 54//732 644//624 640//626 53//732 +f 936//46 1212//45 1211//331 931//330 +f 955//575 1173//576 1172//576 951//577 +f 706//556 712//427 711//428 705//268 +f 944//355 949//163 948//164 943//165 +f 834//508 839//357 838//360 833//424 +f 1018//31 1017//97 1220//64 1012//32 +f 158//773 153//773 154//773 159//773 +f 68//68 311//69 308//70 309//71 +f 1072//276 1226//491 1225//492 1067//140 +f 92//381 93//381 179//480 174//480 +f 842//629 841//628 836//147 837//146 +f 249//138 248//721 242//302 243//301 +f 627//422 626//560 621//107 622//106 +f 526//259 531//260 530//93 525//92 +f 1224//419 1046//419 1047//352 1052//351 +f 466//103 470//415 469//740 465//512 +f 766//714 765//486 760//668 761//771 +f 511//253 510//496 505//339 506//338 +f 15//80 999//490 998//22 994//81 +f 653//72 652//74 647//74 648//72 +f 961//770 960//770 956//523 957//523 +f 340//179 339//511 1139//733 334//180 +f 549//124 548//125 543//69 42//68 +f 885//110 884//774 879//661 880//336 +f 411//67 416//67 1146//706 1145//706 +f 320//691 319//691 314//255 315//255 +f 686//51 685//54 680//161 681//160 +f 602//82 607//81 606//455 601//127 +f 584//272 583//272 578//429 579//429 +f 844//358 849//101 848//100 843//359 +f 1029//451 1028//451 1024//451 1025//451 +f 370//438 1129//503 1128//35 366//34 +f 843//359 848//100 115//713 114//554 +f 302//592 301//592 296//449 297//449 +f 659//222 1195//500 1154//500 655//223 +f 423//91 422//91 417//91 418//91 +f 498//440 504//441 503//520 497//184 +f 1084//104 1083//513 1079//198 1080//5 +f 680//161 1207//491 1196//492 676//140 +f 443//230 273//549 272//277 442//232 +f 958//153 962//154 961//155 957//156 +f 351//272 350//272 345//429 346//429 +f 988//439 987//34 982//37 983//623 +f 37//337 880//336 875//203 876//202 +f 488//525 489//282 495//281 494//525 +f 435//7 440//7 439//8 434//9 +f 318//46 1122//665 312//331 313//330 +f 164//157 163//157 158//157 159//157 +f 365//60 364//431 360//403 361//61 +f 1078//51 1082//52 1081//53 1077//54 +f 1055//215 1054//775 1049//775 1050//432 +f 746//346 752//705 751//704 745//347 +f 891//109 890//364 884//774 885//110 +f 26//687 749//78 748//77 744//550 +f 1024//584 1028//584 1027//247 1023//246 +f 24//112 1113//152 1112//531 1108//38 +f 269//184 1137//185 134//159 439//249 +f 973//227 978//322 1175//323 1217//228 +f 956//638 955//575 951//577 952//638 +f 938//726 937//726 932//255 933//255 +f 592//468 596//623 595//37 591//322 +f 633//30 632//31 628//32 629//588 +f 1070//498 1069//499 1116//279 1117//533 +f 420//152 419//72 414//72 415//152 +f 725//141 676//140 1196//492 1162//159 +f 858//768 857//768 853//717 854//717 +f 731//130 737//731 736//542 730//131 +f 1044//91 1043//91 1038//91 1039//91 +f 549//124 554//635 553//537 548//125 +f 1036//381 1035//480 1030//481 1031//381 +f 287//541 292//48 291//49 286//50 +f 398//483 403//483 402//167 397//166 +f 926//379 932//380 931//330 929//329 +f 1046//776 103//776 1017//776 1181//776 +f 126//776 127//776 1162//776 1195//776 +f 1022//777 1118//777 1051//777 19//777 +f 86//777 81//777 80//777 +f 1143//776 1144//776 133//776 491//776 +f 6//777 1085//777 22//777 7//777 +f 111//776 112//776 740//776 105//776 +f 871//777 865//777 31//777 30//777 +f 1184//776 1229//776 1210//776 1165//776 +f 105//776 750//776 110//776 111//776 +f 1208//776 532//776 1187//776 1207//776 +f 401//777 89//777 84//777 406//777 +f 1202//776 532//776 1208//776 1197//776 +f 636//777 729//777 56//777 53//777 +f 537//777 531//777 60//777 689//777 +f 1158//776 1194//776 1195//776 1162//776 +f 1209//776 704//776 1186//776 120//776 +f 142//776 139//776 175//776 141//776 +f 139//776 166//776 140//776 175//776 +f 138//776 139//776 142//776 1200//776 +f 145//776 212//776 143//776 144//776 +f 147//776 193//776 146//776 221//776 +f 193//776 143//776 212//776 146//776 +f 241//776 151//776 148//776 149//776 +f 247//776 150//776 257//776 263//776 +f 98//777 202//777 96//777 99//777 +f 148//776 1200//776 193//776 147//776 +f 1195//776 1194//776 1160//776 1154//776 +f 75//777 357//777 71//777 76//777 +f 1209//776 120//776 517//776 694//776 +f 755//777 749//777 33//777 828//777 +f 1179//776 1180//776 1170//776 1171//776 +f 156//777 268//777 252//777 246//777 +f 1231//776 1224//776 1182//776 1061//776 +f 101//777 252//777 268//777 262//777 +f 138//776 1200//776 148//776 151//776 +f 95//777 161//777 156//777 235//777 +f 1134//776 137//776 491//776 133//776 +f 654//777 53//777 56//777 55//777 +f 1036//777 1031//777 19//777 1041//777 +f 47//777 590//777 563//777 48//777 +f 46//777 581//777 563//777 590//777 +f 963//777 10//777 950//777 12//777 +f 73//777 338//777 72//777 +f 999//777 15//777 950//777 945//777 +f 70//777 69//777 79//777 +f 554//777 549//777 618//777 50//777 +f 1142//776 383//776 1121//776 312//776 +f 1147//776 136//776 1120//776 304//776 +f 130//776 1120//776 136//776 1148//776 +f 383//776 1131//776 304//776 1121//776 +f 299//777 66//777 462//777 +f 129//776 1148//776 1135//776 1138//776 +f 516//777 703//777 61//777 40//777 +f 1136//776 1149//776 128//776 1199//776 +f 507//777 715//777 709//777 39//777 +f 1150//776 1151//776 1137//776 1119//776 +f 24//777 1//777 1066//777 1113//777 +f 137//776 1134//776 433//776 134//776 +f 85//777 490//777 443//777 438//777 +f 1131//776 135//776 1147//776 304//776 +f 491//776 135//776 1132//776 1143//776 +f 1056//777 1051//777 1118//777 1113//777 +f 133//776 1144//776 1146//776 132//776 +f 1222//776 1223//776 1181//776 1221//776 +f 1203//776 123//776 608//776 1189//776 +f 15//777 14//777 986//777 950//777 +f 986//777 13//777 977//777 950//777 +f 1140//776 1125//776 1141//776 1124//776 +f 1124//776 131//776 339//776 1140//776 +f 45//777 44//777 568//777 +f 43//777 554//777 50//777 +f 312//776 1122//776 1130//776 1142//776 +f 1178//776 1179//776 1171//776 1211//776 +f 1187//776 1188//776 124//776 1193//776 +f 67//777 457//777 452//777 309//777 +f 531//777 526//777 60//777 +f 1085//777 5//777 4//777 1090//777 +f 1135//776 1136//776 1199//776 1138//776 +f 64//777 475//777 88//777 65//777 +f 92//777 91//777 90//777 93//777 +f 273//777 485//777 480//777 63//777 +f 1151//776 137//776 134//776 1137//776 +f 127//776 126//776 1161//776 1155//776 +f 1207//776 1187//776 1193//776 1196//776 +f 1016//777 1071//777 1118//777 1022//777 +f 52//777 51//777 59//777 +f 813//777 34//777 847//777 734//777 +f 847//777 842//777 25//777 734//777 +f 842//777 837//777 26//777 25//777 +f 33//777 749//777 26//777 837//777 +f 828//777 823//777 27//777 755//777 +f 27//777 823//777 32//777 28//777 +f 32//777 38//777 29//777 28//777 +f 29//777 38//777 886//777 773//777 +f 886//777 37//777 779//777 773//777 +f 876//777 785//777 779//777 37//777 +f 30//777 785//777 876//777 871//777 +f 865//777 36//777 801//777 31//777 +f 36//777 35//777 807//777 801//777 +f 813//777 807//777 35//777 34//777 +f 1145//776 1146//776 1144//776 1133//776 +f 420//777 406//777 84//777 83//777 +f 85//777 84//777 89//777 490//777 +f 1185//776 1163//776 1164//776 1230//776 +f 1163//776 1185//776 1231//776 1061//776 +f 724//777 58//777 671//777 57//777 +f 1229//776 1230//776 1164//776 1210//776 +f 16//777 999//777 940//777 935//777 +f 6//777 5//777 1085//777 +f 1227//776 1228//776 1166//776 1167//776 +f 1169//776 1170//776 1226//776 1183//776 +f 1183//776 1227//776 1168//776 1169//776 +f 42//777 623//777 618//777 549//777 +f 80//777 388//777 68//777 309//777 +f 945//777 940//777 999//777 +f 1212//776 1219//776 1178//776 1211//776 +f 11//777 10//777 963//777 +f 1172//776 1215//776 1174//776 1214//776 +f 1177//776 1219//776 1213//776 1214//776 +f 74//777 348//777 71//777 357//777 +f 1175//776 1218//776 1214//776 1217//776 +f 1176//776 1177//776 1214//776 1218//776 +f 103//776 1225//776 1220//776 1017//776 +f 1016//777 18//777 1071//777 +f 1180//776 1225//776 1226//776 1170//776 +f 764//776 108//776 881//776 887//776 +f 118//776 119//776 774//776 780//776 +f 786//776 791//776 860//776 866//776 +f 299//777 462//777 457//777 67//777 +f 109//776 818//776 106//776 107//776 +f 808//776 115//776 116//776 802//776 +f 860//776 791//776 796//776 117//776 +f 764//776 887//776 109//776 107//776 +f 113//776 114//776 104//776 735//776 +f 110//776 750//776 106//776 818//776 +f 866//776 118//776 780//776 786//776 +f 61//777 60//777 526//777 40//777 +f 116//776 117//776 796//776 802//776 +f 808//776 104//776 114//776 115//776 +f 649//777 54//777 53//777 654//777 +f 93//777 90//777 188//777 94//777 +f 1224//776 1231//776 103//776 1046//776 +f 121//776 122//776 1152//776 1203//776 +f 603//777 48//777 563//777 49//777 +f 563//777 43//777 50//777 49//777 +f 1205//776 1192//776 121//776 1203//776 +f 1203//776 1204//776 1191//776 1205//776 +f 131//776 1139//776 339//776 +f 1122//776 1123//776 1130//776 +f 544//776 1156//776 608//776 613//776 +f 51//777 623//777 42//777 41//777 +f 1123//776 1124//776 1129//776 1130//776 +f 7//777 22//777 1076//777 8//777 +f 1201//776 1197//776 694//776 517//776 +f 129//776 130//776 1148//776 +f 3//777 904//777 1099//777 23//777 +f 1184//776 1165//776 1166//776 1228//776 +f 1//777 24//777 1104//777 2//777 +f 63//777 480//777 475//777 64//777 +f 1056//777 1113//777 1066//777 21//777 +f 1198//776 127//776 1155//776 496//776 +f 1071//777 18//777 8//777 1076//777 +f 59//777 729//777 636//777 52//777 +f 1131//776 1132//776 135//776 +f 72//777 71//777 348//777 73//777 +f 1223//776 102//776 1046//776 1181//776 +f 57//777 56//777 729//777 724//777 +f 86//777 89//777 401//777 81//777 +f 1193//776 1153//776 1196//776 +f 452//777 86//777 80//777 309//777 +f 1041//777 19//777 1051//777 20//777 +f 1128//776 1129//776 1124//776 1127//776 +f 79//777 78//777 71//777 70//777 +f 95//777 235//777 230//777 96//777 +f 724//777 62//777 501//777 58//777 +f 1152//776 1157//776 123//776 1203//776 +f 1204//776 1190//776 1191//776 +f 1156//776 1189//776 608//776 +f 119//776 881//776 108//776 774//776 +f 68//777 388//777 382//777 317//777 +f 537//777 689//777 684//777 41//777 +f 112//776 113//776 735//776 740//776 +f 1201//776 1202//776 1197//776 +f 39//777 709//777 703//777 516//777 +f 65//777 88//777 87//777 290//777 +f 501//777 62//777 715//777 507//777 +f 1150//776 1119//776 128//776 1149//776 +f 99//777 96//777 230//777 100//777 +f 490//777 485//777 273//777 443//777 +f 1206//776 1160//776 1194//776 125//776 +f 1216//776 1217//776 1214//776 1174//776 +f 415//777 82//777 406//777 420//777 +f 247//776 263//776 151//776 241//776 +f 2//777 1104//777 1099//777 904//777 +f 710//776 502//776 1186//776 704//776 +f 1162//776 1196//776 1153//776 1158//776 +f 3//777 23//777 1090//777 4//777 +f 87//777 462//777 66//777 290//777 +f 1167//776 1168//776 1227//776 +f 98//777 97//777 207//777 202//777 +f 18//777 17//777 9//777 8//777 +f 613//776 124//776 1188//776 544//776 +f 235//777 156//777 246//777 240//777 +f 69//777 317//777 382//777 79//777 +f 1212//776 1213//776 1219//776 +f 710//776 1198//776 496//776 502//776 +f 563//777 581//777 45//777 568//777 +f 1172//776 1173//776 1215//776 +f 977//777 972//777 12//777 950//777 +f 1126//776 1127//776 1124//776 1141//776 +f 78//777 77//777 76//777 71//777 +f 684//777 59//777 51//777 41//777 +f 9//777 17//777 16//777 935//777 +f 1180//776 1220//776 1225//776 +f 95//777 188//777 90//777 161//777 diff --git a/models/extra/IAmError_a.3d b/models/extra/IAmError_a.3d deleted file mode 100644 index 66411f64d..000000000 Binary files a/models/extra/IAmError_a.3d and /dev/null differ diff --git a/models/extra/IAmError_d.3d b/models/extra/IAmError_d.3d deleted file mode 100644 index 1d750fc86..000000000 Binary files a/models/extra/IAmError_d.3d and /dev/null differ diff --git a/models/extra/MCBeam.png b/models/extra/MCBeam.png index 9e9a1b790..e5e353d82 100644 Binary files a/models/extra/MCBeam.png and b/models/extra/MCBeam.png differ diff --git a/models/extra/MCBeamS.png b/models/extra/MCBeamS.png index eee5c6c6f..f453ce098 100644 Binary files a/models/extra/MCBeamS.png and b/models/extra/MCBeamS.png differ diff --git a/models/extra/dlc/MRBolt.png b/models/extra/MRBolt.png similarity index 100% rename from models/extra/dlc/MRBolt.png rename to models/extra/MRBolt.png diff --git a/models/extra/MRBoltS.png b/models/extra/MRBoltS.png new file mode 100644 index 000000000..db381781a Binary files /dev/null and b/models/extra/MRBoltS.png differ diff --git a/models/extra/MRMuz0.png b/models/extra/MRMuz0.png new file mode 100644 index 000000000..4d910970a Binary files /dev/null and b/models/extra/MRMuz0.png differ diff --git a/models/extra/MRMuz1.png b/models/extra/MRMuz1.png new file mode 100644 index 000000000..fad68fa54 Binary files /dev/null and b/models/extra/MRMuz1.png differ diff --git a/models/extra/MRMuz2.png b/models/extra/MRMuz2.png new file mode 100644 index 000000000..5f2e47694 Binary files /dev/null and b/models/extra/MRMuz2.png differ diff --git a/models/extra/MRMuz3.png b/models/extra/MRMuz3.png new file mode 100644 index 000000000..7739b603d Binary files /dev/null and b/models/extra/MRMuz3.png differ diff --git a/models/extra/MortalMuz.png b/models/extra/MortalMuz.png index bf62f22d8..1a7d3aff6 100644 Binary files a/models/extra/MortalMuz.png and b/models/extra/MortalMuz.png differ diff --git a/models/extra/MuzTest.png b/models/extra/MuzTest.png new file mode 100644 index 000000000..ffd64c681 Binary files /dev/null and b/models/extra/MuzTest.png differ diff --git a/models/extra/NKGrad.png b/models/extra/NKGrad.png new file mode 100644 index 000000000..4d738d8e4 Binary files /dev/null and b/models/extra/NKGrad.png differ diff --git a/models/extra/NKRim.png b/models/extra/NKRim.png new file mode 100644 index 000000000..d9dfdd85f Binary files /dev/null and b/models/extra/NKRim.png differ diff --git a/models/extra/NKRing.png b/models/extra/NKRing.png new file mode 100644 index 000000000..e96c3c7d1 Binary files /dev/null and b/models/extra/NKRing.png differ diff --git a/models/extra/NewSparkMuzK.png b/models/extra/NewSparkMuzK.png new file mode 100644 index 000000000..30408ef86 Binary files /dev/null and b/models/extra/NewSparkMuzK.png differ diff --git a/models/extra/NewSparkMuzN.png b/models/extra/NewSparkMuzN.png new file mode 100644 index 000000000..b22566cda Binary files /dev/null and b/models/extra/NewSparkMuzN.png differ diff --git a/models/extra/NewSparkMuzNK.png b/models/extra/NewSparkMuzNK.png new file mode 100644 index 000000000..ce8606775 Binary files /dev/null and b/models/extra/NewSparkMuzNK.png differ diff --git a/models/extra/PlasmaTracer.png b/models/extra/PlasmaTracer.png new file mode 100644 index 000000000..c40e483a6 Binary files /dev/null and b/models/extra/PlasmaTracer.png differ diff --git a/models/extra/PlasmaTrail.png b/models/extra/PlasmaTrail.png new file mode 100644 index 000000000..22e68741a Binary files /dev/null and b/models/extra/PlasmaTrail.png differ diff --git a/models/extra/PuntzerMuz0.png b/models/extra/PuntzerMuz0.png new file mode 100644 index 000000000..a97d01d78 Binary files /dev/null and b/models/extra/PuntzerMuz0.png differ diff --git a/models/extra/PuntzerMuz1.png b/models/extra/PuntzerMuz1.png new file mode 100644 index 000000000..c81053de4 Binary files /dev/null and b/models/extra/PuntzerMuz1.png differ diff --git a/models/extra/PuntzerMuz2.png b/models/extra/PuntzerMuz2.png new file mode 100644 index 000000000..6c6154ddd Binary files /dev/null and b/models/extra/PuntzerMuz2.png differ diff --git a/models/extra/PuntzerMuz3.png b/models/extra/PuntzerMuz3.png new file mode 100644 index 000000000..4ec2d2c97 Binary files /dev/null and b/models/extra/PuntzerMuz3.png differ diff --git a/models/extra/PuntzerMuz4.png b/models/extra/PuntzerMuz4.png new file mode 100644 index 000000000..d5c62a22b Binary files /dev/null and b/models/extra/PuntzerMuz4.png differ diff --git a/models/extra/PuntzerMuz5.png b/models/extra/PuntzerMuz5.png new file mode 100644 index 000000000..96528721b Binary files /dev/null and b/models/extra/PuntzerMuz5.png differ diff --git a/models/extra/PuntzerMuz6.png b/models/extra/PuntzerMuz6.png new file mode 100644 index 000000000..ffac9caf3 Binary files /dev/null and b/models/extra/PuntzerMuz6.png differ diff --git a/models/extra/PuntzerMuz7.png b/models/extra/PuntzerMuz7.png new file mode 100644 index 000000000..a43dd1f4e Binary files /dev/null and b/models/extra/PuntzerMuz7.png differ diff --git a/models/extra/QuadMuz0.png b/models/extra/QuadMuz0.png new file mode 100644 index 000000000..a990e31c7 Binary files /dev/null and b/models/extra/QuadMuz0.png differ diff --git a/models/extra/QuadMuz1.png b/models/extra/QuadMuz1.png new file mode 100644 index 000000000..e24a8e033 Binary files /dev/null and b/models/extra/QuadMuz1.png differ diff --git a/models/extra/QuadMuz2.png b/models/extra/QuadMuz2.png new file mode 100644 index 000000000..66daa9e43 Binary files /dev/null and b/models/extra/QuadMuz2.png differ diff --git a/models/extra/QuadMuz3.png b/models/extra/QuadMuz3.png new file mode 100644 index 000000000..c04cbb5d7 Binary files /dev/null and b/models/extra/QuadMuz3.png differ diff --git a/models/extra/QuadMuz4.png b/models/extra/QuadMuz4.png new file mode 100644 index 000000000..38875250a Binary files /dev/null and b/models/extra/QuadMuz4.png differ diff --git a/models/extra/QuadMuz5.png b/models/extra/QuadMuz5.png new file mode 100644 index 000000000..cd1b1778d Binary files /dev/null and b/models/extra/QuadMuz5.png differ diff --git a/models/extra/QuadMuz6.png b/models/extra/QuadMuz6.png new file mode 100644 index 000000000..7564dfcd2 Binary files /dev/null and b/models/extra/QuadMuz6.png differ diff --git a/models/extra/QuadMuz7.png b/models/extra/QuadMuz7.png new file mode 100644 index 000000000..da8f88938 Binary files /dev/null and b/models/extra/QuadMuz7.png differ diff --git a/models/extra/QuadMuz8.png b/models/extra/QuadMuz8.png new file mode 100644 index 000000000..167b6b7cb Binary files /dev/null and b/models/extra/QuadMuz8.png differ diff --git a/models/extra/QuadMuz9.png b/models/extra/QuadMuz9.png new file mode 100644 index 000000000..ba902c1ca Binary files /dev/null and b/models/extra/QuadMuz9.png differ diff --git a/models/extra/RailMuz0.png b/models/extra/RailMuz0.png new file mode 100644 index 000000000..7cb34f3d4 Binary files /dev/null and b/models/extra/RailMuz0.png differ diff --git a/models/extra/RailMuz1.png b/models/extra/RailMuz1.png new file mode 100644 index 000000000..f3987855f Binary files /dev/null and b/models/extra/RailMuz1.png differ diff --git a/models/extra/RailMuz2.png b/models/extra/RailMuz2.png new file mode 100644 index 000000000..164f74e32 Binary files /dev/null and b/models/extra/RailMuz2.png differ diff --git a/models/extra/RailMuz3.png b/models/extra/RailMuz3.png new file mode 100644 index 000000000..691f8f141 Binary files /dev/null and b/models/extra/RailMuz3.png differ diff --git a/models/extra/RayTracer.png b/models/extra/RayTracer.png new file mode 100644 index 000000000..902cd2e37 Binary files /dev/null and b/models/extra/RayTracer.png differ diff --git a/models/extra/RayTrail.png b/models/extra/RayTrail.png new file mode 100644 index 000000000..bcb8f8cf4 Binary files /dev/null and b/models/extra/RayTrail.png differ diff --git a/models/extra/SaltBeam.png b/models/extra/SaltBeam.png index 559f174f7..3a311ddba 100644 Binary files a/models/extra/SaltBeam.png and b/models/extra/SaltBeam.png differ diff --git a/models/extra/SaltBeamS.png b/models/extra/SaltBeamS.png index 5aa716d7c..7fde9ece3 100644 Binary files a/models/extra/SaltBeamS.png and b/models/extra/SaltBeamS.png differ diff --git a/models/extra/SheenMuz0.png b/models/extra/SheenMuz0.png new file mode 100644 index 000000000..5cf76b855 Binary files /dev/null and b/models/extra/SheenMuz0.png differ diff --git a/models/extra/SheenMuz1.png b/models/extra/SheenMuz1.png new file mode 100644 index 000000000..d7aa811ce Binary files /dev/null and b/models/extra/SheenMuz1.png differ diff --git a/models/extra/SheenMuz2.png b/models/extra/SheenMuz2.png new file mode 100644 index 000000000..e8240c9d5 Binary files /dev/null and b/models/extra/SheenMuz2.png differ diff --git a/models/extra/SheenMuz3.png b/models/extra/SheenMuz3.png new file mode 100644 index 000000000..946d909f3 Binary files /dev/null and b/models/extra/SheenMuz3.png differ diff --git a/models/extra/SheenMuz4.png b/models/extra/SheenMuz4.png new file mode 100644 index 000000000..e2cecd183 Binary files /dev/null and b/models/extra/SheenMuz4.png differ diff --git a/models/extra/SheenMuz5.png b/models/extra/SheenMuz5.png new file mode 100644 index 000000000..33c3feec7 Binary files /dev/null and b/models/extra/SheenMuz5.png differ diff --git a/models/extra/SheenMuz6.png b/models/extra/SheenMuz6.png new file mode 100644 index 000000000..b653a89bb Binary files /dev/null and b/models/extra/SheenMuz6.png differ diff --git a/models/extra/SheenMuz7.png b/models/extra/SheenMuz7.png new file mode 100644 index 000000000..20bd9f66e Binary files /dev/null and b/models/extra/SheenMuz7.png differ diff --git a/models/extra/SheenTracer.png b/models/extra/SheenTracer.png new file mode 100644 index 000000000..45a7e6e86 Binary files /dev/null and b/models/extra/SheenTracer.png differ diff --git a/models/extra/ShotgMuz.png b/models/extra/ShotgMuz.png index a86990646..c9d34bc37 100644 Binary files a/models/extra/ShotgMuz.png and b/models/extra/ShotgMuz.png differ diff --git a/models/extra/ShotgMuzSalt.png b/models/extra/ShotgMuzSalt.png index 772fa7546..b68833398 100644 Binary files a/models/extra/ShotgMuzSalt.png and b/models/extra/ShotgMuzSalt.png differ diff --git a/models/extra/SilverMuz.png b/models/extra/SilverMuz.png index f7e49dc91..d0fc51c70 100644 Binary files a/models/extra/SilverMuz.png and b/models/extra/SilverMuz.png differ diff --git a/models/extra/SparksterBeam.png b/models/extra/SparksterBeam.png index 787f6062e..d500965cb 100644 Binary files a/models/extra/SparksterBeam.png and b/models/extra/SparksterBeam.png differ diff --git a/models/extra/SparksterBeamS.png b/models/extra/SparksterBeamS.png index 9393c5e5f..2b141a4c9 100644 Binary files a/models/extra/SparksterBeamS.png and b/models/extra/SparksterBeamS.png differ diff --git a/models/extra/SparksterMuz.png b/models/extra/SparksterMuz.png index 42f825b3d..332c7e3b9 100644 Binary files a/models/extra/SparksterMuz.png and b/models/extra/SparksterMuz.png differ diff --git a/models/extra/SparksterVent_a.3d b/models/extra/SparksterVent_a.3d deleted file mode 100644 index 91beec2c1..000000000 Binary files a/models/extra/SparksterVent_a.3d and /dev/null differ diff --git a/models/extra/SparksterVent_d.3d b/models/extra/SparksterVent_d.3d deleted file mode 100644 index e73d85c03..000000000 Binary files a/models/extra/SparksterVent_d.3d and /dev/null differ diff --git a/models/extra/UltimaMuz0.png b/models/extra/UltimaMuz0.png new file mode 100644 index 000000000..c0bcaf956 Binary files /dev/null and b/models/extra/UltimaMuz0.png differ diff --git a/models/extra/UltimaMuz1.png b/models/extra/UltimaMuz1.png new file mode 100644 index 000000000..f52dac65f Binary files /dev/null and b/models/extra/UltimaMuz1.png differ diff --git a/models/extra/UltimaMuz2.png b/models/extra/UltimaMuz2.png new file mode 100644 index 000000000..399850b30 Binary files /dev/null and b/models/extra/UltimaMuz2.png differ diff --git a/models/extra/UltimaMuz3.png b/models/extra/UltimaMuz3.png new file mode 100644 index 000000000..0cbb37c80 Binary files /dev/null and b/models/extra/UltimaMuz3.png differ diff --git a/models/extra/UltimaTrail.png b/models/extra/UltimaTrail.png new file mode 100644 index 000000000..925f5b672 Binary files /dev/null and b/models/extra/UltimaTrail.png differ diff --git a/models/extra/VentSmoke0.png b/models/extra/VentSmoke0.png deleted file mode 100644 index e06aec0b8..000000000 Binary files a/models/extra/VentSmoke0.png and /dev/null differ diff --git a/models/extra/VentSmoke1.png b/models/extra/VentSmoke1.png deleted file mode 100644 index e880db574..000000000 Binary files a/models/extra/VentSmoke1.png and /dev/null differ diff --git a/models/extra/VentSmoke10.png b/models/extra/VentSmoke10.png deleted file mode 100644 index 0e7144653..000000000 Binary files a/models/extra/VentSmoke10.png and /dev/null differ diff --git a/models/extra/VentSmoke11.png b/models/extra/VentSmoke11.png deleted file mode 100644 index d69f241bb..000000000 Binary files a/models/extra/VentSmoke11.png and /dev/null differ diff --git a/models/extra/VentSmoke12.png b/models/extra/VentSmoke12.png deleted file mode 100644 index a496ffab1..000000000 Binary files a/models/extra/VentSmoke12.png and /dev/null differ diff --git a/models/extra/VentSmoke13.png b/models/extra/VentSmoke13.png deleted file mode 100644 index a9bdaf9a3..000000000 Binary files a/models/extra/VentSmoke13.png and /dev/null differ diff --git a/models/extra/VentSmoke14.png b/models/extra/VentSmoke14.png deleted file mode 100644 index 78c854e44..000000000 Binary files a/models/extra/VentSmoke14.png and /dev/null differ diff --git a/models/extra/VentSmoke15.png b/models/extra/VentSmoke15.png deleted file mode 100644 index e5753b649..000000000 Binary files a/models/extra/VentSmoke15.png and /dev/null differ diff --git a/models/extra/VentSmoke16.png b/models/extra/VentSmoke16.png deleted file mode 100644 index 66d6592a4..000000000 Binary files a/models/extra/VentSmoke16.png and /dev/null differ diff --git a/models/extra/VentSmoke17.png b/models/extra/VentSmoke17.png deleted file mode 100644 index 340f56f0e..000000000 Binary files a/models/extra/VentSmoke17.png and /dev/null differ diff --git a/models/extra/VentSmoke18.png b/models/extra/VentSmoke18.png deleted file mode 100644 index 56870be31..000000000 Binary files a/models/extra/VentSmoke18.png and /dev/null differ diff --git a/models/extra/VentSmoke19.png b/models/extra/VentSmoke19.png deleted file mode 100644 index 71f8dd6b3..000000000 Binary files a/models/extra/VentSmoke19.png and /dev/null differ diff --git a/models/extra/VentSmoke2.png b/models/extra/VentSmoke2.png deleted file mode 100644 index 0a3b88368..000000000 Binary files a/models/extra/VentSmoke2.png and /dev/null differ diff --git a/models/extra/VentSmoke20.png b/models/extra/VentSmoke20.png deleted file mode 100644 index 6aee6e8fe..000000000 Binary files a/models/extra/VentSmoke20.png and /dev/null differ diff --git a/models/extra/VentSmoke21.png b/models/extra/VentSmoke21.png deleted file mode 100644 index 7b2b973ec..000000000 Binary files a/models/extra/VentSmoke21.png and /dev/null differ diff --git a/models/extra/VentSmoke22.png b/models/extra/VentSmoke22.png deleted file mode 100644 index b2da0bee7..000000000 Binary files a/models/extra/VentSmoke22.png and /dev/null differ diff --git a/models/extra/VentSmoke23.png b/models/extra/VentSmoke23.png deleted file mode 100644 index 97c2a8d43..000000000 Binary files a/models/extra/VentSmoke23.png and /dev/null differ diff --git a/models/extra/VentSmoke3.png b/models/extra/VentSmoke3.png deleted file mode 100644 index 82dd5a55f..000000000 Binary files a/models/extra/VentSmoke3.png and /dev/null differ diff --git a/models/extra/VentSmoke4.png b/models/extra/VentSmoke4.png deleted file mode 100644 index 5c727f259..000000000 Binary files a/models/extra/VentSmoke4.png and /dev/null differ diff --git a/models/extra/VentSmoke5.png b/models/extra/VentSmoke5.png deleted file mode 100644 index 3fc60c294..000000000 Binary files a/models/extra/VentSmoke5.png and /dev/null differ diff --git a/models/extra/VentSmoke6.png b/models/extra/VentSmoke6.png deleted file mode 100644 index 7f2ed1906..000000000 Binary files a/models/extra/VentSmoke6.png and /dev/null differ diff --git a/models/extra/VentSmoke7.png b/models/extra/VentSmoke7.png deleted file mode 100644 index 89e20494d..000000000 Binary files a/models/extra/VentSmoke7.png and /dev/null differ diff --git a/models/extra/VentSmoke8.png b/models/extra/VentSmoke8.png deleted file mode 100644 index 38dd10f14..000000000 Binary files a/models/extra/VentSmoke8.png and /dev/null differ diff --git a/models/extra/VentSmoke9.png b/models/extra/VentSmoke9.png deleted file mode 100644 index 95f0b8e76..000000000 Binary files a/models/extra/VentSmoke9.png and /dev/null differ diff --git a/models/extra/VortexArc.png b/models/extra/VortexArc.png index 13ccd6204..46ecc1373 100644 Binary files a/models/extra/VortexArc.png and b/models/extra/VortexArc.png differ diff --git a/models/extra/VortexArcS.png b/models/extra/VortexArcS.png index b0972b7df..7f6ec87af 100644 Binary files a/models/extra/VortexArcS.png and b/models/extra/VortexArcS.png differ diff --git a/models/extra/WarpBeam.md3 b/models/extra/WarpBeam.md3 new file mode 100644 index 000000000..bdff3c96e Binary files /dev/null and b/models/extra/WarpBeam.md3 differ diff --git a/models/extra/WarpBeam2.md3 b/models/extra/WarpBeam2.md3 new file mode 100644 index 000000000..2d1087ae7 Binary files /dev/null and b/models/extra/WarpBeam2.md3 differ diff --git a/models/extra/WarpBeam2_a.3d b/models/extra/WarpBeam2_a.3d deleted file mode 100644 index db46a09fc..000000000 Binary files a/models/extra/WarpBeam2_a.3d and /dev/null differ diff --git a/models/extra/WarpBeam2_d.3d b/models/extra/WarpBeam2_d.3d deleted file mode 100644 index 79e73652a..000000000 Binary files a/models/extra/WarpBeam2_d.3d and /dev/null differ diff --git a/models/extra/WarpBeam3.md3 b/models/extra/WarpBeam3.md3 new file mode 100644 index 000000000..830afe46a Binary files /dev/null and b/models/extra/WarpBeam3.md3 differ diff --git a/models/extra/WarpBeam3_a.3d b/models/extra/WarpBeam3_a.3d deleted file mode 100644 index c8856480a..000000000 Binary files a/models/extra/WarpBeam3_a.3d and /dev/null differ diff --git a/models/extra/WarpBeam3_d.3d b/models/extra/WarpBeam3_d.3d deleted file mode 100644 index ac89c1b6b..000000000 Binary files a/models/extra/WarpBeam3_d.3d and /dev/null differ diff --git a/models/extra/WarpBeam_a.3d b/models/extra/WarpBeam_a.3d deleted file mode 100644 index 2bf70a12b..000000000 Binary files a/models/extra/WarpBeam_a.3d and /dev/null differ diff --git a/models/extra/WarpBeam_d.3d b/models/extra/WarpBeam_d.3d deleted file mode 100644 index 0a2b36bb7..000000000 Binary files a/models/extra/WarpBeam_d.3d and /dev/null differ diff --git a/models/extra/YBeam.obj b/models/extra/YBeam.obj index 8015ba908..d7ce133c9 100644 --- a/models/extra/YBeam.obj +++ b/models/extra/YBeam.obj @@ -1,17 +1,17 @@ -v -1.000000 2.000000 0.000000 -v 1.000000 2.000000 0.000000 +v -1.000000 1.000000 0.000000 +v 1.000000 1.000000 0.000000 v -1.000000 0.000000 -0.000000 v 1.000000 0.000000 -0.000000 -v 0.707107 2.000000 -0.707107 -v -0.707107 2.000000 0.707107 +v 0.707107 1.000000 -0.707107 +v -0.707107 1.000000 0.707107 v 0.707107 0.000000 -0.707107 v -0.707107 0.000000 0.707107 -v -0.000000 2.000000 -1.000000 -v 0.000000 2.000000 1.000000 +v -0.000000 1.000000 -1.000000 +v 0.000000 1.000000 1.000000 v 0.000000 0.000000 -1.000000 v 0.000000 0.000000 1.000000 -v -0.707107 2.000000 -0.707107 -v 0.707107 2.000000 0.707107 +v -0.707107 1.000000 -0.707107 +v 0.707107 1.000000 0.707107 v -0.707107 0.000000 -0.707107 v 0.707107 0.000000 0.707107 vt 0.000000 0.000000 diff --git a/models/extra/blodpool.png b/models/extra/blodpool.png new file mode 100644 index 000000000..0ac574c10 Binary files /dev/null and b/models/extra/blodpool.png differ diff --git a/models/extra/blodpool_shaded.png b/models/extra/blodpool_shaded.png new file mode 100644 index 000000000..946d44049 Binary files /dev/null and b/models/extra/blodpool_shaded.png differ diff --git a/models/extra/dlc/BlastMuz0.png b/models/extra/dlc/BlastMuz0.png deleted file mode 100644 index 40559ad5f..000000000 Binary files a/models/extra/dlc/BlastMuz0.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz1.png b/models/extra/dlc/BlastMuz1.png deleted file mode 100644 index 54f89b788..000000000 Binary files a/models/extra/dlc/BlastMuz1.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz2.png b/models/extra/dlc/BlastMuz2.png deleted file mode 100644 index 3b4bb9935..000000000 Binary files a/models/extra/dlc/BlastMuz2.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz3.png b/models/extra/dlc/BlastMuz3.png deleted file mode 100644 index 698c11e90..000000000 Binary files a/models/extra/dlc/BlastMuz3.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz4.png b/models/extra/dlc/BlastMuz4.png deleted file mode 100644 index deccb173b..000000000 Binary files a/models/extra/dlc/BlastMuz4.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz5.png b/models/extra/dlc/BlastMuz5.png deleted file mode 100644 index c54e8cc2e..000000000 Binary files a/models/extra/dlc/BlastMuz5.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz6.png b/models/extra/dlc/BlastMuz6.png deleted file mode 100644 index 6d14d565a..000000000 Binary files a/models/extra/dlc/BlastMuz6.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz7.png b/models/extra/dlc/BlastMuz7.png deleted file mode 100644 index f587c8d09..000000000 Binary files a/models/extra/dlc/BlastMuz7.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz8.png b/models/extra/dlc/BlastMuz8.png deleted file mode 100644 index d580fdad2..000000000 Binary files a/models/extra/dlc/BlastMuz8.png and /dev/null differ diff --git a/models/extra/dlc/BlastMuz9.png b/models/extra/dlc/BlastMuz9.png deleted file mode 100644 index dfe94f34e..000000000 Binary files a/models/extra/dlc/BlastMuz9.png and /dev/null differ diff --git a/models/extra/dlc/LanceTracer.png b/models/extra/dlc/LanceTracer.png deleted file mode 100644 index 2ce30b613..000000000 Binary files a/models/extra/dlc/LanceTracer.png and /dev/null differ diff --git a/models/extra/dlc/MRBoltS.png b/models/extra/dlc/MRBoltS.png deleted file mode 100644 index d90a9b295..000000000 Binary files a/models/extra/dlc/MRBoltS.png and /dev/null differ diff --git a/models/extra/dlc/MRMuz0.png b/models/extra/dlc/MRMuz0.png deleted file mode 100644 index 365c90734..000000000 Binary files a/models/extra/dlc/MRMuz0.png and /dev/null differ diff --git a/models/extra/dlc/MRMuz1.png b/models/extra/dlc/MRMuz1.png deleted file mode 100644 index 26321d4eb..000000000 Binary files a/models/extra/dlc/MRMuz1.png and /dev/null differ diff --git a/models/extra/dlc/MRMuz2.png b/models/extra/dlc/MRMuz2.png deleted file mode 100644 index c82d652a0..000000000 Binary files a/models/extra/dlc/MRMuz2.png and /dev/null differ diff --git a/models/extra/dlc/MRMuz3.png b/models/extra/dlc/MRMuz3.png deleted file mode 100644 index 08e93382f..000000000 Binary files a/models/extra/dlc/MRMuz3.png and /dev/null differ diff --git a/models/extra/dlc/NewSparkMuzK.png b/models/extra/dlc/NewSparkMuzK.png deleted file mode 100644 index c53667361..000000000 Binary files a/models/extra/dlc/NewSparkMuzK.png and /dev/null differ diff --git a/models/extra/dlc/NewSparkMuzN.png b/models/extra/dlc/NewSparkMuzN.png deleted file mode 100644 index 0b02a5a9c..000000000 Binary files a/models/extra/dlc/NewSparkMuzN.png and /dev/null differ diff --git a/models/extra/dlc/NewSparkMuzNK.png b/models/extra/dlc/NewSparkMuzNK.png deleted file mode 100644 index 8f9a0ade7..000000000 Binary files a/models/extra/dlc/NewSparkMuzNK.png and /dev/null differ diff --git a/models/extra/dlc/PlasmaTracer.png b/models/extra/dlc/PlasmaTracer.png deleted file mode 100644 index dfc64ea21..000000000 Binary files a/models/extra/dlc/PlasmaTracer.png and /dev/null differ diff --git a/models/extra/dlc/PlasmaTrail.png b/models/extra/dlc/PlasmaTrail.png deleted file mode 100644 index 99485d07e..000000000 Binary files a/models/extra/dlc/PlasmaTrail.png and /dev/null differ diff --git a/models/extra/dlc/PuntzerMuz0.png b/models/extra/dlc/PuntzerMuz0.png deleted file mode 100644 index 6bd901100..000000000 Binary files a/models/extra/dlc/PuntzerMuz0.png and /dev/null differ diff --git a/models/extra/dlc/PuntzerMuz1.png b/models/extra/dlc/PuntzerMuz1.png deleted file mode 100644 index aab327680..000000000 Binary files a/models/extra/dlc/PuntzerMuz1.png and /dev/null differ diff --git a/models/extra/dlc/PuntzerMuz2.png b/models/extra/dlc/PuntzerMuz2.png deleted file mode 100644 index 1f08dbfd2..000000000 Binary files a/models/extra/dlc/PuntzerMuz2.png and /dev/null differ diff --git a/models/extra/dlc/PuntzerMuz3.png b/models/extra/dlc/PuntzerMuz3.png deleted file mode 100644 index 06c77871f..000000000 Binary files a/models/extra/dlc/PuntzerMuz3.png and /dev/null differ diff --git a/models/extra/dlc/PuntzerMuz4.png b/models/extra/dlc/PuntzerMuz4.png deleted file mode 100644 index 154323704..000000000 Binary files a/models/extra/dlc/PuntzerMuz4.png and /dev/null differ diff --git a/models/extra/dlc/PuntzerMuz5.png b/models/extra/dlc/PuntzerMuz5.png deleted file mode 100644 index 5ae0d9914..000000000 Binary files a/models/extra/dlc/PuntzerMuz5.png and /dev/null differ diff --git a/models/extra/dlc/PuntzerMuz6.png b/models/extra/dlc/PuntzerMuz6.png deleted file mode 100644 index d4e389ffb..000000000 Binary files a/models/extra/dlc/PuntzerMuz6.png and /dev/null differ diff --git a/models/extra/dlc/PuntzerMuz7.png b/models/extra/dlc/PuntzerMuz7.png deleted file mode 100644 index dc6be92f6..000000000 Binary files a/models/extra/dlc/PuntzerMuz7.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz0.png b/models/extra/dlc/QuadMuz0.png deleted file mode 100644 index 4dd9855f8..000000000 Binary files a/models/extra/dlc/QuadMuz0.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz1.png b/models/extra/dlc/QuadMuz1.png deleted file mode 100644 index d7b4dfc69..000000000 Binary files a/models/extra/dlc/QuadMuz1.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz2.png b/models/extra/dlc/QuadMuz2.png deleted file mode 100644 index 68cd04ccc..000000000 Binary files a/models/extra/dlc/QuadMuz2.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz3.png b/models/extra/dlc/QuadMuz3.png deleted file mode 100644 index dac0a7265..000000000 Binary files a/models/extra/dlc/QuadMuz3.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz4.png b/models/extra/dlc/QuadMuz4.png deleted file mode 100644 index 8a8994033..000000000 Binary files a/models/extra/dlc/QuadMuz4.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz5.png b/models/extra/dlc/QuadMuz5.png deleted file mode 100644 index c692314e8..000000000 Binary files a/models/extra/dlc/QuadMuz5.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz6.png b/models/extra/dlc/QuadMuz6.png deleted file mode 100644 index bc602b2fa..000000000 Binary files a/models/extra/dlc/QuadMuz6.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz7.png b/models/extra/dlc/QuadMuz7.png deleted file mode 100644 index 204f31341..000000000 Binary files a/models/extra/dlc/QuadMuz7.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz8.png b/models/extra/dlc/QuadMuz8.png deleted file mode 100644 index 4641896e4..000000000 Binary files a/models/extra/dlc/QuadMuz8.png and /dev/null differ diff --git a/models/extra/dlc/QuadMuz9.png b/models/extra/dlc/QuadMuz9.png deleted file mode 100644 index ac3fe2ab6..000000000 Binary files a/models/extra/dlc/QuadMuz9.png and /dev/null differ diff --git a/models/extra/dlc/RailMuz0.png b/models/extra/dlc/RailMuz0.png deleted file mode 100644 index 190078dcf..000000000 Binary files a/models/extra/dlc/RailMuz0.png and /dev/null differ diff --git a/models/extra/dlc/RailMuz1.png b/models/extra/dlc/RailMuz1.png deleted file mode 100644 index c3802cef3..000000000 Binary files a/models/extra/dlc/RailMuz1.png and /dev/null differ diff --git a/models/extra/dlc/RailMuz2.png b/models/extra/dlc/RailMuz2.png deleted file mode 100644 index 19ae5599b..000000000 Binary files a/models/extra/dlc/RailMuz2.png and /dev/null differ diff --git a/models/extra/dlc/RailMuz3.png b/models/extra/dlc/RailMuz3.png deleted file mode 100644 index 725e6bde9..000000000 Binary files a/models/extra/dlc/RailMuz3.png and /dev/null differ diff --git a/models/extra/dlc/RayTracer.png b/models/extra/dlc/RayTracer.png deleted file mode 100644 index 4a6fa27dc..000000000 Binary files a/models/extra/dlc/RayTracer.png and /dev/null differ diff --git a/models/extra/dlc/RayTrail.png b/models/extra/dlc/RayTrail.png deleted file mode 100644 index 77f2dcf65..000000000 Binary files a/models/extra/dlc/RayTrail.png and /dev/null differ diff --git a/models/extra/dlc/SheenMuz0.png b/models/extra/dlc/SheenMuz0.png deleted file mode 100644 index e7c694204..000000000 Binary files a/models/extra/dlc/SheenMuz0.png and /dev/null differ diff --git a/models/extra/dlc/SheenMuz1.png b/models/extra/dlc/SheenMuz1.png deleted file mode 100644 index af57fd9d7..000000000 Binary files a/models/extra/dlc/SheenMuz1.png and /dev/null differ diff --git a/models/extra/dlc/SheenMuz2.png b/models/extra/dlc/SheenMuz2.png deleted file mode 100644 index a359af6ee..000000000 Binary files a/models/extra/dlc/SheenMuz2.png and /dev/null differ diff --git a/models/extra/dlc/SheenMuz3.png b/models/extra/dlc/SheenMuz3.png deleted file mode 100644 index 6f1fdc722..000000000 Binary files a/models/extra/dlc/SheenMuz3.png and /dev/null differ diff --git a/models/extra/dlc/SheenMuz4.png b/models/extra/dlc/SheenMuz4.png deleted file mode 100644 index 874705918..000000000 Binary files a/models/extra/dlc/SheenMuz4.png and /dev/null differ diff --git a/models/extra/dlc/SheenMuz5.png b/models/extra/dlc/SheenMuz5.png deleted file mode 100644 index 29c4ab733..000000000 Binary files a/models/extra/dlc/SheenMuz5.png and /dev/null differ diff --git a/models/extra/dlc/SheenMuz6.png b/models/extra/dlc/SheenMuz6.png deleted file mode 100644 index bd7e2b4fe..000000000 Binary files a/models/extra/dlc/SheenMuz6.png and /dev/null differ diff --git a/models/extra/dlc/SheenMuz7.png b/models/extra/dlc/SheenMuz7.png deleted file mode 100644 index 879b71b09..000000000 Binary files a/models/extra/dlc/SheenMuz7.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer.png b/models/extra/dlc/SheenTracer.png deleted file mode 100644 index 2ebc184e5..000000000 Binary files a/models/extra/dlc/SheenTracer.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Blue.png b/models/extra/dlc/SheenTracer_Blue.png deleted file mode 100644 index 69e6dd633..000000000 Binary files a/models/extra/dlc/SheenTracer_Blue.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Cyan.png b/models/extra/dlc/SheenTracer_Cyan.png deleted file mode 100644 index e09e1ec89..000000000 Binary files a/models/extra/dlc/SheenTracer_Cyan.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Green.png b/models/extra/dlc/SheenTracer_Green.png deleted file mode 100644 index 1fee35c5a..000000000 Binary files a/models/extra/dlc/SheenTracer_Green.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Magenta.png b/models/extra/dlc/SheenTracer_Magenta.png deleted file mode 100644 index f2b4d7aa9..000000000 Binary files a/models/extra/dlc/SheenTracer_Magenta.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Red.png b/models/extra/dlc/SheenTracer_Red.png deleted file mode 100644 index d2c8a9f17..000000000 Binary files a/models/extra/dlc/SheenTracer_Red.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_TransBlue.png b/models/extra/dlc/SheenTracer_TransBlue.png deleted file mode 100644 index 714ad27c6..000000000 Binary files a/models/extra/dlc/SheenTracer_TransBlue.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_TransPink.png b/models/extra/dlc/SheenTracer_TransPink.png deleted file mode 100644 index b0d56f560..000000000 Binary files a/models/extra/dlc/SheenTracer_TransPink.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_White.png b/models/extra/dlc/SheenTracer_White.png deleted file mode 100644 index dad5386f5..000000000 Binary files a/models/extra/dlc/SheenTracer_White.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Yellow.png b/models/extra/dlc/SheenTracer_Yellow.png deleted file mode 100644 index 6076312e5..000000000 Binary files a/models/extra/dlc/SheenTracer_Yellow.png and /dev/null differ diff --git a/models/extra/dlc/UltimaMuz0.png b/models/extra/dlc/UltimaMuz0.png deleted file mode 100644 index 4c084b65e..000000000 Binary files a/models/extra/dlc/UltimaMuz0.png and /dev/null differ diff --git a/models/extra/dlc/UltimaMuz1.png b/models/extra/dlc/UltimaMuz1.png deleted file mode 100644 index 3a313302a..000000000 Binary files a/models/extra/dlc/UltimaMuz1.png and /dev/null differ diff --git a/models/extra/dlc/UltimaMuz2.png b/models/extra/dlc/UltimaMuz2.png deleted file mode 100644 index c6b71e525..000000000 Binary files a/models/extra/dlc/UltimaMuz2.png and /dev/null differ diff --git a/models/extra/dlc/UltimaMuz3.png b/models/extra/dlc/UltimaMuz3.png deleted file mode 100644 index 4b471ebd6..000000000 Binary files a/models/extra/dlc/UltimaMuz3.png and /dev/null differ diff --git a/models/extra/dlc/UltimaTrail.png b/models/extra/dlc/UltimaTrail.png deleted file mode 100644 index e297cc04f..000000000 Binary files a/models/extra/dlc/UltimaTrail.png and /dev/null differ diff --git a/models/matcap/barriermap.png b/models/matcap/barriermap.png deleted file mode 100644 index 7750dba21..000000000 Binary files a/models/matcap/barriermap.png and /dev/null differ diff --git a/models/matcap/blumap.png b/models/matcap/blumap.png deleted file mode 100644 index 7e429ffdb..000000000 Binary files a/models/matcap/blumap.png and /dev/null differ diff --git a/models/matcap/darkmap.png b/models/matcap/darkmap.png deleted file mode 100644 index b42e2f981..000000000 Binary files a/models/matcap/darkmap.png and /dev/null differ diff --git a/models/matcap/dekamap.png b/models/matcap/dekamap.png deleted file mode 100644 index 95278a6d9..000000000 Binary files a/models/matcap/dekamap.png and /dev/null differ diff --git a/models/matcap/errormap.png b/models/matcap/errormap.png deleted file mode 100644 index e9f53ec99..000000000 Binary files a/models/matcap/errormap.png and /dev/null differ diff --git a/models/matcap/glassmap.png b/models/matcap/glassmap.png deleted file mode 100644 index 944153d5a..000000000 Binary files a/models/matcap/glassmap.png and /dev/null differ diff --git a/models/matcap/goldmap.png b/models/matcap/goldmap.png deleted file mode 100644 index fd84e37aa..000000000 Binary files a/models/matcap/goldmap.png and /dev/null differ diff --git a/models/matcap/greenmap.png b/models/matcap/greenmap.png deleted file mode 100644 index 1e9abcf4c..000000000 Binary files a/models/matcap/greenmap.png and /dev/null differ diff --git a/models/matcap/invincimap.png b/models/matcap/invincimap.png deleted file mode 100644 index f4d5a8995..000000000 Binary files a/models/matcap/invincimap.png and /dev/null differ diff --git a/models/matcap/kinymap.png b/models/matcap/kinymap.png deleted file mode 100644 index a93b427c7..000000000 Binary files a/models/matcap/kinymap.png and /dev/null differ diff --git a/models/matcap/leadmap.png b/models/matcap/leadmap.png deleted file mode 100644 index 178616e43..000000000 Binary files a/models/matcap/leadmap.png and /dev/null differ diff --git a/models/matcap/nkrknmap.png b/models/matcap/nkrknmap.png deleted file mode 100644 index 50eb0aa4c..000000000 Binary files a/models/matcap/nkrknmap.png and /dev/null differ diff --git a/models/matcap/nokromap.png b/models/matcap/nokromap.png deleted file mode 100644 index 18234fea6..000000000 Binary files a/models/matcap/nokromap.png and /dev/null differ diff --git a/models/matcap/pearlmap.png b/models/matcap/pearlmap.png deleted file mode 100644 index 97840fca4..000000000 Binary files a/models/matcap/pearlmap.png and /dev/null differ diff --git a/models/matcap/pinkmap.png b/models/matcap/pinkmap.png deleted file mode 100644 index edf4dbc58..000000000 Binary files a/models/matcap/pinkmap.png and /dev/null differ diff --git a/models/matcap/puromap.png b/models/matcap/puromap.png deleted file mode 100644 index 86bfadeec..000000000 Binary files a/models/matcap/puromap.png and /dev/null differ diff --git a/models/matcap/purpmap.png b/models/matcap/purpmap.png deleted file mode 100644 index 400268c38..000000000 Binary files a/models/matcap/purpmap.png and /dev/null differ diff --git a/models/matcap/ragemap.png b/models/matcap/ragemap.png deleted file mode 100644 index 53f9d4773..000000000 Binary files a/models/matcap/ragemap.png and /dev/null differ diff --git a/models/matcap/redmap.png b/models/matcap/redmap.png deleted file mode 100644 index 7f66d8f21..000000000 Binary files a/models/matcap/redmap.png and /dev/null differ diff --git a/models/matcap/silvermap.png b/models/matcap/silvermap.png deleted file mode 100644 index 6b435d0aa..000000000 Binary files a/models/matcap/silvermap.png and /dev/null differ diff --git a/models/modelnotes.txt b/models/modelnotes.txt index dc7bde861..2b032b220 100644 --- a/models/modelnotes.txt +++ b/models/modelnotes.txt @@ -1,49 +1,78 @@ # DLC Weaponset Weapon models: - - Itamex Hammer - - Plasma Blaster + x Itamex Hammer + ½ Plasma Blaster - Puntzer Beta - Puntzer Gamma - - Quadravol - - Sparkster Rifle - - Mortal Rifle + x Sheen HMG + x Quadravol + ¼ Sparkster Rifle + x Mortal Rifle - Ray-Khom - Rafan-Kos Ammo models: - - Plasma Ammo + x Plasma Ammo - SMW.05 Ammo - - Single - - Beta speedloader - - Gamma mag - - Sheen Ammo - - Single - - 10 Belt - - 50 Box - - 100 Box - - Quadravol Ammo - - Sparkster Ammo - - Kinylum Round - - Nokron Round - - Mortal Rifle Ammo - - Round - - Mag - - Grenade + - 1/2/3 Round(s) + - Beta Speedloader + - Gamma Mag + x Sheen Ammo + x 1/2/3 Round(s) + x 10 Pack + x 50 Box + x Quadravol Ammo + ½ Sparkster Ammo + ½ 1/2/3 Kinylum Round(s) + ½ 1/2/3 Nokron Round(s) + x Mortal Rifle Ammo + x 1/2/3/5 Round(s) + x Mag + x Grenade - Ray-Khom Ammo - - Single + - 1/2/5 Round(s) - Mag - - Battery - Rafan-Kos Ammo - Pod - Mag Collectible models: - - Saya's Mug + x Saya's Mug -# Final Update +# Misc + +Less generic gib models: + - Meat Chunk [0/3] + - Meat Chunk w/ Bone [0/3] + - Heart/Liver/Stomach [0/3] + +Gag gib models: + x Steak + x Breast + x Drumstick + - Sausage + - Pork Chop + - Bone + - Heart (♥) + - Eyeball + - Fish + - Half-Eaten Sandwich + - Cookie + - Tomato + - Rubber Duck + - Shoe + +New stuff: + - Ballsy Bomb + - Battle-Boi Sentry + +Extra models: + - Hexen keys [0/11] + - Hexen puzzle items [0/9] + +Collectible models: + - Blåhaj Character models: - - Maidbot - - Rika - White Lady diff --git a/models/nashgore/Footprint/Footprint01.png b/models/nashgore/Footprint/Footprint01.png deleted file mode 100644 index 9878bfbb1..000000000 Binary files a/models/nashgore/Footprint/Footprint01.png and /dev/null differ diff --git a/music/swwmgz_c.it b/music/swwmgz_c.it new file mode 100644 index 000000000..3d6d5bf6b Binary files /dev/null and b/music/swwmgz_c.it differ diff --git a/palettes/Cyanblu.pal b/palettes/Cyanblu.pal new file mode 100644 index 000000000..95128d917 Binary files /dev/null and b/palettes/Cyanblu.pal differ diff --git a/palettes/GrandExpl.pal b/palettes/GrandExpl.pal deleted file mode 100644 index bf03ef1c4..000000000 Binary files a/palettes/GrandExpl.pal and /dev/null differ diff --git a/palettes/KinyExpl.pal b/palettes/KinyExpl.pal new file mode 100644 index 000000000..57d9c8a10 Binary files /dev/null and b/palettes/KinyExpl.pal differ diff --git a/palettes/MADCAT.pal b/palettes/MADCAT.pal deleted file mode 100644 index 59b152556..000000000 Binary files a/palettes/MADCAT.pal and /dev/null differ diff --git a/palettes/NokrExpl.pal b/palettes/NokrExpl.pal new file mode 100644 index 000000000..da6e039ad Binary files /dev/null and b/palettes/NokrExpl.pal differ diff --git a/palettes/SWWMGZ.pal b/palettes/SWWMGZ.pal deleted file mode 100644 index 1c73c4cc2..000000000 Binary files a/palettes/SWWMGZ.pal and /dev/null differ diff --git a/palettes/SWWMGZStartup.pal b/palettes/SWWMGZStartup.pal deleted file mode 100644 index a5ab9fcc1..000000000 Binary files a/palettes/SWWMGZStartup.pal and /dev/null differ diff --git a/palettes/SWWMGZTerm.pal b/palettes/SWWMGZTerm.pal deleted file mode 100644 index 0dcf2a063..000000000 Binary files a/palettes/SWWMGZTerm.pal and /dev/null differ diff --git a/patches/castdemo_0001.png b/patches/castdemo_0001.png deleted file mode 100644 index 90177e92a..000000000 Binary files a/patches/castdemo_0001.png and /dev/null differ diff --git a/patches/castdemo_0002.png b/patches/castdemo_0002.png deleted file mode 100644 index 7b80716ff..000000000 Binary files a/patches/castdemo_0002.png and /dev/null differ diff --git a/patches/castdemo_0003.png b/patches/castdemo_0003.png deleted file mode 100644 index 2c7cbf904..000000000 Binary files a/patches/castdemo_0003.png and /dev/null differ diff --git a/patches/castdemo_0004.png b/patches/castdemo_0004.png deleted file mode 100644 index b12c91b5d..000000000 Binary files a/patches/castdemo_0004.png and /dev/null differ diff --git a/patches/castdemo_0005.png b/patches/castdemo_0005.png deleted file mode 100644 index 7015ddd25..000000000 Binary files a/patches/castdemo_0005.png and /dev/null differ diff --git a/patches/castdemo_0006.png b/patches/castdemo_0006.png deleted file mode 100644 index 1c31cbc66..000000000 Binary files a/patches/castdemo_0006.png and /dev/null differ diff --git a/patches/castdemo_0007.png b/patches/castdemo_0007.png deleted file mode 100644 index 6ab947d92..000000000 Binary files a/patches/castdemo_0007.png and /dev/null differ diff --git a/patches/castdemo_0008.png b/patches/castdemo_0008.png deleted file mode 100644 index 8db8b97bb..000000000 Binary files a/patches/castdemo_0008.png and /dev/null differ diff --git a/patches/castdemo_0009.png b/patches/castdemo_0009.png deleted file mode 100644 index 90177e92a..000000000 Binary files a/patches/castdemo_0009.png and /dev/null differ diff --git a/patches/castdemo_0010.png b/patches/castdemo_0010.png deleted file mode 100644 index bc8c7453a..000000000 Binary files a/patches/castdemo_0010.png and /dev/null differ diff --git a/patches/castdemo_0011.png b/patches/castdemo_0011.png deleted file mode 100644 index 7d95acf02..000000000 Binary files a/patches/castdemo_0011.png and /dev/null differ diff --git a/patches/castdemo_0012.png b/patches/castdemo_0012.png deleted file mode 100644 index 5d0bc5fa8..000000000 Binary files a/patches/castdemo_0012.png and /dev/null differ diff --git a/patches/castdemo_0013.png b/patches/castdemo_0013.png deleted file mode 100644 index 59a762d21..000000000 Binary files a/patches/castdemo_0013.png and /dev/null differ diff --git a/patches/castdemo_0014.png b/patches/castdemo_0014.png deleted file mode 100644 index 83806895a..000000000 Binary files a/patches/castdemo_0014.png and /dev/null differ diff --git a/patches/castdemo_0015.png b/patches/castdemo_0015.png deleted file mode 100644 index c4b69fc47..000000000 Binary files a/patches/castdemo_0015.png and /dev/null differ diff --git a/patches/castdemo_0016.png b/patches/castdemo_0016.png deleted file mode 100644 index 444e7ff2b..000000000 Binary files a/patches/castdemo_0016.png and /dev/null differ diff --git a/patches/castdemo_0048.png b/patches/castdemo_0048.png deleted file mode 100644 index ba7be3b0f..000000000 Binary files a/patches/castdemo_0048.png and /dev/null differ diff --git a/patches/castdemo_0049.png b/patches/castdemo_0049.png deleted file mode 100644 index 6f0ad7e01..000000000 Binary files a/patches/castdemo_0049.png and /dev/null differ diff --git a/patches/castdemo_0050.png b/patches/castdemo_0050.png deleted file mode 100644 index f4ca10529..000000000 Binary files a/patches/castdemo_0050.png and /dev/null differ diff --git a/patches/castdemo_0051.png b/patches/castdemo_0051.png deleted file mode 100644 index d3092f27a..000000000 Binary files a/patches/castdemo_0051.png and /dev/null differ diff --git a/patches/castdemo_0052.png b/patches/castdemo_0052.png deleted file mode 100644 index eeba164c8..000000000 Binary files a/patches/castdemo_0052.png and /dev/null differ diff --git a/patches/castdemo_0053.png b/patches/castdemo_0053.png deleted file mode 100644 index 1faeffe0b..000000000 Binary files a/patches/castdemo_0053.png and /dev/null differ diff --git a/patches/castdemo_0054.png b/patches/castdemo_0054.png deleted file mode 100644 index a30397a64..000000000 Binary files a/patches/castdemo_0054.png and /dev/null differ diff --git a/patches/castdemo_0055.png b/patches/castdemo_0055.png deleted file mode 100644 index dc6c5f81a..000000000 Binary files a/patches/castdemo_0055.png and /dev/null differ diff --git a/patches/castdemo_0056.png b/patches/castdemo_0056.png deleted file mode 100644 index 935c52751..000000000 Binary files a/patches/castdemo_0056.png and /dev/null differ diff --git a/patches/castdemo_0057.png b/patches/castdemo_0057.png deleted file mode 100644 index 6576fe0f1..000000000 Binary files a/patches/castdemo_0057.png and /dev/null differ diff --git a/patches/castdemo_0058.png b/patches/castdemo_0058.png deleted file mode 100644 index 3571f01c3..000000000 Binary files a/patches/castdemo_0058.png and /dev/null differ diff --git a/patches/castdemo_0059.png b/patches/castdemo_0059.png deleted file mode 100644 index e767e6988..000000000 Binary files a/patches/castdemo_0059.png and /dev/null differ diff --git a/patches/castdemo_0060.png b/patches/castdemo_0060.png deleted file mode 100644 index 7f1a6b5fe..000000000 Binary files a/patches/castdemo_0060.png and /dev/null differ diff --git a/patches/castdemo_0061.png b/patches/castdemo_0061.png deleted file mode 100644 index a23e9d91a..000000000 Binary files a/patches/castdemo_0061.png and /dev/null differ diff --git a/patches/castdemo_0062.png b/patches/castdemo_0062.png deleted file mode 100644 index 138db3353..000000000 Binary files a/patches/castdemo_0062.png and /dev/null differ diff --git a/patches/castdemo_0063.png b/patches/castdemo_0063.png deleted file mode 100644 index b0d8f7dca..000000000 Binary files a/patches/castdemo_0063.png and /dev/null differ diff --git a/patches/castdemo_0064.png b/patches/castdemo_0064.png deleted file mode 100644 index 4749ce8a3..000000000 Binary files a/patches/castdemo_0064.png and /dev/null differ diff --git a/patches/castdemo_0166.png b/patches/castdemo_0166.png deleted file mode 100644 index a41e63f61..000000000 Binary files a/patches/castdemo_0166.png and /dev/null differ diff --git a/patches/castdemo_0167.png b/patches/castdemo_0167.png deleted file mode 100644 index 2c4d69b97..000000000 Binary files a/patches/castdemo_0167.png and /dev/null differ diff --git a/patches/castdemo_0168.png b/patches/castdemo_0168.png deleted file mode 100644 index 0d0be70da..000000000 Binary files a/patches/castdemo_0168.png and /dev/null differ diff --git a/patches/castdemo_0169.png b/patches/castdemo_0169.png deleted file mode 100644 index d30715a16..000000000 Binary files a/patches/castdemo_0169.png and /dev/null differ diff --git a/patches/castdemo_0170.png b/patches/castdemo_0170.png deleted file mode 100644 index a4a40c9fb..000000000 Binary files a/patches/castdemo_0170.png and /dev/null differ diff --git a/patches/castdemo_0171.png b/patches/castdemo_0171.png deleted file mode 100644 index 01abb2f75..000000000 Binary files a/patches/castdemo_0171.png and /dev/null differ diff --git a/precachefonts.txt b/precachefonts.txt new file mode 100644 index 000000000..0a413eab8 --- /dev/null +++ b/precachefonts.txt @@ -0,0 +1,12 @@ +TewiFont +TewiFontOutline +TewiFontOutlineAlt +MiniwiFont +MiniwiFontOutline +MiniwiFontOutlineAlt +MiniHUDOutline +MiniHUDShadow +XekkasNum +MortalFont20 +MortalFont40 +MortalFont80 diff --git a/readme.txt b/readme.txt index e6b4036b4..40b3685d0 100644 --- a/readme.txt +++ b/readme.txt @@ -1,8 +1,6 @@ - CODENAME: DEMOLITIONIST - a.k.a. - Some Weird Weapons Mod: GZDoom Edition ----------------------------------------- -(C)2020-2022 Marisa Kirisame - UnSX Team + CODENAME: DEMOLITIONIST +-------------------------------------- +(C)2020-2026 Mari the Deer - UnSX Team @@ -15,16 +13,15 @@ Index of contents: 2. Inventory 2.1. Weaponry 2.1.1. Deep Impact - 2.1.2. Pusher - 2.1.3. Explodium Gun - 2.1.4. Spreadgun - 2.1.5. Wallbuster - 2.1.6. Eviscerator - 2.1.7. Hellblazer - 2.1.8. Biospark Carbine - 2.1.9. Silver Bullet JET - 2.1.A. Candy Gun - 2.1.B. Ynykron Artifact + 2.1.2. Explodium Gun + 2.1.3. Spreadgun + 2.1.4. Wallbuster + 2.1.5. Eviscerator + 2.1.6. Hellblazer + 2.1.7. Biospark Carbine + 2.1.8. Silver Bullet JET + 2.1.9. Candy Gun + 2.1.A. Ynykron Artifact 2.2. Powerups 2.2.1. Grilled Cheese Sandwich 2.2.2. Elemental Coating @@ -43,7 +40,7 @@ Index of contents: 2.3. Armors 2.4. Health 2.5. Others - 2.6. DLC Weapon Set 1 + 2.6. DLC Weapon Set 2.6.1. Itamex Hammer 2.6.2. Plasma Blaster 2.6.3. Puntzer Beta @@ -70,8 +67,9 @@ Index of contents: Surprise surprise, after a decade of delving into other works, I have made my epic return! The SWWM series has been, in a way, "rebooted" through this here -project, and so it goes. The UT side of things is pretty much dead for me, I've -jumped ship to GZDoom and boy are the pastures far greener and tastier here. +project, and so it goes. The UT side of things is pretty much dead for me, and +the long-since open sourced Doom engine has proven to be one hell of a +powerhouse for modding, especially the ZDoom family of source ports. 1.2. The Story So Far - - - - - - - - - - - @@ -119,15 +117,7 @@ Secondary fire charges up a big thicc air bullet that rips hard. Remember to keep this puppy recharged by pumping more air, especially for that altfire, which requires 100% charge. -2.1.2. Pusher - -Slot 1. Melee weapon. -What was going to be Ultra Suite 2's flagship melee weapon. -Primary fire drills around. -Secondary fire charges up a nice impaling action. The weapon will fly off if -there's nothing to hit, however, so be careful (unless you want it to). - -2.1.3. Explodium Gun +2.1.2. Explodium Gun Slot 2. Pistol. Available at start. Another SWWM staple, the pocket exploder. @@ -136,29 +126,29 @@ Secondary fire arms the mag and throws it as a grenade. Stronger the more bullets you have left in it. You can have two of them, by the way. -2.1.4. Spreadgun +2.1.3. Spreadgun Slot 3. Shotgun. Coming from Instant Action 3, of all places, here's this thing. Primary fire fires (duh). -Secondary fire switches the ammo type for next reload on tap. Holding it and -tapping the fire button will unload whatever ammo you have inside, in case you -want to use it on the other shotgun weapon. +Secondary fire switches to golden shells (if you've got any). Reload does what you'd expect it to do. -This thing may be unwieldy, but boy does it let you use some fun ammo types. +This thing may be unwieldy, but it's handy in a pinch, as it reloads faster +than the next gun on the list. -2.1.5. Wallbuster +2.1.4. Wallbuster Slot 4. Revolver shotgun. -A slight readjustment of a weapon from Total Destruction (cancelled). +A slight readjustment of a weapon from the never-happened Total Destruction. Primary fire fires one barrel. Secondary fire fires five barrels. Tertiary fire fires all barrels. -Reload opens the reload menu. The instructions provided are self-explanatory. +Reload will start topping up the gun with shells, one cylinder at a time, until +the button is pressed again (or you have no more shells to load). Shooting multiple barrels may allow you to bust doors, bars, and other structures, quite handy. -2.1.6. Eviscerator +2.1.5. Eviscerator Slot 5. Flak cannon. It's back, and it's still pure unadulterated danmaku. @@ -168,7 +158,7 @@ Tertiary fire toggles between wide and tight spread. A rare case of a weapon that doesn't need to reload, as it pulls in ammo from your inventory directly. -2.1.7. Hellblazer +2.1.6. Hellblazer Slot 6. Rocket launcher. We've seen its predecessors before, but now it's time for the new cool kid, the @@ -176,12 +166,11 @@ long-awaited Mk3 model of this marriage between demonic and human technology. Primary fire shoots the rocket. You can hold it to preload a couple more for a burst attack. Tapping the opposite button while doing so will stop the preload. Secondary fire launches it as a bouncing grenade. Same deal. -Tertiary fire cycles ammo types for next reload. But if you're holding in some -rockets, it will instead select targets for seeking. +Tertiary fire, when holding in some rockets, will select targets for seeking. Reload does what you'd expect. But when holding rockets, it clears any selected seek targets. That's pretty much all. -2.1.8. Biospark Carbine +2.1.7. Biospark Carbine Slot 7. Energy weapon. The Sparkster is back, but not in pog form however. @@ -189,21 +178,20 @@ Primary fire shoots a beam, just like in its UnSX 1 incarnation. Secondary fire shoots them balls. You can combo these two, obviously. Tertiary fire ejects the ammo core turning it into a heatseeking orb of death. Reload reloads. You can stack two mags together if you want, for more shoots, -at the price of some slight unstability (you might hurt yourself with it). +at the price of some slight instability (you might hurt yourself with it). -2.1.9. Silver Bullet JET +2.1.8. Silver Bullet JET -Slot 8. Sniper rifle. +Slot 8. Anti-Materiel rifle. The big and bulky brother of that unwieldy thing from Ultra Suite. Primary fire (you guessed it) shoots. -Secondary fire cycles ammo types for reload on tap. On hold, tap primary fire -to manually cycle the bolt, should you need to. +Secondary fire cycles the bolt. Reload does what you'd expect. Tertiary fire is a zoom. Hold to keep increasing the zoom factor, up to 16x. Crouching with this weapon braces it and disengages the recoil compensator, which can definitely cause some self-hurt from how hot the jet gas can get. -2.1.A. Candy Gun +2.1.9. Candy Gun Slot 9. Pistol (but very strong). A tasty treat of sweetness and DEATH. From the lost forever™ Weirdweapons pack. @@ -213,7 +201,7 @@ Holding secondary and primary fire (in that order) will switch to yeeting the entire damn gun, for some absurd reason. It's very effective, though. Considering that you can dispose of it like that, you can hold some spares. -2.1.B. Ynykron Artifact +2.1.A. Ynykron Artifact Slot 0. Divine WMD (replica). The good ol' Mortal Cannon, now in all its unadulterated glory. @@ -277,7 +265,8 @@ things nicely with what it builds. 2.2.9. Lämp -It's a floating magic lamp. It may attract moths. +It's a floating magic lamp. It may attract moths, and these moths will get very +pissed when enemies draw close. 2.2.A. Omnisight @@ -288,6 +277,8 @@ in the minimap, and even highlights where keys and exits are. Quite handy. The Great Anomaly makes a return. Smite all those who dare try to attack you! +Note: May cause immense lag in slaughtermaps, use in moderation. + 2.2.C. Devastation Sigil A return of the olden "Complete Devastation" powerup of the early versions, @@ -312,12 +303,17 @@ damage reduction, so keep that in mind. And lastly there's the armor nuggets. These things can soak up damage like crazy once you get them high enough. Above 100% they'll even start healing you! +Armor works in layers, with the war armor having the highest priority, and the +nuggets having the lowest. What one armor can't fully block, the next one will +have to deal with. For the Doomers out there, this is just how we roll in +Unreal land, we can wear multiple pieces of armor at once. + 2.4. Health - - - - - - -We can go from measly health nuggets that add just one point of health, to the -four-faced tetrahedrons of health or the six-faced cubes. But all of these pale -in comparison to the mighty Refresher, which not only gives you a full 100 hp +From measly health nuggets that add just two points of health, to the 4-faced +tetrahedrons of health or the 6-faced cubes. But all of these pale in +comparison to the mighty Refresher, which not only gives you a full 100 hp boost, up to a cap of 500, but can also autoactivate should you take mortal damage. Unlike the sandwiches, however, the Refresher might not be strong enough to really prevent a lethal death. @@ -335,15 +331,18 @@ very valuable. 2.6. DLC Weapon Set - - - - - - - - - - -Coming soon. But here's a tease. +An additional set of 10 weapons to spice things up. Note that you can only have +one of each in every slot (excluding slot 1), so make sure you pick the right +options for the battles ahead (or you could just disable that mechanic +entirely, if you're the kinda person who prefers to carry EVERYTHING). 2.6.1. Itamex Hammer Slot 1. Melee weapon. A strong as fuck sledgehammer. -Primary fire does side swings. -Secondary fire does an overhead swing. -Tertiery fire does a spin. Keep pressing it to spin more. +Primary fire does the expected hammering. +Secondary fire does a charged overhead swing. +Tertiary fire does a spin. Keep pressing it to spin more. 2.6.2. Plasma Blaster @@ -359,8 +358,7 @@ Can also be dual wielded. Slot 3. Revolver. A six shooter, packing some fine... Drilling power. Primary fire does a shoot. -Secondary fire is held for fast shooting mode, where spamming primary will -shoot faster. +Secondary fire primes a very fast six shoot mode. 2.6.4. Puntzer Gamma @@ -374,9 +372,9 @@ Secondary fire switches fire modes. You won't believe how fast this can go. Slot 5. Heavy machine gun. For those who wished for dakka. Here's the dakka. Primary fire shoots. -Secondary fire shoots faster. -Tertiary fire shoots the fastest. -Watch out for overheating. +Secondary fire increases the speed. +Tertiary fire decreases it. +Three speeds available. Watch out for overheating. 2.6.6. Quadravol @@ -384,7 +382,7 @@ Slot 6. Fireball launcher. A signature weapon of the UnSX series, mighty fireball shooting. Primary fire does a shoot. Secondary fire pumps for more power. -Tertiary fire toggles scatter shot. +Tertiary fire toggles two-handing/one-handing. And yes, it's a levergun, have fun. 2.6.7. Sparkster Rifle @@ -396,30 +394,32 @@ Secondary fire spews red plasma. Both buttons at once release a deadly purple plasma. Has two reloads, for each ammo type. -2.6.8. Mortal Rifle +2.6.8. Ray-Khom -Slot 8. Battle rifle. -A weird as all hell rifle that does everything. -Primary fire does schumt. -Secondary fire the grenade. -Tertiary fire a switch of modes. -Have fun. - -2.6.9. Ray-Khom - -Slot 9. GEP gun. +Slot 8. GEP gun. The most silent way to eliminate Manderley. Primary fire lobs a silent plasma grenade. It goes far, and it blows up good. Secondary fire zaps whatever's in front of you, don't use it underwater. -This weapon has both a primary reload and secondary reload (zoom), as it's -powered by a removable battery. +Tertiary fire is a zoom. And this zoom is smart, it even simulates where the +projectile will fall so you won't miss a shot. +The altfire temporarily drains all the gun's capacitors, do keep that in mind. + +2.6.9. Mortal Rifle + +Slot 9. Battle rifle. +A weird as all hell rifle that does everything. +Primary fire does schumt. +Secondary fire the grenade. +Tertiary fire a switch of modes. Single shot, multiple shots, burst shots, and +even a gosh darned level-piercing railgun like in the ol' days. Have fun. 2.6.A. Rafan-Kos Slot 0. Ultimate weapon. Frickin' laser beams, big of them, very strong. -Primary fire beam. -Secondary fire more beams. +Primary fire beam. Big burn everything. +Secondary fire splits the beam. Multiple burn. +Reload insert more ammo. I'm tired from writing these, good night. @@ -440,34 +440,28 @@ with other people. 3.2. Special Thanks - - - - - - - - - - -Bless all of you from the Doom community that I love so much. -The very awesome and friend-shaped Marrub for making Lithium, one of the many -sources of inspiration for this here mod's little worldbuilding and some other -traits here and there (which you might easily notice). CptSledge and Bunray for making me dive deep into the Doom Modiverse™ and its interconnected lore and worldbuilding. You're a very fine pair of cool buds. -a1337spy for basically becoming the biggest fanboy of this mod. Glad you enjoy -it and its characters and lore (maybe a bit too much, but it's all in healthy -levels). You really are like the little brother I never had (gonna headpat ya). -Valerie Lavender for also supporting this mod and providing some neat little -things. You're a good bun and a good friend, stay awesome. -Kathy for being a real good friend and one who loves my lore and characters so -dearly. Stay cool, and keep creating. Bouncy for being one of the few friends who can just stand there and listen to me rant about lore for several hours straight. Many thanks. -Gutawer for not only being one of my ZScript senseis back in the day, but also -for creating the mighty Gutamatics library, which has made some fancy things -here possible. +a1337spy for the very enthusiastic fanboyism about the mod, its characters and +lore. Oh, and for a little help with some SFX work, too. +Mikolah for the ZPolyobject library, which has made dealing with those things +far easier of a task. KeksDose for being another ZScript mad genius and teaching me a nifty trick to fuck around with VM aborts (which I then perfected). ZZYZX and Nash for a handy piece of code to align stuff to slopes. The math's hard, so I don't think I'd have figured it out on my own. KynikossDragonn for being a good pet. You're still cute even if you deny it. +Vyolette for becoming the voice of the Demolitionist, and for making my life +feel brighter and happier with your sole presence. Lucy for having created the Tewi font, which I still use to this day. Wherever you are, I hope you're doing well. We miss you. All my wonderful patrons, of course, for supporting me economically so I can basically keep working on what I love. It's a bit embarrassing to admit that I wouldn't be able to afford HRT without your help, by the way. +And of course, all of my friends whom I have met throughout the years, and who +have stayed with me all this time, thank you all. [End of file] diff --git a/shaders/glsl/AreaName.fp b/shaders/glsl/AreaName.fp new file mode 100644 index 000000000..87ae92ab0 --- /dev/null +++ b/shaders/glsl/AreaName.fp @@ -0,0 +1,15 @@ +// simple gradient map + +vec3 GradientMap( in float gray ) +{ + vec2 pos = vec2(gray/2.+.25,0.); + return textureLod(gradtex,pos,0.).rgb; +} + +void SetupMaterial( inout Material mat ) +{ + vec4 base = getTexel(vTexCoord.st); + base.rgb = GradientMap(base.x); + mat.Base = base; + mat.Normal = ApplyNormalMap(vTexCoord.st); +} diff --git a/shaders/glsl/BarrierFace.fp b/shaders/glsl/BarrierFace.fp new file mode 100644 index 000000000..edec4913a --- /dev/null +++ b/shaders/glsl/BarrierFace.fp @@ -0,0 +1,9 @@ +// barrier overlay, but shaped like the texture + +void SetupMaterial( inout Material mat ) +{ + vec4 col = getTexel(vTexCoord.st); + vec3 grad = texture(bartex,vec2(0.,fract(vTexCoord.t+timer))).rgb; + mat.Base.rgb = grad*col.a; + mat.Base.a = col.a; +} diff --git a/shaders/glsl/Bilinear.fp b/shaders/glsl/Bilinear.fp deleted file mode 100644 index 9ac7390ec..000000000 --- a/shaders/glsl/Bilinear.fp +++ /dev/null @@ -1,19 +0,0 @@ -// This should act as Bilinear filtering when texture filtering is disabled -// the algo is pretty much public domain, so no credit given - -void SetupMaterial( inout Material mat ) -{ - vec2 size = textureSize(tex,0); - vec2 pxsize = vec2(1./size.x,1./size.y); - vec2 pos = vTexCoord.st; - vec2 f = fract(pos*size); - pos += (.5-f)*pxsize; - vec4 p0q0 = texture(tex,pos); - vec4 p1q0 = texture(tex,pos+vec2(pxsize.x,0)); - vec4 p0q1 = texture(tex,pos+vec2(0,pxsize.y)); - vec4 p1q1 = texture(tex,pos+vec2(pxsize.x,pxsize.y)); - vec4 pInterp_q0 = mix(p0q0,p1q0,f.x); - vec4 pInterp_q1 = mix(p0q1,p1q1,f.x); - mat.Base = mix(pInterp_q0,pInterp_q1,f.y); - mat.Normal = ApplyNormalMap(vTexCoord.st); -} diff --git a/shaders/glsl/CanvasProxy.fp b/shaders/glsl/CanvasProxy.fp new file mode 100644 index 000000000..cc3733ec6 --- /dev/null +++ b/shaders/glsl/CanvasProxy.fp @@ -0,0 +1,33 @@ +// Proxy shader for canvas textures + +#define STRAIGHT_UVS ((CanvasFlags&0x01) != 0) +#define DONT_FIX_ALPHA ((CanvasFlags&0x02) != 0) +#define ALPHA_KEY ((CanvasFlags&0x04) != 0) +#define NO_FULLBRIGHT ((CanvasFlags&0x08) != 0) + +void SetupMaterial( inout Material mat ) +{ + // canvas textures are upside-down when used by models + // this is the default use-case here, so for other situations, + // there's a macro for it™ + if ( STRAIGHT_UVS ) + mat.Base = texture(scrtex,vTexCoord.st); + else + mat.Base = texture(scrtex,vec2(vTexCoord.s,1.-vTexCoord.t)); + // drawing with render styles applied can alter the alpha of the + // canvas itself, which may not be intended, so cap it to 100% here + // unless explicitly disabled + if ( !DONT_FIX_ALPHA ) + mat.Base.a = 1.; + // treat pure black as fully transparent + // used by some special textures + if ( ALPHA_KEY ) + { + if ( mat.Base.rgb == vec3(0.) ) + mat.Base.a = 0.; + } + mat.Normal = ApplyNormalMap(vTexCoord.st); + // by default, canvas textures are treated as fullbright + if ( !NO_FULLBRIGHT ) + mat.Bright = vec4(1.); +} diff --git a/shaders/glsl/Envmap.fp b/shaders/glsl/Envmap.fp new file mode 100644 index 000000000..b0f188b54 --- /dev/null +++ b/shaders/glsl/Envmap.fp @@ -0,0 +1,25 @@ +// equirectangular envmap + gradient rim +#define RECIPROCAL_PI2 0.15915494 + +void SetupMaterial( inout Material mat ) +{ + vec3 norm = normalize(vWorldNormal.xyz); + vec3 eye = normalize(uCameraPos.xyz-pixelpos.xyz); + vec3 rvec = normalize(reflect(eye,norm)); + vec2 uv = vec2(atan(rvec.z,rvec.x)*RECIPROCAL_PI2+.5,asin(rvec.y)*RECIPROCAL_PI2+.5); + vec2 uv2 = vec2(atan(rvec.z,abs(rvec.x))*RECIPROCAL_PI2+.5,asin(rvec.y)*RECIPROCAL_PI2+.5); + vec3 envcol = textureGrad(tex,uv,dFdx(uv2),dFdy(uv2)).rgb*EnvParams.x; + float rim = smoothstep(EnvParams.z,1.,1.-abs(dot(eye,norm))); + vec3 rimcol = textureLod(rimtex,vec2(.25+.5*rim,.5),0.).rgb; + envcol = mix(envcol,rimcol,rim*EnvParams.y); +#ifdef BARRIER_MAP + vec3 grad = texture(bartex,vec2(0.,vTexCoord.t*5.+timer)).rgb; + envcol = (envcol+grad)*.25; +#endif + mat.Base = vec4(envcol,1.); +#ifdef AMBIENT_GLOW + float glow = .75+.25*sin(timer*8.); + mat.Glow = vec4(vec3(glow),1.); +#endif + mat.Normal = ApplyNormalMap(vTexCoord.st); +} diff --git a/shaders/glsl/Envmask.fp b/shaders/glsl/Envmask.fp new file mode 100644 index 000000000..4a68ff748 --- /dev/null +++ b/shaders/glsl/Envmask.fp @@ -0,0 +1,48 @@ +// basic texture + masked equirectangular envmap + gradient rim +// allows for up to three different layers of environment mapping (RGB mask) +#define RECIPROCAL_PI2 0.15915494 + +// keeping this as a define while using vec3 uniforms for the parameters +// ensures that we only need to compile three versions of this material shader +// (at least, because I don't know for sure how shader caching handles that) +#ifndef ENV_LAYERS +#define ENV_LAYERS 1 +#endif + +#define ENV_TWOLAYER ((ENV_LAYERS == 2) || (ENV_LAYERS == 3)) +#define ENV_THREELAYER (ENV_LAYERS == 3) + +void SetupMaterial( inout Material mat ) +{ + vec4 base = getTexel(vTexCoord.st); + vec4 mask = texture(masktex,vTexCoord.st); + vec3 norm = normalize(vWorldNormal.xyz); + vec3 eye = normalize(uCameraPos.xyz-pixelpos.xyz); + vec3 rvec = normalize(reflect(eye,norm)); + vec2 uv = vec2(atan(rvec.z,rvec.x)*RECIPROCAL_PI2+.5,asin(rvec.y)*RECIPROCAL_PI2+.5); + vec2 uv2 = vec2(atan(rvec.z,abs(rvec.x))*RECIPROCAL_PI2+.5,asin(rvec.y)*RECIPROCAL_PI2+.5); + vec2 dTdx = dFdx(uv2); + vec2 dTdy = dFdy(uv2); + float rf = 1.-abs(dot(eye,norm)); + vec3 envcol = textureGrad(envtex,uv,dTdx,dTdy).rgb*EnvFact.x; + float rim = smoothstep(RimStep.x,1.,rf); + vec3 rimcol = textureLod(rimtex,vec2(.25+.5*rim,.5),0.).rgb; + envcol = mix(envcol,rimcol,rim*RimFact.x); + mat.Base = vec4(base.rgb+envcol*mask.x,base.a); +#if ( ENV_TWOLAYER ) + envcol = textureGrad(envtex2,uv,dTdx,dTdy).rgb*EnvFact.y; + rim = smoothstep(RimStep.y,1.,rf); + rimcol = textureLod(rimtex2,vec2(.25+.5*rim,.5),0.).rgb; + envcol = mix(envcol,rimcol,rim*RimFact.y); + mat.Base.rgb += envcol*mask.y; +#endif +#if ( ENV_THREELAYER ) + envcol = textureGrad(envtex3,uv,dTdx,dTdy).rgb*EnvFact.z; + rim = smoothstep(RimStep.z,1.,rf); + rimcol = textureLod(rimtex3,vec2(.25+.5*rim,.5),0.).rgb; + envcol = mix(envcol,rimcol,rim*RimFact.z); + mat.Base.rgb += envcol*mask.z; +#endif + mat.Normal = ApplyNormalMap(vTexCoord.st); + mat.Bright = texture(brighttexture,vTexCoord.st); +} diff --git a/shaders/glsl/Fuzz.fp b/shaders/glsl/Fuzz.fp index 34bbf7828..0976a38e5 100644 --- a/shaders/glsl/Fuzz.fp +++ b/shaders/glsl/Fuzz.fp @@ -6,18 +6,34 @@ float rnd( in vec2 sd ) { //return cos(sd.y*3874.8674+sd.x*6783.5325)*2737.8474; // use noise tex instead of trig-based PRNG, much better and doesn't break on intel - return texelFetch(noisetex,ivec2(mod(sd.x,256.),mod(sd.y,256.)),0).x; + return texelFetch(noisetex,ivec2(int(mod(sd.x,256.)),int(mod(sd.y,256.))),0).x; } // haha are you telling me I can't declare arrays like in C? // what the fuck even is this insane syntax? const vec3 layers[3] = vec3[]( -#ifdef GRAY_COLORS +#if defined(GRAY_COLORS) vec3(1.01,1.07,1.05), vec3(1.06,1.04,1.03), vec3(1.05,1.03,1.01) -#else +#elif defined(ONICOLORS) + vec3(0.61,0.77,0.85), + vec3(0.86,0.64,0.63), + vec3(1.25,0.33,0.41) +#elif defined(SAYACOLORS) + vec3(1.81,0.97,0.75), + vec3(0.36,0.64,0.93), + vec3(1.25,0.33,0.41) +#elif defined(KIRINCOLORS) + vec3(1.31,0.87,1.25), + vec3(0.76,0.64,0.63), + vec3(1.25,1.13,0.21) +#elif defined(MARISACOLORS) + vec3(0.71,0.97,1.05), + vec3(0.96,0.74,0.63), + vec3(0.95,0.93,1.21) +#else // SWWMCOLORS vec3(0.91,0.87,1.95), vec3(0.66,1.84,0.73), vec3(1.35,0.73,1.21) @@ -36,17 +52,13 @@ float[]( 3. ); -#ifndef BASE_RES -#define BASE_RES vec2(640.,400.) -#endif - void SetupMaterial( inout Material mat ) { vec2 coord; vec3 col = vec3(1.); for ( int i=0; i<3; i++ ) { - coord = floor(vTexCoord.st*BASE_RES/zoom[i]); + coord = floor(vTexCoord.st*BaseRes/zoom[i]); col *= layers[i]*2.*abs(fract(rnd(coord)+timer*speed[i])-.5); } #ifdef GRAY_COLORS diff --git a/shaders/glsl/HealthBarD.fp b/shaders/glsl/HealthBarD.fp index ffc20ff92..5e50ca523 100644 --- a/shaders/glsl/HealthBarD.fp +++ b/shaders/glsl/HealthBarD.fp @@ -8,7 +8,7 @@ void SetupMaterial( inout Material mat ) .008764, .002216, .000436, .000067, .000008 ); vec2 coord = vTexCoord.st; - vec2 bresl = TEX_SIZE; + vec2 bresl = BaseRes; vec2 bof = 1./bresl; bof *= .9+.4*texture(noisetex,vec2(fract(timer*.05))).x; vec4 col = texture(tex,coord); diff --git a/shaders/glsl/KeyBlink.fp b/shaders/glsl/KeyBlink.fp deleted file mode 100644 index ceb11d8f5..000000000 --- a/shaders/glsl/KeyBlink.fp +++ /dev/null @@ -1,11 +0,0 @@ -// emulate keycard blink cycle on hud model - -void SetupMaterial( inout Material mat ) -{ - float mixfct = floor(mod(timer*35.,20.)/10.); - vec2 uv = vTexCoord.st*vec2(.5,1.); - uv.x += mixfct*.5; - mat.Base = getTexel(uv); - mat.Normal = ApplyNormalMap(vTexCoord.st); - mat.Bright = vec4(mix(vec3(1.),vec3(0.),mixfct),1.); -} diff --git a/shaders/glsl/LogoAnimated.fp b/shaders/glsl/LogoAnimated.fp deleted file mode 100644 index 214cc1d74..000000000 --- a/shaders/glsl/LogoAnimated.fp +++ /dev/null @@ -1,94 +0,0 @@ -// animated SWWM GZ logo - -#define overlay(a,b) (a<0.5)?(2.0*a*b):(1.0-(2.0*(1.0-a)*(1.0-b))) -const float pi = 3.14159265358979323846; - -vec2 warpcoord( in vec2 uv ) -{ - vec2 offset; - offset.y = sin(pi*2.*(uv.x*8.+timer*.25))*.005; - offset.x = cos(pi*2.*(uv.y*4.+timer*.25))*.005; - return uv+offset; -} - -// based on gimp color to alpha, but simplified -vec4 blacktoalpha( in vec4 src ) -{ - vec4 dst = src; - float alpha = 0.; - float a; - a = clamp(dst.r,0.,1.); - if ( a > alpha ) alpha = a; - a = clamp(dst.g,0.,1.); - if ( a > alpha ) alpha = a; - a = clamp(dst.b,0.,1.); - if ( a > alpha ) alpha = a; - if ( alpha > 0. ) - { - float ainv = 1./alpha; - dst.rgb *= ainv; - } - dst.a *= alpha; - return dst; -} -#ifdef NO_BILINEAR -#define BilinearSample(x,y,z,w) texture(x,y) -#else -vec4 BilinearSample( in sampler2D tex, in vec2 pos, in vec2 size, in vec2 pxsize ) -{ - vec2 f = fract(pos*size); - pos += (.5-f)*pxsize; - vec4 p0q0 = texture(tex,pos); - vec4 p1q0 = texture(tex,pos+vec2(pxsize.x,0)); - vec4 p0q1 = texture(tex,pos+vec2(0,pxsize.y)); - vec4 p1q1 = texture(tex,pos+vec2(pxsize.x,pxsize.y)); - vec4 pInterp_q0 = mix(p0q0,p1q0,f.x); - vec4 pInterp_q1 = mix(p0q1,p1q1,f.x); - return mix(pInterp_q0,pInterp_q1,f.y); -} -#endif - -void SetupMaterial( inout Material mat ) -{ - // store these to save some time - vec2 size = vec2(textureSize(Layer1,0)); - vec2 pxsize = 1./size; - // y'all ready for this multilayered madness? - vec2 uv = vTexCoord.st; - // base blank layer - vec4 base = vec4(0.,0.,0.,1.); - // first layer, blend - vec4 tmp = BilinearSample(Layer1,uv,size,pxsize); - base.rgb = mix(base.rgb,tmp.rgb,tmp.a); - // second layer, warp then add - tmp = BilinearSample(Layer2,warpcoord(uv),size,pxsize); - base.rgb += tmp.rgb; - // third layer, multiply - tmp = BilinearSample(Layer3,uv,size,pxsize); - base.rgb *= tmp.rgb; - // fourth layer, add - tmp = BilinearSample(Layer4,uv,size,pxsize); - base.rgb += tmp.rgb; - // fifth layer, add - tmp = BilinearSample(Layer5,uv,size,pxsize); - base.rgb += tmp.rgb; - // first layer again, overlay (w/ alpha blend) - tmp = BilinearSample(Layer1,uv,size,pxsize); - vec4 tmp2; - tmp2.r = overlay(base.r,tmp.r); - tmp2.g = overlay(base.g,tmp.g); - tmp2.b = overlay(base.b,tmp.b); - base.rgb = mix(base.rgb,tmp2.rgb,tmp.a); - // black to alpha - base = blacktoalpha(base); - // add alpha of first layer - base.a += BilinearSample(Layer1,uv,size,pxsize).a; - // sixth layer, alpha blend - tmp = BilinearSample(Layer6,uv,size,pxsize); - tmp2.a = tmp.a+base.a*(1-tmp.a); - tmp2.rgb = (tmp.rgb*tmp.a+base.rgb*base.a*(1-tmp.a))/tmp2.a; - // clamp - tmp2 = clamp(tmp2,vec4(0.),vec4(1.)); - // ding, logo's done - mat.Base = tmp2; -} diff --git a/shaders/glsl/NewLogoAnimated.fp b/shaders/glsl/NewLogoAnimated.fp index b5644ef29..c2ed56264 100644 --- a/shaders/glsl/NewLogoAnimated.fp +++ b/shaders/glsl/NewLogoAnimated.fp @@ -1,17 +1,21 @@ // animated DEMOLITIONIST logo -#define overlay(a,b) (a<0.5)?(2.0*a*b):(1.0-(2.0*(1.0-a)*(1.0-b))) -#define hardlight(a,b) (2*a<1.0)?clamp(2.0*a*b,0.0,1.0):clamp(1.0-2.0*(1.0-b)*(1.0-a),0.0,1.0) -const float pi = 3.14159265358979323846; +#define PI 3.14159265 vec2 warpcoord( in vec2 uv ) { vec2 offset; - offset.y = sin(pi*2.*(uv.x*8.+timer*.25))*.005; - offset.x = cos(pi*2.*(uv.y*4.+timer*.25))*.005; + offset.y = sin(PI*2.*(uv.x*8.+timer*.25))*.005; + offset.x = cos(PI*2.*(uv.y*4.+timer*.25))*.005; return uv+offset; } +float hardlight( in float a, in float b ) +{ + if ( 2.*a < 1. ) return clamp(2.*a*b,0.,1.); + return clamp(1.-2.*(1.-b)*(1.-a),0.,1.); +} + // based on gimp color to alpha, but simplified vec4 blacktoalpha( in vec4 src ) { @@ -32,61 +36,42 @@ vec4 blacktoalpha( in vec4 src ) dst.a *= alpha; return dst; } -#ifdef NO_BILINEAR -#define BilinearSample(x,y,z,w) texture(x,y) -#else -vec4 BilinearSample( in sampler2D tex, in vec2 pos, in vec2 size, in vec2 pxsize ) -{ - vec2 f = fract(pos*size); - pos += (.5-f)*pxsize; - vec4 p0q0 = texture(tex,pos); - vec4 p1q0 = texture(tex,pos+vec2(pxsize.x,0)); - vec4 p0q1 = texture(tex,pos+vec2(0,pxsize.y)); - vec4 p1q1 = texture(tex,pos+vec2(pxsize.x,pxsize.y)); - vec4 pInterp_q0 = mix(p0q0,p1q0,f.x); - vec4 pInterp_q1 = mix(p0q1,p1q1,f.x); - return mix(pInterp_q0,pInterp_q1,f.y); -} -#endif vec3 GradientMap( in vec3 color ) { float gray = dot(color,vec3(.333333)); - vec2 size = vec2(512.,8.); - vec2 pxsize = 1./size; - return BilinearSample(gradtex,vec2(gray/2.+.25,0),size,pxsize).rgb; + vec2 pos = vec2(gray/2.+.25,0.); + return textureLod(gradtex,pos,0.).rgb; } void SetupMaterial( inout Material mat ) { - // store these to save some time - vec2 size = vec2(textureSize(Layer1,0)); - vec2 pxsize = 1./size; // y'all ready for this multilayered madness? vec2 uv = vTexCoord.st; // base blank layer vec4 base = vec4(1.); // first layer, warp then multiply red - base.rgb *= BilinearSample(Layer1,warpcoord(uv),size,pxsize).x; + base.rgb *= texture(Layer1,warpcoord(uv),-.5).x; // first layer, multiply green - base.rgb *= BilinearSample(Layer1,uv,size,pxsize).y; + base.rgb *= texture(Layer1,uv,-.5).y; // first layer, add blue - base.rgb += BilinearSample(Layer1,uv,size,pxsize).zzz; + base.rgb += texture(Layer1,uv,-.5).zzz; // multiply by red fade - base.rgb *= texture(fadetex,vec2(.5)).x; + base.rgb *= textureLod(fadetex,vec2(.5),0.).x; // gradient map result base.rgb = GradientMap(base.rgb); // color to alpha base = blacktoalpha(base); // second layer, alpha blend - vec4 tmp = BilinearSample(Layer2,uv,size,pxsize); + vec4 tmp = texture(Layer2,uv,-.5); vec4 tmp2; - tmp2.a = tmp.a+base.a*(1-tmp.a); - tmp2.rgb = (tmp.rgb*tmp.a+base.rgb*base.a*(1-tmp.a))/tmp2.a; + tmp2.a = tmp.a+base.a*(1.-tmp.a); + tmp2.rgb = (tmp.rgb*tmp.a+base.rgb*base.a*(1.-tmp.a))/tmp2.a; base = tmp2; // third layer, hard light with two multiplied masks - tmp.xy = BilinearSample(Layer3,uv,size,pxsize).xy; - tmp.y *= BilinearSample(Layer3,clamp(uv+vec2(1.-texture(fadetex,vec2(.5)).y*2.,0.),vec2(0.),vec2(1.)),size,pxsize).z; + tmp.xy = texture(Layer3,uv,-.5).xy; + tmp.z = textureLod(fadetex,vec2(.5),0.).y; + tmp.y *= texture(Layer3,clamp(uv+vec2(1.-tmp.z*2.,0.),vec2(0.),vec2(1.)),-.5).z; tmp2.r = hardlight(base.r,tmp.x); tmp2.g = hardlight(base.g,tmp.x); tmp2.b = hardlight(base.b,tmp.x); diff --git a/shaders/glsl/Overbright.fp b/shaders/glsl/Overbright.fp new file mode 100644 index 000000000..d3be3cb0e --- /dev/null +++ b/shaders/glsl/Overbright.fp @@ -0,0 +1,10 @@ +// multiplies rgb and brightmap intensity + +void SetupMaterial( inout Material mat ) +{ + mat.Base = getTexel(vTexCoord.st); + mat.Base.rgb *= OverFact; + mat.Normal = ApplyNormalMap(vTexCoord.st); + mat.Bright = texture(brighttexture,vTexCoord.st); + mat.Bright.rgb *= OverFact; +} diff --git a/shaders/glsl/Oversample.fp b/shaders/glsl/Oversample.fp deleted file mode 100644 index 2aab18c66..000000000 --- a/shaders/glsl/Oversample.fp +++ /dev/null @@ -1,15 +0,0 @@ -// This should act as a virtual NormalNx upscaler when using texture filtering - -void SetupMaterial( inout Material mat ) -{ - vec2 size = textureSize(tex,0); - vec2 pxsize = vec2(1./size.x,1./size.y); - vec2 pos = vTexCoord.st-vec2(.5)*pxsize; - vec2 fcoord = fract(pos*size-vec2(.5)); - vec2 coeff = fcoord*6.; // virtual upscale factor I guess? - float threshold = 0.; // this controls sharpness, kinda - coeff = (coeff-threshold)*1./(1.-2*threshold); - coeff = clamp(coeff,0.,1.); - mat.Base = texture(tex,pos+pxsize*(coeff-fcoord)); - mat.Normal = ApplyNormalMap(vTexCoord.st); -} diff --git a/shaders/glsl/PerfectlyGeneric.fp b/shaders/glsl/PerfectlyGeneric.fp index 93ec3c49f..a06f80a8e 100644 --- a/shaders/glsl/PerfectlyGeneric.fp +++ b/shaders/glsl/PerfectlyGeneric.fp @@ -3,16 +3,13 @@ void SetupMaterial( inout Material mat ) { mat.Base = getTexel(vTexCoord.st); - mat.Normal = ApplyNormalMap(vTexCoord.st); -} - -vec4 ProcessLight( Material mat, vec4 color ) -{ + float mixfct = mix(1.,.5,floor(abs(vTexCoord.s-.5)*2.133333)); + mixfct = mix(mixfct,.5,floor(abs(vTexCoord.t-.5)*2.13333)); + mat.Base.rgb *= mixfct; vec3 light = vec3(-.6,.7,.8); float val = max(dot(normalize(vEyeNormal.xyz),light),.25); val += .2*pow(max(dot(normalize(vEyeNormal.xyz),light),0.),4.); - float mixfct = mix(1.,.5,floor(abs(vTexCoord.s-.5)*2.133333)); - mixfct = mix(mixfct,.5,floor(abs(vTexCoord.t-.5)*2.13333)); - val *= mixfct; - return vec4(vec3(val),color.a); + mat.Base.rgb *= val; + mat.Bright = vec4(1.); + mat.Normal = ApplyNormalMap(vTexCoord.st); } diff --git a/shaders/glsl/PlasmaBlast.fp b/shaders/glsl/PlasmaBlast.fp new file mode 100644 index 000000000..f9147b0c3 --- /dev/null +++ b/shaders/glsl/PlasmaBlast.fp @@ -0,0 +1,33 @@ +// basic texture + masked equirectangular envmap + gradient rim +// + dynamic glows (Plasma Blaster specific) +#define RECIPROCAL_PI2 0.15915494 + +void SetupMaterial( inout Material mat ) +{ + vec4 base = getTexel(vTexCoord.st); + float mask = texture(masktex,vTexCoord.st).x; + vec3 norm = normalize(vWorldNormal.xyz); + vec3 eye = normalize(uCameraPos.xyz-pixelpos.xyz); + vec3 rvec = normalize(reflect(eye,norm)); + vec2 uv = vec2(atan(rvec.z,rvec.x)*RECIPROCAL_PI2+.5,asin(rvec.y)*RECIPROCAL_PI2+.5); + vec2 uv2 = vec2(atan(rvec.z,abs(rvec.x))*RECIPROCAL_PI2+.5,asin(rvec.y)*RECIPROCAL_PI2+.5); + vec3 envcol = textureGrad(envtex,uv,dFdx(uv2),dFdy(uv2)).rgb*EnvParams.x; + float rim = smoothstep(EnvParams.z,1.,1.-abs(dot(eye,norm))); + vec3 rimcol = textureLod(rimtex,vec2(.25+.5*rim,.5),0.).rgb; + envcol = mix(envcol,rimcol,rim*EnvParams.y); + mat.Base = vec4(base.rgb+envcol*mask,base.a); + mat.Normal = ApplyNormalMap(vTexCoord.st); + mat.Bright = texture(brighttexture,vTexCoord.st); + // status canvas tex (only need two channels) + vec2 fade = textureLod(fadetex,vec2(.5),0.).rg; + // red: battery connection led + vec3 bat = texture(battex,vTexCoord.st).rgb*fade.r; + mat.Base.rgb += bat; + mat.Bright.rgb += vec3(max(bat.r,max(bat.g,bat.b))); + // green: charge glow + float chg = texture(chgtex,vTexCoord.st).x*fade.g; + // TODO noise + vec3 grad = textureLod(gradtex,vec2(.25+chg*.5,.5),0.).rgb; + mat.Base.rgb += grad; + mat.Bright.rgb += vec3(chg); +} diff --git a/shaders/glsl/Shinemap.fp b/shaders/glsl/Shinemap.fp deleted file mode 100644 index ea744a0ef..000000000 --- a/shaders/glsl/Shinemap.fp +++ /dev/null @@ -1,26 +0,0 @@ -// pseudo-matcap - -void SetupMaterial( inout Material mat ) -{ - vec3 rnorm = normalize(vEyeNormal.xyz)*vec3(1,-1,1); -#ifdef BARRIER_MAP - vec4 basemap = getTexel(rnorm.xy*.49+.5); - basemap.rgb *= .25; - vec3 grad = texture(bartex,vec2(0.,vTexCoord.t*5.+timer)).rgb; - grad *= .25; - mat.Base = basemap+vec4(grad,0.); -#else - mat.Base = getTexel(rnorm.xy*.49+.5); -#endif - mat.Normal = ApplyNormalMap(vTexCoord.st); -} - -vec4 ProcessLight( Material mat, vec4 color ) -{ -#ifdef AMBIENT_GLOW - float glow = .75+.25*sin(timer*8); - return vec4(vec3(glow),color.a); -#else - return color; -#endif -} diff --git a/shaders/glsl/Shinemask.fp b/shaders/glsl/Shinemask.fp deleted file mode 100644 index eed4df75f..000000000 --- a/shaders/glsl/Shinemask.fp +++ /dev/null @@ -1,12 +0,0 @@ -// basic texture + masked pseudo-matcap - -void SetupMaterial( inout Material mat ) -{ - vec4 base = getTexel(vTexCoord.st); - float mask = texture(masktex,vTexCoord.st).x; - vec3 rnorm = normalize(vEyeNormal.xyz)*vec3(1,-1,1); - mat.Base = vec4(base.rgb+texture(envtex,rnorm.xy*.49+.5).rgb*mask,base.a); - mat.Normal = ApplyNormalMap(vTexCoord.st); - if ( (uTextureMode&TEXF_Brightmap) != 0 ) - mat.Bright = texture(brighttexture,vTexCoord.st); -} diff --git a/shaders/pp/Barrier.fp b/shaders/pp/Barrier.fp index 998e373c6..a8fb7525b 100644 --- a/shaders/pp/Barrier.fp +++ b/shaders/pp/Barrier.fp @@ -3,8 +3,8 @@ void main() { vec2 uv = TexCoord; - vec2 bresl = textureSize(InputTexture,0); - vec2 sr = vec2(1.0,bresl.y/bresl.x); + vec2 bresl = vec2(textureSize(InputTexture,0)); + vec2 sr = vec2(1.,bresl.y/bresl.x); vec2 flood = texture(WarpTex,uv*sr+vec2(timer*.02,-timer*.04)).xy; flood += texture(WarpTex,uv*sr*2.+vec2(-timer*.07,-timer*.13)).xy; flood += texture(WarpTex,uv*sr*.5+vec2(0.,-timer*.06)).xy; diff --git a/shaders/pp/BokehSel.fp b/shaders/pp/BokehSel.fp new file mode 100644 index 000000000..7addd8b2e --- /dev/null +++ b/shaders/pp/BokehSel.fp @@ -0,0 +1,27 @@ +// blur fade from Spooktober + +#define PI 3.14159265 + +void main() +{ + vec2 coord = TexCoord; + vec2 tsiz = vec2(textureSize(InputTexture,0)); + vec2 bof = vec2((tsiz.y/tsiz.x),1.)/256.; + vec4 res = texture(InputTexture,coord); + int rsamples, tstep = 1; + float bstep; + vec2 rcoord; + for ( int i=1; i<=3; i++ ) + { + rsamples = i*3; + for ( int j=0; j.5)?(2.*a*(.5+b)):(1.-2.*(1.-a)*(1.-((.5+b)))) +#define darkmask(a,b) (a>0.5)?(2.0*a*(0.5+b)):(1.0-2.0*(1.0-a)*(1.0-((0.5+b)))) vec3 grain( in vec3 res, in vec2 coord ) { float ts = Timer*nf; - vec2 s1 = coord+vec2(0.,ts); - vec2 s2 = coord+vec2(ts,0.); - vec2 s3 = coord+vec2(ts,ts); - float n1, n2, n3; - vec2 nr = textureSize(NoiseTexture,0); - s1 = mod(s1*nm1.x*nr,1.); - s2 = mod(s2*nm1.y*nr,1.); - s3 = mod(s3*nm1.z*nr,1.); - n1 = texture(NoiseTexture,s1).r; - n2 = texture(NoiseTexture,s2).g; - n3 = texture(NoiseTexture,s3).b; - s1 = coord+vec2(ts+n1*nk,n2*nk); - s2 = coord+vec2(n2,ts+n3*nk); - s3 = coord+vec2(ts+n3*nk,ts+n1*nk); - s1 = mod(s1*nm2.x*nr,1.); - s2 = mod(s2*nm2.y*nr,1.); - s3 = mod(s3*nm2.z*nr,1.); - n1 = texture(NoiseTexture,s1).r; - n2 = texture(NoiseTexture,s2).g; - n3 = texture(NoiseTexture,s3).b; - float n4 = (n1+n2+n3)/3.0; - vec3 ng = vec3(n4); - vec3 nc = vec3(n1,n2,n3); - vec3 nt = pow(clamp(mix(ng,nc,ns),0.,1.),vec3(np)); + float nx = texture(NoiseTexture,coord*nm.x+vec2(ts,0.)).x; + float ny = texture(NoiseTexture,coord*nm.y+vec2(0.,ts)).x; + float n = clamp(texture(NoiseTexture,vec2(nx,ny)*nm.z+vec2(ts,ts)).x,0.,1.); + float nt = pow(n,np); float bn = 1.-clamp((res.r+res.g+res.b)/3.,0.,1.); bn = pow(bn,bnp); - vec3 nn = clamp(nt*bn,vec3(0.),vec3(1.)); - res.r = darkmask(res.r,(nn.r*ni)); - res.g = darkmask(res.g,(nn.g*ni)); - res.b = darkmask(res.b,(nn.b*ni)); + res.rgb += vec3(nt*bn*ni); return res; } @@ -52,7 +28,7 @@ void main() { vec2 coord = TexCoord; vec4 res = texture(InputTexture,coord); - vec2 sfact = max(vec2(640.,400.),textureSize(InputTexture,0)*.5); + vec2 sfact = max(vec2(640.,400.),vec2(textureSize(InputTexture,0))*.5); coord = floor(coord*sfact)/sfact; res.rgb = grain(res.rgb,coord); FragColor = res; diff --git a/shaders/pp/Invinciscreen.fp b/shaders/pp/Invinciscreen.fp index aefc5f068..2320006ce 100644 --- a/shaders/pp/Invinciscreen.fp +++ b/shaders/pp/Invinciscreen.fp @@ -5,14 +5,14 @@ vec3 sharpened( vec2 uv ) vec3 col = texture(InputTexture,uv).rgb*9.; vec2 bresl = vec2(textureSize(InputTexture,0)); vec2 bof = vec2(1./bresl.x,1./bresl.y); - col -= texture(InputTexture,uv+vec2(bof.x,0)).rgb; - col -= texture(InputTexture,uv+vec2(2.*bof.x,0)).rgb; - col -= texture(InputTexture,uv+vec2(-bof.x,0)).rgb; - col -= texture(InputTexture,uv+vec2(-2.*bof.x,0)).rgb; - col -= texture(InputTexture,uv+vec2(0,bof.y)).rgb; - col -= texture(InputTexture,uv+vec2(0,2.*bof.y)).rgb; - col -= texture(InputTexture,uv+vec2(0,-bof.y)).rgb; - col -= texture(InputTexture,uv+vec2(0,-2.*bof.y)).rgb; + col -= texture(InputTexture,uv+vec2(bof.x,0.)).rgb; + col -= texture(InputTexture,uv+vec2(2.*bof.x,0.)).rgb; + col -= texture(InputTexture,uv+vec2(-bof.x,0.)).rgb; + col -= texture(InputTexture,uv+vec2(-2.*bof.x,0.)).rgb; + col -= texture(InputTexture,uv+vec2(0.,bof.y)).rgb; + col -= texture(InputTexture,uv+vec2(0.,2.*bof.y)).rgb; + col -= texture(InputTexture,uv+vec2(0.,-bof.y)).rgb; + col -= texture(InputTexture,uv+vec2(0.,-2.*bof.y)).rgb; return col; } @@ -26,5 +26,5 @@ void main() vec2 suv = fract((uv-.5)*(1.-.01*i*(.3+str*4.))+.5); col += sharpened(suv)*pow(p,2.4)*vec3(1.2,.7,.2)*(.4+str); } - FragColor = vec4(col,1.0); + FragColor = vec4(col,1.); } diff --git a/shaders/pp/LavaWarp.fp b/shaders/pp/LavaWarp.fp index 7482097e8..8e3c29d99 100644 --- a/shaders/pp/LavaWarp.fp +++ b/shaders/pp/LavaWarp.fp @@ -5,10 +5,10 @@ vec2 calcdist( vec2 duv ) { vec2 uv = vec2(0.); vec2 dist = 2.*texture(warptex,duv*.2).xy-1.; - dist.x *= abs(mod(dist.y+timer*0.34536,4.)-2.)-1.; + dist.x *= abs(mod(dist.y+timer*.34536,4.)-2.)-1.; uv.x += dist.x*.02*dfact; dist = 2.*texture(warptex,(duv+uv)*.3).xy-1.; - dist.y *= abs(mod(dist.x+timer*0.25363,4.)-2.)-1.; + dist.y *= abs(mod(dist.x+timer*.25363,4.)-2.)-1.; uv.y -= dist.y*.03*dfact; return uv; } @@ -16,7 +16,7 @@ vec2 calcdist( vec2 duv ) void main() { vec2 uv = TexCoord+calcdist(TexCoord-vec2(0.,timer*.02)); - vec2 bresl = textureSize(InputTexture,0); + vec2 bresl = vec2(textureSize(InputTexture,0)); vec2 sr = vec2(1.,bresl.y/bresl.x); float p = distance(uv,vec2(.5)); uv = (uv-.5)*(1.-dfact*.07)+.5; diff --git a/shaders/pp/Ragescreen.fp b/shaders/pp/Ragescreen.fp index 0caa7be56..8638ce04d 100644 --- a/shaders/pp/Ragescreen.fp +++ b/shaders/pp/Ragescreen.fp @@ -18,5 +18,5 @@ void main() } col /= 5.; col *= vec3(1.2,.9,.7); - FragColor = vec4(col,1.0); + FragColor = vec4(col,1.); } diff --git a/shaders/pp/SilverScope.fp b/shaders/pp/SilverScope.fp index 48c4915e5..8b3983725 100644 --- a/shaders/pp/SilverScope.fp +++ b/shaders/pp/SilverScope.fp @@ -6,17 +6,17 @@ void main() { vec2 uv = TexCoord.st; vec3 base = texture(InputTexture,uv).rgb; - vec2 bof = 1.0/textureSize(InputTexture,0); - int rsamples, tstep = 1; - vec2 bstr = bof*4.0; + vec2 bof = 1./vec2(textureSize(InputTexture,0)); + float rsamples, tstep = 1.; + vec2 bstr = bof*4.; float bstep; vec2 rcoord; - for ( int i=1; i<=5; i++ ) + for ( float i=1.; i<=5.; i+=1. ) { - rsamples = i*3; - for ( int j=0; j sz.y ) p.x *= sz.x/sz.y; else p.y *= sz.y/sz.x; vec3 col = texture(InputTexture,uv+p*pow(length(p),8.)*20.).rgb; diff --git a/shaders/pp/SlimeWarp.fp b/shaders/pp/SlimeWarp.fp index 220b8fdcd..082dc5971 100644 --- a/shaders/pp/SlimeWarp.fp +++ b/shaders/pp/SlimeWarp.fp @@ -5,10 +5,10 @@ vec2 calcdist( vec2 duv ) { vec2 uv = vec2(0.); vec2 dist = 2.*texture(warptex,duv*.4).xy-1.; - dist.x *= abs(mod(dist.y+timer*0.24536,4.)-2.)-1.; + dist.x *= abs(mod(dist.y+timer*.24536,4.)-2.)-1.; uv.x += dist.x*.02*dfact; dist = 2.*texture(warptex,(duv+uv)*.3).xy-1.; - dist.y *= abs(mod(dist.x+timer*0.15363,4.)-2.)-1.; + dist.y *= abs(mod(dist.x+timer*.15363,4.)-2.)-1.; uv.y -= dist.y*.03*dfact; return uv; } @@ -16,7 +16,7 @@ vec2 calcdist( vec2 duv ) void main() { vec2 uv = TexCoord+calcdist(TexCoord-vec2(0.,timer*.08)); - vec2 bresl = textureSize(InputTexture,0); + vec2 bresl = vec2(textureSize(InputTexture,0)); vec2 sr = vec2(1.,bresl.y/bresl.x); float p = distance(uv,vec2(.5)); uv = (uv-.5)*(1.-dfact*.11)+.5; diff --git a/shaders/pp/WaterWarp.fp b/shaders/pp/WaterWarp.fp index 76deeee8c..d42189465 100644 --- a/shaders/pp/WaterWarp.fp +++ b/shaders/pp/WaterWarp.fp @@ -5,10 +5,10 @@ vec2 calcdist( vec2 duv ) { vec2 uv = vec2(0.); vec2 dist = 2.*texture(warptex,duv*.2).xy-1.; - dist.x *= abs(mod(dist.y+timer*0.34536,4.)-2.)-1.; + dist.x *= abs(mod(dist.y+timer*.34536,4.)-2.)-1.; uv.x += dist.x*.03*dfact; dist = 2.*texture(warptex,(duv+uv)*.3).xy-1.; - dist.y *= abs(mod(dist.x+timer*0.45363,4.)-2.)-1.; + dist.y *= abs(mod(dist.x+timer*.45363,4.)-2.)-1.; uv.y -= dist.y*.02*dfact; return uv; } @@ -16,7 +16,7 @@ vec2 calcdist( vec2 duv ) void main() { vec2 uv = TexCoord+calcdist(TexCoord-vec2(0.,timer*.2)); - vec2 bresl = textureSize(InputTexture,0); + vec2 bresl = vec2(textureSize(InputTexture,0)); vec2 sr = vec2(1.,bresl.y/bresl.x); float p = distance(uv,vec2(.5)); uv = (uv-.5)*(1.-dfact*.12)+.5; diff --git a/shaders/pp/WindBlur.fp b/shaders/pp/WindBlur.fp new file mode 100644 index 000000000..2bd9eddbf --- /dev/null +++ b/shaders/pp/WindBlur.fp @@ -0,0 +1,19 @@ +// simple linear wind blur effect for hammer spin + +void main() +{ + vec4 res = vec4(0.); + float d = Speed*.002; + float w = 1.2; + vec2 s = TexCoord; + float sum = 0.; + for ( int i=0; i<64; i++ ) + { + res += w*texture(InputTexture,s); + sum += w; + w *= .95; + s -= d*WindDir; + } + res /= sum; + FragColor = mix(texture(InputTexture,TexCoord),vec4(res.rgb,1.),Fade*.75); +} diff --git a/sndinfo.base b/sndinfo.base new file mode 100644 index 000000000..3ef5c3b39 --- /dev/null +++ b/sndinfo.base @@ -0,0 +1,197 @@ +$pitchshiftrange 0 + +crash/crash1 = "sounds/DUCK.ogg" +crash/crash2 = "sounds/BORK98.ogg" +crash/crash3 = "sounds/BORKXP.ogg" +crash/crash4 = "sounds/GNOME.ogg" +crash/crash5 = "sounds/FRANCETIM.ogg" +crash/crash6 = "sounds/ONO.ogg" +crash/crash7 = "sounds/GURA.ogg" +crash/crash8 = "sounds/SNORE.ogg" +$random crash/crash { crash/crash1 crash/crash2 crash/crash3 crash/crash4 crash/crash5 crash/crash6 crash/crash7 crash/crash8 } +crash/glass = "sounds/GLASSCRK.ogg" +crash/curb = "sounds/CURB.ogg" +bestsound = "sounds/CORK.ogg" +haha/dab = "sounds/DAB.ogg" +bruh = "sounds/BRUH.ogg" +squeak = "sounds/SQUEAK.ogg" +recordscratch = "sounds/RECSCRAP.ogg" +hdoom/horny = "sounds/saya/saya_pervert.ogg" +hdoom/bonk = "sounds/clonk/clonk6.ogg" +compat/warn = "sounds/UTWARN.ogg" +hahaha/hahaha = "sounds/HAHAHA.ogg" +title/explo1 = "sounds/OUCHEX1.ogg" +title/explo2 = "sounds/OUCHEX2.ogg" +title/explo3 = "sounds/OUCHEX3.ogg" +title/explo4 = "sounds/OUCHEX4.ogg" +$random title/explo { title/explo1 title/explo2 title/explo3 title/explo4 } +$limit title/explo 64 +title/thump = "sounds/TitleThump.ogg" +$limit title/thump 16 + +misc/secret = "sounds/CTF5.ogg" +misc/keytry = "sounds/LOCKDOOR.ogg" +misc/w_pkup = "sounds/general/wpickup.ogg" +misc/w_pkup_vip = "sounds/general/wpickup_vip.ogg" +misc/p_pkup = "sounds/general/ppickup.ogg" +misc/p_pkup_vip = "sounds/general/ppickup_vip.ogg" +misc/i_pkup = "sounds/general/ipickup.ogg" +misc/k_pkup = "sounds/general/kpickup.ogg" +misc/ammo_pkup = "sounds/general/apickup.ogg" +misc/bullet_pkup = "sounds/general/bpickup.ogg" +misc/ammo_pkup_vip = "sounds/general/apickup_vip.ogg" +misc/bullet_pkup_vip = "sounds/general/bpickup_vip.ogg" +misc/armor_pkup = "sounds/general/spickup.ogg" +misc/health_pkup = "sounds/general/hpickup.ogg" +misc/spawn = "sounds/CORK.ogg" +misc/teleport = "sounds/general/teleport.ogg" +misc/chat = "sounds/CHATBEEP.ogg" +misc/emone = "sounds/EMONE.ogg" +misc/trombone = "sounds/SADTROMBONE.ogg" +misc/lamborghini = "sounds/GNAWLIDGE.ogg" +misc/nocheat = "sounds/DSNOPE.ogg" +misc/drumroll = "sounds/DRUMROLL.ogg" +misc/tada = "sounds/TADA.ogg" +misc/heart = "sounds/KOKORO.ogg" +misc/achievement = "sounds/CTF6.ogg" +misc/wow = "sounds/WOW.ogg" +misc/yippeee = "Sounds/YIPPEEE.ogg" +misc/achievement2 = "sounds/YAY.ogg" +misc/orbexplode = "sounds/ORBEXPLODE.ogg" +misc/omgfart = "sounds/omgfart.ogg" +misc/voice = "sounds/dlgvoice.ogg" +misc/frag = "sounds/GFRAG.ogg" +misc/invchange = "sounds/INVSEL.ogg" +misc/invuse = "sounds/INVUSE.ogg" +misc/gibber1 = "sounds/general/Gib1.ogg" +misc/gibber2 = "sounds/general/Gib2.ogg" +misc/gibber3 = "sounds/general/Gib3.ogg" +misc/gibber4 = "sounds/general/Gib4.ogg" +misc/gibber5 = "sounds/general/Gib5.ogg" +$random misc/gibber { misc/gibber1 misc/gibber2 misc/gibber3 misc/gibber4 misc/gibber5 } +misc/gibhit1 = "sounds/general/gibP1.ogg" +misc/gibhit2 = "sounds/general/gibP3.ogg" +misc/gibhit3 = "sounds/general/gibP4.ogg" +misc/gibhit4 = "sounds/general/gibP5.ogg" +misc/gibhit5 = "sounds/general/gibP6.ogg" +$random misc/gibhit { misc/gibhit1 misc/gibhit2 misc/gibhit3 misc/gibhit4 misc/gibhit5 } +misc/blooddrop = "sounds/general/bloddrop.ogg" +misc/bodythump = "sounds/general/thump.ogg" +misc/flame1 = "sounds/general/onfire1.ogg" +misc/flame2 = "sounds/general/onfire2.ogg" +misc/flame3 = "sounds/general/onfire3.ogg" +misc/flame4 = "sounds/general/onfire4.ogg" +$random misc/flame { misc/flame1 misc/flame2 misc/flame3 misc/flame4 } +$limit misc/flame 32 +misc/magitem = "sounds/general/magitem.ogg" +$limit misc/magitem 16 +misc/newarea = "sounds/general/AreaName.ogg" +$alias misc/interstart title/explo +$alias misc/intercnt menu/demoscroll +$alias misc/intercntdone menu/buyinv +$alias misc/interdone misc/w_pkup +$limit misc/intercnt 32 + +misc/underwater = "sounds/general/uWater1a.ogg" +misc/underslime = "sounds/general/uGoop1.ogg" +misc/underlava = "sounds/general/uLava1.ogg" +misc/waterenter = "sounds/general/DIVE.ogg" +misc/slimeenter = "sounds/general/GoopJ1.ogg" +misc/lavaenter = "sounds/general/LavaJ1.ogg" +misc/waterexit = "sounds/general/surfaceb.ogg" +misc/slimeexit = "sounds/general/GoopE1.ogg" +misc/lavaexit = "sounds/general/LavaE1.ogg" + +misc/slughit1 = "sounds/general/slughit1.ogg" +misc/slughit2 = "sounds/general/slughit2.ogg" +$random misc/slughit { misc/slughit1 misc/slughit2 } +misc/slughitf1 = "sounds/general/slughitf1.ogg" +misc/slughitf2 = "sounds/general/slughitf2.ogg" +$random misc/slughitf { misc/slughitf1 misc/slughitf2 } + +misc/ricochet1 = "sounds/general/ric1.ogg" +misc/ricochet2 = "sounds/general/ric2.ogg" +misc/ricochet3 = "sounds/general/ric3.ogg" +$random misc/ricochet { misc/ricochet1 misc/ricochet2 misc/ricochet3 } + +misc/parry_ds1 = "sounds/general/parry_ds1.ogg" +misc/parry_ds2 = "sounds/general/parry_ds2.ogg" +misc/parry_ds3 = "sounds/general/parry_ds3.ogg" +$random misc/soulsparry { misc/parry_ds1 misc/parry_ds2 misc/parry_ds3 } + +misc/clonk1 = "sounds/clonk/clonk1.ogg" +misc/clonk2 = "sounds/clonk/clonk2.ogg" +misc/clonk3 = "sounds/clonk/clonk3.ogg" +misc/clonk4 = "sounds/clonk/clonk4.ogg" +misc/clonk5 = "sounds/clonk/clonk5.ogg" +misc/clonk6 = "sounds/clonk/clonk6.ogg" +misc/clonk7 = "sounds/clonk/clonk7.ogg" +misc/clonk8 = "sounds/clonk/clonk8.ogg" +misc/clonk9 = "sounds/clonk/clonk9.ogg" +misc/clonk10 = "sounds/clonk/clonk10.ogg" +misc/clonk11 = "sounds/clonk/clonk11.ogg" +$random misc/clonk { misc/clonk1 misc/clonk2 misc/clonk3 misc/clonk4 misc/clonk5 misc/clonk6 misc/clonk7 misc/clonk8 misc/clonk9 misc/clonk10 misc/clonk11 } + +newkeen/hit = "sounds/keenhit.ogg" +newkeen/die = "sounds/keendie.ogg" +newkeen/fall = "sounds/keenfall.ogg" +newkeen/bounce = "sounds/keenbounce.ogg" + +menu/activate = "sounds/hmenu/hmenu1.ogg" +menu/backup = "sounds/hmenu/hmenu2.ogg" +menu/prompt = "sounds/hmenu/hmenu1.ogg" +menu/cursor = "sounds/hmenu/hmenu4.ogg" +menu/change = "sounds/hmenu/hmenu3.ogg" +menu/invalid = "sounds/hmenu/hmenu3.ogg" +menu/dismiss = "sounds/hmenu/hmenu2.ogg" +menu/choose = "sounds/hmenu/hmenu2.ogg" +menu/clear = "sounds/hmenu/hmenu2.ogg" +menu/advance = "sounds/hmenu/hmenu1.ogg" + +// SNDINFO quirk: have to manually clear the pitch shift of all the redefined vanilla sounds +$pitchshift misc/secret 0 +$pitchshift misc/keytry 0 +$pitchshift misc/w_pkup 0 +$pitchshift misc/p_pkup 0 +$pitchshift misc/spawn 0 +$pitchshift misc/teleport 0 +$pitchshift misc/chat 0 +$pitchshift misc/invuse 0 +$pitchshift menu/activate 0 +$pitchshift menu/backup 0 +$pitchshift menu/prompt 0 +$pitchshift menu/cursor 0 +$pitchshift menu/change 0 +$pitchshift menu/invalid 0 +$pitchshift menu/dismiss 0 +$pitchshift menu/choose 0 +$pitchshift menu/clear 0 +$pitchshift menu/advance 0 + +menu/demoopen = "sounds/menu/openkbase.ogg" +menu/demosecret = "sounds/menu/findsecret.ogg" +menu/demochat = "sounds/menu/chatsnd.ogg" +menu/demotab = "sounds/menu/menutab.ogg" +menu/demosel = "sounds/menu/menuset.ogg" +menu/demoscroll = "sounds/menu/menuscroll.ogg" +$volume menu/demoscroll 0.3 +menu/democlose = "sounds/menu/menuclose.ogg" + +menu/fail = "sounds/menu/failuse.ogg" +menu/noinvuse = "sounds/menu/failinv.ogg" +menu/buyinv = "sounds/menu/buysnd.ogg" + +StartupTick = DSEMPTY + +world/watersplash = "sounds/terrain/DSSPLASH.ogg" +world/watersplash2 = "sounds/terrain/DSSPLSML.ogg" +world/lavasizzle = "sounds/terrain/DSLVSIZ.ogg" +world/lavasizzle2 = "sounds/terrain/DSLVSIZ2.ogg" +world/sludgegloop = "sounds/terrain/DSPLOOSH.ogg" +world/sludgegloop2 = "sounds/terrain/DSPLOSML.ogg" +$limit world/watersplash 8 +$limit world/watersplash2 8 +$limit world/lavasizzle 8 +$limit world/lavasizzle2 8 +$limit world/sludgegloop 8 +$limit world/sludgegloop2 8 diff --git a/sndinfo.defvoice b/sndinfo.defvoice new file mode 100644 index 000000000..e0d7db6d0 --- /dev/null +++ b/sndinfo.defvoice @@ -0,0 +1,444 @@ +$pitchshiftrange 0 + +voice/default/death1 = "sounds/voice/default/demodeath1.ogg" +voice/default/death2 = "sounds/voice/default/demodeath2.ogg" +voice/default/death3 = "sounds/voice/default/demodeath3.ogg" +voice/default/death4 = "sounds/voice/default/demodeath4.ogg" +voice/default/death5 = "sounds/voice/default/demodeath5.ogg" +voice/default/death6 = "sounds/voice/default/demodeath6.ogg" +voice/default/death7 = "sounds/voice/default/demodeath7.ogg" +voice/default/death8 = "sounds/voice/default/demodeath8.ogg" +voice/default/grunt1 = "sounds/voice/default/demogrunt1.ogg" +voice/default/grunt2 = "sounds/voice/default/demogrunt2.ogg" +voice/default/grunt3 = "sounds/voice/default/demogrunt3.ogg" +voice/default/grunt4 = "sounds/voice/default/demogrunt4.ogg" +voice/default/grunt5 = "sounds/voice/default/demogrunt5.ogg" +voice/default/usegrunt1 = "sounds/voice/default/demousegrunt1.ogg" +voice/default/usegrunt2 = "sounds/voice/default/demousegrunt2.ogg" +voice/default/usegrunt3 = "sounds/voice/default/demousegrunt3.ogg" +voice/default/usegrunt4 = "sounds/voice/default/demousegrunt4.ogg" +voice/default/hipain1 = "sounds/voice/default/demohipain1.ogg" +voice/default/hipain2 = "sounds/voice/default/demohipain2.ogg" +voice/default/hipain3 = "sounds/voice/default/demohipain3.ogg" +voice/default/lopain1 = "sounds/voice/default/demolopain1.ogg" +voice/default/lopain2 = "sounds/voice/default/demolopain2.ogg" +voice/default/pain1 = "sounds/voice/default/demopain1.ogg" +voice/default/pain2 = "sounds/voice/default/demopain2.ogg" +voice/default/pain3 = "sounds/voice/default/demopain3.ogg" +voice/default/jump1 = "sounds/voice/default/demojump1.ogg" +voice/default/jump2 = "sounds/voice/default/demojump2.ogg" +voice/default/jump3 = "sounds/voice/default/demojump3.ogg" +voice/default/jump4 = "sounds/voice/default/demojump4.ogg" +voice/default/jump5 = "sounds/voice/default/demojump5.ogg" +voice/default/kiss1 = "sounds/voice/default/demokiss1.ogg" +voice/default/kiss2 = "sounds/voice/default/demokiss2.ogg" +voice/default/kiss3 = "sounds/voice/default/demokiss3.ogg" +voice/default/kiss4 = "sounds/voice/default/demokiss4.ogg" +voice/default/kiss5 = "sounds/voice/default/demokiss5.ogg" +voice/default/kiss6 = "sounds/voice/default/demokiss6.ogg" +voice/default/kiss7 = "sounds/voice/default/demokiss7.ogg" +voice/default/kiss8 = "sounds/voice/default/demokiss8.ogg" +voice/default/kiss9 = "sounds/voice/default/demokiss9.ogg" +voice/default/kiss10 = "sounds/voice/default/demokiss10.ogg" + +voice/default/fightstart1 = "sounds/voice/default/va/demofightstart1.ogg" +voice/default/fightstart2 = "sounds/voice/default/va/demofightstart2.ogg" +voice/default/fightstart3 = "sounds/voice/default/va/demofightstart3.ogg" +voice/default/fightstart4 = "sounds/voice/default/va/demofightstart4.ogg" +voice/default/fightstart5 = "sounds/voice/default/va/demofightstart5.ogg" +voice/default/fightstart6 = "sounds/voice/default/va/demofightstart6.ogg" +voice/default/fightstart7 = "sounds/voice/default/va/demofightstart7.ogg" +voice/default/fightstart8 = "sounds/voice/default/va/demofightstart8.ogg" +voice/default/fightstart9 = "sounds/voice/default/va/demofightstart9.ogg" +voice/default/fightstart10 = "sounds/voice/default/va/demofightstart10.ogg" +voice/default/fightstart11 = "sounds/voice/default/va/demofightstart11.ogg" +voice/default/fightstart12 = "sounds/voice/default/va/demofightstart12.ogg" +voice/default/fightstart13 = "sounds/voice/default/va/demofightstart13.ogg" +voice/default/fightstart14 = "sounds/voice/default/va/demofightstart14.ogg" +voice/default/fightstart15 = "sounds/voice/default/va/demofightstart15.ogg" +voice/default/fightstart16 = "sounds/voice/default/va/demofightstart16.ogg" +voice/default/fightstart17 = "sounds/voice/default/va/demofightstart17.ogg" +voice/default/fightstart18 = "sounds/voice/default/va/demofightstart18.ogg" +voice/default/fightstart19 = "sounds/voice/default/va/demofightstart19.ogg" +voice/default/fightstart20 = "sounds/voice/default/va/demofightstart20.ogg" +voice/default/fightstart21 = "sounds/voice/default/va/demofightstart21.ogg" +voice/default/fightstart22 = "sounds/voice/default/va/demofightstart22.ogg" +voice/default/findsecret1 = "sounds/voice/default/va/demofindsecret1.ogg" +voice/default/findsecret2 = "sounds/voice/default/va/demofindsecret2.ogg" +voice/default/findsecret3 = "sounds/voice/default/va/demofindsecret3.ogg" +voice/default/findsecret4 = "sounds/voice/default/va/demofindsecret4.ogg" +voice/default/findsecret5 = "sounds/voice/default/va/demofindsecret5.ogg" +voice/default/findsecret6 = "sounds/voice/default/va/demofindsecret6.ogg" +voice/default/findsecret7 = "sounds/voice/default/va/demofindsecret7.ogg" +voice/default/findsecret8 = "sounds/voice/default/va/demofindsecret8.ogg" +voice/default/findsecret9 = "sounds/voice/default/va/demofindsecret9.ogg" +voice/default/findsecret10 = "sounds/voice/default/va/demofindsecret10.ogg" +voice/default/findsecret11 = "sounds/voice/default/va/demofindsecret11.ogg" +voice/default/findsecret12 = "sounds/voice/default/va/demofindsecret12.ogg" +voice/default/findsecret13 = "sounds/voice/default/va/demofindsecret13.ogg" +voice/default/getweapon1 = "sounds/voice/default/va/demogetweapon1.ogg" +voice/default/getweapon2 = "sounds/voice/default/va/demogetweapon2.ogg" +voice/default/getweapon3 = "sounds/voice/default/va/demogetweapon3.ogg" +voice/default/getweapon4 = "sounds/voice/default/va/demogetweapon4.ogg" +voice/default/getweapon5 = "sounds/voice/default/va/demogetweapon5.ogg" +voice/default/getweapon6 = "sounds/voice/default/va/demogetweapon6.ogg" +voice/default/getweapon7 = "sounds/voice/default/va/demogetweapon7.ogg" +voice/default/getweapon8 = "sounds/voice/default/va/demogetweapon8.ogg" +voice/default/getweapon9 = "sounds/voice/default/va/demogetweapon9.ogg" +voice/default/getweapon10 = "sounds/voice/default/va/demogetweapon10.ogg" +voice/default/getweapon11 = "sounds/voice/default/va/demogetweapon11.ogg" +voice/default/getweapon12 = "sounds/voice/default/va/demogetweapon12.ogg" +voice/default/getweapon13 = "sounds/voice/default/va/demogetweapon13.ogg" +voice/default/locked1 = "sounds/voice/default/va/demolocked1.ogg" +voice/default/locked2 = "sounds/voice/default/va/demolocked2.ogg" +voice/default/locked3 = "sounds/voice/default/va/demolocked3.ogg" +voice/default/locked4 = "sounds/voice/default/va/demolocked4.ogg" +voice/default/locked5 = "sounds/voice/default/va/demolocked5.ogg" +voice/default/locked6 = "sounds/voice/default/va/demolocked6.ogg" +voice/default/locked7 = "sounds/voice/default/va/demolocked7.ogg" +voice/default/jammed1 = "sounds/voice/default/va/demojammed1.ogg" +voice/default/jammed2 = "sounds/voice/default/va/demojammed2.ogg" +voice/default/jammed3 = "sounds/voice/default/va/demojammed3.ogg" +voice/default/jammed4 = "sounds/voice/default/va/demojammed4.ogg" +voice/default/jammed5 = "sounds/voice/default/va/demojammed5.ogg" +voice/default/jammed6 = "sounds/voice/default/va/demojammed6.ogg" +voice/default/jammed7 = "sounds/voice/default/va/demojammed7.ogg" +voice/default/mapstart1 = "sounds/voice/default/va/demomapstart1.ogg" +voice/default/mapstart2 = "sounds/voice/default/va/demomapstart2.ogg" +voice/default/mapstart3 = "sounds/voice/default/va/demomapstart3.ogg" +voice/default/mapstart4 = "sounds/voice/default/va/demomapstart4.ogg" +voice/default/mapstart5 = "sounds/voice/default/va/demomapstart5.ogg" +voice/default/mapstart6 = "sounds/voice/default/va/demomapstart6.ogg" +voice/default/mapstart7 = "sounds/voice/default/va/demomapstart7.ogg" +voice/default/mapstart8 = "sounds/voice/default/va/demomapstart8.ogg" +voice/default/mapstart9 = "sounds/voice/default/va/demomapstart9.ogg" +voice/default/mapstart10 = "sounds/voice/default/va/demomapstart10.ogg" +voice/default/mapstart11 = "sounds/voice/default/va/demomapstart11.ogg" +voice/default/mapstart12 = "sounds/voice/default/va/demomapstart12.ogg" +voice/default/mapstart13 = "sounds/voice/default/va/demomapstart13.ogg" +voice/default/mapstart14 = "sounds/voice/default/va/demomapstart14.ogg" +voice/default/mapstart15 = "sounds/voice/default/va/demomapstart15.ogg" +voice/default/mapstart16 = "sounds/voice/default/va/demomapstart16.ogg" +voice/default/mapstart17 = "sounds/voice/default/va/demomapstart17.ogg" +voice/default/puzzfail1 = "sounds/voice/default/va/demopuzzfail1.ogg" +voice/default/puzzfail2 = "sounds/voice/default/va/demopuzzfail2.ogg" +voice/default/puzzfail3 = "sounds/voice/default/va/demopuzzfail3.ogg" +voice/default/puzzfail4 = "sounds/voice/default/va/demopuzzfail4.ogg" +voice/default/puzzfail5 = "sounds/voice/default/va/demopuzzfail5.ogg" +voice/default/puzzfail6 = "sounds/voice/default/va/demopuzzfail6.ogg" +voice/default/puzzsucc1 = "sounds/voice/default/va/demopuzzsucc1.ogg" +voice/default/puzzsucc2 = "sounds/voice/default/va/demopuzzsucc2.ogg" +voice/default/puzzsucc3 = "sounds/voice/default/va/demopuzzsucc3.ogg" +voice/default/puzzsucc4 = "sounds/voice/default/va/demopuzzsucc4.ogg" +voice/default/puzzsucc5 = "sounds/voice/default/va/demopuzzsucc5.ogg" +voice/default/puzzsucc6 = "sounds/voice/default/va/demopuzzsucc6.ogg" +voice/default/scorekill1 = "sounds/voice/default/va/demoscorekill1.ogg" +voice/default/scorekill2 = "sounds/voice/default/va/demoscorekill2.ogg" +voice/default/scorekill3 = "sounds/voice/default/va/demoscorekill3.ogg" +voice/default/scorekill4 = "sounds/voice/default/va/demoscorekill4.ogg" +voice/default/scorekill5 = "sounds/voice/default/va/demoscorekill5.ogg" +voice/default/scorekill6 = "sounds/voice/default/va/demoscorekill6.ogg" +voice/default/scorekill7 = "sounds/voice/default/va/demoscorekill7.ogg" +voice/default/scorekill8 = "sounds/voice/default/va/demoscorekill8.ogg" +voice/default/scorekill9 = "sounds/voice/default/va/demoscorekill9.ogg" +voice/default/scorekill10 = "sounds/voice/default/va/demoscorekill10.ogg" +voice/default/scorekill11 = "sounds/voice/default/va/demoscorekill11.ogg" +voice/default/scorekill12 = "sounds/voice/default/va/demoscorekill12.ogg" +voice/default/scorekill13 = "sounds/voice/default/va/demoscorekill13.ogg" +voice/default/scorekill14 = "sounds/voice/default/va/demoscorekill14.ogg" +voice/default/scorekill15 = "sounds/voice/default/va/demoscorekill15.ogg" +voice/default/scorekill16 = "sounds/voice/default/va/demoscorekill16.ogg" +voice/default/scorekill17 = "sounds/voice/default/va/demoscorekill17.ogg" +voice/default/scorekill18 = "sounds/voice/default/va/demoscorekill18.ogg" +voice/default/scorekill19 = "sounds/voice/default/va/demoscorekill19.ogg" +voice/default/scorekill20 = "sounds/voice/default/va/demoscorekill20.ogg" +voice/default/scorekill21 = "sounds/voice/default/va/demoscorekill21.ogg" +voice/default/scorekill22 = "sounds/voice/default/va/demoscorekill22.ogg" +voice/default/scorekill23 = "sounds/voice/default/va/demoscorekill23.ogg" +voice/default/scorekill24 = "sounds/voice/default/va/demoscorekill24.ogg" +voice/default/scorekill25 = "sounds/voice/default/va/demoscorekill25.ogg" +voice/default/scorekill26 = "sounds/voice/default/va/demoscorekill26.ogg" +voice/default/scorekill27 = "sounds/voice/default/va/demoscorekill27.ogg" +voice/default/scorekill28 = "sounds/voice/default/va/demoscorekill28.ogg" +voice/default/friendkill1 = "sounds/voice/default/va/demofriendkill1.ogg" +voice/default/friendkill2 = "sounds/voice/default/va/demofriendkill2.ogg" +voice/default/friendkill3 = "sounds/voice/default/va/demofriendkill3.ogg" +voice/default/friendkill4 = "sounds/voice/default/va/demofriendkill4.ogg" +voice/default/gethit1 = "sounds/voice/default/va/demogethit1.ogg" +voice/default/gethit2 = "sounds/voice/default/va/demogethit2.ogg" +voice/default/gethit3 = "sounds/voice/default/va/demogethit3.ogg" +voice/default/gethit4 = "sounds/voice/default/va/demogethit4.ogg" +voice/default/gethit5 = "sounds/voice/default/va/demogethit5.ogg" +voice/default/gethit6 = "sounds/voice/default/va/demogethit6.ogg" +voice/default/gethit7 = "sounds/voice/default/va/demogethit7.ogg" +voice/default/gethit8 = "sounds/voice/default/va/demogethit8.ogg" +voice/default/gethit9 = "sounds/voice/default/va/demogethit9.ogg" +voice/default/gethit10 = "sounds/voice/default/va/demogethit10.ogg" +voice/default/gethit11 = "sounds/voice/default/va/demogethit11.ogg" +voice/default/gethit12 = "sounds/voice/default/va/demogethit12.ogg" +voice/default/gethit13 = "sounds/voice/default/va/demogethit13.ogg" +voice/default/gethit14 = "sounds/voice/default/va/demogethit14.ogg" +voice/default/gethit15 = "sounds/voice/default/va/demogethit15.ogg" +voice/default/gethit16 = "sounds/voice/default/va/demogethit16.ogg" +voice/default/gethit17 = "sounds/voice/default/va/demogethit17.ogg" +voice/default/gethit18 = "sounds/voice/default/va/demogethit18.ogg" +voice/default/gethit19 = "sounds/voice/default/va/demogethit19.ogg" +voice/default/gethit20 = "sounds/voice/default/va/demogethit20.ogg" +voice/default/friendhit1 = "sounds/voice/default/va/demofriendhit1.ogg" +voice/default/friendhit2 = "sounds/voice/default/va/demofriendhit2.ogg" +voice/default/friendhit3 = "sounds/voice/default/va/demofriendhit3.ogg" +voice/default/friendhit4 = "sounds/voice/default/va/demofriendhit4.ogg" +voice/default/friendhit5 = "sounds/voice/default/va/demofriendhit5.ogg" +voice/default/friendhit6 = "sounds/voice/default/va/demofriendhit6.ogg" +voice/default/friendhit7 = "sounds/voice/default/va/demofriendhit7.ogg" +voice/default/greet1 = "sounds/voice/default/va/demogreet1.ogg" +voice/default/greet2 = "sounds/voice/default/va/demogreet2.ogg" +voice/default/greet3 = "sounds/voice/default/va/demogreet3.ogg" +voice/default/greet4 = "sounds/voice/default/va/demogreet4.ogg" +voice/default/greet5 = "sounds/voice/default/va/demogreet5.ogg" +voice/default/greet6 = "sounds/voice/default/va/demogreet6.ogg" +voice/default/greet7 = "sounds/voice/default/va/demogreet7.ogg" +voice/default/hitfriend1 = "sounds/voice/default/va/demohitfriend1.ogg" +voice/default/hitfriend2 = "sounds/voice/default/va/demohitfriend2.ogg" +voice/default/hitfriend3 = "sounds/voice/default/va/demohitfriend3.ogg" +voice/default/ragekit1 = "sounds/voice/default/va/demoragekit1.ogg" +voice/default/ragekit2 = "sounds/voice/default/va/demoragekit2.ogg" +voice/default/ragekit3 = "sounds/voice/default/va/demoragekit3.ogg" +voice/default/ragekit4 = "sounds/voice/default/va/demoragekit4.ogg" +voice/default/ragekit5 = "sounds/voice/default/va/demoragekit5.ogg" +voice/default/ragekit6 = "sounds/voice/default/va/demoragekit6.ogg" +voice/default/ragekit7 = "sounds/voice/default/va/demoragekit7.ogg" +voice/default/ragekit8 = "sounds/voice/default/va/demoragekit8.ogg" +voice/default/ragekit9 = "sounds/voice/default/va/demoragekit9.ogg" +voice/default/ragekit10 = "sounds/voice/default/va/demoragekit10.ogg" +voice/default/ragekit11 = "sounds/voice/default/va/demoragekit11.ogg" +voice/default/ragekit12 = "sounds/voice/default/va/demoragekit12.ogg" +voice/default/ragekit13 = "sounds/voice/default/va/demoragekit13.ogg" +voice/default/ragekit14 = "sounds/voice/default/va/demoragekit14.ogg" +voice/default/ragekit15 = "sounds/voice/default/va/demoragekit15.ogg" +voice/default/ragekit16 = "sounds/voice/default/va/demoragekit16.ogg" +voice/default/ragekit17 = "sounds/voice/default/va/demoragekit17.ogg" +voice/default/koraxgreet1 = "sounds/voice/default/va/demokoraxgreet1.ogg" +voice/default/koraxgreet2 = "sounds/voice/default/va/demokoraxgreet2.ogg" +voice/default/koraxgreet3 = "sounds/voice/default/va/demokoraxgreet3.ogg" +voice/default/koraxgreet4 = "sounds/voice/default/va/demokoraxgreet4.ogg" +voice/default/koraxgreet5 = "sounds/voice/default/va/demokoraxgreet5.ogg" +voice/default/koraxgreet6 = "sounds/voice/default/va/demokoraxgreet6.ogg" +voice/default/koraxgreet7 = "sounds/voice/default/va/demokoraxgreet7.ogg" +voice/default/koraxgreet8 = "sounds/voice/default/va/demokoraxgreet8.ogg" +voice/default/koraxgreet9 = "sounds/voice/default/va/demokoraxgreet9.ogg" +voice/default/koraxgreet10 = "sounds/voice/default/va/demokoraxgreet10.ogg" +voice/default/koraxgreet11 = "sounds/voice/default/va/demokoraxgreet11.ogg" +voice/default/koraxgreet12 = "sounds/voice/default/va/demokoraxgreet12.ogg" +voice/default/koraxgreet13 = "sounds/voice/default/va/demokoraxgreet13.ogg" +voice/default/koraxblood1 = "sounds/voice/default/va/demokoraxblood1.ogg" +voice/default/koraxblood2 = "sounds/voice/default/va/demokoraxblood2.ogg" +voice/default/koraxblood3 = "sounds/voice/default/va/demokoraxblood3.ogg" +voice/default/koraxblood4 = "sounds/voice/default/va/demokoraxblood4.ogg" +voice/default/koraxblood5 = "sounds/voice/default/va/demokoraxblood5.ogg" +voice/default/koraxblood6 = "sounds/voice/default/va/demokoraxblood6.ogg" +voice/default/koraxblood7 = "sounds/voice/default/va/demokoraxblood7.ogg" +voice/default/koraxblood8 = "sounds/voice/default/va/demokoraxblood8.ogg" +voice/default/koraxblood9 = "sounds/voice/default/va/demokoraxblood9.ogg" +voice/default/koraxblood10 = "sounds/voice/default/va/demokoraxblood10.ogg" +voice/default/koraxblood11 = "sounds/voice/default/va/demokoraxblood11.ogg" +voice/default/koraxblood12 = "sounds/voice/default/va/demokoraxblood12.ogg" +voice/default/koraxblood13 = "sounds/voice/default/va/demokoraxblood13.ogg" +voice/default/koraxgame1 = "sounds/voice/default/va/demokoraxgame1.ogg" +voice/default/koraxgame2 = "sounds/voice/default/va/demokoraxgame2.ogg" +voice/default/koraxgame3 = "sounds/voice/default/va/demokoraxgame3.ogg" +voice/default/koraxgame4 = "sounds/voice/default/va/demokoraxgame4.ogg" +voice/default/koraxgame5 = "sounds/voice/default/va/demokoraxgame5.ogg" +voice/default/koraxgame6 = "sounds/voice/default/va/demokoraxgame6.ogg" +voice/default/koraxgame7 = "sounds/voice/default/va/demokoraxgame7.ogg" +voice/default/koraxgame8 = "sounds/voice/default/va/demokoraxgame8.ogg" +voice/default/koraxgame9 = "sounds/voice/default/va/demokoraxgame9.ogg" +voice/default/koraxgame10 = "sounds/voice/default/va/demokoraxgame10.ogg" +voice/default/koraxgame11 = "sounds/voice/default/va/demokoraxgame11.ogg" +voice/default/koraxgame12 = "sounds/voice/default/va/demokoraxgame12.ogg" +voice/default/koraxgame13 = "sounds/voice/default/va/demokoraxgame13.ogg" +voice/default/koraxgame14 = "sounds/voice/default/va/demokoraxgame14.ogg" +voice/default/koraxworship1 = "sounds/voice/default/va/demokoraxworship1.ogg" +voice/default/koraxworship2 = "sounds/voice/default/va/demokoraxworship2.ogg" +voice/default/koraxworship3 = "sounds/voice/default/va/demokoraxworship3.ogg" +voice/default/koraxworship4 = "sounds/voice/default/va/demokoraxworship4.ogg" +voice/default/koraxworship5 = "sounds/voice/default/va/demokoraxworship5.ogg" +voice/default/koraxworship6 = "sounds/voice/default/va/demokoraxworship6.ogg" +voice/default/koraxworship7 = "sounds/voice/default/va/demokoraxworship7.ogg" +voice/default/koraxworship8 = "sounds/voice/default/va/demokoraxworship8.ogg" +voice/default/koraxworship9 = "sounds/voice/default/va/demokoraxworship9.ogg" +voice/default/koraxworship10 = "sounds/voice/default/va/demokoraxworship10.ogg" +voice/default/koraxworship11 = "sounds/voice/default/va/demokoraxworship11.ogg" +voice/default/koraxmasters1 = "sounds/voice/default/va/demokoraxmasters1.ogg" +voice/default/koraxmasters2 = "sounds/voice/default/va/demokoraxmasters2.ogg" +voice/default/koraxmasters3 = "sounds/voice/default/va/demokoraxmasters3.ogg" +voice/default/koraxmasters4 = "sounds/voice/default/va/demokoraxmasters4.ogg" +voice/default/koraxmasters5 = "sounds/voice/default/va/demokoraxmasters5.ogg" +voice/default/koraxmasters6 = "sounds/voice/default/va/demokoraxmasters6.ogg" +voice/default/koraxmasters7 = "sounds/voice/default/va/demokoraxmasters7.ogg" +voice/default/koraxmasters8 = "sounds/voice/default/va/demokoraxmasters8.ogg" +voice/default/koraxmasters9 = "sounds/voice/default/va/demokoraxmasters9.ogg" +voice/default/getdeepimpact = "sounds/voice/default/va/demogetdeepimpact.ogg" +voice/default/getexplodiumgun1 = "sounds/voice/default/va/demogetexplodiumgun1.ogg" +voice/default/getexplodiumgun2 = "sounds/voice/default/va/demogetexplodiumgun2.ogg" +voice/default/getspreadgun = "sounds/voice/default/va/demogetspreadgun.ogg" +voice/default/getwallbuster = "sounds/voice/default/va/demogetwallbuster.ogg" +voice/default/geteviscerator = "sounds/voice/default/va/demogeteviscerator.ogg" +voice/default/gethellblazer = "sounds/voice/default/va/demogethellblazer.ogg" +voice/default/getsparkster = "sounds/voice/default/va/demogetsparkster.ogg" +voice/default/getsilverbullet = "sounds/voice/default/va/demogetsilverbullet.ogg" +voice/default/getcandygun = "sounds/voice/default/va/demogetcandygun.ogg" +voice/default/getynykron = "sounds/voice/default/va/demogetynykron.ogg" +voice/default/getitamexhammer = "sounds/voice/default/va/demogetitamexhammer.ogg" +voice/default/getplasmablast1 = "sounds/voice/default/va/demogetplasmablast1.ogg" +voice/default/getplasmablast2 = "sounds/voice/default/va/demogetplasmablast2.ogg" +voice/default/getpuntzerbeta = "sounds/voice/default/va/demogetpuntzerbeta.ogg" +voice/default/getpuntzergamma = "sounds/voice/default/va/demogetpuntzergamma.ogg" +voice/default/getheavymahsheengun = "sounds/voice/default/va/demogetheavymahsheengun.ogg" +voice/default/getquadravol = "sounds/voice/default/va/demogetquadravol.ogg" +voice/default/getblackfireigniter = "sounds/voice/default/va/demogetblackfireigniter.ogg" +voice/default/getempcarbine = "sounds/voice/default/va/demogetempcarbine.ogg" +voice/default/getraykhom = "sounds/voice/default/va/demogetraykhomdeepimpact.ogg" +voice/default/getgrandlance = "sounds/voice/default/va/demogetgrandlance.ogg" +voice/default/getwhiteglove = "sounds/voice/default/va/demogetwhiteglove.ogg" +voice/default/getnewsparkster = "sounds/voice/default/va/demogetnewsparkster.ogg" +voice/default/getmortalrifle = "sounds/voice/default/va/demogetmortalrifle.ogg" +voice/default/getrafankos = "sounds/voice/default/va/demogetrafankos.ogg" +voice/default/keyget1 = "sounds/voice/default/va/demokeyget1.ogg" +voice/default/keyget2 = "sounds/voice/default/va/demokeyget2.ogg" +voice/default/keyget3 = "sounds/voice/default/va/demokeyget3.ogg" +voice/default/keyget4 = "sounds/voice/default/va/demokeyget4.ogg" +voice/default/keyget5 = "sounds/voice/default/va/demokeyget5.ogg" +voice/default/usefail1 = "sounds/voice/default/va/demousefail1.ogg" +voice/default/usefail2 = "sounds/voice/default/va/demousefail2.ogg" +voice/default/usefail3 = "sounds/voice/default/va/demousefail3.ogg" +voice/default/usefail4 = "sounds/voice/default/va/demousefail4.ogg" +voice/default/usefail5 = "sounds/voice/default/va/demousefail5.ogg" +voice/default/usefail6 = "sounds/voice/default/va/demousefail6.ogg" +voice/default/usefail7 = "sounds/voice/default/va/demousefail7.ogg" +voice/default/usefail8 = "sounds/voice/default/va/demousefail8.ogg" +voice/default/usefail9 = "sounds/voice/default/va/demousefail9.ogg" +voice/default/cubeget = "sounds/voice/default/va/democubeget.ogg" +voice/default/akariget = "sounds/voice/default/va/demoakariget.ogg" +voice/default/signalsget = "sounds/voice/default/va/demosignalsget.ogg" +voice/default/nutatcoget = "sounds/voice/default/va/demonutatcoget.ogg" +voice/default/frispyget = "sounds/voice/default/va/demofrispyget.ogg" +voice/default/sayaget = "sounds/voice/default/va/demosayaget.ogg" +voice/default/mothget = "sounds/voice/default/va/demomothget.ogg" +voice/default/mugget = "sounds/voice/default/va/demomugget.ogg" +voice/default/demoget = "sounds/voice/default/va/demodemoget.ogg" +voice/default/peachget = "sounds/voice/default/va/demopeachget.ogg" +voice/default/breadget = "sounds/voice/default/va/demobreadget.ogg" +voice/default/mangaget = "sounds/voice/default/va/demomangaget.ogg" +voice/default/kiringet = "sounds/voice/default/va/demokiringet.ogg" +voice/default/korax1 = "sounds/voice/default/va/demokorax1.ogg" +voice/default/korax2 = "sounds/voice/default/va/demokorax2.ogg" +voice/default/korax3 = "sounds/voice/default/va/demokorax3.ogg" +voice/default/korax4 = "sounds/voice/default/va/demokorax4.ogg" +voice/default/korax5 = "sounds/voice/default/va/demokorax5.ogg" +voice/default/korax6 = "sounds/voice/default/va/demokorax6.ogg" +voice/default/korax7 = "sounds/voice/default/va/demokorax7.ogg" +voice/default/korax8 = "sounds/voice/default/va/demokorax8.ogg" +voice/default/korax9 = "sounds/voice/default/va/demokorax9.ogg" +voice/default/romero1 = "sounds/voice/default/va/demoromero1.ogg" +voice/default/romero2 = "sounds/voice/default/va/demoromero2.ogg" +voice/default/romero3 = "sounds/voice/default/va/demoromero3.ogg" +voice/default/romero4 = "sounds/voice/default/va/demoromero4.ogg" +voice/default/romero5 = "sounds/voice/default/va/demoromero5.ogg" +voice/default/romero6 = "sounds/voice/default/va/demoromero6.ogg" +voice/default/romero7 = "sounds/voice/default/va/demoromero7.ogg" +voice/default/romero8 = "sounds/voice/default/va/demoromero8.ogg" +voice/default/archangelus1 = "sounds/voice/default/va/demoarchangelus1.ogg" +voice/default/archangelus2 = "sounds/voice/default/va/demoarchangelus2.ogg" +voice/default/archangelus3 = "sounds/voice/default/va/demoarchangelus3.ogg" +voice/default/archangelus4 = "sounds/voice/default/va/demoarchangelus4.ogg" +voice/default/archangelus5 = "sounds/voice/default/va/demoarchangelus5.ogg" +voice/default/archangelus6 = "sounds/voice/default/va/demoarchangelus6.ogg" +voice/default/archangelus7 = "sounds/voice/default/va/demoarchangelus7.ogg" +voice/default/archangelus8 = "sounds/voice/default/va/demoarchangelus8.ogg" +voice/default/origin11 = "sounds/voice/default/va/demoorigin11.ogg" +voice/default/origin12 = "sounds/voice/default/va/demoorigin12.ogg" +voice/default/origin13 = "sounds/voice/default/va/demoorigin13.ogg" +voice/default/origin14 = "sounds/voice/default/va/demoorigin14.ogg" +voice/default/origin15 = "sounds/voice/default/va/demoorigin15.ogg" +voice/default/origin21 = "sounds/voice/default/va/demoorigin21.ogg" +voice/default/origin22 = "sounds/voice/default/va/demoorigin22.ogg" +voice/default/origin23 = "sounds/voice/default/va/demoorigin23.ogg" +voice/default/origin24 = "sounds/voice/default/va/demoorigin24.ogg" +voice/default/origin31 = "sounds/voice/default/va/demoorigin31.ogg" +voice/default/origin32 = "sounds/voice/default/va/demoorigin32.ogg" +voice/default/origin33 = "sounds/voice/default/va/demoorigin33.ogg" +voice/default/origin34 = "sounds/voice/default/va/demoorigin34.ogg" +voice/default/origin35 = "sounds/voice/default/va/demoorigin35.ogg" +voice/default/dsparila1 = "sounds/voice/default/va/demodsparila1.ogg" +voice/default/dsparila2 = "sounds/voice/default/va/demodsparila2.ogg" +voice/default/dsparila3 = "sounds/voice/default/va/demodsparila3.ogg" +voice/default/dsparilb1 = "sounds/voice/default/va/demodsparilb1.ogg" +voice/default/dsparilb2 = "sounds/voice/default/va/demodsparilb2.ogg" +voice/default/dsparilb3 = "sounds/voice/default/va/demodsparilb3.ogg" +voice/default/petandira1 = "sounds/voice/default/va/demopetandira1.ogg" +voice/default/petandira2 = "sounds/voice/default/va/demopetandira2.ogg" +voice/default/petandira3 = "sounds/voice/default/va/demopetandira3.ogg" +voice/default/petandira4 = "sounds/voice/default/va/demopetandira4.ogg" +voice/default/petandira5 = "sounds/voice/default/va/demopetandira5.ogg" +voice/default/petandira6 = "sounds/voice/default/va/demopetandira6.ogg" +voice/default/petandira7 = "sounds/voice/default/va/demopetandira7.ogg" +voice/default/buttonpush1 = "sounds/voice/default/va/demobuttonpush1.ogg" +voice/default/buttonpush2 = "sounds/voice/default/va/demobuttonpush2.ogg" +voice/default/buttonpush3 = "sounds/voice/default/va/demobuttonpush3.ogg" +voice/default/falling = "sounds/voice/default/va/demofalling.ogg" +$alias voice/default/spinning voice/default/falling +voice/default/asskill1 = "sounds/voice/default/va/demoasskill1.ogg" +voice/default/asskill2 = "sounds/voice/default/va/demoasskill2.ogg" +voice/default/asskill3 = "sounds/voice/default/va/demoasskill3.ogg" +voice/default/ballskill1 = "sounds/voice/default/va/demoballskill1.ogg" +voice/default/ballskill2 = "sounds/voice/default/va/demoballskill2.ogg" +voice/default/bustkill = "sounds/voice/default/va/demobustkill.ogg" +voice/default/cybully = "sounds/voice/default/va/democybully.ogg" +voice/default/blast1 = "sounds/voice/default/va/demoblast1.ogg" +voice/default/blast2 = "sounds/voice/default/va/demoblast2.ogg" +voice/default/blast3 = "sounds/voice/default/va/demoblast3.ogg" +voice/default/blast4 = "sounds/voice/default/va/demoblast4.ogg" +voice/default/blast5 = "sounds/voice/default/va/demoblast5.ogg" +voice/default/blast6 = "sounds/voice/default/va/demoblast6.ogg" +voice/default/sheenkill1 = "sounds/voice/default/va/demosheenkill1.ogg" +voice/default/sheenkill2 = "sounds/voice/default/va/demosheenkill2.ogg" +voice/default/petcaco1 = "sounds/voice/default/va/demopetcaco1.ogg" +voice/default/petcaco2 = "sounds/voice/default/va/demopetcaco2.ogg" +voice/default/petcaco3 = "sounds/voice/default/va/demopetcaco3.ogg" +voice/default/skullget = "sounds/voice/default/va/demoskullget.ogg" +voice/default/eat1 = "sounds/voice/default/va/demoeat1.ogg" +voice/default/eat2 = "sounds/voice/default/va/demoeat2.ogg" +voice/default/eat3 = "sounds/voice/default/va/demoeat3.ogg" +voice/default/eat4 = "sounds/voice/default/va/demoeat4.ogg" +voice/default/eat5 = "sounds/voice/default/va/demoeat5.ogg" +voice/default/hurtfloor1 = "sounds/voice/default/va/demohurtfloor1.ogg" +voice/default/hurtfloor2 = "sounds/voice/default/va/demohurtfloor2.ogg" +voice/default/hurtfloor3 = "sounds/voice/default/va/demohurtfloor3.ogg" +voice/default/hurtfloor4 = "sounds/voice/default/va/demohurtfloor4.ogg" +voice/default/hurtfloor5 = "sounds/voice/default/va/demohurtfloor5.ogg" +voice/default/nutstart = "sounds/voice/default/va/demonutstart.ogg" +voice/default/sheenspecial = "sounds/voice/default/va/demosheenspecial.ogg" +voice/default/mrtouch1 = "sounds/voice/default/va/demomrtouch1.ogg" +voice/default/mrtouch2 = "sounds/voice/default/va/demomrtouch2.ogg" +voice/default/mrtouch3 = "sounds/voice/default/va/demomrtouch3.ogg" +voice/default/mrtouch4 = "sounds/voice/default/va/demomrtouch4.ogg" +voice/default/mrflick1 = "sounds/voice/default/va/demomrflick1.ogg" +voice/default/mrflick2 = "sounds/voice/default/va/demomrflick2.ogg" +voice/default/mirror1 = "sounds/voice/default/va/demomirror1.ogg" +voice/default/mirror2 = "sounds/voice/default/va/demomirror2.ogg" +voice/default/mirror3 = "sounds/voice/default/va/demomirror3.ogg" +voice/default/mirror4 = "sounds/voice/default/va/demomirror4.ogg" +voice/default/mirror5 = "sounds/voice/default/va/demomirror5.ogg" +voice/default/mirror6 = "sounds/voice/default/va/demomirror6.ogg" +voice/default/mirror7 = "sounds/voice/default/va/demomirror7.ogg" +voice/default/mirror8 = "sounds/voice/default/va/demomirror8.ogg" +voice/default/mirror9 = "sounds/voice/default/va/demomirror9.ogg" +voice/default/mirror10 = "sounds/voice/default/va/demomirror10.ogg" +voice/default/smooch1 = "sounds/voice/default/va/demosmooch1.ogg" +voice/default/smooch2 = "sounds/voice/default/va/demosmooch2.ogg" +voice/default/smooch3 = "sounds/voice/default/va/demosmooch3.ogg" +voice/default/lustysuns = "sounds/voice/default/va/demolustysuns.ogg" +voice/default/invinciball1 = "sounds/voice/default/va/demoinvinciball1.ogg" +voice/default/invinciball2 = "sounds/voice/default/va/demoinvinciball2.ogg" +voice/default/invinciball3 = "sounds/voice/default/va/demoinvinciball3.ogg" diff --git a/sndinfo.dlcweapons b/sndinfo.dlcweapons new file mode 100644 index 000000000..b94cfa2b6 --- /dev/null +++ b/sndinfo.dlcweapons @@ -0,0 +1,197 @@ +$pitchshiftrange 0 + +itamex/select = "sounds/dlc/hammer/itamex_select.ogg" +itamex/deselect = "sounds/dlc/hammer/itamex_deselect.ogg" +itamex/meleestart = "sounds/dlc/hammer/itamex_meleestart.ogg" +itamex/meleeend = "sounds/dlc/hammer/itamex_meleeend.ogg" +itamex/swing1 = "sounds/dlc/hammer/itamex_swing1.ogg" +itamex/swing2 = "sounds/dlc/hammer/itamex_swing2.ogg" +itamex/swing3 = "sounds/dlc/hammer/itamex_swing3.ogg" +$random itamex/swing { itamex/swing1 itamex/swing2 itamex/swing3 } +itamex/hit1 = "sounds/dlc/hammer/itamex_hit1.ogg" +itamex/hit2 = "sounds/dlc/hammer/itamex_hit2.ogg" +itamex/hit3 = "sounds/dlc/hammer/itamex_hit3.ogg" +$random itamex/hit { itamex/hit1 itamex/hit2 itamex/hit3 } +itamex/hitf1 = "sounds/dlc/hammer/itamex_hitf1.ogg" +itamex/hitf2 = "sounds/dlc/hammer/itamex_hitf2.ogg" +itamex/hitf3 = "sounds/dlc/hammer/itamex_hitf3.ogg" +$random itamex/hitf { itamex/hitf1 itamex/hitf2 itamex/hitf3 } +itamex/drop = "sounds/dlc/hammer/itamex_drop.ogg" +itamex/slam = "sounds/dlc/hammer/itamex_slam.ogg" +itamex/spin = "sounds/dlc/hammer/itamex_spin.ogg" + +blast/select = "sounds/dlc/blast/blast_select.ogg" +blast/deselect = "sounds/dlc/blast/blast_deselect.ogg" +blast/checkout = "sounds/dlc/blast/blast_idle.ogg" +blast/meleestart = "sounds/dlc/blast/blast_meleestart.ogg" +blast/meleeend = "sounds/dlc/blast/blast_meleeend.ogg" +blast/trigger = "sounds/dlc/blast/blast_trigger.ogg" +blast/fire1 = "sounds/dlc/blast/blast_fire1.ogg" +blast/fire2 = "sounds/dlc/blast/blast_fire2.ogg" +$random blast/fire { blast/fire1 blast/fire2 } +blast/charge = "sounds/dlc/blast/blast_charge.ogg" +blast/altfire1 = "sounds/dlc/blast/blast_altfire1.ogg" +blast/altfire2 = "sounds/dlc/blast/blast_altfire2.ogg" +$random blast/altfire { blast/altfire1 blast/altfire2 } +blast/hit1 = "sounds/dlc/blast/blast_hit1.ogg" +blast/hit2 = "sounds/dlc/blast/blast_hit2.ogg" +blast/hit3 = "sounds/dlc/blast/blast_hit3.ogg" +blast/hit4 = "sounds/dlc/blast/blast_hit4.ogg" +$random blast/hit { blast/hit1 blast/hit2 blast/hit3 blast/hit4 } +blast/althit1 = "sounds/dlc/blast/blast_althit1.ogg" +blast/althit2 = "sounds/dlc/blast/blast_althit2.ogg" +$random blast/althit { blast/althit1 blast/althit2 } +blast/magout = "sounds/dlc/blast/blast_magout.ogg" +blast/magin = "sounds/dlc/blast/blast_magin.ogg" + +// TODO puntzer beta + +// TODO puntzer gamma + +sheen/specialpick = "sounds/dlc/sheen/sheen_specialpickup.ogg" +sheen/select = "sounds/dlc/sheen/sheen_select.ogg" +sheen/deselect = "sounds/dlc/sheen/sheen_deselect.ogg" +sheen/meleestart = "sounds/dlc/sheen/sheen_meleestart.ogg" +sheen/meleeend = "sounds/dlc/sheen/sheen_meleeend.ogg" +sheen/fire1 = "sounds/dlc/sheen/sheen_fire1.ogg" +sheen/fire2 = "sounds/dlc/sheen/sheen_fire2.ogg" +sheen/fire3 = "sounds/dlc/sheen/sheen_fire3.ogg" +$random sheen/fire { sheen/fire1 sheen/fire2 sheen/fire3 } +$limit sheen/fire 16 +sheen/700rpm = "sounds/dlc/sheen/sheen_700rpm.ogg" +sheen/2100rpm = "sounds/dlc/sheen/sheen_2100rpm.ogg" +sheen/crankin = "sounds/dlc/sheen/sheen_crankin.ogg" +sheen/crankout = "sounds/dlc/sheen/sheen_crankout.ogg" +sheen/overheat = "sounds/dlc/sheen/sheen_overheat.ogg" +sheen/unlock = "sounds/dlc/sheen/sheen_unlock.ogg" +sheen/casing1 = "sounds/dlc/sheen/sheen_case1.ogg" +sheen/casing2 = "sounds/dlc/sheen/sheen_case2.ogg" +sheen/casing3 = "sounds/dlc/sheen/sheen_case3.ogg" +sheen/casing4 = "sounds/dlc/sheen/sheen_case4.ogg" +$random sheen/casing { sheen/casing1 sheen/casing2 sheen/casing3 sheen/casing4 } + +quadshot/select = "sounds/dlc/quadshot/quad_select.ogg" +quadshot/deselect = "sounds/dlc/quadshot/quad_deselect.ogg" +quadshot/selectfast = "sounds/dlc/quadshot/quad_selectfast.ogg" +quadshot/deselectfast = "sounds/dlc/quadshot/quad_deselectfast.ogg" +quadshot/onehand = "sounds/dlc/quadshot/quad_onehand.ogg" +quadshot/twohand = "sounds/dlc/quadshot/quad_twohand.ogg" +quadshot/leverforward = "sounds/dlc/quadshot/quad_leverforward.ogg" +quadshot/leverback = "sounds/dlc/quadshot/quad_leverback.ogg" +quadshot/bayonetfire = "sounds/dlc/quadshot/quad_bayonetfire.ogg" +quadshot/bayonetreturn = "sounds/dlc/quadshot/quad_bayonetreturn.ogg" +quadshot/load1 = "sounds/dlc/quadshot/quad_load1.ogg" +quadshot/load2 = "sounds/dlc/quadshot/quad_load2.ogg" +quadshot/load3 = "sounds/dlc/quadshot/quad_load3.ogg" +quadshot/load4 = "sounds/dlc/quadshot/quad_load4.ogg" +$random quadshot/load { quadshot/load1 quadshot/load2 quadshot/load3 quadshot/load4 } +quadshot/fireone = "sounds/dlc/quadshot/quad_fireone.ogg" +quadshot/firetwo = "sounds/dlc/quadshot/quad_firetwo.ogg" +quadshot/firethree = "sounds/dlc/quadshot/quad_firethree.ogg" +quadshot/firefour = "sounds/dlc/quadshot/quad_firefour.ogg" +quadshot/firefive = "sounds/dlc/quadshot/quad_firefive.ogg" +quadshot/casing1 = "sounds/dlc/quadshot/quad_casing1.ogg" +quadshot/casing2 = "sounds/dlc/quadshot/quad_casing2.ogg" +quadshot/casing3 = "sounds/dlc/quadshot/quad_casing3.ogg" +quadshot/casing4 = "sounds/dlc/quadshot/quad_casing4.ogg" +$random quadshot/casing { quadshot/casing1 quadshot/casing2 quadshot/casing3 quadshot/casing4 } +quadshot/hit1 = "sounds/dlc/quadshot/quad_hit1.ogg" +quadshot/hit2 = "sounds/dlc/quadshot/quad_hit2.ogg" +quadshot/hit3 = "sounds/dlc/quadshot/quad_hit3.ogg" +$random quadshot/hit { quadshot/hit1 quadshot/hit2 quadshot/hit3 } +$limit quadshot/hit 16 +quadshot/twohit1 = "sounds/dlc/quadshot/quad_explo1.ogg" +quadshot/twohit2 = "sounds/dlc/quadshot/quad_explo2.ogg" +quadshot/twohit3 = "sounds/dlc/quadshot/quad_explo3.ogg" +$random quadshot/twohit { quadshot/twohit1 quadshot/twohit2 quadshot/twohit3 } +$limit quadshot/twohit 8 +quadshot/extrahit = "sounds/dlc/quadshot/quad_xexpl.ogg" +quadshot/pointblank = "sounds/dlc/quadshot/quad_xxexpl.ogg" +quadshot/fly = "sounds/dlc/quadshot/quad_fly.ogg" + +// TODO sparkster rifle + +// TODO ray-khom + +mister/select = "sounds/dlc/mister/mr_select.ogg" +mister/deselect = "sounds/dlc/mister/mr_deselect.ogg" +mister/meleestart = "sounds/dlc/mister/mr_meleestart.ogg" +mister/meleeend = "sounds/dlc/mister/mr_meleeend.ogg" +mister/boltback = "sounds/dlc/mister/mr_boltback.ogg" +mister/boltforward = "sounds/dlc/mister/mr_boltforward.ogg" +mister/fireselect = "sounds/dlc/mister/mr_firesel.ogg" +mister/lowammo = "sounds/dlc/mister/mr_lowammo.ogg" +mister/noammo = "sounds/dlc/mister/mr_noammo.ogg" +mister/firesemi = "sounds/dlc/mister/mr_fire_semi.ogg" +mister/firescatter = "sounds/dlc/mister/mr_fire_scatter.ogg" +mister/firestream = "sounds/dlc/mister/mr_fire_stream.ogg" +mister/fireover = "sounds/dlc/mister/mr_fire_over.ogg" +mister/chargeover = "sounds/dlc/mister/mr_charge_over.ogg" +mister/holdover = "sounds/dlc/mister/mr_hold_over.ogg" +mister/beepover = "sounds/dlc/mister/mr_beep_over.ogg" +mister/cancelover = "sounds/dlc/mister/mr_cancel_over.ogg" +mister/magout = "sounds/dlc/mister/mr_magout.ogg" +mister/magin = "sounds/dlc/mister/mr_magin.ogg" +$alias mister/mag1 explodium/mag1 +$alias mister/mag2 explodium/mag2 +$alias mister/mag3 explodium/mag3 +$pitchset mister/mag1 0.8 +$pitchset mister/mag2 0.8 +$pitchset mister/mag3 0.8 +$random mister/mag { mister/mag1 mister/mag2 mister/mag3 } +mister/grenade = "sounds/dlc/mister/mr_grenade.ogg" +mister/grenadeopen = "sounds/dlc/mister/mr_grenadeopen.ogg" +mister/grenadeget = "sounds/dlc/mister/mr_grenadeget.ogg" +$alias mister/magget mister/grenadeget +mister/grenadein = "sounds/dlc/mister/mr_grenadein.ogg" +mister/grenadeclose = "sounds/dlc/mister/mr_grenadeclose.ogg" +mister/hitsemi1 = "sounds/dlc/mister/mr_hit11.ogg" +mister/hitsemi2 = "sounds/dlc/mister/mr_hit12.ogg" +mister/hitsemi3 = "sounds/dlc/mister/mr_hit13.ogg" +$random mister/hitsemi { mister/hitsemi1 mister/hitsemi2 mister/hitsemi3 } +$limit mister/hitsemi 8 +mister/hitscatter1 = "sounds/dlc/mister/mr_hit21.ogg" +mister/hitscatter2 = "sounds/dlc/mister/mr_hit22.ogg" +mister/hitscatter3 = "sounds/dlc/mister/mr_hit23.ogg" +$random mister/hitscatter { mister/hitscatter1 mister/hitscatter2 mister/hitscatter3 } +$limit mister/hitscatter 32 +mister/hitstream1 = "sounds/dlc/mister/mr_hit31.ogg" +mister/hitstream2 = "sounds/dlc/mister/mr_hit32.ogg" +mister/hitstream3 = "sounds/dlc/mister/mr_hit33.ogg" +$random mister/hitstream { mister/hitstream1 mister/hitstream2 mister/hitstream3 } +$limit mister/hitstream 16 +mister/hitover1 = "sounds/dlc/mister/mr_hit41.ogg" +mister/hitover2 = "sounds/dlc/mister/mr_hit42.ogg" +mister/hitover3 = "sounds/dlc/mister/mr_hit43.ogg" +$random mister/hitover { mister/hitover1 mister/hitover2 mister/hitover3 } +$limit mister/hitover 4 +mister/hitgrenade1 = "sounds/dlc/mister/mr_hitg11.ogg" +mister/hitgrenade2 = "sounds/dlc/mister/mr_hitg12.ogg" +mister/hitgrenade3 = "sounds/dlc/mister/mr_hitg13.ogg" +$random mister/hitgrenade { mister/hitgrenade1 mister/hitgrenade2 mister/hitgrenade3 } +$limit mister/hitgrenade 4 +mister/hitgrenadesub1 = "sounds/dlc/mister/mr_hitg21.ogg" +mister/hitgrenadesub2 = "sounds/dlc/mister/mr_hitg22.ogg" +mister/hitgrenadesub3 = "sounds/dlc/mister/mr_hitg23.ogg" +$random mister/hitgrenadesub { mister/hitgrenadesub1 mister/hitgrenadesub2 mister/hitgrenadesub3 } +$limit mister/hitgrenadesub 16 +mister/casing1 = "sounds/dlc/mister/mr_casing1.ogg" +mister/casing2 = "sounds/dlc/mister/mr_casing2.ogg" +mister/casing3 = "sounds/dlc/mister/mr_casing3.ogg" +mister/casing4 = "sounds/dlc/mister/mr_casing4.ogg" +$random mister/casing { mister/casing1 mister/casing2 mister/casing3 mister/casing4 } +mister/gcasing1 = "sounds/dlc/mister/mr_gcasing1.ogg" +mister/gcasing2 = "sounds/dlc/mister/mr_gcasing2.ogg" +mister/gcasing3 = "sounds/dlc/mister/mr_gcasing3.ogg" +mister/gcasing4 = "sounds/dlc/mister/mr_gcasing4.ogg" +$random mister/gcasing { mister/gcasing1 mister/gcasing2 mister/gcasing3 mister/gcasing4 } +mister/gbounce1 = "sounds/dlc/mister/mr_gbounce11.ogg" +mister/gbounce2 = "sounds/dlc/mister/mr_gbounce12.ogg" +mister/gbounce3 = "sounds/dlc/mister/mr_gbounce13.ogg" +$random mister/gbounce { mister/gbounce1 mister/gbounce2 mister/gbounce3 } +mister/gbouncesub1 = "sounds/dlc/mister/mr_gbounce21.ogg" +mister/gbouncesub2 = "sounds/dlc/mister/mr_gbounce22.ogg" +mister/gbouncesub3 = "sounds/dlc/mister/mr_gbounce23.ogg" +$random mister/gbouncesub { mister/gbouncesub1 mister/gbouncesub2 mister/gbouncesub3 } + +// TODO rafan-kos diff --git a/sndinfo.items b/sndinfo.items new file mode 100644 index 000000000..a4b26acd6 --- /dev/null +++ b/sndinfo.items @@ -0,0 +1,132 @@ +$pitchshiftrange 0 + +armor/blastsuit = "sounds/items/blastsuit.ogg" +armor/wararmor = "sounds/items/wararmor.ogg" +armor/hit1 = "sounds/items/hullhit.ogg" +armor/hit2 = "sounds/items/hullhit2.ogg" +armor/hit3 = "sounds/items/hullhit3.ogg" +armor/hit4 = "sounds/items/hullhit4.ogg" +armor/hit5 = "sounds/items/hullhit5.ogg" +$random armor/hit { armor/hit1 armor/hit2 armor/hit3 armor/hit4 armor/hit5 } + +powerup/refresheruse = "sounds/items/refreshuse.ogg" +powerup/refresher = "sounds/items/refresh.ogg" +powerup/sandwich = "sounds/CORK.ogg" +powerup/ghost = "sounds/items/CloakOn.ogg" +powerup/ghostact = "sounds/items/CloakLoop3.ogg" +powerup/ghostend = "sounds/items/CloakOff.ogg" +powerup/gravity = "sounds/items/gravityon.ogg" +powerup/gravityact = "sounds/items/gravityact.ogg" +powerup/gravityend = "sounds/items/gravityoff.ogg" +powerup/invinciball = "sounds/items/invincion.ogg" +powerup/invinciballact = "sounds/items/invinciact.ogg" +powerup/invinciballhit = "sounds/items/invincihit.ogg" +powerup/invinciballend = "sounds/items/invincioff.ogg" +powerup/ragekit = "sounds/items/ragekiton.ogg" +powerup/ragekitact = "sounds/items/ragekitact.ogg" +powerup/ragekithit = "sounds/items/ragekithit.ogg" +powerup/ragekitend = "sounds/items/ragekitoff.ogg" +powerup/omnisight = "sounds/items/omnisight.ogg" +powerup/embiggener = "sounds/items/embiggen.ogg" +powerup/barrier = "sounds/items/barrieron.ogg" +powerup/barrieract = "sounds/items/barrieract.ogg" +powerup/barrierend = "sounds/items/barrieroff.ogg" +powerup/mykradvo = "sounds/items/AnomExplode.ogg" +$limit powerup/mykradvo 16 +powerup/mykradvoamb = "sounds/items/AnomHeartBeat.ogg" +powerup/devastation = "sounds/items/devaon.ogg" +powerup/devastationamb = "sounds/items/devaamb.ogg" +powerup/devastationact = "sounds/items/devaact.ogg" +powerup/devastationhit = "sounds/items/devahit.ogg" +powerup/devastationend = "sounds/items/devaoff.ogg" +powerup/divineuse = "sounds/items/divion.ogg" +powerup/divineamb = "sounds/items/diviamb.ogg" +powerup/divineact = "sounds/items/diviact.ogg" +powerup/divinehit1 = "sounds/items/divihit1.ogg" +powerup/divinehit2 = "sounds/items/divihit2.ogg" +powerup/divinehit3 = "sounds/items/divihit3.ogg" +powerup/divinehit4 = "sounds/items/divihit4.ogg" +powerup/divinehit5 = "sounds/items/divihit5.ogg" +powerup/divinehit6 = "sounds/items/divihit6.ogg" +powerup/divinehit7 = "sounds/items/divihit7.ogg" +powerup/divinehit8 = "sounds/items/divihit8.ogg" +$random powerup/divinehit { powerup/divinehit1 powerup/divinehit2 powerup/divinehit3 powerup/divinehit4 powerup/divinehit5 powerup/divinehit6 powerup/divinehit7 powerup/divinehit8 } +$limit powerup/divinehit 16 +powerup/divineend = "sounds/items/diviend.ogg" +powerup/tetheruse = "sounds/items/tetheruse.ogg" +powerup/tetherfail = "sounds/items/tetherfail.ogg" +powerup/tethererror = "sounds/items/tethererror.ogg" + +mykradvo/arc1 = "sounds/items/mykrarc1.ogg" +mykradvo/arc2 = "sounds/items/mykrarc2.ogg" +mykradvo/arc3 = "sounds/items/mykrarc3.ogg" +mykradvo/arc4 = "sounds/items/mykrarc4.ogg" +mykradvo/arc5 = "sounds/items/mykrarc5.ogg" +mykradvo/arc6 = "sounds/items/mykrarc6.ogg" +mykradvo/arc7 = "sounds/items/mykrarc7.ogg" +mykradvo/arc8 = "sounds/items/mykrarc8.ogg" +mykradvo/arc9 = "sounds/items/mykrarc9.ogg" +mykradvo/smallarc1 = "sounds/items/mykrarcs1.ogg" +mykradvo/smallarc2 = "sounds/items/mykrarcs2.ogg" +mykradvo/smallarc3 = "sounds/items/mykrarcs3.ogg" +mykradvo/smallarc4 = "sounds/items/mykrarcs4.ogg" +mykradvo/smallarc5 = "sounds/items/mykrarcs5.ogg" +mykradvo/smallarc6 = "sounds/items/mykrarcs6.ogg" +mykradvo/smallarc7 = "sounds/items/mykrarcs7.ogg" +mykradvo/smallarc8 = "sounds/items/mykrarcs8.ogg" +mykradvo/smallarc9 = "sounds/items/mykrarcs9.ogg" +$random mykradvo/arc { mykradvo/arc1 mykradvo/arc2 mykradvo/arc3 mykradvo/arc4 mykradvo/arc5 mykradvo/arc6 mykradvo/arc7 mykradvo/arc8 mykradvo/arc9 } +$random mykradvo/smallarc { mykradvo/smallarc1 mykradvo/smallarc2 mykradvo/smallarc3 mykradvo/smallarc4 mykradvo/smallarc5 mykradvo/smallarc6 mykradvo/smallarc7 mykradvo/smallarc8 mykradvo/smallarc9 } +$limit mykradvo/arc 32 +$limit mykradvo/smallarc 16 + +lamp/on = "sounds/items/lampon.ogg" +lamp/off = "sounds/items/lampoff.ogg" +lamp/appear = "sounds/items/lampappear.ogg" +lamp/disappear = "sounds/items/lampdisappear.ogg" +moth/scrape1 = "sounds/items/mothatk1.ogg" +moth/scrape2 = "sounds/items/mothatk2.ogg" +moth/scrape3 = "sounds/items/mothatk3.ogg" +moth/scrape4 = "sounds/items/mothatk4.ogg" +$random moth/scrape { moth/scrape1 moth/scrape2 moth/scrape3 moth/scrape4 } +$limit moth/scrape 32 +moth/die1 = "sounds/items/mothdie1.ogg" +moth/die2 = "sounds/items/mothdie2.ogg" +$random moth/die { moth/die1 moth/die2 } +moth/fly = "sounds/items/mothfly.ogg" +$limit moth/fly 32 +fabricator/use = "sounds/items/makeammo.ogg" + +chancebox/explode1 = "sounds/items/lootexpl1.ogg" +chancebox/explode2 = "sounds/items/lootexpl2.ogg" +chancebox/explode3 = "sounds/items/lootexpl3.ogg" +$random chancebox/explode { chancebox/explode1 chancebox/explode2 chancebox/explode3 } + +// TBD 1.4 (Ballsy Bomb) +leadball/fire1 = "sounds/items/leadballfire1.ogg" +leadball/fire2 = "sounds/items/leadballfire2.ogg" +$random leadball/fire { leadball/fire1 leadball/fire2 } +$limit leadball/fire 16 +leadball/hit1 = "sounds/items/leadball1.ogg" +leadball/hit2 = "sounds/items/leadball2.ogg" +leadball/hit3 = "sounds/items/leadball3.ogg" +$random leadball/hit { leadball/hit1 leadball/hit2 leadball/hit3 } +leadball/hitf1 = "sounds/items/leadballf1.ogg" +leadball/hitf2 = "sounds/items/leadballf2.ogg" +leadball/hitf3 = "sounds/items/leadballf3.ogg" +$random leadball/hitf { leadball/hitf1 leadball/hitf2 leadball/hitf3 } +leadball/fly = "sounds/items/leadballfly.ogg" + +// TBD 1.4 (Battle-Boi Sentry) +saltshot/hit1 = "sounds/items/salthit1.ogg" +saltshot/hit2 = "sounds/items/salthit2.ogg" +saltshot/hit3 = "sounds/items/salthit3.ogg" +saltshot/hit4 = "sounds/items/salthit4.ogg" +$random saltshot/hit { saltshot/hit1 saltshot/hit2 saltshot/hit3 saltshot/hit4 } +$limit saltshot/hit 32 +saltshot/trail1 = "sounds/items/salttrail1.ogg" +saltshot/trail2 = "sounds/items/salttrail2.ogg" +saltshot/trail3 = "sounds/items/salttrail3.ogg" +saltshot/trail4 = "sounds/items/salttrail4.ogg" +$random saltshot/trail { saltshot/trail1 saltshot/trail2 saltshot/trail3 saltshot/trail4 } +$limit saltshot/trail 32 diff --git a/sndinfo.misc b/sndinfo.misc new file mode 100644 index 000000000..fd795ee58 --- /dev/null +++ b/sndinfo.misc @@ -0,0 +1,95 @@ +$pitchshiftrange 0 + +saya/giggle1 = "sounds/saya/saya_giggle1.ogg" +saya/giggle2 = "sounds/saya/saya_giggle2.ogg" +saya/giggle3 = "sounds/saya/saya_giggle3.ogg" +saya/giggle4 = "sounds/saya/saya_giggle4.ogg" +saya/giggle5 = "sounds/saya/saya_giggle5.ogg" +saya/giggle6 = "sounds/saya/saya_giggle6.ogg" +saya/giggle7 = "sounds/saya/saya_giggle7.ogg" +saya/giggle8 = "sounds/saya/saya_giggle8.ogg" +saya/giggle9 = "sounds/saya/saya_giggle9.ogg" +saya/giggle10 = "sounds/saya/saya_giggle10.ogg" +saya/giggle11 = "sounds/saya/saya_giggle11.ogg" +saya/giggle12 = "sounds/saya/saya_giggle12.ogg" +saya/giggle13 = "sounds/saya/saya_giggle13.ogg" +saya/giggle14 = "sounds/saya/saya_giggle14.ogg" +$random saya/giggle { saya/giggle1 saya/giggle2 saya/giggle3 saya/giggle4 saya/giggle5 saya/giggle6 saya/giggle7 saya/giggle8 saya/giggle9 saya/giggle10 saya/giggle11 saya/giggle12 saya/giggle13 saya/giggle14 } +saya/pervert = "sounds/saya/saya_pervert.ogg" + +kirin/giggle1 = "sounds/kirin/kirin_giggle1.ogg" +kirin/giggle2 = "sounds/kirin/kirin_giggle2.ogg" +kirin/giggle3 = "sounds/kirin/kirin_giggle3.ogg" +kirin/giggle4 = "sounds/kirin/kirin_giggle4.ogg" +kirin/giggle5 = "sounds/kirin/kirin_giggle5.ogg" +kirin/giggle6 = "sounds/kirin/kirin_giggle6.ogg" +kirin/giggle7 = "sounds/kirin/kirin_giggle7.ogg" +kirin/giggle8 = "sounds/kirin/kirin_giggle8.ogg" +kirin/giggle9 = "sounds/kirin/kirin_giggle9.ogg" +kirin/giggle10 = "sounds/kirin/kirin_giggle10.ogg" +kirin/giggle11 = "sounds/kirin/kirin_giggle11.ogg" +$random kirin/giggle { kirin/giggle1 kirin/giggle2 kirin/giggle3 kirin/giggle4 kirin/giggle5 kirin/giggle6 kirin/giggle7 kirin/giggle8 kirin/giggle9 kirin/giggle10 kirin/giggle11 } + +andira/appear = "sounds/andira/moth_appear.ogg" +andira/giggle1 = "sounds/andira/moth_giggle1.ogg" +andira/giggle2 = "sounds/andira/moth_giggle2.ogg" +andira/giggle3 = "sounds/andira/moth_giggle3.ogg" +andira/giggle4 = "sounds/andira/moth_giggle4.ogg" +andira/giggle5 = "sounds/andira/moth_giggle5.ogg" +andira/giggle6 = "sounds/andira/moth_giggle6.ogg" +$random andira/giggle { andira/giggle1 andira/giggle2 andira/giggle3 andira/giggle4 andira/giggle5 andira/giggle6 } +andira/see1 = "sounds/andira/moth_anger1.ogg" +andira/see2 = "sounds/andira/moth_anger2.ogg" +$random andira/see { andira/see1 andira/see2 } +andira/attack1 = "sounds/andira/moth_attack1.ogg" +andira/attack2 = "sounds/andira/moth_attack2.ogg" +$random andira/attack { andira/attack1 andira/attack2 } +andira/hit1 = "sounds/andira/moth_hit1.ogg" +andira/hit2 = "sounds/andira/moth_hit2.ogg" +$random andira/hit { andira/hit1 andira/hit2 } +andira/hitf1 = "sounds/andira/moth_hitf1.ogg" +andira/hitf2 = "sounds/andira/moth_hitf2.ogg" +andira/hitf3 = "sounds/andira/moth_hitf3.ogg" +$random andira/hitf { andira/hitf1 andira/hitf2 andira/hitf3 } +andira/active1 = "sounds/andira/moth_postatk1.ogg" +andira/active2 = "sounds/andira/moth_postatk2.ogg" +andira/active3 = "sounds/andira/moth_postatk3.ogg" +andira/active4 = "sounds/andira/moth_postatk4.ogg" +$random andira/active { andira/active1 andira/active2 andira/active3 andira/active4 } +andira/die = "sounds/andira/moth_defeat.ogg" + +// doom vacation stuff +DSSING = "sounds/BRUH.ogg" +DSMOAN = DSEMPTY +DSVXsex1 = DSEMPTY +DSVXsex2 = DSEMPTY +DSVXsex3 = DSEMPTY +DSVXsex4 = DSEMPTY +misc/boinkend = "sounds/BOINK1.ogg" +misc/boink1 = "sounds/BOINK2.ogg" +misc/boink2 = "sounds/BOINK3.ogg" +$random misc/boink { misc/boink1 misc/boink2 } + +// wolf3d thingies +wolf3d/dogbite = "sounds/wolfstuff/wolf3d_dogbite.ogg" +wolf3d/dogdie = "sounds/wolfstuff/wolf3d_dogdie.ogg" +wolf3d/dogsight = "sounds/wolfstuff/wolf3d_dogsight.ogg" +wolf3d/doorclose = "sounds/wolfstuff/wolf3d_doorclose.ogg" +wolf3d/dooropen = "sounds/wolfstuff/wolf3d_dooropen.ogg" +wolf3d/guarddie1 = "sounds/wolfstuff/wolf3d_guarddie1.ogg" +wolf3d/guarddie2 = "sounds/wolfstuff/wolf3d_guarddie2.ogg" +wolf3d/guarddie4 = "sounds/wolfstuff/wolf3d_guarddie4.ogg" +wolf3d/guarddie5 = "sounds/wolfstuff/wolf3d_guarddie5.ogg" +wolf3d/guarddie6 = "sounds/wolfstuff/wolf3d_guarddie6.ogg" +wolf3d/guarddie7 = "sounds/wolfstuff/wolf3d_guarddie7.ogg" +wolf3d/guarddie8 = "sounds/wolfstuff/wolf3d_guarddie8.ogg" +$random wolf3d/guarddie { wolf3d/guarddie1 wolf3d/guarddie2 wolf3d/guarddie2 wolf3d/guarddie4 wolf3d/guarddie5 wolf3d/guarddie6 wolf3d/guarddie7 wolf3d/guarddie8 } +wolf3d/guardfire = "sounds/wolfstuff/wolf3d_guardfire.ogg" +wolf3d/guardsight = "sounds/wolfstuff/wolf3d_guardsight.ogg" +wolf3d/hansdie = "sounds/wolfstuff/wolf3d_hansdie.ogg" +wolf3d/hansfire = "sounds/wolfstuff/wolf3d_hansfire.ogg" +wolf3d/hanssight = "sounds/wolfstuff/wolf3d_hanssight.ogg" +wolf3d/pushwall = "sounds/wolfstuff/wolf3d_pushwall.ogg" +wolf3d/ssdie = "sounds/wolfstuff/wolf3d_ssdie.ogg" +wolf3d/ssfire = "sounds/wolfstuff/wolf3d_ssfire.ogg" +wolf3d/sssight = "sounds/wolfstuff/wolf3d_sssight.ogg" diff --git a/sndinfo.player b/sndinfo.player new file mode 100644 index 000000000..c86484b37 --- /dev/null +++ b/sndinfo.player @@ -0,0 +1,133 @@ +$pitchshiftrange 0 + +demolitionist/walk1 = "sounds/demolitionist/demowalk1.ogg" +demolitionist/walk2 = "sounds/demolitionist/demowalk2.ogg" +demolitionist/walk3 = "sounds/demolitionist/demowalk3.ogg" +demolitionist/walk4 = "sounds/demolitionist/demowalk4.ogg" +$random demolitionist/walk { demolitionist/walk1 demolitionist/walk2 demolitionist/walk3 demolitionist/walk4 } +demolitionist/runstart1 = "sounds/demolitionist/demorunbeg1.ogg" +demolitionist/runstart2 = "sounds/demolitionist/demorunbeg2.ogg" +demolitionist/runstart3 = "sounds/demolitionist/demorunbeg3.ogg" +demolitionist/runstart4 = "sounds/demolitionist/demorunbeg4.ogg" +$random demolitionist/runstart { demolitionist/runstart1 demolitionist/runstart2 demolitionist/runstart3 demolitionist/runstart4 } +demolitionist/run1 = "sounds/demolitionist/demorun1.ogg" +demolitionist/run2 = "sounds/demolitionist/demorun2.ogg" +demolitionist/run3 = "sounds/demolitionist/demorun3.ogg" +demolitionist/run4 = "sounds/demolitionist/demorun4.ogg" +$random demolitionist/run { demolitionist/run1 demolitionist/run2 demolitionist/run3 demolitionist/run4 } +demolitionist/runstop1 = "sounds/demolitionist/demorunstp1.ogg" +demolitionist/runstop2 = "sounds/demolitionist/demorunstp2.ogg" +demolitionist/runstop3 = "sounds/demolitionist/demorunstp3.ogg" +demolitionist/runstop4 = "sounds/demolitionist/demorunstp4.ogg" +$random demolitionist/runstop { demolitionist/runstop1 demolitionist/runstop2 demolitionist/runstop3 demolitionist/runstop4 } +demolitionist/jet = "sounds/demolitionist/demojet.ogg" +demolitionist/jetstop = "sounds/demolitionist/demojetstop.ogg" +demolitionist/death1 = "sounds/demolitionist/demodeath1.ogg" +demolitionist/death2 = "sounds/demolitionist/demodeath2.ogg" +demolitionist/death3 = "sounds/demolitionist/demodeath3.ogg" +$random demolitionist/death { demolitionist/death1 demolitionist/death2 demolitionist/death3 } +demolitionist/xdeath1 = "sounds/demolitionist/demoxdeath1.ogg" +demolitionist/xdeath2 = "sounds/demolitionist/demoxdeath2.ogg" +demolitionist/xdeath3 = "sounds/demolitionist/demoxdeath3.ogg" +$random demolitionist/xdeath { demolitionist/xdeath1 demolitionist/xdeath2 demolitionist/xdeath3 } +demolitionist/wdeath1 = "sounds/demolitionist/demowdeath1.ogg" +demolitionist/wdeath2 = "sounds/demolitionist/demowdeath2.ogg" +demolitionist/wdeath3 = "sounds/demolitionist/demowdeath3.ogg" +$random demolitionist/wdeath { demolitionist/wdeath1 demolitionist/wdeath2 demolitionist/wdeath3 } +demolitionist/pain1 = "sounds/demolitionist/demopain1.ogg" +demolitionist/pain2 = "sounds/demolitionist/demopain2.ogg" +demolitionist/pain3 = "sounds/demolitionist/demopain3.ogg" +$random demolitionist/pain { demolitionist/pain1 demolitionist/pain2 demolitionist/pain3 } +demolitionist/hipain1 = "sounds/demolitionist/demohipain1.ogg" +demolitionist/hipain2 = "sounds/demolitionist/demohipain2.ogg" +demolitionist/hipain3 = "sounds/demolitionist/demohipain3.ogg" +$random demolitionist/hipain { demolitionist/hipain1 demolitionist/hipain2 demolitionist/hipain3 } +demolitionist/lopain1 = "sounds/demolitionist/demolopain1.ogg" +demolitionist/lopain2 = "sounds/demolitionist/demolopain2.ogg" +demolitionist/lopain3 = "sounds/demolitionist/demolopain3.ogg" +$random demolitionist/lopain { demolitionist/lopain1 demolitionist/lopain2 demolitionist/lopain3 } +demolitionist/hardland1 = "sounds/demolitionist/demohland1.ogg" +demolitionist/hardland2 = "sounds/demolitionist/demohland2.ogg" +demolitionist/hardland3 = "sounds/demolitionist/demohland3.ogg" +$random demolitionist/hardland { demolitionist/hardland1 demolitionist/hardland2 demolitionist/hardland3 } +demolitionist/swing1 = "sounds/demolitionist/demoswing1.ogg" +demolitionist/swing2 = "sounds/demolitionist/demoswing2.ogg" +demolitionist/swing3 = "sounds/demolitionist/demoswing3.ogg" +$random demolitionist/swing { demolitionist/swing1 demolitionist/swing2 demolitionist/swing3 } +demolitionist/wswing1 = "sounds/demolitionist/demowswing1.ogg" +demolitionist/wswing2 = "sounds/demolitionist/demowswing2.ogg" +$random demolitionist/wswing { demolitionist/wswing1 demolitionist/wswing2 } +demolitionist/punch1 = "sounds/demolitionist/demopunch1.ogg" +demolitionist/punch2 = "sounds/demolitionist/demopunch2.ogg" +demolitionist/punch3 = "sounds/demolitionist/demopunch3.ogg" +$random demolitionist/punch { demolitionist/punch1 demolitionist/punch2 demolitionist/punch3 } +demolitionist/punchf1 = "sounds/demolitionist/demopunchf1.ogg" +demolitionist/punchf2 = "sounds/demolitionist/demopunchf2.ogg" +demolitionist/punchf3 = "sounds/demolitionist/demopunchf3.ogg" +$random demolitionist/punchf { demolitionist/punchf1 demolitionist/punchf2 demolitionist/punchf3 } +demolitionist/xpunch1 = "sounds/demolitionist/demoxpunch1.ogg" +demolitionist/xpunch2 = "sounds/demolitionist/demoxpunch1.ogg" +$random demolitionist/xpunch { demolitionist/xpunch1 demolitionist/xpunch2 } +demolitionist/xpunchf1 = "sounds/demolitionist/demoxpunchf1.ogg" +demolitionist/xpunchf2 = "sounds/demolitionist/demoxpunchf1.ogg" +$random demolitionist/xpunchf { demolitionist/xpunchf1 demolitionist/xpunchf2 } +demolitionist/bump1 = "sounds/demolitionist/demobump1.ogg" +demolitionist/bump2 = "sounds/demolitionist/demobump2.ogg" +demolitionist/bump3 = "sounds/demolitionist/demobump3.ogg" +$random demolitionist/bump { demolitionist/bump1 demolitionist/bump2 demolitionist/bump3 } +demolitionist/kick1 = "sounds/demolitionist/demokick1.ogg" +demolitionist/kick2 = "sounds/demolitionist/demokick2.ogg" +demolitionist/kick3 = "sounds/demolitionist/demokick3.ogg" +$random demolitionist/kick { demolitionist/kick1 demolitionist/kick2 demolitionist/kick3 } +demolitionist/revive = "sounds/demolitionist/demorevive.ogg" +demolitionist/youdied = "sounds/demolitionist/demoded.ogg" +demolitionist/parry = "sounds/demolitionist/demoparry.ogg" +demolitionist/handsup = "sounds/demolitionist/demogesturestart.ogg" +demolitionist/handsdown = "sounds/demolitionist/demogestureend.ogg" +demolitionist/whits1 = "sounds/demolitionist/demowhits1.ogg" +demolitionist/whits2 = "sounds/demolitionist/demowhits2.ogg" +demolitionist/whits3 = "sounds/demolitionist/demowhits3.ogg" +$random demolitionist/whits { demolitionist/whits1 demolitionist/whits2 demolitionist/whits3 } +demolitionist/whitm1 = "sounds/demolitionist/demowhitm1.ogg" +demolitionist/whitm2 = "sounds/demolitionist/demowhitm2.ogg" +demolitionist/whitm3 = "sounds/demolitionist/demowhitm3.ogg" +$random demolitionist/whitm { demolitionist/whitm1 demolitionist/whitm2 demolitionist/whitm3 } +demolitionist/whitl1 = "sounds/demolitionist/demowhitl1.ogg" +demolitionist/whitl2 = "sounds/demolitionist/demowhitl2.ogg" +$random demolitionist/whitl { demolitionist/whitl1 demolitionist/whitl2 } +demolitionist/buttslam1 = "sounds/demolitionist/demobutt1.ogg" +demolitionist/buttslam2 = "sounds/demolitionist/demobutt2.ogg" +demolitionist/buttslam3 = "sounds/demolitionist/demobutt3.ogg" +$random demolitionist/buttslam { demolitionist/buttslam1 demolitionist/buttslam2 demolitionist/buttslam3 } +demolitionist/buttslamx = "sounds/demolitionist/demoxbutt.ogg" +demolitionist/petting = "sounds/demolitionist/demopat.ogg" +demolitionist/knockout = "sounds/demolitionist/demoknockout.ogg" +demolitionist/dashregen = "sounds/demolitionist/demodashregen.ogg" +demolitionist/fuelregen = "sounds/demolitionist/demofuelregen.ogg" +demolitionist/fuelrgend = "sounds/demolitionist/demofuelregenend.ogg" +demolitionist/fuelrgstp = "sounds/demolitionist/demofuelregenstep.ogg" + +$playersound demolitionist neutral *grunt DSEMPTY +$playeralias demolitionist neutral *pain100 demolitionist/lopain +$playeralias demolitionist neutral *pain75 demolitionist/pain +$playeralias demolitionist neutral *pain50 demolitionist/pain +$playeralias demolitionist neutral *pain25 demolitionist/hipain +$playersound demolitionist neutral *usefail "sounds/menu/failuse.ogg" +$playeralias demolitionist neutral *death demolitionist/death +$playeralias demolitionist neutral *burndeath demolitionist/death +$playeralias demolitionist neutral *xdeath demolitionist/xdeath +$playeralias demolitionist neutral *gibbed demolitionist/xdeath +$playeralias demolitionist neutral *crazydeath demolitionist/xdeath +$playeralias demolitionist neutral *wimpydeath demolitionist/wdeath +$playersound demolitionist neutral *land DSEMPTY +$playersound demolitionist neutral *falling DSEMPTY +$playersound demolitionist neutral *puzzfail "sounds/menu/failuse.ogg" +$playersound demolitionist neutral *poison DSEMPTY +$playersound demolitionist neutral *dive DSEMPTY +$playersound demolitionist neutral *surface DSEMPTY +$playersound demolitionist neutral *gasp DSEMPTY +$playersound demolitionist neutral *taunt DSEMPTY +$playersound demolitionist neutral *evillaugh DSEMPTY + +voodoodoll/hit = "sounds/general/BodyHit.ogg" +voodoodoll/fall = "sounds/general/BodyThud.ogg" diff --git a/sndinfo.txt b/sndinfo.txt deleted file mode 100644 index 36040e821..000000000 --- a/sndinfo.txt +++ /dev/null @@ -1,1570 +0,0 @@ -$pitchshiftrange 0 - -crash/crash1 sounds/DUCK.ogg -crash/crash2 sounds/BORK98.ogg -crash/crash3 sounds/BORKXP.ogg -crash/crash4 sounds/GNOME.ogg -crash/crash5 sounds/FRANCETIM.ogg -crash/crash6 sounds/ONO.ogg -$random crash/crash { crash/crash1 crash/crash2 crash/crash3 crash/crash4 crash/crash5 crash/crash6 } -crash/glass sounds/GLASSCRK.ogg -crash/curb sounds/CURB.ogg -brutal/ezmodo sounds/EASYMODO.ogg -bestsound sounds/CORK.ogg -haha/dab sounds/DAB.ogg -bruh sounds/BRUH.ogg -squeak sounds/SQUEAK.ogg -recordscratch sounds/RECSCRAP.ogg -compat/warn sounds/UTWARN.ogg -hahaha/hahaha sounds/HAHAHA.ogg -title/explo1 sounds/OUCHEX1.ogg -title/explo2 sounds/OUCHEX2.ogg -title/explo3 sounds/OUCHEX3.ogg -title/explo4 sounds/OUCHEX4.ogg -$random title/explo { title/explo1 title/explo2 title/explo3 title/explo4 } -$limit title/explo 64 -title/thump sounds/TitleThump.ogg -$limit title/thump 16 - -saya/giggle1 sounds/saya/saya_giggle1.ogg -saya/giggle2 sounds/saya/saya_giggle2.ogg -saya/giggle3 sounds/saya/saya_giggle3.ogg -saya/giggle4 sounds/saya/saya_giggle4.ogg -saya/giggle5 sounds/saya/saya_giggle5.ogg -saya/giggle6 sounds/saya/saya_giggle6.ogg -saya/giggle7 sounds/saya/saya_giggle7.ogg -saya/giggle8 sounds/saya/saya_giggle8.ogg -saya/giggle9 sounds/saya/saya_giggle9.ogg -saya/giggle10 sounds/saya/saya_giggle10.ogg -saya/giggle11 sounds/saya/saya_giggle11.ogg -saya/giggle12 sounds/saya/saya_giggle12.ogg -saya/giggle13 sounds/saya/saya_giggle13.ogg -saya/giggle14 sounds/saya/saya_giggle14.ogg -$random saya/giggle { saya/giggle1 saya/giggle2 saya/giggle3 saya/giggle4 saya/giggle5 saya/giggle6 saya/giggle7 saya/giggle8 saya/giggle9 saya/giggle10 saya/giggle11 saya/giggle12 saya/giggle13 saya/giggle14 } -saya/pervert sounds/saya/saya_pervert.ogg - -kirin/giggle1 sounds/kirin/kirin_giggle1.ogg -kirin/giggle2 sounds/kirin/kirin_giggle2.ogg -kirin/giggle3 sounds/kirin/kirin_giggle3.ogg -kirin/giggle4 sounds/kirin/kirin_giggle4.ogg -kirin/giggle5 sounds/kirin/kirin_giggle5.ogg -kirin/giggle6 sounds/kirin/kirin_giggle6.ogg -kirin/giggle7 sounds/kirin/kirin_giggle7.ogg -kirin/giggle8 sounds/kirin/kirin_giggle8.ogg -kirin/giggle9 sounds/kirin/kirin_giggle9.ogg -kirin/giggle10 sounds/kirin/kirin_giggle10.ogg -kirin/giggle11 sounds/kirin/kirin_giggle11.ogg -$random kirin/giggle { kirin/giggle1 kirin/giggle2 kirin/giggle3 kirin/giggle4 kirin/giggle5 kirin/giggle6 kirin/giggle7 kirin/giggle8 kirin/giggle9 kirin/giggle10 kirin/giggle11 } - -voice/default/death1 sounds/voice/default/demodeath1.ogg -voice/default/death2 sounds/voice/default/demodeath2.ogg -voice/default/death3 sounds/voice/default/demodeath3.ogg -voice/default/death4 sounds/voice/default/demodeath4.ogg -voice/default/death5 sounds/voice/default/demodeath5.ogg -voice/default/grunt1 sounds/voice/default/demogrunt1.ogg -voice/default/grunt2 sounds/voice/default/demogrunt2.ogg -voice/default/grunt3 sounds/voice/default/demogrunt3.ogg -voice/default/grunt4 sounds/voice/default/demogrunt4.ogg -voice/default/grunt5 sounds/voice/default/demogrunt5.ogg -voice/default/grunt6 sounds/voice/default/demogrunt6.ogg -voice/default/hipain1 sounds/voice/default/demohipain1.ogg -voice/default/hipain2 sounds/voice/default/demohipain2.ogg -voice/default/hipain3 sounds/voice/default/demohipain3.ogg -voice/default/hipain4 sounds/voice/default/demohipain4.ogg -voice/default/hipain5 sounds/voice/default/demohipain5.ogg -voice/default/lopain1 sounds/voice/default/demolopain1.ogg -voice/default/lopain2 sounds/voice/default/demolopain2.ogg -voice/default/lopain3 sounds/voice/default/demolopain3.ogg -voice/default/lopain4 sounds/voice/default/demolopain4.ogg -voice/default/lopain5 sounds/voice/default/demolopain5.ogg -voice/default/pain1 sounds/voice/default/demopain1.ogg -voice/default/pain2 sounds/voice/default/demopain2.ogg -voice/default/pain3 sounds/voice/default/demopain3.ogg -voice/default/pain4 sounds/voice/default/demopain4.ogg -voice/default/pain5 sounds/voice/default/demopain5.ogg -voice/default/pain6 sounds/voice/default/demopain6.ogg - -$random voice/default/grunt { voice/default/grunt1 voice/default/grunt2 voice/default/grunt3 voice/default/grunt4 voice/default/grunt5 voice/default/grunt6 } -$random voice/default/lopain { voice/default/lopain1 voice/default/lopain2 voice/default/lopain3 voice/default/lopain4 voice/default/lopain5 } -$random voice/default/pain { voice/default/pain1 voice/default/pain2 voice/default/pain3 voice/default/pain4 voice/default/pain5 } -$random voice/default/hipain { voice/default/hipain1 voice/default/hipain2 voice/default/hipain3 voice/default/hipain4 voice/default/hipain5 } -$random voice/default/death { voice/default/death1 voice/default/death2 voice/default/death3 voice/default/death4 voice/default/death5 } - -voice/default/fightstart1 sounds/voice/default/va/demofightstart1.ogg -voice/default/fightstart2 sounds/voice/default/va/demofightstart2.ogg -voice/default/fightstart3 sounds/voice/default/va/demofightstart3.ogg -voice/default/fightstart4 sounds/voice/default/va/demofightstart4.ogg -voice/default/fightstart5 sounds/voice/default/va/demofightstart5.ogg -voice/default/fightstart6 sounds/voice/default/va/demofightstart6.ogg -voice/default/fightstart7 sounds/voice/default/va/demofightstart7.ogg -voice/default/fightstart8 sounds/voice/default/va/demofightstart8.ogg -voice/default/fightstart9 sounds/voice/default/va/demofightstart9.ogg -voice/default/fightstart10 sounds/voice/default/va/demofightstart10.ogg -voice/default/fightstart11 sounds/voice/default/va/demofightstart11.ogg -voice/default/fightstart12 sounds/voice/default/va/demofightstart12.ogg -voice/default/fightstart13 sounds/voice/default/va/demofightstart13.ogg -voice/default/fightstart14 sounds/voice/default/va/demofightstart14.ogg -voice/default/fightstart15 sounds/voice/default/va/demofightstart15.ogg -voice/default/fightstart16 sounds/voice/default/va/demofightstart16.ogg -voice/default/fightstart17 sounds/voice/default/va/demofightstart17.ogg -voice/default/fightstart18 sounds/voice/default/va/demofightstart18.ogg -voice/default/fightstart19 sounds/voice/default/va/demofightstart19.ogg -voice/default/fightstart20 sounds/voice/default/va/demofightstart20.ogg -voice/default/fightstart21 sounds/voice/default/va/demofightstart21.ogg -voice/default/findsecret1 sounds/voice/default/va/demofindsecret1.ogg -voice/default/findsecret2 sounds/voice/default/va/demofindsecret2.ogg -voice/default/findsecret3 sounds/voice/default/va/demofindsecret3.ogg -voice/default/findsecret4 sounds/voice/default/va/demofindsecret4.ogg -voice/default/findsecret5 sounds/voice/default/va/demofindsecret5.ogg -voice/default/findsecret6 sounds/voice/default/va/demofindsecret6.ogg -voice/default/findsecret7 sounds/voice/default/va/demofindsecret7.ogg -voice/default/findsecret8 sounds/voice/default/va/demofindsecret8.ogg -voice/default/findsecret9 sounds/voice/default/va/demofindsecret9.ogg -voice/default/findsecret10 sounds/voice/default/va/demofindsecret10.ogg -voice/default/findsecret11 sounds/voice/default/va/demofindsecret11.ogg -voice/default/findsecret12 sounds/voice/default/va/demofindsecret12.ogg -voice/default/findsecret13 sounds/voice/default/va/demofindsecret13.ogg -voice/default/getweapon1 sounds/voice/default/va/demogetweapon1.ogg -voice/default/getweapon2 sounds/voice/default/va/demogetweapon2.ogg -voice/default/getweapon3 sounds/voice/default/va/demogetweapon3.ogg -voice/default/getweapon4 sounds/voice/default/va/demogetweapon4.ogg -voice/default/getweapon5 sounds/voice/default/va/demogetweapon5.ogg -voice/default/getweapon6 sounds/voice/default/va/demogetweapon6.ogg -voice/default/getweapon7 sounds/voice/default/va/demogetweapon7.ogg -voice/default/getweapon8 sounds/voice/default/va/demogetweapon8.ogg -voice/default/getweapon9 sounds/voice/default/va/demogetweapon9.ogg -voice/default/getweapon10 sounds/voice/default/va/demogetweapon10.ogg -voice/default/getweapon11 sounds/voice/default/va/demogetweapon11.ogg -voice/default/getweapon12 sounds/voice/default/va/demogetweapon12.ogg -voice/default/getweapon13 sounds/voice/default/va/demogetweapon13.ogg -voice/default/locked1 sounds/voice/default/va/demolocked1.ogg -voice/default/locked2 sounds/voice/default/va/demolocked2.ogg -voice/default/locked3 sounds/voice/default/va/demolocked3.ogg -voice/default/locked4 sounds/voice/default/va/demolocked4.ogg -voice/default/locked5 sounds/voice/default/va/demolocked5.ogg -voice/default/locked6 sounds/voice/default/va/demolocked6.ogg -voice/default/jammed1 sounds/voice/default/va/demojammed1.ogg -voice/default/jammed2 sounds/voice/default/va/demojammed2.ogg -voice/default/jammed3 sounds/voice/default/va/demojammed3.ogg -voice/default/jammed4 sounds/voice/default/va/demojammed4.ogg -voice/default/jammed5 sounds/voice/default/va/demojammed5.ogg -voice/default/jammed6 sounds/voice/default/va/demojammed6.ogg -voice/default/jammed7 sounds/voice/default/va/demojammed7.ogg -voice/default/mapstart1 sounds/voice/default/va/demomapstart1.ogg -voice/default/mapstart2 sounds/voice/default/va/demomapstart2.ogg -voice/default/mapstart3 sounds/voice/default/va/demomapstart3.ogg -voice/default/mapstart4 sounds/voice/default/va/demomapstart4.ogg -voice/default/mapstart5 sounds/voice/default/va/demomapstart5.ogg -voice/default/mapstart6 sounds/voice/default/va/demomapstart6.ogg -voice/default/mapstart7 sounds/voice/default/va/demomapstart7.ogg -voice/default/mapstart8 sounds/voice/default/va/demomapstart8.ogg -voice/default/mapstart9 sounds/voice/default/va/demomapstart9.ogg -voice/default/mapstart10 sounds/voice/default/va/demomapstart10.ogg -voice/default/mapstart11 sounds/voice/default/va/demomapstart11.ogg -voice/default/mapstart12 sounds/voice/default/va/demomapstart12.ogg -voice/default/mapstart13 sounds/voice/default/va/demomapstart13.ogg -voice/default/mapstart14 sounds/voice/default/va/demomapstart14.ogg -voice/default/puzzfail1 sounds/voice/default/va/demopuzzfail1.ogg -voice/default/puzzfail2 sounds/voice/default/va/demopuzzfail2.ogg -voice/default/puzzfail3 sounds/voice/default/va/demopuzzfail3.ogg -voice/default/puzzfail4 sounds/voice/default/va/demopuzzfail4.ogg -voice/default/puzzfail5 sounds/voice/default/va/demopuzzfail5.ogg -voice/default/puzzfail6 sounds/voice/default/va/demopuzzfail6.ogg -voice/default/puzzsucc1 sounds/voice/default/va/demopuzzsucc1.ogg -voice/default/puzzsucc2 sounds/voice/default/va/demopuzzsucc2.ogg -voice/default/puzzsucc3 sounds/voice/default/va/demopuzzsucc3.ogg -voice/default/puzzsucc4 sounds/voice/default/va/demopuzzsucc4.ogg -voice/default/puzzsucc5 sounds/voice/default/va/demopuzzsucc5.ogg -voice/default/puzzsucc6 sounds/voice/default/va/demopuzzsucc6.ogg -voice/default/scorekill1 sounds/voice/default/va/demoscorekill1.ogg -voice/default/scorekill2 sounds/voice/default/va/demoscorekill2.ogg -voice/default/scorekill3 sounds/voice/default/va/demoscorekill3.ogg -voice/default/scorekill4 sounds/voice/default/va/demoscorekill4.ogg -voice/default/scorekill5 sounds/voice/default/va/demoscorekill5.ogg -voice/default/scorekill6 sounds/voice/default/va/demoscorekill6.ogg -voice/default/scorekill7 sounds/voice/default/va/demoscorekill7.ogg -voice/default/scorekill8 sounds/voice/default/va/demoscorekill8.ogg -voice/default/scorekill9 sounds/voice/default/va/demoscorekill9.ogg -voice/default/scorekill10 sounds/voice/default/va/demoscorekill10.ogg -voice/default/scorekill11 sounds/voice/default/va/demoscorekill11.ogg -voice/default/scorekill12 sounds/voice/default/va/demoscorekill12.ogg -voice/default/scorekill13 sounds/voice/default/va/demoscorekill13.ogg -voice/default/scorekill14 sounds/voice/default/va/demoscorekill14.ogg -voice/default/scorekill15 sounds/voice/default/va/demoscorekill15.ogg -voice/default/scorekill16 sounds/voice/default/va/demoscorekill16.ogg -voice/default/scorekill17 sounds/voice/default/va/demoscorekill17.ogg -voice/default/scorekill18 sounds/voice/default/va/demoscorekill18.ogg -voice/default/scorekill19 sounds/voice/default/va/demoscorekill19.ogg -voice/default/scorekill20 sounds/voice/default/va/demoscorekill20.ogg -voice/default/scorekill21 sounds/voice/default/va/demoscorekill21.ogg -voice/default/scorekill22 sounds/voice/default/va/demoscorekill22.ogg -voice/default/scorekill23 sounds/voice/default/va/demoscorekill23.ogg -voice/default/scorekill24 sounds/voice/default/va/demoscorekill24.ogg -voice/default/scorekill25 sounds/voice/default/va/demoscorekill25.ogg -voice/default/friendkill1 sounds/voice/default/va/demofriendkill1.ogg -voice/default/friendkill2 sounds/voice/default/va/demofriendkill2.ogg -voice/default/friendkill3 sounds/voice/default/va/demofriendkill3.ogg -voice/default/friendkill4 sounds/voice/default/va/demofriendkill4.ogg -voice/default/gethit1 sounds/voice/default/va/demogethit1.ogg -voice/default/gethit2 sounds/voice/default/va/demogethit2.ogg -voice/default/gethit3 sounds/voice/default/va/demogethit3.ogg -voice/default/gethit4 sounds/voice/default/va/demogethit4.ogg -voice/default/gethit5 sounds/voice/default/va/demogethit5.ogg -voice/default/gethit6 sounds/voice/default/va/demogethit6.ogg -voice/default/gethit7 sounds/voice/default/va/demogethit7.ogg -voice/default/gethit8 sounds/voice/default/va/demogethit8.ogg -voice/default/gethit9 sounds/voice/default/va/demogethit9.ogg -voice/default/gethit10 sounds/voice/default/va/demogethit10.ogg -voice/default/gethit11 sounds/voice/default/va/demogethit11.ogg -voice/default/gethit12 sounds/voice/default/va/demogethit12.ogg -voice/default/gethit13 sounds/voice/default/va/demogethit13.ogg -voice/default/gethit14 sounds/voice/default/va/demogethit14.ogg -voice/default/gethit15 sounds/voice/default/va/demogethit15.ogg -voice/default/gethit16 sounds/voice/default/va/demogethit16.ogg -voice/default/gethit17 sounds/voice/default/va/demogethit17.ogg -voice/default/gethit18 sounds/voice/default/va/demogethit18.ogg -voice/default/gethit19 sounds/voice/default/va/demogethit19.ogg -voice/default/friendhit1 sounds/voice/default/va/demofriendhit1.ogg -voice/default/friendhit2 sounds/voice/default/va/demofriendhit2.ogg -voice/default/friendhit3 sounds/voice/default/va/demofriendhit3.ogg -voice/default/friendhit4 sounds/voice/default/va/demofriendhit4.ogg -voice/default/friendhit5 sounds/voice/default/va/demofriendhit5.ogg -voice/default/friendhit6 sounds/voice/default/va/demofriendhit6.ogg -voice/default/friendhit7 sounds/voice/default/va/demofriendhit7.ogg -voice/default/greet1 sounds/voice/default/va/demogreet1.ogg -voice/default/greet2 sounds/voice/default/va/demogreet2.ogg -voice/default/greet3 sounds/voice/default/va/demogreet3.ogg -voice/default/greet4 sounds/voice/default/va/demogreet4.ogg -voice/default/greet5 sounds/voice/default/va/demogreet5.ogg -voice/default/greet6 sounds/voice/default/va/demogreet6.ogg -voice/default/greet7 sounds/voice/default/va/demogreet7.ogg -voice/default/hitfriend1 sounds/voice/default/va/demohitfriend1.ogg -voice/default/hitfriend2 sounds/voice/default/va/demohitfriend2.ogg -voice/default/hitfriend3 sounds/voice/default/va/demohitfriend3.ogg -voice/default/ragekit1 sounds/voice/default/va/demoragekit1.ogg -voice/default/ragekit2 sounds/voice/default/va/demoragekit2.ogg -voice/default/ragekit3 sounds/voice/default/va/demoragekit3.ogg -voice/default/ragekit4 sounds/voice/default/va/demoragekit4.ogg -voice/default/ragekit5 sounds/voice/default/va/demoragekit5.ogg -voice/default/ragekit6 sounds/voice/default/va/demoragekit6.ogg -voice/default/ragekit7 sounds/voice/default/va/demoragekit7.ogg -voice/default/ragekit8 sounds/voice/default/va/demoragekit8.ogg -voice/default/ragekit9 sounds/voice/default/va/demoragekit9.ogg -voice/default/ragekit10 sounds/voice/default/va/demoragekit10.ogg -voice/default/ragekit11 sounds/voice/default/va/demoragekit11.ogg -voice/default/ragekit12 sounds/voice/default/va/demoragekit12.ogg -voice/default/ragekit13 sounds/voice/default/va/demoragekit13.ogg -voice/default/ragekit14 sounds/voice/default/va/demoragekit14.ogg -voice/default/ragekit15 sounds/voice/default/va/demoragekit15.ogg -voice/default/ragekit16 sounds/voice/default/va/demoragekit16.ogg -voice/default/ragekit17 sounds/voice/default/va/demoragekit17.ogg -voice/default/koraxgreet1 sounds/voice/default/va/demokoraxgreet1.ogg -voice/default/koraxgreet2 sounds/voice/default/va/demokoraxgreet2.ogg -voice/default/koraxgreet3 sounds/voice/default/va/demokoraxgreet3.ogg -voice/default/koraxgreet4 sounds/voice/default/va/demokoraxgreet4.ogg -voice/default/koraxgreet5 sounds/voice/default/va/demokoraxgreet5.ogg -voice/default/koraxgreet6 sounds/voice/default/va/demokoraxgreet6.ogg -voice/default/koraxgreet7 sounds/voice/default/va/demokoraxgreet7.ogg -voice/default/koraxgreet8 sounds/voice/default/va/demokoraxgreet8.ogg -voice/default/koraxgreet9 sounds/voice/default/va/demokoraxgreet9.ogg -voice/default/koraxgreet10 sounds/voice/default/va/demokoraxgreet10.ogg -voice/default/koraxgreet11 sounds/voice/default/va/demokoraxgreet11.ogg -voice/default/koraxgreet12 sounds/voice/default/va/demokoraxgreet12.ogg -voice/default/koraxgreet13 sounds/voice/default/va/demokoraxgreet13.ogg -voice/default/koraxblood1 sounds/voice/default/va/demokoraxblood1.ogg -voice/default/koraxblood2 sounds/voice/default/va/demokoraxblood2.ogg -voice/default/koraxblood3 sounds/voice/default/va/demokoraxblood3.ogg -voice/default/koraxblood4 sounds/voice/default/va/demokoraxblood4.ogg -voice/default/koraxblood5 sounds/voice/default/va/demokoraxblood5.ogg -voice/default/koraxblood6 sounds/voice/default/va/demokoraxblood6.ogg -voice/default/koraxblood7 sounds/voice/default/va/demokoraxblood7.ogg -voice/default/koraxblood8 sounds/voice/default/va/demokoraxblood8.ogg -voice/default/koraxblood9 sounds/voice/default/va/demokoraxblood9.ogg -voice/default/koraxblood10 sounds/voice/default/va/demokoraxblood10.ogg -voice/default/koraxblood11 sounds/voice/default/va/demokoraxblood11.ogg -voice/default/koraxblood12 sounds/voice/default/va/demokoraxblood12.ogg -voice/default/koraxblood13 sounds/voice/default/va/demokoraxblood13.ogg -voice/default/koraxgame1 sounds/voice/default/va/demokoraxgame1.ogg -voice/default/koraxgame2 sounds/voice/default/va/demokoraxgame2.ogg -voice/default/koraxgame3 sounds/voice/default/va/demokoraxgame3.ogg -voice/default/koraxgame4 sounds/voice/default/va/demokoraxgame4.ogg -voice/default/koraxgame5 sounds/voice/default/va/demokoraxgame5.ogg -voice/default/koraxgame6 sounds/voice/default/va/demokoraxgame6.ogg -voice/default/koraxgame7 sounds/voice/default/va/demokoraxgame7.ogg -voice/default/koraxgame8 sounds/voice/default/va/demokoraxgame8.ogg -voice/default/koraxgame9 sounds/voice/default/va/demokoraxgame9.ogg -voice/default/koraxgame10 sounds/voice/default/va/demokoraxgame10.ogg -voice/default/koraxgame11 sounds/voice/default/va/demokoraxgame11.ogg -voice/default/koraxgame12 sounds/voice/default/va/demokoraxgame12.ogg -voice/default/koraxgame13 sounds/voice/default/va/demokoraxgame13.ogg -voice/default/koraxgame14 sounds/voice/default/va/demokoraxgame14.ogg -voice/default/koraxworship1 sounds/voice/default/va/demokoraxworship1.ogg -voice/default/koraxworship2 sounds/voice/default/va/demokoraxworship2.ogg -voice/default/koraxworship3 sounds/voice/default/va/demokoraxworship3.ogg -voice/default/koraxworship4 sounds/voice/default/va/demokoraxworship4.ogg -voice/default/koraxworship5 sounds/voice/default/va/demokoraxworship5.ogg -voice/default/koraxworship6 sounds/voice/default/va/demokoraxworship6.ogg -voice/default/koraxworship7 sounds/voice/default/va/demokoraxworship7.ogg -voice/default/koraxworship8 sounds/voice/default/va/demokoraxworship8.ogg -voice/default/koraxworship9 sounds/voice/default/va/demokoraxworship9.ogg -voice/default/koraxworship10 sounds/voice/default/va/demokoraxworship10.ogg -voice/default/koraxworship11 sounds/voice/default/va/demokoraxworship11.ogg -voice/default/koraxmasters1 sounds/voice/default/va/demokoraxmasters1.ogg -voice/default/koraxmasters2 sounds/voice/default/va/demokoraxmasters2.ogg -voice/default/koraxmasters3 sounds/voice/default/va/demokoraxmasters3.ogg -voice/default/koraxmasters4 sounds/voice/default/va/demokoraxmasters4.ogg -voice/default/koraxmasters5 sounds/voice/default/va/demokoraxmasters5.ogg -voice/default/koraxmasters6 sounds/voice/default/va/demokoraxmasters6.ogg -voice/default/koraxmasters7 sounds/voice/default/va/demokoraxmasters7.ogg -voice/default/koraxmasters8 sounds/voice/default/va/demokoraxmasters8.ogg -voice/default/koraxmasters9 sounds/voice/default/va/demokoraxmasters9.ogg -voice/default/getdeepimpact sounds/voice/default/va/demogetdeepimpact.ogg -voice/default/getpusherweapon sounds/voice/default/va/demogetpusherweapon.ogg -voice/default/getexplodiumgun1 sounds/voice/default/va/demogetexplodiumgun1.ogg -voice/default/getexplodiumgun2 sounds/voice/default/va/demogetexplodiumgun2.ogg -voice/default/getspreadgun sounds/voice/default/va/demogetspreadgun.ogg -voice/default/getwallbuster sounds/voice/default/va/demogetwallbuster.ogg -voice/default/geteviscerator sounds/voice/default/va/demogeteviscerator.ogg -voice/default/gethellblazer sounds/voice/default/va/demogethellblazer.ogg -voice/default/getsparkster sounds/voice/default/va/demogetsparkster.ogg -voice/default/getsilverbullet sounds/voice/default/va/demogetsilverbullet.ogg -voice/default/getcandygun sounds/voice/default/va/demogetcandygun.ogg -voice/default/getynykron sounds/voice/default/va/demogetynykron.ogg -voice/default/getitamexhammer sounds/voice/default/va/demogetitamexhammer.ogg -voice/default/getplasmablast1 sounds/voice/default/va/demogetplasmablast1.ogg -voice/default/getplasmablast2 sounds/voice/default/va/demogetplasmablast2.ogg -voice/default/getpuntzerbeta sounds/voice/default/va/demogetpuntzerbeta.ogg -voice/default/getpuntzergamma sounds/voice/default/va/demogetpuntzergamma.ogg -voice/default/getheavymahsheengun sounds/voice/default/va/demogetheavymahsheengun.ogg -voice/default/getquadravol sounds/voice/default/va/demogetquadravol.ogg -voice/default/getblackfireigniter sounds/voice/default/va/demogetblackfireigniter.ogg -voice/default/getempcarbine sounds/voice/default/va/demogetempcarbine.ogg -voice/default/getraykhom sounds/voice/default/va/demogetraykhomdeepimpact.ogg -voice/default/getgrandlance sounds/voice/default/va/demogetgrandlance.ogg -voice/default/getwhiteglove sounds/voice/default/va/demogetwhiteglove.ogg -voice/default/getnewsparkster sounds/voice/default/va/demogetnewsparkster.ogg -voice/default/getmortalrifle sounds/voice/default/va/demogetmortalrifle.ogg -voice/default/getrafankos sounds/voice/default/va/demogetrafankos.ogg -voice/default/keyget1 sounds/voice/default/va/demokeyget1.ogg -voice/default/keyget2 sounds/voice/default/va/demokeyget2.ogg -voice/default/keyget3 sounds/voice/default/va/demokeyget3.ogg -voice/default/keyget4 sounds/voice/default/va/demokeyget4.ogg -voice/default/keyget5 sounds/voice/default/va/demokeyget5.ogg -voice/default/usefail1 sounds/voice/default/va/demousefail1.ogg -voice/default/usefail2 sounds/voice/default/va/demousefail2.ogg -voice/default/usefail3 sounds/voice/default/va/demousefail3.ogg -voice/default/usefail4 sounds/voice/default/va/demousefail4.ogg -voice/default/usefail5 sounds/voice/default/va/demousefail5.ogg -voice/default/usefail6 sounds/voice/default/va/demousefail6.ogg -voice/default/usefail7 sounds/voice/default/va/demousefail7.ogg -voice/default/usefail8 sounds/voice/default/va/demousefail8.ogg -voice/default/usefail9 sounds/voice/default/va/demousefail9.ogg -voice/default/usegrunt1 sounds/voice/default/va/demousegrunt1.ogg -voice/default/usegrunt2 sounds/voice/default/va/demousegrunt2.ogg -voice/default/usegrunt3 sounds/voice/default/va/demousegrunt3.ogg -voice/default/usegrunt4 sounds/voice/default/va/demousegrunt4.ogg -$random voice/default/usegrunt { voice/default/usegrunt1 voice/default/usegrunt2 voice/default/usegrunt3 voice/default/usegrunt4 } -voice/default/cubeget sounds/voice/default/va/democubeget.ogg -voice/default/akariget sounds/voice/default/va/demoakariget.ogg -voice/default/signalsget sounds/voice/default/va/demosignalsget.ogg -voice/default/nutatcoget sounds/voice/default/va/demonutatcoget.ogg -voice/default/frispyget sounds/voice/default/va/demofrispyget.ogg -voice/default/sayaget sounds/voice/default/va/demosayaget.ogg -voice/default/mothget sounds/voice/default/va/demomothget.ogg -voice/default/demoget sounds/voice/default/va/demodemoget.ogg -voice/default/peachget sounds/voice/default/va/demopeachget.ogg -voice/default/breadget sounds/voice/default/va/demobreadget.ogg -voice/default/mangaget sounds/voice/default/va/demomangaget.ogg -voice/default/kiringet sounds/voice/default/va/demokiringet.ogg -voice/default/korax1 sounds/voice/default/va/demokorax1.ogg -voice/default/korax2 sounds/voice/default/va/demokorax2.ogg -voice/default/korax3 sounds/voice/default/va/demokorax3.ogg -voice/default/korax4 sounds/voice/default/va/demokorax4.ogg -voice/default/korax5 sounds/voice/default/va/demokorax5.ogg -voice/default/korax6 sounds/voice/default/va/demokorax6.ogg -voice/default/korax7 sounds/voice/default/va/demokorax7.ogg -voice/default/korax8 sounds/voice/default/va/demokorax8.ogg -voice/default/korax9 sounds/voice/default/va/demokorax9.ogg -voice/default/romero1 sounds/voice/default/va/demoromero1.ogg -voice/default/romero2 sounds/voice/default/va/demoromero2.ogg -voice/default/romero3 sounds/voice/default/va/demoromero3.ogg -voice/default/romero4 sounds/voice/default/va/demoromero4.ogg -voice/default/romero5 sounds/voice/default/va/demoromero5.ogg -voice/default/romero6 sounds/voice/default/va/demoromero6.ogg -voice/default/romero7 sounds/voice/default/va/demoromero7.ogg -voice/default/romero8 sounds/voice/default/va/demoromero8.ogg -voice/default/archangelus1 sounds/voice/default/va/demoarchangelus1.ogg -voice/default/archangelus2 sounds/voice/default/va/demoarchangelus2.ogg -voice/default/archangelus3 sounds/voice/default/va/demoarchangelus3.ogg -voice/default/archangelus4 sounds/voice/default/va/demoarchangelus4.ogg -voice/default/archangelus5 sounds/voice/default/va/demoarchangelus5.ogg -voice/default/archangelus6 sounds/voice/default/va/demoarchangelus6.ogg -voice/default/archangelus7 sounds/voice/default/va/demoarchangelus7.ogg -voice/default/archangelus8 sounds/voice/default/va/demoarchangelus8.ogg -voice/default/dsparila1 sounds/voice/default/va/demodsparila1.ogg -voice/default/dsparila2 sounds/voice/default/va/demodsparila2.ogg -voice/default/dsparila3 sounds/voice/default/va/demodsparila3.ogg -voice/default/dsparilb1 sounds/voice/default/va/demodsparilb1.ogg -voice/default/dsparilb2 sounds/voice/default/va/demodsparilb2.ogg -voice/default/dsparilb3 sounds/voice/default/va/demodsparilb3.ogg -voice/default/pethdoom1 sounds/voice/default/va/demopethdoom1.ogg -voice/default/pethdoom2 sounds/voice/default/va/demopethdoom2.ogg -voice/default/pethdoom3 sounds/voice/default/va/demopethdoom3.ogg -voice/default/pethdoom4 sounds/voice/default/va/demopethdoom4.ogg -voice/default/pethdoom5 sounds/voice/default/va/demopethdoom5.ogg -voice/default/pethdoom6 sounds/voice/default/va/demopethdoom6.ogg -voice/default/pethdoom7 sounds/voice/default/va/demopethdoom7.ogg -voice/default/pethdoom8 sounds/voice/default/va/demopethdoom8.ogg -voice/default/pethdoom9 sounds/voice/default/va/demopethdoom9.ogg -voice/default/pethdoomfinish1 sounds/voice/default/va/demopethdoomfinish1.ogg -voice/default/pethdoomfinish2 sounds/voice/default/va/demopethdoomfinish2.ogg -voice/default/pethdoomfinish3 sounds/voice/default/va/demopethdoomfinish3.ogg -voice/default/pethdoomfinish4 sounds/voice/default/va/demopethdoomfinish4.ogg -voice/default/pethdoomfinish5 sounds/voice/default/va/demopethdoomfinish5.ogg -voice/default/pethdoomfinish6 sounds/voice/default/va/demopethdoomfinish6.ogg -voice/default/pethdoomfinish7 sounds/voice/default/va/demopethdoomfinish7.ogg -voice/default/pethdoomfinish8 sounds/voice/default/va/demopethdoomfinish8.ogg -voice/default/pethdoomfinish9 sounds/voice/default/va/demopethdoomfinish9.ogg -voice/default/petmashiro1 sounds/voice/default/va/demopetmashiro1.ogg -voice/default/petmashiro2 sounds/voice/default/va/demopetmashiro2.ogg -voice/default/petmashiro3 sounds/voice/default/va/demopetmashiro3.ogg -voice/default/petmashiro4 sounds/voice/default/va/demopetmashiro4.ogg -voice/default/petmashiro5 sounds/voice/default/va/demopetmashiro5.ogg -voice/default/petmashiro6 sounds/voice/default/va/demopetmashiro6.ogg -voice/default/petmashiro7 sounds/voice/default/va/demopetmashiro7.ogg -voice/default/buttonpush1 sounds/voice/default/va/demobuttonpush1.ogg -voice/default/buttonpush2 sounds/voice/default/va/demobuttonpush2.ogg -voice/default/buttonpush3 sounds/voice/default/va/demobuttonpush3.ogg -voice/default/falling sounds/voice/default/va/demofalling.ogg - -voice/legacy/death1 sounds/voice/legacy/demodeath1.ogg -voice/legacy/death2 sounds/voice/legacy/demodeath2.ogg -voice/legacy/death3 sounds/voice/legacy/demodeath3.ogg -voice/legacy/death4 sounds/voice/legacy/demodeath4.ogg -voice/legacy/death5 sounds/voice/legacy/demodeath5.ogg -voice/legacy/grunt1 sounds/voice/legacy/demogrunt1.ogg -voice/legacy/grunt2 sounds/voice/legacy/demogrunt2.ogg -voice/legacy/grunt3 sounds/voice/legacy/demogrunt3.ogg -voice/legacy/grunt4 sounds/voice/legacy/demogrunt4.ogg -voice/legacy/grunt5 sounds/voice/legacy/demogrunt5.ogg -voice/legacy/grunt6 sounds/voice/legacy/demogrunt6.ogg -voice/legacy/hipain1 sounds/voice/legacy/demohipain1.ogg -voice/legacy/hipain2 sounds/voice/legacy/demohipain2.ogg -voice/legacy/hipain3 sounds/voice/legacy/demohipain3.ogg -voice/legacy/hipain4 sounds/voice/legacy/demohipain4.ogg -voice/legacy/hipain5 sounds/voice/legacy/demohipain5.ogg -voice/legacy/lopain1 sounds/voice/legacy/demolopain1.ogg -voice/legacy/lopain2 sounds/voice/legacy/demolopain2.ogg -voice/legacy/lopain3 sounds/voice/legacy/demolopain3.ogg -voice/legacy/lopain4 sounds/voice/legacy/demolopain4.ogg -voice/legacy/lopain5 sounds/voice/legacy/demolopain5.ogg -voice/legacy/pain1 sounds/voice/legacy/demopain1.ogg -voice/legacy/pain2 sounds/voice/legacy/demopain2.ogg -voice/legacy/pain3 sounds/voice/legacy/demopain3.ogg -voice/legacy/pain4 sounds/voice/legacy/demopain4.ogg -voice/legacy/pain5 sounds/voice/legacy/demopain5.ogg -voice/legacy/pain6 sounds/voice/legacy/demopain6.ogg - -$random voice/legacy/grunt { voice/legacy/grunt1 voice/legacy/grunt2 voice/legacy/grunt3 voice/legacy/grunt4 voice/legacy/grunt5 voice/legacy/grunt6 } -$random voice/legacy/lopain { voice/legacy/lopain1 voice/legacy/lopain2 voice/legacy/lopain3 voice/legacy/lopain4 voice/legacy/lopain5 } -$random voice/legacy/pain { voice/legacy/pain1 voice/legacy/pain2 voice/legacy/pain3 voice/legacy/pain4 voice/legacy/pain5 } -$random voice/legacy/hipain { voice/legacy/hipain1 voice/legacy/hipain2 voice/legacy/hipain3 voice/legacy/hipain4 voice/legacy/hipain5 } -$random voice/legacy/death { voice/legacy/death1 voice/legacy/death2 voice/legacy/death3 voice/legacy/death4 voice/legacy/death5 } - -voice/legacy/fightstart1 sounds/voice/legacy/va/demofightstart1.ogg -voice/legacy/fightstart2 sounds/voice/legacy/va/demofightstart2.ogg -voice/legacy/fightstart3 sounds/voice/legacy/va/demofightstart3.ogg -voice/legacy/fightstart4 sounds/voice/legacy/va/demofightstart4.ogg -voice/legacy/fightstart5 sounds/voice/legacy/va/demofightstart5.ogg -voice/legacy/fightstart6 sounds/voice/legacy/va/demofightstart6.ogg -voice/legacy/fightstart7 sounds/voice/legacy/va/demofightstart7.ogg -voice/legacy/fightstart8 sounds/voice/legacy/va/demofightstart8.ogg -voice/legacy/fightstart9 sounds/voice/legacy/va/demofightstart9.ogg -voice/legacy/fightstart10 sounds/voice/legacy/va/demofightstart10.ogg -voice/legacy/fightstart11 sounds/voice/legacy/va/demofightstart11.ogg -voice/legacy/fightstart12 sounds/voice/legacy/va/demofightstart12.ogg -voice/legacy/fightstart13 sounds/voice/legacy/va/demofightstart13.ogg -voice/legacy/fightstart14 sounds/voice/legacy/va/demofightstart14.ogg -voice/legacy/fightstart15 sounds/voice/legacy/va/demofightstart15.ogg -voice/legacy/fightstart16 sounds/voice/legacy/va/demofightstart16.ogg -voice/legacy/fightstart17 sounds/voice/legacy/va/demofightstart17.ogg -voice/legacy/fightstart18 sounds/voice/legacy/va/demofightstart18.ogg -voice/legacy/fightstart19 sounds/voice/legacy/va/demofightstart19.ogg -voice/legacy/fightstart20 sounds/voice/legacy/va/demofightstart20.ogg -voice/legacy/fightstart21 sounds/voice/legacy/va/demofightstart21.ogg -voice/legacy/findsecret1 sounds/voice/legacy/va/demofindsecret1.ogg -voice/legacy/findsecret2 sounds/voice/legacy/va/demofindsecret2.ogg -voice/legacy/findsecret3 sounds/voice/legacy/va/demofindsecret3.ogg -voice/legacy/findsecret4 sounds/voice/legacy/va/demofindsecret4.ogg -voice/legacy/findsecret5 sounds/voice/legacy/va/demofindsecret5.ogg -voice/legacy/findsecret6 sounds/voice/legacy/va/demofindsecret6.ogg -voice/legacy/findsecret7 sounds/voice/legacy/va/demofindsecret7.ogg -voice/legacy/findsecret8 sounds/voice/legacy/va/demofindsecret8.ogg -voice/legacy/findsecret9 sounds/voice/legacy/va/demofindsecret9.ogg -voice/legacy/findsecret10 sounds/voice/legacy/va/demofindsecret10.ogg -voice/legacy/findsecret11 sounds/voice/legacy/va/demofindsecret11.ogg -voice/legacy/findsecret12 sounds/voice/legacy/va/demofindsecret12.ogg -voice/legacy/findsecret13 sounds/voice/legacy/va/demofindsecret13.ogg -voice/legacy/getweapon1 sounds/voice/legacy/va/demogetweapon1.ogg -voice/legacy/getweapon2 sounds/voice/legacy/va/demogetweapon2.ogg -voice/legacy/getweapon3 sounds/voice/legacy/va/demogetweapon3.ogg -voice/legacy/getweapon4 sounds/voice/legacy/va/demogetweapon4.ogg -voice/legacy/getweapon5 sounds/voice/legacy/va/demogetweapon5.ogg -voice/legacy/getweapon6 sounds/voice/legacy/va/demogetweapon6.ogg -voice/legacy/getweapon7 sounds/voice/legacy/va/demogetweapon7.ogg -voice/legacy/getweapon8 sounds/voice/legacy/va/demogetweapon8.ogg -voice/legacy/getweapon9 sounds/voice/legacy/va/demogetweapon9.ogg -voice/legacy/getweapon10 sounds/voice/legacy/va/demogetweapon10.ogg -voice/legacy/getweapon11 sounds/voice/legacy/va/demogetweapon11.ogg -voice/legacy/getweapon12 sounds/voice/legacy/va/demogetweapon12.ogg -voice/legacy/getweapon13 sounds/voice/legacy/va/demogetweapon13.ogg -voice/legacy/locked1 sounds/voice/legacy/va/demolocked1.ogg -voice/legacy/locked2 sounds/voice/legacy/va/demolocked2.ogg -voice/legacy/locked3 sounds/voice/legacy/va/demolocked3.ogg -voice/legacy/locked4 sounds/voice/legacy/va/demolocked4.ogg -voice/legacy/jammed1 sounds/voice/legacy/va/demojammed1.ogg -voice/legacy/jammed2 sounds/voice/legacy/va/demojammed2.ogg -voice/legacy/jammed3 sounds/voice/legacy/va/demojammed3.ogg -voice/legacy/jammed4 sounds/voice/legacy/va/demojammed4.ogg -voice/legacy/mapstart1 sounds/voice/legacy/va/demomapstart1.ogg -voice/legacy/mapstart2 sounds/voice/legacy/va/demomapstart2.ogg -voice/legacy/mapstart3 sounds/voice/legacy/va/demomapstart3.ogg -voice/legacy/mapstart4 sounds/voice/legacy/va/demomapstart4.ogg -voice/legacy/mapstart5 sounds/voice/legacy/va/demomapstart5.ogg -voice/legacy/mapstart6 sounds/voice/legacy/va/demomapstart6.ogg -voice/legacy/mapstart7 sounds/voice/legacy/va/demomapstart7.ogg -voice/legacy/mapstart8 sounds/voice/legacy/va/demomapstart8.ogg -voice/legacy/mapstart9 sounds/voice/legacy/va/demomapstart9.ogg -voice/legacy/mapstart10 sounds/voice/legacy/va/demomapstart10.ogg -voice/legacy/mapstart11 sounds/voice/legacy/va/demomapstart11.ogg -voice/legacy/mapstart12 sounds/voice/legacy/va/demomapstart12.ogg -voice/legacy/mapstart13 sounds/voice/legacy/va/demomapstart13.ogg -voice/legacy/mapstart14 sounds/voice/legacy/va/demomapstart14.ogg -voice/legacy/puzzfail1 sounds/voice/legacy/va/demopuzzfail1.ogg -voice/legacy/puzzfail2 sounds/voice/legacy/va/demopuzzfail2.ogg -voice/legacy/puzzfail3 sounds/voice/legacy/va/demopuzzfail3.ogg -voice/legacy/puzzfail4 sounds/voice/legacy/va/demopuzzfail4.ogg -voice/legacy/puzzfail5 sounds/voice/legacy/va/demopuzzfail5.ogg -voice/legacy/puzzfail6 sounds/voice/legacy/va/demopuzzfail6.ogg -voice/legacy/puzzsucc1 sounds/voice/legacy/va/demopuzzsucc1.ogg -voice/legacy/puzzsucc2 sounds/voice/legacy/va/demopuzzsucc2.ogg -voice/legacy/puzzsucc3 sounds/voice/legacy/va/demopuzzsucc3.ogg -voice/legacy/puzzsucc4 sounds/voice/legacy/va/demopuzzsucc4.ogg -voice/legacy/puzzsucc5 sounds/voice/legacy/va/demopuzzsucc5.ogg -voice/legacy/scorekill1 sounds/voice/legacy/va/demoscorekill1.ogg -voice/legacy/scorekill2 sounds/voice/legacy/va/demoscorekill2.ogg -voice/legacy/scorekill3 sounds/voice/legacy/va/demoscorekill3.ogg -voice/legacy/scorekill4 sounds/voice/legacy/va/demoscorekill4.ogg -voice/legacy/scorekill5 sounds/voice/legacy/va/demoscorekill5.ogg -voice/legacy/scorekill6 sounds/voice/legacy/va/demoscorekill6.ogg -voice/legacy/scorekill7 sounds/voice/legacy/va/demoscorekill7.ogg -voice/legacy/scorekill8 sounds/voice/legacy/va/demoscorekill8.ogg -voice/legacy/scorekill9 sounds/voice/legacy/va/demoscorekill9.ogg -voice/legacy/scorekill10 sounds/voice/legacy/va/demoscorekill10.ogg -voice/legacy/scorekill11 sounds/voice/legacy/va/demoscorekill11.ogg -voice/legacy/scorekill12 sounds/voice/legacy/va/demoscorekill12.ogg -voice/legacy/scorekill13 sounds/voice/legacy/va/demoscorekill13.ogg -voice/legacy/scorekill14 sounds/voice/legacy/va/demoscorekill14.ogg -voice/legacy/scorekill15 sounds/voice/legacy/va/demoscorekill15.ogg -voice/legacy/scorekill16 sounds/voice/legacy/va/demoscorekill16.ogg -voice/legacy/scorekill17 sounds/voice/legacy/va/demoscorekill17.ogg -voice/legacy/scorekill18 sounds/voice/legacy/va/demoscorekill18.ogg -voice/legacy/scorekill19 sounds/voice/legacy/va/demoscorekill19.ogg -voice/legacy/scorekill20 sounds/voice/legacy/va/demoscorekill20.ogg -voice/legacy/scorekill21 sounds/voice/legacy/va/demoscorekill21.ogg -voice/legacy/scorekill22 sounds/voice/legacy/va/demoscorekill22.ogg -voice/legacy/scorekill23 sounds/voice/legacy/va/demoscorekill23.ogg -voice/legacy/scorekill24 sounds/voice/legacy/va/demoscorekill24.ogg -voice/legacy/scorekill25 sounds/voice/legacy/va/demoscorekill25.ogg -voice/legacy/scorekill26 sounds/voice/legacy/va/demoscorekill26.ogg -voice/legacy/friendkill1 sounds/voice/legacy/va/demofriendkill1.ogg -voice/legacy/friendkill2 sounds/voice/legacy/va/demofriendkill2.ogg -voice/legacy/friendkill3 sounds/voice/legacy/va/demofriendkill3.ogg -voice/legacy/friendkill4 sounds/voice/legacy/va/demofriendkill4.ogg -voice/legacy/gethit1 sounds/voice/legacy/va/demogethit1.ogg -voice/legacy/gethit2 sounds/voice/legacy/va/demogethit2.ogg -voice/legacy/gethit3 sounds/voice/legacy/va/demogethit3.ogg -voice/legacy/gethit4 sounds/voice/legacy/va/demogethit4.ogg -voice/legacy/gethit5 sounds/voice/legacy/va/demogethit5.ogg -voice/legacy/gethit6 sounds/voice/legacy/va/demogethit6.ogg -voice/legacy/gethit7 sounds/voice/legacy/va/demogethit7.ogg -voice/legacy/gethit8 sounds/voice/legacy/va/demogethit8.ogg -voice/legacy/gethit9 sounds/voice/legacy/va/demogethit9.ogg -voice/legacy/gethit10 sounds/voice/legacy/va/demogethit10.ogg -voice/legacy/gethit11 sounds/voice/legacy/va/demogethit11.ogg -voice/legacy/gethit12 sounds/voice/legacy/va/demogethit12.ogg -voice/legacy/gethit13 sounds/voice/legacy/va/demogethit13.ogg -voice/legacy/gethit14 sounds/voice/legacy/va/demogethit14.ogg -voice/legacy/gethit15 sounds/voice/legacy/va/demogethit15.ogg -voice/legacy/gethit16 sounds/voice/legacy/va/demogethit16.ogg -voice/legacy/gethit17 sounds/voice/legacy/va/demogethit17.ogg -voice/legacy/gethit18 sounds/voice/legacy/va/demogethit18.ogg -voice/legacy/gethit19 sounds/voice/legacy/va/demogethit19.ogg -voice/legacy/friendhit1 sounds/voice/legacy/va/demofriendhit1.ogg -voice/legacy/friendhit2 sounds/voice/legacy/va/demofriendhit2.ogg -voice/legacy/friendhit3 sounds/voice/legacy/va/demofriendhit3.ogg -voice/legacy/friendhit4 sounds/voice/legacy/va/demofriendhit4.ogg -voice/legacy/friendhit5 sounds/voice/legacy/va/demofriendhit5.ogg -voice/legacy/friendhit6 sounds/voice/legacy/va/demofriendhit6.ogg -voice/legacy/friendhit7 sounds/voice/legacy/va/demofriendhit7.ogg -voice/legacy/greet1 sounds/voice/legacy/va/demogreet1.ogg -voice/legacy/greet2 sounds/voice/legacy/va/demogreet2.ogg -voice/legacy/greet3 sounds/voice/legacy/va/demogreet3.ogg -voice/legacy/greet4 sounds/voice/legacy/va/demogreet4.ogg -voice/legacy/greet5 sounds/voice/legacy/va/demogreet5.ogg -voice/legacy/greet6 sounds/voice/legacy/va/demogreet6.ogg -voice/legacy/greet7 sounds/voice/legacy/va/demogreet7.ogg -voice/legacy/hitfriend1 sounds/voice/legacy/va/demohitfriend1.ogg -voice/legacy/hitfriend2 sounds/voice/legacy/va/demohitfriend2.ogg -voice/legacy/hitfriend3 sounds/voice/legacy/va/demohitfriend3.ogg -voice/legacy/ragekit1 sounds/voice/legacy/va/demoragekit1.ogg -voice/legacy/ragekit2 sounds/voice/legacy/va/demoragekit2.ogg -voice/legacy/ragekit3 sounds/voice/legacy/va/demoragekit3.ogg -voice/legacy/ragekit4 sounds/voice/legacy/va/demoragekit4.ogg -voice/legacy/ragekit5 sounds/voice/legacy/va/demoragekit5.ogg -voice/legacy/ragekit6 sounds/voice/legacy/va/demoragekit6.ogg -voice/legacy/koraxgreet1 sounds/voice/legacy/va/demokoraxgreet1.ogg -voice/legacy/koraxgreet2 sounds/voice/legacy/va/demokoraxgreet2.ogg -voice/legacy/koraxgreet3 sounds/voice/legacy/va/demokoraxgreet3.ogg -voice/legacy/koraxgreet4 sounds/voice/legacy/va/demokoraxgreet4.ogg -voice/legacy/koraxgreet5 sounds/voice/legacy/va/demokoraxgreet5.ogg -voice/legacy/koraxgreet6 sounds/voice/legacy/va/demokoraxgreet6.ogg -voice/legacy/koraxgreet7 sounds/voice/legacy/va/demokoraxgreet7.ogg -voice/legacy/koraxgreet8 sounds/voice/legacy/va/demokoraxgreet8.ogg -voice/legacy/koraxgreet9 sounds/voice/legacy/va/demokoraxgreet9.ogg -voice/legacy/koraxgreet10 sounds/voice/legacy/va/demokoraxgreet10.ogg -voice/legacy/koraxgreet11 sounds/voice/legacy/va/demokoraxgreet11.ogg -voice/legacy/koraxgreet12 sounds/voice/legacy/va/demokoraxgreet12.ogg -voice/legacy/koraxgreet13 sounds/voice/legacy/va/demokoraxgreet13.ogg -voice/legacy/koraxblood1 sounds/voice/legacy/va/demokoraxblood1.ogg -voice/legacy/koraxblood2 sounds/voice/legacy/va/demokoraxblood2.ogg -voice/legacy/koraxblood3 sounds/voice/legacy/va/demokoraxblood3.ogg -voice/legacy/koraxblood4 sounds/voice/legacy/va/demokoraxblood4.ogg -voice/legacy/koraxblood5 sounds/voice/legacy/va/demokoraxblood5.ogg -voice/legacy/koraxblood6 sounds/voice/legacy/va/demokoraxblood6.ogg -voice/legacy/koraxblood7 sounds/voice/legacy/va/demokoraxblood7.ogg -voice/legacy/koraxblood8 sounds/voice/legacy/va/demokoraxblood8.ogg -voice/legacy/koraxblood9 sounds/voice/legacy/va/demokoraxblood9.ogg -voice/legacy/koraxblood10 sounds/voice/legacy/va/demokoraxblood10.ogg -voice/legacy/koraxblood11 sounds/voice/legacy/va/demokoraxblood11.ogg -voice/legacy/koraxblood12 sounds/voice/legacy/va/demokoraxblood12.ogg -voice/legacy/koraxblood13 sounds/voice/legacy/va/demokoraxblood13.ogg -voice/legacy/koraxgame1 sounds/voice/legacy/va/demokoraxgame1.ogg -voice/legacy/koraxgame2 sounds/voice/legacy/va/demokoraxgame2.ogg -voice/legacy/koraxgame3 sounds/voice/legacy/va/demokoraxgame3.ogg -voice/legacy/koraxgame4 sounds/voice/legacy/va/demokoraxgame4.ogg -voice/legacy/koraxgame5 sounds/voice/legacy/va/demokoraxgame5.ogg -voice/legacy/koraxgame6 sounds/voice/legacy/va/demokoraxgame6.ogg -voice/legacy/koraxgame7 sounds/voice/legacy/va/demokoraxgame7.ogg -voice/legacy/koraxgame8 sounds/voice/legacy/va/demokoraxgame8.ogg -voice/legacy/koraxgame9 sounds/voice/legacy/va/demokoraxgame9.ogg -voice/legacy/koraxgame10 sounds/voice/legacy/va/demokoraxgame10.ogg -voice/legacy/koraxgame11 sounds/voice/legacy/va/demokoraxgame11.ogg -voice/legacy/koraxgame12 sounds/voice/legacy/va/demokoraxgame12.ogg -voice/legacy/koraxgame13 sounds/voice/legacy/va/demokoraxgame13.ogg -voice/legacy/koraxgame14 sounds/voice/legacy/va/demokoraxgame14.ogg -voice/legacy/koraxworship1 sounds/voice/legacy/va/demokoraxworship1.ogg -voice/legacy/koraxworship2 sounds/voice/legacy/va/demokoraxworship2.ogg -voice/legacy/koraxworship3 sounds/voice/legacy/va/demokoraxworship3.ogg -voice/legacy/koraxworship4 sounds/voice/legacy/va/demokoraxworship4.ogg -voice/legacy/koraxworship5 sounds/voice/legacy/va/demokoraxworship5.ogg -voice/legacy/koraxworship6 sounds/voice/legacy/va/demokoraxworship6.ogg -voice/legacy/koraxworship7 sounds/voice/legacy/va/demokoraxworship7.ogg -voice/legacy/koraxworship8 sounds/voice/legacy/va/demokoraxworship8.ogg -voice/legacy/koraxworship9 sounds/voice/legacy/va/demokoraxworship9.ogg -voice/legacy/koraxworship10 sounds/voice/legacy/va/demokoraxworship10.ogg -voice/legacy/koraxworship11 sounds/voice/legacy/va/demokoraxworship11.ogg -voice/legacy/koraxmasters1 sounds/voice/legacy/va/demokoraxmasters1.ogg -voice/legacy/koraxmasters2 sounds/voice/legacy/va/demokoraxmasters2.ogg -voice/legacy/koraxmasters3 sounds/voice/legacy/va/demokoraxmasters3.ogg -voice/legacy/koraxmasters4 sounds/voice/legacy/va/demokoraxmasters4.ogg -voice/legacy/koraxmasters5 sounds/voice/legacy/va/demokoraxmasters5.ogg -voice/legacy/koraxmasters6 sounds/voice/legacy/va/demokoraxmasters6.ogg -voice/legacy/koraxmasters7 sounds/voice/legacy/va/demokoraxmasters7.ogg -voice/legacy/koraxmasters8 sounds/voice/legacy/va/demokoraxmasters8.ogg -voice/legacy/koraxmasters9 sounds/voice/legacy/va/demokoraxmasters9.ogg - -demolitionist/walk1 sounds/demolitionist/demowalk1.ogg -demolitionist/walk2 sounds/demolitionist/demowalk2.ogg -demolitionist/walk3 sounds/demolitionist/demowalk3.ogg -demolitionist/walk4 sounds/demolitionist/demowalk4.ogg -$random demolitionist/walk { demolitionist/walk1 demolitionist/walk2 demolitionist/walk3 demolitionist/walk4 } -demolitionist/runstart1 sounds/demolitionist/demorunbeg1.ogg -demolitionist/runstart2 sounds/demolitionist/demorunbeg2.ogg -demolitionist/runstart3 sounds/demolitionist/demorunbeg3.ogg -demolitionist/runstart4 sounds/demolitionist/demorunbeg4.ogg -$random demolitionist/runstart { demolitionist/runstart1 demolitionist/runstart2 demolitionist/runstart3 demolitionist/runstart4 } -demolitionist/run1 sounds/demolitionist/demorun1.ogg -demolitionist/run2 sounds/demolitionist/demorun2.ogg -demolitionist/run3 sounds/demolitionist/demorun3.ogg -demolitionist/run4 sounds/demolitionist/demorun4.ogg -$random demolitionist/run { demolitionist/run1 demolitionist/run2 demolitionist/run3 demolitionist/run4 } -demolitionist/runstop1 sounds/demolitionist/demorunstp1.ogg -demolitionist/runstop2 sounds/demolitionist/demorunstp2.ogg -demolitionist/runstop3 sounds/demolitionist/demorunstp3.ogg -demolitionist/runstop4 sounds/demolitionist/demorunstp4.ogg -$random demolitionist/runstop { demolitionist/runstop1 demolitionist/runstop2 demolitionist/runstop3 demolitionist/runstop4 } -demolitionist/jet sounds/demolitionist/demojet.ogg -demolitionist/jetstop sounds/demolitionist/demojetstop.ogg -demolitionist/death1 sounds/demolitionist/demodeath1.ogg -demolitionist/death2 sounds/demolitionist/demodeath2.ogg -demolitionist/death3 sounds/demolitionist/demodeath3.ogg -$random demolitionist/death { demolitionist/death1 demolitionist/death2 demolitionist/death3 } -demolitionist/xdeath1 sounds/demolitionist/demoxdeath1.ogg -demolitionist/xdeath2 sounds/demolitionist/demoxdeath2.ogg -demolitionist/xdeath3 sounds/demolitionist/demoxdeath3.ogg -$random demolitionist/xdeath { demolitionist/xdeath1 demolitionist/xdeath2 demolitionist/xdeath3 } -demolitionist/wdeath1 sounds/demolitionist/demowdeath1.ogg -demolitionist/wdeath2 sounds/demolitionist/demowdeath2.ogg -demolitionist/wdeath3 sounds/demolitionist/demowdeath3.ogg -$random demolitionist/wdeath { demolitionist/wdeath1 demolitionist/wdeath2 demolitionist/wdeath3 } -demolitionist/pain1 sounds/demolitionist/demopain1.ogg -demolitionist/pain2 sounds/demolitionist/demopain2.ogg -demolitionist/pain3 sounds/demolitionist/demopain3.ogg -$random demolitionist/pain { demolitionist/pain1 demolitionist/pain2 demolitionist/pain3 } -demolitionist/hipain1 sounds/demolitionist/demohipain1.ogg -demolitionist/hipain2 sounds/demolitionist/demohipain2.ogg -demolitionist/hipain3 sounds/demolitionist/demohipain3.ogg -$random demolitionist/hipain { demolitionist/hipain1 demolitionist/hipain2 demolitionist/hipain3 } -demolitionist/lopain1 sounds/demolitionist/demolopain1.ogg -demolitionist/lopain2 sounds/demolitionist/demolopain2.ogg -demolitionist/lopain3 sounds/demolitionist/demolopain3.ogg -$random demolitionist/lopain { demolitionist/lopain1 demolitionist/lopain2 demolitionist/lopain3 } -demolitionist/hardland1 sounds/demolitionist/demohland1.ogg -demolitionist/hardland2 sounds/demolitionist/demohland2.ogg -demolitionist/hardland3 sounds/demolitionist/demohland3.ogg -$random demolitionist/hardland { demolitionist/hardland1 demolitionist/hardland2 demolitionist/hardland3 } -demolitionist/swing1 sounds/demolitionist/demoswing1.ogg -demolitionist/swing2 sounds/demolitionist/demoswing2.ogg -demolitionist/swing3 sounds/demolitionist/demoswing3.ogg -$random demolitionist/swing { demolitionist/swing1 demolitionist/swing2 demolitionist/swing3 } -demolitionist/wswing1 sounds/demolitionist/demowswing1.ogg -demolitionist/wswing2 sounds/demolitionist/demowswing2.ogg -$random demolitionist/wswing { demolitionist/wswing1 demolitionist/wswing2 } -demolitionist/punch1 sounds/demolitionist/demopunch1.ogg -demolitionist/punch2 sounds/demolitionist/demopunch2.ogg -demolitionist/punch3 sounds/demolitionist/demopunch3.ogg -$random demolitionist/punch { demolitionist/punch1 demolitionist/punch2 demolitionist/punch3 } -demolitionist/punchf1 sounds/demolitionist/demopunchf1.ogg -demolitionist/punchf2 sounds/demolitionist/demopunchf2.ogg -demolitionist/punchf3 sounds/demolitionist/demopunchf3.ogg -$random demolitionist/punchf { demolitionist/punchf1 demolitionist/punchf2 demolitionist/punchf3 } -demolitionist/bump1 sounds/demolitionist/demobump1.ogg -demolitionist/bump2 sounds/demolitionist/demobump2.ogg -demolitionist/bump3 sounds/demolitionist/demobump3.ogg -$random demolitionist/bump { demolitionist/bump1 demolitionist/bump2 demolitionist/bump3 } -demolitionist/kick1 sounds/demolitionist/demokick1.ogg -demolitionist/kick2 sounds/demolitionist/demokick2.ogg -demolitionist/kick3 sounds/demolitionist/demokick3.ogg -$random demolitionist/kick { demolitionist/kick1 demolitionist/kick2 demolitionist/kick3 } -demolitionist/revive sounds/demolitionist/demorevive.ogg -demolitionist/youdied sounds/demolitionist/demoded.ogg -demolitionist/parry sounds/demolitionist/demoparry.ogg -demolitionist/handsup sounds/demolitionist/demogesturestart.ogg -demolitionist/handsdown sounds/demolitionist/demogestureend.ogg -demolitionist/whits1 sounds/demolitionist/demowhits1.ogg -demolitionist/whits2 sounds/demolitionist/demowhits2.ogg -demolitionist/whits3 sounds/demolitionist/demowhits3.ogg -$random demolitionist/whits { demolitionist/whits1 demolitionist/whits2 demolitionist/whits3 } -demolitionist/whitm1 sounds/demolitionist/demowhitm1.ogg -demolitionist/whitm2 sounds/demolitionist/demowhitm2.ogg -demolitionist/whitm3 sounds/demolitionist/demowhitm3.ogg -$random demolitionist/whitm { demolitionist/whitm1 demolitionist/whitm2 demolitionist/whitm3 } -demolitionist/whitl1 sounds/demolitionist/demowhitl1.ogg -demolitionist/whitl2 sounds/demolitionist/demowhitl2.ogg -$random demolitionist/whitl { demolitionist/whitl1 demolitionist/whitl2 } -demolitionist/buttslam1 sounds/demolitionist/demobutt1.ogg -demolitionist/buttslam2 sounds/demolitionist/demobutt2.ogg -demolitionist/buttslam3 sounds/demolitionist/demobutt3.ogg -$random demolitionist/buttslam { demolitionist/buttslam1 demolitionist/buttslam2 demolitionist/buttslam3 } -demolitionist/buttslamx sounds/demolitionist/demoxbutt.ogg -demolitionist/smooch sounds/demolitionist/demokiss.ogg -demolitionist/blowkiss sounds/demolitionist/demoblow.ogg -demolitionist/petting sounds/demolitionist/demopat.ogg -demolitionist/knockout sounds/demolitionist/demoknockout.ogg - -$playersound demolitionist neutral *grunt DSEMPTY -$playeralias demolitionist neutral *pain100 demolitionist/lopain -$playeralias demolitionist neutral *pain75 demolitionist/pain -$playeralias demolitionist neutral *pain50 demolitionist/pain -$playeralias demolitionist neutral *pain25 demolitionist/hipain -$playersound demolitionist neutral *usefail sounds/menu/failuse.ogg -$playeralias demolitionist neutral *death demolitionist/death -$playeralias demolitionist neutral *burndeath demolitionist/death -$playeralias demolitionist neutral *xdeath demolitionist/xdeath -$playeralias demolitionist neutral *gibbed demolitionist/xdeath -$playeralias demolitionist neutral *crazydeath demolitionist/xdeath -$playeralias demolitionist neutral *wimpydeath demolitionist/wdeath -$playersound demolitionist neutral *land DSEMPTY -$playersound demolitionist neutral *falling DSEMPTY -$playersound demolitionist neutral *puzzfail sounds/menu/failuse.ogg -$playersound demolitionist neutral *poison DSEMPTY -$playersound demolitionist neutral *dive DSEMPTY -$playersound demolitionist neutral *surface DSEMPTY -$playersound demolitionist neutral *gasp DSEMPTY -$playersound demolitionist neutral *taunt DSEMPTY -$playersound demolitionist neutral *evillaugh DSEMPTY - -voodoodoll/hit sounds/general/BodyHit.ogg -voodoodoll/fall sounds/general/BodyThud.ogg - -deepimpact/fire sounds/deepimpact/impfire.ogg -deepimpact/charge sounds/deepimpact/impaltcharge.ogg -deepimpact/altfire sounds/deepimpact/impaltfire.ogg -deepimpact/dryfire sounds/deepimpact/impdryfire.ogg -deepimpact/dryaltfire sounds/deepimpact/impdryaltfire.ogg -deepimpact/select sounds/deepimpact/impsel.ogg -deepimpact/checkout sounds/deepimpact/impidle.ogg -deepimpact/deselect sounds/deepimpact/impdown.ogg -deepimpact/bullet sounds/deepimpact/impbulletfly.ogg -deepimpact/bullethit1 sounds/deepimpact/impexplo1.ogg -deepimpact/bullethit2 sounds/deepimpact/impexplo2.ogg -deepimpact/reloadbeg sounds/deepimpact/impreloadstart.ogg -deepimpact/reloadend sounds/deepimpact/impreloadend.ogg -deepimpact/reload sounds/deepimpact/impcrank.ogg -deepimpact/noreload sounds/deepimpact/impcrankhalt.ogg -$random deepimpact/bullethit { deepimpact/bullethit1 deepimpact/bullethit2 } - -explodium/casing1 sounds/explodiumgun/expl_case1.ogg -explodium/casing2 sounds/explodiumgun/expl_case2.ogg -explodium/casing3 sounds/explodiumgun/expl_case3.ogg -explodium/casing4 sounds/explodiumgun/expl_case4.ogg -$random explodium/casing { explodium/casing1 explodium/casing2 explodium/casing3 explodium/casing4 } -explodium/checkout sounds/explodiumgun/expl_checkout.ogg -explodium/fire1 sounds/explodiumgun/expl_fire1.ogg -explodium/fire2 sounds/explodiumgun/expl_fire2.ogg -explodium/fire3 sounds/explodiumgun/expl_fire3.ogg -$random explodium/fire { explodium/fire1 explodium/fire2 explodium/fire3 } -explodium/hit1 sounds/explodiumgun/expl_hit1.ogg -explodium/hit2 sounds/explodiumgun/expl_hit2.ogg -explodium/hit3 sounds/explodiumgun/expl_hit3.ogg -$random explodium/hit { explodium/hit1 explodium/hit2 explodium/hit3 } -explodium/jamitin sounds/explodiumgun/expl_jamitin.ogg -explodium/mag1 sounds/explodiumgun/expl_mag1.ogg -explodium/mag2 sounds/explodiumgun/expl_mag2.ogg -explodium/mag3 sounds/explodiumgun/expl_mag3.ogg -$random explodium/mag { explodium/mag1 explodium/mag2 explodium/mag3 } -explodium/maghit1 sounds/explodiumgun/expl_maghit1.ogg -explodium/maghit2 sounds/explodiumgun/expl_maghit2.ogg -$random explodium/maghit { explodium/maghit1 explodium/maghit2 } -explodium/magget sounds/explodiumgun/expl_magget.ogg -explodium/magin sounds/explodiumgun/expl_magin.ogg -explodium/magout sounds/explodiumgun/expl_magout.ogg -explodium/magpin sounds/explodiumgun/expl_magpin.ogg -explodium/select sounds/explodiumgun/expl_select.ogg -explodium/deselect sounds/explodiumgun/expl_deselect.ogg -explodium/slideback sounds/explodiumgun/expl_slideback.ogg -explodium/slideforward sounds/explodiumgun/expl_slideforward.ogg -explodium/slidelock sounds/explodiumgun/expl_slidelock.ogg -explodium/speen sounds/explodiumgun/expl_speen.ogg -explodium/throwmag sounds/explodiumgun/expl_throwmag.ogg -$limit explodium/hit 32 -$limit explodium/maghit 32 - -pusher/select sounds/pusher/push_select.ogg -pusher/deselect sounds/pusher/push_deselect.ogg -pusher/motor sounds/pusher/push_motor.ogg -pusher/motorend sounds/pusher/push_motorend.ogg -pusher/start sounds/pusher/push_start.ogg -pusher/drill sounds/pusher/push_drill.ogg -pusher/hit1 sounds/pusher/push_hitw1.ogg -pusher/hit2 sounds/pusher/push_hitw2.ogg -pusher/hit3 sounds/pusher/push_hitw3.ogg -$random pusher/hit { pusher/hit1 pusher/hit2 pusher/hit3 } -$limit pusher/hit 32 -pusher/meat1 sounds/pusher/push_hitf1.ogg -pusher/meat2 sounds/pusher/push_hitf2.ogg -pusher/meat3 sounds/pusher/push_hitf3.ogg -$random pusher/meat { pusher/meat1 pusher/meat2 pusher/meat3 } -$limit pusher/meat 32 -pusher/end sounds/pusher/push_end.ogg -pusher/checkout sounds/pusher/push_idle.ogg -pusher/pullback sounds/pusher/push_altcharge.ogg -pusher/altfire1 sounds/pusher/push_altfire1.ogg -pusher/altfire2 sounds/pusher/push_altfire2.ogg -$random pusher/altfire { pusher/altfire1 pusher/altfire2 } -pusher/miss sounds/pusher/push_miss.ogg -pusher/althit1 sounds/pusher/push_slam1.ogg -pusher/althit2 sounds/pusher/push_slam2.ogg -$random pusher/althit { pusher/althit1 pusher/althit2 } -pusher/altmeat1 sounds/pusher/push_slamf1.ogg -pusher/altmeat2 sounds/pusher/push_slamf2.ogg -$random pusher/altmeat { pusher/altmeat1 pusher/altmeat2 } -pusher/fly sounds/pusher/push_fly.ogg -pusher/bounce1 sounds/pusher/push_bounce1.ogg -pusher/bounce2 sounds/pusher/push_bounce2.ogg -pusher/bounce3 sounds/pusher/push_bounce3.ogg -$random pusher/bounce { pusher/bounce1 pusher/bounce2 pusher/bounce3 } - -spreadgun/open sounds/spreadgun/spread_open.ogg -spreadgun/hammer sounds/spreadgun/spread_hammer.ogg -spreadgun/close sounds/spreadgun/spread_close.ogg -spreadgun/shellin sounds/spreadgun/spread_load.ogg -spreadgun/select sounds/spreadgun/spread_select.ogg -spreadgun/deselect sounds/spreadgun/spread_deselect.ogg -spreadgun/redfire1 sounds/spreadgun/spread_redfire1.ogg -spreadgun/redfire2 sounds/spreadgun/spread_redfire2.ogg -$random spreadgun/redfire { spreadgun/redfire1 spreadgun/redfire2 } -$limit spreadgun/redfire 16 -spreadgun/greenfire1 sounds/spreadgun/spread_greenfire1.ogg -spreadgun/greenfire2 sounds/spreadgun/spread_greenfire2.ogg -$random spreadgun/greenfire { spreadgun/greenfire1 spreadgun/greenfire2 } -$limit spreadgun/greenfire 16 -spreadgun/whitefire1 sounds/spreadgun/spread_whitefire1.ogg -spreadgun/whitefire2 sounds/spreadgun/spread_whitefire2.ogg -$random spreadgun/whitefire { spreadgun/whitefire1 spreadgun/whitefire2 } -spreadgun/bluefire1 sounds/spreadgun/spread_bluefire1.ogg -spreadgun/bluefire2 sounds/spreadgun/spread_bluefire2.ogg -$random spreadgun/bluefire { spreadgun/bluefire1 spreadgun/bluefire2 } -$limit spreadgun/bluefire 16 -spreadgun/blackfire1 sounds/spreadgun/spread_blackfire1.ogg -spreadgun/blackfire2 sounds/spreadgun/spread_blackfire2.ogg -$random spreadgun/blackfire { spreadgun/blackfire1 spreadgun/blackfire2 } -spreadgun/purplefire1 sounds/spreadgun/spread_purplefire1.ogg -spreadgun/purplefire2 sounds/spreadgun/spread_purplefire2.ogg -$random spreadgun/purplefire { spreadgun/purplefire1 spreadgun/purplefire2 } -$limit spreadgun/purplefire 16 -spreadgun/goldfire1 sounds/spreadgun/spread_goldfire1.ogg -spreadgun/goldfire2 sounds/spreadgun/spread_goldfire2.ogg -$random spreadgun/goldfire { spreadgun/goldfire1 spreadgun/goldfire2 } -spreadgun/checkgun sounds/spreadgun/spread_idle.ogg -spreadgun/casing1 sounds/spreadgun/spread_casing1.ogg -spreadgun/casing2 sounds/spreadgun/spread_casing2.ogg -spreadgun/casing3 sounds/spreadgun/spread_casing3.ogg -spreadgun/casing4 sounds/spreadgun/spread_casing4.ogg -spreadgun/casing5 sounds/spreadgun/spread_casing5.ogg -spreadgun/casing6 sounds/spreadgun/spread_casing6.ogg -$random spreadgun/casing { spreadgun/casing1 spreadgun/casing2 spreadgun/casing3 spreadgun/casing4 spreadgun/casing5 spreadgun/casing6 } -spreadgun/gcasing1 sounds/spreadgun/spread_gcasing1.ogg -spreadgun/gcasing2 sounds/spreadgun/spread_gcasing2.ogg -spreadgun/gcasing3 sounds/spreadgun/spread_gcasing3.ogg -$random spreadgun/gcasing { spreadgun/gcasing1 spreadgun/gcasing2 spreadgun/gcasing3 } -spreadgun/pellet1 sounds/spreadgun/spread_pellet1.ogg -spreadgun/pellet2 sounds/spreadgun/spread_pellet2.ogg -spreadgun/pellet3 sounds/spreadgun/spread_pellet3.ogg -spreadgun/pellet4 sounds/spreadgun/spread_pellet4.ogg -spreadgun/pellet5 sounds/spreadgun/spread_pellet5.ogg -spreadgun/pellet6 sounds/spreadgun/spread_pellet6.ogg -spreadgun/pellet7 sounds/spreadgun/spread_pellet7.ogg -spreadgun/pellet8 sounds/spreadgun/spread_pellet8.ogg -$random spreadgun/pellet { spreadgun/pellet1 spreadgun/pellet2 spreadgun/pellet3 spreadgun/pellet4 spreadgun/pellet5 spreadgun/pellet6 spreadgun/pellet7 spreadgun/pellet8 } -$limit spreadgun/pellet 32 -spreadgun/pelletf1 sounds/spreadgun/spread_pelletf1.ogg -spreadgun/pelletf2 sounds/spreadgun/spread_pelletf2.ogg -spreadgun/pelletf3 sounds/spreadgun/spread_pelletf3.ogg -spreadgun/pelletf4 sounds/spreadgun/spread_pelletf4.ogg -spreadgun/pelletf5 sounds/spreadgun/spread_pelletf5.ogg -spreadgun/pelletf6 sounds/spreadgun/spread_pelletf6.ogg -$random spreadgun/pelletf { spreadgun/pelletf1 spreadgun/pelletf2 spreadgun/pelletf3 spreadgun/pelletf4 spreadgun/pelletf5 spreadgun/pelletf6 } -$limit spreadgun/pelletf 32 -spreadgun/slug1 sounds/spreadgun/spread_slug1.ogg -spreadgun/slug2 sounds/spreadgun/spread_slug2.ogg -$random spreadgun/slug { spreadgun/slug1 spreadgun/slug2 } -spreadgun/slugf1 sounds/spreadgun/spread_slugf1.ogg -spreadgun/slugf2 sounds/spreadgun/spread_slugf2.ogg -$random spreadgun/slugf { spreadgun/slugf1 spreadgun/slugf2 } -spreadgun/corrode sounds/spreadgun/spread_poison.ogg -spreadgun/corrodepuff1 sounds/spreadgun/spread_poisonpuff1.ogg -spreadgun/corrodepuff2 sounds/spreadgun/spread_poisonpuff2.ogg -$random spreadgun/corrodepuff { spreadgun/corrodepuff1 spreadgun/corrodepuff2 } -$limit spreadgun/corrodepuff 32 -spreadgun/ball1 sounds/spreadgun/spread_ball1.ogg -spreadgun/ball2 sounds/spreadgun/spread_ball2.ogg -spreadgun/ball3 sounds/spreadgun/spread_ball3.ogg -$random spreadgun/ball { spreadgun/ball1 spreadgun/ball2 spreadgun/ball3 } -spreadgun/ballf1 sounds/spreadgun/spread_ballf1.ogg -spreadgun/ballf2 sounds/spreadgun/spread_ballf2.ogg -spreadgun/ballf3 sounds/spreadgun/spread_ballf3.ogg -$random spreadgun/ballf { spreadgun/ballf1 spreadgun/ballf2 spreadgun/ballf3 } -spreadgun/salt1 sounds/spreadgun/spread_salt1.ogg -spreadgun/salt2 sounds/spreadgun/spread_salt2.ogg -spreadgun/salt3 sounds/spreadgun/spread_salt3.ogg -spreadgun/salt4 sounds/spreadgun/spread_salt4.ogg -$random spreadgun/salt { spreadgun/salt1 spreadgun/salt2 spreadgun/salt3 spreadgun/salt4 } -$limit spreadgun/salt 32 -spreadgun/salttrail1 sounds/spreadgun/spread_bluetrail1.ogg -spreadgun/salttrail2 sounds/spreadgun/spread_bluetrail2.ogg -spreadgun/salttrail3 sounds/spreadgun/spread_bluetrail3.ogg -spreadgun/salttrail4 sounds/spreadgun/spread_bluetrail4.ogg -$random spreadgun/salttrail { spreadgun/salttrail1 spreadgun/salttrail2 spreadgun/salttrail3 spreadgun/salttrail4 } -$limit spreadgun/salttrail 32 -spreadgun/goldexpl1 sounds/spreadgun/spread_goldexp1.ogg -spreadgun/goldexpl2 sounds/spreadgun/spread_goldexp2.ogg -$random spreadgun/goldexpl { spreadgun/goldexpl1 spreadgun/goldexpl2 } - -wallbuster/select sounds/wallbuster/cbt_select.ogg -wallbuster/deselect sounds/wallbuster/cbt_deselect.ogg -wallbuster/dryfire sounds/wallbuster/cbt_dryfire.ogg -wallbuster/spin sounds/wallbuster/cbt_spinone.ogg -wallbuster/spinbig sounds/wallbuster/cbt_spinbig.ogg -wallbuster/unlock sounds/wallbuster/cbt_leverpull.ogg -wallbuster/lock sounds/wallbuster/cbt_leverpush.ogg -wallbuster/meleestart sounds/wallbuster/cbt_lower.ogg -wallbuster/meleeend sounds/wallbuster/cbt_raise.ogg -wallbuster/detach sounds/wallbuster/cbt_unload.ogg -wallbuster/attach sounds/wallbuster/cbt_load.ogg -wallbuster/handspin sounds/wallbuster/cbt_handspin.ogg -wallbuster/load1 sounds/wallbuster/cbt_shellin1.ogg -wallbuster/load2 sounds/wallbuster/cbt_shellin2.ogg -wallbuster/load3 sounds/wallbuster/cbt_shellin3.ogg -wallbuster/load4 sounds/wallbuster/cbt_shellin4.ogg -$random wallbuster/load { wallbuster/load1 wallbuster/load2 wallbuster/load3 wallbuster/load4 } -wallbuster/smallbust1 sounds/wallbuster/cbt_smallbust1.ogg -wallbuster/smallbust2 sounds/wallbuster/cbt_smallbust2.ogg -wallbuster/smallbust3 sounds/wallbuster/cbt_smallbust3.ogg -$random wallbuster/smallbust { wallbuster/smallbust1 wallbuster/smallbust2 wallbuster/smallbust3 } -$limit wallbuster/smallbust 16 -wallbuster/bigbust1 sounds/wallbuster/cbt_bigbust1.ogg -wallbuster/bigbust2 sounds/wallbuster/cbt_bigbust2.ogg -wallbuster/bigbust3 sounds/wallbuster/cbt_bigbust3.ogg -$random wallbuster/bigbust { wallbuster/bigbust1 wallbuster/bigbust2 wallbuster/bigbust3 } -$limit wallbuster/bigbust 8 - -eviscerator/select sounds/eviscerator/visc_select.ogg -eviscerator/deselect sounds/eviscerator/visc_deselect.ogg -eviscerator/load sounds/eviscerator/visc_cycle.ogg -eviscerator/fire1 sounds/eviscerator/visc_fire1.ogg -eviscerator/fire2 sounds/eviscerator/visc_fire2.ogg -$random eviscerator/fire { eviscerator/fire1 eviscerator/fire2 } -eviscerator/altfire1 sounds/eviscerator/visc_altfire1.ogg -eviscerator/altfire2 sounds/eviscerator/visc_altfire2.ogg -$random eviscerator/altfire { eviscerator/altfire1 eviscerator/altfire2 } -eviscerator/eject sounds/eviscerator/visc_eject.ogg -eviscerator/ejectend sounds/eviscerator/visc_ejectend.ogg -eviscerator/switch sounds/eviscerator/visc_switch.ogg -eviscerator/checkgun sounds/eviscerator/visc_idle.ogg -eviscerator/meleestart sounds/eviscerator/visc_meleestart.ogg -eviscerator/meleeend sounds/eviscerator/visc_meleeend.ogg -eviscerator/hit1 sounds/eviscerator/visc_hit1.ogg -eviscerator/hit2 sounds/eviscerator/visc_hit2.ogg -eviscerator/hit3 sounds/eviscerator/visc_hit3.ogg -eviscerator/hit4 sounds/eviscerator/visc_hit4.ogg -eviscerator/hit5 sounds/eviscerator/visc_hit5.ogg -eviscerator/hit6 sounds/eviscerator/visc_hit6.ogg -$random eviscerator/hit { eviscerator/hit1 eviscerator/hit2 eviscerator/hit3 eviscerator/hit4 eviscerator/hit5 eviscerator/hit6 } -$limit eviscerator/hit 32 -eviscerator/hith1 sounds/eviscerator/visc_hith1.ogg -eviscerator/hith2 sounds/eviscerator/visc_hith2.ogg -eviscerator/hith3 sounds/eviscerator/visc_hith3.ogg -eviscerator/hith4 sounds/eviscerator/visc_hith4.ogg -eviscerator/hith5 sounds/eviscerator/visc_hith5.ogg -eviscerator/hith6 sounds/eviscerator/visc_hith6.ogg -eviscerator/hith7 sounds/eviscerator/visc_hith7.ogg -eviscerator/hith8 sounds/eviscerator/visc_hith8.ogg -$random eviscerator/hith { eviscerator/hith1 eviscerator/hith2 eviscerator/hith3 eviscerator/hith4 eviscerator/hith5 eviscerator/hith6 eviscerator/hith7 eviscerator/hith8 } -$limit eviscerator/hith 32 -eviscerator/hitf1 sounds/eviscerator/visc_hitf1.ogg -eviscerator/hitf2 sounds/eviscerator/visc_hitf2.ogg -eviscerator/hitf3 sounds/eviscerator/visc_hitf3.ogg -$random eviscerator/hitf { eviscerator/hitf1 eviscerator/hitf2 eviscerator/hitf3 } -$limit eviscerator/hitf 32 -eviscerator/shell1 sounds/eviscerator/visc_shell1.ogg -eviscerator/shell2 sounds/eviscerator/visc_shell2.ogg -$random eviscerator/shell { eviscerator/shell1 eviscerator/shell2 } -eviscerator/casing sounds/eviscerator/visc_casing.ogg - -hellblazer/select sounds/hellblazer/blaze_select.ogg -hellblazer/deselect sounds/hellblazer/blaze_deselect.ogg -hellblazer/fire sounds/hellblazer/blaze_fire.ogg -hellblazer/altfire sounds/hellblazer/blaze_altfire.ogg -hellblazer/meleestart sounds/hellblazer/blaze_meleestart.ogg -hellblazer/meleeend sounds/hellblazer/blaze_meleeend.ogg -hellblazer/idle sounds/hellblazer/blaze_idle.ogg -hellblazer/dustoff sounds/hellblazer/blaze_dustoff.ogg -hellblazer/shift sounds/hellblazer/blaze_shift.ogg -hellblazer/spin sounds/hellblazer/blaze_spin.ogg -hellblazer/open sounds/hellblazer/blaze_open.ogg -hellblazer/magout sounds/hellblazer/blaze_magout.ogg -hellblazer/magin sounds/hellblazer/blaze_magin.ogg -hellblazer/close sounds/hellblazer/blaze_close.ogg -hellblazer/hitm1 sounds/hellblazer/blaze_hitm1.ogg -hellblazer/hitm2 sounds/hellblazer/blaze_hitm2.ogg -hellblazer/hitm3 sounds/hellblazer/blaze_hitm3.ogg -$random hellblazer/hitm { hellblazer/hitm1 hellblazer/hitm2 hellblazer/hitm3 } -$limit hellblazer/hitm 32 -hellblazer/hitc1 sounds/hellblazer/blaze_hitc1.ogg -hellblazer/hitc2 sounds/hellblazer/blaze_hitc2.ogg -hellblazer/hitc3 sounds/hellblazer/blaze_hitc3.ogg -$random hellblazer/hitc { hellblazer/hitc1 hellblazer/hitc2 hellblazer/hitc3 } -$limit hellblazer/hitc 32 -hellblazer/hitcs1 sounds/hellblazer/blaze_hitcs1.ogg -hellblazer/hitcs2 sounds/hellblazer/blaze_hitcs2.ogg -hellblazer/hitcs3 sounds/hellblazer/blaze_hitcs3.ogg -$random hellblazer/hitcs { hellblazer/hitcs1 hellblazer/hitcs2 hellblazer/hitcs3 } -$limit hellblazer/hitcs 32 -hellblazer/hitr1 sounds/hellblazer/blaze_hitr1.ogg -hellblazer/hitr2 sounds/hellblazer/blaze_hitr2.ogg -hellblazer/hitr3 sounds/hellblazer/blaze_hitr3.ogg -$random hellblazer/hitr { hellblazer/hitr1 hellblazer/hitr2 hellblazer/hitr3 } -$limit hellblazer/hitr 32 -hellblazer/hitw1 sounds/hellblazer/blaze_hitw1.ogg -hellblazer/hitw2 sounds/hellblazer/blaze_hitw2.ogg -$random hellblazer/hitw { hellblazer/hitw1 hellblazer/hitw2 } -$limit hellblazer/hitw 32 -hellblazer/bounce sounds/hellblazer/blaze_bounce.ogg -hellblazer/fly sounds/hellblazer/blaze_fly.ogg -hellblazer/preload sounds/hellblazer/blaze_preload.ogg -hellblazer/hold sounds/hellblazer/blaze_hold.ogg -hellblazer/lock sounds/hellblazer/blaze_lock.ogg -hellblazer/clear sounds/hellblazer/blaze_clear.ogg - -biospark/select sounds/sparkster/spark_select.ogg -biospark/deselect sounds/sparkster/spark_deselect.ogg -biospark/fire1 sounds/sparkster/spark_fire1.ogg -biospark/fire2 sounds/sparkster/spark_fire2.ogg -biospark/fire3 sounds/sparkster/spark_fire3.ogg -$random biospark/fire { biospark/fire1 biospark/fire2 biospark/fire3 } -biospark/altfire1 sounds/sparkster/spark_altfire1.ogg -biospark/altfire2 sounds/sparkster/spark_altfire2.ogg -biospark/altfire3 sounds/sparkster/spark_altfire3.ogg -$random biospark/altfire { biospark/altfire1 biospark/altfire2 biospark/altfire3 } -biospark/thirdfire sounds/sparkster/spark_third.ogg -biospark/meleestart sounds/sparkster/spark_meleestart.ogg -biospark/meleeend sounds/sparkster/spark_meleeend.ogg -biospark/idle sounds/sparkster/spark_idle.ogg -biospark/idle2 sounds/sparkster/spark_idle2.ogg -biospark/magout sounds/sparkster/spark_magout.ogg -biospark/magin sounds/sparkster/spark_magin.ogg -biospark/spark sounds/sparkster/spark_spark.ogg -biospark/hit1 sounds/sparkster/spark_hit1.ogg -biospark/hit2 sounds/sparkster/spark_hit2.ogg -biospark/hit3 sounds/sparkster/spark_hit3.ogg -$random biospark/hit { biospark/hit1 biospark/hit2 biospark/hit3 } -$limit biospark/hit 32 -biospark/beamhit1 sounds/sparkster/spark_beamhit1.ogg -biospark/beamhit2 sounds/sparkster/spark_beamhit2.ogg -$random biospark/beamhit { biospark/beamhit1 biospark/beamhit2 } -$limit biospark/beamhit 32 -biospark/deploy1 sounds/sparkster/spark_deploy1.ogg -biospark/deploy2 sounds/sparkster/spark_deploy2.ogg -biospark/deploy3 sounds/sparkster/spark_deploy3.ogg -$random biospark/deploy { biospark/deploy1 biospark/deploy2 biospark/deploy3 } -$limit biospark/deploy 32 -biospark/bighit1 sounds/sparkster/spark_bigexpl1.ogg -biospark/bighit2 sounds/sparkster/spark_bigexpl2.ogg -$random biospark/bighit { biospark/bighit1 biospark/bighit2 } -$limit biospark/bighit 32 -biospark/bigspark sounds/sparkster/spark_bigspark.ogg -biospark/arc1 sounds/sparkster/spark_arc1.ogg -biospark/arc2 sounds/sparkster/spark_arc2.ogg -biospark/arc3 sounds/sparkster/spark_arc3.ogg -biospark/arc4 sounds/sparkster/spark_arc4.ogg -$random biospark/arc { biospark/arc1 biospark/arc2 biospark/arc3 biospark/arc4 } -$limit biospark/arc 64 -biospark/bigarc1 sounds/sparkster/spark_arcb1.ogg -biospark/bigarc2 sounds/sparkster/spark_arcb2.ogg -biospark/bigarc3 sounds/sparkster/spark_arcb3.ogg -biospark/bigarc4 sounds/sparkster/spark_arcb4.ogg -$random biospark/bigarc { biospark/bigarc1 biospark/bigarc2 biospark/bigarc3 biospark/bigarc4 } -$limit biospark/bigarc 64 -biospark/hugearc1 sounds/sparkster/spark_arch1.ogg -biospark/hugearc2 sounds/sparkster/spark_arch2.ogg -biospark/hugearc3 sounds/sparkster/spark_arch3.ogg -$random biospark/hugearc { biospark/hugearc1 biospark/hugearc2 biospark/hugearc3 } -$limit biospark/hugearc 64 -biospark/zap1 sounds/sparkster/spark_zap1.ogg -biospark/zap2 sounds/sparkster/spark_zap2.ogg -biospark/zap3 sounds/sparkster/spark_zap3.ogg -biospark/zap4 sounds/sparkster/spark_zap4.ogg -biospark/zap5 sounds/sparkster/spark_zap5.ogg -biospark/zap6 sounds/sparkster/spark_zap6.ogg -$random biospark/zap { biospark/zap1 biospark/zap2 biospark/zap3 biospark/zap4 biospark/zap5 biospark/zap6 } -$limit biospark/zap 64 -biospark/prefire sounds/sparkster/spark_prefire.ogg -biospark/prethird sounds/sparkster/spark_prethird.ogg -biospark/hiss sounds/sparkster/spark_hiss.ogg -biospark/fail sounds/sparkster/spark_thirdfail.ogg -biospark/checkout sounds/sparkster/spark_checkout.ogg - -silverbullet/select sounds/silverbullet/silver_select.ogg -silverbullet/deselect sounds/silverbullet/silver_deselect.ogg -silverbullet/meleestart sounds/silverbullet/silver_meleestart.ogg -silverbullet/meleeend sounds/silverbullet/silver_meleeend.ogg -silverbullet/idle sounds/silverbullet/silver_idle.ogg -silverbullet/boltopen sounds/silverbullet/silver_boltopen.ogg -silverbullet/boltclose sounds/silverbullet/silver_boltclose.ogg -silverbullet/magout sounds/silverbullet/silver_magout.ogg -silverbullet/magin sounds/silverbullet/silver_magin.ogg -silverbullet/zoomstart sounds/silverbullet/silver_zoomstart.ogg -silverbullet/zooming sounds/silverbullet/silver_zooming.ogg -silverbullet/zoomend sounds/silverbullet/silver_zoomend.ogg -silverbullet/fire1 sounds/silverbullet/silver_fire1.ogg -silverbullet/fire2 sounds/silverbullet/silver_fire2.ogg -silverbullet/fire3 sounds/silverbullet/silver_fire3.ogg -$random silverbullet/fire { silverbullet/fire1 silverbullet/fire2 silverbullet/fire3 } -silverbullet/altfire1 sounds/silverbullet/silver_altfire1.ogg -silverbullet/altfire2 sounds/silverbullet/silver_altfire2.ogg -silverbullet/altfire3 sounds/silverbullet/silver_altfire3.ogg -$random silverbullet/altfire { silverbullet/altfire1 silverbullet/altfire2 silverbullet/altfire3 } -silverbullet/jet sounds/silverbullet/silver_jet.ogg -silverbullet/casing1 sounds/silverbullet/silver_casing1.ogg -silverbullet/casing2 sounds/silverbullet/silver_casing2.ogg -silverbullet/casing3 sounds/silverbullet/silver_casing3.ogg -silverbullet/casing4 sounds/silverbullet/silver_casing4.ogg -$random silverbullet/casing { silverbullet/casing1 silverbullet/casing2 silverbullet/casing3 silverbullet/casing4 } -silverbullet/mag1 sounds/silverbullet/silver_mag1.ogg -silverbullet/mag2 sounds/silverbullet/silver_mag2.ogg -silverbullet/mag3 sounds/silverbullet/silver_mag3.ogg -$random silverbullet/mag { silverbullet/mag1 silverbullet/mag2 silverbullet/mag3 } -silverbullet/hit1 sounds/silverbullet/silver_hit1.ogg -silverbullet/hit2 sounds/silverbullet/silver_hit2.ogg -$random silverbullet/hit { silverbullet/hit1 silverbullet/hit2 } -silverbullet/flesh1 sounds/silverbullet/silver_hitf1.ogg -silverbullet/flesh2 sounds/silverbullet/silver_hitf2.ogg -$random silverbullet/flesh { silverbullet/flesh1 silverbullet/flesh2 } -silverbullet/chode1 sounds/silverbullet/silver_chode1.ogg -silverbullet/chode2 sounds/silverbullet/silver_chode2.ogg -$random silverbullet/chode { silverbullet/chode1 silverbullet/chode2 } -silverbullet/crouch sounds/silverbullet/silver_crouch.ogg -silverbullet/uncrouch sounds/silverbullet/silver_uncrouch.ogg - -candygun/fire1 sounds/candygun/candy_fire1.ogg -candygun/fire2 sounds/candygun/candy_fire2.ogg -candygun/fire3 sounds/candygun/candy_fire3.ogg -$random candygun/fire { candygun/fire1 candygun/fire2 candygun/fire3 } -candygun/hit1 sounds/candygun/candy_hit1.ogg -candygun/hit2 sounds/candygun/candy_hit2.ogg -candygun/hit3 sounds/candygun/candy_hit3.ogg -$random candygun/hit { candygun/hit1 candygun/hit2 candygun/hit3 } -candygun/maghit1 sounds/candygun/candy_maghit1.ogg -candygun/maghit2 sounds/candygun/candy_maghit2.ogg -$random candygun/maghit { candygun/maghit1 candygun/maghit2 } -candygun/gunhit1 sounds/candygun/candy_gunhit1.ogg -candygun/gunhit2 sounds/candygun/candy_gunhit2.ogg -$random candygun/gunhit { candygun/gunhit1 candygun/gunhit2 } -$limit candygun/hit 32 -$limit candygun/maghit 32 -$limit candygun/gunhit 32 - -ynykron/select sounds/ynykron/mc_select.ogg -ynykron/deselect sounds/ynykron/mc_deselect.ogg -ynykron/idle sounds/ynykron/mc_idle.ogg -ynykron/ready sounds/ynykron/mc_ready.ogg -ynykron/latch sounds/ynykron/mc_latch.ogg -ynykron/ventopen sounds/ynykron/mc_ventopen.ogg -ynykron/ventclose sounds/ynykron/mc_ventclose.ogg -ynykron/puff sounds/ynykron/mc_puff.ogg -ynykron/puffing sounds/ynykron/mc_puffing.ogg -ynykron/puffend sounds/ynykron/mc_puffend.ogg -ynykron/meleestart sounds/ynykron/mc_meleestart.ogg -ynykron/meleeend sounds/ynykron/mc_meleeend.ogg -ynykron/checkout sounds/ynykron/mc_checkout.ogg -ynykron/fire sounds/ynykron/mc_fire.ogg -ynykron/altfire sounds/ynykron/mc_altfire.ogg -ynykron/magout sounds/ynykron/mc_magout.ogg -ynykron/magin sounds/ynykron/mc_magin.ogg -ynykron/beam sounds/ynykron/mc_beam.ogg -ynykron/hit1 sounds/ynykron/mc_hit1.ogg -ynykron/hit2 sounds/ynykron/mc_hit2.ogg -ynykron/hit3 sounds/ynykron/mc_hit3.ogg -$random ynykron/hit { ynykron/hit1 ynykron/hit2 ynykron/hit3 } -ynykron/altbeam sounds/ynykron/mc_altbeam.ogg -ynykron/vortex sounds/ynykron/mc_vortex.ogg -ynykron/vortexarc1 sounds/ynykron/mc_vortexarc1.ogg -ynykron/vortexarc2 sounds/ynykron/mc_vortexarc2.ogg -ynykron/vortexarc3 sounds/ynykron/mc_vortexarc3.ogg -$random ynykron/vortexarc { ynykron/vortexarc1 ynykron/vortexarc2 ynykron/vortexarc3 } -ynykron/vortexflash1 sounds/ynykron/mc_vortexflash1.ogg -ynykron/vortexflash2 sounds/ynykron/mc_vortexflash2.ogg -$random ynykron/vortexflash { ynykron/vortexflash1 ynykron/vortexflash2 } -ynykron/vortexend sounds/ynykron/mc_vortexend.ogg -ynykron/wind sounds/ynykron/mc_vortexwind.ogg - -misc/secret sounds/menu/findsecret.ogg -misc/keytry sounds/menu/failuse.ogg -misc/w_pkup sounds/general/wpickup.ogg -misc/w_pkup_vip sounds/general/wpickup_vip.ogg -misc/p_pkup sounds/general/ppickup.ogg -misc/p_pkup_vip sounds/general/ppickup_vip.ogg -misc/i_pkup sounds/general/ipickup.ogg -misc/k_pkup sounds/general/kpickup.ogg -misc/ammo_pkup sounds/general/apickup.ogg -misc/bullet_pkup sounds/general/bpickup.ogg -misc/ammo_pkup_vip sounds/general/apickup_vip.ogg -misc/bullet_pkup_vip sounds/general/bpickup_vip.ogg -misc/armor_pkup sounds/general/spickup.ogg -misc/health_pkup sounds/general/hpickup.ogg -misc/spawn sounds/CORK.ogg -misc/teleport sounds/general/teleport.ogg -misc/chat sounds/menu/chatsnd.ogg -misc/chat2 sounds/menu/chatsnd.ogg -Chat sounds/menu/chatsnd.ogg // hexen what the fuck -misc/sundowner sounds/SUNDOWNER.ogg -misc/emone sounds/EMONE.ogg -misc/trombone sounds/SADTROMBONE.ogg -misc/lamborghini sounds/GNAWLIDGE.ogg -misc/nocheat sounds/DSNOPE.ogg -misc/drumroll sounds/DRUMROLL.ogg -misc/tada sounds/TADA.ogg -misc/heart sounds/KOKORO.ogg -misc/achievement sounds/CTF6.ogg -misc/wow sounds/WOW.ogg -misc/achievement2 sounds/YAY.ogg -misc/orbexplode sounds/ORBEXPLODE.ogg -misc/omgfart sounds/omgfart.ogg -misc/voice sounds/dlgvoice.ogg -misc/sewercount sounds/sewercount.ogg -misc/frag sounds/GFRAG.ogg -misc/gibber1 sounds/general/Gib1.ogg -misc/gibber2 sounds/general/Gib2.ogg -misc/gibber3 sounds/general/Gib3.ogg -misc/gibber4 sounds/general/Gib4.ogg -misc/gibber5 sounds/general/Gib5.ogg -$random misc/gibber { misc/gibber1 misc/gibber2 misc/gibber3 misc/gibber4 misc/gibber5 } -misc/gibhit1 sounds/general/gibP1.ogg -misc/gibhit2 sounds/general/gibP3.ogg -misc/gibhit3 sounds/general/gibP4.ogg -misc/gibhit4 sounds/general/gibP5.ogg -misc/gibhit5 sounds/general/gibP6.ogg -$random misc/gibhit { misc/gibhit1 misc/gibhit2 misc/gibhit3 misc/gibhit4 misc/gibhit5 } -misc/blooddrop sounds/general/bloddrop.ogg -misc/bodythump sounds/general/thump.ogg -misc/flame1 sounds/misc/onfire1.ogg -misc/flame2 sounds/misc/onfire2.ogg -misc/flame3 sounds/misc/onfire3.ogg -misc/flame4 sounds/misc/onfire4.ogg -$random misc/flame { misc/flame1 misc/flame2 smisc/flame3 misc/flame4 } -$limit misc/flame 32 - -misc/underwater sounds/general/uWater1a.ogg -misc/underslime sounds/general/uGoop1.ogg -misc/underlava sounds/general/uLava1.ogg -misc/waterenter sounds/general/DIVE.ogg -misc/slimeenter sounds/general/GoopJ1.ogg -misc/lavaenter sounds/general/LavaJ1.ogg -misc/waterexit sounds/general/surfaceb.ogg -misc/slimeexit sounds/general/GoopE1.ogg -misc/lavaexit sounds/general/LavaE1.ogg - -misc/ricochet1 sounds/general/ric1.ogg -misc/ricochet2 sounds/general/ric2.ogg -misc/ricochet3 sounds/general/ric3.ogg -$random misc/ricochet { misc/ricochet1 misc/ricochet2 misc/ricochet3 } - -misc/parry_ds1 sounds/general/parry_ds1.ogg -misc/parry_ds2 sounds/general/parry_ds2.ogg -misc/parry_ds3 sounds/general/parry_ds3.ogg -$random misc/soulsparry { misc/parry_ds1 misc/parry_ds2 misc/parry_ds3 } - -misc/clonk1 sounds/clonk/clonk1.ogg -misc/clonk2 sounds/clonk/clonk2.ogg -misc/clonk3 sounds/clonk/clonk3.ogg -misc/clonk4 sounds/clonk/clonk4.ogg -misc/clonk5 sounds/clonk/clonk5.ogg -misc/clonk6 sounds/clonk/clonk6.ogg -misc/clonk7 sounds/clonk/clonk7.ogg -misc/clonk8 sounds/clonk/clonk8.ogg -misc/clonk9 sounds/clonk/clonk9.ogg -misc/clonk10 sounds/clonk/clonk10.ogg -misc/clonk11 sounds/clonk/clonk11.ogg -$random misc/clonk { misc/clonk1 misc/clonk2 misc/clonk3 misc/clonk4 misc/clonk5 misc/clonk6 misc/clonk7 misc/clonk8 misc/clonk9 misc/clonk10 misc/clonk11 } - -armor/blastsuit sounds/items/blastsuit.ogg -armor/wararmor sounds/items/wararmor.ogg -armor/hit1 sounds/items/hullhit.ogg -armor/hit2 sounds/items/hullhit2.ogg -armor/hit3 sounds/items/hullhit3.ogg -armor/hit4 sounds/items/hullhit4.ogg -armor/hit5 sounds/items/hullhit5.ogg -$random armor/hit { armor/hit1 armor/hit2 armor/hit3 armor/hit4 armor/hit5 } - -powerup/refresheruse sounds/items/refreshuse.ogg -powerup/refresher sounds/items/refresh.ogg -powerup/sandwich sounds/CORK.ogg -powerup/ghost sounds/items/CloakOn.ogg -powerup/ghostact sounds/items/CloakLoop3.ogg -powerup/ghostend sounds/items/CloakOff.ogg -powerup/gravity sounds/items/gravityon.ogg -powerup/gravityact sounds/items/gravityact.ogg -powerup/gravityend sounds/items/gravityoff.ogg -powerup/invinciball sounds/items/invincion.ogg -powerup/invinciballact sounds/items/invinciact.ogg -powerup/invinciballhit sounds/items/invincihit.ogg -powerup/invinciballend sounds/items/invincioff.ogg -powerup/ragekit sounds/items/ragekiton.ogg -powerup/ragekitact sounds/items/ragekitact.ogg -powerup/ragekithit sounds/items/ragekithit.ogg -powerup/ragekitend sounds/items/ragekitoff.ogg -powerup/omnisight sounds/items/omnisight.ogg -powerup/embiggener sounds/items/embiggen.ogg -powerup/barrier sounds/items/barrieron.ogg -powerup/barrieract sounds/items/barrieract.ogg -powerup/barrierend sounds/items/barrieroff.ogg -powerup/mykradvo sounds/items/AnomExplode.ogg -$limit powerup/mykradvo 16 -powerup/mykradvoamb sounds/items/AnomHeartBeat.ogg -powerup/devastation sounds/items/devaon.ogg -powerup/devastationamb sounds/items/devaamb.ogg -powerup/devastationact sounds/items/devaact.ogg -powerup/devastationhit sounds/items/devahit.ogg -powerup/devastationend sounds/items/devaoff.ogg -powerup/divineuse sounds/items/divion.ogg -powerup/divineamb sounds/items/diviamb.ogg -powerup/divineact sounds/items/diviact.ogg -powerup/divinehit1 sounds/items/divihit1.ogg -powerup/divinehit2 sounds/items/divihit2.ogg -powerup/divinehit3 sounds/items/divihit3.ogg -powerup/divinehit4 sounds/items/divihit4.ogg -powerup/divinehit5 sounds/items/divihit5.ogg -powerup/divinehit6 sounds/items/divihit6.ogg -powerup/divinehit7 sounds/items/divihit7.ogg -powerup/divinehit8 sounds/items/divihit8.ogg -$random powerup/divinehit { powerup/divinehit1 powerup/divinehit2 powerup/divinehit3 powerup/divinehit4 powerup/divinehit5 powerup/divinehit6 powerup/divinehit7 powerup/divinehit8 } -$limit powerup/divinehit 16 -powerup/divineend sounds/items/diviend.ogg -powerup/tetheruse sounds/items/tetheruse.ogg -powerup/tetherfail sounds/items/tetherfail.ogg -powerup/tethererror sounds/items/tethererror.ogg - -mykradvo/arc1 sounds/items/mykrarc1.ogg -mykradvo/arc2 sounds/items/mykrarc2.ogg -mykradvo/arc3 sounds/items/mykrarc3.ogg -mykradvo/arc4 sounds/items/mykrarc4.ogg -mykradvo/arc5 sounds/items/mykrarc5.ogg -mykradvo/arc6 sounds/items/mykrarc6.ogg -mykradvo/arc7 sounds/items/mykrarc7.ogg -mykradvo/arc8 sounds/items/mykrarc8.ogg -mykradvo/arc9 sounds/items/mykrarc9.ogg -mykradvo/smallarc1 sounds/items/mykrarcs1.ogg -mykradvo/smallarc2 sounds/items/mykrarcs2.ogg -mykradvo/smallarc3 sounds/items/mykrarcs3.ogg -mykradvo/smallarc4 sounds/items/mykrarcs4.ogg -mykradvo/smallarc5 sounds/items/mykrarcs5.ogg -mykradvo/smallarc6 sounds/items/mykrarcs6.ogg -mykradvo/smallarc7 sounds/items/mykrarcs7.ogg -mykradvo/smallarc8 sounds/items/mykrarcs8.ogg -mykradvo/smallarc9 sounds/items/mykrarcs9.ogg -$random mykradvo/arc { mykradvo/arc1 mykradvo/arc2 mykradvo/arc3 mykradvo/arc4 mykradvo/arc5 mykradvo/arc6 mykradvo/arc7 mykradvo/arc8 mykradvo/arc9 } -$random mykradvo/smallarc { mykradvo/smallarc1 mykradvo/smallarc2 mykradvo/smallarc3 mykradvo/smallarc4 mykradvo/smallarc5 mykradvo/smallarc6 mykradvo/smallarc7 mykradvo/smallarc8 mykradvo/smallarc9 } -$limit mykradvo/arc 32 -$limit mykradvo/smallarc 16 - -lamp/on sounds/items/lampon.ogg -lamp/off sounds/items/lampoff.ogg -lamp/appear sounds/items/lampappear.ogg -lamp/disappear sounds/items/lampdisappear.ogg -moth/scrape1 sounds/items/mothatk1.ogg -moth/scrape2 sounds/items/mothatk2.ogg -moth/scrape3 sounds/items/mothatk3.ogg -moth/scrape4 sounds/items/mothatk4.ogg -$random moth/scrape { moth/scrape1 moth/scrape2 moth/scrape3 moth/scrape4 } -$limit moth/scrape 32 -moth/die1 sounds/items/mothdie1.ogg -moth/die2 sounds/items/mothdie2.ogg -$random moth/die { moth/die1 moth/die2 } -moth/fly sounds/items/mothfly.ogg -$limit moth/fly 32 -// white lady (not actually mashiro) -mashiro/appear sounds/mashiro/moth_appear.ogg -mashiro/giggle1 sounds/mashiro/moth_giggle1.ogg -mashiro/giggle2 sounds/mashiro/moth_giggle2.ogg -mashiro/giggle3 sounds/mashiro/moth_giggle3.ogg -mashiro/giggle4 sounds/mashiro/moth_giggle4.ogg -mashiro/giggle5 sounds/mashiro/moth_giggle5.ogg -mashiro/giggle6 sounds/mashiro/moth_giggle6.ogg -$random mashiro/giggle { mashiro/giggle1 mashiro/giggle2 mashiro/giggle3 mashiro/giggle4 mashiro/giggle5 mashiro/giggle6 } -mashiro/see1 sounds/mashiro/moth_anger1.ogg -mashiro/see2 sounds/mashiro/moth_anger2.ogg -$random mashiro/see { mashiro/see1 mashiro/see2 } -mashiro/attack1 sounds/mashiro/moth_attack1.ogg -mashiro/attack2 sounds/mashiro/moth_attack2.ogg -$random mashiro/attack { mashiro/attack1 mashiro/attack2 } -mashiro/hit1 sounds/mashiro/moth_hit1.ogg -mashiro/hit2 sounds/mashiro/moth_hit2.ogg -$random mashiro/hit { mashiro/hit1 mashiro/hit2 } -mashiro/flesh1 sounds/mashiro/moth_hitf1.ogg -mashiro/flesh2 sounds/mashiro/moth_hitf2.ogg -mashiro/flesh3 sounds/mashiro/moth_hitf3.ogg -$random mashiro/flesh { mashiro/hitf1 mashiro/hitf2 mashiro/hitf3 } -mashiro/active1 sounds/mashiro/moth_postatk1.ogg -mashiro/active2 sounds/mashiro/moth_postatk2.ogg -mashiro/active3 sounds/mashiro/moth_postatk3.ogg -mashiro/active4 sounds/mashiro/moth_postatk4.ogg -$random mashiro/active { mashiro/active1 mashiro/active2 mashiro/active3 mashiro/active4 } -mashiro/die sounds/mashiro/moth_defeat.ogg -fabricator/use sounds/items/makeammo.ogg - -chancebox/explode1 sounds/items/lootexpl1.ogg -chancebox/explode2 sounds/items/lootexpl2.ogg -chancebox/explode3 sounds/items/lootexpl3.ogg -$random chancebox/explode { chancebox/explode1 chancebox/explode2 chancebox/explode3 } - -newkeen/hit sounds/keenhit.ogg -newkeen/die sounds/keendie.ogg -newkeen/fall sounds/keenfall.ogg -newkeen/bounce sounds/keenbounce.ogg - -menu/activate sounds/hmenu/hmenu1.ogg -menu/backup sounds/hmenu/hmenu2.ogg -menu/prompt sounds/hmenu/hmenu1.ogg -menu/cursor sounds/hmenu/hmenu4.ogg -menu/change sounds/hmenu/hmenu3.ogg -menu/invalid sounds/hmenu/hmenu3.ogg -menu/dismiss sounds/hmenu/hmenu2.ogg -menu/choose sounds/hmenu/hmenu2.ogg -menu/clear sounds/hmenu/hmenu2.ogg -menu/advance sounds/hmenu/hmenu1.ogg - -menu/demoopen sounds/menu/openkbase.ogg -menu/demotab sounds/menu/menutab.ogg -menu/demosel sounds/menu/menuset.ogg -menu/demoscroll sounds/menu/menuscroll.ogg -$volume menu/demoscroll 0.3 -menu/democlose sounds/menu/menuclose.ogg - -menu/fail sounds/menu/failuse.ogg -menu/noinvuse sounds/menu/failinv.ogg -menu/buyinv sounds/menu/buysnd.ogg - -$alias misc/invchange menu/demosel -UseArtifact DSEMPTY -StartupTick DSEMPTY - -world/watersplash sounds/terrain/DSSPLASH.ogg -world/watersplash2 sounds/terrain/DSSPLSML.ogg -world/lavasizzle sounds/terrain/DSLVSIZ.ogg -world/lavasizzle2 sounds/terrain/DSLVSIZ2.ogg -world/sludgegloop sounds/terrain/DSPLOOSH.ogg -world/sludgegloop2 sounds/terrain/DSPLOSML.ogg -$limit world/watersplash 8 -$limit world/watersplash2 8 -$limit world/lavasizzle 8 -$limit world/lavasizzle2 8 -$limit world/sludgegloop 8 -$limit world/sludgegloop2 8 - -// doom vacation stuff -DSSING sounds/BRUH.ogg -DSMOAN DSEMPTY -DSVXsex1 DSEMPTY -DSVXsex2 DSEMPTY -DSVXsex3 DSEMPTY -DSVXsex4 DSEMPTY -misc/boinkend sounds/BOINK1.ogg -misc/boink1 sounds/BOINK2.ogg -misc/boink2 sounds/BOINK3.ogg -$random misc/boink { misc/boink1 misc/boink2 } - -// wolf3d thingies -wolf3d/dogbite sounds/wolfstuff/wolf3d_dogbite.ogg -wolf3d/dogdie sounds/wolfstuff/wolf3d_dogdie.ogg -wolf3d/dogsight sounds/wolfstuff/wolf3d_dogsight.ogg -wolf3d/doorclose sounds/wolfstuff/wolf3d_doorclose.ogg -wolf3d/dooropen sounds/wolfstuff/wolf3d_dooropen.ogg -wolf3d/guarddie1 sounds/wolfstuff/wolf3d_guarddie1.ogg -wolf3d/guarddie2 sounds/wolfstuff/wolf3d_guarddie2.ogg -wolf3d/guarddie4 sounds/wolfstuff/wolf3d_guarddie4.ogg -wolf3d/guarddie5 sounds/wolfstuff/wolf3d_guarddie5.ogg -wolf3d/guarddie6 sounds/wolfstuff/wolf3d_guarddie6.ogg -wolf3d/guarddie7 sounds/wolfstuff/wolf3d_guarddie7.ogg -wolf3d/guarddie8 sounds/wolfstuff/wolf3d_guarddie8.ogg -$random wolf3d/guarddie { wolf3d/guarddie1 wolf3d/guarddie2 wolf3d/guarddie2 wolf3d/guarddie4 wolf3d/guarddie5 wolf3d/guarddie6 wolf3d/guarddie7 wolf3d/guarddie8 } -wolf3d/guardfire sounds/wolfstuff/wolf3d_guardfire.ogg -wolf3d/guardsight sounds/wolfstuff/wolf3d_guardsight.ogg -wolf3d/hansdie sounds/wolfstuff/wolf3d_hansdie.ogg -wolf3d/hansfire sounds/wolfstuff/wolf3d_hansfire.ogg -wolf3d/hanssight sounds/wolfstuff/wolf3d_hanssight.ogg -wolf3d/pushwall sounds/wolfstuff/wolf3d_pushwall.ogg -wolf3d/ssdie sounds/wolfstuff/wolf3d_ssdie.ogg -wolf3d/ssfire sounds/wolfstuff/wolf3d_ssfire.ogg -wolf3d/sssight sounds/wolfstuff/wolf3d_sssight.ogg diff --git a/sndinfo.weapons b/sndinfo.weapons new file mode 100644 index 000000000..c5dc24ea5 --- /dev/null +++ b/sndinfo.weapons @@ -0,0 +1,353 @@ +$pitchshiftrange 0 + +deepimpact/fire = "sounds/deepimpact/impfire.ogg" +deepimpact/charge = "sounds/deepimpact/impaltcharge.ogg" +deepimpact/altfire = "sounds/deepimpact/impaltfire.ogg" +deepimpact/dryfire = "sounds/deepimpact/impdryfire.ogg" +deepimpact/dryaltfire = "sounds/deepimpact/impdryaltfire.ogg" +deepimpact/select = "sounds/deepimpact/impsel.ogg" +deepimpact/checkout = "sounds/deepimpact/impidle.ogg" +deepimpact/deselect = "sounds/deepimpact/impdown.ogg" +deepimpact/bullet = "sounds/deepimpact/impbulletfly.ogg" +deepimpact/bullethit1 = "sounds/deepimpact/impexplo1.ogg" +deepimpact/bullethit2 = "sounds/deepimpact/impexplo2.ogg" +deepimpact/reloadbeg = "sounds/deepimpact/impreloadstart.ogg" +deepimpact/reloadend = "sounds/deepimpact/impreloadend.ogg" +deepimpact/reload = "sounds/deepimpact/impcrank.ogg" +deepimpact/noreload = "sounds/deepimpact/impcrankhalt.ogg" +$random deepimpact/bullethit { deepimpact/bullethit1 deepimpact/bullethit2 } + +explodium/casing1 = "sounds/explodiumgun/expl_case1.ogg" +explodium/casing2 = "sounds/explodiumgun/expl_case2.ogg" +explodium/casing3 = "sounds/explodiumgun/expl_case3.ogg" +explodium/casing4 = "sounds/explodiumgun/expl_case4.ogg" +$random explodium/casing { explodium/casing1 explodium/casing2 explodium/casing3 explodium/casing4 } +explodium/checkout = "sounds/explodiumgun/expl_checkout.ogg" +explodium/fire1 = "sounds/explodiumgun/expl_fire1.ogg" +explodium/fire2 = "sounds/explodiumgun/expl_fire2.ogg" +explodium/fire3 = "sounds/explodiumgun/expl_fire3.ogg" +$random explodium/fire { explodium/fire1 explodium/fire2 explodium/fire3 } +explodium/hit1 = "sounds/explodiumgun/expl_hit1.ogg" +explodium/hit2 = "sounds/explodiumgun/expl_hit2.ogg" +explodium/hit3 = "sounds/explodiumgun/expl_hit3.ogg" +$random explodium/hit { explodium/hit1 explodium/hit2 explodium/hit3 } +explodium/jamitin = "sounds/explodiumgun/expl_jamitin.ogg" +explodium/mag1 = "sounds/explodiumgun/expl_mag1.ogg" +explodium/mag2 = "sounds/explodiumgun/expl_mag2.ogg" +explodium/mag3 = "sounds/explodiumgun/expl_mag3.ogg" +$random explodium/mag { explodium/mag1 explodium/mag2 explodium/mag3 } +explodium/maghit1 = "sounds/explodiumgun/expl_maghit1.ogg" +explodium/maghit2 = "sounds/explodiumgun/expl_maghit2.ogg" +$random explodium/maghit { explodium/maghit1 explodium/maghit2 } +explodium/magget = "sounds/explodiumgun/expl_magget.ogg" +explodium/magin = "sounds/explodiumgun/expl_magin.ogg" +explodium/magout = "sounds/explodiumgun/expl_magout.ogg" +explodium/magpin = "sounds/explodiumgun/expl_magpin.ogg" +explodium/select = "sounds/explodiumgun/expl_select.ogg" +explodium/deselect = "sounds/explodiumgun/expl_deselect.ogg" +explodium/slideback = "sounds/explodiumgun/expl_slideback.ogg" +explodium/slideforward = "sounds/explodiumgun/expl_slideforward.ogg" +explodium/slidelock = "sounds/explodiumgun/expl_slidelock.ogg" +explodium/speen = "sounds/explodiumgun/expl_speen.ogg" +explodium/throwmag = "sounds/explodiumgun/expl_throwmag.ogg" +$limit explodium/hit 32 +$limit explodium/maghit 32 + +spreadgun/open = "sounds/spreadgun/spread_open.ogg" +spreadgun/hammer = "sounds/spreadgun/spread_hammer.ogg" +spreadgun/close = "sounds/spreadgun/spread_close.ogg" +spreadgun/shellin = "sounds/spreadgun/spread_load.ogg" +spreadgun/select = "sounds/spreadgun/spread_select.ogg" +spreadgun/deselect = "sounds/spreadgun/spread_deselect.ogg" +spreadgun/redfire1 = "sounds/spreadgun/spread_redfire1.ogg" +spreadgun/redfire2 = "sounds/spreadgun/spread_redfire2.ogg" +$random spreadgun/redfire { spreadgun/redfire1 spreadgun/redfire2 } +$limit spreadgun/redfire 16 +spreadgun/goldfire1 = "sounds/spreadgun/spread_goldfire1.ogg" +spreadgun/goldfire2 = "sounds/spreadgun/spread_goldfire2.ogg" +$random spreadgun/goldfire { spreadgun/goldfire1 spreadgun/goldfire2 } +spreadgun/checkgun = "sounds/spreadgun/spread_idle.ogg" +spreadgun/casing1 = "sounds/spreadgun/spread_casing1.ogg" +spreadgun/casing2 = "sounds/spreadgun/spread_casing2.ogg" +spreadgun/casing3 = "sounds/spreadgun/spread_casing3.ogg" +spreadgun/casing4 = "sounds/spreadgun/spread_casing4.ogg" +spreadgun/casing5 = "sounds/spreadgun/spread_casing5.ogg" +spreadgun/casing6 = "sounds/spreadgun/spread_casing6.ogg" +$random spreadgun/casing { spreadgun/casing1 spreadgun/casing2 spreadgun/casing3 spreadgun/casing4 spreadgun/casing5 spreadgun/casing6 } +spreadgun/gcasing1 = "sounds/spreadgun/spread_gcasing1.ogg" +spreadgun/gcasing2 = "sounds/spreadgun/spread_gcasing2.ogg" +spreadgun/gcasing3 = "sounds/spreadgun/spread_gcasing3.ogg" +$random spreadgun/gcasing { spreadgun/gcasing1 spreadgun/gcasing2 spreadgun/gcasing3 } +spreadgun/pellet1 = "sounds/spreadgun/spread_pellet1.ogg" +spreadgun/pellet2 = "sounds/spreadgun/spread_pellet2.ogg" +spreadgun/pellet3 = "sounds/spreadgun/spread_pellet3.ogg" +spreadgun/pellet4 = "sounds/spreadgun/spread_pellet4.ogg" +spreadgun/pellet5 = "sounds/spreadgun/spread_pellet5.ogg" +spreadgun/pellet6 = "sounds/spreadgun/spread_pellet6.ogg" +spreadgun/pellet7 = "sounds/spreadgun/spread_pellet7.ogg" +spreadgun/pellet8 = "sounds/spreadgun/spread_pellet8.ogg" +$random spreadgun/pellet { spreadgun/pellet1 spreadgun/pellet2 spreadgun/pellet3 spreadgun/pellet4 spreadgun/pellet5 spreadgun/pellet6 spreadgun/pellet7 spreadgun/pellet8 } +$limit spreadgun/pellet 32 +spreadgun/pelletf1 = "sounds/spreadgun/spread_pelletf1.ogg" +spreadgun/pelletf2 = "sounds/spreadgun/spread_pelletf2.ogg" +spreadgun/pelletf3 = "sounds/spreadgun/spread_pelletf3.ogg" +spreadgun/pelletf4 = "sounds/spreadgun/spread_pelletf4.ogg" +spreadgun/pelletf5 = "sounds/spreadgun/spread_pelletf5.ogg" +spreadgun/pelletf6 = "sounds/spreadgun/spread_pelletf6.ogg" +$random spreadgun/pelletf { spreadgun/pelletf1 spreadgun/pelletf2 spreadgun/pelletf3 spreadgun/pelletf4 spreadgun/pelletf5 spreadgun/pelletf6 } +$limit spreadgun/pelletf 32 +spreadgun/goldexpl1 = "sounds/spreadgun/spread_goldexp1.ogg" +spreadgun/goldexpl2 = "sounds/spreadgun/spread_goldexp2.ogg" +$random spreadgun/goldexpl { spreadgun/goldexpl1 spreadgun/goldexpl2 } + +wallbuster/select = "sounds/wallbuster/cbt_select.ogg" +wallbuster/deselect = "sounds/wallbuster/cbt_deselect.ogg" +wallbuster/dryfire = "sounds/wallbuster/cbt_dryfire.ogg" +wallbuster/spin = "sounds/wallbuster/cbt_spinone.ogg" +wallbuster/spinbig = "sounds/wallbuster/cbt_spinbig.ogg" +wallbuster/unlock = "sounds/wallbuster/cbt_leverpull.ogg" +wallbuster/lock = "sounds/wallbuster/cbt_leverpush.ogg" +wallbuster/meleestart = "sounds/wallbuster/cbt_lower.ogg" +wallbuster/meleeend = "sounds/wallbuster/cbt_raise.ogg" +wallbuster/detach = "sounds/wallbuster/cbt_unload.ogg" +wallbuster/attach = "sounds/wallbuster/cbt_load.ogg" +wallbuster/handspin = "sounds/wallbuster/cbt_handspin.ogg" +wallbuster/load1 = "sounds/wallbuster/cbt_shellin1.ogg" +wallbuster/load2 = "sounds/wallbuster/cbt_shellin2.ogg" +wallbuster/load3 = "sounds/wallbuster/cbt_shellin3.ogg" +wallbuster/load4 = "sounds/wallbuster/cbt_shellin4.ogg" +$random wallbuster/load { wallbuster/load1 wallbuster/load2 wallbuster/load3 wallbuster/load4 } +wallbuster/smallbust1 = "sounds/wallbuster/cbt_smallbust1.ogg" +wallbuster/smallbust2 = "sounds/wallbuster/cbt_smallbust2.ogg" +wallbuster/smallbust3 = "sounds/wallbuster/cbt_smallbust3.ogg" +$random wallbuster/smallbust { wallbuster/smallbust1 wallbuster/smallbust2 wallbuster/smallbust3 } +$limit wallbuster/smallbust 16 +wallbuster/bigbust1 = "sounds/wallbuster/cbt_bigbust1.ogg" +wallbuster/bigbust2 = "sounds/wallbuster/cbt_bigbust2.ogg" +wallbuster/bigbust3 = "sounds/wallbuster/cbt_bigbust3.ogg" +$random wallbuster/bigbust { wallbuster/bigbust1 wallbuster/bigbust2 wallbuster/bigbust3 } +$limit wallbuster/bigbust 8 + +eviscerator/select = "sounds/eviscerator/visc_select.ogg" +eviscerator/deselect = "sounds/eviscerator/visc_deselect.ogg" +eviscerator/load = "sounds/eviscerator/visc_cycle.ogg" +eviscerator/fire1 = "sounds/eviscerator/visc_fire1.ogg" +eviscerator/fire2 = "sounds/eviscerator/visc_fire2.ogg" +$random eviscerator/fire { eviscerator/fire1 eviscerator/fire2 } +eviscerator/altfire1 = "sounds/eviscerator/visc_altfire1.ogg" +eviscerator/altfire2 = "sounds/eviscerator/visc_altfire2.ogg" +$random eviscerator/altfire { eviscerator/altfire1 eviscerator/altfire2 } +eviscerator/eject = "sounds/eviscerator/visc_eject.ogg" +eviscerator/ejectend = "sounds/eviscerator/visc_ejectend.ogg" +eviscerator/switch = "sounds/eviscerator/visc_switch.ogg" +eviscerator/checkgun = "sounds/eviscerator/visc_idle.ogg" +eviscerator/meleestart = "sounds/eviscerator/visc_meleestart.ogg" +eviscerator/meleeend = "sounds/eviscerator/visc_meleeend.ogg" +eviscerator/hit1 = "sounds/eviscerator/visc_hit1.ogg" +eviscerator/hit2 = "sounds/eviscerator/visc_hit2.ogg" +eviscerator/hit3 = "sounds/eviscerator/visc_hit3.ogg" +eviscerator/hit4 = "sounds/eviscerator/visc_hit4.ogg" +eviscerator/hit5 = "sounds/eviscerator/visc_hit5.ogg" +eviscerator/hit6 = "sounds/eviscerator/visc_hit6.ogg" +$random eviscerator/hit { eviscerator/hit1 eviscerator/hit2 eviscerator/hit3 eviscerator/hit4 eviscerator/hit5 eviscerator/hit6 } +$limit eviscerator/hit 32 +eviscerator/hith1 = "sounds/eviscerator/visc_hith1.ogg" +eviscerator/hith2 = "sounds/eviscerator/visc_hith2.ogg" +eviscerator/hith3 = "sounds/eviscerator/visc_hith3.ogg" +eviscerator/hith4 = "sounds/eviscerator/visc_hith4.ogg" +eviscerator/hith5 = "sounds/eviscerator/visc_hith5.ogg" +eviscerator/hith6 = "sounds/eviscerator/visc_hith6.ogg" +eviscerator/hith7 = "sounds/eviscerator/visc_hith7.ogg" +eviscerator/hith8 = "sounds/eviscerator/visc_hith8.ogg" +$random eviscerator/hith { eviscerator/hith1 eviscerator/hith2 eviscerator/hith3 eviscerator/hith4 eviscerator/hith5 eviscerator/hith6 eviscerator/hith7 eviscerator/hith8 } +$limit eviscerator/hith 32 +eviscerator/hitf1 = "sounds/eviscerator/visc_hitf1.ogg" +eviscerator/hitf2 = "sounds/eviscerator/visc_hitf2.ogg" +eviscerator/hitf3 = "sounds/eviscerator/visc_hitf3.ogg" +$random eviscerator/hitf { eviscerator/hitf1 eviscerator/hitf2 eviscerator/hitf3 } +$limit eviscerator/hitf 32 +eviscerator/shell1 = "sounds/eviscerator/visc_shell1.ogg" +eviscerator/shell2 = "sounds/eviscerator/visc_shell2.ogg" +$random eviscerator/shell { eviscerator/shell1 eviscerator/shell2 } +eviscerator/casing = "sounds/eviscerator/visc_casing.ogg" + +hellblazer/select = "sounds/hellblazer/blaze_select.ogg" +hellblazer/deselect = "sounds/hellblazer/blaze_deselect.ogg" +hellblazer/fire = "sounds/hellblazer/blaze_fire.ogg" +hellblazer/altfire = "sounds/hellblazer/blaze_altfire.ogg" +hellblazer/meleestart = "sounds/hellblazer/blaze_meleestart.ogg" +hellblazer/meleeend = "sounds/hellblazer/blaze_meleeend.ogg" +hellblazer/idle = "sounds/hellblazer/blaze_idle.ogg" +hellblazer/dustoff = "sounds/hellblazer/blaze_dustoff.ogg" +hellblazer/shift = "sounds/hellblazer/blaze_shift.ogg" +hellblazer/spin = "sounds/hellblazer/blaze_spin.ogg" +hellblazer/open = "sounds/hellblazer/blaze_open.ogg" +hellblazer/magout = "sounds/hellblazer/blaze_magout.ogg" +hellblazer/magin = "sounds/hellblazer/blaze_magin.ogg" +hellblazer/close = "sounds/hellblazer/blaze_close.ogg" +hellblazer/hit1 = "sounds/hellblazer/blaze_hit1.ogg" +hellblazer/hit2 = "sounds/hellblazer/blaze_hit2.ogg" +hellblazer/hit3 = "sounds/hellblazer/blaze_hit3.ogg" +$random hellblazer/hit { hellblazer/hit1 hellblazer/hit2 hellblazer/hit3 } +$limit hellblazer/hit 16 +hellblazer/bounce = "sounds/hellblazer/blaze_bounce.ogg" +hellblazer/fly = "sounds/hellblazer/blaze_fly.ogg" +hellblazer/preload = "sounds/hellblazer/blaze_preload.ogg" +hellblazer/hold = "sounds/hellblazer/blaze_hold.ogg" +hellblazer/lock = "sounds/hellblazer/blaze_lock.ogg" +hellblazer/clear = "sounds/hellblazer/blaze_clear.ogg" + +biospark/select = "sounds/sparkster/spark_select.ogg" +biospark/deselect = "sounds/sparkster/spark_deselect.ogg" +biospark/fire1 = "sounds/sparkster/spark_fire1.ogg" +biospark/fire2 = "sounds/sparkster/spark_fire2.ogg" +biospark/fire3 = "sounds/sparkster/spark_fire3.ogg" +$random biospark/fire { biospark/fire1 biospark/fire2 biospark/fire3 } +biospark/altfire1 = "sounds/sparkster/spark_altfire1.ogg" +biospark/altfire2 = "sounds/sparkster/spark_altfire2.ogg" +biospark/altfire3 = "sounds/sparkster/spark_altfire3.ogg" +$random biospark/altfire { biospark/altfire1 biospark/altfire2 biospark/altfire3 } +biospark/thirdfire = "sounds/sparkster/spark_third.ogg" +biospark/meleestart = "sounds/sparkster/spark_meleestart.ogg" +biospark/meleeend = "sounds/sparkster/spark_meleeend.ogg" +biospark/idle = "sounds/sparkster/spark_idle.ogg" +biospark/idle2 = "sounds/sparkster/spark_idle2.ogg" +biospark/magout = "sounds/sparkster/spark_magout.ogg" +biospark/magin = "sounds/sparkster/spark_magin.ogg" +biospark/spark = "sounds/sparkster/spark_spark.ogg" +biospark/hit1 = "sounds/sparkster/spark_hit1.ogg" +biospark/hit2 = "sounds/sparkster/spark_hit2.ogg" +biospark/hit3 = "sounds/sparkster/spark_hit3.ogg" +$random biospark/hit { biospark/hit1 biospark/hit2 biospark/hit3 } +$limit biospark/hit 32 +biospark/beamhit1 = "sounds/sparkster/spark_beamhit1.ogg" +biospark/beamhit2 = "sounds/sparkster/spark_beamhit2.ogg" +$random biospark/beamhit { biospark/beamhit1 biospark/beamhit2 } +$limit biospark/beamhit 32 +biospark/deploy1 = "sounds/sparkster/spark_deploy1.ogg" +biospark/deploy2 = "sounds/sparkster/spark_deploy2.ogg" +biospark/deploy3 = "sounds/sparkster/spark_deploy3.ogg" +$random biospark/deploy { biospark/deploy1 biospark/deploy2 biospark/deploy3 } +$limit biospark/deploy 32 +biospark/bighit1 = "sounds/sparkster/spark_bigexpl1.ogg" +biospark/bighit2 = "sounds/sparkster/spark_bigexpl2.ogg" +$random biospark/bighit { biospark/bighit1 biospark/bighit2 } +$limit biospark/bighit 32 +biospark/bigspark = "sounds/sparkster/spark_bigspark.ogg" +biospark/arc1 = "sounds/sparkster/spark_arc1.ogg" +biospark/arc2 = "sounds/sparkster/spark_arc2.ogg" +biospark/arc3 = "sounds/sparkster/spark_arc3.ogg" +biospark/arc4 = "sounds/sparkster/spark_arc4.ogg" +$random biospark/arc { biospark/arc1 biospark/arc2 biospark/arc3 biospark/arc4 } +$limit biospark/arc 64 +biospark/bigarc1 = "sounds/sparkster/spark_arcb1.ogg" +biospark/bigarc2 = "sounds/sparkster/spark_arcb2.ogg" +biospark/bigarc3 = "sounds/sparkster/spark_arcb3.ogg" +biospark/bigarc4 = "sounds/sparkster/spark_arcb4.ogg" +$random biospark/bigarc { biospark/bigarc1 biospark/bigarc2 biospark/bigarc3 biospark/bigarc4 } +$limit biospark/bigarc 64 +biospark/hugearc1 = "sounds/sparkster/spark_arch1.ogg" +biospark/hugearc2 = "sounds/sparkster/spark_arch2.ogg" +biospark/hugearc3 = "sounds/sparkster/spark_arch3.ogg" +$random biospark/hugearc { biospark/hugearc1 biospark/hugearc2 biospark/hugearc3 } +$limit biospark/hugearc 64 +biospark/zap1 = "sounds/sparkster/spark_zap1.ogg" +biospark/zap2 = "sounds/sparkster/spark_zap2.ogg" +biospark/zap3 = "sounds/sparkster/spark_zap3.ogg" +biospark/zap4 = "sounds/sparkster/spark_zap4.ogg" +biospark/zap5 = "sounds/sparkster/spark_zap5.ogg" +biospark/zap6 = "sounds/sparkster/spark_zap6.ogg" +$random biospark/zap { biospark/zap1 biospark/zap2 biospark/zap3 biospark/zap4 biospark/zap5 biospark/zap6 } +$limit biospark/zap 64 +biospark/prefire = "sounds/sparkster/spark_prefire.ogg" +biospark/prethird = "sounds/sparkster/spark_prethird.ogg" +biospark/hiss = "sounds/sparkster/spark_hiss.ogg" +biospark/fail = "sounds/sparkster/spark_thirdfail.ogg" +biospark/checkout = "sounds/sparkster/spark_checkout.ogg" + +silverbullet/select = "sounds/silverbullet/silver_select.ogg" +silverbullet/deselect = "sounds/silverbullet/silver_deselect.ogg" +silverbullet/meleestart = "sounds/silverbullet/silver_meleestart.ogg" +silverbullet/meleeend = "sounds/silverbullet/silver_meleeend.ogg" +silverbullet/idle = "sounds/silverbullet/silver_idle.ogg" +silverbullet/boltopen = "sounds/silverbullet/silver_boltopen.ogg" +silverbullet/boltclose = "sounds/silverbullet/silver_boltclose.ogg" +silverbullet/magout = "sounds/silverbullet/silver_magout.ogg" +silverbullet/magin = "sounds/silverbullet/silver_magin.ogg" +silverbullet/zoomstart = "sounds/silverbullet/silver_zoomstart.ogg" +silverbullet/zooming = "sounds/silverbullet/silver_zooming.ogg" +silverbullet/zoomend = "sounds/silverbullet/silver_zoomend.ogg" +silverbullet/fire1 = "sounds/silverbullet/silver_fire1.ogg" +silverbullet/fire2 = "sounds/silverbullet/silver_fire2.ogg" +silverbullet/fire3 = "sounds/silverbullet/silver_fire3.ogg" +$random silverbullet/fire { silverbullet/fire1 silverbullet/fire2 silverbullet/fire3 } +silverbullet/jet = "sounds/silverbullet/silver_jet.ogg" +silverbullet/casing1 = "sounds/silverbullet/silver_casing1.ogg" +silverbullet/casing2 = "sounds/silverbullet/silver_casing2.ogg" +silverbullet/casing3 = "sounds/silverbullet/silver_casing3.ogg" +silverbullet/casing4 = "sounds/silverbullet/silver_casing4.ogg" +$random silverbullet/casing { silverbullet/casing1 silverbullet/casing2 silverbullet/casing3 silverbullet/casing4 } +silverbullet/mag1 = "sounds/silverbullet/silver_mag1.ogg" +silverbullet/mag2 = "sounds/silverbullet/silver_mag2.ogg" +silverbullet/mag3 = "sounds/silverbullet/silver_mag3.ogg" +$random silverbullet/mag { silverbullet/mag1 silverbullet/mag2 silverbullet/mag3 } +silverbullet/hit1 = "sounds/silverbullet/silver_hit1.ogg" +silverbullet/hit2 = "sounds/silverbullet/silver_hit2.ogg" +$random silverbullet/hit { silverbullet/hit1 silverbullet/hit2 } +silverbullet/flesh1 = "sounds/silverbullet/silver_hitf1.ogg" +silverbullet/flesh2 = "sounds/silverbullet/silver_hitf2.ogg" +$random silverbullet/flesh { silverbullet/flesh1 silverbullet/flesh2 } +silverbullet/crouch = "sounds/silverbullet/silver_crouch.ogg" +silverbullet/uncrouch = "sounds/silverbullet/silver_uncrouch.ogg" + +candygun/fire1 = "sounds/candygun/candy_fire1.ogg" +candygun/fire2 = "sounds/candygun/candy_fire2.ogg" +candygun/fire3 = "sounds/candygun/candy_fire3.ogg" +$random candygun/fire { candygun/fire1 candygun/fire2 candygun/fire3 } +candygun/hit1 = "sounds/candygun/candy_hit1.ogg" +candygun/hit2 = "sounds/candygun/candy_hit2.ogg" +candygun/hit3 = "sounds/candygun/candy_hit3.ogg" +$random candygun/hit { candygun/hit1 candygun/hit2 candygun/hit3 } +candygun/maghit1 = "sounds/candygun/candy_maghit1.ogg" +candygun/maghit2 = "sounds/candygun/candy_maghit2.ogg" +$random candygun/maghit { candygun/maghit1 candygun/maghit2 } +candygun/gunhit1 = "sounds/candygun/candy_gunhit1.ogg" +candygun/gunhit2 = "sounds/candygun/candy_gunhit2.ogg" +$random candygun/gunhit { candygun/gunhit1 candygun/gunhit2 } +$limit candygun/hit 32 +$limit candygun/maghit 32 +$limit candygun/gunhit 32 + +ynykron/select = "sounds/ynykron/mc_select.ogg" +ynykron/deselect = "sounds/ynykron/mc_deselect.ogg" +ynykron/idle = "sounds/ynykron/mc_idle.ogg" +ynykron/ready = "sounds/ynykron/mc_ready.ogg" +ynykron/latch = "sounds/ynykron/mc_latch.ogg" +ynykron/ventopen = "sounds/ynykron/mc_ventopen.ogg" +ynykron/ventclose = "sounds/ynykron/mc_ventclose.ogg" +ynykron/puff = "sounds/ynykron/mc_puff.ogg" +ynykron/puffing = "sounds/ynykron/mc_puffing.ogg" +ynykron/puffend = "sounds/ynykron/mc_puffend.ogg" +ynykron/meleestart = "sounds/ynykron/mc_meleestart.ogg" +ynykron/meleeend = "sounds/ynykron/mc_meleeend.ogg" +ynykron/checkout = "sounds/ynykron/mc_checkout.ogg" +ynykron/fire = "sounds/ynykron/mc_fire.ogg" +ynykron/altfire = "sounds/ynykron/mc_altfire.ogg" +ynykron/magout = "sounds/ynykron/mc_magout.ogg" +ynykron/magin = "sounds/ynykron/mc_magin.ogg" +ynykron/beam = "sounds/ynykron/mc_beam.ogg" +ynykron/hit1 = "sounds/ynykron/mc_hit1.ogg" +ynykron/hit2 = "sounds/ynykron/mc_hit2.ogg" +ynykron/hit3 = "sounds/ynykron/mc_hit3.ogg" +$random ynykron/hit { ynykron/hit1 ynykron/hit2 ynykron/hit3 } +ynykron/altbeam = "sounds/ynykron/mc_altbeam.ogg" +ynykron/vortex = "sounds/ynykron/mc_vortex.ogg" +ynykron/vortexarc1 = "sounds/ynykron/mc_vortexarc1.ogg" +ynykron/vortexarc2 = "sounds/ynykron/mc_vortexarc2.ogg" +ynykron/vortexarc3 = "sounds/ynykron/mc_vortexarc3.ogg" +$random ynykron/vortexarc { ynykron/vortexarc1 ynykron/vortexarc2 ynykron/vortexarc3 } +ynykron/vortexflash1 = "sounds/ynykron/mc_vortexflash1.ogg" +ynykron/vortexflash2 = "sounds/ynykron/mc_vortexflash2.ogg" +$random ynykron/vortexflash { ynykron/vortexflash1 ynykron/vortexflash2 } +ynykron/vortexend = "sounds/ynykron/mc_vortexend.ogg" +ynykron/wind = "sounds/ynykron/mc_vortexwind.ogg" diff --git a/sounds/BOINK1.ogg b/sounds/BOINK1.ogg old mode 100755 new mode 100644 diff --git a/sounds/BOINK2.ogg b/sounds/BOINK2.ogg old mode 100755 new mode 100644 diff --git a/sounds/BOINK3.ogg b/sounds/BOINK3.ogg old mode 100755 new mode 100644 diff --git a/sounds/CHATBEEP.ogg b/sounds/CHATBEEP.ogg new file mode 100644 index 000000000..183c4052c Binary files /dev/null and b/sounds/CHATBEEP.ogg differ diff --git a/sounds/CTF5.ogg b/sounds/CTF5.ogg new file mode 100644 index 000000000..18b118b4b Binary files /dev/null and b/sounds/CTF5.ogg differ diff --git a/sounds/EASYMODO.ogg b/sounds/EASYMODO.ogg deleted file mode 100644 index dac9c4f3e..000000000 Binary files a/sounds/EASYMODO.ogg and /dev/null differ diff --git a/sounds/GURA.ogg b/sounds/GURA.ogg new file mode 100644 index 000000000..4bc96495e Binary files /dev/null and b/sounds/GURA.ogg differ diff --git a/sounds/INVSEL.ogg b/sounds/INVSEL.ogg new file mode 100644 index 000000000..d69e0e72d Binary files /dev/null and b/sounds/INVSEL.ogg differ diff --git a/sounds/INVUSE.ogg b/sounds/INVUSE.ogg new file mode 100644 index 000000000..36ee4af6f Binary files /dev/null and b/sounds/INVUSE.ogg differ diff --git a/sounds/LOCKDOOR.ogg b/sounds/LOCKDOOR.ogg new file mode 100644 index 000000000..5213bf2e0 Binary files /dev/null and b/sounds/LOCKDOOR.ogg differ diff --git a/sounds/SNORE.ogg b/sounds/SNORE.ogg new file mode 100644 index 000000000..bba5ea606 Binary files /dev/null and b/sounds/SNORE.ogg differ diff --git a/sounds/SUNDOWNER.ogg b/sounds/SUNDOWNER.ogg deleted file mode 100644 index c3887bd7e..000000000 Binary files a/sounds/SUNDOWNER.ogg and /dev/null differ diff --git a/sounds/YIPPEEE.ogg b/sounds/YIPPEEE.ogg new file mode 100644 index 000000000..8c0419541 Binary files /dev/null and b/sounds/YIPPEEE.ogg differ diff --git a/sounds/mashiro/moth_anger1.ogg b/sounds/andira/moth_anger1.ogg similarity index 100% rename from sounds/mashiro/moth_anger1.ogg rename to sounds/andira/moth_anger1.ogg diff --git a/sounds/mashiro/moth_anger2.ogg b/sounds/andira/moth_anger2.ogg similarity index 100% rename from sounds/mashiro/moth_anger2.ogg rename to sounds/andira/moth_anger2.ogg diff --git a/sounds/mashiro/moth_appear.ogg b/sounds/andira/moth_appear.ogg similarity index 100% rename from sounds/mashiro/moth_appear.ogg rename to sounds/andira/moth_appear.ogg diff --git a/sounds/mashiro/moth_attack1.ogg b/sounds/andira/moth_attack1.ogg similarity index 100% rename from sounds/mashiro/moth_attack1.ogg rename to sounds/andira/moth_attack1.ogg diff --git a/sounds/mashiro/moth_attack2.ogg b/sounds/andira/moth_attack2.ogg similarity index 100% rename from sounds/mashiro/moth_attack2.ogg rename to sounds/andira/moth_attack2.ogg diff --git a/sounds/mashiro/moth_defeat.ogg b/sounds/andira/moth_defeat.ogg similarity index 100% rename from sounds/mashiro/moth_defeat.ogg rename to sounds/andira/moth_defeat.ogg diff --git a/sounds/mashiro/moth_giggle1.ogg b/sounds/andira/moth_giggle1.ogg similarity index 100% rename from sounds/mashiro/moth_giggle1.ogg rename to sounds/andira/moth_giggle1.ogg diff --git a/sounds/mashiro/moth_giggle2.ogg b/sounds/andira/moth_giggle2.ogg similarity index 100% rename from sounds/mashiro/moth_giggle2.ogg rename to sounds/andira/moth_giggle2.ogg diff --git a/sounds/mashiro/moth_giggle3.ogg b/sounds/andira/moth_giggle3.ogg similarity index 100% rename from sounds/mashiro/moth_giggle3.ogg rename to sounds/andira/moth_giggle3.ogg diff --git a/sounds/mashiro/moth_giggle4.ogg b/sounds/andira/moth_giggle4.ogg similarity index 100% rename from sounds/mashiro/moth_giggle4.ogg rename to sounds/andira/moth_giggle4.ogg diff --git a/sounds/mashiro/moth_giggle5.ogg b/sounds/andira/moth_giggle5.ogg similarity index 100% rename from sounds/mashiro/moth_giggle5.ogg rename to sounds/andira/moth_giggle5.ogg diff --git a/sounds/mashiro/moth_giggle6.ogg b/sounds/andira/moth_giggle6.ogg similarity index 100% rename from sounds/mashiro/moth_giggle6.ogg rename to sounds/andira/moth_giggle6.ogg diff --git a/sounds/mashiro/moth_hit1.ogg b/sounds/andira/moth_hit1.ogg similarity index 100% rename from sounds/mashiro/moth_hit1.ogg rename to sounds/andira/moth_hit1.ogg diff --git a/sounds/mashiro/moth_hit2.ogg b/sounds/andira/moth_hit2.ogg similarity index 100% rename from sounds/mashiro/moth_hit2.ogg rename to sounds/andira/moth_hit2.ogg diff --git a/sounds/mashiro/moth_hitf1.ogg b/sounds/andira/moth_hitf1.ogg similarity index 100% rename from sounds/mashiro/moth_hitf1.ogg rename to sounds/andira/moth_hitf1.ogg diff --git a/sounds/mashiro/moth_hitf2.ogg b/sounds/andira/moth_hitf2.ogg similarity index 100% rename from sounds/mashiro/moth_hitf2.ogg rename to sounds/andira/moth_hitf2.ogg diff --git a/sounds/mashiro/moth_hitf3.ogg b/sounds/andira/moth_hitf3.ogg similarity index 100% rename from sounds/mashiro/moth_hitf3.ogg rename to sounds/andira/moth_hitf3.ogg diff --git a/sounds/mashiro/moth_postatk1.ogg b/sounds/andira/moth_postatk1.ogg similarity index 100% rename from sounds/mashiro/moth_postatk1.ogg rename to sounds/andira/moth_postatk1.ogg diff --git a/sounds/mashiro/moth_postatk2.ogg b/sounds/andira/moth_postatk2.ogg similarity index 100% rename from sounds/mashiro/moth_postatk2.ogg rename to sounds/andira/moth_postatk2.ogg diff --git a/sounds/mashiro/moth_postatk3.ogg b/sounds/andira/moth_postatk3.ogg similarity index 100% rename from sounds/mashiro/moth_postatk3.ogg rename to sounds/andira/moth_postatk3.ogg diff --git a/sounds/mashiro/moth_postatk4.ogg b/sounds/andira/moth_postatk4.ogg similarity index 100% rename from sounds/mashiro/moth_postatk4.ogg rename to sounds/andira/moth_postatk4.ogg diff --git a/sounds/demolitionist/demoblow.ogg b/sounds/demolitionist/demoblow.ogg deleted file mode 100644 index ef048a5fb..000000000 Binary files a/sounds/demolitionist/demoblow.ogg and /dev/null differ diff --git a/sounds/demolitionist/demodashregen.ogg b/sounds/demolitionist/demodashregen.ogg new file mode 100644 index 000000000..bba442a64 Binary files /dev/null and b/sounds/demolitionist/demodashregen.ogg differ diff --git a/sounds/demolitionist/demofuelregen.ogg b/sounds/demolitionist/demofuelregen.ogg new file mode 100644 index 000000000..54dc459bf Binary files /dev/null and b/sounds/demolitionist/demofuelregen.ogg differ diff --git a/sounds/demolitionist/demofuelregenend.ogg b/sounds/demolitionist/demofuelregenend.ogg new file mode 100644 index 000000000..51a4dfeb7 Binary files /dev/null and b/sounds/demolitionist/demofuelregenend.ogg differ diff --git a/sounds/demolitionist/demofuelregenstep.ogg b/sounds/demolitionist/demofuelregenstep.ogg new file mode 100644 index 000000000..645d0609d Binary files /dev/null and b/sounds/demolitionist/demofuelregenstep.ogg differ diff --git a/sounds/demolitionist/demokiss.ogg b/sounds/demolitionist/demokiss.ogg deleted file mode 100644 index 7763b8ab0..000000000 Binary files a/sounds/demolitionist/demokiss.ogg and /dev/null differ diff --git a/sounds/pusher/push_slam1.ogg b/sounds/demolitionist/demoxpunch1.ogg similarity index 100% rename from sounds/pusher/push_slam1.ogg rename to sounds/demolitionist/demoxpunch1.ogg diff --git a/sounds/pusher/push_slam2.ogg b/sounds/demolitionist/demoxpunch2.ogg similarity index 100% rename from sounds/pusher/push_slam2.ogg rename to sounds/demolitionist/demoxpunch2.ogg diff --git a/sounds/pusher/push_slamf1.ogg b/sounds/demolitionist/demoxpunchf1.ogg similarity index 100% rename from sounds/pusher/push_slamf1.ogg rename to sounds/demolitionist/demoxpunchf1.ogg diff --git a/sounds/pusher/push_slamf2.ogg b/sounds/demolitionist/demoxpunchf2.ogg similarity index 100% rename from sounds/pusher/push_slamf2.ogg rename to sounds/demolitionist/demoxpunchf2.ogg diff --git a/sounds/dlc/blast/blast_altfire1.ogg b/sounds/dlc/blast/blast_altfire1.ogg new file mode 100644 index 000000000..29ce9105b Binary files /dev/null and b/sounds/dlc/blast/blast_altfire1.ogg differ diff --git a/sounds/dlc/blast/blast_altfire2.ogg b/sounds/dlc/blast/blast_altfire2.ogg new file mode 100644 index 000000000..9d3bd7a2d Binary files /dev/null and b/sounds/dlc/blast/blast_altfire2.ogg differ diff --git a/sounds/dlc/blast/blast_althit1.ogg b/sounds/dlc/blast/blast_althit1.ogg new file mode 100644 index 000000000..b56a1b8b0 Binary files /dev/null and b/sounds/dlc/blast/blast_althit1.ogg differ diff --git a/sounds/dlc/blast/blast_althit2.ogg b/sounds/dlc/blast/blast_althit2.ogg new file mode 100644 index 000000000..8c82b5296 Binary files /dev/null and b/sounds/dlc/blast/blast_althit2.ogg differ diff --git a/sounds/dlc/blast/blast_charge.ogg b/sounds/dlc/blast/blast_charge.ogg new file mode 100644 index 000000000..b2a6b19a3 Binary files /dev/null and b/sounds/dlc/blast/blast_charge.ogg differ diff --git a/sounds/dlc/blast/blast_deselect.ogg b/sounds/dlc/blast/blast_deselect.ogg new file mode 100644 index 000000000..8a303d859 Binary files /dev/null and b/sounds/dlc/blast/blast_deselect.ogg differ diff --git a/sounds/dlc/blast/blast_fire1.ogg b/sounds/dlc/blast/blast_fire1.ogg new file mode 100644 index 000000000..072825b9f Binary files /dev/null and b/sounds/dlc/blast/blast_fire1.ogg differ diff --git a/sounds/dlc/blast/blast_fire2.ogg b/sounds/dlc/blast/blast_fire2.ogg new file mode 100644 index 000000000..76f753e45 Binary files /dev/null and b/sounds/dlc/blast/blast_fire2.ogg differ diff --git a/sounds/dlc/blast/blast_hit1.ogg b/sounds/dlc/blast/blast_hit1.ogg new file mode 100644 index 000000000..6ea271d27 Binary files /dev/null and b/sounds/dlc/blast/blast_hit1.ogg differ diff --git a/sounds/dlc/blast/blast_hit2.ogg b/sounds/dlc/blast/blast_hit2.ogg new file mode 100644 index 000000000..a9f2388ae Binary files /dev/null and b/sounds/dlc/blast/blast_hit2.ogg differ diff --git a/sounds/dlc/blast/blast_hit3.ogg b/sounds/dlc/blast/blast_hit3.ogg new file mode 100644 index 000000000..f3b95d154 Binary files /dev/null and b/sounds/dlc/blast/blast_hit3.ogg differ diff --git a/sounds/dlc/blast/blast_hit4.ogg b/sounds/dlc/blast/blast_hit4.ogg new file mode 100644 index 000000000..36dfb75db Binary files /dev/null and b/sounds/dlc/blast/blast_hit4.ogg differ diff --git a/sounds/dlc/blast/blast_idle.ogg b/sounds/dlc/blast/blast_idle.ogg new file mode 100644 index 000000000..bb1a01941 Binary files /dev/null and b/sounds/dlc/blast/blast_idle.ogg differ diff --git a/sounds/dlc/blast/blast_magin.ogg b/sounds/dlc/blast/blast_magin.ogg new file mode 100644 index 000000000..7d38df4dd Binary files /dev/null and b/sounds/dlc/blast/blast_magin.ogg differ diff --git a/sounds/dlc/blast/blast_magout.ogg b/sounds/dlc/blast/blast_magout.ogg new file mode 100644 index 000000000..15864b35a Binary files /dev/null and b/sounds/dlc/blast/blast_magout.ogg differ diff --git a/sounds/dlc/blast/blast_meleeend.ogg b/sounds/dlc/blast/blast_meleeend.ogg new file mode 100644 index 000000000..da483a5cd Binary files /dev/null and b/sounds/dlc/blast/blast_meleeend.ogg differ diff --git a/sounds/dlc/blast/blast_meleestart.ogg b/sounds/dlc/blast/blast_meleestart.ogg new file mode 100644 index 000000000..18dd7c61f Binary files /dev/null and b/sounds/dlc/blast/blast_meleestart.ogg differ diff --git a/sounds/dlc/blast/blast_select.ogg b/sounds/dlc/blast/blast_select.ogg new file mode 100644 index 000000000..1848fff0d Binary files /dev/null and b/sounds/dlc/blast/blast_select.ogg differ diff --git a/sounds/dlc/blast/blast_trigger.ogg b/sounds/dlc/blast/blast_trigger.ogg new file mode 100644 index 000000000..a3a3292b6 Binary files /dev/null and b/sounds/dlc/blast/blast_trigger.ogg differ diff --git a/sounds/dlc/hammer/itamex_deselect.ogg b/sounds/dlc/hammer/itamex_deselect.ogg new file mode 100644 index 000000000..ab1c6f7f4 Binary files /dev/null and b/sounds/dlc/hammer/itamex_deselect.ogg differ diff --git a/sounds/dlc/hammer/itamex_drop.ogg b/sounds/dlc/hammer/itamex_drop.ogg new file mode 100644 index 000000000..157e2d986 Binary files /dev/null and b/sounds/dlc/hammer/itamex_drop.ogg differ diff --git a/sounds/dlc/hammer/itamex_hit1.ogg b/sounds/dlc/hammer/itamex_hit1.ogg new file mode 100644 index 000000000..77fab810c Binary files /dev/null and b/sounds/dlc/hammer/itamex_hit1.ogg differ diff --git a/sounds/dlc/hammer/itamex_hit2.ogg b/sounds/dlc/hammer/itamex_hit2.ogg new file mode 100644 index 000000000..dbc73f867 Binary files /dev/null and b/sounds/dlc/hammer/itamex_hit2.ogg differ diff --git a/sounds/dlc/hammer/itamex_hit3.ogg b/sounds/dlc/hammer/itamex_hit3.ogg new file mode 100644 index 000000000..b4f8ef932 Binary files /dev/null and b/sounds/dlc/hammer/itamex_hit3.ogg differ diff --git a/sounds/dlc/hammer/itamex_hitf1.ogg b/sounds/dlc/hammer/itamex_hitf1.ogg new file mode 100644 index 000000000..e8074ae98 Binary files /dev/null and b/sounds/dlc/hammer/itamex_hitf1.ogg differ diff --git a/sounds/dlc/hammer/itamex_hitf2.ogg b/sounds/dlc/hammer/itamex_hitf2.ogg new file mode 100644 index 000000000..6adf3c338 Binary files /dev/null and b/sounds/dlc/hammer/itamex_hitf2.ogg differ diff --git a/sounds/dlc/hammer/itamex_hitf3.ogg b/sounds/dlc/hammer/itamex_hitf3.ogg new file mode 100644 index 000000000..ef0b9634a Binary files /dev/null and b/sounds/dlc/hammer/itamex_hitf3.ogg differ diff --git a/sounds/dlc/hammer/itamex_meleeend.ogg b/sounds/dlc/hammer/itamex_meleeend.ogg new file mode 100644 index 000000000..cf5bed16d Binary files /dev/null and b/sounds/dlc/hammer/itamex_meleeend.ogg differ diff --git a/sounds/dlc/hammer/itamex_meleestart.ogg b/sounds/dlc/hammer/itamex_meleestart.ogg new file mode 100644 index 000000000..bbd99630c Binary files /dev/null and b/sounds/dlc/hammer/itamex_meleestart.ogg differ diff --git a/sounds/dlc/hammer/itamex_select.ogg b/sounds/dlc/hammer/itamex_select.ogg new file mode 100644 index 000000000..747a9daf8 Binary files /dev/null and b/sounds/dlc/hammer/itamex_select.ogg differ diff --git a/sounds/dlc/hammer/itamex_slam.ogg b/sounds/dlc/hammer/itamex_slam.ogg new file mode 100644 index 000000000..b1e86d524 Binary files /dev/null and b/sounds/dlc/hammer/itamex_slam.ogg differ diff --git a/sounds/dlc/hammer/itamex_spin.ogg b/sounds/dlc/hammer/itamex_spin.ogg new file mode 100644 index 000000000..bc8e09cda Binary files /dev/null and b/sounds/dlc/hammer/itamex_spin.ogg differ diff --git a/sounds/dlc/hammer/itamex_swing1.ogg b/sounds/dlc/hammer/itamex_swing1.ogg new file mode 100644 index 000000000..c4b00cf04 Binary files /dev/null and b/sounds/dlc/hammer/itamex_swing1.ogg differ diff --git a/sounds/dlc/hammer/itamex_swing2.ogg b/sounds/dlc/hammer/itamex_swing2.ogg new file mode 100644 index 000000000..b670d7caf Binary files /dev/null and b/sounds/dlc/hammer/itamex_swing2.ogg differ diff --git a/sounds/dlc/hammer/itamex_swing3.ogg b/sounds/dlc/hammer/itamex_swing3.ogg new file mode 100644 index 000000000..eb6ba5afe Binary files /dev/null and b/sounds/dlc/hammer/itamex_swing3.ogg differ diff --git a/sounds/dlc/mister/mr_beep_over.ogg b/sounds/dlc/mister/mr_beep_over.ogg new file mode 100644 index 000000000..0c6d4e582 Binary files /dev/null and b/sounds/dlc/mister/mr_beep_over.ogg differ diff --git a/sounds/dlc/mister/mr_boltback.ogg b/sounds/dlc/mister/mr_boltback.ogg new file mode 100644 index 000000000..87a66a0b3 Binary files /dev/null and b/sounds/dlc/mister/mr_boltback.ogg differ diff --git a/sounds/dlc/mister/mr_boltforward.ogg b/sounds/dlc/mister/mr_boltforward.ogg new file mode 100644 index 000000000..712652fd7 Binary files /dev/null and b/sounds/dlc/mister/mr_boltforward.ogg differ diff --git a/sounds/dlc/mister/mr_cancel_over.ogg b/sounds/dlc/mister/mr_cancel_over.ogg new file mode 100644 index 000000000..b72acfab7 Binary files /dev/null and b/sounds/dlc/mister/mr_cancel_over.ogg differ diff --git a/sounds/dlc/mister/mr_casing1.ogg b/sounds/dlc/mister/mr_casing1.ogg new file mode 100644 index 000000000..df7765cc6 Binary files /dev/null and b/sounds/dlc/mister/mr_casing1.ogg differ diff --git a/sounds/dlc/mister/mr_casing2.ogg b/sounds/dlc/mister/mr_casing2.ogg new file mode 100644 index 000000000..5ae496865 Binary files /dev/null and b/sounds/dlc/mister/mr_casing2.ogg differ diff --git a/sounds/dlc/mister/mr_casing3.ogg b/sounds/dlc/mister/mr_casing3.ogg new file mode 100644 index 000000000..0090eb6ff Binary files /dev/null and b/sounds/dlc/mister/mr_casing3.ogg differ diff --git a/sounds/dlc/mister/mr_casing4.ogg b/sounds/dlc/mister/mr_casing4.ogg new file mode 100644 index 000000000..22b71ace1 Binary files /dev/null and b/sounds/dlc/mister/mr_casing4.ogg differ diff --git a/sounds/dlc/mister/mr_charge_over.ogg b/sounds/dlc/mister/mr_charge_over.ogg new file mode 100644 index 000000000..5203a8a31 Binary files /dev/null and b/sounds/dlc/mister/mr_charge_over.ogg differ diff --git a/sounds/dlc/mister/mr_deselect.ogg b/sounds/dlc/mister/mr_deselect.ogg new file mode 100644 index 000000000..af1ca9305 Binary files /dev/null and b/sounds/dlc/mister/mr_deselect.ogg differ diff --git a/sounds/dlc/mister/mr_fire_over.ogg b/sounds/dlc/mister/mr_fire_over.ogg new file mode 100644 index 000000000..63bde6b0d Binary files /dev/null and b/sounds/dlc/mister/mr_fire_over.ogg differ diff --git a/sounds/dlc/mister/mr_fire_scatter.ogg b/sounds/dlc/mister/mr_fire_scatter.ogg new file mode 100644 index 000000000..58631ffeb Binary files /dev/null and b/sounds/dlc/mister/mr_fire_scatter.ogg differ diff --git a/sounds/dlc/mister/mr_fire_semi.ogg b/sounds/dlc/mister/mr_fire_semi.ogg new file mode 100644 index 000000000..9517ef02a Binary files /dev/null and b/sounds/dlc/mister/mr_fire_semi.ogg differ diff --git a/sounds/dlc/mister/mr_fire_stream.ogg b/sounds/dlc/mister/mr_fire_stream.ogg new file mode 100644 index 000000000..8d7f9ab78 Binary files /dev/null and b/sounds/dlc/mister/mr_fire_stream.ogg differ diff --git a/sounds/dlc/mister/mr_firesel.ogg b/sounds/dlc/mister/mr_firesel.ogg new file mode 100644 index 000000000..8bf9b6055 Binary files /dev/null and b/sounds/dlc/mister/mr_firesel.ogg differ diff --git a/sounds/dlc/mister/mr_gbounce11.ogg b/sounds/dlc/mister/mr_gbounce11.ogg new file mode 100644 index 000000000..e25dafdc8 Binary files /dev/null and b/sounds/dlc/mister/mr_gbounce11.ogg differ diff --git a/sounds/dlc/mister/mr_gbounce12.ogg b/sounds/dlc/mister/mr_gbounce12.ogg new file mode 100644 index 000000000..a75552a7c Binary files /dev/null and b/sounds/dlc/mister/mr_gbounce12.ogg differ diff --git a/sounds/dlc/mister/mr_gbounce13.ogg b/sounds/dlc/mister/mr_gbounce13.ogg new file mode 100644 index 000000000..8604f458c Binary files /dev/null and b/sounds/dlc/mister/mr_gbounce13.ogg differ diff --git a/sounds/dlc/mister/mr_gbounce21.ogg b/sounds/dlc/mister/mr_gbounce21.ogg new file mode 100644 index 000000000..6a06c926d Binary files /dev/null and b/sounds/dlc/mister/mr_gbounce21.ogg differ diff --git a/sounds/dlc/mister/mr_gbounce22.ogg b/sounds/dlc/mister/mr_gbounce22.ogg new file mode 100644 index 000000000..cb9d1ddc1 Binary files /dev/null and b/sounds/dlc/mister/mr_gbounce22.ogg differ diff --git a/sounds/dlc/mister/mr_gbounce23.ogg b/sounds/dlc/mister/mr_gbounce23.ogg new file mode 100644 index 000000000..b552324ef Binary files /dev/null and b/sounds/dlc/mister/mr_gbounce23.ogg differ diff --git a/sounds/dlc/mister/mr_gcasing1.ogg b/sounds/dlc/mister/mr_gcasing1.ogg new file mode 100644 index 000000000..415ae80af Binary files /dev/null and b/sounds/dlc/mister/mr_gcasing1.ogg differ diff --git a/sounds/dlc/mister/mr_gcasing2.ogg b/sounds/dlc/mister/mr_gcasing2.ogg new file mode 100644 index 000000000..70ea5d88b Binary files /dev/null and b/sounds/dlc/mister/mr_gcasing2.ogg differ diff --git a/sounds/dlc/mister/mr_gcasing3.ogg b/sounds/dlc/mister/mr_gcasing3.ogg new file mode 100644 index 000000000..c379f5306 Binary files /dev/null and b/sounds/dlc/mister/mr_gcasing3.ogg differ diff --git a/sounds/dlc/mister/mr_gcasing4.ogg b/sounds/dlc/mister/mr_gcasing4.ogg new file mode 100644 index 000000000..6d7b54c72 Binary files /dev/null and b/sounds/dlc/mister/mr_gcasing4.ogg differ diff --git a/sounds/dlc/mister/mr_grenade.ogg b/sounds/dlc/mister/mr_grenade.ogg new file mode 100644 index 000000000..7d7f7f9fd Binary files /dev/null and b/sounds/dlc/mister/mr_grenade.ogg differ diff --git a/sounds/dlc/mister/mr_grenadeclose.ogg b/sounds/dlc/mister/mr_grenadeclose.ogg new file mode 100644 index 000000000..e99f4920e Binary files /dev/null and b/sounds/dlc/mister/mr_grenadeclose.ogg differ diff --git a/sounds/dlc/mister/mr_grenadeget.ogg b/sounds/dlc/mister/mr_grenadeget.ogg new file mode 100644 index 000000000..47e1f8d09 Binary files /dev/null and b/sounds/dlc/mister/mr_grenadeget.ogg differ diff --git a/sounds/dlc/mister/mr_grenadein.ogg b/sounds/dlc/mister/mr_grenadein.ogg new file mode 100644 index 000000000..475b50997 Binary files /dev/null and b/sounds/dlc/mister/mr_grenadein.ogg differ diff --git a/sounds/dlc/mister/mr_grenadeopen.ogg b/sounds/dlc/mister/mr_grenadeopen.ogg new file mode 100644 index 000000000..3c6b9be31 Binary files /dev/null and b/sounds/dlc/mister/mr_grenadeopen.ogg differ diff --git a/sounds/dlc/mister/mr_hit11.ogg b/sounds/dlc/mister/mr_hit11.ogg new file mode 100644 index 000000000..a5b07ffe5 Binary files /dev/null and b/sounds/dlc/mister/mr_hit11.ogg differ diff --git a/sounds/dlc/mister/mr_hit12.ogg b/sounds/dlc/mister/mr_hit12.ogg new file mode 100644 index 000000000..d304e724c Binary files /dev/null and b/sounds/dlc/mister/mr_hit12.ogg differ diff --git a/sounds/dlc/mister/mr_hit13.ogg b/sounds/dlc/mister/mr_hit13.ogg new file mode 100644 index 000000000..55248749f Binary files /dev/null and b/sounds/dlc/mister/mr_hit13.ogg differ diff --git a/sounds/dlc/mister/mr_hit21.ogg b/sounds/dlc/mister/mr_hit21.ogg new file mode 100644 index 000000000..ae6b238ee Binary files /dev/null and b/sounds/dlc/mister/mr_hit21.ogg differ diff --git a/sounds/dlc/mister/mr_hit22.ogg b/sounds/dlc/mister/mr_hit22.ogg new file mode 100644 index 000000000..1887d1642 Binary files /dev/null and b/sounds/dlc/mister/mr_hit22.ogg differ diff --git a/sounds/dlc/mister/mr_hit23.ogg b/sounds/dlc/mister/mr_hit23.ogg new file mode 100644 index 000000000..d9409b27f Binary files /dev/null and b/sounds/dlc/mister/mr_hit23.ogg differ diff --git a/sounds/dlc/mister/mr_hit31.ogg b/sounds/dlc/mister/mr_hit31.ogg new file mode 100644 index 000000000..bf93aa15f Binary files /dev/null and b/sounds/dlc/mister/mr_hit31.ogg differ diff --git a/sounds/dlc/mister/mr_hit32.ogg b/sounds/dlc/mister/mr_hit32.ogg new file mode 100644 index 000000000..b9fc33b7f Binary files /dev/null and b/sounds/dlc/mister/mr_hit32.ogg differ diff --git a/sounds/dlc/mister/mr_hit33.ogg b/sounds/dlc/mister/mr_hit33.ogg new file mode 100644 index 000000000..a26a8a196 Binary files /dev/null and b/sounds/dlc/mister/mr_hit33.ogg differ diff --git a/sounds/dlc/mister/mr_hit41.ogg b/sounds/dlc/mister/mr_hit41.ogg new file mode 100644 index 000000000..def8a0de3 Binary files /dev/null and b/sounds/dlc/mister/mr_hit41.ogg differ diff --git a/sounds/dlc/mister/mr_hit42.ogg b/sounds/dlc/mister/mr_hit42.ogg new file mode 100644 index 000000000..0229f4860 Binary files /dev/null and b/sounds/dlc/mister/mr_hit42.ogg differ diff --git a/sounds/dlc/mister/mr_hit43.ogg b/sounds/dlc/mister/mr_hit43.ogg new file mode 100644 index 000000000..eef39dcf6 Binary files /dev/null and b/sounds/dlc/mister/mr_hit43.ogg differ diff --git a/sounds/dlc/mister/mr_hitg11.ogg b/sounds/dlc/mister/mr_hitg11.ogg new file mode 100644 index 000000000..fa748bf94 Binary files /dev/null and b/sounds/dlc/mister/mr_hitg11.ogg differ diff --git a/sounds/dlc/mister/mr_hitg12.ogg b/sounds/dlc/mister/mr_hitg12.ogg new file mode 100644 index 000000000..3ccc455fb Binary files /dev/null and b/sounds/dlc/mister/mr_hitg12.ogg differ diff --git a/sounds/dlc/mister/mr_hitg13.ogg b/sounds/dlc/mister/mr_hitg13.ogg new file mode 100644 index 000000000..56e6c55fe Binary files /dev/null and b/sounds/dlc/mister/mr_hitg13.ogg differ diff --git a/sounds/dlc/mister/mr_hitg21.ogg b/sounds/dlc/mister/mr_hitg21.ogg new file mode 100644 index 000000000..688eb9ce6 Binary files /dev/null and b/sounds/dlc/mister/mr_hitg21.ogg differ diff --git a/sounds/dlc/mister/mr_hitg22.ogg b/sounds/dlc/mister/mr_hitg22.ogg new file mode 100644 index 000000000..fe4ec492d Binary files /dev/null and b/sounds/dlc/mister/mr_hitg22.ogg differ diff --git a/sounds/dlc/mister/mr_hitg23.ogg b/sounds/dlc/mister/mr_hitg23.ogg new file mode 100644 index 000000000..add1cbb8f Binary files /dev/null and b/sounds/dlc/mister/mr_hitg23.ogg differ diff --git a/sounds/dlc/mister/mr_hold_over.ogg b/sounds/dlc/mister/mr_hold_over.ogg new file mode 100644 index 000000000..58f7f55bd Binary files /dev/null and b/sounds/dlc/mister/mr_hold_over.ogg differ diff --git a/sounds/dlc/mister/mr_lowammo.ogg b/sounds/dlc/mister/mr_lowammo.ogg new file mode 100644 index 000000000..0ad978fe1 Binary files /dev/null and b/sounds/dlc/mister/mr_lowammo.ogg differ diff --git a/sounds/dlc/mister/mr_magin.ogg b/sounds/dlc/mister/mr_magin.ogg new file mode 100644 index 000000000..989831dd9 Binary files /dev/null and b/sounds/dlc/mister/mr_magin.ogg differ diff --git a/sounds/dlc/mister/mr_magout.ogg b/sounds/dlc/mister/mr_magout.ogg new file mode 100644 index 000000000..50f70c8a1 Binary files /dev/null and b/sounds/dlc/mister/mr_magout.ogg differ diff --git a/sounds/dlc/mister/mr_meleeend.ogg b/sounds/dlc/mister/mr_meleeend.ogg new file mode 100644 index 000000000..7f2d871d2 Binary files /dev/null and b/sounds/dlc/mister/mr_meleeend.ogg differ diff --git a/sounds/dlc/mister/mr_meleestart.ogg b/sounds/dlc/mister/mr_meleestart.ogg new file mode 100644 index 000000000..5b5100c1a Binary files /dev/null and b/sounds/dlc/mister/mr_meleestart.ogg differ diff --git a/sounds/dlc/mister/mr_noammo.ogg b/sounds/dlc/mister/mr_noammo.ogg new file mode 100644 index 000000000..d27d9ca53 Binary files /dev/null and b/sounds/dlc/mister/mr_noammo.ogg differ diff --git a/sounds/dlc/mister/mr_select.ogg b/sounds/dlc/mister/mr_select.ogg new file mode 100644 index 000000000..bbfd61c79 Binary files /dev/null and b/sounds/dlc/mister/mr_select.ogg differ diff --git a/sounds/dlc/quadshot/quad_bayonetfire.ogg b/sounds/dlc/quadshot/quad_bayonetfire.ogg new file mode 100644 index 000000000..9324f1765 Binary files /dev/null and b/sounds/dlc/quadshot/quad_bayonetfire.ogg differ diff --git a/sounds/dlc/quadshot/quad_bayonetreturn.ogg b/sounds/dlc/quadshot/quad_bayonetreturn.ogg new file mode 100644 index 000000000..0e065b91d Binary files /dev/null and b/sounds/dlc/quadshot/quad_bayonetreturn.ogg differ diff --git a/sounds/dlc/quadshot/quad_casing1.ogg b/sounds/dlc/quadshot/quad_casing1.ogg new file mode 100644 index 000000000..8205f3383 Binary files /dev/null and b/sounds/dlc/quadshot/quad_casing1.ogg differ diff --git a/sounds/dlc/quadshot/quad_casing2.ogg b/sounds/dlc/quadshot/quad_casing2.ogg new file mode 100644 index 000000000..d2a740d9e Binary files /dev/null and b/sounds/dlc/quadshot/quad_casing2.ogg differ diff --git a/sounds/dlc/quadshot/quad_casing3.ogg b/sounds/dlc/quadshot/quad_casing3.ogg new file mode 100644 index 000000000..2d02f888d Binary files /dev/null and b/sounds/dlc/quadshot/quad_casing3.ogg differ diff --git a/sounds/dlc/quadshot/quad_casing4.ogg b/sounds/dlc/quadshot/quad_casing4.ogg new file mode 100644 index 000000000..4a69d76fa Binary files /dev/null and b/sounds/dlc/quadshot/quad_casing4.ogg differ diff --git a/sounds/dlc/quadshot/quad_deselect.ogg b/sounds/dlc/quadshot/quad_deselect.ogg new file mode 100644 index 000000000..c10ace82e Binary files /dev/null and b/sounds/dlc/quadshot/quad_deselect.ogg differ diff --git a/sounds/dlc/quadshot/quad_deselectfast.ogg b/sounds/dlc/quadshot/quad_deselectfast.ogg new file mode 100644 index 000000000..54e1469af Binary files /dev/null and b/sounds/dlc/quadshot/quad_deselectfast.ogg differ diff --git a/sounds/dlc/quadshot/quad_explo1.ogg b/sounds/dlc/quadshot/quad_explo1.ogg new file mode 100644 index 000000000..cd2d01515 Binary files /dev/null and b/sounds/dlc/quadshot/quad_explo1.ogg differ diff --git a/sounds/dlc/quadshot/quad_explo2.ogg b/sounds/dlc/quadshot/quad_explo2.ogg new file mode 100644 index 000000000..a09180fdc Binary files /dev/null and b/sounds/dlc/quadshot/quad_explo2.ogg differ diff --git a/sounds/dlc/quadshot/quad_explo3.ogg b/sounds/dlc/quadshot/quad_explo3.ogg new file mode 100644 index 000000000..deacc805e Binary files /dev/null and b/sounds/dlc/quadshot/quad_explo3.ogg differ diff --git a/sounds/dlc/quadshot/quad_firefive.ogg b/sounds/dlc/quadshot/quad_firefive.ogg new file mode 100644 index 000000000..a139defbd Binary files /dev/null and b/sounds/dlc/quadshot/quad_firefive.ogg differ diff --git a/sounds/dlc/quadshot/quad_firefour.ogg b/sounds/dlc/quadshot/quad_firefour.ogg new file mode 100644 index 000000000..f860c1dc8 Binary files /dev/null and b/sounds/dlc/quadshot/quad_firefour.ogg differ diff --git a/sounds/dlc/quadshot/quad_fireone.ogg b/sounds/dlc/quadshot/quad_fireone.ogg new file mode 100644 index 000000000..c71c215bb Binary files /dev/null and b/sounds/dlc/quadshot/quad_fireone.ogg differ diff --git a/sounds/dlc/quadshot/quad_firethree.ogg b/sounds/dlc/quadshot/quad_firethree.ogg new file mode 100644 index 000000000..b46bfb3ff Binary files /dev/null and b/sounds/dlc/quadshot/quad_firethree.ogg differ diff --git a/sounds/dlc/quadshot/quad_firetwo.ogg b/sounds/dlc/quadshot/quad_firetwo.ogg new file mode 100644 index 000000000..5faf9d5ff Binary files /dev/null and b/sounds/dlc/quadshot/quad_firetwo.ogg differ diff --git a/sounds/dlc/quadshot/quad_fly.ogg b/sounds/dlc/quadshot/quad_fly.ogg new file mode 100644 index 000000000..b9e39bf02 Binary files /dev/null and b/sounds/dlc/quadshot/quad_fly.ogg differ diff --git a/sounds/dlc/quadshot/quad_hit1.ogg b/sounds/dlc/quadshot/quad_hit1.ogg new file mode 100644 index 000000000..ec76359ca Binary files /dev/null and b/sounds/dlc/quadshot/quad_hit1.ogg differ diff --git a/sounds/dlc/quadshot/quad_hit2.ogg b/sounds/dlc/quadshot/quad_hit2.ogg new file mode 100644 index 000000000..de5e34f4a Binary files /dev/null and b/sounds/dlc/quadshot/quad_hit2.ogg differ diff --git a/sounds/dlc/quadshot/quad_hit3.ogg b/sounds/dlc/quadshot/quad_hit3.ogg new file mode 100644 index 000000000..bccc3ce1f Binary files /dev/null and b/sounds/dlc/quadshot/quad_hit3.ogg differ diff --git a/sounds/dlc/quadshot/quad_leverback.ogg b/sounds/dlc/quadshot/quad_leverback.ogg new file mode 100644 index 000000000..d202ae2dc Binary files /dev/null and b/sounds/dlc/quadshot/quad_leverback.ogg differ diff --git a/sounds/dlc/quadshot/quad_leverforward.ogg b/sounds/dlc/quadshot/quad_leverforward.ogg new file mode 100644 index 000000000..f511b6460 Binary files /dev/null and b/sounds/dlc/quadshot/quad_leverforward.ogg differ diff --git a/sounds/dlc/quadshot/quad_load1.ogg b/sounds/dlc/quadshot/quad_load1.ogg new file mode 100644 index 000000000..d6a396a18 Binary files /dev/null and b/sounds/dlc/quadshot/quad_load1.ogg differ diff --git a/sounds/dlc/quadshot/quad_load2.ogg b/sounds/dlc/quadshot/quad_load2.ogg new file mode 100644 index 000000000..f485aba1b Binary files /dev/null and b/sounds/dlc/quadshot/quad_load2.ogg differ diff --git a/sounds/dlc/quadshot/quad_load3.ogg b/sounds/dlc/quadshot/quad_load3.ogg new file mode 100644 index 000000000..46fca900a Binary files /dev/null and b/sounds/dlc/quadshot/quad_load3.ogg differ diff --git a/sounds/dlc/quadshot/quad_load4.ogg b/sounds/dlc/quadshot/quad_load4.ogg new file mode 100644 index 000000000..3172aa305 Binary files /dev/null and b/sounds/dlc/quadshot/quad_load4.ogg differ diff --git a/sounds/dlc/quadshot/quad_onehand.ogg b/sounds/dlc/quadshot/quad_onehand.ogg new file mode 100644 index 000000000..20f17f436 Binary files /dev/null and b/sounds/dlc/quadshot/quad_onehand.ogg differ diff --git a/sounds/dlc/quadshot/quad_select.ogg b/sounds/dlc/quadshot/quad_select.ogg new file mode 100644 index 000000000..2820c9ea1 Binary files /dev/null and b/sounds/dlc/quadshot/quad_select.ogg differ diff --git a/sounds/dlc/quadshot/quad_selectfast.ogg b/sounds/dlc/quadshot/quad_selectfast.ogg new file mode 100644 index 000000000..7fc9ae962 Binary files /dev/null and b/sounds/dlc/quadshot/quad_selectfast.ogg differ diff --git a/sounds/dlc/quadshot/quad_twohand.ogg b/sounds/dlc/quadshot/quad_twohand.ogg new file mode 100644 index 000000000..85d082347 Binary files /dev/null and b/sounds/dlc/quadshot/quad_twohand.ogg differ diff --git a/sounds/dlc/quadshot/quad_xexpl.ogg b/sounds/dlc/quadshot/quad_xexpl.ogg new file mode 100644 index 000000000..57e4845ef Binary files /dev/null and b/sounds/dlc/quadshot/quad_xexpl.ogg differ diff --git a/sounds/dlc/quadshot/quad_xxexpl.ogg b/sounds/dlc/quadshot/quad_xxexpl.ogg new file mode 100644 index 000000000..c4407667d Binary files /dev/null and b/sounds/dlc/quadshot/quad_xxexpl.ogg differ diff --git a/sounds/dlc/sheen/sheen_2100rpm.ogg b/sounds/dlc/sheen/sheen_2100rpm.ogg new file mode 100644 index 000000000..dd89c6434 Binary files /dev/null and b/sounds/dlc/sheen/sheen_2100rpm.ogg differ diff --git a/sounds/dlc/sheen/sheen_700rpm.ogg b/sounds/dlc/sheen/sheen_700rpm.ogg new file mode 100644 index 000000000..25a1baa77 Binary files /dev/null and b/sounds/dlc/sheen/sheen_700rpm.ogg differ diff --git a/sounds/dlc/sheen/sheen_case1.ogg b/sounds/dlc/sheen/sheen_case1.ogg new file mode 100644 index 000000000..7dcb07479 Binary files /dev/null and b/sounds/dlc/sheen/sheen_case1.ogg differ diff --git a/sounds/dlc/sheen/sheen_case2.ogg b/sounds/dlc/sheen/sheen_case2.ogg new file mode 100644 index 000000000..9f2e8bc5e Binary files /dev/null and b/sounds/dlc/sheen/sheen_case2.ogg differ diff --git a/sounds/dlc/sheen/sheen_case3.ogg b/sounds/dlc/sheen/sheen_case3.ogg new file mode 100644 index 000000000..61df96a63 Binary files /dev/null and b/sounds/dlc/sheen/sheen_case3.ogg differ diff --git a/sounds/dlc/sheen/sheen_case4.ogg b/sounds/dlc/sheen/sheen_case4.ogg new file mode 100644 index 000000000..11be469fb Binary files /dev/null and b/sounds/dlc/sheen/sheen_case4.ogg differ diff --git a/sounds/dlc/sheen/sheen_crankin.ogg b/sounds/dlc/sheen/sheen_crankin.ogg new file mode 100644 index 000000000..ca1e2e176 Binary files /dev/null and b/sounds/dlc/sheen/sheen_crankin.ogg differ diff --git a/sounds/dlc/sheen/sheen_crankout.ogg b/sounds/dlc/sheen/sheen_crankout.ogg new file mode 100644 index 000000000..0ea106147 Binary files /dev/null and b/sounds/dlc/sheen/sheen_crankout.ogg differ diff --git a/sounds/dlc/sheen/sheen_deselect.ogg b/sounds/dlc/sheen/sheen_deselect.ogg new file mode 100644 index 000000000..f0543fa11 Binary files /dev/null and b/sounds/dlc/sheen/sheen_deselect.ogg differ diff --git a/sounds/dlc/sheen/sheen_fire1.ogg b/sounds/dlc/sheen/sheen_fire1.ogg new file mode 100644 index 000000000..94be6a547 Binary files /dev/null and b/sounds/dlc/sheen/sheen_fire1.ogg differ diff --git a/sounds/dlc/sheen/sheen_fire2.ogg b/sounds/dlc/sheen/sheen_fire2.ogg new file mode 100644 index 000000000..020390810 Binary files /dev/null and b/sounds/dlc/sheen/sheen_fire2.ogg differ diff --git a/sounds/dlc/sheen/sheen_fire3.ogg b/sounds/dlc/sheen/sheen_fire3.ogg new file mode 100644 index 000000000..7378cd6d8 Binary files /dev/null and b/sounds/dlc/sheen/sheen_fire3.ogg differ diff --git a/sounds/dlc/sheen/sheen_meleeend.ogg b/sounds/dlc/sheen/sheen_meleeend.ogg new file mode 100644 index 000000000..296c1740e Binary files /dev/null and b/sounds/dlc/sheen/sheen_meleeend.ogg differ diff --git a/sounds/dlc/sheen/sheen_meleestart.ogg b/sounds/dlc/sheen/sheen_meleestart.ogg new file mode 100644 index 000000000..5f22080d2 Binary files /dev/null and b/sounds/dlc/sheen/sheen_meleestart.ogg differ diff --git a/sounds/dlc/sheen/sheen_overheat.ogg b/sounds/dlc/sheen/sheen_overheat.ogg new file mode 100644 index 000000000..6749f2d7f Binary files /dev/null and b/sounds/dlc/sheen/sheen_overheat.ogg differ diff --git a/sounds/dlc/sheen/sheen_select.ogg b/sounds/dlc/sheen/sheen_select.ogg new file mode 100644 index 000000000..1714bc615 Binary files /dev/null and b/sounds/dlc/sheen/sheen_select.ogg differ diff --git a/sounds/dlc/sheen/sheen_specialpickup.ogg b/sounds/dlc/sheen/sheen_specialpickup.ogg new file mode 100644 index 000000000..225058b85 Binary files /dev/null and b/sounds/dlc/sheen/sheen_specialpickup.ogg differ diff --git a/sounds/dlc/sheen/sheen_unlock.ogg b/sounds/dlc/sheen/sheen_unlock.ogg new file mode 100644 index 000000000..50ac431b3 Binary files /dev/null and b/sounds/dlc/sheen/sheen_unlock.ogg differ diff --git a/sounds/general/AreaName.ogg b/sounds/general/AreaName.ogg new file mode 100644 index 000000000..d3012bf09 Binary files /dev/null and b/sounds/general/AreaName.ogg differ diff --git a/sounds/general/magitem.ogg b/sounds/general/magitem.ogg new file mode 100644 index 000000000..0f335522c Binary files /dev/null and b/sounds/general/magitem.ogg differ diff --git a/sounds/spreadgun/spread_slug1.ogg b/sounds/general/slughit1.ogg similarity index 100% rename from sounds/spreadgun/spread_slug1.ogg rename to sounds/general/slughit1.ogg diff --git a/sounds/spreadgun/spread_slug2.ogg b/sounds/general/slughit2.ogg similarity index 100% rename from sounds/spreadgun/spread_slug2.ogg rename to sounds/general/slughit2.ogg diff --git a/sounds/spreadgun/spread_slugf1.ogg b/sounds/general/slughitf1.ogg similarity index 100% rename from sounds/spreadgun/spread_slugf1.ogg rename to sounds/general/slughitf1.ogg diff --git a/sounds/spreadgun/spread_slugf2.ogg b/sounds/general/slughitf2.ogg similarity index 100% rename from sounds/spreadgun/spread_slugf2.ogg rename to sounds/general/slughitf2.ogg diff --git a/sounds/hellblazer/blaze_hitm1.ogg b/sounds/hellblazer/blaze_hit1.ogg similarity index 100% rename from sounds/hellblazer/blaze_hitm1.ogg rename to sounds/hellblazer/blaze_hit1.ogg diff --git a/sounds/hellblazer/blaze_hitm2.ogg b/sounds/hellblazer/blaze_hit2.ogg similarity index 100% rename from sounds/hellblazer/blaze_hitm2.ogg rename to sounds/hellblazer/blaze_hit2.ogg diff --git a/sounds/hellblazer/blaze_hitm3.ogg b/sounds/hellblazer/blaze_hit3.ogg similarity index 100% rename from sounds/hellblazer/blaze_hitm3.ogg rename to sounds/hellblazer/blaze_hit3.ogg diff --git a/sounds/hellblazer/blaze_hitc1.ogg b/sounds/hellblazer/blaze_hitc1.ogg deleted file mode 100644 index 8d7f2a65b..000000000 Binary files a/sounds/hellblazer/blaze_hitc1.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitc2.ogg b/sounds/hellblazer/blaze_hitc2.ogg deleted file mode 100644 index beda5f6cd..000000000 Binary files a/sounds/hellblazer/blaze_hitc2.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitc3.ogg b/sounds/hellblazer/blaze_hitc3.ogg deleted file mode 100644 index bc9d85c51..000000000 Binary files a/sounds/hellblazer/blaze_hitc3.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitcs1.ogg b/sounds/hellblazer/blaze_hitcs1.ogg deleted file mode 100644 index a78472ca8..000000000 Binary files a/sounds/hellblazer/blaze_hitcs1.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitcs2.ogg b/sounds/hellblazer/blaze_hitcs2.ogg deleted file mode 100644 index d8f3e55d0..000000000 Binary files a/sounds/hellblazer/blaze_hitcs2.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitcs3.ogg b/sounds/hellblazer/blaze_hitcs3.ogg deleted file mode 100644 index ef725d6b3..000000000 Binary files a/sounds/hellblazer/blaze_hitcs3.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitr1.ogg b/sounds/hellblazer/blaze_hitr1.ogg deleted file mode 100644 index f8a3b9926..000000000 Binary files a/sounds/hellblazer/blaze_hitr1.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitr2.ogg b/sounds/hellblazer/blaze_hitr2.ogg deleted file mode 100644 index a2aa6df1d..000000000 Binary files a/sounds/hellblazer/blaze_hitr2.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitr3.ogg b/sounds/hellblazer/blaze_hitr3.ogg deleted file mode 100644 index 1b9bc1d17..000000000 Binary files a/sounds/hellblazer/blaze_hitr3.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitw1.ogg b/sounds/hellblazer/blaze_hitw1.ogg deleted file mode 100644 index fe530382a..000000000 Binary files a/sounds/hellblazer/blaze_hitw1.ogg and /dev/null differ diff --git a/sounds/hellblazer/blaze_hitw2.ogg b/sounds/hellblazer/blaze_hitw2.ogg deleted file mode 100644 index d1cabeccf..000000000 Binary files a/sounds/hellblazer/blaze_hitw2.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_ball1.ogg b/sounds/items/leadball1.ogg similarity index 100% rename from sounds/spreadgun/spread_ball1.ogg rename to sounds/items/leadball1.ogg diff --git a/sounds/spreadgun/spread_ball2.ogg b/sounds/items/leadball2.ogg similarity index 100% rename from sounds/spreadgun/spread_ball2.ogg rename to sounds/items/leadball2.ogg diff --git a/sounds/spreadgun/spread_ball3.ogg b/sounds/items/leadball3.ogg similarity index 100% rename from sounds/spreadgun/spread_ball3.ogg rename to sounds/items/leadball3.ogg diff --git a/sounds/spreadgun/spread_ballf1.ogg b/sounds/items/leadballf1.ogg similarity index 100% rename from sounds/spreadgun/spread_ballf1.ogg rename to sounds/items/leadballf1.ogg diff --git a/sounds/spreadgun/spread_ballf2.ogg b/sounds/items/leadballf2.ogg similarity index 100% rename from sounds/spreadgun/spread_ballf2.ogg rename to sounds/items/leadballf2.ogg diff --git a/sounds/spreadgun/spread_ballf3.ogg b/sounds/items/leadballf3.ogg similarity index 100% rename from sounds/spreadgun/spread_ballf3.ogg rename to sounds/items/leadballf3.ogg diff --git a/sounds/spreadgun/spread_purplefire1.ogg b/sounds/items/leadballfire1.ogg similarity index 100% rename from sounds/spreadgun/spread_purplefire1.ogg rename to sounds/items/leadballfire1.ogg diff --git a/sounds/spreadgun/spread_purplefire2.ogg b/sounds/items/leadballfire2.ogg similarity index 100% rename from sounds/spreadgun/spread_purplefire2.ogg rename to sounds/items/leadballfire2.ogg diff --git a/sounds/pusher/push_fly.ogg b/sounds/items/leadballfly.ogg similarity index 100% rename from sounds/pusher/push_fly.ogg rename to sounds/items/leadballfly.ogg diff --git a/sounds/spreadgun/spread_salt1.ogg b/sounds/items/salthit1.ogg similarity index 100% rename from sounds/spreadgun/spread_salt1.ogg rename to sounds/items/salthit1.ogg diff --git a/sounds/spreadgun/spread_salt2.ogg b/sounds/items/salthit2.ogg similarity index 100% rename from sounds/spreadgun/spread_salt2.ogg rename to sounds/items/salthit2.ogg diff --git a/sounds/spreadgun/spread_salt3.ogg b/sounds/items/salthit3.ogg similarity index 100% rename from sounds/spreadgun/spread_salt3.ogg rename to sounds/items/salthit3.ogg diff --git a/sounds/spreadgun/spread_salt4.ogg b/sounds/items/salthit4.ogg similarity index 100% rename from sounds/spreadgun/spread_salt4.ogg rename to sounds/items/salthit4.ogg diff --git a/sounds/spreadgun/spread_bluetrail1.ogg b/sounds/items/salttrail1.ogg similarity index 100% rename from sounds/spreadgun/spread_bluetrail1.ogg rename to sounds/items/salttrail1.ogg diff --git a/sounds/spreadgun/spread_bluetrail2.ogg b/sounds/items/salttrail2.ogg similarity index 100% rename from sounds/spreadgun/spread_bluetrail2.ogg rename to sounds/items/salttrail2.ogg diff --git a/sounds/spreadgun/spread_bluetrail3.ogg b/sounds/items/salttrail3.ogg similarity index 100% rename from sounds/spreadgun/spread_bluetrail3.ogg rename to sounds/items/salttrail3.ogg diff --git a/sounds/spreadgun/spread_bluetrail4.ogg b/sounds/items/salttrail4.ogg similarity index 100% rename from sounds/spreadgun/spread_bluetrail4.ogg rename to sounds/items/salttrail4.ogg diff --git a/sounds/pusher/push_altcharge.ogg b/sounds/pusher/push_altcharge.ogg deleted file mode 100644 index 7e3f1cc3f..000000000 Binary files a/sounds/pusher/push_altcharge.ogg and /dev/null differ diff --git a/sounds/pusher/push_altfire1.ogg b/sounds/pusher/push_altfire1.ogg deleted file mode 100644 index 30afce51c..000000000 Binary files a/sounds/pusher/push_altfire1.ogg and /dev/null differ diff --git a/sounds/pusher/push_altfire2.ogg b/sounds/pusher/push_altfire2.ogg deleted file mode 100644 index 430a4cfc7..000000000 Binary files a/sounds/pusher/push_altfire2.ogg and /dev/null differ diff --git a/sounds/pusher/push_bounce1.ogg b/sounds/pusher/push_bounce1.ogg deleted file mode 100644 index b266cc757..000000000 Binary files a/sounds/pusher/push_bounce1.ogg and /dev/null differ diff --git a/sounds/pusher/push_bounce2.ogg b/sounds/pusher/push_bounce2.ogg deleted file mode 100644 index 7cf282164..000000000 Binary files a/sounds/pusher/push_bounce2.ogg and /dev/null differ diff --git a/sounds/pusher/push_bounce3.ogg b/sounds/pusher/push_bounce3.ogg deleted file mode 100644 index 93d01d3dc..000000000 Binary files a/sounds/pusher/push_bounce3.ogg and /dev/null differ diff --git a/sounds/pusher/push_deselect.ogg b/sounds/pusher/push_deselect.ogg deleted file mode 100644 index bf84991f7..000000000 Binary files a/sounds/pusher/push_deselect.ogg and /dev/null differ diff --git a/sounds/pusher/push_drill.ogg b/sounds/pusher/push_drill.ogg deleted file mode 100644 index bb1758fc0..000000000 Binary files a/sounds/pusher/push_drill.ogg and /dev/null differ diff --git a/sounds/pusher/push_end.ogg b/sounds/pusher/push_end.ogg deleted file mode 100644 index 39e30b3d5..000000000 Binary files a/sounds/pusher/push_end.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitf1.ogg b/sounds/pusher/push_hitf1.ogg deleted file mode 100644 index a7b9e9db9..000000000 Binary files a/sounds/pusher/push_hitf1.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitf2.ogg b/sounds/pusher/push_hitf2.ogg deleted file mode 100644 index a6dd3beab..000000000 Binary files a/sounds/pusher/push_hitf2.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitf3.ogg b/sounds/pusher/push_hitf3.ogg deleted file mode 100644 index 3438a4caf..000000000 Binary files a/sounds/pusher/push_hitf3.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitw1.ogg b/sounds/pusher/push_hitw1.ogg deleted file mode 100644 index ecbee7ab5..000000000 Binary files a/sounds/pusher/push_hitw1.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitw2.ogg b/sounds/pusher/push_hitw2.ogg deleted file mode 100644 index d6de68618..000000000 Binary files a/sounds/pusher/push_hitw2.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitw3.ogg b/sounds/pusher/push_hitw3.ogg deleted file mode 100644 index 9acb4926a..000000000 Binary files a/sounds/pusher/push_hitw3.ogg and /dev/null differ diff --git a/sounds/pusher/push_idle.ogg b/sounds/pusher/push_idle.ogg deleted file mode 100644 index 461bb2b18..000000000 Binary files a/sounds/pusher/push_idle.ogg and /dev/null differ diff --git a/sounds/pusher/push_miss.ogg b/sounds/pusher/push_miss.ogg deleted file mode 100644 index 25e6758c5..000000000 Binary files a/sounds/pusher/push_miss.ogg and /dev/null differ diff --git a/sounds/pusher/push_motor.ogg b/sounds/pusher/push_motor.ogg deleted file mode 100644 index ef68825d3..000000000 Binary files a/sounds/pusher/push_motor.ogg and /dev/null differ diff --git a/sounds/pusher/push_motorend.ogg b/sounds/pusher/push_motorend.ogg deleted file mode 100644 index 6d001ead4..000000000 Binary files a/sounds/pusher/push_motorend.ogg and /dev/null differ diff --git a/sounds/pusher/push_select.ogg b/sounds/pusher/push_select.ogg deleted file mode 100644 index 5bd6045f3..000000000 Binary files a/sounds/pusher/push_select.ogg and /dev/null differ diff --git a/sounds/pusher/push_start.ogg b/sounds/pusher/push_start.ogg deleted file mode 100644 index b9c7b5c29..000000000 Binary files a/sounds/pusher/push_start.ogg and /dev/null differ diff --git a/sounds/sewercount.ogg b/sounds/sewercount.ogg deleted file mode 100644 index 4440f2e3e..000000000 Binary files a/sounds/sewercount.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_altfire1.ogg b/sounds/silverbullet/silver_altfire1.ogg deleted file mode 100644 index 37daa379e..000000000 Binary files a/sounds/silverbullet/silver_altfire1.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_altfire2.ogg b/sounds/silverbullet/silver_altfire2.ogg deleted file mode 100644 index 2ea11b4e2..000000000 Binary files a/sounds/silverbullet/silver_altfire2.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_altfire3.ogg b/sounds/silverbullet/silver_altfire3.ogg deleted file mode 100644 index c62fc277f..000000000 Binary files a/sounds/silverbullet/silver_altfire3.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_chode1.ogg b/sounds/silverbullet/silver_chode1.ogg deleted file mode 100644 index be9ee15c9..000000000 Binary files a/sounds/silverbullet/silver_chode1.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_chode2.ogg b/sounds/silverbullet/silver_chode2.ogg deleted file mode 100644 index d758d0aeb..000000000 Binary files a/sounds/silverbullet/silver_chode2.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_fire1.ogg b/sounds/silverbullet/silver_fire1.ogg index 813642716..37daa379e 100644 Binary files a/sounds/silverbullet/silver_fire1.ogg and b/sounds/silverbullet/silver_fire1.ogg differ diff --git a/sounds/silverbullet/silver_fire2.ogg b/sounds/silverbullet/silver_fire2.ogg index 8b43b3172..2ea11b4e2 100644 Binary files a/sounds/silverbullet/silver_fire2.ogg and b/sounds/silverbullet/silver_fire2.ogg differ diff --git a/sounds/silverbullet/silver_fire3.ogg b/sounds/silverbullet/silver_fire3.ogg index e28ef4bae..c62fc277f 100644 Binary files a/sounds/silverbullet/silver_fire3.ogg and b/sounds/silverbullet/silver_fire3.ogg differ diff --git a/sounds/spreadgun/spread_blackfire1.ogg b/sounds/spreadgun/spread_blackfire1.ogg deleted file mode 100644 index 376cbdd33..000000000 Binary files a/sounds/spreadgun/spread_blackfire1.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_blackfire2.ogg b/sounds/spreadgun/spread_blackfire2.ogg deleted file mode 100644 index a1b3198f2..000000000 Binary files a/sounds/spreadgun/spread_blackfire2.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_bluefire1.ogg b/sounds/spreadgun/spread_bluefire1.ogg deleted file mode 100644 index c5e7aa44d..000000000 Binary files a/sounds/spreadgun/spread_bluefire1.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_bluefire2.ogg b/sounds/spreadgun/spread_bluefire2.ogg deleted file mode 100644 index 20515c344..000000000 Binary files a/sounds/spreadgun/spread_bluefire2.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_greenfire1.ogg b/sounds/spreadgun/spread_greenfire1.ogg deleted file mode 100644 index 492a678a9..000000000 Binary files a/sounds/spreadgun/spread_greenfire1.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_greenfire2.ogg b/sounds/spreadgun/spread_greenfire2.ogg deleted file mode 100644 index 973a8606a..000000000 Binary files a/sounds/spreadgun/spread_greenfire2.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_poison.ogg b/sounds/spreadgun/spread_poison.ogg deleted file mode 100644 index fc21026b4..000000000 Binary files a/sounds/spreadgun/spread_poison.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_poisonpuff1.ogg b/sounds/spreadgun/spread_poisonpuff1.ogg deleted file mode 100644 index 08cadb551..000000000 Binary files a/sounds/spreadgun/spread_poisonpuff1.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_poisonpuff2.ogg b/sounds/spreadgun/spread_poisonpuff2.ogg deleted file mode 100644 index 9e153660f..000000000 Binary files a/sounds/spreadgun/spread_poisonpuff2.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_whitefire1.ogg b/sounds/spreadgun/spread_whitefire1.ogg deleted file mode 100644 index 5127c8659..000000000 Binary files a/sounds/spreadgun/spread_whitefire1.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_whitefire2.ogg b/sounds/spreadgun/spread_whitefire2.ogg deleted file mode 100644 index d7b8b9b94..000000000 Binary files a/sounds/spreadgun/spread_whitefire2.ogg and /dev/null differ diff --git a/sounds/voice/default/demodeath1.ogg b/sounds/voice/default/demodeath1.ogg index bc213cd59..1e2b6e8d2 100644 Binary files a/sounds/voice/default/demodeath1.ogg and b/sounds/voice/default/demodeath1.ogg differ diff --git a/sounds/voice/default/demodeath2.ogg b/sounds/voice/default/demodeath2.ogg index b212e9a79..c36decaa8 100644 Binary files a/sounds/voice/default/demodeath2.ogg and b/sounds/voice/default/demodeath2.ogg differ diff --git a/sounds/voice/default/demodeath3.ogg b/sounds/voice/default/demodeath3.ogg index 0e852002f..12f03abec 100644 Binary files a/sounds/voice/default/demodeath3.ogg and b/sounds/voice/default/demodeath3.ogg differ diff --git a/sounds/voice/default/demodeath4.ogg b/sounds/voice/default/demodeath4.ogg index 1c1a4f872..c3139167f 100644 Binary files a/sounds/voice/default/demodeath4.ogg and b/sounds/voice/default/demodeath4.ogg differ diff --git a/sounds/voice/default/demodeath5.ogg b/sounds/voice/default/demodeath5.ogg index 1e1a25b45..20663a4da 100644 Binary files a/sounds/voice/default/demodeath5.ogg and b/sounds/voice/default/demodeath5.ogg differ diff --git a/sounds/voice/default/demodeath6.ogg b/sounds/voice/default/demodeath6.ogg new file mode 100644 index 000000000..865d9b8b6 Binary files /dev/null and b/sounds/voice/default/demodeath6.ogg differ diff --git a/sounds/voice/default/demodeath7.ogg b/sounds/voice/default/demodeath7.ogg new file mode 100644 index 000000000..458eb4d0d Binary files /dev/null and b/sounds/voice/default/demodeath7.ogg differ diff --git a/sounds/voice/default/demodeath8.ogg b/sounds/voice/default/demodeath8.ogg new file mode 100644 index 000000000..99f60d4f1 Binary files /dev/null and b/sounds/voice/default/demodeath8.ogg differ diff --git a/sounds/voice/default/demogrunt1.ogg b/sounds/voice/default/demogrunt1.ogg index bd3d818df..cb410ac9b 100644 Binary files a/sounds/voice/default/demogrunt1.ogg and b/sounds/voice/default/demogrunt1.ogg differ diff --git a/sounds/voice/default/demogrunt2.ogg b/sounds/voice/default/demogrunt2.ogg index 2c9412e36..2e9bdd995 100644 Binary files a/sounds/voice/default/demogrunt2.ogg and b/sounds/voice/default/demogrunt2.ogg differ diff --git a/sounds/voice/default/demogrunt3.ogg b/sounds/voice/default/demogrunt3.ogg index 5e80c06af..622c56eb8 100644 Binary files a/sounds/voice/default/demogrunt3.ogg and b/sounds/voice/default/demogrunt3.ogg differ diff --git a/sounds/voice/default/demogrunt4.ogg b/sounds/voice/default/demogrunt4.ogg index 03de92028..7ec08e85d 100644 Binary files a/sounds/voice/default/demogrunt4.ogg and b/sounds/voice/default/demogrunt4.ogg differ diff --git a/sounds/voice/default/demogrunt5.ogg b/sounds/voice/default/demogrunt5.ogg index a6d53a1e9..bf01c4908 100644 Binary files a/sounds/voice/default/demogrunt5.ogg and b/sounds/voice/default/demogrunt5.ogg differ diff --git a/sounds/voice/default/demogrunt6.ogg b/sounds/voice/default/demogrunt6.ogg deleted file mode 100644 index 06503e5d2..000000000 Binary files a/sounds/voice/default/demogrunt6.ogg and /dev/null differ diff --git a/sounds/voice/default/demohipain1.ogg b/sounds/voice/default/demohipain1.ogg index 8488011d7..2beb143d4 100644 Binary files a/sounds/voice/default/demohipain1.ogg and b/sounds/voice/default/demohipain1.ogg differ diff --git a/sounds/voice/default/demohipain2.ogg b/sounds/voice/default/demohipain2.ogg index 1acdeef91..483df1fab 100644 Binary files a/sounds/voice/default/demohipain2.ogg and b/sounds/voice/default/demohipain2.ogg differ diff --git a/sounds/voice/default/demohipain3.ogg b/sounds/voice/default/demohipain3.ogg index 986ded96d..028d912d2 100644 Binary files a/sounds/voice/default/demohipain3.ogg and b/sounds/voice/default/demohipain3.ogg differ diff --git a/sounds/voice/default/demohipain4.ogg b/sounds/voice/default/demohipain4.ogg deleted file mode 100644 index f0f86f45e..000000000 Binary files a/sounds/voice/default/demohipain4.ogg and /dev/null differ diff --git a/sounds/voice/default/demohipain5.ogg b/sounds/voice/default/demohipain5.ogg deleted file mode 100644 index 89d165c08..000000000 Binary files a/sounds/voice/default/demohipain5.ogg and /dev/null differ diff --git a/sounds/voice/default/demojump1.ogg b/sounds/voice/default/demojump1.ogg new file mode 100644 index 000000000..78523a103 Binary files /dev/null and b/sounds/voice/default/demojump1.ogg differ diff --git a/sounds/voice/default/demojump2.ogg b/sounds/voice/default/demojump2.ogg new file mode 100644 index 000000000..f249dedb0 Binary files /dev/null and b/sounds/voice/default/demojump2.ogg differ diff --git a/sounds/voice/default/demojump3.ogg b/sounds/voice/default/demojump3.ogg new file mode 100644 index 000000000..6833675fa Binary files /dev/null and b/sounds/voice/default/demojump3.ogg differ diff --git a/sounds/voice/default/demojump4.ogg b/sounds/voice/default/demojump4.ogg new file mode 100644 index 000000000..c48cb14ae Binary files /dev/null and b/sounds/voice/default/demojump4.ogg differ diff --git a/sounds/voice/default/demojump5.ogg b/sounds/voice/default/demojump5.ogg new file mode 100644 index 000000000..a005c1d3b Binary files /dev/null and b/sounds/voice/default/demojump5.ogg differ diff --git a/sounds/voice/default/demokiss1.ogg b/sounds/voice/default/demokiss1.ogg new file mode 100644 index 000000000..6f5a1ed8e Binary files /dev/null and b/sounds/voice/default/demokiss1.ogg differ diff --git a/sounds/voice/default/demokiss10.ogg b/sounds/voice/default/demokiss10.ogg new file mode 100644 index 000000000..dcebdabfb Binary files /dev/null and b/sounds/voice/default/demokiss10.ogg differ diff --git a/sounds/voice/default/demokiss2.ogg b/sounds/voice/default/demokiss2.ogg new file mode 100644 index 000000000..fd441594a Binary files /dev/null and b/sounds/voice/default/demokiss2.ogg differ diff --git a/sounds/voice/default/demokiss3.ogg b/sounds/voice/default/demokiss3.ogg new file mode 100644 index 000000000..ec817798b Binary files /dev/null and b/sounds/voice/default/demokiss3.ogg differ diff --git a/sounds/voice/default/demokiss4.ogg b/sounds/voice/default/demokiss4.ogg new file mode 100644 index 000000000..aa76ad82b Binary files /dev/null and b/sounds/voice/default/demokiss4.ogg differ diff --git a/sounds/voice/default/demokiss5.ogg b/sounds/voice/default/demokiss5.ogg new file mode 100644 index 000000000..3ca86bf41 Binary files /dev/null and b/sounds/voice/default/demokiss5.ogg differ diff --git a/sounds/voice/default/demokiss6.ogg b/sounds/voice/default/demokiss6.ogg new file mode 100644 index 000000000..bd461152e Binary files /dev/null and b/sounds/voice/default/demokiss6.ogg differ diff --git a/sounds/voice/default/demokiss7.ogg b/sounds/voice/default/demokiss7.ogg new file mode 100644 index 000000000..1aec5e72e Binary files /dev/null and b/sounds/voice/default/demokiss7.ogg differ diff --git a/sounds/voice/default/demokiss8.ogg b/sounds/voice/default/demokiss8.ogg new file mode 100644 index 000000000..5dbb8606e Binary files /dev/null and b/sounds/voice/default/demokiss8.ogg differ diff --git a/sounds/voice/default/demokiss9.ogg b/sounds/voice/default/demokiss9.ogg new file mode 100644 index 000000000..9c2064c02 Binary files /dev/null and b/sounds/voice/default/demokiss9.ogg differ diff --git a/sounds/voice/default/demolopain1.ogg b/sounds/voice/default/demolopain1.ogg index 2387fef3e..e69d30fbb 100644 Binary files a/sounds/voice/default/demolopain1.ogg and b/sounds/voice/default/demolopain1.ogg differ diff --git a/sounds/voice/default/demolopain2.ogg b/sounds/voice/default/demolopain2.ogg index 5c4cd0473..03bf86f27 100644 Binary files a/sounds/voice/default/demolopain2.ogg and b/sounds/voice/default/demolopain2.ogg differ diff --git a/sounds/voice/default/demolopain3.ogg b/sounds/voice/default/demolopain3.ogg deleted file mode 100644 index 060ed5466..000000000 Binary files a/sounds/voice/default/demolopain3.ogg and /dev/null differ diff --git a/sounds/voice/default/demolopain4.ogg b/sounds/voice/default/demolopain4.ogg deleted file mode 100644 index fdeb76303..000000000 Binary files a/sounds/voice/default/demolopain4.ogg and /dev/null differ diff --git a/sounds/voice/default/demolopain5.ogg b/sounds/voice/default/demolopain5.ogg deleted file mode 100644 index 46e7b5c00..000000000 Binary files a/sounds/voice/default/demolopain5.ogg and /dev/null differ diff --git a/sounds/voice/default/demopain1.ogg b/sounds/voice/default/demopain1.ogg index e7cc6f7da..1dc0163d3 100644 Binary files a/sounds/voice/default/demopain1.ogg and b/sounds/voice/default/demopain1.ogg differ diff --git a/sounds/voice/default/demopain2.ogg b/sounds/voice/default/demopain2.ogg index d5fcfa9b6..8a7b5fbf5 100644 Binary files a/sounds/voice/default/demopain2.ogg and b/sounds/voice/default/demopain2.ogg differ diff --git a/sounds/voice/default/demopain3.ogg b/sounds/voice/default/demopain3.ogg index 6dfc9a717..0c45500c6 100644 Binary files a/sounds/voice/default/demopain3.ogg and b/sounds/voice/default/demopain3.ogg differ diff --git a/sounds/voice/default/demopain4.ogg b/sounds/voice/default/demopain4.ogg deleted file mode 100644 index cb243b07a..000000000 Binary files a/sounds/voice/default/demopain4.ogg and /dev/null differ diff --git a/sounds/voice/default/demopain5.ogg b/sounds/voice/default/demopain5.ogg deleted file mode 100644 index 2173828ae..000000000 Binary files a/sounds/voice/default/demopain5.ogg and /dev/null differ diff --git a/sounds/voice/default/demopain6.ogg b/sounds/voice/default/demopain6.ogg deleted file mode 100644 index 554703a52..000000000 Binary files a/sounds/voice/default/demopain6.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demousegrunt1.ogg b/sounds/voice/default/demousegrunt1.ogg similarity index 100% rename from sounds/voice/default/va/demousegrunt1.ogg rename to sounds/voice/default/demousegrunt1.ogg diff --git a/sounds/voice/default/va/demousegrunt2.ogg b/sounds/voice/default/demousegrunt2.ogg similarity index 100% rename from sounds/voice/default/va/demousegrunt2.ogg rename to sounds/voice/default/demousegrunt2.ogg diff --git a/sounds/voice/default/va/demousegrunt3.ogg b/sounds/voice/default/demousegrunt3.ogg similarity index 100% rename from sounds/voice/default/va/demousegrunt3.ogg rename to sounds/voice/default/demousegrunt3.ogg diff --git a/sounds/voice/default/va/demousegrunt4.ogg b/sounds/voice/default/demousegrunt4.ogg similarity index 100% rename from sounds/voice/default/va/demousegrunt4.ogg rename to sounds/voice/default/demousegrunt4.ogg diff --git a/sounds/voice/default/va/demoasskill1.ogg b/sounds/voice/default/va/demoasskill1.ogg new file mode 100644 index 000000000..fb1ff4323 Binary files /dev/null and b/sounds/voice/default/va/demoasskill1.ogg differ diff --git a/sounds/voice/default/va/demoasskill2.ogg b/sounds/voice/default/va/demoasskill2.ogg new file mode 100644 index 000000000..48e7c48b8 Binary files /dev/null and b/sounds/voice/default/va/demoasskill2.ogg differ diff --git a/sounds/voice/default/va/demoasskill3.ogg b/sounds/voice/default/va/demoasskill3.ogg new file mode 100644 index 000000000..b5ca75e9b Binary files /dev/null and b/sounds/voice/default/va/demoasskill3.ogg differ diff --git a/sounds/voice/default/va/demoballskill1.ogg b/sounds/voice/default/va/demoballskill1.ogg new file mode 100644 index 000000000..60f6035d7 Binary files /dev/null and b/sounds/voice/default/va/demoballskill1.ogg differ diff --git a/sounds/voice/default/va/demoballskill2.ogg b/sounds/voice/default/va/demoballskill2.ogg new file mode 100644 index 000000000..1c55fa300 Binary files /dev/null and b/sounds/voice/default/va/demoballskill2.ogg differ diff --git a/sounds/voice/default/va/demoblast1.ogg b/sounds/voice/default/va/demoblast1.ogg new file mode 100644 index 000000000..cd8faa631 Binary files /dev/null and b/sounds/voice/default/va/demoblast1.ogg differ diff --git a/sounds/voice/default/va/demoblast2.ogg b/sounds/voice/default/va/demoblast2.ogg new file mode 100644 index 000000000..0686f9b27 Binary files /dev/null and b/sounds/voice/default/va/demoblast2.ogg differ diff --git a/sounds/voice/default/va/demoblast3.ogg b/sounds/voice/default/va/demoblast3.ogg new file mode 100644 index 000000000..0cfc3f69e Binary files /dev/null and b/sounds/voice/default/va/demoblast3.ogg differ diff --git a/sounds/voice/default/va/demoblast4.ogg b/sounds/voice/default/va/demoblast4.ogg new file mode 100644 index 000000000..2129335e6 Binary files /dev/null and b/sounds/voice/default/va/demoblast4.ogg differ diff --git a/sounds/voice/default/va/demoblast5.ogg b/sounds/voice/default/va/demoblast5.ogg new file mode 100644 index 000000000..03320f45e Binary files /dev/null and b/sounds/voice/default/va/demoblast5.ogg differ diff --git a/sounds/voice/default/va/demoblast6.ogg b/sounds/voice/default/va/demoblast6.ogg new file mode 100644 index 000000000..f00ea6617 Binary files /dev/null and b/sounds/voice/default/va/demoblast6.ogg differ diff --git a/sounds/voice/default/va/demobustkill.ogg b/sounds/voice/default/va/demobustkill.ogg new file mode 100644 index 000000000..64f5a22cf Binary files /dev/null and b/sounds/voice/default/va/demobustkill.ogg differ diff --git a/sounds/voice/default/va/democybully.ogg b/sounds/voice/default/va/democybully.ogg new file mode 100644 index 000000000..e940d1180 Binary files /dev/null and b/sounds/voice/default/va/democybully.ogg differ diff --git a/sounds/voice/default/va/demoeat1.ogg b/sounds/voice/default/va/demoeat1.ogg new file mode 100644 index 000000000..4f91708ab Binary files /dev/null and b/sounds/voice/default/va/demoeat1.ogg differ diff --git a/sounds/voice/default/va/demoeat2.ogg b/sounds/voice/default/va/demoeat2.ogg new file mode 100644 index 000000000..1d27fa76d Binary files /dev/null and b/sounds/voice/default/va/demoeat2.ogg differ diff --git a/sounds/voice/default/va/demoeat3.ogg b/sounds/voice/default/va/demoeat3.ogg new file mode 100644 index 000000000..3004ab30e Binary files /dev/null and b/sounds/voice/default/va/demoeat3.ogg differ diff --git a/sounds/voice/default/va/demoeat4.ogg b/sounds/voice/default/va/demoeat4.ogg new file mode 100644 index 000000000..7e2ae4c92 Binary files /dev/null and b/sounds/voice/default/va/demoeat4.ogg differ diff --git a/sounds/voice/default/va/demoeat5.ogg b/sounds/voice/default/va/demoeat5.ogg new file mode 100644 index 000000000..26291631f Binary files /dev/null and b/sounds/voice/default/va/demoeat5.ogg differ diff --git a/sounds/voice/default/va/demofightstart22.ogg b/sounds/voice/default/va/demofightstart22.ogg new file mode 100644 index 000000000..338244488 Binary files /dev/null and b/sounds/voice/default/va/demofightstart22.ogg differ diff --git a/sounds/voice/default/va/demogetheavymahsheengun.ogg b/sounds/voice/default/va/demogetheavymahsheengun.ogg index 14aa34d0a..026cfef8f 100644 Binary files a/sounds/voice/default/va/demogetheavymahsheengun.ogg and b/sounds/voice/default/va/demogetheavymahsheengun.ogg differ diff --git a/sounds/voice/default/va/demogethit10.ogg b/sounds/voice/default/va/demogethit10.ogg index 0ed07a01b..37626519c 100644 Binary files a/sounds/voice/default/va/demogethit10.ogg and b/sounds/voice/default/va/demogethit10.ogg differ diff --git a/sounds/voice/default/va/demogethit20.ogg b/sounds/voice/default/va/demogethit20.ogg new file mode 100644 index 000000000..418169802 Binary files /dev/null and b/sounds/voice/default/va/demogethit20.ogg differ diff --git a/sounds/voice/default/va/demogetpusherweapon.ogg b/sounds/voice/default/va/demogetpusherweapon.ogg deleted file mode 100644 index e6271ec91..000000000 Binary files a/sounds/voice/default/va/demogetpusherweapon.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demogetquadravol.ogg b/sounds/voice/default/va/demogetquadravol.ogg index b1b4cf757..c317ae6cc 100644 Binary files a/sounds/voice/default/va/demogetquadravol.ogg and b/sounds/voice/default/va/demogetquadravol.ogg differ diff --git a/sounds/voice/default/va/demohurtfloor1.ogg b/sounds/voice/default/va/demohurtfloor1.ogg new file mode 100644 index 000000000..6a8b819a3 Binary files /dev/null and b/sounds/voice/default/va/demohurtfloor1.ogg differ diff --git a/sounds/voice/default/va/demohurtfloor2.ogg b/sounds/voice/default/va/demohurtfloor2.ogg new file mode 100644 index 000000000..8b04e6ba2 Binary files /dev/null and b/sounds/voice/default/va/demohurtfloor2.ogg differ diff --git a/sounds/voice/default/va/demohurtfloor3.ogg b/sounds/voice/default/va/demohurtfloor3.ogg new file mode 100644 index 000000000..9670d1a36 Binary files /dev/null and b/sounds/voice/default/va/demohurtfloor3.ogg differ diff --git a/sounds/voice/default/va/demohurtfloor4.ogg b/sounds/voice/default/va/demohurtfloor4.ogg new file mode 100644 index 000000000..0ec7abad3 Binary files /dev/null and b/sounds/voice/default/va/demohurtfloor4.ogg differ diff --git a/sounds/voice/default/va/demohurtfloor5.ogg b/sounds/voice/default/va/demohurtfloor5.ogg new file mode 100644 index 000000000..95c5dc893 Binary files /dev/null and b/sounds/voice/default/va/demohurtfloor5.ogg differ diff --git a/sounds/voice/default/va/demoinvinciball1.ogg b/sounds/voice/default/va/demoinvinciball1.ogg new file mode 100644 index 000000000..315e48491 Binary files /dev/null and b/sounds/voice/default/va/demoinvinciball1.ogg differ diff --git a/sounds/voice/default/va/demoinvinciball2.ogg b/sounds/voice/default/va/demoinvinciball2.ogg new file mode 100644 index 000000000..6cc3704b2 Binary files /dev/null and b/sounds/voice/default/va/demoinvinciball2.ogg differ diff --git a/sounds/voice/default/va/demoinvinciball3.ogg b/sounds/voice/default/va/demoinvinciball3.ogg new file mode 100644 index 000000000..430c52e5d Binary files /dev/null and b/sounds/voice/default/va/demoinvinciball3.ogg differ diff --git a/sounds/voice/default/va/demolocked7.ogg b/sounds/voice/default/va/demolocked7.ogg new file mode 100644 index 000000000..2a38b9765 Binary files /dev/null and b/sounds/voice/default/va/demolocked7.ogg differ diff --git a/sounds/voice/default/va/demolustysuns.ogg b/sounds/voice/default/va/demolustysuns.ogg new file mode 100644 index 000000000..1ec3f5680 Binary files /dev/null and b/sounds/voice/default/va/demolustysuns.ogg differ diff --git a/sounds/voice/default/va/demomapstart15.ogg b/sounds/voice/default/va/demomapstart15.ogg new file mode 100644 index 000000000..2f00135a5 Binary files /dev/null and b/sounds/voice/default/va/demomapstart15.ogg differ diff --git a/sounds/voice/default/va/demomapstart16.ogg b/sounds/voice/default/va/demomapstart16.ogg new file mode 100644 index 000000000..c37dc3057 Binary files /dev/null and b/sounds/voice/default/va/demomapstart16.ogg differ diff --git a/sounds/voice/default/va/demomapstart17.ogg b/sounds/voice/default/va/demomapstart17.ogg new file mode 100644 index 000000000..3c47ec191 Binary files /dev/null and b/sounds/voice/default/va/demomapstart17.ogg differ diff --git a/sounds/voice/default/va/demomirror1.ogg b/sounds/voice/default/va/demomirror1.ogg new file mode 100644 index 000000000..28e60c7b8 Binary files /dev/null and b/sounds/voice/default/va/demomirror1.ogg differ diff --git a/sounds/voice/default/va/demomirror10.ogg b/sounds/voice/default/va/demomirror10.ogg new file mode 100644 index 000000000..075461359 Binary files /dev/null and b/sounds/voice/default/va/demomirror10.ogg differ diff --git a/sounds/voice/default/va/demomirror2.ogg b/sounds/voice/default/va/demomirror2.ogg new file mode 100644 index 000000000..210fa58be Binary files /dev/null and b/sounds/voice/default/va/demomirror2.ogg differ diff --git a/sounds/voice/default/va/demomirror3.ogg b/sounds/voice/default/va/demomirror3.ogg new file mode 100644 index 000000000..d8fe96346 Binary files /dev/null and b/sounds/voice/default/va/demomirror3.ogg differ diff --git a/sounds/voice/default/va/demomirror4.ogg b/sounds/voice/default/va/demomirror4.ogg new file mode 100644 index 000000000..25bce4a8d Binary files /dev/null and b/sounds/voice/default/va/demomirror4.ogg differ diff --git a/sounds/voice/default/va/demomirror5.ogg b/sounds/voice/default/va/demomirror5.ogg new file mode 100644 index 000000000..199690172 Binary files /dev/null and b/sounds/voice/default/va/demomirror5.ogg differ diff --git a/sounds/voice/default/va/demomirror6.ogg b/sounds/voice/default/va/demomirror6.ogg new file mode 100644 index 000000000..8acb96dd7 Binary files /dev/null and b/sounds/voice/default/va/demomirror6.ogg differ diff --git a/sounds/voice/default/va/demomirror7.ogg b/sounds/voice/default/va/demomirror7.ogg new file mode 100644 index 000000000..339a535ba Binary files /dev/null and b/sounds/voice/default/va/demomirror7.ogg differ diff --git a/sounds/voice/default/va/demomirror8.ogg b/sounds/voice/default/va/demomirror8.ogg new file mode 100644 index 000000000..720503221 Binary files /dev/null and b/sounds/voice/default/va/demomirror8.ogg differ diff --git a/sounds/voice/default/va/demomirror9.ogg b/sounds/voice/default/va/demomirror9.ogg new file mode 100644 index 000000000..895aaf9c2 Binary files /dev/null and b/sounds/voice/default/va/demomirror9.ogg differ diff --git a/sounds/voice/default/va/demomrflick1.ogg b/sounds/voice/default/va/demomrflick1.ogg new file mode 100644 index 000000000..c657c6f01 Binary files /dev/null and b/sounds/voice/default/va/demomrflick1.ogg differ diff --git a/sounds/voice/default/va/demomrflick2.ogg b/sounds/voice/default/va/demomrflick2.ogg new file mode 100644 index 000000000..9b2bddedc Binary files /dev/null and b/sounds/voice/default/va/demomrflick2.ogg differ diff --git a/sounds/voice/default/va/demomrtouch1.ogg b/sounds/voice/default/va/demomrtouch1.ogg new file mode 100644 index 000000000..3c2383253 Binary files /dev/null and b/sounds/voice/default/va/demomrtouch1.ogg differ diff --git a/sounds/voice/default/va/demomrtouch2.ogg b/sounds/voice/default/va/demomrtouch2.ogg new file mode 100644 index 000000000..f96746e23 Binary files /dev/null and b/sounds/voice/default/va/demomrtouch2.ogg differ diff --git a/sounds/voice/default/va/demomrtouch3.ogg b/sounds/voice/default/va/demomrtouch3.ogg new file mode 100644 index 000000000..13f8d7d6d Binary files /dev/null and b/sounds/voice/default/va/demomrtouch3.ogg differ diff --git a/sounds/voice/default/va/demomrtouch4.ogg b/sounds/voice/default/va/demomrtouch4.ogg new file mode 100644 index 000000000..91f597b71 Binary files /dev/null and b/sounds/voice/default/va/demomrtouch4.ogg differ diff --git a/sounds/voice/default/va/demomugget.ogg b/sounds/voice/default/va/demomugget.ogg new file mode 100644 index 000000000..5392619c5 Binary files /dev/null and b/sounds/voice/default/va/demomugget.ogg differ diff --git a/sounds/voice/default/va/demonutstart.ogg b/sounds/voice/default/va/demonutstart.ogg new file mode 100644 index 000000000..751dff2e4 Binary files /dev/null and b/sounds/voice/default/va/demonutstart.ogg differ diff --git a/sounds/voice/default/va/demoorigin11.ogg b/sounds/voice/default/va/demoorigin11.ogg new file mode 100644 index 000000000..07b42400c Binary files /dev/null and b/sounds/voice/default/va/demoorigin11.ogg differ diff --git a/sounds/voice/default/va/demoorigin12.ogg b/sounds/voice/default/va/demoorigin12.ogg new file mode 100644 index 000000000..c78189e52 Binary files /dev/null and b/sounds/voice/default/va/demoorigin12.ogg differ diff --git a/sounds/voice/default/va/demoorigin13.ogg b/sounds/voice/default/va/demoorigin13.ogg new file mode 100644 index 000000000..77239bd24 Binary files /dev/null and b/sounds/voice/default/va/demoorigin13.ogg differ diff --git a/sounds/voice/default/va/demoorigin14.ogg b/sounds/voice/default/va/demoorigin14.ogg new file mode 100644 index 000000000..6489a4cb4 Binary files /dev/null and b/sounds/voice/default/va/demoorigin14.ogg differ diff --git a/sounds/voice/default/va/demoorigin21.ogg b/sounds/voice/default/va/demoorigin21.ogg new file mode 100644 index 000000000..94dd91fb0 Binary files /dev/null and b/sounds/voice/default/va/demoorigin21.ogg differ diff --git a/sounds/voice/default/va/demoorigin22.ogg b/sounds/voice/default/va/demoorigin22.ogg new file mode 100644 index 000000000..a77bf4745 Binary files /dev/null and b/sounds/voice/default/va/demoorigin22.ogg differ diff --git a/sounds/voice/default/va/demoorigin23.ogg b/sounds/voice/default/va/demoorigin23.ogg new file mode 100644 index 000000000..4623d6b99 Binary files /dev/null and b/sounds/voice/default/va/demoorigin23.ogg differ diff --git a/sounds/voice/default/va/demoorigin24.ogg b/sounds/voice/default/va/demoorigin24.ogg new file mode 100644 index 000000000..6e1cd0014 Binary files /dev/null and b/sounds/voice/default/va/demoorigin24.ogg differ diff --git a/sounds/voice/default/va/demoorigin31.ogg b/sounds/voice/default/va/demoorigin31.ogg new file mode 100644 index 000000000..194049746 Binary files /dev/null and b/sounds/voice/default/va/demoorigin31.ogg differ diff --git a/sounds/voice/default/va/demoorigin32.ogg b/sounds/voice/default/va/demoorigin32.ogg new file mode 100644 index 000000000..67ba37218 Binary files /dev/null and b/sounds/voice/default/va/demoorigin32.ogg differ diff --git a/sounds/voice/default/va/demoorigin33.ogg b/sounds/voice/default/va/demoorigin33.ogg new file mode 100644 index 000000000..b73708417 Binary files /dev/null and b/sounds/voice/default/va/demoorigin33.ogg differ diff --git a/sounds/voice/default/va/demoorigin34.ogg b/sounds/voice/default/va/demoorigin34.ogg new file mode 100644 index 000000000..4d2f28488 Binary files /dev/null and b/sounds/voice/default/va/demoorigin34.ogg differ diff --git a/sounds/voice/default/va/demoorigin35.ogg b/sounds/voice/default/va/demoorigin35.ogg new file mode 100644 index 000000000..304872a74 Binary files /dev/null and b/sounds/voice/default/va/demoorigin35.ogg differ diff --git a/sounds/voice/default/va/demopetmashiro1.ogg b/sounds/voice/default/va/demopetandira1.ogg similarity index 100% rename from sounds/voice/default/va/demopetmashiro1.ogg rename to sounds/voice/default/va/demopetandira1.ogg diff --git a/sounds/voice/default/va/demopetmashiro2.ogg b/sounds/voice/default/va/demopetandira2.ogg similarity index 100% rename from sounds/voice/default/va/demopetmashiro2.ogg rename to sounds/voice/default/va/demopetandira2.ogg diff --git a/sounds/voice/default/va/demopetmashiro3.ogg b/sounds/voice/default/va/demopetandira3.ogg similarity index 100% rename from sounds/voice/default/va/demopetmashiro3.ogg rename to sounds/voice/default/va/demopetandira3.ogg diff --git a/sounds/voice/default/va/demopetmashiro4.ogg b/sounds/voice/default/va/demopetandira4.ogg similarity index 100% rename from sounds/voice/default/va/demopetmashiro4.ogg rename to sounds/voice/default/va/demopetandira4.ogg diff --git a/sounds/voice/default/va/demopetmashiro5.ogg b/sounds/voice/default/va/demopetandira5.ogg similarity index 100% rename from sounds/voice/default/va/demopetmashiro5.ogg rename to sounds/voice/default/va/demopetandira5.ogg diff --git a/sounds/voice/default/va/demopetmashiro6.ogg b/sounds/voice/default/va/demopetandira6.ogg similarity index 100% rename from sounds/voice/default/va/demopetmashiro6.ogg rename to sounds/voice/default/va/demopetandira6.ogg diff --git a/sounds/voice/default/va/demopetmashiro7.ogg b/sounds/voice/default/va/demopetandira7.ogg similarity index 100% rename from sounds/voice/default/va/demopetmashiro7.ogg rename to sounds/voice/default/va/demopetandira7.ogg diff --git a/sounds/voice/default/va/demopetcaco1.ogg b/sounds/voice/default/va/demopetcaco1.ogg new file mode 100644 index 000000000..e2300731d Binary files /dev/null and b/sounds/voice/default/va/demopetcaco1.ogg differ diff --git a/sounds/voice/default/va/demopetcaco2.ogg b/sounds/voice/default/va/demopetcaco2.ogg new file mode 100644 index 000000000..aaeca7e90 Binary files /dev/null and b/sounds/voice/default/va/demopetcaco2.ogg differ diff --git a/sounds/voice/default/va/demopetcaco3.ogg b/sounds/voice/default/va/demopetcaco3.ogg new file mode 100644 index 000000000..4c8f2f17d Binary files /dev/null and b/sounds/voice/default/va/demopetcaco3.ogg differ diff --git a/sounds/voice/default/va/demopethdoom1.ogg b/sounds/voice/default/va/demopethdoom1.ogg deleted file mode 100644 index e6048cdcf..000000000 Binary files a/sounds/voice/default/va/demopethdoom1.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoom2.ogg b/sounds/voice/default/va/demopethdoom2.ogg deleted file mode 100644 index 5cedf0a6d..000000000 Binary files a/sounds/voice/default/va/demopethdoom2.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoom3.ogg b/sounds/voice/default/va/demopethdoom3.ogg deleted file mode 100644 index 9c987b41a..000000000 Binary files a/sounds/voice/default/va/demopethdoom3.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoom4.ogg b/sounds/voice/default/va/demopethdoom4.ogg deleted file mode 100644 index 6d1bb9497..000000000 Binary files a/sounds/voice/default/va/demopethdoom4.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoom5.ogg b/sounds/voice/default/va/demopethdoom5.ogg deleted file mode 100644 index b4d21c20a..000000000 Binary files a/sounds/voice/default/va/demopethdoom5.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoom6.ogg b/sounds/voice/default/va/demopethdoom6.ogg deleted file mode 100644 index 1e8156510..000000000 Binary files a/sounds/voice/default/va/demopethdoom6.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoom7.ogg b/sounds/voice/default/va/demopethdoom7.ogg deleted file mode 100644 index dc1ecb31c..000000000 Binary files a/sounds/voice/default/va/demopethdoom7.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoom8.ogg b/sounds/voice/default/va/demopethdoom8.ogg deleted file mode 100644 index 1093a5695..000000000 Binary files a/sounds/voice/default/va/demopethdoom8.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoom9.ogg b/sounds/voice/default/va/demopethdoom9.ogg deleted file mode 100644 index 9eafca619..000000000 Binary files a/sounds/voice/default/va/demopethdoom9.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish1.ogg b/sounds/voice/default/va/demopethdoomfinish1.ogg deleted file mode 100644 index d8b24e7ff..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish1.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish2.ogg b/sounds/voice/default/va/demopethdoomfinish2.ogg deleted file mode 100644 index f7745a35b..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish2.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish3.ogg b/sounds/voice/default/va/demopethdoomfinish3.ogg deleted file mode 100644 index ebc1a79c5..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish3.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish4.ogg b/sounds/voice/default/va/demopethdoomfinish4.ogg deleted file mode 100644 index 71b023b20..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish4.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish5.ogg b/sounds/voice/default/va/demopethdoomfinish5.ogg deleted file mode 100644 index 1fc98f38d..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish5.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish6.ogg b/sounds/voice/default/va/demopethdoomfinish6.ogg deleted file mode 100644 index 8813a7706..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish6.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish7.ogg b/sounds/voice/default/va/demopethdoomfinish7.ogg deleted file mode 100644 index b1b0147c8..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish7.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish8.ogg b/sounds/voice/default/va/demopethdoomfinish8.ogg deleted file mode 100644 index 3577dc35a..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish8.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demopethdoomfinish9.ogg b/sounds/voice/default/va/demopethdoomfinish9.ogg deleted file mode 100644 index f2667249f..000000000 Binary files a/sounds/voice/default/va/demopethdoomfinish9.ogg and /dev/null differ diff --git a/sounds/voice/default/va/demoscorekill26.ogg b/sounds/voice/default/va/demoscorekill26.ogg new file mode 100644 index 000000000..37e216644 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill26.ogg differ diff --git a/sounds/voice/default/va/demoscorekill27.ogg b/sounds/voice/default/va/demoscorekill27.ogg new file mode 100644 index 000000000..f8fea943a Binary files /dev/null and b/sounds/voice/default/va/demoscorekill27.ogg differ diff --git a/sounds/voice/default/va/demoscorekill28.ogg b/sounds/voice/default/va/demoscorekill28.ogg new file mode 100644 index 000000000..f8534c097 Binary files /dev/null and b/sounds/voice/default/va/demoscorekill28.ogg differ diff --git a/sounds/voice/default/va/demosheenkill1.ogg b/sounds/voice/default/va/demosheenkill1.ogg new file mode 100644 index 000000000..a4aa0c6ff Binary files /dev/null and b/sounds/voice/default/va/demosheenkill1.ogg differ diff --git a/sounds/voice/default/va/demosheenkill2.ogg b/sounds/voice/default/va/demosheenkill2.ogg new file mode 100644 index 000000000..7ea631f2a Binary files /dev/null and b/sounds/voice/default/va/demosheenkill2.ogg differ diff --git a/sounds/voice/default/va/demosheenspecial.ogg b/sounds/voice/default/va/demosheenspecial.ogg new file mode 100644 index 000000000..53ef96d9c Binary files /dev/null and b/sounds/voice/default/va/demosheenspecial.ogg differ diff --git a/sounds/voice/default/va/demoskullget.ogg b/sounds/voice/default/va/demoskullget.ogg new file mode 100644 index 000000000..3ebcedd79 Binary files /dev/null and b/sounds/voice/default/va/demoskullget.ogg differ diff --git a/sounds/voice/default/va/demosmooch1.ogg b/sounds/voice/default/va/demosmooch1.ogg new file mode 100644 index 000000000..097db3279 Binary files /dev/null and b/sounds/voice/default/va/demosmooch1.ogg differ diff --git a/sounds/voice/default/va/demosmooch2.ogg b/sounds/voice/default/va/demosmooch2.ogg new file mode 100644 index 000000000..dddfae1b9 Binary files /dev/null and b/sounds/voice/default/va/demosmooch2.ogg differ diff --git a/sounds/voice/default/va/demosmooch3.ogg b/sounds/voice/default/va/demosmooch3.ogg new file mode 100644 index 000000000..67e61c4c4 Binary files /dev/null and b/sounds/voice/default/va/demosmooch3.ogg differ diff --git a/sounds/voice/legacy/demodeath1.ogg b/sounds/voice/legacy/demodeath1.ogg deleted file mode 100644 index bc213cd59..000000000 Binary files a/sounds/voice/legacy/demodeath1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demodeath2.ogg b/sounds/voice/legacy/demodeath2.ogg deleted file mode 100644 index b212e9a79..000000000 Binary files a/sounds/voice/legacy/demodeath2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demodeath3.ogg b/sounds/voice/legacy/demodeath3.ogg deleted file mode 100644 index 0e852002f..000000000 Binary files a/sounds/voice/legacy/demodeath3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demodeath4.ogg b/sounds/voice/legacy/demodeath4.ogg deleted file mode 100644 index 1c1a4f872..000000000 Binary files a/sounds/voice/legacy/demodeath4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demodeath5.ogg b/sounds/voice/legacy/demodeath5.ogg deleted file mode 100644 index 1e1a25b45..000000000 Binary files a/sounds/voice/legacy/demodeath5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demogrunt1.ogg b/sounds/voice/legacy/demogrunt1.ogg deleted file mode 100644 index bd3d818df..000000000 Binary files a/sounds/voice/legacy/demogrunt1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demogrunt2.ogg b/sounds/voice/legacy/demogrunt2.ogg deleted file mode 100644 index 2c9412e36..000000000 Binary files a/sounds/voice/legacy/demogrunt2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demogrunt3.ogg b/sounds/voice/legacy/demogrunt3.ogg deleted file mode 100644 index 5e80c06af..000000000 Binary files a/sounds/voice/legacy/demogrunt3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demogrunt4.ogg b/sounds/voice/legacy/demogrunt4.ogg deleted file mode 100644 index 03de92028..000000000 Binary files a/sounds/voice/legacy/demogrunt4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demogrunt5.ogg b/sounds/voice/legacy/demogrunt5.ogg deleted file mode 100644 index a6d53a1e9..000000000 Binary files a/sounds/voice/legacy/demogrunt5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demogrunt6.ogg b/sounds/voice/legacy/demogrunt6.ogg deleted file mode 100644 index 06503e5d2..000000000 Binary files a/sounds/voice/legacy/demogrunt6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demohipain1.ogg b/sounds/voice/legacy/demohipain1.ogg deleted file mode 100644 index 8488011d7..000000000 Binary files a/sounds/voice/legacy/demohipain1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demohipain2.ogg b/sounds/voice/legacy/demohipain2.ogg deleted file mode 100644 index 1acdeef91..000000000 Binary files a/sounds/voice/legacy/demohipain2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demohipain3.ogg b/sounds/voice/legacy/demohipain3.ogg deleted file mode 100644 index 986ded96d..000000000 Binary files a/sounds/voice/legacy/demohipain3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demohipain4.ogg b/sounds/voice/legacy/demohipain4.ogg deleted file mode 100644 index f0f86f45e..000000000 Binary files a/sounds/voice/legacy/demohipain4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demohipain5.ogg b/sounds/voice/legacy/demohipain5.ogg deleted file mode 100644 index 89d165c08..000000000 Binary files a/sounds/voice/legacy/demohipain5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demolopain1.ogg b/sounds/voice/legacy/demolopain1.ogg deleted file mode 100644 index 2387fef3e..000000000 Binary files a/sounds/voice/legacy/demolopain1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demolopain2.ogg b/sounds/voice/legacy/demolopain2.ogg deleted file mode 100644 index 5c4cd0473..000000000 Binary files a/sounds/voice/legacy/demolopain2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demolopain3.ogg b/sounds/voice/legacy/demolopain3.ogg deleted file mode 100644 index 060ed5466..000000000 Binary files a/sounds/voice/legacy/demolopain3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demolopain4.ogg b/sounds/voice/legacy/demolopain4.ogg deleted file mode 100644 index fdeb76303..000000000 Binary files a/sounds/voice/legacy/demolopain4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demolopain5.ogg b/sounds/voice/legacy/demolopain5.ogg deleted file mode 100644 index 46e7b5c00..000000000 Binary files a/sounds/voice/legacy/demolopain5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demopain1.ogg b/sounds/voice/legacy/demopain1.ogg deleted file mode 100644 index e7cc6f7da..000000000 Binary files a/sounds/voice/legacy/demopain1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demopain2.ogg b/sounds/voice/legacy/demopain2.ogg deleted file mode 100644 index d5fcfa9b6..000000000 Binary files a/sounds/voice/legacy/demopain2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demopain3.ogg b/sounds/voice/legacy/demopain3.ogg deleted file mode 100644 index 6dfc9a717..000000000 Binary files a/sounds/voice/legacy/demopain3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demopain4.ogg b/sounds/voice/legacy/demopain4.ogg deleted file mode 100644 index cb243b07a..000000000 Binary files a/sounds/voice/legacy/demopain4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demopain5.ogg b/sounds/voice/legacy/demopain5.ogg deleted file mode 100644 index 2173828ae..000000000 Binary files a/sounds/voice/legacy/demopain5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/demopain6.ogg b/sounds/voice/legacy/demopain6.ogg deleted file mode 100644 index 554703a52..000000000 Binary files a/sounds/voice/legacy/demopain6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart1.ogg b/sounds/voice/legacy/va/demofightstart1.ogg deleted file mode 100644 index 22265aedf..000000000 Binary files a/sounds/voice/legacy/va/demofightstart1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart10.ogg b/sounds/voice/legacy/va/demofightstart10.ogg deleted file mode 100644 index 74e0ca89a..000000000 Binary files a/sounds/voice/legacy/va/demofightstart10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart11.ogg b/sounds/voice/legacy/va/demofightstart11.ogg deleted file mode 100644 index 1ea62c223..000000000 Binary files a/sounds/voice/legacy/va/demofightstart11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart12.ogg b/sounds/voice/legacy/va/demofightstart12.ogg deleted file mode 100644 index ad95c08ff..000000000 Binary files a/sounds/voice/legacy/va/demofightstart12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart13.ogg b/sounds/voice/legacy/va/demofightstart13.ogg deleted file mode 100644 index 60ef457f4..000000000 Binary files a/sounds/voice/legacy/va/demofightstart13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart14.ogg b/sounds/voice/legacy/va/demofightstart14.ogg deleted file mode 100644 index 4ff678500..000000000 Binary files a/sounds/voice/legacy/va/demofightstart14.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart15.ogg b/sounds/voice/legacy/va/demofightstart15.ogg deleted file mode 100644 index 11a695227..000000000 Binary files a/sounds/voice/legacy/va/demofightstart15.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart16.ogg b/sounds/voice/legacy/va/demofightstart16.ogg deleted file mode 100644 index eb8a8e369..000000000 Binary files a/sounds/voice/legacy/va/demofightstart16.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart17.ogg b/sounds/voice/legacy/va/demofightstart17.ogg deleted file mode 100644 index 48545d863..000000000 Binary files a/sounds/voice/legacy/va/demofightstart17.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart18.ogg b/sounds/voice/legacy/va/demofightstart18.ogg deleted file mode 100644 index d5e653ef4..000000000 Binary files a/sounds/voice/legacy/va/demofightstart18.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart19.ogg b/sounds/voice/legacy/va/demofightstart19.ogg deleted file mode 100644 index e25b988bd..000000000 Binary files a/sounds/voice/legacy/va/demofightstart19.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart2.ogg b/sounds/voice/legacy/va/demofightstart2.ogg deleted file mode 100644 index 7c7e5dc3f..000000000 Binary files a/sounds/voice/legacy/va/demofightstart2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart20.ogg b/sounds/voice/legacy/va/demofightstart20.ogg deleted file mode 100644 index ba0ec0b34..000000000 Binary files a/sounds/voice/legacy/va/demofightstart20.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart21.ogg b/sounds/voice/legacy/va/demofightstart21.ogg deleted file mode 100644 index 138f1645d..000000000 Binary files a/sounds/voice/legacy/va/demofightstart21.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart3.ogg b/sounds/voice/legacy/va/demofightstart3.ogg deleted file mode 100644 index 7aa1e0303..000000000 Binary files a/sounds/voice/legacy/va/demofightstart3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart4.ogg b/sounds/voice/legacy/va/demofightstart4.ogg deleted file mode 100644 index 57e1472d7..000000000 Binary files a/sounds/voice/legacy/va/demofightstart4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart5.ogg b/sounds/voice/legacy/va/demofightstart5.ogg deleted file mode 100644 index 49c960bf2..000000000 Binary files a/sounds/voice/legacy/va/demofightstart5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart6.ogg b/sounds/voice/legacy/va/demofightstart6.ogg deleted file mode 100644 index 9cdaacd8e..000000000 Binary files a/sounds/voice/legacy/va/demofightstart6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart7.ogg b/sounds/voice/legacy/va/demofightstart7.ogg deleted file mode 100644 index d03194503..000000000 Binary files a/sounds/voice/legacy/va/demofightstart7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart8.ogg b/sounds/voice/legacy/va/demofightstart8.ogg deleted file mode 100644 index 28cce0275..000000000 Binary files a/sounds/voice/legacy/va/demofightstart8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofightstart9.ogg b/sounds/voice/legacy/va/demofightstart9.ogg deleted file mode 100644 index 485226d3e..000000000 Binary files a/sounds/voice/legacy/va/demofightstart9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret1.ogg b/sounds/voice/legacy/va/demofindsecret1.ogg deleted file mode 100644 index 614482ce0..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret10.ogg b/sounds/voice/legacy/va/demofindsecret10.ogg deleted file mode 100644 index c66698303..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret11.ogg b/sounds/voice/legacy/va/demofindsecret11.ogg deleted file mode 100644 index e490535d8..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret12.ogg b/sounds/voice/legacy/va/demofindsecret12.ogg deleted file mode 100644 index 286b9fb08..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret13.ogg b/sounds/voice/legacy/va/demofindsecret13.ogg deleted file mode 100644 index 76783ec5c..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret2.ogg b/sounds/voice/legacy/va/demofindsecret2.ogg deleted file mode 100644 index 0587666ea..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret3.ogg b/sounds/voice/legacy/va/demofindsecret3.ogg deleted file mode 100644 index 96591964a..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret4.ogg b/sounds/voice/legacy/va/demofindsecret4.ogg deleted file mode 100644 index b53a05b45..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret5.ogg b/sounds/voice/legacy/va/demofindsecret5.ogg deleted file mode 100644 index 7bc1d38da..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret6.ogg b/sounds/voice/legacy/va/demofindsecret6.ogg deleted file mode 100644 index 706de23b0..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret7.ogg b/sounds/voice/legacy/va/demofindsecret7.ogg deleted file mode 100644 index 025a7a3a2..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret8.ogg b/sounds/voice/legacy/va/demofindsecret8.ogg deleted file mode 100644 index d95d36ad2..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofindsecret9.ogg b/sounds/voice/legacy/va/demofindsecret9.ogg deleted file mode 100644 index 8e955cbb0..000000000 Binary files a/sounds/voice/legacy/va/demofindsecret9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendhit1.ogg b/sounds/voice/legacy/va/demofriendhit1.ogg deleted file mode 100644 index 2ea33fec1..000000000 Binary files a/sounds/voice/legacy/va/demofriendhit1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendhit2.ogg b/sounds/voice/legacy/va/demofriendhit2.ogg deleted file mode 100644 index 9507a1c40..000000000 Binary files a/sounds/voice/legacy/va/demofriendhit2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendhit3.ogg b/sounds/voice/legacy/va/demofriendhit3.ogg deleted file mode 100644 index 03fcd3c69..000000000 Binary files a/sounds/voice/legacy/va/demofriendhit3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendhit4.ogg b/sounds/voice/legacy/va/demofriendhit4.ogg deleted file mode 100644 index 47d7e1e17..000000000 Binary files a/sounds/voice/legacy/va/demofriendhit4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendhit5.ogg b/sounds/voice/legacy/va/demofriendhit5.ogg deleted file mode 100644 index b0717a870..000000000 Binary files a/sounds/voice/legacy/va/demofriendhit5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendhit6.ogg b/sounds/voice/legacy/va/demofriendhit6.ogg deleted file mode 100644 index cd7ca1eb0..000000000 Binary files a/sounds/voice/legacy/va/demofriendhit6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendhit7.ogg b/sounds/voice/legacy/va/demofriendhit7.ogg deleted file mode 100644 index f08f1520c..000000000 Binary files a/sounds/voice/legacy/va/demofriendhit7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendkill1.ogg b/sounds/voice/legacy/va/demofriendkill1.ogg deleted file mode 100644 index 023dd00d1..000000000 Binary files a/sounds/voice/legacy/va/demofriendkill1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendkill2.ogg b/sounds/voice/legacy/va/demofriendkill2.ogg deleted file mode 100644 index d89404530..000000000 Binary files a/sounds/voice/legacy/va/demofriendkill2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendkill3.ogg b/sounds/voice/legacy/va/demofriendkill3.ogg deleted file mode 100644 index 8e53afdfc..000000000 Binary files a/sounds/voice/legacy/va/demofriendkill3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demofriendkill4.ogg b/sounds/voice/legacy/va/demofriendkill4.ogg deleted file mode 100644 index 91df728b9..000000000 Binary files a/sounds/voice/legacy/va/demofriendkill4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit1.ogg b/sounds/voice/legacy/va/demogethit1.ogg deleted file mode 100644 index 875db6aa8..000000000 Binary files a/sounds/voice/legacy/va/demogethit1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit10.ogg b/sounds/voice/legacy/va/demogethit10.ogg deleted file mode 100644 index 6e4437b2c..000000000 Binary files a/sounds/voice/legacy/va/demogethit10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit11.ogg b/sounds/voice/legacy/va/demogethit11.ogg deleted file mode 100644 index dfe3725a7..000000000 Binary files a/sounds/voice/legacy/va/demogethit11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit12.ogg b/sounds/voice/legacy/va/demogethit12.ogg deleted file mode 100644 index b19ede861..000000000 Binary files a/sounds/voice/legacy/va/demogethit12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit13.ogg b/sounds/voice/legacy/va/demogethit13.ogg deleted file mode 100644 index 6a9a11fb7..000000000 Binary files a/sounds/voice/legacy/va/demogethit13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit14.ogg b/sounds/voice/legacy/va/demogethit14.ogg deleted file mode 100644 index 340942703..000000000 Binary files a/sounds/voice/legacy/va/demogethit14.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit15.ogg b/sounds/voice/legacy/va/demogethit15.ogg deleted file mode 100644 index 43d873fca..000000000 Binary files a/sounds/voice/legacy/va/demogethit15.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit16.ogg b/sounds/voice/legacy/va/demogethit16.ogg deleted file mode 100644 index b1dea88a0..000000000 Binary files a/sounds/voice/legacy/va/demogethit16.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit17.ogg b/sounds/voice/legacy/va/demogethit17.ogg deleted file mode 100644 index 5f2b4c539..000000000 Binary files a/sounds/voice/legacy/va/demogethit17.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit18.ogg b/sounds/voice/legacy/va/demogethit18.ogg deleted file mode 100644 index 93da023a7..000000000 Binary files a/sounds/voice/legacy/va/demogethit18.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit19.ogg b/sounds/voice/legacy/va/demogethit19.ogg deleted file mode 100644 index 97a1c8046..000000000 Binary files a/sounds/voice/legacy/va/demogethit19.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit2.ogg b/sounds/voice/legacy/va/demogethit2.ogg deleted file mode 100644 index a7091b8d8..000000000 Binary files a/sounds/voice/legacy/va/demogethit2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit3.ogg b/sounds/voice/legacy/va/demogethit3.ogg deleted file mode 100644 index ebffc1560..000000000 Binary files a/sounds/voice/legacy/va/demogethit3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit4.ogg b/sounds/voice/legacy/va/demogethit4.ogg deleted file mode 100644 index cb8996770..000000000 Binary files a/sounds/voice/legacy/va/demogethit4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit5.ogg b/sounds/voice/legacy/va/demogethit5.ogg deleted file mode 100644 index c319c0335..000000000 Binary files a/sounds/voice/legacy/va/demogethit5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit6.ogg b/sounds/voice/legacy/va/demogethit6.ogg deleted file mode 100644 index 7278052e2..000000000 Binary files a/sounds/voice/legacy/va/demogethit6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit7.ogg b/sounds/voice/legacy/va/demogethit7.ogg deleted file mode 100644 index 03ac2f371..000000000 Binary files a/sounds/voice/legacy/va/demogethit7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit8.ogg b/sounds/voice/legacy/va/demogethit8.ogg deleted file mode 100644 index 30d293a72..000000000 Binary files a/sounds/voice/legacy/va/demogethit8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogethit9.ogg b/sounds/voice/legacy/va/demogethit9.ogg deleted file mode 100644 index 563403b20..000000000 Binary files a/sounds/voice/legacy/va/demogethit9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon1.ogg b/sounds/voice/legacy/va/demogetweapon1.ogg deleted file mode 100644 index 3931fed13..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon10.ogg b/sounds/voice/legacy/va/demogetweapon10.ogg deleted file mode 100644 index 52850477c..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon11.ogg b/sounds/voice/legacy/va/demogetweapon11.ogg deleted file mode 100644 index 20082f64b..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon12.ogg b/sounds/voice/legacy/va/demogetweapon12.ogg deleted file mode 100644 index 6a10f122b..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon13.ogg b/sounds/voice/legacy/va/demogetweapon13.ogg deleted file mode 100644 index 0f2247639..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon2.ogg b/sounds/voice/legacy/va/demogetweapon2.ogg deleted file mode 100644 index d502c5704..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon3.ogg b/sounds/voice/legacy/va/demogetweapon3.ogg deleted file mode 100644 index 74fd36013..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon4.ogg b/sounds/voice/legacy/va/demogetweapon4.ogg deleted file mode 100644 index b9da9d1b4..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon5.ogg b/sounds/voice/legacy/va/demogetweapon5.ogg deleted file mode 100644 index b02688e29..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon6.ogg b/sounds/voice/legacy/va/demogetweapon6.ogg deleted file mode 100644 index f37a80c41..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon7.ogg b/sounds/voice/legacy/va/demogetweapon7.ogg deleted file mode 100644 index 377a07e88..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon8.ogg b/sounds/voice/legacy/va/demogetweapon8.ogg deleted file mode 100644 index 877d6408e..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogetweapon9.ogg b/sounds/voice/legacy/va/demogetweapon9.ogg deleted file mode 100644 index 216ec56d7..000000000 Binary files a/sounds/voice/legacy/va/demogetweapon9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogreet1.ogg b/sounds/voice/legacy/va/demogreet1.ogg deleted file mode 100644 index 404034fd0..000000000 Binary files a/sounds/voice/legacy/va/demogreet1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogreet2.ogg b/sounds/voice/legacy/va/demogreet2.ogg deleted file mode 100644 index 33dbfeaa1..000000000 Binary files a/sounds/voice/legacy/va/demogreet2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogreet3.ogg b/sounds/voice/legacy/va/demogreet3.ogg deleted file mode 100644 index a7f15a5f7..000000000 Binary files a/sounds/voice/legacy/va/demogreet3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogreet4.ogg b/sounds/voice/legacy/va/demogreet4.ogg deleted file mode 100644 index 5cef86174..000000000 Binary files a/sounds/voice/legacy/va/demogreet4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogreet5.ogg b/sounds/voice/legacy/va/demogreet5.ogg deleted file mode 100644 index 06e03f533..000000000 Binary files a/sounds/voice/legacy/va/demogreet5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogreet6.ogg b/sounds/voice/legacy/va/demogreet6.ogg deleted file mode 100644 index 9d0186545..000000000 Binary files a/sounds/voice/legacy/va/demogreet6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demogreet7.ogg b/sounds/voice/legacy/va/demogreet7.ogg deleted file mode 100644 index 6540318a7..000000000 Binary files a/sounds/voice/legacy/va/demogreet7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demohitfriend1.ogg b/sounds/voice/legacy/va/demohitfriend1.ogg deleted file mode 100644 index 65d09e478..000000000 Binary files a/sounds/voice/legacy/va/demohitfriend1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demohitfriend2.ogg b/sounds/voice/legacy/va/demohitfriend2.ogg deleted file mode 100644 index aafd6213c..000000000 Binary files a/sounds/voice/legacy/va/demohitfriend2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demohitfriend3.ogg b/sounds/voice/legacy/va/demohitfriend3.ogg deleted file mode 100644 index 38d8479ee..000000000 Binary files a/sounds/voice/legacy/va/demohitfriend3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demojammed1.ogg b/sounds/voice/legacy/va/demojammed1.ogg deleted file mode 100644 index f2109dd34..000000000 Binary files a/sounds/voice/legacy/va/demojammed1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demojammed2.ogg b/sounds/voice/legacy/va/demojammed2.ogg deleted file mode 100644 index 21cc38aff..000000000 Binary files a/sounds/voice/legacy/va/demojammed2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demojammed3.ogg b/sounds/voice/legacy/va/demojammed3.ogg deleted file mode 100644 index 0547420e6..000000000 Binary files a/sounds/voice/legacy/va/demojammed3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demojammed4.ogg b/sounds/voice/legacy/va/demojammed4.ogg deleted file mode 100644 index aae5b8351..000000000 Binary files a/sounds/voice/legacy/va/demojammed4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood1.ogg b/sounds/voice/legacy/va/demokoraxblood1.ogg deleted file mode 100644 index 727034ad7..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood10.ogg b/sounds/voice/legacy/va/demokoraxblood10.ogg deleted file mode 100644 index 57fa26b5c..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood11.ogg b/sounds/voice/legacy/va/demokoraxblood11.ogg deleted file mode 100644 index bf3e41dea..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood12.ogg b/sounds/voice/legacy/va/demokoraxblood12.ogg deleted file mode 100644 index b6d94bb55..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood13.ogg b/sounds/voice/legacy/va/demokoraxblood13.ogg deleted file mode 100644 index ef68ca5e9..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood2.ogg b/sounds/voice/legacy/va/demokoraxblood2.ogg deleted file mode 100644 index a46ebc99e..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood3.ogg b/sounds/voice/legacy/va/demokoraxblood3.ogg deleted file mode 100644 index 9c5fbcb25..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood4.ogg b/sounds/voice/legacy/va/demokoraxblood4.ogg deleted file mode 100644 index fd6329be5..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood5.ogg b/sounds/voice/legacy/va/demokoraxblood5.ogg deleted file mode 100644 index 936a31ba5..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood6.ogg b/sounds/voice/legacy/va/demokoraxblood6.ogg deleted file mode 100644 index 6a0fcb357..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood7.ogg b/sounds/voice/legacy/va/demokoraxblood7.ogg deleted file mode 100644 index c1561b2e3..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood8.ogg b/sounds/voice/legacy/va/demokoraxblood8.ogg deleted file mode 100644 index 74858278a..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxblood9.ogg b/sounds/voice/legacy/va/demokoraxblood9.ogg deleted file mode 100644 index 740dcb544..000000000 Binary files a/sounds/voice/legacy/va/demokoraxblood9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame1.ogg b/sounds/voice/legacy/va/demokoraxgame1.ogg deleted file mode 100644 index a3eb6ca13..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame10.ogg b/sounds/voice/legacy/va/demokoraxgame10.ogg deleted file mode 100644 index fa8a00a90..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame11.ogg b/sounds/voice/legacy/va/demokoraxgame11.ogg deleted file mode 100644 index 1fbc855c9..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame12.ogg b/sounds/voice/legacy/va/demokoraxgame12.ogg deleted file mode 100644 index a9f7593d0..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame13.ogg b/sounds/voice/legacy/va/demokoraxgame13.ogg deleted file mode 100644 index 08852b392..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame14.ogg b/sounds/voice/legacy/va/demokoraxgame14.ogg deleted file mode 100644 index 0b2ec7b9b..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame14.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame2.ogg b/sounds/voice/legacy/va/demokoraxgame2.ogg deleted file mode 100644 index 192d28ca8..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame3.ogg b/sounds/voice/legacy/va/demokoraxgame3.ogg deleted file mode 100644 index bb2d20c5f..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame4.ogg b/sounds/voice/legacy/va/demokoraxgame4.ogg deleted file mode 100644 index 5003ae032..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame5.ogg b/sounds/voice/legacy/va/demokoraxgame5.ogg deleted file mode 100644 index 4e68b5779..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame6.ogg b/sounds/voice/legacy/va/demokoraxgame6.ogg deleted file mode 100644 index cafd9dd04..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame7.ogg b/sounds/voice/legacy/va/demokoraxgame7.ogg deleted file mode 100644 index e886796ad..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame8.ogg b/sounds/voice/legacy/va/demokoraxgame8.ogg deleted file mode 100644 index 85714c0b8..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgame9.ogg b/sounds/voice/legacy/va/demokoraxgame9.ogg deleted file mode 100644 index 9d287cb7b..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgame9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet1.ogg b/sounds/voice/legacy/va/demokoraxgreet1.ogg deleted file mode 100644 index 27d274f9a..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet10.ogg b/sounds/voice/legacy/va/demokoraxgreet10.ogg deleted file mode 100644 index 682a2c3e2..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet11.ogg b/sounds/voice/legacy/va/demokoraxgreet11.ogg deleted file mode 100644 index 43daeb95a..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet12.ogg b/sounds/voice/legacy/va/demokoraxgreet12.ogg deleted file mode 100644 index b5ea26685..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet13.ogg b/sounds/voice/legacy/va/demokoraxgreet13.ogg deleted file mode 100644 index de7d673e1..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet2.ogg b/sounds/voice/legacy/va/demokoraxgreet2.ogg deleted file mode 100644 index b8fb6a03e..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet3.ogg b/sounds/voice/legacy/va/demokoraxgreet3.ogg deleted file mode 100644 index c56c54f97..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet4.ogg b/sounds/voice/legacy/va/demokoraxgreet4.ogg deleted file mode 100644 index 2f7d7ab63..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet5.ogg b/sounds/voice/legacy/va/demokoraxgreet5.ogg deleted file mode 100644 index 516d3ad95..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet6.ogg b/sounds/voice/legacy/va/demokoraxgreet6.ogg deleted file mode 100644 index 40a768656..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet7.ogg b/sounds/voice/legacy/va/demokoraxgreet7.ogg deleted file mode 100644 index 618079caa..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet8.ogg b/sounds/voice/legacy/va/demokoraxgreet8.ogg deleted file mode 100644 index be7255acf..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxgreet9.ogg b/sounds/voice/legacy/va/demokoraxgreet9.ogg deleted file mode 100644 index 80fe204f1..000000000 Binary files a/sounds/voice/legacy/va/demokoraxgreet9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters1.ogg b/sounds/voice/legacy/va/demokoraxmasters1.ogg deleted file mode 100644 index ee1aae882..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters2.ogg b/sounds/voice/legacy/va/demokoraxmasters2.ogg deleted file mode 100644 index 824e73d2a..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters3.ogg b/sounds/voice/legacy/va/demokoraxmasters3.ogg deleted file mode 100644 index c0d2b620d..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters4.ogg b/sounds/voice/legacy/va/demokoraxmasters4.ogg deleted file mode 100644 index b0b645c7f..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters5.ogg b/sounds/voice/legacy/va/demokoraxmasters5.ogg deleted file mode 100644 index d9664ae72..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters6.ogg b/sounds/voice/legacy/va/demokoraxmasters6.ogg deleted file mode 100644 index eaaa5e1b7..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters7.ogg b/sounds/voice/legacy/va/demokoraxmasters7.ogg deleted file mode 100644 index b7d0acd17..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters8.ogg b/sounds/voice/legacy/va/demokoraxmasters8.ogg deleted file mode 100644 index 1be093481..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxmasters9.ogg b/sounds/voice/legacy/va/demokoraxmasters9.ogg deleted file mode 100644 index 08b435981..000000000 Binary files a/sounds/voice/legacy/va/demokoraxmasters9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship1.ogg b/sounds/voice/legacy/va/demokoraxworship1.ogg deleted file mode 100644 index a71cdff1f..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship10.ogg b/sounds/voice/legacy/va/demokoraxworship10.ogg deleted file mode 100644 index b7987dd8a..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship11.ogg b/sounds/voice/legacy/va/demokoraxworship11.ogg deleted file mode 100644 index f814c982f..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship2.ogg b/sounds/voice/legacy/va/demokoraxworship2.ogg deleted file mode 100644 index c1832e994..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship3.ogg b/sounds/voice/legacy/va/demokoraxworship3.ogg deleted file mode 100644 index fb7e60b30..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship4.ogg b/sounds/voice/legacy/va/demokoraxworship4.ogg deleted file mode 100644 index 9581bc304..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship5.ogg b/sounds/voice/legacy/va/demokoraxworship5.ogg deleted file mode 100644 index ae0402ad6..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship6.ogg b/sounds/voice/legacy/va/demokoraxworship6.ogg deleted file mode 100644 index 8f168aee9..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship7.ogg b/sounds/voice/legacy/va/demokoraxworship7.ogg deleted file mode 100644 index f97374cbd..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship8.ogg b/sounds/voice/legacy/va/demokoraxworship8.ogg deleted file mode 100644 index 9bce837ad..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demokoraxworship9.ogg b/sounds/voice/legacy/va/demokoraxworship9.ogg deleted file mode 100644 index 80896e5ef..000000000 Binary files a/sounds/voice/legacy/va/demokoraxworship9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demolocked1.ogg b/sounds/voice/legacy/va/demolocked1.ogg deleted file mode 100644 index 1c7238ded..000000000 Binary files a/sounds/voice/legacy/va/demolocked1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demolocked2.ogg b/sounds/voice/legacy/va/demolocked2.ogg deleted file mode 100644 index aa9243b31..000000000 Binary files a/sounds/voice/legacy/va/demolocked2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demolocked3.ogg b/sounds/voice/legacy/va/demolocked3.ogg deleted file mode 100644 index 5a200d1cb..000000000 Binary files a/sounds/voice/legacy/va/demolocked3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demolocked4.ogg b/sounds/voice/legacy/va/demolocked4.ogg deleted file mode 100644 index 8befa73e3..000000000 Binary files a/sounds/voice/legacy/va/demolocked4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart1.ogg b/sounds/voice/legacy/va/demomapstart1.ogg deleted file mode 100644 index 4dde1ce7e..000000000 Binary files a/sounds/voice/legacy/va/demomapstart1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart10.ogg b/sounds/voice/legacy/va/demomapstart10.ogg deleted file mode 100644 index 135457212..000000000 Binary files a/sounds/voice/legacy/va/demomapstart10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart11.ogg b/sounds/voice/legacy/va/demomapstart11.ogg deleted file mode 100644 index c26d54f31..000000000 Binary files a/sounds/voice/legacy/va/demomapstart11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart12.ogg b/sounds/voice/legacy/va/demomapstart12.ogg deleted file mode 100644 index c2e626e7c..000000000 Binary files a/sounds/voice/legacy/va/demomapstart12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart13.ogg b/sounds/voice/legacy/va/demomapstart13.ogg deleted file mode 100644 index fe327d7d9..000000000 Binary files a/sounds/voice/legacy/va/demomapstart13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart14.ogg b/sounds/voice/legacy/va/demomapstart14.ogg deleted file mode 100644 index 2f083ec3d..000000000 Binary files a/sounds/voice/legacy/va/demomapstart14.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart2.ogg b/sounds/voice/legacy/va/demomapstart2.ogg deleted file mode 100644 index 355bbe5f2..000000000 Binary files a/sounds/voice/legacy/va/demomapstart2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart3.ogg b/sounds/voice/legacy/va/demomapstart3.ogg deleted file mode 100644 index 301744783..000000000 Binary files a/sounds/voice/legacy/va/demomapstart3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart4.ogg b/sounds/voice/legacy/va/demomapstart4.ogg deleted file mode 100644 index 0935c5279..000000000 Binary files a/sounds/voice/legacy/va/demomapstart4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart5.ogg b/sounds/voice/legacy/va/demomapstart5.ogg deleted file mode 100644 index a0e657081..000000000 Binary files a/sounds/voice/legacy/va/demomapstart5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart6.ogg b/sounds/voice/legacy/va/demomapstart6.ogg deleted file mode 100644 index d72c31df6..000000000 Binary files a/sounds/voice/legacy/va/demomapstart6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart7.ogg b/sounds/voice/legacy/va/demomapstart7.ogg deleted file mode 100644 index bb522e8f4..000000000 Binary files a/sounds/voice/legacy/va/demomapstart7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart8.ogg b/sounds/voice/legacy/va/demomapstart8.ogg deleted file mode 100644 index a4b2dc051..000000000 Binary files a/sounds/voice/legacy/va/demomapstart8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demomapstart9.ogg b/sounds/voice/legacy/va/demomapstart9.ogg deleted file mode 100644 index f7e5491b0..000000000 Binary files a/sounds/voice/legacy/va/demomapstart9.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzfail1.ogg b/sounds/voice/legacy/va/demopuzzfail1.ogg deleted file mode 100644 index 1098ef4a7..000000000 Binary files a/sounds/voice/legacy/va/demopuzzfail1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzfail2.ogg b/sounds/voice/legacy/va/demopuzzfail2.ogg deleted file mode 100644 index e92cffd33..000000000 Binary files a/sounds/voice/legacy/va/demopuzzfail2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzfail3.ogg b/sounds/voice/legacy/va/demopuzzfail3.ogg deleted file mode 100644 index a2c08730c..000000000 Binary files a/sounds/voice/legacy/va/demopuzzfail3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzfail4.ogg b/sounds/voice/legacy/va/demopuzzfail4.ogg deleted file mode 100644 index af4f404b6..000000000 Binary files a/sounds/voice/legacy/va/demopuzzfail4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzfail5.ogg b/sounds/voice/legacy/va/demopuzzfail5.ogg deleted file mode 100644 index d9a7112db..000000000 Binary files a/sounds/voice/legacy/va/demopuzzfail5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzfail6.ogg b/sounds/voice/legacy/va/demopuzzfail6.ogg deleted file mode 100644 index b2c61fab0..000000000 Binary files a/sounds/voice/legacy/va/demopuzzfail6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzsucc1.ogg b/sounds/voice/legacy/va/demopuzzsucc1.ogg deleted file mode 100644 index 13f7c7362..000000000 Binary files a/sounds/voice/legacy/va/demopuzzsucc1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzsucc2.ogg b/sounds/voice/legacy/va/demopuzzsucc2.ogg deleted file mode 100644 index 44463436c..000000000 Binary files a/sounds/voice/legacy/va/demopuzzsucc2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzsucc3.ogg b/sounds/voice/legacy/va/demopuzzsucc3.ogg deleted file mode 100644 index 225c7e8fd..000000000 Binary files a/sounds/voice/legacy/va/demopuzzsucc3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzsucc4.ogg b/sounds/voice/legacy/va/demopuzzsucc4.ogg deleted file mode 100644 index 690f90520..000000000 Binary files a/sounds/voice/legacy/va/demopuzzsucc4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demopuzzsucc5.ogg b/sounds/voice/legacy/va/demopuzzsucc5.ogg deleted file mode 100644 index 0ff13e13e..000000000 Binary files a/sounds/voice/legacy/va/demopuzzsucc5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoragekit1.ogg b/sounds/voice/legacy/va/demoragekit1.ogg deleted file mode 100644 index 69dc6e23f..000000000 Binary files a/sounds/voice/legacy/va/demoragekit1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoragekit2.ogg b/sounds/voice/legacy/va/demoragekit2.ogg deleted file mode 100644 index 20079fe1c..000000000 Binary files a/sounds/voice/legacy/va/demoragekit2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoragekit3.ogg b/sounds/voice/legacy/va/demoragekit3.ogg deleted file mode 100644 index eb638e728..000000000 Binary files a/sounds/voice/legacy/va/demoragekit3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoragekit4.ogg b/sounds/voice/legacy/va/demoragekit4.ogg deleted file mode 100644 index bc10765a1..000000000 Binary files a/sounds/voice/legacy/va/demoragekit4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoragekit5.ogg b/sounds/voice/legacy/va/demoragekit5.ogg deleted file mode 100644 index 59164a41d..000000000 Binary files a/sounds/voice/legacy/va/demoragekit5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoragekit6.ogg b/sounds/voice/legacy/va/demoragekit6.ogg deleted file mode 100644 index 9ebdafcf4..000000000 Binary files a/sounds/voice/legacy/va/demoragekit6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill1.ogg b/sounds/voice/legacy/va/demoscorekill1.ogg deleted file mode 100644 index 7264844ba..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill1.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill10.ogg b/sounds/voice/legacy/va/demoscorekill10.ogg deleted file mode 100644 index 54aa5b681..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill10.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill11.ogg b/sounds/voice/legacy/va/demoscorekill11.ogg deleted file mode 100644 index b4a7b13fc..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill11.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill12.ogg b/sounds/voice/legacy/va/demoscorekill12.ogg deleted file mode 100644 index 8c20850cb..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill12.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill13.ogg b/sounds/voice/legacy/va/demoscorekill13.ogg deleted file mode 100644 index 4827f4f66..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill13.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill14.ogg b/sounds/voice/legacy/va/demoscorekill14.ogg deleted file mode 100644 index 5b8c93c64..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill14.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill15.ogg b/sounds/voice/legacy/va/demoscorekill15.ogg deleted file mode 100644 index 458c4a8a7..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill15.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill16.ogg b/sounds/voice/legacy/va/demoscorekill16.ogg deleted file mode 100644 index cc6b41e71..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill16.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill17.ogg b/sounds/voice/legacy/va/demoscorekill17.ogg deleted file mode 100644 index e0409c263..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill17.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill18.ogg b/sounds/voice/legacy/va/demoscorekill18.ogg deleted file mode 100644 index 86f9b11a0..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill18.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill19.ogg b/sounds/voice/legacy/va/demoscorekill19.ogg deleted file mode 100644 index f92361c89..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill19.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill2.ogg b/sounds/voice/legacy/va/demoscorekill2.ogg deleted file mode 100644 index d8ee77ca2..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill2.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill20.ogg b/sounds/voice/legacy/va/demoscorekill20.ogg deleted file mode 100644 index 6af649e58..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill20.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill21.ogg b/sounds/voice/legacy/va/demoscorekill21.ogg deleted file mode 100644 index 88f3aeb60..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill21.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill22.ogg b/sounds/voice/legacy/va/demoscorekill22.ogg deleted file mode 100644 index 62ac7740d..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill22.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill23.ogg b/sounds/voice/legacy/va/demoscorekill23.ogg deleted file mode 100644 index 2c19ae964..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill23.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill24.ogg b/sounds/voice/legacy/va/demoscorekill24.ogg deleted file mode 100644 index 0c7ebd7ec..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill24.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill25.ogg b/sounds/voice/legacy/va/demoscorekill25.ogg deleted file mode 100644 index 719996033..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill25.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill26.ogg b/sounds/voice/legacy/va/demoscorekill26.ogg deleted file mode 100644 index e37b10a7d..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill26.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill3.ogg b/sounds/voice/legacy/va/demoscorekill3.ogg deleted file mode 100644 index 3b53933d5..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill3.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill4.ogg b/sounds/voice/legacy/va/demoscorekill4.ogg deleted file mode 100644 index 5f12a3633..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill4.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill5.ogg b/sounds/voice/legacy/va/demoscorekill5.ogg deleted file mode 100644 index 65262caee..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill5.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill6.ogg b/sounds/voice/legacy/va/demoscorekill6.ogg deleted file mode 100644 index cdaa12c96..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill6.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill7.ogg b/sounds/voice/legacy/va/demoscorekill7.ogg deleted file mode 100644 index c8ff997bc..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill7.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill8.ogg b/sounds/voice/legacy/va/demoscorekill8.ogg deleted file mode 100644 index 025c780ce..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill8.ogg and /dev/null differ diff --git a/sounds/voice/legacy/va/demoscorekill9.ogg b/sounds/voice/legacy/va/demoscorekill9.ogg deleted file mode 100644 index 5e18d39e2..000000000 Binary files a/sounds/voice/legacy/va/demoscorekill9.ogg and /dev/null differ diff --git a/sprites/BLPFA0.png b/sprites/BLPFA0.png index c6b262e09..6e16a659b 100644 Binary files a/sprites/BLPFA0.png and b/sprites/BLPFA0.png differ diff --git a/sprites/BLPFB0.png b/sprites/BLPFB0.png index a82125b6d..75840b1b6 100644 Binary files a/sprites/BLPFB0.png and b/sprites/BLPFB0.png differ diff --git a/sprites/BLPFC0.png b/sprites/BLPFC0.png index e11e82b91..fa2bf347c 100644 Binary files a/sprites/BLPFC0.png and b/sprites/BLPFC0.png differ diff --git a/sprites/BLPFD0.png b/sprites/BLPFD0.png index f93133cd5..8ccc8a5b1 100644 Binary files a/sprites/BLPFD0.png and b/sprites/BLPFD0.png differ diff --git a/sprites/BLPFE0.png b/sprites/BLPFE0.png index 4310a7e18..c4a934c19 100644 Binary files a/sprites/BLPFE0.png and b/sprites/BLPFE0.png differ diff --git a/sprites/BLPFF0.png b/sprites/BLPFF0.png index 0091c4b76..5b1a2dcf0 100644 Binary files a/sprites/BLPFF0.png and b/sprites/BLPFF0.png differ diff --git a/sprites/BLPFG0.png b/sprites/BLPFG0.png index 3a9b604d4..d4a3d6bfa 100644 Binary files a/sprites/BLPFG0.png and b/sprites/BLPFG0.png differ diff --git a/sprites/BLPFH0.png b/sprites/BLPFH0.png index b5b83416b..e33b63b70 100644 Binary files a/sprites/BLPFH0.png and b/sprites/BLPFH0.png differ diff --git a/sprites/BLPSA0.png b/sprites/BLPSA0.png index 6bd43824e..bb1820fa6 100644 Binary files a/sprites/BLPSA0.png and b/sprites/BLPSA0.png differ diff --git a/sprites/BLPSB0.png b/sprites/BLPSB0.png index b5bccce44..5c1737ece 100644 Binary files a/sprites/BLPSB0.png and b/sprites/BLPSB0.png differ diff --git a/sprites/BLPSC0.png b/sprites/BLPSC0.png index 0b946a5d5..769be52c2 100644 Binary files a/sprites/BLPSC0.png and b/sprites/BLPSC0.png differ diff --git a/sprites/BLPSD0.png b/sprites/BLPSD0.png index ebff8c40a..2033795cb 100644 Binary files a/sprites/BLPSD0.png and b/sprites/BLPSD0.png differ diff --git a/sprites/BLPSE0.png b/sprites/BLPSE0.png index 5b269f32d..7324f76c8 100644 Binary files a/sprites/BLPSE0.png and b/sprites/BLPSE0.png differ diff --git a/sprites/BLPSF0.png b/sprites/BLPSF0.png index a553bf51f..c46790e99 100644 Binary files a/sprites/BLPSF0.png and b/sprites/BLPSF0.png differ diff --git a/sprites/BLPSG0.png b/sprites/BLPSG0.png index e0c9fbbe5..f7159b880 100644 Binary files a/sprites/BLPSG0.png and b/sprites/BLPSG0.png differ diff --git a/sprites/BLPSH0.png b/sprites/BLPSH0.png index 971b9a2eb..a40d746f2 100644 Binary files a/sprites/BLPSH0.png and b/sprites/BLPSH0.png differ diff --git a/sprites/BSMKA0.png b/sprites/BSMKA0.png index 85e85097d..3bf737106 100644 Binary files a/sprites/BSMKA0.png and b/sprites/BSMKA0.png differ diff --git a/sprites/BSMKB0.png b/sprites/BSMKB0.png index 68c41daf9..2cb032db7 100644 Binary files a/sprites/BSMKB0.png and b/sprites/BSMKB0.png differ diff --git a/sprites/BSMKC0.png b/sprites/BSMKC0.png index e2101bf79..c414c8904 100644 Binary files a/sprites/BSMKC0.png and b/sprites/BSMKC0.png differ diff --git a/sprites/BSMKD0.png b/sprites/BSMKD0.png index e82ac37ad..f300271b1 100644 Binary files a/sprites/BSMKD0.png and b/sprites/BSMKD0.png differ diff --git a/sprites/BSMKE0.png b/sprites/BSMKE0.png index 33c193d80..3fff70524 100644 Binary files a/sprites/BSMKE0.png and b/sprites/BSMKE0.png differ diff --git a/sprites/BSMKF0.png b/sprites/BSMKF0.png index 85e57d4a9..5a0b93eb0 100644 Binary files a/sprites/BSMKF0.png and b/sprites/BSMKF0.png differ diff --git a/sprites/BSMKG0.png b/sprites/BSMKG0.png index f566c3cd2..2906034c5 100644 Binary files a/sprites/BSMKG0.png and b/sprites/BSMKG0.png differ diff --git a/sprites/BSMKH0.png b/sprites/BSMKH0.png index 0f339b595..bc0717363 100644 Binary files a/sprites/BSMKH0.png and b/sprites/BSMKH0.png differ diff --git a/sprites/BSMKI0.png b/sprites/BSMKI0.png index 16155b50b..39edd8a3e 100644 Binary files a/sprites/BSMKI0.png and b/sprites/BSMKI0.png differ diff --git a/sprites/BSMKJ0.png b/sprites/BSMKJ0.png index 56e8fd820..633295320 100644 Binary files a/sprites/BSMKJ0.png and b/sprites/BSMKJ0.png differ diff --git a/sprites/BSMKK0.png b/sprites/BSMKK0.png index 705ced821..2b0e717eb 100644 Binary files a/sprites/BSMKK0.png and b/sprites/BSMKK0.png differ diff --git a/sprites/BSMKL0.png b/sprites/BSMKL0.png index 320ae4e04..cc3588947 100644 Binary files a/sprites/BSMKL0.png and b/sprites/BSMKL0.png differ diff --git a/sprites/BSMKM0.png b/sprites/BSMKM0.png index 22575f7d2..097a07784 100644 Binary files a/sprites/BSMKM0.png and b/sprites/BSMKM0.png differ diff --git a/sprites/BSMKN0.png b/sprites/BSMKN0.png index 5c01c53ef..bf57a1ce8 100644 Binary files a/sprites/BSMKN0.png and b/sprites/BSMKN0.png differ diff --git a/sprites/BSMKO0.png b/sprites/BSMKO0.png index b73982f79..a42c89bce 100644 Binary files a/sprites/BSMKO0.png and b/sprites/BSMKO0.png differ diff --git a/sprites/BSMKP0.png b/sprites/BSMKP0.png index 51fd32531..fdc77bbab 100644 Binary files a/sprites/BSMKP0.png and b/sprites/BSMKP0.png differ diff --git a/sprites/BSMKQ0.png b/sprites/BSMKQ0.png index e441e73c4..8d5bfeee5 100644 Binary files a/sprites/BSMKQ0.png and b/sprites/BSMKQ0.png differ diff --git a/sprites/BSMKR0.png b/sprites/BSMKR0.png index 1c3b614e6..1edd5922c 100644 Binary files a/sprites/BSMKR0.png and b/sprites/BSMKR0.png differ diff --git a/sprites/BSMKS0.png b/sprites/BSMKS0.png index 0bf68e466..174a7baa2 100644 Binary files a/sprites/BSMKS0.png and b/sprites/BSMKS0.png differ diff --git a/sprites/BSMKT0.png b/sprites/BSMKT0.png index ca30f56f1..f7cb354c8 100644 Binary files a/sprites/BSMKT0.png and b/sprites/BSMKT0.png differ diff --git a/sprites/BSPKA0.png b/sprites/BSPKA0.png index 0ee842e93..27470ed44 100644 Binary files a/sprites/BSPKA0.png and b/sprites/BSPKA0.png differ diff --git a/sprites/BSPKB0.png b/sprites/BSPKB0.png index bf85bd574..cf84833ac 100644 Binary files a/sprites/BSPKB0.png and b/sprites/BSPKB0.png differ diff --git a/sprites/BSPKC0.png b/sprites/BSPKC0.png index 55f8be95c..fa9608e91 100644 Binary files a/sprites/BSPKC0.png and b/sprites/BSPKC0.png differ diff --git a/sprites/BSPKD0.png b/sprites/BSPKD0.png index a4c6d0742..67e2561ee 100644 Binary files a/sprites/BSPKD0.png and b/sprites/BSPKD0.png differ diff --git a/sprites/BSPKE0.png b/sprites/BSPKE0.png index 37439f560..cd1d9baa7 100644 Binary files a/sprites/BSPKE0.png and b/sprites/BSPKE0.png differ diff --git a/sprites/BSPKF0.png b/sprites/BSPKF0.png index cd44cf185..96c9f3595 100644 Binary files a/sprites/BSPKF0.png and b/sprites/BSPKF0.png differ diff --git a/sprites/BSPKG0.png b/sprites/BSPKG0.png index b645d3b2b..c7e5f0da8 100644 Binary files a/sprites/BSPKG0.png and b/sprites/BSPKG0.png differ diff --git a/sprites/BSPKH0.png b/sprites/BSPKH0.png index f77f4a20b..5b5abb621 100644 Binary files a/sprites/BSPKH0.png and b/sprites/BSPKH0.png differ diff --git a/sprites/BSPKI0.png b/sprites/BSPKI0.png index 3ac1d280f..0ba0176c9 100644 Binary files a/sprites/BSPKI0.png and b/sprites/BSPKI0.png differ diff --git a/sprites/BSPKJ0.png b/sprites/BSPKJ0.png index 6ebbe85cf..5ba0fc88e 100644 Binary files a/sprites/BSPKJ0.png and b/sprites/BSPKJ0.png differ diff --git a/sprites/BSPPA0.png b/sprites/BSPPA0.png new file mode 100644 index 000000000..fba182b5d Binary files /dev/null and b/sprites/BSPPA0.png differ diff --git a/sprites/DOKIA0.png b/sprites/DOKIA0.png index 3675f1467..77ddd4b51 100644 Binary files a/sprites/DOKIA0.png and b/sprites/DOKIA0.png differ diff --git a/sprites/DUSTA0.png b/sprites/DUSTA0.png deleted file mode 100644 index 3f0d86a2d..000000000 Binary files a/sprites/DUSTA0.png and /dev/null differ diff --git a/sprites/DUSTB0.png b/sprites/DUSTB0.png deleted file mode 100644 index 2a608d0d6..000000000 Binary files a/sprites/DUSTB0.png and /dev/null differ diff --git a/sprites/DUSTC0.png b/sprites/DUSTC0.png deleted file mode 100644 index c31ad5b50..000000000 Binary files a/sprites/DUSTC0.png and /dev/null differ diff --git a/sprites/DUSTD0.png b/sprites/DUSTD0.png deleted file mode 100644 index c45a797d0..000000000 Binary files a/sprites/DUSTD0.png and /dev/null differ diff --git a/sprites/DUSTE0.png b/sprites/DUSTE0.png deleted file mode 100644 index d2fffaef2..000000000 Binary files a/sprites/DUSTE0.png and /dev/null differ diff --git a/sprites/DUSTF0.png b/sprites/DUSTF0.png deleted file mode 100644 index 7506b9238..000000000 Binary files a/sprites/DUSTF0.png and /dev/null differ diff --git a/sprites/DUSTG0.png b/sprites/DUSTG0.png deleted file mode 100644 index a4d0df773..000000000 Binary files a/sprites/DUSTG0.png and /dev/null differ diff --git a/sprites/DUSTH0.png b/sprites/DUSTH0.png deleted file mode 100644 index 11f07472a..000000000 Binary files a/sprites/DUSTH0.png and /dev/null differ diff --git a/sprites/DUSTI0.png b/sprites/DUSTI0.png deleted file mode 100644 index d73142518..000000000 Binary files a/sprites/DUSTI0.png and /dev/null differ diff --git a/sprites/DUSTJ0.png b/sprites/DUSTJ0.png deleted file mode 100644 index a235a9e8b..000000000 Binary files a/sprites/DUSTJ0.png and /dev/null differ diff --git a/sprites/DUSTK0.png b/sprites/DUSTK0.png deleted file mode 100644 index 3e85e188c..000000000 Binary files a/sprites/DUSTK0.png and /dev/null differ diff --git a/sprites/DUSTL0.png b/sprites/DUSTL0.png deleted file mode 100644 index 0466a7e6b..000000000 Binary files a/sprites/DUSTL0.png and /dev/null differ diff --git a/sprites/DUSTM0.png b/sprites/DUSTM0.png deleted file mode 100644 index 006e87628..000000000 Binary files a/sprites/DUSTM0.png and /dev/null differ diff --git a/sprites/DUSTN0.png b/sprites/DUSTN0.png deleted file mode 100644 index 3b36e2415..000000000 Binary files a/sprites/DUSTN0.png and /dev/null differ diff --git a/sprites/DUSTO0.png b/sprites/DUSTO0.png deleted file mode 100644 index f26dc86ab..000000000 Binary files a/sprites/DUSTO0.png and /dev/null differ diff --git a/sprites/DUSTP0.png b/sprites/DUSTP0.png deleted file mode 100644 index b6b6b018e..000000000 Binary files a/sprites/DUSTP0.png and /dev/null differ diff --git a/sprites/DUSTQ0.png b/sprites/DUSTQ0.png deleted file mode 100644 index a15400e99..000000000 Binary files a/sprites/DUSTQ0.png and /dev/null differ diff --git a/sprites/DUSTR0.png b/sprites/DUSTR0.png deleted file mode 100644 index 50fd87311..000000000 Binary files a/sprites/DUSTR0.png and /dev/null differ diff --git a/sprites/DUSTS0.png b/sprites/DUSTS0.png deleted file mode 100644 index 317e3e29c..000000000 Binary files a/sprites/DUSTS0.png and /dev/null differ diff --git a/sprites/DUSTT0.png b/sprites/DUSTT0.png deleted file mode 100644 index 5659bbb65..000000000 Binary files a/sprites/DUSTT0.png and /dev/null differ diff --git a/sprites/DVSPA0.png b/sprites/DVSPA0.png index 4e83a0f24..1bbed6ad2 100644 Binary files a/sprites/DVSPA0.png and b/sprites/DVSPA0.png differ diff --git a/sprites/EIXTA0.png b/sprites/EIXTA0.png index 0f42a7dee..d58e113d7 100644 Binary files a/sprites/EIXTA0.png and b/sprites/EIXTA0.png differ diff --git a/sprites/EIXTB0.png b/sprites/EIXTB0.png index 4e2c1567d..2e7182d10 100644 Binary files a/sprites/EIXTB0.png and b/sprites/EIXTB0.png differ diff --git a/sprites/EIXTC0.png b/sprites/EIXTC0.png index cdfb2043a..9faa1cfc0 100644 Binary files a/sprites/EIXTC0.png and b/sprites/EIXTC0.png differ diff --git a/sprites/EIXTD0.png b/sprites/EIXTD0.png index 3fdbdf109..82fc1a1c5 100644 Binary files a/sprites/EIXTD0.png and b/sprites/EIXTD0.png differ diff --git a/sprites/ETRLA0.png b/sprites/ETRLA0.png index 19f863674..b318e1f10 100644 Binary files a/sprites/ETRLA0.png and b/sprites/ETRLA0.png differ diff --git a/sprites/FRT1A0.png b/sprites/FRT1A0.png index 0e6d13692..31a598ae0 100644 Binary files a/sprites/FRT1A0.png and b/sprites/FRT1A0.png differ diff --git a/sprites/FRT1B0.png b/sprites/FRT1B0.png index 91e785db7..ab5ef0885 100644 Binary files a/sprites/FRT1B0.png and b/sprites/FRT1B0.png differ diff --git a/sprites/FRT1C0.png b/sprites/FRT1C0.png index 28beac23a..fbb66bb12 100644 Binary files a/sprites/FRT1C0.png and b/sprites/FRT1C0.png differ diff --git a/sprites/FRT1D0.png b/sprites/FRT1D0.png index 22ba459af..0551c65cd 100644 Binary files a/sprites/FRT1D0.png and b/sprites/FRT1D0.png differ diff --git a/sprites/FRT1E0.png b/sprites/FRT1E0.png index f586db107..f85814e6b 100644 Binary files a/sprites/FRT1E0.png and b/sprites/FRT1E0.png differ diff --git a/sprites/FRT1F0.png b/sprites/FRT1F0.png index c04fc11db..28af5047b 100644 Binary files a/sprites/FRT1F0.png and b/sprites/FRT1F0.png differ diff --git a/sprites/FRT1G0.png b/sprites/FRT1G0.png index f3893e49e..932bb3d8c 100644 Binary files a/sprites/FRT1G0.png and b/sprites/FRT1G0.png differ diff --git a/sprites/FRT1H0.png b/sprites/FRT1H0.png index 87a8134e2..ece78846f 100644 Binary files a/sprites/FRT1H0.png and b/sprites/FRT1H0.png differ diff --git a/sprites/FRT1I0.png b/sprites/FRT1I0.png index 5b0f92d4a..888632398 100644 Binary files a/sprites/FRT1I0.png and b/sprites/FRT1I0.png differ diff --git a/sprites/FRT1J0.png b/sprites/FRT1J0.png index adcbe405d..72360e2e6 100644 Binary files a/sprites/FRT1J0.png and b/sprites/FRT1J0.png differ diff --git a/sprites/FRT1K0.png b/sprites/FRT1K0.png index 50bf4d0d5..3d040e23e 100644 Binary files a/sprites/FRT1K0.png and b/sprites/FRT1K0.png differ diff --git a/sprites/FRT1L0.png b/sprites/FRT1L0.png index 8873b7af1..de8abd85b 100644 Binary files a/sprites/FRT1L0.png and b/sprites/FRT1L0.png differ diff --git a/sprites/FRT1M0.png b/sprites/FRT1M0.png index d25cf7e8f..e3aeb300f 100644 Binary files a/sprites/FRT1M0.png and b/sprites/FRT1M0.png differ diff --git a/sprites/FRT1N0.png b/sprites/FRT1N0.png index 890e5755c..35d826813 100644 Binary files a/sprites/FRT1N0.png and b/sprites/FRT1N0.png differ diff --git a/sprites/FRT1O0.png b/sprites/FRT1O0.png index afa0ff257..9c3d9de33 100644 Binary files a/sprites/FRT1O0.png and b/sprites/FRT1O0.png differ diff --git a/sprites/FRT1P0.png b/sprites/FRT1P0.png index cc55388f7..649d0d258 100644 Binary files a/sprites/FRT1P0.png and b/sprites/FRT1P0.png differ diff --git a/sprites/FRT1Q0.png b/sprites/FRT1Q0.png index 6856ad473..894f86c1a 100644 Binary files a/sprites/FRT1Q0.png and b/sprites/FRT1Q0.png differ diff --git a/sprites/FRT1R0.png b/sprites/FRT1R0.png index daf306eae..75544ebe3 100644 Binary files a/sprites/FRT1R0.png and b/sprites/FRT1R0.png differ diff --git a/sprites/FRT1S0.png b/sprites/FRT1S0.png index c49928f04..db190e4a5 100644 Binary files a/sprites/FRT1S0.png and b/sprites/FRT1S0.png differ diff --git a/sprites/FRT1T0.png b/sprites/FRT1T0.png index 832912ddd..37b44fee2 100644 Binary files a/sprites/FRT1T0.png and b/sprites/FRT1T0.png differ diff --git a/sprites/FRT1U0.png b/sprites/FRT1U0.png index 33a4c2335..aad22d4f4 100644 Binary files a/sprites/FRT1U0.png and b/sprites/FRT1U0.png differ diff --git a/sprites/FRT1V0.png b/sprites/FRT1V0.png index 4e07c8775..a84ca8f92 100644 Binary files a/sprites/FRT1V0.png and b/sprites/FRT1V0.png differ diff --git a/sprites/FRT1W0.png b/sprites/FRT1W0.png index ed96b4bf4..3196f68f9 100644 Binary files a/sprites/FRT1W0.png and b/sprites/FRT1W0.png differ diff --git a/sprites/FRT1X0.png b/sprites/FRT1X0.png index 9183b5ec8..07b2a6603 100644 Binary files a/sprites/FRT1X0.png and b/sprites/FRT1X0.png differ diff --git a/sprites/FRT1Y0.png b/sprites/FRT1Y0.png index 8e913dfc4..0d09ac516 100644 Binary files a/sprites/FRT1Y0.png and b/sprites/FRT1Y0.png differ diff --git a/sprites/FRT1Z0.png b/sprites/FRT1Z0.png index 853247339..5a9db9fb2 100644 Binary files a/sprites/FRT1Z0.png and b/sprites/FRT1Z0.png differ diff --git a/sprites/FRT2A0.png b/sprites/FRT2A0.png index f138f653a..448277434 100644 Binary files a/sprites/FRT2A0.png and b/sprites/FRT2A0.png differ diff --git a/sprites/FRT2B0.png b/sprites/FRT2B0.png index ffa3ee4a5..26d045380 100644 Binary files a/sprites/FRT2B0.png and b/sprites/FRT2B0.png differ diff --git a/sprites/FRT2C0.png b/sprites/FRT2C0.png index 79ec4cbbc..dbf17ea6b 100644 Binary files a/sprites/FRT2C0.png and b/sprites/FRT2C0.png differ diff --git a/sprites/FRT2D0.png b/sprites/FRT2D0.png index ba8e60767..497c47884 100644 Binary files a/sprites/FRT2D0.png and b/sprites/FRT2D0.png differ diff --git a/sprites/FRT2E0.png b/sprites/FRT2E0.png index 4ff7a74ab..2fdb5ed8c 100644 Binary files a/sprites/FRT2E0.png and b/sprites/FRT2E0.png differ diff --git a/sprites/FRT2F0.png b/sprites/FRT2F0.png index 3a57e1368..a6e737e23 100644 Binary files a/sprites/FRT2F0.png and b/sprites/FRT2F0.png differ diff --git a/sprites/FRT2G0.png b/sprites/FRT2G0.png index 7772ee44b..2e0c314d1 100644 Binary files a/sprites/FRT2G0.png and b/sprites/FRT2G0.png differ diff --git a/sprites/FRT2H0.png b/sprites/FRT2H0.png index 0274ec893..46e65f812 100644 Binary files a/sprites/FRT2H0.png and b/sprites/FRT2H0.png differ diff --git a/sprites/FRT2I0.png b/sprites/FRT2I0.png index c9d83839e..7436ac9f2 100644 Binary files a/sprites/FRT2I0.png and b/sprites/FRT2I0.png differ diff --git a/sprites/HEXPB0.png b/sprites/HEXPB0.png index 22ee30691..95eb42866 100644 Binary files a/sprites/HEXPB0.png and b/sprites/HEXPB0.png differ diff --git a/sprites/HEXPC0.png b/sprites/HEXPC0.png index 499042de3..6bc2e83f1 100644 Binary files a/sprites/HEXPC0.png and b/sprites/HEXPC0.png differ diff --git a/sprites/HEXPD0.png b/sprites/HEXPD0.png index 95aad8871..a6f6295a6 100644 Binary files a/sprites/HEXPD0.png and b/sprites/HEXPD0.png differ diff --git a/sprites/HEXPE0.png b/sprites/HEXPE0.png index d9704b7bd..6f79202b8 100644 Binary files a/sprites/HEXPE0.png and b/sprites/HEXPE0.png differ diff --git a/sprites/HEXPF0.png b/sprites/HEXPF0.png index 80646718c..98298a886 100644 Binary files a/sprites/HEXPF0.png and b/sprites/HEXPF0.png differ diff --git a/sprites/HEXPG0.png b/sprites/HEXPG0.png index d219003da..d394ba140 100644 Binary files a/sprites/HEXPG0.png and b/sprites/HEXPG0.png differ diff --git a/sprites/HEXPH0.png b/sprites/HEXPH0.png index f737347b7..552d08c21 100644 Binary files a/sprites/HEXPH0.png and b/sprites/HEXPH0.png differ diff --git a/sprites/HEXPI0.png b/sprites/HEXPI0.png index 7aa1991db..4c25a9d29 100644 Binary files a/sprites/HEXPI0.png and b/sprites/HEXPI0.png differ diff --git a/sprites/HEXPJ0.png b/sprites/HEXPJ0.png index 74b8a276f..28aba1018 100644 Binary files a/sprites/HEXPJ0.png and b/sprites/HEXPJ0.png differ diff --git a/sprites/HEXPK0.png b/sprites/HEXPK0.png index dad68e643..1dd50504f 100644 Binary files a/sprites/HEXPK0.png and b/sprites/HEXPK0.png differ diff --git a/sprites/HEXPL0.png b/sprites/HEXPL0.png index 3af7a149c..24c4ab9fd 100644 Binary files a/sprites/HEXPL0.png and b/sprites/HEXPL0.png differ diff --git a/sprites/HEXPM0.png b/sprites/HEXPM0.png index 8afa12358..e685927a6 100644 Binary files a/sprites/HEXPM0.png and b/sprites/HEXPM0.png differ diff --git a/sprites/HEXPN0.png b/sprites/HEXPN0.png index fe1f71c43..338ebdd20 100644 Binary files a/sprites/HEXPN0.png and b/sprites/HEXPN0.png differ diff --git a/sprites/HEXPO0.png b/sprites/HEXPO0.png index 29553a975..fb02908ac 100644 Binary files a/sprites/HEXPO0.png and b/sprites/HEXPO0.png differ diff --git a/sprites/HEXPP0.png b/sprites/HEXPP0.png index a5eeb7fc5..04562442a 100644 Binary files a/sprites/HEXPP0.png and b/sprites/HEXPP0.png differ diff --git a/sprites/HEXPQ0.png b/sprites/HEXPQ0.png index a5bf10d88..38a08a21e 100644 Binary files a/sprites/HEXPQ0.png and b/sprites/HEXPQ0.png differ diff --git a/sprites/HEXPR0.png b/sprites/HEXPR0.png index c0c87e734..4f1903d1e 100644 Binary files a/sprites/HEXPR0.png and b/sprites/HEXPR0.png differ diff --git a/sprites/HFLRA0.png b/sprites/HFLRA0.png index 9c3508516..060583600 100644 Binary files a/sprites/HFLRA0.png and b/sprites/HFLRA0.png differ diff --git a/sprites/HFLRB0.png b/sprites/HFLRB0.png deleted file mode 100644 index abbdb1aa6..000000000 Binary files a/sprites/HFLRB0.png and /dev/null differ diff --git a/sprites/HFLRC0.png b/sprites/HFLRC0.png deleted file mode 100644 index 6f05cd327..000000000 Binary files a/sprites/HFLRC0.png and /dev/null differ diff --git a/sprites/HFLRD0.png b/sprites/HFLRD0.png deleted file mode 100644 index fa167957d..000000000 Binary files a/sprites/HFLRD0.png and /dev/null differ diff --git a/sprites/HMEXB0.png b/sprites/HMEXB0.png index 3d27c3a66..bfe34a95f 100644 Binary files a/sprites/HMEXB0.png and b/sprites/HMEXB0.png differ diff --git a/sprites/HMEXC0.png b/sprites/HMEXC0.png index ba99524b4..44d923f6e 100644 Binary files a/sprites/HMEXC0.png and b/sprites/HMEXC0.png differ diff --git a/sprites/HMEXD0.png b/sprites/HMEXD0.png index 2ca5e4654..331927016 100644 Binary files a/sprites/HMEXD0.png and b/sprites/HMEXD0.png differ diff --git a/sprites/HMEXE0.png b/sprites/HMEXE0.png index fdc1649d5..e670e2ddd 100644 Binary files a/sprites/HMEXE0.png and b/sprites/HMEXE0.png differ diff --git a/sprites/HMEXF0.png b/sprites/HMEXF0.png index 47a04312f..7a103e3fe 100644 Binary files a/sprites/HMEXF0.png and b/sprites/HMEXF0.png differ diff --git a/sprites/HMEXG0.png b/sprites/HMEXG0.png index c33bae16d..1cb1f3bb0 100644 Binary files a/sprites/HMEXG0.png and b/sprites/HMEXG0.png differ diff --git a/sprites/HMEXH0.png b/sprites/HMEXH0.png index ec79c33bd..55514ce9b 100644 Binary files a/sprites/HMEXH0.png and b/sprites/HMEXH0.png differ diff --git a/sprites/HMEXI0.png b/sprites/HMEXI0.png index 8bed9dbfe..e8b6f7b9e 100644 Binary files a/sprites/HMEXI0.png and b/sprites/HMEXI0.png differ diff --git a/sprites/HMEXJ0.png b/sprites/HMEXJ0.png index 0c1d9e467..3b680847b 100644 Binary files a/sprites/HMEXJ0.png and b/sprites/HMEXJ0.png differ diff --git a/sprites/HMEXK0.png b/sprites/HMEXK0.png index 1c2133fe9..c12cfc543 100644 Binary files a/sprites/HMEXK0.png and b/sprites/HMEXK0.png differ diff --git a/sprites/HMEXL0.png b/sprites/HMEXL0.png index 358bbb47b..19a989318 100644 Binary files a/sprites/HMEXL0.png and b/sprites/HMEXL0.png differ diff --git a/sprites/HMEXM0.png b/sprites/HMEXM0.png index 6ed8aec41..4f45291c4 100644 Binary files a/sprites/HMEXM0.png and b/sprites/HMEXM0.png differ diff --git a/sprites/HMEXN0.png b/sprites/HMEXN0.png index c5d26fc07..a633be5e6 100644 Binary files a/sprites/HMEXN0.png and b/sprites/HMEXN0.png differ diff --git a/sprites/HMEXO0.png b/sprites/HMEXO0.png index 6b9bcc328..76506fd08 100644 Binary files a/sprites/HMEXO0.png and b/sprites/HMEXO0.png differ diff --git a/sprites/HMEXP0.png b/sprites/HMEXP0.png index 6d7082a31..e92b60293 100644 Binary files a/sprites/HMEXP0.png and b/sprites/HMEXP0.png differ diff --git a/sprites/HMEXQ0.png b/sprites/HMEXQ0.png index b06080868..352cb443c 100644 Binary files a/sprites/HMEXQ0.png and b/sprites/HMEXQ0.png differ diff --git a/sprites/HMEXR0.png b/sprites/HMEXR0.png index 68eefc6d5..2a1ccfd3c 100644 Binary files a/sprites/HMEXR0.png and b/sprites/HMEXR0.png differ diff --git a/sprites/HMEXS0.png b/sprites/HMEXS0.png index d79e24804..ecca056f4 100644 Binary files a/sprites/HMEXS0.png and b/sprites/HMEXS0.png differ diff --git a/sprites/HMEXT0.png b/sprites/HMEXT0.png index 2a2c48e63..06477ecd3 100644 Binary files a/sprites/HMEXT0.png and b/sprites/HMEXT0.png differ diff --git a/sprites/HMEXU0.png b/sprites/HMEXU0.png index 1f0899201..caff2fb4c 100644 Binary files a/sprites/HMEXU0.png and b/sprites/HMEXU0.png differ diff --git a/sprites/HMEXV0.png b/sprites/HMEXV0.png index 7d68092fb..e28c8d072 100644 Binary files a/sprites/HMEXV0.png and b/sprites/HMEXV0.png differ diff --git a/sprites/HMEXW0.png b/sprites/HMEXW0.png index 3a57b7d34..cc88b501b 100644 Binary files a/sprites/HMEXW0.png and b/sprites/HMEXW0.png differ diff --git a/sprites/HMEXX0.png b/sprites/HMEXX0.png index a7d387d2a..564b31a02 100644 Binary files a/sprites/HMEXX0.png and b/sprites/HMEXX0.png differ diff --git a/sprites/HMEXY0.png b/sprites/HMEXY0.png index 4f0149342..c6f225b92 100644 Binary files a/sprites/HMEXY0.png and b/sprites/HMEXY0.png differ diff --git a/sprites/HMEXZ0.png b/sprites/HMEXZ0.png index 4b0e2c5c6..f0d802e23 100644 Binary files a/sprites/HMEXZ0.png and b/sprites/HMEXZ0.png differ diff --git a/sprites/HMEX[0.png b/sprites/HMEX[0.png index 0efcbafcb..1caa51d5c 100644 Binary files a/sprites/HMEX[0.png and b/sprites/HMEX[0.png differ diff --git a/sprites/HMEX]0.png b/sprites/HMEX]0.png index 4f5b339c2..ebef59d50 100644 Binary files a/sprites/HMEX]0.png and b/sprites/HMEX]0.png differ diff --git a/sprites/HMEX^0.png b/sprites/HMEX^0.png index ea6c0e3f7..d63b8d2d9 100644 Binary files a/sprites/HMEX^0.png and b/sprites/HMEX^0.png differ diff --git a/sprites/HSPKA0.png b/sprites/HSPKA0.png index a651075ff..3ec359001 100644 Binary files a/sprites/HSPKA0.png and b/sprites/HSPKA0.png differ diff --git a/sprites/HSPKB0.png b/sprites/HSPKB0.png index 4554e520f..f9ba14ef4 100644 Binary files a/sprites/HSPKB0.png and b/sprites/HSPKB0.png differ diff --git a/sprites/HSPKC0.png b/sprites/HSPKC0.png index 588d5d3b7..19203cec2 100644 Binary files a/sprites/HSPKC0.png and b/sprites/HSPKC0.png differ diff --git a/sprites/HSPKD0.png b/sprites/HSPKD0.png index 0361d6061..835674684 100644 Binary files a/sprites/HSPKD0.png and b/sprites/HSPKD0.png differ diff --git a/sprites/HSPKE0.png b/sprites/HSPKE0.png index e4c330284..f595c50a3 100644 Binary files a/sprites/HSPKE0.png and b/sprites/HSPKE0.png differ diff --git a/sprites/HSPKF0.png b/sprites/HSPKF0.png index 76ae889f8..ac6718386 100644 Binary files a/sprites/HSPKF0.png and b/sprites/HSPKF0.png differ diff --git a/sprites/HSPKG0.png b/sprites/HSPKG0.png index d8e269e69..5cb421274 100644 Binary files a/sprites/HSPKG0.png and b/sprites/HSPKG0.png differ diff --git a/sprites/HSPKH0.png b/sprites/HSPKH0.png index c9d22ccbc..73ac69f45 100644 Binary files a/sprites/HSPKH0.png and b/sprites/HSPKH0.png differ diff --git a/sprites/HSPKI0.png b/sprites/HSPKI0.png index 90b922e0f..b6774c721 100644 Binary files a/sprites/HSPKI0.png and b/sprites/HSPKI0.png differ diff --git a/sprites/HSPKJ0.png b/sprites/HSPKJ0.png index 2042b2165..0d799ae76 100644 Binary files a/sprites/HSPKJ0.png and b/sprites/HSPKJ0.png differ diff --git a/sprites/JFLBA0.png b/sprites/JFLBA0.png index 2664f4553..7d3129612 100644 Binary files a/sprites/JFLBA0.png and b/sprites/JFLBA0.png differ diff --git a/sprites/JFLBB0.png b/sprites/JFLBB0.png index 5752c7764..55c0966c8 100644 Binary files a/sprites/JFLBB0.png and b/sprites/JFLBB0.png differ diff --git a/sprites/JFLBC0.png b/sprites/JFLBC0.png index a6cea7da5..c6982917f 100644 Binary files a/sprites/JFLBC0.png and b/sprites/JFLBC0.png differ diff --git a/sprites/JFLBD0.png b/sprites/JFLBD0.png index eaab09a01..61a3ec28c 100644 Binary files a/sprites/JFLBD0.png and b/sprites/JFLBD0.png differ diff --git a/sprites/JFLBE0.png b/sprites/JFLBE0.png index 49321b333..25990fd1c 100644 Binary files a/sprites/JFLBE0.png and b/sprites/JFLBE0.png differ diff --git a/sprites/JFLBF0.png b/sprites/JFLBF0.png index a10cbbd76..9ef543b3f 100644 Binary files a/sprites/JFLBF0.png and b/sprites/JFLBF0.png differ diff --git a/sprites/JFLBG0.png b/sprites/JFLBG0.png index c1e78aa88..eee96174a 100644 Binary files a/sprites/JFLBG0.png and b/sprites/JFLBG0.png differ diff --git a/sprites/JFLBH0.png b/sprites/JFLBH0.png index 5f722d18b..2d832dfd8 100644 Binary files a/sprites/JFLBH0.png and b/sprites/JFLBH0.png differ diff --git a/sprites/JFLRA0.png b/sprites/JFLRA0.png index 5ea7f6df8..23a7cf8f9 100644 Binary files a/sprites/JFLRA0.png and b/sprites/JFLRA0.png differ diff --git a/sprites/JFLRB0.png b/sprites/JFLRB0.png index 3d99f3042..247368aa5 100644 Binary files a/sprites/JFLRB0.png and b/sprites/JFLRB0.png differ diff --git a/sprites/JFLRC0.png b/sprites/JFLRC0.png index 4d550d36c..6c50a4bfb 100644 Binary files a/sprites/JFLRC0.png and b/sprites/JFLRC0.png differ diff --git a/sprites/JFLRD0.png b/sprites/JFLRD0.png index 8ce804015..31ed1f721 100644 Binary files a/sprites/JFLRD0.png and b/sprites/JFLRD0.png differ diff --git a/sprites/JFLRE0.png b/sprites/JFLRE0.png index 54006e9bd..1d36b87bb 100644 Binary files a/sprites/JFLRE0.png and b/sprites/JFLRE0.png differ diff --git a/sprites/JFLRF0.png b/sprites/JFLRF0.png index 3496d3be2..1bb327361 100644 Binary files a/sprites/JFLRF0.png and b/sprites/JFLRF0.png differ diff --git a/sprites/JFLRG0.png b/sprites/JFLRG0.png index ff55e1da1..dd8bddc08 100644 Binary files a/sprites/JFLRG0.png and b/sprites/JFLRG0.png differ diff --git a/sprites/JFLRH0.png b/sprites/JFLRH0.png index 354b0c4a4..8d492daa8 100644 Binary files a/sprites/JFLRH0.png and b/sprites/JFLRH0.png differ diff --git a/sprites/JUNKA0.png b/sprites/JUNKA0.png deleted file mode 100644 index 459ee09d5..000000000 Binary files a/sprites/JUNKA0.png and /dev/null differ diff --git a/sprites/JUNKB0.png b/sprites/JUNKB0.png deleted file mode 100644 index cd167ecdc..000000000 Binary files a/sprites/JUNKB0.png and /dev/null differ diff --git a/sprites/JUNKC0.png b/sprites/JUNKC0.png deleted file mode 100644 index 4e47b192d..000000000 Binary files a/sprites/JUNKC0.png and /dev/null differ diff --git a/sprites/JUNKD0.png b/sprites/JUNKD0.png deleted file mode 100644 index 3f7af9410..000000000 Binary files a/sprites/JUNKD0.png and /dev/null differ diff --git a/sprites/JUNKE0.png b/sprites/JUNKE0.png deleted file mode 100644 index 4144aeb31..000000000 Binary files a/sprites/JUNKE0.png and /dev/null differ diff --git a/sprites/JUNKF0.png b/sprites/JUNKF0.png deleted file mode 100644 index 1f7c884f2..000000000 Binary files a/sprites/JUNKF0.png and /dev/null differ diff --git a/sprites/KSX1A0.png b/sprites/KSX1A0.png index dc5dd8f42..220677ebd 100644 Binary files a/sprites/KSX1A0.png and b/sprites/KSX1A0.png differ diff --git a/sprites/KSX1B0.png b/sprites/KSX1B0.png index 6cf5a44a3..40a6a7a93 100644 Binary files a/sprites/KSX1B0.png and b/sprites/KSX1B0.png differ diff --git a/sprites/KSX1C0.png b/sprites/KSX1C0.png index aeda257ed..4e46eba16 100644 Binary files a/sprites/KSX1C0.png and b/sprites/KSX1C0.png differ diff --git a/sprites/KSX1D0.png b/sprites/KSX1D0.png index 82b01d1a7..730fbd4e4 100644 Binary files a/sprites/KSX1D0.png and b/sprites/KSX1D0.png differ diff --git a/sprites/KSX1E0.png b/sprites/KSX1E0.png index 1c31c91cf..be08f1835 100644 Binary files a/sprites/KSX1E0.png and b/sprites/KSX1E0.png differ diff --git a/sprites/KSX1F0.png b/sprites/KSX1F0.png index 9ed69e223..e4557750e 100644 Binary files a/sprites/KSX1F0.png and b/sprites/KSX1F0.png differ diff --git a/sprites/KSX1G0.png b/sprites/KSX1G0.png index dc0e65ca4..6d6a5f2d9 100644 Binary files a/sprites/KSX1G0.png and b/sprites/KSX1G0.png differ diff --git a/sprites/KSX1H0.png b/sprites/KSX1H0.png index 994197924..f4cde6a6c 100644 Binary files a/sprites/KSX1H0.png and b/sprites/KSX1H0.png differ diff --git a/sprites/KSX1I0.png b/sprites/KSX1I0.png index e2267cd69..a5f8dbe30 100644 Binary files a/sprites/KSX1I0.png and b/sprites/KSX1I0.png differ diff --git a/sprites/KSX1J0.png b/sprites/KSX1J0.png index a7164492b..9406d7ed3 100644 Binary files a/sprites/KSX1J0.png and b/sprites/KSX1J0.png differ diff --git a/sprites/KSX1K0.png b/sprites/KSX1K0.png index f7bb666f1..b370e8450 100644 Binary files a/sprites/KSX1K0.png and b/sprites/KSX1K0.png differ diff --git a/sprites/KSX1L0.png b/sprites/KSX1L0.png index 5a63b4c68..b61f93089 100644 Binary files a/sprites/KSX1L0.png and b/sprites/KSX1L0.png differ diff --git a/sprites/KSX1M0.png b/sprites/KSX1M0.png index d6996b0c6..b8ec08637 100644 Binary files a/sprites/KSX1M0.png and b/sprites/KSX1M0.png differ diff --git a/sprites/KSX1N0.png b/sprites/KSX1N0.png index 923c27ffa..67a80310e 100644 Binary files a/sprites/KSX1N0.png and b/sprites/KSX1N0.png differ diff --git a/sprites/KSX1O0.png b/sprites/KSX1O0.png index 903141e52..67c8ac86f 100644 Binary files a/sprites/KSX1O0.png and b/sprites/KSX1O0.png differ diff --git a/sprites/KSX1P0.png b/sprites/KSX1P0.png index a3ad3333a..bc9ae4aeb 100644 Binary files a/sprites/KSX1P0.png and b/sprites/KSX1P0.png differ diff --git a/sprites/KSX1Q0.png b/sprites/KSX1Q0.png index ce1cc246b..2ce1e8c22 100644 Binary files a/sprites/KSX1Q0.png and b/sprites/KSX1Q0.png differ diff --git a/sprites/KSX1R0.png b/sprites/KSX1R0.png index f4b806f9b..42aec0c8a 100644 Binary files a/sprites/KSX1R0.png and b/sprites/KSX1R0.png differ diff --git a/sprites/KSX1S0.png b/sprites/KSX1S0.png index 6da90c156..94a516f67 100644 Binary files a/sprites/KSX1S0.png and b/sprites/KSX1S0.png differ diff --git a/sprites/KSX1T0.png b/sprites/KSX1T0.png index fcb3fa371..b950c0b20 100644 Binary files a/sprites/KSX1T0.png and b/sprites/KSX1T0.png differ diff --git a/sprites/KSX1U0.png b/sprites/KSX1U0.png index 97124e681..165dfd91c 100644 Binary files a/sprites/KSX1U0.png and b/sprites/KSX1U0.png differ diff --git a/sprites/KSX1V0.png b/sprites/KSX1V0.png index f3d3fad41..80170afd0 100644 Binary files a/sprites/KSX1V0.png and b/sprites/KSX1V0.png differ diff --git a/sprites/KSX1W0.png b/sprites/KSX1W0.png index e23108675..e29a750f3 100644 Binary files a/sprites/KSX1W0.png and b/sprites/KSX1W0.png differ diff --git a/sprites/KSX1X0.png b/sprites/KSX1X0.png index c5e51e081..e8b1d4719 100644 Binary files a/sprites/KSX1X0.png and b/sprites/KSX1X0.png differ diff --git a/sprites/KSX1Y0.png b/sprites/KSX1Y0.png index 46c5c40f3..d4deab9aa 100644 Binary files a/sprites/KSX1Y0.png and b/sprites/KSX1Y0.png differ diff --git a/sprites/KSX1Z0.png b/sprites/KSX1Z0.png index 4747ef387..f3dc78fe0 100644 Binary files a/sprites/KSX1Z0.png and b/sprites/KSX1Z0.png differ diff --git a/sprites/KSX1[0.png b/sprites/KSX1[0.png index 9579419b3..6540e9ce8 100644 Binary files a/sprites/KSX1[0.png and b/sprites/KSX1[0.png differ diff --git a/sprites/KSX1]0.png b/sprites/KSX1]0.png index f0d1d44cd..e402aed79 100644 Binary files a/sprites/KSX1]0.png and b/sprites/KSX1]0.png differ diff --git a/sprites/KSX1^0.png b/sprites/KSX1^0.png index 0cbe184ea..fd026d6b4 100644 Binary files a/sprites/KSX1^0.png and b/sprites/KSX1^0.png differ diff --git a/sprites/KSX2B0.png b/sprites/KSX2B0.png index 0bda4decc..f29410d2e 100644 Binary files a/sprites/KSX2B0.png and b/sprites/KSX2B0.png differ diff --git a/sprites/KSX2C0.png b/sprites/KSX2C0.png index 5b5a76400..7df3f2da8 100644 Binary files a/sprites/KSX2C0.png and b/sprites/KSX2C0.png differ diff --git a/sprites/KSX2D0.png b/sprites/KSX2D0.png index 05b3c0559..bb22e95e6 100644 Binary files a/sprites/KSX2D0.png and b/sprites/KSX2D0.png differ diff --git a/sprites/KSX2E0.png b/sprites/KSX2E0.png index 42c0b12f1..b2f5aad55 100644 Binary files a/sprites/KSX2E0.png and b/sprites/KSX2E0.png differ diff --git a/sprites/KSX2F0.png b/sprites/KSX2F0.png index ae20b28ee..9882a0a1f 100644 Binary files a/sprites/KSX2F0.png and b/sprites/KSX2F0.png differ diff --git a/sprites/KSX2G0.png b/sprites/KSX2G0.png index fd59c055d..00065166d 100644 Binary files a/sprites/KSX2G0.png and b/sprites/KSX2G0.png differ diff --git a/sprites/KSX2H0.png b/sprites/KSX2H0.png index fcb4367f5..958e54cb9 100644 Binary files a/sprites/KSX2H0.png and b/sprites/KSX2H0.png differ diff --git a/sprites/KSX2I0.png b/sprites/KSX2I0.png index 8e1d3165c..8015167d2 100644 Binary files a/sprites/KSX2I0.png and b/sprites/KSX2I0.png differ diff --git a/sprites/KSX2J0.png b/sprites/KSX2J0.png index ae34a308e..c9414e876 100644 Binary files a/sprites/KSX2J0.png and b/sprites/KSX2J0.png differ diff --git a/sprites/KSX2K0.png b/sprites/KSX2K0.png index 0817ab916..fde9af781 100644 Binary files a/sprites/KSX2K0.png and b/sprites/KSX2K0.png differ diff --git a/sprites/KSX2L0.png b/sprites/KSX2L0.png index b73132048..875cdb14a 100644 Binary files a/sprites/KSX2L0.png and b/sprites/KSX2L0.png differ diff --git a/sprites/KSX2M0.png b/sprites/KSX2M0.png index 32d589728..8a565174c 100644 Binary files a/sprites/KSX2M0.png and b/sprites/KSX2M0.png differ diff --git a/sprites/KSX2N0.png b/sprites/KSX2N0.png index b9c751c6a..e6a3159a4 100644 Binary files a/sprites/KSX2N0.png and b/sprites/KSX2N0.png differ diff --git a/sprites/KSX2O0.png b/sprites/KSX2O0.png index c23224386..ae58b9d4b 100644 Binary files a/sprites/KSX2O0.png and b/sprites/KSX2O0.png differ diff --git a/sprites/KSX2P0.png b/sprites/KSX2P0.png index 3394e3e30..50f0896ec 100644 Binary files a/sprites/KSX2P0.png and b/sprites/KSX2P0.png differ diff --git a/sprites/KSX2Q0.png b/sprites/KSX2Q0.png index b6dd3c034..f016e2c8a 100644 Binary files a/sprites/KSX2Q0.png and b/sprites/KSX2Q0.png differ diff --git a/sprites/KSX2R0.png b/sprites/KSX2R0.png index 9fac3b30e..f5d680b56 100644 Binary files a/sprites/KSX2R0.png and b/sprites/KSX2R0.png differ diff --git a/sprites/KSX2S0.png b/sprites/KSX2S0.png index f238fef3f..e1dbfc234 100644 Binary files a/sprites/KSX2S0.png and b/sprites/KSX2S0.png differ diff --git a/sprites/KSX2T0.png b/sprites/KSX2T0.png index c9adc25c5..8db1c7cc9 100644 Binary files a/sprites/KSX2T0.png and b/sprites/KSX2T0.png differ diff --git a/sprites/KSX2U0.png b/sprites/KSX2U0.png index 83b9742e4..c1733152f 100644 Binary files a/sprites/KSX2U0.png and b/sprites/KSX2U0.png differ diff --git a/sprites/KSX2V0.png b/sprites/KSX2V0.png index 196c0fbd1..4a860288a 100644 Binary files a/sprites/KSX2V0.png and b/sprites/KSX2V0.png differ diff --git a/sprites/KSX2W0.png b/sprites/KSX2W0.png index 4457555a1..7ab4fccce 100644 Binary files a/sprites/KSX2W0.png and b/sprites/KSX2W0.png differ diff --git a/sprites/KSX2X0.png b/sprites/KSX2X0.png index 306421659..3190e31d5 100644 Binary files a/sprites/KSX2X0.png and b/sprites/KSX2X0.png differ diff --git a/sprites/KSX2Y0.png b/sprites/KSX2Y0.png index 26e53ffcb..02384a308 100644 Binary files a/sprites/KSX2Y0.png and b/sprites/KSX2Y0.png differ diff --git a/sprites/KSX2Z0.png b/sprites/KSX2Z0.png index c94e67d54..0cb34572c 100644 Binary files a/sprites/KSX2Z0.png and b/sprites/KSX2Z0.png differ diff --git a/sprites/KSX2[0.png b/sprites/KSX2[0.png index 578891fe4..0dd9e42cf 100644 Binary files a/sprites/KSX2[0.png and b/sprites/KSX2[0.png differ diff --git a/sprites/KSX2]0.png b/sprites/KSX2]0.png index 77c671889..8ac80579c 100644 Binary files a/sprites/KSX2]0.png and b/sprites/KSX2]0.png differ diff --git a/sprites/KSX2^0.png b/sprites/KSX2^0.png index 669dd68f5..cc6281e84 100644 Binary files a/sprites/KSX2^0.png and b/sprites/KSX2^0.png differ diff --git a/sprites/KSX3A0.png b/sprites/KSX3A0.png index 8cab03031..8a8641029 100644 Binary files a/sprites/KSX3A0.png and b/sprites/KSX3A0.png differ diff --git a/sprites/KSX3B0.png b/sprites/KSX3B0.png index b4c2c87c2..036655088 100644 Binary files a/sprites/KSX3B0.png and b/sprites/KSX3B0.png differ diff --git a/sprites/KSX3C0.png b/sprites/KSX3C0.png index 9da73343d..478d1bc57 100644 Binary files a/sprites/KSX3C0.png and b/sprites/KSX3C0.png differ diff --git a/sprites/KSX3D0.png b/sprites/KSX3D0.png index 6dc66d2e4..067e8b735 100644 Binary files a/sprites/KSX3D0.png and b/sprites/KSX3D0.png differ diff --git a/sprites/KSX3E0.png b/sprites/KSX3E0.png index 8ebd7a6a7..35d284dd0 100644 Binary files a/sprites/KSX3E0.png and b/sprites/KSX3E0.png differ diff --git a/sprites/KSX3F0.png b/sprites/KSX3F0.png index 1f7a82d68..3c5fd92aa 100644 Binary files a/sprites/KSX3F0.png and b/sprites/KSX3F0.png differ diff --git a/sprites/KSX3G0.png b/sprites/KSX3G0.png index 705d83193..aef05a1fb 100644 Binary files a/sprites/KSX3G0.png and b/sprites/KSX3G0.png differ diff --git a/sprites/KSX3H0.png b/sprites/KSX3H0.png index fa62fc464..53849bbef 100644 Binary files a/sprites/KSX3H0.png and b/sprites/KSX3H0.png differ diff --git a/sprites/KSX3I0.png b/sprites/KSX3I0.png index fbc9648be..01e957418 100644 Binary files a/sprites/KSX3I0.png and b/sprites/KSX3I0.png differ diff --git a/sprites/KSX3J0.png b/sprites/KSX3J0.png index 2a630021d..5077a4f67 100644 Binary files a/sprites/KSX3J0.png and b/sprites/KSX3J0.png differ diff --git a/sprites/KSX3K0.png b/sprites/KSX3K0.png index dcbd51861..77c7bd541 100644 Binary files a/sprites/KSX3K0.png and b/sprites/KSX3K0.png differ diff --git a/sprites/KSX3L0.png b/sprites/KSX3L0.png index f4bbbf82f..fc9923833 100644 Binary files a/sprites/KSX3L0.png and b/sprites/KSX3L0.png differ diff --git a/sprites/KSX3M0.png b/sprites/KSX3M0.png index ec835b01e..15dc282ed 100644 Binary files a/sprites/KSX3M0.png and b/sprites/KSX3M0.png differ diff --git a/sprites/KSX3N0.png b/sprites/KSX3N0.png index 9ccf26701..55c031c3e 100644 Binary files a/sprites/KSX3N0.png and b/sprites/KSX3N0.png differ diff --git a/sprites/KSX3O0.png b/sprites/KSX3O0.png index e85b3c189..216e6f437 100644 Binary files a/sprites/KSX3O0.png and b/sprites/KSX3O0.png differ diff --git a/sprites/KSX3P0.png b/sprites/KSX3P0.png index dc3a9ca87..f901d07c1 100644 Binary files a/sprites/KSX3P0.png and b/sprites/KSX3P0.png differ diff --git a/sprites/KSX3Q0.png b/sprites/KSX3Q0.png index 8e42a126a..f974503a1 100644 Binary files a/sprites/KSX3Q0.png and b/sprites/KSX3Q0.png differ diff --git a/sprites/KSX3R0.png b/sprites/KSX3R0.png index 27b92a751..0e98ca731 100644 Binary files a/sprites/KSX3R0.png and b/sprites/KSX3R0.png differ diff --git a/sprites/KSX3S0.png b/sprites/KSX3S0.png index 100f97a00..a46a8a24d 100644 Binary files a/sprites/KSX3S0.png and b/sprites/KSX3S0.png differ diff --git a/sprites/KSX3T0.png b/sprites/KSX3T0.png index 4a33e7691..ac2a3c87d 100644 Binary files a/sprites/KSX3T0.png and b/sprites/KSX3T0.png differ diff --git a/sprites/KSX3U0.png b/sprites/KSX3U0.png index e819dcc3a..0d3c50169 100644 Binary files a/sprites/KSX3U0.png and b/sprites/KSX3U0.png differ diff --git a/sprites/KSX3V0.png b/sprites/KSX3V0.png index 7149a5324..1fc46b8f9 100644 Binary files a/sprites/KSX3V0.png and b/sprites/KSX3V0.png differ diff --git a/sprites/KSX3W0.png b/sprites/KSX3W0.png index 0abb61233..e653c35ec 100644 Binary files a/sprites/KSX3W0.png and b/sprites/KSX3W0.png differ diff --git a/sprites/KSX3X0.png b/sprites/KSX3X0.png index b6855d0f2..5317ffc15 100644 Binary files a/sprites/KSX3X0.png and b/sprites/KSX3X0.png differ diff --git a/sprites/KSX3Y0.png b/sprites/KSX3Y0.png index 0a960053e..e1cd32cd1 100644 Binary files a/sprites/KSX3Y0.png and b/sprites/KSX3Y0.png differ diff --git a/sprites/KSX3Z0.png b/sprites/KSX3Z0.png index 15ff0385d..f9be626d5 100644 Binary files a/sprites/KSX3Z0.png and b/sprites/KSX3Z0.png differ diff --git a/sprites/KSX3[0.png b/sprites/KSX3[0.png index 255e4285a..7d069a5bc 100644 Binary files a/sprites/KSX3[0.png and b/sprites/KSX3[0.png differ diff --git a/sprites/KSX3]0.png b/sprites/KSX3]0.png index c6e9bd28f..9cbb31a5f 100644 Binary files a/sprites/KSX3]0.png and b/sprites/KSX3]0.png differ diff --git a/sprites/KSX3^0.png b/sprites/KSX3^0.png index fc94da5ab..ac7846b29 100644 Binary files a/sprites/KSX3^0.png and b/sprites/KSX3^0.png differ diff --git a/sprites/LGFDA0.png b/sprites/LGFDA0.png deleted file mode 100644 index a6f29931f..000000000 Binary files a/sprites/LGFDA0.png and /dev/null differ diff --git a/sprites/MEATA0.png b/sprites/MEATA0.png deleted file mode 100644 index acaad486a..000000000 Binary files a/sprites/MEATA0.png and /dev/null differ diff --git a/sprites/MEATB0.png b/sprites/MEATB0.png deleted file mode 100644 index 5ea68db80..000000000 Binary files a/sprites/MEATB0.png and /dev/null differ diff --git a/sprites/MEATC0.png b/sprites/MEATC0.png deleted file mode 100644 index 82b804a1d..000000000 Binary files a/sprites/MEATC0.png and /dev/null differ diff --git a/sprites/MEATD0.png b/sprites/MEATD0.png deleted file mode 100644 index 7587ec5dc..000000000 Binary files a/sprites/MEATD0.png and /dev/null differ diff --git a/sprites/MEATE0.png b/sprites/MEATE0.png deleted file mode 100644 index d3f669815..000000000 Binary files a/sprites/MEATE0.png and /dev/null differ diff --git a/sprites/MEATF0.png b/sprites/MEATF0.png deleted file mode 100644 index 4338b4248..000000000 Binary files a/sprites/MEATF0.png and /dev/null differ diff --git a/sprites/MHALA0.png b/sprites/MHALA0.png index d0012546d..13660f239 100644 Binary files a/sprites/MHALA0.png and b/sprites/MHALA0.png differ diff --git a/sprites/MKRVA0.png b/sprites/MKRVA0.png index 89aef4022..8a270e00a 100644 Binary files a/sprites/MKRVA0.png and b/sprites/MKRVA0.png differ diff --git a/sprites/MOPFA0.png b/sprites/MOPFA0.png index 1d5d05235..f530a5120 100644 Binary files a/sprites/MOPFA0.png and b/sprites/MOPFA0.png differ diff --git a/sprites/MOXPA0.png b/sprites/MOXPA0.png index 23d324f43..cd82a15b4 100644 Binary files a/sprites/MOXPA0.png and b/sprites/MOXPA0.png differ diff --git a/sprites/MOXPB0.png b/sprites/MOXPB0.png index 1a0900cca..a4013742f 100644 Binary files a/sprites/MOXPB0.png and b/sprites/MOXPB0.png differ diff --git a/sprites/MOXPC0.png b/sprites/MOXPC0.png index 651ed6c64..b85bb6ab5 100644 Binary files a/sprites/MOXPC0.png and b/sprites/MOXPC0.png differ diff --git a/sprites/MOXPD0.png b/sprites/MOXPD0.png index 5e2134437..bc997b862 100644 Binary files a/sprites/MOXPD0.png and b/sprites/MOXPD0.png differ diff --git a/sprites/MOXPE0.png b/sprites/MOXPE0.png index 866ad26a2..01d66df8a 100644 Binary files a/sprites/MOXPE0.png and b/sprites/MOXPE0.png differ diff --git a/sprites/MOXPF0.png b/sprites/MOXPF0.png index 7e6d9b649..b83c07a62 100644 Binary files a/sprites/MOXPF0.png and b/sprites/MOXPF0.png differ diff --git a/sprites/MOXPG0.png b/sprites/MOXPG0.png index 87cf2f343..80b405eb0 100644 Binary files a/sprites/MOXPG0.png and b/sprites/MOXPG0.png differ diff --git a/sprites/MOXPH0.png b/sprites/MOXPH0.png index 4a30f6fc9..06d85c600 100644 Binary files a/sprites/MOXPH0.png and b/sprites/MOXPH0.png differ diff --git a/sprites/MOXPI0.png b/sprites/MOXPI0.png index 338d338eb..8f55f200a 100644 Binary files a/sprites/MOXPI0.png and b/sprites/MOXPI0.png differ diff --git a/sprites/MOXPJ0.png b/sprites/MOXPJ0.png index 20b83facf..a4129795f 100644 Binary files a/sprites/MOXPJ0.png and b/sprites/MOXPJ0.png differ diff --git a/sprites/MOXPK0.png b/sprites/MOXPK0.png index 26007dd62..ef8c5e192 100644 Binary files a/sprites/MOXPK0.png and b/sprites/MOXPK0.png differ diff --git a/sprites/MOXPL0.png b/sprites/MOXPL0.png index e5b9988ce..10398bade 100644 Binary files a/sprites/MOXPL0.png and b/sprites/MOXPL0.png differ diff --git a/sprites/MOXPM0.png b/sprites/MOXPM0.png index fe4e69125..e0d4a20c4 100644 Binary files a/sprites/MOXPM0.png and b/sprites/MOXPM0.png differ diff --git a/sprites/MOXPN0.png b/sprites/MOXPN0.png index a7e864259..81b325dac 100644 Binary files a/sprites/MOXPN0.png and b/sprites/MOXPN0.png differ diff --git a/sprites/MOXPO0.png b/sprites/MOXPO0.png index e6f846fbe..ee9f772c1 100644 Binary files a/sprites/MOXPO0.png and b/sprites/MOXPO0.png differ diff --git a/sprites/MOXPP0.png b/sprites/MOXPP0.png index 8c6eea1a8..0d7ff6468 100644 Binary files a/sprites/MOXPP0.png and b/sprites/MOXPP0.png differ diff --git a/sprites/MOXPQ0.png b/sprites/MOXPQ0.png index d9d25a51e..0cc5a6d98 100644 Binary files a/sprites/MOXPQ0.png and b/sprites/MOXPQ0.png differ diff --git a/sprites/MOXPR0.png b/sprites/MOXPR0.png index 26438e3fa..106b2e0b7 100644 Binary files a/sprites/MOXPR0.png and b/sprites/MOXPR0.png differ diff --git a/sprites/MOXPS0.png b/sprites/MOXPS0.png index 69c5f45c4..85a9ed0e1 100644 Binary files a/sprites/MOXPS0.png and b/sprites/MOXPS0.png differ diff --git a/sprites/MOXPT0.png b/sprites/MOXPT0.png index 028d3bb64..e2523d067 100644 Binary files a/sprites/MOXPT0.png and b/sprites/MOXPT0.png differ diff --git a/sprites/MOXPU0.png b/sprites/MOXPU0.png index 31562f6ad..9572ec59e 100644 Binary files a/sprites/MOXPU0.png and b/sprites/MOXPU0.png differ diff --git a/sprites/MOXPV0.png b/sprites/MOXPV0.png index d639cbe26..ca556dcbd 100644 Binary files a/sprites/MOXPV0.png and b/sprites/MOXPV0.png differ diff --git a/sprites/MOXPW0.png b/sprites/MOXPW0.png index 4210bb877..862a2ec6d 100644 Binary files a/sprites/MOXPW0.png and b/sprites/MOXPW0.png differ diff --git a/sprites/MOXPX0.png b/sprites/MOXPX0.png index 6f06b0f96..c72f6b353 100644 Binary files a/sprites/MOXPX0.png and b/sprites/MOXPX0.png differ diff --git a/sprites/MOXPY0.png b/sprites/MOXPY0.png index 406f1e4ee..65f4ec8f0 100644 Binary files a/sprites/MOXPY0.png and b/sprites/MOXPY0.png differ diff --git a/sprites/MSMKA0.png b/sprites/MSMKA0.png new file mode 100644 index 000000000..8c057fa21 Binary files /dev/null and b/sprites/MSMKA0.png differ diff --git a/sprites/MSMKB0.png b/sprites/MSMKB0.png new file mode 100644 index 000000000..4977856c6 Binary files /dev/null and b/sprites/MSMKB0.png differ diff --git a/sprites/MSMKC0.png b/sprites/MSMKC0.png new file mode 100644 index 000000000..72022d3f2 Binary files /dev/null and b/sprites/MSMKC0.png differ diff --git a/sprites/MSMKD0.png b/sprites/MSMKD0.png new file mode 100644 index 000000000..42c3b3e43 Binary files /dev/null and b/sprites/MSMKD0.png differ diff --git a/sprites/MSMKE0.png b/sprites/MSMKE0.png new file mode 100644 index 000000000..14e00247e Binary files /dev/null and b/sprites/MSMKE0.png differ diff --git a/sprites/MSMKF0.png b/sprites/MSMKF0.png new file mode 100644 index 000000000..9551ab618 Binary files /dev/null and b/sprites/MSMKF0.png differ diff --git a/sprites/MSMKG0.png b/sprites/MSMKG0.png new file mode 100644 index 000000000..6039ae379 Binary files /dev/null and b/sprites/MSMKG0.png differ diff --git a/sprites/MSMKH0.png b/sprites/MSMKH0.png new file mode 100644 index 000000000..be2220518 Binary files /dev/null and b/sprites/MSMKH0.png differ diff --git a/sprites/NFLMA0.png b/sprites/NFLMA0.png new file mode 100644 index 000000000..d0203f3aa Binary files /dev/null and b/sprites/NFLMA0.png differ diff --git a/sprites/NFLMB0.png b/sprites/NFLMB0.png new file mode 100644 index 000000000..7c685f5d2 Binary files /dev/null and b/sprites/NFLMB0.png differ diff --git a/sprites/NFLMC0.png b/sprites/NFLMC0.png new file mode 100644 index 000000000..c3bcf914d Binary files /dev/null and b/sprites/NFLMC0.png differ diff --git a/sprites/NFLMD0.png b/sprites/NFLMD0.png new file mode 100644 index 000000000..237809dd3 Binary files /dev/null and b/sprites/NFLMD0.png differ diff --git a/sprites/NFLME0.png b/sprites/NFLME0.png new file mode 100644 index 000000000..aebf9b285 Binary files /dev/null and b/sprites/NFLME0.png differ diff --git a/sprites/NFLMF0.png b/sprites/NFLMF0.png new file mode 100644 index 000000000..98d661702 Binary files /dev/null and b/sprites/NFLMF0.png differ diff --git a/sprites/NFLMG0.png b/sprites/NFLMG0.png new file mode 100644 index 000000000..82432762a Binary files /dev/null and b/sprites/NFLMG0.png differ diff --git a/sprites/NFLMH0.png b/sprites/NFLMH0.png new file mode 100644 index 000000000..f4ff206db Binary files /dev/null and b/sprites/NFLMH0.png differ diff --git a/sprites/NFLMI0.png b/sprites/NFLMI0.png new file mode 100644 index 000000000..f24d81dbc Binary files /dev/null and b/sprites/NFLMI0.png differ diff --git a/sprites/NFLMJ0.png b/sprites/NFLMJ0.png new file mode 100644 index 000000000..84a03c8f2 Binary files /dev/null and b/sprites/NFLMJ0.png differ diff --git a/sprites/NFLMK0.png b/sprites/NFLMK0.png new file mode 100644 index 000000000..9158eaf22 Binary files /dev/null and b/sprites/NFLMK0.png differ diff --git a/sprites/NFLML0.png b/sprites/NFLML0.png new file mode 100644 index 000000000..9e8e1621d Binary files /dev/null and b/sprites/NFLML0.png differ diff --git a/sprites/NFLMM0.png b/sprites/NFLMM0.png new file mode 100644 index 000000000..d1ce2e709 Binary files /dev/null and b/sprites/NFLMM0.png differ diff --git a/sprites/NFLMN0.png b/sprites/NFLMN0.png new file mode 100644 index 000000000..fb057dec5 Binary files /dev/null and b/sprites/NFLMN0.png differ diff --git a/sprites/NFLMO0.png b/sprites/NFLMO0.png new file mode 100644 index 000000000..9cf55c6dc Binary files /dev/null and b/sprites/NFLMO0.png differ diff --git a/sprites/NFLMP0.png b/sprites/NFLMP0.png new file mode 100644 index 000000000..2ad53d6c3 Binary files /dev/null and b/sprites/NFLMP0.png differ diff --git a/sprites/NFLMQ0.png b/sprites/NFLMQ0.png new file mode 100644 index 000000000..1e2da7fbc Binary files /dev/null and b/sprites/NFLMQ0.png differ diff --git a/sprites/NFLMR0.png b/sprites/NFLMR0.png new file mode 100644 index 000000000..fa19de58e Binary files /dev/null and b/sprites/NFLMR0.png differ diff --git a/sprites/NFLMS0.png b/sprites/NFLMS0.png new file mode 100644 index 000000000..22b98343c Binary files /dev/null and b/sprites/NFLMS0.png differ diff --git a/sprites/NFLMT0.png b/sprites/NFLMT0.png new file mode 100644 index 000000000..df8c6b710 Binary files /dev/null and b/sprites/NFLMT0.png differ diff --git a/sprites/NFLMU0.png b/sprites/NFLMU0.png new file mode 100644 index 000000000..5ec3fa8f2 Binary files /dev/null and b/sprites/NFLMU0.png differ diff --git a/sprites/NSFLA0.png b/sprites/NSFLA0.png new file mode 100644 index 000000000..f62e45656 Binary files /dev/null and b/sprites/NSFLA0.png differ diff --git a/sprites/NSFLB0.png b/sprites/NSFLB0.png new file mode 100644 index 000000000..54063c49a Binary files /dev/null and b/sprites/NSFLB0.png differ diff --git a/sprites/NSFLC0.png b/sprites/NSFLC0.png new file mode 100644 index 000000000..c8e8fa3b6 Binary files /dev/null and b/sprites/NSFLC0.png differ diff --git a/sprites/PBBLA0.png b/sprites/PBBLA0.png new file mode 100644 index 000000000..347371001 Binary files /dev/null and b/sprites/PBBLA0.png differ diff --git a/sprites/PBBLB0.png b/sprites/PBBLB0.png new file mode 100644 index 000000000..3646acc1e Binary files /dev/null and b/sprites/PBBLB0.png differ diff --git a/sprites/PBBLC0.png b/sprites/PBBLC0.png new file mode 100644 index 000000000..c6103fb8c Binary files /dev/null and b/sprites/PBBLC0.png differ diff --git a/sprites/PBBLD0.png b/sprites/PBBLD0.png new file mode 100644 index 000000000..3466cc1b8 Binary files /dev/null and b/sprites/PBBLD0.png differ diff --git a/sprites/PBBLE0.png b/sprites/PBBLE0.png new file mode 100644 index 000000000..0d7163a61 Binary files /dev/null and b/sprites/PBBLE0.png differ diff --git a/sprites/PBBLF0.png b/sprites/PBBLF0.png new file mode 100644 index 000000000..7fb190fff Binary files /dev/null and b/sprites/PBBLF0.png differ diff --git a/sprites/PBBLG0.png b/sprites/PBBLG0.png new file mode 100644 index 000000000..cb73a7850 Binary files /dev/null and b/sprites/PBBLG0.png differ diff --git a/sprites/PBBLH0.png b/sprites/PBBLH0.png new file mode 100644 index 000000000..5f52b7f5c Binary files /dev/null and b/sprites/PBBLH0.png differ diff --git a/sprites/PBBLI0.png b/sprites/PBBLI0.png new file mode 100644 index 000000000..28f168677 Binary files /dev/null and b/sprites/PBBLI0.png differ diff --git a/sprites/PBBLJ0.png b/sprites/PBBLJ0.png new file mode 100644 index 000000000..e8dc1cc57 Binary files /dev/null and b/sprites/PBBLJ0.png differ diff --git a/sprites/PBMBA0.png b/sprites/PBMBA0.png new file mode 100644 index 000000000..2cfffbe40 Binary files /dev/null and b/sprites/PBMBA0.png differ diff --git a/sprites/PBMBB0.png b/sprites/PBMBB0.png new file mode 100644 index 000000000..e876993ef Binary files /dev/null and b/sprites/PBMBB0.png differ diff --git a/sprites/PBMBC0.png b/sprites/PBMBC0.png new file mode 100644 index 000000000..14d765853 Binary files /dev/null and b/sprites/PBMBC0.png differ diff --git a/sprites/PBMBD0.png b/sprites/PBMBD0.png new file mode 100644 index 000000000..04427462c Binary files /dev/null and b/sprites/PBMBD0.png differ diff --git a/sprites/PBMBE0.png b/sprites/PBMBE0.png new file mode 100644 index 000000000..29cb6ed61 Binary files /dev/null and b/sprites/PBMBE0.png differ diff --git a/sprites/PBMBF0.png b/sprites/PBMBF0.png new file mode 100644 index 000000000..bb5b7b30e Binary files /dev/null and b/sprites/PBMBF0.png differ diff --git a/sprites/PBMBG0.png b/sprites/PBMBG0.png new file mode 100644 index 000000000..db37e063a Binary files /dev/null and b/sprites/PBMBG0.png differ diff --git a/sprites/PBMBH0.png b/sprites/PBMBH0.png new file mode 100644 index 000000000..057039d56 Binary files /dev/null and b/sprites/PBMBH0.png differ diff --git a/sprites/PBMBI0.png b/sprites/PBMBI0.png new file mode 100644 index 000000000..eb62ad526 Binary files /dev/null and b/sprites/PBMBI0.png differ diff --git a/sprites/PBMBJ0.png b/sprites/PBMBJ0.png new file mode 100644 index 000000000..5aa133fe2 Binary files /dev/null and b/sprites/PBMBJ0.png differ diff --git a/sprites/PBMBK0.png b/sprites/PBMBK0.png new file mode 100644 index 000000000..e50f99a62 Binary files /dev/null and b/sprites/PBMBK0.png differ diff --git a/sprites/PBMBL0.png b/sprites/PBMBL0.png new file mode 100644 index 000000000..1cc690283 Binary files /dev/null and b/sprites/PBMBL0.png differ diff --git a/sprites/QEMBA0.png b/sprites/QEMBA0.png new file mode 100644 index 000000000..046a4b0b4 Binary files /dev/null and b/sprites/QEMBA0.png differ diff --git a/sprites/QEMBB0.png b/sprites/QEMBB0.png new file mode 100644 index 000000000..1b01d4b61 Binary files /dev/null and b/sprites/QEMBB0.png differ diff --git a/sprites/QEMBC0.png b/sprites/QEMBC0.png new file mode 100644 index 000000000..e6f34c5ad Binary files /dev/null and b/sprites/QEMBC0.png differ diff --git a/sprites/QEMBD0.png b/sprites/QEMBD0.png new file mode 100644 index 000000000..475433fba Binary files /dev/null and b/sprites/QEMBD0.png differ diff --git a/sprites/QEMBE0.png b/sprites/QEMBE0.png new file mode 100644 index 000000000..adb9b5aaf Binary files /dev/null and b/sprites/QEMBE0.png differ diff --git a/sprites/QFBLA0.png b/sprites/QFBLA0.png new file mode 100644 index 000000000..f86b9ae2e Binary files /dev/null and b/sprites/QFBLA0.png differ diff --git a/sprites/QFBLB0.png b/sprites/QFBLB0.png new file mode 100644 index 000000000..47ad135d3 Binary files /dev/null and b/sprites/QFBLB0.png differ diff --git a/sprites/QFBLC0.png b/sprites/QFBLC0.png new file mode 100644 index 000000000..20651f1d6 Binary files /dev/null and b/sprites/QFBLC0.png differ diff --git a/sprites/QFBLD0.png b/sprites/QFBLD0.png new file mode 100644 index 000000000..9766cb1d0 Binary files /dev/null and b/sprites/QFBLD0.png differ diff --git a/sprites/QFBLE0.png b/sprites/QFBLE0.png new file mode 100644 index 000000000..c5ba08ec2 Binary files /dev/null and b/sprites/QFBLE0.png differ diff --git a/sprites/QFBLF0.png b/sprites/QFBLF0.png new file mode 100644 index 000000000..24d6f2aad Binary files /dev/null and b/sprites/QFBLF0.png differ diff --git a/sprites/QFBLG0.png b/sprites/QFBLG0.png new file mode 100644 index 000000000..1240b1e22 Binary files /dev/null and b/sprites/QFBLG0.png differ diff --git a/sprites/QFBLH0.png b/sprites/QFBLH0.png new file mode 100644 index 000000000..b9babef0d Binary files /dev/null and b/sprites/QFBLH0.png differ diff --git a/sprites/QFBLI0.png b/sprites/QFBLI0.png new file mode 100644 index 000000000..40d0a0e02 Binary files /dev/null and b/sprites/QFBLI0.png differ diff --git a/sprites/QFBLJ0.png b/sprites/QFBLJ0.png new file mode 100644 index 000000000..74252dfcb Binary files /dev/null and b/sprites/QFBLJ0.png differ diff --git a/sprites/QFLRA0.png b/sprites/QFLRA0.png new file mode 100644 index 000000000..fbfd0570e Binary files /dev/null and b/sprites/QFLRA0.png differ diff --git a/sprites/QSM6D0.png b/sprites/QSM6D0.png index 40094d2b9..2f66b65d4 100644 Binary files a/sprites/QSM6D0.png and b/sprites/QSM6D0.png differ diff --git a/sprites/QSM6E0.png b/sprites/QSM6E0.png index 31db8bc8c..9a6b8e9b1 100644 Binary files a/sprites/QSM6E0.png and b/sprites/QSM6E0.png differ diff --git a/sprites/QSM6F0.png b/sprites/QSM6F0.png index 3cfaf629e..354b7c94f 100644 Binary files a/sprites/QSM6F0.png and b/sprites/QSM6F0.png differ diff --git a/sprites/QSM6G0.png b/sprites/QSM6G0.png index b838f164b..2ac975174 100644 Binary files a/sprites/QSM6G0.png and b/sprites/QSM6G0.png differ diff --git a/sprites/QSM6H0.png b/sprites/QSM6H0.png index 00ade0aff..977650a81 100644 Binary files a/sprites/QSM6H0.png and b/sprites/QSM6H0.png differ diff --git a/sprites/QSM6I0.png b/sprites/QSM6I0.png index 01bbc3bab..7244ebccb 100644 Binary files a/sprites/QSM6I0.png and b/sprites/QSM6I0.png differ diff --git a/sprites/QSM6J0.png b/sprites/QSM6J0.png index 0a3f91349..e629f3679 100644 Binary files a/sprites/QSM6J0.png and b/sprites/QSM6J0.png differ diff --git a/sprites/QSM6K0.png b/sprites/QSM6K0.png index 3f5f00409..f51c3ac75 100644 Binary files a/sprites/QSM6K0.png and b/sprites/QSM6K0.png differ diff --git a/sprites/QSM6L0.png b/sprites/QSM6L0.png index c73c56111..093715e66 100644 Binary files a/sprites/QSM6L0.png and b/sprites/QSM6L0.png differ diff --git a/sprites/QSM6M0.png b/sprites/QSM6M0.png index e3a8710ce..249fe3415 100644 Binary files a/sprites/QSM6M0.png and b/sprites/QSM6M0.png differ diff --git a/sprites/QSM6N0.png b/sprites/QSM6N0.png index dcdf42884..d7e7e7ab4 100644 Binary files a/sprites/QSM6N0.png and b/sprites/QSM6N0.png differ diff --git a/sprites/QSM6O0.png b/sprites/QSM6O0.png index 5c9e980c3..719d6b799 100644 Binary files a/sprites/QSM6O0.png and b/sprites/QSM6O0.png differ diff --git a/sprites/QSM6P0.png b/sprites/QSM6P0.png index c85727637..ff901be6b 100644 Binary files a/sprites/QSM6P0.png and b/sprites/QSM6P0.png differ diff --git a/sprites/QSM6Q0.png b/sprites/QSM6Q0.png index 14b25a2db..7cb7e8656 100644 Binary files a/sprites/QSM6Q0.png and b/sprites/QSM6Q0.png differ diff --git a/sprites/QSM6R0.png b/sprites/QSM6R0.png index 020d59d54..39eed43d9 100644 Binary files a/sprites/QSM6R0.png and b/sprites/QSM6R0.png differ diff --git a/sprites/RAYTA0.png b/sprites/RAYTA0.png new file mode 100644 index 000000000..2f80c755f Binary files /dev/null and b/sprites/RAYTA0.png differ diff --git a/sprites/RAYTB0.png b/sprites/RAYTB0.png new file mode 100644 index 000000000..342da32aa Binary files /dev/null and b/sprites/RAYTB0.png differ diff --git a/sprites/RAYTC0.png b/sprites/RAYTC0.png new file mode 100644 index 000000000..1e88d4db7 Binary files /dev/null and b/sprites/RAYTC0.png differ diff --git a/sprites/RAYTD0.png b/sprites/RAYTD0.png new file mode 100644 index 000000000..c58fede4b Binary files /dev/null and b/sprites/RAYTD0.png differ diff --git a/sprites/RAYTE0.png b/sprites/RAYTE0.png new file mode 100644 index 000000000..7ead1bda4 Binary files /dev/null and b/sprites/RAYTE0.png differ diff --git a/sprites/RAYTF0.png b/sprites/RAYTF0.png new file mode 100644 index 000000000..b87c3df44 Binary files /dev/null and b/sprites/RAYTF0.png differ diff --git a/sprites/RAYTG0.png b/sprites/RAYTG0.png new file mode 100644 index 000000000..9d0f261cf Binary files /dev/null and b/sprites/RAYTG0.png differ diff --git a/sprites/RAYTH0.png b/sprites/RAYTH0.png new file mode 100644 index 000000000..f0c75e6bb Binary files /dev/null and b/sprites/RAYTH0.png differ diff --git a/sprites/RAYTI0.png b/sprites/RAYTI0.png new file mode 100644 index 000000000..46b80b00a Binary files /dev/null and b/sprites/RAYTI0.png differ diff --git a/sprites/RAYTJ0.png b/sprites/RAYTJ0.png new file mode 100644 index 000000000..adc61ec05 Binary files /dev/null and b/sprites/RAYTJ0.png differ diff --git a/sprites/dlc/RAYTK0.png b/sprites/RAYTK0.png similarity index 100% rename from sprites/dlc/RAYTK0.png rename to sprites/RAYTK0.png diff --git a/sprites/RFFLA0.png b/sprites/RFFLA0.png new file mode 100644 index 000000000..c78f46ff5 Binary files /dev/null and b/sprites/RFFLA0.png differ diff --git a/sprites/RFFLB0.png b/sprites/RFFLB0.png new file mode 100644 index 000000000..0c03db6d6 Binary files /dev/null and b/sprites/RFFLB0.png differ diff --git a/sprites/RFFLC0.png b/sprites/RFFLC0.png new file mode 100644 index 000000000..39b0479fa Binary files /dev/null and b/sprites/RFFLC0.png differ diff --git a/sprites/RFFLD0.png b/sprites/RFFLD0.png new file mode 100644 index 000000000..959cb1d82 Binary files /dev/null and b/sprites/RFFLD0.png differ diff --git a/sprites/RFFLE0.png b/sprites/RFFLE0.png new file mode 100644 index 000000000..8e48924e6 Binary files /dev/null and b/sprites/RFFLE0.png differ diff --git a/sprites/RFFLF0.png b/sprites/RFFLF0.png new file mode 100644 index 000000000..a5abeb35f Binary files /dev/null and b/sprites/RFFLF0.png differ diff --git a/sprites/RFFLG0.png b/sprites/RFFLG0.png new file mode 100644 index 000000000..09d0d7a90 Binary files /dev/null and b/sprites/RFFLG0.png differ diff --git a/sprites/RFFLH0.png b/sprites/RFFLH0.png new file mode 100644 index 000000000..b96ff2180 Binary files /dev/null and b/sprites/RFFLH0.png differ diff --git a/sprites/RFFLI0.png b/sprites/RFFLI0.png new file mode 100644 index 000000000..959cb1d82 Binary files /dev/null and b/sprites/RFFLI0.png differ diff --git a/sprites/RFFLJ0.png b/sprites/RFFLJ0.png new file mode 100644 index 000000000..456349ff5 Binary files /dev/null and b/sprites/RFFLJ0.png differ diff --git a/sprites/RFLMA0.png b/sprites/RFLMA0.png deleted file mode 100644 index a4e88661e..000000000 Binary files a/sprites/RFLMA0.png and /dev/null differ diff --git a/sprites/RFLMB0.png b/sprites/RFLMB0.png deleted file mode 100644 index 8c5d775c3..000000000 Binary files a/sprites/RFLMB0.png and /dev/null differ diff --git a/sprites/RFLMC0.png b/sprites/RFLMC0.png deleted file mode 100644 index 78ff7c590..000000000 Binary files a/sprites/RFLMC0.png and /dev/null differ diff --git a/sprites/RFLMD0.png b/sprites/RFLMD0.png deleted file mode 100644 index 4c25c2a30..000000000 Binary files a/sprites/RFLMD0.png and /dev/null differ diff --git a/sprites/RFLME0.png b/sprites/RFLME0.png deleted file mode 100644 index b3abc3a54..000000000 Binary files a/sprites/RFLME0.png and /dev/null differ diff --git a/sprites/RFLMF0.png b/sprites/RFLMF0.png deleted file mode 100644 index ae7d1808f..000000000 Binary files a/sprites/RFLMF0.png and /dev/null differ diff --git a/sprites/RFLMG0.png b/sprites/RFLMG0.png deleted file mode 100644 index 2f4291f32..000000000 Binary files a/sprites/RFLMG0.png and /dev/null differ diff --git a/sprites/RFLMH0.png b/sprites/RFLMH0.png deleted file mode 100644 index c505fe66d..000000000 Binary files a/sprites/RFLMH0.png and /dev/null differ diff --git a/sprites/RFLMI0.png b/sprites/RFLMI0.png deleted file mode 100644 index 0df340c63..000000000 Binary files a/sprites/RFLMI0.png and /dev/null differ diff --git a/sprites/RFLMJ0.png b/sprites/RFLMJ0.png deleted file mode 100644 index fa0830ede..000000000 Binary files a/sprites/RFLMJ0.png and /dev/null differ diff --git a/sprites/RFLMK0.png b/sprites/RFLMK0.png deleted file mode 100644 index b78fcef12..000000000 Binary files a/sprites/RFLMK0.png and /dev/null differ diff --git a/sprites/RFLML0.png b/sprites/RFLML0.png deleted file mode 100644 index 7e0a59465..000000000 Binary files a/sprites/RFLML0.png and /dev/null differ diff --git a/sprites/RFLMM0.png b/sprites/RFLMM0.png deleted file mode 100644 index 419b3024f..000000000 Binary files a/sprites/RFLMM0.png and /dev/null differ diff --git a/sprites/RFLMN0.png b/sprites/RFLMN0.png deleted file mode 100644 index c4a93078d..000000000 Binary files a/sprites/RFLMN0.png and /dev/null differ diff --git a/sprites/RFLMO0.png b/sprites/RFLMO0.png deleted file mode 100644 index c5e9f40ba..000000000 Binary files a/sprites/RFLMO0.png and /dev/null differ diff --git a/sprites/RFLMP0.png b/sprites/RFLMP0.png deleted file mode 100644 index 0d7bd22e4..000000000 Binary files a/sprites/RFLMP0.png and /dev/null differ diff --git a/sprites/RFLMQ0.png b/sprites/RFLMQ0.png deleted file mode 100644 index 16587e491..000000000 Binary files a/sprites/RFLMQ0.png and /dev/null differ diff --git a/sprites/RFLMR0.png b/sprites/RFLMR0.png deleted file mode 100644 index e0e5644ba..000000000 Binary files a/sprites/RFLMR0.png and /dev/null differ diff --git a/sprites/RFLMS0.png b/sprites/RFLMS0.png deleted file mode 100644 index 9ee83d3e9..000000000 Binary files a/sprites/RFLMS0.png and /dev/null differ diff --git a/sprites/RFLMT0.png b/sprites/RFLMT0.png deleted file mode 100644 index 83866553d..000000000 Binary files a/sprites/RFLMT0.png and /dev/null differ diff --git a/sprites/RFXPA0.png b/sprites/RFXPA0.png new file mode 100644 index 000000000..dd4d816d7 Binary files /dev/null and b/sprites/RFXPA0.png differ diff --git a/sprites/RFXPB0.png b/sprites/RFXPB0.png new file mode 100644 index 000000000..ee62359d1 Binary files /dev/null and b/sprites/RFXPB0.png differ diff --git a/sprites/RFXPC0.png b/sprites/RFXPC0.png new file mode 100644 index 000000000..30dc76c1d Binary files /dev/null and b/sprites/RFXPC0.png differ diff --git a/sprites/RFXPD0.png b/sprites/RFXPD0.png new file mode 100644 index 000000000..b2523a3cf Binary files /dev/null and b/sprites/RFXPD0.png differ diff --git a/sprites/RFXPE0.png b/sprites/RFXPE0.png new file mode 100644 index 000000000..8b9c5b2be Binary files /dev/null and b/sprites/RFXPE0.png differ diff --git a/sprites/RFXPF0.png b/sprites/RFXPF0.png new file mode 100644 index 000000000..092a2b4be Binary files /dev/null and b/sprites/RFXPF0.png differ diff --git a/sprites/RFXPG0.png b/sprites/RFXPG0.png new file mode 100644 index 000000000..8ece1bf73 Binary files /dev/null and b/sprites/RFXPG0.png differ diff --git a/sprites/RFXPH0.png b/sprites/RFXPH0.png new file mode 100644 index 000000000..1714a29f5 Binary files /dev/null and b/sprites/RFXPH0.png differ diff --git a/sprites/RFXPI0.png b/sprites/RFXPI0.png new file mode 100644 index 000000000..e00f983e7 Binary files /dev/null and b/sprites/RFXPI0.png differ diff --git a/sprites/RFXPJ0.png b/sprites/RFXPJ0.png new file mode 100644 index 000000000..7169e685f Binary files /dev/null and b/sprites/RFXPJ0.png differ diff --git a/sprites/RFXPK0.png b/sprites/RFXPK0.png new file mode 100644 index 000000000..7e0cfbc52 Binary files /dev/null and b/sprites/RFXPK0.png differ diff --git a/sprites/RFXPL0.png b/sprites/RFXPL0.png new file mode 100644 index 000000000..d2215ca00 Binary files /dev/null and b/sprites/RFXPL0.png differ diff --git a/sprites/RFXPM0.png b/sprites/RFXPM0.png new file mode 100644 index 000000000..69ce53789 Binary files /dev/null and b/sprites/RFXPM0.png differ diff --git a/sprites/RFXPN0.png b/sprites/RFXPN0.png new file mode 100644 index 000000000..d18dcc482 Binary files /dev/null and b/sprites/RFXPN0.png differ diff --git a/sprites/RFXPO0.png b/sprites/RFXPO0.png new file mode 100644 index 000000000..ad6ed56f9 Binary files /dev/null and b/sprites/RFXPO0.png differ diff --git a/sprites/RFXPP0.png b/sprites/RFXPP0.png new file mode 100644 index 000000000..d9f46908c Binary files /dev/null and b/sprites/RFXPP0.png differ diff --git a/sprites/RFXPQ0.png b/sprites/RFXPQ0.png new file mode 100644 index 000000000..bbf1e3c80 Binary files /dev/null and b/sprites/RFXPQ0.png differ diff --git a/sprites/RFXPR0.png b/sprites/RFXPR0.png new file mode 100644 index 000000000..2256334bc Binary files /dev/null and b/sprites/RFXPR0.png differ diff --git a/sprites/SBLDA0.png b/sprites/SBLDA0.png index cc56bc436..a5b5b4055 100644 Binary files a/sprites/SBLDA0.png and b/sprites/SBLDA0.png differ diff --git a/sprites/SBLDB0.png b/sprites/SBLDB0.png index b49813675..d3e687fd3 100644 Binary files a/sprites/SBLDB0.png and b/sprites/SBLDB0.png differ diff --git a/sprites/SBLDC0.png b/sprites/SBLDC0.png index 9176b0756..516b5abea 100644 Binary files a/sprites/SBLDC0.png and b/sprites/SBLDC0.png differ diff --git a/sprites/SBLDD0.png b/sprites/SBLDD0.png index 94e89b16c..dab46c2af 100644 Binary files a/sprites/SBLDD0.png and b/sprites/SBLDD0.png differ diff --git a/sprites/SBLDE0.png b/sprites/SBLDE0.png index 4128b6862..9188244fa 100644 Binary files a/sprites/SBLDE0.png and b/sprites/SBLDE0.png differ diff --git a/sprites/SPEXA0.png b/sprites/SPEXA0.png index 47c70ed7c..a2262fdc2 100644 Binary files a/sprites/SPEXA0.png and b/sprites/SPEXA0.png differ diff --git a/sprites/SPEXB0.png b/sprites/SPEXB0.png index f78978c5f..a7bf8addb 100644 Binary files a/sprites/SPEXB0.png and b/sprites/SPEXB0.png differ diff --git a/sprites/SPEXC0.png b/sprites/SPEXC0.png index 48922059f..899f8c522 100644 Binary files a/sprites/SPEXC0.png and b/sprites/SPEXC0.png differ diff --git a/sprites/SPEXD0.png b/sprites/SPEXD0.png index 96c9d95fc..077000b43 100644 Binary files a/sprites/SPEXD0.png and b/sprites/SPEXD0.png differ diff --git a/sprites/SPEXE0.png b/sprites/SPEXE0.png index 0b295f92e..1cbe861e8 100644 Binary files a/sprites/SPEXE0.png and b/sprites/SPEXE0.png differ diff --git a/sprites/SPEXF0.png b/sprites/SPEXF0.png index 600f378b6..998a1b6d0 100644 Binary files a/sprites/SPEXF0.png and b/sprites/SPEXF0.png differ diff --git a/sprites/SPEXG0.png b/sprites/SPEXG0.png index c5925458c..bc5304b6b 100644 Binary files a/sprites/SPEXG0.png and b/sprites/SPEXG0.png differ diff --git a/sprites/SPEXH0.png b/sprites/SPEXH0.png index fb423e04b..b8b6a3838 100644 Binary files a/sprites/SPEXH0.png and b/sprites/SPEXH0.png differ diff --git a/sprites/SPEXI0.png b/sprites/SPEXI0.png index a4c23007c..4d8b3942a 100644 Binary files a/sprites/SPEXI0.png and b/sprites/SPEXI0.png differ diff --git a/sprites/SPEXJ0.png b/sprites/SPEXJ0.png index c4d88e672..99ed7b88b 100644 Binary files a/sprites/SPEXJ0.png and b/sprites/SPEXJ0.png differ diff --git a/sprites/SPEXK0.png b/sprites/SPEXK0.png index 670cc6d95..8875a975b 100644 Binary files a/sprites/SPEXK0.png and b/sprites/SPEXK0.png differ diff --git a/sprites/SPEXL0.png b/sprites/SPEXL0.png index 40c8cf19a..386f21795 100644 Binary files a/sprites/SPEXL0.png and b/sprites/SPEXL0.png differ diff --git a/sprites/SPEXM0.png b/sprites/SPEXM0.png index 092ba96c3..bf47fd818 100644 Binary files a/sprites/SPEXM0.png and b/sprites/SPEXM0.png differ diff --git a/sprites/SPEXN0.png b/sprites/SPEXN0.png index 7f131b53f..c98bb047e 100644 Binary files a/sprites/SPEXN0.png and b/sprites/SPEXN0.png differ diff --git a/sprites/SPEXO0.png b/sprites/SPEXO0.png index caed4a898..4a8f731d3 100644 Binary files a/sprites/SPEXO0.png and b/sprites/SPEXO0.png differ diff --git a/sprites/SPEXP0.png b/sprites/SPEXP0.png index b8610b964..eadcbd578 100644 Binary files a/sprites/SPEXP0.png and b/sprites/SPEXP0.png differ diff --git a/sprites/SPEXQ0.png b/sprites/SPEXQ0.png index b868195a3..279200bbf 100644 Binary files a/sprites/SPEXQ0.png and b/sprites/SPEXQ0.png differ diff --git a/sprites/SPEXR0.png b/sprites/SPEXR0.png index 846d40451..12515f61b 100644 Binary files a/sprites/SPEXR0.png and b/sprites/SPEXR0.png differ diff --git a/sprites/SPEXS0.png b/sprites/SPEXS0.png index 08b23a1d9..2bf6b648c 100644 Binary files a/sprites/SPEXS0.png and b/sprites/SPEXS0.png differ diff --git a/sprites/SPEXT0.png b/sprites/SPEXT0.png index a235d83fa..9a4c3db2a 100644 Binary files a/sprites/SPEXT0.png and b/sprites/SPEXT0.png differ diff --git a/sprites/SPEXU0.png b/sprites/SPEXU0.png index ec3b1f7ee..9cb9900cf 100644 Binary files a/sprites/SPEXU0.png and b/sprites/SPEXU0.png differ diff --git a/sprites/SPEXV0.png b/sprites/SPEXV0.png index 5142b2921..fc1a2483f 100644 Binary files a/sprites/SPEXV0.png and b/sprites/SPEXV0.png differ diff --git a/sprites/SPEXW0.png b/sprites/SPEXW0.png index aa67a58e9..36ac69581 100644 Binary files a/sprites/SPEXW0.png and b/sprites/SPEXW0.png differ diff --git a/sprites/SPEXX0.png b/sprites/SPEXX0.png index 0863f234b..e6f2e487e 100644 Binary files a/sprites/SPEXX0.png and b/sprites/SPEXX0.png differ diff --git a/sprites/SPEXY0.png b/sprites/SPEXY0.png index 7c1a349bd..9fce5b98f 100644 Binary files a/sprites/SPEXY0.png and b/sprites/SPEXY0.png differ diff --git a/sprites/SPEXZ0.png b/sprites/SPEXZ0.png index c12709c2a..343fc883a 100644 Binary files a/sprites/SPEXZ0.png and b/sprites/SPEXZ0.png differ diff --git a/sprites/SPEX[0.png b/sprites/SPEX[0.png index ebccc02d6..b63904883 100644 Binary files a/sprites/SPEX[0.png and b/sprites/SPEX[0.png differ diff --git a/sprites/SPEX]0.png b/sprites/SPEX]0.png index 315c6ac85..62cb62f6b 100644 Binary files a/sprites/SPEX]0.png and b/sprites/SPEX]0.png differ diff --git a/sprites/SPEX^0.png b/sprites/SPEX^0.png index c89b9b1c2..1ded999e0 100644 Binary files a/sprites/SPEX^0.png and b/sprites/SPEX^0.png differ diff --git a/sprites/SPKPA0.png b/sprites/SPKPA0.png deleted file mode 100644 index b78834eeb..000000000 Binary files a/sprites/SPKPA0.png and /dev/null differ diff --git a/sprites/XBUBA0.png b/sprites/XBUBA0.png index 5f5d4e32e..c2f93bf54 100644 Binary files a/sprites/XBUBA0.png and b/sprites/XBUBA0.png differ diff --git a/sprites/XBUBB0.png b/sprites/XBUBB0.png index 8e49be3eb..02ca30edd 100644 Binary files a/sprites/XBUBB0.png and b/sprites/XBUBB0.png differ diff --git a/sprites/XBUBC0.png b/sprites/XBUBC0.png index fdbc9be39..e25c6dc17 100644 Binary files a/sprites/XBUBC0.png and b/sprites/XBUBC0.png differ diff --git a/sprites/XBUBD0.png b/sprites/XBUBD0.png index 6eb8b1127..2ae02c6de 100644 Binary files a/sprites/XBUBD0.png and b/sprites/XBUBD0.png differ diff --git a/sprites/XBUBE0.png b/sprites/XBUBE0.png index 4f9723c19..35575de6a 100644 Binary files a/sprites/XBUBE0.png and b/sprites/XBUBE0.png differ diff --git a/sprites/XBUBG0.png b/sprites/XBUBG0.png index afaf88e94..198cc4343 100644 Binary files a/sprites/XBUBG0.png and b/sprites/XBUBG0.png differ diff --git a/sprites/XBUBH0.png b/sprites/XBUBH0.png index 9071ba31a..7e48f19aa 100644 Binary files a/sprites/XBUBH0.png and b/sprites/XBUBH0.png differ diff --git a/sprites/XBUBI0.png b/sprites/XBUBI0.png index 3c6184399..7bc93295b 100644 Binary files a/sprites/XBUBI0.png and b/sprites/XBUBI0.png differ diff --git a/sprites/XBUBK0.png b/sprites/XBUBK0.png index a2203f4b4..068901e51 100644 Binary files a/sprites/XBUBK0.png and b/sprites/XBUBK0.png differ diff --git a/sprites/XBUBP0.png b/sprites/XBUBP0.png index f45877c57..cbbaa1b8a 100644 Binary files a/sprites/XBUBP0.png and b/sprites/XBUBP0.png differ diff --git a/sprites/XBUBQ0.png b/sprites/XBUBQ0.png index 6f783f9e0..75f8a60ce 100644 Binary files a/sprites/XBUBQ0.png and b/sprites/XBUBQ0.png differ diff --git a/sprites/XBUBR0.png b/sprites/XBUBR0.png index 1d88af60d..a48eeeb1e 100644 Binary files a/sprites/XBUBR0.png and b/sprites/XBUBR0.png differ diff --git a/sprites/XBUBS0.png b/sprites/XBUBS0.png index 8109994b0..e1e83e755 100644 Binary files a/sprites/XBUBS0.png and b/sprites/XBUBS0.png differ diff --git a/sprites/XBUBT0.png b/sprites/XBUBT0.png index d64099be2..b66b4aa03 100644 Binary files a/sprites/XBUBT0.png and b/sprites/XBUBT0.png differ diff --git a/sprites/XEX0A0.png b/sprites/XEX0A0.png index a15ab5e41..45bb643bf 100644 Binary files a/sprites/XEX0A0.png and b/sprites/XEX0A0.png differ diff --git a/sprites/XEX0B0.png b/sprites/XEX0B0.png index d320bb5cd..d8cbe77ac 100644 Binary files a/sprites/XEX0B0.png and b/sprites/XEX0B0.png differ diff --git a/sprites/XEX0C0.png b/sprites/XEX0C0.png index 960eed0de..8efb3cb1c 100644 Binary files a/sprites/XEX0C0.png and b/sprites/XEX0C0.png differ diff --git a/sprites/XEX0D0.png b/sprites/XEX0D0.png index 3b7121ac4..495e8bf48 100644 Binary files a/sprites/XEX0D0.png and b/sprites/XEX0D0.png differ diff --git a/sprites/XEX0E0.png b/sprites/XEX0E0.png index 2cec74bc9..90c78c890 100644 Binary files a/sprites/XEX0E0.png and b/sprites/XEX0E0.png differ diff --git a/sprites/XEX0F0.png b/sprites/XEX0F0.png index 46abef822..00c7a2388 100644 Binary files a/sprites/XEX0F0.png and b/sprites/XEX0F0.png differ diff --git a/sprites/XEX0G0.png b/sprites/XEX0G0.png index 04f52e642..f4326cfe1 100644 Binary files a/sprites/XEX0G0.png and b/sprites/XEX0G0.png differ diff --git a/sprites/XEX0H0.png b/sprites/XEX0H0.png index 96f98fe2a..550877fd3 100644 Binary files a/sprites/XEX0H0.png and b/sprites/XEX0H0.png differ diff --git a/sprites/XEX0I0.png b/sprites/XEX0I0.png index 239a890f3..08d50cba0 100644 Binary files a/sprites/XEX0I0.png and b/sprites/XEX0I0.png differ diff --git a/sprites/XEX0J0.png b/sprites/XEX0J0.png index f693350d3..d4e0e396c 100644 Binary files a/sprites/XEX0J0.png and b/sprites/XEX0J0.png differ diff --git a/sprites/XEX0K0.png b/sprites/XEX0K0.png index 080c9e5cc..8cf0c9e11 100644 Binary files a/sprites/XEX0K0.png and b/sprites/XEX0K0.png differ diff --git a/sprites/XEX0L0.png b/sprites/XEX0L0.png index 8da6bdd77..e1e1ab2ba 100644 Binary files a/sprites/XEX0L0.png and b/sprites/XEX0L0.png differ diff --git a/sprites/XEX0M0.png b/sprites/XEX0M0.png index c24376eef..3ea973497 100644 Binary files a/sprites/XEX0M0.png and b/sprites/XEX0M0.png differ diff --git a/sprites/XEX0N0.png b/sprites/XEX0N0.png index 23179f661..4a1f32a63 100644 Binary files a/sprites/XEX0N0.png and b/sprites/XEX0N0.png differ diff --git a/sprites/XEX0O0.png b/sprites/XEX0O0.png index 4241e7da1..af7b4e16d 100644 Binary files a/sprites/XEX0O0.png and b/sprites/XEX0O0.png differ diff --git a/sprites/XEX0P0.png b/sprites/XEX0P0.png index 96d3fddd2..cd3c6ab05 100644 Binary files a/sprites/XEX0P0.png and b/sprites/XEX0P0.png differ diff --git a/sprites/XEX0Q0.png b/sprites/XEX0Q0.png index 834682cbc..82abd2eb4 100644 Binary files a/sprites/XEX0Q0.png and b/sprites/XEX0Q0.png differ diff --git a/sprites/XEX0R0.png b/sprites/XEX0R0.png index 098f0c1cf..a7da7de80 100644 Binary files a/sprites/XEX0R0.png and b/sprites/XEX0R0.png differ diff --git a/sprites/XEX0S0.png b/sprites/XEX0S0.png index 95f6bbcde..99013826c 100644 Binary files a/sprites/XEX0S0.png and b/sprites/XEX0S0.png differ diff --git a/sprites/XEX1A0.png b/sprites/XEX1A0.png index 17252ef1c..ea8fd1a19 100644 Binary files a/sprites/XEX1A0.png and b/sprites/XEX1A0.png differ diff --git a/sprites/XEX1C0.png b/sprites/XEX1C0.png index 3e6977026..9215befaa 100644 Binary files a/sprites/XEX1C0.png and b/sprites/XEX1C0.png differ diff --git a/sprites/XEX1D0.png b/sprites/XEX1D0.png index f6f732705..cad01ea60 100644 Binary files a/sprites/XEX1D0.png and b/sprites/XEX1D0.png differ diff --git a/sprites/XEX1E0.png b/sprites/XEX1E0.png index 4f909cc99..ef3c6f71f 100644 Binary files a/sprites/XEX1E0.png and b/sprites/XEX1E0.png differ diff --git a/sprites/XEX1F0.png b/sprites/XEX1F0.png index 9583032a1..4964229ec 100644 Binary files a/sprites/XEX1F0.png and b/sprites/XEX1F0.png differ diff --git a/sprites/XEX1G0.png b/sprites/XEX1G0.png index 3ddb41885..0819d2db3 100644 Binary files a/sprites/XEX1G0.png and b/sprites/XEX1G0.png differ diff --git a/sprites/XEX1H0.png b/sprites/XEX1H0.png index cc57c71e5..f2f554712 100644 Binary files a/sprites/XEX1H0.png and b/sprites/XEX1H0.png differ diff --git a/sprites/XEX1I0.png b/sprites/XEX1I0.png index 0de656e44..94ad52310 100644 Binary files a/sprites/XEX1I0.png and b/sprites/XEX1I0.png differ diff --git a/sprites/XEX1J0.png b/sprites/XEX1J0.png index d8442a67b..32540c2de 100644 Binary files a/sprites/XEX1J0.png and b/sprites/XEX1J0.png differ diff --git a/sprites/XEX1K0.png b/sprites/XEX1K0.png index c5e53a015..67a25196d 100644 Binary files a/sprites/XEX1K0.png and b/sprites/XEX1K0.png differ diff --git a/sprites/XEX1L0.png b/sprites/XEX1L0.png index 74eda4148..6c409461f 100644 Binary files a/sprites/XEX1L0.png and b/sprites/XEX1L0.png differ diff --git a/sprites/XEX1M0.png b/sprites/XEX1M0.png index 034c9fa7b..1bdad0698 100644 Binary files a/sprites/XEX1M0.png and b/sprites/XEX1M0.png differ diff --git a/sprites/XEX1N0.png b/sprites/XEX1N0.png index 522440f29..ca70118fc 100644 Binary files a/sprites/XEX1N0.png and b/sprites/XEX1N0.png differ diff --git a/sprites/XEX1O0.png b/sprites/XEX1O0.png index ecf629d83..99f4cf2a4 100644 Binary files a/sprites/XEX1O0.png and b/sprites/XEX1O0.png differ diff --git a/sprites/XEX1P0.png b/sprites/XEX1P0.png index 2bddc5983..84856f8b5 100644 Binary files a/sprites/XEX1P0.png and b/sprites/XEX1P0.png differ diff --git a/sprites/XEX1Q0.png b/sprites/XEX1Q0.png index d1c060be5..3d909d2c9 100644 Binary files a/sprites/XEX1Q0.png and b/sprites/XEX1Q0.png differ diff --git a/sprites/XEX1R0.png b/sprites/XEX1R0.png index 936722787..83b70c279 100644 Binary files a/sprites/XEX1R0.png and b/sprites/XEX1R0.png differ diff --git a/sprites/XEX1S0.png b/sprites/XEX1S0.png index 37b5f6de2..89d0a8a06 100644 Binary files a/sprites/XEX1S0.png and b/sprites/XEX1S0.png differ diff --git a/sprites/XEX1T0.png b/sprites/XEX1T0.png index 7dec83a09..8b35dceb1 100644 Binary files a/sprites/XEX1T0.png and b/sprites/XEX1T0.png differ diff --git a/sprites/XEX1U0.png b/sprites/XEX1U0.png index e1229062a..3dd475139 100644 Binary files a/sprites/XEX1U0.png and b/sprites/XEX1U0.png differ diff --git a/sprites/XEX1V0.png b/sprites/XEX1V0.png index c0da125be..51dd34350 100644 Binary files a/sprites/XEX1V0.png and b/sprites/XEX1V0.png differ diff --git a/sprites/XEX1W0.png b/sprites/XEX1W0.png index 5ea934bee..46a4afdc1 100644 Binary files a/sprites/XEX1W0.png and b/sprites/XEX1W0.png differ diff --git a/sprites/XEX1X0.png b/sprites/XEX1X0.png index 83ed1dede..04d57d9b6 100644 Binary files a/sprites/XEX1X0.png and b/sprites/XEX1X0.png differ diff --git a/sprites/XEX1Y0.png b/sprites/XEX1Y0.png index aa2938096..2c3675f4a 100644 Binary files a/sprites/XEX1Y0.png and b/sprites/XEX1Y0.png differ diff --git a/sprites/XEX1Z0.png b/sprites/XEX1Z0.png index 079961cd4..83bfa1970 100644 Binary files a/sprites/XEX1Z0.png and b/sprites/XEX1Z0.png differ diff --git a/sprites/XEX1[0.png b/sprites/XEX1[0.png index 8c841255d..b64628075 100644 Binary files a/sprites/XEX1[0.png and b/sprites/XEX1[0.png differ diff --git a/sprites/XEX1^0.png b/sprites/XEX1^0.png index fe6145031..0bba2bff6 100644 Binary files a/sprites/XEX1^0.png and b/sprites/XEX1^0.png differ diff --git a/sprites/XEX2A0.png b/sprites/XEX2A0.png index 5611d83d8..be8fbd792 100644 Binary files a/sprites/XEX2A0.png and b/sprites/XEX2A0.png differ diff --git a/sprites/XEX2B0.png b/sprites/XEX2B0.png index a3ec55cff..afb37510c 100644 Binary files a/sprites/XEX2B0.png and b/sprites/XEX2B0.png differ diff --git a/sprites/XEX2C0.png b/sprites/XEX2C0.png index f9c89560c..d32b6009d 100644 Binary files a/sprites/XEX2C0.png and b/sprites/XEX2C0.png differ diff --git a/sprites/XEX2D0.png b/sprites/XEX2D0.png index 7bab7afb6..cb0c742f0 100644 Binary files a/sprites/XEX2D0.png and b/sprites/XEX2D0.png differ diff --git a/sprites/XEX2E0.png b/sprites/XEX2E0.png index 5a3d2032e..d5ad99cf2 100644 Binary files a/sprites/XEX2E0.png and b/sprites/XEX2E0.png differ diff --git a/sprites/XEX2F0.png b/sprites/XEX2F0.png index 064b0f9ce..372c4262b 100644 Binary files a/sprites/XEX2F0.png and b/sprites/XEX2F0.png differ diff --git a/sprites/XEX2G0.png b/sprites/XEX2G0.png index 8672669b3..b65502f6b 100644 Binary files a/sprites/XEX2G0.png and b/sprites/XEX2G0.png differ diff --git a/sprites/XEX2H0.png b/sprites/XEX2H0.png index 894b722c4..66efb95d1 100644 Binary files a/sprites/XEX2H0.png and b/sprites/XEX2H0.png differ diff --git a/sprites/XEX2I0.png b/sprites/XEX2I0.png index 84f73944f..ff698a2d5 100644 Binary files a/sprites/XEX2I0.png and b/sprites/XEX2I0.png differ diff --git a/sprites/XEX2J0.png b/sprites/XEX2J0.png index 4f785a41d..78d2f015d 100644 Binary files a/sprites/XEX2J0.png and b/sprites/XEX2J0.png differ diff --git a/sprites/XEX2K0.png b/sprites/XEX2K0.png index 5f96dc662..216cfc9b0 100644 Binary files a/sprites/XEX2K0.png and b/sprites/XEX2K0.png differ diff --git a/sprites/XEX2L0.png b/sprites/XEX2L0.png index 5068a8315..a0138425f 100644 Binary files a/sprites/XEX2L0.png and b/sprites/XEX2L0.png differ diff --git a/sprites/XEX2M0.png b/sprites/XEX2M0.png index 8813a2692..0955f3714 100644 Binary files a/sprites/XEX2M0.png and b/sprites/XEX2M0.png differ diff --git a/sprites/XEX2N0.png b/sprites/XEX2N0.png index b272519ea..5d0aa43bf 100644 Binary files a/sprites/XEX2N0.png and b/sprites/XEX2N0.png differ diff --git a/sprites/XEX2O0.png b/sprites/XEX2O0.png index 93c0535c8..9a33eac4e 100644 Binary files a/sprites/XEX2O0.png and b/sprites/XEX2O0.png differ diff --git a/sprites/XEX2P0.png b/sprites/XEX2P0.png index a82d5d810..e13b53994 100644 Binary files a/sprites/XEX2P0.png and b/sprites/XEX2P0.png differ diff --git a/sprites/XEX2Q0.png b/sprites/XEX2Q0.png index 00afd2381..fd1a337de 100644 Binary files a/sprites/XEX2Q0.png and b/sprites/XEX2Q0.png differ diff --git a/sprites/XEX2R0.png b/sprites/XEX2R0.png index bb59ef5bd..bfa96ae25 100644 Binary files a/sprites/XEX2R0.png and b/sprites/XEX2R0.png differ diff --git a/sprites/XEX2S0.png b/sprites/XEX2S0.png index 10fa727f4..1741924fc 100644 Binary files a/sprites/XEX2S0.png and b/sprites/XEX2S0.png differ diff --git a/sprites/XEX3A0.png b/sprites/XEX3A0.png index b248ef6bf..ad00d908c 100644 Binary files a/sprites/XEX3A0.png and b/sprites/XEX3A0.png differ diff --git a/sprites/XEX3B0.png b/sprites/XEX3B0.png index b54666c65..383175179 100644 Binary files a/sprites/XEX3B0.png and b/sprites/XEX3B0.png differ diff --git a/sprites/XEX3C0.png b/sprites/XEX3C0.png index 61a5c32c5..4036e560a 100644 Binary files a/sprites/XEX3C0.png and b/sprites/XEX3C0.png differ diff --git a/sprites/XEX3D0.png b/sprites/XEX3D0.png index 170039afd..77f7b9136 100644 Binary files a/sprites/XEX3D0.png and b/sprites/XEX3D0.png differ diff --git a/sprites/XEX3E0.png b/sprites/XEX3E0.png index 4226f4814..335855bb7 100644 Binary files a/sprites/XEX3E0.png and b/sprites/XEX3E0.png differ diff --git a/sprites/XEX3F0.png b/sprites/XEX3F0.png index 315465fd0..5bd7ecbaf 100644 Binary files a/sprites/XEX3F0.png and b/sprites/XEX3F0.png differ diff --git a/sprites/XEX3G0.png b/sprites/XEX3G0.png index 827e27417..1a86a4d61 100644 Binary files a/sprites/XEX3G0.png and b/sprites/XEX3G0.png differ diff --git a/sprites/XEX3H0.png b/sprites/XEX3H0.png index 314ac57a0..90f53e98a 100644 Binary files a/sprites/XEX3H0.png and b/sprites/XEX3H0.png differ diff --git a/sprites/XEX3I0.png b/sprites/XEX3I0.png index ccd993f45..8b8423997 100644 Binary files a/sprites/XEX3I0.png and b/sprites/XEX3I0.png differ diff --git a/sprites/XEX3J0.png b/sprites/XEX3J0.png index e71e7dfcc..f5275ac78 100644 Binary files a/sprites/XEX3J0.png and b/sprites/XEX3J0.png differ diff --git a/sprites/XEX3K0.png b/sprites/XEX3K0.png index 4e88654d1..b0246b613 100644 Binary files a/sprites/XEX3K0.png and b/sprites/XEX3K0.png differ diff --git a/sprites/XEX3L0.png b/sprites/XEX3L0.png index b1454adf9..5f6a1b59e 100644 Binary files a/sprites/XEX3L0.png and b/sprites/XEX3L0.png differ diff --git a/sprites/XEX3M0.png b/sprites/XEX3M0.png index 72a57adc0..61ae03e27 100644 Binary files a/sprites/XEX3M0.png and b/sprites/XEX3M0.png differ diff --git a/sprites/XEX3N0.png b/sprites/XEX3N0.png index 1e8e74e57..484f776d4 100644 Binary files a/sprites/XEX3N0.png and b/sprites/XEX3N0.png differ diff --git a/sprites/XEX3O0.png b/sprites/XEX3O0.png index dc5f9e738..596e69fed 100644 Binary files a/sprites/XEX3O0.png and b/sprites/XEX3O0.png differ diff --git a/sprites/XEX3P0.png b/sprites/XEX3P0.png index e790d31c0..536f870b1 100644 Binary files a/sprites/XEX3P0.png and b/sprites/XEX3P0.png differ diff --git a/sprites/XEX3Q0.png b/sprites/XEX3Q0.png index 904523e04..3b3b1a6fc 100644 Binary files a/sprites/XEX3Q0.png and b/sprites/XEX3Q0.png differ diff --git a/sprites/XEX3R0.png b/sprites/XEX3R0.png index dc20e7c8f..9c4b7cadb 100644 Binary files a/sprites/XEX3R0.png and b/sprites/XEX3R0.png differ diff --git a/sprites/XEX3S0.png b/sprites/XEX3S0.png index c27eaa3d1..ce6693a76 100644 Binary files a/sprites/XEX3S0.png and b/sprites/XEX3S0.png differ diff --git a/sprites/XEX4A0.png b/sprites/XEX4A0.png index 0222462e2..d37fea708 100644 Binary files a/sprites/XEX4A0.png and b/sprites/XEX4A0.png differ diff --git a/sprites/XEX4B0.png b/sprites/XEX4B0.png index f78e28ac7..090c0796e 100644 Binary files a/sprites/XEX4B0.png and b/sprites/XEX4B0.png differ diff --git a/sprites/XEX4C0.png b/sprites/XEX4C0.png index d4e1d2653..167a020c2 100644 Binary files a/sprites/XEX4C0.png and b/sprites/XEX4C0.png differ diff --git a/sprites/XEX4D0.png b/sprites/XEX4D0.png index 4fe8dd303..74431c5c4 100644 Binary files a/sprites/XEX4D0.png and b/sprites/XEX4D0.png differ diff --git a/sprites/XEX4E0.png b/sprites/XEX4E0.png index ea64ff8e7..4bf27ba60 100644 Binary files a/sprites/XEX4E0.png and b/sprites/XEX4E0.png differ diff --git a/sprites/XEX4F0.png b/sprites/XEX4F0.png index e938fc821..201cbe285 100644 Binary files a/sprites/XEX4F0.png and b/sprites/XEX4F0.png differ diff --git a/sprites/XEX4G0.png b/sprites/XEX4G0.png index 6a06e6b70..3d7212e54 100644 Binary files a/sprites/XEX4G0.png and b/sprites/XEX4G0.png differ diff --git a/sprites/XEX4H0.png b/sprites/XEX4H0.png index 6d9ebb86e..157dfde57 100644 Binary files a/sprites/XEX4H0.png and b/sprites/XEX4H0.png differ diff --git a/sprites/XEX4I0.png b/sprites/XEX4I0.png index e8be6637d..87ca022d3 100644 Binary files a/sprites/XEX4I0.png and b/sprites/XEX4I0.png differ diff --git a/sprites/XEX4J0.png b/sprites/XEX4J0.png index 94eb39527..82f88698c 100644 Binary files a/sprites/XEX4J0.png and b/sprites/XEX4J0.png differ diff --git a/sprites/XEX4K0.png b/sprites/XEX4K0.png index 105e6e292..9b681318c 100644 Binary files a/sprites/XEX4K0.png and b/sprites/XEX4K0.png differ diff --git a/sprites/XEX4L0.png b/sprites/XEX4L0.png index 53f7eefc0..ba08cf7b8 100644 Binary files a/sprites/XEX4L0.png and b/sprites/XEX4L0.png differ diff --git a/sprites/XEX4M0.png b/sprites/XEX4M0.png index 72150f934..ad68dd90d 100644 Binary files a/sprites/XEX4M0.png and b/sprites/XEX4M0.png differ diff --git a/sprites/XEX4N0.png b/sprites/XEX4N0.png index e1b917453..eb640c9d9 100644 Binary files a/sprites/XEX4N0.png and b/sprites/XEX4N0.png differ diff --git a/sprites/XEX4O0.png b/sprites/XEX4O0.png index 87ea92cb8..08102d862 100644 Binary files a/sprites/XEX4O0.png and b/sprites/XEX4O0.png differ diff --git a/sprites/XEX4P0.png b/sprites/XEX4P0.png index e19f670d4..e298eadf7 100644 Binary files a/sprites/XEX4P0.png and b/sprites/XEX4P0.png differ diff --git a/sprites/XEX4Q0.png b/sprites/XEX4Q0.png index 5b778813c..57d2b29ba 100644 Binary files a/sprites/XEX4Q0.png and b/sprites/XEX4Q0.png differ diff --git a/sprites/XEX4S0.png b/sprites/XEX4S0.png index 9ef052497..bf11c4647 100644 Binary files a/sprites/XEX4S0.png and b/sprites/XEX4S0.png differ diff --git a/sprites/XEX4T0.png b/sprites/XEX4T0.png index 6c24521c2..471e51012 100644 Binary files a/sprites/XEX4T0.png and b/sprites/XEX4T0.png differ diff --git a/sprites/XEX4U0.png b/sprites/XEX4U0.png index 832097bc6..35a0151c2 100644 Binary files a/sprites/XEX4U0.png and b/sprites/XEX4U0.png differ diff --git a/sprites/XEX4V0.png b/sprites/XEX4V0.png index 78f553a51..775600326 100644 Binary files a/sprites/XEX4V0.png and b/sprites/XEX4V0.png differ diff --git a/sprites/XEX4W0.png b/sprites/XEX4W0.png index 5123dac4d..5a89d4d32 100644 Binary files a/sprites/XEX4W0.png and b/sprites/XEX4W0.png differ diff --git a/sprites/XEX4X0.png b/sprites/XEX4X0.png index 889e5fb88..7c2168a9f 100644 Binary files a/sprites/XEX4X0.png and b/sprites/XEX4X0.png differ diff --git a/sprites/XEX4Y0.png b/sprites/XEX4Y0.png index d9946d657..231472846 100644 Binary files a/sprites/XEX4Y0.png and b/sprites/XEX4Y0.png differ diff --git a/sprites/XEX4Z0.png b/sprites/XEX4Z0.png index 40ed2f67b..2432c8424 100644 Binary files a/sprites/XEX4Z0.png and b/sprites/XEX4Z0.png differ diff --git a/sprites/XEX4[0.png b/sprites/XEX4[0.png index 065394542..3bc99474a 100644 Binary files a/sprites/XEX4[0.png and b/sprites/XEX4[0.png differ diff --git a/sprites/XEX4^0.png b/sprites/XEX4^0.png index 8d7b2b0d9..b48623cb5 100644 Binary files a/sprites/XEX4^0.png and b/sprites/XEX4^0.png differ diff --git a/sprites/XEX5A0.png b/sprites/XEX5A0.png new file mode 100644 index 000000000..ec1502e22 Binary files /dev/null and b/sprites/XEX5A0.png differ diff --git a/sprites/XEX5B0.png b/sprites/XEX5B0.png new file mode 100644 index 000000000..5021b13d6 Binary files /dev/null and b/sprites/XEX5B0.png differ diff --git a/sprites/XEX5C0.png b/sprites/XEX5C0.png new file mode 100644 index 000000000..e132f5257 Binary files /dev/null and b/sprites/XEX5C0.png differ diff --git a/sprites/XEX5D0.png b/sprites/XEX5D0.png new file mode 100644 index 000000000..ef90a9236 Binary files /dev/null and b/sprites/XEX5D0.png differ diff --git a/sprites/XEX5E0.png b/sprites/XEX5E0.png new file mode 100644 index 000000000..4fd990e94 Binary files /dev/null and b/sprites/XEX5E0.png differ diff --git a/sprites/XEX5F0.png b/sprites/XEX5F0.png new file mode 100644 index 000000000..2e66de560 Binary files /dev/null and b/sprites/XEX5F0.png differ diff --git a/sprites/XEX5G0.png b/sprites/XEX5G0.png new file mode 100644 index 000000000..9100759b5 Binary files /dev/null and b/sprites/XEX5G0.png differ diff --git a/sprites/XEX5H0.png b/sprites/XEX5H0.png new file mode 100644 index 000000000..a9379e8ca Binary files /dev/null and b/sprites/XEX5H0.png differ diff --git a/sprites/XEX5I0.png b/sprites/XEX5I0.png new file mode 100644 index 000000000..a2bc5114d Binary files /dev/null and b/sprites/XEX5I0.png differ diff --git a/sprites/XEX5J0.png b/sprites/XEX5J0.png new file mode 100644 index 000000000..7a32d686a Binary files /dev/null and b/sprites/XEX5J0.png differ diff --git a/sprites/XEX5K0.png b/sprites/XEX5K0.png new file mode 100644 index 000000000..34b1ceb51 Binary files /dev/null and b/sprites/XEX5K0.png differ diff --git a/sprites/XEX5L0.png b/sprites/XEX5L0.png new file mode 100644 index 000000000..bdea3a6e5 Binary files /dev/null and b/sprites/XEX5L0.png differ diff --git a/sprites/XEX5M0.png b/sprites/XEX5M0.png new file mode 100644 index 000000000..a16c4350f Binary files /dev/null and b/sprites/XEX5M0.png differ diff --git a/sprites/XEX5N0.png b/sprites/XEX5N0.png new file mode 100644 index 000000000..cb666a767 Binary files /dev/null and b/sprites/XEX5N0.png differ diff --git a/sprites/XEX5O0.png b/sprites/XEX5O0.png new file mode 100644 index 000000000..61c74b0aa Binary files /dev/null and b/sprites/XEX5O0.png differ diff --git a/sprites/XEX5P0.png b/sprites/XEX5P0.png new file mode 100644 index 000000000..d5107c962 Binary files /dev/null and b/sprites/XEX5P0.png differ diff --git a/sprites/XEX5Q0.png b/sprites/XEX5Q0.png new file mode 100644 index 000000000..e2edb3c0c Binary files /dev/null and b/sprites/XEX5Q0.png differ diff --git a/sprites/XEX5R0.png b/sprites/XEX5R0.png new file mode 100644 index 000000000..31d160dcb Binary files /dev/null and b/sprites/XEX5R0.png differ diff --git a/sprites/XEX5S0.png b/sprites/XEX5S0.png new file mode 100644 index 000000000..92cf30b31 Binary files /dev/null and b/sprites/XEX5S0.png differ diff --git a/sprites/XEX6A0.png b/sprites/XEX6A0.png new file mode 100644 index 000000000..41d1ff7ef Binary files /dev/null and b/sprites/XEX6A0.png differ diff --git a/sprites/XEX6B0.png b/sprites/XEX6B0.png new file mode 100644 index 000000000..09d242da5 Binary files /dev/null and b/sprites/XEX6B0.png differ diff --git a/sprites/XEX6C0.png b/sprites/XEX6C0.png new file mode 100644 index 000000000..f12d7e6b3 Binary files /dev/null and b/sprites/XEX6C0.png differ diff --git a/sprites/XEX6D0.png b/sprites/XEX6D0.png new file mode 100644 index 000000000..33d27c79e Binary files /dev/null and b/sprites/XEX6D0.png differ diff --git a/sprites/XEX6E0.png b/sprites/XEX6E0.png new file mode 100644 index 000000000..b2b3341a4 Binary files /dev/null and b/sprites/XEX6E0.png differ diff --git a/sprites/XEX6F0.png b/sprites/XEX6F0.png new file mode 100644 index 000000000..f1ea43f88 Binary files /dev/null and b/sprites/XEX6F0.png differ diff --git a/sprites/XEX6G0.png b/sprites/XEX6G0.png new file mode 100644 index 000000000..45070c398 Binary files /dev/null and b/sprites/XEX6G0.png differ diff --git a/sprites/XEX6H0.png b/sprites/XEX6H0.png new file mode 100644 index 000000000..729721b71 Binary files /dev/null and b/sprites/XEX6H0.png differ diff --git a/sprites/XEX6I0.png b/sprites/XEX6I0.png new file mode 100644 index 000000000..5e4e1b582 Binary files /dev/null and b/sprites/XEX6I0.png differ diff --git a/sprites/XEX6J0.png b/sprites/XEX6J0.png new file mode 100644 index 000000000..c0cd8ecfb Binary files /dev/null and b/sprites/XEX6J0.png differ diff --git a/sprites/XEX6K0.png b/sprites/XEX6K0.png new file mode 100644 index 000000000..2d15f4934 Binary files /dev/null and b/sprites/XEX6K0.png differ diff --git a/sprites/XEX6L0.png b/sprites/XEX6L0.png new file mode 100644 index 000000000..2dc9bab01 Binary files /dev/null and b/sprites/XEX6L0.png differ diff --git a/sprites/XEX6M0.png b/sprites/XEX6M0.png new file mode 100644 index 000000000..0e5242785 Binary files /dev/null and b/sprites/XEX6M0.png differ diff --git a/sprites/XEX6N0.png b/sprites/XEX6N0.png new file mode 100644 index 000000000..bb6ce5151 Binary files /dev/null and b/sprites/XEX6N0.png differ diff --git a/sprites/XEX6O0.png b/sprites/XEX6O0.png new file mode 100644 index 000000000..e630cef3e Binary files /dev/null and b/sprites/XEX6O0.png differ diff --git a/sprites/XEX6P0.png b/sprites/XEX6P0.png new file mode 100644 index 000000000..bc777f561 Binary files /dev/null and b/sprites/XEX6P0.png differ diff --git a/sprites/XEX6Q0.png b/sprites/XEX6Q0.png new file mode 100644 index 000000000..1d26bbdfa Binary files /dev/null and b/sprites/XEX6Q0.png differ diff --git a/sprites/XEX6R0.png b/sprites/XEX6R0.png new file mode 100644 index 000000000..19aa885ba Binary files /dev/null and b/sprites/XEX6R0.png differ diff --git a/sprites/XEX6S0.png b/sprites/XEX6S0.png new file mode 100644 index 000000000..0fb0ef2ac Binary files /dev/null and b/sprites/XEX6S0.png differ diff --git a/sprites/XEX7A0.png b/sprites/XEX7A0.png new file mode 100644 index 000000000..559129025 Binary files /dev/null and b/sprites/XEX7A0.png differ diff --git a/sprites/XEX7B0.png b/sprites/XEX7B0.png new file mode 100644 index 000000000..5573456ed Binary files /dev/null and b/sprites/XEX7B0.png differ diff --git a/sprites/XEX7C0.png b/sprites/XEX7C0.png new file mode 100644 index 000000000..2b90e5ea3 Binary files /dev/null and b/sprites/XEX7C0.png differ diff --git a/sprites/XEX7D0.png b/sprites/XEX7D0.png new file mode 100644 index 000000000..856cf934f Binary files /dev/null and b/sprites/XEX7D0.png differ diff --git a/sprites/XEX7E0.png b/sprites/XEX7E0.png new file mode 100644 index 000000000..eefa3c5cc Binary files /dev/null and b/sprites/XEX7E0.png differ diff --git a/sprites/XEX7F0.png b/sprites/XEX7F0.png new file mode 100644 index 000000000..56446114c Binary files /dev/null and b/sprites/XEX7F0.png differ diff --git a/sprites/XEX7G0.png b/sprites/XEX7G0.png new file mode 100644 index 000000000..17cea441b Binary files /dev/null and b/sprites/XEX7G0.png differ diff --git a/sprites/XEX7H0.png b/sprites/XEX7H0.png new file mode 100644 index 000000000..0e3c92979 Binary files /dev/null and b/sprites/XEX7H0.png differ diff --git a/sprites/XEX7I0.png b/sprites/XEX7I0.png new file mode 100644 index 000000000..45ae93dcb Binary files /dev/null and b/sprites/XEX7I0.png differ diff --git a/sprites/XEX7J0.png b/sprites/XEX7J0.png new file mode 100644 index 000000000..ff3e42d6d Binary files /dev/null and b/sprites/XEX7J0.png differ diff --git a/sprites/XEX7K0.png b/sprites/XEX7K0.png new file mode 100644 index 000000000..34c9acaae Binary files /dev/null and b/sprites/XEX7K0.png differ diff --git a/sprites/XEX7L0.png b/sprites/XEX7L0.png new file mode 100644 index 000000000..b35d66e98 Binary files /dev/null and b/sprites/XEX7L0.png differ diff --git a/sprites/XEX7M0.png b/sprites/XEX7M0.png new file mode 100644 index 000000000..df3b96afb Binary files /dev/null and b/sprites/XEX7M0.png differ diff --git a/sprites/XEX7N0.png b/sprites/XEX7N0.png new file mode 100644 index 000000000..bdec089da Binary files /dev/null and b/sprites/XEX7N0.png differ diff --git a/sprites/XEX7O0.png b/sprites/XEX7O0.png new file mode 100644 index 000000000..2055a1c9d Binary files /dev/null and b/sprites/XEX7O0.png differ diff --git a/sprites/XEX7P0.png b/sprites/XEX7P0.png new file mode 100644 index 000000000..c8e103ef2 Binary files /dev/null and b/sprites/XEX7P0.png differ diff --git a/sprites/XEX7Q0.png b/sprites/XEX7Q0.png new file mode 100644 index 000000000..0060935ca Binary files /dev/null and b/sprites/XEX7Q0.png differ diff --git a/sprites/XEX7R0.png b/sprites/XEX7R0.png new file mode 100644 index 000000000..3ee3e634b Binary files /dev/null and b/sprites/XEX7R0.png differ diff --git a/sprites/XEX7S0.png b/sprites/XEX7S0.png new file mode 100644 index 000000000..f86c392b2 Binary files /dev/null and b/sprites/XEX7S0.png differ diff --git a/sprites/XEX7T0.png b/sprites/XEX7T0.png new file mode 100644 index 000000000..f1550af2c Binary files /dev/null and b/sprites/XEX7T0.png differ diff --git a/sprites/XEX7U0.png b/sprites/XEX7U0.png new file mode 100644 index 000000000..cc621906c Binary files /dev/null and b/sprites/XEX7U0.png differ diff --git a/sprites/XEX7V0.png b/sprites/XEX7V0.png new file mode 100644 index 000000000..dea793aa2 Binary files /dev/null and b/sprites/XEX7V0.png differ diff --git a/sprites/XEX7W0.png b/sprites/XEX7W0.png new file mode 100644 index 000000000..65c208d63 Binary files /dev/null and b/sprites/XEX7W0.png differ diff --git a/sprites/XEX7X0.png b/sprites/XEX7X0.png new file mode 100644 index 000000000..0d7309fb8 Binary files /dev/null and b/sprites/XEX7X0.png differ diff --git a/sprites/XEX7Y0.png b/sprites/XEX7Y0.png new file mode 100644 index 000000000..15b69773b Binary files /dev/null and b/sprites/XEX7Y0.png differ diff --git a/sprites/XEX7Z0.png b/sprites/XEX7Z0.png new file mode 100644 index 000000000..8e9cb5054 Binary files /dev/null and b/sprites/XEX7Z0.png differ diff --git a/sprites/XEX7[0.png b/sprites/XEX7[0.png new file mode 100644 index 000000000..3dfdc56cf Binary files /dev/null and b/sprites/XEX7[0.png differ diff --git a/sprites/XEX7^0.png b/sprites/XEX7^0.png new file mode 100644 index 000000000..81a0b5970 Binary files /dev/null and b/sprites/XEX7^0.png differ diff --git a/sprites/XEX8A0.png b/sprites/XEX8A0.png new file mode 100644 index 000000000..32125b996 Binary files /dev/null and b/sprites/XEX8A0.png differ diff --git a/sprites/XEX8B0.png b/sprites/XEX8B0.png new file mode 100644 index 000000000..a1f80247c Binary files /dev/null and b/sprites/XEX8B0.png differ diff --git a/sprites/XEX8C0.png b/sprites/XEX8C0.png new file mode 100644 index 000000000..229bc6439 Binary files /dev/null and b/sprites/XEX8C0.png differ diff --git a/sprites/XEX8D0.png b/sprites/XEX8D0.png new file mode 100644 index 000000000..dabacd0bc Binary files /dev/null and b/sprites/XEX8D0.png differ diff --git a/sprites/XEX8E0.png b/sprites/XEX8E0.png new file mode 100644 index 000000000..0f426c702 Binary files /dev/null and b/sprites/XEX8E0.png differ diff --git a/sprites/XEX8F0.png b/sprites/XEX8F0.png new file mode 100644 index 000000000..6e5d699ed Binary files /dev/null and b/sprites/XEX8F0.png differ diff --git a/sprites/XEX8G0.png b/sprites/XEX8G0.png new file mode 100644 index 000000000..c4d035038 Binary files /dev/null and b/sprites/XEX8G0.png differ diff --git a/sprites/XEX8H0.png b/sprites/XEX8H0.png new file mode 100644 index 000000000..601488429 Binary files /dev/null and b/sprites/XEX8H0.png differ diff --git a/sprites/XEX8I0.png b/sprites/XEX8I0.png new file mode 100644 index 000000000..b759be819 Binary files /dev/null and b/sprites/XEX8I0.png differ diff --git a/sprites/XEX8J0.png b/sprites/XEX8J0.png new file mode 100644 index 000000000..23b01261c Binary files /dev/null and b/sprites/XEX8J0.png differ diff --git a/sprites/XEX8K0.png b/sprites/XEX8K0.png new file mode 100644 index 000000000..d9cf142dc Binary files /dev/null and b/sprites/XEX8K0.png differ diff --git a/sprites/XEX8L0.png b/sprites/XEX8L0.png new file mode 100644 index 000000000..5ec07a34e Binary files /dev/null and b/sprites/XEX8L0.png differ diff --git a/sprites/XEX8M0.png b/sprites/XEX8M0.png new file mode 100644 index 000000000..14cfcee93 Binary files /dev/null and b/sprites/XEX8M0.png differ diff --git a/sprites/XEX8N0.png b/sprites/XEX8N0.png new file mode 100644 index 000000000..92a797e95 Binary files /dev/null and b/sprites/XEX8N0.png differ diff --git a/sprites/XEX8O0.png b/sprites/XEX8O0.png new file mode 100644 index 000000000..97d70b684 Binary files /dev/null and b/sprites/XEX8O0.png differ diff --git a/sprites/XEX8P0.png b/sprites/XEX8P0.png new file mode 100644 index 000000000..efca4af70 Binary files /dev/null and b/sprites/XEX8P0.png differ diff --git a/sprites/XEX8Q0.png b/sprites/XEX8Q0.png new file mode 100644 index 000000000..96393e200 Binary files /dev/null and b/sprites/XEX8Q0.png differ diff --git a/sprites/XEX8R0.png b/sprites/XEX8R0.png new file mode 100644 index 000000000..f3ab452ec Binary files /dev/null and b/sprites/XEX8R0.png differ diff --git a/sprites/XEX8S0.png b/sprites/XEX8S0.png new file mode 100644 index 000000000..172cfe367 Binary files /dev/null and b/sprites/XEX8S0.png differ diff --git a/sprites/XFIRA0.png b/sprites/XFIRA0.png new file mode 100644 index 000000000..76c20e39e Binary files /dev/null and b/sprites/XFIRA0.png differ diff --git a/sprites/XFIRB0.png b/sprites/XFIRB0.png new file mode 100644 index 000000000..db2285e52 Binary files /dev/null and b/sprites/XFIRB0.png differ diff --git a/sprites/XFIRC0.png b/sprites/XFIRC0.png new file mode 100644 index 000000000..6167fa493 Binary files /dev/null and b/sprites/XFIRC0.png differ diff --git a/sprites/XFIRD0.png b/sprites/XFIRD0.png new file mode 100644 index 000000000..fcc718bf9 Binary files /dev/null and b/sprites/XFIRD0.png differ diff --git a/sprites/XFIRE0.png b/sprites/XFIRE0.png new file mode 100644 index 000000000..05a20604c Binary files /dev/null and b/sprites/XFIRE0.png differ diff --git a/sprites/XFIRF0.png b/sprites/XFIRF0.png new file mode 100644 index 000000000..9b0ecec3a Binary files /dev/null and b/sprites/XFIRF0.png differ diff --git a/sprites/XFIRG0.png b/sprites/XFIRG0.png new file mode 100644 index 000000000..810c08ef0 Binary files /dev/null and b/sprites/XFIRG0.png differ diff --git a/sprites/XFIRH0.png b/sprites/XFIRH0.png new file mode 100644 index 000000000..8b43f8bb4 Binary files /dev/null and b/sprites/XFIRH0.png differ diff --git a/sprites/XFIRI0.png b/sprites/XFIRI0.png new file mode 100644 index 000000000..0176978c8 Binary files /dev/null and b/sprites/XFIRI0.png differ diff --git a/sprites/XFIRJ0.png b/sprites/XFIRJ0.png new file mode 100644 index 000000000..11bcd47db Binary files /dev/null and b/sprites/XFIRJ0.png differ diff --git a/sprites/XFIRK0.png b/sprites/XFIRK0.png new file mode 100644 index 000000000..4313f19cf Binary files /dev/null and b/sprites/XFIRK0.png differ diff --git a/sprites/XFIRL0.png b/sprites/XFIRL0.png new file mode 100644 index 000000000..e2dabddbb Binary files /dev/null and b/sprites/XFIRL0.png differ diff --git a/sprites/XFIRM0.png b/sprites/XFIRM0.png new file mode 100644 index 000000000..f98dd66df Binary files /dev/null and b/sprites/XFIRM0.png differ diff --git a/sprites/XFIRN0.png b/sprites/XFIRN0.png new file mode 100644 index 000000000..7054984b3 Binary files /dev/null and b/sprites/XFIRN0.png differ diff --git a/sprites/XFIRO0.png b/sprites/XFIRO0.png new file mode 100644 index 000000000..ed5975fbe Binary files /dev/null and b/sprites/XFIRO0.png differ diff --git a/sprites/XFIRP0.png b/sprites/XFIRP0.png new file mode 100644 index 000000000..e4151c992 Binary files /dev/null and b/sprites/XFIRP0.png differ diff --git a/sprites/XFIRQ0.png b/sprites/XFIRQ0.png new file mode 100644 index 000000000..d226dcbc3 Binary files /dev/null and b/sprites/XFIRQ0.png differ diff --git a/sprites/XFIRR0.png b/sprites/XFIRR0.png new file mode 100644 index 000000000..f4f0b6aa7 Binary files /dev/null and b/sprites/XFIRR0.png differ diff --git a/sprites/XFIRS0.png b/sprites/XFIRS0.png new file mode 100644 index 000000000..ebbb6a319 Binary files /dev/null and b/sprites/XFIRS0.png differ diff --git a/sprites/XFIRT0.png b/sprites/XFIRT0.png new file mode 100644 index 000000000..2c8e88d27 Binary files /dev/null and b/sprites/XFIRT0.png differ diff --git a/sprites/XFLMA0.png b/sprites/XFLMA0.png deleted file mode 100644 index 0b93ce814..000000000 Binary files a/sprites/XFLMA0.png and /dev/null differ diff --git a/sprites/XFLMB0.png b/sprites/XFLMB0.png deleted file mode 100644 index 2b5219ab8..000000000 Binary files a/sprites/XFLMB0.png and /dev/null differ diff --git a/sprites/XFLMC0.png b/sprites/XFLMC0.png deleted file mode 100644 index 8a516170b..000000000 Binary files a/sprites/XFLMC0.png and /dev/null differ diff --git a/sprites/XFLMD0.png b/sprites/XFLMD0.png deleted file mode 100644 index 04aea3e33..000000000 Binary files a/sprites/XFLMD0.png and /dev/null differ diff --git a/sprites/XFLME0.png b/sprites/XFLME0.png deleted file mode 100644 index e7ff01c14..000000000 Binary files a/sprites/XFLME0.png and /dev/null differ diff --git a/sprites/XFLMF0.png b/sprites/XFLMF0.png deleted file mode 100644 index 0c923533a..000000000 Binary files a/sprites/XFLMF0.png and /dev/null differ diff --git a/sprites/XFLMG0.png b/sprites/XFLMG0.png deleted file mode 100644 index 2edf95c2a..000000000 Binary files a/sprites/XFLMG0.png and /dev/null differ diff --git a/sprites/XFLMH0.png b/sprites/XFLMH0.png deleted file mode 100644 index a249ce1d1..000000000 Binary files a/sprites/XFLMH0.png and /dev/null differ diff --git a/sprites/XFLMI0.png b/sprites/XFLMI0.png deleted file mode 100644 index 4b5b8ddc5..000000000 Binary files a/sprites/XFLMI0.png and /dev/null differ diff --git a/sprites/XFLMJ0.png b/sprites/XFLMJ0.png deleted file mode 100644 index 26e2bc347..000000000 Binary files a/sprites/XFLMJ0.png and /dev/null differ diff --git a/sprites/XFLMK0.png b/sprites/XFLMK0.png deleted file mode 100644 index f079f8c80..000000000 Binary files a/sprites/XFLMK0.png and /dev/null differ diff --git a/sprites/XFLML0.png b/sprites/XFLML0.png deleted file mode 100644 index 39978d382..000000000 Binary files a/sprites/XFLML0.png and /dev/null differ diff --git a/sprites/XFLMM0.png b/sprites/XFLMM0.png deleted file mode 100644 index 588ba4531..000000000 Binary files a/sprites/XFLMM0.png and /dev/null differ diff --git a/sprites/XFLMN0.png b/sprites/XFLMN0.png deleted file mode 100644 index b0a53eca3..000000000 Binary files a/sprites/XFLMN0.png and /dev/null differ diff --git a/sprites/XFLMO0.png b/sprites/XFLMO0.png deleted file mode 100644 index 08acb99ff..000000000 Binary files a/sprites/XFLMO0.png and /dev/null differ diff --git a/sprites/XFLMP0.png b/sprites/XFLMP0.png deleted file mode 100644 index 289a35e15..000000000 Binary files a/sprites/XFLMP0.png and /dev/null differ diff --git a/sprites/XFLMQ0.png b/sprites/XFLMQ0.png deleted file mode 100644 index cf59c7179..000000000 Binary files a/sprites/XFLMQ0.png and /dev/null differ diff --git a/sprites/XFLMR0.png b/sprites/XFLMR0.png deleted file mode 100644 index 2efcdc4f7..000000000 Binary files a/sprites/XFLMR0.png and /dev/null differ diff --git a/sprites/XFLMS0.png b/sprites/XFLMS0.png deleted file mode 100644 index 1daf09e9a..000000000 Binary files a/sprites/XFLMS0.png and /dev/null differ diff --git a/sprites/XFLMT0.png b/sprites/XFLMT0.png deleted file mode 100644 index a93799ab4..000000000 Binary files a/sprites/XFLMT0.png and /dev/null differ diff --git a/sprites/XRG0A0.png b/sprites/XRG0A0.png index 23a1d1232..38f00f7d8 100644 Binary files a/sprites/XRG0A0.png and b/sprites/XRG0A0.png differ diff --git a/sprites/XRG0E0.png b/sprites/XRG0E0.png index 7cd252609..8ed8ca71c 100644 Binary files a/sprites/XRG0E0.png and b/sprites/XRG0E0.png differ diff --git a/sprites/XRG0F0.png b/sprites/XRG0F0.png index 93f3b77c2..1aa241d50 100644 Binary files a/sprites/XRG0F0.png and b/sprites/XRG0F0.png differ diff --git a/sprites/XRG0G0.png b/sprites/XRG0G0.png index 620beaf5c..2de52bf50 100644 Binary files a/sprites/XRG0G0.png and b/sprites/XRG0G0.png differ diff --git a/sprites/XRG0H0.png b/sprites/XRG0H0.png index 2e4f01180..f1f0b9544 100644 Binary files a/sprites/XRG0H0.png and b/sprites/XRG0H0.png differ diff --git a/sprites/XRG0M0.png b/sprites/XRG0M0.png index 4855863a3..2c09caee1 100644 Binary files a/sprites/XRG0M0.png and b/sprites/XRG0M0.png differ diff --git a/sprites/XRG0N0.png b/sprites/XRG0N0.png index f547c12eb..c7b84a0b0 100644 Binary files a/sprites/XRG0N0.png and b/sprites/XRG0N0.png differ diff --git a/sprites/XRG0O0.png b/sprites/XRG0O0.png index a19da43d8..88c257fc1 100644 Binary files a/sprites/XRG0O0.png and b/sprites/XRG0O0.png differ diff --git a/sprites/XRG0Q0.png b/sprites/XRG0Q0.png index 1500ddc7c..e09d52cc3 100644 Binary files a/sprites/XRG0Q0.png and b/sprites/XRG0Q0.png differ diff --git a/sprites/XRG0V0.png b/sprites/XRG0V0.png index 193b7ca0a..d281f64ba 100644 Binary files a/sprites/XRG0V0.png and b/sprites/XRG0V0.png differ diff --git a/sprites/XRG0W0.png b/sprites/XRG0W0.png index 45fc38793..5b5f4aa99 100644 Binary files a/sprites/XRG0W0.png and b/sprites/XRG0W0.png differ diff --git a/sprites/XRG0X0.png b/sprites/XRG0X0.png index ac055f776..acd9211ff 100644 Binary files a/sprites/XRG0X0.png and b/sprites/XRG0X0.png differ diff --git a/sprites/XRG1A0.png b/sprites/XRG1A0.png index c166c9751..b0d6e5834 100644 Binary files a/sprites/XRG1A0.png and b/sprites/XRG1A0.png differ diff --git a/sprites/XRG1B0.png b/sprites/XRG1B0.png index 1d05814d5..ec624eff1 100644 Binary files a/sprites/XRG1B0.png and b/sprites/XRG1B0.png differ diff --git a/sprites/XRG1C0.png b/sprites/XRG1C0.png index b42f09696..fa6194173 100644 Binary files a/sprites/XRG1C0.png and b/sprites/XRG1C0.png differ diff --git a/sprites/XRG1D0.png b/sprites/XRG1D0.png index 104e1b6b3..779f0ebad 100644 Binary files a/sprites/XRG1D0.png and b/sprites/XRG1D0.png differ diff --git a/sprites/XRG1E0.png b/sprites/XRG1E0.png index ad8ce6629..390bda52a 100644 Binary files a/sprites/XRG1E0.png and b/sprites/XRG1E0.png differ diff --git a/sprites/XRG1F0.png b/sprites/XRG1F0.png index a95364170..ffc46c204 100644 Binary files a/sprites/XRG1F0.png and b/sprites/XRG1F0.png differ diff --git a/sprites/XRG1H0.png b/sprites/XRG1H0.png index 8f4dfb59c..590c00f56 100644 Binary files a/sprites/XRG1H0.png and b/sprites/XRG1H0.png differ diff --git a/sprites/XRG1J0.png b/sprites/XRG1J0.png index 412cd39c2..45437c0e3 100644 Binary files a/sprites/XRG1J0.png and b/sprites/XRG1J0.png differ diff --git a/sprites/XRG1K0.png b/sprites/XRG1K0.png index cd5da1c3e..1a538319d 100644 Binary files a/sprites/XRG1K0.png and b/sprites/XRG1K0.png differ diff --git a/sprites/XRG1N0.png b/sprites/XRG1N0.png index 032de113e..5ae50a57a 100644 Binary files a/sprites/XRG1N0.png and b/sprites/XRG1N0.png differ diff --git a/sprites/XRG1O0.png b/sprites/XRG1O0.png index b0955c0d4..c96a7cee1 100644 Binary files a/sprites/XRG1O0.png and b/sprites/XRG1O0.png differ diff --git a/sprites/XRG1P0.png b/sprites/XRG1P0.png index bbe6dd25e..cfe36656a 100644 Binary files a/sprites/XRG1P0.png and b/sprites/XRG1P0.png differ diff --git a/sprites/XRG1Q0.png b/sprites/XRG1Q0.png index 4e12cb35a..153d5caf9 100644 Binary files a/sprites/XRG1Q0.png and b/sprites/XRG1Q0.png differ diff --git a/sprites/XRG1R0.png b/sprites/XRG1R0.png index 6f7efabf3..5d2f46df5 100644 Binary files a/sprites/XRG1R0.png and b/sprites/XRG1R0.png differ diff --git a/sprites/XRG1S0.png b/sprites/XRG1S0.png index 9f2c16577..52df1b241 100644 Binary files a/sprites/XRG1S0.png and b/sprites/XRG1S0.png differ diff --git a/sprites/XRG1T0.png b/sprites/XRG1T0.png index 6bb288e18..975f9eff4 100644 Binary files a/sprites/XRG1T0.png and b/sprites/XRG1T0.png differ diff --git a/sprites/XRG1U0.png b/sprites/XRG1U0.png index c6e607913..f2df9b4d2 100644 Binary files a/sprites/XRG1U0.png and b/sprites/XRG1U0.png differ diff --git a/sprites/XRG1V0.png b/sprites/XRG1V0.png index a8234db88..78d429b85 100644 Binary files a/sprites/XRG1V0.png and b/sprites/XRG1V0.png differ diff --git a/sprites/XRG1W0.png b/sprites/XRG1W0.png index 55ed7d3d9..811da95a1 100644 Binary files a/sprites/XRG1W0.png and b/sprites/XRG1W0.png differ diff --git a/sprites/XRG1X0.png b/sprites/XRG1X0.png index 0a5ebcf03..a0b3cc582 100644 Binary files a/sprites/XRG1X0.png and b/sprites/XRG1X0.png differ diff --git a/sprites/XRG2A0.png b/sprites/XRG2A0.png index 94e438726..fd7662e2a 100644 Binary files a/sprites/XRG2A0.png and b/sprites/XRG2A0.png differ diff --git a/sprites/XRG2B0.png b/sprites/XRG2B0.png index 473b0878e..91c8f06ab 100644 Binary files a/sprites/XRG2B0.png and b/sprites/XRG2B0.png differ diff --git a/sprites/XRG2C0.png b/sprites/XRG2C0.png index 4ce1061e8..aa43c521c 100644 Binary files a/sprites/XRG2C0.png and b/sprites/XRG2C0.png differ diff --git a/sprites/XRG2D0.png b/sprites/XRG2D0.png index 602f51f7b..02bb789e8 100644 Binary files a/sprites/XRG2D0.png and b/sprites/XRG2D0.png differ diff --git a/sprites/XRG2E0.png b/sprites/XRG2E0.png index 153783fa6..50fb52e7f 100644 Binary files a/sprites/XRG2E0.png and b/sprites/XRG2E0.png differ diff --git a/sprites/XRG2F0.png b/sprites/XRG2F0.png index 97185f08e..dd11cfa44 100644 Binary files a/sprites/XRG2F0.png and b/sprites/XRG2F0.png differ diff --git a/sprites/XRG2G0.png b/sprites/XRG2G0.png index cd58fa80b..ca1653a17 100644 Binary files a/sprites/XRG2G0.png and b/sprites/XRG2G0.png differ diff --git a/sprites/XRG2H0.png b/sprites/XRG2H0.png index 0db6f8ca6..605903d0e 100644 Binary files a/sprites/XRG2H0.png and b/sprites/XRG2H0.png differ diff --git a/sprites/XRG2I0.png b/sprites/XRG2I0.png index 8a8f02a40..f643f241f 100644 Binary files a/sprites/XRG2I0.png and b/sprites/XRG2I0.png differ diff --git a/sprites/XRG2J0.png b/sprites/XRG2J0.png index 1dafb7afb..6633c057f 100644 Binary files a/sprites/XRG2J0.png and b/sprites/XRG2J0.png differ diff --git a/sprites/XRG2K0.png b/sprites/XRG2K0.png index 877e32071..a759d2bcf 100644 Binary files a/sprites/XRG2K0.png and b/sprites/XRG2K0.png differ diff --git a/sprites/XRG2M0.png b/sprites/XRG2M0.png index cd8272666..39e35aec6 100644 Binary files a/sprites/XRG2M0.png and b/sprites/XRG2M0.png differ diff --git a/sprites/XRG2N0.png b/sprites/XRG2N0.png index 2646587d2..f21c756dc 100644 Binary files a/sprites/XRG2N0.png and b/sprites/XRG2N0.png differ diff --git a/sprites/XRG2O0.png b/sprites/XRG2O0.png index f4c326ce7..647f52b53 100644 Binary files a/sprites/XRG2O0.png and b/sprites/XRG2O0.png differ diff --git a/sprites/XRG2Q0.png b/sprites/XRG2Q0.png index 71e60d4dd..db8c74f38 100644 Binary files a/sprites/XRG2Q0.png and b/sprites/XRG2Q0.png differ diff --git a/sprites/XRG2R0.png b/sprites/XRG2R0.png index b3adc77ff..143d7014e 100644 Binary files a/sprites/XRG2R0.png and b/sprites/XRG2R0.png differ diff --git a/sprites/XRG2U0.png b/sprites/XRG2U0.png index 30f883835..e3d66eff2 100644 Binary files a/sprites/XRG2U0.png and b/sprites/XRG2U0.png differ diff --git a/sprites/XRG2X0.png b/sprites/XRG2X0.png index 4147516cb..e856978d4 100644 Binary files a/sprites/XRG2X0.png and b/sprites/XRG2X0.png differ diff --git a/sprites/XRG3A0.png b/sprites/XRG3A0.png index b94ad6bc2..c39cf99ae 100644 Binary files a/sprites/XRG3A0.png and b/sprites/XRG3A0.png differ diff --git a/sprites/XRG3B0.png b/sprites/XRG3B0.png index 9999ae90c..ea5b6abda 100644 Binary files a/sprites/XRG3B0.png and b/sprites/XRG3B0.png differ diff --git a/sprites/XRG3C0.png b/sprites/XRG3C0.png index d5a4986b3..86f160660 100644 Binary files a/sprites/XRG3C0.png and b/sprites/XRG3C0.png differ diff --git a/sprites/XRG3D0.png b/sprites/XRG3D0.png index 6c9641c64..45850720d 100644 Binary files a/sprites/XRG3D0.png and b/sprites/XRG3D0.png differ diff --git a/sprites/XRG3E0.png b/sprites/XRG3E0.png index 86aea9b04..12b56db35 100644 Binary files a/sprites/XRG3E0.png and b/sprites/XRG3E0.png differ diff --git a/sprites/XRG3F0.png b/sprites/XRG3F0.png index 389acb671..21faee0d3 100644 Binary files a/sprites/XRG3F0.png and b/sprites/XRG3F0.png differ diff --git a/sprites/XRG3G0.png b/sprites/XRG3G0.png index e47ad1739..ca7f69bfa 100644 Binary files a/sprites/XRG3G0.png and b/sprites/XRG3G0.png differ diff --git a/sprites/XRG3I0.png b/sprites/XRG3I0.png index 279483131..ea71eb58c 100644 Binary files a/sprites/XRG3I0.png and b/sprites/XRG3I0.png differ diff --git a/sprites/XRG3L0.png b/sprites/XRG3L0.png index 1cbb976d2..745639363 100644 Binary files a/sprites/XRG3L0.png and b/sprites/XRG3L0.png differ diff --git a/sprites/XRG3M0.png b/sprites/XRG3M0.png index 1439597fe..56062dd43 100644 Binary files a/sprites/XRG3M0.png and b/sprites/XRG3M0.png differ diff --git a/sprites/XRG3N0.png b/sprites/XRG3N0.png index edafb7be2..c9a17af72 100644 Binary files a/sprites/XRG3N0.png and b/sprites/XRG3N0.png differ diff --git a/sprites/XRG3O0.png b/sprites/XRG3O0.png index 60ebb9316..af9089cda 100644 Binary files a/sprites/XRG3O0.png and b/sprites/XRG3O0.png differ diff --git a/sprites/XRG3P0.png b/sprites/XRG3P0.png index 7f5b83b28..4ebad7d89 100644 Binary files a/sprites/XRG3P0.png and b/sprites/XRG3P0.png differ diff --git a/sprites/XRG3Q0.png b/sprites/XRG3Q0.png index 70b9a7fd4..78cb2c3e1 100644 Binary files a/sprites/XRG3Q0.png and b/sprites/XRG3Q0.png differ diff --git a/sprites/XRG3R0.png b/sprites/XRG3R0.png index c5c675915..3279ffa8d 100644 Binary files a/sprites/XRG3R0.png and b/sprites/XRG3R0.png differ diff --git a/sprites/XRG3V0.png b/sprites/XRG3V0.png index d515f5295..f2d4c0be8 100644 Binary files a/sprites/XRG3V0.png and b/sprites/XRG3V0.png differ diff --git a/sprites/XRG3W0.png b/sprites/XRG3W0.png index ce6869e9d..c4bd7e06f 100644 Binary files a/sprites/XRG3W0.png and b/sprites/XRG3W0.png differ diff --git a/sprites/XRG3X0.png b/sprites/XRG3X0.png index 20faa37cd..b1f7ccd4b 100644 Binary files a/sprites/XRG3X0.png and b/sprites/XRG3X0.png differ diff --git a/sprites/XRG4A0.png b/sprites/XRG4A0.png index 082b6cc66..42db78b9c 100644 Binary files a/sprites/XRG4A0.png and b/sprites/XRG4A0.png differ diff --git a/sprites/XRG4B0.png b/sprites/XRG4B0.png index 460297281..dca4e8c4e 100644 Binary files a/sprites/XRG4B0.png and b/sprites/XRG4B0.png differ diff --git a/sprites/XRG4D0.png b/sprites/XRG4D0.png index 0aa21fed5..ff594bfad 100644 Binary files a/sprites/XRG4D0.png and b/sprites/XRG4D0.png differ diff --git a/sprites/XRG4E0.png b/sprites/XRG4E0.png index dd48fa6cb..4c20428c4 100644 Binary files a/sprites/XRG4E0.png and b/sprites/XRG4E0.png differ diff --git a/sprites/XRG4F0.png b/sprites/XRG4F0.png index f41c15f40..86c51fc79 100644 Binary files a/sprites/XRG4F0.png and b/sprites/XRG4F0.png differ diff --git a/sprites/XRG4G0.png b/sprites/XRG4G0.png index 1158ce589..9f95aa229 100644 Binary files a/sprites/XRG4G0.png and b/sprites/XRG4G0.png differ diff --git a/sprites/XRG4H0.png b/sprites/XRG4H0.png index 08fe56f20..3e70f5292 100644 Binary files a/sprites/XRG4H0.png and b/sprites/XRG4H0.png differ diff --git a/sprites/XRG4I0.png b/sprites/XRG4I0.png index a0d9b3843..dab08506a 100644 Binary files a/sprites/XRG4I0.png and b/sprites/XRG4I0.png differ diff --git a/sprites/XRG4J0.png b/sprites/XRG4J0.png index 56f63a946..6d3bc7b43 100644 Binary files a/sprites/XRG4J0.png and b/sprites/XRG4J0.png differ diff --git a/sprites/XRG4K0.png b/sprites/XRG4K0.png index 1734c2a55..596c7dc53 100644 Binary files a/sprites/XRG4K0.png and b/sprites/XRG4K0.png differ diff --git a/sprites/XRG4L0.png b/sprites/XRG4L0.png index a4f20ba3b..81141a344 100644 Binary files a/sprites/XRG4L0.png and b/sprites/XRG4L0.png differ diff --git a/sprites/XRG4M0.png b/sprites/XRG4M0.png index abf9e143a..dc1170ba0 100644 Binary files a/sprites/XRG4M0.png and b/sprites/XRG4M0.png differ diff --git a/sprites/XRG4N0.png b/sprites/XRG4N0.png index bc7da9e03..0bc9db8a3 100644 Binary files a/sprites/XRG4N0.png and b/sprites/XRG4N0.png differ diff --git a/sprites/XRG4O0.png b/sprites/XRG4O0.png index 0187593ae..fef715803 100644 Binary files a/sprites/XRG4O0.png and b/sprites/XRG4O0.png differ diff --git a/sprites/XRG4P0.png b/sprites/XRG4P0.png index 9f242112b..87a6f4124 100644 Binary files a/sprites/XRG4P0.png and b/sprites/XRG4P0.png differ diff --git a/sprites/XRG4Q0.png b/sprites/XRG4Q0.png index a8fe58b02..ee7643553 100644 Binary files a/sprites/XRG4Q0.png and b/sprites/XRG4Q0.png differ diff --git a/sprites/XRG4R0.png b/sprites/XRG4R0.png index 21f89c7f4..9ba0ea83a 100644 Binary files a/sprites/XRG4R0.png and b/sprites/XRG4R0.png differ diff --git a/sprites/XRG4S0.png b/sprites/XRG4S0.png index 450e1e7d7..2d67682ee 100644 Binary files a/sprites/XRG4S0.png and b/sprites/XRG4S0.png differ diff --git a/sprites/XRG4T0.png b/sprites/XRG4T0.png index 5b7c5ba62..6ee50483e 100644 Binary files a/sprites/XRG4T0.png and b/sprites/XRG4T0.png differ diff --git a/sprites/XRG4U0.png b/sprites/XRG4U0.png index 2653dc2e8..94943c1d7 100644 Binary files a/sprites/XRG4U0.png and b/sprites/XRG4U0.png differ diff --git a/sprites/XRG4V0.png b/sprites/XRG4V0.png index f2b73e8c8..3bcf0529d 100644 Binary files a/sprites/XRG4V0.png and b/sprites/XRG4V0.png differ diff --git a/sprites/XRG4W0.png b/sprites/XRG4W0.png index 546dbaadc..a6b2b43ec 100644 Binary files a/sprites/XRG4W0.png and b/sprites/XRG4W0.png differ diff --git a/sprites/XRG4X0.png b/sprites/XRG4X0.png index 52d161536..d27f6fb7a 100644 Binary files a/sprites/XRG4X0.png and b/sprites/XRG4X0.png differ diff --git a/sprites/XRG5A0.png b/sprites/XRG5A0.png index 6e8a0d138..131207b37 100644 Binary files a/sprites/XRG5A0.png and b/sprites/XRG5A0.png differ diff --git a/sprites/XRG5C0.png b/sprites/XRG5C0.png index 41d71cf12..1dde2be8a 100644 Binary files a/sprites/XRG5C0.png and b/sprites/XRG5C0.png differ diff --git a/sprites/XRG5E0.png b/sprites/XRG5E0.png index ac9aa1ee2..ad7c7f4e1 100644 Binary files a/sprites/XRG5E0.png and b/sprites/XRG5E0.png differ diff --git a/sprites/XRG5N0.png b/sprites/XRG5N0.png index 3723927cc..496adfede 100644 Binary files a/sprites/XRG5N0.png and b/sprites/XRG5N0.png differ diff --git a/sprites/XRG5O0.png b/sprites/XRG5O0.png index b54c183ad..ececd621e 100644 Binary files a/sprites/XRG5O0.png and b/sprites/XRG5O0.png differ diff --git a/sprites/XRG5P0.png b/sprites/XRG5P0.png index d02cf1f92..2afec96f0 100644 Binary files a/sprites/XRG5P0.png and b/sprites/XRG5P0.png differ diff --git a/sprites/XRG5Q0.png b/sprites/XRG5Q0.png index 5fe8ca117..51cf10fd9 100644 Binary files a/sprites/XRG5Q0.png and b/sprites/XRG5Q0.png differ diff --git a/sprites/XRG5R0.png b/sprites/XRG5R0.png index edcea1a3b..3c8dd364e 100644 Binary files a/sprites/XRG5R0.png and b/sprites/XRG5R0.png differ diff --git a/sprites/XRG5U0.png b/sprites/XRG5U0.png index 9d19aa59b..70b62a46e 100644 Binary files a/sprites/XRG5U0.png and b/sprites/XRG5U0.png differ diff --git a/sprites/XRG5V0.png b/sprites/XRG5V0.png index fa95c23c5..3809f3c57 100644 Binary files a/sprites/XRG5V0.png and b/sprites/XRG5V0.png differ diff --git a/sprites/XRG5W0.png b/sprites/XRG5W0.png index 9712820be..98b45093b 100644 Binary files a/sprites/XRG5W0.png and b/sprites/XRG5W0.png differ diff --git a/sprites/XRG5X0.png b/sprites/XRG5X0.png index a88c960e7..2c1619ea1 100644 Binary files a/sprites/XRG5X0.png and b/sprites/XRG5X0.png differ diff --git a/sprites/XRG6A0.png b/sprites/XRG6A0.png new file mode 100644 index 000000000..b1b21ee48 Binary files /dev/null and b/sprites/XRG6A0.png differ diff --git a/sprites/XRG6B0.png b/sprites/XRG6B0.png new file mode 100644 index 000000000..b58fddd39 Binary files /dev/null and b/sprites/XRG6B0.png differ diff --git a/sprites/XRG6C0.png b/sprites/XRG6C0.png new file mode 100644 index 000000000..aecc7160c Binary files /dev/null and b/sprites/XRG6C0.png differ diff --git a/sprites/XRG6D0.png b/sprites/XRG6D0.png new file mode 100644 index 000000000..fa676b145 Binary files /dev/null and b/sprites/XRG6D0.png differ diff --git a/sprites/XRG6E0.png b/sprites/XRG6E0.png new file mode 100644 index 000000000..0d1e7eafd Binary files /dev/null and b/sprites/XRG6E0.png differ diff --git a/sprites/XRG6F0.png b/sprites/XRG6F0.png new file mode 100644 index 000000000..a9c7e6ca5 Binary files /dev/null and b/sprites/XRG6F0.png differ diff --git a/sprites/XRG6G0.png b/sprites/XRG6G0.png new file mode 100644 index 000000000..389168a78 Binary files /dev/null and b/sprites/XRG6G0.png differ diff --git a/sprites/XRG6H0.png b/sprites/XRG6H0.png new file mode 100644 index 000000000..38d42706c Binary files /dev/null and b/sprites/XRG6H0.png differ diff --git a/sprites/XRG6I0.png b/sprites/XRG6I0.png new file mode 100644 index 000000000..c76e7d3b2 Binary files /dev/null and b/sprites/XRG6I0.png differ diff --git a/sprites/XRG6J0.png b/sprites/XRG6J0.png new file mode 100644 index 000000000..8b90079dd Binary files /dev/null and b/sprites/XRG6J0.png differ diff --git a/sprites/dlc/XRG6K0.png b/sprites/XRG6K0.png similarity index 100% rename from sprites/dlc/XRG6K0.png rename to sprites/XRG6K0.png diff --git a/sprites/XRG6L0.png b/sprites/XRG6L0.png new file mode 100644 index 000000000..da181d9b0 Binary files /dev/null and b/sprites/XRG6L0.png differ diff --git a/sprites/XRG6M0.png b/sprites/XRG6M0.png new file mode 100644 index 000000000..8e54519d3 Binary files /dev/null and b/sprites/XRG6M0.png differ diff --git a/sprites/XRG6N0.png b/sprites/XRG6N0.png new file mode 100644 index 000000000..8cf8b1ffa Binary files /dev/null and b/sprites/XRG6N0.png differ diff --git a/sprites/XRG6O0.png b/sprites/XRG6O0.png new file mode 100644 index 000000000..cb5c43c0e Binary files /dev/null and b/sprites/XRG6O0.png differ diff --git a/sprites/XRG6P0.png b/sprites/XRG6P0.png new file mode 100644 index 000000000..8f24a539e Binary files /dev/null and b/sprites/XRG6P0.png differ diff --git a/sprites/XRG6Q0.png b/sprites/XRG6Q0.png new file mode 100644 index 000000000..7ad000c31 Binary files /dev/null and b/sprites/XRG6Q0.png differ diff --git a/sprites/XRG6R0.png b/sprites/XRG6R0.png new file mode 100644 index 000000000..8f03ca453 Binary files /dev/null and b/sprites/XRG6R0.png differ diff --git a/sprites/XRG6S0.png b/sprites/XRG6S0.png new file mode 100644 index 000000000..3f991449f Binary files /dev/null and b/sprites/XRG6S0.png differ diff --git a/sprites/XRG6T0.png b/sprites/XRG6T0.png new file mode 100644 index 000000000..b7ed74db0 Binary files /dev/null and b/sprites/XRG6T0.png differ diff --git a/sprites/XRG6U0.png b/sprites/XRG6U0.png new file mode 100644 index 000000000..66d0d3e99 Binary files /dev/null and b/sprites/XRG6U0.png differ diff --git a/sprites/XRG6V0.png b/sprites/XRG6V0.png new file mode 100644 index 000000000..21d48e430 Binary files /dev/null and b/sprites/XRG6V0.png differ diff --git a/sprites/XRG6W0.png b/sprites/XRG6W0.png new file mode 100644 index 000000000..ecd4b5972 Binary files /dev/null and b/sprites/XRG6W0.png differ diff --git a/sprites/XRG6X0.png b/sprites/XRG6X0.png new file mode 100644 index 000000000..9aef7e17f Binary files /dev/null and b/sprites/XRG6X0.png differ diff --git a/sprites/XRG7A0.png b/sprites/XRG7A0.png new file mode 100644 index 000000000..e2624d988 Binary files /dev/null and b/sprites/XRG7A0.png differ diff --git a/sprites/XRG7B0.png b/sprites/XRG7B0.png new file mode 100644 index 000000000..ef9df4fe0 Binary files /dev/null and b/sprites/XRG7B0.png differ diff --git a/sprites/XRG7C0.png b/sprites/XRG7C0.png new file mode 100644 index 000000000..7650cf68a Binary files /dev/null and b/sprites/XRG7C0.png differ diff --git a/sprites/XRG7D0.png b/sprites/XRG7D0.png new file mode 100644 index 000000000..623636a1c Binary files /dev/null and b/sprites/XRG7D0.png differ diff --git a/sprites/XRG7E0.png b/sprites/XRG7E0.png new file mode 100644 index 000000000..828e708c5 Binary files /dev/null and b/sprites/XRG7E0.png differ diff --git a/sprites/XRG7F0.png b/sprites/XRG7F0.png new file mode 100644 index 000000000..818d1a42e Binary files /dev/null and b/sprites/XRG7F0.png differ diff --git a/sprites/XRG7G0.png b/sprites/XRG7G0.png new file mode 100644 index 000000000..0e082db05 Binary files /dev/null and b/sprites/XRG7G0.png differ diff --git a/sprites/XRG7H0.png b/sprites/XRG7H0.png new file mode 100644 index 000000000..b148e979c Binary files /dev/null and b/sprites/XRG7H0.png differ diff --git a/sprites/XRG7I0.png b/sprites/XRG7I0.png new file mode 100644 index 000000000..024aef144 Binary files /dev/null and b/sprites/XRG7I0.png differ diff --git a/sprites/XRG7J0.png b/sprites/XRG7J0.png new file mode 100644 index 000000000..d2630d728 Binary files /dev/null and b/sprites/XRG7J0.png differ diff --git a/sprites/XRG7K0.png b/sprites/XRG7K0.png new file mode 100644 index 000000000..fd2d57848 Binary files /dev/null and b/sprites/XRG7K0.png differ diff --git a/sprites/XRG7L0.png b/sprites/XRG7L0.png new file mode 100644 index 000000000..5aca56175 Binary files /dev/null and b/sprites/XRG7L0.png differ diff --git a/sprites/XRG7M0.png b/sprites/XRG7M0.png new file mode 100644 index 000000000..843af38b0 Binary files /dev/null and b/sprites/XRG7M0.png differ diff --git a/sprites/XRG7N0.png b/sprites/XRG7N0.png new file mode 100644 index 000000000..464057f82 Binary files /dev/null and b/sprites/XRG7N0.png differ diff --git a/sprites/XRG7O0.png b/sprites/XRG7O0.png new file mode 100644 index 000000000..4ec86f723 Binary files /dev/null and b/sprites/XRG7O0.png differ diff --git a/sprites/XRG7P0.png b/sprites/XRG7P0.png new file mode 100644 index 000000000..bd3fdc198 Binary files /dev/null and b/sprites/XRG7P0.png differ diff --git a/sprites/XRG7Q0.png b/sprites/XRG7Q0.png new file mode 100644 index 000000000..825e162ab Binary files /dev/null and b/sprites/XRG7Q0.png differ diff --git a/sprites/dlc/XRG7R0.png b/sprites/XRG7R0.png similarity index 100% rename from sprites/dlc/XRG7R0.png rename to sprites/XRG7R0.png diff --git a/sprites/XRG7S0.png b/sprites/XRG7S0.png new file mode 100644 index 000000000..507f111f9 Binary files /dev/null and b/sprites/XRG7S0.png differ diff --git a/sprites/XRG7T0.png b/sprites/XRG7T0.png new file mode 100644 index 000000000..348fb2590 Binary files /dev/null and b/sprites/XRG7T0.png differ diff --git a/sprites/XRG7U0.png b/sprites/XRG7U0.png new file mode 100644 index 000000000..d841ccff7 Binary files /dev/null and b/sprites/XRG7U0.png differ diff --git a/sprites/XRG7V0.png b/sprites/XRG7V0.png new file mode 100644 index 000000000..49940b649 Binary files /dev/null and b/sprites/XRG7V0.png differ diff --git a/sprites/XRG7W0.png b/sprites/XRG7W0.png new file mode 100644 index 000000000..80d033769 Binary files /dev/null and b/sprites/XRG7W0.png differ diff --git a/sprites/XRG7X0.png b/sprites/XRG7X0.png new file mode 100644 index 000000000..4c5e66d37 Binary files /dev/null and b/sprites/XRG7X0.png differ diff --git a/sprites/XRG8A0.png b/sprites/XRG8A0.png new file mode 100644 index 000000000..85a080e6b Binary files /dev/null and b/sprites/XRG8A0.png differ diff --git a/sprites/XRG8B0.png b/sprites/XRG8B0.png new file mode 100644 index 000000000..d3d9d70a0 Binary files /dev/null and b/sprites/XRG8B0.png differ diff --git a/sprites/XRG8C0.png b/sprites/XRG8C0.png new file mode 100644 index 000000000..6c7193411 Binary files /dev/null and b/sprites/XRG8C0.png differ diff --git a/sprites/XRG8D0.png b/sprites/XRG8D0.png new file mode 100644 index 000000000..cd75f3b5d Binary files /dev/null and b/sprites/XRG8D0.png differ diff --git a/sprites/XRG8E0.png b/sprites/XRG8E0.png new file mode 100644 index 000000000..26c25cbd3 Binary files /dev/null and b/sprites/XRG8E0.png differ diff --git a/sprites/XRG8F0.png b/sprites/XRG8F0.png new file mode 100644 index 000000000..2eb0f9a3f Binary files /dev/null and b/sprites/XRG8F0.png differ diff --git a/sprites/XRG8G0.png b/sprites/XRG8G0.png new file mode 100644 index 000000000..3ee4cb013 Binary files /dev/null and b/sprites/XRG8G0.png differ diff --git a/sprites/XRG8H0.png b/sprites/XRG8H0.png new file mode 100644 index 000000000..91a35eefd Binary files /dev/null and b/sprites/XRG8H0.png differ diff --git a/sprites/XRG8I0.png b/sprites/XRG8I0.png new file mode 100644 index 000000000..c0548dc4a Binary files /dev/null and b/sprites/XRG8I0.png differ diff --git a/sprites/XRG8J0.png b/sprites/XRG8J0.png new file mode 100644 index 000000000..00e3765ec Binary files /dev/null and b/sprites/XRG8J0.png differ diff --git a/sprites/XRG8K0.png b/sprites/XRG8K0.png new file mode 100644 index 000000000..37a66d46f Binary files /dev/null and b/sprites/XRG8K0.png differ diff --git a/sprites/XRG8L0.png b/sprites/XRG8L0.png new file mode 100644 index 000000000..59e82745a Binary files /dev/null and b/sprites/XRG8L0.png differ diff --git a/sprites/XRG8M0.png b/sprites/XRG8M0.png new file mode 100644 index 000000000..d828fd11c Binary files /dev/null and b/sprites/XRG8M0.png differ diff --git a/sprites/XRG8N0.png b/sprites/XRG8N0.png new file mode 100644 index 000000000..e485beac3 Binary files /dev/null and b/sprites/XRG8N0.png differ diff --git a/sprites/XRG8O0.png b/sprites/XRG8O0.png new file mode 100644 index 000000000..9301402ef Binary files /dev/null and b/sprites/XRG8O0.png differ diff --git a/sprites/XRG8P0.png b/sprites/XRG8P0.png new file mode 100644 index 000000000..d55e6f6ac Binary files /dev/null and b/sprites/XRG8P0.png differ diff --git a/sprites/XRG8Q0.png b/sprites/XRG8Q0.png new file mode 100644 index 000000000..46face02f Binary files /dev/null and b/sprites/XRG8Q0.png differ diff --git a/sprites/XRG8R0.png b/sprites/XRG8R0.png new file mode 100644 index 000000000..c6f7af84b Binary files /dev/null and b/sprites/XRG8R0.png differ diff --git a/sprites/XRG8S0.png b/sprites/XRG8S0.png new file mode 100644 index 000000000..815f7e380 Binary files /dev/null and b/sprites/XRG8S0.png differ diff --git a/sprites/XRG8T0.png b/sprites/XRG8T0.png new file mode 100644 index 000000000..e4d4d6fe7 Binary files /dev/null and b/sprites/XRG8T0.png differ diff --git a/sprites/XRG8U0.png b/sprites/XRG8U0.png new file mode 100644 index 000000000..b6ffe9c16 Binary files /dev/null and b/sprites/XRG8U0.png differ diff --git a/sprites/XRG8V0.png b/sprites/XRG8V0.png new file mode 100644 index 000000000..806c8d1e2 Binary files /dev/null and b/sprites/XRG8V0.png differ diff --git a/sprites/XRG8W0.png b/sprites/XRG8W0.png new file mode 100644 index 000000000..cc8074511 Binary files /dev/null and b/sprites/XRG8W0.png differ diff --git a/sprites/XRG8X0.png b/sprites/XRG8X0.png new file mode 100644 index 000000000..0c235e0e9 Binary files /dev/null and b/sprites/XRG8X0.png differ diff --git a/sprites/XRG9A0.png b/sprites/XRG9A0.png new file mode 100644 index 000000000..179579c79 Binary files /dev/null and b/sprites/XRG9A0.png differ diff --git a/sprites/XRG9B0.png b/sprites/XRG9B0.png new file mode 100644 index 000000000..ee13d0c72 Binary files /dev/null and b/sprites/XRG9B0.png differ diff --git a/sprites/XRG9C0.png b/sprites/XRG9C0.png new file mode 100644 index 000000000..7f1afe518 Binary files /dev/null and b/sprites/XRG9C0.png differ diff --git a/sprites/XRG9D0.png b/sprites/XRG9D0.png new file mode 100644 index 000000000..656eeb312 Binary files /dev/null and b/sprites/XRG9D0.png differ diff --git a/sprites/XRG9E0.png b/sprites/XRG9E0.png new file mode 100644 index 000000000..513a4605e Binary files /dev/null and b/sprites/XRG9E0.png differ diff --git a/sprites/XRG9F0.png b/sprites/XRG9F0.png new file mode 100644 index 000000000..34055ba70 Binary files /dev/null and b/sprites/XRG9F0.png differ diff --git a/sprites/XRG9G0.png b/sprites/XRG9G0.png new file mode 100644 index 000000000..a7873fa2a Binary files /dev/null and b/sprites/XRG9G0.png differ diff --git a/sprites/XRG9H0.png b/sprites/XRG9H0.png new file mode 100644 index 000000000..9c2c08352 Binary files /dev/null and b/sprites/XRG9H0.png differ diff --git a/sprites/XRG9I0.png b/sprites/XRG9I0.png new file mode 100644 index 000000000..06e68b1a5 Binary files /dev/null and b/sprites/XRG9I0.png differ diff --git a/sprites/XRG9J0.png b/sprites/XRG9J0.png new file mode 100644 index 000000000..12317b31e Binary files /dev/null and b/sprites/XRG9J0.png differ diff --git a/sprites/XRG9K0.png b/sprites/XRG9K0.png new file mode 100644 index 000000000..7e192a691 Binary files /dev/null and b/sprites/XRG9K0.png differ diff --git a/sprites/XRG9L0.png b/sprites/XRG9L0.png new file mode 100644 index 000000000..98bb62098 Binary files /dev/null and b/sprites/XRG9L0.png differ diff --git a/sprites/XRG9M0.png b/sprites/XRG9M0.png new file mode 100644 index 000000000..dde3253c0 Binary files /dev/null and b/sprites/XRG9M0.png differ diff --git a/sprites/XRG9N0.png b/sprites/XRG9N0.png new file mode 100644 index 000000000..b607e1090 Binary files /dev/null and b/sprites/XRG9N0.png differ diff --git a/sprites/XRG9O0.png b/sprites/XRG9O0.png new file mode 100644 index 000000000..29d6071b9 Binary files /dev/null and b/sprites/XRG9O0.png differ diff --git a/sprites/XRG9P0.png b/sprites/XRG9P0.png new file mode 100644 index 000000000..401c358eb Binary files /dev/null and b/sprites/XRG9P0.png differ diff --git a/sprites/XRG9Q0.png b/sprites/XRG9Q0.png new file mode 100644 index 000000000..4bdfd2ca0 Binary files /dev/null and b/sprites/XRG9Q0.png differ diff --git a/sprites/XRG9R0.png b/sprites/XRG9R0.png new file mode 100644 index 000000000..adcd6209e Binary files /dev/null and b/sprites/XRG9R0.png differ diff --git a/sprites/XRG9S0.png b/sprites/XRG9S0.png new file mode 100644 index 000000000..e1f1f9a45 Binary files /dev/null and b/sprites/XRG9S0.png differ diff --git a/sprites/XRG9T0.png b/sprites/XRG9T0.png new file mode 100644 index 000000000..6126c4c4d Binary files /dev/null and b/sprites/XRG9T0.png differ diff --git a/sprites/XRG9U0.png b/sprites/XRG9U0.png new file mode 100644 index 000000000..75a99cb3f Binary files /dev/null and b/sprites/XRG9U0.png differ diff --git a/sprites/XRG9V0.png b/sprites/XRG9V0.png new file mode 100644 index 000000000..e402a7839 Binary files /dev/null and b/sprites/XRG9V0.png differ diff --git a/sprites/XRG9W0.png b/sprites/XRG9W0.png new file mode 100644 index 000000000..698d01d7e Binary files /dev/null and b/sprites/XRG9W0.png differ diff --git a/sprites/XRG9X0.png b/sprites/XRG9X0.png new file mode 100644 index 000000000..2406428ec Binary files /dev/null and b/sprites/XRG9X0.png differ diff --git a/sprites/XRGAA0.png b/sprites/XRGAA0.png new file mode 100644 index 000000000..0b2661423 Binary files /dev/null and b/sprites/XRGAA0.png differ diff --git a/sprites/XRGAB0.png b/sprites/XRGAB0.png new file mode 100644 index 000000000..66b3e6748 Binary files /dev/null and b/sprites/XRGAB0.png differ diff --git a/sprites/XRGAC0.png b/sprites/XRGAC0.png new file mode 100644 index 000000000..fc56332e3 Binary files /dev/null and b/sprites/XRGAC0.png differ diff --git a/sprites/XRGAD0.png b/sprites/XRGAD0.png new file mode 100644 index 000000000..528671248 Binary files /dev/null and b/sprites/XRGAD0.png differ diff --git a/sprites/XRGAE0.png b/sprites/XRGAE0.png new file mode 100644 index 000000000..509234197 Binary files /dev/null and b/sprites/XRGAE0.png differ diff --git a/sprites/XRGAF0.png b/sprites/XRGAF0.png new file mode 100644 index 000000000..9cd760fef Binary files /dev/null and b/sprites/XRGAF0.png differ diff --git a/sprites/XRGAG0.png b/sprites/XRGAG0.png new file mode 100644 index 000000000..ca7e6ef65 Binary files /dev/null and b/sprites/XRGAG0.png differ diff --git a/sprites/XRGAH0.png b/sprites/XRGAH0.png new file mode 100644 index 000000000..1071b9e1c Binary files /dev/null and b/sprites/XRGAH0.png differ diff --git a/sprites/XRGAI0.png b/sprites/XRGAI0.png new file mode 100644 index 000000000..42982e181 Binary files /dev/null and b/sprites/XRGAI0.png differ diff --git a/sprites/XRGAJ0.png b/sprites/XRGAJ0.png new file mode 100644 index 000000000..f231fd3d3 Binary files /dev/null and b/sprites/XRGAJ0.png differ diff --git a/sprites/XRGAK0.png b/sprites/XRGAK0.png new file mode 100644 index 000000000..bedce7f09 Binary files /dev/null and b/sprites/XRGAK0.png differ diff --git a/sprites/XRGAL0.png b/sprites/XRGAL0.png new file mode 100644 index 000000000..c633d0a82 Binary files /dev/null and b/sprites/XRGAL0.png differ diff --git a/sprites/XRGAM0.png b/sprites/XRGAM0.png new file mode 100644 index 000000000..2e1c2e940 Binary files /dev/null and b/sprites/XRGAM0.png differ diff --git a/sprites/XRGAN0.png b/sprites/XRGAN0.png new file mode 100644 index 000000000..da3855cf4 Binary files /dev/null and b/sprites/XRGAN0.png differ diff --git a/sprites/XRGAO0.png b/sprites/XRGAO0.png new file mode 100644 index 000000000..2cf034be7 Binary files /dev/null and b/sprites/XRGAO0.png differ diff --git a/sprites/XRGAP0.png b/sprites/XRGAP0.png new file mode 100644 index 000000000..2b258e77e Binary files /dev/null and b/sprites/XRGAP0.png differ diff --git a/sprites/XRGAQ0.png b/sprites/XRGAQ0.png new file mode 100644 index 000000000..069a7e175 Binary files /dev/null and b/sprites/XRGAQ0.png differ diff --git a/sprites/XRGAR0.png b/sprites/XRGAR0.png new file mode 100644 index 000000000..6669e2670 Binary files /dev/null and b/sprites/XRGAR0.png differ diff --git a/sprites/XRGAS0.png b/sprites/XRGAS0.png new file mode 100644 index 000000000..ba620794c Binary files /dev/null and b/sprites/XRGAS0.png differ diff --git a/sprites/XRGAT0.png b/sprites/XRGAT0.png new file mode 100644 index 000000000..fde7c0ce1 Binary files /dev/null and b/sprites/XRGAT0.png differ diff --git a/sprites/XRGAU0.png b/sprites/XRGAU0.png new file mode 100644 index 000000000..d5c896537 Binary files /dev/null and b/sprites/XRGAU0.png differ diff --git a/sprites/XRGAV0.png b/sprites/XRGAV0.png new file mode 100644 index 000000000..6c8b72838 Binary files /dev/null and b/sprites/XRGAV0.png differ diff --git a/sprites/XRGAW0.png b/sprites/XRGAW0.png new file mode 100644 index 000000000..58aedd6a0 Binary files /dev/null and b/sprites/XRGAW0.png differ diff --git a/sprites/XRGAX0.png b/sprites/XRGAX0.png new file mode 100644 index 000000000..c48c6f4ba Binary files /dev/null and b/sprites/XRGAX0.png differ diff --git a/sprites/XRGBA0.png b/sprites/XRGBA0.png new file mode 100644 index 000000000..f08b56649 Binary files /dev/null and b/sprites/XRGBA0.png differ diff --git a/sprites/XRGBB0.png b/sprites/XRGBB0.png new file mode 100644 index 000000000..23ae62e37 Binary files /dev/null and b/sprites/XRGBB0.png differ diff --git a/sprites/XRGBC0.png b/sprites/XRGBC0.png new file mode 100644 index 000000000..633b96bb0 Binary files /dev/null and b/sprites/XRGBC0.png differ diff --git a/sprites/XRGBD0.png b/sprites/XRGBD0.png new file mode 100644 index 000000000..be930fe90 Binary files /dev/null and b/sprites/XRGBD0.png differ diff --git a/sprites/XRGBE0.png b/sprites/XRGBE0.png new file mode 100644 index 000000000..95320ed38 Binary files /dev/null and b/sprites/XRGBE0.png differ diff --git a/sprites/XRGBF0.png b/sprites/XRGBF0.png new file mode 100644 index 000000000..5ddf76ad0 Binary files /dev/null and b/sprites/XRGBF0.png differ diff --git a/sprites/XRGBG0.png b/sprites/XRGBG0.png new file mode 100644 index 000000000..41ba7fff8 Binary files /dev/null and b/sprites/XRGBG0.png differ diff --git a/sprites/XRGBH0.png b/sprites/XRGBH0.png new file mode 100644 index 000000000..227c77b44 Binary files /dev/null and b/sprites/XRGBH0.png differ diff --git a/sprites/XRGBI0.png b/sprites/XRGBI0.png new file mode 100644 index 000000000..8438e5f5a Binary files /dev/null and b/sprites/XRGBI0.png differ diff --git a/sprites/XRGBJ0.png b/sprites/XRGBJ0.png new file mode 100644 index 000000000..8f2ed9f85 Binary files /dev/null and b/sprites/XRGBJ0.png differ diff --git a/sprites/XRGBK0.png b/sprites/XRGBK0.png new file mode 100644 index 000000000..a47e453c7 Binary files /dev/null and b/sprites/XRGBK0.png differ diff --git a/sprites/XRGBL0.png b/sprites/XRGBL0.png new file mode 100644 index 000000000..fcbc9f0e4 Binary files /dev/null and b/sprites/XRGBL0.png differ diff --git a/sprites/XRGBM0.png b/sprites/XRGBM0.png new file mode 100644 index 000000000..09753cba1 Binary files /dev/null and b/sprites/XRGBM0.png differ diff --git a/sprites/XRGBN0.png b/sprites/XRGBN0.png new file mode 100644 index 000000000..874c73581 Binary files /dev/null and b/sprites/XRGBN0.png differ diff --git a/sprites/XRGBO0.png b/sprites/XRGBO0.png new file mode 100644 index 000000000..32d865aa2 Binary files /dev/null and b/sprites/XRGBO0.png differ diff --git a/sprites/XRGBP0.png b/sprites/XRGBP0.png new file mode 100644 index 000000000..9cf66a058 Binary files /dev/null and b/sprites/XRGBP0.png differ diff --git a/sprites/XRGBQ0.png b/sprites/XRGBQ0.png new file mode 100644 index 000000000..e9aadf538 Binary files /dev/null and b/sprites/XRGBQ0.png differ diff --git a/sprites/XRGBR0.png b/sprites/XRGBR0.png new file mode 100644 index 000000000..10bd407ff Binary files /dev/null and b/sprites/XRGBR0.png differ diff --git a/sprites/XRGBS0.png b/sprites/XRGBS0.png new file mode 100644 index 000000000..f0be05b4c Binary files /dev/null and b/sprites/XRGBS0.png differ diff --git a/sprites/XRGBT0.png b/sprites/XRGBT0.png new file mode 100644 index 000000000..3373022f7 Binary files /dev/null and b/sprites/XRGBT0.png differ diff --git a/sprites/XRGBU0.png b/sprites/XRGBU0.png new file mode 100644 index 000000000..a2646a5f2 Binary files /dev/null and b/sprites/XRGBU0.png differ diff --git a/sprites/XRGBV0.png b/sprites/XRGBV0.png new file mode 100644 index 000000000..e208079a0 Binary files /dev/null and b/sprites/XRGBV0.png differ diff --git a/sprites/XRGBW0.png b/sprites/XRGBW0.png new file mode 100644 index 000000000..ab05f2cb9 Binary files /dev/null and b/sprites/XRGBW0.png differ diff --git a/sprites/XRGBX0.png b/sprites/XRGBX0.png new file mode 100644 index 000000000..152d16c1f Binary files /dev/null and b/sprites/XRGBX0.png differ diff --git a/sprites/XSEXA0.png b/sprites/XSEXA0.png index 82b07f71f..19d1c8aec 100644 Binary files a/sprites/XSEXA0.png and b/sprites/XSEXA0.png differ diff --git a/sprites/XSEXB0.png b/sprites/XSEXB0.png index 2124466a8..8522856ac 100644 Binary files a/sprites/XSEXB0.png and b/sprites/XSEXB0.png differ diff --git a/sprites/XSEXC0.png b/sprites/XSEXC0.png index 4fa9d77fd..d8342b37d 100644 Binary files a/sprites/XSEXC0.png and b/sprites/XSEXC0.png differ diff --git a/sprites/XSEXD0.png b/sprites/XSEXD0.png index f9d65c279..1431f44e4 100644 Binary files a/sprites/XSEXD0.png and b/sprites/XSEXD0.png differ diff --git a/sprites/XSEXE0.png b/sprites/XSEXE0.png index 06c9acc3e..a734b9002 100644 Binary files a/sprites/XSEXE0.png and b/sprites/XSEXE0.png differ diff --git a/sprites/XSEXF0.png b/sprites/XSEXF0.png index bc3a0877f..3e485acdf 100644 Binary files a/sprites/XSEXF0.png and b/sprites/XSEXF0.png differ diff --git a/sprites/XSEXG0.png b/sprites/XSEXG0.png index 4cc92805a..1e2c72284 100644 Binary files a/sprites/XSEXG0.png and b/sprites/XSEXG0.png differ diff --git a/sprites/XSEXH0.png b/sprites/XSEXH0.png index f4c83a513..fe2249661 100644 Binary files a/sprites/XSEXH0.png and b/sprites/XSEXH0.png differ diff --git a/sprites/XSEXI0.png b/sprites/XSEXI0.png index b89b88ec4..6f3484565 100644 Binary files a/sprites/XSEXI0.png and b/sprites/XSEXI0.png differ diff --git a/sprites/XSEXK0.png b/sprites/XSEXK0.png index 221c471d0..988db9435 100644 Binary files a/sprites/XSEXK0.png and b/sprites/XSEXK0.png differ diff --git a/sprites/XSEXQ0.png b/sprites/XSEXQ0.png index 3e79c11ee..c8a34baf2 100644 Binary files a/sprites/XSEXQ0.png and b/sprites/XSEXQ0.png differ diff --git a/sprites/XSMKA0.png b/sprites/XSMKA0.png index f9950fe03..a1ead55aa 100644 Binary files a/sprites/XSMKA0.png and b/sprites/XSMKA0.png differ diff --git a/sprites/XSMKB0.png b/sprites/XSMKB0.png index dcaa963a7..99312742c 100644 Binary files a/sprites/XSMKB0.png and b/sprites/XSMKB0.png differ diff --git a/sprites/XSMKC0.png b/sprites/XSMKC0.png index c4e8326fd..3af97db06 100644 Binary files a/sprites/XSMKC0.png and b/sprites/XSMKC0.png differ diff --git a/sprites/XSMKD0.png b/sprites/XSMKD0.png index 87a49a481..a4fe1aadd 100644 Binary files a/sprites/XSMKD0.png and b/sprites/XSMKD0.png differ diff --git a/sprites/XSMKE0.png b/sprites/XSMKE0.png index 1d6f5766d..c4e1f181a 100644 Binary files a/sprites/XSMKE0.png and b/sprites/XSMKE0.png differ diff --git a/sprites/XSMKF0.png b/sprites/XSMKF0.png index 0ca5c7e60..b70ca52e8 100644 Binary files a/sprites/XSMKF0.png and b/sprites/XSMKF0.png differ diff --git a/sprites/XSMKG0.png b/sprites/XSMKG0.png index 1a8e31e85..cc7f31c62 100644 Binary files a/sprites/XSMKG0.png and b/sprites/XSMKG0.png differ diff --git a/sprites/XSMKH0.png b/sprites/XSMKH0.png index 5d8245faf..1d2810157 100644 Binary files a/sprites/XSMKH0.png and b/sprites/XSMKH0.png differ diff --git a/sprites/XSMKI0.png b/sprites/XSMKI0.png index 9e32b442d..21fbec580 100644 Binary files a/sprites/XSMKI0.png and b/sprites/XSMKI0.png differ diff --git a/sprites/XSMKJ0.png b/sprites/XSMKJ0.png index 6c5d1154a..f9a74d762 100644 Binary files a/sprites/XSMKJ0.png and b/sprites/XSMKJ0.png differ diff --git a/sprites/XSMKK0.png b/sprites/XSMKK0.png index b91e39adf..f7eb68f2a 100644 Binary files a/sprites/XSMKK0.png and b/sprites/XSMKK0.png differ diff --git a/sprites/XSMKL0.png b/sprites/XSMKL0.png index 0ca414d26..602c51959 100644 Binary files a/sprites/XSMKL0.png and b/sprites/XSMKL0.png differ diff --git a/sprites/XSMKM0.png b/sprites/XSMKM0.png index ff4d95f75..53d0a02c4 100644 Binary files a/sprites/XSMKM0.png and b/sprites/XSMKM0.png differ diff --git a/sprites/XSMKN0.png b/sprites/XSMKN0.png index 15617473d..2adeb9215 100644 Binary files a/sprites/XSMKN0.png and b/sprites/XSMKN0.png differ diff --git a/sprites/XSMKO0.png b/sprites/XSMKO0.png index 9180146d7..f49ba23a2 100644 Binary files a/sprites/XSMKO0.png and b/sprites/XSMKO0.png differ diff --git a/sprites/XSMKP0.png b/sprites/XSMKP0.png index f642e1d89..f78cca13d 100644 Binary files a/sprites/XSMKP0.png and b/sprites/XSMKP0.png differ diff --git a/sprites/XSMKQ0.png b/sprites/XSMKQ0.png index 16d2afe34..81f2ab398 100644 Binary files a/sprites/XSMKQ0.png and b/sprites/XSMKQ0.png differ diff --git a/sprites/XSMKR0.png b/sprites/XSMKR0.png index 33760b5ba..c007b4d5c 100644 Binary files a/sprites/XSMKR0.png and b/sprites/XSMKR0.png differ diff --git a/sprites/XSMKS0.png b/sprites/XSMKS0.png index 6d0d45c25..ab40e4c06 100644 Binary files a/sprites/XSMKS0.png and b/sprites/XSMKS0.png differ diff --git a/sprites/XSMKT0.png b/sprites/XSMKT0.png index 064909519..ac6144ef9 100644 Binary files a/sprites/XSMKT0.png and b/sprites/XSMKT0.png differ diff --git a/sprites/bossbrain/MBRNA0.png b/sprites/bossbrain/MBRNA0.png index 3af9fdb85..b3d31271d 100644 Binary files a/sprites/bossbrain/MBRNA0.png and b/sprites/bossbrain/MBRNA0.png differ diff --git a/sprites/bossbrain/MBRNB0.png b/sprites/bossbrain/MBRNB0.png index 3af9fdb85..b3d31271d 100644 Binary files a/sprites/bossbrain/MBRNB0.png and b/sprites/bossbrain/MBRNB0.png differ diff --git a/sprites/dlc/BFXXA0.png b/sprites/dlc/BFXXA0.png deleted file mode 100644 index 836151aa5..000000000 Binary files a/sprites/dlc/BFXXA0.png and /dev/null differ diff --git a/sprites/dlc/BFXXB0.png b/sprites/dlc/BFXXB0.png deleted file mode 100644 index fd71985f8..000000000 Binary files a/sprites/dlc/BFXXB0.png and /dev/null differ diff --git a/sprites/dlc/BFXXC0.png b/sprites/dlc/BFXXC0.png deleted file mode 100644 index 7540c65c1..000000000 Binary files a/sprites/dlc/BFXXC0.png and /dev/null differ diff --git a/sprites/dlc/BFXXD0.png b/sprites/dlc/BFXXD0.png deleted file mode 100644 index 091248358..000000000 Binary files a/sprites/dlc/BFXXD0.png and /dev/null differ diff --git a/sprites/dlc/BFXXE0.png b/sprites/dlc/BFXXE0.png deleted file mode 100644 index 42bf90502..000000000 Binary files a/sprites/dlc/BFXXE0.png and /dev/null differ diff --git a/sprites/dlc/BFXXF0.png b/sprites/dlc/BFXXF0.png deleted file mode 100644 index db3c050cc..000000000 Binary files a/sprites/dlc/BFXXF0.png and /dev/null differ diff --git a/sprites/dlc/BFXXG0.png b/sprites/dlc/BFXXG0.png deleted file mode 100644 index adb6dc423..000000000 Binary files a/sprites/dlc/BFXXG0.png and /dev/null differ diff --git a/sprites/dlc/BFXXH0.png b/sprites/dlc/BFXXH0.png deleted file mode 100644 index 06845d10b..000000000 Binary files a/sprites/dlc/BFXXH0.png and /dev/null differ diff --git a/sprites/dlc/BFXXI0.png b/sprites/dlc/BFXXI0.png deleted file mode 100644 index a07b28c5b..000000000 Binary files a/sprites/dlc/BFXXI0.png and /dev/null differ diff --git a/sprites/dlc/BFXXJ0.png b/sprites/dlc/BFXXJ0.png deleted file mode 100644 index 146770ec7..000000000 Binary files a/sprites/dlc/BFXXJ0.png and /dev/null differ diff --git a/sprites/dlc/BFXXK0.png b/sprites/dlc/BFXXK0.png deleted file mode 100644 index cc95bb77e..000000000 Binary files a/sprites/dlc/BFXXK0.png and /dev/null differ diff --git a/sprites/dlc/BFXXL0.png b/sprites/dlc/BFXXL0.png deleted file mode 100644 index 071c353ea..000000000 Binary files a/sprites/dlc/BFXXL0.png and /dev/null differ diff --git a/sprites/dlc/BFXXM0.png b/sprites/dlc/BFXXM0.png deleted file mode 100644 index 012f7e521..000000000 Binary files a/sprites/dlc/BFXXM0.png and /dev/null differ diff --git a/sprites/dlc/BFXXN0.png b/sprites/dlc/BFXXN0.png deleted file mode 100644 index 4fa67ff7b..000000000 Binary files a/sprites/dlc/BFXXN0.png and /dev/null differ diff --git a/sprites/dlc/BFXXO0.png b/sprites/dlc/BFXXO0.png deleted file mode 100644 index f29a955b2..000000000 Binary files a/sprites/dlc/BFXXO0.png and /dev/null differ diff --git a/sprites/dlc/BFXXP0.png b/sprites/dlc/BFXXP0.png deleted file mode 100644 index fe4d48bf7..000000000 Binary files a/sprites/dlc/BFXXP0.png and /dev/null differ diff --git a/sprites/dlc/BFXXQ0.png b/sprites/dlc/BFXXQ0.png deleted file mode 100644 index f21ea4e0c..000000000 Binary files a/sprites/dlc/BFXXQ0.png and /dev/null differ diff --git a/sprites/dlc/BFXXR0.png b/sprites/dlc/BFXXR0.png deleted file mode 100644 index 18ebe7696..000000000 Binary files a/sprites/dlc/BFXXR0.png and /dev/null differ diff --git a/sprites/dlc/BFXXS0.png b/sprites/dlc/BFXXS0.png deleted file mode 100644 index 89d8f9900..000000000 Binary files a/sprites/dlc/BFXXS0.png and /dev/null differ diff --git a/sprites/dlc/BFXXT0.png b/sprites/dlc/BFXXT0.png deleted file mode 100644 index 33cfdea1f..000000000 Binary files a/sprites/dlc/BFXXT0.png and /dev/null differ diff --git a/sprites/dlc/NSFLA0.png b/sprites/dlc/NSFLA0.png deleted file mode 100644 index 66158639c..000000000 Binary files a/sprites/dlc/NSFLA0.png and /dev/null differ diff --git a/sprites/dlc/NSFLB0.png b/sprites/dlc/NSFLB0.png deleted file mode 100644 index 1c9927aa5..000000000 Binary files a/sprites/dlc/NSFLB0.png and /dev/null differ diff --git a/sprites/dlc/NSFLC0.png b/sprites/dlc/NSFLC0.png deleted file mode 100644 index c489161c0..000000000 Binary files a/sprites/dlc/NSFLC0.png and /dev/null differ diff --git a/sprites/dlc/PBBLA0.png b/sprites/dlc/PBBLA0.png deleted file mode 100644 index 5b674d6c7..000000000 Binary files a/sprites/dlc/PBBLA0.png and /dev/null differ diff --git a/sprites/dlc/PBBLB0.png b/sprites/dlc/PBBLB0.png deleted file mode 100644 index db076c241..000000000 Binary files a/sprites/dlc/PBBLB0.png and /dev/null differ diff --git a/sprites/dlc/PBBLC0.png b/sprites/dlc/PBBLC0.png deleted file mode 100644 index e8d3c99e9..000000000 Binary files a/sprites/dlc/PBBLC0.png and /dev/null differ diff --git a/sprites/dlc/PBBLD0.png b/sprites/dlc/PBBLD0.png deleted file mode 100644 index 084bc57ce..000000000 Binary files a/sprites/dlc/PBBLD0.png and /dev/null differ diff --git a/sprites/dlc/PBBLE0.png b/sprites/dlc/PBBLE0.png deleted file mode 100644 index 6fde3d630..000000000 Binary files a/sprites/dlc/PBBLE0.png and /dev/null differ diff --git a/sprites/dlc/PBBLF0.png b/sprites/dlc/PBBLF0.png deleted file mode 100644 index b974402d3..000000000 Binary files a/sprites/dlc/PBBLF0.png and /dev/null differ diff --git a/sprites/dlc/PBBLG0.png b/sprites/dlc/PBBLG0.png deleted file mode 100644 index 1a40a25c8..000000000 Binary files a/sprites/dlc/PBBLG0.png and /dev/null differ diff --git a/sprites/dlc/PBBLH0.png b/sprites/dlc/PBBLH0.png deleted file mode 100644 index c2439fb81..000000000 Binary files a/sprites/dlc/PBBLH0.png and /dev/null differ diff --git a/sprites/dlc/PBBLI0.png b/sprites/dlc/PBBLI0.png deleted file mode 100644 index 978ac7a95..000000000 Binary files a/sprites/dlc/PBBLI0.png and /dev/null differ diff --git a/sprites/dlc/PBBLJ0.png b/sprites/dlc/PBBLJ0.png deleted file mode 100644 index d5bd53386..000000000 Binary files a/sprites/dlc/PBBLJ0.png and /dev/null differ diff --git a/sprites/dlc/PBMBA0.png b/sprites/dlc/PBMBA0.png deleted file mode 100644 index 20a2dafa8..000000000 Binary files a/sprites/dlc/PBMBA0.png and /dev/null differ diff --git a/sprites/dlc/PBMBB0.png b/sprites/dlc/PBMBB0.png deleted file mode 100644 index 3b054ddab..000000000 Binary files a/sprites/dlc/PBMBB0.png and /dev/null differ diff --git a/sprites/dlc/PBMBC0.png b/sprites/dlc/PBMBC0.png deleted file mode 100644 index e214f4e47..000000000 Binary files a/sprites/dlc/PBMBC0.png and /dev/null differ diff --git a/sprites/dlc/PBMBD0.png b/sprites/dlc/PBMBD0.png deleted file mode 100644 index b778dd6ff..000000000 Binary files a/sprites/dlc/PBMBD0.png and /dev/null differ diff --git a/sprites/dlc/PBMBE0.png b/sprites/dlc/PBMBE0.png deleted file mode 100644 index 7870f81fd..000000000 Binary files a/sprites/dlc/PBMBE0.png and /dev/null differ diff --git a/sprites/dlc/PBMBF0.png b/sprites/dlc/PBMBF0.png deleted file mode 100644 index 816cd5123..000000000 Binary files a/sprites/dlc/PBMBF0.png and /dev/null differ diff --git a/sprites/dlc/PBMBG0.png b/sprites/dlc/PBMBG0.png deleted file mode 100644 index 53e736f28..000000000 Binary files a/sprites/dlc/PBMBG0.png and /dev/null differ diff --git a/sprites/dlc/PBMBH0.png b/sprites/dlc/PBMBH0.png deleted file mode 100644 index 69d23d067..000000000 Binary files a/sprites/dlc/PBMBH0.png and /dev/null differ diff --git a/sprites/dlc/PBMBI0.png b/sprites/dlc/PBMBI0.png deleted file mode 100644 index 5b5ab7bf0..000000000 Binary files a/sprites/dlc/PBMBI0.png and /dev/null differ diff --git a/sprites/dlc/PBMBJ0.png b/sprites/dlc/PBMBJ0.png deleted file mode 100644 index 5ef182c52..000000000 Binary files a/sprites/dlc/PBMBJ0.png and /dev/null differ diff --git a/sprites/dlc/PBMBK0.png b/sprites/dlc/PBMBK0.png deleted file mode 100644 index 4c5eb28cc..000000000 Binary files a/sprites/dlc/PBMBK0.png and /dev/null differ diff --git a/sprites/dlc/PBMBL0.png b/sprites/dlc/PBMBL0.png deleted file mode 100644 index 199c666fb..000000000 Binary files a/sprites/dlc/PBMBL0.png and /dev/null differ diff --git a/sprites/dlc/QEMBA0.png b/sprites/dlc/QEMBA0.png deleted file mode 100644 index db5372c79..000000000 Binary files a/sprites/dlc/QEMBA0.png and /dev/null differ diff --git a/sprites/dlc/QEMBB0.png b/sprites/dlc/QEMBB0.png deleted file mode 100644 index bd26885f3..000000000 Binary files a/sprites/dlc/QEMBB0.png and /dev/null differ diff --git a/sprites/dlc/QEMBC0.png b/sprites/dlc/QEMBC0.png deleted file mode 100644 index b4e8e5210..000000000 Binary files a/sprites/dlc/QEMBC0.png and /dev/null differ diff --git a/sprites/dlc/QEMBD0.png b/sprites/dlc/QEMBD0.png deleted file mode 100644 index e3fc44ed1..000000000 Binary files a/sprites/dlc/QEMBD0.png and /dev/null differ diff --git a/sprites/dlc/QEMBE0.png b/sprites/dlc/QEMBE0.png deleted file mode 100644 index 0f4ea1e87..000000000 Binary files a/sprites/dlc/QEMBE0.png and /dev/null differ diff --git a/sprites/dlc/QFBLA0.png b/sprites/dlc/QFBLA0.png deleted file mode 100644 index c6081118b..000000000 Binary files a/sprites/dlc/QFBLA0.png and /dev/null differ diff --git a/sprites/dlc/QFBLB0.png b/sprites/dlc/QFBLB0.png deleted file mode 100644 index 92085813f..000000000 Binary files a/sprites/dlc/QFBLB0.png and /dev/null differ diff --git a/sprites/dlc/QFBLC0.png b/sprites/dlc/QFBLC0.png deleted file mode 100644 index 0625e849e..000000000 Binary files a/sprites/dlc/QFBLC0.png and /dev/null differ diff --git a/sprites/dlc/QFBLD0.png b/sprites/dlc/QFBLD0.png deleted file mode 100644 index 79e0f8239..000000000 Binary files a/sprites/dlc/QFBLD0.png and /dev/null differ diff --git a/sprites/dlc/QFBLE0.png b/sprites/dlc/QFBLE0.png deleted file mode 100644 index 18aa0d803..000000000 Binary files a/sprites/dlc/QFBLE0.png and /dev/null differ diff --git a/sprites/dlc/QFBLF0.png b/sprites/dlc/QFBLF0.png deleted file mode 100644 index 080cd9585..000000000 Binary files a/sprites/dlc/QFBLF0.png and /dev/null differ diff --git a/sprites/dlc/QFBLG0.png b/sprites/dlc/QFBLG0.png deleted file mode 100644 index 8161dbad7..000000000 Binary files a/sprites/dlc/QFBLG0.png and /dev/null differ diff --git a/sprites/dlc/QFBLH0.png b/sprites/dlc/QFBLH0.png deleted file mode 100644 index 8bffe16b7..000000000 Binary files a/sprites/dlc/QFBLH0.png and /dev/null differ diff --git a/sprites/dlc/QFBLI0.png b/sprites/dlc/QFBLI0.png deleted file mode 100644 index 88ca09861..000000000 Binary files a/sprites/dlc/QFBLI0.png and /dev/null differ diff --git a/sprites/dlc/QFBLJ0.png b/sprites/dlc/QFBLJ0.png deleted file mode 100644 index 2291e3e96..000000000 Binary files a/sprites/dlc/QFBLJ0.png and /dev/null differ diff --git a/sprites/dlc/QFLRA0.png b/sprites/dlc/QFLRA0.png deleted file mode 100644 index 8fcb462ea..000000000 Binary files a/sprites/dlc/QFLRA0.png and /dev/null differ diff --git a/sprites/dlc/RAYTA0.png b/sprites/dlc/RAYTA0.png deleted file mode 100644 index 1959361f0..000000000 Binary files a/sprites/dlc/RAYTA0.png and /dev/null differ diff --git a/sprites/dlc/RAYTB0.png b/sprites/dlc/RAYTB0.png deleted file mode 100644 index c1f049c83..000000000 Binary files a/sprites/dlc/RAYTB0.png and /dev/null differ diff --git a/sprites/dlc/RAYTC0.png b/sprites/dlc/RAYTC0.png deleted file mode 100644 index e86bc41e0..000000000 Binary files a/sprites/dlc/RAYTC0.png and /dev/null differ diff --git a/sprites/dlc/RAYTD0.png b/sprites/dlc/RAYTD0.png deleted file mode 100644 index 01d77bf66..000000000 Binary files a/sprites/dlc/RAYTD0.png and /dev/null differ diff --git a/sprites/dlc/RAYTE0.png b/sprites/dlc/RAYTE0.png deleted file mode 100644 index d9ffffcc0..000000000 Binary files a/sprites/dlc/RAYTE0.png and /dev/null differ diff --git a/sprites/dlc/RAYTF0.png b/sprites/dlc/RAYTF0.png deleted file mode 100644 index a509d3a9a..000000000 Binary files a/sprites/dlc/RAYTF0.png and /dev/null differ diff --git a/sprites/dlc/RAYTG0.png b/sprites/dlc/RAYTG0.png deleted file mode 100644 index 9ab59f0bd..000000000 Binary files a/sprites/dlc/RAYTG0.png and /dev/null differ diff --git a/sprites/dlc/RAYTH0.png b/sprites/dlc/RAYTH0.png deleted file mode 100644 index 9878543d2..000000000 Binary files a/sprites/dlc/RAYTH0.png and /dev/null differ diff --git a/sprites/dlc/RAYTI0.png b/sprites/dlc/RAYTI0.png deleted file mode 100644 index 6e2a003e9..000000000 Binary files a/sprites/dlc/RAYTI0.png and /dev/null differ diff --git a/sprites/dlc/RAYTJ0.png b/sprites/dlc/RAYTJ0.png deleted file mode 100644 index 206bd3e4b..000000000 Binary files a/sprites/dlc/RAYTJ0.png and /dev/null differ diff --git a/sprites/dlc/RFXPA0.png b/sprites/dlc/RFXPA0.png deleted file mode 100644 index d3bd56a1a..000000000 Binary files a/sprites/dlc/RFXPA0.png and /dev/null differ diff --git a/sprites/dlc/RFXPB0.png b/sprites/dlc/RFXPB0.png deleted file mode 100644 index 6649b36f9..000000000 Binary files a/sprites/dlc/RFXPB0.png and /dev/null differ diff --git a/sprites/dlc/RFXPC0.png b/sprites/dlc/RFXPC0.png deleted file mode 100644 index 72cb17b0d..000000000 Binary files a/sprites/dlc/RFXPC0.png and /dev/null differ diff --git a/sprites/dlc/RFXPD0.png b/sprites/dlc/RFXPD0.png deleted file mode 100644 index 1cd8fa0ef..000000000 Binary files a/sprites/dlc/RFXPD0.png and /dev/null differ diff --git a/sprites/dlc/RFXPE0.png b/sprites/dlc/RFXPE0.png deleted file mode 100644 index 43188a0e1..000000000 Binary files a/sprites/dlc/RFXPE0.png and /dev/null differ diff --git a/sprites/dlc/RFXPF0.png b/sprites/dlc/RFXPF0.png deleted file mode 100644 index 4ba67ce26..000000000 Binary files a/sprites/dlc/RFXPF0.png and /dev/null differ diff --git a/sprites/dlc/RFXPG0.png b/sprites/dlc/RFXPG0.png deleted file mode 100644 index 7769c78ae..000000000 Binary files a/sprites/dlc/RFXPG0.png and /dev/null differ diff --git a/sprites/dlc/RFXPH0.png b/sprites/dlc/RFXPH0.png deleted file mode 100644 index fc2d0de92..000000000 Binary files a/sprites/dlc/RFXPH0.png and /dev/null differ diff --git a/sprites/dlc/RFXPI0.png b/sprites/dlc/RFXPI0.png deleted file mode 100644 index 5b502947c..000000000 Binary files a/sprites/dlc/RFXPI0.png and /dev/null differ diff --git a/sprites/dlc/RFXPJ0.png b/sprites/dlc/RFXPJ0.png deleted file mode 100644 index 2fab93384..000000000 Binary files a/sprites/dlc/RFXPJ0.png and /dev/null differ diff --git a/sprites/dlc/RFXPK0.png b/sprites/dlc/RFXPK0.png deleted file mode 100644 index 3a1201704..000000000 Binary files a/sprites/dlc/RFXPK0.png and /dev/null differ diff --git a/sprites/dlc/RFXPL0.png b/sprites/dlc/RFXPL0.png deleted file mode 100644 index 48dc73115..000000000 Binary files a/sprites/dlc/RFXPL0.png and /dev/null differ diff --git a/sprites/dlc/RFXPM0.png b/sprites/dlc/RFXPM0.png deleted file mode 100644 index 55b1e04b4..000000000 Binary files a/sprites/dlc/RFXPM0.png and /dev/null differ diff --git a/sprites/dlc/RFXPN0.png b/sprites/dlc/RFXPN0.png deleted file mode 100644 index f44cf99c4..000000000 Binary files a/sprites/dlc/RFXPN0.png and /dev/null differ diff --git a/sprites/dlc/RFXPO0.png b/sprites/dlc/RFXPO0.png deleted file mode 100644 index 93ac928ef..000000000 Binary files a/sprites/dlc/RFXPO0.png and /dev/null differ diff --git a/sprites/dlc/RFXPP0.png b/sprites/dlc/RFXPP0.png deleted file mode 100644 index 842426992..000000000 Binary files a/sprites/dlc/RFXPP0.png and /dev/null differ diff --git a/sprites/dlc/RFXPQ0.png b/sprites/dlc/RFXPQ0.png deleted file mode 100644 index 50fc0ec71..000000000 Binary files a/sprites/dlc/RFXPQ0.png and /dev/null differ diff --git a/sprites/dlc/RFXPR0.png b/sprites/dlc/RFXPR0.png deleted file mode 100644 index b12ca35b4..000000000 Binary files a/sprites/dlc/RFXPR0.png and /dev/null differ diff --git a/sprites/dlc/RFXPS0.png b/sprites/dlc/RFXPS0.png deleted file mode 100644 index cfb4c7a0a..000000000 Binary files a/sprites/dlc/RFXPS0.png and /dev/null differ diff --git a/sprites/dlc/RFXPT0.png b/sprites/dlc/RFXPT0.png deleted file mode 100644 index 111c4d854..000000000 Binary files a/sprites/dlc/RFXPT0.png and /dev/null differ diff --git a/sprites/dlc/RFXPU0.png b/sprites/dlc/RFXPU0.png deleted file mode 100644 index ef20c5a24..000000000 Binary files a/sprites/dlc/RFXPU0.png and /dev/null differ diff --git a/sprites/dlc/RFXPV0.png b/sprites/dlc/RFXPV0.png deleted file mode 100644 index caa1c96cb..000000000 Binary files a/sprites/dlc/RFXPV0.png and /dev/null differ diff --git a/sprites/dlc/RFXPW0.png b/sprites/dlc/RFXPW0.png deleted file mode 100644 index 7bb9fc056..000000000 Binary files a/sprites/dlc/RFXPW0.png and /dev/null differ diff --git a/sprites/dlc/RFXPX0.png b/sprites/dlc/RFXPX0.png deleted file mode 100644 index 61ce0e463..000000000 Binary files a/sprites/dlc/RFXPX0.png and /dev/null differ diff --git a/sprites/dlc/RFXPY0.png b/sprites/dlc/RFXPY0.png deleted file mode 100644 index 7d5a78b32..000000000 Binary files a/sprites/dlc/RFXPY0.png and /dev/null differ diff --git a/sprites/dlc/RFXPZ0.png b/sprites/dlc/RFXPZ0.png deleted file mode 100644 index 053e92bdd..000000000 Binary files a/sprites/dlc/RFXPZ0.png and /dev/null differ diff --git a/sprites/dlc/RFXP[0.png b/sprites/dlc/RFXP[0.png deleted file mode 100644 index 3a65b7af5..000000000 Binary files a/sprites/dlc/RFXP[0.png and /dev/null differ diff --git a/sprites/dlc/RFXP^0.png b/sprites/dlc/RFXP^0.png deleted file mode 100644 index 195f953b1..000000000 Binary files a/sprites/dlc/RFXP^0.png and /dev/null differ diff --git a/sprites/dlc/XEX5A0.png b/sprites/dlc/XEX5A0.png deleted file mode 100644 index 85b6a015e..000000000 Binary files a/sprites/dlc/XEX5A0.png and /dev/null differ diff --git a/sprites/dlc/XEX5B0.png b/sprites/dlc/XEX5B0.png deleted file mode 100644 index 4f718e067..000000000 Binary files a/sprites/dlc/XEX5B0.png and /dev/null differ diff --git a/sprites/dlc/XEX5C0.png b/sprites/dlc/XEX5C0.png deleted file mode 100644 index bc81f2079..000000000 Binary files a/sprites/dlc/XEX5C0.png and /dev/null differ diff --git a/sprites/dlc/XEX5D0.png b/sprites/dlc/XEX5D0.png deleted file mode 100644 index 034543e16..000000000 Binary files a/sprites/dlc/XEX5D0.png and /dev/null differ diff --git a/sprites/dlc/XEX5E0.png b/sprites/dlc/XEX5E0.png deleted file mode 100644 index 3cceb1ed3..000000000 Binary files a/sprites/dlc/XEX5E0.png and /dev/null differ diff --git a/sprites/dlc/XEX5F0.png b/sprites/dlc/XEX5F0.png deleted file mode 100644 index 48d4ad2fe..000000000 Binary files a/sprites/dlc/XEX5F0.png and /dev/null differ diff --git a/sprites/dlc/XEX5G0.png b/sprites/dlc/XEX5G0.png deleted file mode 100644 index 31cb3c53c..000000000 Binary files a/sprites/dlc/XEX5G0.png and /dev/null differ diff --git a/sprites/dlc/XEX5H0.png b/sprites/dlc/XEX5H0.png deleted file mode 100644 index c9d6ed87d..000000000 Binary files a/sprites/dlc/XEX5H0.png and /dev/null differ diff --git a/sprites/dlc/XEX5I0.png b/sprites/dlc/XEX5I0.png deleted file mode 100644 index 8ec7c3dbf..000000000 Binary files a/sprites/dlc/XEX5I0.png and /dev/null differ diff --git a/sprites/dlc/XEX5J0.png b/sprites/dlc/XEX5J0.png deleted file mode 100644 index db3242e78..000000000 Binary files a/sprites/dlc/XEX5J0.png and /dev/null differ diff --git a/sprites/dlc/XEX5K0.png b/sprites/dlc/XEX5K0.png deleted file mode 100644 index 5c856bb8f..000000000 Binary files a/sprites/dlc/XEX5K0.png and /dev/null differ diff --git a/sprites/dlc/XEX5L0.png b/sprites/dlc/XEX5L0.png deleted file mode 100644 index 2ad9314be..000000000 Binary files a/sprites/dlc/XEX5L0.png and /dev/null differ diff --git a/sprites/dlc/XEX5M0.png b/sprites/dlc/XEX5M0.png deleted file mode 100644 index b43312beb..000000000 Binary files a/sprites/dlc/XEX5M0.png and /dev/null differ diff --git a/sprites/dlc/XEX5N0.png b/sprites/dlc/XEX5N0.png deleted file mode 100644 index ad4133da2..000000000 Binary files a/sprites/dlc/XEX5N0.png and /dev/null differ diff --git a/sprites/dlc/XEX5O0.png b/sprites/dlc/XEX5O0.png deleted file mode 100644 index 4ea18a1d0..000000000 Binary files a/sprites/dlc/XEX5O0.png and /dev/null differ diff --git a/sprites/dlc/XEX5P0.png b/sprites/dlc/XEX5P0.png deleted file mode 100644 index a411b7a05..000000000 Binary files a/sprites/dlc/XEX5P0.png and /dev/null differ diff --git a/sprites/dlc/XEX5Q0.png b/sprites/dlc/XEX5Q0.png deleted file mode 100644 index 839a0e6e6..000000000 Binary files a/sprites/dlc/XEX5Q0.png and /dev/null differ diff --git a/sprites/dlc/XEX5R0.png b/sprites/dlc/XEX5R0.png deleted file mode 100644 index 3081ee2d0..000000000 Binary files a/sprites/dlc/XEX5R0.png and /dev/null differ diff --git a/sprites/dlc/XEX5S0.png b/sprites/dlc/XEX5S0.png deleted file mode 100644 index e80d4d396..000000000 Binary files a/sprites/dlc/XEX5S0.png and /dev/null differ diff --git a/sprites/dlc/XEX6A0.png b/sprites/dlc/XEX6A0.png deleted file mode 100644 index af175e8c2..000000000 Binary files a/sprites/dlc/XEX6A0.png and /dev/null differ diff --git a/sprites/dlc/XEX6B0.png b/sprites/dlc/XEX6B0.png deleted file mode 100644 index dc48af59b..000000000 Binary files a/sprites/dlc/XEX6B0.png and /dev/null differ diff --git a/sprites/dlc/XEX6C0.png b/sprites/dlc/XEX6C0.png deleted file mode 100644 index 80899aad0..000000000 Binary files a/sprites/dlc/XEX6C0.png and /dev/null differ diff --git a/sprites/dlc/XEX6D0.png b/sprites/dlc/XEX6D0.png deleted file mode 100644 index 9515b6236..000000000 Binary files a/sprites/dlc/XEX6D0.png and /dev/null differ diff --git a/sprites/dlc/XEX6E0.png b/sprites/dlc/XEX6E0.png deleted file mode 100644 index 9378ca903..000000000 Binary files a/sprites/dlc/XEX6E0.png and /dev/null differ diff --git a/sprites/dlc/XEX6F0.png b/sprites/dlc/XEX6F0.png deleted file mode 100644 index 51b234c01..000000000 Binary files a/sprites/dlc/XEX6F0.png and /dev/null differ diff --git a/sprites/dlc/XEX6G0.png b/sprites/dlc/XEX6G0.png deleted file mode 100644 index 86c0a102e..000000000 Binary files a/sprites/dlc/XEX6G0.png and /dev/null differ diff --git a/sprites/dlc/XEX6H0.png b/sprites/dlc/XEX6H0.png deleted file mode 100644 index 111a34bd8..000000000 Binary files a/sprites/dlc/XEX6H0.png and /dev/null differ diff --git a/sprites/dlc/XEX6I0.png b/sprites/dlc/XEX6I0.png deleted file mode 100644 index 6307f2455..000000000 Binary files a/sprites/dlc/XEX6I0.png and /dev/null differ diff --git a/sprites/dlc/XEX6J0.png b/sprites/dlc/XEX6J0.png deleted file mode 100644 index 08348085d..000000000 Binary files a/sprites/dlc/XEX6J0.png and /dev/null differ diff --git a/sprites/dlc/XEX6K0.png b/sprites/dlc/XEX6K0.png deleted file mode 100644 index ae45f261e..000000000 Binary files a/sprites/dlc/XEX6K0.png and /dev/null differ diff --git a/sprites/dlc/XEX6L0.png b/sprites/dlc/XEX6L0.png deleted file mode 100644 index d82296535..000000000 Binary files a/sprites/dlc/XEX6L0.png and /dev/null differ diff --git a/sprites/dlc/XEX6M0.png b/sprites/dlc/XEX6M0.png deleted file mode 100644 index ba39353d0..000000000 Binary files a/sprites/dlc/XEX6M0.png and /dev/null differ diff --git a/sprites/dlc/XEX6N0.png b/sprites/dlc/XEX6N0.png deleted file mode 100644 index 036dd4bb0..000000000 Binary files a/sprites/dlc/XEX6N0.png and /dev/null differ diff --git a/sprites/dlc/XEX6O0.png b/sprites/dlc/XEX6O0.png deleted file mode 100644 index 5ae69d8a8..000000000 Binary files a/sprites/dlc/XEX6O0.png and /dev/null differ diff --git a/sprites/dlc/XEX6P0.png b/sprites/dlc/XEX6P0.png deleted file mode 100644 index 977c89f0e..000000000 Binary files a/sprites/dlc/XEX6P0.png and /dev/null differ diff --git a/sprites/dlc/XEX6Q0.png b/sprites/dlc/XEX6Q0.png deleted file mode 100644 index abcf4ea4d..000000000 Binary files a/sprites/dlc/XEX6Q0.png and /dev/null differ diff --git a/sprites/dlc/XEX6R0.png b/sprites/dlc/XEX6R0.png deleted file mode 100644 index aa9bb8ac7..000000000 Binary files a/sprites/dlc/XEX6R0.png and /dev/null differ diff --git a/sprites/dlc/XEX6S0.png b/sprites/dlc/XEX6S0.png deleted file mode 100644 index 77bf936ec..000000000 Binary files a/sprites/dlc/XEX6S0.png and /dev/null differ diff --git a/sprites/dlc/XRG6A0.png b/sprites/dlc/XRG6A0.png deleted file mode 100644 index 181d06b1f..000000000 Binary files a/sprites/dlc/XRG6A0.png and /dev/null differ diff --git a/sprites/dlc/XRG6B0.png b/sprites/dlc/XRG6B0.png deleted file mode 100644 index 068c3b3af..000000000 Binary files a/sprites/dlc/XRG6B0.png and /dev/null differ diff --git a/sprites/dlc/XRG6C0.png b/sprites/dlc/XRG6C0.png deleted file mode 100644 index 0bad077d3..000000000 Binary files a/sprites/dlc/XRG6C0.png and /dev/null differ diff --git a/sprites/dlc/XRG6D0.png b/sprites/dlc/XRG6D0.png deleted file mode 100644 index 17329c61f..000000000 Binary files a/sprites/dlc/XRG6D0.png and /dev/null differ diff --git a/sprites/dlc/XRG6E0.png b/sprites/dlc/XRG6E0.png deleted file mode 100644 index 1f92933f9..000000000 Binary files a/sprites/dlc/XRG6E0.png and /dev/null differ diff --git a/sprites/dlc/XRG6F0.png b/sprites/dlc/XRG6F0.png deleted file mode 100644 index f1278b627..000000000 Binary files a/sprites/dlc/XRG6F0.png and /dev/null differ diff --git a/sprites/dlc/XRG6G0.png b/sprites/dlc/XRG6G0.png deleted file mode 100644 index 1c076b956..000000000 Binary files a/sprites/dlc/XRG6G0.png and /dev/null differ diff --git a/sprites/dlc/XRG6H0.png b/sprites/dlc/XRG6H0.png deleted file mode 100644 index e46f13eb6..000000000 Binary files a/sprites/dlc/XRG6H0.png and /dev/null differ diff --git a/sprites/dlc/XRG6I0.png b/sprites/dlc/XRG6I0.png deleted file mode 100644 index 31c221f8b..000000000 Binary files a/sprites/dlc/XRG6I0.png and /dev/null differ diff --git a/sprites/dlc/XRG6J0.png b/sprites/dlc/XRG6J0.png deleted file mode 100644 index f80697e40..000000000 Binary files a/sprites/dlc/XRG6J0.png and /dev/null differ diff --git a/sprites/dlc/XRG6L0.png b/sprites/dlc/XRG6L0.png deleted file mode 100644 index fe65f186b..000000000 Binary files a/sprites/dlc/XRG6L0.png and /dev/null differ diff --git a/sprites/dlc/XRG6M0.png b/sprites/dlc/XRG6M0.png deleted file mode 100644 index 599061b59..000000000 Binary files a/sprites/dlc/XRG6M0.png and /dev/null differ diff --git a/sprites/dlc/XRG6N0.png b/sprites/dlc/XRG6N0.png deleted file mode 100644 index 341d3c446..000000000 Binary files a/sprites/dlc/XRG6N0.png and /dev/null differ diff --git a/sprites/dlc/XRG6O0.png b/sprites/dlc/XRG6O0.png deleted file mode 100644 index 78684305e..000000000 Binary files a/sprites/dlc/XRG6O0.png and /dev/null differ diff --git a/sprites/dlc/XRG6P0.png b/sprites/dlc/XRG6P0.png deleted file mode 100644 index 4dbc88dc2..000000000 Binary files a/sprites/dlc/XRG6P0.png and /dev/null differ diff --git a/sprites/dlc/XRG6Q0.png b/sprites/dlc/XRG6Q0.png deleted file mode 100644 index 4776f75a0..000000000 Binary files a/sprites/dlc/XRG6Q0.png and /dev/null differ diff --git a/sprites/dlc/XRG6R0.png b/sprites/dlc/XRG6R0.png deleted file mode 100644 index e575afee5..000000000 Binary files a/sprites/dlc/XRG6R0.png and /dev/null differ diff --git a/sprites/dlc/XRG6S0.png b/sprites/dlc/XRG6S0.png deleted file mode 100644 index dba221418..000000000 Binary files a/sprites/dlc/XRG6S0.png and /dev/null differ diff --git a/sprites/dlc/XRG6T0.png b/sprites/dlc/XRG6T0.png deleted file mode 100644 index 4afa79b29..000000000 Binary files a/sprites/dlc/XRG6T0.png and /dev/null differ diff --git a/sprites/dlc/XRG6U0.png b/sprites/dlc/XRG6U0.png deleted file mode 100644 index 1f2c19751..000000000 Binary files a/sprites/dlc/XRG6U0.png and /dev/null differ diff --git a/sprites/dlc/XRG6V0.png b/sprites/dlc/XRG6V0.png deleted file mode 100644 index b59079bb4..000000000 Binary files a/sprites/dlc/XRG6V0.png and /dev/null differ diff --git a/sprites/dlc/XRG6W0.png b/sprites/dlc/XRG6W0.png deleted file mode 100644 index 75af209ca..000000000 Binary files a/sprites/dlc/XRG6W0.png and /dev/null differ diff --git a/sprites/dlc/XRG6X0.png b/sprites/dlc/XRG6X0.png deleted file mode 100644 index 1ecc1cb3a..000000000 Binary files a/sprites/dlc/XRG6X0.png and /dev/null differ diff --git a/sprites/dlc/XRG7A0.png b/sprites/dlc/XRG7A0.png deleted file mode 100644 index 41daebe6d..000000000 Binary files a/sprites/dlc/XRG7A0.png and /dev/null differ diff --git a/sprites/dlc/XRG7B0.png b/sprites/dlc/XRG7B0.png deleted file mode 100644 index d82eef734..000000000 Binary files a/sprites/dlc/XRG7B0.png and /dev/null differ diff --git a/sprites/dlc/XRG7C0.png b/sprites/dlc/XRG7C0.png deleted file mode 100644 index 69ac6dcb1..000000000 Binary files a/sprites/dlc/XRG7C0.png and /dev/null differ diff --git a/sprites/dlc/XRG7D0.png b/sprites/dlc/XRG7D0.png deleted file mode 100644 index ef5f0779c..000000000 Binary files a/sprites/dlc/XRG7D0.png and /dev/null differ diff --git a/sprites/dlc/XRG7E0.png b/sprites/dlc/XRG7E0.png deleted file mode 100644 index 56801b43e..000000000 Binary files a/sprites/dlc/XRG7E0.png and /dev/null differ diff --git a/sprites/dlc/XRG7F0.png b/sprites/dlc/XRG7F0.png deleted file mode 100644 index 84b4d7367..000000000 Binary files a/sprites/dlc/XRG7F0.png and /dev/null differ diff --git a/sprites/dlc/XRG7G0.png b/sprites/dlc/XRG7G0.png deleted file mode 100644 index 81b14f06a..000000000 Binary files a/sprites/dlc/XRG7G0.png and /dev/null differ diff --git a/sprites/dlc/XRG7H0.png b/sprites/dlc/XRG7H0.png deleted file mode 100644 index 9035c9ccb..000000000 Binary files a/sprites/dlc/XRG7H0.png and /dev/null differ diff --git a/sprites/dlc/XRG7I0.png b/sprites/dlc/XRG7I0.png deleted file mode 100644 index 000bb2705..000000000 Binary files a/sprites/dlc/XRG7I0.png and /dev/null differ diff --git a/sprites/dlc/XRG7J0.png b/sprites/dlc/XRG7J0.png deleted file mode 100644 index b33f6a918..000000000 Binary files a/sprites/dlc/XRG7J0.png and /dev/null differ diff --git a/sprites/dlc/XRG7K0.png b/sprites/dlc/XRG7K0.png deleted file mode 100644 index bd36c2f71..000000000 Binary files a/sprites/dlc/XRG7K0.png and /dev/null differ diff --git a/sprites/dlc/XRG7L0.png b/sprites/dlc/XRG7L0.png deleted file mode 100644 index 8feaef832..000000000 Binary files a/sprites/dlc/XRG7L0.png and /dev/null differ diff --git a/sprites/dlc/XRG7M0.png b/sprites/dlc/XRG7M0.png deleted file mode 100644 index f0268e081..000000000 Binary files a/sprites/dlc/XRG7M0.png and /dev/null differ diff --git a/sprites/dlc/XRG7N0.png b/sprites/dlc/XRG7N0.png deleted file mode 100644 index 0469839b3..000000000 Binary files a/sprites/dlc/XRG7N0.png and /dev/null differ diff --git a/sprites/dlc/XRG7O0.png b/sprites/dlc/XRG7O0.png deleted file mode 100644 index eebdc41c7..000000000 Binary files a/sprites/dlc/XRG7O0.png and /dev/null differ diff --git a/sprites/dlc/XRG7P0.png b/sprites/dlc/XRG7P0.png deleted file mode 100644 index 0dedf02cf..000000000 Binary files a/sprites/dlc/XRG7P0.png and /dev/null differ diff --git a/sprites/dlc/XRG7Q0.png b/sprites/dlc/XRG7Q0.png deleted file mode 100644 index 329f12a81..000000000 Binary files a/sprites/dlc/XRG7Q0.png and /dev/null differ diff --git a/sprites/dlc/XRG7S0.png b/sprites/dlc/XRG7S0.png deleted file mode 100644 index b654ad75b..000000000 Binary files a/sprites/dlc/XRG7S0.png and /dev/null differ diff --git a/sprites/dlc/XRG7T0.png b/sprites/dlc/XRG7T0.png deleted file mode 100644 index 186fd30e0..000000000 Binary files a/sprites/dlc/XRG7T0.png and /dev/null differ diff --git a/sprites/dlc/XRG7U0.png b/sprites/dlc/XRG7U0.png deleted file mode 100644 index 77740f199..000000000 Binary files a/sprites/dlc/XRG7U0.png and /dev/null differ diff --git a/sprites/dlc/XRG7V0.png b/sprites/dlc/XRG7V0.png deleted file mode 100644 index 672076d0b..000000000 Binary files a/sprites/dlc/XRG7V0.png and /dev/null differ diff --git a/sprites/dlc/XRG7W0.png b/sprites/dlc/XRG7W0.png deleted file mode 100644 index d4c81574c..000000000 Binary files a/sprites/dlc/XRG7W0.png and /dev/null differ diff --git a/sprites/dlc/XRG7X0.png b/sprites/dlc/XRG7X0.png deleted file mode 100644 index d1d1a54b5..000000000 Binary files a/sprites/dlc/XRG7X0.png and /dev/null differ diff --git a/sprites/keen/KEE2A0.png b/sprites/keen/KEE2A0.png index 53c050870..43b8567d2 100644 Binary files a/sprites/keen/KEE2A0.png and b/sprites/keen/KEE2A0.png differ diff --git a/sprites/keen/KEE2B0.png b/sprites/keen/KEE2B0.png index ac37410ec..0829d0b38 100644 Binary files a/sprites/keen/KEE2B0.png and b/sprites/keen/KEE2B0.png differ diff --git a/sprites/keen/KEE2C0.png b/sprites/keen/KEE2C0.png index 378b46f75..121ad1441 100644 Binary files a/sprites/keen/KEE2C0.png and b/sprites/keen/KEE2C0.png differ diff --git a/sprites/keen/KEE2D0.png b/sprites/keen/KEE2D0.png index 0e122dda0..c38baa9f9 100644 Binary files a/sprites/keen/KEE2D0.png and b/sprites/keen/KEE2D0.png differ diff --git a/sprites/keen/KEE2E0.png b/sprites/keen/KEE2E0.png index eecb3062c..2ab46d99b 100644 Binary files a/sprites/keen/KEE2E0.png and b/sprites/keen/KEE2E0.png differ diff --git a/sprites/keen/KEE2F0.png b/sprites/keen/KEE2F0.png index 280194737..9281c8ba5 100644 Binary files a/sprites/keen/KEE2F0.png and b/sprites/keen/KEE2F0.png differ diff --git a/sprites/keen/KEE2G0.png b/sprites/keen/KEE2G0.png index eb4b878bd..50fb9fdb4 100644 Binary files a/sprites/keen/KEE2G0.png and b/sprites/keen/KEE2G0.png differ diff --git a/sprites/keen/KEE3A0.png b/sprites/keen/KEE3A0.png index 7f40be7a0..80bf61627 100644 Binary files a/sprites/keen/KEE3A0.png and b/sprites/keen/KEE3A0.png differ diff --git a/sprites/keen/KEE3B0.png b/sprites/keen/KEE3B0.png index 08820690c..672cb65c9 100644 Binary files a/sprites/keen/KEE3B0.png and b/sprites/keen/KEE3B0.png differ diff --git a/sprites/wolfstuff/XDOGA1.png b/sprites/wolfstuff/XDOGA1.png index 693d97da7..24f5d5934 100644 Binary files a/sprites/wolfstuff/XDOGA1.png and b/sprites/wolfstuff/XDOGA1.png differ diff --git a/sprites/wolfstuff/XDOGA2.png b/sprites/wolfstuff/XDOGA2.png index ef233f60a..886da2544 100644 Binary files a/sprites/wolfstuff/XDOGA2.png and b/sprites/wolfstuff/XDOGA2.png differ diff --git a/sprites/wolfstuff/XDOGA3.png b/sprites/wolfstuff/XDOGA3.png index 2293e3a14..aa0aa6140 100644 Binary files a/sprites/wolfstuff/XDOGA3.png and b/sprites/wolfstuff/XDOGA3.png differ diff --git a/sprites/wolfstuff/XDOGA4.png b/sprites/wolfstuff/XDOGA4.png index 78c44e751..0a6ef7066 100644 Binary files a/sprites/wolfstuff/XDOGA4.png and b/sprites/wolfstuff/XDOGA4.png differ diff --git a/sprites/wolfstuff/XDOGA5.png b/sprites/wolfstuff/XDOGA5.png index 3dd032f69..694fa155c 100644 Binary files a/sprites/wolfstuff/XDOGA5.png and b/sprites/wolfstuff/XDOGA5.png differ diff --git a/sprites/wolfstuff/XDOGA6.png b/sprites/wolfstuff/XDOGA6.png index d1f9d70f9..b9af85449 100644 Binary files a/sprites/wolfstuff/XDOGA6.png and b/sprites/wolfstuff/XDOGA6.png differ diff --git a/sprites/wolfstuff/XDOGA7.png b/sprites/wolfstuff/XDOGA7.png index fd1880191..160a83d5c 100644 Binary files a/sprites/wolfstuff/XDOGA7.png and b/sprites/wolfstuff/XDOGA7.png differ diff --git a/sprites/wolfstuff/XDOGA8.png b/sprites/wolfstuff/XDOGA8.png index 9ac643336..38b38606a 100644 Binary files a/sprites/wolfstuff/XDOGA8.png and b/sprites/wolfstuff/XDOGA8.png differ diff --git a/sprites/wolfstuff/XDOGB1.png b/sprites/wolfstuff/XDOGB1.png index d87625a37..90cf0014e 100644 Binary files a/sprites/wolfstuff/XDOGB1.png and b/sprites/wolfstuff/XDOGB1.png differ diff --git a/sprites/wolfstuff/XDOGB2.png b/sprites/wolfstuff/XDOGB2.png index 18dc55a60..8bb9be60f 100644 Binary files a/sprites/wolfstuff/XDOGB2.png and b/sprites/wolfstuff/XDOGB2.png differ diff --git a/sprites/wolfstuff/XDOGB3.png b/sprites/wolfstuff/XDOGB3.png index f19537ca9..b52b83b8a 100644 Binary files a/sprites/wolfstuff/XDOGB3.png and b/sprites/wolfstuff/XDOGB3.png differ diff --git a/sprites/wolfstuff/XDOGB4.png b/sprites/wolfstuff/XDOGB4.png index 97b9ec516..9ce658dc8 100644 Binary files a/sprites/wolfstuff/XDOGB4.png and b/sprites/wolfstuff/XDOGB4.png differ diff --git a/sprites/wolfstuff/XDOGB5.png b/sprites/wolfstuff/XDOGB5.png index 85c061e70..4a33921ee 100644 Binary files a/sprites/wolfstuff/XDOGB5.png and b/sprites/wolfstuff/XDOGB5.png differ diff --git a/sprites/wolfstuff/XDOGB6.png b/sprites/wolfstuff/XDOGB6.png index d0e7a6d98..19a1dd71b 100644 Binary files a/sprites/wolfstuff/XDOGB6.png and b/sprites/wolfstuff/XDOGB6.png differ diff --git a/sprites/wolfstuff/XDOGB7.png b/sprites/wolfstuff/XDOGB7.png index 958b81077..5cb0f7556 100644 Binary files a/sprites/wolfstuff/XDOGB7.png and b/sprites/wolfstuff/XDOGB7.png differ diff --git a/sprites/wolfstuff/XDOGB8.png b/sprites/wolfstuff/XDOGB8.png index 1f0762c91..cdfb8b6c4 100644 Binary files a/sprites/wolfstuff/XDOGB8.png and b/sprites/wolfstuff/XDOGB8.png differ diff --git a/sprites/wolfstuff/XDOGC1.png b/sprites/wolfstuff/XDOGC1.png index 95d1de3fc..8b7e5f85c 100644 Binary files a/sprites/wolfstuff/XDOGC1.png and b/sprites/wolfstuff/XDOGC1.png differ diff --git a/sprites/wolfstuff/XDOGC2.png b/sprites/wolfstuff/XDOGC2.png index 6223fcddb..ffcb38997 100644 Binary files a/sprites/wolfstuff/XDOGC2.png and b/sprites/wolfstuff/XDOGC2.png differ diff --git a/sprites/wolfstuff/XDOGC3.png b/sprites/wolfstuff/XDOGC3.png index 7bdd290ce..91382964f 100644 Binary files a/sprites/wolfstuff/XDOGC3.png and b/sprites/wolfstuff/XDOGC3.png differ diff --git a/sprites/wolfstuff/XDOGC4.png b/sprites/wolfstuff/XDOGC4.png index 3ce600edc..12ec9839f 100644 Binary files a/sprites/wolfstuff/XDOGC4.png and b/sprites/wolfstuff/XDOGC4.png differ diff --git a/sprites/wolfstuff/XDOGC5.png b/sprites/wolfstuff/XDOGC5.png index 88d78fb19..381b23c6c 100644 Binary files a/sprites/wolfstuff/XDOGC5.png and b/sprites/wolfstuff/XDOGC5.png differ diff --git a/sprites/wolfstuff/XDOGC6.png b/sprites/wolfstuff/XDOGC6.png index 3c72a7d94..531a0f8db 100644 Binary files a/sprites/wolfstuff/XDOGC6.png and b/sprites/wolfstuff/XDOGC6.png differ diff --git a/sprites/wolfstuff/XDOGC7.png b/sprites/wolfstuff/XDOGC7.png index d6464a08d..01f8e3105 100644 Binary files a/sprites/wolfstuff/XDOGC7.png and b/sprites/wolfstuff/XDOGC7.png differ diff --git a/sprites/wolfstuff/XDOGC8.png b/sprites/wolfstuff/XDOGC8.png index f181147ff..208e6e4c8 100644 Binary files a/sprites/wolfstuff/XDOGC8.png and b/sprites/wolfstuff/XDOGC8.png differ diff --git a/sprites/wolfstuff/XDOGD1.png b/sprites/wolfstuff/XDOGD1.png index f5a82bab4..1e04bce00 100644 Binary files a/sprites/wolfstuff/XDOGD1.png and b/sprites/wolfstuff/XDOGD1.png differ diff --git a/sprites/wolfstuff/XDOGD2.png b/sprites/wolfstuff/XDOGD2.png index b13b4edeb..549788a1a 100644 Binary files a/sprites/wolfstuff/XDOGD2.png and b/sprites/wolfstuff/XDOGD2.png differ diff --git a/sprites/wolfstuff/XDOGD3.png b/sprites/wolfstuff/XDOGD3.png index 4f0935019..50232c8b6 100644 Binary files a/sprites/wolfstuff/XDOGD3.png and b/sprites/wolfstuff/XDOGD3.png differ diff --git a/sprites/wolfstuff/XDOGD4.png b/sprites/wolfstuff/XDOGD4.png index 9c6ad3937..1b9c4b9f4 100644 Binary files a/sprites/wolfstuff/XDOGD4.png and b/sprites/wolfstuff/XDOGD4.png differ diff --git a/sprites/wolfstuff/XDOGD5.png b/sprites/wolfstuff/XDOGD5.png index c74324ea0..f7f3c4db5 100644 Binary files a/sprites/wolfstuff/XDOGD5.png and b/sprites/wolfstuff/XDOGD5.png differ diff --git a/sprites/wolfstuff/XDOGD6.png b/sprites/wolfstuff/XDOGD6.png index d60f73f0e..e5ecf8af3 100644 Binary files a/sprites/wolfstuff/XDOGD6.png and b/sprites/wolfstuff/XDOGD6.png differ diff --git a/sprites/wolfstuff/XDOGD7.png b/sprites/wolfstuff/XDOGD7.png index 575c5fc6a..bfdf80f01 100644 Binary files a/sprites/wolfstuff/XDOGD7.png and b/sprites/wolfstuff/XDOGD7.png differ diff --git a/sprites/wolfstuff/XDOGD8.png b/sprites/wolfstuff/XDOGD8.png index 82f7f8974..ef15b7154 100644 Binary files a/sprites/wolfstuff/XDOGD8.png and b/sprites/wolfstuff/XDOGD8.png differ diff --git a/sprites/wolfstuff/XDOGE0.png b/sprites/wolfstuff/XDOGE0.png index f95dc840f..7de6e6f6a 100644 Binary files a/sprites/wolfstuff/XDOGE0.png and b/sprites/wolfstuff/XDOGE0.png differ diff --git a/sprites/wolfstuff/XDOGF0.png b/sprites/wolfstuff/XDOGF0.png index 82e0672c4..3561eed7f 100644 Binary files a/sprites/wolfstuff/XDOGF0.png and b/sprites/wolfstuff/XDOGF0.png differ diff --git a/sprites/wolfstuff/XDOGG0.png b/sprites/wolfstuff/XDOGG0.png index c6b3cab62..ab9190c44 100644 Binary files a/sprites/wolfstuff/XDOGG0.png and b/sprites/wolfstuff/XDOGG0.png differ diff --git a/sprites/wolfstuff/XDOGH0.png b/sprites/wolfstuff/XDOGH0.png index f5f3e2470..ec64a20c6 100644 Binary files a/sprites/wolfstuff/XDOGH0.png and b/sprites/wolfstuff/XDOGH0.png differ diff --git a/sprites/wolfstuff/XDOGI0.png b/sprites/wolfstuff/XDOGI0.png index df2a6a8c6..dac8da298 100644 Binary files a/sprites/wolfstuff/XDOGI0.png and b/sprites/wolfstuff/XDOGI0.png differ diff --git a/sprites/wolfstuff/XDOGJ0.png b/sprites/wolfstuff/XDOGJ0.png index 1d2265967..0e835942a 100644 Binary files a/sprites/wolfstuff/XDOGJ0.png and b/sprites/wolfstuff/XDOGJ0.png differ diff --git a/sprites/wolfstuff/XDOGK0.png b/sprites/wolfstuff/XDOGK0.png index 94efc01fe..45f276a9e 100644 Binary files a/sprites/wolfstuff/XDOGK0.png and b/sprites/wolfstuff/XDOGK0.png differ diff --git a/sprites/wolfstuff/XGRDA1.png b/sprites/wolfstuff/XGRDA1.png index d61e9d0c0..c7de3c645 100644 Binary files a/sprites/wolfstuff/XGRDA1.png and b/sprites/wolfstuff/XGRDA1.png differ diff --git a/sprites/wolfstuff/XGRDA2.png b/sprites/wolfstuff/XGRDA2.png index f671537d7..eb8c55530 100644 Binary files a/sprites/wolfstuff/XGRDA2.png and b/sprites/wolfstuff/XGRDA2.png differ diff --git a/sprites/wolfstuff/XGRDA3.png b/sprites/wolfstuff/XGRDA3.png index c21b308b9..4a36062e0 100644 Binary files a/sprites/wolfstuff/XGRDA3.png and b/sprites/wolfstuff/XGRDA3.png differ diff --git a/sprites/wolfstuff/XGRDA4.png b/sprites/wolfstuff/XGRDA4.png index 2a53f3cbd..bd2255cf9 100644 Binary files a/sprites/wolfstuff/XGRDA4.png and b/sprites/wolfstuff/XGRDA4.png differ diff --git a/sprites/wolfstuff/XGRDA5.png b/sprites/wolfstuff/XGRDA5.png index 9374a178c..e9e124c99 100644 Binary files a/sprites/wolfstuff/XGRDA5.png and b/sprites/wolfstuff/XGRDA5.png differ diff --git a/sprites/wolfstuff/XGRDA6.png b/sprites/wolfstuff/XGRDA6.png index 43fb2ca69..593f0d7d6 100644 Binary files a/sprites/wolfstuff/XGRDA6.png and b/sprites/wolfstuff/XGRDA6.png differ diff --git a/sprites/wolfstuff/XGRDA7.png b/sprites/wolfstuff/XGRDA7.png index 9246bf38c..d1f294e96 100644 Binary files a/sprites/wolfstuff/XGRDA7.png and b/sprites/wolfstuff/XGRDA7.png differ diff --git a/sprites/wolfstuff/XGRDA8.png b/sprites/wolfstuff/XGRDA8.png index dcb1b771b..6534af2ee 100644 Binary files a/sprites/wolfstuff/XGRDA8.png and b/sprites/wolfstuff/XGRDA8.png differ diff --git a/sprites/wolfstuff/XGRDB1.png b/sprites/wolfstuff/XGRDB1.png index 523d03a79..7bd192801 100644 Binary files a/sprites/wolfstuff/XGRDB1.png and b/sprites/wolfstuff/XGRDB1.png differ diff --git a/sprites/wolfstuff/XGRDB2.png b/sprites/wolfstuff/XGRDB2.png index 21aa14506..56a9f5da1 100644 Binary files a/sprites/wolfstuff/XGRDB2.png and b/sprites/wolfstuff/XGRDB2.png differ diff --git a/sprites/wolfstuff/XGRDB3.png b/sprites/wolfstuff/XGRDB3.png index 7130eae51..ddac36cac 100644 Binary files a/sprites/wolfstuff/XGRDB3.png and b/sprites/wolfstuff/XGRDB3.png differ diff --git a/sprites/wolfstuff/XGRDB4.png b/sprites/wolfstuff/XGRDB4.png index 97a4f9179..7936df90d 100644 Binary files a/sprites/wolfstuff/XGRDB4.png and b/sprites/wolfstuff/XGRDB4.png differ diff --git a/sprites/wolfstuff/XGRDB5.png b/sprites/wolfstuff/XGRDB5.png index 4ebe39d00..083596453 100644 Binary files a/sprites/wolfstuff/XGRDB5.png and b/sprites/wolfstuff/XGRDB5.png differ diff --git a/sprites/wolfstuff/XGRDB6.png b/sprites/wolfstuff/XGRDB6.png index 38000a36e..29557dd71 100644 Binary files a/sprites/wolfstuff/XGRDB6.png and b/sprites/wolfstuff/XGRDB6.png differ diff --git a/sprites/wolfstuff/XGRDB7.png b/sprites/wolfstuff/XGRDB7.png index 3b475372a..4e8e879c2 100644 Binary files a/sprites/wolfstuff/XGRDB7.png and b/sprites/wolfstuff/XGRDB7.png differ diff --git a/sprites/wolfstuff/XGRDB8.png b/sprites/wolfstuff/XGRDB8.png index fd4ce2d6e..32e04890a 100644 Binary files a/sprites/wolfstuff/XGRDB8.png and b/sprites/wolfstuff/XGRDB8.png differ diff --git a/sprites/wolfstuff/XGRDC1.png b/sprites/wolfstuff/XGRDC1.png index 1cd2242f0..81c6c9763 100644 Binary files a/sprites/wolfstuff/XGRDC1.png and b/sprites/wolfstuff/XGRDC1.png differ diff --git a/sprites/wolfstuff/XGRDC2.png b/sprites/wolfstuff/XGRDC2.png index 579bcaf64..4fcede807 100644 Binary files a/sprites/wolfstuff/XGRDC2.png and b/sprites/wolfstuff/XGRDC2.png differ diff --git a/sprites/wolfstuff/XGRDC3.png b/sprites/wolfstuff/XGRDC3.png index 469a0716f..3e2699edb 100644 Binary files a/sprites/wolfstuff/XGRDC3.png and b/sprites/wolfstuff/XGRDC3.png differ diff --git a/sprites/wolfstuff/XGRDC4.png b/sprites/wolfstuff/XGRDC4.png index 7a26959f3..ce5504308 100644 Binary files a/sprites/wolfstuff/XGRDC4.png and b/sprites/wolfstuff/XGRDC4.png differ diff --git a/sprites/wolfstuff/XGRDC5.png b/sprites/wolfstuff/XGRDC5.png index a5c78163f..d7e29eb0e 100644 Binary files a/sprites/wolfstuff/XGRDC5.png and b/sprites/wolfstuff/XGRDC5.png differ diff --git a/sprites/wolfstuff/XGRDC6.png b/sprites/wolfstuff/XGRDC6.png index d668a3d77..172f07216 100644 Binary files a/sprites/wolfstuff/XGRDC6.png and b/sprites/wolfstuff/XGRDC6.png differ diff --git a/sprites/wolfstuff/XGRDC7.png b/sprites/wolfstuff/XGRDC7.png index e5bee90be..bb94dd438 100644 Binary files a/sprites/wolfstuff/XGRDC7.png and b/sprites/wolfstuff/XGRDC7.png differ diff --git a/sprites/wolfstuff/XGRDC8.png b/sprites/wolfstuff/XGRDC8.png index c8e3af00b..d341bba2f 100644 Binary files a/sprites/wolfstuff/XGRDC8.png and b/sprites/wolfstuff/XGRDC8.png differ diff --git a/sprites/wolfstuff/XGRDD1.png b/sprites/wolfstuff/XGRDD1.png index 27c9419b3..2ba960996 100644 Binary files a/sprites/wolfstuff/XGRDD1.png and b/sprites/wolfstuff/XGRDD1.png differ diff --git a/sprites/wolfstuff/XGRDD2.png b/sprites/wolfstuff/XGRDD2.png index 24bbffe06..4bb39ca8f 100644 Binary files a/sprites/wolfstuff/XGRDD2.png and b/sprites/wolfstuff/XGRDD2.png differ diff --git a/sprites/wolfstuff/XGRDD3.png b/sprites/wolfstuff/XGRDD3.png index 2ca084380..698b4061e 100644 Binary files a/sprites/wolfstuff/XGRDD3.png and b/sprites/wolfstuff/XGRDD3.png differ diff --git a/sprites/wolfstuff/XGRDD4.png b/sprites/wolfstuff/XGRDD4.png index d42bec0a4..f2d316c9b 100644 Binary files a/sprites/wolfstuff/XGRDD4.png and b/sprites/wolfstuff/XGRDD4.png differ diff --git a/sprites/wolfstuff/XGRDD5.png b/sprites/wolfstuff/XGRDD5.png index 00981d5fe..5b6715db8 100644 Binary files a/sprites/wolfstuff/XGRDD5.png and b/sprites/wolfstuff/XGRDD5.png differ diff --git a/sprites/wolfstuff/XGRDD6.png b/sprites/wolfstuff/XGRDD6.png index 9a52d4498..cfc440139 100644 Binary files a/sprites/wolfstuff/XGRDD6.png and b/sprites/wolfstuff/XGRDD6.png differ diff --git a/sprites/wolfstuff/XGRDD7.png b/sprites/wolfstuff/XGRDD7.png index 0016df25c..c0c0ef97f 100644 Binary files a/sprites/wolfstuff/XGRDD7.png and b/sprites/wolfstuff/XGRDD7.png differ diff --git a/sprites/wolfstuff/XGRDD8.png b/sprites/wolfstuff/XGRDD8.png index 4e48bc31a..ceb519c5e 100644 Binary files a/sprites/wolfstuff/XGRDD8.png and b/sprites/wolfstuff/XGRDD8.png differ diff --git a/sprites/wolfstuff/XGRDE1.png b/sprites/wolfstuff/XGRDE1.png index d37530c95..4d6a0abb6 100644 Binary files a/sprites/wolfstuff/XGRDE1.png and b/sprites/wolfstuff/XGRDE1.png differ diff --git a/sprites/wolfstuff/XGRDE2.png b/sprites/wolfstuff/XGRDE2.png index 8661da51c..2e70cae09 100644 Binary files a/sprites/wolfstuff/XGRDE2.png and b/sprites/wolfstuff/XGRDE2.png differ diff --git a/sprites/wolfstuff/XGRDE3.png b/sprites/wolfstuff/XGRDE3.png index 82da2731c..f2a143011 100644 Binary files a/sprites/wolfstuff/XGRDE3.png and b/sprites/wolfstuff/XGRDE3.png differ diff --git a/sprites/wolfstuff/XGRDE4.png b/sprites/wolfstuff/XGRDE4.png index c521a8392..bd0316244 100644 Binary files a/sprites/wolfstuff/XGRDE4.png and b/sprites/wolfstuff/XGRDE4.png differ diff --git a/sprites/wolfstuff/XGRDE5.png b/sprites/wolfstuff/XGRDE5.png index 5daf7c53f..c066a60cf 100644 Binary files a/sprites/wolfstuff/XGRDE5.png and b/sprites/wolfstuff/XGRDE5.png differ diff --git a/sprites/wolfstuff/XGRDE6.png b/sprites/wolfstuff/XGRDE6.png index 4ec5a2e6a..281f5e712 100644 Binary files a/sprites/wolfstuff/XGRDE6.png and b/sprites/wolfstuff/XGRDE6.png differ diff --git a/sprites/wolfstuff/XGRDE7.png b/sprites/wolfstuff/XGRDE7.png index 1f3c1c714..04d5d25ca 100644 Binary files a/sprites/wolfstuff/XGRDE7.png and b/sprites/wolfstuff/XGRDE7.png differ diff --git a/sprites/wolfstuff/XGRDE8.png b/sprites/wolfstuff/XGRDE8.png index 4d42aaf12..c27ed113a 100644 Binary files a/sprites/wolfstuff/XGRDE8.png and b/sprites/wolfstuff/XGRDE8.png differ diff --git a/sprites/wolfstuff/XGRDF0.png b/sprites/wolfstuff/XGRDF0.png index d38d3c80a..2ea381c13 100644 Binary files a/sprites/wolfstuff/XGRDF0.png and b/sprites/wolfstuff/XGRDF0.png differ diff --git a/sprites/wolfstuff/XGRDG0.png b/sprites/wolfstuff/XGRDG0.png index 0a1f8cf2d..60abc84eb 100644 Binary files a/sprites/wolfstuff/XGRDG0.png and b/sprites/wolfstuff/XGRDG0.png differ diff --git a/sprites/wolfstuff/XGRDH0.png b/sprites/wolfstuff/XGRDH0.png index 8cb39b88a..b34b01487 100644 Binary files a/sprites/wolfstuff/XGRDH0.png and b/sprites/wolfstuff/XGRDH0.png differ diff --git a/sprites/wolfstuff/XGRDI0.png b/sprites/wolfstuff/XGRDI0.png index 4686c8605..936da28b1 100644 Binary files a/sprites/wolfstuff/XGRDI0.png and b/sprites/wolfstuff/XGRDI0.png differ diff --git a/sprites/wolfstuff/XGRDJ0.png b/sprites/wolfstuff/XGRDJ0.png index 186bc701d..4a0cdf926 100644 Binary files a/sprites/wolfstuff/XGRDJ0.png and b/sprites/wolfstuff/XGRDJ0.png differ diff --git a/sprites/wolfstuff/XGRDK0.png b/sprites/wolfstuff/XGRDK0.png index b348e1467..1bcd41d34 100644 Binary files a/sprites/wolfstuff/XGRDK0.png and b/sprites/wolfstuff/XGRDK0.png differ diff --git a/sprites/wolfstuff/XGRDL0.png b/sprites/wolfstuff/XGRDL0.png index 7bcd5666a..30b4c3d19 100644 Binary files a/sprites/wolfstuff/XGRDL0.png and b/sprites/wolfstuff/XGRDL0.png differ diff --git a/sprites/wolfstuff/XGRDM0.png b/sprites/wolfstuff/XGRDM0.png index fa24f1006..b0f216a10 100644 Binary files a/sprites/wolfstuff/XGRDM0.png and b/sprites/wolfstuff/XGRDM0.png differ diff --git a/sprites/wolfstuff/XGRDN0.png b/sprites/wolfstuff/XGRDN0.png index 41c3b9ed7..c6ccbcf3f 100644 Binary files a/sprites/wolfstuff/XGRDN0.png and b/sprites/wolfstuff/XGRDN0.png differ diff --git a/sprites/wolfstuff/XHNSA0.png b/sprites/wolfstuff/XHNSA0.png index 2e51a043d..fece69ec7 100644 Binary files a/sprites/wolfstuff/XHNSA0.png and b/sprites/wolfstuff/XHNSA0.png differ diff --git a/sprites/wolfstuff/XHNSB0.png b/sprites/wolfstuff/XHNSB0.png index fc8f4a8a9..e10715044 100644 Binary files a/sprites/wolfstuff/XHNSB0.png and b/sprites/wolfstuff/XHNSB0.png differ diff --git a/sprites/wolfstuff/XHNSC0.png b/sprites/wolfstuff/XHNSC0.png index 965efa1fe..8cd3c2618 100644 Binary files a/sprites/wolfstuff/XHNSC0.png and b/sprites/wolfstuff/XHNSC0.png differ diff --git a/sprites/wolfstuff/XHNSD0.png b/sprites/wolfstuff/XHNSD0.png index 72a350d12..2a1557843 100644 Binary files a/sprites/wolfstuff/XHNSD0.png and b/sprites/wolfstuff/XHNSD0.png differ diff --git a/sprites/wolfstuff/XHNSE0.png b/sprites/wolfstuff/XHNSE0.png index 9243641b6..6a5b8a5db 100644 Binary files a/sprites/wolfstuff/XHNSE0.png and b/sprites/wolfstuff/XHNSE0.png differ diff --git a/sprites/wolfstuff/XHNSF0.png b/sprites/wolfstuff/XHNSF0.png index 157d2ddc6..02f90200b 100644 Binary files a/sprites/wolfstuff/XHNSF0.png and b/sprites/wolfstuff/XHNSF0.png differ diff --git a/sprites/wolfstuff/XHNSG0.png b/sprites/wolfstuff/XHNSG0.png index f5db7a473..23f1d5fbd 100644 Binary files a/sprites/wolfstuff/XHNSG0.png and b/sprites/wolfstuff/XHNSG0.png differ diff --git a/sprites/wolfstuff/XHNSH0.png b/sprites/wolfstuff/XHNSH0.png index d893ca00e..9aba92d03 100644 Binary files a/sprites/wolfstuff/XHNSH0.png and b/sprites/wolfstuff/XHNSH0.png differ diff --git a/sprites/wolfstuff/XHNSI0.png b/sprites/wolfstuff/XHNSI0.png index abaa7cc4d..16fd65964 100644 Binary files a/sprites/wolfstuff/XHNSI0.png and b/sprites/wolfstuff/XHNSI0.png differ diff --git a/sprites/wolfstuff/XHNSJ0.png b/sprites/wolfstuff/XHNSJ0.png index 30ae9c982..9cfac73a5 100644 Binary files a/sprites/wolfstuff/XHNSJ0.png and b/sprites/wolfstuff/XHNSJ0.png differ diff --git a/sprites/wolfstuff/XHNSK0.png b/sprites/wolfstuff/XHNSK0.png index 496ffe9f6..da320877c 100644 Binary files a/sprites/wolfstuff/XHNSK0.png and b/sprites/wolfstuff/XHNSK0.png differ diff --git a/sprites/wolfstuff/XSSWA1.png b/sprites/wolfstuff/XSSWA1.png index ce498cec1..c0d2a4256 100644 Binary files a/sprites/wolfstuff/XSSWA1.png and b/sprites/wolfstuff/XSSWA1.png differ diff --git a/sprites/wolfstuff/XSSWA2.png b/sprites/wolfstuff/XSSWA2.png index 417304323..d16658fbd 100644 Binary files a/sprites/wolfstuff/XSSWA2.png and b/sprites/wolfstuff/XSSWA2.png differ diff --git a/sprites/wolfstuff/XSSWA3.png b/sprites/wolfstuff/XSSWA3.png index f3b6ca574..2e6553dd5 100644 Binary files a/sprites/wolfstuff/XSSWA3.png and b/sprites/wolfstuff/XSSWA3.png differ diff --git a/sprites/wolfstuff/XSSWA4.png b/sprites/wolfstuff/XSSWA4.png index e5577e6eb..fd8f9cca1 100644 Binary files a/sprites/wolfstuff/XSSWA4.png and b/sprites/wolfstuff/XSSWA4.png differ diff --git a/sprites/wolfstuff/XSSWA5.png b/sprites/wolfstuff/XSSWA5.png index fb5fc982b..b25d9cb10 100644 Binary files a/sprites/wolfstuff/XSSWA5.png and b/sprites/wolfstuff/XSSWA5.png differ diff --git a/sprites/wolfstuff/XSSWA6.png b/sprites/wolfstuff/XSSWA6.png index 13448938e..ce65f3003 100644 Binary files a/sprites/wolfstuff/XSSWA6.png and b/sprites/wolfstuff/XSSWA6.png differ diff --git a/sprites/wolfstuff/XSSWA7.png b/sprites/wolfstuff/XSSWA7.png index 953276bd9..6aee8b1a5 100644 Binary files a/sprites/wolfstuff/XSSWA7.png and b/sprites/wolfstuff/XSSWA7.png differ diff --git a/sprites/wolfstuff/XSSWA8.png b/sprites/wolfstuff/XSSWA8.png index 904e012f8..9ecebcdc3 100644 Binary files a/sprites/wolfstuff/XSSWA8.png and b/sprites/wolfstuff/XSSWA8.png differ diff --git a/sprites/wolfstuff/XSSWB1.png b/sprites/wolfstuff/XSSWB1.png index 2aaf240de..170050d3f 100644 Binary files a/sprites/wolfstuff/XSSWB1.png and b/sprites/wolfstuff/XSSWB1.png differ diff --git a/sprites/wolfstuff/XSSWB2.png b/sprites/wolfstuff/XSSWB2.png index f9dcb6618..8716339e5 100644 Binary files a/sprites/wolfstuff/XSSWB2.png and b/sprites/wolfstuff/XSSWB2.png differ diff --git a/sprites/wolfstuff/XSSWB3.png b/sprites/wolfstuff/XSSWB3.png index cbf03db55..8e38e9e35 100644 Binary files a/sprites/wolfstuff/XSSWB3.png and b/sprites/wolfstuff/XSSWB3.png differ diff --git a/sprites/wolfstuff/XSSWB4.png b/sprites/wolfstuff/XSSWB4.png index f78daa551..d72c6aea4 100644 Binary files a/sprites/wolfstuff/XSSWB4.png and b/sprites/wolfstuff/XSSWB4.png differ diff --git a/sprites/wolfstuff/XSSWB5.png b/sprites/wolfstuff/XSSWB5.png index 2123e4a18..c65f04a78 100644 Binary files a/sprites/wolfstuff/XSSWB5.png and b/sprites/wolfstuff/XSSWB5.png differ diff --git a/sprites/wolfstuff/XSSWB6.png b/sprites/wolfstuff/XSSWB6.png index 800c8011c..5458280de 100644 Binary files a/sprites/wolfstuff/XSSWB6.png and b/sprites/wolfstuff/XSSWB6.png differ diff --git a/sprites/wolfstuff/XSSWB7.png b/sprites/wolfstuff/XSSWB7.png index e76ccddda..5fbbbc578 100644 Binary files a/sprites/wolfstuff/XSSWB7.png and b/sprites/wolfstuff/XSSWB7.png differ diff --git a/sprites/wolfstuff/XSSWB8.png b/sprites/wolfstuff/XSSWB8.png index c17f51785..436b8276e 100644 Binary files a/sprites/wolfstuff/XSSWB8.png and b/sprites/wolfstuff/XSSWB8.png differ diff --git a/sprites/wolfstuff/XSSWC1.png b/sprites/wolfstuff/XSSWC1.png index 8463df15e..b0ef525d8 100644 Binary files a/sprites/wolfstuff/XSSWC1.png and b/sprites/wolfstuff/XSSWC1.png differ diff --git a/sprites/wolfstuff/XSSWC2.png b/sprites/wolfstuff/XSSWC2.png index 61f6b94a6..b8fe33c74 100644 Binary files a/sprites/wolfstuff/XSSWC2.png and b/sprites/wolfstuff/XSSWC2.png differ diff --git a/sprites/wolfstuff/XSSWC3.png b/sprites/wolfstuff/XSSWC3.png index 6c3a7e267..d2695995f 100644 Binary files a/sprites/wolfstuff/XSSWC3.png and b/sprites/wolfstuff/XSSWC3.png differ diff --git a/sprites/wolfstuff/XSSWC4.png b/sprites/wolfstuff/XSSWC4.png index a09864c12..f61ea6597 100644 Binary files a/sprites/wolfstuff/XSSWC4.png and b/sprites/wolfstuff/XSSWC4.png differ diff --git a/sprites/wolfstuff/XSSWC5.png b/sprites/wolfstuff/XSSWC5.png index ff4651ece..2327ccbd3 100644 Binary files a/sprites/wolfstuff/XSSWC5.png and b/sprites/wolfstuff/XSSWC5.png differ diff --git a/sprites/wolfstuff/XSSWC6.png b/sprites/wolfstuff/XSSWC6.png index da48c9557..6271c1905 100644 Binary files a/sprites/wolfstuff/XSSWC6.png and b/sprites/wolfstuff/XSSWC6.png differ diff --git a/sprites/wolfstuff/XSSWC7.png b/sprites/wolfstuff/XSSWC7.png index 1721c037d..952ed8602 100644 Binary files a/sprites/wolfstuff/XSSWC7.png and b/sprites/wolfstuff/XSSWC7.png differ diff --git a/sprites/wolfstuff/XSSWC8.png b/sprites/wolfstuff/XSSWC8.png index 31e634b4c..4953de390 100644 Binary files a/sprites/wolfstuff/XSSWC8.png and b/sprites/wolfstuff/XSSWC8.png differ diff --git a/sprites/wolfstuff/XSSWD1.png b/sprites/wolfstuff/XSSWD1.png index 3f96cfc3e..04fb861b8 100644 Binary files a/sprites/wolfstuff/XSSWD1.png and b/sprites/wolfstuff/XSSWD1.png differ diff --git a/sprites/wolfstuff/XSSWD2.png b/sprites/wolfstuff/XSSWD2.png index 6af806a65..e654e99d7 100644 Binary files a/sprites/wolfstuff/XSSWD2.png and b/sprites/wolfstuff/XSSWD2.png differ diff --git a/sprites/wolfstuff/XSSWD3.png b/sprites/wolfstuff/XSSWD3.png index 6d8731cf9..239d31b4b 100644 Binary files a/sprites/wolfstuff/XSSWD3.png and b/sprites/wolfstuff/XSSWD3.png differ diff --git a/sprites/wolfstuff/XSSWD4.png b/sprites/wolfstuff/XSSWD4.png index 786077e5f..c06cf1b6b 100644 Binary files a/sprites/wolfstuff/XSSWD4.png and b/sprites/wolfstuff/XSSWD4.png differ diff --git a/sprites/wolfstuff/XSSWD5.png b/sprites/wolfstuff/XSSWD5.png index 957e7d024..6b3a32c74 100644 Binary files a/sprites/wolfstuff/XSSWD5.png and b/sprites/wolfstuff/XSSWD5.png differ diff --git a/sprites/wolfstuff/XSSWD6.png b/sprites/wolfstuff/XSSWD6.png index 20887c5fc..af57d9df4 100644 Binary files a/sprites/wolfstuff/XSSWD6.png and b/sprites/wolfstuff/XSSWD6.png differ diff --git a/sprites/wolfstuff/XSSWD7.png b/sprites/wolfstuff/XSSWD7.png index ded1e7171..945cca081 100644 Binary files a/sprites/wolfstuff/XSSWD7.png and b/sprites/wolfstuff/XSSWD7.png differ diff --git a/sprites/wolfstuff/XSSWD8.png b/sprites/wolfstuff/XSSWD8.png index 4e54105f3..9bdf75bb1 100644 Binary files a/sprites/wolfstuff/XSSWD8.png and b/sprites/wolfstuff/XSSWD8.png differ diff --git a/sprites/wolfstuff/XSSWE0.png b/sprites/wolfstuff/XSSWE0.png index 7949f8a69..7eb273603 100644 Binary files a/sprites/wolfstuff/XSSWE0.png and b/sprites/wolfstuff/XSSWE0.png differ diff --git a/sprites/wolfstuff/XSSWF0.png b/sprites/wolfstuff/XSSWF0.png index 80a09b68c..9ca7db1eb 100644 Binary files a/sprites/wolfstuff/XSSWF0.png and b/sprites/wolfstuff/XSSWF0.png differ diff --git a/sprites/wolfstuff/XSSWG0.png b/sprites/wolfstuff/XSSWG0.png index ddddd74b0..66d3ba2e0 100644 Binary files a/sprites/wolfstuff/XSSWG0.png and b/sprites/wolfstuff/XSSWG0.png differ diff --git a/sprites/wolfstuff/XSSWH0.png b/sprites/wolfstuff/XSSWH0.png index 06f138c4f..9501e444a 100644 Binary files a/sprites/wolfstuff/XSSWH0.png and b/sprites/wolfstuff/XSSWH0.png differ diff --git a/sprites/wolfstuff/XSSWI0.png b/sprites/wolfstuff/XSSWI0.png index 656dc9237..95520bb6b 100644 Binary files a/sprites/wolfstuff/XSSWI0.png and b/sprites/wolfstuff/XSSWI0.png differ diff --git a/sprites/wolfstuff/XSSWJ0.png b/sprites/wolfstuff/XSSWJ0.png index 5d79faa7e..a23af47f4 100644 Binary files a/sprites/wolfstuff/XSSWJ0.png and b/sprites/wolfstuff/XSSWJ0.png differ diff --git a/sprites/wolfstuff/XSSWK0.png b/sprites/wolfstuff/XSSWK0.png index cc0744889..917eb4545 100644 Binary files a/sprites/wolfstuff/XSSWK0.png and b/sprites/wolfstuff/XSSWK0.png differ diff --git a/sprites/wolfstuff/XSSWL0.png b/sprites/wolfstuff/XSSWL0.png index a8aa32b87..4e1319562 100644 Binary files a/sprites/wolfstuff/XSSWL0.png and b/sprites/wolfstuff/XSSWL0.png differ diff --git a/sprites/wolfstuff/XSSWM0.png b/sprites/wolfstuff/XSSWM0.png index 9591d6ec5..a4b9c68cc 100644 Binary files a/sprites/wolfstuff/XSSWM0.png and b/sprites/wolfstuff/XSSWM0.png differ diff --git a/sprites/wolfstuff/XSSWW1.png b/sprites/wolfstuff/XSSWW1.png index fa167eddf..fae9e859c 100644 Binary files a/sprites/wolfstuff/XSSWW1.png and b/sprites/wolfstuff/XSSWW1.png differ diff --git a/sprites/wolfstuff/XSSWW2.png b/sprites/wolfstuff/XSSWW2.png index e3987f313..cf16cc3d9 100644 Binary files a/sprites/wolfstuff/XSSWW2.png and b/sprites/wolfstuff/XSSWW2.png differ diff --git a/sprites/wolfstuff/XSSWW3.png b/sprites/wolfstuff/XSSWW3.png index 469aae8aa..93bd68e51 100644 Binary files a/sprites/wolfstuff/XSSWW3.png and b/sprites/wolfstuff/XSSWW3.png differ diff --git a/sprites/wolfstuff/XSSWW4.png b/sprites/wolfstuff/XSSWW4.png index 222d59877..4eeaadfef 100644 Binary files a/sprites/wolfstuff/XSSWW4.png and b/sprites/wolfstuff/XSSWW4.png differ diff --git a/sprites/wolfstuff/XSSWW5.png b/sprites/wolfstuff/XSSWW5.png index 36a138ea6..bed87bf05 100644 Binary files a/sprites/wolfstuff/XSSWW5.png and b/sprites/wolfstuff/XSSWW5.png differ diff --git a/sprites/wolfstuff/XSSWW6.png b/sprites/wolfstuff/XSSWW6.png index 0449ed1d2..57982eadb 100644 Binary files a/sprites/wolfstuff/XSSWW6.png and b/sprites/wolfstuff/XSSWW6.png differ diff --git a/sprites/wolfstuff/XSSWW7.png b/sprites/wolfstuff/XSSWW7.png index b3b3468da..32bbaaa42 100644 Binary files a/sprites/wolfstuff/XSSWW7.png and b/sprites/wolfstuff/XSSWW7.png differ diff --git a/sprites/wolfstuff/XSSWW8.png b/sprites/wolfstuff/XSSWW8.png index 1dbed4898..1485e1500 100644 Binary files a/sprites/wolfstuff/XSSWW8.png and b/sprites/wolfstuff/XSSWW8.png differ diff --git a/sprites/xdeaths/BO2XA0.png b/sprites/xdeaths/BO2XA0.png deleted file mode 100644 index d2485ceb4..000000000 Binary files a/sprites/xdeaths/BO2XA0.png and /dev/null differ diff --git a/sprites/xdeaths/BO2XB0.png b/sprites/xdeaths/BO2XB0.png deleted file mode 100644 index 49109694e..000000000 Binary files a/sprites/xdeaths/BO2XB0.png and /dev/null differ diff --git a/sprites/xdeaths/BO2XC0.png b/sprites/xdeaths/BO2XC0.png deleted file mode 100644 index dd15ab67e..000000000 Binary files a/sprites/xdeaths/BO2XC0.png and /dev/null differ diff --git a/sprites/xdeaths/BO2XD0.png b/sprites/xdeaths/BO2XD0.png deleted file mode 100644 index c624f4368..000000000 Binary files a/sprites/xdeaths/BO2XD0.png and /dev/null differ diff --git a/sprites/xdeaths/BO2XE0.png b/sprites/xdeaths/BO2XE0.png deleted file mode 100644 index ed96fc61e..000000000 Binary files a/sprites/xdeaths/BO2XE0.png and /dev/null differ diff --git a/sprites/xdeaths/BO2XF0.png b/sprites/xdeaths/BO2XF0.png deleted file mode 100644 index f9f13c6c6..000000000 Binary files a/sprites/xdeaths/BO2XF0.png and /dev/null differ diff --git a/sprites/xdeaths/BO2XG0.png b/sprites/xdeaths/BO2XG0.png deleted file mode 100644 index abc44cc8c..000000000 Binary files a/sprites/xdeaths/BO2XG0.png and /dev/null differ diff --git a/sprites/xdeaths/BO2XH0.png b/sprites/xdeaths/BO2XH0.png deleted file mode 100644 index 21432f454..000000000 Binary files a/sprites/xdeaths/BO2XH0.png and /dev/null differ diff --git a/sprites/xdeaths/BO2XI0.png b/sprites/xdeaths/BO2XI0.png deleted file mode 100644 index 528baf30c..000000000 Binary files a/sprites/xdeaths/BO2XI0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXA0.png b/sprites/xdeaths/BOSXA0.png deleted file mode 100644 index 6c5eabc81..000000000 Binary files a/sprites/xdeaths/BOSXA0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXB0.png b/sprites/xdeaths/BOSXB0.png deleted file mode 100644 index 3d0dd1831..000000000 Binary files a/sprites/xdeaths/BOSXB0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXC0.png b/sprites/xdeaths/BOSXC0.png deleted file mode 100644 index af0da3a69..000000000 Binary files a/sprites/xdeaths/BOSXC0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXD0.png b/sprites/xdeaths/BOSXD0.png deleted file mode 100644 index 1026ee024..000000000 Binary files a/sprites/xdeaths/BOSXD0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXE0.png b/sprites/xdeaths/BOSXE0.png deleted file mode 100644 index 0e65bca92..000000000 Binary files a/sprites/xdeaths/BOSXE0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXF0.png b/sprites/xdeaths/BOSXF0.png deleted file mode 100644 index 8607fde74..000000000 Binary files a/sprites/xdeaths/BOSXF0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXG0.png b/sprites/xdeaths/BOSXG0.png deleted file mode 100644 index 09528a10b..000000000 Binary files a/sprites/xdeaths/BOSXG0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXH0.png b/sprites/xdeaths/BOSXH0.png deleted file mode 100644 index 099b8203b..000000000 Binary files a/sprites/xdeaths/BOSXH0.png and /dev/null differ diff --git a/sprites/xdeaths/BOSXI0.png b/sprites/xdeaths/BOSXI0.png deleted file mode 100644 index dc20fa348..000000000 Binary files a/sprites/xdeaths/BOSXI0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXA0.png b/sprites/xdeaths/BSPXA0.png deleted file mode 100644 index 1b615800d..000000000 Binary files a/sprites/xdeaths/BSPXA0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXB0.png b/sprites/xdeaths/BSPXB0.png deleted file mode 100644 index f8a0e3603..000000000 Binary files a/sprites/xdeaths/BSPXB0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXC0.png b/sprites/xdeaths/BSPXC0.png deleted file mode 100644 index 9d00b264a..000000000 Binary files a/sprites/xdeaths/BSPXC0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXD0.png b/sprites/xdeaths/BSPXD0.png deleted file mode 100644 index 7e39e7348..000000000 Binary files a/sprites/xdeaths/BSPXD0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXE0.png b/sprites/xdeaths/BSPXE0.png deleted file mode 100644 index 5de401250..000000000 Binary files a/sprites/xdeaths/BSPXE0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXF0.png b/sprites/xdeaths/BSPXF0.png deleted file mode 100644 index bdbd51387..000000000 Binary files a/sprites/xdeaths/BSPXF0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXG0.png b/sprites/xdeaths/BSPXG0.png deleted file mode 100644 index a4d7bf974..000000000 Binary files a/sprites/xdeaths/BSPXG0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXH0.png b/sprites/xdeaths/BSPXH0.png deleted file mode 100644 index addfa0565..000000000 Binary files a/sprites/xdeaths/BSPXH0.png and /dev/null differ diff --git a/sprites/xdeaths/BSPXI0.png b/sprites/xdeaths/BSPXI0.png deleted file mode 100644 index 5f9d53f54..000000000 Binary files a/sprites/xdeaths/BSPXI0.png and /dev/null differ diff --git a/sprites/xdeaths/CACXA0.png b/sprites/xdeaths/CACXA0.png deleted file mode 100644 index 5e125b03d..000000000 Binary files a/sprites/xdeaths/CACXA0.png and /dev/null differ diff --git a/sprites/xdeaths/CACXB0.png b/sprites/xdeaths/CACXB0.png deleted file mode 100644 index f4a756bdd..000000000 Binary files a/sprites/xdeaths/CACXB0.png and /dev/null differ diff --git a/sprites/xdeaths/CACXC0.png b/sprites/xdeaths/CACXC0.png deleted file mode 100644 index 235ee17aa..000000000 Binary files a/sprites/xdeaths/CACXC0.png and /dev/null differ diff --git a/sprites/xdeaths/CACXD0.png b/sprites/xdeaths/CACXD0.png deleted file mode 100644 index 65b11d69d..000000000 Binary files a/sprites/xdeaths/CACXD0.png and /dev/null differ diff --git a/sprites/xdeaths/CACXE0.png b/sprites/xdeaths/CACXE0.png deleted file mode 100644 index bb1aac976..000000000 Binary files a/sprites/xdeaths/CACXE0.png and /dev/null differ diff --git a/sprites/xdeaths/CACXF0.png b/sprites/xdeaths/CACXF0.png deleted file mode 100644 index cdaad02c1..000000000 Binary files a/sprites/xdeaths/CACXF0.png and /dev/null differ diff --git a/sprites/xdeaths/CACXG0.png b/sprites/xdeaths/CACXG0.png deleted file mode 100644 index 7402b8530..000000000 Binary files a/sprites/xdeaths/CACXG0.png and /dev/null differ diff --git a/sprites/xdeaths/CACXH0.png b/sprites/xdeaths/CACXH0.png deleted file mode 100644 index f497941ff..000000000 Binary files a/sprites/xdeaths/CACXH0.png and /dev/null differ diff --git a/sprites/xdeaths/FATXA0.png b/sprites/xdeaths/FATXA0.png deleted file mode 100644 index a9da0d890..000000000 Binary files a/sprites/xdeaths/FATXA0.png and /dev/null differ diff --git a/sprites/xdeaths/FATXB0.png b/sprites/xdeaths/FATXB0.png deleted file mode 100644 index 1ef21fdea..000000000 Binary files a/sprites/xdeaths/FATXB0.png and /dev/null differ diff --git a/sprites/xdeaths/FATXC0.png b/sprites/xdeaths/FATXC0.png deleted file mode 100644 index b391fba6e..000000000 Binary files a/sprites/xdeaths/FATXC0.png and /dev/null differ diff --git a/sprites/xdeaths/FATXD0.png b/sprites/xdeaths/FATXD0.png deleted file mode 100644 index 387657158..000000000 Binary files a/sprites/xdeaths/FATXD0.png and /dev/null differ diff --git a/sprites/xdeaths/FATXE0.png b/sprites/xdeaths/FATXE0.png deleted file mode 100644 index 978c37bb3..000000000 Binary files a/sprites/xdeaths/FATXE0.png and /dev/null differ diff --git a/sprites/xdeaths/FATXF0.png b/sprites/xdeaths/FATXF0.png deleted file mode 100644 index bd589177b..000000000 Binary files a/sprites/xdeaths/FATXF0.png and /dev/null differ diff --git a/sprites/xdeaths/REVXA0.png b/sprites/xdeaths/REVXA0.png deleted file mode 100644 index 99cef5566..000000000 Binary files a/sprites/xdeaths/REVXA0.png and /dev/null differ diff --git a/sprites/xdeaths/REVXB0.png b/sprites/xdeaths/REVXB0.png deleted file mode 100644 index 235eba78c..000000000 Binary files a/sprites/xdeaths/REVXB0.png and /dev/null differ diff --git a/sprites/xdeaths/REVXC0.png b/sprites/xdeaths/REVXC0.png deleted file mode 100644 index 1f9fe10a9..000000000 Binary files a/sprites/xdeaths/REVXC0.png and /dev/null differ diff --git a/sprites/xdeaths/REVXD0.png b/sprites/xdeaths/REVXD0.png deleted file mode 100644 index 7066dbb1f..000000000 Binary files a/sprites/xdeaths/REVXD0.png and /dev/null differ diff --git a/sprites/xdeaths/REVXE0.png b/sprites/xdeaths/REVXE0.png deleted file mode 100644 index 8e63f5425..000000000 Binary files a/sprites/xdeaths/REVXE0.png and /dev/null differ diff --git a/sprites/xdeaths/REVXF0.png b/sprites/xdeaths/REVXF0.png deleted file mode 100644 index 8842cc3c3..000000000 Binary files a/sprites/xdeaths/REVXF0.png and /dev/null differ diff --git a/sprites/xdeaths/SARXA0.png b/sprites/xdeaths/SARXA0.png deleted file mode 100644 index bc54e5acd..000000000 Binary files a/sprites/xdeaths/SARXA0.png and /dev/null differ diff --git a/sprites/xdeaths/SARXB0.png b/sprites/xdeaths/SARXB0.png deleted file mode 100644 index db5921647..000000000 Binary files a/sprites/xdeaths/SARXB0.png and /dev/null differ diff --git a/sprites/xdeaths/SARXC0.png b/sprites/xdeaths/SARXC0.png deleted file mode 100644 index 19761d113..000000000 Binary files a/sprites/xdeaths/SARXC0.png and /dev/null differ diff --git a/sprites/xdeaths/SARXD0.png b/sprites/xdeaths/SARXD0.png deleted file mode 100644 index 55a44b3cc..000000000 Binary files a/sprites/xdeaths/SARXD0.png and /dev/null differ diff --git a/sprites/xdeaths/SARXE0.png b/sprites/xdeaths/SARXE0.png deleted file mode 100644 index 4aa073354..000000000 Binary files a/sprites/xdeaths/SARXE0.png and /dev/null differ diff --git a/sprites/xdeaths/SARXF0.png b/sprites/xdeaths/SARXF0.png deleted file mode 100644 index bdc8f6940..000000000 Binary files a/sprites/xdeaths/SARXF0.png and /dev/null differ diff --git a/sprites/xdeaths/SARXG0.png b/sprites/xdeaths/SARXG0.png deleted file mode 100644 index 96d0c9246..000000000 Binary files a/sprites/xdeaths/SARXG0.png and /dev/null differ diff --git a/sprites/xdeaths/VILXA0.png b/sprites/xdeaths/VILXA0.png deleted file mode 100644 index 85251bee0..000000000 Binary files a/sprites/xdeaths/VILXA0.png and /dev/null differ diff --git a/sprites/xdeaths/VILXB0.png b/sprites/xdeaths/VILXB0.png deleted file mode 100644 index 614ef7c1a..000000000 Binary files a/sprites/xdeaths/VILXB0.png and /dev/null differ diff --git a/sprites/xdeaths/VILXC0.png b/sprites/xdeaths/VILXC0.png deleted file mode 100644 index e866e2310..000000000 Binary files a/sprites/xdeaths/VILXC0.png and /dev/null differ diff --git a/sprites/xdeaths/VILXD0.png b/sprites/xdeaths/VILXD0.png deleted file mode 100644 index 28c1f9f42..000000000 Binary files a/sprites/xdeaths/VILXD0.png and /dev/null differ diff --git a/sprites/xdeaths/VILXE0.png b/sprites/xdeaths/VILXE0.png deleted file mode 100644 index aaea2e9ae..000000000 Binary files a/sprites/xdeaths/VILXE0.png and /dev/null differ diff --git a/sprites/xdeaths/VILXF0.png b/sprites/xdeaths/VILXF0.png deleted file mode 100644 index 614b63cd7..000000000 Binary files a/sprites/xdeaths/VILXF0.png and /dev/null differ diff --git a/sprites/xdeaths/VILXG0.png b/sprites/xdeaths/VILXG0.png deleted file mode 100644 index 99eb87fcb..000000000 Binary files a/sprites/xdeaths/VILXG0.png and /dev/null differ diff --git a/swwmcomp.acs b/swwmcomp.acs index 98ee39a6f..ad3dccbd3 100644 --- a/swwmcomp.acs +++ b/swwmcomp.acs @@ -30,7 +30,7 @@ SCRIPT "EQUINOX_BRAINCRUSH" ( int tag ) Ceiling_CrushAndRaiseDist(tag,8,8,10); } -SCRIPT "DVACATION_UNFUCK" ( void ) +SCRIPT "DVACATION_UNSCREW" ( void ) { Delay(1); SetLineSpecial(2,ACS_ExecuteAlways,StrArg("DVACATION_EXIT")); @@ -97,217 +97,3 @@ SCRIPT "E1M8_KNOCKOUT" ( void ) Delay(100); Exit_Normal(0); } - -// DUMP 2 and 3 rewritten hub progress scripts -// Because the way these use BigFont makes them unreadable otherwise - -SCRIPT "DUMP2_HUB" ( void ) -{ - Delay(35); - ACS_Terminate(2,0); - int mapstodo; - switch( GameSkill() ) - { - case 0: - mapstodo = 8; - break; - case 1: - mapstodo = 16; - break; - case 2: - mapstodo = 32; - break; - case 3: - mapstodo = 48; - break; - default: - mapstodo = 64; - break; - } - bool unlockedfinal = false; - while ( true ) - { - int lvent = ScriptCall("BaseStatusBar","GetGlobalACSValue",59); - bool unlockfinal = false; - switch( GameSkill() ) - { - case 0: - if ( lvent >= 8 ) unlockfinal = true; - break; - case 1: - if ( lvent >= 16 ) unlockfinal = true; - break; - case 2: - if ( lvent >= 32 ) unlockfinal = true; - break; - case 3: - if ( lvent >= 48 ) unlockfinal = true; - break; - default: - if ( lvent >= 64 ) unlockfinal = true; - break; - } - if ( unlockfinal && !unlockedfinal ) - { - unlockedfinal = true; - Ceiling_LowerByValue(10,96,96); - } - SetFont("BigFont"); - int progress = mapstodo-lvent; - SetHudSize(640,480,0); - if ( progress > 0 ) HudMessageBold(d:progress,s:" more maps to go...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); - else HudMessageBold(s:"The final room is open...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); - Delay(1); - } -} - -SCRIPT "DUMP3_HUB" ( void ) -{ - Delay(1); - ACS_Terminate(1,0); - int mapstodo; - switch( GameSkill() ) - { - case 0: - mapstodo = 8; - break; - case 1: - mapstodo = 16; - break; - case 2: - mapstodo = 32; - break; - case 3: - mapstodo = 48; - break; - default: - mapstodo = 64; - break; - } - bool unlockedfinal = false; - while ( true ) - { - int lvent = ScriptCall("BaseStatusBar","GetGlobalACSValue",59); - bool unlockfinal = false; - switch( GameSkill() ) - { - case 0: - if ( lvent >= 8 ) unlockfinal = true; - break; - case 1: - if ( lvent >= 16 ) unlockfinal = true; - break; - case 2: - if ( lvent >= 32 ) unlockfinal = true; - break; - case 3: - if ( lvent >= 48 ) unlockfinal = true; - break; - default: - if ( lvent >= 64 ) unlockfinal = true; - break; - } - if ( unlockfinal && !unlockedfinal ) - { - unlockedfinal = true; - Floor_LowerByValue(11,96,256); - } - SetFont("BigFont"); - int progress = mapstodo-lvent; - SetHudSize(640,480,0); - if ( progress > 1 ) HudMessageBold(d:progress,s:" more maps to go...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); - else if ( progress > 0 ) HudMessageBold(d:progress,s:" more map to go...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); - else HudMessageBold(s:"The final room is open...";HUDMSG_PLAIN,1,CR_GOLD,320.0,40.0,0); - Delay(1); - } -} - -// same here, just TOO BIG -str DUMP3MapNames[74][2] = -{ - { "", "" }, // 0 - { "Check-In", "undeadRyker" }, - { "Pissboy", "Anonymous" }, - { "Simplicity is Golden", "demo_the_man" }, - { "Invitation to Destruction", "Gardevoir" }, - { "SOLITARY", "CJacobs" }, - { "Ruins & Lava", "VBob" }, - { "Bloodsport Canyon", "Hoodoo456" }, - { "Nuclear Control Facilities", "Titan314" }, - { "Mountain Temple", "Project_ILE" }, - { "Overflow", "SpudTheRubbish" }, // 10 - { "'Venture into the Bouncy Castle", "Beed28" }, - { "The Crater", "combatxtreme & Plutonic Overkill" }, - { "The Fun Lab", "TerminusEst13" }, - { "Durex Waste Disposal", "Minimum Payne" }, - { "The Corporate Ladder", "Kinsie" }, - { "Regressive Experience", "Dukka" }, - { "Baby's First Map", "Bobman23" }, - { "Research Facility", "deathgod5309" }, - { "AMONG US", "HumansAmongUs" }, - { "The Darkness Beyond", "KarolineDianne" }, // 20 - { "Base Stimpack", "charcola" }, - { "Crunk Refinery", "BobBarker" }, - { "0-Pipe Gear", "Toooooasty" }, - { "Escape from Argent Prison", "Lance Charleson" }, - { "Live Fire Exorcise", "Sgt. Shivers" }, - { "Attack First", "simpletonn" }, - { "Hitler's Prison", "Luigi2600" }, - { "Tomb of Hetickhamen", "Action Max" }, - { "The Weed Number", "Abysswalker" }, - { "This Is Serious Mum", "deathz0r" }, // 30 - { "Not Another Tech Base", "ArchXeno" }, - { "Hydraulic Plant", "SpiritOfDecay" }, - { "Janus", "SoundOfDoomDoors" }, - { "Gamma Station Entrance", "SMG_Marine" }, - { "Realm of the Sempiternal Archvile", "Darsycho" }, - { "Judgement Day", "Stale_meat" }, - { "Complex Alive", "Roxas" }, - { "DUMP TD", "Arctangent" }, - { "Dumping Ground", "TotalInjury" }, - { "Mercury Rain", "Jimmy" }, // 40 - { "mapsterpiece", "idiotbitz" }, - { "Tunnel Crates Rule!", "Stale_Meat" }, - { "CLOVERHOUSE", "Icept" }, - { "Generic UAC Outpost", "Anonymous" }, - { "Felt", "FloatRand" }, - { "Panic Room", "comet1338" }, - { "Simple Chaos", "willykuo123" }, - { "EVISCERATED", "NAG" }, - { "The Mine to Hell", "InsanityBringer" }, - { "Sandcastley Sandcastling Sandcastles", "PinchySkree" }, // 50 - { "Dead", "Already Dead" }, - { "Broken Shit", "ZachBrowder" }, - { "Weapons Research Lab", "Vennobennu" }, - { "Winter in Summer", "TehRealSalt" }, - { "The UAC Ocean Base", "leodoom85" }, - { "Hot Water Music", "Protester" }, - { "Lambda Base", "floatRand" }, - { "inferno odyssey", "Anonymous" }, - { "Infested Installation", "Flipy" }, - { "The Duality", "NeuralStunner" }, // 60 - { "Municipal Well", "Flotilla" }, - { "Dropoff", "CharlieTheGnarly" }, - { "Dimensional Accelerator", "Untitled" }, - { "Urban Hell", "ChrisR91" }, - { "Electron", "floatRand" }, - { "Caco-lover", "everennui" }, - { "Brown Mesa", "Cheeki" }, - { "Bloody Hell", "Wivicer" }, - { "A Night at the Opera", "Temin_Dump" }, - { "An Online Virtual Reality Used By Hackers", "Shadow Hog" }, // 70 - { "BtFS", "Gageat" }, - { "The Runaround", "LogicalFallacy" }, - { "Attack From Within", "mumblemumble" } -}; - -SCRIPT "DUMP3_DISPLAY" ( int f1, int f2 ) -{ - int fuck = (f1*10)+f2; - SetHudSize(640,480,0); - SetFont("BigFont"); - HudMessage(s:DUMP3MapNames[fuck][0];HUDMSG_FADEINOUT,2,CR_WHITE,320.4,380.2,2.5,0.15,0.65); - SetHudSize(320,240,0); - SetFont("SmallFont"); - HudMessage(s:DUMP3MapNames[fuck][1];HUDMSG_FADEINOUT,3,CR_GOLD,160.4,200.0,2.5,0.15,0.65); -} diff --git a/swwmdialogue.misc b/swwmdialogue.misc new file mode 100644 index 000000000..745e101a7 --- /dev/null +++ b/swwmdialogue.misc @@ -0,0 +1,238 @@ +# miscellaneous +DLG CHEATS + SEQ ZNV + NAME ZNVTXT + CNT 5 + DELAY 80 + ENDDELAY 90 + PAUSEDELAY 40 + ZNVSPECIAL + ENDSEQ +ENDDLG +DLG WASTE1 + SEQ SAYA + NAME SAYAWASTEA + CNT 1 + DELAY 5 + STARTDELAY 10 + ENDDELAY 25 + ENDSEQ +ENDDLG +DLG WASTE2 + SEQ SAYA + NAME SAYAWASTEB + CNT 1 + DELAY 10 + STARTDELAY 20 + ENDDELAY 30 + ENDSEQ +ENDDLG +DLG WASTE3 + SEQ SAYA + NAME SAYAWASTEC + CNT 1 + DELAY 30 + STARTDELAY 15 + ENDDELAY 25 + ENDSEQ +ENDDLG +DLG WASTE4 + SEQ SAYA + NAME SAYAWASTED + CNT 2 + DELAY 40 + STARTDELAY 10 + ENDDELAY 20 + ENDSEQ +ENDDLG +DLG WASTE5 + SEQ SAYA + NAME SAYAWASTEE + CNT 1 + DELAY 20 + STARTDELAY 10 + ENDDELAY 30 + ENDSEQ +ENDDLG +DLG WASTE6 + SEQ SAYA + NAME SAYAWASTEF + CNT 1 + DELAY 50 + STARTDELAY 20 + ENDDELAY 30 + ENDSEQ +ENDDLG +DLG LEVER1 + SEQ SAYA + NAME SAYALEVERA + CNT 1 + DELAY 5 + STARTDELAY 20 + ENDDELAY 50 + ENDSEQ +ENDDLG +DLG LEVER2 + SEQ SAYA + NAME SAYALEVERB + CNT 1 + DELAY 10 + STARTDELAY 30 + ENDDELAY 40 + ENDSEQ +ENDDLG +DLG LEVER3 + SEQ SAYA + NAME SAYALEVERC + CNT 1 + DELAY 30 + STARTDELAY 10 + ENDDELAY 25 + ENDSEQ +ENDDLG +DLG LEVER4 + SEQ SAYA + NAME SAYALEVERD + CNT 1 + DELAY 40 + STARTDELAY 10 + ENDDELAY 20 + ENDSEQ +ENDDLG +DLG LEVER5 + SEQ SAYA + NAME SAYALEVERE + CNT 1 + DELAY 20 + STARTDELAY 10 + ENDDELAY 30 + ENDSEQ +ENDDLG +DLG LEVER6 + SEQ SAYA + NAME SAYALEVERF + CNT 1 + DELAY 50 + STARTDELAY 20 + ENDDELAY 30 + ENDSEQ +ENDDLG +DLG LEVER7 + SEQ SAYA + NAME SAYALEVERG + CNT 2 + DELAY 50 + STARTDELAY 30 + ENDDELAY 50 + ENDSEQ +ENDDLG +DLG FOOL + SEQ SAYA + NAME SAYAFOOL + CNT 5 + DELAY 120 + ENDSEQ +ENDDLG +DLG CC + SEQ CYTHO + NAME CYTHOCCA + CNT 4 + DELAY 120 + ENDSEQ + SEQ SAYA + NAME CYTHOCCB + CNT 1 + DELAY 30 + ENDSEQ + SEQ CYTHO + NAME CYTHOCCC + CNT 1 + DELAY 45 + ENDSEQ +ENDDLG +DLG LILITH + SEQ SAYA + NAME SAYALILITHA + CNT 2 + DELAY 1050 # give it about 15 seconds for it to happen + ENDSEQ + SEQ CYTHO + NAME SAYALILITHB + CNT 1 + DELAY 30 + ENDSEQ + SEQ SAYA + NAME SAYALILITHC + CNT 1 + DELAY 20 + ENDSEQ + SEQ CYTHO + NAME SAYALILITHD + CNT 1 + DELAY 40 + ENDSEQ + SEQ SAYA + NAME SAYALILITHE + CNT 1 + DELAY 50 + ENDSEQ +ENDDLG +DLG ROMERO + SEQ SAYA + NAME SAYAROMEROA + CNT 1 + DELAY 50 + ENDSEQ + SEQ CYTHO + NAME SAYAROMEROB + CNT 1 + DELAY 40 + ENDSEQ + SEQ SAYA + NAME SAYAROMEROC + CNT 1 + DELAY 30 + ENDSEQ + SEQ CYTHO + NAME SAYAROMEROD + CNT 2 + DELAY 50 + ENDSEQ + SEQ SAYA + NAME SAYAROMEROE + CNT 1 + DELAY 70 + ENDSEQ +ENDDLG +DLG CRANK1 + SEQ SAYA + NAME SAYACRANKA + CNT 1 + DELAY 30 + ENDSEQ +ENDDLG +DLG CRANK2 + SEQ SAYA + NAME SAYACRANKB + CNT 2 + DELAY 20 + ENDSEQ +ENDDLG +DLG CRANK3 + SEQ SAYA + NAME SAYACRANKC + CNT 1 + DELAY 80 + STARTDELAY 50 + ENDSEQ +ENDDLG +DLG CRANK4 + SEQ SAYA + NAME SAYACRANKD + CNT 1 + DELAY 40 + STARTDELAY 40 + ENDDELAY 80 + CHARDELAY 5 + ENDSEQ +ENDDLG diff --git a/swwmvoicepack.txt b/swwmvoicepack.txt index e1d437f67..0e84ab64a 100644 --- a/swwmvoicepack.txt +++ b/swwmvoicepack.txt @@ -6,11 +6,11 @@ # voice//<#> for the sndinfo entries # SWWM_SUBS__<#>, plus a SWWM_SUBS__N counter, # for the language strings -# with the exception of pain/death/grunt sounds and the like (which should -# additionally have a $random entry in sndinfo), all lines you may want to -# register require a subtitle language string so they can be properly detected, -# but you can set them to an empty string if you don't want text to display. +# all lines you may want to register require a subtitle language string so they +# can be properly detected, but you can set them to an empty string if you +# don't want text to display. +# voices for various grunts, pain and death screams use a different system, +# you can consult the source files for the default voice for reference. # also don't forget to add a SWWM_VOICENAME_* language string for each voice -# type so they have a "human-readable" name in the options menu +# type so they have a "human-readable" name in the options menu. default -legacy diff --git a/terrain.txt b/terrain.txt index ba2823d49..c606b08da 100644 --- a/terrain.txt +++ b/terrain.txt @@ -12,6 +12,8 @@ splash Water chunkzvelshift 8 chunkbasezvel 2 sound world/watersplash + + noalert } splash Sludge @@ -27,6 +29,8 @@ splash Sludge chunkzvelshift 8 chunkbasezvel 1 sound world/sludgegloop + + noalert } splash Lava @@ -42,6 +46,8 @@ splash Lava chunkzvelshift 7 chunkbasezvel 1 sound world/lavasizzle + + noalert } splash Sizzle @@ -57,6 +63,8 @@ splash Sizzle chunkzvelshift 7 chunkbasezvel 1 sound world/lavasizzle + + noalert } splash Blood @@ -72,6 +80,8 @@ splash Blood chunkzvelshift 8 chunkbasezvel 2 sound world/watersplash + + noalert } splash Slime @@ -87,6 +97,8 @@ splash Slime chunkzvelshift 8 chunkbasezvel 1 sound world/sludgegloop + + noalert } splash Mud @@ -102,6 +114,8 @@ splash Mud chunkzvelshift 8 chunkbasezvel 1 sound world/sludgegloop + + noalert } terrain Sizzle @@ -483,6 +497,15 @@ floor optional ONUKEA05 Slime floor optional ONUKEA06 Slime floor optional ONUKEA07 Slime floor optional ONUKEA08 Slime +// implies existence of ONUKEB##, but I have not seen it in Eviternity 2 +floor optional ONUKEC01 Slime +floor optional ONUKEC02 Slime +floor optional ONUKEC03 Slime +floor optional ONUKEC04 Slime +floor optional ONUKEC05 Slime +floor optional ONUKEC06 Slime +floor optional ONUKEC07 Slime +floor optional ONUKEC08 Slime floor optional OPOOPY01 Mud floor optional OPOOPY02 Mud @@ -520,6 +543,16 @@ floor optional OWATER06 Water floor optional OWATER07 Water floor optional OWATER08 Water +// Eviternity 2 electrified water +floor optional ZWATER01 Water +floor optional ZWATER02 Water +floor optional ZWATER03 Water +floor optional ZWATER04 Water +floor optional ZWATER05 Water +floor optional ZWATER06 Water +floor optional ZWATER07 Water +floor optional ZWATER08 Water + // [MK] terrain defs for Refracted Reality floor optional BLDNUKE1 Blood floor optional BLDNUKE2 Blood @@ -700,3 +733,10 @@ floor optional EQNXSL01 Mud floor optional EQNXSL02 Mud floor optional EQNXSL03 Mud floor optional EQNXSL04 Mud + + +// [MK] Sunder "muck" +floor optional MUCK_1 Mud +floor optional MUCK_2 Mud +floor optional MUCK_3 Mud +floor optional MUCK_4 Mud diff --git a/textcolors.txt b/textcolors.txt index a2eb7939e..34458b968 100644 --- a/textcolors.txt +++ b/textcolors.txt @@ -1,23 +1,3 @@ -// marb colors ♥ -Heliotrope -{ - #130023 #C885FF -Console: - #000000 #9664BF 0 127 - #C885FF #FFFFFF 128 256 -Flat: - #C885FF -} -BlushPink -{ - #220923 #F367F8 -Console: - #000000 #BB4FBF 0 127 - #F367F8 #FFFFFF 128 256 -Flat: - #F367F8 -} - // TRANS RIGHTS TransPink { @@ -92,3 +72,331 @@ Console: Flat: #998B79 } + +// mod-specific minihud font colors +MiniDemoHUD // classic desaturated aqua hud borders +{ + #000000 #080C10 0 50 + #080C10 #101820 51 101 + #101820 #203040 102 151 + #203040 #40607F 152 203 + #40607F #608FBF 204 255 +} +MiniIbukiHUD // dark gray hud borders +{ + #000000 #1A1A1A 0 50 + #1A1A1A #262626 51 101 + #262626 #404040 102 151 + #404040 #4D4D4D 152 203 + #4D4D4D #666666 204 255 +} +MiniSayaHUD // desaturated dark red hud borders +{ + #000000 #100808 0 50 + #100808 #201010 51 101 + #201010 #402020 102 151 + #402020 #7F4040 152 203 + #7F4040 #BF6060 204 255 +} +MiniKirinHUD // brown-ish hud borders +{ + #000000 #331A1A 0 50 + #331A1A #663B33 51 101 + #663B33 #99664D 102 151 + #99664D #CC9966 152 203 + #CC9966 #FFD480 204 255 +} +MiniMarisaHUD // silvery white hud borders +{ + #000000 #1F2233 0 50 + #1F2233 #475266 51 101 + #475266 #7A8A99 102 151 + #7A8A99 #B8C5CC 152 203 + #B8C5CC #FFFFFF 204 255 +} +MiniVoidHUD // faint violet hud borders +{ + #000000 #2D2050 0 50 + #2D2050 #49347D 51 101 + #49347D #5E439A 102 151 + #5E439A #7F66B3 152 203 + #7F66B3 #B09FCD 204 255 +} +// general minihud font colors +MiniWhite +{ + #000000 #FFFFFF +} +MiniRed +{ + #000000 #FF0000 +} +MiniGreen +{ + #000000 #00FF00 +} +MiniBlue +{ + #000000 #3030FF +} +MiniCyan +{ + #000000 #00FFFF +} +MiniYellow +{ + #000000 #FFE030 +} +MiniPurple +{ + #000000 #8000FF +} +// specialized minihud font colors +MiniBrass +{ + #000000 #330800 0 50 + #330800 #662200 51 101 + #662200 #994D00 102 151 + #994D00 #CC8800 152 203 + #CC8800 #FFD500 204 255 +} +MiniSilver +{ + #000000 #262933 0 50 + #262933 #4D5366 51 101 + #4D5366 #737C99 102 151 + #737C99 #99A6CC 152 203 + #99A6CC #BFCFFF 204 255 +} +MiniGold +{ + #000000 #332A00 0 50 + #332A00 #806A00 51 101 + #806A00 #CCAA00 102 151 + #CCAA00 #E6C939 152 203 + #E6C939 #FFEA80 204 255 +} +MiniMana +{ + #000000 #002233 0 50 + #002233 #002266 51 101 + #002266 #000099 102 151 + #000099 #4400CC 152 203 + #4400CC #AA00FF 204 255 +} +MiniCrimson // Anarukon blood +{ + #000000 #330022 0 50 + #330022 #660033 51 101 + #660033 #990033 102 151 + #880033 #CC0022 152 203 + #CC0022 #FF0000 204 255 +} +MiniEldritch // funky green, usually for wild mana +{ + #000000 #003333 0 50 + #003333 #006644 51 101 + #006644 #009944 102 151 + #009944 #00CC33 152 203 + #00CC33 #00FF00 204 255 +} +MiniKinylum // aqua-blue gradient +{ + #000000 #001133 0 50 + #001133 #003366 51 101 + #003366 #006699 102 151 + #006699 #00AACC 152 203 + #00AACC #00FFFF 204 255 +} +MiniSydon // red-pink gradient +{ + #000000 #33001A 0 50 + #33001A #66001A 51 101 + #66001A #990000 102 151 + #990000 #CC3300 152 203 + #CC3300 #FF8000 204 255 +} +MiniNokorokinylum // violet-blue gradient +{ + #000000 #000055 0 50 + #000055 #1C00AA 51 101 + #1C00AA #5500FF 102 151 + #5500FF #AA55FF 152 203 + #AA55FF #E3AAFF 204 255 +} +MiniDemoBlue // Blue from Demo-chan's chassis +{ + #000000 #110A33 0 50 + #110A33 #1F1F66 51 101 + #1F1F66 #3D4D99 102 151 + #3D4D99 #6688CC 152 203 + #6688CC #99CCFF 204 255 +} +MiniDemoPink // Pink from Demo-chan's chassis +{ + #000000 #330022 0 50 + #330022 #66144B 51 101 + #66144B #993D7A 102 151 + #993D7A #CC7AB1 152 203 + #CC7AB1 #FFCCEE 204 255 +} +// additional general colors +MiniOrange +{ + #000000 #FF8000 +} +MiniGrass +{ + #000000 #80FF00 +} +MiniMint +{ + #000000 #00FF80 +} +MiniAqua +{ + #000000 #0080FF +} +MiniMagenta +{ + #000000 #FF00FF +} +MiniPink +{ + #000000 #FF0080 +} +// additional specialized colors +MiniSkin // pale skin color (replaces Crystal, which wasn't used by anything) +{ + #000000 #33221A 0 50 + #33221A #664B3D 51 101 + #664B3D #997D6B 102 151 + #997D6B #CCB6A3 152 203 + #CCB6A3 #FFF2E6 204 255 +} +MiniFire // akin to zdoom's +{ + #000000 #330000 0 50 + #330000 #661400 51 101 + #661400 #993D00 102 151 + #993D00 #CC7A00 152 203 + #CC7A00 #FFCC00 204 255 +} +MiniSulfur // acidic looking +{ + #000000 #332200 0 50 + #332200 #664D00 51 101 + #664D00 #998000 102 151 + #998000 #CCBB00 152 203 + #CCBB00 #FFFF00 204 255 +} +MiniWitch // purple but faded highlights +{ + #000000 #000933 0 50 + #000933 #000066 51 101 + #000066 #331F99 102 151 + #331F99 #7A52CC 152 203 + #7A52CC #CC99FF 204 255 +} +MiniCyanblu // cyan-blue gradient +{ + #000000 #000033 0 50 + #000033 #001A66 51 101 + #001A66 #266099 102 151 + #266099 #66B3CC 152 203 + #66B3CC #BFFFFF 204 255 +} +MiniIce // more saturated Child of Ash HUD gradient +{ + #000000 #052433 0 50 + #052433 #1F4866 51 101 + #1F4866 #4D7399 102 151 + #4D7399 #8FA8CC 152 203 + #8FA8CC #E6EEFF 204 255 +} +MiniPurpur // blue-pink gradient +{ + #000000 #33001A 0 50 + #33001A #66004D 51 101 + #66004D #992699 102 151 + #992699 #B366CC 152 203 + #B366CC #DFBFFF 204 255 +} +MiniTomato // faded red gradient +{ + #000000 #330000 0 50 + #330000 #660000 51 101 + #660000 #992626 102 151 + #992626 #CC6666 152 203 + #CC6666 #FFBFBF 204 255 +} +MiniBlurp // blue-purple gradient +{ + #000000 #330F2D 0 50 + #330F2D #5C2966 51 101 + #5C2966 #734D99 102 151 + #734D99 #887ACC 152 203 + #887ACC #B3C0FF 204 255 +} +MiniPurb // purple-blue gradient +{ + #000000 #000033 0 50 + #000033 #1A0066 51 101 + #1A0066 #4D0099 102 151 + #4D0099 #9900CC 152 203 + #9900CC #FF00FF 204 255 +} +MiniNokron // magenta-red gradient +{ + #000000 #330011 0 50 + #330011 #660000 51 101 + #660000 #990033 102 151 + #990033 #CC0088 152 203 + #CC0088 #FF00FF 204 255 +} +MiniKabbadon // alt. golden gradient +{ + #000000 #331A00 0 50 + #331A00 #663C00 51 101 + #663C00 #996600 102 151 + #996600 #CCA633 152 203 + #CCA633 #FFEA80 204 255 +} +// flash colors (flat, cut to black on outline/shadow) +MiniFlash // "obtained" +{ + #000000 #FFC040 0 50 + #FFC040 #FFC040 51 255 +} +MiniRedFlash // "low health" +{ + #000000 #FF0000 0 50 + #FF0000 #FF0000 51 255 +} +MiniWhiteFlash // "misc" +{ + #000000 #FFFFFF 0 50 + #FFFFFF #FFFFFF 51 255 +} + +// stuff +BDSayaRed +{ + #000000 #000000 0 50 + #A08080 #FFC0C0 51 255 +} +BDDemoGreen +{ + #000000 #000000 0 50 + #80A080 #C0FFC0 51 255 +} +BDRed +{ + #000000 #000000 0 50 + #800000 #FF4040 51 255 +} +aprcol +{ + #FFFFFF #000000 0 50 + #000000 #000000 51 255 +} diff --git a/textures.castdemo b/textures.castdemo deleted file mode 100644 index bdef48df9..000000000 --- a/textures.castdemo +++ /dev/null @@ -1,316 +0,0 @@ -// Texture definitions generated by SLADE3 -// on Thu Mar 4 19:31:28 2021 - -Sprite "ZYX1A0", 50, 196 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 191 - Patch "PATCHES/CASTDEMO_0001.PNG", 0, 0 -} - -Sprite "ZYX1B0", 51, 199 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 191 - Patch "PATCHES/CASTDEMO_0002.PNG", 0, 0 -} - -Sprite "ZYX1C0", 51, 200 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 191 - Patch "PATCHES/CASTDEMO_0003.PNG", 0, 0 -} - -Sprite "ZYX1D0", 51, 199 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 192 - Patch "PATCHES/CASTDEMO_0004.PNG", 0, 0 -} - -Sprite "ZYX1E0", 51, 198 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 192 - Patch "PATCHES/CASTDEMO_0005.PNG", 0, 0 -} - -Sprite "ZYX1F0", 51, 199 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 192 - Patch "PATCHES/CASTDEMO_0006.PNG", 0, 0 -} - -Sprite "ZYX1G0", 51, 200 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 190 - Patch "PATCHES/CASTDEMO_0007.PNG", 0, 0 -} - -Sprite "ZYX1H0", 51, 198 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 191 - Patch "PATCHES/CASTDEMO_0008.PNG", 0, 0 -} - -Sprite "ZYX1I0", 50, 196 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 191 - Patch "PATCHES/CASTDEMO_0009.PNG", 0, 0 -} - -Sprite "ZYX1J0", 50, 199 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 191 - Patch "PATCHES/CASTDEMO_0010.PNG", 0, 0 -} - -Sprite "ZYX1K0", 50, 199 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 191 - Patch "PATCHES/CASTDEMO_0011.PNG", 0, 0 -} - -Sprite "ZYX1L0", 50, 198 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 188 - Patch "PATCHES/CASTDEMO_0012.PNG", 0, 0 -} - -Sprite "ZYX1M0", 50, 197 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 184 - Patch "PATCHES/CASTDEMO_0013.PNG", 0, 0 -} - -Sprite "ZYX1N0", 50, 198 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 187 - Patch "PATCHES/CASTDEMO_0014.PNG", 0, 0 -} - -Sprite "ZYX1O0", 50, 198 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 190 - Patch "PATCHES/CASTDEMO_0015.PNG", 0, 0 -} - -Sprite "ZYX1P0", 50, 197 -{ - XScale 2.500 - YScale 3.000 - Offset 24, 190 - Patch "PATCHES/CASTDEMO_0016.PNG", 0, 0 -} - -Sprite "ZYX2A0", 60, 192 -{ - XScale 2.500 - YScale 3.000 - Offset 26, 187 - Patch "PATCHES/CASTDEMO_0166.PNG", 0, 0 -} - -Sprite "ZYX2B0", 59, 191 -{ - XScale 2.500 - YScale 3.000 - Offset 26, 186 - Patch "PATCHES/CASTDEMO_0167.PNG", 0, 0 -} - -Sprite "ZYX2C0", 57, 190 -{ - XScale 2.500 - YScale 3.000 - Offset 26, 184 - Patch "PATCHES/CASTDEMO_0168.PNG", 0, 0 -} - -Sprite "ZYX2D0", 55, 191 -{ - XScale 2.500 - YScale 3.000 - Offset 25, 185 - Patch "PATCHES/CASTDEMO_0169.PNG", 0, 0 -} - -Sprite "ZYX2E0", 54, 194 -{ - XScale 2.500 - YScale 3.000 - Offset 25, 188 - Patch "PATCHES/CASTDEMO_0170.PNG", 0, 0 -} - -Sprite "ZYX2F0", 52, 196 -{ - XScale 2.500 - YScale 3.000 - Offset 25, 190 - Patch "PATCHES/CASTDEMO_0171.PNG", 0, 0 -} - -Sprite "ZYX3A0", 81, 196 -{ - XScale 2.500 - YScale 3.000 - Offset 37, 192 - Patch "PATCHES/CASTDEMO_0048.PNG", 0, 0 -} - -Sprite "ZYX3B0", 98, 198 -{ - XScale 2.500 - YScale 3.000 - Offset 55, 192 - Patch "PATCHES/CASTDEMO_0049.PNG", 0, 0 -} - -Sprite "ZYX3C0", 107, 196 -{ - XScale 2.500 - YScale 3.000 - Offset 65, 190 - Patch "PATCHES/CASTDEMO_0050.PNG", 0, 0 -} - -Sprite "ZYX3D0", 123, 194 -{ - XScale 2.500 - YScale 3.000 - Offset 70, 190 - Patch "PATCHES/CASTDEMO_0051.PNG", 0, 0 -} - -Sprite "ZYX3E0", 133, 189 -{ - XScale 2.500 - YScale 3.000 - Offset 70, 187 - Patch "PATCHES/CASTDEMO_0052.PNG", 0, 0 -} - -Sprite "ZYX3F0", 129, 182 -{ - XScale 2.500 - YScale 3.000 - Offset 68, 183 - Patch "PATCHES/CASTDEMO_0053.PNG", 0, 0 -} - -Sprite "ZYX3G0", 133, 174 -{ - XScale 2.500 - YScale 3.000 - Offset 70, 176 - Patch "PATCHES/CASTDEMO_0054.PNG", 0, 0 -} - -Sprite "ZYX3H0", 134, 150 -{ - XScale 2.500 - YScale 3.000 - Offset 69, 155 - Patch "PATCHES/CASTDEMO_0055.PNG", 0, 0 -} - -Sprite "ZYX3I0", 93, 117 -{ - XScale 2.500 - YScale 3.000 - Offset 32, 118 - Patch "PATCHES/CASTDEMO_0056.PNG", 0, 0 -} - -Sprite "ZYX3J0", 86, 107 -{ - XScale 2.500 - YScale 3.000 - Offset 35, 91 - Patch "PATCHES/CASTDEMO_0057.PNG", 0, 0 -} - -Sprite "ZYX3K0", 100, 111 -{ - XScale 2.500 - YScale 3.000 - Offset 49, 87 - Patch "PATCHES/CASTDEMO_0058.PNG", 0, 0 -} - -Sprite "ZYX3L0", 101, 115 -{ - XScale 2.500 - YScale 3.000 - Offset 51, 83 - Patch "PATCHES/CASTDEMO_0059.PNG", 0, 0 -} - -Sprite "ZYX3M0", 110, 93 -{ - XScale 2.500 - YScale 3.000 - Offset 48, 71 - Patch "PATCHES/CASTDEMO_0060.PNG", 0, 0 -} - -Sprite "ZYX3N0", 111, 87 -{ - XScale 2.500 - YScale 3.000 - Offset 47, 65 - Patch "PATCHES/CASTDEMO_0061.PNG", 0, 0 -} - -Sprite "ZYX3O0", 101, 86 -{ - XScale 2.500 - YScale 3.000 - Offset 44, 63 - Patch "PATCHES/CASTDEMO_0062.PNG", 0, 0 -} - -Sprite "ZYX3P0", 103, 84 -{ - XScale 2.500 - YScale 3.000 - Offset 37, 57 - Patch "PATCHES/CASTDEMO_0063.PNG", 0, 0 -} - -Sprite "ZYX3Q0", 101, 74 -{ - XScale 2.500 - YScale 3.000 - Offset 31, 44 - Patch "PATCHES/CASTDEMO_0064.PNG", 0, 0 -} - -// End of texture definitions diff --git a/textures.envmap b/textures.envmap new file mode 100644 index 000000000..5b6b9bb8c --- /dev/null +++ b/textures.envmap @@ -0,0 +1,9 @@ +// duplicate envmaps for two special materials +Texture "ERRORENV", 512, 512 +{ + Patch "models/envmap/redenv.png", 0, 0 +} +Texture "BARRIENV", 512, 512 +{ + Patch "models/envmap/glss3env.png", 0, 0 +} diff --git a/textures/-noflat-.png b/textures/-noflat-.png index 0441b26d9..f29d9edd9 100644 Binary files a/textures/-noflat-.png and b/textures/-noflat-.png differ diff --git a/textures/-notex-.png b/textures/-notex-.png new file mode 100644 index 000000000..8230e883f Binary files /dev/null and b/textures/-notex-.png differ diff --git a/textures/DefaultTexture.png b/textures/DefaultTexture.png new file mode 100644 index 000000000..1442f7ce2 Binary files /dev/null and b/textures/DefaultTexture.png differ diff --git a/textures/chiptilw.png b/textures/chiptilw.png index 0be309464..e9157065b 100644 Binary files a/textures/chiptilw.png and b/textures/chiptilw.png differ diff --git a/textures/deface/spray_MARBFAC2.png b/textures/deface/spray_MARBFAC2.png index b0fd980e1..b3bb42b79 100644 Binary files a/textures/deface/spray_MARBFAC2.png and b/textures/deface/spray_MARBFAC2.png differ diff --git a/textures/deface/spray_MARBFAC3.png b/textures/deface/spray_MARBFAC3.png index 6dacf4223..4bf7a828b 100644 Binary files a/textures/deface/spray_MARBFAC3.png and b/textures/deface/spray_MARBFAC3.png differ diff --git a/textures/deface/spray_MARBFAC4.png b/textures/deface/spray_MARBFAC4.png index 95bcb881b..3b8e5f678 100644 Binary files a/textures/deface/spray_MARBFAC4.png and b/textures/deface/spray_MARBFAC4.png differ diff --git a/textures/deface/spray_MARBFACE.png b/textures/deface/spray_MARBFACE.png index 9a1fec3ec..f7505499e 100644 Binary files a/textures/deface/spray_MARBFACE.png and b/textures/deface/spray_MARBFACE.png differ diff --git a/textures/deface/spray_ZZWOLF12.png b/textures/deface/spray_ZZWOLF12.png index c6b5316bf..4e0678566 100644 Binary files a/textures/deface/spray_ZZWOLF12.png and b/textures/deface/spray_ZZWOLF12.png differ diff --git a/textures/deface/spray_ZZWOLF13.png b/textures/deface/spray_ZZWOLF13.png index be74c88bc..c2187ef20 100644 Binary files a/textures/deface/spray_ZZWOLF13.png and b/textures/deface/spray_ZZWOLF13.png differ diff --git a/textures/deface/spray_ZZWOLF2.png b/textures/deface/spray_ZZWOLF2.png index 0a57861e9..69cd9af0b 100644 Binary files a/textures/deface/spray_ZZWOLF2.png and b/textures/deface/spray_ZZWOLF2.png differ diff --git a/textures/deface/spray_ZZWOLF3.png b/textures/deface/spray_ZZWOLF3.png index 6b56db687..f00ec43d9 100644 Binary files a/textures/deface/spray_ZZWOLF3.png and b/textures/deface/spray_ZZWOLF3.png differ diff --git a/textures/deface/spray_ZZWOLF4.png b/textures/deface/spray_ZZWOLF4.png index f8a1cc63e..2fdc9f2ed 100644 Binary files a/textures/deface/spray_ZZWOLF4.png and b/textures/deface/spray_ZZWOLF4.png differ diff --git a/textures/deface/spray_ZZWOLF6.png b/textures/deface/spray_ZZWOLF6.png index 6804dab90..1e6b0d2e3 100644 Binary files a/textures/deface/spray_ZZWOLF6.png and b/textures/deface/spray_ZZWOLF6.png differ diff --git a/textures/deface/spray_ZZWOLF7.png b/textures/deface/spray_ZZWOLF7.png index 4bb3a1e95..5ab1d9d2f 100644 Binary files a/textures/deface/spray_ZZWOLF7.png and b/textures/deface/spray_ZZWOLF7.png differ diff --git a/textures/devawarp1.png b/textures/devawarp1.png index eb28461b6..326b07476 100644 Binary files a/textures/devawarp1.png and b/textures/devawarp1.png differ diff --git a/textures/devawarp2.png b/textures/devawarp2.png index 7060f1de9..cf7b37d74 100644 Binary files a/textures/devawarp2.png and b/textures/devawarp2.png differ diff --git a/textures/frosttex.png b/textures/frosttex.png index 3a6e8d26a..e21e1b696 100644 Binary files a/textures/frosttex.png and b/textures/frosttex.png differ diff --git a/textures/graynoise.png b/textures/graynoise.png index 8c4796010..eff817661 100644 Binary files a/textures/graynoise.png and b/textures/graynoise.png differ diff --git a/textures/heattex.png b/textures/heattex.png index 00a39ee86..75571eca7 100644 Binary files a/textures/heattex.png and b/textures/heattex.png differ diff --git a/textures/kinstile.png b/textures/kinstile.png index c3af54a54..38eecf445 100644 Binary files a/textures/kinstile.png and b/textures/kinstile.png differ diff --git a/textures/lavawarp.png b/textures/lavawarp.png index b3bba7127..e5ad67669 100644 Binary files a/textures/lavawarp.png and b/textures/lavawarp.png differ diff --git a/textures/ragewarp.png b/textures/ragewarp.png index 26e9d8a62..8955a22e4 100644 Binary files a/textures/ragewarp.png and b/textures/ragewarp.png differ diff --git a/textures/rgbnoise.png b/textures/rgbnoise.png index a93edab04..1a8b95528 100644 Binary files a/textures/rgbnoise.png and b/textures/rgbnoise.png differ diff --git a/textures/roughwarp.png b/textures/roughwarp.png index 10944d1e4..6052a5bdd 100644 Binary files a/textures/roughwarp.png and b/textures/roughwarp.png differ diff --git a/textures/smoketex.png b/textures/smoketex.png index d1bf3e116..6bd35fff3 100644 Binary files a/textures/smoketex.png and b/textures/smoketex.png differ diff --git a/textures/softnoise.png b/textures/softnoise.png index 27d493d69..312ca929c 100644 Binary files a/textures/softnoise.png and b/textures/softnoise.png differ diff --git a/textures/warptex.png b/textures/warptex.png index de45a9d0d..09eb9880f 100644 Binary files a/textures/warptex.png and b/textures/warptex.png differ diff --git a/textures/wetwarp.png b/textures/wetwarp.png index cc60ec7b3..580dde3f5 100644 Binary files a/textures/wetwarp.png and b/textures/wetwarp.png differ diff --git a/tools/.gitignore b/tools/.gitignore index fbc8514d7..efba67cee 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -1,2 +1 @@ -mkstartup mklang diff --git a/tools/build.sh b/tools/build.sh index fcea83ecc..d3da398aa 100755 --- a/tools/build.sh +++ b/tools/build.sh @@ -1,3 +1,2 @@ #!/bin/sh -gcc -std=c11 -march=native -Os -Wall -Wextra -Werror -pedantic -o mkstartup mkstartup.c gcc -std=c11 -march=native -Os -Wall -Wextra -Werror -pedantic -o mklang mklang.c diff --git a/tools/excl.lst b/tools/excl.lst index 34decccca..cc3963e3e 100644 --- a/tools/excl.lst +++ b/tools/excl.lst @@ -1,7 +1,7 @@ -pk7 .git *.md docimg +models/.gitignore models/*.blend models/*.blend1 models/*.mdd diff --git a/tools/mklang.c b/tools/mklang.c index 078951883..64d8e189d 100644 --- a/tools/mklang.c +++ b/tools/mklang.c @@ -3,7 +3,7 @@ This code is a mess and it's full of hacks, but that's to be expected when it's all really just for personal use. - Copyright (c) 2020-2022 Marisa Kirisame, UnSX Team + Copyright (c) 2020-2022 Mari the Deer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -36,6 +36,7 @@ char *lang = 0; FILE *lf = 0; char *txt = 0; long txtlen = 0; +int nl = 0, nf = 0; void processentry( char *entname ) { @@ -70,6 +71,7 @@ gettag: processend: if ( gottag ) printf("\n"); else printf(" \033[1;31mEMPTY???\033[0m\n"); + nf++; return; processtag: printf(" \033[1;36mTAG\033[0m"); @@ -202,24 +204,12 @@ int main( int argc, char **argv ) const char langs[][16] = { "default", - "es", -/* "jp", - "ru", - "fr", - "it", - "de", - "pl"*/ + "es" }; const char langfiles[][32] = { "language.def_lore", - "language.es_lore", -/* "language.jp_lore", - "language.ru_lore", - "language.fr_lore", - "language.it_lore", - "language.de_lore", - "language.pl_lore",*/ + "language.es_lore" }; int nlangs = sizeof(langs)/16; // hacky, but works char mpath[PATH_MAX+1]; @@ -238,12 +228,24 @@ int main( int argc, char **argv ) int lim = PATH_MAX-(appendto-mpath); for ( int i=0; i= lim ) + { + fprintf(stderr,"\033[31mpath length exceeded (over %u bytes).\033[0m\n",PATH_MAX); + continue; + } + DIR *d = opendir(mpath); + if ( !d ) + { + fprintf(stderr,"\033[31mskipping language \033[1m'%s'\033[22m: \033[1m%s\033[0m\n",langs[i],strerror(errno)); + continue; + } + closedir(d); + printf("\033[33mprocessing language \033[1m'%s'\033[0m\n",langs[i]); if ( snprintf(appendto,lim,"%s",langfiles[i]) >= lim ) { fprintf(stderr,"\033[31mpath length exceeded (over %u bytes).\033[0m\n",PATH_MAX); continue; } - printf("\033[33mprocessing language \033[1m'%s'\033[0m\n",langs[i]); lf = fopen(mpath,"wb"); if ( !lf ) { @@ -256,12 +258,13 @@ int main( int argc, char **argv ) if ( nb >= lim ) { fprintf(stderr,"\033[31mpath length exceeded (over %u bytes).\033[0m\n",PATH_MAX); - fclose(lf); continue; } loopdir(mpath,appendto,nb,lim); fclose(lf); + nl++; } + printf("\033[33mfinished: \033[1m%d\033[22m languages, \033[1m%d\033[22m total files\n",nl,nf); return 0; } diff --git a/tools/mkpk7.sh b/tools/mkpk7.sh deleted file mode 100755 index 80afcca4f..000000000 --- a/tools/mkpk7.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -WORKDIR=$(dirname $(dirname $(readlink -f $0))) -pushd "$WORKDIR" -7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off -x@tools/excl.lst -up0q0r2x2y2z1w2 ../swwmgz${1}_m.pk7 . -popd diff --git a/tools/mkstartup.c b/tools/mkstartup.c deleted file mode 100644 index 56494c9b6..000000000 --- a/tools/mkstartup.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - mkstartup.c : Makes a Hexen startup screen from provided images. - Requires all the files to be in the same folder it's executed in. - I didn't bother adding any checks so if this thing catches on fire it's - your own damn fault. Add them yourself if you want, this tool was made - for personal use anyway. - - Copyright (c) 2020-2021 Marisa Kirisame, UnSX Team - - 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. -*/ -#include -#include - -int main( void ) -{ - // we expect everything to be exported straight from gimp in raw image - // data format, indexed, no alpha, all graphics must share the same - // 16-color palette and have the exact dimensions shown here: - // STARTUP.data : 640x480, I8 (307200 bytes) - // STARTUP.data.pal : 16 colors, RGB8 (48 bytes) - // NOTCH.data : 16x23, I8 (368 bytes) - // NETNOTCH.data : 4x16, I8 (64 bytes) - // the NOTCH and NETNOTCH files are optional and their processing will - // be skipped if not found - uint8_t pal[48] = {0}; - uint8_t startup[4][38400] = {{0}}; - uint8_t notch[184] = {0}; - uint8_t netnotch[32] = {0}; - uint8_t blk[8] = {0}; - FILE *fout = fopen("STARTUP.dat","wb"); - FILE *fin = fopen("STARTUP.data.pal","rb"); - fread(&pal,1,48,fin); - // reduce 8BPC palette to 6BPC - for ( int i=0; i<48; i++ ) - pal[i] = (pal[i]>>2)&0x3f; - fwrite(&pal,1,48,fout); - fclose(fin); - fin = fopen("STARTUP.data","rb"); - // compose 4-bit planar startup image - for ( int i=0; i<38400; i++ ) - { - fread(&blk,1,8,fin); - for ( int j=0; j<8; j++ ) - { - startup[0][i] |= !!(blk[j]&1)<<(7-j); - startup[1][i] |= !!(blk[j]&2)<<(7-j); - startup[2][i] |= !!(blk[j]&4)<<(7-j); - startup[3][i] |= !!(blk[j]&8)<<(7-j); - } - } - fclose(fin); - fwrite(&startup,1,153600,fout); - fclose(fout); - fin = fopen("NOTCH.data","rb"); - if ( !fin ) goto nnotch; - fout = fopen("NOTCH.dat","wb"); - // compose 4-bit linear notch image - for ( int i=0; i<184; i++ ) - { - fread(&blk,1,2,fin); - notch[i] |= (blk[0]<<4)&0xF0; - notch[i] |= blk[1]&0x0F; - } - fclose(fin); - fwrite(¬ch,1,184,fout); - fclose(fout); -nnotch: - fin = fopen("NETNOTCH.data","rb"); - if ( !fin ) return 0; - fout = fopen("NETNOTCH.dat","wb"); - // compose 4-bit linear netnotch image - for ( int i=0; i<32; i++ ) - { - fread(&blk,1,2,fin); - netnotch[i] |= (blk[0]<<4)&0xF0; - netnotch[i] |= blk[1]&0x0F; - } - fclose(fin); - fwrite(&netnotch,1,32,fout); - fclose(fout); - return 0; -} diff --git a/trnslate.txt b/trnslate.txt index 9834eb49f..a46db3d33 100644 --- a/trnslate.txt +++ b/trnslate.txt @@ -8,3 +8,4 @@ HotMetal6 = "0:255=%[0.2,0.12,0.1]:[0.5,0.4,0.28]" HotMetal7 = "0:255=%[0.0,0.0,0.0]:[0.25,0.25,0.25]" Rubble = "0:255=%[0.0,0.0,0.0]:[0.2,0.2,0.2]" StoneSpike = "0:255=%[0.20,0.10,0.05]:[0.70,0.50,0.35]" +DeadOats = "0:255=#[255,0,0]" diff --git a/ultdoom2.lst b/ultdoom2.lst index a1631566c..e13473f7a 100644 --- a/ultdoom2.lst +++ b/ultdoom2.lst @@ -1,23 +1,24 @@ +03E5F007DC766188D407ACFD05E13342 03E9F65F0FE317DBCA878959D62A6402 -10818C3F45804DC1D9ECF26A4657700C -189FB708C864BBA2F7D4E073E3453AA1 +061BAFCF2D699A99AC33A0E1CFDD642E +167EEFD3EAABCBE68B61DE8C66825B6D +2A57F20293C957B0CB00C33A1AB5D660 +2CFFBAD824C1C7D23514641383B5B12F +32FB2CC285247BABFADD2C426E9925BF 3C8EA698BC859BE08519FBA2800CC058 +40949A16C49580D54337CC09FB2A06B7 43FCFD2EDD7A7AB95CD6744E058BBAD5 -6F9186DA6628DEB2763BDBCFEF66E353 -742B0E5A2F62BD2F218C0615A8B2AD12 -7831EEE8C427D64C61F5065B3AD32C6B -8AD62BE65CA0A745B96D015D2AE6B9D5 -8B4578CBCDD2854FBAE229E68BD7FFEB +5E85822C8FB3837B517857032E8842F2 +6BFABEBF4497E46370D5724D5D638989 +757249FBAD1706214F9AEF0E210EFE44 +78E51D7ACD8AD50076AC658255DBFF14 +7E371B881D9F7060A2F5F9A24B8EF1C1 +845D77DBE053DD03CBDD5D343E792603 8E4798C0CC58E27F62EBE83B4BA19D8A -91D01960472EABBBC409CABD60F3F4CB -9DAA2E6DDD827C955CEEA208707EE2AB +96C5914A9B4A2383DE6BBE363940DF2F +A3F8AA09651DC6E92535BD2399342D4C A6BBBB4DEA926564A8F46F860BADDBFC -BD2445D904F8F505C7CBAF22A1FBE4A9 -CC53CFFCB30E873669AA2F09DA0D3566 -D0747F7806956A92EAB97093BFA08579 -D9C090F153DBCC5A8B26FF27E2511818 -DD00C0F495A8491DBEE69526B5E67D82 +BC8F9A1EA116535A1D48ED8DB0A5FAC8 +DC32F182CF747FD70A1C43671A7294D2 DF6A001A6C42DB5CCA599EE5883B294A -E3E8400C23CE7F83FE29AFD197BA3682 -E971D39AA390BE48D36F83E44584B853 -FF8620A6B4EB60CCE737EBC1E6CC7A9F +F396B7A7B43BCCCFC37B761A4DADDDDC diff --git a/vanilladoom.lst b/vanilladoom.lst index da3551ebc..ed466ea67 100644 --- a/vanilladoom.lst +++ b/vanilladoom.lst @@ -65,6 +65,9 @@ F6EE16F770AD309D608EA0B1F1E249FC F951882CB5A8DEF910F0ED966A1054C5 FB564DF28BC8D4BF70F60FB3256BCF9D FE97DCB9E6235FB3C52AE7C143160D73 +# E1M4B + E1M8B +1D80B17F6283346D35EDB86CD684C4D3 +A1F105211112747EE50BA520462A471E # DOOM II 0BB515B79E0A6C42C4846C4E6F5F1D73 0D491365C1B88B7D1B603890100DD03E @@ -159,4 +162,14 @@ EBCA8E5E02430E9642D24CF2ADBAE80D ECC2BCC872F0F1C09711246B85901F1C F930BA8E480B2A5C94829C2A2A585157 FB0369DB6D3F4E117947764CEC906C92 +# SIGIL II +217F956C4F5B0F872C5F9013C9B23CD1 +2D08AD5CAA92AC69A805B46385ECF9B4 +42D1C15691EFE8664EDC0F611242131A +5BA3D00F6B64F6268E11C6851D47ECBF +7D6698B2DD1904908144A3AEC4BD53FA +A2D5FFFDE75CDC907F45E5193A5B9DAB +D5E7640BEB3346650095787BBA0C2984 +E70BA6CD12A90F793FFD4F941140A630 +F00298FA653C0D10303DB09CA89E68E0 # TNT and Plutonia are not included, they're not part of the campaign diff --git a/zmapinfo.txt b/zmapinfo.txt index f15674efd..9ec8cf56c 100644 --- a/zmapinfo.txt +++ b/zmapinfo.txt @@ -4,20 +4,18 @@ GameInfo PlayerClasses = "Demolitionist" StatusBarClass = "SWWMStatusBar" BackpackType = "HammerspaceEmbiggener" - StatScreen_Single = "SWWMStatScreen_SP" - StatScreen_Coop = "SWWMStatScreen_Coop" - StatScreen_DM = "SWWMStatScreen_DM" + StatScreen_Single = "SWWMStatScreen" QuitSound = "misc/teleport" QuitMessages = "$QUITMSG", "$QUITMSG1", "$QUITMSG2", "$QUITMSG3", "$QUITMSG4", "$QUITMSG5", "$QUITMSG6", "$QUITMSG7", "$QUITMSG8", "$QUITMSG9", "$QUITMSG10", "$QUITMSG11", "$QUITMSG12", "$QUITMSG13", "$QUITMSG14", "$QUITMSG15", - "$QUITMSG16", "$QUITMSG17", "$QUITMSG18", "$QUITMSG19" + "$QUITMSG16", "$QUITMSG17", "$QUITMSG18" ChatSound = "misc/chat" NoMergePickupMsg = true CursorPic = "graphics/swwmcurs.png" DimColor = "Black" - DimAmount = 0.5 + DimAmount = 0.75 BlurAmount = 0 Endoom = "ENDSWWM" PickupColor = "Gold" @@ -43,7 +41,6 @@ GameInfo PrecacheClasses = "Demolitionist", // player // weapons "DeepImpact", - "PusherWeapon", "ItamexHammer", "ExplodiumGun", "DualExplodiumGun", @@ -67,20 +64,6 @@ GameInfo "RafanKos", // gestures and items with gesture states "SWWMGesture", - "SWWMRedCardGesture", - "SWWMBlueCardGesture", - "SWWMYellowCardGesture", - "SWWMSilverCardGesture", - "SWWMGreenCardGesture", - "SWWMOrangeCardGesture", - "SWWMRedSkullGesture", - "SWWMBlueSkullGesture", - "SWWMYellowSkullGesture", - "SWWMPurpleSkullGesture", - "SWWMGreenKeyGesture", - "SWWMBlueKeyGesture", - "SWWMYellowKeyGesture", - "SWWMRedKeyGesture", "GenericCubeGesture", "AkariProjectGesture", "LoveSignalsCDGesture", @@ -88,27 +71,14 @@ GameInfo "FrispyCornGesture", "SayaBeanGesture", "MothPlushyGesture", + "SayasMugGesture", "DemoPlushGesture", - "KirinCummiesGesture", + "KirinSippyGesture", "MilkBreadsGesture", "KirinMangaGesture", "KirinPlushGesture" // preload intro and menu textures - PrecacheTextures = "graphics/SWWMGZLogo.png", - "graphics/SWWMGZLogo_Layer1.png", - "graphics/SWWMGZLogo_Layer2.png", - "graphics/SWWMGZLogo_Layer3.png", - "graphics/SWWMGZLogo_Layer4.png", - "graphics/SWWMGZLogo_Layer5.png", - "graphics/SWWMGZLogo_Layer6.png", - "graphics/M_SWWM.png", - "graphics/M_SWWM_Layer1.png", - "graphics/M_SWWM_Layer2.png", - "graphics/M_SWWM_Layer3.png", - "graphics/M_SWWM_Layer4.png", - "graphics/M_SWWM_Layer5.png", - "graphics/M_SWWM_Layer6.png", - "graphics/M_DEMOCHAN.png", + PrecacheTextures = "graphics/M_DEMOLITIONIST.png", "graphics/NewLogo.png", "graphics/NewLogo_Grad.png", "graphics/NewLogo_Layer1.png", @@ -128,14 +98,12 @@ GameInfo "graphics/NewLogo_Letter11.png", "graphics/NewLogo_Letter12.png", "graphics/NewLogo_Letter13.png", - "graphics/M_DEMOLITIONIST.png", "graphics/M_DEMOCHAN_BIOSPARK.png", "graphics/M_DEMOCHAN_CANDYGUN.png", "graphics/M_DEMOCHAN_DEEPIMPACT.png", "graphics/M_DEMOCHAN_EVISCERATOR.png", "graphics/M_DEMOCHAN_EXPLOGUN.png", "graphics/M_DEMOCHAN_HELLBLAZER.png", - "graphics/M_DEMOCHAN_PUSHER.png", "graphics/M_DEMOCHAN_SILVERBULLET.png", "graphics/M_DEMOCHAN_SPREADGUN.png", "graphics/M_DEMOCHAN_WALLBUSTER.png", @@ -149,7 +117,56 @@ GameInfo "graphics/M_DEMOCHAN_SHELLS.png", "graphics/M_DEMOCHAN_SKULL.png", "graphics/M_DEMOCHAN_THONK.png", - "graphics/M_DEMOCHAN_THUMBUP.png" + "graphics/M_DEMOCHAN_THUMBUP.png", + "graphics/M_DEMOCHAN_HAMMER.png", + "graphics/M_DEMOCHAN_PLASMA.png", + "graphics/M_DEMOCHAN_SHEEN.png", + "graphics/M_DEMOCHAN_QUADRAVOL.png", + "graphics/M_DEMOCHAN_MISTER.png", + // preload canvas textures for some weapons + "models/PlasmaLED_L.png", + "models/PlasmaLED_R.png", + "models/canvas/NukuriFnt.png", + "models/SheenLED.png", + "models/canvas/SheenLEDBase.png", + "models/canvas/SheenLEDBar.png", + "models/canvas/SheenLEDNums.png", + "models/canvas/SheenLEDSpeed.png", + "models/QuadLED.png", + "models/canvas/QuadLEDBase.png", + "models/canvas/QuadLEDCharge.png", + "models/canvas/QuadLEDRound.png", + "models/canvas/RayZap.png", + "models/MortalLED.png", + "models/canvas/MortalBG.png", + "models/canvas/MortalFrameTex.png", + "models/canvas/MortalFireIcons.png", + "models/canvas/MortalGrenadeIcons.png", + "models/MortalLED2.png", + "models/canvas/MortalFlatChars.png", + // preload a few random materials to ensure shaders are compiled + // CanvasProxy.fp, NewLogoAnimated.fp and TexFilterHack.fp + // should already be handled by previous textures in the list + "graphics/dsmapfont.png", // AreaName.fp + "graphics/HUD/DemoFace_Barrier.png", // BarrierFace.fp + "sprites/DVSPA0.png", // Divine.fp + "models/envmap/bluenv.png", // Envmap.fp + "BARRIENV", // Envmap.fp w/ BARRIER_MAP + "ERRORENV", // Envmap.fp w/ AMBIENT_GLOW + "models/Barrier.png", // Envmask.fp + "models/BlastSuit.png", // Envmask.fp w/ ENV_TWOLAYER + "models/DemoBody.png", // Envmask.fp w/ ENV_THREELAYER + "graphics/tempbg.png", // Fuzz.fp + "graphics/HUD/HealthBarS.png", // Fuzz.fp w/ GRAY_COLORS + "graphics/HUD/HealthBarD.png", // HealthBarD.fp + "models/SilverbulletJetSmoke.png", // JetSmoke.fp + "sprites/MKRVA0.png", // Mykradvo.fp + "models/extra/AnomRingies.png", // Mykradvo2.fp + "models/MortalSight.png", // Overbright.fp + "models/PerfectlyGeneric.png", // PerfectlyGeneric.fp + "models/PlasmaBlast_1stR.png", // PlasmaBlast.fp + "sprites/bossbrain/MBRNB0.png", // Whew.fp + "models/YnykronSmoke.png" // YnykronSmoke.fp } ClearSkills @@ -157,33 +174,32 @@ ClearSkills Skill easy { DamageFactor = 0.75 - SpawnFilter = easy + SpawnFilter = 2 ACSReturn = 1 Name = "$SWWM_SKEASY" } Skill normal { - SpawnFilter = normal + SpawnFilter = 3 ACSReturn = 2 Name = "$SWWM_SKNORMAL" DefaultSkill } Skill hard { - MonsterHealth = 1.25 DamageFactor = 1.25 - SpawnFilter = hard + Aggressiveness = 0.25 + SpawnFilter = 4 ACSReturn = 3 Name = "$SWWM_SKHARD" + MustConfirm = "$SWWM_SKHARDCONFIRM" } Skill hardcore { DisableCheats - FastMonsters - MonsterHealth = 1.5 DamageFactor = 1.5 - Aggressiveness = 0.25 - SpawnFilter = nightmare + Aggressiveness = 0.5 + SpawnFilter = 5 SpawnMulti ACSReturn = 4 Name = "$SWWM_SKHARDCORE" @@ -192,18 +208,33 @@ Skill hardcore Skill lunatic { DisableCheats - MonsterHealth = 2.0 DamageFactor = 2.0 - Aggressiveness = 1.0 - SpawnFilter = nightmare + Aggressiveness = 0.5 + SpawnFilter = 5 SpawnMulti + FastMonsters NoInfighting InstantReaction NoPain - ACSReturn = 4 + ACSReturn = 5 Name = "$SWWM_SKLUNATIC" MustConfirm = "$SWWM_SKLUNATICCONFIRM" } +Skill kynikoss +{ + DisableCheats + DamageFactor = 2.0 + Aggressiveness = 1.0 + SpawnFilter = 5 + SpawnMulti + FastMonsters + NoInfighting + InstantReaction + NoPain + ACSReturn = 6 + Name = "$SWWM_SKDRAGON" + MustConfirm = "$SWWM_SKDRAGONCONFIRM" +} Map TITLEMAP "Title Map" { @@ -228,136 +259,75 @@ DoomEdNums 4206904 = FrispyCorn 4206905 = SayaBean 4206906 = MothPlushy + 4206907 = SayasMug // Heretic collectibles - 4206907 = DemoPlush + 4206908 = DemoPlush // Hexen collectibles - 4206908 = KirinCummies - 4206909 = MilkBreads - 4206910 = KirinManga - 4206911 = KirinPlush + 4206909 = KirinSippy + 4206910 = MilkBreads + 4206911 = KirinManga + 4206912 = KirinPlush // ... and the chancebox 4206920 = Chancebox // these are also pp stuff - 4206930 = SWWMDialogueTrigger + 4206930 = SWWMDialogueTriggerGOTCHAEND + 4206931 = SWWMDialogueTriggerSpcEV2BCD + 4206932 = SWWMDialogueTriggerEV2J 4206990 = SWWMGuard 4206991 = SWWMHans 4206992 = SWWMSS 4206993 = SWWMDog -} - -// edited Doom 2 cast to show the Demolitionist at the end -Intermission Doom2Cast -{ - Cast - { - CastClass = "Zombieman" - CastName = "$CC_ZOMBIE" - AttackSound = "Missile", 1, "grunt/attack" - } - Cast - { - CastClass = "ShotgunGuy" - CastName = "$CC_SHOTGUN" - AttackSound = "Missile", 1, "shotguy/attack" - } - Cast - { - CastClass = "ChaingunGuy" - CastName = "$CC_HEAVY" - AttackSound = "Missile", 1, "chainguy/attack" - AttackSound = "Missile", 2, "chainguy/attack" - AttackSound = "Missile", 3, "chainguy/attack" - } - Cast - { - CastClass = "DoomImp" - CastName = "$CC_IMP" - AttackSound = "Missile", 2, "imp/attack" - } - Cast - { - CastClass = "Demon" - CastName = "$CC_DEMON" - AttackSound = "Melee", 1, "demon/melee" - } - Cast - { - CastClass = "LostSoul" - CastName = "$CC_LOST" - AttackSound = "Missile", 1, "skull/melee" - } - Cast - { - CastClass = "Cacodemon" - CastName = "$CC_CACO" - AttackSound = "Missile", 1, "caco/attack" - } - Cast - { - CastClass = "HellKnight" - CastName = "$CC_HELL" - AttackSound = "Missile", 1, "baron/attack" - } - Cast - { - CastClass = "BaronOfHell" - CastName = "$CC_BARON" - AttackSound = "Missile", 1, "baron/attack" - } - Cast - { - CastClass = "Arachnotron" - CastName = "$CC_ARACH" - AttackSound = "Missile", 1, "baby/attack" - } - Cast - { - CastClass = "PainElemental" - CastName = "$CC_PAIN" - AttackSound = "Missile", 2, "skull/melee" - } - Cast - { - CastClass = "Revenant" - CastName = "$CC_REVEN" - AttackSound = "Missile", 1, "skeleton/attack" - AttackSound = "Melee", 1, "skeleton/swing" - AttackSound = "Melee", 3, "skeleton/melee" - } - Cast - { - CastClass = "Fatso" - CastName = "$CC_MANCU" - AttackSound = "Missile", 1, "fatso/attack" - AttackSound = "Missile", 4, "fatso/attack" - AttackSound = "Missile", 7, "fatso/attack" - } - Cast - { - CastClass = "Archvile" - CastName = "$CC_ARCH" - AttackSound = "Missile", 1, "vile/start" - } - Cast - { - CastClass = "SpiderMastermind" - CastName = "$CC_SPIDER" - AttackSound = "Missile", 1, "spider/attack" - AttackSound = "Missile", 2, "spider/attack" - } - Cast - { - CastClass = "Cyberdemon" - CastName = "$CC_CYBER" - AttackSound = "Missile", 1, "weapons/rocklf" - AttackSound = "Missile", 3, "weapons/rocklf" - AttackSound = "Missile", 5, "weapons/rocklf" - } - Cast - { - CastClass = "CastDemolitionist" - CastName = "$CC_HERO" - AttackSound = "Missile", 0, "explodium/fire" - } - Link = Doom2Cast // restart cast call + // Heretic fuckery + 4206999 = Mace + // Legacy of Rust hackery + 4207007 = ID24Ghoul + 4207008 = ID24Banshee + 4207009 = ID24Mindweaver + 4207010 = ID24PlasmaGuy + 4207011 = ID24Vassago + 4207012 = ID24Tyrant + 4207013 = ID24TyrantBoss1 + 4207014 = ID24TyrantBoss2 + 4207100 = ID24GrayStalagmite + 4207101 = ID24LargeCorpsePile + 4207102 = ID24HumanBBQ1 + 4207103 = ID24HumanBBQ2 + 4207104 = ID24HangingBodyBothLegs + 4207105 = ID24HangingBodyBothLegsSolid + 4207106 = ID24HangingBodyCrucified + 4207107 = ID24HangingBodyCrucifiedSolid + 4207108 = ID24HangingBodyArmsBound + 4207109 = ID24HangingBodyArmsBoundSolid + 4207110 = ID24HangingBaronOfHell + 4207111 = ID24HangingBaronOfHellSolid + 4207112 = ID24HangingChainedBody + 4207113 = ID24HangingChainedBodySolid + 4207114 = ID24HangingChainedTorso + 4207115 = ID24HangingChainedTorsoSolid + 4207116 = ID24SkullPoleTrio + 4207117 = ID24SkullGibs + 4207118 = ID24BushShort + 4207119 = ID24BushShortBurned1 + 4207120 = ID24BushShortBurned2 + 4207121 = ID24BushTall + 4207122 = ID24BushTallBurned1 + 4207123 = ID24BushTallBurned2 + 4207124 = ID24CaveRockColumn + 4207125 = ID24CaveStalagmiteLarge + 4207126 = ID24CaveStalagmiteMedium + 4207127 = ID24CaveStalagmiteSmall + 4207128 = ID24CaveStalactiteLarge + 4207129 = ID24CaveStalactiteLargeSolid + 4207130 = ID24CaveStalactiteMedium + 4207131 = ID24CaveStalactiteMediumSolid + 4207132 = ID24CaveStalactiteSmall + 4207133 = ID24CaveStalactiteSmallSolid + 4207134 = ID24OfficeChair + 4207135 = ID24OfficeLamp + 4207137 = ID24CeilingLamp + 4207138 = ID24CandelabraShort + 4207139 = ID24AmbientKlaxon + 4207140 = ID24AmbientPortalOpen + 4207141 = ID24AmbientPortalLoop + 4207142 = ID24AmbientPortalClose } diff --git a/zscript.txt b/zscript.txt index 60baef3fb..d7c802487 100644 --- a/zscript.txt +++ b/zscript.txt @@ -1,34 +1,49 @@ -version "4.7.1" +version "4.15" /* DEMOLITIONIST Main Codebase - (C)2020-2022 Marisa Kirisame, UnSX Team + (C)2020-2026 Mari the Deer This copyright and the attached LICENSE.code file apply to all files included from here, with the exception of any third party libraries */ -// Gutamatics -#include "zscript/swwm_Gutamatics/Include.zsc" // ZPolyobject #include "zscript/swwm_Polyobjects/Polyobjects.zs" // utility code -#include "zscript/utility/swwm_coordutil.zsc" #include "zscript/utility/swwm_utility.zsc" -// base code +#include "zscript/utility/swwm_utility_achievements.zsc" +#include "zscript/utility/swwm_utility_blast.zsc" +#include "zscript/utility/swwm_utility_compat.zsc" +#include "zscript/utility/swwm_utility_info.zsc" +#include "zscript/utility/swwm_utility_item.zsc" +#include "zscript/utility/swwm_utility_map.zsc" +#include "zscript/utility/swwm_utility_math.zsc" +#include "zscript/utility/swwm_utility_string.zsc" +// general code #include "zscript/swwm_common.zsc" #include "zscript/swwm_common_fx.zsc" -#include "zscript/swwm_handler.zsc" -#include "zscript/swwm_statichandler.zsc" #include "zscript/swwm_thinkers.zsc" #include "zscript/swwm_thinkers_player.zsc" -#include "zscript/swwm_player.zsc" -#include "zscript/swwm_player_fx.zsc" -#include "zscript/swwm_player_items.zsc" #include "zscript/swwm_gesture.zsc" #include "zscript/swwm_gesture_fx.zsc" #include "zscript/swwm_blod.zsc" +#include "zscript/swwm_monsters.zsc" +// player code +#include "zscript/player/swwm_player.zsc" +#include "zscript/player/swwm_player_anim.zsc" +#include "zscript/player/swwm_player_cheats.zsc" +#include "zscript/player/swwm_player_extra.zsc" +#include "zscript/player/swwm_player_face.zsc" +#include "zscript/player/swwm_player_fx.zsc" +#include "zscript/player/swwm_player_inventory.zsc" +#include "zscript/player/swwm_player_items.zsc" +#include "zscript/player/swwm_player_move.zsc" +#include "zscript/player/swwm_player_think.zsc" +#include "zscript/player/swwm_player_tick.zsc" // handler code +#include "zscript/handler/swwm_handler.zsc" #include "zscript/handler/swwm_handler_cheats.zsc" +#include "zscript/handler/swwm_handler_crosshair.zsc" #include "zscript/handler/swwm_handler_damage.zsc" #include "zscript/handler/swwm_handler_debugrender.zsc" #include "zscript/handler/swwm_handler_flash.zsc" @@ -39,11 +54,11 @@ version "4.7.1" #include "zscript/handler/swwm_handler_queues.zsc" #include "zscript/handler/swwm_handler_replacements.zsc" #include "zscript/handler/swwm_handler_shaders.zsc" -#include "zscript/handler/swwm_handler_uitick.zsc" #include "zscript/handler/swwm_handler_vanillaboss.zsc" #include "zscript/handler/swwm_handler_worldload.zsc" #include "zscript/handler/swwm_handler_worldthings.zsc" #include "zscript/handler/swwm_handler_worldtick.zsc" +#include "zscript/handler/swwm_statichandler.zsc" #include "zscript/handler/swwm_statichandler_achievements.zsc" // menu code #include "zscript/menu/swwm_menus.zsc" @@ -57,7 +72,14 @@ version "4.7.1" #include "zscript/compat/swwm_shame.zsc" #include "zscript/compat/swwm_hdoom.zsc" // hud +#include "zscript/hud/swwm_dialogue.zsc" #include "zscript/hud/swwm_hud.zsc" +#include "zscript/hud/swwm_hud_target.zsc" +#include "zscript/hud/swwm_hud_topstuff.zsc" +#include "zscript/hud/swwm_hud_inventory.zsc" +#include "zscript/hud/swwm_hud_status.zsc" +#include "zscript/hud/swwm_hud_weapons.zsc" +#include "zscript/hud/swwm_hud_messages.zsc" #include "zscript/hud/swwm_hudextra.zsc" #include "zscript/hud/swwm_hudobjects.zsc" // kbase @@ -72,7 +94,6 @@ version "4.7.1" #include "zscript/kbase/swwm_kbasetab_keychain.zsc" #include "zscript/kbase/swwm_kbasetab_library.zsc" #include "zscript/kbase/swwm_kbasetab_store.zsc" -#include "zscript/kbase/swwm_kbasetab_chat.zsc" #include "zscript/kbase/swwm_kbasetab_help.zsc" #include "zscript/kbase/swwm_kbasetab_secret.zsc" // items @@ -82,7 +103,11 @@ version "4.7.1" #include "zscript/items/swwm_baseammo.zsc" #include "zscript/items/swwm_health.zsc" #include "zscript/items/swwm_armor.zsc" +#include "zscript/items/swwm_armor_filtered.zsc" // Hexen fuckery +#include "zscript/items/swwm_miscitems.zsc" +#include "zscript/items/swwm_lamp.zsc" #include "zscript/items/swwm_powerups.zsc" +#include "zscript/items/swwm_powerups_vip.zsc" #include "zscript/items/swwm_ammoitems.zsc" #include "zscript/items/swwm_ammoextra.zsc" #include "zscript/items/swwm_ammospawn.zsc" @@ -90,14 +115,12 @@ version "4.7.1" #include "zscript/items/swwm_collectibles.zsc" #include "zscript/items/swwm_collectibles_gesture.zsc" #include "zscript/items/swwm_keys.zsc" -#include "zscript/items/swwm_keys_gesture.zsc" // weapons #include "zscript/weapons/swwm_baseweapon.zsc" #include "zscript/weapons/swwm_baseweapon_fx.zsc" #include "zscript/weapons/swwm_baseweapon_melee.zsc" #include "zscript/weapons/swwm_baseweapon_precisechair.zsc" -#include "zscript/weapons/swwm_jackhammer.zsc" -#include "zscript/weapons/swwm_jackhammer_fx.zsc" +#include "zscript/weapons/swwm_baseweapon_ammobuffer.zsc" #include "zscript/weapons/swwm_deepdarkimpact.zsc" #include "zscript/weapons/swwm_deepdarkimpact_fx.zsc" #include "zscript/weapons/swwm_splode.zsc" @@ -106,7 +129,6 @@ version "4.7.1" #include "zscript/weapons/swwm_shot_fx.zsc" #include "zscript/weapons/swwm_cbt.zsc" #include "zscript/weapons/swwm_cbt_fx.zsc" -#include "zscript/weapons/swwm_cbt_ui.zsc" #include "zscript/weapons/swwm_danmaku.zsc" #include "zscript/weapons/swwm_danmaku_fx.zsc" #include "zscript/weapons/swwm_blazeit.zsc" @@ -119,31 +141,30 @@ version "4.7.1" #include "zscript/weapons/swwm_tastytreat_fx.zsc" #include "zscript/weapons/swwm_deathlydeathcannon.zsc" #include "zscript/weapons/swwm_deathlydeathcannon_fx.zsc" -// monsters -#include "zscript/swwm_monsters.zsc" -// DLC1 - Weapon Set -#include "zscript/dlc1/swwm_ammoitems_dlc.zsc" -#include "zscript/dlc1/swwm_hammertime.zsc" -#include "zscript/dlc1/swwm_hammertime_fx.zsc" -#include "zscript/dlc1/swwm_blastin.zsc" -#include "zscript/dlc1/swwm_blastin_fx.zsc" -#include "zscript/dlc1/swwm_rebolber.zsc" -#include "zscript/dlc1/swwm_rebolber_fx.zsc" -#include "zscript/dlc1/swwm_supermarioworld.zsc" -#include "zscript/dlc1/swwm_supermarioworld_fx.zsc" -#include "zscript/dlc1/swwm_heavymahsheengun.zsc" -#include "zscript/dlc1/swwm_heavymahsheengun_fx.zsc" -#include "zscript/dlc1/swwm_notashotgun.zsc" -#include "zscript/dlc1/swwm_notashotgun_fx.zsc" -#include "zscript/dlc1/swwm_blueballs.zsc" -#include "zscript/dlc1/swwm_blueballs_fx.zsc" -#include "zscript/dlc1/swwm_mister.zsc" -#include "zscript/dlc1/swwm_mister_fx.zsc" -#include "zscript/dlc1/swwm_thiccbolts.zsc" -#include "zscript/dlc1/swwm_thiccbolts_fx.zsc" -#include "zscript/dlc1/swwm_ultimate.zsc" -#include "zscript/dlc1/swwm_ultimate_fx.zsc" -// DLC2 - Game Set -#include "zscript/dlc2/swwm_demoland.zsc" -#include "zscript/dlc2/swwm_demoshmup.zsc" -#include "zscript/dlc2/swwm_demoquest.zsc" +#include "zscript/weapons/swwm_deathlydeathcannon_altfx.zsc" // split due to size +#include "zscript/weapons/swwm_weapons_hud.zsc" +#include "zscript/weapons/swwm_weapons_canvas.zsc" +// additional weapons +#include "zscript/dlc/swwm_ammoitems_dlc.zsc" +#include "zscript/dlc/swwm_hammertime.zsc" +#include "zscript/dlc/swwm_hammertime_fx.zsc" +//#include "zscript/dlc/swwm_blastin.zsc" +//#include "zscript/dlc/swwm_blastin_fx.zsc" +//#include "zscript/dlc/swwm_rebolber.zsc" +//#include "zscript/dlc/swwm_rebolber_fx.zsc" +//#include "zscript/dlc/swwm_supermarioworld.zsc" +//#include "zscript/dlc/swwm_supermarioworld_fx.zsc" +#include "zscript/dlc/swwm_heavymahsheengun.zsc" +#include "zscript/dlc/swwm_heavymahsheengun_fx.zsc" +#include "zscript/dlc/swwm_notashotgun.zsc" +#include "zscript/dlc/swwm_notashotgun_fx.zsc" +//#include "zscript/dlc/swwm_blueballs.zsc" +//#include "zscript/dlc/swwm_blueballs_fx.zsc" +#include "zscript/dlc/swwm_mister.zsc" +#include "zscript/dlc/swwm_mister_fx.zsc" +//#include "zscript/dlc/swwm_thiccbolts.zsc" +//#include "zscript/dlc/swwm_thiccbolts_fx.zsc" +//#include "zscript/dlc/swwm_ultimate.zsc" +//#include "zscript/dlc/swwm_ultimate_fx.zsc" +#include "zscript/dlc/swwm_dlcweapons_hud.zsc" +#include "zscript/dlc/swwm_dlcweapons_canvas.zsc" diff --git a/zscript/compat/swwm_compat.zsc b/zscript/compat/swwm_compat.zsc index 6c59109a3..3477f9fe7 100644 --- a/zscript/compat/swwm_compat.zsc +++ b/zscript/compat/swwm_compat.zsc @@ -1,5 +1,5 @@ // level compatibility scripts -// sometimes shit breaks, or certain changes are needed for balance or to mesh +// sometimes stuff breaks, or certain changes are needed for balance or to mesh // with the mod's mechanics better, this is here for that Class SWWMLevelCompatibility : LevelPostProcessor @@ -7,7 +7,7 @@ Class SWWMLevelCompatibility : LevelPostProcessor private void EquinoxBossBrainHandle( uint lineno, int sectortag ) { // don't spawn boss brains until it's time to crush them - for ( int i=0; i= 3007) && (ednum <= 3014)) + || ((ednum >= 3100) && (ednum <= 3142)) ) + SetThingEdNum(i,ednum+4204000); + } + break; + case 'F206766043C4D9BA2C36F76106F96279': + case 'FCF009C63BBA5F8CEE71ED5EC0B02CDA': + // ALL of Equinox + case '9705315427A2F951A538B23C39199236': + case '54E9953A3C1A88641E00AA353BAF46E9': + case 'DD3986E184829DAB73160F4C122155F9': + case 'B3E6CAE9983EA1DC4D9544DA26118569': + case '3E4DFC55EAE85A7FE02DD21ED33AABCA': + case 'ECCB69F1BBF91D8F67D8583EA2546863': + case 'E66BCCFAD7AC40EFB21E2A19131E1522': + case 'A0B6B83DC8BD50FC84170572840DE585': + case '9BA1ACB72D878AFA3CB22B810D6CCD9A': + case 'A26749D9B9CD70ECED5C7B6BAB6D859E': + case '3805A661D5C4523AFF7BF86991071043': + case 'F91E3FE225F10EECBE21486E1BB14834': + case '838BA30EB0B003C070414093BFDFA72A': + // replace certain animated flats with duplicates + // this avoids unintended TERRAIN defs from applying to them + level.ReplaceTextures("SLIME01","EQNXSL01",0); + level.ReplaceTextures("SLIME02","EQNXSL02",0); + level.ReplaceTextures("SLIME03","EQNXSL03",0); + level.ReplaceTextures("SLIME04","EQNXSL04",0); + level.ReplaceTextures("SLIME09","EQNXSL09",0); + level.ReplaceTextures("SLIME10","EQNXSL10",0); + level.ReplaceTextures("SLIME11","EQNXSL11",0); + level.ReplaceTextures("SLIME12","EQNXSL12",0); + level.ReplaceTextures("BLOOD1","EQNXBLD1",0); + level.ReplaceTextures("BLOOD2","EQNXBLD2",0); + level.ReplaceTextures("BLOOD3","EQNXBLD3",0); + level.ReplaceTextures("RROCK05","EQNXRR05",0); + level.ReplaceTextures("RROCK06","EQNXRR06",0); + level.ReplaceTextures("RROCK07","EQNXRR07",0); + level.ReplaceTextures("RROCK08","EQNXRR08",0); + break; + // ALL of Doom Vacation + case 'D07842872226058F93D0957EA46ED782': + case 'F286BABF0D152259CD6B996E8920CA70': + case '7E2707328B6BCF0ACDC2E80049E21167': + case '8AA3E9B8E816E72A04368404402DD8E3': + case '8B28736D01492F3701CCD736C97EF125': + case '10D3C12050518E806801B12057437403': + case '48A7FC1AF2D1CCBFE7C6EFB4EEE97A50': + case '73B317A0DA2C75BD903E895A27EEEDB9': + case '62158F76FC56B62007C1F167A7921304': + case '0D33878E4C8164A792AECCDA56F08D60': + case 'A52BD2038CF814101AAB7D9C78F9ACE2': + case 'F6413AFAEB73B3848A82F70C2A01E47D': + case 'F8CBDC96A7E08CAFC5D7C0E711551E40': + case '3E821CC90C38B7D71DDEB0324D3900CC': + case '05D0AA06742B3C7DCD79E5F659267656': + case '8F6710E3570C2056FDCA591EF89B31A9': + case '382E99BBFA9301110630CD5F8F8056DA': + case '480F6AD2D2E266DA745FD8FA75EC327D': + case '968D97F5952E55DB2464274A8EE5F529': + case '5669E396BEDDEA6D90EF5AF5EC892811': + // get rid of these dumb skulltag ctf actors + for ( uint i=0; i Maces; + Maces.Clear(); + for ( uint i=0; i= callout_len+32) && !(timer%16) ) + { + double ptch = FRandom[hdscreen](.95,1.05); + S_StartSound("hdoom/bonk",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE,ptch); + S_StartSound("hdoom/bonk",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE,ptch); + } + timer++; } override void RenderOverlay( RenderEvent e ) { - if ( !detected || (timer < 50) || (timer > 150) ) return; - if ( !scr ) scr = TexMan.CheckForTexture("graphics/hdscreen.png",TexMan.Type_Any); - double ar = Screen.GetAspectRatio(); - Vector2 tsize = TexMan.GetScaledSize(scr); - Vector2 vsize = (Screen.GetWidth(),Screen.GetHeight()); - if ( (tsize.x > vsize.x) || (tsize.y > vsize.y) ) - { - double sar = tsize.x/tsize.y; - if ( sar > ar ) vsize = (tsize.x,tsize.x/ar); - else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y); - else vsize = tsize; - } - double alph = clamp(2.5-(timer+e.FracTic)/50.,0.,.25)*4.; - Screen.DrawTexture(scr,false,(vsize.x-tsize.x)/2.,(vsize.y-tsize.y)/2.,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alph); + if ( !detected || (timer < callout_len+24) ) return; + if ( !mBigFont ) mBigFont = Font.GetFont('TewiFontOutline'); + double scl = max(min(floor(Screen.GetWidth()/120.),floor(Screen.GetHeight()/100)),1.); + double iscl = scl/4.; + double ox = Screen.GetWidth()/2; + double oy = Screen.GetHeight()/2-4*scl; + String str = "HORNY"; + double alf = clamp(16-((timer%16)+e.FracTic)*2,0,16)/16.; + SetUIRandom(MSTime()/10); + Vector2 ofs = (RandomShiver(),RandomShiver())*3.*scl*alf; + Screen.DrawText(mBigFont,Font.CR_SAPPHIRE,ox-(mBigFont.StringWidth(str)*scl*2)/2+ofs.x,oy+8*scl+ofs.y,str,DTA_ScaleX,scl*2,DTA_ScaleY,scl*2); + Screen.DrawText(mBigFont,Font.FindFontColor('MiniFlash'),ox-(mBigFont.StringWidth(str)*scl*2)/2+ofs.x,oy+8*scl+ofs.y,str,DTA_ScaleX,scl*2,DTA_ScaleY,scl*2,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alf); + double phase = cos(((timer+e.FracTic)-32)*22.5)*.5+.5; + Screen.DrawTexture(bonker,false,ox+18*scl,oy,DTA_ScaleX,iscl,DTA_ScaleY,iscl,DTA_Rotate,-15+phase*5); + Screen.DrawTexture(bonked,false,ox-22*scl,oy,DTA_ScaleX,iscl,DTA_ScaleY,iscl*(1.-max(phase-.8,0.)),DTA_Rotate,5-phase*5); + Screen.DrawTexture(bonk,false,ox+10*scl,oy+2*scl,DTA_ScaleX,iscl,DTA_ScaleY,iscl,DTA_Rotate,-45+phase*45); } } diff --git a/zscript/compat/swwm_shame.zsc b/zscript/compat/swwm_shame.zsc index 5a8a91018..7e1e5e983 100644 --- a/zscript/compat/swwm_shame.zsc +++ b/zscript/compat/swwm_shame.zsc @@ -1,55 +1,56 @@ // SHAMEFUL DISPLAY -// At this point there's no clearer way to tell people to stop combining -// incompatible mods. -// The BD crowd never listens, never learns, you can't just mix up gameplay -// mods and expect everything to work. -// You also can't expect modders to put in the effort needed to go and add -// compatibility for a mod that wouldn't even make any sense to add -// compatibility for because both replace the same things and are entirely -// different beasts with different styles altogether. -// Just stop. Put that gray matter to use. Do you really think it's worth it? -// Don't do this shit. +// Hello yes how do I explain this? +// +// Some people try to autoload this stuff without realizing that not all big +// gameplay mods can be combined just like that, they will break in funky ways™ +// +// For those who are not aware, there are "monsters only" versions of these +// types of mods, and you can load them fine, they should just work™ +// +// Still, if you insist on doing "the funny thing", this event handler is there +// so you know what I think of your attempt at being funny +// +// So, yeah, thanks for giving me an excuse to make this silly script +// +// PS: I actually like Project Brutality, no joke +// Brutal Doom is still poopy junk tho, every single fork of it is better +// (except Black Edition, that one is just embarrassing) Class SWWMBrutalHandler : StaticEventHandler { + Mixin SWWMUIRandom; + ui int timer; - ui TextureID scr; + ui Font fnt; + ui TextureID eztex[7]; + ui bool ezstate[7]; + ui float ezslide[4]; + ui String eztext[5]; + ui BrokenLines ezlines[5]; + ui Vector2 eztextpos[5]; + ui double ezlinesw[5]; + ui int ezcolor[5]; bool detected; - String which, whichshort; override void OnRegister() { - if ( swwm_iseriouslywanttoplaythiswithbd ) - return; - for ( int i=0; i \cx┃\c-\n" + "\cx┃ \cfIf you have BD on your autoload you really shouldn't.\cx ┃\c-\n" + "\cx┃ \cfIf you manually loaded it with this mod, why would you?\cx ┃\c-\n" + "\cx┃ \cfThey're not compatible and never will be.\cx ┃\c-\n" + "\cx┃ \cfThis mod will now shit the bed once you go in-game,\cx ┃\c-\n" + "\cx┃ \cfand trust me, it's better this way.\cx ┃\c-\n" + "\cx┃ \cf\cx ┃\c-\n" "\cx┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\c-"); - S_StartSound("compat/warn",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + S_StartSound("compat/warn",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); } override void WorldLoaded( WorldEvent e ) @@ -61,18 +62,85 @@ Class SWWMBrutalHandler : StaticEventHandler override void UiTick() { - if ( !detected ) return; - if ( gamestate == GS_LEVEL ) + if ( !detected || (gamestate != GS_LEVEL) ) { - if ( timer == 1 ) - { - S_StartSound("brutal/ezmodo",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - S_StartSound("brutal/ezmodo",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - } - else if ( timer == 350 ) ThrowAbortException("This manual abort is for your own safety"); - timer++; + timer = 0; + return; } - else timer = 0; + switch ( timer ) + { + case 50: + eztex[0] = TexMan.CheckForTexture("graphics/BDScreen/BDBorder.png"); + eztex[1] = TexMan.CheckForTexture("graphics/BDScreen/BDSaya.png"); + eztex[2] = TexMan.CheckForTexture("graphics/BDScreen/BDDemo.png"); + eztex[3] = TexMan.CheckForTexture("graphics/BDScreen/BDBubble0.png"); + eztex[4] = TexMan.CheckForTexture("graphics/BDScreen/BDBubble1.png"); + eztex[5] = TexMan.CheckForTexture("graphics/BDScreen/BDBubble2.png"); + eztex[6] = TexMan.CheckForTexture("graphics/BDScreen/BDBubble3.png"); + for ( int i=0; i<6; i++ ) ezstate[i] = false; + for ( int i=0; i<4; i++ ) ezslide[i] = 1400.; + eztext[0] = "Eeeeeh?\nReally\nnow\n!?"; + eztext[1] = "\c[BDRed]Brutal\nDoom\c-?\n\nThat's\ncringe"; + eztext[2] = "Only a\ncomplete\nfool\nwould try\nto load\n\c[BDRed]Brutal Doom\c-\nwith\nother game-\nplay mods,\nright?"; + eztext[3] = "Ha\nha\nha\nha"; + eztext[4] = "Ki\nhi\nhi\nhi"; + eztextpos[0] = (1250.,50.); + eztextpos[1] = (810.,790.); + eztextpos[2] = (40.,70.); + eztextpos[3] = (50.,830.); + eztextpos[4] = (150.,830.); + ezcolor[0] = Font.FindFontColor('BDSayaRed'); + ezcolor[1] = Font.FindFontColor('BDSayaRed'); + ezcolor[2] = Font.FindFontColor('BDDemoGreen'); + ezcolor[3] = Font.FindFontColor('BDDemoGreen'); + ezcolor[4] = Font.FindFontColor('BDSayaRed'); + fnt = Font.GetFont('TewiFontOutline'); + for ( int i=0; i<5; i++ ) + { + ezlines[i] = fnt.BreakLines(eztext[i],500); + ezlinesw[i] = 0.; + for ( int j=0; j vsize.x) || (tsize.y > vsize.y) ) + Screen.Dim(0xFF000000,clamp((timer+e.fractic)/50.,0.,.5),0,0,Screen.GetWidth(),Screen.GetHeight()); + if ( timer < 50 ) return; + double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.)/3.; + Vector2 pos = ((Screen.GetWidth()-(1400.*hs))/2.,(Screen.GetHeight()-(1050.*hs))/2.); + if ( timer > 300 ) { - double sar = tsize.x/tsize.y; - if ( sar > ar ) vsize = (tsize.x,tsize.x/ar); - else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y); - else vsize = tsize; + double fact = clamp(((timer+e.fractic)-300.)/100.,0.,1.); + Screen.Dim(0xFFFF0000,fact,0,0,Screen.GetWidth(),Screen.GetHeight(),STYLE_Add); + SetUIRandom(MSTime()/10); + pos.x += RandomShiver()*64.*hs*fact*fact; + pos.y += RandomShiver()*64.*hs*fact*fact; } - Screen.DrawTexture(scr,false,(vsize.x-tsize.x)/2.+FRandom[bdscreen](-1,1)*max(timer-40,0)**3*.000003,(vsize.y-tsize.y)/2.+FRandom[bdscreen](-1,1)*max(timer-40,0)**3*.000003,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,min(1.,timer/50.)); - Screen.Dim("Red",(timer/70.)-3.5,0,0,Screen.GetWidth(),Screen.GetHeight()); + Screen.SetClipRect(int(pos.x),int(pos.y),int(1400.*hs),int(1050.*hs)); + Screen.Dim(0xFFFFFFFF,1.,int(pos.x),int(pos.y),int(1400.*hs),int(1050.*hs)); + SetUIRandom(MSTime()/40); + for ( int i=0; i<6; i++ ) + { + double ypos = RandomOffset()*1050.*hs; + Screen.DrawThickLine(pos.x,pos.y+ypos,pos.x+1400.*hs,pos.y+ypos,4.*hs,0xFF000000); + } + for ( int i=0; i<12; i++ ) + { + double ypos = RandomOffset()*1050.*hs; + Screen.DrawThickLine(pos.x,pos.y+ypos,pos.x+1400.*hs,pos.y+ypos,hs,0xFF000000); + } + if ( ezstate[1] ) + Screen.DrawTexture(eztex[2],false,pos.x+SWWMUtility.Lerp(ezslide[3],ezslide[2],e.fractic),pos.y,DTA_ScaleX,hs,DTA_ScaleY,hs); + if ( ezstate[0] ) + Screen.DrawTexture(eztex[1],false,pos.x+SWWMUtility.Lerp(ezslide[1],ezslide[0],e.fractic),pos.y,DTA_ScaleX,hs,DTA_ScaleY,hs); + for ( int i=0; i<5; i++ ) + { + if ( !ezstate[2+i] ) continue; + if ( i<4 ) Screen.DrawTexture(eztex[3+i],false,pos.x,pos.y,DTA_ScaleX,hs,DTA_ScaleY,hs); + for ( int j=0; j 300 ) + Screen.Dim(0xFFFF0000,clamp(((timer+e.fractic)-350.)/50.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight(),STYLE_Translucent); } } diff --git a/zscript/dlc/swwm_ammoitems_dlc.zsc b/zscript/dlc/swwm_ammoitems_dlc.zsc new file mode 100644 index 000000000..cd1e35ddf --- /dev/null +++ b/zscript/dlc/swwm_ammoitems_dlc.zsc @@ -0,0 +1,395 @@ +// All DLC weapon ammo pickups + +/*Class SMW05Ammo : SWWMAmmo +{ + Default + { + Tag "$T_SMW05BULLET"; + SWWMAmmo.PickupTag "SMW05BULLET"; + Stamina 600; + Inventory.Amount 1; + Inventory.MaxAmount 90; + Ammo.BackpackAmount 6; + Ammo.BackpackMaxAmount 210; + Ammo.DropAmount 3; + Accuracy 20; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class SMW05Ammo2 : SMW05Ammo +{ + Default + { + Inventory.Amount 2; + } +} +Class SMW05Ammo3 : SMW05Ammo +{ + Default + { + Inventory.Amount 3; + } +} +Class SMW05SmallAmmo : SMW05Ammo +{ + Default + { + Inventory.Amount 6; + } +} +Class SMW05BigAmmo : SMW05Ammo +{ + Default + { + Inventory.Amount 30; + } +}*/ + +Class SheenAmmo : SWWMAmmo +{ + Default + { + Tag "$T_SHEENBULLET"; + SWWMAmmo.PickupTag "SHEENBULLET"; + Stamina 1500; + Inventory.Amount 1; + Inventory.MaxAmount 300; + Ammo.BackpackAmount 10; + Ammo.BackpackMaxAmount 500; + Ammo.DropAmount 20; + Accuracy 30; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class SheenAmmo2 : SheenAmmo +{ + Default + { + Inventory.Amount 2; + } +} +Class SheenAmmo3 : SheenAmmo +{ + Default + { + Inventory.Amount 3; + } +} +Class SheenSmallAmmo : SheenAmmo +{ + Default + { + Inventory.Amount 10; + } +} +Class SheenBigAmmo : SheenAmmo +{ + Default + { + Inventory.Amount 50; + } +} + +Class QuadravolAmmo : SWWMAmmo +{ + Default + { + Tag "$T_QUADAMMO"; + SWWMAmmo.PickupTag "QUADAMMO"; + Stamina 10000; + Inventory.Amount 1; + Inventory.MaxAmount 48; + Ammo.BackpackAmount 4; + Ammo.BackpackMaxAmount 80; + Ammo.DropAmount 1; + Accuracy 45; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class QuadravolAmmo2 : QuadravolAmmo +{ + Default + { + Inventory.Amount 2; + } +} +Class QuadravolAmmo3 : QuadravolAmmo +{ + Default + { + Inventory.Amount 3; + } +} + +/*Class SparksterBAmmo : SWWMAmmo +{ + Default + { + Tag "$T_SPARKBCELL"; + SWWMAmmo.PickupTag "SPARKBCELL"; + Stamina 16000; + Inventory.Amount 1; + Inventory.MaxAmount 16; + Ammo.BackpackAmount 1; + Ammo.BackpackMaxAmount 40; + Ammo.DropAmount 1; + Accuracy 70; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class SparksterBAmmo2 : SparksterBAmmo +{ + Default + { + Inventory.Amount 2; + } +} +Class SparksterBAmmo3 : SparksterBAmmo +{ + Default + { + Inventory.Amount 3; + } +} + +Class SparksterRAmmo : SWWMAmmo +{ + Default + { + Tag "$T_SPARKRCELL"; + SWWMAmmo.PickupTag "SPARKRCELL"; + Stamina 18000; + Inventory.Amount 1; + Inventory.MaxAmount 16; + Ammo.BackpackAmount 1; + Ammo.BackpackMaxAmount 40; + Ammo.DropAmount 1; + Accuracy 75; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class SparksterRAmmo2 : SparksterRAmmo +{ + Default + { + Inventory.Amount 2; + } +} +Class SparksterRAmmo3 : SparksterRAmmo +{ + Default + { + Inventory.Amount 3; + } +} + +Class RayBolt : MagAmmo +{ + Default + { + Tag "$T_RAYBOLT"; + MagAmmo.PickupTag "RAYBOLT"; + Stamina -8000; + MagAmmo.ParentAmmo 'RayAmmo'; + MagAmmo.ClipSize 10; + MagAmmo.BackpackAmount 2; + Inventory.MaxAmount 10; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class RayBolt2 : RayBolt +{ + Default + { + Inventory.Amount 2; + } +} +Class RayBolt5 : RayBolt +{ + Default + { + Inventory.Amount 5; + } +} + +Class RayAmmo : SWWMAmmo +{ + Default + { + Tag "$T_RAYAMMO"; + SWWMAmmo.PickupTag "RAYAMMO"; + Stamina 90000; + Inventory.Amount 1; + Inventory.MaxAmount 3; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 5; + Ammo.DropAmount 1; + SWWMAmmo.MagAmmoType 'RayBolt'; + Accuracy 90; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +}*/ + +Class MisterRound : MagAmmo +{ + Default + { + Tag "$T_MRROUND"; + MagAmmo.PickupTag "MRROUND"; + Stamina -16000; + MagAmmo.ParentAmmo 'MisterAmmo'; + MagAmmo.ClipSize 12; + MagAmmo.BackpackAmount 1; + Inventory.MaxAmount 12; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class MisterRound2 : MisterRound +{ + Default + { + Inventory.Amount 2; + } +} +Class MisterRound3 : MisterRound +{ + Default + { + Inventory.Amount 3; + } +} +Class MisterRound5 : MisterRound +{ + Default + { + Inventory.Amount 5; + } +} + +Class MisterAmmo : SWWMAmmo +{ + Default + { + Tag "$T_MRAMMO"; + SWWMAmmo.PickupTag "MRAMMO"; + Stamina 200000; + Inventory.Amount 1; + Inventory.MaxAmount 1; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 3; + Ammo.DropAmount 1; + SWWMAmmo.MagAmmoType 'MisterRound'; + Accuracy 90; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} + +Class MisterGAmmo : SWWMAmmo +{ + Default + { + Tag "$T_MRGRENADE"; + SWWMAmmo.PickupTag "MRGRENADE"; + Stamina 320000; + Inventory.Amount 1; + Inventory.MaxAmount 2; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 4; + Ammo.DropAmount 1; + Accuracy 90; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} + +/*Class UltimatePod : MagAmmo +{ + Default + { + Tag "$T_ULTIMATEPOD"; + MagAmmo.PickupTag "ULTIMATEPOD"; + Stamina -400000; + Inventory.PickupSound "misc/bullet_pkup_vip"; + MagAmmo.ParentAmmo 'UltimateAmmo'; + MagAmmo.ClipSize 4; + Inventory.MaxAmount 4; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} + +Class UltimateAmmo : SWWMAmmo +{ + Default + { + Tag "$T_ULTIMATEAMMO"; + SWWMAmmo.PickupTag "ULTIMATEAMMO"; + Inventory.PickupSound "misc/ammo_pkup_vip"; + Stamina -2000000; + Inventory.Amount 1; + Inventory.MaxAmount 1; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 2; + Ammo.DropAmount 1; + SWWMAmmo.MagAmmoType 'UltimatePod'; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +}*/ diff --git a/zscript/dlc/swwm_blastin.zsc b/zscript/dlc/swwm_blastin.zsc new file mode 100644 index 000000000..592617646 --- /dev/null +++ b/zscript/dlc/swwm_blastin.zsc @@ -0,0 +1,76 @@ +// Nuutek Plasma Blaster (from SWWM series) +// Slot 2, spawns shared with Explodium Gun + +/* + dev notes: + + - very low recoil per shot, except for altfire + - chargelevel is used as a timer, once reached, release altfire to + spend entire clipcount for alt projectile, with damage, size and + lifespan scaling with clipcount + - idea for projectile include solid "glob" with glowing tail, as well + as various particle trails and lingering "beams" + - lingering beams will use bezier curves to follow trailing points that + gradually move away, with alpha interpolating between them based on + their own lifespan as well (no idea how hard this will be to + implement but that's part of the fun, really) + - originally intended to have a very verbose display, but that may not + be a great idea and I need to look into a more "ergonomic" design +*/ + +Class PlasmaBlast : SWWMWeapon +{ + int clipcount, chargelevel; + + Property ClipCount : clipcount; + + Default + { + Tag "$T_PLASMABLAST"; + Inventory.Icon "graphics/HUD/Icons/W_PlasmaBlast.png"; + Inventory.PickupMessage "$T_PLASMABLAST"; + Obituary "$O_PLASMABLAST"; + SWWMWeapon.Tooltip "$TT_PLASMABLAST"; + SWWMWeapon.GetLine "getplasmablast1"; + Weapon.SlotNumber 2; + Weapon.SlotPriority 3.; + Weapon.SelectionOrder 1100; + Inventory.MaxAmount 2; + Weapon.SisterWeapon 'DualPlasmaBlast'; + Stamina 7000; + PlasmaBlast.ClipCount 8; + +WEAPON.EXPLOSIVE; + +SWWMWEAPON.HASSCRTEX; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} + +Class DualPlasmaBlast : SWWMWeapon +{ + int clipcount; + + Property ClipCount : clipcount; + + Default + { + Tag "$T_PLASMABLAST2"; + Obituary "$O_PLASMABLAST"; + SWWMWeapon.Tooltip "$TT_PLASMABLAST2"; + SWWMWeapon.GetLine "getplasmablast2"; + SWWMWeapon.NumCrosshairs 2; + Weapon.SlotNumber 2; + Weapon.SlotPriority 4.; + Weapon.SelectionOrder 1050; + Weapon.SisterWeapon 'PlasmaBlast'; + DualPlasmaBlast.ClipCount 8; + +WEAPON.EXPLOSIVE; + +SWWMWEAPON.HIDEINMENU; + +SWWMWEAPON.NOSWAPWEAPON; + +SWWMWEAPON.HASSCRTEX; + } +} diff --git a/zscript/dlc1/swwm_blastin_fx.zsc b/zscript/dlc/swwm_blastin_fx.zsc similarity index 100% rename from zscript/dlc1/swwm_blastin_fx.zsc rename to zscript/dlc/swwm_blastin_fx.zsc diff --git a/zscript/dlc/swwm_blueballs.zsc b/zscript/dlc/swwm_blueballs.zsc new file mode 100644 index 000000000..2a8494729 --- /dev/null +++ b/zscript/dlc/swwm_blueballs.zsc @@ -0,0 +1,60 @@ +// Tach-Engine & Nekuratek Sparkster x3 (from UnSX 2) +// Slot 7, spawns shared with Biospark Carbine + +/* + dev notes: + + - the general idea for primary fire is a projectile akin to the asmd + ball, just with far more splash damage, closer to a rocket in damage + perhaps + - the altfire will be a single projectile at first, which will quickly + explode forwards into a cloud of nokron (akin to the old hellblazer + ravagers), the cloud will have some conical spread to it, but not + a lot + - the combo fire is going to be more or less identical to that of the + UT99 incarnation of the weapon, complete with the tail of rotating + rings (though initially accidental, it has a very charming look) + - obviously, as it is a nokorokinylum projectile, it will also have + the lingering beams as well like in the plasma blast + - charge level is based on how long each trigger is held, up to a + certain cap, and it only really affects damage scaling as well as + splash radius +*/ + +Class ModernSparkster : SWWMWeapon +{ + int clipcount, clipcount2; + int chargelevel, chargelevel2; + + Property ClipCount : clipcount; + Property ClipCount2 : clipcount2; + + Default + { + Tag "$T_NEWSPARKSTER"; + Inventory.PickupMessage "$I_NEWSPARKSTER"; + Obituary "$O_NEWSPARKSTER"; + SWWMWeapon.Tooltip "$TT_NEWSPARKSTER"; + SWWMWeapon.GetLine "getnewsparkster"; + Weapon.SlotNumber 7; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 550; + Weapon.AmmoType1 'SparksterBAmmo'; + Weapon.AmmoGive1 1; + Weapon.AmmoType2 'SparksterRAmmo'; + Weapon.AmmoGive2 1; + SWWMWeapon.DropAmmoType 'SWWMCellAmmoSmall'; + ModernSparkster.ClipCount 4; + ModernSparkster.ClipCount2 4; + Stamina 220000; + +SWWMWEAPON.NOFIRSTGIVE; + +SWWMWEAPON.HASSCRTEX; + +WEAPON.EXPLOSIVE; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/zscript/dlc1/swwm_blueballs_fx.zsc b/zscript/dlc/swwm_blueballs_fx.zsc similarity index 100% rename from zscript/dlc1/swwm_blueballs_fx.zsc rename to zscript/dlc/swwm_blueballs_fx.zsc diff --git a/zscript/dlc/swwm_dlcweapons_canvas.zsc b/zscript/dlc/swwm_dlcweapons_canvas.zsc new file mode 100644 index 000000000..65245ea9d --- /dev/null +++ b/zscript/dlc/swwm_dlcweapons_canvas.zsc @@ -0,0 +1,312 @@ +// RenderTexture code for DLC weapons + +// Plasma Blaster +/*extend Class PlasmaBlast +{ + override void RenderTexture( RenderEvent e ) + { + // ammo display + // dynamic glow + } +} + +extend Class DualPlasmaBlast +{ + override void RenderTexture( RenderEvent e ) + { + // render right-hand weapon's scripted textures as well + SWWMWeapon(SisterWeapon).RenderTexture(e); + // ammo display + // dynamic glow + } +} + +// Puntzer Gamma +extend Class PuntzerGamma +{ + override void RenderTexture( RenderEvent e ) + { + // ammo display + } +}*/ + +// Sheen HMG +extend Class HeavyMahSheenGun +{ + transient ui Canvas AmmoLed; + ui TextureID AmmoLedBase, AmmoLedBar, AmmoLedSpeed, AmmoLedNums; + + override void RenderTexture( RenderEvent e ) + { + if ( !AmmoLed ) AmmoLed = TexMan.GetCanvas("SHEENLED"); + if ( !AmmoLedBase ) AmmoLedBase = TexMan.CheckForTexture("models/canvas/SheenLEDBase.png"); + if ( !AmmoLedBar ) AmmoLedBar = TexMan.CheckForTexture("models/canvas/SheenLEDBar.png"); + if ( !AmmoLedSpeed ) AmmoLedSpeed = TexMan.CheckForTexture("models/canvas/SheenLEDSpeed.png"); + if ( !AmmoLedNums ) AmmoLedNums = TexMan.CheckForTexture("models/canvas/SheenLEDNums.png"); + int d1 = Ammo1.Amount%10; + int d2 = (Ammo1.Amount/10)%10; + int d3 = (Ammo1.Amount/100)%10; + AmmoLed.DrawTexture(AmmoLedBase,false,0,0,DTA_Color,0xFF00FF00); + AmmoLed.DrawTexture(AmmoLedSpeed,false,16,16,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==0)?0xFF80FF00:0xFF408000,DTA_LegacyRenderStyle,STYLE_Add); + AmmoLed.DrawTexture(AmmoLedSpeed,false,48,16,DTA_SrcY,16,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==1)?0xFFFFFF00:0xFF808000,DTA_LegacyRenderStyle,STYLE_Add); + AmmoLed.DrawTexture(AmmoLedSpeed,false,80,16,DTA_SrcY,32,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==2)?0xFFFF8000:0xFF804000,DTA_LegacyRenderStyle,STYLE_Add); + if ( incooldown ) + AmmoLed.DrawTexture(AmmoLedNums,false,16,32,DTA_SrcX,64,DTA_SrcY,64,DTA_SrcWidth,96,DTA_SrcHeight,64,DTA_DestWidth,96,DTA_DestHeight,64,DTA_Color,((gametic%8)>=4)?0xFFFF0000:0xFF800000,DTA_LegacyRenderStyle,STYLE_Add); + else + { + Vector3 rgb = SWWMUtility.HSVtoRGB(((Ammo1.Amount/4.)/Ammo1.MaxAmount,1.,1.)); + Color numcol = Color(255,int(rgb.x*255),int(rgb.y*255),int(rgb.z*255)); + Color blkcol = Color(255,int(rgb.x*128),int(rgb.y*128),int(rgb.z*128)); + AmmoLed.DrawTexture(AmmoLedNums,false,16,32,DTA_SrcX,(d3%8)*32,DTA_SrcY,(d3/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3)?blkcol:numcol,DTA_LegacyRenderStyle,STYLE_Add); + AmmoLed.DrawTexture(AmmoLedNums,false,48,32,DTA_SrcX,(d2%8)*32,DTA_SrcY,(d2/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3&&!d2)?blkcol:numcol,DTA_LegacyRenderStyle,STYLE_Add); + AmmoLed.DrawTexture(AmmoLedNums,false,80,32,DTA_SrcX,(d1%8)*32,DTA_SrcY,(d1/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3&&!d2&&!d1)?blkcol:numcol,DTA_LegacyRenderStyle,STYLE_Add); + } + double ht = barrelheat*.96; + AmmoLed.DrawTexture(AmmoLedBar,false,16,100,DTA_SrcWidth,ht,DTA_DestWidthF,ht,DTA_Color,0xFFFF0000,DTA_LegacyRenderStyle,STYLE_Add); + } +} + +// Quadravol +extend Class Quadravol +{ + transient ui Canvas AmmoLed; + ui TextureID AmmoLedBase, AmmoLedRound, AmmoLedCharge; + + override void RenderTexture( RenderEvent e ) + { + if ( !AmmoLed ) AmmoLed = TexMan.GetCanvas("QUADRLED"); + if ( !AmmoLedBase ) AmmoLedBase = TexMan.CheckForTexture("models/canvas/QuadLEDBase.png"); + if ( !AmmoLedRound ) AmmoLedRound = TexMan.CheckForTexture("models/canvas/QuadLEDRound.png"); + if ( !AmmoLedCharge ) AmmoLedCharge = TexMan.CheckForTexture("models/canvas/QuadLEDCharge.png"); + AmmoLed.Clear(0,0,64,64,0xFF101033); + AmmoLed.DrawTexture(AmmoLedBase,false,0,0,DTA_LegacyRenderStyle,STYLE_Shaded,DTA_FillColor,0xFF00FFFF); + Color col; + switch ( chargelevel ) + { + default: + col = 0xFF00FF00; + break; + case 1: + case 9: + col = 0xFF0080FF; + break; + case 2: + case 8: + col = 0xFF0000FF; + break; + case 3: + case 7: + col = 0xFF8000FF; + break; + case 4: + case 6: + col = 0xFFFF0080; + break; + case 5: + col = 0xFFFF0000; + break; + } + AmmoLed.DrawTexture(AmmoLedCharge,false,12,4,DTA_SrcX,(chargelevel%4)*64,DTA_SrcY,(chargelevel/4)*64,DTA_SrcWidth,40,DTA_SrcHeight,40,DTA_DestWidth,40,DTA_DestHeight,40,DTA_LegacyRenderStyle,STYLE_Shaded,DTA_FillColor,col); + for ( int i=0; i 2 ) TouchScreen.DrawTexture(FrameTex,false,x+1,y,DTA_SrcX,1.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,int(w-2),DTA_DestHeight,1); + if ( h > 2 ) TouchScreen.DrawTexture(FrameTex,false,x,y+1,DTA_SrcX,0.,DTA_SrcY,1.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,int(h-2)); + TouchScreen.DrawTexture(FrameTex,false,(x+w)-1,y,DTA_SrcX,2.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,1); + TouchScreen.DrawTexture(FrameTex,false,x,(y+h)-1,DTA_SrcX,0.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,1); + if ( h > 2 ) TouchScreen.DrawTexture(FrameTex,false,(x+w)-1,y+1,DTA_SrcX,2.,DTA_SrcY,1.,DTA_SrcWidth,2.,DTA_SrcHeight,1.,DTA_DestWidth,2,DTA_DestHeight,int(h-2)); + if ( w > 2 ) TouchScreen.DrawTexture(FrameTex,false,x+1,(y+h)-1,DTA_SrcX,1.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,2.,DTA_DestWidth,int(w-2),DTA_DestHeight,2); + TouchScreen.DrawTexture(FrameTex,false,(x+w)-1,(y+h)-1,DTA_SrcX,2.,DTA_SrcY,2.,DTA_SrcWidth,2.,DTA_SrcHeight,2.,DTA_DestWidth,2,DTA_DestHeight,2); + } + + override void RenderTexture( RenderEvent e ) + { + if ( !c_init ) + { + c_init = true; + DemolitionistMenu.SetClock(c_year,c_month,c_day,c_hour,c_minute,c_tz); + } + int ingun = min(clipcount+(chambered&&!fired),99); + bool increase = (ingun>oldammo); + if ( ingun != oldammo ) ammoflash = increase?(gametic+30):(gametic+10); + oldammo = ingun; + if ( firemode+1 != oldfiremode ) firemodeflash = gametic+20; + oldfiremode = firemode+1; + int gstate = gchambered?gfired?2:1:0; + if ( gstate != oldgrenade ) grenadeflash = gametic+20; + oldgrenade = gstate; + // Side touchscreen + if ( !TouchScreen ) TouchScreen = TexMan.GetCanvas("MORTLED1"); + if ( !MortalFontSmall ) MortalFontSmall = Font.GetFont('MortalFont20'); + if ( !MortalFontMed ) MortalFontMed = Font.GetFont('MortalFont40'); + if ( !MortalFontBig ) MortalFontBig = Font.GetFont('MortalFont80'); + if ( !MortalBG ) MortalBG = TexMan.CheckForTexture("models/canvas/MortalBG.png"); + if ( !MortalIcons[0] ) MortalIcons[0] = TexMan.CheckForTexture("models/canvas/MortalFireIcons.png"); + if ( !MortalIcons[1] ) MortalIcons[1] = TexMan.CheckForTexture("models/canvas/MortalGrenadeIcons.png"); + TouchScreen.DrawTexture(MortalBG,false,0,0); + TouchScreen.Dim(0xFF000000,.8,0,0,256,22); + String str = "MR\cu-\c-"..serialnum; + TouchScreen.DrawText(MortalFontSmall,Font.CR_WHITE,8,0,str); + str = DemolitionistMenu.CrimeTime(c_year,c_month,c_day,c_hour,c_minute,c_tz,true); + if ( gametic%32 >= 16 ) str.Replace(":"," "); + else str.Replace(":","\cu:\c-"); + TouchScreen.DrawText(MortalFontSmall,Font.CR_WHITE,248-MortalFontSmall.StringWidth(str),0,str); + str = String.Format("%2d",ingun); + int fw = MortalFontBig.StringWidth(str), fh = MortalFontBig.GetHeight(); + DrawWindowFrame(80-fw/2,72-fh/2,fw,fh,32); + bool blink = (ingun<=4)&&(gametic%16<=8); + if ( ingun <= 0 ) TouchScreen.DrawText(MortalFontBig,Font.FindFontColor('MiniBlurp'),80-fw/2,72-fh/2,"00",DTA_ColorOverlay,blink?0xA0000000:0x80000000); + else + { + TouchScreen.DrawText(MortalFontBig,Font.FindFontColor('MiniBlurp'),80-fw/2,72-fh/2,str,DTA_ColorOverlay,blink?0x80000000:0x00000000); + if ( ingun < 10 ) TouchScreen.DrawText(MortalFontBig,Font.FindFontColor('MiniBlurp'),80-fw/2,72-fh/2,"0 ",DTA_ColorOverlay,blink?0xA0000000:0x80000000); + } + if ( ammoflash && (gametic < ammoflash) ) + { + double alph = (increase?clamp((ammoflash-(gametic+e.fractic))/25.,0.,1.):clamp((ammoflash-(gametic+e.fractic))/5.,0.,1.))**2.; + if ( ingun <= 0 ) TouchScreen.DrawText(MortalFontBig,Font.FindFontColor('MiniWhiteFlash'),80-fw/2,72-fh/2,"00",DTA_ColorOverlay,blink?0xA0000000:0x80000000,DTA_Alpha,alph*.8,DTA_LegacyRenderStyle,STYLE_Add); + else + { + TouchScreen.DrawText(MortalFontBig,Font.FindFontColor('MiniWhiteFlash'),80-fw/2,72-fh/2,str,DTA_ColorOverlay,blink?0x80000000:0x00000000,DTA_Alpha,alph*.8,DTA_LegacyRenderStyle,STYLE_Add); + if ( ingun < 10 ) TouchScreen.DrawText(MortalFontBig,Font.FindFontColor('MiniWhiteFlash'),80-fw/2,72-fh/2,"0 ",DTA_ColorOverlay,blink?0xA0000000:0x80000000,DTA_Alpha,alph*.8,DTA_LegacyRenderStyle,STYLE_Add); + } + } + fw = 64; + fh = 32; + DrawWindowFrame(200-fw/2,72-(fh+8),fw,fh); + TouchScreen.DrawTexture(MortalIcons[0],false,200-fw/2,72-(fh+8),DTA_SrcY,firemode*32,DTA_SrcHeight,32,DTA_DestHeight,32,DTA_SrcX,0,DTA_SrcWidth,64,DTA_DestWidth,64,DTA_ColorOverlay,(!chambered||fired)?0x80000000:0x00000000); + if ( firemodeflash && (gametic < firemodeflash) ) + { + double alph = clamp((firemodeflash-(gametic+e.fractic))/15.,0.,1.)**2.; + TouchScreen.DrawTexture(MortalIcons[0],false,200-fw/2,72-(fh+8),DTA_SrcY,firemode*32,DTA_SrcHeight,32,DTA_DestHeight,32,DTA_SrcX,64,DTA_SrcWidth,64,DTA_DestWidth,64,DTA_Alpha,alph*.8,DTA_LegacyRenderStyle,STYLE_Add); + } + str = StringTable.Localize("$SWWM_MRMODE"..(firemode+1)); + DrawWindowFrame(200-fw/2,72+8,fw,fh); + TouchScreen.DrawTexture(MortalIcons[1],false,200-fw/2,72+8,DTA_SrcY,0,DTA_SrcHeight,32,DTA_DestHeight,32,DTA_SrcX,0,DTA_SrcWidth,64,DTA_DestWidth,64,DTA_ColorOverlay,(!gchambered||gfired)?0x80000000:0x00000000); + TouchScreen.DrawTexture(MortalIcons[1],false,200-fw/2,72+8,DTA_SrcY,32,DTA_SrcHeight,32,DTA_DestHeight,32,DTA_SrcX,0,DTA_SrcWidth,64,DTA_DestWidth,64,DTA_ColorOverlay,gchambered?0x00000000:0x80000000); + if ( grenadeflash && (gametic < grenadeflash) ) + { + double alph = clamp((grenadeflash-(gametic+e.fractic))/15.,0.,1.)**2.; + TouchScreen.DrawTexture(MortalIcons[1],false,200-fw/2,72+8,DTA_SrcY,0,DTA_SrcHeight,32,DTA_DestHeight,32,DTA_SrcX,64,DTA_SrcWidth,64,DTA_DestWidth,64,DTA_Alpha,alph*((!gchambered||gfired)?.4:.8),DTA_LegacyRenderStyle,STYLE_Add); + TouchScreen.DrawTexture(MortalIcons[1],false,200-fw/2,72+8,DTA_SrcY,32,DTA_SrcHeight,32,DTA_DestHeight,32,DTA_SrcX,64,DTA_SrcWidth,64,DTA_DestWidth,64,DTA_Alpha,alph*(gchambered?.8:.4),DTA_LegacyRenderStyle,STYLE_Add); + } + if ( lowammotic && (lowammotic > gametic) ) + { + // low ammo alert + str = StringTable.Localize("$SWWM_MRLOW"); + fw = MortalFontMed.StringWidth(str); + fh = MortalFontMed.GetHeight(); + DrawWindowFrame(128-fw/2,72-fh/2,fw,fh,8,4); + TouchScreen.DrawText(MortalFontMed,Font.FindFontColor('MiniBrass'),128-fw/2,72-fh/2,str,DTA_ColorOverlay,(gametic%8>=4)?0x80000000:0x000000); + } + if ( noammotic && (noammotic > gametic) ) + { + // empty alert + str = StringTable.Localize("$SWWM_MRNONE"); + fw = MortalFontBig.StringWidth(str); + fh = MortalFontBig.GetHeight(); + DrawWindowFrame(128-fw/2,72-fh/2,fw,fh,16,8); + TouchScreen.DrawText(MortalFontBig,Font.FindFontColor('MiniRed'),128-fw/2,72-fh/2,str,DTA_ColorOverlay,(gametic%16>=8)?0x80000000:0x000000); + } + if ( prefirecnt > 0 ) + { + // charge bar + Font fnt; + int fofs; + if ( prefirecnt >= 100 ) + { + str = StringTable.Localize("$SWWM_MRREADY"); + fnt = MortalFontMed; + fofs = 0; + } + else + { + str = StringTable.Localize("$SWWM_MRCHARGE"); + fnt = MortalFontSmall; + fofs = (MortalFontMed.GetHeight()-MortalFontSmall.GetHeight())/2; + } + int strw = fnt.StringWidth(str); + int strh = MortalFontMed.GetHeight(); + fw = max(strw,128); + fh = strh+16; + DrawWindowFrame(128-fw/2,72-fh/2,fw,fh,8,4); + TouchScreen.Dim(0xFF000000,.8,128-52,72+(fh/2-14),104,12); + double bw = PreFireInter.GetValue(e.FracTic); + Color barcol = SWWMUtility.LerpColor(0xFF000080,0xFF00C0FF,bw/100.); + TouchScreen.Dim(barcol,1.,128-50,72+(fh/2-12),int(bw),8); + TouchScreen.DrawText(fnt,Font.FindFontColor('MiniCyanblu'),128-strw/2,72-fh/2+fofs,str); + if ( (prefirecnt >= 100) && ((gametic-holdtic)%32 <= 16) ) + { + double alph = clamp(1.-((gametic-holdtic)%32)/16.,0.,1.)**2.; + TouchScreen.Dim(0xFFFFFFFF,alph*.8,128-50,72+(fh/2-12),int(bw),8,STYLE_Add); + TouchScreen.DrawText(fnt,Font.FindFontColor('MiniWhiteFlash'),128-strw/2,72-fh/2+fofs,str,DTA_Alpha,alph*.8,DTA_LegacyRenderStyle,STYLE_Add); + } + } + // Holo sub-screen + if ( !AmmoLed ) AmmoLed = TexMan.GetCanvas("MORTLED2"); + if ( !AmmoLedFont ) AmmoLedFont = TexMan.CheckForTexture("models/canvas/MortalFlatChars.png"); + AmmoLed.Clear(0,0,64,16,0x00000000); + int dg1 = (ingun/10)%10; + int dg2 = (ingun%10); + AmmoLed.DrawTexture(AmmoLedFont,false,24,0,DTA_SrcX,dg1*8,DTA_SrcWidth,8,DTA_DestWidth,8,DTA_Color,dg1?blink?0xFF400080:0xFF8000FF:blink?0xFF200040:0xFF400080); + AmmoLed.DrawTexture(AmmoLedFont,false,32,0,DTA_SrcX,dg2*8,DTA_SrcWidth,8,DTA_DestWidth,8,DTA_Color,(dg1||dg2)?blink?0xFF400080:0xFF8000FF:blink?0xFF200040:0xFF400080); + AmmoLed.DrawTexture(AmmoLedFont,false,52,0,DTA_SrcX,80,DTA_SrcWidth,8,DTA_DestWidth,8,DTA_Color,(!gchambered||gfired)?0xFF400080:0xFF8000FF); + AmmoLed.DrawTexture(AmmoLedFont,false,52,0,DTA_SrcX,88,DTA_SrcWidth,8,DTA_DestWidth,8,DTA_Color,gchambered?0xFF8000FF:0xFF400080); + AmmoLed.DrawTexture(AmmoLedFont,false,4,0,DTA_SrcX,96+firemode*8,DTA_SrcWidth,8,DTA_DestWidth,8,DTA_Color,(chambered&&!fired)?0xFF8000FF:0xFF400080); + } +} + +// Rafan-Kos +/*extend Class RafanKos +{ + override void RenderTexture( RenderEvent e ) + { + // ammo display + // dynamic glow + } +}*/ diff --git a/zscript/dlc/swwm_dlcweapons_hud.zsc b/zscript/dlc/swwm_dlcweapons_hud.zsc new file mode 100644 index 000000000..82e475d08 --- /dev/null +++ b/zscript/dlc/swwm_dlcweapons_hud.zsc @@ -0,0 +1,175 @@ +// DrawWeapon code for DLC weapons + +// Combat Hammer +extend Class ItamexHammer +{ + ui TextureID WeaponBox, BarTex; + + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/ItamexDisplay.png"); + if ( !BarTex ) BarTex = TexMan.CheckForTexture("graphics/HUD/ItamexBar.png"); + double ct = clamp(ChargeInter?ChargeInter.GetValue(TicFrac):charge,0.,100.); + if ( ct <= 0 ) return; + double ch = ct*.2; + Screen.DrawTexture(WeaponBox,false,bx-8,by-25,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawTexture(BarTex,false,bx-5,by-(2+ch),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcHeight,ch,DTA_DestHeightF,ch,DTA_ColorOverlay,Color(255,0,0,0)); + bool blinking = (ct>=100.)&&(Owner.player.cmd.buttons&BT_ALTATTACK)&&(gametic%4>=2); + Screen.DrawTexture(BarTex,false,bx-6,by-(3+ch),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcHeight,ch,DTA_DestHeightF,ch,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0)); + } +} + +// Plasma Blaster +/*extend Class PlasmaBlast +{ + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + } +} + +extend Class DualPlasmaBlast +{ + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + } +} + +// Puntzer Beta +extend Class PuntzerBeta +{ + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + } +} + +// Puntzer Gamma +extend Class PuntzerGamma +{ + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + } +}*/ + +// Sheen HMG +extend Class HeavyMahSheenGun +{ + ui TextureID WeaponBox, BulletTex[2], SpeedTex, BarTex; + + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/SheenDisplay.png"); + if ( !BulletTex[0] ) BulletTex[0] = TexMan.CheckForTexture("graphics/HUD/SheenRound.png"); + if ( !BulletTex[1] ) BulletTex[1] = TexMan.CheckForTexture("graphics/HUD/SheenCasing.png"); + if ( !SpeedTex ) SpeedTex = TexMan.CheckForTexture("graphics/HUD/SheenSpeed.png"); + if ( !BarTex ) BarTex = TexMan.CheckForTexture("graphics/HUD/SheenBar.png"); + Screen.DrawTexture(WeaponBox,false,bx-23,by-24,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( firespeed == 0 ) for ( int i=0; i<2; i++ ) Screen.DrawTexture(SpeedTex,false,bx-21,(by-14)+i*8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else if ( firespeed == 1 ) for ( int i=0; i<3; i++ ) Screen.DrawTexture(SpeedTex,false,bx-21,(by-14)+i*4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else if ( firespeed == 2 ) for ( int i=0; i<5; i++ ) Screen.DrawTexture(SpeedTex,false,bx-21,(by-14)+i*2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + double ht = clamp(HeatInter?HeatInter.GetValue(TicFrac):barrelheat,0.,100.); + double hw = ht*.18; + bool blinking = (incooldown)&&(gametic%8>=4); + Screen.DrawTexture(BarTex,false,bx-20,by-21,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcWidth,hw,DTA_DestWidthF,hw,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(BarTex,false,bx-21,by-22,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcWidth,hw,DTA_DestWidthF,hw,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0)); + bool isfired = !!fired; + double firefact = 0.; + if ( firespeed == 0 ) + { + isfired = isfired&&((fired+7)>=gametic); + firefact = clamp((gametic+TicFrac)-fired,0.,7.)/7.; + } + else if ( firespeed == 1 ) + { + isfired = isfired&&((fired+3)>=gametic); + firefact = clamp((gametic+TicFrac)-fired,0.,3.)/3.; + } + else if ( firespeed == 2 ) + { + isfired = isfired&&((fired+1)>=gametic); + firefact = TicFrac; + } + bool infammo = (sv_infiniteammo||Owner.FindInventory('PowerInfiniteAmmo',true)); + if ( isfired ) + { + Screen.DrawTexture(BulletTex[1],false,bx-15,(by-10)-4*firefact,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,1.-firefact); + for ( int i=0; i<2; i++ ) + { + if ( !infammo && (Ammo1.Amount <= i) ) break; + Screen.DrawTexture(BulletTex[0],false,bx-15,(by-6)-4*firefact+i*4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipBottom,int((by-2)*hs),DTA_Alpha,(i==0)?1.:firefact); + } + return; + } + for ( int i=0; i<2; i++ ) + { + if ( !infammo && (Ammo1.Amount <= i) ) break; + Screen.DrawTexture(BulletTex[0],false,bx-15,(by-10)+i*4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + } + } +} + +// Quadravol +extend Class Quadravol +{ + ui TextureID WeaponBox, BulletTex[2]; + ui Font ChargeFont; + + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/QuadravolDisplay.png"); + if ( !BulletTex[0] ) BulletTex[0] = TexMan.CheckForTexture("graphics/HUD/QuadravolRound.png"); + if ( !BulletTex[1] ) BulletTex[1] = TexMan.CheckForTexture("graphics/HUD/QuadravolCasing.png"); + if ( !ChargeFont ) ChargeFont = Font.GetFont('XekkasNum'); + Screen.DrawTexture(WeaponBox,false,bx-16,by-44,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + for ( int i=0; i -25 ) vel.z = max(-25.,vel.z-4.); + if ( invoker.hitcnt > 0 ) invoker.hitcnt--; + else if ( A_Melee(int(100+invoker.charge*2.),"itamex/hit",2.,1.1,1.2,MELEE_Rip|MELEE_FleshSound|MELEE_HammerHit|MELEE_Vertical|MELEE_ExtraWide|MELEE_ForceBust) ) + { + A_BumpFOV(.9); + A_QuakeEx(5.,5.,5.,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.35); + A_AlertMonsters(swwm_uncapalert?0:800); + A_WeaponOffset(0,-64,WOF_ADD|WOF_INTERPOLATE); + SWWMUtility.DoKnockback(self,-(x.x,x.y,x.z*.1),1500.*invoker.charge); + invoker.hitcnt = 3; + return; + } + } + + override void DoEffect() + { + Super.DoEffect(); + if ( !Owner && !Owner.player && (Owner.player.ReadyWeapon != self) ) return; + let psp = Owner.player.FindPSprite(PSP_WEAPON); + if ( !psp ) return; + if ( bSpinning ) psp.x += charge*.05; + psp.x *= .8; + psp.y = (psp.y-32.)*.8+32.; + } + + action void A_ChargeUp() + { + A_SetAngle(angle+invoker.charge*.2,SPF_INTERPOLATE); + A_SetPitch(pitch*.9,SPF_INTERPOLATE); + invoker.charge = min(100.,invoker.charge+20.); + invoker.bSpinning = true; + if ( !IsActorPlayingSound(CHAN_WEAPONEXTRA,"itamex/spin") ) + A_StartSound("itamex/spin",CHAN_WEAPONEXTRA,CHANF_LOOP,.2); + A_SoundVolume(CHAN_WEAPONEXTRA,(invoker.charge/100.)**.5); + A_BumpFOV(1.+invoker.charge*.001); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + SWWMUtility.DoKnockback(self,x,500.*invoker.charge); + invoker.hitcnt = 0; + invoker.spintime = 0; + } + + action void A_SpinReact() + { + if ( Random[Demolitionist](0,1) ) return; + if ( SWWMHandler.AddOneliner("spinning",2,5) ) + Demolitionist(self).facegrin = true; + } + + action State A_SpinMove() + { + A_SetAngle(angle+invoker.charge*.4,SPF_INTERPOLATE); + A_SetPitch(pitch*.9,SPF_INTERPOLATE); + invoker.charge = max(30.,invoker.charge-2.); + if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) + invoker.charge = min(100.,invoker.charge+20.); + A_SoundVolume(CHAN_WEAPONEXTRA,(invoker.charge/100.)**.5); + A_BumpFOV(1.+invoker.charge*.001); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + SWWMUtility.DoKnockback(self,(x.x,x.y,x.z*.1),1500.*invoker.charge); + if ( vel.z < 0 ) vel.z *= 1.-invoker.charge*.008; + A_QuakeEx(.5,.5,.5,15,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_PlayerFire(); + invoker.spintime++; + if ( invoker.hitcnt > 0 ) invoker.hitcnt--; + else if ( A_Melee(int(100+invoker.charge*1.5),"itamex/hit",2.4,2.,1.1,MELEE_Rip|MELEE_FleshSound|MELEE_ExtraWide|MELEE_HammerHit) ) + { + A_BumpFOV(.9); + A_QuakeEx(5.,5.,5.,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.35); + A_AlertMonsters(swwm_uncapalert?0:800); + A_WeaponOffset(32,0,WOF_ADD|WOF_INTERPOLATE); + SWWMUtility.DoKnockback(self,-(x.x,x.y,x.z*.1),4500.*invoker.charge); + invoker.hitcnt = 3; + } + if ( invoker.charge <= 30. ) + { + A_StartSound("itamex/swing",CHAN_WEAPON,CHANF_OVERLAP); + invoker.bSpinning = false; + return ResolveState('ZoomEnd'); + } + return ResolveState(null); + } + + action void A_ChargeDown() + { + A_SetAngle(angle+invoker.charge*.6,SPF_INTERPOLATE); + A_SetPitch(pitch*.9,SPF_INTERPOLATE); + A_SoundVolume(CHAN_WEAPONEXTRA,(invoker.charge/100.)**.5); + invoker.charge = max(0.,invoker.charge-6.); + A_WeaponOffset(-16,0,WOF_ADD|WOF_INTERPOLATE); + A_BumpFOV(1.+invoker.charge*.001); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + SWWMUtility.DoKnockback(self,x,4000.*invoker.charge); + if ( invoker.charge <= 0 ) A_StopSound(CHAN_WEAPONEXTRA); + } + + action void A_AltCharge() + { + A_CanBob(); + invoker.charge = min(100.,invoker.charge+SWWMUtility.Lerp(4.,.5,(invoker.charge/100.)**.25)); + double vibe = (invoker.charge/100.)**2.; + A_WeaponOffset(FRandom[Hammer](-.5,.5)*vibe,32+FRandom[Hammer](-.5,.5)*vibe,WOF_INTERPOLATE); + } + + action State A_AltHold() + { + A_CanBob(); + invoker.charge = min(100.,invoker.charge+SWWMUtility.Lerp(4.,.5,(invoker.charge/100.)**.25)); + double vibe = (invoker.charge/100.)**2.; + A_WeaponOffset(FRandom[Hammer](-.5,.5)*vibe,32+FRandom[Hammer](-.5,.5)*vibe,WOF_INTERPOLATE); + if ( !(player.cmd.buttons&BT_ALTATTACK) ) + { + A_WeaponOffset(0,32,WOF_INTERPOLATE); + return ResolveState('AltRelease'); + } + return ResolveState(null); + } + + action void A_AltRelease() + { + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + SWWMUtility.DoKnockback(self,x-(0,0,3.),120000.); + A_BumpFOV(.9); + A_StartSound("itamex/drop",CHAN_WEAPONEXTRA2); + A_StartSound("itamex/drop",CHAN_WEAPONEXTRA3); + } + + action void A_AltHit() + { + // stop extended fall + invoker.bFalling = false; + A_StopSound(CHAN_WEAPONEXTRA); + A_WeaponOffset(0,32,WOF_INTERPOLATE); + if ( (pos.z <= floorz+16) && (pitch > -15) ) + { + A_StopSound(CHAN_WEAPONEXTRA2); + A_StopSound(CHAN_WEAPONEXTRA3); + A_StartSound("itamex/slam",CHAN_WEAPON,CHANF_OVERLAP); + A_StartSound("itamex/slam",CHAN_WEAPON,CHANF_OVERLAP); + vel.z += invoker.charge*.03; + A_BumpFOV(.85); + A_QuakeEx(8.,8.,8.,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.); + A_AlertMonsters(swwm_uncapalert?0:2500); + let s = Spawn('HammerShockwave',(pos.x,pos.y,floorz)); + s.target = self; + s.special1 = int(invoker.charge*3); + } + invoker.charge = 0.; + } + + override void OwnerDied() + { + Super.OwnerDied(); + A_StopSound(CHAN_WEAPONEXTRA); + charge = 0.; + } + override void Travelled() + { + Super.Travelled(); + A_StopSound(CHAN_WEAPONEXTRA); + charge = 0.; + } + + override void MarkPrecacheSounds() + { + Super.MarkPrecacheSounds(); + MarkSound("itamex/select"); + MarkSound("itamex/deselect"); + MarkSound("itamex/meleestart"); + MarkSound("itamex/meleeend"); + MarkSound("itamex/swing1"); + MarkSound("itamex/swing2"); + MarkSound("itamex/swing3"); + MarkSound("itamex/hit1"); + MarkSound("itamex/hit2"); + MarkSound("itamex/hit3"); + MarkSound("itamex/hitf1"); + MarkSound("itamex/hitf2"); + MarkSound("itamex/hitf3"); + MarkSound("itamex/drop"); + MarkSound("itamex/slam"); + MarkSound("itamex/spin"); + } + + Default + { + Tag "$T_HAMMER"; + Inventory.Icon "graphics/HUD/Icons/W_ItamexHammer.png"; + Inventory.PickupMessage "$I_HAMMER"; + Obituary "$O_HAMMER"; + SWWMWeapon.Tooltip "$TT_HAMMER"; + SWWMWeapon.GetLine "getitamexhammer"; + Weapon.SlotNumber 1; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 1200; + Weapon.UpSound "itamex/select"; + Stamina 9000; + +WEAPON.MELEEWEAPON; + } + States + { + Spawn: + XZW1 A -1; + Stop; + Select: + XZW2 I 3 A_FullRaise(); + XZW2 JK 3 A_BumpView(-.1,tics:3); + XZW2 LMNO 2 A_BumpView(.2,tics:2); + XZW2 PQRST 3; + Goto Ready; + Ready: + XZW2 A 0 + { + } + XZW2 A 1 + { + // ensure we're back to normal just in case + A_StopSound(CHAN_WEAPONEXTRA); + invoker.bSpinning = false; + invoker.bFalling = false; + A_WeaponOffset(0,32,WOF_INTERPOLATE); + A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1); + } + Wait; + Fire: + XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 UVWXYZ 1 A_BumpAngle(-1); + XZW3 A 1 + { + A_StartSound("itamex/swing",CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerMelee(); + } + XZW3 BCDE 1 A_BumpAngle(4); + XZW3 F 1 A_HammerHit(); + XZW3 GHIJK 2; + XZW3 L 2 A_StartSound("itamex/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 MNOPQR 2; + Goto Ready; + FireHit: + XZW3 F 2; + XZW3 STUVW 2; + XZW3 XYZ 1; + XZW4 A 2; + XZW4 B 2 A_StartSound("itamex/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.42); + XZW4 C 2; + Goto Ready; + AltFire: + XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 DEFG 2 + { + A_BumpView(.4,tics:2); + A_AltCharge(); + } + XZW4 HIJKLMN 1 + { + A_BumpView(-.2); + A_AltCharge(); + } + XZW4 OPQRSTU 1 A_AltCharge(); + XZW4 V 1 A_AltHold(); + Wait; + AltRelease: + XZW4 V 1 A_AltRelease(); + XZW4 WXYZ 1 A_BumpView(2.); + XZW5 A 1 A_BumpView(3.); + XZW5 B 1 + { + if ( !player.onground && (pos.z > floorz+32) && (vel.z < 0) ) + { + invoker.hitcnt = 0; + invoker.bFalling = true; + A_StartSound("itamex/spin",CHAN_WEAPONEXTRA,CHANF_LOOP); + return ResolveState('AltFall'); + } + A_BumpView(3.); + A_HammerAltHit(); + return ResolveState(null); + } + AltReleaseStop: + XZW5 CD 1 A_BumpView(4.); + XZW5 E 1 A_AltHit(); + XZW5 FGHIJKLMN 2; + XZW5 O 2 A_StartSound("itamex/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW5 PQRS 2; + XZW5 TUVW 3; + Goto Ready; + AltFall: + XZW5 B 1 + { + A_BumpView(3.); + A_HammerAltFallHit(); + return A_JumpIf(player.onground,1); + } + Wait; + XZW5 B 1; + Goto AltReleaseStop; + Zoom: + XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW5 XYZ 2 A_BumpAngle(-2,tics:2); + XZW6 ABCDEF 1 A_ChargeUp(); + XZW6 G 0 A_SpinReact(); + XZW6 G 1 A_SpinMove(); + Wait; + ZoomEnd: + XZW6 GHIJ 1 + { + A_ChargeDown(); + A_BumpAngle(10); + } + XZW6 K 1 + { + A_ChargeDown(); + A_HammerHit(true); + } + XZW6 LM 1 A_ChargeDown(); + XZW6 N 2 A_StartSound("itamex/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 OPQRST 2; + XZW6 UVW 3; + Goto Ready; + Reload: + XZW2 A 2 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 XYZ 2 A_BumpView(-.1,tics:2); + XZW7 ABCDEF 2; + XZW7 G 1 + { + A_PlayerCheckGun(); + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("itamex/meleeend",CHAN_WEAPONEXTRA,pitch:.7,starttime:.2); + } + XZW7 HIJ 1 A_BumpView(-.05); + XZW7 K 1 + { + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("itamex/meleeend",CHAN_WEAPONEXTRA,pitch:.8,starttime:.2); + } + XZW7 LMNO 1 A_BumpView(-.05); + XZW7 P 1 + { + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("itamex/meleeend",CHAN_WEAPONEXTRA,pitch:.9,starttime:.2); + } + XZW7 QRST 1 A_BumpView(-.05); + XZW7 U 1 A_StopSound(CHAN_WEAPONEXTRA); + XZW7 VWXYZ 1 A_BumpView(.05); + XZW8 A 0 A_StartSound("itamex/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.42); + XZW8 BCDE 3 A_BumpView(-.1,tics:3); + XZW8 FGHI 2 A_BumpView(.05,tics:2); + Goto Ready; + User1: + XZW2 A 1; + XZW8 J 1 A_StartSound("itamex/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 KLM 1; + XZW8 N 2 A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 OPQ 2 A_BumpView(.5,tics:2); + XZW8 R 1 + { + A_BumpFOV(.97); + A_QuakeEx(1.,1.,1.,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_Parry(9); + A_PlayerMelee(true); + } + XZW8 S 1 A_BumpView(-6); + XZW8 T 3 A_Melee(50,"demolitionist/whitm",1.2,1.4); + XZW8 UVWXYZ 2; + XZW9 ABC 2; + XZW9 D 1 A_StartSound("itamex/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.42); + XZW9 EFGH 1; + XZW9 IJKL 2; + Goto Ready; + Deselect: + XZW2 A 3 A_StartSound("itamex/deselect",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 BCD 3 A_BumpView(.1,tics:3); + XZW2 EFGHI 2 A_BumpView(.2,tics:2); + XZW2 J -1 A_FullLower(); + Stop; + } +} diff --git a/zscript/dlc/swwm_hammertime_fx.zsc b/zscript/dlc/swwm_hammertime_fx.zsc new file mode 100644 index 000000000..edb2d9992 --- /dev/null +++ b/zscript/dlc/swwm_hammertime_fx.zsc @@ -0,0 +1,83 @@ +// Itamex Hammer projectiles and effects + +// akin to the land shockwave, but with sliiiiightly different behavior +Class HammerShockwave : SWWMNonInteractiveActor +{ + Default + { + Obituary "$O_HAMMER"; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_QuakeEx(5.,5.,5.,20,0,300+special1*4,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:200,rollIntensity:.8); + SWWMUtility.DoExplosion(self,80+special1,100000+special1*2000,80+special1,40,DE_BLAST|DE_EXTRAZTHRUST|DE_NONEXPLOSIVE,'HammerShockwave',target); + for ( int i=0; i<360; i+=5 ) + { + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,3); + let s = Spawn('SWWMSmoke',Vec3Angle(4,i,8)); + s.vel = pvel+SWWMUtility.AngleToVector3(i,7.); + s.SetShade(Color(1,1,1)*Random[ExploS](64,224)); + s.special1 = Random[ExploS](1,4); + s.scale *= 1.5; + s.alpha *= .4; + } + for ( int i=0; i<360; i+=5 ) + { + let r = Spawn('HammerRadiusShockwave',Vec3Angle(5,i)); + r.target = target; + r.angle = i; + r.vel.xy = AngleToVector(i,r.speed+special1*.1); + r.alpha *= .3+special1*.0005; + } + int numpt = Random[ExploS](10,20); + for ( int i=0; i= penetration) || Results.HitActor.bNODAMAGE ) + { + ent.hitdamage = int(penetration); + penetration = 0; + } + else + { + int gibh = (Results.HitActor.GibHealth!=int.min)?-abs(Results.HitActor.GibHealth):-int(Results.HitActor.GetSpawnHealth()*gameinfo.gibfactor); + ent.hitdamage = min(Results.HitActor.health+abs(gibh),int(penetration)); + penetration = max(0,penetration-(ent.hitdamage*(1.-resist))); + } + hitlist.Push(ent); + if ( penetration <= 0 ) return TRACE_Stop; + return TRACE_Skip; + } + return TRACE_Skip; + } + else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) + { + if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) ) + return TRACE_Stop; + ShootThroughList.Push(Results.HitLine); + return TRACE_Skip; + } + return TRACE_Stop; + } +} + +Class HeavyMahSheenGun : SWWMWeapon +{ + transient int fired; + int firespeed; + double barrelheat, aimerror, vibrate; + bool incooldown, stopfire, firstshot; + int firetimer, shotcnt; + int tcol; // for random + + transient ui SmoothDynamicValueInterpolator HeatInter; + transient PiercingTracer st; + + override void HudTick() + { + Super.HudTick(); + if ( !HeatInter ) HeatInter = SmoothDynamicValueInterpolator.Create(barrelheat,.5); + HeatInter.Update(barrelheat); + } + + action void A_DropCasing() + { + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,4,8,-12); + let c = Spawn('SheenCasing',origin); + c.angle = angle; + c.pitch = pitch; + c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](.5,2.)-(0,0,FRandom[Junk](2.,5.)); + c.vel += vel*.5; + } + + override Vector3 GetTraceOffset( int index ) + { + return (10,0,-4); + } + + action void A_SheenFire() + { + double spreadfct = (1.+invoker.aimerror+(invoker.barrelheat/50.)+invoker.firespeed**2.); + invoker.stopfire = ((invoker.Ammo1.Amount<=1)||!(player.cmd.buttons&BT_ATTACK)||(player.Health<=0)); + invoker.barrelheat = invoker.barrelheat*(1.025-invoker.firespeed*.008)+3.-(invoker.firespeed**.8)*1.35; + invoker.aimerror = min(1.,invoker.aimerror*1.01+.01+invoker.firespeed*.01); + Vector3 x = SWWMUtility.GetPlayerViewDir(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,0,-4); + SWWMHandler.DoFlash(self,Color(32,255,224,64),3); + A_SWWMFlash(); + if ( invoker.firespeed == 1 ) + { + A_AlertMonsters(swwm_uncapalert?0:3000); + A_BumpFOV(.95); + A_BumpView(FRandom[Sheen](-.4,.4)); + A_BumpAngle(FRandom[Sheen](-.4,.4)); + A_QuakeEx(2.,2.,2.,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.25); + A_StartSound("sheen/700rpm",CHAN_WEAPONEXTRA,CHANF_LOOPING,attenuation:.5); + invoker.vibrate = .25; + A_Overlay(-9999,'EjectRound3'); + SWWMUtility.DoKnockback(self,-x,9000.); + SWWMUtility.AchievementProgress("dakka",(gametic-invoker.firetimer)/GameTicRate,player); + } + else if ( invoker.firespeed == 2 ) + { + A_AlertMonsters(swwm_uncapalert?0:5000); + A_BumpFOV(.97+FRandom[Sheen](-.01,.01)); + A_BumpView(FRandom[Sheen](-.3,.3)); + A_BumpAngle(FRandom[Sheen](-.3,.3)); + A_QuakeEx(1.8,1.8,1.8,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.15); + A_StartSound("sheen/2100rpm",CHAN_WEAPONEXTRA,CHANF_LOOPING,attenuation:.4); + invoker.vibrate = min(1.,invoker.vibrate*1.05+.05); + SWWMUtility.DoKnockback(self,-x,15000.); + A_Overlay(-9999,'EjectRound1'); + } + else if ( invoker.firespeed == 0 ) + { + A_AlertMonsters(swwm_uncapalert?0:2000); + A_BumpFOV(.92); + A_BumpView(FRandom[Sheen](-.5,.5)); + A_BumpAngle(FRandom[Sheen](-.5,.5)); + A_QuakeEx(1.4,1.4,1.4,8,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.25); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); + SWWMUtility.DoKnockback(self,-x,6000.); + A_Overlay(-9999,'EjectRound7'); + } + if ( invoker.barrelheat > 100. ) + { + A_StartSound("sheen/overheat",CHAN_WEAPONEXTRA2,CHANF_LOOPING,attenuation:3.); + invoker.stopfire = invoker.incooldown = true; + } + if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + invoker.Ammo1.Amount--; + invoker.fired = gametic; + // dakka dakka dakka + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + double a = FRandom[Sheen](0,360), s = FRandom[Sheen](.002,.02)*spreadfct; + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + if ( !invoker.st ) invoker.st = new('PiercingTracer'); + let st = invoker.st; // thanks zscript + st.penetration = 25.+invoker.barrelheat/6.; + st.resist = .6+invoker.barrelheat/600.; + st.hitlist.Clear(); + st.shootthroughlist.Clear(); + st.waterhitlist.Clear(); + st.Trace(origin,level.PointInSector(origin.xy),dir,8000.,0,ignore:self); + if ( swwm_omnibust ) + { + // Wall busting + BusterWall.Bust(st.Results,int(st.penetration),self,st.Results.HitVector,st.Results.HitPos.z); + } + foreach ( l:st.ShootThroughList ) + { + l.Activate(self,0,SPAC_PCross); + l.Activate(self,0,SPAC_Impact); + } + foreach ( w:st.WaterHitList ) + { + let b = Spawn('InvisibleSplasher',w.hitpos); + b.target = self; + b.A_CheckTerrain(); + } + Vector3 ppos; + for ( int i=5; i 0 ) + { + hit.HitActor.TraceBleed(realdmg,self); + hit.HitActor.SpawnBlood(hit.HitLocation,atan2(hit.x.y,hit.x.x)+180,realdmg); + hit.HitActor.A_StartSound("misc/slughitf",CHAN_DAMAGE,CHANF_OVERLAP,1.,2.); + } + } + if ( (st.Results.HitType != TRACE_HitNone) && (st.Results.HitType != TRACE_HitActor) ) + { + Vector3 hitnormal = SWWMUtility.GetLineTracerHitNormal(st.Results); + let p = Spawn('SWWMBulletImpact',st.Results.HitPos+hitnormal*4); + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + p.target = self; + if ( st.Results.HitType == TRACE_HitFloor ) p.CheckSplash(40); + else if ( st.Results.HitType == TRACE_HitWall ) st.Results.HitLine.RemoteActivate(self,st.Results.Side,SPAC_Impact,st.Results.HitPos); + } + for ( int i=0; i<(5-invoker.firespeed); i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.scale *= .5; + s.alpha *= .1; + s.speed *= .7; + s.vel += vel*.5+x*FRandom[Sheen](1.,3.); + } + int trail = CVar.GetCVar('swwm_funtrails',player).GetInt(); + if ( trail == 8 ) + { + if ( !invoker.firstshot ) invoker.tcol = Random[Sheen](1,7); + trail = invoker.tcol; + } + else if ( trail == 9 ) trail = 2+(invoker.shotcnt%6); + else if ( trail == 10 ) + { + switch ( invoker.shotcnt%5 ) + { + case 0: + case 3: + trail = 8; + break; + case 1: + case 4: + trail = 9; + break; + case 2: + trail = 1; + break; + } + } + else if ( trail == 11 ) trail = (invoker.shotcnt&1)?7:4; + else if ( trail == 12 ) trail = (invoker.shotcnt&1)?6:2; + else if ( trail == 13 ) + { + switch ( invoker.shotcnt%3 ) + { + case 0: + trail = 2; + break; + case 1: + trail = 1; + break; + case 2: + trail = 4; + break; + } + } + let t = Spawn('SheenTrail',origin); + t.target = self; + t.angle = atan2(dir.y,dir.x); + t.pitch = asin(-dir.z); + t.specialf1 = st.Results.Distance; + t.specialf2 = invoker.barrelheat; + t.special2 = trail; + invoker.firstshot = true; + invoker.shotcnt++; + } + action void A_CheckContinueFire() + { + if ( invoker.incooldown || (invoker.Ammo1.Amount <= 0) || (player.Health <= 0) ) return; + invoker.stopfire = !(player.cmd.buttons&BT_ATTACK); + } + override void OwnerDied() + { + Super.OwnerDied(); + aimerror = 0.; + vibrate = 0.; + } + override void Travelled() + { + Super.Travelled(); + aimerror = 0.; + vibrate = 0.; + } + override void DoEffect() + { + Super.DoEffect(); + barrelheat = max(0.,barrelheat*.99-.15); + bool hascooled = false; + if ( barrelheat <= 0. ) + { + hascooled = incooldown; + incooldown = false; + if ( hascooled && Owner && Owner.player && (Owner.player.ReadyWeapon != self) && (Owner.player == players[consoleplayer]) ) + Console.Printf(StringTable.Localize("$SWWM_SHEENREADY")); + } + if ( !Owner || !Owner.player || (Owner.player.ReadyWeapon != self) ) + { + aimerror = 0.; + vibrate = 0.; + return; + } + if ( hascooled ) + { + Owner.A_StopSound(CHAN_WEAPONEXTRA2); + Owner.A_StartSound("sheen/unlock",CHAN_WEAPONEXTRA2,CHANF_OVERLAP,attenuation:3.); + } + let pspm = Owner.player.FindPSprite(PSP_WEAPON); + if ( pspm ) + { + pspm.x = FRandom[Shivers](-1.,1.)*vibrate*4.; + pspm.y = 32+FRandom[Shivers](-1.,1.)*vibrate*4.; + } + aimerror *= .9; + } + override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) + { + if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; + if ( (fireMode == PrimaryFire) || (fireMode == EitherFire) ) + { + if ( Ammo1.Amount > 0 ) return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); + return false; + } + return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); + } + override void InitializeWeapon() + { + firespeed = 1; // default to 700 RPM + } + + override void MarkPrecacheSounds() + { + Super.MarkPrecacheSounds(); + MarkSound("sheen/specialpick"); + MarkSound("sheen/select"); + MarkSound("sheen/deselect"); + MarkSound("sheen/meleestart"); + MarkSound("sheen/meleeend"); + MarkSound("sheen/fire1"); + MarkSound("sheen/fire2"); + MarkSound("sheen/fire3"); + MarkSound("sheen/700rpm"); + MarkSound("sheen/2100rpm"); + MarkSound("sheen/crankin"); + MarkSound("sheen/crankout"); + MarkSound("sheen/overheat"); + MarkSound("sheen/unlock"); + MarkSound("sheen/casing1"); + MarkSound("sheen/casing2"); + MarkSound("sheen/casing3"); + MarkSound("sheen/casing4"); + } + + Default + { + Tag "$T_SHEENHMG"; + Inventory.Icon "graphics/HUD/Icons/W_SheenHMG.png"; + Inventory.PickupMessage "$I_SHEENHMG"; + Obituary "$O_SHEENHMG"; + SWWMWeapon.Tooltip "$TT_SHEENHMG"; + SWWMWeapon.GetLine "getheavymahsheengun"; + Weapon.UpSound "sheen/select"; + Weapon.SlotNumber 5; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 250; + Weapon.AmmoType1 'SheenAmmo'; + Weapon.AmmoGive1 30; + SWWMWeapon.DropAmmoType 'SWWMClipAmmoMed'; + +SWWMWEAPON.HASSCRTEX; + Stamina 100000; + } + States + { + Spawn: + XZW1 A -1; + Stop; + Select: + XZW2 K 3 + { + A_FullRaise(); + if ( invoker.incooldown ) A_StartSound("sheen/overheat",CHAN_WEAPONEXTRA2,CHANF_LOOPING,attenuation:3.); + } + XZW2 LMNOP 3 A_BumpView(-.05,tics:3); + XZW2 QRSTUV 2 A_BumpView(.2,tics:2); + XZW2 WX 3; + Goto Ready; + Ready: + XZW2 A 1 + { + invoker.shotcnt = 0; + invoker.firetimer = gametic; + invoker.aimerror = 0.; + invoker.vibrate = 0.; + int flg = WRF_ALLOWRELOAD|WRF_ALLOWUSER1; + if ( invoker.firespeed > 0 ) flg |= WRF_ALLOWZOOM; + if ( invoker.firespeed >= 2 ) flg |= WRF_NOSECONDARY; + if ( (invoker.Ammo1.Amount <= 0) || invoker.incooldown ) flg |= WRF_NOPRIMARY; + A_WeaponReady(flg); + if ( player.cmd.buttons&BT_ATTACK ) + invoker.CheckAmmo(EitherFire,true); + } + Wait; + Fire: + XZW2 A 2; + XZW2 Z 1 + { + invoker.firstshot = false; + if ( (invoker.firespeed == 0) || (invoker.Ammo1.Amount <= 1) && !(player.cmd.buttons&BT_ATTACK) ) + return A_Jump(256,'SlowFire1','SlowFire2','SlowFire3'); + if ( invoker.firespeed == 1 ) + return A_Jump(256,'FastFire1','FastFire2','FastFire3'); + if ( invoker.firespeed == 2 ) + return ResolveState('VeryFastFire'); + return ResolveState(null); + } + Goto Ready; + SlowFire1: + XZW2 Z 1 A_SheenFire(); + XZW3 ABCDEF 1; + XZW3 G 0; + XZW2 Z 0 + { + if ( !invoker.incooldown && (invoker.Ammo1.Amount > 0) && (player.cmd.buttons&BT_ATTACK) ) + return A_Jump(256,'SlowFire2','SlowFire3'); + return ResolveState(null); + } + Goto StopFire; + SlowFire2: + XZW2 Z 1 A_SheenFire(); + XZW3 HIJKLM 1; + XZW3 N 0; + XZW2 Z 0 + { + if ( !invoker.incooldown &&(invoker.Ammo1.Amount > 0) && (player.cmd.buttons&BT_ATTACK) ) + return A_Jump(256,'SlowFire1','SlowFire3'); + return ResolveState(null); + } + Goto StopFire; + SlowFire3: + XZW2 Z 1 A_SheenFire(); + XZW3 OPQRST 1; + XZW3 U 0 + { + if ( !invoker.incooldown &&(invoker.Ammo1.Amount > 0) && (player.cmd.buttons&BT_ATTACK) ) + return A_Jump(256,'SlowFire1','SlowFire2'); + return ResolveState(null); + } + Goto StopFire; + FastFire1: + XZW2 Z 1 A_SheenFire(); + XZW3 VW 1 A_CheckContinueFire(); + XZW3 X 0 + { + A_CheckContinueFire(); + if ( !invoker.stopfire ) return A_Jump(256,'FastFire2','FastFire3'); + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState(null); + } + Goto StopFire; + FastFire2: + XZW2 Z 1 A_SheenFire(); + XZW3 YZ 1 A_CheckContinueFire(); + XZW4 A 0 + { + A_CheckContinueFire(); + if ( !invoker.stopfire ) return A_Jump(256,'FastFire1','FastFire3'); + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState(null); + } + Goto StopFire; + FastFire3: + XZW2 Z 1 A_SheenFire(); + XZW4 BC 1 A_CheckContinueFire(); + XZW4 D 0 + { + A_CheckContinueFire(); + if ( !invoker.stopfire ) return A_Jump(256,'FastFire1','FastFire2'); + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState(null); + } + Goto StopFire; + VeryFastFire: + XZW2 Z 1 A_SheenFire(); + XZW4 E 1 + { + A_CheckContinueFire(); + if ( invoker.stopfire ) + { + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState('EndFireFast1'); + } + A_SheenFire(); + return ResolveState(null); + } + XZW4 F 1 + { + A_CheckContinueFire(); + if ( invoker.stopfire ) + { + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState('EndFireFast2'); + } + A_SheenFire(); + return ResolveState(null); + } + XZW4 G 1 + { + A_CheckContinueFire(); + if ( invoker.stopfire ) + { + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState('EndFireFast3'); + } + A_SheenFire(); + return ResolveState(null); + } + XZW4 H 1 + { + A_CheckContinueFire(); + if ( invoker.stopfire ) + { + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState('EndFireFast4'); + } + A_SheenFire(); + return ResolveState(null); + } + XZW4 I 1 + { + A_CheckContinueFire(); + if ( invoker.stopfire ) + { + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState('EndFireFast5'); + } + A_SheenFire(); + return ResolveState(null); + } + XZW4 J 1 + { + A_CheckContinueFire(); + if ( invoker.stopfire ) + { + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState('EndFireFast6'); + } + A_SheenFire(); + return ResolveState(null); + } + VeryFastFireHold: + XZW4 K 1 + { + A_CheckContinueFire(); + if ( invoker.stopfire ) + { + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("sheen/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6,starttime:.2); + return ResolveState('EndFireFast7'); + } + A_SheenFire(); + return ResolveState(null); + } + XZW4 L 0; + Goto VeryFastFireHold; + EndFireFast7: + XZW4 MNO 2 { invoker.vibrate *= .25; } + Goto Ready; + EndFireFast6: + XZW4 PQR 2 { invoker.vibrate *= .25; } + Goto Ready; + EndFireFast5: + XZW4 STU 2 { invoker.vibrate *= .25; } + Goto Ready; + EndFireFast4: + XZW4 VWX 2 { invoker.vibrate *= .25; } + Goto Ready; + EndFireFast3: + XZW4 YZ 2 { invoker.vibrate *= .25; } + XZW5 A 2 { invoker.vibrate *= .25; } + Goto Ready; + EndFireFast2: + XZW5 BCD 2 { invoker.vibrate *= .25; } + Goto Ready; + EndFireFast1: + XZW5 EFG 2 { invoker.vibrate *= .25; } + Goto Ready; + StopFire: + XZW2 Z 2 A_StopSound(CHAN_WEAPONEXTRA); // just in case + Goto Ready; + EjectRound7: + TNT1 A 7; + Goto EjectRound; + EjectRound3: + TNT1 A 3; + Goto EjectRound; + EjectRound1: + TNT1 A 1; + Goto EjectRound; + EjectRound: + TNT1 A 1 A_DropCasing(); + Stop; + AltFire: + XZW2 A 3 A_StartSound("sheen/crankin",CHAN_WEAPON,CHANF_OVERLAP); + XZW5 IJ 2 A_BumpView(.2,tics:2); + XZW5 K 3 + { + A_QuakeEx(.5,.5,.5,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + invoker.firespeed = min(2,invoker.firespeed+1); + EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_SHEENSPEED"..(invoker.firespeed+1)); + } + XZW5 L 4 A_StartSound("sheen/crankout",CHAN_WEAPON,CHANF_OVERLAP); + XZW5 M 5; + Goto Ready; + Zoom: + XZW2 A 3 A_StartSound("sheen/crankin",CHAN_WEAPON,CHANF_OVERLAP); + XZW5 NO 2 A_BumpView(-.2,tics:2); + XZW5 P 3 + { + A_QuakeEx(.5,.5,.5,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + invoker.firespeed = max(0,invoker.firespeed-1); + EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_SHEENSPEED"..(invoker.firespeed+1)); + } + XZW5 Q 4 A_StartSound("sheen/crankout",CHAN_WEAPON,CHANF_OVERLAP); + XZW5 R 5; + Goto Ready; + Reload: + XZW2 A 3 + { + A_StartSound("sheen/deselect",CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerCheckGun(); + } + XZW5 TUVW 3 A_BumpView(-.3,tics:3); + XZW5 XYZ 4 A_BumpView(-.1,tics:4); + XZW6 A 4; + XZW6 B 3 A_StartSound("sheen/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 CDE 3; + XZW6 F 2; + XZW6 GH 2 A_BumpView(1.,tics:2); + XZW6 IJKL 2; + Goto Ready; + User1: + XZW2 A 3 A_StartSound("sheen/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 MNO 3; + XZW6 PQR 3 A_BumpAngle(1,3); + XZW6 S 3 A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 T 3; + XZW6 U 2 + { + A_BumpFOV(.94); + A_QuakeEx(1.6,1.6,1.6,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.65); + A_Parry(9); + A_PlayerMelee(); + } + XZW6 V 2 A_BumpAngle(-15); + XZW6 W 2 A_Melee(80+int(invoker.barrelheat/4.),"demolitionist/whitl",1.35,1.3,1.4); + XZW6 XYZ 3; + XZW7 AB 4; + XZW7 C 4 A_StartSound("sheen/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW7 DEFGHIJKL 2; + Goto Ready; + Deselect: + XZW2 A 2 A_StartSound("sheen/deselect",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 BCDEFGHIJ 2 A_BumpView(.1,tics:2); + XZW2 K -1 + { + A_StopSound(CHAN_WEAPONEXTRA2); + A_FullLower(); + } + Stop; + Flash: + XZW0 A 2 Bright + { + let psp = player.FindPSprite(PSP_FLASH); + psp.frame = Random[GunFlash](0,23); + if ( (invoker.firespeed != 2) || !(invoker.shotcnt%3) ) + { + let l = Spawn('SWWMWeaponLight',pos); + l.target = self; + l.Args[3] -= (psp.frame%3)*20; + } + } + Stop; + } +} diff --git a/zscript/dlc/swwm_heavymahsheengun_fx.zsc b/zscript/dlc/swwm_heavymahsheengun_fx.zsc new file mode 100644 index 000000000..ca464348a --- /dev/null +++ b/zscript/dlc/swwm_heavymahsheengun_fx.zsc @@ -0,0 +1,105 @@ +// Sheen HMG projectiles and effects + +Class SheenCasing : SWWMCasing +{ + Default + { + BounceSound "sheen/casing"; + } +} + +Class SheenPhantom : SWWMNonInteractiveActor +{ + Default + { + +INTERPOLATEANGLES; + Alpha .5; + RenderStyle 'Add'; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_FadeOut(frame?.02:.05); + } + States + { + Spawn: + XZW1 A -1 Bright; + Stop; + } +} + +Class SheenTrail : SWWMNonInteractiveActor +{ + Default + { + Obituary "$O_SHEENHMG"; + DamageType 'Fire'; + +INTERPOLATEANGLES; + +FORCERADIUSDMG; + +NODAMAGETHRUST; + Speed 200; + RenderStyle 'Add'; + } + + override void Tick() + { + Vector3 oldpos = pos; + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + if ( CurState == SpawnState ) + { + Vector3 dir = SWWMUtility.Vec3FromAngles(angle,pitch); + Vector3 newpos = level.Vec3Offset(oldpos,dir*min(speed,specialf1)); + special1++; + for ( int i=0; i<4; i++ ) + { + let p = Spawn('SheenPhantom',level.Vec3Offset(oldpos,dir*(i+1)*50.)); + p.angle = angle; + p.pitch = pitch; + p.frame = special2; + p.alpha *= clamp((special1+i*.25)/2.,.25,1.); + } + // burn the air throughout + Vector3 tdir = level.Vec3Diff(oldpos,newpos); + double dist = tdir.length(); + tdir /= dist; + for ( int i=0; i 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + + States + { + Spawn: + XZW1 A -1 Bright; + Stop; + Death: + TNT1 A 5; + Stop; + } +} diff --git a/zscript/dlc/swwm_mister.zsc b/zscript/dlc/swwm_mister.zsc new file mode 100644 index 000000000..4a4e45ed1 --- /dev/null +++ b/zscript/dlc/swwm_mister.zsc @@ -0,0 +1,1591 @@ +// Plutoni Inc. Mortal Rifle (from UnSX 2) +// Slot 9, spawns shared with Candygun + +Class MRHitListEntry : HitListEntry +{ + // just needs this + bool bExit; +} + +// used for splitting model beam between crossed portals (if any) +Class MRRailSeg +{ + Vector3 enter, exit; +} + +// like the silver bullet tracer except there's no penetration factor +// just a maximum possible travel distance (which is mainly used for probing through walls) +Class MisterRailTracer : LineTracer +{ + Array hitlist; + Array shootthroughlist; + Array waterhitlist; + Array portalseg; + + int maxpen; + + bool pastwall, fullstop; + Array WallPenetrateList; + Vector3 exitpoint; + + override ETraceStatus TraceCallback() + { + // liquid splashes + if ( Results.CrossedWater ) + { + let hl = new('WaterHit'); + hl.hitpos = Results.CrossedWaterPos; + WaterHitList.Push(hl); + } + else if ( Results.Crossed3DWater ) + { + let hl = new('WaterHit'); + hl.hitpos = Results.Crossed3DWaterPos; + WaterHitList.Push(hl); + } + if ( Results.HitType == TRACE_CrossingPortal ) + { + let seg = new('MRRailSeg'); + seg.enter = Results.HitPos; + seg.exit = Results.SrcFromTarget; + portalseg.Push(seg); + } + else if ( Results.HitType == TRACE_HitActor ) + { + if ( Results.HitActor.bSHOOTABLE ) + { + let ent = new('MRHitListEntry'); + ent.hitactor = Results.HitActor; + ent.hitlocation = Results.HitPos; + ent.x = Results.HitVector; + ent.pastwall = pastwall; + ent.bExit = false; + hitlist.Push(ent); + // also include exit point + Vector3 exit = SWWMUtility.TraceExit(Results.HitActor,Results.HitPos,Results.HitVector); + ent = new('MRHitListEntry'); + ent.hitactor = Results.HitActor; + ent.hitlocation = exit; + ent.x = Results.HitVector; + ent.pastwall = pastwall; + ent.bExit = true; + hitlist.Push(ent); + return TRACE_Skip; + } + return TRACE_Skip; + } + else if ( Results.HitType != TRACE_HitNone ) + { + if ( Results.HitType == TRACE_HitWall ) + { + ShootThroughList.Push(Results.HitLine); + if ( (Results.Tier == TIER_Middle) && Results.HitLine.sidedef[1] && !(Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) ) + return TRACE_Skip; + } + for ( int i=1; i<=maxpen; i++ ) // originally meant to trace up to maxdist, but this destroyed performance + { + Vector3 ofs = Results.HitPos+Results.HitVector*i; + if ( level.IsPointInLevel(ofs) ) + { + // double-check if we're piercing through a 3D floor (yes this is a thing that happens, oh boy) + Sector s = level.PointInSector(ofs.xy); + bool stop3d = false; + for ( int j=0; j maxz) ) continue; + stop3d = true; + break; + } + if ( stop3d ) continue; + let wp = new("WallPenetrate"); + wp.hittype = Results.HitType; + wp.hitline = Results.HitLine; + wp.hitside = Results.Side; + wp.hittier = Results.Tier; + wp.hitsector = Results.HitSector; + wp.hitffloor = Results.ffloor; + wp.hitpos = Results.HitPos; + wp.hitdir = Results.HitVector; + wp.bustdir = Results.HitVector; + if ( Results.HitType == TRACE_HitWall ) + { + wp.hitnormal = (-Results.HitLine.delta.y,Results.HitLine.delta.x,0).unit(); + if ( !Results.Side ) wp.hitnormal *= -1; + ShootThroughList.Push(Results.HitLine); + } + else if ( Results.HitType == TRACE_HitCeiling ) + wp.hitnormal = Results.HitSector.ceilingplane.Normal; + else if ( Results.HitType == TRACE_HitFloor ) + wp.hitnormal = Results.HitSector.floorplane.Normal; + wp.pastwall = pastwall; + WallPenetrateList.Push(wp); + pastwall = true; + // trace backwards to find exit surface + let at = new("AuxiliarySilverBulletTracer"); + at.Trace(ofs,level.PointInSector(ofs.xy),-Results.HitVector,2.,0,ignoreallactors:true); + let wp2 = new("WallPenetrate"); + wp2.hittype = at.Results.HitType; + wp2.hitline = at.Results.HitLine; + wp2.hitside = at.Results.Side; + wp2.hittier = at.Results.Tier; + wp2.hitsector = at.Results.HitSector; + wp2.hitffloor = at.Results.ffloor; + wp2.hitside = at.Results.Side; + wp2.hitpos = at.Results.HitPos; + wp2.hitdir = at.Results.HitVector; + wp2.bustdir = -at.Results.HitVector; + if ( at.Results.HitType == TRACE_HitWall ) + { + wp2.hitnormal = (-at.Results.HitLine.delta.y,at.Results.HitLine.delta.x,0).unit(); + if ( !at.Results.Side ) wp2.hitnormal *= -1; + if ( at.Results.HitLine.sidedef[1] ) + ShootThroughList.Push(at.Results.HitLine); + } + else if ( at.Results.HitType == TRACE_HitCeiling ) + wp2.hitnormal = at.Results.HitSector.ceilingplane.Normal; + else if ( at.Results.HitType == TRACE_HitFloor ) + wp2.hitnormal = at.Results.HitSector.floorplane.Normal; + else wp2.hitnormal = wp2.hitdir; + wp2.pastwall = pastwall; + WallPenetrateList.Push(wp2); + fullstop = false; + exitpoint = ofs; + return TRACE_Stop; + } + } + fullstop = true; + return TRACE_Stop; + } + return TRACE_Skip; + } +} + +Class MisterRailCounter : Thinker +{ + PlayerInfo player; + Array effectors; + int nkill; + + override void Tick() + { + int neff = 0; + foreach ( e:effectors ) + { + if ( !e ) continue; + neff++; + } + if ( neff > 0 ) return; + SWWMUtility.AchievementProgress("rail",nkill,player); + Destroy(); + } +} + +Class MisterRifle : SWWMWeapon +{ + int clipcount; + bool chambered, fired; + bool gchambered, gfired; + bool boltlock; + bool waschambered; + bool wasgchambered; + double prefirecnt; + transient int holdtic; + int firemode; + String serialnum; + + transient ui SmoothLinearValueInterpolator PreFireInter; + + // for alerts in the canvas + transient int lowammotic, noammotic; + + Property ClipCount : clipcount; + + override void InitializeWeapon() + { + // no round in the chamber + chambered = false; + fired = false; + // no grenade loaded + gchambered = false; + gfired = false; + // bolt isn't locked + boltlock = false; + // generate a serial number + serialnum = "00000"; + SWWMUtility.ObscureText(serialnum,Random[MRifle](),true); + } + + override void HudTick() + { + Super.HudTick(); + if ( !PreFireInter ) PreFireInter = SmoothLinearValueInterpolator.Create(prefirecnt,100.); + PreFireInter.Update(prefirecnt); + } + + override Vector3 GetTraceOffset( int index ) + { + return (10,2.8,-2.4); + } + + override bool ReportHUDAmmo() + { + return (chambered&&!fired)||(clipcount>0)||(Ammo1.Amount>0)||(Owner.CountInv('MisterRound')>0)||(gchambered&&!gfired)||(Ammo2.Amount>0); + } + + override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) + { + if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; + if ( firemode == PrimaryFire ) return (chambered&&!fired)||(clipcount>0)||(Ammo1.Amount>0)||(Owner.CountInv('MisterRound')>0); + if ( firemode == AltFire ) return (gchambered&&!gfired)||(Ammo2.Amount>0); + return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); + } + + override bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon ) + { + bool good = Super.PickupForAmmoSWWM(ownedWeapon); + let Owner = ownedWeapon.Owner; + if ( AmmoGive1 == 0 ) + { + // give bullets? + if ( (clipcount > 0) || (chambered && !fired) ) + { + Inventory cur = Owner.FindInventory('MisterRound'); + if ( !cur ) + { + cur = Inventory(Spawn('MisterRound')); + cur.Amount = 0; + cur.AttachToOwner(Owner); + } + int ingun = clipcount+(chambered&&!fired); + int maxgiveamt = min(cur.MaxAmount-cur.Amount,ingun); + int dropamt = ingun-maxgiveamt; + if ( dropamt > 0 ) cur.CreateTossable(dropamt); + cur.Amount = min(cur.MaxAmount,cur.Amount+ingun); + good = true; + } + // give grenade? + if ( gchambered && !gfired ) + { + Inventory cur = Owner.FindInventory('MisterGAmmo'); + if ( !cur ) + { + cur = Inventory(Spawn('MisterGAmmo')); + cur.Amount = 0; + cur.AttachToOwner(Owner); + } + int ingun = (gchambered&&!gfired); + int maxgiveamt = min(cur.MaxAmount-cur.Amount,ingun); + int dropamt = ingun-maxgiveamt; + if ( dropamt > 0 ) cur.CreateTossable(dropamt); + cur.Amount = min(cur.MaxAmount,cur.Amount+ingun); + good = true; + } + } + return good; + } + + override void PlayUpSound( Actor origin ) + { + if ( (clipcount > 0) && (!chambered || fired) ) origin.A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + else origin.A_StartSound(UpSound,CHAN_WEAPON,CHANF_OVERLAP); + } + + action void A_AmmoAlert( bool bOnReload = false ) + { + int curammo = invoker.clipcount+(invoker.chambered&&!invoker.fired); + if ( curammo == 0 ) + { + // no ammo alert + if ( CheckLocalView() ) A_StartSound("mister/noammo",CHAN_WEAPON,CHANF_OVERLAP); + invoker.noammotic = gametic+50; + } + else if ( (curammo == 4) || (bOnReload && (curammo <= 4)) ) + { + // low ammo alert + if ( CheckLocalView() ) A_StartSound("mister/lowammo",CHAN_WEAPON,CHANF_OVERLAP); + invoker.lowammotic = gametic+40; + } + } + + action void A_BoltBack( bool bCasing = false ) + { + A_StartSound("mister/boltback",CHAN_WEAPON,CHANF_OVERLAP); + if ( bCasing ) + { + invoker.waschambered = invoker.chambered; + A_ChangeModel("",1,"","",10,"models","MortalRound_Used.png",CMDL_USESURFACESKIN,-1); + } + invoker.chambered = invoker.fired = false; + A_AmmoAlert(); + } + + action void A_BoltForward( bool bFlick = false ) + { + A_StartSound("mister/boltforward",CHAN_WEAPON,CHANF_OVERLAP); + invoker.boltlock = false; + if ( invoker.ClipCount > 0 ) + { + invoker.clipcount--; + invoker.chambered = true; + invoker.fired = false; + } + if ( bFlick && (player == players[consoleplayer]) && swwm_beepboop ) + SWWMHandler.AddOneliner("mrflick",2,0); + } + + action void A_DropCasing() + { + A_ChangeModel("",1,"","",10,"models","",CMDL_USESURFACESKIN,-1); + if ( !invoker.waschambered ) return; + // brass it up (though it's not made of brass) + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,2,3,-18); + let c = Spawn('MisterCasing',origin); + c.angle = angle; + c.pitch = pitch; + c.vel = x*FRandom[Junk](-.25,.25)+y*FRandom[Junk](-.25,.25)-(0,0,FRandom[Junk](4.,6.)); + c.vel += vel*.5; + } + + action void A_FireSelect() + { + if ( CheckLocalView() ) A_StartSound("mister/fireselect",CHAN_WEAPON,CHANF_OVERLAP); + invoker.firemode = (invoker.firemode+1)%4; + EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_MRMODE"..(invoker.firemode+1)); + if ( (player == players[consoleplayer]) && swwm_beepboop ) + SWWMHandler.AddOneliner("mrtouch",2,0); + } + + action void A_MagOut() + { + A_PlayerReload(); + A_StartSound("mister/magout",CHAN_WEAPON,CHANF_OVERLAP); + A_ChangeModel("",1,"","",7,"models",(invoker.clipcount>0)?"MortalMag.png":"MortalMag_Empty.png",CMDL_USESURFACESKIN,-1); + MagAmmo ma = MagAmmo(FindInventory('MisterRound')); + if ( !ma ) + { + ma = MagAmmo(Spawn('MisterRound')); + ma.Amount = 0; + ma.AttachToOwner(self); + } + int maxgiveamt = min(ma.MaxAmount-ma.Amount,invoker.clipcount); + int dropamt = invoker.clipcount-maxgiveamt; + if ( dropamt > 0 ) invoker.BufferMagAmmo('MisterRound',dropamt); + ma.Amount = min(ma.MaxAmount,ma.Amount+invoker.clipcount); + ma.MagFill(); + invoker.clipcount = 0; + } + + action void A_MagDrop() + { + // ensure mag is invisible to avoid weird interpolation to hand + A_ChangeModel("",1,"","",7,"models","",CMDL_USESURFACESKIN,-1); + if ( swwm_nomagdrop ) return; + // drop it + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,6,3,-18); + let c = Spawn('MisterMag',origin); + c.angle = angle; + c.pitch = pitch; + c.vel = x*FRandom[Junk](-.2,.2)+y*FRandom[Junk](-.2,.2)-(0,0,FRandom[Junk](2.,4.)); + c.vel += vel*.5; + } + + action void A_MagGrab() + { + // ensure mag is full + A_ChangeModel("",1,"","",7,"models","MortalMag.png",CMDL_USESURFACESKIN,-1); + A_StartSound("mister/magget",CHAN_WEAPON,CHANF_OVERLAP); + } + + action void A_MagIn() + { + MagAmmo sb = MagAmmo(FindInventory('MisterRound')); + if ( sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) ) + invoker.clipcount = invoker.default.clipcount; + else if ( (invoker.Ammo1.Amount <= 0) || (sb.Amount >= sb.ClipSize) ) + { + int takeamt = min(sb.Amount,sb.ClipSize); + invoker.clipcount = takeamt; + sb.Amount -= takeamt; + int req = invoker.default.ClipCount-invoker.clipcount; + if ( req > 0 ) invoker.clipcount += invoker.FetchBufferedMagAmmo('MisterRound',req); + } + else if ( invoker.FetchBufferedMagAmmo('MisterRound',sb.ClipSize,true) ) + invoker.clipcount = invoker.default.clipcount; + else + { + invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); + invoker.clipcount = invoker.default.clipcount; + } + invoker.ClearBufferedAmmo(); + A_AmmoAlert(true); + } + + action State A_MisterFire() + { + if ( !invoker.chambered || invoker.fired ) + { + // auto-chamber just in case (rarely ever happens) + if ( invoker.ClipCount > 0 ) + return ResolveState('AutoCycle'); + // auto-reload if we're out + if ( (invoker.clipcount <= 0) && ((invoker.Ammo1.Amount > 0) || (CountInv('MisterRound') > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo')) ) + return ResolveState('Reload'); + } + // this one is handled separately + if ( invoker.firemode >= 3 ) return ResolveState('FireOverpressure'); + A_PlayerFire(); + A_SWWMFlash(); + invoker.fired = true; + if ( invoker.firemode == 2 ) + { + // stream shot + // individual sub-shots handled in the state sequence, not here + A_StartSound("mister/firestream",CHAN_WEAPON,CHANF_OVERLAP); + SWWMHandler.DoFlash(self,Color(32,64,224,255),2); + A_AlertMonsters(swwm_uncapalert?0:4000); + A_MisterFireStream(0); + return ResolveState('FireStream'); + } + SWWMHandler.DoFlash(self,Color(48,64,224,255),3); + Vector3 x = SWWMUtility.GetPlayerViewDir(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,2.8,-2.4); + if ( invoker.firemode == 1 ) + { + // cluster shot + A_StartSound("mister/firescatter",CHAN_WEAPON,CHANF_OVERLAP); + SWWMUtility.DoKnockback(self,-x,15000.); + A_QuakeEx(6.,6.,6.,8,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.3); + A_BumpFOV(.92); + A_AlertMonsters(swwm_uncapalert?0:8000); + for ( int i=0; i<10; i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.scale *= .6; + s.alpha *= .15; + s.speed *= .8; + s.vel += vel*.5+x*FRandom[Mister](1.,4.); + s.SetShade(Color(0,3,4)*Random[ExploS](48,63)); + } + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + double a, s; + Vector3 dir; + for ( int i=0; i<8; i++ ) + { + // initial shot, triangle + if ( i < 3 ) + { + a = 90+120*i+FRandom[Mister](-15,15); + s = .04+FRandom[Mister](-.01,.01); + dir = SWWMUtility.ConeSpread(x2,y2*1.5,z2,a,s); + } + // next five shots, pentagon + else + { + a = -90+72*(i-3)+FRandom[Mister](-9,9); + s = .08+FRandom[Mister](-.02,.02); + dir = SWWMUtility.ConeSpread(x2,y2*2.,z2,a,s); + } + FLineTraceData d; + LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + SWWMBulletTrail.DoTrail(self,origin,dir,10000,6); + if ( d.HitType == TRACE_HitActor ) + { + if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT ) + { + let p = Spawn('SpreadImpact',d.HitLocation); + p.angle = atan2(d.HitDir.y,d.HitDir.x)+180; + p.pitch = asin(d.HitDir.z); + p.target = self; + } + let b = Spawn('MisterBuckshotImpact',d.HitLocation-d.HitDir*4.); + b.angle = atan2(d.HitDir.y,d.HitDir.x)+180; + b.pitch = asin(d.HitDir.z); + b.target = self; + MisterBulletImpact(b).A_BulletExplode(); + } + else if ( d.HitType != TRACE_HitNone ) + { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + let p = Spawn('SpreadImpact',d.HitLocation+hitnormal*0.01); + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + p.target = self; + if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + let b = Spawn('MisterBuckshotImpact',d.HitLocation+hitnormal*4.); + b.angle = atan2(hitnormal.y,hitnormal.x); + b.pitch = asin(-hitnormal.z); + b.target = self; + MisterBulletImpact(b).A_BulletExplode(); + if ( swwm_omnibust ) BusterWall.BustLinetrace(d,444,self,d.HitDir,d.HitLocation.z); + } + } + return ResolveState('FireCluster'); + } + // precision shot + A_StartSound("mister/firesemi",CHAN_WEAPON,CHANF_OVERLAP); + SWWMUtility.DoKnockback(self,-x,9000.); + A_QuakeEx(5.,5.,5.,6,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.8); + A_BumpFOV(.95); + A_AlertMonsters(swwm_uncapalert?0:6000); + for ( int i=0; i<6; i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.scale *= .4; + s.alpha *= .1; + s.speed *= .5; + s.vel += vel*.5+x*FRandom[Mister](1.,2.); + s.SetShade(Color(0,3,4)*Random[ExploS](48,63)); + } + Vector3 dir = SWWMUtility.GetPlayerAimDir(self); + FLineTraceData d; + LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + SWWMBulletTrail.DoTrail(self,origin,dir,10000,2); + if ( d.HitType == TRACE_HitActor ) + { + if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT ) + { + let p = Spawn('SWWMBulletImpact',d.HitLocation); + p.angle = atan2(d.HitDir.y,d.HitDir.x)+180; + p.pitch = asin(d.HitDir.z); + p.target = self; + } + let b = Spawn('MisterBulletImpact',d.HitLocation-d.HitDir*4.); + b.angle = atan2(d.HitDir.y,d.HitDir.x)+180; + b.pitch = asin(d.HitDir.z); + b.target = self; + MisterBulletImpact(b).A_BulletExplode(); + } + else if ( d.HitType != TRACE_HitNone ) + { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + let p = Spawn('SWWMBulletImpact',d.HitLocation+hitnormal*0.01); + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + p.target = self; + if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + let b = Spawn('MisterBulletImpact',d.HitLocation+hitnormal*4.); + b.angle = atan2(hitnormal.y,hitnormal.x); + b.pitch = asin(-hitnormal.z); + b.target = self; + MisterBulletImpact(b).A_BulletExplode(); + if ( swwm_omnibust ) BusterWall.BustLinetrace(d,444,self,d.HitDir,d.HitLocation.z); + } + return ResolveState(null); + } + + action void A_MisterFireStream( int index ) + { + if ( index != 0 ) + { + A_PlayerFire(); + SWWMHandler.DoFlash(self,Color(32,64,224,255),2); + A_SWWMFlash('FastFlash'); + } + Vector3 x = SWWMUtility.GetPlayerViewDir(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,2.8,-2.4); + SWWMUtility.DoKnockback(self,-x,5000.); + A_QuakeEx(3.,3.,3.,5,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_BumpFOV(.97); + if ( index == 0 ) A_AlertMonsters(swwm_uncapalert?0:5000); + for ( int i=0; i<3; i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.scale *= .4; + s.alpha *= .1; + s.speed *= .5; + s.vel += vel*.5+x*FRandom[Mister](1.,2.); + s.SetShade(Color(0,3,4)*Random[ExploS](48,63)); + } + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + static const double spd[] = {.00,.01,.03,.06,.10}; + double a = FRandom[Mister](0,360), s = FRandom[Mister](spd[index],spd[index+1]); + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + FLineTraceData d; + LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + SWWMBulletTrail.DoTrail(self,origin,dir,10000,4); + if ( d.HitType == TRACE_HitActor ) + { + if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT ) + { + let p = Spawn('SWWMBulletImpact',d.HitLocation); + p.angle = atan2(d.HitDir.y,d.HitDir.x)+180; + p.pitch = asin(d.HitDir.z); + p.target = self; + } + let b = Spawn('MisterStreamImpact',d.HitLocation-d.HitDir*4.); + b.angle = atan2(d.HitDir.y,d.HitDir.x)+180; + b.pitch = asin(d.HitDir.z); + b.target = self; + MisterBulletImpact(b).A_BulletExplode(); + } + else if ( d.HitType != TRACE_HitNone ) + { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + let p = Spawn('SWWMBulletImpact',d.HitLocation+hitnormal*0.01); + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + p.target = self; + if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + let b = Spawn('MisterStreamImpact',d.HitLocation+hitnormal*4.); + b.angle = atan2(hitnormal.y,hitnormal.x); + b.pitch = asin(-hitnormal.z); + b.target = self; + MisterBulletImpact(b).A_BulletExplode(); + if ( swwm_omnibust ) BusterWall.BustLinetrace(d,444,self,d.HitDir,d.HitLocation.z); + } + } + + override void OwnerDied() + { + Super.OwnerDied(); + prefirecnt = 0; + } + override void Travelled() + { + Super.Travelled(); + prefirecnt = 0; + } + + action void A_MisterStartRail() + { + // pre-heat our ovens + A_CanBob(); + A_StartSound("mister/chargeover",CHAN_WEAPON,CHANF_OVERLAP); + A_StartSound("mister/holdover",CHAN_WEAPONEXTRA,CHANF_LOOPING,.01,4.,.5); + invoker.prefirecnt = 0; + } + + action State A_MisterHoldRail() + { + A_CanBob(); + if ( (invoker.prefirecnt < 100) && !(player.cmd.buttons&BT_ATTACK) ) + { + invoker.prefirecnt = 0; + A_StopSound(CHAN_WEAPONEXTRA); + A_StartSound("mister/cancelover",CHAN_WEAPON,CHANF_OVERLAP); + return ResolveState('FireOverpressureCancel'); + } + if ( invoker.prefirecnt < 100 ) + { + invoker.prefirecnt += 2.; + if ( invoker.prefirecnt >= 100 ) + { + invoker.prefirecnt = 100; + invoker.holdtic = gametic; + } + } + A_SoundVolume(CHAN_WEAPONEXTRA,clamp(invoker.prefirecnt*.01,.01,1.)); + A_SoundPitch(CHAN_WEAPONEXTRA,clamp(.5+invoker.prefirecnt*.005,.5,1.)**.5); + if ( (invoker.prefirecnt >= 100) && !((gametic-invoker.holdtic)%32) && CheckLocalView() ) + A_StartSound("mister/beepover",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf((invoker.prefirecnt>=100)&&!(player.cmd.buttons&BT_ATTACK),'FireOverpressureRelease'); + } + + action void A_MisterFireRail() + { + invoker.prefirecnt = 0; + A_StopSound(CHAN_WEAPONEXTRA); + A_PlayerFire(); + Vector3 x = SWWMUtility.GetPlayerViewDir(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,2.8,-2.4); + SWWMHandler.DoFlash(self,Color(64,64,224,255),9); + A_SWWMFlash('RailFlash'); + invoker.fired = true; + A_StartSound("mister/fireover",CHAN_WEAPON,CHANF_OVERLAP); + SWWMUtility.DoKnockback(self,-x,90000.); + A_QuakeEx(8.,8.,8.,12,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:2.); + A_BumpFOV(.85); + A_AlertMonsters(swwm_uncapalert?0:12000); + for ( int i=0; i<12; i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.scale *= .4; + s.alpha *= .1; + s.vel += vel*.5+x*FRandom[Mister](1.,12.); + s.SetShade(Color(0,3,4)*Random[ExploS](48,63)); + } + Vector3 dir, startdir; + startdir = dir = SWWMUtility.GetPlayerAimDir(self); + let mrt = new('MisterRailTracer'); // I pity the fool + mrt.hitlist.Clear(); + mrt.shootthroughlist.Clear(); + mrt.waterhitlist.Clear(); + mrt.wallpenetratelist.Clear(); + mrt.portalseg.Clear(); + mrt.maxpen = 400; + mrt.pastwall = false; + Vector3 norigin = origin; + double maxdist = 10000.; + do + { + mrt.fullstop = true; + mrt.Trace(norigin,level.PointInSector(norigin.xy),dir,maxdist,TRACE_ReportPortals,ignore:self); + mrt.maxpen -= 100; + maxdist -= (mrt.exitpoint-norigin).length(); + norigin = mrt.exitpoint; + dir = mrt.Results.HitVector; + } + while ( !mrt.fullstop ); + let mrc = new('MisterRailCounter'); + mrc.ChangeStatNum(STAT_USER); // so it can tick + mrc.player = player; + Vector3 sstart = origin; + // beam segments + if ( mrt.portalseg.Size() <= 0 ) + { + Vector3 sdir = mrt.Results.HitPos-sstart; + double sdist = sdir.length(); + sdir /= sdist; + Actor b; + if ( sdist > 32 ) + { + b = Spawn('MisterRailBeam',sstart); + b.target = self; + b.frame = 1; + b.speed = 32; + [b.angle, b.pitch, b.scale.y] = SWWMUtility.CalcYBeam(sdir,32); + MisterRailBeam(b).mrc = mrc; + mrc.effectors.Push(b); + sstart += sdir*32; + sdist -= 32; + b = Spawn('MisterRailBeam',sstart); + } + else + { + b = Spawn('MisterRailBeam',sstart); + b.frame = 1; + } + b.target = self; + b.speed = sdist; + [b.angle, b.pitch, b.scale.y] = SWWMUtility.CalcYBeam(sdir,sdist); + MisterRailBeam(b).mrc = mrc; + mrc.effectors.Push(b); + } + else for ( int i=0; i 32 ) + { + b = Spawn('MisterRailBeam',sstart); + b.target = self; + b.frame = 1; + b.speed = 32; + [b.angle, b.pitch, b.scale.y] = SWWMUtility.CalcYBeam(sdir,32); + MisterRailBeam(b).mrc = mrc; + mrc.effectors.Push(b); + sstart += sdir*32; + sdist -= 32; + b = Spawn('MisterRailBeam',sstart); + } + else + { + b = Spawn('MisterRailBeam',sstart); + b.frame = 1; + } + } + else b = Spawn('MisterRailBeam',sstart); + b.target = self; + b.speed = sdist; + [b.angle, b.pitch, b.scale.y] = SWWMUtility.CalcYBeam(sdir,sdist); + MisterRailBeam(b).mrc = mrc; + mrc.effectors.Push(b); + sstart = mrt.portalseg[i].exit; + if ( i == (mrt.portalseg.Size()-1) ) + { + sdir = mrt.Results.HitPos-sstart; + sdist = sdir.length(); + sdir /= sdist; + b = Spawn('MisterRailBeam',sstart); + b.target = self; + b.speed = sdist; + [b.angle, b.pitch, b.scale.y] = SWWMUtility.CalcYBeam(sdir,sdist); + MisterRailBeam(b).mrc = mrc; + mrc.effectors.Push(b); + } + } + foreach ( l:mrt.ShootThroughList ) + { + l.Activate(self,0,SPAC_Impact); + l.Activate(self,0,SPAC_PCross); + } + foreach ( w:mrt.WaterHitList ) + { + let b = Spawn('InvisibleSplasher',w.hitpos); + b.target = self; + b.A_CheckTerrain(); + } + Array bi; // so we can ignite them all at once after main contact damage + bool bskipme = false; + for ( int i=0; i 0 ) + { + Vector3 start = origin; + Vector3 end = mrt.WallPenetrateList[0].hitpos; + Vector3 tdir = level.Vec3Diff(start,end); + double dist = tdir.length(); + tdir /= dist; + MisterRailHit mrh; + for ( double d=50.; d<=dist; d+=100. ) + { + Vector3 ofs = level.Vec3Offset(start,tdir*d); + if ( !level.IsPointInLevel(ofs) ) continue; + if ( mrh ) + { + mrh.SetOrigin(ofs,false); + mrh.Explode(); + continue; + } + mrh = MisterRailHit(Spawn('MisterRailHit',ofs)); + mrh.target = self; + mrh.mrc = mrc; + mrc.effectors.Push(mrh); + mrh.Explode(); + } + for ( double d=4.; d<=dist; d+=16. ) + { + if ( !Random[ExploS](0,1) ) continue; + Vector3 ofs = level.Vec3Offset(start,tdir*d); + if ( !level.IsPointInLevel(ofs) ) continue; + let b = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',ofs); + b.Scale *= FRandom[ExploS](.7,1.4); + b.alpha *= .2; + b.framestep = Random[ExploS](2,4); + b.scolor = Color(2,3,4)*Random[ExploS](48,63); + } + for ( int i=1; i= mrt.WallPenetrateList.Size()-1 ) end = mrt.Results.HitPos; + else end = mrt.WallPenetrateList[i+1].hitpos; + tdir = level.Vec3Diff(start,end); + dist = tdir.length(); + tdir /= dist; + for ( double d=50.; d<=dist; d+=100. ) + { + Vector3 ofs = level.Vec3Offset(start,tdir*d); + if ( !level.IsPointInLevel(ofs) ) continue; + if ( mrh ) + { + mrh.SetOrigin(ofs,false); + mrh.Explode(); + continue; + } + mrh = MisterRailHit(Spawn('MisterRailHit',ofs)); + mrh.target = self; + mrh.mrc = mrc; + mrc.effectors.Push(mrh); + mrh.Explode(); + } + for ( double d=4.; d<=dist; d+=16. ) + { + if ( !Random[ExploS](0,1) ) continue; + Vector3 ofs = level.Vec3Offset(start,tdir*d); + if ( !level.IsPointInLevel(ofs) ) continue; + let b = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',ofs); + b.Scale *= FRandom[ExploS](.7,1.4); + b.alpha *= .2; + b.framestep = Random[ExploS](2,4); + b.scolor = Color(2,3,4)*Random[ExploS](48,63); + } + } + } + else + { + MisterRailHit mrh; + for ( double d=50.; d<=mrt.Results.Distance; d+=100. ) + { + Vector3 ofs = level.Vec3Offset(origin,startdir*d); + if ( !level.IsPointInLevel(ofs) ) continue; + if ( mrh ) + { + mrh.SetOrigin(ofs,false); + mrh.Explode(); + continue; + } + mrh = MisterRailHit(Spawn('MisterRailHit',ofs)); + mrh.target = self; + mrh.mrc = mrc; + mrc.effectors.Push(mrh); + mrh.Explode(); + } + for ( double d=4.; d<=mrt.Results.Distance; d+=16. ) + { + if ( !Random[ExploS](0,1) ) continue; + Vector3 ofs = level.Vec3Offset(origin,startdir*d); + if ( !level.IsPointInLevel(ofs) ) continue; + let b = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',ofs); + b.Scale *= FRandom[ExploS](.7,1.4); + b.alpha *= .2; + b.framestep = Random[ExploS](2,4); + b.scolor = Color(2,3,4)*Random[ExploS](48,63); + } + } + } + + action void A_MisterFireGrenade() + { + A_PlayerFire(); + Vector3 x = SWWMUtility.GetPlayerViewDir(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,2.8,-4); + SWWMHandler.DoFlash(self,Color(64,64,224,255),3); + A_SWWMFlash('AltFlash'); + invoker.gfired = true; + A_StartSound("mister/grenade",CHAN_WEAPON,CHANF_OVERLAP); + SWWMUtility.DoKnockback(self,-x,12000.); + A_QuakeEx(4.,4.,4.,5,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.6); + A_BumpFOV(.96); + A_AlertMonsters(swwm_uncapalert?0:5000); + for ( int i=0; i<9; i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.scale *= .4; + s.alpha *= .1; + s.vel += vel*.5+x*FRandom[Mister](1.,4.); + s.SetShade(Color(0,3,4)*Random[ExploS](48,63)); + } + Vector3 dir = SWWMUtility.GetPlayerAimDir(self); + let p = Spawn('MisterGrenade',origin); + p.target = self; + p.angle = atan2(dir.y,dir.x); + p.pitch = asin(-dir.z); + p.vel = dir*p.speed; + } + + action void A_GrenadeOpen() + { + A_PlayerReload(); + A_StartSound("mister/grenadeopen"); + invoker.wasgchambered = invoker.gchambered; + // theoretically, this is an either-or situation + // either there's no grenade in the chamber whatsoever + // or there's the casing of a fired grenade + if ( !invoker.wasgchambered ) + { + // hide both surfaces + A_ChangeModel("",1,"","",8,"models","",CMDL_USESURFACESKIN,-1); + A_ChangeModel("",1,"","",9,"models","",CMDL_USESURFACESKIN,-1); + } + else + { + // show only a fired cartridge + A_ChangeModel("",1,"","",8,"models","MortalGrenade_Used.png",CMDL_USESURFACESKIN,-1); + A_ChangeModel("",1,"","",9,"models","",CMDL_USESURFACESKIN,-1); + } + invoker.gfired = invoker.gchambered = false; + } + + action void A_GrenadeDrop() + { + A_ChangeModel("",1,"","",8,"models","",CMDL_USESURFACESKIN,-1); + A_ChangeModel("",1,"","",9,"models","",CMDL_USESURFACESKIN,-1); + if ( !invoker.wasgchambered ) return; + // droppage + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,8,3,-18); + let c = Spawn('MisterGCasing',origin); + c.angle = angle; + c.pitch = pitch; + c.vel = x*FRandom[Junk](-.2,.2)+y*FRandom[Junk](-.2,.2)-(0,0,FRandom[Junk](2.,4.)); + c.vel += vel*.5; + } + + action void A_GrenadeGrab() + { + // the full thingy + A_ChangeModel("",1,"","",8,"models","MortalGrenade.png",CMDL_USESURFACESKIN,-1); + A_ChangeModel("",1,"","",9,"models","MortalGrenade.png",CMDL_USESURFACESKIN,-1); + A_StartSound("mister/grenadeget",CHAN_WEAPON,CHANF_OVERLAP); + } + + action void A_GrenadeIn() + { + A_StartSound("mister/grenadein",CHAN_WEAPON,CHANF_OVERLAP); + if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo') ) + invoker.Ammo2.Amount = max(0,invoker.Ammo2.Amount-1); + invoker.gchambered = true; + invoker.gfired = false; + } + + action void A_GrenadeClose() + { + // we no longer need the model, hide it + A_ChangeModel("",1,"","",8,"models","",CMDL_USESURFACESKIN,-1); + A_ChangeModel("",1,"","",9,"models","",CMDL_USESURFACESKIN,-1); + A_StartSound("mister/grenadeclose",CHAN_WEAPON,CHANF_OVERLAP); + } + + action void A_UpdatePickup() + { + frame = invoker.boltlock; + } + + override void MarkPrecacheSounds() + { + Super.MarkPrecacheSounds(); + MarkSound("mister/select"); + MarkSound("mister/deselect"); + MarkSound("mister/meleestart"); + MarkSound("mister/meleeend"); + MarkSound("mister/boltback"); + MarkSound("mister/boltforward"); + MarkSound("mister/fireselect"); + MarkSound("mister/lowammo"); + MarkSound("mister/noammo"); + MarkSound("mister/firesemi"); + MarkSound("mister/firescatter"); + MarkSound("mister/firestream"); + MarkSound("mister/fireover"); + MarkSound("mister/chargeover"); + MarkSound("mister/magout"); + MarkSound("mister/magin"); + MarkSound("mister/grenade"); + MarkSound("mister/grenadeopen"); + MarkSound("mister/grenadeget"); + MarkSound("mister/grenadein"); + MarkSound("mister/grenadeclose"); + MarkSound("mister/hitsemi1"); + MarkSound("mister/hitsemi2"); + MarkSound("mister/hitsemi3"); + MarkSound("mister/hitscatter1"); + MarkSound("mister/hitscatter2"); + MarkSound("mister/hitscatter3"); + MarkSound("mister/hitstream1"); + MarkSound("mister/hitstream2"); + MarkSound("mister/hitstream3"); + MarkSound("mister/hitover1"); + MarkSound("mister/hitover2"); + MarkSound("mister/hitover3"); + MarkSound("mister/hitgrenade1"); + MarkSound("mister/hitgrenade2"); + MarkSound("mister/hitgrenade3"); + MarkSound("mister/hitgrenadesub1"); + MarkSound("mister/hitgrenadesub2"); + MarkSound("mister/hitgrenadesub3"); + MarkSound("mister/casing1"); + MarkSound("mister/casing2"); + MarkSound("mister/casing3"); + MarkSound("mister/casing4"); + MarkSound("mister/gcasing1"); + MarkSound("mister/gcasing2"); + MarkSound("mister/gcasing3"); + MarkSound("mister/gcasing4"); + MarkSound("mister/gbounce1"); + MarkSound("mister/gbounce2"); + MarkSound("mister/gbounce3"); + MarkSound("mister/gbouncesub1"); + MarkSound("mister/gbouncesub2"); + MarkSound("mister/gbouncesub3"); + } + + Default + { + Tag "$T_MORTALRIFLE"; + Inventory.Icon "graphics/HUD/Icons/W_MortalRifle.png"; + Inventory.PickupMessage "$T_MORTALRIFLE"; + Obituary "$O_MORTALRIFLE"; + SWWMWeapon.Tooltip "$TT_MORTALRIFLE"; + SWWMWeapon.GetLine "getmortalrifle"; + Weapon.SlotNumber 9; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 850; + Weapon.UpSound "mister/select"; + Weapon.AmmoType1 'MisterAmmo'; + Weapon.AmmoGive1 1; + Weapon.AmmoType2 'MisterGAmmo'; + Weapon.AmmoGive2 0; + SWWMWeapon.DropAmmoType 'SWWMCellAmmoBig'; + MisterRifle.ClipCount 12; + Stamina 1600000; + +SWWMWEAPON.NOFIRSTGIVE; + +SWWMWEAPON.HASSCRTEX; + +WEAPON.BFG; + } + States + { + Select: + XZW2 P 2 + { + A_ChangeModel("",1,"","",7,"models","MortalMag.png",CMDL_USESURFACESKIN,-1); + A_FullRaise(); + if ( invoker.boltlock ) return ResolveState('SelectLock'); + if ( (invoker.clipcount > 0) && (!invoker.chambered || invoker.fired) ) + return ResolveState('SelectCycle'); + return ResolveState(null); + } + XZW2 QRSTUV 2; + XZW2 WXYZ 1; + XZW3 ABCD 2; + Goto Ready; + SelectLock: + XZWB TUVWXYZ 2; + XZWC ABCD 1; + XZWC EFGH 2; + Goto ReadyLock; + SelectCycle: + XZWI RSTUVWXYZ 2; + XZWJ A 2 A_BoltBack(); + XZWJ B 2; + XZWJ C 4; + XZWJ D 2 + { + A_BoltForward(); + A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.15); + } + XZWJ EFG 2; + XZWJ HIJK 1; + XZWJ LMNO 2; + Goto Ready; + Ready: + XZW2 A 1 + { + int flg = (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1); + // can't alt-fire if we have no grenades left + if ( (!invoker.gchambered || invoker.gfired) && (invoker.Ammo2.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo') ) + flg |= WRF_NOSECONDARY; + A_WeaponReady(flg); + if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) ) + invoker.CheckAmmo(EitherFire,true); + } + Wait; + ReadyLock: + XZWB E 1 + { + int flg = (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1); + // can't alt-fire if we have no grenades left + if ( (!invoker.gchambered || invoker.gfired) && (invoker.Ammo2.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo') ) + flg |= WRF_NOSECONDARY; + // can't use primary fire if we have no ammo to reload from + if ( (invoker.Ammo1.Amount <= 0) && (CountInv('MisterRound') <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo') ) + flg |= WRF_NOPRIMARY; + A_WeaponReady(flg); + if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) ) + invoker.CheckAmmo(EitherFire,true); + } + Wait; + AutoCycle: + XZW2 A 1 A_JumpIf(invoker.clipcount<=0,'AutoCycleLock'); + XZW6 H 2 A_BoltBack(true); + XZW6 IJ 2; + XZW6 K 2 A_BoltForward(); + XZW6 LMN 2; + XZW6 O 3 A_DropCasing(); + Goto Ready; + AutoCycleLock: + XZW2 A 1 { invoker.boltlock = true; } + XZWA W 2 A_BoltBack(true); + XZWA XYZ 2; + XZWB ABC 2; + XZWB D 3 A_DropCasing(); + Goto ReadyLock; + Fire: + XZW2 A 1 A_MisterFire(); + XZW3 EFGH 1; + XZW3 IJK 2; + Goto AutoCycle; + FireCluster: + XZW2 A 1; + XZW3 LMN 1; + XZW3 OPQRS 2; + Goto AutoCycle; + FireStream: + XZW2 A 1 A_MisterFireStream(1); + XZW3 T 1 A_MisterFireStream(2); + XZW3 U 1 A_MisterFireStream(3); + XZW3 VWXY 1; + XZW3 Z 2; + XZW4 ABC 2; + Goto AutoCycle; + FireOverpressure: + XZW2 A 2 A_MisterStartRail(); + XZW4 DEF 5 A_CanBob(); + XZW4 F 1 A_MisterHoldRail(); + Wait; + FireOverpressureRelease: + XZW4 F 1 A_MisterFireRail(); + XZW4 GH 1; + XZW4 IJ 2; + XZW4 KLMN 3; + Goto AutoCycle; + FireOverpressureCancel: + XZW4 FED 3; + Goto Ready; + AltFire: + XZW2 A 1 + { + if ( !invoker.gchambered || invoker.gfired ) + return invoker.boltlock?ResolveState('AltReloadLock'):ResolveState('AltReload'); + A_MisterFireGrenade(); + return A_JumpIf(invoker.boltlock,'AltFireLock'); + } + XZW4 OP 1; + XZW4 QR 2; + XZW4 ST 3; + XZW4 UVW 3; + Goto Ready; + AltFireLock: + XZWB E 1; + XZWC IJ 1; + XZWC KL 2; + XZWC MN 3; + XZWC OPQ 4; + Goto ReadyLock; + AltReload: + XZW2 A 3 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 XYZ 3; + XZW5 A 3; + XZW5 B 2 A_GrenadeOpen(); + XZW5 CD 2; + XZW5 EF 3; + XZW5 G 3 A_GrenadeDrop(); + XZW5 H 3; + XZW5 I 3 A_GrenadeGrab(); + XZW5 JKL 3; + XZW5 M 2 A_GrenadeIn(); + XZW5 NOP 2; + XZW5 QRS 3; + XZW5 T 2 A_GrenadeClose(); + XZW5 UVWXY 2; + XZW5 Z 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.15); + XZW6 ABCDEFG 2; + Goto Ready; + AltReloadLock: + XZWB E 3 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZWC RSTU 3; + XZWC V 2 A_GrenadeOpen(); + XZWC WX 2; + XZWC YZ 3; + XZWD A 3 A_GrenadeDrop(); + XZWD B 3; + XZWD C 3 A_GrenadeGrab(); + XZWD DEF 3; + XZWD G 2 A_GrenadeIn(); + XZWD HIJ 2; + XZWD KLM 3; + XZWD N 2 A_GrenadeClose(); + XZWD OPQRS 2; + XZWD T 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.15); + XZWD UVWXYZ 2; + XZWE A 2; + Goto ReadyLock; + Reload: + XZW2 A 2 + { + if ( (invoker.clipcount >= invoker.default.clipcount) || ((invoker.Ammo1.Amount <= 0) && (CountInv('MisterRound') <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo')) ) + return invoker.boltlock?ResolveState('IdleLock'):ResolveState('Idle'); + A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.boltlock,'ReloadLock'); + } + XZW9 KLMNOPQRST 2; + XZW9 U 2 A_MagOut(); + XZW9 VWXYZ 2; + XZWA ABC 2; + XZWA D 2 A_MagDrop(); + XZWA E 2; + XZWA F 2 A_MagGrab(); + XZWA GHI 2; + XZWA J 2 A_StartSound("mister/magin",CHAN_WEAPON,CHANF_OVERLAP); + XZWA K 2; + XZWA L 2 A_MagIn(); + XZWA MN 2; + XZWA O 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.15); + XZWA PQRSTUV 2; + Goto Ready; + ReloadLock: + XZWB E 2; + XZWG WXYZ 2; + XZWH ABCDEF 2; + XZWH G 2 A_MagOut(); + XZWH HIJKLMNO 2; + XZWH P 2 A_MagDrop(); + XZWH Q 2; + XZWH R 2 A_MagGrab(); + XZWH STU 2; + XZWH V 2 A_StartSound("mister/magin",CHAN_WEAPON,CHANF_OVERLAP); + XZWH W 2; + XZWH X 2 A_MagIn(); + XZWH YZ 2; + XZWI ABCDEFG 2; + XZWI H 2 A_BoltForward(true); + XZWI I 2; + XZWI J 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.15); + XZWI KLMN 2; + XZWI OPQ 3; + Goto Ready; + Idle: + XZW2 A 2 + { + A_StartSound("mister/deselect",CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerCheckGun(); + } + XZW7 JKLMNO 2; + XZW7 PQR 3; + XZW7 STU 4; + XZW7 V 2 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW7 WXY 2; + XZW7 Z 3; + XZW8 AB 3; + XZW8 CDEF 4; + XZW8 G 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.2); + XZW8 HIJK 2; + XZW8 L 3; + Goto Ready; + IdleLock: + XZWB E 2 + { + A_StartSound("mister/deselect",CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerCheckGun(); + } + XZWE VWXYZ 2; + XZWF A 2; + XZWF BCD 3; + XZWF EFG 4; + XZWF H 2 A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZWF IJK 2; + XZWF LMN 3; + XZWF OPQR 4; + XZWF S 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.2); + XZWF TUVW 2; + XZWF X 3; + Goto ReadyLock; + Zoom: + XZW2 A 2 + { + A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.boltlock,'ZoomLock'); + } + XZW6 PQRSTUVW 2; + XZW6 X 2 A_FireSelect(); + XZW6 YZ 2; + XZW7 A 2; + XZW7 B 2 A_JumpIf(player.cmd.buttons&BT_ZOOM,'ReZoom'); + XZW7 CD 2; + XZW7 E 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.35); + XZW7 FGHI 2; + Goto Ready; + ReZoom: + XZW7 B 4; // smoother tween + Goto Zoom+6; + ZoomLock: + XZWB E 2; + XZWE BCDEFGHI 2; + XZWE J 2 A_FireSelect(); + XZWE KLM 2; + XZWE N 2 A_JumpIf(player.cmd.buttons&BT_ZOOM,'ReZoomLock'); + XZWE OP 2; + XZWE Q 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP,starttime:.35); + XZWE RSTU 2; + Goto ReadyLock; + ReZoomLock: + XZWE N 4; // smoother tween + Goto ZoomLock+6; + User1: + XZW2 A 2 + { + A_StartSound("mister/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.boltlock,'User1Lock'); + } + XZW8 MN 2; + XZW8 O 2 + { + A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerMelee(); + } + XZW8 PQ 2; + XZW8 R 1; + XZW8 S 1 A_Parry(8); + XZW8 T 1; + XZW8 U 1 A_Melee(50,"demolitionist/whitm",1.25,1.2,1.2); + XZW8 VWXYZ 2; + XZW9 A 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW9 BCDEFGHIJ 2; + Goto Ready; + User1Lock: + XZWB E 2; + XZWF YZ 2; + XZWG A 2 + { + A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerMelee(); + } + XZWG BC 2; + XZWG D 1; + XZWG E 1 A_Parry(8); + XZWG F 1; + XZWG G 1 A_Melee(50,"demolitionist/whitm",1.25,1.2,1.2); + XZWG HIJKL 2; + XZWG M 2 A_StartSound("mister/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZWG NOPQRSTUV 2; + Goto ReadyLock; + Deselect: + XZW2 A 2 + { + A_StartSound("mister/deselect",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.boltlock,'DeselectLock'); + } + XZW2 BCDE 2; + XZW2 FGHIJKLMNO 1; + XZW2 P -1 A_FullLower(); + Stop; + DeselectLock: + XZWB EFGHI 2; + XZWB JKLMNOPQRS 1; + XZWB T -1 A_FullLower(); + Stop; + Flash: + XZW0 A 2 Bright + { + let psp = player.FindPSprite(PSP_FLASH); + psp.frame = Random[GunFlash](0,3); + let l = Spawn('MisterWeaponLight',pos); + l.target = self; + } + Stop; + FastFlash: + XZW0 A 2 Bright + { + let psp = player.FindPSprite(PSP_FLASH); + psp.frame = Random[GunFlash](0,3); + } + Stop; + RailFlash: + XZW0 E 3 Bright + { + let psp = player.FindPSprite(PSP_FLASH); + psp.frame = Random[GunFlash](4,7); + let l = Spawn('MisterWeaponLight',pos); + l.target = self; + A_OverlayFlags(PSP_FLASH,PSPF_ALPHA|PSPF_FORCEALPHA,true); + } + XZW0 # 1 Bright + { + let psp = player.FindPSprite(PSP_FLASH); + psp.alpha -= .1; + return A_JumpIf(psp.alpha<=0.,1); + } + Wait; + XZW0 # 0; + Stop; + AltFlash: + XZW0 I 2 Bright + { + let psp = player.FindPSprite(PSP_FLASH); + psp.frame = Random[GunFlash](8,11); + let l = Spawn('MisterWeaponLight',pos); + l.target = self; + } + Stop; + Spawn: + XZW1 A -1 NoDelay A_UpdatePickup(); + Stop; + } +} diff --git a/zscript/dlc/swwm_mister_fx.zsc b/zscript/dlc/swwm_mister_fx.zsc new file mode 100644 index 000000000..5703abf23 --- /dev/null +++ b/zscript/dlc/swwm_mister_fx.zsc @@ -0,0 +1,1366 @@ +// Mortal Rifle projectiles and effects + +Class MisterWeaponLight : SWWMWeaponLight +{ + Default + { + args 64,224,255,150; + } +} + +Class MisterCasing : SWWMCasing +{ + Default + { + BounceSound "mister/casing"; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + heat = 0; + } + States + { + Death: + XZW1 BCDE -1 + { + bINTERPOLATEANGLES = false; + pitch = roll = 0; + angle = FRandom[Junk](0,360); + frame = RandomPick[Junk](1,4); + } + Stop; + } +} + +Class MisterGCasing : SWWMCasing +{ + Default + { + Mass 8; + BounceFactor 0.5; + WallBounceFactor 0.5; + BounceSound "mister/gcasing"; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + heat = 0; + } +} + +Class MisterMag : SWWMCasing +{ + Default + { + Mass 10; + BounceFactor 0.4; + WallBounceFactor 0.4; + BounceSound "mister/mag"; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + heat = 0; + } + States + { + Death: + XZW1 BC -1 + { + bINTERPOLATEANGLES = false; + pitch = roll = 0; + angle = FRandom[Junk](0,360); + frame = RandomPick[Junk](1,2); + } + Stop; + } +} + +Class MisterRing : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + Scale 1.5; + +FORCEXYBILLBOARD; + } + States + { + Spawn: + XRG9 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.08); + Stop; + } +} + +Class MisterExLight : PaletteLight +{ + Default + { + Tag "Cyanblu"; + ReactionTime 35; + Args 0,0,0,250; + } +} +Class MisterExLightBig : MisterExLight +{ + Default + { + ReactionTime 45; + Args 0,0,0,500; + } +} +Class MisterExLightSmall : MisterExLight +{ + Default + { + ReactionTime 25; + Args 0,0,0,120; + } +} +Class MisterExLightTiny : MisterExLight +{ + Default + { + ReactionTime 15; + Args 0,0,0,80; + } +} + +Class MisterBulletImpactPop : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + Scale 6.; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + +FORCEXYBILLBOARD; + +ROLLSPRITE; + +ROLLCENTER; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_SetScale(scale.x*.9,scale.y*.9); + A_FadeOut(.15); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + States + { + Spawn: + BLPF C 5 NoDelay Bright + { + Scale *= FRandom[ExploS](0.6,1.8); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + roll = FRandom[Explos](0,360); + } + Stop; + } +} + +Class MisterFuzzy : SWWMNonInteractiveActor +{ + MisterRailCounter mrc; + Default + { + Obituary "$O_MORTALRIFLE"; + SelfObituary "$SO_MORTALRIFLE"; + DamageType 'CoAb44'; + RenderStyle 'Add'; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + +FOILINVUL; + } + override void PostBeginPlay() + { + special1 += Random[ExploS](4,10); + specialf1 = special1; + vel = SWWMUtility.Vec3FromAngles(angle,pitch)*FRandom[ExploS](8,24); + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + if ( !(special1%3) ) + { + let [nhit, nkill] = SWWMUtility.DoExplosion(self,(special2<0)?4:44,3000,80,80,DE_EXTRAZTHRUST|DE_COUNTENEMIES); + if ( mrc ) mrc.nkill += nkill; + } + special1--; + if ( special1 <= 0 ) + { + Destroy(); + return; + } + Vector3 dir = vel; + double magvel = dir.length(); + magvel *= 1.2; + if ( magvel > 0. ) + { + dir /= magvel; + dir += .5*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); + dir = dir.unit(); + vel = dir*magvel; + } + FLineTraceData d; + Vector3 newpos = pos; + newpos.z = clamp(newpos.z,floorz,ceilingz); + int nstep = 0; + double dist = magvel; + while ( dist > 0 ) + { + // safeguard, too many bounces + if ( nstep > MAXBOUNCEPERTIC ) + { + Destroy(); + return; + } + Vector3 oldpos = newpos; + double ang = atan2(dir.y,dir.x); + double pt = asin(-dir.z); + LineTrace(ang,dist,pt,TRF_THRUACTORS|TRF_THRUHITSCAN|TRF_ABSPOSITION,newpos.z,newpos.x,newpos.y,d); + if ( d.HitType != TRACE_HitNone ) + { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + dist -= d.Distance; + // should only happen if we bounced + dir = d.HitDir-(FRandom[Puff](1.5,2.)*hitnormal*(d.HitDir dot hitnormal)); + vel = dir*magvel; + newpos = d.HitLocation+dir; + } + else + { + dist = 0.; + newpos = level.Vec3Offset(newpos,dir*magvel); + } + Vector3 traildir = level.Vec3Diff(oldpos,newpos); + double len = traildir.length(); + if ( len > 0. ) + { + traildir /= len; + for ( double i=0.; i 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + if ( vel != (0,0,0) ) + SetOrigin(level.Vec3Offset(pos,vel),true); + A_SetScale(scale.x*1.05); + A_FadeOut(FRandom[ExploS](.01,.03)); + } + States + { + Spawn: + BLPS C -1 Bright; + Stop; + } +} + +Class MisterPop : SWWMNonInteractiveActor +{ + MisterRailCounter mrc; + Default + { + Obituary "$O_MORTALRIFLE"; + SelfObituary "$SO_MORTALRIFLE"; + DamageType 'CoAb44'; + RenderStyle 'Add'; + Scale .2; + +FORCEXYBILLBOARD; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + +FOILINVUL; + +ROLLSPRITE; + +ROLLCENTER; + } + States + { + Spawn: + TNT1 A 1 NoDelay + { + A_SetTics(Random[ExploS](1,15)); + Scale *= FRandom[ExploS](.5,1.5); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + roll = FRandom[ExploS](0,360); + } + BLPF C 2 Bright + { + let [nhit, nkill] = SWWMUtility.DoExplosion(self,4,2000,50,50,DE_EXTRAZTHRUST|DE_COUNTENEMIES); + if ( mrc ) mrc.nkill += nkill; + } + TNT1 A 1 + { + let p = Spawn('MisterFuzzyTrail',pos); + p.alpha *= 1.5; + p.scale *= .5; + } + Stop; + } +} + +Class MisterBulletImpact : SWWMNonInteractiveActor +{ + MisterRailCounter mrc; // simplify code by putting this here + Default + { + Obituary "$O_MORTALRIFLE"; + SelfObituary "$SO_MORTALRIFLE"; + DamageType 'CoAb44'; + RenderStyle 'Add'; + Scale 1.5; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + +FORCEXYBILLBOARD; + +FOILINVUL; + } + virtual void A_BulletExplode() + { + A_AlertMonsters(swwm_uncapalert?0:4000,AMF_EMITFROMTARGET); + SWWMUtility.DoExplosion(self,444,80000,150,150,DE_EXTRAZTHRUST); + A_QuakeEx(6.,6.,6.,10,0,400,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:150,rollintensity:.6); + A_StartSound("mister/hitsemi",CHAN_VOICE,attenuation:.3); + A_StartSound("mister/hitsemi",CHAN_WEAPON,attenuation:.2); + A_SprayDecal("RocketBlast",-172); + Scale *= FRandom[ExploS](0.8,1.1); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + int numpt = Random[ExploS](20,30); + for ( int i=0; i 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_SetScale(scale.x*.85,scale.y); + A_FadeOut(.05); + if ( !cbt ) cbt = new('CandyBeamTracer'); + cbt.hitlist.Clear(); + Vector3 dir = SWWMUtility.Vec3FromAngles(angle,pitch-90); + cbt.ShootThroughList.Clear(); + cbt.Trace(pos,CurSector,dir,scale.y,0,ignore:target); + foreach ( hit:cbt.hitlist ) + { + if ( !hit.hitactor ) continue; + SWWMUtility.DoKnockback(hit.hitactor,hit.x,12000); + let p = SWWMPuff.Setup(hit.hitlocation,hit.x,self,target,hit.hitactor); + hit.hitactor.DamageMobj(p,target,44,'CoAb44',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); + if ( mrc && (!hit.hitactor || (hit.hitactor.Health <= 0)) ) + mrc.nkill++; + } + } + States + { + Spawn: + XZW1 A -1 Bright; + Stop; + } +} +Class MisterRailChildBeam : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + Alpha .5; + RenderRadius 10000.; + +FORCEXYBILLBOARD; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_SetScale(scale.x*1.05,scale.y); + A_FadeOut(.01); + } + States + { + Spawn: + XZW1 A -1 Bright; + Stop; + } +} + +Class MisterGrenadeFlare : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + +FORCEXYBILLBOARD; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + if ( !master || (master.ReactionTime <= 0) ) + { + A_FadeOut(); + return; + } + SetOrigin(master.Vec3Offset(0,0,master.height/2),true); + } + States + { + Spawn: + BLPS D -1 Bright; + Stop; + } +} + +Class TargetTracer : LineTracer +{ + Actor target; + + override ETraceStatus TraceCallback() + { + if ( (Results.HitType == TRACE_HitActor) && (Results.HitActor == target) ) + return TRACE_Stop; + return TRACE_Skip; + } +} + +Class MisterGrenade : Actor +{ + Mixin SWWMMissileFix; + + Vector3 oldvel; + + Default + { + Obituary "$O_MORTALRIFLEALT"; + SelfObituary "$SO_MORTALRIFLEALT"; + DamageType 'CoAb44'; + Radius 3; + Height 6; + Speed 40; + BounceFactor 1.; + WallBounceFactor 1.; + Gravity .35; + ReactionTime 100; + PROJECTILE; + -NOGRAVITY; + +FORCERADIUSDMG; + +NODAMAGETHRUST; + +FOILINVUL; + +HITTRACER; + +USEBOUNCESTATE; + +BOUNCEONWALLS; + +BOUNCEONFLOORS; + +BOUNCEONCEILINGS; + +BOUNCEMODIFIESPITCH; + +THRUACTORS; + +CANBOUNCEWATER; + } + + override void PostBeginPlay() + { + Super.PostBeginPlay(); + oldvel = vel; + let t = Spawn('MisterGrenadeFlare',pos); + t.master = self; + t.scale *= Radius/4.; + } + + override void Tick() + { + oldvel = vel; + Super.Tick(); + } + + virtual void A_HandleBounce() + { + Vector3 HitNormal = SWWMUtility.GetActorHitNormal(self); + // undo the bounce, we need to hook in our own + vel = oldvel; + // re-do the bounce with our formula + vel = FRandom[Mister](.75,1.)*((vel dot HitNormal)*HitNormal*(FRandom[Mister](-2.,-1.6))+vel); + if ( vel.length() < 4. ) + { + A_Stop(); + ClearBounce(); + bINTERPOLATEANGLES = false; + SetStateLabel('Rest'); + return; + } + // direct hit from main grenade + if ( !bAMBUSH && (vel dot oldvel < .5) ) + { + // ensure we can leave a decal + angle += 180; + pitch = -pitch; + ExplodeMissile(); + return; + } + A_StartSound(bAMBUSH?"mister/gbouncesub":"mister/gbounce",CHAN_ITEM,CHANF_OVERLAP); + } + + virtual void A_GrenadeTick( bool bRest = false, bool bNoProx = false ) + { + int numpt = bAMBUSH?1:3; + for ( int i=0; i 0 ) + { + ExplodeMissile(); + return; + } + ReactionTime--; + if ( ReactionTime <= 0 ) + { + ExplodeMissile(); + return; + } + // proximity check + if ( bNoProx ) return; + // "safe delay" for main grenade + if ( !bAMBUSH && (ReactionTime > default.ReactionTime-20) ) return; + let bt = BlockThingsIterator.Create(self,bAMBUSH?80:120); + foreach ( t,p,f:bt ) + { + if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),bAMBUSH?80:120) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + special1++; + tracer = t; + break; + } + bt.Destroy(); + } + + // quicksort (seeking candidates) + private int partition_candidates( Array a, int l, int h ) + { + Actor pv = a[h]; + int i = (l-1); + for ( int j=l; j<=(h-1); j++ ) + { + if ( Distance3DSquared(pv) > Distance3DSquared(a[j]) ) + { + i++; + Actor tmp = a[j]; + a[j] = a[i]; + a[i] = tmp; + } + } + Actor tmp = a[h]; + a[h] = a[i+1]; + a[i+1] = tmp; + return i+1; + } + private void qsort_candidates( Array a, int l, int h ) + { + if ( l >= h ) return; + int p = partition_candidates(a,l,h); + qsort_candidates(a,l,p-1); + qsort_candidates(a,p+1,h); + } + + virtual void A_GrenadeExplode() + { + ReactionTime = 0; + bForceXYBillboard = true; + bRollSprite = false; + A_SetRenderStyle(1.0,STYLE_Add); + A_SprayDecal("BigRocketBlast",50); + A_SetScale(4.); + A_NoGravity(); + Scale *= FRandom[ExploS](0.8,1.1); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + SWWMUtility.DoExplosion(self,444,120000,250,250,DE_EXTRAZTHRUST); + A_QuakeEx(8.,8.,8.,20,0,900,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollintensity:1.5); + A_StartSound("mister/hitgrenade",CHAN_VOICE,attenuation:.3); + A_StartSound("mister/hitgrenade",CHAN_WEAPON,attenuation:.2); + A_AlertMonsters(swwm_uncapalert?0:3500,AMF_EMITFROMTARGET); + SetOrigin(Vec3Offset(0,0,Height/2),false); + int numpt = Random[ExploS](30,50); + for ( int i=0; i candidates; + let tt = new('TargetTracer'); + tt.target = target; + foreach ( s:level.Sectors ) for ( Actor t=s.thinglist; t; t=t.snext ) + { + if ( (t == tracer) || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || (target && t.IsFriend(target)) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + // don't seek if enemy is too close to shooter + if ( target && SWWMUtility.SphereIntersect(t,target.pos,250) ) continue; + // don't seek if shooter is between us and the enemy + if ( target ) + { + Vector3 dirto = level.Vec3Diff(pos,t.Vec3Offset(0,0,t.Height/2)); + double distto = dirto.length(); + if ( distto > 0 ) + { + dirto /= distto; + if ( tt.Trace(pos,CurSector,dirto,distto,0) ) continue; + } + } + // don't seek if enemy is too close to another candidate + // this would cause some of the splash damage potential to go to waste + bool tooclose = false; + foreach ( c:candidates ) + { + if ( !SWWMUtility.SphereIntersect(t,c.pos,150) ) continue; + tooclose = true; + break; + } + if ( tooclose ) continue; + candidates.Push(t); + } + // sort by distance + if ( candidates.Size() > 1 ) + qsort_candidates(candidates,0,candidates.Size()-1); + // distribute among spawned sub-grenades + int k = 0; + for ( int i=-45; i<=45; i+=45 ) for ( int j=0; j<360; j+=60 ) + { + double ang = j; + double pt = i; + Vector3 dir = SWWMUtility.Vec3FromAngles(ang,pt); + let p = MisterSubGrenade(Spawn('MisterSubGrenade',pos)); + p.angle = ang; + p.pitch = pt; + p.vel = dir*p.speed; + p.target = target; + p.ReactionTime += Random[Mister](-10,10); + if ( candidates.Size() > 0 ) + { + p.seektarget = candidates[k]; + k = (k+1)%candidates.Size(); + } + } + Spawn('MisterExLightBig',pos); + Spawn('MisterRing',pos); + } + + virtual void A_GrenadeSubExplode() + { + if ( special2 && (special2 <= 20) ) + { + SWWMUtility.DoExplosion(self,44,5000+special2*500,100+special2*10,100+special2*10,DE_EXTRAZTHRUST); + int numpt = Random[ExploS](special2/2,special2); + for ( int i=0; i0)); + if ( !seektarget || (seektarget.Health < 0) ) return; + // check proximity to seek target + if ( SWWMUtility.SphereIntersect(seektarget,level.Vec3Offset(pos,vel),80) ) + { + special1++; + tracer = seektarget; + return; + } + if ( !CheckSight(seektarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) return; + // sustain reaction time as long as seek target is visible + ReactionTime++; + // "subtly" steer towards seek target + Vector3 dirto = level.Vec3Diff(pos,seektarget.Vec3Offset(0,0,seektarget.Height/2)); + double distto = dirto.length(); + if ( distto <= 0. ) return; + dirto /= distto; + double spd = vel.length(); + if ( spd <= 0. ) return; + vel /= spd; + vel = (vel*.7+dirto*.3)*spd; + // extra oomph + if ( spd < speed ) vel += dirto*max(.5,speed-spd); + } + override void A_GrenadeExplode() + { + ReactionTime = 0; + bForceXYBillboard = true; + bRollSprite = false; + A_SetRenderStyle(1.0,STYLE_Add); + A_SprayDecal("RocketBlast",50); + A_SetScale(2.); + A_NoGravity(); + Scale *= FRandom[ExploS](0.8,1.1); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + SWWMUtility.DoExplosion(self,444,80000,150,150,DE_EXTRAZTHRUST); + A_QuakeEx(5.,5.,5.,10,0,500,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:150,rollintensity:.8); + A_StartSound("mister/hitgrenadesub",CHAN_VOICE,attenuation:.5); + A_StartSound("mister/hitgrenadesub",CHAN_WEAPON,attenuation:.4); + A_AlertMonsters(swwm_uncapalert?0:1500,AMF_EMITFROMTARGET); + SetOrigin(Vec3Offset(0,0,Height/2),false); + int numpt = Random[ExploS](15,25); + for ( int i=0; i0)||(chambered&&!charged)||(clipcount>0)||(Ammo1.Amount > 0); + } + + override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) + { + if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; + if ( (firemode == PrimaryFire) || (firemode == EitherFire) ) + { + if ( (chargelevel > 0) || (chambered && !charged) || (clipcount > 0) || (Ammo1.Amount > 0) ) return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); + return false; + } + return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); + } + + override void PlayUpSound( Actor origin ) + { + if ( onehand ) origin.A_StartSound("quadshot/selectfast",CHAN_WEAPON,CHANF_OVERLAP); + else origin.A_StartSound(UpSound,CHAN_WEAPON,CHANF_OVERLAP); + } + + override Vector3 GetTraceOffset( int index ) + { + return onehand?(10,3.5,-2):(10,3,-2.5); + } + + action State A_QuadFire( bool bMelee = false ) + { + static const String BaseNum[] = {"one","two","three","four","five"}; + static const StateLabel FireStates[] = {'FireOne','FireTwo','FireThree','FireFour','FireFive'}; + static const StateLabel FireStates1H[] = {'FireOne1H','FireTwo1H','FireThree1H','FireFour1H','FireFive1H'}; + int idx = clamp(invoker.chargelevel-1,0,4); + A_StartSound("quadshot/fire"..BaseNum[idx],CHAN_WEAPON,CHANF_OVERLAP); + A_PlayerFire(); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + double offy = invoker.onehand?3.5:3; + double offz = invoker.onehand?-2:-2.5; + Vector3 origin = SWWMUtility.GetFireOffset(self,10,offy,offz); + bool pointblank = false; + int rings = 1; + Vector3 dir; + FLineTraceData d; + Actor fool = null; + Line fline = null; + bool fside; + for ( double i=0; i<.16; i+=.04 ) + { + for ( int j=0; j<360; j+=(360/rings) ) + { + dir = SWWMUtility.ConeSpread(x,y,z,j,i); + pointblank |= LineTrace(atan2(dir.y,dir.x),60,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + if ( (d.HitType == TRACE_HitActor) && !fool ) fool = d.HitActor; + if ( (d.HitType == TRACE_HitWall) && !fline ) + { + fline = d.HitLine; + fside = d.LineSide; + } + } + rings += 3; + } + if ( bMelee && fool ) SWWMUtility.AchievementProgressInc("roast",1,player); + if ( bMelee || fool || (idx>=4) ) A_StartSound("quadshot/pointblank",CHAN_WEAPON,CHANF_OVERLAP,.6+idx*.1,.4-idx*.05,1.2-idx*.05); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + double a, s; + Actor p; + bool bExtra = ((idx>=4)&&invoker.chambered&&!invoker.charged); + // line activation + if ( pointblank ) + { + if ( fline ) fline.Activate(self,fside,SPAC_Impact); + SWWMBulletTrail.DoTrail(self,origin,x,60,0); + } + switch ( idx ) + { + default: + A_QuakeEx(3.,3.,3.,15,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_BumpFOV(.98); + A_SWWMFlash(); + SWWMHandler.DoFlash(self,Color(64,255,192,64),5); + A_AlertMonsters(swwm_uncapalert?0:2000); + SWWMUtility.DoKnockback(self,-x,20000.); + p = Spawn('QuadProj',origin); + p.target = self; + p.angle = atan2(x2.y,x2.x); + p.pitch = asin(-x2.z); + p.vel = x2*p.speed; + if ( pointblank || bMelee ) + { + p.tracer = self; + p.master = fool; + p.special1 += bMelee?100:50; + p.special2 += bMelee?120000:40000; + p.bAMBUSH = bMelee; + p.ExplodeMissile(null,null); + } + break; + case 1: + A_QuakeEx(4.,4.,4.,18,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_BumpFOV(.97); + A_SWWMFlash(); + SWWMHandler.DoFlash(self,Color(64,255,192,64),7); + A_AlertMonsters(swwm_uncapalert?0:3000); + SWWMUtility.DoKnockback(self,-x,40000.); + p = Spawn('QuadProj2',origin); + p.target = self; + p.angle = atan2(x2.y,x2.x); + p.pitch = asin(-x2.z); + p.vel = x2*p.speed; + if ( pointblank || bMelee ) + { + p.tracer = self; + p.master = fool; + p.special1 = bMelee?150:80; + p.special2 = bMelee?150000:60000; + p.bAMBUSH = bMelee; + p.ExplodeMissile(null,null); + } + break; + case 2: + A_QuakeEx(6.,6.,6.,25,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.8); + A_BumpFOV(.96); + A_SWWMFlash(); + SWWMHandler.DoFlash(self,Color(64,255,192,64),8); + A_AlertMonsters(swwm_uncapalert?0:4000); + SWWMUtility.DoKnockback(self,-x,80000.); + p = Spawn('QuadProj3',origin); + p.target = self; + p.angle = atan2(x2.y,x2.x); + p.pitch = asin(-x2.z); + p.vel = x2*p.speed; + if ( pointblank || bMelee ) + { + p.tracer = self; + p.master = fool; + p.special1 = bMelee?200:100; + p.special2 = bMelee?180000:80000; + p.bAMBUSH = bMelee; + p.ExplodeMissile(null,null); + } + break; + case 3: + A_QuakeEx(7.,7.,7.,30,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.2); + A_BumpFOV(.95); + A_SWWMFlash(); + SWWMHandler.DoFlash(self,Color(64,255,192,64),12); + A_AlertMonsters(swwm_uncapalert?0:6000); + SWWMUtility.DoKnockback(self,-x,150000.); + if ( pointblank || bMelee ) + { + p = Spawn('QuadProj3',origin); + p.target = self; + p.angle = atan2(x2.y,x2.x); + p.pitch = asin(-x2.z); + p.vel = x2*p.speed; + p.tracer = self; + p.master = fool; + p.special1 = bMelee?300:200; + p.special2 = bMelee?200000:100000; + p.bAMBUSH = bMelee; + p.ExplodeMissile(null,null); + } + else for ( int i=0; i<20; i++ ) + { + s = FRandom[Quadravol](0,.2); + a = (i%4)*90 + FRandom[Quadravol](-50,50)*s; + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + p = Spawn('QuadProjSub2',origin); + p.target = self; + p.angle = atan2(dir.y,dir.x); + p.pitch = asin(-dir.z); + p.vel = dir*p.speed*FRandom[Quadravol](1.,1.5); + } + break; + case 4: + A_QuakeEx(8.+bExtra,8.+bExtra,8.+bExtra,40,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.5+bExtra*.25); + A_BumpFOV(.94-bExtra*.1); + A_SWWMFlash(); + SWWMHandler.DoFlash(self,Color(64,255,192,64),15+bExtra*3); + A_AlertMonsters(swwm_uncapalert?0:8000); + if ( bMelee ) SWWMUtility.DoKnockback(self,-x,600000.+bExtra*100000.); + else if ( pointblank ) SWWMUtility.DoKnockback(self,-x,1500000.+bExtra*500000.); + else SWWMUtility.DoKnockback(self,-x,400000.+bExtra*100000.); + if ( fool ) + { + SWWMUtility.DoKnockback(fool,x,1500000.+bExtra*500000.); + if ( fool.bCANBLAST && !fool.bDONTBLAST ) fool.bBLASTED = true; + OnFire.Apply(fool,self,200+bExtra*100); + fool.DamageMobj(invoker,self,150+bExtra*50,'Fire',DMG_EXPLOSION); + } + int numpt = bExtra?15:10; + for ( int i=0; i0); + invoker.clipcount = max(0,invoker.clipcount-1); + invoker.charged = false; + if ( invoker.waschambered ) + { + A_ChangeModel("",2,"","",0,"models",invoker.wascharged?"QuadCell_Used.png":"QuadCell.png",CMDL_USESURFACESKIN,-1); + if ( invoker.onehand ) A_Overlay(PSP_WEAPON+1,'DropCasing1H'); + else A_Overlay(PSP_WEAPON+1,'DropCasing'); + invoker.wastecycle = 0; + } + else if ( !Demolitionist(self) || !(Demolitionist(self).mystats) || swwm_nomapmsg ) return; + invoker.wastecycle++; + let s = Demolitionist(self).mystats; + if ( s.quadegg < 7 ) + { + if ( (invoker.onehand && (invoker.wastecycle < 12)) || (!invoker.onehand && (invoker.wastecycle < 24)) ) return; + s.quadegg++; + } + else return; + invoker.wastecycle = 0; + if (( s.quadegg > 0) && (player == players[consoleplayer]) ) + EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue.LEVER"..1+(s.quadegg-1)); + } + + action void A_LoadOverlay() + { + A_PlayerReload(true); + A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP,.8); + A_ChangeModel("",2,"","",0,"models","QuadCell.png",CMDL_USESURFACESKIN,-1); + A_Overlay(PSP_WEAPON+1,'LoadOverlay'); + } + + action void A_Load() + { + A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP,.3); + invoker.clipcount = min(invoker.default.clipcount,invoker.clipcount+1); + if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); + } + + action bool A_Fill() + { + if ( !invoker.chambered || invoker.charged || (invoker.chargelevel >= 5) ) return false; + invoker.charged = true; + invoker.chargelevel++; + return true; + } + + action void A_DropCasing() + { + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,-8,8,-16); + if ( invoker.wascharged ) + { + let c = Spawn('QuadravolCasing',origin); + c.angle = angle; + c.pitch = pitch-90; + c.vel = x*FRandom[Junk](-2.5,-1.5)+y*FRandom[Junk](.5,1.)-(0,0,FRandom[Junk](2.,5.)); + c.vel += vel*.5; + return; + } + if ( invoker.Ammo1.Amount >= invoker.Ammo1.MaxAmount ) + { + let a = Inventory(Spawn('QuadravolAmmo',origin)); + a.bDROPPED = true; + a.DropTime = 30; + a.bSpecial = a.bSolid = false; + a.Angle = Angle+190; + a.VelFromAngle(5.); + a.Vel.Z = -1.; + a.Vel += Vel; + a.bNoGravity = false; + a.ClearCounters(); + a.OnDrop(self); + a.vel += (RotateVector((FRandom[Junk](-1.5,.5),FRandom[Junk](-1.5,1.5)),a.angle),FRandom[Junk](-1.5,1.5)); + return; + } + invoker.Ammo1.Amount++; + } + + action void A_FireBayonet() + { + A_StartSound("quadshot/bayonetfire",CHAN_WEAPON,CHANF_OVERLAP); + A_Melee(60,"misc/slughit",1.5,.6,-.2,MELEE_Rip|MELEE_FleshSound|MELEE_NoRage|MELEE_NoUse,null); + Vector3 dir = SWWMUtility.Vec3FromAngles(angle,pitch); + vel += dir*4.; + A_QuakeEx(4.,4.,4.,8,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.75); + A_BumpFOV(1.03); + } + + action void A_LeverForward() + { + A_StartSound("quadshot/leverforward",CHAN_WEAPON,CHANF_OVERLAP); + } + action void A_LeverBack() + { + A_StartSound("quadshot/leverback",CHAN_WEAPON,CHANF_OVERLAP); + } + + override bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon ) + { + bool good = Super.PickupForAmmoSWWM(ownedWeapon); + let Owner = ownedWeapon.Owner; + if ( (AmmoGive1 == 0) && ((clipcount > 0) || (chambered && !charged)) ) + { + // let's get this bread + Inventory cur = Owner.FindInventory(AmmoType1); + if ( !cur ) + { + cur = Inventory(Spawn(AmmoType1)); + cur.Amount = 0; + cur.AttachToOwner(Owner); + } + int ingun = clipcount+(chambered&&!charged); + int maxgiveamt = min(cur.MaxAmount-cur.Amount,ingun); + int dropamt = ingun-maxgiveamt; + if ( dropamt > 0 ) cur.CreateTossable(dropamt); + cur.Amount = min(cur.MaxAmount,cur.Amount+ingun); + good = true; + } + return good; + } + override void InitializeWeapon() + { + charged = false; + chambered = false; + clipcount = default.AmmoGive1; // match the ammo that the pickup should give + } + + override void MarkPrecacheSounds() + { + Super.MarkPrecacheSounds(); + MarkSound("quadshot/select"); + MarkSound("quadshot/deselect"); + MarkSound("quadshot/selectfast"); + MarkSound("quadshot/deselectfast"); + MarkSound("quadshot/onehand"); + MarkSound("quadshot/twohand"); + MarkSound("quadshot/leverforward"); + MarkSound("quadshot/leverback"); + MarkSound("quadshot/bayonetfire"); + MarkSound("quadshot/bayonetreturn"); + MarkSound("quadshot/load1"); + MarkSound("quadshot/load2"); + MarkSound("quadshot/load3"); + MarkSound("quadshot/load4"); + MarkSound("quadshot/fireone"); + MarkSound("quadshot/firetwo"); + MarkSound("quadshot/firethree"); + MarkSound("quadshot/firefour"); + MarkSound("quadshot/firefive"); + MarkSound("quadshot/casing1"); + MarkSound("quadshot/casing2"); + MarkSound("quadshot/casing3"); + MarkSound("quadshot/casing4"); + MarkSound("quadshot/hit1"); + MarkSound("quadshot/hit2"); + MarkSound("quadshot/hit3"); + MarkSound("quadshot/twohit1"); + MarkSound("quadshot/twohit2"); + MarkSound("quadshot/twohit3"); + MarkSound("quadshot/extrahit"); + MarkSound("quadshot/pointblank"); + MarkSound("quadshot/fly"); + } + + Default + { + Tag "$T_QUADRAVOL"; + Inventory.Icon "graphics/HUD/Icons/W_Quadravol.png"; + Inventory.PickupMessage "$I_QUADRAVOL"; + Obituary "$O_QUADRAVOL"; + SelfObituary "$SO_QUADRAVOL2"; + SWWMWeapon.Tooltip "$TT_QUADRAVOL"; + SWWMWeapon.GetLine "getquadravol"; + Weapon.SlotNumber 6; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 650; + Weapon.UpSound "quadshot/select"; + Weapon.AmmoType1 'QuadravolAmmo'; + Weapon.AmmoGive1 3; + SWWMWeapon.DropAmmoType 'SWWMRocketAmmoSmall'; + Quadravol.ClipCount 5; + Stamina 80000; + +SWWMWEAPON.NOFIRSTGIVE; + +SWWMWEAPON.HASSCRTEX; + +WEAPON.EXPLOSIVE; + } + States + { + Spawn: + XZW1 A -1; + Stop; + Select: + XZW2 R 1 + { + A_FullRaise(); + return A_JumpIf(invoker.onehand,'Select1H'); + } + XZW2 STUVWXYZ 1; + XZW3 ABCDEFGHI 1; + XZW3 JKLMN 2; + Goto Ready; + Ready: + XZW2 A 1 + { + A_Fill(); // just in case + int flg = WRF_ALLOWRELOAD|WRF_ALLOWUSER1|WRF_ALLOWZOOM; + if ( (invoker.chargelevel <= 0) && (invoker.Ammo1.Amount <= 0) && (invoker.clipcount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) flg |= WRF_NOPRIMARY; + invoker.fromfire = false; + A_WeaponReady(flg); + if ( player.cmd.buttons&BT_ATTACK ) + invoker.CheckAmmo(EitherFire,true); + } + Wait; + Fire: + XZW2 A 1 + { + if ( invoker.chargelevel <= 0 ) + { + if ( invoker.clipcount > 0 ) return ResolveState('AltFire'); + invoker.fromfire = true; + return ResolveState('Reload'); + } + return A_QuadFire(); + } + FireOne: + XZW2 A 1; + XZW3 OPQR 1; + XZW3 STUV 2; + Goto Ready; + FireTwo: + XZW2 A 1; + XZW3 WX 1; + XZW3 YZ 2; + XZW4 ABCD 3; + Goto Ready; + FireThree: + XZW2 A 1; + XZW4 EFGH 2; + XZW4 IJKL 3; + Goto Ready; + FireFour: + XZW2 A 1; + XZW4 MNOP 2; + XZW4 QR 3; + XZW4 ST 4; + Goto Ready; + FireFive: + XZW2 A 1; + XZW4 UV 2; + XZW4 WX 3; + XZW4 YZ 4; + XZW5 AB 5; + Goto Ready; + AltFire: + XZW2 A 2 + { + A_PlayerCheckGun(); + return A_JumpIf(invoker.onehand,'AltFire1H'); + } + XZW5 C 2; + XZW5 D 2 A_LeverForward(); + XZW5 E 2 A_Eject(); + XZW5 FG 3; + XZW5 H 2 A_LeverBack(); + XZW5 I 2; + XZW5 J 2 A_Fill(); + XZW5 K 2; + XZW5 L 2; + Goto Ready; + DropCasing: + XZWZ ABCDEF 2; + XZWZ G 0; + TNT1 A 1 A_DropCasing(); + Stop; + Reload: + XZW2 A 2 + { + invoker.stopreload = false; + if ( (invoker.clipcount >= invoker.default.clipcount) || ((invoker.Ammo1.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true)) ) + return invoker.onehand?ResolveState('Idle1H'):ResolveState('Idle'); + if ( invoker.onehand ) return ResolveState('Reload1H'); + A_StartSound("quadshot/onehand",CHAN_WEAPON,CHANF_OVERLAP); + return ResolveState(null); + } + XZW5 MNO 3; + Goto ReloadHold; + ReloadHold: + XZW5 P 2 A_LoadOverlay(); + XZW5 QR 2; + XZW5 S 1; + XZW5 T 1 A_StartSound("quadshot/load",CHAN_WEAPON,CHANF_OVERLAP); + XZW5 UV 1; + XZW5 W 1 A_Load(); + XZW5 X 1; + XZW5 YZ 2; + XZW6 A 2; + XZW5 P 2 + { + if ( (invoker.clipcount >= invoker.default.clipcount) || ((invoker.Ammo1.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true)) ) + return A_JumpIf(invoker.onehand,'ReloadEnd1H'); + if ( invoker.fromfire && (player.cmd.buttons&BT_ATTACK) ) + return ResolveState('ReloadHold'); + invoker.fromfire = false; + bool holdreload = CVar.GetCVar('swwm_holdreload',player).GetBool(); + if ( (!holdreload && !invoker.stopreload) || (holdreload && (player.cmd.buttons&BT_RELOAD)) ) + return ResolveState('ReloadHold'); + return A_JumpIf(invoker.onehand,'ReloadEnd1H'); + } + XZW6 B 2 A_StartSound("quadshot/twohand",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 CDEF 2; + XZW6 GHIJK 3; + Goto Ready; + LoadOverlay: + XZWZ HIJ 2; + XZWZ KLMN 1; + XZWZ O 0; + Stop; + Idle: + XZW2 A 2 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP,.8); + XZW6 LMNO 2; + XZW6 PQRST 3; + XZW6 U 2 A_StartSound("quadshot/twohand",CHAN_WEAPON,CHANF_OVERLAP,.6); + XZW6 VW 2; + XZW6 XYZ 3; + XZW7 A 3; + Goto Ready; + Zoom: + XZW2 A 2 + { + if ( invoker.onehand ) + { + invoker.onehand = false; + return ResolveState('Zoom1H'); + } + A_StartSound("quadshot/onehand",CHAN_WEAPON,CHANF_OVERLAP); + invoker.onehand = true; + return ResolveState(null); + } + XZW8 Z 2; + XZW9 ABCDEF 2; + Goto Ready1H; + User1: + XZW2 A 1 + { + A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.onehand,'User11H'); + } + XZW7 BCD 1; + XZW7 E 2 + { + A_PlayerMelee(); + A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); + } + XZW7 FG 2; + XZW7 H 2 A_Parry(6); + XZW7 I 1; + XZW7 J 1 A_JumpIf(A_Melee(20,"demolitionist/whitm",1.2,.6,.2),'Bayonet'); + XZW7 KLM 1; + XZW7 NOPQRSTUVWX 2; + Goto Ready; + Bayonet: + XZW7 J 1 A_FireBayonet(); + XZW7 YZ 2 A_JumpIf((player.cmd.buttons&BT_ATTACK)&&(invoker.chargelevel>0),'BayonetFire'); + XZW8 ABC 2 A_JumpIf((player.cmd.buttons&BT_ATTACK)&&(invoker.chargelevel>0),'BayonetFire'); + XZW8 D 1 A_StartSound("quadshot/bayonetreturn",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 EFGH 1; + XZW8 IJKL 2; + Goto Ready; + BayonetFire: + #### # 1 A_QuadFire(true); + XZW8 MNO 1; + XZW8 P 1 A_StartSound("quadshot/bayonetreturn",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 QRST 1; + XZW8 UVWXY 2; + Goto Ready; + Deselect: + XZW2 A 1 + { + A_StartSound(invoker.onehand?"quadshot/deselectfast":"quadshot/deselect",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.onehand,'Deselect1H'); + } + XZW2 BCDEFGHIJKLMNOPQ 1; + XZW2 R -1 A_FullLower(); + Stop; + Flash: + XZW0 A 2 Bright + { + let psp = player.GetPSprite(PSP_FLASH); + psp.frame = Random[GunFlash](0,9)+invoker.onehand*10; + let l = Spawn('SWWMWeaponLight',pos); + l.target = self; + } + Stop; + // one-handed states + Select1H: + XZW9 N 2 A_FullRaise(); + XZW9 OPQRSTUVW 2; + Goto Ready1H; + Ready1H: + XZW9 G 1 + { + A_Fill(); // just in case + int flg = WRF_ALLOWRELOAD|WRF_ALLOWUSER1|WRF_ALLOWZOOM; + if ( (invoker.chargelevel <= 0) && (invoker.Ammo1.Amount <= 0) && (invoker.clipcount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) flg |= WRF_NOPRIMARY; + invoker.fromfire = false; + A_WeaponReady(flg); + if ( player.cmd.buttons&BT_ATTACK ) + invoker.CheckAmmo(EitherFire,true); + } + Wait; + FireOne1H: + XZW9 G 1; + XZW9 XYZ 1; + XZWA A 1; + XZWA BCDE 2; + Goto Ready1H; + FireTwo1H: + XZW9 G 1; + XZWA FG 1; + XZWA HI 2; + XZWA JKLM 3; + Goto Ready1H; + FireThree1H: + XZW9 G 1; + XZWA NOPQ 2; + XZWA RSTU 3; + Goto Ready1H; + FireFour1H: + XZW9 G 1; + XZWA VWXY 2; + XZWA Z 3; + XZWB A 3; + XZWB BC 4; + Goto Ready1H; + FireFive1H: + XZW9 G 1; + XZWB DE 2; + XZWB FG 3; + XZWB HI 4; + XZWB JK 5; + Goto Ready1H; + AltFire1H: + XZW9 G 2; + XZWB L 2; + XZWB M 1 + { + A_LeverForward(); + A_Eject(); + } + XZWB NO 1; + XZWB P 2 A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP,pitch:.6); + XZWB QR 2; + XZWB S 2 A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP,pitch:.5); + XZWB TUV 2; + XZWB W 2 A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP,pitch:.4); + XZWB XY 1; + XZWB Z 0 A_LeverBack(); // skip frame to undo 360 degree rotation + XZWF M 1; + XZWC A 2; + XZWC B 2 A_Fill(); + XZWC CDEF 3; + Goto Ready1H; + DropCasing1H: + XZWZ PQRSTUVW 1; + XZWZ X 0; + TNT1 A 1 A_DropCasing(); + Stop; + Idle1H: + XZW9 G 2 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP,.8); + XZWC JKLM 2; + XZWC NOPQR 3; + XZWC STU 2; + XZWC VWX 3; + XZWC Y 3; + Goto Ready1H; + Zoom1H: + XZW9 G 2; + XZWE XYZ 2; + XZWF AB 2; + XZWF C 1 A_StartSound("quadshot/twohand",CHAN_WEAPON,CHANF_OVERLAP); + XZWF DEFG 1; + XZWF HIJKL 2; + Goto Ready; + User11H: + XZW9 G 1; + XZWC Z 1; + XZWD AB 1; + XZWD C 2 + { + A_PlayerMelee(); + A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); + } + XZWD DE 2; + XZWD F 2 A_Parry(6); + XZWD G 1; + XZWD H 1 A_JumpIf(A_Melee(20,"demolitionist/whitm",1.2,.6,.2),'Bayonet1H'); + XZWD IJK 1; + XZWD LMNOPQRSTUV 2; + Goto Ready1H; + Bayonet1H: + XZWD H 1 A_FireBayonet(); + XZWD WX 2 A_JumpIf((player.cmd.buttons&BT_ATTACK)&&(invoker.chargelevel>0),'BayonetFire1H'); + XZWD YZ 2 A_JumpIf((player.cmd.buttons&BT_ATTACK)&&(invoker.chargelevel>0),'BayonetFire1H'); + XZWE A 2 A_JumpIf((player.cmd.buttons&BT_ATTACK)&&(invoker.chargelevel>0),'BayonetFire1H'); + XZWE B 1 A_StartSound("quadshot/bayonetreturn",CHAN_WEAPON,CHANF_OVERLAP); + XZWE CDEF 1; + XZWE GHIJ 2; + Goto Ready1H; + BayonetFire1H: + #### # 1 A_QuadFire(true); + XZWE KLM 1; + XZWE N 1 A_StartSound("quadshot/bayonetreturn",CHAN_WEAPON,CHANF_OVERLAP); + XZWE OPQR 1; + XZWE STUVW 2; + Goto Ready1H; + Deselect1H: + XZW9 GHIJKLM 2; + XZW9 N -1 A_FullLower(); + Stop; + Reload1H: + XZW9 G 2; + XZWC G 3; + Goto ReloadHold; + ReloadEnd1H: + XZW5 P 2; + XZWC HI 3; + Goto Ready1H; + } +} diff --git a/zscript/dlc/swwm_notashotgun_fx.zsc b/zscript/dlc/swwm_notashotgun_fx.zsc new file mode 100644 index 000000000..54a340919 --- /dev/null +++ b/zscript/dlc/swwm_notashotgun_fx.zsc @@ -0,0 +1,1089 @@ +// Quadravol projectiles and effects + +Class QuadravolCasing : SWWMCasing +{ + Default + { + BounceSound "quadshot/casing"; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + heat = 0; + } +} + +Class QuadExplLight : PaletteLight +{ + Default + { + Tag "QuadExpl"; + Args 0,0,0,150; + ReactionTime 20; + } +} +Class QuadExplLight2 : PaletteLight +{ + Default + { + Tag "QuadExpl"; + Args 0,0,0,250; + ReactionTime 25; + } +} +Class QuadExplLight3 : PaletteLight +{ + Default + { + Tag "QuadExpl"; + Args 0,0,0,300; + ReactionTime 30; + } +} + +Class QuadFlare : SWWMNonInteractiveActor +{ + bool bBig; + + Default + { + RenderStyle 'Add'; + Alpha .5; + +FORCEXYBILLBOARD; + } + + override void Tick() + { + prev = pos; + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + if ( !master || !master.bMISSILE ) + { + if ( !bBig ) + { + bBig = true; + Scale *= 3.; + } + Scale *= .97; + A_FadeOut(.03); + return; + } + SetOrigin(master.pos,true); + } + + States + { + Spawn: + QFLR A -1 Bright; + Stop; + } +} + +Class QuadTrail : SWWMNonInteractiveActor +{ + Mixin SWWMMinimalMovingTick; + + Default + { + RenderStyle 'Add'; + Alpha .5; + Scale 1.5; + +FORCEXYBILLBOARD; + +ROLLSPRITE; + +ROLLCENTER; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + roll = FRandom[ExploS](0,360); + SetState(SpawnState+Random[ExploS](0,19)); + } + void A_Flame() + { + vel *= .9; + A_SetScale(scale.x*.96); + A_FadeOut(.05); + } + States + { + Spawn: + XFIR ABCDEFGHIJKLMNOPQRST 1 Bright A_Flame(); + Loop; + } +} + +Class QuadEmber : SWWMStaticSprite +{ + Vector3 freq, amp, ph; + double fact1, fact2; + bool bDead; + + override void SetupSprite() + { + texture = TexMan.CheckForTexture("QEMBA0"); + scale = (.3,.3); + SetRenderStyle(STYLE_Add); + bCheckWater = true; + Flags |= SPF_FULLBRIGHT; + } + + override void PostBeginPlay() + { + Scale *= FRandom[ExploS](.5,1.5); + double ang = FRandom[ExploS](0,360), + pt = FRandom[ExploS](-90,90); + vel += SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](4.,8.); + freq = (FRandom[ExploS](.5,3.),FRandom[ExploS](.5,3.),FRandom[ExploS](.5,3.)); + amp = (FRandom[ExploS](.5,2.),FRandom[ExploS](.5,2.),FRandom[ExploS](.5,2.)); + ph = (FRandom[ExploS](0.,360.),FRandom[ExploS](0.,360.),FRandom[ExploS](0.,360.)); + fact1 = FRandom[ExploS](.98,.99); + fact2 = FRandom[ExploS](.98,.99); + } + + override void OnTick() + { + if ( !bDead ) + { + vel *= .95; + vel += .2*(sin(ph.x)*amp.x,sin(ph.y)*amp.y,sin(ph.z)*amp.z); + if ( !lastwater ) vel.z -= .05*clamp(2.-amp.length(),0.,2.); + ph.x += freq.x*(360./GameTicRate); + ph.y += freq.y*(360./GameTicRate); + ph.z += freq.z*(360./GameTicRate); + freq *= fact1; + amp *= fact2; + Vector3 newpos = level.Vec3Offset(pos,vel); + if ( !level.IsPointInLevel(newpos) ) + { + vel *= 0; + bDead = true; + return; + } + alpha = max(.0,alpha-FRandom[ExploS](.002,.005)); + } + else alpha = max(0.,alpha-FRandom[ExploS](.02,.05)); + int frame = clamp(int(round(4-alpha*4)),0,4); + texture = TexMan.CheckForTexture(String.Format("QEMB%c0",0x41+frame)); + if ( alpha <= 0 ) Destroy(); + } +} + +Class QuadExplRing : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + Scale 1.2; + +FORCEXYBILLBOARD; + } + States + { + Spawn: + XRG8 ACEGIKMOQSUW 1 Bright A_SetScale(scale.x*1.05); + Stop; + } +} + +Class QuadProj : Actor +{ + meta double drift, accelrate, maxspeed; + + Property Drift: drift; + Property AccelRate: accelrate; + Property MaxSpeed: maxspeed; + + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_StartSound("quadshot/fly",CHAN_BODY,CHANF_LOOP); + let t = Spawn('QuadFlare',pos); + t.master = self; + t.scale = scale*2.; + } + + // acceleration, drift and speed limit + void A_QuadMove() + { + A_QuadTrail(); + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); + double a = FRandom[Quadravol](0.,360.), s = FRandom[Quadravol](0.,drift); + vel += x*(accelrate/GameTicRate); + vel += SWWMUtility.CircleOffset(y,z,a,s); + double magvel = vel.length(); + Vector3 dir = (magvel<=0.)?x:(vel/magvel); + if ( magvel > maxspeed ) magvel = maxspeed; + vel = dir*magvel; + speed = magvel; + } + + virtual void A_QuadTrail() + { + let t = Spawn('QuadTrail',pos); + t.scale *= .6; + t.vel = vel*.2; + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); + s.vel = SWWMUtility.Vec3FromAngles(FRandom[Quadravol](0,360),FRandom[Quadravol](-90,90))*.4; + s.vel += vel*.3; + s.alpha *= .4; + int numpt = Random[Quadravol](5,15); + for ( int i=0; i 0 ) cnt--; + else + { + cnt = 10; + if ( Owner.bSHOOTABLE && (Owner.Health > 0) && (amount > 0) ) + { + int flg = DMG_THRUSTLESS; + if ( Owner is 'Centaur' ) flg |= DMG_FOILINVUL; // you're on fire, that shield is worthless + Owner.DamageMobj(self,instigator,clamp(int(amount*.15),1,50),'Fire',flg); + if ( Owner && Owner.bISMONSTER && !Random[FlameT](0,3) ) + Owner.Howl(); + } + if ( !Owner ) + { + Destroy(); + return; + } + // damage nearby actors + if ( amount > 0 ) SWWMUtility.DoExplosion(Owner,amount,0,Owner.radius+40+amount/5,Owner.radius+20,DE_NOBLEED|DE_NOSPLASH|DE_HOWL|DE_CENTERHEIGHT|DE_NONEXPLOSIVE,'Fire',null,DMG_THRUSTLESS,instigator,self); + // in rare cases the owner may stop existing after the DoExplosion call + if ( !Owner ) + { + Destroy(); + return; + } + } + double mult = max(Owner.radius,Owner.height)/30.; + if ( lite ) lite.A_SoundVolume(CHAN_VOICE,min(1.,mult*amount/80.)); + if ( level.maptime%5 ) return; + int numpt = clamp(int(Random[FlameT](2,4)*amount*.02),1,4); + numpt = int(clamp(numpt*mult**.5,1,5)); + for ( int i=0; i 0 ) + { + let c = SWWMAnimSprite.SpawnAt('OnFireTrail',tpos); + c.scale *= max(.35,mult*.6); + c.vel = Owner.vel*.5+SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[FlameT](.5,2.)*c.scale.x; + } + if ( Random[FlameT](0,3) ) continue; + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',tpos); + s.scale *= max(.35,mult*.5); + s.alpha *= min(amount+30,100)*.005; + s.vel = Owner.vel*.5+SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[FlameT](.2,.6)*s.scale.x; + } + } + + static OnFire Apply( Actor victim, Actor instigator, int amount ) + { + let t = OnFire(victim.FindInventory('OnFire')); + if ( t ) + { + t.instigator = instigator; + t.amount = min(t.maxamount,t.amount+amount); + t.cnt = min(t.cnt,5); + return t; + } + t = OnFire(Spawn('OnFire')); + t.AttachToOwner(victim); + t.instigator = instigator; + t.amount = min(t.maxamount,amount); + t.cnt = 1; + t.oangle = victim.angle; + double mult = max(victim.radius,victim.height)/30.; + t.lite.A_StartSound("misc/flame",CHAN_VOICE,CHANF_LOOP); + t.lite.A_SoundVolume(CHAN_VOICE,min(1.,mult*amount/80.)); + return t; + } + + static clearscope OnFire IsOnFire( Actor victim ) + { + let t = OnFire(victim.FindInventory('OnFire')); + if ( t && (t.amount > 0) ) return t; + return null; + } +} + +Class OnFireTrail : SWWMAnimSprite +{ + int flametim; + + override void PostBeginPlay() + { + bXFlip = Random[ExploS](0,1); + bYFlip = Random[ExploS](0,1); + roll = FRandom[ExploS](0,360); + } + override void SetupSprite() + { + Super.SetupSprite(); + sprname = "XFIR"; + sprframe = Random[ExploS](0,19); + numframes = 20; + framestep = 2; + bLooping = true; + bCheckWater = true; + SetRenderStyle(STYLE_Add); + Flags |= SPF_FULLBRIGHT|SPF_ROLL; + Alpha = .3; + Scale = (.6,.6); + } + + override void OnTick() + { + flametim++; + if ( lastwater ) vel *= .9; + else + { + vel *= .98; + vel.z += .1+.2*abs(scale.x); + } + if ( !Random[FlameT](0,int(40*(.3-alpha))) ) + { + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); + s.vel = SWWMUtility.Vec3FromAngles(FRandom[FlameT](0,360),FRandom[FlameT](-90,90))*.2; + s.vel += vel*.3; + s.alpha *= alpha*.5; + s.scale *= .5+abs(scale.x*2)*(.5+flametim/6.); + s.framestep = 2; + } + scale *= .98; + alpha = max(0.,alpha-.01); + if ( alpha <= 0. ) Destroy(); + } +} diff --git a/zscript/dlc/swwm_rebolber.zsc b/zscript/dlc/swwm_rebolber.zsc new file mode 100644 index 000000000..5a56fbcf2 --- /dev/null +++ b/zscript/dlc/swwm_rebolber.zsc @@ -0,0 +1,46 @@ +// Blackmann Arms "Puntzer Beta" SMW.05 Revolver (planned for unreleased SWWM Iridium) +// Slot 3, spawns shared with Spreadgun + +/* + dev notes: + + - not much to say about this one, most of the real trouble will come + from the modeling and animation, the code work shouldn't be hard + - there won't be a "mash fire button to shoot faster" here, because + that sort of ability is better reserved for the side mods, where + actual flesh and bone individuals are handling the guns, not a robot + with programmed, neatly measured, automatic motions (this is why + demo-chan had to relearn how to handle guns after getting a maidbot + body) +*/ + +Class PuntzerBeta : SWWMWeapon +{ + int bullets[6]; + int rotation; + bool initialized; + bool charged; + + Default + { + Tag "$T_PUNTZERBETA"; + Inventory.PickupMessage "$I_PUNTZERBETA"; + Obituary "$O_PUNTZERBETA"; + SWWMWeapon.Tooltip "$TT_PUNTZERBETA"; + SWWMWeapon.GetLine "getpuntzerbeta"; + Weapon.SlotNumber 3; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 450; + Weapon.AmmoType1 'SMW05Ammo'; + Weapon.AmmoGive1 6; + SWWMWeapon.DropAmmoType 'SWWMShellAmmoSmall'; + Stamina 10000; + +SWWMWEAPON.NOFIRSTGIVE; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/zscript/dlc1/swwm_rebolber_fx.zsc b/zscript/dlc/swwm_rebolber_fx.zsc similarity index 100% rename from zscript/dlc1/swwm_rebolber_fx.zsc rename to zscript/dlc/swwm_rebolber_fx.zsc diff --git a/zscript/dlc/swwm_supermarioworld.zsc b/zscript/dlc/swwm_supermarioworld.zsc new file mode 100644 index 000000000..926aa0035 --- /dev/null +++ b/zscript/dlc/swwm_supermarioworld.zsc @@ -0,0 +1,44 @@ +// Blackmann Arms "Puntzer Gamma" SMW.05 Assault Carbine (was planned for SWWM Z) +// Slot 4, spawns shared with Wallbuster + +/* + dev notes: + + - not much on this one either + - the idea of putting an ammo readout on the magazine itself has been + going through my mind, maybe I'll do that, seeing as they are + electronically operated rather than using a simple mechanical spring +*/ + +Class PuntzerGamma : SWWMWeapon +{ + int ClipCount; + bool bFullerAuto; + + Property ClipCount : ClipCount; + + Default + { + Tag "$T_PUNTZERGAMMA"; + Inventory.PickupMessage "$I_PUNTZERGAMMA"; + Obituary "$O_PUNTZERGAMMA"; + SWWMWeapon.Tooltip "$TT_PUNTZERGAMMA"; + SWWMWeapon.GetLine "getpuntzergamma"; + Weapon.SlotNumber 4; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 350; + PuntzerGamma.ClipCount 30; + Weapon.AmmoType1 'SMW05Ammo'; + Weapon.AmmoGive1 30; + SWWMWeapon.DropAmmoType 'SWWMShellAmmoBig'; + Stamina 30000; + +SWWMWEAPON.NOFIRSTGIVE; + +SWWMWEAPON.HASSCRTEX; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/zscript/dlc1/swwm_supermarioworld_fx.zsc b/zscript/dlc/swwm_supermarioworld_fx.zsc similarity index 100% rename from zscript/dlc1/swwm_supermarioworld_fx.zsc rename to zscript/dlc/swwm_supermarioworld_fx.zsc diff --git a/zscript/dlc/swwm_thiccbolts.zsc b/zscript/dlc/swwm_thiccbolts.zsc new file mode 100644 index 000000000..797e677e6 --- /dev/null +++ b/zscript/dlc/swwm_thiccbolts.zsc @@ -0,0 +1,64 @@ +// Kmonn Shunna Ray-Khom (from UnSX series) +// Slot 8, shared spawn with Silver Bullet JET + +/* + dev notes: + + - I cannot screw this one up, this is the chance to finally bring it + into existence and it has to be as accurate as possible to the lore + - A fun idea I've had is to use scripted textures to draw arc lightning + around the barrel and bayonets, using a "glass overlay" akin to the + one on the hellblazer + - The scope will use a set of coarse gravity-affected linetraces to + calculate where the projectile will land and then offset the reticle + accordingly, shouldn't be too hard, but it's best to do it per-tic + and then interpolate in the render pass + - the logic for the lightning in water effect shouldn't be too + difficult, albeit costly due to the need for recursion between + connected sectors that have liquid terrain, as well as swimmable 3d + floors, height transfers, etc. + - obviously a range limit must be added for that, about 3200 map units + (100 meters) should be enough? + - the idea with the charge is that it always goes up, but primary fire + only consumes a bit of it, thus ensuring a steady automatic fire rate + and then the secondary drains all of it, which will make it charge + back up slower + - the fulldrain bool is set by the altfire, so when charge is back to + full, a message will be sent to the player in case the weapon is + holstered, kinda like the full charge message for the ynykton +*/ + +Class RayKhom : SWWMWeapon +{ + int clipcount; + int charge; + bool fulldrain; + + Property ClipCount : clipcount; + + Default + { + Tag "$T_RAYKHOM"; + Inventory.PickupMessage "$T_RAYKHOM"; + Obituary "$O_RAYKHOM"; + SWWMWeapon.Tooltip "$TT_RAYKHOM"; + SWWMWeapon.GetLine "getraykhom"; + Weapon.SlotNumber 8; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 750; + Weapon.AmmoType1 'RayAmmo'; + Weapon.AmmoGive1 1; + SWWMWeapon.DropAmmoType 'SWWMCellAmmoSmall'; + RayKhom.ClipCount 10; + Stamina 500000; + +SWWMWEAPON.NOFIRSTGIVE; + +SWWMWEAPON.HASSCRTEX; + +WEAPON.EXPLOSIVE; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/zscript/dlc1/swwm_thiccbolts_fx.zsc b/zscript/dlc/swwm_thiccbolts_fx.zsc similarity index 100% rename from zscript/dlc1/swwm_thiccbolts_fx.zsc rename to zscript/dlc/swwm_thiccbolts_fx.zsc diff --git a/zscript/dlc/swwm_ultimate.zsc b/zscript/dlc/swwm_ultimate.zsc new file mode 100644 index 000000000..fdb3bc036 --- /dev/null +++ b/zscript/dlc/swwm_ultimate.zsc @@ -0,0 +1,60 @@ +// Nekuratek Rafan-Kos aka "The Ultimate Weapon" (from UnSX 4) +// Slot 0, spawns shared with Ynykron Artifact + +/* + dev notes: + + - another weapon of the old lore, gotta do my best here + - charge should start with "one extra point", which will count as + the vacuum seal on the pod itself having to be broken before it can + be used, it's simple enough + - to eject the pod, the entire crucible (the barrel) has to slide + backwards, important design detail + - magazine is loaded from the front by opening the handguard as if it + was an oven door (yes, that's how I want it) + - the "elastic beam" system from that one failed unrealscript project + could be recycled for this + - obviously, each beam has to do the fun thing of keeping track of + entry and exit points into level geometry, hopefully this won't be + too costly as the beam range isn't super-long and segments will be + rather large in size, though I worry about the altfire since the idea + is to split it into four thinner beams with the same length but lower + damage +*/ + +Class RafanKos : SWWMWeapon +{ + int clipcount; + bool chambered; + int charge; + + Property ClipCount : clipcount; + + Default + { + Tag "$T_RAFANKOS"; + Inventory.PickupMessage "$T_RAFANKOS"; + Inventory.PickupSound "misc/w_pkup_vip"; + Obituary "$O_RAFANKOS"; + SWWMWeapon.Tooltip "$TT_RAFANKOS"; + SWWMWeapon.GetLine "getrafankos"; + Weapon.SlotNumber 0; + Weapon.SlotPriority 2.; + Weapon.SelectionOrder 8000; + Weapon.AmmoType1 'UltimateAmmo'; + Weapon.AmmoGive1 1; + SWWMWeapon.DropAmmoType 'SWWMCellAmmoBig'; + RafanKos.ClipCount 4; + Stamina -5000000; + +SWWMWEAPON.NOFIRSTGIVE; + +SWWMWEAPON.HASSCRTEX; + +WEAPON.EXPLOSIVE; + +WEAPON.BFG; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/zscript/dlc1/swwm_ultimate_fx.zsc b/zscript/dlc/swwm_ultimate_fx.zsc similarity index 100% rename from zscript/dlc1/swwm_ultimate_fx.zsc rename to zscript/dlc/swwm_ultimate_fx.zsc diff --git a/zscript/dlc1/swwm_ammoitems_dlc.zsc b/zscript/dlc1/swwm_ammoitems_dlc.zsc deleted file mode 100644 index 8721f144f..000000000 --- a/zscript/dlc1/swwm_ammoitems_dlc.zsc +++ /dev/null @@ -1,624 +0,0 @@ -// All DLC weapon ammo pickups - -Class SMW05Ammo : SWWMAmmo -{ - Default - { - //$Title 1x SMW.05 Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SMW05Ammo.png - //$Icon ammo - Tag "$T_SMW05BULLET"; - SWWMAmmo.PickupTag "SMW05BULLET"; - Stamina 300; - Inventory.Icon "graphics/HUD/Icons/A_SMW05Ammo.png"; - Inventory.Amount 1; - Inventory.MaxAmount 60; - Ammo.BackpackAmount 6; - Ammo.BackpackMaxAmount 90; - Ammo.DropAmount 3; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 20; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class SMW05Ammo2 : SMW05Ammo -{ - Default - { - //$Title 2x SMW.05 Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SMW05Ammo.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class SMW05Ammo3 : SMW05Ammo -{ - Default - { - //$Title 3x SMW.05 Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SMW05Ammo.png - //$Icon ammo - Inventory.Amount 3; - } -} -Class SMW05SmallAmmo : SMW05Ammo -{ - Default - { - //$Title 6x SMW.05 Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SMW05Ammo.png - //$Icon ammo - Inventory.Amount 6; - } -} -Class SMW05BigAmmo : SMW05Ammo -{ - Default - { - //$Title 20x SMW.05 Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SMW05Ammo.png - //$Icon ammo - Inventory.Amount 20; - } -} - -Class SheenAmmo : SWWMAmmo -{ - Default - { - //$Title 1x Sheen Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SheenAmmo.png - //$Icon ammo - Tag "$T_SHEENBULLET"; - SWWMAmmo.PickupTag "SHEENBULLET"; - Stamina 400; - Inventory.Icon "graphics/HUD/Icons/A_SheenAmmo.png"; - Inventory.Amount 1; - Inventory.MaxAmount 300; - Ammo.BackpackAmount 60; - Ammo.BackpackMaxAmount 1200; - Ammo.DropAmount 3; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 35; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class SheenAmmo2 : SheenAmmo -{ - Default - { - //$Title 2x Sheen Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SheenAmmo.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class SheenAmmo3 : SheenAmmo -{ - Default - { - //$Title 3x Sheen Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SheenAmmo.png - //$Icon ammo - Inventory.Amount 3; - } -} -Class SheenTinyAmmo : SheenAmmo -{ - Default - { - //$Title 10x Sheen Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SheenAmmo.png - //$Icon ammo - Inventory.Amount 10; - } -} -Class SheenSmallAmmo : SheenAmmo -{ - Default - { - //$Title 50x Sheen Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SheenAmmo.png - //$Icon ammo - Inventory.Amount 50; - } -} -Class SheenBigAmmo : SheenAmmo -{ - Default - { - //$Title 100x Sheen Bullets - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SheenAmmo.png - //$Icon ammo - Inventory.Amount 100; - } -} - -Class QuadravolAmmo : SWWMAmmo -{ - Default - { - //$Title Quadravol Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_QuadAmmo.png - //$Icon ammo - Tag "$T_QUADAMMO"; - SWWMAmmo.PickupTag "QUADAMMO"; - Stamina 10000; - Inventory.Icon "graphics/HUD/Icons/A_QuadAmmo.png"; - Inventory.Amount 1; - Inventory.MaxAmount 5; - Ammo.BackpackAmount 2; - Ammo.BackpackMaxAmount 15; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 45; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class QuadravolAmmo2 : QuadravolAmmo -{ - Default - { - //$Title 2x Quadravol Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_QuadAmmo.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class QuadravolAmmo3 : QuadravolAmmo -{ - Default - { - //$Title 3x Quadravol Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_QuadAmmo.png - //$Icon ammo - Inventory.Amount 3; - } -} - -Class SparksterBAmmo : SWWMAmmo -{ - Default - { - //$Title Sparkster Blue Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SparkBAmmo.png - //$Icon ammo - Tag "$T_SPARKBCELL"; - SWWMAmmo.PickupTag "SPARKBCELL"; - Stamina 16000; - Inventory.Icon "graphics/HUD/Icons/A_SparkBAmmo.png"; - Inventory.Amount 1; - Inventory.MaxAmount 6; - Ammo.BackpackAmount 2; - Ammo.BackpackMaxAmount 16; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 70; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class SparksterBAmmo2 : SparksterBAmmo -{ - Default - { - //$Title 2x Sparkster Blue Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SparkBAmmo.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class SparksterBAmmo3 : SparksterBAmmo -{ - Default - { - //$Title 3x Sparkster Blue Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SparkBAmmo.png - //$Icon ammo - Inventory.Amount 3; - } -} - -Class SparksterRAmmo : SWWMAmmo -{ - Default - { - //$Title Sparkster Red Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SparkRAmmo.png - //$Icon ammo - Tag "$T_SPARKRCELL"; - SWWMAmmo.PickupTag "SPARKRCELL"; - Stamina 18000; - Inventory.Icon "graphics/HUD/Icons/A_SparkRAmmo.png"; - Inventory.Amount 1; - Inventory.MaxAmount 6; - Ammo.BackpackAmount 2; - Ammo.BackpackMaxAmount 16; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 75; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class SparksterRAmmo2 : SparksterRAmmo -{ - Default - { - //$Title 2x Sparkster Red Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SparkRAmmo.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class SparksterRAmmo3 : SparksterRAmmo -{ - Default - { - //$Title 3x Sparkster Red Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SparkRAmmo.png - //$Icon ammo - Inventory.Amount 3; - } -} - -Class MisterRound : MagAmmo -{ - Default - { - //$Title Mortal Rifle Round - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRRound.png - //$Icon ammo - Tag "$T_MRROUND"; - MagAmmo.PickupTag "MRROUND"; - Inventory.Icon "graphics/HUD/Icons/A_MRRound.png"; - MagAmmo.ParentAmmo "MisterAmmo"; - MagAmmo.ClipSize 30; - Inventory.MaxAmount 40; - +FLOATBOB; - FloatBobStrength 0.25; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class MisterRound2 : MisterRound -{ - Default - { - //$Title 2x Mortal Rifle Round - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRRound.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class MisterRound3 : MisterRound -{ - Default - { - //$Title 3x Mortal Rifle Round - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRRound.png - //$Icon ammo - Inventory.Amount 3; - } -} -Class MisterRound5 : MisterRound -{ - Default - { - //$Title 5x Mortal Rifle Round - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRRound.png - //$Icon ammo - Inventory.Amount 5; - } -} -Class MisterRound10 : MisterRound -{ - Default - { - //$Title 10x Mortal Rifle Round - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRRound.png - //$Icon ammo - Inventory.Amount 10; - } -} - -Class MisterAmmo : SWWMAmmo -{ - Default - { - //$Title Mortal Rifle Mag - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRAmmo.png - //$Icon ammo - Tag "$T_MRAMMO"; - SWWMAmmo.PickupTag "MRAMMO"; - Stamina 120000; - Inventory.Icon "graphics/HUD/Icons/A_MRAmmo.png"; - Inventory.Amount 1; - Inventory.MaxAmount 2; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 6; - Ammo.DropAmount 1; - SWWMAmmo.MagAmmoType "MisterRound"; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 90; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} - -Class MisterGAmmo : SWWMAmmo -{ - Default - { - //$Title Mortal Rifle Grenade - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRGrenade.png - //$Icon ammo - Tag "$T_MRGRENADE"; - SWWMAmmo.PickupTag "MRGRENADE"; - Stamina 90000; - Inventory.Icon "graphics/HUD/Icons/A_MRGrenade.png"; - Inventory.Amount 1; - Inventory.MaxAmount 3; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 6; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 90; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class MisterGAmmo2 : MisterGAmmo -{ - Default - { - //$Title 2x Mortal Rifle Grenades - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRGrenade.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class MisterGAmmo3 : MisterGAmmo -{ - Default - { - //$Title 3x Mortal Rifle Grenades - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_MRGrenade.png - //$Icon ammo - Inventory.Amount 3; - } -} - -Class RayBolt : MagAmmo -{ - Default - { - //$Title Ray-Khom Bolt - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_RayBolt.png - //$Icon ammo - Tag "$T_RAYBOLT"; - MagAmmo.PickupTag "RAYBOLT"; - Inventory.Icon "graphics/HUD/Icons/A_RayBolt.png"; - MagAmmo.ParentAmmo "RayAmmo"; - MagAmmo.ClipSize 10; - Inventory.MaxAmount 15; - +FLOATBOB; - FloatBobStrength 0.25; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class RayBolt2 : RayBolt -{ - Default - { - //$Title 2x Ray-Khom Bolt - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_RayBolt.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class RayBolt5 : RayBolt -{ - Default - { - //$Title 5x Ray-Khom Bolt - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_RayBolt.png - //$Icon ammo - Inventory.Amount 5; - } -} - -Class RayAmmo : SWWMAmmo -{ - Default - { - //$Title Ray-Khom Mag - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_RayAmmo.png - //$Icon ammo - Tag "$T_RAYAMMO"; - SWWMAmmo.PickupTag "RAYAMMO"; - Stamina 150000; - Inventory.Icon "graphics/HUD/Icons/A_RayAmmo.png"; - Inventory.Amount 1; - Inventory.MaxAmount 3; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 5; - Ammo.DropAmount 1; - SWWMAmmo.MagAmmoType "RayBolt"; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 90; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} - -Class RayBattery : SWWMAmmo -{ - Default - { - //$Title Ray-Khom Battery - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_RayBattery.png - //$Icon ammo - Tag "$T_RAYBATTERY"; - SWWMAmmo.PickupTag "RAYBATTERY"; - Stamina 320000; - Inventory.Icon "graphics/HUD/Icons/A_RayBattery.png"; - Inventory.Amount 1; - Inventory.MaxAmount 2; - Inventory.PickupFlash "SWWMPickupFlash"; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 4; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Accuracy 90; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} - -Class UltimatePod : MagAmmo -{ - Default - { - //$Title Ultimate Pod - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_UltimatePod.png - //$Icon ammo - Tag "$T_ULTIMATEPOD"; - MagAmmo.PickupTag "ULTIMATEPOD"; - Inventory.PickupSound "misc/bullet_pkup_vip"; - Inventory.Icon "graphics/HUD/Icons/A_UltimatePod.png"; - MagAmmo.ParentAmmo "UltimateAmmo"; - MagAmmo.ClipSize 4; - Inventory.MaxAmount 6; - +FLOATBOB; - FloatBobStrength 0.25; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} - -Class UltimateAmmo : SWWMAmmo -{ - Default - { - //$Title Ultimate Mag - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_UltimateAmmo.png - //$Icon ammo - Tag "$T_ULTIMATEAMMO"; - SWWMAmmo.PickupTag "ULTIMATEAMMO"; - Inventory.PickupSound "misc/ammo_pkup_vip"; - Stamina -2000000; - Inventory.Icon "graphics/HUD/Icons/A_UltimateAmmo.png"; - Inventory.Amount 1; - Inventory.MaxAmount 1; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 3; - Ammo.DropAmount 1; - SWWMAmmo.MagAmmoType "UltimatePod"; - +FLOATBOB; - FloatBobStrength 0.25; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_blastin.zsc b/zscript/dlc1/swwm_blastin.zsc deleted file mode 100644 index 52b8bcf16..000000000 --- a/zscript/dlc1/swwm_blastin.zsc +++ /dev/null @@ -1,61 +0,0 @@ -// Nuutek Plasma Blaster (from SWWM series) -// Slot 2, spawns shared with Explodium Gun - -Class PlasmaBlast : SWWMWeapon -{ - int clipcount, chargelevel; - - Property ClipCount : clipcount; - - Default - { - //$Title Plasma Blaster - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_PlasmaBlast.png - //$Icon weapon - Tag "$T_PLASMABLAST"; - Inventory.PickupMessage "$T_PLASMABLAST"; - Obituary "$O_PLASMABLAST"; - SWWMWeapon.Tooltip "$TT_PLASMABLAST"; - SWWMWeapon.GetLine "getplasmablast1"; - Inventory.Icon "graphics/HUD/Icons/W_PlasmaBlast.png"; - Weapon.SlotNumber 2; - Weapon.SlotPriority 3.; - Weapon.SelectionOrder 1100; - Inventory.MaxAmount 2; - Weapon.SisterWeapon "DualPlasmaBlast"; - Stamina 7000; - PlasmaBlast.ClipCount 15; - +WEAPON.EXPLOSIVE; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} - -Class DualPlasmaBlast : SWWMWeapon -{ - int clipcount; - - Property ClipCount : clipcount; - - Default - { - Tag "$T_PLASMABLAST2"; - Obituary "$O_PLASMABLAST"; - SWWMWeapon.Tooltip "$TT_PLASMABLAST2"; - SWWMWeapon.GetLine "getplasmablast2"; - Inventory.Icon "graphics/HUD/Icons/W_PlasmaBlast2.png"; - Weapon.SlotNumber 2; - Weapon.SlotPriority 4.; - Weapon.SelectionOrder 1050; - Weapon.SisterWeapon "PlasmaBlast"; - DualPlasmaBlast.ClipCount 15; - +WEAPON.EXPLOSIVE; - +SWWMWEAPON.HIDEINMENU; - +SWWMWEAPON.NOSWAPWEAPON; - } -} diff --git a/zscript/dlc1/swwm_blueballs.zsc b/zscript/dlc1/swwm_blueballs.zsc deleted file mode 100644 index 93aea477c..000000000 --- a/zscript/dlc1/swwm_blueballs.zsc +++ /dev/null @@ -1,43 +0,0 @@ -// Tach-Engine & Nekuratek Sparkster x3 (from UnSX 2) -// Slot 7, spawns shared with Biospark Carbine - -Class ModernSparkster : SWWMWeapon -{ - int clipcount, clipcount2; - - Property ClipCount : clipcount; - Property ClipCount2 : clipcount2; - - Default - { - //$Title Sparkster x3 - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_NewSparkster.png - //$Icon weapon - Tag "$T_NEWSPARKSTER"; - Inventory.PickupMessage "$I_NEWSPARKSTER"; - Obituary "$O_NEWSPARKSTER"; - SWWMWeapon.Tooltip "$TT_NEWSPARKSTER"; - SWWMWeapon.GetLine "getnewsparkster"; - Inventory.Icon "graphics/HUD/Icons/W_NewSparkster.png"; - Weapon.SlotNumber 7; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 550; - Weapon.AmmoType1 "SparksterBAmmo"; - Weapon.AmmoGive1 1; - Weapon.AmmoType2 "SparksterRAmmo"; - Weapon.AmmoGive2 1; - SWWMWeapon.DropAmmoType "RocketAmmo"; - ModernSparkster.ClipCount 4; - ModernSparkster.ClipCount2 4; - Stamina 220000; - +SWWMWEAPON.NOFIRSTGIVE; - +WEAPON.EXPLOSIVE; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_hammertime.zsc b/zscript/dlc1/swwm_hammertime.zsc deleted file mode 100644 index 4cd3d1b34..000000000 --- a/zscript/dlc1/swwm_hammertime.zsc +++ /dev/null @@ -1,30 +0,0 @@ -// Itamex Reinforced Combat Hammer (from UnSX 5) -// Slot 1, spawns shared with Pusher - -Class ItamexHammer : SWWMWeapon -{ - Default - { - //$Title Itamex Hammer - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_ItamexHammer.png - //$Icon weapon - Tag "$T_HAMMER"; - Inventory.PickupMessage "$I_HAMMER"; - Obituary "$O_HAMMER"; - SWWMWeapon.Tooltip "$TT_HAMMER"; - SWWMWeapon.GetLine "getitamexhammer"; - Inventory.Icon "graphics/HUD/Icons/W_ItamexHammer.png"; - Weapon.SlotNumber 1; - Weapon.SlotPriority 3.; - Weapon.SelectionOrder 1200; - Stamina 9000; - +WEAPON.MELEEWEAPON; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_hammertime_fx.zsc b/zscript/dlc1/swwm_hammertime_fx.zsc deleted file mode 100644 index 5727340da..000000000 --- a/zscript/dlc1/swwm_hammertime_fx.zsc +++ /dev/null @@ -1 +0,0 @@ -// Itamex Hammer projectiles and effects diff --git a/zscript/dlc1/swwm_heavymahsheengun.zsc b/zscript/dlc1/swwm_heavymahsheengun.zsc deleted file mode 100644 index 6a082d4cb..000000000 --- a/zscript/dlc1/swwm_heavymahsheengun.zsc +++ /dev/null @@ -1,32 +0,0 @@ -// Cyrus Enterprises Sheen HMG (From SWWM Platinum Expansion Pack 2) -// Slot 5, spawns shared with Eviscerator - -Class HeavyMahSheenGun : SWWMWeapon -{ - Default - { - //$Title Sheen HMG - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_SheenHMG.png - //$Icon weapon - Tag "$T_SHEENHMG"; - Inventory.PickupMessage "$I_SHEENHMG"; - Obituary "$O_SHEENHMG"; - SWWMWeapon.Tooltip "$TT_SHEENHMG"; - SWWMWeapon.GetLine "getheavymahsheengun"; - Inventory.Icon "graphics/HUD/Icons/W_SheenHMG.png"; - Weapon.SlotNumber 5; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 100; - Weapon.AmmoType1 "SheenAmmo"; - Weapon.AmmoGive1 200; - SWWMWeapon.DropAmmoType "SheenAmmo"; - Stamina 100000; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_heavymahsheengun_fx.zsc b/zscript/dlc1/swwm_heavymahsheengun_fx.zsc deleted file mode 100644 index 1150517c2..000000000 --- a/zscript/dlc1/swwm_heavymahsheengun_fx.zsc +++ /dev/null @@ -1 +0,0 @@ -// Sheen HMG projectiles and effects diff --git a/zscript/dlc1/swwm_mister.zsc b/zscript/dlc1/swwm_mister.zsc deleted file mode 100644 index cf9e85920..000000000 --- a/zscript/dlc1/swwm_mister.zsc +++ /dev/null @@ -1,43 +0,0 @@ -// Plutoni Inc. Mortal Rifle (from UnSX 2) -// Slot 8, shared spawn with Silver Bullet JET - -Class MisterRifle : SWWMWeapon -{ - int clipcount; - bool chambered, gchambered; - int firemode; - - Property ClipCount : clipcount; - - Default - { - //$Title Mortal Rifle - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_MortalRifle.png - //$Icon weapon - Tag "$T_MORTALRIFLE"; - Inventory.PickupMessage "$T_MORTALRIFLE"; - Obituary "$O_MORTALRIFLE"; - SWWMWeapon.Tooltip "$TT_MORTALRIFLE"; - SWWMWeapon.GetLine "getmortalrifle"; - Inventory.Icon "graphics/HUD/Icons/W_MortalRifle.png"; - Weapon.SlotNumber 8; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 850; - Weapon.AmmoType1 "MisterAmmo"; - Weapon.AmmoGive1 1; - Weapon.AmmoType2 "MisterGAmmo"; - Weapon.AmmoGive2 1; - SWWMWeapon.DropAmmoType "MisterAmmo"; - MisterRifle.ClipCount 30; - Stamina 500000; - +SWWMWEAPON.NOFIRSTGIVE; - +WEAPON.EXPLOSIVE; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_mister_fx.zsc b/zscript/dlc1/swwm_mister_fx.zsc deleted file mode 100644 index 910626fc3..000000000 --- a/zscript/dlc1/swwm_mister_fx.zsc +++ /dev/null @@ -1 +0,0 @@ -// Mortal Rifle projectiles and effects diff --git a/zscript/dlc1/swwm_notashotgun.zsc b/zscript/dlc1/swwm_notashotgun.zsc deleted file mode 100644 index 9cf02df9c..000000000 --- a/zscript/dlc1/swwm_notashotgun.zsc +++ /dev/null @@ -1,40 +0,0 @@ -// Kmonn Shuna Quadravol (from UnSX series, not a Quadshot reskin anymore) -// Slot 6, spawns shared with Hellblazer - -Class Quadravol : SWWMWeapon -{ - int clipcount; - int chargelevel; - - Property ClipCount : clipcount; - - Default - { - //$Title Quadravol - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_Quadravol.png - //$Icon weapon - Tag "$T_QUADRAVOL"; - Inventory.PickupMessage "$I_QUADRAVOL"; - Obituary "$O_QUADRAVOL"; - SWWMWeapon.Tooltip "$TT_QUADRAVOL"; - SWWMWeapon.GetLine "getquadravol"; - Inventory.Icon "graphics/HUD/Icons/W_Quadravol.png"; - Weapon.SlotNumber 6; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 650; - Weapon.AmmoType1 "QuadravolAmmo"; - Weapon.AmmoGive1 1; - SWWMWeapon.DropAmmoType "QuadravolAmmo"; - Quadravol.ClipCount 5; - Stamina 80000; - +SWWMWEAPON.NOFIRSTGIVE; - +WEAPON.EXPLOSIVE; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_notashotgun_fx.zsc b/zscript/dlc1/swwm_notashotgun_fx.zsc deleted file mode 100644 index ef3f3bb30..000000000 --- a/zscript/dlc1/swwm_notashotgun_fx.zsc +++ /dev/null @@ -1,292 +0,0 @@ -// Quadravol projectiles and effects - -Class OnFireLight : DynamicLight -{ - OnFire of; - - override void Tick() - { - Super.Tick(); - if ( !of || !of.victim ) - { - Destroy(); - return; - } - Args[0] = clamp(of.Amount*4,0,255); - Args[1] = clamp(of.Amount*2,0,160); - Args[2] = clamp(of.Amount/2,0,24); - Args[3] = int(max(of.victim.radius,of.victim.height)*(of.victim.scale.x+of.victim.scale.y)*1.2+40+clamp(of.amount/5,0,120)); - SetOrigin(of.Victim.Vec3Offset(0,0,of.Victim.Height/2),true); - } -} - -Class OnFire : Actor -{ - OnFire prevfire, nextfire; - Actor victim, instigator, lite; - int amount, cnt, delay; - double oangle; - - override void OnDestroy() - { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd ) - { - hnd.fires_cnt--; - if ( !prevfire ) - { - hnd.fires = nextfire; - if ( nextfire ) nextfire.prevfire = null; - } - else - { - prevfire.nextfire = nextfire; - if ( nextfire ) nextfire.prevfire = prevfire; - } - } - Super.OnDestroy(); - } - - override void Tick() - { - if ( isFrozen() ) return; - if ( !victim ) - { - A_StopSound(CHAN_5); - Destroy(); - return; - } - SetOrigin(victim.pos,false); - if ( victim.waterlevel > 0 ) - { - if ( lite ) lite.Destroy(); - amount -= int(victim.waterlevel**2); - } - if ( victim.Health <= 0 ) amount = min(amount,100); - if ( !(level.maptime%3) ) - amount--; - if ( victim.player ) amount -= int(abs(actor.deltaangle(victim.angle,oangle))/30); - oangle = victim.angle; - if ( amount < -30 ) - { - A_StopSound(CHAN_5); - Destroy(); - return; - } - if ( cnt > 0 ) cnt--; - else - { - cnt = min(10,30-int(29*(min(1.,amount/500.)**3.))); - if ( victim.bSHOOTABLE && (victim.Health > 0) && (amount > 0) ) - { - int flg = DMG_THRUSTLESS; - if ( victim is 'Centaur' ) flg |= DMG_FOILINVUL; // you're on fire, that shield is worthless - victim.DamageMobj(self,instigator,clamp(int(amount*.06),1,20),'Fire',flg); // need to use this actor as inflictor to have a proper obituary - if ( victim.bISMONSTER && !Random[FlameT](0,3) ) - victim.Howl(); - } - if ( !victim ) - { - A_StopSound(CHAN_5); - Destroy(); - return; - } - else SWWMUtility.DoExplosion(self,clamp(int(amount*.06),1,20),0,victim.radius+40,victim.radius,DE_NOBLEED|DE_NOSPLASH|DE_HOWL,'Fire',victim); // radius fire damage - } - double mult = max(victim.radius,victim.height)/30.; - if ( delay > 0 ) delay--; - if ( (level.maptime+special1)%6 ) return; - A_SoundVolume(CHAN_5,min(1.,mult*amount/80.)); - int numpt = clamp(int(Random[FlameT](2,4)*amount*.01),1,4); - numpt = int(clamp(numpt*mult**.5,1,3)); - for ( int i=0; i 0 ) - { - let c = victim.Spawn("OnFireTrail",pos); - c.special1 = Random[FlameT](-2,2); - c.scale *= max(.3,mult*0.5); - c.vel = victim.vel*0.5+(cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[FlameT](.5,2.)*c.scale.x; - } - if ( !(i%2) ) - { - let s = victim.Spawn("SWWMHalfSmoke",pos); - s.scale *= max(1.,1.6*mult); - s.alpha *= min(amount+30,100)*.01; - s.vel = victim.vel*0.5+(cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[FlameT](.2,.6)*s.scale.x; - } - } - } - - static OnFire Apply( Actor victim, Actor instigator, int amount, int delay = 0 ) - { - if ( amount <= 0 ) return null; - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !hnd ) return null; - OnFire t; - for ( t=hnd.fires; t; t=t.nextfire ) - { - if ( t.victim != victim ) continue; - if ( instigator ) t.instigator = instigator; - t.amount = min(500,t.amount+amount); - t.cnt = min(t.cnt,5); - return t; - } - t = OnFire(Spawn("OnFire",victim.pos)); - t.victim = victim; - t.instigator = instigator; - t.amount = min(500,amount); - t.cnt = 1; - t.special1 = Random[FlameT](0,10); - t.A_StartSound("misc/flame",CHAN_5,CHANF_LOOP); - double mult = max(victim.radius,victim.height)/30.; - t.A_SoundVolume(CHAN_5,min(1.,mult*amount/80.)); - // for chunks - t.delay = delay; - t.lite = Actor.Spawn("OnFireLight",victim.pos); - OnFireLight(t.lite).of = t; - t.oangle = victim.angle; - // append - t.nextfire = hnd.fires; - if ( hnd.fires ) hnd.fires.prevfire = t; - hnd.fires = t; - hnd.fires_cnt++; - return t; - } - - static OnFire IsOnFire( Actor victim ) - { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !hnd ) return null; - OnFire t; - for ( t=hnd.fires; t; t=t.nextfire ) - { - if ( t.victim != victim ) continue; - if ( t.amount <= 0 ) return null; - return t; - } - return null; - } - - Default - { - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOEXTREMEDEATH; - +NOINTERACTION; - Obituary "$O_QUADRAVOL"; - } -} - -Class OnFireTrailLight : PaletteLight -{ - Default - { - Tag "HellExpl"; - Args 0,0,0,40; - ReactionTime 40; - } - override void Tick() - { - Super.Tick(); - Args[0] /= 10; - Args[1] /= 10; - Args[2] /= 10; - Args[3] += 3; - if ( !target || (target.waterlevel > 0) ) - { - Destroy(); - return; - } - SetOrigin(target.pos,true); - } -} - -Class OnFireTrail : Actor -{ - override void PostBeginPlay() - { - Super.PostBeginPlay(); - Scale.x *= RandomPick[ExploS](-1,1); - Scale.y *= RandomPick[ExploS](-1,1); - roll = FRandom[ExploS](0,360); - } - action void A_Flame() - { - special1++; - if ( waterlevel > 0 ) - vel *= .9; - else - { - vel *= .98; - vel.z += .1+.2*abs(scale.x); - } - if ( waterlevel > 0 ) - { - let s = Spawn("SWWMSmoke",pos); - s.vel = (FRandom[FlameT](-.2,.2),FRandom[FlameT](-.2,.2),FRandom[FlameT](-.2,.2)); - s.vel += vel*.3; - s.alpha *= alpha*2; - s.scale *= .5+abs(scale.x)*(.5+special1/6.); - Destroy(); - return; - } - if ( !Random[FlameT](0,int(40*(default.alpha-alpha))) ) - { - let s = Spawn("SWWMHalfSmoke",pos); - s.vel = (FRandom[FlameT](-.2,.2),FRandom[FlameT](-.2,.2),FRandom[FlameT](-.2,.2)); - s.vel += vel*.3; - s.alpha *= alpha*1.5; - s.scale *= .5+abs(scale.x)*(.5+special1/6.); - } - } - override void Tick() - { - if ( isFrozen() ) return; - SetOrigin(level.Vec3Offset(pos,vel),true); - UpdateWaterLevel(); - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - Default - { - RenderStyle "Add"; - Speed 2; - Radius 4; - Height 4; - Alpha .6; - Scale .8; - +NOBLOCKMAP; - +NOGRAVITY; - +NOFRICTION; - +SLIDESONWALLS; - +NOTELEPORT; - +FORCEXYBILLBOARD; - +ROLLSPRITE; - +ROLLCENTER; - +DROPOFF; - +NOBLOCKMONST; - +DONTSPLASH; - +NOINTERACTION; - } - States - { - Spawn: - XFLM ABCDEFGHIJKLMNOPQRST 1 Bright - { - A_Flame(); - A_SetScale(scale.x*0.98); - A_FadeOut(0.02); - } - Wait; - } -} diff --git a/zscript/dlc1/swwm_rebolber.zsc b/zscript/dlc1/swwm_rebolber.zsc deleted file mode 100644 index ca624051a..000000000 --- a/zscript/dlc1/swwm_rebolber.zsc +++ /dev/null @@ -1,37 +0,0 @@ -// Blackmann Arms "Puntzer Beta" SMW.05 Revolver (planned for unreleased SWWM Iridium) -// Slot 3, spawns shared with Spreadgun - -Class PuntzerBeta : SWWMWeapon -{ - int bullets[6]; - int rotation; - bool initialized; - - Default - { - //$Title Puntzer Beta - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_PuntzerBeta.png - //$Icon weapon - Tag "$T_PUNTZERBETA"; - Inventory.PickupMessage "$I_PUNTZERBETA"; - Obituary "$O_PUNTZERBETA"; - SWWMWeapon.Tooltip "$TT_PUNTZERBETA"; - SWWMWeapon.GetLine "getpuntzerbeta"; - Inventory.Icon "graphics/HUD/Icons/W_PuntzerBeta.png"; - Weapon.SlotNumber 3; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 450; - Weapon.AmmoType1 "SMW05Ammo"; - Weapon.AmmoGive1 6; - SWWMWeapon.DropAmmoType "SMW05Ammo"; - Stamina 10000; - +SWWMWEAPON.NOFIRSTGIVE; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_supermarioworld.zsc b/zscript/dlc1/swwm_supermarioworld.zsc deleted file mode 100644 index 4e9361691..000000000 --- a/zscript/dlc1/swwm_supermarioworld.zsc +++ /dev/null @@ -1,39 +0,0 @@ -// Blackmann Arms "Puntzer Gamma" SMW.05 Assault Carbine (was planned for SWWM Z) -// Slot 4, spawns shared with Wallbuster - -Class PuntzerGamma : SWWMWeapon -{ - int ClipCount; - bool chambered; - - Property ClipCount : ClipCount; - - Default - { - //$Title Puntzer Gamma - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_PuntzerGamma.png - //$Icon weapon - Tag "$T_PUNTZERGAMMA"; - Inventory.PickupMessage "$I_PUNTZERGAMMA"; - Obituary "$O_PUNTZERGAMMA"; - SWWMWeapon.Tooltip "$TT_PUNTZERGAMMA"; - SWWMWeapon.GetLine "getpuntzergamma"; - Inventory.Icon "graphics/HUD/Icons/W_PuntzerGamma.png"; - Weapon.SlotNumber 4; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 200; - PuntzerGamma.ClipCount 30; - Weapon.AmmoType1 "SMW05Ammo"; - Weapon.AmmoGive1 30; - SWWMWeapon.DropAmmoType "SMW05Ammo"; - Stamina 30000; - +SWWMWEAPON.NOFIRSTGIVE; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_thiccbolts.zsc b/zscript/dlc1/swwm_thiccbolts.zsc deleted file mode 100644 index 96ffe5f44..000000000 --- a/zscript/dlc1/swwm_thiccbolts.zsc +++ /dev/null @@ -1,46 +0,0 @@ -// Kmonn Shunna Ray-Khom (from UnSX series) -// Slot 9, spawns shared with Candygun - -Class RayKhom : SWWMWeapon -{ - int clipcount, clipcount2; - bool chambered; - - Property ClipCount : clipcount; - Property ClipCount2 : clipcount2; - - Default - { - //$Title Ray-Khom - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_RayKhom.png - //$Icon weapon - Tag "$T_RAYKHOM"; - Inventory.PickupMessage "$T_RAYKHOM"; - Obituary "$O_RAYKHOM"; - SWWMWeapon.Tooltip "$TT_RAYKHOM"; - SWWMWeapon.GetLine "getraykhom"; - Inventory.Icon "graphics/HUD/Icons/W_RayKhom.png"; - Weapon.SlotNumber 9; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 750; - Weapon.AmmoType1 "RayAmmo"; - Weapon.AmmoGive1 1; - Weapon.AmmoType2 "RayBattery"; - Weapon.AmmoGive2 0; - SWWMWeapon.DropAmmoType "RayAmmo"; - RayKhom.ClipCount 20; - RayKhom.ClipCount2 500; - Stamina 1600000; - +SWWMWEAPON.NOFIRSTGIVE; - +WEAPON.PRIMARY_USES_BOTH; - +WEAPON.EXPLOSIVE; - +WEAPON.BFG; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc1/swwm_ultimate.zsc b/zscript/dlc1/swwm_ultimate.zsc deleted file mode 100644 index 3b1c19d83..000000000 --- a/zscript/dlc1/swwm_ultimate.zsc +++ /dev/null @@ -1,42 +0,0 @@ -// Nekuratek Rafan-Kos aka "The Ultimate Weapon" (from UnSX 4) -// Slot 0, spawns shared with Ynykron Artifact - -Class RafanKos : SWWMWeapon -{ - int clipcount; - bool chambered; - - Property ClipCount : clipcount; - - Default - { - //$Title Rafan-Kos - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_RafanKos.png - //$Icon weapon - Tag "$T_RAFANKOS"; - Inventory.PickupMessage "$T_RAFANKOS"; - Inventory.PickupSound "misc/w_pkup_vip"; - Obituary "$O_RAFANKOS"; - SWWMWeapon.Tooltip "$TT_RAFANKOS"; - SWWMWeapon.GetLine "getrafankos"; - Inventory.Icon "graphics/HUD/Icons/W_RafanKos.png"; - Weapon.SlotNumber 0; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 8000; - Weapon.AmmoType1 "UltimateAmmo"; - Weapon.AmmoGive1 1; - SWWMWeapon.DropAmmoType "UltimateAmmo"; - RafanKos.ClipCount 4; - Stamina -5000000; - +SWWMWEAPON.NOFIRSTGIVE; - +WEAPON.EXPLOSIVE; - +WEAPON.BFG; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/dlc2/swwm_demoland.zsc b/zscript/dlc2/swwm_demoland.zsc deleted file mode 100644 index fed2f7923..000000000 --- a/zscript/dlc2/swwm_demoland.zsc +++ /dev/null @@ -1 +0,0 @@ -// TODO Demo Land Adventure game code diff --git a/zscript/dlc2/swwm_demoquest.zsc b/zscript/dlc2/swwm_demoquest.zsc deleted file mode 100644 index 2ed93bfe0..000000000 --- a/zscript/dlc2/swwm_demoquest.zsc +++ /dev/null @@ -1 +0,0 @@ -// TODO Demolition Quest game code diff --git a/zscript/dlc2/swwm_demoshmup.zsc b/zscript/dlc2/swwm_demoshmup.zsc deleted file mode 100644 index db9bcc83b..000000000 --- a/zscript/dlc2/swwm_demoshmup.zsc +++ /dev/null @@ -1 +0,0 @@ -// TODO Interplanetary Demolitionist game code diff --git a/zscript/handler/swwm_handler.zsc b/zscript/handler/swwm_handler.zsc new file mode 100644 index 000000000..49e73150a --- /dev/null +++ b/zscript/handler/swwm_handler.zsc @@ -0,0 +1,363 @@ +// Handler responsible for item replacements and whatever else +// most of the code is split up to make it easier to navigate + +Class SWWMHandler : EventHandler +{ + Mixin SWWMUIRandom; + + transient int lastlock; + transient int lastpickuptic[MAXPLAYERS]; // these two are mostly used + transient int lastnuggettic[MAXPLAYERS]; // to avoid deafening players + SWWMScoreObj scorenums; + SWWMDamNum damnums; + SWWMInterest intpoints; + Array damtypes, damcolors; + + transient int slotstrictwarn; + transient ui String sswstr; + transient ui BrokenLines sswl; + + // stuff to reduce worldthingspawned overhead + int bossmap; + int iwantdie; + int indoomvacation; + int inultdoom2; + Array funtagsv, mergemonstersv; + + // for checkreplacement + bool hasdrlamonsters, haslegionofbones; + int iskdizd; + Array bludtypes; + + // mod inter-compat stuff + bool ccloaded; + + // session globals + SWWMGlobals gdat; + + // profiling data + bool profiling; + int bprofiletics, profiletics; // how many tics to aggregate data for + double prof_ms[8], prof_avg[8]; + int prof_calls[8]; + double curms; + + // to avoid some overlaps + ui DSMapTitle mapmsg; + + // corruption cards stuff + ui bool incardmenu, cardmessaged; + + // ring buffer for player path tracing in minimap + const MAX_TRACED_BUFSZ = 8192; + transient ui Vector2 traced_steps[MAX_TRACED_BUFSZ]; + transient ui int traced_steppos, traced_stepnum; + transient ui Vector2 oldplayerpos; + transient ui bool do_trace_steps; + + enum EProfileTimer + { + PT_WORLDTICK, + PT_WORLDTHINGSPAWNED, + PT_WORLDTHINGDESTROYED, + PT_WORLDTHINGDIED, + PT_WORLDTHINGDAMAGED, + PT_WORLDTHINGREVIVED, + PT_CHECKREPLACEMENT, + PT_CHECKREPLACEE + } + + private void ProfileTick() + { + curms = MSTimeF(); + } + private void ProfileTock( int idx ) + { + double diff = (MSTimeF()-curms); + prof_ms[idx] += diff; + prof_avg[idx] = (prof_calls[idx]>0)?(prof_avg[idx]+diff)/2.:diff; + prof_calls[idx]++; + } + + static play void ToggleStore( bool val ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd || !hnd.gdat ) return; // shouldn't happen, but doesn't hurt to check + hnd.gdat.disablestore = !val; + } + static play void ToggleRevive( bool val ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd || !hnd.gdat ) return; // shouldn't happen, but doesn't hurt to check + hnd.gdat.disablerevive = !val; + } + + override void OnRegister() + { + // oneliner RNG must be relative to consoleplayer + SetRandomSeed[DemoLines](Random[DemoLines]()+consoleplayer+MSTime()); + // "uninitialize" some vars + iwantdie = -1; + bossmap = -1; + indoomvacation = -1; + inultdoom2 = -1; + // class-checking ones can be initialized here easily + if ( FindClass('RLMonster','Actor') ) hasdrlamonsters = true; + if ( FindClass('LOBZombieman','Actor') ) haslegionofbones = true; + if ( FindClass('CCards_Global','Thinker') ) ccloaded = true; + if ( LevelInfo.MapExists("Z1M1") && (LevelInfo.MapChecksum("Z1M1") ~== "2B7744234ED2C162AD08A3255E979F65") ) + iskdizd = true; + // read bludtype files if they can be found + for ( int lmp = Wads.FindLump("BLUDTYPE"); lmp != -1; lmp = Wads.FindLump("BLUDTYPE",lmp+1) ) + { + String dat = Wads.ReadLump(lmp); + Array list; + // Windows pls + dat.Replace("\r",""); + list.Clear(); + dat.Split(list,"\n"); + foreach ( l:list ) + { + if ( (l.Length() == 0) || (l.Left(2) == "//") || (l.Left(1) == "") ) + continue; + bludtypes.Push(l); + } + } + // read damnum colors + damtypes.Clear(); + damcolors.Clear(); + for ( int lmp = Wads.FindLump("DAMTYPES"); lmp != -1; lmp = Wads.FindLump("DAMTYPES",lmp+1) ) + { + String dat = Wads.ReadLump(lmp); + Array list; + // Windows pls + dat.Replace("\r",""); + list.Clear(); + dat.Split(list,"\n"); + foreach ( l:list ) + { + if ( (l.Length() == 0) || (l.Left(1) == "#") || (l.Left(1) == "") ) + continue; + int spc = l.IndexOf(" "); + damtypes.Push(l.Left(spc)); + damcolors.Push(l.Mid(spc+1)); + } + } + // cache various services into the handler on register + // this dramatically reduces overhead by not having to use an iterator every time they're needed + // especially noticeable for fun tags, as they're looked up for every monster on map load + let si = ServiceIterator.Find('FunTagService'); + Service sv; + while ( sv = si.Next() ) funtagsv.Push(sv); + si = ServiceIterator.Find('MergeMonsterService'); + while ( sv = si.Next() ) mergemonstersv.Push(sv); + // start profiling + if ( swwm_profstart <= 0 ) return; + bprofiletics = profiletics = swwm_profstart; + profiling = true; + for ( int i=0; i<8; i++ ) + { + prof_ms[i] = 0; + prof_avg[i] = 0; + prof_calls[i] = 0; + } + Console.Printf("Gathering data for %d tic%s...",bprofiletics,(bprofiletics>1)?"s":""); + } + + override void WorldTick() + { + if ( profiling ) ProfileTick(); + LangRefresh(); + QueueMaintenance(); + if ( !mnotify && (level.maptime >= 5) ) + { + mnotify = true; + let ti = ThinkerIterator.Create('SWWMStats',Thinker.STAT_STATIC); + SWWMStats s; + while ( s = SWWMStats(ti.Next()) ) + { + if ( !SWWMUtility.IsKnownMap() ) break; + if ( s.myplayer != players[consoleplayer] ) continue; + int clust = level.cluster; + if ( SWWMUtility.IsEviternityTwo() ) + { + // clusters have to be remapped here + if ( clust == 5 ) clust = 1; + else if ( (clust == 6) || (clust == 13) ) clust = 2; + else if ( (clust == 7) || (clust == 14) ) clust = 3; + else if ( (clust == 8) || (clust == 15) ) clust = 4; + else if ( (clust == 9) || (clust == 16) ) clust = 5; + else if ( (clust == 10) || (clust == 17) ) clust = 6; + else if ( (clust == 11) || (clust == 12) || (clust == 18) || (clust == 19) ) clust = 7; + } + else if ( SWWMUtility.IsEviternity() ) + { + // we have to do some heavy lifting here because episodes don't match clusters + if ( level.levelnum <= 5 ) clust = 1; + else if ( level.levelnum <= 10 ) clust = 2; + else if ( level.levelnum <= 15 ) clust = 3; + else if ( level.levelnum <= 20 ) clust = 4; + else if ( level.levelnum <= 25 ) clust = 5; + else if ( level.levelnum <= 30 ) clust = 6; + else if ( level.levelnum <= 31 ) clust = 7; + else if ( level.levelnum <= 32 ) clust = 8; + } + int csiz = s.clustervisit.Size(); + if ( (csiz > 0) && (s.clustervisit[csiz-1] != clust) ) + Console.Printf(StringTable.Localize("$SWWM_NEWMISSION")); + } + } + for ( int i=0; i 0) ) SWWMQuickCombatTracker.Update(self,players[i],t); + // keep healthbars updated for all friends of this player + for ( int j=0; j 0 ) return; + profiling = false; + static const String prof_name[] = + { + "WorldTick ", + "WorldThingSpawned ", + "WorldThingDestroyed", + "WorldThingDied ", + "WorldThingDamaged ", + "WorldThingRevived ", + "CheckReplacement ", + "CheckReplacee " + }; + Console.Printf("Done!"); + String str = String.Format( + "SWWMHandler profiling info for %d tic%s:\n" + " event name | calls | total ms | avg ms\n" + "---------------------|--------|-------------|-------------\n", + bprofiletics,(bprofiletics>1)?"s":""); + for ( int i=0; i<8; i++ ) + str.AppendFormat(" %s | %6d | %11.6f | %11.6f\n",prof_name[i],prof_calls[i],prof_ms[i],prof_avg[i]); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,str); + } + + override void PostUiTick() + { + VanillaBossUITick(); + // corruption cards dialogue + if ( ccloaded && !gdat.ccstartonce && !cardmessaged && (gamestate == GS_LEVEL) ) + { + let m = Menu.GetCurrentMenu(); + if ( m && (m.GetClassName() == 'CorruptionCardsSelector') ) incardmenu = true; + else if ( incardmenu ) + { + if ( !swwm_ccmessage ) SWWMDialogues.StartSeq("CC"); + CVar.GetCVar('swwm_ccmessage').SetBool(true); + cardmessaged = true; + SendNetworkEvent("swwmccstart"); + } + } + } + + override void WorldLinePreActivated( WorldEvent e ) + { + // oneliner on locked doors + if ( !e.Thing ) return; + int locknum = SWWMUtility.GetLineLock(e.ActivatedLine); + if ( (locknum < 1) || (locknum > 255) ) return; + if ( e.Thing.CheckLocalView() && !e.Thing.CheckKeys(locknum,false,true) ) + { + if ( !lastlock || (gametic > lastlock+20) ) + { + if ( Key.IsLockDefined(locknum) ) + lastlock = AddOneliner("locked",2); + else lastlock = AddOneliner("jammed",2); + } + } + } + + override void WorldLineActivated( WorldEvent e ) + { + if ( !(e.ActivationType&SPAC_Use) ) return; + if ( !e.Thing || !e.Thing.player ) return; + if ( (e.Thing.player == players[consoleplayer]) && swwm_beepboop ) + SWWMHandler.AddOneliner("buttonpush",2,0); + let w = SWWMWeapon(e.Thing.player.ReadyWeapon); + if ( (!w || !w.wallponch) && (!(e.Thing is 'Demolitionist') || !Demolitionist(e.Thing).hitactivate) ) return; + let s = SWWMStats.Find(e.Thing.player); + if ( s ) s.wponch++; + SWWMUtility.AchievementProgressInc("slemg",1,e.Thing.player); + } + + // stuff for hud + override void RenderUnderlay( RenderEvent e ) + { + // armor/health flashes + FlashRender(e); + if ( slotstrictwarn && (gametic < slotstrictwarn) ) + { + String str = StringTable.Localize("$SWWM_SETSLOTSTRICT"); + if ( sswstr != str ) + { + sswstr = str; + if ( sswl ) sswl.Destroy(); + } + double t = (slotstrictwarn-(gametic+e.FracTic))/20.; + double alph = clamp(t,0.,1.); + if ( !sswl ) sswl = newsmallfont.BreakLines(sswstr,300); + double yy = (200-sswl.Count()*newsmallfont.GetHeight())/2; + for ( int i=0; i)(AllActorClasses[i]); + let w = (Class)(cls); if ( !w || (w == 'SWWMWeapon') ) continue; let def = GetDefaultByType(w); if ( def.bCHEATNOTWEAPON ) continue; @@ -100,9 +90,9 @@ extend Class SWWMHandler S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); S_StartSound("misc/w_pkup",CHAN_VOICE,CHANF_UI); } - if ( players[e.Args[0]].mo.FindInventory("Ynykron") ) - players[e.Args[0]].mo.GiveInventory("YnykronAmmo",1); - else players[e.Args[0]].mo.GiveInventory("Ynykron",1); + if ( players[e.Args[0]].mo.FindInventory('Ynykron') ) + players[e.Args[0]].mo.GiveInventory('YnykronAmmo',1); + else players[e.Args[0]].mo.GiveInventory('Ynykron',1); } else if ( e.Name ~== "swwmgravcheat" ) { @@ -112,9 +102,9 @@ extend Class SWWMHandler S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); S_StartSound("misc/p_pkup",CHAN_VOICE,CHANF_UI); } - let g = GravityPower(players[e.Args[0]].mo.FindInventory("GravityPower")); + let g = GravityPower(players[e.Args[0]].mo.FindInventory('GravityPower')); if ( g ) g.EffectTics += g.default.EffectTics; - else players[e.Args[0]].mo.GiveInventory("GravityPower",1); + else players[e.Args[0]].mo.GiveInventory('GravityPower',1); } else if ( e.Name ~== "swwminvischeat" ) { @@ -124,9 +114,9 @@ extend Class SWWMHandler S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); S_StartSound("misc/p_pkup",CHAN_VOICE,CHANF_UI); } - let g = GhostPower(players[e.Args[0]].mo.FindInventory("GhostPower")); + let g = GhostPower(players[e.Args[0]].mo.FindInventory('GhostPower')); if ( g ) g.EffectTics += g.default.EffectTics; - else players[e.Args[0]].mo.GiveInventory("GhostPower",1); + else players[e.Args[0]].mo.GiveInventory('GhostPower',1); } else if ( e.Name ~== "swwmbarriercheat" ) { @@ -136,9 +126,9 @@ extend Class SWWMHandler S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); S_StartSound("misc/p_pkup",CHAN_VOICE,CHANF_UI); } - let b = BarrierPower(players[e.Args[0]].mo.FindInventory("BarrierPower")); + let b = BarrierPower(players[e.Args[0]].mo.FindInventory('BarrierPower')); if ( b ) b.EffectTics += b.default.EffectTics; - else players[e.Args[0]].mo.GiveInventory("BarrierPower",1); + else players[e.Args[0]].mo.GiveInventory('BarrierPower',1); } else if ( e.Name ~== "swwmammocheat" ) { @@ -148,7 +138,7 @@ extend Class SWWMHandler S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); S_StartSound("misc/ammo_pkup",CHAN_VOICE,CHANF_UI); } - players[e.Args[0]].mo.GiveInventory("TradedHammerspaceEmbiggener",8,true); + players[e.Args[0]].mo.GiveInventory('TradedHammerspaceEmbiggener',8,true); for ( Inventory i=players[e.Args[0]].mo.inv; i; i=i.inv ) { if ( !(i is 'Ammo') ) continue; @@ -180,15 +170,15 @@ extend Class SWWMHandler S_StartSound("fabricator/use",CHAN_VOICE,CHANF_UI); } players[e.Args[0]].health = players[e.Args[0]].mo.health = 1000; - players[e.Args[0]].mo.GiveInventory("TradedHammerspaceEmbiggener",8,true); + players[e.Args[0]].mo.GiveInventory('TradedHammerspaceEmbiggener',8,true); for ( Inventory i=players[e.Args[0]].mo.inv; i; i=i.inv ) { if ( !(i is 'Ammo') ) continue; i.Amount = i.MaxAmount; } - for ( int i=0; i)(AllActorClasses[i]); + let w = (Class)(cls); if ( !w || (w == 'SWWMWeapon') ) continue; let def = GetDefaultByType(w); if ( def.bCHEATNOTWEAPON ) continue; @@ -209,14 +199,14 @@ extend Class SWWMHandler S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); } let mo = players[e.Args[0]].mo; - Actor f = Actor(ThinkerIterator.Create("SWWMFlag").Next()); - if ( !f ) f = mo.Spawn("SWWMFlag"); - Vector2 spos = mo.Vec2Offset(cos(mo.angle)*40.,sin(mo.angle)*40.); + Actor f = Actor(ThinkerIterator.Create('SWWMFlag').Next()); + if ( !f ) f = mo.Spawn('SWWMFlag'); + Vector2 spos = mo.Vec2Angle(40.,mo.angle); Sector sat = level.PointInSector(spos); double sz = sat.NextLowestFloorAt(spos.x,spos.y,mo.player.viewz-32.); f.SetOrigin((spos.x,spos.y,sz),false); f.A_SetAngle(mo.angle); - f.Spawn("SWWMItemFog",f.pos); + f.Spawn('SWWMItemFog',f.pos); f.A_StartSound("bestsound",CHAN_ITEMEXTRA); } else if ( e.Name ~== "swwmballcheat" ) @@ -277,7 +267,7 @@ extend Class SWWMHandler S_StartSound("misc/omgfart",CHAN_VOICE,CHANF_UI); } else mo.A_StartSound("misc/omgfart",CHAN_VOICE,CHANF_OVERLAP,1.,.5); - let f = mo.Spawn("SWWMGasCloudSpawner",mo.Vec3Angle(mo.radius*.5,mo.angle-180,mo.Height*.4)); + let f = mo.Spawn('SWWMGasCloudSpawner',mo.Vec3Angle(mo.radius*.5,mo.angle-180,mo.Height*.4)); f.target = mo; f.angle = mo.angle+180; f.pitch = -mo.pitch; @@ -290,9 +280,9 @@ extend Class SWWMHandler S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); S_StartSound("misc/p_pkup",CHAN_VOICE,CHANF_UI); } - let i = InvinciballPower(players[e.Args[0]].mo.FindInventory("InvinciballPower")); + let i = InvinciballPower(players[e.Args[0]].mo.FindInventory('InvinciballPower')); if ( i ) i.EffectTics += i.default.EffectTics; - else players[e.Args[0]].mo.GiveInventory("InvinciballPower",1); + else players[e.Args[0]].mo.GiveInventory('InvinciballPower',1); } else if ( e.Name ~== "swwmstonecheat" ) { @@ -307,14 +297,15 @@ extend Class SWWMHandler if ( consoleplayer == e.Args[0] ) { Console.Printf("\cdHop!\c-"); - S_StartSound("misc/buyinv",CHAN_ITEM,CHANF_UI); + S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); } let mo = players[e.Args[0]].mo; - Actor f = Actor(ThinkerIterator.Create("FroggyChair").Next()); - if ( !f ) f = mo.Spawn("FroggyChair"); - f.SetOrigin(mo.Vec2OffsetZ(cos(mo.angle)*40.,sin(mo.angle)*40.,mo.player.viewz-32.),false); + Actor f = Actor(ThinkerIterator.Create('FroggyChair').Next()); + if ( !f ) f = mo.Spawn('FroggyChair'); + Vector2 ofs = Actor.AngleToVector(mo.angle,40.); + f.SetOrigin(mo.Vec2OffsetZ(ofs.x,ofs.y,mo.player.viewz-32.),false); f.A_SetAngle(f.AngleTo(mo)); - f.Spawn("SWWMItemFog",f.pos); + f.Spawn('SWWMItemFog',f.pos); f.A_StartSound("bestsound",CHAN_ITEMEXTRA); } else if ( e.Name ~== "swwmamnesiacheat" ) @@ -322,10 +313,10 @@ extend Class SWWMHandler if ( consoleplayer == e.Args[0] ) { Console.Printf("\cyAmnesiacs administered.\c-"); - S_StartSound("misc/buyinv",CHAN_ITEM,CHANF_UI); + S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); S_StartSound("bestsound",CHAN_VOICE,CHANF_UI); } - let ti = ThinkerIterator.Create("Actor"); + let ti = ThinkerIterator.Create('Actor'); Actor a; while ( a = Actor(ti.Next()) ) { @@ -340,58 +331,39 @@ extend Class SWWMHandler Console.Printf("\cyLet's mop up that big mess over there.\c-"); S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); } - let cc = SWWMCorpseCleaner(ThinkerIterator.Create("SWWMCorpseCleaner",Thinker.STAT_USER).Next()); + let cc = SWWMCorpseCleaner(ThinkerIterator.Create('SWWMCorpseCleaner',Thinker.STAT_USER).Next()); if ( !cc ) { - cc = new("SWWMCorpseCleaner"); + cc = new('SWWMCorpseCleaner'); cc.ChangeStatNum(Thinker.STAT_USER); cc.Init(players[e.Args[0]].mo); } else cc.Init(players[e.Args[0]].mo); } - else if ( e.Name ~== "swwmsewercountcheat" ) + else if ( e.Name ~== "swwmonfirecheat" ) { - if ( consoleplayer == e.Args[0] ) + let ti = ThinkerIterator.Create('Actor'); + Actor a; + bool burned = false; + while ( a = Actor(ti.Next()) ) { - let cv = CVar.FindCVar('swwm_sewercount'); - int cur = max(0,cv.GetInt()); - if ( cur == 0 ) Console.Printf("\cyIt begins.\c-"); - else switch ( Random[HudStuff](0,9) ) - { - case 0: - Console.Printf("\cyAnother one?\c-"); - break; - case 1: - Console.Printf("\cyOh hi Civvie.\c-"); - break; - case 2: - Console.Printf("\cyIt does stink.\c-"); - break; - case 3: - Console.Printf("\cyGod, imagine the smell...\c-"); - break; - case 4: - Console.Printf("\cyObligatory sewer level?\c-"); - break; - case 5: - Console.Printf("\cyYup! It's another sewer.\c-"); - break; - case 6: - Console.Printf("\cyOh boy here we go...\c-"); - break; - case 7: - Console.Printf("\cyIt smells, boy does it smell.\c-"); - break; - case 8: - Console.Printf("\cyPlease don't sue me, Civvie.\c-"); - break; - case 9: - Console.Printf("\cyOnce more, from the top!\c-"); - break; - } + if ( !a.bSHOOTABLE || (a.player == players[e.Args[0]]) + || a.IsFriend(players[e.Args[0]].mo) + || !a.CheckSight(players[e.Args[0]].mo,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + continue; + OnFire.Apply(a,players[e.Args[0]].mo,500); + burned = true; + } + if ( consoleplayer != e.Args[0] ) return; + if ( burned ) + { + Console.Printf("\cyBurn baby burn...\c-"); S_StartSound("menu/buyinv",CHAN_ITEM,CHANF_UI); - cv.SetInt(cur+1); - sewercnt = gametic; + } + else + { + Console.Printf("\cyNothing to burn here.\c-"); + S_StartSound("misc/nocheat",CHAN_ITEM,CHANF_UI); } } } @@ -402,7 +374,7 @@ extend Class SWWMHandler static const String cht[] = { "swwmlodsofemone", "swwmdeeplore", "swwmfroggygang", "swwmforgetaboutit", - "swwmmisterproper", "swwmstinky", + "swwmmisterproper", "swwmpantsonfire", // SWWM Platinum cheats "swwmimstuck", "swwmarmojumbo", "swwmdangimhealthy", "swwmwarriorofzaemonath", "swwmpowerparp", "swwmcannotseemyhands", @@ -415,7 +387,7 @@ extend Class SWWMHandler static const String cmd[] = { "swwmmoneycheat", "swwmlorecheat", "swwmfroggycheat", "swwmamnesiacheat", - "swwmjanitorcheat", "swwmsewercountcheat", + "swwmjanitorcheat", "swwmonfirecheat", // SWWM Platinum cheats "swwmsafecheat", "swwmweaponcheat", "swwmhealcheat", "swwmynykroncheat", "swwmgravcheat", "swwminvischeat", @@ -439,14 +411,8 @@ extend Class SWWMHandler let s = SWWMStats.Find(players[consoleplayer]); if ( (i > 5) && !swwm_nomapmsg && (!s || !s.oldcheat) ) { - let m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_ZNVSNAME"),StringTable.Localize("$SWWM_ZNVNAME"),"Znv"); - m.seqname = "ZNVTXT"; - m.seqcnt = 5; - m.znvspecial = true; - m.delay = 80; - m.enddelay = 90; - m.pausedelay = 40; - StatusBar.AttachMessage(m,-1232); + if ( !swwm_oldcheats ) SWWMDialogues.StartSeq("CHEATS"); + CVar.GetCVar('swwm_oldcheats').SetBool(true); SendNetworkEvent("swwmsetoldcheat",consoleplayer); } if ( SWWMUtility.CheatsDisabled(consoleplayer) ) @@ -489,47 +455,30 @@ extend Class SWWMHandler return false; } - private ui int GetUIRandom() - { - return (rss = (rss<<1)*35447+(rss/87)); - } - - private ui double RandomShiver() - { - int sd = GetUIRandom(); - return ((abs(sd)%11)-5)*.1; - } - - private ui int RandomFall() - { - int sd = GetUIRandom(); - return ((abs(sd)%22)+10); - } - private ui void CheatOverlay( RenderEvent e ) { // cheat input if ( (kcode <= 4) && ((klinger < gametic) || (klingerstr == "")) ) return; - double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/266.)),1.); - Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs; + double scl = CleanXFac_1*3.; String chstr = (kcode>4)?kstr.Mid(4):klingerstr.Mid(4); double alph = clamp((klinger-(gametic+e.fractic))/20.,0.,1.); double shine = clamp((klinger-(gametic+e.fractic+40))/20.,0.,1.); int col = (kcode>4)?0:(kfail)?2:1; int tlen = chstr.CodePointCount(); - int width = (bigfont.StringWidth(chstr)+6*(tlen-1)); - int xx = int((ss.x-width)/2.); - int yy = int((ss.y-bigfont.GetHeight())/2.); - rss = (kcode>4)?gametic:klinger; + if ( !CheatFont ) CheatFont = Font.GetFont('TewiFontOutline'); + int width = (CheatFont.StringWidth(chstr)+3*(tlen-1)); + double xx = int(Screen.GetWidth()-width*scl)/2; + double yy = int(Screen.GetHeight()-CheatFont.GetHeight()*scl)/2; + SetUIRandom((kcode>4)?gametic:klinger); for ( int i=0, pos=0; i= 2 ) + { + int hp = Clamp(mo.Health,0,200); + double sat = (hp<150)?1.:(1.-(hp-150)/100.); + Vector3 rgb = SWWMUtility.HSVtoRGB((hp/300.,sat,1.)); + col = Color(int(rgb.x*255),int(rgb.y*255),int(rgb.z*255)); + } + else if ( chp == 1 ) + { + double hp = Clamp(mo.Health,0,100)/100.; + if ( hp <= 0 ) col = Color(255,0,0); + else if ( hp < .3 ) col = Color(255,int(hp*255/.3),0); + else if ( hp < .85 ) col = Color(int((.6-hp)*255/.3),255,0); + else col = Color(0,255,0); + } + else if ( (ctr.Results.HitType == TRACE_HitActor) && ctr.Results.HitActor.bSHOOTABLE ) + { + // show target health, rather than our own + double hp = ctr.Results.HitActor.Health/double(ctr.Results.HitActor.GetSpawnHealth()); + if ( hp <= 0 ) col = Color(255,0,0); + else if ( hp < .3 ) col = Color(255,int(hp*255/.3),0); + else if ( hp < .85 ) col = Color(int((.6-hp)*255/.3),255,0); + else col = Color(0,255,0); + } + else col = crosshaircolor; + tpos[i] = e.ViewPos+ofs+x*ctr.Results.Distance; + tcol[i] = col; + } + // copy over used slots to unused slots, so transition between weapons is smoother + int j = 0; + for ( int i=numcrosshairs; i 0. ) sz = Screen.GetHeight()*cs/200.; + bool bGrowMe = crosshairgrow; + if ( bGrowMe ) sz *= StatusBar.CrosshairSize*StatusBar.CrosshairSize; + sz = max(1.,round(sz)); // ensure integer scaling of crosshair texture + Vector2 oddfix = (0,0); // offset for odd-sized textures when scaling by an even number + if ( int(ts.x)%2 ) oddfix.x = -floor(sz/2.)+1.; + if ( int(ts.y)%2 ) oddfix.y = -floor(sz/2.)+1.; + SWWMUtility.PrepareProjData(tprojdata,e.ViewPos,e.ViewAngle,e.ViewPitch,e.ViewRoll,players[consoleplayer].fov); + Screen.SetClipRect(tprojdata.viewx,tprojdata.viewy,tprojdata.vieww,tprojdata.viewh); + Vector2 actpos[MAX_CROSSHAIRS]; + for ( int i=0; i d.score ) d.score = int.min; - else d.score -= e.Damage; - spawnme = false; - break; - } + if ( !playeringame[i] || !players[i].mo ) continue; + if ( players[i].mo.IsFriend(e.Thing) || (e.DamageSource && players[i].mo.IsFriend(e.DamageSource)) ) + SWWMQuickCombatTracker.Update(self,players[i],e.Thing,e.Damage); } - if ( spawnme ) SWWMScoreObj.Spawn(-e.Damage,e.Thing.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+e.Thing.Height/2),ST_Damage,e.Thing); - // update combat tracker for it - // note: don't update if it's a hostile player unless hurt by you or a friend - if ( !(e.Thing is 'BossBrain') && (!e.Thing.player || (!e.Thing.IsFriend(players[consoleplayer].mo) && e.DamageSource && e.DamageSource.IsFriend(players[consoleplayer].mo))) ) - { - for ( SWWMCombatTracker t=trackers; t; t=t.next ) - { - if ( t.mytarget != e.Thing ) continue; - t.updated = level.maptime+35; - break; - } - } - // fall dmg - SWWMWhoPushedMe.SetInstigator(e.Thing,e.DamageSource); // stats if ( e.Thing.player ) { @@ -102,46 +80,48 @@ extend Class SWWMHandler if ( e.Damage > s.toptaken ) s.toptaken = e.Damage; } } - if ( e.DamageSource && e.DamageSource.player ) + if ( !e.DamageSource || !e.DamageSource.player ) return; + // fall dmg tracking + if ( !e.Thing.player && (e.Thing.bFALLDAMAGE || level.monsterfallingdamage) ) + SWWMWhoPushedMe.SetInstigator(e.Thing,e.DamageSource); + dealtdamage[e.DamageSource.PlayerNumber()] = true; + let s = SWWMStats.Find(e.DamageSource.player); + if ( s ) // deathmatch telefrag-on-spawn may cause this to be null { - dealtdamage[e.DamageSource.PlayerNumber()] = true; - let s = SWWMStats.Find(e.DamageSource.player); - if ( s ) // deathmatch telefrag-on-spawn may cause this to be null - { - s.AddDamageDealt(e.Damage); - if ( e.Damage > s.topdealt ) s.topdealt = e.Damage; - } - SWWMFlyTracker.Track(e.Thing,e.DamageSource); - if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") ) - { - let tk = e.Thing.FindInventory("DeepImpactOnlyToken"); - if ( !tk ) - { - tk = Inventory(Actor.Spawn("DeepImpactOnlyToken")); - tk.AttachToOwner(e.Thing); - tk.special1 = 0; - } - Inventory pb; - if ( (tk.special1 != -1) && ((e.DamageType == 'Push') || (e.Inflictor && (pb = e.Inflictor.FindInventory("ParriedBuff")) && pb.bAMBUSH)) ) - tk.special1 = 1; - else tk.special1 = -1; - } - // barrel destruction - if ( (e.Thing is 'ExplosiveBarrel') && (e.Thing.Health <= 0) ) - SWWMUtility.AchievementProgressInc("barrel",1,e.DamageSource.player); + s.AddDamageDealt(e.Damage); + if ( e.Damage > s.topdealt ) s.topdealt = e.Damage; } + SWWMFlyTracker.Track(e.Thing,e.DamageSource); + if ( e.Thing.bBOSS || e.Thing.FindInventory('BossMarker') ) + { + let tk = e.Thing.FindInventory('DeepImpactOnlyToken'); + if ( !tk ) + { + tk = Inventory(Actor.Spawn('DeepImpactOnlyToken')); + tk.AttachToOwner(e.Thing); + tk.special1 = 0; + } + Inventory pb; + if ( (tk.special1 != -1) && ((e.DamageType == 'Push') || (e.Inflictor && (pb = e.Inflictor.FindInventory('ParriedBuff')) && pb.bAMBUSH)) ) + tk.special1 = 1; + else tk.special1 = -1; + } + // barrel destruction + if ( (e.Thing is 'ExplosiveBarrel') && (e.Thing.Health <= 0) ) + SWWMUtility.AchievementProgressInc("barrel",1,e.DamageSource.player); } // combat hit chatter private void DoCombatHit( WorldEvent e ) { + if ( (e.DamageSource is 'SWWMVoodooDoll') || (e.Thing is 'SWWMVoodooDoll') ) return; if ( (e.DamageSource.bISMONSTER || e.DamageSource.player || (e.DamageSource is 'ScriptedMarine')) && (e.Thing == players[consoleplayer].mo) && (e.Thing.Health > 0) ) { - if ( !lastcombat || (gametic > lastcombat+40) ) + if ( !lastcombat || (gametic > lastcombat+20) ) { if ( e.Thing.IsFriend(e.DamageSource) ) lastcombat = AddOneliner("friendhit",1,10); - else if ( (!lastcombat || (gametic > lastcombat+180)) && !Random[DemoLines](0,(e.DamageSource.bBOSS||e.DamageSource.FindInventory("BossMarker"))?1:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls + else if ( (!lastcombat || (gametic > lastcombat+90)) && !Random[DemoLines](0,(e.DamageSource.bBOSS||e.DamageSource.FindInventory('BossMarker'))?2:5) ) lastcombat = AddOneliner("gethit",1,15); } highesttic = gametic; @@ -152,8 +132,11 @@ extend Class SWWMHandler // make sure it's not a moth, because otherwise they won't shut up about accidentally hurting them (it happens a lot) if ( e.Thing.IsFriend(e.DamageSource) && !(e.Thing is 'LampMoth') ) { - if ( !lastcombat || (gametic > lastcombat+40) ) + if ( !lastcombat || (gametic > lastcombat+20) ) + { lastcombat = AddOneliner("hitfriend",1,10); + if ( Demolitionist(e.DamageSource) ) Demolitionist(e.DamageSource).facesad = true; + } highesttic = gametic; } } @@ -165,32 +148,54 @@ extend Class SWWMHandler // fall damage tracking hack let src = e.DamageSource; if ( (e.DamageType == 'Falling') && !e.DamageSource ) - src = SWWMWhoPushedMe.RecallInstigator(e.Thing); + { + let inst = SWWMWhoPushedMe.RecallInstigator(e.Thing); + if ( inst ) src = inst; + } if ( (!src || !src.player || (src == e.Thing)) ) return; + let inflictor = e.Inflictor; + if ( inflictor is 'SWWMPuff' ) inflictor = inflictor.master; let s = SWWMStats.Find(src.player); if ( s ) { s.kills++; - s.AddWeaponKill(e.Inflictor,e.Thing,e.DamageType); + s.AddWeaponKill(inflictor,e.Thing,e.DamageType); } - if ( src == players[consoleplayer].mo ) + if ( (src == players[consoleplayer].mo) && !(e.Thing is 'SWWMVoodooDoll') ) { highesttic = gametic; - if ( !lastcombat || (gametic > lastcombat+40) ) + if ( !lastcombat || (gametic > lastcombat+20) ) { if ( e.Thing.IsFriend(src) ) + { lastcombat = AddOneliner("friendkill",1,5); - else if ( (!lastcombat || (gametic > lastcombat+120)) && !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory("BossMarker"))?1:4) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls - lastcombat = AddOneliner("scorekill",1,15); + if ( Demolitionist(e.DamageSource) ) Demolitionist(e.DamageSource).facesad = true; + } + else if ( !lastcombat || (gametic > lastcombat+50) ) + { + int lc = 0; + Inventory buff = inflictor?inflictor.FindInventory('ParriedBuff'):null; + if ( !Random[DemoLines](0,2) && buff && (e.Thing is 'Cyberdemon') && (inflictor is 'Rocket') && (buff.tracer == e.Thing) ) lc = AddOneliner("cybully",1,15); + else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory('BossMarker'))?1:2) && (e.DamageType == 'CriticalConcussion') ) lc = AddOneliner("ballskill",1,15); + else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory('BossMarker'))?2:4) && (e.DamageType == 'Buttslam') ) lc = AddOneliner("asskill",1,15); + else if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory('BossMarker'))?3:5) && ((inflictor is 'HeavyMahSheenGun') || (inflictor is 'SheenTrail')) ) + lc = AddOneliner("sheenkill",1,15); + if ( !lc ) + { + if ( !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.FindInventory('BossMarker'))?2:4) ) + lastcombat = AddOneliner("scorekill",1,15); + } + else lastcombat = lc; + } } } int pnum = src.PlayerNumber(); // achievement stuff if ( e.Thing.IsHostile(src) && (e.Thing.bISMONSTER || e.Thing.player) ) { - if ( (e.Thing.bBOSS||e.Thing.FindInventory("BossMarker")) && ((e.DamageType == 'Dash') || (e.DamageType == 'Buttslam')) ) + if ( (e.Thing.bBOSS||e.Thing.FindInventory('BossMarker')) && ((e.DamageType == 'Dash') || (e.DamageType == 'Buttslam')) ) SWWMUtility.AchievementProgressInc("bossdash",1,src.player); - if ( (e.Inflictor is 'DeepImpact') && (e.DamageType == 'Push') ) + if ( (inflictor is 'DeepImpact') && (e.DamageType == 'Push') ) SWWMUtility.AchievementProgressInc("sneeze",1,src.player); else if ( e.DamageType == 'Buttslam' ) SWWMUtility.AchievementProgressInc("butts",1,src.player); @@ -200,17 +205,15 @@ extend Class SWWMHandler SWWMUtility.AchievementProgressInc("thicc",1,src.player); else if ( (e.DamageType == 'Love') && !(e.Thing is 'WolfensteinSS') && (e.Thing.Species != 'WolfensteinSS') ) SWWMUtility.AchievementProgressInc("love",1,src.player); - Inventory buff = e.Inflictor?e.Inflictor.FindInventory('ParriedBuff'):null; + Inventory buff = inflictor?inflictor.FindInventory('ParriedBuff'):null; if ( buff ) { SWWMUtility.AchievementProgressInc("reflect",1,src.player); - if ( (e.Thing is 'Cyberdemon') && (e.Inflictor is 'Rocket') && (buff.tracer == e.Thing) ) + if ( (e.Thing is 'Cyberdemon') && (inflictor is 'Rocket') && (buff.tracer == e.Thing) ) SWWMUtility.MarkAchievement("cybully",src.player); } - if ( (e.Inflictor is 'PusherWeapon') || (e.Inflictor is 'PusherProjectile') ) - SWWMUtility.AchievementProgressInc("tender",1,src.player); Inventory tk; - if ( (tk = e.Thing.FindInventory("DeepImpactOnlyToken")) && (tk.special1 == 1) ) + if ( (tk = e.Thing.FindInventory('DeepImpactOnlyToken')) && (tk.special1 == 1) ) SWWMUtility.MarkAchievement("shame",src.player); SWWMUtility.AchievementProgressInc("mega",1,src.player); if ( src.player.Health == 1 ) @@ -218,38 +221,6 @@ extend Class SWWMHandler onehpspree[pnum]++; SWWMUtility.AchievementProgress("onehp",onehpspree[pnum],src.player); } - // tasty treats - if ( swwm_demoslayer ) - { - if ( src.Health < 100 ) - { - int amt = clamp(e.Thing.SpawnHealth()/20,1,10); - if ( e.Thing.Health < (e.Thing.GetGibHealth()*2) ) amt *= 3; - else if ( e.Thing.Health < e.Thing.GetGibHealth() ) amt *= 2; - for ( int i=0; i 10 ) spreebonus = int(10*((spreecount[pnum]/10.)**.25)); score += 100+spreebonus; if ( (spreecount[pnum] > 0) && scr ) scr.AppendXString(StringTable.Localize("$SWWM_SPREEKILL"),spreecount[pnum]); } - if ( e.Thing.bBOSS || e.Thing.FindInventory("BossMarker") ) + if ( e.Thing.bBOSS || e.Thing.FindInventory('BossMarker') ) { score += 2000; if ( scr ) scr.AppendXString(StringTable.Localize("$SWWM_BOSSKILL")); @@ -333,8 +306,12 @@ extend Class SWWMHandler { allkills = true; SWWMCredits.Give(src.player,1000); - Console.Printf(StringTable.Localize("$SWWM_LASTMONSTER"),src.player.GetUserName(),1000); - SWWMScoreObj.Spawn(1000,src.Vec3Offset(0,0,src.Height/2)); + if ( src.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorFromHandler(self,1000,src); + Console.Printf(StringTable.Localize("$SWWM_LASTMONSTER"),1000); + } + else Console.Printf(StringTable.Localize("$SWWM_LASTMONSTERREM"),src.player.GetUserName(),1000); SWWMUtility.AchievementProgressInc("allkills",1,src.player); } } diff --git a/zscript/handler/swwm_handler_debugrender.zsc b/zscript/handler/swwm_handler_debugrender.zsc index dea8db9d5..dbb7ee0ae 100644 --- a/zscript/handler/swwm_handler_debugrender.zsc +++ b/zscript/handler/swwm_handler_debugrender.zsc @@ -6,20 +6,22 @@ extend Class SWWMHandler private ui void DrawWorldLine( RenderEvent e, Vector3 apos, Vector3 bpos, Color col ) { - Vector3 a = SWWMUtility.ProjectPoint(projdata,e.viewpos+level.Vec3Diff(e.viewpos,apos)), - b = SWWMUtility.ProjectPoint(projdata,e.viewpos+level.Vec3Diff(e.viewpos,bpos)); - if ( (a.z > 1.) && (b.z > 1.) ) return; - if ( (a.z == -double.infinity) || (b.z == -double.infinity) ) return; // how the fuck??? + Vector3 a = SWWMUtility.ProjectPoint(projdata,e.viewpos+level.Vec3Diff(e.viewpos,apos),false), + b = SWWMUtility.ProjectPoint(projdata,e.viewpos+level.Vec3Diff(e.viewpos,bpos),false); + // both points are behind the screen + if ( (a.z <= 0.) && (b.z < 0.) ) return; + // at least one point is invalid + if ( (a.z == 0.) || (b.z == 0.) ) return; double da, db, s; Vector3 p; - da = a dot (0.,0.,-1.)-1.; - db = b dot (0.,0.,-1.)-1.; + da = a dot (0.,0.,1.); + db = b dot (0.,0.,1.); if ( da-db != 0. ) { s = da/(da-db); p = (a.x+s*(b.x-a.x),a.y+s*(b.y-a.y),a.z+s*(b.z-a.z)); - if ( a.z > 1. ) a = p; - if ( b.z > 1. ) b = p; + if ( a.z < 0. ) a = p; + if ( b.z < 0. ) b = p; } Vector2 va = SWWMUtility.NDCToViewport(projdata,a); Vector2 vb = SWWMUtility.NDCToViewport(projdata,b); @@ -28,29 +30,30 @@ extend Class SWWMHandler private ui void DrawWorldCircle( RenderEvent e, Vector3 pos, double radius, Color col ) { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(e.viewpitch,e.viewangle,e.viewroll); + let [x, y, z] = SWWMUtility.GetAxes(e.viewangle,e.viewpitch,e.viewroll); Vector3 ndc[64]; for ( int i=0; i<64; i++ ) { - Vector3 wpos = e.viewpos+level.Vec3Diff(e.viewpos,level.Vec3Offset(pos,y*cos(i*5.625)*radius+z*sin(i*5.625)*radius)); - ndc[i] = SWWMUtility.ProjectPoint(projdata,wpos); + Vector3 wpos = e.viewpos+level.Vec3Diff(e.viewpos,level.Vec3Offset(pos,SWWMUtility.CircleOffset(y,z,i*5.625,radius))); + ndc[i] = SWWMUtility.ProjectPoint(projdata,wpos,false); } for ( int i=0; i<64; i++ ) { Vector3 a = ndc[i], b = ndc[(i+1)%64]; - if ( (a.z > 1.) && (b.z > 1.) ) continue; - if ( (a.z == -double.infinity) || (b.z == -double.infinity) ) continue; // how the fuck??? + // both points are behind the screen + if ( (a.z <= 0.) && (b.z < 0.) ) return; + // at least one point is invalid + if ( (a.z == 0.) || (b.z == 0.) ) return; double da, db, s; Vector3 p; - da = a dot (0.,0.,-1.)-1.; - db = b dot (0.,0.,-1.)-1.; + da = a dot (0.,0.,1.); + db = b dot (0.,0.,1.); if ( da-db != 0. ) { s = da/(da-db); p = (a.x+s*(b.x-a.x),a.y+s*(b.y-a.y),a.z+s*(b.z-a.z)); - if ( a.z > 1. ) a = p; - if ( b.z > 1. ) b = p; + if ( a.z < 0. ) a = p; + if ( b.z < 0. ) b = p; } Vector2 va = SWWMUtility.NDCToViewport(projdata,a); Vector2 vb = SWWMUtility.NDCToViewport(projdata,b); @@ -60,43 +63,42 @@ extend Class SWWMHandler private ui void DrawActor( RenderEvent e, Actor a ) { - Vector3 pos = a.prev*(1.-e.FracTic)+a.pos*e.FracTic; + Vector3 pos = SWWMUtility.LerpVector3(a.prev,a.pos,e.FracTic); if ( a is 'DynamicLight' ) DrawWorldCircle(e,pos,a.args[3]*2,Color(a.args[0],a.args[1],a.args[2])); if ( (a.radius > 0.) && (a.height > 0.) ) { Vector3 b1, b2; b1 = pos-(a.radius,a.radius,0); b2 = pos+(a.radius,a.radius,a.height); - DrawWorldLine(e,(b1.x,b1.y,b1.z),(b1.x,b2.y,b1.z),"White"); - DrawWorldLine(e,(b1.x,b2.y,b1.z),(b2.x,b2.y,b1.z),"White"); - DrawWorldLine(e,(b2.x,b2.y,b1.z),(b2.x,b1.y,b1.z),"White"); - DrawWorldLine(e,(b2.x,b1.y,b1.z),(b1.x,b1.y,b1.z),"White"); - DrawWorldLine(e,(b1.x,b1.y,b2.z),(b1.x,b2.y,b2.z),"White"); - DrawWorldLine(e,(b1.x,b2.y,b2.z),(b2.x,b2.y,b2.z),"White"); - DrawWorldLine(e,(b2.x,b2.y,b2.z),(b2.x,b1.y,b2.z),"White"); - DrawWorldLine(e,(b2.x,b1.y,b2.z),(b1.x,b1.y,b2.z),"White"); - DrawWorldLine(e,(b1.x,b1.y,b1.z),(b1.x,b1.y,b2.z),"White"); - DrawWorldLine(e,(b2.x,b1.y,b1.z),(b2.x,b1.y,b2.z),"White"); - DrawWorldLine(e,(b1.x,b2.y,b1.z),(b1.x,b2.y,b2.z),"White"); - DrawWorldLine(e,(b2.x,b2.y,b1.z),(b2.x,b2.y,b2.z),"White"); + DrawWorldLine(e,(b1.x,b1.y,b1.z),(b1.x,b2.y,b1.z),0xFFFFFFFF); + DrawWorldLine(e,(b1.x,b2.y,b1.z),(b2.x,b2.y,b1.z),0xFFFFFFFF); + DrawWorldLine(e,(b2.x,b2.y,b1.z),(b2.x,b1.y,b1.z),0xFFFFFFFF); + DrawWorldLine(e,(b2.x,b1.y,b1.z),(b1.x,b1.y,b1.z),0xFFFFFFFF); + DrawWorldLine(e,(b1.x,b1.y,b2.z),(b1.x,b2.y,b2.z),0xFFFFFFFF); + DrawWorldLine(e,(b1.x,b2.y,b2.z),(b2.x,b2.y,b2.z),0xFFFFFFFF); + DrawWorldLine(e,(b2.x,b2.y,b2.z),(b2.x,b1.y,b2.z),0xFFFFFFFF); + DrawWorldLine(e,(b2.x,b1.y,b2.z),(b1.x,b1.y,b2.z),0xFFFFFFFF); + DrawWorldLine(e,(b1.x,b1.y,b1.z),(b1.x,b1.y,b2.z),0xFFFFFFFF); + DrawWorldLine(e,(b2.x,b1.y,b1.z),(b2.x,b1.y,b2.z),0xFFFFFFFF); + DrawWorldLine(e,(b1.x,b2.y,b1.z),(b1.x,b2.y,b2.z),0xFFFFFFFF); + DrawWorldLine(e,(b2.x,b2.y,b1.z),(b2.x,b2.y,b2.z),0xFFFFFFFF); } - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(a.pitch,a.angle,a.roll); - DrawWorldLine(e,pos,pos+x*16,"Red"); - DrawWorldLine(e,pos,pos+y*16,"Green"); - DrawWorldLine(e,pos,pos+z*16,"Blue"); - if ( a.vel != (0,0,0) ) DrawWorldLine(e,pos,pos+a.vel*GameTicRate,"Yellow"); - if ( a.target ) DrawWorldLine(e,pos,a.target.prev*(1.-e.FracTic)+a.target.pos*e.FracTic,"Gold"); - if ( a.tracer ) DrawWorldLine(e,pos,a.tracer.prev*(1.-e.FracTic)+a.tracer.pos*e.FracTic,"Orange"); - if ( a.master ) DrawWorldLine(e,pos,a.master.prev*(1.-e.FracTic)+a.master.pos*e.FracTic,"Purple"); + let [x, y, z] = SWWMUtility.GetAxes(a.angle,a.pitch,a.roll); + DrawWorldLine(e,pos,pos+x*16,0xFFFF0000); + DrawWorldLine(e,pos,pos+y*16,0xFF00FF00); + DrawWorldLine(e,pos,pos+z*16,0xFF0000FF); + if ( a.vel != (0,0,0) ) DrawWorldLine(e,pos,pos+a.vel*GameTicRate,0xFFFFFF00); + if ( a.target ) DrawWorldLine(e,pos,SWWMUtility.LerpVector3(a.target.prev,a.target.pos,e.FracTic),0xFFFFA000); + if ( a.tracer ) DrawWorldLine(e,pos,SWWMUtility.LerpVector3(a.tracer.prev,a.tracer.pos,e.FracTic),0xFFFF8000); + if ( a.master ) DrawWorldLine(e,pos,SWWMUtility.LerpVector3(a.master.prev,a.master.pos,e.FracTic),0xFF8000FF); double hdiff = a.Height/2; if ( a.bFLOATBOB ) hdiff += a.GetBobOffset(); Vector3 ndc = SWWMUtility.ProjectPoint(projdata,e.viewpos+level.Vec3Diff(e.viewpos,pos+(0,0,hdiff))); - if ( ndc.z > 1. ) return; + if ( ndc.z <= 0. ) return; Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); String tag = a.player?a.player.GetUserName():a.GetTag(); if ( tag == a.GetClassName() ) SWWMUtility.BeautifyClassName(tag); - Screen.DrawText(NewSmallFont,Font.CR_RED,vpos.x-NewSmallFont.StringWidth(tag)/2,vpos.y-NewSmallFont.GetHeight()/2,tag); + Screen.DrawText(NewSmallFont,a.bDROPPED?Font.CR_DARKRED:Font.CR_RED,vpos.x-NewSmallFont.StringWidth(tag)/2,vpos.y-NewSmallFont.GetHeight()/2,tag); } private ui void DrawDebug( RenderEvent e ) @@ -104,16 +106,21 @@ extend Class SWWMHandler if ( !swwm_debugview ) return; // prepare projection data, we're going to need this SWWMUtility.PrepareProjData(projdata,e.ViewPos,e.ViewAngle,e.ViewPitch,e.ViewRoll,players[consoleplayer].fov); - let ti = ThinkerIterator.Create("Actor"); - Actor a; - while ( a = Actor(ti.Next()) ) + foreach ( s:level.Sectors ) { - if ( a == players[consoleplayer].Camera ) continue; - if ( a.bINVISIBLE && !(a is 'DynamicLight') ) continue; - if ( (a is 'Inventory') && Inventory(a).Owner ) continue; - if ( (a is 'SWWMShadow') || (a is 'GhostArtifactX') || (a is 'DemolitionistSelfLight') || (a is 'HeadpatTracker') ) continue; - if ( a.Distance3DSquared(e.Camera) > 1000000 ) continue; - DrawActor(e,a); + // don't check sectors that aren't within bounds, saves some time + if ( !BoxInSectorBounds(s,players[consoleplayer].Camera.pos.xy,1000,players[consoleplayer].Camera.CurSector.PortalGroup) ) + continue; + for ( Actor a=s.thinglist; a; a=a.snext ) + { + if ( (a == players[consoleplayer].Camera) && !(players[consoleplayer].cheats&CF_CHASECAM) ) continue; + if ( a.bINVISIBLE && !(a is 'DynamicLight') ) continue; + if ( (a is 'Inventory') && Inventory(a).Owner ) continue; + if ( (a is 'SWWMPickupFlash') && (a.CurState == a.FindState('Pickup')) ) continue; + if ( (a is 'SWWMShadow') || (a is 'SWWMItemOverlay') || (a is 'HeadpatTracker') || (a is 'SWWMTeleportLine') || (a is 'SWWMTeleportDest') ) continue; + if ( a.Distance3DSquared(e.Camera) > 1000000 ) continue; + DrawActor(e,a); + } } } } diff --git a/zscript/handler/swwm_handler_flash.zsc b/zscript/handler/swwm_handler_flash.zsc index ce8aec8ad..bf30f906b 100644 --- a/zscript/handler/swwm_handler_flash.zsc +++ b/zscript/handler/swwm_handler_flash.zsc @@ -2,20 +2,23 @@ extend Class SWWMHandler { - transient Array flashes; + // interface event has to read from these + transient Actor flash_camera; + transient Color flash_color; + transient int flash_duration; // heal/armor flashes need to be handled here so they don't stack transient int hflash[MAXPLAYERS], aflash[MAXPLAYERS]; static void HealthFlash( int p ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd || (p == -1) ) return; hnd.hflash[p] = gametic+5; } static void ArmorFlash( int p ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd || (p == -1) ) return; hnd.aflash[p] = gametic+5; } @@ -24,34 +27,14 @@ extend Class SWWMHandler { // don't flash when paused if ( menuactive && (menuactive != Menu.OnNoPause) ) return; - QueuedFlash qf = new("QueuedFlash"); - qf.duration = duration; - qf.c = c; - qf.tic = gametic; - qf.cam = camera; - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !hnd ) return; // not supposed to happen - hnd.flashes.push(qf); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd ) return; + hnd.flash_camera = camera; + hnd.flash_color = c; + hnd.flash_duration = duration; + EventHandler.SendInterfaceEvent(consoleplayer,"swwmdoflash"); } - private void FlashTick() - { - for ( int i=0; i= gametic ) continue; - flashes.Delete(i); - i--; - } - } - private ui void FlashUITick() - { - for ( int i=0; i 1) && (Owner.tics > max(1,Owner.CurState.tics/2)) ) - Owner.tics = max(1,Owner.CurState.tics/2); - } -} extend Class SWWMHandler { + double smult; + int dmult; + private void IWantDieSpawn( WorldEvent e ) { - if ( iwantdie == -1 ) iwantdie = (G_SkillName() == StringTable.Localize("$SWWM_SKLUNATIC")); - if ( iwantdie ) + if ( iwantdie == -1 ) { - if ( SWWMUtility.ValidProjectile(e.Thing) && !e.Thing.FindInventory("DontDuplicate") && (e.Thing.target && e.Thing.target.bISMONSTER && !e.Thing.target.player) ) + int acsre = G_SkillPropertyInt(SKILLP_ACSReturn); + iwantdie = (acsre >= 5); + smult = 2.-(acsre-5)*.5; // reduced in Kynikoss skill because it'd stack with FastMonsters + dmult = acsre-3; + } + if ( iwantdie <= 0 ) return; + if ( SWWMUtility.ValidProjectile(e.Thing) && !e.Thing.FindInventory('DontDuplicate') && (e.Thing.target && e.Thing.target.bISMONSTER && !e.Thing.target.player) ) + { + e.Thing.speed *= smult; + e.Thing.vel *= smult; + double ang = e.Thing.target.target?e.Thing.AngleTo(e.Thing.target.target):e.Thing.angle; + double pt = e.Thing.target.target?e.Thing.PitchTo(e.Thing.target.target,e.Thing.target.missileheight,e.Thing.target.target.Height/2.):e.Thing.pitch; + let [x, y, z] = SWWMUtility.GetAxes(ang,pt,e.Thing.roll); + int numpt = Random[ExtraMissiles](1,dmult); + for ( int i=0; i x.ceilingz ) x.SetZ(x.ceilingz-x.height); + if ( x.pos.z < x.floorz ) x.SetZ(x.floorz); + if ( !x.TestMobjLocation() || !x.TestMobjZ() || !level.IsPointInLevel(x.pos) ) { - int numpt = Random[ExtraMissiles](1,2); - for ( int i=0; i x.ceilingz ) x.SetZ(x.ceilingz-x.height); - if ( x.pos.z < x.floorz ) x.SetZ(x.floorz); - if ( !x.TestMobjLocation() || !x.TestMobjZ() || !level.IsPointInLevel(x.pos) ) - { - x.ClearCounters(); - x.Destroy(); - } - else - { - x.angle = e.Thing.angle; - x.bAMBUSH = e.Thing.bAMBUSH; - x.GiveInventory("DontDuplicate",1); - break; - } - } - } + x.ClearCounters(); + x.Destroy(); + } + else + { + x.angle = e.Thing.angle; + x.bAMBUSH = e.Thing.bAMBUSH; + x.GiveInventory('DontDuplicate',1); + break; } } } diff --git a/zscript/handler/swwm_handler_oneliners.zsc b/zscript/handler/swwm_handler_oneliners.zsc index 76e50f36c..f59bf22f5 100644 --- a/zscript/handler/swwm_handler_oneliners.zsc +++ b/zscript/handler/swwm_handler_oneliners.zsc @@ -10,18 +10,29 @@ extend Class SWWMHandler { transient String oneliner, onelinersnd, onelinertype; transient int onelinertic, onelinerspan, onelinerlevel; - transient Array lastlines; static int AddOneliner( String type, int level, int delay = 5 ) { // only Demolitionist can play voice lines if ( !(players[consoleplayer].mo is 'Demolitionist') ) return 0; - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd ) return 0; String voicetype = CVar.FindCVar('swwm_voicetype').GetString(); // suppress non-rage comments when ragekit is active, only screaming allowed - if ( players[consoleplayer].mo.FindInventory("RagekitPower") && (type != "ragekit") ) return 0; + if ( players[consoleplayer].mo.FindInventory('RagekitPower') && (type != "ragekit") ) return 0; + // suppress beep-boop lines if voice channel already in use + if ( ((type == "buttonpush") || (type == "mrtouch") || (type == "mrflick")) + && players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE) + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/buttonpush1") + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/buttonpush2") + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/buttonpush3") + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/mrtouch1") + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/mrtouch2") + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/mrtouch3") + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/mrtouch4") + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/mrflick1") + && !players[consoleplayer].mo.IsActorPlayingSound(CHAN_DEMOVOICE,"voice/default/mrflick2") ) return 0; // check first if it's a multiple option line type String testme = String.Format("SWWM_SUBS_%s_N%s",voicetype.MakeUpper(),type.MakeUpper()); String locme = StringTable.Localize(testme,false); @@ -46,30 +57,46 @@ extend Class SWWMHandler } int countem = locme.ToInt(); if ( countem == 0 ) return 0; // voicepack doesn't have this - // check last line so we don't repeat - int last = 0, ent; - for ( int i=0; i 0 ) - { - whichline = Random[DemoLines](1,countem-1); - if ( whichline >= last ) whichline++; - hnd.lastlines[ent].lineno = whichline; - } + if ( countem == 1 ) whichline = 1; // ez else { - whichline = Random[DemoLines](1,countem); - let lst = new("LastLine"); - lst.type = type; - lst.lineno = whichline; - hnd.lastlines.Push(lst); + bool addme = true; + int idx = -1; + for ( int i=0; i= countem ) + hnd.gdat.lastlines[idx].lines.Delete(0,hnd.gdat.lastlines[idx].lines.Size()-1); + // check last lines so we don't repeat + Array candidates; + for ( int i=1; i<=countem; i++ ) + { + if ( hnd.gdat.lastlines[idx].lines.Find(i) < hnd.gdat.lastlines[idx].lines.Size() ) + continue; + candidates.Push(i); + } + whichline = candidates[Random[DemoLines](0,candidates.Size()-1)]; + hnd.gdat.lastlines[idx].lines.Push(whichline); + } + else + { + // ez + whichline = Random[DemoLines](1,countem); + let lst = new('OnelinerHistory'); + lst.type = type; + lst.lines.Push(whichline); + hnd.gdat.lastlines.Push(lst); + } } hnd.oneliner = String.Format("$SWWM_SUBS_%s_%s%d",voicetype.MakeUpper(),type.MakeUpper(),whichline); hnd.onelinersnd = String.Format("voice/%s/%s%d",voicetype,type,whichline); @@ -87,7 +114,7 @@ extend Class SWWMHandler static void CancelOneliner( String type ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd ) return; if ( (hnd.onelinertype != type) || (hnd.onelinertic < gametic) ) return; hnd.onelinertic = 0; @@ -107,21 +134,12 @@ extend Class SWWMHandler if ( loudlv > 2 ) players[consoleplayer].mo.A_StartSound(onelinersnd,CHAN_DEMOVOICEAUX2,CHANF_DEFAULT,1.,ATTN_NONE); if ( loudlv > 3 ) players[consoleplayer].mo.A_StartSound(onelinersnd,CHAN_DEMOVOICEAUX3,CHANF_DEFAULT,1.,ATTN_NONE); } + SendInterfaceEvent(consoleplayer,"swwmmessageliner."..oneliner,onelinerlevel,onelinerspan); SendNetworkEvent("swwmremoteliner."..onelinersnd,consoleplayer,onelinerlevel); + // hack due to the fact this one can be cancelled early + if ( onelinertype == "falling" ) Demolitionist(players[consoleplayer].mo).facegrin = true; } onelinertic = 0; onelinerspan = 0; } - - private ui void OnelinerUITick() - { - if ( (gametic != onelinertic) || (oneliner == "") || (players[consoleplayer].health <= 0) ) - return; - if ( onelinerlevel > swwm_mutevoice ) - { - let l = SWWMOneLiner.Make(oneliner,onelinerspan); - StatusBar.AttachMessage(l,-3473); - } - SendNetworkEvent("swwmremotelinertxt."..oneliner,consoleplayer,onelinerlevel); - } } diff --git a/zscript/handler/swwm_handler_playerevents.zsc b/zscript/handler/swwm_handler_playerevents.zsc index f6c1b59d3..3232c740c 100644 --- a/zscript/handler/swwm_handler_playerevents.zsc +++ b/zscript/handler/swwm_handler_playerevents.zsc @@ -15,11 +15,11 @@ extend Class SWWMHandler if ( !(p.mo is 'Demolitionist') ) { // make sure it's defined here, so special purpose classes (player chunks, scripted overrides) are respected - for ( int i=0; i checklist; + // for the compact hud + transient int WeaponFlash[10]; + // weapon selector + ui SWWMWeaponSelect wsel; override void ConsoleProcess( ConsoleEvent e ) { // doing it with an event because this way we can control WHEN it should be openable if ( e.Name ~== "swwmdemomenu" ) { - if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || !(players[consoleplayer].mo is 'Demolitionist') ) + if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || !(players[consoleplayer].mo is 'Demolitionist') || paused ) return; if ( !(Menu.GetCurrentMenu() is 'DemolitionistMenu') ) Menu.SetMenu('DemolitionistMenu'); @@ -18,26 +20,306 @@ extend Class SWWMHandler { if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || !(players[consoleplayer].mo is 'Demolitionist') ) return; - double val = swwm_mm_zoom; - if ( val > 1. ) val = max(1.,val-.5); - else val = max(.5,val-.25); - CVar.FindCVar('swwm_mm_zoom').SetFloat(val); + let bar = SWWMStatusBar(StatusBar); + if ( !bar ) return; + bar.mm_zoom = max(.5,bar.mm_zoom-.25); } else if ( e.Name ~== "swwmzoomout" ) { if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || !(players[consoleplayer].mo is 'Demolitionist') ) return; - double maxval = level.allmap?2.:1.; - double val = swwm_mm_zoom; - if ( val >= 1. ) val = min(maxval,val+.5); - else val = min(1.,val+.25); - CVar.FindCVar('swwm_mm_zoom').SetFloat(val); + let bar = SWWMStatusBar(StatusBar); + if ( !bar ) return; + bar.mm_zoom = min(1.,bar.mm_zoom+.25); + } + else if ( e.Name ~== "swwmstepclear" ) + { + Console.Printf("Cleared %d steps.",traced_stepnum); + traced_steppos = 0; + traced_stepnum = 0; + } + else if ( e.Name ~== "swwmstepcount" ) + { + double cmdist = 0.; + int startpos = traced_steppos-traced_stepnum; + if ( startpos < 0 ) startpos += MAX_TRACED_BUFSZ; + for ( int i=1; i swwm_mutevoice ) + { + let l = SWWMOneLiner.Make(theline,linespan); + StatusBar.AttachMessage(l,-3473); + if ( swwm_voicelog ) + { + String txt = StringTable.Localize(theline); + txt.Replace("\c-","\c*"); // fix color reset escapes + Console.PrintfEx(PRINT_CHAT|PRINT_NONOTIFY,"\cd"..(multiplayer?players[consoleplayer].GetUserName():"Demo").."\c*: "..txt.."\c*"); + } + } + SendNetworkEvent("swwmremotelinertxt."..theline,consoleplayer,linelevel); + } + else if ( e.Name.Left(11) ~== "swwmkeyget." ) + { + let bar = SWWMStatusBar(StatusBar); + if ( !bar || (bar.CPlayer != players[e.Args[0]]) ) return; + String kname = e.Name.Mid(11); + Class k = kname; + if ( k ) + { + let kg = new('KeyGet'); + kg.got = k; + kg.flashtime = gametic+25; + bar.keyflash.Push(kg); + } + } + else if ( e.Name.Left(15) ~== "swwmwpntooltip." ) + { + let bar = SWWMStatusBar(StatusBar); + if ( !bar ) return; + String wname = e.Name.Mid(15); + Class w = wname; + if ( w ) + { + let tt = new("SWWMWeaponTooltip").Init(w); + bool appended = false; + for ( SWWMWeaponTooltip t=bar.ctip; t; t=t.next ) + { + if ( t.next ) continue; + appended = true; + t.next = tt; + break; + } + if ( !appended ) + { + bar.ctip = tt; + bar.AttachMessage(tt,-2910); + } + } + } + else if ( e.Name.Left(15) ~== "swwmwpnswaptip." ) + { + let bar = SWWMStatusBar(StatusBar); + if ( !bar ) return; + // network IDs finally becoming useful here + uint ida = e.Name.Mid(15,8).ToInt(16); + uint idb = e.Name.Mid(23,8).ToInt(16); + let wa = Inventory(Object.GetNetworkEntity(ida)); + let wb = Inventory(Object.GetNetworkEntity(idb)); + if ( !wa || !wb ) return; + if ( e.Args[0] ) + { + // force to expire + if ( bar.cstip ) bar.cstip.Expire(wa,wb); + return; + } + if ( bar.cstip ) + { + bar.cstip.Poke(wa,wb); + return; + } + let tt = new('SWWMWeaponSwapTip').Init(wa,wb); + bar.cstip = tt; + bar.AttachMessage(tt,-2911); + } + else if ( e.Name.Left(12) ~== "swwmnametag." ) + { + let bar = SWWMStatusBar(StatusBar); + if ( !bar ) return; + bar.ntagstr = StringTable.Localize(e.Name.Mid(12)); + bar.ntagtic = level.totaltime; + bar.ntagcol = nametagcolor; + } + else if ( e.Name ~== "swwmdoflash" ) + { + GenericFlash gf = new('GenericFlash').Setup(flash_camera,flash_color,flash_duration); + StatusBar.AttachMessage(gf,0,BaseStatusBar.HUDMSGLayer_UnderHUD); + } + else if ( e.Name ~== "swwmsendplayerstep" ) + { + CheckPlayerStep(); + let demo = Demolitionist(players[consoleplayer].mo); + if ( !demo || !do_trace_steps ) return; + DoPlayerStep(demo.pos.xy); + } + else if ( e.Name ~== "swwmsendplayertele" ) + { + CheckPlayerStep(); + let demo = Demolitionist(players[consoleplayer].mo); + if ( !demo || !do_trace_steps ) return; + // send the position we had before teleporting + DoPlayerStep(demo.pretelepos.xy,true); + // to indicate that the player has teleported, we write a NaN into the buffer (yup) + oldplayerpos = (double.nan,double.nan); + traced_steps[traced_steppos] = (double.nan,double.nan); + traced_steppos = (traced_steppos+1)%MAX_TRACED_BUFSZ; + traced_stepnum = min(traced_stepnum+1,clamp(swwm_mm_maxsteps,2,MAX_TRACED_BUFSZ)); + // send the post-teleport position + DoPlayerStep(demo.pos.xy,true); + } + else if ( e.Name ~== "swwmhudgivescore" ) + { + let bar = SWWMStatusBar(StatusBar); + if ( !bar ) return; + if ( bar.cummscoreup+e.Args[0] < bar.cummscoreup ) bar.cummscoreup = 999999999; + else bar.cummscoreup = min(999999999,bar.cummscoreup+e.Args[0]); + bar.cummspanup = 20+35*int(Log10(clamp(bar.cummscoreup,1,999999999))); + bar.cummflashup = 15; + } + else if ( e.Name ~== "swwmhudtakescore" ) + { + let bar = SWWMStatusBar(StatusBar); + if ( !bar ) return; + if ( bar.cummscoredn+e.Args[0] < bar.cummscoredn ) bar.cummscoredn = 999999999; + else bar.cummscoredn = min(999999999,bar.cummscoredn+e.Args[0]); + bar.cummspandn = 20+35*int(Log10(clamp(bar.cummscoredn,1,999999999))); + bar.cummflashdn = 15; + } + else if ( e.Name ~== "swwmitemused" ) + { + // report back to kbase menu that the item got (or did not get) used + int uid = e.Args[0]; + bool rslt = e.Args[1]; + bool usedup = e.Args[2]; + let kbase = DemolitionistMenu(Menu.GetCurrentMenu()); + if ( kbase ) kbase.ItemUsed(uid,rslt,usedup); + } + else if ( e.Name ~== "swwmitemdropped" ) + { + // report back to kbase menu that the item got (or did not get) dropped + int uid = e.Args[0]; + bool rslt = e.Args[1]; + bool usedup = e.Args[2]; + let kbase = DemolitionistMenu(Menu.GetCurrentMenu()); + if ( kbase ) kbase.ItemDropped(uid,rslt,usedup); + } + } + + override void NetworkCommandProcess( NetworkCommand cmd ) + { + if ( cmd.Command == 'swwmuseitem' ) + { + // kbase menu wants us to use a specific item + int uid = cmd.ReadInt(); + int pid = cmd.ReadInt(); + uint iid = cmd.ReadInt(); + let p = players[pid]; + let i = Inventory(GetNetworkEntity(iid)); + if ( (i.Owner != p.mo) ) + ThrowAbortException("swwmuseitem: attempted to use item '%s' not owned by player '%s'",i.GetTag(),p.GetUserName()); + bool rslt = p.mo.UseInventory(i); + let w = Weapon(i); + if ( w ) + { + rslt = (p.PendingWeapon==Weapon(i)); + // dual wield gun support + if ( (i is 'SWWMWeapon') && (p.PendingWeapon==Weapon(i).SisterWeapon) ) + rslt = true; + } + else if ( (i is 'Key') || (i is 'SWWMCollectible') ) rslt = true; + SendInterfaceEvent(pid,"swwmitemused",uid,rslt,(!i||(i.Amount<=0))); + } + else if ( cmd.Command == 'swwmdropitem' ) + { + // kbase menu wants us to drop a specific item + int uid = cmd.ReadInt(); + int pid = cmd.ReadInt(); + uint iid = cmd.ReadInt(); + let p = players[pid]; + let i = Inventory(GetNetworkEntity(iid)); + if ( (i.Owner != p.mo) ) + ThrowAbortException("swwmdropitem: attempted to drop item '%s' not owned by player '%s'",i.GetTag(),p.GetUserName()); + int amt = i.default.Amount; + // if it's an ammo, check the largest unit givable + if ( i is 'MagAmmo' ) + { + foreach ( cls:AllActorClasses ) + { + let a = (Class)(cls); + if ( !a || (a.GetParentClass() != i.GetClass()) || (GetDefaultByType(a).Amount < amt) ) continue; + amt = GetDefaultByType(a).Amount; + } + } + else if ( i is 'Ammo' ) + { + foreach ( cls:AllActorClasses ) + { + let a = (Class)(cls); + if ( !a || (a.GetParentClass() != i.GetClass()) || (GetDefaultByType(a).Amount < amt) ) continue; + amt = GetDefaultByType(a).Amount; + } + } + if ( amt > i.Amount ) amt = i.Amount; + let drop = p.mo.DropInventory(i,amt); + // randomize movement direction so multiple drops don't get bunched together + if ( drop ) + { + Vector2 vel2d = drop.vel.xy; + drop.vel.xy = Actor.RotateVector(vel2d,FRandom[Junk](-15,15)); + drop.vel.xy *= FRandom[Junk](.9,1.1); + } + SendInterfaceEvent(pid,"swwmitemdropped",uid,!!drop,(!i||(i.Amount<=0))); } } override void NetworkProcess( ConsoleEvent e ) { - static const Class cbttypes[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; if ( e.Name ~== "swwmgesture" ) { if ( (e.player == -1) || !playeringame[e.player] || !players[e.player].mo ) return; @@ -66,6 +348,38 @@ extend Class SWWMHandler if ( mo ) mo.bWalking = e.Args[0]; return; } + else if ( e.Name ~== "swwmsetradius" ) + { + if ( multiplayer && (e.player != Net_Arbitrator) ) + { + if ( e.player == consoleplayer ) + Console.Printf("Only the net arbitrator can call this event."); + return; + } + let mo = players[e.player].mo; + if ( !mo ) return; + FLineTraceData d; + mo.LineTrace(mo.angle,10000.,mo.pitch,TRF_ABSPOSITION|TRF_THRUBLOCK|TRF_THRUHITSCAN|TRF_ALLACTORS,mo.player.viewz,mo.pos.x,mo.pos.y,d); + if ( d.HitType != TRACE_HitActor ) return; + Console.Printf("Change %s radius from %g to %g.",d.HitActor.GetTag(),d.HitActor.radius,e.Args[0]); + d.HitActor.A_SetSize(e.Args[0],-1); + } + else if ( e.Name ~== "swwmsetheight" ) + { + if ( multiplayer && (e.player != Net_Arbitrator) ) + { + if ( e.player == consoleplayer ) + Console.Printf("Only the net arbitrator can call this event."); + return; + } + let mo = players[e.player].mo; + if ( !mo ) return; + FLineTraceData d; + mo.LineTrace(mo.angle,10000.,mo.pitch,TRF_ABSPOSITION|TRF_THRUBLOCK|TRF_THRUHITSCAN|TRF_ALLACTORS,mo.player.viewz,mo.pos.x,mo.pos.y,d); + if ( d.HitType != TRACE_HitActor ) return; + Console.Printf("Change %s height from %g to %g.",d.HitActor.GetTag(),d.HitActor.height,e.Args[0]); + d.HitActor.A_SetSize(-1,e.Args[0]); + } else if ( e.Name ~== "swwmfixitemcaps" ) { // this command is only really needed when I update item max amounts mid-playthrough @@ -79,7 +393,7 @@ extend Class SWWMHandler { if ( !playeringame[i] || !players[i].mo ) continue; let mo = players[i].mo; - Inventory hams = mo.FindInventory("HammerspaceEmbiggener"); + Inventory hams = mo.FindInventory('HammerspaceEmbiggener'); if ( hams ) { if ( hams.MaxAmount != hams.default.MaxAmount ) @@ -142,61 +456,6 @@ extend Class SWWMHandler } } } - else if ( e.Name ~== "swwmupdatetrackers" ) - { - if ( multiplayer && (e.player != Net_Arbitrator) ) - { - if ( e.player == consoleplayer ) - Console.Printf("Only the net arbitrator can call this event."); - return; - } - if ( swwm_notrack ) - { - int n = trackers_cnt; - while ( trackers ) - { - let next = trackers.next; - trackers.Destroy(); // wow that's simple, all in one line - trackers = next; - } - trackers_cnt = 0; - Console.Printf("%d trackers removed.",n); - } - else - { - int n = trackers_cnt; - let ti = ThinkerIterator.Create("Actor"); - Actor a; - while ( a = Actor(ti.Next()) ) - { - if ( (!a.bSHOOTABLE && !a.bISMONSTER) || (a is 'LampMoth') || (a is 'CompanionLamp') ) continue; - let trk = SWWMCombatTracker.Spawn(a,true); - if ( !a.player ) trk.maxhealth = max(a.health,a.GetSpawnHealth()); - } - n = (trackers_cnt-n); - Console.Printf("%d trackers added.",n); - } - return; - } - else if ( e.Name ~== "swwmtrimsuckables" ) - { - if ( multiplayer && (e.player != Net_Arbitrator) ) - { - if ( e.player == consoleplayer ) - Console.Printf("Only the net arbitrator can call this event."); - return; - } - int n = 0; - for ( int i=0; i alldlg; - alldlg_pack.Split(alldlg,":"); - for ( int i=0; i 3 ) Console.Printf("\cg%s exceeds line limit (%d > 3)\c-",alldlg[i],l.Count()); - else - { - if ( !e.Args[0] ) - { - l.Destroy(); - continue; - } - Console.Printf("\cd%s is within line limit (%d <= 3)\c-",alldlg[i],l.Count()); - } - for ( int j=0; j %s",l.StringAt(j)); - l.Destroy(); - } - return; - } else if ( e.Name ~== "swwmprofilehandler" ) { if ( multiplayer && (e.player != Net_Arbitrator) ) @@ -336,37 +496,6 @@ extend Class SWWMHandler if ( SWWMCredits.Take(players[e.Args[0]],e.Args[1]) ) { let def = GetDefaultByType(item); - SWWMWeapon sw; - // drop the swapweapon if we own it first - if ( swwm_swapweapons && (item is 'SWWMWeapon') && (sw = SWWMWeapon(def).HasSwapWeapon(players[e.Args[0]].mo)) ) - { - // special case, otherwise candy gun won't drop itself - if ( sw is 'CandyGun' ) CandyGun(sw).swapdrop = true; - bool swapto = (sw == players[e.Args[0]].ReadyWeapon) || (sw.SisterWeapon && (sw.Sisterweapon == players[e.Args[0]].ReadyWeapon)); - int ngun = sw.Amount; - if ( ngun == 2 ) - { - // create a dual giver to drop - let dg = SWWMDualWeaponGiver(Actor.Spawn("SWWMDualWeaponGiver",players[e.Args[0]].mo.pos+(0,0,10))); - dg.angle = players[e.Args[0]].mo.angle; - dg.VelFromAngle(5.); - dg.vel.z += 1.; - dg.vel += players[e.Args[0]].mo.vel; - // transfer both guns - dg.giveme[0] = SWWMWeapon(sw.CreateTossable(1)); - dg.giveme[0].AttachToOwner(dg); - dg.giveme[1] = SWWMWeapon(sw.CreateTossable(1)); - dg.giveme[1].AttachToOwner(dg); - dg.SetPickupState(); - } - else players[e.Args[0]].mo.DropInventory(sw); // just drop it - // don't autoswitch just yet (hacky) - if ( swapto ) - { - players[e.Args[0]].ReadyWeapon = null; - players[e.Args[0]].PendingWeapon = WP_NOCHANGE; - } - } if ( (item is 'ArmorNuggetItem') || (item is 'HealthNuggetItem') ) { // these have to be given in a loop because fun reasons @@ -374,14 +503,14 @@ extend Class SWWMHandler players[e.Args[0]].mo.GiveInventory(item,1,true); } else players[e.Args[0]].mo.GiveInventory(item,e.Args[2],true); - // fucky workaround + // workaround for some items let inv = players[e.Args[0]].mo.FindInventory(item); if ( inv && (inv.Amount <= 0) && !inv.bKEEPDEPLETED ) inv.Destroy(); if ( item is 'Weapon' ) { // special case, select dual guns if we bought a second one - if ( (item is 'ExplodiumGun') && (players[e.Args[0]].mo.CountInv("ExplodiumGun") > 1) ) - players[e.Args[0]].mo.A_SelectWeapon("DualExplodiumGun"); + if ( (item is 'ExplodiumGun') && (players[e.Args[0]].mo.CountInv('ExplodiumGun') > 1) ) + players[e.Args[0]].mo.A_SelectWeapon('DualExplodiumGun'); else players[e.Args[0]].mo.A_SelectWeapon((Class)(item)); } } @@ -406,10 +535,10 @@ extend Class SWWMHandler if ( item is 'SWWMWeapon' ) { let c = Weapon(players[e.Args[0]].mo.FindInventory(item)); - if ( c.SisterWeapon && (players[e.Args[0]].ReadyWeapon == c.SisterWeapon) ) + if ( c && c.SisterWeapon && (players[e.Args[0]].ReadyWeapon == c.SisterWeapon) ) { players[e.Args[0]].ReadyWeapon = c; - players[e.Args[0]].SetPSprite(PSP_WEAPON,c.FindState("Ready")); + players[e.Args[0]].SetPSprite(PSP_WEAPON,c.FindState('Ready')); players[e.Args[0]].SetPSprite(PSP_WEAPON+1,null); // delete left weapon psprite } } @@ -439,73 +568,6 @@ extend Class SWWMHandler let idx = l.FindEntry(e.Name.Mid(17)); l.MarkRead(idx); } - else if ( e.Name.Left(12) ~== "swwmuseitem." ) - { - Class item = e.Name.Mid(12); - if ( !item ) return; - let i = players[e.Args[0]].mo.FindInventory(item); - if ( !i ) return; - bool rslt = players[e.Args[0]].mo.UseInventory(i); - if ( e.Args[0] == consoleplayer ) - { - let t = new("MenuTransaction"); - t.uid = e.Args[1]; - t.type = MenuTransaction.TT_ITEMUSE; - let w = (Class)(item); - if ( w ) - { - t.result = (players[e.Args[0]].PendingWeapon==Weapon(i)); - // dual wield gun support - if ( (i is 'SWWMWeapon') && (players[e.Args[0]].PendingWeapon==Weapon(i).SisterWeapon) ) - t.result = true; - } - else t.result = rslt; - t.used = item; - t.usedup = (!i||(i.Amount<=0)); - checklist.Push(t); - } - } - else if ( e.Name.Left(13) ~== "swwmdropitem." ) - { - Class item = e.Name.Mid(13); - if ( !item ) return; - let i = players[e.Args[0]].mo.FindInventory(item); - if ( !i ) return; - int amt = i.default.Amount; - // if it's an ammo, check the largest unit givable - if ( i is 'Ammo' ) - { - for ( int i=0; i)(AllActorClasses[i]); - if ( !a || (a.GetParentClass() != item) || (GetDefaultByType(a).Amount < amt) ) continue; - amt = GetDefaultByType(a).Amount; - } - } - if ( i is 'MagAmmo' ) - { - for ( int i=0; i)(AllActorClasses[i]); - if ( !a || (a.GetParentClass() != item) || (GetDefaultByType(a).Amount < amt) ) continue; - amt = GetDefaultByType(a).Amount; - } - } - if ( amt > i.Amount ) amt = i.Amount; - let drop = players[e.Args[0]].mo.DropInventory(i,amt); - // add some random velocity so multiple drops don't get bunched together - if ( drop ) drop.vel += (Actor.RotateVector((FRandom[Junk](-1.5,.5),FRandom[Junk](-2.5,2.5)),players[e.Args[0]].mo.angle),FRandom[Junk](2.,5.)); - if ( e.Args[0] == consoleplayer ) - { - let t = new("MenuTransaction"); - t.uid = e.Args[1]; - t.type = MenuTransaction.TT_ITEMDROP; - t.used = item; - t.result = drop; - t.usedup = (!i||(i.Amount<=0)); - checklist.Push(t); - } - } else if ( e.Name ~== "swwmkoraxline" ) { if ( consoleplayer != e.Args[1] ) return; @@ -528,11 +590,6 @@ extend Class SWWMHandler break; } } - else if ( e.Name.Left(17) ~== "swwmstoremessage." ) - { - if ( consoleplayer != e.Args[2] ) return; - SWWMFullHistory.PushMessage(e.Name.Mid(17),e.Args[0],e.Args[1]); - } else if ( e.Name.Left(16) ~== "swwmremoteliner." ) { if ( consoleplayer == e.Args[0] ) return; @@ -545,46 +602,11 @@ extend Class SWWMHandler if ( swwm_mutevoice >= e.Args[1] ) return; double dist = players[consoleplayer].Camera.Distance3D(players[e.Args[0]].mo); if ( dist < 2000 ) - Console.Printf("\cx%s\cx: %s\c-",players[e.Args[0]].GetUserName(),StringTable.Localize(e.Name.Mid(19))); - } - else if ( e.Name.Left(8) ~== "swwmcbt." ) - { - // from wikipedia, the free encyclopedia - if ( !playeringame[e.Args[0]] || !players[e.Args[0]].mo ) return; - let cbt = Wallbuster(players[e.Args[0]].mo.FindInventory("Wallbuster")); - if ( !cbt ) return; - cbt.reloadqueue.Clear(); - if ( e.Name.Mid(8) ~== "EMPTY" ) cbt.clearout = true; - else { - cbt.clearout = false; - Array qs; - qs.Clear(); - String rite = e.Name.Mid(8); - rite.Split(qs,",",TOK_SKIPEMPTY); - for ( int i=0; i 3) ) continue; - cbt.reloadqueue.Push(cbttypes[qi]); - } + String txt = StringTable.Localize(e.Name.Mid(19)); + txt.Replace("\c-","\c*"); // fix color reset escapes + Console.PrintfEx(PRINT_CHAT,"\cx%s\cx: %s\c-",players[e.Args[0]].GetUserName(),txt); } - cbt.waitreload = false; - } - else if ( e.Name ~== "swwmcleartransaction" ) - { - if ( e.Args[1] != consoleplayer ) return; - for ( int i=0; i 9) ) return; + WeaponFlash[e.Args[0]] = gametic+25; + } + else if ( e.Name ~== "swwmccstart" ) + gdat.ccstartonce = true; + else if ( e.Name.Left(14) ~== "swwmselweapon." ) + { + Class wpn = e.Name.Mid(14); + if ( !wpn ) return; + let w = Weapon(players[e.player].mo.FindInventory(wpn)); + if ( !w ) return; + if ( !w.CheckAmmo(Weapon.EitherFire,false) ) + { + S_StartSound("menu/democlose",CHAN_AUTO,CHANF_UI); + return; + } + players[e.player].mo.UseInventory(w); + if ( e.player != consoleplayer ) return; + bool rslt = (players[e.player].PendingWeapon == w); + if ( (w is 'SWWMWeapon') && (players[e.player].PendingWeapon == w.SisterWeapon) ) + rslt = true; // switching to dual gun + S_StartSound(rslt?"menu/demosel":"menu/democlose",CHAN_AUTO,CHANF_UI); + } + else if ( e.Name ~== "swwmlustysuns" ) + { + if ( consoleplayer != e.Args[0] ) return; + AddOneliner("lustysuns",3,15); + } // cheats go here else CheatEvent(e); } override bool InputProcess( InputEvent e ) { - if ( (e.Type == InputEvent.TYPE_KeyDown) && (e.KeyChar >= 0x61) && (e.KeyChar <= 0x7A) ) + if ( e.Type != InputEvent.TYPE_KeyDown ) return false; + // block invprev/next inputs when paused + String cmd = Bindings.GetBinding(e.KeyScan); + if ( paused ) { - // F - if ( e.KeyChar == 0x66 ) + if ( (cmd ~== "invprev") || (cmd ~== "invnext") ) return true; + // skip the rest of this function + return false; + } + // weapon selector is active + int WeapSel = 0; + if ( cmd ~== "weapnext" ) WeapSel = 1; + else if ( cmd ~== "weapprev" ) WeapSel = -1; + if ( wsel && (wsel.stage < 2) ) + { + // pov/dpad takes priority + if ( (e.KeyScan == InputEvent.Key_JoyPOV1_Up) || (e.KeyScan == InputEvent.Key_Pad_DPad_Up) ) + WeapSel = -1; + else if ( (e.KeyScan == InputEvent.Key_JoyPOV1_Down) || (e.KeyScan == InputEvent.Key_Pad_DPad_Down) ) + WeapSel = 1; + if ( WeapSel == 1 ) { - let demo = Demolitionist(players[consoleplayer].mo); - let gone = PlayerGone(players[consoleplayer].mo); - if ( (demo && (demo.Health <= 0) && (demo.deadtimer > 40)) - || (gone && (gone.Health <= 0) && (gone.deadtimer > 40)) ) + wsel.WeapNext(); + return true; + } + if ( WeapSel == -1 ) + { + wsel.WeapPrev(); + return true; + } + // Joy1 should be the same thing as the A button (usually) + if ( (e.KeyScan == InputEvent.Key_Joy1) || (e.KeyScan == InputEvent.Key_Pad_A) || (cmd ~== "+attack") ) + { + wsel.WeapSel(); + return true; + } + // ditto for Joy2 + if ( (e.KeyScan == InputEvent.Key_Joy2) || (e.KeyScan == InputEvent.Key_Pad_B) || (cmd ~== "+altattack") ) + { + wsel.WeapCancel(); + return true; + } + } + else if ( WeapSel && swwm_useweaponbar && !paused && (players[consoleplayer].playerstate == PST_LIVE) && players[consoleplayer].mo && (gamestate == GS_LEVEL) ) + { + // special case: ignore if we used the mousewheel and the automap is active + if ( (automapactive && !viewactive) && ((e.KeyScan == InputEvent.Key_MWheelUp) || (e.KeyScan == InputEvent.Key_MWheelDown)) ) + return false; + // only if player owns any selectable weapons + if ( !wsel && SWWMWeaponSelect.PlayerHasWeapons(players[consoleplayer].mo) ) + { + wsel = new('SWWMWeaponSelect').Init(players[consoleplayer].mo); + StatusBar.AttachMessage(wsel,-2920,layer:StatusBar.HUDMSGLayer_UnderHUD); + if ( WeapSel == 1 ) wsel.WeapNext(); + else if ( WeapSel == -1 ) wsel.WeapPrev(); + } + return true; + } + // F + if ( e.KeyChar == 0x66 ) + { + let demo = Demolitionist(players[consoleplayer].mo); + let gone = PlayerGone(players[consoleplayer].mo); + if ( (demo && (demo.Health <= 0) && (demo.deadtimer > 40)) + || (gone && (gone.Health <= 0) && (gone.deadtimer > 40)) ) + { + // pay respects + int numf = Random[FInTheChat](1,6); + for ( int i=0; i= 0x61) && (e.KeyChar <= 0x7A) && !paused ) + { + if ( CheatInput(e) ) + return true; } return false; } diff --git a/zscript/handler/swwm_handler_queues.zsc b/zscript/handler/swwm_handler_queues.zsc index bd0837ad3..3bdf51b41 100644 --- a/zscript/handler/swwm_handler_queues.zsc +++ b/zscript/handler/swwm_handler_queues.zsc @@ -12,10 +12,12 @@ extend Class SWWMHandler int blods_cnt, oldmaxblood, blods_realcnt; mkFlyingGib meats, meats_end; int meats_cnt, oldmaxgibs, meats_realcnt; + mkBloodPool pools, pools_end; + int pools_cnt, oldmaxpools, pools_realcnt; static void QueueCasing( SWWMCasing c ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd ) return; hnd.casings_cnt++; if ( !hnd.casings ) @@ -35,7 +37,7 @@ extend Class SWWMHandler } static void DeQueueCasing( SWWMCasing c ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd || !hnd.casings ) return; if ( (hnd.casings != c) && !c.prevcasing && !c.nextcasing ) return; hnd.casings_cnt--; @@ -49,7 +51,7 @@ extend Class SWWMHandler } static void QueueChip( SWWMChip c ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd ) return; hnd.chips_cnt++; if ( !hnd.chips ) @@ -69,7 +71,7 @@ extend Class SWWMHandler } static void DeQueueChip( SWWMChip c ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd || !hnd.chips ) return; if ( (hnd.chips != c) && !c.prevchip && !c.nextchip ) return; hnd.chips_cnt--; @@ -83,7 +85,7 @@ extend Class SWWMHandler } static void QueueBlod( mkBloodDrop b ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd ) return; hnd.blods_cnt++; if ( !hnd.blods ) @@ -103,7 +105,7 @@ extend Class SWWMHandler } static void DeQueueBlod( mkBloodDrop b ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd || !hnd.blods ) return; if ( (hnd.blods != b) && !b.prevblod && !b.nextblod ) return; hnd.blods_cnt--; @@ -117,7 +119,7 @@ extend Class SWWMHandler } static void QueueMeat( mkFlyingGib m ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd ) return; hnd.meats_cnt++; if ( !hnd.meats ) @@ -137,7 +139,7 @@ extend Class SWWMHandler } static void DeQueueMeat( mkFlyingGib m ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd || !hnd.meats ) return; if ( (hnd.meats != m) && !m.prevmeat && !m.nextmeat ) return; hnd.meats_cnt--; @@ -149,6 +151,40 @@ extend Class SWWMHandler m.prevmeat = null; m.nextmeat = null; } + static void QueuePool( mkBloodPool p ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd ) return; + hnd.pools_cnt++; + if ( !hnd.pools ) + { + // this is the initial one + hnd.pools = p; + hnd.pools_end = p; + } + else + { + hnd.pools_end.nextpool = p; + p.prevpool = hnd.pools_end; + hnd.pools_end = p; + } + while ( hnd.pools && (swwm_maxpools >= 0) && (hnd.pools_cnt > swwm_maxpools) ) + DeQueuePool(hnd.pools); + } + static void DeQueuePool( mkBloodPool p ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd || !hnd.pools ) return; + if ( (hnd.pools != p) && !p.prevpool && !p.nextpool ) return; + hnd.pools_cnt--; + if ( !p.prevpool ) hnd.pools = p.nextpool; + else p.prevpool.nextpool = p.nextpool; + if ( p == hnd.pools_end ) hnd.pools_end = p.prevpool; + if ( p.nextpool ) p.nextpool.prevpool = p.prevpool; + p.killme = true; + p.prevpool = null; + p.nextpool = null; + } private void CleanQueues() { @@ -156,6 +192,7 @@ extend Class SWWMHandler while ( chips ) DeQueueChip(chips); while ( blods ) DeQueueBlod(blods); while ( meats ) DeQueueMeat(meats); + while ( pools ) DeQueuePool(pools); } private void RecheckQueues() @@ -168,6 +205,8 @@ extend Class SWWMHandler DeQueueBlod(blods); while ( meats && (meats_cnt > swwm_maxgibs) ) DeQueueMeat(meats); + while ( pools && (pools_cnt > swwm_maxpools) ) + DeQueuePool(pools); } private void QueueMaintenance() @@ -192,12 +231,15 @@ extend Class SWWMHandler while ( meats && (swwm_maxgibs >= 0) && (meats_cnt > swwm_maxgibs) ) DeQueueMeat(meats); } + if ( swwm_maxpools != oldmaxpools ) + { + while ( pools && (swwm_maxpools >= 0) && (pools_cnt > swwm_maxpools) ) + DeQueuePool(pools); + } oldmaxcasings = swwm_maxcasings; oldmaxdebris = swwm_maxdebris; oldmaxblood = swwm_maxblood; oldmaxgibs = swwm_maxgibs; - if ( swwm_blood ) return; - while ( blods ) DeQueueBlod(blods); - while ( meats ) DeQueueMeat(meats); + oldmaxpools = swwm_maxpools; } } diff --git a/zscript/handler/swwm_handler_replacements.zsc b/zscript/handler/swwm_handler_replacements.zsc index a35e88814..ebdc80ef8 100644 --- a/zscript/handler/swwm_handler_replacements.zsc +++ b/zscript/handler/swwm_handler_replacements.zsc @@ -3,256 +3,255 @@ extend Class SWWMHandler { bool nugflip; // h/a nugget flip-flop spawn counter - bool equinoxhack; // hackaround for UseInventory private Class GetDRLAReplacee( Class a ) { - static const String refpool[] = + static const Name refpool[] = { - "Zombieman", - "Shotgunguy", - "Chaingunguy", - "DoomImp", - "Demon", - "Spectre", - "LostSoul", - "Cacodemon", - "HellKnight", - "BaronOfHell", - "Arachnotron", - "PainElemental", - "Revenant", - "Fatso", - "Archvile", - "Cyberdemon", - "SpiderMastermind", - "BossEye", - "BossBrain" + 'Zombieman', + 'Shotgunguy', + 'Chaingunguy', + 'DoomImp', + 'Demon', + 'Spectre', + 'LostSoul', + 'Cacodemon', + 'HellKnight', + 'BaronOfHell', + 'Arachnotron', + 'PainElemental', + 'Revenant', + 'Fatso', + 'Archvile', + 'Cyberdemon', + 'SpiderMastermind', + 'BossEye', + 'BossBrain' }; - static const String babypool[] = + static const Name babypool[] = { - "RLFormerHumanPistol", - "RLFormerSergeantShotgun", - "RLFormerCommandoChaingun", - "RLImp", - "RLDemon", - "RLSpectre", - "RLLostSoul", - "RLCacodemon", - "RLHellKnight", - "RLBaronOfHell", - "RLArachnotron", - "RLPainElemental", - "RLRevenant", - "RLMancubus", - "RLArchvile", - "RLCyberdemon", - "RLSpiderMastermindVariantSpawner", - "RLEasyBossEye", - "RLBossBrain" + 'RLFormerHumanPistol', + 'RLFormerSergeantShotgun', + 'RLFormerCommandoChaingun', + 'RLImp', + 'RLDemon', + 'RLSpectre', + 'RLLostSoul', + 'RLCacodemon', + 'RLHellKnight', + 'RLBaronOfHell', + 'RLArachnotron', + 'RLPainElemental', + 'RLRevenant', + 'RLMancubus', + 'RLArchvile', + 'RLCyberdemon', + 'RLSpiderMastermindVariantSpawner', + 'RLEasyBossEye', + 'RLBossBrain' }; - static const String easypool[] = + static const Name easypool[] = { - "RLFormerHumanNoArmageddonSpawner", - "RLFormerSergeantNoArmageddonSpawner", - "RLFormerCommandoNoArmageddonSpawner", - "RLImpNoArmageddonSpawner", - "RLDemonNoArmageddonSpawner", - "RLSpectreNoArmageddonSpawner", - "RLLostSoulNoArmageddonSpawner", - "RLCacodemonNoArmageddonSpawner", - "RLHellKnightNoArmageddonSpawner", - "RLBaronOfHellNoArmageddonSpawner", - "RLArachnotronNoArmageddonSpawner", - "RLPainElementalNoArmageddonSpawner", - "RLRevenantNoArmageddonSpawner", - "RLMancubusNoArmageddonSpawner", - "RLArchvileNoArmageddonSpawner", - "RLCyberdemonNoArmageddonSpawner", - "RLSpiderMastermindNoArmageddonSpawner", - "RLBossEye", - "RLBossBrain" + 'RLFormerHumanNoArmageddonSpawner', + 'RLFormerSergeantNoArmageddonSpawner', + 'RLFormerCommandoNoArmageddonSpawner', + 'RLImpNoArmageddonSpawner', + 'RLDemonNoArmageddonSpawner', + 'RLSpectreNoArmageddonSpawner', + 'RLLostSoulNoArmageddonSpawner', + 'RLCacodemonNoArmageddonSpawner', + 'RLHellKnightNoArmageddonSpawner', + 'RLBaronOfHellNoArmageddonSpawner', + 'RLArachnotronNoArmageddonSpawner', + 'RLPainElementalNoArmageddonSpawner', + 'RLRevenantNoArmageddonSpawner', + 'RLMancubusNoArmageddonSpawner', + 'RLArchvileNoArmageddonSpawner', + 'RLCyberdemonNoArmageddonSpawner', + 'RLSpiderMastermindNoArmageddonSpawner', + 'RLBossEye', + 'RLBossBrain' }; - static const String normalpool[] = + static const Name normalpool[] = { - "RLFormerHumanNoArmageddonSpawner", - "RLFormerSergeantNoArmageddonSpawner", - "RLFormerCommandoNoArmageddonSpawner", - "RLImpNoArmageddonSpawner", - "RLDemonNoArmageddonSpawner", - "RLSpectreNoArmageddonSpawner", - "RLLostSoulNoArmageddonSpawner", - "RLCacodemonNoArmageddonSpawner", - "RLHellKnightNoArmageddonSpawner", - "RLBaronOfHellNoArmageddonSpawner", - "RLArachnotronNoArmageddonSpawner", - "RLPainElementalNoArmageddonSpawner", - "RLRevenantNoArmageddonSpawner", - "RLMancubusNoArmageddonSpawner", - "RLArchvileNoArmageddonSpawner", - "RLCyberdemonNoArmageddonSpawner", - "RLSpiderMastermindNoArmageddonSpawner", - "RLBossEye", - "RLBossBrain" + 'RLFormerHumanNoArmageddonSpawner', + 'RLFormerSergeantNoArmageddonSpawner', + 'RLFormerCommandoNoArmageddonSpawner', + 'RLImpNoArmageddonSpawner', + 'RLDemonNoArmageddonSpawner', + 'RLSpectreNoArmageddonSpawner', + 'RLLostSoulNoArmageddonSpawner', + 'RLCacodemonNoArmageddonSpawner', + 'RLHellKnightNoArmageddonSpawner', + 'RLBaronOfHellNoArmageddonSpawner', + 'RLArachnotronNoArmageddonSpawner', + 'RLPainElementalNoArmageddonSpawner', + 'RLRevenantNoArmageddonSpawner', + 'RLMancubusNoArmageddonSpawner', + 'RLArchvileNoArmageddonSpawner', + 'RLCyberdemonNoArmageddonSpawner', + 'RLSpiderMastermindNoArmageddonSpawner', + 'RLBossEye', + 'RLBossBrain' }; - static const String hardpool[] = + static const Name hardpool[] = { - "RLFormerHumanSpawner", - "RLFormerSergeantSpawner", - "RLFormerCommandoSpawner", - "RLImpSpawner", - "RLDemonSpawner", - "RLSpectreSpawner", - "RLLostSoulSpawner", - "RLCacodemonSpawner", - "RLHellKnightSpawner", - "RLBaronOfHellSpawner", - "RLArachnotronSpawner", - "RLPainElementalSpawner", - "RLRevenantSpawner", - "RLMancubusSpawner", - "RLArchvileSpawner", - "RLCyberdemonSpawner", - "RLSpiderMastermindSpawner", - "RLUVBossEye", - "RLBossBrain" + 'RLFormerHumanSpawner', + 'RLFormerSergeantSpawner', + 'RLFormerCommandoSpawner', + 'RLImpSpawner', + 'RLDemonSpawner', + 'RLSpectreSpawner', + 'RLLostSoulSpawner', + 'RLCacodemonSpawner', + 'RLHellKnightSpawner', + 'RLBaronOfHellSpawner', + 'RLArachnotronSpawner', + 'RLPainElementalSpawner', + 'RLRevenantSpawner', + 'RLMancubusSpawner', + 'RLArchvileSpawner', + 'RLCyberdemonSpawner', + 'RLSpiderMastermindSpawner', + 'RLUVBossEye', + 'RLBossBrain' }; - static const String nightmarepool[] = + static const Name nightmarepool[] = { - "RLEliteFormerHumanSpawner", - "RLEliteFormerSergeantSpawner", - "RLEliteFormerCommandoSpawner", - "RLNightmareImp", - "RLNightmareDemon", - "RLNightmareSpectre", - "RLNightmareLostSoul", - "RLNightmareCacodemon", - "RLNightmareHellKnight", - "RLNightmareBaronOfHell", - "RLNightmareArachnotron", - "RLNightmarePainElemental", - "RLNightmareRevenant", - "RLNightmareMancubus", - "RLNightmareArchvile", - "RLNightmareCyberdemonSpawner", - "RLNightmareSpiderMastermindSpawner", - "RLNightmareBossEye", - "RLNightmareBossBrain" + 'RLEliteFormerHumanSpawner', + 'RLEliteFormerSergeantSpawner', + 'RLEliteFormerCommandoSpawner', + 'RLNightmareImp', + 'RLNightmareDemon', + 'RLNightmareSpectre', + 'RLNightmareLostSoul', + 'RLNightmareCacodemon', + 'RLNightmareHellKnight', + 'RLNightmareBaronOfHell', + 'RLNightmareArachnotron', + 'RLNightmarePainElemental', + 'RLNightmareRevenant', + 'RLNightmareMancubus', + 'RLNightmareArchvile', + 'RLNightmareCyberdemonSpawner', + 'RLNightmareSpiderMastermindSpawner', + 'RLNightmareBossEye', + 'RLNightmareBossBrain' }; - static const String technophobiapool[] = + static const Name technophobiapool[] = { - "RLFormerCyborgBattleRifle", - "RLFormerCyborgBattleRifle", - "RLFormerCyborgBattleRifle", - "RLCyberneticImp", - "RLCyberneticDemon", - "RLCyberneticSpectre", - "RLCyberneticLostSoul", - "RLCacodemon", - "RLCyberneticHellKnight", - "RLCyberneticBaronOfHell", - "RLCyberneticArachnotron", - "RLCyberneticPainElemental", - "RLCyberneticRevenant", - "RLCyberneticMancubus", - "RLCyberneticArchvile", - "RLCyberneticCyberdemonSpawner", - "RLCyberneticSpiderMastermindSpawner", - "RLTechnophobiaBossEye", - "RLTechnophobiaBossBrain" + 'RLFormerCyborgBattleRifle', + 'RLFormerCyborgBattleRifle', + 'RLFormerCyborgBattleRifle', + 'RLCyberneticImp', + 'RLCyberneticDemon', + 'RLCyberneticSpectre', + 'RLCyberneticLostSoul', + 'RLCacodemon', + 'RLCyberneticHellKnight', + 'RLCyberneticBaronOfHell', + 'RLCyberneticArachnotron', + 'RLCyberneticPainElemental', + 'RLCyberneticRevenant', + 'RLCyberneticMancubus', + 'RLCyberneticArchvile', + 'RLCyberneticCyberdemonSpawner', + 'RLCyberneticSpiderMastermindSpawner', + 'RLTechnophobiaBossEye', + 'RLTechnophobiaBossBrain' }; - static const String armageddonpool[] = + static const Name armageddonpool[] = { - "RLFormerAssaultTrooper", - "RLFormerOverwatch", - "RLFormerShocktrooper", - "RLArmageddonImp", - "RLArmageddonDemon", - "RLArmageddonSpectreSpawner", - "RLTheHungrySpawner", - "RLArmageddonCacodemon", - "RLArmageddonHellKnightSpawner", - "RLArmageddonBaronOfHell", - "RLArmageddonArachnotron", - "RLArmageddonPainElemental", - "RLArmageddonRevenant", - "RLArmageddonMancubus", - "RLArmageddonArchvileSpawner", - "RLArmageddonCyberdemonSpawner", - "RLArmageddonSpiderMastermindSpawner", - "RLArmageddonBossEye", - "RLArmageddonBossBrain" + 'RLFormerAssaultTrooper', + 'RLFormerOverwatch', + 'RLFormerShocktrooper', + 'RLArmageddonImp', + 'RLArmageddonDemon', + 'RLArmageddonSpectreSpawner', + 'RLTheHungrySpawner', + 'RLArmageddonCacodemon', + 'RLArmageddonHellKnightSpawner', + 'RLArmageddonBaronOfHell', + 'RLArmageddonArachnotron', + 'RLArmageddonPainElemental', + 'RLArmageddonRevenant', + 'RLArmageddonMancubus', + 'RLArmageddonArchvileSpawner', + 'RLArmageddonCyberdemonSpawner', + 'RLArmageddonSpiderMastermindSpawner', + 'RLArmageddonBossEye', + 'RLArmageddonBossBrain' }; - static const String adaptivepool[] = + static const Name adaptivepool[] = { - "RLAdaptiveFormerHuman", - "RLAdaptiveFormerSergeant", - "RLAdaptiveFormerCommando", - "RLAdaptiveImp", - "RLAdaptiveDemon", - "RLAdaptiveSpectre", - "RLAdaptiveLostSoul", - "RLAdaptiveCacodemon", - "RLAdaptiveHellKnight", - "RLAdaptiveBaronOfHell", - "RLAdaptiveArachnotron", - "RLAdaptivePainElemental", - "RLAdaptiveRevenant", - "RLAdaptiveMancubus", - "RLAdaptiveArchvile", - "RLAdaptiveCyberdemon", - "RLAdaptiveSpiderMastermind", - "RLUVBossEye", - "RLBossBrain" + 'RLAdaptiveFormerHuman', + 'RLAdaptiveFormerSergeant', + 'RLAdaptiveFormerCommando', + 'RLAdaptiveImp', + 'RLAdaptiveDemon', + 'RLAdaptiveSpectre', + 'RLAdaptiveLostSoul', + 'RLAdaptiveCacodemon', + 'RLAdaptiveHellKnight', + 'RLAdaptiveBaronOfHell', + 'RLAdaptiveArachnotron', + 'RLAdaptivePainElemental', + 'RLAdaptiveRevenant', + 'RLAdaptiveMancubus', + 'RLAdaptiveArchvile', + 'RLAdaptiveCyberdemon', + 'RLAdaptiveSpiderMastermind', + 'RLUVBossEye', + 'RLBossBrain' }; switch ( swwm_drlaskill ) { case 0: for ( int i=0; i<18; i++ ) { - if ( !(a is babypool[i]) ) continue; + if ( !(a.GetClassName() == babypool[i]) ) continue; return refpool[i]; } break; case 1: for ( int i=0; i<18; i++ ) { - if ( !(a is easypool[i]) ) continue; + if ( !(a.GetClassName() == easypool[i]) ) continue; return refpool[i]; } break; case 2: for ( int i=0; i<18; i++ ) { - if ( !(a is normalpool[i]) ) continue; + if ( !(a.GetClassName() == normalpool[i]) ) continue; return refpool[i]; } break; case 3: for ( int i=0; i<18; i++ ) { - if ( !(a is hardpool[i]) ) continue; + if ( !(a.GetClassName() == hardpool[i]) ) continue; return refpool[i]; } break; case 4: for ( int i=0; i<18; i++ ) { - if ( !(a is nightmarepool[i]) ) continue; + if ( !(a.GetClassName() == nightmarepool[i]) ) continue; return refpool[i]; } break; case 5: for ( int i=0; i<18; i++ ) { - if ( !(a is technophobiapool[i]) ) continue; + if ( !(a.GetClassName() == technophobiapool[i]) ) continue; return refpool[i]; } break; case 6: for ( int i=0; i<18; i++ ) { - if ( !(a is armageddonpool[i]) ) continue; + if ( !(a.GetClassName() == armageddonpool[i]) ) continue; return refpool[i]; } break; @@ -260,7 +259,7 @@ extend Class SWWMHandler default: for ( int i=0; i<18; i++ ) { - if ( !(a is adaptivepool[i]) ) continue; + if ( !(a.GetClassName() == adaptivepool[i]) ) continue; return refpool[i]; } break; @@ -268,12 +267,71 @@ extend Class SWWMHandler return null; } + private Class GetLOBReplacee( Class a ) + { + static const Name refpool[] = + { + 'Zombieman', + 'Shotgunguy', + 'Chaingunguy', + 'DoomImp', + 'Demon', + 'Spectre', + 'Cacodemon', + 'HellKnight', + 'BaronOfHell', + 'Revenant', + 'Fatso', + 'Arachnotron', + 'Archvile' + }; + static const Name reppool[] = + { + 'LOBZombieman', + 'LOBShotgunguy', + 'LOBChaingunguy', + 'LOBDoomImp', + 'LOBDemon', + 'LOBSpectre', + 'LOBCacodemon', + 'LOBHellKnight', + 'LOBBaronOfHell', + 'LOBRevenant', + 'LOBFatso', + 'LOBArachnotron', + 'LOBArchvile' + }; + for ( int i=0; i<13; i++ ) + { + if ( !(a.GetClassName() == reppool[i]) ) continue; + return refpool[i]; + } + return null; + } + override void CheckReplacee( ReplacedEvent e ) { if ( profiling ) ProfileTick(); + // these are all needed so boss deaths work if ( e.Replacement is 'DSparilHax' ) e.Replacee = 'Sorcerer2'; - // drla stuff, needed so boss deaths work + // legacy of rust funkytimes + else if ( e.Replacement is 'ID24TyrantBoss1' ) + e.Replacee = 'Deh_Actor_156'; + else if ( e.Replacement is 'ID24TyrantBoss2' ) + e.Replacee = 'Deh_Actor_157'; + // LOB 'double death' stuff + if ( haslegionofbones && swwm_lobdoubled ) + { + let rep = GetLOBReplacee(e.Replacement); + if ( rep ) + { + e.Replacee = rep; + if ( profiling ) ProfileTock(PT_CHECKREPLACEE); + return; + } + } + // drla stuff if ( !hasdrlamonsters ) { if ( profiling ) ProfileTock(PT_CHECKREPLACEE); @@ -286,252 +344,252 @@ extend Class SWWMHandler private Class GetDRLAReplacement( Class a ) { - static const String refpool[] = + static const Name refpool[] = { - "Zombieman", - "Shotgunguy", - "Chaingunguy", - "DoomImp", - "Demon", - "Spectre", - "LostSoul", - "Cacodemon", - "HellKnight", - "BaronOfHell", - "Arachnotron", - "PainElemental", - "Revenant", - "Fatso", - "Archvile", - "Cyberdemon", - "SpiderMastermind", - "BossEye", - "BossBrain" + 'Zombieman', + 'Shotgunguy', + 'Chaingunguy', + 'DoomImp', + 'Demon', + 'Spectre', + 'LostSoul', + 'Cacodemon', + 'HellKnight', + 'BaronOfHell', + 'Arachnotron', + 'PainElemental', + 'Revenant', + 'Fatso', + 'Archvile', + 'Cyberdemon', + 'SpiderMastermind', + 'BossEye', + 'BossBrain' }; - static const String babypool[] = + static const Name babypool[] = { - "RLFormerHumanPistol", - "RLFormerSergeantShotgun", - "RLFormerCommandoChaingun", - "RLImp", - "RLDemon", - "RLSpectre", - "RLLostSoul", - "RLCacodemon", - "RLHellKnight", - "RLBaronOfHell", - "RLArachnotron", - "RLPainElemental", - "RLRevenant", - "RLMancubus", - "RLArchvile", - "RLCyberdemon", - "RLSpiderMastermindVariantSpawner", - "RLEasyBossEye", - "RLBossBrain" + 'RLFormerHumanPistol', + 'RLFormerSergeantShotgun', + 'RLFormerCommandoChaingun', + 'RLImp', + 'RLDemon', + 'RLSpectre', + 'RLLostSoul', + 'RLCacodemon', + 'RLHellKnight', + 'RLBaronOfHell', + 'RLArachnotron', + 'RLPainElemental', + 'RLRevenant', + 'RLMancubus', + 'RLArchvile', + 'RLCyberdemon', + 'RLSpiderMastermindVariantSpawner', + 'RLEasyBossEye', + 'RLBossBrain' }; - static const String easypool[] = + static const Name easypool[] = { - "RLFormerHumanNoArmageddonSpawner", - "RLFormerSergeantNoArmageddonSpawner", - "RLFormerCommandoNoArmageddonSpawner", - "RLImpNoArmageddonSpawner", - "RLDemonNoArmageddonSpawner", - "RLSpectreNoArmageddonSpawner", - "RLLostSoulNoArmageddonSpawner", - "RLCacodemonNoArmageddonSpawner", - "RLHellKnightNoArmageddonSpawner", - "RLBaronOfHellNoArmageddonSpawner", - "RLArachnotronNoArmageddonSpawner", - "RLPainElementalNoArmageddonSpawner", - "RLRevenantNoArmageddonSpawner", - "RLMancubusNoArmageddonSpawner", - "RLArchvileNoArmageddonSpawner", - "RLCyberdemonNoArmageddonSpawner", - "RLSpiderMastermindNoArmageddonSpawner", - "RLBossEye", - "RLBossBrain" + 'RLFormerHumanNoArmageddonSpawner', + 'RLFormerSergeantNoArmageddonSpawner', + 'RLFormerCommandoNoArmageddonSpawner', + 'RLImpNoArmageddonSpawner', + 'RLDemonNoArmageddonSpawner', + 'RLSpectreNoArmageddonSpawner', + 'RLLostSoulNoArmageddonSpawner', + 'RLCacodemonNoArmageddonSpawner', + 'RLHellKnightNoArmageddonSpawner', + 'RLBaronOfHellNoArmageddonSpawner', + 'RLArachnotronNoArmageddonSpawner', + 'RLPainElementalNoArmageddonSpawner', + 'RLRevenantNoArmageddonSpawner', + 'RLMancubusNoArmageddonSpawner', + 'RLArchvileNoArmageddonSpawner', + 'RLCyberdemonNoArmageddonSpawner', + 'RLSpiderMastermindNoArmageddonSpawner', + 'RLBossEye', + 'RLBossBrain' }; - static const String normalpool[] = + static const Name normalpool[] = { - "RLFormerHumanNoArmageddonSpawner", - "RLFormerSergeantNoArmageddonSpawner", - "RLFormerCommandoNoArmageddonSpawner", - "RLImpNoArmageddonSpawner", - "RLDemonNoArmageddonSpawner", - "RLSpectreNoArmageddonSpawner", - "RLLostSoulNoArmageddonSpawner", - "RLCacodemonNoArmageddonSpawner", - "RLHellKnightNoArmageddonSpawner", - "RLBaronOfHellNoArmageddonSpawner", - "RLArachnotronNoArmageddonSpawner", - "RLPainElementalNoArmageddonSpawner", - "RLRevenantNoArmageddonSpawner", - "RLMancubusNoArmageddonSpawner", - "RLArchvileNoArmageddonSpawner", - "RLCyberdemonNoArmageddonSpawner", - "RLSpiderMastermindNoArmageddonSpawner", - "RLBossEye", - "RLBossBrain" + 'RLFormerHumanNoArmageddonSpawner', + 'RLFormerSergeantNoArmageddonSpawner', + 'RLFormerCommandoNoArmageddonSpawner', + 'RLImpNoArmageddonSpawner', + 'RLDemonNoArmageddonSpawner', + 'RLSpectreNoArmageddonSpawner', + 'RLLostSoulNoArmageddonSpawner', + 'RLCacodemonNoArmageddonSpawner', + 'RLHellKnightNoArmageddonSpawner', + 'RLBaronOfHellNoArmageddonSpawner', + 'RLArachnotronNoArmageddonSpawner', + 'RLPainElementalNoArmageddonSpawner', + 'RLRevenantNoArmageddonSpawner', + 'RLMancubusNoArmageddonSpawner', + 'RLArchvileNoArmageddonSpawner', + 'RLCyberdemonNoArmageddonSpawner', + 'RLSpiderMastermindNoArmageddonSpawner', + 'RLBossEye', + 'RLBossBrain' }; - static const String hardpool[] = + static const Name hardpool[] = { - "RLFormerHumanSpawner", - "RLFormerSergeantSpawner", - "RLFormerCommandoSpawner", - "RLImpSpawner", - "RLDemonSpawner", - "RLSpectreSpawner", - "RLLostSoulSpawner", - "RLCacodemonSpawner", - "RLHellKnightSpawner", - "RLBaronOfHellSpawner", - "RLArachnotronSpawner", - "RLPainElementalSpawner", - "RLRevenantSpawner", - "RLMancubusSpawner", - "RLArchvileSpawner", - "RLCyberdemonSpawner", - "RLSpiderMastermindSpawner", - "RLUVBossEye", - "RLBossBrain" + 'RLFormerHumanSpawner', + 'RLFormerSergeantSpawner', + 'RLFormerCommandoSpawner', + 'RLImpSpawner', + 'RLDemonSpawner', + 'RLSpectreSpawner', + 'RLLostSoulSpawner', + 'RLCacodemonSpawner', + 'RLHellKnightSpawner', + 'RLBaronOfHellSpawner', + 'RLArachnotronSpawner', + 'RLPainElementalSpawner', + 'RLRevenantSpawner', + 'RLMancubusSpawner', + 'RLArchvileSpawner', + 'RLCyberdemonSpawner', + 'RLSpiderMastermindSpawner', + 'RLUVBossEye', + 'RLBossBrain' }; - static const String nightmarepool[] = + static const Name nightmarepool[] = { - "RLEliteFormerHumanSpawner", - "RLEliteFormerSergeantSpawner", - "RLEliteFormerCommandoSpawner", - "RLNightmareImp", - "RLNightmareDemon", - "RLNightmareSpectre", - "RLNightmareLostSoul", - "RLNightmareCacodemon", - "RLNightmareHellKnight", - "RLNightmareBaronOfHell", - "RLNightmareArachnotron", - "RLNightmarePainElemental", - "RLNightmareRevenant", - "RLNightmareMancubus", - "RLNightmareArchvile", - "RLNightmareCyberdemonSpawner", - "RLNightmareSpiderMastermindSpawner", - "RLNightmareBossEye", - "RLNightmareBossBrain" + 'RLEliteFormerHumanSpawner', + 'RLEliteFormerSergeantSpawner', + 'RLEliteFormerCommandoSpawner', + 'RLNightmareImp', + 'RLNightmareDemon', + 'RLNightmareSpectre', + 'RLNightmareLostSoul', + 'RLNightmareCacodemon', + 'RLNightmareHellKnight', + 'RLNightmareBaronOfHell', + 'RLNightmareArachnotron', + 'RLNightmarePainElemental', + 'RLNightmareRevenant', + 'RLNightmareMancubus', + 'RLNightmareArchvile', + 'RLNightmareCyberdemonSpawner', + 'RLNightmareSpiderMastermindSpawner', + 'RLNightmareBossEye', + 'RLNightmareBossBrain' }; - static const String technophobiapool[] = + static const Name technophobiapool[] = { - "RLFormerCyborgBattleRifle", - "RLFormerCyborgBattleRifle", - "RLFormerCyborgBattleRifle", - "RLCyberneticImp", - "RLCyberneticDemon", - "RLCyberneticSpectre", - "RLCyberneticLostSoul", - "RLCacodemon", - "RLCyberneticHellKnight", - "RLCyberneticBaronOfHell", - "RLCyberneticArachnotron", - "RLCyberneticPainElemental", - "RLCyberneticRevenant", - "RLCyberneticMancubus", - "RLCyberneticArchvile", - "RLCyberneticCyberdemonSpawner", - "RLCyberneticSpiderMastermindSpawner", - "RLTechnophobiaBossEye", - "RLTechnophobiaBossBrain" + 'RLFormerCyborgBattleRifle', + 'RLFormerCyborgBattleRifle', + 'RLFormerCyborgBattleRifle', + 'RLCyberneticImp', + 'RLCyberneticDemon', + 'RLCyberneticSpectre', + 'RLCyberneticLostSoul', + 'RLCacodemon', + 'RLCyberneticHellKnight', + 'RLCyberneticBaronOfHell', + 'RLCyberneticArachnotron', + 'RLCyberneticPainElemental', + 'RLCyberneticRevenant', + 'RLCyberneticMancubus', + 'RLCyberneticArchvile', + 'RLCyberneticCyberdemonSpawner', + 'RLCyberneticSpiderMastermindSpawner', + 'RLTechnophobiaBossEye', + 'RLTechnophobiaBossBrain' }; - static const String armageddonpool[] = + static const Name armageddonpool[] = { - "RLFormerAssaultTrooper", - "RLFormerOverwatch", - "RLFormerShocktrooper", - "RLArmageddonImp", - "RLArmageddonDemon", - "RLArmageddonSpectreSpawner", - "RLTheHungrySpawner", - "RLArmageddonCacodemon", - "RLArmageddonHellKnightSpawner", - "RLArmageddonBaronOfHell", - "RLArmageddonArachnotron", - "RLArmageddonPainElemental", - "RLArmageddonRevenant", - "RLArmageddonMancubus", - "RLArmageddonArchvileSpawner", - "RLArmageddonCyberdemonSpawner", - "RLArmageddonSpiderMastermindSpawner", - "RLArmageddonBossEye", - "RLArmageddonBossBrain" + 'RLFormerAssaultTrooper', + 'RLFormerOverwatch', + 'RLFormerShocktrooper', + 'RLArmageddonImp', + 'RLArmageddonDemon', + 'RLArmageddonSpectreSpawner', + 'RLTheHungrySpawner', + 'RLArmageddonCacodemon', + 'RLArmageddonHellKnightSpawner', + 'RLArmageddonBaronOfHell', + 'RLArmageddonArachnotron', + 'RLArmageddonPainElemental', + 'RLArmageddonRevenant', + 'RLArmageddonMancubus', + 'RLArmageddonArchvileSpawner', + 'RLArmageddonCyberdemonSpawner', + 'RLArmageddonSpiderMastermindSpawner', + 'RLArmageddonBossEye', + 'RLArmageddonBossBrain' }; - static const String adaptivepool[] = + static const Name adaptivepool[] = { - "RLAdaptiveFormerHuman", - "RLAdaptiveFormerSergeant", - "RLAdaptiveFormerCommando", - "RLAdaptiveImp", - "RLAdaptiveDemon", - "RLAdaptiveSpectre", - "RLAdaptiveLostSoul", - "RLAdaptiveCacodemon", - "RLAdaptiveHellKnight", - "RLAdaptiveBaronOfHell", - "RLAdaptiveArachnotron", - "RLAdaptivePainElemental", - "RLAdaptiveRevenant", - "RLAdaptiveMancubus", - "RLAdaptiveArchvile", - "RLAdaptiveCyberdemon", - "RLAdaptiveSpiderMastermind", - "RLUVBossEye", - "RLBossBrain" + 'RLAdaptiveFormerHuman', + 'RLAdaptiveFormerSergeant', + 'RLAdaptiveFormerCommando', + 'RLAdaptiveImp', + 'RLAdaptiveDemon', + 'RLAdaptiveSpectre', + 'RLAdaptiveLostSoul', + 'RLAdaptiveCacodemon', + 'RLAdaptiveHellKnight', + 'RLAdaptiveBaronOfHell', + 'RLAdaptiveArachnotron', + 'RLAdaptivePainElemental', + 'RLAdaptiveRevenant', + 'RLAdaptiveMancubus', + 'RLAdaptiveArchvile', + 'RLAdaptiveCyberdemon', + 'RLAdaptiveSpiderMastermind', + 'RLUVBossEye', + 'RLBossBrain' }; switch ( swwm_drlaskill ) { case 0: for ( int i=0; i<18; i++ ) { - if ( !(a is refpool[i]) ) continue; + if ( !(a.GetClassName() == refpool[i]) ) continue; return babypool[i]; } break; case 1: for ( int i=0; i<18; i++ ) { - if ( !(a is refpool[i]) ) continue; + if ( !(a.GetClassName() == refpool[i]) ) continue; return easypool[i]; } break; case 2: for ( int i=0; i<18; i++ ) { - if ( !(a is refpool[i]) ) continue; + if ( !(a.GetClassName() == refpool[i]) ) continue; return normalpool[i]; } break; case 3: for ( int i=0; i<18; i++ ) { - if ( !(a is refpool[i]) ) continue; + if ( !(a.GetClassName() == refpool[i]) ) continue; return hardpool[i]; } break; case 4: for ( int i=0; i<18; i++ ) { - if ( !(a is refpool[i]) ) continue; + if ( !(a.GetClassName() == refpool[i]) ) continue; return nightmarepool[i]; } break; case 5: for ( int i=0; i<18; i++ ) { - if ( !(a is refpool[i]) ) continue; + if ( !(a.GetClassName() == refpool[i]) ) continue; return technophobiapool[i]; } break; case 6: for ( int i=0; i<18; i++ ) { - if ( !(a is refpool[i]) ) continue; + if ( !(a.GetClassName() == refpool[i]) ) continue; return armageddonpool[i]; } break; @@ -539,7 +597,7 @@ extend Class SWWMHandler default: for ( int i=0; i<18; i++ ) { - if ( !(a is refpool[i]) ) continue; + if ( !(a.GetClassName() == refpool[i]) ) continue; return adaptivepool[i]; } break; @@ -547,6 +605,48 @@ extend Class SWWMHandler return null; } + private Class GetLOBReplacement( Class a ) + { + static const Name refpool[] = + { + 'Zombieman', + 'Shotgunguy', + 'Chaingunguy', + 'DoomImp', + 'Demon', + 'Spectre', + 'Cacodemon', + 'HellKnight', + 'BaronOfHell', + 'Revenant', + 'Fatso', + 'Arachnotron', + 'Archvile' + }; + static const Name reppool[] = + { + 'LOBZombieman', + 'LOBShotgunguy', + 'LOBChaingunguy', + 'LOBDoomImp', + 'LOBDemon', + 'LOBSpectre', + 'LOBCacodemon', + 'LOBHellKnight', + 'LOBBaronOfHell', + 'LOBRevenant', + 'LOBFatso', + 'LOBArachnotron', + 'LOBArchvile' + }; + for ( int i=0; i<13; i++ ) + { + if ( !(a.GetClassName() == refpool[i]) ) continue; + return reppool[i]; + } + return null; + } + override void CheckReplacement( ReplaceEvent e ) { if ( profiling ) ProfileTick(); @@ -568,8 +668,19 @@ extend Class SWWMHandler return; } } - // only replace vanilla blood if no other gore mod is doing it - if ( (((e.Replacee == "Blood") && (!e.Replacement || e.Replacement == "Blood")) || (bludtypes.Find(e.Replacee.GetClassName()) < bludtypes.Size())) && swwm_blood ) e.Replacement = "mkBlood"; + // LOB 'double death' stuff + if ( haslegionofbones && swwm_lobdoubled ) + { + let rep = GetLOBReplacement(e.Replacee); + if ( rep ) + { + e.Replacement = rep; + e.IsFinal = true; + if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); + return; + } + } + if ( (e.Replacee is 'Blood') || (bludtypes.Find(e.Replacee.GetClassName()) < bludtypes.Size()) ) e.Replacement = 'mkBlood'; else if ( e.Replacee is 'ItemFog' ) e.Replacement = 'SWWMItemFog'; else if ( e.Replacee is 'TeleportFog' ) e.Replacement = 'SWWMTeleportFog'; else if ( (e.Replacee is 'CommanderKeen') && (!e.Replacement || (e.Replacement == 'CommanderKeen')) ) @@ -592,7 +703,7 @@ extend Class SWWMHandler } else if ( (e.Replacee is 'RedCard') && !(e.Replacee is 'ChexRedCard') ) { - if ( !equinoxhack && (level.GetChecksum() ~== "3805A661D5C4523AFF7BF86991071043") ) + if ( level.GetChecksum() ~== "3805A661D5C4523AFF7BF86991071043" ) { if ( profiling ) ProfileTock(PT_CHECKREPLACEMENT); return; // don't replace red key in Equinox MAP13 @@ -614,7 +725,8 @@ extend Class SWWMHandler else if ( e.Replacee is 'KeyBlue' ) e.Replacement = 'SWWMKeyBlue'; else if ( e.Replacee is 'KeyYellow' ) e.Replacement = 'SWWMKeyYellow'; else if ( e.Replacee.GetClassName() == 'KeyRed' ) e.Replacement = 'SWWMKeyRed'; - else if ( (e.Replacee is 'Chainsaw') || (e.Replacee is 'Gauntlets') || (e.Replacee is 'FWeapAxe') ) e.Replacement = SWWMUtility.PickSWWMSlot1(); + else if ( (e.Replacee is 'Chainsaw') || (e.Replacee is 'Gauntlets') || (e.Replacee is 'FWeapAxe') ) e.Replacement = SWWMUtility.IsEviternityTwo()?SWWMUtility.PickSWWMSlot0():SWWMUtility.PickSWWMSlot1(); + else if ( (e.Replacee.GetClassName() == 'Perforator') && SWWMUtility.IsEviternityTwo() ) SWWMUtility.PickSWWMSlot0(); // Eviternity 2 else if ( (e.Replacee is 'Fist') || (e.Replacee is 'Staff') ) e.Replacement = 'DeepImpact'; else if ( (e.Replacee is 'Pistol') || (e.Replacee is 'GoldWand') || (e.Replacee is 'FWeapFist') || (e.Replacee is 'CWeapMace') || (e.Replacee is 'MWeapWand') ) e.Replacement = SWWMUtility.PickSWWMSlot2(); else if ( (e.Replacee is 'Shotgun') || (e.Replacee is 'CWeapStaff') ) e.Replacement = SWWMUtility.IsDoomOne()?SWWMUtility.PickDoomSlot3():SWWMUtility.PickSWWMSlot3(); @@ -622,62 +734,22 @@ extend Class SWWMHandler else if ( e.Replacee is 'Crossbow' ) e.Replacement = SWWMUtility.PickDoomSlot3(); else if ( (e.Replacee is 'Chaingun') || (e.Replacee is 'Blaster') || (e.Replacee is 'FWeaponPiece3') ) e.Replacement = SWWMUtility.PickSWWMSlot5(); else if ( (e.Replacee is 'RocketLauncher') || (e.Replacee is 'PhoenixRod') || (e.Replacee is 'FWeapHammer') ) e.Replacement = SWWMUtility.PickSWWMSlot6(); - else if ( (e.Replacee is 'PlasmaRifle') || (e.Replacee is 'SkullRod') ) e.Replacement = SWWMUtility.PickDoomSlot6(); + else if ( (e.Replacee is 'PlasmaRifle') || (e.Replacee is 'ID24Incinerator') || (e.Replacee is 'SkullRod') ) e.Replacement = SWWMUtility.PickDoomSlot6(); else if ( e.Replacee is 'CWeapFlame' ) e.Replacement = SWWMUtility.PickSWWMSlot7(); else if ( e.Replacee is 'MWeapLightning' ) e.Replacement = SWWMUtility.PickSWWMSlot8(); - else if ( (e.Replacee is 'BFG9000') || (e.Replacee is 'Mace') ) e.Replacement = SWWMUtility.PickDoomSlot7(); + else if ( (e.Replacee is 'BFG9000') || (e.Replacee is 'ID24CalamityBlade') || (e.Replacee is 'Mace') ) e.Replacement = SWWMUtility.PickDoomSlot7(); else if ( e.Replacee is 'CWeaponPiece2' ) e.Replacement = SWWMUtility.PickSWWMSlot9(); else if ( e.Replacee is 'MWeaponPiece1' ) e.Replacement = SWWMUtility.PickSWWMSlot0(); - else if ( (e.Replacee is 'ShellBox') || (e.Replacee is 'CrossbowHefty') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMShellAmmoBig'; - else e.Replacement = SWWMShellAmmoBig.PickAmmo(true); - } - else if ( (e.Replacee is 'Shell') || (e.Replacee is 'CrossbowAmmo') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMShellAmmoSmall'; - else e.Replacement = SWWMShellAmmoSmall.PickAmmo(true); - } - else if ( e.Replacee is 'ClipBox' ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMClipAmmoBig'; - else e.Replacement = SWWMClipAmmoBig.PickAmmo(true); - } - else if ( (e.Replacee is 'Clip') || (e.Replacee is 'GoldWandAmmo') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMClipAmmoSmall'; - else e.Replacement = SWWMClipAmmoSmall.PickAmmo(true); - } - else if ( e.Replacee is 'BlasterHefty' ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMBlastAmmoBig'; - else e.Replacement = SWWMBlastAmmoBig.PickAmmo(true); - } - else if ( e.Replacee is 'BlasterAmmo' ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMBlastAmmoSmall'; - else e.Replacement = SWWMBlastAmmoSmall.PickAmmo(true); - } - else if ( (e.Replacee is 'RocketBox') || (e.Replacee is 'PhoenixRodHefty') || (e.Replacee is 'MaceHefty') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMRocketAmmoBig'; - else e.Replacement = SWWMRocketAmmoBig.PickAmmo(true); - } - else if ( (e.Replacee is 'RocketAmmo') || (e.Replacee is 'PhoenixRodAmmo') || (e.Replacee is 'MaceAmmo') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMRocketAmmoSmall'; - else e.Replacement = SWWMRocketAmmoSmall.PickAmmo(true); - } - else if ( (e.Replacee is 'CellPack') || (e.Replacee is 'SkullRodHefty') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMCellAmmoBig'; - else e.Replacement = SWWMCellAmmoBig.PickAmmo(true); - } - else if ( (e.Replacee is 'Cell') || (e.Replacee is 'SkullRodAmmo') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMCellAmmoSmall'; - else e.Replacement = SWWMCellAmmoSmall.PickAmmo(true); - } + else if ( (e.Replacee is 'ShellBox') || (e.Replacee is 'CrossbowHefty') ) e.Replacement = 'SWWMShellAmmoBig'; + else if ( (e.Replacee is 'Shell') || (e.Replacee is 'CrossbowAmmo') ) e.Replacement = 'SWWMShellAmmoSmall'; + else if ( e.Replacee is 'ClipBox' ) e.Replacement = 'SWWMClipAmmoBig'; + else if ( (e.Replacee is 'Clip') || (e.Replacee is 'GoldWandAmmo') ) e.Replacement = 'SWWMClipAmmoSmall'; + else if ( e.Replacee is 'BlasterHefty' ) e.Replacement = 'SWWMBlastAmmoBig'; + else if ( e.Replacee is 'BlasterAmmo' ) e.Replacement = 'SWWMBlastAmmoSmall'; + else if ( (e.Replacee is 'RocketBox') || (e.Replacee is 'PhoenixRodHefty') || (e.Replacee is 'MaceHefty') ) e.Replacement = 'SWWMRocketAmmoBig'; + else if ( (e.Replacee is 'RocketAmmo') || (e.Replacee is 'PhoenixRodAmmo') || (e.Replacee is 'MaceAmmo') ) e.Replacement = 'SWWMRocketAmmoSmall'; + else if ( (e.Replacee is 'CellPack') || (e.Replacee is 'ID24FuelTank') || (e.Replacee is 'SkullRodHefty') ) e.Replacement = 'SWWMCellAmmoBig'; + else if ( (e.Replacee is 'Cell') || (e.Replacee is 'ID24Fuel') || (e.Replacee is 'SkullRodAmmo') ) e.Replacement = 'SWWMCellAmmoSmall'; else if ( e.Replacee is 'Mana1' ) e.Replacement = 'FabricatorTier1'; else if ( e.Replacee is 'Mana2' ) e.Replacement = 'FabricatorTier2'; else if ( e.Replacee is 'Mana3' ) e.Replacement = 'FabricatorTier3'; diff --git a/zscript/handler/swwm_handler_shaders.zsc b/zscript/handler/swwm_handler_shaders.zsc index e39482734..a441e2c21 100644 --- a/zscript/handler/swwm_handler_shaders.zsc +++ b/zscript/handler/swwm_handler_shaders.zsc @@ -2,21 +2,23 @@ extend Class SWWMHandler { - static clearscope void ClearAllShaders( PlayerInfo p, bool noscope = false ) + static clearscope void ClearAllShaders( bool noscope = false ) { - Shader.SetEnabled(p,"WaterWarp",false); - Shader.SetEnabled(p,"LavaWarp",false); - Shader.SetEnabled(p,"SlimeWarp",false); - Shader.SetEnabled(p,"ZoomBlur",false); - if ( !noscope ) Shader.SetEnabled(p,"SilverScope",false); - Shader.SetEnabled(p,"BarrierShader",false); - Shader.SetEnabled(p,"GhostShader",false); - Shader.SetEnabled(p,"InvinciShader",false); - Shader.SetEnabled(p,"RagekitShader",false); - Shader.SetEnabled(p,"DevastationShader",false); - Shader.SetEnabled(p,"DivineShader",false); - Shader.SetEnabled(p,"Glitch",false); - Shader.SetEnabled(p,"Grain",false); + PPShader.SetEnabled("WaterWarp",false); + PPShader.SetEnabled("LavaWarp",false); + PPShader.SetEnabled("SlimeWarp",false); + PPShader.SetEnabled("ZoomBlur",false); + if ( !noscope ) PPShader.SetEnabled("SilverScope",false); + PPShader.SetEnabled("BarrierShader",false); + PPShader.SetEnabled("GhostShader",false); + PPShader.SetEnabled("InvinciShader",false); + PPShader.SetEnabled("RagekitShader",false); + PPShader.SetEnabled("DevastationShader",false); + PPShader.SetEnabled("DivineShader",false); + PPShader.SetEnabled("Glitch",false); + PPShader.SetEnabled("Grain",false); + PPShader.SetEnabled("WindBlur",false); + PPShader.SetEnabled("BokehSel",false); } private ui void RenderShaders( RenderEvent e ) @@ -26,120 +28,146 @@ extend Class SWWMHandler bool pc = (p.camera == mo); if ( !mo || !swwm_shaders || !pc ) { - if ( !swwm_shaders ) ClearAllShaders(p,true); + if ( !swwm_shaders ) ClearAllShaders(true); return; } - let divi = DivineSpriteEffect(mo.FindInventory("DivineSpriteEffect")); + // handle weapon wheel shader here + if ( wsel ) + { + PPShader.SetEnabled("BokehSel",true); + double salph = SWWMUtility.Lerp(wsel.olalph,wsel.alph,e.fractic); + PPShader.SetUniform1f("BokehSel","strength",salph); + } + else PPShader.SetEnabled("BokehSel",false); + let divi = DivineSpriteEffect(mo.FindInventory('DivineSpriteEffect')); if ( divi ) { - Shader.SetEnabled(p,"DivineShader",true); - Shader.SetUniform1f(p,"DivineShader","timer",(gametic+e.FracTic)/GameTicRate); - double str = clamp((divi.AlphInter.GetValue()-1000.)/6000.,0.,1.)**2.; - Shader.SetUniform1f(p,"DivineShader","str",str); + PPShader.SetEnabled("DivineShader",true); + PPShader.SetUniform1f("DivineShader","timer",(gametic+e.FracTic)/GameTicRate); + double str = divi.AlphInter?(clamp((divi.AlphInter.GetValue()-1000.)/6000.,0.,1.)**2.):0.; + PPShader.SetUniform1f("DivineShader","str",str); } - else Shader.SetEnabled(p,"DevastationShader",false); - let deva = AngeryPower(mo.FindInventory("AngeryPower")); + else PPShader.SetEnabled("DevastationShader",false); + let deva = AngeryPower(mo.FindInventory('AngeryPower')); if ( deva ) { - Shader.SetEnabled(p,"DevastationShader",true); - Shader.SetUniform1f(p,"DevastationShader","timer",(gametic+e.FracTic)/GameTicRate); + PPShader.SetEnabled("DevastationShader",true); + PPShader.SetUniform1f("DevastationShader","timer",(gametic+e.FracTic)/GameTicRate); double xstrastr = 1.+max(0,deva.lastpulse-(gametic+e.Fractic))/35.; - Shader.SetUniform1f(p,"DevastationShader","xtrastr",xstrastr**2.); + PPShader.SetUniform1f("DevastationShader","xtrastr",xstrastr**2.); } - else Shader.SetEnabled(p,"DevastationShader",false); - let rage = RagekitPower(mo.FindInventory("RagekitPower")); + else PPShader.SetEnabled("DevastationShader",false); + let rage = RagekitPower(mo.FindInventory('RagekitPower')); if ( rage ) { - Shader.SetEnabled(p,"RagekitShader",true); - Shader.SetUniform1f(p,"RagekitShader","timer",(gametic+e.FracTic)/GameTicRate); + PPShader.SetEnabled("RagekitShader",true); + PPShader.SetUniform1f("RagekitShader","timer",(gametic+e.FracTic)/GameTicRate); double xstrastr = 1.+max(0,rage.lastpulse-(gametic+e.Fractic))/35.; - Shader.SetUniform1f(p,"RagekitShader","xtrastr",xstrastr**2.); + PPShader.SetUniform1f("RagekitShader","xtrastr",xstrastr**2.); } - else Shader.SetEnabled(p,"RagekitShader",false); - let ghost = GhostPower(mo.FindInventory("GhostPower")); - if ( ghost ) Shader.SetEnabled(p,"GhostShader",true); - else Shader.SetEnabled(p,"GhostShader",false); - let sunny = InvinciballPower(mo.FindInventory("InvinciballPower")); + else PPShader.SetEnabled("RagekitShader",false); + let ghost = GhostPower(mo.FindInventory('GhostPower')); + if ( ghost ) PPShader.SetEnabled("GhostShader",true); + else PPShader.SetEnabled("GhostShader",false); + let sunny = InvinciballPower(mo.FindInventory('InvinciballPower')); if ( sunny ) { - Shader.SetEnabled(p,"InvinciShader",true); + PPShader.SetEnabled("InvinciShader",true); double str = max(0,sunny.lastpulse-(gametic+e.Fractic))/35.; - Shader.SetUniform1f(p,"InvinciShader","str",str); + PPShader.SetUniform1f("InvinciShader","str",str); } - else Shader.SetEnabled(p,"InvinciShader",false); - let coat = BarrierPower(mo.FindInventory("BarrierPower")); + else PPShader.SetEnabled("InvinciShader",false); + let coat = BarrierPower(mo.FindInventory('BarrierPower')); if ( coat ) { - Shader.SetEnabled(p,"BarrierShader",true); - Shader.SetUniform1f(p,"BarrierShader","timer",(gametic+e.FracTic)/GameTicRate); + PPShader.SetEnabled("BarrierShader",true); + PPShader.SetUniform1f("BarrierShader","timer",(gametic+e.FracTic)/GameTicRate); } - else Shader.SetEnabled(p,"BarrierShader",false); + else PPShader.SetEnabled("BarrierShader",false); if ( !(mo is 'Demolitionist') ) { - Shader.SetEnabled(p,"WaterWarp",false); - Shader.SetEnabled(p,"LavaWarp",false); - Shader.SetEnabled(p,"SlimeWarp",false); - Shader.SetEnabled(p,"Glitch",false); - Shader.SetEnabled(p,"Grain",false); - Shader.SetEnabled(p,"ZoomBlur",false); + PPShader.SetEnabled("WaterWarp",false); + PPShader.SetEnabled("LavaWarp",false); + PPShader.SetEnabled("SlimeWarp",false); + PPShader.SetEnabled("Glitch",false); + PPShader.SetEnabled("Grain",false); + PPShader.SetEnabled("ZoomBlur",false); return; } let demo = Demolitionist(mo); if ( demo.lastunder == Demolitionist.UNDER_WATER ) { - Shader.SetEnabled(p,"WaterWarp",true); - Shader.SetUniform1f(p,"WaterWarp","timer",(gametic+e.FracTic)/GameTicRate); - Shader.SetUniform1f(p,"WaterWarp","dfact",coat?.25:1.); - Shader.SetUniform3f(p,"WaterWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.)); - + PPShader.SetEnabled("WaterWarp",true); + PPShader.SetUniform1f("WaterWarp","timer",(gametic+e.FracTic)/GameTicRate); + PPShader.SetUniform1f("WaterWarp","dfact",(coat?.25:1.)*underwater_fade_scalar); + PPShader.SetUniform3f("WaterWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.)); } - else Shader.SetEnabled(p,"WaterWarp",false); + else PPShader.SetEnabled("WaterWarp",false); if ( demo.lastunder == Demolitionist.UNDER_LAVA ) { - Shader.SetEnabled(p,"LavaWarp",true); - Shader.SetUniform1f(p,"LavaWarp","timer",(gametic+e.FracTic)/GameTicRate); - Shader.SetUniform1f(p,"LavaWarp","dfact",coat?.25:1.); - Shader.SetUniform3f(p,"LavaWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.)); + PPShader.SetEnabled("LavaWarp",true); + PPShader.SetUniform1f("LavaWarp","timer",(gametic+e.FracTic)/GameTicRate); + PPShader.SetUniform1f("LavaWarp","dfact",(coat?.25:1.)*underwater_fade_scalar); + PPShader.SetUniform3f("LavaWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.)); } - else Shader.SetEnabled(p,"LavaWarp",false); + else PPShader.SetEnabled("LavaWarp",false); if ( demo.lastunder == Demolitionist.UNDER_SLIME ) { - Shader.SetEnabled(p,"SlimeWarp",true); - Shader.SetUniform1f(p,"SlimeWarp","timer",(gametic+e.FracTic)/GameTicRate); - Shader.SetUniform1f(p,"SlimeWarp","dfact",coat?.25:1.); - Shader.SetUniform3f(p,"SlimeWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.)); + PPShader.SetEnabled("SlimeWarp",true); + PPShader.SetUniform1f("SlimeWarp","timer",(gametic+e.FracTic)/GameTicRate); + PPShader.SetUniform1f("SlimeWarp","dfact",(coat?.25:1.)*underwater_fade_scalar); + PPShader.SetUniform3f("SlimeWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.)); } - else Shader.SetEnabled(p,"SlimeWarp",false); + else PPShader.SetEnabled("SlimeWarp",false); int lastdmg = (demo.Health>0)?demo.lastdamage:Random[Flicker](60,80); - int lastdmgtic = (demo.Health>0)?demo.lastdamagetic:(gametic+Random[Flicker](30,20)); - double noiz = min(lastdmg*.09*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.5); - Shader.SetEnabled(p,"Glitch",noiz>0); - Shader.SetEnabled(p,"Grain",noiz>0); + int lastdmgtimer = (demo.Health>0)?demo.lastdamagetimer:(gametic+Random[Flicker](30,20)); + double noiz = min(lastdmg*.09*max(0,(lastdmgtimer-(gametic+e.Fractic))/35.),.5)*blood_fade_scalar; + PPShader.SetEnabled("Glitch",noiz>0); + PPShader.SetEnabled("Grain",noiz>0); if ( noiz > 0 ) { - Shader.SetUniform1f(p,"Glitch","Timer",(gametic+e.FracTic)/GameTicRate); - Shader.SetUniform1f(p,"Grain","Timer",(gametic+e.FracTic)/GameTicRate); - Shader.SetUniform1f(p,"Grain","ni",noiz); - noiz = min(lastdmg*.08*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.8); - Shader.SetUniform1f(p,"Glitch","str1",noiz); - noiz = min(lastdmg*.03*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),3.5); - Shader.SetUniform1f(p,"Glitch","str2",noiz); + PPShader.SetUniform1f("Glitch","Timer",(gametic+e.FracTic)/GameTicRate); + PPShader.SetUniform1f("Grain","Timer",(gametic+e.FracTic)/GameTicRate); + PPShader.SetUniform1f("Grain","ni",noiz); + noiz = min(lastdmg*.08*max(0,(lastdmgtimer-(gametic+e.Fractic))/35.),.8); + PPShader.SetUniform1f("Glitch","str1",noiz); + noiz = min(lastdmg*.03*max(0,(lastdmgtimer-(gametic+e.Fractic))/35.),3.5); + PPShader.SetUniform1f("Glitch","str2",noiz); } - if ( !demo.InStateSequence(demo.CurState,demo.FindState("Dash")) ) + if ( demo.player.ReadyWeapon is 'ItamexHammer' ) { - Shader.SetEnabled(p,"ZoomBlur",false); + let ham = ItamexHammer(demo.player.ReadyWeapon); + PPShader.SetEnabled("WindBlur",ham.bFalling||ham.bSpinning); + if ( ham.bFalling ) + { + double hamfact = clamp(-demo.vel.z/25.,0.,1.); + PPShader.SetUniform1f("WindBlur","Speed",hamfact); + PPShader.SetUniform1f("WindBlur","Fade",hamfact**.5); + PPShader.SetUniform2f("WindBlur","WindDir",(0.,1.)); + } + else if ( ham.bSpinning ) + { + double hamfact = clamp(ham.charge/100.,0.,1.); + PPShader.SetUniform1f("WindBlur","Speed",hamfact); + PPShader.SetUniform1f("WindBlur","Fade",hamfact**.5); + PPShader.SetUniform2f("WindBlur","WindDir",(1.,0.)); + } + } + else PPShader.SetEnabled("WindBlur",false); + if ( !demo.InStateSequence(demo.CurState,demo.FindState('Dash')) ) + { + PPShader.SetEnabled("ZoomBlur",false); return; } - Shader.SetEnabled(p,"ZoomBlur",true); + PPShader.SetEnabled("ZoomBlur",true); Vector3 vel = demo.vel+demo.dashdir*demo.dashboost; double baumpu = max(0.,(demo.bumptic-(gametic+e.Fractic))/35.); vel += demo.dashdir*baumpu; double spd = vel.length(); Vector3 worlddir = vel/spd; - Shader.SetUniform1f(p,"ZoomBlur","Fade",clamp((spd-20.)/60.,0.,1.)); + PPShader.SetUniform1f("ZoomBlur","Fade",clamp((spd-20.)/60.,0.,1.)); double str = min(spd/40.,15.); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(e.ViewPitch,e.ViewAngle,e.ViewRoll); + let [x, y, z] = SWWMUtility.GetAxes(e.ViewAngle,e.ViewPitch,e.ViewRoll); Vector3 reldir = (worlddir dot y, worlddir dot z, worlddir dot x); Vector2 centerspot = (.5+reldir.x*.5,.5+reldir.y*.5); if ( reldir.z < 0 ) @@ -148,7 +176,7 @@ extend Class SWWMHandler centerspot.y = 1.-centerspot.y; str *= -1; } - Shader.SetUniform1f(p,"ZoomBlur","Str",str); - Shader.SetUniform2f(p,"ZoomBlur","CenterSpot",centerspot); + PPShader.SetUniform1f("ZoomBlur","Str",str); + PPShader.SetUniform2f("ZoomBlur","CenterSpot",centerspot); } } diff --git a/zscript/handler/swwm_handler_uitick.zsc b/zscript/handler/swwm_handler_uitick.zsc deleted file mode 100644 index 24e159bf4..000000000 --- a/zscript/handler/swwm_handler_uitick.zsc +++ /dev/null @@ -1,382 +0,0 @@ -// misc. UI Tick stuff - -extend Class SWWMHandler -{ - ui bool didstartmsg; - bool doextramsg; - ui bool didextramsg; - - private ui void MapstartUITick() - { - if ( !didextramsg && doextramsg ) - { - if ( !swwm_nomapmsg ) - { - // angry about phase two - let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - msg.seqname = "SAYAEVIB"; - msg.seqcnt = 2; - msg.delay = 20; - StatusBar.AttachMessage(msg,-1232); - } - didextramsg = true; - } - if ( didstartmsg ) return; - if ( swwm_nomapmsg ) - { - didstartmsg = true; - return; - } - int whichboss = WhichVanillaBossMap(); - if ( bossmap == MAP_DE1M8 ) - { - let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - msg.seqname = "SAYAPHOBOS"; - msg.seqcnt = 4; - msg.delay = 40; - StatusBar.AttachMessage(msg,-1232); - } - else if ( bossmap == MAP_DE2M8 ) - { - let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - msg.seqname = "SAYADEIMOS"; - msg.seqcnt = 4; - msg.delay = 40; - StatusBar.AttachMessage(msg,-1232); - } - else if ( bossmap == MAP_DE3M8 ) - { - let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - msg.seqname = "SAYADIS"; - msg.seqcnt = 4; - msg.delay = 40; - StatusBar.AttachMessage(msg,-1232); - } - else if ( bossmap == MAP_DE4M8 ) - { - let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - msg.seqname = "SAYATHY"; - msg.seqcnt = 4; - msg.delay = 40; - StatusBar.AttachMessage(msg,-1232); - } - else if ( bossmap == MAP_DMAP07 ) - { - let msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - msg.seqname = "SAYADIMPLE"; - msg.seqcnt = 5; - msg.delay = 40; - StatusBar.AttachMessage(msg,-1232); - } - else if ( bossmap == MAP_DMAP30 ) - { - // rampancy check - bool rampancy = false; - for ( int i=0; i 0) && (a.bBossSpawned || a.bCOUNTKILL) ) + a.DamageMobj(self,self,a.Health,'EndMii',DMG_FORCED|DMG_THRUSTLESS); + } + DepleteOrDestroy(); + return; + } +} +Class TyrantWake : Inventory +{ + override void DoEffect() + { + if ( Owner.InStateSequence(Owner.CurState,Owner.SeeState) ) + { + let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + if ( hnd && (hnd.bosstag != "$BT_TYRANT2") ) + { + hnd.bossactors.Clear(); + hnd.initialized = false; + let ti = ThinkerIterator.Create('ID24TyrantBoss2'); + Actor a; + while ( a = Actor(ti.Next()) ) + hnd.bossactors.Push(a); + hnd.bosstag = "$BT_TYRANT2"; + } DepleteOrDestroy(); return; } @@ -53,12 +111,18 @@ extend Class SWWMHandler bool initialized; ui bool ui_initialized; - ui TextureID bbar_f, bbar_r, bbar_d; + ui TextureID bbar_f[2], bbar_r[2], bbar_d[2]; ui double bossalpha; - ui DynamicValueInterpolator ihealth, ihealthr; + ui SmoothLinearValueInterpolator ihealth; + ui SmoothDynamicValueInterpolator ihealthr; ui int thealth, hmax; ui int oldhealth[30]; ui int cummdamage, lastcummtic; // please do not misread + ui Font mSmallFont, mTinyFont; + + bool archangelus_zapped; // skips second phase dialogue + bool origin_zapped; // bonus dlg for ynykron survival + bool origin_postzap; // so the bonus dlg doesn't play twice enum EVanillaMap { @@ -80,9 +144,58 @@ extend Class SWWMHandler MAP_HMAP38, MAP_HMAP40, MAP_HMAP60, - MAP_EVMAP30 // eviternity + MAP_EVMAP30, // eviternity + MAP_EVIIMAP30, // eviternity 2 + MAP_DE1M8B, // "tech gone bad" + MAP_ID24MAP13, // TODO Soul Silo cybies + MAP_ID24MAP14 // TODO Brink tyrants }; + static play void AddBoss( int tid, String tag, bool endgame = false ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd ) return; + hnd.bossactors.Clear(); + hnd.initialized = false; + let ai = level.CreateActorIterator(tid); + foreach ( a:ai ) + { + hnd.bossactors.Push(a); + a.GiveInventory('BossMarker',1); + if ( endgame ) a.GiveInventory('EndgameBossMarker',1); + // boss brain type actors need to set an eye so we can detect when they "aggro" + if ( a is 'BossBrain' ) + { + hnd.bossbrainactor = a; + // look for boss eyes + let eye = Actor(ThinkerIterator.Create('BossEye').Next()); + hnd.bossviewactor = eye; + } + } + if ( hnd.bossactors.Size() == 0 ) return; + hnd.bosstag = (tag!="")?tag:hnd.bossactors[0].GetTag(); + } + + static play void AddBossActor( Actor a, String tag, bool endgame = false ) + { + if ( !a ) return; + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd ) return; + hnd.bossactors.Clear(); + hnd.initialized = false; + hnd.bossactors.Push(a); + a.GiveInventory('BossMarker',1); + hnd.bosstag = (tag!="")?tag:a.GetTag(); + // boss brain type actors need to set an eye so we can detect when they "aggro" + if ( a is 'BossBrain' ) + { + hnd.bossbrainactor = a; + // look for boss eyes + let eye = Actor(ThinkerIterator.Create('BossEye').Next()); + hnd.bossviewactor = eye; + } + } + private clearscope int WhichVanillaBossMap() const { String mapsum = level.GetChecksum(); @@ -90,6 +203,8 @@ extend Class SWWMHandler || (mapsum ~== "97079958C7E89C1908890730B8B9FEB7") || (mapsum ~== "058FB092EA1B70DA1E3CBF501C4A91A1") ) return MAP_DE1M8; + if ( mapsum ~== "A1F105211112747EE50BA520462A471E" ) + return MAP_DE1M8B; if ( mapsum ~== "EFFE91DF41AD41F6973C06F0AD67DDB9" ) return MAP_DE2M8; if ( mapsum ~== "EF128313112110ED6C1549AF96AF26C9" ) @@ -144,67 +259,67 @@ extend Class SWWMHandler return MAP_HMAP60; if ( mapsum ~== "5C5E5C08AF3572F31CF27318679F2B4E" ) return MAP_EVMAP30; + if ( mapsum ~== "CF2B3E2589CA6FBB6EE3E3A09F19BA18" ) + return MAP_EVIIMAP30; + if ( mapsum ~== "7CABD8B043B69996D9777F7070C8BCCE" ) + return MAP_ID24MAP13; + if ( mapsum ~== "A3F7A58FC08C369F1360741A99F1497C" ) + return MAP_ID24MAP14; return MAP_NONE; } - private void VanillaBossSpawn( WorldEvent e, SWWMCombatTracker trk ) + private void VanillaBossSpawn( WorldEvent e ) { - bool upgrademe = swwm_upgradebosses; if ( bossmap == -1 ) bossmap = WhichVanillaBossMap(); - if ( bossmap == MAP_DE1M8 ) + if ( (bossmap == MAP_DE1M8) || (bossmap == MAP_DE1M8B) ) { if ( e.Thing is 'BaronOfHell' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 3; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 3; e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_BRUISERS"; } - bosstag = "$BT_BRUISERS"; } else if ( bossmap == MAP_DE2M8 ) { if ( e.Thing is 'Cyberdemon' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 5; e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_CYBIE"; } - bosstag = "$BT_CYBIE"; } else if ( bossmap == MAP_DE3M8 ) { if ( e.Thing is 'Spidermastermind' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 6; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 6; e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); + bosstag = "$BT_SPIDER"; } - bosstag = "$BT_SPIDER"; } else if ( bossmap == MAP_DE4M8 ) { if ( e.Thing is 'Spidermastermind' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 4; e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_SPIDER2"; } - bosstag = "$BT_SPIDER2"; } else if ( bossmap == MAP_DMAP07 ) { if ( (e.Thing is 'Fatso') || (e.Thing is 'Arachnotron') ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 2; e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_DIMPLE"; } - bosstag = "$BT_DIMPLE"; } else if ( bossmap == MAP_DMAP30 ) { @@ -212,58 +327,89 @@ extend Class SWWMHandler { bossbrainactor = e.Thing; bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 40; // goodbye, instakills - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 40; // goodbye, instakills e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); + bosstag = "$BT_IOS"; } if ( e.Thing is 'BossEye' ) { bossviewactor = e.Thing; e.Thing.GiveInventory('IconMessage',1); } - bosstag = "$BT_IOS"; } else if ( bossmap == MAP_DLVL08 ) { if ( e.Thing is 'Cyberdemon' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_CYBIE2"; + } + } + else if ( bossmap == MAP_ID24MAP13 ) + { + if ( e.Thing is 'Cyberdemon' ) + { + bossactors.Push(e.Thing); + e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_CYBIE3"; + } + } + else if ( bossmap == MAP_ID24MAP14 ) + { + if ( e.Thing is 'ID24TyrantBoss1' ) + { + bossactors.Push(e.Thing); + e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_TYRANT"; + } + else if ( e.Thing is 'ID24Tyrant' ) + { + e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.GiveInventory('BossMarker',1); + } + else if ( e.Thing is 'ID24TyrantBoss2' ) + { + e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.GiveInventory('BossMarker',1); + e.Thing.GiveInventory('TyrantWake',1); + } + else if ( e.Thing is 'Cyberdemon' ) + { + e.Thing.StartHealth = e.Thing.Health *= 4; e.Thing.GiveInventory('BossMarker',1); } - bosstag = "$BT_CYBIE2"; } else if ( bossmap == MAP_HE1M8_HE4M8 ) { if ( e.Thing is 'IronLich' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 4; e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_LICHES"; } - bosstag = "$BT_LICHES"; } else if ( bossmap == MAP_HE2M8_HE5M8 ) { if ( e.Thing is 'Minotaur' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 3; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 3; e.Thing.GiveInventory('BossMarker',1); + bosstag = "$BT_MINOTAUR"; } - bosstag = "$BT_MINOTAUR"; } else if ( bossmap == MAP_HE3M8 ) { if ( e.Thing is 'Sorcerer1' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 2; bosstag = "$BT_DSPARIL"; e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); @@ -274,8 +420,7 @@ extend Class SWWMHandler bossactors.Clear(); initialized = false; bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 8; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 8; bosstag = "$BT_DSPARIL2"; e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); @@ -287,8 +432,7 @@ extend Class SWWMHandler if ( e.Thing is 'ClericBoss' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 2; bosstag = "$BT_CLERIC"; e.Thing.GiveInventory('BossMarker',1); } @@ -298,8 +442,7 @@ extend Class SWWMHandler if ( e.Thing is 'FighterBoss' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 2; bosstag = "$BT_FIGHTER"; e.Thing.GiveInventory('BossMarker',1); } @@ -309,8 +452,7 @@ extend Class SWWMHandler if ( e.Thing is 'MageBoss' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 2; bosstag = "$BT_MAGE"; e.Thing.GiveInventory('BossMarker',1); } @@ -320,8 +462,7 @@ extend Class SWWMHandler if ( e.Thing is 'Dragon' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 4; bosstag = "$BT_DRAGON"; e.Thing.GiveInventory('BossMarker',1); } @@ -331,8 +472,7 @@ extend Class SWWMHandler if ( e.Thing is 'Heresiarch' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 8; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 8; bosstag = "$BT_HERESIARCH"; e.Thing.GiveInventory('BossMarker',1); } @@ -342,8 +482,7 @@ extend Class SWWMHandler if ( e.Thing is 'Korax' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 10; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 10; bosstag = "$BT_KORAX"; e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); @@ -354,8 +493,7 @@ extend Class SWWMHandler if ( (e.Thing is 'FighterBoss') || (e.Thing is 'ClericBoss') || (e.Thing is 'MageBoss') ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 4; bosstag = "$BT_DEATHKINGS"; initialized = true; // healthbar shows from the start e.Thing.GiveInventory('BossMarker',1); @@ -364,51 +502,126 @@ extend Class SWWMHandler } else if ( bossmap == MAP_EVMAP30 ) { - if ( e.Thing.GetClassName() == "Archangelus" ) + if ( e.Thing.GetClassName() == 'Archangelus' ) { bossactors.Push(e.Thing); bossviewactor = e.Thing; bosstag = "$BT_ARCHANGELUS"; e.Thing.GiveInventory('ArchangelusMessage',1); } - else if ( e.Thing.GetClassName() == "ArchangelusA" ) + else if ( e.Thing.GetClassName() == 'ArchangelusA' ) { // first phase bossactors.Clear(); bossviewactor = null; initialized = false; bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 5; bosstag = "$BT_ARCHANGELUS"; e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); } - else if ( e.Thing.GetClassName() == "ArchangelusB" ) + else if ( e.Thing.GetClassName() == 'ArchangelusB' ) { // second phase bossactors.Clear(); bossviewactor = null; initialized = false; bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5; - if ( trk ) trk.bBOSS = true; + e.Thing.StartHealth = e.Thing.Health *= 5; bosstag = "$BT_ARCHANGELUS"; e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); - doextramsg = true; + if ( !archangelus_zapped ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EVIB"); } } + else if ( bossmap == MAP_EVIIMAP30 ) + { + if ( (e.Thing.GetClassName() == 'The_Origin_Phase_1_Spawner') || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_1_Spawner') ) + { + bossactors.Push(e.Thing); + bossviewactor = e.Thing; + bosstag = "$BT_ORIGIN"; + // hack to avoid "all clear" between phases + level.total_monsters += 3; + } + else if ( (e.Thing.GetClassName() == 'The_Origin_Phase_1') || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_1') ) + { + // first phase + bossactors.Clear(); + bossviewactor = null; + initialized = false; + bossactors.Push(e.Thing); + e.Thing.StartHealth = e.Thing.Health *= 5; + bosstag = "$BT_ORIGIN"; + e.Thing.GiveInventory('BossMarker',1); + e.Thing.GiveInventory('EndgameBossMarker',1); + // undo the hack (part 1) + level.total_monsters--; + } + else if ( (e.Thing.GetClassName() == 'The_Origin_Phase_2') || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_2') ) + { + // second phase + bossactors.Clear(); + bossviewactor = null; + initialized = false; + bossactors.Push(e.Thing); + e.Thing.StartHealth = e.Thing.Health *= 5; + bosstag = "$BT_ORIGIN"; + e.Thing.GiveInventory('BossMarker',1); + e.Thing.GiveInventory('EndgameBossMarker',1); + if ( origin_zapped ) + { + origin_postzap = true; + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2N"); + } + else SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2L"); + // undo the hack (part 2) + level.total_monsters--; + } + else if ( (e.Thing.GetClassName() == 'The_Origin_Phase_3') || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_3') ) + { + // third phase + bossactors.Clear(); + bossviewactor = null; + initialized = false; + bossactors.Push(e.Thing); + e.Thing.StartHealth = e.Thing.Health *= 5; + bosstag = "$BT_ORIGIN"; + e.Thing.GiveInventory('BossMarker',1); + e.Thing.GiveInventory('EndgameBossMarker',1); + if ( origin_zapped ) + { + if ( origin_postzap ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2O"); + else SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2N"); + } + else SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2M"); + // undo the hack (part 3) + level.total_monsters--; + } + } + if ( ccloaded && (e.Thing.GetClassName() == 'CCards_Boss_Romero') ) + { + bossactors.Push(e.Thing); + e.Thing.StartHealth = e.Thing.Health *= 10; + bosstag = "ROM3R-0.666"; + e.Thing.GiveInventory('BossMarker',1); + e.Thing.GiveInventory('EndgameBossMarker',1); + e.Thing.GiveInventory('ROM3R0Message',1); + e.Thing.GiveInventory('ROM3R0Death',1); + } } private void VanillaBossTick() { if ( initialized ) return; // wait until bosses are active - for ( int i=0; i 0) && (gametic < lastcummtic+150) ) { double calph = clamp(((lastcummtic+150)-gametic)/50.,0.,1.); string dnum = String.Format("%d",cummdamage); - Screen.DrawText(smallfont,Font.CR_RED,vpos.x+300-smallfont.StringWidth(dnum),vpos.y-(smallfont.GetHeight()+2),dnum,DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha*calph); + Screen.DrawText(mTinyFont,Font.CR_RED,(vpos.x+intsz)-(mTinyFont.StringWidth(dnum)+2),vpos.y-mTinyFont.GetHeight(),dnum,DTA_VirtualWidthF,bar.ss1.x,DTA_VirtualHeightF,bar.ss1.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha*calph); } - Screen.DrawText(smallfont,Font.CR_WHITE,vpos.x,vpos.y-(smallfont.GetHeight()+2),StringTable.Localize(swwm_funtags?(bosstag.."_FUN"):bosstag),DTA_VirtualWidthF,bar.ss.x,DTA_VirtualHeightF,bar.ss.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha); + String bname = bosstag; + if ( (bname.Left(1) == "$") && swwm_funtags ) + { + String fun = bname.."_FUN"; + if ( !(StringTable.Localize(fun) ~== fun.Mid(1)) ) bname = fun; + } + Screen.DrawText(mSmallFont,Font.CR_WHITE,vpos.x+3,vpos.y-mSmallFont.GetHeight(),StringTable.Localize(bname),DTA_VirtualWidthF,bar.ss1.x,DTA_VirtualHeightF,bar.ss1.y,DTA_KeepRatio,true,DTA_Alpha,bossalpha); } // can't use this until I actually figure out how to make those walls damageable diff --git a/zscript/handler/swwm_handler_worldload.zsc b/zscript/handler/swwm_handler_worldload.zsc index 6eca72a1c..56678f9ac 100644 --- a/zscript/handler/swwm_handler_worldload.zsc +++ b/zscript/handler/swwm_handler_worldload.zsc @@ -17,30 +17,71 @@ Class RampancyLogonDummy : Actor } } +// this is used to speed up iteration through sector thinglists within a specific area +Class SectorBounds +{ + Vector4 bounds; + int portalgroup; + + clearscope bool PointInSectorBounds( Vector2 p, int pg = -1 ) const + { + if ( (pg >= 0) && (level.GetPortalGroupCount() > 0) && (pg != portalgroup) ) + p += level.GetDisplacement(pg,portalgroup); + if ( p.x < bounds.x ) return false; + if ( p.y < bounds.y ) return false; + if ( p.x > bounds.z ) return false; + if ( p.y > bounds.w ) return false; + return true; + } + + clearscope bool BoxInSectorBounds( Vector2 p, double r, int pg = -1 ) const + { + if ( (pg >= 0) && (level.GetPortalGroupCount() > 0) && (pg != portalgroup) ) + p += level.GetDisplacement(pg,portalgroup); + if ( p.x+r < bounds.x ) return false; + if ( p.y+r < bounds.y ) return false; + if ( p.x-r > bounds.z ) return false; + if ( p.y-r > bounds.w ) return false; + return true; + } +} + extend Class SWWMHandler { - // list contains a sector that belongs to each portal group - // used to ease some portal-aware functions - Array psectors; + bool maphaskeys; - // for minimap - Array ffsectors; + bool nogroundanchor; + int allclearsector; - Array > mapkeys; + // weird optimization + Array sbounds; // level end stats override void WorldUnloaded( WorldEvent e ) { - let ti = ThinkerIterator.Create("SWWMStats",Thinker.STAT_STATIC); + let ti = ThinkerIterator.Create('SWWMStats',Thinker.STAT_STATIC); SWWMStats s; while ( s = SWWMStats(ti.Next()) ) { int clust = 0; bool secret = false; - if ( SWWMUtility.IsEviternity() ) + if ( SWWMUtility.IsEviternityTwo() ) + { + // clusters have to be remapped here + let clus = level.cluster; + if ( clus == 5 ) clust = 1; + else if ( (clus == 6) || (clus == 13) ) clust = 2; + else if ( (clus == 7) || (clus == 14) ) clust = 3; + else if ( (clus == 8) || (clus == 15) ) clust = 4; + else if ( (clus == 9) || (clus == 16) ) clust = 5; + else if ( (clus == 10) || (clus == 17) ) clust = 6; + else if ( (clus == 11) || (clus == 12) || (clus == 18) || (clus == 19) ) clust = 7; + } + else if ( SWWMUtility.IsEviternity() ) { // we have to do some heavy lifting here because episodes don't match clusters - if ( level.levelnum <= 5 ) clust = 1; + if ( level.levelnum <= 0 ) {} + else if ( level.levelnum <= 5 ) clust = 1; else if ( level.levelnum <= 10 ) clust = 2; else if ( level.levelnum <= 15 ) clust = 3; else if ( level.levelnum <= 20 ) clust = 4; @@ -53,31 +94,36 @@ extend Class SWWMHandler else clust = 8; } } + else if ( SWWMUtility.IsLegacyOfRust() ) + { + // clusters must be manually assigned + if ( level.levelnum <= 0 ) {} + if ( (level.levelnum <= 7) || (level.levelnum == 15) ) clust = 28; + else if ( (level.levelnum <= 14) || (level.levelnum == 16) ) clust = 29; + if ( (level.levelnum == 15) || (level.levelnum == 16) ) + secret = true; + } else { if ( (gameinfo.gametype&GAME_DOOM) && ((level.cluster == 9) || (level.cluster == 10)) ) secret = true; clust = level.cluster; } - // avoid cluster zero (ignores test maps and such) - if ( clust != 0 ) + int csiz = s.clustervisit.Size(); + if ( csiz == 0 ) { - int csiz = s.clustervisit.Size(); - if ( csiz == 0 ) - { - s.clustervisit.Push(clust); - s.secretdone.Push(secret); - } - else if ( s.clustervisit[csiz-1] != clust ) - { - s.clustervisit.Push(clust); - s.secretdone.Push(secret|s.secretdone[csiz-1]); - } - s.AddLevelStats(); - s.lastcluster = level.cluster; + s.clustervisit.Push(clust); + s.secretdone.Push(secret); } + else if ( s.clustervisit[csiz-1] != clust ) + { + s.clustervisit.Push(clust); + s.secretdone.Push(secret|s.secretdone[csiz-1]); + } + s.AddLevelStats(); + s.lastcluster = level.cluster; // nazi cleanup - let ti = ThinkerIterator.Create("Actor"); + let ti = ThinkerIterator.Create('Actor'); Actor a; bool hasnazis = false; bool livenazis = false; @@ -97,12 +143,15 @@ extend Class SWWMHandler if ( s.nazicleanup == 3 ) SWWMUtility.MarkAchievement("trash",s.myplayer); } + // re-enable retries after Eviternity 2 MAP33 + if ( level.GetChecksum() ~== "442504BA06E5EFB6C7EBD452E159522D" ) + gdat.disablerevive = false; // reset score on dead players (death exit™) for ( int i=0; i 0) && !(level.clusterflags&LevelLocals.CLUSTER_HUB) ) + if ( maphaskeys && !(level.clusterflags&LevelLocals.CLUSTER_HUB) ) { bool collected = false; - for ( int i=0; i lines; - lines.Clear(); - data.Split(lines,"\n"); - bool valid = false; - for ( int j=0; j spl; - spl.Clear(); - lines[j].Split(spl," ",TOK_SKIPEMPTY); - // check game string (if any) - if ( spl.Size() > 2 ) - { - if ( (spl[2] ~== "DOOM") && !(gameinfo.gametype&GAME_Doom) ) continue; - else if ( (spl[2] ~== "HERETIC") && !(gameinfo.gametype&GAME_Heretic) ) continue; - else if ( (spl[2] ~== "HEXEN") && !(gameinfo.gametype&GAME_Hexen) ) continue; - else if ( (spl[2] ~== "STRIFE") && !(gameinfo.gametype&GAME_Strife) ) continue; - else if ( (spl[2] ~== "CHEX") && !(gameinfo.gametype&GAME_Chex) ) continue; - } - // valid lock, prepare it - let li = new("LIEntry"); - li.locknumber = spl[1].ToInt(); - li.hascolor = false; - // see if there's a Mapcolor defined - int k = j+1; - for ( int k=j+2; k sb.bounds.z ) + sb.bounds.z = l.v1.p.x; + if ( l.v2.p.x > sb.bounds.z ) + sb.bounds.z = l.v2.p.x; + if ( l.v1.p.y > sb.bounds.w ) + sb.bounds.w = l.v1.p.y; + if ( l.v2.p.y > sb.bounds.w ) + sb.bounds.w = l.v2.p.y; } + sbounds[s.Index()] = sb; + } + } + + private void MapStartDialogues() + { + int whichboss = WhichVanillaBossMap(); + switch ( whichboss ) + { + case MAP_DE1M8: + case MAP_DE1M8B: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.PHOBOS"); + break; + case MAP_DE2M8: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.DEIMOS"); + break; + case MAP_DE3M8: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.DIS"); + break; + case MAP_DE4M8: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.THY"); + break; + case MAP_DMAP07: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.DIMPLE"); + break; + case MAP_DMAP30: + if ( FindClass('Robot_BossBrain','Actor') ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.RAMPANCY"); + else + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.IOS"); + break; + case MAP_DLVL08: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.NERVE"); + break; + case MAP_EVMAP30: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EVIA"); + break; + case MAP_EVIIMAP30: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2K"); + break; + case MAP_HE1M8_HE4M8: + if ( level.mapname ~== "E1M8" ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue.MAW"); + else SendInterfaceEvent(consoleplayer,"swwmsetdialogue.HEADS"); + break; + case MAP_HE2M8_HE5M8: + if ( level.mapname ~== "E2M8" ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue.PORTALS"); + else SendInterfaceEvent(consoleplayer,"swwmsetdialogue.BULLS"); + break; + case MAP_HE3M8: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.DSPARIL"); + break; + case MAP_HMAP38: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.CLERIC"); + break; + case MAP_HMAP36: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.FIGHTER"); + break; + case MAP_HMAP37: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.MAGE"); + break; + case MAP_HMAP12: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.HYPO"); + break; + case MAP_HMAP40: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.KORAX"); + break; + case MAP_HMAP23_HMAP27_HMAP48_HMAP55: + if ( level.mapname ~== "MAP48" ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue.CONSTABLE"); + break; + case MAP_HMAP60: + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.DEATHKINGS"); + break; + case MAP_NONE: + String csum = level.GetChecksum(); + // SIGIL E5M8 + if ( (csum ~== "3D72FD17F36D2D43FD9A21E6E57EE357") + || (csum ~== "09B30C9DA9D73D3D5A709502FBB947AA") + || (csum ~== "6EAD80DA1F30B4B3546FA294EEF9F87C") ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.SIGIL"); + // SIGIL 2 E6M8 + if ( csum ~== "5BA3D00F6B64F6268E11C6851D47ECBF" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.SIGIL2"); + // Doom 2 MAP11 + else if ( (csum ~== "73D9E03CEE7BF1A97EFD2EAD86688EF8") + || (csum ~== "F4F2A769609988837458772AAE99008C") + || (csum ~== "DF6A001A6C42DB5CCA599EE5883B294A") ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.CIRCLE"); + // Doom 2 MAP20 + else if ( (csum ~== "8898F5EC9CBDCD98019A1BC1BF892A8A") + || (csum ~== "CC53CFFCB30E873669AA2F09DA0D3566") ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.GOTCHA"); + // Eviternity + // MAP05 + else if ( csum ~== "33B8501B10CE5E2555C03725F765A914" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.DMN"); + // MAP10 + else if ( csum ~== "9E83602D325677B8D7C3BC44BEF9B03F" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.CRE"); + // MAP15 + else if ( csum ~== "CA40E6DDAB6B5C924CDC36B1F851421E" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.CRY"); + // MAP20 + else if ( csum ~== "F34B3FD4D13AC763469A8E0D7379B9D0" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.CON"); + // MAP25 + else if ( csum ~== "196BC735473C593F924A59B238574C35" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.SLA"); + // Eviternity 2 + // MAP01 + else if ( csum ~== "8EB38D5289C47BB68D64F2832EFA096D" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2A"); + // MAP05 + else if ( csum ~== "457CAF066596B6AF59F7273C8D5461B7" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2E"); + // MAP10 + else if ( csum ~== "066653E60ACC99D7B8EB5EBBFEF4F11A" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2F"); + // MAP15 + else if ( csum ~== "8FB3513B313002B1287610F545F0FDFF" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2G"); + // MAP20 + else if ( csum ~== "641A394145EF638B972E87C4CDFB34EF" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2H"); + // MAP25 + else if ( csum ~== "67A80E78AEBA38AB0A0DD0616040F4F2" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2I"); + // MAP33 + else if ( csum ~== "442504BA06E5EFB6C7EBD452E159522D" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2P"); + // Deathkings + // Blight + else if ( csum ~== "E3EFB0156A20ADF2DF00915A0EA85DF5" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.BLIGHT"); + // Nave + else if ( csum ~== "E2B5D1400279335811C1C1C0B437D9C8" ) + SendInterfaceEvent(consoleplayer,"swwmsetdialogue.NAVE"); + break; } } override void WorldLoaded( WorldEvent e ) { + // session globals must be loaded here + // (if we do it in OnRegister the existing thinker might not have been deserialized yet) + gdat = SWWMGlobals.Get(); if ( e.IsReopen ) return; - if ( gamestate != GS_TITLELEVEL ) AddOneliner("mapstart",3); + PrecalculateSectorBounds(); + MapStartDialogues(); + if ( gamestate != GS_TITLELEVEL ) + { + if ( (level.GetChecksum() ~== "D0E5ECD94BD38DF33F25515C00148693") + || (level.GetChecksum() ~== "D20297AE8447232F6DBE4851E3104668") + || (level.GetChecksum() ~== "EBBB8663AD4AB22294A8A1D211A026CD") ) + { + if ( !AddOneliner("nutstart",3) ) + AddOneliner("mapstart",3); + } + else AddOneliner("mapstart",3); + } if ( level.levelname ~== "Modder Test Map" ) { level.ReplaceTextures("-noflat-","kinstile",0); S_ChangeMusic("music/CARDISH1.XM"); + AddBoss(6666,"$BT_DOOMTEST"); // for testing boss healthbars } // doom vacation map01 hackaround for OPEN script not letting us // change certain line specials in levelpostprocessor because - // HOLY FUCK IS EVERYTHING SHIT SOMETIMES + // ACS is just mindbogglingly weird like that, seriously if ( (level.GetChecksum() ~== "F286BABF0D152259CD6B996E8920CA70") || (level.GetChecksum() ~== "A52BD2038CF814101AAB7D9C78F9ACE2") ) - level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DVACATION_UNFUCK')); - // DUMP 2 and 3 hackaround for the "X maps to go" text being actually readable - else if ( level.GetChecksum() ~== "BC2878CDB82712598A2196807D099C40" ) - level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DUMP2_HUB')); - else if ( level.GetChecksum() ~== "7E77AA43AF7ACDBC52171E9EE2BF98D0" ) - level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DUMP3_HUB')); + level.ExecuteSpecial(ACS_Execute,null,null,false,-Int('DVACATION_UNSCREW')); // rampancy boss brain fix (repeatedly triggering "map clear") - let ti = ThinkerIterator.Create("Actor"); + let ti = ThinkerIterator.Create('Actor'); Actor a, brain; bool haseye = false; while ( a = Actor(ti.Next()) ) { - if ( a.GetClassName() == "Robot_BossEye" ) + if ( a.GetClassName() == 'Robot_BossEye' ) haseye = true; - if ( a.GetClassName() == "Robot_BossBrain" ) + if ( a.GetClassName() == 'Robot_BossBrain' ) brain = a; } if ( haseye && brain ) @@ -261,130 +438,110 @@ extend Class SWWMHandler brain.bCOUNTKILL = true; level.total_monsters++; // while we're at it - Actor.Spawn("RampancyLogonDummy"); + Actor.Spawn('RampancyLogonDummy'); } - // setup cached lockdefs data - let cli = SWWMCachedLockInfo.GetInstance(); - if ( cli.ent.Size() == 0 ) SetupLockdefsCache(cli); - // keep a list of sectors containing 3D floors, for use by the minimap - // also does the same for the portal group list - ffsectors.Clear(); - psectors.Clear(); - for ( int i=0; i skipme; - skipme.Clear(); + // Eviternity II MAP33 fix. Player movement physics need to + // have ground anchoring disabled, as it will make some + // segments impossible due to the player's feet immediately + // touching the instant-kill lava + if ( level.GetChecksum() ~== "442504BA06E5EFB6C7EBD452E159522D" ) + { + nogroundanchor = true; + allclearsector = 18414; // only check all-clear if the player is standing in this sector + gdat.disablerevive = true; // ONE TRY + } + Array exits; + Array exittypes; + exits.Clear(); + exittypes.Clear(); // find exit lines, and use lines that aren't exits - for ( int i=0; i skipme; + skipme.Clear(); + for ( int i=0; i con; con.Clear(); con.Push(l); int found; - if ( l.frontsector ) + do { - do + found = 0; + for ( int j=0; j 0 ); - } - if ( l.backsector ) - { - do - { - found = 0; - for ( int j=0; j 0 ); } + while ( found > 0 ); Vector3 lpos = (0,0,0); - for ( int i=0; i alreadygold; - // attempt to optimize Ynykron singularity suction - Array suckableactors; - - // for displaying beam-type projectiles - Array beams; + // legendary monster markers (for the "has mutated" message) + Array legtrack; override void WorldThingRevived( WorldEvent e ) { if ( profiling ) ProfileTick(); - // reattach combat tracker - if ( !swwm_notrack && (e.Thing.bSHOOTABLE || e.Thing.bISMONSTER) && !(e.Thing is 'LampMoth') && !(e.Thing is 'CompanionLamp') ) - SWWMCombatTracker.Spawn(e.Thing); // reattach headpats if ( SWWMUtility.IdentifyingDog(e.Thing) || SWWMUtility.IdentifyingCaco(e.Thing) || SWWMUtility.IdentifyingDrug(e.Thing) || SWWMUtility.IdentifyingDoubleBoi(e.Thing) ) { // you can pet the dog, and you can also pet the caco (and friends) - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; } if ( !(e.Thing is 'PlayerPawn') ) @@ -52,32 +46,32 @@ extend Class SWWMHandler return false; } - static bool ShouldSpawnGold() + static int ShouldSpawnGold() { int totalneeded = 0; // check "free space" in player inventories for ( int i=0; i 0); + return max(0,totalneeded); } override void WorldThingDied( WorldEvent e ) { if ( profiling ) ProfileTick(); - if ( e.Thing.default.bISMONSTER && ((e.Thing.default.bBOSS) || (e.Thing.GetSpawnHealth() >= 1000) || e.Thing.FindInventory("BossMarker")) && (alreadygold.Find(e.Thing) == alreadygold.Size()) ) + if ( e.Thing.default.bISMONSTER && e.Thing.default.bCOUNTKILL && ((e.Thing.default.bBOSS) || (e.Thing.GetSpawnHealth() >= 1000) || e.Thing.FindInventory('BossMarker')) && (alreadygold.Find(e.Thing) == alreadygold.Size()) ) { // make sure we can't farm drops from revivable enemies // (or cause some things to spam-spawn gold shells) @@ -89,13 +83,15 @@ extend Class SWWMHandler let ti = ThinkerIterator.Create(e.Thing.GetClass()); while ( ti.Next() ) dropweight++; int minchance = max(1,6-(e.Thing.GetSpawnHealth()/1000)); - dropweight = max(minchance,dropweight/4); + dropweight = max(minchance,dropweight/2); // make sure the gold shell is "worth spawning", too - if ( !Random[GoldDrop](0,dropweight) && ShouldSpawnGold() ) + // (also, chance should be reduced as you acquire more shells) + int gchance = int(ceil(ShouldSpawnGold()/2.)); + if ( !Random[GoldDrop](0,dropweight) && Random[GoldDrop](0,gchance) ) { - let g = Actor.Spawn("GoldShell",e.Thing.Vec3Offset(0,0,e.Thing.Height/2)); - double ang = FRandom[SpareShells](0,360); - g.vel.xy = (cos(ang),sin(ang))*FRandom[SpareShells](.4,.8); + let g = Actor.Spawn('GoldShell',e.Thing.Vec3Offset(0,0,e.Thing.Height/2.)); + double ang = FRandom[SpareShells](0.,360.); + g.vel.xy = Actor.AngleToVector(ang,FRandom[SpareShells](.4,.8)); g.vel.z = FRandom[SpareShells](2.,4.); } } @@ -117,14 +113,21 @@ extend Class SWWMHandler level.ExecuteSpecial(Door_Open,e.Thing,null,false,10,16); // keep the portal closed, you can't leave unless you // kill everyone else - let t = new("UglyBoyGetsFuckedUp"); + let t = new('KoraxYeeted'); t.ChangeStatNum(Thinker.STAT_USER); } + // Archangelus instakill + if ( (e.Thing.GetClassName() == 'ArchangelusA') && (e.Thing.DamageType == 'Ynykron') ) + { + // this will skip the second phase dialogue + // (note that you can only have an Ynykron in this fight by cheating, tho) + archangelus_zapped = true; + } // Archangelus death - if ( e.Thing.GetClassName() == "ArchangelusB" ) + if ( e.Thing.GetClassName() == 'ArchangelusB' ) { // kill all other monsters - let ti = ThinkerIterator.Create("Actor"); + let ti = ThinkerIterator.Create('Actor'); Actor a; while ( a = Actor(ti.Next()) ) { @@ -132,35 +135,19 @@ extend Class SWWMHandler a.DamageMobj(e.Thing,e.Thing,a.Health,'EndMii',DMG_FORCED|DMG_THRUSTLESS); } } + // Origin instakill + if ( ((e.Thing.GetClassName() == 'The_Origin_Phase_1') || (e.Thing.GetClassName() == 'The_Origin_Phase_2') + || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_1') || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_2')) + && (e.Thing.DamageType == 'Ynykron') ) + { + // this will trigger special dialogue on the next phase + origin_zapped = true; + } if ( swwm_partytime ) { - let pt = Actor.Spawn("PartyTime",e.Thing.pos); + let pt = Actor.Spawn('PartyTime',e.Thing.pos); pt.target = e.Thing; } - // force insert gib animations on some vanilla Doom monsters - int gibhealth = e.Thing.GetGibHealth(); - bool gotgibbed = (!e.Thing.bDONTGIB && ((e.Inflictor && e.Inflictor.bEXTREMEDEATH) || (e.DamageSource && e.DamageSource.bEXTREMEDEATH) || (e.DamageType == 'Extreme') || (e.Thing.Health < gibhealth)) && (!e.Inflictor || !e.Inflictor.bNOEXTREMEDEATH) && (!e.DamageSource || !e.DamageSource.bNOEXTREMEDEATH)); - if ( !gotgibbed ) - { - if ( profiling ) ProfileTock(PT_WORLDTHINGDIED); - return; - } - if ( (e.Thing.GetClass() == "Demon") || (e.Thing.GetClass() == "Spectre") ) - ExtraGibDeaths.GibThis(e.Thing,"DemonXDeath"); - else if ( e.Thing.GetClass() == "HellKnight" ) - ExtraGibDeaths.GibThis(e.Thing,"KnightXDeath"); - else if ( e.Thing.GetClass() == "BaronOfHell" ) - ExtraGibDeaths.GibThis(e.Thing,"BaronXDeath"); - else if ( e.Thing.GetClass() == "Cacodemon" ) - ExtraGibDeaths.GibThis(e.Thing,"CacoXDeath"); - else if ( e.Thing.GetClass() == "Revenant" ) - ExtraGibDeaths.GibThis(e.Thing,"BonerXDeath"); - else if ( e.Thing.GetClass() == "Archvile" ) - ExtraGibDeaths.GibThis(e.Thing,"VileXDeath"); - else if ( e.Thing.GetClass() == "Arachnotron" ) - ExtraGibDeaths.GibThis(e.Thing,"ArachXDeath"); - else if ( e.Thing.GetClass() == "Fatso" ) - ExtraGibDeaths.GibThis(e.Thing,"FatsoXDeath"); if ( profiling ) ProfileTock(PT_WORLDTHINGDIED); } @@ -173,38 +160,22 @@ extend Class SWWMHandler else if ( a is 'RedSkull' ) a.SetTag("$T_REDSKULL"); else if ( a is 'BlueSkull' ) a.SetTag("$T_BLUESKULL"); else if ( a is 'YellowSkull' ) a.SetTag("$T_YELLOWSKULL"); - else if ( a is 'KeyYellow' ) a.SetTag("$T_YELLOWKEY"); - else if ( a is 'KeyGreen' ) a.SetTag("$T_GREENKEY"); - else if ( a is 'KeyBlue' ) a.SetTag("$T_BLUEKEY"); - else if ( a.GetClassName() == 'KeyRed' ) a.SetTag("$T_REDKEY"); - else if ( a is 'KeySteel' ) a.SetTag("$T_KEYSTEEL"); - else if ( a is 'KeyCave' ) a.SetTag("$T_KEYCAVE"); - else if ( a is 'KeyAxe' ) a.SetTag("$T_KEYAXE"); - else if ( a is 'KeyFire' ) a.SetTag("$T_KEYFIRE"); - else if ( a is 'KeyEmerald' ) a.SetTag("$T_KEYEMERALD"); - else if ( a is 'KeyDungeon' ) a.SetTag("$T_KEYDUNGEON"); - else if ( a is 'KeySilver' ) a.SetTag("$T_KEYSILVER"); - else if ( a is 'KeyRusted' ) a.SetTag("$T_KEYRUSTED"); - else if ( a is 'KeyHorn' ) a.SetTag("$T_KEYHORN"); - else if ( a is 'KeySwamp' ) a.SetTag("$T_KEYSWAMP"); - else if ( a is 'KeyCastle' ) a.SetTag("$T_KEYCASTLE"); + else if ( a.GetClassName() == 'KeyRed' ) a.SetTag("$T_KEYRED"); } // tempfix keys have no tags static void KeyTagFix( Actor a ) { - let hnd = SWWMHandler(Find("SWWMHandler")); + let hnd = SWWMHandler(Find('SWWMHandler')); if ( hnd ) hnd.DoKeyTagFix(a); } // copies the floatbob of overlapping identical items, so it doesn't look weird private void CopyFloatBob( Actor a ) { - let bt = BlockThingsIterator.Create(a,16); - while ( bt.Next() ) + for ( Actor t=a.CurSector.thinglist; t; t=t.snext ) { - let t = bt.Thing; - if ( !t || (t == a) || !(t is 'Inventory') || !(t.spawnpoint ~== a.spawnpoint) ) continue; + if ( (t == a) || !(t is 'Inventory') || !(t.spawnpoint ~== a.spawnpoint) ) continue; a.floatbobphase = t.floatbobphase; a.angle = t.angle; // also copy angle break; @@ -232,19 +203,6 @@ extend Class SWWMHandler // for gibber throttling if ( e.Thing is 'mkBloodDrop' ) blods_realcnt--; else if ( e.Thing is 'mkFlyingGib' ) meats_realcnt--; - if ( !e.Thing.default.bSHOOTABLE && !e.Thing.default.bMISSILE && !(e.Thing is 'Inventory') && !SWWMUtility.IsBeamProj(e.Thing) ) - { - if ( profiling ) ProfileTock(PT_WORLDTHINGDESTROYED); - return; - } - // remove from suckables - int pos = suckableactors.Find(e.Thing); - if ( pos < suckableactors.Size() ) - suckableactors.Delete(pos); - // remove from beams - pos = beams.Find(e.Thing); - if ( pos < beams.Size() ) - beams.Delete(pos); if ( profiling ) ProfileTock(PT_WORLDTHINGDESTROYED); } @@ -262,131 +220,160 @@ extend Class SWWMHandler IWantDieSpawn(e); if ( (e.Thing is 'TeleportDest') || (e.Thing is 'BossTarget') ) { - let d = Actor.Spawn("SWWMTeleportDest",e.Thing.pos); + let d = Actor.Spawn('SWWMTeleportDest',e.Thing.pos); d.bNOGRAVITY = e.Thing.bNOGRAVITY; } if ( e.Thing is 'Inventory' ) { CopyFloatBob(e.Thing); - if ( (Inventory(e.Thing).PickupFlash is 'SWWMPickupFlash') && swwm_itemglows ) + if ( Inventory(e.Thing).PickupFlash is 'SWWMPickupFlash' ) { - let p = Actor.Spawn(Inventory(e.Thing).PickupFlash,e.Thing.Vec3Offset(0,0,16)); + let p = Actor.Spawn(Inventory(e.Thing).PickupFlash,e.Thing.pos); p.target = e.Thing; - p.SetStateLabel("Pickup"); + p.SetStateLabel('Pickup'); } + // for notification + if ( e.Thing.GetClassName() == 'LDLegendaryMonsterTransformed' ) + legtrack.Push(Inventory(e.Thing)); } if ( swwm_doomfall && e.Thing.bISMONSTER && !e.Thing.bBOSS ) e.Thing.bFALLDAMAGE = true; if ( e.Thing is 'Key' ) { DoKeyTagFix(e.Thing); - SWWMInterest.Spawn(thekey:Key(e.Thing)); + SWWMInterest.Spawn(self,thekey:Key(e.Thing)); } if ( indoomvacation == -1 ) indoomvacation = SWWMUtility.InDoomVacation(); if ( inultdoom2 == -1 ) inultdoom2 = SWWMUtility.IsUltDoom2(); if ( e.Thing.GetClass() == 'Pig' ) e.Thing.SetTag("$FN_PIG"); // missing in gzdoom // eviternity stuff - else if ( (e.Thing.GetClassName() == "Archangelus") - || (e.Thing.GetClassName() == "ArchangelusA") - || (e.Thing.GetClassName() == "ArchangelusB") ) + else if ( (e.Thing.GetClassName() == 'Archangelus') + || (e.Thing.GetClassName() == 'ArchangelusA') + || (e.Thing.GetClassName() == 'ArchangelusB') ) e.Thing.SetTag("$FN_ANGEL"); - else if ( e.Thing.GetClassName() == "AstralCaco" ) + else if ( e.Thing.GetClassName() == 'AstralCaco' ) e.Thing.SetTag("$FN_ASTRAL"); - else if ( e.Thing.GetClassName() == "Annihilator" ) - { + else if ( e.Thing.GetClassName() == 'Annihilator' ) e.Thing.SetTag("$FN_ANNIHIL"); - // OH BOY, THESE AREN'T CHANGEABLE - //e.Thing.Obituary = "$OB_ANNIHIL"; - } - else if ( e.Thing.GetClassName() == "FormerCaptain" ) - { + else if ( e.Thing.GetClassName() == 'FormerCaptain' ) e.Thing.SetTag("$FN_FCAPTAIN"); - //e.Thing.Obituary = "$OB_FCAPTAIN"; - } - else if ( e.Thing.GetClassName() == "NightmareDemon" ) - { + else if ( e.Thing.GetClassName() == 'NightmareDemon' ) e.Thing.SetTag("$FN_NDEMON"); - //e.Thing.Obituary = "$OB_NDEMON"; - } + // eviternity 2 stuff + else if ( e.Thing.GetClassName() == 'FormerCorporal' ) + e.Thing.SetTag("$FN_FCORPORAL"); + else if ( e.Thing.GetClassName() == 'AstralArachnotron' ) + e.Thing.SetTag("$FN_ASTRALARACH"); + else if ( e.Thing.GetClassName() == 'AstralCacodemon' ) + e.Thing.SetTag("$FN_ASTRAL"); + else if ( e.Thing.GetClassName() == 'Veilimp' ) + e.Thing.SetTag("$FN_VEILIMP"); + else if ( (e.Thing.GetClassName() == 'GoldenAstralCaco') + || (e.Thing.GetClassName() == 'GoldenAstralCacoBoss') ) + e.Thing.SetTag("$FN_ASTRALGOLD"); + else if ( e.Thing.GetClassName() == 'DukeOfHell' ) + e.Thing.SetTag("$FN_DUKE"); + else if ( e.Thing.GetClassName() == 'AstralBabycaco' ) + e.Thing.SetTag("$FN_ASTRALBABY"); + else if ( e.Thing.GetClassName() == 'NightmareCacodemon' ) + e.Thing.SetTag("$FN_NAC"); + else if ( e.Thing.GetClassName() == 'AstralMancubus' ) + e.Thing.SetTag("$FN_ASTRALFATSO"); + else if ( (e.Thing.GetClassName() == 'NecromenaceA') + || (e.Thing.GetClassName() == 'NecromenaceB') + || (e.Thing.GetClassName() == 'NecromenaceC') + || (e.Thing.GetClassName() == 'NecromenaceD') ) + e.Thing.SetTag("$FN_NECROMENACE"); + else if ( (e.Thing.GetClassName() == 'The_Origin_Phase_1') + || (e.Thing.GetClassName() == 'The_Origin_Phase_2') + || (e.Thing.GetClassName() == 'The_Origin_Phase_3') + || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_1') + || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_2') + || (e.Thing.GetClassName() == 'The_Absolute_Origin_Phase_3') ) + e.Thing.SetTag("$FN_ORIGIN"); + else if ( e.Thing.GetClassName() == 'SpectralAstralCacodemon' ) + e.Thing.SetTag("$FN_SAC"); + else if ( e.Thing.GetClassName() == 'GrandDukeofHell' ) + e.Thing.SetTag("$FN_GDUKE"); // doom vacation stuff else if ( indoomvacation ) { - if ( e.Thing.GetClassName() == "Babe" ) + if ( e.Thing.GetClassName() == 'Babe' ) { e.Thing.bSHOOTABLE = false; // no hurt let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = .2; + HeadpatTracker(hp).heightfix = .2; } - else if ( e.Thing.GetClassName() == "CommanderKeen" ) + else if ( e.Thing.GetClassName() == 'CommanderKeen' ) { - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = .4; - HeadpatTracker(hp).hdoomangfix = 5; + HeadpatTracker(hp).heightfix = .4; + HeadpatTracker(hp).angfix = 5; } - else if ( e.Thing.GetClassName() == "BBChair" ) + else if ( e.Thing.GetClassName() == 'BBChair' ) { e.Thing.bUSESPECIAL = false; - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = .2; - HeadpatTracker(hp).hdoomangfix = 15; + HeadpatTracker(hp).heightfix = .2; + HeadpatTracker(hp).angfix = 15; HeadpatTracker(hp).patstate = e.Thing.MeleeState; } - else if ( e.Thing.GetClassName() == "EvilEye" ) + else if ( e.Thing.GetClassName() == 'EvilEye' ) { - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = .1; + HeadpatTracker(hp).heightfix = .1; } - else if ( e.Thing.GetClassName() == "HeadCandles" ) + else if ( e.Thing.GetClassName() == 'HeadCandles' ) { - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomangfix = 20; + HeadpatTracker(hp).angfix = 20; } - else if ( e.Thing.GetClassName() == "HeartColumn" ) + else if ( e.Thing.GetClassName() == 'HeartColumn' ) { - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = -.3; + HeadpatTracker(hp).heightfix = -.3; } - else if ( e.Thing.GetClassName() == "Meat2" ) + else if ( e.Thing.GetClassName() == 'Meat2' ) { - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = .6; - HeadpatTracker(hp).hdoomangfix = -15; + HeadpatTracker(hp).heightfix = .6; + HeadpatTracker(hp).angfix = -15; HeadpatTracker(hp).dvacationarghack = true; } - else if ( e.Thing.GetClassName() == "Meat3" ) + else if ( e.Thing.GetClassName() == 'Meat3' ) { - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = .6; - HeadpatTracker(hp).hdoomangfix = 20; + HeadpatTracker(hp).heightfix = .6; + HeadpatTracker(hp).angfix = 20; HeadpatTracker(hp).dvacationarghack = true; } - else if ( e.Thing.GetClassName() == "LegsBabe" ) + else if ( e.Thing.GetClassName() == 'LegsBabe' ) { - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = -1.5; - HeadpatTracker(hp).hdoomangfix = 20; + HeadpatTracker(hp).heightfix = -1.5; + HeadpatTracker(hp).angfix = 20; HeadpatTracker(hp).dvacationarghack = true; } - else if ( e.Thing.GetClassName() == "Meat4" ) + else if ( e.Thing.GetClassName() == 'Meat4' ) { - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; - HeadpatTracker(hp).hdoomheightfix = .6; - HeadpatTracker(hp).hdoomangfix = 15; + HeadpatTracker(hp).heightfix = .6; + HeadpatTracker(hp).angfix = 15; HeadpatTracker(hp).dvacationarghack = true; } } - else if ( inultdoom2 && (e.Thing.GetClassName() == "WolfensteinSS") ) + else if ( inultdoom2 && (e.Thing.GetClassName() == 'WolfensteinSS') ) { e.Thing.SetTag("$FN_ELITEZOMBIE"); //e.Thing.Obituary = "$OB_ELITEZOMBIE"; @@ -396,51 +383,37 @@ extend Class SWWMHandler e.Thing.DeathSound = "grunt/death"; e.Thing.ActiveSound = "grunt/active"; } + else if ( ccloaded && (e.Thing.GetClassName() == 'CCards_Token_Glitched') ) + { + if ( !gdat.cclilithonce ) SendInterfaceEvent(consoleplayer,"swwmsetdialogue.LILITH"); + gdat.cclilithonce = true; + } if ( SWWMUtility.IdentifyingDog(e.Thing) || SWWMUtility.IdentifyingCaco(e.Thing) || SWWMUtility.IdentifyingDrug(e.Thing) || SWWMUtility.IdentifyingDoubleBoi(e.Thing) ) { // you can pet the dog, and you can also pet the caco (and friends) - let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos); + let hp = Actor.Spawn('HeadpatTracker',e.Thing.pos); hp.target = e.Thing; } - SWWMCombatTracker trk; - if ( !swwm_notrack && (e.Thing.bSHOOTABLE || e.Thing.bISMONSTER) && !(e.Thing is 'LampMoth') && !(e.Thing is 'CompanionLamp') ) - trk = SWWMCombatTracker.Spawn(e.Thing); - if ( swwm_shadows && !(e.Thing is 'LampMoth') && (e.Thing.bSHOOTABLE || e.Thing.bISMONSTER || (e.Thing is 'Inventory') || (e.Thing is 'CompanionLamp')) && ((e.Thing is 'Demolitionist') || (e.Thing.SpawnState.sprite == e.Thing.GetSpriteIndex('XZW1'))) ) - SWWMShadow.Track(e.Thing); - // Ynykron vortex optimization (faster than a thinker iterator) - if ( e.Thing.bSHOOTABLE || SWWMUtility.ValidProjectile(e.Thing) || (e.Thing is 'Inventory') ) - SuckableActors.Push(e.Thing); - else if ( SWWMUtility.IsBeamProj(e.Thing) ) - Beams.Push(e.Thing); // vanilla blood color changes - if ( (e.Thing.GetClass() == "BaronOfHell") || (e.Thing.GetClass() == "HellKnight") || (e.Thing.GetClass() == "Bishop") || (e.Thing.GetClass() == "Korax") ) + if ( (e.Thing.GetClassName() == 'BaronOfHell') || (e.Thing.GetClassName() == 'HellKnight') || (e.Thing.GetClassName() == 'Bishop') || (e.Thing.GetClassName() == 'Korax') ) { - let gb = Actor.Spawn("GreenBloodReference"); + let gb = GetDefaultByType('GreenBloodReference'); e.Thing.CopyBloodColor(gb); - gb.Destroy(); } - else if ( e.Thing.GetClass() == "Cacodemon" ) + else if ( e.Thing.GetClassName() == 'Cacodemon' ) { - let bb = Actor.Spawn("BlueBloodReference"); + let bb = GetDefaultByType('BlueBloodReference'); e.Thing.CopyBloodColor(bb); - bb.Destroy(); } - else if ( (e.Thing.GetClass() == "Wizard") || (e.Thing.GetClass() == "Heresiarch") || (e.Thing.GetClass() == "Sorcerer2") ) + else if ( (e.Thing.GetClassName() == 'Wizard') || (e.Thing.GetClassName() == 'Heresiarch') || (e.Thing.GetClassName() == 'Sorcerer2') ) { - let pb = Actor.Spawn("PurpleBloodReference"); + let pb = GetDefaultByType('PurpleBloodReference'); e.Thing.CopyBloodColor(pb); - pb.Destroy(); } - else if ( e.Thing.GetClass() == "LostSoul" ) + else if ( e.Thing.GetClassName() == 'LostSoul' ) e.Thing.bNOBLOOD = true; - VanillaBossSpawn(e,trk); - // inflation check - if ( trk ) - { - trk.maxhealth = trk.lasthealth = e.Thing.Health; - trk.intp.Reset(trk.lasthealth); - } + VanillaBossSpawn(e); if ( profiling ) ProfileTock(PT_WORLDTHINGSPAWNED); } } diff --git a/zscript/handler/swwm_handler_worldtick.zsc b/zscript/handler/swwm_handler_worldtick.zsc index 54785f37c..689a63f0e 100644 --- a/zscript/handler/swwm_handler_worldtick.zsc +++ b/zscript/handler/swwm_handler_worldtick.zsc @@ -9,7 +9,6 @@ extend Class SWWMHandler transient String curlang; transient bool curfuntags; SWWMSimpleTracker strackers; - int strackers_cnt; bool mnotify; bool allkills, allitems, allsecrets; bool mapclear; @@ -18,15 +17,18 @@ extend Class SWWMHandler String lastmus; int lastorder; bool lastloop; - transient ThinkerIterator cti; + transient ThinkerIterator cti, qti; private void LangRefresh() { if ( (language != curlang) || (swwm_funtags != curfuntags) ) { // manually refresh some tags if language has changed - for ( SWWMCombatTracker t=trackers; t; t=t.next ) - t.UpdateTag(); + if ( !qti ) qti = ThinkerIterator.Create('SWWMQuickCombatTracker',Thinker.STAT_INVENTORY); + else qti.Reinit(); + SWWMQuickCombatTracker qt; + while ( qt=SWWMQuickCombatTracker(qti.Next()) ) + qt.UpdateTag(self); for ( SWWMInterest p=intpoints; p; p=p.next ) { if ( (p.type != INT_Key) || !p.trackedkey ) continue; @@ -55,12 +57,13 @@ extend Class SWWMHandler if ( !deathmatch && !(gameinfo.gametype&GAME_Hexen) && (level.total_items == level.found_items) && !allitems ) { allitems = true; - Console.Printf(StringTable.Localize("$SWWM_LASTITEM"),players[i].GetUserName(),500); + if ( i == consoleplayer ) Console.Printf(StringTable.Localize("$SWWM_LASTITEM"),500); + else Console.Printf(StringTable.Localize("$SWWM_LASTITEMREM"),players[i].GetUserName(),500); score += 490; SWWMUtility.AchievementProgressInc("allitems",1,players[i]); } SWWMCredits.Give(players[i],score); - SWWMScoreObj.Spawn(score,players[i].mo.Vec3Offset(0,0,players[i].mo.Height/2)); + if ( i == consoleplayer ) SWWMScoreObj.SpawnAtActorFromHandler(self,score,players[i].mo); lastitemcount[i] = players[i].itemcount; let s = SWWMStats.Find(players[i]); s.items++; @@ -95,22 +98,19 @@ extend Class SWWMHandler } bool enteredcombat = false; // add new entries - if ( !cti ) cti = ThinkerIterator.Create("Actor"); - else cti.Reinit(); - Actor a, keyactor = null; bool bossfound = false; - while ( a = Actor(cti.Next()) ) + // we can use this instead of a thinker iterator as only actors that EXIST physically could count as combatants + foreach ( s:level.Sectors ) for ( Actor a=s.thinglist; a; a=a.snext ) { if ( !a.player && !a.bISMONSTER ) continue; // ignore the dead if ( (a.Health <= 0) || a.bKILLED || a.bCORPSE ) continue; + // ignore if not targetted + if ( a.target != players[consoleplayer].mo ) continue; // ignore friends if ( a.IsFriend(players[consoleplayer].mo) ) continue; - // ignore if not targetted or player can't see it - if ( (a.target != players[consoleplayer].mo) - || !SWWMUtility.InPlayerFOV(players[consoleplayer],a) ) continue; - // [HDoom] ignore cute girls - if ( SWWMHDoomHandler.IsCuteGirl(a.target) ) continue; + // ignore if player can't see it + if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],a) ) continue; // is it already in? bool addme = true; for ( int i=0; i lastcombat+240))) || (!bossfound && (!highesttic || (gametic > highesttic+700)))) && !players[consoleplayer].mo.FindInventory("GhostPower") ) + if ( enteredcombat && ((bossfound && (!lastcombat || (gametic > lastcombat+240))) || (!bossfound && (!highesttic || (gametic > highesttic+700)))) && !players[consoleplayer].mo.FindInventory('GhostPower') ) lastcombat = AddOneliner("fightstart",1,10); } @@ -141,6 +141,19 @@ extend Class SWWMHandler if ( deathmatch ) return; // not in Hexen, due to its fully hub-based nature if ( gameinfo.gametype&GAME_Hexen ) return; + // not unless at least one player is standing in this sector + // (used for Eviternity 2 MAP33) + if ( allclearsector ) + { + bool insector = false; + for ( int i=0; i 0) ) { restartmus--; @@ -151,29 +164,23 @@ extend Class SWWMHandler if ( (level.total_secrets <= 0) && (level.total_items <= 0) && (level.total_monsters <= 0) ) return; if ( mapclear ) { - if ( swwm_silencemap ) + if ( (musplaying.name != "music/nomusic.ogg") && (musplaying.name != "music/solitary.ogg") ) { - if ( (musplaying.name != "music/nomusic.ogg") && (musplaying.name != "music/solitary.ogg") ) - { - lastmus = musplaying.name; - lastorder = musplaying.baseorder; - lastloop = musplaying.loop; - S_ChangeMusic((startmus>0)?"music/nomusic.ogg":"music/solitary.ogg",force:true); - } - if ( startmus > 0 ) startmus--; - else if ( startmus == 0 ) - { - startmus = -1; - S_ChangeMusic("music/solitary.ogg",force:true); - } + lastmus = musplaying.name; + lastorder = musplaying.baseorder; + lastloop = musplaying.loop; + S_ChangeMusic((startmus>0)?"music/nomusic.ogg":"music/solitary.ogg",force:true); + } + if ( startmus > 0 ) startmus--; + else if ( startmus == 0 ) + { + startmus = -1; + S_ChangeMusic("music/solitary.ogg",force:true); } if ( (level.found_secrets < level.total_secrets) || (level.found_items < level.total_items) || (level.killed_monsters < level.total_monsters) ) { - if ( swwm_silencemap ) - { - restartmus = 25; - S_ChangeMusic("music/nomusic.ogg",force:true); - } + restartmus = 25; + S_ChangeMusic("music/nomusic.ogg",force:true); S_StartSound("recordscratch",CHAN_VOICE,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); mapclear = false; if ( mapclearagain > 1 ) Console.Printf(StringTable.Localize("$SWWM_NOTCLEARAGAIN")); @@ -186,39 +193,38 @@ extend Class SWWMHandler mapclear = true; if ( mapclearagain ) Console.Printf(StringTable.Localize("$SWWM_ALLCLEARAGAIN"),500); else Console.Printf(StringTable.Localize("$SWWM_ALLCLEAR"),5000); - S_StartSound("misc/wow",CHAN_VOICE,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + bool altclear = swwm_altclear; + S_StartSound(altclear?"misc/yippeee":"misc/wow",CHAN_VOICE,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); lastmus = musplaying.name; lastorder = musplaying.baseorder; lastloop = musplaying.loop; - if ( swwm_silencemap ) - { - S_ChangeMusic("music/nomusic.ogg",force:true); - startmus = 1050; - } + S_ChangeMusic("music/nomusic.ogg",force:true); + startmus = 1050; for ( int i=0; i 0 ) - return; + if ( !playeringame[i] ) continue; + let demo = Demolitionist(players[i].mo); + if ( !demo || !demo.mystats ) continue; + if ( demo.mystats.deaths > 0 ) return; } SWWMUtility.MarkAchievement("wantdie",players[consoleplayer]); } @@ -236,25 +242,23 @@ extend Class SWWMHandler if ( soprev ) soprev.next = sonext; else scorenums = sonext; so.Destroy(); - scorenums_cnt--; } else soprev = so; so = sonext; } - so = damnums; - soprev = null; - while ( so ) + SWWMDamNum dn = damnums; + SWWMDamNum dnprev = null, dnnext; + while ( dn ) { - sonext = so.next; - if ( so.Tick() ) + dnnext = dn.next; + if ( dn.Tick() ) { - if ( soprev ) soprev.next = sonext; - else damnums = sonext; - so.Destroy(); - scorenums_cnt--; + if ( dnprev ) dnprev.next = dnnext; + else damnums = dnnext; + dn.Destroy(); } - else soprev = so; - so = sonext; + else dnprev = dn; + dn = dnnext; } // interest markers SWWMInterest ip = intpoints; @@ -267,31 +271,10 @@ extend Class SWWMHandler if ( ipprev ) ipprev.next = ipnext; else intpoints = ipnext; ip.Destroy(); - intpoints_cnt--; } else ipprev = ip; ip = ipnext; } - // combat trackers - SWWMCombatTracker trk = trackers; - SWWMCombatTracker trkprev = null, trknext; - int dbar = swwm_damagetarget; - int mxdist = swwm_maxtargetdist; - while ( trk ) - { - trknext = trk.next; - trk.dbar = dbar; - trk.mxdist = mxdist; - if ( trk.Tick() ) - { - if ( trkprev ) trkprev.next = trknext; - else trackers = trknext; - trk.Destroy(); - trackers_cnt--; - } - else trkprev = trk; - trk = trknext; - } } // "simple" tracking (used by the minimap) @@ -305,117 +288,53 @@ extend Class SWWMHandler strackers.Destroy(); strackers = next; } - strackers_cnt = 0; return; } // update trackers for anything around the player - double viewdist = SWWMStatusBar.MAPVIEWDIST*swwm_mm_zoom; - BlockThingsIterator bt = BlockThingsIterator.Create(players[consoleplayer].Camera,viewdist); - while ( bt.Next() ) + double viewdist = SWWMStatusBar.MAPVIEWDIST; + // still about as expensive as using a BlockThingsIterator, but without the need to allocate one every tic + int thisgroup = players[consoleplayer].Camera.CurSector.portalgroup; + foreach ( s:level.Sectors ) { - let a = bt.Thing; - if ( !a ) continue; - Vector2 rv = a.pos.xy-players[consoleplayer].Camera.pos.xy; - if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist ) + // don't check sectors that aren't within bounds, saves some time + if ( !BoxInSectorBounds(s,players[consoleplayer].Camera.pos.xy,viewdist,players[consoleplayer].Camera.CurSector.PortalGroup) ) continue; - if ( a == players[consoleplayer].Camera ) - continue; - if ( a is 'GhostTarget' ) - continue; - if ( !a.player && !a.bSOLID && !a.bSHOOTABLE && !a.bISMONSTER && !a.bFRIENDLY && !(a is 'Inventory') && !(a is 'Chancebox') ) - continue; - if ( !level.allmap && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !(a.IsFriend(players[consoleplayer].mo) && !(a.player && (a.player.mo != a))) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) - continue; - if ( a.bKILLED || (a.Health <= 0) || a.bUnmorphed ) - continue; - if ( (a is 'Inventory') && (!a.bSPECIAL || Inventory(a).Owner) ) - continue; - if ( (a is 'Chancebox') && (a.CurState != a.SpawnState) ) - continue; - SWWMSimpleTracker.Track(a); - } - // we need to refer to the suckables array to find missiles - for ( int i=0; i viewdist ) - continue; - if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) - continue; - SWWMSimpleTracker.Track(a); - } - for ( int i=0; i viewdist ) - continue; - if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) - continue; - SWWMSimpleTracker.Track(a); - } - bt.Destroy(); - if ( swwm_mm_portaloverlay && (psectors.Size() > 1) ) - { - // oh boy here we go - int thisgroup = players[consoleplayer].Camera.CurSector.portalgroup; - for ( int i=0; i viewdist ) - continue; - if ( a == players[consoleplayer].Camera ) - continue; - if ( a is 'GhostTarget' ) - continue; - if ( !a.player && !a.bSOLID && !a.bSHOOTABLE && !a.bISMONSTER && !a.bFRIENDLY && !(a is 'Inventory') && !(a is 'Chancebox') ) - continue; - if ( !level.allmap && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !a.IsFriend(players[consoleplayer].mo) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) - continue; - if ( a.bKILLED || (a.Health <= 0) || a.bUnmorphed ) - continue; - if ( (a is 'Inventory') && (!a.bSPECIAL || Inventory(a).Owner) ) - continue; - if ( (a is 'Chancebox') && (a.CurState != a.SpawnState) ) - continue; - SWWMSimpleTracker.Track(a); + Vector2 relpos = players[consoleplayer].Camera.pos.xy+level.GetDisplacement(thisgroup,s.portalgroup); + rv = a.pos.xy-relpos; } - // we need to refer to the suckables array to find missiles - for ( int i=0; i viewdist ) - continue; - if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) - continue; - SWWMSimpleTracker.Track(a); - } - for ( int i=0; i viewdist ) - continue; - if ( !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !players[consoleplayer].Camera.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) - continue; - SWWMSimpleTracker.Track(a); + isproj = true; + rad = SWWMUtility.IsYBeam(a)?(a.scale.y*cos(a.pitch-90)):(a.speed*cos(a.pitch)); } + else rad = a.radius; + if ( max(abs(rv.x)-a.radius,abs(rv.y)-a.radius) > viewdist ) + continue; + if ( a == players[consoleplayer].Camera ) + continue; + if ( a is 'GhostTarget' ) + continue; + if ( !a.player && !a.bSOLID && !a.bSHOOTABLE && !a.bISMONSTER && !a.bFRIENDLY && !(a is 'Inventory') && !(a is 'Chancebox') && !isproj ) + continue; + if ( !level.allmap && !(deathmatch && (a is 'Inventory') && !a.bDROPPED) && !(a.IsFriend(players[consoleplayer].mo) && !(a.player && (a.player.mo != a))) && !a.CheckSight(players[consoleplayer].Camera,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + continue; + if ( a.bKILLED || (a.Health <= 0) || a.bUnmorphed ) + continue; + if ( (a is 'Inventory') && (!a.bSPECIAL || Inventory(a).Owner || (a.GetClassName() == 'aas_token')) ) // autoautosave hotfix + continue; + if ( (a is 'Chancebox') && (a.CurState != a.SpawnState) ) + continue; + if ( isproj && !level.allmap && !(a.target && a.target.IsFriend(players[consoleplayer].mo)) && !a.CheckSight(players[consoleplayer].Camera,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + continue; + SWWMSimpleTracker.Track(self,a); } } SWWMSimpleTracker trk = strackers; @@ -441,7 +360,6 @@ extend Class SWWMHandler if ( !prev ) strackers = trk.next; else prev.next = trk.next; trk.Destroy(); - strackers_cnt--; } else prev = trk; trk = next; diff --git a/zscript/handler/swwm_statichandler.zsc b/zscript/handler/swwm_statichandler.zsc new file mode 100644 index 000000000..b118451f0 --- /dev/null +++ b/zscript/handler/swwm_statichandler.zsc @@ -0,0 +1,772 @@ +// Static handler responsible for some special stuff + +// save version holder +Class SWWMSaveVerData : SWWMStaticThinker +{ + String ver; + int uid; +} + +Class SWWMStaticHandler : StaticEventHandler +{ + // crash handler + ui bool wasinmap; + ui int timer, msgpick; + // broccoli doccoli + bool isbd; + // versioning + bool tainted; + String taintver; + int uid; + int checktic; + int maptime; + bool unloading; + ui Map menustate; // used by Demolitionist Menu to restore old menu positions + // title stuff + ui bool titlefirst; + // map title stuff + int mttics; + // warnings + bool mpwarned; + // checks + ThinkerIterator sti; + // for intermissions, to prevent repetition + ui Array lasttip, lastart; + // stupid dumb thing + ui bool aprilfools; + ui Font aprfnt; + + override void NewGame() + { + // set save version every new session + let svd = new('SWWMSaveVerData'); + svd.ChangeStatNum(Thinker.STAT_STATIC); + svd.ver = StringTable.Localize("$SWWM_SHORTVER"); + uid = 0; + } + + override void WorldUnloaded( WorldEvent e ) + { + SWWMHandler.ClearAllShaders(); + unloading = true; + } + + override void WorldTick() + { + if ( mttics > 0 ) + { + mttics--; + if ( mttics == 0 ) EventHandler.SendInterfaceEvent(consoleplayer,"swwmmaptitle"); + } + maptime++; + // in case we start late? + if ( multiplayer && !mpwarned ) + { + mpwarned = true; + Console.Printf("\cgWARNING:\c- Multiplayer is no longer supported, desyncs and other issues WILL happen. You are on your own."); + S_StartSound("compat/warn",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + } + // sanity check + Array stinkers; + if ( !sti ) sti = ThinkerIterator.Create('SWWMStaticThinker'); + else sti.Reinit(); + foreach ( t:sti ) stinkers.Push(t); + if ( stinkers.Size() > 0 ) + { + foreach ( s:stinkers ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"%s is not STAT_STATIC!",s.GetClassName()); + ThrowAbortException("Panic! %d static thinker%s been tampered with!",stinkers.Size(),(stinkers.Size()==1)?" has":"s have"); + } + } + + override void WorldLoaded( WorldEvent e ) + { + if ( gamestate != GS_TITLELEVEL ) + mttics = 10; // count down to show the "area name" + unloading = false; + maptime = 0; + if ( e.IsSavegame || e.IsReopen ) + { + // restore underwater sounds for players + for ( int i=0; i)(cls)); + // if this class has a morph weapon defined, skip it + if ( def.MorphWeapon ) break; + // we have to check if there are any discrepancies between this class's start item list and + // its parents + let pdef = GetDefaultByType((Class)(cls.GetParentClass())); + let di = def.GetDropItems(); + let pdi = pdef.GetDropItems(); + // no items, just skip + if ( !di ) break; + do + { + // list sizes don't match + if ( (di && !pdi) || (!di && pdi) ) return true; + // mismatch in item names + if ( di.name != pdi.name ) return true; + di = di.next; + pdi = pdi.next; + } + while ( di || pdi ); + break; + } + } + return false; + } + + override void OnRegister() + { + // fix voice type cvar + int lmp; + Array types; + for ( lmp = Wads.FindLumpFullName("swwmvoicepack",0,true); lmp != -1; lmp = Wads.FindLumpFullName("swwmvoicepack",lmp+1,true) ) + { + Array lst; + lst.Clear(); + String dat = Wads.ReadLump(lmp); + dat.Split(lst,"\n",0); + foreach ( l:lst ) + { + if ( (l.Length() <= 0) || (l.GetNextCodePoint(0) == 0) || (l.Left(1) == "\n") || (l.Left(1) == "#") ) continue; + types.Push(l); + } + } + let cv = CVar.FindCVar('swwm_voicetype'); + if ( types.Find(cv.GetString()) >= types.Size() ) + cv.SetString("default"); + // load up the achievements + if ( swwm_achievementstate == "" ) MigrateAchievements(); + else LoadAchievements(); + // precache fonts + Array fonts; + for ( lmp = Wads.FindLumpFullName("precachefonts",0,true); lmp != -1; lmp = Wads.FindLumpFullName("precachefonts",lmp+1,true) ) + { + Array lst; + lst.Clear(); + String dat = Wads.ReadLump(lmp); + dat.Split(lst,"\n",0); + foreach ( l:lst ) + { + if ( (l.Length() <= 0) || (l.GetNextCodePoint(0) == 0) || (l.Left(1) == "\n") || (l.Left(1) == "#") ) continue; + fonts.Push(l); + } + } + foreach ( f:fonts ) Font.GetFont(f); + // warn: mp no longer officially maintained + if ( multiplayer ) + { + mpwarned = true; + Console.Printf("\cgWARNING:\c- Multiplayer is no longer supported, desyncs and other issues WILL happen. You are on your own."); + S_StartSound("compat/warn",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + } + bool checked = CheckOtherMods(); + if ( checked ) + { + // warn for combining with other weapon mods + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY, + "\cx┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\c-\n" + "\cx┃ \cr[\cgWARNING\cr]\cx ┃\c-\n" + "\cx┃ \cjYou appear to be loading this alongside another weapon mod.\cx ┃\c-\n" + "\cx┃ \cjIssues are \cfVERY LIKELY\cj to happen.\cx ┃\c-\n" + "\cx┃ \cr[\cgYOU ARE ON YOUR OWN\cr]\cx ┃\c-\n" + "\cx┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\c-"); + S_StartSound("compat/warn",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + } + // warning for unsupported + if ( Wads.FindLumpFullName("swwmgamesupported",0,true) != -1 ) return; + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY, + "\cx┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\c-\n" + "\cx┃ \cr[\cgWARNING\cr]\cx ┃\c-\n" + "\cx┃ \chSWWM \czGZ \cjis \cfNOT\cj compatible with the loaded IWAD.\cx ┃\c-\n" + "\cx┃ \cjOnly \cfDoom\cj, \cfHeretic\cj and \cfHexen\cj are supported.\cx ┃\c-\n" + "\cx┃ \cjIssues \cfCAN\cj and \cfWILL\cj happen.\cx ┃\c-\n" + "\cx┃ \cr[\cgYOU ARE ON YOUR OWN\cr]\cx ┃\c-\n" + "\cx┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\c-"); + S_StartSound("compat/warn",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + } + + override void RenderOverlay( RenderEvent e ) + { + // silly april fools thing + if ( aprilfools && (gamestate == GS_LEVEL) ) + { + String str = "Unregistered Ultracam"; + if ( !aprfnt ) aprfnt = newsmallfont /*Font.GetFont('MiniHUDOutline')*/; + int w = aprfnt.StringWidth(str); + Screen.Dim(0xFFFFFFFF,1.,(Screen.GetWidth()-(w+16)*CleanXFac)/2,0,(w+16)*CleanXFac,(aprfnt.GetHeight()+8)*CleanYFac); + Screen.DrawText(aprfnt,Font.FindFontColor('aprcol'),(Screen.GetWidth()-w*CleanXFac)/2,4*CleanYFac,str,DTA_CleanNoMove,true); + } + } + + override void InterfaceProcess( ConsoleEvent e ) + { + if ( e.IsManual ) return; + if ( e.Name ~== "swwmmaptitle" ) + { + if ( (gamestate != GS_LEVEL) || !swwm_showmaptitle ) return; + StatusBar.AttachMessage(new('DSMapTitle').Init(),-7777); + } + else if ( e.Name ~== "swwmflushhud" ) + { + if ( !(StatusBar is 'SWWMStatusBar') ) return; + SWWMStatusBar(StatusBar).Flush(); + } + else if ( e.Name ~== "swwmaprcheck" ) + { + if ( gamestate != GS_LEVEL ) return; + if ( SystemTime.Format("%d%m",SystemTime.Now()) == "0104" ) + { + if ( !aprilfools ) SWWMDialogues.StartSeq("FOOL"); + aprilfools = true; + } + else aprilfools = false; + } + } + + override void ConsoleProcess( ConsoleEvent e ) + { + if ( e.Name ~== "swwmresetcvars" ) + { + Array cvarlist; + SWWMUtility.GetCVars(cvarlist); + foreach ( cv:cvarlist ) + { + // don't reset these + if ( (cv == "swwm_playtime") + || (cv == "swwm_achievementstate") + || (cv == "swwm_achievementprogress") ) + continue; + CVar.FindCVar(cv).ResetToDefault(); + } + } + else if ( e.Name ~== "swwmresettooltips" ) + { + CVar.FindCVar('swwm_tooltipshown').ResetToDefault(); + CVar.FindCVar('swwm_tooltipnote').ResetToDefault(); + } + else if ( e.Name ~== "swwmlistcvars" ) + { + // debug + Array cvarlist; + SWWMUtility.GetCVars(cvarlist); + foreach ( cv:cvarlist ) + { + let rcv = CVar.FindCVar(cv); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,cv.." = "..rcv.GetString()); + } + } + else if ( e.Name ~== "swwmgetplaytime" ) + { + int val = swwm_playtime; + int sec = (val%60); + int min = ((val/60)%60); + int hour = ((val/3600)%24); + int day = val/86400; + String str = ""; + if ( day ) str.AppendFormat("%d days",day); + if ( hour ) + { + if ( str != "" ) str = str..", "; + str.AppendFormat("%d hours",hour); + } + if ( min ) + { + if ( str != "" ) str = str..", "; + str.AppendFormat("%d minutes",min); + } + if ( sec ) + { + if ( str != "" ) str = str..", "; + str.AppendFormat("%d seconds",sec); + } + if ( str == "" ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"No Data"); + else Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,str); + } + else if ( e.Name ~== "swwmresetachievements" ) + { + foreach ( inf:achievementinfo ) + { + achievementstate.Insert(inf.basename,"0"); + if ( inf.maxval ) + achievementprogress.Insert(inf.basename,"0"); + } + } + else if ( e.Name ~== "swwmdumpachievements" ) + { + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"---STATE---"); + let di = DictionaryIterator.Create(achievementstate); + while ( di.Next() ) + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"%s = %s",di.Key(),di.Value()); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"---PROGRESS---"); + di = DictionaryIterator.Create(achievementprogress); + while ( di.Next() ) + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"%s = %s",di.Key(),di.Value()); + } + else if ( e.Name ~== "swwmgetversion" ) + { + let ti = ThinkerIterator.Create('SWWMSaveVerData',Thinker.STAT_STATIC); + let svd = SWWMSaveVerData(ti.Next()); + if ( svd ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cj%s\c-",svd.ver); + else Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cg(no version data)\c-"); + if ( tainted ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cgversion mismatched\c-"); + else Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cdversion not mismatched\c-"); + } + else if ( e.Name ~== "swwmdumpthinkers" ) + { + Array > sdefs; + foreach ( cls : AllClasses ) + { + if ( !(cls is 'Thinker') || (cls is 'Actor') || (cls == 'Thinker') ) + continue; + sdefs.Push((Class)(cls)); + } + if ( !e.Args[0] ) + { + // trim default gzdoom thinkers + for ( int i=0; i stink; + stink.Resize(sdefs.Size()); + for ( int i=Thinker.STAT_INFO; i= sdefs.Size() ) continue; + stink[p]++; + } + ti.Destroy(); + } + for ( int i=0; i1)?String.Format(" [%d]",stink[i]):""); + } + else if ( e.Name ~== "swwmdumphandlers" ) + { + foreach ( cls:AllClasses ) + { + if ( !(cls is 'StaticEventHandler') || (cls == 'StaticEventHandler') || (cls == 'EventHandler') ) + continue; + bool reg = (cls is 'EventHandler')?EventHandler.Find((Class)(cls)):StaticEventHandler.Find((Class)(cls)); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"%s%s\c-",reg?"\cj":"\cu",cls.GetClassName()); + } + } + else if ( e.Name ~== "swwmtestdlgsize" ) + { + let f = Font.GetFont('TewiFont'); + let lmp = Wads.FindLumpFullName("language.def_dlg"); + Array lst; + lst.Clear(); + String dat = Wads.ReadLump(lmp); + dat.Split(lst,"\n",0); + bool skipme = true; + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"[default]"); + bool fail = false; + foreach ( l:lst ) + { + if ( l.Left(7) == "// E1M8" ) skipme = false; + if ( l.Left(5) != "SWWM_" ) continue; + if ( skipme ) continue; + // extract string + int st = l.IndexOf("\"")+1; + int en = l.RightIndexOf("\""); + String line = l.Mid(st,en-st); + //line.Filter(); // DOES NOT WORK, FOR SOME REASON + line.Substitute("\\\"","\""); + line.Substitute("\\c","\c"); + BrokenLines bl = f.BreakLines(line,220); + if ( bl.Count() > 4 ) + { + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cg%s [%d]\c-",l.Left(st-4),bl.Count()); + fail = true; + } + bl.Destroy(); + } + if ( !fail ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"ALL OK"); + lmp = Wads.FindLumpFullName("language.es_dlg"); + lst.Clear(); + dat = Wads.ReadLump(lmp); + dat.Split(lst,"\n",0); + skipme = true; + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"[es]"); + foreach ( l:lst ) + { + if ( l.Left(7) == "// E1M8" ) skipme = false; + if ( l.Left(5) != "SWWM_" ) continue; + if ( skipme ) continue; + // extract string + int st = l.IndexOf("\"")+1; + int en = l.RightIndexOf("\""); + String line = l.Mid(st,en-st); + //line.Filter(); // DOES NOT WORK, FOR SOME REASON + line.Substitute("\\\"","\""); + line.Substitute("\\c","\c"); + BrokenLines bl = f.BreakLines(line,220); + if ( bl.Count() > 4 ) + { + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cg%s [%d]\c-",l.Left(st-4),bl.Count()); + fail = true; + } + bl.Destroy(); + } + if ( !fail ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"ALL OK"); + } + else if ( e.Name ~== "swwmvalidatedlgfiles" ) + { + for ( int lmp = Wads.FindLumpFullName("swwmdialogue",0,true); lmp != -1; lmp = Wads.FindLumpFullName("swwmdialogue",lmp+1,true) ) + { + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\ce-- PARSING FILE \cf'%s'\ce...\c-",Wads.GetLumpFullName(lmp)); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,""); + String dat = Wads.ReadLump(lmp); + dat.Replace("\r",""); // just in case + Array lines; + lines.Clear(); + dat.Split(lines,"\n",0); + // strip comments and trim whitespace + for ( int i=0; i 0 ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY," \cqdelay: \cd%d\c-",sdelay); + if ( sstartdelay > 0 ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY," \cqstartdelay: \cd%d\c-",sstartdelay); + if ( senddelay > 0 ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY," \cqenddelay: \cd%d\c-",senddelay); + if ( schardelay > 0 ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY," \cqchardelay: \cd%d\c-",schardelay); + if ( spausedelay > 0 ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY," \cqpausedelay: \cd%d\c-",spausedelay); + if ( sznvspecial ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY," \cq+\cdznvspecial\c-"); + if ( sindirect ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY," \cq+\cdindirect\c-"); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY," \cqcount: \cd%d\c-\n\cd---\c-",scnt); + for ( int i=0; i 0 ) ThrowAbortException("dialogue '%s', line %d, sequence %d, duplicate 'CNT' parameter.",sdlg,cur+1,nseq); + scnt = lines[cur].Mid(4).ToInt(); + } + else if ( lines[cur].Left(6) == "DELAY " ) + { + if ( sdelay > 0 ) ThrowAbortException("dialogue '%s', line %d, sequence %d, duplicate 'DELAY' parameter.",sdlg,cur+1,nseq); + sdelay = lines[cur].Mid(6).ToInt(); + } + else if ( lines[cur].Left(11) == "STARTDELAY " ) + { + if ( sstartdelay > 0 ) ThrowAbortException("dialogue '%s', line %d, sequence %d, duplicate 'STARTDELAY' parameter.",sdlg,cur+1,nseq); + sstartdelay = lines[cur].Mid(11).ToInt(); + } + else if ( lines[cur].Left(9) == "ENDDELAY " ) + { + if ( senddelay > 0 ) ThrowAbortException("dialogue '%s', line %d, sequence %d, duplicate 'ENDDELAY' parameter.",sdlg,cur+1,nseq); + senddelay = lines[cur].Mid(9).ToInt(); + } + else if ( lines[cur].Left(10) == "CHARDELAY " ) + { + if ( schardelay > 0 ) ThrowAbortException("dialogue '%s', line %d, sequence %d, duplicate 'CHARDELAY' parameter.",sdlg,cur+1,nseq); + schardelay = lines[cur].Mid(10).ToInt(); + } + else if ( lines[cur].Left(11) == "PAUSEDELAY " ) + { + if ( spausedelay > 0 ) ThrowAbortException("dialogue '%s', line %d, sequence %d, duplicate 'PAUSEDELAY' parameter.",sdlg,cur+1,nseq); + spausedelay = lines[cur].Mid(11).ToInt(); + } + else if ( lines[cur].Left(8) == "INDIRECT" ) + { + if ( sindirect ) ThrowAbortException("dialogue '%s', line %d, sequence %d, duplicate 'INDIRECT' parameter.",sdlg,cur+1,nseq); + sindirect = true; + } + else if ( lines[cur].Left(10) == "ZNVSPECIAL" ) + { + if ( sznvspecial ) ThrowAbortException("dialogue '%s', line %d, sequence %d, duplicate 'ZNVSPECIAL' parameter.",sdlg,cur+1,nseq); + sznvspecial = true; + } + else ThrowAbortException("dialogue '%s', line %d, sequence %d, parameter not recognized",sdlg,cur+1,nseq); + cur++; + continue; + } + if ( lines[cur].Left(4) == "SEQ " ) + { + // begin dialogue + inseq = true; + schr = lines[cur].Mid(4); + // wipe params + sname = ""; + scnt = 0; + sdelay = 0; + sstartdelay = 0; + senddelay = 0; + schardelay = 0; + spausedelay = 0; + sindirect = false; + sznvspecial = false; + cur++; + continue; + } + ThrowAbortException("dialogue '%s', line %d, expected 'SEQ' directive",sdlg,cur+1); + return; + } + if ( indlg ) ThrowAbortException("line %d, premature end of file reached for dialogue '%s'",cur+1,sdlg); + if ( inseq ) ThrowAbortException("dialogue '%s', line %d, premature end of file reached for sequence %d",sdlg,cur+1,nseq); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\ce-- END OF FILE \cf'%s'\ce...\c-",Wads.GetLumpFullName(lmp)); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,""); + } + } + else if ( e.Name ~== "swwmdumpmonsters" ) + { + int i = 0; + bool bLastVanilla = false; + foreach ( cls:AllActorClasses ) + { + if ( cls.IsAbstract() ) continue; + if ( cls == 'ChexSoul' ) // last defined in gzdoom.pk3 + { + bLastVanilla = true; + continue; + } + if ( !bLastVanilla ) continue; + let def = GetDefaultByType(cls); + if ( !def.bISMONSTER && !def.bCOUNTKILL ) continue; + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"%s [%s]",def.GetClassName(),def.GetTag("NO TAG")); + i++; + } + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\n%d estimated monsters defined.",i); + } + } + + override void NetworkProcess( ConsoleEvent e ) + { + if ( e.IsManual ) return; + if ( e.Name.Left(16) ~== "swwmachievement." ) + { + let c = Actor.Spawn('PartyTime',players[e.Args[0]].mo.pos); + c.bSTANDSTILL = true; + if ( e.Args[0] == consoleplayer ) + { + c.A_StartSound("misc/achievement",CHAN_ITEM,CHANF_UI|CHANF_OVERLAP,attenuation:0.); + c.A_StartSound("misc/achievement2",CHAN_VOICE,CHANF_UI|CHANF_OVERLAP,attenuation:0.); + } + else + { + Console.Printf(String.Format(StringTable.Localize("$SWWM_CHEEVOREM"),players[e.Args[0]].GetUserName(),StringTable.Localize(e.Name.Mid(16)))); + c.A_StartSound("misc/achievement",CHAN_ITEM,CHANF_UI|CHANF_OVERLAP); + c.A_StartSound("misc/achievement2",CHAN_ITEM,CHANF_UI|CHANF_OVERLAP); + } + } + else if ( e.Name ~== "swwmsessionid" ) + { + let ti = ThinkerIterator.Create('SWWMSaveVerData',Thinker.STAT_STATIC); + let svd = SWWMSaveVerData(ti.Next()); + if ( !uid ) uid = e.Args[0]; + if ( svd && !svd.uid ) svd.uid = e.Args[0]; + } + } + + override void PostUiTick() + { + if ( !uid ) EventHandler.SendNetworkEvent("swwmsessionid",SystemTime.Now()); + if ( gamestate != GS_TITLELEVEL ) titlefirst = true; // we skip it + if ( (gametic > 0) && !(gametic%GameTicRate) ) + { + let pt = CVar.FindCVar('swwm_playtime'); + int ct = pt.GetInt(); + pt.SetInt(ct+1); + } + if ( gamestate != GS_LEVEL ) return; + CheckAllAchievements(); + if ( gametic != checktic ) return; + String cver = StringTable.Localize("$SWWM_SHORTVER"); + if ( tainted ) + { + let ti = ThinkerIterator.Create('SWWMSaveVerData',Thinker.STAT_STATIC); + let svd = SWWMSaveVerData(ti.Next()); + if ( !svd ) Console.Printf("\cgWARNING:\n \cjSave contains no version data. Issues may happen.\c-"); + else + { + Console.Printf("\cgWARNING:\n \cjVersion mismatch with save data. Issues may happen.\c-"); + Console.Printf("\cgSaved:\n \cj"..svd.ver.."\c-"); + Console.Printf("\cgCurrent:\n \cj"..cver.."\c-"); + } + } + } + + override void UiTick() + { + // Fancy crash effect + if ( (gamestate == GS_LEVEL) || (gamestate == GS_TITLELEVEL) ) + { + wasinmap = true; + timer = 0; + } + else if ( (gamestate == GS_FULLCONSOLE) && ((wasinmap && !players[consoleplayer].viewheight) || (timer > 0)) ) + { + wasinmap = false; + if ( timer == 1 ) + { + msgpick = Random[UIStuff](1,8); + String str = StringTable.Localize("$CRASHMSG"..msgpick.."A"); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cf%s\c-",str); + let hnd = SWWMBrutalHandler(StaticEventHandler.Find('SWWMBrutalHandler')); + if ( hnd && hnd.detected ) + { + S_StartSound("crash/glass",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + S_StartSound("crash/glass",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + } + else S_StartSound("crash/crash",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + } + else if ( timer == 70 ) + { + String str = StringTable.Localize("$CRASHMSG"..msgpick.."B"); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cf%s\c-",str); + S_StartSound("crash/curb",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); + } + else if ( timer == 140 ) + { + if ( isbd ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cfYou shouldn't have tried running this with Brutal Doom.\c-"); + else Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cfYou should probably screenshot this error and show it to Marisa.\c-"); + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cfLoaded Version:\n \cj%s\c-",StringTable.Localize("$SWWM_SHORTVER")); + if ( tainted ) Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,"\cfSavegame Version:\n \cj%s\c-",taintver); + } + timer++; + } + } +} + diff --git a/zscript/handler/swwm_statichandler_achievements.zsc b/zscript/handler/swwm_statichandler_achievements.zsc index 1d62a9ba5..aa39394c3 100644 --- a/zscript/handler/swwm_statichandler_achievements.zsc +++ b/zscript/handler/swwm_statichandler_achievements.zsc @@ -59,7 +59,7 @@ extend Class SWWMStaticHandler { achievementstate.Insert(a.basename,"2"); EventHandler.SendNetworkEvent("swwmachievement."..a.basename,consoleplayer); - let notif = new("SWWMAchievementNotification").Init(a.basename,a.icon,a.hasformat?a.maxval:0); + let notif = new('SWWMAchievementNotification').Init(a.basename,a.icon,a.hasformat?a.maxval:0); StatusBar.AttachMessage(notif,-3478); lastachievementnotify = gametic+200; } @@ -97,17 +97,17 @@ extend Class SWWMStaticHandler { achievementstate.Insert("everything","2"); EventHandler.SendNetworkEvent("swwmachievement."..achievementinfo[ev].basename,consoleplayer); - let notif = new("SWWMAchievementNotification").Init(achievementinfo[ev].basename,achievementinfo[ev].icon); + let notif = new('SWWMAchievementNotification').Init(achievementinfo[ev].basename,achievementinfo[ev].icon); StatusBar.AttachMessage(notif,-3478); lastachievementnotify = gametic+200; } } // parses achievements.lst file(s) - private void ParseAchievementList( out Array achievements ) + private void ParseAchievementList( Array &achievements ) { achievements.Clear(); - let lmp = Wads.FindLump("achievements.lst"); + let lmp = Wads.FindLumpFullName("achievements.lst"); if ( lmp == -1 ) ThrowAbortException("'achievements.lst' not found"); String dat; Array list, ln; @@ -115,36 +115,36 @@ extend Class SWWMStaticHandler while ( lmp != -1 ) { dat = Wads.ReadLump(lmp); - // fucking Windows + // Windows pls dat.Replace("\r",""); list.Clear(); dat.Split(list,"\n"); - for ( int i=0; i)(AllActorClasses[i]); + let c = (Class)(cls); if ( !c || (c == 'SWWMCollectible') ) continue; let def = GetDefaultByType(c); // check that we can collect it in this IWAD @@ -163,7 +163,7 @@ extend Class SWWMStaticHandler achievements.Push(ac); bidx++; } - lmp = Wads.FindLump("achievements.lst",lmp+1); + lmp = Wads.FindLumpFullName("achievements.lst",lmp+1); } } @@ -181,7 +181,7 @@ extend Class SWWMStaticHandler // decode static const int cypher[] = {0xAD,0xEA,0xDB,0xED}; String nstr = ""; - for ( int i=0; i keys; keys.Clear(); statestr.Split(keys,","); - for ( int i=0; i= 2 ) Console.Printf("Deleting bogus achievement state %s = %s",key,di.Value()); - achievementstate.Remove(key); + if ( developer >= 2 ) Console.Printf("Deleting bogus achievement state %s = %s",k,v); + achievementstate.Remove(k); } } di = DictionaryIterator.Create(achievementprogress); while ( di.Next() ) { - String key = di.Key(); + let k = di.Key(); + let v = di.Value(); bool deleteme = true; - for ( int i=0; i= 2 ) Console.Printf("Deleting bogus achievement progress %s = %s",key,di.Value()); - achievementprogress.Remove(key); + if ( developer >= 2 ) Console.Printf("Deleting bogus achievement progress %s = %s",k,v); + achievementprogress.Remove(k); } } - for ( int i=0; i= 2 ) Console.Printf("Adding missing achievement state %s",achievementinfo[i].basename); - achievementstate.Insert(achievementinfo[i].basename,"0"); + if ( developer >= 2 ) Console.Printf("Adding missing achievement state %s",inf.basename); + achievementstate.Insert(inf.basename,"0"); } - if ( achievementinfo[i].maxval && (achievementprogress.At(achievementinfo[i].basename) == "") ) + if ( inf.maxval && (achievementprogress.At(inf.basename) == "") ) { - if ( developer >= 2 ) Console.Printf("Adding missing achievement progress %s",achievementinfo[i].basename); - achievementprogress.Insert(achievementinfo[i].basename,"0"); + if ( developer >= 2 ) Console.Printf("Adding missing achievement progress %s",inf.basename); + achievementprogress.Insert(inf.basename,"0"); } } } @@ -303,7 +305,7 @@ extend Class SWWMStaticHandler // cheap encode static const int cypher[] = {0xAD,0xEA,0xDB,0xED}; String nstr = ""; - for ( int i=0; i lines; + int cur = -1; + for ( int lmp = Wads.FindLumpFullName("swwmdialogue",0,true); lmp != -1; lmp = Wads.FindLumpFullName("swwmdialogue",lmp+1,true) ) + { + String dat = Wads.ReadLump(lmp); + dat.Replace("\r",""); // just in case + lines.Clear(); + dat.Split(lines,"\n",0); + // strip comments and trim whitespace + for ( int i=0; i 0 ) msg.delay = sdelay; + if ( sstartdelay > 0 ) msg.startdelay = sstartdelay; + if ( senddelay > 0 ) msg.enddelay = senddelay; + if ( schardelay > 0 ) msg.chardelay = schardelay; + if ( spausedelay > 0 ) msg.pausedelay = spausedelay; + msg.znvspecial = sznvspecial; + if ( !gotseq ) + { + // first message? attach to hud here + StatusBar.AttachMessage(msg,-1232); + } + else + { + // additional message? append to last + if ( !lastmsg ) ThrowAbortException("dialogue '%s', line %d, lastmsg is null, this should not happen.",dlg,cur+1); + lastmsg.nextmsg = msg; + lastmsg.nextdirect = !sindirect; + } + gotseq = true; + inseq = false; + } + else if ( lines[cur].Left(5) == "NAME " ) + { + if ( sname != "" ) ThrowAbortException("dialogue '%s', line %d, duplicate 'NAME' parameter.",dlg,cur+1); + sname = lines[cur].Mid(5); + } + else if ( lines[cur].Left(4) == "CNT " ) + { + if ( scnt > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'CNT' parameter.",dlg,cur+1); + scnt = lines[cur].Mid(4).ToInt(); + } + else if ( lines[cur].Left(6) == "DELAY " ) + { + if ( sdelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'DELAY' parameter.",dlg,cur+1); + sdelay = lines[cur].Mid(6).ToInt(); + } + else if ( lines[cur].Left(11) == "STARTDELAY " ) + { + if ( sstartdelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'STARTDELAY' parameter.",dlg,cur+1); + sstartdelay = lines[cur].Mid(11).ToInt(); + } + else if ( lines[cur].Left(9) == "ENDDELAY " ) + { + if ( senddelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'ENDDELAY' parameter.",dlg,cur+1); + senddelay = lines[cur].Mid(9).ToInt(); + } + else if ( lines[cur].Left(10) == "CHARDELAY " ) + { + if ( schardelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'CHARDELAY' parameter.",dlg,cur+1); + schardelay = lines[cur].Mid(10).ToInt(); + } + else if ( lines[cur].Left(11) == "PAUSEDELAY " ) + { + if ( spausedelay > 0 ) ThrowAbortException("dialogue '%s', line %d, duplicate 'PAUSEDELAY' parameter.",dlg,cur+1); + spausedelay = lines[cur].Mid(11).ToInt(); + } + else if ( lines[cur].Left(8) == "INDIRECT" ) + { + if ( sindirect ) ThrowAbortException("dialogue '%s', line %d, duplicate 'INDIRECT' parameter.",dlg,cur+1); + sindirect = true; + } + else if ( lines[cur].Left(10) == "ZNVSPECIAL" ) + { + if ( sznvspecial ) ThrowAbortException("dialogue '%s', line %d, duplicate 'ZNVSPECIAL' parameter.",dlg,cur+1); + sznvspecial = true; + } + else ThrowAbortException("dialogue '%s', line %d, parameter not recognized",dlg,cur+1); + cur++; + continue; + } + if ( lines[cur].Left(4) == "SEQ " ) + { + // begin dialogue + inseq = true; + schr = lines[cur].Mid(4); + if ( schr == "" ) ThrowAbortException("dialogue '%s', line %d, sequence has no character.",dlg,cur+1); + lastmsg = msg; + msg = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_"..schr.."SNAME"),StringTable.Localize("$SWWM_"..schr.."NAME"),schr); + // wipe params + sname = ""; + scnt = 0; + sdelay = 0; + sstartdelay = 0; + senddelay = 0; + schardelay = 0; + spausedelay = 0; + sindirect = false; + sznvspecial = false; + cur++; + continue; + } + ThrowAbortException("dialogue '%s', line %d, expected 'SEQ' directive",dlg,cur+1); + return; + } + ThrowAbortException("dialogue '%s', cursor past end of file.",dlg); + } +} diff --git a/zscript/hud/swwm_hud.zsc b/zscript/hud/swwm_hud.zsc index 7844d1afc..22f5570db 100644 --- a/zscript/hud/swwm_hud.zsc +++ b/zscript/hud/swwm_hud.zsc @@ -22,57 +22,114 @@ Class MsgLine lastrep = rep; String nstr = str; if ( rep > 1 ) nstr.AppendFormat(" (x%d)",rep); - l = SmallFont.BreakLines(nstr,(type==PRINT_LOW)?sz:361); - if ( type != PRINT_LOW ) ls = SmallFont.BreakLines(nstr,211); + let fnt = Font.GetFont('TewiFont'); + l = fnt.BreakLines(nstr,(type==PRINT_LOW)?sz:364); + if ( type != PRINT_LOW ) ls = fnt.BreakLines(nstr,284); } } +Class KeyGet +{ + Class got; + int flashtime; +} + +Enum EMiniHUDFontColor +{ + MCR_DEMOHUD, + MCR_IBUKIHUD, + MCR_SAYAHUD, + MCR_KIRINHUD, + MCR_MARISAHUD, + MCR_VOIDHUD, + MCR_WHITE, + MCR_RED, + MCR_GREEN, + MCR_BLUE, + MCR_YELLOW, + MCR_CYAN, + MCR_PURPLE, + MCR_BRASS, + MCR_SILVER, + MCR_GOLD, + MCR_MANA, + MCR_CRIMSON, + MCR_ELDRITCH, + MCR_KINYLUM, + MCR_SYDON, + MCR_NOKOROKINYLUM, + MCR_DEMOBLUE, + MCR_DEMOPINK, + MCR_ORANGE, + MCR_GRASS, + MCR_MINT, + MCR_AQUA, + MCR_MAGENTA, + MCR_PINK, + MCR_SKIN, + MCR_FIRE, + MCR_SULFUR, + MCR_WITCH, + MCR_CYANBLU, + MCR_ICE, + MCR_PURPUR, + MCR_TOMATO, + MCR_BLURP, + MCR_PURB, + MCR_NOKRON, + MCR_KABBADON, + MCR_FLASH, + MCR_REDFLASH, + MCR_WHITEFLASH, + NUM_MINIHUD_COLOR +}; + Class SWWMStatusBar : BaseStatusBar { - TextureID StatusTex, WeaponTex, ScoreTex[3], InventoryTex, ChatTex[6], - HealthTex[6], FuelTex[2], DashTex, EnemyBTex, EnemyHTex[6], - GenericAmmoTex[3], MiniBox, AutoPage, bgtex; + Mixin SWWMUIRandom; + + TextureID StatusTex, WeaponTex, ScoreTex, InventoryTex, ChatTex[6], + HealthTex[9], FuelTex[2], DashTex, EnemyBTex, EnemyHTex[7], + GenericAmmoTex[3], AmmoTex[3], MiniBox[2], bgtex, FaceTex[21]; + + Font mSmallFont, mSmallFontOutline, mSmallFontOutlineAlt, mTinyFont, mTinyFontOutline, mTinyFontOutlineAlt, MiniHUDFont, MiniHUDFontOutline; + int mhudfontcol[NUM_MINIHUD_COLOR]; Array MainQueue, PickupQueue; - // sorted arrays of various elements - Array intpoints; - Array scoreobjs; - Array trackers; - Array senseitems; + transient ThinkerIterator cti; // the event handler, holding all sorts of stuff SWWMHandler hnd; // shared stuff - double hs; - double hsb; - double hsn; - double hss; - double hsi; - double hsd; - Vector2 ss; - Vector2 ssb; - Vector2 ssn; - Vector2 sss; - Vector2 ssi; - Vector2 ssd; - int margin; + double hsA, hsT; + double hs, hs0, hs1, hs2; + Vector2 ss, ss0, ss1, ss2; + int ymargin, xmargin; + int ymargin0; // for pickups/oneliners double FracTic; double FrameTime; - int PrevFrame; + double PrevFrame; int chatopen; - bool camhidden; - int pausetime; + int pausetime, pausecol; Vector2 pausepos, pausedir; + // constants + const MAXSHOWN = 4; + const MAXSHOWNBIG = 10; + const MAXPICKUP = 5; + const CHATDURATION = 25; + const MSGDURATION = 5; + const PICKDURATION = 3; + // shared from renderunderlay, needed for proper interpolation of some things Vector3 viewpos, viewrot; // projection data cache SWWMProjectionData projdata; - DynamicValueInterpolator HealthInter, ScoreInter, ScoreInter2, FuelInter, DashInter; + DynamicValueInterpolator ScoreInter; Inventory lastsel; Weapon lastwep; @@ -84,22 +141,25 @@ Class SWWMStatusBar : BaseStatusBar transient BrokenLines midl; int midsz; - bool koraxhack, mainframehack, bosshack; int puzzlecnt, realpuzzlecnt; SWWMWeaponTooltip ctip; + SWWMWeaponSwapTip cstip; + double mm_zoom; transient ThinkerIterator mi; // for map markers double minimapzoom, oldminimapzoom; // minimap constants const CLIPDIST = 800; // clip distance for minimap view, with rotation accounted const MAPVIEWDIST = 1132; // maximum distance for something to be considered visible (rounded up CLIPDIST*sqrt(2)) - const HALFMAPSIZE = 40; // half the size of the minimap draw region (unscaled) + const HALFMAPSIZE = 50; // half the size of the minimap draw region (unscaled) + const HALFMAPSIZE_SMALL = 40; // half of size when using small minimap // minimap colors (thats a lot of 'em) - int mm_colorset; - Color mm_backcolor, mm_cdwallcolor, mm_efwallcolor, mm_fdwallcolor, mm_gridcolor, mm_interlevelcolor, mm_intralevelcolor, mm_lockedcolor, mm_notseencolor, mm_portalcolor, mm_secretsectorcolor, mm_secretwallcolor, mm_specialwallcolor, mm_thingcolor, mm_thingcolor_citem, mm_thingcolor_friend, mm_thingcolor_item, mm_thingcolor_monster, mm_thingcolor_ncmonster, mm_thingcolor_shootable, mm_thingcolor_vipitem, mm_thingcolor_missile, mm_tswallcolor, mm_unexploredsecretcolor, mm_wallcolor, mm_xhaircolor, mm_yourcolor; - bool mm_displaylocks, mm_drawautopage; + Color mm_backcolor, mm_cdwallcolor, mm_efwallcolor, mm_fdwallcolor, mm_interlevelcolor, mm_intralevelcolor, mm_lockedcolor, mm_notseencolor, mm_portalcolor, mm_secretsectorcolor, mm_secretwallcolor, mm_specialwallcolor, mm_thingcolor, mm_thingcolor_citem, mm_thingcolor_friend, mm_thingcolor_item, mm_thingcolor_monster, mm_thingcolor_ncmonster, mm_thingcolor_shootable, mm_thingcolor_vipitem, mm_thingcolor_missile, mm_tswallcolor, mm_unexploredsecretcolor, mm_wallcolor, mm_yourcolor; + transient bool mm_cvfirstdraw; + transient Canvas mm_canvas; + transient TextureID mm_canvastex; // deathmatch stuff int playercount, rank, lead; @@ -108,1019 +168,74 @@ Class SWWMStatusBar : BaseStatusBar Array teamactive; Array teamscore; - override void FlushNotify() - { - // flush interpolators (useful since this virtual gets called - // when loading saves, too) - HealthInter.Reset(CPlayer.Health); - ScoreInter.Reset(SWWMCredits.Get(CPlayer)); - FuelInter.Reset((CPlayer.mo is 'Demolitionist')?int(Demolitionist(CPlayer.mo).dashfuel):0); - DashInter.Reset((CPlayer.mo is 'Demolitionist')?int((40-Demolitionist(CPlayer.mo).dashcooldown)*3.):0); - if ( level.maptime <= 1 ) - { - // flush ALL messages - MainQueue.Clear(); - PickupQueue.Clear(); - return; - } - // flush non-chat messages - for ( int i=0; i= PRINT_CHAT ) continue; - MainQueue.Delete(i); - i--; - } - // flush nametag - ntagstr = ""; - ntagtic = 0; - } + int PulsePhase; // for health pulsing - override bool ProcessMidPrint( Font fnt, String msg, bool bold ) - { - // hack lol - if ( msg.Left(15) ~== "swwmwpntooltip." ) - { - String wname = msg.Mid(15); - Class w = wname; - if ( w ) - { - let tt = new("SWWMWeaponTooltip").Init(w); - bool appended = false; - for ( SWWMWeaponTooltip t=ctip; t; t=t.next ) - { - if ( t.next ) continue; - appended = true; - t.next = tt; - break; - } - if ( !appended ) - { - ctip = tt; - AttachMessage(tt,-2910); - } - } - return true; - } - SWWMDirectMessage m, m2; - // more hack - if ( msg ~== "swwmultdoom2map20dlg" ) - { - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYAGOTCHAEND"; - m.seqcnt = 5; - m.delay = 40; - AttachMessage(m,-1232); - return true; - } - else if ( msg.Left(25) ~== "swwmsilverbulleteasteregg" ) - { - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - let num = msg.Mid(25).ToInt(); - switch ( num ) - { - case 1: - default: - m.seqname = "SAYAWASTEA"; - m.seqcnt = 1; - m.delay = 5; - m.startdelay = 10; - m.enddelay = 25; - break; - case 2: - m.seqname = "SAYAWASTEB"; - m.seqcnt = 1; - m.delay = 10; - m.startdelay = 20; - m.enddelay = 30; - break; - case 3: - m.seqname = "SAYAWASTEC"; - m.seqcnt = 1; - m.delay = 30; - m.startdelay = 15; - m.enddelay = 25; - break; - case 4: - m.seqname = "SAYAWASTED"; - m.seqcnt = 2; - m.delay = 40; - m.startdelay = 10; - m.enddelay = 20; - break; - case 5: - m.seqname = "SAYAWASTEE"; - m.seqcnt = 1; - m.delay = 20; - m.startdelay = 10; - m.enddelay = 30; - break; - case 6: - m.seqname = "SAYAWASTEF"; - m.seqcnt = 1; - m.delay = 50; - m.startdelay = 20; - m.enddelay = 30; - break; - } - AttachMessage(m,-1232); - return true; - } - // check for Korax lines, add them to chat (and reply to some of them) - bool koraxline = false; - if ( msg == StringTable.Localize("$TXT_ACS_MAP02_9_GREET") ) - koraxline = true; - else if ( msg == StringTable.Localize("$TXT_ACS_MAP02_11_AREYO") ) - { - EventHandler.SendNetworkEvent("swwmkoraxline",0,consoleplayer); - koraxline = true; - if ( !swwm_nomapmsg ) - { - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYAGREETA"; - m.seqcnt = 3; - m.delay = 150; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "SAYAGREETB"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAGREETC"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "SAYAGREETD"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAGREETE"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "SAYAGREETF"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - } - } - else if ( msg == StringTable.Localize("$TXT_ACS_MAP13_11_MYSER") ) - { - EventHandler.SendNetworkEvent("swwmkoraxline",1,consoleplayer); - koraxline = true; - if ( !swwm_nomapmsg ) - { - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYABLOODA"; - m.seqcnt = 2; - m.delay = 220; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYABLOODB"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYABLOODC"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYABLOODD"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - } - } - else if ( msg == StringTable.Localize("$TXT_ACS_MAP22_27_YOUHA") ) - koraxline = true; - else if ( msg == StringTable.Localize("$TXT_ACS_MAP22_29_ITHIN") ) - { - EventHandler.SendNetworkEvent("swwmkoraxline",2,consoleplayer); - koraxline = true; - if ( !swwm_nomapmsg ) - { - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYAGAMEA"; - m.seqcnt = 2; - m.delay = 200; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYAGAMEB"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAGAMEC"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - } - } - else if ( msg == StringTable.Localize("$TXT_ACS_MAP27_8_WORSH") ) - koraxline = true; - else if ( msg == StringTable.Localize("$TXT_ACS_MAP27_10_THENA") ) - { - EventHandler.SendNetworkEvent("swwmkoraxline",3,consoleplayer); - koraxline = true; - if ( !swwm_nomapmsg ) - { - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINWORSHIPA"; - m.seqcnt = 1; - m.delay = 150; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINWORSHIPB"; - m2.seqcnt = 1; - m2.delay = 40; - m2.enddelay = 10; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "KIRINWORSHIPC"; - m2.seqcnt = 1; - m2.delay = 10; - m2.enddelay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINWORSHIPD"; - m2.seqcnt = 2; - m2.delay = 10; - m.nextmsg = m2; - m.nextdirect = true; - } - } - else if ( msg == StringTable.Localize("$TXT_ACS_MAP35_12_AREYO") ) - koraxline = true; - else if ( msg == StringTable.Localize("$TXT_ACS_MAP35_14_TOFAC") ) - { - EventHandler.SendNetworkEvent("swwmkoraxline",4,consoleplayer); - koraxline = true; - if ( !swwm_nomapmsg ) - { - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m.seqname = "SAYAMASTERSA"; - m.seqcnt = 2; - m.delay = 150; - m.enddelay = 60; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYAMASTERSB"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAMASTERSC"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "SAYAMASTERSD"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "SAYAMASTERSE"; - m2.seqcnt = 1; - m2.delay = 40; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "SAYAMASTERSF"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - } - } - if ( koraxline ) - { - koraxhack = true; - Console.Printf(msg); - koraxhack = false; - return true; - } - bool ispuzzle = false; - let s = SWWMStats.Find(players[consoleplayer]); - if ( s ) - { - puzzlecnt = s.puzzlecnt; - realpuzzlecnt = s.realpuzzlecnt; - } - // check for puzzle solving lines (oh god why), and increment the achievement - if ( ((level.mapname ~== "MAP04") || (level.mapname ~== "MAP05")) - && ((msg == StringTable.Localize("$TXT_ACS_MAP04_9_ONEHA")) - || (msg == StringTable.Localize("$TXT_ACS_MAP04_11_ONETH")) - || (msg == StringTable.Localize("$TXT_ACS_MAP05_6_ONETH"))) ) - { - if ( puzzlecnt >= 4 ) puzzlecnt = 0; - puzzlecnt++; - realpuzzlecnt++; - ispuzzle = true; - } - else if ( ((level.mapname ~== "MAP08") || (level.mapname ~== "MAP09") || (level.mapname ~== "MAP10")) - && ((msg == StringTable.Localize("$TXT_ACS_MAP08_6_ONESI")) - || (msg == StringTable.Localize("$TXT_ACS_MAP09_6_ONESI")) - || (msg == StringTable.Localize("$TXT_ACS_MAP10_6_ONESI"))) ) - { - if ( (puzzlecnt < 4) || (puzzlecnt >= 10) ) puzzlecnt = 4; - puzzlecnt++; - realpuzzlecnt++; - ispuzzle = true; - } - else if ( ((level.mapname ~== "MAP28") || (level.mapname ~== "MAP30") || (level.mapname ~== "MAP34")) - && ((msg == StringTable.Localize("$TXT_ACS_MAP28_6_ONENI")) - || (msg == StringTable.Localize("$TXT_ACS_MAP30_6_ONENI")) - || (msg == StringTable.Localize("$TXT_ACS_MAP34_1_ONENI"))) ) - { - if ( (puzzlecnt < 10) || (puzzlecnt >= 19) ) puzzlecnt = 10; - puzzlecnt++; - realpuzzlecnt++; - ispuzzle = true; - } - // deathkings - else if ( ((level.mapname ~== "MAP44") || (level.mapname ~== "MAP46")) - && ((msg == StringTable.Localize("$TXT_ACS_MAP44_1_THREE")) - || (msg == StringTable.Localize("$TXT_ACS_MAP44_2_TWOMO")) - || (msg == StringTable.Localize("$TXT_ACS_MAP44_3_ONEMO")) - || (msg == StringTable.Localize("$TXT_ACS_MAP44_4_THEPU")) - || (msg == StringTable.Localize("$TXT_ACS_MAP44_10_ONETH")) - || (msg == StringTable.Localize("$TXT_ACS_MAP44_11_TWOTH")) - || (msg == StringTable.Localize("$TXT_ACS_MAP46_8_ONEFO"))) ) - { - if ( (puzzlecnt < 19) || (puzzlecnt >= 30) ) puzzlecnt = 19; - puzzlecnt++; - realpuzzlecnt++; - ispuzzle = true; - } - else if ( (level.mapname ~== "MAP51") - && ((msg == StringTable.Localize("$TXT_ACS_MAP51_8_ONETH")) - || (msg == StringTable.Localize("$TXT_ACS_MAP51_9_TWOTH")) - || (msg == StringTable.Localize("$TXT_ACS_MAP51_10_THECR"))) ) - { - if ( (puzzlecnt < 30) || (puzzlecnt >= 34) ) puzzlecnt = 30; - puzzlecnt++; - realpuzzlecnt++; - ispuzzle = true; - } - if ( ispuzzle ) - { - EventHandler.SendNetworkEvent("swwmstorepuzzlecnt",consoleplayer,puzzlecnt,realpuzzlecnt); - int tpuz = SWWMUtility.IsDeathkings()?15:19; - if ( realpuzzlecnt >= tpuz ) SWWMUtility.MarkAchievement("puzzle",players[consoleplayer]); - if ( !swwm_nomapmsg ) - { - switch ( puzzlecnt ) - { - case 1: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLEA"; - m.seqcnt = 2; - m.delay = 90; - AttachMessage(m,-1232); - break; - case 2: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLEB"; - m.seqcnt = 1; - m.delay = 80; - AttachMessage(m,-1232); - break; - case 3: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLEC"; - m.seqcnt = 2; - m.delay = 70; - AttachMessage(m,-1232); - break; - case 5: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLED"; - m.seqcnt = 2; - m.delay = 70; - AttachMessage(m,-1232); - break; - case 8: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLEE"; - m.seqcnt = 2; - m.delay = 60; - AttachMessage(m,-1232); - break; - case 11: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLEF"; - m.seqcnt = 3; - m.delay = 60; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINPUZZLEG"; - m2.seqcnt = 1; - m.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "KIRINPUZZLEH"; - m2.seqcnt = 1; - m.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINPUZZLEI"; - m2.seqcnt = 2; - m.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - break; - case 20: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLEJ"; - m.seqcnt = 2; - m.delay = 80; - AttachMessage(m,-1232); - break; - case 30: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLEK"; - m.seqcnt = 1; - m.delay = 60; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "KIRINPUZZLEL"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "KIRINPUZZLEM"; - m2.seqcnt = 1; - m2.delay = 10; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINPUZZLEN"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "KIRINPUZZLEO"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINPUZZLEP"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_IBUKISNAME"),StringTable.Localize("$SWWM_IBUKINAME"),"Ibuki"); - m2.seqname = "KIRINPUZZLEQ"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - break; - case 31: - m = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m.seqname = "KIRINPUZZLER"; - m.seqcnt = 3; - m.delay = 60; - AttachMessage(m,-1232); - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINPUZZLES"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_KIRINSNAME"),StringTable.Localize("$SWWM_KIRINNAME"),"Kirin"); - m2.seqname = "KIRINPUZZLET"; - m2.seqcnt = 1; - m2.delay = 30; - m.nextmsg = m2; - m.nextdirect = true; - m = m2; - m2 = new("SWWMDirectMessage").Init(StringTable.Localize("$SWWM_SAYASNAME"),StringTable.Localize("$SWWM_SAYANAME"),"Saya"); - m2.seqname = "KIRINPUZZLEU"; - m2.seqcnt = 1; - m2.delay = 20; - m.nextmsg = m2; - m.nextdirect = true; - break; - } - } - } - // rampancy fun stuff - bool mainframeline = false; - if ( (msg == StringTable.Localize("$AISPAWN_TEXT1")) - || (msg == StringTable.Localize("$AISPAWN_TEXT2")) - || (msg == StringTable.Localize("$AISEE_TEXT")) - || (msg == StringTable.Localize("$AIACTIVE_TEXT1")) - || (msg == StringTable.Localize("$AIACTIVE_TEXT2")) - || (msg == StringTable.Localize("$AIPAIN_TEXT1")) - || (msg == StringTable.Localize("$AIPAIN_TEXT2")) - || (msg == StringTable.Localize("$AIPAIN_TEXT3")) - || (msg == StringTable.Localize("$AIPAIN_TEXT4")) - || (msg == StringTable.Localize("$AIPAIN_TEXT5")) - || (msg == StringTable.Localize("$AIPAIN_TEXT6")) - || (msg == StringTable.Localize("$AIPAIN_TEXT7")) ) - mainframeline = true; - if ( mainframeline ) - { - mainframehack = true; - Console.Printf(msg); - mainframehack = false; - return true; - } - if ( (msg == StringTable.Localize("$BOSSLINE_IOS")) - || (msg == StringTable.Localize("$BOSSLINE_ARCHANGELUS")) - || (msg == StringTable.Localize("$BOSSLINE_DSPARIL")) ) - { - bosshack = true; - Console.Printf(msg); - bosshack = false; - return true; - } - if ( !fnt || (fnt == smallfont) ) - { - midstr = msg; - midtic = level.totaltime; - midtype = bold?2:0; - return true; - } - if ( (fnt == bigfont) || (fnt == originalbigfont) ) - { - midstr = msg; - midtic = level.totaltime; - midtype = bold?3:1; - return true; - } - return false; - } + // for flashing some elements in the hud + Array keyflash; + int oldkills, olditems, oldsecrets; + int oldtkills, oldtitems, oldtsecrets; + int oldpkills, oldpitems, oldpsecrets; + transient int killflash, itemflash, secretflash; + transient int tkillflash, titemflash, tsecretflash; + transient int pkillflash, pitemflash, psecretflash; - override bool ProcessNotify( EPrintLevel printlevel, String outline ) - { - if ( koraxhack ) - { - // treat as chat message - printlevel = PRINT_CHAT; - outline = "\cmKorax\c-: "..outline; - } - else if ( mainframehack ) - { - // same here, hi yholl - printlevel = PRINT_CHAT; - outline = "\cmAI Mainframe\c-: "..outline; - } - else if ( bosshack ) - { - // no need to attach name, these are done specifically for this - printlevel = PRINT_CHAT; - } - // append chat messages to full history - if ( (printlevel == PRINT_CHAT) || (printlevel == PRINT_TEAMCHAT) ) - EventHandler.SendNetworkEvent("swwmstoremessage."..outline.Left(outline.Length()-1),level.totaltime,printlevel,consoleplayer); - // ignore during intermission - if ( gamestate != GS_LEVEL ) return false; - if ( (printlevel < PRINT_LOW) || (printlevel > PRINT_TEAMCHAT) ) return true; // we couldn't care less about these - let m = new("MsgLine"); - m.str = outline.Left(outline.Length()-1); // strip newline - m.type = printlevel; - m.tic = level.totaltime; - m.rep = 1; - if ( printlevel == PRINT_LOW ) - { - // check if repeated - for ( int i=0; i AmmoSlots[18]; // ammo type on each slot + String AmmoNames[18]; // ammo 4-letter names + transient int HealthFlash; // flash when healing + int LastHealth; // to detect when to flash + int LagHealth[10]; // for delayed decay bar - private bool CmpInterest( SWWMInterest a, SWWMInterest b ) - { - if ( !a || !b ) return true; - return a.type < b.type; - } + SmoothDynamicValueInterpolator HealthInter, FuelInter, DashInter; + SmoothLinearValueInterpolator LagHealthInter; - private bool CmpDist( Vector3 a, Vector3 b ) - { - double dista = level.Vec3Diff(viewpos,a).length(); - double distb = level.Vec3Diff(viewpos,b).length(); - return (dista < distb); - } + // please do not misread + int cummscoreup, cummspanup, cummflashup; + int cummscoredn, cummspandn, cummflashdn; - // quicksort (points of interest) - private int partition_intpoints( Array a, int l, int h ) + // called by static handler when loading a game + // forcibly flushes our interpolators + void Flush() { - SWWMInterest pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpInterest(pv,a[j]) || CmpDist(pv.pos,a[j].pos) ) - { - i++; - SWWMInterest tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - SWWMInterest tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_intpoints( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_intpoints(a,l,h); - qsort_intpoints(a,l,p-1); - qsort_intpoints(a,p+1,h); - } - - // quicksort (combat trackers) - private int partition_trackers( Array a, int l, int h ) - { - SWWMCombatTracker pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpTarget(pv,a[j]) || CmpDist(pv.pos,a[j].pos) ) - { - i++; - SWWMCombatTracker tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - SWWMCombatTracker tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_trackers( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_trackers(a,l,h); - qsort_trackers(a,l,p-1); - qsort_trackers(a,p+1,h); - } - - // quicksort (score objects) - private int partition_scoreobjs( Array a, int l, int h ) - { - SWWMScoreObj pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpScore(pv,a[j]) || CmpDist(pv.pos,a[j].pos) ) - { - i++; - SWWMScoreObj tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - SWWMScoreObj tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_scoreobjs( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_scoreobjs(a,l,h); - qsort_scoreobjs(a,l,p-1); - qsort_scoreobjs(a,p+1,h); - } - - // quicksort (item sense) - private int partition_itemsense( Array a, int l, int h ) - { - SWWMItemSense pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpDist(pv.pos,a[j].pos) ) - { - i++; - SWWMItemSense tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - SWWMItemSense tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_itemsense( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_itemsense(a,l,h); - qsort_itemsense(a,l,p-1); - qsort_itemsense(a,p+1,h); - } - - // quicksort (player scores) - private int partition_playerscore( Array a, int l, int h ) - { - PlayerInfo pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( pv.fragcount < a[j].fragcount ) - { - i++; - PlayerInfo tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - PlayerInfo tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_playerscore( Array a, int l, int h ) - { - if ( l >= h ) return; - int p = partition_playerscore(a,l,h); - qsort_playerscore(a,l,p-1); - qsort_playerscore(a,p+1,h); + FlushStatus(); + FlushWeapons(); } // separated so they can be auto-ticked by the demolitionist menu void TickInterpolators() { - HealthInter.Update(CPlayer.health); - if ( !hnd ) hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - int s1, s2; - [s1, s2] = SWWMCredits.Get(CPlayer); - ScoreInter.Update(s1); - if ( ScoreInter.GetValue() >= ScoreInter.mCurrentValue ) ScoreInter2.Update(s2); + // ensure money updates when using the store + TickTopStuffInterpolators(); + // ensure healthbar updates when buying healing items + TickStatusInterpolators(); + // ensure ammo flashes when buying + TickWeaponInterpolators(); } override void Tick() { Super.Tick(); + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); pausetime = gametic; SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); - int maxtargetnum = max(0,swwm_maxtargets); - int maxscorenum = max(0,swwm_maxscorenums); - int maxdamnum = max(0,swwm_maxdamnums); - // prune old messages - for ( int i=0; i PRINT_HIGH) && (level.totaltime < (MainQueue[i].tic+35*swwm_chatduration)) ) continue; - MainQueue.Delete(i); - i--; - } - // update interpolators + // interpolators first TickInterpolators(); - let d = Demolitionist(CPlayer.mo); - if ( d ) - { - FuelInter.Update(int(d.dashfuel)); - DashInter.Update(int((40-d.dashcooldown)*3.)); - } - else - { - FuelInter.Update(0); - DashInter.Update(0); - } - // let weapons update their own interpolators - if ( CPlayer.ReadyWeapon is 'SWWMWeapon' ) - SWWMWeapon(CPlayer.ReadyWeapon).HudTick(); - double desiredzoom = clamp(swwm_mm_zoom,.5,level.allmap?2.:1.); - if ( (minimapzoom != swwm_mm_zoom) || (oldminimapzoom != swwm_mm_zoom) ) - { - oldminimapzoom = minimapzoom; - double diff = .1*(desiredzoom-minimapzoom); - minimapzoom += diff; - if ( abs(minimapzoom-desiredzoom) <= .01 ) - minimapzoom = desiredzoom; - } - let cam = players[consoleplayer].camera; - Vector3 viewvec = (cos(viewrot.x)*cos(viewrot.y),sin(viewrot.x)*cos(viewrot.y),sin(-viewrot.y)); - int sz; - if ( level.allmap && swwm_pois ) - { - // update omnisight stuff - if ( intpoints.Size() != hnd.intpoints_cnt ) - intpoints.Resize(hnd.intpoints_cnt); - int i = 0; - for ( SWWMInterest poi=hnd.intpoints; poi; poi=poi.next ) - { - // ignore points clearly outside of player view - Vector3 tdir = level.Vec3Diff(viewpos,poi.pos); - if ( viewvec dot tdir < 0 ) continue; - Vector3 ndc = SWWMUtility.ProjectPoint(projdata,viewpos+tdir); - if ( ndc.z >= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - if ( !SWWMUtility.TestScreenBounds(projdata,vpos) ) continue; - intpoints[i++] = poi; - } - // squeeze if some were discarded - if ( i != hnd.intpoints_cnt ) - intpoints.Resize(i); - // sort by distance - qsort_intpoints(intpoints,0,intpoints.Size()-1); - } - if ( swwm_targeter ) - { - // update target stuff - if ( trackers.Size() != hnd.trackers_cnt ) - trackers.Resize(hnd.trackers_cnt); - int i = 0; - for ( SWWMCombatTracker trk=hnd.trackers; trk; trk=trk.next ) - { - // ignore dormant/invisible targets - if ( !trk.mytarget || trk.mytarget.bDORMANT || trk.mytarget.bINVISIBLE ) continue; - // ignore local player - if ( trk.mytarget == CPlayer.mo ) continue; - if ( trk.mytarget is 'PlayerGone' ) continue; // ignore "gone" players - int mtime = 35; - if ( level.allmap && (trk.lasthealth > 0) ) mtime += 105; - if ( level.maptime > trk.updated+mtime ) continue; - // ignore trackers clearly outside of player view - Vector3 tdir = level.Vec3Diff(viewpos,trk.pos); - if ( viewvec dot tdir < 0 ) continue; - Vector3 ndc = SWWMUtility.ProjectPoint(projdata,viewpos+tdir); - if ( ndc.z >= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - if ( !SWWMUtility.TestScreenBounds(projdata,vpos) ) continue; - trackers[i++] = trk; - } - // squeeze if some were discarded - if ( i != hnd.trackers_cnt ) - trackers.Resize(i); - // sort by distance (give priority to players) - qsort_trackers(trackers,0,trackers.Size()-1); - // cap if limited (must cap after sorting, though, otherwise it'll look weird) - if ( maxtargetnum && (trackers.Size() > maxtargetnum) ) - { - int endo = trackers.Size()-maxtargetnum; - // we gotta push the frontmost bars to the start, due to the inverted draw order - for ( int i=maxtargetnum-1; i>=0; i-- ) - trackers[i] = trackers[endo+i]; - trackers.Resize(maxtargetnum); - } - } - else trackers.Clear(); - // update floating scores, adding the scorenums first, then the damnums - int total_sz = 0; - if ( swwm_scorenums ) total_sz += maxscorenum?min(maxscorenum,hnd.scorenums_cnt):hnd.scorenums_cnt; - if ( swwm_healthnums ) total_sz += maxdamnum?min(maxdamnum,hnd.damnums_cnt):hnd.damnums_cnt; - if ( scoreobjs.Size() != total_sz ) - scoreobjs.Resize(total_sz); - int i = 0; - if ( swwm_scorenums ) - { - for ( SWWMScoreObj scr=hnd.scorenums; scr && (i= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - if ( !SWWMUtility.TestScreenBounds(projdata,vpos) ) continue; - scoreobjs[i++] = scr; - } - } - if ( swwm_healthnums ) - { - for ( SWWMScoreObj scr=hnd.damnums; scr && (i= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - if ( !SWWMUtility.TestScreenBounds(projdata,vpos) ) continue; - scoreobjs[i++] = scr; - } - } - // squeeze if some were discarded - if ( i != total_sz ) - scoreobjs.Resize(i); - // sort by distance - qsort_scoreobjs(scoreobjs,0,scoreobjs.Size()-1); - // check if player has item sense - let demo = Demolitionist(CPlayer.mo); - if ( demo && (demo.itemsense_cnt > 0) ) - { - if ( senseitems.Size() != demo.itemsense_cnt ) - senseitems.Resize(demo.itemsense_cnt); - i = 0; - for ( SWWMItemSense s=demo.itemsense; s; s=s.next ) - { - if ( !level.allmap && (level.maptime > s.updated+35) ) continue; - // ignore points clearly outside of player view - Vector3 tdir = level.Vec3Diff(viewpos,s.pos); - if ( viewvec dot tdir < 0 ) continue; - Vector3 ndc = SWWMUtility.ProjectPoint(projdata,viewpos+tdir); - if ( ndc.z >= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - if ( !SWWMUtility.TestScreenBounds(projdata,vpos) ) continue; - senseitems[i++] = s; - } - // squeeze if some were discarded - if ( i != demo.itemsense_cnt ) - senseitems.Resize(i); - // sort by distance - qsort_itemsense(senseitems,0,senseitems.Size()-1); - } + // subcategory tickers + TickMessages(); + TickStatus(); + TickTopStuff(); + TickWeapons(); // part of gross hackery to override nametag display if ( CPlayer.inventorytics > 0 ) { @@ -1142,1586 +257,192 @@ Class SWWMStatusBar : BaseStatusBar } } lastwep = CPlayer.PendingWeapon; - // make sure vanilla nametags don't display - DetachMessageID(0x5745504e); // WEPN - DetachMessageID(0x53494e56); // SINV - // also try with different endianness, just in case - DetachMessageID(0x4e504557); // WEPN - DetachMessageID(0x564e4953); // SINV - // deathmatch stuff - if ( !deathmatch ) return; - if ( teamplay ) - { - if ( teamactive.Size() != Teams.Size() ) teamactive.Resize(Teams.Size()); - if ( teamscore.Size() != Teams.Size() ) teamscore.Resize(Teams.Size()); - for ( int i=0; i CPlayer.fragcount ) - rank += 1; - else if ( players[i].fragcount == CPlayer.fragcount ) - tiedscore = true; - if ( players[i].fragcount > highscore ) - highscore = players[i].fragcount; - } - if ( sortplayers.Size() != playercount ) sortplayers.Resize(playercount); - for ( int i=0, j=0; i 1000. ) return String.Format("\cj%d\cc%s",int(meters/1000.),StringTable.Localize("$SWWM_UNIT_KILOMETER")); - return String.Format("\cj%d\cc%s",int(meters),StringTable.Localize("$SWWM_UNIT_METER")); - } - - private void DrawTarget() - { - // don't draw when dead or with automap open - if ( (CPlayer.health <= 0) || automapactive ) return; - SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); - int cliptop = projdata.viewy, clipbottom = projdata.viewy+projdata.viewh, - clipleft = projdata.viewx, clipright = projdata.viewx+projdata.vieww; - // points of interest - String tag; - if ( level.allmap ) - { - for ( int i=0; i= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - if ( poi.type == INT_Key ) tag = String.Format("\cf%s\c-",poi.keytag); - else if ( poi.type == INT_Exit ) - { - if ( (poi.trackedline.special == Teleport_EndGame) - || ((poi.trackedline.special == Exit_Secret) && (level.nextsecretmap.Left(6) == "enDSeQ")) - || ((poi.trackedline.special == Exit_Normal) && (level.nextmap.Left(6) == "enDSeQ")) ) - tag = String.Format("\cg%s\c-",StringTable.Localize("$SWWM_EEXIT")); - else if ( poi.trackedline.special == Exit_Secret ) - { - LevelInfo l = LevelInfo.FindLevelInfo(level.nextsecretmap); - if ( l && l.isValid() ) tag = String.Format("\cx%s:\c- %s\c-",StringTable.Localize("$SWWM_SEXIT"),l.LookupLevelName()); - else tag = String.Format("\cx%s\c-",StringTable.Localize("$SWWM_SEXIT")); - } - else if ( (poi.trackedline.special == Exit_Normal) || ((poi.trackedline.special == ACS_Execute) && (poi.trackedline.Args[0] == -Int('E1M8_KNOCKOUT'))) ) - { - LevelInfo l = LevelInfo.FindLevelInfo(level.nextmap); - if ( l && l.isValid() ) tag = String.Format("\cy%s:\c- %s\c-",StringTable.Localize("$SWWM_NEXIT"),l.LookupLevelName()); - else tag = String.Format("\cy%s\c-",StringTable.Localize("$SWWM_NEXIT")); - } - else if ( poi.trackedline.special == Teleport_NewMap ) - { - LevelInfo l = LevelInfo.FindLevelByNum(poi.trackedline.Args[0]); - if ( l && l.isValid() ) tag = String.Format("\cy%s\c-%s\c-",StringTable.Localize("$SWWM_EXIT"),l.LookupLevelName()); - else tag = String.Format("\cy%s\c-",StringTable.Localize("$SWWM_NEXIT")); - } - else if ( ((poi.trackedline.special == ACS_Execute) || (poi.trackedline.special == ACS_ExecuteAlways)) && (poi.trackedline.Args[0] == -Int('MapFadeOut')) ) - { - LevelInfo l = LevelInfo.FindLevelByNum(poi.trackedline.Args[2]); - if ( (level.levelnum != 1) && l && l.isValid() ) tag = String.Format("\cy%s\c-%s\c-",StringTable.Localize("$SWWM_EXIT"),l.LookupLevelName()); - else tag = String.Format("\cy%s\c-",StringTable.Localize("$SWWM_NEXIT")); - } - } - Screen.DrawText(smallfont2,Font.CR_WHITE,(vpos.x-hsi*smallfont2.StringWidth(tag)/2.)/hsi,(vpos.y-hsi*smallfont2.GetHeight()/2.)/hsi,tag,DTA_VirtualWidthF,ssi.x,DTA_VirtualHeightF,ssi.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - tag = String.Format("\cu(%s\cu)\c-",FormatDist(tdir.length())); - Screen.DrawText(smallfont2,Font.CR_WHITE,(vpos.x-hsi*smallfont2.StringWidth(tag)/2.)/hsi,(vpos.y+hsi*smallfont2.GetHeight()/2.)/hsi,tag,DTA_VirtualWidthF,ssi.x,DTA_VirtualHeightF,ssi.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - } - } - // sensed items - let demo = Demolitionist(CPlayer.mo); - if ( demo && (demo.itemsense_cnt > 0) ) - { - for ( int i=0; i= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - int mtime = level.allmap?70:35; - double alph = clamp(((s.updated+mtime)-(level.maptime+fractic))/35.,0.,1.); - alph *= clamp(1.5-1.5*(tdir.length()/(level.allmap?1200.:800.)),0.,1.); - tag = s.tag; - Screen.DrawText(smallfont2,s.vipitem?Font.CR_PURPLE:s.scoreitem?Font.CR_GOLD:Font.CR_GREEN,(vpos.x-hsd*smallfont2.StringWidth(tag)/2.)/hsd,(vpos.y-hsd*smallfont2.GetHeight()/2.)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - tag = String.Format("\cu(%s\cu)\c-",FormatDist(tdir.length())); - Screen.DrawText(smallfont2,Font.CR_WHITE,(vpos.x-hsd*smallfont2.StringWidth(tag)/2.)/hsd,(vpos.y+hsd*smallfont2.GetHeight()/2.)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - if ( s.item is 'SWWMRespawnTimer' ) - { - tag = String.Format(StringTable.Localize("$SWWM_TRESPAWN"),s.item.special2/GameTicRate); - Screen.DrawText(smallfont2,Font.CR_WHITE,(vpos.x-hsd*smallfont2.StringWidth(tag)/2.)/hsd,(vpos.y+hsd*smallfont2.GetHeight()*2)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - } - } - } - // targetting array - for ( int i=0; i= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - tag = targ.mytag; - if ( (tag != "") && !targ.myplayer ) - { - if ( targ.legged && (targ.mutated || swwm_ldspoil) ) - { - if ( StringTable.Localize("$SWWM_LEGPREFIX") == "R" ) tag = tag..StringTable.Localize("$SWWM_LEG"); - else tag = StringTable.Localize("$SWWM_LEG")..tag; - } - if ( targ.bBOSS ) - { - if ( swwm_bigtags ) tag = "\cx★\c- "..tag.." \cx★\c-"; - else tag = "\cx*\c- "..tag.." \cx*\c-"; // miniwi has no stars - } - if ( targ.bFRIENDLY ) tag = "\cg♥\c- "..tag.." \cg♥\c-"; - } - int mtime = 35; - if ( level.allmap && (targ.lasthealth > 0) ) mtime += 105; - double alph = clamp(((targ.updated+mtime)-(level.maptime+fractic))/35.,0.,1.); - Vector2 barsiz = TexMan.GetScaledSize(EnemyBTex); - barsiz.x *= hsb; - barsiz.y *= hsb; - Vector2 barpos = vpos-(barsiz/2.); - barpos.y -= 16.; - Font fnt = swwm_bigtags?smallfont:smallfont2; - int col = Font.CR_WHITE; - if ( teamplay ) - { - int team = targ.myplayer.GetTeam(); - if ( team != -1 ) col = Font.FindFontColor(Teams[team].mName); // this works in practice because team names are the same as their text colors - if ( col == -1 ) col = Font.CR_WHITE; - } - if ( swwm_targettags || targ.myplayer && (tag != "") ) - Screen.DrawText(fnt,col,(barpos.x+barsiz.x/2.-(fnt.StringWidth(tag)*hsb)/2.)/hsb,(barpos.y-fnt.GetHeight()*hsb)/hsb,tag,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - Screen.DrawTexture(EnemyBTex,false,barpos.x/hsb,barpos.y/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - double ht = clamp(targ.intp.GetValue(),0,targ.maxhealth*100); - double hw = (min(ht,targ.maxhealth)*50.)/targ.maxhealth; - if ( targ.mytarget && (targ.mytarget.bInvulnerable || (targ.myplayer && (targ.myplayer.cheats&(CF_GODMODE|CF_GODMODE2))) || targ.mytarget.FindInventory("InvinciballPower")) ) - { - Screen.DrawTexture(EnemyHTex[4],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - } - else - { - Screen.DrawTexture(EnemyHTex[0],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - if ( ht > targ.maxhealth ) - { - hw = (min(ht-targ.maxhealth,targ.maxhealth)*50.)/targ.maxhealth; - Screen.DrawTexture(EnemyHTex[1],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - } - if ( ht > targ.maxhealth*2 ) - { - hw = (min(ht-targ.maxhealth*2,targ.maxhealth*3)*50.)/(targ.maxhealth*3); - Screen.DrawTexture(EnemyHTex[2],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - } - if ( ht > targ.maxhealth*5 ) - { - hw = (min(ht-targ.maxhealth*5,targ.maxhealth*5)*50.)/(targ.maxhealth*5); - Screen.DrawTexture(EnemyHTex[3],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - } - } - if ( targ.mytarget && targ.mytarget.FindInventory("DivineSpriteEffect") ) - { - double falph = clamp((ht-targ.maxhealth*10)/(targ.maxhealth*60.),0.,1.); - Screen.DrawTexture(EnemyHTex[5],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph*falph,DTA_LegacyRenderStyle,STYLE_Add,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - } - } - // floating kill scores and others - for ( int i=0; i= 1. ) continue; - Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - tag = String.Format("%+d",snum.score); - double alph = clamp((snum.lifespan+fractic)/35.,0.,1.); - Vector2 fo = (0,0); - bool isscore = false; - if ( snum.damnum ) - { - if ( snum.score < 0 ) - { - // damage falls down - int initspd = (128-snum.seed); - int boostup = 64+snum.seed2; - fo.x = (.05*initspd)*((snum.initialspan-(snum.lifespan-fractic))**.8); - fo.y = -((snum.initialspan-(snum.lifespan-fractic))**1.5)+boostup*sin((90./snum.initialspan)*(level.maptime+fractic-snum.starttic)); - } - else - { - // health falls up (?) - int initspd = (128-snum.seed); - int boostup = 16+snum.seed2/4; - fo.x = (.15*initspd)*((snum.initialspan-(snum.lifespan-fractic))**.6); - fo.y = ((snum.initialspan-(snum.lifespan-fractic))**1.2)-boostup*sin((90./snum.initialspan)*(level.maptime+fractic-snum.starttic)); - } - } - else - { - // score rises linearly - fo.y = snum.initialspan-(snum.lifespan-fractic); - isscore = true; - } - double hs0 = isscore?hss:hsn; - Vector2 ss0 = isscore?sss:ssn; - Screen.DrawText(smallfont2,snum.tcolor,(vpos.x-hs0*(fo.x+smallfont2.StringWidth(tag)/2.))/hs0,(vpos.y-hs0*(fo.y+(smallfont2.GetHeight()/2.)))/hs0,tag,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - // extra strings (if available) - if ( !swwm_scorebonus ) continue; - fo.y += smallfont2.GetHeight(); - for ( int i=0; i 0 ) tag.AppendFormat(" x%d",snum.xscore[i]); - Screen.DrawText(smallfont2,snum.xtcolor[i],(vpos.x-hss*(fo.x+smallfont2.StringWidth(tag)/2.))/hss,(vpos.y-hss*(fo.y+(smallfont2.GetHeight()/2.)))/hss,tag,DTA_VirtualWidthF,sss.x,DTA_VirtualHeightF,sss.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - fo.y += smallfont2.GetHeight(); - } - } + hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + PrevFrame = MSTimeF(); } override void DrawMyPos() { String str = String.Format("(%d,%d,%d)",CPlayer.mo.pos.X,CPlayer.mo.pos.Y,CPlayer.mo.pos.Z); - Screen.DrawText(smallfont2,Font.CR_GREEN,(ss.x-smallfont2.StringWidth(str))/2,4,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - - override void DrawAutomapHUD( double ticFrac ) - { - // do nothing, DrawScore handles this - } - - // minimap helper code - private void GetMinimapColors() - { - mm_colorset = swwm_mm_colorset; - mm_drawautopage = AutoPage&&(am_drawmapback==1); - switch ( mm_colorset ) - { - case 1: - // gzdoom - mm_backcolor = am_backcolor; - mm_cdwallcolor = am_cdwallcolor; - mm_efwallcolor = am_efwallcolor; - mm_fdwallcolor = am_fdwallcolor; - mm_gridcolor = am_gridcolor; - mm_interlevelcolor = am_interlevelcolor; - mm_intralevelcolor = am_intralevelcolor; - mm_lockedcolor = am_lockedcolor; - mm_notseencolor = am_notseencolor; - mm_portalcolor = am_portalcolor; - mm_secretsectorcolor = am_secretsectorcolor; - mm_secretwallcolor = am_secretwallcolor; - mm_specialwallcolor = am_specialwallcolor; - mm_thingcolor = am_thingcolor; - mm_thingcolor_citem = am_thingcolor_citem; - mm_thingcolor_friend = am_thingcolor_friend; - mm_thingcolor_item = am_thingcolor_item; - mm_thingcolor_monster = am_thingcolor_monster; - mm_thingcolor_ncmonster = am_thingcolor_ncmonster; - mm_thingcolor_shootable = am_thingcolor; - mm_thingcolor_vipitem = am_unexploredsecretcolor; - mm_thingcolor_missile = am_specialwallcolor; - mm_tswallcolor = am_tswallcolor; - mm_unexploredsecretcolor = am_unexploredsecretcolor; - mm_wallcolor = am_wallcolor; - mm_xhaircolor = am_xhaircolor; - mm_yourcolor = am_yourcolor; - mm_displaylocks = true; - break; - case 2: - // doom - mm_backcolor = "00 00 00"; - mm_cdwallcolor = "fc fc 00"; - mm_efwallcolor = "bc 78 48"; - mm_fdwallcolor = "bc 78 48"; - mm_gridcolor = "4c 4c 4c"; - mm_interlevelcolor = 0; - mm_intralevelcolor = 0; - mm_lockedcolor = "fc fc 00"; - mm_notseencolor = "6c 6c 6c"; - mm_portalcolor = "40 40 40"; - mm_secretsectorcolor = 0; - mm_secretwallcolor = 0; - mm_specialwallcolor = 0; - mm_thingcolor = "74 fc 6c"; - mm_thingcolor_citem = "74 fc 6c"; - mm_thingcolor_friend = "74 fc 6c"; - mm_thingcolor_item = "74 fc 6c"; - mm_thingcolor_monster = "74 fc 6c"; - mm_thingcolor_ncmonster = "74 fc 6c"; - mm_thingcolor_shootable = "74 fc 6c"; - mm_thingcolor_vipitem = "74 fc 6c"; - mm_thingcolor_missile = "74 fc 6c"; - mm_tswallcolor = "80 80 80"; - mm_unexploredsecretcolor = 0; - mm_wallcolor = "fc 00 00"; - mm_xhaircolor = "80 80 80"; - mm_yourcolor = "ff ff ff"; - mm_displaylocks = false; - break; - case 3: - // strife - mm_backcolor = "00 00 00"; - mm_cdwallcolor = "77 73 73"; - mm_efwallcolor = "37 3b 5b"; - mm_fdwallcolor = "37 3b 5b"; - mm_gridcolor = "4c 4c 4c"; - mm_interlevelcolor = 0; - mm_intralevelcolor = 0; - mm_lockedcolor = "77 73 73"; - mm_notseencolor = "6c 6c 6c"; - mm_portalcolor = "40 40 40"; - mm_secretsectorcolor = 0; - mm_secretwallcolor = 0; - mm_specialwallcolor = 0; - mm_thingcolor = "bb 3b 00"; - mm_thingcolor_citem = "db ab 00"; - mm_thingcolor_friend = "fc 00 00"; - mm_thingcolor_item = "db ab 00"; - mm_thingcolor_monster = "fc 00 00"; - mm_thingcolor_ncmonster = "fc 00 00"; - mm_thingcolor_shootable = "bb 3b 00"; - mm_thingcolor_vipitem = "db ab 00"; - mm_thingcolor_missile = "bb 3b 00"; - mm_tswallcolor = "77 73 73"; - mm_unexploredsecretcolor = 0; - mm_wallcolor = "c7 ce ce"; - mm_xhaircolor = "80 80 80"; - mm_yourcolor = "ef ef ef"; - mm_displaylocks = false; - break; - case 4: - // raven - mm_backcolor = "6c 54 40"; - mm_cdwallcolor = "67 3b 1f"; - mm_efwallcolor = "d0 b0 85"; - mm_fdwallcolor = "d0 b0 85"; - mm_gridcolor = "46 32 10"; - mm_interlevelcolor = 0; - mm_intralevelcolor = 0; - mm_lockedcolor = "67 3b 1f"; - mm_notseencolor = "00 00 00"; - mm_portalcolor = "50 50 50"; - mm_secretsectorcolor = 0; - mm_secretwallcolor = 0; - mm_specialwallcolor = 0; - mm_thingcolor = "ec ec ec"; - mm_thingcolor_citem = "ec ec ec"; - mm_thingcolor_friend = "ec ec ec"; - mm_thingcolor_item = "ec ec ec"; - mm_thingcolor_monster = "ec ec ec"; - mm_thingcolor_ncmonster = "ec ec ec"; - mm_thingcolor_shootable = "ec ec ec"; - mm_thingcolor_vipitem = "ec ec ec"; - mm_thingcolor_missile = "ec ec ec"; - mm_tswallcolor = "58 5d 56"; - mm_unexploredsecretcolor = 0; - mm_wallcolor = "4b 32 10"; - mm_xhaircolor = "00 00 00"; - mm_yourcolor = "ff ff ff"; - mm_displaylocks = true; - break; - default: - // swwm - mm_backcolor = swwm_mm_backcolor; - mm_cdwallcolor = swwm_mm_cdwallcolor; - mm_efwallcolor = swwm_mm_efwallcolor; - mm_fdwallcolor = swwm_mm_fdwallcolor; - mm_gridcolor = swwm_mm_gridcolor; - mm_interlevelcolor = swwm_mm_interlevelcolor; - mm_intralevelcolor = swwm_mm_intralevelcolor; - mm_lockedcolor = swwm_mm_lockedcolor; - mm_notseencolor = swwm_mm_notseencolor; - mm_portalcolor = swwm_mm_portalcolor; - mm_secretsectorcolor = swwm_mm_secretsectorcolor; - mm_secretwallcolor = swwm_mm_secretwallcolor; - mm_specialwallcolor = swwm_mm_specialwallcolor; - mm_thingcolor = swwm_mm_thingcolor; - mm_thingcolor_citem = swwm_mm_thingcolor_citem; - mm_thingcolor_friend = swwm_mm_thingcolor_friend; - mm_thingcolor_item = swwm_mm_thingcolor_item; - mm_thingcolor_monster = swwm_mm_thingcolor_monster; - mm_thingcolor_ncmonster = swwm_mm_thingcolor_ncmonster; - mm_thingcolor_shootable = swwm_mm_thingcolor_shootable; - mm_thingcolor_vipitem = swwm_mm_thingcolor_vipitem; - mm_thingcolor_missile = swwm_mm_thingcolor_missile; - mm_tswallcolor = swwm_mm_tswallcolor; - mm_unexploredsecretcolor = swwm_mm_unexploredsecretcolor; - mm_wallcolor = swwm_mm_wallcolor; - mm_xhaircolor = swwm_mm_xhaircolor; - mm_yourcolor = swwm_mm_yourcolor; - mm_displaylocks = true; - mm_drawautopage = false; - break; - } - } - private bool ShouldDisplaySpecial( int special ) - { - // thanks graf/randi/whoever - switch ( special ) - { - // the following have (max_args < 0) - // but we can't know this from zscript, so they're hardcoded here - case Polyobj_StartLine: - case Polyobj_ExplicitLine: - case Transfer_WallLight: - case Sector_Attach3dMidtex: - case ExtraFloor_LightOnly: - case Sector_CopyScroller: - case Scroll_Texture_Left: - case Scroll_Texture_Right: - case Scroll_Texture_Up: - case Scroll_Texture_Down: - case Plane_Copy: - case Line_SetIdentification: - case Line_SetPortal: - case Sector_Set3DFloor: - case Sector_SetContents: - case Plane_Align: - case Static_Init: - case Transfer_Heights: - case Transfer_FloorLight: - case Transfer_CeilingLight: - case Scroll_Texture_Model: - case Scroll_Texture_Offsets: - case PointPush_SetForce: - return false; - } - return true; - } - private bool CheckSectorAction( Sector s, out int special, bool useonly ) - { - for ( Actor act=s.SecActTarget; act; act=act.tracer ) - { - if ( (act.Health&(SectorAction.SECSPAC_Use|SectorAction.SECSPAC_UseWall) || !useonly) - && act.special && !act.bFRIENDLY ) - { - special = act.special; - return true; - } - } - return false; - } - private bool RealLineSpecial( Line l, out int special ) - { - if ( special && l.activation&SPAC_PlayerActivate ) - return true; - if ( CheckSectorAction(l.frontsector,special,!l.backsector) ) - return true; - return (l.backsector && CheckSectorAction(l.backsector,special,false)); - } - private bool ShowTriggerLine( Line l ) - { - if ( am_showtriggerlines == 0 ) return false; - int special = l.special; - if ( !RealLineSpecial(l,special) ) return false; - if ( !ShouldDisplaySpecial(special) ) return false; - if ( special && (am_showtriggerlines >= 2) ) return true; - if ( !special || (special == Door_Open) - || (special == Door_Close) - || (special == Door_CloseWaitOpen) - || (special == Door_Raise) - || (special == Door_Animated) - || (special == Generic_Door) ) - return false; - return true; - } - private bool CmpFloorPlanes( Line l ) - { - return (l.frontsector.floorplane.Normal == l.backsector.floorplane.Normal) - && (l.frontsector.floorplane.D == l.backsector.floorplane.D); - } - private bool CmpCeilingPlanes( Line l ) - { - return (l.frontsector.ceilingplane.Normal == l.backsector.ceilingplane.Normal) - && (l.frontsector.ceilingplane.D == l.backsector.ceilingplane.D); - } - - private int CheckSecret( Line l ) - { - if ( !mm_secretsectorcolor || !mm_unexploredsecretcolor ) - return 0; - if ( l.frontsector && (l.frontsector.flags&Sector.SECF_WASSECRET) ) - { - if ( am_map_secrets && !(l.frontsector.flags&Sector.SECF_SECRET) ) return 1; - if ( (am_map_secrets == 2) && !(l.flags&Line.ML_SECRET) ) return 2; - } - if ( l.backsector && (l.backsector.flags&Sector.SECF_WASSECRET) ) - { - if ( am_map_secrets && !(l.backsector.flags&Sector.SECF_SECRET) ) return 1; - if ( (am_map_secrets == 2) && !(l.flags&Line.ML_SECRET) ) return 2; - } - return 0; - } - private bool CheckFFBoundary( Line l ) - { - if ( !hnd || !hnd.ffsectors.Size() ) return false; - int frontidx = hnd.ffsectors.Find(l.frontsector.Index()); - int backidx = hnd.ffsectors.Find(l.backsector.Index()); - // no 3D floors, no boundary - if ( (frontidx == hnd.ffsectors.Size()) && (backidx == frontidx) ) - return false; - return true; - } - - private void DrawMapGrid( Vector2 basepos ) - { - double zoomlevel = oldminimapzoom*(1.-FracTic)+minimapzoom*FracTic; - double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel; - Vector2 cpos = players[consoleplayer].Camera.prev.xy*(1.-FracTic)+players[consoleplayer].Camera.pos.xy*FracTic; - // find farthest visible southwest grid point from camera position - int maxlines = int(zoomview/64); - Vector2 gpt = (cpos-(zoomview,zoomview))/128; - gpt.x = int(gpt.x)*128; - gpt.y = int(gpt.y)*128; - for ( int i=0; i zoomview ) - continue; - // flip Y - rv1.y *= -1; - rv2.y *= -1; - // rotate by view - if ( swwm_mm_rotate ) - { - rv1 = Actor.RotateVector(rv1,ViewRot.x-90); - rv2 = Actor.RotateVector(rv2,ViewRot.x-90); - } - // clip to frame - bool visible; - [visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2); - if ( !visible ) continue; - // scale to minimap frame - rv1 *= (HALFMAPSIZE/zoomclip)*hs; - rv2 *= (HALFMAPSIZE/zoomclip)*hs; - // offset to minimap center - rv1 += basepos; - rv2 += basepos; - // draw the line - Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.25),mm_gridcolor); - } - for ( int i=0; i zoomview ) - continue; - // flip Y - rv1.y *= -1; - rv2.y *= -1; - // rotate by view - if ( swwm_mm_rotate ) - { - rv1 = Actor.RotateVector(rv1,ViewRot.x-90); - rv2 = Actor.RotateVector(rv2,ViewRot.x-90); - } - // clip to frame - bool visible; - [visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2); - if ( !visible ) continue; - // scale to minimap frame - rv1 *= (HALFMAPSIZE/zoomclip)*hs; - rv2 *= (HALFMAPSIZE/zoomclip)*hs; - // offset to minimap center - rv1 += basepos; - rv2 += basepos; - // draw the line - Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.25),mm_gridcolor); - } - // draw the origin crosshair - Vector2 tv[4]; - tv[0] = (-16,0); - tv[1] = (16,0); - tv[2] = (0,-16); - tv[3] = (0,16); - for ( int i=0; i<4; i+=2 ) - { - Vector2 rv1 = tv[i]-cpos; - Vector2 rv2 = tv[i+1]-cpos; - if ( min(min(abs(rv1.x),abs(rv2.x)),min(abs(rv1.y),abs(rv2.y))) > zoomview ) - continue; - // flip Y - rv1.y *= -1; - rv2.y *= -1; - // rotate by view - if ( swwm_mm_rotate ) - { - rv1 = Actor.RotateVector(rv1,ViewRot.x-90); - rv2 = Actor.RotateVector(rv2,ViewRot.x-90); - } - // clip to frame - bool visible; - [visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2); - if ( !visible ) continue; - // scale to minimap frame - rv1 *= (HALFMAPSIZE/zoomclip)*hs; - rv2 *= (HALFMAPSIZE/zoomclip)*hs; - // offset to minimap center - rv1 += basepos; - rv2 += basepos; - // draw the line - Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.75),mm_xhaircolor); - } - } - - private void DrawMapLines( Vector2 basepos ) - { - double zoomlevel = oldminimapzoom*(1.-FracTic)+minimapzoom*FracTic; - double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel; - Vector2 cpos = players[consoleplayer].Camera.prev.xy*(1.-FracTic)+players[consoleplayer].Camera.pos.xy*FracTic; - Sector csec = players[consoleplayer].Camera.CurSector; - for ( int i=0; i= 4)) ) - continue; - Vector2 rv1 = l.v1.p-cpos, rv2 = l.v2.p-cpos; - bool isportal = false; - if ( swwm_mm_portaloverlay ) - { - Sector linesector; - if ( l.sidedef[0].flags&Side.WALLF_POLYOBJ ) linesector = level.PointInSector(l.v1.p+l.delta/2.); - else linesector = l.frontsector; - isportal = (linesector.portalgroup!=csec.portalgroup); - if ( isportal ) - { - // portal displacement - Vector2 pofs = SWWMUtility.PortalDisplacement(csec,linesector); - rv1 -= pofs; - rv2 -= pofs; - } - } - Vector2 mid = (rv1+rv2)/2.; - Vector2 siz = (abs(rv1.x-rv2.x),abs(rv1.y-rv2.y))/2.; - if ( (((siz.x+zoomview)-abs(mid.x)) <= 0) || (((siz.y+zoomview)-abs(mid.y)) <= 0) ) - continue; - // flip Y - rv1.y *= -1; - rv2.y *= -1; - // rotate by view - if ( swwm_mm_rotate ) - { - rv1 = Actor.RotateVector(rv1,ViewRot.x-90); - rv2 = Actor.RotateVector(rv2,ViewRot.x-90); - } - // clip to frame - bool visible; - [visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2); - if ( !visible ) continue; - // scale to minimap frame - rv1 *= (HALFMAPSIZE/zoomclip)*hs; - rv2 *= (HALFMAPSIZE/zoomclip)*hs; - // offset to minimap center - rv1 += basepos; - rv2 += basepos; - // get the line color - Color col = mm_wallcolor; - if ( (l.flags&Line.ML_MAPPED) || am_cheat ) - { - int secwit = CheckSecret(l); - int lock = SWWMUtility.GetLineLock(l); - if ( secwit == 1 ) col = mm_secretsectorcolor; - else if ( secwit == 2 ) col = mm_unexploredsecretcolor; - else if ( l.flags&Line.ML_SECRET ) - { - if ( am_cheat && l.backsector && mm_secretwallcolor ) - col = mm_secretwallcolor; - else col = mm_wallcolor; - } - else if ( mm_interlevelcolor - && ((l.special == Exit_Normal) - || (l.special == Exit_Secret) - || (l.special == Teleport_NewMap) - || (l.special == Teleport_EndGame)) ) - col = mm_interlevelcolor; - else if ( mm_intralevelcolor && - (l.activation&SPAC_PlayerActivate) - && ((l.special == Teleport) - || (l.special == Teleport_NoFog) - || (l.special == Teleport_ZombieChanger) - || (l.special == Teleport_Line)) ) - col = mm_intralevelcolor; - else if ( mm_displaylocks - && (lock > 0) && (lock < 256) ) - { - let lcol = SWWMUtility.GetLockColor(lock); - if ( lcol ) col = lcol; - else col = mm_lockedcolor; - } - else if ( mm_specialwallcolor && ShowTriggerLine(l) ) - col = mm_specialwallcolor; - else if ( l.frontsector && l.backsector ) - { - if ( !CmpFloorPlanes(l) ) col = mm_fdwallcolor; - else if ( !CmpCeilingPlanes(l) ) col = mm_cdwallcolor; - else if ( CheckFFBoundary(l) ) col = mm_efwallcolor; - else - { - if ( (am_cheat == 0) || (am_cheat >= 4) ) - continue; - col = mm_tswallcolor; - } - } - } - else col = mm_notseencolor; - // draw the line - if ( isportal ) - { - col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8); - Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.25),col); - } - else Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.5),col); - } - } - private void DrawMapMarkers( Vector2 basepos ) - { - double zoomlevel = oldminimapzoom*(1.-FracTic)+minimapzoom*FracTic; - double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel; - Vector2 cpos = players[consoleplayer].Camera.prev.xy*(1.-FracTic)+players[consoleplayer].Camera.pos.xy*FracTic; - Sector csec = players[consoleplayer].Camera.CurSector; - if ( !mi ) mi = ThinkerIterator.Create("MapMarker",Thinker.STAT_MAPMARKER); - else mi.Reinit(); - MapMarker m; - while ( m = MapMarker(mi.Next()) ) - { - if ( m.bDORMANT ) continue; - if ( m.args[1] && !(m.CurSector.moreflags&Sector.SECMF_DRAWN) ) continue; - TextureID tx; - if ( m.picnum.IsValid() ) tx = m.picnum; - else tx = m.CurState.GetSpriteTexture(1); - Vector2 sz = TexMan.GetScaledSize(tx); - Vector2 scl; - // seems to match automap scaling somewhat - if ( m.Args[2] ) scl = (m.Scale/zoomlevel)*.15; - else scl = m.Scale*.5; - sz.x *= scl.x; - sz.y *= scl.y; - double radius = max(sz.x,sz.y); // naive, I know - if ( m.args[0] ) - { - // oh bother, this will be dicks - let ai = level.CreateActorIterator(m.args[0]); - Actor a; - while ( a = ai.Next() ) - { - Vector2 rv = a.pos.xy-cpos; - bool isportal = false; - if ( swwm_mm_portaloverlay ) - { - Sector sec = level.PointInSector(a.pos.xy); - if ( sec.portalgroup != csec.portalgroup ) - { - isportal = true; - // portal displacement - rv -= SWWMUtility.PortalDisplacement(csec,sec); - } - } - if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) - continue; - // flip Y - rv.y *= -1; - // rotate by view - rv = Actor.RotateVector(rv,ViewRot.x-90); - // scale to minimap frame - rv *= (HALFMAPSIZE/zoomclip)*hs; - // offset to minimap center - rv += basepos; - // draw - int clipleft = int((basepos.x-HALFMAPSIZE)*hs); - int cliptop = int((basepos.y-HALFMAPSIZE)*hs); - int clipright = int(clipleft+HALFMAPSIZE*2*hs); - int clipbottom = int(cliptop+HALFMAPSIZE*2*hs); - Screen.DrawTexture(tx,false,rv.x,rv.y,DTA_ColorOverlay,isportal?Color(128,mm_portalcolor.r,mm_portalcolor.g,mm_portalcolor.b):Color(0,0,0,0),DTA_ScaleX,hs*scl.x,DTA_ScaleY,hs*scl.y,DTA_LegacyRenderStyle,m.GetRenderStyle(),DTA_Alpha,m.Alpha,DTA_FillColor,m.FillColor,DTA_TranslationIndex,m.Translation,DTA_ClipLeft,clipleft,DTA_ClipTop,cliptop,DTA_ClipRight,clipright,DTA_ClipBottom,clipbottom); - } - ai.Destroy(); - continue; - } - Vector2 rv = m.pos.xy-cpos; - bool isportal = false; - if ( swwm_mm_portaloverlay ) - { - Sector sec = level.PointInSector(m.pos.xy); - if ( sec.portalgroup != csec.portalgroup ) - { - isportal = true; - // portal displacement - rv -= SWWMUtility.PortalDisplacement(csec,sec); - } - } - if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) - continue; - // flip Y - rv.y *= -1; - // rotate by view - rv = Actor.RotateVector(rv,ViewRot.x-90); - // scale to minimap frame - rv *= (HALFMAPSIZE/zoomclip)*hs; - // offset to minimap center - rv += basepos; - // draw - int clipleft = int(basepos.x-HALFMAPSIZE*hs); - int cliptop = int(basepos.y-HALFMAPSIZE*hs); - int clipright = int(clipleft+HALFMAPSIZE*2*hs); - int clipbottom = int(cliptop+HALFMAPSIZE*2*hs); - Screen.DrawTexture(tx,false,rv.x,rv.y,DTA_ColorOverlay,isportal?Color(128,mm_portalcolor.r,mm_portalcolor.g,mm_portalcolor.b):Color(0,0,0,0),DTA_ScaleX,hs*scl.x,DTA_ScaleY,hs*scl.y,DTA_LegacyRenderStyle,m.GetRenderStyle(),DTA_Alpha,m.Alpha,DTA_FillColor,m.FillColor,DTA_TranslationIndex,m.Translation,DTA_ClipLeft,clipleft,DTA_ClipTop,cliptop,DTA_ClipRight,clipright,DTA_ClipBottom,clipbottom); - } - } - private void DrawMapThings( Vector2 basepos ) - { - double zoomlevel = oldminimapzoom*(1.-FracTic)+minimapzoom*FracTic; - double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel; - Vector2 cpos = players[consoleplayer].Camera.prev.xy*(1.-FracTic)+players[consoleplayer].Camera.pos.xy*FracTic; - Sector csec = players[consoleplayer].Camera.CurSector; - for ( SWWMSimpleTracker t=hnd.strackers; t; t=t.next ) - { - if ( !swwm_mm_missiles && t.ismissile ) continue; - if ( level.allmap && (t.target is 'Key') ) continue; // don't draw keys over the actual markers they have - Color col = mm_thingcolor; - bool isitem = false; - bool plainactor = false; - Vector2 pos; - double angle; - double radius; - if ( t.target ) - { - pos = t.target.prev.xy*(1.-FracTic)+t.target.pos.xy*FracTic; - angle = t.target.angle; - radius = t.isbeam?(t.target.speed*cos(t.target.pitch)):t.target.radius; - } - else - { - pos = t.pos.xy; - angle = t.angle; - radius = t.radius; - } - if ( t.isitem ) - { - if ( t.vipitem ) col = mm_thingcolor_vipitem; - else if ( t.countitem ) col = mm_thingcolor_citem; - else col = mm_thingcolor_item; - isitem = true; - } - else if ( t.isplayer ) col = t.playercol; - else if ( t.friendly ) col = mm_thingcolor_friend; - else if ( t.countkill ) col = mm_thingcolor_monster; - else if ( t.ismonster ) col = mm_thingcolor_ncmonster; - else if ( t.ismissile ) col = mm_thingcolor_missile; - else - { - if ( t.vipitem ) col = mm_thingcolor_vipitem; // chanceboxes - else if ( t.shootable ) col = mm_thingcolor_shootable; - plainactor = true; - } - int mtime = 35; - if ( level.allmap && !t.expired && t.target ) mtime += 105; - Vector2 rv = pos-cpos; - bool isportal = false; - if ( swwm_mm_portaloverlay ) - { - Sector sec = level.PointInSector(pos); - if ( sec.portalgroup != csec.portalgroup ) - { - isportal = true; - // portal displacement - rv -= SWWMUtility.PortalDisplacement(csec,sec); - // and blend in the color too - col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8); - } - } - if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) - continue; - Vector2 tv[4]; - int nidx; - if ( t.isbeam ) - { - // oriented line - nidx = 2; - tv[0] = rv; - tv[1] = rv+Actor.RotateVector((radius,0),angle); - } - else if ( isitem ) - { - // rhombus - nidx = 4; - double crad = min(radius,10); - for ( int i=0; i<4; i++ ) - tv[i] = rv+Actor.RotateVector((crad,0),i*90); - } - else if ( plainactor ) - { - // aabb box - nidx = 4; - tv[0] = rv+(-radius,-radius); - tv[1] = rv+(radius,-radius); - tv[2] = rv+(radius,radius); - tv[3] = rv+(-radius,radius); - } - else - { - // oriented triangle - nidx = 3; - tv[0] = rv+Actor.RotateVector((radius,0),angle); - tv[1] = rv+Actor.RotateVector((-radius*.5,radius*.7),angle); - tv[2] = rv+Actor.RotateVector((-radius*.5,-radius*.7),angle); - } - // flip Y - for ( int j=0; j 0 ) sstr = String.Format("%d%09d",ScoreInter2.GetValue(),ScoreInter.GetValue()); - else sstr = String.Format("%09d",ScoreInter.GetValue()); - int digits = sstr.Length(); - int xx = 19+6*digits; - Screen.DrawTexture(ScoreTex[0],false,ss.x-(margin+xx),margin,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - xx -= 15; - for ( int i=0; i 0) ) - { - xx = int(ss.x-(margin+2)); - String str; - if ( automapactive || (fstats > 1) ) - { - int label = am_showmaplabel; - String ln = level.levelname; - int iof = ln.IndexOf(" - by: "); - if ( iof != -1 ) ln.Truncate(iof); - if ( !label || ((level.clusterflags&level.CLUSTER_HUB) && (label == 2)) ) str = ln; - else str = String.Format("%s - %s",level.mapname.MakeUpper(),ln); - Screen.DrawText(smallfont,Font.CR_FIRE,xx-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += smallfont.GetHeight(); - } - if ( (level.total_monsters > 0) && am_showmonsters && !deathmatch ) - { - str = String.Format("\cxK \c-%d\cu/\c-%d",level.killed_monsters,level.total_monsters); - Screen.DrawText(smallfont2,(level.killed_monsters>=level.total_monsters)?Font.CR_GOLD:Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += smallfont2.GetHeight(); - } - if ( (level.total_items > 0) && am_showitems && !deathmatch ) - { - str = String.Format("\cxI \c-%d\cu/\c-%d",level.found_items,level.total_items); - Screen.DrawText(smallfont2,(level.found_items>=level.total_items)?Font.CR_GOLD:Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += smallfont2.GetHeight(); - } - if ( (level.total_secrets > 0) && am_showsecrets && !deathmatch ) - { - str = String.Format("\cxS \c-%d\cu/\c-%d",level.found_secrets,level.total_secrets); - Screen.DrawText(smallfont2,(level.found_secrets>=level.total_secrets)?Font.CR_GOLD:Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += smallfont2.GetHeight(); - } - int sec; - if ( am_showtime ) - { - sec = Thinker.Tics2Seconds(level.maptime); - str = String.Format("\cxT \c-%02d\cu:\c-%02d\cu:\c-%02d",sec/3600,(sec%3600)/60,sec%60); - Screen.DrawText(smallfont2,((level.sucktime>0)&&(sec>=(level.sucktime*3600)))?Font.CR_RED:(sec<=level.partime)?Font.CR_GOLD:Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += smallfont2.GetHeight(); - } - // don't show total time if it's equal to map time - if ( am_showtotaltime && (level.totaltime != level.maptime) ) - { - sec = Thinker.Tics2Seconds(level.totaltime); - str = String.Format("\cxTT \c-%02d\cu:\c-%02d\cu:\c-%02d",sec/3600,(sec%3600)/60,sec%60); - Screen.DrawText(smallfont2,Font.CR_WHITE,xx-smallfont2.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += smallfont2.GetHeight(); - } - yy += 3; - } - if ( deathmatch ) - { - yy += 9; - if ( playercount <= 1 ) return; - xx = int(ss.x-(margin+2)); - String str; - if ( teamplay ) - { - // draw team scores - for ( int i=0; i 0 ) str = String.Format("\cx%s \cj+%d\c-",StringTable.Localize("$SWWM_DMSPREAD"),lead); - else str = String.Format("\cx%s \cj%d\c-",StringTable.Localize("$SWWM_DMSPREAD"),lead); - Screen.DrawText(smallfont,Font.CR_WHITE,xx-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += smallfont.GetHeight()+3; - // draw top 3 players - for ( int i=0; i klist; - for ( int i=0; i 1) || forceamt ) - { - String nstr; - if ( (i.Amount > 99999) && !forceamt ) nstr = "99999"; - else nstr = String.Format("%d",i.Amount); - int len = smallfont.StringWidth(nstr); - Screen.DrawText(smallfont,Font.CR_FIRE,(xx+30)-len,(yy+30)-10,nstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); - } - return true; - } - - private void DrawInventory() - { - // active items (armor / powerups) - double xx = margin+2; - double yy = ss.y-(margin+58); - if ( CPlayer.mo.InvSel && !isInventoryBarVisible() ) yy -= 34; - bool drewarmor = false; - for ( Inventory i=CPlayer.mo.Inv; i; i=i.Inv ) - { - if ( (i.Amount <= 0) || (!(i is 'SWWMArmor') && !(i is 'BasicArmor')) ) continue; - if ( !DrawInvIcon(i,xx,yy,forceamt:true) ) continue; - yy -= 34; - drewarmor = true; - } - yy = ss.y-(margin+58); - if ( drewarmor ) xx += 40; - else if ( CPlayer.mo.InvSel && !isInventoryBarVisible() ) yy -= 34; - for ( Inventory i=CPlayer.mo.Inv; i; i=i.Inv ) - { - if ( (i is 'SWWMLamp') && SWWMLamp(i).bActivated ) - { - DrawInvIcon(i,xx,yy,aspowerup:true); - yy -= 34; - continue; - } - if ( (i is 'DivineSpriteEffect') && !DivineSpriteEffect(i).bHealDone ) - { - DrawInvIcon(i,xx,yy,aspowerup:true); - yy -= 34; - continue; - } - if ( !(i is 'Powerup') || (Powerup(i).EffectTics <= 0) || !(Powerup(i).Icon) ) continue; - if ( DrawInvIcon(i,xx,yy) ) - yy -= 34; - } - // inventory box / bar - if ( !CPlayer.mo.InvSel ) return; - if ( isInventoryBarVisible() ) - { - Array bar; - bar.Clear(); - for ( Inventory i=CPlayer.mo.FirstInv(); i; i=i.NextInv() ) bar.Push(i); - int ps = bar.Find(CPlayer.mo.InvSel); - Inventory prev[2], next[2]; - if ( bar.Size() > 1 ) - { - if ( ps+1 >= bar.Size() ) next[0] = bar[0]; - else next[0] = bar[ps+1]; - if ( ps-1 < 0 ) prev[0] = bar[bar.Size()-1]; - else prev[0] = bar[ps-1]; - } - if ( bar.Size() > 2 ) - { - if ( ps+2 >= bar.Size() ) next[1] = bar[(ps+2)-bar.Size()]; - else next[1] = bar[ps+2]; - if ( ps-2 < 0 ) prev[1] = bar[bar.Size()+(ps-2)]; - else prev[1] = bar[ps-2]; - } - xx = (ss.x-34)/2; - yy = (ss.y+64)/2; - Screen.DrawTexture(InventoryTex,false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - DrawInvIcon(CPlayer.mo.InvSel,xx+2,yy+2); - DrawInvIcon(prev[0],xx-32,yy+2,2./3.); - DrawInvIcon(prev[1],xx-66,yy+2,1./3.); - DrawInvIcon(next[0],xx+36,yy+2,2./3.); - DrawInvIcon(next[1],xx+70,yy+2,1./3.); - return; - } - Screen.DrawTexture(InventoryTex,false,margin,ss.y-(margin+60),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - DrawInvIcon(CPlayer.mo.InvSel,margin+2,ss.y-(margin+58)); - } - - private void DrawWeapon() - { - if ( CPlayer.ReadyWeapon is 'SWWMWeapon' ) SWWMWeapon(CPlayer.ReadyWeapon).DrawWeapon(FracTic,ss.x-margin,ss.y-(margin+28),hs,ss); - else if ( CPlayer.ReadyWeapon ) - { - // generic display - double xx = ss.x-(margin+13), yy = ss.y-(margin+42); - int maxlen = 0; - String astr2, astr1; - if ( CPlayer.ReadyWeapon.Ammo2 ) astr2 = String.Format("%d",CPlayer.ReadyWeapon.Ammo2.Amount); - if ( CPlayer.ReadyWeapon.Ammo1 ) astr1 = String.Format("%d",CPlayer.ReadyWeapon.Ammo1.Amount); - maxlen = max(astr1.Length(),astr2.Length()); - if ( CPlayer.ReadyWeapon.Ammo2 && (CPlayer.ReadyWeapon.Ammo2 != CPlayer.ReadyWeapon.Ammo1) ) - { - yy -= 14; - Screen.DrawTexture(GenericAmmoTex[2],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - for ( int i=0; i 0) || Weapon(inv).bAMMO_OPTIONAL) || (Weapon(inv).Ammo2 && ((Weapon(inv).Ammo2.Amount > 0) || Weapon(inv).bALT_AMMO_OPTIONAL))) ) - hasammo = true; - } - if ( !hasammo ) ncolor = Font.CR_RED; - } - Screen.DrawText(smallfont,ncolor,xx,yy,String.Format("%d",(i%10)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - xx += 12; - if ( i == 5 ) - { - xx = ss.x-(margin+57); - yy += 14; - } - } - } - - private void DrawStatus() - { - Screen.DrawTexture(StatusTex,false,margin,ss.y-(margin+26),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - let d = Demolitionist(CPlayer.mo); - double dw = DashInter.GetValue(); - double alph = .6; - if ( !d || (d.dashfuel > 20) || ((gametic%10) < 5) ) alph = 1.; - Screen.DrawTexture(DashTex,false,margin+2,ss.y-(margin+20),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,dw,DTA_Alpha,alph); - double fw = FuelInter.GetValue()/2.; - Screen.DrawTexture(FuelTex[swwm_superfuel],false,margin+2,ss.y-(margin+24),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,fw); - double ht = clamp(HealthInter.GetValue(),0,10000); - double hw = min(ht,100); - int hcolor = Font.CR_RED; - if ( ht > 500 ) hcolor = Font.CR_GOLD; - else if ( ht > 200 ) hcolor = Font.CR_PURPLE; - else if ( ht > 100 ) hcolor = Font.CR_CYAN; - if ( isInvulnerable() || CPlayer.mo.FindInventory("InvinciballPower") ) - { - Screen.DrawTexture(HealthTex[4],false,margin+2,ss.y-(margin+14),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); - hcolor = Font.CR_WHITE; - } - else - { - Screen.DrawTexture(HealthTex[0],false,margin+2,ss.y-(margin+14),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); - if ( ht > 100 ) - { - hw = min(ht-100,100); - Screen.DrawTexture(HealthTex[1],false,margin+2,ss.y-(margin+14),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); - } - if ( ht > 200 ) - { - hw = min(ht-200,300)/3.; - Screen.DrawTexture(HealthTex[2],false,margin+2,ss.y-(margin+14),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); - } - if ( ht > 500 ) - { - hw = min(ht-500,500)/5.; - Screen.DrawTexture(HealthTex[3],false,margin+2,ss.y-(margin+14),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); - } - } - if ( CPlayer.mo.FindInventory("DivineSpriteEffect") ) - { - double falph = clamp((ht-1000)/6000.,0.,1.); - Screen.DrawTexture(HealthTex[5],false,margin+2,ss.y-(margin+14),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph,DTA_LegacyRenderStyle,STYLE_Add); - String tst; - double alph = .1; - int trl = 9; - for ( double alph = .1; alph <= 1.; alph += .1 ) - { - tst = "AAA"; - SWWMUtility.ObscureText(tst,(gametic-trl)/3); - trl--; - Screen.DrawText(smallfont,Font.CR_WHITE,margin+108,ss.y-(margin+14),tst,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph*alph,DTA_LegacyRenderStyle,STYLE_Add); - } - Screen.DrawText(smallfont,hcolor,margin+108,ss.y-(margin+14),String.Format("%3d",clamp(ht,0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,1.-falph); - } - else Screen.DrawText(smallfont,hcolor,margin+108,ss.y-(margin+14),String.Format("%3d",clamp(ht,0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - - private void DrawPickups() - { - int h = smallfont.GetHeight(); - // draw nametags below them - double yy; - double nalph = 0.; - double tagtime = (ntagtic+70)-(level.totaltime+fractic); - if ( (ntagstr != "") && (tagtime > 0) ) - { - nalph = clamp(tagtime/20.,0.,1.); - yy = ss.y-(margin+50); - // shift up if boss healthbar is present - if ( hnd && (hnd.bossalpha > 0.) ) yy -= int(25*clamp(hnd.bossalpha*2.,0.,1.)); - int len = smallfont.StringWidth(ntagstr); - double xx = (ss.x-len)/2.; - Screen.Dim("Black",.8*nalph,int((xx-6)*hs),int(yy*hs),int((len+12)*hs),int((h+4)*hs)); - Screen.DrawText(smallfont,ntagcol,int(xx),yy+2,ntagstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,nalph); - } - if ( PickupQueue.Size() <= 0 ) return; - // reverse order since they're drawn bottom to top - int mend = max(0,PickupQueue.Size()-swwm_maxpickup); - yy = ss.y-(margin+50); - // shift up if boss healthbar is present - if ( hnd && (hnd.bossalpha > 0.) ) yy -= int(25*clamp(hnd.bossalpha*2.,0.,1.)); - // shift up again if nametag is present - if ( nalph > 0. ) yy -= int((smallfont.GetHeight()+6)*clamp(nalph*2.,0.,1.)); - for ( int i=PickupQueue.Size()-1; i>=mend; i-- ) - { - PickupQueue[i].UpdateText(int(ss.x*.75)); - double curtime = (PickupQueue[i].tic+GameTicRate*swwm_pickduration)-(level.totaltime+fractic); - double alph = clamp(curtime/20.,0.,1.); - let l = PickupQueue[i].l; - int maxlen = 0; - for ( int j=0; j maxlen ) maxlen = len; - } - double xx = (ss.x-maxlen)/2.; - Screen.Dim("Black",.8*alph,int((xx-6)*hs),int((yy-h*(l.Count()-1))*hs),int((maxlen+12)*hs),int((h*l.Count()+4)*hs)); - for ( int j=l.Count()-1; j>=0; j-- ) - { - int len = smallfont.StringWidth(l.StringAt(j)); - xx = int((ss.x-len)/2.); - Screen.DrawText(smallfont,msg0color,xx,yy+2,l.StringAt(j),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); - yy -= h; - } - yy -= 6; - } - } - - private void DrawMessages( double boxalph = 1. ) - { - double xx, yy; - if ( midstr != "" ) - { - double ssp = (midtype&1)?.5:1.; - double hsp = (midtype&1)?2.:1.; - int col = (midtype&2)?msgmidcolor2:msgmidcolor; - double curtime = (midtic+int(GameTicRate*con_midtime))-(level.totaltime+fractic); - double alph = clamp(curtime/20.,0.,1.); - if ( !midl || (midsz != int(ss.x*ssp)) ) - { - if ( midl ) midl.Destroy(); - midl = SmallFont.BreakLines(midstr,int(ss.x*ssp)); - } - int h = smallfont.GetHeight(); - int maxlen = 0; - for ( int i=0; i=gametic)?swwm_maxshownbig:swwm_maxshown)); - xx = margin; - yy = margin; - bool smol = (ss.x<640); - Screen.DrawTexture(ChatTex[smol?3:0],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,boxalph); - yy += 2; - for ( int i=mstart; i ss.x-4 ) + int w = mSmallFont.StringWidth(fullstr); + if ( w > ss0.x-4 ) { // draw trailing dots - Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,"...",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(mSmallFont,Font.CR_WHITE,xx,yy,"...",DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true); // shift back - xx -= w-(ss.x-4); + xx -= w-(ss0.x-4); // draw trimmed - Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,fullstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipLeft,int(26*hs)); + Screen.DrawText(mSmallFont,Font.CR_WHITE,xx,yy,fullstr,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_ClipLeft,int(26*hs0)); } - else Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,fullstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else Screen.DrawText(mSmallFont,Font.CR_WHITE,xx,yy,fullstr,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true); return true; } override bool DrawPaused( int player ) { + static const int pausepal[] = + { + MCR_RED, MCR_ORANGE, MCR_YELLOW, MCR_GRASS, MCR_GREEN, MCR_MINT, MCR_CYAN, MCR_AQUA, MCR_BLUE, MCR_PURPLE, MCR_MAGENTA, MCR_PINK + }; + let fnt = mSmallFontOutline?mSmallFontOutline:NewSmallFont; + let fnt2 = mSmallFont?mSmallFont:NewConsoleFont; if ( swwm_fuzz ) { Vector2 tsize = TexMan.GetScaledSize(bgtex); double zoom = max(ceil(Screen.GetWidth()/tsize.x),ceil(Screen.GetHeight()/tsize.y)); Vector2 vsize = (Screen.GetWidth(),Screen.GetHeight())/zoom; - Screen.DrawTexture(bgtex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(192,0,0,0),DTA_Alpha,.5); + Screen.DrawTexture(bgtex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_ColorOverlay,0xA0000000,DTA_Alpha,.5); } - else Screen.Dim("Black",.5,0,0,Screen.GetWidth(),Screen.GetHeight()); + else Screen.Dim(0xFF000000,.5,0,0,Screen.GetWidth(),Screen.GetHeight()); String str = StringTable.Localize("$SWWM_PAUSE"); if ( gametic < pausetime+1000 ) { pausepos.x = Screen.GetWidth()/2; pausepos.y = Screen.GetHeight()/2; pausedir = (1,1); + pausecol = 8; } else { pausepos.x += pausedir.x*CleanXFac; pausepos.y += pausedir.y*CleanYFac; - if ( pausepos.x >= Screen.GetWidth()-((bigfont.StringWidth(str)+8)*CleanXFac/2) ) + if ( pausepos.x >= Screen.GetWidth()-((fnt.StringWidth(str)*3+8)*CleanXFac/2) ) + { pausedir.x = -1; - if ( pausepos.x < ((bigfont.StringWidth(str)+8)*CleanXFac/2) ) + pausecol = (pausecol+1)%12; + } + if ( pausepos.x < ((fnt.StringWidth(str)*3+8)*CleanXFac/2) ) + { pausedir.x = 1; - if ( pausepos.y >= Screen.GetHeight()-((bigfont.GetHeight()+8)*CleanYFac/2) ) + pausecol = (pausecol+1)%12; + } + if ( pausepos.y >= Screen.GetHeight()-((fnt.GetHeight()*3+8)*CleanYFac/2) ) + { pausedir.y = -1; - if ( pausepos.y < ((bigfont.GetHeight()+8)*CleanYFac/2) ) + pausecol = (pausecol+1)%12; + } + if ( pausepos.y < ((fnt.GetHeight()*3+8)*CleanYFac/2) ) + { pausedir.y = 1; + pausecol = (pausecol+1)%12; + } } - double xx = pausepos.x-bigfont.StringWidth(str)*CleanXFac/2; - double yy = pausepos.y-bigfont.GetHeight()*CleanYFac/2; + double xx = pausepos.x-(fnt.StringWidth(str)*3*CleanXFac)/2; + double yy = pausepos.y-(fnt.GetHeight()*3*CleanYFac)/2; int tlen = str.CodePointCount(); for ( int i=0, pos=0; i 0) ) { double dimalph = goner?1.:min(deadtimer/80.,.8); - Screen.Dim("Black",dimalph,0,0,Screen.GetWidth(),Screen.GetHeight()); + Screen.Dim(0xFF000000,dimalph,0,0,Screen.GetWidth(),Screen.GetHeight()); if ( demo && (demo.revivefail > level.maptime) ) { - Screen.Dim("Red",clamp((demo.revivefail-(level.maptime+fractic))/60.,0.,.2),0,0,Screen.GetWidth(),Screen.GetHeight()); + Screen.Dim(0xFFFF0000,clamp((demo.revivefail-(level.maptime+fractic))/60.,0.,.2),0,0,Screen.GetWidth(),Screen.GetHeight()); str = StringTable.Localize("$SWWM_REFAIL"); - len = smallfont.StringWidth(str); - xx = int((ss.x-len)/2.); - yy = ss.y-48; + len = mSmallFont.StringWidth(str); + xx = int((ss0.x-len)/2.); + yy = ss0.y-48; if ( ((demo.revivefail-level.maptime)%16) < 8 ) - Screen.DrawText(smallfont,Font.CR_RED,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(mSmallFont,Font.CR_RED,xx,yy,str,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true); } alph = clamp((deadtimer-60)/60.,0.,1.); String nam = CPlayer.GetUserName(); - if ( nam == "Player" ) str = StringTable.Localize("$SWWM_URDED_GEN"); + if ( !multiplayer || (nam == "Player") ) str = StringTable.Localize("$SWWM_URDED_GEN"); else str = String.Format(StringTable.Localize("$SWWM_URDED"),nam); - len = smallfont.StringWidth(str); - xx = int((ss.x-len)/2.); - yy = (ss.y-smallfont.GetHeight()*4)/2.; + len = mSmallFont.StringWidth(str); + xx = int((ss0.x-len)/2.); + yy = (ss0.y-mSmallFont.GetHeight()*4)/2.; // shift down if scoreboard is shown if ( (deathmatch && sb_deathmatch_enable && (!teamplay || sb_teamdeathmatch_enable)) || (multiplayer && sb_cooperative_enable) ) - yy += ss.y/3.+smallfont.GetHeight(); - Screen.DrawText(smallfont,Font.CR_RED,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + yy += ss0.y/3.+mSmallFont.GetHeight(); + Screen.DrawText(mSmallFont,Font.CR_RED,xx,yy,str,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph); if ( multiplayer || level.AllowRespawn || sv_singleplayerrespawn || G_SkillPropertyInt(SKILLP_PlayerRespawn) ) { if ( sv_norespawn ) return (1.-dimalph); alph = clamp((deadtimer-90)/60.,0.,1.); str = String.Format(StringTable.Localize("$SWWM_URDEDMP")); - len = smallfont.StringWidth(str); - xx = int((ss.x-len)/2.); - yy = ss.y/2.; + len = mSmallFont.StringWidth(str); + xx = int((ss0.x-len)/2.); + yy = ss0.y/2.; // shift down if scoreboard is shown if ( (deathmatch && sb_deathmatch_enable && (!teamplay || sb_teamdeathmatch_enable)) || (multiplayer && sb_cooperative_enable) ) - yy += ss.y/3.; - Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + yy += ss0.y/3.; + Screen.DrawText(mSmallFont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph); return (1.-dimalph); } alph = clamp((deadtimer-140)/60.,0.,1.); str = String.Format(StringTable.Localize("$SWWM_URDED2")); - len = smallfont.StringWidth(str); - xx = int((ss.x-len)/2.); - yy = ss.y/2.; - Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); - if ( goner || !swwm_revive ) + len = mSmallFont.StringWidth(str); + xx = int((ss0.x-len)/2.); + yy = ss0.y/2.; + Screen.DrawText(mSmallFont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph); + if ( goner || hnd.gdat.disablerevive || !swwm_revive ) return (1.-dimalph); alph = clamp((deadtimer-160)/60.,0.,1.); str = String.Format(StringTable.Localize("$SWWM_URDED3")); - len = smallfont.StringWidth(str); - xx = int((ss.x-len)/2.); - yy = (ss.y+smallfont.GetHeight()*2)/2.; - Screen.DrawText(smallfont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + len = mSmallFont.StringWidth(str); + xx = int((ss0.x-len)/2.); + yy = (ss0.y+mSmallFont.GetHeight()*2)/2.; + Screen.DrawText(mSmallFont,Font.CR_WHITE,xx,yy,str,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph); return (1.-dimalph); } return 1.; @@ -2877,53 +612,78 @@ Class SWWMStatusBar : BaseStatusBar override void Draw( int state, double TicFrac ) { + double CurFrame = MSTimeF(); + // make sure vanilla nametags don't display + DetachMessageID(0x5745504e); // WEPN + DetachMessageID(0x53494e56); // SINV + // also try with different endianness, just in case + DetachMessageID(0x4e504557); // WEPN + DetachMessageID(0x564e4953); // SINV + if ( deathmatch ) + { + // forcibly strip these messages + // (I decided to drop MP support, so even though there are no + // actual spree/multikill announcements in this mod, keeping + // the vanilla ones out is important for graphical consistency) + DetachMessageID(0x4b535052); // KSPR + DetachMessageID(0x5250534b); + DetachMessageID(0x4d4b494c); // MKIL + DetachMessageID(0x4c494b4d); + } Super.Draw(state,TicFrac); - int CurFrame = MSTime(); FrameTime = (CurFrame-PrevFrame)/1000.; + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + hsA = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + hsT = max(min(floor(Screen.GetWidth()/480.),floor(Screen.GetHeight()/270.)),1.); + ymargin = clamp(swwm_hudmargin,0,10); + int hudscale = swwm_hudscale; + int hudscale0 = swwm_hudscale0; + int hudscale1 = swwm_hudscale1; + int hudscale2 = swwm_hudscale2; + if ( hudscale > 0 ) hs = hudscale; + else if ( hudscale < 0 ) hs = hsT; + else hs = hsA; + if ( hudscale0 > 0 ) hs0 = hudscale0; + else if ( hudscale0 < 0 ) hs0 = hsT; + else hs0 = hsA; + if ( hudscale1 > 0 ) hs1 = hudscale1; + else if ( hudscale1 < 0 ) hs1 = max(hsT-1.,1.); + else hs1 = max(hsA-1.,1.); + if ( hudscale2 > 0 ) hs2 = hudscale2; + else if ( hudscale2 < 0 ) hs2 = max(hsT-2.,1.); + else hs2 = max(hsA-2.,1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + ss0 = (Screen.GetWidth()/hs0,Screen.GetHeight()/hs0); + ss1 = (Screen.GetWidth()/hs1,Screen.GetHeight()/hs1); + ss2 = (Screen.GetWidth()/hs2,Screen.GetHeight()/hs2); + // calculate margin for ultrawide screens, mostly so hud + // elements don't get too spread out + xmargin = ymargin+max(int(ss.x-ss.y/.5625)/2,0); + // calculate vertical margin for hudscale0 (relative to base hudscale) + ymargin0 = int(ymargin*(hs/hs0)); + FracTic = TicFrac; if ( (state != HUD_StatusBar) && (state != HUD_Fullscreen) ) { + if ( state == HUD_AltHud ) + { + String str = StringTable.Localize("$SWWM_WARNALTHUD"); + Screen.DrawText(NewSmallFont,Font.CR_RED,(ss0.x-NewSmallFont.StringWidth(str))/2,ymargin0,str,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true); + } PrevFrame = CurFrame; return; } - if ( !hnd ) hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !swwm_camhud && !(players[consoleplayer].Camera is 'PlayerPawn') ) - camhidden = true; - else camhidden = false; - BeginHUD(); - if ( swwm_hudscale ) hs = CleanXFac_1; - else hs = max(floor(Screen.GetWidth()/640.),1.); - ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); - margin = clamp(swwm_hudmargin,0,40); - hsb = max(hs+swwm_barscalerel,1.); - hsn = max(hs+swwm_numscalerel,1.); - hss = max(hs+swwm_scrscalerel,1.); - hsi = max(hs+swwm_poiscalerel,1.); - hsd = max(hs+swwm_detscalerel,1.); - ssb = (Screen.GetWidth()/hsb,Screen.GetHeight()/hsb); - ssn = (Screen.GetWidth()/hsn,Screen.GetHeight()/hsn); - sss = (Screen.GetWidth()/hss,Screen.GetHeight()/hss); - ssi = (Screen.GetWidth()/hsi,Screen.GetHeight()/hsi); - ssd = (Screen.GetWidth()/hsd,Screen.GetHeight()/hsd); - FracTic = TicFrac; - if ( camhidden ) - { - if ( hnd ) hnd.DrawBossBar(self); - DrawPickups(); - DrawDeath(); - DrawMessages(0.); - } - else + if ( (players[consoleplayer].Camera is 'Demolitionist') && (state <= HUD_Fullscreen) ) { DrawTarget(); - DrawScore(); + if ( hnd ) hnd.DrawBossBar(self); + DrawTopStuff(); DrawInventory(); DrawStatus(); - DrawWeapon(); - if ( hnd ) hnd.DrawBossBar(self); - DrawPickups(); - double malph = DrawDeath(); - DrawMessages(malph); + DrawWeapons(); } + DrawPickups(); + double malph = DrawDeath(); + DrawMessages(malph); PrevFrame = CurFrame; } } diff --git a/zscript/hud/swwm_hud_inventory.zsc b/zscript/hud/swwm_hud_inventory.zsc new file mode 100644 index 000000000..9ffdb8150 --- /dev/null +++ b/zscript/hud/swwm_hud_inventory.zsc @@ -0,0 +1,152 @@ +// Inventory drawing +extend Class SWWMStatusBar +{ + private bool DrawInvIcon( Inventory i, double xx, double yy, double alpha = 1., bool forceamt = false, bool selected = false, bool aspowerup = false ) + { + if ( !i || !i.Icon.IsValid() ) return false; + Vector2 scl = TexMan.GetScaledSize(i.Icon); + double mscl = min(1.,30./max(scl.x,scl.y)); + double dw = (ss.x/mscl), dh = (ss.y/mscl); + double dx = (xx+(30-scl.x*mscl)/2)/mscl, dy = (yy+(30-scl.y*mscl)/2)/mscl; + if ( i is 'Powerup' ) + { + Screen.DrawTexture(i.Icon,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_Alpha,Powerup(i).IsBlinking()?alpha*.5:alpha,DTA_TopOffset,0,DTA_LeftOffset,0); + String nstr = String.Format("%ds",Powerup(i).EffectTics/GameTicRate); + int len = MiniHudFontOutline.StringWidth(nstr); + Screen.DrawText(MiniHudFontOutline,mhudfontcol[MCR_BRASS],(xx+30)-len,(yy+30)-6,nstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,Powerup(i).IsBlinking()?alpha*.5:alpha); + return true; + } + if ( (i is 'SWWMLamp') && aspowerup ) + { + Screen.DrawTexture(i.Icon,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_Alpha,SWWMLamp(i).isBlinking()?alpha*.5:alpha,DTA_TopOffset,0,DTA_LeftOffset,0); + String nstr = String.Format("%d%%",SWWMLamp(i).Charge); + int len = MiniHudFontOutline.StringWidth(nstr); + Screen.DrawText(MiniHudFontOutline,mhudfontcol[SWWMLamp(i).bActive?MCR_BRASS:MCR_WHITE],(xx+30)-len,(yy+30)-6,nstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,SWWMLamp(i).isBlinking()?alpha*.5:alpha); + return true; + } + if ( (i is 'DivineSpriteEffect') && aspowerup ) + { + Screen.DrawTexture(i.Icon,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_Alpha,DivineSpriteEffect(i).isBlinking()?alpha*.5:alpha,DTA_TopOffset,0,DTA_LeftOffset,0); + String nstr = String.Format("%ds",DivineSpriteEffect(i).healtim/GameTicRate); + int len = MiniHudFontOutline.StringWidth(nstr); + Screen.DrawText(MiniHudFontOutline,mhudfontcol[MCR_BRASS],(xx+30)-len,(yy+30)-6,nstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,DivineSpriteEffect(i).isBlinking()?alpha*.5:alpha); + return true; + } + Screen.DrawTexture(i.Icon,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_Alpha,alpha,DTA_TopOffset,0,DTA_LeftOffset,0); + if ( (i.Amount > 1) || forceamt ) + { + String nstr; + if ( (i.Amount > 99999) && !forceamt ) nstr = "99999"; + else nstr = String.Format("%d",i.Amount); + int len = MiniHudFontOutline.StringWidth(nstr); + Screen.DrawText(MiniHudFontOutline,mhudfontcol[(i.Amount<=0)?MCR_RED:selected?MCR_BRASS:MCR_WHITE],(xx+30)-len,(yy+30)-6,nstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); + } + return true; + } + + private void DrawInventory() + { + int invy = 61; + // active items (armor / powerups) + double xx = xmargin+2; + double yy = ss.y-(ymargin+invy+9); + bool drewarmor = false; + for ( Inventory i=CPlayer.mo.Inv; i; i=i.Inv ) + { + if ( (i.Amount <= 0) || (!(i is 'SWWMArmor') && !(i is 'BasicArmor')) ) continue; + if ( !DrawInvIcon(i,xx,yy,forceamt:true,selected:true) ) continue; + yy -= 34; + drewarmor = true; + } + yy = ss.y-(ymargin+invy+9); + if ( drewarmor ) + { + xx += 36; + if ( CPlayer.mo.InvSel && !isInventoryBarVisible() ) yy -= 34; + } + int drawcnt = 0; + bool lastdrawn = false; + for ( Inventory i=CPlayer.mo.Inv; i; i=i.Inv ) + { + if ( (drawcnt > 0) && !(drawcnt%3) && lastdrawn ) + { + xx += 36; + yy = ss.y-(ymargin+invy+9); + if ( CPlayer.mo.InvSel && !isInventoryBarVisible() ) yy -= 34; + } + lastdrawn = false; + if ( (i is 'SWWMLamp') && (SWWMLamp(i).bActivated || (SWWMLamp(i).Charge < SWWMLamp(i).default.Charge)) ) + { + DrawInvIcon(i,xx,yy,selected:true,aspowerup:true); + yy -= 34; + drawcnt++; + lastdrawn = true; + continue; + } + if ( (i is 'DivineSpriteEffect') && !DivineSpriteEffect(i).bHealDone ) + { + DrawInvIcon(i,xx,yy,selected:true,aspowerup:true); + yy -= 34; + drawcnt++; + lastdrawn = true; + continue; + } + if ( !(i is 'Powerup') || (Powerup(i).EffectTics <= 0) || !(Powerup(i).Icon) ) continue; + if ( !DrawInvIcon(i,xx,yy) ) continue; + yy -= 34; + drawcnt++; + lastdrawn = true; + } + // inventory box / bar + if ( !CPlayer.mo.InvSel ) return; + if ( isInventoryBarVisible() ) + { + int invcount = 0; + Inventory FirstInv = CPlayer.mo.FirstInv(); + Inventory LastInv = CPlayer.mo.InvSel; + for ( Inventory i=FirstInv; i; i=i.NextInv() ) + { + LastInv = i; + invcount++; + } + bool bSmol = (ss.x<640); + int maxj = bSmol?4:6; + double alphstep = clamp(invcount,1,maxj+1); + double xx = (ss.x-34)/2; + double yy = (ss.y+64)/2; + Screen.DrawTexture(InventoryTex,false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + // previous entries + int j = 1; + Inventory i = CPlayer.mo.InvSel.PrevInv()?CPlayer.mo.InvSel.PrevInv():LastInv; + while ( i ) + { + if ( i == CPlayer.mo.InvSel ) break; // ensure we only loop around once + DrawInvIcon(i,(xx+2)-j*34,yy+2,(alphstep-j)/alphstep); + j++; + if ( j > maxj ) break; + i = i.PrevInv()?i.PrevInv():LastInv; + } + // next entries + j = 1; + i = CPlayer.mo.InvSel.NextInv()?CPlayer.mo.InvSel.NextInv():FirstInv; + while ( i ) + { + if ( i == CPlayer.mo.InvSel ) break; // ensure we only loop around once + DrawInvIcon(i,(xx+2)+j*34,yy+2,(alphstep-j)/alphstep); + j++; + if ( j > maxj ) break; + i = i.NextInv()?i.NextInv():FirstInv; + } + // current + DrawInvIcon(CPlayer.mo.InvSel,xx+2,yy+2,selected:true); + return; + } + Screen.DrawTexture(InventoryTex,false,xmargin+36,ss.y-(ymargin+invy+2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + DrawInvIcon(CPlayer.mo.InvSel,xmargin+38,ss.y-(ymargin+invy),selected:true); + } + + override void DrawPowerups() + { + // don't do anything, handled by inventory drawer + } +} diff --git a/zscript/hud/swwm_hud_messages.zsc b/zscript/hud/swwm_hud_messages.zsc new file mode 100644 index 000000000..912267982 --- /dev/null +++ b/zscript/hud/swwm_hud_messages.zsc @@ -0,0 +1,419 @@ +// messages (notifications, chat, pickups, midprint...) +extend Class SWWMStatusBar +{ + override void FlushNotify() + { + if ( level.maptime <= 1 ) + { + // flush ALL messages + MainQueue.Clear(); + PickupQueue.Clear(); + midstr = ""; + midtic = 0; + if ( midl ) midl.Destroy(); + ntagstr = ""; + ntagtic = 0; + return; + } + // flush non-chat messages and nametag + for ( int i=0; i= PRINT_CHAT ) continue; + MainQueue.Delete(i); + i--; + } + ntagstr = ""; + ntagtic = 0; + } + + override bool ProcessMidPrint( Font fnt, String msg, bool bold ) + { + // check for Korax lines, add them to chat (and reply to some of them) + bool koraxline = false; + if ( msg == StringTable.Localize("$TXT_ACS_MAP02_9_GREET") ) + koraxline = true; + else if ( msg == StringTable.Localize("$TXT_ACS_MAP02_11_AREYO") ) + { + EventHandler.SendNetworkEvent("swwmkoraxline",0,consoleplayer); + koraxline = true; + SWWMDialogues.StartSeq("GREET"); + } + else if ( msg == StringTable.Localize("$TXT_ACS_MAP13_11_MYSER") ) + { + EventHandler.SendNetworkEvent("swwmkoraxline",1,consoleplayer); + koraxline = true; + SWWMDialogues.StartSeq("BLOOD"); + } + else if ( msg == StringTable.Localize("$TXT_ACS_MAP22_27_YOUHA") ) + koraxline = true; + else if ( msg == StringTable.Localize("$TXT_ACS_MAP22_29_ITHIN") ) + { + EventHandler.SendNetworkEvent("swwmkoraxline",2,consoleplayer); + koraxline = true; + SWWMDialogues.StartSeq("GAME"); + } + else if ( msg == StringTable.Localize("$TXT_ACS_MAP27_8_WORSH") ) + koraxline = true; + else if ( msg == StringTable.Localize("$TXT_ACS_MAP27_10_THENA") ) + { + EventHandler.SendNetworkEvent("swwmkoraxline",3,consoleplayer); + koraxline = true; + SWWMDialogues.StartSeq("WORSHIP"); + } + else if ( msg == StringTable.Localize("$TXT_ACS_MAP35_12_AREYO") ) + koraxline = true; + else if ( msg == StringTable.Localize("$TXT_ACS_MAP35_14_TOFAC") ) + { + EventHandler.SendNetworkEvent("swwmkoraxline",4,consoleplayer); + koraxline = true; + SWWMDialogues.StartSeq("MASTERS"); + } + if ( koraxline ) + { + Console.PrintfEx(PRINT_CHAT,"\cuKorax\c*: "..msg.."\c*"); + return true; + } + bool ispuzzle = false; + let s = SWWMStats.Find(players[consoleplayer]); + if ( s ) + { + puzzlecnt = s.puzzlecnt; + realpuzzlecnt = s.realpuzzlecnt; + } + // check for puzzle solving lines (oh god why), and increment the achievement + if ( ((level.mapname ~== "MAP04") || (level.mapname ~== "MAP05")) + && ((msg == StringTable.Localize("$TXT_ACS_MAP04_9_ONEHA")) + || (msg == StringTable.Localize("$TXT_ACS_MAP04_11_ONETH")) + || (msg == StringTable.Localize("$TXT_ACS_MAP05_6_ONETH"))) ) + { + if ( puzzlecnt >= 4 ) puzzlecnt = 0; + puzzlecnt++; + realpuzzlecnt++; + ispuzzle = true; + } + else if ( ((level.mapname ~== "MAP08") || (level.mapname ~== "MAP09") || (level.mapname ~== "MAP10")) + && ((msg == StringTable.Localize("$TXT_ACS_MAP08_6_ONESI")) + || (msg == StringTable.Localize("$TXT_ACS_MAP09_6_ONESI")) + || (msg == StringTable.Localize("$TXT_ACS_MAP10_6_ONESI"))) ) + { + if ( (puzzlecnt < 4) || (puzzlecnt >= 10) ) puzzlecnt = 4; + puzzlecnt++; + realpuzzlecnt++; + ispuzzle = true; + } + else if ( ((level.mapname ~== "MAP28") || (level.mapname ~== "MAP30") || (level.mapname ~== "MAP34")) + && ((msg == StringTable.Localize("$TXT_ACS_MAP28_6_ONENI")) + || (msg == StringTable.Localize("$TXT_ACS_MAP30_6_ONENI")) + || (msg == StringTable.Localize("$TXT_ACS_MAP34_1_ONENI"))) ) + { + if ( (puzzlecnt < 10) || (puzzlecnt >= 19) ) puzzlecnt = 10; + puzzlecnt++; + realpuzzlecnt++; + ispuzzle = true; + } + // deathkings + else if ( ((level.mapname ~== "MAP44") || (level.mapname ~== "MAP46")) + && ((msg == StringTable.Localize("$TXT_ACS_MAP44_1_THREE")) + || (msg == StringTable.Localize("$TXT_ACS_MAP44_2_TWOMO")) + || (msg == StringTable.Localize("$TXT_ACS_MAP44_3_ONEMO")) + || (msg == StringTable.Localize("$TXT_ACS_MAP44_4_THEPU")) + || (msg == StringTable.Localize("$TXT_ACS_MAP44_10_ONETH")) + || (msg == StringTable.Localize("$TXT_ACS_MAP44_11_TWOTH")) + || (msg == StringTable.Localize("$TXT_ACS_MAP46_8_ONEFO"))) ) + { + if ( (puzzlecnt < 19) || (puzzlecnt >= 30) ) puzzlecnt = 19; + puzzlecnt++; + realpuzzlecnt++; + ispuzzle = true; + } + else if ( (level.mapname ~== "MAP51") + && ((msg == StringTable.Localize("$TXT_ACS_MAP51_8_ONETH")) + || (msg == StringTable.Localize("$TXT_ACS_MAP51_9_TWOTH")) + || (msg == StringTable.Localize("$TXT_ACS_MAP51_10_THECR"))) ) + { + if ( (puzzlecnt < 30) || (puzzlecnt >= 34) ) puzzlecnt = 30; + puzzlecnt++; + realpuzzlecnt++; + ispuzzle = true; + } + if ( ispuzzle ) + { + EventHandler.SendNetworkEvent("swwmstorepuzzlecnt",consoleplayer,puzzlecnt,realpuzzlecnt); + int tpuz = SWWMUtility.IsDeathkings()?15:19; + if ( realpuzzlecnt >= tpuz ) SWWMUtility.MarkAchievement("puzzle",players[consoleplayer]); + if ( !swwm_nomapmsg ) + { + switch ( puzzlecnt ) + { + case 1: + SWWMDialogues.StartSeq("PUZZLE1"); + break; + case 2: + SWWMDialogues.StartSeq("PUZZLE2"); + break; + case 3: + SWWMDialogues.StartSeq("PUZZLE3"); + break; + case 5: + SWWMDialogues.StartSeq("PUZZLE4"); + break; + case 8: + SWWMDialogues.StartSeq("PUZZLE5"); + break; + case 11: + SWWMDialogues.StartSeq("PUZZLE6"); + break; + case 20: + SWWMDialogues.StartSeq("PUZZLE7"); + break; + case 30: + SWWMDialogues.StartSeq("PUZZLE8"); + break; + case 31: + SWWMDialogues.StartSeq("PUZZLE9"); + break; + } + } + } + // rampancy fun stuff + bool mainframeline = false; + if ( (msg == StringTable.Localize("$AISPAWN_TEXT1")) + || (msg == StringTable.Localize("$AISPAWN_TEXT2")) + || (msg == StringTable.Localize("$AISEE_TEXT")) + || (msg == StringTable.Localize("$AIACTIVE_TEXT1")) + || (msg == StringTable.Localize("$AIACTIVE_TEXT2")) + || (msg == StringTable.Localize("$AIPAIN_TEXT1")) + || (msg == StringTable.Localize("$AIPAIN_TEXT2")) + || (msg == StringTable.Localize("$AIPAIN_TEXT3")) + || (msg == StringTable.Localize("$AIPAIN_TEXT4")) + || (msg == StringTable.Localize("$AIPAIN_TEXT5")) + || (msg == StringTable.Localize("$AIPAIN_TEXT6")) + || (msg == StringTable.Localize("$AIPAIN_TEXT7")) ) + mainframeline = true; + if ( mainframeline ) + { + Console.PrintfEx(PRINT_CHAT,"\cuAI Mainframe\c*: "..msg.."\c*"); + return true; + } + String lastmidstr = midstr; + if ( !fnt || (fnt == smallfont) ) + { + midstr = msg; + midtic = level.totaltime; + midtype = bold?2:0; + if ( midl ) midl.Destroy(); + // don't forget to log to console, like gzdoom itself does + // (also, account for potential unterminated color escapes) + // PS: avoid duplicate message spam, too + if ( (msg == lastmidstr) || (msg == "") ) return true; + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY, + "----------------------------------------\n" + .."%s\c-\n" + .."----------------------------------------",msg); + return true; + } + if ( (fnt == bigfont) || (fnt == originalbigfont) ) + { + midstr = msg; + midtic = level.totaltime; + midtype = bold?3:1; + if ( midl ) midl.Destroy(); + // don't forget to log to console, like gzdoom itself does + // (also, account for potential unterminated color escapes) + // PS: avoid duplicate message spam, too + if ( (msg == lastmidstr) || (msg == "") ) return true; + Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY, + "----------------------------------------\n" + .."%s\c-\n" + .."----------------------------------------",msg); + return true; + } + return false; + } + + override bool ProcessNotify( EPrintLevel printlevel, String outline ) + { + // ignore outside of levels + if ( gamestate != GS_LEVEL ) return false; + // discard if the console is active + // (helps when using debug commands that print a lot of text) + if ( consolestate != c_up ) return true; + int rprintlevel = printlevel&PRINT_TYPES; + // treat any unrecognized levels as critical messages + // note that checking for PRINT_LOG isn't needed as those are skipped early in the C++ side + if ( (rprintlevel < PRINT_LOW) || (rprintlevel > PRINT_TEAMCHAT) ) rprintlevel = PRINT_HIGH; + // strip trailing newline (all Printf type messages have this) + outline.DeleteLastCharacter(); + let m = new('MsgLine'); + m.str = outline; + m.type = rprintlevel; + m.tic = level.totaltime; + m.rep = 1; + if ( rprintlevel == PRINT_LOW ) + { + // check if repeated + for ( int i=0; i PRINT_HIGH) && (level.totaltime < (MainQueue[i].tic+GameTicRate*CHATDURATION)) ) continue; + MainQueue.Delete(i); + i--; + } + if ( (midstr != "") && ((midtic+int(GameTicRate*con_midtime)) < level.totaltime) ) + { + midstr = ""; + midtic = 0; + if ( midl ) midl.Destroy(); + } + if ( (ntagstr != "") && ((ntagtic+70) < level.totaltime) ) + { + ntagstr = ""; + ntagtic = 0; + } + } + + private void DrawPickups() + { + int h = mSmallFont.GetHeight(); + // draw nametags below them + double yy; + double nalph = 0.; + double tagtime = (ntagtic+70)-(level.totaltime+fractic); + if ( (ntagstr != "") && (tagtime > 0) ) + { + nalph = clamp(tagtime/20.,0.,1.); + yy = ss0.y-(ymargin0+50); + int len = mSmallFont.StringWidth(ntagstr); + double xx = (ss0.x-len)/2.; + Screen.Dim(0xFF000000,.8*nalph,int((xx-6)*hs0),int(yy*hs0),int((len+12)*hs0),int((h+4)*hs0)); + Screen.DrawText(mSmallFont,ntagcol,int(xx),yy+2,ntagstr,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,nalph); + } + if ( PickupQueue.Size() <= 0 ) return; + // reverse order since they're drawn bottom to top + int mend = max(0,PickupQueue.Size()-MAXPICKUP); + yy = ss0.y-(ymargin0+50); + // shift up if nametag is present + if ( nalph > 0. ) yy -= int((mSmallFont.GetHeight()+6)*clamp(nalph*2.,0.,1.)); + for ( int i=PickupQueue.Size()-1; i>=mend; i-- ) + { + PickupQueue[i].UpdateText(int(min(ss0.x,ss0.y/.5625)*.75)); + double curtime = (PickupQueue[i].tic+GameTicRate*PICKDURATION)-(level.totaltime+fractic); + double alph = clamp(curtime/20.,0.,1.); + let l = PickupQueue[i].l; + int maxlen = 0; + for ( int j=0; j maxlen ) maxlen = len; + } + double xx = (ss0.x-maxlen)/2.; + Screen.Dim(0xFF000000,.8*alph,int((xx-6)*hs0),int((yy-h*(l.Count()-1))*hs0),int((maxlen+12)*hs0),int((h*l.Count()+4)*hs0)); + for ( int j=l.Count()-1; j>=0; j-- ) + { + int len = mSmallFont.StringWidth(l.StringAt(j)); + xx = int((ss0.x-len)/2.); + Screen.DrawText(mSmallFont,msg0color,xx,yy+2,l.StringAt(j),DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph); + yy -= h; + } + yy -= 6; + } + } + + private void DrawMessages( double boxalph = 1. ) + { + double xx, yy; + if ( midstr != "" ) + { + double ssp = (midtype&1)?.5:1.; + double hsp = (midtype&1)?2.:1.; + int col = (midtype&2)?msgmidcolor2:msgmidcolor; + double curtime = (midtic+int(GameTicRate*con_midtime))-(level.totaltime+fractic); + double alph = clamp(curtime/20.,0.,1.); + if ( !midl || (midsz != int(min(ss0.x,ss0.y/.5625)*ssp)) ) + { + if ( midl ) midl.Destroy(); + midsz = int(min(ss0.x,ss0.y/.5625)*ssp); + midl = mSmallFont.BreakLines(midstr,midsz); + } + int h = mSmallFont.GetHeight(); + int maxlen = 0; + for ( int i=0; i=gametic)?MAXSHOWNBIG:MAXSHOWN)); + xx = xmargin; + yy = ymargin; + bool smol = (min(ss.x,ss.y/.5625)<640); + Screen.DrawTexture(ChatTex[smol?3:0],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,boxalph); + yy += 2; + for ( int i=mstart; i0; i-- ) + LagHealth[i] = hp; + LagHealthInter.Reset(hp); + let d = Demolitionist(CPlayer.mo); + if ( d ) + { + FuelInter.Reset(d.dashfuel/2); + DashInter.Reset((40-d.dashcooldown)*3); + } + else + { + FuelInter.Reset(0); + DashInter.Reset(0); + } + } + + private void TickStatusInterpolators() + { + int hp = CPlayer.Health; + HealthInter.Update(hp); + // flash 'em + if ( hp > LastHealth ) HealthFlash = gametic+25; + // lag + if ( hp > LastHealth ) + { + for ( int i=9; i>0; i-- ) + LagHealth[i] = hp; + } + LagHealth[0] = LastHealth = hp; + LagHealthInter.Update(LagHealth[9]); + for ( int i=9; i>0; i-- ) + LagHealth[i] = LagHealth[i-1]; + // fuel/dash + let d = Demolitionist(CPlayer.mo); + if ( d ) + { + FuelInter.Update(d.dashfuel/2); + DashInter.Update((40-d.dashcooldown)*3); + } + else + { + FuelInter.Update(0); + DashInter.Update(0); + } + } + + private void TickStatus() + { + // low health pulsing + if ( (CPlayer.health <= 0) || (CPlayer.health > 25) ) + PulsePhase = 0; + else + { + PulsePhase--; + if ( (PulsePhase < 0) || (PulsePhase > CPlayer.health*2+25) ) + PulsePhase = CPlayer.health*2+25; + } + } + + private int GetFaceTex( Demolitionist demo ) + { + let facestate = demo.facestate; + let paindir = demo.paindir; + let facetimer = demo.facetimer; + let blinktime = demo.blinktime; + if ( CPlayer.Health <= 0 ) return 13; + if ( (isInvulnerable() || demo.FindInventory('InvinciballPower')) && (facestate >= FS_PAIN) ) return 14; + if ( facestate == FS_OUCH ) return (paindir==1)?11:(paindir==-1)?12:10; + if ( facestate == FS_PAIN ) return (paindir==1)?8:(paindir==-1)?9:7; + if ( facestate == FS_GRIN ) return 5; + if ( facestate == FS_EVIL ) return 6; + if ( facestate == FS_SAD ) return 19; + if ( facestate == FS_WINK ) return 20; + if ( facestate == FS_BLINK ) return ((facetimer>28)||(facetimer<2))?3:4; + switch ( blinktime ) + { + case -1: + case -3: + return 3; + break; + case -2: + return 4; + break; + } + return (CPlayer.Health<=25)?19:2; + } + + private void DrawMugshot() + { + SetUIRandom(MSTime()*128); + let demo = Demolitionist(CPlayer.mo); + if ( !demo ) return; + double paintime = clamp((demo.lastdamagetimer-(gametic+Fractic))/double(GameTicRate),0.,1.); + double noiz = min(demo.lastdamage*.5*paintime,3.); + Vector2 shake = (RandomShiver(),RandomShiver())*noiz; + if ( !CPlayer.mo.FindInventory('GhostPower') ) + { + int facecol = CVar.GetCVar('swwm_tagcolor',CPlayer).GetInt(); + if ( (facecol < 0) || (facecol > 15) ) facecol = 0; + Screen.DrawTexture(FaceTex[0],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcWidth,32,DTA_SrcHeight,32,DTA_DestWidth,32,DTA_DestHeight,32,DTA_SrcX,32*(facecol%4),DTA_SrcY,32*(facecol/4)); + bool raging = CPlayer.mo.FindInventory('RagekitPower'); + bool angy = CPlayer.mo.FindInventory('AngeryPower'); + if ( raging && angy ) Screen.DrawTexture(FaceTex[18],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else if ( raging ) Screen.DrawTexture(FaceTex[17],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else if ( angy ) Screen.DrawTexture(FaceTex[15],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawTexture(FaceTex[1],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Color,Color(255,255,0,0),DTA_Alpha,min(1.,noiz)); + if ( (CPlayer.Health > 0) && (isInvulnerable() || CPlayer.mo.FindInventory('InvinciballPower')) ) + Screen.DrawTexture(FaceTex[1],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,.8+.1*sin(gametic+fractic)); + } + else + { + Screen.DrawTexture(FaceTex[0],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcWidth,32,DTA_SrcHeight,32,DTA_DestWidth,32,DTA_DestHeight,32,DTA_FillColor,Color(0,0,0),DTA_Alpha,.25*(1.-min(1.,noiz))); + Screen.DrawTexture(FaceTex[1],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_FillColor,Color(255,0,0),DTA_Alpha,.25*min(1.,noiz)); + } + Screen.DrawTexture(FaceTex[GetFaceTex(demo)],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( CPlayer.mo.FindInventory('BarrierPower') ) Screen.DrawTexture(FaceTex[16],false,xmargin+shake.x,ss.y-(ymargin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,.5,DTA_LegacyRenderStyle,STYLE_Add); + } + + private void DrawStatus() + { + DrawMugshot(); + int ox = 36; + int oy = 5; + Screen.DrawTexture(StatusTex,false,xmargin+ox,ss.y-(ymargin+22+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + String str; + double ht = clamp(HealthInter.GetValue(fractic),0,10000); + str = String.Format("%3d",clamp(round(ht),0,999)); + double hw = min(ht,100); + double bhw = hw; + int hcolor = MCR_RED; + if ( round(ht) > 500 ) hcolor = MCR_GOLD; + else if ( round(ht) > 200 ) hcolor = MCR_PURPLE; + else if ( round(ht) > 100 ) hcolor = MCR_AQUA; + if ( isInvulnerable() || CPlayer.mo.FindInventory('InvinciballPower') ) + { + Screen.DrawTexture(HealthTex[0],false,xmargin+3+ox,ss.y-(ymargin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(HealthTex[4],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); + hcolor = MCR_WHITE; + } + else + { + Screen.DrawTexture(HealthTex[0],false,xmargin+3+ox,ss.y-(ymargin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(HealthTex[0],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); + if ( ht > 100 ) + { + hw = min(ht-100,100); + Screen.DrawTexture(HealthTex[1],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); + } + if ( ht > 200 ) + { + hw = min(ht-200,300)/3.; + Screen.DrawTexture(HealthTex[2],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); + } + if ( ht > 500 ) + { + hw = min(ht-500,500)/5.; + Screen.DrawTexture(HealthTex[3],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw); + } + } + if ( CPlayer.mo.FindInventory('DivineSpriteEffect') ) + { + double falph = clamp((ht-1000)/6000.,0.,1.); + Screen.DrawTexture(HealthTex[5],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph,DTA_LegacyRenderStyle,STYLE_Add); + String tst; + double alph = .1; + int trl = 9; + for ( double alph = .1; alph <= .5; alph += .1 ) + { + tst = "AAA"; + SWWMUtility.ObscureText(tst,(gametic-trl)/3,minihud:true); + trl--; + Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_WHITE],xmargin+107+ox,ss.y-(ymargin+20+oy),tst,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph*alph,DTA_LegacyRenderStyle,STYLE_Add); + } + Screen.DrawText(MiniHUDFont,mhudfontcol[hcolor],xmargin+107+ox,ss.y-(ymargin+20+oy),String.Format("%3d",clamp(round(ht),0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,1.-falph); + } + else + { + Screen.DrawText(MiniHUDFont,mhudfontcol[hcolor],xmargin+107+ox,ss.y-(ymargin+20+oy),String.Format("%3d",clamp(round(ht),0,999)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + int f = HealthFlash; + if ( f && (gametic < f) ) + { + double alph = max((f-(gametic+FracTic))/25.,0.)**1.5; + Screen.DrawTexture(HealthTex[7],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,bhw,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_FLASH],xmargin+107+ox,ss.y-(ymargin+20+oy),str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + if ( (CPlayer.health > 0) && (CPlayer.health <= 25) && (PulsePhase <= 15) && (hcolor != MCR_WHITE) ) + { + double alph = clamp(sin((PulsePhase-FracTic)*12.),0.,1.); + Screen.DrawTexture(HealthTex[6],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,hw,DTA_Alpha,alph); + Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_REDFLASH],xmargin+107+ox,ss.y-(ymargin+20+oy),str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + } + ht = clamp(LagHealthInter.GetValue(fractic),0,1000); + double hwl = min(ht,100); + if ( hwl > bhw ) + { + Screen.DrawTexture(HealthTex[8],false,xmargin+3+ox,ss.y-(ymargin+19+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowLeftF,bhw,DTA_WindowRightF,hwl,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(HealthTex[8],false,xmargin+2+ox,ss.y-(ymargin+20+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowLeftF,bhw,DTA_WindowRightF,hwl); + } + } + double ft = clamp(FuelInter.GetValue(fractic),0,120); + Screen.DrawTexture(FuelTex[swwm_superfuel],false,xmargin+3+ox,ss.y-(ymargin+7+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,ft,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(FuelTex[swwm_superfuel],false,xmargin+2+ox,ss.y-(ymargin+8+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,ft); + let d = Demolitionist(CPlayer.mo); + bool blink = (!d || (d.dashfuel > 20) || ((gametic%10) < 5)); + double dt = clamp(DashInter.GetValue(fractic),0,120); + Screen.DrawTexture(DashTex,false,xmargin+3+ox,ss.y-(ymargin+4+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,dt,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(DashTex,false,xmargin+2+ox,ss.y-(ymargin+5+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,dt,DTA_ColorOverlay,Color(blink?0:96,0,0,0)); + } +} diff --git a/zscript/hud/swwm_hud_target.zsc b/zscript/hud/swwm_hud_target.zsc new file mode 100644 index 000000000..9fcf02a9a --- /dev/null +++ b/zscript/hud/swwm_hud_target.zsc @@ -0,0 +1,416 @@ +// Targeter +extend Class SWWMStatusBar +{ + + static private string FormatDist( double dist ) + { + double meters = dist/32.; + if ( meters > 1000. ) return String.Format("\cj%d\cc%s",int(meters/1000.),StringTable.Localize("$SWWM_UNIT_KILOMETER")); + return String.Format("\cj%d\cc%s",int(meters),StringTable.Localize("$SWWM_UNIT_METER")); + } + + private void DrawInterest( Vector3 viewvec, bool &projinit ) + { + String tag; + SWWMInterest poi = hnd.intpoints; + if ( !poi ) return; + do + { + // this ensures that projection data isn't cached if there are no target array elements, to avoid needless GC thrashing + if ( !projinit ) + { + projinit = true; + SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); + Screen.SetClipRect(projdata.viewx,projdata.viewy,projdata.vieww,projdata.viewh); + } + Vector3 tdir = level.Vec3Diff(ViewPos,poi.pos); + Vector3 ndc = SWWMUtility.ProjectPoint(projdata,ViewPos+tdir); + if ( ndc.z <= 0. ) continue; + Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc)/hs2; + if ( poi.type == INT_Key ) tag = String.Format("\cf%s\c-",poi.keytag); + else if ( poi.type == INT_Exit ) + { + if ( (poi.trackedline.special == Teleport_EndGame) + || ((poi.trackedline.special == Exit_Secret) && (level.nextsecretmap.Left(6) == "enDSeQ")) + || ((poi.trackedline.special == Exit_Normal) && (level.nextmap.Left(6) == "enDSeQ")) ) + tag = String.Format("\cg%s\c-",StringTable.Localize("$SWWM_EEXIT")); + else if ( poi.trackedline.special == Exit_Secret ) + { + LevelInfo l = LevelInfo.FindLevelInfo(level.nextsecretmap); + if ( l && l.isValid() ) tag = String.Format("\cx%s:\c- %s\c-",StringTable.Localize("$SWWM_SEXIT"),l.LookupLevelName()); + else tag = String.Format("\cx%s\c-",StringTable.Localize("$SWWM_SEXIT")); + } + else if ( (poi.trackedline.special == Exit_Normal) || ((poi.trackedline.special == ACS_Execute) && (poi.trackedline.Args[0] == -Int('E1M8_KNOCKOUT'))) ) + { + LevelInfo l = LevelInfo.FindLevelInfo(level.nextmap); + if ( l && l.isValid() ) tag = String.Format("\cy%s:\c- %s\c-",StringTable.Localize("$SWWM_NEXIT"),l.LookupLevelName()); + else tag = String.Format("\cy%s\c-",StringTable.Localize("$SWWM_NEXIT")); + } + else if ( poi.trackedline.special == Teleport_NewMap ) + { + LevelInfo l = LevelInfo.FindLevelByNum(poi.trackedline.Args[0]); + if ( l && l.isValid() ) tag = String.Format("\cy%s\c-%s\c-",StringTable.Localize("$SWWM_EXIT"),l.LookupLevelName()); + else tag = String.Format("\cy%s\c-",StringTable.Localize("$SWWM_NEXIT")); + } + else if ( ((poi.trackedline.special == ACS_Execute) || (poi.trackedline.special == ACS_ExecuteAlways)) && (poi.trackedline.Args[0] == -Int('MapFadeOut')) ) + { + LevelInfo l = LevelInfo.FindLevelByNum(poi.trackedline.Args[2]); + if ( (level.levelnum != 1) && l && l.isValid() ) tag = String.Format("\cy%s\c-%s\c-",StringTable.Localize("$SWWM_EXIT"),l.LookupLevelName()); + else tag = String.Format("\cy%s\c-",StringTable.Localize("$SWWM_NEXIT")); + } + } + Screen.DrawText(mTinyFontOutlineAlt,Font.CR_WHITE,vpos.x-mTinyFontOutlineAlt.StringWidth(tag)/2.,vpos.y-mTinyFontOutlineAlt.GetHeight()/2.,tag,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); + tag = String.Format("\cu(%s\cu)\c-",FormatDist(tdir.length())); + Screen.DrawText(mTinyFontOutlineAlt,Font.CR_WHITE,vpos.x-mTinyFontOutlineAlt.StringWidth(tag)/2.,vpos.y+mTinyFontOutlineAlt.GetHeight()/2.,tag,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); + } + while ( poi = poi.next ); + } + + private int GetItemFontColor( SWWMitemSense s ) + { + let col = s.scoreitem?Font.CR_YELLOW:Font.CR_WHITE; + let i = (s.item is 'SWWMRespawnTimer')?s.item.tracer:s.item; + if ( i is 'Weapon' ) col = s.vipitem?Font.FindFontColor('VIPGold'):Font.CR_GOLD; + else if ( i is 'MagAmmo' ) col = s.vipitem?Font.FindFontColor('VIPTan'):Font.CR_TAN; + else if ( (i is 'BackpackItem') || (i is 'HammerspaceEmbiggener') ) col = Font.CR_DARKBROWN; + else if ( i is 'Ammo' ) col = s.vipitem?Font.FindFontColor('VIPBrown'):Font.CR_BROWN; + else if ( (i is 'PowerupGiver') || (i is 'AmmoFabricator') || (i is 'Chancebox') || ((i is 'Inventory') && Inventory(i).bBIGPOWERUP) ) col = s.vipitem?Font.FindFontColor('VIPPurple'):Font.CR_PURPLE; + else if ( (i is 'Health') || (i is 'HealthPickup') || (i is 'SWWMHealth') ) col = Font.CR_RED; + else if ( (i is 'Armor') || (i is 'SWWMSpareArmor') ) col = Font.CR_GREEN; + else if ( i is 'PuzzleItem' ) col = Font.CR_LIGHTBLUE; + else if ( i is 'Key' ) col = Font.CR_UNTRANSLATED; + else if ( i is 'SWWMCollectible' ) col = Font.CR_PURPLE; + return col; + } + + private void DrawItemSense( Vector3 viewvec, bool &projinit ) + { + let demo = Demolitionist(CPlayer.mo); + if ( !demo ) return; + SWWMItemSense s = demo.itemsense; + if ( !s ) return; + do + { + if ( !s.item ) continue; + Vector3 tdir = level.Vec3Diff(ViewPos,s.pos); + if ( viewvec dot tdir < 0 ) continue; + Vector3 ndc = SWWMUtility.ProjectPoint(projdata,ViewPos+tdir); + if ( ndc.z >= 1. ) continue; + Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc)/hs1; + int mtime = level.allmap?(GameTicRate*2):GameTicRate; + double alph = clamp(((s.updated+mtime)-(level.maptime+fractic))/double(GameTicRate),0.,1.); + alph *= clamp(1.5-1.5*(tdir.length()/(level.allmap?1200.:800.)),0.,1.); + String tag = s.tag; + Screen.DrawText(mTinyFontOutlineAlt,GetItemFontColor(s),vpos.x-mTinyFontOutlineAlt.StringWidth(tag)/2.,vpos.y-mTinyFontOutlineAlt.GetHeight()/2.,tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + tag = String.Format("\cu(%s\cu)\c-",FormatDist(tdir.length())); + Screen.DrawText(mTinyFontOutlineAlt,Font.CR_WHITE,vpos.x-mTinyFontOutlineAlt.StringWidth(tag)/2.,vpos.y+mTinyFontOutlineAlt.GetHeight()/2.,tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + if ( s.item is 'SWWMRespawnTimer' ) + { + tag = String.Format(StringTable.Localize("$SWWM_TRESPAWN"),s.item.special2/GameTicRate); + Screen.DrawText(mTinyFontOutlineAlt,Font.CR_WHITE,vpos.x-mTinyFontOutlineAlt.StringWidth(tag)/2.,vpos.y+mTinyFontOutlineAlt.GetHeight()*2,tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + } + } + while ( s = s.next ); + } + + private bool IsLegendary( Actor a ) + { + for ( Inventory i=a.inv; i; i=i.inv ) + { + if ( (i.GetClassName() == 'LDLegendaryMonsterToken') && swwm_ldspoil ) return true; + else if ( i.GetClassName() == 'LDLegendaryMonsterTransformed' ) return true; + } + return false; + } + + private void DrawTrackers( Vector3 viewvec, bool &projinit ) + { + let cam = players[consoleplayer].camera; + if ( !cti ) cti = ThinkerIterator.Create('SWWMQuickCombatTracker',Thinker.STAT_INVENTORY); + else cti.Reinit(); + SWWMQuickCombatTracker ct; + bool onlymonsters = (swwm_targeter >= 2); + bool onlyfriends = (swwm_targeter >= 3); + bool drawvalues = swwm_targetvals; + int fadedist = swwm_bardist; + while ( ct = SWWMQuickCombatTracker(cti.Next()) ) + { + // this ensures that projection data isn't cached if there are no target array elements, to avoid needless GC thrashing + if ( !projinit ) + { + projinit = true; + SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); + Screen.SetClipRect(projdata.viewx,projdata.viewy,projdata.vieww,projdata.viewh); + } + // ignore unowned (can happen?) + if ( !ct.Owner ) continue; + // ignore if max health is zero (SOMEHOW can happen) + if ( ct.maxhealth <= 0 ) continue; + // ignore player trackers unless voodoo dolls + if ( ct.Owner.player && (ct.Owner.player.mo == ct.Owner) ) continue; + // ignore local player or camera + if ( (ct.Owner == CPlayer.mo) || (ct.Owner == cam) ) continue; + // ignore trackers not of this player + if ( ct.myplayer != CPlayer ) continue; + // ignore non-monsters if filtering monsters + // easy check since they have empty tags + if ( onlymonsters && (ct.mytag == "") ) continue; + // ignore enemies if filtering friends + if ( onlyfriends && (!ct.Owner.IsFriend(CPlayer.mo) || ct.Owner.player) ) continue; + // ignore trackers clearly outside of player view + Vector3 smpos = level.Vec3Offset(SWWMUtility.LerpVector3(ct.Owner.prev,ct.Owner.pos,fractic),(0,0,ct.lvheight)); + Vector3 tdir = level.Vec3Diff(viewpos,smpos); + // ignore trackers that are too far away + double dist = tdir.length(); + if ( (fadedist > 0) && (dist > fadedist*1.5) ) continue; + Vector3 ndc = SWWMUtility.ProjectPoint(projdata,viewpos+tdir); + if ( ndc.z <= 0. ) continue; + Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc)/hs1; + double fin = clamp(ct.fadein+fractic,0.,5.)/5.; + double fout = clamp(ct.lifespan-fractic,0.,25.)/25.; + double alph = fin*fout; + if ( fadedist > 0 ) + { + double df = 1.-(clamp((dist-fadedist)/fadedist,0.,.5)*2.); + alph *= df; + } + Vector2 barpos = vpos-(27,15); + if ( drawvalues ) + { + String val = String.Format("%d %d",ct.maxhealth,ct.maxhealth); + int valw = MiniHUDFontOutline.StringWidth(val); + val = String.Format("%d \c[MiniWhite]%d",ct.lasthealth,ct.maxhealth); + int ofsw = valw-MiniHUDFontOutline.StringWidth(val); + int col = (ct.lasthealth>ct.maxhealth)?mhudfontcol[MCR_BRASS]:(ct.lasthealth>(ct.maxhealth/2))?mhudfontcol[MCR_WHITE]:(ct.lasthealth>(ct.maxhealth/4))?mhudfontcol[MCR_TOMATO]:(ct.lasthealth>0)?mhudfontcol[MCR_RED]:mhudfontcol[MCR_SAYAHUD]; + Screen.DrawText(MiniHUDFontOutline,col,vpos.x-int((valw/2)-ofsw),barpos.y-(MiniHUDFontOutline.GetHeight()+2),val,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawChar(MiniHUDFontOutline,mhudfontcol[MCR_IBUKIHUD],vpos.x-3,barpos.y-(MiniHUDFontOutline.GetHeight()+2),0x2F,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + } + if ( swwm_targettags && (ct.mytag != "") ) + { + Font fnt = swwm_bigtags?mSmallFontOutlineAlt:mTinyFontOutlineAlt; + String tag = ct.mytag; + if ( IsLegendary(ct.Owner) ) + { + if ( StringTable.Localize("$SWWM_LEGPREFIX") == "R" ) tag = tag..StringTable.Localize("$SWWM_LEG"); + else tag = StringTable.Localize("$SWWM_LEG")..tag; + } + if ( ct.Owner.bBOSS || ct.Owner.FindInventory('BossMarker') ) + { + if ( swwm_bigtags ) tag = "\cx★\c- "..tag.." \cx★\c-"; + else tag = "\cx*\c- "..tag.." \cx*\c-"; // miniwi has no stars + } + // voodoo dolls aren't friends + if ( ct.Owner.IsFriend(CPlayer.mo) && !ct.Owner.player ) tag = "\cg♥\c- "..tag.." \cg♥\c-"; + int ofsh = drawvalues?(MiniHUDFontOutline.GetHeight()+4):2; + Screen.DrawText(fnt,Font.CR_WHITE,vpos.x-fnt.StringWidth(tag)/2,barpos.y-(fnt.GetHeight()+ofsh),tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + } + Screen.DrawTexture(EnemyBTex,false,barpos.x,barpos.y,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + double ht = clamp(ct.intp.GetValue(fractic),0,ct.maxhealth); + double hw = (ht*50.)/ct.maxhealth; + Screen.DrawTexture(EnemyHTex[ct.Owner.bINVULNERABLE?1:0],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + double ohw = hw; + ht = clamp(ct.intpl.GetValue(fractic),0,ct.maxhealth); + hw = (ht*50.)/ct.maxhealth; + Screen.DrawTexture(EnemyHTex[2],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowLeftF,ohw,DTA_WindowRightF,hw); + if ( ct.cummdamage <= 0 ) continue; + double calph = clamp(ct.cummspan-fractic,0.,20.)/20.; + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_RED],barpos.x+4,barpos.y+8,(ct.cummdamage>=Actor.TELEFRAG_DAMAGE)?"∞":String.Format("%d",ct.cummdamage),DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,calph*alph); + if ( ct.cummflash <= 0 ) continue; + double falph = max((ct.cummflash-FracTic)/15.,0.)**1.5; + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_REDFLASH],barpos.x+4,barpos.y+8,(ct.cummdamage>=Actor.TELEFRAG_DAMAGE)?"∞":String.Format("%d",ct.cummdamage),DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,falph*calph*alph,DTA_LegacyRenderStyle,STYLE_Add); + } + // player-owned trackers are drawn last + cti.Reinit(); + while ( ct = SWWMQuickCombatTracker(cti.Next()) ) + { + // this ensures that projection data isn't cached if there are no target array elements, to avoid needless GC thrashing + if ( !projinit ) + { + projinit = true; + SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); + Screen.SetClipRect(projdata.viewx,projdata.viewy,projdata.vieww,projdata.viewh); + } + // ignore unowned (can happen?) + if ( !ct.Owner ) continue; + // ignore non-player trackers and voodoo dolls + if ( !ct.Owner.player || (ct.Owner.player.mo != ct.Owner) ) continue; + // ignore local player or camera + if ( (ct.Owner == CPlayer.mo) || (ct.Owner == cam) ) continue; + // ignore trackers not of this player + if ( ct.myplayer != CPlayer ) continue; + // ignore enemies if filtering friends + if ( onlyfriends && !ct.Owner.IsFriend(CPlayer.mo) ) continue; + // ignore trackers clearly outside of player view + Vector3 smpos = level.Vec3Offset(SWWMUtility.LerpVector3(ct.Owner.prev,ct.Owner.pos,fractic),(0,0,ct.lvheight)); + Vector3 tdir = level.Vec3Diff(viewpos,smpos); + Vector3 ndc = SWWMUtility.ProjectPoint(projdata,viewpos+tdir); + if ( ndc.z <= 0. ) continue; + Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc)/hs1; + double fin = clamp(ct.fadein+fractic,0.,5.)/5.; + double fout = clamp(ct.lifespan-fractic,0.,25.)/25.; + double alph = fin*fout; + Vector2 barpos = vpos-(27,15); + if ( drawvalues ) + { + // player health values are drawn as a single number + // font color is the same as in the status box + String val = String.Format("%d",clamp(ct.lasthealth,0,999)); + int valw = MiniHUDFontOutline.StringWidth(val); + int col = (ct.lasthealth>500)?mhudfontcol[MCR_GOLD]:(ct.lasthealth>200)?mhudfontcol[MCR_PURPLE]:(ct.lasthealth>100)?mhudfontcol[MCR_AQUA]:mhudfontcol[MCR_RED]; + if ( ct.Owner.bINVULNERABLE || (ct.Owner.player.cheats&(CF_GODMODE|CF_GODMODE2)) || ct.Owner.FindInventory('InvinciballPower') ) + col = mhudfontcol[MCR_WHITE]; + if ( ct.Owner.FindInventory('DivineSpriteEffect') ) + { + double falph = clamp((ct.intp.GetValue(fractic)-1000)/6000.,0.,1.); + String tst; + double ffalph = .1; + int trl = 9; + for ( double ffalph = .1; ffalph <= .5; ffalph += .1 ) + { + tst = "AAA"; + SWWMUtility.ObscureText(tst,(gametic-trl)/3,minihud:true); + trl--; + Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_WHITE],vpos.x-(valw/2),barpos.y-(MiniHUDFontOutline.GetHeight()+2),tst,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph*falph*ffalph,DTA_LegacyRenderStyle,STYLE_Add); + } + Screen.DrawText(MiniHUDFontOutline,col,vpos.x-(valw/2),barpos.y-(MiniHUDFontOutline.GetHeight()+2),val,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph*(1.-falph)); + } + else Screen.DrawText(MiniHUDFontOutline,col,vpos.x-(valw/2),barpos.y-(MiniHUDFontOutline.GetHeight()+2),val,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + } + Font fnt = swwm_bigtags?mSmallFontOutlineAlt:mTinyFontOutlineAlt; + int col = Font.CR_WHITE; + if ( teamplay ) + { + int team = ct.Owner.player.GetTeam(); + if ( team != -1 ) col = Font.FindFontColor(Teams[team].mName); // this works in practice because team names are the same as their text colors + if ( col == -1 ) col = Font.CR_WHITE; + } + int ofsh = drawvalues?(MiniHUDFontOutline.GetHeight()+4):2; + Screen.DrawText(fnt,col,vpos.x-fnt.StringWidth(ct.mytag)/2,barpos.y-(fnt.GetHeight()+ofsh),ct.mytag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawTexture(EnemyBTex,false,barpos.x,barpos.y,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + double ht = clamp(ct.intp.GetValue(fractic),0,10000); + double hw = (ht*50.)/100.; + double ohw = hw; + if ( ct.Owner.bINVULNERABLE || (ct.Owner.player.cheats&(CF_GODMODE|CF_GODMODE2)) || ct.Owner.FindInventory('InvinciballPower') ) + Screen.DrawTexture(EnemyHTex[1],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + else + { + Screen.DrawTexture(EnemyHTex[0],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + if ( ht > 100 ) + { + hw = (min(ht-100,100)*50.)/100.; + Screen.DrawTexture(EnemyHTex[3],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + } + if ( ht > 200 ) + { + hw = (min(ht-200,300)*50.)/100.; + Screen.DrawTexture(EnemyHTex[4],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + } + if ( ht > 500 ) + { + hw = (min(ht-500,500)*50.)/100.; + Screen.DrawTexture(EnemyHTex[5],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + } + } + if ( ct.Owner.FindInventory('DivineSpriteEffect') ) + { + double falph = clamp((ht-1000)/6000.,0.,1.); + Screen.DrawTexture(EnemyHTex[6],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph*falph,DTA_LegacyRenderStyle,STYLE_Add); + } + else + { + ht = clamp(ct.intpl.GetValue(fractic),0,100); + hw = min((ht*50.)/100.,100.); + Screen.DrawTexture(EnemyHTex[2],false,barpos.x+2,barpos.y+2,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowLeftF,ohw,DTA_WindowRightF,hw); + } + if ( ct.cummdamage <= 0 ) continue; + double calph = clamp(ct.cummspan-fractic,0.,20.)/20.; + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_RED],barpos.x+3,barpos.y+10,(ct.cummdamage>=Actor.TELEFRAG_DAMAGE)?"∞":String.Format("%d",ct.cummdamage),DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,calph*alph); + if ( ct.cummflash <= 0 ) continue; + double falph = max((ct.cummflash-FracTic)/15.,0.)**1.5; + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_REDFLASH],barpos.x+3,barpos.y+10,(ct.cummdamage>=Actor.TELEFRAG_DAMAGE)?"∞":String.Format("%d",ct.cummdamage),DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,falph*calph*alph,DTA_LegacyRenderStyle,STYLE_Add); + } + } + + private void DrawNumbers( Vector3 viewvec, bool &projinit ) + { + SWWMDamNum snum = hnd.damnums; + if ( !snum ) return; + do + { + // this ensures that projection data isn't cached if there are no target array elements, to avoid needless GC thrashing + if ( !projinit ) + { + projinit = true; + SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); + Screen.SetClipRect(projdata.viewx,projdata.viewy,projdata.vieww,projdata.viewh); + } + Vector3 tdir = level.Vec3Diff(ViewPos,snum.pos); + Vector3 ndc = SWWMUtility.ProjectPoint(projdata,ViewPos+tdir,true); + if ( ndc.z <= 0. ) continue; + Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc)/hs0; + String tag = abs(snum.damage>=Actor.TELEFRAG_DAMAGE)?(snum.damage>0)?"-∞":"+∞":String.Format("%+d",-snum.damage); + double alph = clamp((snum.lifespan+fractic)/35.,0.,1.); + Vector2 fo; + int initspd = (128-snum.seed); + int boostup = 64+snum.seed2; + fo.x = (.05*initspd)*((snum.initialspan-(snum.lifespan-fractic))**.8); + fo.y = -((snum.initialspan-(snum.lifespan-fractic))**1.5)+boostup*sin((90./snum.initialspan)*(level.maptime+fractic-snum.starttic)); + Screen.DrawText(MiniHUDFontOutline,snum.tcolor,(vpos.x-fo.x)-(MiniHUDFontOutline.StringWidth(tag))/2,(vpos.y-fo.y)-(MiniHUDFontOutline.GetHeight())/2,tag,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph); + } + while ( snum = snum.next ); + } + + private void DrawScores( Vector3 viewvec, bool &projinit ) + { + SWWMScoreObj snum = hnd.scorenums; + if ( !snum ) return; + do + { + // this ensures that projection data isn't cached if there are no target array elements, to avoid needless GC thrashing + if ( !projinit ) + { + projinit = true; + SWWMUtility.PrepareProjData(projdata,ViewPos,ViewRot.x,ViewRot.y,ViewRot.z,players[consoleplayer].fov); + Screen.SetClipRect(projdata.viewx,projdata.viewy,projdata.vieww,projdata.viewh); + } + Vector3 tdir = level.Vec3Diff(ViewPos,snum.pos); + Vector3 ndc = SWWMUtility.ProjectPoint(projdata,ViewPos+tdir); + if ( ndc.z <= 0. ) continue; + Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc)/hs1; + String tag = String.Format("%+d",snum.score); + double alph = clamp((snum.lifespan+fractic)/double(GameTicRate),0.,1.); + // score rises linearly + Vector2 fo = (0,snum.initialspan-(snum.lifespan-fractic)); + Screen.DrawText(mTinyFontOutlineAlt,snum.tcolor,vpos.x-(fo.x+mTinyFontOutlineAlt.StringWidth(tag)/2.),vpos.y-(fo.y+(mTinyFontOutlineAlt.GetHeight()/2.)),tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + // extra strings (if available) + fo.y += mTinyFontOutlineAlt.GetHeight(); + for ( int i=0; i 0 ) tag.AppendFormat(" x%d",snum.xscore[i]); + Screen.DrawText(mTinyFontOutlineAlt,snum.xtcolor[i],vpos.x-(fo.x+mTinyFontOutlineAlt.StringWidth(tag)/2.),vpos.y-(fo.y+(mTinyFontOutlineAlt.GetHeight()/2.)),tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + fo.y += mTinyFontOutlineAlt.GetHeight(); + } + } + while ( snum = snum.next ); + } + + private void DrawTarget() + { + // don't draw when dead or with automap open + if ( (CPlayer.health <= 0) || (automapactive && !viewactive) ) return; + bool projinit = false; + Vector3 viewvec = SWWMUtility.Vec3FromAngles(viewrot.x,viewrot.y); + // points of interest + if ( level.allmap && swwm_pois ) DrawInterest(viewvec,projinit); + // sensed items + DrawItemSense(viewvec,projinit); + // targetting array + if ( swwm_targeter ) DrawTrackers(viewvec,projinit); + // floating kill scores and others + if ( swwm_damnums ) DrawNumbers(viewvec,projinit); + if ( swwm_scorenums ) DrawScores(viewvec,projinit); + Screen.ClearClipRect(); + } +} diff --git a/zscript/hud/swwm_hud_topstuff.zsc b/zscript/hud/swwm_hud_topstuff.zsc new file mode 100644 index 000000000..960f99f30 --- /dev/null +++ b/zscript/hud/swwm_hud_topstuff.zsc @@ -0,0 +1,1105 @@ +// Minimap and stats +extend Class SWWMStatusBar +{ + // quicksort (player scores) + private int partition_playerscore( Array a, int l, int h ) + { + PlayerInfo pv = a[h]; + int i = (l-1); + for ( int j=l; j<=(h-1); j++ ) + { + if ( pv.fragcount < a[j].fragcount ) + { + i++; + PlayerInfo tmp = a[j]; + a[j] = a[i]; + a[i] = tmp; + } + } + PlayerInfo tmp = a[h]; + a[h] = a[i+1]; + a[i+1] = tmp; + return i+1; + } + private void qsort_playerscore( Array a, int l, int h ) + { + if ( l >= h ) return; + int p = partition_playerscore(a,l,h); + qsort_playerscore(a,l,p-1); + qsort_playerscore(a,p+1,h); + } + + private void TickTopStuffInterpolators() + { + // stats flashing + if ( level.killed_monsters > oldkills ) + { + oldkills = level.killed_monsters; + killflash = gametic+25; + } + if ( level.found_items > olditems ) + { + olditems = level.found_items; + itemflash = gametic+25; + } + if ( level.found_secrets > oldsecrets ) + { + oldsecrets = level.found_secrets; + secretflash = gametic+25; + } + if ( level.total_monsters > oldtkills ) + { + oldtkills = level.total_monsters; + tkillflash = gametic+25; + } + if ( level.total_items > oldtitems ) + { + oldtitems = level.total_items; + titemflash = gametic+25; + } + if ( level.total_secrets > oldtsecrets ) + { + oldtsecrets = level.total_secrets; + tsecretflash = gametic+25; + } + if ( level.total_monsters > 0 ) + { + int pkills = (level.killed_monsters*100)/level.total_monsters; + if ( pkills != oldpkills ) + pkillflash = gametic+25; + oldpkills = pkills; + } + if ( level.total_items > 0 ) + { + int pitems = (level.found_items*100)/level.total_items; + if ( pitems != oldpitems ) + pitemflash = gametic+25; + oldpitems = pitems; + } + if ( level.total_secrets > 0 ) + { + int psecrets = (level.found_secrets*100)/level.total_secrets; + if ( psecrets != oldpsecrets ) + psecretflash = gametic+25; + oldpsecrets = psecrets; + } + // purge expired key flashes + for ( int i=0; i= gametic ) continue; + keyflash.Delete(i--); + } + // minimap zoom interpolation + double desiredzoom = clamp(mm_zoom,.5,1.); + if ( (minimapzoom != mm_zoom) || (oldminimapzoom != mm_zoom) ) + { + oldminimapzoom = minimapzoom; + double diff = .1*(desiredzoom-minimapzoom); + minimapzoom += diff; + if ( abs(minimapzoom-desiredzoom) <= .01 ) + minimapzoom = desiredzoom; + } + } + + private void TickTopStuff() + { + // deathmatch stuff + if ( !deathmatch ) return; + if ( teamplay ) + { + if ( teamactive.Size() != Teams.Size() ) teamactive.Resize(Teams.Size()); + if ( teamscore.Size() != Teams.Size() ) teamscore.Resize(Teams.Size()); + for ( int i=0; i CPlayer.fragcount ) + rank += 1; + else if ( players[i].fragcount == CPlayer.fragcount ) + tiedscore = true; + if ( players[i].fragcount > highscore ) + highscore = players[i].fragcount; + } + if ( sortplayers.Size() != playercount ) sortplayers.Resize(playercount); + for ( int i=0, j=0; i= -1; p-- ) + { + if ( p == thisgroup ) continue; + foreach ( l : level.lines ) + { + if ( !(l.flags&Line.ML_MAPPED) && !level.allmap && !am_cheat ) continue; + if ( (l.flags&Line.ML_DONTDRAW) && ((am_cheat == 0) || (am_cheat >= 4)) ) + continue; + Vector2 rv1 = l.v1.p-cpos, rv2 = l.v2.p-cpos; + int lgroup; + if ( l.sidedef[0].flags&Side.WALLF_POLYOBJ ) lgroup = level.PointInSector(l.v1.p+l.delta/2.).portalgroup; + else lgroup = l.frontsector.portalgroup; + bool isportal = ((numgroups>0)&&(lgroup!=thisgroup)); + if ( lgroup == p ) + { + // portal displacement + Vector2 pofs = level.GetDisplacement(lgroup,thisgroup); + rv1 += pofs; + rv2 += pofs; + } + else if ( (p != -1) || (lgroup != thisgroup) ) + continue; + Vector2 mid = (rv1+rv2)/2.; + Vector2 siz = (abs(rv1.x-rv2.x),abs(rv1.y-rv2.y))/2.; + if ( (((siz.x+zoomview)-abs(mid.x)) <= 0) || (((siz.y+zoomview)-abs(mid.y)) <= 0) ) + continue; + // flip Y + rv1.y *= -1; + rv2.y *= -1; + // rotate by view + rv1 = Actor.RotateVector(rv1,ViewRot.x-90); + rv2 = Actor.RotateVector(rv2,ViewRot.x-90); + // clip to frame + bool visible; + [visible, rv1, rv2] = SWWMUtility.LiangBarsky((-1,-1)*zoomclip,(1,1)*zoomclip,rv1,rv2); + if ( !visible ) continue; + // scale to minimap frame + rv1 *= hsz/zoomclip; + rv2 *= hsz/zoomclip; + if ( !bUseCanvas ) + { + rv1 *= hs; + rv2 *= hs; + } + // offset to minimap center + rv1 += basepos; + rv2 += basepos; + // get the line color + Color col = mm_wallcolor; + if ( (l.flags&Line.ML_MAPPED) || am_cheat ) + { + int secwit = CheckSecret(l); + int lock = SWWMUtility.GetLineLock(l); + if ( (l.flags&Line.ML_SECRET) && (am_cheat || !level.allmap) ) // allmap will reveal these + { + if ( am_cheat && l.backsector ) + col = mm_secretwallcolor; + else col = (secwit==2)?mm_unexploredsecretcolor:(secwit==1)?mm_secretsectorcolor:mm_wallcolor; + } + else if ( CheckExitLine(l) ) + col = mm_interlevelcolor; + else if ( CheckTeleportLine(l) ) + col = mm_intralevelcolor; + else if ( (lock > 0) && (lock < 256) ) + { + let lcol = Key.GetMapColorForLock(lock); + if ( !lcol ) + { + // "all keys" locks lack a color + // so we cycle through the colors of all available keys + if ( gameinfo.gametype&GAME_Doom ) + { + Color cols[3] = {0xFFFF0000,0xFF0000FF,0xFFFFFF00}; + col = cols[int(((gametic+fractic)*3)/GameTicRate)%3]; + } + else if ( gameinfo.gametype&GAME_Heretic ) + { + Color cols[3] = {0xFFFFFF00,0xFF00FF00,0xFF0000FF}; + col = cols[int(((gametic+fractic)*3)/GameTicRate)%3]; + } + else if ( gameinfo.gametype&GAME_Hexen ) + { + Color cols[11] = {0xFF969696,0xFFFFDA00,0xFF4040FF,0xFFFF8000,0xFF00FF00,0xFF2F97FF,0xFF9A98BC,0xFF9C4C00,0xFFFFD900,0xFF40FF40,0xFFFF4040}; + col = cols[int(((gametic+fractic)*11)/GameTicRate)%11]; + } + else col = mm_lockedcolor; // fallback + } + else if ( lcol != -1 ) col = lcol; + else col = mm_lockedcolor; + } + else if ( CheckTriggerLine(l) ) col = mm_specialwallcolor; + else if ( secwit == 1 ) col = mm_secretsectorcolor; // locked doors and trigger lines take priority over secrets + else if ( secwit == 2 ) col = mm_unexploredsecretcolor; + else if ( l.frontsector && l.backsector ) + { + if ( !CmpFloorPlanes(l) ) col = mm_fdwallcolor; + else if ( !CmpCeilingPlanes(l) ) col = mm_cdwallcolor; + else if ( CheckFFBoundary(l) ) col = mm_efwallcolor; + else + { + if ( (am_cheat == 0) || (am_cheat >= 4) ) + continue; + col = mm_tswallcolor; + } + } + } + else col = mm_notseencolor; + // draw the line + if ( isportal ) + { + col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8); + if ( bUseCanvas ) mm_canvas.DrawLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),col); + else Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.25),col); + } + else + { + if ( bUseCanvas ) mm_canvas.DrawLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),col); + else Screen.DrawThickLine(int(rv1.x),int(rv1.y),int(rv2.x),int(rv2.y),max(1.,hs*.5),col); + } + } + } + } + private void DrawMapMarkers( Vector2 basepos, bool smol, bool bUseCanvas = false ) + { + double zoomlevel = SWWMUtility.Lerp(oldminimapzoom,minimapzoom,FracTic); + double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel; + int hsz = smol?HALFMAPSIZE_SMALL:HALFMAPSIZE; + Vector2 cpos = SWWMUtility.LerpVector2(players[consoleplayer].Camera.prev.xy,players[consoleplayer].Camera.pos.xy,FracTic); + Sector csec = players[consoleplayer].Camera.CurSector; + if ( !mi ) mi = ThinkerIterator.Create('MapMarker',Thinker.STAT_MAPMARKER); + else mi.Reinit(); + MapMarker m; + while ( m = MapMarker(mi.Next()) ) + { + if ( m.bDORMANT ) continue; + if ( m.args[1] && !(m.CurSector.moreflags&Sector.SECMF_DRAWN) ) continue; + TextureID tx; + if ( m.picnum.IsValid() ) tx = m.picnum; + else tx = m.CurState.GetSpriteTexture(1); + Vector2 sz = TexMan.GetScaledSize(tx); + Vector2 scl; + bool bCentered = (m is 'SWWMInterestMarker'); + // seems to match automap scaling somewhat + if ( m.Args[2] ) scl = (m.Scale/zoomlevel)*.15; + else scl = m.Scale*.5; + sz.x *= scl.x; + sz.y *= scl.y; + double radius = max(sz.x,sz.y); // naive, I know + if ( m.args[0] ) + { + // oh bother, this will be dicks + let ai = level.CreateActorIterator(m.args[0]); + foreach ( a:ai ) + { + Vector2 rv = a.pos.xy-cpos; + bool isportal = false; + Sector sec = level.PointInSector(a.pos.xy); + if ( sec.portalgroup != csec.portalgroup ) + { + isportal = true; + // portal displacement + rv += level.GetDisplacement(sec.portalgroup,csec.portalgroup); + } + if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) + continue; + // flip Y + rv.y *= -1; + // rotate by view + rv = Actor.RotateVector(rv,ViewRot.x-90); + // scale to minimap frame + rv *= hsz/zoomclip; + if ( !bUseCanvas ) rv *= hs; + // offset to minimap center + rv += basepos; + // draw + if ( bUseCanvas ) mm_canvas.DrawTexture(tx,false,rv.x,rv.y,DTA_ColorOverlay,isportal?Color(128,mm_portalcolor.r,mm_portalcolor.g,mm_portalcolor.b):Color(0,0,0,0),DTA_ScaleX,scl.x,DTA_ScaleY,scl.y,DTA_LegacyRenderStyle,m.GetRenderStyle(),DTA_Alpha,m.Alpha,DTA_FillColor,m.FillColor,DTA_TranslationIndex,m.Translation,DTA_CenterOffset,bCentered); + else Screen.DrawTexture(tx,false,rv.x,rv.y,DTA_ColorOverlay,isportal?Color(128,mm_portalcolor.r,mm_portalcolor.g,mm_portalcolor.b):Color(0,0,0,0),DTA_ScaleX,hs*scl.x,DTA_ScaleY,hs*scl.y,DTA_LegacyRenderStyle,m.GetRenderStyle(),DTA_Alpha,m.Alpha,DTA_FillColor,m.FillColor,DTA_TranslationIndex,m.Translation,DTA_CenterOffset,bCentered); + } + ai.Destroy(); + continue; + } + Vector2 rv = m.pos.xy-cpos; + bool isportal = false; + Sector sec = level.PointInSector(m.pos.xy); + if ( sec.portalgroup != csec.portalgroup ) + { + isportal = true; + // portal displacement + rv += level.GetDisplacement(sec.portalgroup,csec.portalgroup); + } + if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) + continue; + // flip Y + rv.y *= -1; + // rotate by view + rv = Actor.RotateVector(rv,ViewRot.x-90); + // scale to minimap frame + rv *= hsz/zoomclip; + if ( !bUseCanvas ) rv *= hs; + // offset to minimap center + rv += basepos; + // draw + if ( bUseCanvas ) mm_canvas.DrawTexture(tx,false,rv.x,rv.y,DTA_ColorOverlay,isportal?Color(128,mm_portalcolor.r,mm_portalcolor.g,mm_portalcolor.b):Color(0,0,0,0),DTA_ScaleX,scl.x,DTA_ScaleY,scl.y,DTA_LegacyRenderStyle,m.GetRenderStyle(),DTA_Alpha,m.Alpha,DTA_FillColor,m.FillColor,DTA_TranslationIndex,m.Translation,DTA_CenterOffset,bCentered); + else Screen.DrawTexture(tx,false,rv.x,rv.y,DTA_ColorOverlay,isportal?Color(128,mm_portalcolor.r,mm_portalcolor.g,mm_portalcolor.b):Color(0,0,0,0),DTA_ScaleX,hs*scl.x,DTA_ScaleY,hs*scl.y,DTA_LegacyRenderStyle,m.GetRenderStyle(),DTA_Alpha,m.Alpha,DTA_FillColor,m.FillColor,DTA_TranslationIndex,m.Translation,DTA_CenterOffset,bCentered); + } + } + private void DrawMapThings( Vector2 basepos, bool smol, bool bUseCanvas = false ) + { + double zoomlevel = SWWMUtility.Lerp(oldminimapzoom,minimapzoom,FracTic); + double zoomview = MAPVIEWDIST*zoomlevel, zoomclip = CLIPDIST*zoomlevel; + int hsz = smol?HALFMAPSIZE_SMALL:HALFMAPSIZE; + Vector2 cpos = SWWMUtility.LerpVector2(players[consoleplayer].Camera.prev.xy,players[consoleplayer].Camera.pos.xy,FracTic); + Sector csec = players[consoleplayer].Camera.CurSector; + bool drawmissiles = swwm_mm_missiles; + for ( SWWMSimpleTracker t=hnd.strackers; t; t=t.next ) + { + if ( !drawmissiles && t.ismissile ) continue; + if ( level.allmap && t.iskey ) continue; // don't draw keys over the actual markers they have + Color col = mm_thingcolor; + bool isitem = false; + bool plainactor = false; + Vector2 pos; + double angle; + double radius; + if ( t.target ) + { + pos = SWWMUtility.LerpVector2(t.target.prev.xy,t.target.pos.xy,FracTic); + angle = t.target.angle; + radius = t.isybeam?(t.target.speed*cos(t.target.pitch-90)):t.isbeam?(t.target.speed*cos(t.target.pitch)):t.target.radius; + } + else + { + pos = t.pos.xy; + angle = t.angle; + radius = t.radius; + } + if ( t.isitem ) + { + if ( t.iskey ) col = t.keycolor; + else if ( t.vipitem ) col = mm_thingcolor_vipitem; + else if ( t.countitem ) col = mm_thingcolor_citem; + else col = mm_thingcolor_item; + isitem = true; + } + else if ( t.isplayer ) col = t.playercol; + else if ( t.friendly ) col = mm_thingcolor_friend; + else if ( t.countkill ) col = mm_thingcolor_monster; + else if ( t.ismonster ) col = mm_thingcolor_ncmonster; + else if ( t.ismissile ) col = mm_thingcolor_missile; + else + { + if ( t.vipitem ) col = mm_thingcolor_vipitem; // chanceboxes + else if ( t.shootable ) col = mm_thingcolor_shootable; + plainactor = true; + } + int mtime = GameTicRate; + if ( level.allmap && !t.expired && t.target ) mtime += GameTicRate*3; + Vector2 rv = pos-cpos; + bool isportal = false; + Sector sec = level.PointInSector(pos); + if ( sec.portalgroup != csec.portalgroup ) + { + isportal = true; + // portal displacement + rv += level.GetDisplacement(sec.portalgroup,csec.portalgroup); + // and blend in the color too + col = Color((col.r+mm_portalcolor.r*7)/8,(col.g+mm_portalcolor.g*7)/8,(col.b+mm_portalcolor.b*7)/8); + } + if ( (((radius+zoomview)-abs(rv.x)) <= 0) || (((radius+zoomview)-abs(rv.y)) <= 0) ) + continue; + Vector2 tv[8]; + int nidx; + bool closeshape = true; + if ( t.isbeam ) + { + // oriented line + nidx = 2; + tv[0] = rv; + tv[1] = rv+Actor.RotateVector((radius,0),angle); + closeshape = false; + } + else if ( t.iskey ) + { + // key shape (a rhombus and an L, basically) + nidx = 8; + double crad = min(radius,10); + // head (pointing north) + for ( int i=0; i<5; i++ ) + tv[i] = rv+(0,crad*.5)-Actor.RotateVector((0,crad*.5),i*90); + // tail (pointing east) + tv[5] = rv; + tv[6] = rv+(0,-crad); + tv[7] = rv+(crad*.5,-crad); + closeshape = false; + } + else if ( isitem ) + { + // rhombus + nidx = 4; + double crad = min(radius,10); + for ( int i=0; i<4; i++ ) + tv[i] = rv+Actor.RotateVector((crad,0),i*90); + } + else if ( plainactor ) + { + // aabb box + nidx = 4; + tv[0] = rv+(-radius,-radius); + tv[1] = rv+(radius,-radius); + tv[2] = rv+(radius,radius); + tv[3] = rv+(-radius,radius); + } + else + { + // oriented triangle + nidx = 3; + tv[0] = rv+Actor.RotateVector((radius,0),angle); + tv[1] = rv+Actor.RotateVector((-radius*.5,radius*.7),angle); + tv[2] = rv+Actor.RotateVector((-radius*.5,-radius*.7),angle); + } + // flip Y + for ( int j=0; j 1) && mm_cvfirstdraw ) + { + // make sure we don't draw the whole thing if we're using the smaller scale + Screen.DrawTexture(mm_canvastex,false,xx+2,yy+2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcWidth,hsz*2,DTA_SrcHeight,hsz*2,DTA_DestWidth,hsz*2,DTA_DestHeight,hsz*2); + } + else Screen.Dim(mm_backcolor,1.,int((xx+2)*hs),int((yy+2)*hs),int(hsz*2*hs),int(hsz*2*hs)); + mm_cvfirstdraw = true; + return; + } + mm_cvfirstdraw = false; + Vector2 basemappos = (xx+hsz+2,yy+hsz+2); + Screen.Dim(mm_backcolor,1.,int((basemappos.x-hsz)*hs),int((basemappos.y-hsz)*hs),int(hsz*2*hs),int(hsz*2*hs)); + Screen.SetClipRect(int((basemappos.x-hsz)*hs),int((basemappos.y-hsz)*hs),int(hsz*2*hs),int(hsz*2*hs)); + // draw dat stuff + DrawMapLines(basemappos*hs,smol); + DrawMapThings(basemappos*hs,smol); + DrawMapMarkers(basemappos*hs,smol); + DrawTracedSteps(basemappos*hs,smol); + // finally, draw the player arrow + Vector2 tv[] = {(0,-4),(-3,2),(3,2)}; + for ( int i=0; i<3; i++ ) tv[i] = (tv[i]+basemappos)*hs; + for ( int i=0; i<3; i++ ) Screen.DrawThickLine(int(tv[i].x),int(tv[i].y),int(tv[(i+1)%3].x),int(tv[(i+1)%3].y),max(1.,hs*.5),mm_yourcolor); + Screen.ClearClipRect(); + } + + private void DrawTopStuff() + { + int xx = xmargin, yy = ymargin; + // obviously, don't draw the minimap if the automap is open + if ( !(automapactive && !viewactive) && swwm_mm_enable ) + { + bool smol = (min(ss.x,ss.y/.5625)<480); + int hsz = smol?HALFMAPSIZE_SMALL:HALFMAPSIZE; + xx = int(ss.x-(xmargin+(hsz+2)*2)); + Screen.DrawTexture(MiniBox[smol],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + DrawMinimap(xx,yy,smol); + yy += ((hsz+2)*2)+5; + } + // draw stats and timer when automap is open + int fstats = swwm_forcestats; + bool pstats = swwm_percentstats; + if ( (automapactive && !viewactive) || (fstats > 0) ) + { + xx = int(ss.x-(xmargin+2)); + String str; + if ( (automapactive && !viewactive) || (fstats > 1) ) + { + int label = am_showmaplabel; + String ln = level.levelname; + if ( ln.Left(1) == "$" ) ln = StringTable.Localize(ln); + // level name may contain trailing whitespace due to DEHACKED nonsense, so strip it + ln.StripRight(); + if ( level.authorname == "" ) // the author name might be part of the level name, try to strip it + { + int iof; + if ( ((iof = ln.RightIndexOf(" - by: ")) != -1) || ((iof = ln.RightIndexOf(" - by ")) != -1) || ((iof = ln.RightIndexOf(" - ")) != -1) ) + ln.Truncate(iof); + } + // split level name into separate lines if it's too long + // also, use a cache so we don't call BreakLines constantly + if ( ln_bl && (ln != cached_ln) ) ln_bl.Destroy(); + cached_ln = ln; + if ( !ln_bl ) ln_bl = mSmallFontOutlineAlt.BreakLines(ln,120); + if ( !label || ((level.clusterflags&level.CLUSTER_HUB) && (label == 2)) ) + { + Screen.DrawText(mSmallFontOutlineAlt,tcvalue,xx-ln_bl.StringWidth(0),yy,ln_bl.StringAt(0),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + for ( int i=1; i 0) && am_showmonsters && !deathmatch ) + { + int pct = (level.killed_monsters*100)/level.total_monsters; + if ( pstats ) str = String.Format("\c"..tclabel_s.."K \c-%3d\c"..tcextra_s.."%%\c-",pct); + else str = String.Format("\c"..tclabel_s.."K \c-%d\c"..tcextra_s.."/\c-%d",level.killed_monsters,level.total_monsters); + int basew = MiniHUDFontOutline.StringWidth(str); + if ( pstats ) + { + int dcnt = 2-int(Log10(clamp(pct,1,999))); + for ( int j=0; j=level.total_monsters)?tccompl:tcvalue,(xx-basew)+8+j*4,yy,0x30,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(160,0,0,0)); + } + Screen.DrawText(MiniHUDFontOutline,(level.killed_monsters>=level.total_monsters)?tccompl:tcvalue,xx-basew,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( pstats ) + { + if ( pkillflash && (gametic < pkillflash) ) + { + double alph = max((pkillflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%3d%%",pct); + int pctpos = str.IndexOf("%"); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str.Left(pctpos),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + } + else + { + if ( killflash && (gametic < killflash) ) + { + double alph = max((killflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%d/%d",level.killed_monsters,level.total_monsters); + int slashpos = str.IndexOf("/"); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str.Left(slashpos),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + if ( tkillflash && (gametic < tkillflash) ) + { + double alph = max((tkillflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%d",level.total_monsters); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + } + yy += MiniHUDFontOutline.GetHeight()+2; + } + if ( (level.total_items > 0) && am_showitems && !deathmatch ) + { + int pct = (level.found_items*100)/level.total_items; + if ( pstats ) str = String.Format("\c"..tclabel_s.."I \c-%3d\c"..tcextra_s.."%%\c-",pct); + else str = String.Format("\c"..tclabel_s.."I \c-%d\c"..tcextra_s.."/\c-%d",level.found_items,level.total_items); + int basew = MiniHUDFontOutline.StringWidth(str); + if ( pstats ) + { + int dcnt = 2-int(Log10(clamp(pct,1,999))); + for ( int j=0; j=level.total_items)?tccompl:tcvalue,(xx-basew)+8+j*4,yy,0x30,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(160,0,0,0)); + } + Screen.DrawText(MiniHUDFontOutline,(level.found_items>=level.total_items)?tccompl:tcvalue,xx-basew,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( pstats ) + { + if ( pitemflash && (gametic < pitemflash) ) + { + double alph = max((pitemflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%3d%%",pct); + int pctpos = str.IndexOf("%"); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str.Left(pctpos),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + } + else + { + if ( itemflash && (gametic < itemflash) ) + { + double alph = max((itemflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%d/%d",level.found_items,level.total_items); + int slashpos = str.IndexOf("/"); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str.Left(slashpos),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + if ( titemflash && (gametic < titemflash) ) + { + double alph = max((titemflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%d",level.total_items); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + } + yy += MiniHUDFontOutline.GetHeight()+2; + } + if ( (level.total_secrets > 0) && am_showsecrets && !deathmatch ) + { + int pct = (level.found_secrets*100)/level.total_secrets; + if ( pstats ) str = String.Format("\c"..tclabel_s.."S \c-%3d\c"..tcextra_s.."%%\c-",pct); + else str = String.Format("\c"..tclabel_s.."S \c-%d\c"..tcextra_s.."/\c-%d",level.found_secrets,level.total_secrets); + int basew = MiniHUDFontOutline.StringWidth(str); + if ( pstats ) + { + int dcnt = 2-int(Log10(clamp(pct,1,999))); + for ( int j=0; j=level.total_secrets)?tccompl:tcvalue,(xx-basew)+8+j*4,yy,0x30,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(160,0,0,0)); + } + Screen.DrawText(MiniHUDFontOutline,(level.found_secrets>=level.total_secrets)?tccompl:tcvalue,xx-basew,yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( pstats ) + { + if ( psecretflash && (gametic < psecretflash) ) + { + double alph = max((psecretflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%3d%%",pct); + int pctpos = str.IndexOf("%"); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str.Left(pctpos),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + } + else + { + if ( secretflash && (gametic < secretflash) ) + { + double alph = max((secretflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%d/%d",level.found_secrets,level.total_secrets); + int slashpos = str.IndexOf("/"); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str.Left(slashpos),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + if ( tsecretflash && (gametic < tsecretflash) ) + { + double alph = max((tsecretflash-(gametic+FracTic))/25.,0.)**1.5; + str = String.Format("%d",level.total_secrets); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx-MiniHUDFontOutline.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + } + } + yy += MiniHUDFontOutline.GetHeight()+2; + } + int sec; + if ( am_showtime ) + { + sec = Thinker.Tics2Seconds(level.maptime); + str = String.Format("\c"..tclabel_s.."T \c-%02d\c"..tcextra_s..":\c-%02d\c"..tcextra_s..":\c-%02d",sec/3600,(sec%3600)/60,sec%60); + Screen.DrawText(MiniHUDFontOutline,((level.sucktime>0)&&(sec>=(level.sucktime*3600)))?tcsucks:((level.partime>0)&&(sec<=level.partime))?tccompl:tcvalue,xx-MiniHUDFontOutline.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += MiniHUDFontOutline.GetHeight()+2; + } + // don't show total time if it's equal to map time + if ( am_showtotaltime && (level.totaltime != level.maptime) ) + { + sec = Thinker.Tics2Seconds(level.totaltime); + str = String.Format("\c"..tclabel_s.."TT \c-%02d\c"..tcextra_s..":\c-%02d\c"..tcextra_s..":\c-%02d",sec/3600,(sec%3600)/60,sec%60); + Screen.DrawText(MiniHUDFontOutline,tcvalue,xx-MiniHUDFontOutline.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += MiniHUDFontOutline.GetHeight()+2; + } + yy += 3; + } + if ( deathmatch ) + { + yy += 9; + if ( playercount <= 1 ) return; + xx = int(ss.x-(xmargin+2)); + String str; + if ( teamplay ) + { + // draw team scores + for ( int i=0; i 0 ) str = String.Format("\c[MiniDemoBlue]%s \c-+%d",StringTable.Localize("$SWWM_DMSPREAD"),lead); + else str = String.Format("\c[MiniDemoBlue]%s \c-%d",StringTable.Localize("$SWWM_DMSPREAD"),lead); + Screen.DrawText(mSmallFontOutline,mhudfontcol[MCR_RED],xx-mSmallFontOutline.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += mSmallFont.GetHeight()+3; + // draw top 3 players + for ( int i=0; i klist; + for ( int i=0; i= f.flashtime) ) continue; + double alph = max((f.flashtime-(gametic+FracTic))/25.,0.)**1.5; + Screen.DrawTexture(icon,false,keypos.x-siz.x,keypos.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_TopLeft,true,DTA_ColorOverlay,0xFFFFC040,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alph); + break; + } + keypos.x -= siz.x+2; + colh = max(colh,siz.y); + if ( ++colc == maxcolc ) + { + keypos.x = ss.x-(xmargin+2); + keypos.y += colh+2; + colh = colc = 0; + } + } + } + + override void DrawAutomapHUD( double ticFrac ) + { + // do nothing, DrawTopStuff handles this + } +} diff --git a/zscript/hud/swwm_hud_weapons.zsc b/zscript/hud/swwm_hud_weapons.zsc new file mode 100644 index 000000000..49f9760ff --- /dev/null +++ b/zscript/hud/swwm_hud_weapons.zsc @@ -0,0 +1,353 @@ +// Weapons and ammo +extend Class SWWMStatusBar +{ + private void FlushWeapons() + { + ScoreInter.Reset(SWWMCredits.Get(CPlayer)); + } + + private void TickWeaponInterpolators() + { + // don't update while cumulative scores are racking up + if ( ((cummspanup < 20) && (cummspandn < 20)) || (CPlayer != players[consoleplayer]) ) + ScoreInter.Update(SWWMCredits.Get(CPlayer)); + // ammo updates + for ( int i=0; i<18; i++ ) + { + if ( !AmmoSlots[i] ) continue; + let a = SWWMAmmo(CPlayer.mo.FindInventory(AmmoSlots[i])); + int amt = 0; + int maxamt = 0; + if ( a ) + { + amt = a.Amount; + maxamt = a.MaxAmount; + if ( a.MagAmmoType ) + { + let m = MagAmmo(CPlayer.mo.FindInventory(a.MagAmmoType)); + if ( m ) + { + amt *= m.ClipSize; + amt += m.Amount; + maxamt *= m.ClipSize; + } + } + } + else + { + let a = GetDefaultByType(AmmoSlots[i]); + maxamt = a.MaxAmount; + if ( a.MagAmmoType ) + { + let m = GetDefaultByType(a.MagAmmoType); + maxamt *= m.ClipSize; + } + } + if ( (amt > AmmoOldAmounts[i]) && (AmmoOldAmounts[i] != int.min) ) + AmmoFlash[i] = gametic+25; + AmmoOldAmounts[i] = amt; + if ( (maxamt > AmmoOldMaxAmounts[i]) && (AmmoOldMaxAmounts[i] != int.min) ) + AmmoMaxFlash[i] = gametic+25; + AmmoOldMaxAmounts[i] = maxamt; + } + } + + private void TickWeapons() + { + // let weapons update their own interpolators + for ( Inventory i=CPlayer.mo.inv; i; i=i.inv ) + { + if ( !(i is 'SWWMWeapon') ) continue; + SWWMWeapon(i).HudTick(); + } + // score accumulator + if ( cummflashup > 0 ) cummflashup--; + if ( cummflashdn > 0 ) cummflashdn--; + if ( cummspanup > 0 ) + { + cummspanup--; + if ( cummspanup <= 0 ) cummscoreup = 0; + } + if ( cummspandn > 0 ) + { + cummspandn--; + if ( cummspandn <= 0 ) cummscoredn = 0; + } + } + + // hello??? why is this function clearscope??? + override void ReceivedWeapon( Weapon weapn ) + { + Super.ReceivedWeapon(weapn); + let [dummy, slot] = players[consoleplayer].weapons.LocateWeapon(weapn.GetClass()); + EventHandler.SendNetworkEvent("swwmweaponreceive",slot,consoleplayer); + } + + private void DrawWeapons() + { + Screen.DrawTexture(WeaponTex,false,ss.x-(xmargin+80),ss.y-(ymargin+10),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + double xx = ss.x-(xmargin+78), yy = ss.y-(ymargin+8); + for ( int i=1; i<=10; i++,xx+=8 ) + { + int ncolor = mhudfontcol[MCR_WHITE]; + if ( !CPlayer.HasWeaponsInSlot(i%10) ) + { + Screen.DrawText(MiniHUDFont,ncolor,xx,yy,String.Format("%d",(i%10)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(128,0,0,0)); + continue; + } + bool selected = false; + bool dummy; + int slot; + SWWMGesture hasgesture = null; + SWWMItemGesture hasitemgesture = null; + if ( CPlayer.PendingWeapon is 'SWWMGesture' ) hasgesture = SWWMGesture(CPlayer.PendingWeapon); + else if ( CPlayer.ReadyWeapon is 'SWWMGesture' ) hasgesture = SWWMGesture(CPlayer.ReadyWeapon); + if ( CPlayer.PendingWeapon is 'SWWMItemGesture' ) hasitemgesture = SWWMItemGesture(CPlayer.PendingWeapon); + else if ( CPlayer.ReadyWeapon is 'SWWMItemGesture' ) hasitemgesture = SWWMItemGesture(CPlayer.ReadyWeapon); + if ( hasgesture && hasgesture.formerweapon ) + { + [dummy, slot] = CPlayer.weapons.LocateWeapon(hasgesture.formerweapon.GetClass()); + if ( slot == (i%10) ) selected = true; + } + else if ( hasitemgesture && hasitemgesture.gest.formerweapon ) + { + [dummy, slot] = CPlayer.weapons.LocateWeapon(hasitemgesture.gest.formerweapon.GetClass()); + if ( slot == (i%10) ) selected = true; + } + else if ( CPlayer.PendingWeapon && (CPlayer.PendingWeapon != WP_NOCHANGE) ) + { + [dummy, slot] = CPlayer.weapons.LocateWeapon(CPlayer.PendingWeapon.GetClass()); + if ( slot == (i%10) ) selected = true; + } + else if ( (!CPlayer.PendingWeapon || (CPlayer.PendingWeapon == WP_NOCHANGE)) && CPlayer.ReadyWeapon ) + { + [dummy, slot] = CPlayer.weapons.LocateWeapon(CPlayer.ReadyWeapon.GetClass()); + if ( slot == (i%10) ) selected = true; + } + if ( selected ) ncolor = mhudfontcol[MCR_BRASS]; + else + { + bool hasammo = (i==1); + for ( Inventory inv=CPlayer.mo.Inv; inv; inv=inv.Inv ) + { + if ( inv is 'Weapon' ) [dummy, slot] = CPlayer.weapons.LocateWeapon(Weapon(inv).GetClass()); + else continue; + if ( slot != (i%10) ) continue; + // CheckAmmo can't be called from ui, so we have to improvise + // for SWWM weapons I made a function for this at least + if ( (inv is 'SWWMWeapon') && SWWMWeapon(inv).ReportHUDAmmo() ) + hasammo = true; + else if ( !(inv is 'SWWMWeapon') && ((!Weapon(inv).Ammo1 || (Weapon(inv).Ammo1.Amount > 0) || Weapon(inv).bAMMO_OPTIONAL) || (Weapon(inv).Ammo2 && ((Weapon(inv).Ammo2.Amount > 0) || Weapon(inv).bALT_AMMO_OPTIONAL))) ) + hasammo = true; + } + if ( !hasammo ) ncolor = mhudfontcol[MCR_RED]; + } + Screen.DrawText(MiniHUDFont,ncolor,xx,yy,String.Format("%d",(i%10)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + int f = hnd.WeaponFlash[i%10]; + if ( f && (gametic < f) ) + { + double alph = max((f-(gametic+FracTic))/25.,0.)**1.5; + Screen.DrawText(MiniHUDFont,mhudfontcol[MCR_FLASH],xx,yy,String.Format("%d",(i%10)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_LegacyRenderStyle,STYLE_Add); + } + } + xx = ss.x-(xmargin+54); + yy = ss.y-(ymargin+14); + bool bDrewAmmo = false; + bool checkowned = !swwm_hudallammo; + Array OwnedWeapons; + if ( checkowned ) for ( Inventory i=CPlayer.mo.inv; i; i=i.inv ) + { + if ( !(i is 'SWWMWeapon') ) continue; + OwnedWeapons.Push(SWWMWeapon(i)); + } + String str; + for ( int i=17; i>=0; i-- ) + { + let a = AmmoSlots[i]; + if ( !a ) continue; + // check if owned + if ( checkowned ) + { + bool owned = false; + foreach ( w:OwnedWeapons ) + { + if ( w.UsesAmmo(a) ) + owned = true; + } + if ( !owned ) continue; + } + if ( !bDrewAmmo ) + { + Screen.DrawTexture(AmmoTex[2],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + bDrewAmmo = true; + } + yy -= 6; + Screen.DrawTexture(AmmoTex[1],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + xx += 2; + let cur = SWWMAmmo(CPlayer.mo.FindInventory(a)); + int amt, amax; + if ( !cur ) + { + amt = 0; + amax = GetDefaultByType(a).MaxAmount; + let def = GetDefaultByType(a); + if ( def.MagAmmoType ) + { + let mag = MagAmmo(CPlayer.mo.FindInventory(def.MagAmmoType)); + if ( mag ) // theoretically can't happen, but still check for it + { + amt = mag.Amount; + amax = amax*mag.ClipSize+mag.MaxAmount; + } + else + { + let defmag = GetDefaultByType(def.MagAmmoType); + amax = amax*defmag.ClipSize+defmag.MaxAmount; + } + } + } + else + { + amt = cur.Amount; + amax = cur.MaxAmount; + if ( cur.MagAmmoType ) + { + let mag = MagAmmo(CPlayer.mo.FindInventory(cur.MagAmmoType)); + // theoretically this should never be null, but nevertheless... + if ( mag ) + { + amt = amt*mag.ClipSize+mag.Amount; + amax = amax*mag.ClipSize+mag.MaxAmount; + } + else + { + let def = GetDefaultByType(cur.MagAmmoType); + amt = amt*def.ClipSize; + amax = amax*def.ClipSize+def.MaxAmount; + } + } + } + bool used = false; + if ( CPlayer.ReadyWeapon && (CPlayer.ReadyWeapon is 'SWWMWeapon') ) + used = SWWMWeapon(CPlayer.ReadyWeapon).UsesAmmo(a); + int scol = mhudfontcol[used?MCR_BRASS:MCR_WHITE]; + int ncolor = (amt>0)?scol:mhudfontcol[MCR_RED]; + int dcnt1 = 2-int(Log10(clamp(amt,1,999))); + int dcnt2 = 2-int(Log10(clamp(amax,1,999))); + for ( int j=0; j 0 ) + { + double falph = max((cummflashup-FracTic)/15.,0.)**1.5; + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_FLASH],xx,yy,sstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph*calph,DTA_LegacyRenderStyle,STYLE_Add); + } + // smooth fade offset for next line + yy += (1.-calph)*8; + } + if ( cummscoredn && (CPlayer == players[consoleplayer]) ) + { + yy -= 8; + double calph = clamp(cummspandn-fractic,0.,20.)/20.; + sstr = String.Format("%+10d",-min(cummscoredn,999999999)); + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_RED],xx,yy,sstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,calph); + if ( cummflashdn > 0 ) + { + double falph = max((cummflashdn-FracTic)/15.,0.)**1.5; + Screen.DrawText(MiniHUDFontOutline,mhudfontcol[MCR_REDFLASH],xx,yy,sstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,falph*calph,DTA_LegacyRenderStyle,STYLE_Add); + } + } + int bx = bDrewAmmo?56:50; + // ammo display + if ( CPlayer.ReadyWeapon is 'SWWMWeapon' ) SWWMWeapon(CPlayer.ReadyWeapon).DrawWeapon(FracTic,ss.x-(xmargin+bx),ss.y-(ymargin+12),hs,ss); + else if ( CPlayer.ReadyWeapon ) + { + // generic display + double xx = ss.x-(xmargin+bx+2), yy = ss.y-(ymargin+22); + String str; + int dlen, dcnt; + if ( CPlayer.ReadyWeapon.Ammo2 && (CPlayer.ReadyWeapon.Ammo2 != CPlayer.ReadyWeapon.Ammo1) ) + { + dlen = 1+int(Log10(max(1,CPlayer.ReadyWeapon.Ammo2.MaxAmount))); + str = String.Format("%*d",dlen,CPlayer.ReadyWeapon.Ammo2.Amount); + yy -= 12; + Screen.DrawTexture(GenericAmmoTex[2],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + for ( int i=0; i= 0) && (initspd < 32) ) initspd = 32; if ( (initspd < 0) && (initspd > -32) ) initspd = -32; int boostup = 32+(seed2/4); - double fractic = SWWMStatusBar(statusbar)?SWWMStatusBar(statusbar).fractic:0; + double fractic = System.GetTimeFrac(); fo.x += (.15*initspd)*((initialspan-(lifespan-fractic))**.6); fo.y += ((initialspan-(lifespan-fractic))**1.6)-boostup*sin((90./initialspan)*(level.maptime+fractic-starttic)); double alph = clamp((lifespan+fractic)/double(initialspan),0.,1.); - Screen.DrawText(smallfont,Font.CR_GREEN,realpos.x-fo.x,realpos.y-fo.y,"F",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(mSmallFont,Font.CR_GREEN,realpos.x-fo.x,realpos.y-fo.y,"F",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); } } @@ -58,13 +60,15 @@ Class SWWMOneLiner : HUDMessageBase String whichline; transient BrokenLines l; int lifespan, curtime; + Font mSmallFont; static SWWMOneLiner Make( String whichline, int lifespan ) { - let l = new("SWWMOneLiner"); + let l = new('SWWMOneLiner'); if ( StringTable.Localize(whichline) == "" ) l.whichline = ""; else l.whichline = StringTable.Localize("$SWWM_LQUOTE")..StringTable.Localize(whichline)..StringTable.Localize("$SWWM_RQUOTE"); l.curtime = l.lifespan = lifespan; + l.mSmallFont = Font.GetFont('TewiFont'); return l; } @@ -82,32 +86,43 @@ Class SWWMOneLiner : HUDMessageBase override void Draw( int bottom, int visibility ) { - int margin = swwm_hudmargin; + int ymargin; double hs; - if ( swwm_hudscale ) hs = CleanXFac_1; - else hs = max(floor(Screen.GetWidth()/640.),1.); - Vector2 ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + Vector2 ss; + if ( SWWMStatusBar(StatusBar) ) + { + ymargin = SWWMStatusBar(StatusBar).ymargin0; + hs = SWWMStatusBar(StatusBar).hs0; + ss = SWWMStatusBar(StatusBar).ss0; + } + else + { + ymargin = clamp(swwm_hudmargin,0,10); + hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + } + ymargin += 10; if ( whichline == "" ) return; // don't draw empty strings // split so it can fit - if ( !l ) l = smallfont.BreakLines(whichline,int(ss.x*.5)); + if ( !l ) l = mSmallFont.BreakLines(whichline,int(min(ss.x,ss.y/.5625)*.5)); int maxlen = 0; for ( int i=0; i maxlen ) maxlen = len; } - int h = smallfont.GetHeight(); + int h = mSmallFont.GetHeight(); int fh = h*l.Count(); - double fractic = SWWMStatusBar(statusbar)?SWWMStatusBar(statusbar).fractic:0; + double fractic = System.GetTimeFrac(); double fcurtime = curtime-fractic; double alph = clamp((fcurtime/20.)+1.,0.,1.); alph *= clamp((lifespan-fcurtime)/10.,0.,1.); - Screen.Dim("Black",alph*.8,int((Screen.GetWidth()-(maxlen+12)*hs)/2.),int(bottom-(margin+2+fh)*hs),int((maxlen+12)*hs),int((fh+4)*hs)); - int yy = margin+fh; + Screen.Dim(0xFF000000,alph*.8,int((Screen.GetWidth()-(maxlen+12)*hs)/2.),int(bottom-(ymargin+2+fh)*hs),int((maxlen+12)*hs),int((fh+4)*hs)); + int yy = ymargin+fh; for ( int i=0; i1) ) + { + wpna = swa.SisterWeapon.GetTag(); + icoa = GetIcon(swa.SisterWeapon); + duala = true; + } + else + { + wpna = swa.GetTag(); + icoa = GetIcon(swa); + duala = false; + } + wb = toweapon; + // are we swapping to a dual weapon? + if ( wb is 'SWWMDualWeaponGiver' ) + { + swb = SWWMDualWeaponGiver(wb).giveme[0]; + wpnb = wb.GetTag(); + icob = GetIcon(swb); + dualb = true; + } + else if ( wb is 'SWWMWeapon' ) + { + swb = SWWMWeapon(wb); + wpnb = swb.GetTag(); + icob = GetIcon(swb); + dualb = false; + } + else ThrowAbortException("swap to (%s) is not SWWMWeapon or SWWMDualWeaponGiver",wb?wb.GetClassName():'Null'); + txt = String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),wpna,wpnb); + if ( l ) l.Destroy(); + } + + private TextureID GetIcon( Weapon w ) + { + let [ico, applyScale] = StatusBar.GetInventoryIcon(w,StatusBar.DI_SKIPALTICON|StatusBar.DI_SKIPREADY); + return ico; + } + + SWWMWeaponSwapTip Init( Inventory fromweapon, Inventory toweapon ) + { + UpdateMe(fromweapon,toweapon); + holdtics = 50; + fadeintics = 5; + fadeouttics = 15; + tics = 0; + mSmallFont = Font.GetFont('TewiFont'); return self; } + // used by weapons when an existing tip is already there + void Poke( Inventory fromweapon, Inventory toweapon ) + { + // update icons and text if different weapons + if ( (fromweapon != wa) || (toweapon != wb) ) + UpdateMe(fromweapon,toweapon); + // invert the fade out into a fade-in + // otherwise just wind the tics back to right after fade-in + if ( tics > (fadeintics+holdtics) ) + tics = fadeintics-(tics-(fadeintics+holdtics))/(fadeouttics/fadeintics); + else if ( tics > fadeintics ) + tics = fadeintics; + } + + // used by weapons when the swap has already happened + void Expire( Inventory fromweapon, Inventory toweapon ) + { + // just forces a fade out + if ( (fromweapon == wa) && (toweapon == wb) ) + tics = max(tics,fadeintics+holdtics); + } + override bool Tick() { - if ( tics == 100 ) S_StartSound("misc/sewercount",CHAN_VOICE,CHANF_UI,1.,0.); - return (tics--<=0); + tics++; + return (tics > holdtics+fadeintics+fadeouttics); } override void Draw( int bottom, int visibility ) { - if ( tics > 100 ) return; - double fractic = SWWMStatusBar(statusbar)?SWWMStatusBar(statusbar).fractic:0; - double ftics = tics-fractic; - double alph = clamp(ftics/20.,0.,1.); - double x = (Screen.GetWidth()-(newsmallfont.StringWidth(str)*CleanXFac*2))/2; - double y = int(Screen.GetHeight()*.75)-(newsmallfont.GetHeight()*CleanYFac*2)/2; - Screen.DrawText(newsmallfont,Font.CR_GREEN,x,y,str,DTA_ScaleX,CleanXFac*2,DTA_ScaleY,CleanYFac*2,DTA_Alpha,alph); + if ( tics <= 0 ) return; + double ymargin; + double hs; + Vector2 ss; + if ( SWWMStatusBar(StatusBar) ) + { + ymargin = SWWMStatusBar(StatusBar).ymargin0; + hs = SWWMStatusBar(StatusBar).hs0; + ss = SWWMStatusBar(StatusBar).ss0; + } + else + { + ymargin = clamp(swwm_hudmargin,0,10); + hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + } + double fractic = System.GetTimeFrac(); + double ftics = tics+fractic; + double alpha = (ftics txtw ) txtw = lw; + } + int icow = 16; + int icoh = mSmallFont.GetHeight()*2; + if ( icoa.IsValid() ) + { + Vector2 sz = TexMan.GetScaledSize(icoa)*.125; + icow += int(sz.x)+(duala?12:4); + icoh = int(sz.y)+(duala?12:4); + } + else icow += mSmallFont.StringWidth(wpna); + if ( icob.IsValid() ) + { + Vector2 sz = TexMan.GetScaledSize(icob)*.125; + icow += int(sz.x)+(dualb?12:4); + icoh = max(icoh,int(sz.y)+(dualb?12:4)); + } + else + { + icow += mSmallFont.StringWidth(wpnb); + icoh = max(icoh,mSmallFont.GetHeight()); + } + int w = max(txtw,icow); + int h = icoh+4+mSmallFont.GetHeight()*l.Count(); + Vector2 pos = (int(ss.x/2),ss.y-(ymargin+80+h)); + Screen.Dim(0xFF000000,.5*alpha,int((pos.x-(w+4)/2)*hs),int((pos.y-2)*hs),int((w+4)*hs),int((h+4)*hs)); + // Left Icon + double x = pos.x-(icow/2); + if ( icoa.IsValid() ) + { + Vector2 sz = TexMan.GetScaledSize(icoa)*.125; + if ( duala ) + { + x += sz.x/2+6; + Screen.DrawTexture(icoa,false,(x-4)*hs,((pos.y+icoh/2)-4)*hs,DTA_ScaleX,.125*hs,DTA_ScaleY,.125*hs,DTA_Alpha,alpha,DTA_CenterOffset,true); + Screen.DrawTexture(icoa,false,(x+4)*hs,((pos.y+icoh/2)+4)*hs,DTA_ScaleX,.125*hs,DTA_ScaleY,.125*hs,DTA_Alpha,alpha,DTA_CenterOffset,true); + x += sz.x/2+6; + } + else + { + x += sz.x/2+2; + Screen.DrawTexture(icoa,false,x*hs,(pos.y+icoh/2)*hs,DTA_ScaleX,.125*hs,DTA_ScaleY,.125*hs,DTA_Alpha,alpha,DTA_CenterOffset,true); + x += sz.x/2+2; + } + } + // Swap Arrow + String arr = "→"; + Screen.DrawText(mSmallFont,Font.CR_GREEN,x+(16-mSmallFont.StringWidth(arr))/2,pos.y+(icoh/2-mSmallFont.GetHeight()),arr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); + arr = "←"; + Screen.DrawText(mSmallFont,Font.CR_GREEN,x+(16-mSmallFont.StringWidth(arr))/2,pos.y+(icoh/2),arr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); + x += 16; + // Right Icon + if ( icob.IsValid() ) + { + Vector2 sz = TexMan.GetScaledSize(icob)*.125; + if ( dualb ) + { + x += sz.x/2+6; + Screen.DrawTexture(icob,false,(x-4)*hs,((pos.y+icoh/2)-4)*hs,DTA_ScaleX,.125*hs,DTA_ScaleY,.125*hs,DTA_Alpha,alpha,DTA_CenterOffset,true); + Screen.DrawTexture(icob,false,(x+4)*hs,((pos.y+icoh/2)+4)*hs,DTA_ScaleX,.125*hs,DTA_ScaleY,.125*hs,DTA_Alpha,alpha,DTA_CenterOffset,true); + } + else + { + x += sz.x/2+2; + Screen.DrawTexture(icob,false,x*hs,(pos.y+icoh/2)*hs,DTA_ScaleX,.125*hs,DTA_ScaleY,.125*hs,DTA_Alpha,alpha,DTA_CenterOffset,true); + } + } + // Swap Message + for ( int i=0; i weapon ) { @@ -252,6 +439,8 @@ Class SWWMWeaponTooltip : HUDMessageBase fadeintics = 5; fadeouttics = 15; tics = -10; + mSmallFont = Font.GetFont('TewiFont'); + mTinyFont = Font.GetFont('MiniwiFont'); return self; } @@ -265,34 +454,45 @@ Class SWWMWeaponTooltip : HUDMessageBase override void Draw( int bottom, int visibility ) { if ( tics <= 0 ) return; + double ymargin; double hs; - if ( swwm_hudscale ) hs = CleanXFac_1; - else hs = max(floor(Screen.GetWidth()/640.),1.); - Vector2 ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); - double fractic = SWWMStatusBar(statusbar)?SWWMStatusBar(statusbar).fractic:0; + Vector2 ss; + if ( SWWMStatusBar(StatusBar) ) + { + ymargin = SWWMStatusBar(StatusBar).ymargin0; + hs = SWWMStatusBar(StatusBar).hs0; + ss = SWWMStatusBar(StatusBar).ss0; + } + else + { + ymargin = clamp(swwm_hudmargin,0,10); + hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + } + double fractic = System.GetTimeFrac(); double ftics = tics+fractic; double alpha = (ftics w ) w = lw; } int cw = int(ceil((max(w1,w)+8)/6.))*6; - int h = smallfont.GetHeight()+8+smallfont2.GetHeight()*l.Count(); - Vector2 pos = (int(ss.x/2),ss.y-(swwm_hudmargin+80+h)); - Screen.Dim("Black",.5*alpha,int((pos.x-(cw+4)/2)*hs),int((pos.y-2)*hs),int((cw+4)*hs),int((h+4)*hs)); - Screen.DrawText(smallfont,Font.CR_FIRE,pos.x-w1/2,pos.y,wpn,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); + int h = mSmallFont.GetHeight()+8+mTinyFont.GetHeight()*l.Count(); + Vector2 pos = (int(ss.x/2),ss.y-(ymargin+80+h)); + Screen.Dim(0xFF000000,.5*alpha,int((pos.x-(cw+4)/2)*hs),int((pos.y-2)*hs),int((cw+4)*hs),int((h+4)*hs)); + Screen.DrawText(mSmallFont,Font.CR_FIRE,pos.x-w1/2,pos.y,wpn,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alpha); for ( int i=0; i seqcnt) ) return; - EventHandler.SendNetworkEvent("swwmstoremessage."..chrname..": "..txt,level.totaltime,PRINT_CHAT,consoleplayer); + // replace "normal" color reset escapes with chat color escapes + txt.Replace("\c-","\c*"); + // some messages may have newlines in them, split them + Array storemsg; + txt.Split(storemsg,"\n"); + foreach ( msg:storemsg ) Console.PrintfEx(PRINT_CHAT|PRINT_NONOTIFY,chrname.."\c*: "..msg.."\c*"); } private void DrawText() @@ -369,7 +576,7 @@ Class SWWMDirectMessage : HUDMessageBase { if ( cur <= 0 ) break; String part = l.StringAt(i).Left(cur); - Screen.DrawText(smallfont,Font.CR_WHITE,pos.x,pos.y,part,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(mSmallFont,Font.CR_WHITE,pos.x,pos.y,part,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); pos.y += 13; cur -= l.StringAt(i).Length(); } @@ -429,7 +636,7 @@ Class SWWMDirectMessage : HUDMessageBase { seqnum++; charcnt = 0; - if ( (seqnum > seqcnt) && !nextdirect ) S_StartSound("misc/chat",CHAN_VOICE,CHANF_UI,1.,0.); + if ( (seqnum > seqcnt) && !nextdirect ) S_StartSound("menu/demochat",CHAN_VOICE,CHANF_UI,1.,0.); else SetText(); return; } @@ -449,7 +656,7 @@ Class SWWMDirectMessage : HUDMessageBase talktics = 5; } // delay relative to stuff - delay = 1; + delay = chardelay; int idx = punctuation.IndexOf(ch); if ( idx >= 0 ) delay += (idx*2)+1; charcnt++; @@ -462,13 +669,24 @@ Class SWWMDirectMessage : HUDMessageBase override bool Tick() { + // reset when loading from a save, to avoid some wacky nonsense + if ( !bDontResetMe ) + { + bDontResetMe = true; + seqnum = -1; + delay = 10; + fadein = fadeout = 0; + } if ( seqnum < 0 ) { + // if there's a map message active, wait until it isn't + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( hnd.mapmsg ) return false; delay--; if ( delay <= 0 ) { Console.Printf(StringTable.Localize("$SWWM_INCOMINGMSG"),chrfullname); - S_StartSound("misc/chat",CHAN_VOICE,CHANF_UI,1.,0.); + S_StartSound("menu/demochat",CHAN_VOICE,CHANF_UI,1.,0.); seqnum++; } return false; @@ -476,12 +694,12 @@ Class SWWMDirectMessage : HUDMessageBase if ( blinktics <= 0 ) { blinktics--; - if ( blinktics < -3 ) blinktics = (abs(GetRandom())%10)?(60+abs(GetRandom())%30):6; + if ( blinktics < -3 ) blinktics = (abs(GetUIRandom())%10)?(60+abs(GetUIRandom())%30):6; } else blinktics--; if ( talktics > 0 ) { - if ( !(gametic%3) ) talkframe = (talkframe==-1)?(abs(GetRandom())%5):-1; + if ( !(gametic%3) ) talkframe = (talkframe==-1)?(abs(GetUIRandom())%5):-1; talktics--; } else talkframe = -1; @@ -505,6 +723,7 @@ Class SWWMDirectMessage : HUDMessageBase if ( nextmsg && nextdirect ) { nextmsg.seqnum = 1; + nextmsg.bDontResetMe = true; StatusBar.AttachMessage(nextmsg,-1232); return true; } @@ -524,15 +743,24 @@ Class SWWMDirectMessage : HUDMessageBase override void Draw( int bottom, int visibility ) { if ( (seqnum < 0) || (seqnum > (seqcnt+1)) ) return; + int ymargin; double alph = 1.; - double fractic = SWWMStatusBar(statusbar)?SWWMStatusBar(statusbar).fractic:0; + double fractic = System.GetTimeFrac(); if ( seqnum == 0 ) alph = (fadein+fractic)/15.; else if ( seqnum == (seqcnt+1) ) alph = 1.-(fadeout+fractic)/30.; - double hs; - if ( swwm_hudscale ) hs = CleanXFac_1; - else hs = max(floor(Screen.GetWidth()/640.),1.); - ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); - origin = (int(ss.x-270)/2,swwm_hudmargin+70); + if ( SWWMStatusBar(StatusBar) ) + { + ymargin = SWWMStatusBar(StatusBar).ymargin; + hs = SWWMStatusBar(StatusBar).hs; + ss = SWWMStatusBar(StatusBar).ss; + } + else + { + ymargin = clamp(swwm_hudmargin,0,10); + hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + } + origin = (int(ss.x-270)/2,ymargin+70); Screen.DrawTexture(MessageBox,false,origin.x,origin.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph); if ( (seqnum < 1) || (seqnum > seqcnt) ) return; DrawAvatar(fractic); @@ -540,27 +768,840 @@ Class SWWMDirectMessage : HUDMessageBase } } -// used to manually trigger dialogues through a hacky method in the hud -// because zscript is fucking stupid with its handling of names, we can't -// pass the dialogue name to arguments, so it'll have to be hardcoded -Class SWWMDialogueTrigger : Actor +// used to manually trigger dialogues +// the AMBUSH flag means the dialogue only shows for the activator +Class SWWMDialogueTrigger : SWWMNonInteractiveActor abstract { - default - { - +NOBLOCKMAP; - +NOGRAVITY; - +NOINTERACTION; - +DONTSPLASH; - } override void Activate( Actor activator ) { - static const String dlglist[] = - { - "swwmultdoom2map20dlg" - }; - if ( !swwm_nomapmsg ) - Console.MidPrint(null,dlglist[args[0]]); + // this is a huge gross hack that only exists because you can't get arg0str out of actors + // (primarily, because you can convert names to ints, but not viceversa) + String dlg = GetClassName(); + dlg.StripLeft('SWWMDialogueTrigger'); + if ( !bAMBUSH || (activator && (activator.player == players[consoleplayer])) ) + EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue."..dlg); Destroy(); } override void Tick() {} } + +Class SWWMDialogueTriggerGOTCHAEND : SWWMDialogueTrigger {} +Class SWWMDialogueTriggerSpcEV2BCD : SWWMNonInteractiveActor +{ + Actor thecaco; + int spcstate; + + // this one is very special, yup + override void PostBeginPlay() + { + // the one singular astral cacodemon in this map + // needed for everything + let cacoclass = (Class)(FindClass('AstralCacodemon','Actor')); + if ( cacoclass ) thecaco = Actor(ThinkerIterator.Create(cacoclass).Next()); + if ( !thecaco ) + { + Destroy(); + return; + } + } + + override void Tick() + { + if ( !thecaco || (thecaco.Health <= 0) ) + { + EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2D"); + Destroy(); + return; + } + double dist; + switch ( spcstate ) + { + case 0: + // check that the player is close to the astral cacodemon + dist = (thecaco.pos.xy-players[consoleplayer].mo.pos.xy).length(); + if ( dist < 1024 ) + { + spcstate++; + EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2B"); + } + break; + case 1: + // wait until the astral caco leaves its spawn position + dist = (thecaco.pos.xy-thecaco.spawnpoint.xy).length(); + if ( dist > 64 ) spcstate++; + break; + case 2: + // check that the player is close to where the astral cacodemon originally was + dist = (thecaco.spawnpoint.xy-players[consoleplayer].mo.pos.xy).length(); + if ( dist < 1024 ) + { + spcstate++; + EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue.EV2C"); + } + break; + } + } +} +Class SWWMDialogueTriggerEV2J : SWWMDialogueTrigger {} + +// I'm just doing this as an experiment, don't mind me + +Class DSMapTitle : HUDMessageBase +{ + Struct FntGlyph + { + int x, y, width, height, xofs, yofs, advance; + }; + + TextureID atlas, atlas_sub; + FntGlyph glyphs[256], glyphs_sub[256]; + int fheight, fheight_sub; + + String txt, txtsub; + bool hasnewline; + int tics, holdtics, fadeintics, fadeouttics; + int ultics; + + transient bool bDontDeleteMe; // safeguard for savegames + + bool bTxtIsSplit; + Array txt_split; + Array txtwidth_split; + int txtmaxwidth_split; + + // all the actual hard code + int MyStringWidth( String str ) + { + int w = 0; + int lw = 0; + int len = str.CodePointCount(); + for ( int i=0, pos=0; i 255 ) continue; + lw += glyphs[ch].advance; + // newline, restart line width + if ( ch == 0x0a ) + { + w = max(w,lw); + lw = 0; + } + } + w = max(w,lw); + return w; + } + void MyStringBreak( String str, int maxw ) + { + bTxtIsSplit = true; + txt_split.Clear(); + txtwidth_split.Clear(); + txtmaxwidth_split = 0; + int cur = 0; + int w = 0; + int len = str.CodePointCount(); + bool wasspace = false; + bool leftspace = false; + int lastspace = 0, pastspace = 0; + for ( int i=0, pos=0; i255)?0:glyphs[ch].advance; + bool endof = ((i+1)>=len); + if ( (ch != 0x0A) && !endof && ((w <= 0) || (w+cw <= maxw)) ) + { + w += cw; + continue; + } + String sstr = str.Mid(cur,endof?int.max:(lastspace-cur)); + int lw = MyStringWidth(sstr); + txt_split.Push(sstr); + txtwidth_split.Push(lw); + if ( lw > txtmaxwidth_split ) txtmaxwidth_split = lw; + w = 0; + wasspace = false; + cur = pastspace; + lastspace = 0; + pastspace = 0; + leftspace = true; + } + } + int MySubStringWidth( String str ) + { + int w = 0; + int lw = 0; + int len = str.CodePointCount(); + for ( int i=0, pos=0; i 255 ) continue; + lw += glyphs_sub[ch].advance; + // newline, restart line width + if ( ch == 0x0a ) + { + w = max(w,lw); + lw = 0; + } + } + w = max(w,lw); + return w; + } + void MyDrawText( String str, double x, double y, Vector2 ss, double alpha = 1. ) + { + int len = str.CodePointCount(); + double xx = x; + double yy = y; + for ( int i=0, pos=0; i 255 ) continue; + if ( glyphs[ch].width && glyphs[ch].height ) + { + Screen.DrawTexture(atlas,false,xx-glyphs[ch].xofs,yy-glyphs[ch].yofs, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs[ch].x,DTA_SrcY,glyphs[ch].y, + DTA_SrcWidth,glyphs[ch].width,DTA_SrcHeight,glyphs[ch].height, + DTA_DestWidth,glyphs[ch].width,DTA_DestHeight,glyphs[ch].height, + DTA_Alpha,alpha); + } + xx += glyphs[ch].advance; + // newline + if ( ch == 0x0a ) + { + xx = x; + yy += fheight; + } + } + } + void MySubDrawText( String str, double x, double y, Vector2 ss, double alpha = 1. ) + { + int len = str.CodePointCount(); + double xx = x; + double yy = y; + for ( int i=0, pos=0; i 255 ) continue; + if ( glyphs_sub[ch].width && glyphs_sub[ch].height ) + { + Screen.DrawTexture(atlas_sub,false,xx-glyphs_sub[ch].xofs,yy-glyphs_sub[ch].yofs, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs_sub[ch].x,DTA_SrcY,glyphs_sub[ch].y, + DTA_SrcWidth,glyphs_sub[ch].width,DTA_SrcHeight,glyphs_sub[ch].height, + DTA_DestWidth,glyphs_sub[ch].width,DTA_DestHeight,glyphs_sub[ch].height, + DTA_Alpha,alpha); + } + xx += glyphs_sub[ch].advance; + // newline + if ( ch == 0x0a ) + { + xx = x; + yy += fheight_sub; + } + } + } + // stretches the "_" glyph over a specific width, center-aligned + void DrawUnderline( double x, double y, Vector2 ss, double width, double alpha = 1. ) + { + double xx = x-width/2; + // l stem + Screen.DrawTexture(atlas,false,xx-4,y, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs[95].x,DTA_SrcY,glyphs[95].y, + DTA_SrcWidth,4,DTA_SrcHeight,glyphs[95].height, + DTA_DestWidthF,4,DTA_DestHeight,glyphs[95].height, + DTA_Alpha,alpha); + // long + Screen.DrawTexture(atlas,false,xx,y, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs[95].x+4,DTA_SrcY,glyphs[95].y, + DTA_SrcWidth,glyphs[95].width-8,DTA_SrcHeight,glyphs[95].height, + DTA_DestWidthF,width,DTA_DestHeight,glyphs[95].height, + DTA_Alpha,alpha); + // r stem + Screen.DrawTexture(atlas,false,xx+width,y, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs[95].x+(glyphs[95].width-4),DTA_SrcY,glyphs[95].y, + DTA_SrcWidth,4,DTA_SrcHeight,glyphs[95].height, + DTA_DestWidthF,4,DTA_DestHeight,glyphs[95].height, + DTA_Alpha,alpha); + } + + DSMapTitle Init() + { + txt = level.levelname; + txtsub = level.authorname; + if ( txt.Left(1) == "$" ) txt = StringTable.Localize(txt); + if ( txtsub.Left(1) == "$" ) txtsub = StringTable.Localize(txtsub); + // may contain color escapes, which we don't support here + SWWMUtility.StripColor(txt); + SWWMUtility.StripColor(txtsub); + // level name may contain trailing whitespace due to DEHACKED nonsense, so strip it + txt.StripRight(); + if ( txtsub == "" ) // if we already have an author name, don't do this stuff + { + int sep; + if ( (sep = txt.RightIndexOf(" - by: ")) != -1 ) // 20 heretics, spooktober + { + txtsub = txt.Mid(sep+7); + txt.Truncate(sep); + } + else if ( (sep = txt.RightIndexOf(" - by ")) != -1 ) // variation seen in DOOMIUM + { + txtsub = txt.Mid(sep+6); + txt.Truncate(sep); + } + else if ( (sep = txt.RightIndexOf(" - ")) != -1 ) // hexmas and many others (may cause false positives?) + { + txtsub = txt.Mid(sep+3); + txt.Truncate(sep); + } + } + hasnewline = (txt.IndexOf("\n") != -1); + bTxtIsSplit = false; + tics = -10; + holdtics = 140; + fadeintics = 20; + fadeouttics = 40; + ultics = 50; + atlas = TexMan.CheckForTexture("graphics/dsmapfont.png"); + if ( !atlas.IsValid() || atlas.IsNull() ) ThrowAbortException("font atlas texture not found"); + let lmp = Wads.CheckNumForFullname("graphics/dsmapfont.txt"); + if ( lmp == -1 ) ThrowAbortException("font definition file not found"); + String dat = Wads.ReadLump(lmp); + Array list, ln; + // Windows pls + dat.Replace("\r",""); + list.Clear(); + dat.Split(list,"\n"); + int ch = 0; + for ( int i=0; i holdtics+fadeintics+fadeouttics); + } + + override void Draw( int bottom, int visibility ) + { + if ( tics <= 0 ) return; + double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs; + double fractic = System.GetTimeFrac(); + double ftics = tics+fractic; + double alpha = (ftics weaps; + int cursel; + double alph, olalph; + double curY, smoothY, olsmoothY; + int stage; + Font fnt; + + private int CmpWeapon( Weapon a, Weapon b ) + { + let [dummya, slota, idxa] = mo.player.weapons.LocateWeapon(a.GetClass()); + if ( slota == 0 ) slota = 10; + let [dummyb, slotb, idxb] = mo.player.weapons.LocateWeapon(b.GetClass()); + if ( slotb == 0 ) slotb = 10; + if ( slota == slotb ) + return idxa > idxb; + return slota > slotb; + } + + private int partition_weapons( int l, int h ) + { + Weapon pv = weaps[h]; + int i = (l-1); + for ( int j=l; j<=(h-1); j++ ) + { + if ( CmpWeapon(pv,weaps[j]) ) + { + i++; + Weapon tmp = weaps[j]; + weaps[j] = weaps[i]; + weaps[i] = tmp; + } + } + Weapon tmp = weaps[h]; + weaps[h] = weaps[i+1]; + weaps[i+1] = tmp; + return i+1; + } + private void qsort_weapons( int l, int h ) + { + if ( l >= h ) return; + int p = partition_weapons(l,h); + qsort_weapons(l,p-1); + qsort_weapons(p+1,h); + } + + static clearscope bool PlayerHasWeapons( Actor mo ) + { + for ( Inventory i=mo.inv; i; i=i.inv ) + { + if ( !(i is 'Weapon') ) continue; + let w = Weapon(i); + if ( !mo.player.weapons.LocateWeapon(w.GetClass()) ) continue; + if ( (w is 'SWWMWeapon') && SWWMWeapon(w).bHIDEINMENU ) continue; + return true; + } + return false; + } + + private TextureID GetIcon( Weapon w ) + { + let [ico, applyScale] = StatusBar.GetInventoryIcon(w,StatusBar.DI_SKIPALTICON|StatusBar.DI_SKIPREADY); + return ico; + } + + private double GetHeight( Weapon w ) + { + double h = 16.; // padding + TextureID ico = GetIcon(w); + if ( ico.IsValid() ) + { + Vector2 sz = TexMan.GetScaledSize(ico); + if ( w is 'SWWMWeapon' ) // SWWM weapon icons are larger + sz *= .125; + h += sz.y; + } + else h += fnt.GetHeight(); + return h; + } + + private double CalcHeight( bool bGetTotal = false ) + { + double th = 0.; + double cur = -1.; + for ( int i=0; i 1) && ((mo.player.ReadyWeapon == sw) || ((mo.player.ReadyWeapon != sw.SisterWeapon) && !swwm_singlefirst)) ) + bar.ntagstr = sw.SisterWeapon.GetTag(); + else bar.ntagstr = weaps[cursel].GetTag(); + bar.ntagtic = level.totaltime; + bar.ntagcol = nametagcolor; + } + + private bool CanScroll() + { + double ht = 20.; // extra padding + if ( weaps[cursel] ) + { + TextureID ico = GetIcon(weaps[cursel]); + if ( ico.IsValid() ) + { + Vector2 sz = TexMan.GetScaledSize(ico); + if ( weaps[cursel] is 'SWWMWeapon' ) + ht += sz.y*.0625; + else ht += sz.y*.5; + } + else ht += fnt.GetHeight()*.5; + } + return (abs(smoothY-curY) < ht); + } + + private bool WeaponHasAmmo( Weapon w ) + { + if ( SWWMWeapon(w) ) + return SWWMWeapon(w).ReportHUDAmmo(); + if ( (!w.Ammo1 || (w.Ammo1.Amount > 0) || w.bAMMO_OPTIONAL) || (w.Ammo2 && ((w.Ammo2.Amount > 0) || w.bALT_AMMO_OPTIONAL)) ) + return true; + return false; + } + + void WeapPrev() + { + if ( (weaps.Size() <= 1) || !CanScroll() ) return; + for ( int i=0; i= weaps.Size() ) + { + double fh = CalcHeight(true); + smoothY -= fh; + olsmoothY -= fh; + cursel = 0; + } + if ( WeaponHasAmmo(weaps[cursel]) ) break; + } + curY = CalcHeight(); + S_StartSound("menu/demoscroll",CHAN_AUTO,CHANF_UI); + if ( !weaps[cursel] || !(displaynametags&2) ) return; + ShowNameTag(); + } + + void WeapSel() + { + if ( !CanScroll() ) return; + stage = 2; + if ( !weaps[cursel] ) S_StartSound("menu/democlose",CHAN_AUTO,CHANF_UI|CHANF_OVERLAP); + else EventHandler.SendNetworkEvent(String.Format("swwmselweapon.%s",weaps[cursel].GetClassName()),mo.PlayerNumber()); + } + + void WeapCancel() + { + if ( !CanScroll() ) return; + stage = 2; + S_StartSound("menu/democlose",CHAN_AUTO,CHANF_UI|CHANF_OVERLAP); + } + + override bool Tick() + { + // automatically close if disabled or player changes weapons through other means + if ( (!swwm_useweaponbar || (mo.player.PendingWeapon != WP_NOCHANGE)) && (stage != 2) ) + { + stage = 2; + S_StartSound("menu/clear",CHAN_AUTO,CHANF_UI|CHANF_OVERLAP); + } + int oldsiz = weaps.Size(); + bool bChanged = false; + Weapon oldsel = (weaps.Size()<=0)?null:weaps[cursel]; + for ( int i=0; i i ) cursel--; + i--; + } + for ( Inventory i=mo.inv; i; i=i.inv ) + { + if ( !(i is 'Weapon') ) continue; + let w = Weapon(i); + if ( !mo.player.weapons.LocateWeapon(w.GetClass()) ) continue; + if ( (w is 'SWWMWeapon') && SWWMWeapon(w).bHIDEINMENU ) continue; + if ( weaps.Find(w) < weaps.Size() ) continue; + weaps.Push(w); + bChanged = true; + } + if ( cursel >= weaps.Size() ) cursel = max(0,weaps.Size()-1); + if ( weaps.Size() <= 0 ) stage = 2; // force close if no weapons available + else if ( bChanged ) + { + // re-sort and reposition + qsort_weapons(0,weaps.Size()-1); + let idx = weaps.Find(oldsel); + if ( idx < weaps.Size() ) cursel = idx; + curY = CalcHeight(); + } + olalph = alph; + switch ( stage ) + { + case 0: + // fade in + alph += 4./GameTicRate; + if ( alph >= 1. ) + { + alph = 1.; + stage = 1; + return false; + } + break; + case 1: + // do nothing + break; + case 2: + // fade out + alph -= 6./GameTicRate; + if ( alph <= 0. ) return true; + break; + } + // smooth scroll + olsmoothY = smoothY; + smoothY = smoothY*.8+curY*.2; + double hs; + if ( SWWMStatusBar(StatusBar) ) hs = SWWMStatusBar(StatusBar).hs0; + else hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + if ( abs(smoothY-curY) < (1./hs) ) smoothY = curY; + return false; + } + + // simplify some code here + private bool DrawWeapon( Weapon w, int i, double x, double &y, double hs, Vector2 hss, double salph, double fractic, bool bOverflow = false, bool bUpward = false ) + { + let sw = SWWMWeapon(w); + double scl = sw?.125:1.; + y += bUpward?-8.:8.; + bool bHasAmmo = WeaponHasAmmo(w); + TextureID ico = GetIcon(w); + double fade = 0.; + if ( ico.IsValid() ) + { + Vector2 sz = TexMan.GetScaledSize(ico); + y += sz.y*scl*(bUpward?-.5:.5); + fade = clamp(.8-abs(y-hss.y)/hss.y,0.,.8)/.8; + if ( sw && sw.SisterWeapon && (sw.Amount > 1) && ((mo.player.ReadyWeapon == sw) || ((mo.player.ReadyWeapon != sw.SisterWeapon) && !swwm_singlefirst)) ) + { + // double draw + Screen.DrawTexture(ico,false,x-(4.*hs),(y-4.)*hs,DTA_ScaleX,scl*hs,DTA_ScaleY,scl*hs,DTA_Alpha,salph*fade,DTA_CenterOffset,true,DTA_Color,bHasAmmo?0xFFFFFFFF:0xFF800000,DTA_ColorOverlay,((i==cursel)&&!bOverflow)?0x00000000:0x80000000); + Screen.DrawTexture(ico,false,x+(4.*hs),(y+4.)*hs,DTA_ScaleX,scl*hs,DTA_ScaleY,scl*hs,DTA_Alpha,salph*fade,DTA_CenterOffset,true,DTA_Color,bHasAmmo?0xFFFFFFFF:0xFF800000,DTA_ColorOverlay,((i==cursel)&&!bOverflow)?0x00000000:0x80000000); + } + else Screen.DrawTexture(ico,false,x,y*hs,DTA_ScaleX,scl*hs,DTA_ScaleY,scl*hs,DTA_Alpha,salph*fade,DTA_CenterOffset,true,DTA_Color,bHasAmmo?0xFFFFFFFF:0xFF800000,DTA_ColorOverlay,((i==cursel)&&!bOverflow)?0x00000000:0x80000000); + if ( (i == cursel) && !bOverflow ) + { + Screen.DrawChar(fnt,Font.CR_FIRE,x-((sz.x*scl*.5+16.+2.*sin((gametic+fractic)*8.))*hs),y*hs,0x25BA,DTA_ScaleX,hs,DTA_ScaleY,hs,DTA_Alpha,salph*fade,DTA_CenterOffset,true); + Screen.DrawChar(fnt,Font.CR_FIRE,x+((sz.x*scl*.5+16.+2.*sin((gametic+fractic)*8.))*hs),y*hs,0x25C4,DTA_ScaleX,hs,DTA_ScaleY,hs,DTA_Alpha,salph*fade,DTA_CenterOffset,true); + } + y += sz.y*scl*(bUpward?-.5:.5); + } + else + { + String label = "?WeaponName?"; + if ( sw && sw.SisterWeapon && (sw.Amount > 1) && ((mo.player.ReadyWeapon == sw) || ((mo.player.ReadyWeapon != sw.SisterWeapon) && !swwm_singlefirst)) ) + label = sw.SisterWeapon.GetTag(); + else label = w.GetTag(); + Vector2 sz = (fnt.StringWidth(label),fnt.GetHeight()); + fade = clamp(.8-abs((bUpward?(y-sz.y*.5):y+sz.y*.5)-hss.y)/hss.y,0.,.8)/.8; + Screen.DrawText(fnt,bHasAmmo?Font.CR_WHITE:Font.CR_RED,x-sz.x*.5*hs,y*hs,label,DTA_ScaleX,hs,DTA_ScaleY,hs,DTA_Alpha,salph*fade,DTA_ColorOverlay,((i==cursel)&&!bOverflow)?0x00000000:0x80000000); + y += sz.y*(bUpward?-.5:.5); + if ( (i == cursel) && !bOverflow ) + { + Screen.DrawChar(fnt,Font.CR_FIRE,x-((sz.x*.5+16.+2.*sin((gametic+fractic)*8.))*hs),y*hs,0x25BA,DTA_ScaleX,hs,DTA_ScaleY,hs,DTA_Alpha,salph*fade,DTA_CenterOffset,true); + Screen.DrawChar(fnt,Font.CR_FIRE,x+((sz.x*.5+16.+2.*sin((gametic+fractic)*8.))*hs),y*hs,0x25C4,DTA_ScaleX,hs,DTA_ScaleY,hs,DTA_Alpha,salph*fade,DTA_CenterOffset,true); + } + y += sz.y*(bUpward?-.5:.5); + } + y += bUpward?-8.:8.; + return (fade <= 0.); + } + + override void Draw( int bottom, int visibility ) + { + double fractic = System.GetTimeFrac(); + double ssmoothY = SWWMUtility.Lerp(olsmoothY,smoothY,fractic); + double salph = SWWMUtility.Lerp(olalph,alph,fractic); + Screen.Dim(0xFF000000,.4*salph,0,0,Screen.GetWidth(),Screen.GetHeight()); + double hs; + Vector2 ss; + if ( SWWMStatusBar(StatusBar) ) + { + hs = SWWMStatusBar(StatusBar).hs0; + ss = SWWMStatusBar(StatusBar).ss0; + } + else + { + hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); + } + Vector2 hss = ss*.5; + double x = Screen.GetWidth()*.5; + double y = hss.y-ssmoothY; + int i; + for ( i=0; i= weaps.Size() ) i = 0; + } + // reposition and draw upwards until alpha is zero + y = hss.y-ssmoothY; + i = weaps.Size()-1; + while ( !DrawWeapon(weaps[i%weaps.Size()],i%weaps.Size(),x,y,hs,hss,salph,fractic,true,true) ) + { + if ( --i < 0 ) i = weaps.Size()-1; + } + + } +} diff --git a/zscript/hud/swwm_hudobjects.zsc b/zscript/hud/swwm_hudobjects.zsc index 0c1310db5..75eb79a1a 100644 --- a/zscript/hud/swwm_hudobjects.zsc +++ b/zscript/hud/swwm_hudobjects.zsc @@ -1,14 +1,6 @@ // hud-related storage objects // (used to be thinkers, but this might be lighter on performance) -Enum EScoreObjType -{ - ST_Score, - ST_Damage, - ST_Health, - ST_Armor -}; - // floating scores Class SWWMScoreObj play { @@ -21,53 +13,61 @@ Class SWWMScoreObj play int lifespan, initialspan; int starttic, seed, seed2; SWWMScoreObj next; - bool damnum; - Actor acc; - static SWWMScoreObj Spawn( int score, Vector3 pos, int type = ST_Score, Actor acc = null, int tcolor = -1 ) + // all of these variations are here to simplify code + + static SWWMScoreObj SpawnAtActorBunch( int score, Actor a, int tcolor = -1 ) { - // early checks - if ( (type == ST_SCORE) && !swwm_scorenums ) return null; - else if ( (type > ST_SCORE) && !swwm_healthnums ) return null; - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + if ( !a ) return null; + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( !hnd ) return null; - let o = new("SWWMScoreObj"); + Vector3 pos = level.Vec3Offset(a.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,a.Height/2)); + return SpawnFromHandler(hnd,score,pos,tcolor); + } + + static SWWMScoreObj SpawnAtActor( int score, Actor a, int tcolor = -1 ) + { + if ( !a ) return null; + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd ) return null; + Vector3 pos = a.Vec3Offset(0,0,a.Height/2); + return SpawnFromHandler(hnd,score,pos,tcolor); + } + + static SWWMScoreObj Spawn( int score, Vector3 pos, int tcolor = -1 ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd ) return null; + return SpawnFromHandler(hnd,score,pos,tcolor); + } + + static SWWMScoreObj SpawnAtActorBunchFromHandler( SWWMHandler hnd, int score, Actor a, int tcolor = -1 ) + { + if ( !a ) return null; + Vector3 pos = level.Vec3Offset(a.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,a.Height/2)); + return SpawnFromHandler(hnd,score,pos,tcolor); + } + + static SWWMScoreObj SpawnAtActorFromHandler( SWWMHandler hnd, int score, Actor a, int tcolor = -1 ) + { + if ( !a ) return null; + Vector3 pos = a.Vec3Offset(0,0,a.Height/2); + return SpawnFromHandler(hnd,score,pos,tcolor); + } + + static SWWMScoreObj SpawnFromHandler( SWWMHandler hnd, int score, Vector3 pos, int tcolor = -1 ) + { + let o = new('SWWMScoreObj'); o.score = score; o.pos = pos; o.lifespan = o.initialspan = 60; if ( tcolor != -1 ) o.tcolor = tcolor; - else switch ( type ) - { - case ST_Score: - o.tcolor = swwm_numcolor_scr; - break; - case ST_Damage: - o.tcolor = swwm_numcolor_dmg; - break; - case ST_Health: - o.tcolor = swwm_numcolor_hp; - break; - case ST_Armor: - o.tcolor = swwm_numcolor_ap; - break; - } + else o.tcolor = Font.CR_GOLD; o.starttic = level.maptime; o.seed = Random[ScoreBits](); o.seed2 = Random[ScoreBits](); - o.damnum = (type > ST_Score); - o.acc = acc; - if ( o.damnum ) - { - o.next = hnd.damnums; - hnd.damnums = o; - hnd.damnums_cnt++; - } - else - { - o.next = hnd.scorenums; - hnd.scorenums = o; - hnd.scorenums_cnt++; - } + o.next = hnd.scorenums; + hnd.scorenums = o; return o; } @@ -75,7 +75,7 @@ Class SWWMScoreObj play { self.xscore.Push(xscore); self.xstr.Push(xstr); - self.xtcolor.Push((xtcolor==int.min)?swwm_numcolor_bonus:xtcolor); + self.xtcolor.Push((xtcolor==int.min)?Font.CR_FIRE:xtcolor); } bool Tick() @@ -85,6 +85,68 @@ Class SWWMScoreObj play } } +// damage numbers +Class SWWMDamNum play +{ + int tcolor; + int damage; + Vector3 pos; + int lifespan, initialspan; + int starttic, seed, seed2; + SWWMDamNum next; + + // damage numbers always spawn in bunches, so no need for that function variant + + static SWWMDamNum SpawnAtActor( int damage, Actor a, Name type = '' ) + { + if ( !a ) return null; + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd ) return null; + Vector3 pos = level.Vec3Offset(a.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,a.Height/2)); + return SpawnFromHandler(hnd,damage,pos,type); + } + + static SWWMDamNum Spawn( int damage, Vector3 pos, Name type = '' ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !hnd ) return null; + return SpawnFromHandler(hnd,damage,pos,type); + } + + static SWWMDamNum SpawnAtActorFromHandler( SWWMHandler hnd, int damage, Actor a, Name type = '' ) + { + if ( !a ) return null; + Vector3 pos = level.Vec3Offset(a.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,a.Height/2)); + return SpawnFromHandler(hnd,damage,pos,type); + } + + static SWWMDamNum SpawnFromHandler( SWWMHandler hnd, int damage, Vector3 pos, Name type = '' ) + { + let o = new('SWWMDamNum'); + o.damage = damage; + o.pos = pos; + o.tcolor = Font.FindFontColor('MiniRed'); + if ( swwm_damnums_color ) for ( int i=0; i k = thekey.species; @@ -145,7 +205,7 @@ Class SWWMInterest play { i.type = INT_Exit; i.exittype = theexit; - i.marker = Actor.Spawn("SWWMInterestMarker",pos); + i.marker = Actor.Spawn('SWWMInterestMarker',pos); i.marker.SetState(i.marker.SpawnState+theexit); i.marker.bDORMANT = !level.allmap; } @@ -157,7 +217,6 @@ Class SWWMInterest play i.pos = thekey?thekey.Vec3Offset(0,0,thekey.height/2):pos; i.next = hnd.intpoints; hnd.intpoints = i; - hnd.intpoints_cnt++; return i; } @@ -199,7 +258,7 @@ Class SWWMItemSense play s.pos = item.Vec3Offset(0,0,item.height); return s; } - let i = new("SWWMItemSense"); + let i = new('SWWMItemSense'); i.item = item; if ( item is 'SWWMRespawnTimer' ) { @@ -217,7 +276,6 @@ Class SWWMItemSense play i.pos = item.Vec3Offset(0,0,item.height); i.next = parent.itemsense; parent.itemsense = i; - parent.itemsense_cnt++; return i; } @@ -240,197 +298,6 @@ Class SWWMItemSense play } } -// enemy combat tracker -Class SWWMCombatTracker play -{ - Actor mytarget; - String mytag; - int updated, lasthealth, maxhealth; - DynamicValueInterpolator intp; - Vector3 pos, prevpos, oldpos, oldprev; - PlayerInfo myplayer; - SWWMCombatTracker next; - bool legged, mutated; - int tcnt; - double height; - int mxdist, dbar; - bool bBOSS, bFRIENDLY; - bool firsthit; - bool bUpdateMorph; - String unmorphedtag; - - void UpdateTag() - { - if ( mytarget && (mytarget.player || mytarget.bISMONSTER || (mytarget is 'BossBrain') || (mytarget is 'SWWMHangingKeen') || (mytarget is 'Demolitionist')) ) - { - String realtag = swwm_funtags?SWWMUtility.GetFunTag(mytarget,FallbackTag):mytarget.GetTag(FallbackTag); - if ( realtag == FallbackTag ) - { - realtag = mytarget.GetClassName(); - SWWMUtility.BeautifyClassName(realtag); - } - mytag = mytarget.player?(mytarget.player.mo!=mytarget)?String.Format(StringTable.Localize("$FN_VOODOO"),mytarget.player.GetUserName()):mytarget.player.GetUserName():((mytarget is 'PlayerPawn')&&(!mytarget.player))?StringTable.Localize("$FN_VOODOO_NP"):realtag; - } - else mytag = ""; - } - - static SWWMCombatTracker Spawn( Actor target, bool update = false ) - { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !hnd ) return null; - // NOTE: These are only ever called once a thing spawns, so we don't need to "check" if entries already exist - // this check will only be performed in "update mode", i.e. when called from the swwmupdatetrackers netevent, - // or when a monster is revived - SWWMCombatTracker t; - if ( update ) for ( t=hnd.trackers; t; t=t.next ) - { - if ( t.mytarget != target ) continue; - return t; - } - t = new("SWWMCombatTracker"); - t.mytarget = target; - t.UpdateTag(); - if ( target.player ) - { - t.lasthealth = target.health; - t.maxhealth = target.default.health; - } - else t.lasthealth = t.maxhealth = target.health; - t.updated = int.min; - t.height = target.height; - t.pos = level.Vec3Offset(target.pos,(0,0,t.height)); - t.prevpos = level.Vec3Offset(target.prev,(0,0,t.height)); - t.oldpos = target.pos; - t.oldprev = target.prev; - t.intp = DynamicValueInterpolator.Create(t.lasthealth,.5,1,100); - t.myplayer = target.player; - t.next = hnd.trackers; - t.bBOSS = target.bBOSS; - t.bFRIENDLY = target.IsFriend(players[consoleplayer].mo); - hnd.trackers = t; - hnd.trackers_cnt++; - return t; - } - - bool Tick() - { - // is target gone or dead? - if ( !mytarget || (mytarget.Health <= 0) ) - { - // we're done - if ( updated > level.maptime ) updated = level.maptime; - lasthealth = 0; - prevpos = pos; // prevent stuttering - intp.Update(lasthealth); - if ( level.maptime > updated+35 ) return true; - return false; - } - // don't update dormant targets - if ( mytarget.bDORMANT ) - return false; - // only update height/position while alive - bool heightchanged = false; - if ( height != mytarget.height ) heightchanged = true; - height = mytarget.height; - if ( heightchanged || (mytarget.pos != oldpos) || (mytarget.prev != oldprev) ) - { - oldpos = mytarget.pos; - oldprev = mytarget.prev; - pos = level.Vec3Offset(mytarget.pos,(0,0,height)); - prevpos = level.Vec3Offset(mytarget.prev,(0,0,height)); - } - if ( bUpdateMorph && !(mytarget is 'MorphedMonster') ) - { - // reset our tag - mytag = unmorphedtag; - bUpdateMorph = false; - } - tcnt++; - if ( (tcnt == 1) && !mytarget.player ) - { - // post-spawn health inflation check - if ( lasthealth > maxhealth ) - { - maxhealth = lasthealth; - intp.Reset(lasthealth); - } - // post-spawn morph check - if ( (mytarget is 'MorphedMonster') && MorphedMonster(mytarget).UnmorphedMe ) - { - // look for a previous tracker that has the same target as us - for ( SWWMCombatTracker t=next; t; t=t.next ) - { - if ( t.mytarget != mytarget ) continue; - // change its tag and destroy ourselves (such is life) - t.bUpdateMorph = true; - t.unmorphedtag = t.mytag; - t.mytag = String.Format("%s (%s)",mytag,t.unmorphedtag); - return true; - } - } - } - if ( (tcnt == 6) && !mytarget.player ) - { - // legendoom check - for ( Inventory i=mytarget.inv; i; i=i.inv ) - { - if ( i.GetClassName() != "LDLegendaryMonsterToken" ) continue; - legged = true; - // adjust for health inflation - if ( lasthealth > maxhealth ) - { - maxhealth = lasthealth; - intp.Reset(lasthealth); - } - } - } - if ( legged && !mutated ) - { - // check inventory regularly to mark as mutated - for ( Inventory i=mytarget.inv; i; i=i.inv ) - { - if ( i.GetClassName() != "LDLegendaryMonsterTransformed" ) continue; - mutated = true; - Console.Printf(StringTable.Localize("$SWWM_LTFORM"),mytag); - } - }// voodoo dolls don't show as friendly - bFRIENDLY = mytarget.IsFriend(players[consoleplayer].mo); - if ( mytarget.Health < lasthealth ) firsthit = true; - lasthealth = mytarget.Health; - intp.Update(lasthealth); - // special update conditions - if ( dbar && !mytarget.player ) - { - if ( (dbar == 2) && (lasthealth >= maxhealth) ) - return false; - else if ( (dbar == 1) && !firsthit ) - return false; - } - if ( (mytarget.bISMONSTER || mytarget.player) && !mytarget.bINVISIBLE && !mytarget.bCORPSE ) - { - // players (but not voodoo dolls), always if friendly, otherwise only update if visible - if ( mytarget.player && (mytarget.player.mo == mytarget) ) - { - if ( mytarget.IsFriend(players[consoleplayer].mo) ) updated = level.maptime+35; - else if ( ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < mxdist)) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) - updated = level.maptime; - } - // friendlies within a set distance - else if ( mytarget.bFRIENDLY && ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < mxdist)) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime+35; - // enemies within a set distance that have us as target - else if ( mytarget.target && (mytarget.target.Health > 0) && (mytarget.target.player == players[consoleplayer]) && ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < mxdist)) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime+70; - // any visible enemies within one quarter of the set distance - else if ( ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < (mxdist/4))) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime; - } - else if ( (mytarget is 'BossBrain') || (mytarget is 'SWWMHangingKeen') ) - { - // special stuff, only if visible - if ( ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < (mxdist/4))) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime; - } - return false; - } -} - // ultralight trackers for certain things Class SWWMSimpleTracker play { @@ -449,8 +316,10 @@ Class SWWMSimpleTracker play bool vipitem; bool expired; bool ismissile; - bool isbeam; + bool isbeam, isybeam; + bool iskey; int lastupdate; + Color keycolor; ui double smoothalpha; // smoothened alpha, for ui SWWMSimpleTracker next; @@ -458,7 +327,8 @@ Class SWWMSimpleTracker play { if ( !target ) return; isbeam = SWWMUtility.IsBeamProj(target); - radius = isbeam?(target.speed*cos(target.pitch)):target.radius; + isybeam = isbeam&&SWWMUtility.IsYBeam(target); + radius = isybeam?(target.speed*cos(target.pitch+90)):isbeam?(target.speed*cos(target.pitch)):target.radius; angle = target.angle; pos = target.pos; isplayer = target.player; @@ -472,6 +342,9 @@ Class SWWMSimpleTracker play countitem = SWWMUtility.IsScoreItem(target); vipitem = SWWMUtility.IsVipItem(target); lastupdate = level.maptime; + iskey = (target is 'Key'); + if ( iskey && !Key(target).Owner ) // owned keys glitch out and return the wrong color + keycolor = Key.GetMapColorForKey(Key(target)); if ( isitem ) { if ( !target.bSPECIAL || Inventory(target).Owner ) @@ -516,10 +389,8 @@ Class SWWMSimpleTracker play expired = (target.Health<=0); } - static SWWMSimpleTracker Track( Actor target ) + static SWWMSimpleTracker Track( SWWMHandler hnd, Actor target ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !hnd ) return null; SWWMSimpleTracker t; for ( t=hnd.strackers; t; t=t.next ) { @@ -527,12 +398,11 @@ Class SWWMSimpleTracker play t.Update(); return t; } - t = new("SWWMSimpleTracker"); + t = new('SWWMSimpleTracker'); t.target = target; t.Update(); t.next = hnd.strackers; hnd.strackers = t; - hnd.strackers_cnt++; return t; } } diff --git a/zscript/items/swwm_ammoextra.zsc b/zscript/items/swwm_ammoextra.zsc index 0ef80dabe..abda0e758 100644 --- a/zscript/items/swwm_ammoextra.zsc +++ b/zscript/items/swwm_ammoextra.zsc @@ -7,10 +7,11 @@ Class AmmoFabricator : Inventory abstract Mixin SWWMOverlapPickupSound; Mixin SWWMUseToPickup; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; - int budget, pertype, maxunits, maxtypes, maxunitprice, txtcol; - int chancediv; + meta int budget, pertype, maxunits, maxtypes, maxunitprice, txtcol; + meta int chancediv; String pickupmsgextra; @@ -111,48 +112,17 @@ Class AmmoFabricator : Inventory abstract bool FabricateAmmo() { - // first we must build an array of all valid weapons, this saves time instead of doing recursive loops - Array > validweapons; - for ( int i=0; i)(AllActorClasses[i]); - if ( !type2 ) continue; - let rep = GetReplacement(type2); - if ( (rep != type2) && !(rep is "DehackedPickup") ) continue; - readonly weap = GetDefaultByType(type2); - if ( !Owner.player || !Owner.player.weapons.LocateWeapon(type2) || weap.bCheatNotWeapon || !weap.CanPickup(Owner) ) continue; - let ready = weap.FindState("Ready"); - if ( !ready || !ready.ValidateSpriteFrame() ) continue; - validweapons.Push(type2); - } Array > available; // populate ammo production list - for ( int i=0; i)(AllActorClasses[i]); + let a = (Class)(cls); // skip over candy gun spares, they're "special ammo" if ( a == 'CandyGunSpares' ) continue; // only direct descendants of swwmammo with a set price below our max unit price if ( !a || (a.GetParentClass() != 'SWWMAmmo') ) continue; let def = GetDefaultByType(a); if ( (def.Stamina <= 0) || (def.Stamina > maxunitprice) ) continue; - // only ammo for weapons that are valid (can be used) - bool isvalid = false; - for ( int j=0; j weap = GetDefaultByType(validweapons[j]); - if ( (validweapons[j] is 'SWWMWeapon') && SWWMWeapon(weap).UsesAmmo(a) ) - { - isvalid = true; - break; - } - if ( (weap.AmmoType1 == a) || (weap.AmmoType2 == a) ) - { - isvalid = true; - break; - } - } - if ( !isvalid ) continue; let f = Owner.FindInventory(a); // don't include maxed out ammo if ( f && (f.Amount >= f.MaxAmount) ) continue; @@ -182,11 +152,11 @@ Class AmmoFabricator : Inventory abstract bool comma = false; int tpertype = pertype; int ttotal = maxunits; - for ( int i=0; i > validweapons; - for ( int i=0; i)(AllActorClasses[i]); - if ( !type2 ) continue; - let rep = GetReplacement(type2); - if ( (rep != type2) && !(rep is "DehackedPickup") ) continue; - readonly weap = GetDefaultByType(type2); - if ( !other.player || !other.player.weapons.LocateWeapon(type2) || weap.bCheatNotWeapon || !weap.CanPickup(other) ) continue; - let ready = weap.FindState("Ready"); - if ( !ready || !ready.ValidateSpriteFrame() ) continue; - validweapons.Push(type2); - } - for ( int i=0; i)(AllActorClasses[i]); + let type = (class)(cls); if ( !type || (type.GetParentClass() != 'SWWMAmmo') ) continue; - // check that it's for a valid weapon - bool isvalid = false; - for ( int j=0; j weap = GetDefaultByType(validweapons[j]); - if ( (validweapons[j] is 'SWWMWeapon') && SWWMWeapon(weap).UsesAmmo(type) ) - { - isvalid = true; - break; - } - if ( (weap.AmmoType1 == type) || (weap.AmmoType2 == type) ) - { - isvalid = true; - break; - } - } - if ( !isvalid ) continue; let ammoitem = Ammo(other.FindInventory(type)); int amount = GetDefaultByType(type).BackpackAmount*self.Amount; if ( traded ) amount = 0; @@ -435,6 +363,59 @@ Class HammerspaceEmbiggener : Inventory } } } + // do the same for mag ammo, in a separate loop + foreach ( cls:AllActorClasses ) + { + let type = (class)(cls); + if ( !type || (type.GetParentClass() != 'MagAmmo') ) continue; + let magitem = MagAmmo(other.FindInventory(type)); + int amount = GetDefaultByType(type).BackpackAmount*self.Amount; + if ( traded ) amount = 0; + if ( amount < 0 ) amount = 0; + int mags = amount/GetDefaultByType(type).ClipSize; + amount = amount%GetDefaultByType(type).ClipSize; + if ( !magitem ) + { + // The player did not have the magitem. Add it. + magitem = MagAmmo(Spawn(type)); + magitem.Amount = amount; + magitem.AttachToOwner(other); + // by this point, we assume that the parent ammo pointer is valid, so... + let ammoitem = magitem.pamo; + // append some mags to it + if ( ammoitem.Amount < ammoitem.MaxAmount ) + { + if ( (ammoitem.Amount > 0) && (ammoitem.Amount+mags < 0) ) + ammoitem.Amount = int.max; + else ammoitem.Amount += mags; + if ( (ammoitem.Amount > ammoitem.MaxAmount) && !sv_unlimited_pickup ) + ammoitem.Amount = ammoitem.MaxAmount; + } + // we can't add extra mags, just max out the spare ammo + else if ( mags > 0 ) magitem.Amount = min(magitem.MaxAmount,magitem.Amount+magitem.ClipSize); + } + else + { + if ( magitem.Amount+amount >= magitem.MaxAmount ) + { + mags++; + amount -= magitem.MaxAmount; + } + magitem.Amount += amount; + let ammoitem = magitem.pamo; + // append some mags to it + if ( ammoitem.Amount < ammoitem.MaxAmount ) + { + if ( (ammoitem.Amount > 0) && (ammoitem.Amount+mags < 0) ) + ammoitem.Amount = int.max; + else ammoitem.Amount += mags; + if ( (ammoitem.Amount > ammoitem.MaxAmount) && !sv_unlimited_pickup ) + ammoitem.Amount = ammoitem.MaxAmount; + } + // we can't add extra mags, just max out the spare ammo + else if ( mags > 0 ) magitem.Amount = min(magitem.MaxAmount,magitem.Amount+magitem.ClipSize); + } + } self.Amount = min(self.Amount,MaxAmount); if ( GetParentClass() == 'HammerspaceEmbiggener' ) { @@ -484,9 +465,34 @@ Class HammerspaceEmbiggener : Inventory if ( (i.Amount > i.MaxAmount) && !sv_unlimited_pickup ) i.Amount = i.MaxAmount; } + if ( traded ) return true; + // give spare mag ammo separately + for ( Inventory i=Owner.Inv; i; i=i.Inv ) + { + if ( !(i is 'MagAmmo') ) continue; + int amount = MagAmmo(i).BackpackAmount*item.Amount; + int mags = amount/MagAmmo(i).ClipSize; + amount = amount%MagAmmo(i).ClipSize; + if ( i.Amount+amount >= MagAmmo(i).ClipSize ) + { + mags++; + amount -= MagAmmo(i).ClipSize; + } + i.Amount += amount; + Ammo a = MagAmmo(i).pamo; + if ( a.Amount < a.MaxAmount ) + { + if ( (a.Amount > 0) && (a.Amount+mags < 0) ) + a.Amount = int.max; + else a.Amount += mags; + if ( (a.Amount > a.MaxAmount) && !sv_unlimited_pickup ) + a.Amount = a.MaxAmount; + } + else if ( mags > 0 ) i.Amount = min(i.MaxAmount,i.Amount+MagAmmo(i).ClipSize); + } return true; } - // new ammo suddenly added? upgrade it (this shouldn't happen unless fucky scripting has been involved) + // new ammo suddenly added? upgrade it (this shouldn't happen unless weird scripting has been involved) if ( (item is 'Ammo') && !Owner.FindInventory(Ammo(item).GetParentAmmo()) ) { if ( Ammo(item).BackpackMaxAmount > 0 ) @@ -513,15 +519,23 @@ Class HammerspaceEmbiggener : Inventory // merges overlapping embiggeners into a bulk upgrade void A_MergeEmbiggeners() { - let bt = BlockThingsIterator.Create(self,16); + // while we're at it, adjust our height, + // since backpacks are taller in Doom + if ( gameinfo.gametype&GAME_DoomChex ) + A_SetSize(-1,26); int tamount = Amount; - while ( bt.Next() ) + for ( Actor t=CurSector.thinglist; t; ) { - let t = bt.Thing; - if ( !t || (t == self) || !(t is 'HammerspaceEmbiggener') || !(t.spawnpoint ~== spawnpoint) ) continue; + let next = t.snext; + if ( (t == self) || !(t is 'HammerspaceEmbiggener') || !(t.spawnpoint ~== spawnpoint) ) + { + t = next; + continue; + } tamount += HammerspaceEmbiggener(t).Amount; t.ClearCounters(); t.Destroy(); + t = next; } if ( tamount <= 1 ) return; tamount -= tamount%2; // always even numbered @@ -530,7 +544,7 @@ Class HammerspaceEmbiggener : Inventory Amount = min(tamount,MaxAmount); return; } - let n = Spawn("BulkHammerspaceEmbiggener",pos); + let n = Spawn('BulkHammerspaceEmbiggener',pos); Inventory(n).Amount = min(tamount,MaxAmount); SWWMUtility.TransferItemProp(self,n); ClearCounters(); @@ -539,24 +553,18 @@ Class HammerspaceEmbiggener : Inventory Default { - //$Title Hammerspace Embiggener - //$Group Ammo - //$Sprite graphics/HUD/Icons/I_Embiggener.png - //$Icon ammo Tag "$T_EMBIGGENER"; Stamina -800000; - Inventory.Icon "graphics/HUD/Icons/I_Embiggener.png"; Inventory.PickupMessage "$T_EMBIGGENER"; Inventory.MaxAmount 8; Inventory.InterHubAmount 8; - Inventory.PickupFlash "SWWMPickupFlash"; + Inventory.PickupFlash 'SWWMPickupFlash'; +INVENTORY.UNDROPPABLE; +INVENTORY.UNTOSSABLE; +INVENTORY.ALWAYSPICKUP; + +DONTGIB; +FLOATBOB; FloatBobStrength 0.25; - Radius 8; - Height 24; } States { diff --git a/zscript/items/swwm_ammoitems.zsc b/zscript/items/swwm_ammoitems.zsc index cca3cd557..c4a1cfdb6 100644 --- a/zscript/items/swwm_ammoitems.zsc +++ b/zscript/items/swwm_ammoitems.zsc @@ -6,23 +6,14 @@ Class RedShell : SWWMAmmo { Default { - //$Title 1x Red Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsNormal.png - //$Icon ammo Tag "$T_REDSHELL"; SWWMAmmo.PickupTag "REDSHELL"; Stamina 500; - Inventory.Icon "graphics/HUD/Icons/A_ShellsNormal.png"; Inventory.Amount 1; - Inventory.MaxAmount 30; - Ammo.BackpackAmount 3; - Ammo.BackpackMaxAmount 50; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 20; + Inventory.MaxAmount 40; + Ammo.BackpackAmount 4; + Ammo.BackpackMaxAmount 160; + Ammo.DropAmount 2; Accuracy 50; } States @@ -36,302 +27,25 @@ Class RedShell2 : RedShell { Default { - //$Title 2x Red Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsNormal.png - //$Icon ammo Inventory.Amount 2; - Radius 6; } } Class RedShell4 : RedShell { Default { - //$Title 4x Red Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsNormal.png - //$Icon ammo Inventory.Amount 4; - Radius 6; + } +} +Class RedShell6 : RedShell +{ + Default + { + Inventory.Amount 6; } } -Class GreenShell : SWWMAmmo -{ - Default - { - //$Title 1x Green Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsSlug.png - //$Icon ammo - Tag "$T_GREENSHELL"; - SWWMAmmo.PickupTag "GREENSHELL"; - Stamina 800; - Inventory.Icon "graphics/HUD/Icons/A_ShellsSlug.png"; - Inventory.Amount 1; - Inventory.MaxAmount 25; - Ammo.BackpackAmount 2; - Ammo.BackpackMaxAmount 45; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 20; - Accuracy 55; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class GreenShell2 : GreenShell -{ - Default - { - //$Title 2x Green Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsSlug.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - } -} -Class GreenShell4 : GreenShell -{ - Default - { - //$Title 4x Green Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsSlug.png - //$Icon ammo - Inventory.Amount 4; - Radius 6; - } -} - -Class WhiteShell : SWWMAmmo -{ - Default - { - //$Title 1x White Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsDragon.png - //$Icon ammo - Tag "$T_WHITESHELL"; - SWWMAmmo.PickupTag "WHITESHELL"; - Stamina 1000; - Inventory.Icon "graphics/HUD/Icons/A_ShellsDragon.png"; - Inventory.Amount 1; - Inventory.MaxAmount 10; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 30; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Accuracy 70; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class WhiteShell2 : WhiteShell -{ - Default - { - //$Title 2x White Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsDragon.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - } -} -Class WhiteShell4 : WhiteShell -{ - Default - { - //$Title 3x White Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsDragon.png - //$Icon ammo - Inventory.Amount 4; - Radius 6; - } -} - -Class BlueShell : SWWMAmmo -{ - Default - { - //$Title 1x Blue Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsKinylum.png - //$Icon ammo - Tag "$T_BLUESHELL"; - SWWMAmmo.PickupTag "BLUESHELL"; - Stamina 2500; - Inventory.Icon "graphics/HUD/Icons/A_ShellsKinylum.png"; - Inventory.Amount 1; - Inventory.MaxAmount 15; - Ammo.BackpackAmount 1; - Ammo.BackpackMaxAmount 35; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 20; - Accuracy 65; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class BlueShell2 : BlueShell -{ - Default - { - //$Title 2x Blue Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsKinylum.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - } -} -Class BlueShell4 : BlueShell -{ - Default - { - //$Title 4x Blue Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsKinylum.png - //$Icon ammo - Inventory.Amount 4; - Radius 6; - } -} - -Class BlackShell : SWWMAmmo -{ - Default - { - //$Title 1x Black Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsFuck.png - //$Icon ammo - Tag "$T_BLACKSHELL"; - SWWMAmmo.PickupTag "BLACKSHELL"; - Stamina 4000; - Inventory.Icon "graphics/HUD/Icons/A_ShellsFuck.png"; - Inventory.Amount 1; - Inventory.MaxAmount 5; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 25; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 20; - Accuracy 75; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class BlackShell2 : BlackShell -{ - Default - { - //$Title 2x Black Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsFuck.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - } -} -Class BlackShell4 : BlackShell -{ - Default - { - //$Title 4x Black Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsFuck.png - //$Icon ammo - Inventory.Amount 4; - Radius 6; - } -} - -Class PurpleShell : SWWMAmmo -{ - Default - { - //$Title 1x Purple Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsBall.png - //$Icon ammo - Tag "$T_PURPLESHELL"; - SWWMAmmo.PickupTag "PURPLESHELL"; - Stamina 1500; - Inventory.Icon "graphics/HUD/Icons/A_ShellsBall.png"; - Inventory.Amount 1; - Inventory.MaxAmount 20; - Ammo.BackpackAmount 1; - Ammo.BackpackMaxAmount 40; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 20; - Accuracy 60; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class PurpleShell2 : PurpleShell -{ - Default - { - //$Title 2x Purple Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsBall.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - } -} -Class PurpleShell4 : PurpleShell -{ - Default - { - //$Title 4x Purple Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsBall.png - //$Icon ammo - Inventory.Amount 4; - Radius 6; - } -} - -Class GoldShellSparkle : Actor +Class GoldShellSparkle : SWWMNonInteractiveActor { override void PostBeginPlay() { @@ -340,6 +54,11 @@ Class GoldShellSparkle : Actor } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; SetOrigin(Vec3Offset(0,0,vel.z),true); alpha -= .02; @@ -347,15 +66,9 @@ Class GoldShellSparkle : Actor } Default { - RenderStyle "Add"; + RenderStyle 'Add'; Scale 0.05; - +NOGRAVITY; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - +NOTELEPORT; +FORCEXYBILLBOARD; - FloatBobPhase 0; } States { @@ -370,30 +83,20 @@ Class GoldShell : SWWMAmmo action void A_GoldShellTrail() { if ( Random[Goldy](0,2) ) return; - Spawn("GoldShellSparkle",Vec3Offset(FRandom[Goldy](-radius,radius)/2.,FRandom[Goldy](-radius,radius)/2.,FRandom[Goldy](10,18))); + Spawn('GoldShellSparkle',Vec3Offset(FRandom[Goldy](-radius,radius)/2.,FRandom[Goldy](-radius,radius)/2.,FRandom[Goldy](10,18))); } Default { - //$Title 1x Gold Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsGold.png - //$Icon ammo Tag "$T_GOLDSHELL"; SWWMAmmo.PickupTag "GOLDSHELL"; Inventory.PickupSound "misc/ammo_pkup_vip"; Stamina -1000000; - Inventory.Icon "graphics/HUD/Icons/A_ShellsGold.png"; Inventory.Amount 1; Inventory.MaxAmount 7; Ammo.BackpackAmount 0; Ammo.BackpackMaxAmount 7; Ammo.DropAmount 1; - +FLOATBOB; - +DONTGIB; // don't crush these, they're valuable - FloatBobStrength 0.25; - Radius 4; - Height 20; } States { @@ -402,30 +105,6 @@ Class GoldShell : SWWMAmmo Wait; } } -Class GoldShell2 : GoldShell -{ - Default - { - //$Title 2x Gold Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsGold.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - } -} -Class GoldShell4 : GoldShell -{ - Default - { - //$Title 4x Gold Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsGold.png - //$Icon ammo - Inventory.Amount 4; - Radius 6; - } -} // ============================================================================ // Eviscerator ammo @@ -435,25 +114,16 @@ Class EvisceratorShell : SWWMAmmo { Default { - //$Title Eviscerator Shell - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_Eviscerator.png - //$Icon ammo Tag "$T_EVISHELL"; SWWMAmmo.PickupTag "EVISHELL"; Inventory.PickupMessage "$T_EVISHELL"; Stamina 3000; - Inventory.Icon "graphics/HUD/Icons/A_Eviscerator.png"; Inventory.Amount 1; - Inventory.MaxAmount 20; + Inventory.MaxAmount 40; Ammo.BackpackAmount 3; - Ammo.BackpackMaxAmount 50; + Ammo.BackpackMaxAmount 80; Ammo.DropAmount 1; - +FLOATBOB; +SWWMAMMO.USEPICKUPMSG; - FloatBobStrength 0.25; - Radius 8; - Height 22; Accuracy 60; } override void ModifyDropAmount( int dropamount ) @@ -472,26 +142,16 @@ Class EvisceratorShell2 : EvisceratorShell { Default { - //$Title Eviscerator Dual Clip - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_Eviscerator.png - //$Icon ammo Inventory.PickupMessage "$I_EVISHELLCLIP2"; Inventory.Amount 2; - Radius 16; } } Class EvisceratorShell3 : EvisceratorShell { Default { - //$Title Eviscerator Triple Clip - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_Eviscerator.png - //$Icon ammo Inventory.PickupMessage "$I_EVISHELLCLIP3"; Inventory.Amount 3; - Radius 16; } } @@ -499,14 +159,8 @@ Class EvisceratorSixPack : EvisceratorShell { Default { - //$Title Eviscerator Six-Pack - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_Eviscerator.png - //$Icon ammo Inventory.PickupMessage "$I_EVISHELLPAK"; Inventory.Amount 6; - Radius 20; - Height 24; } } @@ -518,23 +172,14 @@ Class HellblazerMissiles : SWWMAmmo { Default { - //$Title Hellblazer Missile - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerMissile.png - //$Icon ammo Tag "$T_HELLMISSILE"; SWWMAmmo.PickupTag "HELLMISSILE"; Stamina 8000; - Inventory.Icon "graphics/HUD/Icons/A_HellblazerMissile.png"; Inventory.Amount 1; - Inventory.MaxAmount 18; - Ammo.BackpackAmount 2; - Ammo.BackpackMaxAmount 36; + Inventory.MaxAmount 24; + Ammo.BackpackAmount 3; + Ammo.BackpackMaxAmount 72; Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 6; - Height 22; Accuracy 70; } override void ModifyDropAmount( int dropamount ) @@ -553,10 +198,6 @@ Class HellblazerMissiles2 : HellblazerMissiles { Default { - //$Title 2x Hellblazer Missile - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerMissile.png - //$Icon ammo Inventory.Amount 2; } } @@ -564,10 +205,6 @@ Class HellblazerMissiles3 : HellblazerMissiles { Default { - //$Title 3x Hellblazer Missile - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerMissile.png - //$Icon ammo Inventory.Amount 3; } } @@ -575,164 +212,9 @@ Class HellblazerMissileMag : HellblazerMissiles { Default { - //$Title Hellblazer Missile Mag - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerMissile.png - //$Icon ammo Inventory.PickupMessage "$T_HELLMISSILEMAG"; Inventory.Amount 6; +SWWMAMMO.USEPICKUPMSG; - Radius 12; - Height 26; - } -} - -Class HellblazerCrackshots : SWWMAmmo -{ - Default - { - //$Title Hellblazer Crackshot - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerCrackshot.png - //$Icon ammo - Tag "$T_HELLCLUSTER"; - SWWMAmmo.PickupTag "HELLCLUSTER"; - Stamina 15000; - Inventory.Icon "graphics/HUD/Icons/A_HellblazerCrackshot.png"; - Inventory.Amount 1; - Inventory.MaxAmount 12; - Ammo.BackpackAmount 1; - Ammo.BackpackMaxAmount 30; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 6; - Height 22; - Accuracy 75; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class HellblazerCrackshots2 : HellblazerCrackshots -{ - Default - { - //$Title 2x Hellblazer Crackshots - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerCrackshot.png - //$Icon ammo - Inventory.Amount 2; - } -} -Class HellblazerCrackshotMag : HellblazerCrackshots -{ - Default - { - //$Title Hellblazer Crackshot Mag - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerCrackshot.png - //$Icon ammo - Inventory.PickupMessage "$T_HELLCLUSTERMAG"; - Inventory.Amount 3; - +SWWMAMMO.USEPICKUPMSG; - Radius 12; - Height 26; - } -} - -Class HellblazerRavagers : SWWMAmmo -{ - Default - { - //$Title Hellblazer Ravager - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerRavager.png - //$Icon ammo - Tag "$T_HELLBURNINATOR"; - SWWMAmmo.PickupTag "HELLBURNINATOR"; - Stamina 25000; - Inventory.Icon "graphics/HUD/Icons/A_HellblazerRavager.png"; - Inventory.Amount 1; - Inventory.MaxAmount 6; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 18; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 6; - Height 22; - Accuracy 80; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class HellblazerRavagerMag : HellblazerRavagers -{ - Default - { - //$Title Hellblazer Ravager Mag - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerRavager.png - //$Icon ammo - Inventory.PickupMessage "$T_HELLBURNINATORMAG"; - Inventory.Amount 3; - +SWWMAMMO.USEPICKUPMSG; - Radius 12; - Height 26; - } -} - -Class HellblazerWarheads : SWWMAmmo -{ - Default - { - //$Title Hellblazer Warhead - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerWarhead.png - //$Icon ammo - Tag "$T_HELLNUKE"; - SWWMAmmo.PickupTag "HELLNUKE"; - Stamina 40000; - Inventory.Icon "graphics/HUD/Icons/A_HellblazerWarhead.png"; - Inventory.Amount 1; - Inventory.MaxAmount 2; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 8; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 6; - Height 22; - Accuracy 85; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class HellblazerWarheadMag : HellblazerWarheads -{ - Default - { - //$Title Hellblazer Warhead Mag - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_HellblazerWarhead.png - //$Icon ammo - Inventory.PickupMessage "$T_HELLNUKEMAG"; - Inventory.Amount 2; - +SWWMAMMO.USEPICKUPMSG; - Radius 12; - Height 26; } } @@ -744,23 +226,14 @@ Class SparkUnit : SWWMAmmo { Default { - //$Title Spark Unit - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_Sparkster.png - //$Icon ammo Tag "$T_SPARKUNIT"; SWWMAmmo.PickupTag "SPARKUNIT"; Stamina 50000; - Inventory.Icon "graphics/HUD/Icons/A_Sparkster.png"; Inventory.Amount 1; Inventory.MaxAmount 8; Ammo.BackpackAmount 1; Ammo.BackpackMaxAmount 24; Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 6; - Height 22; Accuracy 70; } States @@ -774,12 +247,7 @@ Class SparkUnit2 : SparkUnit { Default { - //$Title 2x Spark Unit - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_Sparkster.png - //$Icon ammo Inventory.Amount 2; - Radius 8; } } @@ -791,24 +259,15 @@ Class SilverBulletAmmo : SWWMAmmo { Default { - //$Title Silver Bullet Mag (XSB) - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SilverBullet.png - //$Icon ammo Tag "$T_XSBMAG"; SWWMAmmo.PickupTag "XSBMAG"; Stamina 70000; - Inventory.Icon "graphics/HUD/Icons/A_SilverBullet.png"; Inventory.Amount 1; - Inventory.MaxAmount 3; + Inventory.MaxAmount 4; Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 6; + Ammo.BackpackMaxAmount 9; Ammo.DropAmount 1; - SWWMAmmo.MagAmmoType "SilverBullets"; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 10; - Height 26; + SWWMAmmo.MagAmmoType 'SilverBullets'; Accuracy 75; } States @@ -819,56 +278,17 @@ Class SilverBulletAmmo : SWWMAmmo } } -Class SilverBulletAmmo2 : SWWMAmmo -{ - Default - { - //$Title Silver Bullet Mag (FCB) - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SilverBullet2.png - //$Icon ammo - Tag "$T_FCBMAG"; - SWWMAmmo.PickupTag "FCBMAG"; - Stamina 80000; - Inventory.Icon "graphics/HUD/Icons/A_SilverBullet2.png"; - Inventory.Amount 1; - Inventory.MaxAmount 2; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 4; - Ammo.DropAmount 1; - SWWMAmmo.MagAmmoType "SilverBullets2"; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 10; - Height 26; - Accuracy 80; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} - Class SilverBullets : MagAmmo { Default { - //$Title Silver Bullet Round (XSB) - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SilverBulletBullet.png - //$Icon ammo Tag "$T_XSBBULLET"; MagAmmo.PickupTag "XSBBULLET"; - Inventory.Icon "graphics/HUD/Icons/A_SilverBulletBullet.png"; - MagAmmo.ParentAmmo "SilverBulletAmmo"; + Stamina -12000; + MagAmmo.ParentAmmo 'SilverBulletAmmo'; MagAmmo.ClipSize 5; - Inventory.MaxAmount 8; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 22; + MagAmmo.BackpackAmount 2; + Inventory.MaxAmount 5; } States { @@ -877,82 +297,18 @@ Class SilverBullets : MagAmmo Stop; } } -Class SilverBullets_2 : SilverBullets +Class SilverBullets2 : SilverBullets { Default { - //$Title 2x Silver Bullet Round (XSB) - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SilverBulletBullet.png - //$Icon ammo Inventory.Amount 2; - Radius 6; - Height 24; } } -Class SilverBullets_3 : SilverBullets +Class SilverBullets3 : SilverBullets { Default { - //$Title 3x Silver Bullet Round (XSB) - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SilverBulletBullet.png - //$Icon ammo Inventory.Amount 3; - Radius 6; - Height 24; - } -} -Class SilverBullets2 : MagAmmo -{ - Default - { - //$Title Silver Bullet Round (FCB) - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SilverBulletBullet2.png - //$Icon ammo - Tag "$T_FCBBULLET"; - MagAmmo.PickupTag "FCBBULLET"; - Inventory.Icon "graphics/HUD/Icons/A_SilverBulletBullet2.png"; - MagAmmo.ParentAmmo "SilverBulletAmmo2"; - MagAmmo.ClipSize 5; - Inventory.MaxAmount 8; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 22; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class SilverBullets2_2 : SilverBullets2 -{ - Default - { - //$Title 2x Silver Bullet Round (FCB) - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SilverBulletBullet2.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - Height 24; - } -} -Class SilverBullets2_3 : SilverBullets2 -{ - Default - { - //$Title 3x Silver Bullet Round (FCB) - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_SilverBulletBullet2.png - //$Icon ammo - Inventory.Amount 3; - Radius 6; - Height 24; } } @@ -964,24 +320,15 @@ Class CandyGunAmmo : SWWMAmmo { Default { - //$Title Candy Gun Mag - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_CandyGun.png - //$Icon ammo Tag "$T_CANDYMAG"; SWWMAmmo.PickupTag "CANDYMAG"; Stamina 100000; - Inventory.Icon "graphics/HUD/Icons/A_CandyGun.png"; Inventory.Amount 1; Inventory.MaxAmount 1; Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 4; + Ammo.BackpackMaxAmount 3; Ammo.DropAmount 1; - SWWMAmmo.MagAmmoType "CandyGunBullets"; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 6; - Height 24; + SWWMAmmo.MagAmmoType 'CandyGunBullets'; Accuracy 90; } States @@ -996,20 +343,13 @@ Class CandyGunBullets : MagAmmo { Default { - //$Title Candy Gun Round - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_CandyBullet.png - //$Icon ammo Tag "$T_CANDYBULLET"; MagAmmo.PickupTag "CANDYBULLET"; - Inventory.Icon "graphics/HUD/Icons/A_CandyBullet.png"; - MagAmmo.ParentAmmo "CandyGunAmmo"; + Stamina -14000; + MagAmmo.ParentAmmo 'CandyGunAmmo'; MagAmmo.ClipSize 7; - Inventory.MaxAmount 10; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 2; - Height 20; + MagAmmo.BackpackAmount 1; + Inventory.MaxAmount 7; } States { @@ -1022,24 +362,14 @@ Class CandyGunBullets2 : CandyGunBullets { Default { - //$Title 2x Candy Gun Round - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_CandyBullet.png - //$Icon ammo Inventory.Amount 2; - Radius 2.5; } } Class CandyGunBullets3 : CandyGunBullets { Default { - //$Title 2x Candy Gun Round - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_CandyBullet.png - //$Icon ammo Inventory.Amount 3; - Radius 3; } } @@ -1050,11 +380,10 @@ Class CandyGunSpares : SWWMAmmo Tag "$T_CANDYSPARE"; SWWMAmmo.PickupTag "CANDYSPARE"; Stamina 600000; - Inventory.Icon "graphics/HUD/Icons/W_CandyGun.png"; Inventory.Amount 1; - Inventory.MaxAmount 4; + Inventory.MaxAmount 3; Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 4; + Ammo.BackpackMaxAmount 3; } override Inventory CreateTossable( int amt ) { @@ -1075,6 +404,26 @@ Class CandyGunSpares : SWWMAmmo } return null; } + override void DoEffect() + { + Super.DoEffect(); + if ( !Owner ) return; + // auto-give an empty gun if the player does not own one + if ( Owner.FindInventory('CandyGun') || (Amount <= 0) ) return; + // don't do this if the player owns a Mortal Rifle and swapweapons are enabled + if ( Owner.FindInventory('MisterRifle') && swwm_swapweapons ) return; + Amount--; + let g = CandyGun(Spawn('CandyGun')); + g.bInitialized = true; + g.ammogive1 = 0; + g.ammogive2 = 0; + g.clipcount = 0; + g.chambered = false; + g.AttachToOwner(Owner); + // make sure it doesn't autoswitch if empty + if ( !g.ReportHUDAmmo() && (Owner.player.PendingWeapon == g) ) + Owner.player.PendingWeapon = WP_NOCHANGE; + } } // ============================================================================ @@ -1085,24 +434,15 @@ Class YnykronAmmo : SWWMAmmo { Default { - //$Title Ynykron Ammo - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_Ynykron.png - //$Icon ammo Tag "$T_YNYKRONAMMO"; SWWMAmmo.PickupTag "YNYKRONAMMO"; Inventory.PickupSound "misc/ammo_pkup_vip"; Stamina -3000000; - Inventory.Icon "graphics/HUD/Icons/A_Ynykron.png"; Inventory.Amount 1; Inventory.MaxAmount 1; Ammo.BackpackAmount 0; Ammo.BackpackMaxAmount 3; Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 8; - Height 24; } States { diff --git a/zscript/items/swwm_ammospawn.zsc b/zscript/items/swwm_ammospawn.zsc index b17023be9..f013ee1c8 100644 --- a/zscript/items/swwm_ammospawn.zsc +++ b/zscript/items/swwm_ammospawn.zsc @@ -1,14 +1,9 @@ // on-demand ammo spawners -Mixin Class SWWMOndemandAmmoSpawner +// Ref class for ammo spawners, used by on-demand replacers +Class SWWMAmmoSpawner : Inventory abstract { Actor dropper; bool enemydrop; - int dropamount; - - override void ModifyDropAmount( int amt ) - { - dropamount = amt; - } override bool SpecialDropAction( Actor dropper ) { @@ -16,10 +11,11 @@ Mixin Class SWWMOndemandAmmoSpawner enemydrop = true; return false; } + abstract Class PickAmmo( bool enemydrop = false ); - override void SpawnAmmo() + void SpawnAmmo() { - let ac = PickAmmo(); + let ac = PickAmmo(enemydrop); if ( !ac ) return; let a = Spawn(ac,pos); if ( enemydrop ) @@ -32,6 +28,7 @@ Mixin Class SWWMOndemandAmmoSpawner { let i = Inventory(a); i.bTossed = true; + i.ModifyDropAmount(i.Amount); if ( i.SpecialDropAction(dropper) ) { i.Destroy(); @@ -41,206 +38,189 @@ Mixin Class SWWMOndemandAmmoSpawner } SWWMUtility.TransferItemProp(self,a); } -} + override void PostBeginPlay() + { + SpawnAmmo(); + ClearCounters(); + Destroy(); + } + + override bool CanPickup( Actor toucher ) + { + return false; + } + + override bool TryPickup( Actor &toucher ) + { + return false; + } + + default + { + +NOGRAVITY; + +NOTELEPORT; + +DONTSPLASH; + +DONTGIB; + -SPECIAL; + } +} Class SWWMShellAmmoSmall : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) - return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05Ammo3';*/ - switch( Random[Replacements](0,9) ) - { - case 0: - case 1: - case 2: - return 'RedShell'; - case 3: - case 4: - case 5: - return 'GreenShell'; - case 6: - case 7: - return 'PurpleShell'; - } - // case 8-9 - return 'BlueShell'; + /*bool aex = (SWWMUtility.ItemExists('Spreadgun',ownedonly:enemydrop)||SWWMUtility.ItemExists('Wallbuster',ownedonly:enemydrop)), + bex = (SWWMUtility.ItemExists('PuntzerBeta',ownedonly:enemydrop)||SWWMUtility.ItemExists('PuntzerGamma',ownedonly:enemydrop)); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return Random[Replacements](0,2)?'SMW05Ammo2':'SMW05Ammo3';*/ + return Random[Replacements](0,2)?'RedShell':'RedShell2'; } } Class SWWMShellAmmoBig : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) - return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BigAmmo';*/ - switch( Random[Replacements](0,17) ) - { - case 0: - case 1: - case 2: - case 3: - return 'RedShell2'; - case 4: - case 5: - case 6: - case 7: - return 'GreenShell2'; - case 8: - case 9: - case 10: - return 'PurpleShell'; - case 11: - case 12: - case 13: - return 'BlueShell'; - case 14: - case 15: - return 'WhiteShell'; - } - // case 16-17 - return 'BlackShell'; + /*bool aex = (SWWMUtility.ItemExists('Spreadgun',ownedonly:enemydrop)||SWWMUtility.ItemExists('Wallbuster',ownedonly:enemydrop)), + bex = (SWWMUtility.ItemExists('PuntzerBeta',ownedonly:enemydrop)||SWWMUtility.ItemExists('PuntzerGamma',ownedonly:enemydrop)); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return Random[Replacements](0,3)?'SMW05SmallAmmo':'SMW05BigAmmo';*/ + return Random[Replacements](0,3)?'RedShell4':'RedShell6'; } } Class SWWMClipAmmoSmall : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - if ( !Random[Replacements](0,4) ) - { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenAmmo3':'SheenTinyAmmo';*/ - if ( notondemand || SWWMUtility.ItemExists('Eviscerator') ) - return 'EvisceratorShell'; - } - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) - return Random[Replacements](0,2)?'SMW05Ammo':'SMW05Ammo2';*/ - return Random[Replacements](0,1)?'RedShell':'GreenShell'; + bool aex = SWWMUtility.ItemExists('Eviscerator',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('HeavyMahSheenGun',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return Random[Replacements](0,1)?'SheenAmmo2':'SheenAmmo3'; + if ( aex ) return 'EvisceratorShell'; + /*aex = (SWWMUtility.ItemExists('Spreadgun',ownedonly:enemydrop)||SWWMUtility.ItemExists('Wallbuster',ownedonly:enemydrop)); + bex = (SWWMUtility.ItemExists('PuntzerBeta',ownedonly:enemydrop)||SWWMUtility.ItemExists('PuntzerGamma',ownedonly:enemydrop)); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return Random[Replacements](0,1)?'SMW05Ammo':'SMW05Ammo2';*/ + return 'RedShell'; + } +} +// special for chaingun ammo drops +Class SWWMClipAmmoMed : SWWMAmmoSpawner +{ + override Class PickAmmo( bool enemydrop ) + { + bool aex = SWWMUtility.ItemExists('Eviscerator',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('HeavyMahSheenGun',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return Random[Replacements](0,2)?'SheenAmmo3':'SheenSmallAmmo'; + return Random[Replacements](0,2)?'EvisceratorShell':'EvisceratorShell2'; } } Class SWWMClipAmmoBig : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo';*/ - return Random[Replacements](0,5)?'EvisceratorShell':Random[Replacements](0,2)?'EvisceratorShell2':'EvisceratorShell3'; + bool aex = SWWMUtility.ItemExists('Eviscerator',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('HeavyMahSheenGun',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return Random[Replacements](0,1)?'SheenSmallAmmo':'SheenBigAmmo'; + return Random[Replacements](0,1)?'EvisceratorShell2':'EvisceratorShell3'; } } Class SWWMBlastAmmoSmall : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenTinyAmmo';*/ + bool aex = SWWMUtility.ItemExists('Eviscerator',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('HeavyMahSheenGun',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return 'SheenSmallAmmo'; return 'EvisceratorShell'; } } Class SWWMBlastAmmoBig : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenBigAmmo':'SheenSmallAmmo';*/ - return Random[Replacements](0,2)?'EvisceratorShell':Random[Replacements](0,1)?'EvisceratorShell2':'EvisceratorShell3'; + bool aex = SWWMUtility.ItemExists('Eviscerator',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('HeavyMahSheenGun',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return 'SheenBigAmmo'; + return 'EvisceratorShell3'; } } Class SWWMRocketAmmoSmall : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) return 'QuadravolAmmo';*/ - return Random[Replacements](0,2)?'HellblazerMissiles':'HellblazerCrackshots'; + bool aex = SWWMUtility.ItemExists('Hellblazer',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('Quadravol',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) return 'QuadravolAmmo'; + return 'HellblazerMissiles'; } } Class SWWMRocketAmmoBig : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) - return Random[Replacements](0,4)?'QuadravolAmmo2':'QuadravolAmmo3';*/ - switch ( Random[Replacements](0,11) ) - { - case 0: - case 1: - case 2: - case 3: - case 4: - return Random[Replacements](0,4)?'HellblazerMissiles':'HellblazerMissiles2'; - case 5: - case 6: - case 7: - case 8: - return Random[Replacements](0,7)?'HellblazerCrackshots':'HellblazerCrackshots2'; - case 9: - case 10: - return 'HellblazerRavagers'; - } - // case 11 - return 'HellblazerWarheads'; + bool aex = SWWMUtility.ItemExists('Hellblazer',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('Quadravol',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) + return Random[Replacements](0,3)?'QuadravolAmmo2':'QuadravolAmmo3'; + return Random[Replacements](0,3)?'HellblazerMissiles2':'HellblazerMissiles3'; } } Class SWWMCellAmmoSmall : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { - /*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('RayKhom') || SWWMUtility.ItemExists('GrandLance')) ) return 'RayBattery';*/ if ( !Random[Replacements](0,2) ) { - if ( !Random[Replacements](0,3) ) - { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RayKhom')) ) return 'RayBolt2';*/ - if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return 'CandyGunBullets'; - } - /*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return 'MisterGAmmo';*/ - if ( notondemand || SWWMUtility.ItemExists('SilverBullet') ) return Random[Replacements](0,2)?'SilverBullets':'SilverBullets2'; + bool aex = SWWMUtility.ItemExists('CandyGun',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('MisterRifle',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) return Random[Replacements](0,2)?'MisterRound':'MisterRound2'; + if ( aex ) return 'CandyGunBullets'; } - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo';*/ + if ( Random[Replacements](0,1) ) + { + bool aex = SWWMUtility.ItemExists('SilverBullet',ownedonly:enemydrop)/*, + bex = SWWMUtility.ItemExists('RayKhom',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) return Random[Replacements](0,2)?'RayBolt':'RayBolt2'*/; + if ( aex ) return Random[Replacements](0,2)?'SilverBullets':'SilverBullets2'; + } + /*bool aex = SWWMUtility.ItemExists('Sparkster',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('ModernSparkster',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo';*/ return 'SparkUnit'; } } Class SWWMCellAmmoBig : SWWMAmmoSpawner { - Mixin SWWMOndemandAmmoSpawner; - - static Class PickAmmo( bool notondemand = false ) + override Class PickAmmo( bool enemydrop ) { if ( !Random[Replacements](0,3) ) { - //if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RafanKos')) && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && !SWWMUtility.ItemExists('UltimateAmmo',worldonly:true) && !SWWMUtility.ItemExists('RafanKos',worldonly:true) ) - // return 'UltimateAmmo'; - if ( (notondemand || SWWMUtility.ItemExists('Ynykron')) && SWWMUtility.CheckNeedsItem('YnykronAmmo',true) && !SWWMUtility.ItemExists('YnykronAmmo',worldonly:true) && !SWWMUtility.ItemExists('Ynykron',worldonly:true) ) + /*if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('RafanKos') && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && !SWWMUtility.ItemExists('UltimateAmmo',worldonly:true) && !SWWMUtility.ItemExists('RafanKos',worldonly:true) ) + return 'UltimateAmmo';*/ + if ( (SWWMUtility.ItemExists('Ynykron')) && SWWMUtility.CheckNeedsItem('YnykronAmmo',true) && !SWWMUtility.ItemExists('YnykronAmmo',worldonly:true) && !SWWMUtility.ItemExists('Ynykron',worldonly:true) ) return 'YnykronAmmo'; } - /*if ( Random[Replacements](0,1) ) + if ( !Random[Replacements](0,2) ) { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return Random[Replacements](0,2)?'MisterRound5':'MisterAmmo'; - if ( notondemand || SWWMUtility.ItemExists('RayKhom') ) return Random[Replacements](0,2)?'RayBolt5':'RayAmmo'; - }*/ - if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('SilverBullet')) ) - { - if ( Random[Replacements](0,3) ) return Random[Replacements](0,2)?'SilverBullets_2':'SilverBullets2_2'; - return Random[Replacements](0,2)?'SilverBulletAmmo':'SilverBulletAmmo2'; + bool aex = SWWMUtility.ItemExists('CandyGun',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('MisterRifle',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) return !Random[Replacements](0,2)?'MisterGAmmo':Random[Replacements](0,3)?'MisterRound3':'MisterRound5'; + if ( aex ) return Random[Replacements](0,3)?'CandyGunBullets2':'CandyGunBullets3'; } - if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,3)?'CandyGunBullets3':'CandyGunAmmo'; - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) + if ( Random[Replacements](0,1) ) + { + bool aex = SWWMUtility.ItemExists('SilverBullet',ownedonly:enemydrop)/*, + bex = SWWMUtility.ItemExists('RayKhom',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) return Random[Replacements](0,2)?'RayBolt2':'RayBolt5'*/; + if ( aex ) return Random[Replacements](0,3)?'SilverBullets2':'SilverBullets3'; + } + /*bool aex = SWWMUtility.ItemExists('Sparkster',ownedonly:enemydrop), + bex = SWWMUtility.ItemExists('ModernSparkster',ownedonly:enemydrop); + if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) { if ( Random[Replacements](0,1) ) return Random[Replacements](0,2)?'SparksterBAmmo2':'SparksterBAmmo3'; return Random[Replacements](0,2)?'SparksterRAmmo2':'SparksterRAmmo3'; diff --git a/zscript/items/swwm_armor.zsc b/zscript/items/swwm_armor.zsc index 38da632f8..4b51ee099 100644 --- a/zscript/items/swwm_armor.zsc +++ b/zscript/items/swwm_armor.zsc @@ -4,11 +4,11 @@ Class ArmorNugget : SWWMArmor Default { Inventory.Icon "graphics/HUD/Icons/I_ArmorNugget.png"; - Inventory.Amount 1; + Inventory.Amount 5; Inventory.MaxAmount 200; Inventory.InterHubAmount 200; SWWMArmor.ArmorPriority 3; - SWWMArmor.GiverArmor "ArmorNuggetItem"; + SWWMArmor.GiverArmor 'ArmorNuggetItem'; } override int HandleDamage( int damage, Name damageType, int flags ) @@ -19,11 +19,24 @@ Class ArmorNugget : SWWMArmor } Class ArmorNuggetItem : SWWMSpareArmor { - override Inventory CreateCopy( Actor other ) + override bool Use( bool pickup ) { // additional lore - SWWMLoreLibrary.Add(other.player,"Nugget"); - return Super.CreateCopy(other); + SWWMLoreLibrary.Add(Owner.player,"Nugget"); + bool bUsed = Super.Use(pickup); + // sell excess + if ( !bUsed && Owner.player ) + { + int sellprice = abs(Stamina)/2; + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner); + Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + } + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } + return bUsed; } override void DoPickupSpecial( Actor toucher ) @@ -34,21 +47,14 @@ Class ArmorNuggetItem : SWWMSpareArmor Default { - //$Title Armor Nugget - //$Group Armor - //$Sprite graphics/HUD/Icons/I_ArmorNugget.png - //$Icon armour Tag "$T_NUGGETA"; - Stamina 400; - Inventory.Icon "graphics/HUD/Icons/I_ArmorNugget.png"; + Stamina -1200; Inventory.PickupMessage "$T_NUGGETA"; - Inventory.MaxAmount 20; - Inventory.InterHubAmount 20; + Inventory.MaxAmount 0; + Inventory.InterHubAmount 0; Inventory.UseSound "misc/armor_pkup"; - SWWMSpareArmor.GiveArmor "ArmorNugget"; + SWWMSpareArmor.GiveArmor 'ArmorNugget'; +INVENTORY.ALWAYSPICKUP; - Radius 4; - Height 22; } States { @@ -72,10 +78,10 @@ Class BlastSuit : SWWMArmor Inventory.Amount 150; Inventory.MaxAmount 150; Inventory.InterHubAmount 150; - Inventory.RestrictedTo "Demolitionist"; + Inventory.RestrictedTo 'Demolitionist'; SWWMArmor.ArmorPriority 4; SWWMArmor.DrainMessage "$D_BLASTSUIT"; - SWWMArmor.GiverArmor "BlastSuitItem"; + SWWMArmor.GiverArmor 'BlastSuitItem'; } override int HandleDamage( int damage, Name damageType, int flags ) @@ -85,37 +91,6 @@ Class BlastSuit : SWWMArmor return int(ceil(damage*factor)); } } -Class BlastSuitItem : SWWMSpareArmor -{ - override Inventory CreateCopy( Actor other ) - { - // additional lore - SWWMLoreLibrary.Add(other.player,"BlastSuit"); - return Super.CreateCopy(other); - } - Default - { - //$Title Blast Suit - //$Group Armor - //$Sprite graphics/HUD/Icons/I_BlastSuit.png - //$Icon armour - Tag "$T_BLASTSUIT"; - Stamina 40000; - Inventory.Icon "graphics/HUD/Icons/I_BlastSuit.png"; - Inventory.PickupMessage "$T_BLASTSUIT"; - Inventory.UseSound "armor/blastsuit"; - Inventory.RestrictedTo "Demolitionist"; - SWWMSpareArmor.GiveArmor "BlastSuit"; - Radius 12; - Height 30; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} Class WarArmor : SWWMArmor { @@ -125,10 +100,10 @@ Class WarArmor : SWWMArmor Inventory.Amount 250; Inventory.MaxAmount 250; Inventory.InterHubAmount 250; - Inventory.RestrictedTo "Demolitionist"; + Inventory.RestrictedTo 'Demolitionist'; SWWMArmor.ArmorPriority 5; SWWMArmor.DrainMessage "$D_WARARMOR"; - SWWMArmor.GiverArmor "WarArmorItem"; + SWWMArmor.GiverArmor 'WarArmorItem'; } override int HandleDamage( int damage, Name damageType, int flags ) @@ -141,34 +116,3 @@ Class WarArmor : SWWMArmor return int(ceil(damage*factor)); } } -Class WarArmorItem : SWWMSpareArmor -{ - override Inventory CreateCopy( Actor other ) - { - // additional lore - SWWMLoreLibrary.Add(other.player,"WarArmor"); - return Super.CreateCopy(other); - } - Default - { - //$Title War Armor - //$Group Armor - //$Sprite graphics/HUD/Icons/I_WarArmor.png - //$Icon armour - Tag "$T_WARARMOR"; - Stamina 100000; - Inventory.Icon "graphics/HUD/Icons/I_WarArmor.png"; - Inventory.PickupMessage "$T_WARARMOR"; - Inventory.UseSound "armor/wararmor"; - Inventory.RestrictedTo "Demolitionist"; - SWWMSpareArmor.GiveArmor "WarArmor"; - Radius 16; - Height 32; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} diff --git a/zscript/items/swwm_armor_filtered.zsc b/zscript/items/swwm_armor_filtered.zsc new file mode 100644 index 000000000..bdfdc7bd7 --- /dev/null +++ b/zscript/items/swwm_armor_filtered.zsc @@ -0,0 +1,55 @@ +// In Hexen, armors have +NOGRAVITY as a default flag +// unfortunately there is no better way to do that than to +// duplicate this whole file and putting it in a filter + +Class BlastSuitItem : SWWMSpareArmor +{ + override Inventory CreateCopy( Actor other ) + { + // additional lore + SWWMLoreLibrary.Add(other.player,"BlastSuit"); + return Super.CreateCopy(other); + } + Default + { + Tag "$T_BLASTSUIT"; + Stamina 40000; + Inventory.Icon "graphics/HUD/Icons/I_BlastSuit.png"; + Inventory.PickupMessage "$T_BLASTSUIT"; + Inventory.UseSound "armor/blastsuit"; + Inventory.RestrictedTo 'Demolitionist'; + SWWMSpareArmor.GiveArmor 'BlastSuit'; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} + +Class WarArmorItem : SWWMSpareArmor +{ + override Inventory CreateCopy( Actor other ) + { + // additional lore + SWWMLoreLibrary.Add(other.player,"WarArmor"); + return Super.CreateCopy(other); + } + Default + { + Tag "$T_WARARMOR"; + Stamina 100000; + Inventory.Icon "graphics/HUD/Icons/I_WarArmor.png"; + Inventory.PickupMessage "$T_WARARMOR"; + Inventory.UseSound "armor/wararmor"; + Inventory.RestrictedTo 'Demolitionist'; + SWWMSpareArmor.GiveArmor 'WarArmor'; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/zscript/items/swwm_baseammo.zsc b/zscript/items/swwm_baseammo.zsc index 25ef5a965..b59a93004 100644 --- a/zscript/items/swwm_baseammo.zsc +++ b/zscript/items/swwm_baseammo.zsc @@ -4,11 +4,12 @@ Class SWWMAmmo : Ammo Mixin SWWMOverlapPickupSound; Mixin SWWMUseToPickup; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; - String PickupTag; - Class MagAmmoType; + meta String PickupTag; + meta Class MagAmmoType; private int SAmmoFlags; - transient bool bSinglePrint; // used for pickup messages of mag manager Property PickupTag : PickupTag; Property MagAmmoType : MagAmmoType; @@ -18,7 +19,7 @@ Class SWWMAmmo : Ammo override Class GetParentAmmo() { Class type = GetClass(); - while ( (type.GetParentClass() != "SWWMAmmo") && type.GetParentClass() ) + while ( (type.GetParentClass() != 'SWWMAmmo') && type.GetParentClass() ) type = type.GetParentClass(); return (Class)(type); } @@ -27,12 +28,11 @@ Class SWWMAmmo : Ammo { if ( bUsePickupMsg ) return Super.PickupMessage(); String tagstr = "$T_"..PickupTag; - if ( (Amount > 1) && !bSinglePrint ) + if ( Amount > 1 ) { tagstr = tagstr.."S"; return String.Format("%d %s",Amount,StringTable.Localize(tagstr)); } - bSinglePrint = false; return StringTable.Localize(tagstr); } @@ -113,10 +113,10 @@ Class SWWMAmmo : Ammo // enumerate all subclasses Array > ammotypes; ammotypes.Clear(); - for ( int i=0; i)(AllActorClasses[i])); + if ( cls is GetParentAmmo() ) + ammotypes.Push((Class)(cls)); } // sort from largest to smallest qsort_ammotypes(ammotypes,0,ammotypes.Size()-1); @@ -124,12 +124,12 @@ Class SWWMAmmo : Ammo Inventory last = null; while ( amt > 0 ) { - for ( int i=0; i= def.Amount ) { - last = DoDrop(ammotypes[i]); + last = DoDrop(type); amt -= def.Amount; Amount -= def.Amount; break; @@ -142,7 +142,7 @@ Class SWWMAmmo : Ammo override bool HandlePickup( Inventory item ) { // drop excess ammo - if ( (item is 'Ammo') && (Ammo(item).GetParentAmmo() == GetParentAmmo()) ) + if ( !bUNDROPPABLE && !bUNTOSSABLE && (item is 'Ammo') && (Ammo(item).GetParentAmmo() == GetParentAmmo()) ) { int excess = Amount+item.Amount; if ( excess > MaxAmount ) excess -= MaxAmount; @@ -151,10 +151,10 @@ Class SWWMAmmo : Ammo // enumerate all subclasses Array > ammotypes; ammotypes.Clear(); - for ( int i=0; i)(AllActorClasses[i])); + if ( cls is GetParentAmmo() ) + ammotypes.Push((Class)(cls)); } // sort from largest to smallest qsort_ammotypes(ammotypes,0,ammotypes.Size()-1); @@ -162,15 +162,32 @@ Class SWWMAmmo : Ammo Inventory last; while ( excess > 0 ) { - for ( int i=0; i= def.Amount ) { double ang = FRandom[Junk](0,360); - last = DoDrop(ammotypes[i]); + last = DoDrop(type); last.SetOrigin(item.pos,false); - last.vel.xy = (cos(ang),sin(ang))*FRandom[Junk](2,5); + last.vel.xy = AngleToVector(ang,FRandom[Junk](2,5)); excess -= def.Amount; break; } @@ -187,18 +204,32 @@ Class SWWMAmmo : Ammo ma.Amount = 0; ma.AttachToOwner(Owner); } - if ( ma.Amount < ma.MaxAmount ) + if ( !GetDefaultByType(MagAmmoType).bUNDROPPABLE && !GetDefaultByType(MagAmmoType).bUNTOSSABLE ) { - // split into bullets - for ( int i=0; i 0 ) ma.CreateTossable(dropamt); - if ( (bul == ma.ClipSize) && (Amount < MaxAmount) ) Amount++; - else ma.Amount = min(ma.MaxAmount,ma.Amount+bul); + // split into bullets + for ( int i=0; i 0 ) ma.CreateTossable(dropamt); + ma.Amount = min(ma.MaxAmount,ma.Amount+bul); + } + item.bPickupGood = true; + return true; } + } + else if ( ma.Amount <= (ma.MaxAmount-ma.ClipSize*item.Amount) ) + { + // when mag ammo is undroppable, can only divide in full mags EXACTLY + ma.Amount += ma.ClipSize*item.Amount; item.bPickupGood = true; return true; } @@ -207,30 +238,6 @@ Class SWWMAmmo : Ammo return Super.HandlePickup(item); } - override bool CanPickup( Actor toucher ) - { - // don't allow picking up ammo for weapons we can't pick up - if ( !Super.CanPickup(toucher) ) return false; - for ( int i=0; i)(AllActorClasses[i]); - if ( !w ) continue; - if ( w is 'SWWMWeapon' ) - { - let def = GetDefaultByType((Class)(w)); - if ( !def.UsesAmmo(GetClass()) ) continue; - if ( !def.CanPickup(toucher) ) return false; - } - else - { - let def = GetDefaultByType(w); - if ( (def.AmmoType1 != GetClass()) && (def.AmmoType2 != GetClass()) ) continue; - if ( !def.CanPickup(toucher) ) return false; - } - } - return true; - } - override void AttachToOwner( Actor other ) { Super.AttachToOwner(other); @@ -247,10 +254,10 @@ Class SWWMAmmo : Ammo { Super.ModifyDropAmount(dropamount); int maxdrop = 1; - for ( int i=0; i)(AllActorClasses[i])); + if ( !(cls is GetParentAmmo()) ) continue; + let def = GetDefaultByType((Class)(cls)); maxdrop = max(maxdrop,def.amount); } Amount = Random[ShellDrop](1,clamp(dropamount,1,maxdrop)); @@ -259,7 +266,10 @@ Class SWWMAmmo : Ammo default { +INVENTORY.IGNORESKILL; - Inventory.PickupFlash "SWWMPickupFlash"; + +DONTGIB; + Inventory.PickupFlash 'SWWMPickupFlash'; + +FLOATBOB; + FloatBobStrength 0.25; } } @@ -269,30 +279,35 @@ Class MagAmmo : Inventory abstract Mixin SWWMOverlapPickupSound; Mixin SWWMUseToPickup; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; - Class ParentAmmo; + meta Class ParentAmmo; Ammo pamo; - int ClipSize; - int countdown; - String PickupTag; - transient bool bSinglePrint; // used for pickup messages of mag manager + meta int ClipSize; + meta String PickupTag; + int BackpackAmount; Property ParentAmmo : ParentAmmo; Property ClipSize : ClipSize; Property PickupTag : PickupTag; + Property BackpackAmount : BackpackAmount; default { +INVENTORY.KEEPDEPLETED; + +DONTGIB; Inventory.PickupSound "misc/bullet_pkup"; Inventory.Amount 1; - Inventory.PickupFlash "SWWMPickupFlash"; + Inventory.PickupFlash 'SWWMPickupFlash'; + +FLOATBOB; + FloatBobStrength 0.25; } virtual Class GetParentMagAmmo() { Class type = GetClass(); - while ( (type.GetParentClass() != "MagAmmo") && type.GetParentClass() ) + while ( (type.GetParentClass() != 'MagAmmo') && type.GetParentClass() ) type = type.GetParentClass(); return (Class)(type); } @@ -334,12 +349,11 @@ Class MagAmmo : Inventory abstract override string PickupMessage() { String tagstr = "$T_"..PickupTag; - if ( (Amount > 1) && !bSinglePrint ) + if ( Amount > 1 ) { tagstr = tagstr.."S"; return String.Format("%d %s",Amount,StringTable.Localize(tagstr)); } - bSinglePrint = false; return StringTable.Localize(tagstr); } @@ -348,46 +362,78 @@ Class MagAmmo : Inventory abstract // drop excess mag ammo if ( (item is 'MagAmmo') && (MagAmmo(item).GetParentMagAmmo() == GetClass()) ) { - int excess = Amount+item.Amount; - if ( excess > MaxAmount ) excess -= MaxAmount; - if ( excess < item.Amount ) + if ( bUNDROPPABLE || bUNTOSSABLE ) { - // enumerate all subclasses - Array > ammotypes; - ammotypes.Clear(); - for ( int i=0; i= MaxAmount ) { - if ( AllActorClasses[i] is GetParentMagAmmo() ) - ammotypes.Push((Class)(AllActorClasses[i])); + if ( Amount < ClipSize ) break; + // first of all, see if we can INCREASE + // parent ammo, rather than drop a mag + if ( pamo.Amount < pamo.MaxAmount ) pamo.Amount++; + else if ( !pamo.bUNDROPPABLE && !pamo.bUNTOSSABLE ) DoDrop(ParentAmmo); + Amount -= ClipSize; } - // sort from largest to smallest - qsort_ammotypes(ammotypes,0,ammotypes.Size()-1); - // drop spares - Inventory last; - while ( excess > 0 ) + } + else if ( pamo.Amount < pamo.MaxAmount ) + { + // see if we can fill mags with this, and drop the excess + int toadd = Amount+item.Amount; + while ( (pamo.Amount < pamo.MaxAmount) && (toadd >= ClipSize) ) { - // drop full mag if possible - if ( excess >= ClipSize ) + pamo.Amount++; + toadd -= ClipSize; + } + Amount = toadd; + if ( Amount > MaxAmount ) CreateTossable(Amount-MaxAmount); + item.bPickupGood = true; + return true; + } + else + { + int excess = Amount+item.Amount; + if ( excess > MaxAmount ) excess -= MaxAmount; + if ( excess < item.Amount ) + { + // enumerate all subclasses + Array > ammotypes; + ammotypes.Clear(); + foreach ( cls:AllActorClasses ) { - double ang = FRandom[Junk](0,360); - last = DoDrop(ParentAmmo); - last.SetOrigin(item.pos,false); - last.vel.xy = (cos(ang),sin(ang))*FRandom[Junk](2,5); - excess -= ClipSize; - continue; + if ( cls is GetParentMagAmmo() ) + ammotypes.Push((Class)(cls)); } - // drop bullets otherwise - for ( int i=0; i 0 ) { - let def = GetDefaultByType(ammotypes[i]); - if ( excess >= def.Amount ) + // drop full mag if possible + if ( excess >= ClipSize ) { double ang = FRandom[Junk](0,360); - last = DoDrop(ammotypes[i]); + last = DoDrop(ParentAmmo); last.SetOrigin(item.pos,false); - last.vel.xy = (cos(ang),sin(ang))*FRandom[Junk](2,5); - excess -= def.Amount; - break; + last.vel.xy = AngleToVector(ang,FRandom[Junk](2,5)); + excess -= ClipSize; + continue; + } + // drop bullets otherwise + foreach ( type:ammotypes ) + { + let def = GetDefaultByType(type); + if ( excess >= def.Amount ) + { + double ang = FRandom[Junk](0,360); + last = DoDrop(type); + last.SetOrigin(item.pos,false); + last.vel.xy = AngleToVector(ang,FRandom[Junk](2,5)); + excess -= def.Amount; + break; + } } } } @@ -430,14 +476,6 @@ Class MagAmmo : Inventory abstract return copy; } - override bool CanPickup( Actor toucher ) - { - // don't allow picking up ammo for weapons we can't pick up - if ( !Super.CanPickup(toucher) ) return false; - let def = GetDefaultByType(ParentAmmo); - return def.CanPickup(toucher); - } - private Inventory DoDrop( Class type ) { let copy = Inventory(Spawn(type,Owner.Pos,NO_REPLACE)); @@ -485,16 +523,24 @@ Class MagAmmo : Inventory abstract pamo.Amount = 0; } } - // check if we can fill a mag (delayed) + // check if we can fill a mag if ( (Amount < ClipSize) || (pamo.Amount >= pamo.MaxAmount) ) - { - countdown = 35; return; - } - if ( countdown-- > 0 ) return; MagFill(); } + override void AttachToOwner( Actor other ) + { + Super.AttachToOwner(other); + pamo = Ammo(other.FindInventory(ParentAmmo)); + if ( !pamo ) + { + pamo = Ammo(Spawn(ParentAmmo)); + pamo.AttachToOwner(other); + pamo.Amount = 0; + } + } + bool MagFill() { // double-check that parent ammo exists @@ -514,13 +560,7 @@ Class MagAmmo : Inventory abstract pamo.Amount++; Amount -= ClipSize; given = true; - if ( Owner.CheckLocalView() ) - { - SWWMAmmo(pamo).bSinglePrint = true; - pamo.PrintPickupMessage(true,pamo.PickupMessage()); - } } - if ( given ) pamo.PlayPickupSound(Owner); return given; } @@ -533,10 +573,10 @@ Class MagAmmo : Inventory abstract // enumerate all subclasses Array > ammotypes; ammotypes.Clear(); - for ( int i=0; i)(AllActorClasses[i])); + if ( cls is GetParentMagAmmo() ) + ammotypes.Push((Class)(cls)); } // sort from largest to smallest qsort_ammotypes(ammotypes,0,ammotypes.Size()-1); @@ -554,12 +594,12 @@ Class MagAmmo : Inventory abstract continue; } // drop bullets otherwise - for ( int i=0; i= def.Amount ) { - last = DoDrop(ammotypes[i]); + last = DoDrop(type); amt -= def.Amount; Amount -= def.Amount; break; @@ -572,39 +612,13 @@ Class MagAmmo : Inventory abstract override void ModifyDropAmount( int dropamount ) { Super.ModifyDropAmount(dropamount); - Amount = min(Random[ShellDrop](1,ClipSize),Amount); - } -} - -// Ref class for ammo spawners, used by on-demand replacers -Class SWWMAmmoSpawner : Inventory abstract -{ - virtual void SpawnAmmo() {} - - override void PostBeginPlay() - { - SpawnAmmo(); - ClearCounters(); - Destroy(); - } - - override bool CanPickup( Actor toucher ) - { - return false; - } - - override bool TryPickup( in out Actor toucher ) - { - return false; - } - - default - { - +NOGRAVITY; - +NOBLOCKMAP; - +NOINTERACTION; - +NOTELEPORT; - +DONTSPLASH; - -SPECIAL; + int maxdrop = 1; + foreach ( cls:AllActorClasses ) + { + if ( !(cls is GetParentMagAmmo()) ) continue; + let def = GetDefaultByType((Class)(cls)); + maxdrop = max(maxdrop,def.amount); + } + Amount = Random[ShellDrop](1,clamp(dropamount,1,maxdrop)); } } diff --git a/zscript/items/swwm_basearmor.zsc b/zscript/items/swwm_basearmor.zsc index 2150c5d46..0a62fd396 100644 --- a/zscript/items/swwm_basearmor.zsc +++ b/zscript/items/swwm_basearmor.zsc @@ -1,9 +1,9 @@ // Base class for all SWWM Armors Class SWWMArmor : Armor abstract { - int priority; - String drainmsg; - Class parent; + meta int priority; + meta String drainmsg; + meta Class parent; private int SArmorFlags; Property ArmorPriority : priority; @@ -15,6 +15,9 @@ Class SWWMArmor : Armor abstract FlagDef NoDrain : SArmorFlags, 2; // amount is not drained, will always reduce as long as amount is non-zero // useful for powerup-given armors + transient int lastautousetic; // accumulated damage can make the use sounds stack + transient int lasthittic; // same here + Default { +INVENTORY.AUTOACTIVATE; @@ -72,13 +75,17 @@ Class SWWMArmor : Armor abstract { return damage; } - override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) + override void AbsorbDamage( int damage, Name damageType, int &newdamage, Actor inflictor, Actor source, int flags ) { int saved; if ( (amount <= 0) || DamageTypeDefinition.IgnoreArmor(damageType) || (damage <= 0) ) return; if ( !bNOHITFLASH ) SWWMHandler.DoFlash(Owner,Color(int(clamp(damage*.15,1,16)),255,224,192),3); - if ( !bNOHITSOUND ) Owner.A_StartSound("armor/hit",CHAN_DAMAGE,CHANF_OVERLAP,clamp(damage*.03,0.,1.),2.5); + if ( !bNOHITSOUND && (lasthittic < gametic) ) + { + Owner.A_StartSound("armor/hit",CHAN_DAMAGE,CHANF_OVERLAP,clamp(damage*.03,0.,1.),2.5); + lasthittic = gametic; + } saved = HandleDamage(damage,damageType,flags); int healed = max(0,saved-damage); saved = min(saved,damage); @@ -87,21 +94,24 @@ Class SWWMArmor : Armor abstract if ( healed > 0 ) Owner.GiveBody(healed); if ( (swwm_strictuntouchable == 1) && (saved > 0) && Owner.player ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( hnd ) hnd.tookdamage[Owner.PlayerNumber()] = true; } if ( !bNODRAIN ) amount -= saved; damage = newdamage; - bool shouldautouse = CVar.GetCVar('swwm_autousearmor',Owner.player).GetBool(); - if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) && shouldautouse ) + if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) ) { - if ( GetDefaultByType(parent).UseSound ) Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP,.6); + if ( GetDefaultByType(parent).UseSound && (lastautousetic < gametic) ) + { + Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP,.6); + lastautousetic = gametic; + } int tgive = 0; while ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) ) { - if ( swwm_accdamage ) tgive += default.Amount; - else SWWMScoreObj.Spawn(default.Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); Amount += default.Amount; + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(default.Amount,Owner,Font.CR_GREEN); Owner.TakeInventory(parent,1); // absorb the extra damage too saved = HandleDamage(damage,damageType,flags); @@ -113,7 +123,6 @@ Class SWWMArmor : Armor abstract amount -= saved; damage = newdamage; } - if ( swwm_accdamage ) SWWMScoreObj.Spawn(tgive,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); } else if ( amount <= 0 ) { @@ -131,21 +140,38 @@ Class SWWMSpareArmor : Inventory abstract Mixin SWWMUseToPickup; Mixin SWWMOverlapPickupSound; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; - Class giveme; + meta Class giveme; Property GiveArmor : giveme; override bool Use( bool pickup ) { let cur = Owner.FindInventory(giveme); - if ( !cur || (!pickup && (cur.Amount < cur.MaxAmount)) || (GetDefaultByType(giveme).Amount+cur.Amount <= cur.MaxAmount) ) + if ( !cur || (!pickup && (cur.Amount < cur.MaxAmount)) || (GetDefaultByType(giveme).Amount+cur.Amount <= cur.MaxAmount) || ((default.MaxAmount <= 0) && (cur.Amount < cur.MaxAmount)) ) { - if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) + { + bool bPlayMe = true; + if ( self is 'ArmorNuggetItem' ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( hnd ) + { + if ( hnd.lastnuggettic[Owner.PlayerNumber()] == gametic ) + bPlayMe = false; // don't play if picked up on the same exact tic (overlapping items) + hnd.lastnuggettic[Owner.PlayerNumber()] = gametic; + } + } + if ( bPlayMe ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + } Owner.GiveInventory(giveme,GetDefaultByType(giveme).Amount); SWWMHandler.ArmorFlash(Owner.PlayerNumber()); - SWWMScoreObj.Spawn(GetDefaultByType(giveme).Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(GetDefaultByType(giveme).Amount,Owner,Font.CR_GREEN); return true; } return false; @@ -158,8 +184,9 @@ Class SWWMSpareArmor : Inventory abstract +INVENTORY.AUTOACTIVATE; Inventory.MaxAmount 5; Inventory.InterHubAmount 5; - Inventory.PickupFlash "SWWMGreenPickupFlash"; + Inventory.PickupFlash 'SWWMGreenPickupFlash'; +FLOATBOB; + +DONTGIB; FloatBobStrength 0.25; } } diff --git a/zscript/items/swwm_basehealth.zsc b/zscript/items/swwm_basehealth.zsc index 70dbd9128..13b88b4fe 100644 --- a/zscript/items/swwm_basehealth.zsc +++ b/zscript/items/swwm_basehealth.zsc @@ -5,14 +5,18 @@ Class SWWMHealth : Inventory abstract Mixin SWWMUseToPickup; Mixin SWWMOverlapPickupSound; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; // can't use the Health class for whatever reason // nice parser you got there I guess? - Class giveme; + meta Class giveme; Property GiveHealth : giveme; + transient int lastautousetic; // accumulated damage can make the use sounds stack + override void AttachToOwner( Actor other ) { Super.AttachToOwner(other); @@ -70,12 +74,27 @@ Class SWWMHealth : Inventory abstract override bool Use( bool pickup ) { if ( Owner.Health >= GetDefaultByType(giveme).MaxAmount ) return false; - // healing items won't get auto-used on pickup if their healing could "be wasted", unless they're powerup health (e.g. Refresher) - if ( pickup && !bBIGPOWERUP && (Owner.Health+GetDefaultByType(giveme).Amount > GetDefaultByType(giveme).MaxAmount) ) return false; - if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); + // healing items won't get auto-used on pickup if their healing could "be wasted", unless they're powerup health (e.g. Refresher) or bonus health + if ( pickup && !bBIGPOWERUP && (default.MaxAmount > 0) && (Owner.Health+GetDefaultByType(giveme).Amount > GetDefaultByType(giveme).MaxAmount) ) return false; + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) + { + bool bPlayMe = true; + if ( self is 'HealthNuggetItem' ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( hnd ) + { + if ( hnd.lastnuggettic[Owner.PlayerNumber()] == gametic ) + bPlayMe = false; // don't play if picked up on the same exact tic (overlapping items) + hnd.lastnuggettic[Owner.PlayerNumber()] = gametic; + } + } + if ( bPlayMe ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + } SWWMHandler.HealthFlash(Owner.PlayerNumber()); Owner.GiveInventory(giveme,GetDefaultByType(giveme).Amount); - SWWMScoreObj.Spawn(GetDefaultByType(giveme).Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(GetDefaultByType(giveme).Amount,Owner,Font.CR_BLUE); AutoUseExtra(false); return true; } @@ -94,14 +113,12 @@ Class SWWMHealth : Inventory abstract if ( Amount <= 0 ) DepleteOrDestroy(); } - override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) + override void AbsorbDamage( int damage, Name damageType, int &newdamage, Actor inflictor, Actor source, int flags ) { if ( Owner.ApplyDamageFactor(damageType,damage) <= 0 ) return; // this damage type is ignored by the player, so it does not affect us if ( damageType == 'EndLevel' ) return; // don't trigger on endlevel damage - bool shouldautouse = CVar.GetCVar('swwm_autousehealth',Owner.player).GetBool(); - if ( !shouldautouse && !bBIGPOWERUP ) return; // powerup health is always auto-used if ( (Owner.Health-damage <= (GetDefaultByType(giveme).MaxAmount-GetDefaultByType(giveme).Amount)) ) { newdamage = damage; @@ -113,17 +130,21 @@ Class SWWMHealth : Inventory abstract return; if ( (swwm_strictuntouchable == 1) && Owner.player ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( hnd ) hnd.tookdamage[Owner.PlayerNumber()] = true; } - if ( ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + if ( ((Owner.player == players[consoleplayer]) || bBigPowerup) && (lastautousetic < gametic) ) + { + Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + lastautousetic = gametic; + } int tgive = 0; bool morethanonce = false; while ( (Amount > 0) && (newdamage > 0) ) { - if ( swwm_accdamage ) tgive += GetDefaultByType(giveme).Amount; - else SWWMScoreObj.Spawn(GetDefaultByType(giveme).Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); newdamage = newdamage-GetDefaultByType(giveme).Amount; + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(GetDefaultByType(giveme).Amount,Owner,Font.CR_BLUE); if ( newdamage < 0 ) Owner.GiveBody(-newdamage,GetDefaultByType(giveme).MaxAmount); newdamage = max(0,newdamage); if ( !morethanonce ) SWWMHandler.HealthFlash(Owner.PlayerNumber()); @@ -131,7 +152,6 @@ Class SWWMHealth : Inventory abstract morethanonce = true; Amount--; } - if ( swwm_accdamage ) SWWMScoreObj.Spawn(tgive,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); } else newdamage = damage; } @@ -141,10 +161,11 @@ Class SWWMHealth : Inventory abstract +INVENTORY.INVBAR; +INVENTORY.ISHEALTH; +INVENTORY.AUTOACTIVATE; + +DONTGIB; Inventory.MaxAmount 5; Inventory.InterHubAmount 5; Inventory.UseSound "misc/health_pkup"; - Inventory.PickupFlash "SWWMBluePickupFlash"; + Inventory.PickupFlash 'SWWMBluePickupFlash'; +FLOATBOB; FloatBobStrength 0.25; } diff --git a/zscript/items/swwm_baseitem.zsc b/zscript/items/swwm_baseitem.zsc index 486ca58f5..8f4fcc819 100644 --- a/zscript/items/swwm_baseitem.zsc +++ b/zscript/items/swwm_baseitem.zsc @@ -15,16 +15,23 @@ Mixin Class SWWMAutoUseFix // sell excess if there's a price if ( !deathmatch && bALWAYSPICKUP && (Amount+item.Amount > MaxAmount) && (Stamina != 0) ) { - int sellprice = int(abs(Stamina)*.5); - SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2)); - SWWMCredits.Give(Owner.player,sellprice); if ( Owner.player ) - Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),Owner.player.GetUserName(),GetTag(),sellprice); + { + int sellprice = abs(Stamina)/2; + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner); + Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + } + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } + item.bPickupGood = true; } } return Super.HandlePickup(item); } - override bool TryPickup( in out Actor toucher ) + override bool TryPickup( Actor &toucher ) { if ( !deathmatch ) return Super.TryPickup(toucher); // pretend to have a max amount of 0 so we can only be picked up if we can be used @@ -62,7 +69,7 @@ Mixin Class SWWMUseToPickup // can't pick up if ( !bSPECIAL ) return false; // no use through melee - if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch && !swwm_meleepickup ) + if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch ) return false; Vector3 itempos = Vec3Offset(0,0,Height/2), userpos = user.Vec2OffsetZ(0,0,user.player.viewz); @@ -79,8 +86,8 @@ Mixin Class SWWMUseToPickup Vector3 tracedir = level.Vec3Diff(userpos,itempos); double dist = tracedir.length(); tracedir /= dist; - let cf = new("CrossLineFinder"); - cf.Trace(userpos,level.PointInSector(userpos.xy),tracedir,dist,0); + let cf = new('CrossLineFinder'); + cf.Trace(userpos,level.PointInSector(userpos.xy),tracedir,dist,0,ignoreallactors:true); // trigger all player cross lines found between user and item for ( int i=0; i 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; double str = 1.-special2/double(special1); int freq = int(clamp(30*(1.-str),3,30)); if ( (level.maptime+args[3])%freq ) return; + if ( !flare.texture ) + { + flare.color1 = Color(args[0]*85,args[1]*85,args[2]*85); + flare.texture = TexMan.CheckForTexture("graphics/Particles/xflare.png"); + flare.style = STYLE_AddShaded; + flare.flags = SPF_FULLBRIGHT; + flare.fadestep = -1; + } + flare.pos = pos+(0,0,16); int numpt = int(Random[ExploS](0,10)*str); for ( int i=0; i gesture; - String getline; + meta Class gesture; + meta String getline; Property Availability : avail; Property GestureWeapon : gesture; @@ -27,7 +29,7 @@ Class SWWMCollectible : Inventory abstract Inventory.PickupSound "menu/buyinv"; Inventory.Amount 1; Inventory.MaxAmount 1; - Inventory.PickupFlash "SWWMCyanPickupFlash"; + Inventory.PickupFlash 'SWWMCyanPickupFlash'; SWWMCollectible.Availability AVAIL_All; +INVENTORY.UNTOSSABLE; +INVENTORY.UNDROPPABLE; @@ -37,8 +39,6 @@ Class SWWMCollectible : Inventory abstract +FLOATBOB; +DONTGIB; FloatBobStrength 0.25; - Radius 8; - Height 24; } bool ValidGame() const { @@ -74,9 +74,9 @@ Class SWWMCollectible : Inventory abstract Super.AttachToOwner(other); // count how many we have, set progress accordingly int nc = 0, cnc = 0; - for ( int i=0; i)(AllActorClasses[i]); + let c = (Class)(cls); if ( !c || (c == 'SWWMCollectible') ) continue; let def = GetDefaultByType(c); // check that we can collect it in this IWAD @@ -94,7 +94,7 @@ Class SWWMCollectible : Inventory abstract // give credit if ( other.player && (Stamina > 0) ) { - SWWMScoreObj.Spawn(Stamina,other.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+other.Height/2)); + if ( other.player == players[consoleplayer] ) SWWMScoreObj.SpawnAtActorBunch(Stamina,other); SWWMCredits.Give(other.player,Stamina); } // send to all other players @@ -124,7 +124,7 @@ Class GenericCube : SWWMCollectible { Tag "$T_PERFECTLYGENERIC"; Inventory.PickupMessage "$T_PERFECTLYGENERIC"; - SWWMCollectible.GestureWeapon "GenericCubeGesture"; + SWWMCollectible.GestureWeapon 'GenericCubeGesture'; SWWMCollectible.GetLine "cubeget"; Stamina 1000; } @@ -135,11 +135,9 @@ Class AkariProject : SWWMCollectible { Tag "$T_AKARIPROJECT"; Inventory.PickupMessage "$T_AKARIPROJECT"; - SWWMCollectible.GestureWeapon "AkariProjectGesture"; + SWWMCollectible.GestureWeapon 'AkariProjectGesture'; SWWMCollectible.GetLine "akariget"; Stamina 2000; - Radius 4; - Height 22; } } Class LoveSignalsCD : SWWMCollectible @@ -148,11 +146,9 @@ Class LoveSignalsCD : SWWMCollectible { Tag "$T_LOVESIGNALS"; Inventory.PickupMessage "$T_LOVESIGNALS"; - SWWMCollectible.GestureWeapon "LoveSignalsCDGesture"; + SWWMCollectible.GestureWeapon 'LoveSignalsCDGesture'; SWWMCollectible.GetLine "signalsget"; Stamina 3000; - Radius 4; - Height 21; } } Class NutatcoBar : SWWMCollectible @@ -161,11 +157,9 @@ Class NutatcoBar : SWWMCollectible { Tag "$T_NUTATCO"; Inventory.PickupMessage "$T_NUTATCO"; - SWWMCollectible.GestureWeapon "NutatcoBarGesture"; + SWWMCollectible.GestureWeapon 'NutatcoBarGesture'; SWWMCollectible.GetLine "nutatcoget"; Stamina 200; - Radius 3; - Height 22; } } Class FrispyCorn : SWWMCollectible @@ -174,26 +168,20 @@ Class FrispyCorn : SWWMCollectible { Tag "$T_FRISPYCORN"; Inventory.PickupMessage "$T_FRISPYCORN"; - SWWMCollectible.GestureWeapon "FrispyCornGesture"; + SWWMCollectible.GestureWeapon 'FrispyCornGesture'; SWWMCollectible.GetLine "frispyget"; Stamina 400; - Radius 5; - Height 23; } } Class SayaBean : SWWMCollectible { - bool callout; // already called the player a perv for loading h-doom - Default { Tag "$T_SAYABEAN"; Inventory.PickupMessage "$T_SAYABEAN"; - SWWMCollectible.GestureWeapon "SayaBeanGesture"; + SWWMCollectible.GestureWeapon 'SayaBeanGesture'; SWWMCollectible.GetLine "sayaget"; Stamina 5000; - Radius 6; - Height 23; } } Class MothPlushy : SWWMCollectible @@ -209,9 +197,9 @@ Class MothPlushy : SWWMCollectible { gigglecnt--; if ( gigglecnt == 30 ) - A_StartSound("mashiro/appear",CHAN_VOICE,CHANF_UI|CHANF_NOSTOP|CHANF_OVERLAP,1.,0.); + A_StartSound("andira/appear",CHAN_VOICE,CHANF_UI|CHANF_NOSTOP|CHANF_OVERLAP,1.,0.); if ( gigglecnt == 0 ) - Console.MidPrint(smallfont,StringTable.Localize("$D_MASHIRO"),true); + Console.MidPrint(smallfont,StringTable.Localize("$D_ANDIRA"),true); } } @@ -219,11 +207,21 @@ Class MothPlushy : SWWMCollectible { Tag "$T_MOTHPLUSH"; Inventory.PickupMessage "$T_MOTHPLUSH"; - SWWMCollectible.GestureWeapon "MothPlushyGesture"; + SWWMCollectible.GestureWeapon 'MothPlushyGesture'; SWWMCollectible.GetLine "mothget"; Stamina 7000; - Radius 12; - Height 32; + } +} +// 1.3 Saya's Mug +Class SayasMug : SWWMCollectible +{ + Default + { + Tag "$T_SAYASMUG"; + Inventory.PickupMessage "$T_SAYASMUG"; + SWWMCollectible.GestureWeapon 'SayasMugGesture'; + SWWMCollectible.GetLine "mugget"; + Stamina 1000; } } // Heretic @@ -234,26 +232,23 @@ Class DemoPlush : SWWMCollectible Tag "$T_DEMOPLUSH"; Inventory.PickupMessage "$T_DEMOPLUSH"; SWWMCollectible.Availability AVAIL_Heretic; - SWWMCollectible.GestureWeapon "DemoPlushGesture"; + SWWMCollectible.GestureWeapon 'DemoPlushGesture'; SWWMCollectible.GetLine "demoget"; Stamina 6000; - Radius 12; - Height 36; } } +// TBD 1.4 Blahaj // Hexen -Class KirinCummies : SWWMCollectible +Class KirinSippy : SWWMCollectible { Default { Tag "$T_PEACH"; Inventory.PickupMessage "$T_PEACH"; SWWMCollectible.Availability AVAIL_Hexen; - SWWMCollectible.GestureWeapon "KirinCummiesGesture"; + SWWMCollectible.GestureWeapon 'KirinSippyGesture'; SWWMCollectible.GetLine "peachget"; Stamina 300; - Radius 3; - Height 21; } } Class MilkBreads : SWWMCollectible @@ -263,11 +258,9 @@ Class MilkBreads : SWWMCollectible Tag "$T_MILKBREAD"; Inventory.PickupMessage "$T_MILKBREAD"; SWWMCollectible.Availability AVAIL_Hexen; - SWWMCollectible.GestureWeapon "MilkBreadsGesture"; + SWWMCollectible.GestureWeapon 'MilkBreadsGesture'; SWWMCollectible.GetLine "breadget"; Stamina 900; - Radius 4; - Height 21; } } Class KirinManga : SWWMCollectible @@ -277,11 +270,9 @@ Class KirinManga : SWWMCollectible Tag "$T_KIRINMANGA"; Inventory.PickupMessage "$T_KIRINMANGA"; SWWMCollectible.Availability AVAIL_Hexen; - SWWMCollectible.GestureWeapon "KirinMangaGesture"; + SWWMCollectible.GestureWeapon 'KirinMangaGesture'; SWWMCollectible.GetLine "mangaget"; Stamina 1600; - Radius 4; - Height 22; } } Class KirinPlush : SWWMCollectible @@ -291,10 +282,8 @@ Class KirinPlush : SWWMCollectible Tag "$T_KIRINPLUSH"; Inventory.PickupMessage "$T_KIRINPLUSH"; SWWMCollectible.Availability AVAIL_Hexen; - SWWMCollectible.GestureWeapon "KirinPlushGesture"; + SWWMCollectible.GestureWeapon 'KirinPlushGesture'; SWWMCollectible.GetLine "kiringet"; Stamina 8000; - Radius 14; - Height 37; } } diff --git a/zscript/items/swwm_collectibles_gesture.zsc b/zscript/items/swwm_collectibles_gesture.zsc index fd2ba4165..d2890db79 100644 --- a/zscript/items/swwm_collectibles_gesture.zsc +++ b/zscript/items/swwm_collectibles_gesture.zsc @@ -81,23 +81,16 @@ Class FrispyCornGesture : SWWMItemGesture } Class SayaBeanGesture : SWWMItemGesture { + action void A_PreSquish() + { + if ( Demolitionist(self) ) Demolitionist(self).facegrin = true; + } action void A_Squish1() { A_StartSound("squeak",CHAN_ITEMEXTRA,CHANF_OVERLAP); } action void A_Squish2() { - let realbean = SayaBean(FindInventory("SayaBean")); - if ( realbean && !realbean.callout && !Random[Gesture](0,3) ) - { - for ( int i=0; i 1) && !Random[Gesture](0,12-realmoth.uses) ) @@ -176,6 +170,21 @@ Class MothPlushyGesture : SWWMItemGesture Stop; } } +Class SayasMugGesture : SWWMItemGesture +{ + States + { + Fire: + XZW1 A 2; + XZW1 B 2 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); + XZW1 CDEFGHIJKLMNOPQRSTUVWXYZ 2; + XZW2 ABCDEFGHIJKLMNO 2; + XZW2 P 2 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 QRSTUVW 2; + XZW2 X -1 A_FinishGesture(); + Stop; + } +} Class DemoPlushGesture : SWWMItemGesture { States @@ -194,7 +203,7 @@ Class DemoPlushGesture : SWWMItemGesture Stop; } } -Class KirinCummiesGesture : SWWMItemGesture +Class KirinSippyGesture : SWWMItemGesture { States { @@ -252,6 +261,10 @@ Class KirinPlushGesture : SWWMItemGesture s.plushuses++; SWWMUtility.AchievementProgress("plush",s.plushuses,player); } + action void A_PreKiss() + { + if ( Demolitionist(self) ) Demolitionist(self).faceblink = true; + } action void A_PetPlush() { A_StartSound("demolitionist/petting",CHAN_WEAPON,CHANF_OVERLAP); @@ -259,22 +272,23 @@ Class KirinPlushGesture : SWWMItemGesture action void A_KissPlush() { if ( swwm_mutevoice < 4 ) - A_StartSound("demolitionist/smooch",CHAN_DEMOVOICE,CHANF_OVERLAP,.4); + { + String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); + int loudlv = swwm_voiceamp; + int maxkiss = StringTable.Localize("$SWWM_"..myvoice.."_NKISS").ToInt(); + int idx = (maxkiss<=1)?1:Random[DemoLines](1,maxkiss); + A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } SWWMHandler.DoFlash(self,Color(48,255,128,128),10); SWWMHandler.DoFlash(self,Color(24,255,128,128),30); int numpt = Random[ExploS](6,9); for ( int i=0; i 0) ) return; if ( (pos.z <= floorz) || !TestMobjZ() ) { if ( !wasonground && (lastvelz < -1) ) A_StartSound("squeak",CHAN_BODY,CHANF_OVERLAP,clamp(-lastvelz*.05,0.,1.)); @@ -121,39 +123,37 @@ Class FroggyChair : Actor override bool CanCollideWith( Actor other, bool passive ) { if ( !other.bSHOOTABLE && !other.bSOLID ) return false; + if ( (other == tracer) && (vel.length() > 1) ) return false; + return true; + } + override void CollidedWith( Actor other, bool passive ) + { Vector3 dir = vel; double vsize = dir.length(); // we need to compare Z height because wow thanks Vector3 diff = level.Vec3Diff(pos,other.pos); - if ( (diff.z > height) || (diff.z < -other.height) ) return false; - if ( vsize > 1 ) + if ( (diff.z > height) || (diff.z < -other.height) ) return; + if ( vsize <= 1 ) return; + if ( other == lasthit ) return; + dir /= vsize; + if ( !passive && other.bSHOOTABLE && (!tracer || !other.IsFriend(tracer)) ) { - if ( other == lasthit ) - return false; - dir /= vsize; - if ( !passive && other.bSHOOTABLE && (!tracer || !other.IsFriend(tracer)) ) + lasthit = other; + SWWMUtility.DoKnockback(other,dir,5000*vsize); + Vector3 dirto = level.Vec3Diff(other.Vec3Offset(0,0,other.height/2),Vec3Offset(0,0,height)); + double lento = dirto.length(); + if ( lento <= double.epsilon ) { - lasthit = other; - SWWMUtility.DoKnockback(other,dir,5000*vsize); - Vector3 dirto = level.Vec3Diff(other.Vec3Offset(0,0,other.height/2),Vec3Offset(0,0,height)); - double lento = dirto.length(); - if ( lento <= double.epsilon ) - { - double ang = FRandom[DoBlast](0,360); - double pt = FRandom[DoBlast](-90,90); - dirto = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); - } - else dirto /= lento; - vel = (dirto+(0,0,.1))*vsize*.3; - Spawn("SWWMItemFog",pos); - other.DamageMobj(self,tracer,int(2.5*vsize),'Melee',DMG_THRUSTLESS); - A_StartSound("squeak",CHAN_WEAPON); - return false; + double ang = FRandom[DoBlast](0,360); + double pt = FRandom[DoBlast](-90,90); + dirto = SWWMUtility.Vec3FromAngles(ang,pt); } - if ( other == tracer ) - return false; + else dirto /= lento; + vel = (dirto+(0,0,.1))*vsize*.3; + Spawn('SWWMItemFog',pos); + other.DamageMobj(self,tracer,int(2.5*vsize),'Melee',DMG_THRUSTLESS); + A_StartSound("squeak",CHAN_WEAPON); } - return true; } States { @@ -176,16 +176,16 @@ Class SWWMFlag : Actor switch ( seq ) { case 0: - SetStateLabel("Spawn"); + A_ChangeModel("",0,"","",0,"models","SWWMFlag.png"); break; case 1: - SetStateLabel("FlagPride"); + A_ChangeModel("",0,"","",0,"models","SWWMFlag_Pride.png"); break; case 2: - SetStateLabel("FlagTrans"); + A_ChangeModel("",0,"","",0,"models","SWWMFlag_Trans.png"); break; case 3: - SetStateLabel("FlagEnby"); + A_ChangeModel("",0,"","",0,"models","SWWMFlag_Enby.png"); break; } A_StartSound("bestsound",CHAN_BODY,CHANF_OVERLAP); @@ -203,7 +203,8 @@ Class SWWMFlag : Actor void UpdateCarry() { prev = pos; - Vector3 tomove = master.Vec2OffsetZ(cos(master.angle)*40.,sin(master.angle)*40.,master.player.viewz-32.); + Vector2 tofs = AngleToVector(master.angle,40.); + Vector3 tomove = master.Vec2OffsetZ(tofs.x,tofs.y,master.player.viewz-32.); Vector3 dirto = level.Vec3Diff(pos,tomove); double intp = clamp(dirto.length()*.01,.3,.7); SetOrigin(level.Vec3Offset(pos,dirto*intp),true); @@ -277,44 +278,24 @@ Class SWWMFlag : Actor XZW2 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2; XZW3 ABCDEFGH 2; Loop; - FlagPride: - XZW3 IJKLMNOPQRSTUVWXYZ 2; - XZW4 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2; - XZW5 ABCDEFGHIJKLMNOP 2; - Loop; - FlagTrans: - XZW5 QRSTUVWXYZ 2; - XZW6 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2; - XZW7 ABCDEFGHIJKLMNOPQRSTUVWX 2; - Loop; - FlagEnby: - XZW7 YZ 2; - XZW8 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2; - XZW9 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2; - XZWA ABCDEF 2; - Loop; } } // oof -Class SWWMGasCloudSpawner : Actor +Class SWWMGasCloudSpawner : SWWMNonInteractiveActor { - Default - { - Radius .1; - Height 0.; - +NOBLOCKMAP; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; - } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; if ( !(special1%5) ) { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - let c = Spawn("SWWMGasCloud",level.Vec3Offset(pos,x*(20+special1*12))); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + let c = Spawn('SWWMGasCloud',level.Vec3Offset(pos,x*(20+special1*12))); c.target = target; c.specialf1 = 1+special1/10.; } @@ -323,22 +304,23 @@ Class SWWMGasCloudSpawner : Actor } } -Class SWWMGasCloud : Actor +Class SWWMGasCloud : SWWMNonInteractiveActor { Default { - Radius .1; - Height 0.; - +NOBLOCKMAP; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; + +FORCERADIUSDMG; } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; for ( int i=0; i<2; i++ ) { - let e = Spawn("SWWMFart",level.Vec3Offset(pos,specialf1*(FRandom[ExploS](-20,20),FRandom[ExploS](-20,20),FRandom[ExploS](-20,20)))); + let e = Spawn('SWWMFart',level.Vec3Offset(pos,specialf1*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*20.)); e.target = target; e.scale *= specialf1; } @@ -348,11 +330,11 @@ Class SWWMGasCloud : Actor } } -Class SWWMFart : SWWMHalfSmoke +Class SWWMFart : SWWMSmoke { Default { - RenderStyle "Add"; + RenderStyle 'Add'; Alpha .1; } States @@ -365,7 +347,7 @@ Class SWWMFart : SWWMHalfSmoke } // yay! -Class FancyConfetti : Actor +Class FancyConfetti : SWWMNonInteractiveActor { int deadtimer; bool dead; @@ -375,18 +357,10 @@ Class FancyConfetti : Actor Default { - Radius 2; - Height 2; - +NOBLOCKMAP; - +DROPOFF; - +THRUACTORS; - +NOTELEPORT; - +DONTSPLASH; +INTERPOLATEANGLES; +ROLLSPRITE; +ROLLCENTER; Gravity 0.05; - FloatBobPhase 0; } override void PostBeginPlay() { @@ -401,6 +375,11 @@ Class FancyConfetti : Actor override void Tick() { prev = pos; // for interpolation + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; if ( dead ) { @@ -443,24 +422,9 @@ Class FancyConfetti : Actor double ang = atan2(dir.y,dir.x); double pt = asin(-dir.z); LineTrace(ang,dist,pt,TRF_THRUACTORS|TRF_THRUHITSCAN|TRF_ABSPOSITION,newpos.z,newpos.x,newpos.y,d); - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } if ( (d.HitType != TRACE_HitNone) && (d.HitType != TRACE_HitFloor) ) { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); dist -= d.Distance; // should only happen if we bounced dir = d.HitDir-(1.2*hitnormal*(d.HitDir dot hitnormal)); @@ -493,7 +457,7 @@ Class FancyConfetti : Actor pitch = 0; roll = 0; dead = true; - SetStateLabel("Death"); + SetStateLabel('Death'); break; } nstep++; @@ -533,23 +497,21 @@ Class FancyConfetti : Actor Stop; } } -Class SuperFancyTrail : Actor +Class SuperFancyTrail : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius .1; - Height 0.; + RenderStyle 'Add'; XScale 24.; +FORCEXYBILLBOARD; - +NOGRAVITY; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - +NOTELEPORT; } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; A_SetScale(scale.x*.95,scale.y); A_FadeOut(.01); @@ -561,23 +523,16 @@ Class SuperFancyTrail : Actor Stop; } } -Class SuperFancySparkle : Actor +Class SuperFancySparkle : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius 0.1; - Height 0; + RenderStyle 'Add'; Scale .25; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; +ROLLSPRITE; +ROLLCENTER; +INTERPOLATEANGLES; +FORCEXYBILLBOARD; - +NOINTERACTION; - FloatBobPhase 0; } override void PostBeginPlay() { @@ -586,15 +541,20 @@ Class SuperFancySparkle : Actor specialf2 = FRandom[ExploS](.004,.012); double ang = FRandom[ExploS](0,360); double pt = FRandom[ExploS](-90,30); - vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),sin(-pt))*FRandom[ExploS](2.,16.); + vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](2.,16.); frame = Random[ExploS](0,7); special1 = RandomPick[ExploS](-1,1)*Random[ExploS](1,6); roll = FRandom[ExploS](0,360); } override void Tick() { - if ( isFrozen() ) return; prev = pos; + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; A_SetScale(scale.x*specialf1); A_SetRoll(roll+special1,SPF_INTERPOLATE); A_FadeOut(specialf2); @@ -604,7 +564,7 @@ Class SuperFancySparkle : Actor if ( magvel > 0. ) { dir /= magvel; - dir += .2*(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)); + dir += .2*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); vel = dir.unit()*magvel; } SetOrigin(level.Vec3Offset(pos,vel),true); @@ -612,12 +572,11 @@ Class SuperFancySparkle : Actor double dist = dir.length(); if ( dist < .1 ) return; dir /= dist; - let t = Spawn("SuperFancyTrail",pos); + let t = Spawn('SuperFancyTrail',pos); t.alpha = alpha*.5; - t.scale.y = dist; t.scale.x *= scale.x; - t.angle = atan2(dir.y,dir.x); - t.pitch = asin(-dir.z)+90; + t.speed = dist; + [t.angle, t.pitch, t.scale.y] = SWWMUtility.CalcYBeam(dir,dist); t.SetState(t.SpawnState+frame); } States @@ -641,29 +600,20 @@ Class SuperPartyLight : PaletteLight ReactionTime = Random[ExploS](30,50); double ang = FRandom[ExploS](0,360); double pt = FRandom[ExploS](-90,30); - vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),sin(-pt))*FRandom[ExploS](2,10); + vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](2,10); Super.PostBeginPlay(); } override void Tick() { Super.Tick(); - if ( isFrozen() ) return; + if ( isFrozen() || (freezetics > 0) ) return; SetOrigin(level.Vec3Offset(pos,vel),true); } } -Class PartyTime : Actor +Class PartyTime : SWWMNonInteractiveActor { bool ignite; - Default - { - Radius .1; - Height 0.; - +NOBLOCKMAP; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; - } override void PostBeginPlay() { if ( target ) specialf1 = target.Height/2.; @@ -687,7 +637,7 @@ Class PartyTime : Actor } SetOrigin(target.pos,false); } - action void A_Confetti() + void A_Confetti() { if ( !bAMBUSH && !bSTANDSTILL ) A_StartSound("misc/tada",CHAN_ITEM); double ang, pt; @@ -698,17 +648,17 @@ Class PartyTime : Actor { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,30); - let c = Spawn("FancyConfetti",Vec3Offset(0,0,specialf1)); - c.vel = (cos(pt)*cos(ang),cos(pt)*sin(ang),-sin(pt))*FRandom[ExploS](2,8); + let c = Spawn('FancyConfetti',Vec3Offset(0,0,specialf1)); + c.vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](2,8); if ( bAMBUSH ) c.vel *= 2; } if ( !bAMBUSH ) return; numpt = Random[ExploS](60,90); for ( int i=0; i= 3 ) { // there's three boxes in the map already - let b = Spawn("HealthNuggetItem",pos); + let b = Spawn('HealthNuggetItem',pos); SWWMUtility.TransferItemProp(self,b); ClearCounters(); Destroy(); @@ -744,23 +694,22 @@ Class ChanceboxSpawner : Actor tbox[1] = pos.y-32; tbox[2] = pos.x-32; tbox[3] = pos.x+32; - while ( bl.Next() ) + foreach ( l,p,f:bl ) { - Line l = bl.CurLine; if ( !l ) continue; if ( tbox[2] > l.bbox[3] ) continue; if ( tbox[3] < l.bbox[2] ) continue; if ( tbox[0] < l.bbox[1] ) continue; if ( tbox[1] > l.bbox[0] ) continue; - if ( SWWMUtility.BoxOnLineSide(tbox[0],tbox[1],tbox[2],tbox[3],l) != -1 ) continue; + if ( Level.BoxOnLineSide(pos.xy,32,l) != -1 ) continue; // there isn't enough space to spawn a box here - let b = Spawn("HealthNuggetItem",pos); + let b = Spawn('HealthNuggetItem',pos); SWWMUtility.TransferItemProp(self,b); ClearCounters(); Destroy(); return; } - let b = Spawn("Chancebox",pos); + let b = Spawn('Chancebox',pos); // copy all our stuff SWWMUtility.TransferItemProp(self,b); ClearCounters(); @@ -793,7 +742,7 @@ Class CBoxLight : SpotLightAttenuated override void Tick() { Super.Tick(); - if ( !target || target.InStateSequence(target.CurState,target.FindState("BlowUp")) ) + if ( !target || target.InStateSequence(target.CurState,target.FindState('BlowUp')) ) { Destroy(); return; @@ -801,7 +750,269 @@ Class CBoxLight : SpotLightAttenuated Vector2 ofs = ((special1<2)?8:-8,(special1%2)?12:-12)*target.scale.x; double ang = (special1<2)?0:180; angle = target.angle+ang; - SetOrigin(target.Vec3Offset(ofs.x*cos(target.angle)-ofs.y*sin(target.angle),ofs.y*cos(target.angle)+ofs.x*sin(target.angle),10*target.scale.y),true); + ofs = RotateVector(ofs,target.angle); + SetOrigin(target.Vec3Offset(ofs.x,ofs.y,10*target.scale.y),true); + } +} + +Class ChanceboxReward play abstract +{ + // check if this reward can drop (e.g.: if player owns a specific weapon) + virtual bool CheckRequirements() + { + // always available by default + return true; + } + + // spawn the reward from this subclass + abstract void SpawnReward( Vector3 pos ); + + // drop at + // optionally, set bDROPPED flag on it + static void SpawnCenter( Vector3 pos, Class item, bool bDROPPED = false ) + { + let a = Actor.Spawn(item,pos); + a.bDROPPED = bDROPPED; + a.vel.z = FRandom[Chancebox](2.,4.); + } + + // drop of in a circle at with FRandom[Chancebox](+1) horizontal speed, and optionally choosing whenever (i%) + // circle drops will always have bDROPPED + static void SpawnCircle( Vector3 pos, int number, Class item, double minthrow = 1., double maxthrow = 1., Class item2 = null, int item2ratio = 2 ) + { + Actor a; + for ( int i=0; i vipammodrop = null; + if ( SWWMUtility.ItemExists('Ynykron',ownedonly:true) && SWWMUtility.CheckNeedsItem('YnykronAmmo',true) && Random[Chancebox](0,1) ) vipammodrop = 'YnykronAmmo'; + //if ( SWWMUtility.ItemExists("RafanKos',ownedonly:true) && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && Random[Chancebox](0,1) && !vipammodrop ) vipammodrop = 'UltimateAmmo'; + if ( SWWMUtility.ItemExists('Spreadgun',ownedonly:true) && SWWMUtility.CheckNeedsItem('GoldShell',true) && !vipammodrop ) vipammodrop = 'GoldShell'; + Class vipitemdrop = null; + if ( SWWMUtility.CheckNeedsItem('Mykradvo',true) && !SWWMUtility.ItemExists('Mykradvo',worldonly:true) && Random[Chancebox](0,1) ) vipitemdrop = 'Mykradvo'; + if ( SWWMUtility.CheckNeedsItem('AngerySigil',true) && !SWWMUtility.ItemExists('AngerySigil',worldonly:true) && Random[Chancebox](0,1) && !vipitemdrop ) vipitemdrop = 'AngerySigil'; + if ( SWWMUtility.CheckNeedsItem('DivineSprite',true) && !SWWMUtility.ItemExists('DivineSprite',worldonly:true) && Random[Chancebox](0,1) && !vipitemdrop ) vipitemdrop = 'DivineSprite'; + if ( !vipitemdrop ) vipitemdrop = 'GrilledCheeseSandwich'; + SpawnCenter(pos,(!Random[Chancebox](0,2)&&vipammodrop)?vipammodrop:vipitemdrop); + } +} +// sometimes mapsets don't have chainsaw spawns for whatever reason +// so we drop a hammer as reward +Class RewardHammer : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.CheckNeedsItem('ItamexHammer'); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'ItamexHammer'); + } +} +// mortal rifle ammo treats +Class RewardMisterRifle : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('MisterRifle',ownedonly:true)&&(SWWMUtility.CheckNeedsItem('MisterGAmmo',true)||SWWMUtility.CheckNeedsItem('MisterAmmo',true)||SWWMUtility.CheckNeedsItem('MisterRound',true)); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'MisterGAmmo'); + SpawnCircle(pos,4,'MisterRound'); + SpawnCircle(pos,8,'MisterRound',3.); + } +} +// a spare candy gun and some bullets +Class RewardCandyGun : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('CandyGun',ownedonly:true)&&(SWWMUtility.CheckNeedsItem('CandyGunAmmo',true)||SWWMUtility.CheckNeedsItem('CandyGunBullets',true)||SWWMUtility.CheckNeedsItem('CandyGunSpares',true)); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'CandyGun'); + SpawnCircle(pos,7,'CandyGunBullets'); + } +} +// them big bolts +/*Class RewardThiccBolts : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('RayKhom',ownedonly:true)&&(SWWMUtility.CheckNeedsItem('RayAmmo',true)||SWWMUtility.CheckNeedsItem('RayBolt',true)); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'RayAmmo',true); + SpawnCircle(pos,4,'RayBolt'); + SpawnCircle(pos,6,'RayBolt',3.); + } +}*/ +// them silver bullets +Class RewardSilverBullets : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('SilverBullet',ownedonly:true)&&(SWWMUtility.CheckNeedsItem('SilverBulletAmmo',true)||SWWMUtility.CheckNeedsItem('SilverBullets',true)); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCircle(pos,4,'SilverBullets'); + SpawnCircle(pos,6,'SilverBullets',3.); + } +} +// blues 'n reds +/*Class RewardSparkCells : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('ModernSparkster',ownedonly:true)&&(SWWMUtility.CheckNeedsItem('SparksterBAmmo',true)||SWWMUtility.CheckNeedsItem('SparksterRAmmo',true)); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCircle(pos,6,'SparksterBAmmo',item2:'SparksterRAmmo'); + } +}*/ +// buncha spark units +Class RewardSparkUnits : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('Sparkster',ownedonly:true)&&SWWMUtility.CheckNeedsItem('SparkUnit',true); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'SparkUnit2',true); + SpawnCircle(pos,3,'SparkUnit'); + } +} +// assortment of Quadravol cells +Class RewardQuadCells : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('Quadravol',ownedonly:true)&&SWWMUtility.CheckNeedsItem('QuadravolAmmo',true); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'QuadravolAmmo3',true); + SpawnCircle(pos,3,'QuadravolAmmo'); + SpawnCircle(pos,6,'QuadravolAmmo',3.); + } +} +// lotta hellblazers +Class RewardHellblazers : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('Hellblazer',ownedonly:true)&&SWWMUtility.CheckNeedsItem('HellblazerMissiles',true); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'HellblazerMissiles3',true); + SpawnCircle(pos,3,'HellblazerMissiles'); + SpawnCircle(pos,6,'HellblazerMissiles',3.); + } +} +// BOOLETS +Class RewardSheenAmmo : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('HeavyMahSheenGun',ownedonly:true)&&SWWMUtility.CheckNeedsItem('SheenAmmo',true); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'SheenBigAmmo',true); + SpawnCircle(pos,5,'SheenSmallAmmo',3.); + SpawnCircle(pos,8,'SheenAmmo3',5.,item2:'SheenAmmo2'); + } +} +// Flak'em +Class RewardFlakShells : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists('Eviscerator',ownedonly:true)&&SWWMUtility.CheckNeedsItem('EvisceratorShell',true); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'EvisceratorSixPack',true); + SpawnCircle(pos,6,'EvisceratorShell',3.); + } +} +// screwbullet droppage +/*Class RewardScrews : ChanceboxReward +{ + override bool CheckRequirements() + { + return (SWWMUtility.ItemExists('PuntzerBeta',ownedonly:true)||SWWMUtility.ItemExists('PuntzerGamma',ownedonly:true))&&SWWMUtility.CheckNeedsItem('SMW05Ammo',true); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'SMW05SmallAmmo',true); + SpawnCircle(pos,6,'SMW05Ammo2',2.); + SpawnCircle(pos,12,'SMW05Ammo',4.); + } +}*/ +// Lotta shells +Class RewardShells : ChanceboxReward +{ + override bool CheckRequirements() + { + return (SWWMUtility.ItemExists('Spreadgun',ownedonly:true)||SWWMUtility.ItemExists('Wallbuster',ownedonly:true))&&SWWMUtility.CheckNeedsItem('RedShell',true); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'RedShell4',true); + SpawnCircle(pos,4,'RedShell2',2.); + SpawnCircle(pos,8,'RedShell',4.); + } +} +// Buncha nuggets +Class RewardNuggets : ChanceboxReward +{ + override void SpawnReward( Vector3 pos ) + { + SpawnCircle(pos,20,Random[ChanceBox](0,1)?'HealthNuggetItem':'ArmorNuggetItem',1.,7.); + } +} +// Healing surprise +Class RewardSuperHealth : ChanceboxReward +{ + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,'RefresherItem'); + SpawnCircle(pos,15,'HealthNuggetItem',3.); } } @@ -816,17 +1027,15 @@ Class Chancebox : Actor // find all secret sectors, find potential spawn spots within them // after that, spawn up to 3 boxes total within them int tboxes = 0; - for ( int i=0; i maxradius ) maxradius = v1len; @@ -841,7 +1050,7 @@ Class Chancebox : Actor for ( double k=0.; k<360.; k+=(360./rings) ) { // check spot - Vector3 testpos = (origin.x+j*cos(k),origin.y+j*sin(k),0); + Vector3 testpos = (origin.x,origin.y,0)+SWWMUtility.AngleToVector3(k,j); testpos.z = s.floorplane.ZAtPoint(testpos.xy); if ( (level.PointInSector(testpos.xy) != s) || !level.IsPointInLevel(testpos) ) continue; double ceil = s.ceilingplane.ZAtPoint(testpos.xy); @@ -853,15 +1062,14 @@ Class Chancebox : Actor tbox[1] = testpos.y-32; tbox[2] = testpos.x-32; tbox[3] = testpos.x+32; - while ( bl.Next() ) + foreach ( l,p,f:bl ) { - Line l = bl.CurLine; if ( !l ) continue; if ( tbox[2] > l.bbox[3] ) continue; if ( tbox[3] < l.bbox[2] ) continue; if ( tbox[0] < l.bbox[1] ) continue; if ( tbox[1] > l.bbox[0] ) continue; - if ( SWWMUtility.BoxOnLineSide(tbox[0],tbox[1],tbox[2],tbox[3],l) != -1 ) continue; + if ( Level.BoxOnLineSide(testpos.xy,32,l) != -1 ) continue; blocked = true; break; } @@ -886,16 +1094,16 @@ Class Chancebox : Actor if ( cz-fz < 60 ) continue; // too short bool blockedff = false; BlockThingsIterator bt = BlockThingsIterator.CreateFromPos(testpos.x,testpos.y,fz,60,256,false); - while ( bt.Next() ) + foreach ( t,p,f:bt ) { - if ( !bt.Thing ) continue; - if ( abs(bt.Thing.pos.x-testpos.x) > 32+bt.Thing.Radius ) continue; - if ( abs(bt.Thing.pos.y-testpos.y) > 32+bt.Thing.Radius ) continue; + if ( !t ) continue; + if ( abs(t.pos.x-testpos.x) > 32+t.Radius ) continue; + if ( abs(t.pos.y-testpos.y) > 32+t.Radius ) continue; blockedff = true; break; } if ( blockedff ) continue; - let sp = new("BoxSpawnSpot"); + let sp = new('BoxSpawnSpot'); sp.pos = (testpos.x,testpos.y,fz); sp.angle = k+180; spots.Push(sp); @@ -905,16 +1113,15 @@ Class Chancebox : Actor // don't spawn on sky or hurtfloors if there are 3D floors if ( (nffloor > 0) && ((s.GetTexture(0) == skyflatnum) || (s.damageamount > 0)) ) continue; BlockThingsIterator bt = BlockThingsIterator.CreateFromPos(testpos.x,testpos.y,testpos.z,60,256,false); - while ( bt.Next() ) + foreach ( t,p,f:bt ) { - if ( !bt.Thing ) continue; - if ( abs(bt.Thing.pos.x-testpos.x) > 32+bt.Thing.Radius ) continue; - if ( abs(bt.Thing.pos.y-testpos.y) > 32+bt.Thing.Radius ) continue; + if ( abs(t.pos.x-testpos.x) > 32+t.Radius ) continue; + if ( abs(t.pos.y-testpos.y) > 32+t.Radius ) continue; blocked = true; break; } if ( blocked ) continue; - let sp = new("BoxSpawnSpot"); + let sp = new('BoxSpawnSpot'); sp.pos = testpos; sp.angle = k+180; spots.Push(sp); @@ -923,27 +1130,27 @@ Class Chancebox : Actor } if ( spots.Size() < 10 ) continue; int ws = Random[Chancebox](0,spots.Size()-1); - let c = Spawn("ChanceboxSpawner",spots[ws].pos); + let c = Spawn('ChanceboxSpawner',spots[ws].pos); c.angle = spots[ws].angle; tboxes++; if ( tboxes >= 3 ) break; // already spawned 3 boxes in one map (which is a lot) } } - action void A_DropSomething() + void A_DropSomething() { Array > candidates; candidates.Clear(); - for ( int i=0; i)(AllActorClasses[i]); + let c = (Class)(cls); if ( !c || (c == 'SWWMCollectible') ) continue; let def = GetDefaultByType(c); // check that we can collect it in this IWAD if ( !def.ValidGame() ) continue; candidates.Push(c); } - let ti = ThinkerIterator.Create("SWWMCollectible"); + let ti = ThinkerIterator.Create('SWWMCollectible'); SWWMCollectible c; while ( c = SWWMCollectible(ti.Next()) ) { @@ -951,175 +1158,74 @@ Class Chancebox : Actor if ( f < candidates.Size() ) candidates.Delete(f); } - if ( (candidates.Size() <= 0) || invoker.dud ) + if ( (candidates.Size() <= 0) || dud ) { - // no candidates? just burst into treats + // no collectible candidates? just burst into treats if ( (scale.x > .5) && (Random[Chancebox](0,int(9*scale.x*scale.x)) < 3) ) { // spawn another smaller chancebox // (chance increases for the inner box, up until a scale factor of 50% is reached) - let a = Spawn("Chancebox",pos+(0,0,3*scale.y)); - a.bDROPPED = false; - a.bNOGRAVITY = false; + let a = Spawn('Chancebox',pos+(0,0,3*scale.y)); a.vel.z = FRandom[Chancebox](2,4); a.angle = angle; a.scale *= scale.x-.125; if ( target && (a.scale.x <= .5) ) SWWMUtility.MarkAchievement("matryoshka",target.player); } - else if ( Random[Chancebox](0,1) ) - { - Class vipammodrop = null; - if ( SWWMUtility.ItemExists("Ynykron") && Random[Chancebox](0,1) ) vipammodrop = "YnykronAmmo"; - //if ( SWWMUtility.ItemExists("GrandLance") && Random[Chancebox](0,1) && !vipammodrop ) vipammodrop = "GrandAmmo"; - //if ( SWWMUtility.ItemExists("RafanKos") && Random[Chancebox](0,1) && !vipammodrop ) vipammodrop = "UltimateAmmo"; - if ( SWWMUtility.ItemExists("Spreadgun") && SWWMUtility.CheckNeedsItem("GoldShell",true) && !vipammodrop ) vipammodrop = "GoldShell"; - Class vipitemdrop = null; - if ( SWWMUtility.CheckNeedsItem("Mykradvo",true) && !SWWMUtility.ItemExists("Mykradvo",worldonly:true) && Random[Chancebox](0,1) ) vipitemdrop = "Mykradvo"; - if ( SWWMUtility.CheckNeedsItem("AngerySigil",true) && !SWWMUtility.ItemExists("AngerySigil",worldonly:true) && Random[Chancebox](0,1) && !vipitemdrop ) vipitemdrop = "AngerySigil"; - if ( SWWMUtility.CheckNeedsItem("DivineSprite",true) && !SWWMUtility.ItemExists("DivineSprite",worldonly:true) && Random[Chancebox](0,1) && !vipitemdrop ) vipitemdrop = "DivineSprite"; - if ( !vipitemdrop ) vipitemdrop = "GrilledCheeseSandwich"; - let a = Spawn((!Random[Chancebox](0,2)&&vipammodrop)?vipammodrop:vipitemdrop,pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - } - else if ( !Random[Chancebox](0,2) && SWWMUtility.ItemExists("CandyGun") ) - { - for ( int i=0; i<=6; i++ ) - { - let a = Spawn((i==0)?"CandyGun":"CandyGunBullets",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - if ( i > 0 ) a.vel.xy = (cos(i*60),sin(i*60))*FRandom[Chancebox](1,2); - } - } - else if ( !Random[Chancebox](0,2) && SWWMUtility.ItemExists("SilverBullet") ) - { - for ( int i=0; i<3; i++ ) - { - let a = Spawn("SilverBullets2",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*120),sin(i*120))*FRandom[Chancebox](1,2); - } - for ( int i=0; i<6; i++ ) - { - let a = Spawn("SilverBullets",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*60),sin(i*60))*FRandom[Chancebox](3,4); - } - } - else if ( Random[Chancebox](0,1) && SWWMUtility.ItemExists("Hellblazer") ) - { - let a = Spawn("HellblazerWarheads",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - for ( int i=0; i<3; i++ ) - { - a = Spawn("HellblazerRavagers",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*120),sin(i*120))*FRandom[Chancebox](1,2); - } - for ( int i=0; i<5; i++ ) - { - a = Spawn("HellblazerCrackshots",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*72),sin(i*72))*FRandom[Chancebox](3,4); - } - for ( int i=0; i<8; i++ ) - { - a = Spawn("HellblazerMissiles",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*45),sin(i*45))*FRandom[Chancebox](5,6); - } - } - else if ( Random[Chancebox](0,1) && SWWMUtility.ItemExists("Spreadgun") ) - { - let a = Spawn("BlackShell",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - for ( int i=0; i<3; i++ ) - { - a = Spawn("WhiteShell",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*120),sin(i*120))*FRandom[Chancebox](1,2); - } - for ( int i=0; i<8; i++ ) - { - a = Spawn((i%2)?"PurpleShell":"BlueShell",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*72),sin(i*72))*FRandom[Chancebox](3,4); - } - for ( int i=0; i<12; i++ ) - { - a = Spawn((i%2)?"RedShell":"GreenShell",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*30),sin(i*30))*FRandom[Chancebox](5,6); - } - } - else if ( Random[Chancebox](0,1) ) - { - Class which = Random[Chancebox](1,0)?"HealthNuggetItem":"ArmorNuggetItem"; - for ( int i=0; i<20; i++ ) - { - let a = Spawn(which,pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,8); - a.vel.xy = (cos(i*18),sin(i*18))*FRandom[Chancebox](1,8); - } - } else { - for ( int i=0; i<=15; i++ ) + // populate reward choices to randomize + Array rewards; + foreach ( cls:AllClasses ) { - let a = Spawn((i==0)?"RefresherItem":(i%3)?"HealthNuggetItem":"ArmorNuggetItem",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - if ( i > 0 ) a.vel.xy = (cos(i*24),sin(i*24))*FRandom[Chancebox](1,2); + let cls = (Class)(cls); + if ( !cls || cls.isAbstract() ) continue; + let cr = ChanceboxReward(new(cls)); + rewards.Push(cr); } + // discard those that don't meet requirements + for ( int i=0; i)(AllActorClasses[i]); + let c = (Class)(cls); if ( !c || (c == 'SWWMCollectible') ) continue; let def = GetDefaultByType(c); // check that we can collect it in this IWAD @@ -1159,7 +1265,7 @@ Class Chancebox : Actor if ( (col > 0) && !Random[Chancebox](0,alldudchance) ) { // all boxes are duds - let ti = ThinkerIterator.Create("Chancebox"); + let ti = ThinkerIterator.Create('Chancebox'); Chancebox c; while ( c = Chancebox(ti.Next()) ) { @@ -1171,7 +1277,7 @@ Class Chancebox : Actor { int nbox = 0, ndud = 0; // this one's a dud (unless all the others are) - let ti = ThinkerIterator.Create("Chancebox"); + let ti = ThinkerIterator.Create('Chancebox'); Chancebox c; while ( c = Chancebox(ti.Next()) ) { @@ -1184,7 +1290,7 @@ Class Chancebox : Actor else { // the others are duds - let ti = ThinkerIterator.Create("Chancebox"); + let ti = ThinkerIterator.Create('Chancebox'); Chancebox c; bool onemore = !Random[Chancebox](0,2); // unless... while ( c = Chancebox(ti.Next()) ) @@ -1202,25 +1308,9 @@ Class Chancebox : Actor } chanceinit = true; } - if ( bCOUNTITEM ) - { - user.player.itemcount++; - level.found_items++; - bCOUNTITEM = false; - } - if ( bCOUNTSECRET ) - { - user.GiveSecret(); - bCOUNTSECRET = false; - } - if ( special ) - { - user.A_CallSpecial(special,args[0],args[1],args[2],args[3],args[4]); - special = 0; - } SWWMLoreLibrary.Add(user.player,"Chancebox"); specialf2 = AngleTo(user); - SetStateLabel("PreActive"); + SetStateLabel('PreActive'); target = user; return true; } @@ -1229,15 +1319,15 @@ Class Chancebox : Actor Super.PostBeginPlay(); for ( int i=0; i<4; i++ ) { - let l = Spawn("CBoxLight",pos); + let l = Spawn('CBoxLight',pos); l.special1 = i; l.target = self; } - let ti = ThinkerIterator.Create("Chancebox"); + let ti = ThinkerIterator.Create('Chancebox'); Chancebox c; while ( c = Chancebox(ti.Next()) ) { - if ( c.dud || (c.CurState == c.FindState("Spawn")) ) + if ( c.dud || (c.CurState == c.FindState('Spawn')) ) continue; // automatically become a dud if collectible has been found dud = true; @@ -1270,7 +1360,7 @@ Class Chancebox : Actor int sign = (delta>=0.)?1:-1; delta = clamp(abs(delta)*.15,.1,10.)*sign; angle += delta; - return A_JumpIf(abs(deltaangle(angle,specialf2))<1.,"Active"); + return A_JumpIf(abs(deltaangle(angle,specialf2))<1.,'Active'); } Wait; Active: @@ -1287,24 +1377,24 @@ Class Chancebox : Actor pitch = FRandom[Chancebox](-5,5); roll = FRandom[Chancebox](-5,5); special1++; - return A_JumpIf(special1>int(40*scale.x),"BlowUp"); + return A_JumpIf(special1>int(40*scale.x),'BlowUp'); } Wait; BlowUp: XZW2 A 1 { A_SetSize(default.radius*scale.x,2.5*scale.y); - A_QuakeEx(2,2,2,9,0,500,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollIntensity:.2); + A_QuakeEx(2.4,2.4,2.4,9,0,500,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:200,rollIntensity:.2); A_StartSound("chancebox/explode",CHAN_VOICE,pitch:1./scale.x); angle = specialf1; pitch = roll = 0; - let t = Spawn("ChanceboxTop",Vec3Offset(0,0,20*scale.y)); + let t = Spawn('ChanceboxTop',Vec3Offset(0,0,20*scale.y)); t.angle = angle; t.scale = scale; - let s1 = Spawn("ChanceboxSide",level.Vec3Offset(pos,(RotateVector((12*scale.x,0),angle+90),0))); + let s1 = Spawn('ChanceboxSide',level.Vec3Offset(pos,(RotateVector((12*scale.x,0),angle+90),0))); s1.angle = angle+90; s1.scale = scale; - let s2 = Spawn("ChanceboxSide",level.Vec3Offset(pos,(RotateVector((12*scale.x,0),angle-90),0))); + let s2 = Spawn('ChanceboxSide',level.Vec3Offset(pos,(RotateVector((12*scale.x,0),angle-90),0))); s2.angle = angle-90; s2.scale = scale; A_DropSomething(); @@ -1325,6 +1415,7 @@ Class ChanceboxTop : Actor Species "Chancebox"; PROJECTILE; +THRUSPECIES; + +NOFRICTION; } override void PostBeginPlay() { @@ -1346,7 +1437,7 @@ Class ChanceboxTop : Actor } Wait; Death: - TNT1 A 1 A_SpawnItemEx("ExplodiumBulletImpact"); + TNT1 A 1 A_SpawnItemEx('ExplodiumBulletImpact'); Stop; } } @@ -1361,11 +1452,12 @@ Class ChanceboxSide : Actor Species "Chancebox"; PROJECTILE; +THRUSPECIES; + +NOFRICTION; } override void PostBeginPlay() { Super.PostBeginPlay(); - vel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch))*20; + vel = SWWMUtility.Vec3FromAngles(angle,pitch)*20; A_SetSize(default.radius*scale.x,default.height*scale.y); } States @@ -1382,7 +1474,7 @@ Class ChanceboxSide : Actor } Wait; Death: - TNT1 A 1 A_SpawnItemEx("ExplodiumBulletImpact"); + TNT1 A 1 A_SpawnItemEx('ExplodiumBulletImpact'); Stop; } } diff --git a/zscript/items/swwm_health.zsc b/zscript/items/swwm_health.zsc index 30940f31f..70d759306 100644 --- a/zscript/items/swwm_health.zsc +++ b/zscript/items/swwm_health.zsc @@ -3,7 +3,7 @@ Class HealthNugget : Health { Default { - Inventory.Amount 1; + Inventory.Amount 2; Inventory.MaxAmount 200; } } @@ -55,8 +55,9 @@ Class RefresherRegen : Powerup Super.DoEffect(); if ( !Owner || (Owner.health <= 0) || ((EffectTics-5)%175) ) return; if ( !Owner.GiveBody(int(Strength),500) ) return; - SWWMScoreObj.Spawn(int(Strength),Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); SWWMHandler.DoFlash(Owner,Color(32,224,128,255),10); + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(int(Strength),Owner,Font.CR_BLUE); Owner.A_StartSound("powerup/refresher",CHAN_ITEMEXTRA,CHANF_LOCAL|CHANF_OVERLAP,.4); if ( Owner is 'Demolitionist' ) Demolitionist(Owner).lastbump *= 0.99; @@ -65,11 +66,24 @@ Class RefresherRegen : Powerup Class HealthNuggetItem : SWWMHealth { - override Inventory CreateCopy( Actor other ) + override bool Use( bool pickup ) { // additional lore - SWWMLoreLibrary.Add(other.player,"Nugget"); - return Super.CreateCopy(other); + SWWMLoreLibrary.Add(Owner.player,"Nugget"); + bool bUsed = Super.Use(pickup); + // sell excess + if ( !bUsed && Owner.player ) + { + int sellprice = abs(Stamina)/2; + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner); + Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + } + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } + return bUsed; } override void DoPickupSpecial( Actor toucher ) { @@ -78,20 +92,14 @@ Class HealthNuggetItem : SWWMHealth } Default { - //$Title Health Nugget - //$Group Health - //$Sprite graphics/HUD/Icons/I_HealthNugget.png - //$Icon health Tag "$T_NUGGETH"; - Stamina 200; - Inventory.Icon "graphics/HUD/Icons/I_HealthNugget.png"; + Stamina -500; Inventory.PickupMessage "$T_NUGGETH"; - Inventory.MaxAmount 20; - Inventory.InterHubAmount 20; - SWWMHealth.GiveHealth "HealthNugget"; + Inventory.MaxAmount 0; + Inventory.InterHubAmount 0; + SWWMHealth.GiveHealth 'HealthNugget'; +INVENTORY.ALWAYSPICKUP; - Radius 4; - Height 22; + -INVENTORY.INVBAR; } States { @@ -117,24 +125,18 @@ Class TetraHealthItem : SWWMHealth } Default { - //$Title Health Tetrahedron - //$Group Health - //$Sprite graphics/HUD/Icons/I_HealthTetra.png - //$Icon health Tag "$T_TETRAHEALTH"; Stamina 2000; Inventory.Icon "graphics/HUD/Icons/I_HealthTetra.png"; Inventory.PickupMessage "$T_TETRAHEALTH"; Inventory.MaxAmount 15; Inventory.InterHubAmount 15; - SWWMHealth.GiveHealth "TetraHealth"; - Radius 8; - Height 24; + SWWMHealth.GiveHealth 'TetraHealth'; } States { Spawn: - XZW1 # -1; + XZW1 A -1; Stop; } } @@ -148,24 +150,18 @@ Class CubeHealthItem : SWWMHealth } Default { - //$Title Health Cube - //$Group Health - //$Sprite graphics/HUD/Icons/I_HealthCube.png - //$Icon health Tag "$T_CUBEHEALTH"; Stamina 4000; Inventory.Icon "graphics/HUD/Icons/I_HealthCube.png"; Inventory.PickupMessage "$T_CUBEHEALTH"; Inventory.MaxAmount 10; Inventory.InterHubAmount 10; - SWWMHealth.GiveHealth "CubeHealth"; - Radius 8; - Height 24; + SWWMHealth.GiveHealth 'CubeHealth'; } States { Spawn: - XZW1 # -1; + XZW1 A -1; Stop; } } @@ -182,9 +178,9 @@ Class RefresherItem : SWWMHealth SWWMUtility.AchievementProgressInc("refresh",1,Owner.player); // regen effect doesn't stack if we autoactivated recursively if ( recursive ) return; - let p = Powerup(Owner.FindInventory("RefresherRegen")); + let p = Powerup(Owner.FindInventory('RefresherRegen')); if ( p ) p.EffectTics += p.default.EffectTics; - else Owner.GiveInventory("RefresherRegen",1); + else Owner.GiveInventory('RefresherRegen',1); SWWMHandler.DoFlash(Owner,Color(80,224,128,255),20); if ( Owner is 'Demolitionist' ) Demolitionist(Owner).lastbump *= 0.95; @@ -197,27 +193,21 @@ Class RefresherItem : SWWMHealth } Default { - //$Title Refresher - //$Group Health - //$Sprite graphics/HUD/Icons/I_Refresher.png - //$Icon health Tag "$T_REFRESHER"; Stamina 160000; Inventory.Icon "graphics/HUD/Icons/I_Refresher.png"; Inventory.PickupMessage "$T_REFRESHER"; Inventory.PickupSound "misc/p_pkup"; Inventory.UseSound "powerup/refresheruse"; - SWWMHealth.GiveHealth "RefresherHealth"; + SWWMHealth.GiveHealth 'RefresherHealth'; +COUNTITEM; +INVENTORY.BIGPOWERUP; +INVENTORY.ALWAYSPICKUP; - Radius 6; - Height 24; } States { Spawn: - XZW1 # -1; + XZW1 A -1; Stop; } } diff --git a/zscript/items/swwm_keys.zsc b/zscript/items/swwm_keys.zsc index 69bb086d3..67b49dfcd 100644 --- a/zscript/items/swwm_keys.zsc +++ b/zscript/items/swwm_keys.zsc @@ -4,13 +4,10 @@ Class SWWMKey : Key abstract { Mixin SWWMOverlapPickupSound; Mixin SWWMUseToPickup; + Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; - bool propagated; - Class gesture; - - Property GestureWeapon : gesture; - - override bool TryPickup( in out Actor toucher ) + override bool TryPickup( Actor &toucher ) { // attach the vanilla key that we replace let rt = toucher; @@ -18,14 +15,10 @@ Class SWWMKey : Key abstract Class pc = Species; if ( pc && !rt.FindInventory(pc) ) { - if ( rt.player && !deathmatch && !propagated && CVar.GetCVar('swwm_collectanimkey',rt.player).GetBool() ) - SWWMGesture.SetSpecialGesture(rt.player.mo,gesture); let p = Inventory(Spawn(pc)); SWWMHandler.KeyTagFix(p); p.AttachToOwner(rt); } - // clean up the flag - propagated = false; GoAwayAndDie(); return true; } @@ -45,10 +38,7 @@ Class SWWMRedCard : SWWMKey Tag "$T_REDCARD"; Species "RedCard"; Inventory.PickupMessage "$T_REDCARD"; - Inventory.PickupFlash "SWWMRedPickupFlash"; - SWWMKey.GestureWeapon "SWWMRedCardGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMRedPickupFlash'; } States { @@ -64,10 +54,7 @@ Class SWWMYellowCard : SWWMKey Tag "$T_YELLOWCARD"; Species "YellowCard"; Inventory.PickupMessage "$T_YELLOWCARD"; - Inventory.PickupFlash "SWWMPickupFlash"; - SWWMKey.GestureWeapon "SWWMYellowCardGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMPickupFlash'; } States { @@ -83,10 +70,7 @@ Class SWWMBlueCard : SWWMKey Tag "$T_BLUECARD"; Species "BlueCard"; Inventory.PickupMessage "$T_BLUECARD"; - Inventory.PickupFlash "SWWMBluePickupFlash"; - SWWMKey.GestureWeapon "SWWMBlueCardGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMBluePickupFlash'; } States { @@ -102,10 +86,7 @@ Class SWWMSilverCardKDiZD : SWWMKey Tag "$T_SILVERCARD"; Species "BlueSkull"; Inventory.PickupMessage "$T_SILVERCARD"; - Inventory.PickupFlash "SWWMWhitePickupFlash"; - SWWMKey.GestureWeapon "SWWMSilverCardGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMWhitePickupFlash'; } States { @@ -121,10 +102,7 @@ Class SWWMGreenCardKDiZD : SWWMKey Tag "$T_GREENCARD"; Species "YellowSkull"; Inventory.PickupMessage "$T_GREENCARD"; - Inventory.PickupFlash "SWWMGreenPickupFlash"; - SWWMKey.GestureWeapon "SWWMGreenCardGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMGreenPickupFlash'; } States { @@ -140,10 +118,7 @@ Class SWWMOrangeCardKDiZD : SWWMKey Tag "$T_ORANGECARD"; Species "RedSkull"; Inventory.PickupMessage "$T_ORANGECARD"; - Inventory.PickupFlash "SWWMPickupFlash"; - SWWMKey.GestureWeapon "SWWMOrangeCardGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMPickupFlash'; } States { @@ -159,10 +134,7 @@ Class SWWMGreenCard : SWWMKey Tag "$T_GREENCARD"; Species "GreenCard"; Inventory.PickupMessage "$T_GREENCARD"; - Inventory.PickupFlash "SWWMGreenPickupFlash"; - SWWMKey.GestureWeapon "SWWMGreenCardGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMGreenPickupFlash'; } States { @@ -180,10 +152,7 @@ Class SWWMRedSkull : SWWMKey Tag "$T_REDSKULL"; Species "RedSkull"; Inventory.PickupMessage "$T_REDSKULL"; - Inventory.PickupFlash "SWWMRedPickupFlash"; - SWWMKey.GestureWeapon "SWWMRedSkullGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMRedPickupFlash'; } States { @@ -199,10 +168,7 @@ Class SWWMBlueSkull : SWWMKey Tag "$T_BLUESKULL"; Species "BlueSkull"; Inventory.PickupMessage "$T_BLUESKULL"; - Inventory.PickupFlash "SWWMBluePickupFlash"; - SWWMKey.GestureWeapon "SWWMBlueSkullGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMBluePickupFlash'; } States { @@ -218,10 +184,7 @@ Class SWWMYellowSkull : SWWMKey Tag "$T_YELLOWSKULL"; Species "YellowSkull"; Inventory.PickupMessage "$T_YELLOWSKULL"; - Inventory.PickupFlash "SWWMPickupFlash"; - SWWMKey.GestureWeapon "SWWMYellowSkullGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMPickupFlash'; } States { @@ -237,10 +200,7 @@ Class SWWMPurpleSkull : SWWMKey Tag "$T_PURPLESKULL"; Species "PurpleSkull"; Inventory.PickupMessage "$T_PURPLESKULL"; - Inventory.PickupFlash "SWWMPurplePickupFlash"; - SWWMKey.GestureWeapon "SWWMPurpleSkullGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMPurplePickupFlash'; } States { @@ -323,10 +283,7 @@ Class SWWMKeyGreen : SWWMKey Tag "$T_KEYGREEN"; Species "KeyGreen"; Inventory.PickupMessage "$T_KEYGREEN"; - Inventory.PickupFlash "SWWMGreenPickupFlash"; - SWWMKey.GestureWeapon "SWWMGreenKeyGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMGreenPickupFlash'; } States { @@ -342,10 +299,7 @@ Class SWWMKeyBlue : SWWMKey Tag "$T_KEYBLUE"; Species "KeyBlue"; Inventory.PickupMessage "$T_KEYBLUE"; - Inventory.PickupFlash "SWWMBluePickupFlash"; - SWWMKey.GestureWeapon "SWWMBlueKeyGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMBluePickupFlash'; } States { @@ -361,10 +315,7 @@ Class SWWMKeyYellow : SWWMKey Tag "$T_KEYYELLOW"; Species "KeyYellow"; Inventory.PickupMessage "$T_KEYYELLOW"; - Inventory.PickupFlash "SWWMPickupFlash"; - SWWMKey.GestureWeapon "SWWMYellowKeyGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMPickupFlash'; } States { @@ -380,10 +331,7 @@ Class SWWMKeyRed : SWWMKey Tag "$T_KEYRED"; Species "KeyRed"; Inventory.PickupMessage "$T_KEYRED"; - Inventory.PickupFlash "SWWMRedPickupFlash"; - SWWMKey.GestureWeapon "SWWMRedKeyGesture"; - Radius 10; - Height 25; + Inventory.PickupFlash 'SWWMRedPickupFlash'; } States { diff --git a/zscript/items/swwm_keys_gesture.zsc b/zscript/items/swwm_keys_gesture.zsc deleted file mode 100644 index 670df8d5a..000000000 --- a/zscript/items/swwm_keys_gesture.zsc +++ /dev/null @@ -1,141 +0,0 @@ -// Key gestures -// (they all use the same exact animations, just with the object changed) -// (yeah, I'm lazy, and there's a lot of keys) -Class SWWMKeyGesture : SWWMItemGesture abstract -{ - // due to specifics™ we have to handle the punching here - override void DoEffect() - { - Super.DoEffect(); - if ( !Owner || !Owner.player || (Owner.player.Health <= 0) || (Owner.player.ReadyWeapon != self) ) - return; - PSprite psp = Owner.player.FindPSPrite(PSP_WEAPON+1); - if ( !(Owner.player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1)) && !psp ) - { - // not punching, move weapon back - psp = Owner.player.FindPSPrite(PSP_WEAPON); - if ( psp ) - { - psp.oldx = psp.x; - psp.x = max(0,psp.x-8); - psp.oldy = psp.y; - psp.y = min(32,psp.y+4); - } - return; - } - if ( psp ) - { - // already punching, let's shift the weapon away - psp = Owner.player.FindPSPrite(PSP_WEAPON); - if ( psp ) - { - // shift away from center to center - psp.oldx = psp.x; - psp.x = min(70,psp.x+8); - psp.oldy = psp.y; - psp.y = max(16,psp.y-4); - } - return; - } - // start punch - if ( Owner.player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1) ) - { - psp = Owner.player.FindPSPrite(PSP_WEAPON); - if ( psp && (psp.CurState == FindState("WaitingForEnd")) ) - return; - Owner.player.SetPSprite(PSP_WEAPON+1,FindState("Punch")); - psp = Owner.player.FindPSPrite(PSP_WEAPON+1); - if ( psp ) - { - psp.bAddWeapon = false; - psp.bAddBob = false; - psp.x = -50; - psp.y = 32; - } - } - } - - States - { - Fire: - XZW1 A 3 A_Jump(128,"Fire2","Fire3"); - XZW1 B 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); - XZW1 CDEF 3; - XZW1 GHIJKLMNO 4; - XZW1 P 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW1 QRST 3; - Goto WaitingForEnd; - Fire2: - XZW1 A 3; - XZW1 U 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); - XZW1 VWX 3; - XZW1 YZ 4; - XZW2 ABC 4; - XZW2 D 4 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP,pitch:.7); - XZW2 EFGHIJ 4; - XZW2 KL 3; - XZW2 M 3 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 NOPQR 3; - Goto WaitingForEnd; - Fire3: - XZW1 A 3; - XZW2 S 3 A_StartSound("demolitionist/handsup",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 TUVWX 3; - XZW2 YZ 4; - XZW3 ABCDE 4; - XZW3 F 2 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 GHI 2; - XZW3 JKL 3; - XZW3 MN 2; - XZW3 O 2 A_StartSound("demolitionist/petting",CHAN_WEAPON,CHANF_OVERLAP,.4); - XZW3 PQ 2; - XZW3 RS 4; - XZW3 T 4 A_StartSound("demolitionist/handsdown",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 UV 4; - XZW3 WXY 3; - Goto WaitingForEnd; - WaitingForEnd: - XZW1 A 1 A_JumpIf(!player.FindPSprite(PSP_WEAPON+1),1); - Wait; - XZW1 A -1 A_FinishGesture(); - Stop; - // overlay for melee - Punch: - XZW0 ABC 1; - PunchHold: - XZW0 D 1 - { - A_PlayerMelee(true); - A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP); - A_Parry(9); - } - XZW0 EF 1; - XZW0 G 1 A_Melee(); - XZW0 HIJKLMN 2; - XZW0 A 0 - { - if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1) ) - { - let psp = player.FindPSprite(PSP_WEAPON); - if ( psp && (psp.CurState != ResolveState("WaitingForEnd")) ) - return ResolveState("PunchHold"); - } - return ResolveState(null); - } - Stop; - } -} -Class SWWMRedCardGesture : SWWMKeyGesture {} -Class SWWMYellowCardGesture : SWWMKeyGesture {} -Class SWWMBlueCardGesture : SWWMKeyGesture {} -Class SWWMSilverCardGesture : SWWMKeyGesture {} -Class SWWMGreenCardGesture : SWWMKeyGesture {} -Class SWWMOrangeCardGesture : SWWMKeyGesture {} -Class SWWMRedSkullGesture : SWWMKeyGesture {} -Class SWWMYellowSkullGesture : SWWMKeyGesture {} -Class SWWMPurpleSkullGesture : SWWMKeyGesture {} -Class SWWMBlueSkullGesture : SWWMKeyGesture {} -Class SWWMGreenKeyGesture : SWWMKeyGesture {} -Class SWWMBlueKeyGesture : SWWMKeyGesture {} -Class SWWMYellowKeyGesture : SWWMKeyGesture {} -Class SWWMRedKeyGesture : SWWMKeyGesture {} diff --git a/zscript/items/swwm_lamp.zsc b/zscript/items/swwm_lamp.zsc new file mode 100644 index 000000000..ea3edddfa --- /dev/null +++ b/zscript/items/swwm_lamp.zsc @@ -0,0 +1,664 @@ +// Lämp + +Class LampMoth : Actor +{ + Actor lamp; + Vector3 trail, ofs; + int lifespan; + SWWMHandler hnd; + + Default + { + Tag "$T_MOTH"; + Radius 2; + Height 4; + Speed 2; + DamageFunction 1; + MeleeRange 16; + Mass 10; + Health 50; + DeathSound "moth/die"; + BloodColor "20 10 10"; + MONSTER; + -COUNTKILL; + +THRUACTORS; + +NOGRAVITY; + +NOTELEPORT; + +FLOAT; + +NOPAIN; + +FRIENDLY; + +LOOKALLAROUND; + +QUICKTORETALIATE; + +INTERPOLATEANGLES; + +NOBLOCKMONST; + } + override string GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) + { + if ( inflictor && (inflictor != self) ) + { + if ( inflictor == master ) return StringTable.Localize("$O_MOTHSELF"); // not likely to happen + else return StringTable.Localize("$O_MOTH"); + } + return StringTable.Localize("$O_MOTH2"); + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_StartSound("moth/fly",CHAN_BODY,CHANF_LOOP,.02,4.,FRandom[Moth](.8,1.2)); + if ( master && master.player ) SetFriendPlayer(master.player); + else bFRIENDLY = false; + } + override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle ) + { + // no hurt moff + if ( source && IsFriend(source) ) damage = 0; + return Super.DamageMobj(inflictor,source,damage,mod,flags,angle); + } + bool isEntranced() + { + if ( !lamp && CurSector ) // CurSector can be null somehow? + { + // look for nearby lamps + double mindist = 62500.; + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + foreach ( s:level.Sectors ) + { + // don't check sectors that aren't within bounds, saves some time + if ( !hnd.BoxInSectorBounds(s,pos.xy,250,CurSector.PortalGroup) ) + continue; + for ( Actor a=s.thinglist; a; a=a.snext ) + { + if ( !(a is 'CompanionLamp') ) continue; + double dist = Distance3DSquared(a); + if ( (a.frame == 0) || (dist > mindist) && !CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + mindist = dist; + lamp = a; + master = a.target; + if ( CompanionLamp(lamp).moff.Find(self) == CompanionLamp(lamp).moff.Size() ) + CompanionLamp(lamp).moff.Push(self); + if ( master && master.player ) SetFriendPlayer(master.player); + else bFRIENDLY = false; + } + } + } + if ( !lamp || (lamp.frame == 0) || (Distance3DSquared(lamp) > 62500) || !CheckSight(lamp,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) return false; + if ( target && (target.Health > 0) && CheckSight(target) ) return false; + return true; + } + void A_SmoothWander() + { + if ( level.Vec3Diff(pos,trail).length() < speed ) + { + double ang = FRandom[Moth](0,360); + double pt = FRandom[Moth](-30,30); + double dist = FRandom[Moth](20,40); + ofs = SWWMUtility.Vec3FromAngles(ang,pt)*dist; + } + Vector3 newpos = level.Vec3Offset(pos,ofs); + if ( level.IsPointInLevel(newpos) ) trail = newpos; + if ( vel.length() > 0 ) + { + Vector3 uvel = vel.unit(); + angle += Clamp(deltaangle(angle,atan2(uvel.y,uvel.x)),-5.,5.); + pitch += Clamp(deltaangle(pitch,asin(-uvel.z)),-5.,5.); + } + vel *= .8; + Vector3 dir = level.Vec3Diff(pos,trail); + if ( dir.length() > 0 ) vel += dir.unit()*clamp(dir.length()*.05,.4*speed,.5*speed); + } + void A_SmoothChase() + { + if ( !target || (target.Health <= 0) || target.IsFriend(self) ) + { + A_ClearTarget(); + SetStateLabel('Spawn'); + return; + } + if ( CheckMeleeRange() ) + { + SetStateLabel('Melee'); + return; + } + Vector3 dest = target.Vec3Offset(0,0,target.height*.75); + Vector3 dir = level.Vec3Diff(pos,dest); + if ( dir.length() > 0 ) + { + Vector3 dirunit = dir.unit(); + FLineTraceData d; + LineTrace(atan2(dirunit.y,dirunit.x),dir.length(),asin(-dirunit.z),data:d); + if ( (d.HitType != TRACE_HitActor) && (d.HitActor != target) ) + { + A_Chase(); + return; + } + } + if ( vel.length() > 0 ) + { + Vector3 uvel = vel.unit(); + angle = atan2(uvel.y,uvel.x); + pitch = asin(-uvel.z); + } + vel *= .8; + if ( dir.length() > 0 ) vel += dir.unit()*clamp(dir.length()*.02,.3*speed,2.*speed); + } + void A_FollowLamp() + { + if ( !lamp ) + { + SetStateLabel('Spawn'); + return; + } + double dst = level.Vec3Diff(pos,trail).length(); + if ( (dst < speed) || (dst > 50) ) + { + double ang = FRandom[Moth](0,360); + double pt = FRandom[Moth](-30,30); + double dist = FRandom[Moth](20,30); + ofs = SWWMUtility.Vec3FromAngles(ang,pt)*dist; + } + Vector3 newpos = level.Vec3Offset(lamp.Vec3Offset(0,0,lamp.height/2),ofs); + if ( level.IsPointInLevel(newpos) ) trail = newpos; + if ( vel.length() > 0 ) + { + Vector3 uvel = vel.unit(); + angle = atan2(uvel.y,uvel.x); + pitch = asin(-uvel.z); + } + vel *= .8; + Vector3 dir = level.Vec3Diff(pos,trail); + if ( dir.length() > 0 ) vel += dir.unit()*clamp(dir.length()*.02,.4*speed,2.*speed); + Vector3 diff = level.Vec3Diff(pos,lamp.pos); + if ( (diff.x > -8) && (diff.x < 8) && (diff.y > -8) && (diff.y < 8) && (diff.z > -4) && (diff.z < lamp.height+4) ) + { + if ( diff.x < 0 ) vel.x -= .2; + else vel.x += .2; + if ( diff.y < 0 ) vel.y -= .2; + else vel.y += .2; + if ( diff.z < 0 ) vel.z -= .2; + else vel.z += .2; + } + } + void A_SmoothMove() + { + if ( vel.length() > 0 ) + { + Vector3 uvel = vel.unit(); + angle = atan2(uvel.y,uvel.x); + pitch = asin(-uvel.z); + } + vel *= .8; + } + void A_Scrape() + { + if ( CheckMeleeRange() ) + { + A_FaceTarget(0,0); + lifespan -= 5; + Vector3 awaydir = level.Vec3Diff(target.Vec3Offset(0,0,target.height),pos).unit(); + vel += awaydir*8.; + int dmg = target.DamageMobj(self,master?master:Actor(self),GetMissileDamage(0,0),'Melee',Random[Moth](0,8)?DMG_NO_PAIN:0); + if ( (dmg > 0) && target && !target.bNOBLOOD && !target.bDORMANT && !target.bINVULNERABLE ) + { + target.TraceBleed(dmg,self); + target.SpawnBlood(pos,atan2(awaydir.y,awaydir.x)+180,dmg); + } + A_StartSound("moth/scrape",CHAN_WEAPON,CHANF_OVERLAP,.2,2.5); + DamageMobj(target,target,1,'Melee'); + } + } + override void Tick() + { + Super.Tick(); + if ( isFrozen() || (freezetics > 0) ) return; + if ( isEntranced() ) + { + lifespan = 100; + return; + } + if ( target && (target.Health > 0) ) lifespan = max(20,lifespan); + lifespan--; + if ( lifespan <= 0 ) + { + let s = SWWMAnimSprite.SpawnAt('SWWMSmallSmoke',pos); + s.alpha *= .3; + Destroy(); + } + } + States + { + Spawn: + XZW1 B 0 A_JumpIf(isEntranced(),'See.Entranced'); + XZW1 BC 1 + { + A_SmoothWander(); + A_Look(); + } + Loop; + See: // go for enemies + XZW1 B 0 A_JumpIf(isEntranced(),'See.Entranced'); + XZW1 BC 1 A_SmoothChase(); + Loop; + See.Entranced: // follow the lamp + XZW1 B 0 A_JumpIf(!isEntranced(),'Spawn'); + XZW1 BC 1 + { + A_FollowLamp(); + // allow moths to still target enemies while following the lamp, but only if they get really close + A_LookEx(LOF_NOSOUNDCHECK|LOF_NOJUMP,maxseedist:150); + } + Loop; + Melee: + XZW1 B 0 A_Scrape(); + XZW1 BCBC 1 A_SmoothMove(); + Goto See; + Death: + TNT1 A 1 + { + A_StartSound("moth/die",CHAN_VOICE,CHANF_OVERLAP,.6,2.5); + let s = SWWMAnimSprite.SpawnAt('SWWMSmallSmoke',pos); + s.alpha *= .3; + } + Stop; + } +} + +Class LampMoth2 : LampMoth +{ + Default + { + Tag "$T_WMOTH"; + DamageFunction 3; + Speed 3; + Scale 1.5; + Health 200; + } +} + +Class CompanionLamp : Actor +{ + Vector3 Trail; + Array moff; + Actor parent; + bool justteleport; + + Default + { + Tag "$T_LAMP"; + +NOGRAVITY; + +NOTELEPORT; + +DONTSPLASH; + +INTERPOLATEANGLES; + +LOOKALLAROUND; + +FRIENDLY; + +NOBLOCKMONST; + Radius 4; + Height 16; + } + // random chance to spawn moths + void A_Moth() + { + // count up + special1++; + for ( int i=0; i= 30) ) return; + // spawn a moth at a random offset + double ang = FRandom[Moth](0,360); + double pt = FRandom[Moth](-30,30); + double dist = FRandom[Moth](10,30); + Vector3 ofs = SWWMUtility.Vec3FromAngles(ang,pt)*dist; + Vector3 spawnpos = level.Vec3Offset(Vec3Offset(0,0,height/2),ofs); + if ( !level.IsPointInLevel(spawnpos) ) return; + // higher chance of white moths if carrying the plush + int mchance = parent.FindInventory('MothPlushy')?3:9; + let m = LampMoth(Spawn(Random[Moth](0,mchance)?'LampMoth':'LampMoth2',spawnpos)); + if ( !m.TestMobjLocation() ) + { + m.Destroy(); + return; + } + let s = SWWMAnimSprite.SpawnAt('SWWMSmallSmoke',m.pos); + s.alpha *= .3; + m.master = parent; + m.lamp = self; + m.trail = m.pos; + moff.Push(m); + SWWMUtility.AchievementProgressInc("moth",1,parent.player); + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + if ( !parent || !SWWMLamp(master) ) + { + Destroy(); + return; + } + Spawn('SWWMItemFog',pos); + Trail = pos; + } + + override void Tick() + { + Super.Tick(); + if ( !parent || !SWWMLamp(master) ) + { + Destroy(); + return; + } + if ( isFrozen() || (freezetics > 0) ) return; + // update trailing position + bool foundspot = false; + for ( int i=0; i<180; i+=5 ) + { + for ( int j=1; j>=-1; j-=2 ) + { + double ang = (parent.angle-180)+i*j; + Vector3 testpos = level.Vec3Offset(parent.pos,SWWMUtility.RotateVector3((32,0,parent.height-8+1.5*sin(level.maptime*3.)),ang)); + if ( !level.IsPointInLevel(testpos) ) continue; + Vector3 oldpos = pos; + Vector3 oldprev = prev; + Actor oldblockingmobj = blockingmobj; + Line oldblockingline = blockingline; + Sector oldblockingfloor = blockingfloor, oldblockingceiling = blockingceiling; + SetOrigin(testpos,false); + if ( !TestMobjLocation() || SWWMUtility.BlockingLineIsBlocking(self,Line.ML_BLOCKING|Line.ML_BLOCKEVERYTHING) || BlockingFloor || BlockingCeiling ) + { + SetOrigin(oldpos,false); + prev = oldprev; + blockingmobj = oldblockingmobj; + blockingline = oldblockingline; + blockingfloor = oldblockingfloor; + blockingceiling = oldblockingceiling; + continue; + } + SetOrigin(oldpos,false); + prev = oldprev; + blockingmobj = oldblockingmobj; + blockingline = oldblockingline; + blockingfloor = oldblockingfloor; + blockingceiling = oldblockingceiling; + Trail = testpos; + foundspot = true; + } + // check at most for a 45 degree offset + if ( foundspot && (i > 45) ) break; + } + Vector3 diff = level.Vec3Diff(pos,parent.pos); + if ( (diff.length() > 400) || justteleport ) + { + Vector3 rel = level.Vec3Diff(pos,trail); + justteleport = false; + Actor f = Spawn('SWWMItemFog',pos); + f.A_StartSound("lamp/disappear",CHAN_VOICE); + // carry over the moths + foreach ( m:moff ) + { + if ( !m ) continue; + Vector3 whereto = level.Vec3Offset(m.pos,rel); + if ( !level.IsPointInLevel(whereto) ) + continue; + Vector3 oldp = m.pos; + m.SetOrigin(whereto,false); + if ( !m.TestMobjLocation() ) + m.SetOrigin(oldp,false); + } + SetOrigin(trail,false); + angle = AngleTo(parent); + vel *= 0.; + f = Spawn('SWWMItemFog',pos); + f.A_StartSound("lamp/appear",CHAN_VOICE); + return; + } + angle += Clamp(deltaangle(angle,AngleTo(parent)),-5.,5.); + vel *= .8; + bool blocked = false; + if ( SWWMUtility.BlockingLineIsBlocking(self,Line.ML_BLOCKING|Line.ML_BLOCKEVERYTHING) ) + { + // push away from wall + Vector3 normal = (-BlockingLine.delta.y,BlockingLine.delta.x,0).unit(); + if ( !Level.PointOnLineSide(pos.xy,BlockingLine) ) normal *= -1; + vel += 4.*normal; + blocked = true; + } + if ( BlockingFloor ) + { + // push away from floor + Vector3 normal = BlockingFloor.floorplane.Normal; + // find closest 3d floor for its normal + for ( int i=0; i -16) && (diff.x < 16) && (diff.y > -16) && (diff.y < 16) && (diff.z > -16) && (diff.z < parent.height+8) ) + { + if ( diff.x < 0 ) vel.x -= .2; + else vel.x += .2; + if ( diff.y < 0 ) vel.y -= .2; + else vel.y += .2; + if ( diff.z < 0 ) vel.z -= .2; + else vel.z += .2; + blocked = true; + } + if ( blocked ) return; + Vector3 dir = level.Vec3Diff(pos,trail); + if ( dir.length() > 0 ) + vel += dir.unit()*min(dir.length()*.05,20.); + } + States + { + Spawn: + XZW1 A 1 + { + if ( SWWMLamp(master) && SWWMLamp(master).bActive ) + { + A_StartSound("lamp/on",CHAN_ITEMEXTRA,CHANF_OVERLAP); + return ResolveState('Active'); + } + return ResolveState(null); + } + Wait; + Active: + XZW1 B 1 + { + A_Moth(); + if ( !SWWMLamp(master) || !SWWMLamp(master).bActive ) + { + A_StartSound("lamp/off",CHAN_ITEMEXTRA,CHANF_OVERLAP); + return ResolveState('Spawn'); + } + return ResolveState(null); + } + Wait; + } +} + +Class SWWMLamp : Inventory +{ + Mixin SWWMOverlapPickupSound; + Mixin SWWMUseToPickup; + Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; + Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; + + bool bActive, bActivated; + TextureID OnIcon; + Actor thelamp; + int charge; + + int inactivetime; + + Property Charge : charge; + + override Inventory CreateCopy( Actor other ) + { + // additional lore + SWWMLoreLibrary.Add(other.player,"MothLamp"); + return Super.CreateCopy(other); + } + override bool HandlePickup( Inventory item ) + { + // add charge + if ( item.GetClass() == GetClass() ) + { + if ( (Charge >= Default.Charge) && (Amount+item.Amount > MaxAmount) ) + { + // sell excess + if ( Owner.player ) + { + int sellprice = abs(Stamina)/2; + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner); + Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + } + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } + } + else if ( Charge > 0 ) + { + int AddCharge = Charge+SWWMLamp(item).Charge; + Charge = min(Default.Charge,AddCharge); + // if there's charge to spare, increase amount + if ( AddCharge > Charge ) + { + if ( (Amount > 0) && (Amount+item.Amount < 0) ) Amount = int.max; + Amount = min(MaxAmount,Amount+item.Amount); + Charge = AddCharge-Charge; + } + } + else + { + if ( (Amount > 0) && (Amount+item.Amount < 0) ) Amount = int.max; + // new copy, increase and take its charge + Amount = min(MaxAmount,Amount+item.Amount); + Charge = SWWMLamp(item).Charge; + } + item.bPickupGood = true; + return true; + } + return Super.HandlePickup(item); + } + override bool Use( bool pickup ) + { + if ( pickup && !deathmatch ) return false; + bActivated = true; + bActive = !bActive; + if ( !OnIcon ) OnIcon = TexMan.CheckForTexture("graphics/HUD/Icons/I_Lamp.png"); + Icon = bActive?OnIcon:default.Icon; + // don't consume on use + Amount++; + return true; + } + override bool ShouldSpawn() + { + if ( deathmatch ) return false; + return Super.ShouldSpawn(); + } + override void PreTravelled() + { + // remove the lamp + if ( thelamp ) thelamp.Destroy(); + } + override void DoEffect() + { + Super.DoEffect(); + if ( !thelamp && bActivated ) + { + thelamp = Spawn('CompanionLamp',level.Vec3Offset(Owner.pos,SWWMUtility.RotateVector3((20,0,24),Owner.angle))); + CompanionLamp(thelamp).parent = Owner; + thelamp.master = self; + let f = Spawn('SWWMItemFog',thelamp.pos); + f.A_StartSound("lamp/appear",CHAN_VOICE); + } + if ( bActive && !(level.maptime%35) && !isFrozen() ) Charge--; + if ( bActive || !thelamp ) inactivetime = 0; + else if ( thelamp ) + { + inactivetime++; + if ( inactivetime > 350 ) // hide the lamp after 10 seconds of inactivity, so it doesn't get in your way + { + let f = Spawn('SWWMItemFog',thelamp.pos); + f.A_StartSound("lamp/disappear",CHAN_VOICE); + thelamp.Destroy(); + bActivated = false; + } + } + if ( Charge <= 0 ) + { + Amount--; + if ( Amount <= 0 ) DepleteOrDestroy(); + else Charge = default.Charge; + } + } + override void DetachFromOwner() + { + Super.DetachFromOwner(); + if ( thelamp ) + { + let f = Spawn('SWWMItemFog',thelamp.pos); + f.A_StartSound("lamp/disappear",CHAN_VOICE); + thelamp.Destroy(); + } + Icon = default.Icon; + bActive = false; + bActivated = false; + } + clearscope bool isBlinking() const + { + return ( (Charge < 10) && (level.maptime&8) ); + } + Default + { + Tag "$T_LAMP"; + Inventory.Icon "graphics/HUD/Icons/I_LampOff.png"; + Inventory.PickupSound "misc/p_pkup"; + Inventory.PickupMessage "$I_LAMP"; + Inventory.Amount 1; + Inventory.MaxAmount 5; + Inventory.InterHubAmount 5; + Inventory.PickupFlash 'SWWMPurplePickupFlash'; + +INVENTORY.ALWAYSPICKUP; + +INVENTORY.AUTOACTIVATE; + +INVENTORY.INVBAR; + +COUNTITEM; + +INVENTORY.BIGPOWERUP; + +FLOATBOB; + +DONTGIB; + FloatBobStrength 0.25; + SWWMLamp.Charge 100; + Stamina 70000; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/zscript/items/swwm_miscitems.zsc b/zscript/items/swwm_miscitems.zsc new file mode 100644 index 000000000..cb7d24cec --- /dev/null +++ b/zscript/items/swwm_miscitems.zsc @@ -0,0 +1,781 @@ +// Other items + +Class Omnisight : Inventory +{ + Mixin SWWMOverlapPickupSound; + Mixin SWWMUseToPickup; + Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; + + override bool TryPickup( Actor &toucher ) + { + if ( !level.allmap ) + { + Actor rt = toucher; + if ( toucher.player ) rt = toucher.player.mo; + if ( rt.player == players[consoleplayer] ) + rt.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA,CHANF_OVERLAP); + if ( rt is 'Demolitionist' ) + Demolitionist(rt).lastbump *= 1.1; + level.allmap = true; + // activate all interest markers + let ti = ThinkerIterator.Create('SWWMInterestMarker',STAT_MAPMARKER); + Actor a; + while ( a = Actor(ti.Next()) ) a.bDORMANT = false; + // "spread" to all players + for ( int i=0; i=2)?default.Icon:(primetim>=6)?(bFailed?OnIcon[1]:OnIcon[2]):OnIcon[0]; + if ( !bFailed && (primetim == 20) ) Owner.A_StartSound("hahaha/hahaha",CHAN_POWERUP,CHANF_OVERLAP); + primetim++; + if ( (primetim <= 20) || (!bFailed && (primetim <= 50)) ) return; + primetim = 0; + bPrimed = false; + Icon = default.Icon; + if ( bFailed ) return; + Vector3 safepos; + double safeangle; + if ( deathmatch ) [safepos, safeangle] = level.PickDeathmatchStart(); + else [safepos, safeangle] = level.PickPlayerStart(Owner.PlayerNumber()); + if ( !level.useplayerstartz ) safepos.z = ONFLOORZ; + Vector3 oldpos = Owner.pos; + if ( !Owner.Teleport(safepos,safeangle,0) ) + { + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= .95; + Owner.A_StartSound("powerup/tethererror",CHAN_ITEMEXTRA,CHANF_OVERLAP); + if ( Owner.player == players[consoleplayer] ) Console.Printf(StringTable.Localize("$D_TETHERFAIL")); + return; + } + let s = Spawn('DemolitionistShockwave',oldpos); + s.target = Owner; + s.special1 = 120; + s.A_AlertMonsters(0,AMF_EMITFROMTARGET); + s = Spawn('DemolitionistShockwave',Owner.pos); + s.target = Owner; + s.special1 = 120; + s.A_AlertMonsters(0,AMF_EMITFROMTARGET); + if ( Owner.player == players[consoleplayer] ) + { + Owner.A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP); + Owner.A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.7); + Owner.A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.4); + } + SWWMHandler.DoFlash(Owner,Color(255,255,255,255),10); + SWWMHandler.DoFlash(Owner,Color(255,128,192,255),30); + Owner.GiveBody(100,100); + SWWMUtility.AchievementProgressInc("sneaky",1,Owner.player); + Amount--; + if ( Amount <= 0 ) DepleteOrDestroy(); + } + + override bool Use( bool pickup ) + { + if ( pickup || bPrimed ) return false; + if ( !OnIcon[0] ) OnIcon[0] = TexMan.CheckForTexture("graphics/HUD/Icons/I_SafetyOn.png"); + if ( !OnIcon[1] ) OnIcon[1] = TexMan.CheckForTexture("graphics/HUD/Icons/I_SafetyNo.png"); + if ( !OnIcon[2] ) OnIcon[2] = TexMan.CheckForTexture("graphics/HUD/Icons/I_SafetyYes.png"); + bPrimed = true; + primetim = 0; + Vector3 safepos; + if ( deathmatch ) safepos = level.PickDeathmatchStart(); + else safepos = level.PickPlayerStart(Owner.PlayerNumber()); + if ( !level.useplayerstartz ) + { + // find the floor for proper distance check + let s = level.PointInSector(safepos.xy); + safepos.z = s.floorplane.ZAtPoint(safepos.xy); + } + bFailed = (level.Vec3Diff(Owner.pos,safepos).length() < 400); + Owner.A_StartSound(bFailed?"powerup/tetherfail":"powerup/tetheruse",CHAN_ITEMEXTRA,CHANF_OVERLAP); + // don't consume on use, will happen later + Amount++; + return true; + } + + Default + { + Tag "$T_SAFETY"; + Stamina 240000; + Inventory.Icon "graphics/HUD/Icons/I_Safety.png"; + Inventory.PickupSound "misc/p_pkup"; + Inventory.UseSound ""; + Inventory.PickupMessage "$T_SAFETY"; + Inventory.MaxAmount 5; + Inventory.InterHubAmount 5; + Inventory.PickupFlash 'SWWMCyanPickupFlash'; + +INVENTORY.ALWAYSPICKUP; + +INVENTORY.AUTOACTIVATE; + +INVENTORY.INVBAR; + +COUNTITEM; + +INVENTORY.BIGPOWERUP; + +FLOATBOB; + +DONTGIB; + FloatBobStrength 0.25; + } + States + { + Spawn: + XZW1 A 33; + XZW1 B 2; + Loop; + } +} + +// TBD 1.4 Ballsy Bomb + +Class BallImpact : SWWMNonInteractiveActor +{ + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_QuakeEx(3.,3.,3.,12,0,200,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:100,rollIntensity:.3); + A_StartSound("leadball/hit",CHAN_VOICE); + A_SprayDecal("WallCrack",-20); + int numpt = Random[Spreadgun](5,10); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + for ( int i=0; i 0) && victim ) + { + victim.A_StartSound("leadball/hitf",CHAN_DAMAGE,CHANF_OVERLAP,(vel.length()/30.)**.5); + victim.TraceBleed(newdmg,self); + victim.SpawnBlood(pos,atan2(dir.y,dir.x),dmg); + } + } + else + { + A_StartSound("leadball/hit",CHAN_VOICE,CHANF_OVERLAP,(vel.length()/30.)**.5); + if ( victim ) victim.A_StartSound("leadball/hit",CHAN_DAMAGE,CHANF_OVERLAP,(vel.length()/30.)**.5); + if ( vel.length() > 15. ) + { + let s = Spawn('BallImpact',pos); + s.angle = atan2(dir.y,dir.x); + s.pitch = asin(-dir.z); + } + } + // make it so the crit does not propagate to friendlies unless we bonked a friend (you monster!) + if ( crit ) + SWWMUtility.DoExplosion(self,dmg/2,25000,150,80,((victim.isFriend(target))?0:DE_NOHURTFRIEND)|DE_NONEXPLOSIVE,crit?'CriticalConcussion':'Concussion',target,DMG_FOILINVUL); + if ( crit && victim && (victim.Health <= 0) && (victim.bBOSS || victim.FindInventory('BossMarker')) && target ) + SWWMUtility.MarkAchievement("clonk",target.player); + // only rip shootables + if ( (slamforce > girth) && is_schutt ) + { + vel *= .7; + return MHIT_PASS; + } + // force bounce + BlockingMobj = victim; + A_HandleBounce(); + lasthit = victim; + // pretend to pass through + return MHIT_PASS; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_StartSound("leadball/fly",CHAN_WEAPON,CHANF_LOOP,.6,3.,2.); + heat = 1.; + } + override void Tick() + { + oldvel = vel; + Super.Tick(); + if ( isFrozen() || (freezetics > 0) ) return; + if ( InStateSequence(CurState,ResolveState('Death')) ) + { + deadtimer++; + if ( deadtimer > 300 ) + { + let numpt = Random[Spreadgun](3,6); + for ( int i=0; i 15 ) + { + let s = Spawn('BallImpact',pos); + s.angle = atan2(HitNormal.y,HitNormal.x); + s.pitch = asin(-HitNormal.z); + } + } + gravity = .35; + if ( (vel.length() < 5) && (pos.z <= floorz) ) + { + ClearBounce(); + ExplodeMissile(); + } + } + States + { + Spawn: + XZW1 A -1; + Stop; + Bounce: + XZW1 A 0 A_HandleBounce(); + Goto Spawn; + Death: + XZW1 A -1 + { + bMOVEWITHSECTOR = true; + A_StopSound(CHAN_WEAPON); + } + Stop; + } +} + +// TBD 1.4 Battle-Boi Sentry + +Class SaltTracer : LineTracer +{ + Array ShootThroughList; + Array WaterHitList; + + override ETraceStatus TraceCallback() + { + // liquid splashes + if ( Results.CrossedWater ) + { + let hl = new('WaterHit'); + hl.hitpos = Results.CrossedWaterPos; + WaterHitList.Push(hl); + } + else if ( Results.Crossed3DWater ) + { + let hl = new('WaterHit'); + hl.hitpos = Results.Crossed3DWaterPos; + WaterHitList.Push(hl); + } + if ( Results.HitType == TRACE_HitActor ) + { + if ( Results.HitActor.bSHOOTABLE ) return TRACE_Stop; + return TRACE_Skip; + } + else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) + { + if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&Line.ML_BlockHitscan) ) + return TRACE_Stop; + ShootThroughList.Push(Results.HitLine); + return TRACE_Skip; + } + return TRACE_Stop; + } +} + +Class SaltLight : PaletteLight +{ + Default + { + Tag "SaltExpl,1"; + ReactionTime 30; + Args 0,0,0,240; + } +} +Class SaltLight2 : PaletteLight +{ + Default + { + Tag "SaltExpl"; + ReactionTime 30; + Args 0,0,0,70; + } +} + +Class SaltImpact : SWWMNonInteractiveActor +{ + Default + { + Obituary "$O_SALTSHOT"; + SelfObituary "$SO_SALTSHOT"; + DamageType 'Salt'; + RenderStyle 'Add'; + Scale 1.8; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + +FORCEXYBILLBOARD; + +FOILINVUL; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_AlertMonsters(swwm_uncapalert?0:6000,AMF_EMITFROMTARGET); + SWWMUtility.DoExplosion(self,30+special2*4,15000,100,40); + A_QuakeEx(3.,3.,3.,10,0,250,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:150,rollintensity:0.2); + A_StartSound("saltshot/hit",CHAN_VOICE,attenuation:.35); + A_SprayDecal("ShockMarkSmall",-172); + A_SprayDecal("SaltMark",-172); + Scale *= FRandom[ExploS](0.8,1.1); + int numpt = Random[ExploS](5,9)-special1; + for ( int i=0; i 20) && !Random[Spreadgun](0,800/args[0]) ) + { + let i = Spawn('SaltImpact',level.Vec3Offset(pos,x*speed)); + i.angle = atan2(x.y,x.x); + i.pitch = asin(-x.z); + i.target = target; + i.special1 = (Stamina-9)/4; + i.special2 = Accuracy; + i.args[0] = args[1]; + return; + } + // next beam + if ( !(special2%4) && !Random[Spreadgun](0,Stamina) ) + Spawn('SaltLight',level.Vec3Offset(pos,x*speed/2)); + let next = Spawn('SaltBeam',level.Vec3Offset(pos,x*speed)); + double a = FRandom[Spreadgun](0,360), s = FRandom[Spreadgun](0,.06); + Vector3 dir = SWWMUtility.ConeSpread(x,y,z,a,s); + next.angle = atan2(dir.y,dir.x); + next.pitch = asin(-dir.z); + next.target = target; + next.special2 = (special2+1)%10; + next.args[0] = args[0]+1; + next.args[1] = args[1]; + next.SetStateLabel('TrailSpawn'); + } + + override void PostBeginPlay() + { + Super.PostBeginPlay(); + if ( !Random[Spreadgun](0,3) ) + A_StartSound("saltshot/trail",CHAN_VOICE,CHANF_DEFAULT,.3,4.); + } + + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_FadeOut(.04); + if ( Random[Spreadgun](-2,args[2]/10) == 0 ) + SWWMUtility.DoExplosion(self,5+Accuracy,5000,speed,flags:DE_HOWL|DE_NONEXPLOSIVE,ignoreme:target); + if ( ((special2%4) || args[2]) && !special1 ) SpreadOut(); + args[2]++; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + + States + { + Spawn: + XZW1 A -1 Bright NoDelay + { + return FindState('StarterDev')+Random[Spreadgun](0,11)*2; + } + Stop; + TrailSpawn: + XZW2 A -1 Bright + { + return FindState('TrailerDev')+Random[Spreadgun](0,11)*2; + } + Stop; + StarterDev: + #### # 25 Bright; + XZW1 B -1 Bright; + Stop; + #### # 25 Bright; + XZW1 C -1 Bright; + Stop; + #### # 25 Bright; + XZW1 D -1 Bright; + Stop; + #### # 25 Bright; + XZW1 E -1 Bright; + Stop; + #### # 25 Bright; + XZW1 F -1 Bright; + Stop; + #### # 25 Bright; + XZW1 G -1 Bright; + Stop; + #### # 25 Bright; + XZW1 H -1 Bright; + Stop; + #### # 25 Bright; + XZW1 I -1 Bright; + Stop; + #### # 25 Bright; + XZW1 J -1 Bright; + Stop; + #### # 25 Bright; + XZW1 K -1 Bright; + Stop; + #### # 25 Bright; + XZW1 L -1 Bright; + Stop; + #### # 25 Bright; + XZW1 M -1 Bright; + Stop; + TrailerDev: + #### # 25 Bright; + XZW2 B -1 Bright; + Stop; + #### # 25 Bright; + XZW2 C -1 Bright; + Stop; + #### # 25 Bright; + XZW2 D -1 Bright; + Stop; + #### # 25 Bright; + XZW2 E -1 Bright; + Stop; + #### # 25 Bright; + XZW2 F -1 Bright; + Stop; + #### # 25 Bright; + XZW2 G -1 Bright; + Stop; + #### # 25 Bright; + XZW2 H -1 Bright; + Stop; + #### # 25 Bright; + XZW2 I -1 Bright; + Stop; + #### # 25 Bright; + XZW2 J -1 Bright; + Stop; + #### # 25 Bright; + XZW2 K -1 Bright; + Stop; + #### # 25 Bright; + XZW2 L -1 Bright; + Stop; + #### # 25 Bright; + XZW2 M -1 Bright; + Stop; + } +} diff --git a/zscript/items/swwm_powerups.zsc b/zscript/items/swwm_powerups.zsc index f3792503a..7ecc74726 100644 --- a/zscript/items/swwm_powerups.zsc +++ b/zscript/items/swwm_powerups.zsc @@ -7,7 +7,7 @@ Class GrilledCheeseSafeguard : Powerup Powerup.Duration -3; } - override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags ) + override void ModifyDamage( int damage, Name damageType, int &newdamage, bool passive, Actor inflictor, Actor source, int flags ) { if ( passive ) newdamage = 0; } @@ -19,6 +19,7 @@ Class GrilledCheeseSandwich : Inventory Mixin SWWMOverlapPickupSound; Mixin SWWMUseToPickup; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; // for falling off cliffs and others @@ -40,46 +41,46 @@ Class GrilledCheeseSandwich : Inventory { SWWMUtility.AchievementProgressInc("gcsandwich",1,Owner.player); SWWMHandler.DoFlash(Owner,Color(64,255,255,64),10); - Owner.A_QuakeEx(9,9,9,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); + Owner.A_QuakeEx(9.,9.,9.,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.); Owner.GiveBody(1000,1000); - SWWMScoreObj.Spawn(1000,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(1000,Owner,Font.CR_BLUE); if ( Owner is 'Demolitionist' ) { - if ( swwm_accdamage ) - SWWMScoreObj.Spawn(600,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); + let n = Owner.FindInventory('ArmorNugget'); + if ( !n ) Owner.GiveInventory('ArmorNugget',GetDefaultByType('ArmorNugget').MaxAmount); else { - SWWMScoreObj.Spawn(200,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); - SWWMScoreObj.Spawn(150,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); - SWWMScoreObj.Spawn(250,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); + n.Amount = n.MaxAmount; + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(n.MaxAmount,Owner,Font.CR_GREEN); + } + let b = Owner.FindInventory('BlastSuit'); + if ( !b ) Owner.GiveInventory('BlastSuit',GetDefaultByType('BlastSuit').MaxAmount); + else + { + b.Amount = b.MaxAmount; + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(b.MaxAmount,Owner,Font.CR_GREEN); + } + let w = Owner.FindInventory('WarArmor'); + if ( !w ) Owner.GiveInventory('WarArmor',GetDefaultByType('WarArmor').MaxAmount); + else + { + w.Amount = w.MaxAmount; + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(w.MaxAmount,Owner,Font.CR_GREEN); } - let n = Owner.FindInventory("ArmorNugget"); - if ( !n ) Owner.GiveInventory("ArmorNugget",GetDefaultByType("ArmorNugget").MaxAmount); - else n.Amount = n.MaxAmount; - let b = Owner.FindInventory("BlastSuit"); - if ( !b ) Owner.GiveInventory("BlastSuit",GetDefaultByType("BlastSuit").MaxAmount); - else b.Amount = b.MaxAmount; - let w = Owner.FindInventory("WarArmor"); - if ( !w ) Owner.GiveInventory("WarArmor",GetDefaultByType("WarArmor").MaxAmount); - else w.Amount = w.MaxAmount; SWWMLoreLibrary.Add(Owner.player,"Nugget"); SWWMLoreLibrary.Add(Owner.player,"BlastSuit"); SWWMLoreLibrary.Add(Owner.player,"WarArmor"); Demolitionist(Owner).lastbump *= 1.2; } - else - { - SWWMScoreObj.Spawn(200,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); - let n = Owner.FindInventory("ArmorNugget"); - if ( !n ) Owner.GiveInventory("ArmorNugget",GetDefaultByType("ArmorNugget").MaxAmount); - else n.Amount = n.MaxAmount; - SWWMLoreLibrary.Add(Owner.player,"Nugget"); - } - let f = Spawn("SWWMItemFog",Owner.Vec3Offset(0,0,Owner.Height/2)); + let f = Spawn('SWWMItemFog',Owner.Vec3Offset(0,0,Owner.Height/2)); f.bAMBUSH = true; if ( !extrasafe ) return; - let s = Owner.FindInventory("GrilledCheeseSafeguard"); - if ( !s ) Owner.GiveInventory("GrilledCheeseSafeguard",1); + let s = Owner.FindInventory('GrilledCheeseSafeguard'); + if ( !s ) Owner.GiveInventory('GrilledCheeseSafeguard',1); else Powerup(s).EffectTics = Powerup(s).default.EffectTics; } override bool Use( bool pickup ) @@ -87,12 +88,17 @@ Class GrilledCheeseSandwich : Inventory if ( pickup && !deathmatch ) return false; if ( Owner.Health > 500 ) return false; if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + if ( (Owner.player == players[consoleplayer]) && (swwm_mutevoice < 2) ) + { + SWWMHandler.AddOneliner("eat",2); + if ( Owner is 'Demolitionist' ) Demolitionist(Owner).facegrin = true; + } DoTheThing(); return true; } - override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) + override void AbsorbDamage( int damage, Name damageType, int &newdamage, Actor inflictor, Actor source, int flags ) { - if ( Owner.FindInventory("GrilledCheeseSafeguard") ) + if ( Owner.FindInventory('GrilledCheeseSafeguard') ) return; // the safeguard absorbs all if ( Owner.ApplyDamageFactor(damageType,damage) <= 0 ) return; // this damage type is ignored by the player, so it does not affect us @@ -109,7 +115,7 @@ Class GrilledCheeseSandwich : Inventory { if ( (swwm_strictuntouchable == 1) && Owner.player ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( hnd ) hnd.tookdamage[Owner.PlayerNumber()] = true; } if ( damageType == 'InstantDeath' ) @@ -122,13 +128,14 @@ Class GrilledCheeseSandwich : Inventory } void SafeTeleport( bool tostart = false ) { - Spawn("SWWMItemFog",Owner.Vec3Offset(0,0,Owner.Height/2)); + Spawn('SWWMItemFog',Owner.Vec3Offset(0,0,Owner.Height/2)); Vector3 safepos; double safeangle; if ( tostart || !lastsafevalid ) { if ( deathmatch ) [safepos, safeangle] = level.PickDeathmatchStart(); else [safepos, safeangle] = level.PickPlayerStart(Owner.PlayerNumber()); + if ( !level.useplayerstartz ) safepos.z = ONFLOORZ; } else { @@ -137,6 +144,11 @@ Class GrilledCheeseSandwich : Inventory } Owner.Teleport(safepos,safeangle,0); } + override void Travelled() + { + Super.Travelled(); + dteleport = 0; // ensure we don't teleport immediately after a death exit (yes, this can happen) + } override void DoEffect() { Super.DoEffect(); @@ -200,6 +212,13 @@ Class GrilledCheeseSandwich : Inventory override void OnDrop( Actor dropper ) { lastdropper = dropper; + if ( !(dropper is 'Demolitionist') ) return; + Vector3 ofs = SWWMUtility.RotateVector3((dropper.radius,0.,dropper.height*.5),dropper.angle); + SetOrigin(level.Vec3Offset(dropper.pos,ofs),false); + vel = SWWMUtility.GetPlayerViewDir(dropper)*12.+(0.,0.,4.); + angle = dropper.angle; + pitch = 0; + roll = 0; } override void PostTeleport( Vector3 destpos, double destangle, int flags ) { @@ -209,10 +228,6 @@ Class GrilledCheeseSandwich : Inventory Default { - //$Title Grilled Cheese Sandwich - //$Group Powerups - //$Sprite graphics/HUD/Icons/I_Sandwich.png - //$Icon powerup Tag "$T_SANDWICH"; Stamina 800000; Inventory.Icon "graphics/HUD/Icons/I_Sandwich.png"; @@ -221,16 +236,15 @@ Class GrilledCheeseSandwich : Inventory Inventory.PickupMessage "$T_SANDWICH"; Inventory.MaxAmount 5; Inventory.InterHubAmount 5; - Inventory.PickupFlash "SWWMPurplePickupFlash"; + Inventory.PickupFlash 'SWWMPurplePickupFlash'; +INVENTORY.ALWAYSPICKUP; +INVENTORY.AUTOACTIVATE; +INVENTORY.INVBAR; +COUNTITEM; +INVENTORY.BIGPOWERUP; +FLOATBOB; + +DONTGIB; FloatBobStrength 0.25; - Radius 12; - Height 24; } States @@ -250,14 +264,8 @@ Mixin Class SWWMShadedPowerup } } -Class GhostSnd : Actor +Class GhostSnd : SWWMNonInteractiveActor { - Default - { - +NOBLOCKMAP; - +NOGRAVITY; - +NOINTERACTION; - } override void Tick() { if ( !target || !master ) @@ -312,12 +320,16 @@ Class GhostTarget : Actor } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; - if ( diedie ) A_FadeOut(.02); - let bt = BlockThingsIterator.Create(self,300); - while ( bt.Next() ) + if ( diedie ) A_FadeOut(.05); + let bt = BlockThingsIterator.Create(self,256); + foreach ( t,p,f:bt ) { - let t = bt.Thing; if ( !t || !t.bIsMonster || t.player || !t.IsHostile(master) || (t.target != self) ) continue; if ( SWWMUtility.BoxIntersect(self,t,pad:16) || t.CheckMeleeRange() ) { @@ -326,14 +338,14 @@ Class GhostTarget : Actor break; } } + bt.Destroy(); // player made noise or is visible again - if ( !master || (LastHeard == master) || !master.FindInventory("GhostPower") ) + if ( !master || (LastHeard == master) || !master.FindInventory('GhostPower') ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd ) for ( int i=0; i lastrage) && (swwm_mutevoice < 2) ) - lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+20; - Owner.A_QuakeEx(2,2,2,Random[Rage](1,2),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(1,Owner,Font.CR_BLUE); + if ( (gametic > lastrage) && (swwm_mutevoice < 2) ) + lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+20; + } + Owner.A_QuakeEx(1.5,1.5,1.5,Random[Rage](1,2),0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); lastpulse = max(lastpulse,gametic+10); Demolitionist(Owner).lastbump *= .995; } if ( am ) return; - am = Owner.FindInventory("RagekitArmor"); + am = Owner.FindInventory('RagekitArmor'); if ( !am ) { - am = Inventory(Spawn("RagekitArmor")); + am = Inventory(Spawn('RagekitArmor')); am.AttachToOwner(Owner); } } @@ -1132,7 +1085,7 @@ Class RagekitPower : Powerup if ( !Owner ) return; Owner.A_StartSound("powerup/ragekitend",CHAN_ITEMEXTRA,CHANF_OVERLAP); SWWMHandler.DoFlash(Owner,Color(128,255,0,0),30); - Owner.A_QuakeEx(4,4,4,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); + Owner.A_QuakeEx(4.,4.,4.,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.); Owner.A_AlertMonsters(2000); Demolitionist(Owner).lastbump *= .9; if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_RAGEKIT")); @@ -1141,23 +1094,26 @@ Class RagekitPower : Powerup void DoHitFX() { if ( level.maptime <= lasteffect+5 ) return; - if ( Owner.GiveBody(5,100) ) - SWWMScoreObj.Spawn(5,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); + Owner.GiveBody(5,100); Owner.A_AlertMonsters(swwm_uncapalert?0:5000); SWWMHandler.DoFlash(Owner,Color(64,255,0,0),10); - Owner.A_QuakeEx(8,8,8,Random[Rage](3,8),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); - if ( (Owner.player == players[consoleplayer]) && (gametic > lastrage) && (swwm_mutevoice < 2) ) - lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+40; + Owner.A_QuakeEx(8.,8.,8.,Random[Rage](3,8),0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(5,Owner,Font.CR_BLUE); + if ( (gametic > lastrage) && (swwm_mutevoice < 2) ) + lastrage = SWWMHandler.AddOneliner("ragekit",2,5)+40; + } Owner.A_StartSound("powerup/ragekithit",CHAN_POWERUP,CHANF_OVERLAP); lasteffect = level.maptime; lastpulse = max(lastpulse,gametic+35); Demolitionist(Owner).lastbump *= .9; } - override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags ) + override void ModifyDamage( int damage, Name damageType, int &newdamage, bool passive, Actor inflictor, Actor source, int flags ) { if ( passive ) return; - if ( (damageType == 'Melee') || (damageType == 'Jump') || (damageType == 'Dash') || (damageType == 'Buttslam') || (damageType == 'GroundPound') ) + if ( (damageType == 'Melee') || (damageType == 'Jump') || (damageType == 'Dash') || (damageType == 'Buttslam') || (damageType == 'GroundPound') || (damageType == 'HammerShockwave') ) { newdamage = damage*8; DoHitFX(); @@ -1165,11 +1121,11 @@ Class RagekitPower : Powerup } } -Class RagekitX : GhostArtifactX +Class RagekitX : SWWMItemOverlay { Default { - RenderStyle "Normal"; + RenderStyle 'Normal'; } } @@ -1179,31 +1135,34 @@ Class Ragekit : Inventory Mixin SWWMOverlapPickupSound; Mixin SWWMUseToPickup; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; override bool Use( bool pickup ) { if ( pickup && !deathmatch ) return false; if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); - if ( Owner.GiveBody(100,100) ) - SWWMScoreObj.Spawn(100,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); + Owner.GiveBody(100,100); + if ( Owner.player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(100,Owner,Font.CR_BLUE); SWWMUtility.AchievementProgressInc("rage",1,Owner.player); if ( !(Owner is 'Demolitionist') ) { SWWMHandler.DoFlash(Owner,Color(64,255,0,0),30); - Owner.A_QuakeEx(8,8,8,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); + Owner.A_QuakeEx(8.,8.,8.,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.); return true; } - let r = RagekitPower(Owner.FindInventory("RagekitPower")); + let r = RagekitPower(Owner.FindInventory('RagekitPower')); if ( r ) { r.EffectTics += r.default.EffectTics; SWWMHandler.DoFlash(Owner,Color(64,255,0,0),30); - Owner.A_QuakeEx(8,8,8,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); + Owner.A_QuakeEx(8.,8.,8.,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.); r.lastpulse = max(r.lastpulse,gametic+35); Demolitionist(Owner).lastbump *= .95; } - else Owner.GiveInventory("RagekitPower",1); + else Owner.GiveInventory('RagekitPower',1); return true; } override void PreTravelled() @@ -1213,7 +1172,7 @@ Class Ragekit : Inventory override void Travelled() { if ( tracer ) return; - tracer = Spawn("RagekitX",pos); + tracer = Spawn('RagekitX',pos); tracer.angle = angle; tracer.target = self; tracer.FloatBobPhase = FloatBobPhase; @@ -1221,7 +1180,7 @@ Class Ragekit : Inventory override void PostBeginPlay() { Super.PostBeginPlay(); - tracer = Spawn("RagekitX",pos); + tracer = Spawn('RagekitX',pos); tracer.angle = angle; tracer.target = self; tracer.FloatBobPhase = FloatBobPhase; @@ -1229,10 +1188,6 @@ Class Ragekit : Inventory Default { - //$Title Ragekit - //$Group Powerups - //$Sprite graphics/HUD/Icons/I_Ragekit.png - //$Icon powerup Tag "$T_RAGEKIT"; Stamina 500000; Inventory.Icon "graphics/HUD/Icons/I_Ragekit.png"; @@ -1241,771 +1196,15 @@ Class Ragekit : Inventory Inventory.PickupMessage "$T_RAGEKIT"; Inventory.MaxAmount 5; Inventory.InterHubAmount 5; - Inventory.PickupFlash "SWWMPurplePickupFlash"; + Inventory.PickupFlash 'SWWMPurplePickupFlash'; +INVENTORY.ALWAYSPICKUP; +INVENTORY.AUTOACTIVATE; +INVENTORY.INVBAR; +COUNTITEM; +INVENTORY.BIGPOWERUP; +FLOATBOB; + +DONTGIB; FloatBobStrength 0.25; - Radius 12; - Height 24; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} - -Class Omnisight : Inventory -{ - Mixin SWWMOverlapPickupSound; - Mixin SWWMUseToPickup; - Mixin SWWMRespawn; - - override bool TryPickup( in out Actor toucher ) - { - if ( !level.allmap ) - { - Actor rt = toucher; - if ( toucher.player ) rt = toucher.player.mo; - if ( rt.player == players[consoleplayer] ) - { - rt.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA,CHANF_OVERLAP); - // automatically zoom out so the player can know how far this goes - CVar.FindCVar('swwm_mm_zoom').SetFloat(2.); - } - if ( rt is 'Demolitionist' ) - Demolitionist(rt).lastbump *= 1.1; - level.allmap = true; - // activate all interest markers - let ti = ThinkerIterator.Create("SWWMInterestMarker",STAT_MAPMARKER); - Actor a; - while ( a = Actor(ti.Next()) ) a.bDORMANT = false; - // "spread" to all players - for ( int i=0; i mindist) && !CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; - mindist = dist; - lamp = a; - master = a.target; - if ( CompanionLamp(lamp).moff.Find(self) == CompanionLamp(lamp).moff.Size() ) - CompanionLamp(lamp).moff.Push(self); - if ( master && master.player ) SetFriendPlayer(master.player); - else bFRIENDLY = false; - } - } - if ( !lamp || (lamp.frame == 0) || (Distance3D(lamp) > 250) || !CheckSight(lamp,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) return false; - if ( target && (target.Health > 0) && CheckSight(target) ) return false; - return true; - } - void A_SmoothWander() - { - if ( level.Vec3Diff(pos,trail).length() < speed ) - { - double ang = FRandom[Moth](0,360); - double pt = FRandom[Moth](-30,30); - double dist = FRandom[Moth](20,40); - ofs = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*dist; - } - Vector3 newpos = level.Vec3Offset(pos,ofs); - if ( level.IsPointInLevel(newpos) ) trail = newpos; - if ( vel.length() > 0 ) - { - Vector3 uvel = vel.unit(); - angle += Clamp(deltaangle(angle,atan2(uvel.y,uvel.x)),-5.,5.); - pitch += Clamp(deltaangle(pitch,asin(-uvel.z)),-5.,5.); - } - vel *= .8; - Vector3 dir = level.Vec3Diff(pos,trail); - if ( dir.length() > 0 ) vel += dir.unit()*clamp(dir.length()*.05,.4*speed,.5*speed); - } - void A_SmoothChase() - { - if ( !target || (target.Health <= 0) ) - { - A_ClearTarget(); - SetStateLabel("Spawn"); - return; - } - if ( CheckMeleeRange() ) - { - SetStateLabel("Melee"); - return; - } - Vector3 dest = target.Vec3Offset(0,0,target.height*.75); - Vector3 dir = level.Vec3Diff(pos,dest); - if ( dir.length() > 0 ) - { - Vector3 dirunit = dir.unit(); - FLineTraceData d; - LineTrace(atan2(dirunit.y,dirunit.x),dir.length(),asin(-dirunit.z),data:d); - if ( (d.HitType != TRACE_HitActor) && (d.HitActor != target) ) - { - A_Chase(); - return; - } - } - if ( vel.length() > 0 ) - { - Vector3 uvel = vel.unit(); - angle = atan2(uvel.y,uvel.x); - pitch = asin(-uvel.z); - } - vel *= .8; - if ( dir.length() > 0 ) vel += dir.unit()*clamp(dir.length()*.02,.3*speed,2.*speed); - } - void A_FollowLamp() - { - if ( !lamp ) - { - SetStateLabel("Spawn"); - return; - } - double dst = level.Vec3Diff(pos,trail).length(); - if ( (dst < speed) || (dst > 50) ) - { - double ang = FRandom[Moth](0,360); - double pt = FRandom[Moth](-30,30); - double dist = FRandom[Moth](20,30); - ofs = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*dist; - } - Vector3 newpos = level.Vec3Offset(lamp.Vec3Offset(0,0,lamp.height/2),ofs); - if ( level.IsPointInLevel(newpos) ) trail = newpos; - if ( vel.length() > 0 ) - { - Vector3 uvel = vel.unit(); - angle = atan2(uvel.y,uvel.x); - pitch = asin(-uvel.z); - } - vel *= .8; - Vector3 dir = level.Vec3Diff(pos,trail); - if ( dir.length() > 0 ) vel += dir.unit()*clamp(dir.length()*.02,.4*speed,2.*speed); - Vector3 diff = level.Vec3Diff(pos,lamp.pos); - if ( (diff.x > -8) && (diff.x < 8) && (diff.y > -8) && (diff.y < 8) && (diff.z > -4) && (diff.z < lamp.height+4) ) - { - if ( diff.x < 0 ) vel.x -= .2; - else vel.x += .2; - if ( diff.y < 0 ) vel.y -= .2; - else vel.y += .2; - if ( diff.z < 0 ) vel.z -= .2; - else vel.z += .2; - } - } - void A_SmoothMove() - { - if ( vel.length() > 0 ) - { - Vector3 uvel = vel.unit(); - angle = atan2(uvel.y,uvel.x); - pitch = asin(-uvel.z); - } - vel *= .8; - } - void A_Scrape() - { - if ( CheckMeleeRange() ) - { - A_FaceTarget(0,0); - lifespan -= 5; - Vector3 awaydir = level.Vec3Diff(target.Vec3Offset(0,0,target.height),pos).unit(); - vel += awaydir*8.; - int dmg = target.DamageMobj(self,master?master:Actor(self),GetMissileDamage(0,0),'Melee',Random[Moth](0,8)?DMG_NO_PAIN:0); - if ( target && !target.bNOBLOOD && !target.bDORMANT && !target.bINVULNERABLE ) - { - target.TraceBleed(dmg,self); - target.SpawnBlood(pos,atan2(awaydir.y,awaydir.x)+180,dmg); - } - A_StartSound("moth/scrape",CHAN_WEAPON,CHANF_OVERLAP,.2,2.5); - DamageMobj(target,target,1,'Melee'); - } - } - override void Tick() - { - Super.Tick(); - if ( isFrozen() ) return; - if ( isEntranced() ) - { - lifespan = 100; - return; - } - if ( target && (target.Health > 0) ) lifespan = max(20,lifespan); - lifespan--; - if ( lifespan <= 0 ) - { - let s = Spawn("SWWMSmallSmoke",pos); - s.alpha *= .3; - Destroy(); - } - } - States - { - Spawn: - XZW1 B 0 A_JumpIf(isEntranced(),"See.Entranced"); - XZW1 BC 1 - { - A_SmoothWander(); - A_Look(); - } - Loop; - See: // go for enemies - XZW1 B 0 A_JumpIf(isEntranced(),"See.Entranced"); - XZW1 BC 1 A_SmoothChase(); - Loop; - See.Entranced: // follow the lamp - XZW1 B 0 A_JumpIf(!isEntranced(),"Spawn"); - XZW1 BC 1 A_FollowLamp(); - Loop; - Melee: - XZW1 B 0 A_Scrape(); - XZW1 BCBC 1 A_SmoothMove(); - Goto See; - Death: - TNT1 A 1 - { - A_StartSound("moth/die",CHAN_VOICE,CHANF_OVERLAP,.6,2.5); - let s = Spawn("SWWMSmallSmoke",pos); - s.alpha *= .3; - } - Stop; - } -} - -Class LampMoth2 : LampMoth -{ - Default - { - Tag "$T_WMOTH"; - DamageFunction 3; - Speed 3; - Scale 1.5; - Health 200; - } -} - -Class LampMashiro : Actor abstract -{ -// -// ~nothing here yet, but she will make an appearance someday~ -// -// ⠀⠀⠀⠀⠤⠀⠄⠀⠀⠀⠳⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡣⣁⢌⡀⢄⠁⡁⠝⢿⣿⣿⣿⡻⣿⣿⣷⣦ -// ⠀⠀⠠⠀⠠⠀⠀⡀⠘⣠⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣊⢇⠠⢐⢄⡙⢿⣿⣿⣾⠫⣻⣿ -// ⠀⡄⠂⢴⠠⠌⠰⢇⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⡀⠣⡣⡱⣌⠻⣿⣿⣿⣿⣿ -// ⠀⠁⠛⠂⠀⠉⡍⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠘⣮⣾⡮⢦⡹⣿⣿⣿⣿ -// ⠄⠠⠉⢼⡇⠶⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⢿⣿⣿⡦⢣⡉⢝⢝⢽ -// ⠀⠀⠚⠃⠀⠀⡀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢸⣿⣿⣿⢀⢃⠀⡁⠑ -// ⠰⠀⠂⠁⠀⠀⡆⠀⠀⠀⣴⣿⣿⣿⣿⣿⠋⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡈⣿⣿⣿⣇⠆⢃⠈⡇ -// ⠀⠀⠀⢠⠄⣠⣇⠀⢀⣾⣿⣿⣿⣿⣿⡃⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⢔⢌⢆⢑ -// ⠀⠀⠀⢀⣶⣿⣷⢀⣾⣿⣿⣿⣿⡯⡊⠀⢸⡏⣟⣻⣽⣭⣽⣛⡛⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⡇⣿⣿⣿⣿⣗⢕⢕⠄ -// ⠀⢠⣶⣿⣿⢿⢃⣾⣿⣿⣿⣿⡫⡪⠀⠀⢸⡇⣿⣿⣿⣿⣿⣿⣿⣦⡘⠄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⡇⣿⣿⣿⣿⣗⢔⢕⢅ -// ⠀⣺⣿⡉⠕⠁⣼⣿⣿⣿⡿⡫⡪⠂⠀⢔⢸⢀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣶⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣪⠃⣿⣿⣿⣿⡟⢄⣡⣵ -// ⡛⠟⢋⠀⠀⢸⣿⣿⣿⣿⢠⢫⡊⠀⡔⢵⡈⢠⢣⡹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠡⠚⠓⠪⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡫⡎⣸⣿⣿⣿⡟⢠⢃⣂⡿ -// ⡃⡊⢃⡔⡠⣿⣿⣿⣿⡇⣜⡘⢀⢜⡀⡅⡆⠘⢐⠁⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢾⠿⢿⣿⣿⣿⣿⣷⣾⣽⡻⢿⣿⣿⣿⣿⣿⣿⣿⡿⣛⣿⣿⣟⡜⠠⣻⣿⣿⡟⠴⠃⠉⠁⠀ -// ⡺⢠⡾⣸⡷⣿⣿⣿⣿⠂⣓⠂⡎⡺⠪⠒⠃⠀⠀⠀⠀⠀⠙⠿⣯⢻⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣵⣾⣿⡷⣲⣿⣿⣿⣿⣿⣿⣿⣷⣝⢿⣿⣿⣿⡿⡫⡺⣽⣿⣿⡗⠀⢸⣿⣿⠏⠀⠀⠀⠀⠀⠀ -// ⣴⣿⢣⣿⢳⣿⣿⣿⡿⡨⡊⠠⡪⡢⠂⠀⠀⠀⠀⠀⢀⣀⠀⠀⠘⢧⡻⣿⣿⡇⢿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢳⣝⠿⡫⡪⣪⡮⣾⣿⡟⢠⠅⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀ -// ⣿⡏⣾⢣⡾⣿⣿⣿⡇⢪⠂⡨⡠⠀⠀⠀⠀⢀⡴⠋⠉⠈⠉⢦⡀⠠⢅⠹⣿⢰⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⣫⣾⡿⣫⣦⠸⢊⡄⣼⣿⡟⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -// ⡿⢸⣏⣾⣇⣿⣿⣿⡇⢵⢀⢓⠀⠀⠀⠀⠀⡮⠀⠀⠀⠀⠀⠈⣇⠀⠧⡗⡈⢿⣺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣯⣾⣿⡿⠛⠊⣬⠴⢪⠋⣼⣿⠟⢔⢝⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -// ⠃⡿⣸⣿⣿⢸⣿⣿⡇⡊⢰⢱⢂⡀⠀⠀⠀⢳⠀⠀⠀⠀⠀⢰⡇⠀⣸⢐⡈⢄⢿⠿⠿⢿⡿⠽⢫⣵⣿⡿⠿⠛⠛⠙⠉⠁⠀⠞⠙⠃⠍⡁⠖⡪⡫⡪⣻⢁⣾⡿⢃⢞⢕⡝⢰⣆⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -// ⢸⢣⣿⣿⡗⡈⢿⣿⡇⠀⢸⣿⣷⣵⣄⠀⠀⠈⠲⣠⣠⣠⡴⠋⠀⠀⢒⢔⢂⢀⢎⢇⣓⡕⠂⡚⡩⢡⢰⢂⣓⡣⣢⠒⠀⠀⠀⠀⠀⠀⠀⠈⠢⡈⡲⡑⢡⣾⠟⡠⡣⣂⢇⠃⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀ -// ⡟⣾⣿⡿⣸⢸⡘⣿⣷⠀⢸⣿⣿⣿⣿⣿⣦⣄⣀⣀⣀⣀⣀⣠⣤⣜⢔⢕⢕⢔⢕⢕⣗⣇⣳⡪⣺⢐⢱⢑⢒⠖⠁⠀⠀⢀⠄⠔⠖⢦⣀⠀⠀⠰⠌⣴⠟⡡⡪⡪⡪⡜⡜⣸⣿⣿⣿⣿⡿⡢⠀⠀⠀⠀⠀⠀ -// ⢱⣿⣿⡣⢑⠔⡕⠘⣿⡀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣷⣷⣵⣕⣥⣣⣣⡣⡪⣐⢱⢠⡃⠀⠀⠀⣴⠁⠀⠀⠀⠀⠸⣆⠀⠀⠘⠀⡪⡪⡪⡪⡪⣸⢡⣿⣿⣿⣿⣿⡯⣺⡀⢤⡀⠀⠀⠀ -// ⣿⣿⣟⣝⣝⣺⠁⠀⠘⣧⢘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣷⣇⣣⠣⡘⡀⠀⠀⠀⡟⠀⠀⠀⠀⠀⠨⡗⠀⠀⠀⠈⢮⠺⡪⢊⢫⠃⣾⣿⣿⣿⣿⣿⡪⡏⣦⡀⢹⣷⣤⣀ -// ⣿⣿⢑⢇⢆⠆⠀⠀⣸⣎⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⣧⣀⠀⠀⢻⡀⠀⠀⠀⢀⡼⠃⠀⠀⠀⠀⠸⢘⢜⡐⡕⣸⣿⣿⣿⣿⣿⣃⣟⣱⣿⣿⣧⢻⣿⣿ -// ⣿⣟⢕⢕⢼⠀⠀⠀⣿⣿⣧⡹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠉⠓⠒⠓⠋⠀⠀⠀⠀⠀⠠⠀⠱⡱⡨⢣⣿⣿⣿⣿⣿⢗⡯⣱⣿⣿⣿⢇⣄⠃⠙ -// ⣿⡒⡢⡢⡃⠀⠀⠀⣿⣿⣿⣷⣝⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣄⣀⣀⣀⣀⢀⣀⡀⡠⣀⡢⡪⠂⣽⣿⣿⣿⣿⣟⡕⣺⣿⣿⣿⣏⣿⣷⢔⡄ -// ⡿⡸⢰⢔⠂⠀⠀⠀⢿⣿⣿⣿⣿⣯⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣯⢮⡊⡠⣰⣿⣿⣿⣿⡿⣡⣿⣿⣿⣿⡟⣾⣿⣿⢵⠅ -// ⣟⢕⢝⣗⠀⠀⠀⡹⡘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣫⡾⢱⣿⣿⣿⣿⡟⣼⣿⣿⣿⣿⡿⣹⣿⣿⡟⡹⢰ -// ⢕⢕⢕⢕⠠⡢⣪⢂⢇⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣫⣾⣿⢣⣿⣿⣿⣿⣿⣻⣿⣿⣿⣿⡿⣱⣿⣿⣿⡫⡇⣼ -// ⢕⢕⢕⠅⣘⡪⡚⡔⠍⠂⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣫⣾⣿⢟⢁⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢣⣿⣿⣿⣏⡼⢠⣿ -// ⢕⢕⢕⠀⣖⡪⡪⣂⠀⠐⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢟⣫⣵⡿⢟⣫⡴⢁⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⣸⣿⣿⣿⢒⠇⣼⣿ -// ⢕⢅⢕⠨⣃⢪⢨⢂⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣳⢰⢬⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣍⣛⠻⠿⠿⠿⢛⣯⡭⠶⣞⣛⣭⣵⣾⣿⠿⢁⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⢀⣿⣿⣿⡯⡝⢰⣿⣿ -// ⢝⢕⠇⢸⠱⡑⡁⠀⣀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣷⣬⣃⣹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⡿⡱⢃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⣼⣿⣿⣿⣸⢡⣿⣿⣿ -// ⢕⢕⠅⢜⠕⡠⣢⣾⣿⣷⣤⣄⢀⣬⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢛⠴⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⢠⣿⣿⣿⢝⢡⣿⣿⣿⣿ -// ⢕⢕⠅⣕⢥⡶⢀⠻⣿⣿⣿⣟⢿⣿⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢫⡐⣕⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⢀⣿⣿⣿⠏⢁⣿⣿⣿⣿⣿ -// ⢕⢕⢠⢗⣛⣓⣁⢱⣾⣿⣿⣿⣷⣷⣽⣿⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢛⢔⠕⠓⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⢀⣾⣿⡿⡣⢎⣿⣿⣿⣿⣿⣿ -// ⡕⡕⠠⡅⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡝⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠐⣁⡴⡴⢣⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⢠⣾⠿⣫⠞⣱⣿⣿⣿⣿⣿⠟⡡ -// ⢅⢇⢘⢕⢍⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣎⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⠛⠛⠛⠉⠁⠀⢀⢜⢕⢅⠕⣡⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠐⡫⡠⠜⣡⣾⣿⣿⡿⠟⠫⠦⠪⠊ -// ⢕⢕⢸⣵⣷⣾⣿⣿⣿⣿⣟⢿⣿⣿⣿⣿⣿⣿⣿⣦⣤⡩⣉⣉⡩⣉⣉⠉⠉⠈⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠀⠀⣤⢔⢗⢕⠕⣰⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⢔⢕⠕⣓⠏⣊⠰⠻⠟⠛⣉⠅⢄⠂⡪⡪⡪⠨ -// -// ~it actually won't be her, but one can dream~ -// -} - -Class CompanionLamp : Actor -{ - Vector3 Trail; - Array moff; - Actor parent; - bool justteleport; - - Default - { - Tag "$T_LAMP"; - +NOGRAVITY; - +NOTELEPORT; - +DONTSPLASH; - +INTERPOLATEANGLES; - +LOOKALLAROUND; - +FRIENDLY; - +NOBLOCKMONST; - Radius 4; - Height 16; - } - // random chance to spawn moths - void A_Moth() - { - // count up - special1++; - for ( int i=0; i= 30) ) return; - // spawn a moth at a random offset - double ang = FRandom[Moth](0,360); - double pt = FRandom[Moth](-30,30); - double dist = FRandom[Moth](10,30); - Vector3 ofs = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*dist; - Vector3 spawnpos = level.Vec3Offset(Vec3Offset(0,0,height/2),ofs); - if ( !level.IsPointInLevel(spawnpos) ) return; - // higher chance of white moths if carrying the Mashiro plush - //int mchance = parent.FindInventory("MothPlushy")?3:9; - let m = LampMoth(Spawn(Random[Moth](0,9)?"LampMoth":"LampMoth2",spawnpos)); - if ( !m.TestMobjLocation() ) - { - m.Destroy(); - return; - } - let s = Spawn("SWWMSmallSmoke",m.pos); - s.alpha *= .3; - m.master = parent; - m.lamp = self; - m.trail = m.pos; - moff.Push(m); - SWWMUtility.AchievementProgressInc("moth",1,parent.player); - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - if ( !parent || !SWWMLamp(master) ) - { - Destroy(); - return; - } - Spawn("SWWMItemFog",pos); - Trail = pos; - } - - override void Tick() - { - Super.Tick(); - if ( !parent || !SWWMLamp(master) ) - { - Destroy(); - return; - } - if ( isFrozen() ) return; - // update trailing position - bool foundspot = false; - for ( int i=0; i<180; i+=5 ) - { - for ( int j=1; j>=-1; j-=2 ) - { - double ang = (parent.angle-180)+i*j; - Vector3 testpos = level.Vec3Offset(parent.pos,(cos(ang)*32,sin(ang)*32,parent.height-8+1.5*sin(level.maptime*3.))); - if ( !level.IsPointInLevel(testpos) ) continue; - Vector3 oldpos = pos; - Vector3 oldprev = prev; - Actor oldblockingmobj = blockingmobj; - Line oldblockingline = blockingline; - Sector oldblockingfloor = blockingfloor, oldblockingceiling = blockingceiling; - SetOrigin(testpos,false); - if ( !TestMobjLocation() || SWWMUtility.BlockingLineIsBlocking(self,Line.ML_BLOCKING|Line.ML_BLOCKEVERYTHING) || BlockingFloor || BlockingCeiling ) - { - SetOrigin(oldpos,false); - prev = oldprev; - blockingmobj = oldblockingmobj; - blockingline = oldblockingline; - blockingfloor = oldblockingfloor; - blockingceiling = oldblockingceiling; - continue; - } - SetOrigin(oldpos,false); - prev = oldprev; - blockingmobj = oldblockingmobj; - blockingline = oldblockingline; - blockingfloor = oldblockingfloor; - blockingceiling = oldblockingceiling; - Trail = testpos; - foundspot = true; - } - // check at most for a 45 degree offset - if ( foundspot && (i > 45) ) break; - } - Vector3 diff = level.Vec3Diff(pos,parent.pos); - if ( (diff.length() > 400) || justteleport ) - { - Vector3 rel = level.Vec3Diff(pos,trail); - justteleport = false; - Actor f = Spawn("SWWMItemFog",pos); - f.A_StartSound("lamp/disappear",CHAN_VOICE); - // carry over the moths - for ( int i=0; i -16) && (diff.x < 16) && (diff.y > -16) && (diff.y < 16) && (diff.z > -16) && (diff.z < parent.height+8) ) - { - if ( diff.x < 0 ) vel.x -= .2; - else vel.x += .2; - if ( diff.y < 0 ) vel.y -= .2; - else vel.y += .2; - if ( diff.z < 0 ) vel.z -= .2; - else vel.z += .2; - blocked = true; - } - if ( blocked ) return; - Vector3 dir = level.Vec3Diff(pos,trail); - if ( dir.length() > 0 ) - vel += dir.unit()*min(dir.length()*.05,20.); - } - States - { - Spawn: - XZW1 A 1 - { - if ( SWWMLamp(master) && SWWMLamp(master).bActive ) - { - A_StartSound("lamp/on",CHAN_ITEMEXTRA,CHANF_OVERLAP); - return ResolveState("Active"); - } - return ResolveState(null); - } - Wait; - Active: - XZW1 B 1 - { - A_Moth(); - if ( !SWWMLamp(master) || !SWWMLamp(master).bActive ) - { - A_StartSound("lamp/off",CHAN_ITEMEXTRA,CHANF_OVERLAP); - return ResolveState("Spawn"); - } - return ResolveState(null); - } - Wait; - } -} - -Class SWWMLamp : Inventory -{ - Mixin SWWMOverlapPickupSound; - Mixin SWWMUseToPickup; - Mixin SWWMRespawn; - Mixin SWWMPickupGlow; - - bool bActive, bActivated; - TextureID OnIcon; - Actor thelamp; - int charge; - - Property Charge : charge; - - override Inventory CreateCopy( Actor other ) - { - // additional lore - SWWMLoreLibrary.Add(other.player,"MothLamp"); - return Super.CreateCopy(other); - } - override bool HandlePickup( Inventory item ) - { - // add charge - if ( item.GetClass() == GetClass() ) - { - if ( (Charge >= Default.Charge) && (Amount+item.Amount > MaxAmount) ) - { - // sell excess - int sellprice = SWWMUtility.Round100(Stamina*.7); - SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2)); - SWWMCredits.Give(Owner.player,sellprice); - if ( Owner.player ) - Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),Owner.player.GetUserName(),GetTag(),sellprice); - } - else if ( Charge > 0 ) - { - int AddCharge = Charge+SWWMLamp(item).Charge; - Charge = min(Default.Charge,AddCharge); - // if there's charge to spare, increase amount - if ( AddCharge > Charge ) - { - if ( (Amount > 0) && (Amount+item.Amount < 0) ) Amount = int.max; - Amount = min(MaxAmount,Amount+item.Amount); - Charge = AddCharge-Charge; - } - } - else - { - if ( (Amount > 0) && (Amount+item.Amount < 0) ) Amount = int.max; - // new copy, increase and take its charge - Amount = min(MaxAmount,Amount+item.Amount); - Charge = SWWMLamp(item).Charge; - } - item.bPickupGood = true; - return true; - } - return Super.HandlePickup(item); - } - override bool Use( bool pickup ) - { - if ( pickup && !deathmatch ) return false; - bActivated = true; - bActive = !bActive; - if ( !OnIcon ) OnIcon = TexMan.CheckForTexture("graphics/HUD/Icons/I_Lamp.png",TexMan.Type_MiscPatch); - Icon = bActive?OnIcon:default.Icon; - // don't consume on use - Amount++; - return true; - } - override bool ShouldSpawn() - { - if ( deathmatch ) return false; - return Super.ShouldSpawn(); - } - override void PreTravelled() - { - // remove the lamp - if ( thelamp ) thelamp.Destroy(); - } - override void DoEffect() - { - Super.DoEffect(); - if ( !thelamp && bActivated ) - { - thelamp = Spawn("CompanionLamp",Owner.Vec3Offset(cos(Owner.angle)*20,sin(Owner.angle)*20,24)); - CompanionLamp(thelamp).parent = Owner; - thelamp.master = self; - let f = Spawn("SWWMItemFog",thelamp.pos); - f.A_StartSound("lamp/appear",CHAN_VOICE); - } - if ( bActive && !(level.maptime%35) && !isFrozen() ) Charge--; - if ( Charge <= 0 ) - { - Amount--; - if ( Amount <= 0 ) DepleteOrDestroy(); - else Charge = default.Charge; - } - } - override void DetachFromOwner() - { - Super.DetachFromOwner(); - if ( thelamp ) - { - let f = Spawn("SWWMItemFog",thelamp.pos); - f.A_StartSound("lamp/disappear",CHAN_VOICE); - thelamp.Destroy(); - } - Icon = default.Icon; - bActive = false; - bActivated = false; - } - clearscope bool isBlinking() const - { - return ( (Charge < 10) && (level.maptime&8) ); - } - Default - { - //$Title Lamp - //$Group Powerups - //$Sprite graphics/HUD/Icons/I_LampOff.png - //$Icon powerup - Tag "$T_LAMP"; - Inventory.Icon "graphics/HUD/Icons/I_LampOff.png"; - Inventory.PickupSound "misc/p_pkup"; - Inventory.PickupMessage "$I_LAMP"; - Inventory.Amount 1; - Inventory.MaxAmount 5; - Inventory.InterHubAmount 5; - Inventory.PickupFlash "SWWMPurplePickupFlash"; - +INVENTORY.ALWAYSPICKUP; - +INVENTORY.AUTOACTIVATE; - +INVENTORY.INVBAR; - +COUNTITEM; - +INVENTORY.BIGPOWERUP; - +FLOATBOB; - FloatBobStrength 0.25; - SWWMLamp.Charge 100; - Stamina 70000; - Radius 8; - Height 28; } States { @@ -2029,20 +1228,13 @@ Class BarrierLight : PointLightAttenuated Destroy(); return; } - if ( target.player ) - SetOrigin(target.Vec2OffsetZ(0,0,target.player.viewz),true); - else SetOrigin(target.Vec3Offset(0,0,target.height/2),true); + if ( target.player ) SetOrigin(SWWMUtility.GetFireOffset(target,10,0,0),true); + else SetOrigin(target.Vec3Angle(10,target.angle,target.missileheight),true); bDORMANT = Powerup(master).isBlinking(); } } -Class BarrierSnd : Actor +Class BarrierSnd : SWWMNonInteractiveActor { - Default - { - +NOBLOCKMAP; - +NOGRAVITY; - +NOINTERACTION; - } override void Tick() { if ( !target || !master ) @@ -2111,7 +1303,7 @@ Class BarrierPower : PowerIronFeet Inventory.Icon "graphics/HUD/Icons/I_Barrier.png"; Powerup.Duration -60; Powerup.Color "20 FF 00", 0.1; - Powerup.Mode "Full"; // no leaky damage + Powerup.Mode 'Full'; // no leaky damage +INVENTORY.ADDITIVETIME; } @@ -2119,7 +1311,7 @@ Class BarrierPower : PowerIronFeet { Super.InitEffect(); if ( !Owner ) return; - l = Spawn("BarrierLight",Owner.pos); + l = Spawn('BarrierLight',Owner.pos); l.target = Owner; l.master = self; if ( Owner is 'Demolitionist' ) @@ -2140,15 +1332,15 @@ Class BarrierPower : PowerIronFeet // don't reset air supply like PowerIronFeet, call parent instead Powerup.DoEffect(); if ( !Owner ) return; - if ( !snd ) snd = Spawn("BarrierSnd",Owner.pos); + if ( !snd ) snd = Spawn('BarrierSnd',Owner.pos); snd.target = Owner; snd.master = self; if ( !am ) { - am = Owner.FindInventory("BarrierArmor"); + am = Owner.FindInventory('BarrierArmor'); if ( !am ) { - am = Inventory(Spawn("BarrierArmor")); + am = Inventory(Spawn('BarrierArmor')); am.AttachToOwner(Owner); } } @@ -2165,17 +1357,17 @@ Class BarrierPower : PowerIronFeet endlv = true; break; } - if ( !endlv && (Owner.pos.z <= Owner.floorz) ) + if ( !endlv && ((Owner.pos.z == Owner.CurSector.floorplane.ZAtPoint(Owner.pos.xy)) || Owner.waterlevel) ) { bool damageterrain = false; - if ( (Owner.floorsector.damageamount > 0) && (Owner.floorsector.damageinterval > 0) ) damageterrain = true; + if ( (Owner.CurSector.damageamount > 0) && (Owner.CurSector.damageinterval > 0) ) damageterrain = true; else { - let t = Owner.GetFloorTerrain(); + let t = Owner.CurSector.GetFloorTerrain(0); if ( t && (t.DamageAmount > 0) && (t.DamageTimeMask > 0) ) damageterrain = true; } - if ( damageterrain && (Owner.floorsector.flags&Sector.SECF_ENDLEVEL) ) endlv = true; + if ( damageterrain && (Owner.CurSector.flags&Sector.SECF_ENDLEVEL) ) endlv = true; } if ( !endlv ) return; EffectTics = min(0,EffectTics); @@ -2188,7 +1380,9 @@ Class EBarrier : Inventory Mixin SWWMOverlapPickupSound; Mixin SWWMUseToPickup; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; int terrainwait; @@ -2196,14 +1390,14 @@ Class EBarrier : Inventory { if ( pickup && !deathmatch ) return false; if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); - let b = BarrierPower(Owner.FindInventory("BarrierPower")); + let b = BarrierPower(Owner.FindInventory('BarrierPower')); if ( b ) { b.EffectTics += b.default.EffectTics; if ( Owner is 'Demolitionist' ) Demolitionist(Owner).lastbump *= 0.95; } - else Owner.GiveInventory("BarrierPower",1); + else Owner.GiveInventory('BarrierPower',1); SWWMUtility.AchievementProgressInc("barrier",1,Owner.player); return true; } @@ -2215,7 +1409,7 @@ Class EBarrier : Inventory { Super.Travelled(); if ( tracer ) return; - tracer = Spawn("EBarrierX",pos); + tracer = Spawn('EBarrierX',pos); tracer.angle = angle; tracer.target = self; tracer.FloatBobPhase = FloatBobPhase; @@ -2223,7 +1417,7 @@ Class EBarrier : Inventory override void PostBeginPlay() { Super.PostBeginPlay(); - tracer = Spawn("EBarrierX",pos); + tracer = Spawn('EBarrierX',pos); tracer.angle = angle; tracer.target = self; tracer.FloatBobPhase = FloatBobPhase; @@ -2232,8 +1426,11 @@ Class EBarrier : Inventory { Super.DoEffect(); if ( !Owner || (Owner.Health <= 0) ) return; + // do not auto-use if we're invincible, that'd be a waste + if ( Owner.bINVULNERABLE || (Owner.player && (Owner.player.cheats&(CF_GODMODE|CF_GODMODE2))) || Owner.FindInventory('InvinciballPower') ) + return; // check terrain for auto-use - let b = Powerup(Owner.FindInventory("BarrierPower")); + let b = Powerup(Owner.FindInventory('BarrierPower')); if ( b && (b.EffectTics > 5) ) { terrainwait = 20; @@ -2253,16 +1450,16 @@ Class EBarrier : Inventory damageterrain = true; break; } - if ( !damageterrain && (Owner.pos.z <= Owner.floorz) ) + if ( !damageterrain && ((Owner.pos.z == Owner.CurSector.floorplane.ZAtPoint(Owner.pos.xy)) || Owner.waterlevel) ) { - if ( (Owner.floorsector.damageamount > 0) && (Owner.floorsector.damageinterval > 0) ) damageterrain = true; + if ( (Owner.CurSector.damageamount > 0) && (Owner.CurSector.damageinterval > 0) ) damageterrain = true; else { - let t = Owner.GetFloorTerrain(); + let t = Owner.CurSector.GetFloorTerrain(0); if ( t && (t.DamageAmount > 0) && (t.DamageTimeMask > 0) ) damageterrain = true; } - if ( damageterrain && (Owner.floorsector.flags&Sector.SECF_ENDLEVEL) ) endlevelterrain = true; + if ( damageterrain && (Owner.CurSector.flags&Sector.SECF_ENDLEVEL) ) endlevelterrain = true; } // do not auto-use for these if ( endlevelterrain ) return; @@ -2274,16 +1471,10 @@ Class EBarrier : Inventory else terrainwait++; if ( terrainwait <= 20 ) return; terrainwait = 0; - bool shouldautouse = CVar.GetCVar('swwm_autousebarrier',Owner.player).GetBool(); - if ( shouldautouse ) Owner.UseInventory(self); + Owner.UseInventory(self); } - Default { - //$Title Barrier - //$Group Powerups - //$Sprite graphics/HUD/Icons/I_Barrier.png - //$Icon powerup Tag "$T_BARRIER"; Stamina 80000; Inventory.Icon "graphics/HUD/Icons/I_Barrier.png"; @@ -2292,15 +1483,15 @@ Class EBarrier : Inventory Inventory.PickupMessage "$T_BARRIER"; Inventory.MaxAmount 5; Inventory.InterHubAmount 5; - Inventory.PickupFlash "SWWMPurplePickupFlash"; + Inventory.PickupFlash 'SWWMCyanPickupFlash'; +INVENTORY.ALWAYSPICKUP; +INVENTORY.AUTOACTIVATE; +INVENTORY.INVBAR; - +INVENTORY.BIGPOWERUP; +FLOATBOB; + +DONTGIB; FloatBobStrength 0.25; - Radius 6; - Height 28; + // must copy height of vanilla radsuit + Height 46; } States { @@ -2310,1417 +1501,4 @@ Class EBarrier : Inventory } } -Class EBarrierX : GhostArtifactX -{ -} - -Class TendrilTracer : LineTracer -{ - Actor ignore; - Array ShootThroughList; - Array HitList; - - override ETraceStatus TraceCallback() - { - if ( Results.HitType == TRACE_HitActor ) - { - if ( Results.HitActor == ignore ) return TRACE_Skip; - if ( Results.HitActor.bSHOOTABLE ) - { - let ent = new("HitListEntry"); - ent.hitactor = Results.HitActor; - ent.hitlocation = Results.HitPos; - ent.x = Results.HitVector; - hitlist.Push(ent); - } - return TRACE_Skip; - } - else if ( Results.HitType == TRACE_HitWall ) - { - ShootThroughList.Push(Results.HitLine); - return TRACE_Skip; - } - return TRACE_Skip; - } -} - -// main heatseeker -Class MykradvoTendril : Actor -{ - Vector3 nextpos, nextdir; - - action void A_Trace() - { - tics = bMISSILEMORE?2:1; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - if ( !bSTANDSTILL ) - { - let t = new("TendrilTracer"); - t.ignore = target; - t.hitlist.Clear(); - t.ShootThroughList.Clear(); - t.Trace(pos,CurSector,x,speed,0); - for ( int i=0; i 1 ) - { - dirto /= dist; - dir = (dir+dirto*(clamp(1.-(dist/4000.),.25,1.)**1.5)).unit(); - } - // early split - if ( dist < speed ) bMISSILEEVENMORE = true; - } - invoker.nextdir = dir; - } - action void A_Spread() - { - if ( bMISSILEMORE && bMISSILEEVENMORE ) - { - // spread into sub-tendrils - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - int ntendies = tracer?clamp(tracer.GetSpawnHealth()/400,2,10):2; - for ( int i=0; i ReactionTime)) ) - { - if ( !bSTANDSTILL ) - { - int numpt = bMISSILEMORE?9:3; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - Default - { - Obituary "$O_MYKRADVO"; - RenderStyle "Add"; - DamageFunction 100; - ReactionTime 8; - Speed 64; - Radius .1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +INTERPOLATEANGLES; - +NOTELEPORT; - +FOILINVUL; - +NOINTERACTION; - +MISSILEMORE; - } - States - { - Spawn: - TNT1 A 0 Bright; - XZW1 A 1 Bright A_Trace(); - XZW1 A 1 Bright - { - A_Spread(); - return FindState("Fade")+Random[Mykradvo](0,11)*2; - } - Stop; - Fade: - #### # 20 Bright; - XZW1 B -1 Bright; - Stop; - #### # 20 Bright; - XZW1 C -1 Bright; - Stop; - #### # 20 Bright; - XZW1 D -1 Bright; - Stop; - #### # 20 Bright; - XZW1 E -1 Bright; - Stop; - #### # 20 Bright; - XZW1 F -1 Bright; - Stop; - #### # 20 Bright; - XZW1 G -1 Bright; - Stop; - #### # 20 Bright; - XZW1 H -1 Bright; - Stop; - #### # 20 Bright; - XZW1 I -1 Bright; - Stop; - #### # 20 Bright; - XZW1 J -1 Bright; - Stop; - #### # 20 Bright; - XZW1 K -1 Bright; - Stop; - #### # 20 Bright; - XZW1 L -1 Bright; - Stop; - #### # 20 Bright; - XZW1 M -1 Bright; - Stop; - } -} - -// sub seekers -Class MykradvoSmallTendril : MykradvoTendril -{ - Default - { - Speed 16; - DamageFunction 10; - ReactionTime 20; - -MISSILEMORE; - } - States - { - Fade: - #### # 10 Bright; - XZW1 B -1 Bright; - Stop; - #### # 10 Bright; - XZW1 C -1 Bright; - Stop; - #### # 10 Bright; - XZW1 D -1 Bright; - Stop; - #### # 10 Bright; - XZW1 E -1 Bright; - Stop; - #### # 10 Bright; - XZW1 F -1 Bright; - Stop; - #### # 10 Bright; - XZW1 G -1 Bright; - Stop; - #### # 10 Bright; - XZW1 H -1 Bright; - Stop; - #### # 10 Bright; - XZW1 I -1 Bright; - Stop; - #### # 10 Bright; - XZW1 J -1 Bright; - Stop; - #### # 10 Bright; - XZW1 K -1 Bright; - Stop; - #### # 10 Bright; - XZW1 L -1 Bright; - Stop; - #### # 10 Bright; - XZW1 M -1 Bright; - Stop; - } -} - -// non-hurting non-seekers -Class MykradvoSmallNullTendril : MykradvoSmallTendril -{ - Default - { - Speed 8; - ReactionTime 6; - +STANDSTILL; - } - States - { - Fade: - #### # 5 Bright; - XZW1 B -1 Bright; - Stop; - #### # 5 Bright; - XZW1 C -1 Bright; - Stop; - #### # 5 Bright; - XZW1 D -1 Bright; - Stop; - #### # 5 Bright; - XZW1 E -1 Bright; - Stop; - #### # 5 Bright; - XZW1 F -1 Bright; - Stop; - #### # 5 Bright; - XZW1 G -1 Bright; - Stop; - #### # 5 Bright; - XZW1 H -1 Bright; - Stop; - #### # 5 Bright; - XZW1 I -1 Bright; - Stop; - #### # 5 Bright; - XZW1 J -1 Bright; - Stop; - #### # 5 Bright; - XZW1 K -1 Bright; - Stop; - #### # 5 Bright; - XZW1 L -1 Bright; - Stop; - #### # 5 Bright; - XZW1 M -1 Bright; - Stop; - } -} - -Class MykradvoBurstLight : PaletteLight -{ - Default - { - Tag "Purple"; - ReactionTime 60; - Args 0,0,0,400; - } -} - -// 'splode -Class MykradvoBurst : Actor -{ - Array targets; - int nstep; - - Default - { - RenderStyle "Add"; - +NOBLOCKMAP; - +NOGRAVITY; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - Scale 1.4; - } - void FlashPlayer( int str, double rad ) - { - if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; - let mo = players[consoleplayer].Camera; - double dist = Distance3D(mo); - str = int(str*(1.-(dist/rad))); - SWWMHandler.DoFlash(mo,Color(str,250,240,255),5); - SWWMHandler.DoFlash(mo,Color(str,128,0,255),15); - } - override void PostBeginPlay() - { - nstep = clamp(targets.Size()/10,1,5); - A_AlertMonsters(swwm_uncapalert?0:8000); - A_QuakeEx(9,9,9,80,0,3000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:1000,rollintensity:2.); - A_StartSound("powerup/mykradvo",CHAN_BODY,CHANF_DEFAULT,1.,.25); - A_StartSound("powerup/mykradvo",CHAN_VOICE,CHANF_DEFAULT,1.,.25); - FlashPlayer(100,1500); - int numpt = Random[ExploS](20,30); - for ( int i=0; i 0 ) - { - int numpt = Random[ExploS](2,4); - for ( int j=0; j 0) ) - { - let t = Spawn("MykradvoTendril",pos); - t.angle = t.AngleTo(targ); - t.pitch = SWWMUtility.PitchTo(t,targ,.5); - t.target = target; - t.tracer = targ; - } - else i--; - targets.Delete(0); - } - } - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XEX4 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ 2 Bright; - TNT1 A 1 A_JumpIf(!IsActorPlayingSound(CHAN_VOICE)&&!(invoker.targets.Size()),1); - Wait; - TNT1 A 1; - Stop; - } -} - -Class Mykradvo : Inventory -{ - Mixin SWWMAutoUseFix; - Mixin SWWMOverlapPickupSound; - Mixin SWWMUseToPickup; - Mixin SWWMRespawn; - Mixin SWWMPickupGlow; - - Actor ringa[2]; - - Array targets; - - // quicksort (targets) - private bool CmpDist( Actor ref, Vector3 a, Vector3 b ) - { - double dista = level.Vec3Diff(ref.pos,a).length(); - double distb = level.Vec3Diff(ref.pos,b).length(); - return (dista < distb); - } - private int partition_targets( Array a, int l, int h, Actor ref ) - { - Actor pv = a[h]; - int i = (l-1); - for ( int j=l; j<=(h-1); j++ ) - { - if ( CmpDist(ref,a[j].pos,pv.pos) ) - { - i++; - Actor tmp = a[j]; - a[j] = a[i]; - a[i] = tmp; - } - } - Actor tmp = a[h]; - a[h] = a[i+1]; - a[i+1] = tmp; - return i+1; - } - private void qsort_targets( Array a, int l, int h, Actor ref ) - { - if ( l >= h ) return; - int p = partition_targets(a,l,h,ref); - qsort_targets(a,l,p-1,ref); - qsort_targets(a,p+1,h,ref); - } - - bool FindTargets( Actor t ) - { - targets.Clear(); - // search all actively hostile enemies within 50m - let ti = ThinkerIterator.Create("Actor"); - Actor a; - while ( a=Actor(ti.Next()) ) - { - // must be an active, shootable live monster - if ( !a.bISMONSTER || !a.bSHOOTABLE || a.bDORMANT || (a.Health <= 0) ) continue; - // skip non-hostiles - if ( a.IsFriend(t) ) continue; - // is targetting us and is within 10m - // or - // is visible and is within 100m - if ( ((a.target == t) && SWWMUtility.SphereIntersect(a,t.pos,320)) - || (t.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) && SWWMUtility.SphereIntersect(a,t.pos,3200)) ) - targets.Push(a); - } - // sorted, so the closest take priority - qsort_targets(targets,0,targets.Size()-1,t); - return (targets.Size() > 0); - } - - override bool Use( bool pickup ) - { - if ( pickup && !deathmatch ) return false; - if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); - Vector3 spawnpos = Owner.Vec3Angle(15,Owner.angle,Owner.Height*.7); - if ( !FindTargets(Owner) ) - { - int numpt = Random[ExploS](8,12); - let f = Spawn("SWWMPurplePickupFlash",spawnpos-(0,0,16)); - f.Scale *= .5; - for ( int i=0; i=2)?default.Icon:(primetim>=6)?(bFailed?OnIcon[1]:OnIcon[2]):OnIcon[0]; - if ( !bFailed && (primetim == 20) ) Owner.A_StartSound("hahaha/hahaha",CHAN_POWERUP,CHANF_OVERLAP); - primetim++; - if ( (primetim <= 20) || (!bFailed && (primetim <= 50)) ) return; - primetim = 0; - bPrimed = false; - Icon = default.Icon; - if ( bFailed ) return; - Vector3 safepos; - double safeangle; - if ( deathmatch ) [safepos, safeangle] = level.PickDeathmatchStart(); - else [safepos, safeangle] = level.PickPlayerStart(Owner.PlayerNumber()); - Vector3 oldpos = Owner.pos; - if ( !Owner.Teleport(safepos,safeangle,0) ) - { - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).lastbump *= .95; - Owner.A_StartSound("powerup/tethererror",CHAN_ITEMEXTRA,CHANF_OVERLAP); - if ( Owner.player == players[consoleplayer] ) Console.Printf(StringTable.Localize("$D_TETHERFAIL")); - return; - } - let s = Spawn("DemolitionistShockwave",oldpos); - s.target = Owner; - s.special1 = 120; - s = Spawn("DemolitionistShockwave",Owner.pos); - s.target = Owner; - s.special1 = 120; - if ( Owner.player == players[consoleplayer] ) - { - Owner.A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP); - Owner.A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.7); - Owner.A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.4); - } - SWWMHandler.DoFlash(Owner,Color(255,255,255,255),10); - SWWMHandler.DoFlash(Owner,Color(255,128,192,255),30); - if ( Owner.GiveBody(100,100) ) - SWWMScoreObj.Spawn(100,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); - SWWMUtility.AchievementProgressInc("sneaky",1,Owner.player); - Amount--; - if ( Amount <= 0 ) DepleteOrDestroy(); - } - - override bool Use( bool pickup ) - { - if ( pickup || bPrimed ) return false; - if ( !OnIcon[0] ) OnIcon[0] = TexMan.CheckForTexture("graphics/HUD/Icons/I_SafetyOn.png"); - if ( !OnIcon[1] ) OnIcon[1] = TexMan.CheckForTexture("graphics/HUD/Icons/I_SafetyNo.png"); - if ( !OnIcon[2] ) OnIcon[2] = TexMan.CheckForTexture("graphics/HUD/Icons/I_SafetyYes.png"); - bPrimed = true; - primetim = 0; - Vector3 safepos; - if ( deathmatch ) safepos = level.PickDeathmatchStart(); - else safepos = level.PickPlayerStart(Owner.PlayerNumber()); - bFailed = (level.Vec3Diff(Owner.pos,safepos).length() < 400); - if ( (Owner.player == players[consoleplayer]) || bBigPowerup ) Owner.A_StartSound(bFailed?"powerup/tetherfail":"powerup/tetheruse",CHAN_ITEMEXTRA,CHANF_OVERLAP); - // don't consume on use, will happen later - Amount++; - return true; - } - - Default - { - //$Title Safety Tether - //$Group Powerups - //$Sprite graphics/HUD/Icons/I_Safety.png - //$Icon powerup - Tag "$T_SAFETY"; - Stamina 240000; - Inventory.Icon "graphics/HUD/Icons/I_Safety.png"; - Inventory.PickupSound "misc/p_pkup"; - Inventory.UseSound ""; - Inventory.PickupMessage "$T_SAFETY"; - Inventory.MaxAmount 5; - Inventory.InterHubAmount 5; - Inventory.PickupFlash "SWWMPurplePickupFlash"; - +INVENTORY.ALWAYSPICKUP; - +INVENTORY.AUTOACTIVATE; - +INVENTORY.INVBAR; - +COUNTITEM; - +INVENTORY.BIGPOWERUP; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 5; - Height 23; - } - States - { - Spawn: - XZW1 A 33; - XZW1 B 2; - Loop; - } -} - -Class AngeryLight : PointLightAttenuated -{ - Default - { - Args 224,0,255,80; - } - override void Tick() - { - Super.Tick(); - if ( !target || !master ) - { - Destroy(); - return; - } - if ( target.player ) - SetOrigin(target.Vec2OffsetZ(0,0,target.player.viewz),true); - else SetOrigin(target.Vec3Offset(0,0,target.height/2),true); - args[LIGHT_INTENSITY] = Random[Invinciball](10,12)*8; - bDORMANT = Powerup(master).isBlinking(); - } -} -Class AngerySnd : Actor -{ - Default - { - +NOBLOCKMAP; - +NOGRAVITY; - +NOINTERACTION; - } - override void Tick() - { - if ( !target || !master ) - { - Destroy(); - return; - } - SetOrigin(target.pos,true); - if ( players[consoleplayer].Camera == target ) - { - A_SoundVolume(CHAN_VOICE,0.); - A_SoundVolume(CHAN_7,.5); - } - else - { - A_SoundVolume(CHAN_VOICE,.4); - A_SoundVolume(CHAN_7,0.); - } - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - A_StartSound("powerup/devastationact",CHAN_VOICE,CHANF_LOOP,.4,1.5); - A_StartSound("powerup/devastationact",CHAN_7,CHANF_LOOP,.5,ATTN_NONE); - } - override void OnDestroy() - { - Super.OnDestroy(); - A_StopSound(CHAN_VOICE); - A_StopSound(CHAN_7); - } -} -Class AngeryPower : Powerup -{ - Mixin SWWMShadedPowerup; - - Actor l, snd; - int lasteffect; - transient int lastpulse; - - Default - { - Powerup.Duration -50; - Inventory.Icon "graphics/HUD/Icons/I_Devastation.png"; - Powerup.Color "C0 00 FF", 0.2; - +INVENTORY.ADDITIVETIME; - } - - override void InitEffect() - { - Super.InitEffect(); - if ( !Owner ) return; - Owner.A_AlertMonsters(swwm_uncapalert?0:5000); - SWWMHandler.DoFlash(Owner,Color(64,224,0,255),30); - Owner.A_QuakeEx(8,8,8,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); - lasteffect = int.min; - lastpulse = max(lastpulse,gametic+35); - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).lastbump *= .95; - l = Spawn("AngeryLight",Owner.pos); - l.target = Owner; - l.master = self; - } - override void DoEffect() - { - Super.DoEffect(); - if ( !Owner ) return; - if ( !snd ) snd = Spawn("AngerySnd",Owner.pos); - snd.target = Owner; - snd.master = self; - } - - override void EndEffect() - { - Super.EndEffect(); - if ( !Owner ) return; - Owner.A_StartSound("powerup/devastationend",CHAN_ITEMEXTRA,CHANF_OVERLAP); - SWWMHandler.DoFlash(Owner,Color(128,224,0,255),30); - Owner.A_QuakeEx(4,4,4,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); - Owner.A_AlertMonsters(2000); - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).lastbump *= .9; - if ( (EffectTics <= 0) && Owner && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_DEVASTATION")); - } - - void DoHitFX() - { - if ( level.maptime <= lasteffect+5 ) return; - Owner.A_AlertMonsters(swwm_uncapalert?0:5000); - SWWMHandler.DoFlash(Owner,Color(64,224,0,255),10); - Owner.A_QuakeEx(8,8,8,Random[Rage](3,8),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); - Owner.A_StartSound("powerup/devastationhit",CHAN_POWERUP,CHANF_OVERLAP); - lasteffect = level.maptime; - lastpulse = max(lastpulse,gametic+35); - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).lastbump *= .9; - } - - override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags ) - { - if ( passive || (damage <= 0) ) return; - // (2^31-1)/25 : guarantee that it caps rather than overflowing - if ( damage > 85899345 ) newdamage = int.max; - else newdamage = damage*25; - // don't play hit fx for wall busting, as it'll be done manually if the bust goes through - if ( damageType != 'Wallbust' ) DoHitFX(); - } -} -Class AngerySigil : Inventory -{ - Mixin SWWMAutoUseFix; - Mixin SWWMOverlapPickupSound; - Mixin SWWMUseToPickup; - Mixin SWWMRespawn; - Mixin SWWMPickupGlow; - - override bool Use( bool pickup ) - { - if ( pickup && !deathmatch ) return false; - if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); - SWWMUtility.AchievementProgressInc("deva",1,Owner.player); - let r = AngeryPower(Owner.FindInventory("AngeryPower")); - if ( r ) - { - r.EffectTics += r.default.EffectTics; - SWWMHandler.DoFlash(Owner,Color(64,224,0,255),30); - Owner.A_QuakeEx(8,8,8,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); - if ( Owner is 'Demolitionist' ) - Demolitionist(Owner).lastbump *= .95; - } - else Owner.GiveInventory("AngeryPower",1); - return true; - } - override void PreTravelled() - { - if ( tracer ) tracer.Destroy(); - } - override void Travelled() - { - Super.Travelled(); - if ( tracer ) return; - tracer = Spawn("AngerySigilX",pos); - tracer.angle = angle; - tracer.target = self; - tracer.FloatBobPhase = FloatBobPhase; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - tracer = Spawn("AngerySigilX",pos); - tracer.angle = angle; - tracer.target = self; - tracer.FloatBobPhase = FloatBobPhase; - } - Default - { - //$Title Devastation Sigil - //$Group Powerups - //$Sprite graphics/HUD/Icons/I_Devastation.png - //$Icon powerup - Tag "$T_DEVASTATION"; - Stamina -1500000; - Inventory.Icon "graphics/HUD/Icons/I_Devastation.png"; - Inventory.PickupSound "misc/p_pkup_vip"; - Inventory.UseSound "powerup/devastation"; - Inventory.PickupMessage "$T_DEVASTATION"; - Inventory.MaxAmount 3; - Inventory.InterHubAmount 3; - Inventory.PickupFlash "SWWMPurplePickupFlash"; - +INVENTORY.ALWAYSPICKUP; - +INVENTORY.AUTOACTIVATE; - +INVENTORY.INVBAR; - +COUNTITEM; - +INVENTORY.BIGPOWERUP; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 8; - Height 28; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class AngerySigilX : GhostArtifactX -{ - Default - { - Scale .5; - Alpha .35; - RenderStyle "Subtract"; - +FORCEXYBILLBOARD; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - A_StartSound("powerup/devastationamb",CHAN_VOICE,CHANF_LOOP,attenuation:2.); - } - override void Tick() - { - if ( !target ) - { - Destroy(); - return; - } - prev = target.prev+(0,0,20); - vel = target.vel; - if ( (target.pos != pos+(0,0,20)) || (target.vel != (0,0,0)) ) SetOrigin(target.pos+(0,0,20)+vel,true); - if ( angle != target.angle ) A_SetAngle(target.angle,SPF_INTERPOLATE); - FloatBobPhase = target.FloatBobPhase; - if ( !bsprite ) bsprite = GetSpriteIndex('XZW1'); - bInvisible = target.bInvisible||(target.sprite!=bsprite); - SetState(SpawnState+bInvisible); - A_SoundVolume(CHAN_VOICE,bInvisible?0.:1.); - } - States - { - Spawn: - BLPS C -1 Bright; - TNT1 A -1; - Stop; - } -} - -Class DivineSpriteLight : PointLightAttenuated -{ - Default - { - Args 255,255,255,100; - } - override void Tick() - { - Super.Tick(); - if ( !target || !master ) - { - Destroy(); - return; - } - if ( target.player ) - SetOrigin(target.Vec2OffsetZ(0,0,target.player.viewz),true); - else SetOrigin(target.Vec3Offset(0,0,target.height/2),true); - double vol = clamp((target.Health-1000)/6000.,0.,1.); - int lv = clamp(int(vol*255),0,255); - args[LIGHT_RED] = lv; - args[LIGHT_GREEN] = lv; - args[LIGHT_BLUE] = lv; - args[LIGHT_INTENSITY] = Random[Invinciball](10,12)*10; - } -} -Class DivineSpriteSnd : Actor -{ - Default - { - +NOBLOCKMAP; - +NOGRAVITY; - +NOINTERACTION; - } - override void Tick() - { - if ( !target || !master ) - { - Destroy(); - return; - } - SetOrigin(target.pos,true); - double vol = clamp((DivineSpriteEffect(master).AlphInter.GetValue()-1000.)/9000.,0.,1.); - if ( players[consoleplayer].Camera == target ) - { - A_SoundVolume(CHAN_VOICE,0.); - A_SoundVolume(CHAN_7,.8*vol); - } - else - { - A_SoundVolume(CHAN_VOICE,.4*vol); - A_SoundVolume(CHAN_7,0.); - } - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - A_StartSound("powerup/divineact",CHAN_VOICE,CHANF_LOOP,.4,1.5); - A_StartSound("powerup/divineact",CHAN_7,CHANF_LOOP,.8,ATTN_NONE); - } - override void OnDestroy() - { - Super.OnDestroy(); - A_StopSound(CHAN_VOICE); - A_StopSound(CHAN_7); - } -} -Class DivineSpriteEffect : Inventory -{ - int healcnt; - int healtim; - bool bHealDone; - Actor l, snd; - DynamicValueInterpolator AlphInter; - - Property HealTimer : healtim; - - default - { - Inventory.Icon "graphics/HUD/Icons/I_Divine.png"; - DivineSpriteEffect.HealTimer 1750; - +INVENTORY.UNDROPPABLE; - +INVENTORY.UNTOSSABLE; - } - - clearscope bool isBlinking() const - { - return ( (healtim <= BLINKTHRESHOLD) && (healtim&8) ); - } - - override Color GetBlend() - { - if ( swwm_shaders ) return 0; - if ( !AlphInter ) AlphInter = DynamicValueInterpolator.Create(Owner.Health,.1,1,100); - double alph = clamp((AlphInter.GetValue()-1000.)/6000.,0.,1.); - return Color(int(64*alph),255,255,255); - } - - override void Travelled() - { - Super.Travelled(); - bHealDone = true; - } - - override void DoEffect() - { - Super.DoEffect(); - if ( !l ) l = Spawn("DivineSpriteLight",Owner.pos); - l.target = Owner; - l.master = self; - if ( !snd ) snd = Spawn("DivineSpriteSnd",Owner.pos); - snd.target = Owner; - snd.master = self; - int numpt = Random[ExploS](5,10); - if ( !AlphInter ) AlphInter = DynamicValueInterpolator.Create(Owner.Health,.1,1,100); - AlphInter.Update(Owner.Health); - double alph = clamp((AlphInter.GetValue()-1000.)/6000.,0.,1.); - double scl = clamp((AlphInter.GetValue()-1000.)/6000.,2.,4.); - for ( int i=0; i ShootThroughList; + Array HitList; + + override ETraceStatus TraceCallback() + { + if ( Results.HitType == TRACE_HitActor ) + { + if ( Results.HitActor.bSHOOTABLE ) + { + let ent = new('HitListEntry'); + ent.hitactor = Results.HitActor; + ent.hitlocation = Results.HitPos; + ent.x = Results.HitVector; + hitlist.Push(ent); + } + return TRACE_Skip; + } + else if ( Results.HitType == TRACE_HitWall ) + { + ShootThroughList.Push(Results.HitLine); + return TRACE_Skip; + } + return TRACE_Skip; + } +} + +// main heatseeker +Class MykradvoTendril : SWWMNonInteractiveActor +{ + Vector3 nextpos, nextdir; + + bool bDoSplit; + + virtual bool IsBig() + { + return true; + } + + void A_Trace() + { + tics = IsBig()?2:1; + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); + if ( !bSTANDSTILL ) + { + let t = new('TendrilTracer'); + t.hitlist.Clear(); + t.ShootThroughList.Clear(); + t.Trace(pos,CurSector,x,speed,0,ignore:target); + foreach ( l:t.ShootThroughList ) + { + l.Activate(target,0,SPAC_PCross); + l.Activate(target,0,SPAC_Impact); + } + foreach ( hit:t.hitlist ) + { + if ( hit.hitactor.IsFriend(target) ) continue; + if ( (hit.hitactor == tracer) && IsBig() ) bDoSplit = true; // we split + int dmg = (hit.hitactor.bBOSS||hit.hitactor.FindInventory('BossMarker'))?(GetMissileDamage(0,0)*4):max(hit.hitactor.Health,GetMissileDamage(0,0)); + SWWMUtility.DoKnockback(hit.hitactor,-hit.x+(0,0,.5),((hit.hitactor.Health-dmg)<=0)?60000:8000); + let p = SWWMPuff.Setup(hit.hitlocation,hit.x,self,target,hit.hitactor); + hit.hitactor.DamageMobj(p,target,dmg,'Plasma',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); + if ( hit.hitactor && hit.hitactor.bISMONSTER && !Random[Mykradvo](0,3) ) + hit.hitactor.Howl(); + } + } + nextpos = level.Vec3Offset(pos,x*speed); + if ( !bSTANDSTILL && (!tracer || !tracer.bSHOOTABLE || (tracer.Health <= 0) || ((tracer.bBOSS || tracer.FindInventory('BossMarker')) && !IsBig())) ) + { + ReactionTime--; + if ( ReactionTime <= 0 ) + { + bAMBUSH = true; + return; + } + } + double a = FRandom[Mykradvo](0,360), s = FRandom[Mykradvo](0.,bSTANDSTILL?3.:IsBig()?.75:1.5); + Vector3 dir = SWWMUtility.ConeSpread(x,y,z,a,s); + if ( tracer ) + { + Vector3 destofs = IsBig()?tracer.Vec3Offset(0,0,tracer.Height/2.):tracer.Vec3Offset(FRandom[Mykradvo](-1.2,1.2)*tracer.Radius,FRandom[Mykradvo](-1.2,1.2)*tracer.Radius,FRandom[Mykradvo](-.1,1.1)*tracer.height); + Vector3 dirto = level.Vec3Diff(nextpos,destofs); + double dist = dirto.length(); + if ( dist > 1 ) + { + dirto /= dist; + dir = (dir+dirto*(clamp(1.-(dist/4000.),.25,1.)**1.5)).unit(); + } + // early split + if ( dist < speed ) bDoSplit = true; + } + nextdir = dir; + } + void A_Spread() + { + if ( IsBig() && bDoSplit ) + { + // spread into sub-tendrils + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); + int ntendies = tracer?clamp(tracer.GetSpawnHealth()/400,2,10):2; + for ( int i=0; i ReactionTime)) ) + { + if ( !bSTANDSTILL ) + { + int numpt = IsBig()?9:3; + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); + for ( int i=0; i 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_FadeOut(IsBig()?.05:bSTANDSTILL?.2:.1); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + Default + { + Obituary "$O_MYKRADVO"; + RenderStyle 'Add'; + DamageFunction 100; + ReactionTime 8; + Speed 64; + +INTERPOLATEANGLES; + +FOILINVUL; + } + States + { + Spawn: + TNT1 A 0 Bright; + XZW1 A 1 Bright A_Trace(); + XZW1 A 1 Bright + { + A_Spread(); + return FindState('Fade')+Random[Mykradvo](0,11)*2; + } + Stop; + Fade: + #### # 20 Bright; + XZW1 B -1 Bright; + Stop; + #### # 20 Bright; + XZW1 C -1 Bright; + Stop; + #### # 20 Bright; + XZW1 D -1 Bright; + Stop; + #### # 20 Bright; + XZW1 E -1 Bright; + Stop; + #### # 20 Bright; + XZW1 F -1 Bright; + Stop; + #### # 20 Bright; + XZW1 G -1 Bright; + Stop; + #### # 20 Bright; + XZW1 H -1 Bright; + Stop; + #### # 20 Bright; + XZW1 I -1 Bright; + Stop; + #### # 20 Bright; + XZW1 J -1 Bright; + Stop; + #### # 20 Bright; + XZW1 K -1 Bright; + Stop; + #### # 20 Bright; + XZW1 L -1 Bright; + Stop; + #### # 20 Bright; + XZW1 M -1 Bright; + Stop; + } +} + +// sub seekers +Class MykradvoSmallTendril : MykradvoTendril +{ + override bool IsBig() + { + return false; + } + Default + { + Speed 16; + DamageFunction 10; + ReactionTime 20; + } + States + { + Fade: + #### # 10 Bright; + XZW1 B -1 Bright; + Stop; + #### # 10 Bright; + XZW1 C -1 Bright; + Stop; + #### # 10 Bright; + XZW1 D -1 Bright; + Stop; + #### # 10 Bright; + XZW1 E -1 Bright; + Stop; + #### # 10 Bright; + XZW1 F -1 Bright; + Stop; + #### # 10 Bright; + XZW1 G -1 Bright; + Stop; + #### # 10 Bright; + XZW1 H -1 Bright; + Stop; + #### # 10 Bright; + XZW1 I -1 Bright; + Stop; + #### # 10 Bright; + XZW1 J -1 Bright; + Stop; + #### # 10 Bright; + XZW1 K -1 Bright; + Stop; + #### # 10 Bright; + XZW1 L -1 Bright; + Stop; + #### # 10 Bright; + XZW1 M -1 Bright; + Stop; + } +} + +// non-hurting non-seekers +Class MykradvoSmallNullTendril : MykradvoSmallTendril +{ + Default + { + Speed 8; + ReactionTime 6; + +STANDSTILL; + } + States + { + Fade: + #### # 5 Bright; + XZW1 B -1 Bright; + Stop; + #### # 5 Bright; + XZW1 C -1 Bright; + Stop; + #### # 5 Bright; + XZW1 D -1 Bright; + Stop; + #### # 5 Bright; + XZW1 E -1 Bright; + Stop; + #### # 5 Bright; + XZW1 F -1 Bright; + Stop; + #### # 5 Bright; + XZW1 G -1 Bright; + Stop; + #### # 5 Bright; + XZW1 H -1 Bright; + Stop; + #### # 5 Bright; + XZW1 I -1 Bright; + Stop; + #### # 5 Bright; + XZW1 J -1 Bright; + Stop; + #### # 5 Bright; + XZW1 K -1 Bright; + Stop; + #### # 5 Bright; + XZW1 L -1 Bright; + Stop; + #### # 5 Bright; + XZW1 M -1 Bright; + Stop; + } +} + +Class MykradvoBurstLight : PaletteLight +{ + Default + { + Tag "Purple"; + ReactionTime 60; + Args 0,0,0,400; + } +} + +// 'splode +Class MykradvoBurst : SWWMNonInteractiveActor +{ + Array targets; + int nstep; + + Default + { + RenderStyle 'Add'; + +FORCEXYBILLBOARD; + Scale 1.4; + } + void FlashPlayer( int str, double rad ) + { + if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; + let mo = players[consoleplayer].Camera; + double dist = Distance3D(mo); + str = int(str*(1.-(dist/rad))); + SWWMHandler.DoFlash(mo,Color(str,250,240,255),5); + SWWMHandler.DoFlash(mo,Color(str,128,0,255),15); + } + override void PostBeginPlay() + { + nstep = clamp(targets.Size()/10,1,5); + A_AlertMonsters(swwm_uncapalert?0:8000); + A_QuakeEx(9.,9.,9.,80,0,3000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:1000,rollintensity:2.); + A_StartSound("powerup/mykradvo",CHAN_BODY,CHANF_DEFAULT,1.,.25); + A_StartSound("powerup/mykradvo",CHAN_VOICE,CHANF_DEFAULT,1.,.25); + FlashPlayer(100,1500); + int numpt = Random[ExploS](20,30); + for ( int i=0; i 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + if ( (special1++)%3 ) + { + if ( targets.Size() > 0 ) + { + int numpt = Random[ExploS](2,4); + for ( int j=0; j 0) ) + { + let t = Spawn('MykradvoTendril',pos); + t.angle = t.AngleTo(targ); + t.pitch = t.PitchTo(targ,0,targ.Height/2); + t.target = target; + t.tracer = targ; + } + else i--; + targets.Delete(0); + } + } + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + States + { + Spawn: + XEX4 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ 2 Bright; + TNT1 A 1 A_JumpIf(!IsActorPlayingSound(CHAN_VOICE)&&!(targets.Size()),1); + Wait; + TNT1 A 1; + Stop; + } +} + +Class Mykradvo : Inventory +{ + Mixin SWWMAutoUseFix; + Mixin SWWMOverlapPickupSound; + Mixin SWWMUseToPickup; + Mixin SWWMRespawn; + Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; + + Actor ringa[2]; + + Array targets; + + // quicksort (targets) + private bool CmpDist( Actor ref, Vector3 a, Vector3 b ) + { + double dista = level.Vec3Diff(ref.pos,a).length(); + double distb = level.Vec3Diff(ref.pos,b).length(); + return (dista < distb); + } + private int partition_targets( Array a, int l, int h, Actor ref ) + { + Actor pv = a[h]; + int i = (l-1); + for ( int j=l; j<=(h-1); j++ ) + { + if ( CmpDist(ref,a[j].pos,pv.pos) ) + { + i++; + Actor tmp = a[j]; + a[j] = a[i]; + a[i] = tmp; + } + } + Actor tmp = a[h]; + a[h] = a[i+1]; + a[i+1] = tmp; + return i+1; + } + private void qsort_targets( Array a, int l, int h, Actor ref ) + { + if ( l >= h ) return; + int p = partition_targets(a,l,h,ref); + qsort_targets(a,l,p-1,ref); + qsort_targets(a,p+1,h,ref); + } + + bool FindTargets( Actor t ) + { + targets.Clear(); + // search all actively hostile enemies within 50m + BlockThingsIterator bt; + for ( int i=0; i= targets.Size() ) + targets.Push(a); + } + bt.Destroy(); + } + // sorted, so the closest take priority + qsort_targets(targets,0,targets.Size()-1,t); + return (targets.Size() > 0); + } + + override bool Use( bool pickup ) + { + if ( pickup && !deathmatch ) return false; + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + Vector3 spawnpos = Owner.Vec3Angle(15,Owner.angle,Owner.Height*.7); + if ( !FindTargets(Owner) ) + { + int numpt = Random[ExploS](8,12); + let f = Spawn('SWWMPurplePickupFlash',spawnpos-(0,0,16)); + f.Scale *= .5; + for ( int i=0; i 44444444 ) newdamage = 444444444; + else newdamage = damage*10+4; + } + else + { + // (2^31-1)/25 : guarantee that it caps rather than overflowing + if ( damage > 85899345 ) newdamage = int.max; + else newdamage = damage*25; + } + // don't play hit fx for wall busting, as it'll be done manually if the bust goes through + if ( damageType != 'Wallbust' ) DoHitFX(); + } +} +Class AngerySigil : Inventory +{ + Mixin SWWMAutoUseFix; + Mixin SWWMOverlapPickupSound; + Mixin SWWMUseToPickup; + Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; + Mixin SWWMPickupGlow; + Mixin SWWMUnrealStyleDrop; + + override bool Use( bool pickup ) + { + if ( pickup && !deathmatch ) return false; + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + SWWMUtility.AchievementProgressInc("deva",1,Owner.player); + let r = AngeryPower(Owner.FindInventory('AngeryPower')); + if ( r ) + { + r.EffectTics += r.default.EffectTics; + SWWMHandler.DoFlash(Owner,Color(64,224,0,255),30); + Owner.A_QuakeEx(8.,8.,8.,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.); + if ( Owner is 'Demolitionist' ) + Demolitionist(Owner).lastbump *= .95; + } + else Owner.GiveInventory('AngeryPower',1); + return true; + } + override void PreTravelled() + { + if ( tracer ) tracer.Destroy(); + } + override void Travelled() + { + Super.Travelled(); + if ( tracer ) return; + tracer = Spawn('AngerySigilX',pos); + tracer.angle = angle; + tracer.target = self; + tracer.FloatBobPhase = FloatBobPhase; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + tracer = Spawn('AngerySigilX',pos); + tracer.angle = angle; + tracer.target = self; + tracer.FloatBobPhase = FloatBobPhase; + } + Default + { + Tag "$T_DEVASTATION"; + Stamina -1500000; + Inventory.Icon "graphics/HUD/Icons/I_Devastation.png"; + Inventory.PickupSound "misc/p_pkup_vip"; + Inventory.UseSound "powerup/devastation"; + Inventory.PickupMessage "$T_DEVASTATION"; + Inventory.MaxAmount 3; + Inventory.InterHubAmount 3; + Inventory.PickupFlash 'SWWMPurplePickupFlash'; + +INVENTORY.ALWAYSPICKUP; + +INVENTORY.AUTOACTIVATE; + +INVENTORY.INVBAR; + +COUNTITEM; + +INVENTORY.BIGPOWERUP; + +FLOATBOB; + +DONTGIB; + FloatBobStrength 0.25; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class AngerySigilX : SWWMItemOverlay +{ + Default + { + Scale .5; + Alpha .35; + RenderStyle 'Subtract'; + +FORCEXYBILLBOARD; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_StartSound("powerup/devastationamb",CHAN_VOICE,CHANF_LOOP,attenuation:2.); + WorldOffset = (0,0,20); + } + override void Tick() + { + if ( !target ) + { + Destroy(); + return; + } + prev = target.prev; + if ( (target.pos != pos) || (target.vel != (0,0,0)) ) SetOrigin(target.pos+vel,true); + if ( angle != target.angle ) A_SetAngle(target.angle,SPF_INTERPOLATE); + FloatBobPhase = target.FloatBobPhase; + bool bOldInvis = bInvisible; + bInvisible = target.bInvisible||Inventory(target).Owner; + if ( bInvisible != bOldInvis ) + { + SetState(SpawnState+bInvisible); + A_SoundVolume(CHAN_VOICE,bInvisible?0.:1.); + } + } + States + { + Spawn: + BLPS C -1 Bright; + TNT1 A -1; + Stop; + } +} + +Class DivineSpriteLight : PointLightAttenuated +{ + Default + { + Args 255,255,255,100; + } + override void Tick() + { + Super.Tick(); + if ( !target || !master ) + { + Destroy(); + return; + } + if ( target.player ) SetOrigin(SWWMUtility.GetFireOffset(target,10,0,0),true); + else SetOrigin(target.Vec3Angle(10,target.angle,target.missileheight),true); + double vol = clamp((target.Health-1000)/6000.,0.,1.); + int lv = clamp(int(vol*255),0,255); + args[LIGHT_RED] = lv; + args[LIGHT_GREEN] = lv; + args[LIGHT_BLUE] = lv; + args[LIGHT_INTENSITY] = Random[Invinciball](10,12)*10; + } +} +Class DivineSpriteSnd : SWWMNonInteractiveActor +{ + override void Tick() + { + if ( !target || !master ) + { + Destroy(); + return; + } + SetOrigin(target.pos,true); + double vol = clamp((DivineSpriteEffect(master).AlphInter.GetValue()-1000.)/9000.,0.,1.); + if ( players[consoleplayer].Camera == target ) + { + A_SoundVolume(CHAN_VOICE,0.); + A_SoundVolume(CHAN_7,.8*vol); + } + else + { + A_SoundVolume(CHAN_VOICE,.4*vol); + A_SoundVolume(CHAN_7,0.); + } + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_StartSound("powerup/divineact",CHAN_VOICE,CHANF_LOOP,.4,1.5); + A_StartSound("powerup/divineact",CHAN_7,CHANF_LOOP,.8,ATTN_NONE); + } + override void OnDestroy() + { + Super.OnDestroy(); + A_StopSound(CHAN_VOICE); + A_StopSound(CHAN_7); + } +} +Class DivineSpriteEffect : Inventory +{ + int healcnt; + int healtim; + bool bHealDone; + Actor l, snd; + DynamicValueInterpolator AlphInter; + FSpawnParticleParams flare; + + Property HealTimer : healtim; + + default + { + Inventory.Icon "graphics/HUD/Icons/I_Divine.png"; + DivineSpriteEffect.HealTimer 1750; + +INVENTORY.UNDROPPABLE; + +INVENTORY.UNTOSSABLE; + } + + clearscope bool isBlinking() const + { + return ( (healtim <= BLINKTHRESHOLD) && (healtim&8) ); + } + + override Color GetBlend() + { + if ( swwm_shaders ) return 0; + if ( !AlphInter ) AlphInter = DynamicValueInterpolator.Create(Owner.Health,.1,1,100); + double alph = clamp((AlphInter.GetValue()-1000.)/6000.,0.,1.); + return Color(int(64*alph),255,255,255); + } + + override void Travelled() + { + Super.Travelled(); + bHealDone = true; + } + + override void DoEffect() + { + Super.DoEffect(); + if ( !l ) l = Spawn('DivineSpriteLight',Owner.pos); + l.target = Owner; + l.master = self; + if ( !snd ) snd = Spawn('DivineSpriteSnd',Owner.pos); + snd.target = Owner; + snd.master = self; + int numpt = Random[ExploS](5,10); + if ( !AlphInter ) AlphInter = DynamicValueInterpolator.Create(Owner.Health,.1,1,100); + AlphInter.Update(Owner.Health); + double alph = clamp((AlphInter.GetValue()-1000.)/6000.,0.,1.); + double scl = clamp((AlphInter.GetValue()-1000.)/6000.,2.,4.); + if ( !flare.texture ) + { + flare.color1 = 0xFFFFFFFF; + flare.texture = TexMan.CheckForTexture("graphics/Particles/xflare.png"); + flare.style = STYLE_AddShaded; + flare.flags = SPF_FULLBRIGHT; + flare.lifetime = 30; + flare.fadestep = -1; + flare.accel = (0,0,.05); + } + flare.size = scl; + flare.sizestep = -scl/30.; + flare.startalpha = alph; + for ( int i=0; i used; - bool result, usedup; -} - enum EKMenuKey { MK_DOWN, @@ -42,15 +29,10 @@ Class DemolitionistMenu : GenericMenu String tmsg; int tmsgtic; // money owned, for store - int muns1, muns2; + int muns; // other text String clockstr, munstr; - // menu keybind - int ikey[2]; - String mkey[2]; - // for checks (duh) - Array checklist; - int lasttuid; + // cached pointers to mod handlers SWWMHandler hnd; SWWMStaticHandler shnd; // seeeeecret @@ -62,11 +44,15 @@ Class DemolitionistMenu : GenericMenu Vector2 curmouse; bool isrclick; // somehow Drawer can be called while closing prematurely, which is big bollocks - bool isclosing; + bool isclosing, forceclose; // the tabs Array tabs; int curtab; int oldtab; // used for returning from help tab + // fonts + Font mSmallFont, mTinyFont; + // for open/close animation + double animtimer; int GenTUID() { @@ -127,10 +113,8 @@ Class DemolitionistMenu : GenericMenu return -1; } - private void DoClose( bool PlaySound = false ) + private void DoClose() { - isclosing = true; - if ( PlaySound ) MenuSound("menu/democlose"); EventHandler.SendNetworkEvent("swwmclearalltransactions",consoleplayer); for ( int i=0; i deftabs[] = { 'DemolitionistMissionTab', @@ -183,30 +170,36 @@ Class DemolitionistMenu : GenericMenu 'DemolitionistKeychainTab', 'DemolitionistLibraryTab', 'DemolitionistStoreTab', - 'DemolitionistChatTab', 'DemolitionistHelpTab', 'DemolitionistSecretTab' }; + // since GZDoom 4.10 we have to "pre-tick" tabs as soon as they're initialized for ( int i=0; i)(AllClasses[i]); + let t = DemolitionistMenuTab(new(deftabs[i])).Init(self); + t.Ticker(); + tabs.Push(t); + } + // custom tabs go before the help and secret tabs + foreach ( cls:AllClasses ) + { + let ct = (Class)(cls); if ( !ct || (ct.GetParentClass() != 'DemolitionistMenuTabCustom') ) continue; - tabs.Push(DemolitionistMenuTab(new(ct)).Init(self)); + let t = DemolitionistMenuTab(new(ct)).Init(self); + t.Ticker(); + tabs.Push(t); } for ( int i=deftabs.Size()-2; i saved = shnd.menustate.At("LastTab"); - if ( saved ) curtab = FindTabType(saved,true); + let t = DemolitionistMenuTab(new(deftabs[i])).Init(self); + t.Ticker(); + tabs.Push(t); } - else + curtab = -1; + if ( shnd.menustate.CheckKey("LastTab") ) { - shnd.menustate = Dictionary.Create(); - curtab = -1; + Class saved = shnd.menustate.Get("LastTab"); + if ( saved ) curtab = FindTabType(saved,true); } if ( curtab == -1 ) curtab = GetFirstTab(); tabs[curtab].OnSelect(); @@ -214,49 +207,55 @@ Class DemolitionistMenu : GenericMenu override bool MenuEvent( int mkey, bool fromcontroller ) { - switch ( kcode ) + if ( isclosing || (animtimer < 1.) ) return false; + // pachinko code only handled if the tab lacks direct input + if ( !tabs[curtab].bDirectInput ) { - case 0: - case 1: - if ( mkey == MKEY_UP ) kcode++; - else kcode = 0; - break; - case 2: - case 3: - if ( mkey == MKEY_DOWN ) kcode++; - else kcode = 0; - break; - case 4: - case 6: - if ( mkey == MKEY_LEFT ) kcode++; - else kcode = 0; - break; - case 5: - case 7: - if ( mkey == MKEY_RIGHT ) kcode++; - else kcode = 0; - break; - case 10: - if ( mkey == MKEY_ENTER ) + switch ( kcode ) { - int secret = FindTabType('DemolitionistSecretTab'); - if ( curtab != secret ) + case 0: + case 1: + if ( mkey == MKEY_UP ) kcode++; + else kcode = 0; + break; + case 2: + case 3: + if ( mkey == MKEY_DOWN ) kcode++; + else kcode = 0; + break; + case 4: + case 6: + if ( mkey == MKEY_LEFT ) kcode++; + else kcode = 0; + break; + case 5: + case 7: + if ( mkey == MKEY_RIGHT ) kcode++; + else kcode = 0; + break; + case 10: + if ( mkey == MKEY_ENTER ) { - MenuSound("misc/secret"); - tabs[curtab].OnDeselect(); - curtab = secret; - tabs[curtab].OnSelect(); - } + int secret = FindTabType('DemolitionistSecretTab'); + if ( curtab != secret ) + { + MenuSound("menu/demosecret"); + tabs[curtab].OnDeselect(); + curtab = secret; + tabs[curtab].OnSelect(); + } + } + default: + kcode = 0; + break; } - default: - kcode = 0; - break; } switch ( mkey ) { case MKEY_BACK: - DoClose(true); + isclosing = true; + MenuSound("menu/democlose"); return true; case MKEY_PAGEDOWN: int next = GetNextTab(); @@ -303,10 +302,16 @@ Class DemolitionistMenu : GenericMenu override void Ticker() { Super.Ticker(); - if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || isclosing ) + if ( (players[consoleplayer].Health <= 0) && !isclosing ) + { + MenuSound("menu/democlose"); + isclosing = true; + } + if ( (gamestate != GS_LEVEL) || paused || (isclosing && (animtimer <= 0.)) ) { // ded (or force close) DoClose(); + Close(); return; } if ( swwm_menupause ) menuactive = Menu.On; @@ -317,20 +322,30 @@ Class DemolitionistMenu : GenericMenu let bar = SWWMStatusBar(StatusBar); if ( bar ) bar.TickInterpolators(); } - CheckTransactions(); // update time string - clockstr = CrimeTime(); + clockstr = CrimeTime(c_year,c_month,c_day,c_hour,c_minute,c_tz); // update money - [muns1, muns2] = SWWMCredits.Get(players[consoleplayer]); - munstr = "\cg¥\c-"; - if ( muns2 > 0 ) munstr.AppendFormat("%d",muns2); - munstr.AppendFormat("%09d",muns1); + muns = SWWMCredits.Get(players[consoleplayer]); + munstr = String.Format("\cg¥\c-%09d",muns); + if ( isclosing ) + { + if ( animtimer >= 1. ) DontDim = DontBlur = true; + animtimer -= .1; + return; + } + if ( animtimer < 1. ) + { + animtimer += .1; + if ( animtimer < 1. ) return; // ensure tabs tick before first draw + else DontDim = DontBlur = false; + } if ( (tabs.Size() <= 0) || (curtab == -1) || !tabs[curtab] ) return; tabs[curtab].Ticker(); } override bool MouseEvent( int type, int mx, int my ) { + if ( isclosing || (animtimer < 1.) ) return false; bool res = Super.MouseEvent(type,mx,my); Vector2 mpos = (mx/hs,my/hs)-origin; if ( type == MOUSE_Click ) @@ -348,7 +363,7 @@ Class DemolitionistMenu : GenericMenu { if ( tabs[i].bHidden ) continue; str = tabs[i].title; - len = smallfont.StringWidth(str)+10; + len = mSmallFont.StringWidth(str)+10; if ( (mpos.x >= xx) && (mpos.x < xx+len) ) { if ( curtab == i ) break; @@ -380,6 +395,9 @@ Class DemolitionistMenu : GenericMenu override bool OnUiEvent( UIEvent ev ) { + if ( isclosing || (animtimer < 1.) ) return false; + if ( tabs[curtab].bDirectInput && ((ev.type == UIEvent.Type_KeyDown) || (ev.type == UIEvent.Type_KeyUp)) ) + return tabs[curtab].DirectInput(ev); switch ( ev.type ) { case UIEvent.Type_KeyDown: @@ -419,11 +437,6 @@ Class DemolitionistMenu : GenericMenu kcode = 0; break; } - if( (ikey[0] && (ev.keystring == mkey[0])) || (ikey[1] && (ev.keystring == mkey[1])) ) - { - DoClose(true); - return true; - } break; case UIEvent.Type_WheelDown: tabs[curtab].MouseInput((curmouse/hs)-origin,MB_WHEELDOWN); @@ -468,20 +481,20 @@ Class DemolitionistMenu : GenericMenu x += origin.x; y += origin.y; Screen.DrawTexture(FrameTex,false,x,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,0.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,1); - Screen.DrawTexture(FrameTex,false,x+1,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,1.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,int(w-2),DTA_DestHeight,1); - Screen.DrawTexture(FrameTex,false,x,y+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,0.,DTA_SrcY,1.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,int(h-2)); + if ( w > 2 ) Screen.DrawTexture(FrameTex,false,x+1,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,1.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,int(w-2),DTA_DestHeight,1); + if ( h > 2 ) Screen.DrawTexture(FrameTex,false,x,y+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,0.,DTA_SrcY,1.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,int(h-2)); Screen.DrawTexture(FrameTex,false,(x+w)-1,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,2.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,1); Screen.DrawTexture(FrameTex,false,x,(y+h)-1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,0.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,1); if ( shadow ) { - Screen.DrawTexture(FrameTex,false,(x+w)-1,y+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,2.,DTA_SrcY,1.,DTA_SrcWidth,2.,DTA_SrcHeight,1.,DTA_DestWidth,2,DTA_DestHeight,int(h-2)); - Screen.DrawTexture(FrameTex,false,x+1,(y+h)-1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,1.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,2.,DTA_DestWidth,int(w-2),DTA_DestHeight,2); + if ( h > 2 ) Screen.DrawTexture(FrameTex,false,(x+w)-1,y+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,2.,DTA_SrcY,1.,DTA_SrcWidth,2.,DTA_SrcHeight,1.,DTA_DestWidth,2,DTA_DestHeight,int(h-2)); + if ( w > 2 ) Screen.DrawTexture(FrameTex,false,x+1,(y+h)-1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,1.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,2.,DTA_DestWidth,int(w-2),DTA_DestHeight,2); Screen.DrawTexture(FrameTex,false,(x+w)-1,(y+h)-1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,2.,DTA_SrcY,2.,DTA_SrcWidth,2.,DTA_SrcHeight,2.,DTA_DestWidth,2,DTA_DestHeight,2); } else { - Screen.DrawTexture(FrameTex,false,(x+w)-1,y+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,2.,DTA_SrcY,1.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,int(h-2)); - Screen.DrawTexture(FrameTex,false,x+1,(y+h)-1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,1.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,int(w-2),DTA_DestHeight,1); + if ( h > 2 ) Screen.DrawTexture(FrameTex,false,(x+w)-1,y+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,2.,DTA_SrcY,1.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,int(h-2)); + if ( w > 2 ) Screen.DrawTexture(FrameTex,false,x+1,(y+h)-1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,1.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,int(w-2),DTA_DestHeight,1); Screen.DrawTexture(FrameTex,false,(x+w)-1,(y+h)-1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcX,2.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,1,DTA_DestHeight,1); } } @@ -506,10 +519,55 @@ Class DemolitionistMenu : GenericMenu override void Drawer() { - if ( isclosing ) return; + if ( animtimer < 0 ) return; + // animated frame (more math) + if ( isclosing || (animtimer < 1.) ) + { + double intp, xfact, yfact; + if ( isclosing ) + { + intp = animtimer-.1*System.GetTimeFrac(); + xfact = clamp(intp*2.,0.,1.)**2.; + yfact = clamp(intp,0.,1.)**5.; + } + else + { + intp = animtimer+.1*System.GetTimeFrac(); + xfact = clamp(intp*2,0.,1.)**2.; + yfact = clamp(intp,0.,1.)**5.; + } + double rwsx = int(SWWMUtility.Lerp(2,ws.x,xfact)); + double rwsy = int(SWWMUtility.Lerp(2,ws.y,yfact)); + if ( (rwsx == 2) && (rwsy == 2) ) return; + double rox = int(ss.x-rwsx)/2; + double roy = int(ss.y-rwsy)/2; + // copy the menu dim below the window during animations, so the transition looks smoother + Screen.Dim((dimamount<0)?0xFF000000:dimcolor,(dimamount<0)?.5:dimamount,int(rox*hs),int(roy*hs),int(rwsx*hs),int(rwsy*hs)); + // draw the background and main frame + if ( swwm_fuzz ) + { + // fuzz was designed for 16:10, so we'll have to extend it at taller ratios + int count = int(ceil(ws.y/400.)); + Screen.SetClipRect(int(rox*hs),int(roy*hs),int(rwsx*hs),int(rwsy*hs)); + for ( int i=0; i mw ) mw = cw; } return mw; @@ -31,24 +31,25 @@ Class DemolitionistMenuList ui // tick all items void Ticker() { - for ( int i=0; i clipbottom ) continue; - if ( rpos.x+rsiz.x < clipleft ) continue; - if ( rpos.x > clipright ) continue; - items[i].Drawer(pos,(i==selected),cliptop,clipbottom,clipleft,clipright); + if ( rpos.y+rsiz.y < cy ) continue; + if ( rpos.y > cy+ch ) continue; + if ( rpos.x+rsiz.x < cx ) continue; + if ( rpos.x > cx+cw ) continue; + items[i].Drawer(pos,(i==selected)); } // scrollbar drawing is handled by the tab, as the list itself is entirely unaware of its frame dimensions } @@ -71,12 +72,12 @@ Class DemolitionistMenuListItem ui virtual int GetWidth() { - return smallfont.StringWidth(label); + return master.mSmallFont.StringWidth(label); } virtual int GetHeight() { - return smallfont.GetHeight(); + return master.mSmallFont.GetHeight(); } virtual Vector2 GetDrawBounds() @@ -100,8 +101,8 @@ Class DemolitionistMenuListItem ui // nothing in the base class } - virtual void Drawer( Vector2 pos, bool selected, int cliptop, int clipbottom, int clipleft, int clipright ) + virtual void Drawer( Vector2 pos, bool selected ) { - Screen.DrawText(smallfont,selected?Font.CR_FIRE:Font.CR_WHITE,master.origin.x+pos.x,master.origin.y+pos.y,label,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(master.mSmallFont,selected?Font.CR_FIRE:Font.CR_WHITE,master.origin.x+pos.x,master.origin.y+pos.y,label,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } diff --git a/zscript/kbase/swwm_kbase_priv.zsc b/zscript/kbase/swwm_kbase_priv.zsc index 188567c0d..12f9c8090 100644 --- a/zscript/kbase/swwm_kbase_priv.zsc +++ b/zscript/kbase/swwm_kbase_priv.zsc @@ -3,7 +3,7 @@ extend Class DemolitionistMenu { // initialize the crime clock - private void SetClock() + static void SetClock( int &c_year, int &c_month, int &c_day, int &c_hour, int &c_minute, String &c_tz ) { // use mission log clock if available let mlog = SWWMMissionLog.Get(); @@ -57,6 +57,29 @@ extend Class DemolitionistMenu c_minute = 9; c_tz = "+09"; } + else if ( SWWMUtility.IsEviternityTwo() ) + { + // June 11th 2150, 04:09 +09 + // (June 11th 2150, 04:09 JST) + // Epoch: 5694174540 + c_year = 2150; + c_month = 5; + c_day = 10; + c_hour = 4; + c_minute = 9; + c_tz = "+09"; + } + else if ( SWWMUtility.IsLegacyOfRust() ) + { + // August 8th 2150, 02:31 EDT + // (August 8th 2150, 11:31 JST) + c_year = 2150; + c_month = 7; + c_day = 7; + c_hour = 2; + c_minute = 31; + c_tz = "EDT"; + } else // Doom { // June 6th 2148, 18:37 EDT @@ -76,11 +99,10 @@ extend Class DemolitionistMenu c_minute = 48; } } - clockstr = CrimeTime(); } // please don't look at this - private String CrimeTime() + static String CrimeTime( int c_year, int c_month, int c_day, int c_hour, int c_minute, String c_tz, bool shortform = false ) { // we have to do things this way because dates in this mod go beyond 32-bit unix time static const int days_in_month[] = {31,28,31,30,31,30,31,31,30,31,30,31}; @@ -162,71 +184,7 @@ extend Class DemolitionistMenu addtime = 0; } } + if ( shortform ) return String.Format("%02d:%02d",h,mn); return String.Format("%04d-%02d-%02d %02d:%02d %s",y,m+1,d+1,h,mn,c_tz); } - - // ui->play transaction checks - private void CheckTransactions() - { - for ( int i=0; i)(hnd.checklist[j].used); - if ( w ) - { - // play if actually switching - if ( hnd.checklist[j].result ) - { - String snd = GetDefaultByType(w).UpSound; - MenuSound(snd); - } - } - else if ( (hnd.checklist[j].used is 'SWWMCollectible') || (hnd.checklist[j].used is 'SWWMKey') ) - MenuSound("demolitionist/handsup"); - else - { - String snd = GetDefaultByType(hnd.checklist[j].used).UseSound; - MenuSound(snd); - } - } - } - else - { - tmsg = StringTable.Localize("$SWWM_INVFAIL"); - tmsgtic = gametic+70; - MenuSound("menu/noinvuse"); - } - } - else if ( checklist[i].type == MenuTransaction.TT_ITEMDROP ) - { - // check if drop succeeded - if ( !hnd.checklist[j].result ) - { - tmsg = StringTable.Localize("$SWWM_INVNDROP"); - tmsgtic = gametic+70; - MenuSound("menu/noinvuse"); - } - } - EventHandler.SendNetworkEvent("swwmcleartransaction",checklist[i].uid,consoleplayer); - deleteme = true; - break; - } - if ( !deleteme ) continue; - checklist.Delete(i); - i--; - } - } } diff --git a/zscript/kbase/swwm_kbase_tab.zsc b/zscript/kbase/swwm_kbase_tab.zsc index 3a86fb91a..34fa8a503 100644 --- a/zscript/kbase/swwm_kbase_tab.zsc +++ b/zscript/kbase/swwm_kbase_tab.zsc @@ -5,6 +5,7 @@ Class DemolitionistMenuTab ui abstract DemolitionistMenu master; String title; bool bHidden; // tab does not display and can't be selected + bool bDirectInput; // inputs are directly passed to this tab // tab initialization virtual DemolitionistMenuTab Init( DemolitionistMenu master ) @@ -23,6 +24,12 @@ Class DemolitionistMenuTab ui abstract { } + // called for "direct input" from ui events + virtual bool DirectInput( UIEvent ev ) + { + return false; + } + // called after this tab is selected virtual void OnSelect() { @@ -39,13 +46,13 @@ Class DemolitionistMenuTab ui abstract } // called every frame while selected - virtual void Drawer() + virtual void Drawer( double fractic ) { // placeholder (so don't call super) String str = StringTable.Localize("$SWWM_COMINGSOON"); - double xx = int(master.ws.x-smallfont.StringWidth(str))/2; - double yy = int(master.ws.y-smallfont.GetHeight())/2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + double xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2; + double yy = int(master.ws.y-master.mSmallFont.GetHeight())/2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } diff --git a/zscript/kbase/swwm_kbase_textbox.zsc b/zscript/kbase/swwm_kbase_textbox.zsc index d831367f2..9f7606de9 100644 --- a/zscript/kbase/swwm_kbase_textbox.zsc +++ b/zscript/kbase/swwm_kbase_textbox.zsc @@ -22,12 +22,12 @@ Class DemolitionistMenuTextBox ui else self.txt = txt; ofs = 0; // break lines - l = smallfont.BreakLines(self.txt,self.w-12); + l = master.mSmallFont.BreakLines(self.txt,self.w-12); int h = l.Count()*13; if ( h > (master.ws.y-34) ) { l.Destroy(); - l = smallfont.BreakLines(self.txt,self.w-20); + l = master.mSmallFont.BreakLines(self.txt,self.w-20); scrollbar = true; maxofs = int((l.Count()*13)-(master.ws.y-34)); } @@ -45,14 +45,14 @@ Class DemolitionistMenuTextBox ui // break lines again (if changed) if ( (self.w == oldw) && (self.txt == oldtxt) ) return; if ( l ) l.Destroy(); - l = smallfont.BreakLines(self.txt,self.w-12); + l = master.mSmallFont.BreakLines(self.txt,self.w-12); int h = l.Count()*13; scrollbar = false; maxofs = 0; if ( h > (master.ws.y-34) ) { l.Destroy(); - l = smallfont.BreakLines(self.txt,self.w-20); + l = master.mSmallFont.BreakLines(self.txt,self.w-20); scrollbar = true; maxofs = int((l.Count()*13)-(master.ws.y-34)); } @@ -93,31 +93,33 @@ Class DemolitionistMenuTextBox ui if ( abs(smofs-ofs) < (1./master.hs) ) smofs = ofs; } - void Drawer( bool dark = false ) + void Drawer( double fractic, bool dark = false ) { + double ssmofs = (smofs~==ofs)?smofs:(smofs*(1.-fractic)+((smofs*.6)+(ofs*.4))*fractic); double xx = x+6; - double yy = 17-smofs; - int miny = int((master.origin.y+17)*master.hs); - int maxy = int((master.origin.y+(master.ws.y-17))*master.hs); + double yy = 17-ssmofs; + Screen.SetClipRect(int((master.origin.x+xx)*master.hs),int((master.origin.y+17)*master.hs),int(w*master.hs),int((master.ws.y-34)*master.hs)); // draw image if defined and visible if ( img.IsValid() ) { Vector2 imgsz = TexMan.GetScaledSize(img); - if ( (yy+imgsz.y >= 17) && (yy < master.ws.y) ) - Screen.DrawTexture(img,false,master.origin.x+xx,master.origin.y+yy,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,miny,DTA_ClipBottom,maxy); + Vector2 imgofs = TexMan.GetScaledOffset(img); + if ( (yy+imgsz.y-imgofs.y >= 17) && (yy-imgofs.y < master.ws.y) ) + Screen.DrawTexture(img,false,master.origin.x+xx,master.origin.y+yy,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } for ( int i=0; i= master.ws.y-19 ) continue; - Screen.DrawText(smallfont,Font.CR_WHITE,master.origin.x+xx,master.origin.y+yy,l.StringAt(i),DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,dark?Color(96,0,0,0):Color(0,0,0,0),DTA_ClipTop,miny,DTA_ClipBottom,maxy); + Screen.DrawText(master.mSmallFont,Font.CR_WHITE,master.origin.x+xx,master.origin.y+yy,l.StringAt(i),DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,dark?Color(96,0,0,0):Color(0,0,0,0)); } + Screen.ClearClipRect(); if ( !scrollbar ) return; xx = x+(w-8); master.DrawVSeparator(xx,14,master.ws.y-28); xx += 2; - yy = floor(smofs*((master.ws.y-39)/maxofs))+14; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▮",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + yy = floor(ssmofs*((master.ws.y-39)/maxofs))+14; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▮",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } diff --git a/zscript/kbase/swwm_kbasetab_chat.zsc b/zscript/kbase/swwm_kbasetab_chat.zsc deleted file mode 100644 index a34b7a4bf..000000000 --- a/zscript/kbase/swwm_kbasetab_chat.zsc +++ /dev/null @@ -1,223 +0,0 @@ -// all them messages - -Class DemolitionistChatTab : DemolitionistMenuTab -{ - DemolitionistMenuList msglist; - int ofs, maxofs; - double smofs; - bool drag; - SWWMFullHistory hist; - - override DemolitionistMenuTab Init( DemolitionistMenu master ) - { - title = StringTable.Localize("$SWWM_CHATTAB"); - hist = SWWMFullHistory.Get(); - return Super.Init(master); - } - - override void OnDestroy() - { - Super.OnDestroy(); - if ( msglist ) msglist.Destroy(); - } - - override void OnSelect() - { - smofs = ofs; - } - override void OnDeselect() - { - smofs = ofs; - } - - override void Ticker() - { - if ( !hist ) return; - int ypos = 0; - bool recenter = true; - if ( !msglist ) - { - msglist = new("DemolitionistMenuList"); - msglist.master = master; - msglist.selected = -1; - msglist.items.Resize(hist.msg.Size()); - for ( int i=0; i (master.ws.x-8) ) - { - SetOffset(pos.y); - master.MenuSound("menu/demoscroll"); - drag = true; - } - break; - case MB_WHEELUP: - if ( Scroll(-8) ) master.MenuSound("menu/demoscroll"); - break; - case MB_WHEELDOWN: - if ( Scroll(8) ) master.MenuSound("menu/demoscroll"); - break; - case MB_DRAG: - if ( drag ) SetOffset(pos.y); - break; - case MB_RELEASE: - drag = false; - break; - } - } - override void Drawer() - { - if ( !hist || (msglist.items.Size() <= 0) ) - { - String str = StringTable.Localize("$SWWM_NOCHAT"); - double xx = int(master.ws.x-smallfont.StringWidth(str))/2; - double yy = int(master.ws.y-smallfont.GetHeight())/2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); - return; - } - double xx = 3; - double yy = 23; - int cliptop = int((master.origin.y+23)*master.hs); - int clipbottom = int((master.origin.y+master.ws.y-23)*master.hs); - int clipleft = int((master.origin.x+3)*master.hs); - int clipright = int((master.origin.x+master.ws.x-9)*master.hs); - msglist.Drawer((xx,yy-smofs),cliptop,clipbottom,clipleft,clipright); - if ( maxofs <= 0 ) return; - xx = master.ws.x-8; - master.DrawVSeparator(xx,14,master.ws.y-28); - xx += 2; - yy = floor(smofs*((master.ws.y-39)/maxofs))+14; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▮",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); - } -} - -// chat message item -Class DemolitionistMenuChatItem : DemolitionistMenuListItem -{ - BrokenLines l; - int margin; - String tstamp; - - DemolitionistMenuChatItem Init( DemolitionistMenu master, MsgLine m ) - { - Super.Init(master,""); - if ( m.type == -1 ) - { - // map change marker - label = String.Format("\cx[\c-%s\cx]\c-",m.str); - return self; - } - // actually use crimetime for the timestamps, for immersion - int rtime = (m.tic/GameTicRate)+(master.c_minute*60)+(master.c_hour*3600); - int thour = (rtime/3600)%24; - int tmin = (rtime/60)%60; - int tsec = rtime%60; - tstamp = String.Format("\cm[\c-%02d\cm:\c-%02d\cm:\c-%02d\cm]\c- ",thour,tmin,tsec); - margin = smallfont.StringWidth(tstamp); - l = smallfont.BreakLines(m.str,int(master.ws.x-14)-margin); - return self; - } - - override void OnDestroy() - { - Super.OnDestroy(); - if ( l ) l.Destroy(); - } - - override int GetWidth() - { - return int(master.ws.x-14); - } - - override int GetHeight() - { - if ( l ) return l.Count()*14; - return 14; - } - - override void Drawer( Vector2 pos, bool selected, int cliptop, int clipbottom, int clipleft, int clipright ) - { - if ( !l ) - { - // we'll assume this is a level change label - double xx = int((master.ws.x-14)-smallfont.StringWidth(label))/2; - Screen.DrawText(smallfont,Font.CR_GOLD,master.origin.x+pos.x+xx,master.origin.y+pos.y,label,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - return; - } - Screen.DrawText(smallfont,Font.CR_DARKGRAY,master.origin.x+pos.x,master.origin.y+pos.y,tstamp,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - for ( int i=0; i usesa, usesb; - for ( int i=0; i)(AllActorClasses[i]); + let w = (Class)(cls); if ( !w ) continue; let def = GetDefaultByType(w); if ( w is 'SWWMWeapon' ) @@ -67,11 +67,9 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab } if ( usesa && usesb ) { - bool dummy; - int slota, slotb; - [dummy, slota] = players[consoleplayer].weapons.LocateWeapon(usesa); + let [dummya, slota] = players[consoleplayer].weapons.LocateWeapon(usesa); if ( slota == 0 ) slota = 10; - [dummy, slotb] = players[consoleplayer].weapons.LocateWeapon(usesb); + let [dummyb, slotb] = players[consoleplayer].weapons.LocateWeapon(usesb); if ( slotb == 0 ) slotb = 10; if ( slota == slotb ) { @@ -95,9 +93,9 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab pamoa = MagAmmo(a).ParentAmmo; pamob = MagAmmo(b).ParentAmmo; Class usesa, usesb; - for ( int i=0; i)(AllActorClasses[i]); + let w = (Class)(cls); if ( !w ) continue; let def = GetDefaultByType(w); if ( w is 'SWWMWeapon' ) @@ -119,11 +117,9 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab } if ( usesa && usesb ) { - bool dummy; - int slota, slotb; - [dummy, slota] = players[consoleplayer].weapons.LocateWeapon(usesa); + let [dummya, slota] = players[consoleplayer].weapons.LocateWeapon(usesa); if ( slota == 0 ) slota = 10; - [dummy, slotb] = players[consoleplayer].weapons.LocateWeapon(usesb); + let [dummyb, slotb] = players[consoleplayer].weapons.LocateWeapon(usesb); if ( slotb == 0 ) slotb = 10; if ( slota == slotb ) { @@ -212,6 +208,20 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab return false; } + // notified that this item has already been used up, so remove it from the list + void UsedUp( Class itm ) + { + for ( int i=0; i i ) invlist.selected = max(0,invlist.selected-1); + i--; + } + } + override void Ticker() { bool mustsort = false; @@ -221,7 +231,7 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab mustsort = true; skipsel = true; // initialize - invlist = new("DemolitionistMenuList"); + invlist = new('DemolitionistMenuList'); invlist.master = master; invlist.selected = 0; for ( Inventory i=players[consoleplayer].mo.inv; i; i=i.inv ) @@ -235,11 +245,11 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab String tag2 = DemolitionistMenuInvItem(invlist.items[j]).inv.GetTag(); if ( tag > tag2 ) continue; greater = true; - invlist.items.Insert(j,new("DemolitionistMenuInvItem").Init(master,i)); + invlist.items.Insert(j,new('DemolitionistMenuInvItem').Init(master,i)); break; } if ( greater ) continue; - invlist.items.Push(new("DemolitionistMenuInvItem").Init(master,i)); + invlist.items.Push(new('DemolitionistMenuInvItem').Init(master,i)); } } else @@ -254,32 +264,32 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab i--; } // check if new entries must be added - for ( Inventory i=players[consoleplayer].mo.inv; i; i=i.inv ) + for ( Inventory inv=players[consoleplayer].mo.inv; inv; inv=inv.inv ) { - if ( FilterInventory(i) ) continue; + if ( FilterInventory(inv) ) continue; // skip if it's already there bool skipme = false; - for ( int j=0; j tag2 ) continue; greater = true; - invlist.items.Insert(j,new("DemolitionistMenuInvItem").Init(master,i)); + invlist.items.Insert(j,new('DemolitionistMenuInvItem').Init(master,inv)); mustsort = true; break; } if ( greater ) continue; - invlist.items.Push(new("DemolitionistMenuInvItem").Init(master,i)); + invlist.items.Push(new('DemolitionistMenuInvItem').Init(master,inv)); mustsort = true; } } @@ -299,15 +309,15 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab int maxw = invlist.GetWidth(); int xx = 0; int yy = 0; - for ( int i=0; i= (master.ws.y-48) ) + if ( yy > (master.ws.y-62) ) { - xx += maxw; + xx += maxw+16; // pad yy = 0; } } @@ -404,9 +414,11 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab // see if we're clicking the scrollbar (if it exists) if ( pos.y > (master.ws.y-21) ) { - SetOffset(pos.x); - master.MenuSound("menu/demoscroll"); - drag = true; + if ( SetOffset(pos.x) ) + { + master.MenuSound("menu/demoscroll"); + drag = true; + } break; } // find which element we clicked @@ -449,29 +461,121 @@ Class DemolitionistInventoryTab : DemolitionistMenuTab } } - override void Drawer() + override void Drawer( double fractic ) { if ( !invlist || (invlist.items.Size() <= 0) ) { String str = StringTable.Localize("$SWWM_NOINV"); - double xx = int(master.ws.x-smallfont.StringWidth(str))/2; - double yy = int(master.ws.y-smallfont.GetHeight())/2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + double xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2; + double yy = int(master.ws.y-master.mSmallFont.GetHeight())/2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); return; } + double ssmofs = (smofs~==ofs)?smofs:(smofs*(1.-fractic)+((smofs*.6)+(ofs*.4))*fractic); double xx = 9; double yy = 23; - int cliptop = int((master.origin.y+23)*master.hs); - int clipbottom = int((master.origin.y+master.ws.y-23)*master.hs); - int clipleft = int((master.origin.x+9)*master.hs); - int clipright = int((master.origin.x+master.ws.x-9)*master.hs); - invlist.Drawer((xx-smofs,yy),cliptop,clipbottom,clipleft,clipright); + Screen.SetClipRect(int((master.origin.x+9)*master.hs),int((master.origin.y+23)*master.hs),int((master.ws.x-18)*master.hs),int((master.ws.y-46)*master.hs)); + invlist.Drawer((xx-ssmofs,yy)); + Screen.ClearClipRect(); if ( maxofs <= 0 ) return; yy = master.ws.y-21; master.DrawHSeparator(0,yy,master.ws.x); yy -= 4; - xx = floor(smofs*((master.ws.x-10)/maxofs))+2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▬",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + xx = floor(ssmofs*((master.ws.x-10)/maxofs))+2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▬",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + } +} + +// item use/drop transaction handling +Class MenuTransaction +{ + enum ETransactionType + { + TT_ITEMUSE, + TT_ITEMDROP + }; + int uid, type; + Class used; + bool skipresult; +} + +extend Class DemolitionistMenu +{ + Array checklist; + int lasttuid; + + void ItemUsed( int uid, bool result, bool usedup ) + { + for ( int i=0; i)(checklist[i].used); + if ( w ) + { + // play if actually switching + if ( result ) + { + String snd = GetDefaultByType(w).UpSound; + MenuSound(snd); + } + } + else if ( (checklist[i].used is 'SWWMCollectible') || (checklist[i].used is 'Key') ) + MenuSound("demolitionist/handsup"); + else + { + String snd = GetDefaultByType(checklist[i].used).UseSound; + MenuSound(snd); + } + } + } + else + { + tmsg = StringTable.Localize("$SWWM_INVFAIL"); + tmsgtic = MenuTime()+70; + MenuSound("menu/noinvuse"); + } + if ( usedup ) + { + int j = FindTabType('DemolitionistInventoryTab'); + if ( j != -1 ) DemolitionistInventoryTab(tabs[j]).UsedUp(checklist[i].used); + } + checklist.Delete(i); + i--; + } + } + + void ItemDropped( int uid, bool result, bool usedup ) + { + for ( int i=0; i 0) || Weapon(inv).bAMMO_OPTIONAL) || (Weapon(inv).Ammo2 && ((Weapon(inv).Ammo2.Amount > 0) || Weapon(inv).bALT_AMMO_OPTIONAL))))) ) + { + master.MenuSound("menu/noinvuse"); + master.tmsg = StringTable.Localize("$SWWM_INVNAMMO"); + master.tmsgtic = Menu.MenuTime()+70; + return; + } + let t = new('MenuTransaction'); t.uid = master.GenTUID(); t.type = MenuTransaction.TT_ITEMUSE; - t.result = false; + t.used = inv.GetClass(); // don't check weapons, keys or collectibles, always assume check succeeded - if ( (inv is 'Weapon') || (inv is 'Key') || (inv is 'SWWMCollectible') ) t.result = true; + t.skipresult = ((inv is 'Weapon') || (inv is 'Key') || (inv is 'SWWMCollectible')); master.checklist.Push(t); - EventHandler.SendNetworkEvent(String.Format("swwmuseitem.%s",inv.GetClassName()),consoleplayer,t.uid); + EventHandler.SendNetworkCommand("swwmuseitem",NET_INT,t.uid,NET_INT,consoleplayer,NET_INT,inv.GetNetworkID()); } void DropItem() { if ( !inv || (inv is 'Key') || (inv is 'SWWMCollectible') ) return; - let t = new("MenuTransaction"); + let t = new('MenuTransaction'); t.uid = master.GenTUID(); t.type = MenuTransaction.TT_ITEMDROP; - t.result = false; + t.skipresult = false; master.checklist.Push(t); - EventHandler.SendNetworkEvent(String.Format("swwmdropitem.%s",inv.GetClassName()),consoleplayer,t.uid); + EventHandler.SendNetworkCommand("swwmdropitem",NET_INT,t.uid,NET_INT,consoleplayer,NET_INT,inv.GetNetworkID()); } } diff --git a/zscript/kbase/swwm_kbasetab_keychain.zsc b/zscript/kbase/swwm_kbasetab_keychain.zsc index 5c851a1c2..09e8ef13a 100644 --- a/zscript/kbase/swwm_kbasetab_keychain.zsc +++ b/zscript/kbase/swwm_kbasetab_keychain.zsc @@ -105,14 +105,14 @@ Class DemolitionistKeychainTab : DemolitionistMenuTab mustsort = true; skipsel = true; // initialize - invlist = new("DemolitionistMenuList"); + invlist = new('DemolitionistMenuList'); invlist.master = master; invlist.selected = 0; int j = 0; for ( Inventory i=players[consoleplayer].mo.inv; i; i=i.inv ) { if ( FilterInventory(i) ) continue; - invlist.items.Push(new("DemolitionistMenuInvItem").Init(master,i)); + invlist.items.Push(new('DemolitionistMenuInvItem').Init(master,i)); } } else @@ -139,7 +139,7 @@ Class DemolitionistKeychainTab : DemolitionistMenuTab break; } if ( skipme ) continue; - invlist.items.Push(new("DemolitionistMenuInvItem").Init(master,i)); + invlist.items.Push(new('DemolitionistMenuInvItem').Init(master,i)); mustsort = true; } } @@ -165,9 +165,9 @@ Class DemolitionistKeychainTab : DemolitionistMenuTab invlist.items[i].xpos = xx; invlist.items[i].ypos = yy; yy += 16; - if ( yy >= (master.ws.y-48) ) + if ( yy > (master.ws.y-62) ) { - xx += maxw; + xx += maxw+16; // pad yy = 0; } } @@ -260,9 +260,11 @@ Class DemolitionistKeychainTab : DemolitionistMenuTab // see if we're clicking the scrollbar (if it exists) if ( pos.y > (master.ws.y-21) ) { - SetOffset(pos.x); - master.MenuSound("menu/demoscroll"); - drag = true; + if ( SetOffset(pos.x) ) + { + master.MenuSound("menu/demoscroll"); + drag = true; + } break; } // find which element we clicked @@ -292,28 +294,27 @@ Class DemolitionistKeychainTab : DemolitionistMenuTab } } - override void Drawer() + override void Drawer( double fractic ) { if ( !invlist || (invlist.items.Size() <= 0) ) { String str = StringTable.Localize("$SWWM_NOKEYS"); - double xx = int(master.ws.x-smallfont.StringWidth(str))/2; - double yy = int(master.ws.y-smallfont.GetHeight())/2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + double xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2; + double yy = int(master.ws.y-master.mSmallFont.GetHeight())/2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); return; } + double ssmofs = (smofs~==ofs)?smofs:(smofs*(1.-fractic)+((smofs*.6)+(ofs*.4))*fractic); double xx = 9; double yy = 23; - int cliptop = int((master.origin.y+23)*master.hs); - int clipbottom = int((master.origin.y+master.ws.y-23)*master.hs); - int clipleft = int((master.origin.x+9)*master.hs); - int clipright = int((master.origin.x+master.ws.x-9)*master.hs); - invlist.Drawer((xx-smofs,yy),cliptop,clipbottom,clipleft,clipright); + Screen.SetClipRect(int((master.origin.x+9)*master.hs),int((master.origin.y+23)*master.hs),int((master.ws.x-18)*master.hs),int((master.ws.y-46)*master.hs)); + invlist.Drawer((xx-ssmofs,yy)); + Screen.ClearClipRect(); if ( maxofs <= 0 ) return; yy = master.ws.y-21; master.DrawHSeparator(0,yy,master.ws.x); yy -= 4; - xx = floor(smofs*((master.ws.x-10)/maxofs))+2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▬",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + xx = floor(ssmofs*((master.ws.x-10)/maxofs))+2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▬",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } diff --git a/zscript/kbase/swwm_kbasetab_library.zsc b/zscript/kbase/swwm_kbasetab_library.zsc index 0d88378fb..9f8fc1f22 100644 --- a/zscript/kbase/swwm_kbasetab_library.zsc +++ b/zscript/kbase/swwm_kbasetab_library.zsc @@ -52,17 +52,16 @@ Class DemolitionistLibraryTab : DemolitionistMenuTab for ( int i=0; i<4; i++ ) { sname[i] = StringTable.Localize("$SWWM_LORETAB"..i); - lwidth = max(lwidth,smallfont.StringWidth("<‼ "..sname[i].." ‼>")+6); - lists[i] = new("DemolitionistMenuList"); + lwidth = max(lwidth,master.mSmallFont.StringWidth("<‼ "..sname[i].." ‼>")+6); + lists[i] = new('DemolitionistMenuList'); lists[i].master = master; } loresz = lore.ent.Size(); - for ( int i=0; i0)?8:0)); } @@ -236,7 +235,7 @@ Class DemolitionistLibraryTab : DemolitionistMenuTab active = DemolitionistMenuLoreItem(lists[section].items[sel[section]]); active.bActive = true; clore = active.ent; - if ( !ltext ) ltext = new("DemolitionistMenuTextBox").Init(master,StringTable.Localize(clore.text),lwidth+((maxofs[section]>0)?8:0)); + if ( !ltext ) ltext = new('DemolitionistMenuTextBox').Init(master,StringTable.Localize(clore.text),lwidth+((maxofs[section]>0)?8:0)); else ltext.Reinit(StringTable.Localize(clore.text),lwidth+((maxofs[section]>0)?8:0)); ltext.img = clore.img; master.MenuSound("menu/demosel"); @@ -262,6 +261,9 @@ Class DemolitionistLibraryTab : DemolitionistMenuTab case MB_RELEASE: drag[0] = drag[1] = false; break; + case MB_RIGHT: + MenuInput(MK_BACK); + break; } // mouse on left side if ( pos.x < (lwidth+((maxofs[section]>0)?8:0)) ) @@ -302,32 +304,18 @@ Class DemolitionistLibraryTab : DemolitionistMenuTab continue; sel[section] = lists[section].selected = i; KBScroll(); - if ( active && (lists[section].items[i] == active) ) - MenuInput(MK_BACK); - else - { - if ( active ) active.bActive = false; - clore = null; - MenuInput(MK_ENTER); - } + if ( active && (lists[section].items[i] == active) && (clore == active.ent) ) + break; + clore = null; + MenuInput(MK_ENTER); break; } break; case MB_WHEELUP: - if ( sel[section] > 0 ) - { - lists[section].selected = --sel[section]; - master.MenuSound("menu/demoscroll"); - KBScroll(); - } + if ( Scroll(-8) ) master.MenuSound("menu/demoscroll"); break; case MB_WHEELDOWN: - if ( sel[section] < lists[section].items.Size()-1 ) - { - lists[section].selected = ++sel[section]; - master.MenuSound("menu/demoscroll"); - KBScroll(); - } + if ( Scroll(8) ) master.MenuSound("menu/demoscroll"); break; } return; @@ -352,14 +340,14 @@ Class DemolitionistLibraryTab : DemolitionistMenuTab break; } } - override void Drawer() + override void Drawer( double fractic ) { double xx = 0; double yy = 15; String str = sname[section]; master.DrawVSeparator(lwidth,14,master.ws.y-28); master.DrawHSeparator(0,28,lwidth); - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+(lwidth-smallfont.StringWidth(str))/2,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+(lwidth-master.mSmallFont.StringWidth(str))/2,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); bool hasprev = false; bool hasunreadprev = false; for ( int i=0; i",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawText(master.mSmallFont,Font.CR_WHITE,master.origin.x+lwidth-9,master.origin.y+yy,">",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); if ( hasunreadnext ) - Screen.DrawText(smallfont,Font.CR_GOLD,master.origin.x+lwidth-15,master.origin.y+yy,"‼",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawText(master.mSmallFont,Font.CR_GOLD,master.origin.x+lwidth-15,master.origin.y+yy,"‼",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); xx = 3; yy = 32; - int cliptop = int((master.origin.y+32)*master.hs); - int clipbottom = int((master.origin.y+master.ws.y-18)*master.hs); - int clipleft = int((master.origin.x+3)*master.hs); - int clipright = int((master.origin.x+lwidth-3)*master.hs); - lists[section].Drawer((xx,yy-smofs[section]),cliptop,clipbottom,clipleft,clipright); + double ssmofs = (smofs[section]~==ofs[section])?smofs[section]:(smofs[section]*(1.-fractic)+((smofs[section]*.6)+(ofs[section]*.4))*fractic); + Screen.SetClipRect(int((master.origin.x+3)*master.hs),int((master.origin.y+32)*master.hs),int((lwidth-6)*master.hs),int((master.ws.y-50)*master.hs)); + lists[section].Drawer((xx,yy-ssmofs)); + Screen.ClearClipRect(); if ( maxofs[section] > 0 ) { xx = lwidth; master.DrawVSeparator(xx+8,14,master.ws.y-28); xx += 2; - yy = floor(smofs[section]*((master.ws.y-39)/maxofs[section]))+14; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▮",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + yy = floor(ssmofs*((master.ws.y-39)/maxofs[section]))+14; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▮",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } - if ( clore && ltext ) ltext.Drawer(); + if ( clore && ltext ) ltext.Drawer(fractic); else { str = StringTable.Localize("$SWWM_LOREUNSEL"); int lwx = lwidth+((maxofs[section]>0)?8:0); - xx = lwx+int((master.ws.x-lwx)-smallfont.StringWidth(str))/2; - yy = int(master.ws.y-smallfont.GetHeight())/2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + xx = lwx+int((master.ws.x-lwx)-master.mSmallFont.StringWidth(str))/2; + yy = int(master.ws.y-master.mSmallFont.GetHeight())/2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } } @@ -439,8 +426,8 @@ Class DemolitionistMenuLoreItem : DemolitionistMenuListItem override int GetWidth() { - if ( !ent.read ) return smallfont.StringWidth("‼"..label); - return smallfont.StringWidth(label); + if ( !ent.read ) return master.mSmallFont.StringWidth("‼"..label); + return master.mSmallFont.StringWidth(label); } // marks this entry as read @@ -450,10 +437,10 @@ Class DemolitionistMenuLoreItem : DemolitionistMenuListItem EventHandler.SendNetworkEvent(String.Format("swwmmarkloreread.%s",ent.tag),consoleplayer); } - override void Drawer( Vector2 pos, bool selected, int cliptop, int clipbottom, int clipleft, int clipright ) + override void Drawer( Vector2 pos, bool selected ) { String str = label; if ( !ent.read ) str = "\cf‼\c-"..label; - Screen.DrawText(smallfont,bActive?Font.CR_FIRE:Font.CR_WHITE,master.origin.x+pos.x,master.origin.y+pos.y,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright,DTA_ColorOverlay,selected?Color(0,0,0,0):Color(96,0,0,0)); + Screen.DrawText(master.mSmallFont,bActive?Font.CR_FIRE:Font.CR_WHITE,master.origin.x+pos.x,master.origin.y+pos.y,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,selected?Color(0,0,0,0):Color(96,0,0,0)); } } diff --git a/zscript/kbase/swwm_kbasetab_mission.zsc b/zscript/kbase/swwm_kbasetab_mission.zsc index 982cf3683..5ffbcc7d2 100644 --- a/zscript/kbase/swwm_kbasetab_mission.zsc +++ b/zscript/kbase/swwm_kbasetab_mission.zsc @@ -18,12 +18,14 @@ Class DemolitionistMissionTab : DemolitionistMenuTab if ( mlog ) { for ( int i=(mlog.entries.Size()-1); i>=0; i-- ) - mtext.Push(new("DemolitionistMenuTextBox").Init(master,mlog.entries[i])); + mtext.Push(new('DemolitionistMenuTextBox').Init(master,mlog.entries[i])); return Super.Init(master); } // saves time bool nrftl = false; + bool lor = false; bool eviternity = false; + bool eviternitwo = false; bool hexdd = false; String missionstr; let stats = SWWMStats.Find(players[consoleplayer]); @@ -31,8 +33,22 @@ Class DemolitionistMissionTab : DemolitionistMenuTab { int clus = level.cluster; if ( clus == 11 ) nrftl = true; + lor = SWWMUtility.IsLegacyOfRust(); eviternity = SWWMUtility.IsEviternity(); - if ( eviternity ) + eviternitwo = SWWMUtility.IsEviternityTwo(); + if ( eviternitwo ) + { + // clusters in eviternity 2 have to be remapped + if ( clus == 5 ) clus = 1; + else if ( (clus == 6) || (clus == 13) ) clus = 2; + else if ( (clus == 7) || (clus == 14) ) clus = 3; + else if ( (clus == 8) || (clus == 15) ) clus = 4; + else if ( (clus == 9) || (clus == 16) ) clus = 5; + else if ( (clus == 10) || (clus == 17) ) clus = 6; + else if ( (clus == 11) || (clus == 12) || (clus == 18) || (clus == 19) ) clus = 7; + missionstr = String.Format("$SWWM_MISSION_EVITERNITYII%d",clus); + } + else if ( eviternity ) { // we have to do some heavy lifting here because episodes don't match clusters if ( level.levelnum <= 5 ) clus = 1; @@ -45,9 +61,19 @@ Class DemolitionistMissionTab : DemolitionistMenuTab else if ( level.levelnum <= 32 ) clus = 8; missionstr = String.Format("$SWWM_MISSION_EVITERNITY%d",clus); } + else if ( lor ) + { + // legacy of rust has its quirks, as with umapinfo there are + // technically no clusters + if ( (level.levelnum <= 7) || (level.levelnum == 15) ) clus = 28; + else if ( (level.levelnum <= 14) || (level.levelnum == 16) ) clus = 29; + missionstr = String.Format("$SWWM_MISSION_DOOM%d",clus); + } // naive method to guess if this is sigil else if ( (clus == 5) && (level.mapname.Left(2) == "E5") ) missionstr = String.Format("$SWWM_MISSION_SIGIL"); + else if ( (clus == 6) && (level.mapname.Left(2) == "E6") ) + missionstr = String.Format("$SWWM_MISSION_SIGIL2"); else missionstr = String.Format("$SWWM_MISSION_DOOM%d",clus); int csiz = stats.clustervisit.Size(); if ( (csiz > 0) && stats.secretdone[csiz-1] ) @@ -61,23 +87,23 @@ Class DemolitionistMissionTab : DemolitionistMenuTab for ( int i=0; i= 5) && (stats.clustervisit[i] != 25) ) continue; + if ( !eviternity && !eviternitwo && (stats.clustervisit[i] >= 5) && (stats.clustervisit[i] != 25) && (stats.clustervisit[i] != 26) ) continue; fromdoomone = true; break; } - if ( !eviternity && (clus == 5) && fromdoomone ) + if ( !eviternity && !eviternitwo && (clus == 5) && fromdoomone ) missionstr = "$SWWM_MISSION_DOOM5_FROMDOOM1"; if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) ) missionstr = "$SWWM_MISSION_NONE"; - mtext.Push(new("DemolitionistMenuTextBox").Init(master,missionstr)); + mtext.Push(new('DemolitionistMenuTextBox').Init(master,missionstr)); bool firstskip = false; for ( int i=csiz-1; i>=0; i-- ) { if ( (stats.clustervisit[i] == clus) && !firstskip ) continue; firstskip = true; - String xstr = String.Format(eviternity?"$SWWM_MISSION_EVITERNITY%d":"$SWWM_MISSION_DOOM%d",stats.clustervisit[i]); - if ( !eviternity && (stats.clustervisit[i] == 5) && fromdoomone ) + String xstr = String.Format(eviternitwo?"$SWWM_MISSION_EVITERNITYII%d":eviternity?"$SWWM_MISSION_EVITERNITY%d":"$SWWM_MISSION_DOOM%d",stats.clustervisit[i]); + if ( !eviternity && !eviternitwo && (stats.clustervisit[i] == 5) && fromdoomone ) xstr = "$SWWM_MISSION_DOOM5_FROMDOOM1"; if ( stats.secretdone[i] ) { @@ -87,7 +113,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab } if ( StringTable.Localize(xstr) ~== xstr.Mid(1) ) continue; - mtext.Push(new("DemolitionistMenuTextBox").Init(master,xstr)); + mtext.Push(new('DemolitionistMenuTextBox').Init(master,xstr)); } } else if ( (gameinfo.gametype&GAME_Heretic) && SWWMUtility.IsKnownMap() ) @@ -95,7 +121,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab missionstr = String.Format("$SWWM_MISSION_HERETIC%d",level.cluster); if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) ) missionstr = "$SWWM_MISSION_NONE"; - mtext.Push(new("DemolitionistMenuTextBox").Init(master,missionstr)); + mtext.Push(new('DemolitionistMenuTextBox').Init(master,missionstr)); int csiz = stats.clustervisit.Size(); bool firstskip = false; for ( int i=csiz-1; i>=0; i-- ) @@ -106,7 +132,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab String xstr = String.Format("$SWWM_MISSION_HERETIC%d",stats.clustervisit[i]); if ( StringTable.Localize(xstr) ~== xstr.Mid(1) ) continue; - mtext.Push(new("DemolitionistMenuTextBox").Init(master,xstr)); + mtext.Push(new('DemolitionistMenuTextBox').Init(master,xstr)); } } else if ( (gameinfo.gametype&GAME_Hexen) && SWWMUtility.IsKnownMap() ) @@ -117,7 +143,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab missionstr = String.Format("$SWWM_MISSION_%s%d",gstr,level.cluster); if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) ) missionstr = "$SWWM_MISSION_NONE"; - mtext.Push(new("DemolitionistMenuTextBox").Init(master,missionstr)); + mtext.Push(new('DemolitionistMenuTextBox').Init(master,missionstr)); int csiz = stats.clustervisit.Size(); bool firstskip = false; for ( int i=csiz-1; i>=0; i-- ) @@ -128,17 +154,17 @@ Class DemolitionistMissionTab : DemolitionistMenuTab String xstr = String.Format("$SWWM_MISSION_%s%d",gstr,stats.clustervisit[i]); if ( StringTable.Localize(xstr) ~== xstr.Mid(1) ) continue; - mtext.Push(new("DemolitionistMenuTextBox").Init(master,xstr)); + mtext.Push(new('DemolitionistMenuTextBox').Init(master,xstr)); } } return Super.Init(master); } override void OnDestroy() { - for ( int i=0; i 1 ) + if ( (mtext.Size() > 1) && (sel < (mtext.Size()-1)) ) { master.MenuSound("menu/demoscroll"); - sel--; - if ( sel < 0 ) sel = mtext.Size()-1; - mtext[sel].smofs = mtext[sel].ofs = 0; + sel++; + mtext[sel].smofs = 0.; + mtext[sel].ofs = 0; drag = false; // just in case } break; case MK_RIGHT: // cycle mission texts - if ( mtext.Size() > 1 ) + if ( (mtext.Size() > 1) && (sel > 0) ) { master.MenuSound("menu/demoscroll"); - sel++; - if ( sel >= mtext.Size() ) sel = 0; - mtext[sel].smofs = mtext[sel].ofs = 0; + sel--; + mtext[sel].smofs = 0.; + mtext[sel].ofs = 0; drag = false; // just in case } break; @@ -193,23 +219,23 @@ Class DemolitionistMissionTab : DemolitionistMenuTab break; } // cycle mission texts - if ( mtext.Size() > 1 ) + if ( (mtext.Size() > 1) && (sel > 0) ) { master.MenuSound("menu/demoscroll"); sel--; - if ( sel < 0 ) sel = mtext.Size()-1; - mtext[sel].smofs = mtext[sel].ofs; + mtext[sel].smofs = 0.; + mtext[sel].ofs = 0; drag = false; // just in case } break; case MB_RIGHT: // cycle mission texts - if ( mtext.Size() > 1 ) + if ( (mtext.Size() > 1) && (sel < (mtext.Size()-1)) ) { master.MenuSound("menu/demoscroll"); sel++; - if ( sel >= mtext.Size() ) sel = 0; - mtext[sel].smofs = mtext[sel].ofs; + mtext[sel].smofs = 0.; + mtext[sel].ofs = 0; drag = false; // just in case } break; @@ -249,13 +275,13 @@ Class DemolitionistMissionTab : DemolitionistMenuTab if ( mtext.Size() == 0 ) { for ( int i=(mlog.entries.Size()-1); i>=0; i-- ) - mtext.Push(new("DemolitionistMenuTextBox").Init(master,mlog.entries[i])); + mtext.Push(new('DemolitionistMenuTextBox').Init(master,mlog.entries[i])); sel = 0; newent = true; } else for ( int i=(mlog.entries.Size()-1); i>=mtext.Size(); i-- ) { - mtext.Insert(0,new("DemolitionistMenuTextBox").Init(master,mlog.entries[i])); + mtext.Insert(0,new('DemolitionistMenuTextBox').Init(master,mlog.entries[i])); sel++; newent = true; } @@ -263,7 +289,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab if ( newent ) { master.tmsg = StringTable.Localize("$SWWM_NEWMISSION"); - master.tmsgtic = gametic+70; + master.tmsgtic = Menu.MenuTime()+70; } } // just tick the current textbox @@ -271,22 +297,22 @@ Class DemolitionistMissionTab : DemolitionistMenuTab mtext[sel].Ticker(); } - override void Drawer() + override void Drawer( double fractic ) { - if ( mtext.Size() > 0 ) mtext[sel].Drawer(!!sel); + if ( mtext.Size() > 0 ) mtext[sel].Drawer(fractic,!!sel); else { String str = StringTable.Localize("$SWWM_MISSION_NONE"); - double xx = int(master.ws.x-smallfont.StringWidth(str))/2; - double yy = int(master.ws.y-smallfont.GetHeight())/2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + double xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2; + double yy = int(master.ws.y-master.mSmallFont.GetHeight())/2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); return; } if ( mtext.Size() <= 1 ) return; double xx = master.ws.x-(mtext[sel].scrollbar?11:3); double yy = master.ws.y-25; - String str = String.Format("%d \cf/\c- %d",sel+1,mtext.Size()); - Screen.DrawText(smallfont2,Font.CR_FIRE,(master.origin.x+xx)-smallfont2.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + String str = String.Format("%d \cf/\c- %d",mtext.Size()-sel,mtext.Size()); + Screen.DrawText(master.mTinyFont,Font.CR_FIRE,(master.origin.x+xx)-master.mTinyFont.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } diff --git a/zscript/kbase/swwm_kbasetab_secret.zsc b/zscript/kbase/swwm_kbasetab_secret.zsc index a9d98970a..ef25410ef 100644 --- a/zscript/kbase/swwm_kbasetab_secret.zsc +++ b/zscript/kbase/swwm_kbasetab_secret.zsc @@ -15,19 +15,19 @@ Class DemolitionistSecretTab : DemolitionistMenuTab bHidden = true; if ( gameinfo.gametype&GAME_Hexen ) { - img = TexMan.CheckForTexture("graphics/KBase/Drawing_Kirin.png",TexMan.Type_Any); + img = TexMan.CheckForTexture("graphics/KBase/Drawing_Kirin.png"); sub = StringTable.Localize("$SWWM_FROMKIRIN"); String str = StringTable.Localize("$SWWM_KIRINPOEM"); - l = smallfont.BreakLines(str,600); + l = master.mSmallFont.BreakLines(str,600); } - else if ( (gameinfo.gametype&GAME_Heretic) || SWWMUtility.IsEviternity() ) + else if ( gameinfo.gametype&GAME_Heretic ) { - img = TexMan.CheckForTexture("graphics/KBase/Drawing_Ibuki.png",TexMan.Type_Any); + img = TexMan.CheckForTexture("graphics/KBase/Drawing_Ibuki.png"); sub = StringTable.Localize("$SWWM_CUTIECLUB"); } else { - img = TexMan.CheckForTexture("graphics/KBase/Drawing_Saya.png",TexMan.Type_Any); + img = TexMan.CheckForTexture("graphics/KBase/Drawing_Saya.png"); sub = StringTable.Localize("$SWWM_TODEMO"); } maxofs = max(0,320-int(master.ws.y-40)); @@ -120,30 +120,31 @@ Class DemolitionistSecretTab : DemolitionistMenuTab if ( abs(smofs-ofs) < (1./master.hs) ) smofs = ofs; } - override void Drawer() + override void Drawer( double fractic ) { + double ssmofs = (smofs~==ofs)?smofs:(smofs*(1.-fractic)+((smofs*.6)+(ofs*.4))*fractic); double xx = 20; double yy; if ( maxofs <= 0 ) yy = master.ws.y/2-160; - else yy = 20-smofs; - int miny = int((master.origin.y+20)*master.hs); - int maxy = int((master.origin.y+(master.ws.y-20))*master.hs); - Screen.DrawTexture(img,false,master.origin.x+xx,master.origin.y+yy,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,miny,DTA_ClipBottom,maxy); + else yy = 20-ssmofs; + Screen.SetClipRect(int((master.origin.x+20)*master.hs),int((master.origin.y+20)*master.hs),int((master.ws.x-40)*master.hs),int((master.ws.y-40)*master.hs)); + Screen.DrawTexture(img,false,master.origin.x+xx,master.origin.y+yy,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); int mxlen = 0; if ( l ) for ( int i=0; i mxlen ) mxlen = l.StringWidth(i); xx = (i 32000. ) + return String.Format("%g\cu%s\c-",s.grounddist/32000.,StringTable.Localize("$SWWM_UNIT_KILOMETER")); + return String.Format("%g\cu%s\c-",s.grounddist/32.,StringTable.Localize("$SWWM_UNIT_METER")); + } + static ui string stat_flight( SWWMStats s ) + { + if ( s.airdist > 32000. ) + return String.Format("%g\cu%s\c-",s.airdist/32000.,StringTable.Localize("$SWWM_UNIT_KILOMETER")); + return String.Format("%g\cu%s\c-",s.airdist/32.,StringTable.Localize("$SWWM_UNIT_METER")); + } + static ui string stat_swim( SWWMStats s ) + { + if ( s.swimdist > 32000. ) + return String.Format("%g\cu%s\c-",s.swimdist/32000.,StringTable.Localize("$SWWM_UNIT_KILOMETER")); + return String.Format("%g\cu%s\c-",s.swimdist/32.,StringTable.Localize("$SWWM_UNIT_METER")); + } + static ui string stat_tele( SWWMStats s ) + { + if ( s.teledist > 32000. ) + return String.Format("%g\cu%s\c-",s.teledist/32000.,StringTable.Localize("$SWWM_UNIT_KILOMETER")); + return String.Format("%g\cu%s\c-",s.teledist/32.,StringTable.Localize("$SWWM_UNIT_METER")); + } + static ui string stat_boost( SWWMStats s ) + { + return String.Format("%d",s.boostcount); + } + static ui string stat_dash( SWWMStats s ) + { + return String.Format("%d",s.dashcount); + } + static ui string stat_stomp( SWWMStats s ) + { + return String.Format("%d",s.stompcount); + } + static ui string stat_fuel( SWWMStats s ) + { + return String.Format("%g\cu%s\c-",s.fuelusage,StringTable.Localize("$SWWM_UNIT_LITER")); + } + static ui string stat_speed( SWWMStats s ) + { + return String.Format("%g\cu%s\c-",(s.topspeed*3600.*GameTicRate)/32000.,StringTable.Localize("$SWWM_UNIT_KPH")); + } + static ui string stat_airtime( SWWMStats s ) + { + int thour = (s.airtime/(3600*GameTicRate)); + int tmin = (s.airtime/(60*GameTicRate))%60; + int tsec = (s.airtime/GameTicRate)%60; + return String.Format("%02d\cu:\c-%02d\cu:\c-%02d",thour,tmin,tsec); + } + static ui string stat_parry( SWWMStats s ) + { + return String.Format("%d",s.parries); + } + static ui string stat_pparry( SWWMStats s ) + { + return String.Format("%d",s.pparries); + } + static ui string stat_wponch( SWWMStats s ) + { + return String.Format("%d",s.wponch); + } + static ui string stat_busts( SWWMStats s ) + { + return String.Format("%d",s.busts); + } + static ui string stat_butts( SWWMStats s ) + { + return String.Format("%d",s.buttslams); + } + static ui string stat_pats( SWWMStats s ) + { + return String.Format("%d",s.pats); + } + static ui string stat_kiss( SWWMStats s ) + { + return String.Format("%d",s.smooch); + } + static ui string stat_friends( SWWMStats s ) + { + return String.Format("%d",s.befriend); + } + static ui string stat_items( SWWMStats s ) + { + return String.Format("%d",s.items); + } + static ui string stat_secrets( SWWMStats s ) + { + return String.Format("%d",s.secrets); + } + static ui string stat_kills( SWWMStats s ) + { + return String.Format("%d",s.kills); + } + static ui string stat_deaths( SWWMStats s ) + { + return String.Format("%d",s.deaths); + } + static ui string stat_ddealt( SWWMStats s ) + { + if ( s.hdamagedealt > 0 ) + return String.Format("%d%09d",s.hdamagedealt,s.damagedealt); + return String.Format("%d",s.damagedealt); + } + static ui string stat_dtaken( SWWMStats s ) + { + if ( s.hdamagetaken > 0 ) + return String.Format("%d%09d",s.hdamagetaken,s.damagetaken); + return String.Format("%d",s.damagetaken); + } + static ui string stat_tdealt( SWWMStats s ) + { + return String.Format("%d",s.topdealt); + } + static ui string stat_ttaken( SWWMStats s ) + { + return String.Format("%d",s.toptaken); + } + static ui string stat_mkill( SWWMStats s ) + { + return String.Format("%d",s.mkill); + } + static ui string stat_skill( SWWMStats s ) + { + return String.Format("%d",s.skill); + } + static ui string stat_favweap( SWWMStats s ) + { + if ( s.favweapon == -1 ) return "N/A"; + if ( s.wstats[s.favweapon].w == 'SWWMWeapon' ) return StringTable.Localize("$SWWM_YOURSELF"); + if ( s.wstats[s.favweapon].w == 'SWWMGesture' ) return StringTable.Localize("$SWWM_DOKIDOKI"); + if ( s.wstats[s.favweapon].w == 'SWWMItemGesture' ) return StringTable.Localize("$T_FROGGY"); + if ( s.wstats[s.favweapon].w == 'Weapon' ) return StringTable.Localize("$SWWM_GRAVKILL"); + if ( s.wstats[s.favweapon].w == 'DoomWeapon' ) return StringTable.Localize("$SWWM_PARRYKILL"); + let def = GetDefaultByType(s.wstats[s.favweapon].w); + return def.GetTag(); + } + static ui string stat_hiscore( SWWMStats s ) + { + return String.Format("\cu¥\c-%09d",s.hiscore); + } + // END stat functions + override void Ticker() { if ( !stats ) return; @@ -214,103 +377,8 @@ Class DemolitionistStatsTab : DemolitionistMenuTab switch ( section ) { case 0: - if ( lists[0].items.Size() == 0 ) // allocate first - { - for ( int i=0; i<31; i++ ) - { - let li = new("DemolitionistMenuListItem").Init(master,""); - li.ypos = i*16; - lists[0].items.Push(li); - } - } + // not much to do here, they update themselves and are left-aligned maxofs[0] = int(16*lists[0].items.Size()-(master.ws.y-46)); - // oof - int thour = ((level.totaltime-stats.lastspawn)/(3600*GameTicRate)); - int tmin = ((level.totaltime-stats.lastspawn)/(60*GameTicRate))%60; - int tsec = ((level.totaltime-stats.lastspawn)/GameTicRate)%60; - str = String.Format("\cx%s\c-%02d\cu:\c-%02d\cu:\c-%02d",StringTable.Localize("$SWWM_STATUPTIME"),thour,tmin,tsec); - lists[0].items[0].label = str; - if ( stats.grounddist > 32000. ) str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATONFOOT"),stats.grounddist/32000.,StringTable.Localize("$SWWM_UNIT_KILOMETER")); - else str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATONFOOT"),stats.grounddist/32.,StringTable.Localize("$SWWM_UNIT_METER")); - lists[0].items[1].label = str; - if ( stats.airdist > 32000. ) str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATFLIGHT"),stats.airdist/32000.,StringTable.Localize("$SWWM_UNIT_KILOMETER")); - else str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATFLIGHT"),stats.airdist/32.,StringTable.Localize("$SWWM_UNIT_METER")); - lists[0].items[2].label = str; - if ( stats.swimdist > 32000. ) str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATSWIM"),stats.swimdist/32000.,StringTable.Localize("$SWWM_UNIT_KILOMETER")); - else str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATSWIM"),stats.swimdist/32.,StringTable.Localize("$SWWM_UNIT_METER")); - lists[0].items[3].label = str; - if ( stats.teledist > 32000. ) str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATTELE"),stats.teledist/32000.,StringTable.Localize("$SWWM_UNIT_KILOMETER")); - else str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATTELE"),stats.teledist/32.,StringTable.Localize("$SWWM_UNIT_METER")); - lists[0].items[4].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATBOOST"),stats.boostcount); - lists[0].items[5].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATDASH"),stats.dashcount); - lists[0].items[6].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATSTOMP"),stats.stompcount); - lists[0].items[7].label = str; - str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATFUEL"),stats.fuelusage,StringTable.Localize("$SWWM_UNIT_LITER")); - lists[0].items[8].label = str; - str = String.Format("\cx%s\c-%g\cu%s\c-",StringTable.Localize("$SWWM_STATSPEED"),(stats.topspeed*3600.*GameTicRate)/32000.,StringTable.Localize("$SWWM_UNIT_KPH")); - lists[0].items[9].label = str; - thour = (stats.airtime/(3600*GameTicRate)); - tmin = (stats.airtime/(60*GameTicRate))%60; - tsec = (stats.airtime/GameTicRate)%60; - str = String.Format("\cx%s\c-%02d\cu:\c-%02d\cu:\c-%02d",StringTable.Localize("$SWWM_STATAIRTIME"),thour,tmin,tsec); - lists[0].items[10].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATPARRY"),stats.parries); - lists[0].items[11].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATPPARRY"),stats.pparries); - lists[0].items[12].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATWPONCH"),stats.wponch); - lists[0].items[13].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATBUSTS"),stats.busts); - lists[0].items[14].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATBUTTS"),stats.buttslams); - lists[0].items[15].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATPATS"),stats.pats); - lists[0].items[16].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATKISS"),stats.smooch); - lists[0].items[17].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATFRIENDS"),stats.befriend); - lists[0].items[18].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATITEMS"),stats.items); - lists[0].items[19].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATSECRETS"),stats.secrets); - lists[0].items[20].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATKILLS"),stats.kills); - lists[0].items[21].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATDEATHS"),stats.deaths); - lists[0].items[22].label = str; - if ( stats.hdamagedealt > 0 ) str = str = String.Format("\cx%s\c-%d%09d",StringTable.Localize("$SWWM_STATDDEALT"),stats.hdamagedealt,stats.damagedealt); - else str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATDDEALT"),stats.damagedealt); - lists[0].items[23].label = str; - if ( stats.hdamagetaken > 0 ) str = String.Format("\cx%s\c-%d%09d",StringTable.Localize("$SWWM_STATDTAKEN"),stats.hdamagetaken,stats.damagetaken); - else str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATDTAKEN"),stats.damagetaken); - lists[0].items[24].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATTDEALT"),stats.topdealt); - lists[0].items[25].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATTTAKEN"),stats.toptaken); - lists[0].items[26].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATMKILL"),stats.mkill); - lists[0].items[27].label = str; - str = String.Format("\cx%s\c-%d",StringTable.Localize("$SWWM_STATSKILL"),stats.skill); - lists[0].items[28].label = str; - str = String.Format("\cx%s\c-",StringTable.Localize("$SWWM_STATFAVWEAP")); - if ( stats.favweapon == -1 ) str = str.."N/A"; - else if ( stats.wstats[stats.favweapon].w == 'SWWMWeapon' ) str = str..StringTable.Localize("$SWWM_YOURSELF"); - else if ( stats.wstats[stats.favweapon].w == 'SWWMGesture' ) str = str..StringTable.Localize("$SWWM_DOKIDOKI"); - else if ( stats.wstats[stats.favweapon].w == 'SWWMItemGesture' ) str = str..StringTable.Localize("$T_FROGGY"); - else if ( stats.wstats[stats.favweapon].w == 'Weapon' ) str = str..StringTable.Localize("$SWWM_GRAVKILL"); - else if ( stats.wstats[stats.favweapon].w == 'DoomWeapon' ) str = str..StringTable.Localize("$SWWM_PARRYKILL"); - else - { - let def = GetDefaultByType(stats.wstats[stats.favweapon].w); - str = str..def.GetTag(); - } - lists[0].items[29].label = str; - if ( stats.hhiscore > 0 ) str = String.Format("\cx%s\cu¥\c-%d%09d",StringTable.Localize("$SWWM_STATHISCORE"),stats.hhiscore,stats.hiscore); - else str = String.Format("\cx%s\cu¥\c-%09d",StringTable.Localize("$SWWM_STATHISCORE"),stats.hiscore); - lists[0].items[30].label = str; break; case 1: // theoretically we can assume that the monster stats list will never shrink in the middle of gameplay, only grow @@ -321,15 +389,15 @@ Class DemolitionistStatsTab : DemolitionistMenuTab int oldindex = lists[1].items.Size(); lists[1].items.Resize(stats.mstats.Size()); for ( int i=oldindex; i 0 ) w -= 8; - for ( int i=0; i 0 ) w -= 8; @@ -358,49 +418,29 @@ Class DemolitionistStatsTab : DemolitionistMenuTab let l = DemolitionistMenuMapStatItem(lists[2].items[i]); l.width = w; // and calculate "max lengths" - int sec = Thinker.Tics2Seconds(l.s.time); - str = String.Format("T %02d:%02d:%02d",sec/3600,(sec%3600)/60,sec%60); - len[0] = smallfont2.StringWidth(str); - if ( len[0] > maxlen[0] ) maxlen[0] = len[0]; - if ( l.s.stotal > 0 ) - { - str = String.Format("S %d/%d",l.s.scount,l.s.stotal); - len[1] = smallfont2.StringWidth(str); - if ( len[1] > maxlen[1] ) maxlen[1] = len[1]; - } - if ( l.s.itotal > 0 ) - { - str = String.Format("I %d/%d",l.s.icount,l.s.itotal); - len[2] = smallfont2.StringWidth(str); - if ( len[2] > maxlen[2] ) maxlen[2] = len[2]; - } - if ( l.s.ktotal > 0 ) - { - str = String.Format("K %d/%d",l.s.kcount,l.s.ktotal); - len[3] = smallfont2.StringWidth(str); - if ( len[3] > maxlen[3] ) maxlen[3] = len[3]; - } + l.GetLengths(lists[2].selected==i,len[0],len[1],len[2],len[3]); + for ( int j=0; j<4; j++ ) if ( len[j] > maxlen[j] ) maxlen[j] = len[j]; } // second pass to propagate the "max lengths" - for ( int i=0; i 0 ) w -= 8; - for ( int i=0; i 9+master.mSmallFont.StringWidth(sname[i]) ) continue; + if ( pos.y < 23+16*i ) continue; + if ( pos.y > 36+16*i ) continue; + if ( section != i ) { - if ( pos.x < 9 ) continue; - if ( pos.x > 9+smallfont.StringWidth(sname[i]) ) continue; - if ( pos.y < 23+16*i ) continue; - if ( pos.y > 36+16*i ) continue; - if ( section != i ) - { - master.MenuSound("menu/demoscroll"); - smofs[section] = ofs[section]; - section = i; - smofs[section] = ofs[section]; - } - break; + master.MenuSound("menu/demoscroll"); + smofs[section] = ofs[section]; + section = i; + smofs[section] = ofs[section]; } break; - case MB_WHEELUP: - MenuInput(MK_LEFT); - break; - case MB_WHEELDOWN: - MenuInput(MK_RIGHT); - break; } return; } @@ -526,6 +557,7 @@ Class DemolitionistStatsTab : DemolitionistMenuTab drag = true; break; } + break; case MB_WHEELUP: if ( Scroll(-8) ) master.MenuSound("menu/demoscroll"); break; @@ -534,57 +566,87 @@ Class DemolitionistStatsTab : DemolitionistMenuTab break; } } - override void Drawer() + override void Drawer( double fractic ) { if ( !stats ) return; double xx = 9; double yy = 23; for ( int i=0; i<4; i++ ) { - Screen.DrawText(smallfont,(i==section)?Font.CR_FIRE:Font.CR_WHITE,master.origin.x+xx,master.origin.y+yy,sname[i],DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawText(master.mSmallFont,(i==section)?Font.CR_FIRE:Font.CR_WHITE,master.origin.x+xx,master.origin.y+yy,sname[i],DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); yy += 16; } master.DrawVSeparator(lwidth,14,master.ws.y-28); if ( lists[section].items.Size() == 0 ) { String str = StringTable.Localize("$SWWM_NOSTAT"); - xx = lwidth+int((master.ws.x-lwidth)-smallfont.StringWidth(str))/2; - yy = int(master.ws.y-smallfont.GetHeight())/2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + xx = lwidth+int((master.ws.x-lwidth)-master.mSmallFont.StringWidth(str))/2; + yy = int(master.ws.y-master.mSmallFont.GetHeight())/2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); return; } + double ssmofs = (smofs[section]~==ofs[section])?smofs[section]:(smofs[section]*(1.-fractic)+((smofs[section]*.6)+(ofs[section]*.4))*fractic); if ( section == 3 ) { // achievement drawer has different margins xx = lwidth+12; yy = 26; - int cliptop = int((master.origin.y+26)*master.hs); - int clipbottom = int((master.origin.y+master.ws.y-26)*master.hs); - int clipleft = int((master.origin.x+lwidth+12)*master.hs); - int clipright = int((master.origin.x+master.ws.x-12)*master.hs); - lists[section].Drawer((xx,yy-smofs[section]),cliptop,clipbottom,clipleft,clipright); + Screen.SetClipRect(int((master.origin.x+lwidth+12)*master.hs),int((master.origin.y+26)*master.hs),int((master.ws.x-(lwidth+24))*master.hs),int((master.ws.y-52)*master.hs)); + lists[section].Drawer((xx,yy-ssmofs)); } else { xx = lwidth+9; yy = 23; - int cliptop = int((master.origin.y+23)*master.hs); - int clipbottom = int((master.origin.y+master.ws.y-23)*master.hs); - int clipleft = int((master.origin.x+lwidth+9)*master.hs); - int clipright = int((master.origin.x+master.ws.x-9)*master.hs); - lists[section].Drawer((xx,yy-smofs[section]),cliptop,clipbottom,clipleft,clipright); + Screen.SetClipRect(int((master.origin.x+lwidth+9)*master.hs),int((master.origin.y+23)*master.hs),int((master.ws.x-(lwidth+18))*master.hs),int((master.ws.y-46)*master.hs)); + lists[section].Drawer((xx,yy-ssmofs)); } + Screen.ClearClipRect(); if ( maxofs[section] > 0 ) { xx = master.ws.x-8; master.DrawVSeparator(xx,14,master.ws.y-28); xx += 2; - yy = floor(smofs[section]*((master.ws.y-39)/maxofs[section]))+14; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▮",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + yy = floor(ssmofs*((master.ws.y-39)/maxofs[section]))+14; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▮",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } } +// general stat item +Class DemolitionistMenuStatItem : DemolitionistMenuListItem +{ + SWWMStats s; + Function fn; + String txt; + + DemolitionistMenuStatItem Init( DemolitionistMenu master, String label, SWWMStats s, Function fn ) + { + Super.Init(master,label); + self.s = s; + self.fn = fn; + return self; + } + + override int GetWidth() + { + String str = String.Format("%s%s",label,txt); + return master.mSmallFont.StringWidth(str); + } + + override void Ticker() + { + // call update fn + txt = fn.call(s); + } + + override void Drawer( Vector2 pos, bool selected ) + { + String str = String.Format("\cx%s\c-%s",label,txt); + Screen.DrawText(master.mSmallFont,Font.CR_WHITE,master.origin.x+pos.x,master.origin.y+pos.y,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + } +} + // monster kill stat item Class DemolitionistMenuKillItem : DemolitionistMenuListItem { @@ -611,11 +673,11 @@ Class DemolitionistMenuKillItem : DemolitionistMenuListItem return width; } - override void Drawer( Vector2 pos, bool selected, int cliptop, int clipbottom, int clipleft, int clipright ) + override void Drawer( Vector2 pos, bool selected ) { - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+pos.x,master.origin.y+pos.y,label,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+pos.x,master.origin.y+pos.y,label,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); String str = String.Format("%d",s.kills); - Screen.DrawText(smallfont,Font.CR_WHITE,master.origin.x+pos.x+width-smallfont.StringWidth(str),master.origin.y+pos.y,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(master.mSmallFont,Font.CR_WHITE,master.origin.x+pos.x+width-master.mSmallFont.StringWidth(str),master.origin.y+pos.y,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } @@ -631,7 +693,7 @@ Class DemolitionistMenuMapStatItem : DemolitionistMenuListItem Super.Init(master,""); self.s = s; self.width = width; - self.label = s.hub?s.levelname:String.Format("%s - %s",s.mapname.MakeUpper(),s.levelname); + self.label = s.levelname; return self; } @@ -640,38 +702,135 @@ Class DemolitionistMenuMapStatItem : DemolitionistMenuListItem return width; } - override void Drawer( Vector2 pos, bool selected, int cliptop, int clipbottom, int clipleft, int clipright ) + void GetLengths( bool selected, int &tlen, int &slen, int &ilen, int &klen ) { - String str = label; - if ( selected ) str = "\cd▸\c- "..str; - bool smallname = smallfont.StringWidth(str)>(width-(maxlen[3]+maxlen[2]+maxlen[1]+maxlen[0]+24)); - Screen.DrawText(smallname?smallfont2:smallfont,Font.CR_FIRE,master.origin.x+pos.x,master.origin.y+pos.y+smallname*2,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - double xx = pos.x+width; - double yy = pos.y+2; - int sec = Thinker.Tics2Seconds(s.time); - str = String.Format("%02d\cu:\c-%02d\cu:\c-%02d",sec/3600,(sec%3600)/60,sec%60); - Screen.DrawText(smallfont2,((s.suck>0)&&(sec>=(s.suck*3600)))?Font.CR_RED:(sec<=s.par)?Font.CR_GOLD:Font.CR_WHITE,master.origin.x+xx-smallfont2.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - Screen.DrawText(smallfont2,Font.CR_FIRE,master.origin.x+xx-maxlen[0],master.origin.y+yy,"T",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - if ( maxlen[0] > 0 ) xx -= maxlen[0]+8; - if ( s.stotal > 0 ) + int time, par, suck, stotal, scount, itotal, icount, ktotal, kcount; + if ( selected ) { - str = String.Format("%d\cu/\c-%d",s.scount,s.stotal); - Screen.DrawText(smallfont2,(s.scount>=s.stotal)?Font.CR_GOLD:Font.CR_WHITE,master.origin.x+xx-smallfont2.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - Screen.DrawText(smallfont2,Font.CR_FIRE,master.origin.x+xx-maxlen[1],master.origin.y+yy,"S",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + time = level.maptime; + par = level.partime; + suck = level.sucktime; + stotal = level.total_secrets; + scount = level.found_secrets; + itotal = level.total_items; + icount = level.found_items; + ktotal = level.total_monsters; + kcount = level.killed_monsters; + } + else + { + time = s.time; + par = s.par; + suck = s.suck; + stotal = s.stotal; + scount = s.scount; + itotal = s.itotal; + icount = s.icount; + ktotal = s.ktotal; + kcount = s.kcount; + } + int sec = Thinker.Tics2Seconds(time); + String str = String.Format("T %02d:%02d:%02d",sec/3600,(sec%3600)/60,sec%60); + tlen = master.mTinyFont.StringWidth(str); + if ( stotal > 0 ) + { + str = String.Format("S %d/%d",scount,stotal); + slen = master.mTinyFont.StringWidth(str); + } + else slen = 0; + if ( itotal > 0 ) + { + str = String.Format("I %d/%d",icount,itotal); + ilen = master.mTinyFont.StringWidth(str); + } + else ilen = 0; + if ( ktotal > 0 ) + { + str = String.Format("K %d/%d",kcount,ktotal); + klen = master.mTinyFont.StringWidth(str); + } + else klen = 0; + } + + override void Drawer( Vector2 pos, bool selected ) + { + String str = s.mapname..": "; + if ( selected ) str = "\cd> \c-"..str; + int nlen = master.mTinyFont.StringWidth(str); + double xx = pos.x; + double yy = pos.y; + Screen.DrawText(master.mTinyFont,(selected||s.visited)?Font.CR_FIRE:Font.CR_DARKGRAY,master.origin.x+xx,master.origin.y+yy+2,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + xx += nlen; + str = s.levelname; + if ( !s.visited && !selected ) SWWMUtility.ObscureText(str,(Menu.MenuTime()/3)+ypos*2); + bool smallname = (nlen+master.mSmallFont.StringWidth(str))>(width-(maxlen[3]+maxlen[2]+maxlen[1]+maxlen[0]+24)); + bool allclear = true; + if ( selected ) + { + if ( (level.total_secrets > 0) && (level.found_secrets < level.total_secrets) ) allclear = false; + if ( (level.total_items > 0) && (level.found_items < level.total_items) ) allclear = false; + if ( (level.total_monsters > 0) && (level.killed_monsters < level.total_monsters) ) allclear = false; + } + else if ( s.visited ) + { + if ( (s.stotal > 0) && (s.scount < s.stotal) ) allclear = false; + if ( (s.itotal > 0) && (s.icount < s.itotal) ) allclear = false; + if ( (s.ktotal > 0) && (s.kcount < s.ktotal) ) allclear = false; + } + else allclear = false; + Screen.DrawText(smallname?master.mTinyFont:master.mSmallFont,(selected||s.visited)?allclear?Font.CR_GOLD:Font.CR_WHITE:Font.CR_BLACK,master.origin.x+xx,master.origin.y+yy+smallname*2,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + if ( !selected && !s.visited ) return; + xx = pos.x+width; + yy = pos.y+2; + int time, par, suck, stotal, scount, itotal, icount, ktotal, kcount; + if ( selected ) + { + time = level.maptime; + par = level.partime; + suck = level.sucktime; + stotal = level.total_secrets; + scount = level.found_secrets; + itotal = level.total_items; + icount = level.found_items; + ktotal = level.total_monsters; + kcount = level.killed_monsters; + } + else + { + time = s.time; + par = s.par; + suck = s.suck; + stotal = s.stotal; + scount = s.scount; + itotal = s.itotal; + icount = s.icount; + ktotal = s.ktotal; + kcount = s.kcount; + } + int sec = Thinker.Tics2Seconds(time); + str = String.Format("%02d\cu:\c-%02d\cu:\c-%02d",sec/3600,(sec%3600)/60,sec%60); + Screen.DrawText(master.mTinyFont,((suck>0)&&(sec>=(suck*3600)))?Font.CR_RED:(sec<=par)?Font.CR_GOLD:Font.CR_WHITE,master.origin.x+xx-master.mTinyFont.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawText(master.mTinyFont,Font.CR_FIRE,master.origin.x+xx-maxlen[0],master.origin.y+yy,"T",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + if ( maxlen[0] > 0 ) xx -= maxlen[0]+8; + if ( stotal > 0 ) + { + str = String.Format("%d\cu/\c-%d",scount,stotal); + Screen.DrawText(master.mTinyFont,(scount>=stotal)?Font.CR_GOLD:Font.CR_WHITE,master.origin.x+xx-master.mTinyFont.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawText(master.mTinyFont,Font.CR_FIRE,master.origin.x+xx-maxlen[1],master.origin.y+yy,"S",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } if ( maxlen[1] > 0 ) xx -= maxlen[1]+8; - if ( s.itotal > 0 ) + if ( itotal > 0 ) { - str = String.Format("%d\cu/\c-%d",s.icount,s.itotal); - Screen.DrawText(smallfont2,(s.icount>=s.itotal)?Font.CR_GOLD:Font.CR_WHITE,master.origin.x+xx-smallfont2.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - Screen.DrawText(smallfont2,Font.CR_FIRE,master.origin.x+xx-maxlen[2],master.origin.y+yy,"I",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + str = String.Format("%d\cu/\c-%d",icount,itotal); + Screen.DrawText(master.mTinyFont,(icount>=itotal)?Font.CR_GOLD:Font.CR_WHITE,master.origin.x+xx-master.mTinyFont.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawText(master.mTinyFont,Font.CR_FIRE,master.origin.x+xx-maxlen[2],master.origin.y+yy,"I",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } if ( maxlen[2] > 0 ) xx -= maxlen[2]+8; - if ( s.ktotal > 0 ) + if ( ktotal > 0 ) { - str = String.Format("%d\cu/\c-%d",s.kcount,s.ktotal); - Screen.DrawText(smallfont2,(s.kcount>=s.ktotal)?Font.CR_GOLD:Font.CR_WHITE,master.origin.x+xx-smallfont2.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - Screen.DrawText(smallfont2,Font.CR_FIRE,master.origin.x+xx-maxlen[3],master.origin.y+yy,"K",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + str = String.Format("%d\cu/\c-%d",kcount,ktotal); + Screen.DrawText(master.mTinyFont,(kcount>=ktotal)?Font.CR_GOLD:Font.CR_WHITE,master.origin.x+xx-master.mTinyFont.StringWidth(str),master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawText(master.mTinyFont,Font.CR_FIRE,master.origin.x+xx-maxlen[3],master.origin.y+yy,"K",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } } @@ -692,11 +851,11 @@ Class DemolitionistMenuAchievementItem : DemolitionistMenuListItem Super.Init(master,""); self.a = a; self.width = width; - AchievementUnknown = TexMan.CheckForTexture("graphics/Achievements/HiddenAchievement.png",TexMan.Type_Any); - BaseBox = TexMan.CheckForTexture("graphics/Achievements/NoAchievement.png",TexMan.Type_Any); - BarTex[0] = TexMan.CheckForTexture("graphics/Achievements/BarAchievementBase.png",TexMan.Type_Any); - BarTex[1] = TexMan.CheckForTexture("graphics/Achievements/BarAchievementProgress.png",TexMan.Type_Any); - BarTex[2] = TexMan.CheckForTexture("graphics/Achievements/BarAchievementDone.png",TexMan.Type_Any); + AchievementUnknown = TexMan.CheckForTexture("graphics/Achievements/HiddenAchievement.png"); + BaseBox = TexMan.CheckForTexture("graphics/Achievements/NoAchievement.png"); + BarTex[0] = TexMan.CheckForTexture("graphics/Achievements/BarAchievementBase.png"); + BarTex[1] = TexMan.CheckForTexture("graphics/Achievements/BarAchievementProgress.png"); + BarTex[2] = TexMan.CheckForTexture("graphics/Achievements/BarAchievementDone.png"); ShouldObscure = (swwm_filterachievements==1); Update(); return self; @@ -725,44 +884,43 @@ Class DemolitionistMenuAchievementItem : DemolitionistMenuListItem return 50; // hardcoded } - override void Drawer( Vector2 pos, bool selected, int cliptop, int clipbottom, int clipleft, int clipright ) + override void Drawer( Vector2 pos, bool selected ) { if ( bHidden ) return; bool completed = !!a.state; bool hasprogress = (a.maxval && a.val); double xx = master.origin.x+pos.x; double yy = master.origin.y+pos.y; - Screen.DrawTexture(BaseBox,false,xx+1,yy+1,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright,DTA_FillColor,(!completed&&!hasprogress&&ShouldObscure)?Color(8,8,8):Color(16,16,16)); - Screen.DrawTexture((!completed&&!hasprogress&&ShouldObscure)?AchievementUnknown:a.icon,false,xx,yy,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright,DTA_Desaturate,(!completed)*255,DTA_ColorOverlay,completed?Color(0,0,0,0):(hasprogress||!ShouldObscure)?Color(96,0,0,0):Color(192,0,0,0)); - Screen.DrawTexture(BarTex[0],false,xx+1,yy+36,DTA_DestWidthF,width,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright,DTA_FillColor,Color(0,0,0)); + Screen.DrawTexture(BaseBox,false,xx+1,yy+1,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_FillColor,(!completed&&!hasprogress&&ShouldObscure)?Color(8,8,8):Color(16,16,16)); + Screen.DrawTexture((!completed&&!hasprogress&&ShouldObscure)?AchievementUnknown:a.icon,false,xx,yy,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_Desaturate,(!completed)*255,DTA_ColorOverlay,completed?Color(0,0,0,0):(hasprogress||!ShouldObscure)?Color(96,0,0,0):Color(192,0,0,0)); + Screen.DrawTexture(BarTex[0],false,xx+1,yy+36,DTA_DestWidthF,width,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_FillColor,Color(0,0,0)); String str; if ( a.maxval && (!ShouldObscure || hasprogress) ) { - int val = clamp(a.val,0,a.maxval); - if ( val < a.maxval ) Screen.DrawTexture(BarTex[0],false,xx,yy+35,DTA_DestWidthF,width,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - Screen.DrawTexture(BarTex[completed?2:1],false,xx,yy+35,DTA_DestWidthF,width*(val/double(a.maxval)),DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - if ( completed ) str = String.Format("%s / %s",SWWMUtility.ThousandsNum(a.maxval),SWWMUtility.ThousandsNum(a.maxval)); - else str = String.Format("%s / %s",SWWMUtility.ThousandsNum(val),SWWMUtility.ThousandsNum(a.maxval)); - int ox = (width-smallfont2.StringWidth(str))/2; - Screen.DrawText(smallfont2,completed?Font.CR_GREEN:Font.CR_WHITE,xx+ox,yy+37,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + int val = a.val; + if ( val < a.maxval ) Screen.DrawTexture(BarTex[0],false,xx,yy+35,DTA_DestWidthF,width,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + Screen.DrawTexture(BarTex[completed?2:1],false,xx,yy+35,DTA_DestWidthF,width*(min(val,a.maxval)/double(a.maxval)),DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + str = String.Format("%s / %s",SWWMUtility.ThousandsNum(val),SWWMUtility.ThousandsNum(a.maxval)); + int ox = (width-master.mTinyFont.StringWidth(str))/2; + Screen.DrawText(master.mTinyFont,completed?Font.CR_GREEN:Font.CR_WHITE,xx+ox,yy+37,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } - else Screen.DrawTexture(BarTex[completed?2:0],false,xx,yy+35,DTA_DestWidthF,width,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); - str = a.hasformat?String.Format(StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TXT"),a.maxval):StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TXT"); + else Screen.DrawTexture(BarTex[completed?2:0],false,xx,yy+35,DTA_DestWidthF,width,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + str = a.hasformat?String.Format(StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TXT"),SWWMUtility.ThousandsNum(a.maxval)):StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TXT"); if ( str != oldstr ) { if ( l ) l.Destroy(); - l = smallfont2.BreakLines(str,width-40); + l = master.mTinyFont.BreakLines(str,width-40); oldstr = str; } str = StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TAG"); - if ( !completed && !hasprogress && ShouldObscure ) SWWMUtility.ObscureText(str,(gametic/3)+ypos*2+1); + if ( !completed && !hasprogress && ShouldObscure ) SWWMUtility.ObscureText(str,(Menu.MenuTime()/3)+ypos*2+1); int oy = (32-(14+(9*l.Count())))/2; - Screen.DrawText(smallfont,completed?Font.CR_GREEN:Font.CR_DARKGRAY,xx+36,yy+oy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawText(master.mSmallFont,completed?Font.CR_GREEN:Font.CR_DARKGRAY,xx+36,yy+oy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); for ( int i=0; i=4)); + bDisabled = (deathmatch||(G_SkillPropertyInt(SKILLP_ACSReturn)>=4)||master.hnd.gdat.disablestore); return Super.Init(master); } override void OnDestroy() @@ -82,10 +85,12 @@ Class DemolitionistStoreTab : DemolitionistMenuTab override void OnSelect() { + bSell = master.shnd.menustate.Get("WasSelling").ToInt(); smofs = ofs; } override void OnDeselect() { + master.shnd.menustate.Insert("WasSelling",String.Format("%d",bSell)); smofs = ofs; } @@ -97,8 +102,10 @@ Class DemolitionistStoreTab : DemolitionistMenuTab if ( !(gameinfo.gametype&GAME_DOOM) && (type is 'EBarrier') ) return true; // no gravity/tether outside raven if ( !(gameinfo.gametype&GAME_RAVEN) && ((type is 'GravitySuppressor') || (type is 'SafetyTether')) ) return true; - // can't sell candygun spares - if ( bSell && (type is 'CandyGunSpares') ) return true; + // can't sell candygun spares if we already own a Candy Gun + if ( bSell && (type is 'CandyGunSpares') && players[consoleplayer].mo.FindInventory('CandyGun') ) return true; + // can't sell deep impact + if ( bSell && (type is 'DeepImpact') ) return true; // skip items we don't own or are depleted if selling if ( bSell && (!cur || (cur.Amount <= 0)) ) return true; else if ( !bSell ) @@ -131,11 +138,12 @@ Class DemolitionistStoreTab : DemolitionistMenuTab // skip unimplemented weapons if ( type is 'Weapon' ) { - let ready = inv.FindState("Ready"); + let ready = inv.FindState('Ready'); if ( !ready || !ready.ValidateSpriteFrame() ) return true; } // ignore child ammos if ( (type is 'Ammo') && (type.GetParentClass() != 'SWWMAmmo') ) return true; + if ( (type is 'MagAmmo') && (type.GetParentClass() != 'MagAmmo') ) return true; // items must have a set price if ( inv.Stamina == 0 ) return true; // items with negative stamina can only be sold @@ -145,6 +153,7 @@ Class DemolitionistStoreTab : DemolitionistMenuTab override void Ticker() { + if ( bDisabled ) return; // do nothing bool mustsort = false; bool skipsel = false; // only update active list to reduce perf hit @@ -153,7 +162,7 @@ Class DemolitionistStoreTab : DemolitionistMenuTab mustsort = true; skipsel = true; // initialize - invlist[bSell] = new("DemolitionistMenuList"); + invlist[bSell] = new('DemolitionistMenuList'); invlist[bSell].master = master; invlist[bSell].selected = 0; } @@ -169,18 +178,18 @@ Class DemolitionistStoreTab : DemolitionistMenuTab if ( invlist[bSell].selected > i ) invlist[bSell].selected = max(0,invlist[bSell].selected-1); i--; } - for ( int i=0; i)(AllActorClasses[i]); + let type = (Class)(cls); if ( !type ) continue; let cur = players[consoleplayer].mo.FindInventory(type); let inv = GetDefaultByType(type); if ( FilterStore(type,cur,inv) ) continue; // skip if it's already there bool skipme = false; - for ( int j=0; j abs(inv2.Stamina) ) continue; greater = true; - invlist[bSell].items.Insert(j,new("DemolitionistMenuStoreItem").Init(master,type,bSell)); + invlist[bSell].items.Insert(j,new('DemolitionistMenuStoreItem').Init(master,type,bSell)); mustsort = true; break; } if ( greater ) continue; - invlist[bSell].items.Push(new("DemolitionistMenuStoreItem").Init(master,type,bSell)); + invlist[bSell].items.Push(new('DemolitionistMenuStoreItem').Init(master,type,bSell)); mustsort = true; } // don't do anything if empty @@ -214,21 +223,21 @@ Class DemolitionistStoreTab : DemolitionistMenuTab // rearrange all item positions maxofs = 0; maxw = 0; - for ( int i=0; i maxw ) maxw = fw; } int xx = 0; int yy = 0; - for ( int i=0; i= (master.ws.y-48) ) + if ( yy > (master.ws.y-62) ) { xx += maxw; yy = 0; @@ -275,6 +284,7 @@ Class DemolitionistStoreTab : DemolitionistMenuTab override void MenuInput( int key ) { + if ( bDisabled ) return; // do nothing if ( key == MK_BACK ) { bSell = !bSell; @@ -327,6 +337,7 @@ Class DemolitionistStoreTab : DemolitionistMenuTab } override void MouseInput( Vector2 pos, int btn ) { + if ( bDisabled ) return; // do nothing if ( btn == MB_RIGHT ) { // just toggle buy/sell @@ -340,9 +351,11 @@ Class DemolitionistStoreTab : DemolitionistMenuTab // see if we're clicking the scrollbar (if it exists) if ( pos.y > (master.ws.y-21) ) { - SetOffset(pos.x); - master.MenuSound("menu/demoscroll"); - drag = true; + if ( SetOffset(pos.x) ) + { + master.MenuSound("menu/demoscroll"); + drag = true; + } break; } // find which element we clicked @@ -372,29 +385,36 @@ Class DemolitionistStoreTab : DemolitionistMenuTab } } - override void Drawer() + override void Drawer( double fractic ) { + if ( bDisabled ) + { + String str = StringTable.Localize("$SWWM_NOSTORE"); + double xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2; + double yy = int(master.ws.y-master.mSmallFont.GetHeight())/2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + return; + } if ( !invlist[bSell] || (invlist[bSell].items.Size() <= 0) ) { - String str = StringTable.Localize(bSell?"$SWWM_NOSTORESELL":"$SWWM_NOSTORE"); - double xx = int(master.ws.x-smallfont.StringWidth(str))/2; - double yy = int(master.ws.y-smallfont.GetHeight())/2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + String str = StringTable.Localize(bSell?"$SWWM_NOSTORESELL":"$SWWM_NOSTOREBUY"); + double xx = int(master.ws.x-master.mSmallFont.StringWidth(str))/2; + double yy = int(master.ws.y-master.mSmallFont.GetHeight())/2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,str,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); return; } double xx = 9; double yy = 23; - int cliptop = int((master.origin.y+23)*master.hs); - int clipbottom = int((master.origin.y+master.ws.y-23)*master.hs); - int clipleft = int((master.origin.x+9)*master.hs); - int clipright = int((master.origin.x+master.ws.x-9)*master.hs); - invlist[bSell].Drawer((xx-smofs,yy),cliptop,clipbottom,clipleft,clipright); + Screen.SetClipRect(int((master.origin.x+9)*master.hs),int((master.origin.y+23)*master.hs),int((master.ws.x-18)*master.hs),int((master.ws.y-46)*master.hs)); + double ssmofs = (smofs~==ofs)?smofs:(smofs*(1.-fractic)+((smofs*.6)+(ofs*.4))*fractic); + invlist[bSell].Drawer((xx-ssmofs,yy)); + Screen.ClearClipRect(); if ( maxofs <= 0 ) return; yy = master.ws.y-21; master.DrawHSeparator(0,yy,master.ws.x); yy -= 4; - xx = floor(smofs*((master.ws.x-10)/maxofs))+2; - Screen.DrawText(smallfont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▬",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); + xx = floor(ssmofs*((master.ws.x-10)/maxofs))+2; + Screen.DrawText(master.mSmallFont,Font.CR_FIRE,master.origin.x+xx,master.origin.y+yy,"▬",DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true); } } @@ -420,6 +440,7 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem else if ( (i is 'PowerupGiver') || (i is 'AmmoFabricator') || def.bBIGPOWERUP ) col = SWWMUtility.IsVIPItemClass(i)?Font.FindFontColor('VIPPurple'):Font.CR_PURPLE; else if ( (i is 'Health') || (i is 'HealthPickup') || (i is 'SWWMHealth') ) col = Font.CR_RED; else if ( (i is 'Armor') || (i is 'SWWMSpareArmor') ) col = Font.CR_GREEN; + else if ( def.bINVBAR ) col = Font.CR_CYAN; self.bSell = bSell; UpdateLabel(); return self; @@ -428,7 +449,7 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem // used for the store display calculation int GetFullWidth() { - return smallfont.StringWidth(label)+96+smallfont.StringWidth(pricelabel); + return master.mSmallFont.StringWidth(label)+96+master.mSmallFont.StringWidth(pricelabel); } // so the prices don't get cut off @@ -441,7 +462,7 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem override bool CheckBounds( double x, double y ) { if ( Super.CheckBounds(x,y) ) return true; - int ofs = (width-16)-smallfont.StringWidth(pricelabel); + int ofs = (width-16)-master.mSmallFont.StringWidth(pricelabel); if ( x < xpos+ofs ) return false; if ( y < ypos ) return false; if ( x > xpos+width ) return false; @@ -462,9 +483,9 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem if ( bSell ) maxamt = cur.Amount; // we can sell ALL our ammo else maxamt = cur?(cur.MaxAmount-cur.Amount):def.MaxAmount; // get the largest affordable child pickup amount (that we need, or we can sell) - for ( int j=0; j)(AllActorClasses[j]); + let inv2 = (Class)(cls); if ( !inv2 || (inv2.GetParentClass() != inv) ) continue; let def2 = GetDefaultByType(inv2); int cprice = int(abs(def.Stamina)*(1.+.75*(def2.Amount-1))); @@ -475,45 +496,21 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem } } } - // nuggets can be bought/sold in bulk - else if ( inv is 'HealthNuggetItem' ) + else if ( inv is 'MagAmmo' ) { - let def2 = GetDefaultByType(SWWMHealth(def).giveme); - int maxamt; - if ( bSell ) maxamt = cur.Amount; - else + // never bought, only sold + int maxamt = cur.Amount; + // get the largest affordable child pickup amount (that we can sell) + foreach ( cls:AllActorClasses ) { - maxamt = (def2.MaxAmount-players[consoleplayer].Health); - maxamt += cur?(cur.MaxAmount-cur.Amount):def.MaxAmount; - } - for ( int j=5; j<=20; j+=5 ) - { - int cprice = int(def.Stamina*(1.+.75*(j-1))); - if ( (j <= maxamt) && (bSell || SWWMCredits.CanTake(players[consoleplayer],cprice)) ) + let inv2 = (Class)(cls); + if ( !inv2 || (inv2.GetParentClass() != inv) ) continue; + let def2 = GetDefaultByType(inv2); + int cprice = int(abs(def.Stamina)*(1.+.75*(def2.Amount-1))); + if ( (def2.Amount > amt) && (def2.Amount <= maxamt) ) { price = cprice; - amt = j; - } - } - } - else if ( inv is 'ArmorNuggetItem' ) - { - let def2 = GetDefaultByType(SWWMSpareArmor(def).giveme); - let cur2 = players[consoleplayer].mo.FindInventory(SWWMSpareArmor(def).giveme); - int maxamt; - if ( bSell ) maxamt = cur.Amount; - else - { - maxamt = cur2?(cur2.MaxAmount-cur2.Amount):def2.MaxAmount; - maxamt += cur?(cur.MaxAmount-cur.Amount):def.MaxAmount; - } - for ( int j=5; j<=20; j+=5 ) - { - int cprice = int(def.Stamina*(1.+.75*(j-1))); - if ( (j <= maxamt) && (bSell || SWWMCredits.CanTake(players[consoleplayer],cprice)) ) - { - price = cprice; - amt = j; + amt = def2.Amount; } } } @@ -524,39 +521,36 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem if ( w.AmmoType1 && (w.AmmoGive1 > 0) ) { let am1 = GetDefaultByType(w.AmmoType1); - if ( am1.Stamina > 0 ) price -= int(am1.Stamina*(1.+.75*(w.AmmoGive1-1))); + if ( am1.Stamina != 0 ) price -= int(abs(am1.Stamina)*(1.+.75*(w.AmmoGive1-1))); } - // candygun and rafan-kos are a special case for secondary ammo - if ( w.AmmoType2 && (w.AmmoGive2 > 0) && ((inv is 'CandyGun') || (inv is 'RafanKos')) ) + if ( w.AmmoType2 && (w.AmmoGive2 > 0) ) { let am2 = GetDefaultByType(w.AmmoType2); - if ( am2.Stamina > 0 ) price -= int(am2.Stamina*(1.+.75*(w.AmmoGive2-1))); + if ( am2.Stamina != 0 ) price -= int(abs(am2.Stamina)*(1.+.75*(w.AmmoGive2-1))); } } // sell at half price - if ( bSell ) price /= 2; + if ( bSell ) price = int(abs(def.Stamina)*amt)/2; return price, amt; } // formatted name private void UpdateLabel() { - int price, amt; - [price, amt] = GetPriceUnits(); + let [price, amt] = GetPriceUnits(); let def = GetDefaultByType(inv); if ( bSell ) { pricelabel = String.Format("\cd¥%d\c-",price); - int cur = (inv is 'CandyGun')?(players[consoleplayer].mo.CountInv("CandyGunSpares")+1):players[consoleplayer].mo.CountInv(inv); - if ( (cur > 1) || (inv is 'Ammo') ) label = String.Format("%s (%d/%d)",def.GetTag(),amt,cur); + int cur = (inv is 'CandyGun')?(players[consoleplayer].mo.CountInv('CandyGunSpares')+1):players[consoleplayer].mo.CountInv(inv); + if ( (cur > 1) || (inv is 'Ammo') || (inv is 'MagAmmo') ) label = String.Format("%s (%d/%d)",def.GetTag(),amt,cur); else label = def.GetTag(); } else { - if ( (price > master.muns1) && (master.muns2 <= 0) ) - pricelabel = String.Format("\cm¥%d\c-",price); + if ( price > master.muns ) pricelabel = String.Format("\cm¥%d\c-",price); else pricelabel = String.Format("\cx¥%d\cx",price); - if ( (amt > 1) || (inv is 'Ammo') ) label = String.Format("%dx %s",amt,def.GetTag()); + if ( (amt > 1) || (inv is 'Ammo') || (inv is 'MagAmmo') ) label = String.Format("%dx %s",amt,def.GetTag()); else label = def.GetTag(); } } @@ -566,16 +560,15 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem UpdateLabel(); } - override void Drawer( Vector2 pos, bool selected, int cliptop, int clipbottom, int clipleft, int clipright ) + override void Drawer( Vector2 pos, bool selected ) { - Screen.DrawText(smallfont,col,master.origin.x+pos.x,master.origin.y+pos.y,label,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright,DTA_ColorOverlay,selected?Color(0,0,0,0):Color(96,0,0,0)); - Screen.DrawText(smallfont,Font.CR_UNTRANSLATED,master.origin.x+pos.x+(width-16)-smallfont.StringWidth(pricelabel),master.origin.y+pos.y,pricelabel,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright,DTA_ColorOverlay,selected?Color(0,0,0,0):Color(96,0,0,0)); + Screen.DrawText(master.mSmallFont,col,master.origin.x+pos.x,master.origin.y+pos.y,label,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,selected?Color(0,0,0,0):Color(96,0,0,0)); + Screen.DrawText(master.mSmallFont,Font.CR_UNTRANSLATED,master.origin.x+pos.x+(width-16)-master.mSmallFont.StringWidth(pricelabel),master.origin.y+pos.y,pricelabel,DTA_VirtualWidthF,master.ss.x,DTA_VirtualHeightF,master.ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,selected?Color(0,0,0,0):Color(96,0,0,0)); } void BuySellItem() { - int price, amt; - [price, amt] = GetPriceUnits(); + let [price, amt] = GetPriceUnits(); if ( bSell ) { EventHandler.SendNetworkEvent(String.Format("swwmstoretake.%s",inv.GetClassName()),consoleplayer,price,amt); @@ -586,9 +579,22 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem { master.MenuSound("menu/noinvuse"); master.tmsg = StringTable.Localize("$SWWM_STOREMUNS"); - master.tmsgtic = gametic+70; + master.tmsgtic = Menu.MenuTime()+70; return; } + if ( (inv is 'SWWMWeapon') && swwm_swapweapons ) + { + // check swapweapon + let wpn = GetDefaultByType((Class)(inv)); + let sw = wpn.HasSwapWeapon(players[consoleplayer].mo); + if ( sw ) + { + master.MenuSound("menu/noinvuse"); + master.tmsg = String.Format(StringTable.Localize("$SWWM_STORESWAP"),sw.GetTag()); + master.tmsgtic = Menu.MenuTime()+70; + return; + } + } let cur = players[consoleplayer].mo.FindInventory(inv); int camt, max; if ( cur ) @@ -601,11 +607,11 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem camt = 0; max = GetDefaultByType(inv).MaxAmount; } - if ( camt >= max ) + if ( (max > 0) && (camt >= max) ) { master.MenuSound("menu/noinvuse"); master.tmsg = StringTable.Localize("$SWWM_STOREFULL"); - master.tmsgtic = gametic+70; + master.tmsgtic = Menu.MenuTime()+70; return; } EventHandler.SendNetworkEvent(String.Format("swwmstoregive.%s",inv.GetClassName()),consoleplayer,price,amt); diff --git a/zscript/menu/swwm_achievementmenu.zsc b/zscript/menu/swwm_achievementmenu.zsc index 30be7a23b..62cfce373 100644 --- a/zscript/menu/swwm_achievementmenu.zsc +++ b/zscript/menu/swwm_achievementmenu.zsc @@ -9,17 +9,18 @@ Class SWWMAchievementMenu : GenericMenu SWWMStaticHandler hnd; Array mItems; String mTitle; - int mSelected; - int mBaseY; // Y position achievement boxes are being drawn at - // needed to tune mouse selection + int mSelected, mBaseY, mRows; + int ofs, maxofs; // physical scroll offset, and offset limit int completed, incomplete, total; + Font mSmallFont, mTinyFont; + int glowcol; override void Init( Menu parent ) { Super.Init(parent); mTitle = StringTable.Localize("$SWWM_ATITLE"); mSelected = 0; - hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler")); + hnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); if ( !hnd ) ThrowAbortException("SWWMStaticHandler not found???"); mItems.Copy(hnd.achievementinfo); total = mItems.Size(); @@ -43,9 +44,12 @@ Class SWWMAchievementMenu : GenericMenu i--; } ShouldObscure = (swwm_filterachievements==1); - AchievementUnknown = TexMan.CheckForTexture("graphics/Achievements/HiddenAchievement.png",TexMan.Type_Any); - SelectBox = TexMan.CheckForTexture("graphics/Achievements/SelectAchievement.png",TexMan.Type_Any); - BaseBox = TexMan.CheckForTexture("graphics/Achievements/NoAchievement.png",TexMan.Type_Any); + AchievementUnknown = TexMan.CheckForTexture("graphics/Achievements/HiddenAchievement.png"); + SelectBox = TexMan.CheckForTexture("graphics/Achievements/SelectAchievement.png"); + BaseBox = TexMan.CheckForTexture("graphics/Achievements/NoAchievement.png"); + mSmallFont = Font.GetFont('TewiFontOutline'); + mTinyFont = Font.GetFont('MiniwiFontOutline'); + glowcol = Font.FindFontColor('MiniWhiteFlash'); } override void Ticker() @@ -53,11 +57,17 @@ Class SWWMAchievementMenu : GenericMenu // recalculate counters completed = 0; incomplete = 0; - for ( int i=0; i 0 ) MenuSound("menu/cursor"); + ofs = max(0,ofs-1); + break; + case MKEY_PageDown: + if ( ofs < maxofs ) MenuSound("menu/cursor"); + ofs = min(ofs+1,maxofs); + break; default: return Super.MenuEvent(mkey,fromcontroller); } - if ( mSelected != prevsel ) MenuSound("menu/cursor"); + if ( mSelected != prevsel ) + { + MenuSound("menu/cursor"); + // auto-scroll to selection + int irow = mSelected/12; + if ( irow < ofs ) ofs = max(0,irow); + else if ( irow >= (ofs+mRows) ) ofs = min(maxofs,(irow+1)-mRows); + } return true; } + override bool OnUiEvent( UIEvent ev ) + { + switch ( ev.type ) + { + case UIEvent.Type_WheelDown: + MenuEvent(MKEY_PageDown,false); + return false; + case UIEvent.Type_WheelUp: + MenuEvent(MKEY_PageUp,false); + return false; + } + return Super.OnUiEvent(ev); + } + override bool MouseEvent( int type, int mx, int my ) { bool res = Super.MouseEvent(type,mx,my); - int xx = (Screen.GetWidth()-480*CleanXFac_1)/2; - int yy = mBaseY; - for ( int i=0; i 0 ) + { + xx = (Screen.GetWidth()+488*CleanXFac_1)/2; + yy = mBaseY; + if ( (mx >= xx) && (mx < xx+8*CleanXFac_1) && (my >= yy) && (my < yy+mRows*40*CleanYFac_1) ) + { + if ( my < yy+mSmallFont.GetHeight()*CleanYFac_1 ) + { + if ( ofs > 0 ) MenuSound("menu/cursor"); + ofs = max(0,ofs-1); + return res; + } + yy += (mRows*40-mSmallFont.GetHeight())*CleanYFac_1; + if ( my >= yy ) + { + if ( ofs < maxofs ) MenuSound("menu/cursor"); + ofs = min(ofs+1,maxofs); + return res; + } + } + } + if ( (my < mBaseY) || (my >= mBaseY+mRows*40*CleanYFac_1) ) + return res; + xx = (Screen.GetWidth()-480*CleanXFac_1)/2; + yy = mBaseY; + for ( int i=ofs*12; i= mBaseY+mRows*40*CleanYFac_1 ) break; } return res; } @@ -200,35 +266,47 @@ Class SWWMAchievementMenu : GenericMenu override void Drawer() { Super.Drawer(); - int y = DrawCaption()+10*CleanYFac_1; - DrawTooltip(y); - int xx = (Screen.GetWidth()-480*CleanXFac_1)/2; - int yy = y+60*CleanYFac_1; - mBaseY = yy; - int i; - for ( i=0; i 0 ) { - let a = mItems[i]; - bool completed = !!a.state; - bool hasprogress = (a.maxval && a.val); - Screen.DrawTexture(BaseBox,false,xx+5*CleanXFac_1,yy+5*CleanYFac_1,DTA_CleanNoMove_1,true,DTA_FillColor,(!completed&&!hasprogress&&ShouldObscure)?Color(8,8,8):Color(16,16,16)); - Screen.DrawTexture((!completed&&!hasprogress&&ShouldObscure)?AchievementUnknown:a.icon,false,xx+4*CleanXFac_1,yy+4*CleanYFac_1,DTA_CleanNoMove_1,true,DTA_Desaturate,(!completed)*255,DTA_ColorOverlay,completed?Color(0,0,0,0):(hasprogress||!ShouldObscure)?Color(96,0,0,0):Color(192,0,0,0)); - if ( mSelected == i ) Screen.DrawTexture(SelectBox,false,xx,yy,DTA_CleanNoMove_1,true); + xx = (Screen.GetWidth()+488*CleanXFac_1)/2; + yy = mBaseY; + Screen.DrawText(mSmallFont,(ofs>0)?Font.CR_GREEN:Font.CR_DARKGREEN,xx*CleanXFac_1,yy*CleanYFac_1,(ofs>0)?"▲":"△",DTA_CleanNoMove_1,true); + yy += (mRows*40-mSmallFont.GetHeight())*CleanYFac_1; + Screen.DrawText(mSmallFont,(ofs= mBaseY) && (yy < mBaseY+mRows*40*CleanYFac_1) ) + { + let a = mItems[i]; + bool completed = !!a.state; + bool hasprogress = (a.maxval && a.val); + Screen.DrawTexture(BaseBox,false,xx+5*CleanXFac_1,yy+5*CleanYFac_1,DTA_CleanNoMove_1,true,DTA_FillColor,(!completed&&!hasprogress&&ShouldObscure)?Color(8,8,8):Color(16,16,16)); + Screen.DrawTexture((!completed&&!hasprogress&&ShouldObscure)?AchievementUnknown:a.icon,false,xx+4*CleanXFac_1,yy+4*CleanYFac_1,DTA_CleanNoMove_1,true,DTA_Desaturate,(!completed)*255,DTA_ColorOverlay,completed?Color(0,0,0,0):(hasprogress||!ShouldObscure)?Color(96,0,0,0):Color(192,0,0,0)); + if ( mSelected == i ) Screen.DrawTexture(SelectBox,false,xx,yy,DTA_CleanNoMove_1,true); + } xx += 40*CleanXFac_1; if ( !((i+1)%12) ) { xx = (Screen.GetWidth()-480*CleanXFac_1)/2; yy += 40*CleanYFac_1; } + if ( yy >= mBaseY+mRows*40*CleanYFac_1 ) break; } - while ( i%12 ) + if ( yy < mBaseY+mRows*40*CleanYFac_1 ) while ( i%12 ) { Screen.DrawTexture(BaseBox,false,xx+5*CleanXFac_1,yy+5*CleanYFac_1,DTA_CleanNoMove_1,true,DTA_FillColor,Color(8,8,8)); Screen.DrawTexture(BaseBox,false,xx+4*CleanXFac_1,yy+4*CleanYFac_1,DTA_CleanNoMove_1,true); xx += 40*CleanXFac_1; i++; } - yy += 48*CleanYFac_1; - DrawFooter(yy); + DrawFooter(mBaseY+(mRows*40+8)*CleanYFac_1); } } diff --git a/zscript/menu/swwm_credits.zsc b/zscript/menu/swwm_credits.zsc index 6d2d59946..591aac43b 100644 --- a/zscript/menu/swwm_credits.zsc +++ b/zscript/menu/swwm_credits.zsc @@ -2,22 +2,22 @@ Class SWWMCreditsEntry ui { String title; - bool MariHack; - TextureID MariSprite[15]; + TextureID Sprite; + int sheight; int tics, cur; BrokenLines btext; int width, height; int titlecol, btextcol; + Font mSmallFont; - SWWMCreditsEntry Init( String t, String b = "", int c1 = Font.CR_SAPPHIRE, int c2 = Font.CR_WHITE, bool mari = false ) + SWWMCreditsEntry Init( String t, String b = "", int c1 = Font.CR_SAPPHIRE, int c2 = Font.CR_WHITE, String s = "" ) { - if ( mari ) + mSmallFont = Font.GetFont('TewiFont'); + if ( s != "" ) { - MariHack = true; - for ( int i=0; i<15; i++ ) - MariSprite[i] = TexMan.CheckForTexture(String.Format("graphics/Credits/MariSprite%d.png",i),TexMan.Type_Any); - tics = 3; - cur = 0; + Sprite = TexMan.CheckForTexture(s); + Vector2 ofs = TexMan.GetScaledOffset(Sprite); + sheight = int(ofs.y); } titlecol = c1; btextcol = c2; @@ -29,7 +29,7 @@ Class SWWMCreditsEntry ui return self; } String b2 = StringTable.Localize(b); - btext = smallfont.BreakLines(b2,320); + btext = mSmallFont.BreakLines(b2,320); width = CalcWidth(); height = CalcHeight(); return self; @@ -43,7 +43,7 @@ Class SWWMCreditsEntry ui private int CalcWidth() { - int len = smallfont.StringWidth(title); + int len = mSmallFont.StringWidth(title); if ( !btext ) return len; for ( int i=0; i 0 ) tics--; - if ( !tics ) - { - cur = (cur+1)%15; - tics = 3; - } - } - double Draw( Vector2 ss, double x, double y ) { // don't draw if we're offscreen, saves time if ( (y+height < 0) || (y > ss.y) ) return height; double yy = y; - if ( MariHack ) + if ( Sprite.IsValid() ) { - yy += 148; - Screen.DrawTexture(MariSprite[cur],false,x,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + yy += sheight; + Screen.DrawTexture(Sprite,true,x+1,yy+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(Sprite,true,x,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); } - int w = smallfont.StringWidth(title); + int w = mSmallFont.StringWidth(title); double xx = x-w/2; - Screen.DrawText(smallfont,titlecol,xx,yy,title,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawText(mSmallFont,titlecol,xx,yy,title,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); if ( !btext ) return height; // underline int cw = int(ceil((w+8)/6.))*6; xx = x-cw/2; for ( int i=0; i cdev, cassets, cmusic, cvoice, cfanart, clocal, cpatrons, cthanks; - String oldlang; + String sdev, sassets, smusic, svoice, slocal, spatrons, sthanks; + Array cdev, cassets, cmusic, cvoice, clocal, cpatrons, cthanks; Vector2 ss; double hs; Vector2 logosz; double logow, logoh; + Font mSmallFont, mBigFont; String oldmus; int oldorder; bool oldloop; const ENTRY_PAD = 8; - const SECTION_PAD = 10; + const SECTION_PAD = 20; const SECTION_SHIFT = -4; double spos, speed; @@ -131,166 +121,134 @@ Class SWWMCreditsMenu : GenericMenu void UpdateSize() { - hs = max(1.,min(floor(Screen.GetWidth()/640),floor(Screen.GetHeight()/266))); + hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); ss = (Screen.GetWidth(),Screen.GetHeight())/hs; } override void Init( Menu parent ) { Super.Init(parent); - bgtex = TexMan.CheckForTexture("graphics/tempbg.png",TexMan.Type_Any); + Animated = true; + mSmallFont = Font.GetFont('TewiFont'); + mBigFont = Font.GetFont('TewiFontOutline'); + bgtex = TexMan.CheckForTexture("graphics/tempbg.png"); UpdateSize(); - logo = TexMan.CheckForTexture(swwm_oldlogo?"graphics/M_SWWM.png":"graphics/M_DEMOLITIONIST.png",TexMan.Type_Any); + logo = TexMan.CheckForTexture("graphics/M_DEMOLITIONIST.png"); logosz = TexMan.GetScaledSize(logo); - if ( !swwm_oldlogo ) - { - logosz *= (2./3.); - logosz.y += 36.; - } + logosz *= (2./3.); + logosz.y += 36.; stitle = StringTable.Localize("$SWWM_CSTITLE"); stitle2 = StringTable.Localize("$SWWM_CSTITLE2"); sdev = StringTable.Localize("$SWWM_CLEAD"); sassets = StringTable.Localize("$SWWM_CASSETS"); smusic = StringTable.Localize("$SWWM_CMUSIC"); svoice = StringTable.Localize("$SWWM_CVOICE"); - sfanart = StringTable.Localize("$SWWM_CFANART"); slocal = StringTable.Localize("$SWWM_CLOCAL"); spatrons = StringTable.Localize("$SWWM_CPATRON"); sthanks = StringTable.Localize("$SWWM_CTHANK"); - cdev.Push(new("SWWMCreditsEntry").Init("Marisa Kirisame","$SWWM_CDEV2",mari:true)); - cassets.Push(new("SWWMCreditsEntry").Init("Bethesda Game Studios","Fallout: New Vegas\nFallout 4")); - cassets.Push(new("SWWMCreditsEntry").Init("Epic Games","Unreal\nUnreal Tournament\nUnreal Tournament 2004\nUnreal Tournament 3")); - cassets.Push(new("SWWMCreditsEntry").Init("Ion Storm","Deus Ex")); - cassets.Push(new("SWWMCreditsEntry").Init("Looking Glass Studios","Thief\nSystem Shock 2")); - cassets.Push(new("SWWMCreditsEntry").Init("People Can Fly","Painkiller")); - cassets.Push(new("SWWMCreditsEntry").Init("Tripwire Interactive","Killing Floor")); - cassets.Push(new("SWWMCreditsEntry").Init("From Software","Dark Souls\nDark Souls II\nDark Souls III")); - cassets.Push(new("SWWMCreditsEntry").Init("Amuscaria","$SWWM_ASSBARONS")); - cassets.Push(new("SWWMCreditsEntry").Init("Ryan Cordell","$SWWM_ASSOTHERS")); - cassets.Push(new("SWWMCreditsEntry").Init("Blox","$SWWM_ASSEXTRA")); - cassets.Push(new("SWWMCreditsEntry").Init("SiFi270","$SWWM_ASSKEEN")); - cassets.Push(new("SWWMCreditsEntry").Init("Nash","WidePix")); - cmusic.Push(new("SWWMCreditsEntry").Init("Teque","Traumatic State\nDragony\nHidden Tune #242\nHypercardish 1.1")); - cmusic.Push(new("SWWMCreditsEntry").Init("BouncyTEM","Solitary Apprehension")); - cvoice.Push(new("SWWMCreditsEntry").Init("Vyolette","$SWWM_VOICENAME_DEFAULT")); - cfanart.Push(new("SWWMCreditsEntry").Init("Substance20 (@S20TBL)")); - cfanart.Push(new("SWWMCreditsEntry").Init("Captain J (@Jho7835)")); - cfanart.Push(new("SWWMCreditsEntry").Init("Redead-ITA")); - cfanart.Push(new("SWWMCreditsEntry").Init("Sgt. Shivers (@Sgt_Shivers_)")); - cfanart.Push(new("SWWMCreditsEntry").Init("Moa Dixøn / Endie (@MoaDixon)")); - cfanart.Push(new("SWWMCreditsEntry").Init("Monsoon-Soft (@MonsoonSoft)")); - clocal.Push(new("SWWMCreditsEntry").Init("Marisa Kirisame","$SWWM_LOCES")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Snacks")); - cpatrons.Push(new("SWWMCreditsEntry").Init("john")); - cpatrons.Push(new("SWWMCreditsEntry").Init("FireFly")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Corey Hectus")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Dac")); - cpatrons.Push(new("SWWMCreditsEntry").Init("kevansevans")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Pietro Gagliardi")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Ryan Weatherman")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Xada Xephron")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Zard1084")); - cpatrons.Push(new("SWWMCreditsEntry").Init("John")); - cpatrons.Push(new("SWWMCreditsEntry").Init("VoanHead")); - cpatrons.Push(new("SWWMCreditsEntry").Init("NekoMithos")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Ceyne Taikato")); - cpatrons.Push(new("SWWMCreditsEntry").Init("bouncytem")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Brett Saltzer")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Clint Walker")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Figo")); - cpatrons.Push(new("SWWMCreditsEntry").Init("m8f")); - cpatrons.Push(new("SWWMCreditsEntry").Init("Namsan")); - cpatrons.Push(new("SWWMCreditsEntry").Init("YaGirlJuniper")); - cthanks.Push(new("SWWMCreditsEntry").Init("Marrub","$SWWM_CMAB2",Font.FindFontColor('Heliotrope'),Font.FindFontColor('BlushPink'))); - cthanks.Push(new("SWWMCreditsEntry").Init("KynikossDragonn","$SWWM_CDRAGON2")); - cthanks.Push(new("SWWMCreditsEntry").Init("Lucy","$SWWM_CLUCY2")); - cthanks.Push(new("SWWMCreditsEntry").Init("Gutawer","$SWWM_CGUTA2")); - cthanks.Push(new("SWWMCreditsEntry").Init("Mikolah","$SWWM_CMIKO2")); - cthanks.Push(new("SWWMCreditsEntry").Init("KeksDose","$SWWM_CKEKS2")); - cthanks.Push(new("SWWMCreditsEntry").Init("ZZYZX & Nash","$SWWM_CZN2")); - cthanks.Push(new("SWWMCreditsEntry").Init("Val Pal","$SWWM_CVAL2")); - cthanks.Push(new("SWWMCreditsEntry").Init("Kaffy Kathy","$SWWM_CKATHY2")); - cthanks.Push(new("SWWMCreditsEntry").Init("BouncyTEM","$SWWM_CBOUNCY2")); - cthanks.Push(new("SWWMCreditsEntry").Init("\ctCptSledge\c- & \cdBunray\c-","$SWWM_CSLEDGE2")); - cthanks.Push(new("SWWMCreditsEntry").Init("a1337spy","$SWWM_CSPY2")); - cthanks.Push(new("SWWMCreditsEntry").Init("$SWWM_CINSP1","$SWWM_CINSP2")); - cthanks.Push(new("SWWMCreditsEntry").Init("$SWWM_CCOMMUNITY1","$SWWM_CCOMMUNITY2")); - cthanks.Push(new("SWWMCreditsEntry").Init("$SWWM_CDEVS1","$SWWM_CDEVS2")); - cthanks.Push(new("SWWMCreditsEntry").Init("$SWWM_CYOU1","$SWWM_CYOU2")); + cdev.Push(new('SWWMCreditsEntry').Init("Mari the Deer","$SWWM_CDEV2",s:"graphics/Credits/MariSprite.png")); + cassets.Push(new('SWWMCreditsEntry').Init("Bethesda Game Studios","Fallout: New Vegas\nFallout 4")); + cassets.Push(new('SWWMCreditsEntry').Init("Epic Games","Unreal\nUnreal Tournament\nUnreal Tournament 2004\nUnreal Tournament 3")); + cassets.Push(new('SWWMCreditsEntry').Init("Ion Storm","Deus Ex")); + cassets.Push(new('SWWMCreditsEntry').Init("Looking Glass Studios","Thief\nSystem Shock 2")); + cassets.Push(new('SWWMCreditsEntry').Init("People Can Fly","Painkiller")); + cassets.Push(new('SWWMCreditsEntry').Init("Tripwire Interactive","Killing Floor")); + cassets.Push(new('SWWMCreditsEntry').Init("From Software","Dark Souls\nDark Souls II\nDark Souls III")); + cassets.Push(new('SWWMCreditsEntry').Init("SiFi270","$SWWM_ASSKEEN")); + cassets.Push(new('SWWMCreditsEntry').Init("Nash","WidePix")); + cmusic.Push(new('SWWMCreditsEntry').Init("Teque","Traumatic State\nDragony\nHidden Tune #242\nHypercardish 1.1")); + cmusic.Push(new('SWWMCreditsEntry').Init("BouncyTEM","Solitary Apprehension")); + cmusic.Push(new('SWWMCreditsEntry').Init("KynikossDragonn","Credits Theme")); + cvoice.Push(new('SWWMCreditsEntry').Init("Vyolette","$T_DEMOLITIONIST")); + clocal.Push(new('SWWMCreditsEntry').Init("Mari the Deer","$SWWM_LOCES")); + cpatrons.Push(new('SWWMCreditsEntry').Init("Bean")); + cpatrons.Push(new('SWWMCreditsEntry').Init("Snacks")); + cpatrons.Push(new('SWWMCreditsEntry').Init("bouncytem")); + cpatrons.Push(new('SWWMCreditsEntry').Init("Fantasmita")); + cpatrons.Push(new('SWWMCreditsEntry').Init("Pietro Gagliardi")); + cpatrons.Push(new('SWWMCreditsEntry').Init("NekoMithos")); + cpatrons.Push(new('SWWMCreditsEntry').Init("Antlason Widowz")); + cpatrons.Push(new('SWWMCreditsEntry').Init("YaGirlJuniper")); + cthanks.Push(new('SWWMCreditsEntry').Init("KynikossDragonn","$SWWM_CDRAGON2")); + cthanks.Push(new('SWWMCreditsEntry').Init("Vyolette","$SWWM_CVYOLETTE2")); + cthanks.Push(new('SWWMCreditsEntry').Init("Lucy","$SWWM_CLUCY2")); + cthanks.Push(new('SWWMCreditsEntry').Init("Mikolah","$SWWM_CMIKO2")); + cthanks.Push(new('SWWMCreditsEntry').Init("KeksDose","$SWWM_CKEKS2")); + cthanks.Push(new('SWWMCreditsEntry').Init("ZZYZX & Nash","$SWWM_CZN2")); + cthanks.Push(new('SWWMCreditsEntry').Init("BouncyTEM","$SWWM_CBOUNCY2")); + cthanks.Push(new('SWWMCreditsEntry').Init("a1337spy","$SWWM_CSPY2")); + cthanks.Push(new('SWWMCreditsEntry').Init("\ctCptSledge\c- & \cdBunray\c-","$SWWM_CSLEDGE2")); + cthanks.Push(new('SWWMCreditsEntry').Init("$SWWM_CINSP1","$SWWM_CINSP2")); + cthanks.Push(new('SWWMCreditsEntry').Init("$SWWM_CCOMMUNITY1","$SWWM_CCOMMUNITY2")); + cthanks.Push(new('SWWMCreditsEntry').Init("$SWWM_CYOU1","$SWWM_CYOU2")); speed = 16.; spos = ss.y-logosz.y; // calc total height theight = int(logosz.y); - theight += 8*(SECTION_PAD+bigfont.GetHeight()); - for ( int i=0; i ss.y) ) return logosz.y; - if ( swwm_oldlogo ) Screen.DrawTexture(logo,true,x-logosz.x/2,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - else Screen.DrawTexture(logo,true,x-logosz.x/2,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ScaleX,(2./3.),DTA_ScaleY,(2./3.)); - Screen.DrawText(smallfont,Font.CR_SAPPHIRE,x-smallfont.StringWidth(stitle)/2,y+(logosz.y-28),stitle,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawTexture(logo,true,x-logosz.x/2,y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ScaleX,(2./3.),DTA_ScaleY,(2./3.)); + Screen.DrawText(mSmallFont,Font.CR_SAPPHIRE,x-mSmallFont.StringWidth(stitle)/2,y+(logosz.y-28),stitle,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); // underline - int w = max(smallfont.StringWidth(stitle),smallfont.StringWidth(stitle2)); + int w = max(mSmallFont.StringWidth(stitle),mSmallFont.StringWidth(stitle2)); int cw = int(ceil((w+8)/6.))*6; double xx = x-cw/2; for ( int i=0; i ss.y) ) return bigfont.GetHeight(); - Screen.DrawText(bigfont,Font.CR_BLUE,x-bigfont.StringWidth(txt)/2,y,txt,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - return bigfont.GetHeight(); + if ( (y+mBigFont.GetHeight()*2 < 0) || (y > ss.y) ) return mBigFont.GetHeight()*2; + Screen.DrawText(mBigFont,Font.CR_BLUE,x-mBigFont.StringWidth(txt),y,txt,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ScaleX,2,DTA_ScaleY,2); + return mBigFont.GetHeight()*2; } override void Drawer() { @@ -301,76 +259,68 @@ Class SWWMCreditsMenu : GenericMenu Vector2 vsize = (Screen.GetWidth(),Screen.GetHeight())/zoom; Screen.DrawTexture(bgtex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(192,0,0,0),DTA_Alpha,.8); } - else Screen.Dim("Black",.8,0,0,Screen.GetWidth(),Screen.GetHeight()); + else Screen.Dim(0xFF000000,.8,0,0,Screen.GetWidth(),Screen.GetHeight()); Super.Drawer(); UpdateSize(); // logo - double yy = spos; + double yy = spos-((speed*System.GetTimeFrac())/GameTicRate); double xx = ss.x/2.; yy += DrawLogo(xx,yy); // developer yy += SECTION_PAD; yy += DrawSection(xx,yy,sdev); - for ( int i=0; i ss.y ) spos = -theight; - cdev[0].Ticker(); } override bool TranslateKeyboardEvents() { diff --git a/zscript/menu/swwm_help.zsc b/zscript/menu/swwm_help.zsc index 87b185da5..941e201ef 100644 --- a/zscript/menu/swwm_help.zsc +++ b/zscript/menu/swwm_help.zsc @@ -7,6 +7,7 @@ Class SWWMHelpMenu : GenericMenu TextureID bgtex; bool isrclick; int pagedir; + Font mSmallFont, mSmallFont2; enum EHelpPage { @@ -27,49 +28,53 @@ Class SWWMHelpMenu : GenericMenu override void Init( Menu parent ) { Super.Init(parent); + Animated = true; curpage = 0; prevpage = -1; - fadetic = gametic; + fadetic = MenuTime(); pagedir = 0; - bgtex = TexMan.CheckForTexture("graphics/tempbg.png",TexMan.Type_Any); + bgtex = TexMan.CheckForTexture("graphics/tempbg.png"); + mSmallFont = Font.GetFont('TewiFont'); + mSmallFont2 = Font.GetFont('TewiFontOutline'); + int cropwidth = 584; for ( int i=0; i= NUM_HELP_PAGES) ) @@ -172,7 +177,7 @@ Class SWWMHelpMenu : GenericMenu let hdr = pagehdr[page]; let l = pagetxt[page]; lh = l.Count()*h; - Screen.DrawText(smallfont,Font.CR_FIRE,xofs+(Screen.GetWidth()-smallfont.StringWidth(hdr)*CleanXFac_1)/2,(Screen.GetHeight()-(h*3+lh)*CleanYFac_1)/2,hdr,DTA_CleanNoMove_1,true,DTA_Alpha,alpha); + Screen.DrawText(mSmallFont2,Font.CR_FIRE,xofs+(Screen.GetWidth()-mSmallFont2.StringWidth(hdr)*hs)/2,(Screen.GetHeight()-(h*3+lh)*hs)/2,hdr,DTA_ScaleX,hs,DTA_ScaleY,hs,DTA_Alpha,alpha); for ( int i=0; i= 1.) ) DrawPage(curpage); + else Screen.Dim(0xFF000000,.8,0,0,Screen.GetWidth(),Screen.GetHeight()); + double alph = clamp(((MenuTime()+System.GetTimeFrac())-fadetic)*(5./GameTicRate),0.,1.); + double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + if ( (prevpage == -1) || (alph >= 1.) ) DrawPage(curpage,hs); else { - DrawPage(prevpage,-(pagedir*alph*32)*CleanXFac_1,(1.-alph)**3); - DrawPage(curpage,(pagedir*(1.-alph)*32)*CleanXFac_1,alph**3); + DrawPage(prevpage,hs,-(pagedir*alph*32)*hs,(1.-alph)**3); + DrawPage(curpage,hs,(pagedir*(1.-alph)*32)*hs,alph**3); } - int h = smallfont.GetHeight(); - double y = Screen.GetHeight()/2-(h*2)*CleanYFac_1; + int h = mSmallFont.GetHeight(); + double y = Screen.GetHeight()/2-(h*2)*hs; for ( int i=0; i<4; i++ ) { if ( curpage > 0 ) - Screen.DrawText(smallfont,Font.CR_GOLD,12*CleanXFac_1,y,"<",DTA_CleanNoMove_1,true); + Screen.DrawText(mSmallFont,Font.CR_GOLD,12*hs,y,"<",DTA_ScaleX,hs,DTA_ScaleY,hs); if ( curpage < NUM_HELP_PAGES-1 ) - Screen.DrawText(smallfont,Font.CR_GOLD,Screen.GetWidth()-18*CleanXFac_1,y,">",DTA_CleanNoMove_1,true); - y += h*CleanYFac_1; + Screen.DrawText(mSmallFont,Font.CR_GOLD,Screen.GetWidth()-18*hs,y,">",DTA_ScaleX,hs,DTA_ScaleY,hs); + y += h*hs; } Super.Drawer(); } diff --git a/zscript/menu/swwm_inter.zsc b/zscript/menu/swwm_inter.zsc index 565cf0cad..378fa2af2 100644 --- a/zscript/menu/swwm_inter.zsc +++ b/zscript/menu/swwm_inter.zsc @@ -1,314 +1,455 @@ // Custom intermission screens -Class SWWMStatScreenData : Thinker +Class SWWMStatScreen : StatusScreen { - // to prevent repetition - Array lasttip, lastart; -} - -Class SWWMStatScreen : StatusScreen abstract -{ - transient TextureID bgtex, arttex; + TextureID frametex, arttex, bgtex; + int glarestr, sndcnt; int whichart, whichtip; - double hs, hs2; - Vector2 ss, ss2, origin, origin2; - double bgfade; + int tipalphastate; + double tipalpha; String tipstr; transient BrokenLines tipl; + Font TewiFont, TewiFontOutline, MiniwiFont; + double FracTic; // for smooth animations + bool bNoDrawNextLoc; + int tipflash; // for switching + int tipheight; // total height of tip box w/ padding + int mtipheight; // precalculated on start, minimum tip height to always + // shift up for + int topheight; // precalculated on start, maximum potential height of + // level finished + stats + entering level w/ padding + // + // both of these are used to "shift up" the top + // elements in case they could overlap with the tip box + + // customizable colors + int lnamecolor, lauthcolor; // name / author text + int lsubcolor; // finished / entering text + int statbasecolor, statcolor0, // stat label / color for numbers + statcolor1, statcolor2; // color for 100% / color for SUCKS + int tipcolor0, tipcolor1; // tip header / tip text + Color glarecolor; // for the eye glare when advancing + int flashcolor, tipflashcolor; + + int hs, oldhs, oldwidth; + double bgfade; + bool bFade; + + SWWMStaticHandler shnd; override void Start( wbstartstruct wbstartstruct ) { Super.Start(wbstartstruct); - // support for old author text style - int iof = lnametexts[0].IndexOf(" - by: "); - if ( iof != -1 ) + TewiFont = Font.GetFont('TewiFont'); + TewiFontOutline = Font.GetFont('TewiFontOutline'); + MiniwiFont = Font.GetFont('MiniwiFont'); + int iof; + for ( int i=0; i<=1; i++ ) { - authortexts[0] = lnametexts[0].Mid(iof+7); - lnametexts[0].Truncate(iof); - } - iof = lnametexts[1].IndexOf(" - by: "); - if ( iof != -1 ) - { - authortexts[1] = lnametexts[1].Mid(iof+7); - lnametexts[1].Truncate(iof); + // level name may contain trailing whitespace due to DEHACKED nonsense, so strip it + lnametexts[i].StripRight(); + if ( authortexts[i] != "" ) continue; + // support for old author text style + if ( (iof = lnametexts[i].RightIndexOf(" - by: ")) != -1 ) // 20 heretics, spooktober + { + authortexts[i] = lnametexts[i].Mid(iof+7); + lnametexts[i].Truncate(iof); + } + else if ( (iof = lnametexts[i].RightIndexOf(" - by ")) != -1 ) // variation seen in DOOMIUM + { + authortexts[i] = lnametexts[i].Mid(iof+6); + lnametexts[i].Truncate(iof); + } + else if ( (iof = lnametexts[i].RightIndexOf(" - ")) != -1 ) // hexmas and many others (may cause false positives?) + { + authortexts[i] = lnametexts[i].Mid(iof+3); + lnametexts[i].Truncate(iof); + } } + tipalpha = -1.; + hs = CleanXFac_1; + oldhs = hs; + oldwidth = Screen.GetWidth(); + int statheight = TewiFont.GetHeight()*(8+(!!wbs.partime)+(wbs.totaltime!=Plrs[me].stime))+32; + int lfheight = (authortexts[0]!="")?(MiniwiFont.GetHeight()+TewiFont.GetHeight()*2+TewiFontOutline.GetHeight()*2):(TewiFont.GetHeight()*2+TewiFontOutline.GetHeight()*2); + int elheight = (wbs.next=="")?0:((authortexts[1]!="")?(MiniwiFont.GetHeight()+TewiFont.GetHeight()*2+TewiFontOutline.GetHeight()*2):(TewiFont.GetHeight()*2+TewiFontOutline.GetHeight()*2)); + topheight = (statheight+lfheight+elheight); + mtipheight = (5*TewiFont.GetHeight()+32); // tips don't generally go past 5 lines in height + // defaults + lnamecolor = Font.CR_WHITE; + lauthcolor = Font.CR_DARKGRAY; + lsubcolor = Font.CR_SAPPHIRE; + statbasecolor = Font.CR_SAPPHIRE; + statcolor0 = Font.CR_WHITE; + statcolor1 = Font.CR_GOLD; + statcolor2 = Font.CR_RED; + tipcolor0 = Font.CR_SAPPHIRE; + tipcolor1 = Font.CR_WHITE; + flashcolor = Font.FindFontColor('MiniFlash'); + tipflashcolor = Font.FindFontColor('MiniWhiteFlash'); + glarecolor = 0xFF4080FF; } override void StartMusic() { - if ( swwm_intermusic ) Level.SetInterMusic(wbs.next); - else S_ChangeMusic("music/DRAGONY.XM"); + S_ChangeMusic("music/DRAGONY.XM"); } + + private String StatCnt( int a, int b ) + { + if ( b <= 0 ) return "N/A"; + return String.Format("%s \cu/\c- %s \cu(\c-%3d%%\cu)",SWWMUtility.ThousandsNum(max(a,0)),SWWMUtility.ThousandsNum(b),GetPct(a,b)); + } + + private String TimeStr( int secs ) + { + secs = max(secs,0); + int h = secs/3600; + int m = (secs/60)%60; + int s = secs%60; + if ( h ) return String.Format("%02d\cu:\c-%02d\cu:\c-%02d",h,m,s); + return String.Format("%02d\cu:\c-%02d",m,s); + } + + private int GetPct( int a, int b ) + { + if ( a < 0 ) return 0; + if ( b <= 0 ) return 100; // for "missed" percentage + return (a*100)/b; + } + + // recycled KBase code, heh + private void DrawBox( double x, double y, double w, double h, double intp = 1. ) + { + if ( !frametex ) frametex = TexMan.CheckForTexture("graphics/KBase/FrameTex.png"); + double xfact = clamp(intp*2.,0.,1.)**2.; + double yfact = clamp(intp,0.,1.)**5.; + int rw = int(SWWMUtility.Lerp(-10*hs,w,xfact)); + int rh = int(SWWMUtility.Lerp(-5*hs,h,yfact)); + if ( intp <= 0. ) return; + int rx = int(x+(w-rw)/2); + int ry = int(y+(h-rh)/2); + // dim padding + rx -= 4*hs; + ry -= 2*hs; + rw += 8*hs; + rh += 4*hs; + Screen.Dim(0xFF000000,.8,rx,ry,rw,rh); + // border outside + rx -= hs; + ry -= hs; + rw += 2*hs; + rh += 2*hs; + Screen.DrawTexture(FrameTex,false,rx,ry,DTA_SrcX,0.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,hs,DTA_DestHeight,hs); + if ( rw > 2*hs ) Screen.DrawTexture(FrameTex,false,rx+hs,ry,DTA_SrcX,1.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,rw-2*hs,DTA_DestHeight,hs); + if ( rh > 2*hs ) Screen.DrawTexture(FrameTex,false,rx,ry+hs,DTA_SrcX,0.,DTA_SrcY,1.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,hs,DTA_DestHeight,rh-2*hs); + Screen.DrawTexture(FrameTex,false,(rx+rw)-hs,ry,DTA_SrcX,2.,DTA_SrcY,0.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,hs,DTA_DestHeight,hs); + Screen.DrawTexture(FrameTex,false,rx,(ry+rh)-hs,DTA_SrcX,0.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,1.,DTA_DestWidth,hs,DTA_DestHeight,hs); + if ( rh > 2*hs ) Screen.DrawTexture(FrameTex,false,(rx+rw)-hs,ry+hs,DTA_SrcX,2.,DTA_SrcY,1.,DTA_SrcWidth,2.,DTA_SrcHeight,1.,DTA_DestWidth,2*hs,DTA_DestHeight,rh-2*hs); + if ( rw > 2*hs ) Screen.DrawTexture(FrameTex,false,rx+hs,(ry+rh)-hs,DTA_SrcX,1.,DTA_SrcY,2.,DTA_SrcWidth,1.,DTA_SrcHeight,2.,DTA_DestWidth,rw-2*hs,DTA_DestHeight,2*hs); + Screen.DrawTexture(FrameTex,false,(rx+rw)-hs,(ry+rh)-hs,DTA_SrcX,2.,DTA_SrcY,2.,DTA_SrcWidth,2.,DTA_SrcHeight,2.,DTA_DestWidth,2*hs,DTA_DestHeight,2*hs); + } + + override int DrawLF() + { + if ( sp_state < 1 ) return 0; + double GameSecs = (bcnt+FracTic)/double(GameTicRate); + int th = (TewiFont.GetHeight()*(8+(!!wbs.partime)+(wbs.totaltime!=Plrs[me].stime))+32)*hs; // height of the stats box + margin + int bh = ((authortexts[0]!="")?(MiniwiFont.GetHeight()+TewiFont.GetHeight()*2+TewiFontOutline.GetHeight()*2):(TewiFont.GetHeight()*2+TewiFontOutline.GetHeight()*2))*hs; // height of the "level finished" box + double xx = Screen.GetWidth()/2; + double yy = (Screen.GetHeight()-th)/2; + // shift up if we overlap w/ tip box + int tipyy = Screen.GetHeight()-max(tipheight,mtipheight)*hs; + int topyy = (Screen.GetHeight()+topheight*hs)/2; + if ( topyy > tipyy ) + { + // upshift to fit tips + yy -= topyy-tipyy; + } + yy -= bh; + String str = StringTable.Localize("$SWWM_INTERDONE"); + int bw = max(TewiFont.StringWidth(lnametexts[0])*2,TewiFontOutline.StringWidth(str)*2); + if ( authortexts[0] != "" ) bw = max(bw,MiniwiFont.StringWidth(authortexts[0])); + bw += 4; + bw *= hs; + DrawBox(xx-bw/2,yy,bw,bh); + Screen.DrawText(TewiFont,lnamecolor,xx-TewiFont.StringWidth(lnametexts[0])*hs,yy,lnametexts[0],DTA_ScaleX,hs*2,DTA_ScaleY,hs*2); + yy += TewiFont.GetHeight()*2*hs; + if ( authortexts[0] != "" ) + { + Screen.DrawText(MiniwiFont,lauthcolor,xx-MiniwiFont.StringWidth(authortexts[0])*hs/2,yy,authortexts[0],DTA_ScaleX,hs,DTA_ScaleY,hs); + yy += MiniwiFont.GetHeight()*hs; + } + Screen.DrawText(TewiFontOutline,lsubcolor,xx-TewiFontOutline.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs*2,DTA_ScaleY,hs*2); + if ( (glarestr > 0) && (sp_state < 2) ) + { + double alf = clamp((glarestr-FracTic)/20.,0.,1.)**2; + Screen.DrawText(TewiFontOutline,flashcolor,xx-TewiFontOutline.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs*2,DTA_ScaleY,hs*2,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alf); + } + return 0; + } + override void DrawEL() + { + int th = (TewiFont.GetHeight()*(8+(!!wbs.partime)+(wbs.totaltime!=Plrs[me].stime))+32)*hs; // height of the stats box + margin + int bh = ((authortexts[1]!="")?(MiniwiFont.GetHeight()+TewiFont.GetHeight()*2+TewiFontOutline.GetHeight()*2):(TewiFont.GetHeight()*2+TewiFontOutline.GetHeight()*2))*hs; // height of the "level finished" box + double xx = Screen.GetWidth()/2; + double yy = (Screen.GetHeight()+th)/2; + // shift up if we overlap w/ tip box + int tipyy = Screen.GetHeight()-max(tipheight,mtipheight)*hs; + int topyy = (Screen.GetHeight()+topheight*hs)/2; + if ( topyy > tipyy ) + { + // upshift to fit tips + yy -= topyy-tipyy; + } + String str = StringTable.Localize("$SWWM_INTERNEXT"); + int bw = max(TewiFont.StringWidth(lnametexts[1])*2,TewiFontOutline.StringWidth(str)*2); + if ( authortexts[1] != "" ) bw = max(bw,MiniwiFont.StringWidth(authortexts[1])); + bw += 4; + bw *= hs; + DrawBox(xx-bw/2,yy,bw,bh); + Screen.DrawText(TewiFontOutline,lsubcolor,xx-TewiFontOutline.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs*2,DTA_ScaleY,hs*2); + if ( (glarestr > 0) && (sp_state >= 10) ) + { + double alf = clamp((glarestr-FracTic)/20.,0.,1.)**2; + Screen.DrawText(TewiFontOutline,flashcolor,xx-TewiFontOutline.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs*2,DTA_ScaleY,hs*2,DTA_LegacyRenderStyle,STYLE_Add,DTA_Alpha,alf); + } + yy += TewiFontOutline.GetHeight()*2*hs; + Screen.DrawText(TewiFont,lnamecolor,xx-TewiFont.StringWidth(lnametexts[1])*hs,yy,lnametexts[1],DTA_ScaleX,hs*2,DTA_ScaleY,hs*2); + yy += TewiFont.GetHeight()*2*hs; + if ( authortexts[0] == "" ) return; + Screen.DrawText(MiniwiFont,lauthcolor,xx-MiniwiFont.StringWidth(authortexts[1])*hs/2,yy,authortexts[1],DTA_ScaleX,hs,DTA_ScaleY,hs); + } + override void drawStats( void ) + { + if ( sp_state < 2 ) return; + int ne = (sp_state>=8)?(8+(!!wbs.partime)+(wbs.totaltime!=Plrs[me].stime)):(sp_state>=6)?6:(sp_state>=4)?4:2; + int th = (TewiFont.GetHeight()*ne)*hs; // height of the stats box + double xx = Screen.GetWidth()/2; + double yy = (Screen.GetHeight()-th)/2; + // shift up if we overlap w/ tip box + int tipyy = Screen.GetHeight()-max(tipheight,mtipheight)*hs; + int topyy = (Screen.GetHeight()+topheight*hs)/2; + if ( topyy > tipyy ) + { + // upshift to fit tips + yy -= topyy-tipyy; + } + DrawBox(xx-80.*hs,yy,160.*hs,th); + String str = StringTable.Localize("$SWWM_INTERKILLS"); + Screen.DrawText(TewiFont,statbasecolor,xx-80*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + yy += TewiFont.GetHeight()*hs; + str = StatCnt(cnt_kills[0],wbs.maxkills); + Screen.DrawText(TewiFont,((wbs.maxkills>0)&&(cnt_kills[0]>=wbs.maxkills))?statcolor1:statcolor0,xx+80*hs-TewiFont.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + if ( sp_state < 4 ) return; + yy += TewiFont.GetHeight()*hs; + str = StringTable.Localize("$SWWM_INTERITEMS"); + Screen.DrawText(TewiFont,statbasecolor,xx-80*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + yy += TewiFont.GetHeight()*hs; + str = StatCnt(cnt_items[0],wbs.maxitems); + Screen.DrawText(TewiFont,((wbs.maxitems>0)&&(cnt_items[0]>=wbs.maxitems))?statcolor1:statcolor0,xx+80*hs-TewiFont.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + if ( sp_state < 6 ) return; + yy += TewiFont.GetHeight()*hs; + str = StringTable.Localize("$SWWM_INTERSECRETS"); + Screen.DrawText(TewiFont,statbasecolor,xx-80*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + yy += TewiFont.GetHeight()*hs; + str = StatCnt(cnt_secret[0],wbs.maxsecret); + Screen.DrawText(TewiFont,((wbs.maxsecret>0)&&(cnt_secret[0]>=wbs.maxsecret))?statcolor1:statcolor0,xx+80*hs-TewiFont.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + if ( sp_state < 8 ) return; + yy += TewiFont.GetHeight()*hs; + str = "┈┈┄┄╌╌────╌╌┄┄┈┈"; + Screen.DrawText(TewiFont,statbasecolor,xx-TewiFont.StringWidth(str)*hs/2,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + yy += TewiFont.GetHeight()*hs; + str = StringTable.Localize("$SWWM_INTERTIME"); + Screen.DrawText(TewiFont,statbasecolor,xx-80*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + str = TimeStr(max(cnt_time,0)); + Screen.DrawText(TewiFont,(wbs.partime&&(cnt_time<=(wbs.partime/GameTicRate)))?statcolor1:((wbs.sucktime>0)&&(cnt_time>(wbs.sucktime*3600)))?statcolor2:statcolor0,xx+80*hs-TewiFont.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + if ( wbs.partime ) + { + yy += TewiFont.GetHeight()*hs; + str = StringTable.Localize("$SWWM_INTERPAR"); + Screen.DrawText(TewiFont,statbasecolor,xx-80*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + str = TimeStr(max(cnt_par,0)); + Screen.DrawText(TewiFont,statcolor0,xx+80*hs-TewiFont.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + } + if ( wbs.totaltime == Plrs[me].stime ) return; + yy += TewiFont.GetHeight()*hs; + str = StringTable.Localize("$SWWM_INTERTOTAL"); + Screen.DrawText(TewiFont,statbasecolor,xx-80*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + str = TimeStr(max(cnt_total_time,0)); + Screen.DrawText(TewiFont,statcolor0,xx+80*hs-TewiFont.StringWidth(str)*hs,yy,str,DTA_ScaleX,hs,DTA_ScaleY,hs); + } + private void drawSWWMBg() { - let pdata = SWWMStatScreenData(ThinkerIterator.Create("SWWMStatScreenData",Thinker.STAT_STATIC).Next()); - if ( !pdata ) + if ( !shnd ) shnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); + if ( !whichart ) { - pdata = new("SWWMStatScreenData"); - pdata.ChangeStatNum(Thinker.STAT_STATIC); - } - if ( !whichart && swwm_interart ) - { - int no = StringTable.Localize("$SWWM_NFANART").ToInt(); + int no = StringTable.Localize("$SWWM_NRENDER").ToInt(); Array ents; ents.Clear(); int rno = 0; for ( int i=1; i<=no; i++ ) { - if ( (swwm_interart == 2) && (StringTable.Localize("$SWWM_FANART"..i).Left(6) == "Marisa") ) - continue; - else if ( (swwm_interart == 3) && (StringTable.Localize("$SWWM_FANART"..i).Left(6) != "Marisa") ) - continue; ents.Push(i); rno++; } no = rno; - if ( pdata.lastart.Size() >= no ) + if ( shnd.lastart.Size() >= no ) { // exclude last one, start over - int excludeme = pdata.lastart[pdata.lastart.Size()-1]; + int excludeme = shnd.lastart[shnd.lastart.Size()-1]; ents.Delete(excludeme-1); - pdata.lastart.Clear(); + shnd.lastart.Clear(); } else { - for ( int i=0; i ar ) vsize = (tsize.y*ar,tsize.y); - else if ( sar < ar ) vsize = (tsize.x,tsize.x/ar); - else vsize = tsize; - Screen.DrawTexture(bgtex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true); - } + Screen.Clear(0,0,Screen.GetWidth(),Screen.GetHeight(),0xFF000000); // background pics if ( whichart ) { - String artstr = StringTable.Localize(String.Format("$SWWM_FANART%d",whichart)); - int semic = artstr.IndexOf(";"); - if ( !arttex ) arttex = TexMan.CheckForTexture(String.Format("graphics/Fanart/%s",(semic==-1)?artstr:artstr.Left(semic)),TexMan.Type_MiscPatch); + String artstr = StringTable.Localize(String.Format("$SWWM_RENDER%d",whichart)); + if ( !arttex ) arttex = TexMan.CheckForTexture("graphics/Renders/"..artstr); tsize = TexMan.GetScaledSize(arttex); sar = tsize.x/tsize.y; if ( sar > ar ) vsize = (tsize.y*ar,tsize.y); else if ( sar < ar ) vsize = (tsize.x,tsize.x/ar); else vsize = tsize; Screen.DrawTexture(arttex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true); - if ( semic != -1 ) - { - String bstr = String.Format("\cx%s\c- %s",StringTable.Localize("$SWWM_FANART"),artstr.Mid(semic+1)); - int len = smallfont.StringWidth(bstr); - int bw = int((len+8)*hs), bh = int((smallfont.GetHeight()+4)*hs); - Screen.Dim("Black",.8,Screen.GetWidth()-bw,Screen.GetHeight()-bh,bw,bh); - Screen.DrawText(smallfont,Font.CR_GOLD,ss.x-(len+4),ss.y-(smallfont.GetHeight()+2),bstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } } + } + private void drawSWWMFg() + { + if ( !shnd ) shnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); // intermission tips at the bottom if ( !whichtip ) { int maxtip = StringTable.Localize("$SWWM_NINTERTIP").ToInt(); Array ents; ents.Clear(); - for ( int i=1; i<=maxtip; i++ ) - { - // skip DLC tips for now - if ( (i >= 59) && (i <= 68) ) continue; - ents.Push(i); - } - // account for skipped dlc tips (important, will crash otherwise) - maxtip -= 10; - if ( pdata.lasttip.Size() >= maxtip ) + for ( int i=1; i<=maxtip; i++ ) ents.Push(i); + if ( shnd.lasttip.Size() >= maxtip ) { // exclude last one, start over - int excludeme = pdata.lasttip[pdata.lasttip.Size()-1]; + int excludeme = shnd.lasttip[shnd.lasttip.Size()-1]; ents.Delete(excludeme-1); - pdata.lasttip.Clear(); + shnd.lasttip.Clear(); } else { - for ( int i=0; i lw ) lw = tipl.StringWidth(i); - int bw = int((lw+12)*hs), bh = int((smallfont.GetHeight()*tipl.Count()+8)*hs); - double xx = 8, yy = (ss.y-8)-(smallfont.GetHeight()*tipl.Count()); - Screen.Dim("Black",.8,int((xx-4)*hs),int((yy-4)*hs),bw,bh); + double xx = (Screen.GetWidth()-lw*hs)/2; + double yy = Screen.GetHeight()-(tipheight-16)*hs; + double alph; + if ( tipflash && (gametic < tipflash) ) alph = max((tipflash-(gametic+fractic))/25.,0.)**1.5; + xx -= 8*hs; + DrawBox(xx,yy,(lw+16)*hs,tipl.Count()*TewiFont.GetHeight()*hs,alf); + if ( alf < 1. ) return; for ( int i=0; i0); - Screen.Dim("Black",.8,int((Screen.GetWidth()-dimlen)/2.),int(4*hs2),dimlen,int((smallfont.GetHeight()+(auth?2:4))*hs2)); - Screen.DrawText(smallfont,Font.CR_GREEN,int((ss2.x-len[0])/2.),6,lnametexts[0],DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - double foy = smallfont.GetHeight()+(auth?6:8); - if ( auth ) - { - double oy = foy*(hs2/hs); - Screen.Dim("Black",.8,int((Screen.GetWidth()-dimlen)/2.),int(oy*hs),dimlen,int((smallfont.GetHeight()+2)*hs)); - Screen.DrawText(smallfont,Font.CR_WHITE,int((ss.x-len[1])/2.),oy,authortexts[0],DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - foy += (smallfont.GetHeight()+2)*(hs/hs2); - } - foy += 4.; - String str = StringTable.Localize("$WI_FINISHED"); - len[0] = smallfont.StringWidth(str); - Screen.Dim("Black",.8,int((ss2.x-len[0]-8)/2*hs2),int(foy*hs2),int((len[0]+8)*hs2),int((smallfont.GetHeight()+4)*hs2)); - Screen.DrawText(smallfont,Font.CR_FIRE,int((ss2.x-len[0])/2.),foy+2,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - // return not used - return 0; - } - override void DrawEL() - { - String str = StringTable.Localize("$WI_ENTERING"); - // remove trailing colon (usually appearing on Heretic) - if ( str.RightIndexOf(":") == (str.length()-1) ) str.Truncate(str.length()-1); - int len[2]; - len[0] = smallfont.StringWidth(str); - Screen.Dim("Black",.8,int((ss2.x-len[0]-8)/2*hs2),int(4*hs2),int((len[0]+8)*hs2),int((smallfont.GetHeight()+4)*hs2)); - Screen.DrawText(smallfont,Font.CR_FIRE,int((ss2.x-len[0])/2.),6,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - double foy = smallfont.GetHeight()+12; - len[0] = smallfont.StringWidth(lnametexts[1]); - len[1] = smallfont.StringWidth(authortexts[1]); - int dimlen = max(int((len[0]+8)*hs2),int((len[1]+8)*hs)); - bool auth = (authortexts[1].Length()>0); - Screen.Dim("Black",.8,int((Screen.GetWidth()-dimlen)/2.),int(foy*hs2),dimlen,int((smallfont.GetHeight()+(auth?2:4))*hs2)); - Screen.DrawText(smallfont,Font.CR_GREEN,int((ss2.x-len[0])/2.),foy+2,lnametexts[1],DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - if ( auth ) - { - double oy = (foy+smallfont.GetHeight()+2)*(hs2/hs); - Screen.Dim("Black",.8,int((Screen.GetWidth()-dimlen)/2.),int(oy*hs),dimlen,int((smallfont.GetHeight()+2)*hs)); - Screen.DrawText(smallfont,Font.CR_WHITE,int((ss.x-len[1])/2.),oy,authortexts[1],DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - } - override void drawShowNextLoc( void ) - { - drawSWWMBg(); - drawEL(); - } + override void Drawer( void ) { - hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/400.)),1.); - hs2 = max(min(floor(Screen.GetWidth()/320.),floor(Screen.GetHeight()/200.)),1.); - ss = (Screen.GetWidth(),Screen.GetHeight())/hs; - ss2 = (Screen.GetWidth(),Screen.GetHeight())/hs2; - origin = (ss.x-640,ss.y-400)/2.; - origin2 = (ss2.x-320,ss2.y-200)/2.; switch ( CurState ) { case StatCount: drawSWWMBg(); + drawSWWMFg(); + drawLF(); drawStats(); break; case ShowNextLoc: + case NoState: case LeavingIntermission: - drawShowNextLoc(); - break; - break; - default: - drawNoState(); + drawSWWMBg(); + drawSWWMFg(); + drawLF(); + drawStats(); + if ( !bNoDrawNextLoc ) drawEL(); break; } - if ( bgfade <= 0. ) return; - // redraw bgs on top, hiding the rest of the ui - if ( whichart ) - { - double ar = Screen.GetAspectRatio(); - Vector2 tsize = TexMan.GetScaledSize(arttex); - double sar = tsize.x/tsize.y; - Vector2 vsize; - if ( sar > ar ) vsize = (tsize.y*ar,tsize.y); - else if ( sar < ar ) vsize = (tsize.x,tsize.x/ar); - else vsize = tsize; - Screen.DrawTexture(arttex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,bgfade); - } - else - { - double ar = Screen.GetAspectRatio(); - Vector2 tsize = TexMan.GetScaledSize(bgtex); - double sar = tsize.x/tsize.y; - Vector2 vsize; - if ( sar > ar ) vsize = (tsize.y*ar,tsize.y); - else if ( sar < ar ) vsize = (tsize.x,tsize.x/ar); - else vsize = tsize; - Screen.DrawTexture(bgtex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,bgfade); - } + if ( (bgfade <= 0.) || !arttex ) return; + double alph = bgfade; + if ( bFade ) alph = min(1.,bgfade+(3.*FracTic)/GameTicRate); + else alph = max(0.,bgfade-(4.*FracTic)/GameTicRate); + // redraw BG on top, hiding the rest of the ui + double ar = Screen.GetAspectRatio(); + Vector2 tsize = TexMan.GetScaledSize(arttex); + double sar = tsize.x/tsize.y; + Vector2 vsize; + if ( sar > ar ) vsize = (tsize.y*ar,tsize.y); + else if ( sar < ar ) vsize = (tsize.x,tsize.x/ar); + else vsize = tsize; + Screen.DrawTexture(arttex,false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alph); } - protected void checkForAccelerateNew( void ) + override void Draw( double smoothratio ) { - // check for button presses to skip delays (but only recognize fire/use buttons) - for ( int i=0; i < MAXPLAYERS; i++ ) - { - if ( !playeringame[i] ) continue; - PlayerInfo p = players[i]; - if ( (p.cmd.buttons^p.oldbuttons) && ((p.cmd.buttons&p.oldbuttons) == p.oldbuttons) && !p.Bot ) - { - if ( p.cmd.buttons&(BT_ATTACK|BT_USE) ) - { - acceleratestage = 1; - playerready[i] = true; - } - if ( p.cmd.buttons&BT_RELOAD ) - { - if ( !swwm_nointertips ) PlaySound("menu/demoscroll"); - whichtip = 0; - } - if ( p.cmd.buttons&BT_ZOOM ) - { - if ( swwm_interart ) PlaySound("menu/demoscroll"); - whichart = 0; - arttex.SetNull(); - } - } - p.oldbuttons = p.buttons; - } + FracTic = smoothratio; + // calculate scale factor (based mostly around 400px height) + hs = max(1,int(floor(Screen.GetHeight()/400.))); + Drawer(); + if ( glarestr > 0 ) + Screen.Dim(glarecolor,(clamp((glarestr-fractic)/20.,0.,1.)**2)*.3,0,0,Screen.GetWidth(),Screen.GetHeight()); } + override void Ticker( void ) { bcnt++; if ( bcnt == 1 ) StartMusic(); - checkForAccelerateNew(); + glarestr = max(glarestr-1,0); + tipalpha = min(tipalpha+tipalphastate/double(GameTicRate),2.); switch (CurState) { case StatCount: + tipalphastate = 2; updateStats(); break; case ShowNextLoc: updateShowNextLoc(); break; case NoState: + tipalphastate = -2; updateNoState(); break; case LeavingIntermission: @@ -316,56 +457,98 @@ Class SWWMStatScreen : StatusScreen abstract break; } // check fade - if ( players[me].cmd.buttons&BT_ALTATTACK ) bgfade = min(1.,bgfade+3./GameTicRate); + if ( bFade ) bgfade = min(1.,bgfade+3./GameTicRate); else bgfade = max(0.,bgfade-4./GameTicRate); - // force toggle - if ( !swwm_interart && (whichart != 0) ) + } + override bool OnEvent( InputEvent evt ) + { + if ( evt.type == InputEvent.Type_KeyDown ) { - whichart = 0; - arttex.SetNull(); + String cmd = Bindings.GetBinding(evt.KeyScan); + if ( (cmd ~== "+attack") || (cmd ~== "+use") || (evt.KeyScan == InputEvent.KEY_ENTER) ) // KEY_ENTER needed as fallback for Delta Touch compatibility + { + accelerateStage = 1; + return true; + } + if ( cmd ~== "+altattack" ) + { + bFade = true; + return true; + } + if ( cmd ~== "+reload" ) + { + PlaySound("misc/chat"); + whichtip = 0; + tipflash = gametic+25; + return true; + } + if ( cmd ~== "+zoom" ) + { + PlaySound("misc/chat"); + whichart = 0; + arttex.SetNull(); + return true; + } + return false; } + else if ( (evt.type == InputEvent.Type_KeyUp) + && (Bindings.GetBinding(evt.KeyScan) ~== "+altattack") ) + { + bFade = false; + return true; + } + return false; } - protected String TimeStr( int secs ) + override void updateNoState() { - secs = max(secs,0); - int h = secs/3600; - int m = (secs/60)%60; - int s = secs%60; - if ( h ) return String.Format("%d\cu:\c-%02d\cu:\c-%02d",h,m,s); - if ( m ) return String.Format("%d\cu:\c-%02d",m,s); - return String.Format("%d",s); + // make sure tip alpha is zero, so this transition is less jarring + if ( tipalpha > 0. ) return; + Super.updateNoState(); } - protected int GetPct( int a, int b, bool inv = false ) + override void initShowNextLoc() { - if ( a < 0 ) return 0; - if ( b <= 0 ) return inv?0:100; // for "missed" percentage - return (a*100)/b; + if ( wbs.next == "" ) + { + // the base statscreen skips directly here, which looks + // very jarring with this one, so just skip to NoState + bNoDrawNextLoc = true; + initNoState(); + return; + } + CurState = ShowNextLoc; + acceleratestage = 0; + cnt = SHOWNEXTLOCDELAY*GameTicRate; + noautostartmap = false; } -} - -Class SWWMStatScreen_SP : SWWMStatScreen -{ - int intermissioncounter; - override void initStats() { - intermissioncounter = gameinfo.intermissioncounter; CurState = StatCount; acceleratestage = 0; - sp_state = 1; + sp_state = 0; cnt_kills[0] = cnt_items[0] = cnt_secret[0] = -1; cnt_time = cnt_par = -1; - cnt_pause = GameTicRate; + cnt_pause = GameTicRate*2; cnt_total_time = -1; } - override void updateStats() { + if ( sp_state == 0 ) + { + if ( bcnt > GameTicRate ) + { + S_StartSound("misc/interstart",CHAN_WEAPON,CHANF_OVERLAP|CHANF_UI,1.,0.); + acceleratestage = 0; + glarestr = 20; + sp_state++; + } + return; + } if ( acceleratestage && (sp_state != 10) ) { acceleratestage = 0; sp_state = 10; - PlaySound("menu/buyinv"); + S_StartSound("misc/intercntdone",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); + glarestr = 10; cnt_kills[0] = Plrs[me].skills; cnt_items[0] = Plrs[me].sitems; cnt_secret[0] = Plrs[me].ssecret; @@ -375,43 +558,49 @@ Class SWWMStatScreen_SP : SWWMStatScreen } if ( sp_state == 2 ) { - if ( intermissioncounter ) + cnt_kills[0] += max((Plrs[me].skills-cnt_kills[0])/GameTicRate,1); + if ( !((sndcnt++)%3) ) { - cnt_kills[0] += max((Plrs[me].skills-cnt_kills[0])/10,2); - if ( !(bcnt%2) ) PlaySound("menu/demoscroll"); + S_StartSound("misc/intercnt",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); + glarestr = 5; } - if ( !intermissioncounter || (cnt_kills[0] >= Plrs[me].skills) ) + if ( cnt_kills[0] >= Plrs[me].skills ) { + S_StartSound("misc/intercntdone",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); cnt_kills[0] = Plrs[me].skills; - PlaySound("menu/buyinv"); + glarestr = 10; sp_state++; } } else if ( sp_state == 4 ) { - if ( intermissioncounter ) + cnt_items[0] += max((Plrs[me].sitems-cnt_items[0])/GameTicRate,1); + if ( !((sndcnt++)%3) ) { - cnt_items[0] += max((Plrs[me].sitems-cnt_items[0])/10,2); - if ( !(bcnt%2) ) PlaySound("menu/demoscroll"); + S_StartSound("misc/intercnt",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); + glarestr = 5; } - if ( !intermissioncounter || (cnt_items[0] >= Plrs[me].sitems) ) + if ( cnt_items[0] >= Plrs[me].sitems ) { + S_StartSound("misc/intercntdone",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); cnt_items[0] = Plrs[me].sitems; - PlaySound("menu/buyinv"); + glarestr = 10; sp_state++; } } else if ( sp_state == 6 ) { - if ( intermissioncounter ) + cnt_secret[0] += max((Plrs[me].ssecret-cnt_secret[0])/GameTicRate,1); + if ( !((sndcnt++)%3) ) { - cnt_secret[0] += max((Plrs[me].ssecret-cnt_secret[0])/10,2); - if ( !(bcnt%2) ) PlaySound("menu/demoscroll"); + S_StartSound("misc/intercnt",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); + glarestr = 5; } - if ( !intermissioncounter || (cnt_secret[0] >= Plrs[me].ssecret) ) + if ( cnt_secret[0] >= Plrs[me].ssecret ) { + S_StartSound("misc/intercntdone",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); cnt_secret[0] = Plrs[me].ssecret; - PlaySound("menu/buyinv"); + glarestr = 10; sp_state++; } } @@ -420,24 +609,24 @@ Class SWWMStatScreen_SP : SWWMStatScreen int sec = Thinker.Tics2Seconds(Plrs[me].stime); int tsec = Thinker.Tics2Seconds(wbs.totaltime); int psec = wbs.partime/GameTicRate; - if ( intermissioncounter ) + if ( !((sndcnt++)%3) ) { - if ( !(bcnt%2) ) PlaySound("menu/demoscroll"); - cnt_time += max((sec-cnt_time)/10,3); - cnt_par += max((psec-cnt_par)/10,3); - cnt_total_time += max((tsec-cnt_total_time)/10,3); + S_StartSound("misc/intercnt",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); + glarestr = 5; } - if ( !intermissioncounter || (cnt_time >= sec) ) - cnt_time = sec; - if ( !intermissioncounter || (cnt_total_time >= tsec) ) - cnt_total_time = tsec; - if ( !intermissioncounter || (cnt_par >= psec) ) + cnt_time += max((sec-cnt_time)/GameTicRate,1); + cnt_par += max((psec-cnt_par)/GameTicRate,1); + cnt_total_time += max((tsec-cnt_total_time)/GameTicRate,1); + if ( cnt_time >= sec ) cnt_time = sec; + if ( cnt_total_time >= tsec ) cnt_total_time = tsec; + if ( cnt_par >= psec ) { cnt_par = psec; if ( cnt_time >= sec ) { + S_StartSound("misc/intercntdone",CHAN_VOICE,CHANF_OVERLAP|CHANF_UI,1.,0.); cnt_total_time = tsec; - PlaySound("menu/buyinv"); + glarestr = 10; sp_state++; } } @@ -446,7 +635,8 @@ Class SWWMStatScreen_SP : SWWMStatScreen { if ( acceleratestage ) { - PlaySound("misc/w_pkup"); + S_StartSound("misc/interdone",CHAN_WEAPON,CHANF_OVERLAP|CHANF_UI,1.,0.); + glarestr = 20; initShowNextLoc(); } } @@ -456,609 +646,8 @@ Class SWWMStatScreen_SP : SWWMStatScreen { sp_state++; cnt_pause = GameTicRate; + sndcnt = 0; } } } - - override void drawStats( void ) - { - drawLF(); - // estimate max width of the whole stat counter - int maxlen, maxlenl = 0, maxlenr = 0; - // left strings - String str = StringTable.Localize("$TXT_IMKILLS")..":"; - int len = smallfont.StringWidth(str); - maxlenl = len; - str = StringTable.Localize("$TXT_IMITEMS")..":"; - len = smallfont.StringWidth(str); - if ( len > maxlenl ) maxlenl = len; - str = StringTable.Localize("$TXT_IMSECRETS")..":"; - len = smallfont.StringWidth(str); - if ( len > maxlenl ) maxlenl = len; - str = StringTable.Localize("$TXT_IMTIME")..":"; - len = smallfont.StringWidth(str); - if ( len > maxlenl ) maxlenl = len; - if ( wi_showtotaltime ) - { - str = StringTable.Localize("$SCORE_TOTAL")..":"; // hey, as long as it works - len = smallfont.StringWidth(str); - if ( len > maxlenl ) maxlenl = len; - } - if ( wbs.partime ) - { - str = StringTable.Localize("$TXT_IMPAR")..":"; - len = smallfont.StringWidth(str); - if ( len > maxlenl ) maxlenl = len; - } - // right strings - if ( wi_percents ) - { - str = String.Format("%d%%",GetPct(Plrs[me].skills,wbs.maxkills)); - len = smallfont.StringWidth(str); - maxlenr = len; - str = String.Format("%d%%",GetPct(Plrs[me].sitems,wbs.maxitems)); - len = smallfont.StringWidth(str); - if ( len > maxlenr ) maxlenr = len; - str = String.Format("%d%%",GetPct(Plrs[me].ssecret,wbs.maxsecret)); - len = smallfont.StringWidth(str); - if ( len > maxlenr ) maxlenr = len; - } - else - { - str = String.Format("%d / %d",Plrs[me].skills,wbs.maxkills); - len = smallfont.StringWidth(str); - maxlenr = len; - str = String.Format("%d / %d",Plrs[me].sitems,wbs.maxitems); - len = smallfont.StringWidth(str); - if ( len > maxlenr ) maxlenr = len; - str = String.Format("%d / %d",Plrs[me].ssecret,wbs.maxsecret); - len = smallfont.StringWidth(str); - if ( len > maxlenr ) maxlenr = len; - } - str = TimeStr(Thinker.Tics2Seconds(Plrs[me].stime)); - len = smallfont.StringWidth(str); - if ( len > maxlenr ) maxlenr = len; - if ( wi_showtotaltime ) - { - str = TimeStr(Thinker.Tics2Seconds(wbs.totaltime)); - len = smallfont.StringWidth(str); - if ( len > maxlenr ) maxlenr = len; - } - if ( wbs.partime ) - { - str = TimeStr(wbs.partime/GameTicRate); - len = smallfont.StringWidth(str); - if ( len > maxlenr ) maxlenr = len; - } - int step = smallfont.GetHeight()+1; - int nl = clamp(sp_state/2,0,4); - if ( (nl == 4) ) - { - if ( wi_showtotaltime ) nl++; - if ( wbs.partime ) nl++; - } - nl *= step; - maxlen = maxlenl+max(100,maxlenr); - // draw the whole damn thing - if ( sp_state >= 2 ) Screen.Dim("Black",.8,int((ss2.x-maxlen-8)*.5*hs2),int((ss2.y-nl-8)*.5*hs2),int((maxlen+8)*hs2),int((nl+8)*hs2)); - int xx = int((ss2.x-maxlen)/2), yy = int((ss2.y-nl)/2); - if ( sp_state >= 2 ) Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,StringTable.Localize("$TXT_IMKILLS")..":",DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - yy += step; - if ( sp_state >= 4 ) Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,StringTable.Localize("$TXT_IMITEMS")..":",DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - yy += step; - if ( sp_state >= 6 ) Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,StringTable.Localize("$TXT_IMSECRETS")..":",DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - yy += step; - if ( sp_state >= 8 ) Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,StringTable.Localize("$TXT_IMTIME")..":",DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - yy += step; - if ( wi_showtotaltime ) - { - if ( sp_state >= 8 ) Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,StringTable.Localize("$SCORE_TOTAL")..":",DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - yy += step; - } - if ( wbs.partime && (sp_state >= 8) ) Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,StringTable.Localize("$TXT_IMPAR")..":",DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - xx = int((ss2.x+maxlen)/2); - yy = int((ss2.y-nl)/2); - if ( wi_percents ) - { - if ( cnt_kills[0] >= 0 ) - { - str = String.Format("%d\cu%%\c-",GetPct(cnt_kills[0],wbs.maxkills)); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,(!wbs.maxkills||(cnt_kills[0]>=wbs.maxkills))?Font.CR_GOLD:Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - yy += step; - if ( cnt_items[0] >= 0 ) - { - str = String.Format("%d\cu%%\c-",GetPct(cnt_items[0],wbs.maxitems)); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,(!wbs.maxitems||(cnt_items[0]>=wbs.maxitems))?Font.CR_GOLD:Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - yy += step; - if ( cnt_secret[0] >= 0 ) - { - str = String.Format("%d\cu%%\c-",GetPct(cnt_secret[0],wbs.maxsecret)); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,(!wbs.maxsecret||(cnt_secret[0]>=wbs.maxsecret))?Font.CR_GOLD:Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - yy += step; - } - else - { - if ( cnt_kills[0] >= 0 ) - { - str = String.Format("%d \cu/\c- \cj%d\c-",max(cnt_kills[0],0),wbs.maxkills); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,(wbs.maxkills&&(cnt_kills[0]>=wbs.maxkills))?Font.CR_GOLD:Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - yy += step; - if ( cnt_items[0] >= 0 ) - { - str = String.Format("%d \cu/\c- \cj%d\c-",max(cnt_items[0],0),wbs.maxitems); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,(wbs.maxitems&&(cnt_items[0]>=wbs.maxitems))?Font.CR_GOLD:Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - yy += step; - if ( cnt_secret[0] >= 0 ) - { - str = String.Format("%d \cu/\c- \cj%d\c-",max(cnt_secret[0],0),wbs.maxsecret); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,(wbs.maxsecret&&(cnt_secret[0]>=wbs.maxsecret))?Font.CR_GOLD:Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - yy += step; - } - if ( cnt_time >= 0 ) - { - str = TimeStr(cnt_time); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,(wbs.partime&&(cnt_time<=(wbs.partime/GameTicRate)))?Font.CR_GOLD:((wbs.sucktime>0)&&(cnt_time>(wbs.sucktime*3600)))?Font.CR_RED:Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - yy += step; - if ( wi_showtotaltime ) - { - if ( cnt_total_time >= 0 ) - { - str = TimeStr(cnt_total_time); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - yy += step; - } - if ( wbs.partime && (cnt_par >= 0) ) - { - str = TimeStr(cnt_par); - len = smallfont.StringWidth(str); - Screen.DrawText(smallfont,Font.CR_WHITE,xx-len,yy,str,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); - } - } -} - -Class SWWMStatScreen_Coop : SWWMStatScreen -{ - override void initStats() - { - CurState = StatCount; - acceleratestage = 0; - ng_state = 1; - cnt_pause = GameTicRate; - for ( int i=0; i Plrs[i].skills ) cnt_kills[i] = Plrs[i].skills; - else stillticking = true; - } - if ( !stillticking ) - { - PlaySound("menu/buyinv"); - ng_state++; - } - } - else if ( ng_state == 4 ) - { - if ( !(bcnt&2) ) PlaySound("menu/demoscroll"); - stillticking = false; - for ( int i=0; i Plrs[i].sitems ) cnt_items[i] = Plrs[i].sitems; - else stillticking = true; - } - if ( !stillticking ) - { - PlaySound("menu/buyinv"); - ng_state++; - } - } - else if ( ng_state == 6 ) - { - if ( !(bcnt&2) ) PlaySound("menu/demoscroll"); - stillticking = false; - for ( int i=0; i Plrs[i].ssecret ) cnt_secret[i] = Plrs[i].ssecret; - else stillticking = true; - } - if ( !stillticking ) - { - PlaySound("menu/buyinv"); - ng_state += 1+2*!dofrags; - } - } - else if ( ng_state == 8 ) - { - if ( !(bcnt&2) ) PlaySound("menu/demoscroll"); - stillticking = false; - for ( int i=0; i= fsum ) cnt_frags[i] = fsum; - else stillticking = true; - } - if ( !stillticking ) - { - PlaySound("menu/buyinv"); - ng_state++; - } - } - else if ( ng_state == 10 ) - { - int i; - for ( i=0; i= 4 ) - { - str = String.Format("%3d\cu%%\c-",GetPct(cnt_items[i],wbs.maxitems)); - Screen.DrawText(smallfont,(!wbs.maxitems||(cnt_items[i]>=wbs.maxitems))?Font.CR_GOLD:Font.CR_WHITE,xx+itemslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - misseditems -= cnt_items[i]; - } - xx += itemslen+spc; - if ( ng_state >= 6 ) - { - str = String.Format("%3d\cu%%\c-",GetPct(cnt_secret[i],wbs.maxsecret)); - Screen.DrawText(smallfont,(!wbs.maxsecret||(cnt_secret[i]>=wbs.maxsecret))?Font.CR_GOLD:Font.CR_WHITE,xx+secretlen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - missedsecret -= cnt_secret[i]; - } - xx += secretlen+spc; - str = String.Format("%3d\cu%%\c-",GetPct(cnt_kills[i],wbs.maxkills)); - Screen.DrawText(smallfont,(!wbs.maxkills||(cnt_kills[i]>=wbs.maxkills))?Font.CR_GOLD:Font.CR_WHITE,xx+killslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - missedkills -= cnt_kills[i]; - yy += lineh+lspc; - } - xx = int((ss.x-boxwidth)/2+pad+pad+rwidth); - yy += hspc; - Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,missedstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - xx += namelen+spc; - if ( ng_state >= 4 ) - { - str = String.Format("%3d\cu%%\c-",GetPct(misseditems,wbs.maxitems,true)); - Screen.DrawText(smallfont,(wbs.maxitems&&(misseditems>0))?Font.CR_WHITE:Font.CR_GOLD,xx+itemslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - xx += itemslen+spc; - if ( ng_state >= 6 ) - { - str = String.Format("%3d\cu%%\c-",GetPct(missedsecret,wbs.maxsecret,true)); - Screen.DrawText(smallfont,(wbs.maxsecret&&(missedsecret>0))?Font.CR_WHITE:Font.CR_GOLD,xx+secretlen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - xx += secretlen+spc; - str = String.Format("%3d\cu%%\c-",GetPct(missedkills,wbs.maxkills,true)); - Screen.DrawText(smallfont,(wbs.maxkills&&(missedkills>0))?Font.CR_WHITE:Font.CR_GOLD,xx+killslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += lineh+lspc; - xx = int((ss.x-boxwidth)/2+pad+pad+rwidth); - Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,totalstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - xx += namelen+spc; - if ( ng_state >= 4 ) - { - str = String.Format("%d",wbs.maxitems); - Screen.DrawText(smallfont,Font.CR_WHITE,xx+itemslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - xx += itemslen+spc; - if ( ng_state >= 6 ) - { - str = String.Format("%d",wbs.maxsecret); - Screen.DrawText(smallfont,Font.CR_WHITE,xx+secretlen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - xx += secretlen+spc; - str = String.Format("%d",wbs.maxkills); - Screen.DrawText(smallfont,Font.CR_WHITE,xx+killslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } -} - -Class SWWMStatScreen_DM : SWWMStatScreen -{ - override void initStats() - { - CurState = StatCount; - acceleratestage = 0; - for( int i=0; i Plrs[i].fragcount ) cnt_frags[i] = Plrs[i].fragcount; - else stillticking = true; - } - if ( !stillticking ) - { - PlaySound("menu/buyinv"); - ng_state++; - } - } - else if ( ng_state == 4 ) - { - if ( !(bcnt&2) ) PlaySound("menu/demoscroll"); - stillticking = false; - for ( int i=0; i player_deaths[i] ) cnt_deaths[i] = player_deaths[i]; - else stillticking = true; - } - if ( !stillticking ) - { - PlaySound("menu/buyinv"); - ng_state++; - } - } - else if ( ng_state == 6 ) - { - int i; - for ( i=0; i sorted; - GetSortedPlayers(sorted,teamplay); - for ( int j=0; j= 2 ) - { - str = String.Format("%d",cnt_deaths[i]); - Screen.DrawText(smallfont,Font.CR_WHITE,xx+deathslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - xx += deathslen+spc; - str = String.Format("%d",cnt_frags[i]); - Screen.DrawText(smallfont,Font.CR_WHITE,xx+fragslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - yy += lineh+lspc; - } - xx = int((ss.x-boxwidth)/2+pad+pad+rwidth); - yy += hspc; - Screen.DrawText(smallfont,Font.CR_GREEN,xx,yy,totalstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - xx += namelen+spc; - if ( ng_state >= 4 ) - { - str = String.Format("%d",total_deaths); - Screen.DrawText(smallfont,Font.CR_WHITE,xx+deathslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - xx += deathslen+spc; - str = String.Format("%d",total_frags); - Screen.DrawText(smallfont,Font.CR_WHITE,xx+fragslen-smallfont.StringWidth(str),yy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } } diff --git a/zscript/menu/swwm_menus.zsc b/zscript/menu/swwm_menus.zsc index 66a4c9670..d14913cf0 100644 --- a/zscript/menu/swwm_menus.zsc +++ b/zscript/menu/swwm_menus.zsc @@ -11,16 +11,16 @@ Class OptionMenuItemSWWMVoiceOption : OptionMenuItemOptionBase Super.Init(label,command,'',graycheck,center); mCVar = CVar.FindCVar(mAction); int lmp; - for ( lmp = Wads.FindLump("swwmvoicepack.txt"); lmp > 0; lmp = Wads.FindLump("swwmvoicepack.txt",lmp+1) ) + for ( lmp = Wads.FindLumpFullName("swwmvoicepack.txt"); lmp != -1; lmp = Wads.FindLumpFullName("swwmvoicepack.txt",lmp+1) ) { Array lst; lst.Clear(); String dat = Wads.ReadLump(lmp); dat.Split(lst,"\n",0); - for ( int i=0; i ypos ) ypos = 0; - Screen.Dim("Black",.75,0,ypos,Screen.GetWidth(),height); + Screen.Dim(0xFF000000,.75,0,ypos,Screen.GetWidth(),height); ypos += 2*CleanYFac_1; - for ( int i=0; i done; Array candidates; let c = CVar.FindCVar('swwm_menuposehistory'); @@ -285,7 +291,7 @@ Class SWWMMainMenu : SWWMCleanMenu else { c.SetString("2"); - return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE2"),TexMan.Type_Any); + return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE2")); } int npose = StringTable.Localize("$SWWM_NMENUPOSE").ToInt(); for ( int i=1; i<=npose; i++ ) @@ -297,26 +303,25 @@ Class SWWMMainMenu : SWWMCleanMenu if ( candidates.Size() == 0 ) { c.SetString("2"); - return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE2"),TexMan.Type_Any); + return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE2")); } int which = candidates[Random[UIStuff](0,candidates.Size()-1)]; c.SetString(str..";"..which); - return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE"..which),TexMan.Type_Any); + return TexMan.CheckForTexture(StringTable.Localize("$SWWM_MENUPOSE"..which)); } override void Init( Menu parent, ListMenuDescriptor desc ) { Super.Init(parent,desc); + mSmallFont = Font.GetFont('TewiFont'); demotex = GetDemoTex(); - demopos = 120; - prevms = MSTime(); + fadetime = MenuTime()+1; } override void OnReturn() { demotex = GetDemoTex(); - demopos = 120; - prevms = MSTime(); + fadetime = MenuTime()+1; } private int GetMenuYOffset() @@ -327,63 +332,58 @@ Class SWWMMainMenu : SWWMCleanMenu override void Drawer() { - double frametime = (MSTime()-prevms)/1000.; - double theta; - // naive, but whatever - if ( swwm_oldlogo ) theta = clamp(2.*frametime,0.,1.); - else theta = clamp(4.*frametime,0.,1.); - if ( prevms ) demopos = demopos*(1.-theta)-40*theta; - double alph = clamp(1.-(demopos/100),0.,1.); - if ( !swwm_oldlogo ) - { - if ( !gradtex ) gradtex = TexMan.CheckForTexture("graphics/M_GRAD.png",TexMan.Type_Any); - double scl = Screen.GetHeight()/960.; - Screen.DrawTexture(gradtex,false,0,Screen.GetHeight(),DTA_DestWidth,Screen.GetWidth(),DTA_DestHeight,256*CleanYFac_1,DTA_LegacyRenderStyle,STYLE_Shaded,DTA_FillColor,Color(0,0,0),DTA_TopOffset,256,DTA_Alpha,.35); - Screen.DrawTexture(gradtex,false,Screen.GetWidth()/2,Screen.GetHeight(),DTA_Rotate,90,DTA_DestHeight,Screen.GetHeight(),DTA_DestWidthF,600*scl*alph,DTA_LegacyRenderStyle,STYLE_Shaded,DTA_FillColor,Color(0,0,0),DTA_TopOffset,256,DTA_Alpha,alph*.5); - Screen.DrawTexture(gradtex,false,Screen.GetWidth()/2,0,DTA_Rotate,270,DTA_DestHeight,Screen.GetHeight(),DTA_DestWidthF,600*scl*alph,DTA_LegacyRenderStyle,STYLE_Shaded,DTA_FillColor,Color(0,0,0),DTA_TopOffset,256,DTA_Alpha,alph*.5); - Screen.DrawTexture(gradtex,false,Screen.GetWidth()/2,Screen.GetHeight(),DTA_Rotate,90,DTA_DestHeight,Screen.GetHeight(),DTA_DestWidthF,500*scl*alph,DTA_LegacyRenderStyle,STYLE_AddShaded,DTA_FillColor,Color(40,80,120),DTA_TopOffset,256,DTA_Alpha,alph); - Screen.DrawTexture(gradtex,false,Screen.GetWidth()/2,0,DTA_Rotate,270,DTA_DestHeight,Screen.GetHeight(),DTA_DestWidthF,500*scl*alph,DTA_LegacyRenderStyle,STYLE_AddShaded,DTA_FillColor,Color(40,80,120),DTA_TopOffset,256,DTA_Alpha,alph); - Screen.DrawTexture(demotex,false,Screen.GetWidth()/2,0,DTA_ScaleX,scl,DTA_ScaleY,scl,DTA_Alpha,alph,DTA_ColorOverlay,Color(int(255*(1.-(alph**2))),0,0,0)); - } - else Screen.DrawTexture(demotex,false,(demopos-160)*CleanXFac_1+(Screen.GetWidth()*.5),(Screen.GetHeight()-400*CleanYFac_1)/2 + sin(gametic*GameTicRate*.1)*CleanYFac_1*8*(alph**2),DTA_CleanNoMove_1,true,DTA_Alpha,alph,DTA_ColorOverlay,Color(64+int(191*(1.-(alph**2))),0,0,0)); - if ( !swwm_oldlogo ) for ( int i=0; i 0 ) { - if ( isclean ) Screen.DrawText(smallfont,Font.CR_FIRE,x,y+30*CleanYFac_1,str,DTA_CleanNoMove_1,true); - else Screen.DrawText(smallfont,Font.CR_FIRE,x,y+30,str,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43); + if ( isclean ) Screen.DrawText(mSmallFont,Font.CR_FIRE,x,y+16*CleanYFac_1,str,DTA_CleanNoMove_1,true); + else Screen.DrawText(mSmallFont,Font.CR_FIRE,x,y+16,str,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43); } if ( ofs < (mDesc.mItems.Size()-8) ) { str = "⌄ ⌄ ⌄"; - if ( isclean ) Screen.DrawText(smallfont,Font.CR_FIRE,x,y+296*CleanYFac_1,str,DTA_CleanNoMove_1,true); - else Screen.DrawText(smallfont,Font.CR_FIRE,x,y+296,str,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43); + if ( isclean ) Screen.DrawText(mSmallFont,Font.CR_FIRE,x,y+256*CleanYFac_1,str,DTA_CleanNoMove_1,true); + else Screen.DrawText(mSmallFont,Font.CR_FIRE,x,y+256,str,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43); } for ( int i=0; i= 4) ) return; - Screen.DrawText(textfont,OptionMenuSettings.mFontColorSelection,(destWidth-2*textfont.StringWidth(messageSelection?strno:stryes))/2-72,y+fontheight*2*messageSelection,"►",DTA_VirtualWidth,destWidth,DTA_VirtualHeight,destHeight,DTA_KeepRatio,true,DTA_ScaleX,2.,DTA_ScaleY,2.); - Screen.DrawText(textfont,OptionMenuSettings.mFontColorSelection,(destWidth+2*textfont.StringWidth(messageSelection?strno:stryes))/2+24,y+fontheight*2*messageSelection,"◄",DTA_VirtualWidth,destWidth,DTA_VirtualHeight,destHeight,DTA_KeepRatio,true,DTA_ScaleX,2.,DTA_ScaleY,2.); + Screen.DrawText(textfont,OptionMenuSettings.mFontColorSelection,(destWidth-2*textfont.StringWidth(messageSelection?strno:stryes))/2-26,y+fontheight*2*messageSelection,"►",DTA_VirtualWidth,destWidth,DTA_VirtualHeight,destHeight,DTA_KeepRatio,true,DTA_ScaleX,2.,DTA_ScaleY,2.); + Screen.DrawText(textfont,OptionMenuSettings.mFontColorSelection,(destWidth+2*textfont.StringWidth(messageSelection?strno:stryes))/2+12,y+fontheight*2*messageSelection,"◄",DTA_VirtualWidth,destWidth,DTA_VirtualHeight,destHeight,DTA_KeepRatio,true,DTA_ScaleX,2.,DTA_ScaleY,2.); } } @@ -752,30 +742,49 @@ Mixin Class SWWMSelector yofs *= CleanYFac_1; double x = (320-GetWidth())/2; SWWMUtility.AdjustClean_1(x,y); - Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_ScaleX,CleanXFac_1/4.,DTA_ScaleY,CleanYFac_1/4.,DTA_Rotate,15.*sin(8*Menu.MenuTime())); + Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_ScaleX,CleanXFac_1/4.,DTA_ScaleY,CleanYFac_1/4.,DTA_Rotate,15.*sin(8*(Menu.MenuTime()+System.GetTimeFrac()))); x = (320+GetWidth())/2; SWWMUtility.AdjustClean_1x(x); - Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_ScaleX,CleanXFac_1/4.,DTA_ScaleY,CleanYFac_1/4.,DTA_Rotate,-15.*sin(8*Menu.MenuTime())); + Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_ScaleX,CleanXFac_1/4.,DTA_ScaleY,CleanYFac_1/4.,DTA_Rotate,-15.*sin(8*(Menu.MenuTime()+System.GetTimeFrac()))); } else { double x = (w-GetWidth())/2; - Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_ScaleX,.25,DTA_ScaleY,.25,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_Rotate,15.*sin(8*Menu.MenuTime())); + Screen.DrawTexture(tex,true,x+xofs,y+yofs,DTA_ScaleX,.25,DTA_ScaleY,.25,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_Rotate,15.*sin(8*(Menu.MenuTime()+System.GetTimeFrac()))); x = (w+GetWidth())/2; - Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_ScaleX,.25,DTA_ScaleY,.25,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_Rotate,-15.*sin(8*Menu.MenuTime())); + Screen.DrawTexture(tex,true,x-xofs,y+yofs,DTA_ScaleX,.25,DTA_ScaleY,.25,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_Rotate,-15.*sin(8*(Menu.MenuTime()+System.GetTimeFrac()))); } } } +// allow the player to skip skill confirmation message boxes +Mixin Class SWWMSkillConfirmSkippable +{ + override bool Activate() + { + Menu.SetMenu(((mAction=='StartgameConfirm')&&swwm_skipskill)?'Startgame':mAction,mParam); + return true; + } + + override Name, int GetAction() + { + return (((mAction=='StartgameConfirm')&&swwm_skipskill)?'Startgame':mAction),mParam; + } +} + // main menu item with wiggly text when selected and Demo face selectors on both sides -class ListMenuItemSWWMTextItemM : ListMenuItemSelectable +Class ListMenuItemSWWMTextItemM : ListMenuItemSelectable { Mixin SWWMSelector; + Mixin SWWMSkillConfirmSkippable; String mText; Font mFont; int mColor; int mColorSelected; + bool kyni; + double alph; + bool isSel; void Init( ListMenuDescriptor desc, String text, String hotkey, Name child, int param = 0 ) { @@ -785,6 +794,9 @@ class ListMenuItemSWWMTextItemM : ListMenuItemSelectable mColor = desc.mFontColor; mColorSelected = desc.mFontcolor2; mHotkey = hotkey.GetNextCodePoint(0); + kyni = (text == "$SWWM_SKDRAGON"); + if ( kyni ) alph = 0.; + else alph = 1.; } void InitDirect( double x, double y, int height, int hotkey, String text, Font font, int color, int color2, Name child, int param = 0 ) @@ -795,27 +807,45 @@ class ListMenuItemSWWMTextItemM : ListMenuItemSelectable mColor = color; mColorSelected = color2; mHotkey = hotkey; + kyni = (text == "$SWWM_SKDRAGON"); + if ( kyni ) alph = 0.; + else alph = 1.; + } + + override void Ticker() + { + Super.Ticker(); + if ( !kyni ) return; + if ( isSel ) alph = min(1.,alph+.05); + else alph = 0.; } override int GetWidth() { let font = menuDelegate.PickFont(mFont); - return max(1,font.StringWidth(StringTable.Localize(mText))); + int w = font.StringWidth(StringTable.Localize(mText)); + if ( font != NewSmallFont ) w *= 2; + return max(1,w); } override void Draw( bool selected, ListMenuDescriptor desc ) { + isSel = selected; + if ( kyni && !isSel ) return; int w = desc?desc.DisplayWidth():ListMenuDescriptor.CleanScale; int h = desc?desc.DisplayHeight():-1; String text = StringTable.Localize(mText); let font = menuDelegate.PickFont(mFont); + int scl; + if ( font != NewSmallFont ) scl = 2; + else scl = 1; double x; // centered - if ( w == ListMenuDescriptor.CleanScale ) x = (320-font.StringWidth(text))/2; - else x = (w-font.StringWidth(text))/2; + if ( w == ListMenuDescriptor.CleanScale ) x = (320-font.StringWidth(text)*scl)/2; + else x = (w-font.StringWidth(text)*scl)/2; double y = mYpos; // offset text so it's centered - y += (mHeight-font.GetHeight())/2; + y += (mHeight-font.GetHeight()*scl)/2; if ( selected ) { double xx = x; @@ -829,9 +859,9 @@ class ListMenuItemSWWMTextItemM : ListMenuItemSelectable { int ch; [ch, pos] = text.GetNextCodePoint(pos); - double yy = y+4*sin(32*i+8*Menu.MenuTime())*CleanYFac_1; - Screen.DrawChar(font,mColorSelected,xx,yy,ch,DTA_CleanNoMove_1,true); - xx += (font.GetCharWidth(ch)+kern)*CleanXFac_1; + double yy = y+4*sin(32*i+8*(Menu.MenuTime()+System.GetTimeFrac()))*CleanYFac_1; + Screen.DrawChar(font,kyni?Font.CR_BLACK:mColorSelected,xx,yy,ch,DTA_ScaleX,CleanXFac_1*scl,DTA_ScaleY,CleanYFac_1*scl,DTA_Alpha,alph); + xx += (font.GetCharWidth(ch)+kern)*CleanXFac_1*scl; } } else @@ -840,18 +870,18 @@ class ListMenuItemSWWMTextItemM : ListMenuItemSelectable { int ch; [ch, pos] = text.GetNextCodePoint(pos); - double yy = y+4*sin(32*i+8*Menu.MenuTime()); - Screen.DrawChar(mFont,mColorSelected,xx,yy,ch,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43); - xx += (font.GetCharWidth(ch)+kern); + double yy = y+4*sin(32*i+8*(Menu.MenuTime()+System.GetTimeFrac())); + Screen.DrawChar(mFont,kyni?Font.CR_BLACK:mColorSelected,xx,yy,ch,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_ScaleX,scl,DTA_ScaleY,scl,DTA_Alpha,alph); + xx += (font.GetCharWidth(ch)+kern)*scl; } } } else if ( w == ListMenuDescriptor.CleanScale ) { SWWMUtility.AdjustClean_1(x,y); - Screen.DrawText(font,mColor,x,y,text,DTA_CleanNoMove_1,true); + Screen.DrawText(font,mColor,x,y,text,DTA_ScaleX,CleanXFac_1*scl,DTA_ScaleY,CleanYFac_1*scl); } - else Screen.DrawText(font,mColor,x,y,text,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43); + else Screen.DrawText(font,mColor,x,y,text,DTA_VirtualWidth,w,DTA_VirtualHeight,h,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_ScaleX,scl,DTA_ScaleY,scl); } } @@ -860,6 +890,7 @@ class ListMenuItemSWWMTextItemM : ListMenuItemSelectable Class ListMenuItemSWWMPatchItemM : ListMenuItemSelectable { Mixin SWWMSelector; + Mixin SWWMSkillConfirmSkippable; TextureID mTexture; @@ -946,8 +977,8 @@ Class OptionMenuItemTrapOption : OptionMenuItem } } -// this is kind of a fucky -// scalesliders kinda fuck up keyboard input if the step is not 1, +// this is kind of a hot mess +// scalesliders don't mesh well with keyboard input if the step is not 1, // so I'll fix that for my super special use cases Class OptionMenuItemScaleSliderFix : OptionMenuItemScaleSlider { @@ -972,15 +1003,84 @@ Class OptionMenuItemScaleSliderFix : OptionMenuItemScaleSlider } } -Class SWWMMenuDelegate : DoomMenuDelegate +// allows only positive integer values, plus zero and minus-one if optionally hinted +Class OptionMenuItemSWWMScaleField : OptionMenuItemTextField { - // we've got our own fonts 'round here - override Font PickFont( Font fnt ) + String mZeroHint, mNegOneHint; + + OptionMenuItemSWWMScaleField Init( String label, Name command, String zerohint = "", String negonehint = "" ) { - if ( generic_ui ) return NewSmallFont; - if ( !fnt ) return SmallFont; - if ( (fnt == AlternativeBigFont) || (fnt == OriginalBigFont) || (fnt == IntermissionFont) ) return BigFont; - if ( (fnt == AlternativeSmallFont) || (fnt == NewSmallFont) ) return SmallFont; - return fnt; + Super.Init(label,command); + mZeroHint = zerohint; + mNegOneHint = negonehint; + return self; + } + + override bool, String GetString( int i ) + { + if ( i == 0 ) + { + String str = mCVar?mCVar.GetString():""; + int val = mCVar?mCVar.GetInt():0; + if ( (val == 0) && (mZeroHint != "") ) + str.AppendFormat(" (%s)",StringTable.Localize(mZeroHint)); + else if ( (val == -1) && (mNegOneHint != "") ) + str.AppendFormat(" (%s)",StringTable.Localize(mNegOneHint)); + return true, str; + } + return false,""; + } + override bool MenuEvent (int mkey, bool fromcontroller) + { + if ( mkey == Menu.MKEY_Enter ) + { + Menu.MenuSound("menu/choose"); + mEnter = TextEnterMenu.OpenTextEnter(Menu.GetCurrentMenu(),Menu.OptionFont(),"",-1,fromcontroller); + mEnter.ActivateMenu(); + return true; + } + if ( mkey == Menu.MKEY_Left ) + { + int val = mCVar?mCVar.GetInt():0; + int cap = (mNegOneHint!="")?-1:(mZeroHint!="")?0:1; + val = max(cap,val-1); + if ( mCVar ) mCVar.SetInt(val); + Menu.MenuSound("menu/change"); + return true; + } + if ( mkey == Menu.MKEY_Right ) + { + int val = mCVar?mCVar.GetInt():0; + val++; + if ( mCVar ) mCVar.SetInt(val); + Menu.MenuSound("menu/change"); + return true; + } + return Super.MenuEvent(mkey,fromcontroller); + } + override bool SetString( int i, String s ) + { + if ( i == 0 ) + { + int cap = (mNegOneHint!="")?-1:(mZeroHint!="")?0:1; + int numval = max(cap,s.ToInt()); + if ( mCVar ) mCVar.SetInt(numval); + return true; + } + return false; + } +} + +// draw captions using our own font +Class SWWMMenuDelegate : DoomMenuDelegate +{ + Font mBigFont; + + override int DrawCaption( String title, Font fnt, int y, bool drawit ) + { + if ( !mBigFont ) mBigFont = Font.GetFont('TewiFontOutline'); + fnt = mBigFont; + if ( drawit ) Screen.DrawText(fnt,OptionMenuSettings.mTitleColor,(Screen.GetWidth()-fnt.StringWidth(title)*CleanXFac_1*2)/2,8*CleanYFac_1,title,DTA_ScaleX,CleanXFac_1*2,DTA_ScaleY,CleanYFac_1*2); + return (y+fnt.GetHeight()*2)*CleanYFac_1; } } diff --git a/zscript/menu/swwm_title.zsc b/zscript/menu/swwm_title.zsc index f7ab7092b..1cbb6393f 100644 --- a/zscript/menu/swwm_title.zsc +++ b/zscript/menu/swwm_title.zsc @@ -12,32 +12,23 @@ Struct TitleExplosion Class SWWMTitleStuff : EventHandler { - ui TextureID tex[5]; + Mixin SWWMUIRandom; + + ui bool bInitialized; + ui TextureID tex[6]; ui TextureID letters[13]; - ui TextureID camtex; // must be drawn for shaders to actually use it + ui Canvas lfade; ui BrokenLines stitle; ui Array scrolls; ui int sline; ui double sbase; ui String lastlang, lastlang2; - ui bool lastlogo; ui TitleExplosion smk[64]; ui TextureID smk_frame[19]; - int titletimer; - ui int rss; + ui int titletimer; ui int stopinit_t; - bool bFadeIn; - - private ui int GetUIRandom() - { - return (rss = (rss<<1)*35447+(rss/87)); - } - - private ui double RandomShiver() - { - int sd = GetUIRandom(); - return ((abs(sd)%11)-5)*.1; - } + ui bool bFadeIn; + ui Font mSmallFont, mBigFont; private ui void TickExplosions() { @@ -62,15 +53,41 @@ Class SWWMTitleStuff : EventHandler } if ( !smk[i].bInit ) continue; if ( (smk[i].frame == 0) && (titletimer < -20 ) ) - S_StartSound("title/explo",CHAN_WEAPON,CHANF_UI|CHANF_OVERLAP,1.,ATTN_NONE,FRandom[UIStuff](.95,1.05)); + S_StartSound("title/explo",CHAN_WEAPON,CHANF_UI|CHANF_OVERLAP,.35,ATTN_NONE,FRandom[UIStuff](.95,1.05)); smk[i].frame++; } } - override void WorldTick() + override void UiTick() { + // you're not supposed to be here + if ( gamestate == GS_LEVEL ) + ThrowAbortException("Attempted to warp into TITLEMAP"); + if ( !bInitialized ) + { + bInitialized = true; + titletimer = -300; + // birthday event + if ( SystemTime.Format("%d%m",SystemTime.Now()) == "2001" ) + titletimer = -500; + let shnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); + if ( shnd ) + { + if ( shnd.titlefirst ) + { + titletimer = GameTicRate*22; // skip to logo + S_ChangeMusic("music/TRAUMATI.XM",1); // skip to order 1 + bFadeIn = true; + } + shnd.titlefirst = true; + } + } + if ( swwm_nointroex && (titletimer >= -300) && (titletimer < 0) ) titletimer = 0; if ( titletimer == -250 ) { + // this would be much simpler if we had a way to access the mapinfo variable + // (obviously, with this naive method, any custom music that doesn't use the + // vanilla filename won't be used) if ( gameinfo.gametype&GAME_Hexen ) S_ChangeMusic("HEXEN"); else if ( gameinfo.gametype&GAME_Heretic ) S_ChangeMusic("MUS_TITL"); else @@ -82,43 +99,14 @@ Class SWWMTitleStuff : EventHandler } } if ( titletimer == -75 ) S_ChangeMusic(""); - if ( titletimer == 0 ) S_ChangeMusic("music/TRAUMATI.XM"); - titletimer++; - if ( menuactive && (titletimer < -80) ) titletimer = -80; - } - - override void WorldLoaded( WorldEvent e ) - { - let f = LogoFader(Actor.Spawn("LogoFader")); - f.hnd = self; - TexMan.SetCameraToTexture(f,"LOGOFADE",90); - titletimer = -300; - let shnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler")); - if ( !shnd ) return; - if ( shnd.titlefirst ) - { - titletimer = GameTicRate*22; // skip to logo - S_ChangeMusic("music/TRAUMATI.XM",1); // skip to order 1 - bFadeIn = true; - } - shnd.titlefirst = true; - } - - override void UiTick() - { if ( (titletimer > -80) && (titletimer < -20) ) TickExplosions(); - if ( !swwm_oldlogo ) - { - // title lettering - if ( ((double(titletimer)/GameTicRate) >= 23.) && ((double(titletimer)/GameTicRate) <= 25.4) && !(titletimer%5) ) - S_StartSound("title/thump",CHAN_WEAPON,CHANF_UI|CHANF_OVERLAP,1.,ATTN_NONE); - } - if ( gamestate != GS_LEVEL ) return; - // you're not supposed to be here - Menu.SetMenu('EndGameMenu'); - let m = MessageBoxMenu(Menu.GetCurrentMenu()); - if ( m ) m.HandleResult(true); - // special thanks to marrub for this absolute crime + if ( titletimer == 0 ) S_ChangeMusic("music/TRAUMATI.XM"); + // title lettering + if ( ((double(titletimer)/GameTicRate) >= 23.) && ((double(titletimer)/GameTicRate) <= 25.4) && !(titletimer%5) ) + S_StartSound("title/thump",CHAN_WEAPON,CHANF_UI|CHANF_OVERLAP,1.,ATTN_NONE); + titletimer++; + EventHandler.SendNetworkEvent("swwmtitle.timer",titletimer); + if ( menuactive && (titletimer < -80) && (titletimer >= -300) ) titletimer = -80; } private ui void RenderExplosions() @@ -137,65 +125,81 @@ Class SWWMTitleStuff : EventHandler override void RenderUnderlay( RenderEvent e ) { - if ( !camtex ) camtex = TexMan.CheckForTexture("LOGOFADE",TexMan.Type_Any); - Screen.DrawTexture(camtex,false,0,0); - if ( !tex[2] ) tex[2] = TexMan.CheckForTexture("graphics/tempbg.png",TexMan.Type_Any); - if ( !tex[3] ) tex[3] = TexMan.CheckForTexture((gameinfo.gametype&GAME_Raven)?"TITLE":"TITLEPIC",TexMan.Type_MiscPatch); + if ( !mSmallFont ) mSmallFont = Font.GetFont('TewiFont'); + if ( !mBigFont ) mBigFont = Font.GetFont('TewiFontOutline'); + if ( !lfade ) lfade = TexMan.GetCanvas("LOGOFADE"); + if ( !tex[2] ) tex[2] = TexMan.CheckForTexture("graphics/tempbg.png"); + if ( !tex[5] ) tex[5] = TexMan.CheckForTexture("graphics/DemoIcon.png"); Vector2 tsize, vsize; + if ( titletimer < -300 ) + { + Screen.Dim(0xFF000000,1.,0,0,Screen.GetWidth(),Screen.GetHeight()); + double alf; + if ( titletimer < -420 ) alf = clamp((titletimer+450)/30.,0.,1.); + else if ( titletimer > -330 ) alf = clamp(1.-(titletimer+330)/30.,0.,1.); + else alf = 1.; + double xx, yy; + Screen.DrawTexture(tex[5],false,Screen.GetWidth()/2,Screen.GetHeight()/2,DTA_CleanNoMove_1,true,DTA_Alpha,alf); + String str = "2148-01-20"; + xx = int(Screen.GetWidth()-mBigFont.StringWidth(str)*CleanXFac_1*3.)/2; + yy = Screen.GetHeight()/2-(72.+mBigFont.GetHeight()*3.)*CleanYFac_1; + Screen.DrawText(mBigFont,Font.CR_WHITE,xx,yy,str,DTA_Alpha,alf,DTA_ScaleX,CleanXFac_1*3.,DTA_ScaleY,CleanYFac_1*3.); + str = "Happy Birthday, \cdDemo-chan\c-!"; + xx = int(Screen.GetWidth()-mBigFont.StringWidth(str)*CleanXFac_1*2.)/2; + yy = Screen.GetHeight()/2+72.*CleanYFac_1; + Screen.DrawText(mBigFont,Font.CR_WHITE,xx,yy,str,DTA_Alpha,alf,DTA_ScaleX,CleanXFac_1*2.,DTA_ScaleY,CleanYFac_1*2.); + return; + } + if ( !tex[3] ) tex[3] = TexMan.CheckForTexture((gameinfo.gametype&GAME_Raven)?"TITLE":"TITLEPIC",TexMan.Type_MiscPatch); if ( titletimer < 0 ) { - Screen.Dim("Black",1.,0,0,Screen.GetWidth(),Screen.GetHeight()); + Screen.Dim(0xFF000000,1.,0,0,Screen.GetWidth(),Screen.GetHeight()); if ( titletimer < -20 ) { - rss = int(MSTime()*(GameTicRate/1000.)); + SetUIRandom(int(MSTime()*(GameTicRate/1000.))); Vector2 ofs = (RandomShiver(),RandomShiver())*clamp((80+titletimer+e.FracTic)/50.,0.,1.); tsize = TexMan.GetScaledSize(tex[3]); ofs *= tsize.y/10.; - Screen.DrawTexture(tex[3],true,ofs.x,ofs.y,DTA_VirtualWidthF,tsize.x,DTA_VirtualHeightF,tsize.y,DTA_FullscreenScale,FSMode_ScaleToFit43); + Screen.DrawTexture(tex[3],true,ofs.x,ofs.y,DTA_VirtualWidthF,tsize.x,DTA_VirtualHeightF,tsize.y,DTA_FullscreenScale,FSMode_ScaleToFit43,DTA_TopLeft,true); RenderExplosions(); } - if ( titletimer > -20 ) Screen.Dim("White",1.-clamp((20+titletimer+e.FracTic)/20.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); - else if ( titletimer > -80 ) Screen.Dim("White",clamp((80+titletimer+e.FracTic)/50.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); - if ( titletimer <= -250 ) Screen.Dim("Black",1.-clamp((270+titletimer+e.FracTic)/20.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); + if ( titletimer > -20 ) Screen.Dim(0xFFFFFFFF,1.-clamp((20+titletimer+e.FracTic)/20.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); + else if ( titletimer > -80 ) Screen.Dim(0xFFFFFFFF,clamp((80+titletimer+e.FracTic)/50.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); + if ( titletimer <= -250 ) Screen.Dim(0xFF000000,1.-clamp((270+titletimer+e.FracTic)/20.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); return; } + double GameSecs = (titletimer+e.FracTic)/GameTicRate; if ( swwm_fuzz ) { tsize = TexMan.GetScaledSize(tex[2]); double zoom = max(ceil(Screen.GetWidth()/tsize.x),ceil(Screen.GetHeight()/tsize.y)); vsize = (Screen.GetWidth(),Screen.GetHeight())/zoom; Screen.DrawTexture(tex[2],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(192,0,0,0)); - Screen.Dim("Black",clamp(1.-((titletimer+e.FracTic)/GameTicRate)*.05,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); + Screen.Dim(0xFF000000,clamp(1.-GameSecs*.05,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); } - else Screen.Dim("Black",1.,0,0,Screen.GetWidth(),Screen.GetHeight()); + else Screen.Dim(0xFF000000,1.,0,0,Screen.GetWidth(),Screen.GetHeight()); double hs = max(min(floor(Screen.GetWidth()/320.),floor(Screen.GetHeight()/200.)),1.); Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs; - if ( swwm_oldlogo ) Render_OldTitle(e,ss); - else Render_NewTitle(e); - if ( (titletimer/GameTicRate) < 30 ) return; + Render_NewTitle(e,GameSecs); + if ( GameSecs < 30 ) return; // scrolls - if ( (scrolls.Size() <= 0 ) || (lastlang != language) || ((sline == 0) && (lastlogo != swwm_oldlogo)) ) + if ( (scrolls.Size() <= 0 ) || (lastlang != language) ) { scrolls.Clear(); int nstr = StringTable.Localize("$SWWM_NTITLESCROLL").ToInt(); - for ( int i=1; i<=nstr; i++ ) - { - if ( (i == 1) && !swwm_oldlogo ) scrolls.Push(StringTable.Localize("$SWWM_TITLESCROLL1_NEW")); - else scrolls.Push(StringTable.Localize("$SWWM_TITLESCROLL"..i)); - } - sbase = (titletimer+e.FracTic)/GameTicRate; + for ( int i=1; i<=nstr; i++ ) scrolls.Push(StringTable.Localize("$SWWM_TITLESCROLL"..i)); + sbase = GameSecs; if ( sline >= scrolls.Size() ) sline = 0; } lastlang = language; - lastlogo = swwm_oldlogo; // estimate scroll length - double llen = smallfont.StringWidth(scrolls[sline]); - double soffset = 40*((titletimer+e.FracTic)/GameTicRate-sbase); + double llen = mSmallFont.StringWidth(scrolls[sline]); + double soffset = 40*(GameSecs-sbase); if ( soffset > llen+ss.x ) { sline++; if ( sline >= scrolls.Size() ) sline = 0; - sbase = (titletimer+e.FracTic)/GameTicRate; + sbase = GameSecs; soffset = 0; } double xx = ss.x-soffset; @@ -209,84 +213,49 @@ Class SWWMTitleStuff : EventHandler { for ( double trl = .1; trl < 1.; trl += .04 ) { - double yy = (ss.y-35)+10*sin(15*i+160*(titletimer+e.FracTic)/GameTicRate-90.*(1.-trl)); + double yy = (ss.y-35)+10*sin(15*i+160*GameSecs-90.*(1.-trl)); alf = max(0,1.-abs((ss.x/2)-xx)/(ss.x/2))**.5; alf *= .2*trl; - double xxofs = 5*sin(15*i+120*(titletimer+e.FracTic)/GameTicRate-90.*(1.-trl))-16*(1.-trl); - Screen.DrawChar(smallfont,Font.CR_BLUE,xx-xxofs,yy,ch,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf,DTA_LegacyRenderStyle,STYLE_Add); + double xxofs = 5*sin(15*i+120*GameSecs-90.*(1.-trl))-16*(1.-trl); + Screen.DrawChar(mSmallFont,Font.CR_BLUE,xx-xxofs,yy,ch,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf,DTA_LegacyRenderStyle,STYLE_Add); } - double yy = (ss.y-35)+10*sin(15*i+160*(titletimer+e.FracTic)/GameTicRate); + double yy = (ss.y-35)+10*sin(15*i+160*GameSecs); alf = max(0,1.-abs((ss.x/2)-xx)/(ss.x/2))**.5; - double xxofs = 5*sin(15*i+120*(titletimer+e.FracTic)/GameTicRate); - Color c = Color(int(127.5+127.5*sin(10*i+80*(titletimer+e.FracTic)/GameTicRate)),0,0); - Screen.DrawChar(smallfont,Font.CR_SAPPHIRE,xx-xxofs,yy,ch,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf); + double xxofs = 5*sin(15*i+120*GameSecs); + Color c = Color(int(127.5+127.5*sin(10*i+80*GameSecs)),0,0); + Screen.DrawChar(mSmallFont,Font.CR_SAPPHIRE,xx-xxofs,yy,ch,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf); } - xx += smallfont.GetCharWidth(ch)+smallfont.GetDefaultKerning(); + xx += mSmallFont.GetCharWidth(ch)+mSmallFont.GetDefaultKerning(); } } - private ui void Render_OldTitle( RenderEvent e, Vector2 ss ) + private ui void Render_NewTitle( RenderEvent e, double GameSecs ) { - if ( !tex[0] ) tex[0] = TexMan.CheckForTexture("graphics/UnSXLogo.png",TexMan.Type_Any); - if ( !tex[1] ) tex[1] = TexMan.CheckForTexture("graphics/SWWMGZLogo.png",TexMan.Type_Any); - double ar = Screen.GetAspectRatio(); - Vector2 tsize = TexMan.GetScaledSize(tex[0]); - double sar = tsize.x/tsize.y; - Vector2 vsize; - if ( sar > ar ) vsize = (tsize.x,tsize.x/ar); - else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y); - else vsize = tsize; - double alf = clamp(((titletimer+e.FracTic)/GameTicRate)-2,0.,1.); - alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-8,0.,1.); - Screen.DrawTexture(tex[0],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf); - String str = StringTable.Localize("$SWWM_TITLEPRESENTS"); - alf = clamp(((titletimer+e.FracTic)/GameTicRate)-10,0.,1.); - alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-16,0.,1.); - Screen.DrawText(smallfont,Font.CR_WHITE,(ss.x-smallfont.StringWidth(str))/2,(ss.y-smallfont.GetHeight())/2,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf); - if ( bFadeIn ) Screen.Dim("Black",1.-clamp(((titletimer+e.FracTic)/GameTicRate)-22,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); - else - { - str = StringTable.Localize("$SWWM_TITLEMODBY"); - alf = clamp(((titletimer+e.FracTic)/GameTicRate)-18,0.,1.); - alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-24,0.,1.); - Screen.DrawText(smallfont,Font.CR_WHITE,(ss.x-smallfont.StringWidth(str))/2,(ss.y-smallfont.GetHeight())/2,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alf); - } - tsize = TexMan.GetScaledSize(tex[1]); - sar = tsize.x/tsize.y; - if ( sar > ar ) vsize = (tsize.x,tsize.x/ar); - else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y); - else vsize = tsize; - alf = clamp(((titletimer+e.FracTic)/GameTicRate)-26,0.,2.)*.5; - Screen.DrawTexture(tex[1],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf); - } - - private ui void Render_NewTitle( RenderEvent e ) - { - if ( !tex[4] ) tex[4] = TexMan.CheckForTexture("graphics/NewLogo.png",TexMan.Type_Any); + if ( !tex[4] ) tex[4] = TexMan.CheckForTexture("graphics/NewLogo.png"); for ( int i=0; i<13; i++ ) { - if ( !letters[i] ) letters[i] = TexMan.CheckForTexture("graphics/NewLogo_Letter"..i..".png",TexMan.Type_Any); + if ( !letters[i] ) letters[i] = TexMan.CheckForTexture("graphics/NewLogo_Letter"..i..".png"); } - double alf = clamp(((titletimer+e.FracTic)/GameTicRate)-1,0.,1.); - alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-4,0.,1.); + double alf = clamp(GameSecs-1,0.,1.); + alf *= 1.-clamp(GameSecs-4,0.,1.); String str = StringTable.Localize("$SWWM_TITLEPRESENTSA"); - Screen.DrawText(smallfont,Font.CR_FIRE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(smallfont.GetHeight()*CleanYFac),str,DTA_CleanNoMove,true,DTA_Alpha,alf); + Screen.DrawText(mSmallFont,Font.CR_SAPPHIRE,(Screen.GetWidth()-mSmallFont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(mSmallFont.GetHeight()*CleanYFac),str,DTA_CleanNoMove,true,DTA_Alpha,alf); str = StringTable.Localize("$SWWM_TITLEPRESENTSB"); - Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2),str,DTA_CleanNoMove,true,DTA_Alpha,alf); - alf = clamp(((titletimer+e.FracTic)/GameTicRate)-5,0.,1.); - alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-8,0.,1.); + Screen.DrawText(mSmallFont,Font.CR_WHITE,(Screen.GetWidth()-mSmallFont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2),str,DTA_CleanNoMove,true,DTA_Alpha,alf); + alf = clamp(GameSecs-5,0.,1.); + alf *= 1.-clamp(GameSecs-8,0.,1.); str = StringTable.Localize("$SWWM_TITLEMODBYA"); - Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(smallfont.GetHeight()*CleanYFac),str,DTA_CleanNoMove,true,DTA_Alpha,alf); + Screen.DrawText(mSmallFont,Font.CR_WHITE,(Screen.GetWidth()-mSmallFont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(mSmallFont.GetHeight()*CleanYFac),str,DTA_CleanNoMove,true,DTA_Alpha,alf); str = StringTable.Localize("$SWWM_TITLEMODBYB"); - Screen.DrawText(smallfont,Font.CR_FIRE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2),str,DTA_CleanNoMove,true,DTA_Alpha,alf); - alf = clamp(((titletimer+e.FracTic)/GameTicRate)-10,0.,1.); - alf *= 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-21,0.,1.); + Screen.DrawText(mSmallFont,Font.CR_SAPPHIRE,(Screen.GetWidth()-mSmallFont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2),str,DTA_CleanNoMove,true,DTA_Alpha,alf); + alf = clamp(GameSecs-10,0.,1.); + alf *= 1.-clamp(GameSecs-21,0.,1.); str = StringTable.Localize("$SWWM_TITLEINTROA"); - Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(smallfont.GetHeight()*CleanYFac*3)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf); + Screen.DrawText(mSmallFont,Font.CR_WHITE,(Screen.GetWidth()-mSmallFont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(mSmallFont.GetHeight()*CleanYFac*3)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf); str = StringTable.Localize("$SWWM_TITLEINTROB"); - Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(smallfont.GetHeight()*CleanYFac)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf); + Screen.DrawText(mSmallFont,Font.CR_WHITE,(Screen.GetWidth()-mSmallFont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)-(mSmallFont.GetHeight()*CleanYFac)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf); str = StringTable.Localize("$SWWM_TITLEINTROC"); - Screen.DrawText(smallfont,Font.CR_WHITE,(Screen.GetWidth()-smallfont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)+(smallfont.GetHeight()*CleanYFac)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf); + Screen.DrawText(mSmallFont,Font.CR_WHITE,(Screen.GetWidth()-mSmallFont.StringWidth(str)*CleanXFac)/2,(Screen.GetHeight()/2)+(mSmallFont.GetHeight()*CleanYFac)/2,str,DTA_CleanNoMove,true,DTA_Alpha,alf); double ar = Screen.GetAspectRatio(); Vector2 tsize = TexMan.GetScaledSize(tex[4]); double sar = tsize.x/tsize.y; @@ -294,35 +263,38 @@ Class SWWMTitleStuff : EventHandler if ( sar > ar ) vsize = (tsize.x,tsize.x/ar); else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y); else vsize = tsize; - if ( (titletimer+e.FracTic)/GameTicRate < 22 ) return; - if ( bFadeIn ) Screen.Dim("Black",1.-clamp(((titletimer+e.FracTic)/GameTicRate)-22,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); - if ( (titletimer+e.FracTic)/GameTicRate < 27 ) + if ( GameSecs < 22 ) return; + double alf1 = clamp((GameSecs-26.5)*.5,0.,1.); + double alf2 = (GameSecs>28)?clamp((GameSecs-3)%5,0.,1.):0.; + lfade.Clear(0,0,4,4,Color(int(255*alf1),int(255*alf2),0)); + if ( bFadeIn ) Screen.Dim(0xFF000000,1.-clamp(GameSecs-22,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight()); + if ( GameSecs < 27 ) { static const int lofs[] = { 153, 311, 489, 690, 844, 946, 1065, 1186, 1319, 1493, 1626, 1754, 1910 }; // draw letters one by one - double alph = 1.-clamp(((titletimer+e.FracTic)/GameTicRate)-26.5,0.,1.); + double alph = 1.-clamp(GameSecs-26.5,0.,1.); for ( int i=0; i<13; i++ ) { - if ( ((titletimer+e.FracTic)/GameTicRate) < (23.+i*.2) ) continue; - double alf = 1.-clamp((((titletimer+e.FracTic)/GameTicRate)-(23+i*.2))*5.,0.,1.); + if ( GameSecs < (23.+i*.2) ) continue; + double alf = 1.-clamp((GameSecs-(23+i*.2))*5.,0.,1.); double zoom = 1.+.2*alf; Screen.DrawTexture(letters[i],false,(vsize.x-tsize.x)/2+lofs[i],(vsize.y-tsize.y)/2+513,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_ScaleX,zoom,DTA_ScaleY,zoom,DTA_ColorOverlay,Color(int(128*(alf**2)),255,255,255),DTA_Alpha,alph); } } - if ( (titletimer+e.FracTic)/GameTicRate > 25 ) + if ( GameSecs > 25 ) { - alf = clamp(((titletimer+e.FracTic)/GameTicRate)-25.5,0.,1.); + alf = clamp(GameSecs-25.5,0.,1.); Screen.DrawTexture(tex[4],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf); } double scl = Screen.GetHeight()/vsize.y; - double tscl1 = max(1./3.,(floor((Screen.GetHeight()*3.)/vsize.y)+4.)/3.); + double tscl1 = max(1.,floor((Screen.GetHeight()*4.)/vsize.y)+3.); str = "CODENAME"; - alf = clamp(((titletimer+e.FracTic)/GameTicRate)-22,0.,1.); - Screen.DrawText(BigFont,Font.CR_SAPPHIRE,(Screen.GetWidth()-tscl1*BigFont.StringWidth(str))/2,(Screen.GetHeight()-(scl*400+BigFont.GetHeight()*tscl1))/2,str,DTA_ScaleX,tscl1,DTA_ScaleY,tscl1,DTA_Alpha,alf); - double tscl2 = max(1./3.,(floor((Screen.GetHeight()*3.)/vsize.y)+1.)/3.); + alf = clamp(GameSecs-22,0.,1.); + Screen.DrawText(mBigFont,Font.CR_SAPPHIRE,int(Screen.GetWidth()-tscl1*mBigFont.StringWidth(str))/2,int(Screen.GetHeight()-(scl*400+mBigFont.GetHeight()*tscl1))/2,str,DTA_ScaleX,tscl1,DTA_ScaleY,tscl1,DTA_Alpha,alf); + double tscl2 = max(1.,floor((Screen.GetHeight()*4.)/vsize.y)); if ( !stitle || (lastlang2 != language) ) { Array done; @@ -349,79 +321,22 @@ Class SWWMTitleStuff : EventHandler } else c.SetString("1"); if ( stitle ) stitle.Destroy(); - stitle = BigFont.BreakLines(StringTable.Localize("$SWWM_TITLESUB"..which),int.max); + stitle = mBigFont.BreakLines(StringTable.Localize("$SWWM_TITLESUB"..which),int.max); } lastlang2 = language; - alf = clamp(((titletimer+e.FracTic)/GameTicRate)-27,0.,1.); + alf = clamp(GameSecs-27,0.,1.); double xx; - double yy = (Screen.GetHeight()+(scl*360+(1.-alf)*80*tscl2))/2; + double yy = int(Screen.GetHeight()+(scl*360+(1.-alf)*80*tscl2))/2; for ( int i=0; i= 23.) && (((titletimer+e.FracTic)/GameTicRate) < 25.6) ) + if ( (GameSecs >= 23.) && (GameSecs < 25.6) ) { - double alf = 1.-SWWMUtility.fract(((titletimer+e.FracTic)/GameTicRate)*5.); - Screen.Dim("White",.05*alf,0,0,Screen.GetWidth(),Screen.GetHeight()); + double alf = 1.-SWWMUtility.fract(GameSecs*5.); + Screen.Dim(0xFFFFFFFF,.05*alf,0,0,Screen.GetWidth(),Screen.GetHeight()); } } } - -const LOGOFADERBASE = 60000.; - -Class LogoFader : Actor -{ - Actor base; - SWWMTitleStuff hnd; - - Default - { - +NOGRAVITY; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - Radius .1; - Height 0; - } - - override void PostBeginPlay() - { - SetOrigin((LOGOFADERBASE+32,LOGOFADERBASE,0),false); - SetZ(floorz); - roll = 180; - angle = 180; - double halfstretch = (1.+level.pixelstretch)/2.; - if ( !base ) base = Spawn("LogoFaderSurface",(LOGOFADERBASE,LOGOFADERBASE-32.,floorz+32.*halfstretch)); - } - override void Tick() - { - double alf1 = clamp(((double(hnd.titletimer)/GameTicRate)-26.5)*.5,0.,1.); - double alf2 = (hnd.titletimer>28*GameTicRate)?clamp((double((hnd.titletimer-GameTicRate*3)%(GameTicRate*5))/GameTicRate),0.,1.):0.; - base.SetShade(Color(int(255*alf1),int(255*alf2),0)); - } -} - -Class LogoFaderSurface : Actor -{ - Default - { - Radius .1; - Height 0.; - RenderRadius 256; - +NOBLOCKMAP; - +NOGRAVITY; - +NOINTERACTION; - +DONTSPLASH; - +WALLSPRITE; - RenderStyle "Stencil"; - } - override void Tick(){} - States - { - Spawn: - LGFD A -1 Bright; - Stop; - } -} diff --git a/zscript/player/swwm_player.zsc b/zscript/player/swwm_player.zsc new file mode 100644 index 000000000..0a83284e2 --- /dev/null +++ b/zscript/player/swwm_player.zsc @@ -0,0 +1,858 @@ +// The Demolitionist + +Enum EDemoFaceState +{ + FS_DEFAULT, + FS_EVIL, + FS_GRIN, + FS_WINK, + FS_BLINK, + FS_SAD, + FS_PAIN, + FS_OUCH, + FS_DEAD // UNUSED +}; + +Class Demolitionist : PlayerPawn +{ + int last_jump_held, last_boost, last_kick; + Vector3 dashdir; + double dashfuel, dashboost; + int dashcooldown, boostcooldown, fuelcooldown; + int dashlockst; + bool fullfuel; + bool sendtoground; + bool bInDefaultInventory; + bool oldsinglefirst; + + transient int lastdamage; + transient int lastdamagetic, lastdamagetimer; + bool lastground; + int lastgroundtic, lastairtic; + double lastvelz, prevvelz, landvelz; + double ssup; + + SWWMStats mystats; + int cairtime; + bool hasteleported; + bool hasrevived; + + int lastmpain; + + double guideangle, guidepitch, guideroll; + + // for weapon bobbing and stuff + double bumpvelz, bumpangle, bumppitch, bumproll; + + Vector3 oldangles; + Vector3 oldlagangles, lagangles; + Vector3 oldlagdangles, lagdangles; + Vector3 oldlagvel, lagvel; + double oldlagready, lagready; + + enum EUnderType + { + UNDER_NONE, + UNDER_WATER, + UNDER_SLIME, + UNDER_LAVA + }; + + int lastunder; + Color undercol; + int deadtimer; + transient int revivefail; + + transient int bumptic; + transient double lastbump; + + DemolitionistSelfLight selflight; + Actor oldencroached; + Vector3 oldencroachedpos; + int encroachtics; + + Vector3 pretelepos; + + SWWMItemSense itemsense; + + int healcooldown, healtimer, oldhealth; + bool scriptedinvul; + bool hitactivate; + Actor froggy; + + transient int lastuse, failcounter, failcooldown, mirrorcooldown; + transient SWWMItemTracer itrace; + transient SWWMMirrorTracer mtrace; + bool meleeuse; + + transient bool bWalking; + + int airscreamtime; + + enum EInvWipe + { + WIPE_EPISODE = 1, + WIPE_CLUSTER = 2, + WIPE_MAP = 4 + } + + int invwipe; // inventory wipe flags for next level + + transient int lastbang, lastbust, lastkiss; + + transient bool ingivecheat; + + Property DashFuel : dashfuel; + + EDemoFaceState facestate; + int paindir; + int facetimer; + int blinktime; + transient int oldfaceidx; + transient int rss; + transient bool facedamage, facegrin, facesad, facewink, faceblink; + + int oldtagcolor; + + transient int magtime; + SWWMMagItem magitem; + int magitem_cnt; + + SWWMShadow myshadow; + + double bobtime, oldbobtime, oldbob; + + bool isAnalogMoving; + + // bloody footprints (yes, separate for each foot) + double footblood[2]; + Color footbloodcol[2]; + + SWWMHandler hnd; + + Default + { + Tag "$T_DEMOLITIONIST"; + Speed 1; + Radius 16; // should be 9 in theory, but it'd be too thin + Height 56; + Mass 500; + PainChance 255; + MaxSlopeSteepness 0; // mountain goat mode, all slopes are walkable + Player.DisplayName "$T_DEMOLITIONIST"; + // StartItem array is defined but not used directly + // just declared here for mod compat + Player.StartItem 'ExplodiumGun'; + Player.StartItem 'DeepImpact'; + Player.StartItem 'AlmasteelPlating'; + Player.StartItem 'SayaCollar'; + Player.ViewHeight 52; + Player.AirCapacity 0; + Player.GruntSpeed 20; + Player.ForwardMove 1., 1.; + Player.SideMove 1., 1.; + Player.SoundClass "demolitionist"; + Player.FlyBob 0.; + Player.WaterClimbSpeed 0.; + DamageFactor "Drowning", 0.; + DamageFactor "Poison", 0.; + DamageFactor "PoisonCloud", 0.; + DamageFactor "Falling", 0.; + Demolitionist.DashFuel 240.; + +NOBLOOD; + +DONTGIB; + +NOICEDEATH; + +NOSKIN; + +DONTMORPH; + +DONTDRAIN; + +DONTCORPSE; + -WINDTHRUST; // too heavy + } + + override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) + { + if ( inflictor && inflictor.FindInventory("ParriedBuff") ) return StringTable.Localize("$O_PARRY"); + if ( mod == 'Jump' ) return StringTable.Localize("$O_JUMP"); + if ( mod == 'Dash' ) return StringTable.Localize("$O_DASH"); + if ( mod == 'Buttslam' ) return StringTable.Localize("$O_BUTT"); + if ( mod == 'GroundPound' ) return StringTable.Localize("$O_POUND"); + return Super.GetObituary(victim,inflictor,mod,playerattack); + } + + override String GetSelfObituary( Actor inflictor, Name mod ) + { + if ( inflictor && (inflictor != self) ) + { + String msg = inflictor.GetSelfObituary(inflictor,mod); + if ( msg != "" ) return msg; + } + if ( mod == 'Massacre' ) return StringTable.Localize("$OB_KILLEDSELF"); + return SelfObituary; + } + + override double GetDeathHeight() + { + double basedeathheight = Super.GetDeathHeight(); + // limit death height to crouch height, to avoid dying players from getting stuck on revive + return max(Height*.3,basedeathheight); + } + + override void PostBeginPlay() + { + Super.PostBeginPlay(); + lastground = true; // prevent sudden landing sound on map start + blinktime = 30; + // prevent jumpy weapon bob on game start + oldangles = (angle,pitch,roll); + // swap ourselves for a voodoo doll + if ( !player || (player.mo != self) ) + { + let v = Spawn('SWWMVoodooDoll',pos); + v.angle = angle; + v.player = player; + // give it a face if it belongs to a player + if ( player ) + { + v.bFRIENDLY = true; + v.A_ChangeModel("",0,"","",1,"models","VoodooDollFace.png",CMDL_USESURFACESKIN,-1); + } + Destroy(); + return; + } + oldsinglefirst = swwm_singlefirst; // super already sets up the slots, so save the cvar value now + mystats = SWWMStats.Find(player); + // sanity checks + if ( !EventHandler.Find('SWWMHandler') || !StaticEventHandler.Find('SWWMStaticHandler') ) + ThrowAbortException("Panic! SWWM event handlers not detected!"); + } + + void BumpView( double str, Vector3 dir = (0,0,0) ) + { + double dirlen = dir.length(); + if ( dirlen < double.epsilon ) + { + bumppitch += str; + return; + } + dir /= dirlen; + Vector3 x, y; + Quat r = Quat.FromAngles(angle+viewangle,pitch+viewpitch,roll+viewroll); + x = r*(1,0,0); + y = r*(0,-1,0); + double sx = dir dot x; + double sy = dir dot y; + if ( !sx && !sy ) bumppitch += str; + else + { + bumppitch += str*sx; + bumproll += str*sy; + } + } + + override void CheckFOV() + { + if ( !player ) return; + float desired = player.desiredfov; + // adjust fov from weapon (abs due to special use of negative + // to prevent it from scaling look sensitivity) + if ( (player.playerstate != PST_DEAD) && player.readyweapon + && player.readyweapon.fovscale ) + desired *= abs(player.readyweapon.fovscale); + // additional fov bump from various effects + // akin to the old A_ZoomFactor trick, but not limited to weapons and can stack + if ( lastbump <= 0. ) lastbump = 1.; + if ( lastbump != 1. ) + { + double str = CVar.GetCVar('swwm_bumpstrength',player).GetFloat(); + player.fov *= lastbump*str+1.-str; + lastbump = 1.; + } + // adjust fov from dashing + double spd = vel.length(); + if ( InStateSequence(CurState,FindState('Dash')) && (spd > 10.) ) + { + Vector3 facedir = SWWMUtility.Vec3FromAngles(angle,pitch); + if ( spd > 0. ) + { + double rel = max(0,vel.unit() dot facedir); + desired *= 1.+clamp(rel*(spd-10.),-80.,80.)*.002; + } + } + if ( player.fov == desired ) return; + // interpolate towards desired fov + if ( abs(player.fov-desired) < .1 ) player.fov = desired; + else + { + float zoom = max(.1,abs(player.fov-desired)*.35); + if ( player.fov > desired ) player.fov -= zoom; + else player.fov += zoom; + } + } + + override void CheckPoison() + { + // HAHA no + player.poisoncount = 0; + } + + private void CheckBreakCrusher() + { + double gaph = (ceilingz-floorz); + if ( gaph > height*.8 ) return; + // the smaller the gap, the more likely the crusher will snap + if ( Random[Demolitionist](0,2) && (FRandom[Demolitionist](0,gaph/height) > .2) ) return; + double diffh = 8.+(default.height-gaph); // how much the crusher will have to "snap" after breaking + let ceil = ceilingsector; + let flor = floorsector; + let ceilse = ceil.ceilingdata; + let florse = flor.floordata; + if ( ceilse && florse ) + { + // snap both planes + let q = Spawn('BustedQuake',(ceil.centerspot.x,ceil.centerspot.y,ceil.ceilingplane.ZAtPoint(ceil.centerspot))); + q.specialf1 = 6.; + q = Spawn('BustedQuake',(flor.centerspot.x,flor.centerspot.y,flor.floorplane.ZAtPoint(flor.centerspot))); + q.specialf1 = 6.; + SWWMCrusherBroken.Create(flor,ceil,diffh/2.); + } + else if ( ceilse ) + { + // snap ceiling + let q = Spawn('BustedQuake',(ceil.centerspot.x,ceil.centerspot.y,ceil.ceilingplane.ZAtPoint(ceil.centerspot))); + q.specialf1 = 10.; + SWWMCrusherBroken.Create(null,ceil,diffh); + } + else if ( florse ) + { + // snap floor + let q = Spawn('BustedQuake',(flor.centerspot.x,flor.centerspot.y,flor.floorplane.ZAtPoint(flor.centerspot))); + q.specialf1 = 10.; + SWWMCrusherBroken.Create(flor,null,diffh); + } + SWWMUtility.MarkAchievement("crush",player); + } + + private void CheckBreakPolyobject( int dmg ) + { + // see if there are any crushing polyobjects currently "encroaching" the player + Array touching; + BlockLinesIterator bl = BlockLinesIterator.Create(self,radius+8); + double tbox[4]; + // top, bottom, left, right + tbox[0] = pos.y+(radius+8); + tbox[1] = pos.y-(radius+8); + tbox[2] = pos.x-(radius+8); + tbox[3] = pos.x+(radius+8); + foreach( l,p,f:bl ) + { + if ( !l ) continue; + if ( tbox[2] > l.bbox[3] ) continue; + if ( tbox[3] < l.bbox[2] ) continue; + if ( tbox[0] < l.bbox[1] ) continue; + if ( tbox[1] > l.bbox[0] ) continue; + if ( Level.BoxOnLineSide(pos.xy,radius+8,l) != -1 ) continue; + touching.Push(l); + } + let pi = swwm_PolyobjectIterator.Create(); + swwm_PolyobjectHandle p; + while ( p = pi.Next() ) + { + if ( (p.Type != swwm_PolyobjectHandle.POTYP_CRUSH) && (p.Type != swwm_PolyobjectHandle.POTYP_HURT) ) + continue; + foreach ( l:touching ) + { + if ( p.Lines.Find(l) >= p.Lines.Size() ) continue; + Vector2 diragainst = pos.xy-p.GetPos(); + double vsiz = diragainst.length(); + if ( vsiz > 0 ) diragainst /= vsiz; + if ( BusterWall.BustPolyobj(p,max(dmg,(100-health)*5),self,(diragainst.x,diragainst.y,0)) ) + SWWMUtility.MarkAchievement("crush",player); + if ( p.Mirror && BusterWall.BustPolyobj(p.Mirror,max(dmg,(100-health)*5),self,-(diragainst.x,diragainst.y,0)) ) + SWWMUtility.MarkAchievement("crush",player); + } + } + } + + override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle ) + { + // we still have to ENSURE ENTIRELY that this gets nullified (TELEFRAG_DAMAGE overrides damage factors somehow) + if ( (mod == 'Falling') | (mod == 'Drowning') || (mod == 'Poison') || (mod == 'PoisonCloud') ) + damage = 0; + if ( (swwm_strictuntouchable >= 2) && (damage > 0) && player ) + { + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( hnd ) hnd.tookdamage[PlayerNumber()] = true; + } + if ( (mod == 'Crush') && player && (player.mo == self) ) + { + // check if we can break any active crushers + // (or polyobjects) + if ( !inflictor && !source ) + { + CheckBreakCrusher(); + CheckBreakPolyobject(damage); + } + // break a spike trap + else if ( source is 'ThrustFloor' ) + { + let q = Spawn('BustedQuake',source.pos); + q.specialf1 = 4.; + int numpt = Random[ExploS](30,40); + for ( int i=0; i 0) && (PainChance == 0) && (level.maptime>lastmpain) ) + { + lastmpain = level.maptime; + if ( player && (player.mo == self) ) A_DemoPain(); + } + PainChance = oldpchance; + if ( (Health <= 0) && (source == self) && (flags&DMG_EXPLOSION) ) + SWWMUtility.MarkAchievement("dime",player); + facedamage = true; + return realdmg; + } + + private Vector2 BobWeaponAngle( double ticfrac ) + { + // bob with player view + Vector2 prevbob = (-sin(oldbobtime*180.),.5*abs(sin(oldbobtime*180.)))*oldbob*.25; + Vector2 bob = (-sin(bobtime*180.),.5*abs(sin(bobtime*180.)))*player.bob*.25; + double bobstr = (player.WeaponState&WF_WEAPONBOBBING)?1.:player.GetWBobFire(); + return SWWMUtility.LerpVector2(prevbob,bob,ticfrac)*bobstr*clamp(viewbob,0.,1.5); + } + + // proper 3D weapon bob + override Vector3, Vector3 BobWeapon3D( double ticfrac ) + { + if ( !player || !player.ReadyWeapon || player.ReadyWeapon.bDontBob ) + return (0,0,0), (0,0,0); + bool oldbob = !!(player.WeaponState&WF_WEAPONBOBBING); + player.WeaponState |= WF_WEAPONBOBBING; // always bob + Vector2 cur = BobWeaponAngle(ticfrac); + if ( !oldbob ) player.WeaponState &= ~WF_WEAPONBOBBING; + Vector3 angles = SWWMUtility.LerpVector3(oldlagangles,lagangles,ticfrac); + Vector3 dangles = SWWMUtility.LerpVector3(oldlagdangles,lagdangles,ticfrac); + if ( abs(dangles.x) > 1. ) + { + int sgn = (dangles.x>0)?1:-1; + dangles.x = abs(dangles.x)**.75*sgn; + } + if ( abs(dangles.y) > 1. ) + { + int sgn = (dangles.y>0)?1:-1; + dangles.y = abs(dangles.y)**.75*sgn; + } + if ( abs(dangles.z) > 1. ) + { + int sgn = (dangles.z>0)?1:-1; + dangles.z = abs(dangles.z)**.75*sgn; + } + Vector3 flagvel = SWWMUtility.LerpVector3(oldlagvel,lagvel,ticfrac); + let [x, y, z] = SWWMUtility.GetAxes(angles.x,angles.y,angles.z); + let [x2, y2, z2] = SWWMUtility.GetAxes(angles.x,0,angles.z); + double diffx = flagvel dot x; + double diffy = flagvel dot y; + double diffz = flagvel dot z; + double diffy2 = flagvel dot y2; + double diffz2 = flagvel dot z2; + if ( abs(diffx) > 1. ) + { + int sgn = (diffx>0)?1:-1; + diffx = abs(diffx)**.75*sgn; + } + if ( abs(diffy) > 1. ) + { + int sgn = (diffy>0)?1:-1; + diffy = abs(diffy)**.75*sgn; + } + if ( abs(diffz) > 1. ) + { + int sgn = (diffz>0)?1:-1; + diffz = abs(diffz)**.75*sgn; + } + if ( abs(diffy2) > 1. ) + { + int sgn = (diffy2>0)?1:-1; + diffy2 = abs(diffy2)**.75*sgn; + } + if ( abs(diffz2) > 1. ) + { + int sgn = (diffz2>0)?1:-1; + diffz2 = abs(diffz2)**.75*sgn; + } + Vector3 bobvec = (diffy,-diffz,diffx*.5)*20. + (cur.x,-cur.y,cur.y)*15.; + Vector3 bobang = (dangles.x,dangles.y,dangles.z)*.15 - (cur.x,cur.y,-cur.x*2.)*.05 - (diffy2,diffz2,0)*.02; + double fready = SWWMUtility.Lerp(oldlagready,lagready,ticfrac); + double rfact = 1., vfact = 1.; + if ( player.ReadyWeapon is 'SWWMWeapon' ) + { + let sw = SWWMWeapon(player.ReadyWeapon); + rfact = sw.bobfactor_ang; + vfact = sw.bobfactor_vec; + } + return bobvec*fready*vfact, bobang*fready*rfact; + } + + // compatibility with 2D weapons (may cause sprite cutoff) + override Vector2 BobWeapon( double ticfrac ) + { + if ( !player || !player.ReadyWeapon || player.ReadyWeapon.bDontBob ) + return (0,0); + bool oldbob = !!(player.WeaponState&WF_WEAPONBOBBING); + player.WeaponState |= WF_WEAPONBOBBING; // always bob + Vector2 cur = BobWeaponAngle(ticfrac); + if ( !oldbob ) player.WeaponState &= ~WF_WEAPONBOBBING; + Vector3 angles = SWWMUtility.LerpVector3(oldlagangles,lagangles,ticfrac); + Vector3 dangles = SWWMUtility.LerpVector3(oldlagdangles,lagdangles,ticfrac); + if ( abs(dangles.x) > 1. ) + { + int sgn = (dangles.x>0)?1:-1; + dangles.x = abs(dangles.x)**.75*sgn; + } + if ( abs(dangles.y) > 1. ) + { + int sgn = (dangles.y>0)?1:-1; + dangles.y = abs(dangles.y)**.75*sgn; + } + cur.x += dangles.x*.4; + cur.y -= dangles.y*.4; + Vector3 flagvel = SWWMUtility.LerpVector3(oldlagvel,lagvel,ticfrac); + let [x, y, z] = SWWMUtility.GetAxes(angles.x,0,angles.z); + double diffy = flagvel dot y; + double diffz = flagvel dot z; + if ( abs(diffy) > 1. ) + { + int sgn = (diffy>0)?1:-1; + diffy = abs(diffy)**.75*sgn; + } + if ( abs(diffz) > 1. ) + { + int sgn = (diffz>0)?1:-1; + diffz = abs(diffz)**.75*sgn; + } + cur.x -= diffy*.4; + cur.y += diffz*.4; + return cur*SWWMUtility.Lerp(oldlagready,lagready,ticfrac); + } + + override bool OnGiveSecret( bool printmsg, bool playsound ) + { + if ( !player ) return false; + int score = 100; + // last secret (this is called before counting it up, so have to subtract) + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( !deathmatch && !(gameinfo.gametype&GAME_Hexen) && (level.found_secrets == level.total_secrets-1) && (!hnd || !hnd.allsecrets) ) + { + if ( hnd ) hnd.allsecrets = true; + score = 1000; + if ( player == players[consoleplayer] ) + { + Console.Printf(StringTable.Localize("$SWWM_LASTSECRET"),score); + SWWMHandler.AddOneliner("findsecret",2,40); + facegrin = true; + } + else Console.Printf(StringTable.Localize("$SWWM_LASTSECRETREM"),player.GetUserName(),score); + SWWMUtility.AchievementProgressInc("allsecrets",1,player); + } + else if ( player == players[consoleplayer] ) + { + Console.Printf(StringTable.Localize("$SWWM_FINDSECRET"),score); + SWWMHandler.AddOneliner("findsecret",2,40); + facegrin = true; + } + else Console.Printf(StringTable.Localize("$SWWM_FINDSECRETREM"),player.GetUserName(),score); + SWWMCredits.Give(player,score); + if ( player == players[consoleplayer] ) SWWMScoreObj.SpawnAtActorBunch(score,self); + // somehow ongivesecret can be called BEFORE PostBeginPlay (wat) + if ( !mystats ) mystats = SWWMStats.Find(player); + mystats.secrets++; + return true; + } + + override bool Used( Actor user ) + { + if ( !(user is 'Demolitionist') || !player || (player.mo != self) ) return false; + if ( (user.player == players[consoleplayer]) && (health > 0) ) + { + SWWMHandler.AddOneliner("greet",2); + return true; + } + return false; + } + + override void PreTravelled() + { + // clean up attached actors + if ( selflight ) selflight.Destroy(); + if ( myshadow ) myshadow.Destroy(); + // clean up our objects + SWWMItemSense si = itemsense; + while ( si ) + { + let next = si.next; + si.Destroy(); + si = next; + } + SWWMMagItem mi = magitem; + while ( mi ) + { + let next = mi.next; + mi.Destroy(); + mi = next; + } + magitem_cnt = 0; + // disable death exits + if ( player && (player.playerstate == PST_DEAD) ) + { + player.cheats &= ~(CF_FROZEN|CF_TOTALLYFROZEN); + player.Resurrect(); + player.damagecount = 0; + player.bonuscount = 0; + player.poisoncount = 0; + roll = 0; + if ( special1 > 2 ) special1 = 0; + } + // inventory wipes + if ( invwipe && (player.playerstate != PST_DEAD) ) + { + bool wiped = false; + bool resetammo = false; + bool resetitems = false; + bool resethealth = false; + if ( invwipe&WIPE_EPISODE ) + { + SWWMUtility.WipeInventory(self,swwm_resetscore); + wiped = true; + } + if ( invwipe&WIPE_CLUSTER ) + { + if ( (swwm_ps_fullreset == 2) && !wiped ) + { + SWWMUtility.WipeInventory(self,swwm_resetscore); + wiped = true; + } + if ( (swwm_ps_resetammo == 2) && !wiped ) + { + SWWMUtility.ResetAmmo(self); + resetammo = true; + } + if ( (swwm_ps_resetitems == 2) && !wiped ) + { + SWWMUtility.ResetItems(self); + resetitems = true; + } + if ( (swwm_ps_resethealth == 2) && !wiped ) + { + SWWMUtility.ResetHealth(self); + resethealth = true; + } + } + if ( invwipe&WIPE_MAP ) + { + if ( (swwm_ps_fullreset == 1) && !wiped ) + { + SWWMUtility.WipeInventory(self,swwm_resetscore); + wiped = true; + } + if ( (swwm_ps_resetammo == 1) && !wiped && !resetammo ) + SWWMUtility.ResetAmmo(self); + if ( (swwm_ps_resetitems == 1) && !wiped && !resetitems ) + SWWMUtility.ResetItems(self); + if ( (swwm_ps_resethealth == 1) && !wiped && !resethealth ) + SWWMUtility.ResetHealth(self); + } + } + invwipe = 0; + } + + override void Travelled() + { + // reinitialize + dashfuel = default.dashfuel; + last_boost = 0; + last_kick = 0; + hasrevived = false; + blinktime = 30; + // cancel dash/boost + A_StopSound(CHAN_JETPACK); + fuelcooldown = 0.; + dashcooldown = 0.; + dashboost = 0.; + // prevent sudden stomping if we were previously falling + lastvelz = vel.z; + // clear bob data + oldlagangles = lagangles = oldangles = (angle,pitch,roll); + oldlagdangles = lagdangles = (0.,0.,0.); + oldlagvel = lagvel = vel; + bumpvelz = bumpangle = bumppitch = bumproll = 0.; + ViewAngle = ViewPitch = ViewRoll = 0.; + SetViewPos((0.,0.,0.)); + // early cancel gestures + if ( player ) + { + if ( player.ReadyWeapon is 'SWWMItemGesture' ) + player.ReadyWeapon = SWWMItemGesture(player.ReadyWeapon).gest; + if ( player.ReadyWeapon is 'SWWMGesture' ) + { + player.PendingWeapon = SWWMGesture(player.ReadyWeapon).formerweapon; + player.SetPSprite(PSP_WEAPON,player.ReadyWeapon.ResolveState('Deselect')); + } + } + } + + override bool PreTeleport( Vector3 destpos, double destangle, int flags ) + { + // store old pos + pretelepos = pos; + return true; + } + + override void PostTeleport( Vector3 destpos, double destangle, int flags ) + { + hasteleported = true; // notify tick that we teleported, so it ignores the travel distance + mystats.teledist += level.Vec3Diff(pretelepos,pos).length(); + // reset all smooth bob variables if angles/velocity aren't carried over + if ( !(flags&TELF_KEEPORIENTATION) ) + { + oldlagangles = lagangles = oldangles = (angle,pitch,roll); + oldlagdangles = lagdangles = (0.,0.,0.); + bumpangle = bumppitch = bumproll = 0.; + } + if ( !(flags&TELF_KEEPVELOCITY) ) + { + oldlagvel = lagvel = vel; + lastvelz = vel.z; + bumpvelz = 0.; + } + // notify carried lamp that we just moved + let l = SWWMLamp(FindInventory('SWWMLamp')); + if ( l && l.thelamp ) + CompanionLamp(l.thelamp).justteleport = true; + } + + override void MarkPrecacheSounds() + { + Super.MarkPrecacheSounds(); + MarkSound("demolitionist/walk1"); + MarkSound("demolitionist/walk2"); + MarkSound("demolitionist/walk3"); + MarkSound("demolitionist/walk4"); + MarkSound("demolitionist/runstart1"); + MarkSound("demolitionist/runstart2"); + MarkSound("demolitionist/runstart3"); + MarkSound("demolitionist/runstart4"); + MarkSound("demolitionist/run1"); + MarkSound("demolitionist/run2"); + MarkSound("demolitionist/run3"); + MarkSound("demolitionist/run4"); + MarkSound("demolitionist/runstop1"); + MarkSound("demolitionist/runstop2"); + MarkSound("demolitionist/runstop3"); + MarkSound("demolitionist/runstop4"); + MarkSound("demolitionist/jet"); + MarkSound("demolitionist/jetstop"); + MarkSound("demolitionist/death1"); + MarkSound("demolitionist/death2"); + MarkSound("demolitionist/death3"); + MarkSound("demolitionist/xdeath1"); + MarkSound("demolitionist/xdeath2"); + MarkSound("demolitionist/xdeath3"); + MarkSound("demolitionist/wdeath1"); + MarkSound("demolitionist/wdeath2"); + MarkSound("demolitionist/wdeath3"); + MarkSound("demolitionist/pain1"); + MarkSound("demolitionist/pain2"); + MarkSound("demolitionist/pain3"); + MarkSound("demolitionist/hipain1"); + MarkSound("demolitionist/hipain2"); + MarkSound("demolitionist/hipain3"); + MarkSound("demolitionist/lopain1"); + MarkSound("demolitionist/lopain2"); + MarkSound("demolitionist/lopain3"); + MarkSound("demolitionist/hardland1"); + MarkSound("demolitionist/hardland2"); + MarkSound("demolitionist/hardland3"); + MarkSound("demolitionist/swing1"); + MarkSound("demolitionist/swing2"); + MarkSound("demolitionist/swing3"); + MarkSound("demolitionist/wswing1"); + MarkSound("demolitionist/wswing2"); + MarkSound("demolitionist/punch1"); + MarkSound("demolitionist/punch2"); + MarkSound("demolitionist/punch3"); + MarkSound("demolitionist/punchf1"); + MarkSound("demolitionist/punchf2"); + MarkSound("demolitionist/punchf3"); + MarkSound("demolitionist/bump1"); + MarkSound("demolitionist/bump2"); + MarkSound("demolitionist/bump3"); + MarkSound("demolitionist/kick1"); + MarkSound("demolitionist/kick2"); + MarkSound("demolitionist/kick3"); + MarkSound("demolitionist/revive"); + MarkSound("demolitionist/youdied"); + MarkSound("demolitionist/parry"); + MarkSound("demolitionist/handsup"); + MarkSound("demolitionist/handsdown"); + MarkSound("demolitionist/whits1"); + MarkSound("demolitionist/whits2"); + MarkSound("demolitionist/whits3"); + MarkSound("demolitionist/whitm1"); + MarkSound("demolitionist/whitm2"); + MarkSound("demolitionist/whitm3"); + MarkSound("demolitionist/whitl1"); + MarkSound("demolitionist/whitl2"); + MarkSound("demolitionist/buttslam1"); + MarkSound("demolitionist/buttslam2"); + MarkSound("demolitionist/buttslam3"); + MarkSound("demolitionist/buttslamx"); + MarkSound("demolitionist/petting"); + MarkSound("demolitionist/knockout"); + } +} diff --git a/zscript/player/swwm_player_anim.zsc b/zscript/player/swwm_player_anim.zsc new file mode 100644 index 000000000..1ab074017 --- /dev/null +++ b/zscript/player/swwm_player_anim.zsc @@ -0,0 +1,944 @@ +// animations and states +extend Class Demolitionist +{ + override void PlayIdle() + { + if ( !player ) + { + if ( !InStateSequence(CurState,FindState('Spawn')) ) + SetStateLabel('Spawn'); + return; + } + if ( player.health <= 0 ) return; + if ( !bNoGravity && player.onground ) + { + // Ground + if ( player.crouchdir == -1 ) + { + // Crouching + if ( InStateSequence(CurState,FindState('CrouchMove')) + || InStateSequence(CurState,FindState('CrouchMoveRun')) + || InStateSequence(CurState,FindState('CrouchMoveFast')) ) + SetStateLabel('Crouch'); + else if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Float')) + || InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('StartCrouch'); + } + else + { + if ( InStateSequence(CurState,FindState('Crouch')) + || InStateSequence(CurState,FindState('CrouchMove')) + || InStateSequence(CurState,FindState('CrouchMoveRun')) + || InStateSequence(CurState,FindState('CrouchMoveFast')) ) + SetStateLabel('EndCrouch'); + else if ( InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('Float')) ) + { + SetStateLabel('Spawn'); + A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.2); + } + else if ( InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) ) + SetStateLabel('SeeFastEnd'); + else if ( InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('SwimEnd'); + } + } + else if ( !bNoGravity ) + { + // Falling + if ( player.crouchdir == -1 ) + { + if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Jump')) + || InStateSequence(CurState,FindState('Float')) + || InStateSequence(CurState,FindState('Fall')) + || InStateSequence(CurState,FindState('FallLoop')) + || InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('StartCrouch'); + } + else + { + if ( (InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Float'))) + && (abs(pos.z-floorz) > maxstepheight) ) + SetStateLabel('Fall'); + else if ( InStateSequence(CurState,FindState('Crouch')) + || InStateSequence(CurState,FindState('CrouchMove')) + || InStateSequence(CurState,FindState('CrouchMoveRun')) + || InStateSequence(CurState,FindState('CrouchMoveFast')) ) + SetStateLabel('EndCrouch'); + else if ( InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('SwimEnd'); + } + } + else + { + // Swimming + if ( player.crouchdir == -1 ) + { + // Crouching + if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Jump')) + || InStateSequence(CurState,FindState('Float')) + || InStateSequence(CurState,FindState('Fall')) + || InStateSequence(CurState,FindState('FallLoop')) + || InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('StartCrouch'); + } + else + { + if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Jump')) + || InStateSequence(CurState,FindState('Fall')) + || InStateSequence(CurState,FindState('FallLoop')) ) + SetStateLabel('Float'); + else if ( InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('SwimEnd'); + else if ( InStateSequence(CurState,FindState('Crouch')) + || InStateSequence(CurState,FindState('CrouchMove')) + || InStateSequence(CurState,FindState('CrouchMoveRun')) + || InStateSequence(CurState,FindState('CrouchMoveFast')) ) + SetStateLabel('EndCrouch'); + } + } + } + + override void PlayRunning() + { + if ( !player ) + { + if ( !InStateSequence(CurState,FindState('SeeRun')) ) + SetStateLabel('SeeRun'); + return; + } + if ( player.health <= 0 ) return; + if ( !bNoGravity && player.onground ) + { + // Ground + if ( player.crouchdir == -1 ) + { + // Crouching + if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Fall')) + || InStateSequence(CurState,FindState('FallLoop')) + || InStateSequence(CurState,FindState('Float')) + || InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('StartCrouch'); + else if ( InStateSequence(CurState,FindState('Crouch')) ) + { + switch( FastCheck() ) + { + case 2: + SetStateLabel('CrouchMoveFast'); + break; + case 1: + SetStateLabel('CrouchMoveRun'); + break; + default: + SetStateLabel('CrouchMove'); + break; + } + } + } + else + { + if ( InStateSequence(CurState,FindState('Crouch')) + || InStateSequence(CurState,FindState('CrouchMove')) + || InStateSequence(CurState,FindState('CrouchMoveRun')) + || InStateSequence(CurState,FindState('CrouchMoveFast')) ) + SetStateLabel('EndCrouch'); + else if ( InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('SwimEnd'); + else if ( (FastCheck() == 2) + && (InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun'))) ) + SetStateLabel('SeeFast'); + else if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Float')) + || InStateSequence(CurState,FindState('Turn')) ) + { + if ( FastCheck() == 1 ) SetStateLabel('SeeRun'); + else SetStateLabel('See'); + A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.2); + } + } + } + else if ( !bNoGravity ) + { + // Falling + PlayIdle(); + } + else + { + // Swimming + if ( player.crouchdir == -1 ) + { + // Crouching + if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Jump')) + || InStateSequence(CurState,FindState('Fall')) + || InStateSequence(CurState,FindState('FallLoop')) + || InStateSequence(CurState,FindState('Float')) + || InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('StartCrouch'); + else if ( InStateSequence(CurState,FindState('Crouch')) ) + { + switch( FastCheck() ) + { + case 2: + SetStateLabel('CrouchMoveFast'); + break; + case 1: + SetStateLabel('CrouchMoveRun'); + break; + default: + SetStateLabel('CrouchMove'); + break; + } + } + } + else if ( bFlyCheat || (player.cheats&CF_NOCLIP2) ) + { + // Special case, fly cheats don't play a swim animation, only float + // (this fixes Demo 'swimming' on the library ladder in Spooktober, for example) + if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Jump')) + || InStateSequence(CurState,FindState('Fall')) + || InStateSequence(CurState,FindState('FallLoop')) + || InStateSequence(CurState,FindState('Swim')) + || InStateSequence(CurState,FindState('SwimLoop')) + || InStateSequence(CurState,FindState('SwimLoopRun')) + || InStateSequence(CurState,FindState('SwimLoopFast')) ) + SetStateLabel('Float'); + else if ( InStateSequence(CurState,FindState('Crouch')) + || InStateSequence(CurState,FindState('CrouchMove')) + || InStateSequence(CurState,FindState('CrouchMoveRun')) + || InStateSequence(CurState,FindState('CrouchMoveFast')) ) + SetStateLabel('EndCrouch'); + } + else + { + if ( InStateSequence(CurState,FindState('Spawn')) + || InStateSequence(CurState,FindState('Turn')) + || InStateSequence(CurState,FindState('See')) + || InStateSequence(CurState,FindState('SeeRun')) + || InStateSequence(CurState,FindState('SeeFast')) + || InStateSequence(CurState,FindState('SeeFastLoop')) + || InStateSequence(CurState,FindState('SeeFastEnd')) + || InStateSequence(CurState,FindState('Jump')) + || InStateSequence(CurState,FindState('Fall')) + || InStateSequence(CurState,FindState('FallLoop')) + || InStateSequence(CurState,FindState('Float')) ) + SetStateLabel('Swim'); + else if ( InStateSequence(CurState,FindState('Crouch')) + || InStateSequence(CurState,FindState('CrouchMoveRun')) + || InStateSequence(CurState,FindState('CrouchMoveFast')) ) + SetStateLabel('EndCrouch'); + } + } + } + + override void PlayAttacking() + { + // Do nothing if it's a SWWM weapon, since those do things themselves + if ( player && (player.ReadyWeapon is 'SWWMWeapon') ) + return; + if ( InStateSequence(CurState,FindState('Dash')) + || InStateSequence(CurState,FindState('Boost')) ) + return; // don't cancel dash/boost + if ( player && (player.crouchdir == -1) ) SetStateLabel('CrouchMissile'); + else SetStateLabel('Missile'); + } + + override void PlayAttacking2() + { + PlayAttacking(); + } + + void PlayFire() + { + if ( InStateSequence(CurState,FindState('Dash')) + || InStateSequence(CurState,FindState('Boost')) ) + return; // don't cancel dash/boost + if ( player && (player.crouchdir == -1) ) SetStateLabel('CrouchMissile'); + else SetStateLabel('Missile'); + } + + void PlayMelee() + { + if ( InStateSequence(CurState,FindState('Dash')) + || InStateSequence(CurState,FindState('Boost')) ) + return; // don't cancel dash/boost + if ( player && (player.crouchdir == -1) ) SetStateLabel('CrouchMelee'); + else SetStateLabel('Melee'); + } + + void PlayFastMelee() + { + if ( InStateSequence(CurState,FindState('Dash')) + || InStateSequence(CurState,FindState('Boost')) ) + return; // don't cancel dash/boost + if ( player && (player.crouchdir == -1) ) SetStateLabel('CrouchFastMelee'); + else SetStateLabel('FastMelee'); + } + + void PlayReload() + { + if ( InStateSequence(CurState,FindState('Dash')) + || InStateSequence(CurState,FindState('Boost')) ) + return; // don't cancel dash/boost + if ( player && (player.crouchdir == -1) ) SetStateLabel('CrouchReload'); + else SetStateLabel('Reload'); + } + + void PlayFastReload() + { + if ( InStateSequence(CurState,FindState('Dash')) + || InStateSequence(CurState,FindState('Boost')) ) + return; // don't cancel dash/boost + if ( player && (player.crouchdir == -1) ) SetStateLabel('CrouchFastReload'); + else SetStateLabel('FastReload'); + } + + void PlayCheckGun() + { + if ( InStateSequence(CurState,FindState('Dash')) + || InStateSequence(CurState,FindState('Boost')) ) + return; // don't cancel dash/boost + if ( player && (player.crouchdir == -1) ) SetStateLabel('CrouchCheckGun'); + else SetStateLabel('CheckGun'); + } + + void A_DMFade() + { + if ( player ) return; + Spawn('TeleportFog',pos,ALLOW_REPLACE); + Destroy(); + } + + void A_DemoPain() + { + if ( IsActorPlayingSound(CHAN_JETPACK,"demolitionist/jet") ) + A_StartSound("demolitionist/jetstop",CHAN_JETPACK); + String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); + int loudlv = swwm_voiceamp; + if ( lastdamage > 70 ) + { + A_QuakeEx(3.2,3.2,3.2,9,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); + A_StartSound("demolitionist/hipain",CHAN_VOICE); + lastbump *= 1.04; + if ( swwm_mutevoice < 4 ) + { + int maxpain = StringTable.Localize("$SWWM_"..myvoice.."_NHIPAIN").ToInt(); + int idx = (maxpain<=1)?1:Random[DemoLines](1,maxpain); + A_StartSound(String.Format("voice/%s/hipain%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/hipain%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/hipain%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/hipain%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } + } + else if ( lastdamage > 30 ) + { + A_QuakeEx(1.6,1.6,1.6,6,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); + A_StartSound("demolitionist/pain",CHAN_VOICE); + lastbump *= 1.02; + if ( swwm_mutevoice < 4 ) + { + int maxpain = StringTable.Localize("$SWWM_"..myvoice.."_NPAIN").ToInt(); + int idx = (maxpain<=1)?1:Random[DemoLines](1,maxpain); + A_StartSound(String.Format("voice/%s/pain%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/pain%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/pain%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/pain%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } + } + else if ( lastdamage > 0 ) + { + A_QuakeEx(.4,.4,.4,3,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); + A_StartSound("demolitionist/lopain",CHAN_VOICE); + lastbump *= 1.01; + if ( swwm_mutevoice < 4 ) + { + int maxpain = StringTable.Localize("$SWWM_"..myvoice.."_NLOPAIN").ToInt(); + int idx = (maxpain<=1)?1:Random[DemoLines](1,maxpain); + A_StartSound(String.Format("voice/%s/lopain%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/lopain%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/lopain%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/lopain%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } + } + } + + void A_DemoScream() + { + if ( IsActorPlayingSound(CHAN_JETPACK,"demolitionist/jet") ) + A_StartSound("demolitionist/jetstop",CHAN_JETPACK); + A_StopSound(CHAN_DEMOVOICE); + A_StopSound(CHAN_DEMOVOICEAUX); + A_StopSound(CHAN_DEMOVOICEAUX2); + A_StopSound(CHAN_DEMOVOICEAUX3); + String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); + int loudlv = swwm_voiceamp; + Sound snd = "demolitionist/death"; + if ( special1 < 10 ) + snd = "demolitionist/wdeath"; + if ( health < -50 ) + snd = "demolitionist/xdeath"; + A_StartSound(snd,CHAN_VOICE); + if ( swwm_mutevoice < 4 ) + { + int maxdeath = StringTable.Localize("$SWWM_"..myvoice.."_NDEATH").ToInt(); + int idx = (maxdeath<=1)?1:Random[DemoLines](1,maxdeath); + A_StartSound(String.Format("voice/%s/death%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/death%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/death%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/death%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } + } + + void A_Dash() + { + vel += dashdir*dashboost*clamp(dashfuel/20.,0.,1.); + player.vel *= 0.; + if ( dashboost < .2 ) dashboost = 0.; + else if ( !(player.cmd.buttons&BT_USER2) ) dashboost *= .1; + double fueluse = (dashfuel-max(0.,dashfuel-dashboost))/60.; + SWWMUtility.AchievementProgressIncDouble("fuel",fueluse,player); + mystats.fuelusage += fueluse; + if ( !swwm_superfuel ) dashfuel = max(0.,dashfuel-dashboost); + dashcooldown = min(40,max(10,int(dashcooldown*1.4))); + dashlockst = clamp(dashcooldown/3,2,10); + fuelcooldown = max(30,fuelcooldown); + if ( (dashfuel <= 0.) && fullfuel ) + SWWMUtility.AchievementProgressInc("brake",1,player); + if ( (dashfuel <= 0.) || (dashboost <= 0.) ) + SetStateLabel('DashEnd'); + } + + void A_BoostUp( bool initial = false ) + { + vel.z += .25*dashboost*clamp(dashfuel/20.,0,1.); + player.vel *= 0.; + if ( dashboost < .2 ) dashboost = 0.; + else + { + if ( player.cmd.buttons&BT_JUMP ) dashboost = min(5.,dashboost*1.01); + else dashboost *= .4; + last_boost = level.maptime+1; + } + double fueluse = (dashfuel-max(0.,dashfuel-dashboost))/60.; + SWWMUtility.AchievementProgressIncDouble("fuel",fueluse,player); + mystats.fuelusage += fueluse; + if ( !swwm_superfuel ) dashfuel = max(0.,dashfuel-dashboost); + if ( ((dashfuel <= 0.) || (dashboost <= 0.)) ) + { + if ( !initial ) + { + if ( player.onground ) SetStateLabel('JumpEnd'); + else SetStateLabel("Fall"); + } + return; + } + fuelcooldown = max(20,fuelcooldown); + } + + void A_Footstep( double yofs, int run = 0, double vol = .3, bool nosplash = false ) + { + if ( !multiplayer && !(player.cheats&CF_CHASECAM) ) + return; + PlayFootstep(yofs,run,vol,nosplash); + } + + void A_Crawl( double vol = .1, bool bAlt = false ) + { + A_StartSound(bAlt?"demolitionist/runstop":"demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,vol); + } + + int FastCheck() + { + if ( !player ) return 1; + if ( isAnalogMoving ) + { + double mscale = NormalizedMove().length(); + if ( mscale < (gameinfo.normforwardmove[0]*256.) ) return 0; // walking + if ( mscale < (gameinfo.normforwardmove[1]*256.) ) return 1; // running + return 2; // sprinting + } + if ( bWalking ) return 0; // walking + if ( IsRunning() ) return 2; // sprinting + return 1; // running + } + + State A_FastJump( StateLabel walk = null, StateLabel run = null, StateLabel sprint = null ) + { + int fc = FastCheck(); + if ( (fc == 2) && sprint ) return ResolveState(sprint); + if ( (fc == 1) && run ) return ResolveState(run); + if ( (fc == 0) && walk ) return ResolveState(walk); + return ResolveState(null); + } + + States + { + Spawn: + // normal idle + #### # 2; + XZW1 A 1 A_JumpIf(player&&(player.mo==self)&&(abs(player.cmd.yaw|player.cmd.pitch)>128),'Turn'); + Wait; + See: + // normal walking + #### # 2; + XZW1 BCD 2 A_FastJump(null,'SeeRun','SeeFast'); + XZW1 E 0 A_Footstep(1); + XZW1 EFGHIJKL 2 A_FastJump(null,'SeeRun','SeeFast'); + XZW1 M 0 A_Footstep(-1); + XZW1 MNOPA 2 A_FastJump(null,'SeeRun','SeeFast'); + Goto See+1; + Turn: + #### # 8 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.1); + XZW1 C 1 A_JumpIf(!player||!(player.cmd.yaw|player.cmd.pitch),1); + Wait; + XZW1 C 3 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.1); + Goto Spawn+1; + SeeRun: + #### # 2; + XZWI PQR 2 A_FastJump('See',null,'SeeFast'); + XZWI S 0 A_Footstep(1,1); + XZWI STUVWX 2 A_FastJump('See',null,'SeeFast'); + XZWI Y 0 A_Footstep(-1,1); + XZWI YZ 2 A_FastJump('See',null,'SeeFast'); + XZW1 A 2 A_FastJump('See',null,'SeeFast'); + Goto SeeRun+1; + SeeFast: + // sprinting + #### # 2 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.3); + XZW1 QRS 2; + Goto SeeFastLoop; + SeeFastLoop: + // keep sprinting + XZW1 T 1 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW1 U 1 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW1 V 0 A_Footstep(1,2); + XZW1 V 1 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW1 W 2 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW1 X 2 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW1 Y 2 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW1 Z 2 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW2 A 1 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW2 B 1 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW2 C 0 A_Footstep(-1,2); + XZW2 C 1 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW2 D 2 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW2 E 2 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW2 F 2 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + XZW2 G 2 A_JumpIf(FastCheck()!=2,'SeeFastEnd'); + Goto SeeFastLoop; + SeeFastEnd: + // brake + #### # 2 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.3); + XZW2 HIJKL 2; + Goto Spawn+1; + Pain: + // ouchy + XZW1 A 1 A_JumpIf(player&&(player.mo==self)&&(player.crouchdir==-1),'CrouchPain'); + XZW2 M 1 A_DemoPain(); + XZW2 NOPQ 1; + Goto Spawn+1; + Death: + XDeath: + // ded + XZW1 A 0 A_JumpIf(player&&(player.mo==self)&&(player.crouchdir==-1),'CrouchDeath'); + XZW1 A 2 + { + A_DemoScream(); + bSOLID = true; // we need this to avoid clipping into things + } + XZW2 RSTUVWXYZ 2; + XZW3 ABCDEFG 2; + XZW3 H 1 A_DMFade(); + Wait; + Boost: + // start boost + #### # 2; + XZW3 IJKLMNO 2 + { + if ( player.onground||bNoGravity ) + return ResolveState('BoostEnd'); + A_BoostUp(true); + return ResolveState(null); + } + // keep boost + XZW3 P 1 + { + if ( player.onground||bNoGravity ) + return ResolveState('BoostEnd'); + A_BoostUp(false); + return ResolveState(null); + } + XZW3 P 1 A_JumpIf((vel.z<-10)&&(pos.z>(floorz+80)),'Fall'); + Goto Boost+8; + BoostEnd: + // stop boost + #### # 2; + XZW3 PQRSTUVW 2; + Goto Spawn+1; + Jump: + #### # 2; + XZWJ ABCDEF 2 A_JumpIf(player.onground&&!bNoGravity,'FallEnd'); + Goto FallLoop; + Fall: + // start fall + #### # 4; + XZW3 XYZ 2 A_JumpIf(player.onground&&!bNoGravity,'FallEnd'); + XZW4 AB 2 A_JumpIf(player.onground&&!bNoGravity,'FallEnd'); + Goto FallLoop; + FallLoop: + // falling + XZW4 CDEFGH 3 A_JumpIf(player.onground&&!bNoGravity,'FallEnd'); + Goto FallLoop; + FallEnd: + // landing + XZW4 CIJKLMN 2; + Goto Spawn+1; + Dash: + #### # 2; + XZW4 O 2 A_Dash(); + XZW4 PQRS 2 A_Dash(); + Goto Dash+2; + DashEnd: + XZW4 TUVWX 2; + Goto Spawn+1; + Wave: + #### # 3; + XZW4 YZ 3; + XZW5 ABCDEFGHIJKLM 3; + Goto Spawn+1; + Approve: + #### # 3; + XZW5 NOPQR 3; + XZW5 S 3 { facegrin = true; } + XZW5 TUVWXYZ 3; + XZW6 ABCD 3; + Goto Spawn+1; + Victory: + #### # 3; + XZW6 EFGH 3; + XZW6 I 3 { facegrin = true; } + XZW6 JKLMNOPQRSTUVW 3; + Goto Spawn+1; + BlowKiss: + #### # 3; + XZWD EFGH 3; + XZWD I 3 { faceblink = true; } + XZWD JKLMNO 3; + XZWD P 3 { facewink = true; } + XZWD QRSTUVW 3; + Goto Spawn+1; + Headpat: + #### # 3; + XZWH ST 3; + XZWH U 2; + XZWH V 2 { facegrin = true; } + XZWH W 2; + XZWH XYZ 1; + XZWI A 1; + XZWI B 2; + XZWI C 2 { facegrin = true; } + XZWI DE 2; + XZWI FG 1; + HeadpatLoop: + XZWI H 1; + XZWH XYZ 1; + XZWI A 1; + XZWI B 2; + XZWI C 2 { facegrin = true; } + XZWI DE 2; + XZWI FGH 1; + XZWI IJK 2; + XZWI LMNO 3; + Goto Spawn+1; + Ragepat: + #### # 3; + XZWH ST 2; + XZWH UVW 1; + XZWH XZ 1; + XZWI BCDE 1; + XZWI FH 1; + XZWH XZ 1; + XZWI BCDE 1; + XZWI FH 1; + XZWH XZ 1; + XZWI BCDE 1; + XZWI F 1; + RagepatLoop: + XZWI H 1; + XZWH XZ 1; + XZWI BCDE 1; + XZWI FH 1; + XZWI IJK 1; + XZWI LMNO 2; + Goto Spawn+1; + Missile: + // attacking + #### # 2; + XZW6 XYZ 2; + XZW7 ABC 2; + Goto Spawn+1; + Melee: + // ponch + #### # 2; + XZW8 TUVWXYZ 2; + XZW9 ABCDEF 2; + Goto Spawn+1; + FastMelee: + // ponch (fast) + #### # 2; + XZW8 TUVWXYZ 1; + XZW9 ABCDE 1; + XZW9 F 2; + Goto Spawn+1; + Reload: + // reload + #### # 2; + XZW9 GHIJKLMNOPQRSTUVWXYZ 2; + XZWA ABCDE 2; + Goto Spawn+1; + FastReload: + // reload (fast) + #### # 2; + XZW9 GHIJKLMNOPQRSTUVWXYZ 1; + XZWA ABCDE 1; + Goto Spawn+1; + CheckGun: + // speen + #### # 2; + XZWA FGHIJKLMNOPQRSTUVWXY 2; + Goto Spawn+1; + StartCrouch: + // go crouching + #### # 2 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.45); + XZW7 DEFGH 1; + XZW7 IJKL 2; + Goto Crouch+1; + Crouch: + #### # 4; + XZW7 M -1; + Stop; + CrouchMove: + #### # 4; + XZW7 MN 4 A_FastJump(null,'CrouchMoveRun','CrouchMoveFast'); + XZW7 O 0 A_Crawl(.1,false); + XZW7 OPQRS 4 A_FastJump(null,'CrouchMoveRun','CrouchMoveFast'); + XZW7 T 0 A_Crawl(.1,true); + XZW7 TUV 4 A_FastJump(null,'CrouchMoveRun','CrouchMoveFast'); + Goto CrouchMove+1; + CrouchMoveRun: + #### # 3; + XZW7 MN 3 A_FastJump('CrouchMove',null,'CrouchMoveFast'); + XZW7 O 0 A_Crawl(.2,false); + XZW7 OPQRS 3 A_FastJump('CrouchMove',null,'CrouchMoveFast'); + XZW7 T 0 A_Crawl(.2,true); + XZW7 TUV 3 A_FastJump('CrouchMove',null,'CrouchMoveFast'); + Goto CrouchMoveRun+1; + CrouchMoveFast: + #### # 2; + XZW7 MN 2 A_FastJump('CrouchMove','CrouchMoveRun',null); + XZW7 O 0 A_Crawl(.4,false); + XZW7 OPQRS 2 A_FastJump('CrouchMove','CrouchMoveRun',null); + XZW7 T 0 A_Crawl(.4,true); + XZW7 TUV 2 A_FastJump('CrouchMove','CrouchMoveRun',null); + Goto CrouchMoveFast+2; + CrouchWave: + #### # 3; + XZWF ABCDEFGHIJKLMNO 3; + Goto Crouch+1; + CrouchApprove: + #### # 3; + XZWF PQRST 3; + XZWF U 3 { facegrin = true; } + XZWF VWXYZ 3; + XZWG ABCDEF 3; + Goto Crouch+1; + CrouchVictory: + #### # 3; + XZWG GHIJ 3; + XZWG K 3 { facegrin = true; } + XZWG LMNOPQRSTUVWXY 3; + Goto Crouch+1; + CrouchBlowKiss: + #### # 3; + XZWG Z 3; + XZWH ABC 3; + XZWH D 3 { faceblink = true; } + XZWH EFGHIJ 3; + XZWH K 3 { facewink = true; } + XZWH LMNOPQR 3; + Goto Crouch+1; + CrouchMissile: + XZW7 M 2; + XZW7 WXYZ 2; + XZW8 AB 2; + Goto Crouch+1; + CrouchMelee: + XZW7 M 2; + XZWA Z 2; + XZWB ABCDEFGHIJKL 2; + Goto Crouch+1; + CrouchFastMelee: + XZW7 M 2; + XZWA Z 1; + XZWB ABCDEFGHIJK 1; + XZWB L 2; + Goto Crouch+1; + CrouchReload: + XZW7 M 2; + XZWB MNOPQRSTUVWXYZ 2; + XZWC ABCDEFGHIJ 2; + Goto Crouch+1; + CrouchFastReload: + XZW7 M 2; + XZWB MNOPQRSTUVWXYZ 1; + XZWC ABCDEFGHIJ 1; + Goto Crouch+1; + CrouchCheckGun: + XZW7 M 2; + XZWC LMNOPQRSTUVWXYZ 2; + XZWD ABCD 2; + Goto Crouch+1; + CrouchPain: + XZW7 M 1; + XZW8 C 1 A_DemoPain(); + XZW8 DEF 1; + Goto Crouch+1; + CrouchDeath: + XZW7 M 2 + { + A_DemoScream(); + bSOLID = true; // we need this to avoid clipping into things + } + XZW8 GHIJK 2; + XZW8 L 1 A_DMFade(); + Wait; + EndCrouch: + #### # 2 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.45); + XZW8 MNOPQRS 2; + Goto Spawn+1; + Float: + #### # 3; + XZWD XYZ 3; + XZWE ABCDEFGHI 3; + Goto Float+1; + Swim: + #### # 2; + XZWE JKL 2; + Goto SwimLoop; + SwimLoop: + #### # 5; + XZWE MNO 5 A_FastJump(null,'SwimLoopRun','SwimLoopFast'); + XZWE P 0 A_Crawl(.1,false); + XZWE PQRSTU 5 A_FastJump(null,'SwimLoopRun','SwimLoopFast'); + XZWE V 0 A_Crawl(.1,true); + XZWE VWX 5 A_FastJump(null,'SwimLoopRun','SwimLoopFast'); + Goto SwimLoop+1; + SwimLoopRun: + #### # 3; + XZWE MNO 3 A_FastJump('SwimLoop',null,'SwimLoopFast'); + XZWE P 0 A_Crawl(.2,false); + XZWE PQRSTU 3 A_FastJump('SwimLoop',null,'SwimLoopFast'); + XZWE V 0 A_Crawl(.2,true); + XZWE VWX 3 A_FastJump('SwimLoop',null,'SwimLoopFast'); + Goto SwimLoopRun+1; + SwimLoopFast: + #### # 2; + XZWE MNO 2 A_FastJump('SwimLoop','SwimLoopRun',null); + XZWE P 0 A_Crawl(.4,false); + XZWE PQRSTU 2 A_FastJump('SwimLoop','SwimLoopRun',null); + XZWE V 0 A_Crawl(.4,true); + XZWE VWX 2 A_FastJump('SwimLoop','SwimLoopRun',null); + Goto SwimLoopFast+1; + SwimEnd: + #### # 2; + XZWE MYZ 2; + Goto Float+1; + } +} diff --git a/zscript/player/swwm_player_cheats.zsc b/zscript/player/swwm_player_cheats.zsc new file mode 100644 index 000000000..55452772d --- /dev/null +++ b/zscript/player/swwm_player_cheats.zsc @@ -0,0 +1,396 @@ +// the give/take cheat, oh boy + +extend Class Demolitionist +{ + void CheatGive_Health( int amount = 0 ) + { + player.health = health = (amount>0)?(health+amount):default.health; + if ( player == players[consoleplayer] && ((amount > 0) || ((health-default.health) > 0)) ) + SWWMScoreObj.SpawnAtActorBunch((amount>0)?amount:(health-default.health),self,Font.CR_BLUE); + } + void CheatGive_Backpack() + { + let def = GetDefaultByType('HammerspaceEmbiggener'); + GiveInventory('TradedHammerspaceEmbiggener',def.MaxAmount,true); + } + void CheatGive_Ammo() + { + // Max out all mod ammo + foreach ( cls:AllActorClasses ) + { + let type = (class)(cls); + if ( !type || type.IsAbstract() || (type.GetParentClass() != 'SWWMAmmo') ) continue; + let ammoitem = Ammo(FindInventory(type)); + if ( !ammoitem ) + { + // Add it first if not found + ammoitem = Ammo(Spawn(type)); + ammoitem.Amount = 0; + ammoitem.AttachToOwner(self); + } + // Don't give spares unless we own a Candy Gun, for consistency + if ( (type is 'CandyGunSpares') && !FindInventory('CandyGun') ) continue; + // Top up + ammoitem.Amount = ammoitem.MaxAmount; + // Does it have mag ammo? + let sammoitem = SWWMAmmo(ammoitem); + if ( !sammoitem || !sammoitem.MagAmmoType ) continue; + let magitem = MagAmmo(FindInventory(sammoitem.MagAmmoType)); + if ( !magitem ) + { + // Add it first if not found (shouldn't happen) + magitem = MagAmmo(Spawn(sammoitem.MagAmmoType)); + magitem.AttachToOwner(self); + } + // Top up + magitem.Amount = magitem.MaxAmount; + } + } + void CheatGive_Armor() + { + // only give armors that have spares associated + foreach ( cls:AllActorClasses ) + { + let type = (Class)(cls); + if ( !type || type.IsAbstract() || (type == 'SWWMSpareArmor') ) continue; + if ( GetReplacement(type) != type ) continue; + let def = GetDefaultByType(type); + let armo = SWWMArmor(FindInventory(def.giveme)); + if ( !armo ) + { + armo = SWWMArmor(Spawn(def.giveme)); + armo.AttachToOwner(self); + } + armo.Amount = armo.MaxAmount; + if ( player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(armo.MaxAmount,self,Font.CR_GREEN); + } + } + void CheatGive_Keys() + { + foreach ( cls:AllActorClasses ) + { + let type = (Class)(cls); + if ( !type ) continue; + let keyitem = GetDefaultByType(type); + if ( !keyitem.special1 ) continue; + let rep = GetReplacement(type); // handle replaced keys + if ( !(rep is 'Key') ) continue; + // iwad restrictions (vanilla doesn't care, but here they'll show in the inventory) + if ( !(gameinfo.gametype&GAME_HERETIC) && ((rep is 'SWWMKeyGreen') || (rep is 'SWWMKeyBlue') || (rep is 'SWWMKeyYellow')) ) + continue; + if ( !(gameinfo.gametype&GAME_DOOM) && ((rep is 'SWWMRedCard') || (rep is 'SWWMBlueCard') || (rep is 'SWWMYellowCard')) ) + continue; + let item = Inventory(Spawn(rep)); + SWWMHandler.KeyTagFix(item); + if ( !item.CallTryPickup(self) ) item.Destroy(); + } + } + void CheatGive_Weapons() + { + let savedpending = player.PendingWeapon; + foreach ( cls:AllActorClasses ) + { + let type = (class)(cls); + if ( !type || (type == 'Weapon') ) continue; + // Don't give already owned weapons + let owned = FindInventory(type); + if ( owned && (owned.Amount >= owned.MaxAmount) ) continue; + // Don't give replaced weapons unless the replacement was done by Dehacked. + let rep = GetReplacement(type); + if ( (rep == type) || (rep is 'DehackedPickup') ) + { + // Give the weapon only if it is set in a weapon slot. + if ( !player.weapons.LocateWeapon(type) ) continue; + readonly def = GetDefaultByType(type); + if ( !def.bCheatNotWeapon && def.ShouldSpawn() && def.CanPickup(self) ) + GiveInventory(type,1,true); + } + } + player.PendingWeapon = savedpending; + } + void CheatGive_Artifacts( int amount = 0 ) + { + foreach ( cls:AllActorClasses ) + { + let type = (class)(cls); + if ( !type ) continue; + let rep = GetReplacement(type); + // don't give replaced items + if ( rep != type ) continue; + // no fabricators before hexen + if ( !(gameinfo.gametype&GAME_HEXEN) && (type is 'AmmoFabricator') ) continue; + // no barriers outside doom + if ( !(gameinfo.gametype&GAME_DOOM) && (type is 'EBarrier') ) continue; + // no gravity/tether outside raven + if ( !(gameinfo.gametype&GAME_RAVEN) && ((type is 'GravitySuppressor') || (type is 'SafetyTether')) ) continue; + // Don't give maxed items + let owned = FindInventory(type); + if ( owned && (owned.Amount >= owned.MaxAmount) ) continue; + let def = GetDefaultByType(type); + // must have INVBAR and a valid icon (also can't be a puzzle item) + if ( !def.bINVBAR || !def.ShouldSpawn() || !def.Icon.isValid() || (type is 'PuzzleItem') ) continue; + GiveInventory(type,(amount<=0)?def.MaxAmount:amount,true); + } + } + void CheatGive_PuzzlePieces( int amount = 0 ) + { + foreach ( cls:AllActorClasses ) + { + let type = (class)(cls); + if ( !type ) continue; + let def = GetDefaultByType(type); + if ( !def.Icon.isValid() ) continue; + GiveInventory(type,(amount<=0)?def.MaxAmount:amount,true); + } + } + void CheatGive_Collectibles() + { + foreach ( cls:AllActorClasses ) + { + let type = (class)(cls); + if ( !type || (type == 'SWWMCollectible') ) continue; + let def = GetDefaultByType(type); + // check that we can collect it in this IWAD + if ( !def.ValidGame() ) continue; + let item = Inventory(Spawn(cls)); + SWWMCollectible(item).propagated = true; // no score or anims + if ( !item.CallTryPickup(self) ) item.Destroy(); + } + } + bool CheatGive_Item( Class type, int amount = 0 ) + { + if ( amount <= 0 ) amount = GetDefaultByType(type).Amount; + let itm = FindInventory(type); + if ( itm ) + { + int oldamt = itm.Amount; + itm.Amount += amount; + if ( (itm.Amount < oldamt) || (itm.Amount > itm.MaxAmount) ) + itm.Amount = itm.MaxAmount; + return true; + } + itm = Inventory(Spawn(type)); + if ( !itm.CallTryPickup(self) ) + { + // just in case it was a count item + itm.ClearCounters(); + itm.Destroy(); + return false; + } + itm.Amount = amount; + return true; + } + override void CheatGive( String name, int amount ) + { + if ( !player.mo || (player.health <= 0) ) return; + ingivecheat = true; + int giveall = (name~=="everything")?ALL_YESYES:(name~=="all")?ALL_YES:ALL_NO; + if ( giveall ) + { + if ( !mystats ) mystats = SWWMStats.Find(player); + if ( !mystats.suregiveall ) + { + if ( CheckLocalView() ) + { + Console.Printf(StringTable.Localize("$SWWM_GIVEALLWARN"),player.GetUserName(),name); + S_StartSound("bruh",CHAN_VOICE,CHANF_UI); + } + mystats.suregiveall = true; + ingivecheat = false; + return; + } + CheatGive_Health(); + CheatGive_Backpack(); + CheatGive_Armor(); + CheatGive_Keys(); + CheatGive_Weapons(); + CheatGive_Ammo(); + CheatGive_Artifacts(); + CheatGive_PuzzlePieces(); + if ( giveall == ALL_YESYES ) + CheatGive_Collectibles(); + } + else if ( name ~== "health" ) CheatGive_Health(amount); + else if ( name ~== "backpack" ) CheatGive_Backpack(); + else if ( name ~== "ammo" ) CheatGive_Ammo(); + else if ( name ~== "armor" ) CheatGive_Armor(); + else if ( name ~== "keys" ) CheatGive_Keys(); + else if ( name ~== "weapons" ) CheatGive_Weapons(); + else if ( name ~== "artifacts" ) CheatGive_Artifacts(amount); + else if ( name ~== "puzzlepieces" ) CheatGive_PuzzlePieces(amount); + else if ( name ~== "collectibles" ) CheatGive_Collectibles(); + else + { + Class type = name; + if ( !type || type.IsAbstract() ) + { + if ( CheckLocalView() ) + Console.Printf("'%s' is not a valid inventory item",name); + ingivecheat = false; + return; + } + if ( !CheatGive_Item(type,amount) && CheckLocalView() ) + Console.Printf("Cannot give '%s'",name); + } + ingivecheat = false; + } + + void CheatTake_Health( int amount = 0 ) + { + if ( amount > 0 ) SWWMDamNum.SpawnAtActor(amount,self); + if ( amount >= health ) + { + CheatSuicide(); + if ( player == players[consoleplayer] ) Console.HideConsole(); + return; + } + player.health = health -= amount; + } + void CheatTake_Backpack() + { + Inventory i = inv; + while ( i ) + { + let next = i.inv; + if ( (i is 'HammerspaceEmbiggener') || (i is 'BackpackItem') ) + i.DepleteOrDestroy(); + i = next; + } + } + void CheatTake_Ammo() + { + for ( Inventory i=inv; i; i=i.inv ) + { + if ( (i is 'Ammo') || (i is 'MagAmmo') ) + i.Amount = 0; + } + } + void CheatTake_Armor() + { + Inventory i = inv; + while ( i ) + { + let next = i.inv; + // avoid unclearable (internal) or nodrain (powerup) armors + if ( ((i is 'SWWMArmor') && !i.bUNCLEARABLE && !(SWWMArmor(i).bNODRAIN)) || (i is 'SWWMSpareArmor') ) + i.DepleteOrDestroy(); + i = next; + } + } + void CheatTake_Keys() + { + Inventory i = inv; + while ( i ) + { + let next = i.inv; + if ( i is 'Key' ) i.DepleteOrDestroy(); + i = next; + } + } + void CheatTake_Weapons() + { + Inventory i = inv; + while ( i ) + { + let next = i.inv; + // don't take away gestures + if ( (i is 'Weapon') && !(i is 'SWWMGesture') && !(i is 'SWWMItemGesture') ) + i.DepleteOrDestroy(); + i = next; + } + } + void CheatTake_Artifacts() + { + Inventory i = inv; + while ( i ) + { + let next = i.inv; + if ( i.bINVBAR && i.Icon.isValid() && !(i is 'PuzzleItem') ) + i.DepleteOrDestroy(); + i = next; + } + } + void CheatTake_PuzzlePieces() + { + Inventory i = inv; + while ( i ) + { + let next = i.inv; + if ( i is 'PuzzleItem' ) i.DepleteOrDestroy(); + i = next; + } + } + void CheatTake_Collectibles() + { + Inventory i = inv; + while ( i ) + { + let next = i.inv; + if ( i is 'SWWMCollectible' ) i.DepleteOrDestroy(); + i = next; + } + if ( mystats ) mystats.ownedcollectibles.Clear(); + } + void CheatTake_Item( Class type, int amount = 0 ) + { + Inventory i = inv; + while ( i ) + { + let next = i.inv; + if ( i is type ) + { + i.Amount -= max(amount,1); + if ( i.Amount <= 0 ) + { + if ( (i is 'SWWMCollectible') && mystats ) + { + // remove from obtained list + let idx = mystats.ownedcollectibles.Find(SWWMCollectible(i).GetClass()); + if ( idx < mystats.ownedcollectibles.Size() ) + mystats.ownedcollectibles.Delete(idx); + } + i.DepleteOrDestroy(); + } + } + i = next; + } + } + override void CheatTake( String name, int amount ) + { + if ( !player.mo || (player.health <= 0) ) return; + int takeall = (name~=="everything")?ALL_YESYES:(name~=="all")?ALL_YES:ALL_NO; + if ( takeall ) + { + CheatTake_Ammo(); + CheatTake_Backpack(); + CheatTake_Armor(); + CheatTake_Keys(); + CheatTake_Weapons(); + CheatTake_Artifacts(); + CheatTake_PuzzlePieces(); + if ( takeall == ALL_YESYES ) + CheatTake_Collectibles(); + } + else if ( name ~== "health" ) CheatTake_Health(amount); + else if ( name ~== "backpack" ) CheatTake_Backpack(); + else if ( name ~== "ammo" ) CheatTake_Ammo(); + else if ( name ~== "armor" ) CheatTake_Armor(); + else if ( name ~== "keys" ) CheatTake_Keys(); + else if ( name ~== "weapons" ) CheatTake_Weapons(); + else if ( name ~== "artifacts" ) CheatTake_Artifacts(); + else if ( name ~== "puzzlepieces" ) CheatTake_PuzzlePieces(); + else if ( name ~== "collectibles" ) CheatTake_Collectibles(); + else + { + Class type = name; + if ( !type || type.IsAbstract() ) + { + if ( CheckLocalView() ) + Console.Printf("'%s' is not a valid inventory item",name); + return; + } + CheatTake_Item(type,amount); + } + } +} diff --git a/zscript/player/swwm_player_extra.zsc b/zscript/player/swwm_player_extra.zsc new file mode 100644 index 000000000..2f27853e6 --- /dev/null +++ b/zscript/player/swwm_player_extra.zsc @@ -0,0 +1,59 @@ +// unique voodoo doll, for better compatibility +Class SWWMVoodooDoll : PlayerPawn +{ + Vector3 lastvel; + SWWMShadow myshadow; + + override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) + { + // as simple as it gets + return "$OB_VOODOO"; + } + override void Tick() + { + Super.Tick(); + if ( !myshadow ) myshadow = SWWMShadow.Track(self); + // mikoportal compat + if ( !(pos.z ~== -32768) ) return; + if ( vel.length() <= lastvel.length() ) + vel = lastvel; + lastvel = vel; + } + Default + { + Tag "$FN_VOODOO_NP"; + Speed 1; + Health 100; + Radius 16; + Height 56; + Mass 100; + PainChance 255; + +NOBLOOD; + +DONTGIB; + +NOICEDEATH; + +DONTCORPSE; + +NOSKIN; + -FRIENDLY; + } + States + { + Spawn: + XZW1 A -1; + Stop; + Pain: + XZW1 A 1; + XZW1 B 2 A_StartSound("voodoodoll/hit",CHAN_BODY,CHANF_OVERLAP); + XZW1 CDEF 2; + Goto Spawn; + Death: + XZW1 A 2 + { + A_StartSound("voodoodoll/fall",CHAN_BODY,CHANF_OVERLAP); + A_NoBlocking(); + } + XZW1 GHIJKLMNO 2; + XZW1 PQR 2; + XZW1 S -1; + Stop; + } +} diff --git a/zscript/player/swwm_player_face.zsc b/zscript/player/swwm_player_face.zsc new file mode 100644 index 000000000..a73c5734f --- /dev/null +++ b/zscript/player/swwm_player_face.zsc @@ -0,0 +1,167 @@ +// facial animation and cosmetics +extend Class Demolitionist +{ + // dirt-cheap PRNG + // (make sure to keep algo in sync w/ swwm_utility_math.zsc ver if it + // ever changes) + private int GetRandom() + { + return (rss = (rss<<1)*35447+(rss/87)); + } + + private void UpdateTags() + { + static const String colname[] = + { + "", + "Blue", + "Cyan", + "Dragonfly", + "Gold", + "Magenta", + "Orange", + "Peach", + "Pink", + "Purple", + "Red", + "Violet", + "White", + "Yellow", + "Black", + "Rust" + }; + int idx = CVar.GetCVar('swwm_tagcolor',player).GetInt(); + if ( (idx < 0) || (idx >= colname.Size()) ) idx = 0; + if ( idx != oldtagcolor ) + A_ChangeModel("",0,"","",0,"models","DemoTags"..colname[idx]..".png",CMDL_USESURFACESKIN,-1); + oldtagcolor = idx; + for ( Inventory i=inv; i; i=i.inv ) + { + if ( !(i is 'SWWMWeapon') ) continue; + SWWMWeapon(i).UpdateTags(idx,colname[idx]); + } + } + + private void UpdateFace() + { + // damage handling + if ( facedamage ) + { + bool setpaindir = false; + if ( lastdamage > 70 ) + { + facestate = FS_OUCH; + facetimer = (lastdamagetimer-gametic)+10; + setpaindir = true; + paindir = 0; + } + else if ( facestate < FS_OUCH ) + { + facestate = FS_PAIN; + facetimer = (lastdamagetimer-gametic)+10; + setpaindir = true; + paindir = 0; + } + // paraphrased from vanilla, with some tweaks + if ( setpaindir && player.attacker && (player.attacker != self) ) + { + double atkang = AngleTo(player.attacker); + double angdiff = deltaangle(angle,atkang); + if ( abs(angdiff) < 135 ) + { + if ( angdiff > 45 ) paindir = -1; + else if ( angdiff < -45 ) paindir = 1; + } + } + } + facedamage = false; + if ( facegrin && (facestate < FS_SAD) ) + { + facestate = FS_GRIN; + facetimer = 50; + } + facegrin = false; + if ( facewink && (facestate < FS_SAD) ) + { + facestate = FS_WINK; + facetimer = 20; + } + facewink = false; + if ( faceblink && (facestate < FS_PAIN) ) + { + facestate = FS_BLINK; + facetimer = 30; + } + faceblink = false; + if ( facesad && (facestate <= FS_SAD) ) + { + facestate = FS_SAD; + facetimer = 50; + } + facesad = false; + if ( FindInventory('RagekitPower') && (facestate < FS_PAIN) ) + { + facestate = FS_EVIL; + facetimer = 10; + } + if ( facetimer > 0 ) + { + facetimer--; + if ( facetimer <= 0 ) + { + facestate = FS_DEFAULT; + blinktime = 30; + } + } + if ( !(gametic&1) ) + { + if ( blinktime <= 0 ) + { + blinktime--; + if ( blinktime < -3 ) + { + rss = MSTime(); + blinktime = (abs(GetRandom())%10)?(40+abs(GetRandom())%40):6; + } + } + else blinktime--; + } + // update our face texture if different + static const String facetex[] = + { + "Blank", "Blink", "Booty", "Dead", + "Default", "Dizzy", "Evil", "Grin", + "Hurt", "HurtLeft", "HurtRight", + "Off", "Ouch", "OuchLeft", "OuchRight", + "Sad", "Smug", "Unamused", "Wink" + }; + int faceidx = GetFaceTex(); + if ( !oldfaceidx || (faceidx != oldfaceidx) ) + A_ChangeModel("",0,"","",1,"models","DemoFace_"..facetex[faceidx]..".png",CMDL_USESURFACESKIN,-1); + oldfaceidx = faceidx; + } + + private int GetFaceTex() + { + if ( player.Health <= 0 ) return 3; + if ( (bInvulnerable || (player.cheats&(CF_GODMODE|CF_GODMODE2)) || FindInventory('InvinciballPower')) && (facestate >= FS_PAIN) ) return 16; + if ( facestate == FS_OUCH ) return (paindir==1)?14:(paindir==-1)?13:12; + if ( facestate == FS_PAIN ) return (paindir==1)?10:(paindir==-1)?9:8; + if ( facestate == FS_GRIN ) return 7; + if ( facestate == FS_EVIL ) return 6; + if ( facestate == FS_SAD ) return 15; + if ( facestate == FS_WINK ) return 18; + if ( facestate == FS_BLINK ) return ((facetimer>28)||(facetimer<2))?17:1; + switch ( blinktime ) + { + case -1: + case -3: + return 15; + break; + case -2: + return 1; + break; + } + return (player.Health<=25)?15:4; + } +} diff --git a/zscript/player/swwm_player_fx.zsc b/zscript/player/swwm_player_fx.zsc new file mode 100644 index 000000000..6c1e8aed5 --- /dev/null +++ b/zscript/player/swwm_player_fx.zsc @@ -0,0 +1,399 @@ +// player effects + +// simple object for moving a dropped item towards the player +Class SWWMMagItem play +{ + SWWMMagItem next; + Inventory item; + Demolitionist target; + + bool Tick() + { + if ( !target || (target.Health <= 0) ) return true; + if ( !item || item.Owner || !item.bSPECIAL || item.bINVISIBLE || !SWWMUtility.SphereIntersect(target,item.pos,800) || !target.CheckSight(item,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) return true; + Class cls = item.GetClass(); + if ( item is 'Ammo' ) cls = Ammo(item).GetParentAmmo(); + else if ( item is 'MagAmmo' ) cls = MagAmmo(item).GetParentMagAmmo(); + let oi = target.FindInventory(cls); + if ( !item.bALWAYSPICKUP && oi && (oi.Amount >= oi.MaxAmount) ) return true; + if ( (item is 'SWWMWeapon') && SWWMWeapon(item).HasSwapWeapon(target) && swwm_swapweapons ) return true; + if ( (item is 'SWWMDualWeaponGiver') && SWWMDualWeaponGiver(item).HasSwapWeapon(target) && swwm_swapweapons ) return true; + Vector3 dirto = level.Vec3Diff(item.pos,target.Vec3Offset(0,0,target.height/2)); + double dist = dirto.length(); + if ( SWWMUtility.BoxIntersect(item,target) ) + { + item.Touch(target); + return false; + } + dirto /= dist; + double fact = clamp(dist/800.,0.,1.)**.5; + item.vel *= .75; + item.vel += dirto*SWWMUtility.Lerp(8.,1.,fact); + item.A_SoundVolume(CHAN_AMBEXTRA,1.-.8*fact); + item.A_SoundPitch(CHAN_AMBEXTRA,SWWMUtility.Lerp(2.,.5,fact)); + return false; + } + + override void OnDestroy() + { + if ( !item ) return; + if ( item.bSPECIAL ) item.bNOGRAVITY = item.default.bNOGRAVITY; + item.bDROPOFF = item.default.bDROPOFF; + item.bSLIDESONWALLS = item.default.bSLIDESONWALLS; + item.bNOBLOCKMONST = item.default.bNOBLOCKMONST; + item.A_StopSound(CHAN_AMBEXTRA); + } +} + +// finds the first pickup-able item +Class SWWMItemTracer : LineTracer +{ + override ETraceStatus TraceCallback() + { + if ( Results.HitType == TRACE_HitActor ) + { + if ( (Results.HitActor is 'Inventory') && Results.HitActor.bSPECIAL ) return TRACE_Stop; + return TRACE_Skip; + } + if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) + { + if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockUse|Line.ML_BlockEverything)) ) + return TRACE_Stop; + return TRACE_Skip; + } + return TRACE_Stop; + } +} + +// finds the closest reflective surface +// can only match lines, as reflective sector plane data isn't obtainable from zscript +Class SWWMMirrorTracer : LineTracer +{ + override ETraceStatus TraceCallback() + { + if ( Results.HitType == TRACE_HitWall ) + { + // did we find a mirror? + if ( !Results.HitLine.sidedef[1] && (Results.HitLine.special == Line_Mirror) ) + return TRACE_Stop; + // lower/upper will block, as well as one-sided lines that aren't mirrors + if ( !Results.HitLine.sidedef[1] || !(Results.Tier == TIER_Middle) ) + return TRACE_Abort; + } + // obviously, floors and ceilings block the view as well + // again, a shame we can't check if they, too, are mirrors + if ( (Results.HitType == TRACE_HitFloor) || (Results.HitType == TRACE_HitCeiling) ) + return TRACE_Abort; + return TRACE_Skip; + } +} + +Class DashTrail : SWWMNonInteractiveActor +{ + Mixin SWWMMinimalMovingWaterTick; + + Default + { + RenderStyle 'Add'; + Scale .3; + +MASTERNOSEE; + +FORCEXYBILLBOARD; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + SetState(FindState('Spawn')+Random[ExploS](0,7)); + if ( waterlevel > 0 ) return; + let t = Spawn('DashTrail2',level.Vec3Offset(pos,vel*.3)); + t.master = master; + t.vel = vel*1.2; + let s = Spawn('SWWMSmoke',level.Vec3Offset(pos,vel*1.6)); + s.vel = vel*.8; + s.SetShade(Color(1,1,1)*Random[ExploS](64,128)); + s.special1 = Random[ExploS](2,4); + s.scale *= 1.4; + s.alpha *= .3; + } + States + { + Spawn: + JFLB ABCDEFGH 1 Bright + { + A_FadeOut(.2); + A_SetScale(scale.x*.95); + } + Loop; + } +} + +Class DashTrail2 : SWWMNonInteractiveActor +{ + Mixin SWWMMinimalMovingWaterTick; + + Default + { + RenderStyle 'Add'; + Scale .2; + Alpha .4; + +MASTERNOSEE; + +FORCEXYBILLBOARD; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + SetState(FindState('Spawn')+Random[ExploS](0,7)); + } + States + { + Spawn: + JFLR ABCDEFGH 1 Bright + { + A_FadeOut(.02); + A_SetScale(scale.x*1.04); + if ( waterlevel > 0 ) + { + let b = Spawn('SWWMBubble',pos); + b.vel = vel; + b.scale *= scale.x; + Destroy(); + } + } + Loop; + } +} + +Class DemolitionistRadiusShockwaveTail : SWWMNonInteractiveActor +{ + Mixin SWWMMinimalMovingTick; + + Default + { + RenderStyle 'Add'; + } + States + { + Spawn: + XZW1 A 1 + { + pitch = min(85,(pitch+2)*1.05); + A_FadeOut(.02); + A_SetScale(scale.x*1.08,scale.y); + vel *= .98; + } + Wait; + } +} + +Class DemolitionistRadiusShockwave : Actor +{ + Actor lasthit; + + Default + { + RenderStyle 'Add'; + Speed 15; + DamageFunction int(200*alpha); + DamageType 'GroundPound'; + RipSound ""; // Heretic/Hexen fix + Radius 16; + Height 8; + Alpha .4; + XScale .65; + YScale 3.; + PROJECTILE; + +DONTSPLASH; + +STEPMISSILE; + +NOEXPLODEFLOOR; + +FLATSPRITE; + +RIPPER; + +BLOODLESSIMPACT; + -NOGRAVITY; + +NOFRICTION; + } + override int DoSpecialDamage( Actor target, int damage, Name damagetype ) + { + if ( target == lasthit ) return 0; + lasthit = target; + if ( damage <= 0 ) return damage; + if ( (target.mass < LARGE_MASS) && !target.bDONTTHRUST ) + { + target.vel.xy += vel.xy.unit()*(30000./max(50,target.mass))*alpha; + if ( (target.pos.z <= floorz) || !target.TestMobjZ() ) + target.vel.z += (8000./max(50,target.mass))*alpha; + } + return damage; + } + States + { + Spawn: + XZW1 A 1 + { + double diffz = clamp(floorz-pos.z,-speed,speed); + SetZ(pos.z+diffz); + pitch = min(85,(pitch+2)*1.05); + if ( !Random[ExploS](0,3) ) + { + let p = Spawn('InvisibleSplasher',Vec3Offset(0,0,2)); + p.target = target; + } + let s = Spawn('DemolitionistRadiusShockwaveTail',pos); + s.vel = vel*.35; + s.scale = scale; + s.alpha = alpha*.4; + s.angle = angle; + s.pitch = pitch; + s.roll = roll; + A_FadeOut(.015); + A_SetScale(scale.x*1.08,scale.y); + vel *= .98; + } + Wait; + Death: + XZW1 A 1 + { + double diffz = clamp(floorz-pos.z,-speed,speed); + SetZ(pos.z+diffz); + A_FadeOut(.05); + A_SetScale(scale.x*1.1,scale.y*.97); + } + Wait; + } +} + +Class DemolitionistShockwave : SWWMNonInteractiveActor +{ + Default + { + +NODAMAGETHRUST; + +FORCERADIUSDMG; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + A_QuakeEx(7.,7.,7.,30,0,300+min(special1,50)*4,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:200,rollIntensity:1.5); + if ( target.player != players[consoleplayer] ) + { + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,attenuation:.3); + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,attenuation:.2,pitch:.7); + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,attenuation:.1,pitch:.4); + } + SWWMUtility.DoExplosion(self,40+min(special1,120),100000+min(special1*2000,150000),100+min(special1*2,130),80,DE_BLAST|DE_EXTRAZTHRUST|DE_NONEXPLOSIVE,'GroundPound',target); + for ( int i=0; i<360; i+=5 ) + { + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,3); + let s = Spawn('SWWMSmoke',Vec3Angle(4,i,8)); + s.vel = pvel+SWWMUtility.AngleToVector3(i,7.); + s.SetShade(Color(1,1,1)*Random[ExploS](64,224)); + s.special1 = Random[ExploS](1,4); + s.scale *= 1.5; + s.alpha *= .4; + } + if ( pos.z > floorz+16 ) return; + for ( int i=0; i<360; i+=5 ) + { + let r = Spawn('DemolitionistRadiusShockwave',Vec3Angle(5,i)); + r.target = target; + r.angle = i; + r.vel.xy = AngleToVector(i,r.speed+min(special1*.15,30)); + r.alpha *= .1+min(special1*.03,.9); + } + int numpt = Random[ExploS](10,20); + for ( int i=0; i= litecolor.Size()) ) idx = 0; + bool curactive = !(target.bINVISIBLE || (target.alpha <= double.epsilon)); + // setting the pitch to a value outside [-90,90] makes it auto-update to the actor's own pitch + // this is undocumented and it's very great and nice and fine that such a thing had to be found out purely by chance + // how very wonderful /s + double curheight = target.player?(target.player.viewz-target.pos.z):(target.height*.93); + if ( curactive && (!oldactive || (idx != oldcolor) || (curheight != oldheight)) ) + { + target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,Color(255,112,144,176),200,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE|DynamicLight.LF_SPOT,(5,0,curheight),0,15,60,180); + target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,litecolor[idx],80,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE,(0,0,target.height/2)); + } + else if ( !curactive && oldactive ) + { + target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,0,0,0); + target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,0,0,0); + } + oldactive = curactive; + oldcolor = idx; + oldheight = curheight; + } +} diff --git a/zscript/player/swwm_player_inventory.zsc b/zscript/player/swwm_player_inventory.zsc new file mode 100644 index 000000000..84ebec399 --- /dev/null +++ b/zscript/player/swwm_player_inventory.zsc @@ -0,0 +1,283 @@ +// inventory functions +extend Class Demolitionist +{ + override void GiveDefaultInventory() + { + if ( !player ) return; + bInDefaultInventory = true; // prevent default inventory from adding lore entries (fixes lore library disappearing when loading saves WHILE DEAD) + // we don't need hexen or basic armors + // we can simplify the code a lot here since no handling of many special conditions is needed + let sc = Inventory(Spawn('SayaCollar')); + if ( !sc.CallTryPickup(self) ) sc.Destroy(); + let ap = Inventory(Spawn('AlmasteelPlating')); + if ( !ap.CallTryPickup(self) ) ap.Destroy(); + let dp = Inventory(Spawn('DeepImpact')); + if ( !dp.CallTryPickup(self) ) dp.Destroy(); + let eg = ExplodiumGun(Spawn('ExplodiumGun')); + eg.firstselect = true; + if ( !eg.CallTryPickup(self) ) eg.Destroy(); + else player.ReadyWeapon = player.PendingWeapon = eg; + // in hexdd, we start with the chaos sphere in our grasp + if ( SWWMUtility.IsDeathkings() && SWWMUtility.CheckMD5List("vanillahexen.list") ) + { + let cs = Inventory(Spawn('SWWMChaosSphere')); + if ( !cs.CallTryPickup(self) ) cs.Destroy(); + } + // in deathmatch, we start with 8 embiggeners + if ( deathmatch ) + { + let em = Inventory(Spawn('TradedHammerspaceEmbiggener')); + em.Amount = em.MaxAmount; + if ( !em.CallTryPickup(self) ) em.Destroy(); + } + bInDefaultInventory = false; + } + + override void ClearInventory() + { + Super.ClearInventory(); + // remove some specific "undroppable" items + Actor last = self; + while ( last.inv ) + { + let i = last.inv; + if ( ((i is 'SWWMArmor') && !i.bUNCLEARABLE) || (i is 'HammerspaceEmbiggener') ) + { + i.DepleteOrDestroy(); + if ( !i.bDestroyed ) last = i; + } + else last = i; + } + // clean up the "got weapons" so their obtain lines are played again + if ( mystats ) mystats.CleanGotWeapons(); + } + + override void RemoveInventory( Inventory item ) + { + // stop any looping sounds our current weapon had + if ( (item is 'SWWMWeapon') && player && (SWWMWeapon(item) == player.ReadyWeapon) ) + { + A_StopSound(CHAN_WEAPONEXTRA); + A_StopSound(CHAN_WEAPONEXTRA2); + A_StopSound(CHAN_WEAPONEXTRA3); + } + Super.RemoveInventory(item); + } + + // skull keys, random chance of "alas poor yorick" line + private clearscope bool IsSkullKey( Inventory item ) + { + String cname = item.GetClassName(); + cname.MakeLower(); + return (cname.IndexOf("skull") != -1); + } + + override void AddInventory( Inventory item ) + { + Super.AddInventory(item); + if ( !player ) return; + String cn = item.GetClassName(); + if ( !bInDefaultInventory && (level.maptime > 0) && (!(item is 'SWWMWeapon') || !(cn.Left(4) ~== "Dual")) ) // dual weapons are ignored here, as they're handled separately + { + // add lore if any + SWWMLoreLibrary.Add(player,cn); + // weapon get oneliner + if ( (item is 'Weapon') && !(item is 'SWWMGesture') && !(item is 'SWWMItemGesture') && mystats && !mystats.GotWeapon(Weapon(item).GetClass()) && (player == players[consoleplayer]) && !ingivecheat ) + { + if ( (item is 'HeavyMahSheenGun') && !Random[DemoLines](0,2) && SWWMHandler.AddOneliner("sheenspecial",2,20) ) + { + A_StartSound("sheen/specialpick",CHAN_ITEM,CHANF_OVERLAP,1.,.5); + A_StartSound("sheen/specialpick",CHAN_ITEM,CHANF_OVERLAP,1.,.5); + } + else if ( (item is 'SWWMWeapon') && (SWWMWeapon(item).GetLine != "") ) + { + // fall back to generic weapon get if voicepack lacks weapon-specific lines + if ( !SWWMHandler.AddOneliner(SWWMWeapon(item).GetLine,2) ) + SWWMHandler.AddOneliner("getweapon",2); + } + else SWWMHandler.AddOneliner("getweapon",2); + facegrin = true; + } + } + if ( (item is 'Key') && !ingivecheat && !deathmatch && !bInDefaultInventory ) + { + // score + int score = 100; + if ( player == players[consoleplayer] ) Console.Printf(StringTable.Localize("$SWWM_FINDKEY"),item.GetTag(),score); + else Console.Printf(StringTable.Localize("$SWWM_FINDKEYREM"),player.GetUserName(),item.GetTag(),score); + SWWMCredits.Give(player,score); + if ( player == players[consoleplayer] ) SWWMScoreObj.SpawnAtActorBunch(100,self); + if ( !Random[DemoLines](0,5) && IsSkullKey(item) ) + { + if ( !SWWMHandler.AddOneliner("skullget",2) ) + SWWMHandler.AddOneliner("keyget",2); + } + else SWWMHandler.AddOneliner("keyget",2); + facegrin = true; + } + // add collectible to stats + if ( item is 'SWWMCollectible' ) + { + let col = SWWMCollectible(item); + if ( !ingivecheat ) + { + SWWMHandler.AddOneliner(col.GetLine,2); + facegrin = true; + } + if ( !mystats ) return; + let cls = col.GetClass(); + if ( (mystats.ownedcollectibles.Size() > 0) && (mystats.ownedcollectibles.Find(cls) < mystats.ownedcollectibles.Size()) ) return; + mystats.ownedcollectibles.Push(cls); + } + // yorick + if ( (item is 'PuzzSkull') && mystats && !mystats.gotyorick && !ingivecheat ) + { + mystats.gotyorick = true; + SWWMHandler.AddOneliner("skullget",2); + facegrin = true; + } + // notify key obtained to flash icon + if ( item is 'Key' ) + EventHandler.SendInterfaceEvent(consoleplayer,"swwmkeyget."..item.GetClassName(),PlayerNumber()); + } + + override bool UseInventory( Inventory item ) + { + if ( (player.cheats&CF_TOTALLYFROZEN) || isFrozen() ) return false; + if ( !Actor.UseInventory(item) ) + { + if ( player == players[consoleplayer] ) + { + if ( !(item is 'Weapon') && !(item is 'SWWMCollectible') && !(item is 'Key') ) + A_StartSound("menu/noinvuse",CHAN_ITEMEXTRA); + if ( item is 'PuzzleItem' ) + SWWMHandler.AddOneliner("puzzfail",2,20); + } + return false; + } + // use sounds of big powerups are heard by other players + if ( (player == players[consoleplayer]) || item.bBIGPOWERUP ) + A_StartSound(item.UseSound,CHAN_ITEMEXTRA); + if ( (player == players[consoleplayer]) && (item is 'PuzzleItem') ) + SWWMHandler.AddOneliner("puzzsucc",2,10); + return true; + } + + // the default PickWeapon code breaks when dual weapons are involved + // so we gotta roll out our own here + // + // we also need to override PickNextWeapon and PickPrevWeapon due to quirks of + // gestures + private Weapon TraverseSlot( int slot, bool checkammo, int start, int end, Weapon cur ) + { + for ( int i=start; i>=end; i-- ) + { + let type = player.weapons.GetWeapon(slot,i); + let w = Weapon(player.mo.FindInventory(type)); + if ( !w || (w == cur) || (cur && cur.bPOWERED_UP && (w == cur.SisterWeapon)) ) + continue; + String sn = w.GetClassName(); + bool dual = ((type is 'SWWMWeapon') && (sn.Left(4) ~== "Dual")); + if ( (!checkammo && (!dual || (w.SisterWeapon && (w.SisterWeapon.Amount > 1)))) + || w.CheckAmmo(Weapon.EitherFire,false) ) + return w; + } + return null; + } + + override Weapon PickWeapon( int slot, bool checkammo ) + { + int slotsize = player.weapons.SlotSize(slot); + let cur = player.ReadyWeapon; + bool found = false; + int cs, ci; + if ( cur ) + { + if ( cur is 'SWWMGesture' ) [found, cs, ci] = player.weapons.LocateWeapon(SWWMGesture(cur).formerweapon.GetClass()); + else if ( cur is 'SWWMItemGesture' ) [found, cs, ci] = player.weapons.LocateWeapon(SWWMItemGesture(cur).gest.formerweapon.GetClass()); + else [found, cs, ci] = player.weapons.LocateWeapon(cur.GetClass()); + } + if ( found && (cs == slot) ) + { + // traverse the slot down from current index + let w = TraverseSlot(slot,checkammo,ci-1,0,cur); + if ( !w ) w = TraverseSlot(slot,checkammo,slotsize-1,ci+1,cur); + return w?w:cur; + } + let w = TraverseSlot(slot,checkammo,slotsize-1,0,cur); + return w?w:cur; + } + + // we have to reimplement this because of gestures + private bool, int, int FindMostRecentWeaponSWWM() + { + let cur = player.ReadyWeapon; + if ( player.PendingWeapon != WP_NOCHANGE ) cur = player.PendingWeapon; + if ( cur ) + { + bool found = false; + int cs, ci; + if ( cur is 'SWWMGesture' ) [found, cs, ci] = player.weapons.LocateWeapon(SWWMGesture(cur).formerweapon.GetClass()); + else if ( cur is 'SWWMItemGesture' ) [found, cs, ci] = player.weapons.LocateWeapon(SWWMItemGesture(cur).gest.formerweapon.GetClass()); + else [found, cs, ci] = player.weapons.LocateWeapon(cur.GetClass()); + return found, cs, ci; + } + return false, 0 ,0; + } + + private Weapon PickPNWeapon( bool bPrev = false ) + { + let [found, sslot, sidx] = FindMostRecentWeaponSWWM(); + let cur = player.ReadyWeapon; + if ( cur is 'SWWMGesture' ) cur = SWWMGesture(cur).formerweapon; + else if ( cur is 'SWWMItemGesture' ) cur = SWWMItemGesture(cur).gest.formerweapon; + if ( !cur || found ) + { + int slot, idx; + if ( !cur ) + { + sslot = bPrev?0:(NUM_WEAPON_SLOTS-1); + sidx = bPrev?0:player.Weapons.SlotSize(sslot); + } + slot = sslot; + idx = sidx; + int checked = 0; + do + { + if ( bPrev ) + { + if ( --idx < 0 ) + { + checked++; + if ( --slot < 0 ) slot = NUM_WEAPON_SLOTS-1; + idx = player.Weapons.SlotSize(slot)-1; + } + } + else + { + if ( ++idx >= player.Weapons.SlotSize(slot) ) + { + idx = 0; + checked++; + if ( ++slot >= NUM_WEAPON_SLOTS ) slot = 0; + } + } + let type = player.Weapons.GetWeapon(slot,idx); + let w = Weapon(FindInventory(type)); + if ( w && w.CheckAmmo(Weapon.EitherFire,false) ) + return w; + } + while ( ((slot != sslot) || (idx != sidx)) && (checked <= NUM_WEAPON_SLOTS) ); + } + return player.ReadyWeapon; + } + + override Weapon PickPrevWeapon() + { + return PickPNWeapon(true); + } + override Weapon PickNextWeapon() + { + return PickPNWeapon(); + } +} diff --git a/zscript/swwm_player_items.zsc b/zscript/player/swwm_player_items.zsc similarity index 78% rename from zscript/swwm_player_items.zsc rename to zscript/player/swwm_player_items.zsc index 1f77608f9..eca0c3e98 100644 --- a/zscript/swwm_player_items.zsc +++ b/zscript/player/swwm_player_items.zsc @@ -13,7 +13,7 @@ Class SayaCollar : SWWMArmor +INVENTORY.UNCLEARABLE; // SWWMArmor flags are not needed as this overrides AbsorbDamage directly } - override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) + override void AbsorbDamage( int damage, Name damageType, int &newdamage, Actor inflictor, Actor source, int flags ) { if ( (damage <= 0) || (flags&(DMG_FORCED|DMG_NO_ARMOR)) ) return; newdamage = damage; @@ -28,47 +28,43 @@ Class SayaCollar : SWWMArmor newdamage = splitdmg[0]+splitdmg[1]; } } + + // for friendly fire handling, jammed into here + override void ModifyDamage( int damage, Name damageType, int &newdamage, bool passive, Actor inflictor, Actor source, int flags ) + { + int ff = swwm_friendlyfire; + if ( !source || (source == Owner) || (source.player == Owner.player) || !source.IsFriend(Owner) || !ff ) return; + // 1: block incoming friendly damage + // 2: also block outgoing friendly damage + if ( (passive && ff) || (!passive && (ff == 2)) ) + newdamage = 0; + } } // high-resonant almasteel plating // EXTRA THICC as Saya requested Class AlmasteelPlating : SWWMArmor { - Inventory dbf; - Default { Inventory.Amount 1; Inventory.MaxAmount 1; Inventory.InterHubAmount 1; - Inventory.RestrictedTo "Demolitionist"; + Inventory.RestrictedTo 'Demolitionist'; SWWMArmor.ArmorPriority 2; +INVENTORY.UNCLEARABLE; +SWWMARMOR.NOHITFLASH; +SWWMARMOR.NOHITSOUND; +SWWMARMOR.NODRAIN; } - override void DoEffect() - { - Super.DoEffect(); - if ( !dbf ) return; - dbf.Amount = int(dbf.Amount*.95-1); // rapidly dissipate Telebrium corrosion - } override int HandleDamage( int damage, Name damageType, int flags ) { // 80% reduction for explosions double factor = (flags&DMG_EXPLOSION)?.2:1.; // 50% reduction for crushing if ( damageType == 'Crush' ) factor /= 2.; - // 66% reduction for Telebrium corrosion - else if ( damageType == 'Corroded' ) factor /= 3.; return damage-int(damage*factor); } - override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) - { - if ( inflictor && (inflictor is 'CorrodeDebuff') ) dbf = Inventory(inflictor); - Super.AbsorbDamage(damage,damageType,newdamage,inflictor,source,flags); - } override bool HandlePickup( Inventory item ) { // disallow vanilla armors diff --git a/zscript/player/swwm_player_move.zsc b/zscript/player/swwm_player_move.zsc new file mode 100644 index 000000000..09b30621d --- /dev/null +++ b/zscript/player/swwm_player_move.zsc @@ -0,0 +1,828 @@ +// general movement code +extend Class Demolitionist +{ + bool IsRunning() + { + // for analog move, check for full sprint speed + if ( isAnalogMoving ) + return (NormalizedMove().length() >= (gameinfo.normforwardmove[1]*256.)); + return !!(player.cmd.buttons&BT_RUN); + } + + // directional movement without straferunning + Vector2 NormalizedMove() + { + if ( !(player.cmd.forwardmove|player.cmd.sidemove) ) + return (0,0); + int idx = !!(player.cmd.buttons&BT_RUN); + // ratio between forwardmove and sidemove (depending on BT_RUN state) + double fs = gameinfo.normforwardmove[idx]/gameinfo.normsidemove[idx]; + // raw axes scaled to 1:1 ratio + Vector2 mvec = (player.cmd.forwardmove,-player.cmd.sidemove*fs); + // should we use raw analog movement? + if ( isAnalogMoving ) + { + // straferun cap (lol sorry) + if ( mvec.length() > gameinfo.normforwardmove[idx]*256. ) + mvec = mvec.unit()*gameinfo.normforwardmove[idx]*256.; + return mvec; // passed as-is otherwise + } + // multiply unit vector back to "raw" running speed (as TweakSpeed handles the "true" scaling for us later) + return mvec.unit()*gameinfo.normforwardmove[1]*256.; + } + + double TweakSpeed() + { + double fact; + // when analog moving, lerp between factors (should feel ok?) + if ( isAnalogMoving ) + { + double mscale = NormalizedMove().length(); + double rspeed = gameinfo.normforwardmove[0]*256.; + double sspeed = gameinfo.normforwardmove[1]*256.; + if ( mscale < rspeed ) // between walking/running + fact = SWWMUtility.MapRange(0,rspeed,.08,.4,mscale); + else if ( mscale < sspeed ) // between running/sprinting + fact = SWWMUtility.MapRange(rspeed,sspeed,.4,1.1,mscale); + else fact = 1.1; // sprinting + } + else fact = bWalking?.08:IsRunning()?1.1:.4; + for ( Inventory i=Inv; i; i=i.Inv ) fact *= i.GetSpeedFactor(); + return fact; + } + + void LeaveFootprint( double yofs, bool foot ) + { + Vector3 checkpos = level.Vec3Offset((pos.xy,floorz),(RotateVector((0,yofs*.25*radius),angle),0)); + let s = level.PointInSector(checkpos.xy); + // part 1: leave a footprint + if ( footblood[foot] > 0. ) + { + double zatstep = s.floorplane.ZAtPoint(checkpos.xy); + for ( int i=0; i checkpos.z ) continue; + else if ( ffz < zatstep ) continue; + zatstep = ffz; + break; + } + if ( abs(floorz-zatstep) <= 8. ) + { + let bs = Spawn('mkBloodStep',(checkpos.xy,zatstep)); + bs.angle = angle; + bs.frame = foot; + bs.A_ChangeModel("",0,"","",0,"models/extra",String.Format("BloodFoot%d.png",Random[Blood](1,4))); + bs.alpha = min(1.,footblood[foot]); + bs.SetShade(footbloodcol[foot]); + } + footblood[foot] = max(0.,footblood[foot]*.95-.05); + } + // part 2: check for stepping on a blood pool, make feet bloody + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + for ( mkBloodPool p=hnd.pools; p; p=p.nextpool ) + { + // vertical distance fast check + if ( abs(checkpos.z-p.pos.z) > 8. ) + continue; + // horizontal distance slower check + double distsq = level.Vec2Diff(checkpos.xy,p.pos.xy).lengthsquared(); + if ( distsq > (p.radius*p.radius+.25*radius*radius) ) + continue; + // muck it up, with some color mixing too + double oldblood = footblood[foot]; + footblood[foot] = 2.; + footbloodcol[foot] = SWWMUtility.LerpColor(p.stepcol,footbloodcol[foot],min(1.,oldblood)*.75); + } + } + + void PlayFootstep( double yofs, int run = 0, double vol = .3, bool nosplash = false ) + { + if ( run == 2 ) + { + A_StartSound("demolitionist/run",CHAN_FOOTSTEP,CHANF_OVERLAP,vol); + if ( !nosplash ) + { + let b = Spawn('InvisibleSplasher',level.Vec3Offset(pos,(RotateVector((0,yofs*.25*radius),angle),0))); + b.target = self; + b.A_CheckTerrain(); + } + } + else if ( run == 1 ) + { + A_StartSound("demolitionist/walk",CHAN_FOOTSTEP,CHANF_OVERLAP,vol*.5); + if ( !nosplash ) + { + let b = Spawn('InvisibleSplasher',level.Vec3Offset(pos,(RotateVector((0,yofs*.25*radius),angle),0))); + b.target = self; + b.A_CheckTerrain(); + } + } + else + { + A_StartSound("demolitionist/walk",CHAN_FOOTSTEP,CHANF_OVERLAP,vol*.2); + if ( !nosplash ) + { + let b = Spawn('SmolInvisibleSplasher',level.Vec3Offset(pos,(RotateVector((0,yofs*.25*radius),angle),0))); + b.target = self; + b.A_CheckTerrain(); + } + } + LeaveFootprint(yofs,yofs>0); + } + + override void CalcHeight() + { + double defviewh = viewheight+player.crouchviewdelta; + oldbob = player.bob; + if ( bFlyCheat || (player.cheats&CF_NOCLIP2) ) + player.bob = 0.; + else + player.bob = min((player.vel dot player.vel)*player.GetMoveBob(),MAXBOB); + if ( player.cheats&CF_NOVELOCITY ) + { + player.viewz = pos.z+defviewh; + if ( player.viewz > ceilingz-4 ) + player.viewz = ceilingz-4; + SetViewPos((0.,0.,0.)); + return; + } + // adjust viewheight + if ( player.playerstate == PST_LIVE ) + { + player.viewheight += player.deltaviewheight; + if ( player.viewheight > defviewh ) + { + player.viewheight = defviewh; + player.deltaviewheight = 0.; + } + else if ( player.viewheight < (defviewh/2.) ) + { + player.viewheight = defviewh/2.; + if ( player.deltaviewheight <= 0. ) + player.deltaviewheight = 1./65536.; + } + if ( player.deltaviewheight ) + { + player.deltaviewheight += .25; + if ( !player.deltaviewheight ) + player.deltaviewheight = 1./65536.; + } + } + // apply bobbing (formula adapted from Unreal) + oldbobtime = bobtime; + double vel2d = vel.xy dot vel.xy; + bobtime += (1.8+.4*min(vel2d/100.,3.))/GameTicRate; + Vector2 bob = (sin(bobtime*180.),.5*sin(bobtime*360.))*player.bob*.35; + if ( player.morphtics ) + bob = (0.,0.); + else if ( player.bob && !multiplayer && !(player.cheats&CF_CHASECAM) + && player.onground && !bNoGravity && (player.crouchdir != -1) + && (player.cmd.forwardmove|player.cmd.sidemove) ) + { + // bob-based footsteps in first person + int m = int(2.*M_PI+oldbobtime); + int n = int(2.*M_PI+bobtime); + if ( m != n ) + { + int side = (sin(bobtime*180.)>0.)?1:-1; + int spd = bWalking?0:IsRunning()?2:1; + PlayFootstep(side,spd); + } + } + // set up viewz + player.viewz = pos.z+player.viewheight+(bob.y*clamp(viewbob,0.,1.5)); + // handle smooth step down (hacky but looks ok) + player.viewz += ssup; + ssup = max(0,(ssup*.7)-.25); + if ( floorclip && (player.playerstate != PST_DEAD) && (pos.z <= floorz) ) + player.viewz -= floorclip; + if ( player.viewz > ceilingz-4 ) + player.viewz = ceilingz-4; + if ( player.viewz < floorz+4 ) + player.viewz = floorz+4; + // add viewpos Y for side bob (currently breaks SCALEDNOLERP) + SetViewPos((0.,bob.x*clamp(viewbob,0.,1.5),0.)); + } + + override void CheckPitch() + { + if ( bFly && !bFlyCheat && !(player.cheats&CF_NOCLIP2) ) + { + if ( player.cmd.pitch == -32768 ) player.centering = true; + return; // the rest is handled in moveplayer + } + // fun fact: we can't override freelook disabling + // so... just call super, I guess + Super.CheckPitch(); + } + + override void CheckMoveUpDown() + { + if ( InStateSequence(CurState,FindState('Dash')) ) + player.cmd.upmove = 0; + if ( bFly && !bFlyCheat && !(player.cheats&CF_NOCLIP2) ) + { + double fs = TweakSpeed(); + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); + Vector3 accel; + if ( (player.cmd.upmove == -32768) || sendtoground ) + { + sendtoground = true; + player.centering = true; + accel = (0,0,-4096); + } + else accel = z*player.cmd.upmove*8.; + accel *= fs/128.; + vel = vel+accel/GameTicRate; + if ( sendtoground ) vel.xy *= .6; + if ( (pos.z <= floorz) || bOnMobj ) sendtoground = false; + if ( vel.length() > 50. ) + vel = vel.unit()*50.; + return; + } + else sendtoground = false; + Super.CheckMoveUpDown(); + } + + private bool ShouldDecelerate( Sector s ) + { + // check if we can apply fast decel while standing on this sector + // (important to not break certain intended vanilla effects) + if ( bNOFRICTION ) + return false; // we don't have friction at all (e.g.: while dashing) + if ( bWINDTHRUST && (s.special >= 40) && (s.special <= 51) ) + return false; // wind + if ( (s.special == 84) || (s.special == 118) || ((s.special >= 201) && (s.special <= 244)) ) + return false; // current + // TODO check for scroller thinkers if that ever gets exposed to ZScript + return true; + } + + private Vector3 GetGroundNormal() + { + // find closest 3d floor for its normal + F3DFloor ff; + for ( int i=0; i 40. ) vel = (vel+accel/GameTicRate).unit()*spd; + else vel = vel+accel/GameTicRate; + vel *= .95; + player.vel += RotateVector(nmove,angle)*cos(pitch)*16.; + player.jumptics = -2; + if ( player.cmd.forwardmove|player.cmd.sidemove ) + PlayRunning(); + if ( player.cheats&CF_REVERTPLEASE ) + { + player.cheats &= ~CF_REVERTPLEASE; + player.camera = player.mo; + } + } + else + { + if ( player.turnticks ) + { + player.turnticks--; + A_SetAngle(angle+(180./TURN180_TICKS),SPF_INTERPOLATE); + } + else angle += player.cmd.yaw*(360./65536.); + player.onground = (pos.z<=floorz)||bOnMobj||bMBFBouncer||(player.cheats&CF_NOCLIP2); + let [friction, movefactor] = GetFriction(); + if ( player.cmd.forwardmove|player.cmd.sidemove ) + { + double bobfactor; + bobfactor = (friction maxspd ) spd -= (spd-maxspd)*.1; + vel = (vel+accel).unit()*spd; + } + player.vel += RotateVector(nmove,angle)*bobfactor*cos(pitch)*16.*spdup; + } + else if ( player.onground ) + { + Vector2 accel = RotateVector(nmove,angle); + double maxspd = 16.*TweakSpeed(); + // account for special cases where max speed is zero + // also, slippery if waist-high or deeper + double spdup = 1.; + if ( (waterlevel > 1) || (maxspd <= 0.) ) vel.xy += accel; + else + { + // factors for slippery floors (make steering harder) + double fact1 = SWWMUtility.MapRange(.90625,.97265625,2.,1.,friction); + fact1 = clamp(fact1,1.,2.); + double fact2 = SWWMUtility.MapRange(.90625,.97265625,1.,4.,friction); + fact2 = clamp(fact2,1.,4.); + if ( CanCrouch() && (player.crouchfactor != 1) ) maxspd *= player.crouchfactor; + double spd = vel.xy.length(); + // quicker speedup + spdup = clamp(maxspd/max(.01,spd),1.,fact1); + vel.xy += accel*spdup; + // additional steering + quicker slow down + spd = vel.xy.length(); + if ( spd > maxspd ) spd -= (spd-maxspd)*.1; + vel.xy = (vel.xy*fact2+accel).unit()*spd; + } + player.vel += RotateVector(nmove,angle)*bobfactor*16.*spdup; + } + else player.vel *= .75; + // override air control because we REALLY need the extra mobility + if ( !player.onground && !bNOGRAVITY ) + { + nmove = NormalizedMove(); + double fs = TweakSpeed(); + if ( CanCrouch() && (player.crouchfactor != -1) ) fs *= player.crouchfactor; + Vector2 accel = RotateVector(nmove,angle); + accel *= fs/320.; + double spd = vel.xy.length(); + double maxspd = fs*12.; + if ( spd > maxspd ) vel.xy = (vel.xy+accel/GameTicRate).unit()*spd; + else vel.xy = vel.xy+accel/GameTicRate; + } + if ( nmove.length() > 0. ) + PlayRunning(); + if ( player.cheats&CF_REVERTPLEASE ) + { + player.cheats &= ~CF_REVERTPLEASE; + player.camera = player.mo; + } + } + else if ( player.onground && ShouldDecelerate(floorsector) ) + { + // quickly decelerate if we're not holding movement keys + // the default friction is mapped to a 70% reduction, + // while slippery floors (above 95%) will have no reduction at all + double fact = SWWMUtility.MapRange(.90625,.97265625,.7,1.,friction); + fact = clamp(fact,.6,1.); // ensure this doesn't go too far out of range (especially, prevent endless acceleration) + vel *= fact; + player.vel *= fact; + } + if ( abs(roll) > 0. ) roll += clamp(deltaangle(roll,0),-3.,3.); + } + guideangle *= .9; + guidepitch *= .9; + guideroll *= .9; + // anchor to ground when going down steps + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( lastground && !player.onground && !bFly && !bFlyCheat && (abs(pos.z-floorz) <= maxdropoffheight) && (player.jumptics == 0) && (vel.z <= 0) && !isdashing && !hnd.nogroundanchor ) + { + // test for gap crossing (i.e: climbing up platforms with holes between them) + Vector3 storepos = pos; + double storefloorz = floorz; + bool crossgap = false; + for ( int i=1; i<=4; i++ ) // test up to 4 steps ahead, should be enough for most cases + { + SetOrigin(Vec3Offset(vel.x,vel.y,vel.z),true); + if ( floorz < storepos.z ) continue; + crossgap = true; + break; + } + SetOrigin(storepos,true); + floorz = storefloorz; + if ( !crossgap ) + { + ssup = max(0,(pos.z-floorz)); + SetZ(floorz); + lastground = player.onground = true; + } + } + if ( player.onground ) lastgroundtic = level.maptime; + else lastairtic = level.maptime; + if ( !(player.cmd.forwardmove|player.cmd.sidemove) ) + PlayIdle(); + if ( !(player.cmd.buttons&BT_USER2) || (gamestate != GS_LEVEL) || (dashcooldown > 0) || (dashfuel < 20.) ) + return; + Vector3 dodge = (0,0,0); + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); + int fm = player.cmd.forwardmove; + int sm = player.cmd.sidemove; + if ( !(fm|sm) ) fm = 1; + if ( fm ) dodge += (fm>0)?X:-X; + if ( sm ) dodge += (sm>0)?Y:-Y; + if ( dodge == (0,0,0) ) dodge = X; // do we really need this? + if ( player.onground && !bNOGRAVITY && !(player.cheats&CF_NOCLIP2) ) + { + Vector3 fnorm = GetGroundNormal(); + if ( dodge dot fnorm <= 0. ) + { + // recalc and project onto floor normal + dodge = (0,0,0); + Vector2 xdir = (cos(angle),sin(angle)); + Vector2 ydir = (sin(angle),-cos(angle)); + if ( fm ) dodge.xy += (fm>0)?xdir:-xdir; + if ( sm ) dodge.xy += (sm>0)?ydir:-ydir; + dodge = dodge-(dodge dot fnorm)*fnorm; + } + } + if ( dodge.length() <= 0. ) return; // not sure if this can happen, really + fullfuel = (dashfuel >= default.dashfuel); + dashdir = dodge.unit(); + dashcooldown = 10; + dashboost = 20.; + bOnMobj = false; + if ( player.cheats & CF_REVERTPLEASE ) + { + player.cheats &= ~CF_REVERTPLEASE; + player.camera = player.mo; + } + vel += dashdir*dashboost; + vel.z += clamp(-vel.z*.4,0.,30.); + player.jumptics = -1; + SetStateLabel('Dash'); + A_StartSound("demolitionist/jet",CHAN_JETPACK,CHANF_LOOP); + lastbump *= .95; + mystats.dashcount++; + BumpView(5.,vel); + } + + override void CheckJump() + { + if ( InStateSequence(CurState,FindState('Dash')) ) return; // do not + if ( !(player.cmd.buttons&BT_JUMP) || (gamestate != GS_LEVEL) ) return; + Vector2 walldir = AngleToVector(angle); + bool walljump = false, wallclimb = false; + double climbvelz = 0.; + FLineTraceData d; + Actor jumpactor = null; + for ( int i=-4; i last_jump_held) && (((dashfuel > 10.) && (boostcooldown <= 0)) || walljump || wallclimb)) ) + { + if ( !player.onground && (((walljump || wallclimb) && (level.maptime < last_kick+8)) || (!(walljump || wallclimb) && (level.maptime < last_boost+8))) ) + return; + double jumpvelz = JumpZ*35./GameTicRate; + double jumpfac = 0; + for ( let p=Inv; p; p=p.Inv ) + { + let pp = PowerHighJump(p); + if ( pp ) + { + double f = pp.Strength; + if ( f > jumpfac ) jumpfac = f; + } + } + if ( jumpfac > 0 ) jumpvelz *= jumpfac; + bool raging = FindInventory('RagekitPower'); + if ( raging ) jumpvelz *= 2.; + double pvelz = vel.z; + if ( !player.onground ) + { + // check for wall stuff + if ( walljump ) + { + if ( vel.z < 10. ) + vel.z += 2.*jumpvelz+clamp(-pvelz*.6,0.,30.); + vel.xy += walldir*20*Speed; + lastbump *= .95; + } + else if ( wallclimb ) + { + if ( vel.z < 10. ) + vel.z += climbvelz+clamp(-pvelz*.95,0.,30.); + vel.xy += walldir*10*Speed; + lastbump *= .97; + } + if ( walljump && jumpactor && jumpactor.bSHOOTABLE ) + { + SWWMUtility.DoKnockback(jumpactor,(-walldir,0),12000); + int dmg = jumpactor.DamageMobj(self,self,10,'Jump'); + if ( raging ) + { + let ps = Spawn('BigPunchSplash',pos); + ps.damagetype = 'Jump'; + ps.target = self; + ps.special1 = dmg; + } + } + if ( walljump || wallclimb ) + { + last_kick = level.maptime+1; + SWWMUtility.AchievementProgressInc("jump",1,player); + } + } + bOnMobj = false; + player.jumpTics = -1; + if ( (dashfuel > 10.) && !player.onground && !walljump && !wallclimb ) + { + dashboost = 3.; + boostcooldown = 20; + if ( vel.z < 10. ) + vel.z += jumpvelz+clamp(-pvelz*.4,0.,30.); + A_StartSound("demolitionist/jet",CHAN_JETPACK,CHANF_LOOP); + lastbump *= .95; + mystats.boostcount++; + last_boost = level.maptime+1; + BumpView(3.,vel); + SetStateLabel('Boost'); + } + else + { + A_StartSound(walljump?"demolitionist/kick":"demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP); + dashboost = 0.; + // bunnyhop time + if ( !walljump && !wallclimb ) + { + if ( !bWalking && (level.maptime < (lastairtic+10)) ) + { + SWWMUtility.AchievementProgressInc("bune",1,player); + // bhop, z vel relative to vel size + if ( vel.z < 25. ) // don't ramp up too hard + { + vel.z += jumpvelz*((IsRunning()?1.2:.65)+vel.length()*.01); + // add part of last landing z velocity too + vel.z += max(0,-landvelz*(raging?.45:.35)); + } + // accelerate + vel.xy += (RotateVector(NormalizedMove(),angle)/2400.)*(1.+vel.length()*.025)*TweakSpeed(); + } + else + { + // first jump + if ( vel.z < 10. ) // don't ramp up too hard + { + vel.z += jumpvelz*(bWalking?.75:IsRunning()?1.25:1.); + // add part of last landing z velocity too + vel.z += max(0,-landvelz*(raging?.35:.25)); + } + // long jump if running/sprinting + if ( !walljump && !wallclimb && !bWalking ) + vel.xy += (RotateVector(NormalizedMove(),angle)/1500.)*(raging?2.:1.)*TweakSpeed(); + } + } + BumpView(clamp((vel.length()-10)/12.,1.,20.),vel); + if ( swwm_mutevoice < 4 ) + { + String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); + int loudlv = swwm_voiceamp; + int maxjump = StringTable.Localize("$SWWM_"..myvoice.."_NJUMP").ToInt(); + int idx = (maxjump<=1)?1:Random[DemoLines](1,maxjump); + A_StartSound(String.Format("voice/%s/jump%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/jump%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/jump%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/jump%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } + SetStateLabel('Jump'); + } + } + last_jump_held = level.maptime+1; + } + + bool AllowCrouch() + { + if ( player.cmd.buttons&BT_JUMP ) return false; + if ( InStateSequence(CurState,FindState('Dash')) ) return false; // no crouch during dash + return true; + } + + // Imagine having to duplicate two functions only to change a couple values in both + // I sure love constants + override void CrouchMove( int direction ) + { + double defaultheight = FullHeight; + double savedheight = Height; + double crouchspeed = direction*CROUCHSPEED*((direction>0)?.65:.9); // match animation speed + double oldheight = player.viewheight; + player.crouchdir = direction; + player.crouchfactor += crouchspeed; + // check whether the move is ok + Height = defaultheight; // actually test the full height, or it'll look weird + if ( !TryMove(pos.xy,false) ) + { + Height = savedheight; + if ( direction > 0 ) + { + // doesn't fit + player.crouchfactor -= crouchspeed; + player.crouchdir = -1; // force crouch + return; + } + } + Height = savedheight; + player.crouchfactor = clamp(player.crouchfactor,.3,1.); + player.viewheight = ViewHeight*player.crouchfactor; + player.crouchviewdelta = player.viewheight-ViewHeight; + // Check for eyes going above/below fake floor due to crouching motion. + CheckFakeFloorTriggers(pos.z+oldheight,true); + } + + override void CheckCrouch( bool totallyfrozen ) + { + // crouch to swim/float down + if ( !totallyfrozen && (player.cmd.buttons&BT_CROUCH) && bNOGRAVITY ) + vel.z = -3; + bool wascrouching = !!(player.cmd.buttons&BT_CROUCH); + if ( !AllowCrouch() ) player.cmd.buttons &= ~BT_CROUCH; + if ( CanCrouch() && (player.health > 0) ) + { + if ( !totallyfrozen ) + { + int crouchdir = player.crouching; + if ( !crouchdir ) crouchdir = (player.cmd.buttons&BT_CROUCH)?-1:1; + else if ( player.cmd.buttons&BT_CROUCH ) player.crouching = 0; + if ( (crouchdir == 1) && (player.crouchfactor < 1) && (pos.z+height < ceilingz) ) + CrouchMove(1); + else if ( (crouchdir == -1) && (player.crouchfactor > .3) ) + CrouchMove(-1); + } + } + else player.Uncrouch(); + player.crouchoffset = -(ViewHeight)*(1-player.crouchfactor); + // we need the crouch button state to be preserved for other functions + if ( wascrouching ) player.cmd.buttons |= BT_CROUCH; + } + + // let's customize our gravity + override void FallAndSink( double grav, double oldfloorz ) + { + if ( !player || (player.mo != self) || (player.cheats&CF_TOTALLYFROZEN) ) + { + Super.FallAndSink(grav,oldfloorz); + return; + } + // do nothing if standing on ground or "floating" + if ( player.onground || bNOGRAVITY ) return; + // ensure we don't pass terminal velocity just from falling + if ( vel.z < -50 ) return; + // we don't care about "the doom way" here, gravity is + // ALWAYS in effect when not standing on solid ground + if ( waterlevel > 1 ) + { + // sink faster + grav *= .35; + } + // reduce gravity while we're boosting + else if ( InStateSequence(CurState,FindState('Dash')) || InStateSequence(CurState,FindState('Boost')) ) + grav *= .25; + vel.z -= grav; + } +} diff --git a/zscript/player/swwm_player_think.zsc b/zscript/player/swwm_player_think.zsc new file mode 100644 index 000000000..56e509b02 --- /dev/null +++ b/zscript/player/swwm_player_think.zsc @@ -0,0 +1,359 @@ +// playerthink / deaththink +extend Class Demolitionist +{ + void CheckDefaceTexture() + { + if ( player.usedown ) + return; + FLineTraceData d; + LineTrace(angle,DEFMELEERANGE*2,pitch,TRF_THRUACTORS,player.viewheight,data:d); + if ( d.HitType == TRACE_HitNone ) return; + let [remove, replacewith] = SWWMUtility.DefaceTexture(d.HitTexture); + if ( !remove ) return; + if ( (d.HitType != TRACE_HitWall) || !d.HitLine.special || !(d.HitLine.activation&SPAC_Use) ) + player.usedown = true; + A_StartSound("bestsound",CHAN_ITEMEXTRA,CHANF_OVERLAP); + lastbump *= .97; + int scr = (TexMan.GetName(d.HitTexture).Left(6)~=="ZZWOLF")?200:20; + if ( scr == 20 ) SWWMUtility.AchievementProgressInc("doodle",1,player); + SWWMCredits.Give(player,scr); + if ( player == players[consoleplayer] ) SWWMScoreObj.Spawn(scr,d.HitLocation); + if ( d.HitType == TRACE_HitWall ) + { + if ( d.Hit3DFloor ) + { + // TODO connected textures for upper/lower + if ( d.Hit3DFloor.flags&F3DFloor.FF_UPPERTEXTURE ) d.HitLine.sidedef[d.LineSide].SetTexture(0,replacewith); + else if ( d.Hit3DFloor.flags&F3DFloor.FF_LOWERTEXTURE ) d.HitLine.sidedef[d.LineSide].SetTexture(2,replacewith); + else d.Hit3DFloor.master.sidedef[0].SetTexture(1,replacewith); + } + else + { + // find connected sidedefs with the same texture + Array con; + con.Clear(); + con.Push(d.HitLine); + Sector s = d.LineSide?d.HitLine.backsector:d.HitLine.frontsector; + int found = 0; + do + { + found = 0; + foreach ( l:s.Lines ) + { + if ( !l.sidedef[d.LineSide] || (l.sidedef[d.LineSide].GetTexture(d.LinePart) != d.HitTexture) ) + continue; + if ( con.Find(l) < con.Size() ) continue; + bool notmatched = true; + foreach ( c:con ) + { + if ( (l.v1 != c.v1) && (l.v2 != c.v2) && (l.v1 != c.v2) && (l.v2 != c.v1) ) + continue; + notmatched = false; + break; + } + if ( notmatched ) continue; + con.Push(l); + found++; + } + } + while ( found > 0 ); + foreach ( c:con ) + c.sidedef[d.LineSide].SetTexture(d.LinePart,replacewith); + } + } + else if ( d.HitType == TRACE_HitCeiling ) + { + if ( d.Hit3DFloor ) + { + if ( d.Hit3DFloor.flags&F3DFloor.FF_INVERTSECTOR ) d.Hit3DFloor.model.SetTexture(1,replacewith); + else d.Hit3DFloor.model.SetTexture(0,replacewith); + } + else + { + // find connected sectors with the same ceiling texture (THIS IS VERY UGLY CODE) + Array con; + con.Clear(); + con.Push(d.HitSector); + int found; + do + { + found = 0; + foreach ( s:con ) + { + foreach ( l:s.Lines ) + { + // only check two-sided + if ( !l.sidedef[1] ) continue; + // don't check if there's a height difference + if ( (l.frontsector.ceilingplane.ZAtPoint(l.v1.p) != l.backsector.ceilingplane.ZAtPoint(l.v1.p)) + || (l.frontsector.ceilingplane.ZAtPoint(l.v2.p) != l.backsector.ceilingplane.ZAtPoint(l.v2.p)) ) + continue; + if ( (l.frontsector.GetTexture(1) == d.HitTexture) && (con.Find(l.frontsector) >= con.Size()) ) + { + found++; + con.Push(l.frontsector); + } + if ( (l.backsector.GetTexture(1) == d.HitTexture) && (con.Find(l.backsector) >= con.Size()) ) + { + found++; + con.Push(l.backsector); + } + } + } + } + while ( found > 0 ); + foreach ( s:con ) + s.SetTexture(1,replacewith); + } + } + else if ( d.HitType == TRACE_HitFloor ) + { + if ( d.Hit3DFloor ) + { + if ( d.Hit3DFloor.flags&F3DFloor.FF_INVERTSECTOR ) d.Hit3DFloor.model.SetTexture(0,replacewith); + else d.Hit3DFloor.model.SetTexture(1,replacewith); + } + else + { + // find connected sectors with the same floor texture (THIS IS VERY UGLY CODE) + Array con; + con.Clear(); + con.Push(d.HitSector); + int found; + do + { + found = 0; + foreach ( s:con ) + { + foreach ( l:s.Lines ) + { + // only check two-sided + if ( !l.sidedef[1] ) continue; + // don't check if there's a height difference + if ( (l.frontsector.floorplane.ZAtPoint(l.v1.p) != l.backsector.floorplane.ZAtPoint(l.v1.p)) + || (l.frontsector.floorplane.ZAtPoint(l.v2.p) != l.backsector.floorplane.ZAtPoint(l.v2.p)) ) + continue; + if ( (l.frontsector.GetTexture(0) == d.HitTexture) && (con.Find(l.frontsector) >= con.Size()) ) + { + found++; + con.Push(l.frontsector); + } + if ( (l.backsector.GetTexture(0) == d.HitTexture) && (con.Find(l.backsector) >= con.Size()) ) + { + found++; + con.Push(l.backsector); + } + } + } + } + while ( found > 0 ); + foreach ( s:con ) + s.SetTexture(0,replacewith); + } + } + } + + void CheckItemUsePickup() + { + if ( player.usedown ) + return; + if ( !itrace ) itrace = new('SWWMItemTracer'); + Vector3 dir; + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetPlayerEye(self); + Sector os = level.PointInSector(origin.xy); + int rings = 1; + Array ignoreme; + ignoreme.Clear(); + for ( double i=0; i<.2; i+=.02 ) + { + for ( int j=0; j<360; j+=(360/rings) ) + { + dir = SWWMUtility.ConeSpread(x,y,z,j,i); + itrace.Trace(origin,os,dir,UseRange,0,ignore:self); + if ( itrace.Results.HitType != TRACE_HitActor ) continue; + if ( ignoreme.Find(itrace.Results.HitActor) < ignoreme.Size() ) continue; + player.usedown = true; // we found an item, ignore further uses + if ( itrace.Results.HitActor.Used(self) ) return; + ignoreme.Push(itrace.Results.HitActor); + } + rings += 2; + } + } + + bool CheckMirrorUse() + { + if ( !mtrace ) mtrace = new('SWWMMirrorTracer'); + Vector3 dir = SWWMUtility.GetPlayerAimDir(self); + Vector3 origin = SWWMUtility.GetPlayerEye(self); + mtrace.Trace(origin,level.PointInSector(origin.xy),dir,UseRange,0,ignoreallactors:true); + if ( mtrace.Results.HitType != TRACE_HitWall ) return false; + // there's a mirror here + if ( (gametic > mirrorcooldown) && (swwm_mutevoice < 2) ) + mirrorcooldown = SWWMHandler.AddOneliner("mirror",2,10)+70; + // mute fail use + A_StopSound(CHAN_VOICE); + return true; + } + + override void PlayerThink() + { + if ( player && (player.cheats&CF_PREDICTING) ) + { + // sod off, m8 + Super.PlayerThink(); + return; + } + if ( !player || (player.playerstate != PST_DEAD) ) deadtimer = 0; + oldangles = (angle,pitch,roll); + if ( player && (player.mo == self) && (player.playerstate != PST_DEAD) && (player.cmd.buttons&BT_USE) ) + { + if ( !player.usedown ) lastuse = gametic; + CheckDefaceTexture(); + if ( !player.usedown && froggy ) + player.usedown = froggy.Used(self); + // try to "use" the item closest to the crosshair + CheckItemUsePickup(); + } + Super.PlayerThink(); + if ( (gametic == lastuse) && IsActorPlayingSound(CHAN_VOICE,"*usefail") && !CheckMirrorUse() ) // don't play fail use if we're checking out a mirror + { + failcounter++; + if ( (failcounter > 8) && !Random[DemoLines](0,max(0,12-failcounter/3)) && (gametic > failcooldown) && (swwm_mutevoice < 2) ) + { + failcooldown = SWWMHandler.AddOneliner("usefail",2,20); + failcounter = max(4,failcounter-10); + } + else if ( (failcounter > 2) && Random[DemoLines](0,1) && (gametic > failcooldown) && (swwm_mutevoice < 4) ) + { + String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); + int loudlv = swwm_voiceamp; + int maxusegrunt = StringTable.Localize("$SWWM_"..myvoice.."_NUSEGRUNT").ToInt(); + int idx = (maxusegrunt<=1)?1:Random[DemoLines](1,maxusegrunt); + A_StartSound(String.Format("voice/%s/usegrunt",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + failcooldown = int(S_GetLength(String.Format("voice/%s/usegrunt",myvoice,idx))*GameTicRate); + failcounter = max(2,failcounter-1); + } + } + else if ( gametic > lastuse+50 ) failcounter = 0; + oldlagangles = lagangles; + lagangles = lagangles*.8+(angle,pitch,roll)*.2; + oldlagdangles = lagdangles; + lagdangles = lagdangles*.8+(deltaangle(oldangles.x,angle),deltaangle(oldangles.y,pitch),deltaangle(oldangles.z,roll))*.2; + if ( !player || (player.mo != self) ) return; + if ( (player.playerstate != PST_DEAD) && (player.jumptics != 0) ) + { + // faster falloff + player.jumptics -= 5; + if ( player.onground && (player.jumptics < -18) ) + player.jumptics = 0; + } + if ( (player.playerstate != PST_DEAD) && !ReactionTime ) + { + // quick grenade + if ( player.cmd.buttons&BT_USER4 ) + SWWMGesture.SetGesture(self,GS_Grenade); + // emergency melee with no weapon + else if ( !player.ReadyWeapon && (player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1)) ) + SWWMGesture.SetGesture(self,GS_EmptyMelee); + } + } + + override void DeathThink() + { + oldangles = (angle,pitch,roll); + player.Uncrouch(); + TickPSprites(); + player.onground = (pos.Z<=floorz); + // ded (demo-chan falls faster tho) + player.deltaviewheight = 0; + if ( player.viewheight > 6 ) player.viewheight -= 3; + if ( player.viewheight < 6 ) player.viewheight = 6; + // center pitch + double dpitch = clamp(deltaangle(pitch,0),-6,6); + if ( abs(dpitch) < 3. ) pitch = 0.; + else A_SetPitch(pitch+dpitch,SPF_INTERPOLATE); + // add roll + double droll = clamp(deltaangle(roll,50)*.5,-5,5); + if ( abs(droll) < 2. ) roll = 50.; + else A_SetRoll(roll+droll,SPF_INTERPOLATE); + // bob interpolation still active + oldlagangles = lagangles; + lagangles = lagangles*.8+(angle,pitch,roll)*.2; + oldlagdangles = lagdangles; + lagdangles = lagdangles*.8+(deltaangle(oldangles.x,angle),deltaangle(oldangles.y,pitch),deltaangle(oldangles.z,roll))*.2; + player.mo.CalcHeight(); + if ( player.damagecount ) player.damagecount--; + if ( player.poisoncount ) player.poisoncount--; + // solid unless we can respawn, for safety + if ( multiplayer || level.AllowRespawn || sv_singleplayerrespawn || G_SkillPropertyInt(SKILLP_PlayerRespawn) ) + bSolid = false; + else bSolid = true; + deadtimer++; + if ( (deadtimer == 60) && (player == players[consoleplayer]) ) + A_StartSound("demolitionist/youdied",CHAN_DEMOVOICE,CHANF_OVERLAP|CHANF_UI); + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( multiplayer || level.AllowRespawn || sv_singleplayerrespawn || G_SkillPropertyInt(SKILLP_PlayerRespawn) ) + { + // standard behaviour, respawn normally + if ( (((player.cmd.buttons&BT_USE) || ((deathmatch || alwaysapplydmflags) && sv_forcerespawn)) && !sv_norespawn) + && ((Level.maptime >= player.respawn_time) || ((player.cmd.buttons&BT_USE) && !player.Bot)) ) + { + player.cls = null; + player.playerstate = PST_REBORN; + if ( special1 > 2 ) special1 = 0; + } + } + else if ( (player.cmd.buttons&BT_USE) && (deadtimer > 120) ) + { + // reload save + player.cls = null; + player.playerstate = PST_ENTER; + if ( special1 > 2 ) special1 = 0; + } + else if ( (player.cmd.buttons&BT_ATTACK) && (deadtimer > 120) && (!hnd || !hnd.gdat.disablerevive) && swwm_revive ) + { + // reboot (if possible) + if ( !FindInventory('ReviveCooldown') && (((swwm_revivecooldown >= 0) && (G_SkillPropertyInt(SKILLP_ACSReturn) < 4)) || !hasrevived) && (G_SkillPropertyInt(SKILLP_ACSReturn) < 6) ) + { + if ( hasrevived ) SWWMUtility.MarkAchievement("sekiro",player); + hasrevived = true; + player.Resurrect(); + if ( player == players[consoleplayer] ) + SWWMScoreObj.SpawnAtActorBunch(player.health,self,Font.CR_BLUE); + player.damagecount = 0; + player.bonuscount = 0; + player.poisoncount = 0; + blinktime = 30; + SetState(FindState('Spawn')+1); // skip tweening + roll = 0; + let s = Spawn('DemolitionistShockwave',pos); + s.target = self; + s.special1 = 30; + ReactionTime = 17; + A_Stop(); + A_AlertMonsters(swwm_uncapalert?0:2500); + if ( player == players[consoleplayer] ) + { + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP); + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.7); + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.4); + } + lastbump *= 1.5; + SWWMHandler.DoFlash(self,Color(255,255,255,255),10); + SWWMHandler.DoFlash(self,Color(255,128,192,255),30); + if ( special1 > 2 ) special1 = 0; + if ( (swwm_revivecooldown > 0) && (G_SkillPropertyInt(SKILLP_ACSReturn) < 4) ) + GiveInventory('ReviveCooldown',1); + } + else if ( level.maptime > revivefail ) + { + if ( player == players[consoleplayer] ) A_StartSound("menu/fail",CHAN_ITEM,CHANF_UI); + revivefail = level.maptime+120; + } + } + } +} diff --git a/zscript/player/swwm_player_tick.zsc b/zscript/player/swwm_player_tick.zsc new file mode 100644 index 000000000..f14788085 --- /dev/null +++ b/zscript/player/swwm_player_tick.zsc @@ -0,0 +1,908 @@ +// Tick and friends +extend Class Demolitionist +{ + void SenseItems() + { + if ( player.cmd.buttons&BT_USER3 ) + { + let bt = BlockThingsIterator.Create(self,800); + foreach ( i,p,f:bt ) + { + if ( !i ) continue; + if ( !(i is 'Inventory') && !(i is 'Chancebox') && !(i is 'SWWMRespawnTimer') ) continue; + if ( (i is 'Inventory') && (i.bINVISIBLE || !i.bSPECIAL || Inventory(i).Owner) ) continue; + if ( (i is 'Chancebox') && (i.CurState != i.SpawnState) ) continue; + if ( !SWWMUtility.SphereIntersect(i,pos,800) ) continue; + if ( !level.allmap && !i.CheckSight(self,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + SWWMItemSense.Spawn(self,i); + } + bt.Destroy(); + } + SWWMItemsense itm = itemsense; + SWWMItemsense prev = null, next; + while ( itm ) + { + next = itm.next; + if ( itm.Tick() ) + { + if ( prev ) prev.next = next; + else itemsense = next; + itm.Destroy(); + } + else prev = itm; + itm = next; + } + } + + void CheckItemMagnet() + { + if ( magtime > 40 ) + { + if ( !(player.cmd.buttons&BT_USE) || swwm_usetopickup ) + { + magtime = 0; + SWWMMagItem mi = magitem; + while ( mi ) + { + let next = mi.next; + mi.Destroy(); + mi = next; + } + magitem_cnt = 0; + return; + } + if ( (magitem_cnt < 8) && !swwm_usetopickup ) + { + let bt = BlockThingsIterator.Create(self,500); + foreach ( t,p,f:bt ) + { + if ( !t ) continue; + if ( !(t is 'Inventory') || !t.bSPECIAL || !t.bDROPPED || t.bINVISIBLE || Inventory(t).Owner || !SWWMUtility.SphereIntersect(t,pos,500) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + continue; + let i = Inventory(t); + Class cls = i.GetClass(); + if ( i is 'Ammo' ) cls = Ammo(i).GetParentAmmo(); + else if ( i is 'MaGammo' ) cls = MagAmmo(i).GetParentMagAmmo(); + let oi = FindInventory(cls); + if ( !i.bALWAYSPICKUP && oi && (oi.Amount >= oi.MaxAmount) ) continue; + if ( (i is 'SWWMWeapon') && SWWMWeapon(i).HasSwapWeapon(self) && swwm_swapweapons ) continue; + if ( (i is 'SWWMDualWeaponGiver') && SWWMDualWeaponGiver(i).HasSwapWeapon(self) && swwm_swapweapons ) continue; + bool addme = true; + for ( SWWMMagItem mi=magitem; mi; mi=mi.next ) + { + if ( mi.item != i ) continue; + addme = false; + break; + } + if ( !addme ) continue; + let nmi = new('SWWMMagItem'); + nmi.target = self; + nmi.item = i; + nmi.next = magitem; + i.A_StartSound("misc/magitem",CHAN_AMBEXTRA,CHANF_LOOP,.2,1.,.5); + i.bNOGRAVITY = true; + i.bDROPOFF = true; + i.bSLIDESONWALLS = true; + i.bNOBLOCKMONST = true; + magitem = nmi; + magitem_cnt++; + } + bt.Destroy(); + } + SWWMMagItem itm = magitem; + SWWMMagItem prev = null, next; + while ( itm ) + { + next = itm.next; + if ( itm.Tick() ) + { + if ( prev ) prev.next = next; + else magitem = next; + itm.Destroy(); + magitem_cnt--; + } + else prev = itm; + itm = next; + } + return; + } + if ( player.cmd.buttons&BT_USE ) magtime++; + } + + void CheckUnderwaterAmb( bool restore = false ) + { + Vector3 headpos = Vec3Offset(0,0,player.viewheight); + Vector3 centerpos = Vec3Offset(0,0,height/2); + Sector headregion = null; + if ( CurSector.moreflags&Sector.SECMF_UNDERWATER ) // check underwater sector + headregion = CurSector; + else if ( CurSector.heightsec && (Cursector.heightsec.moreflags&Sector.SECMF_UNDERWATERMASK) ) // check height transfer + { + let hsec = CurSector.heightsec; + double fh = hsec.floorplane.ZAtPoint(pos.xy); + if ( pos.z < fh ) + { + if ( headpos.z <= fh ) + headregion = hsec; + } + else if ( !(hsec.moreflags&Sector.SECMF_FAKEFLOORONLY) && (headpos.z > hsec.ceilingplane.ZAtPoint(pos.xy)) ) + headregion = hsec; + } + else // check 3D floors + { + for ( int i=0; i centerpos.z) ) continue; + if ( headpos.z <= ff_top ) + headregion = ff.model; + break; + } + } + int curunder = UNDER_NONE; + if ( headregion ) + { + switch ( headregion.damagetype ) + { + case 'Fire': + case 'Lava': + curunder = UNDER_LAVA; + break; + case 'Slime': + case 'Poison': + case 'PoisonCloud': + curunder = UNDER_SLIME; + break; + case 'Ice': + case 'Drowning': + default: + curunder = UNDER_WATER; + break; + } + undercol = headregion.ColorMap.LightColor; + } + if ( (curunder != lastunder) || restore ) + { + static const string undersnd[] = {"","misc/underwater","misc/underslime","misc/underlava"}; + static const string entersnd[] = {"","misc/waterenter","misc/slimeenter","misc/lavaenter"}; + static const string exitsnd[] = {"","misc/waterexit","misc/slimeexit","misc/lavaexit"}; + A_StopSound(CHAN_AMBEXTRA); + if ( curunder > UNDER_NONE ) + { + A_StartSound(undersnd[curunder],CHAN_AMBEXTRA,CHANF_LOOP|CHANF_UI); + if ( !restore && (players[consoleplayer].Camera == self) ) + A_StartSound(entersnd[curunder],CHAN_FOOTSTEP,CHANF_OVERLAP|CHANF_UI); + } + if ( !restore && (lastunder > UNDER_NONE) && (players[consoleplayer].Camera == self) ) + A_StartSound(exitsnd[lastunder],CHAN_FOOTSTEP,CHANF_OVERLAP|CHANF_UI); + } + if ( curunder > UNDER_NONE ) + A_SoundVolume(CHAN_AMBEXTRA,(players[consoleplayer].Camera==self)?1.:0.); + lastunder = curunder; + } + + override void Tick() + { + if ( player && (player.cheats&CF_PREDICTING) ) + { + // sod off, m8 + Super.Tick(); + return; + } + Vector3 oldpos = pos; + // can't be poisoned + PoisonDurationReceived = 0; + PoisonPeriodReceived = 0; + PoisonDamageReceived = 0; + double PrevHeight = Height; + Super.Tick(); + double HeightDiff = Height-PrevHeight; + // shift vertically around center of gravity if crouching while airborne (crouch jumping) + if ( player && (player.mo == self) && CanCrouch() && (player.playerstate != PST_DEAD) && !player.onground && (abs(HeightDiff) > 0) ) + { + double oldz = pos.z; + SetZ(pos.z-HeightDiff*.5); + // note: even with this check, clipping through sloped 3D floors may still happen + // (honestly, sloped 3d floors are a source of many troubles) + if ( !TryMove(pos.xy,false) ) SetZ(oldz); + } + if ( (gamestate != GS_LEVEL) || !player || (player.mo != self) || (freezetics > 0) ) return; + isAnalogMoving = CVar.GetCVar('swwm_analogmove',player).GetBool(); + UpdateFace(); + UpdateTags(); + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + if ( hnd ) + { + if ( hasteleported ) hnd.SendInterfaceEvent(PlayerNumber(),"swwmsendplayertele"); + else hnd.SendInterfaceEvent(PlayerNumber(),"swwmsendplayerstep"); + } + if ( hasteleported ) + { + // we just got teleported, don't count the travel distance + oldpos = pos; + hasteleported = false; + } + if ( !selflight ) + { + selflight = new('DemolitionistSelfLight'); + selflight.ChangeStatNum(STAT_USER); + selflight.target = self; + selflight.Tick(); + } + if ( !myshadow ) myshadow = SWWMShadow.Track(self); + // double-check that we have these + if ( !FindInventory('AlmasteelPlating') ) + { + let ap = Inventory(Spawn('AlmasteelPlating')); + if ( !ap.CallTryPickup(self) ) ap.Destroy(); + } + if ( !FindInventory('SayaCollar') ) + { + let sc = Inventory(Spawn('SayaCollar')); + if ( !sc.CallTryPickup(self) ) sc.Destroy(); + } + // this is why we need mod cvar callbacks + if ( swwm_singlefirst != oldsinglefirst ) + WeaponSlots.SetupWeaponSlots(self); + oldsinglefirst = swwm_singlefirst; + // overheal fading + if ( !isFrozen() && !(player.cheats&CF_TOTALLYFROZEN) ) + { + if ( (health <= 200) || (health > oldhealth) ) + { + healtimer = 0; + healcooldown = 80; + } + else if ( health > 200 ) + { + if ( healcooldown > 0 ) healcooldown--; + else + { + if ( health > 1000 ) + { + let spr = DivineSpriteEffect(FindInventory('DivineSpriteEffect')); + if ( !spr || spr.bHealDone ) + A_SetHealth(max(1000,health-10)); + if ( health <= 1000 ) healcooldown = 40; + } + else if ( health > 500 ) + { + if ( !FindInventory('GrilledCheeseSafeguard') && !(healtimer%3) ) + A_SetHealth(health-1); + if ( health <= 500 ) healcooldown = 20; + } + else if ( health > 200 ) + { + if ( !FindInventory('RefresherRegen') && !(healtimer%12) ) + A_SetHealth(health-1); + } + healtimer++; + } + } + } + oldhealth = health; + oldlagvel = lagvel; + oldlagready = lagready; + if ( player.weaponstate&WF_WEAPONBOBBING ) lagready = lagready*.9+.1; + else lagready = lagready*.4; + if ( vel dot vel > lagvel dot lagvel ) lagvel = lagvel*.8+vel*.2; + else lagvel = lagvel*.4+vel*.6; + double traveldist = level.Vec3Diff(oldpos,pos).length(); + if ( (traveldist == double.infinity) || (traveldist != traveldist) ) + traveldist = 0.; // prevent glitches from breaking stats + if ( !player.onground || bNoGravity ) + { + if ( waterlevel > 1 ) + { + cairtime = 0; + mystats.swimdist += traveldist; + } + else + { + cairtime++; + if ( cairtime > mystats.airtime ) mystats.airtime = cairtime; + mystats.airdist += traveldist; + } + if ( (vel.z < -fallingscreamminspeed) && (vel.z > -fallingscreammaxspeed) && (player == players[consoleplayer]) ) + SWWMHandler.AddOneliner("falling",2,30); + } + else + { + SWWMHandler.CancelOneliner("falling"); + airscreamtime = 0; + cairtime = 0; + // only increase counter for achievement by kilometers alone, as an integer + // (previously this used a double, but it broke with large values) + let oldgroundkm = int(mystats.grounddist/32000.); + mystats.grounddist += traveldist; + let newgroundkm = int(mystats.grounddist/32000.); + if ( newgroundkm > oldgroundkm ) + SWWMUtility.AchievementProgressInc("travel",newgroundkm-oldgroundkm,player); + } + // spawn bubbles while underwater + if ( (waterlevel > 1) && !Random[ExploS](0,5) ) + { + int numpt = Random[ExploS](-2,2); + for ( int i=0; i 0) || GetFloorTerrain().isliquid ) + { + if ( footblood[0] > 0. ) footblood[0] = max(0.,footblood[0]*.95-.05); + if ( footblood[1] > 0. ) footblood[1] = max(0.,footblood[1]*.95-.05); + } + CheckUnderwaterAmb(); + SenseItems(); + CheckItemMagnet(); + double spd = vel.length(); + if ( spd > mystats.topspeed ) mystats.topspeed = spd; + if ( spd > ((3600*GameTicRate)/32000.) ) + SWWMUtility.AchievementProgress("sanic",int((spd*3600*GameTicRate)/32000.),player); + bool isdashing = InStateSequence(CurState,FindState('Dash')); + if ( player.onground && !bNoGravity && !lastground ) + { + // bump down weapon + bumpvelz -= lastvelz; + BumpView(min(-lastvelz/10.,20)); + if ( lastvelz < -25 ) + { + let s = Spawn('DemolitionistShockwave',pos); + s.target = self; + s.special1 = int(-lastvelz); + A_AlertMonsters(swwm_uncapalert?0:2500); + BumpView(15.); + lastbump *= 1.1; + if ( FindInventory('RagekitPower') ) + { + // stop for just a split second UNLESS bunnyhopping + if ( !IsRunning() || (level.maptime >= (lastairtic+10)) ) + ReactionTime = 6; + } + else + { + A_Stop(); + ReactionTime = 17; + } + if ( player == players[consoleplayer] ) + { + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP); + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.7); + A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.4); + } + // also cancel dashing if we stomped + if ( isdashing ) dashboost = 0.; + mystats.stompcount++; + } + if ( lastvelz < landingspeed ) + A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP); + if ( (lastvelz < -gruntspeed) && (swwm_mutevoice < 4) && (health > 0) ) + { + String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); + int loudlv = swwm_voiceamp; + int maxgrunt = StringTable.Localize("$SWWM_"..myvoice.."_NGRUNT").ToInt(); + int idx = (maxgrunt<=1)?1:Random[DemoLines](1,maxgrunt); + A_StartSound(String.Format("voice/%s/grunt%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/grunt%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/grunt%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/grunt%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } + if ( lastvelz < -1 ) + { + PlayFootstep(-1,1,clamp(-lastvelz*0.05,0.0,1.0),true); + PlayFootstep(1,1,clamp(-lastvelz*0.05,0.0,1.0),true); + } + // bounce off slopes + if ( pos.z <= floorz ) + { + F3DFloor ff; + for ( int i=0; i= -25) && (!oldencroached.bISMONSTER || (oldencroached.Health > 0)) ) vel += oldencroached.vel+level.Vec3Diff(oldencroachedpos,oldencroached.pos); + oldencroached = null; + encroachtics = 0; + } + if ( encroached && encroached.bSHOOTABLE && !encroached.bNODAMAGE && (lastvelz <= 0) && !(encroached is 'Demolitionist') ) + { + if ( (lastvelz < -5) || !(level.maptime%5) ) + { + int realdmg = encroached.DamageMobj(self,self,int((2+max(0,-lastvelz*3))*max(1.,mass/encroached.mass)),'Jump',DMG_THRUSTLESS); + if ( FindInventory('RagekitPower') ) + { + let ps = Spawn('BigPunchSplash',pos); + ps.damagetype = 'Jump'; + ps.target = self; + ps.special1 = realdmg; + } + if ( (realdmg > 0) && encroached && !encroached.bNOBLOOD && !encroached.bINVULNERABLE ) + { + encroached.TraceBleed(realdmg,self); + encroached.SpawnBlood(pos,angle,realdmg); + } + } + } + double bstr = CVar.GetCVar('swwm_bumpstrength',player).GetFloat(); + if ( abs(bumpvelz) > double.epsilon ) + { + lagvel.z += bumpvelz*bstr*.5; + bumpvelz *= .8; + } + Vector3 temp = (ViewAngle,ViewPitch,ViewRoll); + if ( abs(bumpangle) > double.epsilon ) + { + temp.x += bumpangle*bstr*.5; + bumpangle *= .8; + } + if ( abs(bumppitch) > double.epsilon ) + { + temp.y += bumppitch*bstr*.5; + bumppitch *= .8; + } + if ( abs(bumproll) > double.epsilon ) + { + temp.z += bumproll*bstr*.5; + bumproll *= .8; + } + // stabilize view angles + if ( temp dot temp < double.epsilon ) temp = (0,0,0); + else temp *= .8; + // we have to bypass the A_SetView* functions due to a bug that + // will likely never get addressed + if ( ViewAngle != temp.x ) + { + ViewAngle = temp.x; + player.cheats |= CF_INTERPVIEWANGLES; + } + if ( ViewPitch != temp.y ) + { + ViewPitch = temp.y; + player.cheats |= CF_INTERPVIEWANGLES; + } + if ( ViewRoll != temp.z ) + { + ViewRoll = temp.z; + player.cheats |= CF_INTERPVIEWANGLES; + } + if ( player.onground && !lastground ) landvelz = lastvelz; + else if ( !player.onground && lastground ) landvelz = 0; + else if ( player.onground && lastground ) landvelz *= .9; + lastground = player.onground; + lastvelz = prevvelz; + prevvelz = vel.z; + bool isboosting = InStateSequence(CurState,FindState('Boost')); + bNOFRICTION = ((bFly&&!bFlyCheat&&!(player.cheats&CF_NOCLIP2))||isdashing); + if ( fuelcooldown == 1 ) A_StartSound("demolitionist/fuelregen",CHAN_FUELREGEN,CHANF_LOOP,.35,4.,.5); + else if ( fuelcooldown > 1 ) A_StopSound(CHAN_FUELREGEN); + fuelcooldown = max(0,fuelcooldown-1); + if ( dashlockst > 0 ) + { + dashlockst--; + if ( dashlockst == 0 ) A_StartSound("demolitionist/dashregen",CHAN_BODY,CHANF_OVERLAP,.5,4.); + } + else dashcooldown = max(0,dashcooldown-1); + boostcooldown = max(0,boostcooldown-1); + if ( (fuelcooldown <= 0) && (dashfuel < default.dashfuel) ) + { + A_SoundPitch(CHAN_FUELREGEN,.5+1.5*((dashfuel/default.dashfuel)**2.)); + double oldfuel = dashfuel; + dashfuel = min(default.dashfuel,dashfuel+clamp(dashfuel*.025,.1,3.)); + // stops + if ( (oldfuel < (default.dashfuel/24)) && (dashfuel >= default.dashfuel/24) ) + { + dashfuel = default.dashfuel/24; + fuelcooldown = 20; + A_StartSound("demolitionist/fuelrgstp",CHAN_BODY,CHANF_OVERLAP,.6,4.,.6); + } + else if ( (oldfuel < (default.dashfuel/12)) && (dashfuel >= default.dashfuel/12) ) + { + dashfuel = default.dashfuel/12; + fuelcooldown = 10; + A_StartSound("demolitionist/fuelrgstp",CHAN_BODY,CHANF_OVERLAP,.6,4.,.7); + } + if ( (oldfuel < dashfuel) && (dashfuel == default.dashfuel) ) + { + A_StopSound(CHAN_FUELREGEN); + A_StartSound("demolitionist/fuelrgend",CHAN_BODY,CHANF_OVERLAP,.6,4.); + } + } + else if ( dashfuel >= default.dashfuel ) A_StopSound(CHAN_FUELREGEN); + if ( ((dashboost <= 0) || !(isdashing || (isboosting && player.cmd.buttons&BT_JUMP))) && IsActorPlayingSound(CHAN_JETPACK,"demolitionist/jet") ) + A_StartSound("demolitionist/jetstop",CHAN_JETPACK); + PainChance = isdashing?0:255; + if ( isdashing || (vel.length() > 30) ) + { + bool oldpush = bCANPUSHWALLS; + bool olduse = bCANUSEWALLS; + bool oldmcross = bACTIVATEMCROSS; + bool oldtele = bNOTELEPORT; + // needed to prevent the many TryMove calls from activating unwanted lines + bCANPUSHWALLS = false; + bCANUSEWALLS = false; + bACTIVATEMCROSS = false; + bNOTELEPORT = true; + Actor a; + if ( isdashing && (dashboost > 0.) ) + { + for ( int i=-1; i<=1; i+=2 ) for ( int j=1; j<4; j++ ) + { + a = Spawn('DashTrail',Vec3Angle(15,angle+i*140,35)); + a.master = self; + a.vel = (RotateVector((j,0),angle+i*160),0)-(0,0,1)*j; + a.vel -= vel*.5; + } + } + Vector3 dir = vel; + double spd = dir.length(); + dir = dir/spd; + Vector3 viewdir = SWWMUtility.Vec3FromAngles(angle,pitch); + // look for things we could potentially bump into + bool bumped = false; + let raging = RagekitPower(FindInventory('RagekitPower')); + double maxmass = max(mass*spd/40.,200); + if ( raging ) maxmass *= 2; + let bt = BlockThingsIterator.Create(self,spd+radius+1024); + foreach( a,p,f:bt ) + { + if ( spd <= 0 ) break; // if something stopped us, no more iteration + if ( !a || (a == self) || (!a.bSOLID && !a.bSHOOTABLE) || a.bTHRUACTORS || a.bCORPSE || !CanCollideWith(a,false) || !a.CanCollideWith(self,true) ) continue; + if ( !SWWMUtility.ExtrudeIntersect(self,a,dir*(spd+radius),8) ) continue; + if ( (a.pos.z <= a.floorz) && (a.height <= MaxStepHeight) ) continue; + Vector3 diff = level.Vec3Diff(pos,a.pos); + Vector3 dirto = diff.unit(); + if ( dir dot dirto < .1 ) continue; + if ( (diff.z <= -a.height) && (lastvelz < -25) ) continue; + if ( (diff.z <= -a.height) && !isdashing ) continue; + // don't bump bridges if hit at a specific angle + if ( a.bACTLIKEBRIDGE ) + { + Vector3 bnorm = -dirto; + if ( diff.z <= -a.height ) continue; // no bump from above + else if ( diff.z >= Height ) bnorm = (0,0,-1); + else if ( diff.x > a.Radius+Radius ) bnorm = (-1,0,0); + else if ( diff.x < -(a.Radius+Radius) ) bnorm = (1,0,0); + else if ( diff.y > a.Radius+Radius ) bnorm = (0,-1,0); + else if ( diff.y < -(a.Radius+Radius) ) bnorm = (0,1,0); + if ( dir dot bnorm > -.6 ) continue; + } + if ( !CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + // large monsters will stop the player (unless hit from above if we're going at ground pound speed) + A_QuakeEx(4.,4.,4.,10,0,128,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); + A_AlertMonsters(swwm_uncapalert?0:800); + A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); + a.A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); + bumptic = gametic+int(20+spd/4.); + lastbump *= .8; + if ( (a.bDONTTHRUST || a.bACTLIKEBRIDGE || (a.Mass >= maxmass) || (!a.bSHOOTABLE && !a.bPUSHABLE && (a.Health > 0))) && a.bSOLID && (dir dot dirto > .65) ) + { + if ( bumped ) continue; + bumped = true; + SWWMUtility.AchievementProgressInc("bonk",1,player); + A_QuakeEx(8.,8.,8.,16,0,128,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); + vel *= .2; + vel -= dir*(10+(spd*30/mass)); + vel -= dirto*(10+(spd*50/mass)); + vel.z += 5+(spd*(10/mass)); + dashboost *= 0.; + } + Vector3 pushdir = dirto*.1+dir*.9; + if ( !a.bDONTTHRUST && (a.Mass < maxmass) && (a.bSHOOTABLE || a.bPUSHABLE) ) + { + a.vel += pushdir*(25+(spd*20/max(50,a.mass))); + if ( (a.pos.z <= a.floorz) || !a.TestMobjZ() ) + a.vel.z += 5+(spd*(5/max(50,a.mass))); + } + int flg = DMG_THRUSTLESS; + if ( raging ) flg |= DMG_FOILINVUL; + if ( !a.player && !a.bDONTBLAST ) a.bBLASTED = true; + int dmg = int(10+spd*3.); + bool buttslam = false; + // BUTTSLAM + if ( dir dot viewdir < -.3 ) + { + dmg *= 3; + buttslam = true; + } + if ( a.bSHOOTABLE ) + { + dmg = a.DamageMobj(self,self,dmg,buttslam?'Buttslam':'Dash',flg); + if ( (dmg > 0) && a && !a.bNOBLOOD && (raging || !a.bINVULNERABLE) ) + { + a.TraceBleed(dmg,self); + a.SpawnBlood(level.Vec3Offset(pos,diff/2),atan2(dir.y,dir.x)+180,dmg); + } + if ( buttslam && (!a || (a.Health <= 0)) ) + { + A_StartSound("demolitionist/buttslam",CHAN_DAMAGE,CHANF_OVERLAP,1.,.4); + if ( swwm_buttsfx ) A_StartSound("demolitionist/buttslamx",CHAN_DAMAGE,CHAN_OVERLAP,1.,.2); + Spawn('SWWMItemFog',level.Vec3Offset(pos,diff/2)); + A_QuakeEx(8.,8.,8.,8,0,3000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollIntensity:1.); + mystats.buttslams++; + lastbump *= .8; + } + } + if ( raging ) + { + let ps = Spawn('BigPunchSplash',level.Vec3Offset(pos,diff/2)); + ps.damagetype = buttslam?'Buttslam':'Dash'; + ps.target = self; + ps.special1 = dmg; + raging.DoHitFX(); + } + } + bt.Destroy(); + // check for ceiling collision + if ( (spd > 0) && !bumped && ((pos.z+Height+dir.z*spd) >= ceilingz) ) + { + F3DFloor ff; + for ( int i=0; i 0) && !bumped && !TryMove(Vec2Offset(steppy.x,steppy.y),1,false,tm) && SWWMUtility.BlockingLineIsBlocking(self,Line.ML_BLOCKEVERYTHING|Line.ML_BLOCKING|Line.ML_BLOCK_PLAYERS) ) + { + Vector3 wallnorm = (-BlockingLine.delta.y,BlockingLine.delta.x,0).unit(); + int lside = 1; + if ( !BlockingLine.sidedef[1] || !Level.PointOnLineSide(pos.xy,BlockingLine) ) + { + lside = 0; + wallnorm *= -1; + } + // don't bump if we're only grazing it + if ( dir dot wallnorm > -.6 ) + continue; + bool buttslam = false; + // BUTTSLAM + if ( dir dot viewdir < -.3 ) + { + buttslam = true; + // leave buttmark + Vector3 vdir = (2,0,Height*.54); + A_SprayDecal("ButtMark",172,SWWMUtility.RotateVector3(vdir,angle+90),dir); + A_SprayDecal("ButtMark",172,SWWMUtility.RotateVector3(vdir,angle-90),dir); + } + if ( raging || swwm_omnibust ) + { + // see if we can bust it + let tempme = new('LineTracer'); // gross hack to pass needed data + int dmg = int(10+spd*3.); + if ( raging ) dmg *= 8; + if ( buttslam ) dmg *= 3; + tempme.Results.HitLine = BlockingLine; + tempme.Results.HitType = TRACE_HitWall; + tempme.Results.Side = lside; + tempme.Results.Tier = TIER_MIDDLE; + if ( BlockingLine.sidedef[1] ) + { + double ceilz = BlockingLine.sidedef[!lside].sector.ceilingplane.ZAtPoint(pos.xy); + double florz = BlockingLine.sidedef[!lside].sector.floorplane.ZAtPoint(pos.xy); + if ( pos.z+Height >= ceilz ) + tempme.Results.Tier = TIER_UPPER; + else if ( pos.z <= florz ) + tempme.Results.Tier = TIER_LOWER; + } + if ( BusterWall.Bust(tempme.Results,dmg,self,dir,pos.z+Height) ) + { + // busted through + if ( raging ) + { + let ps = Spawn('BigPunchSplash',Vec3Offset(dir.x*radius,dir.y*radius,(tempme.Results.Tier==TIER_UPPER)?Height:(tempme.Results.Tier==TIER_LOWER)?0:(Height/2))); + ps.damagetype = buttslam?'Buttslam':'Dash'; + ps.target = self; + ps.special1 = int(10+spd*3.); + raging.DoHitFX(); + } + A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); + if ( buttslam ) + { + A_StartSound("demolitionist/buttslam",CHAN_DAMAGE,CHANF_OVERLAP,1.,.4); + if ( swwm_buttsfx ) A_StartSound("demolitionist/buttslamx",CHAN_DAMAGE,CHAN_OVERLAP,1.,.2); + Spawn('SWWMItemFog',Vec3Offset(dir.x*radius,dir.y*radius,(tempme.Results.Tier==TIER_UPPER)?Height:(tempme.Results.Tier==TIER_LOWER)?0:(Height/2))); + A_QuakeEx(8.,8.,8.,8,0,3000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollIntensity:1.); + mystats.buttslams++; + lastbump *= .8; + } + if ( raging ) continue; // don't stop + } + } + // wallbump + bumped = true; + SWWMUtility.AchievementProgressInc("bonk",1,player); + A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); + bumptic = gametic+int(25+spd/4.); + lastbump *= .8; + A_QuakeEx(8.,8.,8.,16,0,128,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); + A_AlertMonsters(swwm_uncapalert?0:800); + vel *= .2; + vel -= dir*(10+(spd*30/mass)); + vel += wallnorm*(10+(spd*50/mass)); + vel.z += 5+(spd*(10/mass)); + dashboost *= 0.; + if ( raging ) + { + let ps = Spawn('BigPunchSplash',Vec3Offset(dir.x*radius,dir.y*radius,Height/2.)); + ps.damagetype = (dir dot viewdir < -3.)?'Buttslam':'Dash'; + ps.target = self; + ps.special1 = int(10+spd*3.); + raging.DoHitFX(); + } + // activate it + int locknum = SWWMUtility.GetLineLock(BlockingLine); + if ( !locknum || CheckKeys(locknum,false,true) ) + { + hitactivate = true; + BlockingLine.Activate(self,lside,SPAC_Use); + hitactivate = false; + } + BlockingLine.Activate(self,lside,SPAC_Impact); + break; + } + } + // check for slope boosting (only if dashing) + if ( (pos.z <= floorz) && (spd > 0) && isdashing ) + { + F3DFloor ff; + for ( int i=0; i 0.) ) + { + Actor a; + for ( int i=-1; i<=1; i+=2 ) for ( int j=1; j<4; j++ ) + { + a = Spawn('DashTrail',Vec3Angle(10,angle+i*140,40)); + a.master = self; + a.vel = .5*(RotateVector((j,0),angle+i*160),0)-(0,0,1)*j; + a.vel -= vel*.5; + } + } + } +} diff --git a/zscript/swwm_Gutamatics/GlobalMaths.zsc b/zscript/swwm_Gutamatics/GlobalMaths.zsc deleted file mode 100644 index ba4e309bd..000000000 --- a/zscript/swwm_Gutamatics/GlobalMaths.zsc +++ /dev/null @@ -1,173 +0,0 @@ -class swwm_GM_GlobalMaths { - /// Returns the sign of s. - static int sign(double s) { - if (s > 0) return 1; - if (s < 0) return -1; - return 0; - } - - /// Copies the sign from signSource to source. - static int copySignInt(int source, int signSource) { - return abs(source) * sign(signSource); - } - - /// Copies the sign from signSource to source. - static double copySignDouble(double source, double signSource) { - return abs(source) * sign(signSource); - } - - /// Remaps a value in a range to another range. - static double remapRange(double value, double range1L, double range1H, double range2L, double range2H) { - return range2L + (value - range1L) * (range2H - range1H) / (range1H - range1L); - } - - /// Remaps a value in a range to another range. - static int remapRangeInt(int value, int range1L, int range1H, int range2L, int range2H) { - return int(range2L + (value - range1L) * (range2H - range1H) / double(range1H - range1L)); - } - - /// Returns if two values are close enough to be considered equal. - static bool closeEnough(double a, double b, double epsilon = double.epsilon) { - if (a == b) return true; - return abs(a - b) <= epsilon; - } - - // Creates a smoothed transition between edge0 and edge1. - static double smoothStep(double x, double edge0 = 0, double edge1 = 1) { - x = clamp((x - edge0) / (edge1 - edge0), 0, 1); - return x * x * (3 - 2 * x); - } - - // Creates a smoother transition between edge0 and edge1. - static double smootherStep(double x, double edge0 = 0, double edge1 = 1) { - x = clamp((x - edge0) / (edge1 - edge0), 0, 1); - return x * x * x * (x * (x * 6 - 15) + 10); - } - - /// Converts from horizontal FOV to vertical FOV, according to how GZDoom handles it. - static double fovHToY(double fovH) { - // this is how gzdoom does it internally, so i'm using it here - double aspect = Screen.getAspectRatio(); - double fovratio = (aspect >= 1.3) ? 1.333333 : aspect; - return 2 * atan(tan(clamp(fovH, 5, 170) / 2.0) / fovratio); - } - - /// Linearly interpolates between two doubles, clamping the parameters. - static double lerpDouble(double from, double to, double time) { - time = clamp(time, 0, 1); - return lerpUnclampedDouble(from, to, time); - } - - /// Linearly interpolates between two doubles. - static double lerpUnclampedDouble(double from, double to, double time) { - double ret; - double reverseTime = 1 - time; - ret = reverseTime * from + time * to; - return ret; - } - - // Converts from Normalised Device Coordinates to Viewport coordinates. - // This is `ui` scope to safely access `screenblocks`. - static ui Vector2 ndcToViewport(Vector3 ndcCoords, bool useScreenblocks = true) { - if (useScreenblocks) { - int viewwindowx, viewwindowy, viewwidth, viewheight; - [viewwindowx, viewwindowy, viewwidth, viewheight] = Screen.getViewWindow(); - int screenHeight = Screen.getHeight(); - int height = screenHeight; - if (screenblocks < 10) { - height = (screenblocks * screenHeight / 10) & ~7; - } - int bottom = screenHeight - (height + viewwindowy - ((height - viewheight) / 2)); - return (viewwindowx, screenHeight - bottom - height) + (((ndcCoords.x + 1) * viewwidth) / 2, ((-ndcCoords.y + 1) * height) / 2); - } - else { - return (((ndcCoords.x + 1) * Screen.getWidth()) / 2, ((-ndcCoords.y + 1) * Screen.getHeight()) / 2); - } - } - - enum OutCode { - OUT_Inside = 0, - OUT_Left = 1 << 0, - OUT_Right = 1 << 1, - OUT_Bottom = 1 << 2, - OUT_Top = 1 << 3 - } - - /// Computes an outcode for a point in a rectangle. - static OutCode computeOutcode(Vector2 point, Vector2 min, Vector2 max) { - OutCode code = OUT_Inside; - - if (point.x < min.x) { - code |= OUT_Left; - } - else if (point.x > max.x) { - code |= OUT_Right; - } - if (point.y < min.y) { - code |= OUT_Top; - } - else if (point.y > max.y) { - code |= OUT_Bottom; - } - - return code; - } - - /// Clips a line to a rectangle. - static bool, Vector2, Vector2 cohenSutherlandClip(Vector2 point0, Vector2 point1, Vector2 min, Vector2 max) { - OutCode outcode0 = computeOutCode(point0, min, max); - OutCode outcode1 = computeOutCode(point1, min, max); - - while (true) { - // trivial accept - points are both on screen - if ((outcode0 | outcode1) == 0) { - return true, point0, point1; - } - // trivial reject - points are in the same region offscreen - else if ((outcode0 & outcode1) != 0) { - return false, point0, point1; - } - else { - Vector2 new; - OutCode outcodeOut = (outcode0 != 0) ? outcode0 : outcode1; - - if ((outcodeOut & OUT_Bottom) != 0) { - new.x = point0.x + (point1.x - point0.x) * (max.y - point0.y) / (point1.y - point0.y); - new.y = max.y; - } - else if ((outcodeOut & OUT_Top) != 0) { - new.x = point0.x + (point1.x - point0.x) * (min.y - point0.y) / (point1.y - point0.y); - new.y = min.y; - } - else if ((outcodeOut & OUT_Right) != 0) { - new.y = point0.y + (point1.y - point0.y) * (max.x - point0.x) / (point1.x - point0.x); - new.x = max.x; - } - else if ((outcodeOut & OUT_Left) != 0) { - new.y = point0.y + (point1.y - point0.y) * (min.x - point0.x) / (point1.x - point0.x); - new.x = min.x; - } - - if (outcodeOut == outCode0) { - point0.x = new.x; - point0.y = new.y; - outCode0 = computeOutCode(point0, min, max); - } - else { - point1.x = new.x; - point1.y = new.y; - outCode1 = computeOutCode(point1, min, max); - } - } - } - return false, (0, 0), (0, 0); - } - - // Normalizes an angle to (-180, 180]. Like Actor.normalize180, but callable in data scope. - static double normalize180(double ang) { - ang = ang % 360; - ang = (ang + 360) % 360; - if (ang > 180) ang -= 360; - return ang; - } -} diff --git a/zscript/swwm_Gutamatics/Include.zsc b/zscript/swwm_Gutamatics/Include.zsc deleted file mode 100644 index 72515b120..000000000 --- a/zscript/swwm_Gutamatics/Include.zsc +++ /dev/null @@ -1,5 +0,0 @@ -#include "zscript/swwm_Gutamatics/GlobalMaths.zsc" -#include "zscript/swwm_Gutamatics/Matrix.zsc" -#include "zscript/swwm_Gutamatics/Matrix4.zsc" -#include "zscript/swwm_Gutamatics/Quaternion.zsc" -#include "zscript/swwm_Gutamatics/VectorUtil.zsc" diff --git a/zscript/swwm_Gutamatics/LICENSE.md b/zscript/swwm_Gutamatics/LICENSE.md deleted file mode 100644 index cab7d22ba..000000000 --- a/zscript/swwm_Gutamatics/LICENSE.md +++ /dev/null @@ -1,7 +0,0 @@ -Copyright 2020 Jessica Russell - -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. diff --git a/zscript/swwm_Gutamatics/Matrix.zsc b/zscript/swwm_Gutamatics/Matrix.zsc deleted file mode 100644 index 2a6f94d53..000000000 --- a/zscript/swwm_Gutamatics/Matrix.zsc +++ /dev/null @@ -1,335 +0,0 @@ -enum swwm_GM_VectorType { - swwm_GM_Vector_Position, - swwm_GM_Vector_Direction -} - -class swwm_GM_Matrix { - private Array values; - private int columns; - private int rows; - - /// Initialises a new Matrix. - swwm_GM_Matrix init(int columns, int rows) { - if (columns <= 0 || rows <= 0) { - throwAbortException("Error: <%p>.init(%d, %d) - Matrix needs to be at least 1 * 1", self, columns, rows); - } - - self.rows = rows; - self.columns = columns; - values.resize(columns * rows); - for (int i = 0; i < values.size(); i++) { - values[i] = 0; - } - - return self; - } - - /// Initialises a new Matrix in a static context. - static swwm_GM_Matrix create(int columns, int rows) { - return new("swwm_GM_Matrix").init(columns, rows); - } - - /// Returns an identity matrix. - static swwm_GM_Matrix identity(int dimension) { - swwm_GM_Matrix ret = swwm_GM_Matrix.create(dimension, dimension); - for (int i = 0; i < dimension; i++) { - ret.set(i, i, 1); - } - return ret; - } - - /// Returns a rotation matrix from euler angles. - static swwm_GM_Matrix fromEulerAngles(double yaw, double pitch, double roll) { - swwm_GM_Matrix rYaw = swwm_GM_Matrix.identity(4); - double sYaw = sin(yaw); - double cYaw = cos(yaw); - rYaw.set(0, 0, cYaw); - rYaw.set(0, 1, -sYaw); - rYaw.set(1, 0, sYaw); - rYaw.set(1, 1, cYaw); - - swwm_GM_Matrix rPitch = swwm_GM_Matrix.identity(4); - double sPitch = sin(pitch); - double cPitch = cos(pitch); - rPitch.set(0, 0, cPitch); - rPitch.set(2, 0, -sPitch); - rPitch.set(0, 2, sPitch); - rPitch.set(2, 2, cPitch); - - swwm_GM_Matrix rRoll = swwm_GM_Matrix.identity(4); - double sRoll = sin(roll); - double cRoll = cos(roll); - rRoll.set(1, 1, cRoll); - rRoll.set(1, 2, -sRoll); - rRoll.set(2, 1, sRoll); - rRoll.set(2, 2, cRoll); - - // concatenate ypr to get the final matrix - swwm_GM_Matrix ret = rYaw.multiplyMatrix(rPitch); - ret = ret.multiplyMatrix(rRoll); - return ret; - } - - /// Returns a rotation matrix from an axis and an angle. - static swwm_GM_Matrix fromAxisAngle(Vector3 axis, double angle) { - swwm_GM_Matrix ret = swwm_GM_Matrix.identity(4); - double c = cos(angle); - double s = sin(angle); - double x = axis.x; - double y = axis.y; - double z = axis.z; - - ret.set(0, 0, (x * x * (1.0 - c) + c)); - ret.set(0, 1, (x * y * (1.0 - c) - z * s)); - ret.set(0, 2, (x * z * (1.0 - c) + y * s)); - ret.set(1, 0, (y * x * (1.0 - c) + z * s)); - ret.set(1, 1, (y * y * (1.0 - c) + c)); - ret.set(1, 2, (y * z * (1.0 - c) - x * s)); - ret.set(2, 0, (x * z * (1.0 - c) - y * s)); - ret.set(2, 1, (y * z * (1.0 - c) + x * s)); - ret.set(2, 2, (z * z * (1.0 - c) + c)); - - return ret; - } - - /// Converts back from the rotation matrix to euler angles. - double, double, double rotationToEulerAngles() { - if (swwm_GM_GlobalMaths.closeEnough(get(2, 0), -1)) { - double x = 90; - double y = 0; - double z = atan2(get(0, 1), get(0, 2)); - return z, x, y; - } - else if (swwm_GM_GlobalMaths.closeEnough(get(2, 0), 1)) { - double x = -90; - double y = 0; - double z = atan2(-get(0, 1), -get(0, 2)); - return z, x, y; - } - else { - float x1 = -asin(get(2, 0)); - float x2 = 180 - x1; - - float y1 = atan2(get(2, 1) / cos(x1), get(2, 2) / cos(x1)); - float y2 = atan2(get(2, 1) / cos(x2), get(2, 2) / cos(x2)); - - float z1 = atan2(get(1, 0) / cos(x1), get(0, 0) / cos(x1)); - float z2 = atan2(get(1, 0) / cos(x2), get(0, 0) / cos(x2)); - - if ((abs(x1) + abs(y1) + abs(z1)) <= (abs(x2) + abs(y2) + abs(z2))) { - return z1, x1, y1; - } - else { - return z2, x2, y2; - } - } - } - - static swwm_GM_Matrix createTRSEuler(Vector3 translate, double yaw, double pitch, double roll, Vector3 scale) { - swwm_GM_Matrix translateMat = swwm_GM_Matrix.identity(4); - translateMat.set(0, 3, translate.x); - translateMat.set(1, 3, translate.y); - translateMat.set(2, 3, translate.z); - - swwm_GM_Matrix rotateMat = swwm_GM_Matrix.fromEulerAngles(yaw, pitch, roll); - - swwm_GM_Matrix scaleMat = swwm_GM_Matrix.identity(4); - scaleMat.set(0, 0, scale.x); - scaleMat.set(1, 1, scale.y); - scaleMat.set(2, 2, scale.z); - - swwm_GM_Matrix ret = translateMat.multiplyMatrix(rotateMat); - ret = ret.multiplyMatrix(scaleMat); - return ret; - } - - static swwm_GM_Matrix createTRSAxisAngle(Vector3 translate, Vector3 axis, double angle, Vector3 scale) { - swwm_GM_Matrix translateMat = swwm_GM_Matrix.identity(4); - translateMat.set(0, 3, translate.x); - translateMat.set(1, 3, translate.y); - translateMat.set(2, 3, translate.z); - - swwm_GM_Matrix rotateMat = swwm_GM_Matrix.fromAxisAngle(axis, angle); - - swwm_GM_Matrix scaleMat = swwm_GM_Matrix.identity(4); - scaleMat.set(0, 0, scale.x); - scaleMat.set(1, 1, scale.y); - scaleMat.set(2, 2, scale.z); - - swwm_GM_Matrix ret = translateMat.multiplyMatrix(rotateMat); - ret = ret.multiplyMatrix(scaleMat); - return ret; - } - - /// Returns a view matrix. - static swwm_GM_Matrix view(Vector3 camPos, double yaw, double pitch, double roll) { - // all of this is basically lifted and converted from PolyRenderer::SetupPerspectiveMatrix(), - // so credit goes to Graf Zahl/dpJudas/whoever else - // pitch needs to be adjusted by the pixel ratio - float pixelRatio = level.pixelstretch; - double angx = cos(pitch); - double angy = sin(pitch) * pixelRatio; - double alen = sqrt(angx * angx + angy * angy); - double adjustedPitch = asin(angy / alen); - double adjustedYaw = yaw - 90; - - // rotations - swwm_GM_Matrix rotR = swwm_GM_Matrix.fromAxisAngle((0, 0, 1), roll); - swwm_GM_Matrix rotP = swwm_GM_Matrix.fromAxisAngle((1, 0, 0), adjustedPitch); - swwm_GM_Matrix rotY = swwm_GM_Matrix.fromAxisAngle((0, -1, 0), adjustedYaw); - // pixel ratio scaling - swwm_GM_Matrix scale = swwm_GM_Matrix.identity(4); - scale.set(1, 1, pixelRatio); - // swapping y and z - swwm_GM_Matrix swapYZ = swwm_GM_Matrix.create(4, 4); - swapYZ.set(0, 0, 1); - swapYZ.set(1, 2, 1); - swapYZ.set(2, 1, -1); - swapYZ.set(3, 3, 1); - // translation - swwm_GM_Matrix translate = swwm_GM_Matrix.identity(4); - translate.set(0, 3, -camPos.x); - translate.set(1, 3, -camPos.y); - translate.set(2, 3, -camPos.z); - - // concatenate them all to get a final matrix - swwm_GM_Matrix ret = rotR.multiplyMatrix(rotP); - ret = ret.multiplyMatrix(rotY); - ret = ret.multiplyMatrix(scale); - ret = ret.multiplyMatrix(swapYZ); - ret = ret.multiplyMatrix(translate); - - return ret; - } - - /// Returns a perspective matrix (same format as gluPerspective). - static swwm_GM_Matrix perspective(double fovy, double aspect, double zNear, double zFar) { - swwm_GM_Matrix ret = swwm_GM_Matrix.create(4, 4); - double f = 1 / tan(fovy / 2.0); - // x coord - ret.set(0, 0, f / aspect); - // y coord - ret.set(1, 1, f); - // z buffer coord - ret.set(2, 2, (zFar + zNear) / (zNear - zFar)); - ret.set(2, 3, (2 * zFar * zNear) / (zNear - zFar)); - // w (homogeneous coordinates) - ret.set(3, 2, -1); - return ret; - } - - /// Returns a world->clip coords matrix from the passed args. - static swwm_GM_Matrix worldToClip(Vector3 viewPos, double yaw, double pitch, double roll, double FOV) { - double aspect = Screen.getAspectRatio(); - double fovy = swwm_GM_GlobalMaths.fovHToY(FOV); - swwm_GM_Matrix view = swwm_GM_Matrix.view(viewPos, yaw, pitch, roll); - // 5 & 65535 are what are used internally, so they're used here for consistency - swwm_GM_Matrix perp = swwm_GM_Matrix.perspective(fovy, aspect, 5, 65535); - swwm_GM_Matrix worldToClip = perp.multiplyMatrix(view); - return worldToClip; - } - - /// Gets the value at row, col. - double get(int row, int col) const { - return values[columns * row + col]; - } - - /// Sets the value at row, col. - void set(int row, int col, double val) { - values[columns * row + col] = val; - } - - /// Adds two matrices and returns the result. - swwm_GM_Matrix addMatrix(swwm_GM_Matrix other) const { - if (rows != other.rows || columns != other.columns) { - throwAbortException("Error: <%p>.addMatrix(<%p>) - Matrices need to be equal size", self, other); - } - swwm_GM_Matrix ret = swwm_GM_Matrix.create(columns, rows); - for (int row = 0; row < rows; row++) { - for (int col = 0; col < columns; col++) { - ret.set(row, col, get(row, col) + other.get(row, col)); - } - } - return ret; - } - - /// Multiplies the matrix by a scalar and returns the result. - swwm_GM_Matrix multiplyScalar(double scalar) const { - swwm_GM_Matrix ret = swwm_GM_Matrix.create(rows, columns); - for (int row = 0; row < rows; row++) { - for (int col = 0; col < columns; col++) { - ret.set(row, col, get(row, col) * scalar); - } - } - return ret; - } - - /// Multiplies two matrices and returns the result. - swwm_GM_Matrix multiplyMatrix(swwm_GM_Matrix other) const { - if (columns != other.rows) { - throwAbortException("Error: <%p>.multiplyMatrix(<%p>) - Matrix A columns needs to equal Matrix B rows", self, other); - } - swwm_GM_Matrix ret = swwm_GM_Matrix.create(other.columns, rows); - for (int row = 0; row < ret.rows; row++) { - for (int col = 0; col < ret.columns; col++) { - double val = 0; - for (int i = 0; i < columns; i++) { - val += get(row, i) * other.get(i, col); - } - ret.set(row, col, val); - } - } - return ret; - } - - /// Multiplies this Matrix by a 2D vector. - swwm_GM_Matrix multiplyVector2(Vector2 vec, swwm_GM_VectorType type = swwm_GM_Vector_Position) const { - swwm_GM_Matrix vec2Matrix = swwm_GM_Matrix.create(1, 3); - vec2Matrix.set(0, 0, vec.x); - vec2Matrix.set(1, 0, vec.y); - if (type == swwm_GM_Vector_Position) vec2Matrix.set(2, 0, 1); - else if (type == swwm_GM_Vector_Direction) vec2Matrix.set(2, 0, 0); - else throwAbortException("Error: Invalid vector type for multiplyVector2 (%d)", type); - return multiplyMatrix(vec2Matrix); - } - - /// Multiplies this Matrix by a 3D vector. - swwm_GM_Matrix multiplyVector3(Vector3 vec, swwm_GM_VectorType type = swwm_GM_Vector_Position) const { - swwm_GM_Matrix vec3Matrix = swwm_GM_Matrix.create(1, 4); - vec3Matrix.set(0, 0, vec.x); - vec3Matrix.set(1, 0, vec.y); - vec3Matrix.set(2, 0, vec.z); - if (type == swwm_GM_Vector_Position) vec3Matrix.set(3, 0, 1); - else if (type == swwm_GM_Vector_Direction) vec3Matrix.set(3, 0, 0); - else throwAbortException("Error: Invalid vector type for multiplyVector3 (%d)", type); - return multiplyMatrix(vec3Matrix); - } - - /// Returns the Matrix in Vector2 form, optionally dividing by z. - Vector2 asVector2(bool divideZ = true) const { - if (columns != 1 || rows != 3) { - throwAbortException("Error: <%p>.asVector2() - Matrix needs to be 1 * 3", self); - } - if (divideZ) return (get(0, 0), get(1, 0)) / get(2, 0); - else return (get(0, 0), get(1, 0)); - } - - /// Returns the Matrix in Vector3 form, optionally dividing by w. - Vector3 asVector3(bool divideW = true) const { - if (columns != 1 || rows != 4) { - throwAbortException("Error: <%p>.asVector3() - Matrix needs to be 1 * 4", self); - } - if (divideW) return (get(0, 0), get(1, 0), get(2, 0)) / get(3, 0); - else return (get(0, 0), get(1, 0), get(2, 0)); - } - - /// Returns the number of columns. - int getColumns() const { - return columns; - } - - /// Returns the number of rows. - int getRows() const { - return rows; - } -} diff --git a/zscript/swwm_Gutamatics/Matrix4.zsc b/zscript/swwm_Gutamatics/Matrix4.zsc deleted file mode 100644 index 76c1e67c3..000000000 --- a/zscript/swwm_Gutamatics/Matrix4.zsc +++ /dev/null @@ -1,319 +0,0 @@ -class swwm_GM_Matrix4 { - double values[4][4]; - - /// Initialises a new Matrix4 in a static context. - static swwm_GM_Matrix4 create() { - return new("swwm_GM_Matrix4"); - } - - /// Returns an identity matrix. - static swwm_GM_Matrix4 identity() { - let ret = swwm_GM_Matrix4.create(); - ret.values[0][0] = 1; - ret.values[1][1] = 1; - ret.values[2][2] = 1; - ret.values[3][3] = 1; - return ret; - } - - /// Returns a rotation matrix from euler angles. - static swwm_GM_Matrix4 fromEulerAngles(double yaw, double pitch, double roll) { - swwm_GM_Matrix4 rYaw = swwm_GM_Matrix4.identity(); - double sYaw = sin(yaw); - double cYaw = cos(yaw); - rYaw.values[0][0] = cYaw; - rYaw.values[0][1] = -sYaw; - rYaw.values[1][0] = sYaw; - rYaw.values[1][1] = cYaw; - - swwm_GM_Matrix4 rPitch = swwm_GM_Matrix4.identity(); - double sPitch = sin(pitch); - double cPitch = cos(pitch); - rPitch.values[0][0] = cPitch; - rPitch.values[2][0] = -sPitch; - rPitch.values[0][2] = sPitch; - rPitch.values[2][2] = cPitch; - - swwm_GM_Matrix4 rRoll = swwm_GM_Matrix4.identity(); - double sRoll = sin(roll); - double cRoll = cos(roll); - rRoll.values[1][1] = cRoll; - rRoll.values[1][2] = -sRoll; - rRoll.values[2][1] = sRoll; - rRoll.values[2][2] = cRoll; - - // concatenate ypr to get the final matrix - swwm_GM_Matrix4 ret = rYaw.multiplyMatrix(rPitch); - ret = ret.multiplyMatrix(rRoll); - return ret; - } - - /// Returns a rotation matrix from an axis and an angle. - static swwm_GM_Matrix4 fromAxisAngle(Vector3 axis, double angle) { - swwm_GM_Matrix4 ret = swwm_GM_Matrix4.identity(); - double c = cos(angle); - double s = sin(angle); - double x = axis.x; - double y = axis.y; - double z = axis.z; - - ret.values[0][0] = (x * x * (1.0 - c) + c); - ret.values[0][1] = (x * y * (1.0 - c) - z * s); - ret.values[0][2] = (x * z * (1.0 - c) + y * s); - ret.values[1][0] = (y * x * (1.0 - c) + z * s); - ret.values[1][1] = (y * y * (1.0 - c) + c); - ret.values[1][2] = (y * z * (1.0 - c) - x * s); - ret.values[2][0] = (x * z * (1.0 - c) - y * s); - ret.values[2][1] = (y * z * (1.0 - c) + x * s); - ret.values[2][2] = (z * z * (1.0 - c) + c); - - return ret; - } - - /// Converts back from the rotation matrix to euler angles. - double, double, double rotationToEulerAngles() { - if (swwm_GM_GlobalMaths.closeEnough(values[2][0], -1)) { - double x = 90; - double y = 0; - double z = atan2(values[0][1], values[0][2]); - return z, x, y; - } - else if (swwm_GM_GlobalMaths.closeEnough(values[2][0], 1)) { - double x = -90; - double y = 0; - double z = atan2(-values[0][1], -values[0][2]); - return z, x, y; - } - else { - float x1 = -asin(values[2][0]); - float x2 = 180 - x1; - - float y1 = atan2(values[2][1] / cos(x1), values[2][2] / cos(x1)); - float y2 = atan2(values[2][1] / cos(x2), values[2][2] / cos(x2)); - - float z1 = atan2(values[1][0] / cos(x1), values[0][0] / cos(x1)); - float z2 = atan2(values[1][0] / cos(x2), values[0][0] / cos(x2)); - - if ((abs(x1) + abs(y1) + abs(z1)) <= (abs(x2) + abs(y2) + abs(z2))) { - return z1, x1, y1; - } - else { - return z2, x2, y2; - } - } - } - - static swwm_GM_Matrix4 createTRSEuler(Vector3 translate, double yaw, double pitch, double roll, Vector3 scale) { - swwm_GM_Matrix4 translateMat = swwm_GM_Matrix4.identity(); - translateMat.values[0][3] = translate.x; - translateMat.values[1][3] = translate.y; - translateMat.values[2][3] = translate.z; - - swwm_GM_Matrix4 rotateMat = swwm_GM_Matrix4.fromEulerAngles(yaw, pitch, roll); - - swwm_GM_Matrix4 scaleMat = swwm_GM_Matrix4.identity(); - scaleMat.values[0][0] = scale.x; - scaleMat.values[1][1] = scale.y; - scaleMat.values[2][2] = scale.z; - - swwm_GM_Matrix4 ret = translateMat.multiplyMatrix(rotateMat); - ret = ret.multiplyMatrix(scaleMat); - return ret; - } - - static swwm_GM_Matrix4 createTRSAxisAngle(Vector3 translate, Vector3 axis, double angle, Vector3 scale) { - swwm_GM_Matrix4 translateMat = swwm_GM_Matrix4.identity(); - translateMat.values[0][3] = translate.x; - translateMat.values[1][3] = translate.y; - translateMat.values[2][3] = translate.z; - - swwm_GM_Matrix4 rotateMat = swwm_GM_Matrix4.fromAxisAngle(axis, angle); - - swwm_GM_Matrix4 scaleMat = swwm_GM_Matrix4.identity(); - scaleMat.values[0][0] = scale.x; - scaleMat.values[1][1] = scale.y; - scaleMat.values[2][2] = scale.z; - - swwm_GM_Matrix4 ret = translateMat.multiplyMatrix(rotateMat); - ret = ret.multiplyMatrix(scaleMat); - return ret; - } - - /// Returns a view matrix. - static swwm_GM_Matrix4 view(Vector3 camPos, double yaw, double pitch, double roll) { - // all of this is basically lifted and converted from PolyRenderer::SetupPerspectiveMatrix(), - // so credit goes to Graf Zahl/dpJudas/whoever else - // pitch needs to be adjusted by the pixel ratio - float pixelRatio = level.pixelstretch; - double angx = cos(pitch); - double angy = sin(pitch) * pixelRatio; - double alen = sqrt(angx * angx + angy * angy); - double adjustedPitch = asin(angy / alen); - double adjustedYaw = 90 - yaw; - - // rotations - let cz = cos(roll); - let sz = sin(roll); - let cx = cos(adjustedPitch); - let sx = sin(adjustedPitch); - let cy = cos(adjustedYaw); - let sy = sin(adjustedYaw); - - let rot = swwm_GM_Matrix4.create(); - rot.values[0][0] = cz * cy - sz * sx * sy; - rot.values[0][1] = -sz * cx; - rot.values[0][2] = cz * sy + sz * sx * cy; - - rot.values[1][0] = sz * cy + cz * sx * sy; - rot.values[1][1] = cz * cx; - rot.values[1][2] = sz * sy - cz * sx * cy; - - rot.values[2][0] = -cx * sy; - rot.values[2][1] = sx; - rot.values[2][2] = cx * cy; - - rot.values[3][3] = 1.0; - - // pixel ratio scaling - swwm_GM_Matrix4 scale = swwm_GM_Matrix4.identity(); - scale.values[1][1] = pixelRatio; - // swapping y and z - swwm_GM_Matrix4 swapYZ = swwm_GM_Matrix4.create(); - swapYZ.values[0][0] = 1; - swapYZ.values[1][2] = 1; - swapYZ.values[2][1] = -1; - swapYZ.values[3][3] = 1; - // translation - swwm_GM_Matrix4 translate = swwm_GM_Matrix4.identity(); - translate.values[0][3] = -camPos.x; - translate.values[1][3] = -camPos.y; - translate.values[2][3] = -camPos.z; - - // concatenate them all to get a final matrix - swwm_GM_Matrix4 ret = rot.multiplyMatrix(scale); - ret = ret.multiplyMatrix(swapYZ); - ret = ret.multiplyMatrix(translate); - - return ret; - } - - /// Returns a perspective matrix (same format as gluPerspective). - static swwm_GM_Matrix4 perspective(double fovy, double aspect, double zNear, double zFar) { - swwm_GM_Matrix4 ret = swwm_GM_Matrix4.create(); - double f = 1 / tan(fovy / 2.0); - // x coord - ret.values[0][0] = f / aspect; - // y coord - ret.values[1][1] = f; - // z buffer coord - ret.values[2][2] = (zFar + zNear) / (zNear - zFar); - ret.values[2][3] = (2 * zFar * zNear) / (zNear - zFar); - // w (homogeneous coordinates) - ret.values[3][2] = -1; - return ret; - } - - /// Returns a world->clip coords matrix from the passed args. - static swwm_GM_Matrix4 worldToClip(Vector3 viewPos, double yaw, double pitch, double roll, double FOV) { - double aspect = Screen.getAspectRatio(); - double fovy = swwm_GM_GlobalMaths.fovHToY(FOV); - swwm_GM_Matrix4 view = swwm_GM_Matrix4.view(viewPos, yaw, pitch, roll); - // 5 & 65535 are what are used internally, so they're used here for consistency - swwm_GM_Matrix4 perp = swwm_GM_Matrix4.perspective(fovy, aspect, 5, 65535); - swwm_GM_Matrix4 worldToClip = perp.multiplyMatrix(view); - return worldToClip; - } - - /// Adds two matrices and returns the result. - swwm_GM_Matrix4 addMatrix(swwm_GM_Matrix4 other) const { - swwm_GM_Matrix4 ret = swwm_GM_Matrix4.create(); - ret.values[0][0] = values[0][0] + other.values[0][0]; - ret.values[0][1] = values[0][1] + other.values[0][1]; - ret.values[0][2] = values[0][2] + other.values[0][2]; - ret.values[0][3] = values[0][3] + other.values[0][3]; - ret.values[1][0] = values[1][0] + other.values[1][0]; - ret.values[1][1] = values[1][1] + other.values[1][1]; - ret.values[1][2] = values[1][2] + other.values[1][2]; - ret.values[1][3] = values[1][3] + other.values[1][3]; - ret.values[2][0] = values[2][0] + other.values[2][0]; - ret.values[2][1] = values[2][1] + other.values[2][1]; - ret.values[2][2] = values[2][2] + other.values[2][2]; - ret.values[2][3] = values[2][3] + other.values[2][3]; - ret.values[3][0] = values[3][0] + other.values[3][0]; - ret.values[3][1] = values[3][1] + other.values[3][1]; - ret.values[3][2] = values[3][2] + other.values[3][2]; - ret.values[3][3] = values[3][3] + other.values[3][3]; - return ret; - } - - /// Multiplies the matrix by a scalar and returns the result. - swwm_GM_Matrix4 multiplyScalar(double scalar) const { - swwm_GM_Matrix4 ret = swwm_GM_Matrix4.create(); - ret.values[0][0] = values[0][0] * scalar; - ret.values[0][1] = values[0][1] * scalar; - ret.values[0][2] = values[0][2] * scalar; - ret.values[0][3] = values[0][3] * scalar; - ret.values[1][0] = values[1][0] * scalar; - ret.values[1][1] = values[1][1] * scalar; - ret.values[1][2] = values[1][2] * scalar; - ret.values[1][3] = values[1][3] * scalar; - ret.values[2][0] = values[2][0] * scalar; - ret.values[2][1] = values[2][1] * scalar; - ret.values[2][2] = values[2][2] * scalar; - ret.values[2][3] = values[2][3] * scalar; - ret.values[3][0] = values[3][0] * scalar; - ret.values[3][1] = values[3][1] * scalar; - ret.values[3][2] = values[3][2] * scalar; - ret.values[3][3] = values[3][3] * scalar; - return ret; - } - - /// Multiplies two matrices and returns the result. - swwm_GM_Matrix4 multiplyMatrix(swwm_GM_Matrix4 other) const { - swwm_GM_Matrix4 ret = swwm_GM_Matrix4.create(); - for (int row = 0; row < 4; row++) { - ret.values[row][0] = - values[row][0] * other.values[0][0] + - values[row][1] * other.values[1][0] + - values[row][2] * other.values[2][0] + - values[row][3] * other.values[3][0]; - - ret.values[row][1] = - values[row][0] * other.values[0][1] + - values[row][1] * other.values[1][1] + - values[row][2] * other.values[2][1] + - values[row][3] * other.values[3][1]; - - ret.values[row][2] = - values[row][0] * other.values[0][2] + - values[row][1] * other.values[1][2] + - values[row][2] * other.values[2][2] + - values[row][3] * other.values[3][2]; - - ret.values[row][3] = - values[row][0] * other.values[0][3] + - values[row][1] * other.values[1][3] + - values[row][2] * other.values[2][3] + - values[row][3] * other.values[3][3]; - } - return ret; - } - - /// Multiplies this Matrix by a 3D vector. - Vector3 multiplyVector3(Vector3 vec, swwm_GM_VectorType type = swwm_GM_Vector_Position, bool divideW = true) const { - let vecW = (type == swwm_GM_Vector_Position) ? 1.0 : 0.0; - - let ret = ( - values[0][0] * vec.x + values[0][1] * vec.y + values[0][2] * vec.z + values[0][3] * vecW, - values[1][0] * vec.x + values[1][1] * vec.y + values[1][2] * vec.z + values[1][3] * vecW, - values[2][0] * vec.x + values[2][1] * vec.y + values[2][2] * vec.z + values[2][3] * vecW - ); - - if (divideW) { - let retW = values[3][0] * vec.x + values[3][1] * vec.y + values[3][2] * vec.z + values[3][3] * vecW; - ret /= retW; - } - - return ret; - } -} diff --git a/zscript/swwm_Gutamatics/Quaternion.zsc b/zscript/swwm_Gutamatics/Quaternion.zsc deleted file mode 100644 index b19827e2d..000000000 --- a/zscript/swwm_Gutamatics/Quaternion.zsc +++ /dev/null @@ -1,275 +0,0 @@ -class swwm_GM_Quaternion { - double w, x, y, z; - - /// Initialises the Quaternion. - swwm_GM_Quaternion init(double w, double x, double y, double z) { - self.w = w; - self.x = x; - self.y = y; - self.z = z; - - return self; - } - - /// Initialises the Quaternion in a static context. - static swwm_GM_Quaternion create(double w, double x, double y, double z) { - return new("swwm_GM_Quaternion").init(w, x, y, z); - } - - /// Sets up the quaternion using axis and angle. - void setAxisAngle(Vector3 axis, double angle) { - double lengthSquared = axis dot axis; - // avoid a division by 0 and just return the identity - if (swwm_GM_GlobalMaths.closeEnough(lengthSquared, 0)) { - init(1, 0, 0, 0); - return; - } - - angle *= 0.5; - - double sinTheta = sin(angle); - double cosTheta = cos(angle); - double factor = sinTheta / sqrt(lengthSquared); - - w = cosTheta; - x = factor * axis.x; - y = factor * axis.y; - z = factor * axis.z; - } - - /// Initialises the Quaternion using axis and angle. - swwm_GM_Quaternion initFromAxisAngle(Vector3 axis, double angle) { - setAxisAngle(axis, angle); - return self; - } - - /// Initialises the Quaternion using axis and angle in a static context. - static swwm_GM_Quaternion createFromAxisAngle(Vector3 axis, double angle) { - return new("swwm_GM_Quaternion").initFromAxisAngle(axis, angle); - } - - /// Sets up the quaternion using euler angles. - void setAngles(double yaw, double pitch, double roll) { - swwm_GM_Quaternion zRotation = new("swwm_GM_Quaternion").initFromAxisAngle((0, 0, 1), yaw); - swwm_GM_Quaternion yRotation = new("swwm_GM_Quaternion").initFromAxisAngle((0, 1, 0), pitch); - swwm_GM_Quaternion xRotation = new("swwm_GM_Quaternion").initFromAxisAngle((1, 0, 0), roll); - swwm_GM_Quaternion finalRotation = zRotation.multiplyQuat(yRotation); - finalRotation = finalRotation.multiplyQuat(xRotation); - copy(finalRotation); - } - - /// Initialises the quaternion using euler angles. - swwm_GM_Quaternion initFromAngles(double yaw, double pitch, double roll) { - setAngles(yaw, pitch, roll); - return self; - } - - /// Initialises the quaternion using euler angles in a static context. - static swwm_GM_Quaternion createFromAngles(double yaw, double pitch, double roll) { - return new("swwm_GM_Quaternion").initFromAngles(yaw, pitch, roll); - } - - /// Returns the euler angles from the Quaternion. - double, double, double toAngles() { - double singularityTest = z * x - w * y; - double yawY = 2 * (w * z + x * y); - double yawX = (1 - 2 * (y * y + z * z)); - - double singularityThreshold = 0.4999995; - - double yaw = 0; - double pitch = 0; - double roll = 0; - - if (singularityTest < -singularityThreshold) { - pitch = 90; - yaw = atan2(yawY, yawX); - roll = swwm_GM_GlobalMaths.normalize180(yaw + (2 * atan2(x, w))); - } - else if (singularityTest > singularityThreshold) { - pitch = -90; - yaw = atan2(yawY, yawX); - roll = swwm_GM_GlobalMaths.normalize180(yaw + (2 * atan2(x, w))); - } - else { - pitch = -asin(2 * singularityTest); - yaw = atan2(yawY, yawX); - roll = atan2(2 * (w * x + y * z), (1 - 2 * (x * x + y * y))); - } - - return yaw, pitch, roll; - } - - /// Returns the conjugate of the Quaternion. - swwm_GM_Quaternion conjugate() const { - return new("swwm_GM_Quaternion").init(w, -x, -y, -z); - } - - /// Returns the normalised form of the Quaternion. - swwm_GM_Quaternion unit() const { - double lengthSquared = w * w + x * x + y * y + z * z; - if (swwm_GM_GlobalMaths.closeEnough(lengthSquared, 0)) { - return zero(); - } - double factor = 1 / sqrt(lengthSquared); - return new("swwm_GM_Quaternion").init(w * factor, x * factor, y * factor, z * factor); - } - - /// Returns the inverse of the Quaternion (equal to conjugate if normalised). - swwm_GM_Quaternion inverse() { - double norm = w * w + x * x + y * y + z * z; - // if this is a zero quaternion, just return self - if (swwm_GM_GlobalMaths.closeEnough(norm, 0)) { - return self; - } - double inverseNorm = 1/norm; - return new("swwm_GM_Quaternion").init(w * inverseNorm, x * -inverseNorm, y * -inverseNorm, z * -inverseNorm); - } - - /// Adds two Quaternions, returning the result. - swwm_GM_Quaternion add(swwm_GM_Quaternion other) const { - return new("swwm_GM_Quaternion").init(w + other.w, x + other.x, y + other.y, z + other.z); - } - - /// Subtracts two Quaternions, returning the result. - swwm_GM_Quaternion subtract(swwm_GM_Quaternion other) const { - return new("swwm_GM_Quaternion").init(w - other.w, x - other.x, y - other.y, z - other.z); - } - - /// Multiplies the Quaternion by a scalar, returning the result. - swwm_GM_Quaternion multiplyScalar(double scalar) const { - return new("swwm_GM_Quaternion").init(w * scalar, x * scalar, y * scalar, z * scalar); - } - - /// Multiplies two Quaternions, returning the result. - swwm_GM_Quaternion multiplyQuat(swwm_GM_Quaternion other) const { - return new("swwm_GM_Quaternion").init(w * other.w - x * other.x - y * other.y - z * other.z, - w * other.x + x * other.w + y * other.z - z * other.y, - w * other.y + y * other.w + z * other.x - x * other.z, - w * other.z + z * other.w + x * other.y - y * other.x ); - } - - /// Negates the Quaternion. - swwm_GM_Quaternion negate() const { - return new("swwm_GM_Quaternion").init(-w, -x, -y, -z); - } - - /// Sets the values to 0 if they're close enough to 0. - void clean() { - if (swwm_GM_GlobalMaths.closeEnough(w, 0)) w = 0; - if (swwm_GM_GlobalMaths.closeEnough(x, 0)) x = 0; - if (swwm_GM_GlobalMaths.closeEnough(y, 0)) y = 0; - if (swwm_GM_GlobalMaths.closeEnough(z, 0)) z = 0; - } - - /// Returns the length of the Quaternion squared. - double lengthSquared() const { - return (w * w + x * x + y * y + z * z); - } - - /// Returns the length of the Quaternion. - double length() const { - return sqrt(w * w + x * x + y * y + z * z); - } - - /// Returns whether the two Quaternions are equal. - bool equals(swwm_GM_Quaternion other) const { - return swwm_GM_GlobalMaths.closeEnough(w, other.w) && swwm_GM_GlobalMaths.closeEnough(x, other.x) && - swwm_GM_GlobalMaths.closeEnough(y, other.y) && swwm_GM_GlobalMaths.closeEnough(z, other.z) ; - } - - /// Returns if the Quaternion is a 0 Quaternion. - bool isZero() const { - return swwm_GM_GlobalMaths.closeEnough(w * w + x * x + y * y + z * z, 0); - } - - /// Returns if the Quaternion is a unit Quaternion. - bool isUnit() const { - return swwm_GM_GlobalMaths.closeEnough(w * w + x * x + y * y + z * z, 1); - } - - /// Returns if the Quaternion is an identity Quaternion. - bool isIdentity() const { - return swwm_GM_GlobalMaths.closeEnough(w, 1) && swwm_GM_GlobalMaths.closeEnough(x, 0) && - swwm_GM_GlobalMaths.closeEnough(y, 0) && swwm_GM_GlobalMaths.closeEnough(z, 0) ; - } - - /// Returns the dot product of two Quaternions. - double dotProduct(swwm_GM_Quaternion other) const { - return (w * other.w + x * other.x + y * other.y + z * other.z); - } - - /// Copies another Quaternion into this one. - void copy(swwm_GM_Quaternion other) { - w = other.w; - x = other.x; - y = other.y; - z = other.z; - } - - /// Rotates a Vector3 using this Quaternion. - Vector3 rotateVector3(Vector3 vec) const { - swwm_GM_Quaternion q = unit(); - - Vector3 u = (q.x, q.y, q.z); - double s = q.w; - - return 2 * (u dot vec) * u + (s * s - (u dot u)) * vec + 2 * s * u cross vec; - } - - /// Linearly interpolates between two Quaternions, clamping the parameters. - static swwm_GM_Quaternion lerp(swwm_GM_Quaternion from, swwm_GM_Quaternion to, double time) { - time = clamp(time, 0, 1); - return lerpUnclamped(from, to, time); - } - - /// Linearly interpolates between two Quaternions. - static swwm_GM_Quaternion lerpUnclamped(swwm_GM_Quaternion from, swwm_GM_Quaternion to, double time) { - swwm_GM_Quaternion ret = new("swwm_GM_Quaternion"); - double reverseTime = 1 - time; - ret.x = reverseTime * from.x + time * to.x; - ret.y = reverseTime * from.y + time * to.y; - ret.z = reverseTime * from.z + time * to.z; - ret.w = reverseTime * from.w + time * to.w; - ret = ret.unit(); - return ret; - } - - /// Spherically interpolates between two Quaternions, clamping the parameters. - static swwm_GM_Quaternion slerp(swwm_GM_Quaternion from, swwm_GM_Quaternion to, double time) { - time = clamp(time, 0, 1); - return slerpUnclamped(from, to, time); - } - - /// Spherically interpolates between two Quaternions. - static swwm_GM_Quaternion slerpUnclamped(swwm_GM_Quaternion from, swwm_GM_Quaternion to, double time) { - swwm_GM_Quaternion q3; - double fromToDot = from.dotProduct(to); - - if (fromToDot < 0) { - fromToDot = -fromToDot; - q3 = to.negate(); - } - else { - q3 = to; - } - - if (fromToDot < 0.95) { - double angle = acos(fromToDot); - return ((from.multiplyScalar(sin(angle * (1 - time)))).add(q3.multiplyScalar(sin(angle * time)))).multiplyScalar(1 / sin(angle)); - } - else { - return lerp(from, q3, time); - } - } - - /// Returns the 0 Quaternion. - static swwm_GM_Quaternion zero() { - return new("swwm_GM_Quaternion").init(0, 0, 0, 0); - } - - /// Returns the identity Quaternion. - static swwm_GM_Quaternion identity() { - return new("swwm_GM_Quaternion").init(1, 0, 0, 0); - } -} diff --git a/zscript/swwm_Gutamatics/VectorUtil.zsc b/zscript/swwm_Gutamatics/VectorUtil.zsc deleted file mode 100644 index c720cf5ef..000000000 --- a/zscript/swwm_Gutamatics/VectorUtil.zsc +++ /dev/null @@ -1,29 +0,0 @@ -class swwm_GM_VectorUtil { - /// Linearly interpolates between two Vector3s, clamping the parameters. - static Vector3 lerpVec3(Vector3 from, Vector3 to, double time) { - time = clamp(time, 0, 1); - return lerpUnclampedVec3(from, to, time); - } - - /// Linearly interpolates between two Vector3s. - static Vector3 lerpUnclampedVec3(Vector3 from, Vector3 to, double time) { - Vector3 ret; - double reverseTime = 1 - time; - ret = reverseTime * from + time * to; - return ret; - } - - /// Linearly interpolates between two Vector2s, clamping the parameters. - static Vector2 lerpVec2(Vector2 from, Vector2 to, double time) { - time = clamp(time, 0, 1); - return lerpUnclampedVec2(from, to, time); - } - - /// Linearly interpolates between two Vector2s. - static Vector2 lerpUnclampedVec2(Vector2 from, Vector2 to, double time) { - Vector2 ret; - double reverseTime = 1 - time; - ret = reverseTime * from + time * to; - return ret; - } -} diff --git a/zscript/swwm_Polyobjects/LICENSE.txt b/zscript/swwm_Polyobjects/LICENSE.txt new file mode 100644 index 000000000..b8566b3ff --- /dev/null +++ b/zscript/swwm_Polyobjects/LICENSE.txt @@ -0,0 +1,7 @@ +Copyright (c) 2020 Mykola Ambartsumov + +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. \ No newline at end of file diff --git a/zscript/swwm_Polyobjects/PolyobjectEffector.zs b/zscript/swwm_Polyobjects/PolyobjectEffector.zs index 445df752c..1aa54fe76 100644 --- a/zscript/swwm_Polyobjects/PolyobjectEffector.zs +++ b/zscript/swwm_Polyobjects/PolyobjectEffector.zs @@ -1,48 +1,48 @@ -class swwm_PolyobjectEffector: Thinker abstract -{ - // Base abstract class for Polyobject Effectors - // Polyobject Effectors affect how a polyobject behaves. - // Polyobject Effectors contain a pointer to the next Effector of a polyobject, - // forming a circular linked list. - // To add an effector to a polyobject, call AddEffector() on a PolyobjectHandle. - // To remove an effector, simply call Destroy() on it. - - swwm_PolyobjectHandle Polyobject; - swwm_PolyobjectEffector Next; - - // OnAdd() is called once after adding the effector to a PolyobjectHandle - virtual void OnAdd() - { - - } - - // PolyTick() is called every tic by a PolyobjectHandle - virtual void PolyTick() - { - - } - - override void OnDestroy() - { - swwm_PolyobjectEffector e = Polyobject.EffectorList; - if (e != NULL) - { - // Find previous effector - while (e && e.Next != self) - { - e = e.Next; - } - - // Link previous effector to the next effector - e.Next = Next; - - // Check if this effector is the last one - if (e == self) - { - // Polyobject has no other effectors, set EffectorList to NULL - Polyobject.EffectorList = NULL; - } - } - Super.OnDestroy(); - } -} +class swwm_PolyobjectEffector: Thinker abstract +{ + // Base abstract class for Polyobject Effectors + // Polyobject Effectors affect how a polyobject behaves. + // Polyobject Effectors contain a pointer to the next Effector of a polyobject, + // forming a circular linked list. + // To add an effector to a polyobject, call AddEffector() on a PolyobjectHandle. + // To remove an effector, simply call Destroy() on it. + + swwm_PolyobjectHandle Polyobject; + swwm_PolyobjectEffector Next; + + // OnAdd() is called once after adding the effector to a PolyobjectHandle + virtual void OnAdd() + { + + } + + // PolyTick() is called every tic by a PolyobjectHandle + virtual void PolyTick() + { + + } + + override void OnDestroy() + { + swwm_PolyobjectEffector e = Polyobject.EffectorList; + if (e != NULL) + { + // Find previous effector + while (e && e.Next != self) + { + e = e.Next; + } + + // Link previous effector to the next effector + e.Next = Next; + + // Check if this effector is the last one + if (e == self) + { + // Polyobject has no other effectors, set EffectorList to NULL + Polyobject.EffectorList = NULL; + } + } + Super.OnDestroy(); + } +} diff --git a/zscript/swwm_Polyobjects/PolyobjectHandle.zs b/zscript/swwm_Polyobjects/PolyobjectHandle.zs index f67d92f45..0be289e2d 100644 --- a/zscript/swwm_Polyobjects/PolyobjectHandle.zs +++ b/zscript/swwm_Polyobjects/PolyobjectHandle.zs @@ -1,359 +1,359 @@ -class swwm_PolyobjectHandle: Thinker -{ - // This thinker keeps track of a polyobject's position, angle, movement speed etc. - // Instances of this thinker should only be created by the included map postprocessor - - enum EPolyobjType - { - POTYP_NORMAL = 9301, // Normal StartSpot - POTYP_CRUSH = 9302, // Crush StartSpot - POTYP_HURT = 9303 // Hurt StartSpot - } - - // Polyobject Number - int PolyobjectNum; - - // Line defining the polyobject (Polyobj_StartLine, or one of Polyobj_ExplicitLine) - Line StartLine; - - // [MK] All lines belonging to the polyobject - Array Lines; - - // Initial angle of StartLine - double StartAngle; - - // Last tic angle of StartLine - double LastAngle; - - // Starting positions of StartLine vertices - Vector2[2] VertexStartingPos; - - // Last tic positions of StartLine vertices - Vector2[2] VertexLastPos; - - // Last tic position of the polyobject - Vector2 LastPos; - - // SoundSequence number - int SoundSequenceNum; - - // StartSpot position - Vector2 StartSpotPos; - - // For bounds checking - double z; - - // Sector the polyobject spawns in () - Sector StartSector; - - // Polyobject type (normal, crush, hurt) - EPolyobjType Type; - - // Mirror Polyobject - swwm_PolyobjectHandle Mirror; - - // Circular linked list of attached Polyobject Effectors - swwm_PolyobjectEffector EffectorList; - - // Whether the initalization has finished - bool IsInitialized; - - // Creates a PolyobjectHandle - static swwm_PolyobjectHandle Create() - { - swwm_PolyobjectHandle po = swwm_PolyobjectHandle(new('swwm_PolyobjectHandle')); - // Sets the underlying Thinker StatNum to 127 so that LastPos, LastAngle etc. get - // updated after all the other thinkers. - po.ChangeStatNum(127); - - return po; - } - - // Returns a PolyobjectHandle corresponding to the provided polyobject number - // Returns NULL if no such handler exists. - static swwm_PolyobjectHandle FindPolyobj(int pobjnum) - { - swwm_PolyobjectHandle po; - let it = ThinkerIterator.Create('swwm_PolyobjectHandle'); - while ((po = swwm_PolyobjectHandle(it.Next())) != NULL) - { - if (po.PolyobjectNum == pobjnum) - return po; - } - return NULL; - } - - // Adds effector to the end of current effector list - void AddEffector(swwm_PolyobjectEffector effector) - { - - effector.Polyobject = self; - - // If effector list is empty, new effector becomes head of the list - if (EffectorList == NULL) - { - EffectorList = effector; - effector.Next = effector; - } - else - { - swwm_PolyobjectEffector e = EffectorList; - // Go through every effector until the last item - while (e.Next != EffectorList) - { - e = e.Next; - } - effector.Next = EffectorList; - e.Next = effector; - } - if (IsInitialized) - { - // If we're initialized, run the OnAdd effect immediately - effector.OnAdd(); - } - } - - // Finds effector of specified class, and returns it - swwm_PolyobjectEffector FindEffector(class effectorclass) - { - // No effectors? Nothing to find then - if (EffectorList == NULL) - return NULL; - - // Go through each effector - swwm_PolyobjectEffector e = EffectorList; - do - { - - // Effector is of specified class, return it - if (e is effectorclass) - return e; - - e = e.Next; - } - while (e != EffectorList); - return NULL; - } - - override void PostBeginPlay() - { - // Initialization shouldn't happen when reentering the map - if (Level.Time > 0) - return; - - // Map has no lines corresponding to this polyobject, destroy the handle - if (StartLine == NULL) - { - Destroy(); - return; - } - - // Using polyobject linedefs is the only way to track polyobject movements. - // All geometric calculations will be done relative to StartLine. - - // Store initial position and angle - StartAngle = VectorAngle(StartLine.Delta.x, StartLine.Delta.y); - VertexStartingPos[0] = VertexLastPos[0] = StartLine.v1.p; - VertexStartingPos[1] = VertexLastPos[1] = StartLine.v2.p; - - // Now that the map is loaded, it's safe to call effectors' OnAdd() methods - swwm_PolyobjectEffector e = EffectorList; - if (e != NULL) - { - do - { - e.OnAdd(); - e = e.Next; - } - while (e != EffectorList); - } - - // Done initializing - IsInitialized = true; - } - - override void Tick() - { - // Call PolyTick() for each effector - if (EffectorList != NULL) - { - swwm_PolyobjectEffector e = EffectorList; - do - { - e.PolyTick(); - e = e.Next; - } - while (e != EffectorList); - } - - // Store current position/angle to be used during the next tic - VertexLastPos[0] = StartLine.v1.p; - VertexLastPos[1] = StartLine.v2.p; - LastAngle = GetAngle(); - LastPos = GetPos(); - } - - override void OnDestroy() - { - // Clean up effectors first - swwm_PolyobjectEffector e = EffectorList; - if (e != NULL) - { - swwm_PolyobjectEffector next; - do - { - next = e.Next; - e.Destroy(); - e = next; - } - while (e != EffectorList); - } - } - - Sector GetSector() - { - if (StartSector == NULL) - { - Vector2 SpotPos = StartSpotPos; - - // Sometimes if StartSpot lies on a one-sided linedef, its position is considered - // out of bounds by GZDoom, which makes Level.PointInSector() produce unexpected - // results. In that case, we need to compensate. - if (!Level.IsPointInLevel((SpotPos, z))) - { - // Look at points in a 5x5 square around the StartSpot - for (int x = -2; x <= 2; x++) - { - for (int y = -2; y <= 2; y++) - { - SpotPos = StartSpotPos + (x, y); - - if (Level.IsPointInLevel((SpotPos, z))) - { - // Found a point within bounds, should be good enough - StartSector = Level.PointInSector(SpotPos); - break; - } - } - if (StartSector) - break; - } - } - else - { - StartSector = Level.PointInSector(SpotPos); - } - } - return StartSector; - } - - // Returns initial StartSpot position - Vector2 GetOrigin() - { - return StartSpotPos; - } - - // Returns current polyobject angle - double GetAngle() - { - double lineangle = VectorAngle(StartLine.Delta.x, StartLine.Delta.y); - return Actor.DeltaAngle(StartAngle, lineangle); - } - - // Returns current polyobject startspot position - Vector2 GetPos() - { - let spotdelta = StartSpotPos - VertexStartingPos[0]; - return StartLine.v1.p + Actor.RotateVector(spotdelta, GetAngle()); - } - - // Returns polyobject coordinates relative to the startspot - Vector2 GetPosDelta() - { - return GetPos() - StartSpotPos; - } - - // Returns last polyobject angle - double GetLastAngle() - { - return LastAngle; - } - - // Returns last polyobject startspot position - Vector2 GetLastPos() - { - return LastPos; - } - - // Returns last coordinates relative to the startspot - Vector2 GetLastPosDelta() - { - return LastPos - StartSpotPos; - } - - // Returns current polyobject velocity - Vector2 GetVel() - { - return StartLine.v1.p - VertexLastPos[0]; - } - - // Returns current polyobject rotation speed - double GetRotationSpeed() - { - return GetAngle() - LastAngle; - } - - // Returns whether the polyobject has moved from its spawn position - bool IsAtOrigin() - { - return (VertexStartingPos[0] == StartLine.v1.p && VertexStartingPos[1] == StartLine.v2.p); - } - - // Returns whether the polyobject is in motion - bool IsMoving() - { - return (GetPos() != GetLastPos() || GetAngle() != GetLastAngle()); - } - - // Moves the polyobject to specified location, with specified speed, and plays the - // specified sound of its sound sequence - // (i.e. for a door sound sequence, sndseqmode 0 plays the open sound, 1 plays the - // closing sound) - void MoveTo(Actor activator, Vector2 dest, int Speed, int sndseqmode = 0) - { - // Stop any polyobject movement - Level.ExecuteSpecial(Polyobj_Stop, activator, StartLine, Line.Front, PolyobjectNum); - // Move the polyobject - Level.ExecuteSpecial(Polyobj_OR_MoveTo, activator, StartLine, Line.Front, PolyobjectNum, - Speed, int(dest.x), int(dest.y)); - - // Polyobj_OR_MoveTo ignores the sound sequence set by the polyobject. - // Play the sound sequence manually inside the sector containing the polyobject. - if (SoundSequenceNum) - { - GetSector().StartSoundSequenceID(CHAN_AUTO, SoundSequenceNum, SeqNode.DOOR, sndseqmode, false); - } - } -} - -// Class for iterating over polyobjects -class swwm_PolyobjectIterator: Object -{ - private ThinkerIterator it; - static swwm_PolyobjectIterator Create() - { - let it = New('swwm_PolyobjectIterator'); - it.it = ThinkerIterator.Create('swwm_PolyobjectHandle'); - return it; - } - - swwm_PolyobjectHandle Next() - { - return swwm_PolyobjectHandle(it.Next()); - } - - void Reinit() - { - it.Reinit(); - } -} +class swwm_PolyobjectHandle: Thinker +{ + // This thinker keeps track of a polyobject's position, angle, movement speed etc. + // Instances of this thinker should only be created by the included map postprocessor + + enum EPolyobjType + { + POTYP_NORMAL = 9301, // Normal StartSpot + POTYP_CRUSH = 9302, // Crush StartSpot + POTYP_HURT = 9303 // Hurt StartSpot + } + + // Polyobject Number + int PolyobjectNum; + + // Line defining the polyobject (Polyobj_StartLine, or one of Polyobj_ExplicitLine) + Line StartLine; + + // [MK] All lines belonging to the polyobject + Array Lines; + + // Initial angle of StartLine + double StartAngle; + + // Last tic angle of StartLine + double LastAngle; + + // Starting positions of StartLine vertices + Vector2[2] VertexStartingPos; + + // Last tic positions of StartLine vertices + Vector2[2] VertexLastPos; + + // Last tic position of the polyobject + Vector2 LastPos; + + // SoundSequence number + int SoundSequenceNum; + + // StartSpot position + Vector2 StartSpotPos; + + // For bounds checking + double z; + + // Sector the polyobject spawns in () + Sector StartSector; + + // Polyobject type (normal, crush, hurt) + EPolyobjType Type; + + // Mirror Polyobject + swwm_PolyobjectHandle Mirror; + + // Circular linked list of attached Polyobject Effectors + swwm_PolyobjectEffector EffectorList; + + // Whether the initalization has finished + bool IsInitialized; + + // Creates a PolyobjectHandle + static swwm_PolyobjectHandle Create() + { + swwm_PolyobjectHandle po = swwm_PolyobjectHandle(new('swwm_PolyobjectHandle')); + // Sets the underlying Thinker StatNum to 127 so that LastPos, LastAngle etc. get + // updated after all the other thinkers. + po.ChangeStatNum(127); + + return po; + } + + // Returns a PolyobjectHandle corresponding to the provided polyobject number + // Returns NULL if no such handler exists. + static swwm_PolyobjectHandle FindPolyobj(int pobjnum) + { + swwm_PolyobjectHandle po; + let it = ThinkerIterator.Create('swwm_PolyobjectHandle'); + while ((po = swwm_PolyobjectHandle(it.Next())) != NULL) + { + if (po.PolyobjectNum == pobjnum) + return po; + } + return NULL; + } + + // Adds effector to the end of current effector list + void AddEffector(swwm_PolyobjectEffector effector) + { + + effector.Polyobject = self; + + // If effector list is empty, new effector becomes head of the list + if (EffectorList == NULL) + { + EffectorList = effector; + effector.Next = effector; + } + else + { + swwm_PolyobjectEffector e = EffectorList; + // Go through every effector until the last item + while (e.Next != EffectorList) + { + e = e.Next; + } + effector.Next = EffectorList; + e.Next = effector; + } + if (IsInitialized) + { + // If we're initialized, run the OnAdd effect immediately + effector.OnAdd(); + } + } + + // Finds effector of specified class, and returns it + swwm_PolyobjectEffector FindEffector(class effectorclass) + { + // No effectors? Nothing to find then + if (EffectorList == NULL) + return NULL; + + // Go through each effector + swwm_PolyobjectEffector e = EffectorList; + do + { + + // Effector is of specified class, return it + if (e is effectorclass) + return e; + + e = e.Next; + } + while (e != EffectorList); + return NULL; + } + + override void PostBeginPlay() + { + // Initialization shouldn't happen when reentering the map + if (Level.Time > 0) + return; + + // Map has no lines corresponding to this polyobject, destroy the handle + if (StartLine == NULL) + { + Destroy(); + return; + } + + // Using polyobject linedefs is the only way to track polyobject movements. + // All geometric calculations will be done relative to StartLine. + + // Store initial position and angle + StartAngle = VectorAngle(StartLine.Delta.x, StartLine.Delta.y); + VertexStartingPos[0] = VertexLastPos[0] = StartLine.v1.p; + VertexStartingPos[1] = VertexLastPos[1] = StartLine.v2.p; + + // Now that the map is loaded, it's safe to call effectors' OnAdd() methods + swwm_PolyobjectEffector e = EffectorList; + if (e != NULL) + { + do + { + e.OnAdd(); + e = e.Next; + } + while (e != EffectorList); + } + + // Done initializing + IsInitialized = true; + } + + override void Tick() + { + // Call PolyTick() for each effector + if (EffectorList != NULL) + { + swwm_PolyobjectEffector e = EffectorList; + do + { + e.PolyTick(); + e = e.Next; + } + while (e != EffectorList); + } + + // Store current position/angle to be used during the next tic + VertexLastPos[0] = StartLine.v1.p; + VertexLastPos[1] = StartLine.v2.p; + LastAngle = GetAngle(); + LastPos = GetPos(); + } + + override void OnDestroy() + { + // Clean up effectors first + swwm_PolyobjectEffector e = EffectorList; + if (e != NULL) + { + swwm_PolyobjectEffector next; + do + { + next = e.Next; + e.Destroy(); + e = next; + } + while (e != EffectorList); + } + } + + Sector GetSector() + { + if (StartSector == NULL) + { + Vector2 SpotPos = StartSpotPos; + + // Sometimes if StartSpot lies on a one-sided linedef, its position is considered + // out of bounds by GZDoom, which makes Level.PointInSector() produce unexpected + // results. In that case, we need to compensate. + if (!Level.IsPointInLevel((SpotPos, z))) + { + // Look at points in a 5x5 square around the StartSpot + for (int x = -2; x <= 2; x++) + { + for (int y = -2; y <= 2; y++) + { + SpotPos = StartSpotPos + (x, y); + + if (Level.IsPointInLevel((SpotPos, z))) + { + // Found a point within bounds, should be good enough + StartSector = Level.PointInSector(SpotPos); + break; + } + } + if (StartSector) + break; + } + } + else + { + StartSector = Level.PointInSector(SpotPos); + } + } + return StartSector; + } + + // Returns initial StartSpot position + Vector2 GetOrigin() + { + return StartSpotPos; + } + + // Returns current polyobject angle + double GetAngle() + { + double lineangle = VectorAngle(StartLine.Delta.x, StartLine.Delta.y); + return Actor.DeltaAngle(StartAngle, lineangle); + } + + // Returns current polyobject startspot position + Vector2 GetPos() + { + let spotdelta = StartSpotPos - VertexStartingPos[0]; + return StartLine.v1.p + Actor.RotateVector(spotdelta, GetAngle()); + } + + // Returns polyobject coordinates relative to the startspot + Vector2 GetPosDelta() + { + return GetPos() - StartSpotPos; + } + + // Returns last polyobject angle + double GetLastAngle() + { + return LastAngle; + } + + // Returns last polyobject startspot position + Vector2 GetLastPos() + { + return LastPos; + } + + // Returns last coordinates relative to the startspot + Vector2 GetLastPosDelta() + { + return LastPos - StartSpotPos; + } + + // Returns current polyobject velocity + Vector2 GetVel() + { + return StartLine.v1.p - VertexLastPos[0]; + } + + // Returns current polyobject rotation speed + double GetRotationSpeed() + { + return GetAngle() - LastAngle; + } + + // Returns whether the polyobject has moved from its spawn position + bool IsAtOrigin() + { + return (VertexStartingPos[0] == StartLine.v1.p && VertexStartingPos[1] == StartLine.v2.p); + } + + // Returns whether the polyobject is in motion + bool IsMoving() + { + return (GetPos() != GetLastPos() || GetAngle() != GetLastAngle()); + } + + // Moves the polyobject to specified location, with specified speed, and plays the + // specified sound of its sound sequence + // (i.e. for a door sound sequence, sndseqmode 0 plays the open sound, 1 plays the + // closing sound) + void MoveTo(Actor activator, Vector2 dest, int Speed, int sndseqmode = 0) + { + // Stop any polyobject movement + Level.ExecuteSpecial(Polyobj_Stop, activator, StartLine, Line.Front, PolyobjectNum); + // Move the polyobject + Level.ExecuteSpecial(Polyobj_OR_MoveTo, activator, StartLine, Line.Front, PolyobjectNum, + Speed, int(dest.x), int(dest.y)); + + // Polyobj_OR_MoveTo ignores the sound sequence set by the polyobject. + // Play the sound sequence manually inside the sector containing the polyobject. + if (SoundSequenceNum) + { + GetSector().StartSoundSequenceID(CHAN_AUTO, SoundSequenceNum, SeqNode.DOOR, sndseqmode, false); + } + } +} + +// Class for iterating over polyobjects +class swwm_PolyobjectIterator: Object +{ + private ThinkerIterator it; + static swwm_PolyobjectIterator Create() + { + let it = New('swwm_PolyobjectIterator'); + it.it = ThinkerIterator.Create('swwm_PolyobjectHandle'); + return it; + } + + swwm_PolyobjectHandle Next() + { + return swwm_PolyobjectHandle(it.Next()); + } + + void Reinit() + { + it.Reinit(); + } +} diff --git a/zscript/swwm_Polyobjects/PolyobjectMapPostprocessor.zs b/zscript/swwm_Polyobjects/PolyobjectMapPostprocessor.zs index 13f78632f..7e9335d42 100644 --- a/zscript/swwm_Polyobjects/PolyobjectMapPostprocessor.zs +++ b/zscript/swwm_Polyobjects/PolyobjectMapPostprocessor.zs @@ -1,123 +1,123 @@ -// Creates a PolyobjectHandle for every polyobject in the map -class swwm_PolyobjectHandlePostProcessor: LevelPostProcessor -{ - protected void Apply(Name checksum, String mapname) - { - Array pobjnums; - Array pobjhandles; - - // Make sure initialization doesn't happen when reentering a map - if (Level.Time > 0) - return; - - // Look for Polyobject StartSpots and create a handle for each - for (int i = 0; i < GetThingCount(); i++) - { - // Ignore every thing that isn't a Polyobject StartSpot - int ednum = GetThingEdNum(i); - // [MK] hotfix for this to recognize hexen polyobjects - if (gameinfo.gametype&GAME_Hexen) - { - if (ednum == 3001) ednum = swwm_PolyobjectHandle.POTYP_NORMAL; - else if (ednum == 3002) ednum = swwm_PolyobjectHandle.POTYP_CRUSH; - } - if (ednum < swwm_PolyobjectHandle.POTYP_NORMAL || ednum > swwm_PolyobjectHandle.POTYP_HURT) - continue; - - // Create a PolyobjectHandle - swwm_PolyobjectHandle handle = swwm_PolyobjectHandle.Create(); - - // Get polyobject number from StartSpot angle - handle.PolyobjectNum = GetThingAngle(i); - - // Store StartSpot position - Vector3 pos = GetThingPos(i); - handle.StartSpotPos = pos.xy; - handle.z = pos.z; - - // Store StartSpot type (normal, crush, hurt) - handle.Type = ednum; - - // Append polyobject number and corresponding handle to the respective arrays - pobjnums.Push(handle.PolyobjectNum); - pobjhandles.Push(handle); - } - - // Look for Polyobj_StartLine/Polyobj_ExplicitLine lines - for (int i = 0; i < Level.Lines.Size(); i++) - { - Line line = Level.Lines[i]; - - // Ignore every line that doesn't have a Polyobj_StartLine or Polyobj_ExplicitLine - // line special - if (line.Special != Polyobj_StartLine && line.Special != Polyobj_ExplicitLine) - continue; - - // Get polyobject number - // (Args[0] for both Polyobj_StartLine and Polyobj_ExplicitLine) - int pobjnum = line.Args[0]; - - // Find the array index of the corresponding handle - int pobjhandleindex = pobjnums.Find(pobjnum); - if (pobjhandleindex >= pobjnums.Size()) - continue; // Polyobject doesn't have a corresponding StartSpot - - swwm_PolyobjectHandle handle = pobjhandles[pobjhandleindex]; - - // Get mirror polyobject number - // (Args[1] for Polyobj_StartLine, Args[2] for Polyobj_ExplicitLine) - int mirrorpobjnum = line.Special == Polyobj_StartLine ? line.Args[1] : line.Args[2]; - if (mirrorpobjnum != 0) - { - // Find the array index of the mirror polyobject handle - int mirrorpobjhandleindex = pobjnums.Find(mirrorpobjnum); - if (mirrorpobjhandleindex < pobjnums.Size()) - { - // Mirror polyobject handle exists, store it - handle.Mirror = pobjhandles[mirrorpobjhandleindex]; - } - } - - // Get sound sequence number and store it - // (Args[2] for Polyobj_StartLine, Args[3] for Polyobj_ExplicitLine) - int soundseq = line.Special == Polyobj_StartLine ? line.Args[2] : line.Args[3]; - handle.SoundSequenceNum = soundseq; - - // Store the line - handle.StartLine = line; - - // [MK] the library doesn't store ALL lines belonging to the polyobject, but we need them - handle.Lines.Push(line); - - // [MK] collect all connected lines if this is Polyobj_StartLine - if ( line.Special != Polyobj_StartLine ) - continue; - - bool newlines; - do - { - newlines = false; - for (int j = 0; j < Level.Lines.Size(); j++) - { - Line linea = Level.Lines[j]; - if (handle.Lines.Find(linea) < handle.Lines.Size()) - continue; - bool nomatches = true; - for (int k = 0; k < handle.Lines.Size(); k++) - { - Line lineb = handle.Lines[k]; - if ((linea.v1 != lineb.v1) && (linea.v1 != lineb.v2) && (linea.v2 != lineb.v1) && (linea.v2 != lineb.v2)) - continue; - nomatches = false; - break; - } - if (nomatches) - continue; - newlines = true; - handle.Lines.Push(linea); - } - } - while (newlines); - } - } -} +// Creates a PolyobjectHandle for every polyobject in the map +class swwm_PolyobjectHandlePostProcessor: LevelPostProcessor +{ + protected void Apply(Name checksum, String mapname) + { + Array pobjnums; + Array pobjhandles; + + // Make sure initialization doesn't happen when reentering a map + if (Level.Time > 0) + return; + + // Look for Polyobject StartSpots and create a handle for each + for (uint i = 0; i < GetThingCount(); i++) + { + // Ignore every thing that isn't a Polyobject StartSpot + int ednum = GetThingEdNum(i); + // [MK] hotfix for this to recognize hexen polyobjects + if (gameinfo.gametype&GAME_Hexen) + { + if (ednum == 3001) ednum = swwm_PolyobjectHandle.POTYP_NORMAL; + else if (ednum == 3002) ednum = swwm_PolyobjectHandle.POTYP_CRUSH; + } + if (ednum < swwm_PolyobjectHandle.POTYP_NORMAL || ednum > swwm_PolyobjectHandle.POTYP_HURT) + continue; + + // Create a PolyobjectHandle + swwm_PolyobjectHandle handle = swwm_PolyobjectHandle.Create(); + + // Get polyobject number from StartSpot angle + handle.PolyobjectNum = GetThingAngle(i); + + // Store StartSpot position + Vector3 pos = GetThingPos(i); + handle.StartSpotPos = pos.xy; + handle.z = pos.z; + + // Store StartSpot type (normal, crush, hurt) + handle.Type = ednum; + + // Append polyobject number and corresponding handle to the respective arrays + pobjnums.Push(handle.PolyobjectNum); + pobjhandles.Push(handle); + } + + // Look for Polyobj_StartLine/Polyobj_ExplicitLine lines + for (int i = 0; i < Level.Lines.Size(); i++) + { + Line line = Level.Lines[i]; + + // Ignore every line that doesn't have a Polyobj_StartLine or Polyobj_ExplicitLine + // line special + if (line.Special != Polyobj_StartLine && line.Special != Polyobj_ExplicitLine) + continue; + + // Get polyobject number + // (Args[0] for both Polyobj_StartLine and Polyobj_ExplicitLine) + int pobjnum = line.Args[0]; + + // Find the array index of the corresponding handle + int pobjhandleindex = pobjnums.Find(pobjnum); + if (pobjhandleindex >= pobjnums.Size()) + continue; // Polyobject doesn't have a corresponding StartSpot + + swwm_PolyobjectHandle handle = pobjhandles[pobjhandleindex]; + + // Get mirror polyobject number + // (Args[1] for Polyobj_StartLine, Args[2] for Polyobj_ExplicitLine) + int mirrorpobjnum = line.Special == Polyobj_StartLine ? line.Args[1] : line.Args[2]; + if (mirrorpobjnum != 0) + { + // Find the array index of the mirror polyobject handle + int mirrorpobjhandleindex = pobjnums.Find(mirrorpobjnum); + if (mirrorpobjhandleindex < pobjnums.Size()) + { + // Mirror polyobject handle exists, store it + handle.Mirror = pobjhandles[mirrorpobjhandleindex]; + } + } + + // Get sound sequence number and store it + // (Args[2] for Polyobj_StartLine, Args[3] for Polyobj_ExplicitLine) + int soundseq = line.Special == Polyobj_StartLine ? line.Args[2] : line.Args[3]; + handle.SoundSequenceNum = soundseq; + + // Store the line + handle.StartLine = line; + + // [MK] the library doesn't store ALL lines belonging to the polyobject, but we need them + handle.Lines.Push(line); + + // [MK] collect all connected lines if this is Polyobj_StartLine + if ( line.Special != Polyobj_StartLine ) + continue; + + bool newlines; + do + { + newlines = false; + for (int j = 0; j < Level.Lines.Size(); j++) + { + Line linea = Level.Lines[j]; + if (handle.Lines.Find(linea) < handle.Lines.Size()) + continue; + bool nomatches = true; + for (int k = 0; k < handle.Lines.Size(); k++) + { + Line lineb = handle.Lines[k]; + if ((linea.v1 != lineb.v1) && (linea.v1 != lineb.v2) && (linea.v2 != lineb.v1) && (linea.v2 != lineb.v2)) + continue; + nomatches = false; + break; + } + if (nomatches) + continue; + newlines = true; + handle.Lines.Push(linea); + } + } + while (newlines); + } + } +} diff --git a/zscript/swwm_Polyobjects/Polyobjects.zs b/zscript/swwm_Polyobjects/Polyobjects.zs index 56460e605..7bd8ac962 100644 --- a/zscript/swwm_Polyobjects/Polyobjects.zs +++ b/zscript/swwm_Polyobjects/Polyobjects.zs @@ -1,3 +1,3 @@ -#include "zscript/swwm_Polyobjects/PolyobjectHandle.zs" -#include "zscript/swwm_Polyobjects/PolyobjectMapPostprocessor.zs" -#include "zscript/swwm_Polyobjects/PolyobjectEffector.zs" +#include "zscript/swwm_Polyobjects/PolyobjectHandle.zs" +#include "zscript/swwm_Polyobjects/PolyobjectMapPostprocessor.zs" +#include "zscript/swwm_Polyobjects/PolyobjectEffector.zs" diff --git a/zscript/swwm_blod.zsc b/zscript/swwm_blod.zsc index f26b80b02..0470f94e8 100644 --- a/zscript/swwm_blod.zsc +++ b/zscript/swwm_blod.zsc @@ -1,19 +1,16 @@ // Gore FX ported over from Soundless Mound, with some edits // Base blood actor -Class mkBlood : Actor +Class mkBlood : SWWMNonInteractiveActor { Default { - +NOBLOCKMAP; - +NOGRAVITY; - +NOTELEPORT; +PUFFGETSOWNER; } - action void A_Bleed( int str = 1 ) + void A_Bleed( int str = 1 ) { if ( !target ) return; - let b = Spawn("mkBloodSpray",pos); + let b = Spawn('mkBloodSpray',pos); Vector2 dirto = target.Vec2To(self).unit(); b.angle = atan2(dirto.y,dirto.x); b.pitch = FRandom[Blood](-60,30); @@ -25,28 +22,33 @@ Class mkBlood : Actor b.CopyBloodColor(target); int numpt = Random[Blood](2,4)+str*2; double sstr = (2.5+str)/3.; - Vector3 vdir = (cos(b.angle)*cos(b.pitch),sin(b.angle)*cos(b.pitch),-sin(b.pitch)); + Vector3 vdir = SWWMUtility.Vec3FromAngles(b.angle,b.pitch); + TextureID pufftex[8]; + for ( int i=0; i<8; i++ ) pufftex[i] = TexMan.CheckForTexture("graphics/Particles/xpuff"..i..".png"); + FSpawnParticleParams puff; + puff.color1 = b.fillcolor; + puff.style = STYLE_Shaded; + puff.accel = (0,0,-.25); + puff.startalpha = .75; + puff.fadestep = -1; + puff.pos = pos; for ( int i=0; i=.5; j-=.125 ) - A_SpawnParticle(b.fillcolor,0,int(12*sstr),2.*str*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.75,-1,-.02*sstr*j); + { + puff.texture = pufftex[Random[Blood](0,7)]; + puff.lifetime = int(12*sstr); + puff.size = 2.*str*FRandom[Blood](.6,1.4)*j; + puff.vel = ndir*j; + puff.sizestep = -.02*sstr*j; + level.SpawnParticle(puff); + } } - let s = Spawn("mkBloodSmoke",pos); - s.SetShade(b.fillcolor); + let s = mkBloodSmoke(SWWMStaticSprite.SpawnAt('mkBloodSmoke',pos)); + s.scolor = b.fillcolor; s.scale *= .4*str; - s.special1 += str-1; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } + s.thickness = str-1; } States { @@ -61,7 +63,7 @@ Class mkBlood : Actor } // a burst of blood attached to a bleeding actor -Class mkBloodSpray : Actor +Class mkBloodSpray : SWWMNonInteractiveActor { double str; int cnt; @@ -69,13 +71,6 @@ Class mkBloodSpray : Actor double baseang; color shadecol; - Default - { - +NOBLOCKMAP; - +NOGRAVITY; - +NOTELEPORT; - +NOINTERACTION; - } override void PostBeginPlay() { if ( !target ) @@ -103,21 +98,25 @@ Class mkBloodSpray : Actor Destroy(); return; } + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; - Vector3 setofs; - setofs = (cos(target.angle)*attachofs.x+sin(target.angle)*attachofs.y,sin(target.angle)*attachofs.x-cos(target.angle)*attachofs.y,attachofs.z); + Vector3 setofs = SWWMUtility.RotateVector3(attachofs,target.angle); SetOrigin(level.Vec3Offset(target.pos,setofs),false); int sz = max(1,args[0]/2); double ang, pt; int cnt = sz-Random[Blood](0,4); for ( int i=0; i 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; if ( killme ) A_FadeOut(.01); if ( dead ) @@ -185,7 +184,7 @@ Class mkBloodDrop : Actor if ( special1-- ) return; special2 += 10; special1 = Random[Blood](20,30)+special2; - let d = Spawn("mkBloodDrop",Vec3Offset(0,0,-2)); + let d = Spawn('mkBloodDrop',Vec3Offset(0,0,-2)); d.master = self; d.SetShade(fillcolor); d.CopyBloodColor(self); @@ -195,6 +194,13 @@ Class mkBloodDrop : Actor } else { + if ( !pufftex[0] ) + { + for ( int i=0; i<8; i++ ) pufftex[i] = TexMan.CheckForTexture("graphics/Particles/xpuff"..i..".png"); + puff.color1 = fillcolor; + puff.style = STYLE_Shaded; + puff.fadestep = -1; + } // gravitational pull if ( waterlevel <= 0 ) vel.z -= GetGravity(); // linetrace-based movement (hopefully more reliable than traditional methods) @@ -209,22 +215,7 @@ Class mkBloodDrop : Actor LineTrace(ang,spd,pt,TRF_THRUACTORS|TRF_THRUHITSCAN|TRF_ABSPOSITION,newpos.z,newpos.x,newpos.y,d); if ( d.HitType != TRACE_HitNone ) { - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); newpos = d.HitLocation+hitnormal; } else newpos = level.Vec3Offset(newpos,vel); @@ -232,11 +223,18 @@ Class mkBloodDrop : Actor Vector3 ndiff = level.Vec3Diff(newpos,pos); double ndist = ndiff.length(); ndiff /= ndist; + puff.lifetime = 10; + puff.startalpha = .5*alpha; + puff.sizestep = -1.*scale.x; + puff.accel = (0,0,-.5); for ( int i=0; i=.5; j-=.125 ) - A_SpawnParticle(fillcolor,0,20,10.*scale.x*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.5*alpha,-1,-1.*scale.x*j); + { + puff.texture = pufftex[Random[Blood](0,7)]; + puff.size = 10.*scale.x*FRandom[Blood](.6,1.4)*j; + puff.pos = pos; + puff.vel = ndir*j; + puff.sizestep = -1.*scale.x*j; + level.SpawnParticle(puff); + } } Destroy(); return; @@ -293,13 +302,23 @@ Class mkBloodDrop : Actor } SWWMUtility.SetToSlope(self,FRandom[Blood](0,360)); A_SetRenderStyle(1.,STYLE_Shaded); - frame = Random[Blood](5,8); + frame = Random[Blood](5,12); int numpt = Random[Blood](4,8); + puff.lifetime = 20; + puff.startalpha = .5*alpha; + puff.pos = pos; + puff.accel = (0,0,-.25); for ( int i=0; i=.5; j-=.125 ) - A_SpawnParticle(fillcolor,0,20,10.*scale.x*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.5*alpha,-1,-1.*scale.x*j); + { + puff.texture = pufftex[Random[Blood](0,7)]; + puff.size = 10.*scale.x*FRandom[Blood](.6,1.4)*j; + puff.vel = ndir*j; + puff.sizestep = -1.*scale.x*j; + level.SpawnParticle(puff); + } } vel *= 0; return; @@ -338,13 +357,23 @@ Class mkBloodDrop : Actor } SWWMUtility.SetToSlope(self,FRandom[Blood](0,360),true); A_SetRenderStyle(1.,STYLE_Shaded); - frame = Random[Blood](5,8); + frame = Random[Blood](13,20); int numpt = Random[Blood](4,8); + puff.lifetime = 20; + puff.startalpha = .5*alpha; + puff.pos = pos; + puff.accel = (0,0,-.25); for ( int i=0; i=.5; j-=.125 ) - A_SpawnParticle(fillcolor,0,20,10.*scale.x*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.5*alpha,-1,-1.*scale.x*j); + { + puff.texture = pufftex[Random[Blood](0,7)]; + puff.size = 10.*scale.x*FRandom[Blood](.6,1.4)*j; + puff.vel = ndir*j; + puff.sizestep = -1.*scale.x*j; + level.SpawnParticle(puff); + } } vel *= 0; return; @@ -363,11 +392,21 @@ Class mkBloodDrop : Actor TraceBleedAngle(20,atan2(walldir.y,walldir.x),0); A_StartSound("misc/blooddrop",volume:.1); int numpt = Random[Blood](4,8); + puff.lifetime = 20; + puff.startalpha = .5*alpha; + puff.pos = pos; + puff.accel = (0,0,-.25); for ( int i=0; i=.5; j-=.125 ) - A_SpawnParticle(fillcolor,0,20,10.*scale.x*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.5*alpha,-1,-1.*scale.x*j); + { + puff.texture = pufftex[Random[Blood](0,7)]; + puff.size = 10.*scale.x*FRandom[Blood](.6,1.4)*j; + puff.vel = ndir*j; + puff.sizestep = -1.*scale.x*j; + level.SpawnParticle(puff); + } } Destroy(); return; @@ -394,7 +433,7 @@ Class mkBloodDrop : Actor Super.PostBeginPlay(); SWWMHandler.QueueBlod(self); int jumps = Random[Blood](0,3); - state dest = ResolveState("Spawn"); + state dest = ResolveState('Spawn'); SetState(dest+jumps); } override void OnDestroy() @@ -411,80 +450,59 @@ Class mkBloodDrop : Actor } // chunky salsa in the air -Class mkBloodSmoke : Actor +Class mkBloodSmoke : SWWMStaticSprite { - Default - { - +NOBLOCKMAP; - +NOGRAVITY; - +NOINTERACTION; - +NOTELEPORT; - +FORCEXYBILLBOARD; - +ROLLSPRITE; - Scale .5; - Alpha .35; - RenderStyle "Shaded"; - } - override void PostBeginPlay() - { - int jumps = Random[Blood](0,19); - state dest = ResolveState("Spawn"); - SetState(dest+jumps); - roll = FRandom[Blood](0,360); - } - override void Tick() - { - if ( isFrozen() ) return; - Vector3 newp = level.Vec3Offset(pos,vel); - if ( level.IsPointInLevel(newp) ) SetOrigin(newp,true); - UpdateWaterLevel(); - if ( waterlevel > 0 ) A_FadeOut(); - A_FadeOut(.04/max(1.,special1)); - A_SetScale(scale.x*(1.+.04/max(1.,special1))); - vel *= 1.-.04/max(1.,special1); - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - BSMK ABCDEFGHIJKLMNOPQRST -1; - Stop; - } -} + int thickness; -Class mkBloodSmoke2 : mkBloodSmoke -{ - Default + override void SetupSprite() { - Scale .8; - Alpha 1.; + texture = TexMan.CheckForTexture(String.Format("MSMK%c0",0x41+Random[Blood](0,7))); + Scale = (.5,.5); + Alpha = .35; + SetRenderStyle(STYLE_Shaded); + scolor = gameinfo.defaultbloodcolor; + Flags |= SPF_ROLL; + bCheckWater = true; + bWallStop = true; + } + + override void OnTick() + { + if ( lastwater ) alpha = max(0.,alpha-.1); + alpha = max(0.,alpha-(.04/max(1.,thickness))); + scale *= 1.+(.04/max(1.,thickness)); + vel *= 1.-(.04/max(1.,thickness)); + if ( alpha <= 0. ) Destroy(); } } // flying gibs -// inspired by Lud's Universal Gibs Class mkFlyingGib : Actor { + Mixin SWWMMissileFix; + bool killme; int lastbleed; color shadecol; bool bleeding; - double rollvel; + double rollvel, pitchvel; mkFlyingGib prevmeat, nextmeat; Vector3 oldpos; + TextureID pufftex[8]; + FSpawnParticleParams puff; override void PostBeginPlay() { Super.PostBeginPlay(); - frame = Random[Blood](0,5); + for ( int i=0; i<8; i++ ) pufftex[i] = TexMan.CheckForTexture("graphics/Particles/xpuff"..i..".png"); + puff.style = STYLE_Shaded; + puff.lifetime = 40; + puff.accel = (0,0,-.25); + puff.fadestep = -1; + frame = Random[Blood](0,7); double ang = FRandom[Gibs](0,360); double pt = FRandom[Gibs](-60,20); - Vector3 dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt)); + Vector3 dir = SWWMUtility.Vec3FromAngles(ang,pt); vel += dir*FRandom[Gibs](4.,8.); if ( master ) { @@ -492,9 +510,11 @@ Class mkFlyingGib : Actor CopyBloodColor(master); } rollvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); + pitchvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); scale *= FRandom[Gibs](.5,1.5); if ( master && master.bloodcolor ) shadecol = Color(master.bloodcolor.r/2,master.bloodcolor.g/2,master.bloodcolor.b/2); else shadecol = Color(80,0,0); + puff.color1 = shadecol; bleeding = true; if ( Random[Blood](0,1) ) bXFlip = true; SWWMHandler.QueueMeat(self); @@ -510,19 +530,20 @@ Class mkFlyingGib : Actor { oldpos = pos; Super.Tick(); - if ( isFrozen() ) return; + if ( isFrozen() || (freezetics > 0) ) return; if ( killme ) A_FadeOut(.01); - if ( CurState == ResolveState("Death2") ) + if ( CurState == ResolveState('Death2') ) { if ( vel.length() < .1 ) bleeding = false; return; } roll += rollvel; + pitch += pitchvel; if ( waterlevel > 0 ) { - rollvel *= .98; - vel.xy *= .98; + rollvel *= .99; + pitchvel *= .99; return; } if ( !bleeding ) return; @@ -532,8 +553,13 @@ Class mkFlyingGib : Actor for ( int i=0; i level.maptime ) return; - invoker.lastbleed = level.maptime+5; + rollvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); + pitchvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); + if ( lastbleed > level.maptime ) return; + lastbleed = level.maptime+5; TraceBleedAngle(int(vel.length()),angle+180,-pitch); } @@ -567,7 +594,7 @@ Class mkFlyingGib : Actor Mass 10; Scale .75; Gravity .5; - BounceType "Doom"; + BounceType 'Doom'; BounceFactor .2; +MISSILE; +DROPOFF; @@ -585,10 +612,10 @@ Class mkFlyingGib : Actor States { Spawn: - MEAT # 1; + XZW1 # 1; Wait; Bounce: - MEAT # 0 + XZW1 # 0 { A_Bleed(); A_StartSound("misc/gibhit",CHAN_BODY,CHANF_OVERLAP); @@ -598,10 +625,10 @@ Class mkFlyingGib : Actor } Goto Spawn; Death: - MEAT # 1 A_JumpIf(pos.z<=floorz,"Death2"); + XZW1 # 1 A_JumpIf(pos.z<=floorz,'Death2'); Wait; Death2: - MEAT # -1 + XZW1 # -1 { A_StartSound("misc/gibhit",CHAN_BODY,CHANF_OVERLAP); pitch = Random[Gibs](-5,5); @@ -609,58 +636,60 @@ Class mkFlyingGib : Actor else roll = Random[Gibs](175,185); A_Stop(); // floor drop - let b = Spawn("mkBloodDrop",pos); + let b = Spawn('mkBloodDrop',pos); b.scale *= 2.0; - b.SetShade(invoker.shadecol); + b.SetShade(shadecol); } Stop; } } // Manually added gibbing -Class mkGibber : Actor +Class mkGibber : SWWMNonInteractiveActor { Actor Gibbed; int gibcount, gibsize; int delay; color shadecol; - Class gibtype; // allow custom gib types (will be used for monster pack) + meta Class gibtype; // allow custom gib types (will be used for monster pack) bool psnd; + bool mksplat; Property GibType: gibtype; virtual void BurstGibs() { - Actor a; double ang, pt; Vector3 dir; - bool dummy; int bloodthrottle = 0, gibthrottle = 0; - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); if ( hnd ) { if ( hnd.oldmaxblood != 0 ) - bloodthrottle = (hnd.blods_realcnt-hnd.oldmaxblood)/100; + bloodthrottle = max((hnd.blods_realcnt-hnd.oldmaxblood)/100,0); if ( hnd.oldmaxgibs != 0 ) - gibthrottle = (hnd.meats_realcnt-hnd.oldmaxgibs)/100; + gibthrottle = max((hnd.meats_realcnt-hnd.oldmaxgibs)/100,0); } for ( int i=0; i 2. ) a.vel = a.vel.unit()*2.; a.vel += dir*FRandom[Gibs](.2,.8); - a.SetShade(shadecol); - a.special1 += Random[Gibs](1,3); + a.scolor = shadecol; + a.thickness = Random[Gibs](1,3); } for ( int i=0; i 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; if ( !gibbed ) { @@ -720,6 +755,13 @@ Class mkGibber : Actor A_StartSound("misc/gibber",CHAN_VOICE,CHANF_OVERLAP); psnd = true; } + if ( mksplat ) + { + let s = Spawn('mkBloodBlast',pos); + s.SetShade(shadecol); + s.master = gibbed; + mksplat = false; + } BurstGibs(); if ( reactiontime <= 0 ) Destroy(); @@ -727,129 +769,70 @@ Class mkGibber : Actor Default { - +NOBLOCKMAP; - +NOGRAVITY; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; Radius 32; Height 16; - mkGibber.GibType "mkFlyingGib"; + mkGibber.GibType 'mkFlyingGib'; + } +} + +// for exploding Cyberdemon/Spider +Class mkBloodBlast : SWWMNonInteractiveActor +{ + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + double fz = CurSector.floorplane.ZAtPoint(pos.xy); + if ( fz != pos.z ) SetOrigin((pos.x,pos.y,fz),true); + if ( (waterlevel > 0) || GetFloorTerrain().isliquid ) + A_FadeOut(); + if ( !master ) A_FadeOut(.01); + } + override void PostBeginPlay() + { + double fz = CurSector.floorplane.ZAtPoint(pos.xy); + SetZ(fz); + prev.z = fz; + A_QueueCorpse(); + SWWMUtility.SetToSlope(self,FRandom[Blood](0,360)); + } + default + { + RenderStyle 'Shaded'; + StencilColor "80 00 00"; + } + States + { + Spawn: + XZW1 A -1; + Stop; } } // bare actors used for copying blood color to vanilla monsters -Class GreenBloodReference : Actor +Class GreenBloodReference : Actor abstract { Default { - BloodColor "Green"; + BloodColor "40 80 30"; } } -Class BlueBloodReference : Actor +Class BlueBloodReference : Actor abstract { Default { - BloodColor "Blue"; + BloodColor "00 00 A0"; } } -Class PurpleBloodReference : Actor +Class PurpleBloodReference : Actor abstract { Default { - BloodColor "Purple"; - } -} - -// bare actor used for extra gib deaths -Class ExtraGibDeaths : Actor -{ - StateLabel gibstate; - - static void GibThis( Actor a, Statelabel st ) - { - if ( !a ) return; - let g = ExtraGibDeaths(Spawn("ExtraGibDeaths")); - g.master = a; - g.gibstate = st; - } - - void A_DoGib() - { - if ( !master ) return; - master.SetState(FindState(gibstate)); - } - - States - { - Spawn: - TNT1 A 1 NoDelay; - TNT1 A 1 A_DoGib(); - Stop; - DemonXDeath: - SARX A 5; - SARX B 5 A_XScream(); - SARX C 5 A_NoBlocking(); - SARX DEF 5; - SARX G -1; - Stop; - KnightXDeath: - BO2X A 5; - BO2X B 5 A_XScream(); - BO2X C 5; - BO2X D 5 A_NoBlocking(); - BO2X EFGH 5; - BO2X I -1; - Stop; - BaronXDeath: - BOSX A 5; - BOSX B 5 A_XScream(); - BOSX C 5; - BOSX D 5 A_NoBlocking(); - BOSX EFGH 5; - BOSX I -1 A_BossDeath(); - Stop; - CacoXDeath: - CACX A 5; - CACX B 5 A_XScream(); - CACX C 5 A_NoBlocking(); - CACX D 4; - CACX E 3; - CACX F 4; - CACX G 5; - CACX H -1; - Stop; - BonerXDeath: - REVX A 3; - REVX B 4 A_XScream(); - REVX C 5 A_NoBlocking(); - REVX DE 5; - REVX F -1; - Stop; - VileXDeath: - VILX A 5; - VILX B 5 A_XScream(); - VILX C 5 A_NoBlocking(); - VILX DEF 5; - VILX G -1; - Stop; - ArachXDeath: - BSPX A 5; - BSPX A 5 A_XScream(); - BSPX B 8 A_NoBlocking(); - BSPX C 6; - BSPX DE 6 BRIGHT; - BSPX F 5 BRIGHT; - BSPX GH 4 BRIGHT; - BSPX I -1 A_BossDeath(); - Stop; - FatsoXDeath: - FATX A 5; - FATX B 5 A_XScream(); - FATX C 5 A_NoBlocking(); - FATX DE 5; - FATX F -1 A_BossDeath(); - Stop; + BloodColor "70 10 A0"; } } @@ -863,7 +846,7 @@ Class CorpseFallTracker : Thinker static void TrackBody( Actor b ) { if ( !b ) return; - let cft = new("CorpseFallTracker"); + let cft = new('CorpseFallTracker'); cft.ChangeStatNum(STAT_USER); cft.mybody = b; cft.lastvelz = b.vel.z; @@ -885,6 +868,134 @@ Class CorpseFallTracker : Thinker // wait until body is dead on floor and at the last state of animation if ( (mybody.Health > 0) || isflying || (mybody.tics != -1) || (mybody.vel.length() > 0) ) return; + let b = mybody.Spawn('mkBloodPool',mybody.pos); + Color shadecol; + if ( mybody.bloodcolor ) shadecol = Color(mybody.bloodcolor.r/2,mybody.bloodcolor.g/2,mybody.bloodcolor.b/2); + else shadecol = Color(80,0,0); + mkBloodPool(b).stepcol = shadecol; + b.master = mybody; + b.A_SetScale(mybody.default.radius/16.); + // futureproofing hack (heh) + let mtype = SWWMUtility.GetParentClassBefore(mybody.GetClass(),'Actor'); + if ( mtype.GetClassName() == 'SWWMMonster' ) + { + b.A_SetRenderStyle(1.,STYLE_Shaded); + b.SetShade(shadecol); + } + else b.translation = mybody.bloodtranslation; Destroy(); } } + +// Blood pool +Class mkBloodPool : SWWMNonInteractiveActor +{ + double basesz, sz, accel; + Color stepcol; + mkBloodPool prevpool, nextpool; + bool killme, bRaised; + + Property BaseAccel : accel; + + override void OnDestroy() + { + SWWMHandler.DeQueuePool(self); + Super.OnDestroy(); + } + + override void PostBeginPlay() + { + double fz = CurSector.floorplane.ZAtPoint(pos.xy); + SetZ(fz); + prev.z = fz; + basesz = scale.x; + sz = .01; + A_SetScale(sz); + SWWMUtility.SetToSlope(self,FRandom[Blood](0,360)); + SWWMHandler.QueuePool(self); + } + + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + double fz = CurSector.floorplane.ZAtPoint(pos.xy); + if ( fz != pos.z ) SetOrigin((pos.x,pos.y,fz),true); + if ( (waterlevel > 0) || GetFloorTerrain().isliquid ) + A_FadeOut(); + if ( killme ) A_FadeOut(.01); + if ( master && (master.Health > 0) ) + { + bRaised = true; + master = null; + } + if ( bRaised || !master ) + A_FadeOut(); + if ( accel <= 0. ) return; + sz += accel; + double fact = min(special1++/1200.,1.); + accel = SWWMUtility.Lerp(default.accel,0.,fact*fact); + A_SetScale(basesz*sz); + A_SetSize(50.*basesz*sz); + } + + Default + { + Radius 1; + Height 1; + StencilColor "80 00 00"; + mkBloodPool.BaseAccel .0006; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} + +// Bloody footsteps for player +// (Spawning handled also by player) +Class mkBloodStep : SWWMNonInteractiveActor +{ + override void PostBeginPlay() + { + double fz = CurSector.floorplane.ZAtPoint(pos.xy); + SetZ(fz); + prev.z = fz; + } + + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + double fz = CurSector.floorplane.ZAtPoint(pos.xy); + if ( fz != pos.z ) SetOrigin((pos.x,pos.y,fz),true); + if ( (waterlevel > 0) || GetFloorTerrain().isliquid ) + A_FadeOut(); + special1++; + // start fading out after one whole minute + if ( special1 > 2100 ) A_FadeOut(.01); + } + + Default + { + RenderStyle 'Shaded'; + StencilColor "80 00 00"; + } + + States + { + Spawn: + XZW1 A -1; + Stop; + } +} diff --git a/zscript/swwm_common.zsc b/zscript/swwm_common.zsc index 9e3a9543e..3b80d2d82 100644 --- a/zscript/swwm_common.zsc +++ b/zscript/swwm_common.zsc @@ -3,7 +3,7 @@ // extra sound channels for the mod enum ESWWMGZChannels { - CHAN_YOUDONEFUCKEDUP = 63200, // exception handler + CHAN_YABLEWIT = 63200, // exception handler CHAN_DEMOVOICE = 63201, // demolitionist voices CHAN_FOOTSTEP = 63202, // footstep sounds and others CHAN_WEAPONEXTRA = 63203, // additional weapon sounds (usually loops) @@ -17,14 +17,98 @@ enum ESWWMGZChannels CHAN_AMBEXTRA = 63211, // player ambience when submerged CHAN_DEMOVOICEAUX = 63212, // extra channel to make oneliner voices louder CHAN_DEMOVOICEAUX2 = 63213, // how many more channels do I need??? - CHAN_DEMOVOICEAUX3 = 63214 // oh god, the loudening + CHAN_DEMOVOICEAUX3 = 63214, // oh god, the loudening + CHAN_FUELREGEN = 63215 // sound of fuel regenerating }; -const FallbackTag = "AWESOME IT'S PENIS"; // used on tag processing, please don't mind the actual string used) +const FallbackTag = "WHAT IN THE GODDAMN"; // used on tag processing, please don't mind the actual string used) const MaxBouncePerTic = 40; // maximum simultaneous bounces in one tic for a lightweight actor before we consider it's stuck +// super-minimal tick override that simply advances states when not frozen +Mixin Class SWWMMinimalTick +{ + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } +} +// + move by velocity +Mixin Class SWWMMinimalMovingTick +{ + override void Tick() + { + prev = pos; + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + SetOrigin(level.Vec3Offset(pos,vel),true); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } +} +// + check water level after move +Mixin Class SWWMMinimalMovingWaterTick +{ + override void Tick() + { + prev = pos; + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + SetOrigin(level.Vec3Offset(pos,vel),true); + UpdateWaterLevel(); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } +} + +// absolutely non-interactive actor that is net-safe for clientside use +Class SWWMNonInteractiveActor : Actor +{ + Mixin SWWMMinimalTick; + + Default + { + +NOINTERACTION; + +NOBLOCKMAP; // needed since we don't use the internal Tick + +SYNCHRONIZED; + +DONTBLAST; + FloatBobPhase 0; + Radius .1; + Height 0; + } +} + // basic "does nothing" actor, used to remove stuff in CheckReplacement -Class SWWMNothing : Actor +Class SWWMNothing : SWWMNonInteractiveActor { States { @@ -33,3 +117,450 @@ Class SWWMNothing : Actor Stop; } } + +// mixins for gravity-affected missiles that need correct water behavior +Mixin Class SWWMMissileFix +{ + Default + { + +NOFRICTION; + } + override void FallAndSink( double grav, double oldfloorz ) + { + if ( bNOGRAVITY || (waterlevel < 1) ) + { + Super.FallAndSink(grav,oldfloorz); + return; + } + vel *= .99; + if ( pos.z > floorz ) vel.z -= grav*.01; + } +} + +Class SWWMDamageAccumulator : Inventory +{ + Actor inflictor, source; + Array amounts; + int total; + Name type; + bool dontgib; + int flags; + + override void DoEffect() + { + Super.DoEffect(); + // so many damn safeguards in this + if ( !Owner || (Owner.Health <= 0) ) + { + Destroy(); + return; + } + int gibhealth = Owner.GetGibHealth(); + // お前はもう死んでいる + if ( (Owner.health-total <= gibhealth) && !dontgib ) + { + // safeguard for inflictors that have somehow ceased to exist, which apparently STILL CAN HAPPEN + if ( inflictor ) inflictor.bEXTREMEDEATH = true; + else type = 'Extreme'; + } + // 何? + foreach ( dmg:amounts ) + { + if ( !Owner ) break; + Owner.DamageMobj(inflictor,source,dmg,type,DMG_THRUSTLESS|flags); + } + // clean up + if ( inflictor ) inflictor.bEXTREMEDEATH = inflictor.default.bEXTREMEDEATH; + Destroy(); + } + + static void Accumulate( Actor victim, int amount, Actor inflictor, Actor source, Name type, bool dontgib = false, int flags = 0 ) + { + if ( !victim ) return; + SWWMDamageAccumulator match = SWWMDamageAccumulator(victim.FindInventory('SWWMDamageAccumulator')); + if ( !match ) + { + match = SWWMDamageAccumulator(Spawn('SWWMDamageAccumulator')); + match.AttachToOwner(victim); + } + match.amounts.Push(amount); + match.total += amount; + match.inflictor = inflictor; + match.source = source; + match.type = type; + match.dontgib = dontgib; + match.flags = flags; + } + + static clearscope int GetAmount( Actor victim ) + { + let ti = ThinkerIterator.Create('SWWMDamageAccumulator',STAT_USER); + SWWMDamageAccumulator match = SWWMDamageAccumulator(victim.FindInventory('SWWMDamageAccumulator')); + if ( match ) + { + if ( match.source && match.source.FindInventory('AngeryPower') ) + return (match.total>85899345)?int.max:(match.total*25); + return match.total; + } + return 0; + } + + default + { + +INVENTORY.UNTOSSABLE; + +INVENTORY.UNDROPPABLE; + +INVENTORY.UNCLEARABLE; + } +} + +// Track last damage source to blame fall damage on +Class SWWMWhoPushedMe : Inventory +{ + Actor instigator; + int killtimer; + + static void SetInstigator( Actor b, Actor whomst ) + { + if ( !b || !whomst ) return; + SWWMWhoPushedMe ffd = SWWMWhoPushedMe(b.FindInventory('SWWMWhoPushedMe')); + if ( ffd ) + { + ffd.instigator = whomst; + ffd.killtimer = 0; // cancel kill timer + return; + } + ffd = SWWMWhoPushedMe(Spawn('SWWMWhoPushedMe')); + ffd.AttachToOwner(b); + ffd.instigator = whomst; + } + + static Actor RecallInstigator( Actor b ) + { + if ( !b ) return null; + SWWMWhoPushedMe ffd = SWWMWhoPushedMe(b.FindInventory('SWWMWhoPushedMe')); + if ( ffd ) + { + Actor whomst = ffd.instigator; + ffd.Destroy(); + return whomst; + } + return null; + } + + override void OwnerDied() + { + Super.OwnerDied(); + if ( killtimer > 0 ) return; + killtimer = 5; + } + + override void DoEffect() + { + Super.DoEffect(); + if ( killtimer <= 0 ) return; + killtimer--; + if ( killtimer > 0 ) return; + Destroy(); + } + + override void ModifyDamage( int damage, Name damageType, int &newdamage, bool passive, Actor inflictor, Actor source, int flags ) + { + if ( !passive || (damageType != 'Falling') || (killtimer > 0) ) return; + killtimer = 5; + } + + default + { + +INVENTORY.UNTOSSABLE; + +INVENTORY.UNDROPPABLE; + +INVENTORY.UNCLEARABLE; + } +} + +Class SWWMFlyTracker : Inventory +{ + Actor instigator; + Vector3 startpos, curpos; + double maxdist; + int gracepd; + + static void Track( Actor b, Actor whomst ) + { + if ( !b || !whomst ) return; + SWWMFlyTracker ffd = SWWMFlyTracker(b.FindInventory('SWWMFlyTracker')); + if ( ffd ) + { + ffd.instigator = whomst; + return; + } + ffd = SWWMFlyTracker(Spawn('SWWMFlyTracker')); + ffd.AttachToOwner(b); + ffd.instigator = whomst; + ffd.curpos = ffd.startpos = b.pos; + ffd.maxdist = 0; + } + + override void DoEffect() + { + maxdist = max(maxdist,level.Vec3Diff(startpos,curpos).length()); + if ( !Owner || Owner.bFLOAT || Owner.bNOGRAVITY || (Owner.waterlevel > 1) || (Owner.pos.z <= Owner.floorz) || !Owner.TestMobjZ(false) ) + { + gracepd++; + if ( gracepd < 10 ) return; + if ( instigator ) SWWMUtility.AchievementProgress("flight",int(maxdist),instigator.player); + Destroy(); + return; + } + gracepd = 0; + curpos = Owner.pos; + } + + default + { + +INVENTORY.UNTOSSABLE; + +INVENTORY.UNDROPPABLE; + +INVENTORY.UNCLEARABLE; + } +} + +// very lightweight combat tracker, more Souls-y +Class SWWMQuickCombatTracker : Inventory +{ + int lifespan, lasthealth, maxhealth; + int laghealth[10]; + int cummdamage, cummspan, cummflash; // please do not misread + int fadein; // used for the hud + double lvheight; // height while alive (used by the hud for positioning) + SmoothDynamicValueInterpolator intp; + SmoothLinearValueInterpolator intpl; + PlayerInfo myplayer; // for multiplayer compatibility (this breaks inventory logic, but alas...) + String mytag; + bool PMHack; + + void UpdateTag( SWWMHandler hnd ) + { + if ( Owner && (Owner.player || Owner.bISMONSTER || (Owner is 'BossBrain') || (Owner is 'SWWMHangingKeen') || (Owner is 'PlayerPawn')) ) + { + String realtag = swwm_funtags?SWWMUtility.GetFunTag(hnd,Owner,FallbackTag):Owner.GetTag(FallbackTag); + if ( realtag == FallbackTag ) + { + realtag = Owner.GetClassName(); + SWWMUtility.BeautifyClassName(realtag); + } + mytag = Owner.player?(Owner.player.mo!=Owner)?multiplayer?String.Format(StringTable.Localize("$FN_VOODOO"),Owner.player.GetUserName()):StringTable.Localize("$FN_VOODOO_NP"):Owner.player.GetUserName():(Owner is 'PlayerPawn')?StringTable.Localize("$FN_VOODOO_NP"):realtag; + } + else mytag = ""; + } + + override void AttachToOwner( Actor other ) + { + // GROSS HACK TO ATTACH TO VOODOO DOLLS + if ( other.player && (other.player.mo != other) ) + { + BecomeItem(); + Owner = other; + inv = Owner.inv; + Owner.inv = self; + // we unfortunately can't access this, but hopefully it shouldn't be necessary + //InventoryID = Owner.InventoryID++; + return; + } + Super.AttachToOwner(other); + } + + override bool HandlePickup( Inventory item ) + { + // force update tag if Grace of Lilith has glitched our owner + if ( item.GetClassName() == 'CCards_Token_Glitched' ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + UpdateTag(hnd); + } + return Super.HandlePickup(item); + } + + static SWWMQuickCombatTracker Update( SWWMHandler hnd, PlayerInfo p, Actor target, int damage = 0 ) + { + // no-damage entities get no healthbars + if ( target.bNODAMAGE ) return null; + // also don't give healthbars to moths + if ( target is 'LampMoth' ) return null; + // don't give them to boss brains unless visible + if ( (target is 'BossBrain') && !p.Camera.CheckSight(target,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) return null; + SWWMQuickCombatTracker t = null; + for ( Inventory i=target.inv; i; i=i.inv ) + { + if ( !(i is 'SWWMQuickCombatTracker') ) continue; + let tt = SWWMQuickCombatTracker(i); + if ( tt.myplayer != p ) continue; + t = tt; + break; + } + // must exclude players (unless they're voodoo dolls) + // this is mainly for deathmatch so players you hit don't become easy to track when out of view + bool realmonster = target.bISMONSTER&&(!target.player||(target.player&&(target.player.mo!=target))); + if ( t ) + { + // re-fade in + if ( t.lifespan < 20 ) t.fadein = t.lifespan/4; + t.lifespan = max(t.lifespan,realmonster?((damage>0)?700:70):((damage>0)?140:35)); + if ( damage > 0 ) + { + t.cummdamage += damage; + t.cummspan = realmonster?120:30; + t.cummflash = 15; + } + return t; + } + t = SWWMQuickCombatTracker(Spawn('SWWMQuickCombatTracker')); + t.myplayer = p; + t.AttachToOwner(target); + // players always use SpawnHealth + if ( target.player ) t.maxhealth = target.SpawnHealth(); + else t.maxhealth = max(target.health,target.SpawnHealth()); + t.lasthealth = target.health; + int prevhealth = min(t.maxhealth,target.health+damage); // guessed health before damage was dealt + for ( int i=0; i<10; i++ ) t.laghealth[i] = prevhealth; + if ( damage > 0 ) + { + t.cummdamage = damage; + t.cummspan = realmonster?120:30; + t.cummflash = 15; + } + t.intp = SmoothDynamicValueInterpolator.Create(t.lasthealth,.5); + t.intpl = SmoothLinearValueInterpolator.Create(t.laghealth[9],max(1,t.maxhealth/50)); + t.lifespan = realmonster?((damage>0)?700:70):((damage>0)?140:35); + t.fadein = 0; + t.lvheight = target.Height; + t.UpdateTag(hnd); + // hack for some Project Malice void monsters that regularly change tags + switch ( target.GetClassName() ) + { + case 'PM_EntropicAvatar': + case 'PM_Broken': + case 'PM_VoidFloater': + t.PMHack = true; + break; + } + return t; + } + + // expiration, and interpolator updates + override void DoEffect() + { + Super.DoEffect(); + // immediately expire if the owner is gone or has morphed + if ( !Owner || Owner.bUnmorphed ) + { + Destroy(); + return; + } + if ( PMHack && !Owner.isFrozen() ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + UpdateTag(hnd); + } + // cap lifespan if owner is dead + if ( Owner.Health <= 0 ) lifespan = min(lifespan,35); + else lvheight = Owner.Height; + if ( cummflash > 0 ) cummflash--; + if ( cummspan > 0 ) + { + cummspan--; + if ( cummspan <= 0 ) cummdamage = 0; + } + if ( Owner.Health > lasthealth ) + { + if ( !Owner.player && (Owner.Health > maxhealth) ) + maxhealth = Owner.Health; + for ( int i=9; i>0; i-- ) + laghealth[i] = Owner.Health; + } + laghealth[0] = lasthealth = Owner.Health; + intp.Update(lasthealth); + intpl.Update(laghealth[9]); + for ( int i=9; i>0; i-- ) + laghealth[i] = laghealth[i-1]; + if ( fadein < 5 ) fadein++; + lifespan = max(0,lifespan-1); + // only fully expire if owner dies + // (this is so we can preserve our current fun tag) + if ( (lifespan <= 0) && (Owner.Health <= 0) ) + Destroy(); + } + + override void PreTravelled() + { + // expire immediately when switching maps + Destroy(); + } + + default + { + +INVENTORY.UNTOSSABLE; + +INVENTORY.UNDROPPABLE; + +INVENTORY.UNCLEARABLE; + } +} + +// fractic-compatible interpolators, with double value +Class SmoothLinearValueInterpolator +{ + private double val, oldval, diff; + + static SmoothLinearValueInterpolator Create( double val, double diff ) + { + let v = new('SmoothLinearValueInterpolator'); + v.oldval = v.val = val; + v.diff = diff; + return v; + } + void Reset( double newval ) + { + oldval = val = newval; + } + void Update( double newval ) + { + oldval = val; + if ( abs(newval-val) < diff ) val = newval; + else if ( val > newval ) val = max(newval,val-diff); + else val = min(newval,val+diff); + } + double GetValue( double fractic = 1. ) + { + return (val~==oldval)?val:SWWMUtility.Lerp(oldval,val,fractic); + } +} +Class SmoothDynamicValueInterpolator +{ + private double val, oldval, factor, mindiff, maxdiff; + + static SmoothDynamicValueInterpolator Create( double val, double factor, double mindiff = 1., double maxdiff = 0. ) + { + let v = new('SmoothDynamicValueInterpolator'); + v.oldval = v.val = val; + v.factor = factor; + v.mindiff = mindiff; + v.maxdiff = maxdiff; + return v; + } + void Reset( double newval ) + { + oldval = val = newval; + } + void Update( double newval ) + { + oldval = val; + if ( abs(newval-val) < mindiff ) val = newval; + else + { + double diff = (maxdiff>0.)?min(abs(newval-val)*factor,maxdiff):(abs(newval-val)*factor); + if ( val > newval ) val = max(newval,val-diff); + else val = min(newval,val+diff); + } + } + double GetValue( double fractic = 1. ) + { + return (val~==oldval)?val:SWWMUtility.Lerp(oldval,val,fractic); + } +} diff --git a/zscript/swwm_common_fx.zsc b/zscript/swwm_common_fx.zsc index 156c750a6..d893f0ac8 100644 --- a/zscript/swwm_common_fx.zsc +++ b/zscript/swwm_common_fx.zsc @@ -51,7 +51,7 @@ Class PaletteLight : PointLight override void Tick() { Super.Tick(); - if ( isFrozen() ) return; + if ( isFrozen() || (freezetics > 0) ) return; ReactionTime--; if ( ReactionTime < 0 ) { @@ -67,27 +67,191 @@ Class PaletteLight : PointLight } } +// base visual thinker subclasses +Class SWWMStaticSprite : VisualThinker abstract +{ + bool bCheckWater; // checks water level, calls EnteredWater and LeftWater virtuals (perf intensive) + bool lastwater; // internal, water state from previous tic + bool firstwater; // internal, water state has been checked at least once + bool bWallStop; // stops moving if the next tic takes us out of bounds (perf intensive) + bool bWallKill; // destroy self if out of bounds (perf intensive) + double speed; // multiply any initial thrust by this (used by subclasses, mainly) + + protected bool CheckWater() + { + if ( !cursector ) return false; + if ( cursector.moreflags&Sector.SECMF_UNDERWATER ) + { + // directly underwater + return true; + } + let hsec = cursector.GetHeightSec(); + if ( hsec ) + { + // check for height transfer + double fh = hsec.floorplane.ZAtPoint(pos.xy); + if ( hsec.moreflags&Sector.SECMF_UNDERWATERMASK ) + { + if ( fh-pos.z > 0 ) return true; + double ch = hsec.ceilingplane.ZAtPoint(pos.xy); + if ( !(hsec.moreflags&Sector.SECMF_FAKEFLOORONLY) + && (pos.z > ch) ) + return true; + } + } + else + { + // check for swimmable 3d floors + for ( int i=0; i= fh) && (pos.z <= ch) ) + return true; + } + } + return false; + } + + virtual void EnteredWater() {} + virtual void LeftWater() {} + + virtual void OnTick() {} + + override void Tick() + { + Super.Tick(); + if ( IsFrozen() ) + return; + if ( bCheckWater ) + { + bool curwater = CheckWater(); + if ( curwater && (!lastwater || !firstwater) ) + EnteredWater(); + else if ( !curwater && (lastwater || !firstwater) ) + LeftWater(); + if ( bDestroyed ) // might destroy self in either virtual function + return; + lastwater = curwater; + firstwater = true; + } + if ( bWallStop ) + { + let newpos = level.Vec3Offset(pos,vel); + if ( !level.IsPointInLevel(newpos) ) vel *= 0.; + } + if ( bWallKill && !level.IsPointInLevel(pos) ) + { + Destroy(); + return; + } + OnTick(); + } + + virtual void SetupSprite() + { + // safe defaults + texture = TexMan.CheckForTexture("BLPFA0"); + bCheckWater = false; + bWallStop = false; + bWallKill = false; + } + + static SWWMStaticSprite SpawnAt( Class type, Vector3 spawnpos ) + { + let t = SWWMStaticSprite(level.SpawnVisualThinker(type)); + t.pos = spawnpos; + t.cursector = level.PointInSector(t.pos.xy); + t.SetupSprite(); + t.speed = 1.; // default + return t; + } +} + +Class SWWMAnimSprite : SWWMStaticSprite +{ + string sprname; // base name of sprite + uint8 sprframe; // current sprite frame (0-28) + uint8 numframes; // total frame count of animation (max 29) + uint8 frameskip; // how many frames to skip each step + uint8 framestep; // how many tics to wait for each frame step + uint8 framecnt; // internal, counter for frame stepping + bool bLooping; // animation loops, otherwise die upon reaching last frame + + private void TickAnim( bool bFirstTick = false ) + { + if ( !bFirstTick ) + { + framecnt++; + if ( framecnt < framestep ) + return; + framecnt = 0; + sprframe += 1+frameskip; + if ( sprframe >= numframes ) + { + if ( !bLooping ) + { + Destroy(); + return; + } + else sprframe -= numframes; + } + } + string tname = String.Format("%.4s%c0",sprname,0x41+sprframe); + texture = TexMan.CheckForTexture(tname); + } + + override void Tick() + { + Super.Tick(); + if ( !IsFrozen() && !bDestroyed ) + TickAnim(); + } + + override void SetupSprite() + { + // safe defaults + sprname = "XEX1"; + sprframe = 0; + numframes = 28; + frameskip = 0; + framestep = 1; + framecnt = 0; + bLooping = false; + bCheckWater = false; + bWallStop = false; + bWallKill = false; + } + + static SWWMAnimSprite SpawnAt( Class type, Vector3 spawnpos ) + { + let t = SWWMAnimSprite(level.SpawnVisualThinker(type)); + t.pos = spawnpos; + t.cursector = level.PointInSector(t.pos.xy); + t.SetupSprite(); + t.speed = 1.; // default + t.TickAnim(true); + return t; + } +} + // Generic smoke, lightweight tick -Class SWWMSmoke : Actor +Class SWWMSmoke : SWWMNonInteractiveActor { Default { - RenderStyle "Shaded"; - StencilColor "FFFFFF"; - Radius .1; - Height 0; + RenderStyle 'Shaded'; + StencilColor "FF FF FF"; Speed 1; - +NOBLOCKMAP; - +NOGRAVITY; - +DONTSPLASH; +FORCEXYBILLBOARD; +ROLLSPRITE; +ROLLCENTER; - +THRUACTORS; - +NOTELEPORT; - +NOINTERACTION; Scale .3; - FloatBobPhase 0; } override void PostBeginPlay() @@ -97,7 +261,7 @@ Class SWWMSmoke : Actor alpha = min(1.,alpha*FRandom[Puff](.5,1.5)); ang = FRandom[Puff](0,360); pt = FRandom[Puff](-90,90); - vel += (cos(pt)*cos(ang),cos(pt)*sin(ang),-sin(pt))*FRandom[Puff](.2,.8)*speed; + vel += SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[Puff](.2,.8)*speed; roll = Frandom[Puff](0,360); scale.x *= RandomPick[Puff](-1,1); scale.y *= RandomPick[Puff](-1,1); @@ -105,6 +269,11 @@ Class SWWMSmoke : Actor override void Tick() { prev = pos; // for interpolation + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; vel *= .96; vel.z += .01; @@ -128,24 +297,9 @@ Class SWWMSmoke : Actor double ang = atan2(dir.y,dir.x); double pt = asin(-dir.z); LineTrace(ang,dist,pt,TRF_THRUACTORS|TRF_THRUHITSCAN|TRF_ABSPOSITION,newpos.z,newpos.x,newpos.y,d); - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } if ( d.HitType != TRACE_HitNone ) { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); dist -= d.Distance; // should only happen if we bounced dir = d.HitDir-(FRandom[Puff](1.,1.2)*hitnormal*(d.HitDir dot hitnormal)); @@ -164,12 +318,13 @@ Class SWWMSmoke : Actor UpdateWaterLevel(); if ( (waterlevel > 0) && !bAMBUSH ) { - let b = Spawn("SWWMBubble",pos); + let b = Spawn('SWWMBubble',pos); b.scale *= abs(scale.x); b.vel = vel; Destroy(); return; } + if ( !CheckNoDelay() || (tics == -1) ) return; if ( tics > 0 ) tics--; while ( !tics ) { @@ -186,110 +341,80 @@ Class SWWMSmoke : Actor } } -// strictly non-interacting smoke, much lighter tick, used for heavier effects -Class SWWMHalfSmoke : Actor +// Visual thinker smoke, less overhead, used for heavier effects +Class SWWMHalfSmoke : SWWMAnimSprite { - Default + override void SetupSprite() { - RenderStyle "Shaded"; - StencilColor "FFFFFF"; - Radius .1; - Height 0; - Speed 1; - +NOBLOCKMAP; - +NOGRAVITY; - +DONTSPLASH; - +FORCEXYBILLBOARD; - +ROLLSPRITE; - +ROLLCENTER; - +NOTELEPORT; - +NOINTERACTION; - Scale 0.3; - FloatBobPhase 0; + Super.SetupSprite(); + sprname = "XSMK"; + numframes = 20; + bCheckWater = true; + SetRenderStyle(STYLE_Shaded); + scolor = 0xFFFFFFFF; + Scale = (.3,.3); + Flags |= SPF_ROLL; } + + override void OnTick() + { + vel *= .96; + vel.z += .01; + } + + override void EnteredWater() + { + let b = SWWMAnimSprite.SpawnAt('SWWMHalfBubble',pos); + b.scale *= abs(scale.x); + b.vel = vel; + Destroy(); + } + override void PostBeginPlay() { double ang, pt; - scale *= FRandom[Puff](0.5,1.5); - alpha *= FRandom[Puff](0.5,1.5); + scale *= FRandom[Puff](.5,1.5); + alpha *= FRandom[Puff](.5,1.5); ang = FRandom[Puff](0,360); pt = FRandom[Puff](-90,90); - vel += (cos(pt)*cos(ang),cos(pt)*sin(ang),-sin(pt))*FRandom[Puff](0.2,0.8)*speed; - roll = Frandom[Puff](0,360); - scale.x *= RandomPick[Puff](-1,1); - scale.y *= RandomPick[Puff](-1,1); - } - override void Tick() - { - prev = pos; // for interpolation - if ( isFrozen() ) return; - vel *= 0.96; - vel.z += 0.01; - SetOrigin(level.Vec3Offset(pos,vel),true); - UpdateWaterLevel(); - if ( (waterlevel > 0) && !bAMBUSH ) - { - let b = Spawn("SWWMBubble",pos); - b.scale *= abs(scale.x); - b.vel = vel; - Destroy(); - return; - } - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - - States - { - Spawn: - XSMK ABCDEFGHIJKLMNOPQRST 1 A_SetTics(1+special1); - Stop; + vel += SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[Puff](.2,.8)*speed; + roll = FRandom[Puff](0,360); + bXFlip = Random[Puff](0,1); + bYFlip = Random[Puff](0,1); } } +// lesser version Class SWWMSmallSmoke : SWWMHalfSmoke { + override void SetupSprite() + { + Super.SetupSprite(); + sprname = "QSM6"; + numframes = 18; + } + override void PostBeginPlay() { double ang, pt; - scale *= FRandom[Puff](0.1,0.3); - alpha *= FRandom[Puff](0.5,1.5); + scale *= FRandom[Puff](.5,1.5); + alpha *= FRandom[Puff](.5,1.5); ang = FRandom[Puff](0,360); pt = FRandom[Puff](-90,90); - vel += (cos(pt)*cos(ang),cos(pt)*sin(ang),-sin(pt))*FRandom[Puff](0.04,0.16); + vel += SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[Puff](.04,.16)*speed; roll = Frandom[Puff](0,360); - scale.x *= RandomPick[Puff](-1,1); - scale.y *= RandomPick[Puff](-1,1); - } - - States - { - Spawn: - QSM6 ABCDEFGHIJKLMNOPQR 1 A_SetTics(1+special1); - Stop; + bXFlip = Random[Puff](0,1); + bYFlip = Random[Puff](0,1); } } -Class SWWMBubble : Actor +Class SWWMBubble : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius .1; - Height 0; - +NOBLOCKMAP; - +NOGRAVITY; - +DONTSPLASH; + RenderStyle 'Add'; +FORCEXYBILLBOARD; - +NOTELEPORT; - +THRUACTORS; - +NOINTERACTION; Scale 0.5; - FloatBobPhase 0; } override void PostBeginPlay() { @@ -297,13 +422,18 @@ Class SWWMBubble : Actor scale *= FRandom[Puff](0.5,1.5); ang = FRandom[Puff](0,360); pt = FRandom[Puff](-90,90); - vel += (cos(pt)*cos(ang),cos(pt)*sin(ang),-sin(pt))*FRandom[Puff](0.2,0.8); - if ( waterlevel <= 0 ) Destroy(); - SetState(ResolveState("Spawn")+Random[Puff](0,19)); + vel += SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[Puff](0.2,0.8); + if ( (waterlevel <= 0) || (waterdepth < (scale.y*9.)) ) Destroy(); + SetState(ResolveState('Spawn')+Random[Puff](0,19)); } override void Tick() { prev = pos; + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; vel *= 0.96; vel.z += 0.05; @@ -327,24 +457,9 @@ Class SWWMBubble : Actor double ang = atan2(dir.y,dir.x); double pt = asin(-dir.z); LineTrace(ang,dist,pt,TRF_THRUACTORS|TRF_THRUHITSCAN|TRF_ABSPOSITION,newpos.z,newpos.x,newpos.y,d); - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } if ( d.HitType != TRACE_HitNone ) { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); dist -= d.Distance; // should only happen if we bounced dir = d.HitDir-(FRandom[Puff](1.,1.2)*hitnormal*(d.HitDir dot hitnormal)); @@ -361,7 +476,8 @@ Class SWWMBubble : Actor newpos.z = clamp(newpos.z,floorz,ceilingz); SetOrigin(newpos,true); UpdateWaterLevel(); - if ( (waterlevel <= 0) || !Random[Puff](0,100) ) Destroy(); + if ( (waterlevel <= 0) || (waterdepth < (scale.y*9.)) || !Random[Puff](0,100) ) Destroy(); + if ( !CheckNoDelay() || (tics == -1) ) return; if ( tics > 0 ) tics--; while ( !tics ) { @@ -377,22 +493,59 @@ Class SWWMBubble : Actor } } -Class SWWMSparkTrail : Actor +// Visual thinker version of the above, much simpler checks +Class SWWMHalfBubble : SWWMAnimSprite +{ + override void SetupSprite() + { + Super.SetupSprite(); + sprname = "XBUB"; + sprframe = Random[Puff](0,19); + numframes = 20; + bCheckWater = true; + bLooping = true; + bWallKill = true; + SetRenderStyle(STYLE_Add); + Scale = (.5,.5); + } + + override void OnTick() + { + vel *= .96; + vel.z += .05; + if ( !Random[Puff](0,100) ) + Destroy(); + } + + override void LeftWater() + { + Destroy(); + } + + override void PostBeginPlay() + { + double ang, pt; + scale *= FRandom[Puff](.5,1.5); + ang = FRandom[Puff](0,360); + pt = FRandom[Puff](-90,90); + vel += SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[Puff](.2,.8)*speed; + } +} + +Class SWWMSparkTrail : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius .1; - Height 0.; + RenderStyle 'Add'; +FORCEXYBILLBOARD; - +NOGRAVITY; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - +NOTELEPORT; } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; A_SetScale(scale.x*.9,scale.y); A_FadeOut(.06); @@ -405,7 +558,7 @@ Class SWWMSparkTrail : Actor } } -Class SWWMSpark : Actor +Class SWWMSpark : SWWMNonInteractiveActor { bool dead; Sector tracksector; @@ -413,22 +566,19 @@ Class SWWMSpark : Actor Default { - RenderStyle "Add"; - Radius .1; - Height 0; - +NOBLOCKMAP; + RenderStyle 'Add'; +FORCEXYBILLBOARD; - +THRUACTORS; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; - Gravity 0.2; - Scale 0.05; - FloatBobPhase 0; + Gravity .2; + Scale .05; } override void Tick() { prev = pos; + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; if ( dead ) { @@ -465,24 +615,9 @@ Class SWWMSpark : Actor double ang = atan2(dir.y,dir.x); double pt = asin(-dir.z); LineTrace(ang,dist,pt,TRF_THRUACTORS|TRF_THRUHITSCAN|TRF_ABSPOSITION,newpos.z,newpos.x,newpos.y,d); - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } if ( d.HitType != TRACE_HitNone ) { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); dist -= d.Distance; // should only happen if we bounced dir = d.HitDir-(2*hitnormal*(d.HitDir dot hitnormal)); @@ -517,7 +652,7 @@ Class SWWMSpark : Actor pitch = 0; roll = 0; dead = true; - SetStateLabel("Death"); + SetStateLabel('Death'); break; } nstep++; @@ -528,11 +663,10 @@ Class SWWMSpark : Actor if ( (taillen > 0.) && (alpha > .3) && (waterlevel <= 0) ) { taildir /= taillen; - let t = Spawn("SWWMSparkTrail",newpos); + let t = Spawn('SWWMSparkTrail',newpos); t.alpha = alpha*.3; - t.scale.y = taillen; - t.angle = atan2(taildir.y,taildir.x); - t.pitch = asin(-taildir.z)+90; + t.speed = taillen; + [t.angle, t.pitch, t.scale.y] = SWWMUtility.CalcYBeam(taildir,taillen); } SetOrigin(newpos,true); if ( (pos.z <= floorz) && GetFloorTerrain().IsLiquid ) @@ -544,12 +678,13 @@ Class SWWMSpark : Actor UpdateWaterLevel(); if ( waterlevel > 0 ) { - let b = Spawn("SWWMBubble",pos); + let b = Spawn('SWWMBubble',pos); b.vel = vel; b.scale *= 0.3; Destroy(); return; } + if ( !CheckNoDelay() || (tics == -1) ) return; if ( tics > 0 ) tics--; while ( !tics ) { @@ -568,7 +703,7 @@ Class SWWMSpark : Actor } } -Class SWWMChip : Actor +Class SWWMChip : SWWMNonInteractiveActor { SWWMChip prevchip, nextchip; bool killme; @@ -579,20 +714,12 @@ Class SWWMChip : Actor Default { - Radius .1; - Height 0; - +NOBLOCKMAP; - +THRUACTORS; - +NOTELEPORT; - +DONTSPLASH; +INTERPOLATEANGLES; +ROLLSPRITE; +ROLLCENTER; +FORCEXYBILLBOARD; - +NOINTERACTION; - Gravity 0.35; - Scale 0.2; - FloatBobPhase 0; + Gravity .35; + Scale .2; } override void PostBeginPlay() { @@ -611,6 +738,11 @@ Class SWWMChip : Actor override void Tick() { prev = pos; // for interpolation + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; if ( dead ) { @@ -650,24 +782,9 @@ Class SWWMChip : Actor double ang = atan2(dir.y,dir.x); double pt = asin(-dir.z); LineTrace(ang,dist,pt,TRF_THRUACTORS|TRF_THRUHITSCAN|TRF_ABSPOSITION,newpos.z,newpos.x,newpos.y,d); - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } if ( d.HitType != TRACE_HitNone ) { + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); dist -= d.Distance; // should only happen if we bounced dir = d.HitDir-(2*hitnormal*(d.HitDir dot hitnormal)); @@ -675,7 +792,7 @@ Class SWWMChip : Actor dist *= .3; vel = dir*spd; newpos = d.HitLocation+dir; - SetStateLabel("Bounce"); + SetStateLabel('Bounce'); } else { @@ -701,10 +818,8 @@ Class SWWMChip : Actor trackplane = 0; } vel = (0,0,0); - pitch = 0; - roll = 0; dead = true; - SetStateLabel("Death"); + SetStateLabel('Death'); break; } nstep++; @@ -720,7 +835,8 @@ Class SWWMChip : Actor if ( killme ) A_FadeOut(.01); if ( waterlevel > 0 ) { - vel *= .98; + vel *= .99; + if ( pos.z > floorz ) vel.z -= gravity*.01; anglevel *= .98; pitchvel *= .98; rollvel *= .98; @@ -752,7 +868,7 @@ Class SWWMChip : Actor } Goto Spawn; Death: - XZW2 # -1; + XZW1 # -1; Stop; } } @@ -776,21 +892,14 @@ Class PoofLight2 : PaletteLight } } -Class SWWMItemFog : Actor +Class SWWMItemFog : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius .1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; + RenderStyle 'Add'; +ROLLSPRITE; +ROLLCENTER; - +NOINTERACTION; +FORCEXYBILLBOARD; - FloatBobPhase 0; } States { @@ -804,18 +913,31 @@ Class SWWMItemFog : Actor scale.x *= RandomPick[ExploS](-1,1); scale.y *= RandomPick[ExploS](-1,1); int numpt = Random[ExploS](8,12); - if ( bAMBUSH ) numpt *= 2; - for ( int i=0; i 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; if ( (level.maptime+special1)%10 ) return; + if ( !flare.texture ) + { + flare.color1 = 0xFF88AAFF; + flare.texture = TexMan.CheckForTexture("graphics/Particles/xflare.png"); + flare.style = STYLE_AddShaded; + flare.flags = SPF_FULLBRIGHT; + flare.fadestep = -1; + } + double dist = Distance3DSquared(players[consoleplayer].Camera); + if ( dist >= 250000. ) return; + double alph = clamp((250000.-dist)/250000.,0.,1.); + flare.pos = pos+(0,0,28); int numpt = Random[ExploS](0,2); for ( int i=0; i 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; if ( (level.maptime+special1)%5 ) return; Vector3 apos, bpos; @@ -934,38 +1055,49 @@ Class SWWMTeleportLine : Actor bpos.z = max(tline.frontsector.floorplane.ZAtPoint(bpos.xy),tline.backsector.floorplane.ZAtPoint(bpos.xy)); int numpt = Random[ExploS](0,2); numpt *= int(clamp((apos-bpos).length()/32,1,8)); + if ( !flare.texture ) + { + flare.color1 = 0xFF88AAFF; + flare.texture = TexMan.CheckForTexture("graphics/Particles/xflare.png"); + flare.style = STYLE_AddShaded; + flare.flags = SPF_FULLBRIGHT; + flare.fadestep = -1; + } for ( int i=0; i= 250000. ) continue; + double alph = clamp((250000.-dist)/250000.,0.,1.); + double ang = FRandom[ExploS](0,360); + double pt = FRandom[ExploS](-90,90); + Vector3 pvel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](.0,.3); + flare.lifetime = Random[ExploS](120,240); + flare.size = FRandom[ExploS](2.,4.); + flare.sizestep = FRandom[ExploS](-.02,-.01); + flare.pos = ppos; + flare.vel = pvel; + flare.accel = (0,0,FRandom[ExploS](.05,.1)); + flare.startalpha = FRandom[ExploS](.15,.3)*alph; + level.SpawnParticle(flare); } } } -Class SWWMTeleportFog : Actor +Class SWWMTeleportFog : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOINTERACTION; + RenderStyle 'Add'; +FORCEXYBILLBOARD; - Radius .1; - Height 0.; - FloatBobPhase 0; } override void PostBeginPlay() { Super.PostBeginPlay(); A_StartSound("misc/teleport",CHAN_VOICE); - Spawn("TeleLight",pos); - if ( swwm_simplefog ) SetStateLabel("Simple"); + Spawn('TeleLight',pos); } States { @@ -975,11 +1107,11 @@ Class SWWMTeleportFog : Actor int numpt = int(Random[ExploS](6,12)*alpha); for ( int i=0; i= 160000000. ) alpha = 1.; + else alpha = AlphaCubeRoot(clamp(max(0,camdist-40000.)/160000000.,0.,1.)); + alpha *= FRandom[ClientSparkles](.9,1.); + } + // nearby sparkles + if ( camdist >= 250000. ) return; + double alph = clamp((250000.-camdist)/250000.,0.,1.); + if ( !flare.texture ) + { + flare.color1 = Color(Args[1]*85,Args[2]*85,Args[3]*85); + flare.texture = TexMan.CheckForTexture("graphics/Particles/xflare.png"); + flare.style = STYLE_AddShaded; + flare.flags = SPF_FULLBRIGHT; + flare.lifetime = 30; + flare.accel = (0,0,.05); + flare.fadestep = -1; + } + flare.startalpha = alph; + int numpt = Random[ClientSparkles](1,3); + for ( int i=0; i WaterHitList; Array ShootThroughList; - Actor ignoreme; - static play void DoTrail( Actor target, Vector3 pos, Vector3 dir, double dist, int bubblechance, bool smoky = false ) + static play void DoTrail( Actor target, Vector3 pos, Vector3 dir, double dist, int bubblesparse, bool smoky = false ) { - let t = new("SWWMBulletTrail"); - t.ignoreme = target; + let t = new('SWWMBulletTrail'); t.WaterHitList.Clear(); t.ShootThroughList.Clear(); - t.Trace(pos,level.PointInSector(pos.xy),dir,dist,0); - for ( int i=0; i 0 ) + { + freezetics--; + return; + } Update(); } default { - RenderStyle "Shaded"; - StencilColor "000000"; - DistanceCheck 'swwm_shadowdist'; - Radius .1; - Height 0.; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - +NOTELEPORT; - FloatBobPhase 0; + RenderStyle 'Shaded'; + StencilColor "00 00 00"; } States { @@ -1383,246 +1575,390 @@ Class SWWMShadow : Actor } // Terrain FX (cheap) -Class SWWMBaseSplash : Actor +Class SWWMBaseSplash : SWWMNonInteractiveActor abstract { - default + TextureID pufftex[8]; + FSpawnParticleParams puff; + + abstract void DoSplash(); + + void Splash() { - Radius .1; - Height 0.; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - +NOTELEPORT; - FloatBobPhase 0; + puff.style = STYLE_Shaded; + puff.fadestep = -1; + puff.pos = pos; + for ( int i=0; i<8; i++ ) + pufftex[i] = TexMan.CheckForTexture("graphics/Particles/xpuff"..i..".png"); + DoSplash(); } + States { Spawn: - TNT1 A 1; + TNT1 A 1 NoDelay Splash(); Stop; } } Class SWWMWaterSplash : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 60; + puff.startalpha = .5; double ang, pt, str; Vector3 dir; for ( int i=0; i<60; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-60); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](2.,12.); dir *= str*.25; dir.z += 1.; - A_SpawnParticle(SWWMUtility.LerpColor("40 60 FF","A0 C0 FF",FRandom[ExploS](0.,1.)),0,60,str,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.5,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF4060FF,0xFFA0C0FF,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:1200,AMF_EMITFROMTARGET); } } Class SWWMWaterSplash2 : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 50; + puff.startalpha = .5; double ang, pt, str; Vector3 dir; for ( int i=0; i<15; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-30); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](1.,6.); dir *= str*.25; dir.z += .35; - A_SpawnParticle(SWWMUtility.LerpColor("40 60 FF","A0 C0 FF",FRandom[ExploS](0.,1.)),0,50,str,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.5,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF4060FF,0xFFA0C0FF,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:300,AMF_EMITFROMTARGET); } } Class SWWMBloodSplash : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 60; + puff.startalpha = .5; double ang, pt, str; Vector3 dir; for ( int i=0; i<60; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-60); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](2.,12.); dir *= str*.25; dir.z += 1.; - A_SpawnParticle(SWWMUtility.LerpColor("80 00 00","60 00 00",FRandom[ExploS](0.,1.)),0,60,str+.5,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.5,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF800000,0xFF600000,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+.5; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:1200,AMF_EMITFROMTARGET); } } Class SWWMBloodSplash2 : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 50; + puff.startalpha = .5; double ang, pt, str; Vector3 dir; for ( int i=0; i<15; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-30); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](1.,6.); dir *= str*.25; dir.z += .35; - A_SpawnParticle(SWWMUtility.LerpColor("80 00 00","60 00 00",FRandom[ExploS](0.,1.)),0,50,str+.5,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.5,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF800000,0xFF600000,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+.5; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:300,AMF_EMITFROMTARGET); } } Class SWWMSludgeSplash : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 40; + puff.startalpha = .8; double ang, pt, str; Vector3 dir; for ( int i=0; i<60; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-60); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](2.,8.); dir *= str*.25; dir.z += .4; - A_SpawnParticle(SWWMUtility.LerpColor("40 50 40","30 30 30",FRandom[ExploS](0.,1.)),0,40,str+2.,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.8,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF405040,0xFF303030,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+2.; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:1200,AMF_EMITFROMTARGET); } } Class SWWMSludgeSplash2 : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 30; + puff.startalpha = .8; double ang, pt, str; Vector3 dir; for ( int i=0; i<15; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-30); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](1.,4.); dir *= str*.25; dir.z += .15; - A_SpawnParticle(SWWMUtility.LerpColor("40 50 40","30 30 30",FRandom[ExploS](0.,1.)),0,30,str+2.,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.8,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF405040,0xFF303030,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+2.; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:300,AMF_EMITFROMTARGET); } } Class SWWMMudSplash : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 40; + puff.startalpha = .8; double ang, pt, str; Vector3 dir; for ( int i=0; i<60; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-60); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](2.,8.); dir *= str*.25; dir.z += .4; - A_SpawnParticle(SWWMUtility.LerpColor("50 40 20","30 20 10",FRandom[ExploS](0.,1.)),0,40,str+2.,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.8,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF504020,0xFF302010,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+2.; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:1200,AMF_EMITFROMTARGET); } } Class SWWMMudSplash2 : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 30; + puff.startalpha = .8; double ang, pt, str; Vector3 dir; for ( int i=0; i<15; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-30); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](1.,4.); dir *= str*.25; dir.z += .15; - A_SpawnParticle(SWWMUtility.LerpColor("50 40 20","30 20 10",FRandom[ExploS](0.,1.)),0,30,str+2.,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.8,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF504020,0xFF302010,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+2.; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:300,AMF_EMITFROMTARGET); } } Class SWWMSlimeSplash : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 40; + puff.startalpha = .8; + puff.style = STYLE_AddShaded; + puff.flags = SPF_FULLBRIGHT; double ang, pt, str; Vector3 dir; for ( int i=0; i<60; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-60); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](2.,8.); dir *= str*.25; dir.z += .4; - A_SpawnParticle(SWWMUtility.LerpColor("00 FF 00","00 80 00",FRandom[ExploS](0.,1.)),SPF_FULLBRIGHT,40,str+2.,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.8,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF00FF00,0xFF008000,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+2.; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:1200,AMF_EMITFROMTARGET); } } Class SWWMSlimeSplash2 : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 30; + puff.startalpha = .8; + puff.style = STYLE_AddShaded; + puff.flags = SPF_FULLBRIGHT; double ang, pt, str; Vector3 dir; for ( int i=0; i<15; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-30); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](1.,4.); dir *= str*.25; dir.z += .15; - A_SpawnParticle(SWWMUtility.LerpColor("00 FF 00","00 80 00",FRandom[ExploS](0.,1.)),SPF_FULLBRIGHT,30,str+2.,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.8,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFF00FF00,0xFF008000,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+2.; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } + A_AlertMonsters(swwm_uncapalert?0:300,AMF_EMITFROMTARGET); } } Class SWWMLavaSplash : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 40; + puff.startalpha = .8; + puff.style = STYLE_AddShaded; + puff.flags = SPF_FULLBRIGHT; double ang, pt, str; Vector3 dir; for ( int i=0; i<60; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-60); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](2.,12.); dir *= str*.35; dir.z += .6; - A_SpawnParticle(SWWMUtility.LerpColor("FF C0 40","FF 40 20",FRandom[ExploS](0.,1.)),SPF_FULLBRIGHT,40,str+1.,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.8,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFFFFC040,0xFFFF4020,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+1.; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } - Spawn("SWWMSizzleSmoke",pos); + let s = Spawn('SWWMSizzleSmoke',pos); + s.target = target; } } Class SWWMLavaSplash2 : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() { + puff.lifetime = 30; + puff.startalpha = .8; + puff.style = STYLE_AddShaded; + puff.flags = SPF_FULLBRIGHT; double ang, pt, str; Vector3 dir; for ( int i=0; i<15; i++ ) { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-30); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); + dir = SWWMUtility.Vec3FromAngles(ang,pt); str = FRandom[ExploS](1.,6.); dir *= str*.35; dir.z += .2; - A_SpawnParticle(SWWMUtility.LerpColor("FF C0 40","FF 40 20",FRandom[ExploS](0.,1.)),SPF_FULLBRIGHT,30,str+1.,0,0,0,0,dir.x,dir.y,dir.z,0,0,-.03*str,.8,-1,-.02*str); + puff.color1 = SWWMUtility.LerpColor(0xFFFFC040,0xFFFF4020,FRandom[ExploS](0.,1.)); + puff.texture = pufftex[Random[ExploS](0,7)]; + puff.size = str+1.; + puff.sizestep = -.02*str; + puff.vel = dir; + puff.accel = (0,0,-.03*str); + level.SpawnParticle(puff); } - Spawn("SWWMSizzleSmoke2",pos); + let s = Spawn('SWWMSizzleSmoke2',pos); + s.target = target; } } Class SWWMSizzleSmoke : SWWMBaseSplash { - override void PostBeginPlay() + override void DoSplash() + { + double ang, pt, str; + Vector3 dir; + for ( int i=0; i<4; i++ ) + { + ang = FRandom[ExploS](0,360); + pt = FRandom[ExploS](-90,-30); + dir = SWWMUtility.Vec3FromAngles(ang,pt); + str = FRandom[ExploS](.5,2.); + let s = SWWMAnimSprite.SpawnAt('SWWMSmallSmoke',pos); + s.vel = dir*str+(0,0,.4); + s.scolor = Color(1,1,1)*Random[ExploS](192,224); + s.scale *= 8.; + s.alpha *= .4; + s.SetRenderStyle(STYLE_AddShaded); + s.framestep = Random[ExploS](1,3); + } + A_AlertMonsters(swwm_uncapalert?0:1200,AMF_EMITFROMTARGET); + } +} +Class SWWMSizzleSmoke2 : SWWMBaseSplash +{ + override void DoSplash() { double ang, pt, str; Vector3 dir; @@ -1630,33 +1966,17 @@ Class SWWMSizzleSmoke : SWWMBaseSplash { ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,-30); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); - str = FRandom[ExploS](.5,2.); - let s = Spawn("SWWMSmallSmoke",pos); - s.vel = dir*str+(0,0,.4); - s.SetShade(Color(1,1,1)*Random[ExploS](192,224)); - s.scale *= 40.; - s.A_SetRenderStyle(s.alpha*.4,STYLE_AddShaded); - s.special1 = Random[ExploS](0,2); + dir = SWWMUtility.Vec3FromAngles(ang,pt); + str = FRandom[ExploS](.25,1.); + let s = SWWMAnimSprite.SpawnAt('SWWMSmallSmoke',pos); + s.vel = dir*str+(0,0,.15); + s.scolor = Color(1,1,1)*Random[ExploS](192,224); + s.scale *= 4.; + s.alpha *= .3; + s.SetRenderStyle(STYLE_AddShaded); + s.framestep = Random[ExploS](1,2); } - } -} -Class SWWMSizzleSmoke2 : SWWMBaseSplash -{ - override void PostBeginPlay() - { - double ang, pt, str; - Vector3 dir; - ang = FRandom[ExploS](0,360); - pt = FRandom[ExploS](-90,-30); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); - str = FRandom[ExploS](.25,1.); - let s = Spawn("SWWMSmallSmoke",pos); - s.vel = dir*str+(0,0,.15); - s.SetShade(Color(1,1,1)*Random[ExploS](192,224)); - s.scale *= 20.; - s.A_SetRenderStyle(s.alpha*.3,STYLE_AddShaded); - s.special1 = Random[ExploS](0,1); + A_AlertMonsters(swwm_uncapalert?0:300,AMF_EMITFROMTARGET); } } diff --git a/zscript/swwm_gesture.zsc b/zscript/swwm_gesture.zsc index 8682e6bdd..a56d88580 100644 --- a/zscript/swwm_gesture.zsc +++ b/zscript/swwm_gesture.zsc @@ -24,7 +24,7 @@ enum EGestureSlot // First person gestures Class SWWMGesture : SWWMWeapon { - Weapon formerweapon; + Weapon formerweapon, lastformerweapon; int whichgesture, nextgesture; bool deaded, queued; Class whichweapon; @@ -45,15 +45,30 @@ Class SWWMGesture : SWWMWeapon { return false; } + override bool Used( Actor user ) + { + return false; + } + override void Touch( Actor toucher ) + { + } override void DoEffect() { Super.DoEffect(); + // show nametag if former weapon changes + if ( (lastformerweapon != formerweapon) && Owner && (Owner.player == players[consoleplayer]) && (displaynametags&2) ) + EventHandler.SendInterfaceEvent(consoleplayer,"swwmnametag."..formerweapon.GetTag()); + lastformerweapon = formerweapon; + // if we're supposed to headpat but we're NOT the pending/ready weapon, something's very wrong here + // try to fix that by force + if ( pats && Owner && Owner.player && (Owner.player.ReadyWeapon != self) && (Owner.player.PendingWeapon != self) ) + SetGesture(Owner.player.mo,GS_Headpat,true); if ( !Owner || !Owner.player || (Owner.player.ReadyWeapon != self) ) return; let psp = Owner.player.FindPSprite(PSP_WEAPON); if ( !psp ) return; - if ( (Owner.Health <= 0) && (psp.CurState != ResolveState("Deselect")) ) - Owner.player.SetPSprite(PSP_WEAPON,ResolveState("Deselect")); + if ( (Owner.Health <= 0) && (psp.CurState != ResolveState('Deselect')) ) + Owner.player.SetPSprite(PSP_WEAPON,ResolveState('Deselect')); // check if we're waving at a dying enemy if ( (psp.frame >= 3) && (psp.frame <= 12) && (psp.sprite == GetSpriteIndex('XZW1')) ) CheckWave(); @@ -61,26 +76,29 @@ Class SWWMGesture : SWWMWeapon private void CheckWave() { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !hnd ) return; - for ( int i=0; i 0) || (a.tics == -1) || !(a.bISMONSTER || a.player) || !a.IsHostile(Owner) ) continue; - // check if we can see it - if ( !SWWMUtility.InPlayerFOV(Owner.player,a) ) continue; - // someone's dying - SWWMUtility.MarkAchievement("wave",Owner.player); - break; + for ( Actor a=s.thinglist; a; a=a.snext ) + { + if ( (a.Health > 0) || (a.tics == -1) || !(a.bISMONSTER || a.player) || !a.IsHostile(Owner) ) continue; + // check if we can see it + if ( !SWWMUtility.InPlayerFOV(Owner.player,a) ) continue; + // someone's dying + SWWMUtility.MarkAchievement("wave",Owner.player); + breakout = true; + break; + } + if ( breakout ) break; } } - static SWWMGesture SetGesture( PlayerPawn mo, int which ) + static SWWMGesture SetGesture( PlayerPawn mo, int which, bool force = false ) { if ( !mo || !(mo is 'Demolitionist') ) return null; // only Demo if ( mo.Health <= 0 ) return null; // dead - if ( mo.player.cheats&CF_TOTALLYFROZEN ) return null; // frozen today - SWWMGesture w = SWWMGesture(mo.FindInventory("SWWMGesture")); + if ( !force && (mo.player.cheats&CF_TOTALLYFROZEN) ) return null; // frozen today (unless forced) + SWWMGesture w = SWWMGesture(mo.FindInventory('SWWMGesture')); if ( w && ((mo.player.PendingWeapon is 'SWWMGesture') || (mo.player.ReadyWeapon is 'SWWMGesture') || (mo.player.PendingWeapon is 'SWWMItemGesture') || (mo.player.ReadyWeapon is 'SWWMItemGesture')) ) { @@ -96,11 +114,12 @@ Class SWWMGesture : SWWMWeapon } if ( !w ) { - w = SWWMGesture(Spawn("SWWMGesture")); - mo.AddInventory(w); + w = SWWMGesture(Spawn('SWWMGesture')); + w.AttachToOwner(mo); } if ( mo.player.PendingWeapon != WP_NOCHANGE ) w.formerweapon = mo.player.PendingWeapon; else w.formerweapon = mo.player.ReadyWeapon; + w.lastformerweapon = w.formerweapon; w.whichweapon = null; w.whichgesture = which; mo.player.PendingWeapon = w; @@ -108,21 +127,21 @@ Class SWWMGesture : SWWMWeapon } // "special" gestures are run by switching to another "weapon" - static SWWMGesture SetSpecialGesture( PlayerPawn mo, Class a ) + static SWWMGesture SetSpecialGesture( PlayerPawn mo, Class a, bool forced = false ) { if ( !mo || !(mo is 'Demolitionist') ) return null; // only Demo if ( mo.Health <= 0 ) return null; // dead - if ( mo.player.cheats&CF_TOTALLYFROZEN ) return null; // frozen today + if ( !forced && (mo.player.cheats&CF_TOTALLYFROZEN) ) return null; // frozen today (unless forced) if ( !a ) return null; - SWWMGesture w = SWWMGesture(mo.FindInventory("SWWMGesture")); + SWWMGesture w = SWWMGesture(mo.FindInventory('SWWMGesture')); if ( w && ((mo.player.PendingWeapon is 'SWWMGesture') || (mo.player.ReadyWeapon is 'SWWMGesture') || (mo.player.PendingWeapon is 'SWWMItemGesture') || (mo.player.ReadyWeapon is 'SWWMItemGesture')) ) { // already gesturing // queue if unique - for ( int i=0; i 1 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } } action void A_BlowKiss() { - if ( swwm_mutevoice < 4 ) - A_StartSound("demolitionist/blowkiss",CHAN_DEMOVOICE,CHANF_OVERLAP,.4); let weap = Weapon(invoker); if ( !weap ) return; - Vector3 x, y, z, x2, y2, z2, dir; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-1*z); - let p = Spawn("LoveHeart",origin); + Vector3 dir; + Vector3 origin = SWWMUtility.GetFireOffset(self,10,0,-1); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + let p = Spawn('LoveHeart',origin); p.target = self; - p.angle = angle; - p.pitch = BulletSlope(); - p.vel = (cos(p.angle)*cos(p.pitch),sin(p.angle)*cos(p.pitch),-sin(p.pitch))*p.speed; + p.angle = atan2(x2.y,x2.x); + p.pitch = asin(-x2.z); + p.vel = x2*p.speed; // try to catch target in cone of vision - [x2, y2, z2] = swwm_CoordUtil.GetAxes(p.pitch,p.angle,0); Array hits; hits.Clear(); int rings = 1; @@ -343,20 +361,20 @@ Class SWWMGesture : SWWMWeapon { for ( int j=0; j<360; j+=(360/rings) ) { - dir = (x2+y2*cos(j)*i+z2*sin(j)*i).unit(); + dir = SWWMUtility.ConeSpread(x2,y2,z2,j,i); LineTrace(atan2(dir.y,dir.x),8000.,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); if ( d.HitType != TRACE_HitActor ) continue; bool addme = true; - for ( int k=0; k 0. ) { dir /= magvel; - dir += .2*(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)); + dir += .2*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); vel = dir.unit()*magvel; } - SetOrigin(level.Vec3Offset(pos,vel),true); - } - States - { - Spawn: - DOKI A -1 Bright; - Stop; + Scale *= scalestep; + Alpha = max(0.,Alpha-fadestep); + if ( Alpha <= 0. ) + Destroy(); } } @@ -102,6 +84,8 @@ Class LoveHeart : Actor +FOILINVUL; +PAINLESS; +NODAMAGETHRUST; + +NOFRICTION; + +SKYEXPLODE; } override int DoSpecialDamage( Actor target, int damage, Name damagetype ) @@ -109,9 +93,19 @@ Class LoveHeart : Actor bEXTREMEDEATH = false; bNOEXTREMEDEATH = false; SWWMStats s = null; - if ( Demolitionist(self.target) ) s = Demolitionist(self.target).mystats; + if ( Demolitionist(self.target) ) + { + s = Demolitionist(self.target).mystats; + // guaranteed on first smooch + if ( !Demolitionist(self.target).lastkiss || !Random[DemoLines](0,2) ) + { + if ( gametic > Demolitionist(self.target).lastkiss ) + SWWMHandler.AddOneliner("smooch",2,20); + Demolitionist(self.target).lastkiss = gametic+140; + } + } if ( s ) s.smooch++; - let raging = RagekitPower(self.target.FindInventory("RagekitPower")); + let raging = RagekitPower(self.target.FindInventory('RagekitPower')); if ( (target is 'WolfensteinSS') || (target.Species == 'WolfensteinSS') ) target.bFRIENDLY = false; if ( target.IsFriend(self.target) || SWWMUtility.IdentifyingDog(target) ) { @@ -122,10 +116,7 @@ Class LoveHeart : Actor raging.DoHitFX(); } if ( target.GiveBody(healamt,target.GetSpawnHealth()) ) - { - SWWMScoreObj.Spawn(healamt,target.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+target.Height/2),ST_Health); SWWMHandler.DoFlash(target,Color(32,224,128,255),10); - } if ( SWWMUtility.IdentifyingDog(target) ) { // befriend good doggo @@ -144,7 +135,7 @@ Class LoveHeart : Actor } Vector3 dirto = level.Vec3Diff(pos,target.Vec3Offset(0,0,target.Height/2)).unit(); SWWMUtility.DoKnockback(target,dirto,1500.*damage); - let bread = target.FindState("Pain"); + let bread = target.FindState('Pain'); if ( bread ) target.SetState(bread); if ( raging ) { @@ -158,23 +149,17 @@ Class LoveHeart : Actor } else if ( target is 'SWWMHangingKeen' ) damage = max(target.Health,damage); // rescued by love :3 - else if ( SWWMHDoomHandler.IsCuteGirl(target) ) - { - // no cute demon girl can resist demo's charm - damage = max(target.Health,damage); - bNOEXTREMEDEATH = true; - } return damage; } override int SpecialMissileHit( Actor victim ) { - if ( !victim.bSHOOTABLE && (victim != tracer) ) return 1; - if ( tracer && (victim != tracer) ) return 1; - return -1; + if ( !victim.bSHOOTABLE && (victim != tracer) ) return MHIT_PASS; + if ( tracer && (victim != tracer) ) return MHIT_PASS; + return MHIT_DEFAULT; } - action void A_HeartTick() + void A_HeartTick() { special1++; if ( !(special1%3) && (special2 > 0) ) special2--; @@ -189,16 +174,12 @@ Class LoveHeart : Actor for ( int i=2; i<6; i++ ) { Vector3 dir2 = vel.unit(); - let t = Spawn("LoveHeartTrail",level.Vec3Offset(pos,-dir2*steppy*i)); + let t = SWWMStaticSprite.SpawnAt('LoveHeartTrail',level.Vec3Offset(pos,-dir2*steppy*i)); t.scale = scale; } int numpt = Random[ExploS](1,3); for ( int i=0; i 0 ); - for ( int i=0; i 0 ); - for ( int i=0; i 0 ); - for ( int i=0; i bludtypes; - - // profiling data - bool profiling; - int bprofiletics, profiletics; // how many tics to aggregate data for - double prof_ms[8], prof_avg[8]; - int prof_calls[8]; - double curms; - //double curns; // will require NSTime() - - enum EProfileTimer - { - PT_WORLDTICK, - PT_WORLDTHINGSPAWNED, - PT_WORLDTHINGDESTROYED, - PT_WORLDTHINGDIED, - PT_WORLDTHINGDAMAGED, - PT_WORLDTHINGREVIVED, - PT_CHECKREPLACEMENT, - PT_CHECKREPLACEE - } - - private void ProfileTick() - { - curms = MSTime(); - //curns = NSTime(); - } - private void ProfileTock( int idx ) - { - double diff = (MSTime()-curms); - //double diff = (NSTime()-curns)/1000000.; - prof_ms[idx] += diff; - prof_avg[idx] = (prof_calls[idx]>0)?(prof_avg[idx]+diff)/2.:diff; - prof_calls[idx]++; - } - - override void OnRegister() - { - // oneliner RNG must be relative to consoleplayer - SetRandomSeed[DemoLines](Random[DemoLines]()+consoleplayer+MSTime()); - // "uninitialize" some vars - iwantdie = -1; - bossmap = -1; - indoomvacation = -1; - inultdoom2 = -1; - // this one can be initialized here easily - for ( int i=0; i list; - // fucking Windows - dat.Replace("\r",""); - list.Clear(); - dat.Split(list,"\n"); - for ( int i=0; i1)?"s":""); - } - - override void WorldTick() - { - if ( profiling ) ProfileTick(); - LangRefresh(); - QueueMaintenance(); - if ( !mnotify && (level.maptime >= 5) ) - { - mnotify = true; - let ti = ThinkerIterator.Create("SWWMStats",Thinker.STAT_STATIC); - SWWMStats s; - while ( s = SWWMStats(ti.Next()) ) - { - if ( !SWWMUtility.IsKnownMap() ) break; - if ( s.myplayer != players[consoleplayer] ) continue; - int clust = level.cluster; - if ( SWWMUtility.IsEviternity() ) - { - // we have to do some heavy lifting here because episodes don't match clusters - if ( level.levelnum <= 5 ) clust = 1; - else if ( level.levelnum <= 10 ) clust = 2; - else if ( level.levelnum <= 15 ) clust = 3; - else if ( level.levelnum <= 20 ) clust = 4; - else if ( level.levelnum <= 25 ) clust = 5; - else if ( level.levelnum <= 30 ) clust = 6; - else if ( level.levelnum <= 31 ) clust = 7; - else if ( level.levelnum <= 32 ) clust = 8; - } - int csiz = s.clustervisit.Size(); - if ( (csiz > 0) && (s.clustervisit[csiz-1] != clust) ) - Console.Printf(StringTable.Localize("$SWWM_NEWMISSION")); - } - } - OnelinerTick(); - FlashTick(); - ItemCountTrack(); - CombatTrack(); - OneHundredPercentCheck(); - UpdateHUDObjects(); - SimpleTracking(); - VanillaBossTick(); - if ( !profiling ) return; - ProfileTock(PT_WorldTick); - Console.Printf("%d...",profiletics); - profiletics--; - if ( profiletics > 0 ) return; - profiling = false; - static const String prof_name[] = - { - "WorldTick ", - "WorldThingSpawned ", - "WorldThingDestroyed", - "WorldThingDied ", - "WorldThingDamaged ", - "WorldThingRevived ", - "CheckReplacement ", - "CheckReplacee " - }; - Console.Printf("Done!"); - String str = String.Format( - "SWWMHandler profiling info for %d tic%s:\n" - " event name | calls | total ms | avg ms\n" - "---------------------|-------|-----------|-----------\n", - bprofiletics,(bprofiletics>1)?"s":""); - for ( int i=0; i<8; i++ ) - str.AppendFormat(" %s | %5d | %9.6f | %9.6f\n",prof_name[i],prof_calls[i],prof_ms[i],prof_avg[i]); - Console.Printf(str); - } - - override void PostUiTick() - { - OnelinerUITick(); - FlashUITick(); - VanillaBossUITick(); - CheatUITick(); - MapstartUITick(); - } - - override void WorldLinePreActivated( WorldEvent e ) - { - // oneliner on locked doors - if ( !e.Thing ) return; - int locknum = SWWMUtility.GetLineLock(e.ActivatedLine); - if ( (locknum < 1) || (locknum > 255) ) return; - if ( e.Thing.CheckLocalView() && !e.Thing.CheckKeys(locknum,false,true) ) - { - if ( !lastlock || (gametic > lastlock+20) ) - { - if ( SWWMUtility.IsValidLockNum(locknum) ) - lastlock = AddOneliner("locked",2); - else lastlock = AddOneliner("jammed",2); - } - } - } - - override void WorldLineActivated( WorldEvent e ) - { - if ( !(e.ActivationType&SPAC_Use) ) return; - if ( !e.Thing || !e.Thing.player ) return; - if ( (e.Thing.player == players[consoleplayer]) && swwm_beepboop ) - SWWMHandler.AddOneliner("buttonpush",2,0); - let w = SWWMWeapon(e.Thing.player.ReadyWeapon); - if ( (!w || !w.wallponch) && (!(e.Thing is 'Demolitionist') || !Demolitionist(e.Thing).hitactivate) ) return; - let s = SWWMStats.Find(e.Thing.player); - if ( s ) s.wponch++; - SWWMUtility.AchievementProgressInc("slemg",1,e.Thing.player); - } - - // stuff for hud - override void RenderUnderlay( RenderEvent e ) - { - // armor/health flashes - FlashRender(e); - if ( slotstrictwarn && (gametic < slotstrictwarn) ) - { - String str = StringTable.Localize("$SWWM_SETSLOTSTRICT"); - if ( sswstr != str ) - { - sswstr = str; - if ( sswl ) sswl.Destroy(); - } - double t = (slotstrictwarn-(gametic+e.FracTic))/20.; - double alph = clamp(t,0.,1.); - if ( !sswl ) sswl = newsmallfont.BreakLines(sswstr,300); - double yy = (200-sswl.Count()*newsmallfont.GetHeight())/2; - for ( int i=0; i 0) && (a.bBossSpawned || a.bCOUNTKILL) ) a.DamageMobj(self,self,a.Health,'EndMii',DMG_FORCED|DMG_THRUSTLESS); @@ -285,9 +277,10 @@ Class SWWMBossBrain : BossBrain Default { Tag "$FN_BOSSBRAIN"; - Radius 20; - Height 40; + Radius 16; + Height 32; +NOBLOOD; + +CASTSPRITESHADOW; } States { @@ -298,24 +291,32 @@ Class SWWMBossBrain : BossBrain MBRN A 10 { A_StartSound("brain/pain",CHAN_VOICE,attenuation:ATTN_NONE); - A_QuakeEx(3,3,3,15,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3); + A_QuakeEx(3.,3.,3.,15,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65535,rollIntensity:.3); if ( !eyeless ) SpawnBrainExpl(false); - Spawn("SWWMBossBrainPain",pos); + Spawn('SWWMBossBrainPain',pos); } Goto Spawn; Death: - MBRN A 120 + MBRN A 20 { + A_SetTranslation('DeadOats'); A_StartSound("brain/death",CHAN_VOICE,attenuation:ATTN_NONE); - A_QuakeEx(9,9,9,120,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); + A_QuakeEx(9.,9.,9.,120,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65535,rollIntensity:1.); if ( !eyeless ) { SpawnBrainExpl(true); EverythingDies(); } - Spawn("SWWMBossBrainPain",pos); + Spawn('SWWMBossBrainPain',pos); } - MBRN A -1 A_BrainDie(); + MBRN A 1 + { + A_FadeOut(.025,FTF_CLAMP); + return A_JumpIf(alpha<=0,1); + } + Wait; + MBRN A 80; + MBRN A 1 A_BrainDie(); Stop; } } @@ -339,7 +340,7 @@ Class SWWMGuard : Actor Obituary "$OB_WOLFGUARD"; Tag "$FN_WOLFGUARD"; Species "WolfensteinSS"; - DropItem "Clip"; + DropItem 'Clip'; } States { @@ -387,7 +388,7 @@ Class SWWMSS : Actor Obituary "$OB_WOLFSS_ORIG"; Tag "$FN_WOLFSS_ORIG"; Species "WolfensteinSS"; - DropItem "Clip"; + DropItem 'Clip'; } States { @@ -435,8 +436,8 @@ Class SWWMHans : Actor Speed 12; Monster; MinMissileChance 160; + MissileChanceMult .5; +BOSS; - +MISSILEMORE; +FLOORCLIP; +NORADIUSDMG; +DONTMORPH; diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc deleted file mode 100644 index c903d2840..000000000 --- a/zscript/swwm_player.zsc +++ /dev/null @@ -1,3615 +0,0 @@ -// The Demolitionist - -Class Demolitionist : PlayerPawn -{ - int last_jump_held, last_boost, last_kick; - Vector3 dashdir; - double dashfuel, dashboost; - int dashcooldown, boostcooldown, fuelcooldown; - bool fullfuel; - bool sendtoground; - bool key_reentrant; - bool bInDefaultInventory; - bool oldsinglefirst; - - int lastdamage; - transient int lastdamagetic; - bool lastground; - int lastgroundtic, lastairtic; - double lastvelz, prevvelz, landvelz; - double ssup; - - transient CVar myvoice; - - SWWMStats mystats; - int cairtime; - bool hasteleported; - bool hasrevived; - - int lastmpain; - - double guideangle, guidepitch, guideroll; - - // for weapon bobbing stuff - Array bumpvelz, bumppitch; - double oldangle, oldpitch; - double oldlagangle, oldlagpitch, oldlagready; - Vector3 oldlagvel; - double lagangle, lagpitch, lagready; - Vector3 lagvel; - - enum EUnderType - { - UNDER_NONE, - UNDER_WATER, - UNDER_SLIME, - UNDER_LAVA - }; - - int lastunder; - Color undercol; - int deadtimer; - transient int revivefail; - - transient int bumptic; - transient double lastbump; - transient CVar bumpstr; - - Actor selflight; - Actor oldencroached; - Vector3 oldencroachedpos; - int encroachtics; - - Vector3 pretelepos; - - SWWMItemSense itemsense; - int itemsense_cnt; - - int healcooldown, healtimer, oldhealth; - bool scriptedinvul; - bool hitactivate; - Actor froggy; - - transient int lastuse, failcounter, failcooldown; - transient SWWMItemTracer itrace; - bool meleeuse; - - transient bool bWalking; - - int airscreamtime; - - enum EInvWipe - { - WIPE_EPISODE = 1, - WIPE_CLUSTER = 2, - WIPE_MAP = 4 - } - - int invwipe; // inventory wipe flags for next level - - Property DashFuel : dashfuel; - - Default - { - Tag "$T_DEMOLITIONIST"; - Speed 1; - Radius 16; // should be 9 in theory, but it'd be too thin - Height 56; - Mass 500; - PainChance 255; - MaxSlopeSteepness 0; // mountain goat mode, all slopes are walkable - Player.DisplayName "$T_DEMOLITIONIST"; - // StartItem array is defined but not used directly - // just declared here for mod compat - Player.StartItem "ExplodiumGun"; - Player.StartItem "DeepImpact"; - Player.StartItem "AlmasteelPlating"; - Player.StartItem "SayaCollar"; - Player.ViewHeight 52; - Player.AirCapacity 0; - Player.GruntSpeed 20; - Player.ForwardMove 1., 1.; - Player.SideMove 1., 1.; - Player.SoundClass "demolitionist"; - DamageFactor "Drowning", 0.; - DamageFactor "Poison", 0.; - DamageFactor "PoisonCloud", 0.; - DamageFactor "Falling", 0.; - Demolitionist.DashFuel 240.; - +NOBLOOD; - +DONTGIB; - +NOICEDEATH; - +DONTMORPH; - +DONTDRAIN; - +DONTCORPSE; - } - // oof - Vector2 NormalizedMove() - { - if ( !(player.cmd.forwardmove|player.cmd.sidemove) ) - return (0,0); - Vector2 mvec = (player.cmd.forwardmove,-player.cmd.sidemove/.96); - double maxval = max(abs(mvec.x),abs(mvec.y)); - // sorry, we don't use that here specifically, that's for tweakspeed to handle - if ( !(player.cmd.buttons&BT_RUN) ) maxval *= 2.; - return mvec.unit()*maxval; - } - double TweakSpeed() - { - double fact = bWalking?.08:(player.cmd.buttons&BT_RUN)?1.25:.5; - for ( Inventory i=Inv; i; i=i.Inv ) fact *= i.GetSpeedFactor(); - return fact; - } - // oh yay, more cheat modification - override void CheatGive( String name, int amount ) - { - if ( !player.mo || (player.health <= 0) ) return; - int giveall = ALL_NO; - if ( name ~== "all" ) giveall = ALL_YES; - else if ( name ~== "everything" ) giveall = ALL_YESYES; - if ( giveall || (name ~== "health") ) - { - if ( amount > 0 ) - { - health = min(health+amount,1000); - player.health = health; - } - else player.health = health = 200; - } - if ( giveall || (name ~== "backpack") ) - { - let def = GetDefaultByType('HammerspaceEmbiggener'); - GiveInventory('TradedHammerspaceEmbiggener',def.MaxAmount,true); - if ( !giveall ) return; - } - if ( giveall || (name ~== "ammo") ) - { - // first we must build an array of all valid weapons, this saves time instead of doing recursive loops - Array > validweapons; - for ( int i=0; i)(AllActorClasses[i]); - if ( !type2 ) continue; - let rep = GetReplacement(type2); - if ( (rep != type2) && !(rep is "DehackedPickup") ) continue; - readonly weap = GetDefaultByType(type2); - if ( !player || !player.weapons.LocateWeapon(type2) || weap.bCheatNotWeapon || !weap.CanPickup(self) ) continue; - let ready = weap.FindState("Ready"); - if ( !ready || !ready.ValidateSpriteFrame() ) continue; - validweapons.Push(type2); - } - // Find every unique type of ammo. Give it to the player if - // he doesn't have it already, and set each to its maximum. - for ( int i=0; i)(AllActorClasses[i]); - if ( !type || (type == "Ammo") || (type == "SWWMAmmo") || ((type.GetParentClass() != "Ammo") && (type.GetParentClass() != "SWWMAmmo")) ) - continue; - // Only give if it's for a valid weapon - bool isvalid = false; - for ( int j=0; j weap = GetDefaultByType(validweapons[j]); - if ( (validweapons[j] is 'SWWMWeapon') && SWWMWeapon(weap).UsesAmmo(type) ) - { - isvalid = true; - break; - } - if ( (weap.AmmoType1 == type) || (weap.AmmoType2 == type) ) - { - isvalid = true; - break; - } - } - if ( !isvalid ) continue; - let ammoitem = FindInventory(type); - if ( !ammoitem ) - { - ammoitem = Inventory(Spawn(type)); - ammoitem.AttachToOwner(self); - ammoitem.Amount = ammoitem.MaxAmount; - } - else if ( ammoitem.Amount < ammoitem.MaxAmount ) - ammoitem.Amount = ammoitem.MaxAmount; - } - // also give mag ammo - for ( int i=0; i)(AllActorClasses[i]); - if ( !type || (type.GetParentClass() != "MagAmmo") ) - continue; - let pamo = GetDefaultByType(type).ParentAmmo; - // Only give if it's for a valid weapon - bool isvalid = false; - for ( int j=0; j weap = GetDefaultByType(validweapons[j]); - if ( (validweapons[j] is 'SWWMWeapon') && SWWMWeapon(weap).UsesAmmo(pamo) ) - { - isvalid = true; - break; - } - if ( (weap.AmmoType1 == pamo) || (weap.AmmoType2 == pamo) ) - { - isvalid = true; - break; - } - } - if ( !isvalid ) continue; - let magitem = FindInventory(type); - if ( !magitem ) - { - magitem = Inventory(Spawn(type)); - magitem.AttachToOwner(self); - magitem.Amount = magitem.MaxAmount; - } - else if ( magitem.Amount < magitem.MaxAmount ) - magitem.Amount = magitem.MaxAmount; - } - if ( !giveall ) return; - } - if ( giveall || (name ~== "armor") ) - { - // Give only subclasses of SWWMArmor - for ( int i=0; i)(AllActorClasses[i]); - if ( !type || (type == 'SWWMArmor') ) continue; - if ( GetReplacement(type) == type ) - { - let owned = FindInventory(type); - if ( owned ) - { - owned.Amount = owned.MaxAmount; - continue; - } - let item = Inventory(Spawn(type)); - item.ClearCounters(); // don't increase item counts - item.Amount = item.MaxAmount; - if ( !item.CallTryPickup(self) ) item.Destroy(); - } - } - // Also give spares - for ( int i=0; i)(AllActorClasses[i]); - if ( !type || (type == 'SWWMSpareArmor') ) continue; - if ( GetReplacement(type) == type ) - { - let owned = FindInventory(type); - if ( owned ) - { - owned.Amount = owned.MaxAmount; - continue; - } - let item = Inventory(Spawn(type)); - item.ClearCounters(); // don't increase item counts - item.Amount = item.MaxAmount; - if ( !item.CallTryPickup(self) ) item.Destroy(); - } - } - if ( !giveall ) return; - } - if ( giveall || (name ~== "keys") ) - { - for ( int i=0; i)(AllActorClasses[i]); - if ( !type ) continue; - let keyitem = GetDefaultByType(type); - if ( keyitem.special1 ) - { - let rep = GetReplacement(type); // handle replaced keys - if ( !(rep is 'Key') ) continue; - // iwad restrictions (vanilla doesn't care, but here they'll show in the inventory) - if ( !(gameinfo.gametype&GAME_HERETIC) && ((rep is 'SWWMKeyGreen') || (rep is 'SWWMKeyBlue') || (rep is 'SWWMKeyYellow')) ) - continue; - if ( !(gameinfo.gametype&GAME_DOOM) && ((rep is 'SWWMRedCard') || (rep is 'SWWMBlueCard') || (rep is 'SWWMYellowCard')) ) - continue; - let item = Inventory(Spawn(rep)); - SWWMHandler.KeyTagFix(item); - if ( item is 'SWWMKey' ) SWWMKey(item).propagated = true; // no anim - key_reentrant = true; - if ( !item.CallTryPickup(self) ) item.Destroy(); - key_reentrant = false; - } - } - if ( !giveall ) return; - } - if ( giveall || (name ~== "weapons") ) - { - let savedpending = player.PendingWeapon; - for ( int i=0; i)(AllActorClasses[i]); - if ( !type || (type == "Weapon") ) continue; - // Don't give already owned weapons - let owned = FindInventory(type); - if ( owned && (owned.Amount >= owned.MaxAmount) ) continue; - // Don't give replaced weapons unless the replacement was done by Dehacked. - let rep = GetReplacement(type); - if ( (rep == type) || (rep is "DehackedPickup") ) - { - // Give the weapon only if it is set in a weapon slot. - if ( !player.weapons.LocateWeapon(type) ) continue; - readonly def = GetDefaultByType(type); - if ( !def.bCheatNotWeapon && def.CanPickup(self) ) - GiveInventory(type,1,true); - } - } - player.PendingWeapon = savedpending; - if ( !giveall ) return; - } - if ( giveall || (name ~== "artifacts") ) - { - for ( int i=0; i)(AllActorClasses[i]); - if ( !type ) continue; - let rep = GetReplacement(type); - // don't give replaced items - if ( rep != type ) continue; - // no fabricators before hexen - if ( !(gameinfo.gametype&GAME_HEXEN) && (type is 'AmmoFabricator') ) continue; - // no barriers outside doom - if ( !(gameinfo.gametype&GAME_DOOM) && (type is 'EBarrier') ) continue; - // no gravity/tether outside raven - if ( !(gameinfo.gametype&GAME_RAVEN) && ((type is 'GravitySuppressor') || (type is 'SafetyTether')) ) continue; - // Don't give maxed items - let owned = FindInventory(type); - if ( owned && (owned.Amount >= owned.MaxAmount) ) continue; - let def = GetDefaultByType (type); - if ( def.Icon.isValid() && !(type is "PuzzleItem") && !(type is "Powerup") && !(type is "Ammo") && !(type is "MagAmmo") && !(type is "Armor") && !(type is "Key") && !(type is "DivineSpriteEffect") ) - GiveInventory(type,(amount<=0)?def.MaxAmount:amount,true); - } - if ( !giveall ) return; - } - if ( giveall || (name ~== "puzzlepieces") ) - { - for ( int i=0; i)(AllActorClasses[i]); - if ( !type ) continue; - let def = GetDefaultByType(type); - if ( !def.Icon.isValid() ) continue; - GiveInventory(type,(amount<=0)?def.MaxAmount:amount,true); - } - if ( !giveall ) return; - } - if ( (giveall == ALL_YESYES) || (name ~== "collectibles") ) - { - for ( int i=0; i)(AllActorClasses[i]); - if ( !type || (type == 'SWWMCollectible') ) continue; - let def = GetDefaultByType(type); - // check that we can collect it in this IWAD - if ( !def.ValidGame() ) continue; - let item = Inventory(Spawn(AllActorClasses[i])); - SWWMCollectible(item).propagated = true; // no score or anims - if ( !item.CallTryPickup(self) ) item.Destroy(); - } - if ( !giveall ) return; - } - if ( giveall ) return; - let type = name; - if ( !type ) - { - if ( PlayerNumber() == consoleplayer ) - A_Log(String.Format("Unknown item \"%s\"\n",name)); - } - else GiveInventory(type,amount,true); - } - override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) - { - if ( inflictor && inflictor.FindInventory("ParriedBuff") ) return StringTable.Localize("$O_PARRY"); - if ( mod == 'Jump' ) return StringTable.Localize("$O_JUMP"); - if ( mod == 'Dash' ) return StringTable.Localize("$O_DASH"); - if ( mod == 'Buttslam' ) return StringTable.Localize("$O_BUTT"); - if ( mod == 'GroundPound' ) return StringTable.Localize("$O_POUND"); - return Super.GetObituary(victim,inflictor,mod,playerattack); - } - override void GiveDefaultInventory() - { - if ( !player ) return; - bInDefaultInventory = true; // prevent default inventory from adding lore entries (fixes lore library disappearing when loading saves WHILE DEAD) - // we don't need hexen or basic armors - // we can simplify the code a lot here since no handling of many special conditions is needed - let sc = Inventory(Spawn('SayaCollar')); - if ( !sc.CallTryPickup(self) ) sc.Destroy(); - let ap = Inventory(Spawn('AlmasteelPlating')); - if ( !ap.CallTryPickup(self) ) ap.Destroy(); - let dp = Inventory(Spawn('DeepImpact')); - if ( !dp.CallTryPickup(self) ) dp.Destroy(); - let eg = ExplodiumGun(Spawn('ExplodiumGun')); - eg.firstselect = true; - if ( !eg.CallTryPickup(self) ) eg.Destroy(); - else player.ReadyWeapon = player.PendingWeapon = eg; - // in hexdd, we start with the chaos sphere in our grasp - if ( SWWMUtility.IsDeathkings() && SWWMUtility.CheckMD5List("vanillahexen.list") ) - { - let cs = Inventory(Spawn('SWWMChaosSphere')); - if ( !cs.CallTryPickup(self) ) cs.Destroy(); - } - // in deathmatch, we start with 8 embiggeners - if ( deathmatch ) - { - let em = Inventory(Spawn('TradedHammerspaceEmbiggener')); - em.Amount = em.MaxAmount; - if ( !em.CallTryPickup(self) ) em.Destroy(); - } - bInDefaultInventory = false; - } - override void ClearInventory() - { - Super.ClearInventory(); - // remove some specific "undroppable" items - Actor last = self; - while ( last.inv ) - { - let i = last.inv; - if ( ((i is 'SWWMArmor') && !i.bUNCLEARABLE) || (i is 'HammerspaceEmbiggener') ) - { - i.DepleteOrDestroy(); - if ( !i.bDestroyed ) last = i; - } - else last = i; - } - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - lastground = true; // prevent sudden landing sound on map start - // swap ourselves for a voodoo doll - if ( !player || (player.mo != self) ) - { - let v = Spawn("SWWMVoodooDoll",pos); - v.angle = angle; - v.player = player; - Destroy(); - return; - } - oldsinglefirst = swwm_singlefirst; // super already sets up the slots, so save the cvar value now - mystats = SWWMStats.Find(player); - } - void A_Dash() - { - vel += dashdir*dashboost*clamp(dashfuel/20.,0.,1.); - player.vel *= 0.; - if ( dashboost < .2 ) dashboost = 0.; - else - { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:800); - if ( !(player.cmd.buttons&BT_USER2) ) dashboost *= .1; - } - double fueluse = (dashfuel-max(0.,dashfuel-dashboost))/60.; - SWWMUtility.AchievementProgressIncDouble("fuel",fueluse,player); - mystats.fuelusage += fueluse; - if ( !swwm_superfuel ) dashfuel = max(0.,dashfuel-dashboost); - dashcooldown = min(40,max(10,int(dashcooldown*1.4))); - fuelcooldown = max(30,fuelcooldown); - if ( (dashfuel <= 0.) && fullfuel ) - SWWMUtility.AchievementProgressInc("brake",1,player); - if ( (dashfuel <= 0.) || (dashboost <= 0.) ) - SetStateLabel("DashEnd"); - } - void A_BoostUp( bool initial = false ) - { - vel += (0,0,1)*dashboost*clamp(dashfuel/10.,0,1.); - player.vel *= 0.; - if ( dashboost < .2 ) dashboost = 0.; - else - { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:800); - dashboost *= (player.cmd.buttons&BT_JUMP)?.95:.4; - last_boost = level.maptime+1; - } - double fueluse = (dashfuel-max(0.,dashfuel-dashboost))/60.; - SWWMUtility.AchievementProgressIncDouble("fuel",fueluse,player); - mystats.fuelusage += fueluse; - if ( !swwm_superfuel ) dashfuel = max(0.,dashfuel-dashboost); - if ( ((dashfuel <= 0.) || (dashboost <= 0.)) ) - { - if ( !initial ) - { - if ( player.onground ) SetStateLabel("JumpEnd"); - else SetStateLabel("Fall"); - } - return; - } - fuelcooldown = max(20,fuelcooldown); - } - void SenseItems() - { - if ( player.cmd.buttons&BT_USER3 ) - { - let bt = BlockThingsIterator.Create(self,800); - while ( bt.Next() ) - { - let i = bt.Thing; - if ( !i || (!(i is 'Inventory') && !(i is 'Chancebox') && !(i is 'SWWMRespawnTimer')) ) continue; - if ( (i is 'Inventory') && (i.bINVISIBLE || !i.bSPECIAL || Inventory(i).Owner) ) continue; - if ( (i is 'Chancebox') && (i.CurState != i.SpawnState) ) continue; - if ( !SWWMUtility.SphereIntersect(i,pos,800) ) continue; - if ( !level.allmap && !CheckSight(i,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; - SWWMItemSense.Spawn(self,i); - } - bt.Destroy(); - } - SWWMItemsense itm = itemsense; - SWWMItemsense prev = null, next; - while ( itm ) - { - next = itm.next; - if ( itm.Tick() ) - { - if ( prev ) prev.next = next; - else itemsense = next; - itm.Destroy(); - itemsense_cnt--; - } - else prev = itm; - itm = next; - } - } - void CheckDefaceTexture() - { - if ( player.usedown ) - return; - FLineTraceData d; - LineTrace(angle,DEFMELEERANGE*2,pitch,TRF_THRUACTORS,player.viewheight,data:d); - if ( d.HitType == TRACE_HitNone ) return; - bool remove; - TextureID replacewith; - [remove, replacewith] = SWWMUtility.DefaceTexture(d.HitTexture); - if ( !remove ) return; - if ( (d.HitType != TRACE_HitWall) || !d.HitLine.special || !(d.HitLine.activation&SPAC_Use) ) - player.usedown = true; - A_StartSound("bestsound",CHAN_ITEMEXTRA,CHANF_OVERLAP); - lastbump *= .97; - int scr = (TexMan.GetName(d.HitTexture).Left(6)~=="ZZWOLF")?200:20; - if ( scr == 20 ) SWWMUtility.AchievementProgressInc("doodle",1,player); - SWWMCredits.Give(player,scr); - if ( player == players[consoleplayer] ) SWWMScoreObj.Spawn(scr,d.HitLocation); - if ( d.HitType == TRACE_HitWall ) - { - if ( d.Hit3DFloor ) - { - // TODO connected textures for upper/lower - if ( d.Hit3DFloor.flags&F3DFloor.FF_UPPERTEXTURE ) d.HitLine.sidedef[d.LineSide].SetTexture(0,replacewith); - else if ( d.Hit3DFloor.flags&F3DFloor.FF_LOWERTEXTURE ) d.HitLine.sidedef[d.LineSide].SetTexture(2,replacewith); - else d.Hit3DFloor.master.sidedef[0].SetTexture(1,replacewith); - } - else - { - // find connected sidedefs with the same texture - Array con; - con.Clear(); - con.Push(d.HitLine); - Sector s = d.LineSide?d.HitLine.backsector:d.HitLine.frontsector; - int found = 0; - do - { - found = 0; - for ( int i=0; i 0 ); - for ( int i=0; i con; - con.Clear(); - con.Push(d.HitSector); - int found; - do - { - found = 0; - for ( int i=0; i= con.Size()) ) - { - found++; - con.Push(l.frontsector); - } - if ( (l.backsector.GetTexture(1) == d.HitTexture) && (con.Find(l.backsector) >= con.Size()) ) - { - found++; - con.Push(l.backsector); - } - } - } - } - while ( found > 0 ); - for ( int i=0; i con; - con.Clear(); - con.Push(d.HitSector); - int found; - do - { - found = 0; - for ( int i=0; i= con.Size()) ) - { - found++; - con.Push(l.frontsector); - } - if ( (l.backsector.GetTexture(0) == d.HitTexture) && (con.Find(l.backsector) >= con.Size()) ) - { - found++; - con.Push(l.backsector); - } - } - } - } - while ( found > 0 ); - for ( int i=0; i ignoreme; - ignoreme.Clear(); - for ( double i=0; i<.2; i+=.02 ) - { - for ( int j=0; j<360; j+=(360/rings) ) - { - dir = (x+y*cos(j)*i+z*sin(j)*i).unit(); - itrace.Trace(origin,os,dir,UseRange,0); - if ( itrace.Results.HitType != TRACE_HitActor ) continue; - if ( ignoreme.Find(itrace.Results.HitActor) < ignoreme.Size() ) continue; - player.usedown = true; // we found an item, ignore further uses - if ( itrace.Results.HitActor.Used(self) ) return; - ignoreme.Push(itrace.Results.HitActor); - } - rings += 2; - } - } - void CheckUnderwaterAmb( bool restore = false ) - { - Vector3 headpos = Vec3Offset(0,0,player.viewheight); - Vector3 centerpos = Vec3Offset(0,0,height/2); - Sector headregion = null; - if ( CurSector.moreflags&Sector.SECMF_UNDERWATER ) // check underwater sector - headregion = CurSector; - else if ( CurSector.heightsec && (Cursector.heightsec.moreflags&Sector.SECMF_UNDERWATER) ) // check height transfer - { - let hsec = CurSector.heightsec; - double fh = hsec.floorplane.ZAtPoint(pos.xy); - if ( pos.z < fh ) - { - if ( headpos.z <= fh ) - headregion = hsec; - } - else if ( !(hsec.moreflags&Sector.SECMF_FAKEFLOORONLY) && (headpos.z > hsec.ceilingplane.ZAtPoint(pos.xy)) ) - headregion = hsec; - } - else // check 3D floors - { - for ( int i=0; i centerpos.z) ) continue; - if ( headpos.z <= ff_top ) - headregion = ff.model; - break; - } - } - int curunder = UNDER_NONE; - if ( headregion ) - { - switch ( headregion.damagetype ) - { - case 'Fire': - case 'Lava': - curunder = UNDER_LAVA; - break; - case 'Slime': - case 'Poison': - case 'PoisonCloud': - curunder = UNDER_SLIME; - break; - case 'Ice': - case 'Drowning': - default: - curunder = UNDER_WATER; - break; - } - undercol = headregion.ColorMap.LightColor; - } - if ( (curunder != lastunder) || restore ) - { - static const string undersnd[] = {"","misc/underwater","misc/underslime","misc/underlava"}; - static const string entersnd[] = {"","misc/waterenter","misc/slimeenter","misc/lavaenter"}; - static const string exitsnd[] = {"","misc/waterexit","misc/slimeexit","misc/lavaexit"}; - A_StopSound(CHAN_AMBEXTRA); - if ( curunder > UNDER_NONE ) - { - A_StartSound(undersnd[curunder],CHAN_AMBEXTRA,CHANF_LOOP|CHANF_UI); - if ( !restore && (players[consoleplayer].Camera == self) ) - A_StartSound(entersnd[curunder],CHAN_FOOTSTEP,CHANF_OVERLAP|CHANF_UI); - } - if ( !restore && (lastunder > UNDER_NONE) && (players[consoleplayer].Camera == self) ) - A_StartSound(exitsnd[lastunder],CHAN_FOOTSTEP,CHANF_OVERLAP|CHANF_UI); - } - if ( curunder > UNDER_NONE ) - A_SoundVolume(CHAN_AMBEXTRA,(players[consoleplayer].Camera==self)?1.:0.); - lastunder = curunder; - } - override void CheckFOV() - { - if ( !player ) return; - float desired = player.desiredfov; - // adjust fov from weapon (abs due to special use of negative - // to prevent it from scaling look sensitivity) - if ( (player.playerstate != PST_DEAD) && player.readyweapon - && player.readyweapon.fovscale ) - desired *= abs(player.readyweapon.fovscale); - // additional fov bump from various effects - // akin to the old A_ZoomFactor trick, but not limited to weapons and can stack - if ( lastbump <= 0. ) lastbump = 1.; - if ( lastbump != 1. ) - { - if ( !bumpstr ) bumpstr = CVar.GetCVar('swwm_bumpstrength',player); - double str = bumpstr.GetFloat(); - player.fov *= lastbump*str+1.-str; - lastbump = 1.; - } - // adjust fov from dashing - double spd = vel.length(); - if ( InStateSequence(CurState,FindState("Dash")) && (spd > 10.) ) - { - Vector3 facedir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch)); - if ( spd > 0. ) - { - double rel = max(0,vel.unit() dot facedir); - desired *= 1.+clamp(rel*(spd-10.),-80.,80.)*.002; - } - } - if ( player.fov == desired ) return; - // interpolate towards desired fov - if ( abs(player.fov-desired) < .1 ) player.fov = desired; - else - { - float zoom = max(.1,abs(player.fov-desired)*.35); - if ( player.fov > desired ) player.fov -= zoom; - else player.fov += zoom; - } - } - override Vector2 BobWeapon( double ticfrac ) - { - // non-mod weapons bob normally - if ( !(player.ReadyWeapon is 'SWWMWeapon') ) - return Super.BobWeapon(ticfrac); - bool oldbob = !!(player.WeaponState&WF_WEAPONBOBBING); - player.WeaponState |= WF_WEAPONBOBBING; // always bob - Vector2 cur = Super.BobWeapon(ticfrac); - if ( !oldbob ) player.WeaponState &= ~WF_WEAPONBOBBING; - double fangle = oldangle*(1.-ticfrac)+angle*ticfrac; - double fpitch = (oldpitch*(1.-ticfrac)+pitch*ticfrac); - double flagangle = (oldlagangle*(1.-ticfrac)+lagangle*ticfrac); - double flagpitch = (oldlagpitch*(1.-ticfrac)+lagpitch*ticfrac); - double diffang = fangle-flagangle; - double diffpitch = fpitch-flagpitch; - if ( abs(diffang) > 1. ) - { - int sgn = (diffang>0)?1:-1; - diffang = abs(diffang)**.7*sgn; - } - if ( abs(diffpitch) > 1. ) - { - int sgn = (diffpitch>0)?1:-1; - diffpitch = abs(diffpitch)**.7*sgn; - } - Vector3 flagvel = oldlagvel*(1.-ticfrac)+lagvel*ticfrac; - double diffx = flagvel dot (cos(flagangle+90),sin(flagangle+90),0); - double diffy = flagvel dot (0,0,1); - if ( abs(diffx) > 1. ) - { - int sgn = (diffx>0)?1:-1; - diffx = abs(diffx)**.5*sgn; - } - if ( abs(diffy) > 1. ) - { - int sgn = (diffy>0)?1:-1; - diffy = abs(diffy)**.5*sgn; - } - // don't do inertial sway when in 6dof mode, causes issues - if ( !swwm_fly6dof || !((waterlevel < 2) && bFly && !bFlyCheat && !(player.cheats&CF_NOCLIP2)) ) - { - cur.x += diffang; - cur.y -= diffpitch; - cur.x += diffx*4.; - cur.y += diffy*4.; - } - return cur*(oldlagready*(1.-ticfrac)+lagready*ticfrac); - } - override void PlayerThink() - { - oldangle = angle; - oldpitch = pitch; - if ( player && (player.mo == self) && (player.playerstate != PST_DEAD) && (player.cmd.buttons&BT_USE) ) - { - if ( !player.usedown ) lastuse = gametic; - CheckDefaceTexture(); - if ( !player.usedown && froggy ) - player.usedown = froggy.Used(self); - // try to "use" the item closest to the crosshair - CheckItemUsePickup(); - } - Super.PlayerThink(); - if ( (gametic == lastuse) && IsActorPlayingSound(CHAN_VOICE,"*usefail") ) - { - failcounter++; - if ( (failcounter > 8) && !Random[DemoLines](0,max(0,12-failcounter/3)) && (gametic > failcooldown) && (swwm_mutevoice < 2) ) - { - failcooldown = SWWMHandler.AddOneliner("usefail",2,20); - failcounter = max(4,failcounter-10); - } - else if ( (failcounter > 2) && Random[DemoLines](0,1) && (gametic > failcooldown) && (swwm_mutevoice < 4) ) - { - A_StartSound(String.Format("voice/%s/usegrunt",myvoice.GetString()),CHAN_DEMOVOICE,CHANF_OVERLAP); - A_StartSound(String.Format("voice/%s/usegrunt",myvoice.GetString()),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); - failcooldown = int(S_GetLength(String.Format("voice/%s/usegrunt",myvoice.GetString()))*GameTicRate); - failcounter = max(2,failcounter-1); - } - } - else if ( gametic > lastuse+50 ) failcounter = 0; - oldlagangle = lagangle; - oldlagpitch = lagpitch; - lagangle = lagangle*.8+angle*.2; - lagpitch = lagpitch*.8+pitch*.2; - if ( !player || (player.mo != self) ) return; - if ( (player.playerstate != PST_DEAD) && (player.jumptics != 0) ) - { - // faster falloff - player.jumptics -= 5; - if ( player.onground && (player.jumptics < -18) ) - player.jumptics = 0; - } - if ( (player.playerstate != PST_DEAD) && !ReactionTime ) - { - // quick grenade - if ( player.cmd.buttons&BT_USER4 ) - SWWMGesture.SetGesture(self,GS_Grenade); - // emergency melee with no weapon - else if ( !player.ReadyWeapon && (player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_USER1)) ) - SWWMGesture.SetGesture(self,GS_EmptyMelee); - } - } - void NearbyItemSparkles() - { - if ( (player != players[consoleplayer]) || !swwm_itemsparkles ) return; - let bt = BlockThingsIterator.Create(self,500); - while ( bt.Next() ) - { - let t = bt.Thing; - if ( !t || !(t is 'Inventory') || !t.bSPECIAL || t.bINVISIBLE || Inventory(t).Owner || !SWWMUtility.SphereIntersect(t,pos,500) ) - continue; - Vector3 bpos = (0,0,16); - if ( t.bFLOATBOB ) bpos.z += t.GetBobOffset(); - double alph = clamp((500.-Distance3D(t))/500.,0.,1.); - Color pcol = "Gold"; - if ( Inventory(t).PickupFlash is 'SWWMPickupFlash' ) - { - let def = GetDefaultByType(Inventory(t).PickupFlash); - pcol = Color(def.Args[1]*85,def.Args[2]*85,def.Args[3]*85); - } - int numpt = clamp(int(max(t.radius,t.height-16)/4),1,8); - for ( int i=0; i oldhealth) ) - { - healtimer = 0; - healcooldown = 80; - } - else if ( health > 200 ) - { - if ( healcooldown > 0 ) healcooldown--; - else - { - if ( health > 1000 ) - { - let spr = DivineSpriteEffect(FindInventory("DivineSpriteEffect")); - if ( !spr || spr.bHealDone ) - A_SetHealth(max(1000,health-10)); - if ( health <= 1000 ) healcooldown = 40; - } - else if ( health > 500 ) - { - if ( !FindInventory("GrilledCheeseSafeguard") && !(healtimer%3) ) - A_SetHealth(health-1); - if ( health <= 500 ) healcooldown = 20; - } - else if ( health > 200 ) - { - if ( !FindInventory("RefresherRegen") && !(healtimer%12) ) - A_SetHealth(health-1); - } - healtimer++; - } - } - } - oldhealth = health; - oldlagvel = lagvel; - oldlagready = lagready; - if ( player.weaponstate&WF_WEAPONBOBBING ) lagready = lagready*.9+.1; - else lagready = lagready*.4; - lagvel = lagvel*.8+vel*.2; - double traveldist = level.Vec3Diff(oldpos,pos).length(); - if ( waterlevel < 2 ) - { - if ( !player.onground || bNoGravity ) - { - cairtime++; - if ( cairtime > mystats.airtime ) mystats.airtime = cairtime; - mystats.airdist += traveldist; - if ( (vel.z < -fallingscreamminspeed) && (vel.z > -fallingscreammaxspeed) && (player == players[consoleplayer]) ) - SWWMHandler.AddOneliner("falling",2,30); - } - else - { - SWWMHandler.CancelOneliner("falling"); - airscreamtime = 0; - cairtime = 0; - mystats.grounddist += traveldist; - SWWMUtility.AchievementProgressIncDouble("travel",traveldist/32000.,player); - } - } - else mystats.swimdist += traveldist; - CheckUnderwaterAmb(); - SenseItems(); - if ( vel.length() > mystats.topspeed ) mystats.topspeed = vel.length(); - if ( vel.length() > ((3600*GameTicRate)/32000.) ) - SWWMUtility.AchievementProgress("sanic",int((vel.length()*3600*GameTicRate)/32000.),player); - if ( !myvoice ) myvoice = CVar.GetCVar('swwm_voicetype',player); - if ( player.onground && !bNoGravity && !lastground && (waterlevel < 2) ) - { - // bump down weapon - bumpvelz.Push(-lastvelz); - double bpitch = min(-lastvelz/10.,20); - if ( lastvelz < -25 ) - { - let s = Spawn("DemolitionistShockwave",pos); - s.target = self; - s.special1 = int(-lastvelz); - A_AlertMonsters(swwm_uncapalert?0:2500); - bpitch = min(bpitch+30,60); - lastbump *= 1.3; - if ( FindInventory("RagekitPower") ) - { - // stop for just a split second UNLESS bunnyhopping - if ( !(player.cmd.buttons&BT_RUN) || (level.maptime >= (lastairtic+10)) ) - ReactionTime = 6; - } - else - { - A_Stop(); - ReactionTime = 17; - } - if ( player == players[consoleplayer] ) - { - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP); - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.7); - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.4); - } - mystats.stompcount++; - } - double newp = min(90,pitch+bpitch); - bumppitch.Push(newp-pitch); - A_SetPitch(newp,SPF_INTERPOLATE); - if ( lastvelz < -10 ) - { - A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:200); - } - if ( (lastvelz < -gruntspeed) && (swwm_mutevoice < 4) && (health > 0) ) - A_StartSound(String.Format("voice/%s/grunt",myvoice.GetString()),CHAN_DEMOVOICE,CHANF_OVERLAP); - if ( lastvelz < -1 ) - A_Footstep(0,1,clamp(-lastvelz*0.05,0.0,1.0),true); - // bounce off slopes - if ( pos.z <= floorz ) - { - F3DFloor ff; - for ( int i=0; i= -25) && (!oldencroached.bISMONSTER || (oldencroached.Health > 0)) ) vel += oldencroached.vel+level.Vec3Diff(oldencroachedpos,oldencroached.pos); - oldencroached = null; - encroachtics = 0; - } - if ( encroached && encroached.bSHOOTABLE && !encroached.bNODAMAGE && (lastvelz <= 0) && !(encroached is 'Demolitionist') ) - { - if ( (lastvelz < -5) || !(level.maptime%5) ) - { - int realdmg = encroached.DamageMobj(self,self,int((2+max(0,-lastvelz*3))*max(1.,mass/encroached.mass)),'Jump',DMG_THRUSTLESS); - if ( FindInventory("RagekitPower") ) - { - let ps = Spawn("BigPunchSplash",pos); - ps.damagetype = 'Jump'; - ps.target = self; - ps.special1 = realdmg; - } - if ( encroached && !encroached.bNOBLOOD && !encroached.bINVULNERABLE ) - { - encroached.TraceBleed(realdmg,self); - encroached.SpawnBlood(pos,angle,realdmg); - } - } - } - for ( int i=0; i double.epsilon ) continue; - bumpvelz.Delete(i--); - } - for ( int i=0; i double.epsilon ) continue; - bumppitch.Delete(i--); - } - if ( player.onground && !lastground ) landvelz = lastvelz; - else if ( !player.onground && lastground ) landvelz = 0; - else if ( player.onground && lastground ) landvelz *= .9; - lastground = player.onground; - lastvelz = prevvelz; - prevvelz = vel.z; - bool isdashing = InStateSequence(CurState,FindState("Dash")); - bool isboosting = InStateSequence(CurState,FindState("Boost")); - bNOFRICTION = (((waterlevel<2)&&(bFly&&!bFlyCheat&&!(player.cheats&CF_NOCLIP2)))||isdashing); - fuelcooldown = max(0,fuelcooldown-1); - dashcooldown = max(0,dashcooldown-1); - boostcooldown = max(0,boostcooldown-1); - if ( fuelcooldown <= 0 ) - { - double oldfuel = dashfuel; - dashfuel = min(default.dashfuel,dashfuel+clamp(dashfuel*.025,.1,3.)); - // stops - if ( (oldfuel < (default.dashfuel/24)) && (dashfuel >= default.dashfuel/24) ) - fuelcooldown = 20; - else if ( (oldfuel < (default.dashfuel/12)) && (dashfuel >= default.dashfuel/12) ) - fuelcooldown = 10; - } - if ( ((dashboost <= 0) || !(isdashing || (isboosting && player.cmd.buttons&BT_JUMP))) && IsActorPlayingSound(CHAN_JETPACK,"demolitionist/jet") ) - A_StartSound("demolitionist/jetstop",CHAN_JETPACK); - PainChance = isdashing?0:255; - if ( isdashing || (vel.length() > 30) ) - { - bool oldpush = bCANPUSHWALLS; - bool olduse = bCANUSEWALLS; - bool oldmcross = bACTIVATEMCROSS; - bool oldtele = bNOTELEPORT; - // needed to prevent the many TryMove calls from activating unwanted lines - bCANPUSHWALLS = false; - bCANUSEWALLS = false; - bACTIVATEMCROSS = false; - bNOTELEPORT = true; - Actor a; - if ( isdashing && (dashboost > 0.) ) - { - for ( int i=-1; i<=1; i+=2 ) for ( int j=1; j<4; j++ ) - { - a = Spawn("DashTrail",Vec3Angle(15,angle+i*140,35)); - a.target = self; - a.vel = (RotateVector((j,0),angle+i*160),0)-(0,0,1)*j; - a.vel -= vel*.5; - } - } - Vector3 dir = vel; - double spd = dir.length(); - dir = dir/spd; - Vector3 viewdir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); - // look for things we could potentially bump into - bool bumped = false; - let bi = BlockThingsIterator.Create(self,500); - let raging = RagekitPower(FindInventory("RagekitPower")); - double maxmass = max(mass*spd/40.,200); - if ( raging ) maxmass *= 2; - while ( (spd > 0) && bi.Next() ) - { - a = bi.Thing; - if ( !a || (a == self) || (!a.bSOLID && !a.bSHOOTABLE) || a.bTHRUACTORS || a.bCORPSE || !CanCollideWith(a,false) || !a.CanCollideWith(self,true) ) continue; - if ( !SWWMUtility.ExtrudeIntersect(self,a,dir*(spd+radius),8) ) continue; - if ( (a.pos.z <= a.floorz) && (a.height <= MaxStepHeight) ) continue; - Vector3 diff = level.Vec3Diff(pos,a.pos); - Vector3 dirto = diff.unit(); - if ( dir dot dirto < .1 ) continue; - if ( (diff.z <= -a.height) && (lastvelz < -25) ) continue; - if ( (diff.z <= -a.height) && !isdashing ) continue; - // don't bump bridges if hit at a specific angle - if ( a.bACTLIKEBRIDGE ) - { - Vector3 bnorm = -dirto; - if ( diff.z <= -a.height ) continue; // no bump from above - else if ( diff.z >= Height ) bnorm = (0,0,-1); - else if ( diff.x > a.Radius+Radius ) bnorm = (-1,0,0); - else if ( diff.x < -(a.Radius+Radius) ) bnorm = (1,0,0); - else if ( diff.y > a.Radius+Radius ) bnorm = (0,-1,0); - else if ( diff.y < -(a.Radius+Radius) ) bnorm = (0,1,0); - if ( dir dot bnorm > -.6 ) continue; - } - if ( !CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; - // large monsters will stop the player (unless hit from above if we're going at ground pound speed) - A_QuakeEx(4,4,4,10,0,128,"",QF_RELATIVE|QF_SCALEDOWN); - A_AlertMonsters(swwm_uncapalert?0:800); - A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); - a.A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); - bumptic = gametic+int(20+spd/4.); - lastbump *= .8; - if ( (a.bDONTTHRUST || a.bACTLIKEBRIDGE || (a.Mass >= maxmass) || (!a.bSHOOTABLE && !a.bPUSHABLE && (a.Health > 0))) && a.bSOLID && (dir dot dirto > .65) ) - { - if ( bumped ) continue; - bumped = true; - SWWMUtility.AchievementProgressInc("bonk",1,player); - A_QuakeEx(8,8,8,16,0,128,"",QF_RELATIVE|QF_SCALEDOWN); - vel *= .2; - vel -= dir*(10+(spd*30/mass)); - vel -= dirto*(10+(spd*50/mass)); - vel.z += 5+(spd*(10/mass)); - dashboost *= 0.; - } - Vector3 pushdir = dirto*.1+dir*.9; - if ( !a.bDONTTHRUST && (a.Mass < maxmass) && (a.bSHOOTABLE || a.bPUSHABLE) ) - { - a.vel += pushdir*(25+(spd*20/max(50,a.mass))); - if ( (a.pos.z <= a.floorz) || !a.TestMobjZ() ) - a.vel.z += 5+(spd*(5/max(50,a.mass))); - } - int flg = DMG_THRUSTLESS; - if ( raging ) flg |= DMG_FOILINVUL; - if ( !a.player && !a.bDONTBLAST ) a.bBLASTED = true; - int dmg = int(10+spd*3.); - bool buttslam = false; - // BUTTSLAM - if ( dir dot viewdir < -.3 ) - { - dmg *= 3; - buttslam = true; - } - if ( a.bSHOOTABLE ) - { - dmg = a.DamageMobj(self,self,dmg,buttslam?'Buttslam':'Dash',flg); - if ( a && !a.bNOBLOOD && (raging || !a.bINVULNERABLE) ) - { - a.TraceBleed(dmg,self); - a.SpawnBlood(level.Vec3Offset(pos,diff/2),atan2(dir.y,dir.x)+180,dmg); - } - if ( buttslam && (!a || (a.Health <= 0)) ) - { - A_StartSound("demolitionist/buttslam",CHAN_DAMAGE,CHANF_OVERLAP,1.,.4); - if ( swwm_buttsfx ) A_StartSound("demolitionist/buttslamx",CHAN_DAMAGE,CHAN_OVERLAP,1.,.2); - Spawn("SWWMItemFog",level.Vec3Offset(pos,diff/2)); - A_QuakeEx(8,8,8,8,0,3000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:1.); - mystats.buttslams++; - lastbump *= .8; - } - } - if ( raging ) - { - let ps = Spawn("BigPunchSplash",level.Vec3Offset(pos,diff/2)); - ps.damagetype = buttslam?'Buttslam':'Dash'; - ps.target = self; - ps.special1 = dmg; - raging.DoHitFX(); - } - } - // check for ceiling collision - if ( (spd > 0) && !bumped && ((pos.z+Height+dir.z*spd) >= ceilingz) ) - { - F3DFloor ff; - for ( int i=0; i 0) && !bumped && !TryMove(Vec2Offset(steppy.x,steppy.y),1,false,tm) && SWWMUtility.BlockingLineIsBlocking(self,Line.ML_BLOCKEVERYTHING|Line.ML_BLOCKING|Line.ML_BLOCK_PLAYERS) ) - { - Vector3 wallnorm = (-BlockingLine.delta.y,BlockingLine.delta.x,0).unit(); - int lside = 1; - if ( !BlockingLine.sidedef[1] || !SWWMUtility.PointOnLineSide(pos.xy,BlockingLine) ) - { - lside = 0; - wallnorm *= -1; - } - // don't bump if we're only grazing it - if ( dir dot wallnorm > -.6 ) - continue; - bool buttslam = false; - // BUTTSLAM - if ( dir dot viewdir < -.3 ) - { - buttslam = true; - // leave buttmark - A_SprayDecal("ButtMark",172,(cos(angle+90)*2,sin(angle+90)*2,Height*.54),dir); - A_SprayDecal("ButtMark",172,(cos(angle-90)*2,sin(angle-90)*2,Height*.54),dir); - } - if ( raging || swwm_omnibust ) - { - // see if we can bust it - let tempme = new("LineTracer"); // gross hack to pass needed data - int dmg = int(10+spd*3.); - if ( raging ) dmg *= 8; - if ( buttslam ) dmg *= 3; - tempme.Results.HitLine = BlockingLine; - tempme.Results.HitType = TRACE_HitWall; - tempme.Results.Side = lside; - tempme.Results.Tier = TIER_MIDDLE; - if ( BlockingLine.sidedef[1] ) - { - double ceilz = BlockingLine.sidedef[!lside].sector.ceilingplane.ZAtPoint(pos.xy); - double florz = BlockingLine.sidedef[!lside].sector.floorplane.ZAtPoint(pos.xy); - if ( pos.z+Height >= ceilz ) - tempme.Results.Tier = TIER_UPPER; - else if ( pos.z <= florz ) - tempme.Results.Tier = TIER_LOWER; - } - if ( BusterWall.Bust(tempme.Results,dmg,self,dir,pos.z+Height) ) - { - // busted through - if ( raging ) - { - let ps = Spawn("BigPunchSplash",Vec3Offset(dir.x*radius,dir.y*radius,(tempme.Results.Tier==TIER_UPPER)?Height:(tempme.Results.Tier==TIER_LOWER)?0:(Height/2))); - ps.damagetype = buttslam?'Buttslam':'Dash'; - ps.target = self; - ps.special1 = int(10+spd*3.); - raging.DoHitFX(); - } - A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); - if ( buttslam ) - { - A_StartSound("demolitionist/buttslam",CHAN_DAMAGE,CHANF_OVERLAP,1.,.4); - if ( swwm_buttsfx ) A_StartSound("demolitionist/buttslamx",CHAN_DAMAGE,CHAN_OVERLAP,1.,.2); - Spawn("SWWMItemFog",Vec3Offset(dir.x*radius,dir.y*radius,(tempme.Results.Tier==TIER_UPPER)?Height:(tempme.Results.Tier==TIER_LOWER)?0:(Height/2))); - A_QuakeEx(8,8,8,8,0,3000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:1.); - mystats.buttslams++; - lastbump *= .8; - } - if ( raging ) continue; // don't stop - } - } - // wallbump - bumped = true; - SWWMUtility.AchievementProgressInc("bonk",1,player); - A_StartSound("demolitionist/bump",CHAN_DAMAGE,CHANF_OVERLAP); - bumptic = gametic+int(25+spd/4.); - lastbump *= .8; - A_QuakeEx(8,8,8,16,0,128,"",QF_RELATIVE|QF_SCALEDOWN); - A_AlertMonsters(swwm_uncapalert?0:800); - vel *= .2; - vel -= dir*(10+(spd*30/mass)); - vel += wallnorm*(10+(spd*50/mass)); - vel.z += 5+(spd*(10/mass)); - dashboost *= 0.; - if ( raging ) - { - let ps = Spawn("BigPunchSplash",Vec3Offset(dir.x*radius,dir.y*radius,Height/2.)); - ps.damagetype = (dir dot viewdir < -3.)?'Buttslam':'Dash'; - ps.target = self; - ps.special1 = int(10+spd*3.); - raging.DoHitFX(); - } - // activate it - int locknum = SWWMUtility.GetLineLock(BlockingLine); - if ( !locknum || CheckKeys(locknum,false,true) ) - { - hitactivate = true; - BlockingLine.Activate(self,lside,SPAC_Use); - hitactivate = false; - } - BlockingLine.Activate(self,lside,SPAC_Impact); - break; - } - } - // check for slope boosting (only if dashing) - if ( (pos.z <= floorz) && (spd > 0) && isdashing ) - { - F3DFloor ff; - for ( int i=0; i 0.) ) - { - Actor a; - for ( int i=-1; i<=1; i+=2 ) for ( int j=1; j<4; j++ ) - { - a = Spawn("DashTrail",Vec3Angle(10,angle+i*140,40)); - a.target = self; - a.vel = .5*(RotateVector((j,0),angle+i*160),0)-(0,0,1)*j; - a.vel -= vel*.5; - } - } - } - private void CheckBreakCrusher() - { - double gaph = (ceilingz-floorz); - if ( gaph > height*.8 ) return; - // the smaller the gap, the more likely the crusher will snap - if ( Random[Demolitionist](0,2) && (FRandom[Demolitionist](0,gaph/height) > .2) ) return; - double diffh = 8.+(default.height-gaph); // how much the crusher will have to "snap" after breaking - let ceil = ceilingsector; - let flor = floorsector; - let ceilse = ceil.ceilingdata; - let florse = flor.floordata; - if ( ceilse && florse ) - { - // snap both planes - let q = Spawn("BustedQuake",(ceil.centerspot.x,ceil.centerspot.y,ceil.ceilingplane.ZAtPoint(ceil.centerspot))); - q.special1 = 6; - q = Spawn("BustedQuake",(flor.centerspot.x,flor.centerspot.y,flor.floorplane.ZAtPoint(flor.centerspot))); - q.special1 = 6; - SWWMCrusherBroken.Create(flor,ceil,diffh/2.); - } - else if ( ceilse ) - { - // snap ceiling - let q = Spawn("BustedQuake",(ceil.centerspot.x,ceil.centerspot.y,ceil.ceilingplane.ZAtPoint(ceil.centerspot))); - q.special1 = 10; - SWWMCrusherBroken.Create(null,ceil,diffh); - } - else if ( florse ) - { - // snap floor - let q = Spawn("BustedQuake",(flor.centerspot.x,flor.centerspot.y,flor.floorplane.ZAtPoint(flor.centerspot))); - q.special1 = 10; - SWWMCrusherBroken.Create(flor,null,diffh); - } - SWWMUtility.MarkAchievement("crush",player); - } - private void CheckBreakPolyobject( int dmg ) - { - // see if there are any crushing polyobjects currently "encroaching" the player - Array touching; - BlockLinesIterator bl = BlockLinesIterator.Create(self,radius+8); - double tbox[4]; - // top, bottom, left, right - tbox[0] = pos.y+(radius+8); - tbox[1] = pos.y-(radius+8); - tbox[2] = pos.x-(radius+8); - tbox[3] = pos.x+(radius+8); - while ( bl.Next() ) - { - Line l = bl.CurLine; - if ( !l ) continue; - if ( tbox[2] > l.bbox[3] ) continue; - if ( tbox[3] < l.bbox[2] ) continue; - if ( tbox[0] < l.bbox[1] ) continue; - if ( tbox[1] > l.bbox[0] ) continue; - if ( SWWMUtility.BoxOnLineSide(tbox[0],tbox[1],tbox[2],tbox[3],l) != -1 ) continue; - touching.Push(l); - } - let pi = swwm_PolyobjectIterator.Create(); - swwm_PolyobjectHandle p; - while ( p = pi.Next() ) - { - if ( (p.Type != swwm_PolyobjectHandle.POTYP_CRUSH) && (p.Type != swwm_PolyobjectHandle.POTYP_HURT) ) - continue; - for ( int i=0; i= p.Lines.Size() ) continue; - Vector2 diragainst = pos.xy-p.GetPos(); - double vsiz = diragainst.length(); - if ( vsiz > 0 ) diragainst /= vsiz; - if ( BusterWall.BustPolyobj(p,max(dmg,(100-health)*5),self,(diragainst.x,diragainst.y,0)) ) - SWWMUtility.MarkAchievement("crush",player); - if ( p.Mirror && BusterWall.BustPolyobj(p.Mirror,max(dmg,(100-health)*5),self,-(diragainst.x,diragainst.y,0)) ) - SWWMUtility.MarkAchievement("crush",player); - } - } - } - override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle ) - { - // we still have to ENSURE ENTIRELY that this gets nullified (TELEFRAG_DAMAGE overrides damage factors somehow) - if ( (mod == 'Falling') | (mod == 'Drowning') || (mod == 'Poison') || (mod == 'PoisonCloud') ) - damage = 0; - if ( (swwm_strictuntouchable >= 2) && (damage > 0) && player ) - { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd ) hnd.tookdamage[PlayerNumber()] = true; - } - if ( (mod == 'Crush') && player && (player.mo == self) ) - { - // check if we can break any active crushers - // (or polyobjects) - if ( !inflictor && !source ) - { - CheckBreakCrusher(); - CheckBreakPolyobject(damage); - } - // break a spike trap - else if ( source is 'ThrustFloor' ) - { - let q = Spawn("BustedQuake",source.pos); - q.special1 = 4; - int numpt = Random[ExploS](30,40); - for ( int i=0; i 0) && (PainChance == 0) && (level.maptime>lastmpain) ) - { - lastmpain = level.maptime; - if ( player && (player.mo == self) ) A_DemoPain(); - } - PainChance = oldpchance; - if ( (Health <= 0) && (source == self) && (flags&DMG_EXPLOSION) ) - SWWMUtility.MarkAchievement("dime",player); - return realdmg; - } - override void CalcHeight() - { - Super.CalcHeight(); - // handle smooth step down (hacky but looks ok) - player.viewz += ssup; - ssup = max(0,(ssup*.7)-.25); - } - override void CheckPitch() - { - if ( (waterlevel < 2) && bFly && !bFlyCheat && !(player.cheats&CF_NOCLIP2) ) - return; // handled in moveplayer - Super.CheckPitch(); - } - override void CheckMoveUpDown() - { - if ( InStateSequence(CurState,FindState("Dash")) ) - player.cmd.upmove = 0; - if ( (waterlevel < 2) && bFly && !bFlyCheat && !(player.cheats&CF_NOCLIP2) ) - { - double fs = TweakSpeed(); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 accel; - if ( (player.cmd.upmove == -32768) || sendtoground ) - { - sendtoground = true; - player.centering = true; - accel = (0,0,-4096); - } - else accel = z*player.cmd.upmove*8.; - accel *= fs/128.; - vel = vel+accel/GameTicRate; - if ( sendtoground ) vel.xy *= .6; - if ( (pos.z <= floorz) || bOnMobj ) sendtoground = false; - if ( vel.length() > 50. ) - vel = vel.unit()*50.; - return; - } - else sendtoground = false; - Super.CheckMoveUpDown(); - } - override void MovePlayer() - { - if ( !player || (player.mo != self) || (player.cheats&(CF_FROZEN|CF_TOTALLYFROZEN)) ) - { - dashboost = 0.; - player.vel *= 0.; - if ( IsActorPlayingSound(CHAN_JETPACK,"demolitionist/jet") ) - A_StartSound("demolitionist/jetstop",CHAN_JETPACK); - Super.MovePlayer(); - return; - } - bool isdashing = InStateSequence(CurState,FindState("Dash")); - if ( isdashing ) player.cmd.forwardmove = player.cmd.sidemove = 0; - if ( (waterlevel < 2) && bFly && !bFlyCheat && !(player.cheats&CF_NOCLIP2) ) - { - player.onground = false; - if ( player.turnticks ) - { - player.turnticks--; - guideangle = (180./TURN180_TICKS); - } - else guideangle += .2*player.cmd.yaw*(360./65536.); - guidepitch -= .2*player.cmd.pitch*(360./65536.); - if ( player.centering ) guidepitch = clamp(deltaangle(pitch,0),-3.,3.); - if ( player.centering || !swwm_fly6dof ) guideroll = clamp(deltaangle(roll,0),-3.,3.); - if ( swwm_fly6dof ) - { - swwm_GM_Quaternion orient = swwm_GM_Quaternion.createFromAngles(angle,pitch,roll); - swwm_GM_Quaternion angles = swwm_GM_Quaternion.createFromAngles(guideangle,guidepitch,guideroll); - orient = orient.multiplyQuat(angles); - double npitch, nangle, nroll; - [nangle, npitch, nroll] = orient.toAngles(); - A_SetAngle(nangle,SPF_INTERPOLATE); - A_SetPitch(npitch,SPF_INTERPOLATE); - A_SetRoll(nroll,SPF_INTERPOLATE); - } - else - { - A_SetAngle(angle+guideangle,SPF_INTERPOLATE); - A_SetPitch(clamp(pitch+guidepitch,player.MinPitch,player.MaxPitch),SPF_INTERPOLATE); - A_SetRoll(roll+guideroll,SPF_INTERPOLATE); - } - if ( (abs(roll) <= 1./65536.) && (abs(pitch) <= 1./65536.) ) - { - guideroll = guidepitch = roll = pitch = 0.; - player.centering = false; - } - double fs = TweakSpeed(); - double jcmove = 0.; - if ( player.cmd.buttons&BT_JUMP ) jcmove += 4096.; - if ( player.cmd.buttons&BT_CROUCH ) jcmove -= 4096.; - if ( CanCrouch() && (player.crouchfactor != -1) ) fs *= player.crouchfactor; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector2 nmove = NormalizedMove(); - Vector3 accel = x*nmove.x-y*nmove.y+z*jcmove; - accel *= fs/320.; - double spd = vel.length(); - if ( spd > 40. ) vel = (vel+accel/GameTicRate).unit()*spd; - else vel = vel+accel/GameTicRate; - vel *= .97; - player.vel = (1,1)*vel.length(); - player.jumptics = -2; - if ( !(player.cheats & CF_PREDICTING) && (player.cmd.forwardmove|player.cmd.sidemove) ) - PlayRunning(); - if ( player.cheats&CF_REVERTPLEASE ) - { - player.cheats &= ~CF_REVERTPLEASE; - player.camera = player.mo; - } - } - else - { - if ( player.turnticks ) - { - player.turnticks--; - angle = (180./TURN180_TICKS); - } - else angle += player.cmd.yaw*(360./65536.); - player.onground = (pos.z<=floorz)||bOnMobj||bMBFBouncer||(player.cheats&CF_NOCLIP2); - if ( player.cmd.forwardmove|player.cmd.sidemove ) - { - double bobfactor; - double friction, movefactor; - [friction, movefactor] = GetFriction(); - bobfactor = (friction maxspd ) vel = (vel+accel/GameTicRate).unit()*spd; - else vel = vel+accel/GameTicRate; - } - if ( !(player.cheats&CF_PREDICTING) && (nmove.length() > 0.) ) - PlayRunning(); - if ( player.cheats&CF_REVERTPLEASE ) - { - player.cheats &= ~CF_REVERTPLEASE; - player.camera = player.mo; - } - } - else if ( player.onground ) vel *= .95; // quickly decelerate if we're not holding movement keys - if ( abs(roll) > 0. ) A_SetRoll(roll+clamp(deltaangle(roll,0),-3.,3.),SPF_INTERPOLATE); - } - guideangle *= .9; - guidepitch *= .9; - guideroll *= .9; - // anchor to ground when going down steps - if ( lastground && !player.onground && !bFly && !bFlyCheat && (waterlevel < 2) && (abs(pos.z-floorz) <= maxdropoffheight) && (player.jumptics == 0) && (vel.z < 0) && !isdashing ) - { - // test for gap crossing (i.e: climbing up platforms with holes between them) - Vector3 storepos = pos; - double storefloorz = floorz; - bool crossgap = false; - for ( int i=1; i<=4; i++ ) // test up to 4 steps ahead, should be enough for most cases - { - SetOrigin(Vec3Offset(vel.x,vel.y,vel.z),true); - if ( floorz < storepos.z ) continue; - crossgap = true; - break; - } - SetOrigin(storepos,true); - floorz = storefloorz; - if ( !crossgap ) - { - ssup = max(0,(pos.z-floorz)); - SetZ(floorz); - lastground = player.onground = true; - } - } - if ( player.onground ) lastgroundtic = level.maptime; - else lastairtic = level.maptime; - if ( !(player.cheats & CF_PREDICTING) && !(player.cmd.forwardmove|player.cmd.sidemove) ) - PlayIdle(); - Vector3 dodge = (0,0,0), x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - int fm = player.cmd.forwardmove; - int sm = player.cmd.sidemove; - if ( !(fm|sm) ) fm = 1; - if ( fm ) dodge += (fm>0)?X:-X; - if ( sm ) dodge += (sm>0)?Y:-Y; - if ( player.cmd.buttons&BT_CROUCH ) dodge = (0,0,-1); // death from above - if ( dodge == (0,0,0) ) - { - if ( !player.onground || bNOGRAVITY || (waterlevel > 2) || (player.cheats&CF_NOCLIP2) ) dodge = X; - else dodge.xy = RotateVector((1,0),angle); - } - if ( player.onground && !bNOGRAVITY && (waterlevel < 2) && !(player.cheats&CF_NOCLIP2) ) - { - dodge.z = max(0,dodge.z); - if ( !level.IsJumpingAllowed() ) dodge.z = min(0,dodge.z); - } - if ( (dodge.length() > 0) && (dashcooldown <= 0) && (dashfuel > 20.) && player.cmd.buttons&BT_USER2 && (player.onground || level.IsJumpingAllowed() || (player.cmd.buttons&BT_CROUCH)) && (gamestate == GS_LEVEL) ) - { - fullfuel = (dashfuel >= default.dashfuel); - dashdir = dodge.unit(); - dashcooldown = 10; - dashboost = 20.; - bOnMobj = false; - if ( player.cheats & CF_REVERTPLEASE ) - { - player.cheats &= ~CF_REVERTPLEASE; - player.camera = player.mo; - } - vel += dashdir*dashboost; - vel.z += clamp(-vel.z*.4,0.,30.); - player.jumptics = -1; - SetStateLabel("Dash"); - A_StartSound("demolitionist/jet",CHAN_JETPACK,CHANF_LOOP); - lastbump *= .95; - mystats.dashcount++; - double newp = min(90.,pitch+5.); - bumppitch.Push(newp-pitch); - A_SetPitch(newp,SPF_INTERPOLATE); - } - } - override void CheckJump() - { - if ( InStateSequence(CurState,FindState("Dash")) ) return; // do not - if ( !(player.cmd.buttons&BT_JUMP) || (gamestate != GS_LEVEL) ) return; - Vector2 walldir = (cos(angle),sin(angle)); - bool walljump = false, wallclimb = false; - double climbvelz = 0.; - FLineTraceData d; - Actor jumpactor = null; - for ( int i=-4; i= 2 ) vel.z = 4*Speed; - else if ( (waterlevel < 2) && bFly && !bFlyCheat && !(player.cheats&CF_NOCLIP2) ) return; - else if ( bNoGravity ) vel.z = 3; - else if ( level.IsJumpingAllowed() - && ((player.onground && (player.jumptics == 0)) - || (!player.onground && (level.maptime > last_jump_held) && (((dashfuel > 10.) && (boostcooldown <= 0)) || walljump || wallclimb))) ) - { - if ( !player.onground && (((walljump || wallclimb) && (level.maptime < last_kick+8)) || (!(walljump || wallclimb) && (level.maptime < last_boost+8))) ) - return; - double jumpvelz = JumpZ*35./GameTicRate; - double jumpfac = 0; - for ( let p=Inv; p; p=p.Inv ) - { - let pp = PowerHighJump(p); - if ( pp ) - { - double f = pp.Strength; - if ( f > jumpfac ) jumpfac = f; - } - } - if ( jumpfac > 0 ) jumpvelz *= jumpfac; - bool raging = FindInventory("RagekitPower"); - if ( raging ) jumpvelz *= 2.; - double pvelz = vel.z; - if ( !player.onground && !(player.cheats&CF_PREDICTING) ) - { - // check for wall stuff - if ( walljump ) - { - if ( vel.z < 10. ) - vel.z += 2.*jumpvelz+clamp(-pvelz*.6,0.,30.); - vel.xy += walldir*20*Speed; - lastbump *= .95; - } - else if ( wallclimb ) - { - if ( vel.z < 10. ) - vel.z += climbvelz+clamp(-pvelz*.95,0.,30.); - vel.xy += walldir*10*Speed; - lastbump *= .97; - } - if ( walljump && jumpactor && jumpactor.bSHOOTABLE ) - { - SWWMUtility.DoKnockback(jumpactor,(-walldir,0),12000); - int dmg = jumpactor.DamageMobj(self,self,10,'Jump'); - if ( raging ) - { - let ps = Spawn("BigPunchSplash",pos); - ps.damagetype = 'Jump'; - ps.target = self; - ps.special1 = dmg; - } - } - if ( walljump || wallclimb ) - { - A_StartSound(walljump?"demolitionist/kick":"demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:100); - last_kick = level.maptime+1; - SWWMUtility.AchievementProgressInc("jump",1,player); - } - } - bOnMobj = false; - player.jumpTics = -1; - if ( !(player.cheats&CF_PREDICTING) ) - { - A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:100); - } - if ( (dashfuel > 10.) && !player.onground && !walljump && !wallclimb ) - { - dashboost = 3.; - boostcooldown = 20; - if ( vel.z < 10. ) - vel.z += jumpvelz+clamp(-pvelz*.4,0.,30.); - A_StartSound("demolitionist/jet",CHAN_JETPACK,CHANF_LOOP); - lastbump *= .95; - mystats.boostcount++; - last_boost = level.maptime+1; - double newp = min(90.,pitch+3.); - bumppitch.Push(newp-pitch); - A_SetPitch(newp,SPF_INTERPOLATE); - SetStateLabel("Boost"); - } - else - { - dashboost = 0.; - double bpitch = clamp((vel.length()-10)/5.,0.,20.); - double newp = min(90.,pitch+bpitch); - bumppitch.Push(newp-pitch); - A_SetPitch(newp,SPF_INTERPOLATE); - // bunnyhop time - if ( !walljump && !wallclimb ) - { - if ( !bWalking && (level.maptime < (lastairtic+10)) ) - { - SWWMUtility.AchievementProgressInc("bune",1,player); - // bhop, z vel relative to vel size - if ( vel.z < 25. ) // don't ramp up too hard - { - vel.z += jumpvelz*(((player.cmd.buttons&BT_RUN)?1.2:.65)+vel.length()*.01); - // add part of last landing z velocity too - vel.z += max(0,-landvelz*(raging?.45:.35)); - } - // accelerate - vel.xy += (RotateVector(NormalizedMove(),angle)/2400.)*(1.+vel.length()*.025)*TweakSpeed(); - } - else - { - // first jump - if ( vel.z < 10. ) // don't ramp up too hard - { - vel.z += jumpvelz*(bWalking?.75:(player.cmd.buttons&BT_RUN)?1.25:1.); - // add part of last landing z velocity too - vel.z += max(0,-landvelz*(raging?.35:.25)); - } - // long jump if running/sprinting - if ( !walljump && !wallclimb && !bWalking ) - vel.xy += (RotateVector(NormalizedMove(),angle)/1500.)*(raging?2.:1.)*TweakSpeed(); - } - } - SetStateLabel("Jump"); - } - } - last_jump_held = level.maptime+1; - } - override void DeathThink() - { - player.Uncrouch(); - TickPSprites(); - player.onground = (pos.Z<=floorz); - // ded (demo-chan falls faster tho) - player.deltaviewheight = 0; - if ( player.viewheight > 6 ) player.viewheight -= 3; - if ( player.viewheight < 6 ) player.viewheight = 6; - // center pitch - double dpitch = clamp(deltaangle(pitch,0),-6,6); - if ( abs(dpitch) < 3. ) pitch = 0.; - else A_SetPitch(pitch+dpitch,SPF_INTERPOLATE); - // add roll - double droll = clamp(deltaangle(roll,50)*.5,-5,5); - if ( abs(droll) < 2. ) roll = 50.; - else A_SetRoll(roll+droll,SPF_INTERPOLATE); - player.mo.CalcHeight(); - if ( player.damagecount ) player.damagecount--; - if ( player.poisoncount ) player.poisoncount--; - // solid unless we can respawn, for safety - if ( multiplayer || level.AllowRespawn || sv_singleplayerrespawn || G_SkillPropertyInt(SKILLP_PlayerRespawn) ) - bSolid = false; - else bSolid = true; - if ( player.viewheight <= 6 ) - { - deadtimer++; - if ( (deadtimer == 60) && (player == players[consoleplayer]) ) - A_StartSound("demolitionist/youdied",CHAN_DEMOVOICE,CHANF_OVERLAP|CHANF_UI); - if ( multiplayer || level.AllowRespawn || sv_singleplayerrespawn || G_SkillPropertyInt(SKILLP_PlayerRespawn) ) - { - // standard behaviour, respawn normally - if ( (((player.cmd.buttons&BT_USE) || ((deathmatch || alwaysapplydmflags) && sv_forcerespawn)) && !sv_norespawn) - && ((Level.maptime >= player.respawn_time) || ((player.cmd.buttons&BT_USE) && !player.Bot)) ) - { - player.cls = null; - player.playerstate = PST_REBORN; - if ( special1 > 2 ) special1 = 0; - } - } - else if ( (player.cmd.buttons&BT_USE) && (deadtimer > 120) ) - { - // reload save - player.cls = null; - player.playerstate = PST_ENTER; - if ( special1 > 2 ) special1 = 0; - } - else if ( (player.cmd.buttons&BT_ATTACK) && (deadtimer > 120) && swwm_revive ) - { - // reboot (if possible) - if ( !FindInventory("ReviveCooldown") && (((swwm_revivecooldown >= 0) && (G_SkillPropertyInt(SKILLP_ACSReturn) < 4)) || !hasrevived) ) - { - if ( hasrevived ) SWWMUtility.MarkAchievement("sekiro",player); - hasrevived = true; - player.Resurrect(); - player.damagecount = 0; - player.bonuscount = 0; - player.poisoncount = 0; - SetState(FindState("Spawn")+1); // skip tweening - roll = 0; - let s = Spawn("DemolitionistShockwave",pos); - s.target = self; - s.special1 = 30; - ReactionTime = 17; - A_Stop(); - A_AlertMonsters(swwm_uncapalert?0:2500); - if ( player == players[consoleplayer] ) - { - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP); - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.7); - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,pitch:.4); - } - lastbump *= 1.5; - SWWMHandler.DoFlash(self,Color(255,255,255,255),10); - SWWMHandler.DoFlash(self,Color(255,128,192,255),30); - SWWMScoreObj.Spawn(default.health,Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Height/2),ST_Health); - if ( special1 > 2 ) special1 = 0; - if ( (swwm_revivecooldown > 0) && (G_SkillPropertyInt(SKILLP_ACSReturn) < 4) ) - GiveInventory("ReviveCooldown",1); - } - else if ( level.maptime > revivefail ) - { - if ( player == players[consoleplayer] ) A_StartSound("menu/fail",CHAN_ITEM,CHANF_UI); - revivefail = level.maptime+120; - } - } - } - else deadtimer = 0; - } - override void PlayIdle() - { - if ( !player ) - { - if ( !InStateSequence(CurState,FindState("Spawn")) ) - SetStateLabel("Spawn"); - return; - } - if ( player.health <= 0 ) return; - if ( !bNoGravity && player.onground && (waterlevel < 3) ) - { - // Ground - if ( player.crouchdir == -1 ) - { - // Crouching - if ( InStateSequence(CurState,FindState("CrouchMove")) - || InStateSequence(CurState,FindState("CrouchMoveRun")) - || InStateSequence(CurState,FindState("CrouchMoveFast")) ) - SetStateLabel("Crouch"); - else if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Float")) - || InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("StartCrouch"); - } - else - { - if ( InStateSequence(CurState,FindState("Crouch")) - || InStateSequence(CurState,FindState("CrouchMove")) - || InStateSequence(CurState,FindState("CrouchMoveRun")) - || InStateSequence(CurState,FindState("CrouchMoveFast")) ) - SetStateLabel("EndCrouch"); - else if ( InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("Float")) ) - { - SetStateLabel("Spawn"); - A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.2); - } - else if ( InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) ) - SetStateLabel("SeeFastEnd"); - else if ( InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("SwimEnd"); - } - } - else if ( !bNoGravity && (waterlevel < 1) ) - { - // Falling - if ( player.crouchdir == -1 ) - { - if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Jump")) - || InStateSequence(CurState,FindState("Float")) - || InStateSequence(CurState,FindState("Fall")) - || InStateSequence(CurState,FindState("FallLoop")) - || InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("StartCrouch"); - } - else - { - if ( (InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Float"))) - && (abs(pos.z-floorz) > maxstepheight) ) - SetStateLabel("Fall"); - else if ( InStateSequence(CurState,FindState("Crouch")) - || InStateSequence(CurState,FindState("CrouchMove")) - || InStateSequence(CurState,FindState("CrouchMoveRun")) - || InStateSequence(CurState,FindState("CrouchMoveFast")) ) - SetStateLabel("EndCrouch"); - else if ( InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("SwimEnd"); - } - } - else - { - // Swimming - if ( player.crouchdir == -1 ) - { - // Crouching - if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Jump")) - || InStateSequence(CurState,FindState("Float")) - || InStateSequence(CurState,FindState("Fall")) - || InStateSequence(CurState,FindState("FallLoop")) - || InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("StartCrouch"); - } - else - { - if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Jump")) - || InStateSequence(CurState,FindState("Fall")) - || InStateSequence(CurState,FindState("FallLoop")) ) - SetStateLabel("Float"); - else if ( InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("SwimEnd"); - else if ( InStateSequence(CurState,FindState("Crouch")) - || InStateSequence(CurState,FindState("CrouchMove")) - || InStateSequence(CurState,FindState("CrouchMoveRun")) - || InStateSequence(CurState,FindState("CrouchMoveFast")) ) - SetStateLabel("EndCrouch"); - } - } - } - override void PlayRunning() - { - if ( !player ) - { - if ( !InStateSequence(CurState,FindState("SeeRun")) ) - SetStateLabel("SeeRun"); - return; - } - if ( player.health <= 0 ) return; - if ( !bNoGravity && player.onground && (waterlevel < 3) ) - { - // Ground - if ( player.crouchdir == -1 ) - { - // Crouching - if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Fall")) - || InStateSequence(CurState,FindState("FallLoop")) - || InStateSequence(CurState,FindState("Float")) - || InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("StartCrouch"); - else if ( InStateSequence(CurState,FindState("Crouch")) ) - { - switch( FastCheck() ) - { - case 2: - SetStateLabel("CrouchMoveFast"); - break; - case 1: - SetStateLabel("CrouchMoveRun"); - break; - default: - SetStateLabel("CrouchMove"); - break; - } - } - } - else - { - if ( InStateSequence(CurState,FindState("Crouch")) - || InStateSequence(CurState,FindState("CrouchMove")) - || InStateSequence(CurState,FindState("CrouchMoveRun")) - || InStateSequence(CurState,FindState("CrouchMoveFast")) ) - SetStateLabel("EndCrouch"); - else if ( InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("SwimEnd"); - else if ( (FastCheck() == 2) - && (InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun"))) ) - SetStateLabel("SeeFast"); - else if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Float")) - || InStateSequence(CurState,FindState("Turn")) ) - { - if ( FastCheck() == 1 ) SetStateLabel("SeeRun"); - else SetStateLabel("See"); - A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.2); - } - } - } - else if ( !bNoGravity && (waterlevel < 1) ) - { - // Falling - PlayIdle(); - } - else - { - // Swimming - if ( player.crouchdir == -1 ) - { - // Crouching - if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Jump")) - || InStateSequence(CurState,FindState("Fall")) - || InStateSequence(CurState,FindState("FallLoop")) - || InStateSequence(CurState,FindState("Float")) - || InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("StartCrouch"); - else if ( InStateSequence(CurState,FindState("Crouch")) ) - { - switch( FastCheck() ) - { - case 2: - SetStateLabel("CrouchMoveFast"); - break; - case 1: - SetStateLabel("CrouchMoveRun"); - break; - default: - SetStateLabel("CrouchMove"); - break; - } - } - } - else if ( bFlyCheat || (player.cheats&CF_NOCLIP2) ) - { - // Special case, fly cheats don't play a swim animation, only float - // (this fixes Demo "swimming" on the library ladder in Spooktober, for example) - if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Jump")) - || InStateSequence(CurState,FindState("Fall")) - || InStateSequence(CurState,FindState("FallLoop")) - || InStateSequence(CurState,FindState("Swim")) - || InStateSequence(CurState,FindState("SwimLoop")) - || InStateSequence(CurState,FindState("SwimLoopRun")) - || InStateSequence(CurState,FindState("SwimLoopFast")) ) - SetStateLabel("Float"); - else if ( InStateSequence(CurState,FindState("Crouch")) - || InStateSequence(CurState,FindState("CrouchMove")) - || InStateSequence(CurState,FindState("CrouchMoveRun")) - || InStateSequence(CurState,FindState("CrouchMoveFast")) ) - SetStateLabel("EndCrouch"); - } - else - { - if ( InStateSequence(CurState,FindState("Spawn")) - || InStateSequence(CurState,FindState("Turn")) - || InStateSequence(CurState,FindState("See")) - || InStateSequence(CurState,FindState("SeeRun")) - || InStateSequence(CurState,FindState("SeeFast")) - || InStateSequence(CurState,FindState("SeeFastLoop")) - || InStateSequence(CurState,FindState("SeeFastEnd")) - || InStateSequence(CurState,FindState("Jump")) - || InStateSequence(CurState,FindState("Fall")) - || InStateSequence(CurState,FindState("FallLoop")) - || InStateSequence(CurState,FindState("Float")) ) - SetStateLabel("Swim"); - else if ( InStateSequence(CurState,FindState("Crouch")) - || InStateSequence(CurState,FindState("CrouchMoveRun")) - || InStateSequence(CurState,FindState("CrouchMoveFast")) ) - SetStateLabel("EndCrouch"); - } - } - } - override void PlayAttacking() - { - // Do nothing if it's a SWWM weapon, since those do things themselves - if ( player && (player.ReadyWeapon is 'SWWMWeapon') ) - return; - if ( InStateSequence(CurState,FindState("Dash")) - || InStateSequence(CurState,FindState("Boost")) ) - return; // don't cancel dash/boost - if ( player && (player.crouchdir == -1) ) SetStateLabel("CrouchMissile"); - else SetStateLabel("Missile"); - } - override void PlayAttacking2() - { - PlayAttacking(); - } - void PlayFire() - { - if ( InStateSequence(CurState,FindState("Dash")) - || InStateSequence(CurState,FindState("Boost")) ) - return; // don't cancel dash/boost - if ( player && (player.crouchdir == -1) ) SetStateLabel("CrouchMissile"); - else SetStateLabel("Missile"); - } - void PlayMelee() - { - if ( InStateSequence(CurState,FindState("Dash")) - || InStateSequence(CurState,FindState("Boost")) ) - return; // don't cancel dash/boost - if ( player && (player.crouchdir == -1) ) SetStateLabel("CrouchMelee"); - else SetStateLabel("Melee"); - } - void PlayFastMelee() - { - if ( InStateSequence(CurState,FindState("Dash")) - || InStateSequence(CurState,FindState("Boost")) ) - return; // don't cancel dash/boost - if ( player && (player.crouchdir == -1) ) SetStateLabel("CrouchFastMelee"); - else SetStateLabel("FastMelee"); - } - void PlayReload() - { - if ( InStateSequence(CurState,FindState("Dash")) - || InStateSequence(CurState,FindState("Boost")) ) - return; // don't cancel dash/boost - if ( player && (player.crouchdir == -1) ) SetStateLabel("CrouchReload"); - else SetStateLabel("Reload"); - } - void PlayCheckGun() - { - if ( InStateSequence(CurState,FindState("Dash")) - || InStateSequence(CurState,FindState("Boost")) ) - return; // don't cancel dash/boost - if ( player && (player.crouchdir == -1) ) SetStateLabel("CrouchCheckGun"); - else SetStateLabel("CheckGun"); - } - void A_DMFade() - { - if ( player ) return; - Spawn("TeleportFog",pos,ALLOW_REPLACE); - Destroy(); - } - void A_DemoPain() - { - if ( IsActorPlayingSound(CHAN_JETPACK,"demolitionist/jet") ) - A_StartSound("demolitionist/jetstop",CHAN_JETPACK); - if ( !myvoice ) myvoice = CVar.GetCVar('swwm_voicetype',player); - if ( lastdamage > 90 ) - { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:1200); - A_QuakeEx(3,3,3,9,0,8,"",QF_RELATIVE|QF_SCALEDOWN); - A_StartSound("demolitionist/hipain",CHAN_VOICE); - lastbump *= 1.04; - if ( swwm_mutevoice < 4 ) - A_StartSound(String.Format("voice/%s/hipain",myvoice.GetString()),CHAN_DEMOVOICE,CHANF_OVERLAP); - } - else if ( lastdamage > 30 ) - { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:600); - A_QuakeEx(2,2,2,6,0,8,"",QF_RELATIVE|QF_SCALEDOWN); - A_StartSound("demolitionist/pain",CHAN_VOICE); - lastbump *= 1.02; - if ( swwm_mutevoice < 4 ) - A_StartSound(String.Format("voice/%s/pain",myvoice.GetString()),CHAN_DEMOVOICE,CHANF_OVERLAP); - } - else if ( lastdamage > 0 ) - { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:200); - A_QuakeEx(1,1,1,3,0,8,"",QF_RELATIVE|QF_SCALEDOWN); - A_StartSound("demolitionist/lopain",CHAN_VOICE); - lastbump *= 1.01; - if ( swwm_mutevoice < 4 ) - A_StartSound(String.Format("voice/%s/lopain",myvoice.GetString()),CHAN_DEMOVOICE,CHANF_OVERLAP); - } - lastdamage = 0; - } - void A_DemoScream() - { - if ( IsActorPlayingSound(CHAN_JETPACK,"demolitionist/jet") ) - A_StartSound("demolitionist/jetstop",CHAN_JETPACK); - A_StopSound(CHAN_DEMOVOICE); - A_StopSound(CHAN_DEMOVOICEAUX); - A_StopSound(CHAN_DEMOVOICEAUX2); - A_StopSound(CHAN_DEMOVOICEAUX3); - if ( !myvoice ) myvoice = CVar.GetCVar('swwm_voicetype',player); - Sound snd = "demolitionist/death"; - if ( special1 < 10 ) - snd = "demolitionist/wdeath"; - if ( health < -50 ) - snd = "demolitionist/xdeath"; - A_StartSound(snd,CHAN_VOICE); - if ( swwm_mutevoice < 4 ) - A_StartSound(String.Format("voice/%s/death",myvoice.GetString()),CHAN_DEMOVOICE,CHANF_OVERLAP); - } - override bool OnGiveSecret( bool printmsg, bool playsound ) - { - if ( !player ) return false; - int score = 100; - // last secret (this is called before counting it up, so have to subtract) - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !deathmatch && !(gameinfo.gametype&GAME_Hexen) && (level.found_secrets == level.total_secrets-1) && (!hnd || !hnd.allsecrets) ) - { - if ( hnd ) hnd.allsecrets = true; - score = 1000; - Console.Printf(StringTable.Localize("$SWWM_LASTSECRET"),player.GetUserName(),score); - SWWMUtility.AchievementProgressInc("allsecrets",1,player); - } - else Console.Printf(StringTable.Localize("$SWWM_FINDSECRET"),player.GetUserName(),score); - if ( CheckLocalView() ) SWWMHandler.AddOneliner("findsecret",2,40); - SWWMCredits.Give(player,score); - SWWMScoreObj.Spawn(score,Vec3Offset(0,0,Height/2)); - // somehow ongivesecret can be called BEFORE PostBeginPlay (what the fuck) - if ( !mystats ) mystats = SWWMStats.Find(player); - mystats.secrets++; - return true; - } - override void RemoveInventory( Inventory item ) - { - // stop any looping sounds our current weapon had - if ( (item is 'SWWMWeapon') && player && (SWWMWeapon(item) == player.ReadyWeapon) ) - { - A_StopSound(CHAN_WEAPONEXTRA); - A_StopSound(CHAN_WEAPONEXTRA2); - A_StopSound(CHAN_WEAPONEXTRA3); - } - Super.RemoveInventory(item); - } - override void AddInventory( Inventory item ) - { - Super.AddInventory(item); - if ( !player ) return; - String cn = item.GetClassName(); - if ( !bInDefaultInventory && (level.maptime > 0) && (!(item is 'SWWMWeapon') || !(cn.Left(4) ~== "Dual")) ) // dual weapons are ignored here, as they're handled separately - { - // add lore if any - SWWMLoreLibrary.Add(player,cn); - // weapon get oneliner - if ( (item is 'Weapon') && !(item is 'SWWMGesture') && !(item is 'SWWMItemGesture') && mystats && !mystats.GotWeapon(Weapon(item).GetClass()) && CheckLocalView() ) - { - if ( (item is 'SWWMWeapon') && (SWWMWeapon(item).GetLine != "") ) - { - // fall back to generic weapon get if voicepack lacks weapon-specific lines - if ( !SWWMHandler.AddOneliner(SWWMWeapon(item).GetLine,2) ) - SWWMHandler.AddOneliner("getweapon",2); - } - else SWWMHandler.AddOneliner("getweapon",2); - } - } - if ( (item is 'Key') && !key_reentrant && !deathmatch && !bInDefaultInventory ) - { - // score - int score = 100; - Console.Printf(StringTable.Localize("$SWWM_FINDKEY"),player.GetUserName(),item.GetTag(),score); - SWWMCredits.Give(player,score); - SWWMScoreObj.Spawn(100,player.mo.Vec3Offset(0,0,Height/2)); - SWWMHandler.AddOneliner("keyget",2); - // share all keys in mp - for ( int i=0; i 0) && (mystats.ownedcollectibles.Find(cls) < mystats.ownedcollectibles.Size()) ) return; - mystats.ownedcollectibles.Push(cls); - } - } - override bool UseInventory( Inventory item ) - { - let itemtype = item.GetClass(); - if ( (player.cheats&CF_TOTALLYFROZEN) || isFrozen() ) return false; - // do the key gesture - if ( item is 'Key' ) - { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd ) hnd.equinoxhack = true; - let rep = (Class)(GetReplacement(item.GetClass())); - if ( hnd ) hnd.equinoxhack = false; - if ( rep ) - { - SWWMGesture.SetSpecialGesture(self,GetDefaultByType(rep).gesture); - return false; - } - } - if ( !Actor.UseInventory(item) ) - { - if ( player == players[consoleplayer] ) - { - if ( !(item is 'Weapon') ) - A_StartSound("menu/noinvuse",CHAN_ITEMEXTRA); - if ( item is 'PuzzleItem' ) - SWWMHandler.AddOneliner("puzzfail",2,20); - } - return false; - } - // use sounds of big powerups are heard by other players - if ( (player == players[consoleplayer]) || item.bBIGPOWERUP ) - A_StartSound(item.UseSound,CHAN_ITEMEXTRA); - if ( (player == players[consoleplayer]) && (item is 'PuzzleItem') ) - SWWMHandler.AddOneliner("puzzsucc",2,10); - return true; - } - void A_Footstep( double yofs, int run = 0, double vol = .3, bool nosplash = false ) - { - if ( run == 2 ) - { - A_StartSound("demolitionist/run",CHAN_FOOTSTEP,CHANF_OVERLAP,vol); - if ( !nosplash ) - { - let b = Spawn("InvisibleSplasher",level.Vec3Offset(pos,(RotateVector((0,yofs*.25*radius),angle),0))); - b.A_CheckTerrain(); - } - vel.xy += (RotateVector(NormalizedMove(),angle)/3600.)*TweakSpeed(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:(200*vol)); - } - else if ( run == 1 ) - { - A_StartSound("demolitionist/walk",CHAN_FOOTSTEP,CHANF_OVERLAP,vol*.5); - if ( !nosplash ) - { - let b = Spawn("InvisibleSplasher",level.Vec3Offset(pos,(RotateVector((0,yofs*.25*radius),angle),0))); - b.A_CheckTerrain(); - } - vel.xy += (RotateVector(NormalizedMove(),angle)/4800.)*TweakSpeed(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:(100*vol)); - } - else - { - A_StartSound("demolitionist/walk",CHAN_FOOTSTEP,CHANF_OVERLAP,vol*.2); - if ( !nosplash ) - { - let b = Spawn("SmolInvisibleSplasher",level.Vec3Offset(pos,(RotateVector((0,yofs*.25*radius),angle),0))); - b.A_CheckTerrain(); - } - vel.xy += (RotateVector(NormalizedMove(),angle)/6400.)*TweakSpeed(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:(50*vol)); - } - } - override bool Used( Actor user ) - { - if ( !(user is 'Demolitionist') || !player || (player.mo != self) ) return false; - if ( (user.player == players[consoleplayer]) && (health > 0) ) - { - SWWMHandler.AddOneliner("greet",2); - return true; - } - return false; - } - int FastCheck() - { - if ( !player ) return 1; - if ( bWalking || (NormalizedMove().length() <= 8000.) ) return 0; // walk - if ( player.cmd.buttons&BT_RUN ) return 2; // sprint - return 1; // walk - } - State A_FastJump( StateLabel walk = null, StateLabel run = null, StateLabel sprint = null ) - { - int fc = FastCheck(); - if ( (fc == 2) && sprint ) return ResolveState(sprint); - if ( (fc == 1) && run ) return ResolveState(run); - if ( (fc == 0) && walk ) return ResolveState(walk); - return ResolveState(null); - } - bool AllowCrouch() - { - if ( player.cmd.buttons&BT_JUMP ) return false; - if ( InStateSequence(CurState,FindState("Dash")) ) return false; // no crouch during dash - return true; - } - // Imagine having to duplicate two functions only to change a couple values in both - // I sure love constants - override void CrouchMove( int direction ) - { - double defaultheight = FullHeight; - double savedheight = Height; - double crouchspeed = direction*CROUCHSPEED*.8; // slow down slightly so it matches the animation - double oldheight = player.viewheight; - player.crouchdir = direction; - player.crouchfactor += crouchspeed; - // check whether the move is ok - Height = defaultheight; // actually test the full height, or it'll look weird - if ( !TryMove(pos.xy,false) ) - { - Height = savedheight; - if ( direction > 0 ) - { - // doesn't fit - player.crouchfactor -= crouchspeed; - player.crouchdir = -1; // force crouch - return; - } - } - Height = savedheight; - player.crouchfactor = clamp(player.crouchfactor,.3,1.); - player.viewheight = ViewHeight*player.crouchfactor; - player.crouchviewdelta = player.viewheight-ViewHeight; - // Check for eyes going above/below fake floor due to crouching motion. - CheckFakeFloorTriggers(pos.z+oldheight,true); - } - override void CheckCrouch( bool totallyfrozen ) - { - // crouch to swim/float down - if ( !totallyfrozen && (player.cmd.buttons&BT_CROUCH) ) - { - if ( waterlevel >= 2 ) vel.z = -4*Speed; - else if ( bNOGRAVITY ) vel.z = -3; - } - bool wascrouching = !!(player.cmd.buttons&BT_CROUCH); - if ( !AllowCrouch() ) player.cmd.buttons &= ~BT_CROUCH; - if ( CanCrouch() && (player.health > 0) && level.IsCrouchingAllowed() ) - { - if ( !totallyfrozen ) - { - int crouchdir = player.crouching; - if ( !crouchdir ) crouchdir = (player.cmd.buttons&BT_CROUCH)?-1:1; - else if ( player.cmd.buttons&BT_CROUCH ) player.crouching = 0; - if ( (crouchdir == 1) && (player.crouchfactor < 1) && (pos.z+height < ceilingz) ) - CrouchMove(1); - else if ( (crouchdir == -1) && (player.crouchfactor > .3) ) - CrouchMove(-1); - } - } - else player.Uncrouch(); - player.crouchoffset = -(ViewHeight)*(1-player.crouchfactor); - // we need the crouch button state to be preserved for other functions - if ( wascrouching ) player.cmd.buttons |= BT_CROUCH; - } - override void PreTravelled() - { - // clean up attached actors - if ( selflight ) selflight.Destroy(); - // disable death exits - if ( player && (player.playerstate == PST_DEAD) && swwm_nodeathexit ) - { - player.Resurrect(); - player.damagecount = 0; - player.bonuscount = 0; - player.poisoncount = 0; - roll = 0; - if ( special1 > 2 ) special1 = 0; - } - // inventory wipes - if ( invwipe && (player.playerstate != PST_DEAD) ) - { - bool wiped = false; - bool resetammo = false; - bool resetitems = false; - bool resethealth = false; - if ( invwipe&WIPE_EPISODE ) - { - SWWMUtility.WipeInventory(self,swwm_resetscore); - wiped = true; - } - if ( invwipe&WIPE_CLUSTER ) - { - if ( (swwm_ps_fullreset == 2) && !wiped ) - { - SWWMUtility.WipeInventory(self,swwm_resetscore); - wiped = true; - } - if ( (swwm_ps_resetammo == 2) && !wiped ) - { - SWWMUtility.ResetAmmo(self); - resetammo = true; - } - if ( (swwm_ps_resetitems == 2) && !wiped ) - { - SWWMUtility.ResetItems(self); - resetitems = true; - } - if ( (swwm_ps_resethealth == 2) && !wiped ) - { - SWWMUtility.ResetHealth(self); - resethealth = true; - } - } - if ( invwipe&WIPE_MAP ) - { - if ( (swwm_ps_fullreset == 1) && !wiped ) - { - SWWMUtility.WipeInventory(self,swwm_resetscore); - wiped = true; - } - if ( (swwm_ps_resetammo == 1) && !wiped && !resetammo ) - SWWMUtility.ResetAmmo(self); - if ( (swwm_ps_resetitems == 1) && !wiped && !resetitems ) - SWWMUtility.ResetItems(self); - if ( (swwm_ps_resethealth == 1) && !wiped && !resethealth ) - SWWMUtility.ResetHealth(self); - } - } - invwipe = 0; - } - override void Travelled() - { - // reinitialize - dashfuel = default.dashfuel; - last_boost = 0; - last_kick = 0; - hasrevived = false; - // cancel dash/boost - A_StopSound(CHAN_JETPACK); - fuelcooldown = 0.; - dashcooldown = 0.; - dashboost = 0.; - // prevent sudden stomping if we were previously falling - lastvelz = vel.z; - // early cancel gestures - if ( player ) - { - if ( player.ReadyWeapon is 'SWWMItemGesture' ) - player.ReadyWeapon = SWWMItemGesture(player.ReadyWeapon).gest; - if ( player.ReadyWeapon is 'SWWMGesture' ) - { - player.PendingWeapon = SWWMGesture(player.ReadyWeapon).formerweapon; - player.SetPSprite(PSP_WEAPON,player.ReadyWeapon.ResolveState("Deselect")); - } - } - // re-add ourselves to the "suckable list" (otherwise the Ynykron Singularity won't hurt us) - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd && (hnd.SuckableActors.Find(self) >= hnd.SuckableActors.Size()) ) - hnd.SuckableActors.Push(self); - // re-attach shadow - if ( !swwm_shadows ) return; - let ti = ThinkerIterator.Create("SWWMShadow"); - Actor a; - while ( a = Actor(ti.Next()) ) - { - if ( a.target == self ) - return; // shadow already attached - } - SWWMShadow.Track(self); - ti.Destroy(); - } - override bool PreTeleport( Vector3 destpos, double destangle, int flags ) - { - // store old pos - pretelepos = pos; - return true; - } - override void PostTeleport( Vector3 destpos, double destangle, int flags ) - { - hasteleported = true; // notify tick that we teleported, so it ignores the travel distance - mystats.teledist += level.Vec3Diff(pretelepos,pos).length(); - // reset all smooth bob variables if angles/velocity aren't carried over - if ( !(flags&TELF_KEEPORIENTATION) ) - { - oldlagangle = lagangle = oldangle = angle; - oldlagpitch = lagpitch = oldpitch = pitch; - } - if ( !(flags&TELF_KEEPVELOCITY) ) - { - oldlagvel = lagvel = vel; - lastvelz = vel.z; - } - // notify carried lamp that we just moved - let l = SWWMLamp(FindInventory("SWWMLamp")); - if ( l && l.thelamp ) - CompanionLamp(l.thelamp).justteleport = true; - } - override void MarkPrecacheSounds() - { - Super.MarkPrecacheSounds(); - MarkSound("demolitionist/walk1"); - MarkSound("demolitionist/walk2"); - MarkSound("demolitionist/walk3"); - MarkSound("demolitionist/walk4"); - MarkSound("demolitionist/runstart1"); - MarkSound("demolitionist/runstart2"); - MarkSound("demolitionist/runstart3"); - MarkSound("demolitionist/runstart4"); - MarkSound("demolitionist/run1"); - MarkSound("demolitionist/run2"); - MarkSound("demolitionist/run3"); - MarkSound("demolitionist/run4"); - MarkSound("demolitionist/runstop1"); - MarkSound("demolitionist/runstop2"); - MarkSound("demolitionist/runstop3"); - MarkSound("demolitionist/runstop4"); - MarkSound("demolitionist/jet"); - MarkSound("demolitionist/jetstop"); - MarkSound("demolitionist/death1"); - MarkSound("demolitionist/death2"); - MarkSound("demolitionist/death3"); - MarkSound("demolitionist/xdeath1"); - MarkSound("demolitionist/xdeath2"); - MarkSound("demolitionist/xdeath3"); - MarkSound("demolitionist/wdeath1"); - MarkSound("demolitionist/wdeath2"); - MarkSound("demolitionist/wdeath3"); - MarkSound("demolitionist/pain1"); - MarkSound("demolitionist/pain2"); - MarkSound("demolitionist/pain3"); - MarkSound("demolitionist/hipain1"); - MarkSound("demolitionist/hipain2"); - MarkSound("demolitionist/hipain3"); - MarkSound("demolitionist/lopain1"); - MarkSound("demolitionist/lopain2"); - MarkSound("demolitionist/lopain3"); - MarkSound("demolitionist/hardland1"); - MarkSound("demolitionist/hardland2"); - MarkSound("demolitionist/hardland3"); - MarkSound("demolitionist/swing1"); - MarkSound("demolitionist/swing2"); - MarkSound("demolitionist/swing3"); - MarkSound("demolitionist/wswing1"); - MarkSound("demolitionist/wswing2"); - MarkSound("demolitionist/punch1"); - MarkSound("demolitionist/punch2"); - MarkSound("demolitionist/punch3"); - MarkSound("demolitionist/punchf1"); - MarkSound("demolitionist/punchf2"); - MarkSound("demolitionist/punchf3"); - MarkSound("demolitionist/bump1"); - MarkSound("demolitionist/bump2"); - MarkSound("demolitionist/bump3"); - MarkSound("demolitionist/kick1"); - MarkSound("demolitionist/kick2"); - MarkSound("demolitionist/kick3"); - MarkSound("demolitionist/revive"); - MarkSound("demolitionist/youdied"); - MarkSound("demolitionist/parry"); - MarkSound("demolitionist/handsup"); - MarkSound("demolitionist/handsdown"); - MarkSound("demolitionist/whits1"); - MarkSound("demolitionist/whits2"); - MarkSound("demolitionist/whits3"); - MarkSound("demolitionist/whitm1"); - MarkSound("demolitionist/whitm2"); - MarkSound("demolitionist/whitm3"); - MarkSound("demolitionist/whitl1"); - MarkSound("demolitionist/whitl2"); - MarkSound("demolitionist/buttslam"); - MarkSound("demolitionist/buttslamx"); - MarkSound("demolitionist/smooch"); - MarkSound("demolitionist/blowkiss"); - MarkSound("demolitionist/petting"); - MarkSound("demolitionist/knockout"); - } - States - { - Spawn: - // normal idle - #### # 2; - XZW1 A 1 A_JumpIf(player&&(player.mo==self)&&(abs(player.cmd.yaw|player.cmd.pitch)>128),"Turn"); - Wait; - See: - // normal walking - #### # 2; - XZW1 BCD 2 A_FastJump(null,"SeeRun","SeeFast"); - XZW1 E 0 A_Footstep(1); - XZW1 EFGHIJKL 2 A_FastJump(null,"SeeRun","SeeFast"); - XZW1 M 0 A_Footstep(-1); - XZW1 MNOPA 2 A_FastJump(null,"SeeRun","SeeFast"); - Goto See+1; - Turn: - #### # 8 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.1); - XZW1 C 1 A_JumpIf(!player||!(player.cmd.yaw|player.cmd.pitch),1); - Wait; - XZW1 C 3 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.1); - Goto Spawn+1; - SeeRun: - #### # 2; - XZWI PQR 2 A_FastJump("See",null,"SeeFast"); - XZWI S 0 A_Footstep(1,1); - XZWI STUVWX 2 A_FastJump("See",null,"SeeFast"); - XZWI Y 0 A_Footstep(-1,1); - XZWI YZ 2 A_FastJump("See",null,"SeeFast"); - XZW1 A 2 A_FastJump("See",null,"SeeFast"); - Goto SeeRun+1; - SeeFast: - // sprinting - #### # 2 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.3); - XZW1 QRS 2; - Goto SeeFastLoop; - SeeFastLoop: - // keep sprinting - XZW1 T 1 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW1 U 1 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW1 V 0 A_Footstep(1,2); - XZW1 V 1 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW1 W 2 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW1 X 2 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW1 Y 2 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW1 Z 2 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW2 A 1 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW2 B 1 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW2 C 0 A_Footstep(-1,2); - XZW2 C 1 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW2 D 2 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW2 E 2 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW2 F 2 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - XZW2 G 2 A_JumpIf(FastCheck()!=2,"SeeFastEnd"); - Goto SeeFastLoop; - SeeFastEnd: - // brake - #### # 2 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.3); - XZW2 HIJKL 2; - Goto Spawn+1; - Pain: - // ouchy - XZW1 A 1 A_JumpIf(player&&(player.mo==self)&&(player.crouchdir==-1),"CrouchPain"); - XZW2 M 1 A_DemoPain(); - XZW2 NOPQ 1; - Goto Spawn+1; - Death: - XDeath: - // ded - XZW1 A 0 A_JumpIf(player&&(player.mo==self)&&(player.crouchdir==-1),"CrouchDeath"); - XZW1 A 2 - { - A_DemoScream(); - bSOLID = true; // we need this to avoid clipping into things - } - XZW2 RSTUVWXYZ 2; - XZW3 ABCDEFG 2; - XZW3 H 1 A_DMFade(); - Wait; - Boost: - // start boost - #### # 2; - XZW3 IJKLMNO 2 - { - if ( player.onground||bNoGravity||(waterlevel>=3) ) - return ResolveState("BoostEnd"); - A_BoostUp(true); - return ResolveState(null); - } - // keep boost - XZW3 P 1 - { - if ( player.onground||bNoGravity||(waterlevel>=3) ) - return ResolveState("BoostEnd"); - A_BoostUp(false); - return ResolveState(null); - } - XZW3 P 1 A_JumpIf((vel.z<-10)&&(pos.z>(floorz+80)),"Fall"); - Goto Boost+8; - BoostEnd: - // stop boost - #### # 2; - XZW3 PQRSTUVW 2; - Goto Spawn+1; - Jump: - #### # 2; - XZWJ ABCDEF 2 A_JumpIf(player.onground&&!bNoGravity&&(waterlevel<3),"FallEnd"); - Goto FallLoop; - Fall: - // start fall - #### # 4; - XZW3 XYZ 2 A_JumpIf(player.onground&&!bNoGravity&&(waterlevel<3),"FallEnd"); - XZW4 AB 2 A_JumpIf(player.onground&&!bNoGravity&&(waterlevel<3),"FallEnd"); - Goto FallLoop; - FallLoop: - // falling - XZW4 CDEFGH 3 A_JumpIf(player.onground&&!bNoGravity&&(waterlevel<3),"FallEnd"); - Goto FallLoop; - FallEnd: - // landing - XZW4 CIJKLMN 2; - Goto Spawn+1; - Dash: - #### # 2; - XZW4 O 2 A_Dash(); - XZW4 PQRS 2 A_Dash(); - Goto Dash+2; - DashEnd: - XZW4 TUVWX 2; - Goto Spawn+1; - Wave: - #### # 3; - XZW4 YZ 3; - XZW5 ABCDEFGHIJKLM 3; - Goto Spawn+1; - Approve: - #### # 3; - XZW5 NOPQRSTUVWXYZ 3; - XZW6 ABCD 3; - Goto Spawn+1; - Victory: - #### # 3; - XZW6 EFGHIJKLMNOPQRSTUVW 3; - Goto Spawn+1; - BlowKiss: - #### # 3; - XZWD EFGHIJKLMNOPQRSTUVW 3; - Goto Spawn+1; - Headpat: - #### # 3; - XZWH ST 3; - XZWH UVW 2; - XZWH XYZ 1; - XZWI A 1; - XZWI BCDE 2; - XZWI FG 1; - HeadpatLoop: - XZWI H 1; - XZWH XYZ 1; - XZWI A 1; - XZWI BCDE 2; - XZWI FGH 1; - XZWI IJK 2; - XZWI LMNO 3; - Goto Spawn+1; - Ragepat: - #### # 3; - XZWH ST 2; - XZWH UVW 1; - XZWH XZ 1; - XZWI BCDE 1; - XZWI FH 1; - XZWH XZ 1; - XZWI BCDE 1; - XZWI FH 1; - XZWH XZ 1; - XZWI BCDE 1; - XZWI F 1; - RagepatLoop: - XZWI H 1; - XZWH XZ 1; - XZWI BCDE 1; - XZWI FH 1; - XZWI IJK 1; - XZWI LMNO 2; - Goto Spawn+1; - Missile: - // attacking - #### # 2; - XZW6 XYZ 2; - XZW7 ABC 2; - Goto Spawn+1; - Melee: - // ponch - #### # 2; - XZW8 TUVWXYZ 2; - XZW9 ABCDEF 2; - Goto Spawn+1; - FastMelee: - // ponch (fast) - #### # 2; - XZW8 TUVWXYZ 1; - XZW9 ABCDE 1; - XZW9 F 2; - Goto Spawn+1; - Reload: - // reload - #### # 2; - XZW9 GHIJKLMNOPQRSTUVWXYZ 2; - XZWA ABCDE 2; - Goto Spawn+1; - CheckGun: - // speen - #### # 2; - XZWA FGHIJKLMNOPQRSTUVWXY 2; - Goto Spawn+1; - StartCrouch: - // go crouching - #### # 2 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.45); - XZW7 DEFGH 1; - XZW7 IJKL 2; - Goto Crouch+1; - Crouch: - #### # 4; - XZW7 M -1; - Stop; - CrouchMove: - #### # 4; - XZW7 MN 4 A_FastJump(null,"CrouchMoveRun","CrouchMoveFast"); - XZW7 O 0 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.1); - XZW7 OPQRS 4 A_FastJump(null,"CrouchMoveRun","CrouchMoveFast"); - XZW7 T 0 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.1); - XZW7 TUV 4 A_FastJump(null,"CrouchMoveRun","CrouchMoveFast"); - Goto CrouchMove+1; - CrouchMoveRun: - #### # 3; - XZW7 MN 3 A_FastJump("CrouchMove",null,"CrouchMoveFast"); - XZW7 O 0 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.2); - XZW7 OPQRS 3 A_FastJump("CrouchMove",null,"CrouchMoveFast"); - XZW7 T 0 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.2); - XZW7 TUV 3 A_FastJump("CrouchMove",null,"CrouchMoveFast"); - Goto CrouchMoveRun+1; - CrouchMoveFast: - #### # 2; - XZW7 MN 2 A_FastJump("CrouchMove","CrouchMoveRun",null); - XZW7 O 0 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.4); - XZW7 OPQRS 2 A_FastJump("CrouchMove","CrouchMoveRun",null); - XZW7 T 0 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.4); - XZW7 TUV 2 A_FastJump("CrouchMove","CrouchMoveRun",null); - Goto CrouchMoveFast+2; - CrouchWave: - #### # 3; - XZWF ABCDEFGHIJKLMNO 3; - Goto Crouch+1; - CrouchApprove: - #### # 3; - XZWF PQRSTUVWXYZ 3; - XZWG ABCDEF 3; - Goto Crouch+1; - CrouchVictory: - #### # 3; - XZWG GHIJKLMNOPQRSTUVWXY 3; - Goto Crouch+1; - CrouchBlowKiss: - #### # 3; - XZWG Z 3; - XZWH ABCDEFGHIJKLMNOPQR 3; - Goto Crouch+1; - CrouchMissile: - XZW7 M 2; - XZW7 WXYZ 2; - XZW8 AB 2; - Goto Crouch+1; - CrouchMelee: - XZW7 M 2; - XZWA Z 2; - XZWB ABCDEFGHIJKL 2; - Goto Crouch+1; - CrouchFastMelee: - XZW7 M 2; - XZWA Z 1; - XZWB ABCDEFGHIJK 1; - XZWB L 2; - Goto Crouch+1; - CrouchReload: - XZW7 M 2; - XZWB MNOPQRSTUVWXYZ 2; - XZWC ABCDEFGHIJ 2; - Goto Crouch+1; - CrouchCheckGun: - XZW7 M 2; - XZWC LMNOPQRSTUVWXYZ 2; - XZWD ABCD 2; - Goto Crouch+1; - CrouchPain: - XZW7 M 1; - XZW8 C 1 A_DemoPain(); - XZW8 DEF 1; - Goto Crouch+1; - CrouchDeath: - XZW7 M 2 - { - A_DemoScream(); - bSOLID = true; // we need this to avoid clipping into things - } - XZW8 GHIJK 2; - XZW8 L 1 A_DMFade(); - Wait; - EndCrouch: - #### # 2 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.45); - XZW8 MNOPQRS 2; - Goto Spawn+1; - Float: - #### # 3; - XZWD XYZ 3; - XZWE ABCDEFGHI 3; - Goto Float+1; - Swim: - #### # 2; - XZWE JKL 2; - Goto SwimLoop; - SwimLoop: - #### # 5; - XZWE MNO 5 A_FastJump(null,"SwimLoopRun","SwimLoopFast"); - XZWE P 0 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.1); - XZWE PQRSTU 5 A_FastJump(null,"SwimLoopRun","SwimLoopFast"); - XZWE V 0 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.1); - XZWE VWX 5 A_FastJump(null,"SwimLoopRun","SwimLoopFast"); - Goto SwimLoop+1; - SwimLoopRun: - #### # 3; - XZWE MNO 3 A_FastJump("SwimLoop",null,"SwimLoopFast"); - XZWE P 0 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.2); - XZWE PQRSTU 3 A_FastJump("SwimLoop",null,"SwimLoopFast"); - XZWE V 0 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.2); - XZWE VWX 3 A_FastJump("SwimLoop",null,"SwimLoopFast"); - Goto SwimLoopRun+1; - SwimLoopFast: - #### # 2; - XZWE MNO 2 A_FastJump("SwimLoop","SwimLoopRun",null); - XZWE P 0 A_StartSound("demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP,.4); - XZWE PQRSTU 2 A_FastJump("SwimLoop","SwimLoopRun",null); - XZWE V 0 A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP,.4); - XZWE VWX 2 A_FastJump("SwimLoop","SwimLoopRun",null); - Goto SwimLoopFast+1; - SwimEnd: - #### # 2; - XZWE MYZ 2; - Goto Float+1; - } -} - -Class SWWMVoodooDoll : PlayerPawn -{ - override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) - { - // as simple as it gets - return "$OB_VOODOO"; - } - Default - { - Tag "$FN_VOODOO"; - Speed 1; - Health 100; - Radius 16; - Height 56; - Mass 100; - PainChance 255; - +NOBLOOD; - +DONTGIB; - +NOICEDEATH; - +DONTCORPSE; - } - States - { - Spawn: - XZWZ A -1; - Loop; - Pain: - XZWZ A 1; - XZWZ B 2 A_StartSound("voodoodoll/hit",CHAN_BODY,CHANF_OVERLAP); - XZWZ CDEF 2; - Goto Spawn; - Death: - XZWZ A 2 - { - A_StartSound("voodoodoll/fall",CHAN_BODY,CHANF_OVERLAP); - A_NoBlocking(); - } - XZWZ GHIJKLMNO 2; - XZWZ PQR 2; - XZWZ S -1; - Stop; - } -} - -// for the doom 2 cast -Class CastDemolitionist : Actor -{ - Default - { - DeathSound "demolitionist/death"; - } - States - { - Spawn: - See: - ZYX1 ABCDEFGHIJKLMNOP 2; - Loop; - Missile: - ZYX1 A 2; - ZYX2 ABCDEF 2; - Goto See; - Death: - ZYX1 A 2; - ZYX3 ABCDEFGHIJKLMNOP 2; - ZYX3 Q -1; - Stop; - } -} diff --git a/zscript/swwm_player_fx.zsc b/zscript/swwm_player_fx.zsc deleted file mode 100644 index dee6d5193..000000000 --- a/zscript/swwm_player_fx.zsc +++ /dev/null @@ -1,529 +0,0 @@ -// player effects - -// drop from monsters when using "Demoslayer" fun option -// heals up to 100 HP when touched -Class SlayerOrb : Actor abstract -{ - Class tclass; - - Property TrailClass : tclass; - - Default - { - RenderStyle "Add"; - Radius 4; - Height 8; - Scale .5; - BounceFactor .75; - WallBounceFactor .75; - Gravity .35; - PROJECTILE; - +THRUACTORS; - -NOGRAVITY; - +NOTELEPORT; - +DONTSPLASH; - +BOUNCEONWALLS; - +BOUNCEONFLOORS; - +BOUNCEONCEILINGS; - +CANBOUNCEWATER; - +FORCEXYBILLBOARD; - } - virtual void PickedUp( int np, PlayerPawn mo ) - { - } - override void Tick() - { - Vector3 oldp = pos; - Super.Tick(); - if ( !isFrozen() ) - { - let t = Spawn(tclass,pos); - t.scale *= abs(scale.x); - t.alpha *= alpha; - scale *= .995; - alpha = abs(scale.x)*2.; - if ( abs(scale.x) < .1 ) - { - Destroy(); - return; - } - } - int np = -1; - double mdist = 1000.; - for ( int i=0; i mdist ) continue; - mdist = dist; - np = i; - } - if ( np == -1 ) return; - let mo = players[np].mo; - if ( (GetAge() > 5) && SWWMUtility.BoxIntersect(self,mo,pad:8) ) - { - PickedUp(np,mo); - Destroy(); - return; - } - if ( isFrozen() ) return; - Vector3 dirto = level.Vec3Diff(pos,mo.Vec3Offset(0,0,mo.Height/2)); - double distto = dirto.length(); - dirto /= distto; - double fact = ((1000.-distto)/1000.)**2.; - vel *= 1.-.05*fact; - vel += (dirto+(0,0,.1))*fact*2.; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SpriteOffset = (0,-4); - Scale.x *= RandomPick[Junk](-1,-1); - Scale.y *= RandomPick[Junk](-1,-1); - } -} -Class HealthOrb : SlayerOrb -{ - Default - { - SlayerOrb.TrailClass "HealthOrbTrail"; - } - override void PickedUp( int np, PlayerPawn mo ) - { - int flg = CHANF_OVERLAP|CHANF_MAYBE_LOCAL; - if ( mo.CheckLocalView() ) flg |= CHANF_NOPAUSE; - mo.A_StartSound("misc/health_pkup",CHAN_ITEM,flg); - int hp = int(ceil(abs(scale.x*10))); - mo.GiveBody(hp,100); - SWWMHandler.HealthFlash(np); - SWWMScoreObj.Spawn(hp,mo.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+mo.Height/2),ST_Health); - } - States - { - Spawn: - BLPF E -1 Bright; - Stop; - - } -} -Class ArmorOrb : SlayerOrb -{ - Default - { - SlayerOrb.TrailClass "ArmorOrbTrail"; - } - override void PickedUp( int np, PlayerPawn mo ) - { - int flg = CHANF_OVERLAP|CHANF_MAYBE_LOCAL; - if ( mo.CheckLocalView() ) flg |= CHANF_NOPAUSE; - mo.A_StartSound("misc/armor_pkup",CHAN_ITEM,flg); - int hp = int(ceil(abs(scale.x*10))); - let n = mo.FindInventory("ArmorNugget"); - if ( !n ) - { - n = Inventory(Spawn("ArmorNugget")); - n.AttachToOwner(mo); - SWWMLoreLibrary.Add(mo.player,"Nugget"); - n.Amount = 0; - } - if ( n.Amount < 100 ) n.Amount = min(n.Amount+hp,100); - SWWMHandler.ArmorFlash(np); - SWWMScoreObj.Spawn(hp,mo.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+mo.Height/2),ST_Armor); - } - States - { - Spawn: - BLPF D -1 Bright; - Stop; - - } -} - -Class SlayerOrbTrail : Actor abstract -{ - Default - { - RenderStyle "Add"; - Radius .1; - Height 0.; - Scale .25; - Alpha .5; - +FORCEXYBILLBOARD; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - alpha *= .9; - scale *= 1.05; - if ( alpha < .05 ) Destroy(); - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SpriteOffset = (0,-4); - } -} -Class HealthOrbTrail : SlayerOrbTrail -{ - States - { - Spawn: - BLPS E -1 Bright; - Stop; - } -} -Class ArmorOrbTrail : SlayerOrbTrail -{ - States - { - Spawn: - BLPS D -1 Bright; - Stop; - } -} - -Class DashTrail : Actor -{ - Default - { - RenderStyle "Add"; - Radius .1; - Height 0.; - Scale 0.3; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - FloatBobPhase 0; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SetState(FindState("Spawn")+Random[ExploS](0,7)); - let t = Spawn("DashTrail2",level.Vec3Offset(pos,vel*.3)); - t.target = target; - t.vel = vel*1.2; - let s = Spawn("SWWMSmoke",level.Vec3Offset(pos,vel*1.6)); - s.vel = vel*.8; - s.SetShade(Color(1,1,1)*Random[ExploS](64,128)); - s.special1 = Random[ExploS](2,4); - s.scale *= 1.4; - s.alpha *= .3; - } - override void Tick() - { - Super.Tick(); - // hack - if ( target && (players[consoleplayer].Camera == target) ) Warp(target,pos.x,pos.y,pos.z,0,WARPF_ABSOLUTEPOSITION|WARPF_COPYINTERPOLATION); - } - States - { - Spawn: - JFLB ABCDEFGH 1 Bright - { - A_FadeOut(.2); - A_SetScale(scale.x*.95); - } - Loop; - } -} - -Class DashTrail2 : Actor -{ - Default - { - RenderStyle "Add"; - Radius .1; - Height 0.; - Scale 0.2; - Alpha 0.4; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - FloatBobPhase 0; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SetState(FindState("Spawn")+Random[ExploS](0,7)); - } - override void Tick() - { - Super.Tick(); - // hack - if ( target && (players[consoleplayer].Camera == target) ) Warp(target,pos.x,pos.y,pos.z,0,WARPF_ABSOLUTEPOSITION|WARPF_COPYINTERPOLATION); - } - States - { - Spawn: - JFLR ABCDEFGH 1 Bright - { - A_FadeOut(.02); - A_SetScale(scale.x*1.04); - if ( waterlevel > 0 ) - { - let b = Spawn("SWWMBubble",pos); - b.vel = vel; - b.scale *= scale.x; - Destroy(); - } - } - Loop; - } -} - -Class DemolitionistRadiusShockwaveTail : Actor -{ - Default - { - RenderStyle "Add"; - Radius 16; - Height 8; - +NOBLOCKMAP; - +NOGRAVITY; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - } - States - { - Spawn: - XZW1 A 1 - { - pitch = min(85,(pitch+2)*1.05); - A_FadeOut(.02); - A_SetScale(scale.x*1.08,scale.y); - vel *= .98; - } - Wait; - } -} - -Class DemolitionistRadiusShockwave : Actor -{ - Actor lasthit; - - Default - { - RenderStyle "Add"; - Speed 15; - DamageFunction int(200*alpha); - DamageType "GroundPound"; - Radius 16; - Height 8; - Alpha .4; - XScale .65; - YScale 3.; - PROJECTILE; - +DONTSPLASH; - +STEPMISSILE; - +NOEXPLODEFLOOR; - +FLATSPRITE; - +RIPPER; - +BLOODLESSIMPACT; - -NOGRAVITY; - } - override int DoSpecialDamage( Actor target, int damage, Name damagetype ) - { - if ( target == lasthit ) return 0; - lasthit = target; - if ( damage <= 0 ) return damage; - if ( (target.mass < LARGE_MASS) && !target.bDONTTHRUST ) - { - target.vel.xy += vel.xy.unit()*(30000./max(50,target.mass))*alpha; - if ( (target.pos.z <= floorz) || !target.TestMobjZ() ) - target.vel.z += (4000./max(50,target.mass))*alpha; - } - return damage; - } - States - { - Spawn: - XZW1 A 1 - { - SetZ(floorz); - pitch = min(85,(pitch+2)*1.05); - if ( !Random[ExploS](0,3) ) - Spawn("InvisibleSplasher",Vec3Offset(0,0,2)); - let s = Spawn("DemolitionistRadiusShockwaveTail",pos); - s.vel = vel*.35; - s.scale = scale; - s.alpha = alpha*.4; - s.angle = angle; - s.pitch = pitch; - s.roll = roll; - A_FadeOut(.015); - A_SetScale(scale.x*1.08,scale.y); - vel *= .98; - } - Wait; - Death: - XZW1 A 1 - { - SetZ(floorz); - A_FadeOut(.05); - A_SetScale(scale.x*1.1,scale.y*.97); - } - Wait; - } -} - -Class DemolitionistShockwave : Actor -{ - Default - { - +NOGRAVITY; - +NOBLOCKMAP; - +NOTELEPORT; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - +NOINTERACTION; - Radius .1; - Height 0.; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - A_QuakeEx(7,7,7,30,0,300+min(special1,50)*4,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollIntensity:1.5); - if ( target.player != players[consoleplayer] ) - { - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,attenuation:.3); - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,attenuation:.2,pitch:.7); - A_StartSound("demolitionist/hardland",CHAN_FOOTSTEP,CHANF_OVERLAP,attenuation:.1,pitch:.4); - } - SWWMUtility.DoExplosion(self,40+min(special1,120),100000+min(special1*2000,150000),100+min(special1*2,130),80,DE_BLAST|DE_EXTRAZTHRUST,'GroundPound',target); - for ( int i=0; i<360; i+=5 ) - { - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,3); - let s = Spawn("SWWMSmoke",Vec3Angle(4,i,8)); - s.vel = pvel+(cos(i),sin(i),0)*7.; - s.SetShade(Color(1,1,1)*Random[ExploS](64,224)); - s.special1 = Random[ExploS](1,4); - s.scale *= 1.5; - s.alpha *= .4; - } - if ( pos.z > floorz+16 ) return; - for ( int i=0; i<360; i+=5 ) - { - let r = Spawn("DemolitionistRadiusShockwave",Vec3Angle(5,i)); - r.target = target; - r.angle = i; - r.vel.xy = (cos(i),sin(i))*(r.speed+min(special1*.15,30)); - r.alpha *= .1+min(special1*.03,.9); - } - int numpt = Random[ExploS](10,20); - for ( int i=0; i rgb; - str.Split(rgb,",",0); - tagcolor = Color(255,rgb[0].ToInt(),rgb[1].ToInt(),rgb[2].ToInt()); - } - else tagcolor = Color(255,32,48,24); - } - bool doselflight = swwm_selflight; - bool curactive = doselflight&&activelight(); - // setting the pitch to a value outside [-90,90] makes it auto-update to the actor's own pitch - // this is undocumented and it's very great and nice and fine that such a thing had to be found out purely by chance - // how very wonderful /s - if ( curactive && !oldactive ) - target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,Color(112,144,176),200,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE|DynamicLight.LF_SPOT,(5,0,target.player?(target.player.viewz-target.pos.z):(target.height*.93)),0,15,60,180); - else if ( !curactive && oldactive ) - target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,0,0,0); - oldactive = curactive; - bool curglow = doselflight&&(!(target.bINVISIBLE||(target.alpha <= double.epsilon))); - if ( curglow && !oldglow ) target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,tagcolor,80,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE,(0,0,target.height/2)); - else if ( !curglow && oldglow ) target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,0,0,0); - oldglow = curglow; - } -} diff --git a/zscript/swwm_statichandler.zsc b/zscript/swwm_statichandler.zsc deleted file mode 100644 index a63305c4f..000000000 --- a/zscript/swwm_statichandler.zsc +++ /dev/null @@ -1,353 +0,0 @@ -// Static handler responsible for some special stuff - -// save version holder -Class SWWMSaveVerData : Thinker -{ - String ver; -} - -Class SWWMStaticHandler : StaticEventHandler -{ - // crash handler - ui bool wasinmap; - ui int timer, msgpick; - // versioning - bool tainted; - String taintver; - int checktic; - int maptime; - bool unloading; - ui Dictionary menustate; // used by Demolitionist Menu to restore old menu positions - // title stuff - bool titlefirst; - // warnings - bool mpwarned; - - override void NewGame() - { - // set save version every new session - let svd = new("SWWMSaveVerData"); - svd.ChangeStatNum(Thinker.STAT_STATIC); - svd.ver = StringTable.Localize("$SWWM_SHORTVER"); - } - - override void WorldUnloaded( WorldEvent e ) - { - SWWMHandler.ClearAllShaders(players[consoleplayer]); - unloading = true; - } - - override void WorldTick() - { - maptime++; - // in case we start late? - if ( multiplayer && !mpwarned ) - { - mpwarned = true; - Console.Printf("\cgWARNING:\c- Multiplayer is no longer officially supported, desyncs and other issues may potentially happen. You are on your own."); - S_StartSound("compat/warn",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - } - } - - override void WorldLoaded( WorldEvent e ) - { - if ( gamestate != GS_TITLELEVEL ) titlefirst = true; // we skip it - unloading = false; - maptime = 0; - if ( e.IsSavegame || e.IsReopen ) - { - // restore underwater sounds for players - for ( int i=0; i= 2.) ) mmz = 2.; - else if ( mmz >= 1. ) mmz = 1.; - else mmz = .5; - CVar.FindCVar('swwm_mm_zoom').SetFloat(mmz); - if ( !e.IsSaveGame ) return; - // save version checker - checktic = gametic+5; - let ti = ThinkerIterator.Create("SWWMSaveVerData",Thinker.STAT_STATIC); - let svd = SWWMSaveVerData(ti.Next()); - if ( !svd ) - { - tainted = true; - taintver = "\cg(no version info)\c-"; - return; - } - String cver = StringTable.Localize("$SWWM_SHORTVER"); - if ( svd.ver != cver ) - { - tainted = true; - taintver = svd.ver; - } - } - - override void OnUnregister() - { - // save achievements on exit - SaveAchievements(); - } - - override void OnRegister() - { - // fix voice type cvar - int lmp; - Array types; - for ( lmp = Wads.FindLump("swwmvoicepack.txt"); lmp > 0; lmp = Wads.FindLump("swwmvoicepack.txt",lmp+1) ) - { - Array lst; - lst.Clear(); - String dat = Wads.ReadLump(lmp); - dat.Split(lst,"\n",0); - for ( int i=0; i= types.Size() ) - cv.SetString("default"); - // load up the achievements - if ( swwm_achievementstate == "" ) MigrateAchievements(); - else LoadAchievements(); - // warn: mp no longer officially maintained - if ( multiplayer ) - { - mpwarned = true; - Console.Printf("\cgWARNING:\c- Multiplayer is no longer officially supported, desyncs and other issues may potentially happen. You are on your own."); - S_StartSound("compat/warn",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - } - // warning for unsupported - if ( Wads.FindLump("swwmgamesupported.txt") != -1 ) return; - Console.Printf( - "\cx┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\c-\n" - "\cx┃ \cr[\cgWARNING\cr] \cx┃\c-\n" - "\cx┃ \chSWWM \czGZ \cjis \cfNOT\cj compatible with the loaded IWAD. \cx┃\c-\n" - "\cx┃ \cjOnly \cfDoom\cj, \cfHeretic\cj and \cfHexen\cj are supported. \cx┃\c-\n" - "\cx┃ \cjIssues \cfCAN\cj and \cfWILL\cj happen. \cx┃\c-\n" - "\cx┃ \cr[\cgYOU ARE ON YOUR OWN\cr] \cx┃\c-\n" - "\cx┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\c-"); - S_StartSound("compat/warn",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - } - - override void RenderOverlay( RenderEvent e ) - { - // warn on use of incorrect render settings - // make sure to find the cvars, rather than use them directly - // just in case anything changes in the future and we end up - // breaking shit (not the first time a mod does that) - int yy = 8; - let backend = CVar.FindCVar('vid_preferbackend'); - let rmode = CVar.FindCVar('vid_rendermode'); - if ( backend && (backend.GetInt() > 1) ) - { - String str = "UNSUPPORTED VIDEO BACKEND - PLEASE SWITCH TO OPENGL OR VULKAN"; - Screen.DrawText(newsmallfont,Font.CR_RED,(Screen.GetWidth()-newsmallfont.StringWidth(str)*CleanXFac_1)/2,yy,str,DTA_CleanNoMove_1,true); - yy += 16*CleanYFac_1; - } - if ( rmode && (rmode.GetInt() != 4) ) - { - String str = "UNSUPPORTED RENDER MODE - PLEASE SWITCH TO HARDWARE RENDERING"; - Screen.DrawText(newsmallfont,Font.CR_RED,(Screen.GetWidth()-newsmallfont.StringWidth(str)*CleanXFac_1)/2,yy,str,DTA_CleanNoMove_1,true); - } - } - - override void ConsoleProcess( ConsoleEvent e ) - { - if ( e.Name ~== "swwmresetmmcolors" ) - { - Array cvarlist; - SWWMUtility.GetCVars(cvarlist); - for ( int i=0; i cvarlist; - SWWMUtility.GetCVars(cvarlist); - for ( int i=0; i cvarlist; - SWWMUtility.GetCVars(cvarlist); - for ( int i=0; i 0) && !(gametic%GameTicRate) ) - { - let pt = CVar.FindCVar('swwm_playtime'); - int ct = pt.GetInt(); - pt.SetInt(ct+1); - } - if ( gamestate != GS_LEVEL ) return; - CheckAllAchievements(); - if ( gametic != checktic ) return; - String cver = StringTable.Localize("$SWWM_SHORTVER"); - if ( tainted ) - { - let ti = ThinkerIterator.Create("SWWMSaveVerData",Thinker.STAT_STATIC); - let svd = SWWMSaveVerData(ti.Next()); - if ( !svd ) Console.Printf("\cgWARNING:\n \cjSave contains no version data. Issues may happen.\c-"); - else - { - Console.Printf("\cgWARNING:\n \cjVersion mismatch with save data. Issues may happen.\c-"); - Console.Printf("\cgSaved:\n \cj"..svd.ver.."\c-"); - Console.Printf("\cgCurrent:\n \cj"..cver.."\c-"); - } - } - } - - override void UiTick() - { - // Fancy crash effect - if ( (gamestate == GS_LEVEL) || (gamestate == GS_TITLELEVEL) ) - { - wasinmap = true; - timer = 0; - } - else if ( (gamestate == GS_FULLCONSOLE) && ((wasinmap && !players[consoleplayer].viewheight) || (timer > 0)) ) - { - wasinmap = false; - if ( timer == 1 ) - { - msgpick = Random[UIStuff](1,8); - Console.Printf("\cf%s\c-",StringTable.Localize("$CRASHMSG"..msgpick.."A")); - let hnd = SWWMBrutalHandler(StaticEventHandler.Find("SWWMBrutalHandler")); - if ( hnd && hnd.detected ) - { - S_StartSound("crash/glass",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - S_StartSound("crash/glass",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - } - else S_StartSound("crash/crash",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - } - else if ( timer == 70 ) - { - Console.Printf("\cf%s\c-",StringTable.Localize("$CRASHMSG"..msgpick.."B")); - S_StartSound("crash/curb",CHAN_YOUDONEFUCKEDUP,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); - } - else if ( timer == 140 ) - { - let hnd = SWWMBrutalHandler(StaticEventHandler.Find("SWWMBrutalHandler")); - if ( hnd && hnd.detected ) Console.Printf("\cfYou shouldn't have tried running this with "..hnd.which..".\c-"); - else Console.Printf("\cfYou should probably screenshot this error and show it to Marisa.\c-"); - Console.Printf("\cfLoaded Version:\n \cj%s\c-",StringTable.Localize("$SWWM_SHORTVER")); - if ( tainted ) Console.Printf("\cfSavegame Version:\n \cj%s\c-",taintver); - } - timer++; - } - } -} - diff --git a/zscript/swwm_thinkers.zsc b/zscript/swwm_thinkers.zsc index 00c82a518..d49de0304 100644 --- a/zscript/swwm_thinkers.zsc +++ b/zscript/swwm_thinkers.zsc @@ -1,7 +1,7 @@ // various stat tracking thinkers and others // Korax instakill handler -Class UglyBoyGetsFuckedUp : Thinker +Class KoraxYeeted : Thinker { bool wedone; @@ -14,7 +14,7 @@ Class UglyBoyGetsFuckedUp : Thinker int sidx = level.CreateSectorTagIterator(145).Next(); if ( sidx == -1 ) return; Sector door = level.Sectors[sidx]; - let ti = ThinkerIterator.Create("SectorEffect"); + let ti = ThinkerIterator.Create('SectorEffect'); SectorEffect se; while ( se = SectorEffect(ti.Next()) ) { @@ -30,129 +30,6 @@ Class UglyBoyGetsFuckedUp : Thinker } } -// Track last damage source to blame fall damage on -Class SWWMWhoPushedMe : Thinker -{ - Actor tracked, instigator; - - static void SetInstigator( Actor b, Actor whomst ) - { - if ( !b || !whomst ) return; - let ti = ThinkerIterator.Create("SWWMWhoPushedMe",STAT_INFO); - SWWMWhoPushedMe ffd; - while ( ffd = SWWMWhoPushedMe(ti.Next()) ) - { - if ( ffd.tracked != b ) continue; - ffd.instigator = whomst; - return; - } - ffd = new("SWWMWhoPushedMe"); - ffd.ChangeStatNum(STAT_INFO); - ffd.tracked = b; - ffd.instigator = whomst; - } - - static Actor RecallInstigator( Actor b ) - { - if ( !b ) return null; - let ti = ThinkerIterator.Create("SWWMWhoPushedMe",STAT_INFO); - SWWMWhoPushedMe ffd; - while ( ffd = SWWMWhoPushedMe(ti.Next()) ) - { - if ( ffd.tracked != b ) continue; - Actor whomst = ffd.instigator; - ffd.Destroy(); - return whomst; - } - return null; - } -} - -Class SWWMDamageAccumulator : Thinker -{ - Actor victim, inflictor, source; - Array amounts; - int total; - Name type; - bool dontgib; - int flags; - - override void Tick() - { - Super.Tick(); - // so many damn safeguards in this - if ( !victim || (victim.Health <= 0) ) - { - Destroy(); - return; - } - int gibhealth = victim.GetGibHealth(); - // お前はもう死んでいる - if ( (victim.health-total <= gibhealth) && !dontgib ) - { - // safeguard for inflictors that have somehow ceased to exist, which apparently STILL CAN HAPPEN - if ( inflictor ) inflictor.bEXTREMEDEATH = true; - else type = 'Extreme'; - } - // make sure accumulation isn't reentrant - if ( inflictor && (inflictor is 'EvisceratorChunk') ) inflictor.bAMBUSH = true; - // 何? - for ( int i=0; i85899345)?int.max:(a.total*25); - return a.total; - } - return 0; - } -} - // ensures a polyobj stays out of bounds FOREVER Class SWWMBustedPolyobj : swwm_PolyobjectEffector { @@ -181,7 +58,7 @@ Class SWWMCrusherBroken : Thinker static void Create( Sector f, Sector c, double diffh ) { if ( !f && !c ) return; - let ti = ThinkerIterator.Create("SWWMCrusherBroken",STAT_USER); + let ti = ThinkerIterator.Create('SWWMCrusherBroken',STAT_USER); SWWMCrusherBroken cb; while ( cb = SWWMCrusherBroken(ti.Next()) ) { @@ -198,7 +75,7 @@ Class SWWMCrusherBroken : Thinker continue; } } - cb = new("SWWMCrusherBroken"); + cb = new('SWWMCrusherBroken'); cb.fsec = f; cb.csec = c; cb.ChangeStatNum(STAT_USER); @@ -210,7 +87,7 @@ Class SWWMCrusherBroken : Thinker static void Remove( Sector f, Sector c ) { if ( !f && !c ) return; - let ti = ThinkerIterator.Create("SWWMCrusherBroken",STAT_USER); + let ti = ThinkerIterator.Create('SWWMCrusherBroken',STAT_USER); SWWMCrusherBroken cb; while ( cb = SWWMCrusherBroken(ti.Next()) ) { @@ -292,55 +169,6 @@ Class SWWMCrusherBroken : Thinker } } -// cache data for manual lockdefs parsing nonsense -Class LIEntry -{ - int locknumber; - bool hascolor; - Color mapcolor; -} - -Class SWWMCachedLockInfo : Thinker -{ - Array ent; - - static clearscope bool IsValidLock( int l ) - { - let ti = ThinkerIterator.Create("SWWMCachedLockInfo",STAT_STATIC); - SWWMCachedLockInfo cli = SWWMCachedLockInfo(ti.Next()); - if ( !cli ) return false; - for ( int i=0; i lines; +} - static void Track( Actor b, Actor whomst ) - { - if ( !b || !whomst ) return; - let ti = ThinkerIterator.Create("SWWMFlyTracker",STAT_USER); - SWWMFlyTracker ffd; - while ( ffd = SWWMFlyTracker(ti.Next()) ) - { - if ( ffd.tracked != b ) continue; - ffd.instigator = whomst; - return; - } - ffd = new("SWWMFlyTracker"); - ffd.ChangeStatNum(STAT_USER); - ffd.tracked = b; - ffd.instigator = whomst; - ffd.curpos = ffd.startpos = b.pos; - ffd.maxdist = 0; - } +Class SWWMGlobals : SWWMStaticThinker +{ + // set so these messages only happen once + bool ccstartonce, cclilithonce; + + // for oneliners + Array lastlines; + + // toggleable mapping stuff + bool disablestore, disablerevive; - override void Tick() + static play SWWMGlobals Get() { - maxdist = max(maxdist,level.Vec3Diff(startpos,curpos).length()); - if ( !tracked || tracked.bFLOAT || tracked.bNOGRAVITY || (tracked.waterlevel > 1) || (tracked.pos.z <= tracked.floorz) || !tracked.TestMobjZ(false) ) + let ti = ThinkerIterator.Create('SWWMGlobals',STAT_STATIC); + SWWMGlobals g = SWWMGlobals(ti.Next()); + if ( !g ) { - gracepd++; - if ( gracepd < 10 ) return; - if ( instigator ) SWWMUtility.AchievementProgress("flight",int(maxdist),instigator.player); - Destroy(); - return; + g = new('SWWMGlobals'); + g.ChangeStatNum(STAT_STATIC); } - gracepd = 0; - curpos = tracked.pos; + return g; } - } diff --git a/zscript/swwm_thinkers_player.zsc b/zscript/swwm_thinkers_player.zsc index 15001efd4..461847e5f 100644 --- a/zscript/swwm_thinkers_player.zsc +++ b/zscript/swwm_thinkers_player.zsc @@ -1,46 +1,14 @@ // player-specific thinkers -// "Full History" contains all messages since session start, nothing is flushed -// this can be accessed from a section of the knowledge base -Class SWWMFullHistory : Thinker +Class SWWMStaticThinker : Thinker abstract { - String lastmap; - Array msg; - - static clearscope SWWMFullHistory Get() - { - let fh = SWWMFullHistory(ThinkerIterator.Create("SWWMFullHistory",STAT_STATIC).Next()); - return fh; - } - - static play void PushMessage( String str, int tic, int type ) - { - let fh = SWWMFullHistory(ThinkerIterator.Create("SWWMFullHistory",STAT_STATIC).Next()); - if ( !fh ) - { - fh = new("SWWMFullHistory"); - fh.ChangeStatNum(STAT_STATIC); - } - MsgLine m; - if ( level.mapname != fh.lastmap ) - { - // push a map change label - m = new("MsgLine"); - m.str = level.levelname; - m.type = -1; - fh.lastmap = level.mapname; - fh.msg.Push(m); - } - m = new("MsgLine"); - m.str = str; - m.tic = tic; - m.type = type; - fh.msg.Push(m); - } + // shell class to iterate easier on sanity checks + // all subclasses should be guaranteed to have a statnum of STAT_STATIC + // if they don't, something is very wrong } // Dedicated mission log (for custom maps) -Class SWWMMissionLog : Thinker +Class SWWMMissionLog : SWWMStaticThinker { Array entries; bool clockset; @@ -49,16 +17,16 @@ Class SWWMMissionLog : Thinker static clearscope SWWMMissionLog Get() { - let ml = SWWMMissionLog(ThinkerIterator.Create("SWWMMissionLog",STAT_STATIC).Next()); + let ml = SWWMMissionLog(ThinkerIterator.Create('SWWMMissionLog',STAT_STATIC).Next()); return ml; } static play void AddLog( String str ) { - let ml = SWWMMissionLog(ThinkerIterator.Create("SWWMMissionLog",STAT_STATIC).Next()); + let ml = SWWMMissionLog(ThinkerIterator.Create('SWWMMissionLog',STAT_STATIC).Next()); if ( !ml ) { - ml = new("SWWMMissionLog"); + ml = new('SWWMMissionLog'); ml.ChangeStatNum(STAT_STATIC); } if ( ml.entries.Find(str) < ml.entries.Size() ) return; @@ -68,10 +36,10 @@ Class SWWMMissionLog : Thinker static play void SetClock( int year, int month, int day, int hour, int minute, String tz = "JST" ) { - let ml = SWWMMissionLog(ThinkerIterator.Create("SWWMMissionLog",STAT_STATIC).Next()); + let ml = SWWMMissionLog(ThinkerIterator.Create('SWWMMissionLog',STAT_STATIC).Next()); if ( !ml ) { - ml = new("SWWMMissionLog"); + ml = new('SWWMMissionLog'); ml.ChangeStatNum(STAT_STATIC); } ml.clockset = true; @@ -99,7 +67,8 @@ Class MonsterKill Class LevelStat { - bool hub; + bool hub, visited; + int cluster; String levelname, mapname; int kcount, ktotal; int icount, itotal; @@ -107,12 +76,12 @@ Class LevelStat int time, par, suck; } -Class SWWMStats : Thinker +Class SWWMStats : SWWMStaticThinker { PlayerInfo myplayer; int lastspawn, dashcount, boostcount, stompcount, airtime, kills, deaths, damagedealt, hdamagedealt, damagetaken, hdamagetaken, - mkill, hiscore, hhiscore, topdealt, toptaken, skill, wponch, + mkill, hiscore, topdealt, toptaken, skill, wponch, busts, buttslams, secrets, items, parries, pparries, pats, befriend, smooch; double grounddist, airdist, swimdist, fuelusage, topspeed, teledist; @@ -134,37 +103,66 @@ Class SWWMStats : Thinker // stored for hexen int puzzlecnt, realpuzzlecnt; // easter eggs - int silveregg; + int silveregg, quadegg, deepegg; bool oldcheat; + bool gotyorick; + // impatient streamer flag + bool suregiveall; + // caching + SWWMHandler hnd; bool GotWeapon( Class which ) { - for ( int i=0; i WeaponFromInflictor( Actor inflictor, Name damagetype ) { Class which = myplayer.ReadyWeapon?myplayer.ReadyWeapon.GetClass():null; if ( inflictor is 'SWWMPuff' ) inflictor = inflictor.master; // special puffs transfer real inflictor through master pointer if ( inflictor is 'Weapon' ) which = Weapon(inflictor).GetClass(); if ( which is 'DualExplodiumGun' ) which = 'ExplodiumGun'; // don't credit sister weapon - if ( inflictor && inflictor.FindInventory("ParriedBuff") ) which = 'DoomWeapon'; // gross hack + if ( inflictor && inflictor.FindInventory('ParriedBuff') ) which = 'DoomWeapon'; // gross hack // properly credit some projectiles to their respective gun else if ( inflictor is 'AirBullet' ) which = 'DeepImpact'; - else if ( inflictor is 'PusherProjectile' ) which = 'PusherWeapon'; + else if ( (inflictor is 'HammerShockwave') || (inflictor is 'HammerRadiusShockwave') ) which = 'ItamexHammer'; else if ( (inflictor is 'ExplodiumMagArm') || (inflictor is 'ExplodiumMagProj') || (inflictor is 'ExplodiumBulletImpact') ) which = 'ExplodiumGun'; - else if ( (inflictor is 'DragonBreathArm') || ((inflictor is 'SaltImpact') && !inflictor.Args[0]) || ((inflictor is 'SaltBeam') && !inflictor.Args[1]) || (inflictor is 'CorrodeDebuff') || (inflictor is 'CorrosiveFlechette') || ((inflictor is 'TheBall') && !inflictor.special1) || (inflictor is 'GoldenImpact') || (inflictor is 'GoldenSubImpact') || (inflictor is 'GoldenSubSubImpact') ) which = 'Spreadgun'; - else if ( ((inflictor is 'SaltImpact') && inflictor.Args[0]) || ((inflictor is 'SaltBeam') && inflictor.Args[1]) || ((inflictor is 'TheBall') && inflictor.special1) ) which = 'Wallbuster'; + else if ( (inflictor is 'GoldenSubImpact') || (inflictor is 'GoldenSubSubImpact') ) which = 'Spreadgun'; else if ( (inflictor is 'EvisceratorChunk') || (inflictor is 'EvisceratorProj') ) which = 'Eviscerator'; - else if ( (inflictor is 'HellblazerMissile') || (inflictor is 'HellblazerRavagerArm') || (inflictor is 'HellblazerWarheadArm') ) which = 'Hellblazer'; + else if ( inflictor is 'SheenTrail' ) which = 'HeavyMahSheenGun'; + else if ( (inflictor is 'HellblazerMissile') || (inflictor is 'HellblazerArm') ) which = 'Hellblazer'; + else if ( (inflictor is 'QuadProj') || (inflictor is 'QuadExplArm') || (inflictor is 'OnFire') ) which = 'Quadravol'; else if ( (inflictor is 'BigBiospark') || (inflictor is 'BiosparkBall') || (inflictor is 'BiosparkBeamImpact') || (inflictor is 'BiosparkComboImpact') || (inflictor is 'BiosparkComboImpactSub') || (inflictor is 'BiosparkBeam') || (inflictor is 'BiosparkArc') || (inflictor is 'BiosparkCore') ) which = 'Sparkster'; - else if ( (inflictor is 'SilverAirRip') || (inflictor is 'SilverAirRip2') || (inflictor is 'SilverImpact') || (inflictor is 'FatChodeImpact') || (inflictor is 'FatChodeExplosionArm') ) which = 'SilverBullet'; + else if ( (inflictor is 'SilverAirRip') || (inflictor is 'SilverImpact') ) which = 'SilverBullet'; else if ( (inflictor is 'CandyBeam') || (inflictor is 'CandyPop') || (inflictor is 'CandyMagArm') || (inflictor is 'CandyGunProj') || (inflictor is 'CandyMagProj') || (inflictor is 'CandyBulletImpact') ) which = 'CandyGun'; + else if ( (inflictor is 'MisterBulletImpact') || (inflictor is 'MisterPop') || (inflictor is 'MisterFuzzy') || (inflictor is 'MisterGrenade') || (inflictor is 'MisterRailBeam') ) which = 'MisterRifle'; else if ( (inflictor is 'YnykronBeam') || (inflictor is 'YnykronImpact') || (inflictor is 'YnykronSingularity') || (inflictor is 'YnykronCloud') || (inflictor is 'YnykronVoidBeam') || (inflictor is 'YnykronLightningArc') || (inflictor is 'YnykronLightningImpact') ) which = 'Ynykron'; else if ( (inflictor is 'Demolitionist') || (inflictor is 'DemolitionistShockwave') || (inflictor is 'DemolitionistRadiusShockwave') || (inflictor is 'SWWMGesture') || (inflictor is 'SWWMItemGesture') ) which = 'SWWMWeapon'; // hack to assume Demolitionist as weapon @@ -217,13 +215,128 @@ Class SWWMStats : Thinker } } + private LevelStat FindLevelStats( String mapname ) + { + foreach ( ls:lstats ) + { + if ( ls.mapname != mapname ) continue; + return ls; + } + return null; + } + + // we doin' that thing again, yup + int ClusterRemap( int clus, int levelnum ) + { + if ( SWWMUtility.IsEviternityTwo() ) + { + // clusters in eviternity 2 have to be remapped + if ( clus == 5 ) return 1; + if ( (clus == 6) || (clus == 13) ) return 2; + if ( (clus == 7) || (clus == 14) ) return 3; + if ( (clus == 8) || (clus == 15) ) return 4; + if ( (clus == 9) || (clus == 16) ) return 5; + if ( (clus == 10) || (clus == 17) ) return 6; + if ( (clus == 11) || (clus == 12) || (clus == 18) || (clus == 19) ) return 7; + } + else if ( SWWMUtility.IsEviternity() ) + { + // we have to do some heavy lifting here because episodes don't match clusters + if ( levelnum <= 0 ) return clus; + if ( levelnum <= 5 ) return 1; + if ( levelnum <= 10 ) return 2; + if ( levelnum <= 15 ) return 3; + if ( levelnum <= 20 ) return 4; + if ( levelnum <= 25 ) return 5; + if ( levelnum <= 30 ) return 6; + if ( levelnum <= 31 ) return 7; + if ( levelnum <= 32 ) return 8; + } + else if ( SWWMUtility.IsLegacyOfRust() ) + { + // legacy of rust has its quirks, as with umapinfo there are + // technically no clusters + if ( levelnum <= 0 ) return clus; + if ( (levelnum <= 7) || (levelnum == 15) ) return 28; + else if ( (levelnum <= 14) || (levelnum == 16) ) return 29; + } + return clus; + } + + void PreloadLevelStats() + { + // pre-adds all unvisited levels from the current cluster + int nlevels = LevelInfo.GetLevelInfoCount(); + int ourcluster = ClusterRemap(level.cluster,level.levelnum); + for ( int i=0; i mvictim = SWWMUtility.MergeMonster(victim.GetClass()); + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + Class mvictim = SWWMUtility.MergeMonster(hnd,victim.GetClass()); bool found = false; - for ( int i=0; i 999999999 ) - { - c.credits -= 1000000000; - c.hcredits++; - } - if ( (c.hcredits+hamount < c.hcredits) || (c.hcredits+hamount > 999999999) ) c.hcredits = 999999999; - else c.hcredits += hamount; + // safeguard + if ( amount < 0 ) ThrowAbortException("SWWMCredits.Give() called with negative amount"); + if ( c.credits+amount < c.credits ) c.credits = 999999999; + else c.credits = min(999999999,c.credits+amount); let s = SWWMStats.Find(p); - if ( s && ((c.hcredits > s.hhiscore) || ((c.credits > s.hiscore) && (c.hcredits >= s.hhiscore))) ) + if ( s && (c.credits > s.hiscore) ) s.hiscore = c.credits; + // append to hud + for ( int i=0; i 999999999 ) - { - req -= 1000000000; - hreq++; - } - // waaaaay too much - if ( (c.hcredits-hreq < 0) || (c.hcredits-hreq > c.hcredits) ) return false; + // safeguard + if ( amount < 0 ) ThrowAbortException("SWWMCredits.CanTake() called with negative amount"); // too much! - if ( ((c.credits-amount < 0) || (c.credits-amount > c.credits)) && (c.hcredits-hreq <= 0) ) return false; + if ( (amount > 999999999) || (c.credits-amount < 0) || (c.credits-amount > c.credits) ) return false; return true; } - static bool Take( PlayerInfo p, int amount, int hamount = 0 ) + static bool Take( PlayerInfo p, int amount ) { let c = Find(p); if ( !c ) return false; - int req = amount, hreq = hamount; - while ( req > 999999999 ) - { - req -= 1000000000; - hreq++; - } - // waaaaay too much - if ( (c.hcredits-hreq < 0) || (c.hcredits-hreq > c.hcredits) ) return false; + // safeguard + if ( amount < 0 ) ThrowAbortException("SWWMCredits.Take() called with negative amount"); // too much! - if ( ((c.credits-amount < 0) || (c.credits-amount > c.credits)) && (c.hcredits-hreq <= 0) ) return false; - c.hcredits -= hreq; - c.credits -= req; - while ( c.credits < 0 ) + if ( (amount > 999999999) || (c.credits-amount < 0) || (c.credits-amount > c.credits) ) return false; + c.credits -= amount; + // append to hud + for ( int i=0; i what; -} - -Class SWWMTradeHistory : Thinker -{ - PlayerInfo myplayer; - Array ent; - - static void RegisterSend( PlayerInfo p, PlayerInfo other, Class what, int amt ) - { - let th = Find(p); - if ( !th ) return; - SWWMTrade t = new("SWWMTrade"); - t.timestamp = level.totaltime; - t.type = 0; - t.other = other.GetUserName(); - t.what = what; - t.amt = amt; - th.ent.Push(t); - } - static void RegisterReceive( PlayerInfo p, PlayerInfo other, Class what, int amt ) - { - let th = Find(p); - if ( !th ) return; - SWWMTrade t = new("SWWMTrade"); - t.timestamp = level.totaltime; - t.type = 1; - t.other = other.GetUserName(); - t.what = what; - t.amt = amt; - th.ent.Push(t); - } - - static clearscope SWWMTradeHistory Find( PlayerInfo p ) - { - let ti = ThinkerIterator.Create("SWWMTradeHistory",STAT_STATIC); - SWWMTradeHistory th; - while ( th = SWWMTradeHistory(ti.Next()) ) - { - if ( th.myplayer != p ) continue; - return th; - } - return Null; - } -} - // Lore holder enum ELoreTab { @@ -445,7 +505,7 @@ Class SWWMLore bool read; } -Class SWWMLoreLibrary : Thinker +Class SWWMLoreLibrary : SWWMStaticThinker { PlayerInfo myplayer; Array ent; @@ -465,13 +525,14 @@ Class SWWMLoreLibrary : Thinker { if ( ref ~== "Cronos" ) return true; if ( ref ~== "Kirin" ) return true; // not met + if ( ref ~== "Alakir" ) return true; // likewise if ( ref ~== "Fabricator" ) return true; // not yet introduced if ( ref ~== "Administrators" ) return true; // not met } // check if entry is for a collectible - for ( int i=0; i)(AllActorClasses[i]); + let c = (Class)(cls); if ( !c || (c == 'SWWMCollectible') ) continue; let def = GetDefaultByType(c); // skip if we match and it's not for this game @@ -486,12 +547,12 @@ Class SWWMLoreLibrary : Thinker if ( StringTable.Localize(tag,false) == tag ) return true; if ( StringTable.Localize(tab,false) == tab ) { - Console.Printf("Entry \"%s\" defines no tab.",ref); + if ( developer >= 2 ) Console.Printf("Entry \"%s\" defines no tab.",ref); return true; } if ( StringTable.Localize(text,false) == text ) { - Console.Printf("Entry \"%s\" defines no text.",ref); + if ( developer >= 2 ) Console.Printf("Entry \"%s\" defines no text.",ref); return true; } return false; @@ -518,8 +579,6 @@ Class SWWMLoreLibrary : Thinker text = "SWWM_LORETXT_AKARIPROJECT3"; // mentions kirin else if ( text ~== "SWWM_LORETXT_ANARUKON" ) text = "SWWM_LORETXT_ANARUKON2"; // comments from miyamoto-xanai wedding - else if ( text ~== "SWWM_LORETXT_BRCALBUM" ) - text = "SWWM_LORETXT_BRCALBUM2"; // comment about kirin's song else if ( text ~== "SWWM_LORETXT_DEMOLITIONIST" ) text = "SWWM_LORETXT_DEMOLITIONIST3"; // married to kirin else if ( text ~== "SWWM_LORETXT_DEMONINVASION" ) @@ -530,8 +589,6 @@ Class SWWMLoreLibrary : Thinker text = "SWWM_LORETXT_GODS2"; // beyond gods else if ( text ~== "SWWM_LORETXT_HELL" ) text = "SWWM_LORETXT_HELL4"; // met father nostros during the wedding - else if ( text ~== "SWWM_LORETXT_IBUKIMILK" ) - text = "SWWM_LORETXT_IBUKIMILK3"; // tasted by kirin else if ( text ~== "SWWM_LORETXT_MAIDBOT" ) text = "SWWM_LORETXT_MAIDBOT2"; // married to kirin else if ( text ~== "SWWM_LORETXT_NANA" ) @@ -554,11 +611,17 @@ Class SWWMLoreLibrary : Thinker text = "SWWM_LORETXT_YNYKRON2"; // confirmed to harm (but not kill) gods else if ( text ~== "SWWM_LORETXT_ZANAVETH2" ) text = "SWWM_LORETXT_ZANAVETH22"; // met at wedding + else if ( text ~== "SWWM_LORETXT_MADCAT" ) + text = "SWWM_LORETXT_MADCAT3"; // demolition quest released + else if ( text ~== "SWWM_LORETXT_MARISA" ) + text = "SWWM_LORETXT_MARISA3"; // post-wedding update } if ( (gameinfo.gametype&GAME_Raven) || (mlog && (mlog.year >= 2171) && (mlog.month >= 3)) ) { if ( text ~== "SWWM_LORETXT_AKARIPROJECT" ) text = "SWWM_LORETXT_AKARIPROJECT2"; // fiction becomes reality + else if ( text ~== "SWWM_LORETXT_ARCHDEMONS" ) + text = "SWWM_LORETXT_ARCHDEMONS3"; // archdemon generals assassinated else if ( text ~== "SWWM_LORETXT_DECADEMECH" ) text = "SWWM_LORETXT_DECADEMECH2"; // extra info else if ( text ~== "SWWM_LORETXT_DEMONINVASION" ) @@ -569,11 +632,17 @@ Class SWWMLoreLibrary : Thinker text = "SWWM_LORETXT_HELL3"; // invasion was a thing of the past else if ( text ~== "SWWM_LORETXT_UAC" ) text = "SWWM_LORETXT_UAC3"; // events of doom 64 and more + else if ( text ~== "SWWM_LORETXT_MADCAT" ) + text = "SWWM_LORETXT_MADCAT2"; // interstellar demolitionist released + else if ( text ~== "SWWM_LORETXT_MARISA" ) + text = "SWWM_LORETXT_MARISA2"; // post-invasion update } - if ( (gameinfo.gametype&GAME_Raven) || SWWMUtility.IsEviternity() || (mlog && (mlog.year >= 2150) && (mlog.month >= 5)) ) + if ( (gameinfo.gametype&GAME_Raven) || SWWMUtility.IsEviternity() || SWWMUtility.IsEviternityTwo() || SWWMUtility.IsLegacyOfRust() || (mlog && (mlog.year >= 2150) && (mlog.month >= 5)) ) { if ( text ~== "SWWM_LORETXT_AKARILABS" ) text = "SWWM_LORETXT_AKARILABS2"; // demo won, akari project announced + else if ( text ~== "SWWM_LORETXT_ARCHDEMONS" ) + text = "SWWM_LORETXT_ARCHDEMONS2"; // demon invasion repelled else if ( text ~== "SWWM_LORETXT_BIGSHOT" ) text = "SWWM_LORETXT_BIGSHOT2"; // predictions about crimes_m else if ( text ~== "SWWM_LORETXT_DEMOLITIONIST" ) @@ -586,10 +655,10 @@ Class SWWMLoreLibrary : Thinker text = "SWWM_LORETXT_GENERICCUBE2"; // info from mykka else if ( text ~== "SWWM_LORETXT_HELL" ) text = "SWWM_LORETXT_HELL2"; // events of tnt/plutonia - else if ( text ~== "SWWM_LORETXT_IBUKIMILK" ) - text = "SWWM_LORETXT_IBUKIMILK2"; // tasted by demo else if ( text ~== "SWWM_LORETXT_NANA" ) text = "SWWM_LORETXT_NANA2"; // demo met nana + else if ( text ~== "SWWM_LORETXT_RIKA" ) + text = "SWWM_LORETXT_RIKA2"; // saw demo's maidbot frame else if ( text ~== "SWWM_LORETXT_SAYA" ) text = "SWWM_LORETXT_SAYA2"; // dating demo else if ( text ~== "SWWM_LORETXT_UAC" ) @@ -600,16 +669,16 @@ Class SWWMLoreLibrary : Thinker text = "SWWM_LORETXT_ZANAVETH32"; // iagb happened } // check if existing - for ( int i=0; i= 2 ) Console.Printf("Entry \"%s\" has an empty tag.",ref); return true; } String ttab = StringTable.Localize(tab,false); @@ -619,19 +688,19 @@ Class SWWMLoreLibrary : Thinker else if ( ttab ~== "Enemy" ) e.tab = LORE_ENEMY; else { - Console.Printf("Entry \"%s\" has an incorrect tab setting of \"%s\".",ref,ttab); + if ( developer >= 2 ) Console.Printf("Entry \"%s\" has an incorrect tab setting of \"%s\".",ref,ttab); return true; } e.text = "$"..text; if ( StringTable.Localize(e.text) == "" ) { - Console.Printf("Entry \"%s\" has empty text.",ref); + if ( developer >= 2 ) Console.Printf("Entry \"%s\" has empty text.",ref); return true; } e.assoc = "$"..assoc; e.read = false; // image for certain entries - e.img = TexMan.CheckForTexture("graphics/KBase/PFP_"..ref..".png",TexMan.Type_Any); + e.img = TexMan.CheckForTexture("graphics/KBase/PFP_"..ref..".png"); // "new lore" message if ( (level.maptime > 0) && (gametic > lastaddtic) && (myplayer == players[consoleplayer]) && (!menuactive || (menuactive == Menu.OnNoPause)) && (myplayer.mo is 'Demolitionist') ) Console.Printf(StringTable.Localize("$SWWM_NEWLORE")); @@ -646,7 +715,7 @@ Class SWWMLoreLibrary : Thinker SWWMLoreLibrary ll = Find(p); if ( !ll ) { - ll = new("SWWMLoreLibrary"); + ll = new('SWWMLoreLibrary'); ll.ChangeStatNum(STAT_STATIC); ll.myplayer = p; } @@ -664,10 +733,12 @@ Class SWWMLoreLibrary : Thinker rel.Clear(); String assocstr = StringTable.Localize(ent[idx].assoc); assocstr.Split(rel,";",0); - for ( int i=0; i= 2) && !rslt ) + Console.Printf("Related entry \"%s\" not found.",r); } } } @@ -684,7 +755,7 @@ Class SWWMLoreLibrary : Thinker static clearscope SWWMLoreLibrary Find( PlayerInfo p ) { - let ti = ThinkerIterator.Create("SWWMLoreLibrary",STAT_STATIC); + let ti = ThinkerIterator.Create('SWWMLoreLibrary',STAT_STATIC); SWWMLoreLibrary ll; while ( ll = SWWMLoreLibrary(ti.Next()) ) { diff --git a/zscript/utility/swwm_coordutil.zsc b/zscript/utility/swwm_coordutil.zsc deleted file mode 100644 index 500426c57..000000000 --- a/zscript/utility/swwm_coordutil.zsc +++ /dev/null @@ -1,92 +0,0 @@ -/* - Coordinate Utility helper class. - Reproduces the old UnrealScript Get(Un)Axes functions, providing XYZ axis - vectors relative to an euler rotation (defaults to left-handed coords). - - Copyright (c)2018-2021 Marisa Kirisame, UnSX Team - - 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. -*/ - -Class swwm_CoordUtil -{ - // In Tim Sweeney's own words: "transform by a pitch-yaw-roll rotation" - static Vector3, Vector3, Vector3 GetUnAxes( double pitch, double yaw, double roll, bool rhand = false ) - { - Vector3 x = (1,0,0), y = (0,rhand?1:-1,0), z = (0,0,1); - Vector3 a, b, c; - // pitch and roll in gzdoom work in reverse compared to UE - pitch = -pitch; - roll = -roll; - // yaw - a = (cos(yaw),sin(yaw),0); - b = (-sin(yaw),cos(yaw),0); - c = (0,0,1); - x = (x dot a, x dot b, x dot c); - y = (y dot a, y dot b, y dot c); - z = (z dot a, z dot b, z dot c); - // pitch - a = (cos(pitch),0,sin(pitch)); - b = (0,1,0); - c = (-sin(pitch),0,cos(pitch)); - x = (x dot a, x dot b, x dot c); - y = (y dot a, y dot b, y dot c); - z = (z dot a, z dot b, z dot c); - // roll - a = (1,0,0); - b = (0,cos(roll),-sin(roll)); - c = (0,sin(roll),cos(roll)); - x = (x dot a, x dot b, x dot c); - y = (y dot a, y dot b, y dot c); - z = (z dot a, z dot b, z dot c); - return x, y, z; - } - - // In Tim Sweeney's own words: "detransform by a pitch-yaw-roll rotation" - static Vector3, Vector3, Vector3 GetAxes( double pitch, double yaw, double roll, bool rhand = false ) - { - Vector3 x = (1,0,0), y = (0,rhand?1:-1,0), z = (0,0,1); - Vector3 a, b, c; - // pitch and roll in gzdoom work in reverse compared to UE - pitch = -pitch; - roll = -roll; - // inverse roll - a = (1,0,0); - b = (0,cos(roll),sin(roll)); - c = (0,-sin(roll),cos(roll)); - x = (x dot a, x dot b, x dot c); - y = (y dot a, y dot b, y dot c); - z = (z dot a, z dot b, z dot c); - // inverse pitch - a = (cos(pitch),0,-sin(pitch)); - b = (0,1,0); - c = (sin(pitch),0,cos(pitch)); - x = (x dot a, x dot b, x dot c); - y = (y dot a, y dot b, y dot c); - z = (z dot a, z dot b, z dot c); - // inverse yaw - a = (cos(yaw),-sin(yaw),0); - b = (sin(yaw),cos(yaw),0); - c = (0,0,1); - x = (x dot a, x dot b, x dot c); - y = (y dot a, y dot b, y dot c); - z = (z dot a, z dot b, z dot c); - return x, y, z; - } -} diff --git a/zscript/utility/swwm_utility.zsc b/zscript/utility/swwm_utility.zsc index 64d2efe6b..8d8eb1ad7 100644 --- a/zscript/utility/swwm_utility.zsc +++ b/zscript/utility/swwm_utility.zsc @@ -1,1329 +1,59 @@ // Misc. Utility code -enum EDoExplosionFlags -{ - DE_BLAST = 1, // sets BLASTED flag on pushed actors - DE_NOBLEED = 2, // does not spawn blood decals on hit - DE_NOSPLASH = 4, // like XF_NOSPLASH - DE_THRUWALLS = 8, // damages through geometry (no sight check) - DE_NOTMISSILE = 16, // instigator is the source itself (normally it'd be its target pointer) - DE_EXTRAZTHRUST = 32, // applies a higher Z thrust to enemies on ground - DE_HOWL = 64, // 25% chance for hit enemies to howl - DE_COUNTENEMIES = 128, // only count hits for hostiles - DE_COUNTSTEALTH = 256, // only count hits for inactive monsters - DE_COUNTFHKILLS = 512, // only count kills for enemies that were at full health - DE_NOHURTFRIEND = 1024 // splash damage will not affect allies -}; - -enum EExitType -{ - ET_Normal, - ET_Secret, - ET_EndGame, - ET_NewMap, -}; - -Struct SWWMProjectionData -{ - swwm_GM_Matrix wtc; - int viewx, viewy, vieww, viewh; -} - Class SWWMUtility { - // achievement helpers - static clearscope void MarkAchievement( String mvar, PlayerInfo p = null ) - { - if ( !p || (p != players[consoleplayer]) ) return; - let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler")); - if ( !hnd ) return; - String val = hnd.achievementstate.At(mvar); - if ( val == "" ) - { - if ( developer >= 2 ) Console.Printf("MarkAchievement: achievement '"..mvar.."' not found"); - return; - } - if ( val == "2" ) return; - hnd.achievementstate.Insert(mvar,"1"); - } - static clearscope int GetAchievementProgress( String pvar, PlayerInfo p = null ) - { - if ( !p || (p != players[consoleplayer]) ) return 0; - let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler")); - if ( !hnd ) return 0; - String pval = hnd.achievementprogress.At(pvar); - if ( pval == "" ) - { - if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found"); - return 0; - } - return pval.ToInt(); - } - static clearscope void AchievementProgress( String pvar, int val, PlayerInfo p = null ) - { - if ( !p || (p != players[consoleplayer]) ) return; - let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler")); - if ( !hnd ) return; - String pval = hnd.achievementprogress.At(pvar); - if ( pval == "" ) - { - if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found"); - return; - } - if ( val <= pval.ToInt() ) return; - hnd.achievementprogress.Insert(pvar,String.Format("%d",val)); - } - static clearscope void AchievementProgressInc( String pvar, int inc, PlayerInfo p = null ) - { - if ( !p || (p != players[consoleplayer]) ) return; - let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler")); - if ( !hnd ) return; - String pval = hnd.achievementprogress.At(pvar); - if ( pval == "" ) - { - if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found"); - return; - } - hnd.achievementprogress.Insert(pvar,String.Format("%d",pval.ToInt()+inc)); - } - static clearscope void AchievementProgressIncDouble( String pvar, double inc, PlayerInfo p = null ) - { - if ( !p || (p != players[consoleplayer]) ) return; - let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler")); - if ( !hnd ) return; - String pval = hnd.achievementprogress.At(pvar); - if ( pval == "" ) - { - if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found"); - return; - } - hnd.achievementprogress.Insert(pvar,String.Format("%g",pval.ToDouble()+inc)); - } - // for bitfields - static clearscope void AchievementProgressOr( String pvar, int val, PlayerInfo p = null ) - { - if ( !p || (p != players[consoleplayer]) ) return; - let hnd = SWWMStaticHandler(StaticEventHandler.Find("SWWMStaticHandler")); - if ( !hnd ) return; - String pval = hnd.achievementprogress.At(pvar); - if ( pval == "" ) - { - if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found"); - return; - } - hnd.achievementprogress.Insert(pvar,String.Format("%d",pval.ToInt()|val)); - } - // gets the names of all mod cvars - static clearscope void GetCVars( out Array cvarlist ) + static void GetCVars( Array &cvarlist ) { cvarlist.Clear(); let lmp = Wads.CheckNumForFullname("cvarinfo.base"); if ( lmp == -1 ) ThrowAbortException("'cvarinfo.base' not found"); String dat = Wads.ReadLump(lmp); Array list, ln; - // fucking Windows + // Windows pls dat.Replace("\r",""); list.Clear(); dat.Split(list,"\n"); - for ( int i=0; i which ) + static void SendTooltip( Class which ) { if ( !swwm_weapontooltips ) return; CVar v = CVar.FindCVar('swwm_tooltipshown'); String tt = v.GetString(); Array wpn; tt.Split(wpn,","); - for ( int i=0; i=1.3)?1.333333:aspect; - double fovy = 2.*atan(tan(clamp(fov,5,170)/2.)/fovratio); - // world→clip matrix - swwm_GM_Matrix view = swwm_GM_Matrix.view(viewpos,angle,pitch,roll); - swwm_GM_Matrix perp = swwm_GM_Matrix.perspective(fovy,aspect,5,65535); - d.wtc = perp.multiplyMatrix(view); - // screen coord data - int sblocks = CVar.FindCVar('screenblocks').GetInt(); - int viewx, viewy, vieww, viewh; - [viewx, viewy, vieww, viewh] = Screen.GetViewWindow(); - int sh = Screen.GetHeight(); - int h = sh; - if ( sblocks < 10 ) h = (sblocks*sh/10)&~7; - int bottom = sh-(h+viewy-((h-viewh)/2)); - d.viewx = viewx; - d.viewy = sh-bottom-h; - d.vieww = vieww; - d.viewh = h; - } - - static clearscope Vector3 ProjectPoint( SWWMProjectionData d, Vector3 worldpos ) - { - return d.wtc.multiplyVector3(worldpos).asVector3(); - } - - static clearscope Vector2 NDCToViewport( SWWMProjectionData d, Vector3 ndc ) - { - return (d.viewx,d.viewy)+(((ndc.x+1)*d.vieww)/2,((-ndc.y+1)*d.viewh)/2); - } - - // checks if a point is inside the viewport - static clearscope bool TestScreenBounds( SWWMProjectionData d, Vector2 vpos ) - { - return ((vpos.x == clamp(vpos.x,d.viewx,d.viewx+d.vieww)) - && (vpos.y == clamp(vpos.y,d.viewy,d.viewy+d.viewh))); - } - - // less code duplication - static clearscope void AdjustClean_1( out double x, out double y ) - { - x = (x-160)*CleanXFac_1+(Screen.GetWidth()*.5); - y = (y-100)*CleanYFac_1+(Screen.GetHeight()*.5); - } - static clearscope void AdjustClean_1x( out double x ) - { - x = (x-160)*CleanXFac_1+(Screen.GetWidth()*.5); - } - static clearscope void AdjustClean_1y( out double y ) - { - y = (y-100)*CleanYFac_1+(Screen.GetHeight()*.5); - } - - // thanks zscript - static clearscope double fract( double a ) - { - return (a<0)?(a+floor(a)):(a-floor(a)); - } - - static clearscope Color LerpColor( Color a, Color b, double theta ) - { - Color c = Color( - int(a.a*(1.-theta)+b.a*theta), - int(a.r*(1.-theta)+b.r*theta), - int(a.g*(1.-theta)+b.g*theta), - int(a.b*(1.-theta)+b.b*theta) - ); - return c; - } - - // not sure if I should use this, looks a bit ugly - static clearscope void ThousandsStr( out String s ) - { - String nstr = s; - s.Truncate(0); - int len = nstr.CodePointCount(); - int t = len; - if ( nstr.Left(1) == "-" ) t++; - for ( int i=0, pos=0; i=0; i-- ) - { - int d = int(val/(10**i))%10; - str.AppendCharacter(digs[d]); - } - return str; - } - - static clearscope String BlockBar( int a, int b, int width, int acol, int bcol ) - { - String str = ""; - int blocks = clamp(int(a/double(b)*width),0,width); - int eblocks = width-blocks; - if ( blocks ) - { - str.AppendCharacter(0x1C); - str.AppendCharacter(0x41+acol); - } - for ( int i=0; i 0 ) return -asin(diff.z/dist); - return 0; - } - - static clearscope int GetLineLock( Line l ) - { - int locknum = l.locknumber; - if ( !locknum ) - { - // check the special - switch ( l.special ) - { - case FS_Execute: - locknum = l.Args[2]; - break; - case Door_LockedRaise: - case Door_Animated: - locknum = l.Args[3]; - break; - case ACS_LockedExecute: - case ACS_LockedExecuteDoor: - case Generic_Door: - locknum = l.Args[4]; - break; - } - } - return locknum; - } - - // return if a line is an exit, and additionally the type of exit - static clearscope bool, int IsExitLine( Line l ) - { - if ( l.special == Exit_Secret ) - return true, ET_Secret; - if ( l.special == Exit_Normal ) - return true, ET_Normal; - if ( l.special == Teleport_EndGame ) - return true, ET_EndGame; - if ( l.special == Teleport_NewMap ) - return true, ET_NewMap; - // E1M8 compat - if ( (l.special == ACS_Execute) && (l.Args[0] == -Int('E1M8_KNOCKOUT')) ) - return true, ET_Normal; - // spooktober™ - if ( ((l.special == ACS_Execute) || (l.special == ACS_ExecuteAlways)) && (l.Args[0] == -Int('MapFadeOut')) ) - { - if ( level.levelnum == 1 ) - { - let lv = levelinfo.FindLevelByNum(l.Args[2]); - if ( lv && lv.mapname.Left(6) ~== "SECRET" ) - return true, ET_Secret; - else return true, ET_NewMap; - } - return true, ET_Normal; - } - return false, ET_Normal; - } - - static clearscope bool IsTeleportLine( Line l, bool all = false ) - { - // must be two-sided and crossable - if ( !l.sidedef[1] || !(l.Activation&(SPAC_Cross|SPAC_MCross|SPAC_PCross|SPAC_AnyCross)) ) return false; - // filter lines that aren't player-activated (unless checking all) - if ( !all && !(l.Activation&SPAC_PlayerActivate) ) return false; - // typical teleports - if ( (l.special == Teleport) || (l.special == Teleport_NoStop) ) - return true; - // if checking all, also include sneaky teleports - if ( all && ((l.special == Teleport_Line) || (l.special == Teleport_NoFog)) ) - return true; - // exits are included too - if ( IsExitLine(l) ) - return true; - return false; - } - - // how the fuck is this not available to ZScript? - // copied from P_PointOnLineSidePrecise() - static clearscope int PointOnLineSide( Vector2 p, Line l ) - { - if ( !l ) return 0; - return (((p.y-l.v1.p.y)*l.delta.x+(l.v1.p.x-p.x)*l.delta.y) > double.epsilon); - } - - // haha another one - // copied from BoxOnLineSide() - static clearscope int BoxOnLineSide( double top, double bottom, double left, double right, Line l ) - { - if ( !l ) return 0; - int p1, p2; - if ( l.delta.x == 0 ) - { - // ST_VERTICAL: - p1 = (right < l.v1.p.x); - p2 = (left < l.v1.p.x); - if ( l.delta.y < 0 ) - { - p1 ^= 1; - p2 ^= 1; - } - } - else if ( l.delta.y == 0 ) - { - // ST_HORIZONTAL: - p1 = (top > l.v1.p.y); - p2 = (bottom > l.v1.p.y); - if ( l.delta.x < 0 ) - { - p1 ^= 1; - p2 ^= 1; - } - } - else if ( (l.delta.x*l.delta.y) >= 0 ) - { - // ST_POSITIVE: - p1 = PointOnLineSide((left,top),l); - p2 = PointOnLineSide((right,bottom),l); - } - else - { - // ST_NEGATIVE: - p1 = PointOnLineSide((right,top),l); - p2 = PointOnLineSide((left,bottom),l); - } - return (p1==p2)?p1:-1; - } - - // wrapper - static clearscope int ActorOnLineSide( Actor a, Line l ) - { - double box[4]; - box[0] = a.pos.y+a.radius; - box[1] = a.pos.y-a.radius; - box[2] = a.pos.x-a.radius; - box[3] = a.pos.x+a.radius; - return BoxOnLineSide(box[0],box[1],box[2],box[3],l); - } - - // box intersection check, for collision detection - static clearscope bool BoxIntersect( Actor a, Actor b, Vector3 ofs = (0,0,0), int pad = 0 ) - { - Vector3 diff = level.Vec3Diff(level.Vec3Offset(a.pos,ofs),b.pos); - if ( (abs(diff.x) > (a.radius+b.radius+pad)) || (abs(diff.y) > (a.radius+b.radius+pad)) ) return false; - if ( (diff.z > a.height+pad) || (diff.z < -(b.height+pad)) ) return false; - return true; - } - - // extruded box intersection check, useful when checking things that might be hit along a path - static clearscope bool ExtrudeIntersect( Actor a, Actor b, Vector3 range, int steps, int pad = 0 ) - { - if ( steps <= 0 ) return BoxIntersect(a,b,pad:pad); - double step = 1./steps; - for ( double i=step; i<=1.; i+=step ) - { - if ( BoxIntersect(a,b,range*i,pad) ) - return true; - } - return false; - } - - // sphere intersection check, useful for proximity detection - static clearscope bool SphereIntersect( Actor a, Vector3 p, double radius ) - { - Vector3 ap = p+level.Vec3Diff(p,a.pos); // portal-relative actor position - Vector3 amin = ap+(-a.radius,-a.radius,0), - amax = ap+(a.radius,a.radius,a.height); - double distsq = 0.; - if ( p.x < amin.x ) distsq += (amin.x-p.x)**2; - if ( p.x > amax.x ) distsq += (p.x-amax.x)**2; - if ( p.y < amin.y ) distsq += (amin.y-p.y)**2; - if ( p.y > amax.y ) distsq += (p.y-amax.y)**2; - if ( p.z < amin.z ) distsq += (amin.z-p.z)**2; - if ( p.z > amax.z ) distsq += (p.z-amax.z)**2; - return (distsq <= (radius**2)); - } - - // Liang-Barsky line clipping - static clearscope bool, Vector2, Vector2 LiangBarsky( Vector2 minclip, Vector2 maxclip, Vector2 v0, Vector2 v1 ) - { - double t0 = 0., t1 = 1.; - double xdelta = v1.x-v0.x; - double ydelta = v1.y-v0.y; - double p, q, r; - for ( int i=0;i<4; i++ ) - { - switch ( i ) - { - case 0: - p = -xdelta; - q = -(minclip.x-v0.x); - break; - case 1: - p = xdelta; - q = (maxclip.x-v0.x); - break; - case 2: - p = -ydelta; - q = -(minclip.y-v0.y); - break; - case 3: - p = ydelta; - q = (maxclip.y-v0.y); - break; - } - if ( (p == 0.) && (q<0.) ) return false, (0,0), (0,0); - if ( p < 0 ) - { - r = q/p; - if ( r > t1 ) return false, (0,0), (0,0); - else if ( r > t0 ) t0 = r; - } - else if ( p > 0 ) - { - r = q/p; - if ( r < t0 ) return false, (0,0), (0,0); - else if ( r < t1 ) t1 = r; - } - } - Vector2 ov0 = v0+(xdelta,ydelta)*t0; - Vector2 ov1 = v0+(xdelta,ydelta)*t1; - return true, ov0, ov1; - } - - static clearscope bool IsValidLockNum( int l ) - { - if ( (l < 1) || (l > 255) ) return true; - return SWWMCachedLockInfo.IsValidLock(l); - } - - static clearscope Color GetLockColor( int l ) - { - return SWWMCachedLockInfo.GetLockColor(l); - } - - // Thanks to ZZYZX and Nash - static play void SetToSlopeSpecific( Actor a, double dang, SecPlane plane, bool flipnorm ) - { - Vector3 fnormal; - if ( flipnorm ) fnormal = -plane.Normal; - else fnormal = plane.Normal; - vector2 fnormalp1 = ((fnormal.x != 0) || (fnormal.y != 0))?(fnormal.x,fnormal.y).Unit():(0,0); - vector2 fnormalp2 = ((fnormal.x,fnormal.y).Length(),fnormal.z); - double fang = atan2(fnormalp1.y,fnormalp1.x); // floor angle (not pitch!) - double fpitch = atan2(fnormalp2.x,fnormalp2.y); // floor pitch - double ddiff1 = sin(fang-dang); - double ddiff2 = cos(fang-dang); - a.pitch = fpitch*ddiff2; - a.roll = -fpitch*ddiff1; - a.angle = dang; - } - - static play void SetToSlope( Actor a, double dang, bool ceil = false ) - { - Sector sect; - SecPlane plane; - Vector3 fnormal; - bool flipnorm; - if ( ceil ) - { - sect = a.CeilingSector; - plane = sect.ceilingplane; - flipnorm = true; - fnormal = -sect.ceilingplane.Normal; - } - else - { - sect = a.FloorSector; - plane = sect.floorplane; - flipnorm = false; - fnormal = sect.floorplane.Normal; - } - // find closest 3d floor for its normal - F3DFloor ff; - for ( int i=0; i= 10) && (l.special <= 13)) - || (!part && (l.special >= 20) && (l.special <= 25)) - || (!part && (l.special == 28)) - || ((l.special >= 29) && (l.special <= 30)) - || (!part && (l.special >= 35) && (l.special <= 37)) - || (part && (l.special >= 40) && (l.special <= 45)) - || (!part && (l.special == 46)) - || (part && (l.special == 47)) - || (!part && (l.special >= 60) && (l.special <= 68)) - || (part && (l.special == 69)) - || ((l.special >= 94) && (l.special <= 96)) - || (part && (l.special == 97)) - || (!part && (l.special == 99)) - || (part && (l.special == 104)) - || (part && (l.special >= 105) && (l.special <= 106)) - || (part && (l.special >= 168) && (l.special <= 169)) - || (!part && (l.special == 172)) - || (part && (l.special >= 192) && (l.special <= 199)) - || (!part && (l.special == 200)) - || (part && (l.special >= 201) && (l.special <= 202)) - || (!part && (l.special == 203)) - || (part && (l.special == 205)) - || (!part && (l.special >= 206) && (l.special <= 207)) - || (!part && (l.special == 228)) - || (!part && (l.special >= 230) && (l.special <= 231)) - || (!part && (l.special >= 238) && (l.special <= 242)) - || ((l.special >= 245) && (l.special <= 247)) - || (part && (l.special == 249)) - || (!part && (l.special >= 250) && (l.special <= 251)) - || (part && (l.special >= 251) && (l.special <= 255)) - || (!part && (l.special >= 256) && (l.special <= 261)) - || (part && (l.special >= 262) && (l.special <= 269)) - || (!part && (l.special == 275)) - || (part && (l.special == 276)) - || (!part && (l.special == 279)) - || (part && (l.special == 280)) ) - { - let si = level.CreateSectorTagIterator(l.Args[0],l); - int idx; - while ( (idx = si.Next()) != -1 ) - if ( level.Sectors[idx] == s ) - return true; - } - } - ti = ThinkerIterator.Create("Actor"); - Actor a; - while ( a = Actor(ti.Next()) ) - { - if ( !a.special || !a.Args[0] ) continue; - if ( (part && (a.special >= 10) && (a.special <= 13)) - || (!part && (a.special >= 20) && (a.special <= 25)) - || (!part && (a.special == 28)) - || ((a.special >= 29) && (a.special <= 30)) - || (!part && (a.special >= 35) && (a.special <= 37)) - || (part && (a.special >= 40) && (a.special <= 45)) - || (!part && (a.special == 46)) - || (part && (a.special == 47)) - || (!part && (a.special >= 60) && (a.special <= 68)) - || (part && (a.special == 69)) - || ((a.special >= 94) && (a.special <= 96)) - || (part && (a.special == 97)) - || (!part && (a.special == 99)) - || (part && (a.special == 104)) - || (part && (a.special >= 105) && (a.special <= 106)) - || (part && (a.special >= 168) && (a.special <= 169)) - || (!part && (a.special == 172)) - || (part && (a.special >= 192) && (a.special <= 199)) - || (!part && (a.special == 200)) - || (part && (a.special >= 201) && (a.special <= 202)) - || (!part && (a.special == 203)) - || (part && (a.special == 205)) - || (!part && (a.special >= 206) && (a.special <= 207)) - || (!part && (a.special == 228)) - || (!part && (a.special >= 230) && (a.special <= 231)) - || (!part && (a.special >= 238) && (a.special <= 242)) - || ((a.special >= 245) && (a.special <= 247)) - || (part && (a.special == 249)) - || (!part && (a.special >= 250) && (a.special <= 251)) - || (part && (a.special >= 251) && (a.special <= 255)) - || (!part && (a.special >= 256) && (a.special <= 261)) - || (part && (a.special >= 262) && (a.special <= 269)) - || (!part && (a.special == 275)) - || (part && (a.special == 276)) - || (!part && (a.special == 279)) - || (part && (a.special == 280)) ) - { - let si = level.CreateSectorTagIterator(a.Args[0]); - int idx; - while ( (idx = si.Next()) != -1 ) - if ( level.Sectors[idx] == s ) - return true; - } - } - return false; - } - - // try to be as thorough as possible in checking if DEHACKED has altered this actor - static clearscope bool CheckDehackery( Class cls ) - { - let def = GetDefaultByType(cls); - for ( State s=def.SpawnState; s; s=s.NextState ) - { - if ( s.bDEHACKED ) return true; - // keep checking until we hit a loop, just in case - if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; - } - for ( State s=def.SeeState; s; s=s.NextState ) - { - if ( s.bDEHACKED ) return true; - // keep checking until we hit a loop, just in case - if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; - } - for ( State s=def.MissileState; s; s=s.NextState ) - { - if ( s.bDEHACKED ) return true; - // keep checking until we hit a loop, just in case - if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; - } - for ( State s=def.MeleeState; s; s=s.NextState ) - { - if ( s.bDEHACKED ) return true; - // keep checking until we hit a loop, just in case - if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; - } - return false; - } - - // because GetTag() returns the localized string, we need to do things the hard way - static play String GetFunTag( Actor a, String defstr = "" ) - { - // look up any fun tag services - let si = ServiceIterator.Find("FunTagService"); - Service sv; - String res; - while ( sv = si.Next() ) - { - res = sv.GetString("GetFunTag",objectArg:a); - if ( res == "" ) continue; - si.Destroy(); - return res; - } - si.Destroy(); - int ntags = 1; - String basetag = ""; - switch ( a.GetClassName() ) - { - // Doom - case 'ZombieMan': - case 'StealthZombieMan': - basetag = "ZOMBIE"; - break; - case 'ShotgunGuy': - case 'StealthShotgunGuy': - basetag = "SHOTGUN"; - break; - case 'ChaingunGuy': - case 'StealthChaingunGuy': - basetag = "HEAVY"; - break; - case 'DoomImp': - case 'StealthDoomImp': - basetag = "IMP"; - break; - case 'Demon': - case 'StealthDemon': - basetag = "DEMON"; - break; - case 'Spectre': - basetag = "SPECTRE"; - break; - case 'LostSoul': - basetag = "LOST"; - break; - case 'Cacodemon': - case 'StealthCacodemon': - basetag = "CACO"; - break; - case 'HellKnight': - case 'StealthHellKnight': - basetag = "HELL"; - break; - case 'BaronOfHell': - case 'StealthBaron': - basetag = "BARON"; - break; - case 'Arachnotron': - case 'StealthArachnotron': - basetag = "ARACH"; - break; - case 'PainElemental': - basetag = "PAIN"; - break; - case 'Revenant': - case 'StealthRevenant': - basetag = "REVEN"; - break; - case 'Fatso': - case 'StealthFatso': - basetag = "MANCU"; - break; - case 'Archvile': - case 'StealthArchvile': - basetag = "ARCH"; - break; - case 'SpiderMastermind': - basetag = "SPIDER"; - break; - case 'Cyberdemon': - basetag = "CYBER"; - break; - case 'SWWMBossBrain': - basetag = "BOSSBRAIN"; - break; - case 'WolfensteinSS': - if ( IsUltDoom2() ) - { - basetag = "ELITEZOMBIE"; - break; - } - // ensure it's not being replaced - if ( CheckDehackery('WolfensteinSS') ) break; - case 'SWWMSS': - basetag = "WOLFSS"; - break; - case 'SWWMHangingKeen': - basetag = "KEEN"; - break; - case 'MBFHelperDog': - case 'SWWMDog': - basetag = "DOG"; - break; - case 'SWWMGuard': - basetag = "WOLFGUARD"; - break; - case 'SWWMHans': - basetag = "WOLFHANS"; - break; - // Heretic - case 'Chicken': - basetag = "CHICKEN"; - break; - case 'Beast': - basetag = "BEAST"; - break; - case 'Clink': - basetag = "CLINK"; - break; - case 'Sorcerer1': - case 'Sorcerer2': - basetag = "DSPARIL"; - break; - case 'HereticImp': - case 'HereticImpLeader': - basetag = "HERETICIMP"; - break; - case 'Ironlich': - basetag = "IRONLICH"; - break; - case 'Knight': - case 'KnightGhost': - basetag = "BONEKNIGHT"; - break; - case 'Minotaur': - case 'MinotaurFriend': - basetag = "MINOTAUR"; - break; - case 'Mummy': - case 'MummyGhost': - basetag = "MUMMY"; - break; - case 'MummyLeader': - case 'MummyLeaderGhost': - basetag = "MUMMYLEADER"; - break; - case 'Snake': - basetag = "SNAKE"; - break; - case 'Wizard': - basetag = "WIZARD"; - break; - // Hexen - case 'FireDemon': - basetag = "FIREDEMON"; - break; - case 'Demon1': - case 'Demon1Mash': - case 'Demon2': - case 'Demon2Mash': - basetag = "DEMON1"; - break; - case 'Ettin': - case 'EttinMash': - basetag = "ETTIN"; - break; - case 'Centaur': - case 'CentaurMash': - basetag = "CENTAUR"; - break; - case 'CentaurLeader': - basetag = "SLAUGHTAUR"; - break; - case 'Bishop': - basetag = "BISHOP"; - break; - case 'IceGuy': - basetag = "ICEGUY"; - break; - case 'Serpent': - case 'SerpentLeader': - basetag = "SERPENT"; - break; - case 'Wraith': - case 'WraithBuried': - basetag = "WRAITH"; - break; - case 'Dragon': - basetag = "DRAGON"; - break; - case 'Korax': - basetag = "KORAX"; - break; - case 'FighterBoss': - basetag = "FBOSS"; - break; - case 'MageBoss': - basetag = "MBOSS"; - break; - case 'ClericBoss': - basetag = "CBOSS"; - break; - case 'Heresiarch': - basetag = "HERESIARCH"; - break; - case 'Pig': - basetag = "PIG"; - break; - // eviternity - case 'ArchangelusA': - case 'ArchangelusB': - basetag = "ANGEL"; - break; - case 'AstralCaco': - basetag = "ASTRAL"; - break; - case 'Annihilator': - basetag = "ANNIHIL"; - break; - case 'FormerCaptain': - basetag = "FCAPTAIN"; - break; - case 'NightmareDemon': - basetag = "NDEMON"; - break; - } - if ( basetag == "" ) return a.GetTag(defstr); - String funtag = "FN_"..basetag.."_FUN"; - String lfuntag = StringTable.Localize(funtag,false); - if ( lfuntag != funtag ) return lfuntag; - String nfuntag = "FN_"..basetag.."_FUNN"; - String lnfuntag = StringTable.Localize(nfuntag,false); - if ( lnfuntag == nfuntag ) return a.GetTag(defstr); - ntags = lnfuntag.ToInt(); - return StringTable.Localize(String.Format("$FN_%s_FUN%d",basetag,Random[FunTags](1,ntags))); - } - - // Apply full 3D knockback in a specific direction, useful for hitscan - static play void DoKnockback( Actor Victim, Vector3 HitDirection, double MomentumTransfer, bool ExtraZThrust = false ) - { - if ( !Victim ) - return; - if ( Victim.bDORMANT ) // no dormant knockback - return; - if ( !Victim.bSHOOTABLE && !Victim.bVULNERABLE ) - return; - if ( Victim.bDONTTHRUST || (Victim.Mass >= Actor.LARGE_MASS) ) - return; - Vector3 Momentum = HitDirection*MomentumTransfer; - if ( (Victim.pos.z <= Victim.floorz) || !Victim.TestMobjZ() ) - Momentum.z = max(Momentum.z,(ExtraZThrust?.4:.1)*Momentum.length()); - Momentum /= GameTicRate*max(50,Victim.Mass); - Victim.vel += Momentum; - } - - // complete spherical and more accurate replacement of A_Explode - // 100% free of the buggery GZDoom's own splash damage has - // returns the number of shootables hit/killed - static play int, int DoExplosion( Actor Source, double Damage, double MomentumTransfer, double ExplosionRadius, double FullDamageRadius = 0., int flags = 0, Name DamageType = '', Actor ignoreme = null, int dmgflags = 0 ) - { - // debug, display radius sphere - if ( swwm_debugblast ) - { - let s = Actor.Spawn("RadiusDebugSphere",Source.pos); - s.Scale *= ExplosionRadius; - s.SetShade((Damage>0)?"Green":"Blue"); - if ( FullDamageRadius > 0. ) - { - let s = Actor.Spawn("RadiusDebugSphere",Source.pos); - s.Scale *= FullDamageRadius; - s.SetShade("Red"); - } - } - if ( !(flags&DE_NOSPLASH) ) Source.CheckSplash(ExplosionRadius); - double brange = 1./(ExplosionRadius-FullDamageRadius); - Actor Instigator = (flags&DE_NOTMISSILE)?Source:Source.target; - BlockThingsIterator bi = BlockThingsIterator.Create(Source,ExplosionRadius); - int nhit = 0, nkill = 0; - Array washit; - washit.Clear(); - while ( bi.Next() ) - { - Actor a = bi.Thing; - washit.Push(a); - // early checks for self and ignored actor (usually the instigator) - if ( !a || (a == ignoreme) || (a == Source) ) - continue; - // can't be affected - if ( !a.bSHOOTABLE && !a.bVULNERABLE ) - continue; - // no blasting if no radius dmg (unless forced) - if ( a.bNORADIUSDMG && !Source.bFORCERADIUSDMG ) - continue; - // check the DONTHARMCLASS/DONTHARMSPECIES flags - if ( !a.player && ((Source.bDONTHARMCLASS && (a.GetClass() == Source.GetClass())) || (Source.bDONTHARMSPECIES && (a.GetSpecies() == Source.GetSpecies()))) ) - continue; - // check friendliness - if ( (flags&DE_NOHURTFRIEND) && Instigator && Instigator.IsFriend(a) ) - continue; - // can we see it - if ( !(flags&DE_THRUWALLS) && !Source.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) - continue; - // intersecting? - if ( !SWWMUtility.SphereIntersect(a,Source.pos,ExplosionRadius) ) - continue; - // calculate factor - Vector3 dir = level.Vec3Diff(Source.pos,a.Vec3Offset(0,0,a.Height/2)); - double dist = dir.length(); - // intersecting, randomize direction - if ( dir.length() <= double.epsilon ) - { - double ang = FRandom[DoBlast](0,360); - double pt = FRandom[DoBlast](-90,90); - dir = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt)); - } - dir /= dist; - dist = clamp(dist-FullDamageRadius,0,min(dist,ExplosionRadius)); - double damagescale = 1.-clamp((dist-a.Radius)*brange,0.,1.); - double mm = MomentumTransfer*damagescale; - // no knockback if massive/unpushable - if ( (abs(mm) > 0.) && !a.bDORMANT && !a.bDONTTHRUST && (a.Mass < Actor.LARGE_MASS) ) - { - Vector3 Momentum = dir*mm; - if ( (a.pos.z <= a.floorz) || !a.TestMobjZ() ) - Momentum.z = max(Momentum.z,(flags&DE_EXTRAZTHRUST?.4:.1)*Momentum.length()); - Momentum /= GameTicRate*max(50,a.Mass); // prevent tiny things from getting yeeted at warp speed - a.vel += Momentum; - if ( (flags&DE_BLAST) && a.bCANBLAST && !a.bDONTBLAST ) a.bBLASTED = true; - } - // hit it - bool inactive = (!a.player&&!a.target); - bool hostile = (Instigator&&a.IsHostile(Instigator)&&(a.bISMONSTER||a.player)); - if ( (!(flags&DE_COUNTENEMIES) || hostile) && (!(flags&DE_COUNTSTEALTH) || inactive) ) nhit++; - int dmg = int(Damage*damagescale); - if ( dmg <= 0 ) continue; // no harm - int oldhp = a.Health; - int basehp = a.GetSpawnHealth(); - int ndmg = a.DamageMobj(Source,Instigator,dmg,(DamageType=='')?Source.DamageType:DamageType,DMG_EXPLOSION|dmgflags,atan2(-dir.y,-dir.x)); - if ( a && !(flags&DE_NOBLEED) ) a.TraceBleed((ndmg>0)?ndmg:dmg,Source); - if ( (flags&DE_HOWL) && a && (a.Health > 0) && a.bISMONSTER && !Random[DoBlast](0,3) ) a.Howl(); - if ( (flags&DE_COUNTFHKILLS) && (oldhp < basehp) ) continue; // was not at full health - if ( (!a || (a.Health <= 0)) && (!(flags&DE_COUNTENEMIES) || hostile) && (!(flags&DE_COUNTSTEALTH) || inactive) ) nkill++; - } - // traverse portals (needed since BlockThingsIterator can't properly cross sector portals in both vertical directions) - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( !hnd || (hnd.psectors.Size() <= 1) ) return nhit, nkill; - int thisgroup = Source.CurSector.portalgroup; - for ( int i=0; i 0.) && !a.bDORMANT && !a.bDONTTHRUST && (a.Mass < Actor.LARGE_MASS) ) - { - Vector3 Momentum = dir*mm; - if ( (a.pos.z <= a.floorz) || !a.TestMobjZ() ) - Momentum.z = max(Momentum.z,(flags&DE_EXTRAZTHRUST?.4:.1)*Momentum.length()); - Momentum /= GameTicRate*max(50,a.Mass); // prevent tiny things from getting yeeted at warp speed - a.vel += Momentum; - if ( (flags&DE_BLAST) && a.bCANBLAST && !a.bDONTBLAST ) a.bBLASTED = true; - } - // hit it - bool inactive = (!a.player&&!a.target); - bool hostile = (Instigator&&a.IsHostile(Instigator)&&(a.bISMONSTER||a.player)); - if ( (!(flags&DE_COUNTENEMIES) || hostile) && (!(flags&DE_COUNTSTEALTH) || inactive) ) nhit++; - int dmg = int(Damage*damagescale); - if ( dmg <= 0 ) continue; // no harm - int oldhp = a.Health; - int basehp = a.GetSpawnHealth(); - int ndmg = a.DamageMobj(Source,Instigator,dmg,(DamageType=='')?Source.DamageType:DamageType,DMG_EXPLOSION|dmgflags,atan2(-dir.y,-dir.x)); - if ( a && !(flags&DE_NOBLEED) ) a.TraceBleed((ndmg>0)?ndmg:dmg,Source); - if ( (flags&DE_HOWL) && a && (a.Health > 0) && a.bISMONSTER && !Random[DoBlast](0,3) ) a.Howl(); - if ( (flags&DE_COUNTFHKILLS) && (oldhp < basehp) ) continue; // was not at full health - if ( (!a || (a.Health <= 0)) && (!(flags&DE_COUNTENEMIES) || hostile) && (!(flags&DE_COUNTSTEALTH) || inactive) ) nkill++; - } - } - return nhit, nkill; - } - - static play bool InPlayerFOV( PlayerInfo p, Actor a, double maxdist = 0. ) - { - double vfov = p.fov*.5; - double hfov = atan(Screen.GetAspectRatio()*tan(vfov)); - let mo = p.camera; - if ( !mo ) return false; - Vector3 pp; - if ( !mo.CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) return false; - if ( mo is 'PlayerPawn' ) pp = mo.Vec2OffsetZ(0,0,PlayerPawn(mo).player.viewz); - else pp = mo.Vec3Offset(0,0,mo.CameraHeight); - Vector3 sc = level.SphericalCoords(pp,a.pos,(mo.angle,mo.pitch)); - if ( (abs(sc.x) > hfov) || (abs(sc.y) > vfov) ) return false; - if ( (maxdist > 0.) && (sc.z > maxdist) ) return false; - return true; - } - - // ui-friendly version without CheckSight call - static clearscope bool InPlayerFOVSimple( PlayerInfo p, Actor a, double maxdist = 0. ) - { - double vfov = p.fov*.5; - double hfov = atan(Screen.GetAspectRatio()*tan(vfov)); - let mo = p.camera; - if ( !mo ) return false; - Vector3 pp; - if ( mo is 'PlayerPawn' ) pp = mo.Vec2OffsetZ(0,0,PlayerPawn(mo).player.viewz); - else pp = mo.Vec3Offset(0,0,mo.CameraHeight); - Vector3 sc = level.SphericalCoords(pp,a.pos,(mo.angle,mo.pitch)); - if ( (abs(sc.x) > hfov) || (abs(sc.y) > vfov) ) return false; - if ( (maxdist > 0.) && (sc.z > maxdist) ) return false; - return true; - } - - static clearscope bool CheatsDisabled( int p = -1 ) + static bool CheatsDisabled( int p = -1 ) { if ( cl_blockcheats || ((G_SkillPropertyInt(SKILLP_DisableCheats) || netgame || deathmatch) && !sv_cheats) ) { @@ -1336,976 +66,9 @@ Class SWWMUtility } return false; } - - // IsZeroDamage() can lead to some false negatives, we have to account for that - static play bool ValidProjectile( Actor a ) - { - if ( !a.bMISSILE ) return false; - if ( a is 'AirBullet' ) return true; - if ( a is 'PusherProjectile' ) return true; - if ( a is 'ExplodiumMagProj' ) return true; - if ( a is 'CorrosiveFlechette' ) return true; - if ( a is 'TheBall' ) return true; - if ( a is 'EvisceratorChunk' ) return true; - if ( a is 'EvisceratorProj' ) return true; - if ( a is 'HellblazerMissile' ) return true; - if ( a is 'BigBiospark' ) return true; - if ( a is 'BiosparkBall' ) return true; - if ( a is 'BiosparkCore' ) return true; - if ( a is 'CandyGunProj' ) return true; - if ( a is 'CandyMagProj' ) return true; - if ( a is 'LoveHeart' ) return true; - if ( a is 'SWWMLightProjectile' ) return true; - if ( !a.IsZeroDamage() ) return true; - return false; - } - - // Is this a beam projectile? (speed == length) - static play bool IsBeamProj( Actor a ) - { - if ( a is 'SaltBeam' ) return true; - if ( a is 'BiosparkBeam' ) return true; - if ( a is 'BiosparkArc' ) return true; - if ( a is 'CandyBeam' ) return true; - if ( a is 'YnykronBeam' ) return true; - if ( a is 'YnykronLightningArc' ) return true; - if ( a is 'YnykronAltBeam' ) return true; - if ( a is 'MykradvoTendril' ) return true; - return false; - } - - static clearscope bool IdentifyingDog( Actor a ) - { - if ( a is 'MBFHelperDog' ) return true; - if ( a is 'SWWMDog' ) return true; - if ( a.GetClassName() == 'GermanDog' ) return true; // brote dote - if ( a.GetClassName() == '64HellHound' ) return true; // brote dote 64 - if ( a.GetClassName() == 'AbyssDemon2' ) return true; // CH - if ( a.GetClassName() == 'WHOLETTHEDOGSOUT' ) return true; // CH - // more dogs will be added as found - // because all dogs must be pet - return false; - } - - static clearscope bool IdentifyingCaco( Actor a ) - { - if ( a is 'DeadCacodemon' ) return false; - if ( a is 'Cacodemon' ) return true; - if ( a.Species == 'RLCacodemon' ) return true; // DRLA - if ( a.Species == 'Caco' ) return true; // CH and others - if ( a.Species == 'Cacodemon' ) return true; // Beautiful Doom - if ( a.GetClassName() == 'AstralCaco' ) return true; // Eviternity - return false; - } - - // Друг - static clearscope bool IdentifyingDrug( Actor a ) - { - if ( a is 'Beast' ) return true; - return false; - } - - static clearscope bool IdentifyingDoubleBoi( Actor a ) - { - if ( a is 'Ettin' ) return true; - return false; - } - - // used to "substitute" a monster class for another so killcount stats are merged - // e.g.: "stealth" monsters and their non-stealth counterparts, - // or "HereticImp" and "HereticImpLeader", which have the same exact tag, - // and would result in an odd "duplication" of monster names - static play Class MergeMonster( Class a ) - { - // see if any services can resolve this first - let si = ServiceIterator.Find("MergeMonsterService"); - Service sv; - String res; - while ( sv = si.Next() ) - { - res = sv.GetString("MergeMonster",stringArg:a.GetClassName()); - if ( res == "" ) continue; - si.Destroy(); - Class rescls = res; - return rescls; - } - si.Destroy(); - // stealth monsters, the worst thing ever invented - if ( a == 'StealthArachnotron' ) return 'Arachnotron'; - if ( a == 'StealthArchvile' ) return 'Archvile'; - if ( a == 'StealthBaron' ) return 'BaronOfHell'; - if ( a == 'StealthCacodemon' ) return 'Cacodemon'; - if ( a == 'StealthChaingunGuy' ) return 'ChaingunGuy'; - if ( a == 'StealthDemon' ) return 'Demon'; - if ( a == 'StealthHellKnight' ) return 'HellKnight'; - if ( a == 'StealthDoomImp' ) return 'DoomImp'; - if ( a == 'StealthFatso' ) return 'Fatso'; - if ( a == 'StealthRevenant' ) return 'Revenant'; - if ( a == 'StealthShotgunGuy' ) return 'ShotgunGuy'; - if ( a == 'StealthZombieMan' ) return 'ZombieMan'; - // heretic monsters - if ( a == 'Sorcerer2' ) return 'Sorcerer1'; - if ( a == 'HereticImpLeader' ) return 'HereticImp'; - if ( a == 'KnightGhost' ) return 'Knight'; - if ( a == 'MummyGhost' ) return 'Mummy'; - if ( a == 'MummyLeaderGhost' ) return 'MummyLeader'; - // hexen monsters - if ( a == 'CentaurMash' ) return 'Centaur'; - if ( a == 'Demon1Mash' ) return 'Demon1'; - if ( a == 'Demon2' ) return 'Demon1'; - if ( a == 'Demon2Mash' ) return 'Demon1'; - if ( a == 'EttinMash' ) return 'Ettin'; - if ( a == 'SerpentLeader' ) return 'Serpent'; - if ( a == 'WraithBuried' ) return 'Wraith'; - return a; - } - - // the stupidest thing ever, it's called BlockingLine but it's not always blocking us - static play bool BlockingLineIsBlocking( Actor a, int blockflags = Line.ML_BLOCKEVERYTHING, Line testline = null ) - { - Line l = testline?testline:a.BlockingLine; - // not blocked - if ( !l ) return false; - // one-sided always blocking - if ( !l.sidedef[1] ) return true; - // same for block everything lines - if ( l.flags&blockflags ) return true; - // lower and upper bounds hit? - double afloor = l.frontsector.floorplane.ZAtPoint(a.pos.xy), - bfloor = l.backsector.floorplane.ZAtPoint(a.pos.xy), - aceil = l.frontsector.ceilingplane.ZAtPoint(a.pos.xy), - bceil = l.backsector.ceilingplane.ZAtPoint(a.pos.xy); - if ( (min(a.pos.z+a.height,a.ceilingz) > min(aceil,bceil)) || (max(a.pos.z,a.floorz) < max(afloor,bfloor)) ) - return true; - // solid 3d floor bounds hit? - for ( int i=0; i ceil) && (a.pos.z < floor) ) - return true; - } - for ( int i=0; i ceil) && (a.pos.z < floor) ) - return true; - } - return false; - } - - static play Vector3 UseLinePos( Line l ) - { - Vector3 al, ah, bl, bh; - if ( !l.sidedef[1] ) - { - // just the whole line - al = (l.v1.p,l.frontsector.floorplane.ZatPoint(l.v1.p)); - ah = (l.v1.p,l.frontsector.ceilingplane.ZatPoint(l.v1.p)); - bl = (l.v2.p,l.frontsector.floorplane.ZatPoint(l.v2.p)); - bh = (l.v2.p,l.frontsector.ceilingplane.ZatPoint(l.v2.p)); - return (al+ah+bl+bh)*.25; - } - SecPlane highestfloor, lowestfloor, lowestceiling, highestceiling; - if ( (l.frontsector.floorplane.ZatPoint(l.v1.p) > l.backsector.floorplane.ZatPoint(l.v1.p)) - && (l.frontsector.floorplane.ZatPoint(l.v2.p) > l.backsector.floorplane.ZatPoint(l.v2.p)) ) - { - highestfloor = l.frontsector.floorplane; - lowestfloor = l.backsector.floorplane; - } - else - { - highestfloor = l.backsector.floorplane; - lowestfloor = l.frontsector.floorplane; - } - if ( (l.frontsector.ceilingplane.ZatPoint(l.v1.p) < l.backsector.ceilingplane.ZatPoint(l.v1.p)) - && (l.frontsector.ceilingplane.ZatPoint(l.v2.p) < l.backsector.ceilingplane.ZatPoint(l.v2.p)) ) - { - lowestceiling = l.frontsector.ceilingplane; - highestceiling = l.backsector.ceilingplane; - } - else - { - lowestceiling = l.backsector.ceilingplane; - highestceiling = l.frontsector.ceilingplane; - } - // try to guess what the part that triggers this is - if ( l.Activation&SPAC_Cross ) - { - // pick the "intersection" - al = (l.v1.p,highestfloor.ZatPoint(l.v1.p)); - ah = (l.v1.p,lowestceiling.ZatPoint(l.v1.p)); - bl = (l.v2.p,highestfloor.ZatPoint(l.v2.p)); - bh = (l.v2.p,lowestceiling.ZatPoint(l.v2.p)); - return (al+ah+bl+bh)*.25; - } - // check if lower part available - al = (l.v1.p,lowestfloor.ZatPoint(l.v1.p)); - ah = (l.v1.p,highestfloor.ZatPoint(l.v1.p)); - bl = (l.v2.p,lowestfloor.ZatPoint(l.v2.p)); - bh = (l.v2.p,highestfloor.ZatPoint(l.v2.p)); - if ( ((al-ah).length() > 0) && ((bl-bh).length() > 0) ) - return (al+ah+bl+bh)*.25; - // check if upper part available - al = (l.v1.p,lowestceiling.ZatPoint(l.v1.p)); - ah = (l.v1.p,highestceiling.ZatPoint(l.v1.p)); - bl = (l.v2.p,lowestceiling.ZatPoint(l.v2.p)); - bh = (l.v2.p,highestceiling.ZatPoint(l.v2.p)); - if ( ((al-ah).length() > 0) && ((bl-bh).length() > 0) ) - return (al+ah+bl+bh)*.25; - // check for 3d floors - bool floorfound = false; - Vector3 fal, fah, fbl, fbh; - for ( int i=0; i ah.z) && (fbh.z > bh.z) && (fal.z > al.z) && (fbl.z > bl.z) ) continue; - al = fal; - ah = fah; - bl = fbl; - bh = fbh; - floorfound = true; - } - if ( floorfound ) return (al+ah+bl+bh)*.25; - for ( int i=0; i ah.z) && (fbh.z > bh.z) && (fal.z > al.z) && (fbl.z > bl.z) ) continue; - al = fal; - ah = fah; - bl = fbl; - bh = fbh; - floorfound = true; - } - if ( floorfound ) return (al+ah+bl+bh)*.25; - // check for midtex - if ( !l.sidedef[0].GetTexture(1).IsNull() ) - { - double ofs = l.sidedef[0].GetTextureYOffset(1); - Vector2 siz = TexMan.GetScaledSize(l.sidedef[0].GetTexture(1)); - Vector2 tofs = TexMan.GetScaledOffset(l.sidedef[0].GetTexture(1)); - ofs += tofs.y; - ofs *= l.sidedef[0].GetTextureYScale(1); - siz.y *= l.sidedef[0].GetTextureYScale(1); - if ( l.flags&Line.ML_DONTPEGBOTTOM ) - { - al = (l.v1.p,highestfloor.ZAtPoint(l.v1.p)+ofs); - bl = (l.v2.p,highestfloor.ZAtPoint(l.v2.p)+ofs); - ah = al+(0,0,siz.y); - bh = bl+(0,0,siz.y); - } - else - { - ah = (l.v1.p,lowestceiling.ZAtPoint(l.v1.p)+ofs); - bh = (l.v2.p,lowestceiling.ZAtPoint(l.v2.p)+ofs); - al = ah-(0,0,siz.y); - bl = bh-(0,0,siz.y); - } - return (al+ah+bl+bh)*.25; - } - if ( !l.sidedef[1].GetTexture(1).IsNull() ) - { - double ofs = l.sidedef[1].GetTextureYOffset(1); - Vector2 siz = TexMan.GetScaledSize(l.sidedef[1].GetTexture(1)); - Vector2 tofs = TexMan.GetScaledOffset(l.sidedef[1].GetTexture(1)); - ofs += tofs.y; - ofs *= l.sidedef[1].GetTextureYScale(1); - siz.y *= l.sidedef[1].GetTextureYScale(1); - if ( l.flags&Line.ML_DONTPEGBOTTOM ) - { - al = (l.v1.p,highestfloor.ZAtPoint(l.v1.p)+ofs); - bl = (l.v2.p,highestfloor.ZAtPoint(l.v2.p)+ofs); - ah = al+(0,0,siz.y); - bh = bl+(0,0,siz.y); - } - else - { - ah = (l.v1.p,lowestceiling.ZAtPoint(l.v1.p)+ofs); - bh = (l.v2.p,lowestceiling.ZAtPoint(l.v2.p)+ofs); - al = ah-(0,0,siz.y); - bl = bh-(0,0,siz.y); - } - return (al+ah+bl+bh)*.25; - } - // just use the intersection - al = (l.v1.p,highestfloor.ZatPoint(l.v1.p)); - ah = (l.v1.p,lowestceiling.ZatPoint(l.v1.p)); - bl = (l.v2.p,highestfloor.ZatPoint(l.v2.p)); - bh = (l.v2.p,lowestceiling.ZatPoint(l.v2.p)); - return (al+ah+bl+bh)*.25; - } - - // get how much a sector's physical position is offset by portals - static Vector2 PortalDisplacement( Sector a, Sector b ) - { - if ( a.portalgroup == b.portalgroup ) return (0,0); // ez - // we can't access level.displacements, so we gotta improvise - Vector2 pdisp = b.centerspot-a.centerspot; - Vector2 vdisp = level.Vec2Diff(a.centerspot,b.centerspot); - return pdisp-vdisp; - } - - // shorthand for some of these checks (these are generally used by the mission briefing system) - static bool IsKnownMap() - { - if ( (gameinfo.gametype&GAME_DOOM) && (IsKnownCustomWAD() || CheckMD5List("vanilladoom.lst")) ) - return true; - if ( (gameinfo.gametype&GAME_HERETIC) && CheckMD5List("vanillaheretic.lst") ) - return true; - if ( (gameinfo.gametype&GAME_HEXEN) && CheckMD5List("vanillahexen.lst") ) - return true; - return false; - } - - // to be filled - static bool IsKnownCustomWAD() - { - if ( gameinfo.gametype&GAME_DOOM ) - { - if ( IsEviternity() ) return true; - if ( IsUltDoom2() ) return true; - } - return false; - } - - // detect ultimate doom 2 - static bool IsUltDoom2() - { - return CheckMD5List("ultdoom2.lst"); - } - - // detect eviternity (naive method) - static bool IsEviternity() - { - for ( int i=0; i list; - list.Clear(); - dat.Split(list,"\n"); - for ( int i=0; i i ) - { - if ( i is 'MagAmmo' ) return StringTable.Localize("$T_"..GetDefaultByType((Class)(i)).PickupTag.."S"); - if ( i is 'SWWMAmmo' ) return StringTable.Localize("$T_"..GetDefaultByType((Class)(i)).PickupTag.."S"); - return GetDefaultByType(i).GetTag(); - } - - static bool, TextureID DefaceTexture( TextureID checkme ) - { - String tn = TexMan.GetName(checkme); - // special case: alt texture names in Doom 2 In Spain Only - if ( (tn ~== "MARBFAC2") || (tn ~== "SP_MAR01") ) - return true, TexMan.CheckForTexture("defaced_MARBFAC2",TexMan.Type_Any); - if ( (tn ~== "MARBFAC3") || (tn ~== "SP_MAR02")) - return true, TexMan.CheckForTexture("defaced_MARBFAC3",TexMan.Type_Any); - if ( (tn ~== "MARBFAC4") || (tn ~== "SP_MAR03") ) - return true, TexMan.CheckForTexture("defaced_MARBFAC4",TexMan.Type_Any); - if ( (tn ~== "MARBFACE") || (tn ~== "SP_MAR04") ) - return true, TexMan.CheckForTexture("defaced_MARBFACE",TexMan.Type_Any); - if ( (tn ~== "ZZWOLF2") ) - return true, TexMan.CheckForTexture("defaced_ZZWOLF2",TexMan.Type_Any); - if ( (tn ~== "ZZWOLF3") ) - return true, TexMan.CheckForTexture("defaced_ZZWOLF3",TexMan.Type_Any); - if ( (tn ~== "ZZWOLF4") ) - return true, TexMan.CheckForTexture("defaced_ZZWOLF4",TexMan.Type_Any); - if ( (tn ~== "ZZWOLF6") ) - return true, TexMan.CheckForTexture("defaced_ZZWOLF6",TexMan.Type_Any); - if ( (tn ~== "ZZWOLF7") ) - return true, TexMan.CheckForTexture("defaced_ZZWOLF7",TexMan.Type_Any); - if ( (tn ~== "ZZWOLF12") ) - return true, TexMan.CheckForTexture("defaced_ZZWOLF12",TexMan.Type_Any); - if ( (tn ~== "ZZWOLF13") ) - return true, TexMan.CheckForTexture("defaced_ZZWOLF13",TexMan.Type_Any); - return false, checkme; - } - - // iterate through polyobjects and see if this line is part of one (returning which, if any) - static bool IsPolyLine( Line l, out swwm_PolyobjectHandle o ) - { - let pi = swwm_PolyobjectIterator.Create(); - swwm_PolyobjectHandle p; - while ( p = pi.Next() ) - { - if ( p.Lines.Find(l) >= p.Lines.Size() ) continue; - o = p; - return true; - } - o = null; - return false; - } - - // checks if the specified world coordinate is inside the polyobject - // this check is very naive but it should handle most "normal" shapes - // (yeah, sorry if you somehow want to play this mod with lilith.pk3) - static bool PointInPolyobj( Vector2 p, swwm_PolyobjectHandle o ) - { - // first pass, find which vertex out of all lines is closest - Vertex v = o.StartLine.v1; - double dist = (v.p-p).length(); - for ( int i=0; i= 4) && (level.mapname.Mid(0,1) == "E") && (level.mapname.ByteAt(1) >= 0x30) && (level.mapname.ByteAt(1) < 0x40) && (level.mapname.Mid(2,1) == "M") && (level.mapname.ByteAt(3) >= 0x30) && (level.mapname.ByteAt(3) < 0x40) ) - return true; - return false; - } - - static bool IsVipItem( Actor target ) - { - if ( (target is 'Chancebox') && (target.CurState==target.SpawnState) ) - return true; - if ( target is 'SWWMCollectible' ) - return true; - if ( (target is 'Ynykron') || (target is 'RafanKos') ) - return true; - if ( (target is 'GoldShell') || (target is 'YnykronAmmo') || (target is 'UltimatePod') || (target is 'UltimateAmmo') ) - return true; - if ( (target is 'Mykradvo') || (target is 'AngerySigil') || (target is 'DivineSprite') ) - return true; - if ( target is 'PuzzleItem' ) - return true; - return false; - } - - // used by the store - static bool IsVipItemClass( Class target ) - { - if ( (target is 'Ynykron') || (target is 'RafanKos') ) - return true; - if ( (target is 'GoldShell') || (target is 'YnykronAmmo') || (target is 'UltimatePod') || (target is 'UltimateAmmo') ) - return true; - if ( (target is 'Mykradvo') || (target is 'AngerySigil') || (target is 'DivineSprite') ) - return true; - return false; - } - - static bool IsScoreItem( Actor target ) - { - if ( target is 'Key' ) - return true; - if ( target is 'HammerspaceEmbiggener' ) - return true; - return target.bCOUNTITEM; - } - - // check that all players can get enough of this if needed - // multi: check for multiple copies, not just single instances - // (useful e.g. for dual wieldable weapons) - static bool CheckNeedsItem( Class itm, bool multi = false ) - { - int np = 0; - for ( int i=0; i0); - } - - // checks if instances of a certain item exist - // skipme: optionally, ignore checking for one specific instance - // (useful to check if we're the only copy of an item) - // mapstart: this function is being called during map load, so we - // should also check STAT_TRAVELLING inventory - // worldonly: only checks for items that are placed in the world - static bool ItemExists( Class itm, Inventory skipme = null, bool mapstart = false, bool worldonly = false ) - { - let ti = ThinkerIterator.Create(itm); - Inventory i; - while ( i = Inventory(ti.Next()) ) - { - if ( i == skipme ) continue; - if ( worldonly && i.Owner ) continue; - return true; - } - if ( worldonly || !mapstart ) return false; - ti = ThinkerIterator.Create(itm,Thinker.STAT_TRAVELLING); - while ( i = Inventory(ti.Next()) ) - { - if ( i == skipme ) continue; - return true; - } - return false; - } - - // multi-weapon spawn stuff - - static private Class PickPair( Class a, Class b ) - { - if ( ItemExists(a,mapstart:true) ) return b; - return Random[Replacements](0,1)?a:b; - } - static private Class PickTrio( Class a, Class b, Class c ) - { - if ( ItemExists(a,mapstart:true) ) - { - if ( ItemExists(b,mapstart:true) ) - return c; - return Random[Replacements](0,1)?b:c; - } - if ( ItemExists(b,mapstart:true) ) - { - if ( ItemExists(c,mapstart:true) ) - return a; - return Random[Replacements](0,1)?a:c; - } - if ( ItemExists(c,mapstart:true) ) - Random[Replacements](0,1)?a:b; - switch ( Random[Replacements](0,2) ) - { - case 0: - return a; - case 1: - return b; - } - return c; - } - - // melee weapons + extra slot 2 guns (50% chance) - static Class PickSWWMSlot1() - { - // so the player can recover it if they decided to drop it in a previous map, or they didn't start with it - if ( CheckNeedsItem('DeepImpact') ) return 'DeepImpact'; - bool hasmelee = (!CheckNeedsItem('PusherWeapon')/*||!CheckNeedsItem('ItamexHammer')*/); - bool hasallmelee = (!CheckNeedsItem('PusherWeapon')/*&&!CheckNeedsItem('ItamexHammer')*/); - bool gunexists = ItemExists('ExplodiumGun',worldonly:true)/*||ItemExists('PlasmaBlast',worldonly:true)*/; - // if the player already has a melee weapon, 50% chance to spawn either slot 2 weapon as long as one doesn't exist in the map already - // if the player has ALL melee weapons (somehow), that chance becomes 100% - if ( hasmelee && !gunexists && (hasallmelee || Random[Replacements](0,1)) ) - return PickSWWMSlot2(); - //return PickPair('PusherWeapon','ItamexHammer'); - return 'PusherWeapon'; - } - // pistol spawn, pretty simple - static Class PickSWWMSlot2() - { - //return PickPair('ExplodiumGun','PlasmaBlast'); - return 'ExplodiumGun'; - } - // shotgun spawn - static Class PickSWWMSlot3() - { - //return PickPair('Spreadgun','PuntzerBeta'); - return 'Spreadgun'; - } - // super shotgun spawn - static Class PickSWWMSlot4() - { - //return PickPair('Wallbuster','PuntzerGamma'); - return 'Wallbuster'; - } - // chaingun spawn - static Class PickSWWMSlot5() - { - //return PickPair('Eviscerator','HeavyMahSheenGun'); - return 'Eviscerator'; - } - // rocket launcher spawn - static Class PickSWWMSlot6() - { - //return PickPair('Hellblazer','Quadravol'); - return 'Hellblazer'; - } - // first plasma rifle spawn - static Class PickSWWMSlot7() - { - //return PickPair('Sparkster','ModernSparkster'); - return 'Sparkster'; - } - // second plasma rifle spawn - static Class PickSWWMSlot8() - { - //return PickPair('SilverBullet','MisterRifle'); - return 'SilverBullet'; - } - // first bfg spawn - static Class PickSWWMSlot9() - { - //return PickPair('CandyGun','RayKhom'); - return 'CandyGun'; - } - // second bfg spawn (each weapon can only exist once) - static Class PickSWWMSlot0( bool fallback = true ) - { - /*if ( ItemExists('Ynykron',mapstart:true) ) - { - if ( ItemExists('RafanKos',mapstart:true) ) - return fallback?PickSWWMSlot9():null; - return 'RafanKos'; - } - if ( ItemExists('RafanKos',mapstart:true) ) - return 'Ynykron'; - return Random[Replacements](0,1)?'Ynykron':'RafanKos';*/ - if ( ItemExists('Ynykron',mapstart:true) ) return fallback?PickSWWMSlot9():null; - return 'Ynykron'; - } - // either plasma rifle spawn - static Class PickDoomSlot6() - { - bool hasslot7 = (!CheckNeedsItem('Sparkster')/*||!CheckNeedsItem('ModernSparkster')*/); - bool hasslot8 = (!CheckNeedsItem('SilverBullet')/*||!CheckNeedsItem('MortalRifle')*/); - // if the player already has a slot 7 weapon... - if ( hasslot7 ) - { - // ... and also has a slot 8 weapon, 33% chance of a slot 8 spawn - // otherwise, guaranteed slot 8 spawn - if ( hasslot8 && Random[Replacements](0,2) ) return PickSWWMSlot7(); - else return PickSWWMSlot8(); - } - // otherwise, always spawn a slot 7 weapon first - return PickSWWMSlot7(); - - } - // either bfg spawn - static Class PickDoomSlot7() - { - bool hasslot9 = (!CheckNeedsItem('CandyGun')/*||!CheckNeedsItem('RayKhom')*/); - bool hasslot0 = (!CheckNeedsItem('Ynykron')/*||!CheckNeedsItem('RafanKos')*/); - let rep = PickSWWMSlot0(false); - // if the player already has a slot 9 weapon (and a slot 0 weapon can still spawn)... - if ( hasslot9 && rep ) - { - // ... and also has a slot 0 weapon already, 33% chance of a slot 0 spawn - // otherwise, guaranteed slot 0 spawn - if ( hasslot0 && Random[Replacements](0,2) ) return PickSWWMSlot9(); - else return rep; - } - // otherwise, always spawn a slot 9 weapon first - return PickSWWMSlot9(); - } - // either shotgun spawn (also used for Heretic) - static Class PickDoomSlot3() - { - // always slot 3 after map start, prevents shotgun guys from dropping wallbusters, which is weird af - if ( level.maptime ) return PickSWWMSlot3(); - bool hasslot3 = (!CheckNeedsItem('Spreadgun')/*||!CheckNeedsItem('PuntzerBeta')*/); - bool hasslot4 = (!CheckNeedsItem('Wallbuster')/*||!CheckNeedsItem('PuntzerGamma')*/); - // if the player already has a slot 3 weapon... - if ( hasslot3 ) - { - // ... and also has a slot 4 weapon, 33% chance of a slot 4 spawn - // otherwise, guaranteed slot 4 spawn - if ( hasslot4 && Random[Replacements](0,2) ) return PickSWWMSlot3(); - return PickSWWMSlot4(); - } - // otherwise, always spawn a slot 3 weapon first - return PickSWWMSlot3(); - } - // what RandomSpawner does, basically (simplified for items) - static play void TransferItemProp( Actor a, Actor b, bool bundlehack = false ) - { - if ( bundlehack ) - { - b.spawnpoint = b.pos; - b.spawnangle = int(b.angle); - } - else - { - b.spawnpoint = a.spawnpoint; - b.spawnangle = a.spawnangle; - b.angle = a.angle; - b.pitch = a.pitch; - b.roll = a.roll; - } - b.special = a.special; - b.FloatBobPhase = a.FloatBobPhase; // important - for ( int i=0; i<5; i++ ) b.args[i] = a.args[i]; - b.special1 = a.special1; - b.special2 = a.special2; - b.spawnflags = a.spawnflags&~MTF_SECRET; - b.HandleSpawnFlags(); - b.spawnflags = a.spawnflags; - b.bCountSecret = a.spawnflags&MTF_SECRET; - b.ChangeTid(a.tid); - b.vel = b.vel; - b.master = b.master; - b.tracer = b.tracer; - b.target = b.target; - b.bDROPPED = a.bDROPPED; - } } -Class RadiusDebugSphere : Actor -{ - Default - { - RenderStyle "AddStencil"; - StencilColor "White"; - Radius .1; - Height 0.; - +NOGRAVITY; - +NOINTERACTION; - } - States - { - Spawn: - XZW1 A 1 BRIGHT A_FadeOut(); - Wait; - } -} - -Class ShinemapDebugSphere : Actor +Class EnvmapDebugSphere : Actor { override bool Used( Actor user ) { @@ -2317,33 +80,45 @@ Class ShinemapDebugSphere : Actor override void Tick() {} Default { - RenderStyle "Add"; + RenderStyle 'Normal'; Radius 16; Height 48; } States { Spawn: - XZW1 A -1 Bright NoDelay A_SetRenderStyle(1.,STYLE_Add); + XZW1 A -1 NoDelay A_SetRenderStyle(1.,STYLE_Normal); XZW1 B -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 C -1 Bright A_SetRenderStyle(1.,STYLE_Add); + XZW1 C -1 A_SetRenderStyle(1.,STYLE_Add); XZW1 D -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 E -1 Bright A_SetRenderStyle(1.,STYLE_Normal); + XZW1 E -1 A_SetRenderStyle(1.,STYLE_Normal); XZW1 F -1 A_SetRenderStyle(1.,STYLE_Add); - XZW1 G -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 H -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 I -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 J -1 Bright A_SetRenderStyle(1.,STYLE_Add); - XZW1 K -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 L -1 Bright A_SetRenderStyle(1.,STYLE_Add); - XZW1 M -1 Bright A_SetRenderStyle(1.,STYLE_Add); - XZW1 N -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 O -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 P -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 G -1 A_SetRenderStyle(1.,STYLE_Add); + XZW1 H -1 A_SetRenderStyle(1.,STYLE_Add); + XZW1 I -1 A_SetRenderStyle(1.,STYLE_Add); + XZW1 J -1 A_SetRenderStyle(1.,STYLE_Add); + XZW1 K -1 A_SetRenderStyle(1.,STYLE_Add); + XZW1 L -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 M -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 N -1 A_SetRenderStyle(1.,STYLE_Add); + XZW1 O -1 Bright A_SetRenderStyle(1.,STYLE_Normal); + XZW1 P -1 Bright A_SetRenderStyle(1.,STYLE_Normal); XZW1 Q -1 A_SetRenderStyle(1.,STYLE_Normal); - XZW1 R -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 R -1 Bright A_SetRenderStyle(1.,STYLE_Normal); XZW1 S -1 A_SetRenderStyle(1.,STYLE_Normal); XZW1 T -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 U -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 V -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 W -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 X -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 Y -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW1 Z -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW2 A -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW2 B -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW2 C -1 A_SetRenderStyle(1.,STYLE_Normal); + XZW2 D -1 A_SetRenderStyle(1.,STYLE_Add); + XZW2 E -1 Bright A_SetRenderStyle(1.,STYLE_Normal); + XZW2 F -1 Bright A_SetRenderStyle(1.,STYLE_Add); Loop; } } diff --git a/zscript/utility/swwm_utility_achievements.zsc b/zscript/utility/swwm_utility_achievements.zsc new file mode 100644 index 000000000..af0154b63 --- /dev/null +++ b/zscript/utility/swwm_utility_achievements.zsc @@ -0,0 +1,88 @@ +// achievement helpers + +extend class SWWMUtility +{ + static void MarkAchievement( String mvar, PlayerInfo p = null ) + { + if ( !p || (p != players[consoleplayer]) ) return; + let hnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); + if ( !hnd ) return; + String val = hnd.achievementstate.At(mvar); + if ( val == "" ) + { + if ( developer >= 2 ) Console.Printf("MarkAchievement: achievement '"..mvar.."' not found"); + return; + } + if ( val == "2" ) return; + hnd.achievementstate.Insert(mvar,"1"); + } + static int GetAchievementProgress( String pvar, PlayerInfo p = null ) + { + if ( !p || (p != players[consoleplayer]) ) return 0; + let hnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); + if ( !hnd ) return 0; + String pval = hnd.achievementprogress.At(pvar); + if ( pval == "" ) + { + if ( developer >= 2 ) Console.Printf("GetAchievementProgress: achievement '"..pvar.."' not found"); + return 0; + } + return pval.ToInt(); + } + static void AchievementProgress( String pvar, int val, PlayerInfo p = null ) + { + if ( !p || (p != players[consoleplayer]) ) return; + let hnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); + if ( !hnd ) return; + String pval = hnd.achievementprogress.At(pvar); + if ( pval == "" ) + { + if ( developer >= 2 ) Console.Printf("AchievementProgress: achievement '"..pvar.."' not found"); + return; + } + if ( val <= pval.ToInt() ) return; + hnd.achievementprogress.Insert(pvar,String.Format("%d",val)); + } + static void AchievementProgressInc( String pvar, int inc, PlayerInfo p = null ) + { + if ( !p || (p != players[consoleplayer]) ) return; + let hnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); + if ( !hnd ) return; + String pval = hnd.achievementprogress.At(pvar); + if ( pval == "" ) + { + if ( developer >= 2 ) Console.Printf("AchievementProgressInc: achievement '"..pvar.."' not found"); + return; + } + hnd.achievementprogress.Insert(pvar,String.Format("%d",pval.ToInt()+inc)); + } + static void AchievementProgressIncDouble( String pvar, double inc, PlayerInfo p = null ) + { + if ( !p || (p != players[consoleplayer]) ) return; + let hnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); + if ( !hnd ) return; + String pval = hnd.achievementprogress.At(pvar); + if ( pval == "" ) + { + if ( developer >= 2 ) Console.Printf("AchievementProgressIncDOuble: achievement '"..pvar.."' not found"); + return; + } + if ( pval ~== "NaN" ) // this can happen, yup + pval = "0"; + hnd.achievementprogress.Insert(pvar,String.Format("%g",pval.ToDouble()+inc)); + } + // for bitfields + static void AchievementProgressOr( String pvar, int val, PlayerInfo p = null ) + { + if ( !p || (p != players[consoleplayer]) ) return; + let hnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); + if ( !hnd ) return; + String pval = hnd.achievementprogress.At(pvar); + if ( pval == "" ) + { + if ( developer >= 2 ) Console.Printf("AchievementProgressOr: achievement '"..pvar.."' not found"); + return; + } + hnd.achievementprogress.Insert(pvar,String.Format("%d",pval.ToInt()|val)); + } +} diff --git a/zscript/utility/swwm_utility_blast.zsc b/zscript/utility/swwm_utility_blast.zsc new file mode 100644 index 000000000..405fddee4 --- /dev/null +++ b/zscript/utility/swwm_utility_blast.zsc @@ -0,0 +1,189 @@ +// explosion/knockback code +enum EDoExplosionFlags +{ + DE_BLAST = 1, // sets BLASTED flag on pushed actors + DE_NOBLEED = 2, // does not spawn blood decals on hit + DE_NOSPLASH = 4, // like XF_NOSPLASH + DE_THRUWALLS = 8, // damages through geometry (no sight check) + DE_NOTMISSILE = 16, // instigator is the source itself (normally it'd be its target pointer) + DE_EXTRAZTHRUST = 32, // applies a higher Z thrust to enemies on ground + DE_HOWL = 64, // 25% chance for hit enemies to howl + DE_COUNTENEMIES = 128, // only count hits for hostiles + DE_COUNTSTEALTH = 256, // only count hits for inactive monsters + DE_COUNTFHKILLS = 512, // only count kills for enemies that were at full health + DE_NOHURTFRIEND = 1024, // splash damage will not affect allies + DE_CENTERHEIGHT = 2048, // origin of explosion is at the center height of the source actor, rather than its base + DE_NONEXPLOSIVE = 4096, // does not count as explosive damage (DMG_EXPLOSION is not passed, and no blast taunts are used) + DE_QUADRAVOL = 8192 // splash burn from a Quadravol projectile, so it'll ignite enemies instead of dealing damage +}; + +extend Class SWWMUtility +{ + // Apply full 3D knockback in a specific direction, useful for hitscan + static play void DoKnockback( Actor Victim, Vector3 HitDirection, double MomentumTransfer, bool ExtraZThrust = false ) + { + if ( !Victim ) + return; + if ( Victim.bDORMANT ) // no dormant knockback + return; + if ( !Victim.bSHOOTABLE && !Victim.bVULNERABLE ) + return; + if ( Victim.bDONTTHRUST || (Victim.Mass >= Actor.LARGE_MASS) ) + return; + // crouching reduces knockback + if ( (Victim.Height < Victim.default.Height) && (Victim.default.Height != 0.) ) + MomentumTransfer *= Victim.Height/Victim.default.Height; + Vector3 Momentum = HitDirection*MomentumTransfer; + if ( (Victim.pos.z <= Victim.floorz) || !Victim.TestMobjZ() ) + Momentum.z = max(Momentum.z,(ExtraZThrust?.4:.1)*Momentum.length()); + Momentum /= GameTicRate*max(50,Victim.Mass); + Victim.vel += Momentum; + } + + // complete spherical and more accurate replacement of A_Explode + // 100% free of the buggery GZDoom's own splash damage has + // returns the number of shootables hit/killed + static play int, int DoExplosion( Actor Source, double Damage, double MomentumTransfer, double ExplosionRadius, double FullDamageRadius = 0., int flags = 0, Name DamageType = '', Actor ignoreme = null, int dmgflags = 0, Actor realsource = null, Actor realinflictor = null ) + { + FullDamageRadius = min(FullDamageRadius,ExplosionRadius); + // debug, display radius sphere + if ( swwm_debugblast ) + { + let s = Actor.Spawn('RadiusDebugSphere',(flags&DE_CENTERHEIGHT)?Source.Vec3Offset(0,0,Source.height/2):Source.pos); + s.Scale *= ExplosionRadius; + s.SetShade((Damage>0)?0xFF00FF00:0xFF0000FF); + if ( FullDamageRadius > 0. ) + { + let s = Actor.Spawn('RadiusDebugSphere',(flags&DE_CENTERHEIGHT)?Source.Vec3Offset(0,0,Source.height/2):Source.pos); + s.Scale *= FullDamageRadius; + s.SetShade(0xFFFF0000); + } + } + if ( !(flags&DE_NOSPLASH) ) Source.CheckSplash(ExplosionRadius); + double brange; + // sanity checks are needed to avoid division by zero or other weirdness + if ( ExplosionRadius == FullDamageRadius ) brange = 1.; + else brange = 1./(ExplosionRadius-FullDamageRadius); + Actor Instigator = realsource?realsource:(flags&DE_NOTMISSILE)?Source:Source.target; + int dflg = ((flags&DE_NONEXPLOSIVE)?0:DMG_EXPLOSION)|dmgflags; + int nhit = 0, nkill = 0; + bool haskilled = false; + Array hitlist; + hitlist.Clear(); + // gather first + BlockThingsIterator bt; + int thisgroup = Source.CurSector.PortalGroup; + // we need to check all possible portal groups due to quirks of blockthingsiterator and sector portals + for ( int i=0; i= hitlist.Size() ) + hitlist.Push(a); + } + bt.Destroy(); + } + foreach ( a:hitlist ) + { + if ( !a ) continue; // this can happen, yes + // calculate factor + Vector3 dir; + if ( flags&DE_CENTERHEIGHT ) dir = level.Vec3Diff(Source.Vec3Offset(0,0,Source.Height/2),a.Vec3Offset(0,0,a.Height/2)); + else dir = level.Vec3Diff(Source.pos,a.Vec3Offset(0,0,a.Height/2)); + double dist = dir.length(); + // intersecting, randomize direction + if ( dir.length() <= double.epsilon ) + { + double ang = FRandom[DoBlast](0,360); + double pt = FRandom[DoBlast](-90,90); + dir = Vec3FromAngles(ang,pt); + } + else dir /= dist; + dist = clamp(dist-FullDamageRadius,0,min(dist,ExplosionRadius)); + double damagescale; + if ( ExplosionRadius == FullDamageRadius ) damagescale = 1.; + else damagescale = 1.-clamp((dist-a.Radius)*brange,0.,1.); + double mm = MomentumTransfer*damagescale; + // no knockback if massive/unpushable + if ( (abs(mm) > 0.) && !a.bDORMANT && !a.bDONTTHRUST && (a.Mass < Actor.LARGE_MASS) ) + { + // crouching reduces knockback + if ( (a.Height < a.default.Height) && (a.default.Height != 0.) ) + mm *= a.Height/a.default.Height; + Vector3 Momentum = dir*mm; + if ( (a.pos.z <= a.floorz) || !a.TestMobjZ() ) + Momentum.z = max(Momentum.z,(flags&DE_EXTRAZTHRUST?.4:.1)*Momentum.length()); + Momentum /= GameTicRate*max(50,a.Mass); // prevent tiny things from getting yeeted at warp speed + a.vel += Momentum; + if ( (flags&DE_BLAST) && a.bCANBLAST && !a.bDONTBLAST ) a.bBLASTED = true; + } + // hit it + bool inactive = (!a.player&&!a.target); + bool hostile = (Instigator&&a.IsHostile(Instigator)&&(a.bISMONSTER||a.player)); + if ( (!(flags&DE_COUNTENEMIES) || hostile) && (!(flags&DE_COUNTSTEALTH) || inactive) ) nhit++; + int dmg = int(Damage*damagescale); + if ( flags&DE_QUADRAVOL ) + { + OnFire.Apply(a,Instigator,dmg); // ignite + continue; + } + if ( dmg <= 0 ) continue; // no harm + int oldhp = a.Health; + int basehp = a.GetSpawnHealth(); + int ndmg = a.DamageMobj(realinflictor?realinflictor:Source,Instigator,dmg,(DamageType=='')?Source.DamageType:DamageType,dflg,atan2(-dir.y,-dir.x)); + if ( (ndmg > 0) && a && !(flags&DE_NOBLEED) ) a.TraceBleed(ndmg,Source); + if ( (flags&DE_HOWL) && a && (a.Health > 0) && a.bISMONSTER && !Random[DoBlast](0,3) ) a.Howl(); + if ( hostile && (!a || (a.Health <= 0)) ) haskilled = true; + if ( (flags&DE_COUNTFHKILLS) && (oldhp < basehp) ) continue; // was not at full health + if ( (!a || (a.Health <= 0)) && (!(flags&DE_COUNTENEMIES) || hostile) && (!(flags&DE_COUNTSTEALTH) || inactive) ) nkill++; + } + if ( (Instigator is 'Demolitionist') && haskilled && !(flags&DE_NONEXPLOSIVE) ) + { + let hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + let demo = Demolitionist(Instigator); + if ( hnd && (gametic > demo.lastbang+30) && (gametic > hnd.lastcombat+10) && !Random[DemoLines](0,3) ) + demo.lastbang = SWWMHandler.AddOneLiner("blast",2,10); + } + return nhit, nkill; + } +} + +Class RadiusDebugSphere : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'AddStencil'; + StencilColor "FF FF FF"; + } + States + { + Spawn: + XZW1 A 1 BRIGHT A_FadeOut(); + Wait; + } +} diff --git a/zscript/utility/swwm_utility_compat.zsc b/zscript/utility/swwm_utility_compat.zsc new file mode 100644 index 000000000..13f59bd48 --- /dev/null +++ b/zscript/utility/swwm_utility_compat.zsc @@ -0,0 +1,154 @@ +// compat / detection code +extend Class SWWMUtility +{ + // try to be as thorough as possible in checking if DEHACKED has altered this actor + static bool CheckDehackery( Class cls ) + { + let def = GetDefaultByType(cls); + for ( State s=def.SpawnState; s; s=s.NextState ) + { + if ( s.bDEHACKED ) return true; + // keep checking until we hit a loop, just in case + if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + } + for ( State s=def.SeeState; s; s=s.NextState ) + { + if ( s.bDEHACKED ) return true; + // keep checking until we hit a loop, just in case + if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + } + for ( State s=def.MissileState; s; s=s.NextState ) + { + if ( s.bDEHACKED ) return true; + // keep checking until we hit a loop, just in case + if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + } + for ( State s=def.MeleeState; s; s=s.NextState ) + { + if ( s.bDEHACKED ) return true; + // keep checking until we hit a loop, just in case + if ( s.NextState && (s.DistanceTo(s.NextState) <= 0) ) break; + } + return false; + } + + // shorthand for some of these checks (these are generally used by the mission briefing system) + static bool IsKnownMap() + { + if ( (gameinfo.gametype&GAME_DOOM) && (IsKnownCustomWAD() || CheckMD5List("vanilladoom.lst")) ) + return true; + if ( (gameinfo.gametype&GAME_HERETIC) && CheckMD5List("vanillaheretic.lst") ) + return true; + if ( (gameinfo.gametype&GAME_HEXEN) && CheckMD5List("vanillahexen.lst") ) + return true; + return false; + } + + // to be filled + static bool IsKnownCustomWAD() + { + if ( gameinfo.gametype&GAME_DOOM ) + { + if ( IsEviternity() ) return true; + if ( IsEviternityTwo() ) return true; + if ( IsUltDoom2() ) return true; + if ( IsLegacyOfRust() ) return true; + } + return false; + } + + static bool IsLegacyOfRust() + { + return CheckMD5List("id1.lst"); + } + + // detect ultimate doom 2 + static bool IsUltDoom2() + { + return CheckMD5List("ultdoom2.lst"); + } + + // detect eviternity (naive method) + static bool IsEviternity() + { + return FindClass('Archangelus','Actor'); + } + + // detect eviternity 2 (naive method) + static bool IsEviternityTwo() + { + return FindClass('The_Origin_Phase_1','Actor'); + } + + // detect doom vacation + static bool InDoomVacation() + { + // cheap, but hey, it should work + if ( Wads.FindLump("VACABEX") != -1 ) + { + // just to make sure + return FindClass('Babe','Actor'); + } + return false; + } + + static bool IsDeathkings() + { + if ( (gameinfo.gametype&GAME_HEXEN) && LevelInfo.MapExists("MAP41") ) + { + let inf = LevelInfo.FindLevelInfo("MAP41"); + if ( inf.cluster == 1 ) return true; + } + return false; + } + + // detect vanilla maps (across all IWAD versions) + static bool CheckMD5List( String fname ) + { + String csum = level.GetChecksum(); + let lmp = Wads.CheckNumForFullName(fname); + if ( lmp == -1 ) return false; + String dat = Wads.ReadLump(lmp); + // Windows pls + dat.Replace("\r",""); + Array list; + list.Clear(); + dat.Split(list,"\n"); + foreach ( l:list ) + { + if ( (l.Length() == 0) || (l.Left(1) == "#") || (l.Left(1) == "") ) + continue; + if ( csum ~== l ) + return true; + } + return false; + } + + // WHACK + static play void EndLevelDie( Actor victim ) + { + victim.DamageMobj(null,null,victim.Health,'EndLevel',DMG_FORCED|DMG_THRUSTLESS); + } + + // for Equinox + static play void SpawnVanillaBossBrain( int tid ) + { + let ai = Level.CreateActorIterator(tid); + foreach ( a:ai ) + { + let bb = a.Spawn('BossBrain',a.pos,NO_REPLACE); + bb.angle = a.angle; + } + } + + // checks if we're playing in doom 1 + // this is used so we can sometimes replace the shotgun with a SSG slot weapon + static bool IsDoomOne() + { + if ( !(gameinfo.GameType&GAME_DOOM) ) return false; + // is the map in ExMx format? Then it's likely we're playing a doom 1 map + if ( (level.mapname.Length() >= 4) && (level.mapname.Mid(0,1) == "E") && (level.mapname.ByteAt(1) >= 0x30) && (level.mapname.ByteAt(1) < 0x40) && (level.mapname.Mid(2,1) == "M") && (level.mapname.ByteAt(3) >= 0x30) && (level.mapname.ByteAt(3) < 0x40) ) + return true; + return false; + } +} diff --git a/zscript/utility/swwm_utility_info.zsc b/zscript/utility/swwm_utility_info.zsc new file mode 100644 index 000000000..5368d43ff --- /dev/null +++ b/zscript/utility/swwm_utility_info.zsc @@ -0,0 +1,530 @@ +// identification and tagging +extend Class SWWMUtility +{ + // because GetTag() returns the localized string, we need to do things the hard way + static play String GetFunTag( SWWMHandler hnd, Actor a, String defstr = "" ) + { + // look up fun tag services if available + foreach ( sv:hnd.funtagsv ) + { + if ( !sv ) continue; + String res = sv.GetString("GetFunTag",objectArg:a); + if ( res == "" ) continue; + return res; + } + int ntags = 1; + String basetag = ""; + switch ( a.GetClassName() ) + { + // Doom + case 'ZombieMan': + case 'StealthZombieMan': + basetag = "ZOMBIE"; + break; + case 'ShotgunGuy': + case 'StealthShotgunGuy': + basetag = "SHOTGUN"; + break; + case 'ChaingunGuy': + case 'StealthChaingunGuy': + basetag = "HEAVY"; + break; + case 'DoomImp': + case 'StealthDoomImp': + basetag = "IMP"; + break; + case 'Demon': + case 'StealthDemon': + basetag = "DEMON"; + break; + case 'Spectre': + basetag = "SPECTRE"; + break; + case 'LostSoul': + case 'LostSoulEvit2': + case 'LostSoulCount': + basetag = "LOST"; + break; + case 'Cacodemon': + case 'StealthCacodemon': + basetag = "CACO"; + break; + case 'HellKnight': + case 'StealthHellKnight': + basetag = "HELL"; + break; + case 'BaronOfHell': + case 'StealthBaron': + basetag = "BARON"; + break; + case 'Arachnotron': + case 'StealthArachnotron': + basetag = "ARACH"; + break; + case 'PainElemental': + basetag = "PAIN"; + break; + case 'Revenant': + case 'StealthRevenant': + basetag = "REVEN"; + break; + case 'Fatso': + case 'StealthFatso': + basetag = "MANCU"; + break; + case 'Archvile': + case 'StealthArchvile': + basetag = "ARCH"; + break; + case 'SpiderMastermind': + basetag = "SPIDER"; + break; + case 'Cyberdemon': + case 'CyberdemonEvit2': + case 'CyberdemonMAP24': + basetag = "CYBER"; + break; + case 'ID24Banshee': + basetag = "ID24BANSHEE"; + break; + case 'ID24Ghoul': + basetag = "ID24GHOUL"; + break; + case 'ID24Mindweaver': + basetag = "ID24MINDWEAVER"; + break; + case 'ID24PlasmaGuy': + basetag = "ID24SHOCKTROOPER"; + break; + case 'ID24Vassago': + basetag = "ID24VASSAGO"; + break; + case 'ID24Tyrant': + case 'ID24TyrantBoss1': + case 'ID24TyrantBoss2': + basetag = "ID24TYRANT"; + break; + case 'SWWMBossBrain': + basetag = "BOSSBRAIN"; + break; + case 'WolfensteinSS': + if ( IsUltDoom2() ) + { + basetag = "ELITEZOMBIE"; + break; + } + // ensure it's not being replaced + if ( CheckDehackery('WolfensteinSS') ) break; + case 'SWWMSS': + basetag = "WOLFSS"; + break; + case 'SWWMHangingKeen': + basetag = "KEEN"; + break; + case 'MBFHelperDog': + case 'SWWMDog': + basetag = "DOG"; + break; + case 'SWWMGuard': + basetag = "WOLFGUARD"; + break; + case 'SWWMHans': + basetag = "WOLFHANS"; + break; + // Heretic + case 'Chicken': + basetag = "CHICKEN"; + break; + case 'Beast': + basetag = "BEAST"; + break; + case 'Clink': + basetag = "CLINK"; + break; + case 'Sorcerer1': + case 'Sorcerer2': + basetag = "DSPARIL"; + break; + case 'HereticImp': + case 'HereticImpLeader': + basetag = "HERETICIMP"; + break; + case 'Ironlich': + basetag = "IRONLICH"; + break; + case 'Knight': + case 'KnightGhost': + basetag = "BONEKNIGHT"; + break; + case 'Minotaur': + case 'MinotaurFriend': + basetag = "MINOTAUR"; + break; + case 'Mummy': + case 'MummyGhost': + basetag = "MUMMY"; + break; + case 'MummyLeader': + case 'MummyLeaderGhost': + basetag = "MUMMYLEADER"; + break; + case 'Snake': + basetag = "SNAKE"; + break; + case 'Wizard': + basetag = "WIZARD"; + break; + // Hexen + case 'FireDemon': + basetag = "FIREDEMON"; + break; + case 'Demon1': + case 'Demon1Mash': + case 'Demon2': + case 'Demon2Mash': + basetag = "DEMON1"; + break; + case 'Ettin': + case 'EttinMash': + basetag = "ETTIN"; + break; + case 'Centaur': + case 'CentaurMash': + basetag = "CENTAUR"; + break; + case 'CentaurLeader': + basetag = "SLAUGHTAUR"; + break; + case 'Bishop': + basetag = "BISHOP"; + break; + case 'IceGuy': + basetag = "ICEGUY"; + break; + case 'Serpent': + case 'SerpentLeader': + basetag = "SERPENT"; + break; + case 'Wraith': + case 'WraithBuried': + basetag = "WRAITH"; + break; + case 'Dragon': + basetag = "DRAGON"; + break; + case 'Korax': + basetag = "KORAX"; + break; + case 'FighterBoss': + basetag = "FBOSS"; + break; + case 'MageBoss': + basetag = "MBOSS"; + break; + case 'ClericBoss': + basetag = "CBOSS"; + break; + case 'Heresiarch': + basetag = "HERESIARCH"; + break; + case 'Pig': + basetag = "PIG"; + break; + // eviternity + case 'ArchangelusA': + case 'ArchangelusB': + basetag = "ANGEL"; + break; + case 'AstralCaco': + basetag = "ASTRAL"; + break; + case 'Annihilator': + basetag = "ANNIHIL"; + break; + case 'FormerCaptain': + basetag = "FCAPTAIN"; + break; + case 'NightmareDemon': + basetag = "NDEMON"; + break; + // eviternity 2 + case 'FormerCorporal': + basetag = "FCORPORAL"; + break; + case 'AstralArachnotron': + basetag = "ASTRALARACH"; + break; + case 'AstralCacodemon': + basetag = "ASTRAL"; + break; + case 'Veilimp': + basetag = "VEILIMP"; + break; + case 'GoldenAstralCaco': + case 'GoldenAstralCacoBoss': + basetag = "ASTRALGOLD"; + break; + case 'DukeOfHell': + basetag = "DUKE"; + break; + case 'AstralBabyCaco': + basetag = "ASTRALBABY"; + break; + case 'NightmareCacodemon': + basetag = "NAC"; + break; + case 'AstralMancubus': + basetag = "ASTRALFATSO"; + break; + case 'NecromenaceA': + case 'NecromenaceB': + case 'NecromenaceC': + case 'NecromenaceD': + basetag = "NECROMENACE"; + break; + case 'The_Origin_Phase_1': + case 'The_Origin_Phase_2': + case 'The_Origin_Phase_3': + case 'The_Absolute_Origin_Phase_1': + case 'The_Absolute_Origin_Phase_2': + case 'The_Absolute_Origin_Phase_3': + basetag = "ORIGIN"; + break; + case 'SpectralAstralCacodemon': + basetag = "SAC"; + break; + case 'GrandDukeofHell': + basetag = "GDUKE"; + break; + } + if ( basetag == "" ) return a.GetTag(defstr); + String funtag = "FN_"..basetag.."_FUN"; + String lfuntag = StringTable.Localize(funtag,false); + if ( lfuntag != funtag ) return lfuntag; + String nfuntag = "FN_"..basetag.."_FUNN"; + String lnfuntag = StringTable.Localize(nfuntag,false); + if ( lnfuntag == nfuntag ) return a.GetTag(defstr); + ntags = lnfuntag.ToInt(); + return StringTable.Localize(String.Format("$FN_%s_FUN%d",basetag,Random[FunTags](1,ntags))); + } + + // used to "substitute" a monster class for another so killcount stats are merged + // e.g.: "stealth" monsters and their non-stealth counterparts, + // or "HereticImp" and "HereticImpLeader", which have the same exact tag, + // and would result in an odd "duplication" of monster names + static play Class MergeMonster( SWWMHandler hnd, Class a ) + { + // see if any services can resolve this first + foreach ( sv:hnd.mergemonstersv ) + { + if ( !sv ) continue; + String res = sv.GetString("MergeMonster",stringArg:a.GetClassName()); + if ( res == "" ) continue; + Class rescls = res; + return rescls; + } + // special boss tyrants in LoR final map + if ( (a == 'ID24TyrantBoss1') || (a == 'ID24TyrantBoss2') ) return 'ID24Tyrant'; + // stealth monsters, the worst thing ever invented + if ( a == 'StealthArachnotron' ) return 'Arachnotron'; + if ( a == 'StealthArchvile' ) return 'Archvile'; + if ( a == 'StealthBaron' ) return 'BaronOfHell'; + if ( a == 'StealthCacodemon' ) return 'Cacodemon'; + if ( a == 'StealthChaingunGuy' ) return 'ChaingunGuy'; + if ( a == 'StealthDemon' ) return 'Demon'; + if ( a == 'StealthHellKnight' ) return 'HellKnight'; + if ( a == 'StealthDoomImp' ) return 'DoomImp'; + if ( a == 'StealthFatso' ) return 'Fatso'; + if ( a == 'StealthRevenant' ) return 'Revenant'; + if ( a == 'StealthShotgunGuy' ) return 'ShotgunGuy'; + if ( a == 'StealthZombieMan' ) return 'ZombieMan'; + // eviternity 2 hackery + if ( a.GetClassName() == 'LostSoulEvit2' ) return 'LostSoul'; + if ( a.GetClassName() == 'LostSoulCount' ) return 'LostSoul'; + if ( a.GetClassName() == 'CyberdemonEvit2' ) return 'Cyberdemon'; + if ( a.GetClassName() == 'CyberdemonMAP24' ) return 'Cyberdemon'; + // heretic monsters + if ( a == 'Sorcerer2' ) return 'Sorcerer1'; + if ( a == 'HereticImpLeader' ) return 'HereticImp'; + if ( a == 'KnightGhost' ) return 'Knight'; + if ( a == 'MummyGhost' ) return 'Mummy'; + if ( a == 'MummyLeaderGhost' ) return 'MummyLeader'; + // hexen monsters + if ( a == 'CentaurMash' ) return 'Centaur'; + if ( a == 'Demon1Mash' ) return 'Demon1'; + if ( a == 'Demon2' ) return 'Demon1'; + if ( a == 'Demon2Mash' ) return 'Demon1'; + if ( a == 'EttinMash' ) return 'Ettin'; + if ( a == 'SerpentLeader' ) return 'Serpent'; + if ( a == 'WraithBuried' ) return 'Wraith'; + return a; + } + + // because gendered languages + static bool SellFemaleItem( Inventory i, String loc = "SWWM_SELLEXTRA_FEM" ) + { + // no gendered string alt + if ( StringTable.Localize("$"..loc) == loc ) + return false; + if ( i is 'DeepImpact' ) return true; + if ( i is 'ExplodiumGun' ) return true; + if ( i is 'Wallbuster' ) return true; + if ( i is 'HeavyMahSheenGun' ) return true; + if ( i is 'Quadravol' ) return true; + if ( i is 'Sparkster' ) return true; + if ( i is 'CandyGun' ) return true; + //if ( i is 'RayKhom' ) return true; + //if ( i is 'RafanKos' ) return true; + if ( i is 'HealthNuggetItem' ) return true; + if ( i is 'ArmorNuggetItem' ) return true; + if ( i is 'WarArmor' ) return true; + if ( i is 'FuckingInvinciball' ) return true; + if ( i is 'SWWMLamp' ) return true; + if ( i is 'AngerySigil' ) return true; + return false; + } + + // returns the plural tag (if available) + static string GetAmmoTag( Inventory i ) + { + if ( i is 'MagAmmo' ) return StringTable.Localize("$T_"..MagAmmo(i).PickupTag.."S"); + if ( i is 'SWWMAmmo' ) return StringTable.Localize("$T_"..SWWMAmmo(i).PickupTag.."S"); + return i.GetTag(); + } + // because of zscript weirdness with GetDefaultByType + static string GetAmmoTagClass( Class i ) + { + if ( i is 'MagAmmo' ) return StringTable.Localize("$T_"..GetDefaultByType((Class)(i)).PickupTag.."S"); + if ( i is 'SWWMAmmo' ) return StringTable.Localize("$T_"..GetDefaultByType((Class)(i)).PickupTag.."S"); + return GetDefaultByType(i).GetTag(); + } + + // IsZeroDamage() can lead to some false negatives, we have to account for that + static play bool ValidProjectile( Actor a ) + { + if ( !a.bMISSILE ) return false; + if ( a is 'AirBullet' ) return true; + if ( a is 'ExplodiumMagProj' ) return true; + if ( a is 'TheBall' ) return true; + if ( a is 'EvisceratorChunk' ) return true; + if ( a is 'EvisceratorProj' ) return true; + if ( a is 'HellblazerMissile' ) return true; + if ( a is 'QuadProj' ) return true; + if ( a is 'BigBiospark' ) return true; + if ( a is 'BiosparkBall' ) return true; + if ( a is 'BiosparkCore' ) return true; + if ( a is 'CandyGunProj' ) return true; + if ( a is 'CandyMagProj' ) return true; + if ( a is 'MisterGrenade' ) return true; + if ( a is 'LoveHeart' ) return true; + if ( !a.IsZeroDamage() ) return true; + return false; + } + + // Is this a beam projectile? (speed == length) + static bool IsBeamProj( Actor a ) + { + if ( a is 'SaltBeam' ) return true; + if ( a is 'BiosparkBeam' ) return true; + if ( a is 'BiosparkArc' ) return true; + if ( a is 'CandyBeam' ) return true; + if ( a is 'YnykronBeam' ) return true; + if ( a is 'YnykronLightningArc' ) return true; + if ( a is 'YnykronAltBeam' ) return true; + if ( a is 'MykradvoTendril' ) return true; + if ( a is 'MisterRailBeam' ) return true; + return false; + } + // is this a YBeam type? (real pitch is pitch-90) + static bool IsYBeam( Actor a ) + { + if ( a is 'MisterRailBeam' ) return true; + return false; + } + + static bool IdentifyingDog( Actor a ) + { + if ( a is 'MBFHelperDog' ) return true; + if ( a is 'SWWMDog' ) return true; + if ( a.GetClassName() == 'GermanDog' ) return true; // brote dote + if ( a.GetClassName() == '64HellHound' ) return true; // brote dote 64 + if ( a.GetClassName() == 'AbyssDemon2' ) return true; // CH + if ( a.GetClassName() == 'WHOLETTHEDOGSOUT' ) return true; // CH + // more dogs will be added as found + // because all dogs must be pet + return false; + } + + static bool IdentifyingCaco( Actor a ) + { + if ( a is 'DeadCacodemon' ) return false; + if ( a is 'Cacodemon' ) return true; + if ( a.Species == 'RLCacodemon' ) return true; // DRLA + if ( a.Species == 'Caco' ) return true; // CH and others + if ( a.Species == 'Cacodemon' ) return true; // Beautiful Doom + if ( a.GetClassName() == 'AstralCaco' ) return true; // Eviternity + if ( a.GetParentClass().GetClassName() == 'LEG_BaseCaco' ) return true; // LEGION + return false; + } + + // Друг + static bool IdentifyingDrug( Actor a ) + { + if ( a is 'Beast' ) return true; + return false; + } + + static bool IdentifyingDoubleBoi( Actor a ) + { + if ( a is 'Ettin' ) return true; + return false; + } + + static bool IsVipItem( Actor target ) + { + if ( (target is 'Chancebox') && (target.CurState==target.SpawnState) ) + return true; + if ( target is 'SWWMCollectible' ) + return true; + if ( (target is 'Ynykron')/* || (target is 'RafanKos')*/ ) + return true; + if ( (target is 'GoldShell') || (target is 'YnykronAmmo')/* || (target is 'UltimatePod') || (target is 'UltimateAmmo')*/ ) + return true; + if ( (target is 'Mykradvo') || (target is 'AngerySigil') || (target is 'DivineSprite') ) + return true; + if ( target is 'PuzzleItem' ) + return true; + return false; + } + + // used by the store + static bool IsVipItemClass( Class target ) + { + if ( (target is 'Ynykron')/* || (target is 'RafanKos')*/ ) + return true; + if ( (target is 'GoldShell') || (target is 'YnykronAmmo')/* || (target is 'UltimatePod') || (target is 'UltimateAmmo')*/ ) + return true; + if ( (target is 'Mykradvo') || (target is 'AngerySigil') || (target is 'DivineSprite') ) + return true; + return false; + } + + static bool IsScoreItem( Actor target ) + { + if ( target is 'Key' ) + return true; + if ( target is 'HammerspaceEmbiggener' ) + return true; + return target.bCOUNTITEM; + } + + // return the highest parent class in hierarchy before a specific "highest class" + // useful to check stuff such as monster subtypes and the like + static Class GetParentClassBefore( Class baseclass, Class highestclass ) + { + Class step = baseclass; + while ( (step.GetParentClass() != highestclass) && step.GetParentClass() ) + step = step.GetParentClass(); + return step; + } +} diff --git a/zscript/utility/swwm_utility_item.zsc b/zscript/utility/swwm_utility_item.zsc new file mode 100644 index 000000000..a082ab9c9 --- /dev/null +++ b/zscript/utility/swwm_utility_item.zsc @@ -0,0 +1,335 @@ +// inventory-related functions +extend Class SWWMUtility +{ + // full reset of inventory (excluding collectibles, and optionally resetting the score) + static play void WipeInventory( Actor mo, bool resetscore = false, bool allplayers = false ) + { + if ( allplayers ) + { + for ( int i=0; i itm, bool multi = false ) + { + int np = 0; + for ( int i=0; i0); + } + + // checks if instances of a certain item exist + // skipme: optionally, ignore checking for one specific instance + // (useful to check if we're the only copy of an item) + // mapstart: this function is being called during map load, so we + // should also check STAT_TRAVELLING inventory + // worldonly: only checks for items that are placed in the world + // ownedonly: only checks for items that are owned by players + // (note that this is mutually exclusive with worldonly) + static bool ItemExists( Class itm, Inventory skipme = null, bool mapstart = false, bool worldonly = false, bool ownedonly = false ) + { + let ti = ThinkerIterator.Create(itm); + Inventory i; + while ( i = Inventory(ti.Next()) ) + { + if ( i == skipme ) continue; + if ( worldonly && i.Owner ) continue; + if ( ownedonly && (!i.Owner || !i.Owner.player) ) continue; + return true; + } + if ( worldonly || !mapstart ) return false; + ti = ThinkerIterator.Create(itm,Thinker.STAT_TRAVELLING); + while ( i = Inventory(ti.Next()) ) + { + if ( i == skipme ) continue; + if ( ownedonly && (!i.Owner || !i.Owner.player) ) continue; + return true; + } + return false; + } + + // multi-weapon spawn stuff + + static private Class PickPair( Class a, Class b ) + { + if ( !ItemExists(a,mapstart:true) ) return a; + if ( !ItemExists(b,mapstart:true) ) return b; + return Random[Replacements](0,1)?a:b; + } + + // melee weapon + extra slot 2 guns + static Class PickSWWMSlot1() + { + // [GROSS HACK] default to a hammer if there are no players + // (this genuinely can happen, if player starts were placed AFTER the item) + int np = 0; + for ( int i=0; i PickSWWMSlot2() + { + return 'ExplodiumGun'; + // as they are dual-wieldable, there should be a 50% chance for spares to also appear if needed + /*if ( Random[Replacements](0,1) && !CheckNeedsItem('ExplodiumGun') && CheckNeedsItem('ExplodiumGun',true) ) + return 'ExplodiumGun'; + if ( Random[Replacements](0,1) && !CheckNeedsItem('PlasmaBlast') && CheckNeedsItem('PlasmaBlast',true) ) + return 'PlasmaBlast'; + return PickPair('ExplodiumGun','PlasmaBlast');*/ + } + // shotgun spawn + static Class PickSWWMSlot3() + { + return 'Spreadgun'; + //return PickPair('Spreadgun','PuntzerBeta'); + } + // super shotgun spawn + static Class PickSWWMSlot4() + { + return 'Wallbuster'; + //return PickPair('Wallbuster','PuntzerGamma'); + } + // chaingun spawn + static Class PickSWWMSlot5() + { + return PickPair('Eviscerator','HeavyMahSheenGun'); + } + // rocket launcher spawn + static Class PickSWWMSlot6() + { + return PickPair('Hellblazer','Quadravol'); + } + // first plasma rifle spawn + static Class PickSWWMSlot7() + { + return 'Sparkster'; + //return PickPair('Sparkster','ModernSparkster'); + } + // second plasma rifle spawn + static Class PickSWWMSlot8() + { + return 'SilverBullet'; + //return PickPair('SilverBullet','RayKhom'); + } + // first bfg spawn + static Class PickSWWMSlot9() + { + // 25% chance to still drop another candy gun if it's not at max capacity + if ( !Random[Replacements](0,3) && ItemExists('CandyGun') && CheckNeedsItem('CandyGunSpares',true) ) + return 'CandyGun'; + return PickPair('CandyGun','MisterRifle'); + } + // second bfg spawn (each weapon can only exist once) + static Class PickSWWMSlot0( bool fallback = true ) + { + if ( ItemExists('Ynykron',mapstart:true) ) + { + //if ( ItemExists('RafanKos',mapstart:true) ) + return fallback?PickSWWMSlot9():null; + //return 'RafanKos'; + } + //if ( ItemExists('RafanKos',mapstart:true) ) + return 'Ynykron'; + //return Random[Replacements](0,1)?'Ynykron':'RafanKos'; + } + // either plasma rifle spawn + static Class PickDoomSlot6() + { + bool hasslot7 = (!CheckNeedsItem('Sparkster')/*||!CheckNeedsItem('ModernSparkster')*/); + bool hasslot8 = (!CheckNeedsItem('SilverBullet')/*||!CheckNeedsItem('RayKhom')*/); + // if the player already has a slot 7 weapon... + if ( hasslot7 ) + { + // ... and also has a slot 8 weapon, 33% chance of a slot 8 spawn + // otherwise, guaranteed slot 8 spawn + if ( hasslot8 && Random[Replacements](0,2) ) return PickSWWMSlot7(); + else return PickSWWMSlot8(); + } + // otherwise, always spawn a slot 7 weapon first + return PickSWWMSlot7(); + } + // either bfg spawn + static Class PickDoomSlot7() + { + bool hasslot9 = (!CheckNeedsItem('CandyGun')||!CheckNeedsItem('MisterRifle')); + bool hasslot0 = (!CheckNeedsItem('Ynykron')/*||!CheckNeedsItem('RafanKos')*/); + let rep = PickSWWMSlot0(false); + // if the player already has a slot 9 weapon (and a slot 0 weapon can still spawn)... + if ( hasslot9 && rep ) + { + // ... and also has a slot 0 weapon already, 33% chance of a slot 0 spawn + // otherwise, guaranteed slot 0 spawn + if ( hasslot0 && Random[Replacements](0,2) ) return PickSWWMSlot9(); + else return rep; + } + // otherwise, always spawn a slot 9 weapon first + return PickSWWMSlot9(); + } + // either shotgun spawn (also used for Heretic) + static Class PickDoomSlot3() + { + // always slot 3 after map start, prevents shotgun guys from dropping wallbusters, which is weird af + if ( level.maptime ) return PickSWWMSlot3(); + bool hasslot3 = (!CheckNeedsItem('Spreadgun')/*||!CheckNeedsItem('PuntzerBeta')*/); + bool hasslot4 = (!CheckNeedsItem('Wallbuster')/*||!CheckNeedsItem('PuntzerGamma')*/); + // if the player already has a slot 3 weapon... + if ( hasslot3 ) + { + // ... and also has a slot 4 weapon, 33% chance of a slot 4 spawn + // otherwise, guaranteed slot 4 spawn + if ( hasslot4 && Random[Replacements](0,2) ) return PickSWWMSlot3(); + return PickSWWMSlot4(); + } + // otherwise, always spawn a slot 3 weapon first + return PickSWWMSlot3(); + } +} diff --git a/zscript/utility/swwm_utility_map.zsc b/zscript/utility/swwm_utility_map.zsc new file mode 100644 index 000000000..dd50d49c1 --- /dev/null +++ b/zscript/utility/swwm_utility_map.zsc @@ -0,0 +1,724 @@ +// map interaction/info functions +enum EExitType +{ + ET_Normal, + ET_Secret, + ET_EndGame, + ET_NewMap, +}; + +extend Class SWWMUtility +{ + // Thanks to ZZYZX and Nash + static play void SetToSlopeSpecific( Actor a, double dang, readonly plane, bool flipnorm ) + { + Vector3 fnormal; + if ( flipnorm ) fnormal = -plane.Normal; + else fnormal = plane.Normal; + vector2 fnormalp1 = ((fnormal.x != 0) || (fnormal.y != 0))?(fnormal.x,fnormal.y).Unit():(0,0); + vector2 fnormalp2 = ((fnormal.x,fnormal.y).Length(),fnormal.z); + double fang = atan2(fnormalp1.y,fnormalp1.x); // floor angle (not pitch!) + double fpitch = atan2(fnormalp2.x,fnormalp2.y); // floor pitch + double ddiff1 = sin(fang-dang); + double ddiff2 = cos(fang-dang); + a.pitch = fpitch*ddiff2; + a.roll = -fpitch*ddiff1; + a.angle = dang; + } + + static play void SetToSlope( Actor a, double dang, bool ceil = false ) + { + Sector sect; + SecPlane plane; + Vector3 fnormal; + bool flipnorm; + if ( ceil ) + { + sect = a.CeilingSector; + plane = sect.ceilingplane; + flipnorm = true; + fnormal = -sect.ceilingplane.Normal; + } + else + { + sect = a.FloorSector; + plane = sect.floorplane; + flipnorm = false; + fnormal = sect.floorplane.Normal; + } + // find closest 3d floor for its normal + F3DFloor ff; + for ( int i=0; i= 10) && (l.special <= 13)) + || (!part && (l.special >= 20) && (l.special <= 25)) + || (!part && (l.special == 28)) + || ((l.special >= 29) && (l.special <= 30)) + || (!part && (l.special >= 35) && (l.special <= 37)) + || (part && (l.special >= 40) && (l.special <= 45)) + || (!part && (l.special == 46)) + || (part && (l.special == 47)) + || (!part && (l.special >= 60) && (l.special <= 68)) + || (part && (l.special == 69)) + || ((l.special >= 94) && (l.special <= 96)) + || (part && (l.special == 97)) + || (!part && (l.special == 99)) + || (part && (l.special == 104)) + || (part && (l.special >= 105) && (l.special <= 106)) + || (part && (l.special >= 168) && (l.special <= 169)) + || (!part && (l.special == 172)) + || (part && (l.special >= 192) && (l.special <= 199)) + || (!part && (l.special == 200)) + || (part && (l.special >= 201) && (l.special <= 202)) + || (!part && (l.special == 203)) + || (part && (l.special == 205)) + || (!part && (l.special >= 206) && (l.special <= 207)) + || (!part && (l.special == 228)) + || (!part && (l.special >= 230) && (l.special <= 231)) + || (!part && (l.special >= 238) && (l.special <= 242)) + || ((l.special >= 245) && (l.special <= 247)) + || (part && (l.special == 249)) + || (!part && (l.special >= 250) && (l.special <= 251)) + || (part && (l.special >= 251) && (l.special <= 255)) + || (!part && (l.special >= 256) && (l.special <= 261)) + || (part && (l.special >= 262) && (l.special <= 269)) + || (!part && (l.special == 275)) + || (part && (l.special == 276)) + || (!part && (l.special == 279)) + || (part && (l.special == 280)) ) + { + let si = level.CreateSectorTagIterator(l.Args[0],l); + int idx; + while ( (idx = si.Next()) != -1 ) + if ( level.Sectors[idx] == s ) + return true; + } + } + ti = ThinkerIterator.Create('Actor'); + Actor a; + while ( a = Actor(ti.Next()) ) + { + if ( !a.special || !a.Args[0] ) continue; + if ( (part && (a.special >= 10) && (a.special <= 13)) + || (!part && (a.special >= 20) && (a.special <= 25)) + || (!part && (a.special == 28)) + || ((a.special >= 29) && (a.special <= 30)) + || (!part && (a.special >= 35) && (a.special <= 37)) + || (part && (a.special >= 40) && (a.special <= 45)) + || (!part && (a.special == 46)) + || (part && (a.special == 47)) + || (!part && (a.special >= 60) && (a.special <= 68)) + || (part && (a.special == 69)) + || ((a.special >= 94) && (a.special <= 96)) + || (part && (a.special == 97)) + || (!part && (a.special == 99)) + || (part && (a.special == 104)) + || (part && (a.special >= 105) && (a.special <= 106)) + || (part && (a.special >= 168) && (a.special <= 169)) + || (!part && (a.special == 172)) + || (part && (a.special >= 192) && (a.special <= 199)) + || (!part && (a.special == 200)) + || (part && (a.special >= 201) && (a.special <= 202)) + || (!part && (a.special == 203)) + || (part && (a.special == 205)) + || (!part && (a.special >= 206) && (a.special <= 207)) + || (!part && (a.special == 228)) + || (!part && (a.special >= 230) && (a.special <= 231)) + || (!part && (a.special >= 238) && (a.special <= 242)) + || ((a.special >= 245) && (a.special <= 247)) + || (part && (a.special == 249)) + || (!part && (a.special >= 250) && (a.special <= 251)) + || (part && (a.special >= 251) && (a.special <= 255)) + || (!part && (a.special >= 256) && (a.special <= 261)) + || (part && (a.special >= 262) && (a.special <= 269)) + || (!part && (a.special == 275)) + || (part && (a.special == 276)) + || (!part && (a.special == 279)) + || (part && (a.special == 280)) ) + { + let si = level.CreateSectorTagIterator(a.Args[0]); + int idx; + while ( (idx = si.Next()) != -1 ) + if ( level.Sectors[idx] == s ) + return true; + } + } + return false; + } + + // the stupidest thing ever, it's called BlockingLine but it's not always blocking us + // note: MovementBlockingLine as an alternative seems prone to issues at the moment, needs further investigation + static bool BlockingLineIsBlocking( Actor a, int blockflags = Line.ML_BLOCKEVERYTHING, Line testline = null ) + { + Line l = testline?testline:a.BlockingLine; + // not blocked + if ( !l ) return false; + // one-sided always blocking + if ( !l.sidedef[1] ) return true; + // same for block everything lines + if ( l.flags&blockflags ) return true; + // lower and upper bounds hit? + double afloor = l.frontsector.floorplane.ZAtPoint(a.pos.xy), + bfloor = l.backsector.floorplane.ZAtPoint(a.pos.xy), + aceil = l.frontsector.ceilingplane.ZAtPoint(a.pos.xy), + bceil = l.backsector.ceilingplane.ZAtPoint(a.pos.xy); + if ( (min(a.pos.z+a.height,a.ceilingz) > min(aceil,bceil)) || (max(a.pos.z,a.floorz) < max(afloor,bfloor)) ) + return true; + // solid 3d floor bounds hit? + for ( int i=0; i ceil) && (a.pos.z < floor) ) + return true; + } + for ( int i=0; i ceil) && (a.pos.z < floor) ) + return true; + } + return false; + } + + static Vector3 UseLinePos( Line l ) + { + Vector3 al, ah, bl, bh; + if ( !l.sidedef[1] ) + { + // just the whole line + al = (l.v1.p,l.frontsector.floorplane.ZatPoint(l.v1.p)); + ah = (l.v1.p,l.frontsector.ceilingplane.ZatPoint(l.v1.p)); + bl = (l.v2.p,l.frontsector.floorplane.ZatPoint(l.v2.p)); + bh = (l.v2.p,l.frontsector.ceilingplane.ZatPoint(l.v2.p)); + return (al+ah+bl+bh)*.25; + } + SecPlane highestfloor, lowestfloor, lowestceiling, highestceiling; + if ( (l.frontsector.floorplane.ZatPoint(l.v1.p) > l.backsector.floorplane.ZatPoint(l.v1.p)) + && (l.frontsector.floorplane.ZatPoint(l.v2.p) > l.backsector.floorplane.ZatPoint(l.v2.p)) ) + { + highestfloor = l.frontsector.floorplane; + lowestfloor = l.backsector.floorplane; + } + else + { + highestfloor = l.backsector.floorplane; + lowestfloor = l.frontsector.floorplane; + } + if ( (l.frontsector.ceilingplane.ZatPoint(l.v1.p) < l.backsector.ceilingplane.ZatPoint(l.v1.p)) + && (l.frontsector.ceilingplane.ZatPoint(l.v2.p) < l.backsector.ceilingplane.ZatPoint(l.v2.p)) ) + { + lowestceiling = l.frontsector.ceilingplane; + highestceiling = l.backsector.ceilingplane; + } + else + { + lowestceiling = l.backsector.ceilingplane; + highestceiling = l.frontsector.ceilingplane; + } + // try to guess what the part that triggers this is + if ( l.Activation&SPAC_Cross ) + { + // pick the "intersection" + al = (l.v1.p,highestfloor.ZatPoint(l.v1.p)); + ah = (l.v1.p,lowestceiling.ZatPoint(l.v1.p)); + bl = (l.v2.p,highestfloor.ZatPoint(l.v2.p)); + bh = (l.v2.p,lowestceiling.ZatPoint(l.v2.p)); + return (al+ah+bl+bh)*.25; + } + // check if lower part available + al = (l.v1.p,lowestfloor.ZatPoint(l.v1.p)); + ah = (l.v1.p,highestfloor.ZatPoint(l.v1.p)); + bl = (l.v2.p,lowestfloor.ZatPoint(l.v2.p)); + bh = (l.v2.p,highestfloor.ZatPoint(l.v2.p)); + if ( ((al-ah).length() > 0) && ((bl-bh).length() > 0) ) + return (al+ah+bl+bh)*.25; + // check if upper part available + al = (l.v1.p,lowestceiling.ZatPoint(l.v1.p)); + ah = (l.v1.p,highestceiling.ZatPoint(l.v1.p)); + bl = (l.v2.p,lowestceiling.ZatPoint(l.v2.p)); + bh = (l.v2.p,highestceiling.ZatPoint(l.v2.p)); + if ( ((al-ah).length() > 0) && ((bl-bh).length() > 0) ) + return (al+ah+bl+bh)*.25; + // check for 3d floors + bool floorfound = false; + Vector3 fal, fah, fbl, fbh; + for ( int i=0; i ah.z) && (fbh.z > bh.z) && (fal.z > al.z) && (fbl.z > bl.z) ) continue; + al = fal; + ah = fah; + bl = fbl; + bh = fbh; + floorfound = true; + } + if ( floorfound ) return (al+ah+bl+bh)*.25; + for ( int i=0; i ah.z) && (fbh.z > bh.z) && (fal.z > al.z) && (fbl.z > bl.z) ) continue; + al = fal; + ah = fah; + bl = fbl; + bh = fbh; + floorfound = true; + } + if ( floorfound ) return (al+ah+bl+bh)*.25; + // check for midtex + if ( !l.sidedef[0].GetTexture(1).IsNull() ) + { + let [valid,low,high] = l.GetMidTexturePosition(0); + if ( valid ) + { + al = (l.v1.p,low); + bl = (l.v2.p,low); + ah = (l.v1.p,high); + bh = (l.v2.p,high); + return (al+ah+bl+bh)*.25; + } + } + if ( !l.sidedef[1].GetTexture(1).IsNull() ) + { + let [valid,low,high] = l.GetMidTexturePosition(1); + if ( valid ) + { + al = (l.v1.p,low); + bl = (l.v2.p,low); + ah = (l.v1.p,high); + bh = (l.v2.p,high); + return (al+ah+bl+bh)*.25; + } + } + // just use the intersection + al = (l.v1.p,highestfloor.ZatPoint(l.v1.p)); + ah = (l.v1.p,lowestceiling.ZatPoint(l.v1.p)); + bl = (l.v2.p,highestfloor.ZatPoint(l.v2.p)); + bh = (l.v2.p,lowestceiling.ZatPoint(l.v2.p)); + return (al+ah+bl+bh)*.25; + } + + // gets the hit normal vector for projectiles and hitscan + static Vector3 GetActorHitNormal( Actor a ) + { + Vector3 HitNormal = (0,0,0); + F3DFloor ff; + if ( a.BlockingMobj ) + { + let mo = a.BlockingMobj; + Vector3 diff = level.Vec3Diff(mo.pos,a.pos); + if ( diff.x >= mo.radius ) HitNormal += (1,0,0); + else if ( diff.x <= -mo.radius ) HitNormal += (-1,0,0); + if ( diff.y >= mo.radius ) HitNormal += (0,1,0); + else if ( diff.y <= -mo.radius ) HitNormal += (0,-1,0); + if ( diff.z >= mo.height ) HitNormal += (0,0,1); + else if ( diff.z <= 0. ) HitNormal += (0,0,-1); + double len = HitNormal.length(); + if ( len < double.epsilon ) HitNormal = Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); + else HitNormal /= len; + } + else if ( a.BlockingFloor ) + { + // find closest 3d floor for its normal + for ( int i=0; i 0. ) HitNormal = -a.vel/len; + } + return HitNormal; + } + static Vector3 GetActorBounceHitNormal( Actor a, Actor bounceMobj, Line bounceLine, readonly bouncePlane, bool is3DFloor ) + { + Vector3 HitNormal = (0,0,0); + if ( bounceMobj ) + { + Vector3 diff = level.Vec3Diff(bounceMobj.pos,a.pos); + if ( diff.x >= bounceMobj.radius ) HitNormal += (1,0,0); + else if ( diff.x <= -bounceMobj.radius ) HitNormal += (-1,0,0); + if ( diff.y >= bounceMobj.radius ) HitNormal += (0,1,0); + else if ( diff.y <= -bounceMobj.radius ) HitNormal += (0,-1,0); + if ( diff.z >= bounceMobj.height ) HitNormal += (0,0,1); + else if ( diff.z <= 0. ) HitNormal += (0,0,-1); + double len = HitNormal.length(); + if ( len < double.epsilon ) HitNormal = Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); + else HitNormal /= len; + } + else if ( bouncePlane ) + { + if ( is3DFloor ) HitNormal = -bouncePlane.Normal; + else HitNormal = bouncePlane.Normal; + } + else if ( bounceLine ) + { + HitNormal = (-bounceLine.delta.y,bounceLine.delta.x,0).unit(); + if ( !Level.PointOnLineSide(a.pos.xy,bounceLine) ) + HitNormal *= -1; + } + return HitNormal; + } + static Vector3 GetLineTraceHitNormal( FLineTraceData d ) + { + Vector3 HitNormal = (0,0,0); + if ( d.HitType == TRACE_HitActor ) + { + let mo = d.HitActor; + Vector3 diff = level.Vec3Diff(mo.pos,d.HitLocation); + if ( diff.x >= mo.radius ) HitNormal += (1,0,0); + else if ( diff.x <= -mo.radius ) HitNormal += (-1,0,0); + if ( diff.y >= mo.radius ) HitNormal += (0,1,0); + else if ( diff.y <= -mo.radius ) HitNormal += (0,-1,0); + if ( diff.z >= mo.height ) HitNormal += (0,0,1); + else if ( diff.z <= 0. ) HitNormal += (0,0,-1); + double len = HitNormal.length(); + if ( len < double.epsilon ) HitNormal = Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); + else HitNormal /= len; + } + else if ( d.HitType == TRACE_HitFloor ) + { + if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; + else HitNormal = d.HitSector.floorplane.Normal; + } + else if ( d.HitType == TRACE_HitCeiling ) + { + if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; + else HitNormal = d.HitSector.ceilingplane.Normal; + } + else if ( d.HitType == TRACE_HitWall ) + { + HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); + if ( !d.LineSide ) HitNormal *= -1; + } + else HitNormal = -d.HitDir; + return HitNormal; + } + static Vector3 GetLineTracerHitNormal( TraceResults r ) + { + Vector3 HitNormal = (0,0,0); + if ( r.HitType == TRACE_HitActor ) + { + let mo = r.HitActor; + Vector3 diff = level.Vec3Diff(mo.pos,r.HitPos); + if ( diff.x >= mo.radius ) HitNormal += (1,0,0); + else if ( diff.x <= -mo.radius ) HitNormal += (-1,0,0); + if ( diff.y >= mo.radius ) HitNormal += (0,1,0); + else if ( diff.y <= -mo.radius ) HitNormal += (0,-1,0); + if ( diff.z >= mo.height ) HitNormal += (0,0,1); + else if ( diff.z <= 0. ) HitNormal += (0,0,-1); + double len = HitNormal.length(); + if ( len < double.epsilon ) HitNormal = Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); + else HitNormal /= len; + } + else if ( r.HitType == TRACE_HitFloor ) + { + if ( r.ffloor ) HitNormal = -r.ffloor.top.Normal; + else HitNormal = r.HitSector.floorplane.Normal; + } + else if ( r.HitType == TRACE_HitCeiling ) + { + if ( r.ffloor ) HitNormal = -r.ffloor.bottom.Normal; + else HitNormal = r.HitSector.ceilingplane.Normal; + } + else if ( r.HitType == TRACE_HitWall ) + { + HitNormal = (-r.HitLine.delta.y,r.HitLine.delta.x,0).unit(); + if ( !r.Side ) HitNormal *= -1; + } + else HitNormal = -r.HitVector; + return HitNormal; + } + + static bool PointInWater( Vector3 p ) + { + Sector s = level.PointInSector(p.xy); + if ( s.moreflags&Sector.SECMF_UNDERWATER ) // check underwater sector + return true; + else if ( s.heightsec && (s.heightsec.moreflags&Sector.SECMF_UNDERWATERMASK) ) // check height transfer + { + let hsec = s.heightsec; + double fh = hsec.floorplane.ZAtPoint(p.xy); + if ( p.z <= fh ) + return true; + if ( !(hsec.moreflags&Sector.SECMF_FAKEFLOORONLY) && (p.z > hsec.ceilingplane.ZAtPoint(p.xy)) ) + return true; + } + else // check 3D floors + { + for ( int i=0; i p.z) ) continue; + return true; + } + } + return false; + } + + static bool, TextureID DefaceTexture( TextureID checkme ) + { + String tn = TexMan.GetName(checkme); + // special case: alt texture names in Doom 2 In Spain Only + if ( (tn ~== "MARBFAC2") || (tn ~== "SP_MAR01") ) + return true, TexMan.CheckForTexture("defaced_MARBFAC2"); + if ( (tn ~== "MARBFAC3") || (tn ~== "SP_MAR02")) + return true, TexMan.CheckForTexture("defaced_MARBFAC3"); + if ( (tn ~== "MARBFAC4") || (tn ~== "SP_MAR03") ) + return true, TexMan.CheckForTexture("defaced_MARBFAC4"); + if ( (tn ~== "MARBFACE") || (tn ~== "SP_MAR04") ) + return true, TexMan.CheckForTexture("defaced_MARBFACE"); + if ( (tn ~== "ZZWOLF2") ) + return true, TexMan.CheckForTexture("defaced_ZZWOLF2"); + if ( (tn ~== "ZZWOLF3") ) + return true, TexMan.CheckForTexture("defaced_ZZWOLF3"); + if ( (tn ~== "ZZWOLF4") ) + return true, TexMan.CheckForTexture("defaced_ZZWOLF4"); + if ( (tn ~== "ZZWOLF6") ) + return true, TexMan.CheckForTexture("defaced_ZZWOLF6"); + if ( (tn ~== "ZZWOLF7") ) + return true, TexMan.CheckForTexture("defaced_ZZWOLF7"); + if ( (tn ~== "ZZWOLF12") ) + return true, TexMan.CheckForTexture("defaced_ZZWOLF12"); + if ( (tn ~== "ZZWOLF13") ) + return true, TexMan.CheckForTexture("defaced_ZZWOLF13"); + return false, checkme; + } + + // iterate through polyobjects and see if this line is part of one (returning which, if any) + static bool IsPolyLine( Line l, swwm_PolyobjectHandle &o ) + { + let pi = swwm_PolyobjectIterator.Create(); + swwm_PolyobjectHandle p; + while ( p = pi.Next() ) + { + if ( p.Lines.Find(l) >= p.Lines.Size() ) continue; + o = p; + return true; + } + o = null; + return false; + } + + // checks if the specified world coordinate is inside the polyobject + // this check is very naive but it should handle most "normal" shapes + // (yeah, sorry if you somehow want to play this mod with lilith.pk3) + static bool PointInPolyobj( Vector2 p, swwm_PolyobjectHandle o ) + { + // first pass, find which vertex out of all lines is closest + Vertex v = o.StartLine.v1; + double dist = (v.p-p).length(); + foreach ( l:o.Lines ) + { + double dist2 = (l.v1.p-p).length(); + if ( dist2 < dist ) + { + v = l.v1; + dist = dist2; + } + dist2 = (l.v2.p-p).length(); + if ( dist2 < dist ) + { + v = l.v2; + dist = dist2; + } + } + // second pass, find which two lines share that vertex + // (in theory there should only be two) + Line a = null, b = null; + foreach ( l:o.Lines ) + { + if ( (l.v1 == v) || (l.v2 == v) ) + { + if ( !a ) a = l; + else if ( !b ) b = l; + else break; + } + } + // is the point behind both lines? + return (Level.PointOnLineSide(p,a) && Level.PointOnLineSide(p,b)); + } + + static bool SameSpecial( Line a, Line b ) + { + if ( a.special != b.special ) return false; + for ( int i=0; i<5; i++ ) + { + if ( a.args[i] != b.args[i] ) + return false; + } + return true; + } +} diff --git a/zscript/utility/swwm_utility_math.zsc b/zscript/utility/swwm_utility_math.zsc new file mode 100644 index 000000000..94300db82 --- /dev/null +++ b/zscript/utility/swwm_utility_math.zsc @@ -0,0 +1,482 @@ +// math stuff + +Struct SWWMProjectionData +{ + double tanfovx, tanfovy; + Vector3 viewpos, z, x, y; + int viewx, viewy, vieww, viewh; +} + +extend Class SWWMUtility +{ + // cache some data that requires trig and quat math + static void PrepareProjData( SWWMProjectionData &d, Vector3 viewpos, double angle, double pitch, double roll, double fov ) + { + // store for internal use + d.viewpos = viewpos; + // precalc vfov/hfov tangents + // (vfov in gzdoom has a small quirk to it) + double aspect = Screen.GetAspectRatio(); + double fovratio = (aspect>=1.3)?1.333333:aspect; + d.tanfovy = tan(clamp(fov,5,170)/2.)/fovratio; + d.tanfovx = d.tanfovy*aspect; + // precalc view-space axes + // (don't forget pixel stretch, very important) + Quat r = Quat.FromAngles(angle,pitch,roll); + d.z = r*(1.,0.,0.); + d.x = r*(0.,1.,0.); + d.y = r*(0.,0.,level.pixelstretch); + // precalc view origin and clip + int sblocks = CVar.FindCVar('screenblocks').GetInt(); + let [viewx, viewy, vieww, viewh] = Screen.GetViewWindow(); + int sh = Screen.GetHeight(); + int h = sh; + if ( sblocks < 10 ) h = (sblocks*sh/10)&~7; + int bottom = sh-(h+viewy-((h-viewh)/2)); + d.viewx = viewx; + d.viewy = sh-bottom-h; + d.vieww = vieww; + d.viewh = h; + } + + // simple projection without matrices, translated from old UnrealScript work + // bFast: quit early if point is behind screen, for cases where behind-view coords are not really needed + static Vector3 ProjectPoint( SWWMProjectionData d, Vector3 worldpos, bool bFast = true ) + { + Vector3 tdir = worldpos-d.viewpos; + // early bail, skip behind-view points + if ( bFast && (d.z dot tdir <= 0.) ) + return (0.,0.,0.); + double dist = tdir.length(); + // points are pretty much equal, skip projection + if ( dist <= double.epsilon ) + return (0.,0.,0.); + tdir /= dist; + Vector3 dir = d.z*(tdir dot d.z); + // I don't understand this math, but it works? + Vector3 xy = tdir-dir; + double dx = xy dot d.x; + double dy = xy dot d.y; + double dlen = dir.length(); + // guard against division by zero here? + if ( dlen <= double.epsilon ) + return (0.,0.,0.); + double tanx = dx/dlen; + double tany = dy/dlen; + return (1.-tanx/d.tanfovx,1.-tany/d.tanfovy,dir dot d.z); + } + + static Vector2 NDCToViewport( SWWMProjectionData d, Vector3 cpos ) + { + return (d.viewx+(cpos.x*.5*d.vieww),d.viewy+(cpos.y*.5*d.viewh)); + } + + // checks if a point is inside the viewport + static bool TestScreenBounds( SWWMProjectionData d, Vector2 vpos ) + { + return ((vpos.x == clamp(vpos.x,d.viewx,d.viewx+d.vieww)) + && (vpos.y == clamp(vpos.y,d.viewy,d.viewy+d.viewh))); + } + + // less code duplication + static void AdjustClean_1( double &x, double &y ) + { + x = (x-160)*CleanXFac_1+(Screen.GetWidth()*.5); + y = (y-100)*CleanYFac_1+(Screen.GetHeight()*.5); + } + static void AdjustClean_1x( double &x ) + { + x = (x-160)*CleanXFac_1+(Screen.GetWidth()*.5); + } + static void AdjustClean_1y( double &y ) + { + y = (y-100)*CleanYFac_1+(Screen.GetHeight()*.5); + } + + // Vector/Axis utility functions + static Vector3 Vec3FromAngles( double angle, double pitch ) + { + return (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + } + static Vector3 CircleOffset( Vector3 y, Vector3 z, double angle, double radius ) + { + return y*cos(angle)*radius+z*sin(angle)*radius; + } + static Vector3 ConeSpread( Vector3 x, Vector3 y, Vector3 z, double angle, double spread ) + { + return (x+y*cos(angle)*spread+z*sin(angle)*spread).unit(); + } + static Vector3 RotateVector3( Vector3 v, double angle ) + { + Vector2 v2d = Actor.RotateVector(v.xy,angle); + return (v2d.x,v2d.y,v.z); + } + static Vector3 AngleToVector3( double angle, double length = 1. ) + { + Vector2 v2d = Actor.AngleToVector(angle,length); + return (v2d.x,v2d.y,0); + } + + // new GetAxes + static Vector3, Vector3, Vector3 GetAxes( double angle, double pitch, double roll ) + { + Quat r = Quat.FromAngles(angle,pitch,roll); + return r*(1,0,0), r*(0,-1,0), r*(0,0,1); + } + + static double Normalize180( double angle ) + { + angle = ((angle%360.)+360.)%360.; + return (angle>180.)?(angle-360.):(angle); + } + + static double, double, double ToAngles( Quat q ) + { + double angle = 0., pitch = 0., roll = 0.; + double stest = q.z*q.x-q.w*q.y; + double angY = 2.*(q.w*q.z+q.x*q.y); + double angX = 1.-2.*(q.y*q.y+q.z*q.z); + if ( stest < -.4999995 ) + { + angle = atan2(angY,angX); + pitch = 90.; + roll = Normalize180(angle+(2.*atan2(q.x,q.w))); + } + else if ( stest > .4999995 ) + { + angle = atan2(angY,angX); + pitch = -90.; + roll = Normalize180(angle+(2.*atan2(q.x,q.w))); + } + else + { + angle = atan2(angY,angX); + pitch = -asin(2.*stest); + roll = atan2(2.*(q.w*q.x+q.y*q.z),1.-2.*(q.x*q.x+q.y*q.y)); + } + return angle, pitch, roll; + } + + // for aiming and shooting + static Vector3 GetPlayerViewDir( Actor player ) + { + Quat r = Quat.FromAngles(player.angle+player.viewangle,player.pitch+player.viewpitch,player.roll+player.viewroll); + return r*(1,0,0); + } + static play Vector3 GetPlayerAimDir( Actor player ) + { + FTranslatedLineTarget t; + double pitch = player.BulletSlope(t); + Quat r; + if ( !t.linetarget ) r = Quat.FromAngles(player.angle+player.viewangle,player.pitch+player.viewpitch,player.roll+player.viewroll); + else r = Quat.FromAngles(player.angle+player.viewangle,pitch,player.roll+player.viewroll); + return r*(1,0,0); + } + static Vector3, Vector3, Vector3 GetPlayerAxes( Actor player ) + { + Quat r = Quat.FromAngles(player.angle+player.viewangle,player.pitch+player.viewpitch,player.roll+player.viewroll); + return r*(1,0,0), r*(0,-1,0), r*(0,0,1); + } + static play Vector3, Vector3, Vector3 GetPlayerAxesAutoAimed( Actor player ) + { + FTranslatedLineTarget t; + double pitch = player.BulletSlope(t); + Quat r; + if ( !t.linetarget ) r = Quat.FromAngles(player.angle+player.viewangle,player.pitch+player.viewpitch,player.roll+player.viewroll); + else r = Quat.FromAngles(player.angle+player.viewangle,pitch,player.roll+player.viewroll); + return r*(1,0,0), r*(0,-1,0), r*(0,0,1); + } + static Vector3 GetPlayerEye( Actor player ) + { + if ( !player.viewpos ) + return player.Vec2OffsetZ(0,0,player.player.viewz); + if ( player.viewpos.flags&VPSF_ABSOLUTEPOS ) + return player.viewpos.offset; + Vector3 origin = player.Vec2OffsetZ(0,0,player.player.viewz); + if ( player.viewpos.flags&VPSF_ABSOLUTEOFFSET ) + return level.Vec3Offset(origin,player.viewpos.offset); + Quat r = Quat.FromAngles(player.angle,player.pitch,player.roll); // viewangles are not used + return level.Vec3Offset(origin,r*player.viewpos.offset); + } + static Vector3 GetFireOffset( Actor player, double x, double y, double z ) + { + Vector3 origin = GetPlayerEye(player); + Quat r = Quat.FromAngles(player.angle+player.viewangle,player.pitch+player.viewpitch,player.roll+player.viewroll); + return level.Vec3Offset(origin,r*(x,-y,z)); + } + + // thanks zscript + static double fract( double a ) + { + return a-floor(a); + } + + static double lerp( double a, double b, double theta ) + { + return a*(1.-theta)+b*theta; + } + static Vector3 LerpVector3( Vector3 a, Vector3 b, double theta ) + { + return a*(1.-theta)+b*theta; + } + static Vector2 LerpVector2( Vector2 a, Vector2 b, double theta ) + { + return a*(1.-theta)+b*theta; + } + static Color LerpColor( Color a, Color b, double theta ) + { + Color c = Color( + int(a.a*(1.-theta)+b.a*theta), + int(a.r*(1.-theta)+b.r*theta), + int(a.g*(1.-theta)+b.g*theta), + int(a.b*(1.-theta)+b.b*theta) + ); + return c; + } + + static double MapRange( double amin, double amax, double bmin, double bmax, double theta ) + { + return bmin+(theta-amin)*(bmax-bmin)/(amax-amin); + } + + // this can probably be simplified, but I'm lazy + static Vector3 HSVtoRGB( Vector3 hsv ) + { + Vector3 p; + p.x = abs(fract(hsv.x+1.)*6.-3.); + p.y = abs(fract(hsv.x+(2./3.))*6.-3.); + p.z = abs(fract(hsv.x+(1./3.))*6.-3.); + Vector3 p2; + p2.x = (1.-hsv.y)+clamp(p.x-1.,0.,1.)*hsv.y; + p2.y = (1.-hsv.y)+clamp(p.y-1.,0.,1.)*hsv.y; + p2.z = (1.-hsv.y)+clamp(p.z-1.,0.,1.)*hsv.y; + return p2*hsv.z; + } + + // "fast" exponentiation with integer exponents using squaring + static double IntPowF( double base, int exp ) + { + if ( exp < 0 ) return 1./IntPowF(base,-exp); + if ( exp == 0 ) return 1.; + double rslt = 1.; + while ( exp ) + { + if ( exp&1 ) rslt *= base; + exp >>= 1; + base *= base; + } + return rslt; + } + static int IntPow( int base, int exp ) + { + if ( exp < 0 ) return int(1./IntPow(base,-exp)); + if ( exp == 0 ) return 1; + int rslt = 1; + while ( exp ) + { + if ( exp&1 ) rslt *= base; + exp >>= 1; + base *= base; + } + return rslt; + } + + // pitch from one actor's eyes to another based on a specific fraction of its height + // meant for player view, Actor.PitchTo is recommended for more "general" situations + static double PitchTo( Actor a, Actor b, double hfact = 1. ) + { + if ( !a || !b ) return 0; + Vector3 thispos = a.player?a.Vec2OffsetZ(0,0,a.player.viewz):a.Vec3Offset(0,0,a.GetCameraHeight()-a.floorclip); + Vector3 otherpos = b.Vec3Offset(0,0,b.height*hfact); + Vector3 diff = level.Vec3Diff(thispos,otherpos); + return -atan2(diff.z,diff.xy.length()); + } + + // box intersection check, for collision detection + static bool BoxIntersect( Actor a, Actor b, Vector3 ofs = (0,0,0), int pad = 0 ) + { + Vector3 diff = level.Vec3Diff(level.Vec3Offset(a.pos,ofs),b.pos); + if ( (abs(diff.x) > (a.radius+b.radius+pad)) || (abs(diff.y) > (a.radius+b.radius+pad)) ) return false; + if ( (diff.z > a.height+pad) || (diff.z < -(b.height+pad)) ) return false; + return true; + } + + // extruded box intersection check, useful when checking things that might be hit along a path + static bool ExtrudeIntersect( Actor a, Actor b, Vector3 range, int steps, int pad = 0 ) + { + if ( steps <= 0 ) return BoxIntersect(a,b,pad:pad); + double step = 1./steps; + for ( double i=step; i<=1.; i+=step ) + { + if ( BoxIntersect(a,b,range*i,pad) ) + return true; + } + return false; + } + + // sphere intersection check, useful for proximity detection + static bool SphereIntersect( Actor a, Vector3 p, double radius ) + { + Vector3 ap = p+level.Vec3Diff(p,a.pos); // portal-relative actor position + Vector3 amin = ap+(-a.radius,-a.radius,0), + amax = ap+(a.radius,a.radius,a.height); + double distsq = 0.; + if ( p.x < amin.x ) distsq += (amin.x-p.x)*(amin.x-p.x); + if ( p.x > amax.x ) distsq += (p.x-amax.x)*(p.x-amax.x); + if ( p.y < amin.y ) distsq += (amin.y-p.y)*(amin.y-p.y); + if ( p.y > amax.y ) distsq += (p.y-amax.y)*(p.y-amax.y); + if ( p.z < amin.z ) distsq += (amin.z-p.z)*(amin.z-p.z); + if ( p.z > amax.z ) distsq += (p.z-amax.z)*(p.z-amax.z); + return (distsq <= (radius*radius)); + } + + // hitscan exit point calculation given actor, entry point and direction + static Vector3 TraceExit( Actor a, Vector3 p, Vector3 d ) + { + Vector3 ap = p+level.Vec3Diff(p,a.pos); // portal-relative actor position + Vector3 amin = ap+(-a.radius,-a.radius,0), + amax = ap+(a.radius,a.radius,a.height); + Vector3 tmax, div = (1./d.x,1./d.y,1./d.z); + if ( div.x < 0 ) tmax.x = (amin.x-p.x)*div.x; + else tmax.x = (amax.x-p.x)*div.x; + if ( div.y < 0 ) tmax.y = (amin.y-p.y)*div.y; + else tmax.y = (amax.y-p.y)*div.y; + if ( div.z < 0 ) tmax.z = (amin.z-p.z)*div.z; + else tmax.z = (amax.z-p.z)*div.z; + return level.Vec3Offset(p,min(min(tmax.x,tmax.y),tmax.z)*d); + } + + // Liang-Barsky line clipping + static bool, Vector2, Vector2 LiangBarsky( Vector2 minclip, Vector2 maxclip, Vector2 v0, Vector2 v1 ) + { + double t0 = 0., t1 = 1.; + double xdelta = v1.x-v0.x; + double ydelta = v1.y-v0.y; + double p, q, r; + for ( int i=0;i<4; i++ ) + { + switch ( i ) + { + case 0: + p = -xdelta; + q = -(minclip.x-v0.x); + break; + case 1: + p = xdelta; + q = (maxclip.x-v0.x); + break; + case 2: + p = -ydelta; + q = -(minclip.y-v0.y); + break; + case 3: + p = ydelta; + q = (maxclip.y-v0.y); + break; + } + if ( (p == 0.) && (q<0.) ) return false, (0,0), (0,0); + if ( p < 0 ) + { + r = q/p; + if ( r > t1 ) return false, (0,0), (0,0); + else if ( r > t0 ) t0 = r; + } + else if ( p > 0 ) + { + r = q/p; + if ( r < t0 ) return false, (0,0), (0,0); + else if ( r < t1 ) t1 = r; + } + } + Vector2 ov0 = v0+(xdelta,ydelta)*t0; + Vector2 ov1 = v0+(xdelta,ydelta)*t1; + return true, ov0, ov1; + } + + // this check is dependent on the screen aspect ratio, so use only for non-interactive effects + static play bool InPlayerFOV( PlayerInfo p, Actor a, double maxdist = 0. ) + { + double vfov = p.fov*.5; + double hfov = atan(Screen.GetAspectRatio()*tan(vfov)); + let mo = p.camera; + if ( !mo ) return false; + Vector3 pp; + if ( !a.CheckSight(mo,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) return false; + if ( mo is 'PlayerPawn' ) pp = mo.Vec2OffsetZ(0,0,PlayerPawn(mo).player.viewz); + else pp = mo.Vec3Offset(0,0,mo.GetCameraHeight()); + Vector3 sc = level.SphericalCoords(pp,a.pos,(mo.angle,mo.pitch)); + if ( (abs(sc.x) > hfov) || (abs(sc.y) > vfov) ) return false; + if ( (maxdist > 0.) && (sc.z > maxdist) ) return false; + return true; + } + + // ui-friendly version without CheckSight call + static bool InPlayerFOVSimple( PlayerInfo p, Actor a, double maxdist = 0. ) + { + double vfov = p.fov*.5; + double hfov = atan(Screen.GetAspectRatio()*tan(vfov)); + let mo = p.camera; + if ( !mo ) return false; + Vector3 pp; + if ( mo is 'PlayerPawn' ) pp = mo.Vec2OffsetZ(0,0,PlayerPawn(mo).player.viewz); + else pp = mo.Vec3Offset(0,0,mo.GetCameraHeight()); + Vector3 sc = level.SphericalCoords(pp,a.pos,(mo.angle,mo.pitch)); + if ( (abs(sc.x) > hfov) || (abs(sc.y) > vfov) ) return false; + if ( (maxdist > 0.) && (sc.z > maxdist) ) return false; + return true; + } + + // calculate angle, pitch and yscale of YBeam based on direction vector and length + static double, double, double CalcYBeam( Vector3 dir, double dist ) + { + if ( level.pixelstretch == 1. ) + { + // ez modo + double angle = atan2(dir.y,dir.x); + double pitch = asin(-dir.z)+90; + return angle, pitch, dist; + } + dir.z *= level.pixelstretch; + double len = dir.length(); + dir /= len; + double angle = atan2(dir.y,dir.x); + double pitch = asin(-dir.z)+90; + double yscale = dist*len; + return angle, pitch, yscale; + } +} + +// ultrafast PRNG for a bunch of UI stuff +// kept here to reduce duplication and to tweak the (very cheap) algo if needed +Mixin Class SWWMUIRandom +{ + private ui int rss; + + private ui void SetUIRandom( int seed ) + { + rss = seed; + } + + private ui int GetUIRandom() + { + return (rss = (rss<<1)*35447+(rss/87)); + } + + private ui double RandomShiver() + { + int sd = GetUIRandom(); + return ((abs(sd)%11)-5)*.1; + } + + private ui int RandomFall() + { + int sd = GetUIRandom(); + return ((abs(sd)%22)+10); + } + + private ui double RandomOffset() + { + int sd = GetUIRandom(); + return (abs(sd)&65535)/65535.; + } +} diff --git a/zscript/utility/swwm_utility_string.zsc b/zscript/utility/swwm_utility_string.zsc new file mode 100644 index 000000000..05797c706 --- /dev/null +++ b/zscript/utility/swwm_utility_string.zsc @@ -0,0 +1,161 @@ +// string-related functions +extend Class SWWMUtility +{ + // bit ugly, but it works + static void ThousandsStr( String &s, int col = Font.CR_UNDEFINED, String colstr = "" ) + { + if ( (col < Font.CR_UNDEFINED) || (col >= Font.NUM_TEXT_COLORS) ) + ThrowAbortException("col parameter out of range, use colstr for non-standard font colors."); + String nstr = s; + s.Truncate(0); + int len = nstr.CodePointCount(); + int t = len; + if ( nstr.Left(1) == "-" ) t++; + for ( int i=0, pos=0; i 0 ) nstr = String.Format("%0*d",digits,n); + else nstr = String.Format("%d",n); + ThousandsStr(nstr,col,colstr); + return nstr; + } + + static void StripColor( String &str ) + { + int len = str.CodePointCount(); + for ( int i=0, pos=0; i= 0x0030) || (ch <= 0x0039) ) newstr.AppendCharacter(digs[ch-0x0030]); + else if ( ch == 0x002D ) newstr.AppendCharacter(0x207A); // minus + // everything else gets ignored + } + return newstr; + } + + static void ObscureText( String &str, int seed, bool alnum = false, bool minihud = false ) + { + int len = str.CodePointCount(); + String newstr = ""; + for ( int i=0, pos=0; i= 10 ) sd += 7; + newstr.AppendCharacter(sd+48); + } + else if ( minihud ) + { + // exclude forward/backward slashes as they're wider + int sd = abs(seed%93); + if ( sd >= 15 ) sd++; + if ( sd >= 60 ) sd++; + newstr.AppendCharacter(sd+32); + } + else newstr.AppendCharacter((abs(seed)%95)+32); + } + str = newstr; + } + + static void BeautifyClassName( String &str ) + { + String workstr = str; + str.Truncate(0); + workstr.Replace("_"," "); + int len = workstr.CodePointCount(); + for ( int i=0, pos=0; i dropammotype; + meta Class dropammotype; int dropamount; + bool bInitialized; + meta double bobfactor_ang, bobfactor_vec; Property Tooltip : tooltip; Property GetLine : getline; Property DropAmmoType : dropammotype; + Property BobFactor : bobfactor_ang, bobfactor_vec; FlagDef NoFirstGive : SWeaponFlags, 0; // don't give ammo on first pickup (for weapons with a clip count) FlagDef HideInMenu : SWeaponFlags, 1; // don't show in inventory menu (usually for sister weapons) FlagDef NoSwapWeapon : SWeaponFlags, 2; // weapon is not affected by slot swapping + FlagDef HasScrTex : SWeaponFlags, 3; // weapon model has a scripted texture (calls RenderTexture() from Event Handler) + FlagDef SwappedTo : SWeaponFlags, 4; // this weapon was swapped to on pickup (so it won't respawn) + + int oldtagcolor; + + double bvstr, bastr; + Vector3 bvdir; + int bvtics, batics; + + transient bool stopreload; bool IsSwapWeapon( Inventory i ) const { @@ -47,18 +60,44 @@ Class SWWMWeapon : Weapon abstract return null; } + // temporarily needed to ensure unimplemented weapons can still activate their pickup specials, to avoid softlocks + private void OnTouchSpecials( Actor toucher ) + { + DoPickupSpecial(toucher); + if ( bCountItem ) + { + if ( toucher.player ) toucher.player.itemcount++; + level.found_items++; + bCountItem = false; + } + if ( bCountSecret ) + { + if ( toucher.player ) toucher.player.mo.GiveSecret(true,true); + else toucher.GiveSecret(true,true); + bCountSecret = false; + } + } + override void Touch( Actor toucher ) { + // show message about unimplemented weapons + State ReadyState = FindState('Ready'); + if ( !ReadyState || !ReadyState.ValidateSpriteFrame() ) + { + if ( toucher.CheckLocalView() ) + Console.MidPrint(SmallFont,String.Format(StringTable.Localize(SWWMUtility.SellFemaleItem(self,"SWWM_TODOWEAPON_FEM")?"$SWWM_TODOWEAPON_FEM":"$SWWM_TODOWEAPON"),GetTag())); + OnTouchSpecials(toucher); + return; + } // show prompt to swap weapon, and prevent normal pickup SWWMWeapon sw; if ( bSPECIAL && swwm_swapweapons && (sw = HasSwapWeapon(toucher)) ) { if ( toucher.CheckLocalView() ) { - // use sisterweapon tag for dual wield (slot 2 weapons) - if ( sw.SisterWeapon && (sw.Amount > 1) ) - Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),sw.SisterWeapon.GetTag(),GetTag())); - else Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),sw.GetTag(),GetTag())); + uint ida = sw.GetNetworkID(); + uint idb = GetNetworkID(); + EventHandler.SendInterfaceEvent(consoleplayer,String.Format("swwmwpnswaptip.%08x%08x",ida,idb)); } return; } @@ -73,7 +112,7 @@ Class SWWMWeapon : Weapon abstract // can't pick up if ( !bSPECIAL ) return false; // no use through melee - if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch && !swwm_meleepickup ) + if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch ) return false; Vector3 itempos = Vec3Offset(0,0,Height/2), userpos = user.Vec2OffsetZ(0,0,user.player.viewz); @@ -84,17 +123,25 @@ Class SWWMWeapon : Weapon abstract // if the toucher owns our SwapWeapon, drop it before picking us up bool swapto = false; SWWMWeapon sw; - if ( swwm_swapweapons && (sw = HasSwapWeapon(user)) ) + State ReadyState = FindState('Ready'); + if ( swwm_swapweapons && (sw = HasSwapWeapon(user)) && (user.player.WeaponState&WF_WEAPONSWITCHOK) && !(user.player.WeaponState&WF_DISABLESWITCH) && ReadyState && ReadyState.ValidateSpriteFrame() ) { // special case, otherwise candy gun won't drop itself if ( sw is 'CandyGun' ) CandyGun(sw).swapdrop = true; if ( (sw == user.player.ReadyWeapon) || (sw.SisterWeapon && (sw.SisterWeapon == user.player.ReadyWeapon)) ) swapto = true; + // don't autoswitch just yet (hacky) + if ( swapto ) + { + user.player.ReadyWeapon = null; + user.player.PendingWeapon = WP_NOCHANGE; + } int ngun = sw.Amount; if ( ngun == 2 ) { // create a dual giver - let dg = SWWMDualWeaponGiver(Spawn("SWWMDualWeaponGiver",pos)); + let dg = SWWMDualWeaponGiver(Spawn('SWWMDualWeaponGiver',pos)); + dg.bDROPPED = bDROPPED; // inherit drop flag dg.angle = angle; dg.vel = vel; dg.FloatBobPhase = FloatBobPhase; @@ -104,36 +151,41 @@ Class SWWMWeapon : Weapon abstract dg.giveme[1] = SWWMWeapon(sw.CreateTossable(1)); dg.giveme[1].AttachToOwner(dg); dg.SetPickupState(); + dg.bSPECIAL = false; + dg.DropTime = 30; } else { // swap in-place let d = user.DropInventory(sw); + d.bDROPPED = bDROPPED; // inherit drop flag d.SetOrigin(pos,false); d.angle = angle; d.vel = vel; d.FloatBobPhase = FloatBobPhase; + d.bSPECIAL = false; + d.DropTime = 30; } - // don't autoswitch just yet (hacky) - if ( swapto ) - { - user.player.ReadyWeapon = null; - user.player.PendingWeapon = WP_NOCHANGE; - } + // notify the HUD tip (if any) to expire + uint ida = sw.GetNetworkID(); + uint idb = GetNetworkID(); + EventHandler.SendInterfaceEvent(consoleplayer,String.Format("swwmwpnswaptip.%08x%08x",ida,idb),1); } bUsePickup = true; + bSWAPPEDTO = true; Touch(user); bUsePickup = false; // we got picked up if ( bDestroyed || Owner || !bSPECIAL ) { + bSWAPPEDTO = false; // clear this flag // autoswitch to us if we got swapped if ( swapto ) user.A_SelectWeapon(GetClass()); Vector3 tracedir = level.Vec3Diff(userpos,itempos); double dist = tracedir.length(); tracedir /= dist; - let cf = new("CrossLineFinder"); - cf.Trace(userpos,level.PointInSector(userpos.xy),tracedir,dist,0); + let cf = new('CrossLineFinder'); + cf.Trace(userpos,level.PointInSector(userpos.xy),tracedir,dist,0,ignoreallactors:true); // trigger all player cross lines found between user and item for ( int i=0; i 1 ) + { + invoker.bvstr = factor; + invoker.bvdir = dir; + invoker.bvtics = tics-1; + } + } + action void A_BumpAngle( double factor, int tics = 0 ) + { + if ( !(self is 'Demolitionist') ) return; + Demolitionist(self).bumpangle += factor; + if ( tics > 1 ) + { + invoker.bastr = factor; + invoker.batics = tics-1; + } + } + + // check if the player has tapped any of the weapon buttons (not just reload) + // (used to cancel reloads when not in hold mode) + private bool TapOutReload() + { + if ( !Owner || !Owner.player ) return false; + bool rslt = (Owner.player.cmd.buttons&BT_RELOAD)&&!(Owner.player.oldbuttons&BT_RELOAD); + rslt |= (Owner.player.cmd.buttons&BT_ATTACK)&&!(Owner.player.oldbuttons&BT_ATTACK); + rslt |= (Owner.player.cmd.buttons&BT_ALTATTACK)&&!(Owner.player.oldbuttons&BT_ALTATTACK); + rslt |= (Owner.player.cmd.buttons&BT_ZOOM)&&!(Owner.player.oldbuttons&BT_ZOOM); + rslt |= (Owner.player.cmd.buttons&BT_USER1)&&!(Owner.player.oldbuttons&BT_USER1); + return rslt; + } + // check for the button tap within two specific states + // to be called inside DoEffect() + protected void CheckStopReload( StateLabel first, StateLabel last ) + { + if ( !stopreload && Owner && Owner.player && (Owner.player.ReadyWeapon == self) && !(CVar.GetCVar('swwm_holdreload',Owner.player).GetBool()) ) + { + let firststate = FindState(first); + let laststate = FindState(last); + let psp = Owner.player.FindPSprite(PSP_WEAPON); + if ( psp && psp.curstate && (firststate.DistanceTo(psp.curstate) > 0) && (laststate.DistanceTo(psp.curstate) < 0) ) + stopreload |= TapOutReload(); + } + } + // subtracts given ammo from price, drops excess virtual bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon ) { @@ -185,34 +285,72 @@ Class SWWMWeapon : Weapon abstract { // subtract price of ammo we don't give int ammonotgiven = default.AmmoGive1-AmmoGive1; - if ( ammonotgiven > 0 ) Stamina -= int(ownedWeapon.Ammo1.Stamina*(1.+.75*(ammonotgiven-1))); + if ( ammonotgiven > 0 ) Stamina -= int(abs(ownedWeapon.Ammo1.Stamina)*(1.+.75*(ammonotgiven-1))); // subtract price of given ammo int ammogiven = ownedWeapon.Ammo1.Amount-oldamount1; - if ( ammogiven > 0 ) Stamina -= int(ownedWeapon.Ammo1.Stamina*(1.+.75*(ammogiven-1))); + if ( ammogiven > 0 ) Stamina -= int(abs(ownedWeapon.Ammo1.Stamina)*(1.+.75*(ammogiven-1))); // drop excess int dropme = AmmoGive1-ammogiven; if ( dropme > 0 ) { - // hacky, but it works - ownedWeapon.Ammo1.CreateTossable(dropme); - ownedWeapon.Ammo1.Amount += dropme; + if ( (ownedWeapon.Ammo1 is 'SWWMAmmo') && SWWMAmmo(ownedWeapon.Ammo1).MagAmmoType ) + { + // can we add it as mag ammo? + MagAmmo ma = MagAmmo(Owner.FindInventory(SWWMAmmo(ownedWeapon.Ammo1).MagAmmoType)); + if ( !ma ) + { + ma = MagAmmo(Spawn(SWWMAmmo(ownedWeapon.Ammo1).MagAmmoType)); + ma.Amount = 0; + ma.AttachToOwner(Owner); + } + while ( ma.Amount <= (ma.MaxAmount-ma.ClipSize) ) + { + ma.Amount += ma.ClipSize; + dropme--; + } + } + if ( dropme > 0 ) + { + // hacky, but it works + ownedWeapon.Ammo1.CreateTossable(dropme); + ownedWeapon.Ammo1.Amount += dropme; + } } } if ( ownedWeapon.Ammo2 ) { // subtract price of ammo we don't give int ammonotgiven = default.AmmoGive2-AmmoGive2; - if ( ammonotgiven > 0 ) Stamina -= int(ownedWeapon.Ammo2.Stamina*(1.+.75*(ammonotgiven-1))); + if ( ammonotgiven > 0 ) Stamina -= int(abs(ownedWeapon.Ammo2.Stamina)*(1.+.75*(ammonotgiven-1))); // subtract price of given ammo int ammogiven = ownedWeapon.Ammo2.Amount-oldamount2; - if ( ammogiven > 0 ) Stamina -= int(ownedWeapon.Ammo2.Stamina*(1.+.75*(ammogiven-1))); + if ( ammogiven > 0 ) Stamina -= int(abs(ownedWeapon.Ammo2.Stamina)*(1.+.75*(ammogiven-1))); // drop excess int dropme = AmmoGive2-ammogiven; if ( dropme > 0 ) { - // hacky, but it works - ownedWeapon.Ammo2.CreateTossable(dropme); - ownedWeapon.Ammo2.Amount += dropme; + if ( (ownedWeapon.Ammo2 is 'SWWMAmmo') && SWWMAmmo(ownedWeapon.Ammo2).MagAmmoType ) + { + // can we add it as mag ammo? + MagAmmo ma = MagAmmo(Owner.FindInventory(SWWMAmmo(ownedWeapon.Ammo2).MagAmmoType)); + if ( !ma ) + { + ma = MagAmmo(Spawn(SWWMAmmo(ownedWeapon.Ammo2).MagAmmoType)); + ma.Amount = 0; + ma.AttachToOwner(Owner); + } + while ( ma.Amount <= (ma.MaxAmount-ma.ClipSize) ) + { + ma.Amount += ma.ClipSize; + dropme--; + } + } + if ( dropme > 0 ) + { + // hacky, but it works + ownedWeapon.Ammo2.CreateTossable(dropme); + ownedWeapon.Ammo2.Amount += dropme; + } } } return gotstuff; @@ -226,14 +364,20 @@ Class SWWMWeapon : Weapon abstract { if ( SWWMWeapon(item).PickupForAmmoSWWM(self) ) item.bPickupGood = true; - if ( !deathmatch && (Amount+item.Amount > MaxAmount) && (item.Stamina > 0) ) + if ( !deathmatch && (Amount+item.Amount > MaxAmount) && (item.Stamina != 0) ) { // sell excess - int sellprice = item.Stamina/2; - SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2)); - SWWMCredits.Give(Owner.player,sellprice); if ( Owner.player ) - Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),Owner.player.GetUserName(),GetTag(),sellprice); + { + int sellprice = abs(item.Stamina)/2; + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner); + Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + } + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } item.bPickupGood = true; } // reset the price in case it has to respawn @@ -248,23 +392,131 @@ Class SWWMWeapon : Weapon abstract if ( !bDROPPED && (deathmatch || alwaysapplydmflags) && sv_weaponstay ) return true; return false; } + // we need to copy this since we can't re-use the mixin + override void Hide() + { + bSPECIAL = false; + bNOGRAVITY = true; + bINVISIBLE = true; + SetState(FindState('HideDoomish')); + tics = 1050; + if ( self.bBIGPOWERUP || SWWMUtility.IsVIPItem(self) ) + tics += 1050; + if ( RespawnTics != 0 ) tics = RespawnTics; + if ( ShouldRespawn() ) + { + Vector3 oldpos = pos; + A_RestoreSpecialPosition(); + let t = Spawn('SWWMRespawnTimer',pos); + t.tracer = self; + t.special1 = tics; + t.A_SetSize(radius,height); + SetOrigin(oldpos,false); + } + } + override bool ShouldRespawn() + { + // swapped-to weapons do not respawn + if ( bSWAPPEDTO ) return false; + // always respawn in DM + if ( deathmatch && !bNEVERRESPAWN ) return true; + if ( (bBigPowerup || SWWMUtility.IsVIPItem(self)) && !sv_respawnsuper ) return false; + if ( bNEVERRESPAWN ) return false; + return (sv_itemrespawn||bALWAYSRESPAWN); + } + protected Ammo AddAmmoSWWM( Actor other, Class ammotype, int amount ) + { + // no weirdass factors or anything involved in this one + // just simple and straightforward + if ( !ammotype ) return null; + let amo = Ammo(other.FindInventory(ammotype)); + if ( !amo ) + { + amo = Ammo(Spawn(ammotype)); + amo.amount = 0; + amo.AttachToOwner(other); + } + amo.amount += amount; + if ( amo.amount > amo.maxamount && !sv_unlimited_pickup ) + amo.amount = amo.maxamount; + return amo; + } override void AttachToOwner( Actor other ) { Inventory.AttachToOwner(other); - Ammo1 = AddAmmo(Owner,AmmoType1,bNoFirstGive?0:AmmoGive1); - Ammo2 = AddAmmo(Owner,AmmoType2,bNoFirstGive?0:AmmoGive2); + Ammo1 = AddAmmoSWWM(Owner,AmmoType1,bNoFirstGive?0:AmmoGive1); + Ammo2 = AddAmmoSWWM(Owner,AmmoType2,bNoFirstGive?0:AmmoGive2); SisterWeapon = AddWeapon(SisterWeaponType); + if ( !bInitialized ) + { + InitializeWeapon(); + bInitialized = true; + } if ( Owner.player ) { if ( !Owner.player.GetNeverSwitch() && !bNo_Auto_Switch && ReportHUDAmmo() ) // hey, as long as it works - Owner.player.PendingWeapon = self; + { + // if the player's current/next weapon is a gesture, set ourselves as the former weapon, to avoid breaking gesture sequences + if ( Owner.player.ReadyWeapon is 'SWWMGesture' ) + { + let g = SWWMGesture(Owner.player.ReadyWeapon); + g.formerweapon = self; + } + else if ( Owner.player.PendingWeapon is 'SWWMGesture' ) + { + let g = SWWMGesture(Owner.player.PendingWeapon); + g.formerweapon = self; + } + else if ( Owner.player.ReadyWeapon is 'SWWMItemGesture' ) + { + let ig = SWWMItemGesture(Owner.player.ReadyWeapon); + ig.gest.formerweapon = self; + } + else if ( Owner.player.PendingWeapon is 'SWWMItemGesture' ) + { + let ig = SWWMItemGesture(Owner.player.PendingWeapon); + ig.gest.formerweapon = self; + } + else Owner.player.PendingWeapon = self; + } if ( Owner.player.mo == players[consoleplayer].camera ) StatusBar.ReceivedWeapon(self); } GivenAsMorphWeapon = false; + bSwappedTo = false; + } + override bool Use( bool pickup ) + { + // we can simplify this + if ( !Owner.player || (Owner.player.ReadyWeapon == self) ) + return false; + // if the player's current/next weapon is a gesture, set ourselves as the former weapon, to avoid breaking gesture sequences + if ( Owner.player.ReadyWeapon is 'SWWMGesture' ) + { + let g = SWWMGesture(Owner.player.ReadyWeapon); + g.formerweapon = self; + } + else if ( Owner.player.PendingWeapon is 'SWWMGesture' ) + { + let g = SWWMGesture(Owner.player.PendingWeapon); + g.formerweapon = self; + } + else if ( Owner.player.ReadyWeapon is 'SWWMItemGesture' ) + { + let ig = SWWMItemGesture(Owner.player.ReadyWeapon); + ig.gest.formerweapon = self; + } + else if ( Owner.player.PendingWeapon is 'SWWMItemGesture' ) + { + let ig = SWWMItemGesture(Owner.player.PendingWeapon); + ig.gest.formerweapon = self; + } + else Owner.player.PendingWeapon = self; + return false; } override void OwnerDied() { + ClearBufferedAmmo(); if ( Owner.player && (Owner.player.ReadyWeapon == self) ) { Owner.A_StopSound(CHAN_WEAPONEXTRA); @@ -274,16 +526,55 @@ Class SWWMWeapon : Weapon abstract A_ClearRefire(); Super.OwnerDied(); } + override void Travelled() + { + ClearBufferedAmmo(); + Super.Travelled(); + } + override void DetachFromOwner() + { + ClearBufferedAmmo(); + Super.DetachFromOwner(); + } override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) { if ( mod == 'Melee' ) return StringTable.Localize("$O_MELEE"); return Super.GetObituary(victim,inflictor,mod,playerattack); } + // override in subclasses to perform first-time setup on a newly obtained weapon + virtual void InitializeWeapon() + { + } // draw ammo on hud above weapon box virtual ui void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) { } - // animations + // extra drawing, usually scopes + virtual ui void RenderUnderlay( RenderEvent e ) + { + } + // HUD-side ticking + virtual ui void HudTick() + { + } + // updating a scripted texture in the model + virtual ui void RenderTexture( RenderEvent e ) + { + } + // update color tags on first person model + void UpdateTags( int idx, String colname ) + { + if ( idx != oldtagcolor ) + SetTags(colname); + oldtagcolor = idx; + } + // should be overridable in case indices aren't the same + // (or there's dual-wielding) + virtual void SetTags( String colname ) + { + A_ChangeModel("",1,"","",0,"models","DemoTags"..colname..".png",CMDL_USESURFACESKIN,-1); + } + // third-person animations for player action void A_PlayerFire() { let demo = Demolitionist(player.mo); @@ -298,10 +589,14 @@ Class SWWMWeapon : Weapon abstract else demo.PlayMelee(); } } - action void A_PlayerReload() + action void A_PlayerReload( bool bFast = false ) { let demo = Demolitionist(player.mo); - if ( demo && (demo.Health > 0) ) demo.PlayReload(); + if ( demo && (demo.Health > 0) ) + { + if ( bFast ) demo.PlayFastReload(); + else demo.PlayReload(); + } } action void A_PlayerCheckGun() { @@ -349,6 +644,14 @@ Class SWWMWeapon : Weapon abstract player.SetPSprite(PSP_FLASH,null); player.mo.BringUpWeapon(); } + // quick 'n dirty function to enable bobbing for the current state + // cleaner than using A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH), at least + action void A_CanBob( bool toggle = true ) + { + if ( !player ) return; + if ( toggle ) player.weaponstate |= WF_WEAPONBOBBING; + else player.weaponstate &= ~WF_WEAPONBOBBING; + } override void PlayUpSound( Actor origin ) { if ( UpSound ) origin.A_StartSound(UpSound,CHAN_WEAPON,CHANF_OVERLAP); @@ -356,7 +659,23 @@ Class SWWMWeapon : Weapon abstract override void Tick() { Super.Tick(); - if ( !Owner ) return; + if ( bvtics > 0 ) + { + if ( Demolitionist(Owner) && Owner.player && (Owner.player.ReadyWeapon == self) ) + Demolitionist(Owner).BumpView(bvstr,bvdir); + bvtics--; + } + if ( batics > 0 ) + { + if ( Demolitionist(Owner) && Owner.player && (Owner.player.ReadyWeapon == self) ) + Demolitionist(Owner).BumpAngle += bastr; + batics--; + } + if ( !Owner ) + { + angle -= (180./64.); + return; + } if ( !Owner.player || (Owner.player.ReadyWeapon != self) || !(Owner.player.WeaponState&WF_WEAPONSWITCHOK) || (Owner.player.WeaponState&WF_DISABLESWITCH) ) { tooltipsent = false; @@ -364,7 +683,7 @@ Class SWWMWeapon : Weapon abstract } if ( tooltipsent ) return; tooltipsent = true; - if ( Owner.player == players[consoleplayer] ) + if ( (tooltip != "") && (Owner.player == players[consoleplayer]) ) SWWMUtility.SendTooltip(GetClass()); } action void A_SWWMFlash( StateLabel flashlabel = null ) @@ -396,6 +715,7 @@ Class SWWMWeapon : Weapon abstract { return (AmmoType1&&(kind is AmmoType1))||(AmmoType2&&(kind is AmmoType2)); } + // ensure weapons dropped by enemies only give one unit of each ammo override void ModifyDropAmount( int dropamount ) { self.dropamount = dropamount; @@ -438,11 +758,11 @@ Class SWWMWeapon : Weapon abstract return null; let ret = Super.CreateTossable(amt); // reattach our glow if we became a pickup - if ( (ret == self) && (PickupFlash is 'SWWMPickupFlash') && swwm_itemglows ) + if ( (ret == self) && (PickupFlash is 'SWWMPickupFlash') ) { - let p = Spawn(PickupFlash,Vec3Offset(0,0,16)); + let p = Spawn(PickupFlash,pos); p.target = self; - p.SetStateLabel("Pickup"); + p.SetStateLabel('Pickup'); } return ret; } @@ -454,12 +774,15 @@ Class SWWMWeapon : Weapon abstract Weapon.BobRangeY 0.2; Weapon.YAdjust 0; Weapon.SlotPriority 1.; - Inventory.RestrictedTo "Demolitionist"; - Inventory.PickupFlash "SWWMRedPickupFlash"; + Inventory.RestrictedTo 'Demolitionist'; + Inventory.PickupFlash 'SWWMRedPickupFlash'; + SWWMWeapon.BobFactor 1., .0001; +INVENTORY.IGNORESKILL; +WEAPON.NOALERT; +WEAPON.NODEATHINPUT; +FLOATBOB; + +INTERPOLATEANGLES; + +DONTGIB; FloatBobStrength 0.25; } } @@ -469,6 +792,8 @@ Class SWWMDualWeaponGiver : Inventory { Mixin SWWMOverlapPickupSound; Mixin SWWMRespawn; + Mixin SWWMRotatingPickup; + Mixin SWWMUnrealStyleDrop; bool bUsePickup; SWWMWeapon giveme[2]; @@ -476,15 +801,27 @@ Class SWWMDualWeaponGiver : Inventory Default { Inventory.PickupSound "misc/w_pkup"; - Inventory.RestrictedTo "Demolitionist"; - Inventory.PickupFlash "SWWMRedPickupFlash"; + Inventory.RestrictedTo 'Demolitionist'; + Inventory.PickupFlash 'SWWMRedPickupFlash'; +WEAPONSPAWN; +FLOATBOB; + +DONTGIB; +INVENTORY.NEVERRESPAWN; +INVENTORY.QUIET; FloatBobStrength 0.25; } + SWWMWeapon HasSwapWeapon( Actor other ) const + { + if ( giveme[0].bNoSwapWeapon ) return null; + for ( Inventory i=other.inv; i; i=i.inv ) + { + if ( giveme[0].IsSwapWeapon(i) ) + return SWWMWeapon(i); + } + return null; + } + override void Touch( Actor toucher ) { // show prompt to swap weapon, and prevent normal pickup @@ -493,10 +830,9 @@ Class SWWMDualWeaponGiver : Inventory { if ( toucher.CheckLocalView() ) { - // use sisterweapon tag for dual wield (slot 2 weapons) - if ( sw.SisterWeapon && (sw.Amount > 1) ) - Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),sw.SisterWeapon.GetTag(),GetTag())); - else Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),sw.GetTag(),GetTag())); + uint ida = sw.GetNetworkID(); + uint idb = GetNetworkID(); + EventHandler.SendInterfaceEvent(consoleplayer,String.Format("swwmwpnswaptip.%08x%08x",ida,idb)); } return; } @@ -511,7 +847,7 @@ Class SWWMDualWeaponGiver : Inventory // can't pick up if ( !bSPECIAL ) return false; // no use through melee - if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch && !swwm_meleepickup ) + if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch ) return false; Vector3 itempos = Vec3Offset(0,0,Height/2), userpos = user.Vec2OffsetZ(0,0,user.player.viewz); @@ -531,7 +867,7 @@ Class SWWMDualWeaponGiver : Inventory if ( ngun == 2 ) { // create a dual giver - let dg = SWWMDualWeaponGiver(Spawn("SWWMDualWeaponGiver",pos)); + let dg = SWWMDualWeaponGiver(Spawn('SWWMDualWeaponGiver',pos)); dg.angle = angle; dg.vel = vel; dg.FloatBobPhase = FloatBobPhase; @@ -557,6 +893,10 @@ Class SWWMDualWeaponGiver : Inventory user.player.ReadyWeapon = null; user.player.PendingWeapon = WP_NOCHANGE; } + // notify the HUD tip (if any) to expire + uint ida = sw.GetNetworkID(); + uint idb = GetNetworkID(); + EventHandler.SendInterfaceEvent(consoleplayer,String.Format("swwmwpnswaptip.%08x%08x",ida,idb),1); } bUsePickup = true; Touch(user); @@ -569,8 +909,8 @@ Class SWWMDualWeaponGiver : Inventory Vector3 tracedir = level.Vec3Diff(userpos,itempos); double dist = tracedir.length(); tracedir /= dist; - let cf = new("CrossLineFinder"); - cf.Trace(userpos,level.PointInSector(userpos.xy),tracedir,dist,0); + let cf = new('CrossLineFinder'); + cf.Trace(userpos,level.PointInSector(userpos.xy),tracedir,dist,0,ignoreallactors:true); // trigger all player cross lines found between user and item for ( int i=0; i AmmoType; + Class MagAmmoType; + int Amount; +} + +extend Class SWWMWeapon +{ + Array BufferedAmmo; + + protected void BufferAmmo( Class type, int amount ) + { + AmmoBuffer b; + foreach ( b:BufferedAmmo ) + { + if ( b.AmmoType != type ) continue; + b.Amount += amount; + return; + } + b = new('AmmoBuffer'); + b.AmmoType = type; + b.MagAmmoType = null; + b.Amount = amount; + BufferedAmmo.Push(b); + } + + protected void BufferMagAmmo( Class type, int amount ) + { + AmmoBuffer b; + foreach ( b:BufferedAmmo ) + { + if ( b.MagAmmoType != type ) continue; + b.Amount += amount; + return; + } + b = new('AmmoBuffer'); + b.AmmoType = null; + b.MagAmmoType = type; + b.Amount = amount; + BufferedAmmo.Push(b); + } + + protected int FetchBufferedAmmo( Class type, int amount, bool fullfetch = false ) + { + for ( int i=0; i type, int amount, bool fullfetch = false ) + { + for ( int i=0; i type ) + { + int cnt = 0; + foreach ( b:BufferedAmmo ) + { + if ( b.AmmoType != type ) continue; + cnt += b.amount; + } + return cnt; + } + + protected int CountBufferedMagAmmo( Class type ) + { + int cnt = 0; + foreach ( b:BufferedAmmo ) + { + if ( b.MagAmmoType != type ) continue; + cnt += b.amount; + } + return cnt; + } + + protected void ClearBufferedAmmo() + { + for ( int i=0; i 0 ) + { + if ( BufferedAmmo[i].AmmoType ) + { + let amo = Owner.FindInventory(BufferedAmmo[i].AmmoType); + if ( !amo ) + { + amo = Inventory(Spawn(BufferedAmmo[i].AmmoType)); + amo.AttachToOwner(Owner); + amo.Amount = 0; + } + int given = min(amo.MaxAmount-amo.Amount,BufferedAmmo[i].Amount); + int excess = BufferedAmmo[i].Amount-given; + amo.Amount += given; + if ( (excess > 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + { + amo.Amount += excess; + amo.CreateTossable(excess); + } + } + else if ( BufferedAmmo[i].MagAmmoType ) + { + let amo = Owner.FindInventory(BufferedAmmo[i].MagAmmoType); + if ( !amo ) + { + amo = Inventory(Spawn(BufferedAmmo[i].MagAmmoType)); + amo.AttachToOwner(Owner); + amo.Amount = 0; + } + int given = min(amo.MaxAmount-amo.Amount,BufferedAmmo[i].Amount); + int excess = BufferedAmmo[i].Amount-given; + amo.Amount += given; + if ( (excess > 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + { + amo.Amount += excess; + amo.CreateTossable(excess); + } + MagAmmo(amo).MagFill(); + } + } + BufferedAmmo[i].Destroy(); + BufferedAmmo.Delete(i); + i--; + } + } +} diff --git a/zscript/weapons/swwm_baseweapon_fx.zsc b/zscript/weapons/swwm_baseweapon_fx.zsc index 1c826f13a..4bfe99465 100644 --- a/zscript/weapons/swwm_baseweapon_fx.zsc +++ b/zscript/weapons/swwm_baseweapon_fx.zsc @@ -2,6 +2,8 @@ Class SWWMCasing : Actor abstract { + Mixin SWWMMissileFix; + SWWMCasing prevcasing, nextcasing; bool killme; int numbounces; @@ -22,9 +24,12 @@ Class SWWMCasing : Actor abstract +NOTELEPORT; +ROLLSPRITE; +ROLLCENTER; + +SYNCHRONIZED; + +CANBOUNCEWATER; + +KEEPBOUNCEANGLE; Mass 1; Gravity 0.35; - BounceType "Hexen"; + BounceType 'Hexen'; WallBounceFactor 0.65; BounceFactor 0.65; BounceSound "explodium/casing"; @@ -46,16 +51,15 @@ Class SWWMCasing : Actor abstract override void Tick() { Super.Tick(); - if ( isFrozen() ) return; + if ( isFrozen() || (freezetics > 0) ) return; if ( killme ) A_FadeOut(.01); if ( waterlevel > 0 ) { - vel.xy *= .98; anglevel *= .98; pitchvel *= .98; } if ( heat <= 0 ) return; - let s = Spawn("SWWMSmallSmoke",pos); + let s = SWWMAnimSprite.SpawnAt('SWWMSmallSmoke',pos); s.alpha *= heat; heat -= 0.05; } @@ -73,7 +77,7 @@ Class SWWMCasing : Actor abstract { pitchvel = FRandom[Junk](10,30)*RandomPick[Junk](-1,1); anglevel = FRandom[Junk](10,30)*RandomPick[Junk](-1,1); - vel = (vel.unit()+(FRandom[Junk](-.2,.2),FRandom[Junk](-.2,.2),FRandom[Junk](-.2,.2))).unit()*vel.length(); + vel = (vel.unit()+SWWMUtility.Vec3FromAngles(FRandom[Junk](0,360),FRandom[Junk](-90,90))*.2).unit()*vel.length(); if ( numbounces && ((numbounces > 3) || (Random[Junk](1,20) < 17) || (vel.z > -1.4)) ) { ClearBounce(); @@ -85,25 +89,22 @@ Class SWWMCasing : Actor abstract Death: XZW1 B -1 { + bINTERPOLATEANGLES = false; pitch = roll = 0; angle = FRandom[Junk](0,360); + // disappear if we fell into a terrain with floor clip + if ( GetFloorTerrain().footclip > 0 ) + Destroy(); } Stop; } } -Class SWWMBulletImpact : Actor +Class SWWMBulletImpact : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; + RenderStyle 'Add'; Scale 0.25; } override void PostBeginPlay() @@ -111,31 +112,32 @@ Class SWWMBulletImpact : Actor Super.PostBeginPlay(); A_SprayDecal("Pock",-20); int numpt = int(Random[Junk](5,10)*scale.x*4); - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); for ( int i=0; i 0) ) return; if ( !target ) { Destroy(); return; } - if ( target.player ) - { - Vector3 x, y, z, origin; - [x, y, z] = swwm_CoordUtil.GetAxes(target.pitch,target.angle,target.roll); - origin = level.Vec3Offset(target.Vec2OffsetZ(0,0,target.player.viewz),x*12); - SetOrigin(origin,true); - } - else SetOrigin(target.pos,true); + if ( target.player ) SetOrigin(SWWMUtility.GetFireOffset(target,10,0,0),true); + else SetOrigin(target.Vec3Angle(10,target.angle,target.missileheight),true); if ( cnt++ > 2 ) Destroy(); } } -Class PunchImpact : Actor +Class PunchImpact : SWWMNonInteractiveActor { Default { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +NOTELEPORT; - +NOINTERACTION; + Tag "WallCrack"; } override void PostBeginPlay() { Super.PostBeginPlay(); - A_QuakeEx(2,2,2,12,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.3); + A_QuakeEx(2.,2.,2.,12,0,200,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:100,rollIntensity:.3); A_StartSound("demolitionist/punch",CHAN_VOICE,CHANF_DEFAULT,bAMBUSH?.6:1.); - A_SprayDecal("WallCrack",-20); + A_SprayDecal(GetTag(),-20); int numpt = Random[Ponch](5,10); if ( bAMBUSH ) numpt /= 3; - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); for ( int i=0; i 1 ) { - s = Spawn("SWWMHalfSmoke",Owner.pos); - s.vel = Owner.vel*.3+(FRandom[Ponch](-1,1),FRandom[Ponch](-1,1),FRandom[Ponch](-1,1)).unit()*FRandom[Ponch](.1,1.2); + s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',Owner.pos); + s.vel = Owner.vel*.3+SWWMUtility.Vec3FromAngles(FRandom[Ponch](0,360),FRandom[Ponch](-90,90))*FRandom[Ponch](.1,1.2); s.scale *= 2.; - s.A_SetRenderStyle(s.alpha,STYLE_AddShaded); - s.SetShade(Color(4,2,1)*Random[Ponch](32,63)); + s.SetRenderStyle(STYLE_AddShaded); + s.scolor = Color(4,2,1)*Random[Ponch](32,63); } } - override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags ) + override void ModifyDamage( int damage, Name damageType, int &newdamage, bool passive, Actor inflictor, Actor source, int flags ) { // increase blast damage (way too tiny normally for lost souls) if ( Owner.bBLASTED && (damageType == 'Melee') && !inflictor && !source ) @@ -66,10 +66,10 @@ Class ParryDamageChecker : Inventory Inventory.MaxAmount 1; } - override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags ) + override void ModifyDamage( int damage, Name damageType, int &newdamage, bool passive, Actor inflictor, Actor source, int flags ) { Inventory buff; - if ( inflictor && (buff=inflictor.FindInventory("ParriedBuff")) ) + if ( inflictor && (buff=inflictor.FindInventory('ParriedBuff')) ) { double mult; if ( buff.special1 <= 1 ) mult = 1.5; @@ -80,20 +80,14 @@ Class ParryDamageChecker : Inventory } } -Class ParryRing : Actor +Class ParryRing : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; + RenderStyle 'Add'; Scale .1; Alpha .3; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; } States { @@ -103,21 +97,11 @@ Class ParryRing : Actor } } -Class ParryField : Actor +Class ParryField : SWWMNonInteractiveActor { bool critsnd; Array justparried; - - Default - { - Radius .1; - Height 0.; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - } + SWWMHandler hnd; override void Tick() { @@ -126,87 +110,89 @@ Class ParryField : Actor Destroy(); return; } - Vector3 x, y, z, origin; - [x, y, z] = swwm_CoordUtil.GetAxes(master.pitch,master.angle,master.roll); - origin = level.Vec3Offset(master.Vec2OffsetZ(0,0,master.player.viewz),x*20); - SetOrigin(origin,false); - let raging = RagekitPower(master.FindInventory("RagekitPower")); - let s = Demolitionist(master).mystats; + SetOrigin(SWWMUtility.GetFireOffset(master,20,0,0),false); + let raging = RagekitPower(master.FindInventory('RagekitPower')); + let st = Demolitionist(master).mystats; // check for projectiles to deflect - let ti = ThinkerIterator.Create("Actor"); - Actor a; - while ( a = Actor(ti.Next()) ) + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + foreach ( s:level.Sectors ) { - if ( (justparried.Find(a) < justparried.Size()) || !(SWWMUtility.ValidProjectile(a) || a.bSKULLFLY) || a.bTHRUACTORS || (level.Vec3Diff(a.pos,pos).length() > 80) ) continue; - if ( a is 'Whirlwind' ) SWWMUtility.MarkAchievement("tornado",master.player); - justparried.Push(a); - Vector3 vdir = a.vel; - Vector3 dir = level.Vec3Diff(master.Vec2OffsetZ(0,0,pos.z),a.pos).unit(); - Vector3 hdir = dir; - Actor oldtarget = a.target; - if ( (a.target != master) && (a.bMISSILE || (a is 'HolySpirit')) ) // special wraithverge handling + // don't check sectors that aren't within bounds, saves some time + if ( !hnd.BoxInSectorBounds(s,pos.xy,80,CurSector.PortalGroup) ) + continue; + for ( Actor a=s.thinglist; a; a=a.snext ) { - // deflect directly to target - if ( a.target ) + if ( (justparried.Find(a) < justparried.Size()) || !(SWWMUtility.ValidProjectile(a) || a.bSKULLFLY) || a.bTHRUACTORS || (level.Vec3Diff(a.pos,pos).length() > 80) ) continue; + if ( a is 'Whirlwind' ) SWWMUtility.MarkAchievement("tornado",master.player); + justparried.Push(a); + Vector3 vdir = a.vel; + Vector3 dir = level.Vec3Diff(master.Vec2OffsetZ(0,0,pos.z),a.pos).unit(); + Vector3 hdir = dir; + Actor oldtarget = a.target; + if ( (a.target != master) && (a.bMISSILE || (a is 'HolySpirit')) ) // special wraithverge handling { - hdir = level.Vec3Diff(a.pos,a.target.Vec3Offset(0,0,a.target.height/2)).unit(); - double theta = max(FRandom[Parry](0.,1.)**2.,.1); - dir = dir*(1.-theta)+hdir*theta; + // deflect directly to target + if ( a.target ) + { + hdir = level.Vec3Diff(a.pos,a.target.Vec3Offset(0,0,a.target.height/2)).unit(); + double theta = max(FRandom[Parry](0.,1.)**2.,.1); + dir = SWWMUtility.LerpVector3(dir,hdir,theta); + } + // push away + if ( a.bSEEKERMISSILE ) a.tracer = a.target; + a.target = master; + } + if ( a.bSKULLFLY ) a.bBLASTED = true; // blast lost souls + let buff = a.FindInventory('ParriedBuff'); + if ( !buff ) + { + buff = Inventory(Spawn('ParriedBuff')); + buff.AttachToOwner(a); + buff.tracer = oldtarget; + } + double mvel = a.vel.length(); + double nspeed = min(100,mvel*FRandom[Parry](1.2,1.4)+20); + a.angle = atan2(dir.y,dir.x); + a.pitch = asin(-dir.z); + if ( raging ) + { + buff.special1 |= 2; + nspeed = min(100,nspeed*2.); + raging.DoHitFX(); } - // push away - if ( a.bSEEKERMISSILE ) a.tracer = a.target; - a.target = master; - } - if ( a.bSKULLFLY ) a.bBLASTED = true; // blast lost souls - let buff = a.FindInventory("ParriedBuff"); - if ( !buff ) - { - buff = Inventory(Spawn("ParriedBuff")); - buff.AttachToOwner(a); - buff.tracer = oldtarget; - } - double mvel = a.vel.length(); - double nspeed = min(100,mvel*FRandom[Parry](1.2,1.4)+20); - a.angle = atan2(dir.y,dir.x); - a.pitch = asin(-dir.z); - if ( raging ) - { - buff.special1 |= 2; - nspeed = min(100,nspeed*2.); - raging.DoHitFX(); - } - a.vel = dir*nspeed; - if ( a.bMISSILE ) a.speed = nspeed; - let i = Spawn(raging?"BigPunchImpact":"PunchImpact",a.pos); - i.target = master; - i.angle = atan2(dir.y,dir.x); - i.pitch = asin(-dir.z); - i.bAMBUSH = true; - A_QuakeEx(3,3,3,10,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2); - A_StartSound("demolitionist/parry",CHAN_WEAPON); - if ( special1 >= special2 ) // perfect parry - { - // increased homing - dir = dir*.4+hdir*.6; - nspeed = min(100,nspeed*1.5); a.vel = dir*nspeed; - for ( int i=1; i<6; i++ ) + if ( a.bMISSILE ) a.speed = nspeed; + let i = Spawn(raging?'BigPunchImpact':'PunchImpact',a.pos); + i.target = master; + i.angle = atan2(dir.y,dir.x); + i.pitch = asin(-dir.z); + i.bAMBUSH = true; + A_QuakeEx(3.,3.,3.,10,0,64,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + A_StartSound("demolitionist/parry",CHAN_WEAPON); + if ( special1 >= special2 ) // perfect parry { - let r = Spawn("ParryRing",a.pos); - r.specialf1 = i*.04; + // increased homing + dir = dir*.4+hdir*.6; + nspeed = min(100,nspeed*1.5); + a.vel = dir*nspeed; + for ( int i=1; i<6; i++ ) + { + let r = Spawn('ParryRing',a.pos); + r.specialf1 = i*.04; + } + buff.special1 |= 1; + if ( !critsnd ) + { + A_StartSound("misc/soulsparry",CHAN_ITEM,CHANF_OVERLAP,1.,.5); + if ( st ) st.pparries++; + } + critsnd = true; + if ( (a is 'LostSoul') && (master.player.ReadyWeapon is 'SilverBullet') ) + SWWMUtility.MarkAchievement("baseball",master.player); } - buff.special1 |= 1; - if ( !critsnd ) - { - A_StartSound("misc/soulsparry",CHAN_ITEM,CHANF_OVERLAP,1.,.5); - if ( s ) s.pparries++; - } - critsnd = true; - if ( (a is 'LostSoul') && (master.player.ReadyWeapon is 'SilverBullet') ) - SWWMUtility.MarkAchievement("baseball",master.player); + if ( st ) st.parries++; + SWWMUtility.AchievementProgressInc("parry",1,master.player); } - if ( s ) s.parries++; - SWWMUtility.AchievementProgressInc("parry",1,master.player); } if ( --special1 <= 0 ) Destroy(); } @@ -224,7 +210,7 @@ Class UseLineTracer : LineTracer { Array uses; - static play bool TangibleLine( UseList u ) + static bool TangibleLine( UseList u ) { if ( u.hitpart != TIER_MIDDLE ) return true; // lower/upper/ffloor Line l = u.HitLine; @@ -267,7 +253,7 @@ Class UseLineTracer : LineTracer { if ( Results.HitType == TRACE_HitActor ) { - let u = new("UseList"); + let u = new('UseList'); u.hitline = null; u.hitactor = Results.HitActor; u.pos = Results.HitPos; @@ -278,7 +264,7 @@ Class UseLineTracer : LineTracer { if ( Results.HitLine.Activation&(SPAC_Use|SPAC_UseThrough) ) { - let u = new("UseList"); + let u = new('UseList'); u.hitline = Results.HitLine; u.hitside = Results.Side; u.hitpart = Results.FFloor?TIER_FFLOOR:Results.Tier; @@ -303,197 +289,255 @@ Class MHitList Vector3 dir, pos; } +Class MeleeTracer : LineTracer +{ + Array hits; + Vector3 x; // used to get closest hit to center + bool dorip; + + override ETraceStatus TraceCallback() + { + if ( Results.HitType == TRACE_HitActor ) + { + if ( !Results.HitActor.bSHOOTABLE + || Results.HitActor.FindInventory('ParriedBuff') ) return TRACE_Skip; + bool addme = true; + foreach ( hit:hits ) + { + if ( hit.a != Results.HitActor ) continue; + if ( (hit.dir dot x) < (Results.HitVector dot x) ) + { + // closer to centerpoint + hit.dir = Results.HitVector; + hit.pos = Results.HitPos; + } + addme = false; + break; + } + if ( addme ) + { + let h = new('MHitList'); + h.a = Results.HitActor; + h.dir = Results.HitVector; + h.pos = Results.HitPos; + hits.Push(h); + } + return dorip?TRACE_Skip:TRACE_Stop; + } + if ( Results.HitType == TRACE_HitWall ) + { + if ( Results.Tier == TIER_Middle ) + { + if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) ) + return TRACE_Stop; + return TRACE_Skip; + } + } + return TRACE_Stop; + } + +} + extend Class SWWMWeapon { Actor pfield; // instance of parry field for current melee attack bool wallponch; // is punching a wall (for activation checks) + transient MeleeTracer mt; + transient UseLineTracer ut; + + // melee attack flags + enum EMeleeFlags + { + MELEE_Rip = 1, // trace will continue instead of stopping at the first hit (useful for swords) + MELEE_ForceSound = 2, // force the use of the provided hit sound while raging + MELEE_FleshSound = 4, // hit sound has a "flesh" variant (will append "f" suffix to hitsound string) + MELEE_ForceBust = 8, // bust walls even without Omnibusting enabled + MELEE_Vertical = 16, // ring is widened vertically, rather than horizontally + MELEE_Wider = 32, // ring is widened by 2.5x rather than 1.5x + MELEE_ExtraWide = 64, // if Wider is also specified, widen by 5x, otherwise widen by 3x + MELEE_HammerHit = 128, // is hammer melee (gibbing counts for "HAHA DAB" achievement) + MELEE_NoRage = 256, // unaffected by ragekit + MELEE_NoUse = 512 // do not pass use actions to this melee + }; action void A_Parry( int duration ) { - Vector3 x, y, z, origin; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),x*20-(0,0,20)); if ( invoker.pfield ) invoker.pfield.Destroy(); - invoker.pfield = Spawn("ParryField",origin); + invoker.pfield = Spawn('ParryField',SWWMUtility.GetFireOffset(self,20,0,0)); invoker.pfield.master = self; invoker.pfield.special1 = duration; invoker.pfield.special2 = duration; - if ( !FindInventory("ParryDamageChecker") ) - GiveInventory("ParryDamageChecker",1); // need this so parried projectiles deal extra damage + if ( !FindInventory('ParryDamageChecker') ) + GiveInventory('ParryDamageChecker',1); // need this so parried projectiles deal extra damage } // multi-hit cone rather than the usual one-hit arc, more fun - private action bool TryMelee( double spread, int dmg, String hitsound = "", double rangemul = 1., double kickmul = 1. ) + private action bool TryMelee( double spread, int dmg, String hitsound, double rangemul, double kickmul, int flags, Class impactclass ) { - Vector3 x, y, z, dir; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = Vec2OffsetZ(0,0,player.viewz); - Array hits; - hits.Clear(); - FLineTraceData d; + Vector3 dir; + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetPlayerEye(self); + if ( !invoker.mt ) invoker.mt = new('MeleeTracer'); + let mt = invoker.mt; // for convenience + mt.hits.Clear(); + mt.dorip = !!(flags&MELEE_Rip); int rings = 1; double step = spread/20.; double range = 1.5*DEFMELEERANGE*rangemul; - bool raging = CountInv("RagekitPower"); + bool raging = (flags&MELEE_NoRage)?false:CountInv('RagekitPower'); + double widemul = (flags&MELEE_ExtraWide)?(flags&MELEE_Wider)?5:3:(flags&MELEE_Wider)?2.5:1.5; for ( double i=0; i 0) && !hit.a.bNOBLOOD && !hit.a.bDORMANT && (raging || !hit.a.bINVULNERABLE) ) { - hits[i].a.TraceBleed(newdmg,invoker); - hits[i].a.SpawnBlood(hits[i].pos,atan2(hits[i].dir.y,hits[i].dir.x)+180,newdmg); + hit.a.TraceBleed(newdmg,invoker); + hit.a.SpawnBlood(hit.pos,atan2(hit.dir.y,hit.dir.x)+180,newdmg); } - else + else if ( impactclass ) { - let p = Spawn(raging?"BigPunchImpact":"PunchImpact",hits[i].pos); - p.angle = atan2(hits[i].dir.y,hits[i].dir.x); + let p = Spawn(raging?(Class)('BigPunchImpact'):impactclass,hit.pos); + p.angle = atan2(hit.dir.y,hit.dir.x); } + if ( (flags&MELEE_HammerHit) && (hit.a.Health <= hit.a.GetGibHealth()) ) + SWWMUtility.AchievementProgressInc("dab",1,player); } if ( raging ) { - let ps = Spawn("BigPunchSplash",hits[i].pos); + let ps = Spawn('BigPunchSplash',hit.pos); ps.target = self; ps.special1 = dmg; } } - self.angle += clamp(diff/hits.Size(),-5.,5.); // averaged reorient - A_QuakeEx(quakin/2,quakin/2,quakin/2,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.06*quakin); - if ( raging ) + self.angle += clamp(diff/mt.hits.Size(),-5.,5.); // averaged reorient + A_QuakeEx(quakin/2.,quakin/2.,quakin/2.,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.06*quakin); + if ( (flags&MELEE_HammerHit) && swwm_bonkhammer ) { - if ( blooded ) A_StartSound("pusher/altmeat",CHAN_WEAPON,CHANF_OVERLAP); - if ( bloodless ) A_StartSound("pusher/althit",CHAN_WEAPON,CHANF_OVERLAP); + flags |= MELEE_ForceSound; + flags &= ~MELEE_FleshSound; + hitsound = "misc/clonk"..Random[Hammer](1,11); + } + if ( raging && !(flags&MELEE_ForceSound) ) + { + if ( blooded ) A_StartSound("demolitionist/xpunchf",CHAN_WEAPON,CHANF_OVERLAP); + if ( bloodless ) A_StartSound("demolitionist/xpunch",CHAN_WEAPON,CHANF_OVERLAP); } else if ( hitsound == "" ) { if ( blooded ) A_StartSound("demolitionist/punchf",CHAN_WEAPON,CHANF_OVERLAP); if ( bloodless ) A_StartSound("demolitionist/punch",CHAN_WEAPON,CHANF_OVERLAP); } + else if ( flags&MELEE_FleshSound ) + { + if ( blooded ) A_StartSound(hitsound.."f",CHAN_WEAPON,CHANF_OVERLAP); + if ( bloodless ) A_StartSound(hitsound,CHAN_WEAPON,CHANF_OVERLAP); + } else A_StartSound(hitsound,CHAN_WEAPON,CHANF_OVERLAP); A_AlertMonsters(swwm_uncapalert?0:300); A_BumpFOV(.96); return true; } - action void A_Melee( int dmg = 40, String hitsound = "", double rangemul = 1., double spreadmul = 1., double kickmul = 1. ) + action bool A_Melee( int dmg = 40, String hitsound = "", double rangemul = 1., double spreadmul = 1., double kickmul = 1., int flags = 0, Class impactclass = 'PunchImpact' ) { - let raging = RagekitPower(FindInventory("RagekitPower")); + let raging = RagekitPower(FindInventory('RagekitPower')); + if ( flags&MELEE_NoRage ) raging = null; if ( raging ) rangemul += .2; - Vector3 origin = Vec3Offset(0,0,player.viewheight); - Vector3 dir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch)); + Vector3 origin = SWWMUtility.GetPlayerEye(self); + Vector3 dir = SWWMUtility.GetPlayerViewDir(self); // check for usables - let ut = new("UseLineTracer"); - ut.uses.Clear(); - ut.Trace(origin,CurSector,dir,DEFMELEERANGE*rangemul,0); - invoker.wallponch = true; - for ( int i=0; i)('BigPunchImpact'):impactclass,d.HitLocation+HitNormal*4); + p.angle = atan2(HitNormal.y,HitNormal.x); + p.pitch = asin(-HitNormal.z); + if ( d.HitType == TRACE_HitFloor ) p.CheckSplash(40); } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; - else HitNormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) HitNormal *= -1; - d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation+HitNormal*4); - } - let p = Spawn(raging?"BigPunchImpact":"PunchImpact",d.HitLocation+HitNormal*4); - p.angle = atan2(HitNormal.y,HitNormal.x); - p.pitch = asin(-HitNormal.z); - if ( d.HitType == TRACE_HitFloor ) p.CheckSplash(40); if ( raging ) { - let ps = Spawn("BigPunchSplash",d.HitLocation+HitNormal*4); + let ps = Spawn('BigPunchSplash',d.HitLocation+HitNormal*4); ps.target = self; ps.special1 = dmg; } - int quakin = raging?4:1; - A_QuakeEx(quakin,quakin,quakin,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12*quakin); + double quakin = raging?4.:1.; + A_QuakeEx(quakin,quakin,quakin,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.12*quakin); A_BumpFOV(.98); - A_StartSound(raging?"pusher/althit":(hitsound!="")?hitsound:"demolitionist/punch",CHAN_WEAPON,CHANF_OVERLAP); + A_StartSound((raging&&!(flags&MELEE_ForceSound))?"demolitionist/xpunch":(hitsound!="")?hitsound:"demolitionist/punch",CHAN_WEAPON,CHANF_OVERLAP); A_AlertMonsters(swwm_uncapalert?0:100); if ( raging ) raging.DoHitFX(); - if ( swwm_omnibust ) BusterWall.BustLinetrace(d,raging?(dmg*8):dmg,self,d.HitDir,d.HitLocation.z); + if ( (flags&MELEE_ForceBust) || swwm_omnibust ) + { + if ( flags&MELEE_HammerHit ) dmg = dmg*2+200; // extra bust damage if it's the hammer + BusterWall.BustLinetrace(d,raging?(dmg*8):dmg,self,d.HitDir,d.HitLocation.z); + } + return true; } } diff --git a/zscript/weapons/swwm_baseweapon_precisechair.zsc b/zscript/weapons/swwm_baseweapon_precisechair.zsc index d60fa90c7..c5f8e0245 100644 --- a/zscript/weapons/swwm_baseweapon_precisechair.zsc +++ b/zscript/weapons/swwm_baseweapon_precisechair.zsc @@ -1,132 +1,34 @@ // precise crosshair -Class SWWMCrosshairTracer : LineTracer -{ - Actor ignoreme; - - override ETraceStatus TraceCallback() - { - if ( Results.HitType == TRACE_HitActor ) - { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; - if ( Results.HitActor.bSHOOTABLE ) return TRACE_Stop; - return TRACE_Skip; - } - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) - { - if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) ) - return TRACE_Stop; - return TRACE_Skip; - } - return TRACE_Stop; - } -} - extend Class SWWMWeapon { - ui SWWMCrosshairTracer ctr; - ui Vector3 cpos; - ui Color ccol; - ui Vector2 lagvpos; - transient ui double prevframe; + meta int NumCrosshairs; // how many crosshairs this weapon has (for multi-barrel weapons, or dual-wielding) + + Property NumCrosshairs : NumCrosshairs; + + Default + { + SWWMWeapon.NumCrosshairs 1; + } override void DoEffect() { Super.DoEffect(); // force custom crosshair - if ( swwm_precisecrosshair ) crosshair = 99; - else crosshair = 0; + if ( swwm_precisecrosshair && (players[consoleplayer].Camera == players[consoleplayer].mo) && !(players[consoleplayer].cheats&CF_CHASECAM) ) + crosshair = -1; + else crosshair = ShouldDrawCrosshair()?0:-1; } - // HUD-side ticking - virtual ui void HudTick() - { - if ( !Owner ) return; - [cpos, ccol] = TraceForCrosshair(); - // avoid jumpy switching - if ( Owner.player.PendingWeapon is 'SWWMWeapon' ) - { - SWWMWeapon(Owner.player.PendingWeapon).cpos = cpos; - SWWMWeapon(Owner.player.PendingWeapon).lagvpos = lagvpos; - SWWMWeapon(Owner.player.PendingWeapon).prevframe = prevframe; - } - } - // extra drawing, usually scopes - virtual ui void RenderUnderlay( RenderEvent e ) - { - // draw custom crosshair - if ( automapactive || !(players[consoleplayer].Camera is 'PlayerPawn') ) return; - if ( !swwm_precisecrosshair ) return; - if ( !crosshairon ) return; - if ( crosshairforce ) return; - let sb = SWWMStatusBar(StatusBar); - if ( !sb ) return; - SWWMUtility.PrepareProjData(sb.projdata,e.ViewPos,e.ViewAngle,e.ViewPitch,e.ViewRoll,players[consoleplayer].fov); - Vector3 tdir = level.Vec3Diff(e.ViewPos,cpos); - // project - Vector3 ndc = SWWMUtility.ProjectPoint(sb.projdata,e.ViewPos+tdir); - if ( ndc.z >= 1. ) return; - Vector2 vpos = SWWMUtility.NDCToViewport(sb.projdata,ndc); - double frametime = ((gametic+e.fractic)-prevframe)/GameTicRate; - double theta = clamp(30.*frametime,0.,1.); // naive, but whatever - if ( !prevframe || (lagvpos == (0,0)) ) lagvpos = vpos; - else lagvpos = lagvpos*(1.-theta)+vpos*theta; - prevframe = gametic+e.fractic; - int cnum = abs(CVar.FindCVar('crosshair').GetInt()); - if ( !cnum ) return; - String tn = String.Format("XHAIR%s%d",(Screen.GetWidth()<640)?"S":"B",cnum); - TextureID ctex = TexMan.CheckForTexture(tn,TexMan.Type_MiscPatch); - if ( !ctex.IsValid() ) ctex = TexMan.CheckForTexture(String.Format("XHAIR%s1",(Screen.GetWidth()<640)?"S":"B"),TexMan.Type_MiscPatch); - if ( !ctex.IsValid() ) ctex = TexMan.CheckForTexture("XHAIRS1",TexMan.Type_MiscPatch); - Vector2 ts = TexMan.GetScaledSize(ctex); - double cs = crosshairscale; - double sz = 1.; - if ( cs > 0. ) sz = Screen.GetHeight()*cs/200.; - if ( crosshairgrow ) sz *= sb.CrosshairSize; - Screen.DrawTexture(ctex,false,int(lagvpos.x),int(lagvpos.y),DTA_DestWidthF,ts.x*sz,DTA_DestHeightF,ts.y*sz,DTA_AlphaChannel,true,DTA_FillColor,ccol); - } - ui Vector3, Color TraceForCrosshair() - { - if ( !ctr ) ctr = new("SWWMCrosshairTracer"); - ctr.ignoreme = Owner; - Vector3 x, y, z, ofs; - double s; - [x, y, z] = swwm_CoordUtil.GetAxes(Owner.pitch,Owner.angle,Owner.roll); - ofs = GetTraceOffset(); - Vector3 origin = level.Vec3Offset(Owner.Vec2OffsetZ(0,0,Owner.player.viewz),ofs.x*x+ofs.y*y+ofs.z*z); - ctr.Trace(origin,level.PointInSector(origin.xy),x,10000.,0); - Color col = crosshaircolor; - int chp = crosshairhealth; - if ( chp >= 2 ) - { - int hp = Clamp(Owner.Health,0,200); - double sat = (hp<150)?1.:(1.-(hp-150)/100.); - Vector3 rgb = SWWMUtility.HSVtoRGB((hp/300.,sat,1.)); - col = Color(int(rgb.x*255),int(rgb.y*255),int(rgb.z*255)); - } - else if ( chp == 1 ) - { - double hp = Clamp(Owner.Health,0,100)/100.; - if ( hp <= 0 ) col = Color(255,0,0); - else if ( hp < .3 ) col = Color(255,int(hp*255/.3),0); - else if ( hp < .85 ) col = Color(int((.6-hp)*255/.3),255,0); - else col = Color(0,255,0); - } - else if ( (ctr.Results.HitType == TRACE_HitActor) && ctr.Results.HitActor.bSHOOTABLE ) - { - // show target health, rather than our own - double hp = ctr.Results.HitActor.Health/double(ctr.Results.HitActor.GetSpawnHealth()); - if ( hp <= 0 ) col = Color(255,0,0); - else if ( hp < .3 ) col = Color(255,int(hp*255/.3),0); - else if ( hp < .85 ) col = Color(int((.6-hp)*255/.3),255,0); - else col = Color(0,255,0); - } - if ( ctr.Results.HitType == TRACE_HitNone ) return level.Vec3Offset(origin,x*10000.), col; - else return ctr.Results.HitPos, col; - } // where the trace is coming from relative to eyes - virtual clearscope Vector3 GetTraceOffset() const + virtual clearscope Vector3 GetTraceOffset( int index ) const { return (0.,0.,0.); } + + // should we draw the crosshair? (for scoped weapons) + virtual clearscope bool ShouldDrawCrosshair() const + { + return true; + } } diff --git a/zscript/weapons/swwm_blazeit.zsc b/zscript/weapons/swwm_blazeit.zsc index 4b5e52766..06d59f842 100644 --- a/zscript/weapons/swwm_blazeit.zsc +++ b/zscript/weapons/swwm_blazeit.zsc @@ -1,8 +1,14 @@ // Imanaki Corp Hellfire Cannon Mk3, aka "Hellblazer" (from SWWM series, originally inspired by the Hellraiser from OMGWEAPONS) // Slot 6, replaces Rocket Launcher, Phoenix Rod, Firestorm -Class HellblazerX : GhostArtifactX +Class HellblazerX : SWWMItemOverlay { + Default + { + RenderStyle 'Translucent'; + Alpha .5; + +INTERPOLATEANGLES; + } States { Spawn: @@ -11,259 +17,65 @@ Class HellblazerX : GhostArtifactX } } -Class HellblazerXSub : GhostArtifactX -{ - Hellblazer weap; - int ridx; - - Default - { - RenderStyle "Normal"; - } - void UpdateMe() - { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - int curtype = -1; - for ( int i=0; i<4; i++ ) - { - if ( weap.loadammo != types[i] ) continue; - curtype = i; - break; - } - static const int sofs[] = {1,7,10,13}; // offsets from SpawnState for each ammo type state label - int idx; - switch ( curtype ) - { - case 0: - idx = ridx-weap.magpos; - if ( idx > 5 ) idx -= 6; - else if ( idx < 0 ) idx += 6; - if ( weap.magstate[ridx] ) SetState(SpawnState); - else SetState(SpawnState+sofs[0]+idx); - break; - case 1: - idx = ridx-weap.magpos; - if ( idx > 2 ) idx -= 3; - else if ( idx < 0 ) idx += 3; - if ( (ridx > 2) || weap.magstate[ridx] ) SetState(SpawnState); - else SetState(SpawnState+sofs[1]+idx); - break; - case 2: - idx = ridx-weap.magpos; - if ( idx > 2 ) idx -= 3; - else if ( idx < 0 ) idx += 3; - if ( (ridx > 2) || weap.magstate[ridx] ) SetState(SpawnState); - else SetState(SpawnState+sofs[2]+idx); - break; - case 3: - idx = ridx-weap.magpos; - if ( idx > 1 ) idx -= 2; - else if ( idx < 0 ) idx += 2; - if ( (ridx > 1) || weap.magstate[ridx] ) SetState(SpawnState); - else SetState(SpawnState+sofs[3]+idx); - break; - default: - // uninitialized pickup (3 blazers) - idx = ridx; - if ( idx > 2 ) SetState(SpawnState); - else SetState(SpawnState+sofs[0]+idx); - break; - } - } - States - { - Spawn: - TNT1 A -1; - Missiles: - XZW1 ABCDEF -1; - Crackshots: - XZW2 ABC -1; - Ravagers: - XZW3 ABC -1; - Nukes: - XZW4 AB -1; - Stop; - } -} - Class Hellblazer : SWWMWeapon { int clipcount; bool magstate[6]; // true: rocket was spent int magpos; // current rotation - Class loadammo, nextammo; - ui Class lastammo; int spinskipped; - HellblazerXSub pickuprockets[6]; int preload; // additional loaded missiles (up to 2) Actor seektarget[3]; int seekcnt; int preloadcnt; - Property ClipCount : clipcount; - - transient ui TextureID WeaponBox, AmmoIcon[4], LoadedIcon[4], LockIcon[4]; transient ui SWWMProjectionData projdata; + ui TextureID LockIcon; override void RenderUnderlay( RenderEvent e ) { Super.RenderUnderlay(e); - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - if ( !LockIcon[0] ) - { - LockIcon[0] = TexMan.CheckForTexture("graphics/HUD/HellblazerMissileLock.png",TexMan.Type_Any); - LockIcon[1] = TexMan.CheckForTexture("graphics/HUD/HellblazerCrackshotLock.png",TexMan.Type_Any); - LockIcon[2] = TexMan.CheckForTexture("graphics/HUD/HellblazerRavagerLock.png",TexMan.Type_Any); - LockIcon[3] = TexMan.CheckForTexture("graphics/HUD/HellblazerWarheadLock.png",TexMan.Type_Any); - } - int curtype = 0; - for ( int i=0; i<4; i++ ) - { - if ( loadammo != types[i] ) continue; - curtype = i; - break; - } + if ( !LockIcon ) LockIcon = TexMan.CheckForTexture("graphics/HUD/HellblazerMissileLock.png"); SWWMUtility.PrepareProjData(projdata,e.ViewPos,e.ViewAngle,e.ViewPitch,e.ViewRoll,players[consoleplayer].fov); - int cliptop = projdata.viewy, clipbottom = projdata.viewy+projdata.viewh, - clipleft = projdata.viewx, clipright = projdata.viewx+projdata.vieww; - double hs; - if ( swwm_hudscale ) hs = CleanXFac_1; - else hs = max(floor(Screen.GetWidth()/640.),1.); + Screen.SetClipRect(projdata.viewx,projdata.viewy,projdata.vieww,projdata.viewh); + double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); Vector2 ss = (Screen.GetWidth()/hs,Screen.GetHeight()/hs); for ( int i=0; i<3; i++ ) { if ( !seektarget[i] ) continue; - Vector3 tpos = seektarget[i].prev*(1.-e.FracTic)+seektarget[i].pos*e.FracTic; + Vector3 tpos = SWWMUtility.LerpVector3(seektarget[i].prev,seektarget[i].pos,e.FracTic); Vector3 ndc = SWWMUtility.ProjectPoint(projdata,e.viewpos+level.Vec3Diff(e.viewpos,tpos+(0,0,seektarget[i].Height/2))); - if ( ndc.z > 1. ) continue; + if ( ndc.z <= 0. ) continue; Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - Screen.DrawTexture(LockIcon[curtype],false,vpos.x/hs,vpos.y/hs,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_CenterOffset,true,DTA_ClipTop,cliptop,DTA_ClipBottom,clipbottom,DTA_ClipLeft,clipleft,DTA_ClipRight,clipright); + Screen.DrawTexture(LockIcon,false,vpos.x/hs,vpos.y/hs,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_CenterOffset,true); } + Screen.ClearClipRect(); } - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - if ( !WeaponBox ) - { - WeaponBox = TexMan.CheckForTexture("graphics/HUD/HellblazerDisplay.png",TexMan.Type_Any); - AmmoIcon[0] = TexMan.CheckForTexture("graphics/HUD/HellblazerMissile.png",TexMan.Type_Any); - AmmoIcon[1] = TexMan.CheckForTexture("graphics/HUD/HellblazerCrackshot.png",TexMan.Type_Any); - AmmoIcon[2] = TexMan.CheckForTexture("graphics/HUD/HellblazerRavager.png",TexMan.Type_Any); - AmmoIcon[3] = TexMan.CheckForTexture("graphics/HUD/HellblazerWarhead.png",TexMan.Type_Any); - LoadedIcon[0] = TexMan.CheckForTexture("graphics/HUD/HellblazerMissileLoaded.png",TexMan.Type_Any); - LoadedIcon[1] = TexMan.CheckForTexture("graphics/HUD/HellblazerCrackshotLoaded.png",TexMan.Type_Any); - LoadedIcon[2] = TexMan.CheckForTexture("graphics/HUD/HellblazerRavagerLoaded.png",TexMan.Type_Any); - LoadedIcon[3] = TexMan.CheckForTexture("graphics/HUD/HellblazerWarheadLoaded.png",TexMan.Type_Any); - } - double xx = -56, yy = -49; - Screen.DrawTexture(WeaponBox,false,bx+xx,by+yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int curtype = 0; - for ( int i=0; i<4; i++ ) - { - if ( loadammo != types[i] ) continue; - curtype = i; - break; - } - xx += 2; - yy += 2; - for ( int i=0; i<4; i++ ) - { - int amt = Owner.CountInv(types[i]); - String amtstr = String.Format("%3d",amt); - Screen.DrawText(smallfont,Font.CR_FIRE,bx+xx,by+yy,amtstr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(types[i]==nextammo)?Color(0,0,0,0):Color(128,0,0,0)); - Screen.DrawTexture(AmmoIcon[i],false,bx+xx+19,by+yy+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(types[i]==nextammo)?Color(0,0,0,0):Color(128,0,0,0)); - yy += 13; - if ( i%2 ) - { - yy -= 26; - xx += 28; - } - } - yy = -18; - switch ( curtype ) - { - case 0: - xx = -54; - for ( int i=0; i<6; i++ ) - { - Screen.DrawTexture(LoadedIcon[0],false,bx+xx,by+yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,((i<=magpos)&&(i>=(magpos-preload)))?magstate[i]?Color(192,0,0,0):Color(0,0,0,0):magstate[i]?Color(224,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0); - xx += 9; - } - break; - case 1: - xx = -49; - for ( int i=0; i<3; i++ ) - { - Screen.DrawTexture(LoadedIcon[1],false,bx+xx,by+yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,((i<=magpos)&&(i>=(magpos-preload)))?magstate[i]?Color(192,0,0,0):Color(0,0,0,0):magstate[i]?Color(224,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0); - xx += 18; - } - break; - case 2: - xx = -49; - for ( int i=0; i<3; i++ ) - { - Screen.DrawTexture(LoadedIcon[2],false,bx+xx,by+yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,((i<=magpos)&&(i>=(magpos-preload)))?magstate[i]?Color(192,0,0,0):Color(0,0,0,0):magstate[i]?Color(224,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0); - xx += 18; - } - break; - case 3: - xx = -45; - for ( int i=0; i<2; i++ ) - { - Screen.DrawTexture(LoadedIcon[3],false,bx+xx,by+yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,((i<=magpos)&&(i>=(magpos-preload)))?magstate[i]?Color(192,0,0,0):Color(0,0,0,0):magstate[i]?Color(224,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0); - xx += 27; - } - break; - } - } - - override void HudTick() - { - Super.HudTick(); - if ( lastammo && (lastammo != nextammo) && (Owner.player == players[consoleplayer]) ) - { - let bar = SWWMStatusBar(statusbar); - if ( bar ) - { - bar.ntagstr = GetDefaultByType(nextammo).GetTag(); - bar.ntagtic = level.totaltime; - bar.ntagcol = nametagcolor; - } - } - lastammo = nextammo; - } - - override Vector3 GetTraceOffset() + override Vector3 GetTraceOffset( int index ) { return (10.,3.5,-5.); } - action void A_HellblazerFire( int type = 0, bool bAlt = false ) + action void A_HellblazerFire( bool bAlt = false ) { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - static const Class projs[] = {"HellblazerMissile","HellblazerCrackshot","HellblazerRavager","HellblazerWarhead", - "HellblazerMissile2","HellblazerCrackshot2","HellblazerRavager2","HellblazerWarhead2"}; - static const Color cols[] = {Color(4,3,2),Color(2,4,2),Color(4,2,2),Color(3,2,4)}; A_StartSound(bAlt?"hellblazer/altfire":"hellblazer/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:(bAlt?1.7:.8)); A_AlertMonsters(swwm_uncapalert?0:bAlt?400:1200); - int qstr = bAlt?4:5; - A_QuakeEx(qstr,qstr,qstr,bAlt?4:12,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.12*qstr); + double qstr = bAlt?4.:5.; + A_QuakeEx(qstr,qstr,qstr,bAlt?4:12,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.12*qstr); A_BumpFOV(bAlt?.96:.93); + A_BumpView(bAlt?-2:-3); A_PlayerFire(); invoker.clipcount = max(0,invoker.clipcount-1); invoker.magstate[invoker.magpos-invoker.preload] = true; invoker.spinskipped++; - Vector3 x, y, z, x2, y2, z2, dir, origin; - double a, s; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); SWWMUtility.DoKnockback(self,-x,bAlt?22000.:32000.); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+3.5*y-5*z); - a = FRandom[Hellblazer](0,360); - s = FRandom[Hellblazer](0,bAlt?.02:.005); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn(projs[type+4*bAlt],origin); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,3.5,-5); + double a = FRandom[Hellblazer](0,360); + double s = FRandom[Hellblazer](0,bAlt?.02:.005); + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + let p = Spawn(bAlt?'HellblazerMissile2':'HellblazerMissile',origin); p.target = self; int tidx = max(0,invoker.seekcnt-(invoker.preload+1)); if ( invoker.seektarget[tidx] ) HellblazerMissile(p).seektarget = invoker.seektarget[tidx]; @@ -278,16 +90,16 @@ Class Hellblazer : SWWMWeapon } for ( int i=0; i<5; i++ ) { - let s = Spawn("SWWMSmoke",origin); + let s = Spawn('SWWMSmoke',origin); s.special1 = 1; s.scale *= 2.4; s.alpha *= .4; - s.SetShade(cols[type]*Random[Hellblazer](48,63)); + s.SetShade(Color(4,3,2)*Random[Hellblazer](48,63)); s.vel += vel*.5+x*FRandom[Hellblazer](6.,10.)+y*FRandom[Hellblazer](-2,2)+z*FRandom[Hellblazer](-2,2); } for ( int i=0; i<6; i++ ) { - let s = Spawn("SWWMSpark",origin); + let s = Spawn('SWWMSpark',origin); s.scale *= .7; s.alpha *= .4; s.vel += vel*.5+x*FRandom[Hellblazer](4.,8.)+y*FRandom[Hellblazer](-2,2)+z*FRandom[Hellblazer](-2,2); @@ -296,46 +108,28 @@ Class Hellblazer : SWWMWeapon override bool ReportHUDAmmo() { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - for ( int i=0; i<4; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; - return (clipcount>0); + return (clipcount>0)||(Ammo1.Amount>0); } override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; if ( (firemode == PrimaryFire) || (firemode == AltFire) ) - { - if ( clipcount > 0 ) return true; - for ( int i=0; i<4; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; - return false; - } + return (clipcount>0)||(Ammo1.Amount>0); return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } - override bool UsesAmmo( Class kind ) - { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - for ( int i=0; i<4; i++ ) if ( kind is types[i] ) return true; - return false; - } - action void A_GlassOverlay( StateLabel g ) { player.SetPSprite(PSP_WEAPON+1,invoker.FindState(g)); // we have to still use A_Overlay* functions for these - A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true); - A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add); + A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_FORCESTYLE|PSPF_ALPHA|PSPF_FORCEALPHA,true); + A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Translucent); + A_OverlayAlpha(PSP_WEAPON+1,.5); } - action state A_JumpByAmmoType( StateLabel a, StateLabel b, StateLabel c, StateLabel d, StateLabel g, StateLabel o = null ) + action state A_JumpX( StateLabel a, StateLabel g ) { - A_Overlay(-9999,o); A_GlassOverlay(g); - if ( invoker.loadammo is "HellblazerMissiles" ) return invoker.FindState(a); - if ( invoker.loadammo is "HellblazerCrackshots" ) return invoker.FindState(b); - if ( invoker.loadammo is "HellblazerRavagers" ) return invoker.FindState(c); - if ( invoker.loadammo is "HellblazerWarheads" ) return invoker.FindState(d); return invoker.FindState(a); } @@ -343,13 +137,13 @@ Class Hellblazer : SWWMWeapon { bool good = Super.PickupForAmmoSWWM(ownedWeapon); let Owner = ownedWeapon.Owner; - if ( (AmmoGive1 == 0) && loadammo ) + if ( (AmmoGive1 == 0) && (clipcount > 0) ) { // let's get this bread - Inventory cur = Owner.FindInventory(loadammo); + Inventory cur = Owner.FindInventory(AmmoType1); if ( !cur ) { - cur = Inventory(Spawn(loadammo)); + cur = Inventory(Spawn(AmmoType1)); cur.Amount = 0; cur.AttachToOwner(Owner); } @@ -362,110 +156,37 @@ Class Hellblazer : SWWMWeapon return good; } - override void AttachToOwner( Actor other ) + override void InitializeWeapon() { - if ( !loadammo ) - { - // 3 hellblazer missiles loaded - loadammo = "HellblazerMissiles"; - clipcount = 3; - magpos = 0; - for ( int i=0; i<6; i++ ) - magstate[i] = (i>2); - } - nextammo = loadammo; - Super.AttachToOwner(other); + // 3 hellblazer missiles loaded + clipcount = 3; + magpos = 0; + for ( int i=0; i<6; i++ ) + magstate[i] = (i>2); } clearscope int LoadedCapacity() const { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - static const int typeclipcount[] = {6,3,3,2}; - for ( int i=0; i<4; i++ ) - { - if ( loadammo != types[i] ) continue; - let a = Owner.FindInventory(types[i]); - return min(a.Amount+clipcount,typeclipcount[i]); - break; - } - return 0; - } - - action void A_PickNextAmmo() - { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - int curidx = 0; - for ( int i=0; i<4; i++ ) - { - if ( invoker.nextammo != types[i] ) continue; - curidx = (i+1)%4; - break; - } - Class oldammo = invoker.nextammo, newammo = invoker.loadammo; - for ( int i=0; i<4; i++ ) - { - int nidx = (i+curidx)%4; - if ( CountInv(types[nidx]) <= 0 ) continue; - newammo = types[nidx]; - break; - } - if ( newammo != oldammo ) A_StartSound("misc/invchange",CHAN_WEAPONEXTRA,CHANF_UI|CHANF_LOCAL); - invoker.nextammo = newammo; - } - - action void A_ZoomHold() - { - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - if ( player.cmd.buttons&BT_ZOOM ) return; - player.SetPSPrite(PSP_WEAPON,invoker.FindState("Ready")); + return min(Ammo1.Amount+clipcount,6); } action void A_SwapAmmo() { - let amo = FindInventory(invoker.loadammo); - // if we're loading the same ammo type, we only need to remove the needed ammo - if ( invoker.loadammo == invoker.nextammo ) - { - int takeamt = invoker.LoadedCapacity()-invoker.clipcount; - invoker.clipcount = invoker.LoadedCapacity(); - if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) - amo.Amount = max(0,amo.Amount-takeamt); - invoker.magpos = 0; - for ( int i=0; i<6; i++ ) - invoker.magstate[i] = !(invoker.clipcount > i); - return; - } - // re-add/drop any still loaded - int maxgiveamt = min(amo.MaxAmount-amo.Amount,invoker.clipcount); - int dropamt = invoker.clipcount-maxgiveamt; - if ( (dropamt > 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) amo.CreateTossable(dropamt); - amo.Amount = min(amo.MaxAmount,amo.Amount+invoker.clipcount); - // swap - invoker.clipcount = 0; - invoker.loadammo = invoker.nextammo; + int takeamt = invoker.LoadedCapacity()-invoker.clipcount; invoker.clipcount = invoker.LoadedCapacity(); + if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-takeamt); invoker.magpos = 0; for ( int i=0; i<6; i++ ) invoker.magstate[i] = !(invoker.clipcount > i); - if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) - { - let namo = FindInventory(invoker.loadammo); - namo.Amount = max(0,namo.Amount-invoker.clipcount); - } + return; } action void A_HellblazerReady() { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; int flg = WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1; // can we fire? - bool canfire = (invoker.clipcount > 0); - for ( int i=0; i<4; i++ ) - { - if ( CountInv(types[i]) <= 0 ) continue; - canfire = true; - break; - } + bool canfire = (invoker.clipcount > 0) || (invoker.Ammo1.Amount > 0); if ( !canfire ) flg |= WRF_NOPRIMARY|WRF_NOSECONDARY; A_WeaponReady(flg); if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) ) @@ -475,56 +196,30 @@ Class Hellblazer : SWWMWeapon // check if weapon was dropped or interrupted in some way before the mag spin could be done action void A_CheckSpinSkip() { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; - static const int magcap[] = {6,3,3,2}; for ( int i=0; i<3; i++ ) invoker.seektarget[i] = null; - for ( int i=0; i<4; i++ ) - { - if ( invoker.loadammo != types[i] ) continue; - // check preloaded rockets first (note, this theoretically would never go below zero) - invoker.magpos = max(0,invoker.magpos-invoker.preload); - invoker.preload = 0; - // do the spin - invoker.magpos = (invoker.magpos+invoker.spinskipped)%magcap[i]; - invoker.spinskipped = 0; - break; - } + // check preloaded rockets first (note, this theoretically would never go below zero) + invoker.magpos = max(0,invoker.magpos-invoker.preload); + invoker.preload = 0; + // do the spin + invoker.magpos = (invoker.magpos+invoker.spinskipped)%6; + invoker.spinskipped = 0; } action void A_UpdatePickup() { - static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; + // if not initialized, default to 3 loaded rockets + int loaded = invoker.bInitialized?invoker.clipcount:3; for ( int i=0; i<6; i++ ) - { - if ( !invoker.pickuprockets[i] ) - { - invoker.pickuprockets[i] = HellblazerXSub(Spawn("HellblazerXSub",pos)); - invoker.pickuprockets[i].angle = angle; - invoker.pickuprockets[i].target = invoker; - invoker.pickuprockets[i].weap = invoker; - invoker.pickuprockets[i].FloatBobPhase = FloatBobPhase; - invoker.pickuprockets[i].ridx = i; - } - invoker.pickuprockets[i].UpdateMe(); - } - int curtype = 0; - for ( int i=0; i<4; i++ ) - { - if ( invoker.loadammo != types[i] ) continue; - curtype = i; - break; - } - SetState(SpawnState+curtype+1); + A_ChangeModel("",0,"","",2+i,"models",(i>=loaded)?"":"HellblazerMissile.png",CMDL_USESURFACESKIN,-1); } action void A_CheckLockOn() { if ( invoker.seekcnt > invoker.preload ) return; - Vector3 x, y, z, x2, y2, z2, dir; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x); + Vector3 origin = SWWMUtility.GetPlayerEye(self); // try to catch target in cone of vision - [x2, y2, z2] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 dir; + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); Array hits; hits.Clear(); int rings = 1; @@ -533,7 +228,7 @@ Class Hellblazer : SWWMWeapon { for ( int j=0; j<360; j+=(360/rings) ) { - dir = (x2+y2*cos(j)*i+z2*sin(j)*i).unit(); + dir = SWWMUtility.ConeSpread(x,y,z,j,i); LineTrace(atan2(dir.y,dir.x),8000.,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); if ( d.HitType != TRACE_HitActor ) continue; if ( (d.HitActor == invoker.seektarget[0]) @@ -546,13 +241,13 @@ Class Hellblazer : SWWMWeapon for ( int k=0; k= 10)) ) { invoker.preloadcnt = 0; - return A_JumpByAmmoType("PreFire_1","PreFire_2","PreFire_3","PreFire_4","Ready_G"); + return A_JumpX('PreFire','Ready_G'); } if ( invoker.preloadcnt >= 10 ) { invoker.preloadcnt = 0; - return A_JumpByAmmoType("PreLoad_1","PreLoad_2","PreFire_3","PreFire_4","Ready_G"); + return A_JumpX('PreLoad','Ready_G'); } return ResolveState(null); } - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); + return A_JumpX('DoFire','DoFire_G'); } Wait; - Fire_1: - XZW2 A 1 A_HellblazerFire(0); + DoFire: + XZW2 A 1 A_HellblazerFire(); XZW2 QRSTUVW 2; XZW2 A 0 { @@ -781,37 +420,14 @@ Class Hellblazer : SWWMWeapon { invoker.preload--; invoker.spinskipped--; - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); + return A_JumpX('DoFire','DoFire_G'); } return ResolveState(null); } - Goto Cycle_1; - Fire_2: - XZW6 V 1 A_HellblazerFire(1); - XZW7 LMNOPQR 2; - XZW6 V 0 - { - // chain-fire - if ( invoker.preload > 0 ) - { - invoker.preload--; - invoker.spinskipped--; - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); - } - return ResolveState(null); - } - Goto Cycle_2; - Fire_3: - XZWB T 1 A_HellblazerFire(2); - XZWC JKLMNOP 2; - Goto Cycle_3; - Fire_4: - XZWG R 1 A_HellblazerFire(3); - XZWH HIJKLMN 2; - Goto Cycle_4; - Fire_G: - XZWL S 1; - XZWM IJKLMNO 2; + Goto Cycle; + DoFire_G: + XZW7 A 1; + XZW7 QRSTUVW 2; Goto Ready_G; // state jump to cycling is done elsewhere AltFire: #### # 0 @@ -822,30 +438,28 @@ Class Hellblazer : SWWMWeapon #### # 1 { if ( invoker.clipcount <= 0 ) - { - if ( CountInv(invoker.nextammo) <= 0 ) A_PickNextAmmo(); - return A_JumpByAmmoType("Unload_1","Unload_2","Unload_3","Unload_4","Unload_G"); - } + return A_JumpX('Unload','Unload_G'); if ( player.cmd.buttons&BT_ALTATTACK ) { + A_CanBob(); invoker.preloadcnt++; if ( (player.cmd.buttons&BT_ATTACK) || ((invoker.clipcount < 2) && (invoker.preloadcnt >= 10)) ) { invoker.preloadcnt = 0; - return A_JumpByAmmoType("PreAltFire_1","PreAltFire_2","PreAltFire_3","PreAltFire_4","Ready_G"); + return A_JumpX('PreAltFire','Ready_G'); } if ( invoker.preloadcnt >= 10 ) { invoker.preloadcnt = 0; - return A_JumpByAmmoType("PreAltLoad_1","PreAltLoad_2","PreAltFire_3","PreAltFire_4","Ready_G"); + return A_JumpX('PreAltLoad','Ready_G'); } return ResolveState(null); } - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); + return A_JumpX('DoAltFire','DoAltFire_G'); } Wait; - AltFire_1: - XZW2 A 1 A_HellblazerFire(0,true); + DoAltFire: + XZW2 A 1 A_HellblazerFire(true); XZW2 XYZ 2; XZW3 ABCD 2; XZW2 A 0 @@ -855,125 +469,71 @@ Class Hellblazer : SWWMWeapon { invoker.preload--; invoker.spinskipped--; - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); + return A_JumpX('DoAltFire','DoAltFire_G'); } return ResolveState(null); } - Goto Cycle_1; - AltFire_2: - XZW6 V 1 A_HellblazerFire(1,true); - XZW7 STUVWXY 2; - XZW6 V 0 - { - // chain-fire - if ( invoker.preload > 0 ) - { - invoker.preload--; - invoker.spinskipped--; - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); - } - return ResolveState(null); - } - Goto Cycle_2; - AltFire_3: - XZWB T 1 A_HellblazerFire(2,true); - XZWC QRSTUVW 2; - Goto Cycle_3; - AltFire_4: - XZWG R 1 A_HellblazerFire(3,true); - XZWH OPQRSTU 2; - Goto Cycle_4; - AltFire_G: - XZWL S 1; - XZWM PQRSTUV 2; + Goto Cycle; + DoAltFire_G: + XZW7 A 1; + XZW7 XYZ 2; + XZW8 ABCD 2; Goto Ready_G; // state jump to cycling is done elsewhere - PreLoad_1: - XZW2 A 10 A_StartSound("hellblazer/preload",CHAN_WEAPON,CHANF_OVERLAP); + PreLoad: + XZW2 A 10 + { + A_StartSound("hellblazer/preload",CHAN_WEAPON,CHANF_OVERLAP); + A_CanBob(); + } XZW2 A 2 { invoker.magpos = (invoker.magpos+1)%6; invoker.preload++; - A_GlassOverlay("Cycle_G1"); + A_GlassOverlay('Cycle_G'); + A_CanBob(); } - XZW3 E 2; - XZW3 FGHI 2; - XZW3 I 0; - XZW3 FE 2; + XZW3 E 2 A_CanBob(); + XZW3 FGHI 2 A_CanBob(); + XZW3 I 0 A_CanBob(); + XZW3 FE 2 A_CanBob(); XZW2 A 1 { + A_CanBob(); if ( !(player.cmd.buttons&BT_ATTACK) ) - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); + return A_JumpX('DoFire','DoFire_G'); if ( (player.cmd.buttons&BT_ALTATTACK) || (invoker.preload >= min(invoker.clipcount-1,2)) ) - return A_JumpByAmmoType("PreFire_1","PreFire_2","PreFire_3","PreFire_4","Ready_G"); - return ResolveState("PreLoad_1"); + return A_JumpX('PreFire','Ready_G'); + return A_JumpX('PreLoad','Ready_G'); } Wait; - PreLoad_2: - XZW6 V 10 A_StartSound("hellblazer/preload",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 V 2 + PreAltLoad: + XZW2 A 10 { - invoker.magpos = (invoker.magpos+1)%3; - invoker.preload++; - A_GlassOverlay("Cycle_G2"); + A_StartSound("hellblazer/preload",CHAN_WEAPON,CHANF_OVERLAP); + A_CanBob(); } - XZW7 Z 2; - XZW8 ABCDEFG 2; - XZW8 G 0; - XZW8 A 2; - XZW7 Z 2; - XZW6 V 1 - { - if ( !(player.cmd.buttons&BT_ATTACK) ) - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); - if ( (player.cmd.buttons&BT_ALTATTACK) || (invoker.preload >= min(invoker.clipcount-1,2)) ) - return A_JumpByAmmoType("PreFire_1","PreFire_2","PreFire_3","PreFire_4","Ready_G"); - return ResolveState("PreLoad_2"); - } - Wait; - PreAltLoad_1: - XZW2 A 10 A_StartSound("hellblazer/preload",CHAN_WEAPON,CHANF_OVERLAP); XZW2 A 2 { invoker.magpos = (invoker.magpos+1)%6; invoker.preload++; - A_GlassOverlay("Cycle_G1"); + A_GlassOverlay('Cycle_G'); + A_CanBob(); } - XZW3 E 2; - XZW3 FGHI 2; - XZW3 I 0; - XZW3 FE 2; + XZW3 E 2 A_CanBob(); + XZW3 FGHI 2 A_CanBob(); + XZW3 I 0 A_CanBob(); + XZW3 FE 2 A_CanBob(); XZW2 A 1 { + A_CanBob(); if ( !(player.cmd.buttons&BT_ALTATTACK) ) - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); + return A_JumpX('DoAltFire','DoAltFire_G'); if ( (player.cmd.buttons&BT_ATTACK) || (invoker.preload >= min(invoker.clipcount-1,2)) ) - return A_JumpByAmmoType("PreAltFire_1","PreAltFire_2","PreAltFire_3","PreAltFire_4","Ready_G"); - return ResolveState("PreAltLoad_1"); + return A_JumpX('PreAltFire','Ready_G'); + return A_JumpX('PreAltLoad','Ready_G'); } Wait; - PreAltLoad_2: - XZW6 V 10 A_StartSound("hellblazer/preload",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 V 2 - { - invoker.magpos = (invoker.magpos+1)%3; - invoker.preload++; - A_GlassOverlay("Cycle_G2"); - } - XZW7 Z 2; - XZW8 ABCDEFG 2; - XZW8 G 0; - XZW8 A 2; - XZW7 Z 2; - XZW6 V 1 - { - if ( !(player.cmd.buttons&BT_ALTATTACK) ) - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); - if ( (player.cmd.buttons&BT_ATTACK) || (invoker.preload >= min(invoker.clipcount-1,2)) ) - return A_JumpByAmmoType("PreAltFire_1","PreAltFire_2","PreAltFire_3","PreAltFire_4","Ready_G"); - return ResolveState("PreAltLoad_2"); - } - Wait; - PreFire_1: + PreFire: XZW2 A 0 { invoker.seekcnt = 0; @@ -982,8 +542,8 @@ Class Hellblazer : SWWMWeapon XZW2 A 1 { if ( !(player.cmd.buttons&BT_ATTACK) ) - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + return A_JumpX('DoFire','DoFire_G'); + A_CanBob(); if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) A_CheckLockOn(); if ( (player.cmd.buttons&BT_RELOAD) && !(player.oldbuttons&BT_RELOAD) ) @@ -995,73 +555,7 @@ Class Hellblazer : SWWMWeapon return ResolveState(null); } Wait; - PreFire_2: - XZW6 V 0 - { - invoker.seekcnt = 0; - A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP); - } - XZW6 V 1 - { - if ( !(player.cmd.buttons&BT_ATTACK) ) - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) - A_CheckLockOn(); - if ( (player.cmd.buttons&BT_RELOAD) && !(player.oldbuttons&BT_RELOAD) ) - { - for ( int i=0; i<3; i++ ) invoker.seektarget[i] = null; - if ( invoker.seekcnt > 0 ) A_StartSound("hellblazer/clear",CHAN_WEAPON,CHANF_OVERLAP); - invoker.seekcnt = 0; - } - return ResolveState(null); - } - Wait; - PreFire_3: - XZWB T 0 - { - invoker.seekcnt = 0; - A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP); - } - XZWB T 1 - { - if ( !(player.cmd.buttons&BT_ATTACK) ) - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) - A_CheckLockOn(); - if ( (player.cmd.buttons&BT_RELOAD) && !(player.oldbuttons&BT_RELOAD) ) - { - for ( int i=0; i<3; i++ ) invoker.seektarget[i] = null; - if ( invoker.seekcnt > 0 ) A_StartSound("hellblazer/clear",CHAN_WEAPON,CHANF_OVERLAP); - invoker.seekcnt = 0; - } - return ResolveState(null); - } - Wait; - PreFire_4: - XZWG R 0 - { - invoker.seekcnt = 0; - A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP); - } - XZWG R 1 - { - if ( !(player.cmd.buttons&BT_ATTACK) ) - return A_JumpByAmmoType("Fire_1","Fire_2","Fire_3","Fire_4","Fire_G"); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) - A_CheckLockOn(); - if ( (player.cmd.buttons&BT_RELOAD) && !(player.oldbuttons&BT_RELOAD) ) - { - for ( int i=0; i<3; i++ ) invoker.seektarget[i] = null; - if ( invoker.seekcnt > 0 ) A_StartSound("hellblazer/clear",CHAN_WEAPON,CHANF_OVERLAP); - invoker.seekcnt = 0; - } - return ResolveState(null); - } - Wait; - PreAltFire_1: + PreAltFire: XZW2 A 0 { invoker.seekcnt = 0; @@ -1070,8 +564,8 @@ Class Hellblazer : SWWMWeapon XZW2 A 1 { if ( !(player.cmd.buttons&BT_ALTATTACK) ) - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + return A_JumpX('DoAltFire','DoAltFire_G'); + A_CanBob(); if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) A_CheckLockOn(); if ( (player.cmd.buttons&BT_RELOAD) && !(player.oldbuttons&BT_RELOAD) ) @@ -1083,329 +577,125 @@ Class Hellblazer : SWWMWeapon return ResolveState(null); } Wait; - PreAltFire_2: - XZW6 V 0 - { - invoker.seekcnt = 0; - A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP); - } - XZW6 V 1 - { - if ( !(player.cmd.buttons&BT_ALTATTACK) ) - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) - A_CheckLockOn(); - if ( (player.cmd.buttons&BT_RELOAD) && !(player.oldbuttons&BT_RELOAD) ) - { - for ( int i=0; i<3; i++ ) invoker.seektarget[i] = null; - if ( invoker.seekcnt > 0 ) A_StartSound("hellblazer/clear",CHAN_WEAPON,CHANF_OVERLAP); - invoker.seekcnt = 0; - } - return ResolveState(null); - } - Wait; - PreAltFire_3: - XZWB T 0 - { - invoker.seekcnt = 0; - A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP); - } - XZWB T 1 - { - if ( !(player.cmd.buttons&BT_ALTATTACK) ) - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) - A_CheckLockOn(); - if ( (player.cmd.buttons&BT_RELOAD) && !(player.oldbuttons&BT_RELOAD) ) - { - for ( int i=0; i<3; i++ ) invoker.seektarget[i] = null; - if ( invoker.seekcnt > 0 ) A_StartSound("hellblazer/clear",CHAN_WEAPON,CHANF_OVERLAP); - invoker.seekcnt = 0; - } - return ResolveState(null); - } - Wait; - PreAltFire_4: - XZWG R 0 - { - invoker.seekcnt = 0; - A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP); - } - XZWG R 1 - { - if ( !(player.cmd.buttons&BT_ALTATTACK) ) - return A_JumpByAmmoType("AltFire_1","AltFire_2","AltFire_3","AltFire_4","AltFire_G"); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - if ( (player.cmd.buttons&BT_ZOOM) && !(player.oldbuttons&BT_ZOOM) ) - A_CheckLockOn(); - if ( (player.cmd.buttons&BT_RELOAD) && !(player.oldbuttons&BT_RELOAD) ) - { - for ( int i=0; i<3; i++ ) invoker.seektarget[i] = null; - if ( invoker.seekcnt > 0 ) A_StartSound("hellblazer/clear",CHAN_WEAPON,CHANF_OVERLAP); - invoker.seekcnt = 0; - } - return ResolveState(null); - } - Wait; - Cycle_1: + Cycle: XZW2 A 2 { + A_CanBob(); invoker.spinskipped--; invoker.magpos = (invoker.magpos+1)%6; - A_GlassOverlay("Cycle_G1"); + A_GlassOverlay('Cycle_G'); } - XZW3 E 2; - XZW3 FGHI 2; - XZW3 I 0; - XZW3 FE 2; - Goto Ready_1; - Cycle_2: - XZW6 V 2 - { - invoker.spinskipped--; - invoker.magpos = (invoker.magpos+1)%3; - A_GlassOverlay("Cycle_G2"); - } - XZW7 Z 2; - XZW8 ABCDEFG 2; - XZW8 G 0; - XZW8 A 2; - XZW7 Z 2; - Goto Ready_2; - Cycle_3: - XZWB T 2 - { - invoker.spinskipped--; - invoker.magpos = (invoker.magpos+1)%3; - A_GlassOverlay("Cycle_G2"); - } - XZWC X 2; - XZWC YZ 2; - XZWD ABCDE 2; - XZWD E 0; - XZWC YX 2; - Goto Ready_3; - Cycle_4: - XZWG R 2 - { - invoker.spinskipped--; - invoker.magpos = (invoker.magpos+1)%2; - A_GlassOverlay("Cycle_G3"); - } - XZWH V 2; - XZWH WXYZ 2; - XZWI ABCDEF 2; - XZWI F 0; - XZWH WV 2; - Goto Ready_4; - Cycle_G1: - XZWL S 2 A_StartSound("hellblazer/shift",CHAN_WEAPON,CHANF_OVERLAP); - XZWM W 2; - XZWM X 2 A_StartSound("hellblazer/spin",CHAN_WEAPON,CHANF_OVERLAP); - XZWM YZ 2; - XZWN A 2; - XZWN A 0 A_StartSound("hellblazer/shift",CHAN_WEAPON,CHANF_OVERLAP); - XZWM XW 2; - Goto Ready_G; - Cycle_G2: - XZWL S 2 A_StartSound("hellblazer/shift",CHAN_WEAPON,CHANF_OVERLAP); - XZWM W 2; - XZWN B 2 A_StartSound("hellblazer/spin",CHAN_WEAPON,CHANF_OVERLAP); - XZWN CD 2; - XZWN E 2 A_StartSound("hellblazer/spin",CHAN_WEAPON,CHANF_OVERLAP); - XZWN FGH 2; - XZWN H 0 A_StartSound("hellblazer/shift",CHAN_WEAPON,CHANF_OVERLAP); - XZWN B 2; - XZWM W 2; - Goto Ready_G; - Cycle_G3: - XZWL S 2 A_StartSound("hellblazer/shift",CHAN_WEAPON,CHANF_OVERLAP); - XZWM W 2; - XZWN I 2 A_StartSound("hellblazer/spin",CHAN_WEAPON,CHANF_OVERLAP); - XZWN JK 2; - XZWN L 2 A_StartSound("hellblazer/spin",CHAN_WEAPON,CHANF_OVERLAP); - XZWN MN 2; - XZWN O 2 A_StartSound("hellblazer/spin",CHAN_WEAPON,CHANF_OVERLAP); - XZWN PQR 2; - XZWN R 0 A_StartSound("hellblazer/shift",CHAN_WEAPON,CHANF_OVERLAP); - XZWN I 2; - XZWM W 2; + XZW3 E 2 A_CanBob(); + XZW3 FGHI 2 A_CanBob(); + XZW3 I 0 A_CanBob(); + XZW3 FE 2 A_CanBob(); + Goto Ready; + Cycle_G: + XZW7 A 2 A_StartSound("hellblazer/shift",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 E 2; + XZW8 F 2 A_StartSound("hellblazer/spin",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 GH 2; + XZW8 I 2; + XZW8 I 0 A_StartSound("hellblazer/shift",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 FE 2; Goto Ready_G; Reload: XZW2 A 2 { - if ( (invoker.clipcount <= 0) && (CountInv(invoker.nextammo) <= 0) ) A_PickNextAmmo(); - if ( (invoker.clipcount >= invoker.LoadedCapacity()) && (invoker.loadammo == invoker.nextammo) ) - return A_JumpByAmmoType("Idle_1","Idle_2","Idle_3","Idle_4","Idle_G"); - return A_JumpByAmmoType("Unload_1","Unload_2","Unload_3","Unload_4","Unload_G"); + if ( invoker.clipcount >= invoker.LoadedCapacity() ) + return A_JumpX('Zoom','Zoom_G'); + return A_JumpX('Unload','Unload_G'); } Goto Ready; - Unload_1: + Unload: XZW2 A 2; XZW3 JKLMNOPQRSTUVWXYZ 2; - XZW4 ABCDEFGHIJ 2; - XZWR JKLMN 3; - XZW4 J 2 - { - A_SwapAmmo(); - return A_JumpByAmmoType("Load_1","Load_2","Load_3","Load_4","Load_G"); - } - Goto Load_1; - Unload_2: - XZW6 V 2; - XZW8 HIJKLMNOPQRSTUVWXYZ 2; - XZW9 ABCDEFGH 2; - XZWR JKLMN 3; - XZW9 H 2 - { - A_SwapAmmo(); - return A_JumpByAmmoType("Load_1","Load_2","Load_3","Load_4","Load_G"); - } - Goto Load_2; - Unload_3: - XZWB T 2; - XZWD FGHIJKLMNOPQRSTUVWXYZ 2; - XZWE ABCDEF 2; - XZWR JKLMN 3; - XZWE F 2 - { - A_SwapAmmo(); - return A_JumpByAmmoType("Load_1","Load_2","Load_3","Load_4","Load_G"); - } - Goto Load_3; - Unload_4: - XZWG R 2; - XZWI GHIJKLMNOPQRSTUVWXYZ 2; - XZWJ ABCDEFG 2; - XZWR JKLMN 3; - XZWJ G 2 - { - A_SwapAmmo(); - return A_JumpByAmmoType("Load_1","Load_2","Load_3","Load_4","Load_G"); - } - Goto Load_4; + XZW4 ABCDEFGHIJ 1; + XZW6 VWXYZ 3; + XZW4 J 0 A_SwapAmmo(); + Goto Load; Unload_G: - XZWL S 2 A_StartSound("hellblazer/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - XZWN STU 2; - XZWN V 2 A_StartSound("hellblazer/open",CHAN_WEAPON,CHANF_OVERLAP); - XZWN WXYZ 2; - XZWO ABCDEFGH 2; - XZWO I 2 A_StartSound("hellblazer/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWO JKLMNOPQRS 2; - XZWR EFGHI 3; + XZW7 A 2 A_StartSound("hellblazer/meleestart",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 JKL 2; + XZW8 M 2 A_StartSound("hellblazer/open",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 NOPQ 2; + XZW8 R 2 A_QuakeEx(.8,.8,.8,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + XZW8 STUVWXY 2; + XZW8 Z 2 + { + A_BumpView(-1.); + A_StartSound("hellblazer/magout",CHAN_WEAPON,CHANF_OVERLAP); + } + XZW9 ABCDEFGHIJ 1; + XZWB VW 3 A_BumpView(.3,tics:3); + XZWB X 3; + XZWB YZ 3 A_BumpView(-.3,tics:3); Goto Load_G; - Load_1: - XZW4 JKLMNOPQRSTUVWXYZ 2; + Load: + XZW4 JKLMNOPQRS 1; + XZW4 TUVWXYZ 2; XZW5 ABCDEFGHIJ 2; - Goto Ready_1; - Load_2: - XZW9 HIJKLMNOPQRSTUVWXYZ 2; - XZWA ABCDEFGH 2; - Goto Ready_2; - Load_3: - XZWE FGHIJKLMNOPQRSTUVWXYZ 2; - XZWF ABCDEF 2; - Goto Ready_3; - Load_4: - XZWJ GHIJKLMNOPQRSTUVWXYZ 2; - XZWK ABCDEFG 2; - Goto Ready_4; + Goto Ready; Load_G: - XZWO S 2 A_PlayerReload(); - XZWO TUVWXY 2; - XZWO Z 2 A_StartSound("hellblazer/magin",CHAN_WEAPON,CHANF_OVERLAP); - XZWP ABCDEFG 2; - XZWP H 2 A_StartSound("hellblazer/close",CHAN_WEAPON,CHANF_OVERLAP); - XZWP IJKL 2; - XZWP M 2 A_StartSound("hellblazer/meleestop",CHAN_WEAPON,CHANF_OVERLAP); - XZWP NOPQRS 2; + XZW9 J 1 A_PlayerReload(); + XZW9 KLMNOP 1; + XZW9 Q 1 + { + A_BumpView(1.); + A_StartSound("hellblazer/magin",CHAN_WEAPON,CHANF_OVERLAP); + } + XZW9 RS 1; + XZW9 TUVWX 2; + XZW9 Y 2 A_StartSound("hellblazer/close",CHAN_WEAPON,CHANF_OVERLAP); + XZW9 Z 2; + XZWA A 2 A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + XZWA BC 2; + XZWA D 2 A_StartSound("hellblazer/meleestop",CHAN_WEAPON,CHANF_OVERLAP); + XZWA EFGHIJ 2; Goto Ready_G; - Idle_1: - XZW2 A 2; + Zoom: + XZW2 A 2 A_GlassOverlay('Zoom_G'); XZW5 KLMNOPQRSTUVWXYZ 2; XZW6 A 2; - Goto Ready_1; - Idle_2: - XZW6 V 2; - XZWA IJKLMNOPQRSTUVWXY 2; - Goto Ready_2; - Idle_3: - XZWB T 2; - XZWF GHIJKLMNOPQRSTUVW 2; - Goto Ready_3; - Idle_4: - XZWG R 2; - XZWK HIJKLMNOPQRSTUVWX 2; - Goto Ready_4; - Idle_G: - XZWL S 2 + Goto Ready; + Zoom_G: + XZW7 A 2 { A_StartSound("hellblazer/idle",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); } - XZWP TUVWX 2; - XZWP Y 2 A_StartSound("hellblazer/dustoff",CHAN_WEAPON,CHANF_OVERLAP); - XZWP Z 2; - XZWQ ABCDEFGHIJ 2; + XZWA KLMNO 2; + XZWA P 2 A_StartSound("hellblazer/dustoff",CHAN_WEAPON,CHANF_OVERLAP); + XZWA Q 2; + XZWA RSTUVWXYZ 2; + XZWB A 2; Goto Ready_G; - Zoom: - #### # 1 - { - A_PickNextAmmo(); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - } - #### # 1 A_ZoomHold(); - Wait; User1: - XZW2 A 0 A_JumpByAmmoType("User1_1","User1_2","User1_3","User1_4","User1_G"); - User1_1: - XZW2 A 2; + XZW2 A 2 A_GlassOverlay('User1_G'); XZW6 BCDE 2; XZW6 FGH 1; XZW6 IJK 2; XZW6 LMNOPQRSTU 2; - Goto Ready_1; - User1_2: - XZW6 V 2; - XZWA Z 2; - XZWB ABC 2; - XZWB DEF 1; - XZWB GHI 2; - XZWB JKLMNOPQRS 2; - Goto Ready_2; - User1_3: - XZWB T 2; - XZWF XYZ 2; - XZWG A 2; - XZWG BCD 1; - XZWG EFG 2; - XZWG HIJKLMNOPQ 2; - Goto Ready_3; - User1_4: - XZWG R 2; - XZWK YZ 2; - XZWL AB 2; - XZWL CDE 1; - XZWL FGH 2; - XZWL IJKLMNOPQR 2; - Goto Ready_4; + Goto Ready; User1_G: - XZWL S 2 + XZW7 A 2 { A_StartSound("hellblazer/meleestart",CHAN_WEAPON,CHANF_OVERLAP); A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZWQ KLM 2; - XZWQ N 2 A_Parry(9); - XZWQ OP 1; - XZWQ Q 1 A_Melee(75,"demolitionist/whitl",1.05,1.2,1.2); - XZWQ RSTUV 2; - XZWQ W 2 A_StartSound("hellblazer/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZWQ XYZ 2; - XZWR ABCD 2; + XZWB BCD 2 A_BumpView(.5,tics:2); + XZWB E 2 + { + A_BumpFOV(.96); + A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_Parry(9); + } + XZWB FG 1 A_BumpView(-3); + XZWB H 1 A_Melee(75,"demolitionist/whitl",1.05,1.2,1.2); + XZWB IJKLM 2; + XZWB N 2 A_StartSound("hellblazer/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZWB OPQRSTU 2; Goto Ready_G; } } diff --git a/zscript/weapons/swwm_blazeit_fx.zsc b/zscript/weapons/swwm_blazeit_fx.zsc index 170a8ae78..eb5588e35 100644 --- a/zscript/weapons/swwm_blazeit_fx.zsc +++ b/zscript/weapons/swwm_blazeit_fx.zsc @@ -9,39 +9,14 @@ Class HellblazerExplLight : PaletteLight ReactionTime 25; } } -Class HellblazerExplLight2 : PaletteLight +Class HellblazerSubExpl : SWWMNonInteractiveActor { Default { - Tag "HellExpl"; - Args 0,0,0,120; - ReactionTime 20; - } -} -Class HellblazerExplLight3 : PaletteLight -{ - Default - { - Tag "HellExpl"; - Args 0,0,0,900; - ReactionTime 60; - } -} - -Class HellblazerSubExpl : Actor -{ - Default - { - RenderStyle "Add"; + RenderStyle 'Add'; Scale 2.2; - Radius 0.1; - Height 0; Alpha .75; - +NOGRAVITY; - +NOBLOCKMAP; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; +ROLLSPRITE; +ROLLCENTER; } @@ -52,17 +27,6 @@ Class HellblazerSubExpl : Actor scale.x *= RandomPick[ExploS](-1,1); scale.y *= RandomPick[ExploS](-1,1); } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -71,30 +35,13 @@ Class HellblazerSubExpl : Actor } } -Class HellblazerRing : Actor +Class HellblazerRing : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; + RenderStyle 'Add'; Scale 2.; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { @@ -104,70 +51,86 @@ Class HellblazerRing : Actor } } -Class HellblazerRing2 : Actor +Class HellblazerArmTrail : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Scale 3.; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; + RenderStyle 'Add'; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } + Scale 2.5; } States { Spawn: - XRG3 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.1); + XEX0 ACEGIKMOQS 1 Bright; Stop; } } -Class HellblazerTrail : Actor +Class HellblazerArm : Actor { Default { - RenderStyle "Add"; - Radius .1; - Height 0.; - Scale .2; - Alpha .3; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +FORCEXYBILLBOARD; - +NOINTERACTION; + Obituary "$O_HELLBLAZER"; + SelfObituary "$SO_HELLBLAZER"; + DamageType 'Fire'; + PROJECTILE; + +THRUACTORS; + +BOUNCEONWALLS; + +BOUNCEONFLOORS; + +BOUNCEONCEILINGS; + +CANBOUNCEWATER; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + -NOGRAVITY; + +NOFRICTION; + Gravity 0.35; + BounceFactor 1.0; + Radius 4; + Height 4; } override void PostBeginPlay() { Super.PostBeginPlay(); - SetState(FindState("Spawn")+Random[ExploS](0,7)); + reactiontime = Random[ExploS](6,8); + double ang, pt; + ang = FRandom[ExploS](0,360); + pt = FRandom[ExploS](-90,90); + vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](30.,40.); } - override void Tick() + States { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) + Spawn: + TNT1 A 1 { - if ( !SetState(CurState.NextState) ) - return; + Spawn('HellblazerArmTrail',pos); + SWWMUtility.DoExplosion(self,6+reactiontime/2,3000+500*reactiontime,80+10*reactiontime); + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,5); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); + s.vel = pvel+vel*.2; + s.scolor = Color(4,2,1)*Random[ExploS](48,63); + s.framestep = Random[ExploS](1,3); + s.scale *= 3.; + s.alpha *= 0.1+.4*(ReactionTime/8.); + A_CountDown(); } + Wait; + } +} + +Class HellblazerTrail : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + Scale .2; + Alpha .3; + +FORCEXYBILLBOARD; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + SetState(FindState('Spawn')+Random[ExploS](0,7)); } States { @@ -178,7 +141,7 @@ Class HellblazerTrail : Actor A_SetScale(scale.x*.95); if ( waterlevel > 0 ) { - let b = Spawn("SWWMBubble",pos); + let b = Spawn('SWWMBubble',pos); b.vel = vel; b.scale *= scale.x; Destroy(); @@ -188,46 +151,29 @@ Class HellblazerTrail : Actor } } -Class HellblazerFlare : Actor +Class HellblazerFlare : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius .1; - Height 0.; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; + RenderStyle 'Add'; +FORCEXYBILLBOARD; - +NOINTERACTION; - } - - override void PostBeginPlay() - { - if ( !master ) return; - State sp = FindState("Spawn"); - if ( master is 'HellblazerCrackshot' ) SetState(sp+1); - else if ( master is 'HellblazerRavager' ) SetState(sp+2); - else if ( master is 'HellblazerWarhead' ) SetState(sp+3); } override void Tick() { - if ( isFrozen() ) return; if ( !master || !master.bMISSILE ) { Destroy(); return; } - Vector3 traildir = -(cos(master.angle)*cos(master.pitch),sin(master.angle)*cos(master.pitch),sin(-master.pitch)); + Vector3 traildir = -SWWMUtility.Vec3FromAngles(master.angle,master.pitch); SetOrigin(level.Vec3Offset(master.pos,traildir*3),true); } States { Spawn: - HFLR ABCD -1 Bright; + HFLR A -1 Bright; Stop; } } @@ -235,14 +181,17 @@ Class HellblazerFlare : Actor // rockets Class HellblazerMissile : Actor { - int deto; + Mixin SWWMMissileFix; + + int deto, detact; Actor seektarget; Vector3 InitialDir, Acceleration; Default { Obituary "$O_HELLBLAZER"; - DamageType 'Exploded'; + SelfObituary "$SO_HELLBLAZER"; + DamageType 'Sydon'; Radius 2; Height 4; Speed 50; @@ -251,6 +200,7 @@ Class HellblazerMissile : Actor +FORCERADIUSDMG; +NODAMAGETHRUST; +HITTRACER; + +SKYEXPLODE; } override void PostBeginPlay() @@ -259,28 +209,28 @@ Class HellblazerMissile : Actor if ( bNOGRAVITY ) { A_StartSound("hellblazer/fly",CHAN_BODY,CHANF_LOOP,1.,2.); - let t = Spawn("HellblazerFlare",pos); + let t = Spawn('HellblazerFlare',pos); t.master = self; } } void A_BlazerTick( Color smokecol ) { - Vector3 traildir = -(cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch)); + Vector3 traildir = -SWWMUtility.Vec3FromAngles(angle,pitch); for ( int i=0; i<3; i++ ) { - let s = Spawn("SWWMHalfSmoke",level.Vec3Offset(pos,traildir*3)); - s.SetShade(smokecol*Random[Hellblazer](48,63)); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',level.Vec3Offset(pos,traildir*3)); + s.scolor = smokecol*Random[Hellblazer](48,63); s.scale *= FRandom[Hellblazer](.8,1.2); - s.special1 = Random[Hellblazer](0,2); + s.framestep = Random[Hellblazer](1,3); s.alpha *= .5; - s.vel = .3*vel + (traildir+(FRandom[Hellblazer](-.4,.4),FRandom[Hellblazer](-.4,.4),FRandom[Hellblazer](-.4,.4))).unit()*FRandom[Hellblazer](1.,2.); + s.vel = .3*vel + (traildir+SWWMUtility.Vec3FromAngles(FRandom[Hellblazer](0,360),FRandom[Hellblazer](-90,90))*.4).unit()*FRandom[Hellblazer](1.,2.); } if ( bNOGRAVITY ) { for ( double i=0.; i 50. ) vel = dir*50.; } - if ( deto > 1 ) + // don't auto-detonate if we're too close to our shooter + // ensures player doesn't eat up the full brunt of the blast + if ( (deto > 1) && (!target || !SWWMUtility.SphereIntersect(target,pos,150)) ) { ExplodeMissile(); return; @@ -316,15 +268,15 @@ Class HellblazerMissile : Actor return; } // proximity check - let bt = BlockThingsIterator.Create(self,200); - while ( bt.Next() ) + let bt = BlockThingsIterator.Create(self,256); + foreach ( t,p,v:bt ) { - let t = bt.Thing; if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),bNOGRAVITY?50:90) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; deto++; tracer = t; break; } + bt.Destroy(); } void A_BlazerMissileExplode() @@ -334,19 +286,19 @@ Class HellblazerMissile : Actor A_SetRenderStyle(1.0,STYLE_Add); A_SprayDecal("BigRocketBlast",50); A_SetScale(4.5); - SWWMUtility.DoExplosion(self,250,320000,200,90); + SWWMUtility.DoExplosion(self,200,320000,150,100); A_NoGravity(); - A_QuakeEx(5,5,5,15,0,1500,"",QF_RELATIVE|QF_SCALEDOWN,falloff:500,rollIntensity:.8); + A_QuakeEx(5.,5.,5.,15,0,1500,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:500,rollIntensity:.8); A_StopSound(CHAN_BODY); - A_StartSound("hellblazer/hitm",CHAN_WEAPON,attenuation:.8); - A_StartSound("hellblazer/hitm",CHAN_VOICE,attenuation:.5); - A_AlertMonsters(swwm_uncapalert?0:2500); - Spawn("HellblazerExplLight",pos); + A_StartSound("hellblazer/hit",CHAN_WEAPON,attenuation:.8); + A_StartSound("hellblazer/hit",CHAN_VOICE,attenuation:.5); + A_AlertMonsters(swwm_uncapalert?0:2500,AMF_EMITFROMTARGET); + Spawn('HellblazerExplLight',pos); int numpt = Random[Hellblazer](12,24); for ( int i=0; i 8) || !(special1%2) ) return; - int numpt = Random[Hellblazer](0,8-special1); - double ang, pt; - for ( int i=0; i 10) || (special2%3) ) return; - int numpt = 11-special2; - for ( int i=0; i= 40 ) - { - if ( target ) SWWMUtility.AchievementProgress("slayer",invoker.nkill,target.player); - Destroy(); - } - } - Wait; - } -} - -Mixin Class HellblazerGrenade +// grenades +Class HellblazerMissile2 : HellblazerMissile { double rollvel, anglevel, pitchvel; Vector3 oldvel; @@ -717,13 +388,15 @@ Mixin Class HellblazerGrenade Gravity .35; ReactionTime 85; -NOGRAVITY; + -EXPLODEONWATER; +USEBOUNCESTATE; +BOUNCEONWALLS; +BOUNCEONFLOORS; +BOUNCEONCEILINGS; +ALLOWBOUNCEONACTORS; - +DONTBOUNCEONSKY; + +DONTBOUNCEONSHOOTABLES; +CANBOUNCEWATER; + +KEEPBOUNCEANGLE; +INTERPOLATEANGLES; +ROLLSPRITE; +ROLLCENTER; @@ -741,7 +414,7 @@ Mixin Class HellblazerGrenade { oldvel = vel; Super.Tick(); - if ( isFrozen() || !InStateSequence(CurState,FindState("Spawn")) ) return; + if ( isFrozen() || (freezetics > 0) || !InStateSequence(CurState,FindState('Spawn')) ) return; roll += rollvel; angle += anglevel; pitch += pitchvel; @@ -750,50 +423,12 @@ Mixin Class HellblazerGrenade } virtual void A_HandleBounce() { - Vector3 HitNormal = -vel.unit(); - F3DFloor ff; - if ( BlockingFloor ) - { - // find closest 3d floor for its normal - for ( int i=0; i 10 ) vel.z = 0.5*(10+vel.z); @@ -804,7 +439,6 @@ Mixin Class HellblazerGrenade ExplodeMissile(); return; } - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:300); A_StartSound("hellblazer/bounce",CHAN_ITEM); rollvel = FRandom[Hellblazer](-16,16); anglevel = FRandom[Hellblazer](-16,16); @@ -813,9 +447,12 @@ Mixin Class HellblazerGrenade if ( seektarget ) { Vector3 dirto = level.Vec3Diff(pos,seektarget.Vec3Offset(0,0,seektarget.Height/2)); - dirto /= dirto.length(); + double distto = dirto.length(); + if ( distto <= 0. ) return; + dirto /= distto; dirto.z += .1; double spd = vel.length(); + if ( spd <= 0. ) return; vel /= spd; vel = (vel*.3+dirto*.7)*spd; } @@ -827,463 +464,3 @@ Mixin Class HellblazerGrenade Goto Spawn; } } - -// grenades -Class HellblazerMissile2 : HellblazerMissile -{ - Mixin HellblazerGrenade; -} - -Class HellblazerCrackshot2 : HellblazerCrackshot -{ - Mixin HellblazerGrenade; -} - -Class HellblazerRavager2 : HellblazerRavager -{ - Mixin HellblazerGrenade; -} - -Class HellblazerWarhead2 : HellblazerWarhead -{ - Mixin HellblazerGrenade; -} - -Class HellblazerClusterMini : HellblazerMissile2 -{ - Default - { - Radius 2; - Height 4; - Speed 20; - ReactionTime 30; - } - - void A_ClusterTick( Color smokecol ) - { - special2++; - Vector3 traildir = -(cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch)); - for ( int i=0; i<2; i++ ) - { - let s = Spawn("SWWMHalfSmoke",level.Vec3Offset(pos,traildir*3)); - s.SetShade(smokecol*Random[Hellblazer](48,63)); - s.scale *= FRandom[Hellblazer](.6,.8); - s.special1 = Random[Hellblazer](0,1); - s.alpha *= .4; - s.vel = .3*vel + (traildir+(FRandom[Hellblazer](-.4,.4),FRandom[Hellblazer](-.4,.4),FRandom[Hellblazer](-.4,.4))).unit()*FRandom[Hellblazer](1.,2.); - } - if ( (deto > 1) && (special2 > 5) ) - { - ExplodeMissile(); - return; - } - // proximity check - let bt = BlockThingsIterator.Create(self,200); - while ( bt.Next() ) - { - let t = bt.Thing; - if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),60) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; - deto++; - break; - } - } - - void A_ClusterExplode() - { - bForceXYBillboard = true; - bRollSprite = false; - A_SetRenderStyle(1.0,STYLE_Add); - A_SprayDecal("BigRocketBlast",50); - A_SetScale(2.5); - SWWMUtility.DoExplosion(self,50,200000,150,60); - A_NoGravity(); - A_QuakeEx(4,4,4,12,0,1000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:400,rollIntensity:.6); - A_StopSound(CHAN_BODY); - A_StartSound("hellblazer/hitcs",CHAN_WEAPON,attenuation:.9); - A_StartSound("hellblazer/hitcs",CHAN_VOICE,attenuation:.5); - A_AlertMonsters(swwm_uncapalert?0:2000); - Spawn("HellblazerExplLight2",pos); - int numpt = Random[Hellblazer](4,8); - for ( int i=0; i 5) || !(special1%2) ) return; - int numpt = Random[Hellblazer](0,5-special1); - double ang, pt; - for ( int i=0; i closest ) continue; - closest = dist; - whomst = t; - } - if ( !whomst ) return; - Vector3 dirto = level.Vec3Diff(pos,whomst.Vec3Offset(0,0,whomst.Height/2)); - dirto /= dirto.length(); - dirto.z += .1; - double spd = vel.length(); - vel /= spd; - vel = (vel*.3+dirto*.7)*spd; - } - override void A_HandleBounce() - { - Super.A_HandleBounce(); - A_Steer(); - } - States - { - Spawn: - XZW1 A 1 A_ClusterTick(Color(2,4,2)); - Wait; - Bounce: - XZW1 A 0 A_HandleBounce(); - Goto Spawn; - Death: - TNT1 A 0 A_ClusterExplode(); - HEXP ABCDEFGHIJKLMNOPQR 1 Bright A_ClusterSubExpl(); - Stop; - } -} - -Class RavagerLight : PaletteLight -{ - Default - { - Tag "DRed"; - Args 0,0,0,250; - } -} - -Class RavagerPuff : Actor -{ - Vector2 initsc; - - Default - { - RenderStyle "Add"; - Scale .8; - Alpha .7; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOINTERACTION; - +NOTELEPORT; - +ROLLSPRITE; - +ROLLCENTER; - +FORCEXYBILLBOARD; - } - override void PostBeginPlay() - { - scale *= FRandom[Hellblazer](.8,1.); - alpha *= FRandom[Hellblazer](.8,1.); - roll = FRandom[Hellblazer](0,360); - SetState(FindState("Spawn")+Random[Hellblazer](0,19)); - initsc = scale; - } - override void Tick() - { - if ( isFrozen() ) return; - A_FadeOut((waterlevel>0)?.1:.02); - scale += initsc*.2; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - RFLM ABCDEFGHIJKLMNOPQRST -1 Bright; - Stop; - } -} - -Class HellblazerRavagerArm : Actor -{ - Vector3 oldvel; - - Default - { - Obituary "$O_HELLBLAZER"; - DamageType 'Fire'; - PROJECTILE; - +THRUACTORS; - +BOUNCEONWALLS; - +BOUNCEONFLOORS; - +BOUNCEONCEILINGS; - +CANBOUNCEWATER; - +USEBOUNCESTATE; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - -NOGRAVITY; - Gravity 0.35; - BounceFactor 1.0; - Radius 2; - Height 2; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - reactiontime = Random[ExploS](15,25); - vel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch))*FRandom[ExploS](10.,15.); - } - override void Tick() - { - oldvel = vel; - Super.Tick(); - } - void A_HandleBounce() - { - Vector3 HitNormal = -vel.unit(); - F3DFloor ff; - if ( BlockingFloor ) - { - // find closest 3d floor for its normal - for ( int i=0; i= (BlockingMobj.pos.x+BlockingMobj.radius) ) - HitNormal = (1,0,0); - else if ( (pos.y+radius) <= (BlockingMobj.pos.y-BlockingMobj.radius) ) - HitNormal = (0,-1,0); - else if ( (pos.y-radius) >= (BlockingMobj.pos.y+BlockingMobj.radius) ) - HitNormal = (0,1,0); - else if ( pos.z >= (BlockingMobj.pos.z+BlockingMobj.height) ) - HitNormal = (0,0,1); - else if ( (pos.z+height) <= BlockingMobj.pos.z ) - HitNormal = (0,0,-1); - } - // undo the bounce, we need to hook in our own - vel = oldvel; - // re-do the bounce with our formula - vel = (vel dot HitNormal)*HitNormal*FRandom[Hellblazer](-1.5,-1.)+vel; - } - States - { - Spawn: - TNT1 A 1 - { - if ( waterlevel > 0 ) ReactionTime -= 2; - let p = Spawn("RavagerPuff",pos); - p.alpha *= .4+.6*(ReactionTime/25.); - p.scale *= 2.5-1.5*(ReactionTime/25.); - if ( !(ReactionTime%3) ) - { - let l = Spawn("RavagerLight",pos); - l.Args[3] = int(90+50*(ReactionTime/25.)); - l.ReactionTime = int(2+8*(ReactionTime/25.)); - l.target = p; - } - SWWMUtility.DoExplosion(self,15+reactiontime/2,2000+400*reactiontime,300-4*reactiontime,100); - double spd = min(vel.length()*1.1,50); - vel = (vel*.1+(FRandom[ExploS](-1.,1.),FRandom[ExploS](-1.,1.),FRandom[ExploS](-1.,1.))).unit()*spd; - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - let s = Spawn("SWWMHalfSmoke",pos); - s.vel = pvel+vel*.2; - s.SetShade(Color(4,2,1)*Random[ExploS](48,63)); - s.special1 = Random[ExploS](4,8); - s.scale *= 4.; - s.alpha *= .2+.3*(ReactionTime/25.); - if ( !(ReactionTime%2) ) - { - int numpt = Random[Hellblazer](-2,4); - for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XEX0 ABCDEFGHIJKLMNOPQRS 1 Bright; - Stop; - } -} - -Class HellblazerWarheadArm : Actor -{ - Default - { - Obituary "$O_HELLBLAZER"; - DamageType 'Exploded'; - PROJECTILE; - +THRUACTORS; - +BOUNCEONWALLS; - +BOUNCEONFLOORS; - +BOUNCEONCEILINGS; - +CANBOUNCEWATER; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - -NOGRAVITY; - Gravity 0.35; - BounceFactor 1.0; - Radius 4; - Height 4; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - reactiontime = Random[ExploS](20,25); - double ang, pt; - ang = FRandom[ExploS](0,360); - pt = FRandom[ExploS](-90,90); - vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[ExploS](20.,35.); - } - States - { - Spawn: - TNT1 A 1 - { - Spawn("HellblazerWarheadTrail",pos); - int nhit, nkill; - [nhit, nkill] = SWWMUtility.DoExplosion(self,20+reactiontime*4,3000+500*reactiontime,120+4*reactiontime,flags:DE_COUNTENEMIES); - if ( HellblazerWarhead(master) ) HellblazerWarhead(master).nkill += nkill; - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - let s = Spawn("SWWMHalfSmoke",pos); - s.vel = pvel+vel*.2; - s.SetShade(Color(4,2,1)*Random[ExploS](48,63)); - s.special1 = Random[ExploS](1,3); - s.scale *= 6.; - s.alpha *= 0.1+.4*(ReactionTime/25.); - A_CountDown(); - } - Wait; - } -} diff --git a/zscript/weapons/swwm_cbt.zsc b/zscript/weapons/swwm_cbt.zsc index 3a271c000..db918a55a 100644 --- a/zscript/weapons/swwm_cbt.zsc +++ b/zscript/weapons/swwm_cbt.zsc @@ -3,279 +3,51 @@ Class Wallbuster : SWWMWeapon { - Class loaded[25]; + bool loaded[25]; bool fired[25]; int rotation[6]; - bool initialized; - Array > reloadqueue; - transient bool waitreload; int whichspin; - int rnum; - transient bool cancelreload; - transient bool clearout; - transient ui TextureID WeaponBox, AmmoIcon[4], LoadIcon[4], UsedIcon[4], EmptyIcon; - Class curobt; - - ui Vector3 cpos25[25]; - ui Color ccol25[25]; - ui Vector2 lagvpos25[25]; - - override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) + override void DoEffect() { - if ( curobt is 'RedShell' ) return StringTable.Localize("$O_WALLBUSTER_RED"); - if ( curobt is 'GreenShell' ) return StringTable.Localize("$O_WALLBUSTER_GREEN"); - if ( curobt is 'BlueShell' ) return StringTable.Localize("$O_WALLBUSTER_BLUE"); - if ( curobt is 'PurpleShell' ) return StringTable.Localize("$O_WALLBUSTER_PURPLE"); - return Super.GetObituary(victim,inflictor,mod,playerattack); - } - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - /* - (Layout of indices) - - 0 - 4 1 - 3 2 - L 9 - K M 8 5 - O N 7 6 - - H D - G I C E - F J B A - - */ - static const int barrelposx[] = + Super.DoEffect(); + CheckStopReload('Detach','EndReload'); + // push back selection order if weapon is unloaded + if ( !bInitialized ) { - 29,24,26,32,34, - 10,12,18,20,15, - 17,23,25,20,15, - 41,43,38,33,35, - 48,43,38,40,46 - }; - static const int barrelposy[] = - { - 46,42,36,36,42, - 31,25,25,31,35, - 8, 8,14,18,14, - 8,14,18,14, 8, - 31,35,31,25,25 - }; - if ( !WeaponBox ) - { - WeaponBox = TexMan.CheckForTexture("graphics/HUD/WallbusterDisplay.png",TexMan.Type_Any); - AmmoIcon[0] = TexMan.CheckForTexture("graphics/HUD/RedShell.png",TexMan.Type_Any); - AmmoIcon[1] = TexMan.CheckForTexture("graphics/HUD/GreenShell.png",TexMan.Type_Any); - AmmoIcon[2] = TexMan.CheckForTexture("graphics/HUD/BlueShell.png",TexMan.Type_Any); - AmmoIcon[3] = TexMan.CheckForTexture("graphics/HUD/PurpleShell.png",TexMan.Type_Any); - LoadIcon[0] = TexMan.CheckForTexture("graphics/HUD/WallbusterRed.png",TexMan.Type_Any); - LoadIcon[1] = TexMan.CheckForTexture("graphics/HUD/WallbusterGreen.png",TexMan.Type_Any); - LoadIcon[2] = TexMan.CheckForTexture("graphics/HUD/WallbusterBlue.png",TexMan.Type_Any); - LoadIcon[3] = TexMan.CheckForTexture("graphics/HUD/WallbusterPurple.png",TexMan.Type_Any); - UsedIcon[0] = TexMan.CheckForTexture("graphics/HUD/WallbusterRedUsed.png",TexMan.Type_Any); - UsedIcon[1] = TexMan.CheckForTexture("graphics/HUD/WallbusterGreenUsed.png",TexMan.Type_Any); - UsedIcon[2] = TexMan.CheckForTexture("graphics/HUD/WallbusterBlueUsed.png",TexMan.Type_Any); - UsedIcon[3] = TexMan.CheckForTexture("graphics/HUD/WallbusterPurpleUsed.png",TexMan.Type_Any); - EmptyIcon = TexMan.CheckForTexture("graphics/HUD/WallbusterEmpty.png",TexMan.Type_Any); + SelectionOrder = default.SelectionOrder; + return; } - Screen.DrawTexture(WeaponBox,false,bx-54,by-72,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int ox = 6; - int oy = 60; - for ( int i=0; i<4; i++ ) - { - Screen.DrawTexture(AmmoIcon[i],false,bx-ox,by-oy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - String astr = String.Format("%3d",Owner.CountInv(types[i])); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-ox-(smallfont.StringWidth(astr)+1),by-oy-1,astr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - oy += 10; - if ( i == 1 ) - { - oy = 60; - ox = 33; - } - } - // and here's the big clusterdick for ( int i=0; i<25; i++ ) { - int idx = i; - int group = idx/5; - // shift based on group rotation - int gidx = i%5; - gidx = (gidx-rotation[group]); - while ( gidx < 0 ) gidx += 5; - idx = gidx+group*5; - // shift based on full rotation - idx = (idx-rotation[5]*5); - while ( idx < 0 ) idx += 25; - if ( !loaded[i] ) - { - Screen.DrawTexture(EmptyIcon,false,bx-barrelposx[idx],by-barrelposy[idx],DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - continue; - } - int which = 0; - for ( int j=0; j<4; j++ ) - { - if ( !(loaded[i] is types[j]) ) continue; - which = j; - break; - } - Screen.DrawTexture(fired[i]?UsedIcon[which]:LoadIcon[which],false,bx-barrelposx[idx],by-barrelposy[idx],DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( !loaded[i] || fired[i] ) continue; + SelectionOrder = default.SelectionOrder; + return; } + SelectionOrder = 1400; } - override void HudTick() - { - Super.HudTick(); - if ( !Owner ) return; - // 25-trace - for ( int i=0; i<25; i++ ) - [cpos25[i], ccol25[i]] = TraceForCrosshair25(i); - } - - override void RenderUnderlay( RenderEvent e ) - { - // draw custom crosshair - if ( automapactive || !(players[consoleplayer].Camera is 'PlayerPawn') ) return; - if ( !swwm_precisecrosshair ) return; - if ( !crosshairon ) return; - if ( crosshairforce ) return; - let sb = SWWMStatusBar(StatusBar); - if ( !sb ) return; - SWWMUtility.PrepareProjData(sb.projdata,e.ViewPos,e.ViewAngle,e.ViewPitch,e.ViewRoll,players[consoleplayer].fov); - int cnum = abs(CVar.FindCVar('crosshair').GetInt()); - if ( !cnum ) return; - String tn = String.Format("XHAIR%s%d",(Screen.GetWidth()<640)?"S":"B",cnum); - TextureID ctex = TexMan.CheckForTexture(tn,TexMan.Type_MiscPatch); - if ( !ctex.IsValid() ) ctex = TexMan.CheckForTexture(String.Format("XHAIR%s1",(Screen.GetWidth()<640)?"S":"B"),TexMan.Type_MiscPatch); - if ( !ctex.IsValid() ) ctex = TexMan.CheckForTexture("XHAIRS1",TexMan.Type_MiscPatch); - Vector2 ts = TexMan.GetScaledSize(ctex); - double cs = crosshairscale; - double sz = 1.; - if ( cs > 0. ) sz = Screen.GetHeight()*cs/200.; - if ( crosshairgrow ) sz *= sb.CrosshairSize; - Vector3 tdir = level.Vec3Diff(e.ViewPos,cpos); - // project - Vector3 ndc = SWWMUtility.ProjectPoint(sb.projdata,e.ViewPos+tdir); - if ( ndc.z >= 1. ) return; - Vector2 vpos = SWWMUtility.NDCToViewport(sb.projdata,ndc); - double frametime = ((gametic+e.fractic)-prevframe)/GameTicRate; - double theta = clamp(30.*frametime,0.,1.); // naive, but whatever - if ( !prevframe || (lagvpos == (0,0)) ) lagvpos = vpos; - else lagvpos = lagvpos*(1.-theta)+vpos*theta; - for ( int i=0; i<25; i++ ) - { - - tdir = level.Vec3Diff(e.ViewPos,cpos25[i]); - // project - ndc = SWWMUtility.ProjectPoint(sb.projdata,e.ViewPos+tdir); - if ( ndc.z >= 1. ) return; - vpos = SWWMUtility.NDCToViewport(sb.projdata,ndc); - if ( !prevframe || (lagvpos25[i] == (0,0)) ) lagvpos25[i] = vpos; - else lagvpos25[i] = lagvpos25[i]*(1.-theta)+vpos*theta; - Screen.DrawTexture(ctex,false,int(lagvpos25[i].x),int(lagvpos25[i].y),DTA_DestWidthF,ts.x*sz,DTA_DestHeightF,ts.y*sz,DTA_AlphaChannel,true,DTA_FillColor,ccol25[i]); - } - prevframe = gametic+e.fractic; - } - - ui Vector3, Color TraceForCrosshair25( int i ) - { - if ( !ctr ) ctr = new("SWWMCrosshairTracer"); - ctr.ignoreme = Owner; - Vector3 x, y, z, ofs; - double s; - [x, y, z] = swwm_CoordUtil.GetAxes(Owner.pitch,Owner.angle,Owner.roll); - ofs = GetTraceOffset25(i); - Vector3 origin = level.Vec3Offset(Owner.Vec2OffsetZ(0,0,Owner.player.viewz),ofs.x*x+ofs.y*y+ofs.z*z); - ctr.Trace(origin,level.PointInSector(origin.xy),x,10000.,0); - Color col = crosshaircolor; - int chp = crosshairhealth; - if ( chp >= 2 ) - { - int hp = Clamp(Owner.Health,0,200); - double sat = (hp<150)?1.:(1.-(hp-150)/100.); - Vector3 rgb = SWWMUtility.HSVtoRGB((hp/300.,sat,1.)); - col = Color(int(rgb.x*255),int(rgb.y*255),int(rgb.z*255)); - } - else if ( chp == 1 ) - { - double hp = Clamp(Owner.Health,0,100)/100.; - if ( hp <= 0 ) col = Color(255,0,0); - else if ( hp < .3 ) col = Color(255,int(hp*255/.3),0); - else if ( hp < .85 ) col = Color(int((.6-hp)*255/.3),255,0); - else col = Color(0,255,0); - } - else if ( (ctr.Results.HitType == TRACE_HitActor) && ctr.Results.HitActor.bSHOOTABLE ) - { - // show target health, rather than our own - double hp = ctr.Results.HitActor.Health/double(ctr.Results.HitActor.GetSpawnHealth()); - if ( hp <= 0 ) col = Color(255,0,0); - else if ( hp < .3 ) col = Color(255,int(hp*255/.3),0); - else if ( hp < .85 ) col = Color(int((.6-hp)*255/.3),255,0); - else col = Color(0,255,0); - } - if ( ctr.Results.HitType == TRACE_HitNone ) return level.Vec3Offset(origin,x*10000.), col; - else return ctr.Results.HitPos, col; - } - - clearscope Vector3 GetTraceOffset25( int i ) const - { - double t1 = 90-int(i%5)*72; - double t2 = 360-int(i/5)*72; - Vector2 b = (cos(t1),sin(t1))*1.2; - b.y += 3.; - Vector2 n = (b.x*cos(t2)-b.y*sin(t2),b.x*sin(t2)+b.y*cos(t2)); - return (10.,3.5+n.x,-6.+n.y); - } - - override bool UsesAmmo( Class kind ) - { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - for ( int i=0; i<4; i++ ) if ( kind is types[i] ) return true; - return false; - } override bool ReportHUDAmmo() { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - for ( int i=0; i<4; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; for ( int i=0; i<25; i++ ) if ( loaded[i] && !fired[i] ) return true; - return false; + return Super.ReportHUDAmmo(); } override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; if ( (firemode == PrimaryFire) || (firemode == AltFire) ) { - for ( int i=0; i<4; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; for ( int i=0; i<25; i++ ) if ( loaded[i] && !fired[i] ) return true; - return false; + return (Ammo1.Amount > 0); } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } - bool CanReload() + override void InitializeWeapon() { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - for ( int i=0; i<4; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; - return false; - } - override void AttachToOwner( Actor other ) - { - if ( !initialized ) - { - // first wallbuster has five barrels loaded - initialized = true; - for ( int i=0; i<25; i++ ) - loaded[i] = (i<5)?(Class)("RedShell"):null; - for ( int i=0; i<25; i++ ) - fired[i] = false; - } - Super.AttachToOwner(other); - } - override void DetachFromOwner() - { - A_StopSound(CHAN_AMBEXTRA+1); - A_StopSound(CHAN_AMBEXTRA+2); - Super.DetachFromOwner(); + // first wallbuster has five barrels loaded + for ( int i=0; i<25; i++ ) + loaded[i] = (i<5); + for ( int i=0; i<25; i++ ) + fired[i] = false; } action void A_CBTFlash( StateLabel flashlabel = null, int index = 0 ) { @@ -295,91 +67,93 @@ Class Wallbuster : SWWMWeapon A_OverlayFlags(PSP_FLASH-index,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true); A_OverlayRenderStyle(PSP_FLASH-index,STYLE_Add); } - action void ProcessTraceHit( SpreadgunTracer t, Vector3 origin, Vector3 dir, int dmg, double mm, Class impact = "SpreadImpact", int bc = 1, bool large = false, bool bust = false ) + action void ProcessTraceHit( SpreadgunTracer t, Vector3 origin, Vector3 dir, int dmg, double mm, Class impact = 'SpreadImpact', int bc = 1, bool bust = false ) { // Wall busting - if ( bust ) + if ( bust || swwm_omnibust ) { int bustdmg = dmg; - if ( t is 'SpreadSlugTracer' ) bustdmg = int(SpreadSlugTracer(t).penetration); BusterWall.Bust(t.Results,bustdmg,self,t.Results.HitVector,t.Results.HitPos.z); } - for ( int i=0; i types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - static const statelabel flashes[] = {"FlashRed","FlashGreen","FlashBlue","FlashPurple"}; - static const String sounds[] = {"spreadgun/redfire","spreadgun/greenfire","spreadgun/bluefire","spreadgun/purplefire"}; - static const Color cols[] = {Color(40,255,192,64),Color(36,255,192,80),Color(48,32,176,255),Color(24,255,224,96)}; - static const int louds[] = {800,1000,1100,1200,1400,600,2500}; - int redflashstr = 0; - int blueflashstr = 0; + // auto-reload if we're fully empty and there's ammo to use + bool isloaded = false; + for ( int i=0; i<25; i++ ) + { + if ( !invoker.loaded[i] || invoker.fired[i] ) + continue; + isloaded = true; + break; + } + if ( !isloaded && (GetShellsToLoad() > 0) ) + { + player.SetPSprite(PSP_WEAPON,ResolveState('Reload')); + return; + } // speen if ( num == 1 ) invoker.whichspin = 1; else if ( num == 5 ) invoker.whichspin = 2; @@ -405,16 +179,16 @@ Class Wallbuster : SWWMWeapon if ( howmany <= 0 ) { A_StartSound("wallbuster/dryfire",CHAN_WEAPON,CHANF_OVERLAP); - player.SetPsprite(PSP_WEAPON,ResolveState("DryFire")); + player.SetPsprite(PSP_WEAPON,ResolveState('DryFire')); return; } - Vector3 x, y, z, origin, x2, y2, z2, dir; + Vector3 origin, dir; double a, s; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + int flashstr = 0; int alertness = 0; // second pass, play the fire effects - int salts = 0; for ( int i=0; i 4 ) gidx -= 5; idx = gidx+group*5; if ( !invoker.loaded[idx] || invoker.fired[idx] ) continue; - int which = 0; - for ( int j=0; j<4; j++ ) - { - if ( !(invoker.loaded[idx] is types[j]) ) continue; - which = j; - break; - } - double rfact = swwm_earbuster?.85:.6; - A_StartSound(sounds[which],CHAN_WEAPON,CHANF_OVERLAP,1./(howmany**rfact),.6-howmany*.004,1.-howmany*.015); - if ( which == 0 ) redflashstr = max(120,redflashstr+10); - else if ( which == 1 ) redflashstr = max(90,redflashstr+8); - else if ( which == 2 ) - { - blueflashstr = max(160,blueflashstr+10); - salts++; - } - else if ( which == 3 ) redflashstr = max(60,redflashstr+6); - A_CBTFlash(flashes[which],i); - if ( alertness > louds[which] ) alertness += louds[which]/4; - else alertness += louds[which]; + A_StartSound("spreadgun/redfire",CHAN_WEAPON,CHANF_OVERLAP,1./(howmany**.65),.6-howmany*.004,1.-howmany*.015); + flashstr = max(120,flashstr+10); + A_CBTFlash('FlashRed',i); + if ( alertness > 800 ) alertness += 200; + else alertness += 800; } - if ( salts >= 25 ) SWWMUtility.MarkAchievement("salt",player); - if ( howmany < 3 ) player.SetPsprite(PSP_WEAPON,ResolveState("FireOne")); - else if ( howmany < 15 ) player.SetPsprite(PSP_WEAPON,ResolveState("FireFive")); - else player.SetPsprite(PSP_WEAPON,ResolveState("FireTwentyFive")); - int qk = min(9,1+howmany/5); + if ( howmany < 3 ) + { + player.SetPsprite(PSP_WEAPON,ResolveState('FireOne')); + SWWMHandler.DoFlash(self,Color(40,255,192,64),5); + } + else if ( howmany < 15 ) + { + player.SetPsprite(PSP_WEAPON,ResolveState('FireFive')); + SWWMHandler.DoFlash(self,Color(60,255,192,64),6); + } + else + { + player.SetPsprite(PSP_WEAPON,ResolveState('FireTwentyFive')); + SWWMHandler.DoFlash(self,Color(80,255,192,64),7); + } + double qk = min(9.,1.+howmany/4.); int ql = min(25,6+howmany/2); - A_QuakeEx(qk,qk,qk,ql,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:qk*.15); + A_QuakeEx(qk,qk,qk,ql,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:qk*.15); A_BumpFOV(1.-qk*.04); + A_BumpView(-qk*.6); A_AlertMonsters(swwm_uncapalert?0:alertness); A_PlayerFire(); - if ( redflashstr > 0 ) + if ( flashstr > 0 ) { - let l = Spawn("SWWMWeaponLight",pos); - l.args[3] = redflashstr; - l.target = self; - } - if ( blueflashstr > 0 ) - { - let l = Spawn("SWWMWeaponLight",pos); - l.args[0] = 96; - l.args[1] = 224; - l.args[2] = 255; - l.args[3] = blueflashstr; + let l = Spawn('SWWMWeaponLight',pos); + l.args[3] = flashstr; l.target = self; } // third pass, actually fire them - Vector3 base = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+3.5*y-6*z); + Vector3 base = SWWMUtility.GetFireOffset(self,10,3.5,-6); SpreadgunTracer st; - SpreadSlugTracer sst; for ( int i=0; i 4 ) gidx -= 5; idx = gidx+group*5; if ( !invoker.loaded[idx] || invoker.fired[idx] ) continue; - int which = 0; - for ( int j=0; j<4; j++ ) - { - if ( !(invoker.loaded[idx] is types[j]) ) continue; - which = j; - break; - } invoker.fired[idx] = true; double t1 = 90-int(i%5)*72; double t2 = 360-int(i/5)*72; - Vector2 b = (cos(t1),sin(t1))*1.2; + Vector2 b = AngleToVector(t1,1.2); b.y += 3.; - Vector2 n = (b.x*cos(t2)-b.y*sin(t2),b.x*sin(t2)+b.y*cos(t2)); + Vector2 n = RotateVector(b,t2); origin = level.Vec3Offset(base,n.x*y+n.y*z); - invoker.curobt = types[which]; - switch ( which ) + // the shooting + if ( !st ) st = new('SpreadgunTracer'); + // attempt to uniformize expected damage while reducing traces (mainly for performance) + int expecteddmg = 200; + int numshot = max(21-howmany,5); + int individualdmg = int(ceil(expecteddmg/double(numshot))); + for ( int j=0; j1)); - for ( int i=0; i<(6-howmany/4); i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.scale *= .8; - s.alpha *= .3; - s.SetShade(Color(1,1,1)*Random[Wallbuster](96,192)); - s.vel += vel*.5+x*FRandom[Wallbuster](3.,5.); - } - for ( int i=0; i<(10-howmany/3); i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .2; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Wallbuster](4.,8.)+y*FRandom[Wallbuster](-1,1)+z*FRandom[Wallbuster](-1,1); - } - SWWMUtility.DoKnockback(self,-x,18000.); - break; - case 2: - // saltshot - for ( int j=0; j<(8-howmany/5); j++ ) - { - a = FRandom[Wallbuster](0,360); - s = FRandom[Wallbuster](0,.15); - let b = Spawn("SaltBeam",level.Vec3Offset(origin,y*cos(a)*s+z*sin(a)*s)); - b.target = self; - b.angle = atan2(x2.y,x2.x); - b.pitch = asin(-x2.z); - b.Stamina += howmany*16; - b.Accuracy += 2+howmany/5; - b.Args[1] = (howmany>1)?2:1; // came from wallbuster - } - for ( int i=0; i<(16-howmany/2); i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.special1 = 1; - s.scale *= .9; - s.SetShade(Color(1,3,4)*Random[Wallbuster](32,63)); - s.A_SetRenderStyle(.3,STYLE_AddShaded); - s.vel += vel*.5+x*FRandom[Wallbuster](3.,5.)+y*FRandom[Wallbuster](-1,1)+z*FRandom[Wallbuster](-1,1); - } - for ( int i=0; i<(20-howmany/2); i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .3; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Wallbuster](4.,8.)+y*FRandom[Wallbuster](-2,2)+z*FRandom[Wallbuster](-2,2); - } - SWWMUtility.DoKnockback(self,-x,17000.); - break; - case 3: - // lead ball - a = FRandom[Wallbuster](0,360); - s = FRandom[Wallbuster](0,.005); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn("TheBall",origin); - p.target = self; - p.angle = atan2(dir.y,dir.x); - p.pitch = asin(-dir.z); - p.vel = dir*p.speed*1.25; - p.special1 = (howmany>1)?2:1; // came from wallbuster - for ( int i=0; i<(8-howmany/4); i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.scale *= .6; - s.alpha *= .25; - s.SetShade(Color(1,1,1)*Random[Wallbuster](96,192)); - s.vel += vel*.5+x*FRandom[Wallbuster](3.,5.); - } - for ( int i=0; i<(8-howmany/4); i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .2; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Wallbuster](4.,8.)+y*FRandom[Wallbuster](-1,1)+z*FRandom[Wallbuster](-1,1); - } - SWWMUtility.DoKnockback(self,-x,7200.); - break; - default: - // buckshot - if ( !st ) st = new("SpreadgunTracer"); - st.ignoreme = self; - // attempt to uniformize expected damage while reducing traces (mainly for performance) - int expecteddmg = 180; - int numshot = max(21-howmany,5); - int individualdmg = int(ceil(expecteddmg/double(numshot))); - for ( int j=0; j1)); - } - for ( int i=0; i<(16-howmany/2); i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.special1 = 1; - s.scale *= .9; - s.alpha *= .3; - s.SetShade(Color(1,1,1)*Random[Wallbuster](96,192)); - s.vel += vel*.5+x*FRandom[Wallbuster](3.,5.)+y*FRandom[Wallbuster](-1,1)+z*FRandom[Wallbuster](-1,1); - } - for ( int i=0; i<(20-howmany/2); i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .3; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Wallbuster](4.,8.)+y*FRandom[Wallbuster](-2,2)+z*FRandom[Wallbuster](-2,2); - } - SWWMUtility.DoKnockback(self,-x,12000.); - break; + s = FRandom[Wallbuster](0,.05+.006*howmany); + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + st.hitlist.Clear(); + st.shootthroughlist.Clear(); + st.waterhitlist.Clear(); + st.Trace(origin,level.PointInSector(origin.xy),dir,8000.,0,ignore:self); + ProcessTraceHit(st,origin,dir,individualdmg,7000,bc:5+howmany/6,(howmany>1)); } + for ( int i=0; i<(16-howmany/2); i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.special1 = 1; + s.scale *= .9; + s.alpha *= .3; + s.SetShade(Color(1,1,1)*Random[Wallbuster](96,192)); + s.vel += vel*.5+x*FRandom[Wallbuster](3.,5.)+y*FRandom[Wallbuster](-1,1)+z*FRandom[Wallbuster](-1,1); + } + for ( int i=0; i<(20-howmany/2); i++ ) + { + let s = Spawn('SWWMSpark',origin); + s.scale *= .3; + s.alpha *= .4; + s.vel += vel*.5+x*FRandom[Wallbuster](4.,8.)+y*FRandom[Wallbuster](-2,2)+z*FRandom[Wallbuster](-2,2); + } + SWWMUtility.DoKnockback(self,-x,12000.); } } action void A_SpinOne() @@ -658,35 +315,8 @@ Class Wallbuster : SWWMWeapon invoker.rotation[5]--; while ( invoker.rotation[5] < 0 ) invoker.rotation[5] += 5; } - action void A_OpenMenu() - { - invoker.reloadqueue.Clear(); - invoker.waitreload = true; - if ( player == players[consoleplayer] ) - Menu.SetMenu('WallbusterReloadMenu'); - } - action void A_WaitMenu() - { - if ( invoker.waitreload ) return; - if ( invoker.clearout ) - { - bool hasshells = false; - for ( int i=0; i<25; i++ ) - { - if ( !invoker.loaded[i] || invoker.fired[i] ) continue; - hasshells = true; - break; - } - if ( hasshells ) player.SetPsprite(PSP_WEAPON,ResolveState("Detach")); - else player.SetPsprite(PSP_WEAPON,ResolveState("EndReload")); - } - else if ( (invoker.reloadqueue.Size() <= 0) ) player.SetPsprite(PSP_WEAPON,ResolveState("EndReload")); - else player.SetPsprite(PSP_WEAPON,ResolveState("Detach")); - } action void A_StartDetachOverlays() { - static const statelabel shells[] = {"DetachShell0","DetachShell1","DetachShell2","DetachShell3","DetachShell4"}; - static const statelabel shellsfired[] = {"DetachShellF0","DetachShellF1","DetachShellF2","DetachShellF3","DetachShellF4"}; for ( int i=0; i<5; i++ ) { // get physical index @@ -700,16 +330,14 @@ Class Wallbuster : SWWMWeapon gidx = (gidx+invoker.rotation[group]); while ( gidx > 4 ) gidx -= 5; idx = gidx+group*5; - if ( !invoker.loaded[idx] ) continue; - if ( invoker.fired[idx] ) - A_Overlay(PSP_WEAPON+1+i,shellsfired[i]); - else A_Overlay(PSP_WEAPON+1+i,shells[i]); + if ( !invoker.loaded[idx] ) A_ChangeModel("",1,"","",4+i,"models","",CMDL_USESURFACESKIN,-1); + else if ( invoker.fired[idx] ) A_ChangeModel("",1,"","",4+i,"models","Shell_Normal_Used.png",CMDL_USESURFACESKIN,-1); + else A_ChangeModel("",1,"","",4+i,"models","Shell_Normal.png",CMDL_USESURFACESKIN,-1); } A_StartSound("wallbuster/meleestart",CHAN_WEAPON,CHANF_OVERLAP); } action void A_StartAttachOverlays() { - static const statelabel shells[] = {"AttachShell0","AttachShell1","AttachShell2","AttachShell3","AttachShell4"}; for ( int i=0; i<5; i++ ) { // get physical index @@ -723,33 +351,22 @@ Class Wallbuster : SWWMWeapon gidx = (gidx+invoker.rotation[group]); while ( gidx > 4 ) gidx -= 5; idx = gidx+group*5; - if ( !invoker.loaded[idx] ) continue; - A_Overlay(PSP_WEAPON+1+i,shells[i]); + if ( !invoker.loaded[idx] ) A_ChangeModel("",1,"","",4+i,"models","",CMDL_USESURFACESKIN,-1); + else A_ChangeModel("",1,"","",4+i,"models","Shell_Normal.png",CMDL_USESURFACESKIN,-1); } A_StartSound("wallbuster/meleeend",CHAN_WEAPON,CHANF_OVERLAP); } action void A_DropShells() { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - static const Class casetypes[] = {"RedShellCasing","GreenShellCasing","BlueShellCasing","PurpleShellCasing"}; for ( int i=0; i<5; i++ ) { - Class loaded = invoker.loaded[invoker.rotation[5]*5+i]; - int which = -1; - for ( int j=0; j<4; j++ ) - { - if ( loaded != types[j] ) continue; - which = j; - break; - } - if ( which != -1 ) + if ( invoker.loaded[invoker.rotation[5]*5+i] ) { if ( invoker.fired[invoker.rotation[5]*5+i] ) { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-3*y-13*z); - let c = Spawn(casetypes[which],origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-3,-13); + let c = Spawn('RedShellCasing',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.2,.2)+y*FRandom[Junk](-.2,.2)-(0,0,FRandom[Junk](2,3)); @@ -757,35 +374,39 @@ Class Wallbuster : SWWMWeapon } else { - let amo = FindInventory(types[which]); - if ( !amo ) - { - amo = Inventory(Spawn(types[which])); - amo.AttachToOwner(self); - amo.Amount = 0; - } - if ( (amo.Amount >= amo.MaxAmount) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) - amo.CreateTossable(1); - amo.Amount++; + if ( (invoker.Ammo1.Amount >= invoker.Ammo1.MaxAmount) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + invoker.BufferAmmo(invoker.AmmoType1,1); + else invoker.Ammo1.Amount = min(invoker.Ammo1.Amount+1,invoker.Ammo1.MaxAmount); } } invoker.loaded[invoker.rotation[5]*5+i] = null; invoker.fired[invoker.rotation[5]*5+i] = false; + A_ChangeModel("",1,"","",4+i,"models","",CMDL_USESURFACESKIN,-1); } invoker.rotation[invoker.rotation[5]] = 4; } - action void A_LoadShell() + action int GetShellsToLoad() { - if ( invoker.reloadqueue.Size() <= 0 ) return; - Class toload = invoker.reloadqueue[invoker.reloadqueue.Size()-1]; - invoker.reloadqueue.Pop(); - invoker.loaded[invoker.rotation[5]*5+invoker.rotation[invoker.rotation[5]]] = toload; + int cnt = 25; + for ( int i=0; i<25; i++ ) cnt -= (invoker.loaded[i]&&!invoker.fired[i]); if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) { - let am = FindInventory(toload); + int realammo = invoker.CountBufferedAmmo(invoker.AmmoType1)+invoker.Ammo1.Amount; + cnt = min(cnt,realammo); + } + return max(0,cnt); + } + action void A_LoadShell() + { + int toload = GetShellsToLoad(); + if ( toload <= 0 ) return; + invoker.loaded[invoker.rotation[5]*5+invoker.rotation[invoker.rotation[5]]] = true; + if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) && !invoker.FetchBufferedAmmo(invoker.AmmoType1,1) ) + { + let am = FindInventory(invoker.AmmoType1); if ( am && (am.Amount > 0) ) am.Amount--; } - if ( (invoker.reloadqueue.Size() > 0) && (invoker.rotation[invoker.rotation[5]] > 0) ) + if ( (toload > 1) && (invoker.rotation[invoker.rotation[5]] > 0) ) // keep spinning if there's more to load invoker.rotation[invoker.rotation[5]]--; A_StartSound("wallbuster/load",CHAN_WEAPON,CHANF_OVERLAP); } @@ -794,15 +415,15 @@ Class Wallbuster : SWWMWeapon { bool good = Super.PickupForAmmoSWWM(ownedWeapon); let Owner = ownedWeapon.Owner; - if ( (AmmoGive1 == 0) && initialized ) + if ( (AmmoGive1 == 0) && bInitialized ) { for ( int i=0; i<25; i++ ) { if ( !loaded[i] || fired[i] ) continue; - let cur = Owner.FindInventory(loaded[i]); + let cur = Owner.FindInventory(AmmoType1); if ( !cur ) { - cur = Inventory(Spawn(loaded[i])); + cur = Inventory(Spawn(AmmoType1)); cur.Amount = 0; cur.AttachToOwner(Owner); } @@ -844,26 +465,21 @@ Class Wallbuster : SWWMWeapon Default { - //$Title Wallbuster - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_Wallbuster.png - //$Icon weapon Tag "$T_WALLBUSTER"; + Inventory.Icon "graphics/HUD/Icons/W_Wallbuster.png"; Inventory.PickupMessage "$I_WALLBUSTER"; - Obituary "$O_WALLBUSTER_RED"; + Obituary "$O_WALLBUSTER"; SWWMWeapon.Tooltip "$TT_WALLBUSTER"; SWWMWeapon.GetLine "getwallbuster"; - Inventory.Icon "graphics/HUD/Icons/W_Wallbuster.png"; + SWWMWeapon.NumCrosshairs 25; Weapon.SlotNumber 4; Weapon.SelectionOrder 400; Weapon.UpSound "wallbuster/select"; - Weapon.AmmoType1 "RedShell"; + Weapon.AmmoType1 'RedShell'; Weapon.AmmoGive1 5; - SWWMWeapon.DropAmmoType "Shell"; + SWWMWeapon.DropAmmoType 'SWWMShellAmmoBig'; Stamina 35000; +SWWMWEAPON.NOFIRSTGIVE; - Radius 30; - Height 36; } States { @@ -872,14 +488,16 @@ Class Wallbuster : SWWMWeapon Stop; Select: XZW2 G 1 A_FullRaise(); - XZW2 HIJKLMNOP 2; + XZW2 HI 2 A_BumpView(.2,tics:2); + XZW2 JKL 2 A_BumpView(-.3,tics:2); + XZW2 MNOP 2; Goto Ready; Ready: XZW2 A 1 { int flg = WRF_ALLOWUSER1; if ( invoker.CheckAmmo(PrimaryFire,false) ) flg |= WRF_ALLOWZOOM; - if ( invoker.CanReload() ) flg |= WRF_ALLOWRELOAD; + if ( GetShellsToLoad() ) flg |= WRF_ALLOWRELOAD; A_WeaponReady(flg); if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK|BT_ZOOM) ) invoker.CheckAmmo(EitherFire,true); @@ -898,9 +516,9 @@ Class Wallbuster : SWWMWeapon XZW2 AQRSTUVWX 1; XZW2 A 0 { - if ( invoker.whichspin == 2 ) return ResolveState("BigSpin"); - if ( invoker.whichspin == 1 ) return ResolveState("OneSpin"); - return ResolveState("Ready"); + if ( invoker.whichspin == 2 ) return ResolveState('BigSpin'); + if ( invoker.whichspin == 1 ) return ResolveState('OneSpin'); + return ResolveState('Ready'); } Goto Ready; FireFive: @@ -908,9 +526,9 @@ Class Wallbuster : SWWMWeapon XZW3 CDEFGHIJK 2; XZW2 A 0 { - if ( invoker.whichspin == 2 ) return ResolveState("BigSpin"); - if ( invoker.whichspin == 1 ) return ResolveState("OneSpin"); - return ResolveState("Ready"); + if ( invoker.whichspin == 2 ) return ResolveState('BigSpin'); + if ( invoker.whichspin == 1 ) return ResolveState('OneSpin'); + return ResolveState('Ready'); } Goto Ready; FireTwentyFive: @@ -919,9 +537,9 @@ Class Wallbuster : SWWMWeapon XZW4 ABC 2; XZW2 A 0 { - if ( invoker.whichspin == 2 ) return ResolveState("BigSpin"); - if ( invoker.whichspin == 1 ) return ResolveState("OneSpin"); - return ResolveState("Ready"); + if ( invoker.whichspin == 2 ) return ResolveState('BigSpin'); + if ( invoker.whichspin == 1 ) return ResolveState('OneSpin'); + return ResolveState('Ready'); } Goto Ready; DryFire: @@ -929,9 +547,9 @@ Class Wallbuster : SWWMWeapon XZW2 XA 4; XZW2 A 0 { - if ( invoker.whichspin == 2 ) return ResolveState("BigSpin"); - if ( invoker.whichspin == 1 ) return ResolveState("OneSpin"); - return ResolveState("Ready"); + if ( invoker.whichspin == 2 ) return ResolveState('BigSpin'); + if ( invoker.whichspin == 1 ) return ResolveState('OneSpin'); + return ResolveState('Ready'); } Goto Ready; OneSpin: @@ -939,7 +557,7 @@ Class Wallbuster : SWWMWeapon XZW2 YZ 2; XZW3 A 2; XZW3 B 0; - XZW2 A 0 A_JumpIf(invoker.rotation[invoker.rotation[5]]==0,"BigSpin"); + XZW2 A 0 A_JumpIf(invoker.rotation[invoker.rotation[5]]==0,'BigSpin'); Goto Ready; BigSpin: XZW2 A 1 A_SpinBig(); @@ -951,45 +569,21 @@ Class Wallbuster : SWWMWeapon XZW2 A 2 A_StartSound("wallbuster/meleestart",CHAN_WEAPON,CHANF_OVERLAP); XZW4 DEFG 2; XZW4 HIJK 1; - XZW4 L 1 A_StartSound("wallbuster/unlock",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 L 1 + { + A_QuakeEx(.8,.8,.8,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_StartSound("wallbuster/unlock",CHAN_WEAPON,CHANF_OVERLAP); + } XZW4 MNOPQ 1; XZW4 RSTUV 1; - XZW4 W 1 A_OpenMenu(); - XZW4 W 1 A_WaitMenu(); - Wait; + Goto Detach; Detach: XZW4 W 0 { - invoker.rnum = invoker.reloadqueue.Size(); - invoker.cancelreload = false; - A_Overlay(-9999,"CheckCancelReload"); - // clearing out? - if ( invoker.clearout ) - { - // jump to spin if current group is empty - bool hasshells = false; - for ( int i=0; i<5; i++ ) - { - // get physical index - int idx = i; - // shift based on full rotation - idx = (idx+invoker.rotation[5]*5); - while ( idx > 24 ) idx -= 25; - int group = idx/5; - // shift based on group rotation - int gidx = i%5; - gidx = (gidx+invoker.rotation[group]); - while ( gidx > 4 ) gidx -= 5; - idx = gidx+group*5; - if ( !invoker.loaded[idx] || invoker.fired[idx] ) continue; - hasshells = true; - break; - } - if ( !hasshells ) return ResolveState("DetachSpin"); - return ResolveState(null); - } + invoker.stopreload = false; + int rnum = GetShellsToLoad(); // if it's a full rotation, don't hand-spin - if ( invoker.rnum > 20 ) return ResolveState(null); + if ( rnum > 20 ) return ResolveState(null); // jump to spin if current group is full int nset = 0, nsetp = 0; for ( int i=0; i<5; i++ ) @@ -1025,52 +619,18 @@ Class Wallbuster : SWWMWeapon if ( !invoker.loaded[idx] || invoker.fired[idx] ) continue; nsetp++; } - return A_JumpIf((nset>=5)&&(nsetp<5),"DetachSpin"); + return A_JumpIf((nset>=5)&&(nsetp<5),'DetachSpin'); } XZW4 WXYZ 1; XZW5 ABCDEF 1; XZW5 G 1 A_StartSound("wallbuster/detach",CHAN_WEAPON,CHANF_OVERLAP); Goto DetachHold; DetachSpin: - XZWE U 0; - XZWE VWXY 1; + XZWE UVWXY 1; DetachSpinReturn: XZWE Z 1; - XZWF A 2 - { - invoker.cancelreload = false; - A_Overlay(-9999,"CheckCancelReload"); - A_HandSpin(); - } - XZWF BCDEF 2; - XZWF G 0 - { - if ( invoker.clearout ) - { - // jump to spin again if current group is empty - bool hasshells = false; - for ( int i=0; i<5; i++ ) - { - // get physical index - int idx = i; - // shift based on full rotation - idx = (idx+invoker.rotation[5]*5); - while ( idx > 24 ) idx -= 25; - int group = idx/5; - // shift based on group rotation - int gidx = i%5; - gidx = (gidx+invoker.rotation[group]); - while ( gidx > 4 ) gidx -= 5; - idx = gidx+group*5; - if ( !invoker.loaded[idx] || invoker.fired[idx] ) continue; - hasshells = true; - break; - } - if ( !hasshells ) return ResolveState("DetachSpinAgain"); - } - return ResolveState(null); - } - XZWF G 2; + XZWF A 2 A_HandSpin(); + XZWF BCDEFG 2; XZWF J 1 A_StartSound("wallbuster/detach",CHAN_WEAPON,CHANF_OVERLAP); XZWF K 0; Goto DetachHold; @@ -1084,7 +644,6 @@ Class Wallbuster : SWWMWeapon { A_StartDetachOverlays(); A_PlayerReload(); - return A_JumpIf(invoker.clearout,"DetachHoldClear"); } XZW5 IJKLMNOPQ 1; XZW5 R 2 A_DropShells(); @@ -1096,82 +655,13 @@ Class Wallbuster : SWWMWeapon XZW6 C 2 A_LoadShell(); XZW6 E 0 { - if ( invoker.cancelreload ) invoker.reloadqueue.Clear(); - player.SetPSprite(-9999,null); - return A_JumpIf((invoker.reloadqueue.Size()>0),"AttachSpin"); + int rnum = 0; + bool holdreload = CVar.GetCVar('swwm_holdreload',player).GetBool(); + if ( (!holdreload && !invoker.stopreload) || (holdreload && (player.cmd.buttons&BT_RELOAD)) ) + rnum = GetShellsToLoad(); + return A_JumpIf(rnum,'AttachSpin'); } Goto Attach; - DetachHoldClear: - XZW5 HIJKLMNOPQ 1; - XZW5 R 3 A_DropShells(); - XZW5 TX 3; - XZW6 A 3; - XZW6 E 0 - { - bool keepgoing = false; - // still have more shells? - for ( int i=0; i<25; i++ ) - { - if ( !invoker.loaded[i] || invoker.fired[i] ) continue; - keepgoing = true; - break; - } - if ( invoker.cancelreload ) keepgoing = false; - player.SetPSprite(-9999,null); - return A_JumpIf(keepgoing,"AttachSpin"); - } - Goto Attach; - CheckCancelReload: - TNT1 A 1 - { - if ( player.cmd.buttons&BT_RELOAD ) - invoker.cancelreload = true; - } - Wait; - DetachShell0: - XZWA EFGHIJKLM 1; - XZWA N 0; - Stop; - DetachShell1: - XZWB CDEFGHIJK 1; - XZWB L 0; - Stop; - DetachShell2: - XZWC ABCDEFGHI 1; - XZWC J 0; - Stop; - DetachShell3: - XZWC YZ 1; - XZWD ABCDEFG 1; - XZWD H 0; - Stop; - DetachShell4: - XZWD WXYZ 1; - XZWE ABCDE 1; - XZWE F 0; - Stop; - DetachShellF0: - XZWF LMNOPQRST 1; - XZWF U 0; - Stop; - DetachShellF1: - XZWF VWXYZ 1; - XZWG ABCD 1; - XZWG E 0; - Stop; - DetachShellF2: - XZWG FGHIJKLMN 1; - XZWG O 0; - Stop; - DetachShellF3: - XZWG PQRSTUVWX 1; - XZWG Y 0; - Stop; - DetachShellF4: - XZWG Z 1; - XZWH ABCDEFGH 1; - XZWH I 0; - Stop; Attach: XZW6 EF 2; XZW6 G 1 A_StartAttachOverlays(); @@ -1190,41 +680,8 @@ Class Wallbuster : SWWMWeapon XZW7 TUVW 1; XZW7 XYZ 1; XZW8 ABC 1; - XZW8 D 2 - { - invoker.cancelreload = false; - A_Overlay(-9999,"CheckCancelReload"); - A_HandSpin(); - } - XZW8 EFGH 2; - XZW8 I 0 - { - if ( invoker.clearout ) - { - // jump to spin again if current group is empty - bool hasshells = false; - for ( int i=0; i<5; i++ ) - { - // get physical index - int idx = i; - // shift based on full rotation - idx = (idx+invoker.rotation[5]*5); - while ( idx > 24 ) idx -= 25; - int group = idx/5; - // shift based on group rotation - int gidx = i%5; - gidx = (gidx+invoker.rotation[group]); - while ( gidx > 4 ) gidx -= 5; - idx = gidx+group*5; - if ( !invoker.loaded[idx] || invoker.fired[idx] ) continue; - hasshells = true; - break; - } - if ( !hasshells ) return ResolveState("AttachSpinAgain"); - } - return ResolveState(null); - } - XZW8 IL 2; + XZW8 D 2 A_HandSpin(); + XZW8 EFGHIL 2; XZW8 M 1 A_StartSound("wallbuster/detach",CHAN_WEAPON,CHANF_OVERLAP); XZW8 N 0; Goto DetachHold; @@ -1234,31 +691,19 @@ Class Wallbuster : SWWMWeapon XZW8 K 0; XZWH MNO 1; Goto DetachSpinReturn; - AttachShell0: - XZWA OPQRSTUVWXYZ 1; - XZWB A 1; - XZWB B 0; - Stop; - AttachShell1: - XZWB MNOPQRSTUVWXY 1; - XZWB Z 0; - Stop; - AttachShell2: - XZWC KLMNOPQRSTUVW 1; - XZWC X 0; - Stop; - AttachShell3: - XZWD IJKLMNOPQRSTU 1; - XZWD V 0; - Stop; - AttachShell4: - XZWE GHIJKLMNOPQRS 1; - XZWE T 0; - Stop; EndReload: - XZW4 W 1; + XZW4 W 1 + { + invoker.ClearBufferedAmmo(); + for ( int i=0; i<5; i++ ) + A_ChangeModel("",1,"","",4+i,"models","",CMDL_USESURFACESKIN,-1); + } XZW8 OPQRS 1; - XZW8 T 1 A_StartSound("wallbuster/lock",CHAN_WEAPON,CHANF_OVERLAP); + XZW8 T 1 + { + A_QuakeEx(1.,1.,1.,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_StartSound("wallbuster/lock",CHAN_WEAPON,CHANF_OVERLAP); + } XZW8 UVWXY 1; XZW8 Z 1 A_StartSound("wallbuster/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW9 ABC 1; @@ -1271,9 +716,14 @@ Class Wallbuster : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW9 GHI 2; - XZW9 J 2 A_Parry(9); - XZW9 KLM 1; + XZW9 GHI 2 A_BumpView(1,tics:2); + XZW9 J 2 + { + A_BumpFOV(.96); + A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_Parry(9); + } + XZW9 KLM 1 A_BumpView(-4); XZW9 N 1 A_Melee(70,"demolitionist/whitl",1.2,1.4,1.3); XZW9 OPQRS 2; XZW9 T 2 A_StartSound("wallbuster/meleeend",CHAN_WEAPON,CHANF_OVERLAP); @@ -1283,7 +733,9 @@ Class Wallbuster : SWWMWeapon Goto Ready; Deselect: XZW2 A 2 A_StartSound("wallbuster/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 BCDEFG 2; + XZW2 B 2; + XZW2 CD 2 A_BumpView(.1,tics:2); + XZW2 EF 2 A_BumpView(.2,tics:2); XZW2 G -1 A_FullLower(); Stop; FlashRed: @@ -1337,158 +789,5 @@ Class Wallbuster : SWWMWeapon Stop; XZWW Y 2 Bright; Stop; - FlashGreen: - XZWX A 2 Bright; - Stop; - XZWX B 2 Bright; - Stop; - XZWX C 2 Bright; - Stop; - XZWX D 2 Bright; - Stop; - XZWX E 2 Bright; - Stop; - XZWX F 2 Bright; - Stop; - XZWX G 2 Bright; - Stop; - XZWX H 2 Bright; - Stop; - XZWX I 2 Bright; - Stop; - XZWX J 2 Bright; - Stop; - XZWX K 2 Bright; - Stop; - XZWX L 2 Bright; - Stop; - XZWX M 2 Bright; - Stop; - XZWX N 2 Bright; - Stop; - XZWX O 2 Bright; - Stop; - XZWX P 2 Bright; - Stop; - XZWX Q 2 Bright; - Stop; - XZWX R 2 Bright; - Stop; - XZWX S 2 Bright; - Stop; - XZWX T 2 Bright; - Stop; - XZWX U 2 Bright; - Stop; - XZWX V 2 Bright; - Stop; - XZWX W 2 Bright; - Stop; - XZWX X 2 Bright; - Stop; - XZWX Y 2 Bright; - Stop; - FlashBlue: - XZWY A 2 Bright; - Stop; - XZWY B 2 Bright; - Stop; - XZWY C 2 Bright; - Stop; - XZWY D 2 Bright; - Stop; - XZWY E 2 Bright; - Stop; - XZWY F 2 Bright; - Stop; - XZWY G 2 Bright; - Stop; - XZWY H 2 Bright; - Stop; - XZWY I 2 Bright; - Stop; - XZWY J 2 Bright; - Stop; - XZWY K 2 Bright; - Stop; - XZWY L 2 Bright; - Stop; - XZWY M 2 Bright; - Stop; - XZWY N 2 Bright; - Stop; - XZWY O 2 Bright; - Stop; - XZWY P 2 Bright; - Stop; - XZWY Q 2 Bright; - Stop; - XZWY R 2 Bright; - Stop; - XZWY S 2 Bright; - Stop; - XZWY T 2 Bright; - Stop; - XZWY U 2 Bright; - Stop; - XZWY V 2 Bright; - Stop; - XZWY W 2 Bright; - Stop; - XZWY X 2 Bright; - Stop; - XZWY Y 2 Bright; - Stop; - FlashPurple: - XZWZ A 2 Bright; - Stop; - XZWZ B 2 Bright; - Stop; - XZWZ C 2 Bright; - Stop; - XZWZ D 2 Bright; - Stop; - XZWZ E 2 Bright; - Stop; - XZWZ F 2 Bright; - Stop; - XZWZ G 2 Bright; - Stop; - XZWZ H 2 Bright; - Stop; - XZWZ I 2 Bright; - Stop; - XZWZ J 2 Bright; - Stop; - XZWZ K 2 Bright; - Stop; - XZWZ L 2 Bright; - Stop; - XZWZ M 2 Bright; - Stop; - XZWZ N 2 Bright; - Stop; - XZWZ O 2 Bright; - Stop; - XZWZ P 2 Bright; - Stop; - XZWZ Q 2 Bright; - Stop; - XZWZ R 2 Bright; - Stop; - XZWZ S 2 Bright; - Stop; - XZWZ T 2 Bright; - Stop; - XZWZ U 2 Bright; - Stop; - XZWZ V 2 Bright; - Stop; - XZWZ W 2 Bright; - Stop; - XZWZ X 2 Bright; - Stop; - XZWZ Y 2 Bright; - Stop; } } diff --git a/zscript/weapons/swwm_cbt_fx.zsc b/zscript/weapons/swwm_cbt_fx.zsc index a6686ca51..2349479ef 100644 --- a/zscript/weapons/swwm_cbt_fx.zsc +++ b/zscript/weapons/swwm_cbt_fx.zsc @@ -1,37 +1,21 @@ // Wallbuster effects -Class BustedQuake : Actor +Class BustedQuake : SWWMNonInteractiveActor { - Default - { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - } override void PostBeginPlay() { - if ( (special1 < 3) || (special1 > 6) ) + if ( (specialf1 < 3) || (specialf1 > 6) ) { - A_StartSound("wallbuster/smallbust",CHAN_VOICE,CHANF_OVERLAP,min(1.,special1*.32),1./max(1.,special1*.35),1.-special1*.05); - A_StartSound("wallbuster/smallbust",CHAN_VOICE,CHANF_OVERLAP,min(1.,special1*.32),1./max(1.,special1*.35),1.-special1*.05); + A_StartSound("wallbuster/smallbust",CHAN_VOICE,CHANF_OVERLAP,min(1.,specialf1*.32),1./max(1.,specialf1*.35),1.-specialf1*.05); + A_StartSound("wallbuster/smallbust",CHAN_VOICE,CHANF_OVERLAP,min(1.,specialf1*.32),1./max(1.,specialf1*.35),1.-specialf1*.05); } - if ( special1 >= 3 ) + if ( specialf1 >= 3 ) { - A_StartSound("wallbuster/bigbust",CHAN_VOICE,CHANF_OVERLAP,min(1.,special1*.35),1./max(1.,special1*.35),1.-special1*.01); - A_StartSound("wallbuster/bigbust",CHAN_VOICE,CHANF_OVERLAP,min(1.,special1*.35),1./max(1.,special1*.35),1.-special1*.01); + A_StartSound("wallbuster/bigbust",CHAN_VOICE,CHANF_OVERLAP,min(1.,specialf1*.35),1./max(1.,specialf1*.35),1.-specialf1*.01); + A_StartSound("wallbuster/bigbust",CHAN_VOICE,CHANF_OVERLAP,min(1.,specialf1*.35),1./max(1.,specialf1*.35),1.-specialf1*.01); } - A_QuakeEx(special1,special1,special1,20+special1*5,0,300+special1*90,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:special1*.1); - A_AlertMonsters(swwm_uncapalert?0:2500); - } - override void Tick() - { - if ( isFrozen() ) return; - tics--; - if ( tics <= 0 ) Destroy(); + A_QuakeEx(specialf1,specialf1,specialf1,20+int(specialf1*5),0,300+int(specialf1*90),"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:specialf1*.1); + A_AlertMonsters(swwm_uncapalert?0:2500,AMF_EMITFROMTARGET); } States { @@ -107,26 +91,26 @@ Class BusterWall : Thinker if ( !level.IsPointInLevel(spot) ) continue; if ( (initial || !(busttics%2)) && !Random[Wallbuster](0,1) ) { - Vector3 pvel = (bustdir+(FRandom[Wallbuster](-1.,1.),FRandom[Wallbuster](-1.,1.),FRandom[Wallbuster](-1.,1.))).unit()*FRandom[Wallbuster](-2.,8.); - let s = Actor.Spawn("SWWMHalfSmoke",spot); + Vector3 pvel = (bustdir+SWWMUtility.Vec3FromAngles(FRandom[Wallbuster](0,360),FRandom[Wallbuster](-90,90))).unit()*FRandom[Wallbuster](-2.,8.); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',spot); s.vel = pvel; s.scale *= 2.5; - s.special1 = Random[Wallbuster](3,8); - s.SetShade(Color(1,1,1)*Random[Wallbuster](40,120)); + s.framestep = Random[Wallbuster](4,9); + s.scolor = Color(1,1,1)*Random[Wallbuster](40,120); } if ( (!initial && (busttics%3)) || (busttics > (bustmax/2)) ) continue; int numpt = Random[Wallbuster](-4,1); for ( int i=0; i (bustmax/2)) ) continue; int numpt = Random[Wallbuster](-4,1); for ( int i=0; i 16777216) || (max(b.z-a.z,max(b.x-a.x,b.y-a.y)) > 1024) ) return false; // not strong enough to bust if ( bust.accdamage < girthitude/300. ) return false; @@ -352,16 +330,22 @@ Class BusterWall : Thinker let s = SWWMStats.Find(Instigator.player); if ( s ) s.busts++; SWWMUtility.AchievementProgressInc("bustin",1,Instigator.player); + if ( (Instigator is 'Demolitionist') && !Random[DemoLines](0,3) && (int(girthitude**.15) >= 3) ) + { + if ( gametic > Demolitionist(Instigator).lastbust ) + SWWMHandler.AddOneliner("bustkill",2,50); + Demolitionist(Instigator).lastbust = gametic+350; + } } // call hit fx for devastation sigil (if any) - AngeryPower as = instigator?AngeryPower(instigator.FindInventory("AngeryPower")):null; + AngeryPower as = instigator?AngeryPower(instigator.FindInventory('AngeryPower')):null; if ( as ) as.DoHitFX(); bust.busted = true; bust.busttics = 0; bust.bustmax = min(30,int(12+girthitude**.1)); // quakin' - let q = Actor.Spawn("BustedQuake",(p.LastPos.x,p.LastPos.y,(b.z+a.z)/2)); - q.special1 = clamp(int(girthitude**.15),1,9); + let q = Actor.Spawn('BustedQuake',(p.LastPos.x,p.LastPos.y,(b.z+a.z)/2)); + q.specialf1 = clamp(girthitude**.15,0.,9.); // "precache" the grid for busting effects bust.boundsmin = a; bust.boundsmax = b; @@ -369,7 +353,7 @@ Class BusterWall : Thinker for ( double y=a.y; y<=b.y; y+=bust.step.y ) for ( double x=a.x; x<=b.x; x+=bust.step.x ) { if ( !SWWMUtility.PointInPolyobj((x,y),p) ) continue; - let g = new("BustPoint"); + let g = new('BustPoint'); g.pos = (x,y); bust.polygrid.Push(g); } @@ -377,19 +361,17 @@ Class BusterWall : Thinker level.ExecuteSpecial(Polyobj_Stop,instigator,p.StartLine,Line.Front,p.PolyobjectNum); if ( p.Mirror ) level.ExecuteSpecial(Polyobj_Stop,instigator,p.Mirror.StartLine,Line.Front,p.Mirror.PolyobjectNum); // send it to the shadow realm (and ensure it stays there) - if ( !p.FindEffector("SWWMBustedPolyobj") ) + if ( !p.FindEffector('SWWMBustedPolyobj') ) { - let yeet = new("SWWMBustedPolyobj"); + let yeet = new('SWWMBustedPolyobj'); yeet.whomstdve = instigator; p.AddEffector(yeet); } bust.SpawnDebris(true); // damnums Vector3 bcenter = (bust.boundsmin+bust.boundsmax)*.5; - if ( swwm_accdamage ) - SWWMScoreObj.Spawn(-bust.accdamage,level.Vec3Offset(bcenter,(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8))),ST_Damage); - else for ( int i=0; i0); + bool bUnbustable = (level.GetUDMFInt(level.UDMF_Sector,hs.Index(),'UNBUSTABLE')>0); // Check if it's a door - if ( !swwm_cbtall && !SWWMUtility.IsDoorSector(hs,hp) ) return false; - let ti = ThinkerIterator.Create("BusterWall",STAT_USER); + if ( !swwm_cbtall && (bUnbustable || (!bBustable && !SWWMUtility.IsDoorSector(hs,hp))) ) + return false; + let ti = ThinkerIterator.Create('BusterWall',STAT_USER); BusterWall iter, bust = null; while ( iter = BusterWall(ti.Next()) ) { @@ -447,7 +434,7 @@ Class BusterWall : Thinker bool mnew = false; if ( !bust ) { - bust = new("BusterWall"); + bust = new('BusterWall'); bust.ChangeStatNum(STAT_USER); bust.hitsector = hs; bust.accdamage = 0; @@ -468,30 +455,29 @@ Class BusterWall : Thinker { thisheight = hs.FindLowestCeilingPoint(); othersheight = hs.FindHighestCeilingSurrounding(); - if ( (thisheight-othersheight) >= -4. ) return false; - cutheight = min(hitz+extracut,othersheight-4); + if ( (thisheight-othersheight) >= 0. ) return false; + cutheight = min(hitz+extracut,othersheight+4); } else { thisheight = hs.FindHighestFloorPoint(); othersheight = hs.FindLowestFloorSurrounding(); - if ( (thisheight-othersheight) <= 4. ) return false; - cutheight = max(hitz-extracut,othersheight+4); + if ( (thisheight-othersheight) <= 0. ) return false; + cutheight = max(hitz-extracut,othersheight-4); } if ( hp ) bust.cutheight = mnew?cutheight:max(bust.cutheight,cutheight); else bust.cutheight = mnew?cutheight:min(bust.cutheight,cutheight); partheight = abs(thisheight-bust.cutheight); // skip if we don't cut off enough - if ( partheight < 4. ) return false; + if ( partheight <= 0. ) return false; // skip if already busted if ( bust.busted ) return true; // not enough total damage if ( bust.accdamage < 100 ) return false; // estimate sector volume Vector2 a = (32767,32767), b = (-32768,-32768); - for ( int i=0; i 16777216) || (max(partheight,max(b.x-a.x,b.y-a.y)) > 1024) ) return false; // not strong enough to bust if ( bust.accdamage < girthitude/300. ) return false; @@ -523,9 +509,15 @@ Class BusterWall : Thinker let s = SWWMStats.Find(Instigator.player); if ( s ) s.busts++; SWWMUtility.AchievementProgressInc("bustin",1,Instigator.player); + if ( (Instigator is 'Demolitionist') && !Random[DemoLines](0,3) && (int(girthitude**.15) >= 3) ) + { + if ( gametic > Demolitionist(Instigator).lastbust ) + SWWMHandler.AddOneliner("bustkill",2,50); + Demolitionist(Instigator).lastbust = gametic+350; + } } // call hit fx for devastation sigil (if any) - AngeryPower as = instigator?AngeryPower(instigator.FindInventory("AngeryPower")):null; + AngeryPower as = instigator?AngeryPower(instigator.FindInventory('AngeryPower')):null; if ( as ) as.DoHitFX(); bust.busted = true; bust.busttics = 0; @@ -533,16 +525,15 @@ Class BusterWall : Thinker // shush hs.flags |= Sector.SECF_SILENTMOVE; // filler texture - TextureID rubble = TexMan.CheckForTexture("ASHWALL2",TexMan.Type_Any); + TextureID rubble = TexMan.CheckForTexture("ASHWALL2"); // equivalents for other iwads - if ( !rubble.IsValid() ) rubble = TexMan.CheckForTexture("ASHWALL",TexMan.Type_Any); - if ( !rubble.IsValid() ) rubble = TexMan.CheckForTexture("LOOSERCK",TexMan.Type_Any); - if ( !rubble.IsValid() ) rubble = TexMan.CheckForTexture("WASTE03",TexMan.Type_Any); - if ( !rubble.IsValid() ) rubble = TexMan.CheckForTexture("-noflat-",TexMan.Type_Any); // an unfortunate fallback should none of those exist + if ( !rubble.IsValid() ) rubble = TexMan.CheckForTexture("ASHWALL"); + if ( !rubble.IsValid() ) rubble = TexMan.CheckForTexture("LOOSERCK"); + if ( !rubble.IsValid() ) rubble = TexMan.CheckForTexture("WASTE03"); + if ( !rubble.IsValid() ) rubble = TexMan.CheckForTexture("textures/DefaultTexture.png"); // a fun little fallback should none of those exist // activate all shoot/use specials (not locked) associated with this sector's two-sided lines - for ( int i=0; i queue; - int AmmoSets[4]; - bool isrclick, ismclick; - - String ttl; - BrokenLines keyl; - - override void Init( Menu parent ) - { - Super.Init(parent); - if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || !(players[consoleplayer].ReadyWeapon is 'Wallbuster') ) - { - EventHandler.SendNetworkEvent("swwmcbt.",consoleplayer); - Close(); - return; - } - MainWindow = TexMan.CheckForTexture("graphics/HUD/WallbusterMenu.png",TexMan.Type_Any); - AmmoIcon[0] = TexMan.CheckForTexture("graphics/HUD/RedShell.png",TexMan.Type_Any); - AmmoIcon[1] = TexMan.CheckForTexture("graphics/HUD/GreenShell.png",TexMan.Type_Any); - AmmoIcon[2] = TexMan.CheckForTexture("graphics/HUD/BlueShell.png",TexMan.Type_Any); - AmmoIcon[3] = TexMan.CheckForTexture("graphics/HUD/PurpleShell.png",TexMan.Type_Any); - MenuSound("menu/demotab"); - queue.Clear(); - sel0 = swwm_cbtlast; - ttl = StringTable.Localize("$SWWM_BUSTERTITLE"); - keyl = smallfont2.BreakLines(StringTable.Localize("$SWWM_BUSTERKEYS"),300); - } - - override void Ticker() - { - Super.Ticker(); - if ( swwm_cbtpause ) menuactive = Menu.On; - else menuactive = Menu.OnNoPause; - if ( (players[consoleplayer].Health > 0) && (players[consoleplayer].ReadyWeapon is 'Wallbuster') && (gamestate == GS_LEVEL) ) return; - MenuEvent(MKEY_BACK,false); - } - - private bool IsDone() - { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - if ( queue.Size() >= 25 ) return true; - for ( int i=0; i<4; i++ ) - { - if ( (players[consoleplayer].mo.CountInv(types[i])-AmmoSets[i]) > 0 ) - return false; - } - return true; - } - - private bool PushAmmo( bool autoshift = false ) - { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - if ( queue.Size() >= 25 ) return true; - if ( (players[consoleplayer].mo.CountInv(types[sel0])-AmmoSets[sel0]) <= 0 ) - { - if ( autoshift ) - { - // switch to next available ammo - for ( int i=0; i<4; i++ ) - { - int idx = (sel0+i)%4; - if ( (players[consoleplayer].mo.CountInv(types[idx])-AmmoSets[idx]) > 0 ) - { - sel0 = idx; - CVar.FindCVar('swwm_cbtlast').SetInt(sel0); - return PushAmmo(true); - } - } - } - MenuSound("menu/noinvuse"); - return false; - } - if ( !autoshift ) MenuSound("menu/demosel"); - AmmoSets[sel0]++; - queue.Push(sel0); - return true; - } - - private void ShuffleAmmo() - { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - // there's probably a better way to do this but I'm lazy - Array candidates; - candidates.Clear(); - for ( int i=0; i<4; i++ ) - { - if ( (players[consoleplayer].mo.CountInv(types[i])-AmmoSets[i]) <= 0 ) - continue; - candidates.Push(i); - } - if ( candidates.Size() <= 0 ) return; - sel0 = candidates[Random[WallbusterMenu](0,candidates.Size()-1)]; - CVar.FindCVar('swwm_cbtlast').SetInt(sel0); - AmmoSets[sel0]++; - queue.Push(sel0); - } - - private bool PopAmmo() - { - if ( queue.Size() <= 0 ) return false; - AmmoSets[queue[queue.Size()-1]]--; - queue.Pop(); - return true; - } - - override bool MenuEvent( int mkey, bool fromcontroller ) - { - switch ( mkey ) - { - case MKEY_BACK: - queue.Clear(); - for ( int i=0; i<4; i++ ) AmmoSets[i] = 0; - MenuSound("menu/democlose"); - EventHandler.SendNetworkEvent("swwmcbt.",consoleplayer); - Close(); - return true; - case MKEY_ENTER: - if ( queue.Size() <= 0 ) - { - while ( queue.Size() < 25 ) - { - if ( !PushAmmo(true) ) - break; - } - } - String cbt = "swwmcbt."; - for ( int i=0; i 3 ) sel0 = 0; - CVar.FindCVar('swwm_cbtlast').SetInt(sel0); - return true; - case MKEY_LEFT: - MenuSound("menu/demotab"); - sel0--; - if ( sel0 < 0 ) sel0 = 3; - CVar.FindCVar('swwm_cbtlast').SetInt(sel0); - return true; - case MKEY_PAGEUP: - if ( queue.Size() <= 0 ) - { - MenuSound("menu/noinvuse"); - return true; - } - int i = 0; - while ( (queue.Size() > 0) && (i++ < 5) ) - { - if ( !PopAmmo() ) - break; - } - MenuSound("menu/demoscroll"); - return true; - case MKEY_PAGEDOWN: - if ( IsDone() ) - { - MenuSound("menu/noinvuse"); - return true; - } - int j = 0; - while ( (queue.Size() < 25) && (j++ < 5) ) - { - if ( !PushAmmo(true) ) - return true; - } - MenuSound("menu/demosel"); - return true; - case MKEY_CLEAR: - if ( queue.Size() <= 0 ) MenuSound("menu/noinvuse"); - else - { - MenuSound("menu/demoscroll"); - queue.Clear(); - for ( int i=0; i<4; i++ ) AmmoSets[i] = 0; - } - return true; - } - return Super.MenuEvent(mkey,fromcontroller); - } - - override bool OnUiEvent( UIEvent ev ) - { - int y; - bool res; - switch ( ev.type ) - { - case UIEvent.Type_KeyDown: - if ( ev.keychar == UiEvent.Key_Tab ) - { - // shuffle! - queue.Clear(); - for ( int i=0; i<4; i++ ) AmmoSets[i] = 0; - bool didsomething = false; - while ( !IsDone() ) - { - ShuffleAmmo(); - didsomething = true; - } - MenuSound(didsomething?"menu/demosel":"menu/noinvuse"); - } - else if ( ev.keychar == UiEvent.Key_Del ) - { - // empty it out - queue.Clear(); - for ( int i=0; i<4; i++ ) AmmoSets[i] = 0; - MenuSound("menu/democlose"); - EventHandler.SendNetworkEvent("swwmcbt.EMPTY",consoleplayer); - Close(); - } - break; - case UIEvent.Type_LButtonDown: - isrclick = false; - ismclick = false; - return Super.OnUIEvent(ev); - break; - case UIEvent.Type_RButtonDown: - isrclick = true; - ismclick = false; - // copy over what base menus do for L click - y = ev.MouseY; - res = MouseEventBack(MOUSE_Click,ev.MouseX,y); - if ( res ) y = -1; - res |= MouseEvent(MOUSE_Click,ev.MouseX,y); - if ( res ) SetCapture(true); - return false; - break; - case UIEvent.Type_MButtonDown: - isrclick = false; - ismclick = true; - // copy over what base menus do for L click - y = ev.MouseY; - res = MouseEventBack(MOUSE_Click,ev.MouseX,y); - if ( res ) y = -1; - res |= MouseEvent(MOUSE_Click,ev.MouseX,y); - if ( res ) SetCapture(true); - return false; - break; - case UIEvent.Type_RButtonUp: - case UIEvent.Type_MButtonUp: - // copy over what base menus do for L release - if ( mMouseCapture ) - { - SetCapture(false); - y = ev.MouseY; - res = MouseEventBack(MOUSE_Release,ev.MouseX,y); - if ( res ) y = -1; - res |= MouseEvent(MOUSE_Release,ev.MouseX,y); - } - return false; - break; - } - return Super.OnUIEvent(ev); - } - - override void Drawer() - { - static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell"}; - Super.Drawer(); - double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/400.)),1.); - Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs; - Vector2 origin = (ss.x-132,ss.y-26)/2.; - Screen.DrawTexture(MainWindow,false,origin.x,origin.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int ox = 27, oy = 2; - for ( int i=0; i<4; i++ ) - { - Screen.DrawTexture(AmmoIcon[i],false,origin.x+ox,origin.y+oy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(i==sel0)?Color(0,0,0,0):Color(128,0,0,0)); - String astr = String.Format("%3d",players[consoleplayer].mo.CountInv(types[i])-AmmoSets[i]); - Screen.DrawText(smallfont,Font.CR_FIRE,origin.x+ox-(smallfont.StringWidth(astr)+1),origin.y+oy-1,astr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(i==sel0)?Color(0,0,0,0):Color(128,0,0,0)); - ox += 33; - } - // pointer (▸) - Screen.DrawChar(smallfont,Font.CR_GREEN,origin.x+2+33*sel0,origin.y+1,0x25B8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int siz = queue.Size()-1; - ox = 2+siz*5+(siz/5); - oy = 15; - for ( int i=0; i<=siz; i++ ) - { - Screen.DrawTexture(AmmoIcon[queue[i]],false,origin.x+ox,origin.y+oy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - ox -= 5; - if ( !((i+1)%5) ) ox--; - } - // text stuff - String str; - int boxw, sw; - double x, y; - str = ttl; - sw = smallfont.StringWidth(str); - boxw = sw; - str = "(C)2148 Akari Labs"; - sw = smallfont2.StringWidth(str); - if ( sw > boxw ) boxw = sw; - x = floor((ss.x-boxw)/2.); - y = origin.y-30; - Screen.Dim("Black",.8,int((x-2)*hs),int((y-1)*hs),int((boxw+4)*hs),int(25*hs)); - str = ttl; - sw = smallfont.StringWidth(str); - x = floor((ss.x-sw)/2.); - Screen.DrawText(smallfont,Font.CR_FIRE,x,y,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - y += 14; - str = "(C)2148 Akari Labs"; - sw = smallfont2.StringWidth(str); - x = floor((ss.x-sw)/2.); - Screen.DrawText(smallfont2,Font.CR_GOLD,x,y,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - y = origin.y+36; - boxw = 0; - for ( int i=0; i boxw ) boxw = sw; - } - x = floor((ss.x-boxw)/2.); - Screen.Dim("Black",.8,int((x-2)*hs),int((y-2)*hs),int((boxw+4)*hs),int((9*keyl.Count()+2)*hs)); - for ( int i=0; i 0) || chambered ) return true; @@ -37,10 +23,7 @@ Class Eviscerator : SWWMWeapon override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { if ( (firemode == PrimaryFire) || (firemode == AltFire) ) - { - if ( (Ammo1.Amount > 0) || chambered ) return true; - return false; - } + return ((Ammo1.Amount > 0) || chambered); return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } @@ -71,29 +54,13 @@ Class Eviscerator : SWWMWeapon } } - override void HudTick() - { - Super.HudTick(); - if ( lastmode && (lastmode != extended+1) && (Owner.player == players[consoleplayer]) ) - { - let bar = SWWMStatusBar(statusbar); - if ( bar ) - { - bar.ntagstr = StringTable.Localize(extended?"$SWWM_TIGHTSPREAD":"$SWWM_WIDESPREAD"); - bar.ntagtic = level.totaltime; - bar.ntagcol = nametagcolor; - } - } - lastmode = extended+1; - } - action void A_StartLoad( int delay = 0 ) { invoker.pendingload = true; invoker.loadtics = -delay; } - override Vector3 GetTraceOffset() + override Vector3 GetTraceOffset( int index ) { return (10.,4.,-5.); } @@ -104,26 +71,26 @@ Class Eviscerator : SWWMWeapon if ( !weap ) return; invoker.isfiring = true; A_StartSound("eviscerator/fire",CHAN_WEAPON,CHANF_OVERLAP); - A_QuakeEx(6,6,6,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5); + A_QuakeEx(6.,6.,6.,8,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.5); A_BumpFOV(.94); A_SWWMFlash(); A_PlayerFire(); SWWMHandler.DoFlash(self,Color(64,255,224,96),3); A_AlertMonsters(swwm_uncapalert?0:4500); - Vector3 x, y, z, x2, y2, z2, dir, origin; + Vector3 dir; double a, s; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); SWWMUtility.DoKnockback(self,-x,25000.); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+4*y-5*z); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,4,-5); int trail = CVar.GetCVar('swwm_funtrails',player).GetInt(); if ( trail == 8 ) trail = Random[Eviscerator](1,7); for ( int i=0; i<30; i++ ) { a = FRandom[Eviscerator](0,360); s = FRandom[Eviscerator](0,invoker.extended?.03:.2); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = EvisceratorChunk(Spawn("EvisceratorChunk",origin)); + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + let p = EvisceratorChunk(Spawn('EvisceratorChunk',origin)); p.target = self; p.angle = atan2(dir.y,dir.x); p.pitch = asin(-dir.z); @@ -131,7 +98,7 @@ Class Eviscerator : SWWMWeapon if ( invoker.extended ) { p.vel *= 1.5; - p.lifetime += .1; // slightly reduced point blank damage + p.lifetime += .1; // reduced point blank damage (almost halved) } if ( trail < 8 ) p.trailcolor = max(0,trail); else if ( trail == 9 ) p.trailcolor = (i%6)+2; @@ -152,10 +119,27 @@ Class Eviscerator : SWWMWeapon break; } } + else if ( trail == 11 ) p.trailcolor = (i&1)?7:4; + else if ( trail == 12 ) p.trailcolor = (i&1)?6:2; + else if ( trail == 13 ) + { + switch ( i%3 ) + { + case 0: + p.trailcolor = 2; + break; + case 1: + p.trailcolor = 1; + break; + case 2: + p.trailcolor = 4; + break; + } + } } for ( int i=0; i<8; i++ ) { - let s = Spawn("SWWMSmoke",origin); + let s = Spawn('SWWMSmoke',origin); s.special1 = 1; s.scale *= .9; s.alpha *= .3; @@ -164,7 +148,7 @@ Class Eviscerator : SWWMWeapon } for ( int i=0; i<9; i++ ) { - let s = Spawn("SWWMSpark",origin); + let s = Spawn('SWWMSpark',origin); s.scale *= .3; s.alpha *= .4; s.vel += vel*.5+x*FRandom[Eviscerator](4.,8.)+y*FRandom[Eviscerator](-2,2)+z*FRandom[Eviscerator](-2,2); @@ -179,29 +163,28 @@ Class Eviscerator : SWWMWeapon invoker.isfiring = true; A_StartSound("eviscerator/altfire",CHAN_WEAPON,CHANF_OVERLAP); A_StartSound("eviscerator/fire",CHAN_WEAPON,CHANF_OVERLAP); - A_QuakeEx(4,4,4,5,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.9); + A_QuakeEx(4.,4.,4.,15,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.9); A_BumpFOV(.91); A_SWWMFlash(); A_PlayerFire(); SWWMHandler.DoFlash(self,Color(16,255,224,96),3); A_AlertMonsters(swwm_uncapalert?0:4000); - Vector3 x, y, z, x2, y2, z2, dir, origin; - double a, s; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 dir; + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); SWWMUtility.DoKnockback(self,-x,32000.); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+3*y-5*z); - a = FRandom[Eviscerator](0,360); - s = FRandom[Eviscerator](0,invoker.extended?.003:.02); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn("EvisceratorProj",origin); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,3,-5); + double a = FRandom[Eviscerator](0,360); + double s = FRandom[Eviscerator](0,invoker.extended?.003:.02); + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + let p = Spawn('EvisceratorProj',origin); p.target = self; p.angle = atan2(dir.y,dir.x); p.pitch = asin(-dir.z); p.vel = dir*p.speed*(invoker.extended?1.75:.75); for ( int i=0; i<6; i++ ) { - let s = Spawn("SWWMSmoke",origin); + let s = Spawn('SWWMSmoke',origin); s.special1 = 1; s.scale *= .9; s.alpha *= .2; @@ -210,7 +193,7 @@ Class Eviscerator : SWWMWeapon } for ( int i=0; i<5; i++ ) { - let s = Spawn("SWWMSpark",origin); + let s = Spawn('SWWMSpark',origin); s.scale *= .3; s.alpha *= .4; s.vel += vel*.5+x*FRandom[Eviscerator](4.,8.)+y*FRandom[Eviscerator](-2,2)+z*FRandom[Eviscerator](-2,2); @@ -219,10 +202,9 @@ Class Eviscerator : SWWMWeapon action void A_EvisceratorEject() { - Vector3 x, y, z, origin; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),x*10-y*10-z*10); - let c = Spawn("EvisceratorCasing",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-10,-10); + let c = Spawn('EvisceratorCasing',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)-y*FRandom[Junk](3,6)-(0,0,FRandom[Junk](4,6)); @@ -232,15 +214,19 @@ Class Eviscerator : SWWMWeapon action void A_EvisceratorCasingSmoke( Vector3 ofs ) { - Vector3 x, y, z, origin; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),x*ofs.x+y*ofs.y+z*ofs.z); - let s = Spawn("SWWMHalfSmoke",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,ofs.x,ofs.y,ofs.z); + let s = Spawn('SWWMSmoke',origin); s.scale *= .2; s.alpha *= .4; s.speed *= .1; } + action void A_UpdatePickup() + { + frame = invoker.extended; + } + override void MarkPrecacheSounds() { Super.MarkPrecacheSounds(); @@ -281,44 +267,38 @@ Class Eviscerator : SWWMWeapon Default { - //$Title Eviscerator - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_Eviscerator.png - //$Icon weapon Tag "$T_EVISCERATOR"; + Inventory.Icon "graphics/HUD/Icons/W_Eviscerator.png"; Inventory.PickupMessage "$I_EVISCERATOR"; Obituary "$O_EVISCERATOR"; SWWMWeapon.Tooltip "$TT_EVISCERATOR"; SWWMWeapon.GetLine "geteviscerator"; - Inventory.Icon "graphics/HUD/Icons/W_Eviscerator.png"; Weapon.SlotNumber 5; Weapon.UpSound "eviscerator/select"; Weapon.SelectionOrder 300; Stamina 50000; - Weapon.AmmoType1 "EvisceratorShell"; + Weapon.AmmoType1 'EvisceratorShell'; Weapon.AmmoGive1 4; - SWWMWeapon.DropAmmoType "EvisceratorShell"; + SWWMWeapon.DropAmmoType 'SWWMClipAmmoMed'; +WEAPON.EXPLOSIVE; - Radius 20; - Height 32; } States { Spawn: - XZW1 A -1; + XZW1 A -1 NoDelay A_UpdatePickup(); Stop; Deselect: XZW2 A 2 { A_StartSound("eviscerator/deselect",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.extended,"DeselectExt"); + return A_JumpIf(invoker.extended,'DeselectExt'); } - XZW2 BCDEFGH 2; + XZW2 BCDEFG 2; XZW2 H -1 A_FullLower(); Stop; DeselectExt: XZW4 Z 2; - XZW5 ABCDEFG 2; + XZW5 ABCDEF 2; XZW5 G -1 A_FullLower(); Stop; Select: @@ -326,7 +306,7 @@ Class Eviscerator : SWWMWeapon { invoker.isfiring = false; A_FullRaise(); - return A_JumpIf(invoker.extended,"SelectExt"); + return A_JumpIf(invoker.extended,'SelectExt'); } XZW2 IJKLMNOPQR 2; Goto Ready; @@ -373,7 +353,7 @@ Class Eviscerator : SWWMWeapon XZW2 A 1 { A_EvisceratorFire(); - return A_JumpIf(invoker.extended,"FireExt"); + return A_JumpIf(invoker.extended,'FireExt'); } XZW3 EFGHIJKLMNOPQR 1; Goto Eject; @@ -384,18 +364,23 @@ Class Eviscerator : SWWMWeapon Eject: XZW2 A 4; XZW3 STUV 2; - XZW3 W 1 A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 W 1 + { + A_QuakeEx(.3,.3,.3,4,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP); + } XZW3 X 1 { int layer = PSP_WEAPON+1; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"EjectCasing"); - A_Overlay(-9999,"EjectSmoke"); + A_Overlay(layer,'EjectCasing'); + A_Overlay(-9999,'EjectSmoke'); } XZW3 YZ 1; XZW4 AB 1; XZW4 C 1 { + A_QuakeEx(.5,.5,.5,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.15); A_StartSound("eviscerator/ejectend",CHAN_WEAPON,CHANF_OVERLAP); A_StartLoad(); } @@ -405,18 +390,23 @@ Class Eviscerator : SWWMWeapon EjectExt: XZW4 Z 4; XZW6 RSTU 2; - XZW6 V 1 A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 V 1 + { + A_QuakeEx(.3,.3,.3,4,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("eviscerator/eject",CHAN_WEAPON,CHANF_OVERLAP); + } XZW6 W 1 { int layer = PSP_WEAPON+1; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"EjectCasing"); - A_Overlay(-9999,"EjectSmoke"); + A_Overlay(layer,'EjectCasing'); + A_Overlay(-9999,'EjectSmoke'); } XZW6 XYZ 1; XZW7 A 1; XZW7 B 1 { + A_QuakeEx(.5,.5,.5,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.15); A_StartSound("eviscerator/ejectend",CHAN_WEAPON,CHANF_OVERLAP); A_StartLoad(); } @@ -447,7 +437,7 @@ Class Eviscerator : SWWMWeapon XZW2 A 2 { A_EvisceratorAltFire(); - return A_JumpIf(invoker.extended,"AltFireExt"); + return A_JumpIf(invoker.extended,'AltFireExt'); } XZW2 STUVW 1; XZW2 XYZ 2; @@ -466,14 +456,19 @@ Class Eviscerator : SWWMWeapon XZW2 A 2 { A_StartSound("eviscerator/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.extended,"ZoomExt"); + return A_JumpIf(invoker.extended,'ZoomExt'); } XZW4 JKLMN 2; - XZW4 O 1 A_StartSound("eviscerator/switch"); + XZW4 O 1 + { + A_QuakeEx(.25,.25,.25,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("eviscerator/switch"); + } XZW4 PQR 1; XZW4 S 2 { - invoker.extended = !invoker.extended; + invoker.extended = true; + EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_TIGHTSPREAD"); A_StartSound("eviscerator/meleeend",CHAN_WEAPON,CHANF_OVERLAP); } XZW4 TUVWY 2; @@ -481,11 +476,16 @@ Class Eviscerator : SWWMWeapon ZoomExt: XZW4 Z 2; XZW7 IJK 3; - XZW7 L 1 A_StartSound("eviscerator/switch"); + XZW7 L 1 + { + A_QuakeEx(.25,.25,.25,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); + A_StartSound("eviscerator/switch"); + } XZW7 MNO 1; XZW7 P 2 { - invoker.extended = !invoker.extended; + invoker.extended = false; + EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_WIDESPREAD"); A_StartSound("eviscerator/meleeend",CHAN_WEAPON,CHANF_OVERLAP); } XZW7 QRSTU 2; @@ -495,7 +495,7 @@ Class Eviscerator : SWWMWeapon { A_StartSound("eviscerator/checkgun",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); - return A_JumpIf(invoker.extended,"ReloadExt"); + return A_JumpIf(invoker.extended,'ReloadExt'); } XZW7 VWXYZ 2; XZW8 A 2; @@ -521,44 +521,63 @@ Class Eviscerator : SWWMWeapon A_StartSound("eviscerator/meleestart",CHAN_WEAPON,CHANF_OVERLAP); A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); - return A_JumpIf(invoker.extended,"User1Ext"); + return A_JumpIf(invoker.extended,'User1Ext'); } - XZW8 WXY 2; - XZW8 Z 1; + XZW8 WXY 2 A_BumpAngle(2,2); + XZW8 Z 1 A_BumpAngle(2); XZW9 AB 1; - XZW9 C 1 A_Parry(9); - XZW9 D 1; - XZW9 E 2 A_Melee(60,"demolitionist/whitm",1.1,1.2,1.2); + XZW9 C 1 + { + A_BumpFOV(.98); + A_QuakeEx(.8,.8,.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_Parry(9); + } + XZW9 D 1 A_BumpAngle(-8); + XZW9 E 2 + { + A_BumpAngle(-4); + A_Melee(60,"demolitionist/whitm",1.1,1.2,1.2); + } XZW9 FGH 2; XZW9 I 2 A_StartSound("eviscerator/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW9 JKL 2; Goto Ready; User1Ext: XZW4 Z 2; - XZWA NOP 2; - XZWA QRS 1; - XZWA T 1 A_Parry(9); - XZWA U 1; - XZWA V 2 A_Melee(60,"demolitionist/whitm",1.1,1.2); + XZWA NOP 2 A_BumpAngle(2,2); + XZWA Q 1 A_BumpAngle(2); + XZWA RS 1; + XZWA T 1 + { + A_BumpFOV(.98); + A_QuakeEx(.8,.8,.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_Parry(9); + } + XZWA U 1 A_BumpAngle(-8); + XZWA V 2 + { + A_BumpAngle(-4); + A_Melee(60,"demolitionist/whitm",1.1,1.2); + } XZWA WXY 2; XZWA Z 2 A_StartSound("eviscerator/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZWB ABC 2; Goto ReadyExt; Flash: - XZWZ A 2 + XZWZ A 2 Bright { let psp = player.GetPSprite(PSP_FLASH); psp.frame = Random[GunFlash](0,3); - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.target = self; } Stop; AltFlash: - XZWZ A 2 + XZWZ A 2 Bright { let psp = player.GetPSprite(PSP_FLASH); psp.frame = Random[GunFlash](4,7); - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.target = self; l.args[3] -= 20; } diff --git a/zscript/weapons/swwm_danmaku_fx.zsc b/zscript/weapons/swwm_danmaku_fx.zsc index 192b6615f..5863ee759 100644 --- a/zscript/weapons/swwm_danmaku_fx.zsc +++ b/zscript/weapons/swwm_danmaku_fx.zsc @@ -14,8 +14,8 @@ Class EvisceratorChunkLight : PointLightAttenuated Destroy(); return; } + if ( isFrozen() || (freezetics > 0) ) return; SetOrigin(target.pos,true); - if ( isFrozen() ) return; double intst = clamp((.7-EvisceratorChunk(target).lifetime)/.7,0.,1.); args[LIGHT_RED] = int(255*intst); args[LIGHT_GREEN] = int(224*intst); @@ -23,28 +23,18 @@ Class EvisceratorChunkLight : PointLightAttenuated } } -Class ChunkImpact : Actor +Class ChunkImpact : SWWMNonInteractiveActor { - Default - { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - } override void PostBeginPlay() { Super.PostBeginPlay(); A_SprayDecal("WallCrack",-20); int numpt = Random[Eviscerator](-1,2); - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); for ( int i=0; i 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; if ( !EvisceratorChunk(target) || EvisceratorChunk(target).justdied ) { @@ -104,23 +92,21 @@ Class EvisceratorChunkGlow : Actor } } -Class EvisceratorChunkTrail : Actor +Class EvisceratorChunkTrail : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius .1; - Height 0.; + RenderStyle 'Add'; XScale 8.; +FORCEXYBILLBOARD; - +NOGRAVITY; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - +NOTELEPORT; } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; A_SetScale(scale.x*(.6+specialf1),scale.y); A_FadeOut(.1+specialf2); @@ -135,6 +121,8 @@ Class EvisceratorChunkTrail : Actor Class EvisceratorChunk : Actor { + Mixin SWWMMissileFix; + Actor lasthit; double anglevel, pitchvel, rollvel; double lifetime, lifespeed; @@ -145,11 +133,12 @@ Class EvisceratorChunk : Actor Default { Obituary "$O_EVISCERATOR"; + SelfObituary "$SO_EVISCERATOR"; Radius 2; Height 4; Speed 50; - DamageFunction int(clamp((vel.length()-10)*.08,0,15)+(max(0,1-lifetime)**5)*10); - DamageType 'shot'; + DamageFunction int(clamp((vel.length()-5)*.15,0,10)+(max(0,1-lifetime)**5)*5); + DamageType 'Shrapnel'; BounceFactor 1.0; WallBounceFactor 1.0; PROJECTILE; @@ -159,8 +148,8 @@ Class EvisceratorChunk : Actor +BOUNCEONCEILINGS; +ALLOWBOUNCEONACTORS; +NODAMAGETHRUST; - +DONTBOUNCEONSKY; +CANBOUNCEWATER; + +KEEPBOUNCEANGLE; +INTERPOLATEANGLES; +ROLLSPRITE; +ROLLCENTER; @@ -170,9 +159,9 @@ Class EvisceratorChunk : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - let l = Spawn("EvisceratorChunkLight",pos); + let l = Spawn('EvisceratorChunkLight',pos); l.target = self; - let t = Spawn("EvisceratorChunkGlow",pos); + let t = Spawn('EvisceratorChunkGlow',pos); t.target = self; lifespeed = FRandom[Eviscerator](0.01,0.02)*clamp((vel.length()/75.)**2,1.,2.); anglevel = FRandom[Eviscerator](50,100)*RandomPick[Eviscerator](-1,1); @@ -196,18 +185,18 @@ Class EvisceratorChunk : Actor // otherwise there is a single puff of smoke at the LAST tic // of the state, there is no logical explanation for this, // I guess I can blame graf, randi, or whoever else - if ( isFrozen() || justdied ) return; + if ( isFrozen() || (freezetics > 0) || justdied ) return; lifetime += lifespeed; if ( waterlevel > 0 ) lifetime = max(.7,lifetime); A_SetTranslation(tls[clamp(int(lifetime*10),0,7)]); if ( !Random[Eviscerator](0,2) && (lifetime < .7) ) { - let s = Spawn("SWWMHalfSmoke",pos); - s.vel = .2*vel+(FRandom[Eviscerator](-.1,.1),FRandom[Eviscerator](-.1,.1),FRandom[Eviscerator](-.1,.1)); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); + s.vel = .2*vel+SWWMUtility.Vec3FromAngles(FRandom[Eviscerator](0,360),FRandom[Eviscerator](-90,90)); s.scale *= .5; s.alpha *= scale.x*max(0,.7-lifetime)*1.5; } - if ( !InStateSequence(CurState,FindState("Death")) ) + if ( !InStateSequence(CurState,FindState('Death')) ) { angle += anglevel; pitch += pitchvel; @@ -218,11 +207,10 @@ Class EvisceratorChunk : Actor double dist = dir.length(); if ( dist < 1. ) return; dir /= dist; - let t = Spawn("EvisceratorChunkTrail",pos); + let t = Spawn('EvisceratorChunkTrail',pos); t.alpha = alph; - t.scale.y = dist; - t.angle = atan2(dir.y,dir.x); - t.pitch = asin(-dir.z)+90; + t.speed = dist; + [t.angle, t.pitch, t.scale.y] = SWWMUtility.CalcYBeam(dir,dist); t.SetState(t.SpawnState+trailcolor); if ( trailcolor > 0 ) { @@ -235,60 +223,21 @@ Class EvisceratorChunk : Actor void A_HandleBounce() { - Vector3 HitNormal = (0,0,0); - F3DFloor ff; - if ( BlockingFloor ) - { - // find closest 3d floor for its normal - for ( int i=0; i 0. ) HitNormal = vel.unit(); + Vector3 HitNormal = SWWMUtility.GetActorHitNormal(self); if ( swwm_omnibust ) BusterWall.ProjectileBust(self,GetMissileDamage(0,0),oldvel.unit()); // undo the bounce, we need to hook in our own vel = oldvel; // re-do the bounce with our formula Vector3 RealHitNormal = HitNormal; double dfact = clamp((oldvel.length()/75.)**2.,.02,.6); - HitNormal = (HitNormal+(FRandom[Eviscerator](-dfact,dfact),FRandom[Eviscerator](-dfact,dfact),FRandom[Eviscerator](-dfact,dfact))).unit(); + HitNormal = (HitNormal+SWWMUtility.Vec3FromAngles(FRandom[Eviscerator](0,360),FRandom[Eviscerator](-90,90))*dfact).unit(); if ( (HitNormal dot RealHitNormal) < 0 ) HitNormal *= -.5; vel = FRandom[Eviscerator](.8,.95)*((vel dot HitNormal)*HitNormal*(FRandom[Eviscerator](-1.8,-1.))+vel); bHITOWNER = true; lasthit = null; if ( (vel.length() > 20) && !Random[Eviscerator](0,2) ) { - let l = Spawn("ChunkImpact",pos); + let l = Spawn('ChunkImpact',pos); l.angle = atan2(RealHitNormal.y,RealHitNormal.x); l.pitch = asin(-RealHitNormal.z); A_StartSound("eviscerator/hith",CHAN_WEAPON,CHANF_OVERLAP,.5); @@ -299,7 +248,6 @@ Class EvisceratorChunk : Actor pitchvel = FRandom[Eviscerator](50,100)*RandomPick[Eviscerator](-1,1)*(vel.length()/speed); rollvel = FRandom[Eviscerator](50,100)*RandomPick[Eviscerator](-1,1)*(vel.length()/speed); A_StartSound("eviscerator/hit",CHAN_WEAPON,CHANF_OVERLAP,.3); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:300); if ( vel.length() < 3 ) { A_Stop(); @@ -311,30 +259,30 @@ Class EvisceratorChunk : Actor override bool CanCollideWith( Actor other, bool passive ) { // safer to do here - if ( !(other.bSHOOTABLE && other.bSOLID) || ((vel.length() <= 5) && other.bSHOOTABLE) || ((other == target) && !bHITOWNER) || (other == lasthit) ) + if ( !(other.bSHOOTABLE || other.bSOLID) || ((vel.length() <= 5) && other.bSHOOTABLE) || ((other == target) && !bHITOWNER) || (other == lasthit) ) return false; return true; } override int SpecialMissileHit( Actor victim ) { - // directly bounce off shootable solids + // directly bounce off non-shootable solids if ( !victim.bSHOOTABLE ) { - if ( bSOLID ) + if ( victim.bSOLID ) { BlockingMobj = victim; A_HandleBounce(); lasthit = victim; } - return 1; + return MHIT_PASS; } // with this we can guarantee that the chunk won't just keep on dealing damage // this is something I wish Unreal's boulders did lasthit = victim; // don't knock back if already dead int oldamt = SWWMDamageAccumulator.GetAmount(victim); - if ( victim.health-oldamt > 0 ) SWWMUtility.DoKnockback(victim,vel.unit(),12000); + if ( victim.health-oldamt > 0 ) SWWMUtility.DoKnockback(victim,vel.unit(),15000); // gather damage int dmg = GetMissileDamage(0,0); SWWMDamageAccumulator.Accumulate(victim,dmg,self,target,damagetype); @@ -352,15 +300,15 @@ Class EvisceratorChunk : Actor } else { - let l = Spawn("ChunkImpact",pos); + let l = Spawn('ChunkImpact',pos); l.angle = angle+180; l.pitch = -pitch; A_StartSound("eviscerator/hith",CHAN_WEAPON,CHANF_OVERLAP,.1); } - vel *= .75; // reduce velocity as it rips + vel *= FRandom[Eviscerator](.8,.9); // reduce velocity as it rips A_Gravity(); gravity = clamp(.35-vel.length()/200.,.15,.35); - return 1; + return MHIT_PASS; } // HACK if ( !victim.bNOBLOOD && !victim.bDORMANT && !victim.bINVULNERABLE ) @@ -375,8 +323,7 @@ Class EvisceratorChunk : Actor A_HandleBounce(); lasthit = victim; } - if ( swwm_extraalert || !Random[Eviscerator](0,3) ) A_AlertMonsters(swwm_uncapalert?0:900); - return 1; + return MHIT_PASS; } States { @@ -387,34 +334,22 @@ Class EvisceratorChunk : Actor XZW1 # 0 A_HandleBounce(); Goto Spawn; Death: - XZW2 # 0 + XZW1 # 0 { - pitch = 0; - roll = 0; bMOVEWITHSECTOR = true; A_SetTics(Random[Eviscerator](30,50)); } - XZW2 # 1 A_FadeOut(); + XZW1 # 1 A_FadeOut(); Wait; XDeath: - TNT1 A 35 { invoker.justdied = true; } + TNT1 A 35 { justdied = true; } Stop; } } -Class EvisceratorProjSmoke : Actor +Class EvisceratorProjSmoke : SWWMNonInteractiveActor { double lifetime, lifespeed; - Default - { - Radius 0.1; - Height 0; - +NOBLOCKMAP; - +NOGRAVITY; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - } override void PostBeginPlay() { lifetime = 0; @@ -422,10 +357,15 @@ Class EvisceratorProjSmoke : Actor } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; lifetime += lifespeed; - let s = Spawn("SWWMSmoke",pos); - s.vel = (FRandom[Eviscerator](-0.5,0.5),FRandom[Eviscerator](-0.5,0.5),FRandom[Eviscerator](-0.5,0.5)); + let s = Spawn('SWWMSmoke',pos); + s.vel = SWWMUtility.Vec3FromAngles(FRandom[Eviscerator](0,360),FRandom[Eviscerator](-90,90))*.5; s.vel.z += 2.; s.alpha = scale.x; s.SetShade(Color(1,1,1)*Random[Eviscerator](160,255)); @@ -445,12 +385,15 @@ Class EvisceratorProjLight : PaletteLight Class EvisceratorProj : Actor { + Mixin SWWMMissileFix; + double heat; Vector3 startpos; Default { Obituary "$O_EVISCERATOR"; - DamageType 'Exploded'; + SelfObituary "$SO_EVISCERATORALT"; + DamageType 'Explosive'; Radius 2; Height 4; Gravity 0.35; @@ -461,6 +404,7 @@ Class EvisceratorProj : Actor +HITTRACER; +FORCERADIUSDMG; +NODAMAGETHRUST; + +SKYEXPLODE; } override void PostBeginPlay() { @@ -469,28 +413,27 @@ Class EvisceratorProj : Actor if ( waterlevel <= 0 ) vel.z += 3; heat = 1.5; } - action void A_EvisExplode() + void A_EvisExplode() { if ( target && tracer && (tracer.bIsMonster||tracer.player) && tracer.IsHostile(target) ) { - double dist = level.Vec3Diff(pos,invoker.startpos).length(); + double dist = level.Vec3Diff(pos,startpos).length(); SWWMUtility.AchievementProgress("lead",int(dist),target.player); } bForceXYBillboard = true; A_SetRenderStyle(1.0,STYLE_Add); A_SprayDecal("BigRocketBlast",50); A_NoGravity(); - A_SetScale(3.); - SWWMUtility.DoExplosion(self,100,120000,150,80); - A_QuakeEx(6,6,6,20,0,1200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.7); - A_StartSound("eviscerator/shell",CHAN_WEAPON,attenuation:.5); - A_StartSound("eviscerator/shell",CHAN_VOICE,attenuation:.3); - A_AlertMonsters(swwm_uncapalert?0:3000); - if ( !Tracer ) Spawn("EvisceratorProjSmoke",pos); - Spawn("EvisceratorProjLight",pos); - Vector3 x, y, z; + A_SetScale(2.5); + SWWMUtility.DoExplosion(self,80,120000,100,50); + A_QuakeEx(6.,6.,6.,20,0,900,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollIntensity:.7); + A_StartSound("eviscerator/shell",CHAN_WEAPON,attenuation:.8); + A_StartSound("eviscerator/shell",CHAN_VOICE,attenuation:.5); + A_AlertMonsters(swwm_uncapalert?0:3000,AMF_EMITFROMTARGET); + if ( !Tracer ) Spawn('EvisceratorProjSmoke',pos); + Spawn('EvisceratorProjLight',pos); double a, s; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); EvisceratorChunk p; Vector3 spawnofs; if ( BlockingMobj ) spawnofs = (0,0,0); @@ -499,7 +442,7 @@ Class EvisceratorProj : Actor else if ( BlockingLine ) { spawnofs = (-BlockingLine.delta.y,BlockingLine.delta.x,0).unit()*4; - if ( !SWWMUtility.PointOnLineSide(pos.xy,BlockingLine) ) + if ( !Level.PointOnLineSide(pos.xy,BlockingLine) ) spawnofs *= -1; } int trail = 0; @@ -507,14 +450,14 @@ Class EvisceratorProj : Actor if ( trail == 8 ) trail = Random[Eviscerator](0,7); for ( int i=0; i<30; i++ ) { - p = EvisceratorChunk(Spawn("EvisceratorChunk",level.Vec3Offset(pos,spawnofs))); + p = EvisceratorChunk(Spawn('EvisceratorChunk',level.Vec3Offset(pos,spawnofs))); p.bHITOWNER = true; a = FRandom[Eviscerator](0,360); s = FRandom[Eviscerator](0,.4); - Vector3 dir = (x+y*cos(a)*s+z*sin(a)*s).unit(); + Vector3 dir = SWWMUtility.ConeSpread(x,y,z,a,s); p.angle = atan2(dir.y,dir.x); p.pitch = -asin(dir.z); - p.vel = (cos(p.angle)*cos(p.pitch),sin(p.angle)*cos(p.pitch),-sin(p.pitch))*(p.speed+FRandom[Eviscerator](-5,20)); + p.vel = SWWMUtility.Vec3FromAngles(p.angle,p.pitch)*(p.speed+FRandom[Eviscerator](-5,20)); p.target = target; if ( trail < 8 ) p.trailcolor = max(0,trail); else if ( trail == 9 ) p.trailcolor = (i%6)+2; @@ -535,12 +478,29 @@ Class EvisceratorProj : Actor break; } } + else if ( trail == 11 ) p.trailcolor = (i&1)?7:4; + else if ( trail == 12 ) p.trailcolor = (i&1)?6:2; + else if ( trail == 13 ) + { + switch ( i%3 ) + { + case 0: + p.trailcolor = 2; + break; + case 1: + p.trailcolor = 1; + break; + case 2: + p.trailcolor = 4; + break; + } + } } int numpt = Random[Eviscerator](10,15); for ( int i=0; i 8 ) return; @@ -577,24 +537,9 @@ Class EvisceratorProj : Actor pt = FRandom[Eviscerator](-90,90); FLineTraceData d; Vector3 HitNormal; - LineTrace(ang,FRandom[Eviscerator](10,30)+10*special1,pt,TRF_THRUACTORS,data:d); - hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } - let p = Spawn("EvisceratorSubExpl",d.HitLocation+hitnormal*4); + LineTrace(ang,FRandom[Eviscerator](6,20)+8*special1,pt,TRF_THRUACTORS,data:d); + hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + let p = Spawn('EvisceratorSubExpl',d.HitLocation+hitnormal*4); p.angle = atan2(hitnormal.y,hitnormal.x); p.pitch = asin(-hitnormal.z); p.target = target; @@ -607,10 +552,10 @@ Class EvisceratorProj : Actor Spawn: XZW1 A 1 { - invoker.heat -= 0.004+0.0004*vel.length(); - if ( invoker.heat > 0 ) + heat -= 0.004+0.0004*vel.length(); + if ( heat > 0 ) { - let s = Spawn("SWWMHalfSmoke",pos); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); s.alpha *= heat; } } @@ -622,31 +567,14 @@ Class EvisceratorProj : Actor } } -Class EvisceratorSubExpl : Actor +Class EvisceratorSubExpl : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Scale 2.; + RenderStyle 'Add'; + Scale 1.8; Alpha .6; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { @@ -656,35 +584,18 @@ Class EvisceratorSubExpl : Actor } } -Class EvisceratorRing : Actor +Class EvisceratorRing : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Scale 4.; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; + RenderStyle 'Add'; + Scale 2.; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { Spawn: - XRG0 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.01); + XRG0 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.04); Stop; } } @@ -703,6 +614,7 @@ Class EvisceratorCasing : SWWMCasing Death: XZW1 BC -1 { + bINTERPOLATEANGLES = false; pitch = roll = 0; angle = FRandom[Junk](0,360); frame = RandomPick[Junk](1,2); diff --git a/zscript/weapons/swwm_deathlydeathcannon.zsc b/zscript/weapons/swwm_deathlydeathcannon.zsc index eb6945c3b..730f4d69e 100644 --- a/zscript/weapons/swwm_deathlydeathcannon.zsc +++ b/zscript/weapons/swwm_deathlydeathcannon.zsc @@ -3,8 +3,7 @@ Class Ynykron : SWWMWeapon { - transient ui TextureID WeaponBox, ChargeBar[2], BoxSide[2]; - transient ui DynamicValueInterpolator ChargeInter; + transient ui SmoothDynamicValueInterpolator ChargeInter; enum EChargeState { @@ -18,7 +17,6 @@ Class Ynykron : SWWMWeapon int chargestate; double chargelevel; bool inverted, invertreload; - ui int lastmode; double ventalpha, ventfade; int ventcooldown; @@ -27,36 +25,11 @@ Class Ynykron : SWWMWeapon Property ClipCount : clipcount; - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/YnykronDisplay.png",TexMan.Type_Any); - if ( !ChargeBar[0] ) ChargeBar[0] = TexMan.CheckForTexture("graphics/HUD/YnykronBarA.png",TexMan.Type_Any); - if ( !ChargeBar[1] ) ChargeBar[1] = TexMan.CheckForTexture("graphics/HUD/YnykronBarB.png",TexMan.Type_Any); - if ( !BoxSide[0] ) BoxSide[0] = TexMan.CheckForTexture("graphics/HUD/YnykronSideA.png",TexMan.Type_Any); - if ( !BoxSide[1] ) BoxSide[1] = TexMan.CheckForTexture("graphics/HUD/YnykronSideB.png",TexMan.Type_Any); - Screen.DrawTexture(WeaponBox,false,bx-33,by-44,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int chg = clamp(ChargeInter?ChargeInter.GetValue():int(chargelevel*10),0,400); - int ct = int(((by-2)-chg/10.)*hs); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-30,by-15,String.Format("%d",Ammo1.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawTexture(BoxSide[inverted],false,bx-23,by-31,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,clipcount?Color(0,0,0,0):Color(128,0,0,0)); - Screen.DrawTexture(ChargeBar[inverted],false,bx-6,by-42,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(chargestate==CS_READY)?Color(int(clamp(sin((level.maptime+TicFrac)*8)*40+24,0.,64.)),255,255,255):Color(0,0,0,0),DTA_ClipTop,ct); - } override void HudTick() { Super.HudTick(); - if ( !ChargeInter ) ChargeInter = DynamicValueInterpolator.Create(int(chargelevel*10),.5,1,400); - ChargeInter.Update(int(chargelevel*10)); - if ( lastmode && (lastmode != inverted+1) && (Owner.player == players[consoleplayer]) ) - { - let bar = SWWMStatusBar(statusbar); - if ( bar ) - { - bar.ntagstr = StringTable.Localize(inverted?"$SWWM_YNYKRONBACKWARD":"$SWWM_YNYKRONFORWARD"); - bar.ntagtic = level.totaltime; - bar.ntagcol = nametagcolor; - } - } - lastmode = inverted+1; + if ( !ChargeInter ) ChargeInter = SmoothDynamicValueInterpolator.Create(chargelevel*10,.5); + ChargeInter.Update(chargelevel*10); } override bool ReportHUDAmmo() @@ -68,7 +41,11 @@ Class Ynykron : SWWMWeapon { if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; if ( (fireMode == PrimaryFire) || (fireMode == AltFire) ) - return ((clipcount > 0) || (Ammo1.Amount > 0)); + { + if ( (clipcount > 0) || (Ammo1.Amount > 0) ) return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); + return false; + } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } @@ -82,7 +59,7 @@ Class Ynykron : SWWMWeapon } } - override Vector3 GetTraceOffset() + override Vector3 GetTraceOffset( int index ) { return (15.,4.,-1.); } @@ -92,50 +69,42 @@ Class Ynykron : SWWMWeapon A_SWWMFlash(); A_StopSound(CHAN_WEAPONEXTRA2); A_StartSound(invoker.inverted?"ynykron/altfire":"ynykron/fire",CHAN_WEAPON,CHANF_OVERLAP,1.,.2); - if ( !swwm_ynykronalert ) + // global alert + foreach ( s:level.Sectors ) { - // global alert - int ns = level.Sectors.Size(); - for ( int i=0; i 10.) && !(level.maptime&3) ) + { + double str = (chargelevel-10.)/50.; + Owner.A_QuakeEx(str,str,str,4,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:str/5.); + } let pspm = Owner.player.FindPSprite(PSP_WEAPON); if ( pspm ) { @@ -227,30 +201,24 @@ Class Ynykron : SWWMWeapon Default { - //$Title Ynykron - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_Ynykron.png - //$Icon weapon Tag "$T_YNYKRON"; + Inventory.Icon "graphics/HUD/Icons/W_Ynykron.png"; Inventory.PickupMessage "$T_YNYKRON"; Inventory.PickupSound "misc/w_pkup_vip"; Obituary "$O_YNYKRON"; SWWMWeapon.Tooltip "$TT_YNYKRON"; SWWMWeapon.GetLine "getynykron"; - Inventory.Icon "graphics/HUD/Icons/W_Ynykron.png"; Weapon.SlotNumber 0; Weapon.SelectionOrder 9000; Weapon.UpSound "ynykron/select"; Stamina -5000000; - Weapon.AmmoType1 "YnykronAmmo"; + Weapon.AmmoType1 'YnykronAmmo'; Weapon.AmmoGive1 1; - SWWMWeapon.DropAmmoType "YnykronAmmo"; + SWWMWeapon.DropAmmoType 'SWWMCellAmmoBig'; +SWWMWEAPON.NOFIRSTGIVE; Ynykron.ClipCount 1; +WEAPON.BFG; +WEAPON.EXPLOSIVE; - Radius 32; - Height 36; } States { @@ -266,14 +234,16 @@ Class Ynykron : SWWMWeapon A_StartSound("ynykron/ready",CHAN_WEAPONEXTRA2,CHANF_LOOP,(.025*invoker.chargelevel)**3.,2.); A_FullRaise(); } - XZW2 MNOPQRSTUVWXYZ 2; + XZW2 MNOP 2 A_BumpView(-.2,tics:2); + XZW2 QRSTUV 2 A_BumpView(-.6,tics:2); + XZW2 WXYZ 2 A_BumpView(.5,tics:2); XZW3 A 2; Goto Ready; Ready: XZW2 A 1 { if ( invoker.chargestate == CS_DISCHARGING ) - return ResolveState("Discharge"); + return ResolveState('Discharge'); int flg = WRF_ALLOWZOOM|WRF_ALLOWUSER1; if ( (invoker.chargestate > CS_IDLE) || ((invoker.clipcount <= 0) && ((invoker.Ammo1.Amount > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true))) ) flg |= WRF_ALLOWRELOAD; @@ -286,7 +256,7 @@ Class Ynykron : SWWMWeapon { invoker.ventcooldown--; if ( invoker.ventcooldown <= 0 ) - return ResolveState("ReadyVent"); + return ResolveState('ReadyVent'); } if ( player.cmd.buttons&BT_ATTACK ) invoker.CheckAmmo(EitherFire,true); @@ -297,20 +267,28 @@ Class Ynykron : SWWMWeapon XZW2 A 1 { invoker.ventcooldown = Random[Ynykron](10,15)*5+2*(40-int(invoker.chargelevel)); - A_Overlay(PSP_WEAPON+1,"ReadyVentSmoke"); + A_Overlay(PSP_WEAPON+1,'ReadyVentSmoke'); A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true); A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add); A_OverlayAlpha(PSP_WEAPON+1,0.); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); A_StartSound("ynykron/ventopen",CHAN_WEAPON,CHANF_OVERLAP); + A_BumpFOV(.995); + A_QuakeEx(1.2,1.2,1.2,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + A_CanBob(); } - XZWA ABCDEF 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZWA ABCDEF 2 A_CanBob(); XZWA G 2 { - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); A_StartSound("ynykron/ventclose",CHAN_WEAPON,CHANF_OVERLAP); + A_CanBob(); + } + XZWA H 2 A_CanBob(); + XZWA I 2 + { + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_CanBob(); } - XZWA HI 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); Goto Ready; ReadyVentSmoke: XZWB D 1 @@ -329,9 +307,9 @@ Class Ynykron : SWWMWeapon XZW2 A 1 { if ( (invoker.clipcount <= 0) && ((invoker.Ammo1.Amount > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true)) ) - return ResolveState("Reload"); + return ResolveState('Reload'); if ( invoker.chargestate == CS_IDLE ) - return ResolveState("Charge"); + return ResolveState('Charge'); A_YnykronFire(); A_StartSound("ynykron/ventopen",CHAN_WEAPON,CHANF_OVERLAP); return ResolveState(null); @@ -357,10 +335,10 @@ Class Ynykron : SWWMWeapon if ( (invoker.clipcount <= 0) && ((invoker.Ammo1.Amount > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true)) ) { invoker.invertreload = true; - return ResolveState("Reload"); + return ResolveState('Reload'); } A_StartSound("ynykron/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.inverted,"TakeInverted"); + return A_JumpIf(invoker.inverted,'TakeInverted'); } TakeNormal: XZW2 A 2; @@ -370,13 +348,23 @@ Class Ynykron : SWWMWeapon A_StartSound("ynykron/magout",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerReload(); } - XZW3 WXYZ 2; + XZW3 WXYZ 2 A_BumpView(.5,tics:2); XZW4 A 2; - XZW4 B 2 A_StopSound(CHAN_WEAPONEXTRA); - XZW4 CDEFGHIJKLMNO 2; + XZW4 B 2 + { + A_BumpView(-2.); + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_StopSound(CHAN_WEAPONEXTRA); + } + XZW4 CDEF 2; + XZW4 GHIJ 2 A_BumpView(.5,tics:2); + XZW4 K 2 A_BumpView(2.); + XZW4 LMNO 2; XZW4 P 0 { invoker.inverted = true; + EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_YNYKRONBACKWARD"); } Goto PutInverted; TakeInverted: @@ -387,30 +375,58 @@ Class Ynykron : SWWMWeapon A_StartSound("ynykron/magout",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerReload(); } - XZW5 UVWXY 2; - XZW5 Z 2 A_StopSound(CHAN_WEAPONEXTRA); - XZW6 ABCDEFGHIJKLM 2; + XZW5 UVWX 2 A_BumpView(.5,tics:2); + XZW5 Y 2; + XZW5 Z 2 + { + A_BumpView(-2.); + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_StopSound(CHAN_WEAPONEXTRA); + } + XZW6 ABCD 2; + XZW6 EFGH 2 A_BumpView(.5,tics:2); + XZW6 I 2 A_BumpView(2.); + XZW6 JKLM 2; XZW6 N 0 { invoker.inverted = false; + EventHandler.SendInterfaceEvent(PlayerNumber(),"swwmnametag.$SWWM_YNYKRONFORWARD"); } Goto PutNormal; PutNormal: XZW4 PQRS 2; XZW4 T 2 A_StartSound("ynykron/magin",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 UVWXYZ 2; + XZW4 UVWX 2 A_BumpView(.5,tics:2); + XZW4 YZ 2 A_BumpView(.5,tics:2); XZW5 A 2 A_StartSound("ynykron/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 B 2 A_StartSound("ynykron/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.3,4.); - XZW5 CDEFGHIJK 2; + XZW5 B 2 + { + A_BumpView(4.); + A_BumpFOV(.98); + A_QuakeEx(2.,2.,2.,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_StartSound("ynykron/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.3,4.); + } + XZW5 C 2; + XZW5 DEFG 2 A_BumpView(-1,tics:2); + XZW5 HIJK 2; XZW5 L 4; Goto Ready; PutInverted: XZW6 NOPQ 2; XZW6 R 2 A_StartSound("ynykron/magin",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 STUVWX 2; + XZW6 STUVWX 2 A_BumpView(.5,tics:2); XZW6 Y 2 A_StartSound("ynykron/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 Z 2 A_StartSound("ynykron/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.3,4.); - XZW7 ABCDEFGHI 2; + XZW6 Z 2 + { + A_BumpView(4.); + A_BumpFOV(.98); + A_QuakeEx(2.,2.,2.,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.5); + A_StartSound("ynykron/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.3,4.); + } + XZW7 A 2; + XZW7 BCDE 2 A_BumpView(-1,tics:2); + XZW7 FGHI 2; XZW7 J 4; XZW5 P 0; Goto Ready; @@ -421,28 +437,41 @@ Class Ynykron : SWWMWeapon XZW7 Q 2 { invoker.chargestate = CS_DISCHARGING; - A_Overlay(PSP_WEAPON+1,"DischargeSmoke"); + A_Overlay(PSP_WEAPON+1,'DischargeSmoke'); A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true); A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add); A_OverlayAlpha(PSP_WEAPON+1,0.); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + A_CanBob(); A_StartSound("ynykron/ventopen",CHAN_WEAPON,CHANF_OVERLAP); } - XZW7 RSTUV 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZW7 R 2 A_CanBob(); + XZW7 S 2 + { + A_BumpFOV(.995); + A_QuakeEx(1.2,1.2,1.2,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + A_CanBob(); + } + XZW7 TUV 2 A_CanBob(); Discharging: XZW7 W 2 { - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + A_CanBob(); return A_JumpIf(invoker.chargestate==CS_IDLE,1); } Wait; - XZW7 W 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZW7 W 3 A_CanBob(); XZW7 X 2 { - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + A_CanBob(); A_StartSound("ynykron/ventclose",CHAN_WEAPON,CHANF_OVERLAP); } - XZW7 YZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); + XZW7 Y 2 A_CanBob(); + XZW7 Z 2 + { + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_CanBob(); + } Goto Ready; DischargeSmoke: XZWA T 2 @@ -469,7 +498,9 @@ Class Ynykron : SWWMWeapon XZW2 A 2; XZW3 BC 2; XZW3 D 2 A_StartSound("ynykron/latch",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 EFGHI 2; + XZW3 EF 2; + XZW3 G 2 A_QuakeEx(1.,1.,1.,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); + XZW3 HI 2; XZW2 A 0 { invoker.chargestate = CS_CHARGING; @@ -480,15 +511,21 @@ Class Ynykron : SWWMWeapon Reload: XZW2 A 2 { - if ( invoker.chargestate>CS_IDLE ) return ResolveState("Discharge"); - if ( invoker.inverted ) return ResolveState("UnloadInverted"); + if ( invoker.chargestate>CS_IDLE ) return ResolveState('Discharge'); + if ( invoker.inverted ) return ResolveState('UnloadInverted'); A_StartSound("ynykron/meleestart",CHAN_WEAPON,CHANF_OVERLAP); return ResolveState(null); } UnloadNormal: XZW2 A 2; XZW3 STU 2; - XZW3 V 2 A_StartSound("ynykron/magout",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 V 2 + { + A_BumpView(-2.); + A_BumpFOV(.99); + A_QuakeEx(1.4,1.4,1.4,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_StartSound("ynykron/magout",CHAN_WEAPON,CHANF_OVERLAP); + } XZW3 WXYZ 2; XZW4 A 2; XZW4 B 2 A_StopSound(CHAN_WEAPONEXTRA); @@ -504,7 +541,7 @@ Class Ynykron : SWWMWeapon { invoker.invertreload = false; invoker.inverted = true; - return ResolveState("PutInverted"); + return ResolveState('PutInverted'); } return ResolveState(null); } @@ -527,7 +564,7 @@ Class Ynykron : SWWMWeapon { invoker.invertreload = false; invoker.inverted = true; - return ResolveState("PutInverted"); + return ResolveState('PutInverted'); } return ResolveState(null); } @@ -539,7 +576,11 @@ Class Ynykron : SWWMWeapon A_StartSound("ynykron/checkout",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); } - XZW8 ABCDEFGHIJKLMNOPQRSTUVW 2; + XZW8 ABCDE 2 A_BumpView(.3,tics:2); + XZW8 FGHIJKL 2 A_BumpView(-.8,tics:2); + XZW8 MNOPQR 2 A_BumpView(-.4,tics:2); + XZW8 STU 2 A_BumpView(.5,tics:2); + XZW8 VW 2; XZW8 X 4; // smoothen more Goto Ready; User1: @@ -550,19 +591,26 @@ Class Ynykron : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW8 YZ 2; - XZW9 AB 2; - XZW9 C 1 A_Parry(9); - XZW9 DE 1; - XZW9 F 1 A_Melee(100,"demolitionist/whitl",1.5,1.6,1.7); - XZW9 GHIJK 1; - XZW9 LMNO 2; + XZW8 YZ 2 A_BumpAngle(-1.,2); + XZW9 AB 2 A_BumpAngle(-.5,2); + XZW9 C 1 + { + A_BumpFOV(.93); + A_QuakeEx(2.,2.,2.,10,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.8); + A_Parry(9); + } + XZW9 DE 1 A_BumpAngle(10.); + XZW9 F 1 A_Melee(100,"demolitionist/whitl",1.5,1.6,1.7,MELEE_Wider); + XZW9 GHIJK 1 A_BumpAngle(2.); + XZW9 LMNO 2 A_BumpAngle(.5,2); XZW9 P 2 A_StartSound("ynykron/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW9 QRSTUVWXYZ 2; Goto Ready; Deselect: XZW2 A 2 A_StartSound("ynykron/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 BCDEFGHIJK 2; + XZW2 BCDE 2 A_BumpView(.1,tics:2); + XZW2 FGH 2 A_BumpView(.2,tics:2); + XZW2 IJK 2 A_BumpView(.3,tics:2); XZW2 L -1 { A_StopSound(CHAN_WEAPONEXTRA); @@ -573,7 +621,7 @@ Class Ynykron : SWWMWeapon Flash: XZWZ A 2 Bright { - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.args[0] = 255; l.args[1] = 255; l.args[2] = 255; diff --git a/zscript/weapons/swwm_deathlydeathcannon_altfx.zsc b/zscript/weapons/swwm_deathlydeathcannon_altfx.zsc new file mode 100644 index 000000000..1d4ec3ccb --- /dev/null +++ b/zscript/weapons/swwm_deathlydeathcannon_altfx.zsc @@ -0,0 +1,1534 @@ +// Ynykron projectiles and effects (alt-fire) + +Class YnykronAltTracer : LineTracer +{ + Array ShootThroughList; + Array WaterHitList; + + override ETraceStatus TraceCallback() + { + // liquid splashes + if ( Results.CrossedWater ) + { + let hl = new('WaterHit'); + hl.hitpos = Results.CrossedWaterPos; + WaterHitList.Push(hl); + } + else if ( Results.Crossed3DWater ) + { + let hl = new('WaterHit'); + hl.hitpos = Results.Crossed3DWaterPos; + WaterHitList.Push(hl); + } + if ( Results.HitType == TRACE_HitActor ) + { + if ( Results.HitActor.bSHOOTABLE || (Results.HitActor is 'YnykronSingularityHitbox') ) return TRACE_Stop; + return TRACE_Skip; + } + else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) + { + if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&Line.ML_BlockHitscan) ) + return TRACE_Stop; + ShootThroughList.Push(Results.HitLine); + return TRACE_Skip; + } + return TRACE_Stop; + } +} + +Class YnykronHaloTail : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + +FORCEXYBILLBOARD; + Scale 1.5; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_SetScale(scale.x+.5); + A_FadeOut(.2); + } + States + { + Spawn: + MHAL A -1 Bright; + Stop; + } +} + +Class YnykronHalo : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + +FORCEXYBILLBOARD; + Scale 1.5; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + if ( !target || target.InStateSequence(target.CurState,target.FindState('Death')) ) + { + Destroy(); + return; + } + SetOrigin(target.pos,true); + A_SetScale(1.5*target.scale.x); + let h = Spawn('YnykronHaloTail',pos); + h.scale = scale; + } + States + { + Spawn: + MHAL A -1 Bright; + Stop; + } +} + +Class GatherDust : SWWMNonInteractiveActor +{ + Mixin SWWMMinimalMovingTick; + + override void PostBeginPlay() + { + SetState(FindState('Spawn')+Random[ExploS](0,19)); + Scale *= FRandom[ExploS](.75,1.5); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + SetShade(Color(4,3,5)*Random[ExploS](5,20)); + } + + void A_Gravitate() + { + if ( target && !target.InStateSequence(target.CurState,target.FindState('Death')) ) + { + if ( alpha < .08 ) A_FadeIn(FRandom[ExploS](.0002,.004)); + Vector3 dirto = level.Vec3Diff(pos,target.pos); + double distto = dirto.length(); + if ( distto < (32.*target.scale.x) ) + { + // sucked in + target.specialf2 += FRandom[ExploS](.5,2.); + Destroy(); + return; + } + dirto /= distto; + double mxdist = 5000.*target.scale.x; + vel = dirto*25.*(clamp((mxdist-distto)/mxdist,.5,1.)**4.); + vel += target.vel; + return; + } + vel *= .98; + A_FadeOut(.002); + } + + Default + { + RenderStyle 'Shaded'; + Alpha 0.; + Scale 3.; + +FORCEXYBILLBOARD; + } + States + { + Spawn: + BSMK ABCDEFGHIJKLMNOPQRST 1 A_Gravitate(); + Wait; + } +} + +Class YnykronVoidBeamTail : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + +FORCEXYBILLBOARD; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_FadeOut(); + } + States + { + Spawn: + XZW1 # -1 Bright; + Stop; + } +} + +Class YnykronVoidBeam : SWWMNonInteractiveActor +{ + Actor basebeam, prevbeam, nextbeam; + YnykronTracer t; + double baseang, basept; + int angledir, pitchdir; + int maxlen, curlen, segnum; + int spreadtimer; + int maxlife, lifetimer; + + Default + { + DamageType 'YnykronAlt'; + Obituary "$O_YNYKRONALT"; + SelfObituary "$SO_YNYKRONALT"; + RenderStyle 'Add'; + Alpha 0.; + Stamina 3; + +INTERPOLATEANGLES; + +NODAMAGETHRUST; + +FOILINVUL; + } + + override void PostBeginPlay() + { + angle = baseang = FRandom[Ynykron](0,360); + pitch = basept = FRandom[Ynykron](-90,90); + angledir = RandomPick[Ynykron](-1,1); + pitchdir = RandomPick[Ynykron](-1,1); + maxlen = Random[Ynykron](40,60); + maxlife = Random[Ynykron](20,30); + Scale *= FRandom[Ynykron](.75,1.5); + lifetimer = -1; + } + + void A_UpdateBeam() + { + if ( !master ) + { + Destroy(); + return; + } + if ( basebeam == self ) + { + baseang += FRandom[Ynykron](0.,5.)*angledir; + basept += FRandom[Ynykron](0.,5.)*pitchdir; + Vector3 ofs = master.scale.x*32.*SWWMUtility.Vec3FromAngles(baseang,basept); + SetOrigin(level.Vec3Offset(master.pos,ofs),true); + double da = deltaangle(angle,baseang+FRandom[Ynykron](-5,5)), + dp = deltaangle(pitch,basept+FRandom[Ynykron](-5,5)); + angle += da*.2; + pitch += dp*.2; + if ( lifetimer == -1 ) + { + A_FadeIn(FRandom[Ynykron](.003,.05)); + if ( Alpha >= .2 ) + { + Alpha = .2; + lifetimer = 0; + } + } + else if ( lifetimer == -2 ) A_FadeOut(FRandom[Ynykron](.003,.05)); + else + { + lifetimer++; + if ( lifetimer > maxlife ) lifetimer = -2; + } + // check total length + int cnt = 0; + for ( YnykronVoidBeam b=self; b; b=YnykronVoidBeam(b.nextbeam) ) cnt++; + curlen = cnt; + } + else if ( !prevbeam ) + { + Destroy(); + return; + } + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + if ( !t ) t = new('YnykronTracer'); + t.ShootThroughList.Clear(); + t.WaterHitList.Clear(); + t.HitList.Clear(); + t.Trace(pos,cursector,x,16*scale.x,0); + foreach ( l:t.ShootThroughList ) + { + l.Activate(target,0,SPAC_PCross); + l.Activate(target,0,SPAC_Impact); + } + foreach ( hit:t.hitlist ) + { + // yoink + SWWMUtility.DoKnockback(hit.HitActor,-hit.x,80000*scale.x*alpha); + } + spreadtimer++; + if ( (t.Results.HitType != TRACE_HitNone) || (segnum > maxlen) || (spreadtimer < stamina) ) + { + // trigger walls + if ( t.Results.HitType == TRACE_HitWall ) + t.Results.HitLine.RemoteActivate(target,t.Results.Side,SPAC_Impact,t.Results.HitPos); + // end of the line + if ( nextbeam ) nextbeam.Destroy(); + if ( basebeam == self ) frame = 3; + else frame = 2; + } + else + { + if ( basebeam == self ) frame = 0; + else frame = 1; + // spawn (or relocate) next beam + if ( !nextbeam ) + { + nextbeam = Spawn('YnykronVoidBeam',level.Vec3Offset(pos,x*16*scale.x)); + nextbeam.angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x); + nextbeam.pitch = asin(-t.Results.HitVector.z); + } + else nextbeam.SetOrigin(level.Vec3Offset(pos,x*16*scale.x),true); + nextbeam.target = target; + nextbeam.master = master; + YnykronVoidBeam(nextbeam).basebeam = basebeam; + YnykronVoidBeam(nextbeam).prevbeam = self; + YnykronVoidBeam(nextbeam).maxlen = maxlen; + YnykronVoidBeam(nextbeam).segnum = segnum+1; + nextbeam.alpha = alpha*(1.-(segnum/double(maxlen))); + nextbeam.scale = scale; + nextbeam.frame = 1; + Vector3 newdir = t.Results.HitVector; + newdir = (newdir+.4*SWWMUtility.Vec3FromAngles(FRandom[Ynykron](0,360),FRandom[Ynykron](-90,90))).unit(); + double da = deltaangle(nextbeam.angle,atan2(newdir.y,newdir.x)), + dp = deltaangle(nextbeam.pitch,asin(-newdir.z)); + nextbeam.angle += da*.2; + nextbeam.pitch += dp*.2; + } + let h = Spawn('YnykronVoidBeamTail',pos); + h.angle = angle; + h.pitch = pitch; + h.alpha = alpha*2.; + h.scale = scale; + h.frame = frame; + } + + States + { + Spawn: + XZW1 # 1 Bright A_UpdateBeam(); + Wait; + } +} + +Class YnykronLightningImpact : SWWMNonInteractiveActor +{ + Default + { + Obituary "$O_YNYKRONALT"; + SelfObituary "$SO_YNYKRONALT"; + DamageType 'Electric'; + +FOILINVUL; + +FORCERADIUSDMG; + +NODAMAGETHRUST; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + SWWMUtility.DoExplosion(self,400,120000,100,40); + A_QuakeEx(3.,3.,3.,12,0,800,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollIntensity:.4); + A_SprayDecal("ShockMark",-172); + int numpt = Random[ExploS](8,16); + for ( int i=0; i 10 ) + { + dirto /= dist; + dir = (dir+.8*dirto*(clamp(1.-(dist/1500.),0.,1.)**1.5)).unit(); + } + nextdir = dir; + } + void A_Spread( Sound arcsnd ) + { + Vector3 tdir = level.Vec3Diff(pos,nextpos); + if ( (GetClass() == 'YnykronLightningArc') && !Random[Ynykron](0,3) ) + { + for ( int i=0; i<3; i++ ) + { + let r = Spawn('YnykronLightningArcSub',level.Vec3Offset(pos,tdir*FRandom[Ynykron](0,1))); + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); + double a = FRandom[Ynykron](0,360), s = FRandom[Sparkster](0.,1.); + Vector3 sdir = SWWMUtility.ConeSpread(x,y,z,a,s); + r.angle = atan2(sdir.y,sdir.x); + r.pitch = asin(-sdir.z); + r.target = target; + r.special1 = 1; + YnykronLightningArc(r).destpos = destpos; + r.ReactionTime += Random[Ynykron](-3,3); + } + } + if ( arcsnd != "" ) A_StartSound(arcsnd,CHAN_WEAPON); + if ( ((ReactionTime > 0) && (special1 > ReactionTime)) || bAMBUSH ) return; + let b = Spawn(GetClass(),nextpos); + b.angle = atan2(nextdir.y,nextdir.x); + b.pitch = asin(-nextdir.z); + b.target = target; + b.special1 = special1+1; + YnykronLightningArc(b).destpos = destpos; + b.SetState(b.FindState('Trailer')); + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + frame = Random[Ynykron](0,11); + } + Default + { + Obituary "$O_YNYKRONALT"; + SelfObituary "$SO_YNYKRONALT"; + RenderStyle 'Add'; + DamageFunction 1000; + Speed 128; + Alpha 2.; + +FOILINVUL; + } + States + { + Spawn: + XZW1 # 0 Bright; + XZW1 # 1 Bright A_Trace(); + XZW1 # 1 Bright A_Spread("ynykron/vortexarc"); + XZW1 # 1 Bright A_FadeOut(); + Wait; + Trailer: + XZW2 # 0 Bright; + XZW2 # 1 Bright A_Trace(); + XZW2 # 1 Bright A_Spread("ynykron/vortexarc"); + XZW2 # 1 Bright A_FadeOut(); + Wait; + } +} + +Class YnykronLightningArcSub : YnykronLightningArc +{ + Default + { + DamageFunction 250; + Speed 32; + ReactionTime 10; + } + States + { + Spawn: + XZW1 # 0 Bright; + XZW1 # 1 Bright A_Trace(); + XZW1 # 1 Bright A_Spread(""); + XZW1 # 1 Bright A_FadeOut(); + Wait; + Trailer: + XZW2 # 0 Bright; + XZW2 # 1 Bright A_Trace(); + XZW2 # 1 Bright A_Spread(""); + XZW2 # 1 Bright A_FadeOut(); + Wait; + } +} + +Class YnykronCloud : SWWMNonInteractiveActor +{ + Vector3 gx, gy, gz; + double phase; + Vector3 dirto; + double frightening; // lightning flash + Color basecol; + double rollvel; + + override void Tick() + { + prev = pos; + Super.Tick(); + } + + void FlashPlayer( int str, double rad ) + { + if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; + let mo = players[consoleplayer].Camera; + double dist = Distance3D(mo); + str = int(str*(1.-(dist/rad))); + SWWMHandler.DoFlash(mo,Color(str,255,255,255),1); + SWWMHandler.DoFlash(mo,Color(str/2,240,224,255),10); + } + + override void PostBeginPlay() + { + SetState(FindState('Spawn')+Random[ExploS](0,19)); + Scale *= FRandom[ExploS](.75,1.5); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + if ( master ) Scale *= master.scale.x; + // orbit axes + [gx, gy, gz] = SWWMUtility.GetAxes(FRandom[ExploS](0,360),FRandom[ExploS](-90,90),FRandom[ExploS](-90,90)); + specialf1 = FRandom[ExploS](200,400); + scale *= specialf1/200.; + specialf2 = FRandom[ExploS](3.,8.)*RandomPick[ExploS](-1,1); + special2 = Random[ExploS](10,40); + basecol = Color(4,3,5)*Random[ExploS](5,20); + SetShade(basecol); + rollvel = FRandom[ExploS](.5,3.)*RandomPick[ExploS](-1,1); + } + + void A_Gravitate() + { + if ( frightening > 0. ) + { + alpha = max(frightening,.3); + int str = int(RandomPick[ExploS](255,240,192,254,248,128,160,204)*frightening); + Color litecol = Color(min(255,basecol.r+str),min(255,basecol.g+str),min(255,basecol.b+str)); + SetShade(litecol); + frightening *= .96; + if ( frightening < .1 ) + { + frightening = 0.; + SetShade(basecol); + } + } + roll += rollvel; + if ( master && !master.InStateSequence(master.CurState,master.FindState('Death')) ) + { + if ( special1 == 0 ) + { + A_FadeIn(FRandom[ExploS](.001,.002)); + if ( alpha > .3 ) special1 = 1; + } + else if ( special1 > 0 ) + { + special1++; + if ( special1 >= special2 ) + special1 = -1; + } + else if ( special1 == -1 ) A_FadeOut(FRandom[ExploS](.003,.006)); + dirto = level.Vec3Diff(pos,master.pos); + double distto = dirto.length(); + dirto /= distto; + // orbit + Vector3 orbitdir = SWWMUtility.CircleOffset(gx,gy,phase,(specialf1+32)*master.scale.x); + SetOrigin(level.Vec3Offset(master.pos,orbitdir),true); + phase += FRandom[ExploS](.12,.24)*specialf2*(1.-specialf1/600.); + return; + } + SetOrigin(level.Vec3Offset(pos,-dirto*3.*abs(specialf2)),true); + specialf2 *= .98; + A_FadeOut(.005); + } + + Default + { + DamageType 'YnykronAlt'; + Obituary "$O_YNYKRONALT"; + RenderStyle 'Shaded'; + Alpha 0.; + Scale 3.; + +FORCEXYBILLBOARD; + +ROLLSPRITE; + } + States + { + Spawn: + BSMK ABCDEFGHIJKLMNOPQRST 1 A_Gravitate(); + Wait; + } +} + +Class YnykronLightningLight : PaletteLight +{ + Default + { + Tag "WhiteExpl"; + ReactionTime 12; + Args 0,0,0,500; + } +} +Class YnykronLightningLight2 : PaletteLight +{ + Default + { + Tag "WhiteExpl"; + ReactionTime 10; + Args 0,0,0,300; + } +} + +Class SimpleMoveTracer : LineTracer +{ + override ETraceStatus TraceCallback() + { + if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) + { + if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&Line.ML_BLOCKPROJECTILE) ) + return TRACE_Stop; + return TRACE_Skip; + } + return TRACE_Stop; + } +} + +Class YnykronSingularityRing : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + Scale 4.; + +FORCEXYBILLBOARD; + } + States + { + Spawn: + XRG4 AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX 1 Bright A_SetScale(scale.x*1.05); + Stop; + } +} + +Class YnykronVoidExplLight : PaletteLight +{ + Default + { + Tag "Purple"; + ReactionTime 60; + Args 0,0,0,1200; + } +} + +Class YnykronVoidSparkleTrail : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + XScale 6.; + +FORCEXYBILLBOARD; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_SetScale(scale.x*.95,scale.y); + A_FadeOut(.04); + } + States + { + Spawn: + XZW1 A -1 Bright; + Stop; + } +} + +Class YnykronVoidSparkle : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + +ROLLSPRITE; + +ROLLCENTER; + +FORCEXYBILLBOARD; + } + override void PostBeginPlay() + { + Scale *= FRandom[ExploS](.75,1.5); + specialf1 = FRandom[ExploS](.95,.98); + specialf2 = FRandom[ExploS](.005,.015); + vel = SWWMUtility.Vec3FromAngles(angle,pitch)*FRandom[ExploS](4,32); + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_SetScale(scale.x*specialf1); + A_FadeOut(specialf2); + Vector3 dir = vel; + double magvel = dir.length(); + magvel *= .99; + if ( magvel > 0. ) + { + dir /= magvel; + dir += .2*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); + vel = dir.unit()*magvel; + } + Vector3 newpos = level.Vec3Offset(pos,vel); + if ( (newpos.z < floorz) || (newpos.z >= ceilingz) ) + { + vel.z *= -1; + newpos = level.Vec3Offset(pos,vel); + } + if ( !level.IsPointInLevel(newpos) ) + { + vel.xy *= -1; + newpos = level.Vec3Offset(pos,vel); + } + dir = level.Vec3Diff(newpos,pos); + double len = dir.length(); + if ( (len > 0.) && (alpha > .1) ) + { + dir /= len; + let t = Spawn('YnykronVoidSparkleTrail',newpos); + t.alpha = alpha*.5; + t.scale.x *= scale.x; + t.speed = len; + [t.angle, t.pitch, t.scale.y] = SWWMUtility.CalcYBeam(dir,len); + } + SetOrigin(newpos,true); + } + States + { + Spawn: + MOPF A -1 Bright; + Stop; + } +} +Class YnykronSingularityExplosionArm : Actor +{ + Default + { + PROJECTILE; + +THRUACTORS; + +BOUNCEONWALLS; + +BOUNCEONFLOORS; + +BOUNCEONCEILINGS; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + -NOGRAVITY; + +NOFRICTION; + Gravity 0.35; + BounceFactor 1.0; + Radius 2; + Height 4; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + reactiontime = Random[ExploS](10,20); + double ang, pt; + ang = FRandom[ExploS](0,360); + pt = FRandom[ExploS](-90,90); + vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](20.,40.); + } + States + { + Spawn: + TNT1 A 1 + { + A_CountDown(); + if ( !(reactiontime%2) ) + { + Spawn('YnykronSingularityExplosionTrail',pos); + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,5); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); + s.scolor = Color(1,1,1)*Random[ExploS](128,160)+Color(28,0,31); + s.alpha *= .1+.4*(ReactionTime/15.); + s.SetRenderStyle(STYLE_AddShaded); + s.vel = pvel+vel*.2; + s.framestep = Random[ExploS](2,4); + s.scale *= 2.4; + } + } + Wait; + } +} + +Class YnykronSingularityExplosionTrail : SWWMNonInteractiveActor +{ + Default + { + RenderStyle 'Add'; + +FORCEXYBILLBOARD; + Scale 3.; + Alpha .2; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + Scale *= FRandom[ExploS](0.8,1.1); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + } + States + { + Spawn: + XEX4 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ 1 Bright; + Stop; + } +} + +Class YnykronSingularityExplosion : SWWMNonInteractiveActor +{ + Default + { + Obituary "$O_YNYKRONALT"; + SelfObituary "$SO_YNYKRONALT"; + DamageType 'YnykronAlt'; + RenderStyle 'Add'; + Scale 5.; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + +FORCEXYBILLBOARD; + +FOILINVUL; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + if ( !Random[ExploS](0,5) ) + A_StartSound("ynykron/impact",CHAN_VOICE); + SWWMUtility.DoExplosion(self,10000,5000,400,200); + A_SprayDecal("WumboRocketBlast",-172); + Scale *= FRandom[ExploS](0.8,1.1); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + int numpt = Random[ExploS](2,4); + for ( int i=0; i 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + Vector3 newpos; + if ( !mt ) mt = new('SimpleMoveTracer'); + Vector3 dir = vel; + double dist = vel.length(); + dir /= dist; + mt.Trace(pos,CurSector,dir,dist,0,ignoreallactors:true); + if ( mt.Results.HitType == TRACE_HitNone ) newpos = level.Vec3Offset(pos,vel); + else newpos = level.Vec3Offset(mt.Results.HitPos,-mt.Results.HitVector); + if ( level.IsPointInLevel(newpos) ) + SetOrigin(newpos,true); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + + override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) + { + if ( mod == 'Ynykron' ) + return StringTable.Localize("$O_YNYKRON"); + return Super.GetObituary(victim,inflictor,mod,playerattack); + } + + override String GetSelfObituary( Actor inflictor, Name mod ) + { + if ( mod == 'Ynykron' ) + return StringTable.Localize("$SO_YNYKRON"); + return Super.GetSelfObituary(inflictor,mod); + } + + void A_SingularityTick() + { + // gather dust particles (minor "background" mass gain) + int numpt = int(max(4,20*scale.x)); + for ( int i=0; i -1) ) continue; + clouds[i] = Spawn('YnykronCloud',pos); + clouds[i].target = target; + clouds[i].master = self; + } + // check dense cloud formations for lightning + if ( level.maptime > litetimer ) + { + int which = Random[Ynykron](0,MAXCLOUDS-1); + if ( clouds[which] ) + { + Array contacts; + Array dists; + contacts.Clear(); + dists.Clear(); + for ( int i=0; i (200*scale.x) ) continue; + contacts.Push(clouds[i]); + dists.Push(dist); + } + if ( (contacts.Size() > 12) && !Random[Ynykron](0,5) ) + { + Spawn('YnykronLightningLight',clouds[which].pos); + Spawn('YnykronLightningLight2',clouds[which].pos); + A_StartSound("ynykron/vortexflash",CHAN_WEAPON,CHANF_OVERLAP,1.,0.,FRandom[Ynykron](.9,1.1)); + YnykronCloud(clouds[which]).frightening = 1.; + YnykronCloud(clouds[which]).FlashPlayer(200,3000); + for ( int i=0; i candidates; + candidates.Clear(); + // gather first + if ( !hnd ) hnd = SWWMHandler(EventHandler.Find('SWWMHandler')); + foreach ( s:level.Sectors ) + { + // don't check sectors that aren't within bounds, saves some time + if ( !hnd.BoxInSectorBounds(s,pos.xy,20000.*scale.x,CurSector.PortalGroup) ) + continue; + for ( Actor a=s.thinglist; a; a=a.snext ) + { + if ( !a.bSHOOTABLE && !(a is 'Inventory') && !SWWMUtility.ValidProjectile(a) ) + continue; + if ( a.bDORMANT || (a.Health <= 0) || (a == self) || !SWWMUtility.SphereIntersect(a,pos,20000.*scale.x) || !CheckSight(a,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + continue; + if ( (a is 'Inventory') && !a.bDROPPED ) // must be a dropped pickup + continue; + if ( a.player && (a.player.cheats&CF_NOCLIP2) ) // for safety + continue; + if ( (a is 'YnykronSingularity') && a.bNOBLOCKMAP ) // dead singularity, ignore + continue; + candidates.Push(a); + } + } + foreach ( a:candidates ) + { + if ( !a ) continue; + double capmass = a.mass; + // succ + if ( SWWMUtility.SphereIntersect(a,pos,32.*scale.x) ) + { + // merge with other vortices + if ( a is 'YnykronSingularity' ) + { + critmass += YnykronSingularity(a).critmass; + specialf2 += a.specialf2; + a.Destroy(); + continue; + } + // don't delet inventory + if ( a is 'Inventory' ) + continue; + // delet missile + if ( a.bMISSILE ) + { + specialf2 += 5.; + a.Destroy(); + continue; + } + // voodoo dolls just get erased (how convenient) + // otherwise instantly vaporize the poor sap + if ( a.player && (a.player.mo != a) ) a.Destroy(); + else if ( a.CountInv('GrilledCheeseSandwich') > 0 ) + { + // force use the sandwich, warp to safe spot + let gc = GrilledCheeseSandwich(a.FindInventory('GrilledCheeseSandwich')); + gc.SafeTeleport(true); + a.A_StartSound(gc.UseSound,CHAN_ITEMEXTRA); + gc.DoTheThing(true); + gc.Amount--; + } + else if ( !a.FindInventory('GrilledCheeseSafeguard') ) + a.DamageMobj(self,target,int.max,'Ynykron',DMG_FORCED|DMG_THRUSTLESS); + if ( a && (a.Health <= 0) ) + { + if ( a.player ) + { + if ( a == target ) + { + SWWMUtility.MarkAchievement("oopsie",a.player); + target = PlayerGone.FeckOff(a); + } + else PlayerGone.FeckOff(a); + } + if ( a.FindState('YnykronAltDeath',true) ) + a.SetStateLabel('YnykronAltDeath'); // dedicated state + else + { + // poof away manually + a.bINVISIBLE = true; + a.A_ChangeLinkFlags(false); // remove from blockmap, should guarantee archviles not raising this + IDontFeelSoGood.DeletThis(a,true); // ensures corpse is deleted too + } + if ( target && a.FindInventory('EndgameBossMarker') ) + SWWMUtility.MarkAchievement("ligma",target.player); + } + if ( !a || (a.Health <= 0) ) + specialf2 += min(100.,capmass*.6); // partial absorption + continue; + } + capmass = max(50.,a.mass); + Vector3 dirto = level.Vec3Diff(a.Vec3Offset(0,0,a.Height/2),pos); + double dist = dirto.length(); + dirto /= dist; + // rip + if ( a && a.bSHOOTABLE && SWWMUtility.SphereIntersect(a,pos,200.*scale.x) ) + a.DamageMobj(self,target,int(clamp(10.-dist*.05,0.,5.)),'YnykronAlt',DMG_FORCED|DMG_THRUSTLESS); + if ( !a ) continue; + // weak gravitational force as per v-field (approximate) + double grav = (3.*YNON_CONST*specialf2*capmass)/(dist**.5); + // strong gravitational force as per u-field (approximate) + grav += (4.*AXAN_CONST*specialf2*capmass)/(dist**2.); + // account for ground friction + if ( a.pos.z <= a.floorz ) + { + let [frict, movef] = a.GetFriction(); + grav *= movef; + if ( !a.player ) dirto.z += .1; + } + if ( a.mass < LARGE_MASS ) + { + // v-force field compression (very rough approximation) + a.vel *= max(.0,1.-.03*(grav*grav)/(MION_CONST*MION_CONST)); + a.vel += dirto*grav/(capmass*GameTicRate); + } + } + // push away from nearby geometry + double pushdist = 50+32*scale.x; + for ( int i=0; i<8; i++ ) + { + double ang = FRandom[ExploS](0,360); + double pt = FRandom[ExploS](-90,90); + FLineTraceData d; + if ( !LineTrace(ang,pushdist,pt,TRF_THRUACTORS|TRF_THRUHITSCAN,data:d) ) continue; + double mag = pushdist-d.Distance; + vel -= SWWMUtility.Vec3FromAngles(ang,pt)*.02*mag; + } + double magvel = vel.length(); + Vector3 dir; + if ( magvel <= double.epsilon ) dir = SWWMUtility.Vec3FromAngles(angle,pitch); + else dir = vel/magvel; + // wander + dir = (dir+SWWMUtility.Vec3FromAngles(FRandom[Ynykron](0,360),FRandom[Ynykron](-90,90))*FRandom[Ynykron](.05,.2)).unit(); + magvel *= .93; + if ( magvel > 5. ) magvel *= .95; + if ( magvel > 20. ) magvel *= .65; + if ( magvel < .1 ) magvel = .1; + vel = magvel*dir; + // calculate target scale based on radius of event horizon + specialf1 = (specialf2/MION_CONST)**.5; + // shift to target scale + // hopefully this supports interpolation someday + double diffscale = specialf1-scale.x; + if ( abs(diffscale) <= .01 ) A_SetScale(specialf1); + else A_SetScale(scale.x+diffscale*.3); + // detonate if we reach critical mass + if ( specialf2 >= critmass ) + SetStateLabel('Death'); + } + + void FlashPlayer( int str, double rad ) + { + if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; + let mo = players[consoleplayer].Camera; + double dist = Distance3D(mo); + str = int(str*(1.-(dist/rad))); + SWWMHandler.DoFlash(mo,Color(str,255,255,255),3); + SWWMHandler.DoFlash(mo,Color(str/2,240,224,255),30); + } + void A_SingularityBlast() + { + A_ChangeLinkFlags(true); // unlink from blockmap + A_AlertMonsters(0,AMF_EMITFROMTARGET); + SWWMUtility.DoExplosion(self,int.max,500000,800,400); + A_QuakeEx(8.,8.,8.,100,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65535,rollIntensity:1.6); + A_StopAllSounds(); + A_StartSound("ynykron/vortexend",CHAN_VOICE,attenuation:0.); + FlashPlayer(250,9000); + vel *= 0; + // kill off any leftover beams + for ( int i=0; i 60 ) + { + if ( IsActorPlayingSound(CHAN_VOICE) ) return; + for ( int i=0; i 0 ) + { + LineTrace(ang,totaldist,pt,TRF_THRUACTORS|TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + HitNormal = SWWMUtility.GetLineTraceHitNormal(d); + totaldist -= d.Distance; + if ( totaldist > 0 ) + { + Vector3 bounced = d.HitDir-(1.2*hitnormal*(d.HitDir dot HitNormal)); + ang = atan2(bounced.y,bounced.x); + pt = asin(-bounced.z); + origin = d.HitLocation+hitnormal; + } + } + let p = Spawn('YnykronSingularityExplosion',d.HitLocation+hitnormal*4); + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + p.target = target; + p.scale *= 1.+special1/40.; + } + } + + Default + { + DamageType 'YnykronAlt'; + Obituary "$O_YNYKRONALT"; + SelfObituary "$SO_YNYKRONALT"; + +MISSILE; + Scale .4; + } + States + { + Spawn: + XZW1 A 1 BRIGHT A_SingularityTick(); + Wait; + Death: + TNT1 A 0 A_SingularityBlast(); + TNT1 A 1 A_SingularityExtraBlast(); + Wait; + } +} + +Class YnykronAltBeam : SWWMNonInteractiveActor +{ + bool nospread; + + void TraceOut() + { + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + let t = new('YnykronAltTracer'); + t.ShootThroughList.Clear(); + t.WaterHitList.Clear(); + t.Trace(pos,cursector,x,speed,0,ignore:target); + foreach ( l:t.ShootThroughList ) + { + l.Activate(target,0,SPAC_PCross); + l.Activate(target,0,SPAC_Impact); + } + foreach ( w:t.WaterHitList ) + { + let b = Spawn('InvisibleSplasher',w.hitpos); + b.target = target; + b.A_CheckTerrain(); + } + for ( int i=0; i= 25600 ) + { + // end of the line, dissipate + int numpt = Random[Ynykron](16,24); + for ( int i=0; i 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; + A_FadeOut(FRandom[Ynykron](.01,.02)); + special2++; + if ( special2 == 1 ) + SpreadOut(); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + + Default + { + RenderStyle 'Subtract'; + Alpha .4; + Speed 64; + +FORCEXYBILLBOARD; + +ROLLSPRITE; + +ROLLCENTER; + } + States + { + Spawn: + XZW1 A -1 Bright NoDelay + { + return FindState('StarterDev')+Random[Ynykron](0,3)*2; + } + Stop; + TrailSpawn: + XZW2 A -1 Bright + { + return FindState('TrailerDev')+Random[Ynykron](0,3)*2; + } + Stop; + StarterDev: + #### # 50 Bright; + XZW1 B -1 Bright; + Stop; + #### # 50 Bright; + XZW1 C -1 Bright; + Stop; + #### # 50 Bright; + XZW1 D -1 Bright; + Stop; + #### # 50 Bright; + XZW1 E -1 Bright; + Stop; + TrailerDev: + #### # 50 Bright; + XZW2 B -1 Bright; + Stop; + #### # 50 Bright; + XZW2 C -1 Bright; + Stop; + #### # 50 Bright; + XZW2 D -1 Bright; + Stop; + #### # 50 Bright; + XZW2 E -1 Bright; + Stop; + } +} + +Class YnykronAltShot : SWWMNonInteractiveActor +{ + void FlashPlayer( int str, double rad ) + { + if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; + let mo = players[consoleplayer].Camera; + double dist = Distance3D(mo); + str = int(str*(1.-(dist/rad))); + SWWMHandler.DoFlash(mo,Color(str,255,255,255),5); + SWWMHandler.DoFlash(mo,Color(str/2,0,0,0),15); + } + override void PostBeginPlay() + { + A_QuakeEx(4.,4.,4.,80,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65535,rollIntensity:.8); + A_StartSound("ynykron/altbeam",CHAN_VOICE,CHANF_DEFAULT,1.,0.); + FlashPlayer(240,8000); + let b = Spawn('YnykronAltBeam',pos); + b.target = target; + b.angle = angle; + b.pitch = pitch; + } + override void Tick() + { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() || IsActorPlayingSound(CHAN_VOICE) ) return; + Destroy(); + } +} diff --git a/zscript/weapons/swwm_deathlydeathcannon_fx.zsc b/zscript/weapons/swwm_deathlydeathcannon_fx.zsc index d3ba49ca8..f541a1fe7 100644 --- a/zscript/weapons/swwm_deathlydeathcannon_fx.zsc +++ b/zscript/weapons/swwm_deathlydeathcannon_fx.zsc @@ -1,13 +1,18 @@ // Ynykron projectiles and effects // there was an enemy here, but it's gone now -Class AshenRemains : Actor +Class AshenRemains : SWWMNonInteractiveActor { override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } + if ( isFrozen() ) return; double fz = CurSector.floorplane.ZAtPoint(pos.xy); if ( fz != pos.z ) SetOrigin((pos.x,pos.y,fz),true); - if ( isFrozen() ) return; special1++; if ( special1 > 350 ) A_FadeOut(0.01); } @@ -25,14 +30,8 @@ Class AshenRemains : Actor } default { - RenderStyle "Shaded"; - StencilColor "000000"; - Radius .1; - Height 0.; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - +NOTELEPORT; + RenderStyle 'Shaded'; + StencilColor "00 00 00"; } States { @@ -42,7 +41,7 @@ Class AshenRemains : Actor } } -// cheap way to let players know they just got fucking erased from existence +// cheap way to let players know they just got erased from existence Class PlayerGone : PlayerChunk { int deadtimer; @@ -73,11 +72,11 @@ Class PlayerGone : PlayerChunk // no revive (for obvious reasons) } - static void FeckOff( Actor p ) + static Actor FeckOff( Actor p ) { // doesn't affect voodoo dolls (convenient, isn't it?) - if ( !p.player || (p.player.mo != p) ) return; - let c = PlayerGone(Spawn("PlayerGone",(65535,65535,0))); + if ( !p.player || (p.player.mo != p) ) return p; + let c = PlayerGone(Spawn('PlayerGone',(65535,65535,0))); c.player = p.player; c.Health = p.Health; p.player = null; @@ -94,6 +93,7 @@ Class PlayerGone : PlayerChunk if ( playeringame[i] && (players[i].camera == p) ) players[i].camera = c; } + return c; } States @@ -124,11 +124,11 @@ Class IDontFeelSoGood : Thinker static void DeletThis( Actor whomst, bool silence = false ) { if ( !whomst || (whomst.Health > 0) ) return; - let ti = ThinkerIterator.Create("IDontFeelSoGood",STAT_USER); + let ti = ThinkerIterator.Create('IDontFeelSoGood',STAT_USER); IDontFeelSoGood i; while ( i = IDontFeelSoGood(ti.Next()) ) if ( i.goner == whomst ) return; - i = new("IDontFeelSoGood"); + i = new('IDontFeelSoGood'); i.ChangeStatNum(STAT_USER); i.goner = whomst; i.silence = silence; @@ -149,6 +149,7 @@ Class IDontFeelSoGood : Thinker return; } if ( silence ) goner.A_StopAllSounds(); + goner.DamageType = 'Massacre'; // prevents enemies such as pain elementals from spawning anything // special handling for some bosses: // - D'Sparil does not spawn, he's already gone // - Korax doesn't leave ghosts @@ -157,7 +158,7 @@ Class IDontFeelSoGood : Thinker if ( cnt < 15 ) return; if ( goner is 'Sorcerer1' ) { - let h = Actor.Spawn("DSparilHax",goner.pos); + let h = Actor.Spawn('DSparilHax',goner.pos); h.CopyFriendliness(goner,true); } else if ( goner is 'Korax' ) @@ -219,6 +220,7 @@ Class YnykronImpactArm : Actor +NODAMAGETHRUST; +FORCERADIUSDMG; -NOGRAVITY; + +NOFRICTION; Gravity 0.35; BounceFactor 1.0; Radius 2; @@ -231,7 +233,7 @@ Class YnykronImpactArm : Actor double ang, pt; ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,90); - vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[ExploS](20.,40.); + vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](20.,40.); } States { @@ -241,11 +243,11 @@ Class YnykronImpactArm : Actor A_CountDown(); if ( !(reactiontime%2) ) { - Spawn("YnykronImpactTrail",pos); - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - let s = Spawn("SWWMHalfSmoke",pos); + Spawn('YnykronImpactTrail',pos); + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,5); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); s.vel = pvel+vel*.2; - s.special1 = Random[ExploS](1,3); + s.framestep = Random[ExploS](2,4); s.scale *= 2.4; s.alpha *= 0.1+.4*(ReactionTime/15.); } @@ -254,20 +256,14 @@ Class YnykronImpactArm : Actor } } -Class YnykronImpactTrail : Actor +Class YnykronImpactTrail : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - +NOBLOCKMAP; - +NOGRAVITY; + RenderStyle 'Add'; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; Scale 2.; Alpha .2; - Radius .1; - Height 0.; } override void PostBeginPlay() { @@ -276,17 +272,6 @@ Class YnykronImpactTrail : Actor Scale.x *= RandomPick[ExploS](-1,1); Scale.y *= RandomPick[ExploS](-1,1); } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -295,21 +280,17 @@ Class YnykronImpactTrail : Actor } } -Class YnykronDelayedImpact : Actor +Class YnykronDelayedImpact : SWWMNonInteractiveActor { Vector3 ofs; - Default - { - +NOBLOCKMAP; - +NOGRAVITY; - +NOTELEPORT; - +NOINTERACTION; - Radius .1; - Height 0.; - } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; special1++; if ( special1 < 4 ) @@ -317,7 +298,7 @@ Class YnykronDelayedImpact : Actor if ( tracer ) SetOrigin(level.Vec3Offset(tracer.pos,ofs),false); return; } - let b = Spawn("YnykronImpact",pos); + let b = Spawn('YnykronImpact',pos); b.tracer = tracer; b.target = target; b.master = master; @@ -330,27 +311,21 @@ Class YnykronDelayedImpact : Actor } } -Class YnykronImpact : Actor +Class YnykronImpact : SWWMNonInteractiveActor { int rad; Default { Obituary "$O_YNYKRON"; - DamageType "Ynykron"; - RenderStyle "Add"; + SelfObituary "$SO_YNYKRON"; + DamageType 'Ynykron'; + RenderStyle 'Add'; Scale 5.; - +NOGRAVITY; - +NOBLOCKMAP; - +NOTELEPORT; - +DONTSPLASH; +FORCEXYBILLBOARD; - +NOINTERACTION; +NODAMAGETHRUST; +FORCERADIUSDMG; +EXTREMEDEATH; - Radius .1; - Height 0.; } private bool CmpDist( Actor a, Actor b ) @@ -400,44 +375,45 @@ Class YnykronImpact : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - // no need to call A_AlertMonsters if all monsters on the entire map were already alerted by the initial shot - if ( swwm_ynykronalert && (!special2 || swwm_extraalert) ) A_AlertMonsters(); rad = args[0]+300+10*clamp(special1/10,0,15); - A_QuakeEx(4,4,4,50,0,rad*4,"",QF_RELATIVE|QF_SCALEDOWN,falloff:rad*2,rollintensity:.6); + A_QuakeEx(4.,4.,4.,50,0,rad*4,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:rad*2,rollintensity:.6); FlashPlayer(60,1200); if ( tracer ) { // voodoo dolls just get erased (how convenient) - // otherwise instantly vaporize the fucker + // otherwise instantly vaporize the poor sap if ( tracer.player && (tracer.player.mo != tracer) ) { if ( tracer.pos.z < (tracer.floorz+64) ) { - let r = Spawn("AshenRemains",tracer.pos); + let r = Spawn('AshenRemains',tracer.pos); r.scale *= tracer.radius/16.; } tracer.Destroy(); } - else if ( tracer.CountInv("GrilledCheeseSandwich") > 0 ) + else if ( tracer.CountInv('GrilledCheeseSandwich') > 0 ) { // force use the sandwich - let gc = GrilledCheeseSandwich(tracer.FindInventory("GrilledCheeseSandwich")); + let gc = GrilledCheeseSandwich(tracer.FindInventory('GrilledCheeseSandwich')); tracer.A_StartSound(gc.UseSound,CHAN_ITEMEXTRA); gc.DoTheThing(true); gc.Amount--; } - else if ( !tracer.FindInventory("GrilledCheeseSafeguard") ) + else if ( !tracer.FindInventory('GrilledCheeseSafeguard') ) tracer.DamageMobj(self,target,int.max,'Ynykron',DMG_FORCED|DMG_THRUSTLESS); if ( tracer && (tracer.Health <= 0) ) { if ( tracer.player ) { if ( tracer == target ) + { SWWMUtility.MarkAchievement("oopsie",tracer.player); - PlayerGone.FeckOff(tracer); + target = PlayerGone.FeckOff(tracer); + } + else PlayerGone.FeckOff(tracer); } - if ( tracer.FindState("YnykronDeath",true) ) - tracer.SetStateLabel("YnykronDeath"); // dedicated state + if ( tracer.FindState('YnykronDeath',true) ) + tracer.SetStateLabel('YnykronDeath'); // dedicated state else { // poof away manually @@ -447,12 +423,12 @@ Class YnykronImpact : Actor } if ( tracer.pos.z < (tracer.floorz+64) ) { - let r = Spawn("AshenRemains",tracer.pos); + let r = Spawn('AshenRemains',tracer.pos); r.scale *= tracer.radius/16.; } - if ( (tracer.bIsMonster || tracer.player) && tracer.IsHostile(target) && YnykronShot(master) ) + if ( (tracer.bIsMonster || tracer.player) && (!target || tracer.IsHostile(target)) && YnykronShot(master) ) YnykronShot(master).enemykills++; - if ( target && tracer.FindInventory("EndgameBossMarker") ) + if ( target && tracer.FindInventory('EndgameBossMarker') ) SWWMUtility.MarkAchievement("ligma",target.player); } } @@ -472,44 +448,49 @@ Class YnykronImpact : Actor if ( special2 ) numpt -= 3; for ( int i=0; i 2) ) return; - let bt = BlockThingsIterator.Create(self,rad+200); Array candidates; candidates.Clear(); - while ( bt.Next() ) + BlockThingsIterator bt; + // gather first, making sure to traverse through all portal groups just in case + for ( int i=0; i rad/2) && (t == target) ) continue; - candidates.Push(t); + Vector2 disp = level.GetDisplacement(CurSector.PortalGroup,i); + bt = BlockThingsIterator.CreateFromPos(pos.x+disp.x,pos.y+disp.y,pos.z,rad,rad,false); + foreach ( t,p,f:bt ) + { + if ( !t || !t.bSHOOTABLE || !SWWMUtility.SphereIntersect(t,pos,rad) || (!SWWMUtility.SphereIntersect(t,pos,100) && !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY)) ) continue; + if ( YnykronShot(master) && (YnykronShot(master).hitlist.Find(t) < YnykronShot(master).hitlist.Size()) ) + continue; + Vector3 dirto = level.Vec3Diff(pos,t.Vec3Offset(0,0,t.Height/2)); + double dist = dirto.length(); + if ( (dist > rad/2) && (t == target) ) continue; + if ( candidates.Find(t) >= candidates.Size() ) + candidates.Push(t); + } + bt.Destroy(); } qsort_candidates(candidates,0,candidates.Size()-1); candidates.Resize(2); - for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -563,7 +533,6 @@ Class YnykronImpact : Actor Class YnykronTracer : LineTracer { - Actor ignore; Array ShootThroughList; Array WaterHitList; Array HitList; @@ -573,24 +542,21 @@ Class YnykronTracer : LineTracer // liquid splashes if ( Results.CrossedWater ) { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; + let hl = new('WaterHit'); hl.hitpos = Results.CrossedWaterPos; WaterHitList.Push(hl); } else if ( Results.Crossed3DWater ) { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; + let hl = new('WaterHit'); hl.hitpos = Results.Crossed3DWaterPos; WaterHitList.Push(hl); } if ( Results.HitType == TRACE_HitActor ) { - if ( Results.HitActor == ignore ) return TRACE_Skip; if ( Results.HitActor.bSHOOTABLE || (Results.HitActor is 'YnykronSingularityHitbox') ) { - let ent = new("HitListEntry"); + let ent = new('HitListEntry'); ent.hitactor = Results.HitActor; ent.hitlocation = Results.HitPos; ent.x = Results.HitVector; @@ -616,24 +582,21 @@ Class YnykronInWallTracer : YnykronTracer // liquid splashes if ( Results.CrossedWater ) { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; + let hl = new('WaterHit'); hl.hitpos = Results.CrossedWaterPos; WaterHitList.Push(hl); } else if ( Results.Crossed3DWater ) { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; + let hl = new('WaterHit'); hl.hitpos = Results.Crossed3DWaterPos; WaterHitList.Push(hl); } if ( Results.HitType == TRACE_HitActor ) { - if ( Results.HitActor == ignore ) return TRACE_Skip; if ( Results.HitActor.bSHOOTABLE ) { - let ent = new("HitListEntry"); + let ent = new('HitListEntry'); ent.hitactor = Results.HitActor; ent.hitlocation = Results.HitPos; ent.x = Results.HitVector; @@ -647,105 +610,82 @@ Class YnykronInWallTracer : YnykronTracer } } -Class YnykronBeam : Actor +Class YnykronBeam : SWWMNonInteractiveActor { bool nospread; void TraceOut() { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - let t = new("YnykronTracer"); - t.ignore = target; + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + let t = new('YnykronTracer'); t.ShootThroughList.Clear(); t.WaterHitList.Clear(); t.HitList.Clear(); - t.Trace(pos,cursector,x,speed,TRACE_HitSky); - for ( int i=0; i= 25600 ) { // end of the line, dissipate int numpt = Random[Ynykron](4,8); for ( int i=0; i 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; A_FadeOut(FRandom[Ynykron](.01,.02)); special2++; @@ -888,17 +832,11 @@ Class YnykronBeam : Actor Default { Obituary "$O_YNYKRON"; - DamageType "Ynykron"; - RenderStyle "Add"; - Radius .1; - Height 0; + SelfObituary "$SO_YNYKRON"; + DamageType 'Ynykron'; + RenderStyle 'Add'; Alpha .4; Speed 128; - +NOGRAVITY; - +NOBLOCKMAP; - +NOCLIP; - +NOTELEPORT; - +DONTSPLASH; +FORCEXYBILLBOARD; +ROLLSPRITE; +ROLLCENTER; @@ -906,20 +844,19 @@ Class YnykronBeam : Actor +FORCERADIUSDMG; +FOILINVUL; +EXTREMEDEATH; - +NOINTERACTION; } States { Spawn: XZW1 A -1 Bright NoDelay { - return FindState("StarterDev")+Random[Ynykron](0,3)*2; + return FindState('StarterDev')+Random[Ynykron](0,3)*2; } Stop; TrailSpawn: XZW2 A -1 Bright { - return FindState("TrailerDev")+Random[Ynykron](0,3)*2; + return FindState('TrailerDev')+Random[Ynykron](0,3)*2; } Stop; StarterDev: @@ -951,18 +888,8 @@ Class YnykronBeam : Actor } } -Class DelayedWallBeam : Actor +Class DelayedWallBeam : SWWMNonInteractiveActor { - Default - { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; - } override void PostBeginPlay() { if ( YnykronShot(master) ) @@ -970,22 +897,27 @@ Class DelayedWallBeam : Actor } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; special2--; if ( special2 > 0 ) return; if ( YnykronShot(master) ) YnykronShot(master).beamcount--; - let next = Spawn("YnykronBeam",pos); + let next = Spawn('YnykronBeam',pos); next.angle = angle; next.pitch = pitch; next.roll = roll; next.target = target; next.master = master; next.special1 = special1; - next.SetStateLabel("TrailSpawn"); + next.SetStateLabel('TrailSpawn'); // exit blast - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); - let b = Spawn("YnykronImpact",level.Vec3Offset(pos,x*16)); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); + let b = Spawn('YnykronImpact',level.Vec3Offset(pos,x*16)); b.target = target; b.master = master; b.angle = atan2(x.y,x.x); @@ -994,8 +926,8 @@ Class DelayedWallBeam : Actor if ( YnykronShot(master) ) YnykronShot(master).blastcount++; // trace back to get the proper "exit surface" so we can trigger lines if needed - let at = new("AuxiliarySilverBulletTracer"); - at.Trace(pos,CurSector,-x,2.,TRACE_NoSky); + let at = new('AuxiliarySilverBulletTracer'); + at.Trace(pos,CurSector,-x,2.,0,ignoreallactors:true); if ( at.Results.HitType == TRACE_HitWall ) { if ( at.Results.HitLine.sidedef[1] ) @@ -1010,34 +942,16 @@ Class DelayedWallBeam : Actor } } -Class YnykronRing : Actor +Class YnykronRing : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius 0.1; - Height 0; + RenderStyle 'Add'; Scale .6; Alpha .05; - +NOGRAVITY; - +NOBLOCKMAP; +FORCEXYBILLBOARD; - +NOTELEPORT; - +DONTSPLASH; +ROLLSPRITE; +ROLLCENTER; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { @@ -1048,23 +962,21 @@ Class YnykronRing : Actor } // non-model version, for impacts -Class YnykronImpactRing : Actor +Class YnykronImpactRing : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius 0.1; - Height 0; + RenderStyle 'Add'; Scale 2.; - +NOGRAVITY; - +NOBLOCKMAP; +FORCEXYBILLBOARD; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; A_SetScale(scale.x*(special2?1.06:1.03)); if ( !CheckNoDelay() || (tics == -1) ) return; @@ -1083,7 +995,7 @@ Class YnykronImpactRing : Actor } } -Class YnykronShot : Actor +Class YnykronShot : SWWMNonInteractiveActor { Array hitlist; bool hitboss; @@ -1092,16 +1004,6 @@ Class YnykronShot : Actor int blastcount; int lastimpact; - Default - { - Radius .1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; - } void FlashPlayer( int str, double rad ) { if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; @@ -1113,16 +1015,16 @@ Class YnykronShot : Actor } override void PostBeginPlay() { - A_QuakeEx(6,6,6,150,0,65536,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65536,rollIntensity:1.); + A_QuakeEx(6.,6.,6.,150,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65535,rollIntensity:1.); A_StartSound("ynykron/beam",CHAN_VOICE,CHANF_DEFAULT,1.,0.); FlashPlayer(240,8000); hitlist.Clear(); beamcount = 0; blastcount = 0; int rings = 1; - Vector3 x, y, z, dir; + Vector3 dir; double a, s; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); for ( double i=0; i<.04; i+=.006 ) { for ( int j=0; j<360; j+=(360/rings) ) @@ -1132,9 +1034,9 @@ Class YnykronShot : Actor { a = j+FRandom[Ynykron](-5.,5.); s = i+FRandom[Ynykron](-.02,.04); - dir = (x+y*cos(a)*s+z*sin(a)*s).unit(); + dir = SWWMUtility.ConeSpread(x,y,z,a,s); } - let b = Spawn("YnykronBeam",pos); + let b = Spawn('YnykronBeam',pos); b.target = target; b.master = self; b.angle = atan2(dir.y,dir.x); @@ -1143,19 +1045,24 @@ Class YnykronShot : Actor } rings += 2; } - Spawn("YnykronShotLight",level.Vec3Offset(pos,x*30)); + Spawn('YnykronShotLight',level.Vec3Offset(pos,x*30)); } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; // spawn rings special1++; if ( !(special1%10) && (special1 <= 30) ) { - Vector3 dir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + Vector3 dir = SWWMUtility.Vec3FromAngles(angle,pitch); for ( int i=0; i<16; i++ ) { - let r = Spawn("YnykronRing",level.Vec3Offset(pos,dir*(special1*16+i))); + let r = Spawn('YnykronRing',level.Vec3Offset(pos,dir*(special1*16+i))); r.scale *= special1/8.; r.angle = angle; r.pitch = pitch; @@ -1178,1738 +1085,3 @@ Class YnykronShot : Actor Destroy(); } } - -Class YnykronAltTracer : LineTracer -{ - Actor ignore; - Array ShootThroughList; - Array WaterHitList; - - override ETraceStatus TraceCallback() - { - // liquid splashes - if ( Results.CrossedWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; - hl.hitpos = Results.CrossedWaterPos; - WaterHitList.Push(hl); - } - else if ( Results.Crossed3DWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; - hl.hitpos = Results.Crossed3DWaterPos; - WaterHitList.Push(hl); - } - if ( Results.HitType == TRACE_HitActor ) - { - if ( Results.HitActor == ignore ) return TRACE_Skip; - if ( Results.HitActor.bSHOOTABLE || (Results.HitActor is 'YnykronSingularityHitbox') ) return TRACE_Stop; - return TRACE_Skip; - } - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) - { - if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&Line.ML_BlockHitscan) ) - return TRACE_Stop; - ShootThroughList.Push(Results.HitLine); - return TRACE_Skip; - } - return TRACE_Stop; - } -} - -Class YnykronHaloTail : Actor -{ - Default - { - RenderStyle "Add"; - +NOGRAVITY; - +DONTSPLASH; - +NOTELEPORT; - +NOBLOCKMAP; - +NOINTERACTION; - +FORCEXYBILLBOARD; - Radius .1; - Height 0.; - Scale 1.5; - } - override void Tick() - { - if ( isFrozen() ) return; - A_SetScale(scale.x+.5); - A_FadeOut(.2); - } - States - { - Spawn: - MHAL A -1 Bright; - Stop; - } -} - -Class YnykronHalo : Actor -{ - Default - { - RenderStyle "Add"; - +NOGRAVITY; - +DONTSPLASH; - +NOTELEPORT; - +NOBLOCKMAP; - +NOINTERACTION; - +FORCEXYBILLBOARD; - Radius .1; - Height 0.; - Scale 1.5; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !target || target.InStateSequence(target.CurState,target.FindState("Death")) ) - { - Destroy(); - return; - } - SetOrigin(target.pos,true); - A_SetScale(1.5*target.scale.x); - let h = Spawn("YnykronHaloTail",pos); - h.scale = scale; - } - States - { - Spawn: - MHAL A -1 Bright; - Stop; - } -} - -Class GatherDust : Actor -{ - override void Tick() - { - if ( isFrozen() ) return; - SetOrigin(level.Vec3Offset(pos,vel),true); - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - - override void PostBeginPlay() - { - SetState(FindState("Spawn")+Random[ExploS](0,19)); - Scale *= FRandom[ExploS](.75,1.5); - Scale.x *= RandomPick[ExploS](-1,1); - Scale.y *= RandomPick[ExploS](-1,1); - SetShade(Color(4,3,5)*Random[ExploS](5,20)); - } - - void A_Gravitate() - { - if ( target && !target.InStateSequence(target.CurState,target.FindState("Death")) ) - { - if ( alpha < .08 ) A_FadeIn(FRandom[ExploS](.0002,.004)); - Vector3 dirto = level.Vec3Diff(pos,target.pos); - double distto = dirto.length(); - if ( distto < (32.*target.scale.x) ) - { - // sucked in - target.specialf2 += FRandom[ExploS](.5,2.); - Destroy(); - return; - } - dirto /= distto; - double mxdist = 5000.*target.scale.x; - vel = dirto*25.*(clamp((mxdist-distto)/mxdist,.5,1.)**4.); - vel += target.vel; - return; - } - vel *= .98; - A_FadeOut(.002); - } - - Default - { - RenderStyle "Shaded"; - Radius .1; - Height 0.; - Alpha 0.; - Scale 3.; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - +FORCEXYBILLBOARD; - +NOCLIP; - } - States - { - Spawn: - DUST ABCDEFGHIJKLMNOPQRST 1 A_Gravitate(); - Wait; - } -} - -Class YnykronVoidBeamTail : Actor -{ - Default - { - RenderStyle "Add"; - +NOGRAVITY; - +DONTSPLASH; - +NOTELEPORT; - +NOBLOCKMAP; - +NOINTERACTION; - +FORCEXYBILLBOARD; - Radius .1; - Height 0.; - } - override void Tick() - { - if ( isFrozen() ) return; - A_FadeOut(); - } - States - { - Spawn: - XZW1 # -1 Bright; - Stop; - } -} - -Class YnykronVoidBeam : Actor -{ - Actor basebeam, prevbeam, nextbeam; - YnykronTracer t; - double baseang, basept; - int angledir, pitchdir; - int maxlen, curlen, segnum; - int spreadtimer; - int maxlife, lifetimer; - - Default - { - DamageType 'YnykronAlt'; - Obituary "$O_YNYKRONALT"; - RenderStyle "Add"; - Radius .1; - Height 0.; - Alpha 0.; - Stamina 3; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - +INTERPOLATEANGLES; - +NODAMAGETHRUST; - +FOILINVUL; - } - - override void PostBeginPlay() - { - angle = baseang = FRandom[Ynykron](0,360); - pitch = basept = FRandom[Ynykron](-90,90); - angledir = RandomPick[Ynykron](-1,1); - pitchdir = RandomPick[Ynykron](-1,1); - maxlen = Random[Ynykron](40,60); - maxlife = Random[Ynykron](20,30); - Scale *= FRandom[Ynykron](.75,1.5); - lifetimer = -1; - } - - void A_UpdateBeam() - { - if ( !master ) - { - Destroy(); - return; - } - if ( basebeam == self ) - { - baseang += FRandom[Ynykron](0.,5.)*angledir; - basept += FRandom[Ynykron](0.,5.)*pitchdir; - Vector3 ofs = master.scale.x*32.*(cos(baseang)*cos(basept),sin(baseang)*cos(basept),-sin(basept)); - SetOrigin(level.Vec3Offset(master.pos,ofs),true); - double da = deltaangle(angle,baseang+FRandom[Ynykron](-5,5)), - dp = deltaangle(pitch,basept+FRandom[Ynykron](-5,5)); - angle += da*.2; - pitch += dp*.2; - if ( lifetimer == -1 ) - { - A_FadeIn(FRandom[Ynykron](.003,.05)); - if ( Alpha >= .2 ) - { - Alpha = .2; - lifetimer = 0; - } - } - else if ( lifetimer == -2 ) A_FadeOut(FRandom[Ynykron](.003,.05)); - else - { - lifetimer++; - if ( lifetimer > maxlife ) lifetimer = -2; - } - // check total length - int cnt = 0; - for ( YnykronVoidBeam b=self; b; b=YnykronVoidBeam(b.nextbeam) ) cnt++; - curlen = cnt; - } - else if ( !prevbeam ) - { - Destroy(); - return; - } - Vector3 x = swwm_CoordUtil.GetAxes(pitch,angle,0); - if ( !t ) t = new("YnykronTracer"); - t.ShootThroughList.Clear(); - t.WaterHitList.Clear(); - t.HitList.Clear(); - t.Trace(pos,cursector,x,16*scale.x,TRACE_HitSky); - for ( int i=0; i maxlen) || (spreadtimer < stamina) ) - { - // trigger walls - if ( t.Results.HitType == TRACE_HitWall ) - t.Results.HitLine.RemoteActivate(target,t.Results.Side,SPAC_Impact,t.Results.HitPos); - // end of the line - if ( nextbeam ) nextbeam.Destroy(); - if ( basebeam == self ) frame = 3; - else frame = 2; - } - else - { - if ( basebeam == self ) frame = 0; - else frame = 1; - // spawn (or relocate) next beam - if ( !nextbeam ) - { - nextbeam = Spawn("YnykronVoidBeam",level.Vec3Offset(pos,x*16*scale.x)); - nextbeam.angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x); - nextbeam.pitch = asin(-t.Results.HitVector.z); - } - else nextbeam.SetOrigin(level.Vec3Offset(pos,x*16*scale.x),true); - nextbeam.target = target; - nextbeam.master = master; - YnykronVoidBeam(nextbeam).basebeam = basebeam; - YnykronVoidBeam(nextbeam).prevbeam = self; - YnykronVoidBeam(nextbeam).maxlen = maxlen; - YnykronVoidBeam(nextbeam).segnum = segnum+1; - nextbeam.alpha = alpha*(1.-(segnum/double(maxlen))); - nextbeam.scale = scale; - nextbeam.frame = 1; - Vector3 newdir = t.Results.HitVector; - newdir = (newdir+.4*(FRandom[Ynykron](-1,1),FRandom[Ynykron](-1,1),FRandom[Ynykron](-1,1))).unit(); - double da = deltaangle(nextbeam.angle,atan2(newdir.y,newdir.x)), - dp = deltaangle(nextbeam.pitch,asin(-newdir.z)); - nextbeam.angle += da*.2; - nextbeam.pitch += dp*.2; - } - let h = Spawn("YnykronVoidBeamTail",pos); - h.angle = angle; - h.pitch = pitch; - h.alpha = alpha*2.; - h.scale = scale; - h.frame = frame; - } - - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - - States - { - Spawn: - XZW1 # 1 Bright A_UpdateBeam(); - Wait; - } -} - -Class YnykronLightningImpact : Actor -{ - Default - { - Obituary "$O_YNYKRONALT"; - DamageType "Electric"; - Radius .1; - Height 0; - +FOILINVUL; - +FORCERADIUSDMG; - +NODAMAGETHRUST; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SWWMUtility.DoExplosion(self,400,120000,100,40); - A_QuakeEx(3,3,3,12,0,800,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.4); - A_SprayDecal("ShockMark",-172); - int numpt = Random[ExploS](8,16); - for ( int i=0; i 10 ) - { - dirto /= dist; - dir = (dir+.8*dirto*(clamp(1.-(dist/1500.),0.,1.)**1.5)).unit(); - } - invoker.nextdir = dir; - } - action void A_Spread( Sound arcsnd ) - { - Vector3 tdir = level.Vec3Diff(pos,invoker.nextpos); - if ( (GetClass() == 'YnykronLightningArc') && !Random[Ynykron](0,3) ) - { - for ( int i=0; i<3; i++ ) - { - let r = Spawn("YnykronLightningArcSub",level.Vec3Offset(pos,tdir*FRandom[Ynykron](0,1))); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - double a = FRandom[Ynykron](0,360), s = FRandom[Sparkster](0.,1.); - Vector3 sdir = (x+y*cos(a)*s+z*sin(a)*s).unit(); - r.angle = atan2(sdir.y,sdir.x); - r.pitch = asin(-sdir.z); - r.target = target; - r.special1 = 1; - YnykronLightningArc(r).destpos = invoker.destpos; - r.ReactionTime += Random[Ynykron](-3,3); - } - } - if ( arcsnd != "" ) A_StartSound(arcsnd,CHAN_WEAPON); - if ( ((ReactionTime > 0) && (special1 > ReactionTime)) || bAMBUSH ) return; - let b = Spawn(GetClass(),invoker.nextpos); - b.angle = atan2(invoker.nextdir.y,invoker.nextdir.x); - b.pitch = asin(-invoker.nextdir.z); - b.target = target; - b.special1 = special1+1; - YnykronLightningArc(b).destpos = invoker.destpos; - b.SetState(b.FindState("Trailer")); - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - frame = Random[Ynykron](0,11); - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - Default - { - Obituary "$O_YNYKRONALT"; - RenderStyle "Add"; - DamageFunction 1000; - Speed 128; - Radius .1; - Height 0; - Alpha 2.; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +FOILINVUL; - +NOINTERACTION; - } - States - { - Spawn: - XZW1 # 0 Bright; - XZW1 # 1 Bright A_Trace(); - XZW1 # 1 Bright A_Spread("ynykron/vortexarc"); - XZW1 # 1 Bright A_FadeOut(); - Wait; - Trailer: - XZW2 # 0 Bright; - XZW2 # 1 Bright A_Trace(); - XZW2 # 1 Bright A_Spread("ynykron/vortexarc"); - XZW2 # 1 Bright A_FadeOut(); - Wait; - } -} - -Class YnykronLightningArcSub : YnykronLightningArc -{ - Default - { - DamageFunction 250; - Speed 32; - ReactionTime 10; - } - States - { - Spawn: - XZW1 # 0 Bright; - XZW1 # 1 Bright A_Trace(); - XZW1 # 1 Bright A_Spread(""); - XZW1 # 1 Bright A_FadeOut(); - Wait; - Trailer: - XZW2 # 0 Bright; - XZW2 # 1 Bright A_Trace(); - XZW2 # 1 Bright A_Spread(""); - XZW2 # 1 Bright A_FadeOut(); - Wait; - } -} - -Class YnykronCloud : Actor -{ - Vector3 gx, gy, gz; - double phase; - Vector3 dirto; - double frightening; // lightning flash - Color basecol; - double rollvel; - - override void Tick() - { - prev = pos; - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - - void FlashPlayer( int str, double rad ) - { - if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; - let mo = players[consoleplayer].Camera; - double dist = Distance3D(mo); - str = int(str*(1.-(dist/rad))); - SWWMHandler.DoFlash(mo,Color(str,255,255,255),1); - SWWMHandler.DoFlash(mo,Color(str/2,240,224,255),10); - } - - override void PostBeginPlay() - { - SetState(FindState("Spawn")+Random[ExploS](0,19)); - Scale *= FRandom[ExploS](.75,1.5); - Scale.x *= RandomPick[ExploS](-1,1); - Scale.y *= RandomPick[ExploS](-1,1); - if ( master ) Scale *= master.scale.x; - // orbit axes - [gx, gy, gz] = swwm_CoordUtil.GetAxes(FRandom[ExploS](-90,90),FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); - specialf1 = FRandom[ExploS](200,400); - scale *= specialf1/200.; - specialf2 = FRandom[ExploS](3.,8.)*RandomPick[ExploS](-1,1); - special2 = Random[ExploS](10,40); - basecol = Color(4,3,5)*Random[ExploS](5,20); - SetShade(basecol); - rollvel = FRandom[ExploS](.5,3.)*RandomPick[ExploS](-1,1); - } - - void A_Gravitate() - { - if ( frightening > 0. ) - { - alpha = max(frightening,.3); - int str = int(RandomPick[ExploS](255,240,192,254,248,128,160,204)*frightening); - Color litecol = Color(min(255,basecol.r+str),min(255,basecol.g+str),min(255,basecol.b+str)); - SetShade(litecol); - frightening *= .96; - if ( frightening < .1 ) - { - frightening = 0.; - SetShade(basecol); - } - } - roll += rollvel; - if ( master && !master.InStateSequence(master.CurState,master.FindState("Death")) ) - { - if ( special1 == 0 ) - { - A_FadeIn(FRandom[ExploS](.001,.002)); - if ( alpha > .3 ) special1 = 1; - } - else if ( special1 > 0 ) - { - special1++; - if ( special1 >= special2 ) - special1 = -1; - } - else if ( special1 == -1 ) A_FadeOut(FRandom[ExploS](.003,.006)); - dirto = level.Vec3Diff(pos,master.pos); - double distto = dirto.length(); - dirto /= distto; - // orbit - Vector3 orbitdir = (gx*cos(phase)+gy*sin(phase))*(specialf1+32)*master.scale.x; - SetOrigin(level.Vec3Offset(master.pos,orbitdir),true); - phase += FRandom[ExploS](.12,.24)*specialf2*(1.-specialf1/600.); - return; - } - SetOrigin(level.Vec3Offset(pos,-dirto*3.*abs(specialf2)),true); - specialf2 *= .98; - A_FadeOut(.005); - } - - Default - { - DamageType 'YnykronAlt'; - Obituary "$O_YNYKRONALT"; - RenderStyle "Shaded"; - Radius .1; - Height 0.; - Alpha 0.; - Scale 3.; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - +FORCEXYBILLBOARD; - +ROLLSPRITE; - +NOCLIP; - } - States - { - Spawn: - DUST ABCDEFGHIJKLMNOPQRST 1 A_Gravitate(); - Wait; - } -} - -Class YnykronLightningLight : PaletteLight -{ - Default - { - Tag "WhiteExpl"; - ReactionTime 12; - Args 0,0,0,500; - } -} -Class YnykronLightningLight2 : PaletteLight -{ - Default - { - Tag "WhiteExpl"; - ReactionTime 10; - Args 0,0,0,300; - } -} - -Class SimpleMoveTracer : LineTracer -{ - override ETraceStatus TraceCallback() - { - if ( Results.HitType == TRACE_HitActor ) return TRACE_Skip; - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) - { - if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&Line.ML_BLOCKPROJECTILE) ) - return TRACE_Stop; - return TRACE_Skip; - } - return TRACE_Stop; - } -} - -Class YnykronSingularityRing : Actor -{ - Default - { - RenderStyle "Add"; - Radius 0.1; - Height 0; - Scale 4.; - +NOGRAVITY; - +NOBLOCKMAP; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - A_SetScale(scale.x*1.05); - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XRG4 ABCDEFGHIJKLMNOPQRSTUVWX 2 Bright; - Stop; - } -} - -Class YnykronVoidExplLight : PaletteLight -{ - Default - { - Tag "Purple"; - ReactionTime 60; - Args 0,0,0,1200; - } -} - -Class YnykronVoidSparkleTrail : Actor -{ - Default - { - RenderStyle "Add"; - Radius .1; - Height 0.; - XScale 6.; - +FORCEXYBILLBOARD; - +NOGRAVITY; - +NOBLOCKMAP; - +NOINTERACTION; - +DONTSPLASH; - +NOTELEPORT; - } - override void Tick() - { - if ( isFrozen() ) return; - A_SetScale(scale.x*.95,scale.y); - A_FadeOut(.04); - } - States - { - Spawn: - XZW1 A -1 Bright; - Stop; - } -} - -Class YnykronVoidSparkle : Actor -{ - Default - { - RenderStyle "Add"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +ROLLSPRITE; - +ROLLCENTER; - +FORCEXYBILLBOARD; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Scale *= FRandom[ExploS](.75,1.5); - specialf1 = FRandom[ExploS](.95,.98); - specialf2 = FRandom[ExploS](.005,.015); - vel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch))*FRandom[ExploS](4,32); - } - override void Tick() - { - if ( isFrozen() ) return; - A_SetScale(scale.x*specialf1); - A_FadeOut(specialf2); - Vector3 dir = vel; - double magvel = dir.length(); - magvel *= .99; - if ( magvel > 0. ) - { - dir /= magvel; - dir += .2*(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)); - vel = dir.unit()*magvel; - } - Vector3 newpos = level.Vec3Offset(pos,vel); - if ( (newpos.z < floorz) || (newpos.z >= ceilingz) ) - { - vel.z *= -1; - newpos = level.Vec3Offset(pos,vel); - } - if ( !level.IsPointInLevel(newpos) ) - { - vel.xy *= -1; - newpos = level.Vec3Offset(pos,vel); - } - dir = level.Vec3Diff(newpos,pos); - double len = dir.length(); - if ( (len > 0.) && (alpha > .1) ) - { - dir /= len; - let t = Spawn("YnykronVoidSparkleTrail",newpos); - t.alpha = alpha*.5; - t.scale.x *= scale.x; - t.scale.y = len; - t.angle = atan2(dir.y,dir.x); - t.pitch = asin(-dir.z)+90; - } - SetOrigin(newpos,true); - } - States - { - Spawn: - MOPF A -1 Bright; - Stop; - } -} -Class YnykronSingularityExplosionArm : Actor -{ - Default - { - PROJECTILE; - +THRUACTORS; - +BOUNCEONWALLS; - +BOUNCEONFLOORS; - +BOUNCEONCEILINGS; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - -NOGRAVITY; - Gravity 0.35; - BounceFactor 1.0; - Radius 2; - Height 4; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - reactiontime = Random[ExploS](10,20); - double ang, pt; - ang = FRandom[ExploS](0,360); - pt = FRandom[ExploS](-90,90); - vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[ExploS](20.,40.); - } - States - { - Spawn: - TNT1 A 1 - { - A_CountDown(); - if ( !(reactiontime%2) ) - { - Spawn("YnykronSingularityExplosionTrail",pos); - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - let s = Spawn("SWWMHalfSmoke",pos); - s.SetShade(Color(1,1,1)*Random[ExploS](128,160)+Color(28,0,31)); - s.A_SetRenderStyle(s.alpha*(.1+.4*(ReactionTime/15.)),STYLE_AddShaded); - s.vel = pvel+vel*.2; - s.special1 = Random[ExploS](1,3); - s.scale *= 2.4; - } - } - Wait; - } -} - -Class YnykronSingularityExplosionTrail : Actor -{ - Default - { - RenderStyle "Add"; - +NOBLOCKMAP; - +NOGRAVITY; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - Scale 3.; - Alpha .2; - Radius 0.1; - Height 0; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - Scale *= FRandom[ExploS](0.8,1.1); - Scale.x *= RandomPick[ExploS](-1,1); - Scale.y *= RandomPick[ExploS](-1,1); - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XEX4 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ 1 Bright; - Stop; - } -} - -Class YnykronSingularityExplosion : Actor -{ - Default - { - Obituary "$O_YNYKRONALT"; - DamageType "YnykronAlt"; - RenderStyle "Add"; - Scale 5.; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +FOILINVUL; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - if ( !Random[ExploS](0,5) ) - A_StartSound("ynykron/impact",CHAN_VOICE); - SWWMUtility.DoExplosion(self,10000,5000,400,200); - A_SprayDecal("WumboRocketBlast",-172); - Scale *= FRandom[ExploS](0.8,1.1); - Scale.x *= RandomPick[ExploS](-1,1); - Scale.y *= RandomPick[ExploS](-1,1); - int numpt = Random[ExploS](2,4); - for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XEX4 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ 2 Bright; - Stop; - } -} - -Class YnykronSingularityHitbox : Actor -{ - Default - { - Radius .1; - Height 0.; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( !target || !target.InStateSequence(target.CurState,target.FindState("Spawn")) ) - { - Destroy(); - return; - } - A_SetSize(32.*target.scale.x,64.*target.scale.y); - SetOrigin(target.Vec3Offset(0,0,-height*.5),true); - } - override bool CanCollideWith( Actor other, bool passive ) - { - return false; - } -} - -Class YnykronSingularity : Actor -{ - const MAXBEAMS = 10; - const MAXCLOUDS = 300; - - Actor beamers[MAXBEAMS]; - Actor clouds[MAXCLOUDS]; - - const MION_CONST = 48538.; // miön v-force compression constant (approximate) - const YNON_CONST = .043738; // ÿnon v-force field constant (approximate) - const AXAN_CONST = 27.2761; // axan u-force field constant (approximate) - const GOAL_MASS = 26741.; // mass required to compensate Ynykron altfire negative energy release (-2.4×10¹⁵ J, approximately) - - double critmass; // actual mass required (cummulative with absorbed vortices) - - int litetimer; - - transient SimpleMoveTracer mt; - - override void PostBeginPlay() - { - let g = Spawn("YnykronHalo",pos); - g.target = self; - A_StartSound("ynykron/vortex",CHAN_BODY,CHANF_LOOP,1.,.6); - A_StartSound("ynykron/wind",CHAN_ITEM,CHANF_LOOP,1.,.0); - A_StartSound("ynykron/hit",CHAN_VOICE,CHANF_OVERLAP,1.,.0); - // initial mass and radius - specialf1 = scale.x; - specialf2 = scale.x*scale.x*MION_CONST; - critmass = GOAL_MASS; - litetimer = level.maptime+Random[Ynykron](180,240); - let h = Spawn("YnykronSingularityHitbox",pos); - h.target = self; - } - - // lightweight tick, we don't need anything else other than states - override void Tick() - { - if ( isFrozen() ) return; - Vector3 newpos; - if ( !mt ) mt = new("SimpleMoveTracer"); - Vector3 dir = vel; - double dist = vel.length(); - dir /= dist; - mt.Trace(pos,CurSector,dir,dist,0); - if ( mt.Results.HitType == TRACE_HitNone ) newpos = level.Vec3Offset(pos,vel); - else newpos = level.Vec3Offset(mt.Results.HitPos,-mt.Results.HitVector); - if ( level.IsPointInLevel(newpos) ) - SetOrigin(newpos,true); - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - - override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) - { - if ( mod == 'Ynykron' ) - return StringTable.Localize("$O_YNYKRON"); - return Super.GetObituary(victim,inflictor,mod,playerattack); - } - - void A_SingularityTick() - { - // gather dust particles (minor "background" mass gain) - int numpt = int(max(4,20*scale.x)); - for ( int i=0; i -1) ) continue; - clouds[i] = Spawn("YnykronCloud",pos); - clouds[i].target = target; - clouds[i].master = self; - } - // check dense cloud formations for lightning - if ( level.maptime > litetimer ) - { - int which = Random[Ynykron](0,MAXCLOUDS-1); - if ( clouds[which] ) - { - Array contacts; - Array dists; - contacts.Clear(); - dists.Clear(); - for ( int i=0; i (200*scale.x) ) continue; - contacts.Push(clouds[i]); - dists.Push(dist); - } - if ( (contacts.Size() > 12) && !Random[Ynykron](0,5) ) - { - Spawn("YnykronLightningLight",clouds[which].pos); - Spawn("YnykronLightningLight2",clouds[which].pos); - A_StartSound("ynykron/vortexflash",CHAN_WEAPON,CHANF_OVERLAP,1.,0.,FRandom[Ynykron](.9,1.1)); - YnykronCloud(clouds[which]).frightening = 1.; - YnykronCloud(clouds[which]).FlashPlayer(200,3000); - for ( int i=0; i 0 ) - { - // force use the sandwich, warp to safe spot - let gc = GrilledCheeseSandwich(a.FindInventory("GrilledCheeseSandwich")); - gc.SafeTeleport(true); - a.A_StartSound(gc.UseSound,CHAN_ITEMEXTRA); - gc.DoTheThing(true); - gc.Amount--; - } - else if ( !a.FindInventory("GrilledCheeseSafeguard") ) - a.DamageMobj(self,target,int.max,'Ynykron',DMG_FORCED|DMG_THRUSTLESS); - if ( a && (a.Health <= 0) ) - { - if ( a.player ) - { - if ( a == target ) - SWWMUtility.MarkAchievement("oopsie",a.player); - PlayerGone.FeckOff(a); - } - if ( a.FindState("YnykronAltDeath",true) ) - a.SetStateLabel("YnykronAltDeath"); // dedicated state - else - { - // poof away manually - a.bINVISIBLE = true; - a.A_ChangeLinkFlags(false); // remove from blockmap, should guarantee archviles not raising this - IDontFeelSoGood.DeletThis(a,true); // ensures corpse is deleted too - } - if ( target && a.FindInventory("EndgameBossMarker") ) - SWWMUtility.MarkAchievement("ligma",target.player); - } - if ( !a || (a.Health <= 0) ) - specialf2 += min(100.,capmass*.6); // partial absorption - continue; - } - capmass = max(50.,a.mass); - Vector3 dirto = level.Vec3Diff(a.Vec3Offset(0,0,a.Height/2),pos); - double dist = dirto.length(); - dirto /= dist; - // rip - if ( a && a.bSHOOTABLE && SWWMUtility.SphereIntersect(a,pos,200.*scale.x) ) - a.DamageMobj(self,target,int(clamp(10.-dist*.05,0.,5.)),'YnykronAlt',DMG_FORCED|DMG_THRUSTLESS); - if ( !a ) continue; - // weak gravitational force as per v-field (approximate) - double grav = (3.*YNON_CONST*specialf2*capmass)/(dist**.5); - // strong gravitational force as per u-field (approximate) - grav += (4.*AXAN_CONST*specialf2*capmass)/(dist**2.); - // account for ground friction - if ( a.pos.z <= a.floorz ) - { - double frict, movef; - [frict, movef] = a.GetFriction(); - grav *= movef; - if ( !a.player ) dirto.z += .1; - } - if ( a.mass < LARGE_MASS ) - { - // v-force field compression (very rough approximation) - a.vel *= max(.0,1.-.03*(grav*grav)/(MION_CONST*MION_CONST)); - a.vel += dirto*grav/(capmass*GameTicRate); - } - } - } - // push away from nearby geometry - double pushdist = 50+32*scale.x; - for ( int i=0; i<8; i++ ) - { - double ang = FRandom[ExploS](0,360); - double pt = FRandom[ExploS](-90,90); - FLineTraceData d; - if ( !LineTrace(ang,pushdist,pt,TRF_THRUACTORS|TRF_THRUHITSCAN,data:d) ) continue; - double mag = pushdist-d.Distance; - vel -= (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*.02*mag; - } - double magvel = vel.length(); - Vector3 dir; - if ( magvel <= double.epsilon ) dir = (cos(angle)*cos(pitch),sin(angle)+cos(pitch),-sin(pitch)); - else dir = vel/magvel; - // wander - dir = (dir+(FRandom[Ynykron](-1,1),FRandom[Ynykron](-1,1),FRandom[Ynykron](-1,1))*FRandom[Ynykron](.05,.2)).unit(); - magvel *= .93; - if ( magvel > 5. ) magvel *= .95; - if ( magvel > 20. ) magvel *= .65; - if ( magvel < .1 ) magvel = .1; - vel = magvel*dir; - // calculate target scale based on radius of event horizon - specialf1 = (specialf2/MION_CONST)**.5; - // shift to target scale - // hopefully this supports interpolation someday - double diffscale = specialf1-scale.x; - if ( abs(diffscale) <= .01 ) A_SetScale(specialf1); - else A_SetScale(scale.x+diffscale*.3); - // detonate if we reach critical mass - if ( specialf2 >= critmass ) - SetStateLabel("Death"); - } - - void FlashPlayer( int str, double rad ) - { - if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; - let mo = players[consoleplayer].Camera; - double dist = Distance3D(mo); - str = int(str*(1.-(dist/rad))); - SWWMHandler.DoFlash(mo,Color(str,255,255,255),3); - SWWMHandler.DoFlash(mo,Color(str/2,240,224,255),30); - } - void A_SingularityBlast() - { - A_ChangeLinkFlags(true); // unlink from blockmap - A_AlertMonsters(); - SWWMUtility.DoExplosion(self,int.max,500000,800,400); - A_QuakeEx(8,8,8,100,0,65536,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65536,rollIntensity:1.6); - A_StopAllSounds(); - A_StartSound("ynykron/vortexend",CHAN_VOICE,attenuation:0.); - FlashPlayer(250,9000); - vel *= 0; - // kill off any leftover beams - for ( int i=0; i 60 ) - { - if ( IsActorPlayingSound(CHAN_VOICE) ) return; - for ( int i=0; i 0 ) - { - LineTrace(ang,totaldist,pt,TRF_THRUACTORS|TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); - hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } - totaldist -= d.Distance; - if ( totaldist > 0 ) - { - Vector3 bounced = d.HitDir-(1.2*hitnormal*(d.HitDir dot HitNormal)); - ang = atan2(bounced.y,bounced.x); - pt = asin(-bounced.z); - origin = d.HitLocation+hitnormal; - } - } - let p = Spawn("YnykronSingularityExplosion",d.HitLocation+hitnormal*4); - p.angle = atan2(hitnormal.y,hitnormal.x); - p.pitch = asin(-hitnormal.z); - p.target = target; - p.scale *= 1.+special1/40.; - } - } - - Default - { - DamageType 'YnykronAlt'; - Obituary "$O_YNYKRONALT"; - +NOGRAVITY; - +MISSILE; - +DROPOFF; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - Radius .1; - Height 0.; - Scale .4; - } - States - { - Spawn: - XZW1 A 1 BRIGHT A_SingularityTick(); - Wait; - Death: - TNT1 A 0 A_SingularityBlast(); - TNT1 A 1 A_SingularityExtraBlast(); - Wait; - } -} - -Class YnykronAltBeam : Actor -{ - bool nospread; - - void TraceOut() - { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - let t = new("YnykronAltTracer"); - t.ignore = target; - t.ShootThroughList.Clear(); - t.WaterHitList.Clear(); - t.Trace(pos,cursector,x,speed,TRACE_HitSky); - for ( int i=0; i= 25600 ) - { - // end of the line, dissipate - int numpt = Random[Ynykron](16,24); - for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - - Default - { - RenderStyle "Subtract"; - Radius .1; - Height 0; - Alpha .4; - Speed 64; - +NOGRAVITY; - +NOBLOCKMAP; - +NOCLIP; - +NOTELEPORT; - +DONTSPLASH; - +FORCEXYBILLBOARD; - +ROLLSPRITE; - +ROLLCENTER; - +NOINTERACTION; - } - States - { - Spawn: - XZW1 A -1 Bright NoDelay - { - return FindState("StarterDev")+Random[Ynykron](0,3)*2; - } - Stop; - TrailSpawn: - XZW2 A -1 Bright - { - return FindState("TrailerDev")+Random[Ynykron](0,3)*2; - } - Stop; - StarterDev: - #### # 50 Bright; - XZW1 B -1 Bright; - Stop; - #### # 50 Bright; - XZW1 C -1 Bright; - Stop; - #### # 50 Bright; - XZW1 D -1 Bright; - Stop; - #### # 50 Bright; - XZW1 E -1 Bright; - Stop; - TrailerDev: - #### # 50 Bright; - XZW2 B -1 Bright; - Stop; - #### # 50 Bright; - XZW2 C -1 Bright; - Stop; - #### # 50 Bright; - XZW2 D -1 Bright; - Stop; - #### # 50 Bright; - XZW2 E -1 Bright; - Stop; - } -} - -Class YnykronAltShot : Actor -{ - Default - { - Radius .1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +NOTELEPORT; - +DONTSPLASH; - +NOINTERACTION; - } - void FlashPlayer( int str, double rad ) - { - if ( !SWWMUtility.InPlayerFOV(players[consoleplayer],self,rad) ) return; - let mo = players[consoleplayer].Camera; - double dist = Distance3D(mo); - str = int(str*(1.-(dist/rad))); - SWWMHandler.DoFlash(mo,Color(str,255,255,255),5); - SWWMHandler.DoFlash(mo,Color(str/2,0,0,0),15); - } - override void PostBeginPlay() - { - A_QuakeEx(4,4,4,80,0,65536,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65536,rollIntensity:.8); - A_StartSound("ynykron/altbeam",CHAN_VOICE,CHANF_DEFAULT,1.,0.); - FlashPlayer(240,8000); - let b = Spawn("YnykronAltBeam",pos); - b.target = target; - b.angle = angle; - b.pitch = pitch; - } - override void Tick() - { - if ( isFrozen() || IsActorPlayingSound(CHAN_VOICE) ) return; - Destroy(); - } -} diff --git a/zscript/weapons/swwm_deepdarkimpact.zsc b/zscript/weapons/swwm_deepdarkimpact.zsc index e4c93923a..47dd3b7b5 100644 --- a/zscript/weapons/swwm_deepdarkimpact.zsc +++ b/zscript/weapons/swwm_deepdarkimpact.zsc @@ -3,7 +3,6 @@ Class DeepTracer : LineTracer { - Actor ignoreme; Array hitlist; Array hitdist; Array hitposx, hitposy, hitposz; @@ -12,7 +11,6 @@ Class DeepTracer : LineTracer { if ( Results.HitType == TRACE_HitActor ) { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; if ( Results.HitActor.bSHOOTABLE ) { hitlist.Push(Results.HitActor); @@ -49,28 +47,17 @@ Class DeepImpact : SWWMWeapon double charge; bool charging; - transient ui TextureID WeaponBox, AmmoBar; - transient ui DynamicValueInterpolator ChargeInter; + int wastecycle; // for easter egg + + transient ui SmoothDynamicValueInterpolator ChargeInter; transient int failtime; Property ClipCount : clipcount; - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/DeepImpactDisplay.png",TexMan.Type_Any); - if ( !AmmoBar ) AmmoBar = TexMan.CheckForTexture("graphics/HUD/DeepImpactBar.png",TexMan.Type_Any); - Screen.DrawTexture(WeaponBox,false,bx-36,by-54,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int chg = clamp(ChargeInter?ChargeInter.GetValue():clipcount,0,100); - int ct = int(((by-2)-(chg*50./100.))*hs); - bool blinking = (failtime>gametic)&&((failtime-gametic)%8>=4); - Screen.DrawTexture(AmmoBar,false,bx-7,by-52,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ClipTop,ct,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0)); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-35,by-12,String.Format("%3d%%",chg),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0)); - } - override void HudTick() { Super.HudTick(); - if ( !ChargeInter ) ChargeInter = DynamicValueInterpolator.Create(clipcount,.5,1,25); + if ( !ChargeInter ) ChargeInter = SmoothDynamicValueInterpolator.Create(clipcount,.5); ChargeInter.Update(clipcount); } @@ -83,7 +70,7 @@ Class DeepImpact : SWWMWeapon { invoker.charge = 0; A_StartSound("deepimpact/charge",CHAN_WEAPONEXTRA); - A_QuakeEx(2,2,2,35,0,1,"",QF_RELATIVE|QF_SCALEUP,rollIntensity:.2); + A_QuakeEx(2.,2.,2.,35,0,1,"",QF_RELATIVE|QF_SCALEUP,rollIntensity:.2); A_AlertMonsters(swwm_uncapalert?0:100); } @@ -94,11 +81,11 @@ Class DeepImpact : SWWMWeapon if ( invoker.charge >= (invoker.clipcount*.01) ) { A_WeaponOffset(0,32); - player.SetPSprite(PSP_WEAPON,ResolveState("AltRelease")); + player.SetPSprite(PSP_WEAPON,ResolveState('AltRelease')); } } - override Vector3 GetTraceOffset() + override Vector3 GetTraceOffset( int index ) { return (10.,2.,-3.); } @@ -107,16 +94,17 @@ Class DeepImpact : SWWMWeapon { let weap = Weapon(invoker); if ( !weap ) return; + A_BumpView(-.05); + A_QuakeEx(.1,.1,.1,2,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.05); A_StartSound("deepimpact/dryfire",CHAN_WEAPON,CHANF_OVERLAP,.5); A_AlertMonsters(swwm_uncapalert?0:70); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3*z); + Vector3 x = SWWMUtility.GetPlayerViewDir(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,2,-3); int numpt = Random[Impact](5,7); for ( int i=0; i list; list.Clear(); int rings = 1; @@ -149,33 +138,33 @@ Class DeepImpact : SWWMWeapon { for ( int j=0; j<360; j+=(360/rings) ) { - dir = (x+y*cos(j)*i+z*sin(j)*i).unit(); + dir = SWWMUtility.ConeSpread(x,y,z,j,i); t.hitlist.Clear(); t.hitdist.Clear(); t.hitposx.Clear(); t.hitposy.Clear(); t.hitposz.Clear(); - t.Trace(origin,level.PointInSector(origin.xy),dir,250-i*150,0); - SWWMBulletTrail.DoTrail(self,origin,dir,250-i*150,0); - for ( int i=0; i floorz) && TestMobjZ() ) wnorm *= 2.4; SWWMUtility.DoKnockback(self,wnorm.unit(),wnorm.length()*5000000.); } - for ( int i=0; i 250) || (rdir dot x < .75) ) continue; - m.speed = m.vel.length(); - m.vel = m.speed*1.5*(-m.vel.unit()*.3+rdir+x*.2).unit(); - Vector3 ndir = m.vel.unit(); - m.angle = atan2(ndir.y,ndir.x); - m.pitch = asin(-ndir.z); - if ( m.bSEEKERMISSILE && (m.target != self) ) m.tracer = m.target; - m.target = self; - if ( !m.FindInventory("ParriedBuff") ) + // don't check sectors that aren't within bounds, saves some time + if ( !hnd.BoxInSectorBounds(s,origin.xy,250,level.PointInSector(origin.xy).PortalGroup) ) + continue; + for ( Actor m=s.thinglist; m; m=m.snext ) { - let pb = Inventory(Spawn("ParriedBuff")); - pb.AttachToOwner(m); - pb.bAMBUSH = true; + if ( !SWWMUtility.ValidProjectile(m) ) continue; + Vector3 rdir = level.Vec3Diff(origin,m.pos); + double rdist = rdir.length(); + if ( rdist <= 0. ) continue; + rdir /= rdist; + if ( LineTrace(atan2(rdir.y,rdir.x),rdist,asin(-rdir.z),TRF_THRUACTORS|TRF_ABSPOSITION,origin.z,origin.x,origin.y) || (rdist > 250) || (rdir dot x < .75) ) continue; + m.speed = m.vel.length(); + m.vel = m.speed*1.5*(-m.vel.unit()*.3+rdir+x*.2).unit(); + Vector3 ndir = m.vel.unit(); + m.angle = atan2(ndir.y,ndir.x); + m.pitch = asin(-ndir.z); + if ( m.bSEEKERMISSILE && (m.target != self) ) m.tracer = m.target; + m.target = self; + if ( !m.FindInventory('ParriedBuff') ) + { + let pb = Inventory(Spawn('ParriedBuff')); + pb.AttachToOwner(m); + pb.bAMBUSH = true; + } + if ( st ) st.parries++; + SWWMUtility.AchievementProgressInc("parry",1,player); } - if ( s ) s.parries++; - SWWMUtility.AchievementProgressInc("parry",1,player); } int numpt = Random[Impact](7,12); for ( int i=0; i=invoker.default.clipcount,"NoReload"); + XZW2 A 0 A_JumpIf(invoker.clipcount>=invoker.default.clipcount,'NoReload'); XZW2 A 2 A_StartSound("deepimpact/reloadbeg",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 HIJ 2; + XZW3 HIJ 2 A_BumpView(.1,tics:2); ReloadHold: - XZW3 K 2 A_Crank(); - XZW3 LM 2; + XZW3 K 2 + { + A_Crank(); + A_BumpView(-.1,tics:2); + } + XZW3 LM 2 A_BumpView(-.2,tics:2); XZW3 NOPQ 3; - XZW3 K 0 A_JumpIf((player.cmd.buttons&(BT_RELOAD|BT_ALTATTACK))&&(invoker.clipcount target.floorz) && target.TestMobjZ() ) mm *= 1.6; SWWMUtility.DoKnockback(target,dir,mm); } - SWWMUtility.DoExplosion(self,0,200000,200,80,ignoreme:target); - A_QuakeEx(6,6,6,20,0,250,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); + SWWMUtility.DoExplosion(self,20,80000,200,80,DE_NONEXPLOSIVE,ignoreme:target); + A_QuakeEx(6.,6.,6.,20,0,250,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.); A_StartSound("deepimpact/bullethit",CHAN_VOICE,CHANF_DEFAULT,1.,.3); A_SprayDecal("ImpactMark"); - Spawn("AirBulletLight",pos); + Spawn('AirBulletLight',pos); int numpt = Random[ExploS](10,20); for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { diff --git a/zscript/weapons/swwm_jackhammer.zsc b/zscript/weapons/swwm_jackhammer.zsc deleted file mode 100644 index e6b521efc..000000000 --- a/zscript/weapons/swwm_jackhammer.zsc +++ /dev/null @@ -1,410 +0,0 @@ -// Tach-Engine Technologies Microfusion Rotary Hammer aka "Pusher" (planned for unreleased Zanaveth Ultra Suite 2) -// Slot 1, replaces Chainsaw, Gauntlets, Timon's Axe - -Class PusherWeapon : SWWMWeapon -{ - double chargelevel, vibe; - int hitcnt; - - transient ui TextureID WeaponBox, ChargeBar; - transient ui DynamicValueInterpolator ChargeInter; - - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/PusherDisplay.png",TexMan.Type_Any); - if ( !ChargeBar ) ChargeBar = TexMan.CheckForTexture("graphics/HUD/PusherBar.png",TexMan.Type_Any); - Screen.DrawTexture(WeaponBox,false,bx-60,by-9,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int chg = clamp(ChargeInter?ChargeInter.GetValue():int(chargelevel*100),0,100); - double cw = chg*56./100.; - Screen.DrawTexture(ChargeBar,false,bx-58,by-7,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,cw); - } - - override void HudTick() - { - Super.HudTick(); - if ( !ChargeInter ) ChargeInter = DynamicValueInterpolator.Create(int(chargelevel*100),.5,1,50); - ChargeInter.Update(int(chargelevel*100)); - } - - override bool ReportHUDAmmo() - { - return true; - } - - override Vector3 GetTraceOffset() - { - return (10.,2.,-3.5); - } - - action void A_PusherDrill() - { - invoker.chargelevel = clamp(invoker.chargelevel+FRandom[Pusher](-.04,.08),.3,1.); - A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); - A_WeaponOffset(FRandom[Pusher](-1,1)*2,32+FRandom[Pusher](-1,1)*2); - A_BumpFOV(1.01); - A_Recoil(-cos(pitch)); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3.5*z); - FLineTraceData d; - LineTrace(angle,60,pitch,TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); - SWWMBulletTrail.DoTrail(self,origin,x,60,0); - if ( d.HitType != TRACE_HitNone ) - { - A_QuakeEx(2,2,2,7,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.8); - A_AlertMonsters(swwm_uncapalert?0:1200); - int dmg = int(4+invoker.chargelevel*8); - if ( invoker.chargelevel > .4 ) invoker.chargelevel -= FRandom[Pusher](.01,.03); - if ( d.HitType == TRACE_HitActor ) - { - double diff = deltaangle(self.angle,AngleTo(d.HitActor)); - self.angle += clamp(diff,-5.,5.); - SWWMUtility.DoKnockback(d.HitActor,d.HitDir,8500); - d.HitActor.A_QuakeEx(3,3,3,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.1); - let p = SWWMPuff.Setup(d.HitLocation,d.HitDir,invoker,self,d.HitActor); - dmg = d.HitActor.DamageMobj(p,self,dmg,'Tenderize',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); - if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT || d.HitActor.bINVULNERABLE ) - { - let p = Spawn("PusherImpact",d.HitLocation-d.HitDir*4); - p.angle = atan2(-d.HitDir.y,-d.HitDir.x); - p.pitch = asin(d.HitDir.z); - } - else - { - d.HitActor.TraceBleed(dmg,invoker); - d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); - d.HitActor.A_StartSound("pusher/meat",CHAN_DAMAGE,CHANF_OVERLAP); - } - // move towards target (unless we're standing on it) - if ( !(self is 'Demolitionist') || (Demolitionist(self).oldencroached != d.HitActor) ) - bJUSTATTACKED = true; - } - else - { - Vector3 HitNormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; - else HitNormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; - else HitNormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) HitNormal *= -1; - d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation+HitNormal*4); - } - let p = Spawn("PusherImpact",d.HitLocation+HitNormal*4); - p.angle = atan2(HitNormal.y,HitNormal.x); - p.pitch = asin(-HitNormal.z); - if ( d.HitType == TRACE_HitFloor ) p.CheckSplash(40); - if ( waterlevel > 2 ) SWWMUtility.DoKnockback(self,-x,30000); - } - if ( swwm_omnibust ) BusterWall.BustLinetrace(d,dmg,self,d.HitDir,d.HitLocation.z); - } - else if ( waterlevel > 2 ) SWWMUtility.DoKnockback(self,-x,50000); - if ( swwm_extraalert || !(invoker.hitcnt%20) ) A_AlertMonsters(swwm_uncapalert?0:500); - invoker.hitcnt++; - } - - action void A_PusherAlt() - { - A_StopSound(CHAN_WEAPON); - if ( IsActorPlayingSound(CHAN_WEAPONEXTRA,"pusher/motor") ) - A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); - A_StartSound("pusher/stop",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("pusher/altfire",CHAN_WEAPON,CHANF_OVERLAP); - A_BumpFOV(1.+invoker.chargelevel*.2); - A_Recoil(-(2.+4.*invoker.chargelevel)*cos(pitch)); - A_QuakeEx(2+int(invoker.chargelevel*2),2+int(invoker.chargelevel*2),2+int(invoker.chargelevel*2),3+int(invoker.chargelevel*6),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3+invoker.chargelevel*.7); - A_WeaponOffset(0,32); - A_Overlay(-9999,null); - A_PlayerFire(); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3.5*z); - FLineTraceData d; - LineTrace(angle,80,pitch,TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); - SWWMBulletTrail.DoTrail(self,origin,x,80,0); - bool gone = false; - if ( d.HitType != TRACE_HitNone ) - { - A_QuakeEx(8,8,8,12,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.8); - A_AlertMonsters(swwm_uncapalert?0:1600); - int dmg = int(240*invoker.chargelevel); - if ( d.HitType == TRACE_HitActor ) - { - double diff = deltaangle(self.angle,AngleTo(d.HitActor)); - self.angle += clamp(diff,-5.,5.); - SWWMUtility.DoKnockback(d.HitActor,d.HitDir,85000); - d.HitActor.A_QuakeEx(9,9,9,15,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.1); - let p = SWWMPuff.Setup(d.HitLocation,d.HitDir,invoker,self,d.HitActor); - dmg = d.HitActor.DamageMobj(p,self,dmg,'Tenderize',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); - if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT || d.HitActor.bINVULNERABLE ) - { - let p = Spawn("BigPusherImpact",d.HitLocation-d.HitDir*4); - p.angle = atan2(-d.HitDir.y,-d.HitDir.x); - p.pitch = asin(d.HitDir.z); - } - else - { - d.HitActor.TraceBleed(dmg,invoker); - d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); - d.HitActor.A_StartSound("pusher/altmeat",CHAN_DAMAGE,CHANF_OVERLAP); - } - } - else - { - Vector3 HitNormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; - else HitNormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; - else HitNormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) HitNormal *= -1; - d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation+HitNormal*4); - } - let p = Spawn("BigPusherImpact",d.HitLocation+HitNormal*4); - p.angle = atan2(HitNormal.y,HitNormal.x); - p.pitch = asin(-HitNormal.z); - if ( d.HitType == TRACE_HitFloor ) p.CheckSplash(40); - } - if ( swwm_omnibust ) BusterWall.BustLinetrace(d,dmg,self,d.HitDir,d.HitLocation.z); - } - else if ( !Random[Pusher](0,3-int(invoker.chargelevel*3)) ) - { - // didn't hit anything, randomly slip off - player.SetPSprite(PSP_WEAPON,ResolveState("AltMiss")); - invoker.bNODEATHDESELECT = true; // prevent any glitching that could happen if the sequence is interrupted - A_StopSound(CHAN_WEAPON); - A_StopSound(CHAN_WEAPONEXTRA); - A_StartSound("pusher/miss",CHAN_WEAPON,CHANF_OVERLAP); - let p = Spawn("PusherProjectile",origin); - p.angle = angle; - p.pitch = pitch; - p.vel = x*p.speed*invoker.chargelevel; - p.target = self; - SWWMUtility.DoKnockback(self,x,85000.); - } - A_AlertMonsters(swwm_uncapalert?0:1200); - invoker.chargelevel = 0.; - } - - action void A_BeginCharge() - { - invoker.chargelevel = invoker.vibe = 0.; - A_WeaponOffset(0,32); - A_QuakeEx(1,1,1,33,0,1,"",QF_RELATIVE|QF_SCALEUP,rollIntensity:.5); - A_Overlay(-9999,"Dummy"); - } - - action void A_ChargeUp() - { - invoker.chargelevel = min(1.,invoker.chargelevel+.025); - if ( invoker.chargelevel >= .5 ) invoker.vibe = min(1.,invoker.vibe+.02); - A_WeaponOffset(FRandom[Pusher](-1,1)*(invoker.chargelevel-invoker.vibe),32+FRandom[Pusher](-1,1)*(invoker.chargelevel-invoker.vibe)); - if ( !(player.cmd.buttons&BT_ALTATTACK) && (invoker.chargelevel > .3) ) - player.SetPSprite(PSP_WEAPON,ResolveState("AltRelease")); - } - - override void MarkPrecacheSounds() - { - Super.MarkPrecacheSounds(); - MarkSound("pusher/select"); - MarkSound("pusher/deselect"); - MarkSound("pusher/motor"); - MarkSound("pusher/motorend"); - MarkSound("pusher/start"); - MarkSound("pusher/drill"); - MarkSound("pusher/hit1"); - MarkSound("pusher/hit2"); - MarkSound("pusher/hit3"); - MarkSound("pusher/meat1"); - MarkSound("pusher/meat2"); - MarkSound("pusher/meat3"); - MarkSound("pusher/end"); - MarkSound("pusher/checkout"); - MarkSound("pusher/pullback"); - MarkSound("pusher/altfire1"); - MarkSound("pusher/altfire2"); - MarkSound("pusher/miss"); - MarkSound("pusher/althit1"); - MarkSound("pusher/althit2"); - MarkSound("pusher/altmeat1"); - MarkSound("pusher/altmeat2"); - MarkSound("pusher/fly"); - MarkSound("pusher/bounce1"); - MarkSound("pusher/bounce2"); - MarkSound("pusher/bounce3"); - } - - Default - { - //$Title Pusher - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_Pusher.png - //$Icon weapon - Tag "$T_PUSHER"; - Inventory.PickupMessage "$I_PUSHER"; - Obituary "$O_PUSHER"; - SWWMWeapon.Tooltip "$TT_PUSHER"; - SWWMWeapon.GetLine "getpusherweapon"; - Inventory.Icon "graphics/HUD/Icons/W_Pusher.png"; - Weapon.UpSound "pusher/select"; - Weapon.SlotNumber 1; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 1500; - Stamina 10000; - +WEAPON.MELEEWEAPON; - //+WEAPON.NOAUTOSWITCHTO; - Radius 20; - Height 32; - } - - States - { - Spawn: - XZW1 A -1; - Stop; - Select: - XZW2 G 2 A_FullRaise(); - XZW2 HIJKL 2; - Goto Ready; - Ready: - XZW2 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1); - Wait; - Fire: - XZW2 A 2 - { - A_WeaponOffset(0,32); - invoker.chargelevel = .2; - invoker.hitcnt = 0; - A_StartSound("pusher/start",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("pusher/motor",CHAN_WEAPONEXTRA,CHANF_LOOP,pitch:1.5); - } - XZW2 M 2; - XZW2 N 0 A_StartSound("pusher/drill",CHAN_WEAPONEXTRA2,CHANF_LOOP); - Hold: - XZW2 N 1 - { - A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); - A_Recoil(cos(pitch)); - } - XZW2 O 1 A_PusherDrill(); - XZW2 P 1 - { - A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); - A_Recoil(cos(pitch)); - } - XZW2 Q 1 A_PusherDrill(); - XZW2 R 1 - { - A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); - A_Recoil(cos(pitch)); - } - XZW2 S 1 A_PusherDrill(); - XZW2 N 2 - { - if ( player.cmd.buttons&BT_ATTACK ) - return ResolveState("Hold"); - invoker.chargelevel *= .4; - A_Recoil(.5*cos(pitch)); - A_ClearRefire(); - A_WeaponOffset(0,32); - A_StopSound(CHAN_WEAPONEXTRA2); - A_StartSound("pusher/stop",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); - return ResolveState(null); - } - XZW2 T 2 { invoker.chargelevel = 0.; } - Goto Ready; - Dummy: - TNT1 A 1 A_ChargeUp(); - Wait; - AltFire: - XZW2 A 2 - { - A_StartSound("pusher/start",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("pusher/motor",CHAN_WEAPONEXTRA,CHANF_LOOP,pitch:1.5); - A_StartSound("pusher/pullback",CHAN_WEAPON,CHANF_OVERLAP); - } - XZW2 UVW 2; - XZW2 X 0 A_BeginCharge(); - XZW2 XYZ 3; - XZW3 ABCDEFG 3; - XZW3 H 0 - { - A_QuakeEx(1,1,1,8,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); - A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); - } - XZW3 H 3; - Wait; - AltRelease: - #### # 1 A_PusherAlt(); - XZW5 R 2; - XZW3 IJKL 2; - XZW3 MNOP 3; - Goto Ready; - AltMiss: - XZW3 QRSTUVW 1; - TNT1 A -1 - { - invoker.bNODEATHDESELECT = false; - let nw = player.mo.PickNextWeapon(); - // gross hack (don't prioritize Deep Impact if we have something better than it) - if ( nw is 'DeepImpact' ) - { - player.ReadyWeapon = nw; - nw = player.mo.PickNextWeapon(); - player.ReadyWeapon = invoker; - } - if ( nw != invoker ) player.PendingWeapon = nw; - RemoveInventory(invoker); - invoker.Destroy(); - } - Stop; - Reload: - Zoom: - XZW2 A 2 - { - A_StartSound("pusher/checkout",CHAN_WEAPON,CHANF_OVERLAP); - A_PlayerCheckGun(); - } - XZW3 XYZ 2; - XZW4 ABCDEFGHIJKLMNOPQR 2; - XZW4 STUVWXYZ 3; - Goto Ready; - User1: - XZW2 A 2 - { - A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); - A_PlayerMelee(); - } - XZW5 ABC 2; - XZW5 D 1 A_Parry(9); - XZW5 EFGH 1; - XZW5 I 0 A_Melee(70,"demolitionist/whitl",1.1,1.2,1.2); - XZW5 IJ 2; - XZW5 K 2 { invoker.PlayUpSound(self); } - XZW5 LM 2; - XZW5 NOPQ 3; - Goto Ready; - Deselect: - XZW2 B 2 A_StartSound("pusher/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 CDEF 2; - XZW2 F -1 A_FullLower(); - Stop; - } -} diff --git a/zscript/weapons/swwm_jackhammer_fx.zsc b/zscript/weapons/swwm_jackhammer_fx.zsc deleted file mode 100644 index 8ed2e02af..000000000 --- a/zscript/weapons/swwm_jackhammer_fx.zsc +++ /dev/null @@ -1,376 +0,0 @@ -// Pusher projectiles and effects - -Class PusherImpact : Actor -{ - Default - { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +NOTELEPORT; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - A_QuakeEx(2,2,2,12,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.3); - A_StartSound("pusher/hit",CHAN_VOICE); - A_SprayDecal("WallCrack",-20); - int numpt = Random[Pusher](1,3); - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); - for ( int i=0; i= (BlockingMobj.pos.x+BlockingMobj.radius) ) - HitNormal = (1,0,0); - else if ( (pos.y+radius) <= (BlockingMobj.pos.y-BlockingMobj.radius) ) - HitNormal = (0,-1,0); - else if ( (pos.y-radius) >= (BlockingMobj.pos.y+BlockingMobj.radius) ) - HitNormal = (0,1,0); - else if ( pos.z >= (BlockingMobj.pos.z+BlockingMobj.height) ) - HitNormal = (0,0,1); - else if ( (pos.z+height) <= BlockingMobj.pos.z ) - HitNormal = (0,0,-1); - } - // undo the bounce, we need to hook in our own - angle = oldangle; - pitch = oldpitch; - vel = oldvel; - // try to guess if we hit the sky - if ( HitSkyLine(BlockingLine,lineside) || (BlockingCeiling && (ceilingpic == skyflatnum)) || (BlockingFloor && (floorpic == skyflatnum)) ) - { - special1 = 0; - ExplodeMissile(); - return; - } - // re-do the bounce with our formula - vel = .8*((vel dot HitNormal)*HitNormal*(-1.8+FRandom[Pusher](.0,.8))+vel); - A_StartSound("pusher/bounce",volume:.3); - A_AlertMonsters(swwm_uncapalert?0:300); - if ( vel.length() < 5 ) - { - special1 = 0; - ExplodeMissile(); - } - } - void A_BecomePickup() - { - if ( special1 ) - { - // stuff from direct hit - FLineTraceData d; - LineTrace(angle,40,pitch,0,5,data:d); - Vector3 HitNormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; - else HitNormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; - else HitNormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) HitNormal *= -1; - } - let p = Spawn("BigPusherImpact",d.HitLocation+HitNormal*4); - p.angle = atan2(HitNormal.y,HitNormal.x); - p.pitch = asin(-HitNormal.z); - bool busted = false; - if ( swwm_omnibust ) - { - if ( BusterWall.BustLinetrace(d,100,target,d.HitDir,d.HitLocation.z) ) - busted = true; - } - if ( busted ) pitch = 0.; - else bNOGRAVITY = true; - } - else pitch = 0; - gravity = 1.; - ClearBounce(); - bSPECIAL = true; - A_SetSize(20,16); - A_ChangeLinkFlags(0); - A_StopSound(CHAN_BODY); - } - override int DoSpecialDamage( Actor target, int damage, Name damagetype ) - { - if ( target == lasthit ) return 0; - lasthit = target; - if ( target.bNOBLOOD || target.bDORMANT || target.bINVULNERABLE ) A_StartSound("pusher/althit",CHAN_WEAPON,CHANF_OVERLAP); - else A_StartSound("pusher/altmeat",CHAN_WEAPON,CHANF_OVERLAP); - target.A_QuakeEx(6,6,6,10,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.7); - SWWMUtility.DoKnockback(target,vel.unit(),85000); - return damage; - } - override void Touch( Actor toucher ) - { - if ( toucher.player && swwm_usetopickup && !bUsePickup ) - return; - // cannot pick up swapweapon unless explicitly pressing use - let pw = GetDefaultByType("PusherWeapon"); - SWWMWeapon sw; - if ( swwm_swapweapons && (sw = pw.HasSwapWeapon(toucher)) ) - { - if ( toucher.CheckLocalView() ) - Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),sw.GetTag(),StringTable.Localize("$T_PUSHER"))); - return; - } - let w = toucher.FindInventory("PusherWeapon"); - if ( toucher.player && w ) - { - let psp = toucher.player.GetPSPrite(PSP_WEAPON); - if ( psp && psp.CurState.InStateSequence(w.FindState("AltMiss")) ) - return; - } - if ( !toucher.player || !toucher.GiveInventory("PusherWeapon",1) ) return; - if ( toucher.CheckLocalView() ) - { - toucher.A_StartSound("misc/w_pkup",CHAN_ITEM,CHANF_NOPAUSE|CHANF_MAYBE_LOCAL); - let w = toucher.FindInventory("PusherWeapon"); - if ( w ) w.PrintPickupMessage(true,w.PickupMessage()); - } - else toucher.A_StartSound("misc/w_pkup",CHAN_ITEM,CHANF_MAYBE_LOCAL); - toucher.A_SelectWeapon("PusherWeapon"); - Spawn("SWWMRedPickupFlash",pos); - Destroy(); - } - override bool Used( Actor user ) - { - // test vertical range - Vector3 diff = level.Vec3Diff(user.Vec3Offset(0,0,user.Height/2),Vec3Offset(0,0,Height/2)); - double rang = user.player?PlayerPawn(user.player.mo).UseRange:(user.Height/2); - if ( abs(diff.z) > rang ) return false; - // if the toucher owns our SwapWeapon, drop it before picking us up - let pw = GetDefaultByType("PusherWeapon"); - SWWMWeapon sw; - if ( swwm_swapweapons && (sw = pw.HasSwapWeapon(user)) ) - { - bool swapto = false; - if ( sw == user.player.ReadyWeapon ) swapto = true; - user.DropInventory(sw); - // don't autoswitch just yet (hacky) - if ( swapto ) - { - user.player.ReadyWeapon = null; - user.player.PendingWeapon = WP_NOCHANGE; - } - } - bUsePickup = true; - Touch(user); - bUsePickup = false; - return bDestroyed; - } - States - { - Spawn: - XZW1 A 1 A_Reorient(); - Wait; - Bounce: - XZW1 A 0 A_HandleBounce(); - Goto Spawn; - Death: - XZW1 A 0 A_BecomePickup(); - XZW1 A 1 A_JumpIf(pos.z<=floorz,1); - Wait; - XZW1 A -1 A_StartSound("pusher/bounce"); - Stop; - } -} diff --git a/zscript/weapons/swwm_shot.zsc b/zscript/weapons/swwm_shot.zsc index d21d9602f..a168c91b0 100644 --- a/zscript/weapons/swwm_shot.zsc +++ b/zscript/weapons/swwm_shot.zsc @@ -3,7 +3,6 @@ Class SpreadgunTracer : LineTracer { - Actor ignoreme; Array hitlist; Array shootthroughlist; Array waterhitlist; @@ -13,29 +12,26 @@ Class SpreadgunTracer : LineTracer // liquid splashes if ( Results.CrossedWater ) { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; + let hl = new('WaterHit'); hl.hitpos = Results.CrossedWaterPos; WaterHitList.Push(hl); } else if ( Results.Crossed3DWater ) { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; + let hl = new('WaterHit'); hl.hitpos = Results.Crossed3DWaterPos; WaterHitList.Push(hl); } if ( Results.HitType == TRACE_HitActor ) { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; if ( Results.HitActor.bSHOOTABLE ) { int amt = SWWMDamageAccumulator.GetAmount(Results.HitActor); - // getgibhealth isn't clearscope, fuck + // getgibhealth isn't clearscope and that's a problem int gibh = (Results.HitActor.GibHealth!=int.min)?-abs(Results.HitActor.GibHealth):-int(Results.HitActor.GetSpawnHealth()*gameinfo.gibfactor); // if gibbed, go through without dealing more damage if ( Results.HitActor.health-amt <= gibh ) return TRACE_Skip; - let ent = new("HitListEntry"); + let ent = new('HitListEntry'); ent.hitactor = Results.HitActor; ent.hitlocation = Results.HitPos; ent.x = Results.HitVector; @@ -58,602 +54,268 @@ Class SpreadgunTracer : LineTracer } } -Class SpreadSlugTracer : SpreadgunTracer -{ - double penetration; // please don't laugh - - override ETraceStatus TraceCallback() - { - // liquid splashes - if ( Results.CrossedWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; - hl.hitpos = Results.CrossedWaterPos; - WaterHitList.Push(hl); - } - else if ( Results.Crossed3DWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; - hl.hitpos = Results.Crossed3DWaterPos; - WaterHitList.Push(hl); - } - if ( Results.HitType == TRACE_HitActor ) - { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; - if ( Results.HitActor.bSHOOTABLE ) - { - let ent = new("HitListEntry"); - ent.hitactor = Results.HitActor; - ent.hitlocation = Results.HitPos; - ent.x = Results.HitVector; - if ( (Results.HitActor.Health >= int(penetration)) || Results.HitActor.bNODAMAGE ) - { - ent.hitdamage = int(penetration); - penetration = 0; - } - else - { - int gibh = (Results.HitActor.GibHealth!=int.min)?-abs(Results.HitActor.GibHealth):-int(Results.HitActor.GetSpawnHealth()*gameinfo.gibfactor); - ent.hitdamage = min(Results.HitActor.health+abs(gibh),int(penetration)); - penetration = max(0,penetration-ent.hitdamage); - } - hitlist.Push(ent); - if ( penetration <= 0 ) return TRACE_Stop; - return TRACE_Skip; - } - return TRACE_Skip; - } - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) - { - if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) ) - return TRACE_Stop; - ShootThroughList.Push(Results.HitLine); - return TRACE_Skip; - } - return TRACE_Stop; - } -} - Class Spreadgun : SWWMWeapon { bool fired; // shell was used - transient bool wasfired; // for hammer priming + bool wasfired; // for hammer priming bool chambered; // a shell is actually loaded - bool emptyup; // next reload will keep the chamber empty - Class loadammo, nextammo; // currently loaded shell, next shell to load - ui Class lastammo; - bool initialized; - - transient ui TextureID WeaponBox, AmmoIcon[7], LoadedIcon[7]; - - override void HudTick() - { - Super.HudTick(); - if ( lastammo && (lastammo != nextammo) && (Owner.player == players[consoleplayer]) ) - { - let bar = SWWMStatusBar(statusbar); - if ( bar ) - { - bar.ntagstr = GetDefaultByType(nextammo).GetTag(); - bar.ntagtic = level.totaltime; - bar.ntagcol = nametagcolor; - } - } - lastammo = nextammo; - } + bool goldload; // a golden shell is loaded (buckshot otherwise) + bool wasgold; // for what ammo/shell to drop + bool loadgold; // hint for switching to gold shells on next load override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) { - if ( loadammo is 'RedShell' ) return StringTable.Localize("$O_SPREADGUN_RED"); - if ( loadammo is 'GreenShell' ) return StringTable.Localize("$O_SPREADGUN_GREEN"); - if ( loadammo is 'WhiteShell' ) return StringTable.Localize("$O_SPREADGUN_WHITE"); - if ( loadammo is 'BlueShell' ) return StringTable.Localize("$O_SPREADGUN_BLUE"); - if ( loadammo is 'BlackShell' ) return StringTable.Localize("$O_SPREADGUN_BLACK"); - if ( loadammo is 'PurpleShell' ) return StringTable.Localize("$O_SPREADGUN_PURPLE"); - if ( loadammo is 'GoldShell' ) return StringTable.Localize("$O_SPREADGUN_GOLD"); + if ( goldload ) return StringTable.Localize("$O_SPREADGUN_GOLD"); return Super.GetObituary(victim,inflictor,mod,playerattack); } - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + override void DoEffect() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - if ( !WeaponBox ) - { - WeaponBox = TexMan.CheckForTexture("graphics/HUD/SpreadgunDisplay.png",TexMan.Type_Any); - AmmoIcon[0] = TexMan.CheckForTexture("graphics/HUD/RedShell.png",TexMan.Type_Any); - AmmoIcon[1] = TexMan.CheckForTexture("graphics/HUD/GreenShell.png",TexMan.Type_Any); - AmmoIcon[2] = TexMan.CheckForTexture("graphics/HUD/WhiteShell.png",TexMan.Type_Any); - AmmoIcon[3] = TexMan.CheckForTexture("graphics/HUD/BlueShell.png",TexMan.Type_Any); - AmmoIcon[4] = TexMan.CheckForTexture("graphics/HUD/BlackShell.png",TexMan.Type_Any); - AmmoIcon[5] = TexMan.CheckForTexture("graphics/HUD/PurpleShell.png",TexMan.Type_Any); - AmmoIcon[6] = TexMan.CheckForTexture("graphics/HUD/GoldShell.png",TexMan.Type_Any); - LoadedIcon[0] = TexMan.CheckForTexture("graphics/HUD/LoadedRedShell.png",TexMan.Type_Any); - LoadedIcon[1] = TexMan.CheckForTexture("graphics/HUD/LoadedGreenShell.png",TexMan.Type_Any); - LoadedIcon[2] = TexMan.CheckForTexture("graphics/HUD/LoadedWhiteShell.png",TexMan.Type_Any); - LoadedIcon[3] = TexMan.CheckForTexture("graphics/HUD/LoadedBlueShell.png",TexMan.Type_Any); - LoadedIcon[4] = TexMan.CheckForTexture("graphics/HUD/LoadedBlackShell.png",TexMan.Type_Any); - LoadedIcon[5] = TexMan.CheckForTexture("graphics/HUD/LoadedPurpleShell.png",TexMan.Type_Any); - LoadedIcon[6] = TexMan.CheckForTexture("graphics/HUD/LoadedGoldShell.png",TexMan.Type_Any); - } - Screen.DrawTexture(WeaponBox,false,bx-54,by-43,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int ox = 6; - int oy = 11; - for ( int i=0; i<7; i++ ) - { - Screen.DrawTexture(AmmoIcon[i],false,bx-ox,by-oy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(types[i]==nextammo)?Color(0,0,0,0):Color(128,0,0,0)); - String astr = String.Format("%3d",Owner.CountInv(types[i])); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-ox-(smallfont.StringWidth(astr)+1),by-oy-1,astr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(types[i]==nextammo)?Color(0,0,0,0):Color(128,0,0,0)); - oy += 10; - if ( i == 3 ) - { - oy = 21; - ox = 33; - } - } - if ( !chambered ) return; - for ( int i=0; i<7; i++ ) - { - if ( loadammo != types[i] ) continue; - Screen.DrawTexture(LoadedIcon[i],false,bx-48,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fired?Color(128,0,0,0):Color(0,0,0,0)); - break; - } + Super.DoEffect(); + // push back selection order if weapon is unloaded (or has a golden shell loaded) + if ( !bInitialized ) SelectionOrder = default.SelectionOrder; + else SelectionOrder = (chambered&&!fired&&!goldload)?default.SelectionOrder:1500; } override bool ReportHUDAmmo() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - for ( int i=0; i<7; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; - return (!fired && chambered); + if ( !fired && chambered ) return true; + return Super.ReportHUDAmmo(); } override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - if ( (firemode == PrimaryFire) || (firemode == AltFire) ) + if ( (firemode == PrimaryFire) || (firemode == EitherFire) ) { if ( !fired && chambered ) return true; - for ( int i=0; i<7; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; + if ( (Ammo1.Amount > 0) || (Ammo2.Amount > 0) ) return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); return false; } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } - override bool UsesAmmo( Class kind ) - { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - for ( int i=0; i<7; i++ ) if ( kind is types[i] ) return true; - return false; - } - action void A_SelectUnloadState() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - static const statelabel primedstates[] = {"UnloadRed", "UnloadGreen", "UnloadWhite", "UnloadBlue", "UnloadBlack", "UnloadPurple", "UnloadGold"}; - static const statelabel firedstates[] = {"UnloadRedFired", "UnloadGreenFired", "UnloadWhiteFired", "UnloadBlueFired", "UnloadBlackFired", "UnloadPurpleFired", "UnloadGoldFired"}; - int amidx = 0; - for ( int i=0; i<7; i++ ) + if ( invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState('UnloadFired')); + else player.SetPSprite(PSP_WEAPON,invoker.FindState('Unload')); + if ( invoker.chambered ) { - if ( invoker.loadammo != types[i] ) continue; - amidx = i; - break; + A_ChangeModel("",1,"","",4,"models",String.Format("Shell_%s%s.png",invoker.wasgold?"Gold":"Normal",invoker.fired?"_Used":""),CMDL_USESURFACESKIN,-1); + A_Overlay(-9999,'UnloadDummy'); + } + else + { + A_ChangeModel("",1,"","",4,"models","",CMDL_USESURFACESKIN,-1); + A_Overlay(-9999,'UnloadDummyEmpty'); } - if ( !invoker.chambered ) player.SetPSprite(PSP_WEAPON,invoker.FindState("UnloadEmpty")); // no "fired" one for this, as it can never happen - else if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState(primedstates[amidx])); - else player.SetPSprite(PSP_WEAPON,invoker.FindState(firedstates[amidx])); - if ( invoker.chambered ) A_Overlay(-9999,"UnloadDummy"); - else A_Overlay(-9999,"UnloadDummyEmpty"); A_StartSound("spreadgun/deselect",CHAN_WEAPON,CHANF_OVERLAP); } action void A_SelectLoadState() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - static const statelabel primedstates[] = {"LoadRed", "LoadGreen", "LoadWhite", "LoadBlue", "LoadBlack", "LoadPurple", "LoadGold"}; - static const statelabel firedstates[] = {"LoadRedFired", "LoadGreenFired", "LoadWhiteFired", "LoadBlueFired", "LoadBlackFired", "LoadPurpleFired", "LoadGoldFired"}; - int amidx = 0; - for ( int i=0; i<7; i++ ) - { - if ( invoker.nextammo != types[i] ) continue; - amidx = i; - break; - } invoker.wasfired = false; - if ( invoker.emptyup ) - { - if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState("LoadEmpty")); - else player.SetPSprite(PSP_WEAPON,invoker.FindState("LoadEmptyFired")); - } - else if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState(primedstates[amidx])); - else + A_ChangeModel("",1,"","",4,"models","",CMDL_USESURFACESKIN,-1); + A_ChangeModel("",1,"","",5,"models",String.Format("Shell_%s.png",invoker.loadgold?"Gold":"Normal"),CMDL_USESURFACESKIN,-1); + if ( invoker.fired ) { invoker.wasfired = true; - player.SetPSprite(PSP_WEAPON,invoker.FindState(firedstates[amidx])); + player.SetPSprite(PSP_WEAPON,invoker.FindState('LoadFired')); } - if ( invoker.emptyup ) A_Overlay(-9999,"LoadDummyEmpty"); - else A_Overlay(-9999,"LoadDummy"); - invoker.emptyup = false; + else player.SetPSprite(PSP_WEAPON,invoker.FindState('Load')); + A_Overlay(-9999,'LoadDummy'); } action void A_DropShell() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - static const Class casetypes[] = {"RedShellCasing","GreenShellCasing","WhiteShellCasing","BlueShellCasing","BlackShellCasing","PurpleShellCasing","GoldShellCasing"}; if ( !invoker.fired ) { - for ( int i=0; i<7; i++ ) - { - if ( invoker.loadammo != types[i] ) continue; - let amo = FindInventory(types[i]); - if ( !amo ) - { - amo = Inventory(Spawn(types[i])); - amo.AttachToOwner(self); - amo.Amount = 0; - } - if ( (amo.Amount >= amo.MaxAmount) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) - amo.CreateTossable(1); - amo.Amount++; - break; - } - } - else - { - for ( int i=0; i<7; i++ ) - { - if ( invoker.loadammo != types[i] ) continue; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-10*z); - let c = Spawn(casetypes[i],origin); - c.angle = angle; - c.pitch = pitch; - c.vel = x*FRandom[Junk](-.2,.2)+y*FRandom[Junk](-.2,.2)-(0,0,FRandom[Junk](2,3)); - c.vel += vel*.5; - break; - } + let amo = invoker.wasgold?invoker.Ammo2:invoker.Ammo1; + let amotype = invoker.wasgold?invoker.AmmoType2:invoker.AmmoType1; + if ( (amo.Amount >= amo.MaxAmount) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + invoker.BufferAmmo(amotype,1); + else amo.Amount = min(amo.Amount+1,amo.MaxAmount); + return; } + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,0,-10); + let c = Spawn(invoker.wasgold?'GoldShellCasing':'RedShellCasing',origin); + c.angle = angle; + c.pitch = pitch; + c.vel = x*FRandom[Junk](-.2,.2)+y*FRandom[Junk](-.2,.2)-(0,0,FRandom[Junk](2,3)); + c.vel += vel*.5; } - action void ProcessTraceHit( SpreadgunTracer t, Vector3 origin, Vector3 dir, int dmg, double mm, Class impact = "SpreadImpact", int bc = 1, bool large = false ) + action void ProcessTraceHit( SpreadgunTracer t, Vector3 origin, Vector3 dir, int dmg, double mm, Class impact = 'SpreadImpact', int bc = 1 ) { if ( swwm_omnibust ) { // Wall busting int bustdmg = dmg; - if ( t is 'SpreadSlugTracer' ) bustdmg = int(SpreadSlugTracer(t).penetration); BusterWall.Bust(t.Results,bustdmg,self,t.Results.HitVector,t.Results.HitPos.z); } - for ( int i=0; i types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - static const statelabel flashes[] = {"FlashRed","FlashGreen","FlashWhite","FlashBlue","FlashBlack","FlashPurple","FlashGold"}; - static const String sounds[] = {"spreadgun/redfire","spreadgun/greenfire","spreadgun/whitefire","spreadgun/bluefire","spreadgun/blackfire","spreadgun/purplefire","spreadgun/goldfire"}; - static const int louds[] = {800,1000,1100,1200,1400,600,2500}; - static const int quakes[] = {3,4,2,4,3,1,6}; - static const Color cols[] = {Color(40,255,192,64),Color(36,255,192,80),Color(64,255,160,32),Color(48,32,176,255),Color(72,255,128,16),Color(24,255,224,96),Color(96,255,224,16)}; - for ( int i=0; i<7; i++ ) + if ( invoker.goldload ) { - if ( invoker.loadammo != types[i] ) continue; - A_SWWMFlash(flashes[i]); - A_StartSound(sounds[i],CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); - A_AlertMonsters(swwm_uncapalert?0:louds[i]); - A_QuakeEx(quakes[i],quakes[i],quakes[i],9,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2*quakes[i]); - A_BumpFOV(1.-quakes[i]*.04); - A_PlayerFire(); - SWWMHandler.DoFlash(self,cols[i],5); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-2*z); - Vector3 x2, y2, z2; - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - double a, s; - Vector3 dir; - SpreadgunTracer st; - SpreadSlugTracer sst; - switch ( i ) + A_SWWMFlash('FlashGold'); + A_StartSound("spreadgun/goldfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); + A_AlertMonsters(swwm_uncapalert?0:2500); + A_QuakeEx(6.,6.,6.,12,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.2); + A_BumpFOV(.76); + A_BumpView(-4); + SWWMHandler.DoFlash(self,Color(96,255,224,16),5); + } + else + { + A_SWWMFlash('FlashRed'); + A_StartSound("spreadgun/redfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); + A_AlertMonsters(swwm_uncapalert?0:800); + A_QuakeEx(2.5,2.5,2.5,8,0,1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.6); + A_BumpFOV(.93); + A_BumpView(-1); + SWWMHandler.DoFlash(self,Color(40,255,192,64),5); + } + A_PlayerFire(); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,2,-2); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + double a, s; + Vector3 dir; + if ( invoker.goldload ) + { + a = FRandom[Spreadgun](0,360); + s = FRandom[Spreadgun](0,.01); + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + FLineTraceData d; + LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + SWWMBulletTrail.DoTrail(self,origin,dir,10000,2,true); + if ( d.HitType != TRACE_HitNone ) { - case 1: - sst = new("SpreadSlugTracer"); - sst.ignoreme = self; - sst.penetration = 200.; - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.01); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - sst.hitlist.Clear(); - sst.shootthroughlist.Clear(); - sst.waterhitlist.Clear(); - sst.Trace(origin,level.PointInSector(origin.xy),dir,8000.,TRACE_HitSky); - ProcessTraceHit(sst,origin,dir,0,12000,"SlugImpact",1,true); - for ( int i=0; i<6; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.scale *= .8; - s.alpha *= .3; - s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.); - } - for ( int i=0; i<10; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .2; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - SWWMUtility.DoKnockback(self,-x,25000.); - break; - case 2: - for ( int j=0; j<3; j++ ) - { - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.24); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn("DragonBreathArm",origin); - p.target = self; - p.angle = atan2(dir.y,dir.x); - p.pitch = asin(-dir.z); - } - for ( int i=0; i<15; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.special1 = 1; - s.scale *= .9; - s.alpha *= .3; - s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - for ( int i=0; i<12; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .3; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-2,2)+z*FRandom[Spreadgun](-2,2); - } - SWWMUtility.DoKnockback(self,-x,13000.); - break; - case 3: - for ( int j=0; j<8; j++ ) - { - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.3); - let b = Spawn("SaltBeam",level.Vec3Offset(origin,y*cos(a)*s+z*sin(a)*s)); - b.target = self; - b.angle = atan2(x2.y,x2.x); - b.pitch = asin(-x2.z); - } - for ( int i=0; i<16; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.special1 = 1; - s.scale *= .9; - s.SetShade(Color(1,3,4)*Random[Spreadgun](32,63)); - s.A_SetRenderStyle(.3,STYLE_AddShaded); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - for ( int i=0; i<20; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .3; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-2,2)+z*FRandom[Spreadgun](-2,2); - } - SWWMUtility.DoKnockback(self,-x,23000.); - break; - case 4: - for ( int j=0; j<50; j++ ) - { - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.1); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn("CorrosiveFlechette",origin); - p.target = self; - p.angle = atan2(dir.y,dir.x); - p.pitch = asin(-dir.z); - p.vel = dir*p.speed*FRandom[Spreadgun](1.,1.5); - } - for ( int i=0; i<10; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.scale *= .7; - s.alpha *= .3; - s.SetShade(Color(1,1,1)*Random[Spreadgun](48,128)); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,12.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - for ( int i=0; i<20; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .3; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,12.)+y*FRandom[Spreadgun](-2,2)+z*FRandom[Spreadgun](-2,2); - } - SWWMUtility.DoKnockback(self,-x,15000.); - break; - case 5: - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.03); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let b = Spawn("TheBall",origin); + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + let p = Spawn('SWWMBulletImpact',d.HitLocation+hitnormal); + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + p.target = self; + if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + let b = Spawn('GoldenImpact',d.HitLocation+hitnormal*4.); + b.angle = atan2(hitnormal.y,hitnormal.x); + b.pitch = asin(-hitnormal.z); b.target = self; - b.angle = atan2(dir.y,dir.x); - b.pitch = asin(-dir.z); - b.vel = dir*b.speed; - for ( int i=0; i<8; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.scale *= .6; - s.alpha *= .25; - s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.); - } - for ( int i=0; i<8; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .2; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - SWWMUtility.DoKnockback(self,-x,9500.); - break; - case 6: - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.01); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - FLineTraceData d; - LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION|TRF_NOSKY,origin.z,origin.x,origin.y,d); - SWWMBulletTrail.DoTrail(self,origin,dir,10000,2,true); - if ( d.HitType != TRACE_HitNone ) - { - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } - let p = Spawn("SlugImpact",d.HitLocation+hitnormal); - p.angle = atan2(hitnormal.y,hitnormal.x); - p.pitch = asin(-hitnormal.z); - if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); - let b = Spawn("GoldenImpact",d.HitLocation+hitnormal*4.); - b.angle = atan2(hitnormal.y,hitnormal.x); - b.pitch = asin(-hitnormal.z); - b.target = self; - } - for ( int i=0; i<6; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.scale *= .8; - s.alpha *= .3; - s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.); - } - for ( int i=0; i<10; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .2; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - for ( int i=0; i<50; i++ ) - { - let s = Spawn("FancyConfetti",origin); - s.bAMBUSH = true; - s.vel += vel*.5+x*FRandom[Spreadgun](1.,20.)+y*FRandom[Spreadgun](-2,2)+z*FRandom[Spreadgun](-2,2); - } - SWWMUtility.DoKnockback(self,-x,30000.); - SWWMUtility.AchievementProgressInc("golden",1,player); - break; - default: - st = new("SpreadgunTracer"); - st.ignoreme = self; - for ( int j=0; j<20; j++ ) - { - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.12); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - st.hitlist.Clear(); - st.shootthroughlist.Clear(); - st.waterhitlist.Clear(); - st.Trace(origin,level.PointInSector(origin.xy),dir,8000.,TRACE_HitSky); - ProcessTraceHit(st,origin,dir,8,7000,bc:5); - } - for ( int i=0; i<16; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.special1 = 1; - s.scale *= .9; - s.alpha *= .3; - s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - for ( int i=0; i<20; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .3; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-2,2)+z*FRandom[Spreadgun](-2,2); - } - SWWMUtility.DoKnockback(self,-x,20000.); - break; } - break; + for ( int i=0; i<6; i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.scale *= .8; + s.alpha *= .3; + s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); + s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.); + } + for ( int i=0; i<10; i++ ) + { + let s = Spawn('SWWMSpark',origin); + s.scale *= .2; + s.alpha *= .4; + s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); + } + for ( int i=0; i<50; i++ ) + { + let s = Spawn('FancyConfetti',origin); + s.bAMBUSH = true; + s.vel += vel*.5+x*FRandom[Spreadgun](1.,20.)+y*FRandom[Spreadgun](-2,2)+z*FRandom[Spreadgun](-2,2); + } + SWWMUtility.DoKnockback(self,-x,30000.); + SWWMUtility.AchievementProgressInc("golden",1,player); + } + else + { + SpreadgunTracer st = new('SpreadgunTracer'); + for ( int j=0; j<20; j++ ) + { + a = FRandom[Spreadgun](0,360); + s = FRandom[Spreadgun](0,.12); + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + st.hitlist.Clear(); + st.shootthroughlist.Clear(); + st.waterhitlist.Clear(); + st.Trace(origin,level.PointInSector(origin.xy),dir,8000.,0,ignore:self); + ProcessTraceHit(st,origin,dir,10,7000,bc:5); + } + for ( int i=0; i<16; i++ ) + { + let s = Spawn('SWWMSmoke',origin); + s.special1 = 1; + s.scale *= .9; + s.alpha *= .3; + s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); + s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); + } + for ( int i=0; i<20; i++ ) + { + let s = Spawn('SWWMSpark',origin); + s.scale *= .3; + s.alpha *= .4; + s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-2,2)+z*FRandom[Spreadgun](-2,2); + } + SWWMUtility.DoKnockback(self,-x,20000.); } A_StartSound("spreadgun/hammer",CHAN_WEAPON,CHANF_OVERLAP); invoker.fired = true; @@ -661,31 +323,51 @@ Class Spreadgun : SWWMWeapon action void A_LoadShell() { + A_ChangeModel("",1,"","",5,"models","",CMDL_USESURFACESKIN,-1); + A_ChangeModel("",1,"","",4,"models",String.Format("Shell_%s.png",invoker.loadgold?"Gold":"Normal"),CMDL_USESURFACESKIN,-1); A_StartSound("spreadgun/shellin",CHAN_WEAPON,CHANF_OVERLAP); - if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + invoker.goldload = invoker.loadgold; + invoker.loadgold = false; + let amot = invoker.goldload?invoker.AmmoType2:invoker.AmmoType1; + if ( !invoker.FetchBufferedAmmo(amot,1) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) { - let amo = FindInventory(invoker.nextammo); - if ( amo && (amo.Amount > 0) ) amo.Amount--; + let amo = invoker.goldload?invoker.Ammo2:invoker.Ammo1; + if ( amo.Amount > 0 ) amo.Amount--; } invoker.chambered = true; invoker.fired = false; - invoker.loadammo = invoker.nextammo; + invoker.ClearBufferedAmmo(); } action void A_Prime() { if ( invoker.fired || invoker.wasfired ) - { A_StartSound("spreadgun/hammer",CHAN_WEAPON,CHANF_OVERLAP); - } + A_ChangeModel("",1,"","",5,"models","",CMDL_USESURFACESKIN,-1); + } + + action State A_SpreadgunReady() + { + int flg = WRF_ALLOWZOOM|WRF_ALLOWUSER1|WRF_NOSECONDARY; + if ( ((invoker.Ammo1.Amount > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true)) && (invoker.fired || !invoker.chambered || invoker.goldload) ) + flg |= WRF_ALLOWRELOAD; + if ( ((invoker.Ammo2.Amount > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true)) && (invoker.fired || !invoker.chambered || !invoker.goldload) ) + flg &= ~WRF_NOSECONDARY; + if ( ((invoker.Ammo1.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true)) && (invoker.fired || !invoker.chambered) ) + flg |= WRF_NOPRIMARY; + A_WeaponReady(flg); + if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) ) + invoker.CheckAmmo(EitherFire,true); + return ResolveState(null); } override bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon ) { bool good = Super.PickupForAmmoSWWM(ownedWeapon); let Owner = ownedWeapon.Owner; - if ( (AmmoGive1 == 0) && loadammo && !fired && chambered ) + if ( (AmmoGive1 == 0) && !fired && chambered ) { + let loadammo = goldload?AmmoType2:AmmoType1; let cur = Owner.FindInventory(loadammo); if ( !cur ) { @@ -701,89 +383,11 @@ Class Spreadgun : SWWMWeapon return good; } - override void AttachToOwner( Actor other ) + override void InitializeWeapon() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - if ( !initialized ) - { - initialized = true; - if ( !loadammo ) loadammo = "RedShell"; - fired = false; - chambered = true; - } - for ( int i=0; i<7; i++ ) - { - Ammo a = Ammo(other.FindInventory(types[i])); - if ( !a ) continue; - nextammo = types[i]; - Super.AttachToOwner(other); - return; - } - nextammo = AmmoType1; - Super.AttachToOwner(other); - } - - action void A_SwitchAmmoType( bool rev = false ) - { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - int cur = 0, next = 0; - for ( int i=0; i<7; i++ ) - { - if ( invoker.nextammo != types[i] ) continue; - cur = i; - break; - } - int ridx = -1; - if ( rev ) - { - // check backwards from what we currently had - for ( int i=cur; i>=0; i-- ) - { - if ( CountInv(types[i]) <= 0 ) continue; - ridx = i; - break; - } - if ( ridx == -1 ) - { - // check forwards instead, but avoid golden shells - for ( int i=0; i<6; i++ ) - { - if ( CountInv(types[i]) <= 0 ) continue; - ridx = i; - break; - } - } - if ( ridx != -1 ) next = ridx; - } - else - { - for ( int i=0; i<7; i++ ) - { - ridx = (i+cur+1)%7; - if ( CountInv(types[ridx]) <= 0 ) continue; - next = ridx; - break; - } - } - if ( invoker.nextammo != types[next] ) A_StartSound("misc/invchange",CHAN_WEAPONEXTRA,CHANF_UI|CHANF_LOCAL); - invoker.nextammo = types[next]; - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - } - - action void A_AltHold() - { - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - // tap fire to unload round - if ( invoker.chambered && (player.cmd.buttons&BT_ATTACK) ) - { - invoker.emptyup = true; - player.SetPSPrite(PSP_WEAPON,invoker.FindState("Reload")); - return; - } - if ( player.cmd.buttons&BT_ALTATTACK ) return; - A_SwitchAmmoType(); - if ( !invoker.fired ) player.SetPSPrite(PSP_WEAPON,invoker.FindState("Ready")); - else player.SetPSPrite(PSP_WEAPON,invoker.FindState("ReadyFired")); + fired = false; + chambered = true; + goldload = false; } override void ModifyDropAmount( int dropamount ) @@ -791,7 +395,12 @@ Class Spreadgun : SWWMWeapon Super.ModifyDropAmount(dropamount); // toss some ammo while we're at it if ( Random[Spreadgun](0,1) ) - A_DropItem(Random[Spreadgun](0,2)?"RedShell":"GreenShell",Random[Spreadgun](1,2)); + A_DropItem('RedShell',Random[Spreadgun](1,2)); + } + + action void A_UpdatePickup() + { + frame = invoker.fired; } override void MarkPrecacheSounds() @@ -805,16 +414,6 @@ Class Spreadgun : SWWMWeapon MarkSound("spreadgun/deselect"); MarkSound("spreadgun/redfire1"); MarkSound("spreadgun/redfire2"); - MarkSound("spreadgun/greenfire1"); - MarkSound("spreadgun/greenfire2"); - MarkSound("spreadgun/whitefire1"); - MarkSound("spreadgun/whitefire2"); - MarkSound("spreadgun/bluefire1"); - MarkSound("spreadgun/bluefire2"); - MarkSound("spreadgun/blackfire1"); - MarkSound("spreadgun/blackfire2"); - MarkSound("spreadgun/purplefire1"); - MarkSound("spreadgun/purplefire2"); MarkSound("spreadgun/goldfire1"); MarkSound("spreadgun/goldfire2"); MarkSound("spreadgun/checkgun"); @@ -841,125 +440,81 @@ Class Spreadgun : SWWMWeapon MarkSound("spreadgun/pelletf4"); MarkSound("spreadgun/pelletf5"); MarkSound("spreadgun/pelletf6"); - MarkSound("spreadgun/slug1"); - MarkSound("spreadgun/slug2"); - MarkSound("spreadgun/slugf1"); - MarkSound("spreadgun/slugf2"); - MarkSound("spreadgun/corrode"); - MarkSound("spreadgun/corrodepuff1"); - MarkSound("spreadgun/corrodepuff2"); - MarkSound("spreadgun/ball1"); - MarkSound("spreadgun/ball2"); - MarkSound("spreadgun/ball3"); - MarkSound("spreadgun/ballf1"); - MarkSound("spreadgun/ballf2"); - MarkSound("spreadgun/ballf3"); - MarkSound("spreadgun/salt1"); - MarkSound("spreadgun/salt2"); - MarkSound("spreadgun/salt3"); - MarkSound("spreadgun/salt4"); - MarkSound("spreadgun/salttrail1"); - MarkSound("spreadgun/salttrail2"); - MarkSound("spreadgun/salttrail3"); - MarkSound("spreadgun/salttrail4"); MarkSound("spreadgun/goldexpl1"); MarkSound("spreadgun/goldexpl2"); - MarkSound("misc/clonk1"); - MarkSound("misc/clonk2"); - MarkSound("misc/clonk3"); - MarkSound("misc/clonk4"); - MarkSound("misc/clonk5"); - MarkSound("misc/clonk6"); - MarkSound("misc/clonk7"); - MarkSound("misc/clonk8"); - MarkSound("misc/clonk9"); - MarkSound("misc/clonk10"); - MarkSound("misc/clonk11"); } Default { - //$Title Spreadgun - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_Spreadgun.png - //$Icon weapon Tag "$T_SPREADGUN"; + Inventory.Icon "graphics/HUD/Icons/W_Spreadgun.png"; Inventory.PickupMessage "$I_SPREADGUN"; Obituary "$O_SPREADGUN"; SWWMWeapon.Tooltip "$TT_SPREADGUN"; SWWMWeapon.GetLine "getspreadgun"; - Inventory.Icon "graphics/HUD/Icons/W_Spreadgun.png"; Weapon.UpSound "spreadgun/select"; Weapon.SlotNumber 3; Weapon.SelectionOrder 500; - Weapon.AmmoType1 "RedShell"; + Weapon.AmmoType1 'RedShell'; Weapon.AmmoGive1 1; - SWWMWeapon.DropAmmoType "Shell"; + Weapon.AmmoType2 'GoldShell'; + Weapon.AmmoGive2 0; + SWWMWeapon.DropAmmoType 'SWWMShellAmmoSmall'; Stamina 15000; +SWWMWEAPON.NOFIRSTGIVE; - Radius 10; - Height 24; } States { Spawn: - XZW1 A -1; + XZW1 A -1 NoDelay A_UpdatePickup(); Stop; Deselect: XZW2 A 1 { A_StartSound("spreadgun/deselect",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.fired,"DeselectFired"); + A_BumpView(-.1); + return A_JumpIf(invoker.fired,'DeselectFired'); } - XZW2 BCDEFGHI 1; + XZW2 BCD 1 A_BumpView(.1); + XZW2 EF 1 A_BumpView(.2); + XZW2 GH 1 A_BumpView(.3); XZW2 I -1 A_FullLower(); Stop; DeselectFired: - XZW2 Z 1; - XZW3 ABCDEFGH 1; + XZW2 Z 1 A_BumpView(-.1); + XZW3 ABC 1 A_BumpView(.1); + XZW3 DE 1 A_BumpView(.2); + XZW3 FG 1 A_BumpView(.3); XZW3 H -1 A_FullLower(); Stop; Select: XZW2 I 1 { A_FullRaise(); - return A_JumpIf(invoker.fired,"SelectFired"); + A_BumpView(.2); + return A_JumpIf(invoker.fired,'SelectFired'); } - XZW2 JKLMNOPQ 1; + XZW2 JKL 1 A_BumpView(-.1); + XZW2 MNO 1 A_BumpView(-.2); + XZW2 PQ 1 A_BumpView(.1); Goto Ready; SelectFired: - XZW3 HIJKLMNOP 1; + XZW3 H 1 A_BumpView(.2); + XZW3 IJK 1 A_BumpView(-.1); + XZW3 LMN 1 A_BumpView(-.2); + XZW3 OP 1 A_BumpView(.1); Goto ReadyFired; Ready: - XZW2 A 1 - { - if ( CountInv(invoker.nextammo) <= 0 ) A_SwitchAmmoType(true); - int flg = WRF_ALLOWZOOM|WRF_ALLOWUSER1; - if ( invoker.nextammo && (CountInv(invoker.nextammo) > 0) && ((invoker.loadammo != invoker.nextammo) || !invoker.chambered) ) - flg |= WRF_ALLOWRELOAD; - A_WeaponReady(flg); - return ResolveState(null); - } + XZW2 A 1 A_SpreadgunReady(); Wait; ReadyFired: - XZW2 Z 1 - { - if ( CountInv(invoker.nextammo) <= 0 ) A_SwitchAmmoType(true); - int flg = WRF_ALLOWZOOM|WRF_ALLOWUSER1; - if ( invoker.nextammo && (CountInv(invoker.nextammo) > 0) ) - flg |= WRF_ALLOWRELOAD; - else flg |= WRF_NOPRIMARY; - A_WeaponReady(flg); - if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) ) - invoker.CheckAmmo(EitherFire,true); - return ResolveState(null); - } + XZW2 Z 1 A_SpreadgunReady(); Wait; Fire: - #### # 1 + XZW2 A 1 { - if ( invoker.fired || !invoker.chambered ) return ResolveState("Reload"); + if ( invoker.fired || !invoker.chambered ) return ResolveState('Reload'); A_FireShell(); return ResolveState(null); } @@ -967,12 +522,20 @@ Class Spreadgun : SWWMWeapon XZW2 VWXY 2; Goto ReadyFired; AltFire: - #### # 1 A_AltHold(); - Wait; - Reload: - #### # 1 + #### # -1 { A_PlayerReload(); + invoker.wasgold = invoker.goldload; + invoker.loadgold = true; + A_SelectUnloadState(); + } + Stop; + Reload: + #### # -1 + { + A_PlayerReload(); + invoker.wasgold = invoker.goldload; + invoker.loadgold = false; A_SelectUnloadState(); } Stop; @@ -989,108 +552,24 @@ Class Spreadgun : SWWMWeapon TNT1 A 11; TNT1 A 14 A_StartSound("spreadgun/open",CHAN_WEAPON,CHANF_OVERLAP); Stop; - UnloadRedFired: + UnloadFired: XZW2 Z 2; XZW3 QRST 2; XZW3 UVWXYZ 1; XZW4 ABCDEFGH 1; - XZW8 M 1; + XZW4 I 1; Goto Reload2; - UnloadGreenFired: - XZW2 Z 2; - XZW4 IJKL 2; - XZW4 MNOPQRSTUVWXYZ 1; - XZW9 T 1; - Goto Reload2; - UnloadWhiteFired: - XZW2 Z 2; - XZW5 ABCD 2; - XZW5 EFGHIJKLMNOPQR 1; - XZWB A 1; - Goto Reload2; - UnloadBlueFired: - XZW2 Z 2; - XZW5 STUV 2; - XZW5 WXYZ 1; - XZW6 ABCDEFGHIJ 1; - XZWC H 1; - Goto Reload2; - UnloadBlackFired: - XZW2 Z 2; - XZW6 KLMN 2; - XZW6 OPQRSTUVWXYZ 1; - XZW7 AB 1; - XZWD O 1; - Goto Reload2; - UnloadPurpleFired: - XZW2 Z 2; - XZW7 CDEF 2; - XZW7 GHIJKLMNOPQRST 1; - XZWE V 1; - Goto Reload2; - UnloadGoldFired: - XZW2 Z 2; - XZW7 UVWX 2; - XZW7 YZ 1; - XZW8 ABCDEFGHIJKL 1; - XZWG C 1; - Goto Reload2; - UnloadRed: + Unload: XZW2 A 2; - XZWK JKLM 2; - XZWK NOPQRSTUVWXYZ 1; - XZWL A 1; - XZWP F 1; - Goto Reload2; - UnloadGreen: - XZW2 A 2; - XZWL BCDE 2; - XZWL FGHIJKLMNOPQRS 1; - XZWQ M 1; - Goto Reload2; - UnloadWhite: - XZW2 A 2; - XZWL TUVW 2; - XZWL XYZ 1; - XZWM ABCDEFGHIJK 1; - XZWR T 1; - Goto Reload2; - UnloadBlue: - XZW2 A 2; - XZWM LMNO 2; - XZWM PQRSTUVWXYZ 1; - XZWN ABC 1; - XZWT A 1; - Goto Reload2; - UnloadBlack: - XZW2 A 2; - XZWN DEFG 2; - XZWN HIJKLMNOPQRSTU 1; - XZWU H 1; - Goto Reload2; - UnloadPurple: - XZW2 A 2; - XZWN VWXY 2; - XZWN Z 1; - XZWO ABCDEFGHIJKLM 1; - XZWV O 1; - Goto Reload2; - UnloadGold: - XZW2 A 2; - XZWO NOPQ 2; - XZWO RSTUVWXYZ 1; - XZWP ABCDE 1; - XZWW V 1; - Goto Reload2; - UnloadEmpty: - XZW2 A 2; - XZWY CDEF 2; - XZWY GHIJKLMNOPQRSTU 1; + XZW9 PQRS 2; + XZW9 TUVWXYZ 1; + XZWA ABCDEFG 1; + XZWA H 1; Goto Reload2; Reload2: - #### # 1 A_SelectLoadState(); + #### # -1 A_SelectLoadState(); Stop; - LoadDummy: // overlay with shared functions for all load anims + LoadDummy: TNT1 A 9; TNT1 A 12 A_LoadShell(); TNT1 A 2 A_StartSound("spreadgun/close",CHAN_WEAPON,CHANF_OVERLAP); @@ -1103,90 +582,34 @@ Class Spreadgun : SWWMWeapon TNT1 A 2 A_Prime(); TNT1 A 1 { invoker.PlayUpSound(self); } Stop; - LoadRedFired: - XZW8 MNOPQRSTUVWXYZ 1; - XZW9 ABCDEFGHIJKLMNOPQRS 1; + LoadFired: + XZW4 IJKLMNOPQRSTUVWXYZ 1; + XZW5 ABCDEFGHIJKLMNO 1; Goto Ready; - LoadGreenFired: - XZW9 TUVWXYZ 1; - XZWA ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; - Goto Ready; - LoadWhiteFired: - XZWB ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; - XZWC ABCDEFG 1; - Goto Ready; - LoadBlueFired: - XZWC HIJKLMNOPQRSTUVWXYZ 1; - XZWD ABCDEFGHIJKLMN 1; - Goto Ready; - LoadBlackFired: - XZWD OPQRSTUVWXYZ 1; - XZWE ABCDEFGHIJKLMNOPQRSTU 1; - Goto Ready; - LoadPurpleFired: - XZWE VWXYZ 1; - XZWF ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; - XZWG AB 1; - Goto Ready; - LoadGoldFired: - XZWG CDEFGHIJKLMNOPQRSTUVWXYZ 1; - XZWH ABCDEFGHI 1; - Goto Ready; - LoadRed: - XZWP FGHIJKLMNOPQRSTUVWXYZ 1; - XZWQ ABCDEFGHIJKL 1; - Goto Ready; - LoadGreen: - XZWQ MNOPQRSTUVWXYZ 1; - XZWR ABCDEFGHIJKLMNOPQRS 1; - Goto Ready; - LoadWhite: - XZWR TUVWXYZ 1; - XZWS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; - Goto Ready; - LoadBlue: - XZWT ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; - XZWU ABCDEFG 1; - Goto Ready; - LoadBlack: - XZWU HIJKLMNOPQRSTUVWXYZ 1; - XZWV ABCDEFGHIJKLMN 1; - Goto Ready; - LoadPurple: - XZWV OPQRSTUVWXYZ 1; - XZWW ABCDEFGHIJKLMNOPQRSTU 1; - Goto Ready; - LoadGold: - XZWW VWXYZ 1; - XZWX ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; - XZWY AB 1; - Goto Ready; - LoadEmpty: - XZWY UVWXYZ 1; - XZWZ ABCDEFGHIJKLMNO 1; - Goto Ready; - LoadEmptyFired: - XZWZ PQRSTUVWXYZ 1; - XZW0 HIJKLMNOPQ 1; + Load: + XZWA HIJKLMNOPQRSTUVWXYZ 1; + XZWB ABCDEFGHIJKLMN 1; Goto Ready; Zoom: XZW2 A 1 { A_StartSound("spreadgun/checkgun",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); - return A_JumpIf(invoker.fired,"ZoomFired"); + return A_JumpIf(invoker.fired,'ZoomFired'); } - XZWH JKLMNOPQRST 1; - XZWH UVWXYZ 2; - XZWI ABC 2; - XZWI DEFGHI 1; + XZW5 PQR 1 A_BumpView(.1); + XZW5 STUVWXYZ 1 A_BumpView(-.2); + XZW6 ABCDEF 2 A_BumpView(-.15,tics:2); + XZW6 GHI 2 A_BumpView(-.1,tics:2); + XZW6 JKL 1 A_BumpView(.2); + XZW6 MNO 1 A_BumpView(.1); Goto Ready; ZoomFired: XZW2 Z 1; - XZWI WXYZ 1; - XZWJ ABCDEFG 1; - XZWJ HIJKLMNOP 2; - XZWJ QRSTUV 1; + XZW8 CDEFGHIJKLM 1; + XZW8 NOPQRSTUV 2; + XZW8 WXYZ 1; + XZW9 AB 1; Goto ReadyFired; DummyMelee: TNT1 A 3 @@ -1200,94 +623,56 @@ Class Spreadgun : SWWMWeapon XZW2 A 2 { A_StartSound("spreadgun/deselect",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.fired,"User1Fired"); + return A_JumpIf(invoker.fired,'User1Fired'); } - XZWI JK 2; + XZW7 PQ 2 A_BumpView(.05,tics:2); User1Hold: - XZWI L 1 + XZW7 R 1 { + A_BumpAngle(1.); A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP); - A_Overlay(-9999,"DummyMelee"); + A_Overlay(-9999,'DummyMelee'); } - XZWI MNOP 2; - XZWI QR 3; - XZWI S 0 A_JumpIf(player.cmd.buttons&BT_USER1,"User1Hold"); - XZWI S 0 { invoker.PlayUpSound(self); } - XZWI STUV 2; + XZW7 ST 2 A_BumpAngle(-.25,tics:2); + XZW7 UV 2; + XZW7 WX 3; + XZW7 Y 0 A_JumpIf(player.cmd.buttons&BT_USER1,'User1Hold'); + XZW7 Y 0 { invoker.PlayUpSound(self); } + XZW7 Y 2 A_BumpView(.2,tics:2); + XZW7 Z 2 A_BumpView(.1,tics:2); + XZW8 AB 2 A_BumpView(-.1,tics:2); Goto Ready; User1Fired: XZW2 Z 2; - XZWJ WX 2; + XZW9 CD 2 A_BumpView(.05,tics:2); User1FiredHold: - XZWJ Y 1 + XZW9 E 1 { + A_BumpAngle(1.); A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP); - A_Overlay(-9999,"DummyMelee"); + A_Overlay(-9999,'DummyMelee'); } - XZWJ Z 2; - XZWK ABC 2; - XZWK DE 3; - XZWK F 0 A_JumpIf(player.cmd.buttons&BT_USER1,"User1FiredHold"); - XZWK F 0 { invoker.PlayUpSound(self); } - XZWK FGHI 2; + XZW9 FG 2 A_BumpAngle(-.25,tics:2); + XZW9 HI 2; + XZW9 JK 3; + XZW9 L 0 A_JumpIf(player.cmd.buttons&BT_USER1,'User1FiredHold'); + XZW9 L 0 { invoker.PlayUpSound(self); } + XZW9 L 2 A_BumpView(.2,tics:2); + XZW9 M 2 A_BumpView(.1,tics:2); + XZW9 NO 2 A_BumpView(-.1,tics:2); Goto ReadyFired; FlashRed: XZW0 A 2 Bright { - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.args[3] = 120; l.target = self; } Stop; - FlashGreen: + FlashGold: XZW0 B 2 Bright { - let l = Spawn("SWWMWeaponLight",pos); - l.args[3] = 90; - l.target = self; - } - Stop; - FlashWhite: - XZW0 C 2 Bright - { - let l = Spawn("SWWMWeaponLight",pos); - l.args[1] = 176; - l.args[2] = 32; - l.args[3] = 160; - l.target = self; - } - Stop; - FlashBlue: - XZW0 D 2 Bright - { - let l = Spawn("SWWMWeaponLight",pos); - l.args[0] = 96; - l.args[1] = 224; - l.args[2] = 255; - l.args[3] = 160; - l.target = self; - } - Stop; - FlashBlack: - XZW0 E 2 Bright - { - let l = Spawn("SWWMWeaponLight",pos); - l.args[3] = 60; - l.target = self; - } - Stop; - FlashPurple: - XZW0 F 2 Bright - { - let l = Spawn("SWWMWeaponLight",pos); - l.args[3] = 60; - l.target = self; - } - Stop; - FlashGold: - XZW0 G 2 Bright - { - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.args[3] = 300; l.target = self; } diff --git a/zscript/weapons/swwm_shot_fx.zsc b/zscript/weapons/swwm_shot_fx.zsc index 1768c73df..cafaf1fd6 100644 --- a/zscript/weapons/swwm_shot_fx.zsc +++ b/zscript/weapons/swwm_shot_fx.zsc @@ -12,11 +12,6 @@ Class RedShellCasing : SWWMCasing heat = 0; } } -Class GreenShellCasing : RedShellCasing {} -Class WhiteShellCasing : RedShellCasing {} -Class BlueShellCasing : RedShellCasing {} -Class BlackShellCasing : RedShellCasing {} -Class PurpleShellCasing : RedShellCasing {} Class GoldShellCasing : RedShellCasing { Default @@ -25,29 +20,19 @@ Class GoldShellCasing : RedShellCasing } } -Class SpreadImpact : Actor +Class SpreadImpact : SWWMNonInteractiveActor { - Default - { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +NOTELEPORT; - +NOINTERACTION; - } override void PostBeginPlay() { Super.PostBeginPlay(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:200); - A_StartSound("spreadgun/pellet",CHAN_VOICE,CHANF_DEFAULT,.4,4.); + A_StartSound("spreadgun/pellet",CHAN_VOICE,CHANF_DEFAULT,.4,2.); A_SprayDecal("TinyPock",-20); int numpt = Random[Spreadgun](2,4)-special1; - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); for ( int i=0; i0)?.1:.02); - scale += initsc*.2; - } - States - { - Spawn: - XFLM ABCDEFGHIJKLMNOPQRST -1 Bright; - Stop; - } -} - -Class DragonBreathArm : Actor -{ - Vector3 oldvel; - - Default - { - Obituary "$O_SPREADGUN_WHITE"; - DamageType 'Fire'; - PROJECTILE; - +THRUACTORS; - +BOUNCEONWALLS; - +BOUNCEONFLOORS; - +BOUNCEONCEILINGS; - +CANBOUNCEWATER; - +USEBOUNCESTATE; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - -NOGRAVITY; - Gravity 0.15; - BounceFactor 1.0; - Radius 2; - Height 4; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - reactiontime = Random[ExploS](18,24); - vel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch))*FRandom[ExploS](16.,32.); - let l = Spawn("PaletteLight",pos); - l.Args[3] = int(60+60*(ReactionTime/20.)); - l.ReactionTime = ReactionTime+2; - l.target = self; - - } - override void Tick() - { - oldvel = vel; - Super.Tick(); - } - void A_HandleBounce() - { - Vector3 HitNormal = -vel.unit(); - F3DFloor ff; - if ( BlockingFloor ) - { - // find closest 3d floor for its normal - for ( int i=0; i= (BlockingMobj.pos.x+BlockingMobj.radius) ) - HitNormal = (1,0,0); - else if ( (pos.y+radius) <= (BlockingMobj.pos.y-BlockingMobj.radius) ) - HitNormal = (0,-1,0); - else if ( (pos.y-radius) >= (BlockingMobj.pos.y+BlockingMobj.radius) ) - HitNormal = (0,1,0); - else if ( pos.z >= (BlockingMobj.pos.z+BlockingMobj.height) ) - HitNormal = (0,0,1); - else if ( (pos.z+height) <= BlockingMobj.pos.z ) - HitNormal = (0,0,-1); - } - // undo the bounce, we need to hook in our own - vel = oldvel; - // re-do the bounce with our formula - vel = .8*((vel dot HitNormal)*HitNormal*(-1.8+FRandom[Spreadgun](.0,.6))+vel); - bHITOWNER = true; - } - States - { - Spawn: - TNT1 A 1 - { - if ( waterlevel > 0 ) ReactionTime -= 2; - let p = Spawn("DragonBreathPuff",pos); - p.alpha *= .6+.4*(ReactionTime/20.); - p.scale *= 3.5-2.5*(ReactionTime/20.); - SWWMUtility.DoExplosion(self,6+(reactiontime/2),1000+200*reactiontime,90+5*reactiontime,flags:DE_HOWL,ignoreme:bHITOWNER?null:target); - double spd = vel.length(); - vel = (vel*.4+(FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2))).unit()*spd; - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - if ( !(ReactionTime%2) ) - { - let s = Spawn("SWWMHalfSmoke",pos); - s.vel = pvel+vel*.2; - s.SetShade(Color(1,1,1)*Random[ExploS](96,192)); - s.special1 = Random[ExploS](2,4); - s.scale *= 2.4; - s.alpha *= .1+.2*(ReactionTime/20.); - int numpt = Random[Spreadgun](-2,4); - for ( int i=0; i ShootThroughList; - Array WaterHitList; - - override ETraceStatus TraceCallback() - { - // liquid splashes - if ( Results.CrossedWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; - hl.hitpos = Results.CrossedWaterPos; - WaterHitList.Push(hl); - } - else if ( Results.Crossed3DWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; - hl.hitpos = Results.Crossed3DWaterPos; - WaterHitList.Push(hl); - } - if ( Results.HitType == TRACE_HitActor ) - { - if ( Results.HitActor == ignore ) return TRACE_Skip; - if ( Results.HitActor.bSHOOTABLE ) return TRACE_Stop; - return TRACE_Skip; - } - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) - { - if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&Line.ML_BlockHitscan) ) - return TRACE_Stop; - ShootThroughList.Push(Results.HitLine); - return TRACE_Skip; - } - return TRACE_Stop; - } -} - -Class SaltLight : PaletteLight -{ - Default - { - Tag "SaltExpl,1"; - ReactionTime 30; - Args 0,0,0,240; - } -} -Class SaltLight2 : PaletteLight -{ - Default - { - Tag "SaltExpl"; - ReactionTime 30; - Args 0,0,0,70; - } -} - -Class SaltImpact : Actor -{ - Default - { - Obituary "$O_SPREADGUN_BLUE"; - DamageType "Plasma"; - RenderStyle "Add"; - Radius 0.1; - Height 0; - Scale 1.8; - +NOGRAVITY; - +NOBLOCKMAP; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +FOILINVUL; - +NOINTERACTION; - } - override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) - { - if ( args[0] >= 1 ) return StringTable.Localize("$O_WALLBUSTER_BLUE"); - return Super.GetObituary(victim,inflictor,mod,playerattack); - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - A_AlertMonsters(swwm_uncapalert?0:6000); - SWWMUtility.DoExplosion(self,30+special2*4,15000,100,40); - A_QuakeEx(3,3,3,10,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:150,rollintensity:0.2); - A_StartSound("spreadgun/salt",CHAN_VOICE,attenuation:.35); - A_SprayDecal("ShockMarkSmall",-172); - A_SprayDecal("SaltMark",-172); - Scale *= FRandom[ExploS](0.8,1.1); - int numpt = Random[ExploS](5,9)-special1; - for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - TNT1 A 0 NoDelay A_Jump(256,"Expl1","Expl2","Expl3"); - Expl1: - KSX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright; - Stop; - Expl2: - KSX2 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright; - Stop; - Expl3: - KSX3 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright; - Stop; - } -} - -Class SaltBeam : Actor -{ - Default - { - Obituary "$O_SPREADGUN_BLUE"; - DamageType "Plasma"; - RenderStyle "Add"; - Radius 0.1; - Height 0; - Stamina 9; - Speed 32; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +ROLLSPRITE; - +ROLLCENTER; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - +FOILINVUL; - +NOINTERACTION; - } - - override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) - { - if ( args[1] >= 1 ) return StringTable.Localize("$O_WALLBUSTER_BLUE"); - return Super.GetObituary(victim,inflictor,mod,playerattack); - } - void SpreadOut() - { - special1 = 1; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - let t = new("SaltTracer"); - t.ignore = target; - t.Trace(pos,cursector,x,speed,TRACE_HitSky); - for ( int i=0; i 20) && !Random[Spreadgun](0,800/args[0]) ) - { - let i = Spawn("SaltImpact",level.Vec3Offset(pos,x*speed)); - i.angle = atan2(x.y,x.x); - i.pitch = asin(-x.z); - i.target = target; - i.special1 = (Stamina-9)/4; - i.special2 = Accuracy; - i.args[0] = args[1]; - return; - } - // next beam - if ( !(special2%4) && !Random[Spreadgun](0,Stamina) ) - Spawn("SaltLight",level.Vec3Offset(pos,x*speed/2)); - let next = Spawn("SaltBeam",level.Vec3Offset(pos,x*speed)); - double a = FRandom[Spreadgun](0,360), s = FRandom[Spreadgun](0,.06); - Vector3 dir = (x+y*cos(a)*s+z*sin(a)*s).unit(); - next.angle = atan2(dir.y,dir.x); - next.pitch = asin(-dir.z); - next.target = target; - next.special2 = (special2+1)%10; - next.args[0] = args[0]+1; - next.args[1] = args[1]; - next.SetStateLabel("TrailSpawn"); - } - - override void PostBeginPlay() - { - Super.PostBeginPlay(); - if ( !Random[Spreadgun](0,3) ) - A_StartSound("spreadgun/salttrail",CHAN_VOICE,CHANF_DEFAULT,.3,4.); - } - - override void Tick() - { - if ( isFrozen() ) return; - A_FadeOut(.04); - if ( Random[Spreadgun](-2,args[2]/10) == 0 ) - SWWMUtility.DoExplosion(self,5+Accuracy,5000,speed,flags:DE_HOWL,ignoreme:target); - if ( ((special2%4) || args[2]) && !special1 ) SpreadOut(); - args[2]++; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - - States - { - Spawn: - XZW1 A -1 Bright NoDelay - { - return FindState("StarterDev")+Random[Spreadgun](0,11)*2; - } - Stop; - TrailSpawn: - XZW2 A -1 Bright - { - return FindState("TrailerDev")+Random[Spreadgun](0,11)*2; - } - Stop; - StarterDev: - #### # 25 Bright; - XZW1 B -1 Bright; - Stop; - #### # 25 Bright; - XZW1 C -1 Bright; - Stop; - #### # 25 Bright; - XZW1 D -1 Bright; - Stop; - #### # 25 Bright; - XZW1 E -1 Bright; - Stop; - #### # 25 Bright; - XZW1 F -1 Bright; - Stop; - #### # 25 Bright; - XZW1 G -1 Bright; - Stop; - #### # 25 Bright; - XZW1 H -1 Bright; - Stop; - #### # 25 Bright; - XZW1 I -1 Bright; - Stop; - #### # 25 Bright; - XZW1 J -1 Bright; - Stop; - #### # 25 Bright; - XZW1 K -1 Bright; - Stop; - #### # 25 Bright; - XZW1 L -1 Bright; - Stop; - #### # 25 Bright; - XZW1 M -1 Bright; - Stop; - TrailerDev: - #### # 25 Bright; - XZW2 B -1 Bright; - Stop; - #### # 25 Bright; - XZW2 C -1 Bright; - Stop; - #### # 25 Bright; - XZW2 D -1 Bright; - Stop; - #### # 25 Bright; - XZW2 E -1 Bright; - Stop; - #### # 25 Bright; - XZW2 F -1 Bright; - Stop; - #### # 25 Bright; - XZW2 G -1 Bright; - Stop; - #### # 25 Bright; - XZW2 H -1 Bright; - Stop; - #### # 25 Bright; - XZW2 I -1 Bright; - Stop; - #### # 25 Bright; - XZW2 J -1 Bright; - Stop; - #### # 25 Bright; - XZW2 K -1 Bright; - Stop; - #### # 25 Bright; - XZW2 L -1 Bright; - Stop; - #### # 25 Bright; - XZW2 M -1 Bright; - Stop; - } -} - -Class BallImpact : Actor -{ - Default - { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:500); - A_QuakeEx(3,3,3,12,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.3); - A_StartSound("spreadgun/ball",CHAN_VOICE); - A_SprayDecal("WallCrack",-20); - int numpt = Random[Spreadgun](5,10); - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); - for ( int i=0; i 0) ) Owner.Howl(); - double maxrad = max(Owner.radius,Owner.height); - int defh = Owner.GetSpawnHealth(); - int flg = DMG_THRUSTLESS; - if ( Owner is 'Centaur' ) flg |= DMG_FOILINVUL; // you're melting, that shield is worthless - Owner.DamageMobj(self,instigator?instigator:Actor(self),clamp(Amount/8,1,50),'Corroded',flg); - bool justdied = (wasalive && (!Owner || (Owner.Health <= 0))); - if ( justdied ) - { - maxrad += 60; - Amount = min(Amount+int(defh**.5),MaxAmount); - A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT); - } - if ( !wasalive ) maxrad += 25; - SWWMUtility.DoExplosion(self,clamp(Amount/8,1,50),0,maxrad*1.2,maxrad*.9,DE_NOBLEED|DE_NOSPLASH|DE_HOWL,'Corroded',Owner); - if ( !Owner ) return; // yeah this can happen - int smokefact = int(clamp(maxrad/32.,1,8)); - int numpt = Random[Corrode](0,2*smokefact); - if ( justdied ) numpt = Random[Corrode](8,12)*smokefact; - for ( int i=0; i 0); - cnt3++; - if ( !(cnt3%20) ) A_StartSound("spreadgun/corrodepuff",CHAN_BODY,CHANF_OVERLAP,min(Amount/200.,1.),2.,FRandom[Corrode](.8,1.2)-min(Amount/200.,.4)); - cnt2++; - if ( cnt2 < 3 ) return; - cnt2 = (!Owner||(Owner.Health<=Owner.GetGibHealth()))?-2:0; // slower decay when gibbed - Amount -= 1; - if ( Amount > 100 ) Amount -= max(0,Amount/50-1); - if ( !Owner ) return; - if ( Owner.Health > 0 ) Amount -= 1; - if ( Owner.bNOBLOOD ) Amount -= 2; - } -} - -Class FlechetteTracer : LineTracer -{ - Actor ignore; - Array ShootThroughList; - Array WaterHitList; - - override ETraceStatus TraceCallback() - { - // liquid splashes - if ( Results.CrossedWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; - hl.hitpos = Results.CrossedWaterPos; - WaterHitList.Push(hl); - } - else if ( Results.Crossed3DWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; - hl.hitpos = Results.Crossed3DWaterPos; - WaterHitList.Push(hl); - } - if ( Results.HitType == TRACE_HitActor ) - { - if ( Results.HitActor == ignore ) return TRACE_Skip; - if ( Results.HitActor.bSHOOTABLE ) return TRACE_Stop; - return TRACE_Skip; - } - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) - { - if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BLOCKEVERYTHING|Line.ML_BLOCKPROJECTILE)) ) - return TRACE_Stop; - ShootThroughList.Push(Results.HitLine); - return TRACE_Skip; - } - return TRACE_Stop; - } -} - -Class CorrosiveSplash : Actor -{ - Default - { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +NOTELEPORT; - +NOINTERACTION; - } - override int DoSpecialDamage( Actor target, int Damage, Name DamageType ) - { - // spread ourselves - let c = CorrodeDebuff(target.FindInventory("CorrodeDebuff")); - if ( !c ) - { - c = CorrodeDebuff(Spawn("CorrodeDebuff",target.pos)); - c.AttachToOwner(target); - c.cnt = 5; // slight delay - } - c.Amount = min(c.Amount+Damage,c.MaxAmount); - c.A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT,min(c.Amount/100.,1.)); - c.instigator = self.target; - return 0; // no direct damage - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SWWMUtility.DoExplosion(self,20,0,50,15,DE_NOBLEED|DE_NOSPLASH|DE_HOWL,'Corroded',tracer); - Destroy(); - } -} - -Class CorrosiveFlechette : Actor -{ - transient FlechetteTracer t; - Actor lasthit; - - Default - { - Obituary "$O_SPREADGUN_BLACK"; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NODAMAGETHRUST; - +NOINTERACTION; - +INTERPOLATEANGLES; - Speed 100; - Radius .1; - Height 0.; - Gravity .35; - } - - override void Tick() - { - prev = pos; // interpolation - if ( isFrozen() ) return; - if ( CurState == SpawnState ) - { - // bullet trace - if ( (pos.z < floorz) || (pos.z > ceilingz) ) - { - // the fuck just happened??? - SetStateLabel("Death"); - return; - } - Vector3 dir = vel; - double dist = vel.length(); - if ( dist < 1. ) - { - // somehow have no velocity while alive, just die - SetStateLabel("Death"); - return; - } - dir /= dist; - if ( !t ) t = new("FlechetteTracer"); - if ( lasthit ) t.ignore = lasthit; - else if ( !bHITOWNER ) t.ignore = target; - else t.ignore = null; - t.shootthroughlist.Clear(); - t.waterhitlist.Clear(); - t.Trace(pos,CurSector,dir,dist,TRACE_HitSky); - for ( int i=0; i 0) ) - { - let c = CorrodeDebuff(a.FindInventory("CorrodeDebuff")); - if ( !c ) - { - c = CorrodeDebuff(Spawn("CorrodeDebuff",a.pos)); - c.AttachToOwner(a); - } - c.Amount = min(c.Amount+25,c.MaxAmount); - c.cnt = 0; - c.instigator = target; - c.A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT,min(c.Amount/100.,1.)); - } - int dmg = 3; - int amt = 3; - if ( a.bSHOOTABLE ) - { - SWWMUtility.DoKnockback(a,t.Results.HitVector,1000); - let p = SWWMPuff.Setup(t.Results.HitPos,t.Results.HitVector,self,target,a); - SWWMDamageAccumulator.Accumulate(a,dmg,p,target,'Shot',flags:DMG_INFLICTOR_IS_PUFF); - amt = SWWMDamageAccumulator.GetAmount(a); - } - if ( !a.bSHOOTABLE || a.bNOBLOOD || a.bDORMANT || a.bINVULNERABLE ) - { - let p = Spawn("SpreadImpact",t.Results.HitPos); - A_SetAngle(atan2(hitnormal.y,hitnormal.x),SPF_INTERPOLATE); - A_SetPitch(asin(-hitnormal.z),SPF_INTERPOLATE); - } - else - { - a.TraceBleed(dmg,self); - a.SpawnBlood(t.Results.HitPos,atan2(t.Results.HitVector.y,t.Results.HitVector.x)+180,dmg); - A_StartSound("spreadgun/pelletf",CHAN_VOICE,CHANF_DEFAULT,.5,2.); - } - let s = Spawn("CorrosiveSplash",t.Results.HitPos); - s.target = target; - s.tracer = a; - // chance to pierce - int posthealth = a.health-amt; - double hratio = posthealth/double(a.GetSpawnHealth()); - if ( (!a.bSHOOTABLE && !Random[Corrode](0,2)) || (posthealth <= 0) || (FRandom[Corrode](hratio,1.) < .5) ) - { - SetOrigin(t.Results.HitPos,true); - dir = t.Results.HitVector; - A_SetAngle(atan2(dir.y,dir.x),SPF_INTERPOLATE); - A_SetPitch(asin(-dir.z),SPF_INTERPOLATE); - vel = dir*dist; - bHITOWNER = true; - lasthit = t.Results.HitActor; - } - else SetStateLabel("Death"); - return; - } - else - { - // Wall busting - if ( swwm_omnibust ) - BusterWall.Bust(t.Results,3,target,t.Results.HitVector,t.Results.HitPos.z); - // check what we hit - Vector3 hitnormal = -t.Results.HitVector; - if ( t.Results.HitType == TRACE_HitFloor ) - { - if ( t.Results.ffloor ) hitnormal = -t.Results.ffloor.top.Normal; - else hitnormal = t.Results.HitSector.floorplane.Normal; - } - else if ( t.Results.HitType == TRACE_HitCeiling ) - { - if ( t.Results.ffloor ) hitnormal = -t.Results.ffloor.bottom.Normal; - else hitnormal = t.Results.HitSector.ceilingplane.Normal; - } - else if ( t.Results.HitType == TRACE_HitWall ) - { - hitnormal = (-t.Results.HitLine.delta.y,t.Results.HitLine.delta.x,0).unit(); - if ( !t.Results.Side ) hitnormal *= -1; - t.Results.HitLine.RemoteActivate(target,t.Results.Side,SPAC_Impact,t.Results.HitPos); - } - if ( t.Results.HitType != TRACE_HasHitSky ) - { - let p = Spawn("SpreadImpact",t.Results.HitPos+hitnormal); - p.angle = atan2(hitnormal.y,hitnormal.x); - p.pitch = asin(-hitnormal.z); - if ( t.Results.HitType == TRACE_HitFloor ) p.CheckSplash(40); - let s = Spawn("CorrosiveSplash",t.Results.HitPos+hitnormal); - s.target = target; - } - // can we bounce? - if ( t.Results.HitVector dot hitnormal > -.35 ) - { - SetOrigin(t.Results.HitPos+hitnormal,true); - dir = t.Results.HitVector-2*hitnormal*(t.Results.HitVector dot hitnormal); - A_SetAngle(atan2(dir.y,dir.x),SPF_INTERPOLATE); - A_SetPitch(asin(-dir.z),SPF_INTERPOLATE); - vel = dir*dist; - bHITOWNER = true; - lasthit = null; - } - else SetStateLabel("Death"); - return; - } - } - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XZW1 A -1; - Stop; - Death: - TNT1 A 35; - Stop; - } -} - -Class TheBall : Actor -{ - double heat; - int deadtimer; - Vector3 oldvel; - Actor lasthit; - - Default - { - Obituary "$O_SPREADGUN_PURPLE"; - PROJECTILE; - +BOUNCEONWALLS; - +BOUNCEONFLOORS; - +BOUNCEONCEILINGS; - +CANBOUNCEWATER; - +USEBOUNCESTATE; - +DONTBOUNCEONSKY; - +NODAMAGETHRUST; - -NOGRAVITY; - Speed 80; - Gravity 0.1; - BounceFactor 1.0; - Radius 2; - Height 4; - } - override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) - { - if ( special1 >= 1 ) return StringTable.Localize("$O_WALLBUSTER_PURPLE"); - return Super.GetObituary(victim,inflictor,mod,playerattack); - } - override int SpecialMissileHit( Actor victim ) - { - if ( (vel.length() <= 5) || ((victim == target) && !bHITOWNER) || (victim == lasthit) || (!victim.bSHOOTABLE && !victim.bSOLID) ) - return 1; - // check if we should rip or bounce - // girthitude - double girth = (victim.radius+victim.height)/2.*max(50,victim.mass)*(victim.health/double(victim.GetSpawnHealth())); - // how hard this damn thing is going to slam - double slamforce = vel.length()*350.+heat*120; - int dmg = int(vel.length()*4.5+heat*45); - bool is_schutt = victim.bSHOOTABLE; - // critical hit! - bool crit = false; - if ( is_schutt && !Random[Spreadgun](0,9) ) - { - Spawn("SWWMItemFog",pos); - int whichclonk = Random[Spreadgun](1,11); - String snd = String.Format("misc/clonk%d",whichclonk); - A_AlertMonsters(swwm_uncapalert?0:2500); - A_StartSound(snd,CHAN_VOICE,CHANF_OVERLAP,1.,.2); - A_StartSound(snd,CHAN_VOICE,CHANF_OVERLAP,1.,.2); - victim.A_QuakeEx(8,8,8,8,0,3000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:1.); - victim.A_StartSound(snd,CHAN_DAMAGE,CHANF_OVERLAP,1.,.2); - slamforce *= 4; - dmg *= 4; - vel *= 1.1; - let numpt = Random[Spreadgun](20,30); - for ( int i=0; i0)?newdmg:dmg,self); - victim.SpawnBlood(pos,atan2(dir.y,dir.x),dmg); - } - } - else - { - A_StartSound("spreadgun/ball",CHAN_VOICE,CHANF_OVERLAP,(vel.length()/30.)**.5); - if ( victim ) victim.A_StartSound("spreadgun/ball",CHAN_DAMAGE,CHANF_OVERLAP,(vel.length()/30.)**.5); - if ( vel.length() > 15. ) - { - let s = Spawn("BallImpact",pos); - s.angle = atan2(dir.y,dir.x); - s.pitch = asin(-dir.z); - } - } - // make it so the crit does not propagate to friendlies unless we bonked a friend (you monster!) - if ( crit ) - SWWMUtility.DoExplosion(self,dmg/2,25000,150,80,(victim.isFriend(target))?0:DE_NOHURTFRIEND,'',target,DMG_FOILINVUL); - if ( crit && victim && (victim.Health <= 0) && (victim.bBOSS || victim.FindInventory("BossMarker")) && target ) - SWWMUtility.MarkAchievement("clonk",target.player); - // only rip shootables - if ( (slamforce > girth) && is_schutt ) - { - vel *= .7; - return 1; - } - // force bounce - BlockingMobj = victim; - A_HandleBounce(); - lasthit = victim; - // pretend to pass through - return 1; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - A_StartSound("pusher/fly",CHAN_WEAPON,CHANF_LOOP,.6,3.,2.); - heat = 1.; - } - override void Tick() - { - oldvel = vel; - Super.Tick(); - if ( isFrozen() ) return; - if ( InStateSequence(CurState,ResolveState("Death")) ) - { - deadtimer++; - if ( deadtimer > 300 ) - { - let numpt = Random[Spreadgun](3,6); - for ( int i=0; i 15) && swwm_balluse ) - { - int locknum = SWWMUtility.GetLineLock(BlockingLine); - // remotely activate unlocked lines (that aren't exits) - if ( (!locknum || (target && target.CheckKeys(locknum,false,true))) && !SWWMUtility.IsExitLine(BlockingLine) ) - BlockingLine.RemoteActivate(target,wside,SPAC_Use,pos); - } - } - else if ( BlockingMobj ) - { - Vector3 diff = level.Vec3Diff(BlockingMobj.Vec3Offset(0,0,BlockingMobj.Height/2),pos); - HitNormal = diff.unit(); - } - // send the needed data for a bust - if ( (special1 == 2) || swwm_omnibust ) - { - int dmg = int(oldvel.length()*4.2+heat*80); - BusterWall.ProjectileBust(self,dmg,oldvel.unit()); - } - // undo the bounce, we need to hook in our own - vel = oldvel; - // re-do the bounce with our formula - double bcefact = .9; - if ( BlockingMobj ) - { - bcefact *= .7; - if ( !BlockingMobj.bINVULNERABLE && !BlockingMobj.bNOBLOOD && !BlockingMobj.bDORMANT ) - bcefact *= .6; - } - vel = (vel dot HitNormal)*HitNormal*FRandom[Spreadgun](-1.8,-1.)+vel; - vel += (FRandom[Spreadgun](-.4,.4),FRandom[Spreadgun](-.4,.4),FRandom[Spreadgun](-.4,.4)); - vel *= bcefact; - // slam jam - if ( !BlockingMobj ) - { - A_StartSound("spreadgun/ball",CHAN_VOICE,CHANF_OVERLAP,max(0.,(vel.length()/30.-.2))**.5); - if ( vel.length() > 15 ) - { - let s = Spawn("BallImpact",pos); - s.angle = atan2(HitNormal.y,HitNormal.x); - s.pitch = asin(-HitNormal.z); - } - } - gravity = .35; - if ( (vel.length() < 5) && (pos.z <= floorz) ) - { - ClearBounce(); - ExplodeMissile(); - } - } - States - { - Spawn: - XZW1 A -1; - Stop; - Bounce: - XZW1 A 0 A_HandleBounce(); - Goto Spawn; - Death: - XZW1 A -1 - { - bMOVEWITHSECTOR = true; - A_StopSound(CHAN_WEAPON); - } - Stop; - } -} - Class GExploLight : PaletteLight { Default @@ -1388,30 +65,13 @@ Class GExploLight : PaletteLight } } -Class GExploRing : Actor +Class GExploRing : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; + RenderStyle 'Add'; Scale 8.; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { @@ -1421,31 +81,26 @@ Class GExploRing : Actor } } - -Class GoldenImpact : Actor +Class GoldenImpact : SWWMNonInteractiveActor { Default { - DamageType "Explodium"; - RenderStyle "Add"; - Radius 0.1; - Height 0; + Obituary "$O_SPREADGUN_GOLD"; + SelfObituary "$SO_SPREADGUN_GOLD"; + DamageType 'Explodium'; + RenderStyle 'Add'; Scale 8.; - +NOGRAVITY; - +NOBLOCKMAP; +NODAMAGETHRUST; +FORCERADIUSDMG; +FORCEXYBILLBOARD; - +NOTELEPORT; +FOILINVUL; - +NOINTERACTION; } override void PostBeginPlay() { Super.PostBeginPlay(); - A_AlertMonsters(swwm_uncapalert?0:40000); + A_AlertMonsters(swwm_uncapalert?0:40000,AMF_EMITFROMTARGET); SWWMUtility.DoExplosion(self,7777,90000,600,500,DE_EXTRAZTHRUST); - A_QuakeEx(9,9,9,40,0,5000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:500,rollintensity:1.5); + A_QuakeEx(9.,9.,9.,40,0,5000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:500,rollintensity:1.5); A_StartSound("spreadgun/goldexpl",CHAN_VOICE,attenuation:.3); A_StartSound("spreadgun/goldexpl",CHAN_WEAPON,attenuation:.15); A_SprayDecal("WumboRocketBlast",-172); @@ -1455,8 +110,8 @@ Class GoldenImpact : Actor int numpt = Random[ExploS](30,40); for ( int i=0; i 30) ) return; @@ -1506,22 +161,7 @@ Class GoldenImpact : Actor while ( totaldist > 0 ) { LineTrace(ang,totaldist,pt,TRF_THRUACTORS|TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); - hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } + HitNormal = SWWMUtility.GetLineTraceHitNormal(d); totaldist -= d.Distance; if ( totaldist > 0 ) { @@ -1531,23 +171,12 @@ Class GoldenImpact : Actor origin = d.HitLocation+hitnormal; } } - let p = Spawn("GoldenSubImpact",d.HitLocation+hitnormal*4); + let p = Spawn('GoldenSubImpact',d.HitLocation+hitnormal*4); p.angle = atan2(hitnormal.y,hitnormal.x); p.pitch = asin(-hitnormal.z); p.target = target; } } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -1556,30 +185,26 @@ Class GoldenImpact : Actor } } -Class GoldenSubImpact : Actor +Class GoldenSubImpact : SWWMNonInteractiveActor { Default { - DamageType "Explodium"; - RenderStyle "Add"; + Obituary "$O_SPREADGUN_GOLD"; + SelfObituary "$SO_SPREADGUN_GOLD"; + DamageType 'Explodium'; + RenderStyle 'Add'; Scale 6.; Alpha .8; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; +NODAMAGETHRUST; +FORCERADIUSDMG; +FORCEXYBILLBOARD; - +NOTELEPORT; +FOILINVUL; - +NOINTERACTION; } override void PostBeginPlay() { Super.PostBeginPlay(); SWWMUtility.DoExplosion(self,777,80000,500,400,DE_EXTRAZTHRUST); - A_QuakeEx(7,7,7,20,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollintensity:.8); + A_QuakeEx(7.,7.,7.,20,0,2000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:200,rollintensity:.8); A_SprayDecal("BigRocketBlast",-172); Scale *= FRandom[ExploS](0.8,1.1); Scale.x *= RandomPick[ExploS](-1,1); @@ -1587,8 +212,8 @@ Class GoldenSubImpact : Actor int numpt = Random[ExploS](4,8); for ( int i=0; i 20) ) return; @@ -1636,22 +261,7 @@ Class GoldenSubImpact : Actor while ( totaldist > 0 ) { LineTrace(ang,totaldist,pt,TRF_THRUACTORS|TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); - hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } + HitNormal = SWWMUtility.GetLineTraceHitNormal(d); totaldist -= d.Distance; if ( totaldist > 0 ) { @@ -1661,23 +271,12 @@ Class GoldenSubImpact : Actor origin = d.HitLocation+hitnormal; } } - let p = Spawn("GoldenSubSubImpact",d.HitLocation+hitnormal*4); + let p = Spawn('GoldenSubSubImpact',d.HitLocation+hitnormal*4); p.angle = atan2(hitnormal.y,hitnormal.x); p.pitch = asin(-hitnormal.z); p.target = target; } } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -1686,30 +285,26 @@ Class GoldenSubImpact : Actor } } -Class GoldenSubSubImpact : Actor +Class GoldenSubSubImpact : SWWMNonInteractiveActor { Default { - DamageType "Explodium"; - RenderStyle "Add"; + Obituary "$O_SPREADGUN_GOLD"; + SelfObituary "$SO_SPREADGUN_GOLD"; + DamageType 'Explodium'; + RenderStyle 'Add'; Scale 3.; Alpha .6; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; +NODAMAGETHRUST; +FORCERADIUSDMG; +FORCEXYBILLBOARD; - +NOTELEPORT; +FOILINVUL; - +NOINTERACTION; } override void PostBeginPlay() { Super.PostBeginPlay(); SWWMUtility.DoExplosion(self,77,70000,400,300,DE_EXTRAZTHRUST); - A_QuakeEx(4,4,4,15,0,1000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollintensity:.4); + A_QuakeEx(4.,4.,4.,15,0,1000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:100,rollintensity:.4); A_SprayDecal("RocketBlast",-172); Scale *= FRandom[ExploS](0.8,1.1); Scale.x *= RandomPick[ExploS](-1,1); @@ -1717,8 +312,8 @@ Class GoldenSubSubImpact : Actor int numpt = Random[ExploS](1,2); for ( int i=0; i 10) ) return; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: - XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright A_GoldSubSubSpread(); + XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright; Stop; } } diff --git a/zscript/weapons/swwm_sparkyboi.zsc b/zscript/weapons/swwm_sparkyboi.zsc index 58d2d201d..a39d20c77 100644 --- a/zscript/weapons/swwm_sparkyboi.zsc +++ b/zscript/weapons/swwm_sparkyboi.zsc @@ -9,48 +9,8 @@ Class Sparkster : SWWMWeapon Property ClipCount : clipcount; - transient ui TextureID WeaponBox, AmmoBar[6]; - transient ui DynamicValueInterpolator iclip; transient int failtime; - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - if ( !WeaponBox ) - { - WeaponBox = TexMan.CheckForTexture("graphics/HUD/BiosparkDisplay.png",TexMan.Type_Any); - AmmoBar[0] = TexMan.CheckForTexture("graphics/HUD/BiosparkBar.png",TexMan.Type_Any); - AmmoBar[1] = TexMan.CheckForTexture("graphics/HUD/BiosparkBarRed.png",TexMan.Type_Any); - AmmoBar[2] = TexMan.CheckForTexture("graphics/HUD/BiosparkBarGray.png",TexMan.Type_Any); - AmmoBar[3] = TexMan.CheckForTexture("graphics/HUD/BiosparkBarSlim.png",TexMan.Type_Any); - AmmoBar[4] = TexMan.CheckForTexture("graphics/HUD/BiosparkBarSlimRed.png",TexMan.Type_Any); - AmmoBar[5] = TexMan.CheckForTexture("graphics/HUD/BiosparkBarSlimGray.png",TexMan.Type_Any); - } - Screen.DrawTexture(WeaponBox,false,bx-28,by-28,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-26,by-25,String.Format("%2d",Ammo1.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - if ( nomag ) return; - bool blinking = (failtime>gametic)&&((failtime-gametic)%16>=8); - if ( doublestacc ) - { - Screen.DrawTexture(AmmoBar[5],false,bx-26,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawTexture(AmmoBar[5],false,bx-14,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawTexture(AmmoBar[3+(clipcount<2)],false,bx-26,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,iclip?(iclip.GetValue()/10.):0.,DTA_ColorOverlay,(blinking&&(clipcount<=4))?Color(128,0,0,0):Color(0,0,0,0)); - if ( (iclip && (iclip.GetValue() > 120)) || (!iclip && (clipcount > 4)) ) - Screen.DrawTexture(AmmoBar[3+(clipcount<6)],false,bx-14,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,iclip?(((iclip.GetValue()/10.))-12.):0.,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0)); - } - else - { - Screen.DrawTexture(AmmoBar[2],false,bx-26,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawTexture(AmmoBar[clipcount<2],false,bx-26,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,iclip?(iclip.GetValue()/5.):0.,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0)); - } - } - - override void HudTick() - { - Super.HudTick(); - if ( !iclip ) iclip = DynamicValueInterpolator.Create(clipcount*30,.25,1,10); - else iclip.Update(clipcount*30); - } - override bool CheckAmmo( int fireMode, bool autoSwitch, bool requireAmmo, int ammocount ) { if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; @@ -64,7 +24,7 @@ Class Sparkster : SWWMWeapon return Super.ReportHUDAmmo(); } - override Vector3 GetTraceOffset() + override Vector3 GetTraceOffset( int index ) { return (10.,4.5,-5.); } @@ -78,9 +38,10 @@ Class Sparkster : SWWMWeapon else invoker.clipcount = 0; } else invoker.clipcount = max(0,invoker.clipcount-1); - Vector3 x, y, z, x2, y2, z2, dir; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+4.5*y-5*z); + Vector3 dir; + Vector3 x = SWWMUtility.GetPlayerViewDir(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,4.5,-5); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); double a, s; Actor p; switch ( mode ) @@ -88,56 +49,56 @@ Class Sparkster : SWWMWeapon case 0: // spark A_StartSound("biospark/fire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.7); - A_QuakeEx(2,2,2,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2); + A_QuakeEx(2.,2.,2.,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); A_BumpFOV(.96); + A_BumpView(-.5); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,192,255,96),3); A_AlertMonsters(swwm_uncapalert?0:5000); A_PlayerFire(); a = FRandom[Spread](0,360); s = FRandom[Spread](0,.007); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - p = Spawn("BiosparkBall",origin); + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + p = Spawn('BiosparkBall',origin); p.target = self; p.angle = atan2(dir.y,dir.x); p.pitch = asin(-dir.z); p.vel = dir*p.speed; - if ( invoker.doublestacc ) p.bMISSILEMORE = true; + if ( invoker.doublestacc ) p.MissileChanceMult = .5; break; case 1: // beam A_StartSound("biospark/altfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:.8); - A_QuakeEx(3,3,3,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3); + A_QuakeEx(3.,3.,3.,5,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); A_BumpFOV(.95); + A_BumpView(-.6); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,192,255,96),3); A_AlertMonsters(swwm_uncapalert?0:4000); A_PlayerFire(); a = FRandom[Spread](0,360); s = FRandom[Spread](0,.003); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - p = Spawn("BiosparkBeam",origin); + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + p = Spawn('BiosparkBeam',origin); p.target = self; p.angle = atan2(dir.y,dir.x); p.pitch = asin(-dir.z); p.frame = 0; - if ( invoker.doublestacc ) p.bMISSILEMORE = true; + if ( invoker.doublestacc ) p.MissileChanceMult = .5; break; case 2: // big spark A_StartSound("biospark/thirdfire",CHAN_WEAPON,CHANF_OVERLAP,attenuation:1.5); - A_QuakeEx(5,5,5,10,0,8,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.6); + A_QuakeEx(5.,5.,5.,10,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.6); A_BumpFOV(.94); + A_BumpView(-.8); A_AlertMonsters(swwm_uncapalert?0:1200); A_PlayerFire(); SWWMUtility.DoKnockback(self,-x,2500.); a = FRandom[Spread](0,360); s = FRandom[Spread](0,.012); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - p = Spawn("BiosparkCore",origin); + dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + p = Spawn('BiosparkCore',origin); p.target = self; p.angle = atan2(dir.y,dir.x); p.pitch = asin(-dir.z); @@ -146,7 +107,7 @@ Class Sparkster : SWWMWeapon p.special1 = scnt; if ( invoker.doublestacc ) { - p.bMISSILEMORE = true; + p.MissileChanceMult = .5; p.ReactionTime -= 10; } break; @@ -156,17 +117,16 @@ Class Sparkster : SWWMWeapon action void A_DropMag( bool stacc = false ) { if ( swwm_nomagdrop ) return; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-2*y-10*z); - let c = Spawn("SparksterMag",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-2,-10); + let c = Spawn('SparksterMag',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-1.2,.3)-(0,0,FRandom[Junk](2,3)); c.vel += vel*.5; if ( !stacc ) return; - origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),8*x-2*y-12*z); - c = Spawn("SparksterMag",origin); + origin = SWWMUtility.GetFireOffset(self,8,-2,-12); + c = Spawn('SparksterMag',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-1.2,.3)-(0,0,FRandom[Junk](2,3)); @@ -175,6 +135,7 @@ Class Sparkster : SWWMWeapon override void Travelled() { + Super.Travelled(); if ( Owner.player && (Owner.player.Readyweapon == self) ) { Owner.A_StartSound("biospark/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,doublestacc?.6:.4,4.); @@ -188,6 +149,11 @@ Class Sparkster : SWWMWeapon A_StartSound("biospark/fail",CHAN_WEAPON,CHANF_OVERLAP); } + action void A_UpdatePickup() + { + frame = invoker.doublestacc; + } + override void MarkPrecacheSounds() { Super.MarkPrecacheSounds(); @@ -244,34 +210,27 @@ Class Sparkster : SWWMWeapon Default { - //$Title Biospark Carbine - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_Sparkster.png - //$Icon weapon Tag "$T_SPARKSTER"; + Inventory.Icon "graphics/HUD/Icons/W_Sparkster.png"; Inventory.PickupMessage "$I_SPARKSTER"; Obituary "$O_SPARKSTER"; SWWMWeapon.Tooltip "$TT_SPARKSTER"; SWWMWeapon.GetLine "getsparkster"; - Inventory.Icon "graphics/HUD/Icons/W_Sparkster.png"; Weapon.SlotNumber 7; Weapon.UpSound "biospark/select"; Weapon.SelectionOrder 600; Stamina 200000; - Weapon.AmmoType1 "SparkUnit"; + Weapon.AmmoType1 'SparkUnit'; Weapon.AmmoGive1 1; - SWWMWeapon.DropAmmoType "SparkUnit"; + SWWMWeapon.DropAmmoType 'SWWMCellAmmoSmall'; Sparkster.ClipCount 4; +SWWMWEAPON.NOFIRSTGIVE; +WEAPON.EXPLOSIVE; - Radius 22; - Height 24; } States { Spawn: - XZW1 A -1 NoDelay A_JumpIf(invoker.doublestacc,1); - XZW1 B -1; + XZW1 A -1 NoDelay A_UpdatePickup(); Stop; Select: XZW2 G 2 @@ -279,7 +238,7 @@ Class Sparkster : SWWMWeapon invoker.nomag = false; A_FullRaise(); A_StartSound("biospark/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.4,4.); - return A_JumpIf(invoker.doublestacc,"DoubleSelect"); + return A_JumpIf(invoker.doublestacc,'DoubleSelect'); } XZW2 HIJKLM 2; Goto Ready; @@ -296,9 +255,9 @@ Class Sparkster : SWWMWeapon XZW2 A 2 { A_StartSound("biospark/deselect",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.doublestacc,"DoubleDeselect"); + return A_JumpIf(invoker.doublestacc,'DoubleDeselect'); } - XZW2 BCDEFG 2; + XZW2 BCDEF 2; XZW2 G -1 { A_StopSound(CHAN_WEAPONEXTRA); @@ -307,7 +266,7 @@ Class Sparkster : SWWMWeapon Stop; DoubleDeselect: XZW5 Z 2; - XZW6 STUVWX 2; + XZW6 STUVW 2; XZW6 X -1 { A_StopSound(CHAN_WEAPONEXTRA); @@ -332,48 +291,49 @@ Class Sparkster : SWWMWeapon } Wait; Fire: - XZW2 A 0 A_JumpIf(invoker.ClipCount<=0,"Reload"); + XZW2 A 0 A_JumpIf(invoker.ClipCount<=0,'Reload'); XZW2 A 1 { A_StartSound("biospark/prefire",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.doublestacc,"DoubleFire"); + return A_JumpIf(invoker.doublestacc,'DoubleFire'); } - XZW4 Y 12; + XZW4 Y 12 A_CanBob(); XZW4 Y 1 A_FireSpark(0); XZW2 NOPQ 2; Goto PreVent; DoubleFire: XZW5 Z 1; - XZW8 L 12; + XZW8 L 12 A_CanBob(); XZW8 L 1 A_FireSpark(0); XZW7 EFGH 2; Goto DoublePreVent; AltFire: - XZW2 A 0 A_JumpIf(invoker.ClipCount<=0,"Reload"); + XZW2 A 0 A_JumpIf(invoker.ClipCount<=0,'Reload'); XZW2 A 1 { A_StartSound("biospark/prefire",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.doublestacc,"DoubleAltFire"); + return A_JumpIf(invoker.doublestacc,'DoubleAltFire'); } - XZW4 Z 12; + XZW4 Z 12 A_CanBob(); XZW4 Z 1 A_FireSpark(1); XZW2 RSTU 2; Goto PreVent; DoubleAltFire: XZW5 Z 1; - XZW8 M 12; + XZW8 M 12 A_CanBob(); XZW8 M 1 A_FireSpark(1); XZW7 IJKL 2; Goto DoublePreVent; PreVent: XZW2 AAAAAAAA 1 { + A_CanBob(); if ( invoker.ClipCount > 0 ) { if ( player.cmd.buttons&BT_ATTACK ) - return ResolveState("Refire"); + return ResolveState('Refire'); if ( player.cmd.buttons&BT_ALTATTACK ) - return ResolveState("AltRefire"); + return ResolveState('AltRefire'); } return ResolveState(null); } @@ -381,12 +341,13 @@ Class Sparkster : SWWMWeapon DoublePreVent: XZW5 ZZZZZZZZ 1 { + A_CanBob(); if ( (invoker.ClipCount > 0) && (invoker.ClipCount%4) ) { if ( player.cmd.buttons&BT_ATTACK ) - return ResolveState("DoubleRefire"); + return ResolveState('DoubleRefire'); if ( player.cmd.buttons&BT_ALTATTACK ) - return ResolveState("DoubleAltRefire"); + return ResolveState('DoubleAltRefire'); } return ResolveState(null); } @@ -410,7 +371,8 @@ Class Sparkster : SWWMWeapon Vent: XZW2 A 8 { - A_Overlay(PSP_WEAPON+2,"VentFlash"); + A_CanBob(); + A_Overlay(PSP_WEAPON+2,'VentFlash'); A_OverlayFlags(PSP_WEAPON+2,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true); A_OverlayRenderStyle(PSP_WEAPON+2,STYLE_Add); A_StartSound("biospark/hiss",CHAN_WEAPON,CHANF_OVERLAP); @@ -419,7 +381,8 @@ Class Sparkster : SWWMWeapon DoubleVent: XZW5 Z 8 { - A_Overlay(PSP_WEAPON+2,"VentFlash"); + A_CanBob(); + A_Overlay(PSP_WEAPON+2,'VentFlash'); A_OverlayFlags(PSP_WEAPON+2,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true); A_OverlayRenderStyle(PSP_WEAPON+2,STYLE_Add); A_StartSound("biospark/hiss",CHAN_WEAPON,CHANF_OVERLAP); @@ -429,32 +392,32 @@ Class Sparkster : SWWMWeapon XZWY ABCDEFGHIJKLMNOPQRSTUVWX 1; Stop; Zoom: - XZW2 A 0 A_JumpIf(invoker.ClipCount<=0,"Reload"); - XZW2 A 0 A_JumpIf(invoker.doublestacc,"DoubleZoom"); - XZW2 A 0 A_JumpIf(invoker.ClipCount<2,"NoZoom"); + XZW2 A 0 A_JumpIf(invoker.ClipCount<=0,'Reload'); + XZW2 A 0 A_JumpIf(invoker.doublestacc,'DoubleZoom'); + XZW2 A 0 A_JumpIf(invoker.ClipCount<2,'NoZoom'); XZW2 A 1 A_StartSound("biospark/prethird",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 A 12; + XZW5 A 12 A_CanBob(); XZW5 A 1 A_FireSpark(2); XZW2 VWXYZ 2; Goto Ready; DoubleZoom: - XZW5 Z 0 A_JumpIf((invoker.ClipCount<2)||((invoker.ClipCount>4)&&(invoker.ClipCount<6)),"DoubleNoZoom"); + XZW5 Z 0 A_JumpIf((invoker.ClipCount<2)||((invoker.ClipCount>4)&&(invoker.ClipCount<6)),'DoubleNoZoom'); XZW5 Z 1 A_StartSound("biospark/prethird",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 N 12; + XZW8 N 12 A_CanBob(); XZW8 N 1 A_FireSpark(2); XZW7 MNOPQ 2; Goto DoubleReady; NoZoom: XZW2 A 1 A_StartSound("biospark/prethird",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 A 12; + XZW5 A 12 A_CanBob(); XZW5 A 8 A_FailZoom(); - XZW2 A 20; + XZW2 A 20 A_CanBob(); Goto Ready; DoubleNoZoom: XZW5 Z 1 A_StartSound("biospark/prethird",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 N 12; + XZW8 N 12 A_CanBob(); XZW8 N 8 A_FailZoom(); - XZW5 Z 20; + XZW5 Z 20 A_CanBob(); Goto DoubleReady; Reload: XZW2 A 0 @@ -462,13 +425,13 @@ Class Sparkster : SWWMWeapon if ( invoker.clipcount > 0 ) { if ( !invoker.doublestacc && ((invoker.Ammo1.Amount > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo')) ) - return ResolveState("AttachExtra"); - return ResolveState("Idle"); + return ResolveState('AttachExtra'); + return ResolveState('Idle'); } if ( (invoker.Ammo1.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo') ) - return ResolveState("Idle"); + return ResolveState('Idle'); if ( invoker.doublestacc ) - return ResolveState("UnloadExtra"); + return ResolveState('UnloadExtra'); return ResolveState(null); } XZW2 A 2 @@ -481,6 +444,8 @@ Class Sparkster : SWWMWeapon { invoker.clipcount = 0; invoker.nomag = true; + A_BumpView(1); + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); A_StartSound("biospark/magout",CHAN_WEAPON,CHANF_OVERLAP); A_StopSound(CHAN_WEAPONEXTRA); } @@ -499,6 +464,8 @@ Class Sparkster : SWWMWeapon invoker.clipcount = 0; invoker.nomag = true; invoker.doublestacc = false; + A_BumpView(1); + A_QuakeEx(.3,.3,.3,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.1); A_StartSound("biospark/magout",CHAN_WEAPON,CHANF_OVERLAP); A_StopSound(CHAN_WEAPONEXTRA); A_StopSound(CHAN_WEAPONEXTRA2); @@ -515,11 +482,13 @@ Class Sparkster : SWWMWeapon invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); invoker.clipcount = invoker.default.clipcount; invoker.nomag = false; + A_BumpView(-1.5); + A_QuakeEx(.6,.6,.6,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); A_StartSound("biospark/magin",CHAN_WEAPON,CHANF_OVERLAP); A_StartSound("biospark/idle",CHAN_WEAPONEXTRA,CHANF_LOOP,.4,4.); } XZW3 UV 2; - XZW3 W 0 A_JumpIf((player.cmd.buttons&BT_RELOAD)&&((invoker.Ammo1.Amount>0)||sv_infiniteammo||FindInventory('PowerInfiniteAmmo')),"DoubleStacc"); + XZW3 W 0 A_JumpIf((player.cmd.buttons&BT_RELOAD)&&((invoker.Ammo1.Amount>0)||sv_infiniteammo||FindInventory('PowerInfiniteAmmo')),'DoubleStacc'); Goto Reload3; Reload3: XZW3 W 2; @@ -535,6 +504,8 @@ Class Sparkster : SWWMWeapon invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); invoker.clipcount += invoker.default.clipcount; invoker.doublestacc = true; + A_BumpView(-2); + A_QuakeEx(.75,.75,.75,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.25); A_StartSound("biospark/magin",CHAN_WEAPON,CHANF_OVERLAP); A_SoundVolume(CHAN_WEAPONEXTRA,.6); A_StartSound("biospark/idle2",CHAN_WEAPONEXTRA2,CHANF_LOOP,.2,4.); @@ -556,6 +527,8 @@ Class Sparkster : SWWMWeapon invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); invoker.clipcount += invoker.default.clipcount; invoker.doublestacc = true; + A_BumpView(-.8); + A_QuakeEx(.6,.6,.6,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.2); A_StartSound("biospark/magin",CHAN_WEAPON,CHANF_OVERLAP); A_SoundVolume(CHAN_WEAPONEXTRA,.6); A_StartSound("biospark/idle2",CHAN_WEAPONEXTRA2,CHANF_LOOP,.2,4.); @@ -569,7 +542,7 @@ Class Sparkster : SWWMWeapon { A_StartSound("biospark/checkout",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); - return A_JumpIf(invoker.doublestacc,"DoubleIdle"); + return A_JumpIf(invoker.doublestacc,'DoubleIdle'); } XZW5 BCDE 2; XZW5 FGHI 3; @@ -593,11 +566,16 @@ Class Sparkster : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_StartSound("biospark/meleestart",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); - return A_JumpIf(invoker.doublestacc,"DoubleUser1"); + return A_JumpIf(invoker.doublestacc,'DoubleUser1'); } - XZW4 EFG 2; - XZW4 H 1 A_Parry(9); - XZW4 IJ 1; + XZW4 EFG 2 A_BumpView(1,tics:2); + XZW4 H 1 + { + A_BumpFOV(.98); + A_QuakeEx(.8,.8,.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_Parry(9); + } + XZW4 IJ 1 A_BumpView(-4); XZW4 K 2 A_Melee(60,"demolitionist/whitm",1.,1.1,1.1); XZW4 LMNOPQ 2; XZW4 R 2 A_StartSound("biospark/meleeend",CHAN_WEAPON,CHANF_OVERLAP); @@ -605,9 +583,14 @@ Class Sparkster : SWWMWeapon Goto Ready; DoubleUser1: XZW5 Z 2; - XZW7 RST 2; - XZW7 U 1 A_Parry(9); - XZW7 VW 1; + XZW7 RST 2 A_BumpView(1,tics:2); + XZW7 U 1 + { + A_BumpFOV(.98); + A_QuakeEx(.8,.8,.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.3); + A_Parry(9); + } + XZW7 VW 1 A_BumpView(-4); XZW7 X 2 A_Melee(60,"demolitionist/whitm",1.,1.1); XZW7 YZ 2; XZW8 ABCD 2; @@ -617,7 +600,7 @@ Class Sparkster : SWWMWeapon Flash: XZWZ A 2 Bright { - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.args[0] = 192; l.args[1] = 255; l.args[2] = 96; diff --git a/zscript/weapons/swwm_sparkyboi_fx.zsc b/zscript/weapons/swwm_sparkyboi_fx.zsc index 298182c80..dacc1e86f 100644 --- a/zscript/weapons/swwm_sparkyboi_fx.zsc +++ b/zscript/weapons/swwm_sparkyboi_fx.zsc @@ -17,34 +17,6 @@ Class BiosparkExplLight2 : PaletteLight } } -Class SparkArcLight : PaletteLight -{ - Default - { - Tag "SparkExpl,2"; - Args 0,0,0,60; - ReactionTime 20; - } -} -Class SparkArcLightSmall : PaletteLight -{ - Default - { - Tag "SparkExpl,2"; - Args 0,0,0,30; - ReactionTime 10; - } -} -Class SparkArcLightBig : PaletteLight -{ - Default - { - Tag "SparkExpl,2"; - Args 0,0,0,90; - ReactionTime 40; - } -} - Class SparkBeamLight : PaletteLight { Default @@ -55,21 +27,17 @@ Class SparkBeamLight : PaletteLight } } -Class BiosparkHitbox : Actor +Class BiosparkHitbox : SWWMNonInteractiveActor { Default { Radius 8; Height 16; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; + -NOBLOCKMAP; } override void Tick() { - if ( !target || !target.InStateSequence(target.CurState,target.FindState("Spawn")) ) + if ( !target || !target.InStateSequence(target.CurState,target.FindState('Spawn')) ) { Destroy(); return; @@ -90,25 +58,19 @@ Class BigBiosparkHitbox : BiosparkHitbox } } -Class BigOrbiter : Actor +Class BigOrbiter : SWWMNonInteractiveActor { double anglevel, pitchvel; Default { - RenderStyle "Add"; + RenderStyle 'Add'; Scale 3.; - Radius .1; - Height 0.; - +NOINTERACTION; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; +FORCEXYBILLBOARD; } override void PostBeginPlay() { - if ( !target || target.InStateSequence(target.CurState,target.FindState("Death")) ) + if ( !target || target.InStateSequence(target.CurState,target.FindState('Death')) ) { Destroy(); return; @@ -118,21 +80,26 @@ Class BigOrbiter : Actor anglevel = FRandom[Sparkster](5,10); pitchvel = FRandom[Sparkster](5,10); speed = FRandom[Sparkster](20,40); - Vector3 x = swwm_CoordUtil.GetAxes(pitch,angle,0); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); SetOrigin(level.Vec3Offset(target.pos,x*speed+(0,0,target.height/2)),false); - SetState(FindState("Spawn")+Random[Sparkster](0,9)); + SetState(FindState('Spawn')+Random[Sparkster](0,9)); } override void Tick() { - if ( !target || target.InStateSequence(target.CurState,target.FindState("Death")) ) + if ( !target || target.InStateSequence(target.CurState,target.FindState('Death')) ) { Destroy(); return; } + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; angle += anglevel; pitch += pitchvel; - Vector3 x = swwm_CoordUtil.GetAxes(pitch,angle,0); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); SetOrigin(level.Vec3Offset(target.pos,x*speed+(0,0,target.height/2)),true); if ( tics > 0 ) tics--; if ( !SetState(CurState.NextState) ) @@ -158,7 +125,7 @@ Class BigBiospark : Actor if ( special1 <= 0 ) special1 = 4; for ( int i=0; i 8000) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || ((dist=Distance3DSquared(t)) > 64000000) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; Vector3 dirto = level.Vec3Diff(pos,t.Vec3Offset(0,0,t.height/2)).unit(); if ( dist > closest ) continue; closest = dist; tracer = t; } + bt.Destroy(); } if ( tracer && (tracer.Health > 0) && CheckSight(tracer,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) { @@ -255,37 +222,48 @@ Class BigBiospark : Actor angle = atan2(dir.y,dir.x); pitch = asin(-dir.z); // deal (proper) radius damage - let bt2 = BlockThingsIterator.Create(self,500); - while ( bt2.Next() ) + Array hitlist; + hitlist.Clear(); + // gather first, making sure to traverse through all portal groups just in case + BlockThingsIterator bt; + for ( int i=0; i= hitlist.Size() ) + hitlist.Push(t); + } + bt.Destroy(); + } + foreach ( t:hitlist ) + { + if ( !t ) continue; if ( SWWMUtility.SphereIntersect(t,pos,40) ) { - t.DamageMobj(self,target,4+special1,'Plasma'); + t.DamageMobj(self,target,4+special1,'Biospark'); if ( t.bISMONSTER && !Random[Sparkster](0,3) ) t.Howl(); Health--; } - if ( SWWMUtility.SphereIntersect(t,pos,120) ) - { - Vector3 dirto = level.Vec3Diff(pos,t.Vec3Offset(0,0,t.height/2)); - double dist = dirto.length(); - dirto /= dist; - if ( dist > 4. ) SWWMUtility.DoKnockback(t,-dirto,clamp(120.-dist,0.,120.)*100); - } + Vector3 dirto = level.Vec3Diff(pos,t.Vec3Offset(0,0,t.height/2)); + double dist = dirto.length(); + dirto /= dist; + if ( dist > 4. ) SWWMUtility.DoKnockback(t,-dirto,clamp(120.-dist,0.,120.)*100); } Health -= 3; - if ( bMISSILEMORE ) Health--; + if ( MissileChanceMult <= .5 ) Health--; if ( Health <= 0 ) ExplodeMissile(); } void A_BigSparkExplode() { A_StopSound(CHAN_VOICE); - A_AlertMonsters(swwm_uncapalert?0:15000); + A_AlertMonsters(swwm_uncapalert?0:15000,AMF_EMITFROMTARGET); SWWMUtility.DoExplosion(self,250,90000,300,100,flags:DE_HOWL); - A_QuakeEx(9,9,9,30,0,1400,"",QF_RELATIVE|QF_SCALEDOWN,falloff:500,rollIntensity:1.5); + A_QuakeEx(9.,9.,9.,30,0,1400,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:500,rollIntensity:1.5); A_StartSound("biospark/bighit",CHAN_ITEM,attenuation:.4); A_StartSound("biospark/bighit",CHAN_WEAPON,attenuation:.3); A_SprayDecal("ShockMarkBig",172); @@ -295,8 +273,8 @@ Class BigBiospark : Actor int numpt = Random[ExploS](40,60); for ( int i=0; i 50. ) magvel = 50.; Vector3 dir = vel.unit(); - if ( bMISSILEMORE ) - dir = (dir+(FRandom[Sparkster](-1,1),FRandom[Sparkster](-1,1),FRandom[Sparkster](-1,1))*FRandom[Sparkster](.006,.012)).unit(); + if ( MissileChanceMult <= .5 ) + dir = (dir+SWWMUtility.Vec3FromAngles(FRandom[Sparkster](0,360),FRandom[Sparkster](-90,90))*FRandom[Sparkster](.006,.012)).unit(); // check targets at an interval, to save on performance if ( !(special2%5) ) { double closest = double.infinity; - let bt = BlockThingsIterator.Create(self,500); - while ( bt.Next() ) + let bt = BlockThingsIterator.Create(self,8000); + foreach ( t,p,f:bt ) { - let t = bt.Thing; double dist; - if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || ((dist=Distance3D(t)) > 500) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || ((dist=Distance3DSquared(t)) > 250000) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; Vector3 dirto = level.Vec3Diff(pos,t.Vec3Offset(0,0,t.height/2)).unit(); if ( dir dot dirto < .5 ) continue; // don't seek stuff that's behind us if ( dist > closest ) continue; closest = dist; tracer = t; } + bt.Destroy(); } if ( tracer && (tracer.Health > 0) && CheckSight(tracer,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) { @@ -527,14 +510,14 @@ Class BiosparkBall : Actor return; } // proximity check - let bt = BlockThingsIterator.Create(self,100); - while ( bt.Next() ) + let bt = BlockThingsIterator.Create(self,256); + foreach ( t,p,f:bt ) { - let t = bt.Thing; if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain')) || (t.Health <= 0) || (target && t.IsFriend(target)) || !SWWMUtility.SphereIntersect(t,level.Vec3Offset(pos,vel),16) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; deto++; break; } + bt.Destroy(); } override void OnDestroy() { @@ -544,9 +527,9 @@ Class BiosparkBall : Actor void A_SparkExplode() { A_StopSound(CHAN_VOICE); - A_AlertMonsters(swwm_uncapalert?0:5000); + A_AlertMonsters(swwm_uncapalert?0:5000,AMF_EMITFROMTARGET); SWWMUtility.DoExplosion(self,50,20000,150,80,flags:DE_HOWL); - A_QuakeEx(6,6,6,16,0,800,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.8); + A_QuakeEx(6.,6.,6.,16,0,800,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollIntensity:.8); A_StartSound("biospark/hit",CHAN_ITEM,attenuation:.8); A_StartSound("biospark/hit",CHAN_WEAPON,attenuation:.6); A_SprayDecal("ShockMark",172); @@ -556,8 +539,8 @@ Class BiosparkBall : Actor int numpt = Random[ExploS](16,32); for ( int i=0; i hitlist; Array ShootThroughList; @@ -668,10 +650,9 @@ Class BiosparkTracer : LineTracer { if ( Results.HitType == TRACE_HitActor ) { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; if ( Results.HitActor.bSHOOTABLE || (Results.HitActor is 'BiosparkHitbox') ) { - let ent = new("HitListEntry"); + let ent = new('HitListEntry'); ent.hitactor = Results.HitActor; ent.hitlocation = Results.HitPos; ent.x = Results.HitVector; @@ -690,27 +671,25 @@ Class BiosparkTracer : LineTracer } } -Class BiosparkBeamImpact : Actor +Class BiosparkBeamImpact : SWWMNonInteractiveActor { Default { Obituary "$O_SPARKSTER"; - DamageType "Plasma"; - RenderStyle "Add"; - Radius .1; - Height 0; + SelfObituary "$SO_SPARKSTER"; + DamageType 'Biospark'; + RenderStyle 'Add'; +FOILINVUL; +FORCERADIUSDMG; +NODAMAGETHRUST; +FORCEXYBILLBOARD; - +NOINTERACTION; } override void PostBeginPlay() { Super.PostBeginPlay(); - A_AlertMonsters(swwm_uncapalert?0:2000); + A_AlertMonsters(swwm_uncapalert?0:2000,AMF_EMITFROMTARGET); SWWMUtility.DoExplosion(self,40,20000,100,40,flags:DE_HOWL); - A_QuakeEx(3,3,3,12,0,800,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.4); + A_QuakeEx(3.,3.,3.,12,0,800,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollIntensity:.4); A_StartSound("biospark/beamhit",CHAN_ITEM,attenuation:1.1); A_StartSound("biospark/beamhit",CHAN_WEAPON,attenuation:.8); A_SprayDecal("ShockMark",-172); @@ -720,8 +699,8 @@ Class BiosparkBeamImpact : Actor int numpt = Random[ExploS](8,16); for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -830,26 +796,20 @@ Class BiosparkBeamImpact : Actor } } -Class BiosparkComboImpactSub : Actor +Class BiosparkComboImpactSub : SWWMNonInteractiveActor { Default { Obituary "$O_SPARKSTER"; - DamageType "Plasma"; - RenderStyle "Add"; + SelfObituary "$SO_SPARKSTER"; + DamageType 'Biospark'; + RenderStyle 'Add'; Scale 1.4; Alpha .4; - Radius .1; - Height 0; +FOILINVUL; +FORCERADIUSDMG; +NODAMAGETHRUST; +FORCEXYBILLBOARD; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; } override void PostBeginPlay() { @@ -857,17 +817,6 @@ Class BiosparkComboImpactSub : Actor if ( !bAMBUSH ) return; SWWMUtility.DoExplosion(self,40,10000,300,120,flags:DE_HOWL); } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -876,25 +825,19 @@ Class BiosparkComboImpactSub : Actor } } -Class BiosparkComboImpact : Actor +Class BiosparkComboImpact : SWWMNonInteractiveActor { Default { Obituary "$O_SPARKSTER"; - DamageType "Plasma"; - RenderStyle "Add"; + SelfObituary "$SO_SPARKSTER"; + DamageType 'Biospark'; + RenderStyle 'Add'; Scale 2.; - Radius .1; - Height 0; +FOILINVUL; +FORCERADIUSDMG; +NODAMAGETHRUST; +FORCEXYBILLBOARD; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOTELEPORT; - +NOINTERACTION; } void FlashPlayer( int str, double rad ) { @@ -902,17 +845,17 @@ Class BiosparkComboImpact : Actor let mo = players[consoleplayer].Camera; double dist = Distance3D(mo); str = min(int(str*(1.-(dist/rad))),255); - SWWMHandler.DoFlash(mo,Color(str,248,255,240),10); - SWWMHandler.DoFlash(mo,Color(str,248,255,240),20); - SWWMHandler.DoFlash(mo,Color(str/2,192,255,160),30); - SWWMHandler.DoFlash(mo,Color(str/2,192,255,160),50); + SWWMHandler.DoFlash(mo,Color(str/2,248,255,240),20); + SWWMHandler.DoFlash(mo,Color(str/2,248,255,240),30); + SWWMHandler.DoFlash(mo,Color(str/4,192,255,160),40); + SWWMHandler.DoFlash(mo,Color(str/4,192,255,160),60); } override void PostBeginPlay() { Super.PostBeginPlay(); - A_AlertMonsters(swwm_uncapalert?0:6000); + A_AlertMonsters(swwm_uncapalert?0:6000,AMF_EMITFROMTARGET); SWWMUtility.DoExplosion(self,bAMBUSH?(400+Args[0]*25):200,bAMBUSH?120000:60000,bAMBUSH?500:300,bAMBUSH?350:150,DE_HOWL); - A_QuakeEx(9,9,9,25,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:600,rollIntensity:1.5); + A_QuakeEx(9.,9.,9.,25,0,2000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:600,rollIntensity:1.5); A_StartSound("biospark/bighit",CHAN_ITEM,attenuation:.4); A_StartSound("biospark/bighit",CHAN_WEAPON,attenuation:.3); A_SprayDecal("BigShockMark",172); @@ -922,8 +865,8 @@ Class BiosparkComboImpact : Actor int numpt = Random[ExploS](16,32); for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -1097,131 +1012,106 @@ Class BiosparkComboImpact : Actor } } -Class BiosparkBeam : Actor +Class BiosparkBeam : SWWMNonInteractiveActor { Vector3 nextpos, nextdir; - action void A_Trace() + void A_Trace() { - let t = new("BiosparkTracer"); + let t = new('BiosparkTracer'); t.hitlist.Clear(); - t.ignoreme = target; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); t.ShootThroughList.Clear(); - t.Trace(pos,CurSector,x,speed,TRACE_HitSky); - for ( int i=0; i 500) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; - Vector3 dirto = level.Vec3Diff(invoker.nextpos,t.Vec3Offset(0,0,t.height/2)); + if ( !t || (!(t is 'BiosparkHitbox') && (!t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)))) || ((dist=Distance3DSquared(t)) > 250000) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + Vector3 dirto = level.Vec3Diff(nextpos,t.Vec3Offset(0,0,t.height/2)); if ( dir dot dirto < .2 ) continue; if ( dist > closest ) continue; closest = dist; tracer = t; } + bt.Destroy(); if ( tracer ) { - Vector3 dirto = level.Vec3Diff(invoker.nextpos,tracer.Vec3Offset(0,0,tracer.height/2)); + Vector3 dirto = level.Vec3Diff(nextpos,tracer.Vec3Offset(0,0,tracer.height/2)); double dist = dirto.length(); if ( dist > 10 ) { dirto /= dist; - dir = (dir+.1*dirto*(clamp(1.-(dist/500.),0.,1.)**4.)).unit(); + double mul = (tracer is 'BiosparkHitbox')?.8:.2; + dir = (dir+mul*dirto*(clamp(1.-(dist/500.),0.,1.)**4.)).unit(); } } - if ( bMISSILEEVENMORE ) - dir = (dir+(FRandom[Sparkster](-1,1),FRandom[Sparkster](-1,1),FRandom[Sparkster](-1,1))*FRandom[Sparkster](.8,.16)).unit(); - else if ( bMISSILEMORE ) - dir = (dir+(FRandom[Sparkster](-1,1),FRandom[Sparkster](-1,1),FRandom[Sparkster](-1,1))*FRandom[Sparkster](.02,.04)).unit(); - invoker.nextdir = dir; + if ( MissileChanceMult <= .125 ) + dir = (dir+SWWMUtility.Vec3FromAngles(FRandom[Sparkster](0,360),FRandom[Sparkster](-90,90))*FRandom[Sparkster](.8,.16)).unit(); + else if ( MissileChanceMult <= .5 ) + dir = (dir+SWWMUtility.Vec3FromAngles(FRandom[Sparkster](0,360),FRandom[Sparkster](-90,90))*FRandom[Sparkster](.02,.04)).unit(); + nextdir = dir; } - action void A_Spread() + void A_Spread() { - let c = Spawn("BiosparkChildBeam",pos); + let c = Spawn('BiosparkChildBeam',pos); c.angle = angle; c.pitch = pitch; - if ( frame ) c.SetStateLabel("TrailSpawn"); + if ( frame ) c.SetStateLabel('TrailSpawn'); c.roll = Random[Sparkster](0,7)*45; - Vector3 tdir = level.Vec3Diff(pos,invoker.nextpos); + Vector3 tdir = level.Vec3Diff(pos,nextpos); int numpt = Random[Sparkster](-1,3); for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - Default { Obituary "$O_SPARKSTER"; - RenderStyle "Add"; + SelfObituary "$SO_SPARKSTER"; + RenderStyle 'Add'; DamageFunction 15; Speed 256; - Radius .1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; +INTERPOLATEANGLES; - +NOTELEPORT; +FOILINVUL; - +NOINTERACTION; } States { Spawn: - XZW1 # 1; - XZW1 # 1 A_Trace(); - XZW1 # 1 A_Spread(); - XZW1 # 1 A_Fade(); + XZW1 # 0 Bright; + XZW1 # 1 Bright A_Trace(); + XZW1 # 1 Bright A_Spread(); + XZW1 # 1 Bright A_Fade(); Wait; Dummy: XZW1 AB -1; @@ -1340,25 +1210,23 @@ Class BiosparkBeam : Actor } } -Class BiosparkChildBeam : Actor +Class BiosparkChildBeam : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - Radius .1; - Height 0; + RenderStyle 'Add'; Alpha .4; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; +INTERPOLATEANGLES; - +NOTELEPORT; +ROLLSPRITE; +ROLLCENTER; - +NOINTERACTION; } override void Tick() { + if ( freezetics > 0 ) + { + freezetics--; + return; + } if ( isFrozen() ) return; A_FadeOut(.02); if ( !CheckNoDelay() || (tics == -1) ) return; @@ -1374,13 +1242,13 @@ Class BiosparkChildBeam : Actor Spawn: XZW1 A -1 Bright NoDelay { - return FindState("StarterDev")+Random[Sparkster](0,11)*2; + return FindState('StarterDev')+Random[Sparkster](0,11)*2; } Stop; TrailSpawn: XZW2 A -1 Bright { - return FindState("TrailerDev")+Random[Sparkster](0,11)*2; + return FindState('TrailerDev')+Random[Sparkster](0,11)*2; } Stop; StarterDev: @@ -1460,69 +1328,45 @@ Class BiosparkChildBeam : Actor } } -Class BiosparkArc : Actor +Class BiosparkArc : SWWMNonInteractiveActor { Vector3 nextpos, nextdir; - action void A_Trace() + void A_Trace() { - let t = new("CandyBeamTracer"); + let t = new('CandyBeamTracer'); t.hitlist.Clear(); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); t.ShootThroughList.Clear(); - t.Trace(pos,CurSector,x,speed,TRACE_HitSky); - for ( int i=0; i 10 ) { @@ -1534,20 +1378,21 @@ Class BiosparkArc : Actor { double closest = double.infinity; let bt = BlockThingsIterator.Create(self,1500); - while ( bt.Next() ) + foreach ( t,p,f:bt ) { let t = bt.Thing; double dist; - if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || ((dist=Distance3D(t)) > 1500) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; - Vector3 dirto = level.Vec3Diff(invoker.nextpos,t.Vec3Offset(0,0,t.height/2)); + if ( !t || !t.bSHOOTABLE || (!t.bISMONSTER && !(t is 'BossBrain') && !t.player) || (t.Health <= 0) || (target && t.IsFriend(target)) || ((dist=Distance3DSquared(t)) > 2250000) || !CheckSight(t,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) continue; + Vector3 dirto = level.Vec3Diff(nextpos,t.Vec3Offset(0,0,t.height/2)); if ( dir dot dirto < .2 ) continue; if ( dist > closest ) continue; closest = dist; tracer = t; } + bt.Destroy(); if ( tracer ) { - Vector3 dirto = level.Vec3Diff(invoker.nextpos,tracer.Vec3Offset(0,0,tracer.height/2)); + Vector3 dirto = level.Vec3Diff(nextpos,tracer.Vec3Offset(0,0,tracer.height/2)); double dist = dirto.length(); if ( dist > 10 ) { @@ -1556,42 +1401,20 @@ Class BiosparkArc : Actor } } } - invoker.nextdir = dir; + nextdir = dir; } - action void A_Spread( Sound arcsnd = "", double attn = 1., int extra = 0 ) + void A_Spread( Sound arcsnd = "", double attn = 1., int extra = 0 ) { - Vector3 tdir = level.Vec3Diff(pos,invoker.nextpos); - if ( (extra > 1) && !Random[Sparkster](0,3) ) - { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - for ( int i=0; i<2; i++ ) - { - let r = Spawn("BiosparkArc",level.Vec3Offset(pos,tdir*FRandom[Sparkster](0,1))); - double a = FRandom[Sparkster](0,360), s = FRandom[Sparkster](0.,1.); - Vector3 sdir = (x+y*cos(a)*s+z*sin(a)*s).unit(); - r.angle = atan2(sdir.y,sdir.x); - r.pitch = asin(-sdir.z); - r.target = target; - r.master = master; - r.ReactionTime /= 3; - } - } if ( (special1 > ReactionTime) || bAMBUSH ) return; - let b = Spawn(GetClass(),invoker.nextpos); - b.angle = atan2(invoker.nextdir.y,invoker.nextdir.x); - b.pitch = asin(-invoker.nextdir.z); + let b = Spawn(GetClass(),nextpos); + b.angle = atan2(nextdir.y,nextdir.x); + b.pitch = asin(-nextdir.z); b.target = target; b.master = master; b.tracer = tracer; b.special1 = special1+1; b.special2 = special2; if ( (arcsnd != "") && !((special1+special2)%3) && !Random[Sparkster](0,3-extra) ) A_StartSound(arcsnd,CHAN_WEAPON,attenuation:attn); - if ( !((special1+special2)%8) && !Random[Sparkster](0,5) ) - { - let p = Spawn((extra>1)?"SparkArcLightBig":(extra>0)?"SparkArcLight":"SparkArcLightSmall",level.Vec3Offset(pos,tdir/2)); - p.args[3] = int(speed*8); - } } override void PostBeginPlay() { @@ -1599,33 +1422,16 @@ Class BiosparkArc : Actor frame = Random[Sparkster](0,11); if ( !special1 ) special2 = Random[Sparkster](0,8); } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } Default { Obituary "$O_SPARKSTER"; - RenderStyle "Add"; + SelfObituary "$SO_SPARKSTER"; + RenderStyle 'Add'; DamageFunction 6; - ReactionTime 10; + ReactionTime 15; Speed 16; - Radius .1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; +INTERPOLATEANGLES; - +NOTELEPORT; +FOILINVUL; - +NOINTERACTION; } States { @@ -1642,8 +1448,8 @@ Class BiosparkArcSmall : BiosparkArc { Default { - ReactionTime 10; DamageFunction 2; + ReactionTime 10; Speed 8; } States @@ -1661,8 +1467,8 @@ Class BiosparkArcBig : BiosparkArc { Default { - ReactionTime 10; DamageFunction 18; + ReactionTime 20; Speed 64; } States @@ -1676,37 +1482,20 @@ Class BiosparkArcBig : BiosparkArc } } -Class BiosparkSpark : Actor +Class BiosparkSpark : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; + RenderStyle 'Add'; Scale .8; - Radius .1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; +ROLLSPRITE; +ROLLCENTER; +FORCEXYBILLBOARD; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { Spawn: - SPKP A 1 Bright + BSPP A 1 Bright { A_SetScale(scale.x*specialf1); A_FadeOut(specialf2); @@ -1717,17 +1506,21 @@ Class BiosparkSpark : Actor Class BiosparkCore : Actor { + Mixin SWWMMissileFix; + Vector3 oldvel; double anglevel, pitchvel, rollvel; Default { Obituary "$O_SPARKSTER"; + SelfObituary "$SO_SPARKSTER"; + DamageType 'Biospark'; PROJECTILE; - BounceType "Hexen"; + BounceType 'Hexen'; +CANBOUNCEWATER; +USEBOUNCESTATE; - +DONTBOUNCEONSKY; + +BOUNCEMODIFIESPITCH; +NODAMAGETHRUST; +NOTELEPORT; +INTERPOLATEANGLES; @@ -1756,50 +1549,12 @@ Class BiosparkCore : Actor void A_HandleBounce() { bHITOWNER = true; - Vector3 HitNormal = -vel.unit(); - F3DFloor ff; - if ( BlockingFloor ) - { - // find closest 3d floor for its normal - for ( int i=0; i MaxAmount) && (Stamina > 0) ) + if ( !deathmatch && (Amount+item.Amount > MaxAmount) && (item.Stamina != 0) ) { // sell excess - int sellprice = int(Stamina*.5); - SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2)); - SWWMCredits.Give(Owner.player,sellprice); if ( Owner.player ) - Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),Owner.player.GetUserName(),GetTag(),sellprice); + { + int sellprice = abs(item.Stamina)/2; + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner); + Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + } + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } item.bPickupGood = true; } // give a spare @@ -76,12 +58,15 @@ Class ExplodiumGun : SWWMWeapon DualExplodiumGun(SisterWeapon).clipcount = DualExplodiumGun(SisterWeapon).default.clipcount; } // autoswitch if enabled - if ( !Owner.player.GetNeverSwitch() ) + if ( Owner.player && !Owner.player.GetNeverSwitch() ) Owner.player.PendingWeapon = SisterWeapon; // add the oneliner let demo = Demolitionist(Owner); - if ( demo && demo.mystats && !demo.mystats.GotWeapon(SisterWeapon.GetClass()) && Owner.CheckLocalView() ) + if ( demo && demo.mystats && !demo.mystats.GotWeapon(SisterWeapon.GetClass()) && (Owner.player == players[consoleplayer]) && !demo.ingivecheat ) + { SWWMHandler.AddOneliner(SWWMWeapon(SisterWeapon).GetLine,2); + demo.facegrin = true; + } item.bPickupGood = true; } return true; @@ -96,21 +81,21 @@ Class ExplodiumGun : SWWMWeapon invoker.chambered = invoker.clipcount; invoker.clipcount = max(invoker.clipcount-1,0); A_StartSound("explodium/fire",CHAN_WEAPON,CHANF_OVERLAP); - A_QuakeEx(5,5,5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5); + A_QuakeEx(4.5,4.5,4.5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.5); A_BumpFOV(.96); + A_BumpView(-.2); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,255,224,64),3); A_AlertMonsters(swwm_uncapalert?0:5000); A_PlayerFire(); - Vector3 x, y, z, x2, y2, z2; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 x = SWWMUtility.GetPlayerViewDir(self); SWWMUtility.DoKnockback(self,-x,4000.); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+3*y-2*z); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,3,-2); double a = FRandom[Spread](0,360), s = FRandom[Spread](0,.002); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - Vector3 dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); FLineTraceData d; - LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION|TRF_NOSKY,origin.z,origin.x,origin.y,d); + LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); SWWMBulletTrail.DoTrail(self,origin,dir,10000,2); if ( d.HitType == TRACE_HitActor ) { @@ -127,16 +112,17 @@ Class ExplodiumGun : SWWMWeapon dmg = d.HitActor.DamageMobj(p,self,dmg,'Explodium',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); if ( !d.HitActor || d.HitActor.bNOBLOOD || d.HitActor.bDORMANT || d.HitActor.bINVULNERABLE ) { - let p = Spawn("SWWMBulletImpact",d.HitLocation); + let p = Spawn('SWWMBulletImpact',d.HitLocation); p.angle = atan2(d.HitDir.y,d.HitDir.x)+180; p.pitch = asin(d.HitDir.z); + p.target = self; } - else + else if ( dmg > 0 ) { d.HitActor.TraceBleed(dmg,self); d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); } - let b = Spawn("ExplodiumBulletImpact",d.HitLocation-d.HitDir*4.); + let b = Spawn('ExplodiumBulletImpact',d.HitLocation-d.HitDir*4.); b.angle = atan2(d.HitDir.y,d.HitDir.x)+180; b.pitch = asin(d.HitDir.z); b.target = self; @@ -144,27 +130,13 @@ Class ExplodiumGun : SWWMWeapon else if ( d.HitType != TRACE_HitNone ) { invoker.deadeyecnt = 0; - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } - let p = Spawn("SWWMBulletImpact",d.HitLocation+hitnormal*0.01); + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + let p = Spawn('SWWMBulletImpact',d.HitLocation+hitnormal*0.01); p.angle = atan2(hitnormal.y,hitnormal.x); p.pitch = asin(-hitnormal.z); - if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); - let b = Spawn("ExplodiumBulletImpact",d.HitLocation+hitnormal*4.); + p.target = self; + if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + let b = Spawn('ExplodiumBulletImpact',d.HitLocation+hitnormal*4.); b.angle = atan2(hitnormal.y,hitnormal.x); b.pitch = asin(-hitnormal.z); b.target = self; @@ -173,7 +145,7 @@ Class ExplodiumGun : SWWMWeapon else invoker.deadeyecnt = 0; for ( int i=0; i<6; i++ ) { - let s = Spawn("SWWMSmoke",origin); + let s = Spawn('SWWMSmoke',origin); s.scale *= .15; s.alpha *= .5; s.speed *= .2; @@ -186,18 +158,21 @@ Class ExplodiumGun : SWWMWeapon invoker.deadeyecnt = 0; let weap = Weapon(invoker); if ( !weap ) return; - Vector3 x, y, z, x2, y2, z2; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-2*y-3*z); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-2,-3); double a = FRandom[Spread](0,360), s = FRandom[Spread](0,.005); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - Vector3 dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn("ExplodiumMagProj",origin); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + let p = Spawn('ExplodiumMagProj',origin); p.special1 = invoker.special1; p.target = self; p.angle = atan2(dir.y,dir.x); p.pitch = asin(-dir.z); p.vel = dir*p.speed; + if ( FindInventory('RagekitPower') ) + { + p.vel *= 4.; + p.ClearBounce(); + } if ( p.waterlevel <= 0 ) p.vel.z += 5.; p.vel += vel*.5; } @@ -206,10 +181,9 @@ Class ExplodiumGun : SWWMWeapon { invoker.deadeyecnt = 0; if ( swwm_nomagdrop ) return; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-2*y-10*z); - let c = Spawn("ExplodiumMag",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-2,-10); + let c = Spawn('ExplodiumMag',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-1.2,.3)-(0,0,FRandom[Junk](2,3)); @@ -218,10 +192,9 @@ Class ExplodiumGun : SWWMWeapon action void A_DropCasing() { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+8*y-10*z); - let c = Spawn("ExplodiumCasing",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,8,-10); + let c = Spawn('ExplodiumCasing',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](2,4)-(0,0,FRandom[Junk](2,3)); @@ -235,9 +208,31 @@ Class ExplodiumGun : SWWMWeapon override bool Use( bool pickup ) { - // switch to dual if already selected - if ( Owner.player && (Owner.player.ReadyWeapon == self) && (Amount > 1) ) + // switch to dual if already selected or if first selecting (unless disabled) + if ( Owner.player && (Amount > 1) && ((Owner.player.ReadyWeapon == self) || ((Owner.player.ReadyWeapon != SisterWeapon) && !swwm_singlefirst)) ) { + // if the player's current weapon is a gesture, set sister as the former weapon, to avoid breaking gesture sequences + if ( Owner.player.ReadyWeapon is 'SWWMGesture' ) + { + let g = SWWMGesture(Owner.player.ReadyWeapon); + g.formerweapon = SisterWeapon; + } + else if ( Owner.player.PendingWeapon is 'SWWMGesture' ) + { + let g = SWWMGesture(Owner.player.PendingWeapon); + g.formerweapon = SisterWeapon; + } + else if ( Owner.player.ReadyWeapon is 'SWWMItemGesture' ) + { + let ig = SWWMItemGesture(Owner.player.ReadyWeapon); + ig.gest.formerweapon = SisterWeapon; + } + else if ( Owner.player.PendingWeapon is 'SWWMItemGesture' ) + { + let ig = SWWMItemGesture(Owner.player.PendingWeapon); + ig.gest.formerweapon = SisterWeapon; + } + else Owner.player.PendingWeapon = self; Owner.player.PendingWeapon = SisterWeapon; return false; } @@ -261,11 +256,11 @@ Class ExplodiumGun : SWWMWeapon SisterWeapon.Destroy(); } // reattach our glow if we became a pickup - if ( (PickupFlash is 'SWWMPickupFlash') && swwm_itemglows ) + if ( PickupFlash is 'SWWMPickupFlash' ) { - let p = Spawn(PickupFlash,Vec3Offset(0,0,16)); + let p = Spawn(PickupFlash,pos); p.target = self; - p.SetStateLabel("Pickup"); + p.SetStateLabel('Pickup'); } } else if ( SisterWeapon ) @@ -278,7 +273,7 @@ Class ExplodiumGun : SWWMWeapon if ( Owner.player.ReadyWeapon == SisterWeapon ) { Owner.player.ReadyWeapon = self; - Owner.player.SetPSprite(PSP_WEAPON,FindState("Ready")); + Owner.player.SetPSprite(PSP_WEAPON,FindState('Ready')); Owner.player.SetPSprite(PSP_WEAPON+1,null); // delete left weapon psprite } } @@ -322,28 +317,27 @@ Class ExplodiumGun : SWWMWeapon Super.PlayUpSound(origin); } + override void SetTags( String colname ) + { + A_ChangeModel("",1,"","",0,"models","DemoTags"..colname..".png",CMDL_USESURFACESKIN,-1); + } + Default { - //$Title Explodium Gun - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_ExplodiumGun.png - //$Icon weapon Tag "$T_EXPLODIUM"; + Inventory.Icon "graphics/HUD/Icons/W_ExplodiumGun.png"; Inventory.PickupMessage "$T_EXPLODIUM"; Obituary "$O_EXPLODIUM"; SWWMWeapon.Tooltip "$TT_EXPLODIUM"; SWWMWeapon.GetLine "getexplodiumgun1"; - Inventory.Icon "graphics/HUD/Icons/W_ExplodiumGun.png"; Weapon.UpSound "explodium/select"; Weapon.SlotNumber 2; Weapon.SelectionOrder 1000; Inventory.MaxAmount 2; - Weapon.SisterWeapon "DualExplodiumGun"; + Weapon.SisterWeapon 'DualExplodiumGun'; Stamina 8000; ExplodiumGun.ClipCount 7; +WEAPON.EXPLOSIVE; - Radius 12; - Height 24; } States { @@ -355,9 +349,10 @@ Class ExplodiumGun : SWWMWeapon { invoker.deadeyecnt = 0; A_FullRaise(); - return A_JumpIf(invoker.firstselect,"FirstSelect"); + return A_JumpIf(invoker.firstselect,'FirstSelect'); } - XZW2 CDEFGH 2; + XZW2 CDE 2 A_BumpView(-.1,tics:2); + XZW2 FGH 2 A_BumpView(.05,tics:2); Goto Ready; FirstSelect: XZW2 B 1 A_JumpIf(level.maptime>8,1); @@ -367,14 +362,15 @@ Class ExplodiumGun : SWWMWeapon invoker.firstselect = false; invoker.PlayUpSound(self); } - XZW2 CDEFGH 2; + XZW2 CDE 2 A_BumpView(-.1,tics:2); + XZW2 FGH 2 A_BumpView(.05,tics:2); XZW2 A 2; Goto Slide; Ready: XZW2 A 1 { - if ( invoker.firstselect ) player.SetPSprite(PSP_WEAPON,ResolveState("FirstSelect")); - else if ( (invoker.clipcount > 0) && !invoker.chambered ) player.SetPSprite(PSP_WEAPON,ResolveState("Slide")); + if ( invoker.firstselect ) player.SetPSprite(PSP_WEAPON,ResolveState('FirstSelect')); + else if ( (invoker.clipcount > 0) && !invoker.chambered ) player.SetPSprite(PSP_WEAPON,ResolveState('Slide')); else A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWUSER1|WRF_ALLOWRELOAD); } Wait; @@ -382,14 +378,14 @@ Class ExplodiumGun : SWWMWeapon XZW2 A 1 { A_Schutt(); - return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,"FireLast"); + return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,'FireLast'); } XZW2 I 1; XZW2 J 1 { - int layer = PSP_WEAPON+1; + int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"Casing"); + A_Overlay(layer,'Casing'); } XZW2 KLMNOP 1; XZW2 Q 2; @@ -399,9 +395,9 @@ Class ExplodiumGun : SWWMWeapon XZWA K 1; XZWA L 1 { - int layer = PSP_WEAPON+1; + int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"Casing"); + A_Overlay(layer,'Casing'); } XZWA M 1; XZWA N 1 A_StartSound("explodium/slidelock",CHAN_WEAPON,CHANF_OVERLAP); @@ -416,13 +412,23 @@ Class ExplodiumGun : SWWMWeapon XZWB E 1 { invoker.clipcount = 0; } XZWB F 1; XZWB G 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWB HIJK 1; + XZWB H 1 A_BumpView(.3); + XZWB IJK 1; XZWB L 1 A_DropMag(); XZWB MNOPQR 1; - XZWB S 1 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); + XZWB S 1 + { + A_BumpView(-.1); + A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); + } XZWB TUVWXYZ 1; XZWC ABCD 1; - XZWC E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; } + XZWC E 1 + { + A_BumpView(-.4); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.clipcount = invoker.default.clipcount; + } XZWC FGHI 1; XZWC J 1 { @@ -448,7 +454,7 @@ Class ExplodiumGun : SWWMWeapon XZW2 A 2 { A_PlayerReload(); - return A_JumpIf(invoker.clipcount<=0,"Reload"); + return A_JumpIf(invoker.clipcount<=0,'Reload'); } XZW5 NO 2; XZW5 P 1 A_StartSound("explodium/magpin",CHAN_WEAPON,CHANF_OVERLAP); @@ -465,7 +471,9 @@ Class ExplodiumGun : SWWMWeapon A_StartSound("explodium/throwmag",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW6 EFGHIJKLMNOPRS 1; + XZW6 EFGHI 1 A_BumpView(.25); + XZW6 JKLMNO 1; + XZW6 PRS 1 A_BumpView(-1.5); XZW6 T 1 A_ThrowMag(); XZW6 UV 2; XZW6 W 2 @@ -479,9 +487,9 @@ Class ExplodiumGun : SWWMWeapon Reload: XZW2 A 1 { - if ( invoker.clipcount >= invoker.default.clipcount ) return ResolveState("CheckBullet"); + if ( invoker.clipcount >= invoker.default.clipcount ) return ResolveState('CheckBullet'); A_PlayerReload(); - if ( invoker.clipcount <= 0 ) return ResolveState("ReloadEmpty"); + if ( invoker.clipcount <= 0 ) return ResolveState('ReloadEmpty'); return ResolveState(null); } XZW2 TUVWXYZ 1; @@ -489,32 +497,43 @@ Class ExplodiumGun : SWWMWeapon XZW3 B 1 { invoker.clipcount = 0; } XZW3 C 1; XZW3 D 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 EFGH 1; + XZW3 E 1 A_BumpView(.3); + XZW3 FGH 1; XZW3 I 1 A_DropMag(); Goto ReloadEnd; ReloadEmpty: XZW2 A 1; XZW3 JKLMNOPQRS 1; XZW3 T 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 UVWX 1; + XZW3 U 1 A_BumpView(.3); + XZW3 VWX 1; XZW3 Y 1 A_DropMag(); Goto ReloadEnd; ReloadEnd: XZW3 Z 1; XZW4 ABCDE 1; - XZW4 F 1 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 F 1 + { + A_BumpView(-.1); + A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); + } XZW4 GHIJKLMNOPQ 1; - XZW4 R 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; } + XZW4 R 1 + { + A_BumpView(-.4); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.clipcount = invoker.default.clipcount; + } XZW4 STUV 1; - XZW2 A 1 A_JumpIf(!invoker.chambered,"Slide"); + XZW2 A 1 A_JumpIf(!invoker.chambered,'Slide'); Goto Ready; Slide: XZW2 A 1; - XZW4 WXY 1; + XZW4 WXY 1 A_BumpView(-.1); XZW5 A 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZW5 BC 1; XZW5 D 1 { invoker.chambered = true; invoker.clipcount--; } - XZW5 EFG 1; + XZW5 EFG 1 A_BumpView(.1); XZW5 H 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); XZW5 IJKLM 1; Goto Ready; @@ -522,54 +541,71 @@ Class ExplodiumGun : SWWMWeapon XZW2 A 1 { A_PlayerCheckGun(); - return A_Jump(256,"Zoom1","Zoom2","Zoom2"); + return A_Jump(256,'Zoom1','Zoom2','Zoom2'); } Goto Ready; CheckBullet: XZW2 A 1; - XZW7 ABCDE 1; + XZW7 A 1 A_Overlay(PSP_WEAPON+1,'CheckBulletCasing'); + XZW7 BCDE 1 A_BumpView(-.2); XZW7 F 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZW7 GHIJKLMNOP 1; - XZW7 Q 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); + XZW7 Q 1 + { + A_BumpView(.6); + A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); + } XZW7 RS 1; Goto Ready; + CheckBulletCasing: + XZWC QRSTUVWXYZ 1; + XZWD ABCDEFGHI 1; + Stop; User1: XZW2 A 1; - XZW7 TU 1; + XZW7 TU 1 A_BumpView(.1); User1Hold: XZW7 V 1 { + A_BumpAngle(1.); A_PlayerMelee(true); A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP); A_Parry(9); } - XZW7 WX 1; + XZW7 WX 1 A_BumpAngle(-.5); XZW7 Y 1 A_Melee(); XZW7 Z 2; XZW8 ABCDE 2; - XZW8 F 1 A_JumpIf(player.cmd.buttons&BT_USER1,"User1Hold"); + XZW8 F 1 A_JumpIf(player.cmd.buttons&BT_USER1,'User1Hold'); XZW2 B 0 { invoker.PlayUpSound(self); } Goto Select; Zoom1: XZW2 A 2 A_StartSound("explodium/checkout",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 GHIJKLMNOPQRSTUVWXYZ 2; + XZW8 GHIJ 2 A_BumpView(-.2); + XZW8 KLMNO 2 A_BumpView(-.3); + XZW8 PQR 2 A_BumpView(.5); + XZW8 STUV 2 A_BumpView(.2); + XZW8 WXYZ 2; Goto Ready; Zoom2: XZW2 A 1 A_StartSound("explodium/speen",CHAN_WEAPON,CHANF_OVERLAP); - XZW9 ABCDEFGHIJKLMNOPQRSTUVW 1; + XZW9 ABCD 1 A_BumpView(.2); + XZW9 EFGHIJ 1 A_BumpView(-.2); + XZW9 KLMNOP 1 A_BumpView(-.1); + XZW9 QRST 1 A_BumpView(.3); + XZW9 UVW 1; Goto Ready; Deselect: XZW2 A 2 A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZWA TUVW 2; - XZW2 B 2; + XZWA TUVW 2 A_BumpView(.1,tics:2); XZW2 B -1 A_FullLower(); Stop; Flash: - XZWZ A 2 + XZWZ A 2 Bright { let psp = player.GetPSprite(PSP_FLASH); psp.frame = Random[GunFlash](0,9); - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.target = self; } Stop; @@ -582,45 +618,12 @@ Class DualExplodiumGun : SWWMWeapon int clipcount; bool chambered; double casex, casey, lcasex, lcasey; - transient ui TextureID WeaponBox; Property ClipCount : ClipCount; - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + override Vector3 GetTraceOffset( int index ) { - if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/DualExplodiumDisplay.png",TexMan.Type_Any); - Screen.DrawTexture(WeaponBox,false,bx-48,by-22,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - if ( ExplodiumGun(SisterWeapon).chambered ) Screen.DrawText(smallfont,Font.CR_FIRE,bx-22,by-20,"⁺¹",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Spacing,-1); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-19,by-13,String.Format("%d",max(ExplodiumGun(SisterWeapon).clipcount,0)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - if ( chambered ) Screen.DrawText(smallfont,Font.CR_FIRE,bx-46,by-20,"⁺¹",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Spacing,-1); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-43,by-13,String.Format("%d",max(clipcount,0)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - - override void RenderUnderlay( RenderEvent e ) - { - Super.RenderUnderlay(e); - // draw both crosshairs - SWWMWeapon(SisterWeapon).RenderUnderlay(e); - } - - override void HudTick() - { - if ( !Owner ) return; - [cpos, ccol] = TraceForCrosshair(); - let sw = SWWMWeapon(SisterWeapon); - // avoid jumpy switching - if ( (Owner.player.PendingWeapon is 'SWWMWeapon') && (Owner.player.PendingWeapon != sw) ) - { - SWWMWeapon(Owner.player.PendingWeapon).cpos = sw.cpos; - SWWMWeapon(Owner.player.PendingWeapon).lagvpos = sw.lagvpos; - SWWMWeapon(Owner.player.PendingWeapon).prevframe = sw.prevframe; - } - [sw.cpos, sw.ccol] = sw.TraceForCrosshair(); - } - - override Vector3 GetTraceOffset() - { - if ( Owner.player.ReadyWeapon == SisterWeapon ) return (10.,-3.,-2.); + if ( index == 1 ) return (10.,3.5,-2.); return (10.,-3.5,-2.); } @@ -658,24 +661,24 @@ Class DualExplodiumGun : SWWMWeapon invoker.clipcount = max(invoker.clipcount-1,0); } A_StartSound("explodium/fire",CHAN_WEAPON,CHANF_OVERLAP); - A_QuakeEx(5,5,5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.5); + A_QuakeEx(4.5,4.5,4.5,3,0,10,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.5); A_BumpFOV(.96); + A_BumpView(-.2); if ( side == 1 ) - A_SWWMFlash("Flash"); + A_SWWMFlash('Flash'); else if ( side == -1 ) - A_LeftFlash("LeftFlash"); + A_LeftFlash('LeftFlash'); SWWMHandler.DoFlash(self,Color(64,255,224,64),3); A_AlertMonsters(swwm_uncapalert?0:5000); A_PlayerFire(); - Vector3 x, y, z, x2, y2, z2; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 x = SWWMUtility.GetPlayerViewDir(self); SWWMUtility.DoKnockback(self,-x,4000.); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+3.5*side*y-2*z); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,3.5*side,-2); double a = FRandom[Spread](0,360), s = FRandom[Spread](0,.002); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - Vector3 dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); FLineTraceData d; - LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION|TRF_NOSKY,origin.z,origin.x,origin.y,d); + LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); SWWMBulletTrail.DoTrail(self,origin,dir,10000,2); if ( d.HitType == TRACE_HitActor ) { @@ -692,16 +695,17 @@ Class DualExplodiumGun : SWWMWeapon dmg = d.HitActor.DamageMobj(p,self,dmg,'Explodium',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT || d.HitActor.bINVULNERABLE ) { - let p = Spawn("SWWMBulletImpact",d.HitLocation); + let p = Spawn('SWWMBulletImpact',d.HitLocation); p.angle = atan2(d.HitDir.y,d.HitDir.x)+180; p.pitch = asin(d.HitDir.z); + p.target = self; } - else + else if ( dmg > 0 ) { d.HitActor.TraceBleed(dmg,self); d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); } - let b = Spawn("ExplodiumBulletImpact",d.HitLocation-d.HitDir*4.); + let b = Spawn('ExplodiumBulletImpact',d.HitLocation-d.HitDir*4.); b.angle = atan2(d.HitDir.y,d.HitDir.x)+180; b.pitch = asin(d.HitDir.z); b.target = self; @@ -709,27 +713,13 @@ Class DualExplodiumGun : SWWMWeapon else if ( d.HitType != TRACE_HitNone ) { ExplodiumGun(invoker.SisterWeapon).deadeyecnt = 0; - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } - let p = Spawn("SWWMBulletImpact",d.HitLocation+hitnormal*0.01); + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + let p = Spawn('SWWMBulletImpact',d.HitLocation+hitnormal*0.01); p.angle = atan2(hitnormal.y,hitnormal.x); p.pitch = asin(-hitnormal.z); - if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); - let b = Spawn("ExplodiumBulletImpact",d.HitLocation+hitnormal*4.); + p.target = self; + if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + let b = Spawn('ExplodiumBulletImpact',d.HitLocation+hitnormal*4.); b.angle = atan2(hitnormal.y,hitnormal.x); b.pitch = asin(-hitnormal.z); b.target = self; @@ -738,7 +728,7 @@ Class DualExplodiumGun : SWWMWeapon else ExplodiumGun(invoker.SisterWeapon).deadeyecnt = 0; for ( int i=0; i<6; i++ ) { - let s = Spawn("SWWMSmoke",origin); + let s = Spawn('SWWMSmoke',origin); s.scale *= .15; s.alpha *= .5; s.speed *= .2; @@ -750,10 +740,9 @@ Class DualExplodiumGun : SWWMWeapon { ExplodiumGun(invoker.SisterWeapon).deadeyecnt = 0; if ( swwm_nomagdrop ) return; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-2*side*y-10*z); - let c = Spawn("ExplodiumMag",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-2*side,-10); + let c = Spawn('ExplodiumMag',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*side*FRandom[Junk](-1.2,.3)-(0,0,FRandom[Junk](2,3)); @@ -762,10 +751,9 @@ Class DualExplodiumGun : SWWMWeapon action void A_DropCasing( int side = 1 ) { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+8*side*y-10*z); - let c = Spawn("ExplodiumCasing",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,8*side,-10); + let c = Spawn('ExplodiumCasing',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*side*FRandom[Junk](2,4)-(0,0,FRandom[Junk](2,3)); @@ -776,6 +764,13 @@ Class DualExplodiumGun : SWWMWeapon { return (SisterWeapon&&(SisterWeapon.Amount > 1)); } + override bool Use( bool pickup ) + { + // need to override here because other mods could screw it up + if ( !SisterWeapon || (SisterWeapon.Amount < 2) ) + return false; + return Super.Use(pickup); + } override bool ReportHUDAmmo() { @@ -791,15 +786,22 @@ Class DualExplodiumGun : SWWMWeapon return SisterWeapon.CreateTossable(amt); } + override void SetTags( String colname ) + { + Super.SetTags(colname); + // also set tag for the second gun + A_ChangeModel("",3,"","",0,"models","DemoTags"..colname..".png",CMDL_USESURFACESKIN,-1); + } + Default { Tag "$T_EXPLODIUM2"; Obituary "$O_EXPLODIUM"; SWWMWeapon.Tooltip "$TT_EXPLODIUM2"; SWWMWeapon.GetLine "getexplodiumgun2"; - Inventory.Icon "graphics/HUD/Icons/W_ExplodiumGun2.png"; + SWWMWeapon.NumCrosshairs 2; Weapon.UpSound "explodium/select"; - Weapon.SisterWeapon "ExplodiumGun"; + Weapon.SisterWeapon 'ExplodiumGun'; Weapon.SlotNumber 2; Weapon.SelectionOrder 950; Weapon.SlotPriority 2.; @@ -817,12 +819,20 @@ Class DualExplodiumGun : SWWMWeapon A_FullRaise(); ExplodiumGun(invoker.SisterWeapon).firstselect = false; } - XZW2 C 2; - XZW2 D 2 { player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftSelect")); } - XZW2 EFGHAA 2; + XZW2 C 2 A_BumpView(-.1,tics:2); + XZW2 D 2 + { + A_BumpView(-.1,tics:2); + player.SetPSprite(PSP_WEAPON+1,ResolveState('LeftSelect')); + } + XZW2 E 2 A_BumpView(-.1,tics:2); + XZW2 FGH 2 A_BumpView(.05,tics:2); + XZW2 AA 2; Goto Ready; LeftSelect: - XZWB BCDEFGH 2; + XZWB B 2; + XZWB CDE 2 A_BumpView(-.1,tics:2); + XZWB FGH 2 A_BumpView(.05,tics:2); Goto LeftReady; Ready: XZW2 A 1 @@ -831,31 +841,32 @@ Class DualExplodiumGun : SWWMWeapon let sis = player.FindPSprite(PSP_WEAPON+1); if ( !sis ) { - player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftReady")); + player.SetPSprite(PSP_WEAPON+1,ResolveState('LeftReady')); sis = player.FindPSprite(PSP_WEAPON+1); } - if ( sis.CurState.InStateSequence(ResolveState("LeftReady")) ) + if ( sis.CurState.InStateSequence(ResolveState('LeftReady')) ) { if ( (ExplodiumGun(invoker.SisterWeapon).clipcount > 0) && !ExplodiumGun(invoker.SisterWeapon).chambered ) - player.SetPSprite(PSP_WEAPON,ResolveState("Slide")); + player.SetPSprite(PSP_WEAPON,ResolveState('Slide')); else if ( (invoker.clipcount > 0) && !invoker.chambered ) - player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftSlide")); - else if ( (player.cmd.buttons&BT_RELOAD) && (ExplodiumGun(invoker.SisterWeapon).clipcount < ExplodiumGun(invoker.SisterWeapon).default.clipcount) - && (ExplodiumGun(invoker.SisterWeapon).clipcount <= invoker.clipcount) ) // give priority only if less than left hand - player.SetPSprite(PSP_WEAPON,ResolveState("Reload")); + player.SetPSprite(PSP_WEAPON+1,ResolveState('LeftSlide')); + else if ( (player.cmd.buttons&BT_RELOAD) && (ExplodiumGun(invoker.SisterWeapon).clipcount < ExplodiumGun(invoker.SisterWeapon).default.clipcount) ) + player.SetPSprite(PSP_WEAPON,ResolveState('Reload')); else A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWUSER1); } else { // left weapon isn't ready, but we can still reload right weapon if needed - if ( (player.cmd.buttons&BT_RELOAD) && (ExplodiumGun(invoker.SisterWeapon).clipcount < ExplodiumGun(invoker.SisterWeapon).default.clipcount) - && (ExplodiumGun(invoker.SisterWeapon).clipcount <= invoker.clipcount) ) // give priority only if less than left hand - player.SetPSprite(PSP_WEAPON,ResolveState("Reload")); + if ( (player.cmd.buttons&BT_RELOAD) && (ExplodiumGun(invoker.SisterWeapon).clipcount < ExplodiumGun(invoker.SisterWeapon).default.clipcount) ) + player.SetPSprite(PSP_WEAPON,ResolveState('Reload')); else { int flg = WRF_NOSWITCH|WRF_NOSECONDARY; if ( !ExplodiumGun(invoker.SisterWeapon).chambered ) flg |= WRF_NOPRIMARY; + // don't bob while the left weapon is firing + if ( sis.CurState.InStateSequence(ResolveState('LeftFire')) || sis.CurState.InStateSequence(ResolveState('LeftFireLast')) ) + flg |= WRF_NOBOB; A_WeaponReady(flg); } } @@ -866,26 +877,28 @@ Class DualExplodiumGun : SWWMWeapon { let sis = player.FindPSprite(PSP_WEAPON); if ( (invoker.clipcount <= 0) && !invoker.chambered ) - player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftReloadLast")); - else if ( (player.cmd.buttons&BT_RELOAD) && (invoker.clipcount < invoker.default.clipcount) - && (invoker.clipcount <= ExplodiumGun(invoker.SisterWeapon).clipcount) ) // give priority only if less than right hand - player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftReload")); + player.SetPSprite(PSP_WEAPON+1,ResolveState('LeftReloadLast')); + else if ( (player.cmd.buttons&BT_RELOAD) && (invoker.clipcount < invoker.default.clipcount) ) + player.SetPSprite(PSP_WEAPON+1,ResolveState('LeftReload')); else if ( player.cmd.buttons&BT_ALTATTACK && invoker.chambered ) - player.SetPSprite(PSP_WEAPON+1,ResolveState("LeftFire")); + player.SetPSprite(PSP_WEAPON+1,ResolveState('LeftFire')); + // allow bobbing while the right weapon reloads + if ( !sis.CurState.InStateSequence(ResolveState('Fire')) && !sis.CurState.InStateSequence(ResolveState('FireLast')) ) + A_CanBob(); } Wait; Fire: XZW2 A 1 { A_Schutt(); - return A_JumpIf((ExplodiumGun(invoker.SisterWeapon).clipcount<=0)&&!ExplodiumGun(invoker.SisterWeapon).chambered,"FireLast"); + return A_JumpIf((ExplodiumGun(invoker.SisterWeapon).clipcount<=0)&&!ExplodiumGun(invoker.SisterWeapon).chambered,'FireLast'); } XZW2 I 1; XZW2 J 1 { int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"Casing"); + A_Overlay(layer,'Casing'); } XZW2 KLMNOP 1; XZW2 Q 2; @@ -897,7 +910,7 @@ Class DualExplodiumGun : SWWMWeapon { int layer = PSP_WEAPON+1; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"Casing"); + A_Overlay(layer,'Casing'); } XZWI M 1; XZWI N 1 A_StartSound("explodium/slidelock",CHAN_WEAPON,CHANF_OVERLAP); @@ -910,18 +923,25 @@ Class DualExplodiumGun : SWWMWeapon A_PlayerReload(); A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); } - XZWI WXYZ 2; - XZWJ AB 2; + XZWI WXY 2 A_BumpView(.2,tics:2); + XZWI Z 2 A_BumpView(.1,tics:2); + XZWJ AB 2 A_BumpView(.1,tics:2); XZWJ CD 1; XZWJ E 1 { ExplodiumGun(invoker.SisterWeapon).clipcount = 0; } XZWJ F 1; XZWJ G 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWJ HIJ 1; + XZWJ H 1 A_BumpView(.2); + XZWJ IJ 1; XZWJ K 0 A_DropMag(); XZWJ LMN 3; XZWJ O 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); XZWJ PQR 2; - XZWJ S 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; } + XZWJ S 1 + { + A_BumpView(-.2); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; + } XZWJ TUVW 1; XZWJ X 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP); XZWJ Y 2 @@ -937,14 +957,14 @@ Class DualExplodiumGun : SWWMWeapon XZWB A 1 { A_Schutt(-1); - return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,"LeftFireLast"); + return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,'LeftFireLast'); } XZWB I 1; XZWB J 1 { int layer = PSP_WEAPON+12; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"LeftCasing"); + A_Overlay(layer,'LeftCasing'); } XZWB KLMNOP 1; XZWB Q 2; @@ -956,7 +976,7 @@ Class DualExplodiumGun : SWWMWeapon { int layer = PSP_WEAPON+1; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"Casing"); + A_Overlay(layer,'LeftCasing'); } XZWK S 1; XZWK T 1 A_StartSound("explodium/slidelock",CHAN_WEAPON,CHANF_OVERLAP); @@ -967,8 +987,8 @@ Class DualExplodiumGun : SWWMWeapon XZWK Z 4 { let sis = player.FindPSprite(PSP_WEAPON); - if ( !sis.CurState.InStateSequence(ResolveState("Reload")) && !sis.CurState.InStateSequence(ResolveState("ReloadEmpty")) && !sis.CurState.InStateSequence(ResolveState("ReloadLast")) ) - return ResolveState("LeftReloadLast")+1; + if ( !sis.CurState.InStateSequence(ResolveState('Reload')) && !sis.CurState.InStateSequence(ResolveState('ReloadEmpty')) && !sis.CurState.InStateSequence(ResolveState('ReloadLast')) ) + return ResolveState('LeftReloadLast')+1; return ResolveState(null); } XZWK Z 1 @@ -976,17 +996,24 @@ Class DualExplodiumGun : SWWMWeapon A_PlayerReload(); A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); } - XZWL ABCDEF 2; + XZWL ABC 2 A_BumpView(.2,tics:2); + XZWL DEF 2 A_BumpView(.1,tics:2); XZWL GH 1; XZWL I 1 { invoker.clipcount = 0; } XZWL J 1; XZWL K 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWL LMN 1; + XZWL L 1 A_BumpView(.2); + XZWL MN 1; XZWL O 0 A_DropMag(); XZWL PQR 3; XZWL S 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); XZWL TUV 2; - XZWL W 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; } + XZWL W 1 + { + A_BumpView(-.2); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.clipcount = invoker.default.clipcount; + } XZWL XYZ 1; XZWM A 1; XZWM B 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP); @@ -1020,22 +1047,22 @@ Class DualExplodiumGun : SWWMWeapon Stop; Lower: XZW2 A 2; - XZW7 TUV 2; + XZW7 TUV 2 A_BumpView(.1,tics:2); XZW2 B -1; Stop; LeftLower: XZWB A 2; - XZWG TUV 2; + XZWG TUV 2 A_BumpView(.1,tics:2); XZWB B -1; Stop; Raise: XZW2 B 2; - XZW7 VUT 2; + XZW7 VUT 2 A_BumpView(-.1,tics:2); XZW2 A 1; Goto Ready; LeftRaise: XZWB B 2; - XZWG VUT 2; + XZWG VUT 2 A_BumpView(-.1,tics:2); XZWB A 1; Goto LeftReady; Reload: @@ -1043,38 +1070,49 @@ Class DualExplodiumGun : SWWMWeapon { A_PlayerReload(); A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); - if ( ExplodiumGun(invoker.SisterWeapon).clipcount <= 0 ) return ResolveState("ReloadEmpty"); + if ( ExplodiumGun(invoker.SisterWeapon).clipcount <= 0 ) return ResolveState('ReloadEmpty'); return ResolveState(null); } - XZW2 TUVWXY 2; + XZW2 TUV 2 A_BumpView(.2,tics:2); + XZW2 WXY 2 A_BumpView(.1,tics:2); XZW2 Z 1; XZW3 A 1; XZW3 B 1 { ExplodiumGun(invoker.SisterWeapon).clipcount = 0; } XZW3 C 1; XZW3 D 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 EFG 1; + XZW3 E 1 A_BumpView(.2); + XZW3 FG 1; XZW3 H 0 A_DropMag(); Goto ReloadEnd; ReloadEmpty: XZW2 A 1; - XZW3 IJKLMN 2; + XZW3 IJK 2 A_BumpView(.2,tics:2); + XZW3 LMN 2 A_BumpView(.1,tics:2); XZW3 OPQR 1; XZW3 S 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW3 TUV 1; + XZW3 T 1 A_BumpView(.2); + XZW3 UV 1; XZW3 W 0 A_DropMag(); Goto ReloadEnd; ReloadEnd: XZW3 XYZ 3; XZW4 A 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); XZW4 BCD 2; - XZW4 E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; } + XZW4 E 1 + { + A_BumpView(-.2); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + ExplodiumGun(invoker.SisterWeapon).clipcount = ExplodiumGun(invoker.SisterWeapon).default.clipcount; + } XZW4 FGHI 1; XZW4 J 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 KLMNOP 2; + XZW4 KLM 2 A_BumpView(-.2,tics:2); + XZW4 NOP 2 A_BumpView(.1,tics:2); Goto Ready; Slide: - XZW2 A 10 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftLower")); } - XZW4 WXY 1; + XZW2 A 9 { player.SetPSPrite(PSP_WEAPON+1,ResolveState('LeftLower')); } + XZW2 A 1; + XZW4 WXY 1 A_BumpView(-.1); XZW5 A 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZW5 BC 1; XZW5 D 1 @@ -1082,55 +1120,66 @@ Class DualExplodiumGun : SWWMWeapon ExplodiumGun(invoker.SisterWeapon).chambered = true; ExplodiumGun(invoker.SisterWeapon).clipcount--; } - XZW5 EFG 1; + XZW5 EFG 1 A_BumpView(.1); XZW5 H 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); XZW5 IJKLM 1; - XZW2 A 0 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftRaise")); } + XZW2 A 0 { player.SetPSPrite(PSP_WEAPON+1,ResolveState('LeftRaise')); } Goto Ready; LeftReload: XZWB A 4 { let sis = player.FindPSprite(PSP_WEAPON); - if ( !sis.CurState.InStateSequence(ResolveState("Reload")) && !sis.CurState.InStateSequence(ResolveState("ReloadEmpty")) && !sis.CurState.InStateSequence(ResolveState("ReloadLast")) ) - return ResolveState("LeftReload")+1; + if ( !sis.CurState.InStateSequence(ResolveState('Reload')) && !sis.CurState.InStateSequence(ResolveState('ReloadEmpty')) && !sis.CurState.InStateSequence(ResolveState('ReloadLast')) ) + return ResolveState('LeftReload')+1; return ResolveState(null); } XZWB A 1 { A_PlayerReload(); A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); - if ( invoker.clipcount <= 0 ) return ResolveState("LeftReloadEmpty"); + if ( invoker.clipcount <= 0 ) return ResolveState('LeftReloadEmpty'); return ResolveState(null); } - XZWB TUVWXY 2; + XZWB TUV 2 A_BumpView(.2,tics:2); + XZWB WXY 2 A_BumpView(.1,tics:2); XZWB Z 1; XZWC A 1; XZWC B 1 { invoker.clipcount = 0; } XZWC C 1; XZWC D 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWC EFG 1; + XZWC E 1 A_BumpView(.2); + XZWC FG 1; XZWC H 0 A_DropMag(); Goto LeftReloadEnd; LeftReloadEmpty: XZWB A 1; - XZWC IJKLMN 2; + XZWC IJK 2 A_BumpView(.2,tics:2); + XZWC LMN 2 A_BumpView(.1,tics:2); XZWC OPQR 1; XZWC S 1 A_StartSound("explodium/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWC TUV 1; + XZWC T 1 A_BumpView(.2); + XZWC UV 1; XZWC W 0 A_DropMag(); Goto LeftReloadEnd; LeftReloadEnd: XZWC XYZ 3; XZWD A 2 A_StartSound("explodium/magin",CHAN_WEAPON,CHANF_OVERLAP); XZWD BCD 2; - XZWD E 1 { A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); invoker.clipcount = invoker.default.clipcount; } + XZWD E 1 + { + A_BumpView(-.2); + A_StartSound("explodium/jamitin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.clipcount = invoker.default.clipcount; + } XZWD FGHI 1; XZWD J 2 A_StartSound("explodium/select",CHAN_WEAPON,CHANF_OVERLAP); - XZWD KLMNOP 2; + XZWD KLM 2 A_BumpView(-.2,tics:2); + XZWD NOP 2 A_BumpView(.1,tics:2); Goto LeftReady; LeftSlide: - XZWB A 10 { player.SetPSPrite(PSP_WEAPON,ResolveState("Lower")); } - XZWD WXY 1; + XZWB A 9 { player.SetPSPrite(PSP_WEAPON,ResolveState('Lower')); } + XZWB A 1; + XZWD WXY 1 A_BumpView(-.1); XZWE A 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZWE BC 1; XZWE D 1 @@ -1138,10 +1187,10 @@ Class DualExplodiumGun : SWWMWeapon invoker.chambered = true; invoker.clipcount--; } - XZWE EFG 1; + XZWE EFG 1 A_BumpView(.1); XZWE H 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); XZWE IJKLM 1; - XZWB A 0 { player.SetPSPrite(PSP_WEAPON,ResolveState("Raise")); } + XZWB A 0 { player.SetPSPrite(PSP_WEAPON,ResolveState('Raise')); } Goto LeftReady; Zoom: XZW2 A 1 @@ -1149,30 +1198,43 @@ Class DualExplodiumGun : SWWMWeapon A_PlayerCheckGun(); A_StartSound("explodium/speen",CHAN_WEAPON,CHANF_OVERLAP); } - XZW9 ABCDEFG 1; - XZW9 H 1 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftZoom")); } - XZW9 IJKLMNOPQRSTUVW 1; + XZW9 ABCD 1 A_BumpView(.2); + XZW9 EFG 1 A_BumpView(-.2); + XZW9 H 1 + { + A_BumpView(-.2); + player.SetPSPrite(PSP_WEAPON+1,ResolveState('LeftZoom')); + } + XZW9 IJ 1 A_BumpView(-.2); + XZW9 KLMNOP 1 A_BumpView(-.1); + XZW9 QRST 1 A_BumpView(.3); + XZW9 UVW 1; Goto Ready; LeftZoom: XZWB A 1; - XZWH ABCDEFGHIJKLMNOPQRSTUVW 1; + XZWH ABCD 1 A_BumpView(.2); + XZWH EFGHIJ 1 A_BumpView(-.2); + XZWH KLMNOP 1 A_BumpView(-.1); + XZWH QRST 1 A_BumpView(.3); + XZWH UVW 1; Goto LeftReady; User1: - XZW2 A 1 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftUser1")); } - XZW7 TU 1; + XZW2 A 1 { player.SetPSPrite(PSP_WEAPON+1,ResolveState('LeftUser1')); } + XZW7 TU 1 A_BumpView(.1); User1Hold: XZW7 V 1 { + A_BumpAngle(1.); A_PlayerMelee(true); A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP); A_Parry(9); } - XZW7 WX 1; + XZW7 WX 1 A_BumpAngle(-.5); XZW7 Y 1 A_Melee(); XZW7 Z 2; XZW8 ABCDE 2; - XZW8 F 1 A_JumpIf(player.cmd.buttons&BT_USER1,"User1Hold"); - XZW2 B 0 { invoker.PlayUpSound(self); player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftSelect")); } + XZW8 F 1 A_JumpIf(player.cmd.buttons&BT_USER1,'User1Hold'); + XZW2 B 0 { invoker.PlayUpSound(self); player.SetPSPrite(PSP_WEAPON+1,ResolveState('LeftSelect')); } Goto Select; LeftUser1: XZWB A 1; @@ -1181,32 +1243,35 @@ Class DualExplodiumGun : SWWMWeapon Stop; Deselect: XZW2 A 2 A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZWA T 2; - XZWA U 2 { player.SetPSPrite(PSP_WEAPON+1,ResolveState("LeftDeselect")); } - XZWA VW 2; - XZW2 B 6; + XZWA T 2 A_BumpView(.1,tics:2); + XZWA U 2 + { + A_BumpView(.1,tics:2); + player.SetPSPrite(PSP_WEAPON+1,ResolveState('LeftDeselect')); + } + XZWA VW 2 A_BumpView(.1,tics:2); XZW2 B -1 A_FullLower(); Stop; LeftDeselect: XZWB A 2; - XZWA PQRS 2; - XZWB B 2; + XZWA PQRS 2 A_BumpView(.1,tics:2); + XZWB B 0; Stop; Flash: - XZWZ A 2 + XZWZ A 2 Bright { let psp = player.GetPSprite(PSP_FLASH); psp.frame = Random[GunFlash](0,9); - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.target = self; } Stop; LeftFlash: - XZWZ K 2 + XZWZ K 2 Bright { let psp = player.GetPSprite(PSP_FLASH+1); psp.frame = Random[GunFlash](10,19); - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.target = self; } Stop; diff --git a/zscript/weapons/swwm_splode_fx.zsc b/zscript/weapons/swwm_splode_fx.zsc index e76a936e7..5cdec5d60 100644 --- a/zscript/weapons/swwm_splode_fx.zsc +++ b/zscript/weapons/swwm_splode_fx.zsc @@ -21,6 +21,7 @@ Class ExplodiumMag : SWWMCasing Death: XZW1 BC -1 { + bINTERPOLATEANGLES = false; pitch = roll = 0; angle = FRandom[Junk](0,360); frame = RandomPick[Junk](1,2); @@ -34,6 +35,8 @@ Class ExplodiumMagArm : Actor Default { Obituary "$O_EXPLODIUM"; + SelfObituary "$SO_EXPLODIUMALT"; + DamageType 'Explodium'; PROJECTILE; +THRUACTORS; +BOUNCEONWALLS; @@ -43,6 +46,7 @@ Class ExplodiumMagArm : Actor +NODAMAGETHRUST; +FORCERADIUSDMG; -NOGRAVITY; + +NOFRICTION; Gravity 0.35; BounceFactor 1.0; Radius 2; @@ -55,25 +59,24 @@ Class ExplodiumMagArm : Actor double ang, pt; ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,90); - vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[ExploS](8.,20.); + vel = SWWMUtility.Vec3FromAngles(ang,pt)*FRandom[ExploS](8.,20.); } States { Spawn: TNT1 A 1 { - Spawn("ExplodiumMagTrail",pos); + Spawn('ExplodiumMagTrail',pos); if ( !(ReactionTime%2) ) { - int nhit, nkill; - [nhit, nkill] = SWWMUtility.DoExplosion(self,3+reactiontime/2,3000+500*reactiontime,40+3*reactiontime,20,DE_COUNTENEMIES); + let [nhit, nkill] = SWWMUtility.DoExplosion(self,3+reactiontime/2,3000+500*reactiontime,40+3*reactiontime,20,DE_COUNTENEMIES); if ( target && special1 ) SWWMUtility.AchievementProgressInc("grenade",nkill,target.player); } - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - let s = Spawn("SWWMHalfSmoke",pos); + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,5); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); s.vel = pvel+vel*.2; - s.SetShade(Color(1,1,1)*Random[ExploS](64,224)); - s.special1 = Random[ExploS](1,3); + s.scolor = Color(1,1,1)*Random[ExploS](64,224); + s.framestep = Random[ExploS](2,4); s.scale *= 2.4; s.alpha *= 0.1+.4*(ReactionTime/15.); A_CountDown(); @@ -82,29 +85,14 @@ Class ExplodiumMagArm : Actor } } -Class ExplodiumMagTrail : Actor +Class ExplodiumMagTrail : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; - +NOBLOCKMAP; - +NOGRAVITY; + RenderStyle 'Add'; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; Scale 1.1; } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -115,13 +103,16 @@ Class ExplodiumMagTrail : Actor Class ExplodiumMagProj : Actor { + Mixin SWWMMissileFix; + double pitchvel, anglevel; Vector3 cvel; Default { Obituary "$O_EXPLODIUM"; - DamageType "Explodium"; + SelfObituary "$SO_EXPLODIUMALT"; + DamageType 'Explodium'; Radius 2; Height 4; Gravity 0.5; @@ -137,9 +128,11 @@ Class ExplodiumMagProj : Actor +BOUNCEONFLOORS; +BOUNCEONCEILINGS; +BOUNCEONWALLS; + +ALLOWBOUNCEONACTORS; + +DONTBOUNCEONSHOOTABLES; +CANBOUNCEWATER; - +DONTBOUNCEONSKY; +USEBOUNCESTATE; + +KEEPBOUNCEANGLE; BounceFactor 0.4; WallBounceFactor 0.4; } @@ -157,11 +150,10 @@ Class ExplodiumMagProj : Actor bNOGRAVITY = true; A_SetRenderStyle(1.,STYLE_Add); Scale *= 2.+.2*special1; - A_AlertMonsters(swwm_uncapalert?0:6000); - int nhit, nkill; - [nhit, nkill] = SWWMUtility.DoExplosion(self,20+25*special1,80000+8000*special1,90+10*special1,60,DE_EXTRAZTHRUST|DE_COUNTENEMIES); + A_AlertMonsters(swwm_uncapalert?0:6000,AMF_EMITFROMTARGET); + let [nhit, nkill] = SWWMUtility.DoExplosion(self,20+25*special1,80000+8000*special1,90+10*special1,60,DE_EXTRAZTHRUST|DE_COUNTENEMIES); if ( target && isplanted ) SWWMUtility.AchievementProgressInc("grenade",nkill,target.player); - A_QuakeEx(9,9,9,30,0,400+80*special1,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollintensity:2.); + A_QuakeEx(9.,9.,9.,30,0,400+80*special1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollintensity:2.); A_StartSound("explodium/maghit",CHAN_VOICE,attenuation:.35); A_StartSound("explodium/maghit",CHAN_WEAPON,attenuation:.2); A_SprayDecal("BigRocketBlast",172); @@ -171,8 +163,8 @@ Class ExplodiumMagProj : Actor int numpt = Random[ExploS](16,24); for ( int i=0; i 4) && (vel.unit() dot cvel > .5) ) + if ( (vel.length() > 4) && (vel.unit() dot cvel > 0.) ) { bHITOWNER = true; A_StartSound("explodium/mag"); return; } + // ensure we can leave a decal + angle += 180; + pitch = -pitch; ExplodeMissile(); } States @@ -253,23 +248,24 @@ Class ExplodiumMagHitbox : Actor return; } SetOrigin(target.Vec3Offset(0,0,-height*.5),false); - let bt = BlockThingsIterator.Create(self,128); - while ( bt.Next() ) + let bt = BlockThingsIterator.Create(self,256); + foreach ( t,p,f:bt ) { - if ( !bt.Thing || (bt.Thing == self) || !bt.Thing.bSHOOTABLE || (bt.Thing == target.target) || bt.Thing.IsFriend(target.target) || !SWWMUtility.BoxIntersect(self,bt.Thing) ) + if ( !t || (t == self) || !t.bSHOOTABLE || (t == target.target) || t.IsFriend(target.target) || !SWWMUtility.BoxIntersect(self,t) ) continue; target.bKILLED = true; - target.SetStateLabel("Detonate"); + target.SetStateLabel('Detonate'); Destroy(); break; } + bt.Destroy(); } override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle ) { if ( target && !target.bKILLED ) { target.bKILLED = true; - target.SetStateLabel("Detonate"); + target.SetStateLabel('Detonate'); Destroy(); } return 0; @@ -291,9 +287,12 @@ Class ExplodiumMagAttach : ExplodiumMagProj { +MOVEWITHSECTOR; +EXPLODEONWATER; + +SKYEXPLODE; -BOUNCEONFLOORS; -BOUNCEONCEILINGS; -BOUNCEONWALLS; + -ALLOWBOUNCEONACTORS; + -DONTBOUNCEONSHOOTABLES; -CANBOUNCEWATER; -USEBOUNCESTATE; Speed 15; @@ -301,12 +300,13 @@ Class ExplodiumMagAttach : ExplodiumMagProj override int SpecialMissileHit( Actor victim ) { - if ( victim is 'ExplodiumMagHitbox' ) return 1; - return -1; + if ( victim is 'ExplodiumMagHitbox' ) return MHIT_PASS; + return MHIT_DEFAULT; } override void Tick() { Super.Tick(); + if ( freezetics > 0 ) return; if ( isFrozen() ) return; if ( bKILLED ) return; if ( atline ) // attempt to follow the movement of the line @@ -330,7 +330,7 @@ Class ExplodiumMagAttach : ExplodiumMagProj SetOrigin(Vec2OffsetZ(0,0,atz+atsector.GetPlaneTexZ(atplane)),true); if ( ceilingz-floorz <= 2 ) bKILLED = true; } - if ( bKILLED ) SetStateLabel("Detonate"); + if ( bKILLED ) SetStateLabel('Detonate'); } void A_Attach() { @@ -391,11 +391,11 @@ Class ExplodiumMagAttach : ExplodiumMagProj SetOrigin((pos.x,pos.y,ceilingz)+normal*.75,true); atz = pos.z-atsector.GetPlaneTexZ(atplane); } - else if ( BlockingLine ) + else if ( BlockingLine && SWWMUtility.BlockingLineIsBlocking(self,Line.ML_BLOCKEVERYTHING|Line.ML_BLOCKPROJECTILE,BlockingLine) ) { atline = BlockingLine; normal = (-BlockingLine.delta.y,BlockingLine.delta.x,0).unit(); - atside = SWWMUtility.PointOnLineSide(pos.xy,BlockingLine); + atside = Level.PointOnLineSide(pos.xy,BlockingLine); if ( !atside ) normal *= -1; Vector3 orig = (BlockingLine.v1.p.x,BlockingLine.v1.p.y,0); Vector3 onwall = pos-(normal dot (pos-orig))*normal; @@ -441,10 +441,10 @@ Class ExplodiumMagAttach : ExplodiumMagProj else { bKILLED = true; - SetStateLabel("Detonate"); + SetStateLabel('Detonate'); return; } - let b = Spawn("ExplodiumMagHitbox",pos); + let b = Spawn('ExplodiumMagHitbox',pos); b.target = self; A_StartSound("explodium/jamitin",CHAN_BODY,CHANF_DEFAULT,.65,2.5); } @@ -460,7 +460,7 @@ Class ExplodiumMagAttach : ExplodiumMagProj XZW1 # 2; TNT1 A 0 { - cvel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + cvel = SWWMUtility.Vec3FromAngles(angle,pitch); A_BlowUp(); } XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright; @@ -484,30 +484,25 @@ Class ExploLight2 : PaletteLight } } -Class ExplodiumBulletImpact : Actor +Class ExplodiumBulletImpact : SWWMNonInteractiveActor { Default { Obituary "$O_EXPLODIUM"; - DamageType "Explodium"; - RenderStyle "Add"; - Radius .1; - Height 0.; + SelfObituary "$SO_EXPLODIUM"; + DamageType 'Explodium'; + RenderStyle 'Add'; Scale 1.2; - +NOGRAVITY; - +NOBLOCKMAP; +NODAMAGETHRUST; +FORCERADIUSDMG; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; } override void PostBeginPlay() { Super.PostBeginPlay(); - A_AlertMonsters(swwm_uncapalert?0:3000); + A_AlertMonsters(swwm_uncapalert?0:3000,AMF_EMITFROMTARGET); SWWMUtility.DoExplosion(self,25,40000,70,40,DE_EXTRAZTHRUST); - A_QuakeEx(4,4,4,10,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:150,rollintensity:0.2); + A_QuakeEx(4.,4.,4.,10,0,250,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:150,rollintensity:0.2); A_StartSound("explodium/hit",CHAN_VOICE,attenuation:.6); A_StartSound("explodium/hit",CHAN_WEAPON,attenuation:.3); A_SprayDecal("RocketBlast",-172); @@ -517,8 +512,8 @@ Class ExplodiumBulletImpact : Actor int numpt = Random[ExploS](10,20); for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } + Spawn('ExploLight',pos); } States { diff --git a/zscript/weapons/swwm_tastytreat.zsc b/zscript/weapons/swwm_tastytreat.zsc index 08ed7677c..7708dff92 100644 --- a/zscript/weapons/swwm_tastytreat.zsc +++ b/zscript/weapons/swwm_tastytreat.zsc @@ -6,7 +6,6 @@ Class CandyGun : SWWMWeapon int clipcount; bool chambered; double casex, casey; - transient ui TextureID WeaponBox; bool tospecial; bool swapdrop; // used by weapon swapping so CreateTossable actually tosses the gun, rather than spares @@ -15,20 +14,28 @@ Class CandyGun : SWWMWeapon // re-edit to allow picking up spares in coop override bool HandlePickup( Inventory item ) { + // can't hold both weapons at once + if ( swwm_swapweapons && IsSwapWeapon(item) ) + return true; if ( (item.GetClass() == GetClass()) && !item.ShouldStay() ) { - bool ammoget, spareget; - [ammoget, spareget] = CandyGun(item).PickupForAmmoAndSpares(self); + let [ammoget, spareget] = CandyGun(item).PickupForAmmoAndSpares(self); if ( ammoget || spareget ) item.bPickupGood = true; if ( !deathmatch && !spareget ) { // sell excess - int sellprice = item.Stamina/2; - SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2)); - SWWMCredits.Give(Owner.player,sellprice); if ( Owner.player ) - Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),Owner.player.GetUserName(),GetTag(),sellprice); + { + int sellprice = abs(item.Stamina)/2; + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player == players[consoleplayer] ) + { + SWWMScoreObj.SpawnAtActorBunch(sellprice,Owner); + Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + } + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(item)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } item.bPickupGood = true; } // reset the price in case it has to respawn @@ -58,22 +65,47 @@ Class CandyGun : SWWMWeapon int dropme = AmmoGive1-ammogiven; if ( dropme > 0 ) { - // hacky, but it works - ownedWeapon.Ammo1.Amount += dropme; - ownedWeapon.Ammo1.CreateTossable(dropme); + if ( (ownedWeapon.Ammo1 is 'SWWMAmmo') && SWWMAmmo(ownedWeapon.Ammo1).MagAmmoType ) + { + // can we add it as mag ammo? + MagAmmo ma = MagAmmo(Owner.FindInventory(SWWMAmmo(ownedWeapon.Ammo1).MagAmmoType)); + if ( !ma ) + { + ma = MagAmmo(Spawn(SWWMAmmo(ownedWeapon.Ammo1).MagAmmoType)); + ma.Amount = 0; + ma.AttachToOwner(Owner); + } + while ( ma.Amount <= (ma.MaxAmount-ma.ClipSize) ) + { + ma.Amount += ma.ClipSize; + dropme--; + } + } + if ( dropme > 0 ) + { + // hacky, but it works + ownedWeapon.Ammo1.CreateTossable(dropme); + ownedWeapon.Ammo1.Amount += dropme; + } } } if ( (AmmoGive1 == 0) && ((clipcount > 0) || chambered) ) { // we were dropped, see if we can add the bullets we contain int bul = clipcount+chambered; - MagAmmo ma = MagAmmo(Owner.FindInventory("CandyGunBullets")); + MagAmmo ma = MagAmmo(Owner.FindInventory('CandyGunBullets')); if ( !ma ) { - ma = MagAmmo(Spawn("CandyGunBullets")); + ma = MagAmmo(Spawn('CandyGunBullets')); ma.Amount = 0; ma.AttachToOwner(Owner); } + // can we add a full mag? + if ( (bul >= ma.clipsize) && (ma.pamo.Amount < ma.pamo.MaxAmount) ) + { + bul -= ma.clipsize; + ma.pamo.Amount++; + } int maxgiveamt = min(ma.MaxAmount-ma.Amount,bul); int dropamt = bul-maxgiveamt; if ( dropamt > 0 ) ma.CreateTossable(dropamt); @@ -83,26 +115,7 @@ Class CandyGun : SWWMWeapon return gotstuff, gotspares; } - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - if ( Amount <= 0 ) return; - if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/CandygunDisplay.png",TexMan.Type_Any); - Screen.DrawTexture(WeaponBox,false,bx-51,by-44,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - if ( chambered ) Screen.DrawText(smallfont,Font.CR_FIRE,bx-22,by-20,"⁺¹",DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Spacing,-1); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-19,by-13,String.Format("%d",max(clipcount,0)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int cx = (Ammo1.Amount>9)?48:45; - int sb = Owner.CountInv("CandyGunBullets"); - if ( sb > 0 ) - { - int cbx = (sb>9)?50:47; - Screen.DrawText(smallfont,Font.CR_FIRE,bx-cbx,by-20,String.Format("⁺%s",SWWMUtility.SuperscriptNum(sb)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Spacing,-1); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-cx,by-13,String.Format("%d",Ammo1.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - else Screen.DrawText(smallfont,Font.CR_FIRE,bx-cx,by-17,String.Format("%d",Ammo1.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-37,by-39,String.Format("%d",Ammo2.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - } - - override Vector3 GetTraceOffset() + override Vector3 GetTraceOffset( int index ) { return (10.,3,-2.); } @@ -114,21 +127,21 @@ Class CandyGun : SWWMWeapon invoker.chambered = invoker.clipcount; invoker.clipcount = max(invoker.clipcount-1,0); A_StartSound("candygun/fire",CHAN_WEAPON,CHANF_OVERLAP); - A_QuakeEx(5,5,5,5,0,15,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:2.); - A_BumpFOV(.94); + A_QuakeEx(6.3,6.3,6.3,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:2.); + A_BumpFOV(.88); + A_BumpView(-.35); A_SWWMFlash(); SWWMHandler.DoFlash(self,Color(64,224,64,255),5); A_AlertMonsters(swwm_uncapalert?0:9000); A_PlayerFire(); - Vector3 x, y, z, x2, y2, z2; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 x = SWWMUtility.GetPlayerViewDir(self); SWWMUtility.DoKnockback(self,-x,18000.); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+3*y-2*z); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,3,-2); double a = FRandom[Spread](0,360), s = FRandom[Spread](0,.005); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - Vector3 dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); FLineTraceData d; - LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION|TRF_NOSKY,origin.z,origin.x,origin.y,d); + LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); SWWMBulletTrail.DoTrail(self,origin,dir,10000,2); if ( d.HitType == TRACE_HitActor ) { @@ -137,46 +150,33 @@ Class CandyGun : SWWMWeapon if ( dmg >= d.HitActor.Health ) dmg += 900; SWWMUtility.DoKnockback(d.HitActor,d.HitDir,72000); let p = SWWMPuff.Setup(d.HitLocation,d.HitDir,invoker,self,d.HitActor); - dmg = d.HitActor.DamageMobj(p,self,dmg,'Explodium',DMG_THRUSTLESS|DMG_FOILINVUL|DMG_INFLICTOR_IS_PUFF); + dmg = d.HitActor.DamageMobj(p,self,dmg,'Candy',DMG_THRUSTLESS|DMG_FOILINVUL|DMG_INFLICTOR_IS_PUFF); if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT ) { - let p = Spawn("SWWMBulletImpact",d.HitLocation); + let p = Spawn('SWWMBulletImpact',d.HitLocation); p.angle = atan2(d.HitDir.y,d.HitDir.x)+180; p.pitch = asin(d.HitDir.z); + p.target = self; } - else + else if ( dmg > 0 ) { d.HitActor.TraceBleed(dmg,self); d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); } - let b = Spawn("CandyBulletImpact",d.HitLocation-d.HitDir*4.); + let b = Spawn('CandyBulletImpact',d.HitLocation-d.HitDir*4.); b.angle = atan2(d.HitDir.y,d.HitDir.x)+180; b.pitch = asin(d.HitDir.z); b.target = self; } else if ( d.HitType != TRACE_HitNone ) { - Vector3 hitnormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; - else hitnormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; - else hitnormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) hitnormal *= -1; - } - let p = Spawn("SWWMBulletImpact",d.HitLocation+hitnormal*0.01); + Vector3 hitnormal = SWWMUtility.GetLineTraceHitNormal(d); + let p = Spawn('SWWMBulletImpact',d.HitLocation+hitnormal*0.01); p.angle = atan2(hitnormal.y,hitnormal.x); p.pitch = asin(-hitnormal.z); - if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); - let b = Spawn("CandyBulletImpact",d.HitLocation+hitnormal*4.); + p.target = self; + if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + let b = Spawn('CandyBulletImpact',d.HitLocation+hitnormal*4.); b.angle = atan2(hitnormal.y,hitnormal.x); b.pitch = asin(-hitnormal.z); b.target = self; @@ -184,7 +184,7 @@ Class CandyGun : SWWMWeapon } for ( int i=0; i<6; i++ ) { - let s = Spawn("SWWMSmoke",origin); + let s = Spawn('SWWMSmoke',origin); s.scale *= .15; s.alpha *= .5; s.speed *= .2; @@ -196,13 +196,11 @@ Class CandyGun : SWWMWeapon { let weap = Weapon(invoker); if ( !weap ) return; - Vector3 x, y, z, x2, y2, z2; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-2*y-3*z); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-2,-3); double a = FRandom[Spread](0,360), s = FRandom[Spread](0,.01); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - Vector3 dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn("CandyMagProj",origin); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + let p = Spawn('CandyMagProj',origin); p.special1 = invoker.special1; p.target = self; p.angle = atan2(dir.y,dir.x); @@ -222,13 +220,11 @@ Class CandyGun : SWWMWeapon if ( weap.Ammo2.Amount <= 0 ) weap.Amount = 0; weap.Ammo2.Amount = max(0,weap.Ammo2.Amount-1); } - Vector3 x, y, z, x2, y2, z2; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-2*y-3*z); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-2,-3); double a = FRandom[Spread](0,360), s = FRandom[Spread](0,.015); - [x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll); - Vector3 dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn("CandyGunProj",origin); + let [x2, y2, z2] = SWWMUtility.GetPlayerAxesAutoAimed(self); + Vector3 dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s); + let p = Spawn('CandyGunProj',origin); p.special1 = invoker.clipcount+invoker.chambered; invoker.clipcount = 0; invoker.chambered = false; @@ -243,10 +239,9 @@ Class CandyGun : SWWMWeapon action void A_DropMag() { if ( swwm_nomagdrop ) return; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-2*y-10*z); - let c = Spawn("CandyMag",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,-2,-10); + let c = Spawn('CandyMag',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-1.2,.3)-(0,0,FRandom[Junk](2,3)); @@ -255,30 +250,24 @@ Class CandyGun : SWWMWeapon action void A_EmptyMag() { - MagAmmo ma = MagAmmo(FindInventory("CandyGunBullets")); + MagAmmo ma = MagAmmo(FindInventory('CandyGunBullets')); if ( !ma ) { - ma = MagAmmo(Spawn("CandyGunBullets")); + ma = MagAmmo(Spawn('CandyGunBullets')); ma.Amount = 0; ma.AttachToOwner(self); } int maxgiveamt = min(ma.MaxAmount-ma.Amount,invoker.clipcount); int dropamt = invoker.clipcount-maxgiveamt; - if ( dropamt > 0 ) ma.CreateTossable(dropamt); + if ( dropamt > 0 ) invoker.BufferMagAmmo('CandyGunBullets',dropamt); ma.Amount = min(ma.MaxAmount,ma.Amount+invoker.clipcount); ma.MagFill(); - if ( CheckLocalView() ) for ( int i=0; i 0 ) ma.PlayPickupSound(self); invoker.clipcount = 0; } action void A_LoadMag() { - MagAmmo sb = MagAmmo(FindInventory("CandyGunBullets")); + MagAmmo sb = MagAmmo(FindInventory('CandyGunBullets')); if ( sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) ) invoker.clipcount = invoker.default.clipcount; else if ( (invoker.Ammo1.Amount <= 0) || (sb.Amount >= sb.ClipSize) ) @@ -286,20 +275,24 @@ Class CandyGun : SWWMWeapon int takeamt = min(sb.Amount,sb.ClipSize); invoker.clipcount = takeamt; sb.Amount -= takeamt; + int req = invoker.default.ClipCount-invoker.clipcount; + if ( req > 0 ) invoker.clipcount += invoker.FetchBufferedMagAmmo('CandyGunBullets',req); } + else if ( invoker.FetchBufferedMagAmmo('CandyGunBullets',sb.ClipSize,true) ) + invoker.clipcount = invoker.default.clipcount; else { invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); invoker.clipcount = invoker.default.clipcount; } + invoker.ClearBufferedAmmo(); } action void A_DropCasing() { - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+8*y-10*z); - let c = Spawn("CandyCasing",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,8,-10); + let c = Spawn('CandyCasing',origin); c.special1 = special1; c.angle = angle; c.pitch = pitch; @@ -311,15 +304,15 @@ Class CandyGun : SWWMWeapon { if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; if ( Amount <= 0 ) return false; - if ( fireMode == PrimaryFire ) return (chambered || (clipcount > 0) || (Ammo1.Amount > 0) || (Owner.CountInv("CandyGunBullets") > 0)); - if ( fireMode == AltFire ) return ((Ammo1.Amount > 0) || (Owner.CountInv("CandyGunBullets") > 0)); + if ( fireMode == PrimaryFire ) return (chambered || (clipcount > 0) || (Ammo1.Amount > 0) || (Owner.CountInv('CandyGunBullets') > 0)); + if ( fireMode == AltFire ) return ((Ammo1.Amount > 0) || (Owner.CountInv('CandyGunBullets') > 0)); return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } override bool ReportHUDAmmo() { if ( Amount <= 0 ) return false; - if ( chambered || (clipcount > 0) || (Owner.CountInv("CandyGunBullets") > 0) ) return true; + if ( chambered || (clipcount > 0) || (Owner.CountInv('CandyGunBullets') > 0) ) return true; if ( Ammo1.Amount <= 0 ) return false; return Super.ReportHUDAmmo(); } @@ -335,14 +328,17 @@ Class CandyGun : SWWMWeapon CandyGun(spare).AmmoGive1 = 0; CandyGun(spare).clipcount = 0; CandyGun(spare).chambered = false; - spare.SetState(spare.SpawnState+1); + spare.frame = 1; spare.DropTime = 30; spare.bSpecial = spare.bSolid = false; Ammo2.Amount--; return spare; } swapdrop = false; - return Super.CreateTossable(amt); + let drop = Super.CreateTossable(amt); + if ( (drop == self) && (clipcount <= 0) && !chambered ) + frame = 2; + return drop; } override void MarkPrecacheSounds() @@ -362,43 +358,37 @@ Class CandyGun : SWWMWeapon Default { - //$Title Candy Gun - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_CandyGun.png - //$Icon weapon Tag "$T_CANDYGUN"; + Inventory.Icon "graphics/HUD/Icons/W_CandyGun.png"; Inventory.PickupMessage "$I_CANDYGUN"; Obituary "$O_CANDYGUN"; SWWMWeapon.Tooltip "$TT_CANDYGUN"; SWWMWeapon.GetLine "getcandygun"; - Inventory.Icon "graphics/HUD/Icons/W_CandyGun.png"; Weapon.UpSound "explodium/select"; Weapon.SlotNumber 9; Weapon.SelectionOrder 900; Stamina 1000000; - Weapon.AmmoType1 "CandyGunAmmo"; - Weapon.AmmoType2 "CandyGunSpares"; + Weapon.AmmoType1 'CandyGunAmmo'; + Weapon.AmmoType2 'CandyGunSpares'; Weapon.AmmoGive1 1; Weapon.AmmoGive2 0; Weapon.AmmoUse2 0; - SWWMWeapon.DropAmmoType "CandyGunAmmo"; + SWWMWeapon.DropAmmoType 'SWWMCellAmmoBig'; CandyGun.ClipCount 7; +SWWMWEAPON.NOFIRSTGIVE; +WEAPON.EXPLOSIVE; +WEAPON.BFG; - Radius 12; - Height 24; } States { Spawn: - XZW1 AB -1; + XZW1 A -1; Stop; Select: XZW2 B 2 { A_FullRaise(); - return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,"SelectLast"); + return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,'SelectLast'); } XZW2 CDEFGH 2; Goto Ready; @@ -409,14 +399,14 @@ Class CandyGun : SWWMWeapon Ready: XZW2 A 1 { - if ( (invoker.clipcount > 0) && !invoker.chambered ) player.SetPSprite(PSP_WEAPON,ResolveState("Slide")); + if ( (invoker.clipcount > 0) && !invoker.chambered ) player.SetPSprite(PSP_WEAPON,ResolveState('Slide')); else { int flg = WRF_ALLOWZOOM|WRF_ALLOWUSER1; if ( sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) || (invoker.Ammo1.Amount > 0) || invoker.chambered ) flg |= WRF_ALLOWRELOAD; - if ( (invoker.Ammo1.Amount <= 0) && (CountInv("CandyGunBullets") <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) flg |= WRF_NOSECONDARY; + if ( (invoker.Ammo1.Amount <= 0) && (CountInv('CandyGunBullets') <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) flg |= WRF_NOSECONDARY; if ( (flg&WRF_NOSECONDARY) && (player.cmd.buttons&BT_ATTACK) && (player.cmd.buttons&BT_ALTATTACK) ) - player.SetPSprite(PSP_WEAPON,ResolveState("SpecialFirePre")); + player.SetPSprite(PSP_WEAPON,ResolveState('SpecialFirePre')); else { A_WeaponReady(flg); @@ -429,7 +419,7 @@ Class CandyGun : SWWMWeapon ReadyLast: XZW9 X 1 { - if ( (invoker.Ammo1.Amount > 0) || (CountInv("CandyGunBullets") > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) ) player.SetPSprite(PSP_WEAPON,ResolveState("ReloadLast")); + if ( (invoker.Ammo1.Amount > 0) || (CountInv('CandyGunBullets') > 0) || sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) ) player.SetPSprite(PSP_WEAPON,ResolveState('ReloadLast')); else { A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY); @@ -442,14 +432,14 @@ Class CandyGun : SWWMWeapon XZW2 A 1 { A_Schutt(); - return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,"FireLast"); + return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,'FireLast'); } XZW2 I 1; XZW2 J 1 { - int layer = PSP_WEAPON+1; + int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"Casing"); + A_Overlay(layer,'Casing'); } XZW2 KLMNOP 1; XZW2 Q 2; @@ -459,9 +449,9 @@ Class CandyGun : SWWMWeapon XZWC K 1; XZWC L 1 { - int layer = PSP_WEAPON+1; + int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - A_Overlay(layer,"Casing"); + A_Overlay(layer,'Casing'); } XZWC M 1; XZWC N 1 A_StartSound("explodium/slidelock",CHAN_WEAPON,CHANF_OVERLAP); @@ -512,7 +502,7 @@ Class CandyGun : SWWMWeapon XZW2 A 2 { A_PlayerReload(); - return A_JumpIf(invoker.clipcount<=0,"Reload"); + return A_JumpIf(invoker.clipcount<=0,'Reload'); } XZW5 NO 2; XZW5 P 1 A_StartSound("explodium/magpin",CHAN_WEAPON,CHANF_OVERLAP); @@ -520,7 +510,7 @@ Class CandyGun : SWWMWeapon XZW5 R 1 { if ( player.cmd.buttons&BT_ATTACK ) - player.SetPSprite(PSP_WEAPON,ResolveState("SpecialFire")); + player.SetPSprite(PSP_WEAPON,ResolveState('SpecialFire')); } XZW5 STUVWXYZ 1; XZW6 AB 1; @@ -568,10 +558,10 @@ Class CandyGun : SWWMWeapon { invoker.bNODEATHDESELECT = false; if ( (invoker.Amount > 0) && (invoker.Ammo2.Amount >= 0) ) A_LoadMag(); - if ( invoker.clipcount > 0 ) + if ( (invoker.clipcount > 0) && (Health > 0) ) { invoker.PlayUpSound(self); - return ResolveState("Select"); + return ResolveState('Select'); } let nw = player.mo.PickPrevWeapon(); if ( nw != invoker ) player.PendingWeapon = nw; @@ -587,9 +577,9 @@ Class CandyGun : SWWMWeapon Reload: XZW2 A 1 { - if ( ((invoker.Ammo1.Amount <= 0) && (CountInv("CandyGunBullets") <= 0)) || (invoker.clipcount >= invoker.default.clipcount) ) return ResolveState("CheckBullet"); + if ( ((invoker.Ammo1.Amount <= 0) && (CountInv('CandyGunBullets') <= 0)) || (invoker.clipcount >= invoker.default.clipcount) ) return ResolveState('CheckBullet'); A_PlayerReload(); - if ( invoker.clipcount <= 0 ) return ResolveState("ReloadEmpty"); + if ( invoker.clipcount <= 0 ) return ResolveState('ReloadEmpty'); return ResolveState(null); } XZW2 TUVWXYZ 1; @@ -618,7 +608,7 @@ Class CandyGun : SWWMWeapon A_LoadMag(); } XZW4 STUV 1; - XZW2 A 1 A_JumpIf(!invoker.chambered,"Slide"); + XZW2 A 1 A_JumpIf(!invoker.chambered,'Slide'); Goto Ready; Slide: XZW2 A 1; @@ -634,17 +624,21 @@ Class CandyGun : SWWMWeapon XZW2 A 1 { A_PlayerCheckGun(); - return A_Jump(256,"Zoom1","Zoom2","Zoom2"); + return A_Jump(256,'Zoom1','Zoom2','Zoom2'); } Goto Ready; CheckBullet: XZW2 A 1; - XZW7 ABCDE 1; + XZW7 A 1 A_Overlay(PSP_WEAPON+1,'CheckBulletCasing'); + XZW7 BCDE 1; XZW7 F 1 A_StartSound("explodium/slideback",CHAN_WEAPON,CHANF_OVERLAP); XZW7 GHIJKLMNOP 1; XZW7 Q 1 A_StartSound("explodium/slideforward",CHAN_WEAPON,CHANF_OVERLAP); XZW7 RS 1; Goto Ready; + CheckBulletCasing: + XZWF BCDEFGHIJKLMNOPQRST 1; + Stop; User1: XZW2 A 1; XZW7 TU 1; @@ -659,7 +653,7 @@ Class CandyGun : SWWMWeapon XZW7 Y 1 A_Melee(); XZW7 Z 2; XZW8 ABCDE 2; - XZW8 F 1 A_JumpIf(player.cmd.buttons&BT_USER1,"User1Hold"); + XZW8 F 1 A_JumpIf(player.cmd.buttons&BT_USER1,'User1Hold'); XZW2 B 0 { invoker.PlayUpSound(self); } Goto Select; Zoom1: @@ -674,24 +668,22 @@ Class CandyGun : SWWMWeapon XZW2 A 2 { A_StartSound("explodium/deselect",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,"DeselectLast"); + return A_JumpIf((invoker.clipcount<=0)&&!invoker.chambered,'DeselectLast'); } XZWA TUVW 2; - XZW2 B 2; XZW2 B -1 A_FullLower(); Stop; DeselectLast: XZW9 X 2; XZWE QRST 2; - XZWE U 2; XZWE U -1 A_FullLower(); Stop; Flash: - XZWZ A 2 + XZWZ A 2 Bright { let psp = player.GetPSprite(PSP_FLASH); psp.frame = Random[GunFlash](0,9); - let l = Spawn("CandyWeaponLight",pos); + let l = Spawn('CandyWeaponLight',pos); l.target = self; } Stop; diff --git a/zscript/weapons/swwm_tastytreat_fx.zsc b/zscript/weapons/swwm_tastytreat_fx.zsc index 9fdb8d8c5..17db8f41f 100644 --- a/zscript/weapons/swwm_tastytreat_fx.zsc +++ b/zscript/weapons/swwm_tastytreat_fx.zsc @@ -59,7 +59,6 @@ Class HitListEntry Class CandyBeamTracer : LineTracer { - Actor ignoreme; Array hitlist; Array ShootThroughList; @@ -67,10 +66,9 @@ Class CandyBeamTracer : LineTracer { if ( Results.HitType == TRACE_HitActor ) { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; if ( Results.HitActor.bSHOOTABLE ) { - let ent = new("HitListEntry"); + let ent = new('HitListEntry'); ent.hitactor = Results.HitActor; ent.hitlocation = Results.HitPos; ent.x = Results.HitVector; @@ -89,113 +87,78 @@ Class CandyBeamTracer : LineTracer } } -Class CandyBeam : Actor +Class CandyBeam : SWWMNonInteractiveActor { Vector3 nextpos, nextdir; - action void A_Trace() + void A_Trace() { - let t = new("CandyBeamTracer"); + let t = new('CandyBeamTracer'); t.hitlist.Clear(); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + let [x, y, z] = SWWMUtility.GetAxes(angle,pitch,roll); t.ShootThroughList.Clear(); t.Trace(pos,CurSector,x,speed,0); - for ( int i=0; i pop = "CandyPop", Class smk = "SWWMHalfSmoke" ) + void A_Spread( Class pop = 'CandyPop', Class smk = 'SWWMHalfSmoke' ) { - Vector3 tdir = level.Vec3Diff(pos,invoker.nextpos); - Vector3 pvel = .1*tdir+(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](.1,.3); + Vector3 tdir = level.Vec3Diff(pos,nextpos); + Vector3 pvel = .1*tdir+SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](.1,.3); if ( special2 && !Random[ExploS](0,special2) ) { - let m = Spawn(smk,level.Vec3Offset(pos,tdir*.5)); + let m = SWWMAnimSprite.SpawnAt(smk,level.Vec3Offset(pos,tdir*.5)); m.vel = pvel; - m.SetShade(Color(1,1,1)*Random[ExploS](64,224)); - m.special1 = Random[ExploS](1,3); + m.scolor = Color(1,1,1)*Random[ExploS](64,224); + m.framestep = Random[ExploS](2,4); m.scale *= 1.5; m.alpha *= .4; } if ( special1 > ReactionTime ) { - let s = Spawn(pop,invoker.nextpos); + let s = Spawn(pop,nextpos); s.target = target; return; } - let b = Spawn(GetClass(),invoker.nextpos); - b.angle = atan2(invoker.nextdir.y,invoker.nextdir.x); - b.pitch = asin(-invoker.nextdir.z); + let b = Spawn(GetClass(),nextpos); + b.angle = atan2(nextdir.y,nextdir.x); + b.pitch = asin(-nextdir.z); b.target = target; b.special1 = special1+1; b.special2 = special2; b.frame = frame; } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } Default { Obituary "$O_CANDYGUN"; - RenderStyle "Add"; + SelfObituary "$SO_CANDYGUN"; + RenderStyle 'Add'; Alpha 0.4; DamageFunction 40; ReactionTime 12; - Radius 0.1; - Height 0; Speed 16; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; +INTERPOLATEANGLES; - +NOTELEPORT; - +NOINTERACTION; +FOILINVUL; } States @@ -209,25 +172,20 @@ Class CandyBeam : Actor } } -Class CandyPop : Actor +Class CandyPop : SWWMNonInteractiveActor { Default { Obituary "$O_CANDYGUN"; - DamageType "Explodium"; - RenderStyle "Add"; + SelfObituary "$SO_CANDYGUN"; + DamageType 'Candy'; + RenderStyle 'Add'; Scale 2.; - Radius .1; - Height 0.; - +NOGRAVITY; - +NOBLOCKMAP; +NODAMAGETHRUST; +FORCERADIUSDMG; +FORCEXYBILLBOARD; +ROLLSPRITE; +ROLLCENTER; - +NOTELEPORT; - +NOINTERACTION; +FOILINVUL; } void FlashPlayer( int str, double rad ) @@ -237,37 +195,26 @@ Class CandyPop : Actor double dist = Distance3D(mo); str = int(str*(1.-(dist/rad))); SWWMHandler.DoFlash(mo,Color(str,250,240,255),1); - SWWMHandler.DoFlash(mo,Color(str,224,0,255),3); - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } + SWWMHandler.DoFlash(mo,Color(str/2,224,0,255),5); } States { Spawn: - BLPF B 3 NoDelay + BLPF B 3 NoDelay Bright { SWWMUtility.DoExplosion(self,500,60000,180,60); Scale *= FRandom[ExploS](0.6,1.8); Scale.x *= RandomPick[ExploS](-1,1); Scale.y *= RandomPick[ExploS](-1,1); roll = FRandom[Explos](0,360); - Spawn("CandyPLight",pos); - FlashPlayer(60,800); + Spawn('CandyPLight',pos); + FlashPlayer(40,1200); int numpt = Random[ExploS](-3,3); for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { @@ -456,6 +389,10 @@ Class CandyMagTrailBig : CandyMagTrail Class CandyMagArmBig : CandyMagArm { + Default + { + SelfObituary "$SO_CANDYGUNCOMBO"; + } override void PostBeginPlay() { Super.PostBeginPlay(); @@ -468,15 +405,15 @@ Class CandyMagArmBig : CandyMagArm TNT1 A 1 { ReactionTime--; - Spawn("CandyMagTrailBig",pos); + Spawn('CandyMagTrailBig',pos); SWWMUtility.DoExplosion(self,100+reactiontime*10,3000+900*reactiontime,200+16*reactiontime); double spd = vel.length(); - vel = (vel*.1+(FRandom[ExploS](-.5,.5),FRandom[ExploS](-.5,.5),FRandom[ExploS](-.5,.5))).unit()*spd; - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - let s = Spawn("SWWMHalfSmoke",pos); + vel = (vel*.1+SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*.5).unit()*spd; + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,5); + let s = SWWMAnimSprite.SpawnAt('SWWMHalfSmoke',pos); s.vel = pvel+vel*.2; - s.SetShade(Color(1,1,1)*Random[ExploS](64,224)); - s.special1 = Random[ExploS](2,7); + s.scolor = Color(1,1,1)*Random[ExploS](64,224); + s.framestep = Random[ExploS](3,8); s.scale *= 2.4; s.alpha *= 0.1+.4*(ReactionTime/6.); int numpt = Random[ExploS](ReactionTime-15,1); @@ -484,7 +421,7 @@ Class CandyMagArmBig : CandyMagArm { double ang = FRandom[ExploS](0,360); double pt = FRandom[ExploS](-90,90); - let s = Spawn("TinyCandyBeam",pos); + let s = Spawn('TinyCandyBeam',pos); s.target = target; s.angle = ang; s.pitch = pt; @@ -498,7 +435,7 @@ Class CandyMagArmBig : CandyMagArm { double ang = FRandom[ExploS](0,360); double pt = FRandom[ExploS](-90,90); - let s = Spawn("CandyBeam",pos); + let s = Spawn('CandyBeam',pos); s.target = target; s.angle = ang; s.pitch = pt; @@ -513,13 +450,16 @@ Class CandyMagArmBig : CandyMagArm Class CandyGunProj : Actor { + Mixin SWWMMissileFix; + double pitchvel, anglevel; Vector3 cvel; Default { Obituary "$O_CANDYGUN"; - DamageType "Explodium"; + SelfObituary "$SO_CANDYGUNCOMBO"; + DamageType 'Candy'; Radius 3; Height 6; Gravity 0.5; @@ -534,6 +474,7 @@ Class CandyGunProj : Actor +FORCEXYBILLBOARD; +FOILINVUL; +EXPLODEONWATER; + +SKYEXPLODE; } override void PostBeginPlay() { @@ -570,7 +511,7 @@ Class CandyGunProj : Actor Scale *= 7.+.2*special1; A_AlertMonsters(swwm_uncapalert?0:40000); SWWMUtility.DoExplosion(self,3000+900*special1,80000+15000*special1,500+30*special1,300,DE_EXTRAZTHRUST); - A_QuakeEx(9,9,9,70,0,1500+100*special1,"",QF_RELATIVE|QF_SCALEDOWN,falloff:1200,rollintensity:2.); + A_QuakeEx(9.,9.,9.,70,0,1500+100*special1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:1200,rollintensity:2.); A_StartSound("candygun/gunhit",CHAN_VOICE,attenuation:.24); A_StartSound("candygun/gunhit",CHAN_WEAPON,attenuation:.12); A_SprayDecal("WumboRocketBlast",172); @@ -580,8 +521,8 @@ Class CandyGunProj : Actor int numpt = Random[ExploS](35,50); for ( int i=0; i 0) ) { - let s = Spawn("CandyMagArmBig",pos); + let s = Spawn('CandyMagArmBig',pos); s.target = target; } } @@ -650,13 +591,16 @@ Class CandyGunProj : Actor Class CandyMagProj : Actor { + Mixin SWWMMissileFix; + double pitchvel, anglevel; Vector3 cvel; Default { Obituary "$O_CANDYGUN"; - DamageType "Explodium"; + SelfObituary "$SO_CANDYGUNALT"; + DamageType 'Candy'; Radius 2; Height 4; Gravity 0.5; @@ -673,9 +617,11 @@ Class CandyMagProj : Actor +BOUNCEONFLOORS; +BOUNCEONCEILINGS; +BOUNCEONWALLS; + +ALLOWBOUNCEONACTORS; + +DONTBOUNCEONSHOOTABLES; +CANBOUNCEWATER; - +DONTBOUNCEONSKY; +USEBOUNCESTATE; + +KEEPBOUNCEANGLE; BounceFactor 0.4; WallBounceFactor 0.4; } @@ -694,7 +640,7 @@ Class CandyMagProj : Actor Scale *= 3.+.2*special1; A_AlertMonsters(swwm_uncapalert?0:20000); SWWMUtility.DoExplosion(self,800+900*special1,60000+15000*special1,200+20*special1,100,DE_EXTRAZTHRUST); - A_QuakeEx(9,9,9,30,0,500+80*special1,"",QF_RELATIVE|QF_SCALEDOWN,falloff:500,rollintensity:2.); + A_QuakeEx(9.,9.,9.,30,0,500+80*special1,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:500,rollintensity:2.); A_StartSound("candygun/maghit",CHAN_VOICE,attenuation:.24); A_StartSound("candygun/maghit",CHAN_WEAPON,attenuation:.12); A_SprayDecal("HugeRocketBlast",172); @@ -704,8 +650,8 @@ Class CandyMagProj : Actor int numpt = Random[ExploS](24,40); for ( int i=0; i15)?"CandyBeam":"TinyCandyBeam",pos); + let s = Spawn((frame>15)?'CandyBeam':'TinyCandyBeam',pos); s.target = target; s.angle = ang; s.pitch = pt; @@ -780,23 +729,18 @@ Class CandyMagProj : Actor } } -Class CandyBulletImpact : Actor +Class CandyBulletImpact : SWWMNonInteractiveActor { Default { Obituary "$O_CANDYGUN"; - DamageType "Explodium"; - RenderStyle "Add"; + SelfObituary "$SO_CANDYGUN"; + DamageType 'Candy'; + RenderStyle 'Add'; Scale 2.5; - Radius .1; - Height 0.; - +NOGRAVITY; - +NOBLOCKMAP; +NODAMAGETHRUST; +FORCERADIUSDMG; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; +FOILINVUL; } override void PostBeginPlay() @@ -804,7 +748,7 @@ Class CandyBulletImpact : Actor Super.PostBeginPlay(); A_AlertMonsters(swwm_uncapalert?0:9000); SWWMUtility.DoExplosion(self,900,48000,150,80,DE_EXTRAZTHRUST); - A_QuakeEx(6,6,6,15,0,300,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollintensity:0.2); + A_QuakeEx(6.,6.,6.,15,0,300,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:200,rollintensity:0.2); A_StartSound("candygun/hit",CHAN_VOICE,attenuation:.25); A_StartSound("candygun/hit",CHAN_WEAPON,attenuation:.5); A_SprayDecal("BigRocketBlast",-172); @@ -814,8 +758,8 @@ Class CandyBulletImpact : Actor int numpt = Random[ExploS](15,30); for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } + Spawn('CandyLight',pos); + Spawn('CandyRing',pos); } States { @@ -860,7 +793,7 @@ Class CandyBulletImpact : Actor { double ang = FRandom[ExploS](0,360); double pt = FRandom[ExploS](-90,90); - let s = Spawn("TinyCandyBeam",pos); + let s = Spawn('TinyCandyBeam',pos); s.target = target; s.angle = ang; s.pitch = pt; @@ -871,35 +804,18 @@ Class CandyBulletImpact : Actor } } -Class CandyRing : Actor +Class CandyRing : SWWMNonInteractiveActor { Default { - RenderStyle "Add"; + RenderStyle 'Add'; Scale 1.2; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } } States { Spawn: - XRG5 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.08); + XRGB ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.08); Stop; } } @@ -912,7 +828,7 @@ Class CandyRing2 : CandyRing States { Spawn: - XRG5 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.05); + XRGB ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.05); Stop; } } @@ -925,7 +841,7 @@ Class CandyRing3 : CandyRing States { Spawn: - XRG5 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.08); + XRGB ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.08); Stop; } } diff --git a/zscript/weapons/swwm_thiccboolet.zsc b/zscript/weapons/swwm_thiccboolet.zsc index 1d0682064..3e1da0c43 100644 --- a/zscript/weapons/swwm_thiccboolet.zsc +++ b/zscript/weapons/swwm_thiccboolet.zsc @@ -15,8 +15,7 @@ Class AuxiliarySilverBulletTracer : LineTracer { override ETraceStatus TraceCallback() { - if ( Results.HitType == TRACE_HitActor ) return TRACE_Skip; - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) + if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) { if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) ) return TRACE_Stop; @@ -26,36 +25,33 @@ Class AuxiliarySilverBulletTracer : LineTracer } } -Class SilverBulletTracer : SpreadSlugTracer +Class SilverBulletTracer : SpreadgunTracer { + double penetration; // please don't laugh bool pastwall, fullstop; Array WallPenetrateList; Vector3 exitpoint; - transient Array ffloors; // needs to be done like this because HAHA SCOPE override ETraceStatus TraceCallback() { // liquid splashes if ( Results.CrossedWater ) { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; + let hl = new('WaterHit'); hl.hitpos = Results.CrossedWaterPos; WaterHitList.Push(hl); } else if ( Results.Crossed3DWater ) { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; + let hl = new('WaterHit'); hl.hitpos = Results.Crossed3DWaterPos; WaterHitList.Push(hl); } if ( Results.HitType == TRACE_HitActor ) { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; if ( Results.HitActor.bSHOOTABLE ) { - let ent = new("HitListEntry"); + let ent = new('HitListEntry'); ent.hitactor = Results.HitActor; ent.hitlocation = Results.HitPos; ent.x = Results.HitVector; @@ -78,11 +74,6 @@ Class SilverBulletTracer : SpreadSlugTracer } return TRACE_Skip; } - else if ( Results.HitType == TRACE_HasHitSky ) - { - fullstop = true; - return TRACE_Stop; - } else if ( Results.HitType != TRACE_HitNone ) { if ( Results.HitType == TRACE_HitWall ) @@ -99,17 +90,18 @@ Class SilverBulletTracer : SpreadSlugTracer // double-check if we're piercing through a 3D floor (yes this is a thing that happens, oh boy) Sector s = level.PointInSector(ofs.xy); bool stop3d = false; - for ( int j=0; j maxz) ) continue; stop3d = true; break; } if ( stop3d ) continue; - let wp = new("WallPenetrate"); + let wp = new('WallPenetrate'); wp.hittype = Results.HitType; wp.hitline = Results.HitLine; wp.hitside = Results.Side; @@ -135,9 +127,9 @@ Class SilverBulletTracer : SpreadSlugTracer pastwall = true; penetration = max(0,penetration-i*4); // trace backwards to find exit surface - let at = new("AuxiliarySilverBulletTracer"); - at.Trace(ofs,level.PointInSector(ofs.xy),-Results.HitVector,2.,0); - let wp2 = new("WallPenetrate"); + let at = new('AuxiliarySilverBulletTracer'); + at.Trace(ofs,level.PointInSector(ofs.xy),-Results.HitVector,2.,0,ignoreallactors:true); + let wp2 = new('WallPenetrate'); wp2.hittype = at.Results.HitType; wp2.hitline = at.Results.HitLine; wp2.hitside = at.Results.Side; @@ -175,57 +167,14 @@ Class SilverBulletTracer : SpreadSlugTracer } } -Class FatChodeTracer : LineTracer -{ - Actor ignoreme; - Array ShootThroughList; - Array WaterHitList; - - override ETraceStatus TraceCallback() - { - // liquid splashes - if ( Results.CrossedWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; - hl.hitpos = Results.CrossedWaterPos; - WaterHitList.Push(hl); - } - else if ( Results.Crossed3DWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; - hl.hitpos = Results.Crossed3DWaterPos; - WaterHitList.Push(hl); - } - if ( Results.HitType == TRACE_HitActor ) - { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; - if ( Results.HitActor.bSHOOTABLE ) return TRACE_Stop; - return TRACE_Skip; - } - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) - { - if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&Line.ML_BlockHitscan) ) - return TRACE_Stop; - ShootThroughList.Push(Results.HitLine); - return TRACE_Skip; - } - return TRACE_Stop; - } -} - Class SilverBullet : SWWMWeapon { bool chambered, fired; - bool fcbchambered, fcbloaded, fcbselected; - ui int lastammo; int clipcount; double casex, casey; int nkills; - transient ui TextureID WeaponBox[2], ZoomBar, BulletIcon[2], AmmoIcon[2]; - transient ui DynamicValueInterpolator ZoomInter; + transient ui SmoothDynamicValueInterpolator ZoomInter; bool zoomed; double zoomlevel; @@ -239,86 +188,28 @@ Class SilverBullet : SWWMWeapon Property ClipCount : clipcount; - override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) - { - if ( fcbchambered ) return StringTable.Localize("$O_SILVERBULLET2"); - return Super.GetObituary(victim,inflictor,mod,playerattack); - } - - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - if ( !WeaponBox[0] ) WeaponBox[0] = TexMan.CheckForTexture("graphics/HUD/SilverBulletDisplay.png",TexMan.Type_Any); - if ( !WeaponBox[1] ) WeaponBox[1] = TexMan.CheckForTexture("graphics/HUD/SilverBulletZoomDisplay.png",TexMan.Type_Any); - if ( !BulletIcon[0] ) BulletIcon[0] = TexMan.CheckForTexture("graphics/HUD/SilverBulletXSB.png",TexMan.Type_Any); - if ( !BulletIcon[1] ) BulletIcon[1] = TexMan.CheckForTexture("graphics/HUD/SilverBulletFCB.png",TexMan.Type_Any); - if ( !AmmoIcon[0] ) AmmoIcon[0] = TexMan.CheckForTexture("graphics/HUD/SilverBulletXSBMag.png",TexMan.Type_Any); - if ( !AmmoIcon[1] ) AmmoIcon[1] = TexMan.CheckForTexture("graphics/HUD/SilverBulletFCBMag.png",TexMan.Type_Any); - if ( !ZoomBar ) ZoomBar = TexMan.CheckForTexture("graphics/HUD/SilverBulletZoomBar.png",TexMan.Type_Any); - int zl = clamp(ZoomInter?ZoomInter.GetValue():int(zoomlevel*10),0,160); - if ( zl >= 10 ) - { - Screen.DrawTexture(WeaponBox[1],false,bx-35,by-56,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - double zw = zl*31./160.; - Screen.DrawTexture(ZoomBar,false,bx-33,by-54,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,zw); - } - Screen.DrawTexture(WeaponBox[0],false,bx-55,by-44,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - if ( chambered ) Screen.DrawTexture(BulletIcon[fcbchambered],false,bx-53,by-30,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fired?Color(128,0,0,0):Color(0,0,0,0)); - for ( int i=0; i9)?32:29; - int sb = Owner.CountInv("SilverBullets"); - if ( sb > 0 ) - { - int cbx = (sb>9)?34:30; - Screen.DrawText(smallfont,Font.CR_FIRE,bx-cbx,by-20,String.Format("⁺%s",SWWMUtility.SuperscriptNum(sb)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Spacing,-1,DTA_ColorOverlay,fcbselected?Color(128,0,0,0):Color(0,0,0,0)); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-cx,by-13,String.Format("%d",Ammo1.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fcbselected?Color(128,0,0,0):Color(0,0,0,0)); - } - else Screen.DrawText(smallfont,Font.CR_FIRE,bx-cx,by-15,String.Format("%d",Ammo1.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fcbselected?Color(128,0,0,0):Color(0,0,0,0)); - cx = (Ammo2.Amount>9)?32:29; - sb = Owner.CountInv("SilverBullets2"); - if ( sb > 0 ) - { - int cbx = (sb>9)?34:30; - Screen.DrawText(smallfont,Font.CR_FIRE,bx-cbx,by-42,String.Format("⁺%s",SWWMUtility.SuperscriptNum(sb)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Spacing,-1,DTA_ColorOverlay,fcbselected?Color(0,0,0,0):Color(128,0,0,0)); - Screen.DrawText(smallfont,Font.CR_FIRE,bx-cx,by-35,String.Format("%d",Ammo2.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fcbselected?Color(0,0,0,0):Color(128,0,0,0)); - } - else Screen.DrawText(smallfont,Font.CR_FIRE,bx-cx,by-39,String.Format("%d",Ammo2.Amount),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fcbselected?Color(0,0,0,0):Color(128,0,0,0)); - } override void HudTick() { Super.HudTick(); - if ( !ZoomInter ) ZoomInter = DynamicValueInterpolator.Create(int(zoomlevel*10),.5,1,20); - ZoomInter.Update(int(zoomlevel*10)); - if ( lastammo && (lastammo != fcbselected+1) && (Owner.player == players[consoleplayer]) ) - { - let bar = SWWMStatusBar(statusbar); - if ( bar ) - { - bar.ntagstr = StringTable.Localize(fcbselected?"$SWWM_FCBSEL":"$SWWM_XSBSEL"); - bar.ntagtic = level.totaltime; - bar.ntagcol = nametagcolor; - } - } - lastammo = fcbselected+1; + if ( !ZoomInter ) ZoomInter = SmoothDynamicValueInterpolator.Create(zoomlevel*10,.5); + ZoomInter.Update(zoomlevel*10); } override bool ReportHUDAmmo() { if ( (chambered && !fired) || (clipcount > 0) ) return true; - if ( (Ammo1.Amount <= 0) && (Ammo2.Amount <= 0) && (Owner.CountInv("SilverBullets") <= 0) && (Owner.CountInv("SilverBullets2") <= 0) ) return false; + if ( (Ammo1.Amount <= 0) && (Owner.CountInv('SilverBullets') <= 0) ) return false; return true; } override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; - if ( (fireMode == PrimaryFire) || (fireMode == AltFire) ) + if ( (fireMode == PrimaryFire) || (fireMode == EitherFire) ) { - // allow player to still use the zoom even if there's no ammo left - // (should work fine, assuming I've correctly interpreted the execution chain of all this stuff) - if ( autoswitch && (fireMode == AltFire) ) return true; - return ((chambered && !fired) || (clipcount > 0) || (Ammo1.Amount > 0) || (Ammo2.Amount > 0) || (Owner.CountInv("SilverBullets") > 0) || (Owner.CountInv("SilverBullets2") > 0)); + if ( (chambered && !fired) || (clipcount > 0) || (Ammo1.Amount > 0) || (Owner.CountInv('SilverBullets') > 0) ) + return true; + if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); + return false; } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); } @@ -327,7 +218,7 @@ Class SilverBullet : SWWMWeapon // force disable zoom zoomed = false; if ( Owner.player == players[consoleplayer] ) - Shader.SetEnabled(players[consoleplayer],"SilverScope",false); + PPShader.SetEnabled("SilverScope",false); Super.DetachFromOwner(); } override double GetSpeedFactor() @@ -338,7 +229,6 @@ Class SilverBullet : SWWMWeapon override void DoEffect() { Super.DoEffect(); - if ( zoomed ) crosshair = 99; if ( !Owner || !Owner.player ) { proneme = false; @@ -347,7 +237,7 @@ Class SilverBullet : SWWMWeapon } if ( (Owner.player.ReadyWeapon == self) && Owner.player.onground ) { - if ( Owner.player.cmd.buttons&BT_CROUCH ) + if ( (Owner.player.cmd.buttons&BT_CROUCH) || (Owner.player.crouchdir == -1) ) { if ( !proneme ) Owner.A_StartSound("silverbullet/crouch",CHAN_WEAPONEXTRA,CHANF_OVERLAP); proneme = true; @@ -367,108 +257,99 @@ Class SilverBullet : SWWMWeapon { Vector2 ss = (Screen.GetWidth(),Screen.GetHeight()); ss *= (512./ss.y); - if ( swwm_shaders ) Shader.SetEnabled(players[consoleplayer],"SilverScope",true); + if ( swwm_shaders ) PPShader.SetEnabled("SilverScope",true); else { - Shader.SetEnabled(players[consoleplayer],"SilverScope",false); - if ( !scope ) scope = TexMan.CheckForTexture("graphics/SBScope.png",TexMan.Type_Any); + PPShader.SetEnabled("SilverScope",false); + if ( !scope ) scope = TexMan.CheckForTexture("graphics/SBScope.png"); Screen.DrawTexture(scope,false,ss.x*.5,ss.y*.5,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Multiply); } - if ( !reticle ) reticle = TexMan.CheckForTexture("graphics/SBReticle.png",TexMan.Type_Any); + if ( !reticle ) reticle = TexMan.CheckForTexture("graphics/SBReticle.png"); Screen.DrawTexture(reticle,false,ss.x*.5,ss.y*.5,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_LegacyRenderStyle,STYLE_Stencil,DTA_FillColor,Color(0,0,0)); return; } - else Shader.SetEnabled(players[consoleplayer],"SilverScope",false); + else PPShader.SetEnabled("SilverScope",false); Super.RenderUnderlay(e); } + override bool ShouldDrawCrosshair() + { + return !zoomed; + } action void ProcessTraceHit( SilverBulletTracer t, Vector3 origin, Vector3 dir ) { - for ( int i=0; i 0) && hit.HitActor && !hit.HitActor.bNOBLOOD && !hit.HitActor.bDORMANT ) { - t.HitList[i].HitActor.TraceBleed(dmg,self); - t.HitList[i].HitActor.SpawnBlood(t.HitList[i].HitLocation,atan2(t.HitList[i].x.y,t.HitList[i].x.x)+180,dmg); - t.HitList[i].HitActor.A_StartSound("silverbullet/flesh",CHAN_DAMAGE,CHANF_OVERLAP,1.,2.); - let p = Spawn("SilverImpact",t.HitList[i].HitLocation); + hit.HitActor.TraceBleed(dmg,self); + hit.HitActor.SpawnBlood(hit.HitLocation,atan2(hit.x.y,hit.x.x)+180,dmg); + hit.HitActor.A_StartSound("silverbullet/flesh",CHAN_DAMAGE,CHANF_OVERLAP,1.,2.); + let p = Spawn('SilverImpact',hit.HitLocation); p.special1 = 1; p.target = self; p.master = invoker; - p.bAMBUSH = t.HitList[i].pastwall; + p.bAMBUSH = hit.pastwall; } else { - let p = Spawn("SilverImpact",t.HitList[i].HitLocation); - p.angle = atan2(t.HitList[i].x.y,t.HitList[i].x.x)+180; - p.pitch = asin(t.HitList[i].x.z); + let p = Spawn('SilverImpact',hit.HitLocation); + p.angle = atan2(hit.x.y,hit.x.x)+180; + p.pitch = asin(hit.x.z); p.target = self; p.master = invoker; - p.bAMBUSH = t.HitList[i].pastwall; + p.bAMBUSH = hit.pastwall; } } - LineTracer faketracer = new("LineTracer"); - for ( int i=0; i= t.Results.HitActor.Health ) dmg += 600; - let p = SWWMPuff.Setup(t.Results.HitPos,t.Results.HitVector,invoker,self,t.Results.HitActor); - dmg = t.Results.HitActor.DamageMobj(p,self,dmg,'shot',DMG_FOILINVUL|DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); - SWWMUtility.DoKnockback(t.Results.HitActor,t.Results.HitVector+(0,0,.025),dmg*20.*FRandom[SilverBullet](.8,1.2)); - if ( t.Results.HitActor && !t.Results.HitActor.bNOBLOOD && !t.Results.HitActor.bDORMANT ) - { - t.Results.HitActor.TraceBleed(dmg,self); - t.Results.HitActor.SpawnBlood(t.Results.HitPos,atan2(t.Results.HitVector.y,t.Results.HitVector.x)+180,dmg); - t.Results.HitActor.A_StartSound("silverbullet/flesh",CHAN_DAMAGE,CHANF_OVERLAP,1.,2.); - } - } - else if ( t.Results.HitType == TRACE_HitWall ) - t.Results.HitLine.RemoteActivate(self,t.Results.Side,SPAC_Impact,t.Results.HitPos); - let p = Spawn("FatChodeImpact",t.Results.HitPos+hitnormal*4); - p.angle = atan2(hitnormal.y,hitnormal.x); - p.pitch = asin(-hitnormal.z); - p.target = self; - FatChodeImpact(p).realangle = atan2(t.Results.HitVector.y,t.Results.HitVector.x); - FatChodeImpact(p).realpitch = asin(-t.Results.HitVector.z); - BusterWall.Bust(t.Results,invoker.proneme?1400:1200,self,t.Results.HitVector,t.Results.HitPos.z); - } - for ( int i=0; i mac = fcb?"SilverBullets2":"SilverBullets"; - MagAmmo ma = MagAmmo(FindInventory(mac)); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,10,10,-8); + MagAmmo ma = MagAmmo(FindInventory('SilverBullets')); if ( !ma ) { - ma = MagAmmo(Spawn(mac)); + ma = MagAmmo(Spawn('SilverBullets')); ma.Amount = 0; ma.AttachToOwner(self); } @@ -746,11 +555,11 @@ Class SilverBullet : SWWMWeapon } else { - let c = Spawn(mac,origin); + let c = Spawn('SilverBullets',origin); c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](4,8)-(0,0,FRandom[Junk](1,3)); c.vel += vel*.5; } - if ( !Demolitionist(self) || !(Demolitionist(self).mystats) || !swwm_nomapmsg ) return; + if ( !Demolitionist(self) || !(Demolitionist(self).mystats) || swwm_nomapmsg ) return; invoker.wastecycle++; let s = Demolitionist(self).mystats; if ( s.silveregg < 13 ) @@ -760,56 +569,28 @@ Class SilverBullet : SWWMWeapon } else return; invoker.wastecycle = 0; - if ( (s.silveregg > 2) && (s.silveregg%2) && player == players[consoleplayer] ) - Console.MidPrint(null,"swwmsilverbulleteasteregg"..((s.silveregg-1)/2)); + if ( (s.silveregg > 2) && (s.silveregg%2) && (player == players[consoleplayer]) ) + EventHandler.SendInterfaceEvent(consoleplayer,"swwmsetdialogue.WASTE"..1+(((s.silveregg-1)/2)-1)); } action void A_DropMag() { - if ( invoker.clipcount >= invoker.default.clipcount ) + MagAmmo ma = MagAmmo(FindInventory('SilverBullets')); + if ( !ma ) { - if ( invoker.fcbloaded ) - { - if ( (invoker.Ammo2.Amount >= invoker.Ammo2.MaxAmount) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) - invoker.Ammo2.CreateTossable(1); - invoker.Ammo2.Amount++; - } - else - { - if ( (invoker.Ammo1.Amount >= invoker.Ammo1.MaxAmount) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) - invoker.Ammo1.CreateTossable(1); - invoker.Ammo1.Amount++; - } - invoker.ClipCount = 0; - return; // no mag dropped - } - else - { - Class mac = invoker.fcbloaded?"SilverBullets2":"SilverBullets"; - MagAmmo ma = MagAmmo(FindInventory(mac)); - if ( !ma ) - { - ma = MagAmmo(Spawn(mac)); - ma.Amount = 0; - ma.AttachToOwner(self); - } - int maxgiveamt = min(ma.MaxAmount-ma.Amount,invoker.clipcount); - int dropamt = invoker.clipcount-maxgiveamt; - if ( dropamt > 0 ) ma.CreateTossable(dropamt); - ma.Amount = min(ma.MaxAmount,ma.Amount+invoker.clipcount); - ma.MagFill(); - if ( CheckLocalView() ) for ( int i=0; i 0 ) ma.PlayPickupSound(self); + ma = MagAmmo(Spawn('SilverBullets')); + ma.Amount = 0; + ma.AttachToOwner(self); } + int maxgiveamt = min(ma.MaxAmount-ma.Amount,invoker.clipcount); + int dropamt = invoker.clipcount-maxgiveamt; + if ( dropamt > 0 ) invoker.BufferMagAmmo('SilverBullets',dropamt); + ma.Amount = min(ma.MaxAmount,ma.Amount+invoker.clipcount); + ma.MagFill(); invoker.ClipCount = 0; if ( swwm_nomagdrop ) return; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),6*x-15*z); - let c = Spawn(invoker.fcbloaded?"SilverBulletMag2":"SilverBulletMag",origin); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); + Vector3 origin = SWWMUtility.GetFireOffset(self,6,0,-15); + let c = Spawn('SilverBulletMag',origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-(0,0,FRandom[Junk](2,3)); @@ -818,16 +599,15 @@ Class SilverBullet : SWWMWeapon action void A_JetCompensate() { invoker.specialf1 -= .06; - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); + let [x, y, z] = SWWMUtility.GetPlayerAxes(self); vel += x*min(1.,invoker.specialf1)*(600./Mass); A_OverlayAlpha(PSP_WEAPON+1,clamp(invoker.specialf1*3.,0.,1.)); if ( Random[SilverBullet](0,int(invoker.specialf1*2)) ) self.DamageMobj(invoker,self,1,'jet'); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),-x*10-z*10); + Vector3 origin = SWWMUtility.GetFireOffset(self,-10,0,-10); for ( int i=0; i<4; i++ ) { - let s = Spawn("SWWMSmoke",origin); + let s = Spawn('SWWMSmoke',origin); s.scale *= 1.3; s.alpha *= .5*invoker.specialf1; s.special1 = Random[Silverbullet](0,3); @@ -836,34 +616,9 @@ Class SilverBullet : SWWMWeapon } } - action void A_SwitchAmmoType( bool ifempty = false ) - { - bool oldsel = invoker.fcbselected; - if ( invoker.fcbselected && ((invoker.Ammo1.Amount > 0) || (CountInv("SilverBullets") > 0)) ) - invoker.fcbselected = (ifempty&&((invoker.Ammo2.Amount>0)||(CountInv("SilverBullets2")>0)))?true:false; - else if ( !invoker.fcbselected && ((invoker.Ammo2.Amount > 0) || (CountInv("SilverBullets2") > 0)) ) - invoker.fcbselected = (ifempty&&((invoker.Ammo1.Amount>0)||(CountInv("SilverBullets")>0)))?false:true; - if ( oldsel != invoker.fcbselected ) A_StartSound("misc/invchange",CHAN_WEAPONEXTRA,CHANF_UI|CHANF_LOCAL); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - } - action void A_AltHold() - { - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - // tap fire to unload round - if ( player.cmd.buttons&BT_ATTACK ) - { - player.SetPSPrite(PSP_WEAPON,invoker.FindState("Cock")); - return; - } - if ( player.cmd.buttons&BT_ALTATTACK ) return; - A_SwitchAmmoType(); - if ( invoker.zoomed ) player.SetPSPrite(PSP_WEAPON,invoker.FindState("ZoomReady")); - else player.SetPSPrite(PSP_WEAPON,invoker.fcbloaded?invoker.FindState("Ready2"):invoker.FindState("Ready")); - } - action void A_LoadMag() { - MagAmmo sb = MagAmmo(FindInventory("SilverBullets")); + MagAmmo sb = MagAmmo(FindInventory('SilverBullets')); if ( sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) ) invoker.clipcount = invoker.default.clipcount; else if ( (invoker.Ammo1.Amount <= 0) || (sb.Amount >= sb.ClipSize) ) @@ -871,31 +626,18 @@ Class SilverBullet : SWWMWeapon int takeamt = min(sb.Amount,sb.ClipSize); invoker.clipcount = takeamt; sb.Amount -= takeamt; + int req = invoker.default.ClipCount-invoker.clipcount; + if ( req > 0 ) invoker.clipcount += invoker.FetchBufferedMagAmmo('SilverBullets',req); } + else if ( invoker.FetchBufferedMagAmmo('SilverBullets',sb.ClipSize,true) ) + invoker.clipcount = invoker.default.clipcount; else { invoker.Ammo1.Amount = max(0,invoker.Ammo1.Amount-1); invoker.clipcount = invoker.default.clipcount; } invoker.wastecycle = 0; - } - action void A_LoadMagAlt() - { - MagAmmo sb = MagAmmo(FindInventory("SilverBullets2")); - if ( sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) ) - invoker.clipcount = invoker.default.clipcount; - else if ( (invoker.Ammo2.Amount <= 0) || (sb.Amount >= sb.ClipSize) ) - { - int takeamt = min(sb.Amount,sb.ClipSize); - invoker.clipcount = takeamt; - sb.Amount -= takeamt; - } - else - { - invoker.Ammo2.Amount = max(0,invoker.Ammo2.Amount-1); - invoker.clipcount = invoker.default.clipcount; - } - invoker.wastecycle = 0; + invoker.ClearBufferedAmmo(); } override bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon ) @@ -908,11 +650,10 @@ Class SilverBullet : SWWMWeapon if ( chambered ) { // first check the bullet in the chamber - Class wammo = fcbchambered?'SilverBullets2':'SilverBullets'; - let ma = Owner.FindInventory(wammo); + let ma = Owner.FindInventory('SilverBullets'); if ( !ma ) { - ma = Inventory(Spawn(wammo)); + ma = Inventory(Spawn('SilverBullets')); ma.Amount = 0; ma.AttachToOwner(Owner); } @@ -922,11 +663,10 @@ Class SilverBullet : SWWMWeapon } if ( clipcount > 0 ) { - Class wammo = fcbloaded?'SilverBullets2':'SilverBullets'; - let ma = Owner.FindInventory(wammo); + let ma = Owner.FindInventory('SilverBullets'); if ( !ma ) { - ma = Inventory(Spawn(wammo)); + ma = Inventory(Spawn('SilverBullets')); ma.Amount = 0; ma.AttachToOwner(Owner); } @@ -958,9 +698,6 @@ Class SilverBullet : SWWMWeapon MarkSound("silverbullet/fire1"); MarkSound("silverbullet/fire2"); MarkSound("silverbullet/fire3"); - MarkSound("silverbullet/altfire1"); - MarkSound("silverbullet/altfire2"); - MarkSound("silverbullet/altfire3"); MarkSound("silverbullet/jet"); MarkSound("silverbullet/casing1"); MarkSound("silverbullet/casing2"); @@ -973,55 +710,40 @@ Class SilverBullet : SWWMWeapon MarkSound("silverbullet/hit2"); MarkSound("silverbullet/flesh1"); MarkSound("silverbullet/flesh2"); - MarkSound("silverbullet/chode1"); - MarkSound("silverbullet/chode2"); MarkSound("silverbullet/crouch"); MarkSound("silverbullet/uncrouch"); } Default { - //$Title Silver Bullet JET - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_SilverBullet.png - //$Icon weapon Tag "$T_SILVERBULLET"; + Inventory.Icon "graphics/HUD/Icons/W_SilverBullet.png"; Inventory.PickupMessage "$T_SILVERBULLET"; Obituary "$O_SILVERBULLET"; + SelfObituary "$SO_SILVERBULLET2"; SWWMWeapon.Tooltip "$TT_SILVERBULLET"; SWWMWeapon.GetLine "getsilverbullet"; - Inventory.Icon "graphics/HUD/Icons/W_SilverBullet.png"; Weapon.SlotNumber 8; Weapon.SelectionOrder 800; Weapon.UpSound "silverbullet/select"; Stamina 400000; - Weapon.AmmoType1 "SilverBulletAmmo"; + Weapon.AmmoType1 'SilverBulletAmmo'; Weapon.AmmoGive1 1; - Weapon.AmmoType2 "SilverBulletAmmo2"; - Weapon.AmmoGive2 0; - SWWMWeapon.DropAmmoType "SilverBulletAmmo"; + SWWMWeapon.DropAmmoType 'SWWMCellAmmoSmall'; SilverBullet.ClipCount 5; +SWWMWEAPON.NOFIRSTGIVE; +WEAPON.ALT_AMMO_OPTIONAL; +WEAPON.EXPLOSIVE; - Radius 36; - Height 36; } States { Spawn: - XZW1 A -1 NoDelay A_JumpIf(invoker.fcbloaded,1); - XZW1 B -1; + XZW1 A -1; Stop; Select: - XZW2 G 0 A_JumpIf(invoker.fcbloaded,"Select2"); XZW2 G 2 A_FullRaise(); XZW2 HIJKLMN 2; Goto Ready; - Select2: - XZW8 G 2 A_FullRaise(); - XZW8 HIJKLMN 2; - Goto Ready2; Ready: XZW2 A 1 { @@ -1031,15 +753,6 @@ Class SilverBullet : SWWMWeapon invoker.CheckAmmo(EitherFire,true); } Wait; - Ready2: - XZW8 A 1 - { - int flg = WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1; - A_WeaponReady(flg); - if ( player.cmd.buttons&BT_ATTACK ) - invoker.CheckAmmo(EitherFire,true); - } - Wait; ZoomReady: TNT1 A 1 { @@ -1051,37 +764,26 @@ Class SilverBullet : SWWMWeapon invoker.CheckAmmo(EitherFire,true); } Wait; - AltFire: - #### # 1 A_AltHold(); - Wait; Fire: XZW2 A 1 { - if ( (player.cmd.buttons&BT_ALTATTACK) && invoker.chambered ) - return ResolveState("Cock"); if ( !invoker.chambered || invoker.fired ) { - if ( !invoker.fired && (invoker.clipcount <= 0) && (sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) || (invoker.Ammo1.Amount > 0) || (invoker.Ammo2.Amount > 0) || (CountInv("SilverBullets") > 0) || (CountInv("SilverBullets2") > 0)) ) - { - A_SwitchAmmoType(true); - return ResolveState("Reload"); - } - return ResolveState("Cock"); + if ( !invoker.fired && (invoker.clipcount <= 0) && (sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) || (invoker.Ammo1.Amount > 0) || (CountInv('SilverBullets') > 0)) ) + return ResolveState('Reload'); + return ResolveState('AltFire'); } A_SilverFire(); invoker.fired = true; - if ( invoker.zoomed ) return ResolveState("ZoomFire"); - return A_JumpIf(invoker.fcbloaded,"Fire2"); + return A_JumpIf(invoker.zoomed,'ZoomFire'); } XZW2 OPQR 2; XZW2 STUVW 3; - XZW2 A 1 A_JumpIf(invoker.specialf1<=0.,"Ready"); + XZW2 A 1 A_JumpIf(invoker.specialf1<=0.,'Ready'); Wait; - Fire2: - XZW8 A 1; - XZW8 OPQR 2; - XZW8 STUVW 3; - XZW8 A 1 A_JumpIf(invoker.specialf1<=0.,"Ready2"); + ZoomFire: + TNT1 A 24; + TNT1 A 1 A_JumpIf(invoker.specialf1<=0.,'ZoomReady'); Wait; Jet: TNT1 A 3 @@ -1091,9 +793,12 @@ Class SilverBullet : SWWMWeapon TNT1 A 0 { A_StartSound("silverbullet/jet",CHAN_WEAPON,CHANF_OVERLAP); - A_Overlay(PSP_WEAPON+1,"JetSmoke"); - A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true); - A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add); + if ( !invoker.zoomed ) + { + A_Overlay(PSP_WEAPON+1,'JetSmoke'); + A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true); + A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add); + } } TNT1 A 1 { @@ -1104,45 +809,40 @@ Class SilverBullet : SWWMWeapon TNT1 A 1; Stop; JetSmoke: - XZW7 PQR 2; - XZW7 STUVW 3; - XZW7 X 1 A_JumpIf(invoker.specialf1<=0.,1); + XZW8 QRS 2; + XZW8 TUVWX 3; + XZW8 Y 1 A_JumpIf(invoker.specialf1<=0.,1); Wait; TNT1 A 1; Stop; - Cock: - XZW2 A 0 - { - if ( invoker.zoomed ) return ResolveState("ZoomCock"); - return invoker.fcbloaded?ResolveState("DoCock2"):ResolveState("DoCock"); - } + AltFire: + XZW2 A 0 A_JumpIf(invoker.zoomed,'ZoomCock'); + Goto DoCock; ZoomCock: TNT1 A 12 A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); TNT1 A 10 { + A_QuakeEx(.5,.5,.5,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_BumpFOV(.99); A_StartSound("silverbullet/boltopen",CHAN_WEAPON,CHANF_OVERLAP); if ( invoker.chambered ) { int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - if ( invoker.fired ) - { - if ( invoker.fcbchambered ) A_Overlay(layer,"ZoomCasing2"); - else A_Overlay(layer,"ZoomCasing"); - } - else - { - if ( invoker.fcbchambered ) A_Overlay(layer,"ZoomBullet2"); - else A_Overlay(layer,"ZoomBullet"); - } + if ( invoker.fired ) A_Overlay(layer,'ZoomCasing'); + else A_Overlay(layer,'ZoomBullet'); } if ( !invoker.chambered || invoker.fired ) invoker.wastecycle = 0; invoker.fired = false; invoker.chambered = (invoker.clipcount>0); - if ( invoker.clipcount > 0 ) invoker.fcbchambered = invoker.fcbloaded; invoker.clipcount = max(0,invoker.clipcount-1); } - TNT1 A 2 A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); + TNT1 A 2 + { + A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.65); + A_BumpFOV(.98); + A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); + } TNT1 A 20 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); Goto ZoomReady; DoCock: @@ -1151,134 +851,64 @@ Class SilverBullet : SWWMWeapon XZW3 AB 2; XZW3 C 2 { + A_QuakeEx(.5,.5,.5,6,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.4); + A_BumpFOV(.99); A_StartSound("silverbullet/boltopen",CHAN_WEAPON,CHANF_OVERLAP); if ( invoker.chambered ) { int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - if ( invoker.fired ) - { - if ( invoker.fcbchambered ) A_Overlay(layer,"Casing2"); - else A_Overlay(layer,"Casing"); - } - else - { - if ( invoker.fcbchambered ) A_Overlay(layer,"Bullet2"); - else A_Overlay(layer,"Bullet"); - } + if ( invoker.fired ) A_Overlay(layer,'Casing'); + else A_Overlay(layer,'Bullet'); } if ( !invoker.chambered || invoker.fired ) invoker.wastecycle = 0; invoker.fired = false; invoker.chambered = (invoker.clipcount>0); - if ( invoker.clipcount > 0 ) invoker.fcbchambered = invoker.fcbloaded; invoker.clipcount = max(0,invoker.clipcount-1); } XZW3 DEFG 2; - XZW3 H 2 A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); + XZW3 H 2 + { + A_QuakeEx(1.2,1.2,1.2,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.65); + A_BumpFOV(.98); + A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); + } XZW3 I 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW3 JKLMNOPQR 2; Goto Ready; - DoCock2: - XZW8 A 2 A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 XYZ 2; - XZW9 AB 2; - XZW9 C 2 - { - A_StartSound("silverbullet/boltopen",CHAN_WEAPON,CHANF_OVERLAP); - if ( invoker.chambered ) - { - int layer = PSP_WEAPON+2; - while ( player.FindPSprite(layer) ) layer++; - if ( invoker.fired ) - { - if ( invoker.fcbchambered ) A_Overlay(layer,"Casing2"); - else A_Overlay(layer,"Casing"); - } - else - { - if ( invoker.fcbchambered ) A_Overlay(layer,"Bullet2"); - else A_Overlay(layer,"Bullet"); - } - } - if ( !invoker.chambered || invoker.fired ) invoker.wastecycle = 0; - invoker.fired = false; - invoker.chambered = (invoker.clipcount>0); - if ( invoker.clipcount > 0 ) invoker.fcbchambered = invoker.fcbloaded; - invoker.clipcount = max(0,invoker.clipcount-1); - } - XZW9 DEFG 2; - XZW9 H 2 A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); - XZW9 I 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW9 JKLMNOPQR 2; - Goto Ready2; ZoomCasing: TNT1 A 14; TNT1 A 0 A_DropCasing(); Stop; - ZoomCasing2: - TNT1 A 14; - TNT1 A 0 A_DropCasing(true); - Stop; ZoomBullet: TNT1 A 14; TNT1 A 0 A_DropBullet(); Stop; - ZoomBullet2: - TNT1 A 14; - TNT1 A 0 A_DropBullet(true); - Stop; Casing: - XZW7 D 2 + XZW7 S 2 { A_OverlayOffset(OverlayID(),0,0); invoker.casex = FRandom[Silverbullet](-2.,2.); invoker.casey = FRandom[Silverbullet](-2.,2.); } - XZW7 E 2; - XZW7 FGHIJKLMNO 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); + XZW7 T 2; + XZW7 UVWXYZ 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); + XZW8 ABCD 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); TNT1 A 0 A_DropCasing(); Stop; - Casing2: - XZWD D 2 - { - A_OverlayOffset(OverlayID(),0,0); - invoker.casex = FRandom[Silverbullet](-2.,2.); - invoker.casey = FRandom[Silverbullet](-2.,2.); - } - XZWD E 2; - XZWD FGHIJKLMNO 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); - TNT1 A 0 A_DropCasing(true); - Stop; Bullet: - XZWD P 2 + XZW8 E 2 { A_OverlayOffset(OverlayID(),0,0); invoker.casex = FRandom[Silverbullet](-2.,2.); invoker.casey = FRandom[Silverbullet](-2.,2.); } - XZWD Q 2; - XZWD RSTUVWXYZ 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); - XZWE A 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); + XZW8 F 2; + XZW8 GHIJKLMNOP 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); TNT1 A 0 A_DropBullet(); Stop; - Bullet2: - XZWE B 2 - { - A_OverlayOffset(OverlayID(),0,0); - invoker.casex = FRandom[Silverbullet](-2.,2.); - invoker.casey = FRandom[Silverbullet](-2.,2.); - } - XZWE C 2; - XZWE DEFGHIJKLM 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); - TNT1 A 0 A_DropBullet(true); - Stop; - ZoomFire: - TNT1 A 24; - TNT1 A 1 A_JumpIf(invoker.specialf1<=0.,"ZoomReady"); - Wait; Zoom: - XZW2 A 0 A_JumpIf(invoker.zoomed,"UnZoom"); - XZW2 A 0 A_JumpIf(invoker.fcbloaded,"Zoom2"); + XZW2 A 0 A_JumpIf(invoker.zoomed,'UnZoom'); XZW2 A 2 { A_StartSound("silverbullet/zoomstart",CHAN_WEAPON,CHANF_OVERLAP); @@ -1294,35 +924,12 @@ Class SilverBullet : SWWMWeapon if ( !(player.cmd.buttons&BT_ZOOM) ) { invoker.rezoom = 3; - return ResolveState("ZoomReady"); - } - return ResolveState(null); - } - Wait; - Zoom2: - XZW8 A 0 A_JumpIf(invoker.zoomed,"UnZoom2"); - XZW8 A 2 - { - A_StartSound("silverbullet/zoomstart",CHAN_WEAPON,CHANF_OVERLAP); - invoker.zoomlevel = 0; - } - XZW9 STUVWX 1; - TNT1 A 1 - { - invoker.zoomed = true; - invoker.zoomlevel = clamp(invoker.zoomlevel*1.05+.05,1.,16.); - A_ZoomFactor(invoker.zoomlevel); - if ( !(level.maptime%2) && (invoker.zoomlevel < 16.) ) A_StartSound("silverbullet/zooming",CHAN_WEAPON,CHANF_OVERLAP,.2); - if ( !(player.cmd.buttons&BT_ZOOM) ) - { - invoker.rezoom = 3; - return ResolveState("ZoomReady"); + return ResolveState('ZoomReady'); } return ResolveState(null); } Wait; UnZoom: - XZW3 X 0 A_JumpIf(invoker.fcbloaded,"UnZoom2"); XZW3 X 1 { A_StartSound("silverbullet/zoomend",CHAN_WEAPON,CHANF_OVERLAP); @@ -1343,149 +950,89 @@ Class SilverBullet : SWWMWeapon return ResolveState(null); } Goto Ready; - UnZoom2: - XZW9 X 1 - { - A_StartSound("silverbullet/zoomend",CHAN_WEAPON,CHANF_OVERLAP); - invoker.zoomed = false; - invoker.zoomlevel = 0; - A_ZoomFactor(1.,ZOOM_INSTANT); - } - XZW9 YZ 1; - XZWA ABC 1; - XZW8 A 0 - { - if ( invoker.dezoomstate ) - { - State tmp = invoker.dezoomstate; - invoker.dezoomstate = null; - return tmp; - } - return ResolveState(null); - } - Goto Ready2; Reload: - XZW2 A 0 + XZW2 A -1 { - // autoswitch if needed - A_SwitchAmmoType(true); - if ( ((invoker.clipcount >= invoker.default.clipcount) && (invoker.fcbselected == invoker.fcbloaded)) || (!sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) && (invoker.Ammo1.Amount <= 0) && (invoker.Ammo2.Amount <= 0) && (CountInv("SilverBullets") <= 0) && (CountInv("SilverBullets2") <= 0)) ) - return ResolveState("Idle"); + if ( (invoker.clipcount >= invoker.default.clipcount) || (!sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) && (invoker.Ammo1.Amount <= 0) && (CountInv('SilverBullets') <= 0)) ) + return ResolveState('Idle'); if ( invoker.zoomed ) { - invoker.dezoomstate = invoker.fcbloaded?ResolveState("Unload2"):ResolveState("Unload"); - return ResolveState("UnZoom"); + invoker.dezoomstate = ResolveState('Unload'); + return ResolveState('UnZoom'); } - return A_JumpIf(invoker.fcbloaded,"Unload2"); + return ResolveState('Unload'); } + Stop; Unload: XZW2 A 2 { A_PlayerReload(); A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.clipcount<=0,"UnloadEmpty"); + A_ChangeModel("",1,"","",4,"models",String.Format("SilverbulletAmmo%s.png",(invoker.clipcount<=0)?"_Empty":""),CMDL_USESURFACESKIN,-1); } XZW4 DEFGHI 2; - XZW4 J 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 J 2 + { + A_BumpView(-2); + A_BumpFOV(.92); + A_QuakeEx(1.8,1.8,1.8,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.8); + A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); + } XZW4 KLMN 2; Goto Load; - UnloadEmpty: - XZW2 A 2; - XZW4 OPQRST 2; - XZW4 U 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 VWXY 2; - Goto Load; - Unload2: - XZW8 A 2 - { - A_PlayerReload(); - A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.clipcount<=0,"UnloadEmpty2"); - } - XZWA DEFGHI 2; - XZWA J 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWA KLMN 2; - Goto Load; - UnloadEmpty2: - XZW8 A 2; - XZWA OPQRST 2; - XZWA U 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWA VWXY 2; - Goto Load; Load: - XZW4 Z 2 + XZW4 O 2 { A_DropMag(); - return A_JumpIf(invoker.fcbselected,"Load2"); + A_ChangeModel("",1,"","",4,"models","SilverbulletAmmo.png",CMDL_USESURFACESKIN,-1); } - XZW5 ABC 2; - XZW5 D 2 + XZW4 PQR 2; + XZW4 S 2 { - invoker.fcbloaded = false; A_LoadMag(); - A_SwitchAmmoType(true); + A_BumpView(-12); + A_BumpFOV(.89); + A_QuakeEx(2.6,2.6,2.6,12,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:1.2); A_StartSound("silverbullet/magin",CHAN_WEAPON,CHANF_OVERLAP); } - XZW5 E 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 FGHIJKLMN 2; + XZW4 T 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 UVWXYZ 2; + XZW5 ABC 2; Goto Ready; - Load2: - XZWA Z 2; - XZWB ABC 2; - XZWB D 2 - { - invoker.fcbloaded = true; - A_LoadMagAlt(); - A_SwitchAmmoType(true); - A_StartSound("silverbullet/magin",CHAN_WEAPON,CHANF_OVERLAP); - } - XZWB E 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZWB FGHIJKLMN 2; - Goto Ready2; Idle: - XZW2 A 0 + XZW2 A -1 { if ( invoker.zoomed ) { - invoker.dezoomstate = invoker.fcbloaded?ResolveState("DoIdle2"):ResolveState("DoIdle"); - return ResolveState("UnZoom"); + invoker.dezoomstate = ResolveState('DoIdle'); + return ResolveState('UnZoom'); } - return invoker.fcbloaded?ResolveState("DoIdle2"):ResolveState("DoIdle"); + return ResolveState('DoIdle'); } + Stop; DoIdle: XZW2 A 2 { A_StartSound("silverbullet/idle",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); } - XZW5 OPQR 3; - XZW5 STUV 2; - XZW5 WXYZ 3; - XZW6 ABCD 4; - XZW6 EFGH 3; + XZW5 DEFG 3; + XZW5 HIJK 2; + XZW5 LMNO 3; + XZW5 PQRS 4; + XZW5 TUVW 3; Goto Ready; - DoIdle2: - XZW8 A 2 - { - A_StartSound("silverbullet/idle",CHAN_WEAPON,CHANF_OVERLAP); - A_PlayerCheckGun(); - } - XZWB OPQR 3; - XZWB STUV 2; - XZWB WXYZ 3; - XZWC ABCD 4; - XZWC EFGH 3; - Goto Ready2; User1: - XZW2 A 0 + XZW2 A -1 { if ( invoker.zoomed ) { - invoker.dezoomstate = invoker.fcbloaded?ResolveState("DoUser12"):ResolveState("DoUser1"); - return ResolveState("UnZoom"); + invoker.dezoomstate = ResolveState('DoUser1'); + return ResolveState('UnZoom'); } - return invoker.fcbloaded?ResolveState("DoUser12"):ResolveState("DoUser1"); + return ResolveState('DoUser1'); } + Stop; DoUser1: XZW2 A 2 { @@ -1493,57 +1040,41 @@ Class SilverBullet : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW6 IJK 3; - XZW6 L 1 A_Parry(9); - XZW6 MN 1; - XZW6 O 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.); - XZW6 PQ 1; - XZW6 RST 2; - XZW6 U 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 VWXYZ 3; - XZW7 ABC 2; - Goto Ready; - DoUser12: - XZW8 A 2 + XZW5 XYZ 3 A_BumpAngle(-1,3); + XZW6 A 1 { - A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); - A_PlayerMelee(); + A_BumpFOV(.94); + A_QuakeEx(1.6,1.6,1.6,8,0,15,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,rollIntensity:.65); + A_Parry(9); } - XZWC IJK 3; - XZWC L 1 A_Parry(9); - XZWC MN 1; - XZWC O 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.); - XZWC PQ 1; - XZWC RST 2; - XZWC U 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZWC VWXYZ 3; - XZWD ABC 2; - Goto Ready2; + XZW6 BC 1 A_BumpAngle(6); + XZW6 D 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.,MELEE_Wider); + XZW6 EF 1 A_BumpAngle(4); + XZW6 GHI 2 A_BumpAngle(1,2); + XZW6 J 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 KLMNO 3; + XZW6 PQR 2; + Goto Ready; Deselect: - XZW2 A 0 + XZW2 A -1 { if ( invoker.zoomed ) { - invoker.dezoomstate = invoker.fcbloaded?ResolveState("DoDeselect2"):ResolveState("DoDeselect"); - return ResolveState("UnZoom"); + invoker.dezoomstate = ResolveState('DoDeselect'); + return ResolveState('UnZoom'); } - return invoker.fcbloaded?ResolveState("DoDeselect2"):ResolveState("DoDeselect"); + return ResolveState('DoDeselect'); } + Stop; DoDeselect: XZW2 A 2 A_StartSound("silverbullet/deselect",CHAN_WEAPON,CHANF_OVERLAP); XZW2 BCDEF 2; XZW2 G -1 A_FullLower(); Stop; - DoDeselect2: - XZW8 A 2 A_StartSound("silverbullet/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 BCDEF 2; - XZW8 G -1 A_FullLower(); - Stop; Flash: XZWZ A 2 Bright { - let l = Spawn("SWWMWeaponLight",pos); + let l = Spawn('SWWMWeaponLight',pos); l.args[3] = 200; l.target = self; } diff --git a/zscript/weapons/swwm_thiccboolet_fx.zsc b/zscript/weapons/swwm_thiccboolet_fx.zsc index bf19adc43..2b46ce122 100644 --- a/zscript/weapons/swwm_thiccboolet_fx.zsc +++ b/zscript/weapons/swwm_thiccboolet_fx.zsc @@ -7,7 +7,6 @@ Class SilverBulletCasing : SWWMCasing BounceSound "silverbullet/casing"; } } -Class SilverBulletCasing2 : SilverBulletCasing {} Class SilverBulletMag : SWWMCasing { @@ -28,6 +27,7 @@ Class SilverBulletMag : SWWMCasing Death: XZW1 BC -1 { + bINTERPOLATEANGLES = false; pitch = roll = 0; angle = FRandom[Junk](0,360); frame = RandomPick[Junk](1,2); @@ -35,88 +35,58 @@ Class SilverBulletMag : SWWMCasing Stop; } } -Class SilverBulletMag2 : SilverBulletMag {} -Class SilverAirRip : Actor +Class SilverAirRip : SWWMNonInteractiveActor { Default { Obituary "$O_SILVERBULLET"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; + DamageType 'Sniped'; +FORCERADIUSDMG; +NODAMAGETHRUST; - +NOINTERACTION; + +FOILINVUL; + } + virtual void Explode( bool thruwall = false ) + { + let [nhit, nkill] = SWWMUtility.DoExplosion(self,40,2000,40,flags:DE_COUNTENEMIES|DE_NONEXPLOSIVE,ignoreme:target); + if ( SilverBullet(master) ) + { + Silverbullet(master).nkills += nkill; + SWWMUtility.AchievementProgress("conga",Silverbullet(master).nkills,target.player); + if ( thruwall ) SWWMUtility.AchievementProgressInc("thruwall",nkill,target.player); + } + } + States + { + Spawn: + TNT1 A 5; + Stop; + } +} + +Class SilverImpact : SWWMNonInteractiveActor +{ + Default + { + Obituary "$O_SILVERBULLET"; + SelfObituary "$SO_SILVERBULLET"; + DamageType 'Sniped'; + +FORCERADIUSDMG; + +NODAMAGETHRUST; + +FOILINVUL; } override void PostBeginPlay() { Super.PostBeginPlay(); - int nhit, nkill; - [nhit, nkill] = SWWMUtility.DoExplosion(self,40,2000,40,flags:DE_COUNTENEMIES,ignoreme:target); + let [nhit, nkill] = SWWMUtility.DoExplosion(self,100,8000,100,20,DE_COUNTENEMIES|DE_NONEXPLOSIVE); if ( SilverBullet(master) ) { Silverbullet(master).nkills += nkill; SWWMUtility.AchievementProgress("conga",Silverbullet(master).nkills,target.player); if ( bAMBUSH ) SWWMUtility.AchievementProgressInc("thruwall",nkill,target.player); } - Destroy(); - } -} -Class SilverAirRip2 : Actor -{ - Default - { - Obituary "$O_SILVERBULLET2"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +FORCERADIUSDMG; - +NODAMAGETHRUST; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SWWMUtility.DoExplosion(self,20,2000,30,ignoreme:target); - Destroy(); - } -} - -Class SilverImpact : Actor -{ - Default - { - Obituary "$O_SILVERBULLET"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +FORCERADIUSDMG; - +NODAMAGETHRUST; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - int nhit, nkill; - [nhit, nkill] = SWWMUtility.DoExplosion(self,100,8000,100,20,DE_COUNTENEMIES); - if ( SilverBullet(master) ) - { - Silverbullet(master).nkills += nkill; - SWWMUtility.AchievementProgress("conga",Silverbullet(master).nkills,target.player); - if ( bAMBUSH ) SWWMUtility.AchievementProgressInc("thruwall",nkill,target.player); - } - A_AlertMonsters(swwm_uncapalert?0:2500); - A_QuakeEx(4,4,4,20,0,400,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.9); + A_AlertMonsters(swwm_uncapalert?0:2500,AMF_EMITFROMTARGET); + A_QuakeEx(4.,4.,4.,20,0,400,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:100,rollIntensity:.9); if ( special1 ) { Destroy(); @@ -126,11 +96,11 @@ Class SilverImpact : Actor A_SprayDecal("BigPock",-64); A_SprayDecal("HugeWallCrack",-64); int numpt = Random[Silverbullet](15,25); - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } States { Spawn: @@ -171,246 +130,3 @@ Class SilverImpact : Actor Stop; } } - -Class ExploLight3 : PaletteLight -{ - Default - { - ReactionTime 30; - Args 0,0,0,250; - } -} - -Class FatChodeRing : Actor -{ - Default - { - RenderStyle "Add"; - Scale 3.; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XRG0 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.06); - Stop; - } -} - -Class FatChodeImpact : Actor -{ - double realangle, realpitch; - - Default - { - Obituary "$O_SILVERBULLET2"; - DamageType 'Explodium'; - RenderStyle "Add"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOBLOCKMAP; - +FORCEXYBILLBOARD; - +FORCERADIUSDMG; - +NODAMAGETHRUST; - +NOTELEPORT; - +NOINTERACTION; - Scale 4.5; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SWWMUtility.DoExplosion(self,600,40000,250,120,DE_THRUWALLS|DE_EXTRAZTHRUST); - A_AlertMonsters(swwm_uncapalert?0:8000); - A_QuakeEx(7,7,7,50,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:800,rollIntensity:1.); - A_StartSound("silverbullet/chode",CHAN_VOICE,CHANF_DEFAULT,1.,.35); - A_SprayDecal("BigPock",-64); - A_SprayDecal("HugeWallCrack",-64); - A_SprayDecal("WumboRocketBlast",-64); - Scale *= FRandom[ExploS](0.8,1.1); - Scale.x *= RandomPick[ExploS](-1,1); - Scale.y *= RandomPick[ExploS](-1,1); - int numpt = Random[Silverbullet](15,25); - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); - for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ 1 Bright; - Stop; - } -} - -Class FatChodeExtraArm : ExplodiumMagArm -{ - Default - { - Obituary "$O_SILVERBULLET2"; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - vel *= 1.5; - } -} - -Class FatChodeExplosionTrail : Actor -{ - Default - { - RenderStyle "Add"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOBLOCKMAP; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - Scale 3.; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XEX1 ACEGIKMOQSUWY[ 1 Bright; - Stop; - } -} - -Class FatChodeExplosionArm : Actor -{ - Default - { - Obituary "$O_SILVERBULLET2"; - DamageType 'Explodium'; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOBLOCKMAP; - +FORCERADIUSDMG; - +NODAMAGETHRUST; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - reactiontime = Random[ExploS](15,20); - vel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch))*FRandom[ExploS](20.,30.); - } - States - { - Spawn: - TNT1 A 1 - { - if ( !(ReactionTime%2) ) - SWWMUtility.DoExplosion(self,10+reactiontime,8000+1500*reactiontime,80+5*reactiontime,50,DE_THRUWALLS); - if ( level.IsPointInLevel(pos) ) - { - A_SprayDecal("HugeRocketBlast",-32); - Spawn("FatChodeExplosionTrail",pos); - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - let s = Spawn("SWWMHalfSmoke",pos); - s.vel = pvel+vel*.2; - s.SetShade(Color(1,1,1)*Random[ExploS](64,224)); - s.special1 = Random[ExploS](1,4); - s.scale *= 2.4; - s.alpha *= .1+.4*(ReactionTime/15.); - } - A_CountDown(); - } - Wait; - } -} diff --git a/zscript/weapons/swwm_weapons_canvas.zsc b/zscript/weapons/swwm_weapons_canvas.zsc new file mode 100644 index 000000000..2e3030aa8 --- /dev/null +++ b/zscript/weapons/swwm_weapons_canvas.zsc @@ -0,0 +1,10 @@ +// RenderTexture code for all weapons + +// Ynykron Artifact +extend Class Ynykron +{ + // TODO for 1.4: re-add the glowing red indicators from SWWM Platinum + override void RenderTexture( RenderEvent e ) + { + } +} diff --git a/zscript/weapons/swwm_weapons_hud.zsc b/zscript/weapons/swwm_weapons_hud.zsc new file mode 100644 index 000000000..9d5224ca0 --- /dev/null +++ b/zscript/weapons/swwm_weapons_hud.zsc @@ -0,0 +1,240 @@ +// DrawWeapon code for all weapons + +// Deep Impact +extend Class DeepImpact +{ + ui TextureID WeaponBox, AmmoBar; + ui Font AmmoFont; + + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/DeepImpactDisplay.png"); + if ( !AmmoBar ) AmmoBar = TexMan.CheckForTexture("graphics/HUD/DeepImpactBar.png"); + if ( !AmmoFont ) AmmoFont = Font.GetFont('MiniHudShadow'); + Screen.DrawTexture(WeaponBox,false,bx-24,by-25,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + double chg = clamp(ChargeInter?ChargeInter.GetValue(TicFrac):clipcount,0.,100.); + bool blinking = (failtime>gametic)&&((failtime-gametic)%8>=4); + Screen.DrawText(AmmoFont,Font.FindFontColor('MiniIce'),bx-22,by-8,String.Format("%3d",clamp(int(chg),0,100)),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0)); + double ch = chg*20./100.; + Screen.DrawTexture(AmmoBar,false,bx-5,by-(2+ch),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcY,20.-ch,DTA_SrcHeight,ch,DTA_DestHeightF,ch,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(AmmoBar,false,bx-6,by-(3+ch),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_SrcY,20.-ch,DTA_SrcHeight,ch,DTA_DestHeightF,ch,DTA_ColorOverlay,blinking?Color(128,0,0,0):Color(0,0,0,0)); + } +} + +// Explodium Gun +extend Class ExplodiumGun +{ + ui TextureID WeaponBox, RoundTex; + + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/ExplodiumDisplay.png"); + if ( !RoundTex ) RoundTex = TexMan.CheckForTexture("graphics/HUD/ExplodiumRound.png"); + Screen.DrawTexture(WeaponBox,false,bx-10,by-21,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( chambered ) Screen.DrawTexture(RoundTex,false,bx-8,by-19,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + for ( int i=0; i=(magpos-preload)))?magstate[i]?Color(128,0,0,0):Color(0,0,0,0):magstate[i]?Color(160,0,0,0):Color(96,0,0,0),DTA_Desaturate,magstate[i]?192:0); + yy -= 4; + } + } +} + +// Biospark Carbine +extend Class Sparkster +{ + ui TextureID WeaponBox, RoundTex[2]; + + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/BiosparkDisplay.png"); + if ( !RoundTex[0] ) RoundTex[0] = TexMan.CheckForTexture("graphics/HUD/BiosparkShot.png"); + if ( !RoundTex[1] ) RoundTex[1] = TexMan.CheckForTexture("graphics/HUD/BiosparkRed.png"); + bool blinking = (failtime>gametic)&&((failtime-gametic)%16>=8); + if ( doublestacc ) + { + Screen.DrawTexture(WeaponBox,false,bx-8,by-34,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawTexture(WeaponBox,false,bx-8,by-17,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( nomag ) return; + bool bRed; + int yy = 32; + for ( int i=0; i<8; i++ ) + { + if ( clipcount <= i ) Screen.DrawTexture(RoundTex[0],false,bx-6,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Desaturate,255,DTA_ColorOverlay,Color(160,0,0,0)); + else + { + bRed = ((i>=4)&&(clipcount<6)||(i<4)&&(clipcount<2)); + Screen.DrawTexture(RoundTex[bRed],false,bx-6,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(blinking?96:0,0,0,0)); + } + yy -= 3; + if ( i == 3 ) yy -= 5; + } + } + else + { + Screen.DrawTexture(WeaponBox,false,bx-8,by-17,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( nomag ) return; + bool bRed; + int yy = 15; + for ( int i=0; i<4; i++ ) + { + if ( clipcount <= i ) Screen.DrawTexture(RoundTex[0],false,bx-6,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Desaturate,255,DTA_ColorOverlay,Color(160,0,0,0)); + else + { + bRed = (clipcount<2); + Screen.DrawTexture(RoundTex[bRed],false,bx-6,by-yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(blinking?96:0,0,0,0)); + } + yy -= 3; + } + } + } +} + +// Silver Bullet JET +extend Class SilverBullet +{ + ui TextureID WeaponBox[2], ZoomBar, RoundTex[2]; + + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + if ( !WeaponBox[0] ) WeaponBox[0] = TexMan.CheckForTexture("graphics/HUD/SilverBulletDisplay.png"); + if ( !WeaponBox[1] ) WeaponBox[1] = TexMan.CheckForTexture("graphics/HUD/SilverBulletZoomDisplay.png"); + if ( !ZoomBar ) ZoomBar = TexMan.CheckForTexture("graphics/HUD/SilverBulletZoomBar.png"); + if ( !RoundTex[0] ) RoundTex[0] = TexMan.CheckForTexture("graphics/HUD/SilverBulletRound.png"); + if ( !RoundTex[1] ) RoundTex[1] = TexMan.CheckForTexture("graphics/HUD/SilverBulletCasing.png"); + double zl = clamp(ZoomInter?ZoomInter.GetValue(TicFrac):(zoomlevel*10),0.,160.); + if ( zl >= 10. ) + { + Screen.DrawTexture(WeaponBox[1],false,bx-20,by-39,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + double zw = zl*15./160.; + Screen.DrawTexture(ZoomBar,false,bx-17,by-36,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,zw,DTA_ColorOverlay,Color(255,0,0,0)); + Screen.DrawTexture(ZoomBar,false,bx-18,by-37,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,zw); + } + Screen.DrawTexture(WeaponBox[0],false,bx-20,by-29,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( chambered ) Screen.DrawTexture(RoundTex[fired],false,bx-18,by-27,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + for ( int i=0; i